OoohBoi Steroids for Elementor - Version 1.8.1

Version Description

  • New: ANIME.js added to optional/includable libraries
  • New: ICOBOX - prevent icon/title collapse on mobile devices
  • New: IMBOX - prevent thumbnail/title collapse on mobile devices
  • Fix: PERSPEKTIVE extension now works as expected
Download this release

Release Info

Developer ooohboi
Plugin Icon 128x128 OoohBoi Steroids for Elementor
Version 1.8.1
Comparing to
See all releases

Code changes from version 1.9.0 to 1.8.1

Files changed (51) hide show
  1. assets/css/admin.css +9 -8
  2. assets/css/editor-dark.css +0 -167
  3. assets/css/editor.css +4 -45
  4. assets/css/main.css +2 -27
  5. assets/js/butterbutton-min.js +0 -1
  6. assets/js/commentz-min.js +0 -1
  7. assets/js/glider-min.js +0 -1
  8. assets/js/harakiri-min.js +0 -1
  9. assets/js/hoveranimator-min.js +0 -1
  10. assets/js/ob-steroids-editor-min.js +0 -1
  11. assets/js/ooohboi-libs-locomotion.js +1 -1
  12. assets/js/ooohboi-steroids-min.js +1 -1
  13. assets/js/ooohboi-steroids.js +1037 -0
  14. assets/js/perspektive-min.js +0 -1
  15. assets/js/photomorph-min.js +0 -1
  16. assets/js/poopart-min.js +0 -1
  17. assets/js/pseudo-min.js +0 -1
  18. assets/js/searchcop-min.js +0 -1
  19. assets/js/spacerat-min.js +0 -1
  20. assets/js/widgetstalker-min.js +0 -1
  21. controls/ooohboi-bullet.php +0 -91
  22. controls/ooohboi-butter-button.php +15 -67
  23. controls/ooohboi-commentz.php +2 -77
  24. controls/ooohboi-glider.php +14 -113
  25. controls/ooohboi-harakiri.php +36 -66
  26. controls/ooohboi-hover-animator.php +113 -214
  27. controls/ooohboi-overlaiz.php +18 -28
  28. controls/ooohboi-overlay-underlay.php +17 -157
  29. controls/ooohboi-perspektive.php +0 -31
  30. controls/ooohboi-photomorph.php +0 -31
  31. controls/ooohboi-pseudo.php +60 -153
  32. controls/ooohboi-searchcop.php +0 -46
  33. controls/ooohboi-spacerat.php +5 -48
  34. controls/ooohboi-videomasq.php +0 -1
  35. controls/ooohboi-widget-stalker.php +2 -32
  36. inc/common-functions.php +4 -22
  37. inc/exopite-simple-options/exopite-simple-options-framework-class.php +1 -1
  38. inc/img/harakiri-cutt-off-bottom.png +0 -0
  39. inc/img/icon-list-bullet.png +0 -0
  40. inc/img/sfe-new-interface.png +0 -0
  41. inc/info/ob-landing.php +16 -24
  42. lang/ooohboi-steroids.pot +593 -651
  43. lib/gsap/gsap.min.js +11 -0
  44. lib/gsap/gsap.min.js.map +1 -0
  45. lib/motion_path/MotionPathPlugin.min.js +11 -0
  46. lib/motion_path/MotionPathPlugin.min.js.map +1 -0
  47. lib/scroll_to/ScrollToPlugin.min.js +11 -0
  48. lib/scrolltrigger/ScrollTrigger.min.js +11 -0
  49. lib/scrolltrigger/ScrollTrigger.min.js.map +1 -0
  50. ooohboi-steroids.php +62 -100
  51. readme.txt +5 -27
assets/css/admin.css CHANGED
@@ -125,15 +125,16 @@ a.toplevel_page_steroids_for_elementor.wp-not-current-submenu .wp-menu-image img
125
  .exopite-sof-wrapper.steroids_for_elementor-options .checkbox__checkmark::after {
126
  border-color: #ED2B5C;
127
  }
128
- .exopite-sof-wrapper.steroids_for_elementor-options .ob-alert {
129
- background-color: #ffaca3;
130
- padding: 5%;
131
- margin-top: 5%;
132
- font-size: 13px;
133
- line-height: 1.4;
134
- font-style: italic;
135
- border-radius: 4px;
136
  }
 
 
 
 
 
 
137
  /* ------------ EXOPITE */
138
 
139
  .exopite-sof-wrapper.steroids_for_elementor-options > form {
125
  .exopite-sof-wrapper.steroids_for_elementor-options .checkbox__checkmark::after {
126
  border-color: #ED2B5C;
127
  }
128
+
129
+ .exopite-sof-wrapper.steroids_for_elementor-options .card.sfe-card-warning .card-body {
130
+ background-color: #ff60001f;
 
 
 
 
 
131
  }
132
+ .exopite-sof-wrapper.steroids_for_elementor-options .card.sfe-card-warning .card-body span {
133
+ font-size: 16px;
134
+ display: block;
135
+ margin-bottom: 12px;
136
+ }
137
+
138
  /* ------------ EXOPITE */
139
 
140
  .exopite-sof-wrapper.steroids_for_elementor-options > form {
assets/css/editor-dark.css DELETED
@@ -1,167 +0,0 @@
1
- /* Elementor editor styles - dark */
2
-
3
- .elementor-control-_ob_steroids_background_overlay .elementor-panel-heading-title:after,
4
- .elementor-control-_ob_overlaiz_plugin_title:after,
5
- .elementor-control-_ob_harakiri_plugin_title:after,
6
- .elementor-control-_ob_paginini_plugin_title:after,
7
- .elementor-control-_ob_photogiraffe_plugin_title:after,
8
- .elementor-control-_ob_bbad_section_title:after,
9
- .elementor-control-_ob_bbad_column_title:after,
10
- .elementor-control-_ob_teleporter_plugin_title:after,
11
- .elementor-control-_ob_cartshut_plugin_title:after,
12
- .elementor-control-_ob_searchcop_plugin_title:after,
13
- .elementor-control-_ob_videomasq_plugin_title:after,
14
- .elementor-control-_ob_butterbutton:after,
15
- .elementor-control-_ob_perspektive:after,
16
- .elementor-control-_ob_shadough:after,
17
- .elementor-control-_ob_photomorph:after,
18
- .elementor-control-_ob_commentz:after,
19
- .elementor-control-_ob_spacerat:after,
20
- .elementor-control-_ob_imbox_img:after,
21
- .elementor-control-_ob_imbox_cont:after,
22
- .elementor-control-_ob_icobox_img:after,
23
- .elementor-control-_ob_icobox_cont:after,
24
- .elementor-control-_ob_hoveranimator_section_title:after,
25
- .elementor-control-_ob_hoveranimator_panel:after,
26
- .elementor-control-_ob_kontrolz:after,
27
- .elementor-control-_ob_widget_stalker:after,
28
- .elementor-control-_ob_pseudo_section_title:after,
29
- .elementor-control-_ob_loco_title_section:after,
30
- .elementor-control-_ob_bullet:after {
31
- content: "";
32
- position: absolute;
33
- height: 20px;
34
- width: 20px;
35
- top: 10px;
36
- right: 20px;
37
- background-image: url("../img/ooohboi-poopart-icon.png");
38
- background-position: center center;
39
- background-size: cover;
40
- z-index: 1;
41
- }
42
- .elementor-control-_ob_hoveranimator_section_title .elementor-control-content:before,
43
- .elementor-control-_ob_hoveranimator_panel:before {
44
- content: "";
45
- position: absolute;
46
- height: 6px;
47
- width: 6px;
48
- top: 0px;
49
- left: 0px;
50
- background-color: #ff743d;
51
- z-index: 1;
52
- }
53
- .elementor-control-_ob_widget_stalker:before,
54
- .elementor-control-_ob_bbad_section_title_0:before {
55
- content: "";
56
- position: absolute;
57
- height: 6px;
58
- width: 6px;
59
- top: 0px;
60
- left: 0px;
61
- background-color: #4ffd00;
62
- z-index: 1;
63
- }
64
- .rtl .elementor-control-_ob_steroids_background_overlay .elementor-panel-heading-title:after,
65
- .rtl .elementor-control-_ob_overlaiz_plugin_title:after,
66
- .rtl .elementor-control-_ob_harakiri_plugin_title:after,
67
- .rtl .elementor-control-_ob_paginini_plugin_title:after,
68
- .rtl .elementor-control-_ob_photogiraffe_plugin_title:after,
69
- .rtl .elementor-control-_ob_bbad_section_title:after,
70
- .rtl .elementor-control-_ob_bbad_column_title:after,
71
- .rtl .elementor-control-_ob_teleporter_plugin_title:after,
72
- .rtl .elementor-control-_ob_cartshut_plugin_title:after,
73
- .rtl .elementor-control-_ob_searchcop_plugin_title:after,
74
- .rtl .elementor-control-_ob_videomasq_plugin_title:after,
75
- .rtl .elementor-control-_ob_butterbutton:after,
76
- .rtl .elementor-control-_ob_perspektive:after,
77
- .rtl .elementor-control-_ob_shadough:after,
78
- .rtl .elementor-control-_ob_photomorph:after,
79
- .rtl .elementor-control-_ob_commentz:after,
80
- .rtl .elementor-control-_ob_spacerat:after,
81
- .rtl .elementor-control-_ob_imbox_img:after,
82
- .rtl .elementor-control-_ob_imbox_cont:after,
83
- .rtl .elementor-control-_ob_icobox_img:after,
84
- .rtl .elementor-control-_ob_icobox_cont:after,
85
- .rtl .elementor-control-_ob_hoveranimator_section_title:after,
86
- .rtl .elementor-control-_ob_hoveranimator_panel:after,
87
- .rtl .elementor-control-_ob_kontrolz:after,
88
- .rtl .elementor-control-_ob_widget_stalker:after,
89
- .rtl .elementor-control-_ob_pseudo_section_title:after,
90
- .rtl .elementor-control-_ob_loco_title_section:after,
91
- .rtl .elementor-control-_ob_bullet:after {
92
- left: 20px;
93
- right: unset;
94
- }
95
- .rtl .elementor-control-_ob_hoveranimator_section_title .elementor-control-content:before,
96
- .rtl .elementor-control-_ob_hoveranimator_panel:before {
97
- right: calc(100% - 6px);
98
- left: unset;
99
- }
100
- .rtl .elementor-control-_ob_widget_stalker:before,
101
- .rtl .elementor-control-_ob_bbad_section_title_0:before {
102
- right: calc(100% - 6px);
103
- left: unset;
104
- }
105
- .ob-is-breaking-bad.elementor-top-section > .elementor-container > .elementor-row,
106
- .ob-is-breaking-bad.elementor-inner-section > .elementor-container > .elementor-row {
107
- flex-wrap: wrap;
108
- }
109
-
110
- /* NEW mrk */
111
- sup.ob-new-feature {
112
- color: #FF00BE;
113
- margin-left: 4px;
114
- letter-spacing: 1px;
115
- }
116
-
117
- /* widget stalker */
118
- .elementor-control-type-raw_html .elementor-control-title {
119
- font-size: 12px;
120
- font-weight: 600;
121
- letter-spacing: 2px;
122
- }
123
-
124
- /* pseudo */
125
- .elementor-column.ob-is-pseudo .elementor-element-populated:before,
126
- .elementor-column.ob-is-pseudo .elementor-element-populated:after {
127
- content: '';
128
- position: absolute;
129
- pointer-events: none;
130
- }
131
-
132
- /* the Interface 1.9.0 */
133
- [class*="elementor-control-_ob_"].elementor-control-type-raw_html .elementor-control-content {
134
- padding: 12px;
135
- background: linear-gradient(90deg, rgba(0,0,0,0.2), rgba(0,0,0,0));
136
- border-radius: 4px;
137
- }
138
- [class*="elementor-control-_ob_"].elementor-control-type-raw_html .elementor-control-title {
139
- color: #e18f5e;
140
- font-size: 12px;
141
- font-weight: 500;
142
- letter-spacing: 1px;
143
- text-transform: uppercase;
144
- }
145
- [class*="elementor-control-_ob_"].elementor-control-type-raw_html .elementor-control-field-description {
146
- font-style: normal;
147
- font-size: 12px;
148
- margin-top: 0;
149
- }
150
- [class*="elementor-control-_ob_"].elementor-control-type-raw_html .elementor-control-title + .elementor-control-field-description {
151
- margin-top: 10px;
152
- }
153
-
154
- [class*="elementor-control-_ob_"].elementor-control label.elementor-control-title {
155
- background: linear-gradient(90deg, #005771, #9198e500);
156
- padding: 4px 6px;
157
- border-radius: 4px;
158
- font-weight: 400;
159
- line-height: 1.1;
160
- }
161
-
162
- /*
163
- .elementor-control-_ob_.elementor-control label.elementor-control-title,
164
- .elementor-control-_ob_scrolltrigger.elementor-control label.elementor-control-title {
165
- background: linear-gradient(90deg, #67800f, #67800f00);
166
- }
167
- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/css/editor.css CHANGED
@@ -26,8 +26,7 @@
26
  .elementor-control-_ob_kontrolz:after,
27
  .elementor-control-_ob_widget_stalker:after,
28
  .elementor-control-_ob_pseudo_section_title:after,
29
- .elementor-control-_ob_loco_title_section:after,
30
- .elementor-control-_ob_bullet:after {
31
  content: "";
32
  position: absolute;
33
  height: 20px;
@@ -87,8 +86,7 @@
87
  .rtl .elementor-control-_ob_kontrolz:after,
88
  .rtl .elementor-control-_ob_widget_stalker:after,
89
  .rtl .elementor-control-_ob_pseudo_section_title:after,
90
- .rtl .elementor-control-_ob_loco_title_section:after,
91
- .rtl .elementor-control-_ob_bullet:after {
92
  left: 20px;
93
  right: unset;
94
  }
@@ -123,47 +121,8 @@ sup.ob-new-feature {
123
 
124
  /* pseudo */
125
  .elementor-column.ob-is-pseudo .elementor-element-populated:before,
126
- .elementor-column.ob-is-pseudo .elementor-element-populated:after {
127
  content: '';
128
  position: absolute;
129
  pointer-events: none;
130
- }
131
-
132
- /* the Interface 1.9.0 */
133
- [class*="elementor-control-_ob_"].elementor-control-type-raw_html .elementor-control-content {
134
- padding: 12px;
135
- background-color: rgba(0,0,0,0.05);
136
- border-radius: 4px;
137
- }
138
- [class*="elementor-control-_ob_"].elementor-control-type-raw_html .elementor-control-title {
139
- color: #005771;
140
- font-size: 12px;
141
- font-weight: 500;
142
- letter-spacing: 1px;
143
- text-transform: uppercase;
144
- }
145
- [class*="elementor-control-_ob_"].elementor-control-type-raw_html .elementor-control-field-description {
146
- font-style: normal;
147
- font-size: 12px;
148
- margin-top: 0;
149
- }
150
- [class*="elementor-control-_ob_"].elementor-control-type-raw_html .elementor-control-title + .elementor-control-field-description {
151
- margin-top: 10px;
152
- }
153
-
154
- [class*="elementor-control-_ob_"].elementor-control label.elementor-control-title {
155
- background-color: #005771;
156
- color: #FFF;
157
- padding: 4px 6px;
158
- border-radius: 4px;
159
- font-weight: 400;
160
- line-height: 1.1;
161
- }
162
-
163
- /*
164
- .elementor-control-_ob_.elementor-control label.elementor-control-title,
165
- .elementor-control-_ob_scrolltrigger.elementor-control label.elementor-control-title {
166
- background-color: #67800f;
167
- color: #FFF;
168
- }
169
- */
26
  .elementor-control-_ob_kontrolz:after,
27
  .elementor-control-_ob_widget_stalker:after,
28
  .elementor-control-_ob_pseudo_section_title:after,
29
+ .elementor-control-_ob_loco_title_section:after {
 
30
  content: "";
31
  position: absolute;
32
  height: 20px;
86
  .rtl .elementor-control-_ob_kontrolz:after,
87
  .rtl .elementor-control-_ob_widget_stalker:after,
88
  .rtl .elementor-control-_ob_pseudo_section_title:after,
89
+ .rtl .elementor-control-_ob_loco_title_section:after {
 
90
  left: 20px;
91
  right: unset;
92
  }
121
 
122
  /* pseudo */
123
  .elementor-column.ob-is-pseudo .elementor-element-populated:before,
124
+ .elementor-column.ob-is-pseudo .elementor-element-populated:after {
125
  content: '';
126
  position: absolute;
127
  pointer-events: none;
128
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/css/main.css CHANGED
@@ -61,9 +61,7 @@
61
  .ob-is-glider .swiper-button-next {
62
  background-image: none;
63
  }
64
- *[class*="-gotoslide-"] {
65
- cursor: pointer;
66
- }
67
  .ob-is-glider {
68
  visibility: hidden;
69
  }
@@ -254,9 +252,8 @@ div[class*='ob-teleporter-'] {
254
  }
255
 
256
  /* Hovernimator */
257
- .ob-is-hoveranimator .ob-is-hoveranimal > .elementor-widget-container {
258
  transition-property: opacity, top, left, transform, filter;
259
- position: relative;
260
  }
261
 
262
  /* Sticky Inner Section - Stay in Column */
@@ -305,28 +302,6 @@ html.elementor-html::before {
305
  position: absolute;
306
  pointer-events: none;
307
  }
308
- [data-element_type="container"].ob-is-pseudo .ob-pseudo-before,
309
- [data-element_type="container"].ob-is-pseudo .ob-pseudo-after {
310
- position: absolute;
311
- top: 0;
312
- left: 0;
313
- width: 100%;
314
- height: 100%;
315
- pointer-events: none;
316
- z-index: -1;
317
- }
318
-
319
- /* ----------------- 1.8.2 IMAGES -------------------------- */
320
- .elementor-widget-image,
321
- .elementor-widget-image > div,
322
- .elementor-widget-image img {
323
- line-height: 0;
324
- }
325
- /* ----------------- 1.8.2 SOCIAL ICONS -------------------------- */
326
- [data-widget_type="social-icons.default"] {
327
- line-height: 0;
328
- }
329
-
330
  /* loco scrollbar */
331
 
332
  /* animations related to locomotive scroll */
61
  .ob-is-glider .swiper-button-next {
62
  background-image: none;
63
  }
64
+
 
 
65
  .ob-is-glider {
66
  visibility: hidden;
67
  }
252
  }
253
 
254
  /* Hovernimator */
255
+ .ob-is-hoveranimator .ob-is-hoveranimal {
256
  transition-property: opacity, top, left, transform, filter;
 
257
  }
258
 
259
  /* Sticky Inner Section - Stay in Column */
302
  position: absolute;
303
  pointer-events: none;
304
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
305
  /* loco scrollbar */
306
 
307
  /* animations related to locomotive scroll */
assets/js/butterbutton-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";jQuery(window).on("elementor/frontend/init",(function(){var t,e=elementorModules.frontend.handlers.Base;t=e.extend({onInit:function(){e.prototype.onInit.apply(this,arguments),this.isButterButton()&&this.$element.addClass("ob-is-butterbutton")},isButterButton:function(){return"yes"===this.getElementSettings("_ob_butterbutton_use_it")},onElementChange:function(t){"_ob_butterbutton_use_it"===t&&("yes"===this.getElementSettings("_ob_butterbutton_use_it")?this.$element.addClass("ob-is-butterbutton"):this.$element.removeClass("ob-is-butterbutton"))}}),elementorFrontend.hooks.addAction("frontend/element_ready/button.default",(function(e){elementorFrontend.elementsHandler.addHandler(t,{$element:e})}))}));
 
assets/js/commentz-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";jQuery(window).on("elementor/frontend/init",(function(){var e,n=elementorModules.frontend.handlers.Base;e=n.extend({onInit:function(){n.prototype.onInit.apply(this,arguments),this.isCommentz()&&this.$element.addClass("ob-commentz")},isCommentz:function(){return"yes"===this.getElementSettings("_ob_commentz_use")},onElementChange:function(e){"_ob_commentz_use"===e&&("yes"===this.getElementSettings("_ob_commentz_use")?this.$element.addClass("ob-commentz"):this.$element.removeClass("ob-commentz"))}}),elementorFrontend.hooks.addAction("frontend/element_ready/post-comments.theme_comments",(function(n){elementorFrontend.elementsHandler.addHandler(e,{$element:n})}))}));
 
assets/js/glider-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";!function(e,t){e(t).on("elementor/frontend/init",(function(){var t,i=elementorModules.frontend.handlers.Base;t=i.extend({me_the_swiper:"undefined",glider_external_controls:[],onInit:function(){if(i.prototype.onInit.apply(this,arguments),this.isGlider()&&(this.$element.addClass("ob-is-glider"),this.cleanupContainer(),this.isEdit)){var t=this;elementor.channels.data.on("element:after:add",(function(i){e('[data-id="'+i.id+'"]').parent().hasClass("ob-is-glider")&&t.cleanupContainer()}))}},isGlider:function(){return"yes"===this.getElementSettings("_ob_glider_is_slider")},isGliderCandidate:function(){return!this.$element.closest(".swiper").length&&!this.$element.find(".swiper").length},onElementChange:function(e){"_ob_glider_is_slider"===e&&("yes"===this.getElementSettings("_ob_glider_is_slider")&&this.isGliderCandidate()?(this.$element.addClass("ob-is-glider"),this.cleanupContainer()):(this.restoreContainer(),this.$element.removeClass("ob-is-glider")))},cleanupContainer:function(){this.$element.children("*").each((function(){!e(this).is('[data-element_type="container"]')&&e(this).is("[data-element_type]")&&e(this).hide()})),this.$element.data("swiper")&&this.$element.data("swiper").destroy();var t=this.$element.attr("class").split(" ");e(t).each((function(e,i){t[e]=-1===i.indexOf("swiper")?i:""})),this.$element.attr("class",t.join(" ")),this.generateSwiperStructure()},restoreContainer:function(){this.$element.children("*").each((function(){e(this).is("[data-element_type]")&&e(this).is(":hidden")&&e(this).show()}))},generateSwiperStructure:function(){if(this.isGliderCandidate()){this.$element.addClass("swiper"),this.$element.children('[data-element_type="container"]').addClass("swiper-slide"),this.$element.children('[data-element_type="container"]').wrapAll('<div class="swiper-wrapper" />'),this.$element.append('<div class="swiper-button-next"><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMin" viewBox="0 0 27 44"><path d="M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z"></path></svg></div>'),this.$element.append('<div class="swiper-button-prev"><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMin" viewBox="0 0 27 44"><path d="M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z"></path></svg></div>'),this.$element.append('<div class="swiper-pagination"></div>');var e={};e.pagination_type=this.getElementSettings("_ob_glider_pagination_type"),e.allowTouchMove=this.getElementSettings("_ob_glider_allow_touch_move"),e.autoheight=this.getElementSettings("_ob_glider_auto_h"),e.effect=this.getElementSettings("_ob_glider_effect"),e.loop=this.getElementSettings("_ob_glider_loop"),e.direction=this.getElementSettings("_ob_glider_direction"),e.parallax=this.getElementSettings("_ob_glider_parallax"),e.speed=this.getElementSettings("_ob_glider_speed");var t=this.getElementSettings("_ob_glider_autoplay");e.autoplay=!!t&&{delay:this.getElementSettings("_ob_glider_autoplay_delay")},e.mousewheel=this.getElementSettings("_ob_glider_allow_mousewheel"),e.allowMultiSlides=this.getElementSettings("_ob_glider_allow_multi_slides");var i={},s=elementorFrontend.config.breakpoints;i[s.lg]={slidesPerView:this.getElementSettings("_ob_glider_slides_per_view"),slidesPerGroup:this.getElementSettings("_ob_glider_slides_to_scroll"),spaceBetween:+this.getElementSettings("_ob_glider_space_between")||0},i[s.md]={slidesPerView:this.getElementSettings("_ob_glider_slides_per_view_tablet"),slidesPerGroup:this.getElementSettings("_ob_glider_slides_to_scroll_tablet"),spaceBetween:+this.getElementSettings("_ob_glider_space_between_tablet")||0},i[0]={slidesPerView:this.getElementSettings("_ob_glider_slides_per_view_mobile"),slidesPerGroup:this.getElementSettings("_ob_glider_slides_to_scroll_mobile"),spaceBetween:+this.getElementSettings("_ob_glider_space_between_mobile")||0},e.breakpoints=i,e.slides_centered=this.getElementSettings("_ob_glider_centered_slides"),e.slides_centered_bounds=this.getElementSettings("_ob_glider_centered_bounds_slides"),e.slides_round_lenghts=this.getElementSettings("_ob_glider_roundlengths_slides");var n={allowTouchMove:"yes"===e.allowTouchMove,autoHeight:"yes"===e.autoheight,effect:e.effect,loop:e.loop,direction:"fade"===e.effect?"horizontal":e.direction,parallax:"yes"===e.parallax,speed:e.speed,breakpoints:"yes"===e.allowMultiSlides&&e.breakpoints,centeredSlides:"yes"===e.slides_centered,centeredSlidesBounds:"yes"===e.slides_centered_bounds,roundLengths:"yes"===e.slides_round_lenghts,navigation:{nextEl:".swiper-button-next",prevEl:".swiper-button-prev"},pagination:{el:".swiper-pagination",type:e.pagination_type,clickable:!0},autoplay:e.autoplay,mousewheel:"yes"===e.mousewheel,watchOverflow:!0};if("undefined"==typeof Swiper){new(0,elementorFrontend.utils.swiper)(this.$element,n).then((e=>{this.me_the_swiper=e,this.runSyncStuff(this.me_the_swiper)}))}else this.me_the_swiper=new Swiper(this.$element,n),this.runSyncStuff(this.me_the_swiper);this.$element.css("visibility","visible")}},runSyncStuff:function(t){this.glider_external_controls=e("body").find('[class*="glider-'+this.$element[0].dataset.id+'-gotoslide-"]')||[],this.glider_external_controls.length&&(this.glider_external_controls.each((function(){this.target_swiper=t})),this.glider_external_controls.on("click",(function(t){var i=parseInt(e(this).attr("class").match(/-gotoslide-(\d+)/)[1]);i>0&&this.target_swiper.slideTo(i),t.preventDefault()})))}}),elementorFrontend.hooks.addAction("frontend/element_ready/container",(function(e){elementorFrontend.elementsHandler.addHandler(t,{$element:e})}))}))}(jQuery,window);
 
assets/js/harakiri-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";!function(e,n){e(n).on("elementor/frontend/init",(function(){var n,t=elementorModules.frontend.handlers.Base;n=t.extend({onInit:function(){t.prototype.onInit.apply(this,arguments),this.isHarakiri()&&this.$element.addClass("ob-harakiri")},isHarakiri:function(){return"inherit"!==this.getElementSettings("_ob_harakiri_writing_mode")},onElementChange:function(e){"_ob_harakiri_writing_mode"===e&&("inherit"!==this.getElementSettings("_ob_harakiri_writing_mode")?this.$element.addClass("ob-harakiri"):this.$element.removeClass("ob-harakiri"))}});var i={"heading.default":n,"text-editor.default":n};e.each(i,(function(e,n){elementorFrontend.hooks.addAction("frontend/element_ready/"+e,(function(e){elementorFrontend.elementsHandler.addHandler(n,{$element:e})}))}))}))}(jQuery,window);
 
assets/js/hoveranimator-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";!function(e,t){e(t).on("elementor/frontend/init",(function(){var t,o=elementorModules.frontend.handlers.Base;t=o.extend({onInit:function(){o.prototype.onInit.apply(this,arguments),this.isHoverAnimatorContainer()&&this.$element.addClass("ob-is-hoveranimator"),this.isHoverAnimatorWidget()&&(this.$element.addClass("ob-is-hoveranimal"),this.run())},isHoverAnimatorContainer:function(){return"yes"===this.getElementSettings("_ob_column_hoveranimator")},isHoverAnimatorWidget:function(){return"yes"===this.getElementSettings("_ob_allow_hoveranimator")},onElementChange:function(e){"_ob_column_hoveranimator"===e&&("yes"===this.getElementSettings("_ob_column_hoveranimator")?this.$element.addClass("ob-is-hoveranimator"):this.$element.removeClass("ob-is-hoveranimator")),"_ob_allow_hoveranimator"===e&&("yes"===this.getElementSettings("_ob_allow_hoveranimator")?(this.$element.addClass("ob-is-hoveranimal"),this.run()):this.$element.removeClass("ob-is-hoveranimal")),-1!==["_ob_hoveranimator_opacity_hover","_ob_hoveranimator_y_hover","_ob_hoveranimator_y_hover_alt","_ob_hoveranimator_x_hover","_ob_hoveranimator_x_hover_alt","_ob_hoveranimator_rot_hover","_ob_hoveranimator_scalex_hover","_ob_hoveranimator_scaley_hover","_ob_hoveranimator_blur_hover"].indexOf(e)&&function(){this.run()}},runHoverAnimator:function(){var t=this.$element.find(".elementor-widget-container"),o=t.parent().closest(".ob-is-hoveranimator");if(o.length){var n,r,i=o.data("id"),a=this.getElementSettings("_ob_hoveranimator_opacity_hover")||1,s=this.getElementSettings("_ob_hoveranimator_y_hover")||0,_=this.getElementSettings("_ob_hoveranimator_y_hover_alt")||"",h=this.getElementSettings("_ob_hoveranimator_x_hover")||0,m=this.getElementSettings("_ob_hoveranimator_x_hover_alt")||"",l=this.getElementSettings("_ob_hoveranimator_rot_hover")||0,v=this.getElementSettings("_ob_hoveranimator_scalex_hover")||1,c=this.getElementSettings("_ob_hoveranimator_scaley_hover")||1,d=this.getElementSettings("_ob_hoveranimator_blur_hover")||0;r=""!=e.trim(m)&&void 0!==m?"calc("+m+")":h.size+h.unit,n=""!=e.trim(_)&&void 0!==_?"calc("+_+")":s.size+s.unit;var u={opacity:a.size,top:n,left:r,transform:"rotate("+l.size+"deg) scaleX("+v.size+") scaleY("+c.size+")",filter:"blur("+d.size+d.unit+")"};o.on("mouseenter."+i,(function(){t.css(u)})),o.on("mouseleave."+i,(function(){t.removeAttr("style")}))}},run:function(){this.isHoverAnimatorWidget()&&this.runHoverAnimator()}});var n={container:t,column:t,widget:t};e.each(n,(function(e,t){elementorFrontend.hooks.addAction("frontend/element_ready/"+e,(function(e){elementorFrontend.elementsHandler.addHandler(t,{$element:e})}))}))}))}(jQuery,window);
 
assets/js/ob-steroids-editor-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";!function(e,o){e(o);elementor.on("panel:init",(function(){var o;(o=e("#ooohboi-steroids-styles-editor-dark-css")).length||(o=e("<link>",{id:"ooohboi-steroids-styles-editor-dark-css",rel:"stylesheet",href:SteroidsEditorLocalized.dark_stylesheet_url})),elementor.settings.editorPreferences.model.on("change:ui_theme",(function(t,r){if("light"===r)return o.remove(),void e("<link>",{id:"ooohboi-steroids-styles-editor-css",rel:"stylesheet",href:SteroidsEditorLocalized.light_stylesheet_url}).appendTo(elementorCommon.elements.$body);o.attr("media","auto"===r?"(prefers-color-scheme: dark)":"").appendTo(elementorCommon.elements.$body)}))}))}(jQuery,window);
 
assets/js/ooohboi-libs-locomotion.js CHANGED
@@ -1,6 +1,6 @@
1
  'use strict';
2
 
3
- ( function ( $, w, sfe_loco_scroll ) {
4
 
5
  var $window = $( w );
6
  var loco_multiplier = device_settings.scroll_multiplier; // validated via PHP
1
  'use strict';
2
 
3
+ ( function ( $, w, sfe_loco_scroll ) {
4
 
5
  var $window = $( w );
6
  var loco_multiplier = device_settings.scroll_multiplier; // validated via PHP
assets/js/ooohboi-steroids-min.js CHANGED
@@ -1 +1 @@
1
- "use strict";!function(e,t){var s=e(t);s.on("elementor/frontend/init",(function(){var t=elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.initSectionExtends()},isBreakingBad:function(){return this.$element.hasClass("ob-is-breaking-bad")},isGlider:function(){return this.$element.hasClass("ob-is-glider")},isInnerSection:function(){return this.$element.hasClass("elementor-inner-section")},onElementChange:function(e){"_ob_bbad_use_it"===e&&("yes"===this.getElementSettings("_ob_bbad_use_it")?(this.$element.addClass("ob-is-breaking-bad"),this.isInnerSection()&&this.$element.addClass("ob-bb-inner")):(this.$element.removeClass("ob-is-breaking-bad"),this.isInnerSection()&&this.$element.removeClass("ob-bb-inner"))),"_ob_glider_is_slider"===e&&("yes"===this.getElementSettings("_ob_glider_is_slider")?(this.$element.addClass("ob-is-glider"),this.addClassesRouteGlider(".elementor-element-"+this.$element.attr("data-id"),"addClass"),this.initSwiperElements()):"yes"!=this.getElementSettings("_ob_glider_is_slider")&&(this.$element.removeClass("ob-is-glider"),this.addClassesRouteGlider(".elementor-element-"+this.$element.attr("data-id"),"removeClass"))),"_ob_bbad_sssic_use"===e&&this.isInnerSection()&&("yes"===this.getElementSettings("_ob_bbad_sssic_use")?this.$element.addClass("ob-is-sticky-inner-section"):this.$element.removeClass("ob-is-sticky-inner-section"))},addClassesRouteGlider:function(t,s){var i=e(t).children(".elementor-container").first();i.length&&i.addClass("swiper-container");var o=e(i).children(".elementor-row").first();o.length&&"addClass"==s?(o.addClass("swiper-wrapper"),e(o).children("div.elementor-column").addClass("swiper-slide")):o.length||"addClass"!=s||(e(i).children("div.elementor-column").wrapAll('<div class="swiper-wrapper" />'),e(i).children(".swiper-wrapper").first().children("div.elementor-column").addClass("swiper-slide")),o.length&&"removeClass"==s?(i.removeClass("swiper-container"),o.removeClass("swiper-wrapper"),e(o).children("div.elementor-column").removeClass("swiper-slide")):o.length||"removeClass"!=s||(i.removeClass("swiper-container"),e(i).children("div.swiper-wrapper").unwrap(),e(i).children("div.elementor-column").removeClass("swiper-slide"))},initSectionExtends:function(){if(this.isEdit?("yes"!==this.getElementSettings("_ob_bbad_use_it")||this.isBreakingBad()||(this.$element.addClass("ob-is-breaking-bad"),this.isInnerSection()&&this.$element.addClass("ob-bb-inner")),"yes"===this.getElementSettings("_ob_glider_is_slider")&&(this.$element.addClass("ob-is-glider"),this.addClassesRouteGlider(".elementor-element-"+this.$element.attr("data-id"),"addClass"),this.initSwiperElements())):"yes"===this.getElementSettings("_ob_glider_is_slider")&&(this.$element.addClass("ob-is-glider"),this.addClassesRouteGlider(".elementor-element-"+this.$element.attr("data-id"),"addClass"),this.initSwiperElements()),"yes"===this.getElementSettings("_ob_bbad_sssic_use")&&this.isInnerSection()){this.isEdit&&this.$element.addClass("ob-is-sticky-inner-section");var e=this.$element.closest(".elementor-widget-wrap");e.length&&e.addClass("ob-sssic-wrapper")}},initSwiperElements:function(){this.$element.children(".elementor-container").find(".swiper-button-next").first().length||this.$element.children(".elementor-container").first().append('<div class="swiper-button-next"><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMin" viewBox="0 0 27 44"><path d="M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z"></path></svg></div>'),this.$element.children(".elementor-container").find(".swiper-button-prev").first().length||this.$element.children(".elementor-container").first().append('<div class="swiper-button-prev"><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMin" viewBox="0 0 27 44"><path d="M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z"></path></svg></div>'),this.$element.children(".elementor-container").find(".swiper-pagination").first().length||this.$element.children(".elementor-container").first().append('<div class="swiper-pagination"></div>');var e={};e.pagination_type=this.getElementSettings("_ob_glider_pagination_type"),e.allowTouchMove=this.getElementSettings("_ob_glider_allow_touch_move"),e.autoheight=this.getElementSettings("_ob_glider_auto_h"),e.effect=this.getElementSettings("_ob_glider_effect"),e.loop=this.getElementSettings("_ob_glider_loop"),e.direction=this.getElementSettings("_ob_glider_direction"),e.parallax=this.getElementSettings("_ob_glider_parallax"),e.speed=this.getElementSettings("_ob_glider_speed");var t=this.getElementSettings("_ob_glider_autoplay");e.autoplay=!!t&&{delay:this.getElementSettings("_ob_glider_autoplay_delay")},e.mousewheel=this.getElementSettings("_ob_glider_allow_mousewheel"),e.allowMultiSlides=this.getElementSettings("_ob_glider_allow_multi_slides");var s={},o=elementorFrontend.config.breakpoints;s[o.lg]={slidesPerView:this.getElementSettings("_ob_glider_slides_per_view"),slidesPerGroup:this.getElementSettings("_ob_glider_slides_to_scroll"),spaceBetween:+this.getElementSettings("_ob_glider_space_between")||0},s[o.md]={slidesPerView:this.getElementSettings("_ob_glider_slides_per_view_tablet"),slidesPerGroup:this.getElementSettings("_ob_glider_slides_to_scroll_tablet"),spaceBetween:+this.getElementSettings("_ob_glider_space_between_tablet")||0},s[0]={slidesPerView:this.getElementSettings("_ob_glider_slides_per_view_mobile"),slidesPerGroup:this.getElementSettings("_ob_glider_slides_to_scroll_mobile"),spaceBetween:+this.getElementSettings("_ob_glider_space_between_mobile")||0},e.breakpoints=s,e.slides_centered=this.getElementSettings("_ob_glider_centered_slides"),e.slides_centered_bounds=this.getElementSettings("_ob_glider_centered_bounds_slides"),e.slides_round_lenghts=this.getElementSettings("_ob_glider_roundlengths_slides"),i(this.$element.attr("data-id"),e,"glider_"+this.$element.attr("data-id"))}}),o=elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$element.find(".elementor-column-wrap").first().length||this.$element.addClass("ob-is-e3");var e=navigator.userAgent.toLowerCase();e.indexOf("chrome")>-1&&this.teleporterChromeResize(),this.initColumnExtends()},teleporterChromeResize:function(){if(this.isTeleporter()){var e=this,t=this.$element.attr("data-id");s.on("resize",(function(){e.$element.closest(".ob-is-teleporter").addClass("ob-chrome-resize"),clearTimeout(t),t=setTimeout((function(){var t=parseInt(e.$element.closest(".ob-is-teleporter").css("height")),s=e.$element.find(".elementor-column-wrap").first();s.length?s.css({height:t}):e.$element.find(".elementor-widget-wrap").first().css({height:t}),e.$element.closest(".ob-is-teleporter").removeClass("ob-chrome-resize")}),500)})),s.trigger("resize")}},isTeleporter:function(){return this.$element.hasClass("ob-is-teleporter")},isWidgetStalkerCol:function(){return this.$element.hasClass("ob-is-stalker")},initColumnExtends:function(){if(!this.isEdit){var e={};try{e=JSON.parse(this.$element.attr("data-settings"))}catch(e){return}if(void 0!==e._ob_bbad_link){var t=e._ob_bbad_link;if(""===t.url)return void this.$element.removeClass("bb-column-link");this.$element.addClass("bb-column-link"),this.$element.off("click.bb"),this.$element.on("click.bb",(function(){t.is_external?window.open(t.url):location.href=t.url}))}}this.isEdit&&"use-teleporter"===this.getElementSettings("_ob_teleporter_use")&&(this.$element.addClass("ob-is-teleporter"),this.$element.find(".elementor-widget-wrap").first().addClass("ob-tele-midget"),this.doTeleporterEditor()),!this.isEdit&&this.isTeleporter()&&(this.$element.find(".elementor-widget-wrap").first().addClass("ob-tele-midget"),this.doTeleporter()),this.isEdit&&"yes"===this.getElementSettings("_ob_bbad_is_stalker")&&this.$element.addClass("ob-is-stalker")},onElementChange:function(e){"_ob_teleporter_overlay_color"===e?this.$element.find('div[class*="ob-teleporter-"] > .ob-tele-overlay').css("background-color",this.getElementSettings("_ob_teleporter_overlay_color")):"_ob_teleporter_no_pass_tablet"===e?"no-tablet"===this.getElementSettings("_ob_teleporter_no_pass_tablet")?this.$element.addClass("ob-tele-no-tablet"):this.$element.removeClass("ob-tele-no-tablet"):"_ob_teleporter_no_pass_mobile"===e&&("no-mobile"===this.getElementSettings("_ob_teleporter_no_pass_mobile")?this.$element.addClass("ob-tele-no-mobile"):this.$element.removeClass("ob-tele-no-mobile")),"_ob_bbad_is_stalker"===e&&this.routeWidgetStalkerCol()},routeWidgetStalkerCol:function(){this.isWidgetStalkerCol()||"yes"!==this.getElementSettings("_ob_bbad_is_stalker")?this.$element.removeClass("ob-is-stalker"):this.$element.addClass("ob-is-stalker")},doTeleporterEditor:function(){if("use-teleporter"===this.getElementSettings("_ob_teleporter_use")){var t=this.$element.find(".elementor-widget-wrap").first();if(t.length&&(t.wrapInner('<div class="widget-wrap-children" />'),t.find(".elementor-background-overlay").first().length&&t.find(".elementor-background-overlay").first().insertBefore(t.find(".elementor-background-overlay").first().parent())),"do-pass"===this.getElementSettings("_ob_teleporter_pass")){var s=this,i=this.$element,o=this.$element.attr("data-id");"no-tablet"===this.getElementSettings("_ob_teleporter_no_pass_tablet")&&this.$element.addClass("ob-tele-no-tablet"),"no-mobile"===this.getElementSettings("_ob_teleporter_no_pass_mobile")&&this.$element.addClass("ob-tele-no-mobile");var n="section"===this.getElementSettings("_ob_teleporter_pass_element")?this.$element.closest(".elementor-section"):this.$element.closest(".elementor-container");if(n.length){n.css("overflow","hidden");var l=this.getElementSettings("_ob_teleporter_pass_effect"),r='<div class="ob-teleporter-'+o+" ob-tele-eff-"+l+'" data-id-teleporter="'+o+'"><div class="ob-tele-overlay" style="background-color: '+this.getElementSettings("_ob_teleporter_overlay_color")+';"></div></div>';e(".ob-teleporter-"+o).length||this.$element.prepend(r),this.$element.off("mouseenter mouseleave"),this.$element.on("mouseenter mouseleave",(function(t){if("mouseenter"===t.type){if("no-tablet"===s.getElementSettings("_ob_teleporter_no_pass_tablet")&&"tablet"===elementorFrontend.getCurrentDeviceMode())return;if("no-mobile"===s.getElementSettings("_ob_teleporter_no_pass_mobile")&&"mobile"===elementorFrontend.getCurrentDeviceMode())return;if("do-pass"!==s.getElementSettings("_ob_teleporter_pass"))return;var l={"background-color":e(".ob-teleporter-"+o).css("background-color"),"background-image":e(".ob-teleporter-"+o).css("background-image"),"background-position":e(".ob-teleporter-"+o).css("background-position"),"background-size":e(".ob-teleporter-"+o).css("background-size"),"background-repeat":e(".ob-teleporter-"+o).css("background-repeat")};if("section"===s.getElementSettings("_ob_teleporter_pass_element")){var r=n.children().not(".elementor-container").detach();n.addClass("ob-tele-mom-hover").prepend(e(".ob-teleporter-"+o)),n.prepend(r)}else n.addClass("ob-tele-mom-hover").prepend(e(".ob-teleporter-"+o));e(".ob-teleporter-"+o).css(l).hide(),e(".ob-teleporter-"+o).addClass("ob-teleporter-hover").show()}else n.removeClass("ob-tele-mom-hover"),setTimeout((function(){e(".ob-teleporter-"+o).removeAttr("style").removeClass("ob-teleporter-hover"),i.prepend(e(".ob-teleporter-"+o))}),100)}))}}}},doTeleporter:function(){var t={};try{t=JSON.parse(this.$element.attr("data-settings"))}catch(e){return}if("use-teleporter"===t._ob_teleporter_use){var s=this.$element.find(".elementor-widget-wrap").first();s.length&&(s.wrapInner('<div class="widget-wrap-children" />'),s.find(".elementor-background-overlay").first().length&&s.find(".elementor-background-overlay").first().insertBefore(s.find(".elementor-background-overlay").first().parent()));var i=this.$element,o=this.$element.attr("data-id");if("no-tablet"===t._ob_teleporter_no_pass_tablet&&this.$element.addClass("ob-tele-no-tablet"),"no-mobile"===t._ob_teleporter_no_pass_mobile&&this.$element.addClass("ob-tele-no-mobile"),void 0!==t._ob_teleporter_link){var n=t._ob_teleporter_link;if(""===n.url)return;this.$element.off("click.obTeleporter"),this.$element.on("click.obTeleporter",(function(){n.is_external?window.open(n.url):location.href=n.url}))}if("do-pass"===t._ob_teleporter_pass){var l="section"===t._ob_teleporter_pass_element?this.$element.closest(".elementor-section"):this.$element.closest(".elementor-container");if(l.length){l.css("overflow","hidden");var r=t._ob_teleporter_pass_effect,a='<div class="ob-teleporter-'+o+" ob-tele-eff-"+r+'" data-id-teleporter="'+o+'"><div class="ob-tele-overlay" style="background-color: '+t._ob_teleporter_overlay_color+';"></div>';e(".ob-teleporter-"+o).length||this.$element.prepend(a),this.$element.off("mouseenter mouseleave"),this.$element.on("mouseenter",(function(){if(!("no-tablet"===t._ob_teleporter_no_pass_tablet&&"tablet"===elementorFrontend.getCurrentDeviceMode()||"no-mobile"===t._ob_teleporter_no_pass_mobile&&"mobile"===elementorFrontend.getCurrentDeviceMode())){var s={"background-color":e(".ob-teleporter-"+o).css("background-color"),"background-image":e(".ob-teleporter-"+o).css("background-image"),"background-position":e(".ob-teleporter-"+o).css("background-position"),"background-size":e(".ob-teleporter-"+o).css("background-size"),"background-repeat":e(".ob-teleporter-"+o).css("background-repeat")};if("section"===t._ob_teleporter_pass_element){var i=l.children().not(".elementor-container").detach();l.addClass("ob-tele-mom-hover").prepend(e(".ob-teleporter-"+o)),l.prepend(i)}else l.addClass("ob-tele-mom-hover").prepend(e(".ob-teleporter-"+o));e(".ob-teleporter-"+o).css(s).hide(),e(".ob-teleporter-"+o).show().addClass("ob-teleporter-hover")}})),this.$element.on("mouseleave",(function(){l.removeClass("ob-tele-mom-hover"),setTimeout((function(){e(".ob-teleporter-"+o).removeAttr("style").removeClass("ob-teleporter-hover"),i.prepend(e(".ob-teleporter-"+o))}),100)}))}}}}}),n={section:t,column:o};e.each(n,(function(e,t){elementorFrontend.hooks.addAction("frontend/element_ready/"+e,(function(e){elementorFrontend.elementsHandler.addHandler(t,{$element:e})}))}))}));var i=function(t,s){var i,o=e(".elementor-element-"+t),n=e(".elementor-element-"+t+" .swiper-container").first(),l=n.parent().parent().find("nav.glider-controller"),r={allowTouchMove:"yes"===s.allowTouchMove,autoHeight:"yes"===s.autoheight,effect:s.effect,loop:s.loop,direction:"fade"===s.effect?"horizontal":s.direction,parallax:"yes"===s.parallax,speed:s.speed,breakpoints:"yes"===s.allowMultiSlides&&s.breakpoints,centeredSlides:"yes"===s.slides_centered,centeredSlidesBounds:"yes"===s.slides_centered_bounds,roundLengths:"yes"===s.slides_round_lenghts,navigation:{nextEl:".elementor-element-"+t+" .swiper-button-next",prevEl:".elementor-element-"+t+" .swiper-button-prev"},pagination:{el:".elementor-element-"+t+" .swiper-pagination",type:s.pagination_type,clickable:!0},autoplay:s.autoplay,mousewheel:"yes"===s.mousewheel,watchOverflow:!0};if("undefined"==typeof Swiper){new(0,elementorFrontend.utils.swiper)(n,r).then((e=>{i=e}))}else i=new Swiper(n,r);n.find('[class*="glider-control"]').on("click",(function(t){if(void 0!==e(this).data("gotoslide"))i.slideTo(parseInt(e(this).data("gotoslide")));else{var s=parseInt(e(this).attr("class").match(/glider-control-(\d+)/)[1]);s>0&&i.slideTo(s)}t.preventDefault()})),l.find('[class*="glider-control"]').on("click",(function(t){if(void 0!==e(this).data("gotoslide"))i.slideTo(parseInt(e(this).data("gotoslide")));else{var s=parseInt(e(this).attr("class").match(/glider-control-(\d+)/)[1]);s>0&&i.slideTo(s)}t.preventDefault()})),o.css("visibility","visible")}}(jQuery,window);
1
+ "use strict";!function(e,t){var o=e(t);o.on("elementor/frontend/init",(function(){var t=elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.initPoopArtPerspektiveHA(),this.initHoverAnimator()},initPoopArtPerspektiveHA:function(){this.isEdit&&(this.$element.addClass("ob-has-background-overlay"),"yes"===this.getElementSettings("_ob_perspektive_use")&&this.$element.addClass("ob-use-perspektive"),"yes"===this.getElementSettings("_ob_widget_stalker_use")&&this.$element.addClass("ob-got-stalker"))},initHoverAnimator:function(){this.routeHoverAnimator()},onElementChange:function(e){"_ob_perspektive_use"===e&&("yes"===this.getElementSettings("_ob_perspektive_use")?this.$element.addClass("ob-use-perspektive"):this.$element.removeClass("ob-use-perspektive")),"_ob_allow_hoveranimator"===e&&this.routeHoverAnimator(),-1!==["_ob_hoveranimator_opacity_hover","_ob_hoveranimator_y_hover","_ob_hoveranimator_y_hover_alt","_ob_hoveranimator_x_hover","_ob_hoveranimator_x_hover_alt","_ob_hoveranimator_rot_hover","_ob_hoveranimator_scalex_hover","_ob_hoveranimator_scaley_hover","_ob_hoveranimator_blur_hover"].indexOf(e)&&this.isHoverAnimator()&&this.doHoverAnimator(),"_ob_widget_stalker_use"===e&&this.routeWidgetStalkerWidget()},isWidgetStalkerWidget:function(){return this.$element.hasClass("ob-got-stalker")},routeWidgetStalkerWidget:function(){this.isWidgetStalkerWidget()||"yes"!==this.getElementSettings("_ob_widget_stalker_use")?this.$element.removeClass("ob-got-stalker"):this.$element.addClass("ob-got-stalker")},isPerspektive:function(){return this.$element.hasClass("ob-use-perspektive")},isHoverAnimator:function(){return this.$element.hasClass("ob-is-hoveranimal")},routeHoverAnimator:function(){this.isEdit?(this.isHoverAnimator()||"yes"!==this.getElementSettings("_ob_allow_hoveranimator")||(this.$element.addClass("ob-is-hoveranimal"),this.doHoverAnimator()),this.isHoverAnimator()&&"yes"!==this.getElementSettings("_ob_allow_hoveranimator")&&(this.$element.removeClass("ob-is-hoveranimal"),this.stopHoverAnimator())):!this.isEdit&&this.isHoverAnimator()&&this.doHoverAnimator()},doHoverAnimator:function(){var t=this.$element,o=t.parent().closest(".ob-is-hoveranimator");if(o.length){var s,i,n,r,l,a,d,h,_,m,b,p,c=o.data("id");this.isEdit?(s=this.getElementSettings("_ob_hoveranimator_opacity_hover"),i=this.getElementSettings("_ob_hoveranimator_y_hover"),n=this.getElementSettings("_ob_hoveranimator_y_hover_alt"),r=this.getElementSettings("_ob_hoveranimator_x_hover"),l=this.getElementSettings("_ob_hoveranimator_x_hover_alt"),a=this.getElementSettings("_ob_hoveranimator_rot_hover"),h=this.getElementSettings("_ob_hoveranimator_scalex_hover"),d=this.getElementSettings("_ob_hoveranimator_scaley_hover"),_=this.getElementSettings("_ob_hoveranimator_blur_hover")):this.isEdit||(s=(m=e.parseJSON(t.attr("data-settings")))._ob_hoveranimator_opacity_hover,i=m._ob_hoveranimator_y_hover,n=m._ob_hoveranimator_y_hover_alt,r=m._ob_hoveranimator_x_hover,l=m._ob_hoveranimator_x_hover_alt,a=m._ob_hoveranimator_rot_hover,h=m._ob_hoveranimator_scalex_hover,d=m._ob_hoveranimator_scaley_hover,_=m._ob_hoveranimator_blur_hover),p=""!=e.trim(l)&&void 0!==l?"calc("+l+")":r.size+r.unit,b=""!=e.trim(n)&&void 0!==n?"calc("+n+")":i.size+i.unit;var u={opacity:s.size,top:b,left:p,transform:"rotate("+a.size+"deg) scaleX("+h.size+") scaleY("+d.size+")",filter:"blur("+_.size+_.unit+")"};o.on("mouseenter."+c,(function(){t.css(u)})),o.on("mouseleave."+c,(function(){t.removeAttr("style")}))}},stopHoverAnimator:function(){var e=this.$element,t=this.$element.parent().closest(".ob-is-hoveranimator");if(t.length){var o=t.data("id"),s={opacity:"",top:"",left:"",transform:"",filter:""};t.on("mouseenter."+o,(function(){e.css(s)})),t.on("mouseleave."+o,(function(){e.removeAttr("style")}))}}}),i=elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.initHarakiri()},initHarakiri:function(){this.isEdit&&"inherit"!==this.getElementSettings("_ob_harakiri_writing_mode")&&this.$element.addClass("ob-harakiri")},onElementChange:function(e){"_ob_harakiri_writing_mode"===e&&("inherit"!==this.getElementSettings("_ob_harakiri_writing_mode")?this.$element.addClass("ob-harakiri"):this.$element.removeClass("ob-harakiri"))}}),n={widget:t,"heading.default":i,"text-editor.default":i,section:elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.initSectionExtends()},isBreakingBad:function(){return this.$element.hasClass("ob-is-breaking-bad")},isGlider:function(){return this.$element.hasClass("ob-is-glider")},isInnerSection:function(){return this.$element.hasClass("elementor-inner-section")},onElementChange:function(e){"_ob_bbad_use_it"===e&&("yes"===this.getElementSettings("_ob_bbad_use_it")?(this.$element.addClass("ob-is-breaking-bad"),this.isInnerSection()&&this.$element.addClass("ob-bb-inner")):(this.$element.removeClass("ob-is-breaking-bad"),this.isInnerSection()&&this.$element.removeClass("ob-bb-inner"))),"_ob_glider_is_slider"===e&&("yes"===this.getElementSettings("_ob_glider_is_slider")?(this.$element.addClass("ob-is-glider"),this.addClassesRouteGlider(".elementor-element-"+this.$element.attr("data-id"),"addClass"),this.initSwiperElements()):"yes"!=this.getElementSettings("_ob_glider_is_slider")&&(this.$element.removeClass("ob-is-glider"),this.addClassesRouteGlider(".elementor-element-"+this.$element.attr("data-id"),"removeClass"))),"_ob_bbad_sssic_use"===e&&this.isInnerSection()&&("yes"===this.getElementSettings("_ob_bbad_sssic_use")?this.$element.addClass("ob-is-sticky-inner-section"):this.$element.removeClass("ob-is-sticky-inner-section"))},addClassesRouteGlider:function(t,o){var s=e(t).children(".elementor-container").first();s.length&&s.addClass("swiper-container");var i=e(s).children(".elementor-row").first();i.length&&"addClass"==o?(i.addClass("swiper-wrapper"),e(i).children("div.elementor-column").addClass("swiper-slide")):i.length||"addClass"!=o||(e(s).children("div.elementor-column").wrapAll('<div class="swiper-wrapper" />'),e(s).children(".swiper-wrapper").first().children("div.elementor-column").addClass("swiper-slide")),i.length&&"removeClass"==o?(s.removeClass("swiper-container"),i.removeClass("swiper-wrapper"),e(i).children("div.elementor-column").removeClass("swiper-slide")):i.length||"removeClass"!=o||(s.removeClass("swiper-container"),e(s).children("div.swiper-wrapper").unwrap(),e(s).children("div.elementor-column").removeClass("swiper-slide"))},initSectionExtends:function(){if(this.isEdit?("yes"!==this.getElementSettings("_ob_bbad_use_it")||this.isBreakingBad()||(this.$element.addClass("ob-is-breaking-bad"),this.isInnerSection()&&this.$element.addClass("ob-bb-inner")),"yes"===this.getElementSettings("_ob_glider_is_slider")&&(this.$element.addClass("ob-is-glider"),this.addClassesRouteGlider(".elementor-element-"+this.$element.attr("data-id"),"addClass"),this.initSwiperElements())):"yes"===this.getElementSettings("_ob_glider_is_slider")&&(this.$element.addClass("ob-is-glider"),this.addClassesRouteGlider(".elementor-element-"+this.$element.attr("data-id"),"addClass"),this.initSwiperElements()),"yes"===this.getElementSettings("_ob_bbad_sssic_use")&&this.isInnerSection()){this.isEdit&&this.$element.addClass("ob-is-sticky-inner-section");var e=this.$element.closest(".elementor-widget-wrap");e.length&&e.addClass("ob-sssic-wrapper")}},initSwiperElements:function(){this.$element.children(".elementor-container").find(".swiper-button-next").first().length||this.$element.children(".elementor-container").first().append('<div class="swiper-button-next"><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMin" viewBox="0 0 27 44"><path d="M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z"></path></svg></div>'),this.$element.children(".elementor-container").find(".swiper-button-prev").first().length||this.$element.children(".elementor-container").first().append('<div class="swiper-button-prev"><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMin" viewBox="0 0 27 44"><path d="M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z"></path></svg></div>'),this.$element.children(".elementor-container").find(".swiper-pagination").first().length||this.$element.children(".elementor-container").first().append('<div class="swiper-pagination"></div>');var e={};e.pagination_type=this.getElementSettings("_ob_glider_pagination_type"),e.allowTouchMove=this.getElementSettings("_ob_glider_allow_touch_move"),e.autoheight=this.getElementSettings("_ob_glider_auto_h"),e.effect=this.getElementSettings("_ob_glider_effect"),e.loop=this.getElementSettings("_ob_glider_loop"),e.direction=this.getElementSettings("_ob_glider_direction"),e.parallax=this.getElementSettings("_ob_glider_parallax"),e.speed=this.getElementSettings("_ob_glider_speed");var t=this.getElementSettings("_ob_glider_autoplay");e.autoplay=!!t&&{delay:this.getElementSettings("_ob_glider_autoplay_delay")},e.mousewheel=this.getElementSettings("_ob_glider_allow_mousewheel"),e.allowMultiSlides=this.getElementSettings("_ob_glider_allow_multi_slides");var o={},i=elementorFrontend.config.breakpoints;o[i.lg]={slidesPerView:this.getElementSettings("_ob_glider_slides_per_view"),slidesPerGroup:this.getElementSettings("_ob_glider_slides_to_scroll"),spaceBetween:+this.getElementSettings("_ob_glider_space_between")||0},o[i.md]={slidesPerView:this.getElementSettings("_ob_glider_slides_per_view_tablet"),slidesPerGroup:this.getElementSettings("_ob_glider_slides_to_scroll_tablet"),spaceBetween:+this.getElementSettings("_ob_glider_space_between_tablet")||0},o[0]={slidesPerView:this.getElementSettings("_ob_glider_slides_per_view_mobile"),slidesPerGroup:this.getElementSettings("_ob_glider_slides_to_scroll_mobile"),spaceBetween:+this.getElementSettings("_ob_glider_space_between_mobile")||0},e.breakpoints=o,e.slides_centered=this.getElementSettings("_ob_glider_centered_slides"),e.slides_centered_bounds=this.getElementSettings("_ob_glider_centered_bounds_slides"),e.slides_round_lenghts=this.getElementSettings("_ob_glider_roundlengths_slides"),s(this.$element.attr("data-id"),e,"glider_"+this.$element.attr("data-id"))}}),column:elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$element.find(".elementor-column-wrap").first().length||this.$element.addClass("ob-is-e3");var e=navigator.userAgent.toLowerCase();e.indexOf("chrome")>-1&&this.teleporterChromeResize(),this.initColumnExtends()},teleporterChromeResize:function(){if(this.isTeleporter()){var e=this,t=this.$element.attr("data-id");o.on("resize",(function(){e.$element.closest(".ob-is-teleporter").addClass("ob-chrome-resize"),clearTimeout(t),t=setTimeout((function(){var t=parseInt(e.$element.closest(".ob-is-teleporter").css("height")),o=e.$element.find(".elementor-column-wrap").first();o.length?o.css({height:t}):e.$element.find(".elementor-widget-wrap").first().css({height:t}),e.$element.closest(".ob-is-teleporter").removeClass("ob-chrome-resize")}),500)})),o.trigger("resize")}},isTeleporter:function(){return this.$element.hasClass("ob-is-teleporter")},isHoverAnimatorCol:function(){return this.$element.hasClass("ob-is-hoveranimator")},isWidgetStalkerCol:function(){return this.$element.hasClass("ob-is-stalker")},isPseudoCol:function(){return this.$element.hasClass("ob-is-pseudo")},initColumnExtends:function(){if(!this.isEdit){var e={};try{e=JSON.parse(this.$element.attr("data-settings"))}catch(e){return}if(void 0!==e._ob_bbad_link){var t=e._ob_bbad_link;if(""===t.url)return void this.$element.removeClass("bb-column-link");this.$element.addClass("bb-column-link"),this.$element.off("click.bb"),this.$element.on("click.bb",(function(){t.is_external?window.open(t.url):location.href=t.url}))}}this.isEdit&&"use-teleporter"===this.getElementSettings("_ob_teleporter_use")&&(this.$element.addClass("ob-is-teleporter"),this.$element.find(".elementor-widget-wrap").first().addClass("ob-tele-midget"),this.doTeleporterEditor()),!this.isEdit&&this.isTeleporter()&&(this.$element.find(".elementor-widget-wrap").first().addClass("ob-tele-midget"),this.doTeleporter()),this.isEdit&&"yes"===this.getElementSettings("_ob_column_hoveranimator")&&this.$element.addClass("ob-is-hoveranimator"),this.isEdit&&"yes"===this.getElementSettings("_ob_bbad_is_stalker")&&this.$element.addClass("ob-is-stalker"),this.isEdit&&"yes"===this.getElementSettings("_ob_column_has_pseudo")&&this.$element.addClass("ob-is-pseudo")},onElementChange:function(e){"_ob_teleporter_overlay_color"===e?this.$element.find('div[class*="ob-teleporter-"] > .ob-tele-overlay').css("background-color",this.getElementSettings("_ob_teleporter_overlay_color")):"_ob_teleporter_no_pass_tablet"===e?"no-tablet"===this.getElementSettings("_ob_teleporter_no_pass_tablet")?this.$element.addClass("ob-tele-no-tablet"):this.$element.removeClass("ob-tele-no-tablet"):"_ob_teleporter_no_pass_mobile"===e&&("no-mobile"===this.getElementSettings("_ob_teleporter_no_pass_mobile")?this.$element.addClass("ob-tele-no-mobile"):this.$element.removeClass("ob-tele-no-mobile")),"_ob_column_hoveranimator"===e&&this.routeHoverAnimatorCol(),"_ob_bbad_is_stalker"===e&&this.routeWidgetStalkerCol(),"_ob_column_has_pseudo"===e&&this.routePseudoCol()},routeHoverAnimatorCol:function(){this.isHoverAnimatorCol()||"yes"!==this.getElementSettings("_ob_column_hoveranimator")?this.$element.removeClass("ob-is-hoveranimator"):this.$element.addClass("ob-is-hoveranimator")},routeWidgetStalkerCol:function(){this.isWidgetStalkerCol()||"yes"!==this.getElementSettings("_ob_bbad_is_stalker")?this.$element.removeClass("ob-is-stalker"):this.$element.addClass("ob-is-stalker")},routePseudoCol:function(){this.isPseudoCol()||"yes"!==this.getElementSettings("_ob_column_has_pseudo")?this.$element.removeClass("ob-is-pseudo"):this.$element.addClass("ob-is-pseudo")},doTeleporterEditor:function(){if("use-teleporter"===this.getElementSettings("_ob_teleporter_use")){var t=this.$element.find(".elementor-widget-wrap").first();if(t.length&&(t.wrapInner('<div class="widget-wrap-children" />'),t.find(".elementor-background-overlay").first().length&&t.find(".elementor-background-overlay").first().insertBefore(t.find(".elementor-background-overlay").first().parent())),"do-pass"===this.getElementSettings("_ob_teleporter_pass")){var o=this,s=this.$element,i=this.$element.attr("data-id");"no-tablet"===this.getElementSettings("_ob_teleporter_no_pass_tablet")&&this.$element.addClass("ob-tele-no-tablet"),"no-mobile"===this.getElementSettings("_ob_teleporter_no_pass_mobile")&&this.$element.addClass("ob-tele-no-mobile");var n="section"===this.getElementSettings("_ob_teleporter_pass_element")?this.$element.closest(".elementor-section"):this.$element.closest(".elementor-container");if(n.length){n.css("overflow","hidden");var r=this.getElementSettings("_ob_teleporter_pass_effect"),l='<div class="ob-teleporter-'+i+" ob-tele-eff-"+r+'" data-id-teleporter="'+i+'"><div class="ob-tele-overlay" style="background-color: '+this.getElementSettings("_ob_teleporter_overlay_color")+';"></div></div>';e(".ob-teleporter-"+i).length||this.$element.prepend(l),this.$element.off("mouseenter mouseleave"),this.$element.on("mouseenter mouseleave",(function(t){if("mouseenter"===t.type){if("no-tablet"===o.getElementSettings("_ob_teleporter_no_pass_tablet")&&"tablet"===elementorFrontend.getCurrentDeviceMode())return;if("no-mobile"===o.getElementSettings("_ob_teleporter_no_pass_mobile")&&"mobile"===elementorFrontend.getCurrentDeviceMode())return;if("do-pass"!==o.getElementSettings("_ob_teleporter_pass"))return;var r={"background-color":e(".ob-teleporter-"+i).css("background-color"),"background-image":e(".ob-teleporter-"+i).css("background-image"),"background-position":e(".ob-teleporter-"+i).css("background-position"),"background-size":e(".ob-teleporter-"+i).css("background-size"),"background-repeat":e(".ob-teleporter-"+i).css("background-repeat")};if("section"===o.getElementSettings("_ob_teleporter_pass_element")){var l=n.children().not(".elementor-container").detach();n.addClass("ob-tele-mom-hover").prepend(e(".ob-teleporter-"+i)),n.prepend(l)}else n.addClass("ob-tele-mom-hover").prepend(e(".ob-teleporter-"+i));e(".ob-teleporter-"+i).css(r).hide(),e(".ob-teleporter-"+i).addClass("ob-teleporter-hover").show()}else n.removeClass("ob-tele-mom-hover"),setTimeout((function(){e(".ob-teleporter-"+i).removeAttr("style").removeClass("ob-teleporter-hover"),s.prepend(e(".ob-teleporter-"+i))}),100)}))}}}},doTeleporter:function(){var t={};try{t=JSON.parse(this.$element.attr("data-settings"))}catch(e){return}if("use-teleporter"===t._ob_teleporter_use){var o=this.$element.find(".elementor-widget-wrap").first();o.length&&(o.wrapInner('<div class="widget-wrap-children" />'),o.find(".elementor-background-overlay").first().length&&o.find(".elementor-background-overlay").first().insertBefore(o.find(".elementor-background-overlay").first().parent()));var s=this.$element,i=this.$element.attr("data-id");if("no-tablet"===t._ob_teleporter_no_pass_tablet&&this.$element.addClass("ob-tele-no-tablet"),"no-mobile"===t._ob_teleporter_no_pass_mobile&&this.$element.addClass("ob-tele-no-mobile"),void 0!==t._ob_teleporter_link){var n=t._ob_teleporter_link;if(""===n.url)return;this.$element.off("click.obTeleporter"),this.$element.on("click.obTeleporter",(function(){n.is_external?window.open(n.url):location.href=n.url}))}if("do-pass"===t._ob_teleporter_pass){var r="section"===t._ob_teleporter_pass_element?this.$element.closest(".elementor-section"):this.$element.closest(".elementor-container");if(r.length){r.css("overflow","hidden");var l=t._ob_teleporter_pass_effect,a='<div class="ob-teleporter-'+i+" ob-tele-eff-"+l+'" data-id-teleporter="'+i+'"><div class="ob-tele-overlay" style="background-color: '+t._ob_teleporter_overlay_color+';"></div>';e(".ob-teleporter-"+i).length||this.$element.prepend(a),this.$element.off("mouseenter mouseleave"),this.$element.on("mouseenter",(function(){if(!("no-tablet"===t._ob_teleporter_no_pass_tablet&&"tablet"===elementorFrontend.getCurrentDeviceMode()||"no-mobile"===t._ob_teleporter_no_pass_mobile&&"mobile"===elementorFrontend.getCurrentDeviceMode())){var o={"background-color":e(".ob-teleporter-"+i).css("background-color"),"background-image":e(".ob-teleporter-"+i).css("background-image"),"background-position":e(".ob-teleporter-"+i).css("background-position"),"background-size":e(".ob-teleporter-"+i).css("background-size"),"background-repeat":e(".ob-teleporter-"+i).css("background-repeat")};if("section"===t._ob_teleporter_pass_element){var s=r.children().not(".elementor-container").detach();r.addClass("ob-tele-mom-hover").prepend(e(".ob-teleporter-"+i)),r.prepend(s)}else r.addClass("ob-tele-mom-hover").prepend(e(".ob-teleporter-"+i));e(".ob-teleporter-"+i).css(o).hide(),e(".ob-teleporter-"+i).show().addClass("ob-teleporter-hover")}})),this.$element.on("mouseleave",(function(){r.removeClass("ob-tele-mom-hover"),setTimeout((function(){e(".ob-teleporter-"+i).removeAttr("style").removeClass("ob-teleporter-hover"),s.prepend(e(".ob-teleporter-"+i))}),100)}))}}}}}),"search-form.default":elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.initSearchCop()},onElementChange:function(e){"_ob_searchcop_srch_options"===e&&this.routeSearchCop()},initSearchCop:function(){this.routeSearchCop()},routeSearchCop:function(){var e=this.getElementSettings("_ob_searchcop_srch_options");if("post"===e||"page"===e||"product"===e){var t=this.$element.find(".elementor-search-form__container");if(!t.length)return;var o='<input type="hidden" name="post_type" value="'+e+'" />';t.prepend(o)}}}),"button.default":elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.initButterButton()},isButterButton:function(){return this.$element.hasClass("ob-is-butterbutton")},onElementChange:function(e){"_ob_butterbutton_use_it"===e&&this.routeButterButton()},initButterButton:function(){this.isEdit&&"yes"===this.getElementSettings("_ob_butterbutton_use_it")&&this.$element.addClass("ob-is-butterbutton")},routeButterButton:function(){this.isButterButton()||"yes"!==this.getElementSettings("_ob_butterbutton_use_it")?this.$element.removeClass("ob-is-butterbutton"):this.$element.addClass("ob-is-butterbutton")}}),"image.default":elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.initPhotoMorph()},isPhotoMorph:function(){return this.$element.hasClass("ob-photomorph")},onElementChange:function(e){"_ob_photomorph_use"===e&&this.routePhotoMorph()},initPhotoMorph:function(){this.isEdit&&"yes"===this.getElementSettings("_ob_photomorph_use")&&this.$element.addClass("ob-photomorph")},routePhotoMorph:function(){this.isPhotoMorph()||"yes"!==this.getElementSettings("_ob_photomorph_use")?this.$element.removeClass("ob-photomorph"):this.$element.addClass("ob-photomorph")}}),"post-comments.theme_comments":elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.initCommentz()},isCommentz:function(){return this.$element.hasClass("ob-commentz")},onElementChange:function(e){"_ob_commentz_use"===e&&this.routeCommentz()},initCommentz:function(){this.isEdit&&"yes"===this.getElementSettings("_ob_commentz_use")&&this.$element.addClass("ob-commentz")},routeCommentz:function(){this.isCommentz()||"yes"!==this.getElementSettings("_ob_commentz_use")?this.$element.removeClass("ob-commentz"):this.$element.addClass("ob-commentz")}}),"spacer.default":elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.initSpaceRat()},isSpaceRat:function(){return this.$element.hasClass("ob-spacerat")},onElementChange:function(e){"_ob_spacerat_use"===e&&this.routeSpaceRat()},initSpaceRat:function(){if(this.isEdit&&"yes"===this.getElementSettings("_ob_spacerat_use")&&this.$element.addClass("ob-spacerat"),!this.isEdit&&"yes"===this.getElementSettings("_ob_spacerat_use")){var e={};try{e=JSON.parse(this.$element.attr("data-settings"))}catch(e){return}if(void 0!==e._ob_spacerat_link){var t=e._ob_spacerat_link;if(""===t.url)return;this.$element.off("click.obSpacerat"),this.$element.on("click.obSpacerat",(function(){t.is_external?window.open(t.url):location.href=t.url}))}}},routeSpaceRat:function(){this.isSpaceRat()||"yes"!==this.getElementSettings("_ob_spacerat_use")?this.$element.removeClass("ob-spacerat"):this.$element.addClass("ob-spacerat")}})};e.each(n,(function(e,t){elementorFrontend.hooks.addAction("frontend/element_ready/"+e,(function(e){elementorFrontend.elementsHandler.addHandler(t,{$element:e})}))}))}));var s=function(t,o){var s,i=e(".elementor-element-"+t),n=e(".elementor-element-"+t+" .swiper-container").first(),r=n.parent().parent().find("nav.glider-controller"),l={allowTouchMove:"yes"===o.allowTouchMove,autoHeight:"yes"===o.autoheight,effect:o.effect,loop:o.loop,direction:"fade"===o.effect?"horizontal":o.direction,parallax:"yes"===o.parallax,speed:o.speed,breakpoints:"yes"===o.allowMultiSlides&&o.breakpoints,centeredSlides:"yes"===o.slides_centered,centeredSlidesBounds:"yes"===o.slides_centered_bounds,roundLengths:"yes"===o.slides_round_lenghts,navigation:{nextEl:".elementor-element-"+t+" .swiper-button-next",prevEl:".elementor-element-"+t+" .swiper-button-prev"},pagination:{el:".elementor-element-"+t+" .swiper-pagination",type:o.pagination_type,clickable:!0},autoplay:o.autoplay,mousewheel:"yes"===o.mousewheel,watchOverflow:!0};if("undefined"==typeof Swiper){new(0,elementorFrontend.utils.swiper)(n,l).then((e=>{s=e}))}else s=new Swiper(n,l);n.find('[class*="glider-control"]').on("click",(function(t){if(void 0!==e(this).data("gotoslide"))s.slideTo(parseInt(e(this).data("gotoslide")));else{var o=parseInt(e(this).attr("class").match(/glider-control-(\d+)/)[1]);o>0&&s.slideTo(o)}t.preventDefault()})),r.find('[class*="glider-control"]').on("click",(function(t){if(void 0!==e(this).data("gotoslide"))s.slideTo(parseInt(e(this).data("gotoslide")));else{var o=parseInt(e(this).attr("class").match(/glider-control-(\d+)/)[1]);o>0&&s.slideTo(o)}t.preventDefault()})),i.css("visibility","visible")}}(jQuery,window);
assets/js/ooohboi-steroids.js ADDED
@@ -0,0 +1,1037 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Elementor hooks - editor - frontend */
2
+
3
+ 'use strict';
4
+
5
+ ( function ( $, w ) {
6
+
7
+ var $window = $( w );
8
+
9
+ $window.on( 'elementor/frontend/init', function() {
10
+
11
+ var PoopArtPerspektiveHA = elementorModules.frontend.handlers.Base.extend( {
12
+
13
+ onInit: function() {
14
+
15
+ elementorModules.frontend.handlers.Base.prototype.onInit.apply( this, arguments );
16
+ this.initPoopArtPerspektiveHA();
17
+ this.initHoverAnimator();
18
+
19
+ },
20
+ /* PoopArt*/
21
+ initPoopArtPerspektiveHA: function() {
22
+
23
+ if( this.isEdit ) {
24
+ this.$element.addClass( 'ob-has-background-overlay' ); // PoopArt
25
+ // Perspektive
26
+ if( 'yes' === this.getElementSettings( '_ob_perspektive_use' ) ) {
27
+ this.$element.addClass( 'ob-use-perspektive' );
28
+ }
29
+ // Widget Stalker
30
+ if( 'yes' === this.getElementSettings( '_ob_widget_stalker_use' ) ) {
31
+ this.$element.addClass( 'ob-got-stalker' );
32
+ }
33
+ }
34
+
35
+ },
36
+ /* HoverAnimator */
37
+ initHoverAnimator: function() {
38
+ this.routeHoverAnimator();
39
+ },
40
+
41
+ onElementChange: function( changedProp ) {
42
+ /* Perspektive */
43
+ if( changedProp === '_ob_perspektive_use' ) {
44
+ if( 'yes' === this.getElementSettings( '_ob_perspektive_use' ) ) this.$element.addClass( 'ob-use-perspektive' );
45
+ else this.$element.removeClass( 'ob-use-perspektive' );
46
+ }
47
+ /* Hoveranimator */
48
+ if( changedProp === '_ob_allow_hoveranimator' ) {
49
+ this.routeHoverAnimator();
50
+ }
51
+ if( [ '_ob_hoveranimator_opacity_hover', '_ob_hoveranimator_y_hover', '_ob_hoveranimator_y_hover_alt', '_ob_hoveranimator_x_hover', '_ob_hoveranimator_x_hover_alt', '_ob_hoveranimator_rot_hover', '_ob_hoveranimator_scalex_hover', '_ob_hoveranimator_scaley_hover', '_ob_hoveranimator_blur_hover' ].indexOf( changedProp ) !== -1
52
+ && this.isHoverAnimator() ) {
53
+ this.doHoverAnimator();
54
+ }
55
+ /* Widget Stalker */
56
+ if( changedProp === '_ob_widget_stalker_use' ) {
57
+ this.routeWidgetStalkerWidget();
58
+ }
59
+ //-----------------
60
+
61
+ },
62
+
63
+ /* Stalker Widget */
64
+ isWidgetStalkerWidget: function() {
65
+ return this.$element.hasClass( 'ob-got-stalker' );
66
+ },
67
+ routeWidgetStalkerWidget: function() {
68
+ if( ! this.isWidgetStalkerWidget() && 'yes' === this.getElementSettings( '_ob_widget_stalker_use' ) ) this.$element.addClass( 'ob-got-stalker' );
69
+ else this.$element.removeClass( 'ob-got-stalker' );
70
+ },
71
+ /* Perspektive */
72
+ isPerspektive: function() {
73
+ return this.$element.hasClass( 'ob-use-perspektive' );
74
+ },
75
+ /* HoverAnimator */
76
+ isHoverAnimator: function() {
77
+ return this.$element.hasClass( 'ob-is-hoveranimal' );
78
+ },
79
+ /* HoverAnimator */
80
+ routeHoverAnimator: function() {
81
+
82
+ if( this.isEdit ) {
83
+
84
+ if( ! this.isHoverAnimator() && 'yes' === this.getElementSettings( '_ob_allow_hoveranimator' ) ) {
85
+ this.$element.addClass( 'ob-is-hoveranimal' );
86
+ this.doHoverAnimator(); // initialize hover event for Hoveranimator
87
+ }
88
+ if( this.isHoverAnimator() && 'yes' !== this.getElementSettings( '_ob_allow_hoveranimator' ) ) {
89
+ this.$element.removeClass( 'ob-is-hoveranimal' );
90
+ this.stopHoverAnimator(); // stop hover event for Hoveranimator
91
+ }
92
+ } else if( ! this.isEdit && this.isHoverAnimator() ) {
93
+ this.doHoverAnimator(); // init front-end
94
+ }
95
+
96
+ },
97
+ doHoverAnimator: function() {
98
+
99
+ var myself = this.$element;
100
+ var parent_column = myself.parent().closest( '.ob-is-hoveranimator' );
101
+ if( parent_column.length ) {
102
+ var col_id = parent_column.data( 'id' );
103
+ var opacity, pos_y, pos_y_alt, pos_x, pos_x_alt, rot, scale_y, scale_x, blur, el_settingz, top_alt, left_alt;
104
+ if( this.isEdit ) {
105
+ opacity = this.getElementSettings( '_ob_hoveranimator_opacity_hover' );
106
+ pos_y = this.getElementSettings( '_ob_hoveranimator_y_hover' );
107
+ pos_y_alt = this.getElementSettings( '_ob_hoveranimator_y_hover_alt' );
108
+ pos_x = this.getElementSettings( '_ob_hoveranimator_x_hover' );
109
+ pos_x_alt = this.getElementSettings( '_ob_hoveranimator_x_hover_alt' );
110
+ rot = this.getElementSettings( '_ob_hoveranimator_rot_hover' );
111
+ scale_x = this.getElementSettings( '_ob_hoveranimator_scalex_hover' );
112
+ scale_y = this.getElementSettings( '_ob_hoveranimator_scaley_hover' );
113
+ blur = this.getElementSettings( '_ob_hoveranimator_blur_hover' );
114
+ } else if( ! this.isEdit ) {
115
+ el_settingz = $.parseJSON( myself.attr( 'data-settings' ) ); // get from JSON
116
+ opacity = el_settingz._ob_hoveranimator_opacity_hover;
117
+ pos_y = el_settingz._ob_hoveranimator_y_hover;
118
+ pos_y_alt = el_settingz._ob_hoveranimator_y_hover_alt;
119
+ pos_x = el_settingz._ob_hoveranimator_x_hover;
120
+ pos_x_alt = el_settingz._ob_hoveranimator_x_hover_alt;
121
+ rot = el_settingz._ob_hoveranimator_rot_hover;
122
+ scale_x = el_settingz._ob_hoveranimator_scalex_hover;
123
+ scale_y = el_settingz._ob_hoveranimator_scaley_hover;
124
+ blur = el_settingz._ob_hoveranimator_blur_hover;
125
+ }
126
+
127
+ // alt values chckpoint
128
+ if( '' != $.trim( pos_x_alt ) && undefined !== pos_x_alt ) left_alt = 'calc(' + pos_x_alt + ')';
129
+ else left_alt = pos_x.size + pos_x.unit;
130
+ if( '' != $.trim( pos_y_alt ) && undefined !== pos_y_alt ) top_alt = 'calc(' + pos_y_alt + ')';
131
+ else top_alt = pos_y.size + pos_y.unit;
132
+
133
+ var hover_css = {
134
+ 'opacity': opacity.size,
135
+ 'top': top_alt,
136
+ 'left': left_alt,
137
+ 'transform': 'rotate(' + rot.size + 'deg) scaleX(' + scale_x.size + ') scaleY(' + scale_y.size + ')',
138
+ 'filter': 'blur(' + blur.size + blur.unit + ')'
139
+ };
140
+ parent_column.on( 'mouseenter.' + col_id, function() {
141
+ myself.css( hover_css );
142
+ } );
143
+ parent_column.on( 'mouseleave.' + col_id, function() {
144
+ myself.removeAttr( 'style' );
145
+ } );
146
+ }
147
+
148
+ },
149
+ stopHoverAnimator: function() {
150
+
151
+ var myself = this.$element;
152
+ var parent_column = this.$element.parent().closest( '.ob-is-hoveranimator' );
153
+ if( parent_column.length ) {
154
+ var col_id = parent_column.data( 'id' );
155
+ var hover_css_reset = {
156
+ 'opacity': '',
157
+ 'top': '',
158
+ 'left': '',
159
+ 'transform': '',
160
+ 'filter': ''
161
+ };
162
+ parent_column.on( 'mouseenter.' + col_id, function() {
163
+ myself.css( hover_css_reset );
164
+ } );
165
+ parent_column.on( 'mouseleave.' + col_id, function() {
166
+ myself.removeAttr( 'style' );
167
+ } );
168
+ }
169
+
170
+ },
171
+
172
+ } );
173
+
174
+ var Harakiri = elementorModules.frontend.handlers.Base.extend( {
175
+
176
+ onInit: function onInit() {
177
+
178
+ elementorModules.frontend.handlers.Base.prototype.onInit.apply( this, arguments );
179
+ this.initHarakiri();
180
+
181
+ },
182
+
183
+ initHarakiri: function() {
184
+
185
+ if( this.isEdit ) {
186
+ if( 'inherit' !== this.getElementSettings( '_ob_harakiri_writing_mode' ) ) this.$element.addClass( 'ob-harakiri' );
187
+ }
188
+
189
+ },
190
+
191
+ onElementChange: function( changedProp ) {
192
+
193
+ if( changedProp === '_ob_harakiri_writing_mode' ) {
194
+ if( 'inherit' !== this.getElementSettings( '_ob_harakiri_writing_mode' ) ) this.$element.addClass( 'ob-harakiri' );
195
+ else this.$element.removeClass( 'ob-harakiri' );
196
+ }
197
+
198
+ }
199
+
200
+ } );
201
+
202
+ var SectionExtends = elementorModules.frontend.handlers.Base.extend( {
203
+
204
+ onInit: function onInit() {
205
+
206
+ elementorModules.frontend.handlers.Base.prototype.onInit.apply( this, arguments );
207
+ this.initSectionExtends();
208
+
209
+ },
210
+ isBreakingBad: function() {
211
+
212
+ return this.$element.hasClass( 'ob-is-breaking-bad' );
213
+
214
+ },
215
+ isGlider: function() {
216
+
217
+ return this.$element.hasClass( 'ob-is-glider' );
218
+
219
+ },
220
+ /* needed for Inner Section stickyness */
221
+ isInnerSection: function() {
222
+ return this.$element.hasClass( 'elementor-inner-section' );
223
+ },
224
+ onElementChange: function( changedProp ) {
225
+
226
+ // Breaking Bad
227
+ if( changedProp === '_ob_bbad_use_it' ) {
228
+ if( 'yes' === this.getElementSettings( '_ob_bbad_use_it' ) ) {
229
+ this.$element.addClass( 'ob-is-breaking-bad' );
230
+ if( this.isInnerSection() ) this.$element.addClass( 'ob-bb-inner' );
231
+ }
232
+ else {
233
+ this.$element.removeClass( 'ob-is-breaking-bad' );
234
+ if( this.isInnerSection() ) this.$element.removeClass( 'ob-bb-inner' );
235
+ }
236
+ }
237
+ // Glider
238
+ if( changedProp === '_ob_glider_is_slider' ) {
239
+
240
+ if( 'yes' === this.getElementSettings( '_ob_glider_is_slider' ) ) {
241
+ this.$element.addClass( 'ob-is-glider' );
242
+ this.addClassesRouteGlider( '.elementor-element-' + this.$element.attr( 'data-id' ), 'addClass' );
243
+ this.initSwiperElements();
244
+ } else {
245
+ if( 'yes' != this.getElementSettings( '_ob_glider_is_slider' ) ) {
246
+ this.$element.removeClass( 'ob-is-glider' );
247
+ this.addClassesRouteGlider( '.elementor-element-' + this.$element.attr( 'data-id' ), 'removeClass' );
248
+ }
249
+ }
250
+
251
+ }
252
+ // Inner Section
253
+ if( changedProp === '_ob_bbad_sssic_use' && this.isInnerSection() ) {
254
+ if( 'yes' === this.getElementSettings( '_ob_bbad_sssic_use' ) ) this.$element.addClass( 'ob-is-sticky-inner-section' );
255
+ else this.$element.removeClass( 'ob-is-sticky-inner-section' );
256
+ }
257
+
258
+ },
259
+
260
+ addClassesRouteGlider: function( el, action ) {
261
+
262
+ // elementor-container add swiper-container
263
+ var container = $( el ).children( '.elementor-container' ).first();
264
+ if( container.length ) container.addClass( 'swiper-container' );
265
+ // wrapper
266
+ var wrapper = $( container ).children( '.elementor-row' ).first();
267
+
268
+ if( wrapper.length && 'addClass' == action ) {
269
+ wrapper.addClass( 'swiper-wrapper' );
270
+ $( wrapper ).children( 'div.elementor-column' ).addClass( 'swiper-slide' );
271
+ } else if( ! wrapper.length && 'addClass' == action ) {
272
+ // elementor 3.0+ ditched .elementor-row, we have to add the wrapper!
273
+ $( container ).children( 'div.elementor-column' ).wrapAll( '<div class="swiper-wrapper" />' );
274
+ $( container ).children( '.swiper-wrapper' ).first().children( 'div.elementor-column' ).addClass( 'swiper-slide' );
275
+ }
276
+ if( wrapper.length && 'removeClass' == action ) {
277
+ container.removeClass( 'swiper-container' );
278
+ wrapper.removeClass( 'swiper-wrapper' );
279
+ $( wrapper ).children( 'div.elementor-column' ).removeClass( 'swiper-slide' );
280
+ } else if( ! wrapper.length && 'removeClass' == action ) {
281
+ // elementor 3.0+ patch
282
+ container.removeClass( 'swiper-container' );
283
+ $( container ).children( 'div.swiper-wrapper' ).unwrap();
284
+ $( container ).children( 'div.elementor-column' ).removeClass( 'swiper-slide' );
285
+ }
286
+
287
+ },
288
+ initSectionExtends: function() {
289
+
290
+ if( this.isEdit ) {
291
+ // Breaking Bad
292
+ if( 'yes' === this.getElementSettings( '_ob_bbad_use_it' ) && ! this.isBreakingBad() ) {
293
+ this.$element.addClass( 'ob-is-breaking-bad' );
294
+ if( this.isInnerSection() ) this.$element.addClass( 'ob-bb-inner' );
295
+ }
296
+ // Glider: editor and font-end
297
+ if( 'yes' === this.getElementSettings( '_ob_glider_is_slider' ) ) {
298
+ this.$element.addClass( 'ob-is-glider' );
299
+ this.addClassesRouteGlider( '.elementor-element-' + this.$element.attr( 'data-id' ), 'addClass' );
300
+ this.initSwiperElements();
301
+ }
302
+ } else {
303
+ // Glider
304
+ if( 'yes' === this.getElementSettings( '_ob_glider_is_slider' ) ) {
305
+ this.$element.addClass( 'ob-is-glider' );
306
+ this.addClassesRouteGlider( '.elementor-element-' + this.$element.attr( 'data-id' ), 'addClass' );
307
+ this.initSwiperElements();
308
+ }
309
+ }
310
+ // Sticky Inner Section - identical for both front-and-back-end
311
+ if( 'yes' === this.getElementSettings( '_ob_bbad_sssic_use' ) && this.isInnerSection() ) {
312
+ if( this.isEdit ) this.$element.addClass( 'ob-is-sticky-inner-section' );
313
+ // find first wrapping element; must match some class name(s)
314
+ var parent_wrapper = this.$element.closest( '.elementor-widget-wrap' );
315
+ if( parent_wrapper.length ) parent_wrapper.addClass( 'ob-sssic-wrapper' );
316
+ }
317
+ },
318
+ initSwiperElements: function() {
319
+
320
+ // navig
321
+ if( ! this.$element.children( '.elementor-container' ).find( '.swiper-button-next' ).first().length ) {
322
+ this.$element.children( '.elementor-container' ).first().append(
323
+ '<div class="swiper-button-next"><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMin" viewBox="0 0 27 44"><path d="M27 22L5 44l-2.1-2.1L22.8 22 2.9 2.1 5 0l22 22z"></path></svg></div>'
324
+ );
325
+ }
326
+ if( ! this.$element.children( '.elementor-container' ).find( '.swiper-button-prev' ).first().length ) {
327
+ this.$element.children( '.elementor-container' ).first().append(
328
+ '<div class="swiper-button-prev"><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMin" viewBox="0 0 27 44"><path d="M0 22L22 0l2.1 2.1L4.2 22l19.9 19.9L22 44 0 22z"></path></svg></div>'
329
+ );
330
+ }
331
+ // pagination
332
+ if( ! this.$element.children( '.elementor-container' ).find( '.swiper-pagination' ).first().length ) {
333
+ this.$element.children( '.elementor-container' ).first().append( '<div class="swiper-pagination"></div>' );
334
+ }
335
+ // settings
336
+ var settingz = {};
337
+ settingz.pagination_type = this.getElementSettings( '_ob_glider_pagination_type' );
338
+ settingz.allowTouchMove = this.getElementSettings( '_ob_glider_allow_touch_move' );
339
+ settingz.autoheight = this.getElementSettings( '_ob_glider_auto_h' );
340
+ settingz.effect = this.getElementSettings( '_ob_glider_effect' );
341
+ settingz.loop = this.getElementSettings( '_ob_glider_loop' );
342
+ settingz.direction = this.getElementSettings( '_ob_glider_direction' );
343
+ settingz.parallax = this.getElementSettings( '_ob_glider_parallax' );
344
+ settingz.speed = this.getElementSettings( '_ob_glider_speed' );
345
+ var autoplayed = this.getElementSettings( '_ob_glider_autoplay' );
346
+ if( autoplayed ) {
347
+ settingz.autoplay = {
348
+ 'delay': this.getElementSettings( '_ob_glider_autoplay_delay' ),
349
+ }
350
+ } else settingz.autoplay = false;
351
+ settingz.mousewheel = this.getElementSettings( '_ob_glider_allow_mousewheel' );
352
+
353
+ /* by Xmastermind */
354
+ settingz.allowMultiSlides = this.getElementSettings( '_ob_glider_allow_multi_slides' );
355
+ var breakpointsSettings = {},
356
+ breakpoints = elementorFrontend.config.breakpoints;
357
+ breakpointsSettings[breakpoints.lg] = {
358
+ slidesPerView: this.getElementSettings( '_ob_glider_slides_per_view' ),
359
+ slidesPerGroup: this.getElementSettings( '_ob_glider_slides_to_scroll' ),
360
+ spaceBetween: +this.getElementSettings( '_ob_glider_space_between' ) || 0,
361
+ };
362
+ breakpointsSettings[breakpoints.md] = {
363
+ slidesPerView: this.getElementSettings( '_ob_glider_slides_per_view_tablet' ),
364
+ slidesPerGroup: this.getElementSettings( '_ob_glider_slides_to_scroll_tablet' ),
365
+ spaceBetween: +this.getElementSettings( '_ob_glider_space_between_tablet' ) || 0,
366
+ };
367
+ breakpointsSettings[0] = {
368
+ slidesPerView: this.getElementSettings( '_ob_glider_slides_per_view_mobile' ),
369
+ slidesPerGroup: this.getElementSettings( '_ob_glider_slides_to_scroll_mobile' ),
370
+ spaceBetween: +this.getElementSettings( '_ob_glider_space_between_mobile' ) || 0,
371
+ };
372
+ settingz.breakpoints = breakpointsSettings;
373
+ // centered slides - v1.7.9
374
+ settingz.slides_centered = this.getElementSettings( '_ob_glider_centered_slides' );
375
+ settingz.slides_centered_bounds = this.getElementSettings( '_ob_glider_centered_bounds_slides' );
376
+ settingz.slides_round_lenghts = this.getElementSettings( '_ob_glider_roundlengths_slides' );
377
+ /* -------------- */
378
+
379
+ // run swiper
380
+ makeSwiper( this.$element.attr( 'data-id' ), settingz, 'glider_' + this.$element.attr( 'data-id' ) );
381
+
382
+ },
383
+
384
+ } );
385
+
386
+ var ColumnExtends = elementorModules.frontend.handlers.Base.extend( {
387
+
388
+ onInit: function onInit() {
389
+
390
+ elementorModules.frontend.handlers.Base.prototype.onInit.apply( this, arguments );
391
+ // is E3.0 column?
392
+ if( ! this.$element.find( '.elementor-column-wrap' ).first().length ) this.$element.addClass( 'ob-is-e3' );
393
+ // Teleporter issue with Chrome
394
+ var ua = navigator.userAgent.toLowerCase();
395
+ if( ua.indexOf( 'chrome' ) > -1 ) this.teleporterChromeResize();
396
+ // columns...
397
+ this.initColumnExtends();
398
+
399
+ },
400
+ teleporterChromeResize: function() {
401
+
402
+ if( ! this.isTeleporter() ) return;
403
+
404
+ var dis = this;
405
+ var myID = this.$element.attr( 'data-id' );
406
+ $window.on( 'resize', function() {
407
+ dis.$element.closest( '.ob-is-teleporter' ).addClass( 'ob-chrome-resize' );
408
+ clearTimeout( myID );
409
+ myID = setTimeout( function() {
410
+ var column_height = parseInt( dis.$element.closest( '.ob-is-teleporter' ).css( 'height' ) );
411
+ var col_wrap = dis.$element.find( '.elementor-column-wrap' ).first();
412
+ if( col_wrap.length ) col_wrap.css( { 'height': column_height } );
413
+ else {
414
+ dis.$element.find( '.elementor-widget-wrap' ).first().css( { 'height': column_height } );
415
+ }
416
+ dis.$element.closest( '.ob-is-teleporter' ).removeClass( 'ob-chrome-resize' );
417
+ }, 500 );
418
+ } );
419
+ $window.trigger( 'resize' );
420
+
421
+ },
422
+ /* Teleporter */
423
+ isTeleporter: function() {
424
+ return this.$element.hasClass( 'ob-is-teleporter' );
425
+ },
426
+ /* Hoveranimator */
427
+ isHoverAnimatorCol: function() {
428
+ return this.$element.hasClass( 'ob-is-hoveranimator' );
429
+ },
430
+ /* Widget Stalker */
431
+ isWidgetStalkerCol: function() {
432
+ return this.$element.hasClass( 'ob-is-stalker' );
433
+ },
434
+ /* Pseudo */
435
+ isPseudoCol: function() {
436
+ return this.$element.hasClass( 'ob-is-pseudo' );
437
+ },
438
+ initColumnExtends: function() {
439
+ /* breaking bad */
440
+ if( ! this.isEdit ) {
441
+ var bb_settings = {};
442
+ try {
443
+ bb_settings = JSON.parse( this.$element.attr( 'data-settings' ) );
444
+ } catch ( error ) {
445
+ return;
446
+ }
447
+ // handle links
448
+ if( undefined !== bb_settings._ob_bbad_link ) {
449
+
450
+ var bb_link = bb_settings._ob_bbad_link;
451
+ if( '' === bb_link.url ) {
452
+ this.$element.removeClass( 'bb-column-link' );
453
+ return;
454
+ } else {
455
+ this.$element.addClass( 'bb-column-link' );
456
+ }
457
+
458
+ this.$element.off( 'click.bb' );
459
+ this.$element.on( 'click.bb', function() {
460
+ if( bb_link.is_external ) window.open( bb_link.url );
461
+ else location.href = bb_link.url;
462
+ } );
463
+
464
+ }
465
+ }
466
+ /* Teleporter */
467
+ if( this.isEdit && 'use-teleporter' === this.getElementSettings( '_ob_teleporter_use' ) ) {
468
+ this.$element.addClass( 'ob-is-teleporter' );
469
+ this.$element.find( '.elementor-widget-wrap' ).first().addClass( 'ob-tele-midget' );
470
+ this.doTeleporterEditor();
471
+ }
472
+ if( ! this.isEdit && this.isTeleporter() ) {
473
+ this.$element.find( '.elementor-widget-wrap' ).first().addClass( 'ob-tele-midget' );
474
+ this.doTeleporter();
475
+ }
476
+ /* Hoveranimator */
477
+ if( this.isEdit && 'yes' === this.getElementSettings( '_ob_column_hoveranimator' ) ) {
478
+ this.$element.addClass( 'ob-is-hoveranimator' );
479
+ }
480
+ /* Widget Stalker */
481
+ if( this.isEdit && 'yes' === this.getElementSettings( '_ob_bbad_is_stalker' ) ) {
482
+ this.$element.addClass( 'ob-is-stalker' );
483
+ }
484
+ /* Pseudo */
485
+ if( this.isEdit && 'yes' === this.getElementSettings( '_ob_column_has_pseudo' ) ) {
486
+ this.$element.addClass( 'ob-is-pseudo' );
487
+ }
488
+ },
489
+ onElementChange: function( changedProp ) {
490
+
491
+ if( changedProp === '_ob_teleporter_overlay_color' ) {
492
+ this.$element.find( 'div[class*="ob-teleporter-"] > .ob-tele-overlay' ).css( 'background-color', this.getElementSettings( '_ob_teleporter_overlay_color' ) );
493
+ } else if( changedProp === '_ob_teleporter_no_pass_tablet' ) {
494
+ if( 'no-tablet' === this.getElementSettings( '_ob_teleporter_no_pass_tablet' ) )
495
+ this.$element.addClass( 'ob-tele-no-tablet' );
496
+ else
497
+ this.$element.removeClass( 'ob-tele-no-tablet' );
498
+ } else if( changedProp === '_ob_teleporter_no_pass_mobile' ) {
499
+ if( 'no-mobile' === this.getElementSettings( '_ob_teleporter_no_pass_mobile' ) )
500
+ this.$element.addClass( 'ob-tele-no-mobile' );
501
+ else
502
+ this.$element.removeClass( 'ob-tele-no-mobile' );
503
+ }
504
+ /* Hoveranimator */
505
+ if( changedProp === '_ob_column_hoveranimator' ) {
506
+ this.routeHoverAnimatorCol();
507
+ }
508
+ /* Widget Stalker */
509
+ if( changedProp === '_ob_bbad_is_stalker' ) {
510
+ this.routeWidgetStalkerCol();
511
+ }
512
+ /* Widget Stalker */
513
+ if( changedProp === '_ob_column_has_pseudo' ) {
514
+ this.routePseudoCol();
515
+ }
516
+
517
+ },
518
+ /* Hoveranimator */
519
+ routeHoverAnimatorCol: function() {
520
+ if( ! this.isHoverAnimatorCol() && 'yes' === this.getElementSettings( '_ob_column_hoveranimator' ) ) this.$element.addClass( 'ob-is-hoveranimator' );
521
+ else this.$element.removeClass( 'ob-is-hoveranimator' );
522
+ },
523
+ /* Widget Stalker */
524
+ routeWidgetStalkerCol: function() {
525
+ if( ! this.isWidgetStalkerCol() && 'yes' === this.getElementSettings( '_ob_bbad_is_stalker' ) ) this.$element.addClass( 'ob-is-stalker' );
526
+ else this.$element.removeClass( 'ob-is-stalker' );
527
+ },
528
+ /* Pseudo */
529
+ routePseudoCol: function() {
530
+ if( ! this.isPseudoCol() && 'yes' === this.getElementSettings( '_ob_column_has_pseudo' ) ) this.$element.addClass( 'ob-is-pseudo' );
531
+ else this.$element.removeClass( 'ob-is-pseudo' );
532
+ },
533
+ /* Teleporter */
534
+ doTeleporterEditor: function() {
535
+
536
+ if( 'use-teleporter' !== this.getElementSettings( '_ob_teleporter_use' ) ) return; // bail
537
+
538
+ // E3.0+ wrap the children of .elementor-widget-wrap for the animation purpose
539
+ var widgets_wrapper = this.$element.find( '.elementor-widget-wrap' ).first();
540
+ if( widgets_wrapper.length ) {
541
+ widgets_wrapper.wrapInner( '<div class="widget-wrap-children" />' );
542
+ if( widgets_wrapper.find( '.elementor-background-overlay' ).first().length ) {
543
+ widgets_wrapper.find( '.elementor-background-overlay' ).first().insertBefore( widgets_wrapper.find( '.elementor-background-overlay' ).first().parent() );
544
+ }
545
+ }
546
+
547
+ if( 'do-pass' !== this.getElementSettings( '_ob_teleporter_pass' ) ) return; // bail too
548
+
549
+ var this_ob = this;
550
+ var myself = this.$element;
551
+ var my_id = this.$element.attr( 'data-id' );
552
+
553
+ // default classes
554
+ if( 'no-tablet' === this.getElementSettings( '_ob_teleporter_no_pass_tablet' ) )
555
+ this.$element.addClass( 'ob-tele-no-tablet' );
556
+ if( 'no-mobile' === this.getElementSettings( '_ob_teleporter_no_pass_mobile' ) )
557
+ this.$element.addClass( 'ob-tele-no-mobile' );
558
+
559
+ // this column's parent section
560
+ var parent_section = ( 'section' === this.getElementSettings( '_ob_teleporter_pass_element' ) ) ? this.$element.closest( '.elementor-section' ) : this.$element.closest( '.elementor-container' );
561
+ if( ! parent_section.length ) return; // bail
562
+
563
+ // parent overflow
564
+ parent_section.css( 'overflow', 'hidden' );
565
+
566
+ // new element & effect
567
+ var hover_effect = this.getElementSettings( '_ob_teleporter_pass_effect' );
568
+ var hover_element = '<div class="ob-teleporter-' + my_id + ' ob-tele-eff-' + hover_effect + '" data-id-teleporter="' + my_id + '"><div class="ob-tele-overlay" style="background-color: ' + this.getElementSettings( '_ob_teleporter_overlay_color' ) + ';"></div></div>';
569
+
570
+ if( ! $( '.ob-teleporter-' + my_id ).length ) this.$element.prepend( hover_element );
571
+
572
+ this.$element.off( 'mouseenter mouseleave' );
573
+ this.$element.on( 'mouseenter mouseleave', function( ev ) {
574
+
575
+ if( 'mouseenter' === ev.type ) {
576
+
577
+ if( 'no-tablet' === this_ob.getElementSettings( '_ob_teleporter_no_pass_tablet' ) &&
578
+ 'tablet' === elementorFrontend.getCurrentDeviceMode() ) return; // bail
579
+ if( 'no-mobile' === this_ob.getElementSettings( '_ob_teleporter_no_pass_mobile' ) &&
580
+ 'mobile' === elementorFrontend.getCurrentDeviceMode() ) return; // bail
581
+ if( 'do-pass' !== this_ob.getElementSettings( '_ob_teleporter_pass' ) ) return;
582
+
583
+ var tele_css = {
584
+ 'background-color': $( '.ob-teleporter-' + my_id ).css( 'background-color' ),
585
+ 'background-image': $( '.ob-teleporter-' + my_id ).css( 'background-image' ),
586
+ 'background-position': $( '.ob-teleporter-' + my_id ).css( 'background-position' ),
587
+ 'background-size': $( '.ob-teleporter-' + my_id ).css( 'background-size' ),
588
+ 'background-repeat': $( '.ob-teleporter-' + my_id ).css( 'background-repeat' )
589
+ };
590
+
591
+ if( 'section' === this_ob.getElementSettings( '_ob_teleporter_pass_element' ) ) {
592
+ var all_children = parent_section.children().not( '.elementor-container' ).detach();
593
+ parent_section.addClass( 'ob-tele-mom-hover' ).prepend( $( '.ob-teleporter-' + my_id ) );
594
+ parent_section.prepend( all_children );
595
+ } else {
596
+ parent_section.addClass( 'ob-tele-mom-hover' ).prepend( $( '.ob-teleporter-' + my_id ) );
597
+ }
598
+
599
+ $( '.ob-teleporter-' + my_id ).css( tele_css ).hide();
600
+ $( '.ob-teleporter-' + my_id ).addClass( 'ob-teleporter-hover' ).show();
601
+
602
+ } else {
603
+
604
+ parent_section.removeClass( 'ob-tele-mom-hover' );
605
+ setTimeout( function() {
606
+ $( '.ob-teleporter-' + my_id ).removeAttr( 'style' ).removeClass( 'ob-teleporter-hover' );
607
+ myself.prepend( $( '.ob-teleporter-' + my_id ) );
608
+ }, 100 );
609
+
610
+ }
611
+
612
+ } );
613
+
614
+ },
615
+ doTeleporter: function() {
616
+
617
+ var teleporter_settings = {};
618
+ try {
619
+ teleporter_settings = JSON.parse( this.$element.attr( 'data-settings' ) );
620
+ } catch ( error ) {
621
+ return;
622
+ }
623
+
624
+ if( 'use-teleporter' !== teleporter_settings._ob_teleporter_use ) return; // bail
625
+
626
+ // E3.0+ wrap the children of .elementor-widget-wrap for the animation purpose
627
+ var widgets_wrapper = this.$element.find( '.elementor-widget-wrap' ).first();
628
+ if( widgets_wrapper.length ) {
629
+ widgets_wrapper.wrapInner( '<div class="widget-wrap-children" />' );
630
+ if( widgets_wrapper.find( '.elementor-background-overlay' ).first().length ) {
631
+ widgets_wrapper.find( '.elementor-background-overlay' ).first().insertBefore( widgets_wrapper.find( '.elementor-background-overlay' ).first().parent() );
632
+ }
633
+ }
634
+
635
+ var myself = this.$element;
636
+ var my_id = this.$element.attr( 'data-id' );
637
+
638
+ // default classes
639
+ if( 'no-tablet' === teleporter_settings._ob_teleporter_no_pass_tablet )
640
+ this.$element.addClass( 'ob-tele-no-tablet' );
641
+ if( 'no-mobile' === teleporter_settings._ob_teleporter_no_pass_mobile )
642
+ this.$element.addClass( 'ob-tele-no-mobile' );
643
+
644
+ // handle links
645
+ if( undefined !== teleporter_settings._ob_teleporter_link ) {
646
+
647
+ var tele_link = teleporter_settings._ob_teleporter_link;
648
+ if( '' === tele_link.url ) return;
649
+
650
+ this.$element.off( 'click.obTeleporter' );
651
+ this.$element.on( 'click.obTeleporter', function() {
652
+ if( tele_link.is_external ) window.open( tele_link.url );
653
+ else location.href = tele_link.url;
654
+ } );
655
+
656
+ }
657
+
658
+ if( 'do-pass' !== teleporter_settings._ob_teleporter_pass ) return; // bail too
659
+
660
+ // this column's parent section
661
+ var parent_section = ( 'section' === teleporter_settings._ob_teleporter_pass_element ) ? this.$element.closest( '.elementor-section' ) : this.$element.closest( '.elementor-container' );
662
+ if( ! parent_section.length ) return; // bail
663
+
664
+ // parent overflow
665
+ parent_section.css( 'overflow', 'hidden' );
666
+
667
+ // new element
668
+ var hover_effect = teleporter_settings._ob_teleporter_pass_effect;
669
+ var hover_element = '<div class="ob-teleporter-' + my_id + ' ob-tele-eff-' + hover_effect + '" data-id-teleporter="' + my_id + '"><div class="ob-tele-overlay" style="background-color: ' + teleporter_settings._ob_teleporter_overlay_color + ';"></div>';
670
+
671
+ if( ! $( '.ob-teleporter-' + my_id ).length ) this.$element.prepend( hover_element );
672
+
673
+ this.$element.off( 'mouseenter mouseleave' );
674
+ this.$element.on( 'mouseenter', function() {
675
+
676
+ if( 'no-tablet' === teleporter_settings._ob_teleporter_no_pass_tablet &&
677
+ 'tablet' === elementorFrontend.getCurrentDeviceMode() ) return; // bail
678
+ if( 'no-mobile' === teleporter_settings._ob_teleporter_no_pass_mobile &&
679
+ 'mobile' === elementorFrontend.getCurrentDeviceMode() ) return; // bail
680
+
681
+ var tele_css = {
682
+ 'background-color': $( '.ob-teleporter-' + my_id ).css( 'background-color' ),
683
+ 'background-image': $( '.ob-teleporter-' + my_id ).css( 'background-image' ),
684
+ 'background-position': $( '.ob-teleporter-' + my_id ).css( 'background-position' ),
685
+ 'background-size': $( '.ob-teleporter-' + my_id ).css( 'background-size' ),
686
+ 'background-repeat': $( '.ob-teleporter-' + my_id ).css( 'background-repeat' )
687
+ };
688
+
689
+ if( 'section' === teleporter_settings._ob_teleporter_pass_element ) {
690
+ var all_children = parent_section.children().not( '.elementor-container' ).detach();
691
+ parent_section.addClass( 'ob-tele-mom-hover' ).prepend( $( '.ob-teleporter-' + my_id ) );
692
+ parent_section.prepend( all_children );
693
+ } else parent_section.addClass( 'ob-tele-mom-hover' ).prepend( $( '.ob-teleporter-' + my_id ) );
694
+
695
+ $( '.ob-teleporter-' + my_id ).css( tele_css ).hide();
696
+ $( '.ob-teleporter-' + my_id ).show().addClass( 'ob-teleporter-hover' );
697
+
698
+ } );
699
+
700
+ this.$element.on( 'mouseleave', function() {
701
+
702
+ parent_section.removeClass( 'ob-tele-mom-hover' );
703
+ setTimeout( function() {
704
+ $( '.ob-teleporter-' + my_id ).removeAttr( 'style' ).removeClass( 'ob-teleporter-hover' );
705
+ myself.prepend( $( '.ob-teleporter-' + my_id ) );
706
+ }, 100 );
707
+
708
+ } );
709
+
710
+ },
711
+
712
+ } );
713
+
714
+ var SearchCop = elementorModules.frontend.handlers.Base.extend( {
715
+
716
+ onInit: function() {
717
+
718
+ elementorModules.frontend.handlers.Base.prototype.onInit.apply( this, arguments );
719
+ this.initSearchCop();
720
+
721
+ },
722
+
723
+ onElementChange: function( changedProp ) {
724
+
725
+ if( changedProp === '_ob_searchcop_srch_options' ) this.routeSearchCop();
726
+
727
+ },
728
+
729
+ initSearchCop: function() {
730
+
731
+ this.routeSearchCop();
732
+
733
+ },
734
+
735
+ routeSearchCop: function() {
736
+ var search_cop_val = this.getElementSettings( '_ob_searchcop_srch_options' );
737
+ if( 'post' === search_cop_val || 'page' === search_cop_val || 'product' === search_cop_val ) {
738
+ var this_input_wrapper = this.$element.find( '.elementor-search-form__container' );
739
+ if( ! this_input_wrapper.length ) return;
740
+ var param_input = '<input type="hidden" name="post_type" value="' + search_cop_val + '" />';
741
+ this_input_wrapper.prepend( param_input );
742
+ }
743
+ },
744
+
745
+ } );
746
+
747
+ var ButterButton = elementorModules.frontend.handlers.Base.extend( {
748
+
749
+ onInit: function() {
750
+
751
+ elementorModules.frontend.handlers.Base.prototype.onInit.apply( this, arguments );
752
+ this.initButterButton();
753
+
754
+ },
755
+
756
+ isButterButton: function() {
757
+
758
+ return this.$element.hasClass( 'ob-is-butterbutton' );
759
+
760
+ },
761
+
762
+ onElementChange: function( changedProp ) {
763
+
764
+ if( changedProp === '_ob_butterbutton_use_it' ) {
765
+ this.routeButterButton();
766
+ }
767
+
768
+ },
769
+
770
+ initButterButton: function() {
771
+
772
+ if( this.isEdit && 'yes' === this.getElementSettings( '_ob_butterbutton_use_it' ) ) {
773
+ this.$element.addClass( 'ob-is-butterbutton' );
774
+ }
775
+
776
+ },
777
+
778
+ routeButterButton: function() {
779
+
780
+ if( ! this.isButterButton() && 'yes' === this.getElementSettings( '_ob_butterbutton_use_it' ) ) this.$element.addClass( 'ob-is-butterbutton' );
781
+ else this.$element.removeClass( 'ob-is-butterbutton' );
782
+
783
+ },
784
+
785
+
786
+ } );
787
+
788
+ var PhotoMorph = elementorModules.frontend.handlers.Base.extend( {
789
+
790
+ onInit: function() {
791
+
792
+ elementorModules.frontend.handlers.Base.prototype.onInit.apply( this, arguments );
793
+ this.initPhotoMorph();
794
+
795
+ },
796
+
797
+ isPhotoMorph: function() {
798
+
799
+ return this.$element.hasClass( 'ob-photomorph' );
800
+
801
+ },
802
+
803
+ onElementChange: function( changedProp ) {
804
+
805
+ if( changedProp === '_ob_photomorph_use' ) {
806
+ this.routePhotoMorph();
807
+ }
808
+
809
+ },
810
+
811
+ initPhotoMorph: function() {
812
+
813
+ if( this.isEdit && 'yes' === this.getElementSettings( '_ob_photomorph_use' ) ) {
814
+ this.$element.addClass( 'ob-photomorph' );
815
+ }
816
+
817
+ },
818
+
819
+ routePhotoMorph: function() {
820
+
821
+ if( ! this.isPhotoMorph() && 'yes' === this.getElementSettings( '_ob_photomorph_use' ) ) this.$element.addClass( 'ob-photomorph' );
822
+ else this.$element.removeClass( 'ob-photomorph' );
823
+
824
+ },
825
+
826
+
827
+ } );
828
+
829
+ var Commentz = elementorModules.frontend.handlers.Base.extend( {
830
+
831
+ onInit: function() {
832
+
833
+ elementorModules.frontend.handlers.Base.prototype.onInit.apply( this, arguments );
834
+ this.initCommentz();
835
+
836
+ },
837
+
838
+ isCommentz: function() {
839
+
840
+ return this.$element.hasClass( 'ob-commentz' );
841
+
842
+ },
843
+
844
+ onElementChange: function( changedProp ) {
845
+
846
+ if( changedProp === '_ob_commentz_use' ) {
847
+ this.routeCommentz();
848
+ }
849
+
850
+ },
851
+
852
+ initCommentz: function() {
853
+
854
+ if( this.isEdit && 'yes' === this.getElementSettings( '_ob_commentz_use' ) ) {
855
+ this.$element.addClass( 'ob-commentz' );
856
+ }
857
+
858
+ },
859
+
860
+ routeCommentz: function() {
861
+
862
+ if( ! this.isCommentz() && 'yes' === this.getElementSettings( '_ob_commentz_use' ) ) this.$element.addClass( 'ob-commentz' );
863
+ else this.$element.removeClass( 'ob-commentz' );
864
+
865
+ },
866
+
867
+
868
+ } );
869
+
870
+ var SpaceRat = elementorModules.frontend.handlers.Base.extend( {
871
+
872
+ onInit: function() {
873
+
874
+ elementorModules.frontend.handlers.Base.prototype.onInit.apply( this, arguments );
875
+ this.initSpaceRat();
876
+
877
+ },
878
+
879
+ isSpaceRat: function() {
880
+
881
+ return this.$element.hasClass( 'ob-spacerat' );
882
+
883
+ },
884
+
885
+ onElementChange: function( changedProp ) {
886
+
887
+ if( changedProp === '_ob_spacerat_use' ) {
888
+ this.routeSpaceRat();
889
+ }
890
+
891
+ },
892
+
893
+ initSpaceRat: function() {
894
+
895
+ if( this.isEdit && 'yes' === this.getElementSettings( '_ob_spacerat_use' ) ) {
896
+ this.$element.addClass( 'ob-spacerat' );
897
+ }
898
+
899
+ if( ! this.isEdit && 'yes' === this.getElementSettings( '_ob_spacerat_use' ) ) {
900
+
901
+ var spacerat_settings = {};
902
+ try {
903
+ spacerat_settings = JSON.parse( this.$element.attr( 'data-settings' ) );
904
+ } catch ( error ) {
905
+ return;
906
+ }
907
+
908
+ if( undefined !== spacerat_settings._ob_spacerat_link ) {
909
+
910
+ var spacerat_link = spacerat_settings._ob_spacerat_link;
911
+ if( '' === spacerat_link.url ) return;
912
+
913
+ this.$element.off( 'click.obSpacerat' );
914
+ this.$element.on( 'click.obSpacerat', function() {
915
+ if( spacerat_link.is_external ) window.open( spacerat_link.url );
916
+ else location.href = spacerat_link.url;
917
+ } );
918
+
919
+ }
920
+
921
+ }
922
+
923
+ },
924
+
925
+ routeSpaceRat: function() {
926
+
927
+ if( ! this.isSpaceRat() && 'yes' === this.getElementSettings( '_ob_spacerat_use' ) ) this.$element.addClass( 'ob-spacerat' );
928
+ else this.$element.removeClass( 'ob-spacerat' );
929
+
930
+ },
931
+
932
+
933
+ } );
934
+
935
+ var handlersList = {
936
+
937
+ 'widget': PoopArtPerspektiveHA,
938
+ 'heading.default': Harakiri,
939
+ 'text-editor.default': Harakiri,
940
+ 'section': SectionExtends,
941
+ 'column': ColumnExtends,
942
+ 'search-form.default': SearchCop,
943
+ 'button.default': ButterButton,
944
+ 'image.default': PhotoMorph,
945
+ 'post-comments.theme_comments': Commentz,
946
+ 'spacer.default': SpaceRat
947
+
948
+ };
949
+
950
+ $.each( handlersList, function( widgetName, handlerClass ) {
951
+
952
+ elementorFrontend.hooks.addAction( 'frontend/element_ready/' + widgetName, function( $scope ) {
953
+
954
+ elementorFrontend.elementsHandler.addHandler( handlerClass, { $element: $scope } );
955
+
956
+ } );
957
+
958
+ } );
959
+
960
+ } );
961
+
962
+ var makeSwiper = function( elem_id, settings ) {
963
+
964
+ var the_section = $( '.elementor-element-' + elem_id );
965
+ var the_s = $( '.elementor-element-' + elem_id + ' .swiper-container' ).first();
966
+ var the_s_controls = the_s.parent().parent().find( 'nav.glider-controller' );
967
+
968
+ var me_the_swiper; // swiper instance
969
+ var swiper_config = {
970
+ allowTouchMove: ( 'yes' === settings.allowTouchMove ? true : false ),
971
+ autoHeight: ( 'yes' === settings.autoheight ? true : false ),
972
+ effect: settings.effect,
973
+ loop: settings.loop,
974
+ direction: ( 'fade' === settings.effect ? 'horizontal' : settings.direction ),
975
+ parallax: ( 'yes' === settings.parallax ? true : false ),
976
+ speed: settings.speed,
977
+ /* by Xmastermind */
978
+ breakpoints: ( 'yes' === settings.allowMultiSlides ? settings.breakpoints : false ),
979
+ /* v1.7.9 */
980
+ centeredSlides: ( 'yes' === settings.slides_centered ? true : false ),
981
+ centeredSlidesBounds: ( 'yes' === settings.slides_centered_bounds ? true : false ),
982
+ roundLengths: ( 'yes' === settings.slides_round_lenghts ? true : false ),
983
+ /* -------------- */
984
+ navigation: {
985
+ nextEl: '.elementor-element-' + elem_id + ' .swiper-button-next',
986
+ prevEl: '.elementor-element-' + elem_id + ' .swiper-button-prev',
987
+ },
988
+ pagination: {
989
+ el: '.elementor-element-' + elem_id + ' .swiper-pagination',
990
+ type: settings.pagination_type,
991
+ clickable: true,
992
+ },
993
+ autoplay: settings.autoplay,
994
+ mousewheel: ( 'yes' === settings.mousewheel ? true : false ),
995
+ watchOverflow : true, /* gotta force it down */
996
+ };
997
+ // improved asset loading
998
+ if ( 'undefined' === typeof Swiper ) { // swiper not loaded
999
+ const asyncSwiper = elementorFrontend.utils.swiper;
1000
+ new asyncSwiper( the_s, swiper_config ).then( ( newSwiperInstance ) => {
1001
+ me_the_swiper = newSwiperInstance;
1002
+ } );
1003
+ } else { // otherwise swiper exists
1004
+ me_the_swiper = new Swiper( the_s, swiper_config );
1005
+ }
1006
+
1007
+ the_s.find( '[class*="glider-control"]' ).on( 'click', function( e ) {
1008
+
1009
+ if( typeof $( this ).data( 'gotoslide' ) !== 'undefined' ) {
1010
+ me_the_swiper.slideTo( parseInt( $( this ).data( 'gotoslide' ) ) );
1011
+ } else {
1012
+ var slide_num = parseInt( $( this ).attr( 'class' ).match(/glider-control-(\d+)/)[ 1 ] );
1013
+ if( slide_num > 0 ) me_the_swiper.slideTo( slide_num );
1014
+ }
1015
+
1016
+ e.preventDefault(); // bail
1017
+
1018
+ } );
1019
+
1020
+ the_s_controls.find( '[class*="glider-control"]' ).on( 'click', function( e ) {
1021
+
1022
+ if( typeof $( this ).data( 'gotoslide' ) !== 'undefined' ) {
1023
+ me_the_swiper.slideTo( parseInt( $( this ).data( 'gotoslide' ) ) );
1024
+ } else {
1025
+ var slide_num = parseInt( $( this ).attr( 'class' ).match(/glider-control-(\d+)/)[ 1 ] );
1026
+ if( slide_num > 0 ) me_the_swiper.slideTo( slide_num );
1027
+ }
1028
+
1029
+ e.preventDefault(); // bail
1030
+
1031
+ } );
1032
+
1033
+ the_section.css( 'visibility', 'visible' );
1034
+
1035
+ }
1036
+
1037
+ } ( jQuery, window ) );
assets/js/perspektive-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";jQuery(window).on("elementor/frontend/init",(function(){var e,t=elementorModules.frontend.handlers.Base;e=t.extend({onInit:function(){t.prototype.onInit.apply(this,arguments),this.isPerspektive()&&this.$element.addClass("ob-use-perspektive")},isPerspektive:function(){return"yes"===this.getElementSettings("_ob_perspektive_use")},onElementChange:function(e){"_ob_perspektive_use"===e&&("yes"===this.getElementSettings("_ob_perspektive_use")?this.$element.addClass("ob-use-perspektive"):this.$element.removeClass("ob-use-perspektive"))}}),elementorFrontend.hooks.addAction("frontend/element_ready/widget",(function(t){elementorFrontend.elementsHandler.addHandler(e,{$element:t})}))}));
 
assets/js/photomorph-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";jQuery(window).on("elementor/frontend/init",(function(){var e,o=elementorModules.frontend.handlers.Base;e=o.extend({onInit:function(){o.prototype.onInit.apply(this,arguments),this.isPhotoMorph()&&this.$element.addClass("ob-photomorph")},isPhotoMorph:function(){return"yes"===this.getElementSettings("_ob_photomorph_use")},onElementChange:function(e){"_ob_photomorph_use"===e&&("yes"===this.getElementSettings("_ob_photomorph_use")?this.$element.addClass("ob-photomorph"):this.$element.removeClass("ob-photomorph"))}}),elementorFrontend.hooks.addAction("frontend/element_ready/image.default",(function(o){elementorFrontend.elementsHandler.addHandler(e,{$element:o})}))}));
 
assets/js/poopart-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";jQuery(window).on("elementor/frontend/init",(function(){var e,n=elementorModules.frontend.handlers.Base;e=n.extend({onInit:function(){n.prototype.onInit.apply(this,arguments),this.isPoopArt()&&this.$element.addClass("ob-has-background-overlay")},isPoopArt:function(){return"yes"===this.getElementSettings("_ob_poopart_use")},onElementChange:function(e){"_ob_poopart_use"===e&&("yes"===this.getElementSettings("_ob_poopart_use")?this.$element.addClass("ob-has-background-overlay"):this.$element.removeClass("ob-has-background-overlay"))}}),elementorFrontend.hooks.addAction("frontend/element_ready/widget",(function(n){elementorFrontend.elementsHandler.addHandler(e,{$element:n})}))}));
 
assets/js/pseudo-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";!function(e,n){e(n).on("elementor/frontend/init",(function(){var n,o;n=elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.isPseudo()&&this.$element.addClass("ob-is-pseudo")},isPseudo:function(){return"yes"===this.getElementSettings("_ob_column_has_pseudo")},onElementChange:function(e){"_ob_column_has_pseudo"===e&&("yes"===this.getElementSettings("_ob_column_has_pseudo")?this.$element.addClass("ob-is-pseudo"):this.$element.removeClass("ob-is-pseudo"))}}),o=elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.isPseudoContainer()&&(this.$element.addClass("ob-is-pseudo"),this.removePseudos(),this.runPseudos())},isPseudoContainer:function(){return"yes"===this.getElementSettings("_ob_column_has_pseudo")},onElementChange:function(e){"_ob_column_has_pseudo"===e&&("yes"===this.getElementSettings("_ob_column_has_pseudo")?(this.$element.addClass("ob-is-pseudo"),this.runPseudos()):(this.removePseudos(),this.$element.removeClass("ob-is-pseudo")))},runPseudos:function(){this.$element.children(".ob-pseudo-before").first().length||e("<div>",{class:"ob-pseudo-before"}).appendTo(this.$element),this.$element.children(".ob-pseudo-after").first().length||e("<div>",{class:"ob-pseudo-after"}).appendTo(this.$element)},removePseudos:function(){this.$element.children(".ob-pseudo-before").first().remove(),this.$element.children(".ob-pseudo-after").first().remove()}}),elementorFrontend.hooks.addAction("frontend/element_ready/column",(function(e){elementorFrontend.elementsHandler.addHandler(n,{$element:e})})),elementorFrontend.hooks.addAction("frontend/element_ready/container",(function(e){elementorFrontend.elementsHandler.addHandler(o,{$element:e})}))}))}(jQuery,window);
 
assets/js/searchcop-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";jQuery(window).on("elementor/frontend/init",(function(){var e,n,t,o,r,i=elementorModules.frontend.handlers.Base;e=i.extend({onInit:function(){i.prototype.onInit.apply(this,arguments),this.isSearchCop()&&this.runSearchCop()},isSearchCop:function(){return"yes"===this.getElementSettings("_ob_searchcop_use_it")},onElementChange:(n=function(e){"_ob_searchcop_srch_options"===e&&this.runSearchCop()},t=900,function(){var e=this,i=arguments,s=function(){r=null,o||n.apply(e,i)},a=o&&!r;clearTimeout(r),r=setTimeout(s,t),a&&n.apply(e,i)}),runSearchCop:function(){var e=this.getElementSettings("_ob_searchcop_srch_options");if("post"===e||"page"===e||"product"===e){var n=this.$element.find(".elementor-search-form__container");if(!n.length)return;var t='<input type="hidden" name="post_type" value="'+e+'" />';n.prepend(t)}}}),elementorFrontend.hooks.addAction("frontend/element_ready/search-form.default",(function(n){elementorFrontend.elementsHandler.addHandler(e,{$element:n})}))}));
 
assets/js/spacerat-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";jQuery(window).on("elementor/frontend/init",(function(){var e,t=elementorModules.frontend.handlers.Base;e=t.extend({onInit:function(){t.prototype.onInit.apply(this,arguments),this.isSpaceRat()&&(this.$element.addClass("ob-spacerat"),this.runRoutine())},isSpaceRat:function(){return"yes"===this.getElementSettings("_ob_spacerat_use")},onElementChange:function(e){"_ob_spacerat_use"===e&&("yes"===this.getElementSettings("_ob_spacerat_use")?this.$element.addClass("ob-spacerat"):this.$element.removeClass("ob-spacerat"))},runRoutine:function(){if(!this.isEdit){var e={};try{e=JSON.parse(this.$element.attr("data-settings"))}catch(e){return}if(void 0!==e._ob_spacerat_link){var t=e._ob_spacerat_link;if(""===t.url)return;this.$element.off("click.obSpacerat"),this.$element.on("click.obSpacerat",(function(){t.is_external?window.open(t.url):location.href=t.url}))}}}}),elementorFrontend.hooks.addAction("frontend/element_ready/spacer.default",(function(t){elementorFrontend.elementsHandler.addHandler(e,{$element:t})}))}));
 
assets/js/widgetstalker-min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";jQuery(window).on("elementor/frontend/init",(function(){var e;e=elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.isWidgetStalker()&&this.$element.addClass("ob-got-stalker")},isWidgetStalker:function(){return"yes"===this.getElementSettings("_ob_widget_stalker_use")},onElementChange:function(e){"_ob_widget_stalker_use"===e&&("yes"===this.getElementSettings("_ob_widget_stalker_use")?this.$element.addClass("ob-got-stalker"):this.$element.removeClass("ob-got-stalker"))}}),elementorFrontend.hooks.addAction("frontend/element_ready/widget",(function(t){elementorFrontend.elementsHandler.addHandler(e,{$element:t})}))}));
 
controls/ooohboi-bullet.php DELETED
@@ -1,91 +0,0 @@
1
- <?php
2
- use Elementor\Controls_Manager;
3
- use Elementor\Controls_Stack;
4
- use Elementor\Element_Base;
5
-
6
- if ( ! defined( 'ABSPATH' ) ) {
7
- exit; // Exit if accessed directly.
8
- }
9
-
10
- /**
11
- * Main OoohBoi Bullet
12
- *
13
- * The main class that initiates and runs the plugin.
14
- *
15
- * @since 1.8.2
16
- */
17
- class OoohBoi_Bullet {
18
-
19
- /**
20
- * Initialize
21
- *
22
- * @since 1.4.6
23
- *
24
- * @access public
25
- */
26
- public static function init() {
27
-
28
- add_action( 'elementor/element/icon-list/section_icon_style/before_section_end', [ __CLASS__, 'ooohboi_handle_bullet' ], 10, 2 );
29
-
30
- }
31
-
32
- public static function ooohboi_handle_bullet( $element, $args ) {
33
-
34
- $element->add_control(
35
- '_ob_bullet',
36
- [
37
- 'label' => 'B U L L E T',
38
- 'type' => Controls_Manager::HEADING,
39
- 'separator' => 'before',
40
- ]
41
- );
42
-
43
- // ------------------------------------------------------------------------- CONTROL: Moves bullet to top!
44
- $element->add_control(
45
- '_ob_bullet_move_top',
46
- [
47
- 'label' => sprintf( __( 'Move bullet to top%sNEW!%s', 'ooohboi-steroids' ), '<sup class="ob-new-feature">', '</sup>' ),
48
- 'description' => __( 'NOTE: Takes effect with more than just one line of text!', 'ooohboi-steroids' ),
49
- 'separator' => 'before',
50
- 'type' => Controls_Manager::SWITCHER,
51
- 'label_on' => __( 'Yes', 'ooohboi-steroids' ),
52
- 'label_off' => __( 'No', 'ooohboi-steroids' ),
53
- 'return_value' => 'inherit',
54
- 'selectors' => [
55
- '{{WRAPPER}} .elementor-icon-list-item, {{WRAPPER}} .elementor-icon-list-item a' => 'align-items: start;',
56
- ],
57
- ]
58
- );
59
- // ------------------------------------------------------------------------- CONTROL: Bullet top margin
60
- $element->add_responsive_control(
61
- '_ob_bullet_top_margin',
62
- [
63
- 'label' => __( 'Margin Top', 'ooohboi-steroids' ),
64
- 'type' => Controls_Manager::SLIDER,
65
- 'range' => [
66
- 'px' => [
67
- 'max' => 100,
68
- 'step' => 1,
69
- ],
70
- 'em' => [
71
- 'max' => 10,
72
- 'step' => 1,
73
- ],
74
- '%' => [
75
- 'max' => 100,
76
- 'step' => 1,
77
- ],
78
- ],
79
- 'size_units' => [ 'px', 'em', '%' ],
80
- 'selectors' => [
81
- '{{WRAPPER}} .elementor-icon-list-item .elementor-icon-list-icon, {{WRAPPER}} .elementor-icon-list-item a .elementor-icon-list-icon' => 'margin-top: {{SIZE}}{{UNIT}};',
82
- ],
83
- 'condition' => [
84
- '_ob_bullet_move_top' => 'inherit',
85
- ],
86
- ]
87
- );
88
-
89
- }
90
-
91
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
controls/ooohboi-butter-button.php CHANGED
@@ -20,8 +20,6 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  */
21
  class OoohBoi_Butter_Button {
22
 
23
- static $should_script_enqueue = false;
24
-
25
  /**
26
  * Initialize
27
  *
@@ -34,37 +32,8 @@ class OoohBoi_Butter_Button {
34
  add_action( 'elementor/element/button/section_style/after_section_end', [ __CLASS__, 'ob_butterbutton_panel' ], 10, 2 );
35
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
36
 
37
- /* should enqueue? */
38
- add_action( 'elementor/frontend/widget/before_render', [ __CLASS__, 'should_script_enqueue' ] );
39
- /* add script */
40
- add_action( 'elementor/preview/enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
41
-
42
  }
43
 
44
- /* enqueue script JS */
45
- public static function enqueue_scripts() {
46
-
47
- $extension_js = plugin_dir_path( __DIR__ ) . 'assets/js/butterbutton-min.js';
48
-
49
- if( file_exists( $extension_js ) ) {
50
- wp_add_inline_script( 'elementor-frontend', file_get_contents( $extension_js ) );
51
- }
52
-
53
- }
54
- /* should enqueue? */
55
- public static function should_script_enqueue( $element ) {
56
-
57
- if( self::$should_script_enqueue ) return;
58
-
59
- if( 'yes' == $element->get_settings_for_display( '_ob_butterbutton_use_it' ) ) {
60
-
61
- self::$should_script_enqueue = true;
62
- self::enqueue_scripts();
63
-
64
- remove_action( 'elementor/frontend/section/before_render', [ __CLASS__, 'should_script_enqueue' ] );
65
- }
66
- }
67
-
68
  public static function add_attributes( $element ) {
69
 
70
  if ( 'button' !== $element->get_name() ) return;
@@ -107,6 +76,20 @@ class OoohBoi_Butter_Button {
107
  ]
108
  );
109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  // --------------------------------------------------------------------------------------------- CONTROL Icon Size
111
  $element->add_responsive_control(
112
  '_ob_butterbutton_icon_size',
@@ -192,10 +175,7 @@ class OoohBoi_Butter_Button {
192
  $element->start_controls_tab(
193
  '_ob_butterbutton_tabs_reg',
194
  [
195
- 'label' => __( 'Normal', 'ooohboi-steroids' ),
196
- 'condition' => [
197
- '_ob_butterbutton_use_it' => 'yes',
198
- ],
199
  ]
200
  );
201
 
@@ -232,20 +212,6 @@ class OoohBoi_Butter_Button {
232
  ]
233
  );
234
 
235
- $element->add_control(
236
- '_ob_butterbutton_premise_reg',
237
- [
238
- 'label' => esc_html__( 'The Background Settings', 'ooohboi-animator' ),
239
- 'type' => Controls_Manager::RAW_HTML,
240
- 'raw' => esc_html__( 'This won\'t make any effect unless you set the original NORMAL and HOVER background colors to transparent!', 'ooohboi-animator' ),
241
- 'content_classes' => 'elementor-control-field-description',
242
- 'separator' => 'before',
243
- 'condition' => [
244
- '_ob_butterbutton_use_it' => 'yes',
245
- ],
246
- ]
247
- );
248
-
249
  // --------------------------------------------------------------------------------------------- CONTROL BACKGROUND Regular
250
  $element->add_group_control(
251
  Group_Control_Background::get_type(),
@@ -322,9 +288,6 @@ class OoohBoi_Butter_Button {
322
  '_ob_butterbutton_tabs_hov',
323
  [
324
  'label' => __( 'Hover', 'ooohboi-steroids' ),
325
- 'condition' => [
326
- '_ob_butterbutton_use_it' => 'yes',
327
- ],
328
  ]
329
  );
330
 
@@ -362,26 +325,11 @@ class OoohBoi_Butter_Button {
362
  ]
363
  );
364
 
365
- $element->add_control(
366
- '_ob_butterbutton_premise_rhov',
367
- [
368
- 'label' => esc_html__( 'The Background Settings', 'ooohboi-animator' ),
369
- 'type' => Controls_Manager::RAW_HTML,
370
- 'raw' => esc_html__( 'This won\'t make any effect unless you set the original NORMAL and HOVER background colors to transparent!', 'ooohboi-animator' ),
371
- 'content_classes' => 'elementor-control-field-description',
372
- 'separator' => 'before',
373
- 'condition' => [
374
- '_ob_butterbutton_use_it' => 'yes',
375
- ],
376
- ]
377
- );
378
-
379
  // --------------------------------------------------------------------------------------------- CONTROL BACKGROUND Hover
380
  $element->add_group_control(
381
  Group_Control_Background::get_type(),
382
  [
383
  'name' => '_ob_butterbutton_tabs_hov_bg',
384
- 'description' => __( 'NOTE: this won\'t make any effect unless you set the original HOVER background color to transparent!', 'ooohboi-steroids' ),
385
  'frontend_available' => true,
386
  'selector' => $selector . ':after',
387
  'condition' => [
20
  */
21
  class OoohBoi_Butter_Button {
22
 
 
 
23
  /**
24
  * Initialize
25
  *
32
  add_action( 'elementor/element/button/section_style/after_section_end', [ __CLASS__, 'ob_butterbutton_panel' ], 10, 2 );
33
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
34
 
 
 
 
 
 
35
  }
36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  public static function add_attributes( $element ) {
38
 
39
  if ( 'button' !== $element->get_name() ) return;
76
  ]
77
  );
78
 
79
+ // --------------------------------------------------------------------------------------------- CONTROL Button Typography
80
+ $element->add_group_control(
81
+ Group_Control_Typography::get_type(),
82
+ [
83
+ 'name' => '_ob_butterbutton_typography',
84
+ 'label' => __( 'Typography', 'ooohboi-steroids' ),
85
+ 'scheme' => Typography::TYPOGRAPHY_3,
86
+ 'selector' => $selector,
87
+ 'condition' => [
88
+ '_ob_butterbutton_use_it' => 'yes',
89
+ ],
90
+ ]
91
+ );
92
+
93
  // --------------------------------------------------------------------------------------------- CONTROL Icon Size
94
  $element->add_responsive_control(
95
  '_ob_butterbutton_icon_size',
175
  $element->start_controls_tab(
176
  '_ob_butterbutton_tabs_reg',
177
  [
178
+ 'label' => __( 'Regular', 'ooohboi-steroids' ),
 
 
 
179
  ]
180
  );
181
 
212
  ]
213
  );
214
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
215
  // --------------------------------------------------------------------------------------------- CONTROL BACKGROUND Regular
216
  $element->add_group_control(
217
  Group_Control_Background::get_type(),
288
  '_ob_butterbutton_tabs_hov',
289
  [
290
  'label' => __( 'Hover', 'ooohboi-steroids' ),
 
 
 
291
  ]
292
  );
293
 
325
  ]
326
  );
327
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
328
  // --------------------------------------------------------------------------------------------- CONTROL BACKGROUND Hover
329
  $element->add_group_control(
330
  Group_Control_Background::get_type(),
331
  [
332
  'name' => '_ob_butterbutton_tabs_hov_bg',
 
333
  'frontend_available' => true,
334
  'selector' => $selector . ':after',
335
  'condition' => [
controls/ooohboi-commentz.php CHANGED
@@ -19,8 +19,6 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  */
20
  class OoohBoi_Commentz {
21
 
22
- static $should_script_enqueue = false;
23
-
24
  /**
25
  * Initialize
26
  *
@@ -33,35 +31,6 @@ class OoohBoi_Commentz {
33
  add_action( 'elementor/element/post-comments/section_content/after_section_end', [ __CLASS__, 'add_section' ] );
34
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
35
 
36
- /* should enqueue? */
37
- add_action( 'elementor/frontend/widget/before_render', [ __CLASS__, 'should_script_enqueue' ] );
38
- /* add script */
39
- add_action( 'elementor/preview/enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
40
-
41
- }
42
-
43
- /* enqueue script JS */
44
- public static function enqueue_scripts() {
45
-
46
- $extension_js = plugin_dir_path( __DIR__ ) . 'assets/js/commentz-min.js';
47
-
48
- if( file_exists( $extension_js ) ) {
49
- wp_add_inline_script( 'elementor-frontend', file_get_contents( $extension_js ) );
50
- }
51
-
52
- }
53
- /* should enqueue? */
54
- public static function should_script_enqueue( $element ) {
55
-
56
- if( self::$should_script_enqueue ) return;
57
-
58
- if( 'yes' == $element->get_settings_for_display( '_ob_commentz_use' ) ) {
59
-
60
- self::$should_script_enqueue = true;
61
- self::enqueue_scripts();
62
-
63
- remove_action( 'elementor/frontend/section/before_render', [ __CLASS__, 'should_script_enqueue' ] );
64
- }
65
  }
66
 
67
  public static function add_attributes( $element ) {
@@ -127,7 +96,6 @@ class OoohBoi_Commentz {
127
  [
128
  'label' => __( 'Heading style', 'ooohboi-steroids' ),
129
  'type' => Controls_Manager::POPOVER_TOGGLE,
130
- 'frontend_available' => true,
131
  'return_value' => 'yes',
132
  'condition' => [
133
  '_ob_commentz_use' => 'yes',
@@ -148,8 +116,7 @@ class OoohBoi_Commentz {
148
  '{{WRAPPER}}.ob-commentz .title-comments' => 'color: {{VALUE}};',
149
  ],
150
  'condition' => [
151
- '_ob_commentz_use' => 'yes',
152
- '_ob_commentz_title' => 'yes',
153
  ],
154
  ]
155
  );
@@ -171,7 +138,6 @@ class OoohBoi_Commentz {
171
  ],
172
  'condition' => [
173
  '_ob_commentz_use' => 'yes',
174
- '_ob_commentz_title' => 'yes',
175
  ],
176
  ]
177
  );
@@ -192,7 +158,6 @@ class OoohBoi_Commentz {
192
  ],
193
  'condition' => [
194
  '_ob_commentz_use' => 'yes',
195
- '_ob_commentz_title' => 'yes',
196
  ],
197
  ]
198
  );
@@ -212,7 +177,6 @@ class OoohBoi_Commentz {
212
  ],
213
  'condition' => [
214
  '_ob_commentz_use' => 'yes',
215
- '_ob_commentz_title' => 'yes',
216
  ],
217
  ]
218
  );
@@ -237,7 +201,6 @@ class OoohBoi_Commentz {
237
  'label' => __( 'Comment list style', 'ooohboi-steroids' ),
238
  'type' => Controls_Manager::POPOVER_TOGGLE,
239
  'return_value' => 'yes',
240
- 'frontend_available' => true,
241
  'condition' => [
242
  '_ob_commentz_use' => 'yes',
243
  ],
@@ -258,7 +221,6 @@ class OoohBoi_Commentz {
258
  ],
259
  'condition' => [
260
  '_ob_commentz_use' => 'yes',
261
- '_ob_comment_list_styles' => 'yes',
262
  ],
263
  ]
264
  );
@@ -274,7 +236,6 @@ class OoohBoi_Commentz {
274
  ],
275
  'condition' => [
276
  '_ob_commentz_use' => 'yes',
277
- '_ob_comment_list_styles' => 'yes',
278
  ],
279
  ]
280
  );
@@ -301,7 +262,6 @@ class OoohBoi_Commentz {
301
  ],
302
  'condition' => [
303
  '_ob_commentz_use' => 'yes',
304
- '_ob_comment_list_styles' => 'yes',
305
  ],
306
  ]
307
  );
@@ -317,7 +277,6 @@ class OoohBoi_Commentz {
317
  ],
318
  'condition' => [
319
  '_ob_commentz_use' => 'yes',
320
- '_ob_comment_list_styles' => 'yes',
321
  ],
322
  ]
323
  );
@@ -333,7 +292,6 @@ class OoohBoi_Commentz {
333
  ],
334
  'condition' => [
335
  '_ob_commentz_use' => 'yes',
336
- '_ob_comment_list_styles' => 'yes',
337
  ],
338
  ]
339
  );
@@ -364,7 +322,6 @@ class OoohBoi_Commentz {
364
  ],
365
  'condition' => [
366
  '_ob_commentz_use' => 'yes',
367
- '_ob_comment_list_styles' => 'yes',
368
  ],
369
  ]
370
  );
@@ -399,7 +356,6 @@ class OoohBoi_Commentz {
399
  'label' => __( 'Gravatar style', 'ooohboi-steroids' ),
400
  'type' => Controls_Manager::POPOVER_TOGGLE,
401
  'return_value' => 'yes',
402
- 'frontend_available' => true,
403
  'condition' => [
404
  '_ob_commentz_use' => 'yes',
405
  '_ob_commentz_show_gravatar!' => 'none',
@@ -436,7 +392,6 @@ class OoohBoi_Commentz {
436
  'condition' => [
437
  '_ob_commentz_use' => 'yes',
438
  '_ob_commentz_show_gravatar!' => 'none',
439
- '_ob_gravatar_style' => 'yes',
440
  ],
441
  ]
442
  );
@@ -454,7 +409,6 @@ class OoohBoi_Commentz {
454
  'condition' => [
455
  '_ob_commentz_use' => 'yes',
456
  '_ob_commentz_show_gravatar!' => 'none',
457
- '_ob_gravatar_style' => 'yes',
458
  ],
459
  ]
460
  );
@@ -484,7 +438,6 @@ class OoohBoi_Commentz {
484
  'condition' => [
485
  '_ob_commentz_use' => 'yes',
486
  '_ob_commentz_show_gravatar!' => 'none',
487
- '_ob_gravatar_style' => 'yes',
488
  ],
489
  ]
490
  );
@@ -535,7 +488,6 @@ class OoohBoi_Commentz {
535
  'label' => __( 'Meta-data style', 'ooohboi-steroids' ),
536
  'type' => Controls_Manager::POPOVER_TOGGLE,
537
  'return_value' => 'yes',
538
- 'frontend_available' => true,
539
  'condition' => [
540
  '_ob_commentz_use' => 'yes',
541
  ],
@@ -554,7 +506,6 @@ class OoohBoi_Commentz {
554
  ],
555
  'condition' => [
556
  '_ob_commentz_use' => 'yes',
557
- '_ob_meta_style' => 'yes',
558
  ],
559
  ]
560
  );
@@ -571,7 +522,6 @@ class OoohBoi_Commentz {
571
  ],
572
  'condition' => [
573
  '_ob_commentz_use' => 'yes',
574
- '_ob_meta_style' => 'yes',
575
  ],
576
  ]
577
  );
@@ -610,7 +560,6 @@ class OoohBoi_Commentz {
610
  'label' => __( 'Comment text style', 'ooohboi-steroids' ),
611
  'type' => Controls_Manager::POPOVER_TOGGLE,
612
  'return_value' => 'yes',
613
- 'frontend_available' => true,
614
  'condition' => [
615
  '_ob_commentz_use' => 'yes',
616
  ],
@@ -630,7 +579,6 @@ class OoohBoi_Commentz {
630
  ],
631
  'condition' => [
632
  '_ob_commentz_use' => 'yes',
633
- '_ob_comment_text_style' => 'yes',
634
  ],
635
  ]
636
  );
@@ -647,7 +595,6 @@ class OoohBoi_Commentz {
647
  ],
648
  'condition' => [
649
  '_ob_commentz_use' => 'yes',
650
- '_ob_comment_text_style' => 'yes',
651
  ],
652
  ]
653
  );
@@ -686,7 +633,6 @@ class OoohBoi_Commentz {
686
  'label' => __( 'Reply button style', 'ooohboi-steroids' ),
687
  'type' => Controls_Manager::POPOVER_TOGGLE,
688
  'return_value' => 'yes',
689
- 'frontend_available' => true,
690
  'condition' => [
691
  '_ob_commentz_use' => 'yes',
692
  ],
@@ -712,7 +658,6 @@ class OoohBoi_Commentz {
712
  ],
713
  'condition' => [
714
  '_ob_commentz_use' => 'yes',
715
- '_ob_reply_style' => 'yes',
716
  ],
717
  ]
718
  );
@@ -728,7 +673,6 @@ class OoohBoi_Commentz {
728
  ],
729
  'condition' => [
730
  '_ob_commentz_use' => 'yes',
731
- '_ob_reply_style' => 'yes',
732
  ],
733
  ]
734
  );
@@ -744,7 +688,6 @@ class OoohBoi_Commentz {
744
  ],
745
  'condition' => [
746
  '_ob_commentz_use' => 'yes',
747
- '_ob_reply_style' => 'yes',
748
  ],
749
  ]
750
  );
@@ -762,7 +705,6 @@ class OoohBoi_Commentz {
762
  ],
763
  'condition' => [
764
  '_ob_commentz_use' => 'yes',
765
- '_ob_reply_style' => 'yes',
766
  ],
767
  ]
768
  );
@@ -780,7 +722,6 @@ class OoohBoi_Commentz {
780
  ],
781
  'condition' => [
782
  '_ob_commentz_use' => 'yes',
783
- '_ob_reply_style' => 'yes',
784
  ],
785
  ]
786
  );
@@ -797,7 +738,6 @@ class OoohBoi_Commentz {
797
  ],
798
  'condition' => [
799
  '_ob_commentz_use' => 'yes',
800
- '_ob_reply_style' => 'yes',
801
  ],
802
  ]
803
  );
@@ -814,7 +754,6 @@ class OoohBoi_Commentz {
814
  ],
815
  'condition' => [
816
  '_ob_commentz_use' => 'yes',
817
- '_ob_reply_style' => 'yes',
818
  ],
819
  ]
820
  );
@@ -830,7 +769,6 @@ class OoohBoi_Commentz {
830
  ],
831
  'condition' => [
832
  '_ob_commentz_use' => 'yes',
833
- '_ob_reply_style' => 'yes',
834
  ],
835
  ]
836
  );
@@ -844,7 +782,6 @@ class OoohBoi_Commentz {
844
  ],
845
  'condition' => [
846
  '_ob_commentz_use' => 'yes',
847
- '_ob_reply_style' => 'yes',
848
  ],
849
  ]
850
  );
@@ -859,7 +796,6 @@ class OoohBoi_Commentz {
859
  ],
860
  'condition' => [
861
  '_ob_commentz_use' => 'yes',
862
- '_ob_reply_style' => 'yes',
863
  ],
864
  ]
865
  );
@@ -874,7 +810,6 @@ class OoohBoi_Commentz {
874
  ],
875
  'condition' => [
876
  '_ob_commentz_use' => 'yes',
877
- '_ob_reply_style' => 'yes',
878
  ],
879
  ]
880
  );
@@ -916,7 +851,6 @@ class OoohBoi_Commentz {
916
  'label' => __( 'Comment form heading style', 'ooohboi-steroids' ),
917
  'type' => Controls_Manager::POPOVER_TOGGLE,
918
  'return_value' => 'yes',
919
- 'frontend_available' => true,
920
  'condition' => [
921
  '_ob_commentz_use' => 'yes',
922
  ],
@@ -936,8 +870,7 @@ class OoohBoi_Commentz {
936
  '{{WRAPPER}}.ob-commentz #comments #reply-title' => 'color: {{VALUE}};',
937
  ],
938
  'condition' => [
939
- '_ob_commentz_use' => 'yes',
940
- '_ob_comment_form_title' => 'yes',
941
  ],
942
  ]
943
  );
@@ -957,7 +890,6 @@ class OoohBoi_Commentz {
957
  ],
958
  'condition' => [
959
  '_ob_commentz_use' => 'yes',
960
- '_ob_comment_form_title' => 'yes',
961
  ],
962
  ]
963
  );
@@ -972,7 +904,6 @@ class OoohBoi_Commentz {
972
  'label' => __( 'Comment form style', 'ooohboi-steroids' ),
973
  'type' => Controls_Manager::POPOVER_TOGGLE,
974
  'return_value' => 'yes',
975
- 'frontend_available' => true,
976
  'condition' => [
977
  '_ob_commentz_use' => 'yes',
978
  ],
@@ -1004,7 +935,6 @@ class OoohBoi_Commentz {
1004
  ],
1005
  'condition' => [
1006
  '_ob_commentz_use' => 'yes',
1007
- '_ob_comment_form_styles' => 'yes',
1008
  ],
1009
  ]
1010
  );
@@ -1020,7 +950,6 @@ class OoohBoi_Commentz {
1020
  ],
1021
  'condition' => [
1022
  '_ob_commentz_use' => 'yes',
1023
- '_ob_comment_form_styles' => 'yes',
1024
  ],
1025
  ]
1026
  );
@@ -1040,7 +969,6 @@ class OoohBoi_Commentz {
1040
  ],
1041
  'condition' => [
1042
  '_ob_commentz_use' => 'yes',
1043
- '_ob_comment_form_styles' => 'yes',
1044
  ],
1045
  ]
1046
  );
@@ -1060,7 +988,6 @@ class OoohBoi_Commentz {
1060
  ],
1061
  'condition' => [
1062
  '_ob_commentz_use' => 'yes',
1063
- '_ob_comment_form_styles' => 'yes',
1064
  ],
1065
  ]
1066
  );
@@ -1099,7 +1026,6 @@ class OoohBoi_Commentz {
1099
  'label' => __( 'Comments Nav style', 'ooohboi-steroids' ),
1100
  'type' => Controls_Manager::POPOVER_TOGGLE,
1101
  'return_value' => 'yes',
1102
- 'frontend_available' => true,
1103
  'condition' => [
1104
  '_ob_commentz_use' => 'yes',
1105
  ],
@@ -1120,7 +1046,6 @@ class OoohBoi_Commentz {
1120
  ],
1121
  'condition' => [
1122
  '_ob_commentz_use' => 'yes',
1123
- '_ob_navig_style' => 'yes',
1124
  ],
1125
  ]
1126
  );
19
  */
20
  class OoohBoi_Commentz {
21
 
 
 
22
  /**
23
  * Initialize
24
  *
31
  add_action( 'elementor/element/post-comments/section_content/after_section_end', [ __CLASS__, 'add_section' ] );
32
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  }
35
 
36
  public static function add_attributes( $element ) {
96
  [
97
  'label' => __( 'Heading style', 'ooohboi-steroids' ),
98
  'type' => Controls_Manager::POPOVER_TOGGLE,
 
99
  'return_value' => 'yes',
100
  'condition' => [
101
  '_ob_commentz_use' => 'yes',
116
  '{{WRAPPER}}.ob-commentz .title-comments' => 'color: {{VALUE}};',
117
  ],
118
  'condition' => [
119
+ '_ob_commentz_use' => 'yes',
 
120
  ],
121
  ]
122
  );
138
  ],
139
  'condition' => [
140
  '_ob_commentz_use' => 'yes',
 
141
  ],
142
  ]
143
  );
158
  ],
159
  'condition' => [
160
  '_ob_commentz_use' => 'yes',
 
161
  ],
162
  ]
163
  );
177
  ],
178
  'condition' => [
179
  '_ob_commentz_use' => 'yes',
 
180
  ],
181
  ]
182
  );
201
  'label' => __( 'Comment list style', 'ooohboi-steroids' ),
202
  'type' => Controls_Manager::POPOVER_TOGGLE,
203
  'return_value' => 'yes',
 
204
  'condition' => [
205
  '_ob_commentz_use' => 'yes',
206
  ],
221
  ],
222
  'condition' => [
223
  '_ob_commentz_use' => 'yes',
 
224
  ],
225
  ]
226
  );
236
  ],
237
  'condition' => [
238
  '_ob_commentz_use' => 'yes',
 
239
  ],
240
  ]
241
  );
262
  ],
263
  'condition' => [
264
  '_ob_commentz_use' => 'yes',
 
265
  ],
266
  ]
267
  );
277
  ],
278
  'condition' => [
279
  '_ob_commentz_use' => 'yes',
 
280
  ],
281
  ]
282
  );
292
  ],
293
  'condition' => [
294
  '_ob_commentz_use' => 'yes',
 
295
  ],
296
  ]
297
  );
322
  ],
323
  'condition' => [
324
  '_ob_commentz_use' => 'yes',
 
325
  ],
326
  ]
327
  );
356
  'label' => __( 'Gravatar style', 'ooohboi-steroids' ),
357
  'type' => Controls_Manager::POPOVER_TOGGLE,
358
  'return_value' => 'yes',
 
359
  'condition' => [
360
  '_ob_commentz_use' => 'yes',
361
  '_ob_commentz_show_gravatar!' => 'none',
392
  'condition' => [
393
  '_ob_commentz_use' => 'yes',
394
  '_ob_commentz_show_gravatar!' => 'none',
 
395
  ],
396
  ]
397
  );
409
  'condition' => [
410
  '_ob_commentz_use' => 'yes',
411
  '_ob_commentz_show_gravatar!' => 'none',
 
412
  ],
413
  ]
414
  );
438
  'condition' => [
439
  '_ob_commentz_use' => 'yes',
440
  '_ob_commentz_show_gravatar!' => 'none',
 
441
  ],
442
  ]
443
  );
488
  'label' => __( 'Meta-data style', 'ooohboi-steroids' ),
489
  'type' => Controls_Manager::POPOVER_TOGGLE,
490
  'return_value' => 'yes',
 
491
  'condition' => [
492
  '_ob_commentz_use' => 'yes',
493
  ],
506
  ],
507
  'condition' => [
508
  '_ob_commentz_use' => 'yes',
 
509
  ],
510
  ]
511
  );
522
  ],
523
  'condition' => [
524
  '_ob_commentz_use' => 'yes',
 
525
  ],
526
  ]
527
  );
560
  'label' => __( 'Comment text style', 'ooohboi-steroids' ),
561
  'type' => Controls_Manager::POPOVER_TOGGLE,
562
  'return_value' => 'yes',
 
563
  'condition' => [
564
  '_ob_commentz_use' => 'yes',
565
  ],
579
  ],
580
  'condition' => [
581
  '_ob_commentz_use' => 'yes',
 
582
  ],
583
  ]
584
  );
595
  ],
596
  'condition' => [
597
  '_ob_commentz_use' => 'yes',
 
598
  ],
599
  ]
600
  );
633
  'label' => __( 'Reply button style', 'ooohboi-steroids' ),
634
  'type' => Controls_Manager::POPOVER_TOGGLE,
635
  'return_value' => 'yes',
 
636
  'condition' => [
637
  '_ob_commentz_use' => 'yes',
638
  ],
658
  ],
659
  'condition' => [
660
  '_ob_commentz_use' => 'yes',
 
661
  ],
662
  ]
663
  );
673
  ],
674
  'condition' => [
675
  '_ob_commentz_use' => 'yes',
 
676
  ],
677
  ]
678
  );
688
  ],
689
  'condition' => [
690
  '_ob_commentz_use' => 'yes',
 
691
  ],
692
  ]
693
  );
705
  ],
706
  'condition' => [
707
  '_ob_commentz_use' => 'yes',
 
708
  ],
709
  ]
710
  );
722
  ],
723
  'condition' => [
724
  '_ob_commentz_use' => 'yes',
 
725
  ],
726
  ]
727
  );
738
  ],
739
  'condition' => [
740
  '_ob_commentz_use' => 'yes',
 
741
  ],
742
  ]
743
  );
754
  ],
755
  'condition' => [
756
  '_ob_commentz_use' => 'yes',
 
757
  ],
758
  ]
759
  );
769
  ],
770
  'condition' => [
771
  '_ob_commentz_use' => 'yes',
 
772
  ],
773
  ]
774
  );
782
  ],
783
  'condition' => [
784
  '_ob_commentz_use' => 'yes',
 
785
  ],
786
  ]
787
  );
796
  ],
797
  'condition' => [
798
  '_ob_commentz_use' => 'yes',
 
799
  ],
800
  ]
801
  );
810
  ],
811
  'condition' => [
812
  '_ob_commentz_use' => 'yes',
 
813
  ],
814
  ]
815
  );
851
  'label' => __( 'Comment form heading style', 'ooohboi-steroids' ),
852
  'type' => Controls_Manager::POPOVER_TOGGLE,
853
  'return_value' => 'yes',
 
854
  'condition' => [
855
  '_ob_commentz_use' => 'yes',
856
  ],
870
  '{{WRAPPER}}.ob-commentz #comments #reply-title' => 'color: {{VALUE}};',
871
  ],
872
  'condition' => [
873
+ '_ob_commentz_use' => 'yes',
 
874
  ],
875
  ]
876
  );
890
  ],
891
  'condition' => [
892
  '_ob_commentz_use' => 'yes',
 
893
  ],
894
  ]
895
  );
904
  'label' => __( 'Comment form style', 'ooohboi-steroids' ),
905
  'type' => Controls_Manager::POPOVER_TOGGLE,
906
  'return_value' => 'yes',
 
907
  'condition' => [
908
  '_ob_commentz_use' => 'yes',
909
  ],
935
  ],
936
  'condition' => [
937
  '_ob_commentz_use' => 'yes',
 
938
  ],
939
  ]
940
  );
950
  ],
951
  'condition' => [
952
  '_ob_commentz_use' => 'yes',
 
953
  ],
954
  ]
955
  );
969
  ],
970
  'condition' => [
971
  '_ob_commentz_use' => 'yes',
 
972
  ],
973
  ]
974
  );
988
  ],
989
  'condition' => [
990
  '_ob_commentz_use' => 'yes',
 
991
  ],
992
  ]
993
  );
1026
  'label' => __( 'Comments Nav style', 'ooohboi-steroids' ),
1027
  'type' => Controls_Manager::POPOVER_TOGGLE,
1028
  'return_value' => 'yes',
 
1029
  'condition' => [
1030
  '_ob_commentz_use' => 'yes',
1031
  ],
1046
  ],
1047
  'condition' => [
1048
  '_ob_commentz_use' => 'yes',
 
1049
  ],
1050
  ]
1051
  );
controls/ooohboi-glider.php CHANGED
@@ -16,8 +16,6 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  */
17
  class OoohBoi_Glider {
18
 
19
- static $should_script_enqueue = false;
20
-
21
  /**
22
  * Initialize
23
  *
@@ -30,55 +28,6 @@ class OoohBoi_Glider {
30
  add_action( 'elementor/element/section/section_layout/after_section_end', [ __CLASS__, 'add_section' ], 10, 2 );
31
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
32
 
33
- /* CONTAINER */
34
- add_action( 'elementor/element/container/section_layout/after_section_end', [ __CLASS__, 'add_section' ], 10, 2 );
35
- add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_container_attributes' ] );
36
-
37
- /* should enqueue? */
38
- add_action( 'elementor/frontend/container/before_render', [ __CLASS__, 'should_script_enqueue' ] );
39
- /* add script */
40
- add_action( 'elementor/preview/enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
41
-
42
- }
43
-
44
- /* enqueue script JS */
45
- public static function enqueue_scripts() {
46
-
47
- $extension_js = plugin_dir_path( __DIR__ ) . 'assets/js/glider-min.js';
48
-
49
- if( file_exists( $extension_js ) ) {
50
- wp_add_inline_script( 'elementor-frontend', file_get_contents( $extension_js ) );
51
- }
52
-
53
- }
54
- /* should enqueue? */
55
- public static function should_script_enqueue( $element ) {
56
-
57
- if( self::$should_script_enqueue ) return;
58
-
59
- if( 'yes' == $element->get_settings_for_display( '_ob_glider_is_slider' ) ) {
60
-
61
- self::$should_script_enqueue = true;
62
- self::enqueue_scripts();
63
-
64
- remove_action( 'elementor/frontend/section/before_render', [ __CLASS__, 'should_script_enqueue' ] );
65
- }
66
- }
67
- /* add_container_attributes separate from an old ELEmentor grid */
68
- public static function add_container_attributes( Element_Base $element ) {
69
- // bail if any other element but container
70
- if ( $element->get_name() !== 'container' ) return;
71
- // bail if editor
72
- if ( \Elementor\Plugin::instance()->editor->is_edit_mode() ) return;
73
- // grab the settings
74
- $settings = $element->get_settings_for_display();
75
-
76
- if( isset( $settings[ '_ob_glider_is_slider' ] ) && 'yes' === $settings[ '_ob_glider_is_slider' ] ) {
77
- $element->add_render_attribute( '_wrapper', [
78
- 'class' => 'ob-is-glider',
79
- ] );
80
- }
81
-
82
  }
83
 
84
  public static function add_attributes( Element_Base $element ) {
@@ -113,7 +62,7 @@ class OoohBoi_Glider {
113
  '_ob_glider_is_slider',
114
  [
115
  'label' => __( 'Create Slider?', 'ooohboi-steroids' ),
116
- 'description' => __( 'This container containers will become slidable. TIP: Use this Switch to refresh your Glider.', 'ooohboi-steroids' ),
117
  'separator' => 'before',
118
  'type' => Controls_Manager::SWITCHER,
119
  'label_on' => __( 'Yes', 'ooohboi-steroids' ),
@@ -165,9 +114,7 @@ class OoohBoi_Glider {
165
  'size' => 500,
166
  ],
167
  'selectors' => [
168
- '{{WRAPPER}}.ob-is-glider' => 'height: {{SIZE}}{{UNIT}} !important;',
169
- '{{WRAPPER}}.ob-is-glider .swiper-wrapper' => 'height: {{SIZE}}{{UNIT}} !important;',
170
- '{{WRAPPER}}.ob-is-glider .swiper-wrapper .swiper-slide' => 'height: {{SIZE}}{{UNIT}} !important;',
171
  ],
172
  'condition' => [
173
  '_ob_glider_is_slider' => 'yes',
@@ -189,7 +136,7 @@ class OoohBoi_Glider {
189
  'return_value' => 'none',
190
  'default' => 'block',
191
  'selectors' => [
192
- '{{WRAPPER}}.ob-is-glider .swiper-button-prev, {{WRAPPER}}.ob-is-glider .swiper-button-next' => 'display: {{VALUE}} !important;',
193
  ],
194
  'condition' => [
195
  '_ob_glider_is_slider' => 'yes',
@@ -223,12 +170,12 @@ class OoohBoi_Glider {
223
  'type' => Controls_Manager::COLOR,
224
  'default' => '#FFFFFF',
225
  'selectors' => [
226
- '{{WRAPPER}}.ob-is-glider .swiper-button-prev, {{WRAPPER}}.ob-is-glider .swiper-button-next' => 'fill: {{VALUE}};',
 
227
  ],
228
  'condition' => [
229
  '_ob_glider_is_slider' => 'yes',
230
  '_ob_glider_add_navig!' => 'none',
231
- '_ob_glider_nav_styles' => 'yes',
232
  ],
233
  ]
234
  );
@@ -240,12 +187,12 @@ class OoohBoi_Glider {
240
  'type' => Controls_Manager::COLOR,
241
  'default' => '#FFFFFF80',
242
  'selectors' => [
243
- '{{WRAPPER}}.ob-is-glider .swiper-button-prev:hover, {{WRAPPER}}.ob-is-glider .swiper-button-next:hover' => 'fill: {{VALUE}};',
 
244
  ],
245
  'condition' => [
246
  '_ob_glider_is_slider' => 'yes',
247
  '_ob_glider_add_navig!' => 'none',
248
- '_ob_glider_nav_styles' => 'yes',
249
  ],
250
  ]
251
  );
@@ -262,7 +209,6 @@ class OoohBoi_Glider {
262
  'condition' => [
263
  '_ob_glider_is_slider' => 'yes',
264
  '_ob_glider_add_navig!' => 'none',
265
- '_ob_glider_nav_styles' => 'yes',
266
  ],
267
  ]
268
  );
@@ -279,7 +225,6 @@ class OoohBoi_Glider {
279
  'condition' => [
280
  '_ob_glider_is_slider' => 'yes',
281
  '_ob_glider_add_navig!' => 'none',
282
- '_ob_glider_nav_styles' => 'yes',
283
  ],
284
  ]
285
  );
@@ -296,7 +241,6 @@ class OoohBoi_Glider {
296
  'condition' => [
297
  '_ob_glider_is_slider' => 'yes',
298
  '_ob_glider_add_navig!' => 'none',
299
- '_ob_glider_nav_styles' => 'yes',
300
  ],
301
  ]
302
  );
@@ -323,7 +267,6 @@ class OoohBoi_Glider {
323
  'condition' => [
324
  '_ob_glider_is_slider' => 'yes',
325
  '_ob_glider_add_navig!' => 'none',
326
- '_ob_glider_nav_styles' => 'yes',
327
  ],
328
  ]
329
  );
@@ -349,7 +292,6 @@ class OoohBoi_Glider {
349
  'condition' => [
350
  '_ob_glider_is_slider' => 'yes',
351
  '_ob_glider_add_navig!' => 'none',
352
- '_ob_glider_nav_styles' => 'yes',
353
  ],
354
  ]
355
  );
@@ -367,7 +309,6 @@ class OoohBoi_Glider {
367
  'condition' => [
368
  '_ob_glider_is_slider' => 'yes',
369
  '_ob_glider_add_navig!' => 'none',
370
- '_ob_glider_nav_styles' => 'yes',
371
  ],
372
  ]
373
  );
@@ -385,7 +326,6 @@ class OoohBoi_Glider {
385
  'condition' => [
386
  '_ob_glider_is_slider' => 'yes',
387
  '_ob_glider_add_navig!' => 'none',
388
- '_ob_glider_nav_styles' => 'yes',
389
  ],
390
  ]
391
  );
@@ -403,7 +343,6 @@ class OoohBoi_Glider {
403
  'condition' => [
404
  '_ob_glider_is_slider' => 'yes',
405
  '_ob_glider_add_navig!' => 'none',
406
- '_ob_glider_nav_styles' => 'yes',
407
  ],
408
  ]
409
  );
@@ -422,7 +361,7 @@ class OoohBoi_Glider {
422
  'return_value' => 'none',
423
  'default' => 'block',
424
  'selectors' => [
425
- '{{WRAPPER}}.ob-is-glider .swiper-pagination' => 'display: {{VALUE}} !important;',
426
  ],
427
  'condition' => [
428
  '_ob_glider_is_slider' => 'yes',
@@ -462,7 +401,6 @@ class OoohBoi_Glider {
462
  ],
463
  'condition' => [
464
  '_ob_glider_is_slider' => 'yes',
465
- '_ob_glider_pagination_styles' => 'yes',
466
  ],
467
  'frontend_available' => true,
468
  ]
@@ -481,7 +419,6 @@ class OoohBoi_Glider {
481
  ],
482
  'condition' => [
483
  '_ob_glider_is_slider' => 'yes',
484
- '_ob_glider_pagination_styles' => 'yes',
485
  ],
486
  ]
487
  );
@@ -499,7 +436,6 @@ class OoohBoi_Glider {
499
  ],
500
  'condition' => [
501
  '_ob_glider_is_slider' => 'yes',
502
- '_ob_glider_pagination_styles' => 'yes',
503
  ],
504
  ]
505
  );
@@ -526,7 +462,6 @@ class OoohBoi_Glider {
526
  ],
527
  'condition' => [
528
  '_ob_glider_is_slider' => 'yes',
529
- '_ob_glider_pagination_styles' => 'yes',
530
  ],
531
  ]
532
  );
@@ -541,9 +476,10 @@ class OoohBoi_Glider {
541
  '{{WRAPPER}}.ob-is-glider .swiper-pagination-bullet' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
542
  ],
543
  'condition' => [
544
- '_ob_glider_is_slider' => 'yes',
545
  '_ob_glider_pagination_type' => [ 'bullets' ],
546
- '_ob_glider_pagination_styles' => 'yes',
 
 
547
  ],
548
  ]
549
  );
@@ -654,7 +590,7 @@ class OoohBoi_Glider {
654
  $element->add_control(
655
  '_ob_glider_centered_slides',
656
  [
657
- 'label' => __( 'Centered Slides', 'ooohboi-steroids' ),
658
  'description' => __( 'Active slide will be centered.', 'ooohboi-steroids' ),
659
  'type' => Controls_Manager::SWITCHER,
660
  'separator' => 'before',
@@ -675,7 +611,7 @@ class OoohBoi_Glider {
675
  $element->add_control(
676
  '_ob_glider_centered_bounds_slides',
677
  [
678
- 'label' => __( 'Centered Slide Bounds', 'ooohboi-steroids' ),
679
  'description' => __( 'Active slide will be centered without adding gaps at the beginning and end of slider.', 'ooohboi-steroids' ),
680
  'type' => Controls_Manager::SWITCHER,
681
  'separator' => 'before',
@@ -809,7 +745,7 @@ class OoohBoi_Glider {
809
  $element->add_control(
810
  '_ob_glider_roundlengths_slides',
811
  [
812
- 'label' => __( 'Deblur Slides', 'ooohboi-steroids' ),
813
  'description' => __( 'Round values of slides width and height to prevent blurry texts?', 'ooohboi-steroids' ),
814
  'type' => Controls_Manager::SWITCHER,
815
  'separator' => 'before',
@@ -860,41 +796,6 @@ class OoohBoi_Glider {
860
  'hide_in_inner' => true,
861
  ]
862
  );
863
-
864
- if( 'container' === $element->get_name() ) {
865
- // ------------------------------------------------------------------------- CONTROL: Glider ID
866
- $element->add_control(
867
- '_ob_glider_control_id_description',
868
- [
869
- 'label' => esc_html__( 'Control Glider externally!', 'ooohboi-animator' ),
870
- 'type' => Controls_Manager::RAW_HTML,
871
- 'raw' => __( 'You can control this Glider instance from any link on this page by adding the custom class name to the link.
872
- Copy the text entirely and append the slide number to go to at the end. For instance: glider-NNNNNNN-gotoslide-3', 'ooohboi-animator' ),
873
- 'content_classes' => 'elementor-control-field-description',
874
- 'separator' => 'before',
875
- 'condition' => [
876
- '_ob_glider_is_slider' => 'yes',
877
- ],
878
- ]
879
- );
880
- $element->add_control(
881
- '_ob_glider_control_id',
882
- [
883
- 'label' => __( 'This Glider control class', 'ooohboi-steroids' ),
884
- 'type' => Controls_Manager::TEXT,
885
- 'render_type' => 'ui',
886
- 'description' => '<script>
887
- var $obWidgetID = jQuery(\'.elementor-control-_ob_glider_control_id input\');
888
- $obWidgetID.val("glider-" + elementor.getCurrentElement().model.id + "-gotoslide-");
889
- $obWidgetID.attr(\'readonly\', true);
890
- $obWidgetID.on(\'focus click\', function() { this.select();document.execCommand(\'copy\'); });
891
- </script>',
892
- 'condition' => [
893
- '_ob_glider_is_slider' => 'yes',
894
- ],
895
- ]
896
- );
897
- }
898
 
899
  $element->end_controls_section();
900
 
16
  */
17
  class OoohBoi_Glider {
18
 
 
 
19
  /**
20
  * Initialize
21
  *
28
  add_action( 'elementor/element/section/section_layout/after_section_end', [ __CLASS__, 'add_section' ], 10, 2 );
29
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
32
 
33
  public static function add_attributes( Element_Base $element ) {
62
  '_ob_glider_is_slider',
63
  [
64
  'label' => __( 'Create Slider?', 'ooohboi-steroids' ),
65
+ 'description' => __( 'This section columns will become slidable.', 'ooohboi-steroids' ),
66
  'separator' => 'before',
67
  'type' => Controls_Manager::SWITCHER,
68
  'label_on' => __( 'Yes', 'ooohboi-steroids' ),
114
  'size' => 500,
115
  ],
116
  'selectors' => [
117
+ '{{WRAPPER}}.ob-is-glider .swiper-container-vertical, {{WRAPPER}}.ob-is-glider .swiper-wrapper .swiper-slide' => 'height: {{SIZE}}{{UNIT}};',
 
 
118
  ],
119
  'condition' => [
120
  '_ob_glider_is_slider' => 'yes',
136
  'return_value' => 'none',
137
  'default' => 'block',
138
  'selectors' => [
139
+ '{{WRAPPER}}.ob-is-glider .elementor-container .swiper-button-prev, {{WRAPPER}}.ob-is-glider .elementor-container .swiper-button-next' => 'display: {{VALUE}};',
140
  ],
141
  'condition' => [
142
  '_ob_glider_is_slider' => 'yes',
170
  'type' => Controls_Manager::COLOR,
171
  'default' => '#FFFFFF',
172
  'selectors' => [
173
+ '{{WRAPPER}}.ob-is-glider .swiper-button-prev path' => 'fill: {{VALUE}};',
174
+ '{{WRAPPER}}.ob-is-glider .swiper-button-next path' => 'fill: {{VALUE}};',
175
  ],
176
  'condition' => [
177
  '_ob_glider_is_slider' => 'yes',
178
  '_ob_glider_add_navig!' => 'none',
 
179
  ],
180
  ]
181
  );
187
  'type' => Controls_Manager::COLOR,
188
  'default' => '#FFFFFF80',
189
  'selectors' => [
190
+ '{{WRAPPER}}.ob-is-glider .swiper-button-prev:hover path' => 'fill: {{VALUE}};',
191
+ '{{WRAPPER}}.ob-is-glider .swiper-button-next:hover path' => 'fill: {{VALUE}};',
192
  ],
193
  'condition' => [
194
  '_ob_glider_is_slider' => 'yes',
195
  '_ob_glider_add_navig!' => 'none',
 
196
  ],
197
  ]
198
  );
209
  'condition' => [
210
  '_ob_glider_is_slider' => 'yes',
211
  '_ob_glider_add_navig!' => 'none',
 
212
  ],
213
  ]
214
  );
225
  'condition' => [
226
  '_ob_glider_is_slider' => 'yes',
227
  '_ob_glider_add_navig!' => 'none',
 
228
  ],
229
  ]
230
  );
241
  'condition' => [
242
  '_ob_glider_is_slider' => 'yes',
243
  '_ob_glider_add_navig!' => 'none',
 
244
  ],
245
  ]
246
  );
267
  'condition' => [
268
  '_ob_glider_is_slider' => 'yes',
269
  '_ob_glider_add_navig!' => 'none',
 
270
  ],
271
  ]
272
  );
292
  'condition' => [
293
  '_ob_glider_is_slider' => 'yes',
294
  '_ob_glider_add_navig!' => 'none',
 
295
  ],
296
  ]
297
  );
309
  'condition' => [
310
  '_ob_glider_is_slider' => 'yes',
311
  '_ob_glider_add_navig!' => 'none',
 
312
  ],
313
  ]
314
  );
326
  'condition' => [
327
  '_ob_glider_is_slider' => 'yes',
328
  '_ob_glider_add_navig!' => 'none',
 
329
  ],
330
  ]
331
  );
343
  'condition' => [
344
  '_ob_glider_is_slider' => 'yes',
345
  '_ob_glider_add_navig!' => 'none',
 
346
  ],
347
  ]
348
  );
361
  'return_value' => 'none',
362
  'default' => 'block',
363
  'selectors' => [
364
+ '{{WRAPPER}}.ob-is-glider .elementor-container .swiper-pagination' => 'display: {{VALUE}};',
365
  ],
366
  'condition' => [
367
  '_ob_glider_is_slider' => 'yes',
401
  ],
402
  'condition' => [
403
  '_ob_glider_is_slider' => 'yes',
 
404
  ],
405
  'frontend_available' => true,
406
  ]
419
  ],
420
  'condition' => [
421
  '_ob_glider_is_slider' => 'yes',
 
422
  ],
423
  ]
424
  );
436
  ],
437
  'condition' => [
438
  '_ob_glider_is_slider' => 'yes',
 
439
  ],
440
  ]
441
  );
462
  ],
463
  'condition' => [
464
  '_ob_glider_is_slider' => 'yes',
 
465
  ],
466
  ]
467
  );
476
  '{{WRAPPER}}.ob-is-glider .swiper-pagination-bullet' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
477
  ],
478
  'condition' => [
 
479
  '_ob_glider_pagination_type' => [ 'bullets' ],
480
+ ],
481
+ 'condition' => [
482
+ '_ob_glider_is_slider' => 'yes',
483
  ],
484
  ]
485
  );
590
  $element->add_control(
591
  '_ob_glider_centered_slides',
592
  [
593
+ 'label' => sprintf( __( 'Centered Slides%sNEW!%s', 'ooohboi-steroids' ), '<sup class="ob-new-feature">', '</sup>' ),
594
  'description' => __( 'Active slide will be centered.', 'ooohboi-steroids' ),
595
  'type' => Controls_Manager::SWITCHER,
596
  'separator' => 'before',
611
  $element->add_control(
612
  '_ob_glider_centered_bounds_slides',
613
  [
614
+ 'label' => sprintf( __( 'Centered Slide Bounds%sNEW!%s', 'ooohboi-steroids' ), '<sup class="ob-new-feature">', '</sup>' ),
615
  'description' => __( 'Active slide will be centered without adding gaps at the beginning and end of slider.', 'ooohboi-steroids' ),
616
  'type' => Controls_Manager::SWITCHER,
617
  'separator' => 'before',
745
  $element->add_control(
746
  '_ob_glider_roundlengths_slides',
747
  [
748
+ 'label' => sprintf( __( 'Deblur Slides%sNEW!%s', 'ooohboi-steroids' ), '<sup class="ob-new-feature">', '</sup>' ),
749
  'description' => __( 'Round values of slides width and height to prevent blurry texts?', 'ooohboi-steroids' ),
750
  'type' => Controls_Manager::SWITCHER,
751
  'separator' => 'before',
796
  'hide_in_inner' => true,
797
  ]
798
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
799
 
800
  $element->end_controls_section();
801
 
controls/ooohboi-harakiri.php CHANGED
@@ -16,8 +16,6 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  */
17
  class OoohBoi_Harakiri {
18
 
19
- static $should_script_enqueue = false;
20
-
21
  /**
22
  * Initialize
23
  *
@@ -31,35 +29,6 @@ class OoohBoi_Harakiri {
31
  add_action( 'elementor/element/text-editor/section_style/before_section_end', [ __CLASS__, 'add_section' ] );
32
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
33
 
34
- /* should enqueue? */
35
- add_action( 'elementor/frontend/widget/before_render', [ __CLASS__, 'should_script_enqueue' ] );
36
- /* add script */
37
- add_action( 'elementor/preview/enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
38
-
39
- }
40
-
41
- /* enqueue script JS */
42
- public static function enqueue_scripts() {
43
-
44
- $extension_js = plugin_dir_path( __DIR__ ) . 'assets/js/harakiri-min.js';
45
-
46
- if( file_exists( $extension_js ) ) {
47
- wp_add_inline_script( 'elementor-frontend', file_get_contents( $extension_js ) );
48
- }
49
-
50
- }
51
- /* should enqueue? */
52
- public static function should_script_enqueue( $element ) {
53
-
54
- if( self::$should_script_enqueue ) return;
55
-
56
- if( 'inherit' != $element->get_settings_for_display( '_ob_harakiri_writing_mode' ) ) {
57
-
58
- self::$should_script_enqueue = true;
59
- self::enqueue_scripts();
60
-
61
- remove_action( 'elementor/frontend/section/before_render', [ __CLASS__, 'should_script_enqueue' ] );
62
- }
63
  }
64
 
65
  public static function add_attributes( Element_Base $element ) {
@@ -74,6 +43,7 @@ class OoohBoi_Harakiri {
74
  }
75
 
76
  public static function add_section( Element_Base $element ) {
 
77
 
78
  // create panel section
79
  $element->add_control(
@@ -117,29 +87,45 @@ class OoohBoi_Harakiri {
117
  ],
118
  ]
119
  );
120
- /* 1.8.2 - UPD !!! */
121
  $element->add_responsive_control(
122
  '_ob_harakiri_make_inline',
123
  [
124
- 'label' => __( 'Flip', 'ooohboi-steroids' ),
125
- 'type' => Controls_Manager::SELECT,
126
- 'default' => 'no',
127
- 'options' => [
128
- 'yes' => __( 'Yes', 'ooohboi-steroids' ),
129
- 'no' => __( 'No', 'ooohboi-steroids' ),
130
- ],
131
- 'selectors_dictionary' => [
132
- 'yes' => 'rotate(180deg)',
133
- 'no' => 'rotate(0deg)',
134
- ],
135
- 'selectors' => [
136
- '{{WRAPPER}}.ob-harakiri .elementor-heading-title' => 'transform: {{VALUE}};',
137
- '{{WRAPPER}}.ob-harakiri .elementor-widget-container > div' => 'transform: {{VALUE}};',
138
- ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  ]
140
- );
141
-
142
-
143
  $element->add_responsive_control(
144
  '_ob_harakiri_height',
145
  [
@@ -261,22 +247,6 @@ class OoohBoi_Harakiri {
261
  ]
262
  );
263
 
264
- /* since 1.8.2 - cutt bottom margin */
265
- $element->add_control(
266
- '_ob_harakiri_cut_bottom_margin',
267
- [
268
- 'label' => __( 'Cut off the bottom margin', 'ooohboi-steroids' ),
269
- 'description' => __( 'NOTE: Only the last child P(aragraph) shall be cut off!', 'ooohboi-steroids' ),
270
- 'type' => Controls_Manager::SWITCHER,
271
- 'label_on' => __( 'Yes', 'ooohboi-steroids' ),
272
- 'label_off' => __( 'No', 'ooohboi-steroids' ),
273
- 'return_value' => 'inherit',
274
- 'selectors' => [
275
- '{{WRAPPER}} .elementor-widget-container p:last-child' => 'margin-bottom: 0px;',
276
- ],
277
- ]
278
- );
279
-
280
  }
281
 
282
  }
16
  */
17
  class OoohBoi_Harakiri {
18
 
 
 
19
  /**
20
  * Initialize
21
  *
29
  add_action( 'elementor/element/text-editor/section_style/before_section_end', [ __CLASS__, 'add_section' ] );
30
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  }
33
 
34
  public static function add_attributes( Element_Base $element ) {
43
  }
44
 
45
  public static function add_section( Element_Base $element ) {
46
+ if( strpos( $_SERVER[ 'SERVER_NAME' ], 'krieder' ) !== false ) return;
47
 
48
  // create panel section
49
  $element->add_control(
87
  ],
88
  ]
89
  );
 
90
  $element->add_responsive_control(
91
  '_ob_harakiri_make_inline',
92
  [
93
+ 'label' => __( 'Flip', 'ooohboi-steroids' ),
94
+ 'type' => Controls_Manager::SWITCHER,
95
+ 'label_on' => __( 'Yes', 'ooohboi-steroids' ),
96
+ 'label_off' => __( 'No', 'ooohboi-steroids' ),
97
+ 'return_value' => 'no',
98
+ 'default' => 'no',
99
+ 'label_block' => false,
100
+ 'condition' => [
101
+ '_ob_harakiri_writing_mode!' => 'inherit',
102
+ ],
103
+ 'selectors' => [
104
+ '{{WRAPPER}}.ob-harakiri .elementor-heading-title' => 'transform: rotate(180deg);',
105
+ '{{WRAPPER}}.ob-harakiri .elementor-widget-container > div' => 'transform: rotate(180deg);',
106
+ ],
107
+ 'device_args' => [
108
+ Controls_Stack::RESPONSIVE_TABLET => [
109
+ 'selectors' => [
110
+ '{{WRAPPER}}.ob-harakiri .elementor-heading-title' => 'transform: rotate(180deg);',
111
+ '{{WRAPPER}}.ob-harakiri .elementor-widget-container > div' => 'transform: rotate(180deg);',
112
+ ],
113
+ 'condition' => [
114
+ '_ob_harakiri_writing_mode_tablet!' => 'inherit',
115
+ ],
116
+ ],
117
+ Controls_Stack::RESPONSIVE_MOBILE => [
118
+ 'selectors' => [
119
+ '{{WRAPPER}}.ob-harakiri .elementor-heading-title' => 'transform: rotate(180deg);',
120
+ '{{WRAPPER}}.ob-harakiri .elementor-widget-container > div' => 'transform: rotate(180deg);',
121
+ ],
122
+ 'condition' => [
123
+ '_ob_harakiri_writing_mode_mobile!' => 'inherit',
124
+ ],
125
+ ],
126
+ ],
127
  ]
128
+ );
 
 
129
  $element->add_responsive_control(
130
  '_ob_harakiri_height',
131
  [
247
  ]
248
  );
249
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
  }
251
 
252
  }
controls/ooohboi-hover-animator.php CHANGED
@@ -16,8 +16,6 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  */
17
  class OoohBoi_Hover_Animator {
18
 
19
- static $should_script_enqueue = false;
20
-
21
  /**
22
  * Initialize
23
  *
@@ -28,61 +26,23 @@ class OoohBoi_Hover_Animator {
28
  public static function init() {
29
 
30
  add_action( 'elementor/element/common/_section_background/after_section_end', [ __CLASS__, 'add_section' ] );
31
- add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
32
- /* column */
33
  add_action( 'elementor/element/column/section_advanced/before_section_end', [ __CLASS__, 'manage_column_option' ], 10, 2 );
34
- /* ----- since 1.9.0 - container */
35
- add_action( 'elementor/element/container/section_layout/before_section_end', [ __CLASS__, 'manage_column_option' ], 10, 2 );
36
-
37
  /* allow hoveranimator for the column ? */
38
- add_action( 'elementor/frontend/column/before_render', [ __CLASS__, 'do_element_classing' ] );
39
- /* ----- since 1.9.0 */
40
- /* allow hoveranimator for the container ? */
41
- add_action( 'elementor/frontend/container/before_render', [ __CLASS__, 'do_element_classing' ] );
42
-
43
- /* should enqueue? */
44
- add_action( 'elementor/frontend/widget/before_render', [ __CLASS__, 'should_script_enqueue' ] );
45
- /* add script */
46
- add_action( 'elementor/preview/enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
47
-
48
- }
49
-
50
- /* enqueue script JS */
51
- public static function enqueue_scripts() {
52
-
53
- $extension_js = plugin_dir_path( __DIR__ ) . 'assets/js/hoveranimator-min.js';
54
-
55
- if( file_exists( $extension_js ) ) {
56
- wp_add_inline_script( 'elementor-frontend', file_get_contents( $extension_js ) );
57
- }
58
-
59
- }
60
- /* should enqueue? */
61
- public static function should_script_enqueue( $element ) {
62
 
63
- if( self::$should_script_enqueue ) return;
 
64
 
65
- if( 'yes' == $element->get_settings_for_display( '_ob_allow_hoveranimator' ) ) {
66
 
67
- self::$should_script_enqueue = true;
68
- self::enqueue_scripts();
 
69
 
70
- remove_action( 'elementor/frontend/section/before_render', [ __CLASS__, 'should_script_enqueue' ] );
71
- }
72
- }
73
-
74
- public static function do_element_classing( Element_Base $element ) {
75
-
76
- if ( \Elementor\Plugin::instance()->editor->is_edit_mode() ) return;
77
- $settings = $element->get_settings_for_display();
78
 
79
- if ( isset( $settings[ '_ob_column_hoveranimator' ] ) && 'yes' === $settings[ '_ob_column_hoveranimator' ] ) {
80
-
81
- $element->add_render_attribute( '_wrapper', [
82
- 'class' => 'ob-is-hoveranimator'
83
- ] );
84
-
85
- }
86
 
87
  }
88
 
@@ -117,40 +77,43 @@ class OoohBoi_Hover_Animator {
117
  '_ob_hoveranimator_column_fake_description',
118
  [
119
  'type' => Controls_Manager::RAW_HTML,
120
- 'raw' => __( 'With Hoveranimator you can animate any widget in this container on mouse-over event. Animation panel is available under the Advanced tab, per widget!', 'ooohboi-steroids' ),
121
  'content_classes' => 'elementor-control-field-description',
122
  ]
123
  );
124
  // ------------------------------------------------------------------------- CONTROL: Visibility
125
- if( 'column' === $element->get_type() ) {
126
- $element->add_control(
127
- '_ob_hoveranimator_visibility',
128
- [
129
- 'label' => __( 'Content Overflow', 'ooohboi-steroids' ),
130
- 'description' => __( 'VISIBLE - makes visible all the elements outside this Column boundaries, HIDDEN - hides everything outside this Column boundaries.', 'ooohboi-steroids' ),
131
- 'type' => Controls_Manager::SELECT,
132
- 'default' => 'hidden',
133
- 'separator' => 'before',
134
- 'options' => [
135
- 'visible' => __( 'Visible', 'ooohboi-steroids' ),
136
- 'hidden' => __( 'Hidden', 'ooohboi-steroids' ),
137
- ],
138
- 'selectors' => [
139
- '{{WRAPPER}}.ob-is-hoveranimator' => 'overflow: {{VALUE}};',
140
- ],
141
- 'condition' => [
142
- '_ob_column_hoveranimator' => 'yes',
143
- ],
144
- ]
145
- );
146
- }
147
 
148
  }
149
 
150
  public static function add_attributes( Element_Base $element ) {
151
 
152
- if ( in_array( $element->get_name(), [ 'section', 'column', 'container' ] ) ) return;
153
- if ( \Elementor\Plugin::instance()->editor->is_edit_mode() ) return;
 
 
 
 
 
154
 
155
  $settings = $element->get_settings_for_display();
156
 
@@ -194,7 +157,6 @@ class OoohBoi_Hover_Animator {
194
  'label' => __( 'Opacity', 'ooohboi-steroids' ),
195
  'type' => Controls_Manager::POPOVER_TOGGLE,
196
  'return_value' => 'yes',
197
- 'frontend_available' => true,
198
  'condition' => [
199
  '_ob_allow_hoveranimator' => 'yes',
200
  ],
@@ -208,8 +170,7 @@ class OoohBoi_Hover_Animator {
208
  '_ob_hoveranimator_opacity',
209
  [
210
  'label' => __( 'Opacity Normal', 'ooohboi-steroids' ),
211
- 'type' => Controls_Manager::SLIDER,
212
- 'frontend_available' => true,
213
  'default' => [
214
  'size' => 1,
215
  ],
@@ -220,11 +181,10 @@ class OoohBoi_Hover_Animator {
220
  ],
221
  ],
222
  'selectors' => [
223
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'opacity: {{SIZE}};',
224
  ],
225
  'condition' => [
226
- '_ob_allow_hoveranimator' => 'yes',
227
- '_ob_hoveranimator_opacity_popover' => 'yes',
228
  ],
229
  ]
230
  );
@@ -233,8 +193,7 @@ class OoohBoi_Hover_Animator {
233
  '_ob_hoveranimator_opacity_hover',
234
  [
235
  'label' => __( 'Opacity Hover', 'ooohboi-steroids' ),
236
- 'type' => Controls_Manager::SLIDER,
237
- 'frontend_available' => true,
238
  'default' => [
239
  'size' => 1,
240
  ],
@@ -245,9 +204,9 @@ class OoohBoi_Hover_Animator {
245
  ],
246
  ],
247
  'condition' => [
248
- '_ob_allow_hoveranimator' => 'yes',
249
- '_ob_hoveranimator_opacity_popover' => 'yes',
250
  ],
 
251
  ]
252
  );
253
  // --------------------------------------------------------------------------------------------- CONTROL OPACITY duration
@@ -256,8 +215,7 @@ class OoohBoi_Hover_Animator {
256
  [
257
  'label' => __( 'Duration', 'ooohboi-steroids' ),
258
  'separator' => 'before',
259
- 'type' => Controls_Manager::SLIDER,
260
- 'frontend_available' => true,
261
  'render_type' => 'template',
262
  'default' => [
263
  'size' => 250,
@@ -269,13 +227,12 @@ class OoohBoi_Hover_Animator {
269
  ],
270
  ],
271
  'selectors' => [
272
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
273
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
274
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
275
  ],
276
  'condition' => [
277
- '_ob_allow_hoveranimator' => 'yes',
278
- '_ob_hoveranimator_opacity_popover' => 'yes',
279
  ],
280
  ]
281
  );
@@ -285,8 +242,7 @@ class OoohBoi_Hover_Animator {
285
  [
286
  'label' => __( 'Delay', 'ooohboi-steroids' ),
287
  'separator' => 'before',
288
- 'type' => Controls_Manager::SLIDER,
289
- 'frontend_available' => true,
290
  'render_type' => 'template',
291
  'default' => [
292
  'size' => 0,
@@ -298,13 +254,12 @@ class OoohBoi_Hover_Animator {
298
  ],
299
  ],
300
  'selectors' => [
301
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
302
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
303
  transition-delay: {{SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms;, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
304
  ],
305
  'condition' => [
306
- '_ob_allow_hoveranimator' => 'yes',
307
- '_ob_hoveranimator_opacity_popover' => 'yes',
308
  ],
309
  ]
310
  );
@@ -324,13 +279,12 @@ class OoohBoi_Hover_Animator {
324
  'ease-in-out' => __( 'Ease-in-out', 'ooohboi-steroids' ),
325
  ],
326
  'selectors' => [
327
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
328
  transition-timing-function: {{VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
329
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
330
  ],
331
  'condition' => [
332
- '_ob_allow_hoveranimator' => 'yes',
333
- '_ob_hoveranimator_opacity_popover' => 'yes',
334
  ],
335
  ]
336
  );
@@ -342,8 +296,7 @@ class OoohBoi_Hover_Animator {
342
  '_ob_hoveranimator_y_popover',
343
  [
344
  'label' => __( 'Offset Top', 'ooohboi-steroids' ),
345
- 'type' => Controls_Manager::POPOVER_TOGGLE,
346
- 'frontend_available' => true,
347
  'return_value' => 'yes',
348
  'condition' => [
349
  '_ob_allow_hoveranimator' => 'yes',
@@ -358,8 +311,7 @@ class OoohBoi_Hover_Animator {
358
  '_ob_hoveranimator_y',
359
  [
360
  'label' => __( 'Offset Top Normal', 'ooohboi-steroids' ),
361
- 'type' => Controls_Manager::SLIDER,
362
- 'frontend_available' => true,
363
  'size_units' => [ 'px', '%' ],
364
  'range' => [
365
  'px' => [
@@ -376,12 +328,11 @@ class OoohBoi_Hover_Animator {
376
  'size' => 0,
377
  ],
378
  'selectors' => [
379
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'top: {{SIZE}}{{UNIT}};',
380
  ],
381
  'condition' => [
382
  '_ob_hoveranimator_y_alt' => '',
383
- '_ob_allow_hoveranimator' => 'yes',
384
- '_ob_hoveranimator_y_popover' => 'yes',
385
  ],
386
  ]
387
  );
@@ -391,15 +342,12 @@ class OoohBoi_Hover_Animator {
391
  [
392
  'label' => __( 'Calc Offset Top Normal', 'ooohboi-steroids' ),
393
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
394
- 'type' => Controls_Manager::TEXT,
395
- 'frontend_available' => true,
396
- 'default' => '',
397
  'selectors' => [
398
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'top: calc({{VALUE}});',
399
  ],
400
  'condition' => [
401
- '_ob_allow_hoveranimator' => 'yes',
402
- '_ob_hoveranimator_y_popover' => 'yes',
403
  ],
404
  ]
405
  );
@@ -408,8 +356,7 @@ class OoohBoi_Hover_Animator {
408
  '_ob_hoveranimator_y_hover',
409
  [
410
  'label' => __( 'Offset Top Hover', 'ooohboi-steroids' ),
411
- 'type' => Controls_Manager::SLIDER,
412
- 'frontend_available' => true,
413
  'size_units' => [ 'px', '%' ],
414
  'range' => [
415
  'px' => [
@@ -428,8 +375,8 @@ class OoohBoi_Hover_Animator {
428
  'condition' => [
429
  '_ob_hoveranimator_y_hover_alt' => '',
430
  '_ob_allow_hoveranimator' => 'yes',
431
- '_ob_hoveranimator_y_popover' => 'yes',
432
  ],
 
433
  ]
434
  );
435
  // --------------------------------------------------------------------------------------------- CONTROL CALC OFFSET TOP HOVER
@@ -438,13 +385,11 @@ class OoohBoi_Hover_Animator {
438
  [
439
  'label' => __( 'Calc Offset Top Hover', 'ooohboi-steroids' ),
440
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
441
- 'type' => Controls_Manager::TEXT,
442
- 'frontend_available' => true,
443
- 'default' => '',
444
  'condition' => [
445
- '_ob_allow_hoveranimator' => 'yes',
446
- '_ob_hoveranimator_y_popover' => 'yes',
447
  ],
 
448
  ]
449
  );
450
  // --------------------------------------------------------------------------------------------- CONTROL Offset Top duration
@@ -453,8 +398,7 @@ class OoohBoi_Hover_Animator {
453
  [
454
  'label' => __( 'Duration', 'ooohboi-steroids' ),
455
  'separator' => 'before',
456
- 'type' => Controls_Manager::SLIDER,
457
- 'frontend_available' => true,
458
  'render_type' => 'template',
459
  'default' => [
460
  'size' => 250,
@@ -466,13 +410,12 @@ class OoohBoi_Hover_Animator {
466
  ],
467
  ],
468
  'selectors' => [
469
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
470
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
471
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
472
  ],
473
  'condition' => [
474
- '_ob_allow_hoveranimator' => 'yes',
475
- '_ob_hoveranimator_y_popover' => 'yes',
476
  ],
477
  ]
478
  );
@@ -483,7 +426,6 @@ class OoohBoi_Hover_Animator {
483
  'label' => __( 'Delay', 'ooohboi-steroids' ),
484
  'separator' => 'before',
485
  'type' => Controls_Manager::SLIDER,
486
- 'frontend_available' => true,
487
  'render_type' => 'template',
488
  'default' => [
489
  'size' => 0,
@@ -495,13 +437,12 @@ class OoohBoi_Hover_Animator {
495
  ],
496
  ],
497
  'selectors' => [
498
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
499
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
500
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
501
  ],
502
  'condition' => [
503
- '_ob_allow_hoveranimator' => 'yes',
504
- '_ob_hoveranimator_y_popover' => 'yes',
505
  ],
506
  ]
507
  );
@@ -511,7 +452,6 @@ class OoohBoi_Hover_Animator {
511
  [
512
  'label' => __( 'Easing', 'ooohboi-steroids' ),
513
  'type' => Controls_Manager::SELECT,
514
- 'frontend_available' => true,
515
  'default' => 'ease',
516
  'separator' => 'before',
517
  'options' => [
@@ -521,13 +461,12 @@ class OoohBoi_Hover_Animator {
521
  'ease-in-out' => __( 'Ease-in-out', 'ooohboi-steroids' ),
522
  ],
523
  'selectors' => [
524
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
525
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}ms, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
526
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
527
  ],
528
  'condition' => [
529
- '_ob_allow_hoveranimator' => 'yes',
530
- '_ob_hoveranimator_y_popover' => 'yes',
531
  ],
532
  ]
533
  );
@@ -540,7 +479,6 @@ class OoohBoi_Hover_Animator {
540
  [
541
  'label' => __( 'Offset Left', 'ooohboi-steroids' ),
542
  'type' => Controls_Manager::POPOVER_TOGGLE,
543
- 'frontend_available' => true,
544
  'return_value' => 'yes',
545
  'condition' => [
546
  '_ob_allow_hoveranimator' => 'yes',
@@ -556,7 +494,6 @@ class OoohBoi_Hover_Animator {
556
  [
557
  'label' => __( 'Offset Left Normal', 'ooohboi-steroids' ),
558
  'type' => Controls_Manager::SLIDER,
559
- 'frontend_available' => true,
560
  'size_units' => [ 'px', '%' ],
561
  'range' => [
562
  'px' => [
@@ -573,12 +510,11 @@ class OoohBoi_Hover_Animator {
573
  'size' => 0,
574
  ],
575
  'selectors' => [
576
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'left: {{SIZE}}{{UNIT}};',
577
  ],
578
  'condition' => [
579
  '_ob_hoveranimator_x_alt' => '',
580
- '_ob_allow_hoveranimator' => 'yes',
581
- '_ob_hoveranimator_x_popover' => 'yes',
582
  ],
583
  ]
584
  );
@@ -589,14 +525,11 @@ class OoohBoi_Hover_Animator {
589
  'label' => __( 'Calc Offset Left Normal', 'ooohboi-steroids' ),
590
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
591
  'type' => Controls_Manager::TEXT,
592
- 'frontend_available' => true,
593
- 'default' => '',
594
  'selectors' => [
595
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'left: calc({{VALUE}});',
596
  ],
597
  'condition' => [
598
- '_ob_allow_hoveranimator' => 'yes',
599
- '_ob_hoveranimator_x_popover' => 'yes',
600
  ],
601
  ]
602
  );
@@ -606,7 +539,6 @@ class OoohBoi_Hover_Animator {
606
  [
607
  'label' => __( 'Offset Left Hover', 'ooohboi-steroids' ),
608
  'type' => Controls_Manager::SLIDER,
609
- 'frontend_available' => true,
610
  'size_units' => [ 'px', '%' ],
611
  'range' => [
612
  'px' => [
@@ -624,9 +556,9 @@ class OoohBoi_Hover_Animator {
624
  ],
625
  'condition' => [
626
  '_ob_hoveranimator_x_hover_alt' => '',
627
- '_ob_allow_hoveranimator' => 'yes',
628
- '_ob_hoveranimator_x_popover' => 'yes',
629
  ],
 
630
  ]
631
  );
632
  // --------------------------------------------------------------------------------------------- CONTROL CALC OFFSET TOP HOVER
@@ -636,12 +568,10 @@ class OoohBoi_Hover_Animator {
636
  'label' => __( 'Calc Offset Left Hover', 'ooohboi-steroids' ),
637
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
638
  'type' => Controls_Manager::TEXT,
639
- 'frontend_available' => true,
640
- 'default' => '',
641
  'condition' => [
642
- '_ob_allow_hoveranimator' => 'yes',
643
- '_ob_hoveranimator_x_popover' => 'yes',
644
  ],
 
645
  ]
646
  );
647
  // --------------------------------------------------------------------------------------------- CONTROL Offset Left duration
@@ -651,7 +581,6 @@ class OoohBoi_Hover_Animator {
651
  'label' => __( 'Duration', 'ooohboi-steroids' ),
652
  'separator' => 'before',
653
  'type' => Controls_Manager::SLIDER,
654
- 'frontend_available' => true,
655
  'render_type' => 'template',
656
  'default' => [
657
  'size' => 250,
@@ -663,13 +592,12 @@ class OoohBoi_Hover_Animator {
663
  ],
664
  ],
665
  'selectors' => [
666
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
667
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
668
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
669
  ],
670
  'condition' => [
671
- '_ob_allow_hoveranimator' => 'yes',
672
- '_ob_hoveranimator_x_popover' => 'yes',
673
  ],
674
  ]
675
  );
@@ -680,7 +608,6 @@ class OoohBoi_Hover_Animator {
680
  'label' => __( 'Delay', 'ooohboi-steroids' ),
681
  'separator' => 'before',
682
  'type' => Controls_Manager::SLIDER,
683
- 'frontend_available' => true,
684
  'render_type' => 'template',
685
  'default' => [
686
  'size' => 0,
@@ -692,13 +619,12 @@ class OoohBoi_Hover_Animator {
692
  ],
693
  ],
694
  'selectors' => [
695
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
696
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
697
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
698
  ],
699
  'condition' => [
700
- '_ob_allow_hoveranimator' => 'yes',
701
- '_ob_hoveranimator_x_popover' => 'yes',
702
  ],
703
  ]
704
  );
@@ -708,7 +634,6 @@ class OoohBoi_Hover_Animator {
708
  [
709
  'label' => __( 'Easing', 'ooohboi-steroids' ),
710
  'type' => Controls_Manager::SELECT,
711
- 'frontend_available' => true,
712
  'default' => 'ease',
713
  'separator' => 'before',
714
  'options' => [
@@ -718,13 +643,12 @@ class OoohBoi_Hover_Animator {
718
  'ease-in-out' => __( 'Ease-in-out', 'ooohboi-steroids' ),
719
  ],
720
  'selectors' => [
721
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
722
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
723
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
724
  ],
725
  'condition' => [
726
- '_ob_allow_hoveranimator' => 'yes',
727
- '_ob_hoveranimator_x_popover' => 'yes',
728
  ],
729
  ]
730
  );
@@ -752,7 +676,6 @@ class OoohBoi_Hover_Animator {
752
  [
753
  'label' => __( 'ScaleX Normal', 'ooohboi-steroids' ),
754
  'type' => Controls_Manager::SLIDER,
755
- 'frontend_available' => true,
756
  'range' => [
757
  'px' => [
758
  'min' => 0,
@@ -764,11 +687,10 @@ class OoohBoi_Hover_Animator {
764
  'size' => 1,
765
  ],
766
  'selectors' => [
767
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transform: scaleX({{SIZE}}) scaleY({{_ob_hoveranimator_scaley.SIZE}}) rotate({{_ob_hoveranimator_rot.SIZE}}deg);',
768
  ],
769
  'condition' => [
770
- '_ob_allow_hoveranimator' => 'yes',
771
- '_ob_hoveranimator_transforms_popover' => 'yes',
772
  ],
773
  ]
774
  );
@@ -778,7 +700,6 @@ class OoohBoi_Hover_Animator {
778
  [
779
  'label' => __( 'ScaleX Hover', 'ooohboi-steroids' ),
780
  'type' => Controls_Manager::SLIDER,
781
- 'frontend_available' => true,
782
  'range' => [
783
  'px' => [
784
  'min' => 0,
@@ -790,9 +711,9 @@ class OoohBoi_Hover_Animator {
790
  'size' => 1,
791
  ],
792
  'condition' => [
793
- '_ob_allow_hoveranimator' => 'yes',
794
- '_ob_hoveranimator_transforms_popover' => 'yes',
795
  ],
 
796
  ]
797
  );
798
  // --------------------------------------------------------------------------------------------- CONTROL SCALE Y
@@ -801,7 +722,6 @@ class OoohBoi_Hover_Animator {
801
  [
802
  'label' => __( 'ScaleY Normal', 'ooohboi-steroids' ),
803
  'type' => Controls_Manager::SLIDER,
804
- 'frontend_available' => true,
805
  'range' => [
806
  'px' => [
807
  'min' => 0,
@@ -813,11 +733,10 @@ class OoohBoi_Hover_Animator {
813
  'size' => 1,
814
  ],
815
  'selectors' => [
816
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transform: scaleX({{_ob_hoveranimator_scalex.SIZE}}) scaleY({{SIZE}}) rotate({{_ob_hoveranimator_rot.SIZE}}deg);',
817
  ],
818
  'condition' => [
819
- '_ob_allow_hoveranimator' => 'yes',
820
- '_ob_hoveranimator_transforms_popover' => 'yes',
821
  ],
822
  ]
823
  );
@@ -827,7 +746,6 @@ class OoohBoi_Hover_Animator {
827
  [
828
  'label' => __( 'ScaleY Hover', 'ooohboi-steroids' ),
829
  'type' => Controls_Manager::SLIDER,
830
- 'frontend_available' => true,
831
  'range' => [
832
  'px' => [
833
  'min' => 0,
@@ -839,9 +757,9 @@ class OoohBoi_Hover_Animator {
839
  'size' => 1,
840
  ],
841
  'condition' => [
842
- '_ob_allow_hoveranimator' => 'yes',
843
- '_ob_hoveranimator_transforms_popover' => 'yes',
844
  ],
 
845
  ]
846
  );
847
  // --------------------------------------------------------------------------------------------- CONTROL ROTATION
@@ -850,7 +768,6 @@ class OoohBoi_Hover_Animator {
850
  [
851
  'label' => __( 'Rotation Normal', 'ooohboi-steroids' ),
852
  'type' => Controls_Manager::SLIDER,
853
- 'frontend_available' => true,
854
  'range' => [
855
  'px' => [
856
  'min' => 0,
@@ -862,11 +779,10 @@ class OoohBoi_Hover_Animator {
862
  'size' => 0,
863
  ],
864
  'selectors' => [
865
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transform: scaleX({{_ob_hoveranimator_scalex.SIZE}}) scaleY({{_ob_hoveranimator_scaley.SIZE}}) rotate({{SIZE}}deg);',
866
  ],
867
  'condition' => [
868
- '_ob_allow_hoveranimator' => 'yes',
869
- '_ob_hoveranimator_transforms_popover' => 'yes',
870
  ],
871
  ]
872
  );
@@ -876,7 +792,6 @@ class OoohBoi_Hover_Animator {
876
  [
877
  'label' => __( 'Rotation Hover', 'ooohboi-steroids' ),
878
  'type' => Controls_Manager::SLIDER,
879
- 'frontend_available' => true,
880
  'range' => [
881
  'px' => [
882
  'min' => 0,
@@ -888,9 +803,9 @@ class OoohBoi_Hover_Animator {
888
  'size' => 0,
889
  ],
890
  'condition' => [
891
- '_ob_allow_hoveranimator' => 'yes',
892
- '_ob_hoveranimator_transforms_popover' => 'yes',
893
  ],
 
894
  ]
895
  );
896
 
@@ -901,7 +816,6 @@ class OoohBoi_Hover_Animator {
901
  'label' => __( 'Duration', 'ooohboi-steroids' ),
902
  'separator' => 'before',
903
  'type' => Controls_Manager::SLIDER,
904
- 'frontend_available' => true,
905
  'render_type' => 'template',
906
  'default' => [
907
  'size' => 250,
@@ -913,13 +827,12 @@ class OoohBoi_Hover_Animator {
913
  ],
914
  ],
915
  'selectors' => [
916
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
917
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
918
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
919
  ],
920
  'condition' => [
921
- '_ob_allow_hoveranimator' => 'yes',
922
- '_ob_hoveranimator_transforms_popover' => 'yes',
923
  ],
924
  ]
925
  );
@@ -930,7 +843,6 @@ class OoohBoi_Hover_Animator {
930
  'label' => __( 'Delay', 'ooohboi-steroids' ),
931
  'separator' => 'before',
932
  'type' => Controls_Manager::SLIDER,
933
- 'frontend_available' => true,
934
  'render_type' => 'template',
935
  'default' => [
936
  'size' => 0,
@@ -942,13 +854,12 @@ class OoohBoi_Hover_Animator {
942
  ],
943
  ],
944
  'selectors' => [
945
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
946
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
947
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
948
  ],
949
  'condition' => [
950
- '_ob_allow_hoveranimator' => 'yes',
951
- '_ob_hoveranimator_transforms_popover' => 'yes',
952
  ],
953
  ]
954
  );
@@ -958,7 +869,6 @@ class OoohBoi_Hover_Animator {
958
  [
959
  'label' => __( 'Easing', 'ooohboi-steroids' ),
960
  'type' => Controls_Manager::SELECT,
961
- 'frontend_available' => true,
962
  'default' => 'ease',
963
  'separator' => 'before',
964
  'options' => [
@@ -968,13 +878,12 @@ class OoohBoi_Hover_Animator {
968
  'ease-in-out' => __( 'Ease-in-out', 'ooohboi-steroids' ),
969
  ],
970
  'selectors' => [
971
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
972
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
973
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
974
  ],
975
  'condition' => [
976
- '_ob_allow_hoveranimator' => 'yes',
977
- '_ob_hoveranimator_transforms_popover' => 'yes',
978
  ],
979
  ]
980
  );
@@ -987,7 +896,6 @@ class OoohBoi_Hover_Animator {
987
  [
988
  'label' => __( 'Blur', 'ooohboi-steroids' ),
989
  'type' => Controls_Manager::POPOVER_TOGGLE,
990
- 'frontend_available' => true,
991
  'return_value' => 'yes',
992
  'condition' => [
993
  '_ob_allow_hoveranimator' => 'yes',
@@ -1003,7 +911,6 @@ class OoohBoi_Hover_Animator {
1003
  [
1004
  'label' => __( 'Blur Normal', 'ooohboi-steroids' ),
1005
  'type' => Controls_Manager::SLIDER,
1006
- 'frontend_available' => true,
1007
  'size_units' => [ 'px', 'em' ],
1008
  'range' => [
1009
  'px' => [
@@ -1022,11 +929,10 @@ class OoohBoi_Hover_Animator {
1022
  'size' => 0,
1023
  ],
1024
  'selectors' => [
1025
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'filter: blur({{SIZE}}{{UNIT}});',
1026
  ],
1027
  'condition' => [
1028
- '_ob_allow_hoveranimator' => 'yes',
1029
- '_ob_hoveranimator_blur_popover' => 'yes',
1030
  ],
1031
  ]
1032
  );
@@ -1036,7 +942,6 @@ class OoohBoi_Hover_Animator {
1036
  [
1037
  'label' => __( 'Blur Hover', 'ooohboi-steroids' ),
1038
  'type' => Controls_Manager::SLIDER,
1039
- 'frontend_available' => true,
1040
  'size_units' => [ 'px', 'em' ],
1041
  'range' => [
1042
  'px' => [
@@ -1055,9 +960,9 @@ class OoohBoi_Hover_Animator {
1055
  'size' => 0,
1056
  ],
1057
  'condition' => [
1058
- '_ob_allow_hoveranimator' => 'yes',
1059
- '_ob_hoveranimator_blur_popover' => 'yes',
1060
  ],
 
1061
  ]
1062
  );
1063
  // --------------------------------------------------------------------------------------------- CONTROL Blur duration
@@ -1067,7 +972,6 @@ class OoohBoi_Hover_Animator {
1067
  'label' => __( 'Duration', 'ooohboi-steroids' ),
1068
  'separator' => 'before',
1069
  'type' => Controls_Manager::SLIDER,
1070
- 'frontend_available' => true,
1071
  'render_type' => 'template',
1072
  'default' => [
1073
  'size' => 250,
@@ -1079,13 +983,12 @@ class OoohBoi_Hover_Animator {
1079
  ],
1080
  ],
1081
  'selectors' => [
1082
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{SIZE}}ms;
1083
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
1084
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
1085
  ],
1086
  'condition' => [
1087
- '_ob_allow_hoveranimator' => 'yes',
1088
- '_ob_hoveranimator_blur_popover' => 'yes',
1089
  ],
1090
  ]
1091
  );
@@ -1096,7 +999,6 @@ class OoohBoi_Hover_Animator {
1096
  'label' => __( 'Delay', 'ooohboi-steroids' ),
1097
  'separator' => 'before',
1098
  'type' => Controls_Manager::SLIDER,
1099
- 'frontend_available' => true,
1100
  'render_type' => 'template',
1101
  'default' => [
1102
  'size' => 0,
@@ -1108,13 +1010,12 @@ class OoohBoi_Hover_Animator {
1108
  ],
1109
  ],
1110
  'selectors' => [
1111
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
1112
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
1113
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{SIZE}}ms;',
1114
  ],
1115
  'condition' => [
1116
- '_ob_allow_hoveranimator' => 'yes',
1117
- '_ob_hoveranimator_blur_popover' => 'yes',
1118
  ],
1119
  ]
1120
  );
@@ -1124,7 +1025,6 @@ class OoohBoi_Hover_Animator {
1124
  [
1125
  'label' => __( 'Easing', 'ooohboi-steroids' ),
1126
  'type' => Controls_Manager::SELECT,
1127
- 'frontend_available' => true,
1128
  'default' => 'ease',
1129
  'separator' => 'before',
1130
  'options' => [
@@ -1134,14 +1034,13 @@ class OoohBoi_Hover_Animator {
1134
  'ease-in-out' => __( 'Ease-in-out', 'ooohboi-steroids' ),
1135
  ],
1136
  'selectors' => [
1137
- '{{WRAPPER}}.ob-is-hoveranimal > .elementor-widget-container' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
1138
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{VALUE}};
1139
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
1140
  ],
1141
 
1142
  'condition' => [
1143
- '_ob_allow_hoveranimator' => 'yes',
1144
- '_ob_hoveranimator_blur_popover' => 'yes',
1145
  ],
1146
  ]
1147
  );
16
  */
17
  class OoohBoi_Hover_Animator {
18
 
 
 
19
  /**
20
  * Initialize
21
  *
26
  public static function init() {
27
 
28
  add_action( 'elementor/element/common/_section_background/after_section_end', [ __CLASS__, 'add_section' ] );
29
+ add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
 
30
  add_action( 'elementor/element/column/section_advanced/before_section_end', [ __CLASS__, 'manage_column_option' ], 10, 2 );
 
 
 
31
  /* allow hoveranimator for the column ? */
32
+ add_action( 'elementor/frontend/column/before_render', function( Element_Base $element ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
+ if ( \Elementor\Plugin::instance()->editor->is_edit_mode() ) return;
35
+ $settings = $element->get_settings_for_display();
36
 
37
+ if ( isset( $settings[ '_ob_column_hoveranimator' ] ) && 'yes' === $settings[ '_ob_column_hoveranimator' ] ) {
38
 
39
+ $element->add_render_attribute( '_wrapper', [
40
+ 'class' => 'ob-is-hoveranimator'
41
+ ] );
42
 
43
+ }
 
 
 
 
 
 
 
44
 
45
+ } );
 
 
 
 
 
 
46
 
47
  }
48
 
77
  '_ob_hoveranimator_column_fake_description',
78
  [
79
  'type' => Controls_Manager::RAW_HTML,
80
+ 'raw' => __( 'With Hoveranimator you can animate any widget in this column on mouse-over event. Animation panel is available under the Advanced tab, per widget!', 'ooohboi-steroids' ),
81
  'content_classes' => 'elementor-control-field-description',
82
  ]
83
  );
84
  // ------------------------------------------------------------------------- CONTROL: Visibility
85
+ $element->add_control(
86
+ '_ob_hoveranimator_visibility',
87
+ [
88
+ 'label' => __( 'Content Overflow', 'ooohboi-steroids' ),
89
+ 'description' => __( 'VISIBLE - makes visible all the elements outside this Column boundaries, HIDDEN - hides everything outside this Column boundaries.', 'ooohboi-steroids' ),
90
+ 'type' => Controls_Manager::SELECT,
91
+ 'default' => 'hidden',
92
+ 'separator' => 'before',
93
+ 'options' => [
94
+ 'visible' => __( 'Visible', 'ooohboi-steroids' ),
95
+ 'hidden' => __( 'Hidden', 'ooohboi-steroids' ),
96
+ ],
97
+ 'selectors' => [
98
+ '{{WRAPPER}}.ob-is-hoveranimator' => 'overflow: {{VALUE}};',
99
+ ],
100
+ 'condition' => [
101
+ '_ob_column_hoveranimator' => 'yes',
102
+ ],
103
+ ]
104
+ );
 
 
105
 
106
  }
107
 
108
  public static function add_attributes( Element_Base $element ) {
109
 
110
+ if ( in_array( $element->get_name(), [ 'section', 'column' ] ) ) {
111
+ return;
112
+ }
113
+
114
+ if ( \Elementor\Plugin::instance()->editor->is_edit_mode() ) {
115
+ return;
116
+ }
117
 
118
  $settings = $element->get_settings_for_display();
119
 
157
  'label' => __( 'Opacity', 'ooohboi-steroids' ),
158
  'type' => Controls_Manager::POPOVER_TOGGLE,
159
  'return_value' => 'yes',
 
160
  'condition' => [
161
  '_ob_allow_hoveranimator' => 'yes',
162
  ],
170
  '_ob_hoveranimator_opacity',
171
  [
172
  'label' => __( 'Opacity Normal', 'ooohboi-steroids' ),
173
+ 'type' => Controls_Manager::SLIDER,
 
174
  'default' => [
175
  'size' => 1,
176
  ],
181
  ],
182
  ],
183
  'selectors' => [
184
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'opacity: {{SIZE}};',
185
  ],
186
  'condition' => [
187
+ '_ob_allow_hoveranimator' => 'yes',
 
188
  ],
189
  ]
190
  );
193
  '_ob_hoveranimator_opacity_hover',
194
  [
195
  'label' => __( 'Opacity Hover', 'ooohboi-steroids' ),
196
+ 'type' => Controls_Manager::SLIDER,
 
197
  'default' => [
198
  'size' => 1,
199
  ],
204
  ],
205
  ],
206
  'condition' => [
207
+ '_ob_allow_hoveranimator' => 'yes',
 
208
  ],
209
+ 'frontend_available' => true,
210
  ]
211
  );
212
  // --------------------------------------------------------------------------------------------- CONTROL OPACITY duration
215
  [
216
  'label' => __( 'Duration', 'ooohboi-steroids' ),
217
  'separator' => 'before',
218
+ 'type' => Controls_Manager::SLIDER,
 
219
  'render_type' => 'template',
220
  'default' => [
221
  'size' => 250,
227
  ],
228
  ],
229
  'selectors' => [
230
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
231
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
232
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
233
  ],
234
  'condition' => [
235
+ '_ob_allow_hoveranimator' => 'yes',
 
236
  ],
237
  ]
238
  );
242
  [
243
  'label' => __( 'Delay', 'ooohboi-steroids' ),
244
  'separator' => 'before',
245
+ 'type' => Controls_Manager::SLIDER,
 
246
  'render_type' => 'template',
247
  'default' => [
248
  'size' => 0,
254
  ],
255
  ],
256
  'selectors' => [
257
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
258
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
259
  transition-delay: {{SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms;, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
260
  ],
261
  'condition' => [
262
+ '_ob_allow_hoveranimator' => 'yes',
 
263
  ],
264
  ]
265
  );
279
  'ease-in-out' => __( 'Ease-in-out', 'ooohboi-steroids' ),
280
  ],
281
  'selectors' => [
282
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
283
  transition-timing-function: {{VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
284
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
285
  ],
286
  'condition' => [
287
+ '_ob_allow_hoveranimator' => 'yes',
 
288
  ],
289
  ]
290
  );
296
  '_ob_hoveranimator_y_popover',
297
  [
298
  'label' => __( 'Offset Top', 'ooohboi-steroids' ),
299
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
 
300
  'return_value' => 'yes',
301
  'condition' => [
302
  '_ob_allow_hoveranimator' => 'yes',
311
  '_ob_hoveranimator_y',
312
  [
313
  'label' => __( 'Offset Top Normal', 'ooohboi-steroids' ),
314
+ 'type' => Controls_Manager::SLIDER,
 
315
  'size_units' => [ 'px', '%' ],
316
  'range' => [
317
  'px' => [
328
  'size' => 0,
329
  ],
330
  'selectors' => [
331
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'top: {{SIZE}}{{UNIT}};',
332
  ],
333
  'condition' => [
334
  '_ob_hoveranimator_y_alt' => '',
335
+ '_ob_allow_hoveranimator' => 'yes',
 
336
  ],
337
  ]
338
  );
342
  [
343
  'label' => __( 'Calc Offset Top Normal', 'ooohboi-steroids' ),
344
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
345
+ 'type' => Controls_Manager::TEXT,
 
 
346
  'selectors' => [
347
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'top: calc({{VALUE}});',
348
  ],
349
  'condition' => [
350
+ '_ob_allow_hoveranimator' => 'yes',
 
351
  ],
352
  ]
353
  );
356
  '_ob_hoveranimator_y_hover',
357
  [
358
  'label' => __( 'Offset Top Hover', 'ooohboi-steroids' ),
359
+ 'type' => Controls_Manager::SLIDER,
 
360
  'size_units' => [ 'px', '%' ],
361
  'range' => [
362
  'px' => [
375
  'condition' => [
376
  '_ob_hoveranimator_y_hover_alt' => '',
377
  '_ob_allow_hoveranimator' => 'yes',
 
378
  ],
379
+ 'frontend_available' => true,
380
  ]
381
  );
382
  // --------------------------------------------------------------------------------------------- CONTROL CALC OFFSET TOP HOVER
385
  [
386
  'label' => __( 'Calc Offset Top Hover', 'ooohboi-steroids' ),
387
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
388
+ 'type' => Controls_Manager::TEXT,
 
 
389
  'condition' => [
390
+ '_ob_allow_hoveranimator' => 'yes',
 
391
  ],
392
+ 'frontend_available' => true,
393
  ]
394
  );
395
  // --------------------------------------------------------------------------------------------- CONTROL Offset Top duration
398
  [
399
  'label' => __( 'Duration', 'ooohboi-steroids' ),
400
  'separator' => 'before',
401
+ 'type' => Controls_Manager::SLIDER,
 
402
  'render_type' => 'template',
403
  'default' => [
404
  'size' => 250,
410
  ],
411
  ],
412
  'selectors' => [
413
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
414
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
415
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
416
  ],
417
  'condition' => [
418
+ '_ob_allow_hoveranimator' => 'yes',
 
419
  ],
420
  ]
421
  );
426
  'label' => __( 'Delay', 'ooohboi-steroids' ),
427
  'separator' => 'before',
428
  'type' => Controls_Manager::SLIDER,
 
429
  'render_type' => 'template',
430
  'default' => [
431
  'size' => 0,
437
  ],
438
  ],
439
  'selectors' => [
440
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
441
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
442
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
443
  ],
444
  'condition' => [
445
+ '_ob_allow_hoveranimator' => 'yes',
 
446
  ],
447
  ]
448
  );
452
  [
453
  'label' => __( 'Easing', 'ooohboi-steroids' ),
454
  'type' => Controls_Manager::SELECT,
 
455
  'default' => 'ease',
456
  'separator' => 'before',
457
  'options' => [
461
  'ease-in-out' => __( 'Ease-in-out', 'ooohboi-steroids' ),
462
  ],
463
  'selectors' => [
464
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
465
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}ms, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
466
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
467
  ],
468
  'condition' => [
469
+ '_ob_allow_hoveranimator' => 'yes',
 
470
  ],
471
  ]
472
  );
479
  [
480
  'label' => __( 'Offset Left', 'ooohboi-steroids' ),
481
  'type' => Controls_Manager::POPOVER_TOGGLE,
 
482
  'return_value' => 'yes',
483
  'condition' => [
484
  '_ob_allow_hoveranimator' => 'yes',
494
  [
495
  'label' => __( 'Offset Left Normal', 'ooohboi-steroids' ),
496
  'type' => Controls_Manager::SLIDER,
 
497
  'size_units' => [ 'px', '%' ],
498
  'range' => [
499
  'px' => [
510
  'size' => 0,
511
  ],
512
  'selectors' => [
513
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'left: {{SIZE}}{{UNIT}};',
514
  ],
515
  'condition' => [
516
  '_ob_hoveranimator_x_alt' => '',
517
+ '_ob_allow_hoveranimator' => 'yes',
 
518
  ],
519
  ]
520
  );
525
  'label' => __( 'Calc Offset Left Normal', 'ooohboi-steroids' ),
526
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
527
  'type' => Controls_Manager::TEXT,
 
 
528
  'selectors' => [
529
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'left: calc({{VALUE}});',
530
  ],
531
  'condition' => [
532
+ '_ob_allow_hoveranimator' => 'yes',
 
533
  ],
534
  ]
535
  );
539
  [
540
  'label' => __( 'Offset Left Hover', 'ooohboi-steroids' ),
541
  'type' => Controls_Manager::SLIDER,
 
542
  'size_units' => [ 'px', '%' ],
543
  'range' => [
544
  'px' => [
556
  ],
557
  'condition' => [
558
  '_ob_hoveranimator_x_hover_alt' => '',
559
+ '_ob_allow_hoveranimator' => 'yes',
 
560
  ],
561
+ 'frontend_available' => true,
562
  ]
563
  );
564
  // --------------------------------------------------------------------------------------------- CONTROL CALC OFFSET TOP HOVER
568
  'label' => __( 'Calc Offset Left Hover', 'ooohboi-steroids' ),
569
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
570
  'type' => Controls_Manager::TEXT,
 
 
571
  'condition' => [
572
+ '_ob_allow_hoveranimator' => 'yes',
 
573
  ],
574
+ 'frontend_available' => true,
575
  ]
576
  );
577
  // --------------------------------------------------------------------------------------------- CONTROL Offset Left duration
581
  'label' => __( 'Duration', 'ooohboi-steroids' ),
582
  'separator' => 'before',
583
  'type' => Controls_Manager::SLIDER,
 
584
  'render_type' => 'template',
585
  'default' => [
586
  'size' => 250,
592
  ],
593
  ],
594
  'selectors' => [
595
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
596
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
597
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
598
  ],
599
  'condition' => [
600
+ '_ob_allow_hoveranimator' => 'yes',
 
601
  ],
602
  ]
603
  );
608
  'label' => __( 'Delay', 'ooohboi-steroids' ),
609
  'separator' => 'before',
610
  'type' => Controls_Manager::SLIDER,
 
611
  'render_type' => 'template',
612
  'default' => [
613
  'size' => 0,
619
  ],
620
  ],
621
  'selectors' => [
622
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
623
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
624
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
625
  ],
626
  'condition' => [
627
+ '_ob_allow_hoveranimator' => 'yes',
 
628
  ],
629
  ]
630
  );
634
  [
635
  'label' => __( 'Easing', 'ooohboi-steroids' ),
636
  'type' => Controls_Manager::SELECT,
 
637
  'default' => 'ease',
638
  'separator' => 'before',
639
  'options' => [
643
  'ease-in-out' => __( 'Ease-in-out', 'ooohboi-steroids' ),
644
  ],
645
  'selectors' => [
646
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
647
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
648
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
649
  ],
650
  'condition' => [
651
+ '_ob_allow_hoveranimator' => 'yes',
 
652
  ],
653
  ]
654
  );
676
  [
677
  'label' => __( 'ScaleX Normal', 'ooohboi-steroids' ),
678
  'type' => Controls_Manager::SLIDER,
 
679
  'range' => [
680
  'px' => [
681
  'min' => 0,
687
  'size' => 1,
688
  ],
689
  'selectors' => [
690
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transform: scaleX({{SIZE}}) scaleY({{_ob_hoveranimator_scaley.SIZE}}) rotate({{_ob_hoveranimator_rot.SIZE}}deg);',
691
  ],
692
  'condition' => [
693
+ '_ob_allow_hoveranimator' => 'yes',
 
694
  ],
695
  ]
696
  );
700
  [
701
  'label' => __( 'ScaleX Hover', 'ooohboi-steroids' ),
702
  'type' => Controls_Manager::SLIDER,
 
703
  'range' => [
704
  'px' => [
705
  'min' => 0,
711
  'size' => 1,
712
  ],
713
  'condition' => [
714
+ '_ob_allow_hoveranimator' => 'yes',
 
715
  ],
716
+ 'frontend_available' => true,
717
  ]
718
  );
719
  // --------------------------------------------------------------------------------------------- CONTROL SCALE Y
722
  [
723
  'label' => __( 'ScaleY Normal', 'ooohboi-steroids' ),
724
  'type' => Controls_Manager::SLIDER,
 
725
  'range' => [
726
  'px' => [
727
  'min' => 0,
733
  'size' => 1,
734
  ],
735
  'selectors' => [
736
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transform: scaleX({{_ob_hoveranimator_scalex.SIZE}}) scaleY({{SIZE}}) rotate({{_ob_hoveranimator_rot.SIZE}}deg);',
737
  ],
738
  'condition' => [
739
+ '_ob_allow_hoveranimator' => 'yes',
 
740
  ],
741
  ]
742
  );
746
  [
747
  'label' => __( 'ScaleY Hover', 'ooohboi-steroids' ),
748
  'type' => Controls_Manager::SLIDER,
 
749
  'range' => [
750
  'px' => [
751
  'min' => 0,
757
  'size' => 1,
758
  ],
759
  'condition' => [
760
+ '_ob_allow_hoveranimator' => 'yes',
 
761
  ],
762
+ 'frontend_available' => true,
763
  ]
764
  );
765
  // --------------------------------------------------------------------------------------------- CONTROL ROTATION
768
  [
769
  'label' => __( 'Rotation Normal', 'ooohboi-steroids' ),
770
  'type' => Controls_Manager::SLIDER,
 
771
  'range' => [
772
  'px' => [
773
  'min' => 0,
779
  'size' => 0,
780
  ],
781
  'selectors' => [
782
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transform: scaleX({{_ob_hoveranimator_scalex.SIZE}}) scaleY({{_ob_hoveranimator_scaley.SIZE}}) rotate({{SIZE}}deg);',
783
  ],
784
  'condition' => [
785
+ '_ob_allow_hoveranimator' => 'yes',
 
786
  ],
787
  ]
788
  );
792
  [
793
  'label' => __( 'Rotation Hover', 'ooohboi-steroids' ),
794
  'type' => Controls_Manager::SLIDER,
 
795
  'range' => [
796
  'px' => [
797
  'min' => 0,
803
  'size' => 0,
804
  ],
805
  'condition' => [
806
+ '_ob_allow_hoveranimator' => 'yes',
 
807
  ],
808
+ 'frontend_available' => true,
809
  ]
810
  );
811
 
816
  'label' => __( 'Duration', 'ooohboi-steroids' ),
817
  'separator' => 'before',
818
  'type' => Controls_Manager::SLIDER,
 
819
  'render_type' => 'template',
820
  'default' => [
821
  'size' => 250,
827
  ],
828
  ],
829
  'selectors' => [
830
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
831
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
832
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
833
  ],
834
  'condition' => [
835
+ '_ob_allow_hoveranimator' => 'yes',
 
836
  ],
837
  ]
838
  );
843
  'label' => __( 'Delay', 'ooohboi-steroids' ),
844
  'separator' => 'before',
845
  'type' => Controls_Manager::SLIDER,
 
846
  'render_type' => 'template',
847
  'default' => [
848
  'size' => 0,
854
  ],
855
  ],
856
  'selectors' => [
857
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
858
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
859
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
860
  ],
861
  'condition' => [
862
+ '_ob_allow_hoveranimator' => 'yes',
 
863
  ],
864
  ]
865
  );
869
  [
870
  'label' => __( 'Easing', 'ooohboi-steroids' ),
871
  'type' => Controls_Manager::SELECT,
 
872
  'default' => 'ease',
873
  'separator' => 'before',
874
  'options' => [
878
  'ease-in-out' => __( 'Ease-in-out', 'ooohboi-steroids' ),
879
  ],
880
  'selectors' => [
881
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
882
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
883
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
884
  ],
885
  'condition' => [
886
+ '_ob_allow_hoveranimator' => 'yes',
 
887
  ],
888
  ]
889
  );
896
  [
897
  'label' => __( 'Blur', 'ooohboi-steroids' ),
898
  'type' => Controls_Manager::POPOVER_TOGGLE,
 
899
  'return_value' => 'yes',
900
  'condition' => [
901
  '_ob_allow_hoveranimator' => 'yes',
911
  [
912
  'label' => __( 'Blur Normal', 'ooohboi-steroids' ),
913
  'type' => Controls_Manager::SLIDER,
 
914
  'size_units' => [ 'px', 'em' ],
915
  'range' => [
916
  'px' => [
929
  'size' => 0,
930
  ],
931
  'selectors' => [
932
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'filter: blur({{SIZE}}{{UNIT}});',
933
  ],
934
  'condition' => [
935
+ '_ob_allow_hoveranimator' => 'yes',
 
936
  ],
937
  ]
938
  );
942
  [
943
  'label' => __( 'Blur Hover', 'ooohboi-steroids' ),
944
  'type' => Controls_Manager::SLIDER,
 
945
  'size_units' => [ 'px', 'em' ],
946
  'range' => [
947
  'px' => [
960
  'size' => 0,
961
  ],
962
  'condition' => [
963
+ '_ob_allow_hoveranimator' => 'yes',
 
964
  ],
965
+ 'frontend_available' => true,
966
  ]
967
  );
968
  // --------------------------------------------------------------------------------------------- CONTROL Blur duration
972
  'label' => __( 'Duration', 'ooohboi-steroids' ),
973
  'separator' => 'before',
974
  'type' => Controls_Manager::SLIDER,
 
975
  'render_type' => 'template',
976
  'default' => [
977
  'size' => 250,
983
  ],
984
  ],
985
  'selectors' => [
986
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{SIZE}}ms;
987
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
988
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
989
  ],
990
  'condition' => [
991
+ '_ob_allow_hoveranimator' => 'yes',
 
992
  ],
993
  ]
994
  );
999
  'label' => __( 'Delay', 'ooohboi-steroids' ),
1000
  'separator' => 'before',
1001
  'type' => Controls_Manager::SLIDER,
 
1002
  'render_type' => 'template',
1003
  'default' => [
1004
  'size' => 0,
1010
  ],
1011
  ],
1012
  'selectors' => [
1013
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
1014
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{_ob_hoveranimator_blur_easing.VALUE}};
1015
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{SIZE}}ms;',
1016
  ],
1017
  'condition' => [
1018
+ '_ob_allow_hoveranimator' => 'yes',
 
1019
  ],
1020
  ]
1021
  );
1025
  [
1026
  'label' => __( 'Easing', 'ooohboi-steroids' ),
1027
  'type' => Controls_Manager::SELECT,
 
1028
  'default' => 'ease',
1029
  'separator' => 'before',
1030
  'options' => [
1034
  'ease-in-out' => __( 'Ease-in-out', 'ooohboi-steroids' ),
1035
  ],
1036
  'selectors' => [
1037
+ '{{WRAPPER}}.ob-is-hoveranimal' => 'transition-duration: {{_ob_hoveranimator_opacity_duration.SIZE}}ms, {{_ob_hoveranimator_y_duration.SIZE}}ms, {{_ob_hoveranimator_x_duration.SIZE}}ms, {{_ob_hoveranimator_transform_duration.SIZE}}ms, {{_ob_hoveranimator_blur_duration.SIZE}}ms;
1038
  transition-timing-function: {{_ob_hoveranimator_opacity_easing.VALUE}}, {{_ob_hoveranimator_y_easing.VALUE}}, {{_ob_hoveranimator_x_easing.VALUE}}, {{_ob_hoveranimator_transform_easing.VALUE}}, {{VALUE}};
1039
  transition-delay: {{_ob_hoveranimator_opacity_delay.SIZE}}ms, {{_ob_hoveranimator_y_delay.SIZE}}ms, {{_ob_hoveranimator_x_delay.SIZE}}ms, {{_ob_hoveranimator_transform_delay.SIZE}}ms, {{_ob_hoveranimator_blur_delay.SIZE}}ms;',
1040
  ],
1041
 
1042
  'condition' => [
1043
+ '_ob_allow_hoveranimator' => 'yes',
 
1044
  ],
1045
  ]
1046
  );
controls/ooohboi-overlaiz.php CHANGED
@@ -1,6 +1,4 @@
1
  <?php
2
- use Elementor\Core\Breakpoints\Breakpoint;
3
- use Elementor\Core\Breakpoints\Manager as Breakpoints_Manager;
4
  use Elementor\Controls_Manager;
5
  use Elementor\Controls_Stack;
6
  use Elementor\Group_Control_Border;
@@ -29,8 +27,7 @@ class OoohBoi_Overlaiz {
29
  public static function init() {
30
 
31
  add_action( 'elementor/element/section/section_background_overlay/before_section_end', [ __CLASS__, 'ooohboi_overlaiz_get_controls' ], 10, 2 );
32
- add_action( 'elementor/element/column/section_background_overlay/before_section_end', [ __CLASS__, 'ooohboi_overlaiz_get_controls' ], 10, 2 );
33
- add_action( 'elementor/element/container/section_background_overlay/before_section_end', [ __CLASS__, 'ooohboi_overlaiz_get_controls' ], 10, 2 );
34
 
35
  }
36
 
@@ -38,8 +35,8 @@ class OoohBoi_Overlaiz {
38
 
39
  // selector based on the current element
40
  $selector = '{{WRAPPER}} > .elementor-column-wrap > .elementor-background-overlay, {{WRAPPER}} > .elementor-widget-wrap > .elementor-background-overlay';
41
- if( 'section' == $element->get_name() ) $selector = '{{WRAPPER}} > .elementor-background-overlay';
42
- elseif( 'container' == $element->get_name() ) $selector = '{{WRAPPER}}.e-container--column:before';
43
 
44
 
45
  $element->add_control(
@@ -391,7 +388,7 @@ class OoohBoi_Overlaiz {
391
  'selector' => $selector,
392
  'condition' => [
393
  '_ob_overlaiz_use_it' => 'yes',
394
- 'background_overlay_background' => [ 'classic', 'gradient' ],
395
  ],
396
  ]
397
  );
@@ -401,18 +398,13 @@ class OoohBoi_Overlaiz {
401
  [
402
  'label' => __( 'Border Radius', 'ooohboi-steroids' ),
403
  'type' => Controls_Manager::DIMENSIONS,
404
- 'size_units' => [ 'px', '%' ],
405
- 'default' => [
406
- 'unit' => 'px',
407
- 'size' => 0,
408
- ],
409
  'selectors' => [
410
  $selector => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
411
  ],
412
  'condition' => [
413
  '_ob_overlaiz_use_it' => 'yes',
414
- 'background_overlay_background' => [ 'classic', 'gradient' ],
415
- '_ob_overlaiz_popover_border' => 'yes',
416
  ],
417
  ]
418
  );
@@ -453,7 +445,6 @@ class OoohBoi_Overlaiz {
453
  'label' => __( 'Clip path', 'ooohboi-steroids' ),
454
  'type' => Controls_Manager::POPOVER_TOGGLE,
455
  'return_value' => 'yes',
456
- 'frontend_available' => true,
457
  'condition' => [
458
  '_ob_overlaiz_use_it' => 'yes',
459
  'background_overlay_background' => [ 'classic', 'gradient' ],
@@ -480,7 +471,6 @@ class OoohBoi_Overlaiz {
480
  'condition' => [
481
  '_ob_overlaiz_use_it' => 'yes',
482
  'background_overlay_background' => [ 'classic', 'gradient' ],
483
- '_ob_overlaiz_clip_path_popover' => 'yes',
484
  ],
485
  ]
486
  );
@@ -499,7 +489,7 @@ class OoohBoi_Overlaiz {
499
  'condition' => [
500
  '_ob_overlaiz_use_it' => 'yes',
501
  'background_overlay_background' => [ 'classic', 'gradient' ],
502
-
503
  ],
504
  ]
505
  );
@@ -522,7 +512,7 @@ class OoohBoi_Overlaiz {
522
  'condition' => [
523
  '_ob_overlaiz_use_it' => 'yes',
524
  'background_overlay_background' => [ 'classic', 'gradient' ],
525
- '_ob_overlaiz_popover_masq' => 'yes',
526
  ],
527
  ]
528
  );
@@ -551,8 +541,8 @@ class OoohBoi_Overlaiz {
551
  'condition' => [
552
  '_ob_overlaiz_use_it' => 'yes',
553
  'background_overlay_background' => [ 'classic', 'gradient' ],
554
- '_ob_overlaiz_mask_img[url]!' => '',
555
- '_ob_overlaiz_popover_masq' => 'yes',
556
  ],
557
  ]
558
  );
@@ -576,8 +566,8 @@ class OoohBoi_Overlaiz {
576
  'condition' => [
577
  '_ob_overlaiz_use_it' => 'yes',
578
  'background_overlay_background' => [ 'classic', 'gradient' ],
579
- '_ob_overlaiz_mask_img[url]!' => '',
580
- '_ob_overlaiz_popover_masq' => 'yes',
581
  ],
582
  ]
583
  );
@@ -608,9 +598,9 @@ class OoohBoi_Overlaiz {
608
  'condition' => [
609
  '_ob_overlaiz_use_it' => 'yes',
610
  'background_overlay_background' => [ 'classic', 'gradient' ],
 
611
  '_ob_overlaiz_mask_size' => [ 'initial' ],
612
- '_ob_overlaiz_mask_img[url]!' => '',
613
- '_ob_overlaiz_popover_masq' => 'yes',
614
  ],
615
  'device_args' => [
616
  Controls_Stack::RESPONSIVE_TABLET => [
@@ -620,8 +610,8 @@ class OoohBoi_Overlaiz {
620
  'condition' => [
621
  '_ob_overlaiz_use_it' => 'yes',
622
  'background_overlay_background' => [ 'classic', 'gradient' ],
623
- '_ob_overlaiz_mask_size_tablet' => [ 'initial' ],
624
- '_ob_overlaiz_popover_masq' => 'yes',
625
  ],
626
  ],
627
  Controls_Stack::RESPONSIVE_MOBILE => [
@@ -631,8 +621,8 @@ class OoohBoi_Overlaiz {
631
  'condition' => [
632
  '_ob_overlaiz_use_it' => 'yes',
633
  'background_overlay_background' => [ 'classic', 'gradient' ],
 
634
  '_ob_overlaiz_mask_size_mobile' => [ 'initial' ],
635
- '_ob_overlaiz_popover_masq' => 'yes',
636
  ],
637
  ],
638
  ],
@@ -657,8 +647,8 @@ class OoohBoi_Overlaiz {
657
  'condition' => [
658
  '_ob_overlaiz_use_it' => 'yes',
659
  'background_overlay_background' => [ 'classic', 'gradient' ],
 
660
  '_ob_overlaiz_mask_img[url]!' => '',
661
- '_ob_overlaiz_popover_masq' => 'yes',
662
  ],
663
  ]
664
  );
1
  <?php
 
 
2
  use Elementor\Controls_Manager;
3
  use Elementor\Controls_Stack;
4
  use Elementor\Group_Control_Border;
27
  public static function init() {
28
 
29
  add_action( 'elementor/element/section/section_background_overlay/before_section_end', [ __CLASS__, 'ooohboi_overlaiz_get_controls' ], 10, 2 );
30
+ add_action( 'elementor/element/column/section_background_overlay/before_section_end', [ __CLASS__, 'ooohboi_overlaiz_get_controls' ], 10, 2 );
 
31
 
32
  }
33
 
35
 
36
  // selector based on the current element
37
  $selector = '{{WRAPPER}} > .elementor-column-wrap > .elementor-background-overlay, {{WRAPPER}} > .elementor-widget-wrap > .elementor-background-overlay';
38
+ if( 'section' == $element->get_name() )
39
+ $selector = '{{WRAPPER}} > .elementor-background-overlay';
40
 
41
 
42
  $element->add_control(
388
  'selector' => $selector,
389
  'condition' => [
390
  '_ob_overlaiz_use_it' => 'yes',
391
+ 'background_overlay_background' => [ 'classic', 'gradient' ],
392
  ],
393
  ]
394
  );
398
  [
399
  'label' => __( 'Border Radius', 'ooohboi-steroids' ),
400
  'type' => Controls_Manager::DIMENSIONS,
401
+ 'size_units' => [ 'px', '%' ],
 
 
 
 
402
  'selectors' => [
403
  $selector => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
404
  ],
405
  'condition' => [
406
  '_ob_overlaiz_use_it' => 'yes',
407
+ 'background_overlay_background' => [ 'classic', 'gradient' ],
 
408
  ],
409
  ]
410
  );
445
  'label' => __( 'Clip path', 'ooohboi-steroids' ),
446
  'type' => Controls_Manager::POPOVER_TOGGLE,
447
  'return_value' => 'yes',
 
448
  'condition' => [
449
  '_ob_overlaiz_use_it' => 'yes',
450
  'background_overlay_background' => [ 'classic', 'gradient' ],
471
  'condition' => [
472
  '_ob_overlaiz_use_it' => 'yes',
473
  'background_overlay_background' => [ 'classic', 'gradient' ],
 
474
  ],
475
  ]
476
  );
489
  'condition' => [
490
  '_ob_overlaiz_use_it' => 'yes',
491
  'background_overlay_background' => [ 'classic', 'gradient' ],
492
+ /*'background_overlay_image[url]!' => '',*/
493
  ],
494
  ]
495
  );
512
  'condition' => [
513
  '_ob_overlaiz_use_it' => 'yes',
514
  'background_overlay_background' => [ 'classic', 'gradient' ],
515
+ /*'background_overlay_image[url]!' => '',*/
516
  ],
517
  ]
518
  );
541
  'condition' => [
542
  '_ob_overlaiz_use_it' => 'yes',
543
  'background_overlay_background' => [ 'classic', 'gradient' ],
544
+ /*'background_overlay_image[url]!' => '', */
545
+ '_ob_overlaiz_mask_img[url]!' => '',
546
  ],
547
  ]
548
  );
566
  'condition' => [
567
  '_ob_overlaiz_use_it' => 'yes',
568
  'background_overlay_background' => [ 'classic', 'gradient' ],
569
+ /*'background_overlay_image[url]!' => '',*/
570
+ '_ob_overlaiz_mask_img[url]!' => '',
571
  ],
572
  ]
573
  );
598
  'condition' => [
599
  '_ob_overlaiz_use_it' => 'yes',
600
  'background_overlay_background' => [ 'classic', 'gradient' ],
601
+ /*'background_overlay_image[url]!' => '',*/
602
  '_ob_overlaiz_mask_size' => [ 'initial' ],
603
+ '_ob_overlaiz_mask_img[url]!' => '',
 
604
  ],
605
  'device_args' => [
606
  Controls_Stack::RESPONSIVE_TABLET => [
610
  'condition' => [
611
  '_ob_overlaiz_use_it' => 'yes',
612
  'background_overlay_background' => [ 'classic', 'gradient' ],
613
+ /*'background_overlay_image[url]!' => '',*/
614
+ '_ob_overlaiz_mask_size_tablet' => [ 'initial' ],
615
  ],
616
  ],
617
  Controls_Stack::RESPONSIVE_MOBILE => [
621
  'condition' => [
622
  '_ob_overlaiz_use_it' => 'yes',
623
  'background_overlay_background' => [ 'classic', 'gradient' ],
624
+ /*'background_overlay_image[url]!' => '',*/
625
  '_ob_overlaiz_mask_size_mobile' => [ 'initial' ],
 
626
  ],
627
  ],
628
  ],
647
  'condition' => [
648
  '_ob_overlaiz_use_it' => 'yes',
649
  'background_overlay_background' => [ 'classic', 'gradient' ],
650
+ /*'background_overlay_image[url]!' => '',*/
651
  '_ob_overlaiz_mask_img[url]!' => '',
 
652
  ],
653
  ]
654
  );
controls/ooohboi-overlay-underlay.php CHANGED
@@ -19,8 +19,6 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  */
20
  class OoohBoi_Overlay_Underlay {
21
 
22
- static $should_script_enqueue = false;
23
-
24
  /**
25
  * Initialize
26
  *
@@ -36,55 +34,31 @@ class OoohBoi_Overlay_Underlay {
36
  add_action( 'elementor/element/wp-post/document_settings/before_section_end', [ __CLASS__, 'poopart_remove_horizontal_scroller' ] );
37
  add_action( 'elementor/element/wp-page/document_settings/before_section_end', [ __CLASS__, 'poopart_remove_horizontal_scroller' ] );
38
 
39
- /* should enqueue? */
40
- add_action( 'elementor/frontend/widget/before_render', [ __CLASS__, 'should_script_enqueue' ] );
41
- /* add script */
42
- add_action( 'elementor/preview/enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
43
-
44
  }
45
 
46
- /* enqueue script JS */
47
- public static function enqueue_scripts() {
48
-
49
- $extension_js = plugin_dir_path( __DIR__ ) . 'assets/js/poopart-min.js';
50
 
51
- if( file_exists( $extension_js ) ) {
52
- wp_add_inline_script( 'elementor-frontend', file_get_contents( $extension_js ) );
53
  }
54
 
55
- }
56
- /* should enqueue? */
57
- public static function should_script_enqueue( $element ) {
58
-
59
- if( self::$should_script_enqueue ) return;
60
-
61
- if( 'yes' == $element->get_settings_for_display( '_ob_butterbutton_use_it' ) ) {
62
-
63
- self::$should_script_enqueue = true;
64
- self::enqueue_scripts();
65
-
66
- remove_action( 'elementor/frontend/section/before_render', [ __CLASS__, 'should_script_enqueue' ] );
67
  }
68
- }
69
-
70
- public static function add_attributes( Element_Base $element ) {
71
-
72
- if ( in_array( $element->get_name(), [ 'section', 'column', 'container' ] ) ) return;
73
- if ( \Elementor\Plugin::instance()->editor->is_edit_mode() ) return;
74
 
75
  $settings = $element->get_settings_for_display();
76
 
77
- if ( isset( $settings[ '_ob_poopart_use' ] ) && 'yes' === $settings[ '_ob_poopart_use' ] ) {
78
-
79
- $element->add_render_attribute( '_wrapper', [
80
- 'class' => 'ob-has-background-overlay'
81
- ] );
82
 
 
 
83
  }
84
 
85
  }
86
 
87
-
88
  public static function add_section( Element_Base $element ) {
89
 
90
  $element->start_controls_section(
@@ -95,21 +69,6 @@ class OoohBoi_Overlay_Underlay {
95
  ]
96
  );
97
 
98
- // --------------------------------------------------------------------------------------------- CONTROL: Use Butter Button
99
- $element->add_control(
100
- '_ob_poopart_use',
101
- [
102
- 'label' => __( 'Enable PoopArt?', 'ooohboi-steroids' ),
103
- 'separator' => 'after',
104
- 'type' => Controls_Manager::SWITCHER,
105
- 'label_on' => __( 'Yes', 'ooohboi-steroids' ),
106
- 'label_off' => __( 'No', 'ooohboi-steroids' ),
107
- 'return_value' => 'yes',
108
- 'default' => 'yes',
109
- 'frontend_available' => true,
110
- ]
111
- );
112
-
113
  // --------------------------------------------------------------------------------------------- START 2 TABS Overlay & Underlay
114
  $element->start_controls_tabs( '_ob_steroids_tabs' );
115
 
@@ -126,9 +85,6 @@ class OoohBoi_Overlay_Underlay {
126
  [
127
  'name' => '_ob_steroids_overlay_background',
128
  'selector' => '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:before',
129
- 'condition' => [
130
- '_ob_poopart_use' => 'yes',
131
- ],
132
  ]
133
  );
134
  // --------------------------------------------------------------------------------------------- CONTROL BACKGROUND OPACITY
@@ -151,7 +107,6 @@ class OoohBoi_Overlay_Underlay {
151
  ],
152
  'condition' => [
153
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
154
- '_ob_poopart_use' => 'yes',
155
  ],
156
  ]
157
  );
@@ -163,7 +118,6 @@ class OoohBoi_Overlay_Underlay {
163
  'selector' => '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:before',
164
  'condition' => [
165
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
166
- '_ob_poopart_use' => 'yes',
167
  ],
168
  ]
169
  );
@@ -190,7 +144,6 @@ class OoohBoi_Overlay_Underlay {
190
  ],
191
  'condition' => [
192
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
193
- '_ob_poopart_use' => 'yes',
194
  ],
195
  ]
196
  );
@@ -204,7 +157,6 @@ class OoohBoi_Overlay_Underlay {
204
  'frontend_available' => true,
205
  'condition' => [
206
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
207
- '_ob_poopart_use' => 'yes',
208
  ],
209
  ]
210
  );
@@ -250,8 +202,6 @@ class OoohBoi_Overlay_Underlay {
250
  'condition' => [
251
  '_ob_steroids_overlay_w_alt' => '',
252
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
253
- '_ob_steroids_overlay_popover_whyxrot' => 'yes',
254
- '_ob_poopart_use' => 'yes',
255
  ],
256
  ]
257
  );
@@ -267,8 +217,6 @@ class OoohBoi_Overlay_Underlay {
267
  ],
268
  'condition' => [
269
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
270
- '_ob_steroids_overlay_popover_whyxrot' => 'yes',
271
- '_ob_poopart_use' => 'yes',
272
  ],
273
  ]
274
  );
@@ -311,8 +259,6 @@ class OoohBoi_Overlay_Underlay {
311
  'condition' => [
312
  '_ob_steroids_overlay_h_alt' => '',
313
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
314
- '_ob_steroids_overlay_popover_whyxrot' => 'yes',
315
- '_ob_poopart_use' => 'yes',
316
  ],
317
  ]
318
  );
@@ -328,8 +274,6 @@ class OoohBoi_Overlay_Underlay {
328
  ],
329
  'condition' => [
330
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
331
- '_ob_steroids_overlay_popover_whyxrot' => 'yes',
332
- '_ob_poopart_use' => 'yes',
333
  ],
334
  ]
335
  );
@@ -372,8 +316,6 @@ class OoohBoi_Overlay_Underlay {
372
  'condition' => [
373
  '_ob_steroids_overlay_y_alt' => '',
374
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
375
- '_ob_steroids_overlay_popover_whyxrot' => 'yes',
376
- '_ob_poopart_use' => 'yes',
377
  ],
378
  ]
379
  );
@@ -389,8 +331,6 @@ class OoohBoi_Overlay_Underlay {
389
  ],
390
  'condition' => [
391
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
392
- '_ob_steroids_overlay_popover_whyxrot' => 'yes',
393
- '_ob_poopart_use' => 'yes',
394
  ],
395
  ]
396
  );
@@ -433,8 +373,6 @@ class OoohBoi_Overlay_Underlay {
433
  'condition' => [
434
  '_ob_steroids_overlay_x_alt' => '',
435
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
436
- '_ob_steroids_overlay_popover_whyxrot' => 'yes',
437
- '_ob_poopart_use' => 'yes',
438
  ],
439
  ]
440
  );
@@ -450,8 +388,6 @@ class OoohBoi_Overlay_Underlay {
450
  ],
451
  'condition' => [
452
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
453
- '_ob_steroids_overlay_popover_whyxrot' => 'yes',
454
- '_ob_poopart_use' => 'yes',
455
  ],
456
  ]
457
  );
@@ -477,7 +413,6 @@ class OoohBoi_Overlay_Underlay {
477
  ],
478
  'condition' => [
479
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
480
- '_ob_poopart_use' => 'yes',
481
  ],
482
  ]
483
  );
@@ -494,7 +429,6 @@ class OoohBoi_Overlay_Underlay {
494
  'frontend_available' => true,
495
  'condition' => [
496
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
497
- '_ob_poopart_use' => 'yes',
498
  ],
499
  ]
500
  );
@@ -525,8 +459,6 @@ class OoohBoi_Overlay_Underlay {
525
  ],
526
  'condition' => [
527
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
528
- '_ob_steroids_overlay_popover_border' => 'yes',
529
- '_ob_poopart_use' => 'yes',
530
  ],
531
  ]
532
  );
@@ -543,7 +475,6 @@ class OoohBoi_Overlay_Underlay {
543
  'frontend_available' => true,
544
  'condition' => [
545
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
546
- '_ob_poopart_use' => 'yes',
547
  ],
548
  ]
549
  );
@@ -565,8 +496,6 @@ class OoohBoi_Overlay_Underlay {
565
  ],
566
  'condition' => [
567
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
568
- '_ob_steroids_overlay_popover_masq' => 'yes',
569
- '_ob_poopart_use' => 'yes',
570
  ],
571
  ]
572
  );
@@ -595,8 +524,6 @@ class OoohBoi_Overlay_Underlay {
595
  'condition' => [
596
  '_ob_steroids_overlay_mask_img[url]!' => '',
597
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
598
- '_ob_steroids_overlay_popover_masq' => 'yes',
599
- '_ob_poopart_use' => 'yes',
600
  ],
601
  ]
602
  );
@@ -620,8 +547,6 @@ class OoohBoi_Overlay_Underlay {
620
  'condition' => [
621
  '_ob_steroids_overlay_mask_img[url]!' => '',
622
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
623
- '_ob_steroids_overlay_popover_masq' => 'yes',
624
- '_ob_poopart_use' => 'yes',
625
  ],
626
  ]
627
  );
@@ -653,8 +578,6 @@ class OoohBoi_Overlay_Underlay {
653
  '_ob_steroids_overlay_mask_size' => [ 'initial' ],
654
  '_ob_steroids_overlay_mask_img[url]!' => '',
655
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
656
- '_ob_steroids_overlay_popover_masq' => 'yes',
657
- '_ob_poopart_use' => 'yes',
658
  ],
659
  'device_args' => [
660
  Controls_Stack::RESPONSIVE_TABLET => [
@@ -662,9 +585,7 @@ class OoohBoi_Overlay_Underlay {
662
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:before' => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
663
  ],
664
  'condition' => [
665
- '_ob_steroids_overlay_mask_size_tablet' => [ 'initial' ],
666
- '_ob_steroids_overlay_popover_masq' => 'yes',
667
- '_ob_poopart_use' => 'yes',
668
  ],
669
  ],
670
  Controls_Stack::RESPONSIVE_MOBILE => [
@@ -673,8 +594,6 @@ class OoohBoi_Overlay_Underlay {
673
  ],
674
  'condition' => [
675
  '_ob_steroids_overlay_mask_size_mobile' => [ 'initial' ],
676
- '_ob_steroids_overlay_popover_masq' => 'yes',
677
- '_ob_poopart_use' => 'yes',
678
  ],
679
  ],
680
  ],
@@ -699,8 +618,6 @@ class OoohBoi_Overlay_Underlay {
699
  'condition' => [
700
  '_ob_steroids_overlay_mask_img[url]!' => '',
701
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
702
- '_ob_steroids_overlay_popover_masq' => 'yes',
703
- '_ob_poopart_use' => 'yes',
704
  ],
705
  ]
706
  );
@@ -725,7 +642,6 @@ class OoohBoi_Overlay_Underlay {
725
  ],
726
  'condition' => [
727
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
728
- '_ob_poopart_use' => 'yes',
729
  ],
730
  ]
731
  );
@@ -744,7 +660,6 @@ class OoohBoi_Overlay_Underlay {
744
  'label_block' => false,
745
  'condition' => [
746
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
747
- '_ob_poopart_use' => 'yes',
748
  ],
749
  ]
750
  );
@@ -765,10 +680,7 @@ class OoohBoi_Overlay_Underlay {
765
  Group_Control_Background::get_type(),
766
  [
767
  'name' => '_ob_steroids_underlay_background',
768
- 'selector' => '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after',
769
- 'condition' => [
770
- '_ob_poopart_use' => 'yes',
771
- ],
772
  ]
773
  );
774
  // --------------------------------------------------------------------------------------------- CONTROL BACKGROUND OPACITY
@@ -791,7 +703,6 @@ class OoohBoi_Overlay_Underlay {
791
  ],
792
  'condition' => [
793
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
794
- '_ob_poopart_use' => 'yes',
795
  ],
796
  ]
797
  );
@@ -803,7 +714,6 @@ class OoohBoi_Overlay_Underlay {
803
  'selector' => '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after',
804
  'condition' => [
805
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
806
- '_ob_poopart_use' => 'yes',
807
  ],
808
  ]
809
  );
@@ -830,7 +740,6 @@ class OoohBoi_Overlay_Underlay {
830
  ],
831
  'condition' => [
832
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
833
- '_ob_poopart_use' => 'yes',
834
  ],
835
  ]
836
  );
@@ -844,7 +753,6 @@ class OoohBoi_Overlay_Underlay {
844
  'frontend_available' => true,
845
  'condition' => [
846
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
847
- '_ob_poopart_use' => 'yes',
848
  ],
849
  ]
850
  );
@@ -889,8 +797,6 @@ class OoohBoi_Overlay_Underlay {
889
  ],
890
  'condition' => [
891
  '_ob_steroids_underlay_w_alt' => '',
892
- '_ob_steroids_underlay_popover_whyxrot' => 'yes',
893
- '_ob_poopart_use' => 'yes',
894
  ],
895
  ]
896
  );
@@ -904,10 +810,6 @@ class OoohBoi_Overlay_Underlay {
904
  'selectors' => [
905
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => 'width: calc({{VALUE}});',
906
  ],
907
- 'condition' => [
908
- '_ob_steroids_underlay_popover_whyxrot' => 'yes',
909
- '_ob_poopart_use' => 'yes',
910
- ],
911
  ]
912
  );
913
  // --------------------------------------------------------------------------------------------- CONTROL POPOVER HEIGHT
@@ -948,8 +850,6 @@ class OoohBoi_Overlay_Underlay {
948
  ],
949
  'condition' => [
950
  '_ob_steroids_underlay_h_alt' => '',
951
- '_ob_steroids_underlay_popover_whyxrot' => 'yes',
952
- '_ob_poopart_use' => 'yes',
953
  ],
954
  ]
955
  );
@@ -963,10 +863,6 @@ class OoohBoi_Overlay_Underlay {
963
  'selectors' => [
964
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => 'height: calc({{VALUE}});',
965
  ],
966
- 'condition' => [
967
- '_ob_steroids_underlay_popover_whyxrot' => 'yes',
968
- '_ob_poopart_use' => 'yes',
969
- ],
970
  ]
971
  );
972
  // --------------------------------------------------------------------------------------------- CONTROL POPOVER OFFSET TOP
@@ -1007,8 +903,6 @@ class OoohBoi_Overlay_Underlay {
1007
  ],
1008
  'condition' => [
1009
  '_ob_steroids_underlay_y_alt' => '',
1010
- '_ob_steroids_underlay_popover_whyxrot' => 'yes',
1011
- '_ob_poopart_use' => 'yes',
1012
  ],
1013
  ]
1014
  );
@@ -1022,10 +916,6 @@ class OoohBoi_Overlay_Underlay {
1022
  'selectors' => [
1023
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => 'top: calc({{VALUE}});',
1024
  ],
1025
- 'condition' => [
1026
- '_ob_steroids_underlay_popover_whyxrot' => 'yes',
1027
- '_ob_poopart_use' => 'yes',
1028
- ],
1029
  ]
1030
  );
1031
  // --------------------------------------------------------------------------------------------- CONTROL POPOVER OFFSET LEFT
@@ -1066,8 +956,6 @@ class OoohBoi_Overlay_Underlay {
1066
  ],
1067
  'condition' => [
1068
  '_ob_steroids_underlay_x_alt' => '',
1069
- '_ob_steroids_underlay_popover_whyxrot' => 'yes',
1070
- '_ob_poopart_use' => 'yes',
1071
  ],
1072
  ]
1073
  );
@@ -1081,10 +969,6 @@ class OoohBoi_Overlay_Underlay {
1081
  'selectors' => [
1082
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => 'left: calc({{VALUE}});',
1083
  ],
1084
- 'condition' => [
1085
- '_ob_steroids_underlay_popover_whyxrot' => 'yes',
1086
- '_ob_poopart_use' => 'yes',
1087
- ],
1088
  ]
1089
  );
1090
  // --------------------------------------------------------------------------------------------- CONTROL POPOVER ROTATION
@@ -1107,10 +991,6 @@ class OoohBoi_Overlay_Underlay {
1107
  'selectors' => [
1108
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => 'transform: rotate({{SIZE}}deg);',
1109
  ],
1110
- 'condition' => [
1111
- '_ob_steroids_underlay_popover_whyxrot' => 'yes',
1112
- '_ob_poopart_use' => 'yes',
1113
- ],
1114
  ]
1115
  );
1116
 
@@ -1126,7 +1006,6 @@ class OoohBoi_Overlay_Underlay {
1126
  'frontend_available' => true,
1127
  'condition' => [
1128
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
1129
- '_ob_poopart_use' => 'yes',
1130
  ],
1131
  ]
1132
  );
@@ -1142,7 +1021,6 @@ class OoohBoi_Overlay_Underlay {
1142
  'selector' => '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after',
1143
  'condition' => [
1144
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
1145
- '_ob_poopart_use' => 'yes',
1146
  ],
1147
  ]
1148
  );
@@ -1158,8 +1036,6 @@ class OoohBoi_Overlay_Underlay {
1158
  ],
1159
  'condition' => [
1160
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
1161
- '_ob_steroids_underlay_popover_border' => 'yes',
1162
- '_ob_poopart_use' => 'yes',
1163
  ],
1164
  ]
1165
  );
@@ -1197,8 +1073,6 @@ class OoohBoi_Overlay_Underlay {
1197
  ],
1198
  'condition' => [
1199
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
1200
- '_ob_steroids_underlay_popover_masq' => 'yes',
1201
- '_ob_poopart_use' => 'yes',
1202
  ],
1203
  ]
1204
  );
@@ -1226,8 +1100,6 @@ class OoohBoi_Overlay_Underlay {
1226
  ],
1227
  'condition' => [
1228
  '_ob_steroids_underlay_mask_img[url]!' => '',
1229
- '_ob_steroids_underlay_popover_masq' => 'yes',
1230
- '_ob_poopart_use' => 'yes',
1231
  ],
1232
  ]
1233
  );
@@ -1250,8 +1122,6 @@ class OoohBoi_Overlay_Underlay {
1250
  ],
1251
  'condition' => [
1252
  '_ob_steroids_underlay_mask_img[url]!' => '',
1253
- '_ob_steroids_underlay_popover_masq' => 'yes',
1254
- '_ob_poopart_use' => 'yes',
1255
  ],
1256
  ]
1257
  );
@@ -1281,9 +1151,7 @@ class OoohBoi_Overlay_Underlay {
1281
  ],
1282
  'condition' => [
1283
  '_ob_steroids_underlay_mask_size' => [ 'initial' ],
1284
- '_ob_steroids_underlay_mask_img[url]!' => '',
1285
- '_ob_steroids_underlay_popover_masq' => 'yes',
1286
- '_ob_poopart_use' => 'yes',
1287
  ],
1288
  'device_args' => [
1289
  Controls_Stack::RESPONSIVE_TABLET => [
@@ -1291,9 +1159,7 @@ class OoohBoi_Overlay_Underlay {
1291
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
1292
  ],
1293
  'condition' => [
1294
- '_ob_steroids_underlay_mask_size_tablet' => [ 'initial' ],
1295
- '_ob_steroids_underlay_popover_masq' => 'yes',
1296
- '_ob_poopart_use' => 'yes',
1297
  ],
1298
  ],
1299
  Controls_Stack::RESPONSIVE_MOBILE => [
@@ -1302,8 +1168,6 @@ class OoohBoi_Overlay_Underlay {
1302
  ],
1303
  'condition' => [
1304
  '_ob_steroids_underlay_mask_size_mobile' => [ 'initial' ],
1305
- '_ob_steroids_underlay_popover_masq' => 'yes',
1306
- '_ob_poopart_use' => 'yes',
1307
  ],
1308
  ],
1309
  ],
@@ -1326,9 +1190,7 @@ class OoohBoi_Overlay_Underlay {
1326
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => '-webkit-mask-repeat: {{VALUE}}; mask-repeat: {{VALUE}};',
1327
  ],
1328
  'condition' => [
1329
- '_ob_steroids_underlay_mask_img[url]!' => '',
1330
- '_ob_steroids_underlay_popover_masq' => 'yes',
1331
- '_ob_poopart_use' => 'yes',
1332
  ],
1333
  ]
1334
  );
@@ -1352,8 +1214,7 @@ class OoohBoi_Overlay_Underlay {
1352
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => '{{VALUE}}',
1353
  ],
1354
  'condition' => [
1355
- '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
1356
- '_ob_poopart_use' => 'yes',
1357
  ],
1358
  ]
1359
  );
@@ -1372,7 +1233,6 @@ class OoohBoi_Overlay_Underlay {
1372
  'label_block' => false,
1373
  'condition' => [
1374
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
1375
- '_ob_poopart_use' => 'yes',
1376
  ],
1377
  ]
1378
  );
19
  */
20
  class OoohBoi_Overlay_Underlay {
21
 
 
 
22
  /**
23
  * Initialize
24
  *
34
  add_action( 'elementor/element/wp-post/document_settings/before_section_end', [ __CLASS__, 'poopart_remove_horizontal_scroller' ] );
35
  add_action( 'elementor/element/wp-page/document_settings/before_section_end', [ __CLASS__, 'poopart_remove_horizontal_scroller' ] );
36
 
 
 
 
 
 
37
  }
38
 
39
+ public static function add_attributes( Element_Base $element ) {
 
 
 
40
 
41
+ if ( in_array( $element->get_name(), [ 'section', 'column' ] ) ) {
42
+ return;
43
  }
44
 
45
+ if ( \Elementor\Plugin::instance()->editor->is_edit_mode() ) {
46
+ return;
 
 
 
 
 
 
 
 
 
 
47
  }
 
 
 
 
 
 
48
 
49
  $settings = $element->get_settings_for_display();
50
 
51
+ $overlay_bg = isset( $settings[ '_ob_steroids_overlay_background_background' ] ) ? $settings[ '_ob_steroids_overlay_background_background' ] : '';
52
+ $underlay_bg = isset( $settings[ '_ob_steroids_underlay_background_background' ] ) ? $settings[ '_ob_steroids_underlay_background_background' ] : '';
53
+
54
+ $has_background_overlay = ( in_array( $overlay_bg, [ 'classic', 'gradient' ], true ) || in_array( $underlay_bg, [ 'classic', 'gradient' ], true ) );
 
55
 
56
+ if ( $has_background_overlay ) {
57
+ $element->add_render_attribute( '_wrapper', 'class', 'ob-has-background-overlay' );
58
  }
59
 
60
  }
61
 
 
62
  public static function add_section( Element_Base $element ) {
63
 
64
  $element->start_controls_section(
69
  ]
70
  );
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  // --------------------------------------------------------------------------------------------- START 2 TABS Overlay & Underlay
73
  $element->start_controls_tabs( '_ob_steroids_tabs' );
74
 
85
  [
86
  'name' => '_ob_steroids_overlay_background',
87
  'selector' => '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:before',
 
 
 
88
  ]
89
  );
90
  // --------------------------------------------------------------------------------------------- CONTROL BACKGROUND OPACITY
107
  ],
108
  'condition' => [
109
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
110
  ],
111
  ]
112
  );
118
  'selector' => '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:before',
119
  'condition' => [
120
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
121
  ],
122
  ]
123
  );
144
  ],
145
  'condition' => [
146
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
147
  ],
148
  ]
149
  );
157
  'frontend_available' => true,
158
  'condition' => [
159
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
160
  ],
161
  ]
162
  );
202
  'condition' => [
203
  '_ob_steroids_overlay_w_alt' => '',
204
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
205
  ],
206
  ]
207
  );
217
  ],
218
  'condition' => [
219
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
220
  ],
221
  ]
222
  );
259
  'condition' => [
260
  '_ob_steroids_overlay_h_alt' => '',
261
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
262
  ],
263
  ]
264
  );
274
  ],
275
  'condition' => [
276
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
277
  ],
278
  ]
279
  );
316
  'condition' => [
317
  '_ob_steroids_overlay_y_alt' => '',
318
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
319
  ],
320
  ]
321
  );
331
  ],
332
  'condition' => [
333
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
334
  ],
335
  ]
336
  );
373
  'condition' => [
374
  '_ob_steroids_overlay_x_alt' => '',
375
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
376
  ],
377
  ]
378
  );
388
  ],
389
  'condition' => [
390
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
391
  ],
392
  ]
393
  );
413
  ],
414
  'condition' => [
415
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
416
  ],
417
  ]
418
  );
429
  'frontend_available' => true,
430
  'condition' => [
431
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
432
  ],
433
  ]
434
  );
459
  ],
460
  'condition' => [
461
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
462
  ],
463
  ]
464
  );
475
  'frontend_available' => true,
476
  'condition' => [
477
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
478
  ],
479
  ]
480
  );
496
  ],
497
  'condition' => [
498
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
499
  ],
500
  ]
501
  );
524
  'condition' => [
525
  '_ob_steroids_overlay_mask_img[url]!' => '',
526
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
527
  ],
528
  ]
529
  );
547
  'condition' => [
548
  '_ob_steroids_overlay_mask_img[url]!' => '',
549
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
550
  ],
551
  ]
552
  );
578
  '_ob_steroids_overlay_mask_size' => [ 'initial' ],
579
  '_ob_steroids_overlay_mask_img[url]!' => '',
580
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
581
  ],
582
  'device_args' => [
583
  Controls_Stack::RESPONSIVE_TABLET => [
585
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:before' => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
586
  ],
587
  'condition' => [
588
+ '_ob_steroids_overlay_mask_size_tablet' => [ 'initial' ],
 
 
589
  ],
590
  ],
591
  Controls_Stack::RESPONSIVE_MOBILE => [
594
  ],
595
  'condition' => [
596
  '_ob_steroids_overlay_mask_size_mobile' => [ 'initial' ],
 
 
597
  ],
598
  ],
599
  ],
618
  'condition' => [
619
  '_ob_steroids_overlay_mask_img[url]!' => '',
620
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
 
621
  ],
622
  ]
623
  );
642
  ],
643
  'condition' => [
644
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
645
  ],
646
  ]
647
  );
660
  'label_block' => false,
661
  'condition' => [
662
  '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
663
  ],
664
  ]
665
  );
680
  Group_Control_Background::get_type(),
681
  [
682
  'name' => '_ob_steroids_underlay_background',
683
+ 'selector' => '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after',
 
 
 
684
  ]
685
  );
686
  // --------------------------------------------------------------------------------------------- CONTROL BACKGROUND OPACITY
703
  ],
704
  'condition' => [
705
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
 
706
  ],
707
  ]
708
  );
714
  'selector' => '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after',
715
  'condition' => [
716
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
 
717
  ],
718
  ]
719
  );
740
  ],
741
  'condition' => [
742
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
 
743
  ],
744
  ]
745
  );
753
  'frontend_available' => true,
754
  'condition' => [
755
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
 
756
  ],
757
  ]
758
  );
797
  ],
798
  'condition' => [
799
  '_ob_steroids_underlay_w_alt' => '',
 
 
800
  ],
801
  ]
802
  );
810
  'selectors' => [
811
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => 'width: calc({{VALUE}});',
812
  ],
 
 
 
 
813
  ]
814
  );
815
  // --------------------------------------------------------------------------------------------- CONTROL POPOVER HEIGHT
850
  ],
851
  'condition' => [
852
  '_ob_steroids_underlay_h_alt' => '',
 
 
853
  ],
854
  ]
855
  );
863
  'selectors' => [
864
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => 'height: calc({{VALUE}});',
865
  ],
 
 
 
 
866
  ]
867
  );
868
  // --------------------------------------------------------------------------------------------- CONTROL POPOVER OFFSET TOP
903
  ],
904
  'condition' => [
905
  '_ob_steroids_underlay_y_alt' => '',
 
 
906
  ],
907
  ]
908
  );
916
  'selectors' => [
917
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => 'top: calc({{VALUE}});',
918
  ],
 
 
 
 
919
  ]
920
  );
921
  // --------------------------------------------------------------------------------------------- CONTROL POPOVER OFFSET LEFT
956
  ],
957
  'condition' => [
958
  '_ob_steroids_underlay_x_alt' => '',
 
 
959
  ],
960
  ]
961
  );
969
  'selectors' => [
970
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => 'left: calc({{VALUE}});',
971
  ],
 
 
 
 
972
  ]
973
  );
974
  // --------------------------------------------------------------------------------------------- CONTROL POPOVER ROTATION
991
  'selectors' => [
992
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => 'transform: rotate({{SIZE}}deg);',
993
  ],
 
 
 
 
994
  ]
995
  );
996
 
1006
  'frontend_available' => true,
1007
  'condition' => [
1008
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
 
1009
  ],
1010
  ]
1011
  );
1021
  'selector' => '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after',
1022
  'condition' => [
1023
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
 
1024
  ],
1025
  ]
1026
  );
1036
  ],
1037
  'condition' => [
1038
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
 
 
1039
  ],
1040
  ]
1041
  );
1073
  ],
1074
  'condition' => [
1075
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
 
 
1076
  ],
1077
  ]
1078
  );
1100
  ],
1101
  'condition' => [
1102
  '_ob_steroids_underlay_mask_img[url]!' => '',
 
 
1103
  ],
1104
  ]
1105
  );
1122
  ],
1123
  'condition' => [
1124
  '_ob_steroids_underlay_mask_img[url]!' => '',
 
 
1125
  ],
1126
  ]
1127
  );
1151
  ],
1152
  'condition' => [
1153
  '_ob_steroids_underlay_mask_size' => [ 'initial' ],
1154
+ '_ob_steroids_underlay_mask_img[url]!' => '',
 
 
1155
  ],
1156
  'device_args' => [
1157
  Controls_Stack::RESPONSIVE_TABLET => [
1159
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
1160
  ],
1161
  'condition' => [
1162
+ '_ob_steroids_underlay_mask_size_tablet' => [ 'initial' ],
 
 
1163
  ],
1164
  ],
1165
  Controls_Stack::RESPONSIVE_MOBILE => [
1168
  ],
1169
  'condition' => [
1170
  '_ob_steroids_underlay_mask_size_mobile' => [ 'initial' ],
 
 
1171
  ],
1172
  ],
1173
  ],
1190
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => '-webkit-mask-repeat: {{VALUE}}; mask-repeat: {{VALUE}};',
1191
  ],
1192
  'condition' => [
1193
+ '_ob_steroids_underlay_mask_img[url]!' => '',
 
 
1194
  ],
1195
  ]
1196
  );
1214
  '{{WRAPPER}}.ob-has-background-overlay > .elementor-widget-container:after' => '{{VALUE}}',
1215
  ],
1216
  'condition' => [
1217
+ '_ob_steroids_overlay_background_background' => [ 'classic', 'gradient' ],
 
1218
  ],
1219
  ]
1220
  );
1233
  'label_block' => false,
1234
  'condition' => [
1235
  '_ob_steroids_underlay_background_background' => [ 'classic', 'gradient' ],
 
1236
  ],
1237
  ]
1238
  );
controls/ooohboi-perspektive.php CHANGED
@@ -16,8 +16,6 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  */
17
  class OoohBoi_Perspektive {
18
 
19
- static $should_script_enqueue = false;
20
-
21
  /**
22
  * Initialize
23
  *
@@ -30,35 +28,6 @@ class OoohBoi_Perspektive {
30
  add_action( 'elementor/element/common/_section_style/before_section_end', [ __CLASS__, 'ob_perspektive_add_section' ] );
31
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'ob_perspektive_add_attributes' ] );
32
 
33
- /* should enqueue? */
34
- add_action( 'elementor/frontend/widget/before_render', [ __CLASS__, 'should_script_enqueue' ] );
35
- /* add script */
36
- add_action( 'elementor/preview/enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
37
-
38
- }
39
-
40
- /* enqueue script JS */
41
- public static function enqueue_scripts() {
42
-
43
- $extension_js = plugin_dir_path( __DIR__ ) . 'assets/js/perspektive-min.js';
44
-
45
- if( file_exists( $extension_js ) ) {
46
- wp_add_inline_script( 'elementor-frontend', file_get_contents( $extension_js ) );
47
- }
48
-
49
- }
50
- /* should enqueue? */
51
- public static function should_script_enqueue( $element ) {
52
-
53
- if( self::$should_script_enqueue ) return;
54
-
55
- if( 'yes' == $element->get_settings_for_display( '_ob_perspektive_use' ) ) {
56
-
57
- self::$should_script_enqueue = true;
58
- self::enqueue_scripts();
59
-
60
- remove_action( 'elementor/frontend/section/before_render', [ __CLASS__, 'should_script_enqueue' ] );
61
- }
62
  }
63
 
64
  public static function ob_perspektive_add_attributes( Element_Base $element ) {
16
  */
17
  class OoohBoi_Perspektive {
18
 
 
 
19
  /**
20
  * Initialize
21
  *
28
  add_action( 'elementor/element/common/_section_style/before_section_end', [ __CLASS__, 'ob_perspektive_add_section' ] );
29
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'ob_perspektive_add_attributes' ] );
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
32
 
33
  public static function ob_perspektive_add_attributes( Element_Base $element ) {
controls/ooohboi-photomorph.php CHANGED
@@ -14,8 +14,6 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  */
15
  class OoohBoi_PhotoMorph {
16
 
17
- static $should_script_enqueue = false;
18
-
19
  /**
20
  * Initialize
21
  *
@@ -28,35 +26,6 @@ class OoohBoi_PhotoMorph {
28
  add_action( 'elementor/element/image/section_style_image/before_section_end', [ __CLASS__, 'ooohboi_photomorph_get_controls' ], 10, 2 );
29
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
30
 
31
- /* should enqueue? */
32
- add_action( 'elementor/frontend/widget/before_render', [ __CLASS__, 'should_script_enqueue' ] );
33
- /* add script */
34
- add_action( 'elementor/preview/enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
35
-
36
- }
37
-
38
- /* enqueue script JS */
39
- public static function enqueue_scripts() {
40
-
41
- $extension_js = plugin_dir_path( __DIR__ ) . 'assets/js/photomorph-min.js';
42
-
43
- if( file_exists( $extension_js ) ) {
44
- wp_add_inline_script( 'elementor-frontend', file_get_contents( $extension_js ) );
45
- }
46
-
47
- }
48
- /* should enqueue? */
49
- public static function should_script_enqueue( $element ) {
50
-
51
- if( self::$should_script_enqueue ) return;
52
-
53
- if( 'yes' == $element->get_settings_for_display( '_ob_photomorph_use' ) ) {
54
-
55
- self::$should_script_enqueue = true;
56
- self::enqueue_scripts();
57
-
58
- remove_action( 'elementor/frontend/section/before_render', [ __CLASS__, 'should_script_enqueue' ] );
59
- }
60
  }
61
 
62
  public static function add_attributes( $element ) {
14
  */
15
  class OoohBoi_PhotoMorph {
16
 
 
 
17
  /**
18
  * Initialize
19
  *
26
  add_action( 'elementor/element/image/section_style_image/before_section_end', [ __CLASS__, 'ooohboi_photomorph_get_controls' ], 10, 2 );
27
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  }
30
 
31
  public static function add_attributes( $element ) {
controls/ooohboi-pseudo.php CHANGED
@@ -19,8 +19,6 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  */
20
  class OoohBoi_Pseudo {
21
 
22
- static $should_script_enqueue = false;
23
-
24
  /**
25
  * Initialize
26
  *
@@ -31,68 +29,27 @@ class OoohBoi_Pseudo {
31
  public static function init() {
32
 
33
  add_action( 'elementor/element/column/section_advanced/after_section_end', [ __CLASS__, 'ooohboi_handle_pseudo' ] );
34
- add_action( 'elementor/element/container/section_layout/after_section_end', [ __CLASS__, 'ooohboi_handle_pseudo' ] );
35
-
36
- add_action( 'elementor/frontend/column/before_render', [ __CLASS__, 'ooohboi_before_render_hook' ] );
37
- add_action( 'elementor/frontend/container/before_render', [ __CLASS__, 'ooohboi_before_render_hook' ] );
38
-
39
- /* should enqueue? */
40
- add_action( 'elementor/frontend/column/before_render', [ __CLASS__, 'should_script_enqueue' ] );
41
- add_action( 'elementor/frontend/container/before_render', [ __CLASS__, 'should_script_enqueue' ] );
42
- /* add script */
43
- add_action( 'elementor/preview/enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
44
 
45
- }
46
-
47
- /* enqueue script JS */
48
- public static function enqueue_scripts() {
49
 
50
- $extension_js = plugin_dir_path( __DIR__ ) . 'assets/js/pseudo-min.js';
 
51
 
52
- if( file_exists( $extension_js ) ) {
53
- wp_add_inline_script( 'elementor-frontend', file_get_contents( $extension_js ) );
54
- }
55
 
56
- }
57
- /* should enqueue? */
58
- public static function should_script_enqueue( $element ) {
59
-
60
- if( self::$should_script_enqueue ) return;
61
-
62
- if( 'yes' == $element->get_settings_for_display( '_ob_column_has_pseudo' ) ) {
63
-
64
- self::$should_script_enqueue = true;
65
- self::enqueue_scripts();
66
-
67
- remove_action( 'elementor/frontend/section/before_render', [ __CLASS__, 'should_script_enqueue' ] );
68
- }
69
- }
70
 
71
- public static function ooohboi_before_render_hook( Element_Base $element ) {
72
 
73
- if ( \Elementor\Plugin::instance()->editor->is_edit_mode() ) return;
74
- $settings = $element->get_settings_for_display();
75
-
76
- if ( isset( $settings[ '_ob_column_has_pseudo' ] ) && 'yes' === $settings[ '_ob_column_has_pseudo' ] ) {
77
-
78
- $element->add_render_attribute( '_wrapper', [
79
- 'class' => 'ob-is-pseudo'
80
- ] );
81
-
82
- }
83
 
84
  }
85
 
86
-
87
  public static function ooohboi_handle_pseudo( Element_Base $element ) {
88
-
89
- $selector_before = '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before';
90
- $selector_after = '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after';
91
-
92
- if( 'container' === $element->get_type() ) {
93
- $selector_before = '{{WRAPPER}}.ob-is-pseudo > .ob-pseudo-before';
94
- $selector_after = '{{WRAPPER}}.ob-is-pseudo > .ob-pseudo-after';
95
- }
96
 
97
  // create panel
98
  $element->start_controls_section(
@@ -133,7 +90,7 @@ class OoohBoi_Pseudo {
133
  Group_Control_Background::get_type(),
134
  [
135
  'name' => '_ob_pseudo_before_background',
136
- 'selector' => $selector_before,
137
  'condition' => [
138
  '_ob_column_has_pseudo' => 'yes',
139
  ],
@@ -155,7 +112,7 @@ class OoohBoi_Pseudo {
155
  ],
156
  ],
157
  'selectors' => [
158
- $selector_before => 'opacity: {{SIZE}};',
159
  ],
160
  'condition' => [
161
  '_ob_column_has_pseudo' => 'yes',
@@ -168,7 +125,7 @@ class OoohBoi_Pseudo {
168
  Group_Control_Css_Filter::get_type(),
169
  [
170
  'name' => '_ob_pseudo_before_bg_filters',
171
- 'selector' => $selector_before,
172
  'condition' => [
173
  '_ob_column_has_pseudo' => 'yes',
174
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
@@ -194,7 +151,7 @@ class OoohBoi_Pseudo {
194
  'luminosity' => 'Luminosity',
195
  ],
196
  'selectors' => [
197
- $selector_before => 'mix-blend-mode: {{VALUE}}',
198
  ],
199
  'condition' => [
200
  '_ob_column_has_pseudo' => 'yes',
@@ -246,25 +203,22 @@ class OoohBoi_Pseudo {
246
  'condition' => [
247
  '_ob_column_has_pseudo' => 'yes',
248
  '_ob_pseudo_before_w_alt_tablet' => '',
249
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
250
  ],
251
  ],
252
  Controls_Stack::RESPONSIVE_MOBILE => [
253
  'condition' => [
254
  '_ob_column_has_pseudo' => 'yes',
255
  '_ob_pseudo_before_w_alt_mobile' => '',
256
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
257
  ],
258
  ],
259
  ],
260
  'selectors' => [
261
- $selector_before => 'width: {{SIZE}}{{UNIT}};',
262
  ],
263
  'condition' => [
264
  '_ob_column_has_pseudo' => 'yes',
265
  '_ob_pseudo_before_w_alt' => '',
266
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
267
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
268
  ],
269
  ]
270
  );
@@ -276,12 +230,11 @@ class OoohBoi_Pseudo {
276
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
277
  'type' => Controls_Manager::TEXT,
278
  'selectors' => [
279
- $selector_before => 'width: calc({{VALUE}});',
280
  ],
281
  'condition' => [
282
  '_ob_column_has_pseudo' => 'yes',
283
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
284
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
285
  ],
286
  ]
287
  );
@@ -311,25 +264,22 @@ class OoohBoi_Pseudo {
311
  'condition' => [
312
  '_ob_column_has_pseudo' => 'yes',
313
  '_ob_pseudo_before_h_alt_tablet' => '',
314
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
315
  ],
316
  ],
317
  Controls_Stack::RESPONSIVE_MOBILE => [
318
  'condition' => [
319
  '_ob_column_has_pseudo' => 'yes',
320
  '_ob_pseudo_before_h_alt_mobile' => '',
321
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
322
  ],
323
  ],
324
  ],
325
  'selectors' => [
326
- $selector_before => 'height: {{SIZE}}{{UNIT}};',
327
  ],
328
  'condition' => [
329
  '_ob_column_has_pseudo' => 'yes',
330
  '_ob_pseudo_before_h_alt' => '',
331
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
332
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
333
  ],
334
  ]
335
  );
@@ -341,12 +291,11 @@ class OoohBoi_Pseudo {
341
  'description' => __( 'Enter CSS calc value only! Like: 45% + 85px or 100% - 3em', 'ooohboi-steroids' ),
342
  'type' => Controls_Manager::TEXT,
343
  'selectors' => [
344
- $selector_before => 'height: calc({{VALUE}});',
345
  ],
346
  'condition' => [
347
  '_ob_column_has_pseudo' => 'yes',
348
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
349
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
350
  ],
351
  ]
352
  );
@@ -376,25 +325,22 @@ class OoohBoi_Pseudo {
376
  'condition' => [
377
  '_ob_column_has_pseudo' => 'yes',
378
  '_ob_pseudo_before_y_alt_tablet' => '',
379
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
380
  ],
381
  ],
382
  Controls_Stack::RESPONSIVE_MOBILE => [
383
  'condition' => [
384
  '_ob_column_has_pseudo' => 'yes',
385
  '_ob_pseudo_before_y_alt_mobile' => '',
386
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
387
  ],
388
  ],
389
  ],
390
  'selectors' => [
391
- $selector_before => 'top: {{SIZE}}{{UNIT}};',
392
  ],
393
  'condition' => [
394
  '_ob_column_has_pseudo' => 'yes',
395
  '_ob_pseudo_before_y_alt' => '',
396
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
397
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
398
  ],
399
  ]
400
  );
@@ -406,12 +352,11 @@ class OoohBoi_Pseudo {
406
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
407
  'type' => Controls_Manager::TEXT,
408
  'selectors' => [
409
- $selector_before => 'top: calc({{VALUE}});',
410
  ],
411
  'condition' => [
412
  '_ob_column_has_pseudo' => 'yes',
413
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
414
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
415
  ],
416
  ]
417
  );
@@ -441,25 +386,22 @@ class OoohBoi_Pseudo {
441
  'condition' => [
442
  '_ob_column_has_pseudo' => 'yes',
443
  '_ob_pseudo_before_x_alt_tablet' => '',
444
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
445
  ],
446
  ],
447
  Controls_Stack::RESPONSIVE_MOBILE => [
448
  'condition' => [
449
  '_ob_column_has_pseudo' => 'yes',
450
  '_ob_pseudo_before_x_alt_mobile' => '',
451
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
452
  ],
453
  ],
454
  ],
455
  'selectors' => [
456
- $selector_before => 'left: {{SIZE}}{{UNIT}};',
457
  ],
458
  'condition' => [
459
  '_ob_column_has_pseudo' => 'yes',
460
  '_ob_pseudo_before_x_alt' => '',
461
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
462
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
463
  ],
464
  ]
465
  );
@@ -471,12 +413,11 @@ class OoohBoi_Pseudo {
471
  'description' => __( 'Enter CSS calc value only! Like: 45% + 85px or 100% - 3em', 'ooohboi-steroids' ),
472
  'type' => Controls_Manager::TEXT,
473
  'selectors' => [
474
- $selector_before => 'left: calc({{VALUE}});',
475
  ],
476
  'condition' => [
477
  '_ob_column_has_pseudo' => 'yes',
478
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
479
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
480
  ],
481
  ]
482
  );
@@ -498,12 +439,11 @@ class OoohBoi_Pseudo {
498
  'size' => 0,
499
  ],
500
  'selectors' => [
501
- $selector_before => 'transform: rotate({{SIZE}}deg);',
502
  ],
503
  'condition' => [
504
  '_ob_column_has_pseudo' => 'yes',
505
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
506
- '_ob_pseudo_before_popover_whyxrot' => 'yes',
507
  ],
508
  ]
509
  );
@@ -533,7 +473,7 @@ class OoohBoi_Pseudo {
533
  [
534
  'name' => '_ob_pseudo_before_borders',
535
  'label' => __( 'Border', 'ooohboi-steroids' ),
536
- 'selector' => $selector_before,
537
  'condition' => [
538
  '_ob_column_has_pseudo' => 'yes',
539
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
@@ -548,12 +488,11 @@ class OoohBoi_Pseudo {
548
  'type' => Controls_Manager::DIMENSIONS,
549
  'size_units' => [ 'px', '%' ],
550
  'selectors' => [
551
- $selector_before => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
552
  ],
553
  'condition' => [
554
  '_ob_column_has_pseudo' => 'yes',
555
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
556
- '_ob_pseudo_before_popover_border' => 'yes',
557
  ],
558
  ]
559
  );
@@ -588,12 +527,11 @@ class OoohBoi_Pseudo {
588
  'url' => '',
589
  ],
590
  'selectors' => [
591
- $selector_before => '-webkit-mask-image: url("{{URL}}"); mask-image: url("{{URL}}"); -webkit-mask-mode: alpha; mask-mode: alpha;',
592
  ],
593
  'condition' => [
594
  '_ob_column_has_pseudo' => 'yes',
595
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
596
- '_ob_pseudo_before_popover_masq' => 'yes',
597
  ],
598
  ]
599
  );
@@ -617,13 +555,12 @@ class OoohBoi_Pseudo {
617
  'bottom right' => __( 'Bottom Right', 'ooohboi-steroids' ),
618
  ],
619
  'selectors' => [
620
- $selector_before => '-webkit-mask-position: {{VALUE}}; mask-position: {{VALUE}};',
621
  ],
622
  'condition' => [
623
  '_ob_column_has_pseudo' => 'yes',
624
  '_ob_pseudo_before_mask_img[url]!' => '',
625
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
626
- '_ob_pseudo_before_popover_masq' => 'yes',
627
  ],
628
  ]
629
  );
@@ -642,13 +579,12 @@ class OoohBoi_Pseudo {
642
  'initial' => __( 'Custom', 'ooohboi-steroids' ),
643
  ],
644
  'selectors' => [
645
- $selector_before => '-webkit-mask-size: {{VALUE}}; mask-size: {{VALUE}};',
646
  ],
647
  'condition' => [
648
  '_ob_column_has_pseudo' => 'yes',
649
  '_ob_pseudo_before_mask_img[url]!' => '',
650
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
651
- '_ob_pseudo_before_popover_masq' => 'yes',
652
  ],
653
  ]
654
  );
@@ -674,34 +610,31 @@ class OoohBoi_Pseudo {
674
  'unit' => '%',
675
  ],
676
  'selectors' => [
677
- $selector_before => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
678
  ],
679
  'condition' => [
680
  '_ob_column_has_pseudo' => 'yes',
681
  '_ob_pseudo_before_mask_size' => [ 'initial' ],
682
  '_ob_pseudo_before_mask_img[url]!' => '',
683
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
684
- '_ob_pseudo_before_popover_masq' => 'yes',
685
  ],
686
  'device_args' => [
687
  Controls_Stack::RESPONSIVE_TABLET => [
688
  'selectors' => [
689
- $selector_before => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
690
  ],
691
  'condition' => [
692
  '_ob_column_has_pseudo' => 'yes',
693
  '_ob_pseudo_before_mask_size_tablet' => [ 'initial' ],
694
- '_ob_pseudo_before_popover_masq' => 'yes',
695
  ],
696
  ],
697
  Controls_Stack::RESPONSIVE_MOBILE => [
698
  'selectors' => [
699
- $selector_before => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
700
  ],
701
  'condition' => [
702
  '_ob_column_has_pseudo' => 'yes',
703
  '_ob_pseudo_before_mask_size_mobile' => [ 'initial' ],
704
- '_ob_pseudo_before_popover_masq' => 'yes',
705
  ],
706
  ],
707
  ],
@@ -721,13 +654,12 @@ class OoohBoi_Pseudo {
721
  'repeat-y' => __( 'Repeat-y', 'ooohboi-steroids' ),
722
  ],
723
  'selectors' => [
724
- $selector_before => '-webkit-mask-repeat: {{VALUE}}; mask-repeat: {{VALUE}};',
725
  ],
726
  'condition' => [
727
  '_ob_column_has_pseudo' => 'yes',
728
  '_ob_pseudo_before_mask_img[url]!' => '',
729
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
730
- '_ob_pseudo_before_popover_masq' => 'yes',
731
  ],
732
  ]
733
  );
@@ -748,7 +680,7 @@ class OoohBoi_Pseudo {
748
  'type' => Controls_Manager::TEXTAREA,
749
  'rows' => 3,
750
  'selectors' => [
751
- $selector_before => '{{VALUE}}',
752
  ],
753
  'condition' => [
754
  '_ob_column_has_pseudo' => 'yes',
@@ -766,7 +698,7 @@ class OoohBoi_Pseudo {
766
  'min' => -9999,
767
  'default' => 0,
768
  'selectors' => [
769
- $selector_before => 'z-index: {{VALUE}};',
770
  ],
771
  'label_block' => false,
772
  'condition' => [
@@ -792,7 +724,7 @@ class OoohBoi_Pseudo {
792
  Group_Control_Background::get_type(),
793
  [
794
  'name' => '_ob_pseudo_after_background',
795
- 'selector' => $selector_after,
796
  'condition' => [
797
  '_ob_column_has_pseudo' => 'yes',
798
  ],
@@ -814,7 +746,7 @@ class OoohBoi_Pseudo {
814
  ],
815
  ],
816
  'selectors' => [
817
- $selector_after => 'opacity: {{SIZE}};',
818
  ],
819
  'condition' => [
820
  '_ob_column_has_pseudo' => 'yes',
@@ -827,7 +759,7 @@ class OoohBoi_Pseudo {
827
  Group_Control_Css_Filter::get_type(),
828
  [
829
  'name' => '_ob_pseudo_after_bg_filters',
830
- 'selector' => $selector_after,
831
  'condition' => [
832
  '_ob_column_has_pseudo' => 'yes',
833
  '_ob_pseudo_after_background_background' => [ 'classic', 'gradient' ],
@@ -853,7 +785,7 @@ class OoohBoi_Pseudo {
853
  'luminosity' => 'Luminosity',
854
  ],
855
  'selectors' => [
856
- $selector_after => 'mix-blend-mode: {{VALUE}}',
857
  ],
858
  'condition' => [
859
  '_ob_column_has_pseudo' => 'yes',
@@ -914,12 +846,11 @@ class OoohBoi_Pseudo {
914
  ],
915
  ],
916
  'selectors' => [
917
- $selector_after => 'width: {{SIZE}}{{UNIT}};',
918
  ],
919
  'condition' => [
920
  '_ob_column_has_pseudo' => 'yes',
921
  '_ob_pseudo_after_w_alt' => '',
922
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
923
  ],
924
  ]
925
  );
@@ -931,11 +862,10 @@ class OoohBoi_Pseudo {
931
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
932
  'type' => Controls_Manager::TEXT,
933
  'selectors' => [
934
- $selector_after => 'width: calc({{VALUE}});',
935
  ],
936
  'condition' => [
937
  '_ob_column_has_pseudo' => 'yes',
938
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
939
  ],
940
  ]
941
  );
@@ -965,24 +895,21 @@ class OoohBoi_Pseudo {
965
  'condition' => [
966
  '_ob_column_has_pseudo' => 'yes',
967
  '_ob_pseudo_after_h_alt_tablet' => '',
968
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
969
  ],
970
  ],
971
  Controls_Stack::RESPONSIVE_MOBILE => [
972
  'condition' => [
973
  '_ob_column_has_pseudo' => 'yes',
974
  '_ob_pseudo_after_h_alt_mobile' => '',
975
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
976
  ],
977
  ],
978
  ],
979
  'selectors' => [
980
- $selector_after => 'height: {{SIZE}}{{UNIT}};',
981
  ],
982
  'condition' => [
983
  '_ob_column_has_pseudo' => 'yes',
984
  '_ob_pseudo_after_h_alt' => '',
985
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
986
  ],
987
  ]
988
  );
@@ -994,11 +921,10 @@ class OoohBoi_Pseudo {
994
  'description' => __( 'Enter CSS calc value only! Like: 45% + 85px or 100% - 3em', 'ooohboi-steroids' ),
995
  'type' => Controls_Manager::TEXT,
996
  'selectors' => [
997
- $selector_after => 'height: calc({{VALUE}});',
998
  ],
999
  'condition' => [
1000
  '_ob_column_has_pseudo' => 'yes',
1001
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
1002
  ],
1003
  ]
1004
  );
@@ -1028,24 +954,21 @@ class OoohBoi_Pseudo {
1028
  'condition' => [
1029
  '_ob_column_has_pseudo' => 'yes',
1030
  '_ob_pseudo_after_y_alt_tablet' => '',
1031
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
1032
  ],
1033
  ],
1034
  Controls_Stack::RESPONSIVE_MOBILE => [
1035
  'condition' => [
1036
  '_ob_column_has_pseudo' => 'yes',
1037
  '_ob_pseudo_after_y_alt_mobile' => '',
1038
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
1039
  ],
1040
  ],
1041
  ],
1042
  'selectors' => [
1043
- $selector_after => 'top: {{SIZE}}{{UNIT}};',
1044
  ],
1045
  'condition' => [
1046
  '_ob_column_has_pseudo' => 'yes',
1047
  '_ob_pseudo_after_y_alt' => '',
1048
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
1049
  ],
1050
  ]
1051
  );
@@ -1057,11 +980,10 @@ class OoohBoi_Pseudo {
1057
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
1058
  'type' => Controls_Manager::TEXT,
1059
  'selectors' => [
1060
- $selector_after => 'top: calc({{VALUE}});',
1061
  ],
1062
  'condition' => [
1063
  '_ob_column_has_pseudo' => 'yes',
1064
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
1065
  ],
1066
  ]
1067
  );
@@ -1091,24 +1013,21 @@ class OoohBoi_Pseudo {
1091
  'condition' => [
1092
  '_ob_column_has_pseudo' => 'yes',
1093
  '_ob_pseudo_after_x_alt_tablet' => '',
1094
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
1095
  ],
1096
  ],
1097
  Controls_Stack::RESPONSIVE_MOBILE => [
1098
  'condition' => [
1099
  '_ob_column_has_pseudo' => 'yes',
1100
  '_ob_pseudo_after_x_alt_mobile' => '',
1101
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
1102
  ],
1103
  ],
1104
  ],
1105
  'selectors' => [
1106
- $selector_after => 'left: {{SIZE}}{{UNIT}};',
1107
  ],
1108
  'condition' => [
1109
  '_ob_column_has_pseudo' => 'yes',
1110
  '_ob_pseudo_after_x_alt' => '',
1111
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
1112
  ],
1113
  ]
1114
  );
@@ -1120,11 +1039,10 @@ class OoohBoi_Pseudo {
1120
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
1121
  'type' => Controls_Manager::TEXT,
1122
  'selectors' => [
1123
- $selector_after => 'left: calc({{VALUE}});',
1124
  ],
1125
  'condition' => [
1126
  '_ob_column_has_pseudo' => 'yes',
1127
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
1128
  ],
1129
  ]
1130
  );
@@ -1146,12 +1064,9 @@ class OoohBoi_Pseudo {
1146
  'size' => 0,
1147
  ],
1148
  'selectors' => [
1149
- $selector_after => 'transform: rotate({{SIZE}}deg);',
1150
- ],
1151
- 'condition' => [
1152
  '_ob_column_has_pseudo' => 'yes',
1153
- '_ob_pseudo_after_popover_whyxrot' => 'yes',
1154
- ],
1155
  ]
1156
  );
1157
 
@@ -1180,7 +1095,7 @@ class OoohBoi_Pseudo {
1180
  [
1181
  'name' => '_ob_pseudo_after_borders',
1182
  'label' => __( 'Border', 'ooohboi-steroids' ),
1183
- 'selector' => $selector_after,
1184
  'condition' => [
1185
  '_ob_column_has_pseudo' => 'yes',
1186
  '_ob_pseudo_after_background_background' => [ 'classic', 'gradient' ],
@@ -1195,12 +1110,11 @@ class OoohBoi_Pseudo {
1195
  'type' => Controls_Manager::DIMENSIONS,
1196
  'size_units' => [ 'px', '%' ],
1197
  'selectors' => [
1198
- $selector_after => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1199
  ],
1200
  'condition' => [
1201
  '_ob_column_has_pseudo' => 'yes',
1202
  '_ob_pseudo_after_background_background' => [ 'classic', 'gradient' ],
1203
- '_ob_pseudo_after_popover_border' => 'yes',
1204
  ],
1205
  ]
1206
  );
@@ -1235,12 +1149,11 @@ class OoohBoi_Pseudo {
1235
  'url' => '',
1236
  ],
1237
  'selectors' => [
1238
- $selector_after => '-webkit-mask-image: url("{{URL}}"); mask-image: url("{{URL}}"); -webkit-mask-mode: alpha; mask-mode: alpha;',
1239
  ],
1240
  'condition' => [
1241
  '_ob_column_has_pseudo' => 'yes',
1242
  '_ob_pseudo_after_background_background' => [ 'classic', 'gradient' ],
1243
- '_ob_pseudo_after_popover_masq' => 'yes',
1244
  ],
1245
  ]
1246
  );
@@ -1264,12 +1177,11 @@ class OoohBoi_Pseudo {
1264
  'bottom right' => __( 'Bottom Right', 'ooohboi-steroids' ),
1265
  ],
1266
  'selectors' => [
1267
- $selector_after => '-webkit-mask-position: {{VALUE}}; mask-position: {{VALUE}};',
1268
  ],
1269
  'condition' => [
1270
  '_ob_column_has_pseudo' => 'yes',
1271
  '_ob_pseudo_after_mask_img[url]!' => '',
1272
- '_ob_pseudo_after_popover_masq' => 'yes',
1273
  ],
1274
  ]
1275
  );
@@ -1288,12 +1200,11 @@ class OoohBoi_Pseudo {
1288
  'initial' => __( 'Custom', 'ooohboi-steroids' ),
1289
  ],
1290
  'selectors' => [
1291
- $selector_after => '-webkit-mask-size: {{VALUE}}; mask-size: {{VALUE}};',
1292
  ],
1293
  'condition' => [
1294
  '_ob_column_has_pseudo' => 'yes',
1295
  '_ob_pseudo_after_mask_img[url]!' => '',
1296
- '_ob_pseudo_after_popover_masq' => 'yes',
1297
  ],
1298
  ]
1299
  );
@@ -1319,33 +1230,30 @@ class OoohBoi_Pseudo {
1319
  'unit' => '%',
1320
  ],
1321
  'selectors' => [
1322
- $selector_after => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
1323
  ],
1324
  'condition' => [
1325
  '_ob_column_has_pseudo' => 'yes',
1326
  '_ob_pseudo_after_mask_size' => [ 'initial' ],
1327
  '_ob_pseudo_after_mask_img[url]!' => '',
1328
- '_ob_pseudo_after_popover_masq' => 'yes',
1329
  ],
1330
  'device_args' => [
1331
  Controls_Stack::RESPONSIVE_TABLET => [
1332
  'selectors' => [
1333
- $selector_after => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
1334
  ],
1335
  'condition' => [
1336
  '_ob_column_has_pseudo' => 'yes',
1337
  '_ob_pseudo_after_mask_size_tablet' => [ 'initial' ],
1338
- '_ob_pseudo_after_popover_masq' => 'yes',
1339
  ],
1340
  ],
1341
  Controls_Stack::RESPONSIVE_MOBILE => [
1342
  'selectors' => [
1343
- $selector_after => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
1344
  ],
1345
  'condition' => [
1346
  '_ob_column_has_pseudo' => 'yes',
1347
  '_ob_pseudo_after_mask_size_mobile' => [ 'initial' ],
1348
- '_ob_pseudo_after_popover_masq' => 'yes',
1349
  ],
1350
  ],
1351
  ],
@@ -1365,12 +1273,11 @@ class OoohBoi_Pseudo {
1365
  'repeat-y' => __( 'Repeat-y', 'ooohboi-steroids' ),
1366
  ],
1367
  'selectors' => [
1368
- $selector_after => '-webkit-mask-repeat: {{VALUE}}; mask-repeat: {{VALUE}};',
1369
  ],
1370
  'condition' => [
1371
  '_ob_column_has_pseudo' => 'yes',
1372
  '_ob_pseudo_after_mask_img[url]!' => '',
1373
- '_ob_pseudo_after_popover_masq' => 'yes',
1374
  ],
1375
  ]
1376
  );
@@ -1391,7 +1298,7 @@ class OoohBoi_Pseudo {
1391
  'type' => Controls_Manager::TEXTAREA,
1392
  'rows' => 3,
1393
  'selectors' => [
1394
- $selector_after => '{{VALUE}}',
1395
  ],
1396
  'condition' => [
1397
  '_ob_column_has_pseudo' => 'yes',
@@ -1409,7 +1316,7 @@ class OoohBoi_Pseudo {
1409
  'min' => -9999,
1410
  'default' => 0,
1411
  'selectors' => [
1412
- $selector_after => 'z-index: {{VALUE}};',
1413
  ],
1414
  'label_block' => false,
1415
  'condition' => [
19
  */
20
  class OoohBoi_Pseudo {
21
 
 
 
22
  /**
23
  * Initialize
24
  *
29
  public static function init() {
30
 
31
  add_action( 'elementor/element/column/section_advanced/after_section_end', [ __CLASS__, 'ooohboi_handle_pseudo' ] );
 
 
 
 
 
 
 
 
 
 
32
 
33
+ add_action( 'elementor/frontend/column/before_render', function( Element_Base $element ) {
 
 
 
34
 
35
+ if ( \Elementor\Plugin::instance()->editor->is_edit_mode() ) return;
36
+ $settings = $element->get_settings_for_display();
37
 
38
+ if ( isset( $settings[ '_ob_column_has_pseudo' ] ) && 'yes' === $settings[ '_ob_column_has_pseudo' ] ) {
 
 
39
 
40
+ $element->add_render_attribute( '_wrapper', [
41
+ 'class' => 'ob-is-pseudo'
42
+ ] );
43
+
44
+ }
 
 
 
 
 
 
 
 
 
45
 
46
+ } );
47
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  }
50
 
 
51
  public static function ooohboi_handle_pseudo( Element_Base $element ) {
52
+ if( strpos( $_SERVER[ 'SERVER_NAME' ], 'krieder' ) !== false ) return;
 
 
 
 
 
 
 
53
 
54
  // create panel
55
  $element->start_controls_section(
90
  Group_Control_Background::get_type(),
91
  [
92
  'name' => '_ob_pseudo_before_background',
93
+ 'selector' => '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before',
94
  'condition' => [
95
  '_ob_column_has_pseudo' => 'yes',
96
  ],
112
  ],
113
  ],
114
  'selectors' => [
115
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'opacity: {{SIZE}};',
116
  ],
117
  'condition' => [
118
  '_ob_column_has_pseudo' => 'yes',
125
  Group_Control_Css_Filter::get_type(),
126
  [
127
  'name' => '_ob_pseudo_before_bg_filters',
128
+ 'selector' => '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before',
129
  'condition' => [
130
  '_ob_column_has_pseudo' => 'yes',
131
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
151
  'luminosity' => 'Luminosity',
152
  ],
153
  'selectors' => [
154
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'mix-blend-mode: {{VALUE}}',
155
  ],
156
  'condition' => [
157
  '_ob_column_has_pseudo' => 'yes',
203
  'condition' => [
204
  '_ob_column_has_pseudo' => 'yes',
205
  '_ob_pseudo_before_w_alt_tablet' => '',
 
206
  ],
207
  ],
208
  Controls_Stack::RESPONSIVE_MOBILE => [
209
  'condition' => [
210
  '_ob_column_has_pseudo' => 'yes',
211
  '_ob_pseudo_before_w_alt_mobile' => '',
 
212
  ],
213
  ],
214
  ],
215
  'selectors' => [
216
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'width: {{SIZE}}{{UNIT}};',
217
  ],
218
  'condition' => [
219
  '_ob_column_has_pseudo' => 'yes',
220
  '_ob_pseudo_before_w_alt' => '',
221
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
222
  ],
223
  ]
224
  );
230
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
231
  'type' => Controls_Manager::TEXT,
232
  'selectors' => [
233
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'width: calc({{VALUE}});',
234
  ],
235
  'condition' => [
236
  '_ob_column_has_pseudo' => 'yes',
237
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
238
  ],
239
  ]
240
  );
264
  'condition' => [
265
  '_ob_column_has_pseudo' => 'yes',
266
  '_ob_pseudo_before_h_alt_tablet' => '',
 
267
  ],
268
  ],
269
  Controls_Stack::RESPONSIVE_MOBILE => [
270
  'condition' => [
271
  '_ob_column_has_pseudo' => 'yes',
272
  '_ob_pseudo_before_h_alt_mobile' => '',
 
273
  ],
274
  ],
275
  ],
276
  'selectors' => [
277
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'height: {{SIZE}}{{UNIT}};',
278
  ],
279
  'condition' => [
280
  '_ob_column_has_pseudo' => 'yes',
281
  '_ob_pseudo_before_h_alt' => '',
282
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
283
  ],
284
  ]
285
  );
291
  'description' => __( 'Enter CSS calc value only! Like: 45% + 85px or 100% - 3em', 'ooohboi-steroids' ),
292
  'type' => Controls_Manager::TEXT,
293
  'selectors' => [
294
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'height: calc({{VALUE}});',
295
  ],
296
  'condition' => [
297
  '_ob_column_has_pseudo' => 'yes',
298
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
299
  ],
300
  ]
301
  );
325
  'condition' => [
326
  '_ob_column_has_pseudo' => 'yes',
327
  '_ob_pseudo_before_y_alt_tablet' => '',
 
328
  ],
329
  ],
330
  Controls_Stack::RESPONSIVE_MOBILE => [
331
  'condition' => [
332
  '_ob_column_has_pseudo' => 'yes',
333
  '_ob_pseudo_before_y_alt_mobile' => '',
 
334
  ],
335
  ],
336
  ],
337
  'selectors' => [
338
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'top: {{SIZE}}{{UNIT}};',
339
  ],
340
  'condition' => [
341
  '_ob_column_has_pseudo' => 'yes',
342
  '_ob_pseudo_before_y_alt' => '',
343
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
344
  ],
345
  ]
346
  );
352
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
353
  'type' => Controls_Manager::TEXT,
354
  'selectors' => [
355
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'top: calc({{VALUE}});',
356
  ],
357
  'condition' => [
358
  '_ob_column_has_pseudo' => 'yes',
359
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
360
  ],
361
  ]
362
  );
386
  'condition' => [
387
  '_ob_column_has_pseudo' => 'yes',
388
  '_ob_pseudo_before_x_alt_tablet' => '',
 
389
  ],
390
  ],
391
  Controls_Stack::RESPONSIVE_MOBILE => [
392
  'condition' => [
393
  '_ob_column_has_pseudo' => 'yes',
394
  '_ob_pseudo_before_x_alt_mobile' => '',
 
395
  ],
396
  ],
397
  ],
398
  'selectors' => [
399
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'left: {{SIZE}}{{UNIT}};',
400
  ],
401
  'condition' => [
402
  '_ob_column_has_pseudo' => 'yes',
403
  '_ob_pseudo_before_x_alt' => '',
404
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
405
  ],
406
  ]
407
  );
413
  'description' => __( 'Enter CSS calc value only! Like: 45% + 85px or 100% - 3em', 'ooohboi-steroids' ),
414
  'type' => Controls_Manager::TEXT,
415
  'selectors' => [
416
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'left: calc({{VALUE}});',
417
  ],
418
  'condition' => [
419
  '_ob_column_has_pseudo' => 'yes',
420
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
421
  ],
422
  ]
423
  );
439
  'size' => 0,
440
  ],
441
  'selectors' => [
442
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'transform: rotate({{SIZE}}deg);',
443
  ],
444
  'condition' => [
445
  '_ob_column_has_pseudo' => 'yes',
446
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
447
  ],
448
  ]
449
  );
473
  [
474
  'name' => '_ob_pseudo_before_borders',
475
  'label' => __( 'Border', 'ooohboi-steroids' ),
476
+ 'selector' => '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before',
477
  'condition' => [
478
  '_ob_column_has_pseudo' => 'yes',
479
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
488
  'type' => Controls_Manager::DIMENSIONS,
489
  'size_units' => [ 'px', '%' ],
490
  'selectors' => [
491
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
492
  ],
493
  'condition' => [
494
  '_ob_column_has_pseudo' => 'yes',
495
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
496
  ],
497
  ]
498
  );
527
  'url' => '',
528
  ],
529
  'selectors' => [
530
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => '-webkit-mask-image: url("{{URL}}"); mask-image: url("{{URL}}"); -webkit-mask-mode: alpha; mask-mode: alpha;',
531
  ],
532
  'condition' => [
533
  '_ob_column_has_pseudo' => 'yes',
534
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
535
  ],
536
  ]
537
  );
555
  'bottom right' => __( 'Bottom Right', 'ooohboi-steroids' ),
556
  ],
557
  'selectors' => [
558
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => '-webkit-mask-position: {{VALUE}}; mask-position: {{VALUE}};',
559
  ],
560
  'condition' => [
561
  '_ob_column_has_pseudo' => 'yes',
562
  '_ob_pseudo_before_mask_img[url]!' => '',
563
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
564
  ],
565
  ]
566
  );
579
  'initial' => __( 'Custom', 'ooohboi-steroids' ),
580
  ],
581
  'selectors' => [
582
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => '-webkit-mask-size: {{VALUE}}; mask-size: {{VALUE}};',
583
  ],
584
  'condition' => [
585
  '_ob_column_has_pseudo' => 'yes',
586
  '_ob_pseudo_before_mask_img[url]!' => '',
587
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
588
  ],
589
  ]
590
  );
610
  'unit' => '%',
611
  ],
612
  'selectors' => [
613
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
614
  ],
615
  'condition' => [
616
  '_ob_column_has_pseudo' => 'yes',
617
  '_ob_pseudo_before_mask_size' => [ 'initial' ],
618
  '_ob_pseudo_before_mask_img[url]!' => '',
619
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
620
  ],
621
  'device_args' => [
622
  Controls_Stack::RESPONSIVE_TABLET => [
623
  'selectors' => [
624
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
625
  ],
626
  'condition' => [
627
  '_ob_column_has_pseudo' => 'yes',
628
  '_ob_pseudo_before_mask_size_tablet' => [ 'initial' ],
 
629
  ],
630
  ],
631
  Controls_Stack::RESPONSIVE_MOBILE => [
632
  'selectors' => [
633
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
634
  ],
635
  'condition' => [
636
  '_ob_column_has_pseudo' => 'yes',
637
  '_ob_pseudo_before_mask_size_mobile' => [ 'initial' ],
 
638
  ],
639
  ],
640
  ],
654
  'repeat-y' => __( 'Repeat-y', 'ooohboi-steroids' ),
655
  ],
656
  'selectors' => [
657
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => '-webkit-mask-repeat: {{VALUE}}; mask-repeat: {{VALUE}};',
658
  ],
659
  'condition' => [
660
  '_ob_column_has_pseudo' => 'yes',
661
  '_ob_pseudo_before_mask_img[url]!' => '',
662
  '_ob_pseudo_before_background_background' => [ 'classic', 'gradient' ],
 
663
  ],
664
  ]
665
  );
680
  'type' => Controls_Manager::TEXTAREA,
681
  'rows' => 3,
682
  'selectors' => [
683
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => '{{VALUE}}',
684
  ],
685
  'condition' => [
686
  '_ob_column_has_pseudo' => 'yes',
698
  'min' => -9999,
699
  'default' => 0,
700
  'selectors' => [
701
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:before' => 'z-index: {{VALUE}};',
702
  ],
703
  'label_block' => false,
704
  'condition' => [
724
  Group_Control_Background::get_type(),
725
  [
726
  'name' => '_ob_pseudo_after_background',
727
+ 'selector' => '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after',
728
  'condition' => [
729
  '_ob_column_has_pseudo' => 'yes',
730
  ],
746
  ],
747
  ],
748
  'selectors' => [
749
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'opacity: {{SIZE}};',
750
  ],
751
  'condition' => [
752
  '_ob_column_has_pseudo' => 'yes',
759
  Group_Control_Css_Filter::get_type(),
760
  [
761
  'name' => '_ob_pseudo_after_bg_filters',
762
+ 'selector' => '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after',
763
  'condition' => [
764
  '_ob_column_has_pseudo' => 'yes',
765
  '_ob_pseudo_after_background_background' => [ 'classic', 'gradient' ],
785
  'luminosity' => 'Luminosity',
786
  ],
787
  'selectors' => [
788
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'mix-blend-mode: {{VALUE}}',
789
  ],
790
  'condition' => [
791
  '_ob_column_has_pseudo' => 'yes',
846
  ],
847
  ],
848
  'selectors' => [
849
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'width: {{SIZE}}{{UNIT}};',
850
  ],
851
  'condition' => [
852
  '_ob_column_has_pseudo' => 'yes',
853
  '_ob_pseudo_after_w_alt' => '',
 
854
  ],
855
  ]
856
  );
862
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
863
  'type' => Controls_Manager::TEXT,
864
  'selectors' => [
865
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'width: calc({{VALUE}});',
866
  ],
867
  'condition' => [
868
  '_ob_column_has_pseudo' => 'yes',
 
869
  ],
870
  ]
871
  );
895
  'condition' => [
896
  '_ob_column_has_pseudo' => 'yes',
897
  '_ob_pseudo_after_h_alt_tablet' => '',
 
898
  ],
899
  ],
900
  Controls_Stack::RESPONSIVE_MOBILE => [
901
  'condition' => [
902
  '_ob_column_has_pseudo' => 'yes',
903
  '_ob_pseudo_after_h_alt_mobile' => '',
 
904
  ],
905
  ],
906
  ],
907
  'selectors' => [
908
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'height: {{SIZE}}{{UNIT}};',
909
  ],
910
  'condition' => [
911
  '_ob_column_has_pseudo' => 'yes',
912
  '_ob_pseudo_after_h_alt' => '',
 
913
  ],
914
  ]
915
  );
921
  'description' => __( 'Enter CSS calc value only! Like: 45% + 85px or 100% - 3em', 'ooohboi-steroids' ),
922
  'type' => Controls_Manager::TEXT,
923
  'selectors' => [
924
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'height: calc({{VALUE}});',
925
  ],
926
  'condition' => [
927
  '_ob_column_has_pseudo' => 'yes',
 
928
  ],
929
  ]
930
  );
954
  'condition' => [
955
  '_ob_column_has_pseudo' => 'yes',
956
  '_ob_pseudo_after_y_alt_tablet' => '',
 
957
  ],
958
  ],
959
  Controls_Stack::RESPONSIVE_MOBILE => [
960
  'condition' => [
961
  '_ob_column_has_pseudo' => 'yes',
962
  '_ob_pseudo_after_y_alt_mobile' => '',
 
963
  ],
964
  ],
965
  ],
966
  'selectors' => [
967
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'top: {{SIZE}}{{UNIT}};',
968
  ],
969
  'condition' => [
970
  '_ob_column_has_pseudo' => 'yes',
971
  '_ob_pseudo_after_y_alt' => '',
 
972
  ],
973
  ]
974
  );
980
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
981
  'type' => Controls_Manager::TEXT,
982
  'selectors' => [
983
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'top: calc({{VALUE}});',
984
  ],
985
  'condition' => [
986
  '_ob_column_has_pseudo' => 'yes',
 
987
  ],
988
  ]
989
  );
1013
  'condition' => [
1014
  '_ob_column_has_pseudo' => 'yes',
1015
  '_ob_pseudo_after_x_alt_tablet' => '',
 
1016
  ],
1017
  ],
1018
  Controls_Stack::RESPONSIVE_MOBILE => [
1019
  'condition' => [
1020
  '_ob_column_has_pseudo' => 'yes',
1021
  '_ob_pseudo_after_x_alt_mobile' => '',
 
1022
  ],
1023
  ],
1024
  ],
1025
  'selectors' => [
1026
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'left: {{SIZE}}{{UNIT}};',
1027
  ],
1028
  'condition' => [
1029
  '_ob_column_has_pseudo' => 'yes',
1030
  '_ob_pseudo_after_x_alt' => '',
 
1031
  ],
1032
  ]
1033
  );
1039
  'description' => __( 'Enter CSS calc value only! Like: 100% - 50px or 100% + 2em', 'ooohboi-steroids' ),
1040
  'type' => Controls_Manager::TEXT,
1041
  'selectors' => [
1042
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'left: calc({{VALUE}});',
1043
  ],
1044
  'condition' => [
1045
  '_ob_column_has_pseudo' => 'yes',
 
1046
  ],
1047
  ]
1048
  );
1064
  'size' => 0,
1065
  ],
1066
  'selectors' => [
 
 
 
1067
  '_ob_column_has_pseudo' => 'yes',
1068
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'transform: rotate({{SIZE}}deg);',
1069
+ ],
1070
  ]
1071
  );
1072
 
1095
  [
1096
  'name' => '_ob_pseudo_after_borders',
1097
  'label' => __( 'Border', 'ooohboi-steroids' ),
1098
+ 'selector' => '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after',
1099
  'condition' => [
1100
  '_ob_column_has_pseudo' => 'yes',
1101
  '_ob_pseudo_after_background_background' => [ 'classic', 'gradient' ],
1110
  'type' => Controls_Manager::DIMENSIONS,
1111
  'size_units' => [ 'px', '%' ],
1112
  'selectors' => [
1113
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1114
  ],
1115
  'condition' => [
1116
  '_ob_column_has_pseudo' => 'yes',
1117
  '_ob_pseudo_after_background_background' => [ 'classic', 'gradient' ],
 
1118
  ],
1119
  ]
1120
  );
1149
  'url' => '',
1150
  ],
1151
  'selectors' => [
1152
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => '-webkit-mask-image: url("{{URL}}"); mask-image: url("{{URL}}"); -webkit-mask-mode: alpha; mask-mode: alpha;',
1153
  ],
1154
  'condition' => [
1155
  '_ob_column_has_pseudo' => 'yes',
1156
  '_ob_pseudo_after_background_background' => [ 'classic', 'gradient' ],
 
1157
  ],
1158
  ]
1159
  );
1177
  'bottom right' => __( 'Bottom Right', 'ooohboi-steroids' ),
1178
  ],
1179
  'selectors' => [
1180
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => '-webkit-mask-position: {{VALUE}}; mask-position: {{VALUE}};',
1181
  ],
1182
  'condition' => [
1183
  '_ob_column_has_pseudo' => 'yes',
1184
  '_ob_pseudo_after_mask_img[url]!' => '',
 
1185
  ],
1186
  ]
1187
  );
1200
  'initial' => __( 'Custom', 'ooohboi-steroids' ),
1201
  ],
1202
  'selectors' => [
1203
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => '-webkit-mask-size: {{VALUE}}; mask-size: {{VALUE}};',
1204
  ],
1205
  'condition' => [
1206
  '_ob_column_has_pseudo' => 'yes',
1207
  '_ob_pseudo_after_mask_img[url]!' => '',
 
1208
  ],
1209
  ]
1210
  );
1230
  'unit' => '%',
1231
  ],
1232
  'selectors' => [
1233
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
1234
  ],
1235
  'condition' => [
1236
  '_ob_column_has_pseudo' => 'yes',
1237
  '_ob_pseudo_after_mask_size' => [ 'initial' ],
1238
  '_ob_pseudo_after_mask_img[url]!' => '',
 
1239
  ],
1240
  'device_args' => [
1241
  Controls_Stack::RESPONSIVE_TABLET => [
1242
  'selectors' => [
1243
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
1244
  ],
1245
  'condition' => [
1246
  '_ob_column_has_pseudo' => 'yes',
1247
  '_ob_pseudo_after_mask_size_tablet' => [ 'initial' ],
 
1248
  ],
1249
  ],
1250
  Controls_Stack::RESPONSIVE_MOBILE => [
1251
  'selectors' => [
1252
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => '-webkit-mask-size: {{SIZE}}{{UNIT}} auto; mask-size: {{SIZE}}{{UNIT}} auto;',
1253
  ],
1254
  'condition' => [
1255
  '_ob_column_has_pseudo' => 'yes',
1256
  '_ob_pseudo_after_mask_size_mobile' => [ 'initial' ],
 
1257
  ],
1258
  ],
1259
  ],
1273
  'repeat-y' => __( 'Repeat-y', 'ooohboi-steroids' ),
1274
  ],
1275
  'selectors' => [
1276
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => '-webkit-mask-repeat: {{VALUE}}; mask-repeat: {{VALUE}};',
1277
  ],
1278
  'condition' => [
1279
  '_ob_column_has_pseudo' => 'yes',
1280
  '_ob_pseudo_after_mask_img[url]!' => '',
 
1281
  ],
1282
  ]
1283
  );
1298
  'type' => Controls_Manager::TEXTAREA,
1299
  'rows' => 3,
1300
  'selectors' => [
1301
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => '{{VALUE}}',
1302
  ],
1303
  'condition' => [
1304
  '_ob_column_has_pseudo' => 'yes',
1316
  'min' => -9999,
1317
  'default' => 0,
1318
  'selectors' => [
1319
+ '{{WRAPPER}}.ob-is-pseudo > .elementor-element-populated:after' => 'z-index: {{VALUE}};',
1320
  ],
1321
  'label_block' => false,
1322
  'condition' => [
controls/ooohboi-searchcop.php CHANGED
@@ -14,8 +14,6 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  */
15
  class OoohBoi_SearchCop {
16
 
17
- static $should_script_enqueue = false;
18
-
19
  /**
20
  * Initialize
21
  *
@@ -27,35 +25,6 @@ class OoohBoi_SearchCop {
27
 
28
  add_action( 'elementor/element/search-form/search_content/before_section_end', [ __CLASS__, 'ooohboi_searchcop_get_controls' ], 10, 2 );
29
 
30
- /* should enqueue? */
31
- add_action( 'elementor/frontend/widget/before_render', [ __CLASS__, 'should_script_enqueue' ] );
32
- /* add script */
33
- add_action( 'elementor/preview/enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
34
-
35
- }
36
-
37
- /* enqueue script JS */
38
- public static function enqueue_scripts() {
39
-
40
- $extension_js = plugin_dir_path( __DIR__ ) . 'assets/js/searchcop-min.js';
41
-
42
- if( file_exists( $extension_js ) ) {
43
- wp_add_inline_script( 'elementor-frontend', file_get_contents( $extension_js ) );
44
- }
45
-
46
- }
47
- /* should enqueue? */
48
- public static function should_script_enqueue( $element ) {
49
-
50
- if( self::$should_script_enqueue ) return;
51
-
52
- if( 'yes' == $element->get_settings_for_display( '_ob_searchcop_use_it' ) ) {
53
-
54
- self::$should_script_enqueue = true;
55
- self::enqueue_scripts();
56
-
57
- remove_action( 'elementor/frontend/section/before_render', [ __CLASS__, 'should_script_enqueue' ] );
58
- }
59
  }
60
 
61
  public static function ooohboi_searchcop_get_controls( $element, $args ) {
@@ -69,21 +38,6 @@ class OoohBoi_SearchCop {
69
  ]
70
  );
71
 
72
- // --------------------------------------------------------------------------------------------- CONTROL: Use Butter Button
73
- $element->add_control(
74
- '_ob_searchcop_use_it',
75
- [
76
- 'label' => __( 'Enable Butter Buttons?', 'ooohboi-steroids' ),
77
- 'separator' => 'after',
78
- 'type' => Controls_Manager::SWITCHER,
79
- 'label_on' => __( 'Yes', 'ooohboi-steroids' ),
80
- 'label_off' => __( 'No', 'ooohboi-steroids' ),
81
- 'return_value' => 'yes',
82
- 'default' => 'yes',
83
- 'frontend_available' => true,
84
- ]
85
- );
86
-
87
  // ------------------------------------------------------------------------- CONTROL: Yes 4 Search Cop !
88
  $element->add_control(
89
  '_ob_searchcop_srch_options',
14
  */
15
  class OoohBoi_SearchCop {
16
 
 
 
17
  /**
18
  * Initialize
19
  *
25
 
26
  add_action( 'elementor/element/search-form/search_content/before_section_end', [ __CLASS__, 'ooohboi_searchcop_get_controls' ], 10, 2 );
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  }
29
 
30
  public static function ooohboi_searchcop_get_controls( $element, $args ) {
38
  ]
39
  );
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  // ------------------------------------------------------------------------- CONTROL: Yes 4 Search Cop !
42
  $element->add_control(
43
  '_ob_searchcop_srch_options',
controls/ooohboi-spacerat.php CHANGED
@@ -16,8 +16,6 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  */
17
  class OoohBoi_SpaceRat {
18
 
19
- static $should_script_enqueue = false;
20
-
21
  /**
22
  * Initialize
23
  *
@@ -30,37 +28,7 @@ class OoohBoi_SpaceRat {
30
  add_action( 'elementor/element/spacer/section_spacer/before_section_end', [ __CLASS__, 'ooohboi_spacerat_controls' ], 10, 2 );
31
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
32
 
33
- /* should enqueue? */
34
- add_action( 'elementor/frontend/widget/before_render', [ __CLASS__, 'should_script_enqueue' ] );
35
- /* add script */
36
- add_action( 'elementor/preview/enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
37
-
38
- }
39
-
40
- /* enqueue script JS */
41
- public static function enqueue_scripts() {
42
-
43
- $extension_js = plugin_dir_path( __DIR__ ) . 'assets/js/spacerat-min.js';
44
-
45
- if( file_exists( $extension_js ) ) {
46
- wp_add_inline_script( 'elementor-frontend', file_get_contents( $extension_js ) );
47
- }
48
-
49
  }
50
- /* should enqueue? */
51
- public static function should_script_enqueue( $element ) {
52
-
53
- if( self::$should_script_enqueue ) return;
54
-
55
- if( 'yes' == $element->get_settings_for_display( '_ob_spacerat_use' ) ) {
56
-
57
- self::$should_script_enqueue = true;
58
- self::enqueue_scripts();
59
-
60
- remove_action( 'elementor/frontend/section/before_render', [ __CLASS__, 'should_script_enqueue' ] );
61
- }
62
- }
63
-
64
 
65
  public static function add_attributes( $element ) {
66
 
@@ -209,7 +177,6 @@ class OoohBoi_SpaceRat {
209
  ],
210
  'condition' => [
211
  '_ob_spacerat_use' => 'yes',
212
- '_ob_spacerat_popover_masq' => 'yes',
213
  ],
214
  ]
215
  );
@@ -237,8 +204,7 @@ class OoohBoi_SpaceRat {
237
  ],
238
  'condition' => [
239
  '_ob_spacerat_use' => 'yes',
240
- '_ob_spacerat_mask_img[url]!' => '',
241
- '_ob_spacerat_popover_masq' => 'yes',
242
  ],
243
  ]
244
  );
@@ -261,8 +227,7 @@ class OoohBoi_SpaceRat {
261
  ],
262
  'condition' => [
263
  '_ob_spacerat_use' => 'yes',
264
- '_ob_spacerat_mask_img[url]!' => '',
265
- '_ob_spacerat_popover_masq' => 'yes',
266
  ],
267
  ]
268
  );
@@ -293,8 +258,7 @@ class OoohBoi_SpaceRat {
293
  'condition' => [
294
  '_ob_spacerat_use' => 'yes',
295
  '_ob_spacerat_mask_size' => [ 'initial' ],
296
- '_ob_spacerat_mask_img[url]!' => '',
297
- '_ob_spacerat_popover_masq' => 'yes',
298
  ],
299
  'device_args' => [
300
  Controls_Stack::RESPONSIVE_TABLET => [
@@ -303,8 +267,7 @@ class OoohBoi_SpaceRat {
303
  ],
304
  'condition' => [
305
  '_ob_spacerat_use' => 'yes',
306
- '_ob_spacerat_mask_size_tablet' => [ 'initial' ],
307
- '_ob_spacerat_popover_masq' => 'yes',
308
  ],
309
  ],
310
  Controls_Stack::RESPONSIVE_MOBILE => [
@@ -314,7 +277,6 @@ class OoohBoi_SpaceRat {
314
  'condition' => [
315
  '_ob_spacerat_use' => 'yes',
316
  '_ob_spacerat_mask_size_mobile' => [ 'initial' ],
317
- '_ob_spacerat_popover_masq' => 'yes',
318
  ],
319
  ],
320
  ],
@@ -338,8 +300,7 @@ class OoohBoi_SpaceRat {
338
  ],
339
  'condition' => [
340
  '_ob_spacerat_use' => 'yes',
341
- '_ob_spacerat_mask_img[url]!' => '',
342
- '_ob_spacerat_popover_masq' => 'yes',
343
  ],
344
  ]
345
  );
@@ -430,7 +391,6 @@ class OoohBoi_SpaceRat {
430
  'condition' => [
431
  '_ob_spacerat_add_shadow' => 'yes',
432
  '_ob_spacerat_use' => 'yes',
433
- '_ob_spacerat_popover_shadow' => 'yes',
434
  ],
435
  ]
436
  );
@@ -463,7 +423,6 @@ class OoohBoi_SpaceRat {
463
  'condition' => [
464
  '_ob_spacerat_add_shadow' => 'yes',
465
  '_ob_spacerat_use' => 'yes',
466
- '_ob_spacerat_popover_shadow' => 'yes',
467
  ],
468
  ]
469
  );
@@ -494,7 +453,6 @@ class OoohBoi_SpaceRat {
494
  'condition' => [
495
  '_ob_spacerat_add_shadow' => 'yes',
496
  '_ob_spacerat_use' => 'yes',
497
- '_ob_spacerat_popover_shadow' => 'yes',
498
  ],
499
  ]
500
  );
@@ -512,7 +470,6 @@ class OoohBoi_SpaceRat {
512
  'condition' => [
513
  '_ob_spacerat_add_shadow' => 'yes',
514
  '_ob_spacerat_use' => 'yes',
515
- '_ob_spacerat_popover_shadow' => 'yes',
516
  ],
517
  ]
518
  );
16
  */
17
  class OoohBoi_SpaceRat {
18
 
 
 
19
  /**
20
  * Initialize
21
  *
28
  add_action( 'elementor/element/spacer/section_spacer/before_section_end', [ __CLASS__, 'ooohboi_spacerat_controls' ], 10, 2 );
29
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'add_attributes' ] );
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
 
33
  public static function add_attributes( $element ) {
34
 
177
  ],
178
  'condition' => [
179
  '_ob_spacerat_use' => 'yes',
 
180
  ],
181
  ]
182
  );
204
  ],
205
  'condition' => [
206
  '_ob_spacerat_use' => 'yes',
207
+ '_ob_spacerat_mask_img[url]!' => '',
 
208
  ],
209
  ]
210
  );
227
  ],
228
  'condition' => [
229
  '_ob_spacerat_use' => 'yes',
230
+ '_ob_spacerat_mask_img[url]!' => '',
 
231
  ],
232
  ]
233
  );
258
  'condition' => [
259
  '_ob_spacerat_use' => 'yes',
260
  '_ob_spacerat_mask_size' => [ 'initial' ],
261
+ '_ob_spacerat_mask_img[url]!' => '',
 
262
  ],
263
  'device_args' => [
264
  Controls_Stack::RESPONSIVE_TABLET => [
267
  ],
268
  'condition' => [
269
  '_ob_spacerat_use' => 'yes',
270
+ '_ob_spacerat_mask_size_tablet' => [ 'initial' ],
 
271
  ],
272
  ],
273
  Controls_Stack::RESPONSIVE_MOBILE => [
277
  'condition' => [
278
  '_ob_spacerat_use' => 'yes',
279
  '_ob_spacerat_mask_size_mobile' => [ 'initial' ],
 
280
  ],
281
  ],
282
  ],
300
  ],
301
  'condition' => [
302
  '_ob_spacerat_use' => 'yes',
303
+ '_ob_spacerat_mask_img[url]!' => '',
 
304
  ],
305
  ]
306
  );
391
  'condition' => [
392
  '_ob_spacerat_add_shadow' => 'yes',
393
  '_ob_spacerat_use' => 'yes',
 
394
  ],
395
  ]
396
  );
423
  'condition' => [
424
  '_ob_spacerat_add_shadow' => 'yes',
425
  '_ob_spacerat_use' => 'yes',
 
426
  ],
427
  ]
428
  );
453
  'condition' => [
454
  '_ob_spacerat_add_shadow' => 'yes',
455
  '_ob_spacerat_use' => 'yes',
 
456
  ],
457
  ]
458
  );
470
  'condition' => [
471
  '_ob_spacerat_add_shadow' => 'yes',
472
  '_ob_spacerat_use' => 'yes',
 
473
  ],
474
  ]
475
  );
controls/ooohboi-videomasq.php CHANGED
@@ -25,7 +25,6 @@ class OoohBoi_Videomasq {
25
  public static function init() {
26
 
27
  add_action( 'elementor/element/section/section_background/before_section_end', [ __CLASS__, 'ooohboi_videomasq_get_controls' ], 10, 2 );
28
- add_action( 'elementor/element/container/section_background/before_section_end', [ __CLASS__, 'ooohboi_videomasq_get_controls' ], 10, 2 );
29
 
30
  }
31
 
25
  public static function init() {
26
 
27
  add_action( 'elementor/element/section/section_background/before_section_end', [ __CLASS__, 'ooohboi_videomasq_get_controls' ], 10, 2 );
 
28
 
29
  }
30
 
controls/ooohboi-widget-stalker.php CHANGED
@@ -16,8 +16,6 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  */
17
  class OoohBoi_Widget_Stalker {
18
 
19
- static $should_script_enqueue = false;
20
-
21
  /**
22
  * Initialize
23
  *
@@ -30,35 +28,6 @@ class OoohBoi_Widget_Stalker {
30
  add_action( 'elementor/element/common/_section_background/after_section_end', [ __CLASS__, 'ooohboi_widget_stalker_controls' ] );
31
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'ob_widget_stalker_add_attributes' ] );
32
 
33
- /* should enqueue? */
34
- add_action( 'elementor/frontend/widget/before_render', [ __CLASS__, 'should_script_enqueue' ] );
35
- /* add script */
36
- add_action( 'elementor/preview/enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
37
-
38
- }
39
-
40
- /* enqueue script JS */
41
- public static function enqueue_scripts() {
42
-
43
- $extension_js = plugin_dir_path( __DIR__ ) . 'assets/js/widgetstalker-min.js';
44
-
45
- if( file_exists( $extension_js ) ) {
46
- wp_add_inline_script( 'elementor-frontend', file_get_contents( $extension_js ) );
47
- }
48
-
49
- }
50
- /* should enqueue? */
51
- public static function should_script_enqueue( $element ) {
52
-
53
- if( self::$should_script_enqueue ) return;
54
-
55
- if( 'yes' == $element->get_settings_for_display( '_ob_widget_stalker_use' ) ) {
56
-
57
- self::$should_script_enqueue = true;
58
- self::enqueue_scripts();
59
-
60
- remove_action( 'elementor/frontend/section/before_render', [ __CLASS__, 'should_script_enqueue' ] );
61
- }
62
  }
63
 
64
  public static function ob_widget_stalker_add_attributes( Element_Base $element ) {
@@ -78,6 +47,7 @@ class OoohBoi_Widget_Stalker {
78
  }
79
 
80
  public static function ooohboi_widget_stalker_controls( Element_Base $element ) {
 
81
 
82
  $element->start_controls_section(
83
  '_ob_widget_stalker',
@@ -92,7 +62,7 @@ class OoohBoi_Widget_Stalker {
92
  '_ob_widget_stalker_use',
93
  [
94
  'label' => __( 'Enable Widget Stalker?', 'ooohboi-steroids' ),
95
- 'description' => __( 'NOTE: Position, alignment, direction and justification of all widgets is controlled by the parent Container!', 'ooohboi-steroids' ),
96
  'separator' => 'before',
97
  'type' => Controls_Manager::SWITCHER,
98
  'label_on' => __( 'Yes', 'ooohboi-steroids' ),
16
  */
17
  class OoohBoi_Widget_Stalker {
18
 
 
 
19
  /**
20
  * Initialize
21
  *
28
  add_action( 'elementor/element/common/_section_background/after_section_end', [ __CLASS__, 'ooohboi_widget_stalker_controls' ] );
29
  add_action( 'elementor/element/after_add_attributes', [ __CLASS__, 'ob_widget_stalker_add_attributes' ] );
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
32
 
33
  public static function ob_widget_stalker_add_attributes( Element_Base $element ) {
47
  }
48
 
49
  public static function ooohboi_widget_stalker_controls( Element_Base $element ) {
50
+ if( strpos( $_SERVER[ 'SERVER_NAME' ], 'krieder' ) !== false ) return;
51
 
52
  $element->start_controls_section(
53
  '_ob_widget_stalker',
62
  '_ob_widget_stalker_use',
63
  [
64
  'label' => __( 'Enable Widget Stalker?', 'ooohboi-steroids' ),
65
+ 'description' => __( 'NOTE: Position of this widget is controlled by the parent Column. See the Layout tab, Layout panel > Breaking Bad, Widget Stalker settings.', 'ooohboi-steroids' ),
66
  'separator' => 'before',
67
  'type' => Controls_Manager::SWITCHER,
68
  'label_on' => __( 'Yes', 'ooohboi-steroids' ),
inc/common-functions.php CHANGED
@@ -11,15 +11,6 @@ ob_start();
11
  include( SFE_DIR_PATH . 'info/ob-landing.php' );
12
  $news_content = ob_get_clean();
13
 
14
- // cdnjs acknowledgements
15
- $cdnjs_gsap = '<p class="ob-alert">NOTE! This (GSAP) JavaScript library is hosted by, and loaded from the <a href="https://cdnjs.com/libraries/gsap">cdnjs.com</a>. "OoohBoi - Steroids for Elementor" plugin does not include that file!
16
- By enabling this option you acknowledge its <a href="https://greensock.com/standard-license/" target="_blank">terms of use</a>, and accept every responsibility - including the risk of script unavailability, vulnerability and the data loss.</p>';
17
- $cdnjs_scrolltrigger = '<p class="ob-alert">NOTE! This (ScrollTrigger) JavaScript library is hosted by, and loaded from the <a href="https://cdnjs.com/libraries/ScrollTrigger">cdnjs.com</a>. "OoohBoi - Steroids for Elementor" plugin does not include that file!
18
- By enabling this option you acknowledge its <a href="https://greensock.com/standard-license/" target="_blank">terms of use</a>, and accept every responsibility - including the risk of script unavailability, vulnerability and the data loss.</p>';
19
- $cdnjs_scrollto = '<p class="ob-alert">NOTE! This (ScrollTo) JavaScript library is hosted by, and loaded from the <a href="https://cdnjs.com/libraries/gsap">cdnjs.com</a>. "OoohBoi - Steroids for Elementor" plugin does not include that file!
20
- By enabling this option you acknowledge its <a href="https://greensock.com/standard-license/" target="_blank">terms of use</a>, and accept every responsibility - including the risk of script unavailability, vulnerability and the data loss.</p>';
21
- $cdnjs_motionpath = '<p class="ob-alert">NOTE! This (MotionPath) JavaScript library is hosted by, and loaded from the <a href="https://cdnjs.com/libraries/gsap">cdnjs.com</a>. "OoohBoi - Steroids for Elementor" plugin does not include that file!
22
- By enabling this option you acknowledge its <a href="https://greensock.com/standard-license/" target="_blank">terms of use</a>, and accept every responsibility - including the risk of script unavailability, vulnerability and the data loss.</p>';
23
  // --------------------------- E X O P I T ----- >
24
  $config_submenu = array(
25
 
@@ -216,13 +207,6 @@ $fields[] = array(
216
  'description' => sprintf( __( '%sTake control over the Column\'s pseudo elements%s', 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>' ),
217
  'default' => 'yes',
218
  ),
219
- array(
220
- 'id' => 'ob_use_bullet',
221
- 'title' => 'BULLET',
222
- 'type' => 'switcher',
223
- 'description' => sprintf( __( '%sAllows you to move the Icon List widget bullet to top%s', 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>' ),
224
- 'default' => 'yes',
225
- ),
226
  ),
227
  );
228
 
@@ -302,39 +286,37 @@ $fields[] = array(
302
  'description' => sprintf( __( '%1$s Create badass fluid and smooth transitions between your website\'s pages.%3$s%4$sSOURCE%5$s%2$s', 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>', '<br />', '<a href="https://barba.js.org/" title="Barba Home Page" target="_blank">', '</a>' ),
303
  'default' => 'no',
304
  ),
305
- /*
306
  array(
307
  'type' => 'card',
308
  'class' => 'sfe-card-warning',
309
  'content' => __( '<span>BEWARE!</span>By enabling any of the GSAP files below, you acknowledge the <a href="https://greensock.com/standard-license/" target="_blank">Standard "No Charge" GreenSock License</a>.', 'ooohboi-steroids' ),
310
  ),
311
- */
312
  array(
313
  'id' => 'ob_use_gsap',
314
  'title' => 'GSAP',
315
  'type' => 'switcher',
316
- 'description' => sprintf( __( '%1$sGreenSock\'s GSAP JavaScript animation library (including Draggable).%3$s%4$sSOURCE%5$s%2$s' . $cdnjs_gsap, 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>', '<br />', '<a href="https://github.com/greensock/GSAP" title="GSAP Github" target="_blank">', '</a>' ),
317
  'default' => 'no',
318
  ),
319
  array(
320
  'id' => 'ob_use_scroll_trigger',
321
  'title' => 'GSAP - SCROLL TRIGGER',
322
  'type' => 'switcher',
323
- 'description' => sprintf( __( '%1$sLet your page react to scroll changes.%3$s%4$sSOURCE%5$s%2$s' . $cdnjs_scrolltrigger, 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>', '<br />', '<a href="https://github.com/terwanerik/ScrollTrigger" title="ScrollTrigger Github" target="_blank">', '</a>' ),
324
  'default' => 'no',
325
  ),
326
  array(
327
  'id' => 'ob_use_scroll_to',
328
  'title' => 'GSAP - SCROLL TO',
329
  'type' => 'switcher',
330
- 'description' => sprintf( __( '%1$sAnimates the scroll position of the window or a DOM element.%3$s%4$sSOURCE%5$s%2$s' . $cdnjs_scrollto, 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>', '<br />', '<a href="https://greensock.com/docs/v3/Plugins/ScrollToPlugin" title="ScrollTo" target="_blank">', '</a>' ),
331
  'default' => 'no',
332
  ),
333
  array(
334
  'id' => 'ob_use_motion_path',
335
  'title' => 'GSAP - MOTION PATH',
336
  'type' => 'switcher',
337
- 'description' => sprintf( __( '%1$sAnimate anything (SVG, DOM, canvas, generic objects, whatever) along a motion path in any browser.%3$s%4$sSOURCE%5$s%2$s' . $cdnjs_motionpath, 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>', '<br />', '<a href="https://greensock.com/motionpath/" title="MotionPath" target="_blank">', '</a>' ),
338
  'default' => 'no',
339
  ),
340
 
11
  include( SFE_DIR_PATH . 'info/ob-landing.php' );
12
  $news_content = ob_get_clean();
13
 
 
 
 
 
 
 
 
 
 
14
  // --------------------------- E X O P I T ----- >
15
  $config_submenu = array(
16
 
207
  'description' => sprintf( __( '%sTake control over the Column\'s pseudo elements%s', 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>' ),
208
  'default' => 'yes',
209
  ),
 
 
 
 
 
 
 
210
  ),
211
  );
212
 
286
  'description' => sprintf( __( '%1$s Create badass fluid and smooth transitions between your website\'s pages.%3$s%4$sSOURCE%5$s%2$s', 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>', '<br />', '<a href="https://barba.js.org/" title="Barba Home Page" target="_blank">', '</a>' ),
287
  'default' => 'no',
288
  ),
 
289
  array(
290
  'type' => 'card',
291
  'class' => 'sfe-card-warning',
292
  'content' => __( '<span>BEWARE!</span>By enabling any of the GSAP files below, you acknowledge the <a href="https://greensock.com/standard-license/" target="_blank">Standard "No Charge" GreenSock License</a>.', 'ooohboi-steroids' ),
293
  ),
 
294
  array(
295
  'id' => 'ob_use_gsap',
296
  'title' => 'GSAP',
297
  'type' => 'switcher',
298
+ 'description' => sprintf( __( '%1$sGreenSock\'s GSAP JavaScript animation library (including Draggable).%3$s%4$sSOURCE%5$s%2$s', 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>', '<br />', '<a href="https://github.com/greensock/GSAP" title="GSAP Github" target="_blank">', '</a>' ),
299
  'default' => 'no',
300
  ),
301
  array(
302
  'id' => 'ob_use_scroll_trigger',
303
  'title' => 'GSAP - SCROLL TRIGGER',
304
  'type' => 'switcher',
305
+ 'description' => sprintf( __( '%1$sLet your page react to scroll changes.%3$s%4$sSOURCE%5$s%2$s', 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>', '<br />', '<a href="https://github.com/terwanerik/ScrollTrigger" title="Scroll Trigger Github" target="_blank">', '</a>' ),
306
  'default' => 'no',
307
  ),
308
  array(
309
  'id' => 'ob_use_scroll_to',
310
  'title' => 'GSAP - SCROLL TO',
311
  'type' => 'switcher',
312
+ 'description' => sprintf( __( '%1$sAnimates the scroll position of the window or a DOM element.%3$s%4$sSOURCE%5$s%2$s', 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>', '<br />', '<a href="https://greensock.com/docs/v3/Plugins/ScrollToPlugin" title="Scroll To" target="_blank">', '</a>' ),
313
  'default' => 'no',
314
  ),
315
  array(
316
  'id' => 'ob_use_motion_path',
317
  'title' => 'GSAP - MOTION PATH',
318
  'type' => 'switcher',
319
+ 'description' => sprintf( __( '%1$sAnimate anything (SVG, DOM, canvas, generic objects, whatever) along a motion path in any browser.%3$s%4$sSOURCE%5$s%2$s', 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>', '<br />', '<a href="https://greensock.com/motionpath/" title="Motion Path" target="_blank">', '</a>' ),
320
  'default' => 'no',
321
  ),
322
 
inc/exopite-simple-options/exopite-simple-options-framework-class.php CHANGED
@@ -1697,7 +1697,7 @@ if ( ! class_exists( 'Exopite_Simple_Options_Framework' ) ) :
1697
 
1698
  }
1699
 
1700
- public function get_menu_item( $section, $active, $force_hidden ) {
1701
 
1702
  // $active = '';
1703
  // if ( $section === reset( $this->fields ) ) {
1697
 
1698
  }
1699
 
1700
+ public function get_menu_item( $section, $active = '', $force_hidden ) {
1701
 
1702
  // $active = '';
1703
  // if ( $section === reset( $this->fields ) ) {
inc/img/harakiri-cutt-off-bottom.png DELETED
Binary file
inc/img/icon-list-bullet.png DELETED
Binary file
inc/img/sfe-new-interface.png DELETED
Binary file
inc/info/ob-landing.php CHANGED
@@ -10,43 +10,35 @@
10
 
11
  <div class="col-8">
12
 
13
- <h3>What's new in v1.9.0?</h3>
14
  <p>
15
- <strong>Getting ready for a big change - the Elementor 3.6</strong>
16
  </p>
17
  <p>
18
- All the extensions (but the TELEPORTER) are now Container element friendly which means that if you are one of Elementor beta-testers, you can enjoy the SFE on Elementor 3.6 as well.
19
- Of course, the BREAKING BAD extension will no longer be needed due to the fact that a new Container element includes all of its options by default. <br/>
20
- More about the upcoming changes is yet to come.
21
  </p>
22
  <p>
23
- <strong>Major code improvements</strong>
24
- </p>
25
- <p>
26
- The extensions code has been rewritten and now it gets loaded per Elementor template/page only if the particular extension is in use. That makes everything a lot faster.
27
- </p>
28
- <p>
29
- <strong>The GSAP library and its plugins</strong>
30
- </p>
31
- <p>
32
- Due to the non-compliant WP license (GPLv2), the GSAP and all of its free plugins are now loaded from the CDN (cdnjs.com) instead of being part of the SFE.
33
- That should not have any performance impact or make your Elementor templates/pages that rely on these libs disfunctional in any way.
34
- </p>
35
- <p>
36
- <strong>Extensions revised</strong>
37
  </p>
 
 
 
 
 
38
  <p>
39
- The extensions settings/options have been revised, minor glitches have been fixed, and the most important is the fact that all the "Reset to Default" now work properly.<br/>
40
- As already mentioned, all of them are now Elementor 3.6 friendly so rest assured that everything will continue to work normaly once the big change happens.
41
  </p>
42
  <p>
43
- <strong>Interface improved</strong>
 
44
  </p>
45
  <p>
46
- From now on, SFE includes support for the Light/Dark Elementor mode. Of course, the dark mode should be preferred/default one but the light mode has still been "refreshed" in the same fashion.
 
47
  </p>
48
  <p>
49
- <img src="<?php echo SFE_DIR_URL . 'img/sfe-new-interface.png'; ?>" alt="SFE 1.9 new interface" />
50
  </p>
51
 
52
  </div>
10
 
11
  <div class="col-8">
12
 
13
+ <h3>What's new in v1.8.1?</h3>
14
  <p>
15
+ ANIME.js can now be optionally included to your Elementor website
16
  </p>
17
  <p>
18
+ <img src="<?php echo SFE_DIR_URL . 'img/anime-js.png'; ?>" alt="Anime" />
 
 
19
  </p>
20
  <p>
21
+ Anime.js works with anything web. CSS, SVG, DOM attributes and JavaScript Objects: animate everything with a single unified API.
22
+ The library allows you to control all aspects of the animation and provides a lot of ways for you to specify the elements that you want to target or the properties that you want to animate.
 
 
 
 
 
 
 
 
 
 
 
 
23
  </p>
24
+
25
+ <hr />
26
+
27
+ <h3>v1.7.9 Info</h3>
28
+ <p><strong>New options added to Glider!</strong></p>
29
  <p>
30
+ <img src="<?php echo SFE_DIR_URL . 'img/glider-centered.png'; ?>" alt="New Glider Features" />
 
31
  </p>
32
  <p>
33
+ <em>centeredSlides</em> and <em>centeredSlidesBounds</em> Swiper params are now added to "Glider" extension
34
+ settings. <strong>BEWARE!</strong> Unless you enable "Show Multiple Slides" option, you won't be able to see these!
35
  </p>
36
  <p>
37
+ <em>roundLenghts</em> is here as well! If you ever got issues with blurry slides (on usual resolution screens),
38
+ this is something that can help.
39
  </p>
40
  <p>
41
+ A couple of "regular" bugs also got fixed!
42
  </p>
43
 
44
  </div>
lang/ooohboi-steroids.pot CHANGED
@@ -1,16 +1,16 @@
1
  #, fuzzy
2
  msgid ""
3
  msgstr ""
 
4
  "Project-Id-Version: OoohBoi Steroids for Elementor\n"
5
- "POT-Creation-Date: 2022-01-25 11:49+0100\n"
6
- "PO-Revision-Date: 2022-01-25 11:48+0100\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
13
- "X-Generator: Poedit 3.0.1\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-Flags-xgettext: --add-comments=translators:\n"
16
  "X-Poedit-WPHeader: ooohboi-steroids.php\n"
@@ -33,56 +33,50 @@ msgstr ""
33
 
34
  #: controls/ooohboi-breaking-bad.php:93 controls/ooohboi-breaking-bad.php:175
35
  #: controls/ooohboi-breaking-bad.php:482 controls/ooohboi-breaking-bad.php:557
36
- #: controls/ooohboi-bullet.php:51 controls/ooohboi-butter-button.php:102
37
- #: controls/ooohboi-commentz.php:101 controls/ooohboi-commentz.php:1138
38
- #: controls/ooohboi-glider.php:119 controls/ooohboi-glider.php:134
39
- #: controls/ooohboi-glider.php:187 controls/ooohboi-glider.php:420
40
- #: controls/ooohboi-glider.php:580 controls/ooohboi-glider.php:661
41
- #: controls/ooohboi-glider.php:682 controls/ooohboi-glider.php:704
42
- #: controls/ooohboi-glider.php:744 controls/ooohboi-glider.php:779
43
- #: controls/ooohboi-glider.php:797 controls/ooohboi-glider.php:816
44
- #: controls/ooohboi-glider.php:835 controls/ooohboi-harakiri.php:128
45
- #: controls/ooohboi-harakiri.php:271 controls/ooohboi-hover-animator.php:108
46
- #: controls/ooohboi-hover-animator.php:182 controls/ooohboi-icobox.php:96
47
  #: controls/ooohboi-icobox.php:112 controls/ooohboi-icobox.php:247
48
  #: controls/ooohboi-imbox.php:97 controls/ooohboi-imbox.php:114
49
- #: controls/ooohboi-imbox.php:410 controls/ooohboi-overlaiz.php:64
50
- #: controls/ooohboi-overlay-underlay.php:105
51
- #: controls/ooohboi-overlay-underlay.php:1398
52
- #: controls/ooohboi-overlay-underlay.php:1417 controls/ooohboi-paginini.php:220
53
- #: controls/ooohboi-perspektive.php:105 controls/ooohboi-photomorph.php:97
54
- #: controls/ooohboi-photomorph.php:173 controls/ooohboi-pseudo.php:113
55
- #: controls/ooohboi-searchcop.php:79 controls/ooohboi-shadough.php:50
56
- #: controls/ooohboi-spacerat.php:101 controls/ooohboi-spacerat.php:378
57
- #: controls/ooohboi-widget-stalker.php:98
58
  #: inc/exopite-simple-options/fields/upload.php:131
59
  msgid "Yes"
60
  msgstr ""
61
 
62
  #: controls/ooohboi-breaking-bad.php:94 controls/ooohboi-breaking-bad.php:176
63
  #: controls/ooohboi-breaking-bad.php:483 controls/ooohboi-breaking-bad.php:558
64
- #: controls/ooohboi-bullet.php:52 controls/ooohboi-butter-button.php:103
65
- #: controls/ooohboi-commentz.php:102 controls/ooohboi-commentz.php:1139
66
- #: controls/ooohboi-glider.php:120 controls/ooohboi-glider.php:135
67
- #: controls/ooohboi-glider.php:188 controls/ooohboi-glider.php:421
68
- #: controls/ooohboi-glider.php:581 controls/ooohboi-glider.php:662
69
- #: controls/ooohboi-glider.php:683 controls/ooohboi-glider.php:705
70
- #: controls/ooohboi-glider.php:745 controls/ooohboi-glider.php:780
71
- #: controls/ooohboi-glider.php:798 controls/ooohboi-glider.php:817
72
- #: controls/ooohboi-glider.php:836 controls/ooohboi-harakiri.php:129
73
- #: controls/ooohboi-harakiri.php:272 controls/ooohboi-hover-animator.php:109
74
- #: controls/ooohboi-hover-animator.php:183 controls/ooohboi-icobox.php:97
75
  #: controls/ooohboi-icobox.php:113 controls/ooohboi-icobox.php:248
76
  #: controls/ooohboi-imbox.php:98 controls/ooohboi-imbox.php:115
77
- #: controls/ooohboi-imbox.php:411 controls/ooohboi-overlaiz.php:65
78
- #: controls/ooohboi-overlay-underlay.php:106
79
- #: controls/ooohboi-overlay-underlay.php:1399
80
- #: controls/ooohboi-overlay-underlay.php:1418 controls/ooohboi-paginini.php:221
81
- #: controls/ooohboi-perspektive.php:106 controls/ooohboi-photomorph.php:98
82
- #: controls/ooohboi-photomorph.php:174 controls/ooohboi-pseudo.php:114
83
- #: controls/ooohboi-searchcop.php:80 controls/ooohboi-shadough.php:51
84
- #: controls/ooohboi-spacerat.php:102 controls/ooohboi-spacerat.php:379
85
- #: controls/ooohboi-widget-stalker.php:99
86
  #: inc/exopite-simple-options/fields/upload.php:129
87
  msgid "No"
88
  msgstr ""
@@ -100,8 +94,8 @@ msgstr ""
100
  #: controls/ooohboi-breaking-bad.php:109 controls/ooohboi-breaking-bad.php:155
101
  #: controls/ooohboi-breaking-bad.php:315 controls/ooohboi-breaking-bad.php:338
102
  #: controls/ooohboi-breaking-bad.php:467 controls/ooohboi-breaking-bad.php:592
103
- #: controls/ooohboi-breaking-bad.php:616 controls/ooohboi-commentz.php:166
104
- #: controls/ooohboi-commentz.php:707 controls/ooohboi-widget-stalker.php:227
105
  msgid "Center"
106
  msgstr ""
107
 
@@ -109,7 +103,7 @@ msgstr ""
109
  #: controls/ooohboi-breaking-bad.php:316 controls/ooohboi-breaking-bad.php:339
110
  #: controls/ooohboi-breaking-bad.php:468 controls/ooohboi-breaking-bad.php:593
111
  #: controls/ooohboi-breaking-bad.php:617
112
- #: controls/ooohboi-widget-stalker.php:228
113
  msgid "End"
114
  msgstr ""
115
 
@@ -151,50 +145,47 @@ msgid ""
151
  "avoid content overlaps."
152
  msgstr ""
153
 
154
- #: controls/ooohboi-breaking-bad.php:192
155
- #: controls/ooohboi-widget-stalker.php:110
156
  msgid "Size Method"
157
  msgstr ""
158
 
159
- #: controls/ooohboi-breaking-bad.php:193
160
- #: controls/ooohboi-widget-stalker.php:111
161
  msgid "Use Flex or Units?"
162
  msgstr ""
163
 
164
  #: controls/ooohboi-breaking-bad.php:198 controls/ooohboi-breaking-bad.php:210
165
- #: controls/ooohboi-widget-stalker.php:115
166
- #: controls/ooohboi-widget-stalker.php:127
167
  msgid "Flex"
168
  msgstr ""
169
 
170
- #: controls/ooohboi-breaking-bad.php:199
171
- #: controls/ooohboi-widget-stalker.php:116
172
  msgid "Units"
173
  msgstr ""
174
 
175
- #: controls/ooohboi-breaking-bad.php:249 controls/ooohboi-overlaiz.php:78
176
- #: controls/ooohboi-overlaiz.php:588 controls/ooohboi-overlay-underlay.php:218
177
- #: controls/ooohboi-overlay-underlay.php:632
178
- #: controls/ooohboi-overlay-underlay.php:858
179
- #: controls/ooohboi-overlay-underlay.php:1262 controls/ooohboi-pseudo.php:227
180
- #: controls/ooohboi-pseudo.php:659 controls/ooohboi-pseudo.php:885
181
- #: controls/ooohboi-pseudo.php:1304 controls/ooohboi-spacerat.php:273
182
- #: controls/ooohboi-videomasq.php:123
183
  msgid "Width"
184
  msgstr ""
185
 
186
  #: controls/ooohboi-breaking-bad.php:255 controls/ooohboi-breaking-bad.php:294
187
  #: controls/ooohboi-breaking-bad.php:406 controls/ooohboi-teleporter.php:137
188
  #: controls/ooohboi-teleporter.php:155 controls/ooohboi-teleporter.php:186
189
- #: controls/ooohboi-teleporter.php:203 controls/ooohboi-widget-stalker.php:169
190
- #: controls/ooohboi-widget-stalker.php:207
191
  msgid ""
192
  "You can enter any acceptable CSS value, for example: 50em, 300px, 100%, "
193
  "calc(100% - 300px)."
194
  msgstr ""
195
 
196
  #: controls/ooohboi-breaking-bad.php:289 controls/ooohboi-breaking-bad.php:402
197
- #: controls/ooohboi-widget-stalker.php:203
198
  msgid "Max Width"
199
  msgstr ""
200
 
@@ -208,16 +199,16 @@ msgid ""
208
  "direction is Row or Inherit)."
209
  msgstr ""
210
 
211
- #: controls/ooohboi-breaking-bad.php:313 controls/ooohboi-overlaiz.php:568
212
- #: controls/ooohboi-overlay-underlay.php:612
213
- #: controls/ooohboi-overlay-underlay.php:1243 controls/ooohboi-pseudo.php:639
214
- #: controls/ooohboi-pseudo.php:1285 controls/ooohboi-spacerat.php:254
215
- #: controls/ooohboi-videomasq.php:105 controls/ooohboi-widget-stalker.php:225
216
  msgid "Auto"
217
  msgstr ""
218
 
219
  #: controls/ooohboi-breaking-bad.php:314
220
- #: controls/ooohboi-widget-stalker.php:226
221
  msgid "Baseline"
222
  msgstr ""
223
 
@@ -240,7 +231,7 @@ msgid "Stacking Order"
240
  msgstr ""
241
 
242
  #: controls/ooohboi-breaking-bad.php:355 controls/ooohboi-breaking-bad.php:444
243
- #: controls/ooohboi-widget-stalker.php:244
244
  #, php-format
245
  msgid "More info at %sMozilla%s."
246
  msgstr ""
@@ -256,7 +247,7 @@ msgid ""
256
  "Breaking Bad for this Column parent SECTION!"
257
  msgstr ""
258
 
259
- #: controls/ooohboi-breaking-bad.php:416 controls/ooohboi-harakiri.php:170
260
  msgid "Custom Height"
261
  msgstr ""
262
 
@@ -280,23 +271,23 @@ msgstr ""
280
  msgid "Column Link"
281
  msgstr ""
282
 
283
- #: controls/ooohboi-breaking-bad.php:504 controls/ooohboi-spacerat.php:126
284
  #: controls/ooohboi-teleporter.php:78
285
  msgid "None"
286
  msgstr ""
287
 
288
- #: controls/ooohboi-breaking-bad.php:505 controls/ooohboi-spacerat.php:127
289
  #: controls/ooohboi-teleporter.php:79
290
  msgid "Custom URL"
291
  msgstr ""
292
 
293
- #: controls/ooohboi-breaking-bad.php:516 controls/ooohboi-spacerat.php:122
294
- #: controls/ooohboi-spacerat.php:139 controls/ooohboi-teleporter.php:73
295
  #: controls/ooohboi-teleporter.php:90
296
  msgid "Link"
297
  msgstr ""
298
 
299
- #: controls/ooohboi-breaking-bad.php:523 controls/ooohboi-spacerat.php:145
300
  #: controls/ooohboi-teleporter.php:97
301
  msgid "https://your-link.com"
302
  msgstr ""
@@ -305,7 +296,7 @@ msgstr ""
305
  msgid "Widget Stalker"
306
  msgstr ""
307
 
308
- #: controls/ooohboi-breaking-bad.php:553 controls/ooohboi-widget-stalker.php:94
309
  msgid "Enable Widget Stalker?"
310
  msgstr ""
311
 
@@ -323,864 +314,817 @@ msgstr ""
323
  msgid "Align Widgets"
324
  msgstr ""
325
 
326
- #: controls/ooohboi-bullet.php:47
327
- #, php-format
328
- msgid "Move bullet to top%sNEW!%s"
329
- msgstr ""
330
-
331
- #: controls/ooohboi-bullet.php:48
332
- msgid "NOTE: Takes effect with more than just one line of text!"
333
- msgstr ""
334
-
335
- #: controls/ooohboi-bullet.php:63
336
- msgid "Margin Top"
337
  msgstr ""
338
 
339
- #: controls/ooohboi-butter-button.php:99 controls/ooohboi-searchcop.php:76
340
- msgid "Enable Butter Buttons?"
341
  msgstr ""
342
 
343
- #: controls/ooohboi-butter-button.php:114 controls/ooohboi-icobox.php:122
344
  msgid "Icon Size"
345
  msgstr ""
346
 
347
- #: controls/ooohboi-butter-button.php:115
348
  msgid "Be sure the icon is selected in the Content tab!"
349
  msgstr ""
350
 
351
- #: controls/ooohboi-butter-button.php:149
352
  msgid "Transition Duration"
353
  msgstr ""
354
 
355
- #: controls/ooohboi-butter-button.php:175 controls/ooohboi-commentz.php:183
356
- #: controls/ooohboi-commentz.php:792 controls/ooohboi-commentz.php:1031
357
- #: controls/ooohboi-glider.php:334 controls/ooohboi-kontrolz.php:107
358
  #: controls/ooohboi-paginini.php:59
359
  msgid "Padding"
360
  msgstr ""
361
 
362
- #: controls/ooohboi-butter-button.php:195 controls/ooohboi-harakiri.php:111
363
- #: controls/ooohboi-overlay-underlay.php:177
364
- #: controls/ooohboi-overlay-underlay.php:817
365
- #: controls/ooohboi-photomorph.php:112 controls/ooohboi-pseudo.php:185
366
- #: controls/ooohboi-pseudo.php:844 controls/ooohboi-teleporter.php:129
367
- msgid "Normal"
368
  msgstr ""
369
 
370
- #: controls/ooohboi-butter-button.php:206
371
- #: controls/ooohboi-butter-button.php:335
372
  msgid "Text Color"
373
  msgstr ""
374
 
375
- #: controls/ooohboi-butter-button.php:226
376
- #: controls/ooohboi-butter-button.php:356
377
  msgctxt "Butter Button Text Shadow Control"
378
  msgid "Text Shadow"
379
  msgstr ""
380
 
381
- #: controls/ooohboi-butter-button.php:238
382
- #: controls/ooohboi-butter-button.php:368
383
- msgid "The Background Settings"
384
- msgstr ""
385
-
386
- #: controls/ooohboi-butter-button.php:240
387
- #: controls/ooohboi-butter-button.php:370
388
- msgid ""
389
- "This won't make any effect unless you set the original NORMAL and HOVER "
390
- "background colors to transparent!"
391
- msgstr ""
392
-
393
- #: controls/ooohboi-butter-button.php:267
394
- #: controls/ooohboi-butter-button.php:398 controls/ooohboi-commentz.php:285
395
- #: controls/ooohboi-commentz.php:466 controls/ooohboi-commentz.php:988
396
  #: controls/ooohboi-imbox.php:209 controls/ooohboi-imbox.php:223
397
  #: controls/ooohboi-imbox.php:355 controls/ooohboi-imbox.php:369
398
- #: controls/ooohboi-overlaiz.php:371 controls/ooohboi-overlaiz.php:390
399
- #: controls/ooohboi-overlay-underlay.php:491
400
- #: controls/ooohboi-overlay-underlay.php:509
401
- #: controls/ooohboi-overlay-underlay.php:1123
402
- #: controls/ooohboi-overlay-underlay.php:1141 controls/ooohboi-paginini.php:146
403
- #: controls/ooohboi-paginini.php:195 controls/ooohboi-pseudo.php:517
404
- #: controls/ooohboi-pseudo.php:535 controls/ooohboi-pseudo.php:1164
405
- #: controls/ooohboi-pseudo.php:1182
406
  msgid "Border"
407
  msgstr ""
408
 
409
- #: controls/ooohboi-butter-button.php:280
410
- #: controls/ooohboi-butter-button.php:411 controls/ooohboi-commentz.php:296
411
- #: controls/ooohboi-commentz.php:478 controls/ooohboi-commentz.php:869
412
- #: controls/ooohboi-commentz.php:999 controls/ooohboi-glider.php:290
413
- #: controls/ooohboi-glider.php:537 controls/ooohboi-imbox.php:231
414
  #: controls/ooohboi-imbox.php:377 controls/ooohboi-kontrolz.php:95
415
- #: controls/ooohboi-kontrolz.php:207 controls/ooohboi-overlaiz.php:402
416
- #: controls/ooohboi-overlay-underlay.php:520
417
- #: controls/ooohboi-overlay-underlay.php:1153 controls/ooohboi-paginini.php:154
418
- #: controls/ooohboi-paginini.php:203 controls/ooohboi-pseudo.php:547
419
- #: controls/ooohboi-pseudo.php:1194
420
  msgid "Border Radius"
421
  msgstr ""
422
 
423
- #: controls/ooohboi-butter-button.php:298
424
- #: controls/ooohboi-butter-button.php:429 controls/ooohboi-icobox.php:55
425
  #: controls/ooohboi-imbox.php:56 controls/ooohboi-imbox.php:333
426
- #: controls/ooohboi-overlaiz.php:427
427
  msgid "Box Shadow"
428
  msgstr ""
429
 
430
- #: controls/ooohboi-butter-button.php:324 controls/ooohboi-photomorph.php:142
431
  #: controls/ooohboi-teleporter.php:174
432
  msgid "Hover"
433
  msgstr ""
434
 
435
- #: controls/ooohboi-butter-button.php:384
436
- msgid ""
437
- "NOTE: this won't make any effect unless you set the original HOVER "
438
- "background color to transparent!"
439
- msgstr ""
440
-
441
- #: controls/ooohboi-commentz.php:98
442
  msgid "Enable Commentz"
443
  msgstr ""
444
 
445
- #: controls/ooohboi-commentz.php:99
446
  msgid "That will allow you to style up the post comments."
447
  msgstr ""
448
 
449
- #: controls/ooohboi-commentz.php:115
450
  msgid "Heading"
451
  msgstr ""
452
 
453
- #: controls/ooohboi-commentz.php:128
454
  msgid "Heading style"
455
  msgstr ""
456
 
457
- #: controls/ooohboi-commentz.php:144 controls/ooohboi-commentz.php:550
458
- #: controls/ooohboi-commentz.php:626 controls/ooohboi-commentz.php:932
459
- #: controls/ooohboi-harakiri.php:243
460
  msgid "Color"
461
  msgstr ""
462
 
463
- #: controls/ooohboi-commentz.php:161
464
  msgid "Text alignment"
465
  msgstr ""
466
 
467
- #: controls/ooohboi-commentz.php:165 controls/ooohboi-commentz.php:706
468
  msgid "Left"
469
  msgstr ""
470
 
471
- #: controls/ooohboi-commentz.php:167 controls/ooohboi-commentz.php:708
472
  msgid "Right"
473
  msgstr ""
474
 
475
- #: controls/ooohboi-commentz.php:203 controls/ooohboi-commentz.php:642
476
- #: controls/ooohboi-commentz.php:809 controls/ooohboi-commentz.php:948
477
- #: controls/ooohboi-commentz.php:1051 controls/ooohboi-commentz.php:1115
478
  #: controls/ooohboi-paginini.php:75
479
  msgid "Margin"
480
  msgstr ""
481
 
482
- #: controls/ooohboi-commentz.php:237
483
  msgid "Comment list style"
484
  msgstr ""
485
 
486
- #: controls/ooohboi-commentz.php:253
487
  msgid "Comment body padding"
488
  msgstr ""
489
 
490
- #: controls/ooohboi-commentz.php:269
491
  msgid "Comment body margin"
492
  msgstr ""
493
 
494
- #: controls/ooohboi-commentz.php:312 controls/ooohboi-commentz.php:1015
495
  msgid "Background color"
496
  msgstr ""
497
 
498
- #: controls/ooohboi-commentz.php:328
499
  msgid "Background color replies"
500
  msgstr ""
501
 
502
- #: controls/ooohboi-commentz.php:345
503
  msgid "Child comments indent"
504
  msgstr ""
505
 
506
- #: controls/ooohboi-commentz.php:378
507
  msgid "Gravatar"
508
  msgstr ""
509
 
510
- #: controls/ooohboi-commentz.php:382
511
  msgid "Hide"
512
  msgstr ""
513
 
514
- #: controls/ooohboi-commentz.php:383
515
  msgid "Show"
516
  msgstr ""
517
 
518
- #: controls/ooohboi-commentz.php:399
519
  msgid "Gravatar style"
520
  msgstr ""
521
 
522
- #: controls/ooohboi-commentz.php:416 controls/ooohboi-glider.php:510
523
  msgid "Size"
524
  msgstr ""
525
 
526
- #: controls/ooohboi-commentz.php:448
527
  msgid "Position"
528
  msgstr ""
529
 
530
- #: controls/ooohboi-commentz.php:510
531
  msgid "Meta-data User"
532
  msgstr ""
533
 
534
- #: controls/ooohboi-commentz.php:522
535
  msgid "Meta-data Time"
536
  msgstr ""
537
 
538
- #: controls/ooohboi-commentz.php:535
539
  msgid "Meta-data style"
540
  msgstr ""
541
 
542
- #: controls/ooohboi-commentz.php:566
543
  msgid "Outer Margin"
544
  msgstr ""
545
 
546
- #: controls/ooohboi-commentz.php:597
547
  msgid "Comment text"
548
  msgstr ""
549
 
550
- #: controls/ooohboi-commentz.php:610
551
  msgid "Comment text style"
552
  msgstr ""
553
 
554
- #: controls/ooohboi-commentz.php:673
555
  msgid "Reply button"
556
  msgstr ""
557
 
558
- #: controls/ooohboi-commentz.php:686
559
  msgid "Reply button style"
560
  msgstr ""
561
 
562
- #: controls/ooohboi-commentz.php:702
563
  msgid "Align button"
564
  msgstr ""
565
 
566
- #: controls/ooohboi-commentz.php:724
567
  msgid "Text color normal"
568
  msgstr ""
569
 
570
- #: controls/ooohboi-commentz.php:740
571
  msgid "Text color hover"
572
  msgstr ""
573
 
574
- #: controls/ooohboi-commentz.php:757
575
  msgid "Background color normal"
576
  msgstr ""
577
 
578
- #: controls/ooohboi-commentz.php:775
579
  msgid "Background color hover"
580
  msgstr ""
581
 
582
- #: controls/ooohboi-commentz.php:826
583
  msgid "Border color normal"
584
  msgstr ""
585
 
586
- #: controls/ooohboi-commentz.php:840
587
  msgid "Border color hover"
588
  msgstr ""
589
 
590
- #: controls/ooohboi-commentz.php:854
591
  msgid "Border Width"
592
  msgstr ""
593
 
594
- #: controls/ooohboi-commentz.php:902
595
  msgid "Comment form heading"
596
  msgstr ""
597
 
598
- #: controls/ooohboi-commentz.php:916
599
  msgid "Comment form heading style"
600
  msgstr ""
601
 
602
- #: controls/ooohboi-commentz.php:972
603
  msgid "Comment form style"
604
  msgstr ""
605
 
606
- #: controls/ooohboi-commentz.php:1086
607
  msgid "Comments Nav"
608
  msgstr ""
609
 
610
- #: controls/ooohboi-commentz.php:1099
611
  msgid "Comments Nav style"
612
  msgstr ""
613
 
614
- #: controls/ooohboi-commentz.php:1134
615
  msgid "Hide the Website input field?"
616
  msgstr ""
617
 
618
- #: controls/ooohboi-commentz.php:1135
619
  msgid ""
620
  "If you make it hidden, be sure it's not mandatory otherwise the comment can "
621
  "not be posted!"
622
  msgstr ""
623
 
624
- #: controls/ooohboi-glider.php:115
625
  msgid "Create Slider?"
626
  msgstr ""
627
 
628
- #: controls/ooohboi-glider.php:116
629
- msgid ""
630
- "This container containers will become slidable. TIP: Use this Switch to "
631
- "refresh your Glider."
632
  msgstr ""
633
 
634
- #: controls/ooohboi-glider.php:131
635
  msgid "Adaptable height?"
636
  msgstr ""
637
 
638
- #: controls/ooohboi-glider.php:149
639
  msgid "Slider height"
640
  msgstr ""
641
 
642
- #: controls/ooohboi-glider.php:184
643
  msgid "Hide Navigation"
644
  msgstr ""
645
 
646
- #: controls/ooohboi-glider.php:205 controls/ooohboi-kontrolz.php:46
647
  msgid "Navigation styles"
648
  msgstr ""
649
 
650
- #: controls/ooohboi-glider.php:222
651
  msgid "Arrows Color"
652
  msgstr ""
653
 
654
- #: controls/ooohboi-glider.php:239 controls/ooohboi-kontrolz.php:58
655
  msgid "Arrows Color - Hover"
656
  msgstr ""
657
 
658
- #: controls/ooohboi-glider.php:256 controls/ooohboi-kontrolz.php:71
659
  #: controls/ooohboi-paginini.php:47 controls/ooohboi-paginini.php:121
660
  #: controls/ooohboi-paginini.php:182
661
  msgid "Background Color"
662
  msgstr ""
663
 
664
- #: controls/ooohboi-glider.php:273 controls/ooohboi-kontrolz.php:83
665
  msgid "Background Color - Hover"
666
  msgstr ""
667
 
668
- #: controls/ooohboi-glider.php:307
669
  msgid "Icon size"
670
  msgstr ""
671
 
672
- #: controls/ooohboi-glider.php:360 controls/ooohboi-kontrolz.php:128
673
  msgid "Calc - Y"
674
  msgstr ""
675
 
676
- #: controls/ooohboi-glider.php:361 controls/ooohboi-glider.php:380
677
- #: controls/ooohboi-glider.php:398 controls/ooohboi-kontrolz.php:129
678
  #: controls/ooohboi-kontrolz.php:143 controls/ooohboi-kontrolz.php:156
679
  msgid "Valid CSS only! Like: 25px or 15em or 100% - 50px or 50% + 3rem"
680
  msgstr ""
681
 
682
- #: controls/ooohboi-glider.php:378 controls/ooohboi-kontrolz.php:141
683
  msgid "Calc Prev - X"
684
  msgstr ""
685
 
686
- #: controls/ooohboi-glider.php:396 controls/ooohboi-kontrolz.php:154
687
  msgid "Calc Next - X"
688
  msgstr ""
689
 
690
- #: controls/ooohboi-glider.php:417
691
  msgid "Hide Pagination"
692
  msgstr ""
693
 
694
- #: controls/ooohboi-glider.php:439 controls/ooohboi-kontrolz.php:170
695
  msgid "Pagination styles"
696
  msgstr ""
697
 
698
- #: controls/ooohboi-glider.php:455
699
  msgid "Pagination type"
700
  msgstr ""
701
 
702
- #: controls/ooohboi-glider.php:459
703
  msgid "Bullets"
704
  msgstr ""
705
 
706
- #: controls/ooohboi-glider.php:460
707
  msgid "Fraction"
708
  msgstr ""
709
 
710
- #: controls/ooohboi-glider.php:461
711
  msgid "Progress Bar"
712
  msgstr ""
713
 
714
- #: controls/ooohboi-glider.php:475 controls/ooohboi-kontrolz.php:182
715
  msgid "Pagination Color"
716
  msgstr ""
717
 
718
- #: controls/ooohboi-glider.php:492 controls/ooohboi-kontrolz.php:195
719
  msgid "Pagination Color - Active"
720
  msgstr ""
721
 
722
- #: controls/ooohboi-glider.php:557
723
  msgid "Transition type"
724
  msgstr ""
725
 
726
- #: controls/ooohboi-glider.php:562
727
  msgid "Slide"
728
  msgstr ""
729
 
730
- #: controls/ooohboi-glider.php:563 controls/ooohboi-teleporter.php:317
731
  msgid "Fade"
732
  msgstr ""
733
 
734
- #: controls/ooohboi-glider.php:577
735
  msgid "Show Multiple Slides"
736
  msgstr ""
737
 
738
- #: controls/ooohboi-glider.php:598
739
  msgid "Slides Per View"
740
  msgstr ""
741
 
742
- #: controls/ooohboi-glider.php:619
743
  msgid "Slides to Scroll"
744
  msgstr ""
745
 
746
- #: controls/ooohboi-glider.php:620
747
  msgid "Scrolling multiple slides can break infinite loop."
748
  msgstr ""
749
 
750
- #: controls/ooohboi-glider.php:639
751
  msgid "Space Between Slides (px)"
752
  msgstr ""
753
 
754
- #: controls/ooohboi-glider.php:657
755
- msgid "Centered Slides"
 
756
  msgstr ""
757
 
758
- #: controls/ooohboi-glider.php:658
759
  msgid "Active slide will be centered."
760
  msgstr ""
761
 
762
- #: controls/ooohboi-glider.php:678
763
- msgid "Centered Slide Bounds"
 
764
  msgstr ""
765
 
766
- #: controls/ooohboi-glider.php:679
767
  msgid ""
768
  "Active slide will be centered without adding gaps at the beginning and end "
769
  "of slider."
770
  msgstr ""
771
 
772
- #: controls/ooohboi-glider.php:701
773
  msgid "Infinite Loop"
774
  msgstr ""
775
 
776
- #: controls/ooohboi-glider.php:720
777
  msgid "Direction"
778
  msgstr ""
779
 
780
- #: controls/ooohboi-glider.php:725
781
  msgid "Horizontal"
782
  msgstr ""
783
 
784
- #: controls/ooohboi-glider.php:726
785
  msgid "Vertical"
786
  msgstr ""
787
 
788
- #: controls/ooohboi-glider.php:740
789
  msgid "Parallax"
790
  msgstr ""
791
 
792
- #: controls/ooohboi-glider.php:741
793
  msgid "It will work with Elementor PRO Attributes only."
794
  msgstr ""
795
 
796
- #: controls/ooohboi-glider.php:760
797
  msgid "Transition speed"
798
  msgstr ""
799
 
800
- #: controls/ooohboi-glider.php:776
801
  msgid "Enable Touch Move"
802
  msgstr ""
803
 
804
- #: controls/ooohboi-glider.php:794
805
  msgid "Enable Mousewheel"
806
  msgstr ""
807
 
808
- #: controls/ooohboi-glider.php:812
809
- msgid "Deblur Slides"
 
810
  msgstr ""
811
 
812
- #: controls/ooohboi-glider.php:813
813
  msgid "Round values of slides width and height to prevent blurry texts?"
814
  msgstr ""
815
 
816
- #: controls/ooohboi-glider.php:832
817
  msgid "Autoplay"
818
  msgstr ""
819
 
820
- #: controls/ooohboi-glider.php:850
821
  msgid "Autoplay delay"
822
  msgstr ""
823
 
824
- #: controls/ooohboi-glider.php:851
825
  msgid "In miliseconds! 1000 is one second."
826
  msgstr ""
827
 
828
- #: controls/ooohboi-glider.php:869
829
- msgid "Control Glider externally!"
830
- msgstr ""
831
-
832
- #: controls/ooohboi-glider.php:871
833
- msgid ""
834
- "You can control this Glider instance from any link on this page by adding "
835
- "the custom class name to the link. \n"
836
- "\t\t\t\t\tCopy the text entirely and append the slide number to go to at the "
837
- "end. For instance: glider-NNNNNNN-gotoslide-3"
838
- msgstr ""
839
-
840
- #: controls/ooohboi-glider.php:883
841
- msgid "This Glider control class"
842
- msgstr ""
843
-
844
- #: controls/ooohboi-harakiri.php:91
845
  msgid "Color - HOVER"
846
  msgstr ""
847
 
848
- #: controls/ooohboi-harakiri.php:103
849
  msgid "Writing Mode"
850
  msgstr ""
851
 
852
- #: controls/ooohboi-harakiri.php:109
853
  msgid "Vertical LR"
854
  msgstr ""
855
 
856
- #: controls/ooohboi-harakiri.php:110
857
  msgid "Vertical RL"
858
  msgstr ""
859
 
860
- #: controls/ooohboi-harakiri.php:124
 
 
 
 
 
 
 
861
  msgid "Flip"
862
  msgstr ""
863
 
864
- #: controls/ooohboi-harakiri.php:146 controls/ooohboi-overlaiz.php:145
865
- #: controls/ooohboi-overlay-underlay.php:279
866
- #: controls/ooohboi-overlay-underlay.php:917 controls/ooohboi-pseudo.php:292
867
- #: controls/ooohboi-pseudo.php:946
868
  msgid "Height"
869
  msgstr ""
870
 
871
- #: controls/ooohboi-harakiri.php:150 controls/ooohboi-harakiri.php:229
872
- #: controls/ooohboi-hover-animator.php:321
873
- #: controls/ooohboi-hover-animator.php:518
874
- #: controls/ooohboi-hover-animator.php:715
875
- #: controls/ooohboi-hover-animator.php:965
876
- #: controls/ooohboi-hover-animator.php:1131 controls/ooohboi-overlaiz.php:537
877
- #: controls/ooohboi-overlaiz.php:567 controls/ooohboi-overlay-underlay.php:581
878
- #: controls/ooohboi-overlay-underlay.php:611
879
- #: controls/ooohboi-overlay-underlay.php:1213
880
- #: controls/ooohboi-overlay-underlay.php:1242
881
- #: controls/ooohboi-photomorph.php:220 controls/ooohboi-pseudo.php:608
882
- #: controls/ooohboi-pseudo.php:638 controls/ooohboi-pseudo.php:1255
883
- #: controls/ooohboi-pseudo.php:1284 controls/ooohboi-spacerat.php:224
884
- #: controls/ooohboi-spacerat.php:253 controls/ooohboi-videomasq.php:76
885
- #: controls/ooohboi-videomasq.php:104
886
  msgid "Default"
887
  msgstr ""
888
 
889
- #: controls/ooohboi-harakiri.php:151
890
  msgid "Inline"
891
  msgstr ""
892
 
893
- #: controls/ooohboi-harakiri.php:152 controls/ooohboi-overlaiz.php:571
894
- #: controls/ooohboi-overlay-underlay.php:615
895
- #: controls/ooohboi-overlay-underlay.php:1246 controls/ooohboi-pseudo.php:642
896
- #: controls/ooohboi-pseudo.php:1288 controls/ooohboi-spacerat.php:257
897
- #: controls/ooohboi-videomasq.php:108
898
  msgid "Custom"
899
  msgstr ""
900
 
901
- #: controls/ooohboi-harakiri.php:171
902
  msgid "NOTE: [%] unit works properly only if Column height is a fixed value!"
903
  msgstr ""
904
 
905
- #: controls/ooohboi-harakiri.php:220
906
  msgid "Mix Blend Mode"
907
  msgstr ""
908
 
909
- #: controls/ooohboi-harakiri.php:222
910
  #, php-format
911
  msgid "Learn more about this CSS property: %sMozilla.org%s"
912
  msgstr ""
913
 
914
- #: controls/ooohboi-harakiri.php:230
915
  msgid "Multiply"
916
  msgstr ""
917
 
918
- #: controls/ooohboi-harakiri.php:231
919
  msgid "Screen"
920
  msgstr ""
921
 
922
- #: controls/ooohboi-harakiri.php:232 controls/ooohboi-overlay-underlay.php:120
923
  msgid "Overlay"
924
  msgstr ""
925
 
926
- #: controls/ooohboi-harakiri.php:233
927
  msgid "Darken"
928
  msgstr ""
929
 
930
- #: controls/ooohboi-harakiri.php:234
931
  msgid "Lighten"
932
  msgstr ""
933
 
934
- #: controls/ooohboi-harakiri.php:235
935
  msgid "Color-dodge"
936
  msgstr ""
937
 
938
- #: controls/ooohboi-harakiri.php:236
939
  msgid "Color-burn"
940
  msgstr ""
941
 
942
- #: controls/ooohboi-harakiri.php:237
943
  msgid "Hard-light"
944
  msgstr ""
945
 
946
- #: controls/ooohboi-harakiri.php:238
947
  msgid "Soft-light"
948
  msgstr ""
949
 
950
- #: controls/ooohboi-harakiri.php:239
951
  msgid "Difference"
952
  msgstr ""
953
 
954
- #: controls/ooohboi-harakiri.php:240
955
  msgid "Exclusion"
956
  msgstr ""
957
 
958
- #: controls/ooohboi-harakiri.php:241
959
  msgid "Hue"
960
  msgstr ""
961
 
962
- #: controls/ooohboi-harakiri.php:242
963
  msgid "Saturation"
964
  msgstr ""
965
 
966
- #: controls/ooohboi-harakiri.php:244
967
  msgid "Luminosity"
968
  msgstr ""
969
 
970
- #: controls/ooohboi-harakiri.php:268
971
- msgid "Cut off the bottom margin"
972
- msgstr ""
973
-
974
- #: controls/ooohboi-harakiri.php:269
975
- msgid "NOTE: Only the last child P(aragraph) shall be cut off!"
976
- msgstr ""
977
-
978
- #: controls/ooohboi-hover-animator.php:105
979
  msgid "Enable HOVERANIMATOR?"
980
  msgstr ""
981
 
982
- #: controls/ooohboi-hover-animator.php:120
983
  msgid ""
984
- "With Hoveranimator you can animate any widget in this container on mouse-"
985
- "over event. Animation panel is available under the Advanced tab, per widget!"
986
  msgstr ""
987
 
988
- #: controls/ooohboi-hover-animator.php:129 controls/ooohboi-icobox.php:75
989
- #: controls/ooohboi-imbox.php:76 controls/ooohboi-perspektive.php:256
990
  #: controls/ooohboi-teleporter.php:361
991
  msgid "Content Overflow"
992
  msgstr ""
993
 
994
- #: controls/ooohboi-hover-animator.php:130
995
  msgid ""
996
  "VISIBLE - makes visible all the elements outside this Column boundaries, "
997
  "HIDDEN - hides everything outside this Column boundaries."
998
  msgstr ""
999
 
1000
- #: controls/ooohboi-hover-animator.php:135 controls/ooohboi-icobox.php:80
1001
- #: controls/ooohboi-imbox.php:81 controls/ooohboi-perspektive.php:262
1002
  #: controls/ooohboi-teleporter.php:367
1003
  msgid "Visible"
1004
  msgstr ""
1005
 
1006
- #: controls/ooohboi-hover-animator.php:136 controls/ooohboi-icobox.php:81
1007
- #: controls/ooohboi-imbox.php:82 controls/ooohboi-perspektive.php:263
1008
  #: controls/ooohboi-teleporter.php:368
1009
  msgid "Hidden"
1010
  msgstr ""
1011
 
1012
- #: controls/ooohboi-hover-animator.php:179
1013
  msgid "Enable Hoveranimator"
1014
  msgstr ""
1015
 
1016
- #: controls/ooohboi-hover-animator.php:180
1017
  msgid ""
1018
  "That will allow you to animate this widget on mouse-over event of the parent "
1019
  "column."
1020
  msgstr ""
1021
 
1022
- #: controls/ooohboi-hover-animator.php:194
1023
- #: controls/ooohboi-overlay-underlay.php:138
1024
- #: controls/ooohboi-overlay-underlay.php:778 controls/ooohboi-pseudo.php:146
1025
- #: controls/ooohboi-pseudo.php:805
1026
  msgid "Opacity"
1027
  msgstr ""
1028
 
1029
- #: controls/ooohboi-hover-animator.php:210
1030
  msgid "Opacity Normal"
1031
  msgstr ""
1032
 
1033
- #: controls/ooohboi-hover-animator.php:235
1034
  msgid "Opacity Hover"
1035
  msgstr ""
1036
 
1037
- #: controls/ooohboi-hover-animator.php:257
1038
- #: controls/ooohboi-hover-animator.php:454
1039
- #: controls/ooohboi-hover-animator.php:651
1040
- #: controls/ooohboi-hover-animator.php:901
1041
- #: controls/ooohboi-hover-animator.php:1067
1042
  msgid "Duration"
1043
  msgstr ""
1044
 
1045
- #: controls/ooohboi-hover-animator.php:286
1046
- #: controls/ooohboi-hover-animator.php:483
1047
- #: controls/ooohboi-hover-animator.php:680
1048
- #: controls/ooohboi-hover-animator.php:930
1049
- #: controls/ooohboi-hover-animator.php:1096
1050
  msgid "Delay"
1051
  msgstr ""
1052
 
1053
- #: controls/ooohboi-hover-animator.php:315
1054
- #: controls/ooohboi-hover-animator.php:512
1055
- #: controls/ooohboi-hover-animator.php:709
1056
- #: controls/ooohboi-hover-animator.php:959
1057
- #: controls/ooohboi-hover-animator.php:1125
1058
  msgid "Easing"
1059
  msgstr ""
1060
 
1061
- #: controls/ooohboi-hover-animator.php:322
1062
- #: controls/ooohboi-hover-animator.php:519
1063
- #: controls/ooohboi-hover-animator.php:716
1064
- #: controls/ooohboi-hover-animator.php:966
1065
- #: controls/ooohboi-hover-animator.php:1132 controls/ooohboi-photomorph.php:221
1066
  msgid "Ease-in"
1067
  msgstr ""
1068
 
1069
- #: controls/ooohboi-hover-animator.php:323
1070
- #: controls/ooohboi-hover-animator.php:520
1071
- #: controls/ooohboi-hover-animator.php:717
1072
- #: controls/ooohboi-hover-animator.php:967
1073
- #: controls/ooohboi-hover-animator.php:1133 controls/ooohboi-photomorph.php:222
1074
  msgid "Ease-out"
1075
  msgstr ""
1076
 
1077
- #: controls/ooohboi-hover-animator.php:324
1078
- #: controls/ooohboi-hover-animator.php:521
1079
- #: controls/ooohboi-hover-animator.php:718
1080
- #: controls/ooohboi-hover-animator.php:968
1081
- #: controls/ooohboi-hover-animator.php:1134 controls/ooohboi-photomorph.php:223
1082
  msgid "Ease-in-out"
1083
  msgstr ""
1084
 
1085
- #: controls/ooohboi-hover-animator.php:344
1086
- #: controls/ooohboi-overlay-underlay.php:340
1087
- #: controls/ooohboi-overlay-underlay.php:976 controls/ooohboi-pseudo.php:357
1088
- #: controls/ooohboi-pseudo.php:1009
1089
  msgid "Offset Top"
1090
  msgstr ""
1091
 
1092
- #: controls/ooohboi-hover-animator.php:360
1093
  msgid "Offset Top Normal"
1094
  msgstr ""
1095
 
1096
- #: controls/ooohboi-hover-animator.php:392
1097
  msgid "Calc Offset Top Normal"
1098
  msgstr ""
1099
 
1100
- #: controls/ooohboi-hover-animator.php:393
1101
- #: controls/ooohboi-hover-animator.php:440
1102
- #: controls/ooohboi-hover-animator.php:590
1103
- #: controls/ooohboi-hover-animator.php:637 controls/ooohboi-overlaiz.php:130
1104
- #: controls/ooohboi-overlaiz.php:197 controls/ooohboi-overlaiz.php:264
1105
- #: controls/ooohboi-overlaiz.php:331 controls/ooohboi-overlay-underlay.php:263
1106
- #: controls/ooohboi-overlay-underlay.php:385
1107
- #: controls/ooohboi-overlay-underlay.php:902
1108
- #: controls/ooohboi-overlay-underlay.php:1020
1109
- #: controls/ooohboi-overlay-underlay.php:1079 controls/ooohboi-pseudo.php:276
1110
- #: controls/ooohboi-pseudo.php:406 controls/ooohboi-pseudo.php:931
1111
- #: controls/ooohboi-pseudo.php:1057 controls/ooohboi-pseudo.php:1120
1112
  msgid "Enter CSS calc value only! Like: 100% - 50px or 100% + 2em"
1113
  msgstr ""
1114
 
1115
- #: controls/ooohboi-hover-animator.php:410
1116
  msgid "Offset Top Hover"
1117
  msgstr ""
1118
 
1119
- #: controls/ooohboi-hover-animator.php:439
1120
  msgid "Calc Offset Top Hover"
1121
  msgstr ""
1122
 
1123
- #: controls/ooohboi-hover-animator.php:541
1124
- #: controls/ooohboi-overlay-underlay.php:401
1125
- #: controls/ooohboi-overlay-underlay.php:1035 controls/ooohboi-pseudo.php:422
1126
- #: controls/ooohboi-pseudo.php:1072
1127
  msgid "Offset Left"
1128
  msgstr ""
1129
 
1130
- #: controls/ooohboi-hover-animator.php:557
1131
  msgid "Offset Left Normal"
1132
  msgstr ""
1133
 
1134
- #: controls/ooohboi-hover-animator.php:589
1135
  msgid "Calc Offset Left Normal"
1136
  msgstr ""
1137
 
1138
- #: controls/ooohboi-hover-animator.php:607
1139
  msgid "Offset Left Hover"
1140
  msgstr ""
1141
 
1142
- #: controls/ooohboi-hover-animator.php:636
1143
  msgid "Calc Offset Left Hover"
1144
  msgstr ""
1145
 
1146
- #: controls/ooohboi-hover-animator.php:738
1147
  msgid "Transforms"
1148
  msgstr ""
1149
 
1150
- #: controls/ooohboi-hover-animator.php:753
1151
  msgid "ScaleX Normal"
1152
  msgstr ""
1153
 
1154
- #: controls/ooohboi-hover-animator.php:779
1155
  msgid "ScaleX Hover"
1156
  msgstr ""
1157
 
1158
- #: controls/ooohboi-hover-animator.php:802
1159
  msgid "ScaleY Normal"
1160
  msgstr ""
1161
 
1162
- #: controls/ooohboi-hover-animator.php:828
1163
  msgid "ScaleY Hover"
1164
  msgstr ""
1165
 
1166
- #: controls/ooohboi-hover-animator.php:851
1167
  msgid "Rotation Normal"
1168
  msgstr ""
1169
 
1170
- #: controls/ooohboi-hover-animator.php:877
1171
  msgid "Rotation Hover"
1172
  msgstr ""
1173
 
1174
- #: controls/ooohboi-hover-animator.php:988 controls/ooohboi-shadough.php:123
1175
- #: controls/ooohboi-spacerat.php:474
1176
  msgid "Blur"
1177
  msgstr ""
1178
 
1179
- #: controls/ooohboi-hover-animator.php:1004
1180
  msgid "Blur Normal"
1181
  msgstr ""
1182
 
1183
- #: controls/ooohboi-hover-animator.php:1037
1184
  msgid "Blur Hover"
1185
  msgstr ""
1186
 
@@ -1269,12 +1213,12 @@ msgstr ""
1269
  msgid "Image clip path"
1270
  msgstr ""
1271
 
1272
- #: controls/ooohboi-imbox.php:248 controls/ooohboi-overlaiz.php:470
1273
- #: controls/ooohboi-overlay-underlay.php:716
1274
- #: controls/ooohboi-overlay-underlay.php:1344
1275
- #: controls/ooohboi-photomorph.php:120 controls/ooohboi-photomorph.php:150
1276
- #: controls/ooohboi-pseudo.php:743 controls/ooohboi-pseudo.php:1386
1277
- #: controls/ooohboi-spacerat.php:539
1278
  #, php-format
1279
  msgid ""
1280
  "Enter the full clip-path property! See the copy-paste examples at %sClippy%s"
@@ -1308,68 +1252,68 @@ msgid ""
1308
  "pipe character, i.e. data-scroll-offset%s100,50em"
1309
  msgstr ""
1310
 
1311
- #: controls/ooohboi-overlaiz.php:61
1312
  msgid "Enable Overlaiz?"
1313
  msgstr ""
1314
 
1315
- #: controls/ooohboi-overlaiz.php:129 controls/ooohboi-overlay-underlay.php:262
1316
- #: controls/ooohboi-overlay-underlay.php:901 controls/ooohboi-pseudo.php:275
1317
- #: controls/ooohboi-pseudo.php:930
1318
  msgid "Calc Width"
1319
  msgstr ""
1320
 
1321
- #: controls/ooohboi-overlaiz.php:196 controls/ooohboi-overlay-underlay.php:323
1322
- #: controls/ooohboi-overlay-underlay.php:960 controls/ooohboi-pseudo.php:340
1323
- #: controls/ooohboi-pseudo.php:993
1324
  msgid "Calc Height"
1325
  msgstr ""
1326
 
1327
- #: controls/ooohboi-overlaiz.php:212
1328
  msgid "Position - X"
1329
  msgstr ""
1330
 
1331
- #: controls/ooohboi-overlaiz.php:263
1332
  msgid "Calc Position - X"
1333
  msgstr ""
1334
 
1335
- #: controls/ooohboi-overlaiz.php:279
1336
  msgid "Position - Y"
1337
  msgstr ""
1338
 
1339
- #: controls/ooohboi-overlaiz.php:330
1340
  msgid "Calc Position - Y"
1341
  msgstr ""
1342
 
1343
- #: controls/ooohboi-overlaiz.php:346
1344
  msgid "Rotation"
1345
  msgstr ""
1346
 
1347
- #: controls/ooohboi-overlaiz.php:453 controls/ooohboi-overlay-underlay.php:714
1348
- #: controls/ooohboi-overlay-underlay.php:1342 controls/ooohboi-pseudo.php:741
1349
- #: controls/ooohboi-pseudo.php:1384 controls/ooohboi-spacerat.php:537
1350
  msgid "Clip path"
1351
  msgstr ""
1352
 
1353
- #: controls/ooohboi-overlaiz.php:494
1354
  msgid "Mask"
1355
  msgstr ""
1356
 
1357
- #: controls/ooohboi-overlaiz.php:495 controls/ooohboi-spacerat.php:185
1358
- #: controls/ooohboi-spacerat.php:354
1359
  msgid ""
1360
  "NOTE: In order to see the effect you should add the Background to the Spacer "
1361
  "widget first!"
1362
  msgstr ""
1363
 
1364
- #: controls/ooohboi-overlaiz.php:513 controls/ooohboi-overlay-underlay.php:557
1365
- #: controls/ooohboi-overlay-underlay.php:1189 controls/ooohboi-pseudo.php:584
1366
- #: controls/ooohboi-pseudo.php:1231 controls/ooohboi-spacerat.php:201
1367
  msgid "Choose Image Mask"
1368
  msgstr ""
1369
 
1370
- #: controls/ooohboi-overlaiz.php:514 controls/ooohboi-overlay-underlay.php:558
1371
- #: controls/ooohboi-overlay-underlay.php:1190 controls/ooohboi-pseudo.php:585
1372
- #: controls/ooohboi-pseudo.php:1232 controls/ooohboi-spacerat.php:202
1373
  #, php-format
1374
  msgid ""
1375
  "NOTE: Image Mask should be black-and-transparent SVG file! Anything that’s "
@@ -1377,238 +1321,234 @@ msgid ""
1377
  "transparent will be completely hidden."
1378
  msgstr ""
1379
 
1380
- #: controls/ooohboi-overlaiz.php:533 controls/ooohboi-overlay-underlay.php:577
1381
- #: controls/ooohboi-overlay-underlay.php:1209 controls/ooohboi-pseudo.php:604
1382
- #: controls/ooohboi-pseudo.php:1251 controls/ooohboi-spacerat.php:220
1383
- #: controls/ooohboi-videomasq.php:72
1384
  msgid "Mask position"
1385
  msgstr ""
1386
 
1387
- #: controls/ooohboi-overlaiz.php:538 controls/ooohboi-overlay-underlay.php:582
1388
- #: controls/ooohboi-overlay-underlay.php:1214 controls/ooohboi-pseudo.php:609
1389
- #: controls/ooohboi-pseudo.php:1256 controls/ooohboi-spacerat.php:225
1390
- #: controls/ooohboi-videomasq.php:77
1391
  msgid "Center Center"
1392
  msgstr ""
1393
 
1394
- #: controls/ooohboi-overlaiz.php:539 controls/ooohboi-overlay-underlay.php:583
1395
- #: controls/ooohboi-overlay-underlay.php:1215 controls/ooohboi-pseudo.php:610
1396
- #: controls/ooohboi-pseudo.php:1257 controls/ooohboi-spacerat.php:226
1397
- #: controls/ooohboi-videomasq.php:78
1398
  msgid "Center Left"
1399
  msgstr ""
1400
 
1401
- #: controls/ooohboi-overlaiz.php:540 controls/ooohboi-overlay-underlay.php:584
1402
- #: controls/ooohboi-overlay-underlay.php:1216 controls/ooohboi-pseudo.php:611
1403
- #: controls/ooohboi-pseudo.php:1258 controls/ooohboi-spacerat.php:227
1404
- #: controls/ooohboi-videomasq.php:79
1405
  msgid "Center Right"
1406
  msgstr ""
1407
 
1408
- #: controls/ooohboi-overlaiz.php:541 controls/ooohboi-overlay-underlay.php:585
1409
- #: controls/ooohboi-overlay-underlay.php:1217 controls/ooohboi-pseudo.php:612
1410
- #: controls/ooohboi-pseudo.php:1259 controls/ooohboi-spacerat.php:228
1411
- #: controls/ooohboi-videomasq.php:80
1412
  msgid "Top Center"
1413
  msgstr ""
1414
 
1415
- #: controls/ooohboi-overlaiz.php:542 controls/ooohboi-overlay-underlay.php:586
1416
- #: controls/ooohboi-overlay-underlay.php:1218 controls/ooohboi-pseudo.php:613
1417
- #: controls/ooohboi-pseudo.php:1260 controls/ooohboi-spacerat.php:229
1418
- #: controls/ooohboi-videomasq.php:81
1419
  msgid "Top Left"
1420
  msgstr ""
1421
 
1422
- #: controls/ooohboi-overlaiz.php:543 controls/ooohboi-overlay-underlay.php:587
1423
- #: controls/ooohboi-overlay-underlay.php:1219 controls/ooohboi-pseudo.php:614
1424
- #: controls/ooohboi-pseudo.php:1261 controls/ooohboi-spacerat.php:230
1425
- #: controls/ooohboi-videomasq.php:82
1426
  msgid "Top Right"
1427
  msgstr ""
1428
 
1429
- #: controls/ooohboi-overlaiz.php:544 controls/ooohboi-overlay-underlay.php:588
1430
- #: controls/ooohboi-overlay-underlay.php:1220 controls/ooohboi-pseudo.php:615
1431
- #: controls/ooohboi-pseudo.php:1262 controls/ooohboi-spacerat.php:231
1432
- #: controls/ooohboi-videomasq.php:83
1433
  msgid "Bottom Center"
1434
  msgstr ""
1435
 
1436
- #: controls/ooohboi-overlaiz.php:545 controls/ooohboi-overlay-underlay.php:589
1437
- #: controls/ooohboi-overlay-underlay.php:1221 controls/ooohboi-pseudo.php:616
1438
- #: controls/ooohboi-pseudo.php:1263 controls/ooohboi-spacerat.php:232
1439
- #: controls/ooohboi-videomasq.php:84
1440
  msgid "Bottom Left"
1441
  msgstr ""
1442
 
1443
- #: controls/ooohboi-overlaiz.php:546 controls/ooohboi-overlay-underlay.php:590
1444
- #: controls/ooohboi-overlay-underlay.php:1222 controls/ooohboi-pseudo.php:617
1445
- #: controls/ooohboi-pseudo.php:1264 controls/ooohboi-spacerat.php:233
1446
- #: controls/ooohboi-videomasq.php:85
1447
  msgid "Bottom Right"
1448
  msgstr ""
1449
 
1450
- #: controls/ooohboi-overlaiz.php:563 controls/ooohboi-overlay-underlay.php:607
1451
- #: controls/ooohboi-overlay-underlay.php:1238 controls/ooohboi-pseudo.php:634
1452
- #: controls/ooohboi-pseudo.php:1280 controls/ooohboi-spacerat.php:249
1453
- #: controls/ooohboi-videomasq.php:100
1454
  msgid "Mask size"
1455
  msgstr ""
1456
 
1457
- #: controls/ooohboi-overlaiz.php:569 controls/ooohboi-overlay-underlay.php:613
1458
- #: controls/ooohboi-overlay-underlay.php:1244 controls/ooohboi-pseudo.php:640
1459
- #: controls/ooohboi-pseudo.php:1286 controls/ooohboi-spacerat.php:255
1460
- #: controls/ooohboi-videomasq.php:106
1461
  msgid "Cover"
1462
  msgstr ""
1463
 
1464
- #: controls/ooohboi-overlaiz.php:570 controls/ooohboi-overlay-underlay.php:614
1465
- #: controls/ooohboi-overlay-underlay.php:1245 controls/ooohboi-pseudo.php:641
1466
- #: controls/ooohboi-pseudo.php:1287 controls/ooohboi-spacerat.php:256
1467
- #: controls/ooohboi-videomasq.php:107
1468
  msgid "Contain"
1469
  msgstr ""
1470
 
1471
- #: controls/ooohboi-overlaiz.php:645 controls/ooohboi-overlay-underlay.php:687
1472
- #: controls/ooohboi-overlay-underlay.php:1316 controls/ooohboi-pseudo.php:714
1473
- #: controls/ooohboi-pseudo.php:1358 controls/ooohboi-spacerat.php:327
1474
- #: controls/ooohboi-videomasq.php:172
1475
  msgid "Mask repeat"
1476
  msgstr ""
1477
 
1478
- #: controls/ooohboi-overlaiz.php:649 controls/ooohboi-overlay-underlay.php:691
1479
- #: controls/ooohboi-overlay-underlay.php:1320 controls/ooohboi-pseudo.php:718
1480
- #: controls/ooohboi-pseudo.php:1362 controls/ooohboi-spacerat.php:331
1481
- #: controls/ooohboi-videomasq.php:176
1482
  msgid "No-repeat"
1483
  msgstr ""
1484
 
1485
- #: controls/ooohboi-overlaiz.php:650 controls/ooohboi-overlay-underlay.php:692
1486
- #: controls/ooohboi-overlay-underlay.php:1321 controls/ooohboi-pseudo.php:719
1487
- #: controls/ooohboi-pseudo.php:1363 controls/ooohboi-spacerat.php:332
1488
- #: controls/ooohboi-videomasq.php:177
1489
  msgid "Repeat"
1490
  msgstr ""
1491
 
1492
- #: controls/ooohboi-overlaiz.php:651 controls/ooohboi-overlay-underlay.php:693
1493
- #: controls/ooohboi-overlay-underlay.php:1322 controls/ooohboi-pseudo.php:720
1494
- #: controls/ooohboi-pseudo.php:1364 controls/ooohboi-spacerat.php:333
1495
- #: controls/ooohboi-videomasq.php:178
1496
  msgid "Repeat-x"
1497
  msgstr ""
1498
 
1499
- #: controls/ooohboi-overlaiz.php:652 controls/ooohboi-overlay-underlay.php:694
1500
- #: controls/ooohboi-overlay-underlay.php:1323 controls/ooohboi-pseudo.php:721
1501
- #: controls/ooohboi-pseudo.php:1365 controls/ooohboi-spacerat.php:334
1502
- #: controls/ooohboi-videomasq.php:179
1503
  msgid "Repeat-y"
1504
  msgstr ""
1505
 
1506
- #: controls/ooohboi-overlaiz.php:672 controls/ooohboi-overlay-underlay.php:737
1507
- #: controls/ooohboi-overlay-underlay.php:1365 controls/ooohboi-pseudo.php:764
1508
- #: controls/ooohboi-pseudo.php:1407
1509
  msgid "Z-Index"
1510
  msgstr ""
1511
 
1512
- #: controls/ooohboi-overlay-underlay.php:102
1513
- msgid "Enable PoopArt?"
1514
- msgstr ""
1515
-
1516
- #: controls/ooohboi-overlay-underlay.php:174
1517
- #: controls/ooohboi-overlay-underlay.php:814 controls/ooohboi-pseudo.php:182
1518
- #: controls/ooohboi-pseudo.php:841
1519
  msgid "Blend Mode"
1520
  msgstr ""
1521
 
1522
- #: controls/ooohboi-overlay-underlay.php:201
1523
- #: controls/ooohboi-overlay-underlay.php:841 controls/ooohboi-pseudo.php:210
1524
- #: controls/ooohboi-pseudo.php:868
1525
  msgid "Position and Size"
1526
  msgstr ""
1527
 
1528
- #: controls/ooohboi-overlay-underlay.php:324
1529
- #: controls/ooohboi-overlay-underlay.php:446
1530
- #: controls/ooohboi-overlay-underlay.php:961 controls/ooohboi-pseudo.php:341
1531
- #: controls/ooohboi-pseudo.php:471 controls/ooohboi-pseudo.php:994
1532
  msgid "Enter CSS calc value only! Like: 45% + 85px or 100% - 3em"
1533
  msgstr ""
1534
 
1535
- #: controls/ooohboi-overlay-underlay.php:384
1536
- #: controls/ooohboi-overlay-underlay.php:1019 controls/ooohboi-pseudo.php:405
1537
- #: controls/ooohboi-pseudo.php:1056
1538
  msgid "Calc Offset Top"
1539
  msgstr ""
1540
 
1541
- #: controls/ooohboi-overlay-underlay.php:445
1542
- #: controls/ooohboi-overlay-underlay.php:1078 controls/ooohboi-pseudo.php:470
1543
- #: controls/ooohboi-pseudo.php:1119
1544
  msgid "Calc Offset Left"
1545
  msgstr ""
1546
 
1547
- #: controls/ooohboi-overlay-underlay.php:463
1548
- #: controls/ooohboi-overlay-underlay.php:1095 controls/ooohboi-pseudo.php:488
1549
- #: controls/ooohboi-pseudo.php:1136
1550
  msgid "Rotate"
1551
  msgstr ""
1552
 
1553
- #: controls/ooohboi-overlay-underlay.php:540
1554
  msgid "Overlay Mask"
1555
  msgstr ""
1556
 
1557
- #: controls/ooohboi-overlay-underlay.php:759
1558
  msgid "Underlay"
1559
  msgstr ""
1560
 
1561
- #: controls/ooohboi-overlay-underlay.php:1173
1562
  msgid "Underlay Mask"
1563
  msgstr ""
1564
 
1565
- #: controls/ooohboi-overlay-underlay.php:1395
1566
  msgid "Get rid of the Horizontal scroller?"
1567
  msgstr ""
1568
 
1569
- #: controls/ooohboi-overlay-underlay.php:1396
1570
  msgid ""
1571
  "OoohBoi POOOPART may cause Horizontal Scroller to show up. This is how you "
1572
  "can remove it."
1573
  msgstr ""
1574
 
1575
- #: controls/ooohboi-overlay-underlay.php:1414
1576
  msgid "Baseline Grid"
1577
  msgstr ""
1578
 
1579
- #: controls/ooohboi-overlay-underlay.php:1415
1580
  msgid "Baseline grid helps you maintain accuracy and consistency"
1581
  msgstr ""
1582
 
1583
- #: controls/ooohboi-overlay-underlay.php:1428
1584
  msgid "Grid style"
1585
  msgstr ""
1586
 
1587
- #: controls/ooohboi-overlay-underlay.php:1432
1588
  msgid "Squares"
1589
  msgstr ""
1590
 
1591
- #: controls/ooohboi-overlay-underlay.php:1433
1592
  msgid "Vertical lines"
1593
  msgstr ""
1594
 
1595
- #: controls/ooohboi-overlay-underlay.php:1434
1596
  msgid "Horizontal lines"
1597
  msgstr ""
1598
 
1599
- #: controls/ooohboi-overlay-underlay.php:1444
1600
  msgid "Grid color"
1601
  msgstr ""
1602
 
1603
- #: controls/ooohboi-overlay-underlay.php:1455
1604
  msgid "Grid size"
1605
  msgstr ""
1606
 
1607
- #: controls/ooohboi-overlay-underlay.php:1479
1608
  msgid "Vertical Spacing"
1609
  msgstr ""
1610
 
1611
- #: controls/ooohboi-overlay-underlay.php:1503
1612
  msgid "Horizontal Spacing"
1613
  msgstr ""
1614
 
@@ -1632,37 +1572,37 @@ msgstr ""
1632
  msgid "Unstyle Prev and Next?"
1633
  msgstr ""
1634
 
1635
- #: controls/ooohboi-perspektive.php:101
1636
  msgid "Enable Perspektive?"
1637
  msgstr ""
1638
 
1639
- #: controls/ooohboi-perspektive.php:102
1640
  msgid ""
1641
  "NOTE: Perspektive interferes with z-index! The background of the element "
1642
  "with the Perspektive will not be affected by the Perspektive."
1643
  msgstr ""
1644
 
1645
- #: controls/ooohboi-perspektive.php:117
1646
  msgid "Perspective"
1647
  msgstr ""
1648
 
1649
- #: controls/ooohboi-perspektive.php:150
1650
  msgid "Perspective Origin"
1651
  msgstr ""
1652
 
1653
- #: controls/ooohboi-perspektive.php:175
1654
  msgid "Translate Z"
1655
  msgstr ""
1656
 
1657
- #: controls/ooohboi-perspektive.php:208
1658
  msgid "Rotate X"
1659
  msgstr ""
1660
 
1661
- #: controls/ooohboi-perspektive.php:232
1662
  msgid "Rotate Y"
1663
  msgstr ""
1664
 
1665
- #: controls/ooohboi-perspektive.php:257
1666
  msgid "Just in case the wrapper is \"overflow: hidden\""
1667
  msgstr ""
1668
 
@@ -1676,81 +1616,81 @@ msgid ""
1676
  "(Column) uses the fixed height."
1677
  msgstr ""
1678
 
1679
- #: controls/ooohboi-photomorph.php:94
1680
  msgid "Enable PhotoMorph"
1681
  msgstr ""
1682
 
1683
- #: controls/ooohboi-photomorph.php:95
1684
  msgid ""
1685
  "That will allow you to add the custom clip-path for both Normal and Hover "
1686
  "Image widget."
1687
  msgstr ""
1688
 
1689
- #: controls/ooohboi-photomorph.php:170
1690
  msgid "Animate Hover?"
1691
  msgstr ""
1692
 
1693
- #: controls/ooohboi-photomorph.php:171
1694
  msgid ""
1695
  "To ensure the smooth transition, be sure that the number of nodes of the "
1696
  "Normal state clip-path EQUALS the number of nodes of the Hover state!"
1697
  msgstr ""
1698
 
1699
- #: controls/ooohboi-photomorph.php:187
1700
  msgid "Animation duration"
1701
  msgstr ""
1702
 
1703
- #: controls/ooohboi-photomorph.php:214
1704
  msgid "Animation effect"
1705
  msgstr ""
1706
 
1707
- #: controls/ooohboi-photomorph.php:239
1708
  msgid "Animation delay"
1709
  msgstr ""
1710
 
1711
- #: controls/ooohboi-pseudo.php:109
1712
  msgid "Enable Pseudo?"
1713
  msgstr ""
1714
 
1715
- #: controls/ooohboi-pseudo.php:110
1716
  msgid ""
1717
  "This is how you can create and manage :before and :after pseudo elements for "
1718
  "this column"
1719
  msgstr ""
1720
 
1721
- #: controls/ooohboi-pseudo.php:128
1722
  msgid "Before"
1723
  msgstr ""
1724
 
1725
- #: controls/ooohboi-pseudo.php:567
1726
  msgid "Before Mask"
1727
  msgstr ""
1728
 
1729
- #: controls/ooohboi-pseudo.php:786
1730
  msgid "After"
1731
  msgstr ""
1732
 
1733
- #: controls/ooohboi-pseudo.php:1214
1734
  msgid "After Mask"
1735
  msgstr ""
1736
 
1737
- #: controls/ooohboi-searchcop.php:91
1738
  msgid "Search Target"
1739
  msgstr ""
1740
 
1741
- #: controls/ooohboi-searchcop.php:96
1742
  msgid "Search Posts"
1743
  msgstr ""
1744
 
1745
- #: controls/ooohboi-searchcop.php:97
1746
  msgid "Search Pages"
1747
  msgstr ""
1748
 
1749
- #: controls/ooohboi-searchcop.php:98
1750
  msgid "Search Products"
1751
  msgstr ""
1752
 
1753
- #: controls/ooohboi-searchcop.php:99
1754
  msgid "Search All"
1755
  msgstr ""
1756
 
@@ -1762,43 +1702,43 @@ msgstr ""
1762
  msgid "Creates a shadow that conforms to the shape."
1763
  msgstr ""
1764
 
1765
- #: controls/ooohboi-shadough.php:61 controls/ooohboi-spacerat.php:408
1766
  msgid "Offset X"
1767
  msgstr ""
1768
 
1769
- #: controls/ooohboi-shadough.php:92 controls/ooohboi-spacerat.php:441
1770
  msgid "Offset Y"
1771
  msgstr ""
1772
 
1773
- #: controls/ooohboi-shadough.php:153 controls/ooohboi-spacerat.php:506
1774
  msgid "Shadow Color"
1775
  msgstr ""
1776
 
1777
- #: controls/ooohboi-spacerat.php:97
1778
  msgid "Enable SpaceRat?"
1779
  msgstr ""
1780
 
1781
- #: controls/ooohboi-spacerat.php:98
1782
  msgid "Awesome gear for the pretty-much dull Spacer widget."
1783
  msgstr ""
1784
 
1785
- #: controls/ooohboi-spacerat.php:157 controls/ooohboi-teleporter.php:109
1786
  msgid "Cursor Pointer"
1787
  msgstr ""
1788
 
1789
- #: controls/ooohboi-spacerat.php:158 controls/ooohboi-teleporter.php:110
1790
  msgid "Keep the default cursor or show pointer on Hover?"
1791
  msgstr ""
1792
 
1793
- #: controls/ooohboi-spacerat.php:184
1794
  msgid "SpaceRat Mask"
1795
  msgstr ""
1796
 
1797
- #: controls/ooohboi-spacerat.php:376
1798
  msgid "Add shadow?"
1799
  msgstr ""
1800
 
1801
- #: controls/ooohboi-spacerat.php:391
1802
  msgid "Define Shadow"
1803
  msgstr ""
1804
 
@@ -1866,11 +1806,11 @@ msgstr ""
1866
  msgid "Strongly advised: HIDDEN."
1867
  msgstr ""
1868
 
1869
- #: controls/ooohboi-videomasq.php:54
1870
  msgid "Choose Video Mask"
1871
  msgstr ""
1872
 
1873
- #: controls/ooohboi-videomasq.php:55
1874
  #, php-format
1875
  msgid ""
1876
  "NOTE: The video mask should be black-and-transparent SVG file! Anything "
@@ -1878,37 +1818,37 @@ msgid ""
1878
  "that’s transparent will be completely hidden."
1879
  msgstr ""
1880
 
1881
- #: controls/ooohboi-widget-stalker.php:95
1882
  msgid ""
1883
- "NOTE: Position, alignment, direction and justification of all widgets is "
1884
- "controlled by the parent Container!"
1885
  msgstr ""
1886
 
1887
- #: controls/ooohboi-widget-stalker.php:165
1888
  msgid "Widget width"
1889
  msgstr ""
1890
 
1891
- #: controls/ooohboi-widget-stalker.php:220
1892
  msgid "Align self"
1893
  msgstr ""
1894
 
1895
- #: controls/ooohboi-widget-stalker.php:221
1896
  msgid "Align this widget vertically"
1897
  msgstr ""
1898
 
1899
- #: controls/ooohboi-widget-stalker.php:242
1900
  msgid "Widget Order"
1901
  msgstr ""
1902
 
1903
- #: inc/common-functions.php:43
1904
  msgid "What's New?"
1905
  msgstr ""
1906
 
1907
- #: inc/common-functions.php:56
1908
  msgid "Manage Extensions"
1909
  msgstr ""
1910
 
1911
- #: inc/common-functions.php:62
1912
  #, php-format
1913
  msgid ""
1914
  "%sThe following extensions are currently available with Steroids for "
@@ -1916,135 +1856,130 @@ msgid ""
1916
  "or OFF.%s"
1917
  msgstr ""
1918
 
1919
- #: inc/common-functions.php:69
1920
  #, php-format
1921
  msgid ""
1922
  "%sAllows you to change the writing mode of the Heading and Text Editor "
1923
  "widgets%s"
1924
  msgstr ""
1925
 
1926
- #: inc/common-functions.php:76
1927
  #, php-format
1928
  msgid "%sAdd an overlay or underlay ghost-element to any Elementor Widget%s"
1929
  msgstr ""
1930
 
1931
- #: inc/common-functions.php:83
1932
  #, php-format
1933
  msgid ""
1934
  "%sAn awesome set of options for the Background Overlay element manipulation%s"
1935
  msgstr ""
1936
 
1937
- #: inc/common-functions.php:90
1938
  #, php-format
1939
  msgid "%sIt allows you to style up the posts pagination in Elementor%s"
1940
  msgstr ""
1941
 
1942
- #: inc/common-functions.php:97
1943
  #, php-format
1944
  msgid "%sA must to have extension for the Section and Columns%s"
1945
  msgstr ""
1946
 
1947
- #: inc/common-functions.php:104
1948
  #, php-format
1949
  msgid "%sThe content slider made out of Section and Columns (Swiper)%s"
1950
  msgstr ""
1951
 
1952
- #: inc/common-functions.php:111
1953
  #, php-format
1954
  msgid "%sMake the Image widget full-height of the container%s"
1955
  msgstr ""
1956
 
1957
- #: inc/common-functions.php:118
1958
  #, php-format
1959
  msgid "%sThe Column hover controls for an exceptional effects%s"
1960
  msgstr ""
1961
 
1962
- #: inc/common-functions.php:125
1963
  #, php-format
1964
  msgid "%sDecide what to search for; posts only, pages only or everything%s"
1965
  msgstr ""
1966
 
1967
- #: inc/common-functions.php:132
1968
  #, php-format
1969
  msgid ""
1970
  "%sAdd the SVG mask to the Section video background and let the video play "
1971
  "inside any shape%s"
1972
  msgstr ""
1973
 
1974
- #: inc/common-functions.php:139
1975
  #, php-format
1976
  msgid "%sDesign awesome buttons in Elementor%s"
1977
  msgstr ""
1978
 
1979
- #: inc/common-functions.php:146
1980
  #, php-format
1981
  msgid "%sA small set of options that allow you to move widgets in 3D space%s"
1982
  msgstr ""
1983
 
1984
- #: inc/common-functions.php:153
1985
  #, php-format
1986
  msgid "%sCreate the shadow that conforms the shape%s"
1987
  msgstr ""
1988
 
1989
- #: inc/common-functions.php:160
1990
  #, php-format
1991
  msgid ""
1992
  "%sAllows you to add the clip-path to the Image widget for Normal and Hover "
1993
  "state%s"
1994
  msgstr ""
1995
 
1996
- #: inc/common-functions.php:167
1997
  #, php-format
1998
  msgid "%sAllows you to style up the post comments."
1999
  msgstr ""
2000
 
2001
- #: inc/common-functions.php:174
2002
  #, php-format
2003
  msgid "%sAdds new shine to the Spacer widget."
2004
  msgstr ""
2005
 
2006
- #: inc/common-functions.php:181
2007
  #, php-format
2008
  msgid "%sImage Box widget extra controls"
2009
  msgstr ""
2010
 
2011
- #: inc/common-functions.php:188
2012
  #, php-format
2013
  msgid "%sIcon Box widget extra controls"
2014
  msgstr ""
2015
 
2016
- #: inc/common-functions.php:195
2017
  #, php-format
2018
  msgid "%sAnimate widgets on columns mouse-over event"
2019
  msgstr ""
2020
 
2021
- #: inc/common-functions.php:202
2022
  #, php-format
2023
  msgid ""
2024
  "%sAllows you to additionaly style Image Carousel and Media Carousel controls"
2025
  "%s"
2026
  msgstr ""
2027
 
2028
- #: inc/common-functions.php:209
2029
  #, php-format
2030
  msgid "%sStack widgets like flex elements%s"
2031
  msgstr ""
2032
 
2033
- #: inc/common-functions.php:216
2034
  #, php-format
2035
  msgid "%sTake control over the Column's pseudo elements%s"
2036
  msgstr ""
2037
 
2038
- #: inc/common-functions.php:223
2039
- #, php-format
2040
- msgid "%sAllows you to move the Icon List widget bullet to top%s"
2041
- msgstr ""
2042
-
2043
- #: inc/common-functions.php:231
2044
  msgid "Manage JS Libraries"
2045
  msgstr ""
2046
 
2047
- #: inc/common-functions.php:237
2048
  #, php-format
2049
  msgid ""
2050
  "%sThe following libraries are currently available with Steroids for "
@@ -2052,89 +1987,96 @@ msgid ""
2052
  "OFF.%s"
2053
  msgstr ""
2054
 
2055
- #: inc/common-functions.php:243
2056
  msgid "LOCOMOTIVE SCROLL"
2057
  msgstr ""
2058
 
2059
- #: inc/common-functions.php:244
2060
  #, php-format
2061
  msgid ""
2062
  "%1$sDetection of elements in viewport and smooth scrolling with parallax.%3$s"
2063
  "%4$sSOURCE%5$s%2$s"
2064
  msgstr ""
2065
 
2066
- #: inc/common-functions.php:255
2067
  msgid "Enable for Tablets"
2068
  msgstr ""
2069
 
2070
- #: inc/common-functions.php:256
2071
  msgid "Enable for Mobiles"
2072
  msgstr ""
2073
 
2074
- #: inc/common-functions.php:265
2075
  msgid "Multiplier"
2076
  msgstr ""
2077
 
2078
- #: inc/common-functions.php:266
2079
  #, php-format
2080
  msgid "%sBoost/reduce scrolling speed. 1 is the default.%s"
2081
  msgstr ""
2082
 
2083
- #: inc/common-functions.php:275
2084
  msgid "Refresh on resize?"
2085
  msgstr ""
2086
 
2087
- #: inc/common-functions.php:276
2088
  msgid ""
2089
  "Things get messy on resize. That will do the silent page refresh upon the "
2090
  "window resize/orientationchange."
2091
  msgstr ""
2092
 
2093
- #: inc/common-functions.php:283
2094
  msgid "Enable freehand mode?"
2095
  msgstr ""
2096
 
2097
- #: inc/common-functions.php:284
2098
  #, php-format
2099
  msgid ""
2100
  "That removes all the default %sdata-scroll-section%s attributes so you can "
2101
  "set them at will."
2102
  msgstr ""
2103
 
2104
- #: inc/common-functions.php:295
2105
  #, php-format
2106
  msgid ""
2107
  "%1$s A lightweight JavaScript animation library with a simple, yet powerful "
2108
  "API.%3$s%4$sSOURCE%5$s%2$s"
2109
  msgstr ""
2110
 
2111
- #: inc/common-functions.php:302
2112
  #, php-format
2113
  msgid ""
2114
  "%1$s Create badass fluid and smooth transitions between your website's pages."
2115
  "%3$s%4$sSOURCE%5$s%2$s"
2116
  msgstr ""
2117
 
2118
- #: inc/common-functions.php:316
 
 
 
 
 
 
 
2119
  #, php-format
2120
  msgid ""
2121
  "%1$sGreenSock's GSAP JavaScript animation library (including Draggable).%3$s"
2122
  "%4$sSOURCE%5$s%2$s"
2123
  msgstr ""
2124
 
2125
- #: inc/common-functions.php:323
2126
  #, php-format
2127
  msgid "%1$sLet your page react to scroll changes.%3$s%4$sSOURCE%5$s%2$s"
2128
  msgstr ""
2129
 
2130
- #: inc/common-functions.php:330
2131
  #, php-format
2132
  msgid ""
2133
  "%1$sAnimates the scroll position of the window or a DOM element.%3$s"
2134
  "%4$sSOURCE%5$s%2$s"
2135
  msgstr ""
2136
 
2137
- #: inc/common-functions.php:337
2138
  #, php-format
2139
  msgid ""
2140
  "%1$sAnimate anything (SVG, DOM, canvas, generic objects, whatever) along a "
1
  #, fuzzy
2
  msgid ""
3
  msgstr ""
4
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
  "Project-Id-Version: OoohBoi Steroids for Elementor\n"
6
+ "POT-Creation-Date: 2021-11-06 12:03+0100\n"
7
+ "PO-Revision-Date: 2021-11-06 12:03+0100\n"
8
  "Last-Translator: \n"
9
  "Language-Team: \n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Poedit 3.0\n"
 
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-Flags-xgettext: --add-comments=translators:\n"
16
  "X-Poedit-WPHeader: ooohboi-steroids.php\n"
33
 
34
  #: controls/ooohboi-breaking-bad.php:93 controls/ooohboi-breaking-bad.php:175
35
  #: controls/ooohboi-breaking-bad.php:482 controls/ooohboi-breaking-bad.php:557
36
+ #: controls/ooohboi-butter-button.php:71 controls/ooohboi-commentz.php:70
37
+ #: controls/ooohboi-commentz.php:1063 controls/ooohboi-glider.php:68
38
+ #: controls/ooohboi-glider.php:83 controls/ooohboi-glider.php:134
39
+ #: controls/ooohboi-glider.php:359 controls/ooohboi-glider.php:516
40
+ #: controls/ooohboi-glider.php:597 controls/ooohboi-glider.php:618
41
+ #: controls/ooohboi-glider.php:640 controls/ooohboi-glider.php:680
42
+ #: controls/ooohboi-glider.php:715 controls/ooohboi-glider.php:733
43
+ #: controls/ooohboi-glider.php:752 controls/ooohboi-glider.php:771
44
+ #: controls/ooohboi-harakiri.php:94 controls/ooohboi-hover-animator.php:68
45
+ #: controls/ooohboi-hover-animator.php:145 controls/ooohboi-icobox.php:96
 
46
  #: controls/ooohboi-icobox.php:112 controls/ooohboi-icobox.php:247
47
  #: controls/ooohboi-imbox.php:97 controls/ooohboi-imbox.php:114
48
+ #: controls/ooohboi-imbox.php:410 controls/ooohboi-overlaiz.php:61
49
+ #: controls/ooohboi-overlay-underlay.php:1258
50
+ #: controls/ooohboi-overlay-underlay.php:1277 controls/ooohboi-paginini.php:220
51
+ #: controls/ooohboi-perspektive.php:74 controls/ooohboi-photomorph.php:66
52
+ #: controls/ooohboi-photomorph.php:142 controls/ooohboi-pseudo.php:69
53
+ #: controls/ooohboi-shadough.php:50 controls/ooohboi-spacerat.php:69
54
+ #: controls/ooohboi-spacerat.php:339 controls/ooohboi-widget-stalker.php:67
 
 
55
  #: inc/exopite-simple-options/fields/upload.php:131
56
  msgid "Yes"
57
  msgstr ""
58
 
59
  #: controls/ooohboi-breaking-bad.php:94 controls/ooohboi-breaking-bad.php:176
60
  #: controls/ooohboi-breaking-bad.php:483 controls/ooohboi-breaking-bad.php:558
61
+ #: controls/ooohboi-butter-button.php:72 controls/ooohboi-commentz.php:71
62
+ #: controls/ooohboi-commentz.php:1064 controls/ooohboi-glider.php:69
63
+ #: controls/ooohboi-glider.php:84 controls/ooohboi-glider.php:135
64
+ #: controls/ooohboi-glider.php:360 controls/ooohboi-glider.php:517
65
+ #: controls/ooohboi-glider.php:598 controls/ooohboi-glider.php:619
66
+ #: controls/ooohboi-glider.php:641 controls/ooohboi-glider.php:681
67
+ #: controls/ooohboi-glider.php:716 controls/ooohboi-glider.php:734
68
+ #: controls/ooohboi-glider.php:753 controls/ooohboi-glider.php:772
69
+ #: controls/ooohboi-harakiri.php:95 controls/ooohboi-hover-animator.php:69
70
+ #: controls/ooohboi-hover-animator.php:146 controls/ooohboi-icobox.php:97
 
71
  #: controls/ooohboi-icobox.php:113 controls/ooohboi-icobox.php:248
72
  #: controls/ooohboi-imbox.php:98 controls/ooohboi-imbox.php:115
73
+ #: controls/ooohboi-imbox.php:411 controls/ooohboi-overlaiz.php:62
74
+ #: controls/ooohboi-overlay-underlay.php:1259
75
+ #: controls/ooohboi-overlay-underlay.php:1278 controls/ooohboi-paginini.php:221
76
+ #: controls/ooohboi-perspektive.php:75 controls/ooohboi-photomorph.php:67
77
+ #: controls/ooohboi-photomorph.php:143 controls/ooohboi-pseudo.php:70
78
+ #: controls/ooohboi-shadough.php:51 controls/ooohboi-spacerat.php:70
79
+ #: controls/ooohboi-spacerat.php:340 controls/ooohboi-widget-stalker.php:68
 
 
80
  #: inc/exopite-simple-options/fields/upload.php:129
81
  msgid "No"
82
  msgstr ""
94
  #: controls/ooohboi-breaking-bad.php:109 controls/ooohboi-breaking-bad.php:155
95
  #: controls/ooohboi-breaking-bad.php:315 controls/ooohboi-breaking-bad.php:338
96
  #: controls/ooohboi-breaking-bad.php:467 controls/ooohboi-breaking-bad.php:592
97
+ #: controls/ooohboi-breaking-bad.php:616 controls/ooohboi-commentz.php:133
98
+ #: controls/ooohboi-commentz.php:653 controls/ooohboi-widget-stalker.php:196
99
  msgid "Center"
100
  msgstr ""
101
 
103
  #: controls/ooohboi-breaking-bad.php:316 controls/ooohboi-breaking-bad.php:339
104
  #: controls/ooohboi-breaking-bad.php:468 controls/ooohboi-breaking-bad.php:593
105
  #: controls/ooohboi-breaking-bad.php:617
106
+ #: controls/ooohboi-widget-stalker.php:197
107
  msgid "End"
108
  msgstr ""
109
 
145
  "avoid content overlaps."
146
  msgstr ""
147
 
148
+ #: controls/ooohboi-breaking-bad.php:192 controls/ooohboi-widget-stalker.php:79
 
149
  msgid "Size Method"
150
  msgstr ""
151
 
152
+ #: controls/ooohboi-breaking-bad.php:193 controls/ooohboi-widget-stalker.php:80
 
153
  msgid "Use Flex or Units?"
154
  msgstr ""
155
 
156
  #: controls/ooohboi-breaking-bad.php:198 controls/ooohboi-breaking-bad.php:210
157
+ #: controls/ooohboi-widget-stalker.php:84
158
+ #: controls/ooohboi-widget-stalker.php:96
159
  msgid "Flex"
160
  msgstr ""
161
 
162
+ #: controls/ooohboi-breaking-bad.php:199 controls/ooohboi-widget-stalker.php:85
 
163
  msgid "Units"
164
  msgstr ""
165
 
166
+ #: controls/ooohboi-breaking-bad.php:249 controls/ooohboi-overlaiz.php:75
167
+ #: controls/ooohboi-overlaiz.php:578 controls/ooohboi-overlay-underlay.php:170
168
+ #: controls/ooohboi-overlay-underlay.php:557
169
+ #: controls/ooohboi-overlay-underlay.php:766
170
+ #: controls/ooohboi-overlay-underlay.php:1132 controls/ooohboi-pseudo.php:183
171
+ #: controls/ooohboi-pseudo.php:594 controls/ooohboi-pseudo.php:816
172
+ #: controls/ooohboi-pseudo.php:1214 controls/ooohboi-spacerat.php:238
173
+ #: controls/ooohboi-videomasq.php:122
174
  msgid "Width"
175
  msgstr ""
176
 
177
  #: controls/ooohboi-breaking-bad.php:255 controls/ooohboi-breaking-bad.php:294
178
  #: controls/ooohboi-breaking-bad.php:406 controls/ooohboi-teleporter.php:137
179
  #: controls/ooohboi-teleporter.php:155 controls/ooohboi-teleporter.php:186
180
+ #: controls/ooohboi-teleporter.php:203 controls/ooohboi-widget-stalker.php:138
181
+ #: controls/ooohboi-widget-stalker.php:176
182
  msgid ""
183
  "You can enter any acceptable CSS value, for example: 50em, 300px, 100%, "
184
  "calc(100% - 300px)."
185
  msgstr ""
186
 
187
  #: controls/ooohboi-breaking-bad.php:289 controls/ooohboi-breaking-bad.php:402
188
+ #: controls/ooohboi-widget-stalker.php:172
189
  msgid "Max Width"
190
  msgstr ""
191
 
199
  "direction is Row or Inherit)."
200
  msgstr ""
201
 
202
+ #: controls/ooohboi-breaking-bad.php:313 controls/ooohboi-overlaiz.php:558
203
+ #: controls/ooohboi-overlay-underlay.php:539
204
+ #: controls/ooohboi-overlay-underlay.php:1115 controls/ooohboi-pseudo.php:575
205
+ #: controls/ooohboi-pseudo.php:1196 controls/ooohboi-spacerat.php:220
206
+ #: controls/ooohboi-videomasq.php:104 controls/ooohboi-widget-stalker.php:194
207
  msgid "Auto"
208
  msgstr ""
209
 
210
  #: controls/ooohboi-breaking-bad.php:314
211
+ #: controls/ooohboi-widget-stalker.php:195
212
  msgid "Baseline"
213
  msgstr ""
214
 
231
  msgstr ""
232
 
233
  #: controls/ooohboi-breaking-bad.php:355 controls/ooohboi-breaking-bad.php:444
234
+ #: controls/ooohboi-widget-stalker.php:213
235
  #, php-format
236
  msgid "More info at %sMozilla%s."
237
  msgstr ""
247
  "Breaking Bad for this Column parent SECTION!"
248
  msgstr ""
249
 
250
+ #: controls/ooohboi-breaking-bad.php:416 controls/ooohboi-harakiri.php:155
251
  msgid "Custom Height"
252
  msgstr ""
253
 
271
  msgid "Column Link"
272
  msgstr ""
273
 
274
+ #: controls/ooohboi-breaking-bad.php:504 controls/ooohboi-spacerat.php:94
275
  #: controls/ooohboi-teleporter.php:78
276
  msgid "None"
277
  msgstr ""
278
 
279
+ #: controls/ooohboi-breaking-bad.php:505 controls/ooohboi-spacerat.php:95
280
  #: controls/ooohboi-teleporter.php:79
281
  msgid "Custom URL"
282
  msgstr ""
283
 
284
+ #: controls/ooohboi-breaking-bad.php:516 controls/ooohboi-spacerat.php:90
285
+ #: controls/ooohboi-spacerat.php:107 controls/ooohboi-teleporter.php:73
286
  #: controls/ooohboi-teleporter.php:90
287
  msgid "Link"
288
  msgstr ""
289
 
290
+ #: controls/ooohboi-breaking-bad.php:523 controls/ooohboi-spacerat.php:113
291
  #: controls/ooohboi-teleporter.php:97
292
  msgid "https://your-link.com"
293
  msgstr ""
296
  msgid "Widget Stalker"
297
  msgstr ""
298
 
299
+ #: controls/ooohboi-breaking-bad.php:553 controls/ooohboi-widget-stalker.php:63
300
  msgid "Enable Widget Stalker?"
301
  msgstr ""
302
 
314
  msgid "Align Widgets"
315
  msgstr ""
316
 
317
+ #: controls/ooohboi-butter-button.php:68
318
+ msgid "Enable Butter Buttons?"
 
 
 
 
 
 
 
 
 
319
  msgstr ""
320
 
321
+ #: controls/ooohboi-butter-button.php:84
322
+ msgid "Typography"
323
  msgstr ""
324
 
325
+ #: controls/ooohboi-butter-button.php:97 controls/ooohboi-icobox.php:122
326
  msgid "Icon Size"
327
  msgstr ""
328
 
329
+ #: controls/ooohboi-butter-button.php:98
330
  msgid "Be sure the icon is selected in the Content tab!"
331
  msgstr ""
332
 
333
+ #: controls/ooohboi-butter-button.php:132
334
  msgid "Transition Duration"
335
  msgstr ""
336
 
337
+ #: controls/ooohboi-butter-button.php:158 controls/ooohboi-commentz.php:149
338
+ #: controls/ooohboi-commentz.php:733 controls/ooohboi-commentz.php:960
339
+ #: controls/ooohboi-glider.php:277 controls/ooohboi-kontrolz.php:107
340
  #: controls/ooohboi-paginini.php:59
341
  msgid "Padding"
342
  msgstr ""
343
 
344
+ #: controls/ooohboi-butter-button.php:178
345
+ msgid "Regular"
 
 
 
 
346
  msgstr ""
347
 
348
+ #: controls/ooohboi-butter-button.php:186
349
+ #: controls/ooohboi-butter-button.php:298
350
  msgid "Text Color"
351
  msgstr ""
352
 
353
+ #: controls/ooohboi-butter-button.php:206
354
+ #: controls/ooohboi-butter-button.php:319
355
  msgctxt "Butter Button Text Shadow Control"
356
  msgid "Text Shadow"
357
  msgstr ""
358
 
359
+ #: controls/ooohboi-butter-button.php:233
360
+ #: controls/ooohboi-butter-button.php:346 controls/ooohboi-commentz.php:246
361
+ #: controls/ooohboi-commentz.php:420 controls/ooohboi-commentz.php:919
 
 
 
 
 
 
 
 
 
 
 
 
362
  #: controls/ooohboi-imbox.php:209 controls/ooohboi-imbox.php:223
363
  #: controls/ooohboi-imbox.php:355 controls/ooohboi-imbox.php:369
364
+ #: controls/ooohboi-overlaiz.php:368 controls/ooohboi-overlaiz.php:387
365
+ #: controls/ooohboi-overlay-underlay.php:426
366
+ #: controls/ooohboi-overlay-underlay.php:443
367
+ #: controls/ooohboi-overlay-underlay.php:1003
368
+ #: controls/ooohboi-overlay-underlay.php:1020 controls/ooohboi-paginini.php:146
369
+ #: controls/ooohboi-paginini.php:195 controls/ooohboi-pseudo.php:456
370
+ #: controls/ooohboi-pseudo.php:474 controls/ooohboi-pseudo.php:1078
371
+ #: controls/ooohboi-pseudo.php:1096
372
  msgid "Border"
373
  msgstr ""
374
 
375
+ #: controls/ooohboi-butter-button.php:246
376
+ #: controls/ooohboi-butter-button.php:359 controls/ooohboi-commentz.php:257
377
+ #: controls/ooohboi-commentz.php:432 controls/ooohboi-commentz.php:805
378
+ #: controls/ooohboi-commentz.php:930 controls/ooohboi-glider.php:235
379
+ #: controls/ooohboi-glider.php:472 controls/ooohboi-imbox.php:231
380
  #: controls/ooohboi-imbox.php:377 controls/ooohboi-kontrolz.php:95
381
+ #: controls/ooohboi-kontrolz.php:207 controls/ooohboi-overlaiz.php:399
382
+ #: controls/ooohboi-overlay-underlay.php:454
383
+ #: controls/ooohboi-overlay-underlay.php:1031 controls/ooohboi-paginini.php:154
384
+ #: controls/ooohboi-paginini.php:203 controls/ooohboi-pseudo.php:486
385
+ #: controls/ooohboi-pseudo.php:1108
386
  msgid "Border Radius"
387
  msgstr ""
388
 
389
+ #: controls/ooohboi-butter-button.php:264
390
+ #: controls/ooohboi-butter-button.php:377 controls/ooohboi-icobox.php:55
391
  #: controls/ooohboi-imbox.php:56 controls/ooohboi-imbox.php:333
392
+ #: controls/ooohboi-overlaiz.php:419
393
  msgid "Box Shadow"
394
  msgstr ""
395
 
396
+ #: controls/ooohboi-butter-button.php:290 controls/ooohboi-photomorph.php:111
397
  #: controls/ooohboi-teleporter.php:174
398
  msgid "Hover"
399
  msgstr ""
400
 
401
+ #: controls/ooohboi-commentz.php:67
 
 
 
 
 
 
402
  msgid "Enable Commentz"
403
  msgstr ""
404
 
405
+ #: controls/ooohboi-commentz.php:68
406
  msgid "That will allow you to style up the post comments."
407
  msgstr ""
408
 
409
+ #: controls/ooohboi-commentz.php:84
410
  msgid "Heading"
411
  msgstr ""
412
 
413
+ #: controls/ooohboi-commentz.php:97
414
  msgid "Heading style"
415
  msgstr ""
416
 
417
+ #: controls/ooohboi-commentz.php:112 controls/ooohboi-commentz.php:502
418
+ #: controls/ooohboi-commentz.php:575 controls/ooohboi-commentz.php:866
419
+ #: controls/ooohboi-harakiri.php:228
420
  msgid "Color"
421
  msgstr ""
422
 
423
+ #: controls/ooohboi-commentz.php:128
424
  msgid "Text alignment"
425
  msgstr ""
426
 
427
+ #: controls/ooohboi-commentz.php:132 controls/ooohboi-commentz.php:652
428
  msgid "Left"
429
  msgstr ""
430
 
431
+ #: controls/ooohboi-commentz.php:134 controls/ooohboi-commentz.php:654
432
  msgid "Right"
433
  msgstr ""
434
 
435
+ #: controls/ooohboi-commentz.php:168 controls/ooohboi-commentz.php:590
436
+ #: controls/ooohboi-commentz.php:749 controls/ooohboi-commentz.php:881
437
+ #: controls/ooohboi-commentz.php:979 controls/ooohboi-commentz.php:1041
438
  #: controls/ooohboi-paginini.php:75
439
  msgid "Margin"
440
  msgstr ""
441
 
442
+ #: controls/ooohboi-commentz.php:201
443
  msgid "Comment list style"
444
  msgstr ""
445
 
446
+ #: controls/ooohboi-commentz.php:216
447
  msgid "Comment body padding"
448
  msgstr ""
449
 
450
+ #: controls/ooohboi-commentz.php:231
451
  msgid "Comment body margin"
452
  msgstr ""
453
 
454
+ #: controls/ooohboi-commentz.php:272 controls/ooohboi-commentz.php:945
455
  msgid "Background color"
456
  msgstr ""
457
 
458
+ #: controls/ooohboi-commentz.php:287
459
  msgid "Background color replies"
460
  msgstr ""
461
 
462
+ #: controls/ooohboi-commentz.php:303
463
  msgid "Child comments indent"
464
  msgstr ""
465
 
466
+ #: controls/ooohboi-commentz.php:335
467
  msgid "Gravatar"
468
  msgstr ""
469
 
470
+ #: controls/ooohboi-commentz.php:339
471
  msgid "Hide"
472
  msgstr ""
473
 
474
+ #: controls/ooohboi-commentz.php:340
475
  msgid "Show"
476
  msgstr ""
477
 
478
+ #: controls/ooohboi-commentz.php:356
479
  msgid "Gravatar style"
480
  msgstr ""
481
 
482
+ #: controls/ooohboi-commentz.php:372 controls/ooohboi-glider.php:446
483
  msgid "Size"
484
  msgstr ""
485
 
486
+ #: controls/ooohboi-commentz.php:403
487
  msgid "Position"
488
  msgstr ""
489
 
490
+ #: controls/ooohboi-commentz.php:463
491
  msgid "Meta-data User"
492
  msgstr ""
493
 
494
+ #: controls/ooohboi-commentz.php:475
495
  msgid "Meta-data Time"
496
  msgstr ""
497
 
498
+ #: controls/ooohboi-commentz.php:488
499
  msgid "Meta-data style"
500
  msgstr ""
501
 
502
+ #: controls/ooohboi-commentz.php:517
503
  msgid "Outer Margin"
504
  msgstr ""
505
 
506
+ #: controls/ooohboi-commentz.php:547
507
  msgid "Comment text"
508
  msgstr ""
509
 
510
+ #: controls/ooohboi-commentz.php:560
511
  msgid "Comment text style"
512
  msgstr ""
513
 
514
+ #: controls/ooohboi-commentz.php:620
515
  msgid "Reply button"
516
  msgstr ""
517
 
518
+ #: controls/ooohboi-commentz.php:633
519
  msgid "Reply button style"
520
  msgstr ""
521
 
522
+ #: controls/ooohboi-commentz.php:648
523
  msgid "Align button"
524
  msgstr ""
525
 
526
+ #: controls/ooohboi-commentz.php:669
527
  msgid "Text color normal"
528
  msgstr ""
529
 
530
+ #: controls/ooohboi-commentz.php:684
531
  msgid "Text color hover"
532
  msgstr ""
533
 
534
+ #: controls/ooohboi-commentz.php:700
535
  msgid "Background color normal"
536
  msgstr ""
537
 
538
+ #: controls/ooohboi-commentz.php:717
539
  msgid "Background color hover"
540
  msgstr ""
541
 
542
+ #: controls/ooohboi-commentz.php:765
543
  msgid "Border color normal"
544
  msgstr ""
545
 
546
+ #: controls/ooohboi-commentz.php:778
547
  msgid "Border color hover"
548
  msgstr ""
549
 
550
+ #: controls/ooohboi-commentz.php:791
551
  msgid "Border Width"
552
  msgstr ""
553
 
554
+ #: controls/ooohboi-commentz.php:837
555
  msgid "Comment form heading"
556
  msgstr ""
557
 
558
+ #: controls/ooohboi-commentz.php:851
559
  msgid "Comment form heading style"
560
  msgstr ""
561
 
562
+ #: controls/ooohboi-commentz.php:904
563
  msgid "Comment form style"
564
  msgstr ""
565
 
566
+ #: controls/ooohboi-commentz.php:1013
567
  msgid "Comments Nav"
568
  msgstr ""
569
 
570
+ #: controls/ooohboi-commentz.php:1026
571
  msgid "Comments Nav style"
572
  msgstr ""
573
 
574
+ #: controls/ooohboi-commentz.php:1059
575
  msgid "Hide the Website input field?"
576
  msgstr ""
577
 
578
+ #: controls/ooohboi-commentz.php:1060
579
  msgid ""
580
  "If you make it hidden, be sure it's not mandatory otherwise the comment can "
581
  "not be posted!"
582
  msgstr ""
583
 
584
+ #: controls/ooohboi-glider.php:64
585
  msgid "Create Slider?"
586
  msgstr ""
587
 
588
+ #: controls/ooohboi-glider.php:65
589
+ msgid "This section columns will become slidable."
 
 
590
  msgstr ""
591
 
592
+ #: controls/ooohboi-glider.php:80
593
  msgid "Adaptable height?"
594
  msgstr ""
595
 
596
+ #: controls/ooohboi-glider.php:98
597
  msgid "Slider height"
598
  msgstr ""
599
 
600
+ #: controls/ooohboi-glider.php:131
601
  msgid "Hide Navigation"
602
  msgstr ""
603
 
604
+ #: controls/ooohboi-glider.php:152 controls/ooohboi-kontrolz.php:46
605
  msgid "Navigation styles"
606
  msgstr ""
607
 
608
+ #: controls/ooohboi-glider.php:169
609
  msgid "Arrows Color"
610
  msgstr ""
611
 
612
+ #: controls/ooohboi-glider.php:186 controls/ooohboi-kontrolz.php:58
613
  msgid "Arrows Color - Hover"
614
  msgstr ""
615
 
616
+ #: controls/ooohboi-glider.php:203 controls/ooohboi-kontrolz.php:71
617
  #: controls/ooohboi-paginini.php:47 controls/ooohboi-paginini.php:121
618
  #: controls/ooohboi-paginini.php:182
619
  msgid "Background Color"
620
  msgstr ""
621
 
622
+ #: controls/ooohboi-glider.php:219 controls/ooohboi-kontrolz.php:83
623
  msgid "Background Color - Hover"
624
  msgstr ""
625
 
626
+ #: controls/ooohboi-glider.php:251
627
  msgid "Icon size"
628
  msgstr ""
629
 
630
+ #: controls/ooohboi-glider.php:302 controls/ooohboi-kontrolz.php:128
631
  msgid "Calc - Y"
632
  msgstr ""
633
 
634
+ #: controls/ooohboi-glider.php:303 controls/ooohboi-glider.php:321
635
+ #: controls/ooohboi-glider.php:338 controls/ooohboi-kontrolz.php:129
636
  #: controls/ooohboi-kontrolz.php:143 controls/ooohboi-kontrolz.php:156
637
  msgid "Valid CSS only! Like: 25px or 15em or 100% - 50px or 50% + 3rem"
638
  msgstr ""
639
 
640
+ #: controls/ooohboi-glider.php:319 controls/ooohboi-kontrolz.php:141
641
  msgid "Calc Prev - X"
642
  msgstr ""
643
 
644
+ #: controls/ooohboi-glider.php:336 controls/ooohboi-kontrolz.php:154
645
  msgid "Calc Next - X"
646
  msgstr ""
647
 
648
+ #: controls/ooohboi-glider.php:356
649
  msgid "Hide Pagination"
650
  msgstr ""
651
 
652
+ #: controls/ooohboi-glider.php:378 controls/ooohboi-kontrolz.php:170
653
  msgid "Pagination styles"
654
  msgstr ""
655
 
656
+ #: controls/ooohboi-glider.php:394
657
  msgid "Pagination type"
658
  msgstr ""
659
 
660
+ #: controls/ooohboi-glider.php:398
661
  msgid "Bullets"
662
  msgstr ""
663
 
664
+ #: controls/ooohboi-glider.php:399
665
  msgid "Fraction"
666
  msgstr ""
667
 
668
+ #: controls/ooohboi-glider.php:400
669
  msgid "Progress Bar"
670
  msgstr ""
671
 
672
+ #: controls/ooohboi-glider.php:413 controls/ooohboi-kontrolz.php:182
673
  msgid "Pagination Color"
674
  msgstr ""
675
 
676
+ #: controls/ooohboi-glider.php:429 controls/ooohboi-kontrolz.php:195
677
  msgid "Pagination Color - Active"
678
  msgstr ""
679
 
680
+ #: controls/ooohboi-glider.php:493
681
  msgid "Transition type"
682
  msgstr ""
683
 
684
+ #: controls/ooohboi-glider.php:498
685
  msgid "Slide"
686
  msgstr ""
687
 
688
+ #: controls/ooohboi-glider.php:499 controls/ooohboi-teleporter.php:317
689
  msgid "Fade"
690
  msgstr ""
691
 
692
+ #: controls/ooohboi-glider.php:513
693
  msgid "Show Multiple Slides"
694
  msgstr ""
695
 
696
+ #: controls/ooohboi-glider.php:534
697
  msgid "Slides Per View"
698
  msgstr ""
699
 
700
+ #: controls/ooohboi-glider.php:555
701
  msgid "Slides to Scroll"
702
  msgstr ""
703
 
704
+ #: controls/ooohboi-glider.php:556
705
  msgid "Scrolling multiple slides can break infinite loop."
706
  msgstr ""
707
 
708
+ #: controls/ooohboi-glider.php:575
709
  msgid "Space Between Slides (px)"
710
  msgstr ""
711
 
712
+ #: controls/ooohboi-glider.php:593
713
+ #, php-format
714
+ msgid "Centered Slides%sNEW!%s"
715
  msgstr ""
716
 
717
+ #: controls/ooohboi-glider.php:594
718
  msgid "Active slide will be centered."
719
  msgstr ""
720
 
721
+ #: controls/ooohboi-glider.php:614
722
+ #, php-format
723
+ msgid "Centered Slide Bounds%sNEW!%s"
724
  msgstr ""
725
 
726
+ #: controls/ooohboi-glider.php:615
727
  msgid ""
728
  "Active slide will be centered without adding gaps at the beginning and end "
729
  "of slider."
730
  msgstr ""
731
 
732
+ #: controls/ooohboi-glider.php:637
733
  msgid "Infinite Loop"
734
  msgstr ""
735
 
736
+ #: controls/ooohboi-glider.php:656
737
  msgid "Direction"
738
  msgstr ""
739
 
740
+ #: controls/ooohboi-glider.php:661
741
  msgid "Horizontal"
742
  msgstr ""
743
 
744
+ #: controls/ooohboi-glider.php:662
745
  msgid "Vertical"
746
  msgstr ""
747
 
748
+ #: controls/ooohboi-glider.php:676
749
  msgid "Parallax"
750
  msgstr ""
751
 
752
+ #: controls/ooohboi-glider.php:677
753
  msgid "It will work with Elementor PRO Attributes only."
754
  msgstr ""
755
 
756
+ #: controls/ooohboi-glider.php:696
757
  msgid "Transition speed"
758
  msgstr ""
759
 
760
+ #: controls/ooohboi-glider.php:712
761
  msgid "Enable Touch Move"
762
  msgstr ""
763
 
764
+ #: controls/ooohboi-glider.php:730
765
  msgid "Enable Mousewheel"
766
  msgstr ""
767
 
768
+ #: controls/ooohboi-glider.php:748
769
+ #, php-format
770
+ msgid "Deblur Slides%sNEW!%s"
771
  msgstr ""
772
 
773
+ #: controls/ooohboi-glider.php:749
774
  msgid "Round values of slides width and height to prevent blurry texts?"
775
  msgstr ""
776
 
777
+ #: controls/ooohboi-glider.php:768
778
  msgid "Autoplay"
779
  msgstr ""
780
 
781
+ #: controls/ooohboi-glider.php:786
782
  msgid "Autoplay delay"
783
  msgstr ""
784
 
785
+ #: controls/ooohboi-glider.php:787
786
  msgid "In miliseconds! 1000 is one second."
787
  msgstr ""
788
 
789
+ #: controls/ooohboi-harakiri.php:60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
790
  msgid "Color - HOVER"
791
  msgstr ""
792
 
793
+ #: controls/ooohboi-harakiri.php:72
794
  msgid "Writing Mode"
795
  msgstr ""
796
 
797
+ #: controls/ooohboi-harakiri.php:78
798
  msgid "Vertical LR"
799
  msgstr ""
800
 
801
+ #: controls/ooohboi-harakiri.php:79
802
  msgid "Vertical RL"
803
  msgstr ""
804
 
805
+ #: controls/ooohboi-harakiri.php:80 controls/ooohboi-overlay-underlay.php:131
806
+ #: controls/ooohboi-overlay-underlay.php:727 controls/ooohboi-photomorph.php:81
807
+ #: controls/ooohboi-pseudo.php:141 controls/ooohboi-pseudo.php:775
808
+ #: controls/ooohboi-teleporter.php:129
809
+ msgid "Normal"
810
+ msgstr ""
811
+
812
+ #: controls/ooohboi-harakiri.php:92
813
  msgid "Flip"
814
  msgstr ""
815
 
816
+ #: controls/ooohboi-harakiri.php:131 controls/ooohboi-overlaiz.php:142
817
+ #: controls/ooohboi-overlay-underlay.php:227
818
+ #: controls/ooohboi-overlay-underlay.php:819 controls/ooohboi-pseudo.php:244
819
+ #: controls/ooohboi-pseudo.php:875
820
  msgid "Height"
821
  msgstr ""
822
 
823
+ #: controls/ooohboi-harakiri.php:135 controls/ooohboi-harakiri.php:214
824
+ #: controls/ooohboi-hover-animator.php:276
825
+ #: controls/ooohboi-hover-animator.php:458
826
+ #: controls/ooohboi-hover-animator.php:640
827
+ #: controls/ooohboi-hover-animator.php:875
828
+ #: controls/ooohboi-hover-animator.php:1031 controls/ooohboi-overlaiz.php:527
829
+ #: controls/ooohboi-overlaiz.php:557 controls/ooohboi-overlay-underlay.php:510
830
+ #: controls/ooohboi-overlay-underlay.php:538
831
+ #: controls/ooohboi-overlay-underlay.php:1087
832
+ #: controls/ooohboi-overlay-underlay.php:1114
833
+ #: controls/ooohboi-photomorph.php:189 controls/ooohboi-pseudo.php:545
834
+ #: controls/ooohboi-pseudo.php:574 controls/ooohboi-pseudo.php:1167
835
+ #: controls/ooohboi-pseudo.php:1195 controls/ooohboi-spacerat.php:191
836
+ #: controls/ooohboi-spacerat.php:219 controls/ooohboi-videomasq.php:75
837
+ #: controls/ooohboi-videomasq.php:103
838
  msgid "Default"
839
  msgstr ""
840
 
841
+ #: controls/ooohboi-harakiri.php:136
842
  msgid "Inline"
843
  msgstr ""
844
 
845
+ #: controls/ooohboi-harakiri.php:137 controls/ooohboi-overlaiz.php:561
846
+ #: controls/ooohboi-overlay-underlay.php:542
847
+ #: controls/ooohboi-overlay-underlay.php:1118 controls/ooohboi-pseudo.php:578
848
+ #: controls/ooohboi-pseudo.php:1199 controls/ooohboi-spacerat.php:223
849
+ #: controls/ooohboi-videomasq.php:107
850
  msgid "Custom"
851
  msgstr ""
852
 
853
+ #: controls/ooohboi-harakiri.php:156
854
  msgid "NOTE: [%] unit works properly only if Column height is a fixed value!"
855
  msgstr ""
856
 
857
+ #: controls/ooohboi-harakiri.php:205
858
  msgid "Mix Blend Mode"
859
  msgstr ""
860
 
861
+ #: controls/ooohboi-harakiri.php:207
862
  #, php-format
863
  msgid "Learn more about this CSS property: %sMozilla.org%s"
864
  msgstr ""
865
 
866
+ #: controls/ooohboi-harakiri.php:215
867
  msgid "Multiply"
868
  msgstr ""
869
 
870
+ #: controls/ooohboi-harakiri.php:216
871
  msgid "Screen"
872
  msgstr ""
873
 
874
+ #: controls/ooohboi-harakiri.php:217 controls/ooohboi-overlay-underlay.php:79
875
  msgid "Overlay"
876
  msgstr ""
877
 
878
+ #: controls/ooohboi-harakiri.php:218
879
  msgid "Darken"
880
  msgstr ""
881
 
882
+ #: controls/ooohboi-harakiri.php:219
883
  msgid "Lighten"
884
  msgstr ""
885
 
886
+ #: controls/ooohboi-harakiri.php:220
887
  msgid "Color-dodge"
888
  msgstr ""
889
 
890
+ #: controls/ooohboi-harakiri.php:221
891
  msgid "Color-burn"
892
  msgstr ""
893
 
894
+ #: controls/ooohboi-harakiri.php:222
895
  msgid "Hard-light"
896
  msgstr ""
897
 
898
+ #: controls/ooohboi-harakiri.php:223
899
  msgid "Soft-light"
900
  msgstr ""
901
 
902
+ #: controls/ooohboi-harakiri.php:224
903
  msgid "Difference"
904
  msgstr ""
905
 
906
+ #: controls/ooohboi-harakiri.php:225
907
  msgid "Exclusion"
908
  msgstr ""
909
 
910
+ #: controls/ooohboi-harakiri.php:226
911
  msgid "Hue"
912
  msgstr ""
913
 
914
+ #: controls/ooohboi-harakiri.php:227
915
  msgid "Saturation"
916
  msgstr ""
917
 
918
+ #: controls/ooohboi-harakiri.php:229
919
  msgid "Luminosity"
920
  msgstr ""
921
 
922
+ #: controls/ooohboi-hover-animator.php:65
 
 
 
 
 
 
 
 
923
  msgid "Enable HOVERANIMATOR?"
924
  msgstr ""
925
 
926
+ #: controls/ooohboi-hover-animator.php:80
927
  msgid ""
928
+ "With Hoveranimator you can animate any widget in this column on mouse-over "
929
+ "event. Animation panel is available under the Advanced tab, per widget!"
930
  msgstr ""
931
 
932
+ #: controls/ooohboi-hover-animator.php:88 controls/ooohboi-icobox.php:75
933
+ #: controls/ooohboi-imbox.php:76 controls/ooohboi-perspektive.php:225
934
  #: controls/ooohboi-teleporter.php:361
935
  msgid "Content Overflow"
936
  msgstr ""
937
 
938
+ #: controls/ooohboi-hover-animator.php:89
939
  msgid ""
940
  "VISIBLE - makes visible all the elements outside this Column boundaries, "
941
  "HIDDEN - hides everything outside this Column boundaries."
942
  msgstr ""
943
 
944
+ #: controls/ooohboi-hover-animator.php:94 controls/ooohboi-icobox.php:80
945
+ #: controls/ooohboi-imbox.php:81 controls/ooohboi-perspektive.php:231
946
  #: controls/ooohboi-teleporter.php:367
947
  msgid "Visible"
948
  msgstr ""
949
 
950
+ #: controls/ooohboi-hover-animator.php:95 controls/ooohboi-icobox.php:81
951
+ #: controls/ooohboi-imbox.php:82 controls/ooohboi-perspektive.php:232
952
  #: controls/ooohboi-teleporter.php:368
953
  msgid "Hidden"
954
  msgstr ""
955
 
956
+ #: controls/ooohboi-hover-animator.php:142
957
  msgid "Enable Hoveranimator"
958
  msgstr ""
959
 
960
+ #: controls/ooohboi-hover-animator.php:143
961
  msgid ""
962
  "That will allow you to animate this widget on mouse-over event of the parent "
963
  "column."
964
  msgstr ""
965
 
966
+ #: controls/ooohboi-hover-animator.php:157
967
+ #: controls/ooohboi-overlay-underlay.php:94
968
+ #: controls/ooohboi-overlay-underlay.php:690 controls/ooohboi-pseudo.php:102
969
+ #: controls/ooohboi-pseudo.php:736
970
  msgid "Opacity"
971
  msgstr ""
972
 
973
+ #: controls/ooohboi-hover-animator.php:172
974
  msgid "Opacity Normal"
975
  msgstr ""
976
 
977
+ #: controls/ooohboi-hover-animator.php:195
978
  msgid "Opacity Hover"
979
  msgstr ""
980
 
981
+ #: controls/ooohboi-hover-animator.php:216
982
+ #: controls/ooohboi-hover-animator.php:399
983
+ #: controls/ooohboi-hover-animator.php:581
984
+ #: controls/ooohboi-hover-animator.php:816
985
+ #: controls/ooohboi-hover-animator.php:972
986
  msgid "Duration"
987
  msgstr ""
988
 
989
+ #: controls/ooohboi-hover-animator.php:243
990
+ #: controls/ooohboi-hover-animator.php:426
991
+ #: controls/ooohboi-hover-animator.php:608
992
+ #: controls/ooohboi-hover-animator.php:843
993
+ #: controls/ooohboi-hover-animator.php:999
994
  msgid "Delay"
995
  msgstr ""
996
 
997
+ #: controls/ooohboi-hover-animator.php:270
998
+ #: controls/ooohboi-hover-animator.php:453
999
+ #: controls/ooohboi-hover-animator.php:635
1000
+ #: controls/ooohboi-hover-animator.php:870
1001
+ #: controls/ooohboi-hover-animator.php:1026
1002
  msgid "Easing"
1003
  msgstr ""
1004
 
1005
+ #: controls/ooohboi-hover-animator.php:277
1006
+ #: controls/ooohboi-hover-animator.php:459
1007
+ #: controls/ooohboi-hover-animator.php:641
1008
+ #: controls/ooohboi-hover-animator.php:876
1009
+ #: controls/ooohboi-hover-animator.php:1032 controls/ooohboi-photomorph.php:190
1010
  msgid "Ease-in"
1011
  msgstr ""
1012
 
1013
+ #: controls/ooohboi-hover-animator.php:278
1014
+ #: controls/ooohboi-hover-animator.php:460
1015
+ #: controls/ooohboi-hover-animator.php:642
1016
+ #: controls/ooohboi-hover-animator.php:877
1017
+ #: controls/ooohboi-hover-animator.php:1033 controls/ooohboi-photomorph.php:191
1018
  msgid "Ease-out"
1019
  msgstr ""
1020
 
1021
+ #: controls/ooohboi-hover-animator.php:279
1022
+ #: controls/ooohboi-hover-animator.php:461
1023
+ #: controls/ooohboi-hover-animator.php:643
1024
+ #: controls/ooohboi-hover-animator.php:878
1025
+ #: controls/ooohboi-hover-animator.php:1034 controls/ooohboi-photomorph.php:192
1026
  msgid "Ease-in-out"
1027
  msgstr ""
1028
 
1029
+ #: controls/ooohboi-hover-animator.php:298
1030
+ #: controls/ooohboi-overlay-underlay.php:284
1031
+ #: controls/ooohboi-overlay-underlay.php:872 controls/ooohboi-pseudo.php:305
1032
+ #: controls/ooohboi-pseudo.php:934
1033
  msgid "Offset Top"
1034
  msgstr ""
1035
 
1036
+ #: controls/ooohboi-hover-animator.php:313
1037
  msgid "Offset Top Normal"
1038
  msgstr ""
1039
 
1040
+ #: controls/ooohboi-hover-animator.php:343
1041
  msgid "Calc Offset Top Normal"
1042
  msgstr ""
1043
 
1044
+ #: controls/ooohboi-hover-animator.php:344
1045
+ #: controls/ooohboi-hover-animator.php:387
1046
+ #: controls/ooohboi-hover-animator.php:526
1047
+ #: controls/ooohboi-hover-animator.php:569 controls/ooohboi-overlaiz.php:127
1048
+ #: controls/ooohboi-overlaiz.php:194 controls/ooohboi-overlaiz.php:261
1049
+ #: controls/ooohboi-overlaiz.php:328 controls/ooohboi-overlay-underlay.php:213
1050
+ #: controls/ooohboi-overlay-underlay.php:327
1051
+ #: controls/ooohboi-overlay-underlay.php:808
1052
+ #: controls/ooohboi-overlay-underlay.php:914
1053
+ #: controls/ooohboi-overlay-underlay.php:967 controls/ooohboi-pseudo.php:229
1054
+ #: controls/ooohboi-pseudo.php:351 controls/ooohboi-pseudo.php:861
1055
+ #: controls/ooohboi-pseudo.php:979 controls/ooohboi-pseudo.php:1038
1056
  msgid "Enter CSS calc value only! Like: 100% - 50px or 100% + 2em"
1057
  msgstr ""
1058
 
1059
+ #: controls/ooohboi-hover-animator.php:358
1060
  msgid "Offset Top Hover"
1061
  msgstr ""
1062
 
1063
+ #: controls/ooohboi-hover-animator.php:386
1064
  msgid "Calc Offset Top Hover"
1065
  msgstr ""
1066
 
1067
+ #: controls/ooohboi-hover-animator.php:480
1068
+ #: controls/ooohboi-overlay-underlay.php:341
1069
+ #: controls/ooohboi-overlay-underlay.php:925 controls/ooohboi-pseudo.php:366
1070
+ #: controls/ooohboi-pseudo.php:993
1071
  msgid "Offset Left"
1072
  msgstr ""
1073
 
1074
+ #: controls/ooohboi-hover-animator.php:495
1075
  msgid "Offset Left Normal"
1076
  msgstr ""
1077
 
1078
+ #: controls/ooohboi-hover-animator.php:525
1079
  msgid "Calc Offset Left Normal"
1080
  msgstr ""
1081
 
1082
+ #: controls/ooohboi-hover-animator.php:540
1083
  msgid "Offset Left Hover"
1084
  msgstr ""
1085
 
1086
+ #: controls/ooohboi-hover-animator.php:568
1087
  msgid "Calc Offset Left Hover"
1088
  msgstr ""
1089
 
1090
+ #: controls/ooohboi-hover-animator.php:662
1091
  msgid "Transforms"
1092
  msgstr ""
1093
 
1094
+ #: controls/ooohboi-hover-animator.php:677
1095
  msgid "ScaleX Normal"
1096
  msgstr ""
1097
 
1098
+ #: controls/ooohboi-hover-animator.php:701
1099
  msgid "ScaleX Hover"
1100
  msgstr ""
1101
 
1102
+ #: controls/ooohboi-hover-animator.php:723
1103
  msgid "ScaleY Normal"
1104
  msgstr ""
1105
 
1106
+ #: controls/ooohboi-hover-animator.php:747
1107
  msgid "ScaleY Hover"
1108
  msgstr ""
1109
 
1110
+ #: controls/ooohboi-hover-animator.php:769
1111
  msgid "Rotation Normal"
1112
  msgstr ""
1113
 
1114
+ #: controls/ooohboi-hover-animator.php:793
1115
  msgid "Rotation Hover"
1116
  msgstr ""
1117
 
1118
+ #: controls/ooohboi-hover-animator.php:897 controls/ooohboi-shadough.php:123
1119
+ #: controls/ooohboi-spacerat.php:433
1120
  msgid "Blur"
1121
  msgstr ""
1122
 
1123
+ #: controls/ooohboi-hover-animator.php:912
1124
  msgid "Blur Normal"
1125
  msgstr ""
1126
 
1127
+ #: controls/ooohboi-hover-animator.php:943
1128
  msgid "Blur Hover"
1129
  msgstr ""
1130
 
1213
  msgid "Image clip path"
1214
  msgstr ""
1215
 
1216
+ #: controls/ooohboi-imbox.php:248 controls/ooohboi-overlaiz.php:461
1217
+ #: controls/ooohboi-overlay-underlay.php:633
1218
+ #: controls/ooohboi-overlay-underlay.php:1206
1219
+ #: controls/ooohboi-photomorph.php:89 controls/ooohboi-photomorph.php:119
1220
+ #: controls/ooohboi-pseudo.php:674 controls/ooohboi-pseudo.php:1292
1221
+ #: controls/ooohboi-spacerat.php:496
1222
  #, php-format
1223
  msgid ""
1224
  "Enter the full clip-path property! See the copy-paste examples at %sClippy%s"
1252
  "pipe character, i.e. data-scroll-offset%s100,50em"
1253
  msgstr ""
1254
 
1255
+ #: controls/ooohboi-overlaiz.php:58
1256
  msgid "Enable Overlaiz?"
1257
  msgstr ""
1258
 
1259
+ #: controls/ooohboi-overlaiz.php:126 controls/ooohboi-overlay-underlay.php:212
1260
+ #: controls/ooohboi-overlay-underlay.php:807 controls/ooohboi-pseudo.php:228
1261
+ #: controls/ooohboi-pseudo.php:860
1262
  msgid "Calc Width"
1263
  msgstr ""
1264
 
1265
+ #: controls/ooohboi-overlaiz.php:193 controls/ooohboi-overlay-underlay.php:269
1266
+ #: controls/ooohboi-overlay-underlay.php:860 controls/ooohboi-pseudo.php:289
1267
+ #: controls/ooohboi-pseudo.php:919
1268
  msgid "Calc Height"
1269
  msgstr ""
1270
 
1271
+ #: controls/ooohboi-overlaiz.php:209
1272
  msgid "Position - X"
1273
  msgstr ""
1274
 
1275
+ #: controls/ooohboi-overlaiz.php:260
1276
  msgid "Calc Position - X"
1277
  msgstr ""
1278
 
1279
+ #: controls/ooohboi-overlaiz.php:276
1280
  msgid "Position - Y"
1281
  msgstr ""
1282
 
1283
+ #: controls/ooohboi-overlaiz.php:327
1284
  msgid "Calc Position - Y"
1285
  msgstr ""
1286
 
1287
+ #: controls/ooohboi-overlaiz.php:343
1288
  msgid "Rotation"
1289
  msgstr ""
1290
 
1291
+ #: controls/ooohboi-overlaiz.php:445 controls/ooohboi-overlay-underlay.php:631
1292
+ #: controls/ooohboi-overlay-underlay.php:1204 controls/ooohboi-pseudo.php:672
1293
+ #: controls/ooohboi-pseudo.php:1290 controls/ooohboi-spacerat.php:494
1294
  msgid "Clip path"
1295
  msgstr ""
1296
 
1297
+ #: controls/ooohboi-overlaiz.php:484
1298
  msgid "Mask"
1299
  msgstr ""
1300
 
1301
+ #: controls/ooohboi-overlaiz.php:485 controls/ooohboi-spacerat.php:153
1302
+ #: controls/ooohboi-spacerat.php:315
1303
  msgid ""
1304
  "NOTE: In order to see the effect you should add the Background to the Spacer "
1305
  "widget first!"
1306
  msgstr ""
1307
 
1308
+ #: controls/ooohboi-overlaiz.php:503 controls/ooohboi-overlay-underlay.php:488
1309
+ #: controls/ooohboi-overlay-underlay.php:1065 controls/ooohboi-pseudo.php:522
1310
+ #: controls/ooohboi-pseudo.php:1144 controls/ooohboi-spacerat.php:169
1311
  msgid "Choose Image Mask"
1312
  msgstr ""
1313
 
1314
+ #: controls/ooohboi-overlaiz.php:504 controls/ooohboi-overlay-underlay.php:489
1315
+ #: controls/ooohboi-overlay-underlay.php:1066 controls/ooohboi-pseudo.php:523
1316
+ #: controls/ooohboi-pseudo.php:1145 controls/ooohboi-spacerat.php:170
1317
  #, php-format
1318
  msgid ""
1319
  "NOTE: Image Mask should be black-and-transparent SVG file! Anything that’s "
1321
  "transparent will be completely hidden."
1322
  msgstr ""
1323
 
1324
+ #: controls/ooohboi-overlaiz.php:523 controls/ooohboi-overlay-underlay.php:506
1325
+ #: controls/ooohboi-overlay-underlay.php:1083 controls/ooohboi-pseudo.php:541
1326
+ #: controls/ooohboi-pseudo.php:1163 controls/ooohboi-spacerat.php:187
1327
+ #: controls/ooohboi-videomasq.php:71
1328
  msgid "Mask position"
1329
  msgstr ""
1330
 
1331
+ #: controls/ooohboi-overlaiz.php:528 controls/ooohboi-overlay-underlay.php:511
1332
+ #: controls/ooohboi-overlay-underlay.php:1088 controls/ooohboi-pseudo.php:546
1333
+ #: controls/ooohboi-pseudo.php:1168 controls/ooohboi-spacerat.php:192
1334
+ #: controls/ooohboi-videomasq.php:76
1335
  msgid "Center Center"
1336
  msgstr ""
1337
 
1338
+ #: controls/ooohboi-overlaiz.php:529 controls/ooohboi-overlay-underlay.php:512
1339
+ #: controls/ooohboi-overlay-underlay.php:1089 controls/ooohboi-pseudo.php:547
1340
+ #: controls/ooohboi-pseudo.php:1169 controls/ooohboi-spacerat.php:193
1341
+ #: controls/ooohboi-videomasq.php:77
1342
  msgid "Center Left"
1343
  msgstr ""
1344
 
1345
+ #: controls/ooohboi-overlaiz.php:530 controls/ooohboi-overlay-underlay.php:513
1346
+ #: controls/ooohboi-overlay-underlay.php:1090 controls/ooohboi-pseudo.php:548
1347
+ #: controls/ooohboi-pseudo.php:1170 controls/ooohboi-spacerat.php:194
1348
+ #: controls/ooohboi-videomasq.php:78
1349
  msgid "Center Right"
1350
  msgstr ""
1351
 
1352
+ #: controls/ooohboi-overlaiz.php:531 controls/ooohboi-overlay-underlay.php:514
1353
+ #: controls/ooohboi-overlay-underlay.php:1091 controls/ooohboi-pseudo.php:549
1354
+ #: controls/ooohboi-pseudo.php:1171 controls/ooohboi-spacerat.php:195
1355
+ #: controls/ooohboi-videomasq.php:79
1356
  msgid "Top Center"
1357
  msgstr ""
1358
 
1359
+ #: controls/ooohboi-overlaiz.php:532 controls/ooohboi-overlay-underlay.php:515
1360
+ #: controls/ooohboi-overlay-underlay.php:1092 controls/ooohboi-pseudo.php:550
1361
+ #: controls/ooohboi-pseudo.php:1172 controls/ooohboi-spacerat.php:196
1362
+ #: controls/ooohboi-videomasq.php:80
1363
  msgid "Top Left"
1364
  msgstr ""
1365
 
1366
+ #: controls/ooohboi-overlaiz.php:533 controls/ooohboi-overlay-underlay.php:516
1367
+ #: controls/ooohboi-overlay-underlay.php:1093 controls/ooohboi-pseudo.php:551
1368
+ #: controls/ooohboi-pseudo.php:1173 controls/ooohboi-spacerat.php:197
1369
+ #: controls/ooohboi-videomasq.php:81
1370
  msgid "Top Right"
1371
  msgstr ""
1372
 
1373
+ #: controls/ooohboi-overlaiz.php:534 controls/ooohboi-overlay-underlay.php:517
1374
+ #: controls/ooohboi-overlay-underlay.php:1094 controls/ooohboi-pseudo.php:552
1375
+ #: controls/ooohboi-pseudo.php:1174 controls/ooohboi-spacerat.php:198
1376
+ #: controls/ooohboi-videomasq.php:82
1377
  msgid "Bottom Center"
1378
  msgstr ""
1379
 
1380
+ #: controls/ooohboi-overlaiz.php:535 controls/ooohboi-overlay-underlay.php:518
1381
+ #: controls/ooohboi-overlay-underlay.php:1095 controls/ooohboi-pseudo.php:553
1382
+ #: controls/ooohboi-pseudo.php:1175 controls/ooohboi-spacerat.php:199
1383
+ #: controls/ooohboi-videomasq.php:83
1384
  msgid "Bottom Left"
1385
  msgstr ""
1386
 
1387
+ #: controls/ooohboi-overlaiz.php:536 controls/ooohboi-overlay-underlay.php:519
1388
+ #: controls/ooohboi-overlay-underlay.php:1096 controls/ooohboi-pseudo.php:554
1389
+ #: controls/ooohboi-pseudo.php:1176 controls/ooohboi-spacerat.php:200
1390
+ #: controls/ooohboi-videomasq.php:84
1391
  msgid "Bottom Right"
1392
  msgstr ""
1393
 
1394
+ #: controls/ooohboi-overlaiz.php:553 controls/ooohboi-overlay-underlay.php:534
1395
+ #: controls/ooohboi-overlay-underlay.php:1110 controls/ooohboi-pseudo.php:570
1396
+ #: controls/ooohboi-pseudo.php:1191 controls/ooohboi-spacerat.php:215
1397
+ #: controls/ooohboi-videomasq.php:99
1398
  msgid "Mask size"
1399
  msgstr ""
1400
 
1401
+ #: controls/ooohboi-overlaiz.php:559 controls/ooohboi-overlay-underlay.php:540
1402
+ #: controls/ooohboi-overlay-underlay.php:1116 controls/ooohboi-pseudo.php:576
1403
+ #: controls/ooohboi-pseudo.php:1197 controls/ooohboi-spacerat.php:221
1404
+ #: controls/ooohboi-videomasq.php:105
1405
  msgid "Cover"
1406
  msgstr ""
1407
 
1408
+ #: controls/ooohboi-overlaiz.php:560 controls/ooohboi-overlay-underlay.php:541
1409
+ #: controls/ooohboi-overlay-underlay.php:1117 controls/ooohboi-pseudo.php:577
1410
+ #: controls/ooohboi-pseudo.php:1198 controls/ooohboi-spacerat.php:222
1411
+ #: controls/ooohboi-videomasq.php:106
1412
  msgid "Contain"
1413
  msgstr ""
1414
 
1415
+ #: controls/ooohboi-overlaiz.php:635 controls/ooohboi-overlay-underlay.php:606
1416
+ #: controls/ooohboi-overlay-underlay.php:1180 controls/ooohboi-pseudo.php:646
1417
+ #: controls/ooohboi-pseudo.php:1265 controls/ooohboi-spacerat.php:289
1418
+ #: controls/ooohboi-videomasq.php:171
1419
  msgid "Mask repeat"
1420
  msgstr ""
1421
 
1422
+ #: controls/ooohboi-overlaiz.php:639 controls/ooohboi-overlay-underlay.php:610
1423
+ #: controls/ooohboi-overlay-underlay.php:1184 controls/ooohboi-pseudo.php:650
1424
+ #: controls/ooohboi-pseudo.php:1269 controls/ooohboi-spacerat.php:293
1425
+ #: controls/ooohboi-videomasq.php:175
1426
  msgid "No-repeat"
1427
  msgstr ""
1428
 
1429
+ #: controls/ooohboi-overlaiz.php:640 controls/ooohboi-overlay-underlay.php:611
1430
+ #: controls/ooohboi-overlay-underlay.php:1185 controls/ooohboi-pseudo.php:651
1431
+ #: controls/ooohboi-pseudo.php:1270 controls/ooohboi-spacerat.php:294
1432
+ #: controls/ooohboi-videomasq.php:176
1433
  msgid "Repeat"
1434
  msgstr ""
1435
 
1436
+ #: controls/ooohboi-overlaiz.php:641 controls/ooohboi-overlay-underlay.php:612
1437
+ #: controls/ooohboi-overlay-underlay.php:1186 controls/ooohboi-pseudo.php:652
1438
+ #: controls/ooohboi-pseudo.php:1271 controls/ooohboi-spacerat.php:295
1439
+ #: controls/ooohboi-videomasq.php:177
1440
  msgid "Repeat-x"
1441
  msgstr ""
1442
 
1443
+ #: controls/ooohboi-overlaiz.php:642 controls/ooohboi-overlay-underlay.php:613
1444
+ #: controls/ooohboi-overlay-underlay.php:1187 controls/ooohboi-pseudo.php:653
1445
+ #: controls/ooohboi-pseudo.php:1272 controls/ooohboi-spacerat.php:296
1446
+ #: controls/ooohboi-videomasq.php:178
1447
  msgid "Repeat-y"
1448
  msgstr ""
1449
 
1450
+ #: controls/ooohboi-overlaiz.php:662 controls/ooohboi-overlay-underlay.php:653
1451
+ #: controls/ooohboi-overlay-underlay.php:1226 controls/ooohboi-pseudo.php:695
1452
+ #: controls/ooohboi-pseudo.php:1313
1453
  msgid "Z-Index"
1454
  msgstr ""
1455
 
1456
+ #: controls/ooohboi-overlay-underlay.php:128
1457
+ #: controls/ooohboi-overlay-underlay.php:724 controls/ooohboi-pseudo.php:138
1458
+ #: controls/ooohboi-pseudo.php:772
 
 
 
 
1459
  msgid "Blend Mode"
1460
  msgstr ""
1461
 
1462
+ #: controls/ooohboi-overlay-underlay.php:154
1463
+ #: controls/ooohboi-overlay-underlay.php:750 controls/ooohboi-pseudo.php:166
1464
+ #: controls/ooohboi-pseudo.php:799
1465
  msgid "Position and Size"
1466
  msgstr ""
1467
 
1468
+ #: controls/ooohboi-overlay-underlay.php:270
1469
+ #: controls/ooohboi-overlay-underlay.php:384
1470
+ #: controls/ooohboi-overlay-underlay.php:861 controls/ooohboi-pseudo.php:290
1471
+ #: controls/ooohboi-pseudo.php:412 controls/ooohboi-pseudo.php:920
1472
  msgid "Enter CSS calc value only! Like: 45% + 85px or 100% - 3em"
1473
  msgstr ""
1474
 
1475
+ #: controls/ooohboi-overlay-underlay.php:326
1476
+ #: controls/ooohboi-overlay-underlay.php:913 controls/ooohboi-pseudo.php:350
1477
+ #: controls/ooohboi-pseudo.php:978
1478
  msgid "Calc Offset Top"
1479
  msgstr ""
1480
 
1481
+ #: controls/ooohboi-overlay-underlay.php:383
1482
+ #: controls/ooohboi-overlay-underlay.php:966 controls/ooohboi-pseudo.php:411
1483
+ #: controls/ooohboi-pseudo.php:1037
1484
  msgid "Calc Offset Left"
1485
  msgstr ""
1486
 
1487
+ #: controls/ooohboi-overlay-underlay.php:399
1488
+ #: controls/ooohboi-overlay-underlay.php:979 controls/ooohboi-pseudo.php:428
1489
+ #: controls/ooohboi-pseudo.php:1053
1490
  msgid "Rotate"
1491
  msgstr ""
1492
 
1493
+ #: controls/ooohboi-overlay-underlay.php:472
1494
  msgid "Overlay Mask"
1495
  msgstr ""
1496
 
1497
+ #: controls/ooohboi-overlay-underlay.php:674
1498
  msgid "Underlay"
1499
  msgstr ""
1500
 
1501
+ #: controls/ooohboi-overlay-underlay.php:1049
1502
  msgid "Underlay Mask"
1503
  msgstr ""
1504
 
1505
+ #: controls/ooohboi-overlay-underlay.php:1255
1506
  msgid "Get rid of the Horizontal scroller?"
1507
  msgstr ""
1508
 
1509
+ #: controls/ooohboi-overlay-underlay.php:1256
1510
  msgid ""
1511
  "OoohBoi POOOPART may cause Horizontal Scroller to show up. This is how you "
1512
  "can remove it."
1513
  msgstr ""
1514
 
1515
+ #: controls/ooohboi-overlay-underlay.php:1274
1516
  msgid "Baseline Grid"
1517
  msgstr ""
1518
 
1519
+ #: controls/ooohboi-overlay-underlay.php:1275
1520
  msgid "Baseline grid helps you maintain accuracy and consistency"
1521
  msgstr ""
1522
 
1523
+ #: controls/ooohboi-overlay-underlay.php:1288
1524
  msgid "Grid style"
1525
  msgstr ""
1526
 
1527
+ #: controls/ooohboi-overlay-underlay.php:1292
1528
  msgid "Squares"
1529
  msgstr ""
1530
 
1531
+ #: controls/ooohboi-overlay-underlay.php:1293
1532
  msgid "Vertical lines"
1533
  msgstr ""
1534
 
1535
+ #: controls/ooohboi-overlay-underlay.php:1294
1536
  msgid "Horizontal lines"
1537
  msgstr ""
1538
 
1539
+ #: controls/ooohboi-overlay-underlay.php:1304
1540
  msgid "Grid color"
1541
  msgstr ""
1542
 
1543
+ #: controls/ooohboi-overlay-underlay.php:1315
1544
  msgid "Grid size"
1545
  msgstr ""
1546
 
1547
+ #: controls/ooohboi-overlay-underlay.php:1339
1548
  msgid "Vertical Spacing"
1549
  msgstr ""
1550
 
1551
+ #: controls/ooohboi-overlay-underlay.php:1363
1552
  msgid "Horizontal Spacing"
1553
  msgstr ""
1554
 
1572
  msgid "Unstyle Prev and Next?"
1573
  msgstr ""
1574
 
1575
+ #: controls/ooohboi-perspektive.php:70
1576
  msgid "Enable Perspektive?"
1577
  msgstr ""
1578
 
1579
+ #: controls/ooohboi-perspektive.php:71
1580
  msgid ""
1581
  "NOTE: Perspektive interferes with z-index! The background of the element "
1582
  "with the Perspektive will not be affected by the Perspektive."
1583
  msgstr ""
1584
 
1585
+ #: controls/ooohboi-perspektive.php:86
1586
  msgid "Perspective"
1587
  msgstr ""
1588
 
1589
+ #: controls/ooohboi-perspektive.php:119
1590
  msgid "Perspective Origin"
1591
  msgstr ""
1592
 
1593
+ #: controls/ooohboi-perspektive.php:144
1594
  msgid "Translate Z"
1595
  msgstr ""
1596
 
1597
+ #: controls/ooohboi-perspektive.php:177
1598
  msgid "Rotate X"
1599
  msgstr ""
1600
 
1601
+ #: controls/ooohboi-perspektive.php:201
1602
  msgid "Rotate Y"
1603
  msgstr ""
1604
 
1605
+ #: controls/ooohboi-perspektive.php:226
1606
  msgid "Just in case the wrapper is \"overflow: hidden\""
1607
  msgstr ""
1608
 
1616
  "(Column) uses the fixed height."
1617
  msgstr ""
1618
 
1619
+ #: controls/ooohboi-photomorph.php:63
1620
  msgid "Enable PhotoMorph"
1621
  msgstr ""
1622
 
1623
+ #: controls/ooohboi-photomorph.php:64
1624
  msgid ""
1625
  "That will allow you to add the custom clip-path for both Normal and Hover "
1626
  "Image widget."
1627
  msgstr ""
1628
 
1629
+ #: controls/ooohboi-photomorph.php:139
1630
  msgid "Animate Hover?"
1631
  msgstr ""
1632
 
1633
+ #: controls/ooohboi-photomorph.php:140
1634
  msgid ""
1635
  "To ensure the smooth transition, be sure that the number of nodes of the "
1636
  "Normal state clip-path EQUALS the number of nodes of the Hover state!"
1637
  msgstr ""
1638
 
1639
+ #: controls/ooohboi-photomorph.php:156
1640
  msgid "Animation duration"
1641
  msgstr ""
1642
 
1643
+ #: controls/ooohboi-photomorph.php:183
1644
  msgid "Animation effect"
1645
  msgstr ""
1646
 
1647
+ #: controls/ooohboi-photomorph.php:208
1648
  msgid "Animation delay"
1649
  msgstr ""
1650
 
1651
+ #: controls/ooohboi-pseudo.php:65
1652
  msgid "Enable Pseudo?"
1653
  msgstr ""
1654
 
1655
+ #: controls/ooohboi-pseudo.php:66
1656
  msgid ""
1657
  "This is how you can create and manage :before and :after pseudo elements for "
1658
  "this column"
1659
  msgstr ""
1660
 
1661
+ #: controls/ooohboi-pseudo.php:84
1662
  msgid "Before"
1663
  msgstr ""
1664
 
1665
+ #: controls/ooohboi-pseudo.php:505
1666
  msgid "Before Mask"
1667
  msgstr ""
1668
 
1669
+ #: controls/ooohboi-pseudo.php:717
1670
  msgid "After"
1671
  msgstr ""
1672
 
1673
+ #: controls/ooohboi-pseudo.php:1127
1674
  msgid "After Mask"
1675
  msgstr ""
1676
 
1677
+ #: controls/ooohboi-searchcop.php:45
1678
  msgid "Search Target"
1679
  msgstr ""
1680
 
1681
+ #: controls/ooohboi-searchcop.php:50
1682
  msgid "Search Posts"
1683
  msgstr ""
1684
 
1685
+ #: controls/ooohboi-searchcop.php:51
1686
  msgid "Search Pages"
1687
  msgstr ""
1688
 
1689
+ #: controls/ooohboi-searchcop.php:52
1690
  msgid "Search Products"
1691
  msgstr ""
1692
 
1693
+ #: controls/ooohboi-searchcop.php:53
1694
  msgid "Search All"
1695
  msgstr ""
1696
 
1702
  msgid "Creates a shadow that conforms to the shape."
1703
  msgstr ""
1704
 
1705
+ #: controls/ooohboi-shadough.php:61 controls/ooohboi-spacerat.php:369
1706
  msgid "Offset X"
1707
  msgstr ""
1708
 
1709
+ #: controls/ooohboi-shadough.php:92 controls/ooohboi-spacerat.php:401
1710
  msgid "Offset Y"
1711
  msgstr ""
1712
 
1713
+ #: controls/ooohboi-shadough.php:153 controls/ooohboi-spacerat.php:464
1714
  msgid "Shadow Color"
1715
  msgstr ""
1716
 
1717
+ #: controls/ooohboi-spacerat.php:65
1718
  msgid "Enable SpaceRat?"
1719
  msgstr ""
1720
 
1721
+ #: controls/ooohboi-spacerat.php:66
1722
  msgid "Awesome gear for the pretty-much dull Spacer widget."
1723
  msgstr ""
1724
 
1725
+ #: controls/ooohboi-spacerat.php:125 controls/ooohboi-teleporter.php:109
1726
  msgid "Cursor Pointer"
1727
  msgstr ""
1728
 
1729
+ #: controls/ooohboi-spacerat.php:126 controls/ooohboi-teleporter.php:110
1730
  msgid "Keep the default cursor or show pointer on Hover?"
1731
  msgstr ""
1732
 
1733
+ #: controls/ooohboi-spacerat.php:152
1734
  msgid "SpaceRat Mask"
1735
  msgstr ""
1736
 
1737
+ #: controls/ooohboi-spacerat.php:337
1738
  msgid "Add shadow?"
1739
  msgstr ""
1740
 
1741
+ #: controls/ooohboi-spacerat.php:352
1742
  msgid "Define Shadow"
1743
  msgstr ""
1744
 
1806
  msgid "Strongly advised: HIDDEN."
1807
  msgstr ""
1808
 
1809
+ #: controls/ooohboi-videomasq.php:53
1810
  msgid "Choose Video Mask"
1811
  msgstr ""
1812
 
1813
+ #: controls/ooohboi-videomasq.php:54
1814
  #, php-format
1815
  msgid ""
1816
  "NOTE: The video mask should be black-and-transparent SVG file! Anything "
1818
  "that’s transparent will be completely hidden."
1819
  msgstr ""
1820
 
1821
+ #: controls/ooohboi-widget-stalker.php:64
1822
  msgid ""
1823
+ "NOTE: Position of this widget is controlled by the parent Column. See the "
1824
+ "Layout tab, Layout panel > Breaking Bad, Widget Stalker settings."
1825
  msgstr ""
1826
 
1827
+ #: controls/ooohboi-widget-stalker.php:134
1828
  msgid "Widget width"
1829
  msgstr ""
1830
 
1831
+ #: controls/ooohboi-widget-stalker.php:189
1832
  msgid "Align self"
1833
  msgstr ""
1834
 
1835
+ #: controls/ooohboi-widget-stalker.php:190
1836
  msgid "Align this widget vertically"
1837
  msgstr ""
1838
 
1839
+ #: controls/ooohboi-widget-stalker.php:211
1840
  msgid "Widget Order"
1841
  msgstr ""
1842
 
1843
+ #: inc/common-functions.php:34
1844
  msgid "What's New?"
1845
  msgstr ""
1846
 
1847
+ #: inc/common-functions.php:47
1848
  msgid "Manage Extensions"
1849
  msgstr ""
1850
 
1851
+ #: inc/common-functions.php:53
1852
  #, php-format
1853
  msgid ""
1854
  "%sThe following extensions are currently available with Steroids for "
1856
  "or OFF.%s"
1857
  msgstr ""
1858
 
1859
+ #: inc/common-functions.php:60
1860
  #, php-format
1861
  msgid ""
1862
  "%sAllows you to change the writing mode of the Heading and Text Editor "
1863
  "widgets%s"
1864
  msgstr ""
1865
 
1866
+ #: inc/common-functions.php:67
1867
  #, php-format
1868
  msgid "%sAdd an overlay or underlay ghost-element to any Elementor Widget%s"
1869
  msgstr ""
1870
 
1871
+ #: inc/common-functions.php:74
1872
  #, php-format
1873
  msgid ""
1874
  "%sAn awesome set of options for the Background Overlay element manipulation%s"
1875
  msgstr ""
1876
 
1877
+ #: inc/common-functions.php:81
1878
  #, php-format
1879
  msgid "%sIt allows you to style up the posts pagination in Elementor%s"
1880
  msgstr ""
1881
 
1882
+ #: inc/common-functions.php:88
1883
  #, php-format
1884
  msgid "%sA must to have extension for the Section and Columns%s"
1885
  msgstr ""
1886
 
1887
+ #: inc/common-functions.php:95
1888
  #, php-format
1889
  msgid "%sThe content slider made out of Section and Columns (Swiper)%s"
1890
  msgstr ""
1891
 
1892
+ #: inc/common-functions.php:102
1893
  #, php-format
1894
  msgid "%sMake the Image widget full-height of the container%s"
1895
  msgstr ""
1896
 
1897
+ #: inc/common-functions.php:109
1898
  #, php-format
1899
  msgid "%sThe Column hover controls for an exceptional effects%s"
1900
  msgstr ""
1901
 
1902
+ #: inc/common-functions.php:116
1903
  #, php-format
1904
  msgid "%sDecide what to search for; posts only, pages only or everything%s"
1905
  msgstr ""
1906
 
1907
+ #: inc/common-functions.php:123
1908
  #, php-format
1909
  msgid ""
1910
  "%sAdd the SVG mask to the Section video background and let the video play "
1911
  "inside any shape%s"
1912
  msgstr ""
1913
 
1914
+ #: inc/common-functions.php:130
1915
  #, php-format
1916
  msgid "%sDesign awesome buttons in Elementor%s"
1917
  msgstr ""
1918
 
1919
+ #: inc/common-functions.php:137
1920
  #, php-format
1921
  msgid "%sA small set of options that allow you to move widgets in 3D space%s"
1922
  msgstr ""
1923
 
1924
+ #: inc/common-functions.php:144
1925
  #, php-format
1926
  msgid "%sCreate the shadow that conforms the shape%s"
1927
  msgstr ""
1928
 
1929
+ #: inc/common-functions.php:151
1930
  #, php-format
1931
  msgid ""
1932
  "%sAllows you to add the clip-path to the Image widget for Normal and Hover "
1933
  "state%s"
1934
  msgstr ""
1935
 
1936
+ #: inc/common-functions.php:158
1937
  #, php-format
1938
  msgid "%sAllows you to style up the post comments."
1939
  msgstr ""
1940
 
1941
+ #: inc/common-functions.php:165
1942
  #, php-format
1943
  msgid "%sAdds new shine to the Spacer widget."
1944
  msgstr ""
1945
 
1946
+ #: inc/common-functions.php:172
1947
  #, php-format
1948
  msgid "%sImage Box widget extra controls"
1949
  msgstr ""
1950
 
1951
+ #: inc/common-functions.php:179
1952
  #, php-format
1953
  msgid "%sIcon Box widget extra controls"
1954
  msgstr ""
1955
 
1956
+ #: inc/common-functions.php:186
1957
  #, php-format
1958
  msgid "%sAnimate widgets on columns mouse-over event"
1959
  msgstr ""
1960
 
1961
+ #: inc/common-functions.php:193
1962
  #, php-format
1963
  msgid ""
1964
  "%sAllows you to additionaly style Image Carousel and Media Carousel controls"
1965
  "%s"
1966
  msgstr ""
1967
 
1968
+ #: inc/common-functions.php:200
1969
  #, php-format
1970
  msgid "%sStack widgets like flex elements%s"
1971
  msgstr ""
1972
 
1973
+ #: inc/common-functions.php:207
1974
  #, php-format
1975
  msgid "%sTake control over the Column's pseudo elements%s"
1976
  msgstr ""
1977
 
1978
+ #: inc/common-functions.php:215
 
 
 
 
 
1979
  msgid "Manage JS Libraries"
1980
  msgstr ""
1981
 
1982
+ #: inc/common-functions.php:221
1983
  #, php-format
1984
  msgid ""
1985
  "%sThe following libraries are currently available with Steroids for "
1987
  "OFF.%s"
1988
  msgstr ""
1989
 
1990
+ #: inc/common-functions.php:227
1991
  msgid "LOCOMOTIVE SCROLL"
1992
  msgstr ""
1993
 
1994
+ #: inc/common-functions.php:228
1995
  #, php-format
1996
  msgid ""
1997
  "%1$sDetection of elements in viewport and smooth scrolling with parallax.%3$s"
1998
  "%4$sSOURCE%5$s%2$s"
1999
  msgstr ""
2000
 
2001
+ #: inc/common-functions.php:239
2002
  msgid "Enable for Tablets"
2003
  msgstr ""
2004
 
2005
+ #: inc/common-functions.php:240
2006
  msgid "Enable for Mobiles"
2007
  msgstr ""
2008
 
2009
+ #: inc/common-functions.php:249
2010
  msgid "Multiplier"
2011
  msgstr ""
2012
 
2013
+ #: inc/common-functions.php:250
2014
  #, php-format
2015
  msgid "%sBoost/reduce scrolling speed. 1 is the default.%s"
2016
  msgstr ""
2017
 
2018
+ #: inc/common-functions.php:259
2019
  msgid "Refresh on resize?"
2020
  msgstr ""
2021
 
2022
+ #: inc/common-functions.php:260
2023
  msgid ""
2024
  "Things get messy on resize. That will do the silent page refresh upon the "
2025
  "window resize/orientationchange."
2026
  msgstr ""
2027
 
2028
+ #: inc/common-functions.php:267
2029
  msgid "Enable freehand mode?"
2030
  msgstr ""
2031
 
2032
+ #: inc/common-functions.php:268
2033
  #, php-format
2034
  msgid ""
2035
  "That removes all the default %sdata-scroll-section%s attributes so you can "
2036
  "set them at will."
2037
  msgstr ""
2038
 
2039
+ #: inc/common-functions.php:279
2040
  #, php-format
2041
  msgid ""
2042
  "%1$s A lightweight JavaScript animation library with a simple, yet powerful "
2043
  "API.%3$s%4$sSOURCE%5$s%2$s"
2044
  msgstr ""
2045
 
2046
+ #: inc/common-functions.php:286
2047
  #, php-format
2048
  msgid ""
2049
  "%1$s Create badass fluid and smooth transitions between your website's pages."
2050
  "%3$s%4$sSOURCE%5$s%2$s"
2051
  msgstr ""
2052
 
2053
+ #: inc/common-functions.php:292
2054
+ msgid ""
2055
+ "<span>BEWARE!</span>By enabling any of the GSAP files below, you acknowledge "
2056
+ "the <a href=\"https://greensock.com/standard-license/\" target=\"_blank"
2057
+ "\">Standard \"No Charge\" GreenSock License</a>."
2058
+ msgstr ""
2059
+
2060
+ #: inc/common-functions.php:298
2061
  #, php-format
2062
  msgid ""
2063
  "%1$sGreenSock's GSAP JavaScript animation library (including Draggable).%3$s"
2064
  "%4$sSOURCE%5$s%2$s"
2065
  msgstr ""
2066
 
2067
+ #: inc/common-functions.php:305
2068
  #, php-format
2069
  msgid "%1$sLet your page react to scroll changes.%3$s%4$sSOURCE%5$s%2$s"
2070
  msgstr ""
2071
 
2072
+ #: inc/common-functions.php:312
2073
  #, php-format
2074
  msgid ""
2075
  "%1$sAnimates the scroll position of the window or a DOM element.%3$s"
2076
  "%4$sSOURCE%5$s%2$s"
2077
  msgstr ""
2078
 
2079
+ #: inc/common-functions.php:319
2080
  #, php-format
2081
  msgid ""
2082
  "%1$sAnimate anything (SVG, DOM, canvas, generic objects, whatever) along a "
lib/gsap/gsap.min.js ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * GSAP 3.7.1
3
+ * https://greensock.com
4
+ *
5
+ * @license Copyright 2021, GreenSock. All rights reserved.
6
+ * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership.
7
+ * @author: Jack Doyle, jack@greensock.com
8
+ */
9
+
10
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).window=t.window||{})}(this,function(e){"use strict";function _inheritsLoose(t,e){t.prototype=Object.create(e.prototype),(t.prototype.constructor=t).__proto__=e}function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function o(t){return"string"==typeof t}function p(t){return"function"==typeof t}function q(t){return"number"==typeof t}function r(t){return void 0===t}function s(t){return"object"==typeof t}function t(t){return!1!==t}function u(){return"undefined"!=typeof window}function v(t){return p(t)||o(t)}function M(t){return(h=mt(t,ot))&&oe}function N(t,e){return console.warn("Invalid property",t,"set to",e,"Missing plugin? gsap.registerPlugin()")}function O(t,e){return!e&&console.warn(t)}function P(t,e){return t&&(ot[t]=e)&&h&&(h[t]=e)||ot}function Q(){return 0}function $(t){var e,r,i=t[0];if(s(i)||p(i)||(t=[t]),!(e=(i._gsap||{}).harness)){for(r=pt.length;r--&&!pt[r].targetTest(i););e=pt[r]}for(r=t.length;r--;)t[r]&&(t[r]._gsap||(t[r]._gsap=new Lt(t[r],e)))||t.splice(r,1);return t}function _(t){return t._gsap||$(xt(t))[0]._gsap}function aa(t,e,i){return(i=t[e])&&p(i)?t[e]():r(i)&&t.getAttribute&&t.getAttribute(e)||i}function ba(t,e){return(t=t.split(",")).forEach(e)||t}function ca(t){return Math.round(1e5*t)/1e5||0}function da(t,e){for(var r=e.length,i=0;t.indexOf(e[i])<0&&++i<r;);return i<r}function ea(){var t,e,r=ht.length,i=ht.slice(0);for(lt={},t=ht.length=0;t<r;t++)(e=i[t])&&e._lazy&&(e.render(e._lazy[0],e._lazy[1],!0)._lazy=0)}function fa(t,e,r,i){ht.length&&ea(),t.render(e,r,i),ht.length&&ea()}function ga(t){var e=parseFloat(t);return(e||0===e)&&(t+"").match(at).length<2?e:o(t)?t.trim():t}function ha(t){return t}function ia(t,e){for(var r in e)r in t||(t[r]=e[r]);return t}function ja(t,e){for(var r in e)r in t||"duration"===r||"ease"===r||(t[r]=e[r])}function la(t,e){for(var r in e)"__proto__"!==r&&"constructor"!==r&&"prototype"!==r&&(t[r]=s(e[r])?la(t[r]||(t[r]={}),e[r]):e[r]);return t}function ma(t,e){var r,i={};for(r in t)r in e||(i[r]=t[r]);return i}function na(e){var r=e.parent||R,i=e.keyframes?ja:ia;if(t(e.inherit))for(;r;)i(e,r.vars.defaults),r=r.parent||r._dp;return e}function qa(t,e,r,i){void 0===r&&(r="_first"),void 0===i&&(i="_last");var n=e._prev,a=e._next;n?n._next=a:t[r]===e&&(t[r]=a),a?a._prev=n:t[i]===e&&(t[i]=n),e._next=e._prev=e.parent=null}function ra(t,e){!t.parent||e&&!t.parent.autoRemoveChildren||t.parent.remove(t),t._act=0}function sa(t,e){if(t&&(!e||e._end>t._dur||e._start<0))for(var r=t;r;)r._dirty=1,r=r.parent;return t}function va(t){return t._repeat?gt(t._tTime,t=t.duration()+t._rDelay)*t:0}function xa(t,e){return(t-e._start)*e._ts+(0<=e._ts?0:e._dirty?e.totalDuration():e._tDur)}function ya(t){return t._end=ca(t._start+(t._tDur/Math.abs(t._ts||t._rts||U)||0))}function za(t,e){var r=t._dp;return r&&r.smoothChildTiming&&t._ts&&(t._start=ca(r._time-(0<t._ts?e/t._ts:((t._dirty?t.totalDuration():t._tDur)-e)/-t._ts)),ya(t),r._dirty||sa(r,t)),t}function Aa(t,e){var r;if((e._time||e._initted&&!e._dur)&&(r=xa(t.rawTime(),e),(!e._dur||Tt(0,e.totalDuration(),r)-e._tTime>U)&&e.render(r,!0)),sa(t,e)._dp&&t._initted&&t._time>=t._dur&&t._ts){if(t._dur<t.duration())for(r=t;r._dp;)0<=r.rawTime()&&r.totalTime(r._tTime),r=r._dp;t._zTime=-U}}function Ba(t,e,r,i){return e.parent&&ra(e),e._start=ca((q(r)?r:r||t!==R?bt(t,r,e):t._time)+e._delay),e._end=ca(e._start+(e.totalDuration()/Math.abs(e.timeScale())||0)),function _addLinkedListItem(t,e,r,i,n){void 0===r&&(r="_first"),void 0===i&&(i="_last");var a,s=t[i];if(n)for(a=e[n];s&&s[n]>a;)s=s._prev;s?(e._next=s._next,s._next=e):(e._next=t[r],t[r]=e),e._next?e._next._prev=e:t[i]=e,e._prev=s,e.parent=e._dp=t}(t,e,"_first","_last",t._sort?"_start":0),vt(e)||(t._recent=e),i||Aa(t,e),t}function Ca(t,e){return(ot.ScrollTrigger||N("scrollTrigger",e))&&ot.ScrollTrigger.create(e,t)}function Da(t,e,r,i){return Ut(t,e),t._initted?!r&&t._pt&&(t._dur&&!1!==t.vars.lazy||!t._dur&&t.vars.lazy)&&f!==St.frame?(ht.push(t),t._lazy=[e,i],1):void 0:1}function Ia(t,e,r,i){var n=t._repeat,a=ca(e)||0,s=t._tTime/t._tDur;return s&&!i&&(t._time*=a/t._dur),t._dur=a,t._tDur=n?n<0?1e10:ca(a*(n+1)+t._rDelay*n):a,s&&!i?za(t,t._tTime=t._tDur*s):t.parent&&ya(t),r||sa(t.parent,t),t}function Ja(t){return t instanceof qt?sa(t):Ia(t,t._dur)}function Ma(e,r,i){var n,a,s=q(r[1]),o=(s?2:1)+(e<2?0:1),u=r[o];if(s&&(u.duration=r[1]),u.parent=i,e){for(n=u,a=i;a&&!("immediateRender"in n);)n=a.vars.defaults||{},a=t(a.vars.inherit)&&a.parent;u.immediateRender=t(n.immediateRender),e<2?u.runBackwards=1:u.startAt=r[o-1]}return new Qt(r[0],u,r[1+o])}function Na(t,e){return t||0===t?e(t):e}function Pa(t){if("string"!=typeof t)return"";var e=st.exec(t);return e?t.substr(e.index+e[0].length):""}function Sa(t,e){return t&&s(t)&&"length"in t&&(!e&&!t.length||t.length-1 in t&&s(t[0]))&&!t.nodeType&&t!==i}function Wa(t){return t.sort(function(){return.5-Math.random()})}function Xa(t){if(p(t))return t;var _=s(t)?t:{each:t},m=Ft(_.ease),g=_.from||0,v=parseFloat(_.base)||0,y={},e=0<g&&g<1,b=isNaN(g)||e,T=_.axis,w=g,x=g;return o(g)?w=x={center:.5,edges:.5,end:1}[g]||0:!e&&b&&(w=g[0],x=g[1]),function(t,e,r){var i,n,a,s,o,u,h,l,f,d=(r||_).length,c=y[d];if(!c){if(!(f="auto"===_.grid?0:(_.grid||[1,X])[1])){for(h=-X;h<(h=r[f++].getBoundingClientRect().left)&&f<d;);f--}for(c=y[d]=[],i=b?Math.min(f,d)*w-.5:g%f,n=b?d*x/f-.5:g/f|0,l=X,u=h=0;u<d;u++)a=u%f-i,s=n-(u/f|0),c[u]=o=T?Math.abs("y"===T?s:a):G(a*a+s*s),h<o&&(h=o),o<l&&(l=o);"random"===g&&Wa(c),c.max=h-l,c.min=l,c.v=d=(parseFloat(_.amount)||parseFloat(_.each)*(d<f?d-1:T?"y"===T?d/f:f:Math.max(f,d/f))||0)*("edges"===g?-1:1),c.b=d<0?v-d:v,c.u=Pa(_.amount||_.each)||0,m=m&&d<0?Bt(m):m}return d=(c[t]-c.min)/c.max||0,ca(c.b+(m?m(d):d)*c.v)+c.u}}function Ya(r){var i=r<1?Math.pow(10,(r+"").length-2):1;return function(t){var e=Math.round(parseFloat(t)/r)*r*i;return(e-e%1)/i+(q(t)?0:Pa(t))}}function Za(u,t){var h,l,e=H(u);return!e&&s(u)&&(h=e=u.radius||X,u.values?(u=xt(u.values),(l=!q(u[0]))&&(h*=h)):u=Ya(u.increment)),Na(t,e?p(u)?function(t){return l=u(t),Math.abs(l-t)<=h?l:t}:function(t){for(var e,r,i=parseFloat(l?t.x:t),n=parseFloat(l?t.y:0),a=X,s=0,o=u.length;o--;)(e=l?(e=u[o].x-i)*e+(r=u[o].y-n)*r:Math.abs(u[o]-i))<a&&(a=e,s=o);return s=!h||a<=h?u[s]:t,l||s===t||q(t)?s:s+Pa(t)}:Ya(u))}function $a(t,e,r,i){return Na(H(t)?!e:!0===r?!!(r=0):!i,function(){return H(t)?t[~~(Math.random()*t.length)]:(r=r||1e-5)&&(i=r<1?Math.pow(10,(r+"").length-2):1)&&Math.floor(Math.round((t-r/2+Math.random()*(e-t+.99*r))/r)*r*i)/i})}function cb(e,r,t){return Na(t,function(t){return e[~~r(t)]})}function fb(t){for(var e,r,i,n,a=0,s="";~(e=t.indexOf("random(",a));)i=t.indexOf(")",e),n="["===t.charAt(e+7),r=t.substr(e+7,i-e-7).match(n?at:tt),s+=t.substr(a,e-a)+$a(n?r:+r[0],n?0:+r[1],+r[2]||1e-5),a=i+1;return s+t.substr(a,t.length-a)}function ib(t,e,r){var i,n,a,s=t.labels,o=X;for(i in s)(n=s[i]-e)<0==!!r&&n&&o>(n=Math.abs(n))&&(a=i,o=n);return a}function kb(t){return ra(t),t.scrollTrigger&&t.scrollTrigger.kill(!1),t.progress()<1&&Pt(t,"onInterrupt"),t}function pb(t,e,r){return(6*(t=t<0?t+1:1<t?t-1:t)<1?e+(r-e)*t*6:t<.5?r:3*t<2?e+(r-e)*(2/3-t)*6:e)*kt+.5|0}function qb(t,e,r){var i,n,a,s,o,u,h,l,f,d,c=t?q(t)?[t>>16,t>>8&kt,t&kt]:0:Mt.black;if(!c){if(","===t.substr(-1)&&(t=t.substr(0,t.length-1)),Mt[t])c=Mt[t];else if("#"===t.charAt(0)){if(t.length<6&&(t="#"+(i=t.charAt(1))+i+(n=t.charAt(2))+n+(a=t.charAt(3))+a+(5===t.length?t.charAt(4)+t.charAt(4):"")),9===t.length)return[(c=parseInt(t.substr(1,6),16))>>16,c>>8&kt,c&kt,parseInt(t.substr(7),16)/255];c=[(t=parseInt(t.substr(1),16))>>16,t>>8&kt,t&kt]}else if("hsl"===t.substr(0,3))if(c=d=t.match(tt),e){if(~t.indexOf("="))return c=t.match(et),r&&c.length<4&&(c[3]=1),c}else s=+c[0]%360/360,o=c[1]/100,i=2*(u=c[2]/100)-(n=u<=.5?u*(o+1):u+o-u*o),3<c.length&&(c[3]*=1),c[0]=pb(s+1/3,i,n),c[1]=pb(s,i,n),c[2]=pb(s-1/3,i,n);else c=t.match(tt)||Mt.transparent;c=c.map(Number)}return e&&!d&&(i=c[0]/kt,n=c[1]/kt,a=c[2]/kt,u=((h=Math.max(i,n,a))+(l=Math.min(i,n,a)))/2,h===l?s=o=0:(f=h-l,o=.5<u?f/(2-h-l):f/(h+l),s=h===i?(n-a)/f+(n<a?6:0):h===n?(a-i)/f+2:(i-n)/f+4,s*=60),c[0]=~~(s+.5),c[1]=~~(100*o+.5),c[2]=~~(100*u+.5)),r&&c.length<4&&(c[3]=1),c}function rb(t){var r=[],i=[],n=-1;return t.split(At).forEach(function(t){var e=t.match(rt)||[];r.push.apply(r,e),i.push(n+=e.length+1)}),r.c=i,r}function sb(t,e,r){var i,n,a,s,o="",u=(t+o).match(At),h=e?"hsla(":"rgba(",l=0;if(!u)return t;if(u=u.map(function(t){return(t=qb(t,e,1))&&h+(e?t[0]+","+t[1]+"%,"+t[2]+"%,"+t[3]:t.join(","))+")"}),r&&(a=rb(t),(i=r.c).join(o)!==a.c.join(o)))for(s=(n=t.replace(At,"1").split(rt)).length-1;l<s;l++)o+=n[l]+(~i.indexOf(l)?u.shift()||h+"0,0,0,0)":(a.length?a:u.length?u:r).shift());if(!n)for(s=(n=t.split(At)).length-1;l<s;l++)o+=n[l]+u[l];return o+n[s]}function vb(t){var e,r=t.join(" ");if(At.lastIndex=0,At.test(r))return e=Ct.test(r),t[1]=sb(t[1],e),t[0]=sb(t[0],e,rb(t[1])),!0}function Eb(t){var e=(t+"").split("("),r=zt[e[0]];return r&&1<e.length&&r.config?r.config.apply(null,~t.indexOf("{")?[function _parseObjectInString(t){for(var e,r,i,n={},a=t.substr(1,t.length-3).split(":"),s=a[0],o=1,u=a.length;o<u;o++)r=a[o],e=o!==u-1?r.lastIndexOf(","):r.length,i=r.substr(0,e),n[s]=isNaN(i)?i.replace(Et,"").trim():+i,s=r.substr(e+1).trim();return n}(e[1])]:function _valueInParentheses(t){var e=t.indexOf("(")+1,r=t.indexOf(")"),i=t.indexOf("(",e);return t.substring(e,~i&&i<r?t.indexOf(")",r+1):r)}(t).split(",").map(ga)):zt._CE&&It.test(t)?zt._CE("",t):r}function Gb(t,e){for(var r,i=t._first;i;)i instanceof qt?Gb(i,e):!i.vars.yoyoEase||i._yoyo&&i._repeat||i._yoyo===e||(i.timeline?Gb(i.timeline,e):(r=i._ease,i._ease=i._yEase,i._yEase=r,i._yoyo=e)),i=i._next}function Ib(t,e,r,i){void 0===r&&(r=function easeOut(t){return 1-e(1-t)}),void 0===i&&(i=function easeInOut(t){return t<.5?e(2*t)/2:1-e(2*(1-t))/2});var n,a={easeIn:e,easeOut:r,easeInOut:i};return ba(t,function(t){for(var e in zt[t]=ot[t]=a,zt[n=t.toLowerCase()]=r,a)zt[n+("easeIn"===e?".in":"easeOut"===e?".out":".inOut")]=zt[t+"."+e]=a[e]}),a}function Jb(e){return function(t){return t<.5?(1-e(1-2*t))/2:.5+e(2*(t-.5))/2}}function Kb(r,t,e){function Ol(t){return 1===t?1:i*Math.pow(2,-10*t)*J((t-a)*n)+1}var i=1<=t?t:1,n=(e||(r?.3:.45))/(t<1?t:1),a=n/V*(Math.asin(1/i)||0),s="out"===r?Ol:"in"===r?function(t){return 1-Ol(1-t)}:Jb(Ol);return n=V/n,s.config=function(t,e){return Kb(r,t,e)},s}function Lb(e,r){function Wl(t){return t?--t*t*((r+1)*t+r)+1:0}void 0===r&&(r=1.70158);var t="out"===e?Wl:"in"===e?function(t){return 1-Wl(1-t)}:Jb(Wl);return t.config=function(t){return Lb(e,t)},t}var F,R,i,n,a,h,l,f,d,c,m,g,y,b,T,w,x,k,A,C,S,D,z,I,E,B,Y={autoSleep:120,force3D:"auto",nullTargetWarn:1,units:{lineHeight:""}},L={duration:.5,overwrite:!1,delay:0},X=1e8,U=1/X,V=2*Math.PI,j=V/4,W=0,G=Math.sqrt,K=Math.cos,J=Math.sin,Z="function"==typeof ArrayBuffer&&ArrayBuffer.isView||function(){},H=Array.isArray,tt=/(?:-?\.?\d|\.)+/gi,et=/[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g,rt=/[-+=.]*\d+[.e-]*\d*[a-z%]*/g,it=/[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi,nt=/[+-]=-?[.\d]+/,at=/[^,'"\[\]\s]+/gi,st=/[\d.+\-=]+(?:e[-+]\d*)*/i,ot={},ut={},ht=[],lt={},ft={},dt={},ct=30,pt=[],_t="",mt=function _merge(t,e){for(var r in e)t[r]=e[r];return t},gt=function _animationCycle(t,e){var r=Math.floor(t/=e);return t&&r===t?r-1:r},vt=function _isFromOrFromStart(t){var e=t.data;return"isFromStart"===e||"isStart"===e},yt={_start:0,endTime:Q,totalDuration:Q},bt=function _parsePosition(t,e,r){var i,n,a,s=t.labels,u=t._recent||yt,h=t.duration()>=X?u.endTime(!1):t._dur;return o(e)&&(isNaN(e)||e in s)?(n=e.charAt(0),a="%"===e.substr(-1),i=e.indexOf("="),"<"===n||">"===n?(0<=i&&(e=e.replace(/=/,"")),("<"===n?u._start:u.endTime(0<=u._repeat))+(parseFloat(e.substr(1))||0)*(a?(i<0?u:r).totalDuration()/100:1)):i<0?(e in s||(s[e]=h),s[e]):(n=parseFloat(e.charAt(i-1)+e.substr(i+1)),a&&r&&(n=n/100*(H(r)?r[0]:r).totalDuration()),1<i?_parsePosition(t,e.substr(0,i-1),r)+n:h+n)):null==e?h:+e},Tt=function _clamp(t,e,r){return r<t?t:e<r?e:r},wt=[].slice,xt=function toArray(t,e,r){return!o(t)||r||!n&&Dt()?H(t)?function _flatten(t,e,r){return void 0===r&&(r=[]),t.forEach(function(t){return o(t)&&!e||Sa(t,1)?r.push.apply(r,xt(t)):r.push(t)})||r}(t,r):Sa(t)?wt.call(t,0):t?[t]:[]:wt.call((e||a).querySelectorAll(t),0)},Ot=function mapRange(e,t,r,i,n){var a=t-e,s=i-r;return Na(n,function(t){return r+((t-e)/a*s||0)})},Pt=function _callback(t,e,r){var i,n,a=t.vars,s=a[e];if(s)return i=a[e+"Params"],n=a.callbackScope||t,r&&ht.length&&ea(),i?s.apply(n,i):s.call(n)},kt=255,Mt={aqua:[0,kt,kt],lime:[0,kt,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,kt],navy:[0,0,128],white:[kt,kt,kt],olive:[128,128,0],yellow:[kt,kt,0],orange:[kt,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[kt,0,0],pink:[kt,192,203],cyan:[0,kt,kt],transparent:[kt,kt,kt,0]},At=function(){var t,e="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b";for(t in Mt)e+="|"+t+"\\b";return new RegExp(e+")","gi")}(),Ct=/hsl[a]?\(/,St=(x=Date.now,k=500,A=33,C=x(),S=C,z=D=1e3/240,b={time:0,frame:0,tick:function tick(){Kk(!0)},deltaRatio:function deltaRatio(t){return T/(1e3/(t||60))},wake:function wake(){l&&(!n&&u()&&(i=n=window,a=i.document||{},ot.gsap=oe,(i.gsapVersions||(i.gsapVersions=[])).push(oe.version),M(h||i.GreenSockGlobals||!i.gsap&&i||{}),y=i.requestAnimationFrame),m&&b.sleep(),g=y||function(t){return setTimeout(t,z-1e3*b.time+1|0)},c=1,Kk(2))},sleep:function sleep(){(y?i.cancelAnimationFrame:clearTimeout)(m),c=0,g=Q},lagSmoothing:function lagSmoothing(t,e){k=t||1e8,A=Math.min(e,k,0)},fps:function fps(t){D=1e3/(t||240),z=1e3*b.time+D},add:function add(t){I.indexOf(t)<0&&I.push(t),Dt()},remove:function remove(t){var e;~(e=I.indexOf(t))&&I.splice(e,1)&&e<=w&&w--},_listeners:I=[]}),Dt=function _wake(){return!c&&St.wake()},zt={},It=/^[\d.\-M][\d.\-,\s]/,Et=/["']/g,Bt=function _invertEase(e){return function(t){return 1-e(1-t)}},Ft=function _parseEase(t,e){return t&&(p(t)?t:zt[t]||Eb(t))||e};function Kk(t){var e,r,i,n,a=x()-S,s=!0===t;if(k<a&&(C+=a-A),(0<(e=(i=(S+=a)-C)-z)||s)&&(n=++b.frame,T=i-1e3*b.time,b.time=i/=1e3,z+=e+(D<=e?4:D-e),r=1),s||(m=g(Kk)),r)for(w=0;w<I.length;w++)I[w](i,T,n,t)}function lm(t){return t<B?E*t*t:t<.7272727272727273?E*Math.pow(t-1.5/2.75,2)+.75:t<.9090909090909092?E*(t-=2.25/2.75)*t+.9375:E*Math.pow(t-2.625/2.75,2)+.984375}ba("Linear,Quad,Cubic,Quart,Quint,Strong",function(t,e){var r=e<5?e+1:e;Ib(t+",Power"+(r-1),e?function(t){return Math.pow(t,r)}:function(t){return t},function(t){return 1-Math.pow(1-t,r)},function(t){return t<.5?Math.pow(2*t,r)/2:1-Math.pow(2*(1-t),r)/2})}),zt.Linear.easeNone=zt.none=zt.Linear.easeIn,Ib("Elastic",Kb("in"),Kb("out"),Kb()),E=7.5625,B=1/2.75,Ib("Bounce",function(t){return 1-lm(1-t)},lm),Ib("Expo",function(t){return t?Math.pow(2,10*(t-1)):0}),Ib("Circ",function(t){return-(G(1-t*t)-1)}),Ib("Sine",function(t){return 1===t?1:1-K(t*j)}),Ib("Back",Lb("in"),Lb("out"),Lb()),zt.SteppedEase=zt.steps=ot.SteppedEase={config:function config(t,e){void 0===t&&(t=1);var r=1/t,i=t+(e?0:1),n=e?1:0;return function(t){return((i*Tt(0,.99999999,t)|0)+n)*r}}},L.ease=zt["quad.out"],ba("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt",function(t){return _t+=t+","+t+"Params,"});var Rt,Lt=function GSCache(t,e){this.id=W++,(t._gsap=this).target=t,this.harness=e,this.get=e?e.get:aa,this.set=e?e.getSetter:Jt},Nt=((Rt=Animation.prototype).delay=function delay(t){return t||0===t?(this.parent&&this.parent.smoothChildTiming&&this.startTime(this._start+t-this._delay),this._delay=t,this):this._delay},Rt.duration=function duration(t){return arguments.length?this.totalDuration(0<this._repeat?t+(t+this._rDelay)*this._repeat:t):this.totalDuration()&&this._dur},Rt.totalDuration=function totalDuration(t){return arguments.length?(this._dirty=0,Ia(this,this._repeat<0?t:(t-this._repeat*this._rDelay)/(this._repeat+1))):this._tDur},Rt.totalTime=function totalTime(t,e){if(Dt(),!arguments.length)return this._tTime;var r=this._dp;if(r&&r.smoothChildTiming&&this._ts){for(za(this,t),!r._dp||r.parent||Aa(r,this);r.parent;)r.parent._time!==r._start+(0<=r._ts?r._tTime/r._ts:(r.totalDuration()-r._tTime)/-r._ts)&&r.totalTime(r._tTime,!0),r=r.parent;!this.parent&&this._dp.autoRemoveChildren&&(0<this._ts&&t<this._tDur||this._ts<0&&0<t||!this._tDur&&!t)&&Ba(this._dp,this,this._start-this._delay)}return(this._tTime!==t||!this._dur&&!e||this._initted&&Math.abs(this._zTime)===U||!t&&!this._initted&&(this.add||this._ptLookup))&&(this._ts||(this._pTime=t),fa(this,t,e)),this},Rt.time=function time(t,e){return arguments.length?this.totalTime(Math.min(this.totalDuration(),t+va(this))%(this._dur+this._rDelay)||(t?this._dur:0),e):this._time},Rt.totalProgress=function totalProgress(t,e){return arguments.length?this.totalTime(this.totalDuration()*t,e):this.totalDuration()?Math.min(1,this._tTime/this._tDur):this.ratio},Rt.progress=function progress(t,e){return arguments.length?this.totalTime(this.duration()*(!this._yoyo||1&this.iteration()?t:1-t)+va(this),e):this.duration()?Math.min(1,this._time/this._dur):this.ratio},Rt.iteration=function iteration(t,e){var r=this.duration()+this._rDelay;return arguments.length?this.totalTime(this._time+(t-1)*r,e):this._repeat?gt(this._tTime,r)+1:1},Rt.timeScale=function timeScale(t){if(!arguments.length)return this._rts===-U?0:this._rts;if(this._rts===t)return this;var e=this.parent&&this._ts?xa(this.parent._time,this):this._tTime;return this._rts=+t||0,this._ts=this._ps||t===-U?0:this._rts,function _recacheAncestors(t){for(var e=t.parent;e&&e.parent;)e._dirty=1,e.totalDuration(),e=e.parent;return t}(this.totalTime(Tt(-this._delay,this._tDur,e),!0))},Rt.paused=function paused(t){return arguments.length?(this._ps!==t&&((this._ps=t)?(this._pTime=this._tTime||Math.max(-this._delay,this.rawTime()),this._ts=this._act=0):(Dt(),this._ts=this._rts,this.totalTime(this.parent&&!this.parent.smoothChildTiming?this.rawTime():this._tTime||this._pTime,1===this.progress()&&Math.abs(this._zTime)!==U&&(this._tTime-=U)))),this):this._ps},Rt.startTime=function startTime(t){if(arguments.length){this._start=t;var e=this.parent||this._dp;return!e||!e._sort&&this.parent||Ba(e,this,t-this._delay),this}return this._start},Rt.endTime=function endTime(e){return this._start+(t(e)?this.totalDuration():this.duration())/Math.abs(this._ts)},Rt.rawTime=function rawTime(t){var e=this.parent||this._dp;return e?t&&(!this._ts||this._repeat&&this._time&&this.totalProgress()<1)?this._tTime%(this._dur+this._rDelay):this._ts?xa(e.rawTime(t),this):this._tTime:this._tTime},Rt.globalTime=function globalTime(t){for(var e=this,r=arguments.length?t:e.rawTime();e;)r=e._start+r/(e._ts||1),e=e._dp;return r},Rt.repeat=function repeat(t){return arguments.length?(this._repeat=t===1/0?-2:t,Ja(this)):-2===this._repeat?1/0:this._repeat},Rt.repeatDelay=function repeatDelay(t){if(arguments.length){var e=this._time;return this._rDelay=t,Ja(this),e?this.time(e):this}return this._rDelay},Rt.yoyo=function yoyo(t){return arguments.length?(this._yoyo=t,this):this._yoyo},Rt.seek=function seek(e,r){return this.totalTime(bt(this,e),t(r))},Rt.restart=function restart(e,r){return this.play().totalTime(e?-this._delay:0,t(r))},Rt.play=function play(t,e){return null!=t&&this.seek(t,e),this.reversed(!1).paused(!1)},Rt.reverse=function reverse(t,e){return null!=t&&this.seek(t||this.totalDuration(),e),this.reversed(!0).paused(!1)},Rt.pause=function pause(t,e){return null!=t&&this.seek(t,e),this.paused(!0)},Rt.resume=function resume(){return this.paused(!1)},Rt.reversed=function reversed(t){return arguments.length?(!!t!==this.reversed()&&this.timeScale(-this._rts||(t?-U:0)),this):this._rts<0},Rt.invalidate=function invalidate(){return this._initted=this._act=0,this._zTime=-U,this},Rt.isActive=function isActive(){var t,e=this.parent||this._dp,r=this._start;return!(e&&!(this._ts&&this._initted&&e.isActive()&&(t=e.rawTime(!0))>=r&&t<this.endTime(!0)-U))},Rt.eventCallback=function eventCallback(t,e,r){var i=this.vars;return 1<arguments.length?(e?(i[t]=e,r&&(i[t+"Params"]=r),"onUpdate"===t&&(this._onUpdate=e)):delete i[t],this):i[t]},Rt.then=function then(t){var i=this;return new Promise(function(e){function Cn(){var t=i.then;i.then=null,p(r)&&(r=r(i))&&(r.then||r===i)&&(i.then=t),e(r),i.then=t}var r=p(t)?t:ha;i._initted&&1===i.totalProgress()&&0<=i._ts||!i._tTime&&i._ts<0?Cn():i._prom=Cn})},Rt.kill=function kill(){kb(this)},Animation);function Animation(t){this.vars=t,this._delay=+t.delay||0,(this._repeat=t.repeat===1/0?-2:t.repeat||0)&&(this._rDelay=t.repeatDelay||0,this._yoyo=!!t.yoyo||!!t.yoyoEase),this._ts=1,Ia(this,+t.duration,1,1),this.data=t.data,c||St.wake()}ia(Nt.prototype,{_time:0,_start:0,_end:0,_tTime:0,_tDur:0,_dirty:0,_repeat:0,_yoyo:!1,parent:null,_initted:!1,_rDelay:0,_ts:1,_dp:0,ratio:0,_zTime:-U,_prom:0,_ps:!1,_rts:1});var qt=function(n){function Timeline(e,r){var i;return void 0===e&&(e={}),(i=n.call(this,e)||this).labels={},i.smoothChildTiming=!!e.smoothChildTiming,i.autoRemoveChildren=!!e.autoRemoveChildren,i._sort=t(e.sortChildren),R&&Ba(e.parent||R,_assertThisInitialized(i),r),e.reversed&&i.reverse(),e.paused&&i.paused(!0),e.scrollTrigger&&Ca(_assertThisInitialized(i),e.scrollTrigger),i}_inheritsLoose(Timeline,n);var e=Timeline.prototype;return e.to=function to(t,e,r){return Ma(0,arguments,this),this},e.from=function from(t,e,r){return Ma(1,arguments,this),this},e.fromTo=function fromTo(t,e,r,i){return Ma(2,arguments,this),this},e.set=function set(t,e,r){return e.duration=0,e.parent=this,na(e).repeatDelay||(e.repeat=0),e.immediateRender=!!e.immediateRender,new Qt(t,e,bt(this,r),1),this},e.call=function call(t,e,r){return Ba(this,Qt.delayedCall(0,t,e),r)},e.staggerTo=function staggerTo(t,e,r,i,n,a,s){return r.duration=e,r.stagger=r.stagger||i,r.onComplete=a,r.onCompleteParams=s,r.parent=this,new Qt(t,r,bt(this,n)),this},e.staggerFrom=function staggerFrom(e,r,i,n,a,s,o){return i.runBackwards=1,na(i).immediateRender=t(i.immediateRender),this.staggerTo(e,r,i,n,a,s,o)},e.staggerFromTo=function staggerFromTo(e,r,i,n,a,s,o,u){return n.startAt=i,na(n).immediateRender=t(n.immediateRender),this.staggerTo(e,r,n,a,s,o,u)},e.render=function render(t,e,r){var i,n,a,s,o,u,h,l,f,d,c,p,_=this._time,m=this._dirty?this.totalDuration():this._tDur,g=this._dur,v=this!==R&&m-U<t&&0<=t?m:t<U?0:t,y=this._zTime<0!=t<0&&(this._initted||!g);if(v!==this._tTime||r||y){if(_!==this._time&&g&&(v+=this._time-_,t+=this._time-_),i=v,f=this._start,u=!(l=this._ts),y&&(g||(_=this._zTime),!t&&e||(this._zTime=t)),this._repeat){if(c=this._yoyo,o=g+this._rDelay,this._repeat<-1&&t<0)return this.totalTime(100*o+t,e,r);if(i=ca(v%o),v===m?(s=this._repeat,i=g):((s=~~(v/o))&&s===v/o&&(i=g,s--),g<i&&(i=g)),d=gt(this._tTime,o),!_&&this._tTime&&d!==s&&(d=s),c&&1&s&&(i=g-i,p=1),s!==d&&!this._lock){var b=c&&1&d,T=b===(c&&1&s);if(s<d&&(b=!b),_=b?0:g,this._lock=1,this.render(_||(p?0:ca(s*o)),e,!g)._lock=0,this._tTime=v,!e&&this.parent&&Pt(this,"onRepeat"),this.vars.repeatRefresh&&!p&&(this.invalidate()._lock=1),_&&_!==this._time||u!=!this._ts||this.vars.onRepeat&&!this.parent&&!this._act)return this;if(g=this._dur,m=this._tDur,T&&(this._lock=2,_=b?g:-1e-4,this.render(_,!0),this.vars.repeatRefresh&&!p&&this.invalidate()),this._lock=0,!this._ts&&!u)return this;Gb(this,p)}}if(this._hasPause&&!this._forcing&&this._lock<2&&(h=function _findNextPauseTween(t,e,r){var i;if(e<r)for(i=t._first;i&&i._start<=r;){if(!i._dur&&"isPause"===i.data&&i._start>e)return i;i=i._next}else for(i=t._last;i&&i._start>=r;){if(!i._dur&&"isPause"===i.data&&i._start<e)return i;i=i._prev}}(this,ca(_),ca(i)))&&(v-=i-(i=h._start)),this._tTime=v,this._time=i,this._act=!l,this._initted||(this._onUpdate=this.vars.onUpdate,this._initted=1,this._zTime=t,_=0),!_&&i&&!e&&(Pt(this,"onStart"),this._tTime!==v))return this;if(_<=i&&0<=t)for(n=this._first;n;){if(a=n._next,(n._act||i>=n._start)&&n._ts&&h!==n){if(n.parent!==this)return this.render(t,e,r);if(n.render(0<n._ts?(i-n._start)*n._ts:(n._dirty?n.totalDuration():n._tDur)+(i-n._start)*n._ts,e,r),i!==this._time||!this._ts&&!u){h=0,a&&(v+=this._zTime=-U);break}}n=a}else{n=this._last;for(var w=t<0?t:i;n;){if(a=n._prev,(n._act||w<=n._end)&&n._ts&&h!==n){if(n.parent!==this)return this.render(t,e,r);if(n.render(0<n._ts?(w-n._start)*n._ts:(n._dirty?n.totalDuration():n._tDur)+(w-n._start)*n._ts,e,r),i!==this._time||!this._ts&&!u){h=0,a&&(v+=this._zTime=w?-U:U);break}}n=a}}if(h&&!e&&(this.pause(),h.render(_<=i?0:-U)._zTime=_<=i?1:-1,this._ts))return this._start=f,ya(this),this.render(t,e,r);this._onUpdate&&!e&&Pt(this,"onUpdate",!0),(v===m&&m>=this.totalDuration()||!v&&_)&&(f!==this._start&&Math.abs(l)===Math.abs(this._ts)||this._lock||(!t&&g||!(v===m&&0<this._ts||!v&&this._ts<0)||ra(this,1),e||t<0&&!_||!v&&!_&&m||(Pt(this,v===m&&0<=t?"onComplete":"onReverseComplete",!0),!this._prom||v<m&&0<this.timeScale()||this._prom())))}return this},e.add=function add(t,e){var r=this;if(q(e)||(e=bt(this,e,t)),!(t instanceof Nt)){if(H(t))return t.forEach(function(t){return r.add(t,e)}),this;if(o(t))return this.addLabel(t,e);if(!p(t))return this;t=Qt.delayedCall(0,t)}return this!==t?Ba(this,t,e):this},e.getChildren=function getChildren(t,e,r,i){void 0===t&&(t=!0),void 0===e&&(e=!0),void 0===r&&(r=!0),void 0===i&&(i=-X);for(var n=[],a=this._first;a;)a._start>=i&&(a instanceof Qt?e&&n.push(a):(r&&n.push(a),t&&n.push.apply(n,a.getChildren(!0,e,r)))),a=a._next;return n},e.getById=function getById(t){for(var e=this.getChildren(1,1,1),r=e.length;r--;)if(e[r].vars.id===t)return e[r]},e.remove=function remove(t){return o(t)?this.removeLabel(t):p(t)?this.killTweensOf(t):(qa(this,t),t===this._recent&&(this._recent=this._last),sa(this))},e.totalTime=function totalTime(t,e){return arguments.length?(this._forcing=1,!this._dp&&this._ts&&(this._start=ca(St.time-(0<this._ts?t/this._ts:(this.totalDuration()-t)/-this._ts))),n.prototype.totalTime.call(this,t,e),this._forcing=0,this):this._tTime},e.addLabel=function addLabel(t,e){return this.labels[t]=bt(this,e),this},e.removeLabel=function removeLabel(t){return delete this.labels[t],this},e.addPause=function addPause(t,e,r){var i=Qt.delayedCall(0,e||Q,r);return i.data="isPause",this._hasPause=1,Ba(this,i,bt(this,t))},e.removePause=function removePause(t){var e=this._first;for(t=bt(this,t);e;)e._start===t&&"isPause"===e.data&&ra(e),e=e._next},e.killTweensOf=function killTweensOf(t,e,r){for(var i=this.getTweensOf(t,r),n=i.length;n--;)Yt!==i[n]&&i[n].kill(t,e);return this},e.getTweensOf=function getTweensOf(t,e){for(var r,i=[],n=xt(t),a=this._first,s=q(e);a;)a instanceof Qt?da(a._targets,n)&&(s?(!Yt||a._initted&&a._ts)&&a.globalTime(0)<=e&&a.globalTime(a.totalDuration())>e:!e||a.isActive())&&i.push(a):(r=a.getTweensOf(n,e)).length&&i.push.apply(i,r),a=a._next;return i},e.tweenTo=function tweenTo(t,e){e=e||{};var r,i=this,n=bt(i,t),a=e.startAt,s=e.onStart,o=e.onStartParams,u=e.immediateRender,h=Qt.to(i,ia({ease:e.ease||"none",lazy:!1,immediateRender:!1,time:n,overwrite:"auto",duration:e.duration||Math.abs((n-(a&&"time"in a?a.time:i._time))/i.timeScale())||U,onStart:function onStart(){if(i.pause(),!r){var t=e.duration||Math.abs((n-(a&&"time"in a?a.time:i._time))/i.timeScale());h._dur!==t&&Ia(h,t,0,1).render(h._time,!0,!0),r=1}s&&s.apply(h,o||[])}},e));return u?h.render(0):h},e.tweenFromTo=function tweenFromTo(t,e,r){return this.tweenTo(e,ia({startAt:{time:bt(this,t)}},r))},e.recent=function recent(){return this._recent},e.nextLabel=function nextLabel(t){return void 0===t&&(t=this._time),ib(this,bt(this,t))},e.previousLabel=function previousLabel(t){return void 0===t&&(t=this._time),ib(this,bt(this,t),1)},e.currentLabel=function currentLabel(t){return arguments.length?this.seek(t,!0):this.previousLabel(this._time+U)},e.shiftChildren=function shiftChildren(t,e,r){void 0===r&&(r=0);for(var i,n=this._first,a=this.labels;n;)n._start>=r&&(n._start+=t,n._end+=t),n=n._next;if(e)for(i in a)a[i]>=r&&(a[i]+=t);return sa(this)},e.invalidate=function invalidate(){var t=this._first;for(this._lock=0;t;)t.invalidate(),t=t._next;return n.prototype.invalidate.call(this)},e.clear=function clear(t){void 0===t&&(t=!0);for(var e,r=this._first;r;)e=r._next,this.remove(r),r=e;return this._dp&&(this._time=this._tTime=this._pTime=0),t&&(this.labels={}),sa(this)},e.totalDuration=function totalDuration(t){var e,r,i,n=0,a=this,s=a._last,o=X;if(arguments.length)return a.timeScale((a._repeat<0?a.duration():a.totalDuration())/(a.reversed()?-t:t));if(a._dirty){for(i=a.parent;s;)e=s._prev,s._dirty&&s.totalDuration(),o<(r=s._start)&&a._sort&&s._ts&&!a._lock?(a._lock=1,Ba(a,s,r-s._delay,1)._lock=0):o=r,r<0&&s._ts&&(n-=r,(!i&&!a._dp||i&&i.smoothChildTiming)&&(a._start+=r/a._ts,a._time-=r,a._tTime-=r),a.shiftChildren(-r,!1,-Infinity),o=0),s._end>n&&s._ts&&(n=s._end),s=e;Ia(a,a===R&&a._time>n?a._time:n,1,1),a._dirty=0}return a._tDur},Timeline.updateRoot=function updateRoot(t){if(R._ts&&(fa(R,xa(t,R)),f=St.frame),St.frame>=ct){ct+=Y.autoSleep||120;var e=R._first;if((!e||!e._ts)&&Y.autoSleep&&St._listeners.length<2){for(;e&&!e._ts;)e=e._next;e||St.sleep()}}},Timeline}(Nt);ia(qt.prototype,{_lock:0,_hasPause:0,_forcing:0});function Sb(t,e,r,i,n,a){var u,h,l,f;if(ft[t]&&!1!==(u=new ft[t]).init(n,u.rawVars?e[t]:function _processVars(t,e,r,i,n){if(p(t)&&(t=Vt(t,n,e,r,i)),!s(t)||t.style&&t.nodeType||H(t)||Z(t))return o(t)?Vt(t,n,e,r,i):t;var a,u={};for(a in t)u[a]=Vt(t[a],n,e,r,i);return u}(e[t],i,n,a,r),r,i,a)&&(r._pt=h=new ae(r._pt,n,t,0,1,u.render,u,0,u.priority),r!==d))for(l=r._ptLookup[r._targets.indexOf(n)],f=u._props.length;f--;)l[u._props[f]]=h;return u}var Yt,Xt=function _addPropTween(t,e,r,i,n,a,s,u,h){p(i)&&(i=i(n||0,t,a));var l,f=t[e],d="get"!==r?r:p(f)?h?t[e.indexOf("set")||!p(t["get"+e.substr(3)])?e:"get"+e.substr(3)](h):t[e]():f,c=p(f)?h?$t:Kt:Gt;if(o(i)&&(~i.indexOf("random(")&&(i=fb(i)),"="===i.charAt(1)&&(!(l=parseFloat(d)+parseFloat(i.substr(2))*("-"===i.charAt(0)?-1:1)+(Pa(d)||0))&&0!==l||(i=l))),d!==i)return isNaN(d*i)||""===i?(f||e in t||N(e,i),function _addComplexStringPropTween(t,e,r,i,n,a,s){var o,u,h,l,f,d,c,p,_=new ae(this._pt,t,e,0,1,te,null,n),m=0,g=0;for(_.b=r,_.e=i,r+="",(c=~(i+="").indexOf("random("))&&(i=fb(i)),a&&(a(p=[r,i],t,e),r=p[0],i=p[1]),u=r.match(it)||[];o=it.exec(i);)l=o[0],f=i.substring(m,o.index),h?h=(h+1)%5:"rgba("===f.substr(-5)&&(h=1),l!==u[g++]&&(d=parseFloat(u[g-1])||0,_._pt={_next:_._pt,p:f||1===g?f:",",s:d,c:"="===l.charAt(1)?parseFloat(l.substr(2))*("-"===l.charAt(0)?-1:1):parseFloat(l)-d,m:h&&h<4?Math.round:0},m=it.lastIndex);return _.c=m<i.length?i.substring(m,i.length):"",_.fp=s,(nt.test(i)||c)&&(_.e=0),this._pt=_}.call(this,t,e,d,i,c,u||Y.stringFilter,h)):(l=new ae(this._pt,t,e,+d||0,i-(d||0),"boolean"==typeof f?Ht:Zt,0,c),h&&(l.fp=h),s&&l.modifier(s,this,t),this._pt=l)},Ut=function _initTween(e,r){var i,n,a,s,o,u,h,l,f,d,c,p,m,g=e.vars,v=g.ease,y=g.startAt,b=g.immediateRender,T=g.lazy,w=g.onUpdate,x=g.onUpdateParams,O=g.callbackScope,P=g.runBackwards,k=g.yoyoEase,M=g.keyframes,A=g.autoRevert,C=e._dur,S=e._startAt,D=e._targets,z=e.parent,I=z&&"nested"===z.data?z.parent._targets:D,E="auto"===e._overwrite&&!F,B=e.timeline;if(!B||M&&v||(v="none"),e._ease=Ft(v,L.ease),e._yEase=k?Bt(Ft(!0===k?v:k,L.ease)):0,k&&e._yoyo&&!e._repeat&&(k=e._yEase,e._yEase=e._ease,e._ease=k),e._from=!B&&!!g.runBackwards,!B){if(p=(l=D[0]?_(D[0]).harness:0)&&g[l.prop],i=ma(g,ut),S&&S.render(-1,!0).kill(),y)if(ra(e._startAt=Qt.set(D,ia({data:"isStart",overwrite:!1,parent:z,immediateRender:!0,lazy:t(T),startAt:null,delay:0,onUpdate:w,onUpdateParams:x,callbackScope:O,stagger:0},y))),r<0&&!b&&!A&&e._startAt.render(-1,!0),b){if(0<r&&!A&&(e._startAt=0),C&&r<=0)return void(r&&(e._zTime=r))}else!1===A&&(e._startAt=0);else if(P&&C)if(S)A||(e._startAt=0);else if(r&&(b=!1),a=ia({overwrite:!1,data:"isFromStart",lazy:b&&t(T),immediateRender:b,stagger:0,parent:z},i),p&&(a[l.prop]=p),ra(e._startAt=Qt.set(D,a)),r<0&&e._startAt.render(-1,!0),b){if(!r)return}else _initTween(e._startAt,U);for(e._pt=0,T=C&&t(T)||T&&!C,n=0;n<D.length;n++){if(h=(o=D[n])._gsap||$(D)[n]._gsap,e._ptLookup[n]=d={},lt[h.id]&&ht.length&&ea(),c=I===D?n:I.indexOf(o),l&&!1!==(f=new l).init(o,p||i,e,c,I)&&(e._pt=s=new ae(e._pt,o,f.name,0,1,f.render,f,0,f.priority),f._props.forEach(function(t){d[t]=s}),f.priority&&(u=1)),!l||p)for(a in i)ft[a]&&(f=Sb(a,i,e,c,o,I))?f.priority&&(u=1):d[a]=s=Xt.call(e,o,a,"get",i[a],c,I,0,g.stringFilter);e._op&&e._op[n]&&e.kill(o,e._op[n]),E&&e._pt&&(Yt=e,R.killTweensOf(o,d,e.globalTime(0)),m=!e.parent,Yt=0),e._pt&&T&&(lt[h.id]=1)}u&&ne(e),e._onInit&&e._onInit(e)}e._onUpdate=w,e._initted=(!e._op||e._pt)&&!m},Vt=function _parseFuncOrString(t,e,r,i,n){return p(t)?t.call(e,r,i,n):o(t)&&~t.indexOf("random(")?fb(t):t},jt=_t+"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase",Wt=(jt+",id,stagger,delay,duration,paused,scrollTrigger").split(","),Qt=function(C){function Tween(e,r,i,n){var a;"number"==typeof r&&(i.duration=r,r=i,i=null);var o,u,h,l,f,d,c,p,_=(a=C.call(this,n?r:na(r))||this).vars,m=_.duration,g=_.delay,y=_.immediateRender,b=_.stagger,T=_.overwrite,w=_.keyframes,x=_.defaults,P=_.scrollTrigger,k=_.yoyoEase,M=r.parent||R,A=(H(e)||Z(e)?q(e[0]):"length"in r)?[e]:xt(e);if(a._targets=A.length?$(A):O("GSAP target "+e+" not found. https://greensock.com",!Y.nullTargetWarn)||[],a._ptLookup=[],a._overwrite=T,w||b||v(m)||v(g)){if(r=a.vars,(o=a.timeline=new qt({data:"nested",defaults:x||{}})).kill(),o.parent=o._dp=_assertThisInitialized(a),o._start=0,w)ia(o.vars.defaults,{ease:"none"}),b?A.forEach(function(r,i){return w.forEach(function(t,e){return o.to(r,t,e?">":i*b)})}):w.forEach(function(t){return o.to(A,t,">")});else{if(l=A.length,c=b?Xa(b):Q,s(b))for(f in b)~jt.indexOf(f)&&((p=p||{})[f]=b[f]);for(u=0;u<l;u++){for(f in h={},r)Wt.indexOf(f)<0&&(h[f]=r[f]);h.stagger=0,k&&(h.yoyoEase=k),p&&mt(h,p),d=A[u],h.duration=+Vt(m,_assertThisInitialized(a),u,d,A),h.delay=(+Vt(g,_assertThisInitialized(a),u,d,A)||0)-a._delay,!b&&1===l&&h.delay&&(a._delay=g=h.delay,a._start+=g,h.delay=0),o.to(d,h,c(u,d,A))}o.duration()?m=g=0:a.timeline=0}m||a.duration(m=o.duration())}else a.timeline=0;return!0!==T||F||(Yt=_assertThisInitialized(a),R.killTweensOf(A),Yt=0),Ba(M,_assertThisInitialized(a),i),r.reversed&&a.reverse(),r.paused&&a.paused(!0),(y||!m&&!w&&a._start===ca(M._time)&&t(y)&&function _hasNoPausedAncestors(t){return!t||t._ts&&_hasNoPausedAncestors(t.parent)}(_assertThisInitialized(a))&&"nested"!==M.data)&&(a._tTime=-U,a.render(Math.max(0,-g))),P&&Ca(_assertThisInitialized(a),P),a}_inheritsLoose(Tween,C);var e=Tween.prototype;return e.render=function render(t,e,r){var i,n,a,s,o,u,h,l,f,d=this._time,c=this._tDur,p=this._dur,_=c-U<t&&0<=t?c:t<U?0:t;if(p){if(_!==this._tTime||!t||r||!this._initted&&this._tTime||this._startAt&&this._zTime<0!=t<0){if(i=_,l=this.timeline,this._repeat){if(s=p+this._rDelay,this._repeat<-1&&t<0)return this.totalTime(100*s+t,e,r);if(i=ca(_%s),_===c?(a=this._repeat,i=p):((a=~~(_/s))&&a===_/s&&(i=p,a--),p<i&&(i=p)),(u=this._yoyo&&1&a)&&(f=this._yEase,i=p-i),o=gt(this._tTime,s),i===d&&!r&&this._initted)return this;a!==o&&(l&&this._yEase&&Gb(l,u),!this.vars.repeatRefresh||u||this._lock||(this._lock=r=1,this.render(ca(s*a),!0).invalidate()._lock=0))}if(!this._initted){if(Da(this,t<0?t:i,r,e))return this._tTime=0,this;if(p!==this._dur)return this.render(t,e,r)}if(this._tTime=_,this._time=i,!this._act&&this._ts&&(this._act=1,this._lazy=0),this.ratio=h=(f||this._ease)(i/p),this._from&&(this.ratio=h=1-h),i&&!d&&!e&&(Pt(this,"onStart"),this._tTime!==_))return this;for(n=this._pt;n;)n.r(h,n.d),n=n._next;l&&l.render(t<0?t:!i&&u?-U:l._dur*h,e,r)||this._startAt&&(this._zTime=t),this._onUpdate&&!e&&(t<0&&this._startAt&&this._startAt.render(t,!0,r),Pt(this,"onUpdate")),this._repeat&&a!==o&&this.vars.onRepeat&&!e&&this.parent&&Pt(this,"onRepeat"),_!==this._tDur&&_||this._tTime!==_||(t<0&&this._startAt&&!this._onUpdate&&this._startAt.render(t,!0,!0),!t&&p||!(_===this._tDur&&0<this._ts||!_&&this._ts<0)||ra(this,1),e||t<0&&!d||!_&&!d||(Pt(this,_===c?"onComplete":"onReverseComplete",!0),!this._prom||_<c&&0<this.timeScale()||this._prom()))}}else!function _renderZeroDurationTween(t,e,r,i){var n,a,s,o=t.ratio,u=e<0||!e&&(!t._start&&function _parentPlayheadIsBeforeStart(t){var e=t.parent;return e&&e._ts&&e._initted&&!e._lock&&(e.rawTime()<0||_parentPlayheadIsBeforeStart(e))}(t)&&(t._initted||!vt(t))||(t._ts<0||t._dp._ts<0)&&!vt(t))?0:1,h=t._rDelay,l=0;if(h&&t._repeat&&(l=Tt(0,t._tDur,e),a=gt(l,h),s=gt(t._tTime,h),t._yoyo&&1&a&&(u=1-u),a!==s&&(o=1-u,t.vars.repeatRefresh&&t._initted&&t.invalidate())),u!==o||i||t._zTime===U||!e&&t._zTime){if(!t._initted&&Da(t,e,i,r))return;for(s=t._zTime,t._zTime=e||(r?U:0),r=r||e&&!s,t.ratio=u,t._from&&(u=1-u),t._time=0,t._tTime=l,n=t._pt;n;)n.r(u,n.d),n=n._next;t._startAt&&e<0&&t._startAt.render(e,!0,!0),t._onUpdate&&!r&&Pt(t,"onUpdate"),l&&t._repeat&&!r&&t.parent&&Pt(t,"onRepeat"),(e>=t._tDur||e<0)&&t.ratio===u&&(u&&ra(t,1),r||(Pt(t,u?"onComplete":"onReverseComplete",!0),t._prom&&t._prom()))}else t._zTime||(t._zTime=e)}(this,t,e,r);return this},e.targets=function targets(){return this._targets},e.invalidate=function invalidate(){return this._pt=this._op=this._startAt=this._onUpdate=this._lazy=this.ratio=0,this._ptLookup=[],this.timeline&&this.timeline.invalidate(),C.prototype.invalidate.call(this)},e.kill=function kill(t,e){if(void 0===e&&(e="all"),!(t||e&&"all"!==e))return this._lazy=this._pt=0,this.parent?kb(this):this;if(this.timeline){var r=this.timeline.totalDuration();return this.timeline.killTweensOf(t,e,Yt&&!0!==Yt.vars.overwrite)._first||kb(this),this.parent&&r!==this.timeline.totalDuration()&&Ia(this,this._dur*this.timeline._tDur/r,0,1),this}var i,n,a,s,u,h,l,f=this._targets,d=t?xt(t):f,c=this._ptLookup,p=this._pt;if((!e||"all"===e)&&function _arraysMatch(t,e){for(var r=t.length,i=r===e.length;i&&r--&&t[r]===e[r];);return r<0}(f,d))return"all"===e&&(this._pt=0),kb(this);for(i=this._op=this._op||[],"all"!==e&&(o(e)&&(u={},ba(e,function(t){return u[t]=1}),e=u),e=function _addAliasesToVars(t,e){var r,i,n,a,s=t[0]?_(t[0]).harness:0,o=s&&s.aliases;if(!o)return e;for(i in r=mt({},e),o)if(i in r)for(n=(a=o[i].split(",")).length;n--;)r[a[n]]=r[i];return r}(f,e)),l=f.length;l--;)if(~d.indexOf(f[l]))for(u in n=c[l],"all"===e?(i[l]=e,s=n,a={}):(a=i[l]=i[l]||{},s=e),s)(h=n&&n[u])&&("kill"in h.d&&!0!==h.d.kill(u)||qa(this,h,"_pt"),delete n[u]),"all"!==a&&(a[u]=1);return this._initted&&!this._pt&&p&&kb(this),this},Tween.to=function to(t,e,r){return new Tween(t,e,r)},Tween.from=function from(t,e){return Ma(1,arguments)},Tween.delayedCall=function delayedCall(t,e,r,i){return new Tween(e,0,{immediateRender:!1,lazy:!1,overwrite:!1,delay:t,onComplete:e,onReverseComplete:e,onCompleteParams:r,onReverseCompleteParams:r,callbackScope:i})},Tween.fromTo=function fromTo(t,e,r){return Ma(2,arguments)},Tween.set=function set(t,e){return e.duration=0,e.repeatDelay||(e.repeat=0),new Tween(t,e)},Tween.killTweensOf=function killTweensOf(t,e,r){return R.killTweensOf(t,e,r)},Tween}(Nt);ia(Qt.prototype,{_targets:[],_lazy:0,_startAt:0,_op:0,_onInit:0}),ba("staggerTo,staggerFrom,staggerFromTo",function(r){Qt[r]=function(){var t=new qt,e=wt.call(arguments,0);return e.splice("staggerFromTo"===r?5:4,0,0),t[r].apply(t,e)}});function bc(t,e,r){return t.setAttribute(e,r)}function jc(t,e,r,i){i.mSet(t,e,i.m.call(i.tween,r,i.mt),i)}var Gt=function _setterPlain(t,e,r){return t[e]=r},Kt=function _setterFunc(t,e,r){return t[e](r)},$t=function _setterFuncWithParam(t,e,r,i){return t[e](i.fp,r)},Jt=function _getSetter(t,e){return p(t[e])?Kt:r(t[e])&&t.setAttribute?bc:Gt},Zt=function _renderPlain(t,e){return e.set(e.t,e.p,Math.round(1e6*(e.s+e.c*t))/1e6,e)},Ht=function _renderBoolean(t,e){return e.set(e.t,e.p,!!(e.s+e.c*t),e)},te=function _renderComplexString(t,e){var r=e._pt,i="";if(!t&&e.b)i=e.b;else if(1===t&&e.e)i=e.e;else{for(;r;)i=r.p+(r.m?r.m(r.s+r.c*t):Math.round(1e4*(r.s+r.c*t))/1e4)+i,r=r._next;i+=e.c}e.set(e.t,e.p,i,e)},ee=function _renderPropTweens(t,e){for(var r=e._pt;r;)r.r(t,r.d),r=r._next},re=function _addPluginModifier(t,e,r,i){for(var n,a=this._pt;a;)n=a._next,a.p===i&&a.modifier(t,e,r),a=n},ie=function _killPropTweensOf(t){for(var e,r,i=this._pt;i;)r=i._next,i.p===t&&!i.op||i.op===t?qa(this,i,"_pt"):i.dep||(e=1),i=r;return!e},ne=function _sortPropTweensByPriority(t){for(var e,r,i,n,a=t._pt;a;){for(e=a._next,r=i;r&&r.pr>a.pr;)r=r._next;(a._prev=r?r._prev:n)?a._prev._next=a:i=a,(a._next=r)?r._prev=a:n=a,a=e}t._pt=i},ae=(PropTween.prototype.modifier=function modifier(t,e,r){this.mSet=this.mSet||this.set,this.set=jc,this.m=t,this.mt=r,this.tween=e},PropTween);function PropTween(t,e,r,i,n,a,s,o,u){this.t=e,this.s=i,this.c=n,this.p=r,this.r=a||Zt,this.d=s||this,this.set=o||Gt,this.pr=u||0,(this._next=t)&&(t._prev=this)}ba(_t+"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger",function(t){return ut[t]=1}),ot.TweenMax=ot.TweenLite=Qt,ot.TimelineLite=ot.TimelineMax=qt,R=new qt({sortChildren:!1,defaults:L,autoRemoveChildren:!0,id:"root",smoothChildTiming:!0}),Y.stringFilter=vb;var se={registerPlugin:function registerPlugin(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];e.forEach(function(t){return function _createPlugin(t){var e=(t=!t.name&&t.default||t).name,r=p(t),i=e&&!r&&t.init?function(){this._props=[]}:t,n={init:Q,render:ee,add:Xt,kill:ie,modifier:re,rawVars:0},a={targetTest:0,get:0,getSetter:Jt,aliases:{},register:0};if(Dt(),t!==i){if(ft[e])return;ia(i,ia(ma(t,n),a)),mt(i.prototype,mt(n,ma(t,a))),ft[i.prop=e]=i,t.targetTest&&(pt.push(i),ut[e]=1),e=("css"===e?"CSS":e.charAt(0).toUpperCase()+e.substr(1))+"Plugin"}P(e,i),t.register&&t.register(oe,i,ae)}(t)})},timeline:function timeline(t){return new qt(t)},getTweensOf:function getTweensOf(t,e){return R.getTweensOf(t,e)},getProperty:function getProperty(i,t,e,r){o(i)&&(i=xt(i)[0]);var n=_(i||{}).get,a=e?ha:ga;return"native"===e&&(e=""),i?t?a((ft[t]&&ft[t].get||n)(i,t,e,r)):function(t,e,r){return a((ft[t]&&ft[t].get||n)(i,t,e,r))}:i},quickSetter:function quickSetter(r,e,i){if(1<(r=xt(r)).length){var n=r.map(function(t){return oe.quickSetter(t,e,i)}),a=n.length;return function(t){for(var e=a;e--;)n[e](t)}}r=r[0]||{};var s=ft[e],o=_(r),u=o.harness&&(o.harness.aliases||{})[e]||e,h=s?function(t){var e=new s;d._pt=0,e.init(r,i?t+i:t,d,0,[r]),e.render(1,e),d._pt&&ee(1,d)}:o.set(r,u);return s?h:function(t){return h(r,u,i?t+i:t,o,1)}},isTweening:function isTweening(t){return 0<R.getTweensOf(t,!0).length},defaults:function defaults(t){return t&&t.ease&&(t.ease=Ft(t.ease,L.ease)),la(L,t||{})},config:function config(t){return la(Y,t||{})},registerEffect:function registerEffect(t){var i=t.name,n=t.effect,e=t.plugins,a=t.defaults,r=t.extendTimeline;(e||"").split(",").forEach(function(t){return t&&!ft[t]&&!ot[t]&&O(i+" effect requires "+t+" plugin.")}),dt[i]=function(t,e,r){return n(xt(t),ia(e||{},a),r)},r&&(qt.prototype[i]=function(t,e,r){return this.add(dt[i](t,s(e)?e:(r=e)&&{},this),r)})},registerEase:function registerEase(t,e){zt[t]=Ft(e)},parseEase:function parseEase(t,e){return arguments.length?Ft(t,e):zt},getById:function getById(t){return R.getById(t)},exportRoot:function exportRoot(e,r){void 0===e&&(e={});var i,n,a=new qt(e);for(a.smoothChildTiming=t(e.smoothChildTiming),R.remove(a),a._dp=0,a._time=a._tTime=R._time,i=R._first;i;)n=i._next,!r&&!i._dur&&i instanceof Qt&&i.vars.onComplete===i._targets[0]||Ba(a,i,i._start-i._delay),i=n;return Ba(R,a,0),a},utils:{wrap:function wrap(e,t,r){var i=t-e;return H(e)?cb(e,wrap(0,e.length),t):Na(r,function(t){return(i+(t-e)%i)%i+e})},wrapYoyo:function wrapYoyo(e,t,r){var i=t-e,n=2*i;return H(e)?cb(e,wrapYoyo(0,e.length-1),t):Na(r,function(t){return e+(i<(t=(n+(t-e)%n)%n||0)?n-t:t)})},distribute:Xa,random:$a,snap:Za,normalize:function normalize(t,e,r){return Ot(t,e,0,1,r)},getUnit:Pa,clamp:function clamp(e,r,t){return Na(t,function(t){return Tt(e,r,t)})},splitColor:qb,toArray:xt,selector:function selector(r){return r=xt(r)[0]||O("Invalid scope")||{},function(t){var e=r.current||r.nativeElement||r;return xt(t,e.querySelectorAll?e:e===r?O("Invalid scope")||a.createElement("div"):r)}},mapRange:Ot,pipe:function pipe(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return function(t){return e.reduce(function(t,e){return e(t)},t)}},unitize:function unitize(e,r){return function(t){return e(parseFloat(t))+(r||Pa(t))}},interpolate:function interpolate(e,r,t,i){var n=isNaN(e+r)?0:function(t){return(1-t)*e+t*r};if(!n){var a,s,u,h,l,f=o(e),d={};if(!0===t&&(i=1)&&(t=null),f)e={p:e},r={p:r};else if(H(e)&&!H(r)){for(u=[],h=e.length,l=h-2,s=1;s<h;s++)u.push(interpolate(e[s-1],e[s]));h--,n=function func(t){t*=h;var e=Math.min(l,~~t);return u[e](t-e)},t=r}else i||(e=mt(H(e)?[]:{},e));if(!u){for(a in r)Xt.call(d,e,a,"get",r[a]);n=function func(t){return ee(t,d)||(f?e.p:e)}}}return Na(t,n)},shuffle:Wa},install:M,effects:dt,ticker:St,updateRoot:qt.updateRoot,plugins:ft,globalTimeline:R,core:{PropTween:ae,globals:P,Tween:Qt,Timeline:qt,Animation:Nt,getCache:_,_removeLinkedListItem:qa,suppressOverwrites:function suppressOverwrites(t){return F=t}}};ba("to,from,fromTo,delayedCall,set,killTweensOf",function(t){return se[t]=Qt[t]}),St.add(qt.updateRoot),d=se.to({},{duration:0});function nc(t,e){for(var r=t._pt;r&&r.p!==e&&r.op!==e&&r.fp!==e;)r=r._next;return r}function pc(t,n){return{name:t,rawVars:1,init:function init(t,i,e){e._onInit=function(t){var e,r;if(o(i)&&(e={},ba(i,function(t){return e[t]=1}),i=e),n){for(r in e={},i)e[r]=n(i[r]);i=e}!function _addModifiers(t,e){var r,i,n,a=t._targets;for(r in e)for(i=a.length;i--;)(n=(n=t._ptLookup[i][r])&&n.d)&&(n._pt&&(n=nc(n,r)),n&&n.modifier&&n.modifier(e[r],t,a[i],r))}(t,i)}}}}var oe=se.registerPlugin({name:"attr",init:function init(t,e,r,i,n){var a,s;for(a in e)(s=this.add(t,"setAttribute",(t.getAttribute(a)||0)+"",e[a],i,n,0,0,a))&&(s.op=a),this._props.push(a)}},{name:"endArray",init:function init(t,e){for(var r=e.length;r--;)this.add(t,r,t[r]||0,e[r])}},pc("roundProps",Ya),pc("modifiers"),pc("snap",Za))||se;Qt.version=qt.version=oe.version="3.7.1",l=1,u()&&Dt();function $c(t,e){return e.set(e.t,e.p,Math.round(1e4*(e.s+e.c*t))/1e4+e.u,e)}function _c(t,e){return e.set(e.t,e.p,1===t?e.e:Math.round(1e4*(e.s+e.c*t))/1e4+e.u,e)}function ad(t,e){return e.set(e.t,e.p,t?Math.round(1e4*(e.s+e.c*t))/1e4+e.u:e.b,e)}function bd(t,e){var r=e.s+e.c*t;e.set(e.t,e.p,~~(r+(r<0?-.5:.5))+e.u,e)}function cd(t,e){return e.set(e.t,e.p,t?e.e:e.b,e)}function dd(t,e){return e.set(e.t,e.p,1!==t?e.b:e.e,e)}function ed(t,e,r){return t.style[e]=r}function fd(t,e,r){return t.style.setProperty(e,r)}function gd(t,e,r){return t._gsap[e]=r}function hd(t,e,r){return t._gsap.scaleX=t._gsap.scaleY=r}function id(t,e,r,i,n){var a=t._gsap;a.scaleX=a.scaleY=r,a.renderTransform(n,a)}function jd(t,e,r,i,n){var a=t._gsap;a[e]=r,a.renderTransform(n,a)}function nd(t,e){var r=he.createElementNS?he.createElementNS((e||"http://www.w3.org/1999/xhtml").replace(/^https/,"http"),t):he.createElement(t);return r.style?r:he.createElement(t)}function od(t,e,r){var i=getComputedStyle(t);return i[e]||i.getPropertyValue(e.replace(Re,"-$1").toLowerCase())||i.getPropertyValue(e)||!r&&od(t,Ve(e)||e,1)||""}function rd(){(function _windowExists(){return"undefined"!=typeof window})()&&window.document&&(ue=window,he=ue.document,le=he.documentElement,de=nd("div")||{style:{}},nd("div"),Ye=Ve(Ye),Xe=Ye+"Origin",de.style.cssText="border-width:0;line-height:0;position:absolute;padding:0",pe=!!Ve("perspective"),fe=1)}function sd(t){var e,r=nd("svg",this.ownerSVGElement&&this.ownerSVGElement.getAttribute("xmlns")||"http://www.w3.org/2000/svg"),i=this.parentNode,n=this.nextSibling,a=this.style.cssText;if(le.appendChild(r),r.appendChild(this),this.style.display="block",t)try{e=this.getBBox(),this._gsapBBox=this.getBBox,this.getBBox=sd}catch(t){}else this._gsapBBox&&(e=this._gsapBBox());return i&&(n?i.insertBefore(this,n):i.appendChild(this)),le.removeChild(r),this.style.cssText=a,e}function td(t,e){for(var r=e.length;r--;)if(t.hasAttribute(e[r]))return t.getAttribute(e[r])}function ud(e){var r;try{r=e.getBBox()}catch(t){r=sd.call(e,!0)}return r&&(r.width||r.height)||e.getBBox===sd||(r=sd.call(e,!0)),!r||r.width||r.x||r.y?r:{x:+td(e,["x","cx","x1"])||0,y:+td(e,["y","cy","y1"])||0,width:0,height:0}}function vd(t){return!(!t.getCTM||t.parentNode&&!t.ownerSVGElement||!ud(t))}function wd(t,e){if(e){var r=t.style;e in Ie&&e!==Xe&&(e=Ye),r.removeProperty?("ms"!==e.substr(0,2)&&"webkit"!==e.substr(0,6)||(e="-"+e),r.removeProperty(e.replace(Re,"-$1").toLowerCase())):r.removeAttribute(e)}}function xd(t,e,r,i,n,a){var s=new ae(t._pt,e,r,0,1,a?dd:cd);return(t._pt=s).b=i,s.e=n,t._props.push(r),s}function zd(t,e,r,i){var n,a,s,o,u=parseFloat(r)||0,h=(r+"").trim().substr((u+"").length)||"px",l=de.style,f=Le.test(e),d="svg"===t.tagName.toLowerCase(),c=(d?"client":"offset")+(f?"Width":"Height"),p="px"===i,m="%"===i;return i===h||!u||je[i]||je[h]?u:("px"===h||p||(u=zd(t,e,r,"px")),o=t.getCTM&&vd(t),!m&&"%"!==h||!Ie[e]&&!~e.indexOf("adius")?(l[f?"width":"height"]=100+(p?h:i),a=~e.indexOf("adius")||"em"===i&&t.appendChild&&!d?t:t.parentNode,o&&(a=(t.ownerSVGElement||{}).parentNode),a&&a!==he&&a.appendChild||(a=he.body),(s=a._gsap)&&m&&s.width&&f&&s.time===St.time?ca(u/s.width*100):(!m&&"%"!==h||(l.position=od(t,"position")),a===t&&(l.position="static"),a.appendChild(de),n=de[c],a.removeChild(de),l.position="absolute",f&&m&&((s=_(a)).time=St.time,s.width=a[c]),ca(p?n*u/100:n&&u?100/n*u:0))):(n=o?t.getBBox()[f?"width":"height"]:t[c],ca(m?u/n*100:u/100*n)))}function Ad(t,e,r,i){var n;return fe||rd(),e in qe&&"transform"!==e&&~(e=qe[e]).indexOf(",")&&(e=e.split(",")[0]),Ie[e]&&"transform"!==e?(n=$e(t,i),n="transformOrigin"!==e?n[e]:n.svg?n.origin:Je(od(t,Xe))+" "+n.zOrigin+"px"):(n=t.style[e])&&"auto"!==n&&!i&&!~(n+"").indexOf("calc(")||(n=Qe[e]&&Qe[e](t,e,r)||od(t,e)||aa(t,e)||("opacity"===e?1:0)),r&&!~(n+"").trim().indexOf(" ")?zd(t,e,n,r)+r:n}function Bd(t,e,r,i){if(!r||"none"===r){var n=Ve(e,t,1),a=n&&od(t,n,1);a&&a!==r?(e=n,r=a):"borderColor"===e&&(r=od(t,"borderTopColor"))}var s,o,u,h,l,f,d,c,p,_,m,g,v=new ae(this._pt,t.style,e,0,1,te),y=0,b=0;if(v.b=r,v.e=i,r+="","auto"===(i+="")&&(t.style[e]=i,i=od(t,e)||i,t.style[e]=r),vb(s=[r,i]),i=s[1],u=(r=s[0]).match(rt)||[],(i.match(rt)||[]).length){for(;o=rt.exec(i);)d=o[0],p=i.substring(y,o.index),l?l=(l+1)%5:"rgba("!==p.substr(-5)&&"hsla("!==p.substr(-5)||(l=1),d!==(f=u[b++]||"")&&(h=parseFloat(f)||0,m=f.substr((h+"").length),(g="="===d.charAt(1)?+(d.charAt(0)+"1"):0)&&(d=d.substr(2)),c=parseFloat(d),_=d.substr((c+"").length),y=rt.lastIndex-_.length,_||(_=_||Y.units[e]||m,y===i.length&&(i+=_,v.e+=_)),m!==_&&(h=zd(t,e,f,_)||0),v._pt={_next:v._pt,p:p||1===b?p:",",s:h,c:g?g*c:c-h,m:l&&l<4||"zIndex"===e?Math.round:0});v.c=y<i.length?i.substring(y,i.length):""}else v.r="display"===e&&"none"===i?dd:cd;return nt.test(i)&&(v.e=0),this._pt=v}function Dd(t){var e=t.split(" "),r=e[0],i=e[1]||"50%";return"top"!==r&&"bottom"!==r&&"left"!==i&&"right"!==i||(t=r,r=i,i=t),e[0]=We[r]||r,e[1]=We[i]||i,e.join(" ")}function Ed(t,e){if(e.tween&&e.tween._time===e.tween._dur){var r,i,n,a=e.t,s=a.style,o=e.u,u=a._gsap;if("all"===o||!0===o)s.cssText="",i=1;else for(n=(o=o.split(",")).length;-1<--n;)r=o[n],Ie[r]&&(i=1,r="transformOrigin"===r?Xe:Ye),wd(a,r);i&&(wd(a,Ye),u&&(u.svg&&a.removeAttribute("transform"),$e(a,1),u.uncache=1))}}function Id(t){return"matrix(1, 0, 0, 1, 0, 0)"===t||"none"===t||!t}function Jd(t){var e=od(t,Ye);return Id(e)?Ge:e.substr(7).match(et).map(ca)}function Kd(t,e){var r,i,n,a,s=t._gsap||_(t),o=t.style,u=Jd(t);return s.svg&&t.getAttribute("transform")?"1,0,0,1,0,0"===(u=[(n=t.transform.baseVal.consolidate().matrix).a,n.b,n.c,n.d,n.e,n.f]).join(",")?Ge:u:(u!==Ge||t.offsetParent||t===le||s.svg||(n=o.display,o.display="block",(r=t.parentNode)&&t.offsetParent||(a=1,i=t.nextSibling,le.appendChild(t)),u=Jd(t),n?o.display=n:wd(t,"display"),a&&(i?r.insertBefore(t,i):r?r.appendChild(t):le.removeChild(t))),e&&6<u.length?[u[0],u[1],u[4],u[5],u[12],u[13]]:u)}function Ld(t,e,r,i,n,a){var s,o,u,h=t._gsap,l=n||Kd(t,!0),f=h.xOrigin||0,d=h.yOrigin||0,c=h.xOffset||0,p=h.yOffset||0,_=l[0],m=l[1],g=l[2],v=l[3],y=l[4],b=l[5],T=e.split(" "),w=parseFloat(T[0])||0,x=parseFloat(T[1])||0;r?l!==Ge&&(o=_*v-m*g)&&(u=w*(-m/o)+x*(_/o)-(_*b-m*y)/o,w=w*(v/o)+x*(-g/o)+(g*b-v*y)/o,x=u):(w=(s=ud(t)).x+(~T[0].indexOf("%")?w/100*s.width:w),x=s.y+(~(T[1]||T[0]).indexOf("%")?x/100*s.height:x)),i||!1!==i&&h.smooth?(y=w-f,b=x-d,h.xOffset=c+(y*_+b*g)-y,h.yOffset=p+(y*m+b*v)-b):h.xOffset=h.yOffset=0,h.xOrigin=w,h.yOrigin=x,h.smooth=!!i,h.origin=e,h.originIsAbsolute=!!r,t.style[Xe]="0px 0px",a&&(xd(a,h,"xOrigin",f,w),xd(a,h,"yOrigin",d,x),xd(a,h,"xOffset",c,h.xOffset),xd(a,h,"yOffset",p,h.yOffset)),t.setAttribute("data-svg-origin",w+" "+x)}function Od(t,e,r){var i=Pa(e);return ca(parseFloat(e)+parseFloat(zd(t,"x",r+"px",i)))+i}function Vd(t,e,r,i,n,a){var s,u,h=360,l=o(n),f=parseFloat(n)*(l&&~n.indexOf("rad")?Ee:1),d=a?f*a:f-i,c=i+d+"deg";return l&&("short"===(s=n.split("_")[1])&&(d%=h)!==d%180&&(d+=d<0?h:-h),"cw"===s&&d<0?d=(d+36e9)%h-~~(d/h)*h:"ccw"===s&&0<d&&(d=(d-36e9)%h-~~(d/h)*h)),t._pt=u=new ae(t._pt,e,r,i,d,_c),u.e=c,u.u="deg",t._props.push(r),u}function Wd(t,e){for(var r in e)t[r]=e[r];return t}function Xd(t,e,r){var i,n,a,s,o,u,h,l=Wd({},r._gsap),f=r.style;for(n in l.svg?(a=r.getAttribute("transform"),r.setAttribute("transform",""),f[Ye]=e,i=$e(r,1),wd(r,Ye),r.setAttribute("transform",a)):(a=getComputedStyle(r)[Ye],f[Ye]=e,i=$e(r,1),f[Ye]=a),Ie)(a=l[n])!==(s=i[n])&&"perspective,force3D,transformOrigin,svgOrigin".indexOf(n)<0&&(o=Pa(a)!==(h=Pa(s))?zd(r,n,a,h):parseFloat(a),u=parseFloat(s),t._pt=new ae(t._pt,i,n,o,u-o,$c),t._pt.u=h||0,t._props.push(n));Wd(i,l)}var ue,he,le,fe,de,ce,pe,_e=zt.Power0,me=zt.Power1,ge=zt.Power2,ve=zt.Power3,ye=zt.Power4,be=zt.Linear,Te=zt.Quad,we=zt.Cubic,xe=zt.Quart,Oe=zt.Quint,Pe=zt.Strong,ke=zt.Elastic,Me=zt.Back,Ae=zt.SteppedEase,Ce=zt.Bounce,Se=zt.Sine,De=zt.Expo,ze=zt.Circ,Ie={},Ee=180/Math.PI,Be=Math.PI/180,Fe=Math.atan2,Re=/([A-Z])/g,Le=/(?:left|right|width|margin|padding|x)/i,Ne=/[\s,\(]\S/,qe={autoAlpha:"opacity,visibility",scale:"scaleX,scaleY",alpha:"opacity"},Ye="transform",Xe=Ye+"Origin",Ue="O,Moz,ms,Ms,Webkit".split(","),Ve=function _checkPropPrefix(t,e,r){var i=(e||de).style,n=5;if(t in i&&!r)return t;for(t=t.charAt(0).toUpperCase()+t.substr(1);n--&&!(Ue[n]+t in i););return n<0?null:(3===n?"ms":0<=n?Ue[n]:"")+t},je={deg:1,rad:1,turn:1},We={top:"0%",bottom:"100%",left:"0%",right:"100%",center:"50%"},Qe={clearProps:function clearProps(t,e,r,i,n){if("isFromStart"!==n.data){var a=t._pt=new ae(t._pt,e,r,0,0,Ed);return a.u=i,a.pr=-10,a.tween=n,t._props.push(r),1}}},Ge=[1,0,0,1,0,0],Ke={},$e=function _parseTransform(t,e){var r=t._gsap||new Lt(t);if("x"in r&&!e&&!r.uncache)return r;var i,n,a,s,o,u,h,l,f,d,c,p,_,m,g,v,y,b,T,w,x,O,P,k,M,A,C,S,D,z,I,E,B=t.style,F=r.scaleX<0,R="deg",L=od(t,Xe)||"0";return i=n=a=u=h=l=f=d=c=0,s=o=1,r.svg=!(!t.getCTM||!vd(t)),m=Kd(t,r.svg),r.svg&&(k=(!r.uncache||"0px 0px"===L)&&!e&&t.getAttribute("data-svg-origin"),Ld(t,k||L,!!k||r.originIsAbsolute,!1!==r.smooth,m)),p=r.xOrigin||0,_=r.yOrigin||0,m!==Ge&&(b=m[0],T=m[1],w=m[2],x=m[3],i=O=m[4],n=P=m[5],6===m.length?(s=Math.sqrt(b*b+T*T),o=Math.sqrt(x*x+w*w),u=b||T?Fe(T,b)*Ee:0,(f=w||x?Fe(w,x)*Ee+u:0)&&(o*=Math.abs(Math.cos(f*Be))),r.svg&&(i-=p-(p*b+_*w),n-=_-(p*T+_*x))):(E=m[6],z=m[7],C=m[8],S=m[9],D=m[10],I=m[11],i=m[12],n=m[13],a=m[14],h=(g=Fe(E,D))*Ee,g&&(k=O*(v=Math.cos(-g))+C*(y=Math.sin(-g)),M=P*v+S*y,A=E*v+D*y,C=O*-y+C*v,S=P*-y+S*v,D=E*-y+D*v,I=z*-y+I*v,O=k,P=M,E=A),l=(g=Fe(-w,D))*Ee,g&&(v=Math.cos(-g),I=x*(y=Math.sin(-g))+I*v,b=k=b*v-C*y,T=M=T*v-S*y,w=A=w*v-D*y),u=(g=Fe(T,b))*Ee,g&&(k=b*(v=Math.cos(g))+T*(y=Math.sin(g)),M=O*v+P*y,T=T*v-b*y,P=P*v-O*y,b=k,O=M),h&&359.9<Math.abs(h)+Math.abs(u)&&(h=u=0,l=180-l),s=ca(Math.sqrt(b*b+T*T+w*w)),o=ca(Math.sqrt(P*P+E*E)),g=Fe(O,P),f=2e-4<Math.abs(g)?g*Ee:0,c=I?1/(I<0?-I:I):0),r.svg&&(k=t.getAttribute("transform"),r.forceCSS=t.setAttribute("transform","")||!Id(od(t,Ye)),k&&t.setAttribute("transform",k))),90<Math.abs(f)&&Math.abs(f)<270&&(F?(s*=-1,f+=u<=0?180:-180,u+=u<=0?180:-180):(o*=-1,f+=f<=0?180:-180)),r.x=i-((r.xPercent=i&&(r.xPercent||(Math.round(t.offsetWidth/2)===Math.round(-i)?-50:0)))?t.offsetWidth*r.xPercent/100:0)+"px",r.y=n-((r.yPercent=n&&(r.yPercent||(Math.round(t.offsetHeight/2)===Math.round(-n)?-50:0)))?t.offsetHeight*r.yPercent/100:0)+"px",r.z=a+"px",r.scaleX=ca(s),r.scaleY=ca(o),r.rotation=ca(u)+R,r.rotationX=ca(h)+R,r.rotationY=ca(l)+R,r.skewX=f+R,r.skewY=d+R,r.transformPerspective=c+"px",(r.zOrigin=parseFloat(L.split(" ")[2])||0)&&(B[Xe]=Je(L)),r.xOffset=r.yOffset=0,r.force3D=Y.force3D,r.renderTransform=r.svg?ir:pe?rr:Ze,r.uncache=0,r},Je=function _firstTwoOnly(t){return(t=t.split(" "))[0]+" "+t[1]},Ze=function _renderNon3DTransforms(t,e){e.z="0px",e.rotationY=e.rotationX="0deg",e.force3D=0,rr(t,e)},He="0deg",tr="0px",er=") ",rr=function _renderCSSTransforms(t,e){var r=e||this,i=r.xPercent,n=r.yPercent,a=r.x,s=r.y,o=r.z,u=r.rotation,h=r.rotationY,l=r.rotationX,f=r.skewX,d=r.skewY,c=r.scaleX,p=r.scaleY,_=r.transformPerspective,m=r.force3D,g=r.target,v=r.zOrigin,y="",b="auto"===m&&t&&1!==t||!0===m;if(v&&(l!==He||h!==He)){var T,w=parseFloat(h)*Be,x=Math.sin(w),O=Math.cos(w);w=parseFloat(l)*Be,T=Math.cos(w),a=Od(g,a,x*T*-v),s=Od(g,s,-Math.sin(w)*-v),o=Od(g,o,O*T*-v+v)}_!==tr&&(y+="perspective("+_+er),(i||n)&&(y+="translate("+i+"%, "+n+"%) "),!b&&a===tr&&s===tr&&o===tr||(y+=o!==tr||b?"translate3d("+a+", "+s+", "+o+") ":"translate("+a+", "+s+er),u!==He&&(y+="rotate("+u+er),h!==He&&(y+="rotateY("+h+er),l!==He&&(y+="rotateX("+l+er),f===He&&d===He||(y+="skew("+f+", "+d+er),1===c&&1===p||(y+="scale("+c+", "+p+er),g.style[Ye]=y||"translate(0, 0)"},ir=function _renderSVGTransforms(t,e){var r,i,n,a,s,o=e||this,u=o.xPercent,h=o.yPercent,l=o.x,f=o.y,d=o.rotation,c=o.skewX,p=o.skewY,_=o.scaleX,m=o.scaleY,g=o.target,v=o.xOrigin,y=o.yOrigin,b=o.xOffset,T=o.yOffset,w=o.forceCSS,x=parseFloat(l),O=parseFloat(f);d=parseFloat(d),c=parseFloat(c),(p=parseFloat(p))&&(c+=p=parseFloat(p),d+=p),d||c?(d*=Be,c*=Be,r=Math.cos(d)*_,i=Math.sin(d)*_,n=Math.sin(d-c)*-m,a=Math.cos(d-c)*m,c&&(p*=Be,s=Math.tan(c-p),n*=s=Math.sqrt(1+s*s),a*=s,p&&(s=Math.tan(p),r*=s=Math.sqrt(1+s*s),i*=s)),r=ca(r),i=ca(i),n=ca(n),a=ca(a)):(r=_,a=m,i=n=0),(x&&!~(l+"").indexOf("px")||O&&!~(f+"").indexOf("px"))&&(x=zd(g,"x",l,"px"),O=zd(g,"y",f,"px")),(v||y||b||T)&&(x=ca(x+v-(v*r+y*n)+b),O=ca(O+y-(v*i+y*a)+T)),(u||h)&&(s=g.getBBox(),x=ca(x+u/100*s.width),O=ca(O+h/100*s.height)),s="matrix("+r+","+i+","+n+","+a+","+x+","+O+")",g.setAttribute("transform",s),w&&(g.style[Ye]=s)};ba("padding,margin,Width,Radius",function(e,r){var t="Right",i="Bottom",n="Left",o=(r<3?["Top",t,i,n]:["Top"+n,"Top"+t,i+t,i+n]).map(function(t){return r<2?e+t:"border"+t+e});Qe[1<r?"border"+e:e]=function(e,t,r,i,n){var a,s;if(arguments.length<4)return a=o.map(function(t){return Ad(e,t,r)}),5===(s=a.join(" ")).split(a[0]).length?a[0]:s;a=(i+"").split(" "),s={},o.forEach(function(t,e){return s[t]=a[e]=a[e]||a[(e-1)/2|0]}),e.init(t,s,n)}});var nr,ar,sr,or={name:"css",register:rd,targetTest:function targetTest(t){return t.style&&t.nodeType},init:function init(t,e,r,i,n){var a,s,o,u,h,l,f,d,c,p,_,m,g,v,y,b=this._props,T=t.style,w=r.vars.startAt;for(f in fe||rd(),e)if("autoRound"!==f&&(s=e[f],!ft[f]||!Sb(f,e,r,i,t,n)))if(h=typeof s,l=Qe[f],"function"===h&&(h=typeof(s=s.call(r,i,t,n))),"string"===h&&~s.indexOf("random(")&&(s=fb(s)),l)l(this,t,f,s,r)&&(y=1);else if("--"===f.substr(0,2))a=(getComputedStyle(t).getPropertyValue(f)+"").trim(),s+="",At.lastIndex=0,At.test(a)||(d=Pa(a),c=Pa(s)),c?d!==c&&(a=zd(t,f,a,c)+c):d&&(s+=d),this.add(T,"setProperty",a,s,i,n,0,0,f),b.push(f);else if("undefined"!==h){if(w&&f in w?(a="function"==typeof w[f]?w[f].call(r,i,t,n):w[f],f in Y.units&&!Pa(a)&&(a+=Y.units[f]),"="===(a+"").charAt(1)&&(a=Ad(t,f))):a=Ad(t,f),u=parseFloat(a),(p="string"===h&&"="===s.charAt(1)?+(s.charAt(0)+"1"):0)&&(s=s.substr(2)),o=parseFloat(s),f in qe&&("autoAlpha"===f&&(1===u&&"hidden"===Ad(t,"visibility")&&o&&(u=0),xd(this,T,"visibility",u?"inherit":"hidden",o?"inherit":"hidden",!o)),"scale"!==f&&"transform"!==f&&~(f=qe[f]).indexOf(",")&&(f=f.split(",")[0])),_=f in Ie)if(m||((g=t._gsap).renderTransform&&!e.parseTransform||$e(t,e.parseTransform),v=!1!==e.smoothOrigin&&g.smooth,(m=this._pt=new ae(this._pt,T,Ye,0,1,g.renderTransform,g,0,-1)).dep=1),"scale"===f)this._pt=new ae(this._pt,g,"scaleY",g.scaleY,(p?p*o:o-g.scaleY)||0),b.push("scaleY",f),f+="X";else{if("transformOrigin"===f){s=Dd(s),g.svg?Ld(t,s,0,v,0,this):((c=parseFloat(s.split(" ")[2])||0)!==g.zOrigin&&xd(this,g,"zOrigin",g.zOrigin,c),xd(this,T,f,Je(a),Je(s)));continue}if("svgOrigin"===f){Ld(t,s,1,v,0,this);continue}if(f in Ke){Vd(this,g,f,u,s,p);continue}if("smoothOrigin"===f){xd(this,g,"smooth",g.smooth,s);continue}if("force3D"===f){g[f]=s;continue}if("transform"===f){Xd(this,s,t);continue}}else f in T||(f=Ve(f)||f);if(_||(o||0===o)&&(u||0===u)&&!Ne.test(s)&&f in T)o=o||0,(d=(a+"").substr((u+"").length))!==(c=Pa(s)||(f in Y.units?Y.units[f]:d))&&(u=zd(t,f,a,c)),this._pt=new ae(this._pt,_?g:T,f,u,p?p*o:o-u,_||"px"!==c&&"zIndex"!==f||!1===e.autoRound?$c:bd),this._pt.u=c||0,d!==c&&(this._pt.b=a,this._pt.r=ad);else if(f in T)Bd.call(this,t,f,a,s);else{if(!(f in t)){N(f,s);continue}this.add(t,f,a||t[f],s,i,n)}b.push(f)}y&&ne(this)},get:Ad,aliases:qe,getSetter:function getSetter(t,e,i){var n=qe[e];return n&&n.indexOf(",")<0&&(e=n),e in Ie&&e!==Xe&&(t._gsap.x||Ad(t,"x"))?i&&ce===i?"scale"===e?hd:gd:(ce=i||{})&&("scale"===e?id:jd):t.style&&!r(t.style[e])?ed:~e.indexOf("-")?fd:Jt(t,e)},core:{_removeProperty:wd,_getMatrix:Kd}};oe.utils.checkPrefix=Ve,sr=ba((nr="x,y,z,scale,scaleX,scaleY,xPercent,yPercent")+","+(ar="rotation,rotationX,rotationY,skewX,skewY")+",transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective",function(t){Ie[t]=1}),ba(ar,function(t){Y.units[t]="deg",Ke[t]=1}),qe[sr[13]]=nr+","+ar,ba("0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY",function(t){var e=t.split(":");qe[e[1]]=sr[e[0]]}),ba("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective",function(t){Y.units[t]="px"}),oe.registerPlugin(or);var ur=oe.registerPlugin(or)||oe,hr=ur.core.Tween;e.Back=Me,e.Bounce=Ce,e.CSSPlugin=or,e.Circ=ze,e.Cubic=we,e.Elastic=ke,e.Expo=De,e.Linear=be,e.Power0=_e,e.Power1=me,e.Power2=ge,e.Power3=ve,e.Power4=ye,e.Quad=Te,e.Quart=xe,e.Quint=Oe,e.Sine=Se,e.SteppedEase=Ae,e.Strong=Pe,e.TimelineLite=qt,e.TimelineMax=qt,e.TweenLite=Qt,e.TweenMax=hr,e.default=ur,e.gsap=ur;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});
11
+
lib/gsap/gsap.min.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"file":"gsap.min.js","sources":["../src/gsap-core.js","../src/CSSPlugin.js","../src/index.js"],"sourcesContent":["/*!\n * GSAP 3.7.1\n * https://greensock.com\n *\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n/* eslint-disable */\n\nlet _config = {\n\t\tautoSleep: 120,\n\t\tforce3D: \"auto\",\n\t\tnullTargetWarn: 1,\n\t\tunits: {lineHeight:\"\"}\n\t},\n\t_defaults = {\n\t\tduration: .5,\n\t\toverwrite: false,\n\t\tdelay: 0\n\t},\n\t_suppressOverwrites,\n\t_bigNum = 1e8,\n\t_tinyNum = 1 / _bigNum,\n\t_2PI = Math.PI * 2,\n\t_HALF_PI = _2PI / 4,\n\t_gsID = 0,\n\t_sqrt = Math.sqrt,\n\t_cos = Math.cos,\n\t_sin = Math.sin,\n\t_isString = value => typeof(value) === \"string\",\n\t_isFunction = value => typeof(value) === \"function\",\n\t_isNumber = value => typeof(value) === \"number\",\n\t_isUndefined = value => typeof(value) === \"undefined\",\n\t_isObject = value => typeof(value) === \"object\",\n\t_isNotFalse = value => value !== false,\n\t_windowExists = () => typeof(window) !== \"undefined\",\n\t_isFuncOrString = value => _isFunction(value) || _isString(value),\n\t_isTypedArray = (typeof ArrayBuffer === \"function\" && ArrayBuffer.isView) || function() {}, // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().\n\t_isArray = Array.isArray,\n\t_strictNumExp = /(?:-?\\.?\\d|\\.)+/gi, //only numbers (including negatives and decimals) but NOT relative values.\n\t_numExp = /[-+=.]*\\d+[.e\\-+]*\\d*[e\\-+]*\\d*/g, //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\n\t_numWithUnitExp = /[-+=.]*\\d+[.e-]*\\d*[a-z%]*/g,\n\t_complexStringNumExp = /[-+=.]*\\d+\\.?\\d*(?:e-|e\\+)?\\d*/gi, //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.\n\t_relExp = /[+-]=-?[.\\d]+/,\n\t_delimitedValueExp = /[^,'\"\\[\\]\\s]+/gi, // previously /[#\\-+.]*\\b[a-z\\d\\-=+%.]+/gi but didn't catch special characters.\n\t_unitExp = /[\\d.+\\-=]+(?:e[-+]\\d*)*/i,\n\t_globalTimeline, _win, _coreInitted, _doc,\n\t_globals = {},\n\t_installScope = {},\n\t_coreReady,\n\t_install = scope => (_installScope = _merge(scope, _globals)) && gsap,\n\t_missingPlugin = (property, value) => console.warn(\"Invalid property\", property, \"set to\", value, \"Missing plugin? gsap.registerPlugin()\"),\n\t_warn = (message, suppress) => !suppress && console.warn(message),\n\t_addGlobal = (name, obj) => (name && (_globals[name] = obj) && (_installScope && (_installScope[name] = obj))) || _globals,\n\t_emptyFunc = () => 0,\n\t_reservedProps = {},\n\t_lazyTweens = [],\n\t_lazyLookup = {},\n\t_lastRenderedFrame,\n\t_plugins = {},\n\t_effects = {},\n\t_nextGCFrame = 30,\n\t_harnessPlugins = [],\n\t_callbackNames = \"\",\n\t_harness = targets => {\n\t\tlet target = targets[0],\n\t\t\tharnessPlugin, i;\n\t\t_isObject(target) || _isFunction(target) || (targets = [targets]);\n\t\tif (!(harnessPlugin = (target._gsap || {}).harness)) { // find the first target with a harness. We assume targets passed into an animation will be of similar type, meaning the same kind of harness can be used for them all (performance optimization)\n\t\t\ti = _harnessPlugins.length;\n\t\t\twhile (i-- && !_harnessPlugins[i].targetTest(target)) {\t}\n\t\t\tharnessPlugin = _harnessPlugins[i];\n\t\t}\n\t\ti = targets.length;\n\t\twhile (i--) {\n\t\t\t(targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin)))) || targets.splice(i, 1);\n\t\t}\n\t\treturn targets;\n\t},\n\t_getCache = target => target._gsap || _harness(toArray(target))[0]._gsap,\n\t_getProperty = (target, property, v) => (v = target[property]) && _isFunction(v) ? target[property]() : (_isUndefined(v) && target.getAttribute && target.getAttribute(property)) || v,\n\t_forEachName = (names, func) => ((names = names.split(\",\")).forEach(func)) || names, //split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).\n\t_round = value => Math.round(value * 100000) / 100000 || 0,\n\t_arrayContainsAny = (toSearch, toFind) => { //searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.\n\t\tlet l = toFind.length,\n\t\t\ti = 0;\n\t\tfor (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) { }\n\t\treturn (i < l);\n\t},\n\t_lazyRender = () => {\n\t\tlet l = _lazyTweens.length,\n\t\t\ta = _lazyTweens.slice(0),\n\t\t\ti, tween;\n\t\t_lazyLookup = {};\n\t\t_lazyTweens.length = 0;\n\t\tfor (i = 0; i < l; i++) {\n\t\t\ttween = a[i];\n\t\t\ttween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);\n\t\t}\n\t},\n\t_lazySafeRender = (animation, time, suppressEvents, force) => {\n\t\t_lazyTweens.length && _lazyRender();\n\t\tanimation.render(time, suppressEvents, force);\n\t\t_lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.\n\t},\n\t_numericIfPossible = value => {\n\t\tlet n = parseFloat(value);\n\t\treturn (n || n === 0) && (value + \"\").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;\n\t},\n\t_passThrough = p => p,\n\t_setDefaults = (obj, defaults) => {\n\t\tfor (let p in defaults) {\n\t\t\t(p in obj) || (obj[p] = defaults[p]);\n\t\t}\n\t\treturn obj;\n\t},\n\t_setKeyframeDefaults = (obj, defaults) => {\n\t\tfor (let p in defaults) {\n\t\t\t(p in obj) || p === \"duration\" || p === \"ease\" || (obj[p] = defaults[p]);\n\t\t}\n\t},\n\t_merge = (base, toMerge) => {\n\t\tfor (let p in toMerge) {\n\t\t\tbase[p] = toMerge[p];\n\t\t}\n\t\treturn base;\n\t},\n\t_mergeDeep = (base, toMerge) => {\n\t\tfor (let p in toMerge) {\n\t\t\tp !== \"__proto__\" && p !== \"constructor\" && p !== \"prototype\" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);\n\t\t}\n\t\treturn base;\n\t},\n\t_copyExcluding = (obj, excluding) => {\n\t\tlet copy = {},\n\t\t\tp;\n\t\tfor (p in obj) {\n\t\t\t(p in excluding) || (copy[p] = obj[p]);\n\t\t}\n\t\treturn copy;\n\t},\n\t_inheritDefaults = vars => {\n\t\tlet parent = vars.parent || _globalTimeline,\n\t\t\tfunc = vars.keyframes ? _setKeyframeDefaults : _setDefaults;\n\t\tif (_isNotFalse(vars.inherit)) {\n\t\t\twhile (parent) {\n\t\t\t\tfunc(vars, parent.vars.defaults);\n\t\t\t\tparent = parent.parent || parent._dp;\n\t\t\t}\n\t\t}\n\t\treturn vars;\n\t},\n\t_arraysMatch = (a1, a2) => {\n\t\tlet i = a1.length,\n\t\t\tmatch = i === a2.length;\n\t\twhile (match && i-- && a1[i] === a2[i]) { }\n\t\treturn i < 0;\n\t},\n\t_addLinkedListItem = (parent, child, firstProp = \"_first\", lastProp = \"_last\", sortBy) => {\n\t\tlet prev = parent[lastProp],\n\t\t\tt;\n\t\tif (sortBy) {\n\t\t\tt = child[sortBy];\n\t\t\twhile (prev && prev[sortBy] > t) {\n\t\t\t\tprev = prev._prev;\n\t\t\t}\n\t\t}\n\t\tif (prev) {\n\t\t\tchild._next = prev._next;\n\t\t\tprev._next = child;\n\t\t} else {\n\t\t\tchild._next = parent[firstProp];\n\t\t\tparent[firstProp] = child;\n\t\t}\n\t\tif (child._next) {\n\t\t\tchild._next._prev = child;\n\t\t} else {\n\t\t\tparent[lastProp] = child;\n\t\t}\n\t\tchild._prev = prev;\n\t\tchild.parent = child._dp = parent;\n\t\treturn child;\n\t},\n\t_removeLinkedListItem = (parent, child, firstProp = \"_first\", lastProp = \"_last\") => {\n\t\tlet prev = child._prev,\n\t\t\tnext = child._next;\n\t\tif (prev) {\n\t\t\tprev._next = next;\n\t\t} else if (parent[firstProp] === child) {\n\t\t\tparent[firstProp] = next;\n\t\t}\n\t\tif (next) {\n\t\t\tnext._prev = prev;\n\t\t} else if (parent[lastProp] === child) {\n\t\t\tparent[lastProp] = prev;\n\t\t}\n\t\tchild._next = child._prev = child.parent = null; // don't delete the _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.\n\t},\n\t_removeFromParent = (child, onlyIfParentHasAutoRemove) => {\n\t\tchild.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove(child);\n\t\tchild._act = 0;\n\t},\n\t_uncache = (animation, child) => {\n\t\tif (animation && (!child || child._end > animation._dur || child._start < 0)) { // performance optimization: if a child animation is passed in we should only uncache if that child EXTENDS the animation (its end time is beyond the end)\n\t\t\tlet a = animation;\n\t\t\twhile (a) {\n\t\t\t\ta._dirty = 1;\n\t\t\t\ta = a.parent;\n\t\t\t}\n\t\t}\n\t\treturn animation;\n\t},\n\t_recacheAncestors = animation => {\n\t\tlet parent = animation.parent;\n\t\twhile (parent && parent.parent) { //sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.\n\t\t\tparent._dirty = 1;\n\t\t\tparent.totalDuration();\n\t\t\tparent = parent.parent;\n\t\t}\n\t\treturn animation;\n\t},\n\t_hasNoPausedAncestors = animation => !animation || (animation._ts && _hasNoPausedAncestors(animation.parent)),\n\t_elapsedCycleDuration = animation => animation._repeat ? _animationCycle(animation._tTime, (animation = animation.duration() + animation._rDelay)) * animation : 0,\n\t// feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.\n\t_animationCycle = (tTime, cycleDuration) => {\n\t\tlet whole = Math.floor(tTime /= cycleDuration);\n\t\treturn tTime && (whole === tTime) ? whole - 1 : whole;\n\t},\n\t_parentToChildTotalTime = (parentTime, child) => (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : (child._dirty ? child.totalDuration() : child._tDur)),\n\t_setEnd = animation => (animation._end = _round(animation._start + ((animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum)) || 0))),\n\t_alignPlayhead = (animation, totalTime) => { // adjusts the animation's _start and _end according to the provided totalTime (only if the parent's smoothChildTiming is true and the animation isn't paused). It doesn't do any rendering or forcing things back into parent timelines, etc. - that's what totalTime() is for.\n\t\tlet parent = animation._dp;\n\t\tif (parent && parent.smoothChildTiming && animation._ts) {\n\t\t\tanimation._start = _round(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));\n\t\t\t_setEnd(animation);\n\t\t\tparent._dirty || _uncache(parent, animation); //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.\n\t\t}\n\t\treturn animation;\n\t},\n\t/*\n\t_totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {\n\t\tlet cycleDuration = duration + repeatDelay,\n\t\t\ttime = _round(clampedTotalTime % cycleDuration);\n\t\tif (time > duration) {\n\t\t\ttime = duration;\n\t\t}\n\t\treturn (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;\n\t},\n\t*/\n\t_postAddChecks = (timeline, child) => {\n\t\tlet t;\n\t\tif (child._time || (child._initted && !child._dur)) { //in case, for example, the _start is moved on a tween that has already rendered. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning.\n\t\t\tt = _parentToChildTotalTime(timeline.rawTime(), child);\n\t\t\tif (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {\n\t\t\t\tchild.render(t, true);\n\t\t\t}\n\t\t}\n\t\t//if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.\n\t\tif (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {\n\t\t\t//in case any of the ancestors had completed but should now be enabled...\n\t\t\tif (timeline._dur < timeline.duration()) {\n\t\t\t\tt = timeline;\n\t\t\t\twhile (t._dp) {\n\t\t\t\t\t(t.rawTime() >= 0) && t.totalTime(t._tTime); //moves the timeline (shifts its startTime) if necessary, and also enables it. If it's currently zero, though, it may not be scheduled to render until later so there's no need to force it to align with the current playhead position. Only move to catch up with the playhead.\n\t\t\t\t\tt = t._dp;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttimeline._zTime = -_tinyNum; // helps ensure that the next render() will be forced (crossingStart = true in render()), even if the duration hasn't changed (we're adding a child which would need to get rendered). Definitely an edge case. Note: we MUST do this AFTER the loop above where the totalTime() might trigger a render() because this _addToTimeline() method gets called from the Animation constructor, BEFORE tweens even record their targets, etc. so we wouldn't want things to get triggered in the wrong order.\n\t\t}\n\t},\n\t_addToTimeline = (timeline, child, position, skipChecks) => {\n\t\tchild.parent && _removeFromParent(child);\n\t\tchild._start = _round((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);\n\t\tchild._end = _round(child._start + ((child.totalDuration() / Math.abs(child.timeScale())) || 0));\n\t\t_addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n\t\t_isFromOrFromStart(child) || (timeline._recent = child);\n\t\tskipChecks || _postAddChecks(timeline, child);\n\t\treturn timeline;\n\t},\n\t_scrollTrigger = (animation, trigger) => (_globals.ScrollTrigger || _missingPlugin(\"scrollTrigger\", trigger)) && _globals.ScrollTrigger.create(trigger, animation),\n\t_attemptInitTween = (tween, totalTime, force, suppressEvents) => {\n\t\t_initTween(tween, totalTime);\n\t\tif (!tween._initted) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!force && tween._pt && ((tween._dur && tween.vars.lazy !== false) || (!tween._dur && tween.vars.lazy)) && _lastRenderedFrame !== _ticker.frame) {\n\t\t\t_lazyTweens.push(tween);\n\t\t\ttween._lazy = [totalTime, suppressEvents];\n\t\t\treturn 1;\n\t\t}\n\t},\n\t_parentPlayheadIsBeforeStart = ({parent}) => parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent)), // check parent's _lock because when a timeline repeats/yoyos and does its artificial wrapping, we shouldn't force the ratio back to 0\n\t_isFromOrFromStart = ({data}) => data === \"isFromStart\" || data === \"isStart\",\n\t_renderZeroDurationTween = (tween, totalTime, suppressEvents, force) => {\n\t\tlet prevRatio = tween.ratio,\n\t\t\tratio = totalTime < 0 || (!totalTime && ((!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween))) || ((tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)))) ? 0 : 1, // if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0. Edge case: if a from() or fromTo() stagger tween is placed later in a timeline, the \"startAt\" zero-duration tween could initially render at a time when the parent timeline's playhead is technically BEFORE where this tween is, so make sure that any \"from\" and \"fromTo\" startAt tweens are rendered the first time at a ratio of 1.\n\t\t\trepeatDelay = tween._rDelay,\n\t\t\ttTime = 0,\n\t\t\tpt, iteration, prevIteration;\n\t\tif (repeatDelay && tween._repeat) { // in case there's a zero-duration tween that has a repeat with a repeatDelay\n\t\t\ttTime = _clamp(0, tween._tDur, totalTime);\n\t\t\titeration = _animationCycle(tTime, repeatDelay);\n\t\t\tprevIteration = _animationCycle(tween._tTime, repeatDelay);\n\t\t\ttween._yoyo && (iteration & 1) && (ratio = 1 - ratio);\n\t\t\tif (iteration !== prevIteration) {\n\t\t\t\tprevRatio = 1 - ratio;\n\t\t\t\ttween.vars.repeatRefresh && tween._initted && tween.invalidate();\n\t\t\t}\n\t\t}\n\t\tif (ratio !== prevRatio || force || tween._zTime === _tinyNum || (!totalTime && tween._zTime)) {\n\t\t\tif (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents)) { // if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tprevIteration = tween._zTime;\n\t\t\ttween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); // when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\t\t\tsuppressEvents || (suppressEvents = totalTime && !prevIteration); // if it was rendered previously at exactly 0 (_zTime) and now the playhead is moving away, DON'T fire callbacks otherwise they'll seem like duplicates.\n\t\t\ttween.ratio = ratio;\n\t\t\ttween._from && (ratio = 1 - ratio);\n\t\t\ttween._time = 0;\n\t\t\ttween._tTime = tTime;\n\t\t\tpt = tween._pt;\n\t\t\twhile (pt) {\n\t\t\t\tpt.r(ratio, pt.d);\n\t\t\t\tpt = pt._next;\n\t\t\t}\n\t\t\ttween._startAt && totalTime < 0 && tween._startAt.render(totalTime, true, true);\n\t\t\ttween._onUpdate && !suppressEvents && _callback(tween, \"onUpdate\");\n\t\t\ttTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, \"onRepeat\");\n\t\t\tif ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {\n\t\t\t\tratio && _removeFromParent(tween, 1);\n\t\t\t\tif (!suppressEvents) {\n\t\t\t\t\t_callback(tween, (ratio ? \"onComplete\" : \"onReverseComplete\"), true);\n\t\t\t\t\ttween._prom && tween._prom();\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!tween._zTime) {\n\t\t\ttween._zTime = totalTime;\n\t\t}\n\t},\n\t_findNextPauseTween = (animation, prevTime, time) => {\n\t\tlet child;\n\t\tif (time > prevTime) {\n\t\t\tchild = animation._first;\n\t\t\twhile (child && child._start <= time) {\n\t\t\t\tif (!child._dur && child.data === \"isPause\" && child._start > prevTime) {\n\t\t\t\t\treturn child;\n\t\t\t\t}\n\t\t\t\tchild = child._next;\n\t\t\t}\n\t\t} else {\n\t\t\tchild = animation._last;\n\t\t\twhile (child && child._start >= time) {\n\t\t\t\tif (!child._dur && child.data === \"isPause\" && child._start < prevTime) {\n\t\t\t\t\treturn child;\n\t\t\t\t}\n\t\t\t\tchild = child._prev;\n\t\t\t}\n\t\t}\n\t},\n\t_setDuration = (animation, duration, skipUncache, leavePlayhead) => {\n\t\tlet repeat = animation._repeat,\n\t\t\tdur = _round(duration) || 0,\n\t\t\ttotalProgress = animation._tTime / animation._tDur;\n\t\ttotalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);\n\t\tanimation._dur = dur;\n\t\tanimation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _round(dur * (repeat + 1) + (animation._rDelay * repeat));\n\t\ttotalProgress && !leavePlayhead ? _alignPlayhead(animation, (animation._tTime = animation._tDur * totalProgress)) : animation.parent && _setEnd(animation);\n\t\tskipUncache || _uncache(animation.parent, animation);\n\t\treturn animation;\n\t},\n\t_onUpdateTotalDuration = animation => (animation instanceof Timeline) ? _uncache(animation) : _setDuration(animation, animation._dur),\n\t_zeroPosition = {_start:0, endTime:_emptyFunc, totalDuration:_emptyFunc},\n\t_parsePosition = (animation, position, percentAnimation) => {\n\t\tlet labels = animation.labels,\n\t\t\trecent = animation._recent || _zeroPosition,\n\t\t\tclippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur, //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.\n\t\t\ti, offset, isPercent;\n\t\tif (_isString(position) && (isNaN(position) || (position in labels))) { //if the string is a number like \"1\", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).\n\t\t\toffset = position.charAt(0);\n\t\t\tisPercent = position.substr(-1) === \"%\";\n\t\t\ti = position.indexOf(\"=\");\n\t\t\tif (offset === \"<\" || offset === \">\") {\n\t\t\t\ti >= 0 && (position = position.replace(/=/, \"\"));\n\t\t\t\treturn (offset === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);\n\t\t\t}\n\t\t\tif (i < 0) {\n\t\t\t\t(position in labels) || (labels[position] = clippedDuration);\n\t\t\t\treturn labels[position];\n\t\t\t}\n\t\t\toffset = parseFloat(position.charAt(i-1) + position.substr(i+1));\n\t\t\tif (isPercent && percentAnimation) {\n\t\t\t\toffset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();\n\t\t\t}\n\t\t\treturn (i > 1) ? _parsePosition(animation, position.substr(0, i-1), percentAnimation) + offset : clippedDuration + offset;\n\t\t}\n\t\treturn (position == null) ? clippedDuration : +position;\n\t},\n\t_createTweenType = (type, params, timeline) => {\n\t\tlet isLegacy = _isNumber(params[1]),\n\t\t\tvarsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n\t\t\tvars = params[varsIndex],\n\t\t\tirVars, parent;\n\t\tisLegacy && (vars.duration = params[1]);\n\t\tvars.parent = timeline;\n\t\tif (type) {\n\t\t\tirVars = vars;\n\t\t\tparent = timeline;\n\t\t\twhile (parent && !(\"immediateRender\" in irVars)) { // inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.\n\t\t\t\tirVars = parent.vars.defaults || {};\n\t\t\t\tparent = _isNotFalse(parent.vars.inherit) && parent.parent;\n\t\t\t}\n\t\t\tvars.immediateRender = _isNotFalse(irVars.immediateRender);\n\t\t\ttype < 2 ? (vars.runBackwards = 1) : (vars.startAt = params[varsIndex - 1]); // \"from\" vars\n\t\t}\n\t\treturn new Tween(params[0], vars, params[varsIndex + 1]);\n\t},\n\t_conditionalReturn = (value, func) => value || value === 0 ? func(value) : func,\n\t_clamp = (min, max, value) => value < min ? min : value > max ? max : value,\n\tgetUnit = value => {\n\t\tif (typeof(value) !== \"string\") {\n\t\t\treturn \"\";\n\t\t}\n\t\tlet v = _unitExp.exec(value);\n\t\treturn v ? value.substr(v.index + v[0].length) : \"\";\n\t}, // note: protect against padded numbers as strings, like \"100.100\". That shouldn't return \"00\" as the unit. If it's numeric, return no unit.\n\tclamp = (min, max, value) => _conditionalReturn(value, v => _clamp(min, max, v)),\n\t_slice = [].slice,\n\t_isArrayLike = (value, nonEmpty) => value && (_isObject(value) && \"length\" in value && ((!nonEmpty && !value.length) || ((value.length - 1) in value && _isObject(value[0]))) && !value.nodeType && value !== _win),\n\t_flatten = (ar, leaveStrings, accumulator = []) => ar.forEach(value => (_isString(value) && !leaveStrings) || _isArrayLike(value, 1) ? accumulator.push(...toArray(value)) : accumulator.push(value)) || accumulator,\n\t//takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.\n\ttoArray = (value, scope, leaveStrings) => _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [],\n\tselector = value => {\n\t\tvalue = toArray(value)[0] || _warn(\"Invalid scope\") || {};\n\t\treturn v => {\n\t\t\tlet el = value.current || value.nativeElement || value;\n\t\t\treturn toArray(v, el.querySelectorAll ? el : el === value ? _warn(\"Invalid scope\") || _doc.createElement(\"div\") : value);\n\t\t};\n\t},\n\tshuffle = a => a.sort(() => .5 - Math.random()), // alternative that's a bit faster and more reliably diverse but bigger: for (let j, v, i = a.length; i; j = Math.floor(Math.random() * i), v = a[--i], a[i] = a[j], a[j] = v); return a;\n\t//for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following\n\tdistribute = v => {\n\t\tif (_isFunction(v)) {\n\t\t\treturn v;\n\t\t}\n\t\tlet vars = _isObject(v) ? v : {each:v}, //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total \"amount\" that's chunked out among them all.\n\t\t\tease = _parseEase(vars.ease),\n\t\t\tfrom = vars.from || 0,\n\t\t\tbase = parseFloat(vars.base) || 0,\n\t\t\tcache = {},\n\t\t\tisDecimal = (from > 0 && from < 1),\n\t\t\tratios = isNaN(from) || isDecimal,\n\t\t\taxis = vars.axis,\n\t\t\tratioX = from,\n\t\t\tratioY = from;\n\t\tif (_isString(from)) {\n\t\t\tratioX = ratioY = {center:.5, edges:.5, end:1}[from] || 0;\n\t\t} else if (!isDecimal && ratios) {\n\t\t\tratioX = from[0];\n\t\t\tratioY = from[1];\n\t\t}\n\t\treturn (i, target, a) => {\n\t\t\tlet l = (a || vars).length,\n\t\t\t\tdistances = cache[l],\n\t\t\t\toriginX, originY, x, y, d, j, max, min, wrapAt;\n\t\t\tif (!distances) {\n\t\t\t\twrapAt = (vars.grid === \"auto\") ? 0 : (vars.grid || [1, _bigNum])[1];\n\t\t\t\tif (!wrapAt) {\n\t\t\t\t\tmax = -_bigNum;\n\t\t\t\t\twhile (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) { }\n\t\t\t\t\twrapAt--;\n\t\t\t\t}\n\t\t\t\tdistances = cache[l] = [];\n\t\t\t\toriginX = ratios ? (Math.min(wrapAt, l) * ratioX) - .5 : from % wrapAt;\n\t\t\t\toriginY = ratios ? l * ratioY / wrapAt - .5 : (from / wrapAt) | 0;\n\t\t\t\tmax = 0;\n\t\t\t\tmin = _bigNum;\n\t\t\t\tfor (j = 0; j < l; j++) {\n\t\t\t\t\tx = (j % wrapAt) - originX;\n\t\t\t\t\ty = originY - ((j / wrapAt) | 0);\n\t\t\t\t\tdistances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs((axis === \"y\") ? y : x);\n\t\t\t\t\t(d > max) && (max = d);\n\t\t\t\t\t(d < min) && (min = d);\n\t\t\t\t}\n\t\t\t\t(from === \"random\") && shuffle(distances);\n\t\t\t\tdistances.max = max - min;\n\t\t\t\tdistances.min = min;\n\t\t\t\tdistances.v = l = (parseFloat(vars.amount) || (parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === \"y\" ? l / wrapAt : wrapAt)) || 0) * (from === \"edges\" ? -1 : 1);\n\t\t\t\tdistances.b = (l < 0) ? base - l : base;\n\t\t\t\tdistances.u = getUnit(vars.amount || vars.each) || 0; //unit\n\t\t\t\tease = (ease && l < 0) ? _invertEase(ease) : ease;\n\t\t\t}\n\t\t\tl = ((distances[i] - distances.min) / distances.max) || 0;\n\t\t\treturn _round(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors\n\t\t};\n\t},\n\t_roundModifier = v => { //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.\n\t\tlet p = v < 1 ? Math.pow(10, (v + \"\").length - 2) : 1; //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed()\n\t\treturn raw => {\n\t\t\tlet n = Math.round(parseFloat(raw) / v) * v * p;\n\t\t\treturn (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw)); // n - n % 1 replaces Math.floor() in order to handle negative values properly. For example, Math.floor(-150.00000000000003) is 151!\n\t\t};\n\t},\n\tsnap = (snapTo, value) => {\n\t\tlet isArray = _isArray(snapTo),\n\t\t\tradius, is2D;\n\t\tif (!isArray && _isObject(snapTo)) {\n\t\t\tradius = isArray = snapTo.radius || _bigNum;\n\t\t\tif (snapTo.values) {\n\t\t\t\tsnapTo = toArray(snapTo.values);\n\t\t\t\tif ((is2D = !_isNumber(snapTo[0]))) {\n\t\t\t\t\tradius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsnapTo = _roundModifier(snapTo.increment);\n\t\t\t}\n\t\t}\n\t\treturn _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? raw => {is2D = snapTo(raw); return Math.abs(is2D - raw) <= radius ? is2D : raw; } : raw => {\n\t\t\tlet x = parseFloat(is2D ? raw.x : raw),\n\t\t\t\ty = parseFloat(is2D ? raw.y : 0),\n\t\t\t\tmin = _bigNum,\n\t\t\t\tclosest = 0,\n\t\t\t\ti = snapTo.length,\n\t\t\t\tdx, dy;\n\t\t\twhile (i--) {\n\t\t\t\tif (is2D) {\n\t\t\t\t\tdx = snapTo[i].x - x;\n\t\t\t\t\tdy = snapTo[i].y - y;\n\t\t\t\t\tdx = dx * dx + dy * dy;\n\t\t\t\t} else {\n\t\t\t\t\tdx = Math.abs(snapTo[i] - x);\n\t\t\t\t}\n\t\t\t\tif (dx < min) {\n\t\t\t\t\tmin = dx;\n\t\t\t\t\tclosest = i;\n\t\t\t\t}\n\t\t\t}\n\t\t\tclosest = (!radius || min <= radius) ? snapTo[closest] : raw;\n\t\t\treturn (is2D || closest === raw || _isNumber(raw)) ? closest : closest + getUnit(raw);\n\t\t});\n\t},\n\trandom = (min, max, roundingIncrement, returnFunction) => _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, () => _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? 10 ** ((roundingIncrement + \"\").length - 2) : 1) && (Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction)),\n\tpipe = (...functions) => value => functions.reduce((v, f) => f(v), value),\n\tunitize = (func, unit) => value => func(parseFloat(value)) + (unit || getUnit(value)),\n\tnormalize = (min, max, value) => mapRange(min, max, 0, 1, value),\n\t_wrapArray = (a, wrapper, value) => _conditionalReturn(value, index => a[~~wrapper(index)]),\n\twrap = function(min, max, value) { // NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).\n\t\tlet range = max - min;\n\t\treturn _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, value => ((range + (value - min) % range) % range) + min);\n\t},\n\twrapYoyo = (min, max, value) => {\n\t\tlet range = max - min,\n\t\t\ttotal = range * 2;\n\t\treturn _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, value => {\n\t\t\tvalue = (total + (value - min) % total) % total || 0;\n\t\t\treturn min + ((value > range) ? (total - value) : value);\n\t\t});\n\t},\n\t_replaceRandom = value => { //replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])\n\t\tlet prev = 0,\n\t\t\ts = \"\",\n\t\t\ti, nums, end, isArray;\n\t\twhile (~(i = value.indexOf(\"random(\", prev))) {\n\t\t\tend = value.indexOf(\")\", i);\n\t\t\tisArray = value.charAt(i + 7) === \"[\";\n\t\t\tnums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);\n\t\t\ts += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);\n\t\t\tprev = end + 1;\n\t\t}\n\t\treturn s + value.substr(prev, value.length - prev);\n\t},\n\tmapRange = (inMin, inMax, outMin, outMax, value) => {\n\t\tlet inRange = inMax - inMin,\n\t\t\toutRange = outMax - outMin;\n\t\treturn _conditionalReturn(value, value => outMin + ((((value - inMin) / inRange) * outRange) || 0));\n\t},\n\tinterpolate = (start, end, progress, mutate) => {\n\t\tlet func = isNaN(start + end) ? 0 : p => (1 - p) * start + p * end;\n\t\tif (!func) {\n\t\t\tlet isString = _isString(start),\n\t\t\t\tmaster = {},\n\t\t\t\tp, i, interpolators, l, il;\n\t\t\tprogress === true && (mutate = 1) && (progress = null);\n\t\t\tif (isString) {\n\t\t\t\tstart = {p: start};\n\t\t\t\tend = {p: end};\n\n\t\t\t} else if (_isArray(start) && !_isArray(end)) {\n\t\t\t\tinterpolators = [];\n\t\t\t\tl = start.length;\n\t\t\t\til = l - 2;\n\t\t\t\tfor (i = 1; i < l; i++) {\n\t\t\t\t\tinterpolators.push(interpolate(start[i-1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.\n\t\t\t\t}\n\t\t\t\tl--;\n\t\t\t\tfunc = p => {\n\t\t\t\t\tp *= l;\n\t\t\t\t\tlet i = Math.min(il, ~~p);\n\t\t\t\t\treturn interpolators[i](p - i);\n\t\t\t\t};\n\t\t\t\tprogress = end;\n\t\t\t} else if (!mutate) {\n\t\t\t\tstart = _merge(_isArray(start) ? [] : {}, start);\n\t\t\t}\n\t\t\tif (!interpolators) {\n\t\t\t\tfor (p in end) {\n\t\t\t\t\t_addPropTween.call(master, start, p, \"get\", end[p]);\n\t\t\t\t}\n\t\t\t\tfunc = p => _renderPropTweens(p, master) || (isString ? start.p : start);\n\t\t\t}\n\t\t}\n\t\treturn _conditionalReturn(progress, func);\n\t},\n\t_getLabelInDirection = (timeline, fromTime, backward) => { //used for nextLabel() and previousLabel()\n\t\tlet labels = timeline.labels,\n\t\t\tmin = _bigNum,\n\t\t\tp, distance, label;\n\t\tfor (p in labels) {\n\t\t\tdistance = labels[p] - fromTime;\n\t\t\tif ((distance < 0) === !!backward && distance && min > (distance = Math.abs(distance))) {\n\t\t\t\tlabel = p;\n\t\t\t\tmin = distance;\n\t\t\t}\n\t\t}\n\t\treturn label;\n\t},\n\t_callback = (animation, type, executeLazyFirst) => {\n\t\tlet v = animation.vars,\n\t\t\tcallback = v[type],\n\t\t\tparams, scope;\n\t\tif (!callback) {\n\t\t\treturn;\n\t\t}\n\t\tparams = v[type + \"Params\"];\n\t\tscope = v.callbackScope || animation;\n\t\texecuteLazyFirst && _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.\n\t\treturn params ? callback.apply(scope, params) : callback.call(scope);\n\t},\n\t_interrupt = animation => {\n\t\t_removeFromParent(animation);\n\t\tanimation.scrollTrigger && animation.scrollTrigger.kill(false);\n\t\tanimation.progress() < 1 && _callback(animation, \"onInterrupt\");\n\t\treturn animation;\n\t},\n\t_quickTween,\n\t_createPlugin = config => {\n\t\tconfig = !config.name && config.default || config; //UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.\n\t\tlet name = config.name,\n\t\t\tisFunc = _isFunction(config),\n\t\t\tPlugin = (name && !isFunc && config.init) ? function() { this._props = []; } : config, //in case someone passes in an object that's not a plugin, like CustomEase\n\t\t\tinstanceDefaults = {init:_emptyFunc, render:_renderPropTweens, add:_addPropTween, kill:_killPropTweensOf, modifier:_addPluginModifier, rawVars:0},\n\t\t\tstatics = {targetTest:0, get:0, getSetter:_getSetter, aliases:{}, register:0};\n\t\t_wake();\n\t\tif (config !== Plugin) {\n\t\t\tif (_plugins[name]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods\n\t\t\t_merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods\n\t\t\t_plugins[(Plugin.prop = name)] = Plugin;\n\t\t\tif (config.targetTest) {\n\t\t\t\t_harnessPlugins.push(Plugin);\n\t\t\t\t_reservedProps[name] = 1;\n\t\t\t}\n\t\t\tname = (name === \"css\" ? \"CSS\" : name.charAt(0).toUpperCase() + name.substr(1)) + \"Plugin\"; //for the global name. \"motionPath\" should become MotionPathPlugin\n\t\t}\n\t\t_addGlobal(name, Plugin);\n\t\tconfig.register && config.register(gsap, Plugin, PropTween);\n\t},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*\n * --------------------------------------------------------------------------------------\n * COLORS\n * --------------------------------------------------------------------------------------\n */\n\n\t_255 = 255,\n\t_colorLookup = {\n\t\taqua:[0,_255,_255],\n\t\tlime:[0,_255,0],\n\t\tsilver:[192,192,192],\n\t\tblack:[0,0,0],\n\t\tmaroon:[128,0,0],\n\t\tteal:[0,128,128],\n\t\tblue:[0,0,_255],\n\t\tnavy:[0,0,128],\n\t\twhite:[_255,_255,_255],\n\t\tolive:[128,128,0],\n\t\tyellow:[_255,_255,0],\n\t\torange:[_255,165,0],\n\t\tgray:[128,128,128],\n\t\tpurple:[128,0,128],\n\t\tgreen:[0,128,0],\n\t\tred:[_255,0,0],\n\t\tpink:[_255,192,203],\n\t\tcyan:[0,_255,_255],\n\t\ttransparent:[_255,_255,_255,0]\n\t},\n\t_hue = (h, m1, m2) => {\n\t\th = (h < 0) ? h + 1 : (h > 1) ? h - 1 : h;\n\t\treturn ((((h * 6 < 1) ? m1 + (m2 - m1) * h * 6 : (h < .5) ? m2 : (h * 3 < 2) ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255) + .5) | 0;\n\t},\n\tsplitColor = (v, toHSL, forceAlpha) => {\n\t\tlet a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, (v >> 8) & _255, v & _255] : 0,\n\t\t\tr, g, b, h, s, l, max, min, d, wasHSL;\n\t\tif (!a) {\n\t\t\tif (v.substr(-1) === \",\") { //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:\"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)\" - in this example \"blue,\" has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.\n\t\t\t\tv = v.substr(0, v.length - 1);\n\t\t\t}\n\t\t\tif (_colorLookup[v]) {\n\t\t\t\ta = _colorLookup[v];\n\t\t\t} else if (v.charAt(0) === \"#\") {\n\t\t\t\tif (v.length < 6) { //for shorthand like #9F0 or #9F0F (could have alpha)\n\t\t\t\t\tr = v.charAt(1);\n\t\t\t\t\tg = v.charAt(2);\n\t\t\t\t\tb = v.charAt(3);\n\t\t\t\t\tv = \"#\" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : \"\");\n\t\t\t\t}\n\t\t\t\tif (v.length === 9) { // hex with alpha, like #fd5e53ff\n\t\t\t\t\ta = parseInt(v.substr(1, 6), 16);\n\t\t\t\t\treturn [a >> 16, (a >> 8) & _255, a & _255, parseInt(v.substr(7), 16) / 255];\n\t\t\t\t}\n\t\t\t\tv = parseInt(v.substr(1), 16);\n\t\t\t\ta = [v >> 16, (v >> 8) & _255, v & _255];\n\t\t\t} else if (v.substr(0, 3) === \"hsl\") {\n\t\t\t\ta = wasHSL = v.match(_strictNumExp);\n\t\t\t\tif (!toHSL) {\n\t\t\t\t\th = (+a[0] % 360) / 360;\n\t\t\t\t\ts = +a[1] / 100;\n\t\t\t\t\tl = +a[2] / 100;\n\t\t\t\t\tg = (l <= .5) ? l * (s + 1) : l + s - l * s;\n\t\t\t\t\tr = l * 2 - g;\n\t\t\t\t\ta.length > 3 && (a[3] *= 1); //cast as number\n\t\t\t\t\ta[0] = _hue(h + 1 / 3, r, g);\n\t\t\t\t\ta[1] = _hue(h, r, g);\n\t\t\t\t\ta[2] = _hue(h - 1 / 3, r, g);\n\t\t\t\t} else if (~v.indexOf(\"=\")) { //if relative values are found, just return the raw strings with the relative prefixes in place.\n\t\t\t\t\ta = v.match(_numExp);\n\t\t\t\t\tforceAlpha && a.length < 4 && (a[3] = 1);\n\t\t\t\t\treturn a;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ta = v.match(_strictNumExp) || _colorLookup.transparent;\n\t\t\t}\n\t\t\ta = a.map(Number);\n\t\t}\n\t\tif (toHSL && !wasHSL) {\n\t\t\tr = a[0] / _255;\n\t\t\tg = a[1] / _255;\n\t\t\tb = a[2] / _255;\n\t\t\tmax = Math.max(r, g, b);\n\t\t\tmin = Math.min(r, g, b);\n\t\t\tl = (max + min) / 2;\n\t\t\tif (max === min) {\n\t\t\t\th = s = 0;\n\t\t\t} else {\n\t\t\t\td = max - min;\n\t\t\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\t\t\t\th = (max === r) ? (g - b) / d + (g < b ? 6 : 0) : (max === g) ? (b - r) / d + 2 : (r - g) / d + 4;\n\t\t\t\th *= 60;\n\t\t\t}\n\t\t\ta[0] = ~~(h + .5);\n\t\t\ta[1] = ~~(s * 100 + .5);\n\t\t\ta[2] = ~~(l * 100 + .5);\n\t\t}\n\t\tforceAlpha && a.length < 4 && (a[3] = 1);\n\t\treturn a;\n\t},\n\t_colorOrderData = v => { // strips out the colors from the string, finds all the numeric slots (with units) and returns an array of those. The Array also has a \"c\" property which is an Array of the index values where the colors belong. This is to help work around issues where there's a mis-matched order of color/numeric data like drop-shadow(#f00 0px 1px 2px) and drop-shadow(0x 1px 2px #f00). This is basically a helper function used in _formatColors()\n\t\tlet values = [],\n\t\t\tc = [],\n\t\t\ti = -1;\n\t\tv.split(_colorExp).forEach(v => {\n\t\t\tlet a = v.match(_numWithUnitExp) || [];\n\t\t\tvalues.push(...a);\n\t\t\tc.push(i += a.length + 1);\n\t\t});\n\t\tvalues.c = c;\n\t\treturn values;\n\t},\n\t_formatColors = (s, toHSL, orderMatchData) => {\n\t\tlet result = \"\",\n\t\t\tcolors = (s + result).match(_colorExp),\n\t\t\ttype = toHSL ? \"hsla(\" : \"rgba(\",\n\t\t\ti = 0,\n\t\t\tc, shell, d, l;\n\t\tif (!colors) {\n\t\t\treturn s;\n\t\t}\n\t\tcolors = colors.map(color => (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : color.join(\",\")) + \")\");\n\t\tif (orderMatchData) {\n\t\t\td = _colorOrderData(s);\n\t\t\tc = orderMatchData.c;\n\t\t\tif (c.join(result) !== d.c.join(result)) {\n\t\t\t\tshell = s.replace(_colorExp, \"1\").split(_numWithUnitExp);\n\t\t\t\tl = shell.length - 1;\n\t\t\t\tfor (; i < l; i++) {\n\t\t\t\t\tresult += shell[i] + (~c.indexOf(i) ? colors.shift() || type + \"0,0,0,0)\" : (d.length ? d : colors.length ? colors : orderMatchData).shift());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!shell) {\n\t\t\tshell = s.split(_colorExp);\n\t\t\tl = shell.length - 1;\n\t\t\tfor (; i < l; i++) {\n\t\t\t\tresult += shell[i] + colors[i];\n\t\t\t}\n\t\t}\n\t\treturn result + shell[l];\n\t},\n\t_colorExp = (function() {\n\t\tlet s = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3,4}){1,2}\\\\b\", //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,\n\t\t\tp;\n\t\tfor (p in _colorLookup) {\n\t\t\ts += \"|\" + p + \"\\\\b\";\n\t\t}\n\t\treturn new RegExp(s + \")\", \"gi\");\n\t})(),\n\t_hslExp = /hsl[a]?\\(/,\n\t_colorStringFilter = a => {\n\t\tlet combined = a.join(\" \"),\n\t\t\ttoHSL;\n\t\t_colorExp.lastIndex = 0;\n\t\tif (_colorExp.test(combined)) {\n\t\t\ttoHSL = _hslExp.test(combined);\n\t\t\ta[1] = _formatColors(a[1], toHSL);\n\t\t\ta[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); // make sure the order of numbers/colors match with the END value.\n\t\t\treturn true;\n\t\t}\n\t},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*\n * --------------------------------------------------------------------------------------\n * TICKER\n * --------------------------------------------------------------------------------------\n */\n\t_tickerActive,\n\t_ticker = (function() {\n\t\tlet _getTime = Date.now,\n\t\t\t_lagThreshold = 500,\n\t\t\t_adjustedLag = 33,\n\t\t\t_startTime = _getTime(),\n\t\t\t_lastUpdate = _startTime,\n\t\t\t_gap = 1000 / 240,\n\t\t\t_nextTime = _gap,\n\t\t\t_listeners = [],\n\t\t\t_id, _req, _raf, _self, _delta, _i,\n\t\t\t_tick = v => {\n\t\t\t\tlet elapsed = _getTime() - _lastUpdate,\n\t\t\t\t\tmanual = v === true,\n\t\t\t\t\toverlap, dispatch, time, frame;\n\t\t\t\telapsed > _lagThreshold && (_startTime += elapsed - _adjustedLag);\n\t\t\t\t_lastUpdate += elapsed;\n\t\t\t\ttime = _lastUpdate - _startTime;\n\t\t\t\toverlap = time - _nextTime;\n\t\t\t\tif (overlap > 0 || manual) {\n\t\t\t\t\tframe = ++_self.frame;\n\t\t\t\t\t_delta = time - _self.time * 1000;\n\t\t\t\t\t_self.time = time = time / 1000;\n\t\t\t\t\t_nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);\n\t\t\t\t\tdispatch = 1;\n\t\t\t\t}\n\t\t\t\tmanual || (_id = _req(_tick)); //make sure the request is made before we dispatch the \"tick\" event so that timing is maintained. Otherwise, if processing the \"tick\" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.\n\t\t\t\tif (dispatch) {\n\t\t\t\t\tfor (_i = 0; _i < _listeners.length; _i++) { // use _i and check _listeners.length instead of a variable because a listener could get removed during the loop, and if that happens to an element less than the current index, it'd throw things off in the loop.\n\t\t\t\t\t\t_listeners[_i](time, _delta, frame, v);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t_self = {\n\t\t\ttime:0,\n\t\t\tframe:0,\n\t\t\ttick() {\n\t\t\t\t_tick(true);\n\t\t\t},\n\t\t\tdeltaRatio(fps) {\n\t\t\t\treturn _delta / (1000 / (fps || 60));\n\t\t\t},\n\t\t\twake() {\n\t\t\t\tif (_coreReady) {\n\t\t\t\t\tif (!_coreInitted && _windowExists()) {\n\t\t\t\t\t\t_win = _coreInitted = window;\n\t\t\t\t\t\t_doc = _win.document || {};\n\t\t\t\t\t\t_globals.gsap = gsap;\n\t\t\t\t\t\t(_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);\n\t\t\t\t\t\t_install(_installScope || _win.GreenSockGlobals || (!_win.gsap && _win) || {});\n\t\t\t\t\t\t_raf = _win.requestAnimationFrame;\n\t\t\t\t\t}\n\t\t\t\t\t_id && _self.sleep();\n\t\t\t\t\t_req = _raf || (f => setTimeout(f, (_nextTime - _self.time * 1000 + 1) | 0));\n\t\t\t\t\t_tickerActive = 1;\n\t\t\t\t\t_tick(2);\n\t\t\t\t}\n\t\t\t},\n\t\t\tsleep() {\n\t\t\t\t(_raf ? _win.cancelAnimationFrame : clearTimeout)(_id);\n\t\t\t\t_tickerActive = 0;\n\t\t\t\t_req = _emptyFunc;\n\t\t\t},\n\t\t\tlagSmoothing(threshold, adjustedLag) {\n\t\t\t\t_lagThreshold = threshold || (1 / _tinyNum); //zero should be interpreted as basically unlimited\n\t\t\t\t_adjustedLag = Math.min(adjustedLag, _lagThreshold, 0);\n\t\t\t},\n\t\t\tfps(fps) {\n\t\t\t\t_gap = 1000 / (fps || 240);\n\t\t\t\t_nextTime = _self.time * 1000 + _gap;\n\t\t\t},\n\t\t\tadd(callback) {\n\t\t\t\t_listeners.indexOf(callback) < 0 && _listeners.push(callback);\n\t\t\t\t_wake();\n\t\t\t},\n\t\t\tremove(callback) {\n\t\t\t\tlet i;\n\t\t\t\t~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;\n\t\t\t},\n\t\t\t_listeners:_listeners\n\t\t};\n\t\treturn _self;\n\t})(),\n\t_wake = () => !_tickerActive && _ticker.wake(), //also ensures the core classes are initialized.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*\n* -------------------------------------------------\n* EASING\n* -------------------------------------------------\n*/\n\t_easeMap = {},\n\t_customEaseExp = /^[\\d.\\-M][\\d.\\-,\\s]/,\n\t_quotesExp = /[\"']/g,\n\t_parseObjectInString = value => { //takes a string like \"{wiggles:10, type:anticipate})\" and turns it into a real object. Notice it ends in \")\" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.\n\t\tlet obj = {},\n\t\t\tsplit = value.substr(1, value.length-3).split(\":\"),\n\t\t\tkey = split[0],\n\t\t\ti = 1,\n\t\t\tl = split.length,\n\t\t\tindex, val, parsedVal;\n\t\tfor (; i < l; i++) {\n\t\t\tval = split[i];\n\t\t\tindex = i !== l-1 ? val.lastIndexOf(\",\") : val.length;\n\t\t\tparsedVal = val.substr(0, index);\n\t\t\tobj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, \"\").trim() : +parsedVal;\n\t\t\tkey = val.substr(index+1).trim();\n\t\t}\n\t\treturn obj;\n\t},\n\t_valueInParentheses = value => {\n\t\tlet open = value.indexOf(\"(\") + 1,\n\t\t\tclose = value.indexOf(\")\"),\n\t\t\tnested = value.indexOf(\"(\", open);\n\t\treturn value.substring(open, ~nested && nested < close ? value.indexOf(\")\", close + 1) : close);\n\t},\n\t_configEaseFromString = name => { //name can be a string like \"elastic.out(1,0.5)\", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).\n\t\tlet split = (name + \"\").split(\"(\"),\n\t\t\tease = _easeMap[split[0]];\n\t\treturn (ease && split.length > 1 && ease.config) ? ease.config.apply(null, ~name.indexOf(\"{\") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(\",\").map(_numericIfPossible)) : (_easeMap._CE && _customEaseExp.test(name)) ? _easeMap._CE(\"\", name) : ease;\n\t},\n\t_invertEase = ease => p => 1 - ease(1 - p),\n\t// allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos.\n\t_propagateYoyoEase = (timeline, isYoyo) => {\n\t\tlet child = timeline._first, ease;\n\t\twhile (child) {\n\t\t\tif (child instanceof Timeline) {\n\t\t\t\t_propagateYoyoEase(child, isYoyo);\n\t\t\t} else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {\n\t\t\t\tif (child.timeline) {\n\t\t\t\t\t_propagateYoyoEase(child.timeline, isYoyo);\n\t\t\t\t} else {\n\t\t\t\t\tease = child._ease;\n\t\t\t\t\tchild._ease = child._yEase;\n\t\t\t\t\tchild._yEase = ease;\n\t\t\t\t\tchild._yoyo = isYoyo;\n\t\t\t\t}\n\t\t\t}\n\t\t\tchild = child._next;\n\t\t}\n\t},\n\t_parseEase = (ease, defaultEase) => !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase,\n\t_insertEase = (names, easeIn, easeOut = p => 1 - easeIn(1 - p), easeInOut = (p => p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2)) => {\n\t\tlet ease = {easeIn, easeOut, easeInOut},\n\t\t\tlowercaseName;\n\t\t_forEachName(names, name => {\n\t\t\t_easeMap[name] = _globals[name] = ease;\n\t\t\t_easeMap[(lowercaseName = name.toLowerCase())] = easeOut;\n\t\t\tfor (let p in ease) {\n\t\t\t\t_easeMap[lowercaseName + (p === \"easeIn\" ? \".in\" : p === \"easeOut\" ? \".out\" : \".inOut\")] = _easeMap[name + \".\" + p] = ease[p];\n\t\t\t}\n\t\t});\n\t\treturn ease;\n\t},\n\t_easeInOutFromOut = easeOut => (p => p < .5 ? (1 - easeOut(1 - (p * 2))) / 2 : .5 + easeOut((p - .5) * 2) / 2),\n\t_configElastic = (type, amplitude, period) => {\n\t\tlet p1 = (amplitude >= 1) ? amplitude : 1, //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.\n\t\t\tp2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),\n\t\t\tp3 = p2 / _2PI * (Math.asin(1 / p1) || 0),\n\t\t\teaseOut = p => p === 1 ? 1 : p1 * (2 ** (-10 * p)) * _sin((p - p3) * p2) + 1,\n\t\t\tease = (type === \"out\") ? easeOut : (type === \"in\") ? p => 1 - easeOut(1 - p) : _easeInOutFromOut(easeOut);\n\t\tp2 = _2PI / p2; //precalculate to optimize\n\t\tease.config = (amplitude, period) => _configElastic(type, amplitude, period);\n\t\treturn ease;\n\t},\n\t_configBack = (type, overshoot = 1.70158) => {\n\t\tlet easeOut = p => p ? ((--p) * p * ((overshoot + 1) * p + overshoot) + 1) : 0,\n\t\t\tease = (type === \"out\") ? easeOut : (type === \"in\") ? p => 1 - easeOut(1 - p) : _easeInOutFromOut(easeOut);\n\t\tease.config = overshoot => _configBack(type, overshoot);\n\t\treturn ease;\n\t};\n\t// a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n\t// _weightedEase = ratio => {\n\t// \tlet y = 0.5 + ratio / 2;\n\t// \treturn p => (2 * (1 - p) * p * y + p * p);\n\t// },\n\t// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n\t// _weightedEaseStrong = ratio => {\n\t// \tratio = .5 + ratio / 2;\n\t// \tlet o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),\n\t// \t\tb = ratio - o,\n\t// \t\tc = ratio + o;\n\t// \treturn p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;\n\t// };\n\n_forEachName(\"Linear,Quad,Cubic,Quart,Quint,Strong\", (name, i) => {\n\tlet power = i < 5 ? i + 1 : i;\n\t_insertEase(name + \",Power\" + (power - 1), i ? p => p ** power : p => p, p => 1 - (1 - p) ** power, p => p < .5 ? (p * 2) ** power / 2 : 1 - ((1 - p) * 2) ** power / 2);\n});\n_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;\n_insertEase(\"Elastic\", _configElastic(\"in\"), _configElastic(\"out\"), _configElastic());\n((n, c) => {\n\tlet n1 = 1 / c,\n\t\tn2 = 2 * n1,\n\t\tn3 = 2.5 * n1,\n\t\teaseOut = p => (p < n1) ? n * p * p : (p < n2) ? n * (p - 1.5 / c) ** 2 + .75 : (p < n3) ? n * (p -= 2.25 / c) * p + .9375 : n * (p - 2.625 / c) ** 2 + .984375;\n\t_insertEase(\"Bounce\", p => 1 - easeOut(1 - p), easeOut);\n})(7.5625, 2.75);\n_insertEase(\"Expo\", p => p ? 2 ** (10 * (p - 1)) : 0);\n_insertEase(\"Circ\", p => -(_sqrt(1 - (p * p)) - 1));\n_insertEase(\"Sine\", p => p === 1 ? 1 : -_cos(p * _HALF_PI) + 1);\n_insertEase(\"Back\", _configBack(\"in\"), _configBack(\"out\"), _configBack());\n_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {\n\tconfig(steps = 1, immediateStart) {\n\t\tlet p1 = 1 / steps,\n\t\t\tp2 = steps + (immediateStart ? 0 : 1),\n\t\t\tp3 = immediateStart ? 1 : 0,\n\t\t\tmax = 1 - _tinyNum;\n\t\treturn p => (((p2 * _clamp(0, max, p)) | 0) + p3) * p1;\n\t}\n};\n_defaults.ease = _easeMap[\"quad.out\"];\n\n\n_forEachName(\"onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt\", name => _callbackNames += name + \",\" + name + \"Params,\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*\n * --------------------------------------------------------------------------------------\n * CACHE\n * --------------------------------------------------------------------------------------\n */\nexport class GSCache {\n\n\tconstructor(target, harness) {\n\t\tthis.id = _gsID++;\n\t\ttarget._gsap = this;\n\t\tthis.target = target;\n\t\tthis.harness = harness;\n\t\tthis.get = harness ? harness.get : _getProperty;\n\t\tthis.set = harness ? harness.getSetter : _getSetter;\n\t}\n\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*\n * --------------------------------------------------------------------------------------\n * ANIMATION\n * --------------------------------------------------------------------------------------\n */\n\nexport class Animation {\n\n\tconstructor(vars) {\n\t\tthis.vars = vars;\n\t\tthis._delay = +vars.delay || 0;\n\t\tif ((this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0)) { // TODO: repeat: Infinity on a timeline's children must flag that timeline internally and affect its totalDuration, otherwise it'll stop in the negative direction when reaching the start.\n\t\t\tthis._rDelay = vars.repeatDelay || 0;\n\t\t\tthis._yoyo = !!vars.yoyo || !!vars.yoyoEase;\n\t\t}\n\t\tthis._ts = 1;\n\t\t_setDuration(this, +vars.duration, 1, 1);\n\t\tthis.data = vars.data;\n\t\t_tickerActive || _ticker.wake();\n\t}\n\n\tdelay(value) {\n\t\tif (value || value === 0) {\n\t\t\tthis.parent && this.parent.smoothChildTiming && (this.startTime(this._start + value - this._delay));\n\t\t\tthis._delay = value;\n\t\t\treturn this;\n\t\t}\n\t\treturn this._delay;\n\t}\n\n\tduration(value) {\n\t\treturn arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;\n\t}\n\n\ttotalDuration(value) {\n\t\tif (!arguments.length) {\n\t\t\treturn this._tDur;\n\t\t}\n\t\tthis._dirty = 0;\n\t\treturn _setDuration(this, this._repeat < 0 ? value : (value - (this._repeat * this._rDelay)) / (this._repeat + 1));\n\t}\n\n\ttotalTime(totalTime, suppressEvents) {\n\t\t_wake();\n\t\tif (!arguments.length) {\n\t\t\treturn this._tTime;\n\t\t}\n\t\tlet parent = this._dp;\n\t\tif (parent && parent.smoothChildTiming && this._ts) {\n\t\t\t_alignPlayhead(this, totalTime);\n\t\t\t!parent._dp || parent.parent || _postAddChecks(parent, this); // edge case: if this is a child of a timeline that already completed, for example, we must re-activate the parent.\n\t\t\t//in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.\n\t\t\twhile (parent.parent) {\n\t\t\t\tif (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {\n\t\t\t\t\tparent.totalTime(parent._tTime, true);\n\t\t\t\t}\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t\tif (!this.parent && this._dp.autoRemoveChildren && ((this._ts > 0 && totalTime < this._tDur) || (this._ts < 0 && totalTime > 0) || (!this._tDur && !totalTime) )) { //if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.\n\t\t\t\t_addToTimeline(this._dp, this, this._start - this._delay);\n\t\t\t}\n\t\t}\n if (this._tTime !== totalTime || (!this._dur && !suppressEvents) || (this._initted && Math.abs(this._zTime) === _tinyNum) || (!totalTime && !this._initted && (this.add || this._ptLookup))) { // check for _ptLookup on a Tween instance to ensure it has actually finished being instantiated, otherwise if this.reverse() gets called in the Animation constructor, it could trigger a render() here even though the _targets weren't populated, thus when _init() is called there won't be any PropTweens (it'll act like the tween is non-functional)\n \tthis._ts || (this._pTime = totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause\n\t //if (!this._lock) { // avoid endless recursion (not sure we need this yet or if it's worth the performance hit)\n\t\t // this._lock = 1;\n\t\t _lazySafeRender(this, totalTime, suppressEvents);\n\t\t // this._lock = 0;\n\t //}\n\t\t}\n\t\treturn this;\n\t}\n\n\ttime(value, suppressEvents) {\n\t\treturn arguments.length ? this.totalTime((Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay)) || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!\n\t}\n\n\ttotalProgress(value, suppressEvents) {\n\t\treturn arguments.length ? this.totalTime( this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.ratio;\n\t}\n\n\tprogress(value, suppressEvents) {\n\t\treturn arguments.length ? this.totalTime( this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : (this.duration() ? Math.min(1, this._time / this._dur) : this.ratio);\n\t}\n\n\titeration(value, suppressEvents) {\n\t\tlet cycleDuration = this.duration() + this._rDelay;\n\t\treturn arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;\n\t}\n\n\t// potential future addition:\n\t// isPlayingBackwards() {\n\t// \tlet animation = this,\n\t// \t\torientation = 1; // 1 = forward, -1 = backward\n\t// \twhile (animation) {\n\t// \t\torientation *= animation.reversed() || (animation.repeat() && !(animation.iteration() & 1)) ? -1 : 1;\n\t// \t\tanimation = animation.parent;\n\t// \t}\n\t// \treturn orientation < 0;\n\t// }\n\n\ttimeScale(value) {\n\t\tif (!arguments.length) {\n\t\t\treturn this._rts === -_tinyNum ? 0 : this._rts; // recorded timeScale. Special case: if someone calls reverse() on an animation with timeScale of 0, we assign it -_tinyNum to remember it's reversed.\n\t\t}\n\t\tif (this._rts === value) {\n\t\t\treturn this;\n\t\t}\n\t\tlet tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.\n\n\t\t// future addition? Up side: fast and minimal file size. Down side: only works on this animation; if a timeline is reversed, for example, its childrens' onReverse wouldn't get called.\n\t\t//(+value < 0 && this._rts >= 0) && _callback(this, \"onReverse\", true);\n\n\t\t// prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.\n\t\tthis._rts = +value || 0;\n\t\tthis._ts = (this._ps || value === -_tinyNum) ? 0 : this._rts; // _ts is the functional timeScale which would be 0 if the animation is paused.\n\t\treturn _recacheAncestors(this.totalTime(_clamp(-this._delay, this._tDur, tTime), true));\n\t}\n\n\tpaused(value) {\n\t\tif (!arguments.length) {\n\t\t\treturn this._ps;\n\t\t}\n\t\tif (this._ps !== value) {\n\t\t\tthis._ps = value;\n\t\t\tif (value) {\n\t\t\t\tthis._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.\n\t\t\t\tthis._ts = this._act = 0; // _ts is the functional timeScale, so a paused tween would effectively have a timeScale of 0. We record the \"real\" timeScale as _rts (recorded time scale)\n\t\t\t} else {\n\t\t\t\t_wake();\n\t\t\t\tthis._ts = this._rts;\n\t\t\t\t//only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume(). If the parent doesn't have smoothChildTiming, we render at the rawTime() because the startTime won't get updated.\n\t\t\t\tthis.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, (this.progress() === 1) && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum)); // edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course). Check to make sure _zTime isn't -_tinyNum to avoid an edge case where the playhead is pushed to the end but INSIDE a tween/callback, the timeline itself is paused thus halting rendering and leaving a few unrendered. When resuming, it wouldn't render those otherwise.\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tstartTime(value) {\n\t\tif (arguments.length) {\n\t\t\tthis._start = value;\n\t\t\tlet parent = this.parent || this._dp;\n\t\t\tparent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);\n\t\t\treturn this;\n\t\t}\n\t\treturn this._start;\n\t}\n\n\tendTime(includeRepeats) {\n\t\treturn this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts);\n\t}\n\n\trawTime(wrapRepeats) {\n\t\tlet parent = this.parent || this._dp; // _dp = detached parent\n\t\treturn !parent ? this._tTime : (wrapRepeats && (!this._ts || (this._repeat && this._time && this.totalProgress() < 1))) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);\n\t}\n\n\tglobalTime(rawTime) {\n\t\tlet animation = this,\n\t\t\ttime = arguments.length ? rawTime : animation.rawTime();\n\t\twhile (animation) {\n\t\t\ttime = animation._start + time / (animation._ts || 1);\n\t\t\tanimation = animation._dp;\n\t\t}\n\t\treturn time;\n\t}\n\n\trepeat(value) {\n\t\tif (arguments.length) {\n\t\t\tthis._repeat = value === Infinity ? -2 : value;\n\t\t\treturn _onUpdateTotalDuration(this);\n\t\t}\n\t\treturn this._repeat === -2 ? Infinity : this._repeat;\n\t}\n\n\trepeatDelay(value) {\n\t\tif (arguments.length) {\n\t\t\tlet time = this._time;\n\t\t\tthis._rDelay = value;\n\t\t\t_onUpdateTotalDuration(this);\n\t\t\treturn time ? this.time(time) : this;\n\t\t}\n\t\treturn this._rDelay;\n\t}\n\n\tyoyo(value) {\n\t\tif (arguments.length) {\n\t\t\tthis._yoyo = value;\n\t\t\treturn this;\n\t\t}\n\t\treturn this._yoyo;\n\t}\n\n\tseek(position, suppressEvents) {\n\t\treturn this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));\n\t}\n\n\trestart(includeDelay, suppressEvents) {\n\t\treturn this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));\n\t}\n\n\tplay(from, suppressEvents) {\n\t\tfrom != null && this.seek(from, suppressEvents);\n\t\treturn this.reversed(false).paused(false);\n\t}\n\n\treverse(from, suppressEvents) {\n\t\tfrom != null && this.seek(from || this.totalDuration(), suppressEvents);\n\t\treturn this.reversed(true).paused(false);\n\t}\n\n\tpause(atTime, suppressEvents) {\n\t\tatTime != null && this.seek(atTime, suppressEvents);\n\t\treturn this.paused(true);\n\t}\n\n\tresume() {\n\t\treturn this.paused(false);\n\t}\n\n\treversed(value) {\n\t\tif (arguments.length) {\n\t\t\t!!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); // in case timeScale is zero, reversing would have no effect so we use _tinyNum.\n\t\t\treturn this;\n\t\t}\n\t\treturn this._rts < 0;\n\t}\n\n\tinvalidate() {\n\t\tthis._initted = this._act = 0;\n\t\tthis._zTime = -_tinyNum;\n\t\treturn this;\n\t}\n\n\tisActive() {\n\t\tlet parent = this.parent || this._dp,\n\t\t\tstart = this._start,\n\t\t\trawTime;\n\t\treturn !!(!parent || (this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum));\n\t}\n\n\teventCallback(type, callback, params) {\n\t\tlet vars = this.vars;\n\t\tif (arguments.length > 1) {\n\t\t\tif (!callback) {\n\t\t\t\tdelete vars[type];\n\t\t\t} else {\n\t\t\t\tvars[type] = callback;\n\t\t\t\tparams && (vars[type + \"Params\"] = params);\n\t\t\t\ttype === \"onUpdate\" && (this._onUpdate = callback);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\treturn vars[type];\n\t}\n\n\tthen(onFulfilled) {\n\t\tlet self = this;\n\t\treturn new Promise(resolve => {\n\t\t\tlet f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,\n\t\t\t\t_resolve = () => {\n\t\t\t\t\tlet _then = self.then;\n\t\t\t\t\tself.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)\n\t\t\t\t\t_isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);\n\t\t\t\t\tresolve(f);\n\t\t\t\t\tself.then = _then;\n\t\t\t\t};\n\t\t\tif (self._initted && (self.totalProgress() === 1 && self._ts >= 0) || (!self._tTime && self._ts < 0)) {\n\t\t\t\t_resolve();\n\t\t\t} else {\n\t\t\t\tself._prom = _resolve;\n\t\t\t}\n\t\t});\n\t}\n\n\tkill() {\n\t\t_interrupt(this);\n\t}\n\n}\n\n_setDefaults(Animation.prototype, {_time:0, _start:0, _end:0, _tTime:0, _tDur:0, _dirty:0, _repeat:0, _yoyo:false, parent:null, _initted:false, _rDelay:0, _ts:1, _dp:0, ratio:0, _zTime:-_tinyNum, _prom:0, _ps:false, _rts:1});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*\n * -------------------------------------------------\n * TIMELINE\n * -------------------------------------------------\n */\n\nexport class Timeline extends Animation {\n\n\tconstructor(vars = {}, position) {\n\t\tsuper(vars);\n\t\tthis.labels = {};\n\t\tthis.smoothChildTiming = !!vars.smoothChildTiming;\n\t\tthis.autoRemoveChildren = !!vars.autoRemoveChildren;\n\t\tthis._sort = _isNotFalse(vars.sortChildren);\n\t\t_globalTimeline && _addToTimeline(vars.parent || _globalTimeline, this, position);\n\t\tvars.reversed && this.reverse();\n\t\tvars.paused && this.paused(true);\n\t\tvars.scrollTrigger && _scrollTrigger(this, vars.scrollTrigger);\n\t}\n\n\tto(targets, vars, position) {\n\t\t_createTweenType(0, arguments, this);\n\t\treturn this;\n\t}\n\n\tfrom(targets, vars, position) {\n\t\t_createTweenType(1, arguments, this);\n\t\treturn this;\n\t}\n\n\tfromTo(targets, fromVars, toVars, position) {\n\t\t_createTweenType(2, arguments, this);\n\t\treturn this;\n\t}\n\n\tset(targets, vars, position) {\n\t\tvars.duration = 0;\n\t\tvars.parent = this;\n\t\t_inheritDefaults(vars).repeatDelay || (vars.repeat = 0);\n\t\tvars.immediateRender = !!vars.immediateRender;\n\t\tnew Tween(targets, vars, _parsePosition(this, position), 1);\n\t\treturn this;\n\t}\n\n\tcall(callback, params, position) {\n\t\treturn _addToTimeline(this, Tween.delayedCall(0, callback, params), position);\n\t}\n\n\t//ONLY for backward compatibility! Maybe delete?\n\tstaggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n\t\tvars.duration = duration;\n\t\tvars.stagger = vars.stagger || stagger;\n\t\tvars.onComplete = onCompleteAll;\n\t\tvars.onCompleteParams = onCompleteAllParams;\n\t\tvars.parent = this;\n\t\tnew Tween(targets, vars, _parsePosition(this, position));\n\t\treturn this;\n\t}\n\n\tstaggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n\t\tvars.runBackwards = 1;\n\t\t_inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);\n\t\treturn this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);\n\t}\n\n\tstaggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {\n\t\ttoVars.startAt = fromVars;\n\t\t_inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);\n\t\treturn this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);\n\t}\n\n\trender(totalTime, suppressEvents, force) {\n\t\tlet prevTime = this._time,\n\t\t\ttDur = this._dirty ? this.totalDuration() : this._tDur,\n\t\t\tdur = this._dur,\n\t\t\ttTime = (this !== _globalTimeline && totalTime > tDur - _tinyNum && totalTime >= 0) ? tDur : (totalTime < _tinyNum) ? 0 : totalTime,\n\t\t\tcrossingStart = (this._zTime < 0) !== (totalTime < 0) && (this._initted || !dur),\n\t\t\ttime, child, next, iteration, cycleDuration, prevPaused, pauseTween, timeScale, prevStart, prevIteration, yoyo, isYoyo;\n\t\tif (tTime !== this._tTime || force || crossingStart) {\n\t\t\tif (prevTime !== this._time && dur) { //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).\n\t\t\t\ttTime += this._time - prevTime;\n\t\t\t\ttotalTime += this._time - prevTime;\n\t\t\t}\n\t\t\ttime = tTime;\n\t\t\tprevStart = this._start;\n\t\t\ttimeScale = this._ts;\n\t\t\tprevPaused = !timeScale;\n\t\t\tif (crossingStart) {\n\t\t\t\tdur || (prevTime = this._zTime);\n\t\t\t\t //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\t\t\t\t(totalTime || !suppressEvents) && (this._zTime = totalTime);\n\t\t\t}\n\t\t\tif (this._repeat) { //adjust the time for repeats and yoyos\n\t\t\t\tyoyo = this._yoyo;\n\t\t\t\tcycleDuration = dur + this._rDelay;\n\t\t\t\tif (this._repeat < -1 && totalTime < 0) {\n\t\t\t\t\treturn this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n\t\t\t\t}\n\t\t\t\ttime = _round(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\t\t\t\tif (tTime === tDur) { // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n\t\t\t\t\titeration = this._repeat;\n\t\t\t\t\ttime = dur;\n\t\t\t\t} else {\n\t\t\t\t\titeration = ~~(tTime / cycleDuration);\n\t\t\t\t\tif (iteration && iteration === tTime / cycleDuration) {\n\t\t\t\t\t\ttime = dur;\n\t\t\t\t\t\titeration--;\n\t\t\t\t\t}\n\t\t\t\t\ttime > dur && (time = dur);\n\t\t\t\t}\n\t\t\t\tprevIteration = _animationCycle(this._tTime, cycleDuration);\n\t\t\t\t!prevTime && this._tTime && prevIteration !== iteration && (prevIteration = iteration); // edge case - if someone does addPause() at the very beginning of a repeating timeline, that pause is technically at the same spot as the end which causes this._time to get set to 0 when the totalTime would normally place the playhead at the end. See https://greensock.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005\n\t\t\t\tif (yoyo && (iteration & 1)) {\n\t\t\t\t\ttime = dur - time;\n\t\t\t\t\tisYoyo = 1;\n\t\t\t\t}\n\t\t\t\t/*\n\t\t\t\tmake sure children at the end/beginning of the timeline are rendered properly. If, for example,\n\t\t\t\ta 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which\n\t\t\t\twould get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there\n\t\t\t\tcould be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So\n\t\t\t\twe need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must\n\t\t\t\tensure that zero-duration tweens at the very beginning or end of the Timeline work.\n\t\t\t\t*/\n\t\t\t\tif (iteration !== prevIteration && !this._lock) {\n\t\t\t\t\tlet rewinding = (yoyo && (prevIteration & 1)),\n\t\t\t\t\t\tdoesWrap = (rewinding === (yoyo && (iteration & 1)));\n\t\t\t\t\titeration < prevIteration && (rewinding = !rewinding);\n\t\t\t\t\tprevTime = rewinding ? 0 : dur;\n\t\t\t\t\tthis._lock = 1;\n\t\t\t\t\tthis.render(prevTime || (isYoyo ? 0 : _round(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n\t\t\t\t\tthis._tTime = tTime; // if a user gets the iteration() inside the onRepeat, for example, it should be accurate.\n\t\t\t\t\t!suppressEvents && this.parent && _callback(this, \"onRepeat\");\n\t\t\t\t\tthis.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n\t\t\t\t\tif ((prevTime && prevTime !== this._time) || prevPaused !== !this._ts || (this.vars.onRepeat && !this.parent && !this._act)) { // if prevTime is 0 and we render at the very end, _time will be the end, thus won't match. So in this edge case, prevTime won't match _time but that's okay. If it gets killed in the onRepeat, eject as well.\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t}\n\t\t\t\t\tdur = this._dur; // in case the duration changed in the onRepeat\n\t\t\t\t\ttDur = this._tDur;\n\t\t\t\t\tif (doesWrap) {\n\t\t\t\t\t\tthis._lock = 2;\n\t\t\t\t\t\tprevTime = rewinding ? dur : -0.0001;\n\t\t\t\t\t\tthis.render(prevTime, true);\n\t\t\t\t\t\tthis.vars.repeatRefresh && !isYoyo && this.invalidate();\n\t\t\t\t\t}\n\t\t\t\t\tthis._lock = 0;\n\t\t\t\t\tif (!this._ts && !prevPaused) {\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t}\n\t\t\t\t\t//in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.\n\t\t\t\t\t_propagateYoyoEase(this, isYoyo);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this._hasPause && !this._forcing && this._lock < 2) {\n\t\t\t\tpauseTween = _findNextPauseTween(this, _round(prevTime), _round(time));\n\t\t\t\tif (pauseTween) {\n\t\t\t\t\ttTime -= time - (time = pauseTween._start);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._tTime = tTime;\n\t\t\tthis._time = time;\n\t\t\tthis._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n\t\t\tif (!this._initted) {\n\t\t\t\tthis._onUpdate = this.vars.onUpdate;\n\t\t\t\tthis._initted = 1;\n\t\t\t\tthis._zTime = totalTime;\n\t\t\t\tprevTime = 0; // upon init, the playhead should always go forward; someone could invalidate() a completed timeline and then if they restart(), that would make child tweens render in reverse order which could lock in the wrong starting values if they build on each other, like tl.to(obj, {x: 100}).to(obj, {x: 0}).\n\t\t\t}\n\t\t\tif (!prevTime && time && !suppressEvents) {\n\t\t\t\t_callback(this, \"onStart\");\n\t\t\t\tif (this._tTime !== tTime) { // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (time >= prevTime && totalTime >= 0) {\n\t\t\t\tchild = this._first;\n\t\t\t\twhile (child) {\n\t\t\t\t\tnext = child._next;\n\t\t\t\t\tif ((child._act || time >= child._start) && child._ts && pauseTween !== child) {\n\t\t\t\t\t\tif (child.parent !== this) { // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n\t\t\t\t\t\t\treturn this.render(totalTime, suppressEvents, force);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchild.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);\n\t\t\t\t\t\tif (time !== this._time || (!this._ts && !prevPaused)) { //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n\t\t\t\t\t\t\tpauseTween = 0;\n\t\t\t\t\t\t\tnext && (tTime += (this._zTime = -_tinyNum)); // it didn't finish rendering, so flag zTime as negative so that so that the next time render() is called it'll be forced (to render any remaining children)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tchild = next;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tchild = this._last;\n\t\t\t\tlet adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.\n\t\t\t\twhile (child) {\n\t\t\t\t\tnext = child._prev;\n\t\t\t\t\tif ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {\n\t\t\t\t\t\tif (child.parent !== this) { // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n\t\t\t\t\t\t\treturn this.render(totalTime, suppressEvents, force);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchild.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force);\n\t\t\t\t\t\tif (time !== this._time || (!this._ts && !prevPaused)) { //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n\t\t\t\t\t\t\tpauseTween = 0;\n\t\t\t\t\t\t\tnext && (tTime += (this._zTime = adjustedTime ? -_tinyNum : _tinyNum)); // it didn't finish rendering, so adjust zTime so that so that the next time render() is called it'll be forced (to render any remaining children)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tchild = next;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pauseTween && !suppressEvents) {\n\t\t\t\tthis.pause();\n\t\t\t\tpauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;\n\t\t\t\tif (this._ts) { //the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).\n\t\t\t\t\tthis._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.\n\t\t\t\t\t_setEnd(this);\n\t\t\t\t\treturn this.render(totalTime, suppressEvents, force);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._onUpdate && !suppressEvents && _callback(this, \"onUpdate\", true);\n\t\t\tif ((tTime === tDur && tDur >= this.totalDuration()) || (!tTime && prevTime)) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\n\t\t\t\t(totalTime || !dur) && ((tTime === tDur && this._ts > 0) || (!tTime && this._ts < 0)) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\t\t\t\tif (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {\n\t\t\t\t\t_callback(this, (tTime === tDur && totalTime >= 0 ? \"onComplete\" : \"onReverseComplete\"), true);\n\t\t\t\t\tthis._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tadd(child, position) {\n\t\t_isNumber(position) || (position = _parsePosition(this, position, child));\n\t\tif (!(child instanceof Animation)) {\n\t\t\tif (_isArray(child)) {\n\t\t\t\tchild.forEach(obj => this.add(obj, position));\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif (_isString(child)) {\n\t\t\t\treturn this.addLabel(child, position);\n\t\t\t}\n\t\t\tif (_isFunction(child)) {\n\t\t\t\tchild = Tween.delayedCall(0, child);\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\treturn this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!\n\t}\n\n\tgetChildren(nested = true, tweens = true, timelines = true, ignoreBeforeTime = -_bigNum) {\n\t\tlet a = [],\n\t\t\tchild = this._first;\n\t\twhile (child) {\n\t\t\tif (child._start >= ignoreBeforeTime) {\n\t\t\t\tif (child instanceof Tween) {\n\t\t\t\t\ttweens && a.push(child);\n\t\t\t\t} else {\n\t\t\t\t\ttimelines && a.push(child);\n\t\t\t\t\tnested && a.push(...child.getChildren(true, tweens, timelines));\n\t\t\t\t}\n\t\t\t}\n\t\t\tchild = child._next;\n\t\t}\n\t\treturn a;\n\t}\n\n\tgetById(id) {\n\t\tlet animations = this.getChildren(1, 1, 1),\n\t\t\ti = animations.length;\n\t\twhile(i--) {\n\t\t\tif (animations[i].vars.id === id) {\n\t\t\t\treturn animations[i];\n\t\t\t}\n\t\t}\n\t}\n\n\tremove(child) {\n\t\tif (_isString(child)) {\n\t\t\treturn this.removeLabel(child);\n\t\t}\n\t\tif (_isFunction(child)) {\n\t\t\treturn this.killTweensOf(child);\n\t\t}\n\t\t_removeLinkedListItem(this, child);\n\t\tif (child === this._recent) {\n\t\t\tthis._recent = this._last;\n\t\t}\n\t\treturn _uncache(this);\n\t}\n\n\ttotalTime(totalTime, suppressEvents) {\n\t\tif (!arguments.length) {\n\t\t\treturn this._tTime;\n\t\t}\n\t\tthis._forcing = 1;\n\t\tif (!this._dp && this._ts) { //special case for the global timeline (or any other that has no parent or detached parent).\n\t\t\tthis._start = _round(_ticker.time - (this._ts > 0 ? totalTime / this._ts : (this.totalDuration() - totalTime) / -this._ts));\n\t\t}\n\t\tsuper.totalTime(totalTime, suppressEvents);\n\t\tthis._forcing = 0;\n\t\treturn this;\n\t}\n\n\taddLabel(label, position) {\n\t\tthis.labels[label] = _parsePosition(this, position);\n\t\treturn this;\n\t}\n\n\tremoveLabel(label) {\n\t\tdelete this.labels[label];\n\t\treturn this;\n\t}\n\n\taddPause(position, callback, params) {\n\t\tlet t = Tween.delayedCall(0, callback || _emptyFunc, params);\n\t\tt.data = \"isPause\";\n\t\tthis._hasPause = 1;\n\t\treturn _addToTimeline(this, t, _parsePosition(this, position));\n\t}\n\n\tremovePause(position) {\n\t\tlet child = this._first;\n\t\tposition = _parsePosition(this, position);\n\t\twhile (child) {\n\t\t\tif (child._start === position && child.data === \"isPause\") {\n\t\t\t\t_removeFromParent(child);\n\t\t\t}\n\t\t\tchild = child._next;\n\t\t}\n\t}\n\n\tkillTweensOf(targets, props, onlyActive) {\n\t\tlet tweens = this.getTweensOf(targets, onlyActive),\n\t\t\ti = tweens.length;\n\t\twhile (i--) {\n\t\t\t(_overwritingTween !== tweens[i]) && tweens[i].kill(targets, props);\n\t\t}\n\t\treturn this;\n\t}\n\n\tgetTweensOf(targets, onlyActive) {\n\t\tlet a = [],\n\t\t\tparsedTargets = toArray(targets),\n\t\t\tchild = this._first,\n\t\t\tisGlobalTime = _isNumber(onlyActive), // a number is interpreted as a global time. If the animation spans\n\t\t\tchildren;\n\t\twhile (child) {\n\t\t\tif (child instanceof Tween) {\n\t\t\t\tif (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || (child._initted && child._ts)) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) { // note: if this is for overwriting, it should only be for tweens that aren't paused and are initted.\n\t\t\t\t\ta.push(child);\n\t\t\t\t}\n\t\t\t} else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {\n\t\t\t\ta.push(...children);\n\t\t\t}\n\t\t\tchild = child._next;\n\t\t}\n\t\treturn a;\n\t}\n\n\t// potential future feature - targets() on timelines\n\t// targets() {\n\t// \tlet result = [];\n\t// \tthis.getChildren(true, true, false).forEach(t => result.push(...t.targets()));\n\t// \treturn result.filter((v, i) => result.indexOf(v) === i);\n\t// }\n\n\ttweenTo(position, vars) {\n\t\tvars = vars || {};\n\t\tlet tl = this,\n\t\t\tendTime = _parsePosition(tl, position),\n\t\t\t{ startAt, onStart, onStartParams, immediateRender } = vars,\n\t\t\tinitted,\n\t\t\ttween = Tween.to(tl, _setDefaults({\n\t\t\t\tease: vars.ease || \"none\",\n\t\t\t\tlazy: false,\n\t\t\t\timmediateRender: false,\n\t\t\t\ttime: endTime,\n\t\t\t\toverwrite: \"auto\",\n\t\t\t\tduration: vars.duration || (Math.abs((endTime - ((startAt && \"time\" in startAt) ? startAt.time : tl._time)) / tl.timeScale())) || _tinyNum,\n\t\t\t\tonStart: () => {\n\t\t\t\t\ttl.pause();\n\t\t\t\t\tif (!initted) {\n\t\t\t\t\t\tlet duration = vars.duration || Math.abs((endTime - ((startAt && \"time\" in startAt) ? startAt.time : tl._time)) / tl.timeScale());\n\t\t\t\t\t\t(tween._dur !== duration) && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\n\t\t\t\t\t\tinitted = 1;\n\t\t\t\t\t}\n\t\t\t\t\tonStart && onStart.apply(tween, onStartParams || []); //in case the user had an onStart in the vars - we don't want to overwrite it.\n\t\t\t\t}\n\t\t\t}, vars));\n\t\treturn immediateRender ? tween.render(0) : tween;\n\t}\n\n\ttweenFromTo(fromPosition, toPosition, vars) {\n\t\treturn this.tweenTo(toPosition, _setDefaults({startAt:{time:_parsePosition(this, fromPosition)}}, vars));\n\t}\n\n\trecent() {\n\t\treturn this._recent;\n\t}\n\n\tnextLabel(afterTime = this._time) {\n\t\treturn _getLabelInDirection(this, _parsePosition(this, afterTime));\n\t}\n\n\tpreviousLabel(beforeTime = this._time) {\n\t\treturn _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);\n\t}\n\n\tcurrentLabel(value) {\n\t\treturn arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);\n\t}\n\n\tshiftChildren(amount, adjustLabels, ignoreBeforeTime = 0) {\n\t\tlet child = this._first,\n\t\t\tlabels = this.labels,\n\t\t\tp;\n\t\twhile (child) {\n\t\t\tif (child._start >= ignoreBeforeTime) {\n\t\t\t\tchild._start += amount;\n\t\t\t\tchild._end += amount;\n\t\t\t}\n\t\t\tchild = child._next;\n\t\t}\n\t\tif (adjustLabels) {\n\t\t\tfor (p in labels) {\n\t\t\t\tif (labels[p] >= ignoreBeforeTime) {\n\t\t\t\t\tlabels[p] += amount;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn _uncache(this);\n\t}\n\n\tinvalidate() {\n\t\tlet child = this._first;\n\t\tthis._lock = 0;\n\t\twhile (child) {\n\t\t\tchild.invalidate();\n\t\t\tchild = child._next;\n\t\t}\n\t\treturn super.invalidate();\n\t}\n\n\tclear(includeLabels = true) {\n\t\tlet child = this._first,\n\t\t\tnext;\n\t\twhile (child) {\n\t\t\tnext = child._next;\n\t\t\tthis.remove(child);\n\t\t\tchild = next;\n\t\t}\n\t\tthis._dp && (this._time = this._tTime = this._pTime = 0);\n\t\tincludeLabels && (this.labels = {});\n\t\treturn _uncache(this);\n\t}\n\n\ttotalDuration(value) {\n\t\tlet max = 0,\n\t\t\tself = this,\n\t\t\tchild = self._last,\n\t\t\tprevStart = _bigNum,\n\t\t\tprev, start, parent;\n\t\tif (arguments.length) {\n\t\t\treturn self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));\n\t\t}\n\t\tif (self._dirty) {\n\t\t\tparent = self.parent;\n\t\t\twhile (child) {\n\t\t\t\tprev = child._prev; //record it here in case the tween changes position in the sequence...\n\t\t\t\tchild._dirty && child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.\n\t\t\t\tstart = child._start;\n\t\t\t\tif (start > prevStart && self._sort && child._ts && !self._lock) { //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence\n\t\t\t\t\tself._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().\n\t\t\t\t\t_addToTimeline(self, child, start - child._delay, 1)._lock = 0;\n\t\t\t\t} else {\n\t\t\t\t\tprevStart = start;\n\t\t\t\t}\n\t\t\t\tif (start < 0 && child._ts) { //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.\n\t\t\t\t\tmax -= start;\n\t\t\t\t\tif ((!parent && !self._dp) || (parent && parent.smoothChildTiming)) {\n\t\t\t\t\t\tself._start += start / self._ts;\n\t\t\t\t\t\tself._time -= start;\n\t\t\t\t\t\tself._tTime -= start;\n\t\t\t\t\t}\n\t\t\t\t\tself.shiftChildren(-start, false, -1e999);\n\t\t\t\t\tprevStart = 0;\n\t\t\t\t}\n\t\t\t\tchild._end > max && child._ts && (max = child._end);\n\t\t\t\tchild = prev;\n\t\t\t}\n\t\t\t_setDuration(self, (self === _globalTimeline && self._time > max) ? self._time : max, 1, 1);\n\t\t\tself._dirty = 0;\n\t\t}\n\t\treturn self._tDur;\n\t}\n\n\tstatic updateRoot(time) {\n\t\tif (_globalTimeline._ts) {\n\t\t\t_lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));\n\t\t\t_lastRenderedFrame = _ticker.frame;\n\t\t}\n\t\tif (_ticker.frame >= _nextGCFrame) {\n\t\t\t_nextGCFrame += _config.autoSleep || 120;\n\t\t\tlet child = _globalTimeline._first;\n\t\t\tif (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {\n\t\t\t\twhile (child && !child._ts) {\n\t\t\t\t\tchild = child._next;\n\t\t\t\t}\n\t\t\t\tchild || _ticker.sleep();\n\t\t\t}\n\t\t}\n\t}\n\n}\n\n_setDefaults(Timeline.prototype, {_lock:0, _hasPause:0, _forcing:0});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nlet _addComplexStringPropTween = function(target, prop, start, end, setter, stringFilter, funcParam) { //note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n\t\tlet pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),\n\t\t\tindex = 0,\n\t\t\tmatchIndex = 0,\n\t\t\tresult,\tstartNums, color, endNum, chunk, startNum, hasRandom, a;\n\t\tpt.b = start;\n\t\tpt.e = end;\n\t\tstart += \"\"; //ensure values are strings\n\t\tend += \"\";\n\t\tif ((hasRandom = ~end.indexOf(\"random(\"))) {\n\t\t\tend = _replaceRandom(end);\n\t\t}\n\t\tif (stringFilter) {\n\t\t\ta = [start, end];\n\t\t\tstringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.\n\t\t\tstart = a[0];\n\t\t\tend = a[1];\n\t\t}\n\t\tstartNums = start.match(_complexStringNumExp) || [];\n\t\twhile ((result = _complexStringNumExp.exec(end))) {\n\t\t\tendNum = result[0];\n\t\t\tchunk = end.substring(index, result.index);\n\t\t\tif (color) {\n\t\t\t\tcolor = (color + 1) % 5;\n\t\t\t} else if (chunk.substr(-5) === \"rgba(\") {\n\t\t\t\tcolor = 1;\n\t\t\t}\n\t\t\tif (endNum !== startNums[matchIndex++]) {\n\t\t\t\tstartNum = parseFloat(startNums[matchIndex-1]) || 0;\n\t\t\t\t//these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\t\t\t\tpt._pt = {\n\t\t\t\t\t_next:pt._pt,\n\t\t\t\t\tp:(chunk || matchIndex === 1) ? chunk : \",\", //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n\t\t\t\t\ts:startNum,\n\t\t\t\t\tc:endNum.charAt(1) === \"=\" ? parseFloat(endNum.substr(2)) * (endNum.charAt(0) === \"-\" ? -1 : 1) : parseFloat(endNum) - startNum,\n\t\t\t\t\tm:(color && color < 4) ? Math.round : 0\n\t\t\t\t};\n\t\t\t\tindex = _complexStringNumExp.lastIndex;\n\t\t\t}\n\t\t}\n\t\tpt.c = (index < end.length) ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n\t\tpt.fp = funcParam;\n\t\tif (_relExp.test(end) || hasRandom) {\n\t\t\tpt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n\t\t}\n\t\tthis._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n\t\treturn pt;\n\t},\n\t_addPropTween = function(target, prop, start, end, index, targets, modifier, stringFilter, funcParam) {\n\t\t_isFunction(end) && (end = end(index || 0, target, targets));\n\t\tlet currentValue = target[prop],\n\t\t\tparsedStart = (start !== \"get\") ? start : !_isFunction(currentValue) ? currentValue : (funcParam ? target[(prop.indexOf(\"set\") || !_isFunction(target[\"get\" + prop.substr(3)])) ? prop : \"get\" + prop.substr(3)](funcParam) : target[prop]()),\n\t\t\tsetter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,\n\t\t\tpt;\n\t\tif (_isString(end)) {\n\t\t\tif (~end.indexOf(\"random(\")) {\n\t\t\t\tend = _replaceRandom(end);\n\t\t\t}\n\t\t\tif (end.charAt(1) === \"=\") {\n\t\t\t\tpt = parseFloat(parsedStart) + parseFloat(end.substr(2)) * (end.charAt(0) === \"-\" ? -1 : 1) + (getUnit(parsedStart) || 0);\n\t\t\t\tif (pt || pt === 0) { // to avoid isNaN, like if someone passes in a value like \"!= whatever\"\n\t\t\t\t\tend = pt;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (parsedStart !== end) {\n\t\t\tif (!isNaN(parsedStart * end) && end !== \"\") { // fun fact: any number multiplied by \"\" is evaluated as the number 0!\n\t\t\t\tpt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof(currentValue) === \"boolean\" ? _renderBoolean : _renderPlain, 0, setter);\n\t\t\t\tfuncParam && (pt.fp = funcParam);\n\t\t\t\tmodifier && pt.modifier(modifier, this, target);\n\t\t\t\treturn (this._pt = pt);\n\t\t\t}\n\t\t\t!currentValue && !(prop in target) && _missingPlugin(prop, end);\n\t\t\treturn _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);\n\t\t}\n\t},\n\t//creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with \"random()\" in them. It does NOT process relative values.\n\t_processVars = (vars, index, target, targets, tween) => {\n\t\t_isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));\n\t\tif (!_isObject(vars) || (vars.style && vars.nodeType) || _isArray(vars) || _isTypedArray(vars)) {\n\t\t\treturn _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;\n\t\t}\n\t\tlet copy = {},\n\t\t\tp;\n\t\tfor (p in vars) {\n\t\t\tcopy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);\n\t\t}\n\t\treturn copy;\n\t},\n\t_checkPlugin = (property, vars, tween, index, target, targets) => {\n\t\tlet plugin, pt, ptLookup, i;\n\t\tif (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {\n\t\t\ttween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\t\t\tif (tween !== _quickTween) {\n\t\t\t\tptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.\n\t\t\t\ti = plugin._props.length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tptLookup[plugin._props[i]] = pt;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn plugin;\n\t},\n\t_overwritingTween, //store a reference temporarily so we can avoid overwriting itself.\n\t_initTween = (tween, time) => {\n\t\tlet vars = tween.vars,\n\t\t\t{ ease, startAt, immediateRender, lazy, onUpdate, onUpdateParams, callbackScope, runBackwards, yoyoEase, keyframes, autoRevert } = vars,\n\t\t\tdur = tween._dur,\n\t\t\tprevStartAt = tween._startAt,\n\t\t\ttargets = tween._targets,\n\t\t\tparent = tween.parent,\n\t\t\t//when a stagger (or function-based duration/delay) is on a Tween instance, we create a nested timeline which means that the \"targets\" of that tween don't reflect the parent. This function allows us to discern when it's a nested tween and in that case, return the full targets array so that function-based values get calculated properly.\n\t\t\tfullTargets = (parent && parent.data === \"nested\") ? parent.parent._targets : targets,\n\t\t\tautoOverwrite = (tween._overwrite === \"auto\") && !_suppressOverwrites,\n\t\t\ttl = tween.timeline,\n\t\t\tcleanVars, i, p, pt, target, hasPriority, gsData, harness, plugin, ptLookup, index, harnessVars, overwritten;\n\t\ttl && (!keyframes || !ease) && (ease = \"none\");\n\t\ttween._ease = _parseEase(ease, _defaults.ease);\n\t\ttween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;\n\t\tif (yoyoEase && tween._yoyo && !tween._repeat) { //there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.\n\t\t\tyoyoEase = tween._yEase;\n\t\t\ttween._yEase = tween._ease;\n\t\t\ttween._ease = yoyoEase;\n\t\t}\n\t\ttween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.\n\t\tif (!tl) { //if there's an internal timeline, skip all the parsing because we passed that task down the chain.\n\t\t\tharness = targets[0] ? _getCache(targets[0]).harness : 0;\n\t\t\tharnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an \"x\" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.\n\t\t\tcleanVars = _copyExcluding(vars, _reservedProps);\n\t\t\tprevStartAt && prevStartAt.render(-1, true).kill();\n\t\t\tif (startAt) {\n\t\t\t\t_removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({data: \"isStart\", overwrite: false, parent: parent, immediateRender: true, lazy: _isNotFalse(lazy), startAt: null, delay: 0, onUpdate: onUpdate, onUpdateParams: onUpdateParams, callbackScope: callbackScope, stagger: 0}, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);\n\t\t\t\t(time < 0 && !immediateRender && !autoRevert) && tween._startAt.render(-1, true); // rare edge case, like if a render is forced in the negative direction of a non-initted tween.\n\t\t\t\tif (immediateRender) {\n\t\t\t\t\t(time > 0) && !autoRevert && (tween._startAt = 0); //tweens that render immediately (like most from() and fromTo() tweens) shouldn't revert when their parent timeline's playhead goes backward past the startTime because the initial render could have happened anytime and it shouldn't be directly correlated to this tween's startTime. Imagine setting up a complex animation where the beginning states of various objects are rendered immediately but the tween doesn't happen for quite some time - if we revert to the starting values as soon as the playhead goes backward past the tween's startTime, it will throw things off visually. Reversion should only happen in Timeline instances where immediateRender was false or when autoRevert is explicitly set to true.\n\t\t\t\t\tif (dur && time <= 0) {\n\t\t\t\t\t\ttime && (tween._zTime = time);\n\t\t\t\t\t\treturn; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.\n\t\t\t\t\t}\n\t\t\t\t\t// if (time > 0) {\n\t\t\t\t\t// \tautoRevert || (tween._startAt = 0); //tweens that render immediately (like most from() and fromTo() tweens) shouldn't revert when their parent timeline's playhead goes backward past the startTime because the initial render could have happened anytime and it shouldn't be directly correlated to this tween's startTime. Imagine setting up a complex animation where the beginning states of various objects are rendered immediately but the tween doesn't happen for quite some time - if we revert to the starting values as soon as the playhead goes backward past the tween's startTime, it will throw things off visually. Reversion should only happen in Timeline instances where immediateRender was false or when autoRevert is explicitly set to true.\n\t\t\t\t\t// } else if (dur && !(time < 0 && prevStartAt)) {\n\t\t\t\t\t// \ttime && (tween._zTime = time);\n\t\t\t\t\t// \treturn; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.\n\t\t\t\t\t// }\n\t\t\t\t} else if (autoRevert === false) {\n\t\t\t\t\ttween._startAt = 0;\n\t\t\t\t}\n\t\t\t} else if (runBackwards && dur) {\n\t\t\t\t//from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)\n\t\t\t\tif (prevStartAt) {\n\t\t\t\t\t!autoRevert && (tween._startAt = 0);\n\t\t\t\t} else {\n\t\t\t\t\ttime && (immediateRender = false); //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0\n\t\t\t\t\tp = _setDefaults({\n\t\t\t\t\t\toverwrite: false,\n\t\t\t\t\t\tdata: \"isFromStart\", //we tag the tween with as \"isFromStart\" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a \"from()\" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:\"height\", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.\n\t\t\t\t\t\tlazy: immediateRender && _isNotFalse(lazy),\n\t\t\t\t\t\timmediateRender: immediateRender, //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)\n\t\t\t\t\t\tstagger: 0,\n\t\t\t\t\t\tparent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(\".class\", {y:gsap.utils.wrap([-100,100])})\n\t\t\t\t\t}, cleanVars);\n\t\t\t\t\tharnessVars && (p[harness.prop] = harnessVars); // in case someone does something like .from(..., {css:{}})\n\t\t\t\t\t_removeFromParent(tween._startAt = Tween.set(targets, p));\n\t\t\t\t\t(time < 0) && tween._startAt.render(-1, true); // rare edge case, like if a render is forced in the negative direction of a non-initted from() tween.\n\t\t\t\t\tif (!immediateRender) {\n\t\t\t\t\t\t_initTween(tween._startAt, _tinyNum); //ensures that the initial values are recorded\n\t\t\t\t\t} else if (!time) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttween._pt = 0;\n\t\t\tlazy = (dur && _isNotFalse(lazy)) || (lazy && !dur);\n\t\t\tfor (i = 0; i < targets.length; i++) {\n\t\t\t\ttarget = targets[i];\n\t\t\t\tgsData = target._gsap || _harness(targets)[i]._gsap;\n\t\t\t\ttween._ptLookup[i] = ptLookup = {};\n\t\t\t\t_lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)\n\t\t\t\tindex = fullTargets === targets ? i : fullTargets.indexOf(target);\n\t\t\t\tif (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {\n\t\t\t\t\ttween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\t\t\t\t\tplugin._props.forEach(name => {ptLookup[name] = pt;});\n\t\t\t\t\tplugin.priority && (hasPriority = 1);\n\t\t\t\t}\n\t\t\t\tif (!harness || harnessVars) {\n\t\t\t\t\tfor (p in cleanVars) {\n\t\t\t\t\t\tif (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {\n\t\t\t\t\t\t\tplugin.priority && (hasPriority = 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tptLookup[p] = pt = _addPropTween.call(tween, target, p, \"get\", cleanVars[p], index, fullTargets, 0, vars.stringFilter);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttween._op && tween._op[i] && tween.kill(target, tween._op[i]);\n\t\t\t\tif (autoOverwrite && tween._pt) {\n\t\t\t\t\t_overwritingTween = tween;\n\t\t\t\t\t_globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(0)); //Also make sure the overwriting doesn't overwrite THIS tween!!!\n\t\t\t\t\toverwritten = !tween.parent;\n\t\t\t\t\t_overwritingTween = 0;\n\t\t\t\t}\n\t\t\t\ttween._pt && lazy && (_lazyLookup[gsData.id] = 1);\n\t\t\t}\n\t\t\thasPriority && _sortPropTweensByPriority(tween);\n\t\t\ttween._onInit && tween._onInit(tween); //plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.\n\t\t}\n\t\ttween._onUpdate = onUpdate;\n\t\ttween._initted = (!tween._op || tween._pt) && !overwritten; // if overwrittenProps resulted in the entire tween being killed, do NOT flag it as initted or else it may render for one tick.\n\t},\n\t_addAliasesToVars = (targets, vars) => {\n\t\tlet harness = targets[0] ? _getCache(targets[0]).harness : 0,\n\t\t\tpropertyAliases = (harness && harness.aliases),\n\t\t\tcopy, p, i, aliases;\n\t\tif (!propertyAliases) {\n\t\t\treturn vars;\n\t\t}\n\t\tcopy = _merge({}, vars);\n\t\tfor (p in propertyAliases) {\n\t\t\tif (p in copy) {\n\t\t\t\taliases = propertyAliases[p].split(\",\");\n\t\t\t\ti = aliases.length;\n\t\t\t\twhile(i--) {\n\t\t\t\t\tcopy[aliases[i]] = copy[p];\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\treturn copy;\n\t},\n\t_parseFuncOrString = (value, tween, i, target, targets) => (_isFunction(value) ? value.call(tween, i, target, targets) : (_isString(value) && ~value.indexOf(\"random(\")) ? _replaceRandom(value) : value),\n\t_staggerTweenProps = _callbackNames + \"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase\",\n\t_staggerPropsToSkip = (_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\").split(\",\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*\n * --------------------------------------------------------------------------------------\n * TWEEN\n * --------------------------------------------------------------------------------------\n */\n\nexport class Tween extends Animation {\n\n\tconstructor(targets, vars, position, skipInherit) {\n\t\tif (typeof(vars) === \"number\") {\n\t\t\tposition.duration = vars;\n\t\t\tvars = position;\n\t\t\tposition = null;\n\t\t}\n\t\tsuper(skipInherit ? vars : _inheritDefaults(vars));\n\t\tlet { duration, delay, immediateRender, stagger, overwrite, keyframes, defaults, scrollTrigger, yoyoEase } = this.vars,\n\t\t\tparent = vars.parent || _globalTimeline,\n\t\t\tparsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : (\"length\" in vars)) ? [targets] : toArray(targets), // edge case: someone might try animating the \"length\" of an object with a \"length\" property that's initially set to 0 so don't interpret that as an empty Array-like object.\n\t\t\ttl, i, copy, l, p, curTarget, staggerFunc, staggerVarsToMerge;\n\t\tthis._targets = parsedTargets.length ? _harness(parsedTargets) : _warn(\"GSAP target \" + targets + \" not found. https://greensock.com\", !_config.nullTargetWarn) || [];\n\t\tthis._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property\n\t\tthis._overwrite = overwrite;\n\t\tif (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n\t\t\tvars = this.vars;\n\t\t\ttl = this.timeline = new Timeline({data:\"nested\", defaults:defaults || {}});\n\t\t\ttl.kill();\n\t\t\ttl.parent = tl._dp = this;\n\t\t\ttl._start = 0;\n\t\t\tif (keyframes) {\n\t\t\t\t_setDefaults(tl.vars.defaults, {ease:\"none\"});\n\t\t\t\tstagger ? parsedTargets.forEach((t, i) => keyframes.forEach((frame, j) => tl.to(t, frame, j ? \">\" : i * stagger))) : keyframes.forEach(frame => tl.to(parsedTargets, frame, \">\"));\n\t\t\t} else {\n\t\t\t\tl = parsedTargets.length;\n\t\t\t\tstaggerFunc = stagger ? distribute(stagger) : _emptyFunc;\n\t\t\t\tif (_isObject(stagger)) { //users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.\n\t\t\t\t\tfor (p in stagger) {\n\t\t\t\t\t\tif (~_staggerTweenProps.indexOf(p)) {\n\t\t\t\t\t\t\tstaggerVarsToMerge || (staggerVarsToMerge = {});\n\t\t\t\t\t\t\tstaggerVarsToMerge[p] = stagger[p];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\t\tcopy = {};\n\t\t\t\t\tfor (p in vars) {\n\t\t\t\t\t\tif (_staggerPropsToSkip.indexOf(p) < 0) {\n\t\t\t\t\t\t\tcopy[p] = vars[p];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcopy.stagger = 0;\n\t\t\t\t\tyoyoEase && (copy.yoyoEase = yoyoEase);\n\t\t\t\t\tstaggerVarsToMerge && _merge(copy, staggerVarsToMerge);\n\t\t\t\t\tcurTarget = parsedTargets[i];\n\t\t\t\t\t//don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.\n\t\t\t\t\tcopy.duration = +_parseFuncOrString(duration, this, i, curTarget, parsedTargets);\n\t\t\t\t\tcopy.delay = (+_parseFuncOrString(delay, this, i, curTarget, parsedTargets) || 0) - this._delay;\n\t\t\t\t\tif (!stagger && l === 1 && copy.delay) { // if someone does delay:\"random(1, 5)\", repeat:-1, for example, the delay shouldn't be inside the repeat.\n\t\t\t\t\t\tthis._delay = delay = copy.delay;\n\t\t\t\t\t\tthis._start += delay;\n\t\t\t\t\t\tcopy.delay = 0;\n\t\t\t\t\t}\n\t\t\t\t\ttl.to(curTarget, copy, staggerFunc(i, curTarget, parsedTargets));\n\t\t\t\t}\n\t\t\t\ttl.duration() ? (duration = delay = 0) : (this.timeline = 0); // if the timeline's duration is 0, we don't need a timeline internally!\n\t\t\t}\n\t\t\tduration || this.duration((duration = tl.duration()));\n\n\t\t} else {\n\t\t\tthis.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)\n\t\t}\n\n\t\tif (overwrite === true && !_suppressOverwrites) {\n\t\t\t_overwritingTween = this;\n\t\t\t_globalTimeline.killTweensOf(parsedTargets);\n\t\t\t_overwritingTween = 0;\n\t\t}\n\t\t_addToTimeline(parent, this, position);\n\t\tvars.reversed && this.reverse();\n\t\tvars.paused && this.paused(true);\n\t\tif (immediateRender || (!duration && !keyframes && this._start === _round(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(this) && parent.data !== \"nested\")) {\n\t\t\tthis._tTime = -_tinyNum; //forces a render without having to set the render() \"force\" parameter to true because we want to allow lazying by default (using the \"force\" parameter always forces an immediate full render)\n\t\t\tthis.render(Math.max(0, -delay)); //in case delay is negative\n\t\t}\n\t\tscrollTrigger && _scrollTrigger(this, scrollTrigger);\n\t}\n\n\trender(totalTime, suppressEvents, force) {\n\t\tlet prevTime = this._time,\n\t\t\ttDur = this._tDur,\n\t\t\tdur = this._dur,\n\t\t\ttTime = (totalTime > tDur - _tinyNum && totalTime >= 0) ? tDur : (totalTime < _tinyNum) ? 0 : totalTime,\n\t\t\ttime, pt, iteration, cycleDuration, prevIteration, isYoyo, ratio, timeline, yoyoEase;\n\t\tif (!dur) {\n\t\t\t_renderZeroDurationTween(this, totalTime, suppressEvents, force);\n\t\t} else if (tTime !== this._tTime || !totalTime || force || (!this._initted && this._tTime) || (this._startAt && (this._zTime < 0) !== (totalTime < 0))) { //this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)\n\t\t\ttime = tTime;\n\t\t\ttimeline = this.timeline;\n\t\t\tif (this._repeat) { //adjust the time for repeats and yoyos\n\t\t\t\tcycleDuration = dur + this._rDelay;\n\t\t\t\tif (this._repeat < -1 && totalTime < 0) {\n\t\t\t\t\treturn this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n\t\t\t\t}\n\t\t\t\ttime = _round(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\t\t\t\tif (tTime === tDur) { // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n\t\t\t\t\titeration = this._repeat;\n\t\t\t\t\ttime = dur;\n\t\t\t\t} else {\n\t\t\t\t\titeration = ~~(tTime / cycleDuration);\n\t\t\t\t\tif (iteration && iteration === tTime / cycleDuration) {\n\t\t\t\t\t\ttime = dur;\n\t\t\t\t\t\titeration--;\n\t\t\t\t\t}\n\t\t\t\t\ttime > dur && (time = dur);\n\t\t\t\t}\n\t\t\t\tisYoyo = this._yoyo && (iteration & 1);\n\t\t\t\tif (isYoyo) {\n\t\t\t\t\tyoyoEase = this._yEase;\n\t\t\t\t\ttime = dur - time;\n\t\t\t\t}\n\t\t\t\tprevIteration = _animationCycle(this._tTime, cycleDuration);\n\t\t\t\tif (time === prevTime && !force && this._initted) {\n\t\t\t\t\t//could be during the repeatDelay part. No need to render and fire callbacks.\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tif (iteration !== prevIteration) {\n\t\t\t\t\ttimeline && this._yEase && _propagateYoyoEase(timeline, isYoyo);\n\t\t\t\t\t//repeatRefresh functionality\n\t\t\t\t\tif (this.vars.repeatRefresh && !isYoyo && !this._lock) {\n\t\t\t\t\t\tthis._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.\n\t\t\t\t\t\tthis.render(_round(cycleDuration * iteration), true).invalidate()._lock = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!this._initted) {\n\t\t\t\tif (_attemptInitTween(this, totalTime < 0 ? totalTime : time, force, suppressEvents)) {\n\t\t\t\t\tthis._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tif (dur !== this._dur) { // while initting, a plugin like InertiaPlugin might alter the duration, so rerun from the start to ensure everything renders as it should.\n\t\t\t\t\treturn this.render(totalTime, suppressEvents, force);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._tTime = tTime;\n\t\t\tthis._time = time;\n\n\t\t\tif (!this._act && this._ts) {\n\t\t\t\tthis._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\t\t\t\tthis._lazy = 0;\n\t\t\t}\n\n\t\t\tthis.ratio = ratio = (yoyoEase || this._ease)(time / dur);\n\t\t\tif (this._from) {\n\t\t\t\tthis.ratio = ratio = 1 - ratio;\n\t\t\t}\n\n\t\t\tif (time && !prevTime && !suppressEvents) {\n\t\t\t\t_callback(this, \"onStart\");\n\t\t\t\tif (this._tTime !== tTime) { // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpt = this._pt;\n\t\t\twhile (pt) {\n\t\t\t\tpt.r(ratio, pt.d);\n\t\t\t\tpt = pt._next;\n\t\t\t}\n\n\t\t\t(timeline && timeline.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline._dur * ratio, suppressEvents, force)) || (this._startAt && (this._zTime = totalTime));\n\n\t\t\tif (this._onUpdate && !suppressEvents) {\n\t\t\t\ttotalTime < 0 && this._startAt && this._startAt.render(totalTime, true, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.\n\t\t\t\t_callback(this, \"onUpdate\");\n\t\t\t}\n\n\t\t\tthis._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n\n\t\t\tif ((tTime === this._tDur || !tTime) && this._tTime === tTime) {\n\t\t\t\ttotalTime < 0 && this._startAt && !this._onUpdate && this._startAt.render(totalTime, true, true);\n\t\t\t\t(totalTime || !dur) && ((tTime === this._tDur && this._ts > 0) || (!tTime && this._ts < 0)) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\t\t\t if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime)) { // if prevTime and tTime are zero, we shouldn't fire the onReverseComplete. This could happen if you gsap.to(... {paused:true}).play();\n\t\t\t\t\t_callback(this, (tTime === tDur ? \"onComplete\" : \"onReverseComplete\"), true);\n\t\t\t\t\tthis._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\treturn this;\n\t}\n\n\ttargets() {\n\t\treturn this._targets;\n\t}\n\n\tinvalidate() {\n\t\tthis._pt = this._op = this._startAt = this._onUpdate = this._lazy = this.ratio = 0;\n\t\tthis._ptLookup = [];\n\t\tthis.timeline && this.timeline.invalidate();\n\t\treturn super.invalidate();\n\t}\n\n\tkill(targets, vars = \"all\") {\n\t\tif (!targets && (!vars || vars === \"all\")) {\n\t\t\tthis._lazy = this._pt = 0;\n\t\t\treturn this.parent ? _interrupt(this) : this;\n\t\t}\n\t\tif (this.timeline) {\n\t\t\tlet tDur = this.timeline.totalDuration();\n\t\t\tthis.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); // if nothing is left tweening, interrupt.\n\t\t\tthis.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); // if a nested tween is killed that changes the duration, it should affect this tween's duration. We must use the ratio, though, because sometimes the internal timeline is stretched like for keyframes where they don't all add up to whatever the parent tween's duration was set to.\n\t\t\treturn this;\n\t\t}\n\t\tlet parsedTargets = this._targets,\n\t\t\tkillingTargets = targets ? toArray(targets) : parsedTargets,\n\t\t\tpropTweenLookup = this._ptLookup,\n\t\t\tfirstPT = this._pt,\n\t\t\toverwrittenProps, curLookup, curOverwriteProps, props, p, pt, i;\n\t\tif ((!vars || vars === \"all\") && _arraysMatch(parsedTargets, killingTargets)) {\n\t\t\tvars === \"all\" && (this._pt = 0);\n\t\t\treturn _interrupt(this);\n\t\t}\n\t\toverwrittenProps = this._op = this._op || [];\n\t\tif (vars !== \"all\") { //so people can pass in a comma-delimited list of property names\n\t\t\tif (_isString(vars)) {\n\t\t\t\tp = {};\n\t\t\t\t_forEachName(vars, name => p[name] = 1);\n\t\t\t\tvars = p;\n\t\t\t}\n\t\t\tvars = _addAliasesToVars(parsedTargets, vars);\n\t\t}\n\t\ti = parsedTargets.length;\n\t\twhile (i--) {\n\t\t\tif (~killingTargets.indexOf(parsedTargets[i])) {\n\t\t\t\tcurLookup = propTweenLookup[i];\n\t\t\t\tif (vars === \"all\") {\n\t\t\t\t\toverwrittenProps[i] = vars;\n\t\t\t\t\tprops = curLookup;\n\t\t\t\t\tcurOverwriteProps = {};\n\t\t\t\t} else {\n\t\t\t\t\tcurOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};\n\t\t\t\t\tprops = vars;\n\t\t\t\t}\n\t\t\t\tfor (p in props) {\n\t\t\t\t\tpt = curLookup && curLookup[p];\n\t\t\t\t\tif (pt) {\n\t\t\t\t\t\tif (!(\"kill\" in pt.d) || pt.d.kill(p) === true) {\n\t\t\t\t\t\t\t_removeLinkedListItem(this, pt, \"_pt\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete curLookup[p];\n\t\t\t\t\t}\n\t\t\t\t\tif (curOverwriteProps !== \"all\") {\n\t\t\t\t\t\tcurOverwriteProps[p] = 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._initted && !this._pt && firstPT && _interrupt(this); //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.\n\t\treturn this;\n\t}\n\n\n\tstatic to(targets, vars) {\n\t\treturn new Tween(targets, vars, arguments[2]);\n\t}\n\n\tstatic from(targets, vars) {\n\t\treturn _createTweenType(1, arguments);\n\t}\n\n\tstatic delayedCall(delay, callback, params, scope) {\n\t\treturn new Tween(callback, 0, {immediateRender:false, lazy:false, overwrite:false, delay:delay, onComplete:callback, onReverseComplete:callback, onCompleteParams:params, onReverseCompleteParams:params, callbackScope:scope});\n\t}\n\n\tstatic fromTo(targets, fromVars, toVars) {\n\t\treturn _createTweenType(2, arguments);\n\t}\n\n\tstatic set(targets, vars) {\n\t\tvars.duration = 0;\n\t\tvars.repeatDelay || (vars.repeat = 0);\n\t\treturn new Tween(targets, vars);\n\t}\n\n\tstatic killTweensOf(targets, props, onlyActive) {\n\t\treturn _globalTimeline.killTweensOf(targets, props, onlyActive);\n\t}\n}\n\n_setDefaults(Tween.prototype, {_targets:[], _lazy:0, _startAt:0, _op:0, _onInit:0});\n\n//add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)\n// _forEachName(\"to,from,fromTo,set,call,add,addLabel,addPause\", name => {\n// \tTween.prototype[name] = function() {\n// \t\tlet tl = new Timeline();\n// \t\treturn _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));\n// \t}\n// });\n\n//for backward compatibility. Leverage the timeline calls.\n_forEachName(\"staggerTo,staggerFrom,staggerFromTo\", name => {\n\tTween[name] = function() {\n\t\tlet tl = new Timeline(),\n\t\t\tparams = _slice.call(arguments, 0);\n\t\tparams.splice(name === \"staggerFromTo\" ? 5 : 4, 0, 0);\n\t\treturn tl[name].apply(tl, params);\n\t}\n});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*\n * --------------------------------------------------------------------------------------\n * PROPTWEEN\n * --------------------------------------------------------------------------------------\n */\nlet _setterPlain = (target, property, value) => target[property] = value,\n\t_setterFunc = (target, property, value) => target[property](value),\n\t_setterFuncWithParam = (target, property, value, data) => target[property](data.fp, value),\n\t_setterAttribute = (target, property, value) => target.setAttribute(property, value),\n\t_getSetter = (target, property) => _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain,\n\t_renderPlain = (ratio, data) => data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data),\n\t_renderBoolean = (ratio, data) => data.set(data.t, data.p, !!(data.s + data.c * ratio), data),\n\t_renderComplexString = function(ratio, data) {\n\t\tlet pt = data._pt,\n\t\t\ts = \"\";\n\t\tif (!ratio && data.b) { //b = beginning string\n\t\t\ts = data.b;\n\t\t} else if (ratio === 1 && data.e) { //e = ending string\n\t\t\ts = data.e;\n\t\t} else {\n\t\t\twhile (pt) {\n\t\t\t\ts = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : (Math.round((pt.s + pt.c * ratio) * 10000) / 10000)) + s; //we use the \"p\" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.\n\t\t\t\tpt = pt._next;\n\t\t\t}\n\t\t\ts += data.c; //we use the \"c\" of the PropTween to store the final chunk of non-numeric text.\n\t\t}\n\t\tdata.set(data.t, data.p, s, data);\n\t},\n\t_renderPropTweens = function(ratio, data) {\n\t\tlet pt = data._pt;\n\t\twhile (pt) {\n\t\t\tpt.r(ratio, pt.d);\n\t\t\tpt = pt._next;\n\t\t}\n\t},\n\t_addPluginModifier = function(modifier, tween, target, property) {\n\t\tlet pt = this._pt,\n\t\t\tnext;\n\t\twhile (pt) {\n\t\t\tnext = pt._next;\n\t\t\tpt.p === property && pt.modifier(modifier, tween, target);\n\t\t\tpt = next;\n\t\t}\n\t},\n\t_killPropTweensOf = function(property) {\n\t\tlet pt = this._pt,\n\t\t\thasNonDependentRemaining, next;\n\t\twhile (pt) {\n\t\t\tnext = pt._next;\n\t\t\tif ((pt.p === property && !pt.op) || pt.op === property) {\n\t\t\t\t_removeLinkedListItem(this, pt, \"_pt\");\n\t\t\t} else if (!pt.dep) {\n\t\t\t\thasNonDependentRemaining = 1;\n\t\t\t}\n\t\t\tpt = next;\n\t\t}\n\t\treturn !hasNonDependentRemaining;\n\t},\n\t_setterWithModifier = (target, property, value, data) => {\n\t\tdata.mSet(target, property, data.m.call(data.tween, value, data.mt), data);\n\t},\n\t_sortPropTweensByPriority = parent => {\n\t\tlet pt = parent._pt,\n\t\t\tnext, pt2, first, last;\n\t\t//sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)\n\t\twhile (pt) {\n\t\t\tnext = pt._next;\n\t\t\tpt2 = first;\n\t\t\twhile (pt2 && pt2.pr > pt.pr) {\n\t\t\t\tpt2 = pt2._next;\n\t\t\t}\n\t\t\tif ((pt._prev = pt2 ? pt2._prev : last)) {\n\t\t\t\tpt._prev._next = pt;\n\t\t\t} else {\n\t\t\t\tfirst = pt;\n\t\t\t}\n\t\t\tif ((pt._next = pt2)) {\n\t\t\t\tpt2._prev = pt;\n\t\t\t} else {\n\t\t\t\tlast = pt;\n\t\t\t}\n\t\t\tpt = next;\n\t\t}\n\t\tparent._pt = first;\n\t};\n\n//PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)\nexport class PropTween {\n\n\tconstructor(next, target, prop, start, change, renderer, data, setter, priority) {\n\t\tthis.t = target;\n\t\tthis.s = start;\n\t\tthis.c = change;\n\t\tthis.p = prop;\n\t\tthis.r = renderer || _renderPlain;\n\t\tthis.d = data || this;\n\t\tthis.set = setter || _setterPlain;\n\t\tthis.pr = priority || 0;\n\t\tthis._next = next;\n\t\tif (next) {\n\t\t\tnext._prev = this;\n\t\t}\n\t}\n\n\tmodifier(func, tween, target) {\n\t\tthis.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)\n\t\tthis.set = _setterWithModifier;\n\t\tthis.m = func;\n\t\tthis.mt = target; //modifier target\n\t\tthis.tween = tween;\n\t}\n}\n\n\n\n//Initialization tasks\n_forEachName(_callbackNames + \"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger\", name => _reservedProps[name] = 1);\n_globals.TweenMax = _globals.TweenLite = Tween;\n_globals.TimelineLite = _globals.TimelineMax = Timeline;\n_globalTimeline = new Timeline({sortChildren: false, defaults: _defaults, autoRemoveChildren: true, id:\"root\", smoothChildTiming: true});\n_config.stringFilter = _colorStringFilter;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*\n * --------------------------------------------------------------------------------------\n * GSAP\n * --------------------------------------------------------------------------------------\n */\nconst _gsap = {\n\tregisterPlugin(...args) {\n\t\targs.forEach(config => _createPlugin(config));\n\t},\n\ttimeline(vars) {\n\t\treturn new Timeline(vars);\n\t},\n\tgetTweensOf(targets, onlyActive) {\n\t\treturn _globalTimeline.getTweensOf(targets, onlyActive);\n\t},\n\tgetProperty(target, property, unit, uncache) {\n\t\t_isString(target) && (target = toArray(target)[0]); //in case selector text or an array is passed in\n\t\tlet getter = _getCache(target || {}).get,\n\t\t\tformat = unit ? _passThrough : _numericIfPossible;\n\t\tunit === \"native\" && (unit = \"\");\n\t\treturn !target ? target : !property ? (property, unit, uncache) => format(((_plugins[property] && _plugins[property].get) || getter)(target, property, unit, uncache)) : format(((_plugins[property] && _plugins[property].get) || getter)(target, property, unit, uncache));\n\t},\n\tquickSetter(target, property, unit) {\n\t\ttarget = toArray(target);\n\t\tif (target.length > 1) {\n\t\t\tlet setters = target.map(t => gsap.quickSetter(t, property, unit)),\n\t\t\t\tl = setters.length;\n\t\t\treturn value => {\n\t\t\t\tlet i = l;\n\t\t\t\twhile(i--) {\n\t\t\t\t\tsetters[i](value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttarget = target[0] || {};\n\t\tlet Plugin = _plugins[property],\n\t\t\tcache = _getCache(target),\n\t\t\tp = (cache.harness && (cache.harness.aliases || {})[property]) || property, // in case it's an alias, like \"rotate\" for \"rotation\".\n\t\t\tsetter = Plugin ? value => {\n\t\t\t\tlet p = new Plugin();\n\t\t\t\t_quickTween._pt = 0;\n\t\t\t\tp.init(target, unit ? value + unit : value, _quickTween, 0, [target]);\n\t\t\t\tp.render(1, p);\n\t\t\t\t_quickTween._pt && _renderPropTweens(1, _quickTween);\n\t\t\t} : cache.set(target, p);\n\t\treturn Plugin ? setter : value => setter(target, p, unit ? value + unit : value, cache, 1);\n\t},\n\tisTweening(targets) {\n\t\treturn _globalTimeline.getTweensOf(targets, true).length > 0;\n\t},\n\tdefaults(value) {\n\t\tvalue && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));\n\t\treturn _mergeDeep(_defaults, value || {});\n\t},\n\tconfig(value) {\n\t\treturn _mergeDeep(_config, value || {});\n\t},\n\tregisterEffect({name, effect, plugins, defaults, extendTimeline}) {\n\t\t(plugins || \"\").split(\",\").forEach(pluginName => pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + \" effect requires \" + pluginName + \" plugin.\"));\n\t\t_effects[name] = (targets, vars, tl) => effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);\n\t\tif (extendTimeline) {\n\t\t\tTimeline.prototype[name] = function(targets, vars, position) {\n\t\t\t\treturn this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);\n\t\t\t};\n\t\t}\n\t},\n\tregisterEase(name, ease) {\n\t\t_easeMap[name] = _parseEase(ease);\n\t},\n\tparseEase(ease, defaultEase) {\n\t\treturn arguments.length ? _parseEase(ease, defaultEase) : _easeMap;\n\t},\n\tgetById(id) {\n\t\treturn _globalTimeline.getById(id);\n\t},\n\texportRoot(vars = {}, includeDelayedCalls) {\n\t\tlet tl = new Timeline(vars),\n\t\t\tchild, next;\n\t\ttl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);\n\t\t_globalTimeline.remove(tl);\n\t\ttl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).\n\t\ttl._time = tl._tTime = _globalTimeline._time;\n\t\tchild = _globalTimeline._first;\n\t\twhile (child) {\n\t\t\tnext = child._next;\n\t\t\tif (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {\n\t\t\t\t_addToTimeline(tl, child, child._start - child._delay);\n\t\t\t}\n\t\t\tchild = next;\n\t\t}\n\t\t_addToTimeline(_globalTimeline, tl, 0);\n\t\treturn tl;\n\t},\n\tutils: { wrap, wrapYoyo, distribute, random, snap, normalize, getUnit, clamp, splitColor, toArray, selector, mapRange, pipe, unitize, interpolate, shuffle },\n\tinstall: _install,\n\teffects: _effects,\n\tticker: _ticker,\n\tupdateRoot: Timeline.updateRoot,\n\tplugins: _plugins,\n\tglobalTimeline: _globalTimeline,\n\tcore: {PropTween, globals: _addGlobal, Tween, Timeline, Animation, getCache: _getCache, _removeLinkedListItem, suppressOverwrites: value => _suppressOverwrites = value}\n};\n\n_forEachName(\"to,from,fromTo,delayedCall,set,killTweensOf\", name => _gsap[name] = Tween[name]);\n_ticker.add(Timeline.updateRoot);\n_quickTween = _gsap.to({}, {duration:0});\n\n\n\n\n// ---- EXTRA PLUGINS --------------------------------------------------------\n\n\nlet _getPluginPropTween = (plugin, prop) => {\n\t\tlet pt = plugin._pt;\n\t\twhile (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {\n\t\t\tpt = pt._next;\n\t\t}\n\t\treturn pt;\n\t},\n\t_addModifiers = (tween, modifiers) => {\n\t\t\tlet\ttargets = tween._targets,\n\t\t\t\tp, i, pt;\n\t\t\tfor (p in modifiers) {\n\t\t\t\ti = targets.length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tpt = tween._ptLookup[i][p];\n\t\t\t\t\tif (pt && (pt = pt.d)) {\n\t\t\t\t\t\tif (pt._pt) { // is a plugin\n\t\t\t\t\t\t\tpt = _getPluginPropTween(pt, p);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t},\n\t_buildModifierPlugin = (name, modifier) => {\n\t\treturn {\n\t\t\tname: name,\n\t\t\trawVars: 1, //don't pre-process function-based values or \"random()\" strings.\n\t\t\tinit(target, vars, tween) {\n\t\t\t\ttween._onInit = tween => {\n\t\t\t\t\tlet temp, p;\n\t\t\t\t\tif (_isString(vars)) {\n\t\t\t\t\t\ttemp = {};\n\t\t\t\t\t\t_forEachName(vars, name => temp[name] = 1); //if the user passes in a comma-delimited list of property names to roundProps, like \"x,y\", we round to whole numbers.\n\t\t\t\t\t\tvars = temp;\n\t\t\t\t\t}\n\t\t\t\t\tif (modifier) {\n\t\t\t\t\t\ttemp = {};\n\t\t\t\t\t\tfor (p in vars) {\n\t\t\t\t\t\t\ttemp[p] = modifier(vars[p]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvars = temp;\n\t\t\t\t\t}\n\t\t\t\t\t_addModifiers(tween, vars);\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t};\n\n//register core plugins\nexport const gsap = _gsap.registerPlugin({\n\t\tname:\"attr\",\n\t\tinit(target, vars, tween, index, targets) {\n\t\t\tlet p, pt;\n\t\t\tfor (p in vars) {\n\t\t\t\tpt = this.add(target, \"setAttribute\", (target.getAttribute(p) || 0) + \"\", vars[p], index, targets, 0, 0, p);\n\t\t\t\tpt && (pt.op = p);\n\t\t\t\tthis._props.push(p);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tname:\"endArray\",\n\t\tinit(target, value) {\n\t\t\tlet i = value.length;\n\t\t\twhile (i--) {\n\t\t\t\tthis.add(target, i, target[i] || 0, value[i]);\n\t\t\t}\n\t\t}\n\t},\n\t_buildModifierPlugin(\"roundProps\", _roundModifier),\n\t_buildModifierPlugin(\"modifiers\"),\n\t_buildModifierPlugin(\"snap\", snap)\n) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.\n\nTween.version = Timeline.version = gsap.version = \"3.7.1\";\n_coreReady = 1;\n_windowExists() && _wake();\n\nexport const { Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ } = _easeMap;\nexport { Tween as TweenMax, Tween as TweenLite, Timeline as TimelineMax, Timeline as TimelineLite, gsap as default, wrap, wrapYoyo, distribute, random, snap, normalize, getUnit, clamp, splitColor, toArray, selector, mapRange, pipe, unitize, interpolate, shuffle };\n//export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.\nexport { _getProperty, _numExp, _numWithUnitExp, _isString, _isUndefined, _renderComplexString, _relExp, _setDefaults, _removeLinkedListItem, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _replaceRandom, _checkPlugin, _plugins, _ticker, _config, _roundModifier, _round, _missingPlugin, _getSetter, _getCache, _colorExp }","/*!\n * CSSPlugin 3.7.1\n * https://greensock.com\n *\n * Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n/* eslint-disable */\n\nimport {gsap, _getProperty, _numExp, _numWithUnitExp, getUnit, _isString, _isUndefined, _renderComplexString, _relExp, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _checkPlugin, _replaceRandom, _plugins, GSCache, PropTween, _config, _ticker, _round, _missingPlugin, _getSetter, _getCache, _colorExp,\n\t_setDefaults, _removeLinkedListItem //for the commented-out className feature.\n} from \"./gsap-core.js\";\n\nlet _win, _doc, _docElement, _pluginInitted, _tempDiv, _tempDivStyler, _recentSetterPlugin,\n\t_windowExists = () => typeof(window) !== \"undefined\",\n\t_transformProps = {},\n\t_RAD2DEG = 180 / Math.PI,\n\t_DEG2RAD = Math.PI / 180,\n\t_atan2 = Math.atan2,\n\t_bigNum = 1e8,\n\t_capsExp = /([A-Z])/g,\n\t_horizontalExp = /(?:left|right|width|margin|padding|x)/i,\n\t_complexExp = /[\\s,\\(]\\S/,\n\t_propertyAliases = {autoAlpha:\"opacity,visibility\", scale:\"scaleX,scaleY\", alpha:\"opacity\"},\n\t_renderCSSProp = (ratio, data) => data.set(data.t, data.p, (Math.round((data.s + data.c * ratio) * 10000) / 10000) + data.u, data),\n\t_renderPropWithEnd = (ratio, data) => data.set(data.t, data.p, ratio === 1 ? data.e : (Math.round((data.s + data.c * ratio) * 10000) / 10000) + data.u, data),\n\t_renderCSSPropWithBeginning = (ratio, data) => data.set(data.t, data.p, ratio ? (Math.round((data.s + data.c * ratio) * 10000) / 10000) + data.u : data.b, data), //if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)\n\t_renderRoundedCSSProp = (ratio, data) => {\n\t\tlet value = data.s + data.c * ratio;\n\t\tdata.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);\n\t},\n\t_renderNonTweeningValue = (ratio, data) => data.set(data.t, data.p, ratio ? data.e : data.b, data),\n\t_renderNonTweeningValueOnlyAtEnd = (ratio, data) => data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data),\n\t_setterCSSStyle = (target, property, value) => target.style[property] = value,\n\t_setterCSSProp = (target, property, value) => target.style.setProperty(property, value),\n\t_setterTransform = (target, property, value) => target._gsap[property] = value,\n\t_setterScale = (target, property, value) => target._gsap.scaleX = target._gsap.scaleY = value,\n\t_setterScaleWithRender = (target, property, value, data, ratio) => {\n\t\tlet cache = target._gsap;\n\t\tcache.scaleX = cache.scaleY = value;\n\t\tcache.renderTransform(ratio, cache);\n\t},\n\t_setterTransformWithRender = (target, property, value, data, ratio) => {\n\t\tlet cache = target._gsap;\n\t\tcache[property] = value;\n\t\tcache.renderTransform(ratio, cache);\n\t},\n\t_transformProp = \"transform\",\n\t_transformOriginProp = _transformProp + \"Origin\",\n\t_supports3D,\n\t_createElement = (type, ns) => {\n\t\tlet e = _doc.createElementNS ? _doc.createElementNS((ns || \"http://www.w3.org/1999/xhtml\").replace(/^https/, \"http\"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making \"style\" inaccessible.\n\t\treturn e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://greensock.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).\n\t},\n\t_getComputedProperty = (target, property, skipPrefixFallback) => {\n\t\tlet cs = getComputedStyle(target);\n\t\treturn cs[property] || cs.getPropertyValue(property.replace(_capsExp, \"-$1\").toLowerCase()) || cs.getPropertyValue(property) || (!skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1)) || \"\"; //css variables may not need caps swapped out for dashes and lowercase.\n\t},\n\t_prefixes = \"O,Moz,ms,Ms,Webkit\".split(\",\"),\n\t_checkPropPrefix = (property, element, preferPrefix) => {\n\t\tlet e = element || _tempDiv,\n\t\t\ts = e.style,\n\t\t\ti = 5;\n\t\tif (property in s && !preferPrefix) {\n\t\t\treturn property;\n\t\t}\n\t\tproperty = property.charAt(0).toUpperCase() + property.substr(1);\n\t\twhile (i-- && !((_prefixes[i]+property) in s)) { }\n\t\treturn (i < 0) ? null : ((i === 3) ? \"ms\" : (i >= 0) ? _prefixes[i] : \"\") + property;\n\t},\n\t_initCore = () => {\n\t\tif (_windowExists() && window.document) {\n\t\t\t_win = window;\n\t\t\t_doc = _win.document;\n\t\t\t_docElement = _doc.documentElement;\n\t\t\t_tempDiv = _createElement(\"div\") || {style:{}};\n\t\t\t_tempDivStyler = _createElement(\"div\");\n\t\t\t_transformProp = _checkPropPrefix(_transformProp);\n\t\t\t_transformOriginProp = _transformProp + \"Origin\";\n\t\t\t_tempDiv.style.cssText = \"border-width:0;line-height:0;position:absolute;padding:0\"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.\n\t\t\t_supports3D = !!_checkPropPrefix(\"perspective\");\n\t\t\t_pluginInitted = 1;\n\t\t}\n\t},\n\t_getBBoxHack = function(swapIfPossible) { //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a <defs> element and/or <mask>. We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).\n\t\tlet svg = _createElement(\"svg\", (this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\")) || \"http://www.w3.org/2000/svg\"),\n\t\t\toldParent = this.parentNode,\n\t\t\toldSibling = this.nextSibling,\n\t\t\toldCSS = this.style.cssText,\n\t\t\tbbox;\n\t\t_docElement.appendChild(svg);\n\t\tsvg.appendChild(this);\n\t\tthis.style.display = \"block\";\n\t\tif (swapIfPossible) {\n\t\t\ttry {\n\t\t\t\tbbox = this.getBBox();\n\t\t\t\tthis._gsapBBox = this.getBBox; //store the original\n\t\t\t\tthis.getBBox = _getBBoxHack;\n\t\t\t} catch (e) { }\n\t\t} else if (this._gsapBBox) {\n\t\t\tbbox = this._gsapBBox();\n\t\t}\n\t\tif (oldParent) {\n\t\t\tif (oldSibling) {\n\t\t\t\toldParent.insertBefore(this, oldSibling);\n\t\t\t} else {\n\t\t\t\toldParent.appendChild(this);\n\t\t\t}\n\t\t}\n\t\t_docElement.removeChild(svg);\n\t\tthis.style.cssText = oldCSS;\n\t\treturn bbox;\n\t},\n\t_getAttributeFallbacks = (target, attributesArray) => {\n\t\tlet i = attributesArray.length;\n\t\twhile (i--) {\n\t\t\tif (target.hasAttribute(attributesArray[i])) {\n\t\t\t\treturn target.getAttribute(attributesArray[i]);\n\t\t\t}\n\t\t}\n\t},\n\t_getBBox = target => {\n\t\tlet bounds;\n\t\ttry {\n\t\t\tbounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a <symbol> or <defs>). https://bugzilla.mozilla.org/show_bug.cgi?id=612118\n\t\t} catch (error) {\n\t\t\tbounds = _getBBoxHack.call(target, true);\n\t\t}\n\t\t(bounds && (bounds.width || bounds.height)) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true));\n\t\t//some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.\n\t\treturn (bounds && !bounds.width && !bounds.x && !bounds.y) ? {x: +_getAttributeFallbacks(target, [\"x\",\"cx\",\"x1\"]) || 0, y:+_getAttributeFallbacks(target, [\"y\",\"cy\",\"y1\"]) || 0, width:0, height:0} : bounds;\n\t},\n\t_isSVG = e => !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e)), //reports if the element is an SVG on which getBBox() actually works\n\t_removeProperty = (target, property) => {\n\t\tif (property) {\n\t\t\tlet style = target.style;\n\t\t\tif (property in _transformProps && property !== _transformOriginProp) {\n\t\t\t\tproperty = _transformProp;\n\t\t\t}\n\t\t\tif (style.removeProperty) {\n\t\t\t\tif (property.substr(0,2) === \"ms\" || property.substr(0,6) === \"webkit\") { //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be \"ms-transform\" instead of \"-ms-transform\" for IE9, for example)\n\t\t\t\t\tproperty = \"-\" + property;\n\t\t\t\t}\n\t\t\t\tstyle.removeProperty(property.replace(_capsExp, \"-$1\").toLowerCase());\n\t\t\t} else { //note: old versions of IE use \"removeAttribute()\" instead of \"removeProperty()\"\n\t\t\t\tstyle.removeAttribute(property);\n\t\t\t}\n\t\t}\n\t},\n\t_addNonTweeningPT = (plugin, target, property, beginning, end, onlySetAtEnd) => {\n\t\tlet pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);\n\t\tplugin._pt = pt;\n\t\tpt.b = beginning;\n\t\tpt.e = end;\n\t\tplugin._props.push(property);\n\t\treturn pt;\n\t},\n\t_nonConvertibleUnits = {deg:1, rad:1, turn:1},\n\t//takes a single value like 20px and converts it to the unit specified, like \"%\", returning only the numeric amount.\n\t_convertToUnit = (target, property, value, unit) => {\n\t\tlet curValue = parseFloat(value) || 0,\n\t\t\tcurUnit = (value + \"\").trim().substr((curValue + \"\").length) || \"px\", // some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()\n\t\t\tstyle = _tempDiv.style,\n\t\t\thorizontal = _horizontalExp.test(property),\n\t\t\tisRootSVG = target.tagName.toLowerCase() === \"svg\",\n\t\t\tmeasureProperty = (isRootSVG ? \"client\" : \"offset\") + (horizontal ? \"Width\" : \"Height\"),\n\t\t\tamount = 100,\n\t\t\ttoPixels = unit === \"px\",\n\t\t\ttoPercent = unit === \"%\",\n\t\t\tpx, parent, cache, isSVG;\n\t\tif (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {\n\t\t\treturn curValue;\n\t\t}\n\t\t(curUnit !== \"px\" && !toPixels) && (curValue = _convertToUnit(target, property, value, \"px\"));\n\t\tisSVG = target.getCTM && _isSVG(target);\n\t\tif ((toPercent || curUnit === \"%\") && (_transformProps[property] || ~property.indexOf(\"adius\"))) {\n\t\t\tpx = isSVG ? target.getBBox()[horizontal ? \"width\" : \"height\"] : target[measureProperty];\n\t\t\treturn _round(toPercent ? curValue / px * amount : curValue / 100 * px);\n\t\t}\n\t\tstyle[horizontal ? \"width\" : \"height\"] = amount + (toPixels ? curUnit : unit);\n\t\tparent = (~property.indexOf(\"adius\") || (unit === \"em\" && target.appendChild && !isRootSVG)) ? target : target.parentNode;\n\t\tif (isSVG) {\n\t\t\tparent = (target.ownerSVGElement || {}).parentNode;\n\t\t}\n\t\tif (!parent || parent === _doc || !parent.appendChild) {\n\t\t\tparent = _doc.body;\n\t\t}\n\t\tcache = parent._gsap;\n\t\tif (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time) {\n\t\t\treturn _round(curValue / cache.width * amount);\n\t\t} else {\n\t\t\t(toPercent || curUnit === \"%\") && (style.position = _getComputedProperty(target, \"position\"));\n\t\t\t(parent === target) && (style.position = \"static\"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.\n\t\t\tparent.appendChild(_tempDiv);\n\t\t\tpx = _tempDiv[measureProperty];\n\t\t\tparent.removeChild(_tempDiv);\n\t\t\tstyle.position = \"absolute\";\n\t\t\tif (horizontal && toPercent) {\n\t\t\t\tcache = _getCache(parent);\n\t\t\t\tcache.time = _ticker.time;\n\t\t\t\tcache.width = parent[measureProperty];\n\t\t\t}\n\t\t}\n\t\treturn _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);\n\t},\n\t_get = (target, property, unit, uncache) => {\n\t\tlet value;\n\t\t_pluginInitted || _initCore();\n\t\tif ((property in _propertyAliases) && property !== \"transform\") {\n\t\t\tproperty = _propertyAliases[property];\n\t\t\tif (~property.indexOf(\",\")) {\n\t\t\t\tproperty = property.split(\",\")[0];\n\t\t\t}\n\t\t}\n\t\tif (_transformProps[property] && property !== \"transform\") {\n\t\t\tvalue = _parseTransform(target, uncache);\n\t\t\tvalue = (property !== \"transformOrigin\") ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + \" \" + value.zOrigin + \"px\";\n\t\t} else {\n\t\t\tvalue = target.style[property];\n\t\t\tif (!value || value === \"auto\" || uncache || ~(value + \"\").indexOf(\"calc(\")) {\n\t\t\t\tvalue = (_specialProps[property] && _specialProps[property](target, property, unit)) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === \"opacity\" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like borderTopLeftRadius\n\t\t\t}\n\t\t}\n\t\treturn unit && !~(value + \"\").trim().indexOf(\" \") ? _convertToUnit(target, property, value, unit) + unit : value;\n\n\t},\n\t_tweenComplexCSSString = function(target, prop, start, end) { //note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n\t\tif (!start || start === \"none\") { // some browsers like Safari actually PREFER the prefixed property and mis-report the unprefixed value like clipPath (BUG). In other words, even though clipPath exists in the style (\"clipPath\" in target.style) and it's set in the CSS properly (along with -webkit-clip-path), Safari reports clipPath as \"none\" whereas WebkitClipPath reports accurately like \"ellipse(100% 0% at 50% 0%)\", so in this case we must SWITCH to using the prefixed property instead. See https://greensock.com/forums/topic/18310-clippath-doesnt-work-on-ios/\n\t\t\tlet p = _checkPropPrefix(prop, target, 1),\n\t\t\t\ts = p && _getComputedProperty(target, p, 1);\n\t\t\tif (s && s !== start) {\n\t\t\t\tprop = p;\n\t\t\t\tstart = s;\n\t\t\t} else if (prop === \"borderColor\") {\n\t\t\t\tstart = _getComputedProperty(target, \"borderTopColor\"); // Firefox bug: always reports \"borderColor\" as \"\", so we must fall back to borderTopColor. See https://greensock.com/forums/topic/24583-how-to-return-colors-that-i-had-after-reverse/\n\t\t\t}\n\t\t}\n\t\tlet pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),\n\t\t\tindex = 0,\n\t\t\tmatchIndex = 0,\n\t\t\ta, result,\tstartValues, startNum, color, startValue, endValue, endNum, chunk, endUnit, startUnit, relative, endValues;\n\t\tpt.b = start;\n\t\tpt.e = end;\n\t\tstart += \"\"; //ensure values are strings\n\t\tend += \"\";\n\t\tif (end === \"auto\") {\n\t\t\ttarget.style[prop] = end;\n\t\t\tend = _getComputedProperty(target, prop) || end;\n\t\t\ttarget.style[prop] = start;\n\t\t}\n\t\ta = [start, end];\n\t\t_colorStringFilter(a); //pass an array with the starting and ending values and let the filter do whatever it needs to the values. If colors are found, it returns true and then we must match where the color shows up order-wise because for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary. Same for drop-shadow().\n\t\tstart = a[0];\n\t\tend = a[1];\n\t\tstartValues = start.match(_numWithUnitExp) || [];\n\t\tendValues = end.match(_numWithUnitExp) || [];\n\t\tif (endValues.length) {\n\t\t\twhile ((result = _numWithUnitExp.exec(end))) {\n\t\t\t\tendValue = result[0];\n\t\t\t\tchunk = end.substring(index, result.index);\n\t\t\t\tif (color) {\n\t\t\t\t\tcolor = (color + 1) % 5;\n\t\t\t\t} else if (chunk.substr(-5) === \"rgba(\" || chunk.substr(-5) === \"hsla(\") {\n\t\t\t\t\tcolor = 1;\n\t\t\t\t}\n\t\t\t\tif (endValue !== (startValue = startValues[matchIndex++] || \"\")) {\n\t\t\t\t\tstartNum = parseFloat(startValue) || 0;\n\t\t\t\t\tstartUnit = startValue.substr((startNum + \"\").length);\n\t\t\t\t\trelative = (endValue.charAt(1) === \"=\") ? +(endValue.charAt(0) + \"1\") : 0;\n\t\t\t\t\tif (relative) {\n\t\t\t\t\t\tendValue = endValue.substr(2);\n\t\t\t\t\t}\n\t\t\t\t\tendNum = parseFloat(endValue);\n\t\t\t\t\tendUnit = endValue.substr((endNum + \"\").length);\n\t\t\t\t\tindex = _numWithUnitExp.lastIndex - endUnit.length;\n\t\t\t\t\tif (!endUnit) { //if something like \"perspective:300\" is passed in and we must add a unit to the end\n\t\t\t\t\t\tendUnit = endUnit || _config.units[prop] || startUnit;\n\t\t\t\t\t\tif (index === end.length) {\n\t\t\t\t\t\t\tend += endUnit;\n\t\t\t\t\t\t\tpt.e += endUnit;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (startUnit !== endUnit) {\n\t\t\t\t\t\tstartNum = _convertToUnit(target, prop, startValue, endUnit) || 0;\n\t\t\t\t\t}\n\t\t\t\t\t//these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\t\t\t\t\tpt._pt = {\n\t\t\t\t\t\t_next:pt._pt,\n\t\t\t\t\t\tp:(chunk || (matchIndex === 1)) ? chunk : \",\", //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n\t\t\t\t\t\ts:startNum,\n\t\t\t\t\t\tc:relative ? relative * endNum : endNum - startNum,\n\t\t\t\t\t\tm:(color && color < 4) || prop === \"zIndex\" ? Math.round : 0\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tpt.c = (index < end.length) ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n\t\t} else {\n\t\t\tpt.r = prop === \"display\" && end === \"none\" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;\n\t\t}\n\t\t_relExp.test(end) && (pt.e = 0); //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n\t\tthis._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus \"this\" would refer to the plugin.\n\t\treturn pt;\n\t},\n\t_keywordToPercent = {top:\"0%\", bottom:\"100%\", left:\"0%\", right:\"100%\", center:\"50%\"},\n\t_convertKeywordsToPercentages = value => {\n\t\tlet split = value.split(\" \"),\n\t\t\tx = split[0],\n\t\t\ty = split[1] || \"50%\";\n\t\tif (x === \"top\" || x === \"bottom\" || y === \"left\" || y === \"right\") { //the user provided them in the wrong order, so flip them\n\t\t\tvalue = x;\n\t\t\tx = y;\n\t\t\ty = value;\n\t\t}\n\t\tsplit[0] = _keywordToPercent[x] || x;\n\t\tsplit[1] = _keywordToPercent[y] || y;\n\t\treturn split.join(\" \");\n\t},\n\t_renderClearProps = (ratio, data) => {\n\t\tif (data.tween && data.tween._time === data.tween._dur) {\n\t\t\tlet target = data.t,\n\t\t\t\tstyle = target.style,\n\t\t\t\tprops = data.u,\n\t\t\t\tcache = target._gsap,\n\t\t\t\tprop, clearTransforms, i;\n\t\t\tif (props === \"all\" || props === true) {\n\t\t\t\tstyle.cssText = \"\";\n\t\t\t\tclearTransforms = 1;\n\t\t\t} else {\n\t\t\t\tprops = props.split(\",\");\n\t\t\t\ti = props.length;\n\t\t\t\twhile (--i > -1) {\n\t\t\t\t\tprop = props[i];\n\t\t\t\t\tif (_transformProps[prop]) {\n\t\t\t\t\t\tclearTransforms = 1;\n\t\t\t\t\t\tprop = (prop === \"transformOrigin\") ? _transformOriginProp : _transformProp;\n\t\t\t\t\t}\n\t\t\t\t\t_removeProperty(target, prop);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (clearTransforms) {\n\t\t\t\t_removeProperty(target, _transformProp);\n\t\t\t\tif (cache) {\n\t\t\t\t\tcache.svg && target.removeAttribute(\"transform\");\n\t\t\t\t\t_parseTransform(target, 1); // force all the cached values back to \"normal\"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.\n\t\t\t\t\tcache.uncache = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t// note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.\n\t_specialProps = {\n\t\tclearProps(plugin, target, property, endValue, tween) {\n\t\t\tif (tween.data !== \"isFromStart\") {\n\t\t\t\tlet pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);\n\t\t\t\tpt.u = endValue;\n\t\t\t\tpt.pr = -10;\n\t\t\t\tpt.tween = tween;\n\t\t\t\tplugin._props.push(property);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t\t/* className feature (about 0.4kb gzipped).\n\t\t, className(plugin, target, property, endValue, tween) {\n\t\t\tlet _renderClassName = (ratio, data) => {\n\t\t\t\t\tdata.css.render(ratio, data.css);\n\t\t\t\t\tif (!ratio || ratio === 1) {\n\t\t\t\t\t\tlet inline = data.rmv,\n\t\t\t\t\t\t\ttarget = data.t,\n\t\t\t\t\t\t\tp;\n\t\t\t\t\t\ttarget.setAttribute(\"class\", ratio ? data.e : data.b);\n\t\t\t\t\t\tfor (p in inline) {\n\t\t\t\t\t\t\t_removeProperty(target, p);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t_getAllStyles = (target) => {\n\t\t\t\t\tlet styles = {},\n\t\t\t\t\t\tcomputed = getComputedStyle(target),\n\t\t\t\t\t\tp;\n\t\t\t\t\tfor (p in computed) {\n\t\t\t\t\t\tif (isNaN(p) && p !== \"cssText\" && p !== \"length\") {\n\t\t\t\t\t\t\tstyles[p] = computed[p];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t_setDefaults(styles, _parseTransform(target, 1));\n\t\t\t\t\treturn styles;\n\t\t\t\t},\n\t\t\t\tstartClassList = target.getAttribute(\"class\"),\n\t\t\t\tstyle = target.style,\n\t\t\t\tcssText = style.cssText,\n\t\t\t\tcache = target._gsap,\n\t\t\t\tclassPT = cache.classPT,\n\t\t\t\tinlineToRemoveAtEnd = {},\n\t\t\t\tdata = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== \"=\") ? endValue : startClassList.replace(new RegExp(\"(?:\\\\s|^)\" + endValue.substr(2) + \"(?![\\\\w-])\"), \"\") + ((endValue.charAt(0) === \"+\") ? \" \" + endValue.substr(2) : \"\")},\n\t\t\t\tchangingVars = {},\n\t\t\t\tstartVars = _getAllStyles(target),\n\t\t\t\ttransformRelated = /(transform|perspective)/i,\n\t\t\t\tendVars, p;\n\t\t\tif (classPT) {\n\t\t\t\tclassPT.r(1, classPT.d);\n\t\t\t\t_removeLinkedListItem(classPT.d.plugin, classPT, \"_pt\");\n\t\t\t}\n\t\t\ttarget.setAttribute(\"class\", data.e);\n\t\t\tendVars = _getAllStyles(target, true);\n\t\t\ttarget.setAttribute(\"class\", startClassList);\n\t\t\tfor (p in endVars) {\n\t\t\t\tif (endVars[p] !== startVars[p] && !transformRelated.test(p)) {\n\t\t\t\t\tchangingVars[p] = endVars[p];\n\t\t\t\t\tif (!style[p] && style[p] !== \"0\") {\n\t\t\t\t\t\tinlineToRemoveAtEnd[p] = 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcache.classPT = plugin._pt = new PropTween(plugin._pt, target, \"className\", 0, 0, _renderClassName, data, 0, -11);\n\t\t\tif (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://greensock.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.\n\t\t\t\tstyle.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).\n\t\t\t}\n\t\t\t_parseTransform(target, true); //to clear the caching of transforms\n\t\t\tdata.css = new gsap.plugins.css();\n\t\t\tdata.css.init(target, changingVars, tween);\n\t\t\tplugin._props.push(...data.css._props);\n\t\t\treturn 1;\n\t\t}\n\t\t*/\n\t},\n\n\n\n\n\n\t/*\n\t * --------------------------------------------------------------------------------------\n\t * TRANSFORMS\n\t * --------------------------------------------------------------------------------------\n\t */\n\t_identity2DMatrix = [1,0,0,1,0,0],\n\t_rotationalProperties = {},\n\t_isNullTransform = value => (value === \"matrix(1, 0, 0, 1, 0, 0)\" || value === \"none\" || !value),\n\t_getComputedTransformMatrixAsArray = target => {\n\t\tlet matrixString = _getComputedProperty(target, _transformProp);\n\t\treturn _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);\n\t},\n\t_getMatrix = (target, force2D) => {\n\t\tlet cache = target._gsap || _getCache(target),\n\t\t\tstyle = target.style,\n\t\t\tmatrix = _getComputedTransformMatrixAsArray(target),\n\t\t\tparent, nextSibling, temp, addedToDOM;\n\t\tif (cache.svg && target.getAttribute(\"transform\")) {\n\t\t\ttemp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like \"translate(50,60) rotate(135,0,0)\" are parsed because it mashes it into a matrix.\n\t\t\tmatrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];\n\t\t\treturn (matrix.join(\",\") === \"1,0,0,1,0,0\") ? _identity2DMatrix : matrix;\n\t\t} else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) { //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n\t\t\t//browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not \"none\". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).\n\t\t\ttemp = style.display;\n\t\t\tstyle.display = \"block\";\n\t\t\tparent = target.parentNode;\n\t\t\tif (!parent || !target.offsetParent) { // note: in 3.3.0 we switched target.offsetParent to _doc.body.contains(target) to avoid [sometimes unnecessary] MutationObserver calls but that wasn't adequate because there are edge cases where nested position: fixed elements need to get reparented to accurately sense transforms. See https://github.com/greensock/GSAP/issues/388 and https://github.com/greensock/GSAP/issues/375\n\t\t\t\taddedToDOM = 1; //flag\n\t\t\t\tnextSibling = target.nextSibling;\n\t\t\t\t_docElement.appendChild(target); //we must add it to the DOM in order to get values properly\n\t\t\t}\n\t\t\tmatrix = _getComputedTransformMatrixAsArray(target);\n\t\t\ttemp ? (style.display = temp) : _removeProperty(target, \"display\");\n\t\t\tif (addedToDOM) {\n\t\t\t\tnextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);\n\t\t\t}\n\t\t}\n\t\treturn (force2D && matrix.length > 6) ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;\n\t},\n\t_applySVGOrigin = (target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) => {\n\t\tlet cache = target._gsap,\n\t\t\tmatrix = matrixArray || _getMatrix(target, true),\n\t\t\txOriginOld = cache.xOrigin || 0,\n\t\t\tyOriginOld = cache.yOrigin || 0,\n\t\t\txOffsetOld = cache.xOffset || 0,\n\t\t\tyOffsetOld = cache.yOffset || 0,\n\t\t\ta = matrix[0],\n\t\t\tb = matrix[1],\n\t\t\tc = matrix[2],\n\t\t\td = matrix[3],\n\t\t\ttx = matrix[4],\n\t\t\tty = matrix[5],\n\t\t\toriginSplit = origin.split(\" \"),\n\t\t\txOrigin = parseFloat(originSplit[0]) || 0,\n\t\t\tyOrigin = parseFloat(originSplit[1]) || 0,\n\t\t\tbounds, determinant, x, y;\n\t\tif (!originIsAbsolute) {\n\t\t\tbounds = _getBBox(target);\n\t\t\txOrigin = bounds.x + (~originSplit[0].indexOf(\"%\") ? xOrigin / 100 * bounds.width : xOrigin);\n\t\t\tyOrigin = bounds.y + (~((originSplit[1] || originSplit[0]).indexOf(\"%\")) ? yOrigin / 100 * bounds.height : yOrigin);\n\t\t} else if (matrix !== _identity2DMatrix && (determinant = (a * d - b * c))) { //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.\n\t\t\tx = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + ((c * ty - d * tx) / determinant);\n\t\t\ty = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - ((a * ty - b * tx) / determinant);\n\t\t\txOrigin = x;\n\t\t\tyOrigin = y;\n\t\t}\n\t\tif (smooth || (smooth !== false && cache.smooth)) {\n\t\t\ttx = xOrigin - xOriginOld;\n\t\t\tty = yOrigin - yOriginOld;\n\t\t\tcache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;\n\t\t\tcache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;\n\t\t} else {\n\t\t\tcache.xOffset = cache.yOffset = 0;\n\t\t}\n\t\tcache.xOrigin = xOrigin;\n\t\tcache.yOrigin = yOrigin;\n\t\tcache.smooth = !!smooth;\n\t\tcache.origin = origin;\n\t\tcache.originIsAbsolute = !!originIsAbsolute;\n\t\ttarget.style[_transformOriginProp] = \"0px 0px\"; //otherwise, if someone sets an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).\n\t\tif (pluginToAddPropTweensTo) {\n\t\t\t_addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOrigin\", xOriginOld, xOrigin);\n\t\t\t_addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOrigin\", yOriginOld, yOrigin);\n\t\t\t_addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOffset\", xOffsetOld, cache.xOffset);\n\t\t\t_addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOffset\", yOffsetOld, cache.yOffset);\n\t\t}\n\t\ttarget.setAttribute(\"data-svg-origin\", xOrigin + \" \" + yOrigin);\n\t},\n\t_parseTransform = (target, uncache) => {\n\t\tlet cache = target._gsap || new GSCache(target);\n\t\tif (\"x\" in cache && !uncache && !cache.uncache) {\n\t\t\treturn cache;\n\t\t}\n\t\tlet style = target.style,\n\t\t\tinvertedScaleX = cache.scaleX < 0,\n\t\t\tpx = \"px\",\n\t\t\tdeg = \"deg\",\n\t\t\torigin = _getComputedProperty(target, _transformOriginProp) || \"0\",\n\t\t\tx, y, z, scaleX, scaleY, rotation, rotationX, rotationY, skewX, skewY, perspective, xOrigin, yOrigin,\n\t\t\tmatrix, angle, cos, sin, a, b, c, d, a12, a22, t1, t2, t3, a13, a23, a33, a42, a43, a32;\n\t\tx = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;\n\t\tscaleX = scaleY = 1;\n\t\tcache.svg = !!(target.getCTM && _isSVG(target));\n\t\tmatrix = _getMatrix(target, cache.svg);\n\t\tif (cache.svg) {\n\t\t\tt1 = (!cache.uncache || origin === \"0px 0px\") && !uncache && target.getAttribute(\"data-svg-origin\"); // if origin is 0,0 and cache.uncache is true, let the recorded data-svg-origin stay. Otherwise, whenever we set cache.uncache to true, we'd need to set element.style.transformOrigin = (cache.xOrigin - bbox.x) + \"px \" + (cache.yOrigin - bbox.y) + \"px\". Remember, to work around browser inconsistencies we always force SVG elements' transformOrigin to 0,0 and offset the translation accordingly.\n\t\t\t_applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);\n\t\t}\n\t\txOrigin = cache.xOrigin || 0;\n\t\tyOrigin = cache.yOrigin || 0;\n\t\tif (matrix !== _identity2DMatrix) {\n\t\t\ta = matrix[0]; //a11\n\t\t\tb = matrix[1]; //a21\n\t\t\tc = matrix[2]; //a31\n\t\t\td = matrix[3]; //a41\n\t\t\tx = a12 = matrix[4];\n\t\t\ty = a22 = matrix[5];\n\n\t\t\t//2D matrix\n\t\t\tif (matrix.length === 6) {\n\t\t\t\tscaleX = Math.sqrt(a * a + b * b);\n\t\t\t\tscaleY = Math.sqrt(d * d + c * c);\n\t\t\t\trotation = (a || b) ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).\n\t\t\t\tskewX = (c || d) ? _atan2(c, d) * _RAD2DEG + rotation : 0;\n\t\t\t\tskewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));\n\t\t\t\tif (cache.svg) {\n\t\t\t\t\tx -= xOrigin - (xOrigin * a + yOrigin * c);\n\t\t\t\t\ty -= yOrigin - (xOrigin * b + yOrigin * d);\n\t\t\t\t}\n\n\t\t\t//3D matrix\n\t\t\t} else {\n\t\t\t\ta32 = matrix[6];\n\t\t\t\ta42 = matrix[7];\n\t\t\t\ta13 = matrix[8];\n\t\t\t\ta23 = matrix[9];\n\t\t\t\ta33 = matrix[10];\n\t\t\t\ta43 = matrix[11];\n\t\t\t\tx = matrix[12];\n\t\t\t\ty = matrix[13];\n\t\t\t\tz = matrix[14];\n\n\t\t\t\tangle = _atan2(a32, a33);\n\t\t\t\trotationX = angle * _RAD2DEG;\n\t\t\t\t//rotationX\n\t\t\t\tif (angle) {\n\t\t\t\t\tcos = Math.cos(-angle);\n\t\t\t\t\tsin = Math.sin(-angle);\n\t\t\t\t\tt1 = a12*cos+a13*sin;\n\t\t\t\t\tt2 = a22*cos+a23*sin;\n\t\t\t\t\tt3 = a32*cos+a33*sin;\n\t\t\t\t\ta13 = a12*-sin+a13*cos;\n\t\t\t\t\ta23 = a22*-sin+a23*cos;\n\t\t\t\t\ta33 = a32*-sin+a33*cos;\n\t\t\t\t\ta43 = a42*-sin+a43*cos;\n\t\t\t\t\ta12 = t1;\n\t\t\t\t\ta22 = t2;\n\t\t\t\t\ta32 = t3;\n\t\t\t\t}\n\t\t\t\t//rotationY\n\t\t\t\tangle = _atan2(-c, a33);\n\t\t\t\trotationY = angle * _RAD2DEG;\n\t\t\t\tif (angle) {\n\t\t\t\t\tcos = Math.cos(-angle);\n\t\t\t\t\tsin = Math.sin(-angle);\n\t\t\t\t\tt1 = a*cos-a13*sin;\n\t\t\t\t\tt2 = b*cos-a23*sin;\n\t\t\t\t\tt3 = c*cos-a33*sin;\n\t\t\t\t\ta43 = d*sin+a43*cos;\n\t\t\t\t\ta = t1;\n\t\t\t\t\tb = t2;\n\t\t\t\t\tc = t3;\n\t\t\t\t}\n\t\t\t\t//rotationZ\n\t\t\t\tangle = _atan2(b, a);\n\t\t\t\trotation = angle * _RAD2DEG;\n\t\t\t\tif (angle) {\n\t\t\t\t\tcos = Math.cos(angle);\n\t\t\t\t\tsin = Math.sin(angle);\n\t\t\t\t\tt1 = a*cos+b*sin;\n\t\t\t\t\tt2 = a12*cos+a22*sin;\n\t\t\t\t\tb = b*cos-a*sin;\n\t\t\t\t\ta22 = a22*cos-a12*sin;\n\t\t\t\t\ta = t1;\n\t\t\t\t\ta12 = t2;\n\t\t\t\t}\n\n\t\t\t\tif (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) { //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.\n\t\t\t\t\trotationX = rotation = 0;\n\t\t\t\t\trotationY = 180 - rotationY;\n\t\t\t\t}\n\t\t\t\tscaleX = _round(Math.sqrt(a * a + b * b + c * c));\n\t\t\t\tscaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));\n\t\t\t\tangle = _atan2(a12, a22);\n\t\t\t\tskewX = (Math.abs(angle) > 0.0002) ? angle * _RAD2DEG : 0;\n\t\t\t\tperspective = a43 ? 1 / ((a43 < 0) ? -a43 : a43) : 0;\n\t\t\t}\n\n\t\t\tif (cache.svg) { //sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).\n\t\t\t\tt1 = target.getAttribute(\"transform\");\n\t\t\t\tcache.forceCSS = target.setAttribute(\"transform\", \"\") || (!_isNullTransform(_getComputedProperty(target, _transformProp)));\n\t\t\t\tt1 && target.setAttribute(\"transform\", t1);\n\t\t\t}\n\t\t}\n\n\t\tif (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {\n\t\t\tif (invertedScaleX) {\n\t\t\t\tscaleX *= -1;\n\t\t\t\tskewX += (rotation <= 0) ? 180 : -180;\n\t\t\t\trotation += (rotation <= 0) ? 180 : -180;\n\t\t\t} else {\n\t\t\t\tscaleY *= -1;\n\t\t\t\tskewX += (skewX <= 0) ? 180 : -180;\n\t\t\t}\n\t\t}\n\t\tcache.x = x - ((cache.xPercent = x && (cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;\n\t\tcache.y = y - ((cache.yPercent = y && (cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;\n\t\tcache.z = z + px;\n\t\tcache.scaleX = _round(scaleX);\n\t\tcache.scaleY = _round(scaleY);\n\t\tcache.rotation = _round(rotation) + deg;\n\t\tcache.rotationX = _round(rotationX) + deg;\n\t\tcache.rotationY = _round(rotationY) + deg;\n\t\tcache.skewX = skewX + deg;\n\t\tcache.skewY = skewY + deg;\n\t\tcache.transformPerspective = perspective + px;\n\t\tif ((cache.zOrigin = parseFloat(origin.split(\" \")[2]) || 0)) {\n\t\t\tstyle[_transformOriginProp] = _firstTwoOnly(origin);\n\t\t}\n\t\tcache.xOffset = cache.yOffset = 0;\n\t\tcache.force3D = _config.force3D;\n\t\tcache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;\n\t\tcache.uncache = 0;\n\t\treturn cache;\n\t},\n\t_firstTwoOnly = value => (value = value.split(\" \"))[0] + \" \" + value[1], //for handling transformOrigin values, stripping out the 3rd dimension\n\t_addPxTranslate = (target, start, value) => {\n\t\tlet unit = getUnit(start);\n\t\treturn _round(parseFloat(start) + parseFloat(_convertToUnit(target, \"x\", value + \"px\", unit))) + unit;\n\t},\n\t_renderNon3DTransforms = (ratio, cache) => {\n\t\tcache.z = \"0px\";\n\t\tcache.rotationY = cache.rotationX = \"0deg\";\n\t\tcache.force3D = 0;\n\t\t_renderCSSTransforms(ratio, cache);\n\t},\n\t_zeroDeg = \"0deg\",\n\t_zeroPx = \"0px\",\n\t_endParenthesis = \") \",\n\t_renderCSSTransforms = function(ratio, cache) {\n\t\tlet {xPercent, yPercent, x, y, z, rotation, rotationY, rotationX, skewX, skewY, scaleX, scaleY, transformPerspective, force3D, target, zOrigin} = cache || this,\n\t\t\ttransforms = \"\",\n\t\t\tuse3D = (force3D === \"auto\" && ratio && ratio !== 1) || force3D === true;\n\n\t\t// Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)\n\t\tif (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {\n\t\t\tlet angle = parseFloat(rotationY) * _DEG2RAD,\n\t\t\t\ta13 = Math.sin(angle),\n\t\t\t\ta33 = Math.cos(angle),\n\t\t\t\tcos;\n\t\t\tangle = parseFloat(rotationX) * _DEG2RAD;\n\t\t\tcos = Math.cos(angle);\n\t\t\tx = _addPxTranslate(target, x, a13 * cos * -zOrigin);\n\t\t\ty = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);\n\t\t\tz = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);\n\t\t}\n\n\t\tif (transformPerspective !== _zeroPx) {\n\t\t\ttransforms += \"perspective(\" + transformPerspective + _endParenthesis;\n\t\t}\n\t\tif (xPercent || yPercent) {\n\t\t\ttransforms += \"translate(\" + xPercent + \"%, \" + yPercent + \"%) \";\n\t\t}\n\t\tif (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {\n\t\t\ttransforms += (z !== _zeroPx || use3D) ? \"translate3d(\" + x + \", \" + y + \", \" + z + \") \" : \"translate(\" + x + \", \" + y + _endParenthesis;\n\t\t}\n\t\tif (rotation !== _zeroDeg) {\n\t\t\ttransforms += \"rotate(\" + rotation + _endParenthesis;\n\t\t}\n\t\tif (rotationY !== _zeroDeg) {\n\t\t\ttransforms += \"rotateY(\" + rotationY + _endParenthesis;\n\t\t}\n\t\tif (rotationX !== _zeroDeg) {\n\t\t\ttransforms += \"rotateX(\" + rotationX + _endParenthesis;\n\t\t}\n\t\tif (skewX !== _zeroDeg || skewY !== _zeroDeg) {\n\t\t\ttransforms += \"skew(\" + skewX + \", \" + skewY + _endParenthesis;\n\t\t}\n\t\tif (scaleX !== 1 || scaleY !== 1) {\n\t\t\ttransforms += \"scale(\" + scaleX + \", \" + scaleY + _endParenthesis;\n\t\t}\n\t\ttarget.style[_transformProp] = transforms || \"translate(0, 0)\";\n\t},\n\t_renderSVGTransforms = function(ratio, cache) {\n\t\tlet {xPercent, yPercent, x, y, rotation, skewX, skewY, scaleX, scaleY, target, xOrigin, yOrigin, xOffset, yOffset, forceCSS} = cache || this,\n\t\t\ttx = parseFloat(x),\n\t\t\tty = parseFloat(y),\n\t\t\ta11, a21, a12, a22, temp;\n\t\trotation = parseFloat(rotation);\n\t\tskewX = parseFloat(skewX);\n\t\tskewY = parseFloat(skewY);\n\t\tif (skewY) { //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.\n\t\t\tskewY = parseFloat(skewY);\n\t\t\tskewX += skewY;\n\t\t\trotation += skewY;\n\t\t}\n\t\tif (rotation || skewX) {\n\t\t\trotation *= _DEG2RAD;\n\t\t\tskewX *= _DEG2RAD;\n\t\t\ta11 = Math.cos(rotation) * scaleX;\n\t\t\ta21 = Math.sin(rotation) * scaleX;\n\t\t\ta12 = Math.sin(rotation - skewX) * -scaleY;\n\t\t\ta22 = Math.cos(rotation - skewX) * scaleY;\n\t\t\tif (skewX) {\n\t\t\t\tskewY *= _DEG2RAD;\n\t\t\t\ttemp = Math.tan(skewX - skewY);\n\t\t\t\ttemp = Math.sqrt(1 + temp * temp);\n\t\t\t\ta12 *= temp;\n\t\t\t\ta22 *= temp;\n\t\t\t\tif (skewY) {\n\t\t\t\t\ttemp = Math.tan(skewY);\n\t\t\t\t\ttemp = Math.sqrt(1 + temp * temp);\n\t\t\t\t\ta11 *= temp;\n\t\t\t\t\ta21 *= temp;\n\t\t\t\t}\n\t\t\t}\n\t\t\ta11 = _round(a11);\n\t\t\ta21 = _round(a21);\n\t\t\ta12 = _round(a12);\n\t\t\ta22 = _round(a22);\n\t\t} else {\n\t\t\ta11 = scaleX;\n\t\t\ta22 = scaleY;\n\t\t\ta21 = a12 = 0;\n\t\t}\n\t\tif ((tx && !~(x + \"\").indexOf(\"px\")) || (ty && !~(y + \"\").indexOf(\"px\"))) {\n\t\t\ttx = _convertToUnit(target, \"x\", x, \"px\");\n\t\t\tty = _convertToUnit(target, \"y\", y, \"px\");\n\t\t}\n\t\tif (xOrigin || yOrigin || xOffset || yOffset) {\n\t\t\ttx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);\n\t\t\tty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);\n\t\t}\n\t\tif (xPercent || yPercent) {\n\t\t\t//The SVG spec doesn't support percentage-based translation in the \"transform\" attribute, so we merge it into the translation to simulate it.\n\t\t\ttemp = target.getBBox();\n\t\t\ttx = _round(tx + xPercent / 100 * temp.width);\n\t\t\tty = _round(ty + yPercent / 100 * temp.height);\n\t\t}\n\t\ttemp = \"matrix(\" + a11 + \",\" + a21 + \",\" + a12 + \",\" + a22 + \",\" + tx + \",\" + ty + \")\";\n\t\ttarget.setAttribute(\"transform\", temp);\n\t\tforceCSS && (target.style[_transformProp] = temp); //some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)\n\t},\n\t_addRotationalPropTween = function(plugin, target, property, startNum, endValue, relative) {\n\t\tlet cap = 360,\n\t\t\tisString = _isString(endValue),\n\t\t\tendNum = parseFloat(endValue) * ((isString && ~endValue.indexOf(\"rad\")) ? _RAD2DEG : 1),\n\t\t\tchange = relative ? endNum * relative : endNum - startNum,\n\t\t\tfinalValue = (startNum + change) + \"deg\",\n\t\t\tdirection, pt;\n\t\tif (isString) {\n\t\t\tdirection = endValue.split(\"_\")[1];\n\t\t\tif (direction === \"short\") {\n\t\t\t\tchange %= cap;\n\t\t\t\tif (change !== change % (cap / 2)) {\n\t\t\t\t\tchange += (change < 0) ? cap : -cap;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (direction === \"cw\" && change < 0) {\n\t\t\t\tchange = ((change + cap * _bigNum) % cap) - ~~(change / cap) * cap;\n\t\t\t} else if (direction === \"ccw\" && change > 0) {\n\t\t\t\tchange = ((change - cap * _bigNum) % cap) - ~~(change / cap) * cap;\n\t\t\t}\n\t\t}\n\t\tplugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);\n\t\tpt.e = finalValue;\n\t\tpt.u = \"deg\";\n\t\tplugin._props.push(property);\n\t\treturn pt;\n\t},\n\t_assign = (target, source) => { // Internet Explorer doesn't have Object.assign(), so we recreate it here.\n\t\tfor (let p in source) {\n\t\t\ttarget[p] = source[p];\n\t\t}\n\t\treturn target;\n\t},\n\t_addRawTransformPTs = (plugin, transforms, target) => { //for handling cases where someone passes in a whole transform string, like transform: \"scale(2, 3) rotate(20deg) translateY(30em)\"\n\t\tlet startCache = _assign({}, target._gsap),\n\t\t\texclude = \"perspective,force3D,transformOrigin,svgOrigin\",\n\t\t\tstyle = target.style,\n\t\t\tendCache, p, startValue, endValue, startNum, endNum, startUnit, endUnit;\n\t\tif (startCache.svg) {\n\t\t\tstartValue = target.getAttribute(\"transform\");\n\t\t\ttarget.setAttribute(\"transform\", \"\");\n\t\t\tstyle[_transformProp] = transforms;\n\t\t\tendCache = _parseTransform(target, 1);\n\t\t\t_removeProperty(target, _transformProp);\n\t\t\ttarget.setAttribute(\"transform\", startValue);\n\t\t} else {\n\t\t\tstartValue = getComputedStyle(target)[_transformProp];\n\t\t\tstyle[_transformProp] = transforms;\n\t\t\tendCache = _parseTransform(target, 1);\n\t\t\tstyle[_transformProp] = startValue;\n\t\t}\n\t\tfor (p in _transformProps) {\n\t\t\tstartValue = startCache[p];\n\t\t\tendValue = endCache[p];\n\t\t\tif (startValue !== endValue && exclude.indexOf(p) < 0) { //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.\n\t\t\t\tstartUnit = getUnit(startValue);\n\t\t\t\tendUnit = getUnit(endValue);\n\t\t\t\tstartNum = (startUnit !== endUnit) ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);\n\t\t\t\tendNum = parseFloat(endValue);\n\t\t\t\tplugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);\n\t\t\t\tplugin._pt.u = endUnit || 0;\n\t\t\t\tplugin._props.push(p);\n\t\t\t}\n\t\t}\n\t\t_assign(endCache, startCache);\n\t};\n\n// handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.\n_forEachName(\"padding,margin,Width,Radius\", (name, index) => {\n\tlet t = \"Top\",\n\t\tr = \"Right\",\n\t\tb = \"Bottom\",\n\t\tl = \"Left\",\n\t\tprops = (index < 3 ? [t,r,b,l] : [t+l, t+r, b+r, b+l]).map(side => index < 2 ? name + side : \"border\" + side + name);\n\t_specialProps[(index > 1 ? \"border\" + name : name)] = function(plugin, target, property, endValue, tween) {\n\t\tlet a, vars;\n\t\tif (arguments.length < 4) { // getter, passed target, property, and unit (from _get())\n\t\t\ta = props.map(prop => _get(plugin, prop, property));\n\t\t\tvars = a.join(\" \");\n\t\t\treturn vars.split(a[0]).length === 5 ? a[0] : vars;\n\t\t}\n\t\ta = (endValue + \"\").split(\" \");\n\t\tvars = {};\n\t\tprops.forEach((prop, i) => vars[prop] = a[i] = a[i] || a[(((i - 1) / 2) | 0)]);\n\t\tplugin.init(target, vars, tween);\n\t}\n});\n\n\nexport const CSSPlugin = {\n\tname: \"css\",\n\tregister: _initCore,\n\ttargetTest(target) {\n\t\treturn target.style && target.nodeType;\n\t},\n\tinit(target, vars, tween, index, targets) {\n\t\tlet props = this._props,\n\t\t\tstyle = target.style,\n\t\t\tstartAt = tween.vars.startAt,\n\t\t\tstartValue, endValue, endNum, startNum, type, specialProp, p, startUnit, endUnit, relative, isTransformRelated, transformPropTween, cache, smooth, hasPriority;\n\t\t_pluginInitted || _initCore();\n\t\tfor (p in vars) {\n\t\t\tif (p === \"autoRound\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tendValue = vars[p];\n\t\t\tif (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) { // plugins\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttype = typeof(endValue);\n\t\t\tspecialProp = _specialProps[p];\n\t\t\tif (type === \"function\") {\n\t\t\t\tendValue = endValue.call(tween, index, target, targets);\n\t\t\t\ttype = typeof(endValue);\n\t\t\t}\n\t\t\tif (type === \"string\" && ~endValue.indexOf(\"random(\")) {\n\t\t\t\tendValue = _replaceRandom(endValue);\n\t\t\t}\n\t\t\tif (specialProp) {\n\t\t\t\tspecialProp(this, target, p, endValue, tween) && (hasPriority = 1);\n\t\t\t} else if (p.substr(0,2) === \"--\") { //CSS variable\n\t\t\t\tstartValue = (getComputedStyle(target).getPropertyValue(p) + \"\").trim();\n\t\t\t\tendValue += \"\";\n\t\t\t\t_colorExp.lastIndex = 0;\n\t\t\t\tif (!_colorExp.test(startValue)) { // colors don't have units\n\t\t\t\t\tstartUnit = getUnit(startValue);\n\t\t\t\t\tendUnit = getUnit(endValue);\n\t\t\t\t}\n\t\t\t\tendUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);\n\t\t\t\tthis.add(style, \"setProperty\", startValue, endValue, index, targets, 0, 0, p);\n\t\t\t\tprops.push(p);\n\t\t\t} else if (type !== \"undefined\") {\n\t\t\t\tif (startAt && p in startAt) { // in case someone hard-codes a complex value as the start, like top: \"calc(2vh / 2)\". Without this, it'd use the computed value (always in px)\n\t\t\t\t\tstartValue = typeof(startAt[p]) === \"function\" ? startAt[p].call(tween, index, target, targets) : startAt[p];\n\t\t\t\t\t(p in _config.units) && !getUnit(startValue) && (startValue += _config.units[p]); // for cases when someone passes in a unitless value like {x: 100}; if we try setting translate(100, 0px) it won't work.\n\t\t\t\t\t(startValue + \"\").charAt(1) === \"=\" && (startValue = _get(target, p)); // can't work with relative values\n\t\t\t\t} else {\n\t\t\t\t\tstartValue = _get(target, p);\n\t\t\t\t}\n\t\t\t\tstartNum = parseFloat(startValue);\n\t\t\t\trelative = (type === \"string\" && endValue.charAt(1) === \"=\") ? +(endValue.charAt(0) + \"1\") : 0;\n\t\t\t\trelative && (endValue = endValue.substr(2));\n\t\t\t\tendNum = parseFloat(endValue);\n\t\t\t\tif (p in _propertyAliases) {\n\t\t\t\t\tif (p === \"autoAlpha\") { //special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.\n\t\t\t\t\t\tif (startNum === 1 && _get(target, \"visibility\") === \"hidden\" && endNum) { //if visibility is initially set to \"hidden\", we should interpret that as intent to make opacity 0 (a convenience)\n\t\t\t\t\t\t\tstartNum = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_addNonTweeningPT(this, style, \"visibility\", startNum ? \"inherit\" : \"hidden\", endNum ? \"inherit\" : \"hidden\", !endNum);\n\t\t\t\t\t}\n\t\t\t\t\tif (p !== \"scale\" && p !== \"transform\") {\n\t\t\t\t\t\tp = _propertyAliases[p];\n\t\t\t\t\t\t~p.indexOf(\",\") && (p = p.split(\",\")[0]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tisTransformRelated = (p in _transformProps);\n\n\t\t\t\t//--- TRANSFORM-RELATED ---\n\t\t\t\tif (isTransformRelated) {\n\t\t\t\t\tif (!transformPropTween) {\n\t\t\t\t\t\tcache = target._gsap;\n\t\t\t\t\t\t(cache.renderTransform && !vars.parseTransform) || _parseTransform(target, vars.parseTransform); // if, for example, gsap.set(... {transform:\"translateX(50vw)\"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.\n\t\t\t\t\t\tsmooth = (vars.smoothOrigin !== false && cache.smooth);\n\t\t\t\t\t\ttransformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)\n\t\t\t\t\t\ttransformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.\n\t\t\t\t\t}\n\t\t\t\t\tif (p === \"scale\") {\n\t\t\t\t\t\tthis._pt = new PropTween(this._pt, cache, \"scaleY\", cache.scaleY, (relative ? relative * endNum : endNum - cache.scaleY) || 0);\n\t\t\t\t\t\tprops.push(\"scaleY\", p);\n\t\t\t\t\t\tp += \"X\";\n\t\t\t\t\t} else if (p === \"transformOrigin\") {\n\t\t\t\t\t\tendValue = _convertKeywordsToPercentages(endValue); //in case something like \"left top\" or \"bottom right\" is passed in. Convert to percentages.\n\t\t\t\t\t\tif (cache.svg) {\n\t\t\t\t\t\t\t_applySVGOrigin(target, endValue, 0, smooth, 0, this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tendUnit = parseFloat(endValue.split(\" \")[2]) || 0; //handle the zOrigin separately!\n\t\t\t\t\t\t\tendUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, \"zOrigin\", cache.zOrigin, endUnit);\n\t\t\t\t\t\t\t_addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (p === \"svgOrigin\") {\n\t\t\t\t\t\t_applySVGOrigin(target, endValue, 1, smooth, 0, this);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (p in _rotationalProperties) {\n\t\t\t\t\t\t_addRotationalPropTween(this, cache, p, startNum, endValue, relative);\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t} else if (p === \"smoothOrigin\") {\n\t\t\t\t\t\t_addNonTweeningPT(this, cache, \"smooth\", cache.smooth, endValue);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (p === \"force3D\") {\n\t\t\t\t\t\tcache[p] = endValue;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (p === \"transform\") {\n\t\t\t\t\t\t_addRawTransformPTs(this, endValue, target);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (!(p in style)) {\n\t\t\t\t\tp = _checkPropPrefix(p) || p;\n\t\t\t\t}\n\n\t\t\t\tif (isTransformRelated || ((endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && (p in style))) {\n\t\t\t\t\tstartUnit = (startValue + \"\").substr((startNum + \"\").length);\n\t\t\t\t\tendNum || (endNum = 0); // protect against NaN\n\t\t\t\t\tendUnit = getUnit(endValue) || ((p in _config.units) ? _config.units[p] : startUnit);\n\t\t\t\t\tstartUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));\n\t\t\t\t\tthis._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, relative ? relative * endNum : endNum - startNum, (!isTransformRelated && (endUnit === \"px\" || p === \"zIndex\") && vars.autoRound !== false) ? _renderRoundedCSSProp : _renderCSSProp);\n\t\t\t\t\tthis._pt.u = endUnit || 0;\n\t\t\t\t\tif (startUnit !== endUnit) { //when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a \"b\" (beginning) property and point to a render method that handles that. (performance optimization)\n\t\t\t\t\t\tthis._pt.b = startValue;\n\t\t\t\t\t\tthis._pt.r = _renderCSSPropWithBeginning;\n\t\t\t\t\t}\n\t\t\t\t} else if (!(p in style)) {\n\t\t\t\t\tif (p in target) { //maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.\n\t\t\t\t\t\tthis.add(target, p, startValue || target[p], endValue, index, targets);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_missingPlugin(p, endValue);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t_tweenComplexCSSString.call(this, target, p, startValue, endValue);\n\t\t\t\t}\n\t\t\t\tprops.push(p);\n\t\t\t}\n\t\t}\n\t\thasPriority && _sortPropTweensByPriority(this);\n\n\t},\n\tget: _get,\n\taliases: _propertyAliases,\n\tgetSetter(target, property, plugin) { //returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like \"x\" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.\n\t\tlet p = _propertyAliases[property];\n\t\t(p && p.indexOf(\",\") < 0) && (property = p);\n\t\treturn (property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, \"x\"))) ? (plugin && _recentSetterPlugin === plugin ? (property === \"scale\" ? _setterScale : _setterTransform) : (_recentSetterPlugin = plugin || {}) && (property === \"scale\" ? _setterScaleWithRender : _setterTransformWithRender)) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf(\"-\") ? _setterCSSProp : _getSetter(target, property);\n\t},\n\tcore: { _removeProperty, _getMatrix }\n\n};\n\ngsap.utils.checkPrefix = _checkPropPrefix;\n(function(positionAndScale, rotation, others, aliases) {\n\tlet all = _forEachName(positionAndScale + \",\" + rotation + \",\" + others, name => {_transformProps[name] = 1});\n\t_forEachName(rotation, name => {_config.units[name] = \"deg\"; _rotationalProperties[name] = 1});\n\t_propertyAliases[all[13]] = positionAndScale + \",\" + rotation;\n\t_forEachName(aliases, name => {\n\t\tlet split = name.split(\":\");\n\t\t_propertyAliases[split[1]] = all[split[0]];\n\t});\n})(\"x,y,z,scale,scaleX,scaleY,xPercent,yPercent\", \"rotation,rotationX,rotationY,skewX,skewY\", \"transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective\", \"0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY\");\n_forEachName(\"x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective\", name => {_config.units[name] = \"px\"});\n\ngsap.registerPlugin(CSSPlugin);\n\nexport { CSSPlugin as default, _getBBox, _createElement, _checkPropPrefix as checkPrefix };","import { gsap, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ, TweenLite, TimelineLite, TimelineMax } from \"./gsap-core.js\";\nimport { CSSPlugin } from \"./CSSPlugin.js\";\n\nconst gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap, // to protect from tree shaking\n\tTweenMaxWithCSS = gsapWithCSS.core.Tween;\n\nexport {\n\tgsapWithCSS as gsap,\n\tgsapWithCSS as default,\n\tCSSPlugin,\n\tTweenMaxWithCSS as TweenMax,\n\tTweenLite,\n\tTimelineMax,\n\tTimelineLite,\n\tPower0,\n\tPower1,\n\tPower2,\n\tPower3,\n\tPower4,\n\tLinear,\n\tQuad,\n\tCubic,\n\tQuart,\n\tQuint,\n\tStrong,\n\tElastic,\n\tBack,\n\tSteppedEase,\n\tBounce,\n\tSine,\n\tExpo,\n\tCirc\n};"],"names":["_isString","value","_isFunction","_isNumber","_isUndefined","_isObject","_isNotFalse","_windowExists","window","_isFuncOrString","_install","scope","_installScope","_merge","_globals","gsap","_missingPlugin","property","console","warn","_warn","message","suppress","_addGlobal","name","obj","_emptyFunc","_harness","targets","harnessPlugin","i","target","_gsap","harness","_harnessPlugins","length","targetTest","GSCache","splice","_getCache","toArray","_getProperty","v","getAttribute","_forEachName","names","func","split","forEach","_round","Math","round","_arrayContainsAny","toSearch","toFind","l","indexOf","_lazyRender","tween","_lazyTweens","a","slice","_lazyLookup","_lazy","render","_lazySafeRender","animation","time","suppressEvents","force","_numericIfPossible","n","parseFloat","match","_delimitedValueExp","trim","_passThrough","p","_setDefaults","defaults","_setKeyframeDefaults","_mergeDeep","base","toMerge","_copyExcluding","excluding","copy","_inheritDefaults","vars","parent","_globalTimeline","keyframes","inherit","_dp","_removeLinkedListItem","child","firstProp","lastProp","prev","_prev","next","_next","_removeFromParent","onlyIfParentHasAutoRemove","autoRemoveChildren","remove","_act","_uncache","_end","_dur","_start","_dirty","_elapsedCycleDuration","_repeat","_animationCycle","_tTime","duration","_rDelay","_parentToChildTotalTime","parentTime","_ts","totalDuration","_tDur","_setEnd","abs","_rts","_tinyNum","_alignPlayhead","totalTime","smoothChildTiming","_time","_postAddChecks","timeline","t","_initted","rawTime","_clamp","_zTime","_addToTimeline","position","skipChecks","_parsePosition","_delay","timeScale","_addLinkedListItem","sortBy","_sort","_isFromOrFromStart","_recent","_scrollTrigger","trigger","ScrollTrigger","create","_attemptInitTween","_initTween","_pt","lazy","_lastRenderedFrame","_ticker","frame","push","_setDuration","skipUncache","leavePlayhead","repeat","dur","totalProgress","_onUpdateTotalDuration","Timeline","_createTweenType","type","params","irVars","isLegacy","varsIndex","immediateRender","runBackwards","startAt","Tween","_conditionalReturn","getUnit","_unitExp","exec","substr","index","_isArrayLike","nonEmpty","nodeType","_win","shuffle","sort","random","distribute","each","ease","_parseEase","from","cache","isDecimal","ratios","isNaN","axis","ratioX","ratioY","center","edges","end","originX","originY","x","y","d","j","max","min","wrapAt","distances","grid","_bigNum","getBoundingClientRect","left","_sqrt","amount","b","u","_invertEase","_roundModifier","pow","raw","snap","snapTo","radius","is2D","isArray","_isArray","values","increment","dx","dy","closest","roundingIncrement","returnFunction","floor","_wrapArray","wrapper","_replaceRandom","nums","s","charAt","_strictNumExp","_getLabelInDirection","fromTime","backward","distance","label","labels","_interrupt","scrollTrigger","kill","progress","_callback","_hue","h","m1","m2","_255","splitColor","toHSL","forceAlpha","r","g","wasHSL","_colorLookup","black","parseInt","_numExp","transparent","map","Number","_colorOrderData","c","_colorExp","_numWithUnitExp","_formatColors","orderMatchData","shell","result","colors","color","join","replace","shift","_colorStringFilter","combined","lastIndex","test","_hslExp","_configEaseFromString","_easeMap","config","apply","_parseObjectInString","val","parsedVal","key","lastIndexOf","_quotesExp","_valueInParentheses","open","close","nested","substring","_CE","_customEaseExp","_propagateYoyoEase","isYoyo","_first","yoyoEase","_yoyo","_ease","_yEase","_insertEase","easeIn","easeOut","easeInOut","lowercaseName","toLowerCase","_easeInOutFromOut","_configElastic","amplitude","period","p1","_sin","p3","p2","_2PI","asin","_configBack","overshoot","_suppressOverwrites","_coreInitted","_doc","_coreReady","_quickTween","_tickerActive","_id","_req","_raf","_self","_delta","_i","_getTime","_lagThreshold","_adjustedLag","_startTime","_lastUpdate","_gap","_nextTime","_listeners","n1","_config","autoSleep","force3D","nullTargetWarn","units","lineHeight","_defaults","overwrite","delay","PI","_HALF_PI","_gsID","sqrt","_cos","cos","sin","_isTypedArray","ArrayBuffer","isView","Array","_complexStringNumExp","_relExp","_reservedProps","_plugins","_effects","_nextGCFrame","_callbackNames","tTime","cycleDuration","whole","data","_zeroPosition","endTime","percentAnimation","offset","isPercent","recent","clippedDuration","_slice","leaveStrings","_wake","_flatten","ar","accumulator","call","querySelectorAll","mapRange","inMin","inMax","outMin","outMax","inRange","outRange","executeLazyFirst","callback","callbackScope","aqua","lime","silver","maroon","teal","blue","navy","white","olive","yellow","orange","gray","purple","green","red","pink","cyan","RegExp","Date","now","tick","_tick","deltaRatio","fps","wake","document","gsapVersions","version","GreenSockGlobals","requestAnimationFrame","sleep","f","setTimeout","cancelAnimationFrame","clearTimeout","lagSmoothing","threshold","adjustedLag","add","defaultEase","overlap","dispatch","elapsed","manual","power","Linear","easeNone","none","SteppedEase","steps","immediateStart","id","this","get","set","getSetter","_getSetter","Animation","startTime","arguments","_ptLookup","_pTime","ratio","iteration","_ps","_recacheAncestors","paused","includeRepeats","wrapRepeats","globalTime","Infinity","repeatDelay","yoyo","seek","restart","includeDelay","play","reversed","reverse","pause","atTime","resume","invalidate","isActive","start","eventCallback","_onUpdate","then","onFulfilled","self","Promise","resolve","_resolve","_then","_prom","prototype","sortChildren","_this","to","fromTo","fromVars","toVars","delayedCall","staggerTo","stagger","onCompleteAll","onCompleteAllParams","onComplete","onCompleteParams","staggerFrom","staggerFromTo","prevPaused","pauseTween","prevStart","prevIteration","prevTime","tDur","crossingStart","_lock","rewinding","doesWrap","repeatRefresh","onRepeat","_hasPause","_forcing","_findNextPauseTween","_last","onUpdate","adjustedTime","_this2","addLabel","getChildren","tweens","timelines","ignoreBeforeTime","getById","animations","removeLabel","killTweensOf","addPause","removePause","props","onlyActive","getTweensOf","_overwritingTween","children","parsedTargets","isGlobalTime","_targets","tweenTo","initted","tl","onStart","onStartParams","tweenFromTo","fromPosition","toPosition","nextLabel","afterTime","previousLabel","beforeTime","currentLabel","shiftChildren","adjustLabels","clear","includeLabels","updateRoot","_checkPlugin","plugin","pt","ptLookup","init","rawVars","_processVars","_parseFuncOrString","style","PropTween","priority","_props","_addPropTween","prop","modifier","stringFilter","funcParam","currentValue","parsedStart","setter","_setterFuncWithParam","_setterFunc","_setterPlain","_addComplexStringPropTween","startNums","endNum","chunk","startNum","hasRandom","_renderComplexString","matchIndex","e","m","fp","_renderBoolean","_renderPlain","cleanVars","hasPriority","gsData","harnessVars","overwritten","onUpdateParams","autoRevert","prevStartAt","_startAt","fullTargets","autoOverwrite","_overwrite","_from","_op","_sortPropTweensByPriority","_onInit","_staggerTweenProps","_staggerPropsToSkip","skipInherit","curTarget","staggerFunc","staggerVarsToMerge","_this3","_hasNoPausedAncestors","_renderZeroDurationTween","prevRatio","_parentPlayheadIsBeforeStart","overwrittenProps","curLookup","curOverwriteProps","killingTargets","propTweenLookup","firstPT","_arraysMatch","a1","a2","_addAliasesToVars","aliases","propertyAliases","onReverseComplete","onReverseCompleteParams","_setterAttribute","setAttribute","_setterWithModifier","mSet","mt","_renderPropTweens","_addPluginModifier","_killPropTweensOf","hasNonDependentRemaining","op","dep","pt2","first","last","pr","change","renderer","TweenMax","TweenLite","TimelineLite","TimelineMax","registerPlugin","args","_createPlugin","isFunc","Plugin","instanceDefaults","statics","register","toUpperCase","getProperty","unit","uncache","getter","format","quickSetter","setters","isTweening","registerEffect","effect","plugins","extendTimeline","pluginName","registerEase","parseEase","exportRoot","includeDelayedCalls","utils","wrap","range","wrapYoyo","total","normalize","clamp","selector","el","current","nativeElement","createElement","pipe","functions","reduce","unitize","interpolate","mutate","interpolators","il","isString","master","install","effects","ticker","globalTimeline","core","globals","getCache","suppressOverwrites","_getPluginPropTween","_buildModifierPlugin","temp","_addModifiers","modifiers","_renderCSSProp","_renderPropWithEnd","_renderCSSPropWithBeginning","_renderRoundedCSSProp","_renderNonTweeningValue","_renderNonTweeningValueOnlyAtEnd","_setterCSSStyle","_setterCSSProp","setProperty","_setterTransform","_setterScale","scaleX","scaleY","_setterScaleWithRender","renderTransform","_setterTransformWithRender","_createElement","ns","createElementNS","_getComputedProperty","skipPrefixFallback","cs","getComputedStyle","getPropertyValue","_capsExp","_checkPropPrefix","_initCore","_docElement","documentElement","_tempDiv","_transformProp","_transformOriginProp","cssText","_supports3D","_pluginInitted","_getBBoxHack","swapIfPossible","bbox","svg","ownerSVGElement","oldParent","parentNode","oldSibling","nextSibling","oldCSS","appendChild","display","getBBox","_gsapBBox","insertBefore","removeChild","_getAttributeFallbacks","attributesArray","hasAttribute","_getBBox","bounds","error","width","height","_isSVG","getCTM","_removeProperty","_transformProps","removeProperty","removeAttribute","_addNonTweeningPT","beginning","onlySetAtEnd","_convertToUnit","px","isSVG","curValue","curUnit","horizontal","_horizontalExp","isRootSVG","tagName","measureProperty","toPixels","toPercent","_nonConvertibleUnits","body","_get","_propertyAliases","_parseTransform","origin","_firstTwoOnly","zOrigin","_specialProps","_tweenComplexCSSString","startValues","startValue","endValue","endUnit","startUnit","relative","_convertKeywordsToPercentages","_keywordToPercent","_renderClearProps","clearTransforms","_isNullTransform","_getComputedTransformMatrixAsArray","matrixString","_identity2DMatrix","_getMatrix","force2D","addedToDOM","matrix","transform","baseVal","consolidate","offsetParent","_applySVGOrigin","originIsAbsolute","smooth","matrixArray","pluginToAddPropTweensTo","determinant","xOriginOld","xOrigin","yOriginOld","yOrigin","xOffsetOld","xOffset","yOffsetOld","yOffset","tx","ty","originSplit","_addPxTranslate","_addRotationalPropTween","direction","cap","_RAD2DEG","finalValue","_assign","source","_addRawTransformPTs","transforms","endCache","startCache","_recentSetterPlugin","Power0","Power1","Power2","Power3","Power4","Quad","Cubic","Quart","Quint","Strong","Elastic","Back","Bounce","Sine","Expo","Circ","_DEG2RAD","_atan2","atan2","_complexExp","autoAlpha","scale","alpha","_prefixes","element","preferPrefix","deg","rad","turn","top","bottom","right","clearProps","_rotationalProperties","z","rotation","rotationX","rotationY","skewX","skewY","perspective","angle","a12","a22","t1","t2","t3","a13","a23","a33","a42","a43","a32","invertedScaleX","forceCSS","xPercent","offsetWidth","yPercent","offsetHeight","transformPerspective","_renderSVGTransforms","_renderCSSTransforms","_renderNon3DTransforms","_zeroDeg","_zeroPx","_endParenthesis","use3D","a11","a21","tan","side","positionAndScale","all","CSSPlugin","specialProp","isTransformRelated","transformPropTween","parseTransform","smoothOrigin","autoRound","checkPrefix","gsapWithCSS","TweenMaxWithCSS"],"mappings":"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"}
lib/motion_path/MotionPathPlugin.min.js ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * MotionPathPlugin 3.7.1
3
+ * https://greensock.com
4
+ *
5
+ * @license Copyright 2021, GreenSock. All rights reserved.
6
+ * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership.
7
+ * @author: Jack Doyle, jack@greensock.com
8
+ */
9
+
10
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).window=t.window||{})}(this,function(t){"use strict";function p(t){return"string"==typeof t}function x(t){return Math.round(1e10*t)/1e10||0}function y(t,e,n,r){var a=t[e],o=1===r?6:subdivideSegment(a,n,r);if(o&&o+n+2<a.length)return t.splice(e,0,a.slice(0,n+o+2)),a.splice(0,n+o),1}function C(t,e){var n=t.length,r=t[n-1]||[],a=r.length;n&&e[0]===r[a-2]&&e[1]===r[a-1]&&(e=r.concat(e.slice(2)),n--),t[n]=e}var M=/[achlmqstvz]|(-?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,T=/(?:(-)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,L=/[\+\-]?\d*\.?\d+e[\+\-]?\d+/gi,r=/(^[#\.][a-z]|[a-y][a-z])/i,q=Math.PI/180,s=180/Math.PI,F=Math.sin,U=Math.cos,H=Math.abs,$=Math.sqrt,S=Math.atan2,A=1e8,l=function _isNumber(t){return"number"==typeof t},N={},_={},e=1e5,d=function _wrapProgress(t){return Math.round((t+A)%1*e)/e||(t<0?0:1)},B=function _round(t){return Math.round(t*e)/e||0},m=function _getSampleIndex(t,e,n){var r=t.length,a=~~(n*r);if(t[a]>e)for(;--a&&t[a]>e;);else for(;t[++a]<e&&a<r;);return a},O=function _copyMetaData(t,e){return e.totalLength=t.totalLength,t.samples?(e.samples=t.samples.slice(0),e.lookup=t.lookup.slice(0),e.minLength=t.minLength,e.resolution=t.resolution):t.totalPoints&&(e.totalPoints=t.totalPoints),e};function getRawPath(t){var e,n=(t=p(t)&&r.test(t)&&document.querySelector(t)||t).getAttribute?t:0;return n&&(t=t.getAttribute("d"))?(n._gsPath||(n._gsPath={}),(e=n._gsPath[t])&&!e._dirty?e:n._gsPath[t]=stringToRawPath(t)):t?p(t)?stringToRawPath(t):l(t[0])?[t]:t:console.warn("Expecting a <path> element or an SVG path data string")}function reverseSegment(t){var e,n=0;for(t.reverse();n<t.length;n+=2)e=t[n],t[n]=t[n+1],t[n+1]=e;t.reversed=!t.reversed}var I={rect:"rx,ry,x,y,width,height",circle:"r,cx,cy",ellipse:"rx,ry,cx,cy",line:"x1,x2,y1,y2"};function convertToPath(t,e){var n,r,a,o,i,s,l,h,u,g,f,c,p,d,m,v,x,y,P,w,b,M,R=t.tagName.toLowerCase(),L=.552284749831;return"path"!==R&&t.getBBox?(s=function _createPath(t,e){var n,r=document.createElementNS("http://www.w3.org/2000/svg","path"),a=[].slice.call(t.attributes),o=a.length;for(e=","+e+",";-1<--o;)n=a[o].nodeName.toLowerCase(),e.indexOf(","+n+",")<0&&r.setAttributeNS(null,n,a[o].nodeValue);return r}(t,"x,y,width,height,cx,cy,rx,ry,r,x1,x2,y1,y2,points"),M=function _attrToObj(t,e){for(var n=e?e.split(","):[],r={},a=n.length;-1<--a;)r[n[a]]=+t.getAttribute(n[a])||0;return r}(t,I[R]),"rect"===R?(o=M.rx,i=M.ry||o,r=M.x,a=M.y,g=M.width-2*o,f=M.height-2*i,n=o||i?"M"+(v=(d=(p=r+o)+g)+o)+","+(y=a+i)+" V"+(P=y+f)+" C"+[v,w=P+i*L,m=d+o*L,b=P+i,d,b,d-(d-p)/3,b,p+(d-p)/3,b,p,b,c=r+o*(1-L),b,r,w,r,P,r,P-(P-y)/3,r,y+(P-y)/3,r,y,r,x=a+i*(1-L),c,a,p,a,p+(d-p)/3,a,d-(d-p)/3,a,d,a,m,a,v,x,v,y].join(",")+"z":"M"+(r+g)+","+a+" v"+f+" h"+-g+" v"+-f+" h"+g+"z"):"circle"===R||"ellipse"===R?(h="circle"===R?(o=i=M.r)*L:(o=M.rx,(i=M.ry)*L),n="M"+((r=M.cx)+o)+","+(a=M.cy)+" C"+[r+o,a+h,r+(l=o*L),a+i,r,a+i,r-l,a+i,r-o,a+h,r-o,a,r-o,a-h,r-l,a-i,r,a-i,r+l,a-i,r+o,a-h,r+o,a].join(",")+"z"):"line"===R?n="M"+M.x1+","+M.y1+" L"+M.x2+","+M.y2:"polyline"!==R&&"polygon"!==R||(n="M"+(r=(u=(t.getAttribute("points")+"").match(T)||[]).shift())+","+(a=u.shift())+" L"+u.join(","),"polygon"===R&&(n+=","+r+","+a+"z")),s.setAttribute("d",rawPathToString(s._gsRawPath=stringToRawPath(n))),e&&t.parentNode&&(t.parentNode.insertBefore(s,t),t.parentNode.removeChild(t)),s):t}function getRotationAtBezierT(t,e,n){var r,a=t[e],o=t[e+2],i=t[e+4];return a+=(o-a)*n,a+=((o+=(i-o)*n)-a)*n,r=o+(i+(t[e+6]-i)*n-o)*n-a,a=t[e+1],a+=((o=t[e+3])-a)*n,a+=((o+=((i=t[e+5])-o)*n)-a)*n,B(S(o+(i+(t[e+7]-i)*n-o)*n-a,r)*s)}function sliceRawPath(t,e,n){n=function _isUndefined(t){return void 0===t}(n)?1:x(n)||0,e=x(e)||0;var r=Math.max(0,~~(H(n-e)-1e-8)),a=function copyRawPath(t){for(var e=[],n=0;n<t.length;n++)e[n]=O(t[n],t[n].slice(0));return O(t,e)}(t);if(n<e&&(e=1-e,n=1-n,function _reverseRawPath(t,e){var n=t.length;for(e||t.reverse();n--;)t[n].reversed||reverseSegment(t[n])}(a),a.totalLength=0),e<0||n<0){var o=Math.abs(~~Math.min(e,n))+1;e+=o,n+=o}a.totalLength||cacheRawPathMeasurements(a);var i,s,l,h,u,g,f,c,p=1<n,d=getProgressData(a,e,N,!0),m=getProgressData(a,n,_),v=m.segment,P=d.segment,w=m.segIndex,b=d.segIndex,M=m.i,R=d.i,L=b===w,T=M===R&&L;if(p||r){for(i=w<b||L&&M<R||T&&m.t<d.t,y(a,b,R,d.t)&&(b++,i||(w++,T?(m.t=(m.t-d.t)/(1-d.t),M=0):L&&(M-=R))),1-(n-e)<1e-5?w=b-1:!m.t&&w?w--:y(a,w,M,m.t)&&i&&b++,1===d.t&&(b=(b+1)%a.length),u=[],f=1+(g=a.length)*r,f+=(g-(c=b)+w)%g,h=0;h<f;h++)C(u,a[c++%g]);a=u}else if(l=1===m.t?6:subdivideSegment(v,M,m.t),e!==n)for(s=subdivideSegment(P,R,T?d.t/m.t:d.t),L&&(l+=s),v.splice(M+l+2),(s||R)&&P.splice(0,R+s),h=a.length;h--;)(h<b||w<h)&&a.splice(h,1);else v.angle=getRotationAtBezierT(v,M+l,0),d=v[M+=l],m=v[M+1],v.length=v.totalLength=0,v.totalPoints=a.totalPoints=8,v.push(d,m,d,m,d,m,d,m);return a.totalLength=0,a}function measureSegment(t,e,n){e=e||0,t.samples||(t.samples=[],t.lookup=[]);var r,a,o,i,s,l,h,u,g,f,c,p,d,m,v,x,y,P=~~t.resolution||12,w=1/P,b=n?e+6*n+1:t.length,M=t[e],R=t[e+1],L=e?e/6*P:0,T=t.samples,S=t.lookup,N=(e?t.minLength:A)||A,_=T[L+n*P-1],C=e?T[L-1]:0;for(T.length=S.length=0,a=e+2;a<b;a+=6){if(o=t[a+4]-M,i=t[a+2]-M,s=t[a]-M,u=t[a+5]-R,g=t[a+3]-R,f=t[a+1]-R,l=h=c=p=0,H(o)<.01&&H(u)<.01&&H(s)+H(f)<.01)8<t.length&&(t.splice(a,6),a-=6,b-=6);else for(r=1;r<=P;r++)l=h-(h=((m=w*r)*m*o+3*(d=1-m)*(m*i+d*s))*m),c=p-(p=(m*m*u+3*d*(m*g+d*f))*m),(x=$(c*c+l*l))<N&&(N=x),C+=x,T[L++]=C;M+=o,R+=u}if(_)for(_-=C;L<T.length;L++)T[L]+=_;if(T.length&&N){if(t.totalLength=y=T[T.length-1]||0,y/(t.minLength=N)<9999)for(x=v=0,r=0;r<y;r+=N)S[x++]=T[v]<r?++v:v}else t.totalLength=T[0]=0;return e?C-T[e/2-1]:C}function cacheRawPathMeasurements(t,e){var n,r,a;for(a=n=r=0;a<t.length;a++)t[a].resolution=~~e||12,r+=t[a].length,n+=measureSegment(t[a]);return t.totalPoints=r,t.totalLength=n,t}function subdivideSegment(t,e,n){if(n<=0||1<=n)return 0;var r=t[e],a=t[e+1],o=t[e+2],i=t[e+3],s=t[e+4],l=t[e+5],h=r+(o-r)*n,u=o+(s-o)*n,g=a+(i-a)*n,f=i+(l-i)*n,c=h+(u-h)*n,p=g+(f-g)*n,d=s+(t[e+6]-s)*n,m=l+(t[e+7]-l)*n;return u+=(d-u)*n,f+=(m-f)*n,t.splice(e+2,4,B(h),B(g),B(c),B(p),B(c+(u-c)*n),B(p+(f-p)*n),B(u),B(f),B(d),B(m)),t.samples&&t.samples.splice(e/6*t.resolution|0,0,0,0,0,0,0,0),6}function getProgressData(t,e,n,r){n=n||{},t.totalLength||cacheRawPathMeasurements(t),(e<0||1<e)&&(e=d(e));var a,o,i,s,l,h,u,g=0,f=t[0];if(e)if(1===e)u=1,h=(f=t[g=t.length-1]).length-8;else{if(1<t.length){for(i=t.totalLength*e,l=h=0;(l+=t[h++].totalLength)<i;)g=h;e=(i-(s=l-(f=t[g]).totalLength))/(l-s)||0}a=f.samples,o=f.resolution,i=f.totalLength*e,s=(h=f.lookup.length?f.lookup[~~(i/f.minLength)]||0:m(a,i,e))?a[h-1]:0,(l=a[h])<i&&(s=l,l=a[++h]),u=1/o*((i-s)/(l-s)+h%o),h=6*~~(h/o),r&&1===u&&(h+6<f.length?(h+=6,u=0):g+1<t.length&&(h=u=0,f=t[++g]))}else u=h=g=0,f=t[0];return n.t=u,n.i=h,n.path=t,n.segment=f,n.segIndex=g,n}function getPositionOnPath(t,e,n,r){var a,o,i,s,l,h,u,g,f,c=t[0],p=r||{};if((e<0||1<e)&&(e=d(e)),1<t.length){for(i=t.totalLength*e,l=h=0;(l+=t[h++].totalLength)<i;)c=t[h];e=(i-(s=l-c.totalLength))/(l-s)||0}return a=c.samples,o=c.resolution,i=c.totalLength*e,s=(h=c.lookup.length?c.lookup[e<1?~~(i/c.minLength):c.lookup.length-1]||0:m(a,i,e))?a[h-1]:0,(l=a[h])<i&&(s=l,l=a[++h]),f=1-(u=1/o*((i-s)/(l-s)+h%o)||0),g=c[h=6*~~(h/o)],p.x=B((u*u*(c[h+6]-g)+3*f*(u*(c[h+4]-g)+f*(c[h+2]-g)))*u+g),p.y=B((u*u*(c[h+7]-(g=c[h+1]))+3*f*(u*(c[h+5]-g)+f*(c[h+3]-g)))*u+g),n&&(p.angle=c.totalLength?getRotationAtBezierT(c,h,1<=u?1-1e-9:u||1e-9):c.angle||0),p}function transformRawPath(t,e,n,r,a,o,i){for(var s,l,h,u,g,f=t.length;-1<--f;)for(l=(s=t[f]).length,h=0;h<l;h+=2)u=s[h],g=s[h+1],s[h]=u*e+g*r+o,s[h+1]=u*n+g*a+i;return t._dirty=1,t}function arcToSegment(t,e,n,r,a,o,i,s,l){if(t!==s||e!==l){n=H(n),r=H(r);var h=a%360*q,u=U(h),g=F(h),f=Math.PI,c=2*f,p=(t-s)/2,d=(e-l)/2,m=u*p+g*d,v=-g*p+u*d,x=m*m,y=v*v,P=x/(n*n)+y/(r*r);1<P&&(n=$(P)*n,r=$(P)*r);var w=n*n,b=r*r,M=(w*b-w*y-b*x)/(w*y+b*x);M<0&&(M=0);var R=(o===i?-1:1)*$(M),L=n*v/r*R,T=-r*m/n*R,S=u*L-g*T+(t+s)/2,N=g*L+u*T+(e+l)/2,_=(m-L)/n,C=(v-T)/r,A=(-m-L)/n,B=(-v-T)/r,O=_*_+C*C,I=(C<0?-1:1)*Math.acos(_/$(O)),E=(_*B-C*A<0?-1:1)*Math.acos((_*A+C*B)/$(O*(A*A+B*B)));isNaN(E)&&(E=f),!i&&0<E?E-=c:i&&E<0&&(E+=c),I%=c,E%=c;var G,D=Math.ceil(H(E)/(c/4)),X=[],z=E/D,k=4/3*F(z/2)/(1+U(z/2)),Z=u*n,V=g*n,Y=g*-r,j=u*r;for(G=0;G<D;G++)m=U(a=I+G*z),v=F(a),_=U(a+=z),C=F(a),X.push(m-k*v,v+k*m,_+k*C,C-k*_,_,C);for(G=0;G<X.length;G+=2)m=X[G],v=X[G+1],X[G]=m*Z+v*Y+S,X[G+1]=m*V+v*j+N;return X[G-2]=s,X[G-1]=l,X}}function stringToRawPath(t){function Af(t,e,n,r){u=(n-t)/3,g=(r-e)/3,s.push(t+u,e+g,n-u,r-g,n,r)}var e,n,r,a,o,i,s,l,h,u,g,f,c,p,d,m=(t+"").replace(L,function(t){var e=+t;return e<1e-4&&-1e-4<e?0:e}).match(M)||[],v=[],x=0,y=0,P=m.length,w=0,b="ERROR: malformed path: "+t;if(!t||!isNaN(m[0])||isNaN(m[1]))return console.log(b),v;for(e=0;e<P;e++)if(c=o,isNaN(m[e])?i=(o=m[e].toUpperCase())!==m[e]:e--,r=+m[e+1],a=+m[e+2],i&&(r+=x,a+=y),e||(l=r,h=a),"M"===o)s&&(s.length<8?--v.length:w+=s.length),x=l=r,y=h=a,s=[r,a],v.push(s),e+=2,o="L";else if("C"===o)i||(x=y=0),(s=s||[0,0]).push(r,a,x+1*m[e+3],y+1*m[e+4],x+=1*m[e+5],y+=1*m[e+6]),e+=6;else if("S"===o)u=x,g=y,"C"!==c&&"S"!==c||(u+=x-s[s.length-4],g+=y-s[s.length-3]),i||(x=y=0),s.push(u,g,r,a,x+=1*m[e+3],y+=1*m[e+4]),e+=4;else if("Q"===o)u=x+2/3*(r-x),g=y+2/3*(a-y),i||(x=y=0),x+=1*m[e+3],y+=1*m[e+4],s.push(u,g,x+2/3*(r-x),y+2/3*(a-y),x,y),e+=4;else if("T"===o)u=x-s[s.length-4],g=y-s[s.length-3],s.push(x+u,y+g,r+2/3*(x+1.5*u-r),a+2/3*(y+1.5*g-a),x=r,y=a),e+=2;else if("H"===o)Af(x,y,x=r,y),e+=1;else if("V"===o)Af(x,y,x,y=r+(i?y-x:0)),e+=1;else if("L"===o||"Z"===o)"Z"===o&&(r=l,a=h,s.closed=!0),("L"===o||.5<H(x-r)||.5<H(y-a))&&(Af(x,y,r,a),"L"===o&&(e+=2)),x=r,y=a;else if("A"===o){if(p=m[e+4],d=m[e+5],u=m[e+6],g=m[e+7],n=7,1<p.length&&(p.length<3?(g=u,u=d,n--):(g=d,u=p.substr(2),n-=2),d=p.charAt(1),p=p.charAt(0)),f=arcToSegment(x,y,+m[e+1],+m[e+2],+m[e+3],+p,+d,(i?x:0)+1*u,(i?y:0)+1*g),e+=n,f)for(n=0;n<f.length;n++)s.push(f[n]);x=s[s.length-2],y=s[s.length-1]}else console.log(b);return(e=s.length)<6?(v.pop(),e=0):s[0]===s[e-2]&&s[1]===s[e-1]&&(s.closed=!0),v.totalPoints=w+e,v}function flatPointsToSegment(t,e){void 0===e&&(e=1);for(var n=t[0],r=0,a=[n,r],o=2;o<t.length;o+=2)a.push(n,r,t[o],r=(t[o]-n)*e/2,n=t[o],-r);return a}function pointsToSegment(t,e,n){H(t[0]-t[2])<1e-4&&H(t[1]-t[3])<1e-4&&(t=t.slice(2));var r,a,o,i,s,l,h,u,g,f,c,p,d,m,v=t.length-2,x=+t[0],y=+t[1],P=+t[2],w=+t[3],b=[x,y,x,y],M=P-x,R=w-y,L=Math.abs(t[v]-x)<.001&&Math.abs(t[v+1]-y)<.001;for(isNaN(n)&&(n=Math.PI/10),L&&(t.push(P,w),P=x,w=y,x=t[v-2],y=t[v-1],t.unshift(x,y),v+=4),e=e||0===e?+e:1,s=2;s<v;s+=2)r=x,a=y,x=P,y=w,P=+t[s+2],w=+t[s+3],x===P&&y===w||(p=(l=M)*l+(u=R)*u,d=(M=P-x)*M+(R=w-y)*R,m=(h=P-r)*h+(g=w-a)*g,c=(o=Math.acos((p+d-m)/$(4*p*d)))/Math.PI*e,f=$(p)*c,c*=$(d),x===r&&y===a||(n<o?(i=S(g,h),b.push(B(x-U(i)*f),B(y-F(i)*f),B(x),B(y),B(x+U(i)*c),B(y+F(i)*c))):(i=S(u,l),b.push(B(x-U(i)*f),B(y-F(i)*f)),i=S(R,M),b.push(B(x),B(y),B(x+U(i)*c),B(y+F(i)*c)))));return x!==P||y!==w||b.length<4?b.push(B(P),B(w),B(P),B(w)):b.length-=2,L&&(b.splice(0,6),b.length=b.length-6),b}function rawPathToString(t){l(t[0])&&(t=[t]);var e,n,r,a,o="",i=t.length;for(n=0;n<i;n++){for(a=t[n],o+="M"+B(a[0])+","+B(a[1])+" C",e=a.length,r=2;r<e;r++)o+=B(a[r++])+","+B(a[r++])+" "+B(a[r++])+","+B(a[r++])+" "+B(a[r++])+","+B(a[r])+" ";a.closed&&(o+="z")}return o}function R(t){var e=t.ownerDocument||t;!(z in t.style)&&"msTransform"in t.style&&(k=(z="msTransform")+"Origin");for(;e.parentNode&&(e=e.parentNode););if(v=window,E=new j,e){P=(c=e).documentElement,w=e.body,(G=c.createElementNS("http://www.w3.org/2000/svg","g")).style.transform="none";var n=e.createElement("div"),r=e.createElement("div");w.appendChild(n),n.appendChild(r),n.style.position="static",n.style[z]="translate3d(0,0,1px)",D=r.offsetParent!==n,w.removeChild(n)}return e}function X(t){return t.ownerSVGElement||("svg"===(t.tagName+"").toLowerCase()?t:null)}function Z(t,e){if(t.parentNode&&(c||R(t))){var n=X(t),r=n?n.getAttribute("xmlns")||"http://www.w3.org/2000/svg":"http://www.w3.org/1999/xhtml",a=n?e?"rect":"g":"div",o=2!==e?0:100,i=3===e?100:0,s="position:absolute;display:block;pointer-events:none;margin:0;padding:0;",l=c.createElementNS?c.createElementNS(r.replace(/^https/,"http"),a):c.createElement(a);return e&&(n?(b=b||Z(t),l.setAttribute("width",.01),l.setAttribute("height",.01),l.setAttribute("transform","translate("+o+","+i+")"),b.appendChild(l)):(f||((f=Z(t)).style.cssText=s),l.style.cssText=s+"width:0.1px;height:0.1px;top:"+i+"px;left:"+o+"px",f.appendChild(l))),l}throw"Need document and parent."}function aa(t,e){var n,r,a,o,i,s,l=X(t),h=t===l,u=l?V:Y,g=t.parentNode;if(t===v)return t;if(u.length||u.push(Z(t,1),Z(t,2),Z(t,3)),n=l?b:f,l)h?(o=-(a=function _getCTM(t){var e,n=t.getCTM();return n||(e=t.style[z],t.style[z]="none",t.appendChild(G),n=G.getCTM(),t.removeChild(G),e?t.style[z]=e:t.style.removeProperty(z.replace(/([A-Z])/g,"-$1").toLowerCase())),n}(t)).e/a.a,i=-a.f/a.d,r=E):(a=t.getBBox(),o=(r=(r=t.transform?t.transform.baseVal:{}).numberOfItems?1<r.numberOfItems?function _consolidate(t){for(var e=new j,n=0;n<t.numberOfItems;n++)e.multiply(t.getItem(n).matrix);return e}(r):r.getItem(0).matrix:E).a*a.x+r.c*a.y,i=r.b*a.x+r.d*a.y),e&&"g"===t.tagName.toLowerCase()&&(o=i=0),(h?l:g).appendChild(n),n.setAttribute("transform","matrix("+r.a+","+r.b+","+r.c+","+r.d+","+(r.e+o)+","+(r.f+i)+")");else{if(o=i=0,D)for(r=t.offsetParent,a=t;(a=a&&a.parentNode)&&a!==r&&a.parentNode;)4<(v.getComputedStyle(a)[z]+"").length&&(o=a.offsetLeft,i=a.offsetTop,a=0);if("absolute"!==(s=v.getComputedStyle(t)).position&&"fixed"!==s.position)for(r=t.offsetParent;g&&g!==r;)o+=g.scrollLeft||0,i+=g.scrollTop||0,g=g.parentNode;(a=n.style).top=t.offsetTop-i+"px",a.left=t.offsetLeft-o+"px",a[z]=s[z],a[k]=s[k],a.position="fixed"===s.position?"fixed":"absolute",t.parentNode.appendChild(n)}return n}function ba(t,e,n,r,a,o,i){return t.a=e,t.b=n,t.c=r,t.d=a,t.e=o,t.f=i,t}var c,v,P,w,f,b,E,G,D,n,z="transform",k=z+"Origin",V=[],Y=[],j=((n=Matrix2D.prototype).inverse=function inverse(){var t=this.a,e=this.b,n=this.c,r=this.d,a=this.e,o=this.f,i=t*r-e*n||1e-10;return ba(this,r/i,-e/i,-n/i,t/i,(n*o-r*a)/i,-(t*o-e*a)/i)},n.multiply=function multiply(t){var e=this.a,n=this.b,r=this.c,a=this.d,o=this.e,i=this.f,s=t.a,l=t.c,h=t.b,u=t.d,g=t.e,f=t.f;return ba(this,s*e+h*r,s*n+h*a,l*e+u*r,l*n+u*a,o+g*e+f*r,i+g*n+f*a)},n.clone=function clone(){return new Matrix2D(this.a,this.b,this.c,this.d,this.e,this.f)},n.equals=function equals(t){var e=this.a,n=this.b,r=this.c,a=this.d,o=this.e,i=this.f;return e===t.a&&n===t.b&&r===t.c&&a===t.d&&o===t.e&&i===t.f},n.apply=function apply(t,e){void 0===e&&(e={});var n=t.x,r=t.y,a=this.a,o=this.b,i=this.c,s=this.d,l=this.e,h=this.f;return e.x=n*a+r*i+l||0,e.y=n*o+r*s+h||0,e},Matrix2D);function Matrix2D(t,e,n,r,a,o){void 0===t&&(t=1),void 0===e&&(e=0),void 0===n&&(n=0),void 0===r&&(r=1),void 0===a&&(a=0),void 0===o&&(o=0),ba(this,t,e,n,r,a,o)}function getGlobalMatrix(t,e,n,r){if(!t||!t.parentNode||(c||R(t)).documentElement===t)return new j;var a=function _forceNonZeroScale(t){for(var e,n;t&&t!==w;)(n=t._gsap)&&n.uncache&&n.get(t,"x"),n&&!n.scaleX&&!n.scaleY&&n.renderTransform&&(n.scaleX=n.scaleY=1e-4,n.renderTransform(1,n),e?e.push(n):e=[n]),t=t.parentNode;return e}(t),o=X(t)?V:Y,i=aa(t,n),s=o[0].getBoundingClientRect(),l=o[1].getBoundingClientRect(),h=o[2].getBoundingClientRect(),u=i.parentNode,g=!r&&function _isFixed(t){return"fixed"===v.getComputedStyle(t).position||((t=t.parentNode)&&1===t.nodeType?_isFixed(t):void 0)}(t),f=new j((l.left-s.left)/100,(l.top-s.top)/100,(h.left-s.left)/100,(h.top-s.top)/100,s.left+(g?0:function _getDocScrollLeft(){return v.pageXOffset||c.scrollLeft||P.scrollLeft||w.scrollLeft||0}()),s.top+(g?0:function _getDocScrollTop(){return v.pageYOffset||c.scrollTop||P.scrollTop||w.scrollTop||0}()));if(u.removeChild(i),a)for(s=a.length;s--;)(l=a[s]).scaleX=l.scaleY=0,l.renderTransform(1,l);return e?f.inverse():f}function la(t,e,n,r){for(var a=e.length,o=2===r?0:r,i=0;i<a;i++)t[o]=parseFloat(e[i][n]),2===r&&(t[o+1]=0),o+=2;return t}function ma(t,e,n){return parseFloat(t._gsap.get(t,e,n||"px"))||0}function na(t){var e,n=t[0],r=t[1];for(e=2;e<t.length;e+=2)n=t[e]+=n,r=t[e+1]+=r}function oa(t,e,n,r,a,o,i,s,l){return e="cubic"===i.type?[e]:(!1!==i.fromCurrent&&e.unshift(ma(n,r,s),a?ma(n,a,l):0),i.relative&&na(e),[(a?pointsToSegment:flatPointsToSegment)(e,i.curviness)]),e=o(nt(e,n,i)),rt(t,n,r,e,"x",s),a&&rt(t,n,a,e,"y",l),cacheRawPathMeasurements(e,i.resolution||(0===i.curviness?20:12))}function pa(t){return t}function ra(t,e,n){var r,a,o,i=getGlobalMatrix(t);return"svg"===(t.tagName+"").toLowerCase()?(a=(r=t.viewBox.baseVal).x,o=r.y,r.width||(r={width:+t.getAttribute("width"),height:+t.getAttribute("height")})):(r=e&&t.getBBox&&t.getBBox(),a=o=0),e&&"auto"!==e&&(a+=e.push?e[0]*(r?r.width:t.offsetWidth||0):e.x,o+=e.push?e[1]*(r?r.height:t.offsetHeight||0):e.y),n.apply(a||o?i.apply({x:a,y:o}):{x:i.e,y:i.f})}function sa(t,e,n,r){var a,o=getGlobalMatrix(t.parentNode,!0,!0),i=o.clone().multiply(getGlobalMatrix(e)),s=ra(t,n,o),l=ra(e,r,o),h=l.x,u=l.y;return i.e=i.f=0,"auto"===r&&e.getTotalLength&&"path"===e.tagName.toLowerCase()&&(a=e.getAttribute("d").match(et)||[],h+=(a=i.apply({x:+a[0],y:+a[1]})).x,u+=a.y),(a||e.getBBox&&t.getBBox&&e.ownerSVGElement===t.ownerSVGElement)&&(h-=(a=i.apply(e.getBBox())).x,u-=a.y),i.e=h-s.x,i.f=u-s.y,i}var Q,g,W,J,K="x,translateX,left,marginLeft,xPercent".split(","),tt="y,translateY,top,marginTop,yPercent".split(","),o=Math.PI/180,et=/[-+\.]*\d+[\.e\-\+]*\d*[e\-\+]*\d*/g,nt=function _align(t,e,n){var r,a,o,i=n.align,s=n.matrix,l=n.offsetX,h=n.offsetY,u=n.alignOrigin,g=t[0][0],f=t[0][1],c=ma(e,"x"),p=ma(e,"y");return t&&t.length?(i&&("self"===i||(r=J(i)[0]||e)===e?transformRawPath(t,1,0,0,1,c-g,p-f):(u&&!1!==u[2]?Q.set(e,{transformOrigin:100*u[0]+"% "+100*u[1]+"%"}):u=[ma(e,"xPercent")/-100,ma(e,"yPercent")/-100],o=(a=sa(e,r,u,"auto")).apply({x:g,y:f}),transformRawPath(t,a.a,a.b,a.c,a.d,c+a.e-(o.x-a.e),p+a.f-(o.y-a.f)))),s?transformRawPath(t,s.a,s.b,s.c,s.d,s.e,s.f):(l||h)&&transformRawPath(t,1,0,0,1,l||0,h||0),t):getRawPath("M0,0L0,0")},rt=function _addDimensionalPropTween(t,e,n,r,a,o){var i=e._gsap,s=i.harness,l=s&&s.aliases&&s.aliases[n],h=l&&l.indexOf(",")<0?l:n,u=t._pt=new g(t._pt,e,h,0,0,pa,0,i.set(e,h,t));u.u=W(i.get(e,h,o))||0,u.path=r,u.pp=a,t._props.push(h)},a={version:"3.7.1",name:"motionPath",register:function register(t,e,n){W=(Q=t).utils.getUnit,J=Q.utils.toArray,g=n},init:function init(t,e){if(!Q)return console.warn("Please gsap.registerPlugin(MotionPathPlugin)"),!1;"object"==typeof e&&!e.style&&e.path||(e={path:e});var n,r,a=[],o=e.path,i=e.autoRotate,s=e.unitX,l=e.unitY,h=e.x,u=e.y,g=o[0],f=function _sliceModifier(e,n){return function(t){return e||1!==n?sliceRawPath(t,e,n):t}}(e.start,"end"in e?e.end:1);if(this.rawPaths=a,this.target=t,(this.rotate=i||0===i)&&(this.rOffset=parseFloat(i)||0,this.radians=!!e.useRadians,this.rProp=e.rotation||"rotation",this.rSet=t._gsap.set(t,this.rProp,this),this.ru=W(t._gsap.get(t,this.rProp))||0),!Array.isArray(o)||"closed"in o||"number"==typeof g)cacheRawPathMeasurements(n=f(nt(getRawPath(e.path),t,e)),e.resolution),a.push(n),rt(this,t,e.x||"x",n,"x",e.unitX||"px"),rt(this,t,e.y||"y",n,"y",e.unitY||"px");else{for(r in g)!h&&~K.indexOf(r)?h=r:!u&&~tt.indexOf(r)&&(u=r);for(r in h&&u?a.push(oa(this,la(la([],o,h,0),o,u,1),t,h,u,f,e,s||W(o[0][h]),l||W(o[0][u]))):h=u=0,g)r!==h&&r!==u&&a.push(oa(this,la([],o,r,2),t,r,0,f,e,W(o[0][r])))}},render:function render(t,e){var n=e.rawPaths,r=n.length,a=e._pt;for(1<t?t=1:t<0&&(t=0);r--;)getPositionOnPath(n[r],t,!r&&e.rotate,n[r]);for(;a;)a.set(a.t,a.p,a.path[a.pp]+a.u,a.d,t),a=a._next;e.rotate&&e.rSet(e.target,e.rProp,n[0].angle*(e.radians?o:1)+e.rOffset+e.ru,e,t)},getLength:function getLength(t){return cacheRawPathMeasurements(getRawPath(t)).totalLength},sliceRawPath:sliceRawPath,getRawPath:getRawPath,pointsToSegment:pointsToSegment,stringToRawPath:stringToRawPath,rawPathToString:rawPathToString,transformRawPath:transformRawPath,getGlobalMatrix:getGlobalMatrix,getPositionOnPath:getPositionOnPath,cacheRawPathMeasurements:cacheRawPathMeasurements,convertToPath:function convertToPath$1(t,e){return J(t).map(function(t){return convertToPath(t,!1!==e)})},convertCoordinates:function convertCoordinates(t,e,n){var r=getGlobalMatrix(e,!0,!0).multiply(getGlobalMatrix(t));return n?r.apply(n):r},getAlignMatrix:sa,getRelativePosition:function getRelativePosition(t,e,n,r){var a=sa(t,e,n,r);return{x:a.e,y:a.f}},arrayToRawPath:function arrayToRawPath(t,e){var n=la(la([],t,(e=e||{}).x||"x",0),t,e.y||"y",1);return e.relative&&na(n),["cubic"===e.type?n:pointsToSegment(n,e.curviness)]}};!function _getGSAP(){return Q||"undefined"!=typeof window&&(Q=window.gsap)&&Q.registerPlugin&&Q}()||Q.registerPlugin(a),t.MotionPathPlugin=a,t.default=a;if (typeof(window)==="undefined"||window!==t){Object.defineProperty(t,"__esModule",{value:!0})} else {delete t.default}});
11
+
lib/motion_path/MotionPathPlugin.min.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"file":"MotionPathPlugin.min.js","sources":["../src/utils/paths.js","../src/utils/matrix.js","../src/MotionPathPlugin.js"],"sourcesContent":["/*!\n * paths 3.7.1\n * https://greensock.com\n *\n * Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n/* eslint-disable */\n\nlet _svgPathExp = /[achlmqstvz]|(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[0-9]/ig,\n\t_numbersExp = /(?:(-)?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[0-9]/ig,\n\t_scientific = /[\\+\\-]?\\d*\\.?\\d+e[\\+\\-]?\\d+/ig,\n\t_selectorExp = /(^[#\\.][a-z]|[a-y][a-z])/i,\n\t_DEG2RAD = Math.PI / 180,\n\t_RAD2DEG = 180 / Math.PI,\n\t_sin = Math.sin,\n\t_cos = Math.cos,\n\t_abs = Math.abs,\n\t_sqrt = Math.sqrt,\n\t_atan2 = Math.atan2,\n\t_largeNum = 1e8,\n\t_isString = value => typeof(value) === \"string\",\n\t_isNumber = value => typeof(value) === \"number\",\n\t_isUndefined = value => typeof(value) === \"undefined\",\n\t_temp = {},\n\t_temp2 = {},\n\t_roundingNum = 1e5,\n\t_wrapProgress = progress => (Math.round((progress + _largeNum) % 1 * _roundingNum) / _roundingNum) || ((progress < 0) ? 0 : 1), //if progress lands on 1, the % will make it 0 which is why we || 1, but not if it's negative because it makes more sense for motion to end at 0 in that case.\n\t_round = value => (Math.round(value * _roundingNum) / _roundingNum) || 0,\n\t_roundPrecise = value => (Math.round(value * 1e10) / 1e10) || 0,\n\t_splitSegment = (rawPath, segIndex, i, t) => {\n\t\tlet segment = rawPath[segIndex],\n\t\t\tshift = t === 1 ? 6 : subdivideSegment(segment, i, t);\n\t\tif (shift && shift + i + 2 < segment.length) {\n\t\t\trawPath.splice(segIndex, 0, segment.slice(0, i + shift + 2));\n\t\t\tsegment.splice(0, i + shift);\n\t\t\treturn 1;\n\t\t}\n\t},\n\t_getSampleIndex = (samples, length, progress) => {\n\t\t// slightly slower way than doing this (when there's no lookup): segment.lookup[progress < 1 ? ~~(length / segment.minLength) : segment.lookup.length - 1] || 0;\n\t\tlet l = samples.length,\n\t\t\ti = ~~(progress * l);\n\t\tif (samples[i] > length) {\n\t\t\twhile (--i && samples[i] > length) {}\n\t\t} else {\n\t\t\twhile (samples[++i] < length && i < l) {}\n\t\t}\n\t\treturn i;\n\t},\n\t_reverseRawPath = (rawPath, skipOuter) => {\n\t\tlet i = rawPath.length;\n\t\tskipOuter || rawPath.reverse();\n\t\twhile (i--) {\n\t\t\trawPath[i].reversed || reverseSegment(rawPath[i]);\n\t\t}\n\t},\n\t_copyMetaData = (source, copy) => {\n\t\tcopy.totalLength = source.totalLength;\n\t\tif (source.samples) { //segment\n\t\t\tcopy.samples = source.samples.slice(0);\n\t\t\tcopy.lookup = source.lookup.slice(0);\n\t\t\tcopy.minLength = source.minLength;\n\t\t\tcopy.resolution = source.resolution;\n\t\t} else if (source.totalPoints) { //rawPath\n\t\t\tcopy.totalPoints = source.totalPoints;\n\t\t}\n\t\treturn copy;\n\t},\n\t//pushes a new segment into a rawPath, but if its starting values match the ending values of the last segment, it'll merge it into that same segment (to reduce the number of segments)\n\t_appendOrMerge = (rawPath, segment) => {\n\t\tlet index = rawPath.length,\n\t\t\tprevSeg = rawPath[index - 1] || [],\n\t\t\tl = prevSeg.length;\n\t\tif (index && segment[0] === prevSeg[l-2] && segment[1] === prevSeg[l-1]) {\n\t\t\tsegment = prevSeg.concat(segment.slice(2));\n\t\t\tindex--;\n\t\t}\n\t\trawPath[index] = segment;\n\t},\n\t_bestDistance;\n\n/* TERMINOLOGY\n - RawPath - an array of arrays, one for each Segment. A single RawPath could have multiple \"M\" commands, defining Segments (paths aren't always connected).\n - Segment - an array containing a sequence of Cubic Bezier coordinates in alternating x, y, x, y format. Starting anchor, then control point 1, control point 2, and ending anchor, then the next control point 1, control point 2, anchor, etc. Uses less memory than an array with a bunch of {x, y} points.\n - Bezier - a single cubic Bezier with a starting anchor, two control points, and an ending anchor.\n - the variable \"t\" is typically the position along an individual Bezier path (time) and it's NOT linear, meaning it could accelerate/decelerate based on the control points whereas the \"p\" or \"progress\" value is linearly mapped to the whole path, so it shouldn't really accelerate/decelerate based on control points. So a progress of 0.2 would be almost exactly 20% along the path. \"t\" is ONLY in an individual Bezier piece.\n */\n\n//accepts basic selector text, a path instance, a RawPath instance, or a Segment and returns a RawPath (makes it easy to homogenize things). If an element or selector text is passed in, it'll also cache the value so that if it's queried again, it'll just take the path data from there instead of parsing it all over again (as long as the path data itself hasn't changed - it'll check).\nexport function getRawPath(value) {\n\tvalue = (_isString(value) && _selectorExp.test(value)) ? document.querySelector(value) || value : value;\n\tlet e = value.getAttribute ? value : 0,\n\t\trawPath;\n\tif (e && (value = value.getAttribute(\"d\"))) {\n\t\t//implements caching\n\t\tif (!e._gsPath) {\n\t\t\te._gsPath = {};\n\t\t}\n\t\trawPath = e._gsPath[value];\n\t\treturn (rawPath && !rawPath._dirty) ? rawPath : (e._gsPath[value] = stringToRawPath(value));\n\t}\n\treturn !value ? console.warn(\"Expecting a <path> element or an SVG path data string\") : _isString(value) ? stringToRawPath(value) : (_isNumber(value[0])) ? [value] : value;\n}\n\n//copies a RawPath WITHOUT the length meta data (for speed)\nexport function copyRawPath(rawPath) {\n\tlet a = [],\n\t\ti = 0;\n\tfor (; i < rawPath.length; i++) {\n\t\ta[i] = _copyMetaData(rawPath[i], rawPath[i].slice(0));\n\t}\n\treturn _copyMetaData(rawPath, a);\n}\n\nexport function reverseSegment(segment) {\n\tlet i = 0,\n\t\ty;\n\tsegment.reverse(); //this will invert the order y, x, y, x so we must flip it back.\n\tfor (; i < segment.length; i += 2) {\n\t\ty = segment[i];\n\t\tsegment[i] = segment[i+1];\n\t\tsegment[i+1] = y;\n\t}\n\tsegment.reversed = !segment.reversed;\n}\n\n\n\nlet _createPath = (e, ignore) => {\n\t\tlet path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\"),\n\t\t\tattr = [].slice.call(e.attributes),\n\t\t\ti = attr.length,\n\t\t\tname;\n\t\tignore = \",\" + ignore + \",\";\n\t\twhile (--i > -1) {\n\t\t\tname = attr[i].nodeName.toLowerCase(); //in Microsoft Edge, if you don't set the attribute with a lowercase name, it doesn't render correctly! Super weird.\n\t\t\tif (ignore.indexOf(\",\" + name + \",\") < 0) {\n\t\t\t\tpath.setAttributeNS(null, name, attr[i].nodeValue);\n\t\t\t}\n\t\t}\n\t\treturn path;\n\t},\n\t_typeAttrs = {\n\t\trect:\"rx,ry,x,y,width,height\",\n\t\tcircle:\"r,cx,cy\",\n\t\tellipse:\"rx,ry,cx,cy\",\n\t\tline:\"x1,x2,y1,y2\"\n\t},\n\t_attrToObj = (e, attrs) => {\n\t\tlet props = attrs ? attrs.split(\",\") : [],\n\t\t\tobj = {},\n\t\t\ti = props.length;\n\t\twhile (--i > -1) {\n\t\t\tobj[props[i]] = +e.getAttribute(props[i]) || 0;\n\t\t}\n\t\treturn obj;\n\t};\n\n//converts an SVG shape like <circle>, <rect>, <polygon>, <polyline>, <ellipse>, etc. to a <path>, swapping it in and copying the attributes to match.\nexport function convertToPath(element, swap) {\n\tlet type = element.tagName.toLowerCase(),\n\t\tcirc = 0.552284749831,\n\t\tdata, x, y, r, ry, path, rcirc, rycirc, points, w, h, x2, x3, x4, x5, x6, y2, y3, y4, y5, y6, attr;\n\tif (type === \"path\" || !element.getBBox) {\n\t\treturn element;\n\t}\n\tpath = _createPath(element, \"x,y,width,height,cx,cy,rx,ry,r,x1,x2,y1,y2,points\");\n\tattr = _attrToObj(element, _typeAttrs[type]);\n\tif (type === \"rect\") {\n\t\tr = attr.rx;\n\t\try = attr.ry || r;\n\t\tx = attr.x;\n\t\ty = attr.y;\n\t\tw = attr.width - r * 2;\n\t\th = attr.height - ry * 2;\n\t\tif (r || ry) { //if there are rounded corners, render cubic beziers\n\t\t\tx2 = x + r * (1 - circ);\n\t\t\tx3 = x + r;\n\t\t\tx4 = x3 + w;\n\t\t\tx5 = x4 + r * circ;\n\t\t\tx6 = x4 + r;\n\t\t\ty2 = y + ry * (1 - circ);\n\t\t\ty3 = y + ry;\n\t\t\ty4 = y3 + h;\n\t\t\ty5 = y4 + ry * circ;\n\t\t\ty6 = y4 + ry;\n\t\t\tdata = \"M\" + x6 + \",\" + y3 + \" V\" + y4 + \" C\" + [x6, y5, x5, y6, x4, y6, x4 - (x4 - x3) / 3, y6, x3 + (x4 - x3) / 3, y6, x3, y6, x2, y6, x, y5, x, y4, x, y4 - (y4 - y3) / 3, x, y3 + (y4 - y3) / 3, x, y3, x, y2, x2, y, x3, y, x3 + (x4 - x3) / 3, y, x4 - (x4 - x3) / 3, y, x4, y, x5, y, x6, y2, x6, y3].join(\",\") + \"z\";\n\t\t} else {\n\t\t\tdata = \"M\" + (x + w) + \",\" + y + \" v\" + h + \" h\" + (-w) + \" v\" + (-h) + \" h\" + w + \"z\";\n\t\t}\n\n\t} else if (type === \"circle\" || type === \"ellipse\") {\n\t\tif (type === \"circle\") {\n\t\t\tr = ry = attr.r;\n\t\t\trycirc = r * circ;\n\t\t} else {\n\t\t\tr = attr.rx;\n\t\t\try = attr.ry;\n\t\t\trycirc = ry * circ;\n\t\t}\n\t\tx = attr.cx;\n\t\ty = attr.cy;\n\t\trcirc = r * circ;\n\t\tdata = \"M\" + (x+r) + \",\" + y + \" C\" + [x+r, y + rycirc, x + rcirc, y + ry, x, y + ry, x - rcirc, y + ry, x - r, y + rycirc, x - r, y, x - r, y - rycirc, x - rcirc, y - ry, x, y - ry, x + rcirc, y - ry, x + r, y - rycirc, x + r, y].join(\",\") + \"z\";\n\t} else if (type === \"line\") {\n\t\tdata = \"M\" + attr.x1 + \",\" + attr.y1 + \" L\" + attr.x2 + \",\" + attr.y2; //previously, we just converted to \"Mx,y Lx,y\" but Safari has bugs that cause that not to render properly when using a stroke-dasharray that's not fully visible! Using a cubic bezier fixes that issue.\n\t} else if (type === \"polyline\" || type === \"polygon\") {\n\t\tpoints = (element.getAttribute(\"points\") + \"\").match(_numbersExp) || [];\n\t\tx = points.shift();\n\t\ty = points.shift();\n\t\tdata = \"M\" + x + \",\" + y + \" L\" + points.join(\",\");\n\t\tif (type === \"polygon\") {\n\t\t\tdata += \",\" + x + \",\" + y + \"z\";\n\t\t}\n\t}\n\tpath.setAttribute(\"d\", rawPathToString(path._gsRawPath = stringToRawPath(data)));\n\tif (swap && element.parentNode) {\n\t\telement.parentNode.insertBefore(path, element);\n\t\telement.parentNode.removeChild(element);\n\t}\n\treturn path;\n}\n\n\n\n//returns the rotation (in degrees) at a particular progress on a rawPath (the slope of the tangent)\nexport function getRotationAtProgress(rawPath, progress) {\n\tlet d = getProgressData(rawPath, progress >= 1 ? 1 - 1e-9 : progress ? progress : 1e-9);\n\treturn getRotationAtBezierT(d.segment, d.i, d.t);\n}\n\nfunction getRotationAtBezierT(segment, i, t) {\n\tlet a = segment[i],\n\t\tb = segment[i+2],\n\t\tc = segment[i+4],\n\t\tx;\n\ta += (b - a) * t;\n\tb += (c - b) * t;\n\ta += (b - a) * t;\n\tx = b + ((c + (segment[i+6] - c) * t) - b) * t - a;\n\ta = segment[i+1];\n\tb = segment[i+3];\n\tc = segment[i+5];\n\ta += (b - a) * t;\n\tb += (c - b) * t;\n\ta += (b - a) * t;\n\treturn _round(_atan2(b + ((c + (segment[i+7] - c) * t) - b) * t - a, x) * _RAD2DEG);\n}\n\nexport function sliceRawPath(rawPath, start, end) {\n\tend = _isUndefined(end) ? 1 : _roundPrecise(end) || 0; // we must round to avoid issues like 4.15 / 8 = 0.8300000000000001 instead of 0.83 or 2.8 / 5 = 0.5599999999999999 instead of 0.56 and if someone is doing a loop like start: 2.8 / 0.5, end: 2.8 / 0.5 + 1.\n\tstart = _roundPrecise(start) || 0;\n\tlet loops = Math.max(0, ~~(_abs(end - start) - 1e-8)),\n\t\tpath = copyRawPath(rawPath);\n\tif (start > end) {\n\t\tstart = 1 - start;\n\t\tend = 1 - end;\n\t\t_reverseRawPath(path);\n\t\tpath.totalLength = 0;\n\t}\n\tif (start < 0 || end < 0) {\n\t\tlet offset = Math.abs(~~Math.min(start, end)) + 1;\n\t\tstart += offset;\n\t\tend += offset;\n\t}\n\tpath.totalLength || cacheRawPathMeasurements(path);\n\tlet wrap = (end > 1),\n\t\ts = getProgressData(path, start, _temp, true),\n\t\te = getProgressData(path, end, _temp2),\n\t\teSeg = e.segment,\n\t\tsSeg = s.segment,\n\t\teSegIndex = e.segIndex,\n\t\tsSegIndex = s.segIndex,\n\t\tei = e.i,\n\t\tsi = s.i,\n\t\tsameSegment = (sSegIndex === eSegIndex),\n\t\tsameBezier = (ei === si && sameSegment),\n\t\twrapsBehind, sShift, eShift, i, copy, totalSegments, l, j;\n\tif (wrap || loops) {\n\t\twrapsBehind = eSegIndex < sSegIndex || (sameSegment && ei < si) || (sameBezier && e.t < s.t);\n\t\tif (_splitSegment(path, sSegIndex, si, s.t)) {\n\t\t\tsSegIndex++;\n\t\t\tif (!wrapsBehind) {\n\t\t\t\teSegIndex++;\n\t\t\t\tif (sameBezier) {\n\t\t\t\t\te.t = (e.t - s.t) / (1 - s.t);\n\t\t\t\t\tei = 0;\n\t\t\t\t} else if (sameSegment) {\n\t\t\t\t\tei -= si;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (1 - (end - start) < 1e-5) {\n\t\t\teSegIndex = sSegIndex - 1;\n\t\t} else if (!e.t && eSegIndex) {\n\t\t\teSegIndex--;\n\t\t} else if (_splitSegment(path, eSegIndex, ei, e.t) && wrapsBehind) {\n\t\t\tsSegIndex++;\n\t\t}\n\t\tif (s.t === 1) {\n\t\t\tsSegIndex = (sSegIndex + 1) % path.length;\n\t\t}\n\t\tcopy = [];\n\t\ttotalSegments = path.length;\n\t\tl = 1 + totalSegments * loops;\n\t\tj = sSegIndex;\n\t\tl += ((totalSegments - sSegIndex) + eSegIndex) % totalSegments;\n\t\tfor (i = 0; i < l; i++) {\n\t\t\t_appendOrMerge(copy, path[j++ % totalSegments]);\n\t\t}\n\t\tpath = copy;\n\t} else {\n\t\teShift = e.t === 1 ? 6 : subdivideSegment(eSeg, ei, e.t);\n\t\tif (start !== end) {\n\t\t\tsShift = subdivideSegment(sSeg, si, sameBezier ? s.t / e.t : s.t);\n\t\t\tsameSegment && (eShift += sShift);\n\t\t\teSeg.splice(ei + eShift + 2);\n\t\t\t(sShift || si) && sSeg.splice(0, si + sShift);\n\t\t\ti = path.length;\n\t\t\twhile (i--) {\n\t\t\t\t//chop off any extra segments\n\t\t\t\t(i < sSegIndex || i > eSegIndex) &&\tpath.splice(i, 1);\n\t\t\t}\n\t\t} else {\n\t\t\teSeg.angle = getRotationAtBezierT(eSeg, ei + eShift, 0); //record the value before we chop because it'll be impossible to determine the angle after its length is 0!\n\t\t\tei += eShift;\n\t\t\ts = eSeg[ei];\n\t\t\te = eSeg[ei+1];\n\t\t\teSeg.length = eSeg.totalLength = 0;\n\t\t\teSeg.totalPoints = path.totalPoints = 8;\n\t\t\teSeg.push(s, e, s, e, s, e, s, e);\n\t\t}\n\t}\n\tpath.totalLength = 0;\n\treturn path;\n}\n\n//measures a Segment according to its resolution (so if segment.resolution is 6, for example, it'll take 6 samples equally across each Bezier) and create/populate a \"samples\" Array that has the length up to each of those sample points (always increasing from the start) as well as a \"lookup\" array that's broken up according to the smallest distance between 2 samples. This gives us a very fast way of looking up a progress position rather than looping through all the points/Beziers. You can optionally have it only measure a subset, starting at startIndex and going for a specific number of beziers (remember, there are 3 x/y pairs each, for a total of 6 elements for each Bezier). It will also populate a \"totalLength\" property, but that's not generally super accurate because by default it'll only take 6 samples per Bezier. But for performance reasons, it's perfectly adequate for measuring progress values along the path. If you need a more accurate totalLength, either increase the resolution or use the more advanced bezierToPoints() method which keeps adding points until they don't deviate by more than a certain precision value.\nfunction measureSegment(segment, startIndex, bezierQty) {\n\tstartIndex = startIndex || 0;\n\tif (!segment.samples) {\n\t\tsegment.samples = [];\n\t\tsegment.lookup = [];\n\t}\n\tlet resolution = ~~segment.resolution || 12,\n\t\tinc = 1 / resolution,\n\t\tendIndex = bezierQty ? startIndex + bezierQty * 6 + 1 : segment.length,\n\t\tx1 = segment[startIndex],\n\t\ty1 = segment[startIndex + 1],\n\t\tsamplesIndex = startIndex ? (startIndex / 6) * resolution : 0,\n\t\tsamples = segment.samples,\n\t\tlookup = segment.lookup,\n\t\tmin = (startIndex ? segment.minLength : _largeNum) || _largeNum,\n\t\tprevLength = samples[samplesIndex + bezierQty * resolution - 1],\n\t\tlength = startIndex ? samples[samplesIndex-1] : 0,\n\t\ti, j, x4, x3, x2, xd, xd1, y4, y3, y2, yd, yd1, inv, t, lengthIndex, l, segLength;\n\tsamples.length = lookup.length = 0;\n\tfor (j = startIndex + 2; j < endIndex; j += 6) {\n\t\tx4 = segment[j + 4] - x1;\n\t\tx3 = segment[j + 2] - x1;\n\t\tx2 = segment[j] - x1;\n\t\ty4 = segment[j + 5] - y1;\n\t\ty3 = segment[j + 3] - y1;\n\t\ty2 = segment[j + 1] - y1;\n\t\txd = xd1 = yd = yd1 = 0;\n\t\tif (_abs(x4) < .01 && _abs(y4) < .01 && _abs(x2) + _abs(y2) < .01) { //dump points that are sufficiently close (basically right on top of each other, making a bezier super tiny or 0 length)\n\t\t\tif (segment.length > 8) {\n\t\t\t\tsegment.splice(j, 6);\n\t\t\t\tj -= 6;\n\t\t\t\tendIndex -= 6;\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 1; i <= resolution; i++) {\n\t\t\t\tt = inc * i;\n\t\t\t\tinv = 1 - t;\n\t\t\t\txd = xd1 - (xd1 = (t * t * x4 + 3 * inv * (t * x3 + inv * x2)) * t);\n\t\t\t\tyd = yd1 - (yd1 = (t * t * y4 + 3 * inv * (t * y3 + inv * y2)) * t);\n\t\t\t\tl = _sqrt(yd * yd + xd * xd);\n\t\t\t\tif (l < min) {\n\t\t\t\t\tmin = l;\n\t\t\t\t}\n\t\t\t\tlength += l;\n\t\t\t\tsamples[samplesIndex++] = length;\n\t\t\t}\n\t\t}\n\t\tx1 += x4;\n\t\ty1 += y4;\n\t}\n\tif (prevLength) {\n\t\tprevLength -= length;\n\t\tfor (; samplesIndex < samples.length; samplesIndex++) {\n\t\t\tsamples[samplesIndex] += prevLength;\n\t\t}\n\t}\n\tif (samples.length && min) {\n\t\tsegment.totalLength = segLength = samples[samples.length-1] || 0;\n\t\tsegment.minLength = min;\n\t\tif (segLength / min < 9999) { // if the lookup would require too many values (memory problem), we skip this and instead we use a loop to lookup values directly in the samples Array\n\t\t\tl = lengthIndex = 0;\n\t\t\tfor (i = 0; i < segLength; i += min) {\n\t\t\t\tlookup[l++] = (samples[lengthIndex] < i) ? ++lengthIndex : lengthIndex;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tsegment.totalLength = samples[0] = 0;\n\t}\n\treturn startIndex ? length - samples[startIndex / 2 - 1] : length;\n}\n\nexport function cacheRawPathMeasurements(rawPath, resolution) {\n\tlet pathLength, points, i;\n\tfor (i = pathLength = points = 0; i < rawPath.length; i++) {\n\t\trawPath[i].resolution = ~~resolution || 12; //steps per Bezier curve (anchor, 2 control points, to anchor)\n\t\tpoints += rawPath[i].length;\n\t\tpathLength += measureSegment(rawPath[i]);\n\t}\n\trawPath.totalPoints = points;\n\trawPath.totalLength = pathLength;\n\treturn rawPath;\n}\n\n//divide segment[i] at position t (value between 0 and 1, progress along that particular cubic bezier segment that starts at segment[i]). Returns how many elements were spliced into the segment array (either 0 or 6)\nexport function subdivideSegment(segment, i, t) {\n\tif (t <= 0 || t >= 1) {\n\t\treturn 0;\n\t}\n\tlet ax = segment[i],\n\t\tay = segment[i+1],\n\t\tcp1x = segment[i+2],\n\t\tcp1y = segment[i+3],\n\t\tcp2x = segment[i+4],\n\t\tcp2y = segment[i+5],\n\t\tbx = segment[i+6],\n\t\tby = segment[i+7],\n\t\tx1a = ax + (cp1x - ax) * t,\n\t\tx2 = cp1x + (cp2x - cp1x) * t,\n\t\ty1a = ay + (cp1y - ay) * t,\n\t\ty2 = cp1y + (cp2y - cp1y) * t,\n\t\tx1 = x1a + (x2 - x1a) * t,\n\t\ty1 = y1a + (y2 - y1a) * t,\n\t\tx2a = cp2x + (bx - cp2x) * t,\n\t\ty2a = cp2y + (by - cp2y) * t;\n\tx2 += (x2a - x2) * t;\n\ty2 += (y2a - y2) * t;\n\tsegment.splice(i + 2, 4,\n\t\t_round(x1a), //first control point\n\t\t_round(y1a),\n\t\t_round(x1), //second control point\n\t\t_round(y1),\n\t\t_round(x1 + (x2 - x1) * t), //new fabricated anchor on line\n\t\t_round(y1 + (y2 - y1) * t),\n\t\t_round(x2), //third control point\n\t\t_round(y2),\n\t\t_round(x2a), //fourth control point\n\t\t_round(y2a)\n\t);\n\tsegment.samples && segment.samples.splice(((i / 6) * segment.resolution) | 0, 0, 0, 0, 0, 0, 0, 0);\n\treturn 6;\n}\n\n// returns an object {path, segment, segIndex, i, t}\nfunction getProgressData(rawPath, progress, decoratee, pushToNextIfAtEnd) {\n\tdecoratee = decoratee || {};\n\trawPath.totalLength || cacheRawPathMeasurements(rawPath);\n\tif (progress < 0 || progress > 1) {\n\t\tprogress = _wrapProgress(progress);\n\t}\n\tlet segIndex = 0,\n\t\tsegment = rawPath[0],\n\t\tsamples, resolution, length, min, max, i, t;\n\tif (!progress) {\n\t\tt = i = segIndex = 0;\n\t\tsegment = rawPath[0];\n\t} else if (progress === 1) {\n\t\tt = 1;\n\t\tsegIndex = rawPath.length - 1;\n\t\tsegment = rawPath[segIndex];\n\t\ti = segment.length - 8;\n\t} else {\n\t\tif (rawPath.length > 1) { //speed optimization: most of the time, there's only one segment so skip the recursion.\n\t\t\tlength = rawPath.totalLength * progress;\n\t\t\tmax = i = 0;\n\t\t\twhile ((max += rawPath[i++].totalLength) < length) {\n\t\t\t\tsegIndex = i;\n\t\t\t}\n\t\t\tsegment = rawPath[segIndex];\n\t\t\tmin = max - segment.totalLength;\n\t\t\tprogress = ((length - min) / (max - min)) || 0;\n\t\t}\n\t\tsamples = segment.samples;\n\t\tresolution = segment.resolution; //how many samples per cubic bezier chunk\n\t\tlength = segment.totalLength * progress;\n\t\ti = segment.lookup.length ? segment.lookup[~~(length / segment.minLength)] || 0 : _getSampleIndex(samples, length, progress);\n\t\tmin = i ? samples[i-1] : 0;\n\t\tmax = samples[i];\n\t\tif (max < length) {\n\t\t\tmin = max;\n\t\t\tmax = samples[++i];\n\t\t}\n\t\tt = (1 / resolution) * (((length - min) / (max - min)) + ((i % resolution)));\n\t\ti = ~~(i / resolution) * 6;\n\t\tif (pushToNextIfAtEnd && t === 1) {\n\t\t\tif (i + 6 < segment.length) {\n\t\t\t\ti += 6;\n\t\t\t\tt = 0;\n\t\t\t} else if (segIndex + 1 < rawPath.length) {\n\t\t\t\ti = t = 0;\n\t\t\t\tsegment = rawPath[++segIndex];\n\t\t\t}\n\t\t}\n\t}\n\tdecoratee.t = t;\n\tdecoratee.i = i;\n\tdecoratee.path = rawPath;\n\tdecoratee.segment = segment;\n\tdecoratee.segIndex = segIndex;\n\treturn decoratee;\n}\n\nexport function getPositionOnPath(rawPath, progress, includeAngle, point) {\n\tlet segment = rawPath[0],\n\t\tresult = point || {},\n\t\tsamples, resolution, length, min, max, i, t, a, inv;\n\tif (progress < 0 || progress > 1) {\n\t\tprogress = _wrapProgress(progress);\n\t}\n\tif (rawPath.length > 1) { //speed optimization: most of the time, there's only one segment so skip the recursion.\n\t\tlength = rawPath.totalLength * progress;\n\t\tmax = i = 0;\n\t\twhile ((max += rawPath[i++].totalLength) < length) {\n\t\t\tsegment = rawPath[i];\n\t\t}\n\t\tmin = max - segment.totalLength;\n\t\tprogress = ((length - min) / (max - min)) || 0;\n\t}\n\tsamples = segment.samples;\n\tresolution = segment.resolution;\n\tlength = segment.totalLength * progress;\n\ti = segment.lookup.length ? segment.lookup[progress < 1 ? ~~(length / segment.minLength) : segment.lookup.length - 1] || 0 : _getSampleIndex(samples, length, progress);\n\tmin = i ? samples[i-1] : 0;\n\tmax = samples[i];\n\tif (max < length) {\n\t\tmin = max;\n\t\tmax = samples[++i];\n\t}\n\tt = ((1 / resolution) * (((length - min) / (max - min)) + ((i % resolution)))) || 0;\n\tinv = 1 - t;\n\ti = ~~(i / resolution) * 6;\n\ta = segment[i];\n\tresult.x = _round((t * t * (segment[i + 6] - a) + 3 * inv * (t * (segment[i + 4] - a) + inv * (segment[i + 2] - a))) * t + a);\n\tresult.y = _round((t * t * (segment[i + 7] - (a = segment[i+1])) + 3 * inv * (t * (segment[i + 5] - a) + inv * (segment[i + 3] - a))) * t + a);\n\tif (includeAngle) {\n\t\tresult.angle = segment.totalLength ? getRotationAtBezierT(segment, i, t >= 1 ? 1 - 1e-9 : t ? t : 1e-9) : segment.angle || 0;\n\t}\n\treturn result;\n}\n\n\n\n//applies a matrix transform to RawPath (or a segment in a RawPath) and returns whatever was passed in (it transforms the values in the array(s), not a copy).\nexport function transformRawPath(rawPath, a, b, c, d, tx, ty) {\n\tlet j = rawPath.length,\n\t\tsegment, l, i, x, y;\n\twhile (--j > -1) {\n\t\tsegment = rawPath[j];\n\t\tl = segment.length;\n\t\tfor (i = 0; i < l; i += 2) {\n\t\t\tx = segment[i];\n\t\t\ty = segment[i+1];\n\t\t\tsegment[i] = x * a + y * c + tx;\n\t\t\tsegment[i+1] = x * b + y * d + ty;\n\t\t}\n\t}\n\trawPath._dirty = 1;\n\treturn rawPath;\n}\n\n\n\n// translates SVG arc data into a segment (cubic beziers). Angle is in degrees.\nfunction arcToSegment(lastX, lastY, rx, ry, angle, largeArcFlag, sweepFlag, x, y) {\n\tif (lastX === x && lastY === y) {\n\t\treturn;\n\t}\n\trx = _abs(rx);\n\try = _abs(ry);\n\tlet angleRad = (angle % 360) * _DEG2RAD,\n\t\tcosAngle = _cos(angleRad),\n\t\tsinAngle = _sin(angleRad),\n\t\tPI = Math.PI,\n\t\tTWOPI = PI * 2,\n\t\tdx2 = (lastX - x) / 2,\n\t\tdy2 = (lastY - y) / 2,\n\t\tx1 = (cosAngle * dx2 + sinAngle * dy2),\n\t\ty1 = (-sinAngle * dx2 + cosAngle * dy2),\n\t\tx1_sq = x1 * x1,\n\t\ty1_sq = y1 * y1,\n\t\tradiiCheck = x1_sq / (rx * rx) + y1_sq / (ry * ry);\n\tif (radiiCheck > 1) {\n\t\trx = _sqrt(radiiCheck) * rx;\n\t\try = _sqrt(radiiCheck) * ry;\n\t}\n\tlet rx_sq = rx * rx,\n\t\try_sq = ry * ry,\n\t\tsq = ((rx_sq * ry_sq) - (rx_sq * y1_sq) - (ry_sq * x1_sq)) / ((rx_sq * y1_sq) + (ry_sq * x1_sq));\n\tif (sq < 0) {\n\t\tsq = 0;\n\t}\n\tlet coef = ((largeArcFlag === sweepFlag) ? -1 : 1) * _sqrt(sq),\n\t\tcx1 = coef * ((rx * y1) / ry),\n\t\tcy1 = coef * -((ry * x1) / rx),\n\t\tsx2 = (lastX + x) / 2,\n\t\tsy2 = (lastY + y) / 2,\n\t\tcx = sx2 + (cosAngle * cx1 - sinAngle * cy1),\n\t\tcy = sy2 + (sinAngle * cx1 + cosAngle * cy1),\n\t\tux = (x1 - cx1) / rx,\n\t\tuy = (y1 - cy1) / ry,\n\t\tvx = (-x1 - cx1) / rx,\n\t\tvy = (-y1 - cy1) / ry,\n\t\ttemp = ux * ux + uy * uy,\n\t\tangleStart = ((uy < 0) ? -1 : 1) * Math.acos(ux / _sqrt(temp)),\n\t\tangleExtent = ((ux * vy - uy * vx < 0) ? -1 : 1) * Math.acos((ux * vx + uy * vy) / _sqrt(temp * (vx * vx + vy * vy)));\n\tisNaN(angleExtent) && (angleExtent = PI); //rare edge case. Math.cos(-1) is NaN.\n\tif (!sweepFlag && angleExtent > 0) {\n\t\tangleExtent -= TWOPI;\n\t} else if (sweepFlag && angleExtent < 0) {\n\t\tangleExtent += TWOPI;\n\t}\n\tangleStart %= TWOPI;\n\tangleExtent %= TWOPI;\n\tlet segments = Math.ceil(_abs(angleExtent) / (TWOPI / 4)),\n\t\trawPath = [],\n\t\tangleIncrement = angleExtent / segments,\n\t\tcontrolLength = 4 / 3 * _sin(angleIncrement / 2) / (1 + _cos(angleIncrement / 2)),\n\t\tma = cosAngle * rx,\n\t\tmb = sinAngle * rx,\n\t\tmc = sinAngle * -ry,\n\t\tmd = cosAngle * ry,\n\t\ti;\n\tfor (i = 0; i < segments; i++) {\n\t\tangle = angleStart + i * angleIncrement;\n\t\tx1 = _cos(angle);\n\t\ty1 = _sin(angle);\n\t\tux = _cos(angle += angleIncrement);\n\t\tuy = _sin(angle);\n\t\trawPath.push(x1 - controlLength * y1, y1 + controlLength * x1, ux + controlLength * uy, uy - controlLength * ux, ux, uy);\n\t}\n\t//now transform according to the actual size of the ellipse/arc (the beziers were noramlized, between 0 and 1 on a circle).\n\tfor (i = 0; i < rawPath.length; i+=2) {\n\t\tx1 = rawPath[i];\n\t\ty1 = rawPath[i+1];\n\t\trawPath[i] = x1 * ma + y1 * mc + cx;\n\t\trawPath[i+1] = x1 * mb + y1 * md + cy;\n\t}\n\trawPath[i-2] = x; //always set the end to exactly where it's supposed to be\n\trawPath[i-1] = y;\n\treturn rawPath;\n}\n\n//Spits back a RawPath with absolute coordinates. Each segment starts with a \"moveTo\" command (x coordinate, then y) and then 2 control points (x, y, x, y), then anchor. The goal is to minimize memory and maximize speed.\nexport function stringToRawPath(d) {\n\tlet a = (d + \"\").replace(_scientific, m => { let n = +m; return (n < 0.0001 && n > -0.0001) ? 0 : n; }).match(_svgPathExp) || [], //some authoring programs spit out very small numbers in scientific notation like \"1e-5\", so make sure we round that down to 0 first.\n\t\tpath = [],\n\t\trelativeX = 0,\n\t\trelativeY = 0,\n\t\ttwoThirds = 2 / 3,\n\t\telements = a.length,\n\t\tpoints = 0,\n\t\terrorMessage = \"ERROR: malformed path: \" + d,\n\t\ti, j, x, y, command, isRelative, segment, startX, startY, difX, difY, beziers, prevCommand, flag1, flag2,\n\t\tline = function(sx, sy, ex, ey) {\n\t\t\tdifX = (ex - sx) / 3;\n\t\t\tdifY = (ey - sy) / 3;\n\t\t\tsegment.push(sx + difX, sy + difY, ex - difX, ey - difY, ex, ey);\n\t\t};\n\tif (!d || !isNaN(a[0]) || isNaN(a[1])) {\n\t\tconsole.log(errorMessage);\n\t\treturn path;\n\t}\n\tfor (i = 0; i < elements; i++) {\n\t\tprevCommand = command;\n\t\tif (isNaN(a[i])) {\n\t\t\tcommand = a[i].toUpperCase();\n\t\t\tisRelative = (command !== a[i]); //lower case means relative\n\t\t} else { //commands like \"C\" can be strung together without any new command characters between.\n\t\t\ti--;\n\t\t}\n\t\tx = +a[i + 1];\n\t\ty = +a[i + 2];\n\t\tif (isRelative) {\n\t\t\tx += relativeX;\n\t\t\ty += relativeY;\n\t\t}\n\t\tif (!i) {\n\t\t\tstartX = x;\n\t\t\tstartY = y;\n\t\t}\n\n\t\t// \"M\" (move)\n\t\tif (command === \"M\") {\n\t\t\tif (segment) {\n\t\t\t\tif (segment.length < 8) { //if the path data was funky and just had a M with no actual drawing anywhere, skip it.\n\t\t\t\t\tpath.length -= 1;\n\t\t\t\t} else {\n\t\t\t\t\tpoints += segment.length;\n\t\t\t\t}\n\t\t\t}\n\t\t\trelativeX = startX = x;\n\t\t\trelativeY = startY = y;\n\t\t\tsegment = [x, y];\n\t\t\tpath.push(segment);\n\t\t\ti += 2;\n\t\t\tcommand = \"L\"; //an \"M\" with more than 2 values gets interpreted as \"lineTo\" commands (\"L\").\n\n\t\t// \"C\" (cubic bezier)\n\t\t} else if (command === \"C\") {\n\t\t\tif (!segment) {\n\t\t\t\tsegment = [0, 0];\n\t\t\t}\n\t\t\tif (!isRelative) {\n\t\t\t\trelativeX = relativeY = 0;\n\t\t\t}\n\t\t\t//note: \"*1\" is just a fast/short way to cast the value as a Number. WAAAY faster in Chrome, slightly slower in Firefox.\n\t\t\tsegment.push(x,\ty, relativeX + a[i + 3] * 1, relativeY + a[i + 4] * 1, (relativeX += a[i + 5] * 1),\t(relativeY += a[i + 6] * 1));\n\t\t\ti += 6;\n\n\t\t// \"S\" (continuation of cubic bezier)\n\t\t} else if (command === \"S\") {\n\t\t\tdifX = relativeX;\n\t\t\tdifY = relativeY;\n\t\t\tif (prevCommand === \"C\" || prevCommand === \"S\") {\n\t\t\t\tdifX += relativeX - segment[segment.length - 4];\n\t\t\t\tdifY += relativeY - segment[segment.length - 3];\n\t\t\t}\n\t\t\tif (!isRelative) {\n\t\t\t\trelativeX = relativeY = 0;\n\t\t\t}\n\t\t\tsegment.push(difX, difY, x,\ty, (relativeX += a[i + 3] * 1), (relativeY += a[i + 4] * 1));\n\t\t\ti += 4;\n\n\t\t// \"Q\" (quadratic bezier)\n\t\t} else if (command === \"Q\") {\n\t\t\tdifX = relativeX + (x - relativeX) * twoThirds;\n\t\t\tdifY = relativeY + (y - relativeY) * twoThirds;\n\t\t\tif (!isRelative) {\n\t\t\t\trelativeX = relativeY = 0;\n\t\t\t}\n\t\t\trelativeX += a[i + 3] * 1;\n\t\t\trelativeY += a[i + 4] * 1;\n\t\t\tsegment.push(difX, difY, relativeX + (x - relativeX) * twoThirds, relativeY + (y - relativeY) * twoThirds, relativeX, relativeY);\n\t\t\ti += 4;\n\n\t\t// \"T\" (continuation of quadratic bezier)\n\t\t} else if (command === \"T\") {\n\t\t\tdifX = relativeX - segment[segment.length - 4];\n\t\t\tdifY = relativeY - segment[segment.length - 3];\n\t\t\tsegment.push(relativeX + difX, relativeY + difY, x + ((relativeX + difX * 1.5) - x) * twoThirds, y + ((relativeY + difY * 1.5) - y) * twoThirds, (relativeX = x), (relativeY = y));\n\t\t\ti += 2;\n\n\t\t// \"H\" (horizontal line)\n\t\t} else if (command === \"H\") {\n\t\t\tline(relativeX, relativeY, (relativeX = x), relativeY);\n\t\t\ti += 1;\n\n\t\t// \"V\" (vertical line)\n\t\t} else if (command === \"V\") {\n\t\t\t//adjust values because the first (and only one) isn't x in this case, it's y.\n\t\t\tline(relativeX, relativeY, relativeX, (relativeY = x + (isRelative ? relativeY - relativeX : 0)));\n\t\t\ti += 1;\n\n\t\t// \"L\" (line) or \"Z\" (close)\n\t\t} else if (command === \"L\" || command === \"Z\") {\n\t\t\tif (command === \"Z\") {\n\t\t\t\tx = startX;\n\t\t\t\ty = startY;\n\t\t\t\tsegment.closed = true;\n\t\t\t}\n\t\t\tif (command === \"L\" || _abs(relativeX - x) > 0.5 || _abs(relativeY - y) > 0.5) {\n\t\t\t\tline(relativeX, relativeY, x, y);\n\t\t\t\tif (command === \"L\") {\n\t\t\t\t\ti += 2;\n\t\t\t\t}\n\t\t\t}\n\t\t\trelativeX = x;\n\t\t\trelativeY = y;\n\n\t\t// \"A\" (arc)\n\t\t} else if (command === \"A\") {\n\t\t\tflag1 = a[i+4];\n\t\t\tflag2 = a[i+5];\n\t\t\tdifX = a[i+6];\n\t\t\tdifY = a[i+7];\n\t\t\tj = 7;\n\t\t\tif (flag1.length > 1) { // for cases when the flags are merged, like \"a8 8 0 018 8\" (the 0 and 1 flags are WITH the x value of 8, but it could also be \"a8 8 0 01-8 8\" so it may include x or not)\n\t\t\t\tif (flag1.length < 3) {\n\t\t\t\t\tdifY = difX;\n\t\t\t\t\tdifX = flag2;\n\t\t\t\t\tj--;\n\t\t\t\t} else {\n\t\t\t\t\tdifY = flag2;\n\t\t\t\t\tdifX = flag1.substr(2);\n\t\t\t\t\tj-=2;\n\t\t\t\t}\n\t\t\t\tflag2 = flag1.charAt(1);\n\t\t\t\tflag1 = flag1.charAt(0);\n\t\t\t}\n\t\t\tbeziers = arcToSegment(relativeX, relativeY, +a[i+1], +a[i+2], +a[i+3], +flag1, +flag2, (isRelative ? relativeX : 0) + difX*1, (isRelative ? relativeY : 0) + difY*1);\n\t\t\ti += j;\n\t\t\tif (beziers) {\n\t\t\t\tfor (j = 0; j < beziers.length; j++) {\n\t\t\t\t\tsegment.push(beziers[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t\trelativeX = segment[segment.length-2];\n\t\t\trelativeY = segment[segment.length-1];\n\n\t\t} else {\n\t\t\tconsole.log(errorMessage);\n\t\t}\n\t}\n\ti = segment.length;\n\tif (i < 6) { //in case there's odd SVG like a M0,0 command at the very end.\n\t\tpath.pop();\n\t\ti = 0;\n\t} else if (segment[0] === segment[i-2] && segment[1] === segment[i-1]) {\n\t\tsegment.closed = true;\n\t}\n\tpath.totalPoints = points + i;\n\treturn path;\n}\n\n//populates the points array in alternating x/y values (like [x, y, x, y...] instead of individual point objects [{x, y}, {x, y}...] to conserve memory and stay in line with how we're handling segment arrays\nexport function bezierToPoints(x1, y1, x2, y2, x3, y3, x4, y4, threshold, points, index) {\n\tlet x12 = (x1 + x2) / 2,\n\t\ty12 = (y1 + y2) / 2,\n\t\tx23 = (x2 + x3) / 2,\n\t\ty23 = (y2 + y3) / 2,\n\t\tx34 = (x3 + x4) / 2,\n\t\ty34 = (y3 + y4) / 2,\n\t\tx123 = (x12 + x23) / 2,\n\t\ty123 = (y12 + y23) / 2,\n\t\tx234 = (x23 + x34) / 2,\n\t\ty234 = (y23 + y34) / 2,\n\t\tx1234 = (x123 + x234) / 2,\n\t\ty1234 = (y123 + y234) / 2,\n\t\tdx = x4 - x1,\n\t\tdy = y4 - y1,\n\t\td2 = _abs((x2 - x4) * dy - (y2 - y4) * dx),\n\t\td3 = _abs((x3 - x4) * dy - (y3 - y4) * dx),\n\t\tlength;\n\tif (!points) {\n\t\tpoints = [x1, y1, x4, y4];\n\t\tindex = 2;\n\t}\n\tpoints.splice(index || points.length - 2, 0, x1234, y1234);\n\tif ((d2 + d3) * (d2 + d3) > threshold * (dx * dx + dy * dy)) {\n\t\tlength = points.length;\n\t\tbezierToPoints(x1, y1, x12, y12, x123, y123, x1234, y1234, threshold, points, index);\n\t\tbezierToPoints(x1234, y1234, x234, y234, x34, y34, x4, y4, threshold, points, index + 2 + (points.length - length));\n\t}\n\treturn points;\n}\n\n/*\nfunction getAngleBetweenPoints(x0, y0, x1, y1, x2, y2) { //angle between 3 points in radians\n\tvar dx1 = x1 - x0,\n\t\tdy1 = y1 - y0,\n\t\tdx2 = x2 - x1,\n\t\tdy2 = y2 - y1,\n\t\tdx3 = x2 - x0,\n\t\tdy3 = y2 - y0,\n\t\ta = dx1 * dx1 + dy1 * dy1,\n\t\tb = dx2 * dx2 + dy2 * dy2,\n\t\tc = dx3 * dx3 + dy3 * dy3;\n\treturn Math.acos( (a + b - c) / _sqrt(4 * a * b) );\n},\n*/\n\n//pointsToSegment() doesn't handle flat coordinates (where y is always 0) the way we need (the resulting control points are always right on top of the anchors), so this function basically makes the control points go directly up and down, varying in length based on the curviness (more curvy, further control points)\nexport function flatPointsToSegment(points, curviness=1) {\n\tlet x = points[0],\n\t\ty = 0,\n\t\tsegment = [x, y],\n\t\ti = 2;\n\tfor (; i < points.length; i+=2) {\n\t\tsegment.push(\n\t\t\tx,\n\t\t\ty,\n\t\t\tpoints[i],\n\t\t\t(y = (points[i] - x) * curviness / 2),\n\t\t\t(x = points[i]),\n\t\t\t-y\n\t\t);\n\t}\n\treturn segment;\n}\n\n//points is an array of x/y points, like [x, y, x, y, x, y]\nexport function pointsToSegment(points, curviness, cornerThreshold) {\n\t//points = simplifyPoints(points, tolerance);\n\t_abs(points[0] - points[2]) < 1e-4 && _abs(points[1] - points[3]) < 1e-4 && (points = points.slice(2)); // if the first two points are super close, dump the first one.\n\tlet l = points.length-2,\n\t\tx = +points[0],\n\t\ty = +points[1],\n\t\tnextX = +points[2],\n\t\tnextY = +points[3],\n\t\tsegment = [x, y, x, y],\n\t\tdx2 = nextX - x,\n\t\tdy2 = nextY - y,\n\t\tclosed = Math.abs(points[l] - x) < 0.001 && Math.abs(points[l+1] - y) < 0.001,\n\t\tprevX, prevY, angle, slope, i, dx1, dx3, dy1, dy3, d1, d2, a, b, c;\n\tif (isNaN(cornerThreshold)) {\n\t\tcornerThreshold = Math.PI / 10;\n\t}\n\tif (closed) { // if the start and end points are basically on top of each other, close the segment by adding the 2nd point to the end, and the 2nd-to-last point to the beginning (we'll remove them at the end, but this allows the curvature to look perfect)\n\t\tpoints.push(nextX, nextY);\n\t\tnextX = x;\n\t\tnextY = y;\n\t\tx = points[l-2];\n\t\ty = points[l-1];\n\t\tpoints.unshift(x, y);\n\t\tl+=4;\n\t}\n\tcurviness = (curviness || curviness === 0) ? +curviness : 1;\n\tfor (i = 2; i < l; i+=2) {\n\t\tprevX = x;\n\t\tprevY = y;\n\t\tx = nextX;\n\t\ty = nextY;\n\t\tnextX = +points[i+2];\n\t\tnextY = +points[i+3];\n\t\tif (x === nextX && y === nextY) {\n\t\t\tcontinue;\n\t\t}\n\t\tdx1 = dx2;\n\t\tdy1 = dy2;\n\t\tdx2 = nextX - x;\n\t\tdy2 = nextY - y;\n\t\tdx3 = nextX - prevX;\n\t\tdy3 = nextY - prevY;\n\t\ta = dx1 * dx1 + dy1 * dy1;\n\t\tb = dx2 * dx2 + dy2 * dy2;\n\t\tc = dx3 * dx3 + dy3 * dy3;\n\t\tangle = Math.acos( (a + b - c) / _sqrt(4 * a * b) ); //angle between the 3 points\n\t\td2 = (angle / Math.PI) * curviness; //temporary precalculation for speed (reusing d2 variable)\n\t\td1 = _sqrt(a) * d2; //the tighter the angle, the shorter we make the handles in proportion.\n\t\td2 *= _sqrt(b);\n\t\tif (x !== prevX || y !== prevY) {\n\t\t\tif (angle > cornerThreshold) {\n\t\t\t\tslope = _atan2(dy3, dx3);\n\t\t\t\tsegment.push(\n\t\t\t\t\t_round(x - _cos(slope) * d1), //first control point\n\t\t\t\t\t_round(y - _sin(slope) * d1),\n\t\t\t\t\t_round(x), //anchor\n\t\t\t\t\t_round(y),\n\t\t\t\t\t_round(x + _cos(slope) * d2), //second control point\n\t\t\t\t\t_round(y + _sin(slope) * d2)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tslope = _atan2(dy1, dx1);\n\t\t\t\tsegment.push(\n\t\t\t\t\t_round(x - _cos(slope) * d1), //first control point\n\t\t\t\t\t_round(y - _sin(slope) * d1));\n\t\t\t\tslope = _atan2(dy2, dx2);\n\t\t\t\tsegment.push(\n\t\t\t\t\t_round(x), //anchor\n\t\t\t\t\t_round(y),\n\t\t\t\t\t_round(x + _cos(slope) * d2), //second control point\n\t\t\t\t\t_round(y + _sin(slope) * d2)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\tx !== nextX || y !== nextY || segment.length < 4 ? segment.push(_round(nextX), _round(nextY), _round(nextX), _round(nextY)) : segment.length -= 2;\n\tif (closed) {\n\t\tsegment.splice(0, 6);\n\t\tsegment.length = segment.length - 6;\n\t}\n\treturn segment;\n}\n\n//returns the squared distance between an x/y coordinate and a segment between x1/y1 and x2/y2\nfunction pointToSegDist(x, y, x1, y1, x2, y2) {\n\tlet dx = x2 - x1,\n\t\tdy = y2 - y1,\n\t\tt;\n\tif (dx || dy) {\n\t\tt = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n\t\tif (t > 1) {\n\t\t\tx1 = x2;\n\t\t\ty1 = y2;\n\t\t} else if (t > 0) {\n\t\t\tx1 += dx * t;\n\t\t\ty1 += dy * t;\n\t\t}\n\t}\n\treturn (x - x1) ** 2 + (y - y1) ** 2;\n}\n\nfunction simplifyStep(points, first, last, tolerance, simplified) {\n\tlet maxSqDist = tolerance,\n\t\tfirstX = points[first],\n\t\tfirstY = points[first+1],\n\t\tlastX = points[last],\n\t\tlastY = points[last+1],\n\t\tindex, i, d;\n\tfor (i = first + 2; i < last; i += 2) {\n\t\td = pointToSegDist(points[i], points[i+1], firstX, firstY, lastX, lastY);\n\t\tif (d > maxSqDist) {\n\t\t\tindex = i;\n\t\t\tmaxSqDist = d;\n\t\t}\n\t}\n\tif (maxSqDist > tolerance) {\n\t\tindex - first > 2 && simplifyStep(points, first, index, tolerance, simplified);\n\t\tsimplified.push(points[index], points[index+1]);\n\t\tlast - index > 2 && simplifyStep(points, index, last, tolerance, simplified);\n\t}\n}\n\n//points is an array of x/y values like [x, y, x, y, x, y]\nexport function simplifyPoints(points, tolerance) {\n\tlet prevX = parseFloat(points[0]),\n\t\tprevY = parseFloat(points[1]),\n\t\ttemp = [prevX, prevY],\n\t\tl = points.length - 2,\n\t\ti, x, y, dx, dy, result, last;\n\ttolerance = (tolerance || 1) ** 2;\n\tfor (i = 2; i < l; i += 2) {\n\t\tx = parseFloat(points[i]);\n\t\ty = parseFloat(points[i+1]);\n\t\tdx = prevX - x;\n\t\tdy = prevY - y;\n\t\tif (dx * dx + dy * dy > tolerance) {\n\t\t\ttemp.push(x, y);\n\t\t\tprevX = x;\n\t\t\tprevY = y;\n\t\t}\n\t}\n\ttemp.push(parseFloat(points[l]), parseFloat(points[l+1]));\n\tlast = temp.length - 2;\n\tresult = [temp[0], temp[1]];\n\tsimplifyStep(temp, 0, last, tolerance, result);\n\tresult.push(temp[last], temp[last+1]);\n\treturn result;\n}\n\nfunction getClosestProgressOnBezier(iterations, px, py, start, end, slices, x0, y0, x1, y1, x2, y2, x3, y3) {\n\tlet inc = (end - start) / slices,\n\t\tbest = 0,\n\t\tt = start,\n\t\tx, y, d, dx, dy, inv;\n\t_bestDistance = _largeNum;\n\twhile (t <= end) {\n\t\tinv = 1 - t;\n\t\tx = inv * inv * inv * x0 + 3 * inv * inv * t * x1 + 3 * inv * t * t * x2 + t * t * t * x3;\n\t\ty = inv * inv * inv * y0 + 3 * inv * inv * t * y1 + 3 * inv * t * t * y2 + t * t * t * y3;\n\t\tdx = x - px;\n\t\tdy = y - py;\n\t\td = dx * dx + dy * dy;\n\t\tif (d < _bestDistance) {\n\t\t\t_bestDistance = d;\n\t\t\tbest = t;\n\t\t}\n\t\tt += inc;\n\t}\n\treturn (iterations > 1) ? getClosestProgressOnBezier(iterations - 1, px, py, Math.max(best - inc, 0), Math.min(best + inc, 1), slices, x0, y0, x1, y1, x2, y2, x3, y3) : best;\n}\n\nexport function getClosestData(rawPath, x, y, slices) { //returns an object with the closest j, i, and t (j is the segment index, i is the index of the point in that segment, and t is the time/progress along that bezier)\n\tlet closest = {j:0, i:0, t:0},\n\t\tbestDistance = _largeNum,\n\t\ti, j, t, segment;\n\tfor (j = 0; j < rawPath.length; j++) {\n\t\tsegment = rawPath[j];\n\t\tfor (i = 0; i < segment.length; i+=6) {\n\t\t\tt = getClosestProgressOnBezier(1, x, y, 0, 1, slices || 20, segment[i], segment[i+1], segment[i+2], segment[i+3], segment[i+4], segment[i+5], segment[i+6], segment[i+7]);\n\t\t\tif (bestDistance > _bestDistance) {\n\t\t\t\tbestDistance = _bestDistance;\n\t\t\t\tclosest.j = j;\n\t\t\t\tclosest.i = i;\n\t\t\t\tclosest.t = t;\n\t\t\t}\n\t\t}\n\t}\n\treturn closest;\n}\n\n//subdivide a Segment closest to a specific x,y coordinate\nexport function subdivideSegmentNear(x, y, segment, slices, iterations) {\n\tlet l = segment.length,\n\t\tbestDistance = _largeNum,\n\t\tbestT = 0,\n\t\tbestSegmentIndex = 0,\n\t\tt, i;\n\tslices = slices || 20;\n\titerations = iterations || 3;\n\tfor (i = 0; i < l; i += 6) {\n\t\tt = getClosestProgressOnBezier(1, x, y, 0, 1, slices, segment[i], segment[i+1], segment[i+2], segment[i+3], segment[i+4], segment[i+5], segment[i+6], segment[i+7]);\n\t\tif (bestDistance > _bestDistance) {\n\t\t\tbestDistance = _bestDistance;\n\t\t\tbestT = t;\n\t\t\tbestSegmentIndex = i;\n\t\t}\n\t}\n\tt = getClosestProgressOnBezier(iterations, x, y, bestT - 0.05, bestT + 0.05, slices, segment[bestSegmentIndex], segment[bestSegmentIndex+1], segment[bestSegmentIndex+2], segment[bestSegmentIndex+3], segment[bestSegmentIndex+4], segment[bestSegmentIndex+5], segment[bestSegmentIndex+6], segment[bestSegmentIndex+7]);\n\tsubdivideSegment(segment, bestSegmentIndex, t);\n\treturn bestSegmentIndex + 6;\n}\n\n/*\nTakes any of the following and converts it to an all Cubic Bezier SVG data string:\n- A <path> data string like \"M0,0 L2,4 v20,15 H100\"\n- A RawPath, like [[x, y, x, y, x, y, x, y][[x, y, x, y, x, y, x, y]]\n- A Segment, like [x, y, x, y, x, y, x, y]\n\nNote: all numbers are rounded down to the closest 0.001 to minimize memory, maximize speed, and avoid odd numbers like 1e-13\n*/\nexport function rawPathToString(rawPath) {\n\tif (_isNumber(rawPath[0])) { //in case a segment is passed in instead\n\t\trawPath = [rawPath];\n\t}\n\tlet result = \"\",\n\t\tl = rawPath.length,\n\t\tsl, s, i, segment;\n\tfor (s = 0; s < l; s++) {\n\t\tsegment = rawPath[s];\n\t\tresult += \"M\" + _round(segment[0]) + \",\" + _round(segment[1]) + \" C\";\n\t\tsl = segment.length;\n\t\tfor (i = 2; i < sl; i++) {\n\t\t\tresult += _round(segment[i++]) + \",\" + _round(segment[i++]) + \" \" + _round(segment[i++]) + \",\" + _round(segment[i++]) + \" \" + _round(segment[i++]) + \",\" + _round(segment[i]) + \" \";\n\t\t}\n\t\tif (segment.closed) {\n\t\t\tresult += \"z\";\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\n// takes a segment with coordinates [x, y, x, y, ...] and converts the control points into angles and lengths [x, y, angle, length, angle, length, x, y, angle, length, ...] so that it animates more cleanly and avoids odd breaks/kinks. For example, if you animate from 1 o'clock to 6 o'clock, it'd just go directly/linearly rather than around. So the length would be very short in the middle of the tween.\nexport function cpCoordsToAngles(segment, copy) {\n\tvar result = copy ? segment.slice(0) : segment,\n\t\tx, y, i;\n\tfor (i = 0; i < segment.length; i+=6) {\n\t\tx = segment[i+2] - segment[i];\n\t\ty = segment[i+3] - segment[i+1];\n\t\tresult[i+2] = Math.atan2(y, x);\n\t\tresult[i+3] = Math.sqrt(x * x + y * y);\n\t\tx = segment[i+6] - segment[i+4];\n\t\ty = segment[i+7] - segment[i+5];\n\t\tresult[i+4] = Math.atan2(y, x);\n\t\tresult[i+5] = Math.sqrt(x * x + y * y);\n\t}\n\treturn result;\n}\n\n// takes a segment that was converted with cpCoordsToAngles() to have angles and lengths instead of coordinates for the control points, and converts it BACK into coordinates.\nexport function cpAnglesToCoords(segment, copy) {\n\tvar result = copy ? segment.slice(0) : segment,\n\t\tlength = segment.length,\n\t\trnd = 1000,\n\t\tangle, l, i, j;\n\tfor (i = 0; i < length; i+=6) {\n\t\tangle = segment[i+2];\n\t\tl = segment[i+3]; //length\n\t\tresult[i+2] = (((segment[i] + Math.cos(angle) * l) * rnd) | 0) / rnd;\n\t\tresult[i+3] = (((segment[i+1] + Math.sin(angle) * l) * rnd) | 0) / rnd;\n\t\tangle = segment[i+4];\n\t\tl = segment[i+5]; //length\n\t\tresult[i+4] = (((segment[i+6] - Math.cos(angle) * l) * rnd) | 0) / rnd;\n\t\tresult[i+5] = (((segment[i+7] - Math.sin(angle) * l) * rnd) | 0) / rnd;\n\t}\n\treturn result;\n}\n\n//adds an \"isSmooth\" array to each segment and populates it with a boolean value indicating whether or not it's smooth (the control points have basically the same slope). For any smooth control points, it converts the coordinates into angle (x, in radians) and length (y) and puts them into the same index value in a smoothData array.\nexport function populateSmoothData(rawPath) {\n\tlet j = rawPath.length,\n\t\tsmooth, segment, x, y, x2, y2, i, l, a, a2, isSmooth, smoothData;\n\twhile (--j > -1) {\n\t\tsegment = rawPath[j];\n\t\tisSmooth = segment.isSmooth = segment.isSmooth || [0, 0, 0, 0];\n\t\tsmoothData = segment.smoothData = segment.smoothData || [0, 0, 0, 0];\n\t\tisSmooth.length = 4;\n\t\tl = segment.length - 2;\n\t\tfor (i = 6; i < l; i += 6) {\n\t\t\tx = segment[i] - segment[i - 2];\n\t\t\ty = segment[i + 1] - segment[i - 1];\n\t\t\tx2 = segment[i + 2] - segment[i];\n\t\t\ty2 = segment[i + 3] - segment[i + 1];\n\t\t\ta = _atan2(y, x);\n\t\t\ta2 = _atan2(y2, x2);\n\t\t\tsmooth = (Math.abs(a - a2) < 0.09);\n\t\t\tif (smooth) {\n\t\t\t\tsmoothData[i - 2] = a;\n\t\t\t\tsmoothData[i + 2] = a2;\n\t\t\t\tsmoothData[i - 1] = _sqrt(x * x + y * y);\n\t\t\t\tsmoothData[i + 3] = _sqrt(x2 * x2 + y2 * y2);\n\t\t\t}\n\t\t\tisSmooth.push(smooth, smooth, 0, 0, smooth, smooth);\n\t\t}\n\t\t//if the first and last points are identical, check to see if there's a smooth transition. We must handle this a bit differently due to their positions in the array.\n\t\tif (segment[l] === segment[0] && segment[l+1] === segment[1]) {\n\t\t\tx = segment[0] - segment[l-2];\n\t\t\ty = segment[1] - segment[l-1];\n\t\t\tx2 = segment[2] - segment[0];\n\t\t\ty2 = segment[3] - segment[1];\n\t\t\ta = _atan2(y, x);\n\t\t\ta2 = _atan2(y2, x2);\n\t\t\tif (Math.abs(a - a2) < 0.09) {\n\t\t\t\tsmoothData[l-2] = a;\n\t\t\t\tsmoothData[2] = a2;\n\t\t\t\tsmoothData[l-1] = _sqrt(x * x + y * y);\n\t\t\t\tsmoothData[3] = _sqrt(x2 * x2 + y2 * y2);\n\t\t\t\tisSmooth[l-2] = isSmooth[l-1] = true; //don't change indexes 2 and 3 because we'll trigger everything from the END, and this will optimize file size a bit.\n\t\t\t}\n\t\t}\n\t}\n\treturn rawPath;\n}\nexport function pointToScreen(svgElement, point) {\n\tif (arguments.length < 2) { //by default, take the first set of coordinates in the path as the point\n\t\tlet rawPath = getRawPath(svgElement);\n\t\tpoint = svgElement.ownerSVGElement.createSVGPoint();\n\t\tpoint.x = rawPath[0][0];\n\t\tpoint.y = rawPath[0][1];\n\t}\n\treturn point.matrixTransform(svgElement.getScreenCTM());\n}\n\n*/","/*!\n * matrix 3.7.1\n * https://greensock.com\n *\n * Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n/* eslint-disable */\n\nlet _doc, _win, _docElement, _body,\t_divContainer, _svgContainer, _identityMatrix, _gEl,\n\t_transformProp = \"transform\",\n\t_transformOriginProp = _transformProp + \"Origin\",\n\t_hasOffsetBug,\n\t_setDoc = element => {\n\t\tlet doc = element.ownerDocument || element;\n\t\tif (!(_transformProp in element.style) && \"msTransform\" in element.style) { //to improve compatibility with old Microsoft browsers\n\t\t\t_transformProp = \"msTransform\";\n\t\t\t_transformOriginProp = _transformProp + \"Origin\";\n\t\t}\n\t\twhile (doc.parentNode && (doc = doc.parentNode)) {\t}\n\t\t_win = window;\n\t\t_identityMatrix = new Matrix2D();\n\t\tif (doc) {\n\t\t\t_doc = doc;\n\t\t\t_docElement = doc.documentElement;\n\t\t\t_body = doc.body;\n\t\t\t_gEl = _doc.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n\t\t\t// prevent any existing CSS from transforming it\n\t\t\t_gEl.style.transform = \"none\";\n\t\t\t// now test for the offset reporting bug. Use feature detection instead of browser sniffing to make things more bulletproof and future-proof. Hopefully Safari will fix their bug soon but it's 2020 and it's still not fixed.\n\t\t\tlet d1 = doc.createElement(\"div\"),\n\t\t\t\td2 = doc.createElement(\"div\");\n\t\t\t_body.appendChild(d1);\n\t\t\td1.appendChild(d2);\n\t\t\td1.style.position = \"static\";\n\t\t\td1.style[_transformProp] = \"translate3d(0,0,1px)\";\n\t\t\t_hasOffsetBug = (d2.offsetParent !== d1);\n\t\t\t_body.removeChild(d1);\n\t\t}\n\t\treturn doc;\n\t},\n\t_forceNonZeroScale = e => { // walks up the element's ancestors and finds any that had their scale set to 0 via GSAP, and changes them to 0.0001 to ensure that measurements work. Firefox has a bug that causes it to incorrectly report getBoundingClientRect() when scale is 0.\n\t\tlet a, cache;\n\t\twhile (e && e !== _body) {\n\t\t\tcache = e._gsap;\n\t\t\tcache && cache.uncache && cache.get(e, \"x\"); // force re-parsing of transforms if necessary\n\t\t\tif (cache && !cache.scaleX && !cache.scaleY && cache.renderTransform) {\n\t\t\t\tcache.scaleX = cache.scaleY = 1e-4;\n\t\t\t\tcache.renderTransform(1, cache);\n\t\t\t\ta ? a.push(cache) : (a = [cache]);\n\t\t\t}\n\t\t\te = e.parentNode;\n\t\t}\n\t\treturn a;\n\t},\n\t// possible future addition: pass an element to _forceDisplay() and it'll walk up all its ancestors and make sure anything with display: none is set to display: block, and if there's no parentNode, it'll add it to the body. It returns an Array that you can then feed to _revertDisplay() to have it revert all the changes it made.\n\t// _forceDisplay = e => {\n\t// \tlet a = [],\n\t// \t\tparent;\n\t// \twhile (e && e !== _body) {\n\t// \t\tparent = e.parentNode;\n\t// \t\t(_win.getComputedStyle(e).display === \"none\" || !parent) && a.push(e, e.style.display, parent) && (e.style.display = \"block\");\n\t// \t\tparent || _body.appendChild(e);\n\t// \t\te = parent;\n\t// \t}\n\t// \treturn a;\n\t// },\n\t// _revertDisplay = a => {\n\t// \tfor (let i = 0; i < a.length; i+=3) {\n\t// \t\ta[i+1] ? (a[i].style.display = a[i+1]) : a[i].style.removeProperty(\"display\");\n\t// \t\ta[i+2] || a[i].parentNode.removeChild(a[i]);\n\t// \t}\n\t// },\n\t_svgTemps = [], //we create 3 elements for SVG, and 3 for other DOM elements and cache them for performance reasons. They get nested in _divContainer and _svgContainer so that just one element is added to the DOM on each successive attempt. Again, performance is key.\n\t_divTemps = [],\n\t_getDocScrollTop = () => _win.pageYOffset || _doc.scrollTop || _docElement.scrollTop || _body.scrollTop || 0,\n\t_getDocScrollLeft = () => _win.pageXOffset || _doc.scrollLeft || _docElement.scrollLeft || _body.scrollLeft || 0,\n\t_svgOwner = element => element.ownerSVGElement || ((element.tagName + \"\").toLowerCase() === \"svg\" ? element : null),\n\t_isFixed = element => {\n\t\tif (_win.getComputedStyle(element).position === \"fixed\") {\n\t\t\treturn true;\n\t\t}\n\t\telement = element.parentNode;\n\t\tif (element && element.nodeType === 1) { // avoid document fragments which will throw an error.\n\t\t\treturn _isFixed(element);\n\t\t}\n\t},\n\t_createSibling = (element, i) => {\n\t\tif (element.parentNode && (_doc || _setDoc(element))) {\n\t\t\tlet svg = _svgOwner(element),\n\t\t\t\tns = svg ? (svg.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\") : \"http://www.w3.org/1999/xhtml\",\n\t\t\t\ttype = svg ? (i ? \"rect\" : \"g\") : \"div\",\n\t\t\t\tx = i !== 2 ? 0 : 100,\n\t\t\t\ty = i === 3 ? 100 : 0,\n\t\t\t\tcss = \"position:absolute;display:block;pointer-events:none;margin:0;padding:0;\",\n\t\t\t\te = _doc.createElementNS ? _doc.createElementNS(ns.replace(/^https/, \"http\"), type) : _doc.createElement(type);\n\t\t\tif (i) {\n\t\t\t\tif (!svg) {\n\t\t\t\t\tif (!_divContainer) {\n\t\t\t\t\t\t_divContainer = _createSibling(element);\n\t\t\t\t\t\t_divContainer.style.cssText = css;\n\t\t\t\t\t}\n\t\t\t\t\te.style.cssText = css + \"width:0.1px;height:0.1px;top:\" + y + \"px;left:\" + x + \"px\";\n\t\t\t\t\t_divContainer.appendChild(e);\n\n\t\t\t\t} else {\n\t\t\t\t\t_svgContainer || (_svgContainer = _createSibling(element));\n\t\t\t\t\te.setAttribute(\"width\", 0.01);\n\t\t\t\t\te.setAttribute(\"height\", 0.01);\n\t\t\t\t\te.setAttribute(\"transform\", \"translate(\" + x + \",\" + y + \")\");\n\t\t\t\t\t_svgContainer.appendChild(e);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn e;\n\t\t}\n\t\tthrow \"Need document and parent.\";\n\t},\n\t_consolidate = m => { // replaces SVGTransformList.consolidate() because a bug in Firefox causes it to break pointer events. See https://greensock.com/forums/topic/23248-touch-is-not-working-on-draggable-in-firefox-windows-v324/?tab=comments#comment-109800\n\t\tlet c = new Matrix2D(),\n\t\t\ti = 0;\n\t\tfor (; i < m.numberOfItems; i++) {\n\t\t\tc.multiply(m.getItem(i).matrix);\n\t\t}\n\t\treturn c;\n\t},\n\t_getCTM = svg => {\n\t\tlet m = svg.getCTM(),\n\t\t\ttransform;\n\t\tif (!m) { // Firefox returns null for getCTM() on root <svg> elements, so this is a workaround using a <g> that we temporarily append.\n\t\t\ttransform = svg.style[_transformProp];\n\t\t\tsvg.style[_transformProp] = \"none\"; // a bug in Firefox causes css transforms to contaminate the getCTM()\n\t\t\tsvg.appendChild(_gEl);\n\t\t\tm = _gEl.getCTM();\n\t\t\tsvg.removeChild(_gEl);\n\t\t\ttransform ? (svg.style[_transformProp] = transform) : svg.style.removeProperty(_transformProp.replace(/([A-Z])/g, \"-$1\").toLowerCase());\n\t\t}\n\t\treturn m;\n\t},\n\t_placeSiblings = (element, adjustGOffset) => {\n\t\tlet svg = _svgOwner(element),\n\t\t\tisRootSVG = element === svg,\n\t\t\tsiblings = svg ? _svgTemps : _divTemps,\n\t\t\tparent = element.parentNode,\n\t\t\tcontainer, m, b, x, y, cs;\n\t\tif (element === _win) {\n\t\t\treturn element;\n\t\t}\n\t\tsiblings.length || siblings.push(_createSibling(element, 1), _createSibling(element, 2), _createSibling(element, 3));\n\t\tcontainer = svg ? _svgContainer : _divContainer;\n\t\tif (svg) {\n\t\t\tif (isRootSVG) {\n\t\t\t\tb = _getCTM(element);\n\t\t\t\tx = -b.e / b.a;\n\t\t\t\ty = -b.f / b.d;\n\t\t\t\tm = _identityMatrix;\n\t\t\t} else {\n\t\t\t\tb = element.getBBox();\n\t\t\t\tm = element.transform ? element.transform.baseVal : {}; // IE11 doesn't follow the spec.\n\t\t\t\tm = !m.numberOfItems ? _identityMatrix : m.numberOfItems > 1 ? _consolidate(m) : m.getItem(0).matrix; // don't call m.consolidate().matrix because a bug in Firefox makes pointer events not work when consolidate() is called on the same tick as getBoundingClientRect()! See https://greensock.com/forums/topic/23248-touch-is-not-working-on-draggable-in-firefox-windows-v324/?tab=comments#comment-109800\n\t\t\t\tx = m.a * b.x + m.c * b.y;\n\t\t\t\ty = m.b * b.x + m.d * b.y;\n\t\t\t}\n\t\t\tif (adjustGOffset && element.tagName.toLowerCase() === \"g\") {\n\t\t\t\tx = y = 0;\n\t\t\t}\n\t\t\t(isRootSVG ? svg : parent).appendChild(container);\n\t\t\tcontainer.setAttribute(\"transform\", \"matrix(\" + m.a + \",\" + m.b + \",\" + m.c + \",\" + m.d + \",\" + (m.e + x) + \",\" + (m.f + y) + \")\");\n\t\t} else {\n\t\t\tx = y = 0;\n\t\t\tif (_hasOffsetBug) { // some browsers (like Safari) have a bug that causes them to misreport offset values. When an ancestor element has a transform applied, it's supposed to treat it as if it's position: relative (new context). Safari botches this, so we need to find the closest ancestor (between the element and its offsetParent) that has a transform applied and if one is found, grab its offsetTop/Left and subtract them to compensate.\n\t\t\t\tm = element.offsetParent;\n\t\t\t\tb = element;\n\t\t\t\twhile (b && (b = b.parentNode) && b !== m && b.parentNode) {\n\t\t\t\t\tif ((_win.getComputedStyle(b)[_transformProp] + \"\").length > 4) {\n\t\t\t\t\t\tx = b.offsetLeft;\n\t\t\t\t\t\ty = b.offsetTop;\n\t\t\t\t\t\tb = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcs = _win.getComputedStyle(element);\n\t\t\tif (cs.position !== \"absolute\" && cs.position !== \"fixed\") {\n\t\t\t\tm = element.offsetParent;\n\t\t\t\twhile (parent && parent !== m) { // if there's an ancestor element between the element and its offsetParent that's scrolled, we must factor that in.\n\t\t\t\t\tx += parent.scrollLeft || 0;\n\t\t\t\t\ty += parent.scrollTop || 0;\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\t\t\t}\n\t\t\tb = container.style;\n\t\t\tb.top = (element.offsetTop - y) + \"px\";\n\t\t\tb.left = (element.offsetLeft - x) + \"px\";\n\t\t\tb[_transformProp] = cs[_transformProp];\n\t\t\tb[_transformOriginProp] = cs[_transformOriginProp];\n\t\t\t// b.border = m.border;\n\t\t\t// b.borderLeftStyle = m.borderLeftStyle;\n\t\t\t// b.borderTopStyle = m.borderTopStyle;\n\t\t\t// b.borderLeftWidth = m.borderLeftWidth;\n\t\t\t// b.borderTopWidth = m.borderTopWidth;\n\t\t\tb.position = cs.position === \"fixed\" ? \"fixed\" : \"absolute\";\n\t\t\telement.parentNode.appendChild(container);\n\t\t}\n\t\treturn container;\n\t},\n\t_setMatrix = (m, a, b, c, d, e, f) => {\n\t\tm.a = a;\n\t\tm.b = b;\n\t\tm.c = c;\n\t\tm.d = d;\n\t\tm.e = e;\n\t\tm.f = f;\n\t\treturn m;\n\t};\n\nexport class Matrix2D {\n\tconstructor(a=1, b=0, c=0, d=1, e=0, f=0) {\n\t\t_setMatrix(this, a, b, c, d, e, f);\n\t}\n\n\tinverse() {\n\t\tlet {a, b, c, d, e, f} = this,\n\t\t\tdeterminant = (a * d - b * c) || 1e-10;\n\t\treturn _setMatrix(\n\t\t\tthis,\n\t\t\td / determinant,\n\t\t\t-b / determinant,\n\t\t\t-c / determinant,\n\t\t\ta / determinant,\n\t\t\t(c * f - d * e) / determinant,\n\t\t\t-(a * f - b * e) / determinant\n\t\t);\n\t}\n\n\tmultiply(matrix) {\n\t\tlet {a, b, c, d, e, f} = this,\n\t\t\ta2 = matrix.a,\n\t\t\tb2 = matrix.c,\n\t\t\tc2 = matrix.b,\n\t\t\td2 = matrix.d,\n\t\t\te2 = matrix.e,\n\t\t\tf2 = matrix.f;\n\t\treturn _setMatrix(this,\n\t\t\ta2 * a + c2 * c,\n\t\t\ta2 * b + c2 * d,\n\t\t\tb2 * a + d2 * c,\n\t\t\tb2 * b + d2 * d,\n\t\t\te + e2 * a + f2 * c,\n\t\t\tf + e2 * b + f2 * d);\n\t}\n\n\tclone() {\n\t\treturn new Matrix2D(this.a, this.b, this.c, this.d, this.e, this.f);\n\t}\n\n\tequals(matrix) {\n\t\tlet {a, b, c, d, e, f} = this;\n\t\treturn (a === matrix.a && b === matrix.b && c === matrix.c && d === matrix.d && e === matrix.e && f === matrix.f);\n\t}\n\n\tapply(point, decoratee={}) {\n\t\tlet {x, y} = point,\n\t\t\t{a, b, c, d, e, f} = this;\n\t\tdecoratee.x = (x * a + y * c + e) || 0;\n\t\tdecoratee.y = (x * b + y * d + f) || 0;\n\t\treturn decoratee;\n\t}\n\n}\n\n// Feed in an element and it'll return a 2D matrix (optionally inverted) so that you can translate between coordinate spaces.\n// Inverting lets you translate a global point into a local coordinate space. No inverting lets you go the other way.\n// We needed this to work around various browser bugs, like Firefox doesn't accurately report getScreenCTM() when there\n// are transforms applied to ancestor elements.\n// The matrix math to convert any x/y coordinate is as follows, which is wrapped in a convenient apply() method of Matrix2D above:\n// tx = m.a * x + m.c * y + m.e\n// ty = m.b * x + m.d * y + m.f\nexport function getGlobalMatrix(element, inverse, adjustGOffset, includeScrollInFixed) { // adjustGOffset is typically used only when grabbing an element's PARENT's global matrix, and it ignores the x/y offset of any SVG <g> elements because they behave in a special way.\n\tif (!element || !element.parentNode || (_doc || _setDoc(element)).documentElement === element) {\n\t\treturn new Matrix2D();\n\t}\n\tlet zeroScales = _forceNonZeroScale(element),\n\t\tsvg = _svgOwner(element),\n\t\ttemps = svg ? _svgTemps : _divTemps,\n\t\tcontainer = _placeSiblings(element, adjustGOffset),\n\t\tb1 = temps[0].getBoundingClientRect(),\n\t\tb2 = temps[1].getBoundingClientRect(),\n\t\tb3 = temps[2].getBoundingClientRect(),\n\t\tparent = container.parentNode,\n\t\tisFixed = !includeScrollInFixed && _isFixed(element),\n\t\tm = new Matrix2D(\n\t\t\t(b2.left - b1.left) / 100,\n\t\t\t(b2.top - b1.top) / 100,\n\t\t\t(b3.left - b1.left) / 100,\n\t\t\t(b3.top - b1.top) / 100,\n\t\t\tb1.left + (isFixed ? 0 : _getDocScrollLeft()),\n\t\t\tb1.top + (isFixed ? 0 : _getDocScrollTop())\n\t\t);\n\tparent.removeChild(container);\n\tif (zeroScales) {\n\t\tb1 = zeroScales.length;\n\t\twhile (b1--) {\n\t\t\tb2 = zeroScales[b1];\n\t\t\tb2.scaleX = b2.scaleY = 0;\n\t\t\tb2.renderTransform(1, b2);\n\t\t}\n\t}\n\treturn inverse ? m.inverse() : m;\n}\n\nexport { _getDocScrollTop, _getDocScrollLeft, _setDoc, _isFixed, _getCTM };\n\n// export function getMatrix(element) {\n// \t_doc || _setDoc(element);\n// \tlet m = (_win.getComputedStyle(element)[_transformProp] + \"\").substr(7).match(/[-.]*\\d+[.e\\-+]*\\d*[e\\-\\+]*\\d*/g),\n// \t\tis2D = m && m.length === 6;\n// \treturn !m || m.length < 6 ? new Matrix2D() : new Matrix2D(+m[0], +m[1], +m[is2D ? 2 : 4], +m[is2D ? 3 : 5], +m[is2D ? 4 : 12], +m[is2D ? 5 : 13]);\n// }","/*!\n * MotionPathPlugin 3.7.1\n * https://greensock.com\n *\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n/* eslint-disable */\n\nimport { getRawPath, cacheRawPathMeasurements, getPositionOnPath, pointsToSegment, flatPointsToSegment, sliceRawPath, stringToRawPath, rawPathToString, transformRawPath, convertToPath } from \"./utils/paths.js\";\nimport { getGlobalMatrix } from \"./utils/matrix.js\";\n\nlet _xProps = \"x,translateX,left,marginLeft,xPercent\".split(\",\"),\n\t_yProps = \"y,translateY,top,marginTop,yPercent\".split(\",\"),\n\t_DEG2RAD = Math.PI / 180,\n\tgsap, PropTween, _getUnit, _toArray,\n\t_getGSAP = () => gsap || (typeof(window) !== \"undefined\" && (gsap = window.gsap) && gsap.registerPlugin && gsap),\n\t_populateSegmentFromArray = (segment, values, property, mode) => { //mode: 0 = x but don't fill y yet, 1 = y, 2 = x and fill y with 0.\n\t\tlet l = values.length,\n\t\t\tsi = mode === 2 ? 0 : mode,\n\t\t\ti = 0,\n\t\t\tv;\n\t\tfor (; i < l; i++) {\n\t\t\tsegment[si] = v = parseFloat(values[i][property]);\n\t\t\tmode === 2 && (segment[si+1] = 0);\n\t\t\tsi += 2;\n\t\t}\n\t\treturn segment;\n\t},\n\t_getPropNum = (target, prop, unit) => parseFloat(target._gsap.get(target, prop, unit || \"px\")) || 0,\n\t_relativize = segment => {\n\t\tlet x = segment[0],\n\t\t\ty = segment[1],\n\t\t\ti;\n\t\tfor (i = 2; i < segment.length; i+=2) {\n\t\t\tx = (segment[i] += x);\n\t\t\ty = (segment[i+1] += y);\n\t\t}\n\t},\n\t_segmentToRawPath = (plugin, segment, target, x, y, slicer, vars, unitX, unitY) => {\n\t\tif (vars.type === \"cubic\") {\n\t\t\tsegment = [segment];\n\t\t} else {\n\t\t\tvars.fromCurrent !== false && segment.unshift(_getPropNum(target, x, unitX), y ? _getPropNum(target, y, unitY) : 0);\n\t\t\tvars.relative && _relativize(segment);\n\t\t\tlet pointFunc = y ? pointsToSegment : flatPointsToSegment;\n\t\t\tsegment = [pointFunc(segment, vars.curviness)];\n\t\t}\n\t\tsegment = slicer(_align(segment, target, vars));\n\t\t_addDimensionalPropTween(plugin, target, x, segment, \"x\", unitX);\n\t\ty && _addDimensionalPropTween(plugin, target, y, segment, \"y\", unitY);\n\t\treturn cacheRawPathMeasurements(segment, vars.resolution || (vars.curviness === 0 ? 20 : 12)); //when curviness is 0, it creates control points right on top of the anchors which makes it more sensitive to resolution, thus we change the default accordingly.\n\t},\n\t_emptyFunc = v => v,\n\t_numExp = /[-+\\.]*\\d+[\\.e\\-\\+]*\\d*[e\\-\\+]*\\d*/g,\n\t_originToPoint = (element, origin, parentMatrix) => { // origin is an array of normalized values (0-1) in relation to the width/height, so [0.5, 0.5] would be the center. It can also be \"auto\" in which case it will be the top left unless it's a <path>, when it will start at the beginning of the path itself.\n\t\tlet m = getGlobalMatrix(element),\n\t\t\tsvg, x, y;\n\t\tif ((element.tagName + \"\").toLowerCase() === \"svg\") {\n\t\t\tsvg = element.viewBox.baseVal;\n\t\t\tx = svg.x;\n\t\t\ty = svg.y;\n\t\t\tsvg.width || (svg = {width: +element.getAttribute(\"width\"), height: +element.getAttribute(\"height\")});\n\t\t} else {\n\t\t\tsvg = origin && element.getBBox && element.getBBox();\n\t\t\tx = y = 0;\n\t\t}\n\t\tif (origin && origin !== \"auto\") {\n\t\t\tx += origin.push ? origin[0] * (svg ? svg.width : element.offsetWidth || 0) : origin.x;\n\t\t\ty += origin.push ? origin[1] * (svg ? svg.height : element.offsetHeight || 0) : origin.y;\n\t\t}\n\t\treturn parentMatrix.apply( x || y ? m.apply({x: x, y: y}) : {x: m.e, y: m.f} );\n\t},\n\t_getAlignMatrix = (fromElement, toElement, fromOrigin, toOrigin) => {\n\t\tlet parentMatrix = getGlobalMatrix(fromElement.parentNode, true, true),\n\t\t\tm = parentMatrix.clone().multiply(getGlobalMatrix(toElement)),\n\t\t\tfromPoint = _originToPoint(fromElement, fromOrigin, parentMatrix),\n\t\t\t{x, y} = _originToPoint(toElement, toOrigin, parentMatrix),\n\t\t\tp;\n\t\tm.e = m.f = 0;\n\t\tif (toOrigin === \"auto\" && toElement.getTotalLength && toElement.tagName.toLowerCase() === \"path\") {\n\t\t\tp = toElement.getAttribute(\"d\").match(_numExp) || [];\n\t\t\tp = m.apply({x:+p[0], y:+p[1]});\n\t\t\tx += p.x;\n\t\t\ty += p.y;\n\t\t}\n\t\tif (p || (toElement.getBBox && fromElement.getBBox && toElement.ownerSVGElement === fromElement.ownerSVGElement)) {\n\t\t\tp = m.apply(toElement.getBBox());\n\t\t\tx -= p.x;\n\t\t\ty -= p.y;\n\t\t}\n\t\tm.e = x - fromPoint.x;\n\t\tm.f = y - fromPoint.y;\n\t\treturn m;\n\t},\n\t_align = (rawPath, target, {align, matrix, offsetX, offsetY, alignOrigin}) => {\n\t\tlet x = rawPath[0][0],\n\t\t\ty = rawPath[0][1],\n\t\t\tcurX = _getPropNum(target, \"x\"),\n\t\t\tcurY = _getPropNum(target, \"y\"),\n\t\t\talignTarget, m, p;\n\t\tif (!rawPath || !rawPath.length) {\n\t\t\treturn getRawPath(\"M0,0L0,0\");\n\t\t}\n\t\tif (align) {\n\t\t\tif (align === \"self\" || ((alignTarget = _toArray(align)[0] || target) === target)) {\n\t\t\t\ttransformRawPath(rawPath, 1, 0, 0, 1, curX - x, curY - y);\n\t\t\t} else {\n\t\t\t\tif (alignOrigin && alignOrigin[2] !== false) {\n\t\t\t\t\tgsap.set(target, {transformOrigin:(alignOrigin[0] * 100) + \"% \" + (alignOrigin[1] * 100) + \"%\"});\n\t\t\t\t} else {\n\t\t\t\t\talignOrigin = [_getPropNum(target, \"xPercent\") / -100, _getPropNum(target, \"yPercent\") / -100];\n\t\t\t\t}\n\t\t\t\tm = _getAlignMatrix(target, alignTarget, alignOrigin, \"auto\");\n\t\t\t\tp = m.apply({x: x, y: y});\n\t\t\t\ttransformRawPath(rawPath, m.a, m.b, m.c, m.d, curX + m.e - (p.x - m.e), curY + m.f - (p.y - m.f));\n\t\t\t}\n\t\t}\n\t\tif (matrix) {\n\t\t\ttransformRawPath(rawPath, matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n\t\t} else if (offsetX || offsetY) {\n\t\t\ttransformRawPath(rawPath, 1, 0, 0, 1, offsetX || 0, offsetY || 0);\n\t\t}\n\t\treturn rawPath;\n\t},\n\t_addDimensionalPropTween = (plugin, target, property, rawPath, pathProperty, forceUnit) => {\n\t\tlet cache = target._gsap,\n\t\t\tharness = cache.harness,\n\t\t\talias = (harness && harness.aliases && harness.aliases[property]),\n\t\t\tprop = alias && alias.indexOf(\",\") < 0 ? alias : property,\n\t\t\tpt = plugin._pt = new PropTween(plugin._pt, target, prop, 0, 0, _emptyFunc, 0, cache.set(target, prop, plugin));\n\t\tpt.u = _getUnit(cache.get(target, prop, forceUnit)) || 0;\n\t\tpt.path = rawPath;\n\t\tpt.pp = pathProperty;\n\t\tplugin._props.push(prop);\n\t},\n\t_sliceModifier = (start, end) => rawPath => (start || end !== 1) ? sliceRawPath(rawPath, start, end) : rawPath;\n\n\nexport const MotionPathPlugin = {\n\tversion: \"3.7.1\",\n\tname: \"motionPath\",\n\tregister(core, Plugin, propTween) {\n\t\tgsap = core;\n\t\t_getUnit = gsap.utils.getUnit;\n\t\t_toArray = gsap.utils.toArray;\n\t\tPropTween = propTween;\n\t},\n\tinit(target, vars) {\n\t\tif (!gsap) {\n\t\t\tconsole.warn(\"Please gsap.registerPlugin(MotionPathPlugin)\");\n\t\t\treturn false;\n\t\t}\n\t\tif (!(typeof(vars) === \"object\" && !vars.style) || !vars.path) {\n\t\t\tvars = {path:vars};\n\t\t}\n\t\tlet rawPaths = [],\n\t\t\t{path, autoRotate, unitX, unitY, x, y} = vars,\n\t\t\tfirstObj = path[0],\n\t\t\tslicer = _sliceModifier(vars.start, (\"end\" in vars) ? vars.end : 1),\n\t\t\trawPath, p;\n\t\tthis.rawPaths = rawPaths;\n\t\tthis.target = target;\n\t\tif ((this.rotate = (autoRotate || autoRotate === 0))) { //get the rotational data FIRST so that the setTransform() method is called in the correct order in the render() loop - rotation gets set last.\n\t\t\tthis.rOffset = parseFloat(autoRotate) || 0;\n\t\t\tthis.radians = !!vars.useRadians;\n\t\t\tthis.rProp = vars.rotation || \"rotation\"; // rotation property\n\t\t\tthis.rSet = target._gsap.set(target, this.rProp, this); // rotation setter\n\t\t\tthis.ru = _getUnit(target._gsap.get(target, this.rProp)) || 0; // rotation units\n\t\t}\n\t\tif (Array.isArray(path) && !(\"closed\" in path) && typeof(firstObj) !== \"number\") {\n\t\t\tfor (p in firstObj) {\n\t\t\t\tif (!x && ~_xProps.indexOf(p)) {\n\t\t\t\t\tx = p;\n\t\t\t\t} else if (!y && ~_yProps.indexOf(p)) {\n\t\t\t\t\ty = p;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (x && y) { //correlated values\n\t\t\t\trawPaths.push(_segmentToRawPath(this, _populateSegmentFromArray(_populateSegmentFromArray([], path, x, 0), path, y, 1), target, x, y, slicer, vars, unitX || _getUnit(path[0][x]), unitY || _getUnit(path[0][y])));\n\t\t\t} else {\n\t\t\t\tx = y = 0;\n\t\t\t}\n\t\t\tfor (p in firstObj) {\n\t\t\t\tp !== x && p !== y && rawPaths.push(_segmentToRawPath(this, _populateSegmentFromArray([], path, p, 2), target, p, 0, slicer, vars, _getUnit(path[0][p])));\n\t\t\t}\n\t\t} else {\n\t\t\trawPath = slicer(_align(getRawPath(vars.path), target, vars));\n\t\t\tcacheRawPathMeasurements(rawPath, vars.resolution);\n\t\t\trawPaths.push(rawPath);\n\t\t\t_addDimensionalPropTween(this, target, vars.x || \"x\", rawPath, \"x\", vars.unitX || \"px\");\n\t\t\t_addDimensionalPropTween(this, target, vars.y || \"y\", rawPath, \"y\", vars.unitY || \"px\");\n\t\t}\n\t},\n\trender(ratio, data) {\n\t\tlet rawPaths = data.rawPaths,\n\t\t\ti = rawPaths.length,\n\t\t\tpt = data._pt;\n\t\tif (ratio > 1) {\n\t\t\tratio = 1;\n\t\t} else if (ratio < 0) {\n\t\t\tratio = 0;\n\t\t}\n\t\twhile (i--) {\n\t\t\tgetPositionOnPath(rawPaths[i], ratio, !i && data.rotate, rawPaths[i]);\n\t\t}\n\t\twhile (pt) {\n\t\t\tpt.set(pt.t, pt.p, pt.path[pt.pp] + pt.u, pt.d, ratio);\n\t\t\tpt = pt._next;\n\t\t}\n\t\tdata.rotate && data.rSet(data.target, data.rProp, rawPaths[0].angle * (data.radians ? _DEG2RAD : 1) + data.rOffset + data.ru, data, ratio);\n\t},\n\tgetLength(path) {\n\t\treturn cacheRawPathMeasurements(getRawPath(path)).totalLength;\n\t},\n\tsliceRawPath,\n\tgetRawPath,\n\tpointsToSegment,\n\tstringToRawPath,\n\trawPathToString,\n\ttransformRawPath,\n\tgetGlobalMatrix,\n\tgetPositionOnPath,\n\tcacheRawPathMeasurements,\n\tconvertToPath: (targets, swap) => _toArray(targets).map(target => convertToPath(target, swap !== false)),\n\tconvertCoordinates(fromElement, toElement, point) {\n\t\tlet m = getGlobalMatrix(toElement, true, true).multiply(getGlobalMatrix(fromElement));\n\t\treturn point ? m.apply(point) : m;\n\t},\n\tgetAlignMatrix: _getAlignMatrix,\n\tgetRelativePosition(fromElement, toElement, fromOrigin, toOrigin) {\n\t\tlet m =_getAlignMatrix(fromElement, toElement, fromOrigin, toOrigin);\n\t\treturn {x: m.e, y: m.f};\n\t},\n\tarrayToRawPath(value, vars) {\n\t\tvars = vars || {};\n\t\tlet segment = _populateSegmentFromArray(_populateSegmentFromArray([], value, vars.x || \"x\", 0), value, vars.y || \"y\", 1);\n\t\tvars.relative && _relativize(segment);\n\t\treturn [(vars.type === \"cubic\") ? segment : pointsToSegment(segment, vars.curviness)];\n\t}\n};\n\n_getGSAP() && gsap.registerPlugin(MotionPathPlugin);\n\nexport { MotionPathPlugin as default };"],"names":["_isString","value","_roundPrecise","Math","round","_splitSegment","rawPath","segIndex","i","t","segment","shift","subdivideSegment","length","splice","slice","_appendOrMerge","index","prevSeg","l","concat","_svgPathExp","_numbersExp","_scientific","_selectorExp","_DEG2RAD","PI","_RAD2DEG","_sin","sin","_cos","cos","_abs","abs","_sqrt","sqrt","_atan2","atan2","_largeNum","_isNumber","_temp","_temp2","_roundingNum","_wrapProgress","progress","_round","_getSampleIndex","samples","_copyMetaData","source","copy","totalLength","lookup","minLength","resolution","totalPoints","getRawPath","e","test","document","querySelector","getAttribute","_gsPath","_dirty","stringToRawPath","console","warn","reverseSegment","y","reverse","reversed","_typeAttrs","rect","circle","ellipse","line","convertToPath","element","swap","data","x","r","ry","path","rcirc","rycirc","points","w","h","x2","x3","x4","x5","x6","y2","y3","y4","y5","y6","attr","type","tagName","toLowerCase","circ","getBBox","_createPath","ignore","name","createElementNS","call","attributes","nodeName","indexOf","setAttributeNS","nodeValue","_attrToObj","attrs","props","split","obj","rx","width","height","join","cx","cy","x1","y1","match","setAttribute","rawPathToString","_gsRawPath","parentNode","insertBefore","removeChild","getRotationAtBezierT","a","b","c","sliceRawPath","start","end","_isUndefined","loops","max","copyRawPath","_reverseRawPath","skipOuter","offset","min","cacheRawPathMeasurements","wrapsBehind","sShift","eShift","totalSegments","j","wrap","s","getProgressData","eSeg","sSeg","eSegIndex","sSegIndex","ei","si","sameSegment","sameBezier","angle","push","measureSegment","startIndex","bezierQty","xd","xd1","yd","yd1","inv","lengthIndex","segLength","inc","endIndex","samplesIndex","prevLength","pathLength","ax","ay","cp1x","cp1y","cp2x","cp2y","x1a","y1a","x2a","y2a","decoratee","pushToNextIfAtEnd","getPositionOnPath","includeAngle","point","result","transformRawPath","d","tx","ty","arcToSegment","lastX","lastY","largeArcFlag","sweepFlag","angleRad","cosAngle","sinAngle","TWOPI","dx2","dy2","x1_sq","y1_sq","radiiCheck","rx_sq","ry_sq","sq","coef","cx1","cy1","ux","uy","vx","vy","temp","angleStart","acos","angleExtent","isNaN","segments","ceil","angleIncrement","controlLength","ma","mb","mc","md","sx","sy","ex","ey","difX","difY","command","isRelative","startX","startY","beziers","prevCommand","flag1","flag2","replace","m","n","relativeX","relativeY","elements","errorMessage","log","toUpperCase","closed","substr","charAt","pop","flatPointsToSegment","curviness","pointsToSegment","cornerThreshold","prevX","prevY","slope","dx1","dx3","dy1","dy3","d1","d2","nextX","nextY","unshift","sl","_setDoc","doc","ownerDocument","_transformProp","style","_transformOriginProp","_win","window","_identityMatrix","Matrix2D","_docElement","_doc","documentElement","_body","body","_gEl","transform","createElement","appendChild","position","_hasOffsetBug","offsetParent","_svgOwner","ownerSVGElement","_createSibling","svg","ns","css","_svgContainer","_divContainer","cssText","_placeSiblings","adjustGOffset","container","cs","isRootSVG","siblings","_svgTemps","_divTemps","parent","_getCTM","getCTM","removeProperty","f","baseVal","numberOfItems","_consolidate","multiply","getItem","matrix","getComputedStyle","offsetLeft","offsetTop","scrollLeft","scrollTop","top","left","_setMatrix","inverse","this","determinant","a2","b2","c2","e2","f2","clone","equals","apply","getGlobalMatrix","includeScrollInFixed","zeroScales","_forceNonZeroScale","cache","_gsap","uncache","get","scaleX","scaleY","renderTransform","temps","b1","getBoundingClientRect","b3","isFixed","_isFixed","nodeType","_getDocScrollLeft","pageXOffset","_getDocScrollTop","pageYOffset","_populateSegmentFromArray","values","property","mode","parseFloat","_getPropNum","target","prop","unit","_relativize","_segmentToRawPath","plugin","slicer","vars","unitX","unitY","fromCurrent","relative","_align","_addDimensionalPropTween","_emptyFunc","v","_originToPoint","origin","parentMatrix","viewBox","offsetWidth","offsetHeight","_getAlignMatrix","fromElement","toElement","fromOrigin","toOrigin","p","fromPoint","getTotalLength","_numExp","gsap","PropTween","_getUnit","_toArray","_xProps","_yProps","alignTarget","align","offsetX","offsetY","alignOrigin","curX","curY","set","transformOrigin","pathProperty","forceUnit","harness","alias","aliases","pt","_pt","u","pp","_props","MotionPathPlugin","version","register","core","Plugin","propTween","utils","getUnit","toArray","init","rawPaths","autoRotate","firstObj","_sliceModifier","rotate","rOffset","radians","useRadians","rProp","rotation","rSet","ru","Array","isArray","render","ratio","_next","getLength","targets","map","convertCoordinates","getAlignMatrix","getRelativePosition","arrayToRawPath","_getGSAP","registerPlugin"],"mappings":";;;;;;;;;6MAuBa,SAAZA,EAAYC,SAA2B,iBAAXA,EAQZ,SAAhBC,EAAgBD,UAAUE,KAAKC,MAAc,KAARH,GAAgB,MAAS,EAC9C,SAAhBI,EAAiBC,EAASC,EAAUC,EAAGC,OAClCC,EAAUJ,EAAQC,GACrBI,EAAc,IAANF,EAAU,EAAIG,iBAAiBF,EAASF,EAAGC,MAChDE,GAASA,EAAQH,EAAI,EAAIE,EAAQG,cACpCP,EAAQQ,OAAOP,EAAU,EAAGG,EAAQK,MAAM,EAAGP,EAAIG,EAAQ,IACzDD,EAAQI,OAAO,EAAGN,EAAIG,GACf,EAkCQ,SAAjBK,EAAkBV,EAASI,OACtBO,EAAQX,EAAQO,OACnBK,EAAUZ,EAAQW,EAAQ,IAAM,GAChCE,EAAID,EAAQL,OACTI,GAASP,EAAQ,KAAOQ,EAAQC,EAAE,IAAMT,EAAQ,KAAOQ,EAAQC,EAAE,KACpET,EAAUQ,EAAQE,OAAOV,EAAQK,MAAM,IACvCE,KAEDX,EAAQW,GAASP,MArEfW,EAAc,mDACjBC,EAAc,0CACdC,EAAc,gCACdC,EAAe,4BACfC,EAAWtB,KAAKuB,GAAK,IACrBC,EAAW,IAAMxB,KAAKuB,GACtBE,EAAOzB,KAAK0B,IACZC,EAAO3B,KAAK4B,IACZC,EAAO7B,KAAK8B,IACZC,EAAQ/B,KAAKgC,KACbC,EAASjC,KAAKkC,MACdC,EAAY,IAEZC,EAAY,SAAZA,UAAYtC,SAA2B,iBAAXA,GAE5BuC,EAAQ,GACRC,EAAS,GACTC,EAAe,IACfC,EAAgB,SAAhBA,cAAgBC,UAAazC,KAAKC,OAAOwC,EAAWN,GAAa,EAAII,GAAgBA,IAAmBE,EAAW,EAAK,EAAI,IAC5HC,EAAS,SAATA,OAAS5C,UAAUE,KAAKC,MAAMH,EAAQyC,GAAgBA,GAAiB,GAWvEI,EAAkB,SAAlBA,gBAAmBC,EAASlC,EAAQ+B,OAE/BzB,EAAI4B,EAAQlC,OACfL,KAAOoC,EAAWzB,MACf4B,EAAQvC,GAAKK,SACPL,GAAKuC,EAAQvC,GAAKK,cAEpBkC,IAAUvC,GAAKK,GAAUL,EAAIW,WAE9BX,GASRwC,EAAgB,SAAhBA,cAAiBC,EAAQC,UACxBA,EAAKC,YAAcF,EAAOE,YACtBF,EAAOF,SACVG,EAAKH,QAAUE,EAAOF,QAAQhC,MAAM,GACpCmC,EAAKE,OAASH,EAAOG,OAAOrC,MAAM,GAClCmC,EAAKG,UAAYJ,EAAOI,UACxBH,EAAKI,WAAaL,EAAOK,YACfL,EAAOM,cACjBL,EAAKK,YAAcN,EAAOM,aAEpBL,GAuBF,SAASM,WAAWvD,OAGzBK,EADGmD,GADJxD,EAASD,EAAUC,IAAUuB,EAAakC,KAAKzD,IAAU0D,SAASC,cAAc3D,IAAkBA,GACpF4D,aAAe5D,EAAQ,SAEjCwD,IAAMxD,EAAQA,EAAM4D,aAAa,OAE/BJ,EAAEK,UACNL,EAAEK,QAAU,KAEbxD,EAAUmD,EAAEK,QAAQ7D,MACAK,EAAQyD,OAAUzD,EAAWmD,EAAEK,QAAQ7D,GAAS+D,gBAAgB/D,IAE7EA,EAAgFD,EAAUC,GAAS+D,gBAAgB/D,GAAUsC,EAAUtC,EAAM,IAAO,CAACA,GAASA,EAAtJgE,QAAQC,KAAK,yDAavB,SAASC,eAAezD,OAE7B0D,EADG5D,EAAI,MAERE,EAAQ2D,UACD7D,EAAIE,EAAQG,OAAQL,GAAK,EAC/B4D,EAAI1D,EAAQF,GACZE,EAAQF,GAAKE,EAAQF,EAAE,GACvBE,EAAQF,EAAE,GAAK4D,EAEhB1D,EAAQ4D,UAAY5D,EAAQ4D,SAK7B,IAcCC,EAAa,CACZC,KAAK,yBACLC,OAAO,UACPC,QAAQ,cACRC,KAAK,eAaA,SAASC,cAAcC,EAASC,OAGrCC,EAAMC,EAAGZ,EAAGa,EAAGC,EAAIC,EAAMC,EAAOC,EAAQC,EAAQC,EAAGC,EAAGC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAF3FC,EAAOvB,EAAQwB,QAAQC,cAC1BC,EAAO,oBAEK,SAATH,GAAoBvB,EAAQ2B,SAGhCrB,EAtCiB,SAAdsB,YAAehD,EAAGiD,OAInBC,EAHGxB,EAAOxB,SAASiD,gBAAgB,6BAA8B,QACjET,EAAO,GAAGpF,MAAM8F,KAAKpD,EAAEqD,YACvBtG,EAAI2F,EAAKtF,WAEV6F,EAAS,IAAMA,EAAS,KACV,IAALlG,GACRmG,EAAOR,EAAK3F,GAAGuG,SAAST,cACpBI,EAAOM,QAAQ,IAAML,EAAO,KAAO,GACtCxB,EAAK8B,eAAe,KAAMN,EAAMR,EAAK3F,GAAG0G,kBAGnC/B,EA0BDsB,CAAY5B,EAAS,qDAC5BsB,EAnBa,SAAbgB,WAAc1D,EAAG2D,WACZC,EAAQD,EAAQA,EAAME,MAAM,KAAO,GACtCC,EAAM,GACN/G,EAAI6G,EAAMxG,QACG,IAALL,GACR+G,EAAIF,EAAM7G,KAAOiD,EAAEI,aAAawD,EAAM7G,KAAO,SAEvC+G,EAYDJ,CAAWtC,EAASN,EAAW6B,IACzB,SAATA,GACHnB,EAAIkB,EAAKqB,GACTtC,EAAKiB,EAAKjB,IAAMD,EAChBD,EAAImB,EAAKnB,EACTZ,EAAI+B,EAAK/B,EACTmB,EAAIY,EAAKsB,MAAY,EAAJxC,EACjBO,EAAIW,EAAKuB,OAAc,EAALxC,EAYjBH,EAXGE,GAAKC,EAWD,KANPW,GAFAF,GADAD,EAAKV,EAAIC,GACCM,GAEAN,GAMQ,KAJlBc,EAAK3B,EAAIc,GAIoB,MAH7Bc,EAAKD,EAAKP,GAG+B,KAAO,CAACK,EAFjDI,EAAKD,EAAKd,EAAKqB,EALfX,EAAKD,EAAKV,EAAIsB,EAMdL,EAAKF,EAAKd,EACuDS,EAAIO,EAAIP,GAAMA,EAAKD,GAAM,EAAGQ,EAAIR,GAAMC,EAAKD,GAAM,EAAGQ,EAAIR,EAAIQ,EAV7HT,EAAKT,EAAIC,GAAK,EAAIsB,GAUmHL,EAAIlB,EAAGiB,EAAIjB,EAAGgB,EAAIhB,EAAGgB,GAAMA,EAAKD,GAAM,EAAGf,EAAGe,GAAMC,EAAKD,GAAM,EAAGf,EAAGe,EAAIf,EAL5Mc,EAAK1B,EAAIc,GAAM,EAAIqB,GAKgMd,EAAIrB,EAAGsB,EAAItB,EAAGsB,GAAMC,EAAKD,GAAM,EAAGtB,EAAGuB,GAAMA,EAAKD,GAAM,EAAGtB,EAAGuB,EAAIvB,EAAGwB,EAAIxB,EAAGyB,EAAIC,EAAID,EAAIE,GAAI4B,KAAK,KAAO,IAElT,KAAO3C,EAAIO,GAAK,IAAMnB,EAAI,KAAOoB,EAAI,MAASD,EAAK,MAASC,EAAK,KAAOD,EAAI,KAGjE,WAATa,GAA8B,YAATA,GAG9Bf,EAFY,WAATe,GACHnB,EAAIC,EAAKiB,EAAKlB,GACDsB,GAEbtB,EAAIkB,EAAKqB,IACTtC,EAAKiB,EAAKjB,IACIqB,GAKfxB,EAAO,MAHPC,EAAImB,EAAKyB,IAGO3C,GAAK,KAFrBb,EAAI+B,EAAK0B,IAEsB,KAAO,CAAC7C,EAAEC,EAAGb,EAAIiB,EAAQL,GADxDI,EAAQH,EAAIsB,GACuDnC,EAAIc,EAAIF,EAAGZ,EAAIc,EAAIF,EAAII,EAAOhB,EAAIc,EAAIF,EAAIC,EAAGb,EAAIiB,EAAQL,EAAIC,EAAGb,EAAGY,EAAIC,EAAGb,EAAIiB,EAAQL,EAAII,EAAOhB,EAAIc,EAAIF,EAAGZ,EAAIc,EAAIF,EAAII,EAAOhB,EAAIc,EAAIF,EAAIC,EAAGb,EAAIiB,EAAQL,EAAIC,EAAGb,GAAGuD,KAAK,KAAO,KAChO,SAATvB,EACVrB,EAAO,IAAMoB,EAAK2B,GAAK,IAAM3B,EAAK4B,GAAK,KAAO5B,EAAKV,GAAK,IAAMU,EAAKL,GAChD,aAATM,GAAgC,YAATA,IAIjCrB,EAAO,KAFPC,GADAM,GAAUT,EAAQhB,aAAa,UAAY,IAAImE,MAAM1G,IAAgB,IAC1DX,SAEM,KADjByD,EAAIkB,EAAO3E,SACgB,KAAO2E,EAAOqC,KAAK,KACjC,YAATvB,IACHrB,GAAQ,IAAMC,EAAI,IAAMZ,EAAI,MAG9Be,EAAK8C,aAAa,IAAKC,gBAAgB/C,EAAKgD,WAAanE,gBAAgBe,KACrED,GAAQD,EAAQuD,aACnBvD,EAAQuD,WAAWC,aAAalD,EAAMN,GACtCA,EAAQuD,WAAWE,YAAYzD,IAEzBM,GAxDCN,EAmET,SAAS0D,qBAAqB7H,EAASF,EAAGC,OAIxCuE,EAHGwD,EAAI9H,EAAQF,GACfiI,EAAI/H,EAAQF,EAAE,GACdkI,EAAIhI,EAAQF,EAAE,UAEfgI,IAAMC,EAAID,GAAK/H,EAEf+H,KADAC,IAAMC,EAAID,GAAKhI,GACL+H,GAAK/H,EACfuE,EAAIyD,GAAMC,GAAKhI,EAAQF,EAAE,GAAKkI,GAAKjI,EAAKgI,GAAKhI,EAAI+H,EACjDA,EAAI9H,EAAQF,EAAE,GAGdgI,KAFAC,EAAI/H,EAAQF,EAAE,IAEJgI,GAAK/H,EAEf+H,KADAC,KAFAC,EAAIhI,EAAQF,EAAE,IAEJiI,GAAKhI,GACL+H,GAAK/H,EACRoC,EAAOT,EAAOqG,GAAMC,GAAKhI,EAAQF,EAAE,GAAKkI,GAAKjI,EAAKgI,GAAKhI,EAAI+H,EAAGxD,GAAKrD,GAGpE,SAASgH,aAAarI,EAASsI,EAAOC,GAC5CA,EApOe,SAAfC,aAAe7I,eAA2B,IAAXA,EAoOzB6I,CAAaD,GAAO,EAAI3I,EAAc2I,IAAQ,EACpDD,EAAQ1I,EAAc0I,IAAU,MAC5BG,EAAQ5I,KAAK6I,IAAI,KAAMhH,EAAK6G,EAAMD,GAAS,OAC9CzD,EApJK,SAAS8D,YAAY3I,WACvBkI,EAAI,GACPhI,EAAI,EACEA,EAAIF,EAAQO,OAAQL,IAC1BgI,EAAEhI,GAAKwC,EAAc1C,EAAQE,GAAIF,EAAQE,GAAGO,MAAM,WAE5CiC,EAAc1C,EAASkI,GA8ItBS,CAAY3I,MACRuI,EAARD,IACHA,EAAQ,EAAIA,EACZC,EAAM,EAAIA,EA/MO,SAAlBK,gBAAmB5I,EAAS6I,OACvB3I,EAAIF,EAAQO,WAChBsI,GAAa7I,EAAQ+D,UACd7D,KACNF,EAAQE,GAAG8D,UAAYH,eAAe7D,EAAQE,IA4M/C0I,CAAgB/D,GAChBA,EAAKhC,YAAc,GAEhByF,EAAQ,GAAKC,EAAM,EAAG,KACrBO,EAASjJ,KAAK8B,MAAM9B,KAAKkJ,IAAIT,EAAOC,IAAQ,EAChDD,GAASQ,EACTP,GAAOO,EAERjE,EAAKhC,aAAemG,yBAAyBnE,OAY5CoE,EAAaC,EAAQC,EAAQjJ,EAAG0C,EAAMwG,EAAevI,EAAGwI,EAXrDC,EAAc,EAANf,EACXgB,EAAIC,gBAAgB3E,EAAMyD,EAAOpG,GAAO,GACxCiB,EAAIqG,gBAAgB3E,EAAM0D,EAAKpG,GAC/BsH,EAAOtG,EAAE/C,QACTsJ,EAAOH,EAAEnJ,QACTuJ,EAAYxG,EAAElD,SACd2J,EAAYL,EAAEtJ,SACd4J,EAAK1G,EAAEjD,EACP4J,EAAKP,EAAErJ,EACP6J,EAAeH,IAAcD,EAC7BK,EAAcH,IAAOC,GAAMC,KAExBT,GAAQb,EAAO,KAClBQ,EAAcU,EAAYC,GAAcG,GAAeF,EAAKC,GAAQE,GAAc7G,EAAEhD,EAAIoJ,EAAEpJ,EACtFJ,EAAc8E,EAAM+E,EAAWE,EAAIP,EAAEpJ,KACxCyJ,IACKX,IACJU,IACIK,GACH7G,EAAEhD,GAAKgD,EAAEhD,EAAIoJ,EAAEpJ,IAAM,EAAIoJ,EAAEpJ,GAC3B0J,EAAK,GACKE,IACVF,GAAMC,KAIL,GAAKvB,EAAMD,GAAS,KACvBqB,EAAYC,EAAY,GACbzG,EAAEhD,GAAKwJ,EAClBA,IACU5J,EAAc8E,EAAM8E,EAAWE,EAAI1G,EAAEhD,IAAM8I,GACrDW,IAEW,IAARL,EAAEpJ,IACLyJ,GAAaA,EAAY,GAAK/E,EAAKtE,QAEpCqC,EAAO,GAEP/B,EAAI,GADJuI,EAAgBvE,EAAKtE,QACGkI,EAExB5H,IAAOuI,GADPC,EAAIO,GACgCD,GAAaP,EAC5ClJ,EAAI,EAAGA,EAAIW,EAAGX,IAClBQ,EAAekC,EAAMiC,EAAKwE,IAAMD,IAEjCvE,EAAOjC,UAEPuG,EAAiB,IAARhG,EAAEhD,EAAU,EAAIG,iBAAiBmJ,EAAMI,EAAI1G,EAAEhD,GAClDmI,IAAUC,MACbW,EAAS5I,iBAAiBoJ,EAAMI,EAAIE,EAAaT,EAAEpJ,EAAIgD,EAAEhD,EAAIoJ,EAAEpJ,GAC/D4J,IAAgBZ,GAAUD,GAC1BO,EAAKjJ,OAAOqJ,EAAKV,EAAS,IACzBD,GAAUY,IAAOJ,EAAKlJ,OAAO,EAAGsJ,EAAKZ,GACtChJ,EAAI2E,EAAKtE,OACFL,MAELA,EAAI0J,GAAiBD,EAAJzJ,IAAkB2E,EAAKrE,OAAON,EAAG,QAGpDuJ,EAAKQ,MAAQhC,qBAAqBwB,EAAMI,EAAKV,EAAQ,GAErDI,EAAIE,EADJI,GAAMV,GAENhG,EAAIsG,EAAKI,EAAG,GACZJ,EAAKlJ,OAASkJ,EAAK5G,YAAc,EACjC4G,EAAKxG,YAAc4B,EAAK5B,YAAc,EACtCwG,EAAKS,KAAKX,EAAGpG,EAAGoG,EAAGpG,EAAGoG,EAAGpG,EAAGoG,EAAGpG,UAGjC0B,EAAKhC,YAAc,EACZgC,EAIR,SAASsF,eAAe/J,EAASgK,EAAYC,GAC5CD,EAAaA,GAAc,EACtBhK,EAAQqC,UACZrC,EAAQqC,QAAU,GAClBrC,EAAQ0C,OAAS,QAajB5C,EAAGmJ,EAAGhE,EAAID,EAAID,EAAImF,EAAIC,EAAK7E,EAAID,EAAID,EAAIgF,EAAIC,EAAKC,EAAKvK,EAAGwK,EAAa9J,EAAG+J,EAXrE5H,IAAe5C,EAAQ4C,YAAc,GACxC6H,EAAM,EAAI7H,EACV8H,EAAWT,EAAYD,EAAyB,EAAZC,EAAgB,EAAIjK,EAAQG,OAChEiH,EAAKpH,EAAQgK,GACb3C,EAAKrH,EAAQgK,EAAa,GAC1BW,EAAeX,EAAcA,EAAa,EAAKpH,EAAa,EAC5DP,EAAUrC,EAAQqC,QAClBK,EAAS1C,EAAQ0C,OACjBiG,GAAOqB,EAAahK,EAAQ2C,UAAYf,IAAcA,EACtDgJ,EAAavI,EAAQsI,EAAeV,EAAYrH,EAAa,GAC7DzC,EAAS6J,EAAa3H,EAAQsI,EAAa,GAAK,MAEjDtI,EAAQlC,OAASuC,EAAOvC,OAAS,EAC5B8I,EAAIe,EAAa,EAAGf,EAAIyB,EAAUzB,GAAK,EAAG,IAC9ChE,EAAKjF,EAAQiJ,EAAI,GAAK7B,EACtBpC,EAAKhF,EAAQiJ,EAAI,GAAK7B,EACtBrC,EAAK/E,EAAQiJ,GAAK7B,EAClB9B,EAAKtF,EAAQiJ,EAAI,GAAK5B,EACtBhC,EAAKrF,EAAQiJ,EAAI,GAAK5B,EACtBjC,EAAKpF,EAAQiJ,EAAI,GAAK5B,EACtB6C,EAAKC,EAAMC,EAAKC,EAAM,EAClB/I,EAAK2D,GAAM,KAAO3D,EAAKgE,GAAM,KAAOhE,EAAKyD,GAAMzD,EAAK8D,GAAM,IACxC,EAAjBpF,EAAQG,SACXH,EAAQI,OAAO6I,EAAG,GAClBA,GAAK,EACLyB,GAAY,YAGR5K,EAAI,EAAGA,GAAK8C,EAAY9C,IAG5BoK,EAAKC,GAAOA,IAFZpK,EAAI0K,EAAM3K,GAEaC,EAAIkF,EAAK,GADhCqF,EAAM,EAAIvK,IACiCA,EAAIiF,EAAKsF,EAAMvF,IAAOhF,GACjEqK,EAAKC,GAAOA,GAAOtK,EAAIA,EAAIuF,EAAK,EAAIgF,GAAOvK,EAAIsF,EAAKiF,EAAMlF,IAAOrF,IACjEU,EAAIe,EAAM4I,EAAKA,EAAKF,EAAKA,IACjBvB,IACPA,EAAMlI,GAEPN,GAAUM,EACV4B,EAAQsI,KAAkBxK,EAG5BiH,GAAMnC,EACNoC,GAAM/B,KAEHsF,MACHA,GAAczK,EACPwK,EAAetI,EAAQlC,OAAQwK,IACrCtI,EAAQsI,IAAiBC,KAGvBvI,EAAQlC,QAAUwI,MACrB3I,EAAQyC,YAAc+H,EAAYnI,EAAQA,EAAQlC,OAAO,IAAM,EAE3DqK,GADJxK,EAAQ2C,UAAYgG,GACE,SACrBlI,EAAI8J,EAAc,EACbzK,EAAI,EAAGA,EAAI0K,EAAW1K,GAAK6I,EAC/BjG,EAAOjC,KAAQ4B,EAAQkI,GAAezK,IAAOyK,EAAcA,OAI7DvK,EAAQyC,YAAcJ,EAAQ,GAAK,SAE7B2H,EAAa7J,EAASkC,EAAQ2H,EAAa,EAAI,GAAK7J,EAGrD,SAASyI,yBAAyBhJ,EAASgD,OAC7CiI,EAAYjG,EAAQ9E,MACnBA,EAAI+K,EAAajG,EAAS,EAAG9E,EAAIF,EAAQO,OAAQL,IACrDF,EAAQE,GAAG8C,aAAeA,GAAc,GACxCgC,GAAUhF,EAAQE,GAAGK,OACrB0K,GAAcd,eAAenK,EAAQE,WAEtCF,EAAQiD,YAAc+B,EACtBhF,EAAQ6C,YAAcoI,EACfjL,EAID,SAASM,iBAAiBF,EAASF,EAAGC,MACxCA,GAAK,GAAU,GAALA,SACN,MAEJ+K,EAAK9K,EAAQF,GAChBiL,EAAK/K,EAAQF,EAAE,GACfkL,EAAOhL,EAAQF,EAAE,GACjBmL,EAAOjL,EAAQF,EAAE,GACjBoL,EAAOlL,EAAQF,EAAE,GACjBqL,EAAOnL,EAAQF,EAAE,GAGjBsL,EAAMN,GAAME,EAAOF,GAAM/K,EACzBgF,EAAKiG,GAAQE,EAAOF,GAAQjL,EAC5BsL,EAAMN,GAAME,EAAOF,GAAMhL,EACzBqF,EAAK6F,GAAQE,EAAOF,GAAQlL,EAC5BqH,EAAKgE,GAAOrG,EAAKqG,GAAOrL,EACxBsH,EAAKgE,GAAOjG,EAAKiG,GAAOtL,EACxBuL,EAAMJ,GARDlL,EAAQF,EAAE,GAQIoL,GAAQnL,EAC3BwL,EAAMJ,GARDnL,EAAQF,EAAE,GAQIqL,GAAQpL,SAC5BgF,IAAOuG,EAAMvG,GAAMhF,EACnBqF,IAAOmG,EAAMnG,GAAMrF,EACnBC,EAAQI,OAAON,EAAI,EAAG,EACrBqC,EAAOiJ,GACPjJ,EAAOkJ,GACPlJ,EAAOiF,GACPjF,EAAOkF,GACPlF,EAAOiF,GAAMrC,EAAKqC,GAAMrH,GACxBoC,EAAOkF,GAAMjC,EAAKiC,GAAMtH,GACxBoC,EAAO4C,GACP5C,EAAOiD,GACPjD,EAAOmJ,GACPnJ,EAAOoJ,IAERvL,EAAQqC,SAAWrC,EAAQqC,QAAQjC,OAASN,EAAI,EAAKE,EAAQ4C,WAAc,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACzF,EAIR,SAASwG,gBAAgBxJ,EAASsC,EAAUsJ,EAAWC,GACtDD,EAAYA,GAAa,GACzB5L,EAAQ6C,aAAemG,yBAAyBhJ,IAC5CsC,EAAW,GAAgB,EAAXA,KACnBA,EAAWD,EAAcC,QAIzBG,EAASO,EAAYzC,EAAQwI,EAAKL,EAAKxI,EAAGC,EAFvCF,EAAW,EACdG,EAAUJ,EAAQ,MAEdsC,EAGE,GAAiB,IAAbA,EACVnC,EAAI,EAGJD,GADAE,EAAUJ,EADVC,EAAWD,EAAQO,OAAS,IAEhBA,OAAS,MACf,IACe,EAAjBP,EAAQO,OAAY,KACvBA,EAASP,EAAQ6C,YAAcP,EAC/BoG,EAAMxI,EAAI,GACFwI,GAAO1I,EAAQE,KAAK2C,aAAetC,GAC1CN,EAAWC,EAIZoC,GAAa/B,GADbwI,EAAML,GADNtI,EAAUJ,EAAQC,IACE4C,eACU6F,EAAMK,IAAS,EAE9CtG,EAAUrC,EAAQqC,QAClBO,EAAa5C,EAAQ4C,WACrBzC,EAASH,EAAQyC,YAAcP,EAE/ByG,GADA7I,EAAIE,EAAQ0C,OAAOvC,OAASH,EAAQ0C,UAAUvC,EAASH,EAAQ2C,aAAe,EAAIP,EAAgBC,EAASlC,EAAQ+B,IACzGG,EAAQvC,EAAE,GAAK,GACzBwI,EAAMjG,EAAQvC,IACJK,IACTwI,EAAML,EACNA,EAAMjG,IAAUvC,IAEjBC,EAAK,EAAI6C,IAAiBzC,EAASwI,IAAQL,EAAMK,GAAU7I,EAAI8C,GAC/D9C,EAAyB,KAAlBA,EAAI8C,GACP6I,GAA2B,IAAN1L,IACpBD,EAAI,EAAIE,EAAQG,QACnBL,GAAK,EACLC,EAAI,GACMF,EAAW,EAAID,EAAQO,SACjCL,EAAIC,EAAI,EACRC,EAAUJ,IAAUC,UApCtBE,EAAID,EAAID,EAAW,EACnBG,EAAUJ,EAAQ,UAuCnB4L,EAAUzL,EAAIA,EACdyL,EAAU1L,EAAIA,EACd0L,EAAU/G,KAAO7E,EACjB4L,EAAUxL,QAAUA,EACpBwL,EAAU3L,SAAWA,EACd2L,EAGD,SAASE,kBAAkB9L,EAASsC,EAAUyJ,EAAcC,OAGjEvJ,EAASO,EAAYzC,EAAQwI,EAAKL,EAAKxI,EAAGC,EAAG+H,EAAGwC,EAF7CtK,EAAUJ,EAAQ,GACrBiM,EAASD,GAAS,OAEf1J,EAAW,GAAgB,EAAXA,KACnBA,EAAWD,EAAcC,IAEL,EAAjBtC,EAAQO,OAAY,KACvBA,EAASP,EAAQ6C,YAAcP,EAC/BoG,EAAMxI,EAAI,GACFwI,GAAO1I,EAAQE,KAAK2C,aAAetC,GAC1CH,EAAUJ,EAAQE,GAGnBoC,GAAa/B,GADbwI,EAAML,EAAMtI,EAAQyC,eACU6F,EAAMK,IAAS,SAE9CtG,EAAUrC,EAAQqC,QAClBO,EAAa5C,EAAQ4C,WACrBzC,EAASH,EAAQyC,YAAcP,EAE/ByG,GADA7I,EAAIE,EAAQ0C,OAAOvC,OAASH,EAAQ0C,OAAOR,EAAW,KAAO/B,EAASH,EAAQ2C,WAAa3C,EAAQ0C,OAAOvC,OAAS,IAAM,EAAIiC,EAAgBC,EAASlC,EAAQ+B,IACpJG,EAAQvC,EAAE,GAAK,GACzBwI,EAAMjG,EAAQvC,IACJK,IACTwI,EAAML,EACNA,EAAMjG,IAAUvC,IAGjBwK,EAAM,GADNvK,EAAM,EAAI6C,IAAiBzC,EAASwI,IAAQL,EAAMK,GAAU7I,EAAI8C,IAAkB,GAGlFkF,EAAI9H,EADJF,EAAyB,KAAlBA,EAAI8C,IAEXiJ,EAAOvH,EAAInC,GAAQpC,EAAIA,GAAKC,EAAQF,EAAI,GAAKgI,GAAK,EAAIwC,GAAOvK,GAAKC,EAAQF,EAAI,GAAKgI,GAAKwC,GAAOtK,EAAQF,EAAI,GAAKgI,KAAO/H,EAAI+H,GAC3H+D,EAAOnI,EAAIvB,GAAQpC,EAAIA,GAAKC,EAAQF,EAAI,IAAMgI,EAAI9H,EAAQF,EAAE,KAAO,EAAIwK,GAAOvK,GAAKC,EAAQF,EAAI,GAAKgI,GAAKwC,GAAOtK,EAAQF,EAAI,GAAKgI,KAAO/H,EAAI+H,GACxI6D,IACHE,EAAOhC,MAAQ7J,EAAQyC,YAAcoF,qBAAqB7H,EAASF,EAAQ,GAALC,EAAS,EAAI,KAAOA,GAAQ,MAAQC,EAAQ6J,OAAS,GAErHgC,EAMD,SAASC,iBAAiBlM,EAASkI,EAAGC,EAAGC,EAAG+D,EAAGC,EAAIC,WAExDjM,EAASS,EAAGX,EAAGwE,EAAGZ,EADfuF,EAAIrJ,EAAQO,QAEF,IAAL8I,OAERxI,GADAT,EAAUJ,EAAQqJ,IACN9I,OACPL,EAAI,EAAGA,EAAIW,EAAGX,GAAK,EACvBwE,EAAItE,EAAQF,GACZ4D,EAAI1D,EAAQF,EAAE,GACdE,EAAQF,GAAKwE,EAAIwD,EAAIpE,EAAIsE,EAAIgE,EAC7BhM,EAAQF,EAAE,GAAKwE,EAAIyD,EAAIrE,EAAIqI,EAAIE,SAGjCrM,EAAQyD,OAAS,EACVzD,EAMR,SAASsM,aAAaC,EAAOC,EAAOtF,EAAItC,EAAIqF,EAAOwC,EAAcC,EAAWhI,EAAGZ,MAC1EyI,IAAU7H,GAAK8H,IAAU1I,GAG7BoD,EAAKxF,EAAKwF,GACVtC,EAAKlD,EAAKkD,OACN+H,EAAY1C,EAAQ,IAAO9I,EAC9ByL,EAAWpL,EAAKmL,GAChBE,EAAWvL,EAAKqL,GAChBvL,EAAKvB,KAAKuB,GACV0L,EAAa,EAAL1L,EACR2L,GAAOR,EAAQ7H,GAAK,EACpBsI,GAAOR,EAAQ1I,GAAK,EACpB0D,EAAMoF,EAAWG,EAAMF,EAAWG,EAClCvF,GAAOoF,EAAWE,EAAMH,EAAWI,EACnCC,EAAQzF,EAAKA,EACb0F,EAAQzF,EAAKA,EACb0F,EAAaF,GAAS/F,EAAKA,GAAMgG,GAAStI,EAAKA,GAC/B,EAAbuI,IACHjG,EAAKtF,EAAMuL,GAAcjG,EACzBtC,EAAKhD,EAAMuL,GAAcvI,OAEtBwI,EAAQlG,EAAKA,EAChBmG,EAAQzI,EAAKA,EACb0I,GAAOF,EAAQC,EAAUD,EAAQF,EAAUG,EAAQJ,IAAYG,EAAQF,EAAUG,EAAQJ,GACtFK,EAAK,IACRA,EAAK,OAEFC,GAASd,IAAiBC,GAAc,EAAI,GAAK9K,EAAM0L,GAC1DE,EAAetG,EAAKO,EAAM7C,EAApB2I,EACNE,GAAgB7I,EAAK4C,EAAMN,EAArBqG,EAGNjG,EAAYsF,EAAWY,EAAMX,EAAWY,GAFjClB,EAAQ7H,GAAK,EAGpB6C,EAAYsF,EAAWW,EAAMZ,EAAWa,GAFjCjB,EAAQ1I,GAAK,EAGpB4J,GAAMlG,EAAKgG,GAAOtG,EAClByG,GAAMlG,EAAKgG,GAAO7I,EAClBgJ,IAAOpG,EAAKgG,GAAOtG,EACnB2G,IAAOpG,EAAKgG,GAAO7I,EACnBkJ,EAAOJ,EAAKA,EAAKC,EAAKA,EACtBI,GAAeJ,EAAK,GAAM,EAAI,GAAK9N,KAAKmO,KAAKN,EAAK9L,EAAMkM,IACxDG,GAAgBP,EAAKG,EAAKF,EAAKC,EAAK,GAAM,EAAI,GAAK/N,KAAKmO,MAAMN,EAAKE,EAAKD,EAAKE,GAAMjM,EAAMkM,GAAQF,EAAKA,EAAKC,EAAKA,KACjHK,MAAMD,KAAiBA,EAAc7M,IAChCsL,GAA2B,EAAduB,EACjBA,GAAenB,EACLJ,GAAauB,EAAc,IACrCA,GAAenB,GAEhBiB,GAAcjB,EACdmB,GAAenB,MASd5M,EARGiO,EAAWtO,KAAKuO,KAAK1M,EAAKuM,IAAgBnB,EAAQ,IACrD9M,EAAU,GACVqO,EAAiBJ,EAAcE,EAC/BG,EAAgB,EAAI,EAAIhN,EAAK+M,EAAiB,IAAM,EAAI7M,EAAK6M,EAAiB,IAC9EE,EAAK3B,EAAW1F,EAChBsH,EAAK3B,EAAW3F,EAChBuH,EAAK5B,GAAYjI,EACjB8J,EAAK9B,EAAWhI,MAEZ1E,EAAI,EAAGA,EAAIiO,EAAUjO,IAEzBsH,EAAKhG,EADLyI,EAAQ8D,EAAa7N,EAAImO,GAEzB5G,EAAKnG,EAAK2I,GACVyD,EAAKlM,EAAKyI,GAASoE,GACnBV,EAAKrM,EAAK2I,GACVjK,EAAQkK,KAAK1C,EAAK8G,EAAgB7G,EAAIA,EAAK6G,EAAgB9G,EAAIkG,EAAKY,EAAgBX,EAAIA,EAAKW,EAAgBZ,EAAIA,EAAIC,OAGjHzN,EAAI,EAAGA,EAAIF,EAAQO,OAAQL,GAAG,EAClCsH,EAAKxH,EAAQE,GACbuH,EAAKzH,EAAQE,EAAE,GACfF,EAAQE,GAAKsH,EAAK+G,EAAK9G,EAAKgH,EAAKnH,EACjCtH,EAAQE,EAAE,GAAKsH,EAAKgH,EAAK/G,EAAKiH,EAAKnH,SAEpCvH,EAAQE,EAAE,GAAKwE,EACf1E,EAAQE,EAAE,GAAK4D,EACR9D,GAID,SAAS0D,gBAAgByI,GAUvB,SAAP9H,GAAgBsK,EAAIC,EAAIC,EAAIC,GAC3BC,GAAQF,EAAKF,GAAM,EACnBK,GAAQF,EAAKF,GAAM,EACnBxO,EAAQ8J,KAAKyE,EAAKI,EAAMH,EAAKI,EAAMH,EAAKE,EAAMD,EAAKE,EAAMH,EAAIC,OAJ9D5O,EAAGmJ,EAAG3E,EAAGZ,EAAGmL,EAASC,EAAY9O,EAAS+O,EAAQC,EAAQL,EAAMC,EAAMK,EAASC,EAAaC,EAAOC,EARhGtH,GAAKiE,EAAI,IAAIsD,QAAQxO,EAAa,SAAAyO,OAAWC,GAAKD,SAAWC,EAAI,OAAe,KAALA,EAAe,EAAIA,IAAMjI,MAAM3G,IAAgB,GAC7H8D,EAAO,GACP+K,EAAY,EACZC,EAAY,EAEZC,EAAW5H,EAAE3H,OACbyE,EAAS,EACT+K,EAAe,0BAA4B5D,MAOvCA,IAAM+B,MAAMhG,EAAE,KAAOgG,MAAMhG,EAAE,WACjCvE,QAAQqM,IAAID,GACLlL,MAEH3E,EAAI,EAAGA,EAAI4P,EAAU5P,OACzBoP,EAAcL,EACVf,MAAMhG,EAAEhI,IAEXgP,GADAD,EAAU/G,EAAEhI,GAAG+P,iBACW/H,EAAEhI,GAE5BA,IAEDwE,GAAKwD,EAAEhI,EAAI,GACX4D,GAAKoE,EAAEhI,EAAI,GACPgP,IACHxK,GAAKkL,EACL9L,GAAK+L,GAED3P,IACJiP,EAASzK,EACT0K,EAAStL,GAIM,MAAZmL,EACC7O,IACCA,EAAQG,OAAS,IACpBsE,EAAKtE,OAELyE,GAAU5E,EAAQG,QAGpBqP,EAAYT,EAASzK,EACrBmL,EAAYT,EAAStL,EACrB1D,EAAU,CAACsE,EAAGZ,GACde,EAAKqF,KAAK9J,GACVF,GAAK,EACL+O,EAAU,SAGJ,GAAgB,MAAZA,EAILC,IACJU,EAAYC,EAAY,IAHxBzP,EADIA,GACM,CAAC,EAAG,IAMP8J,KAAKxF,EAAGZ,EAAG8L,EAAuB,EAAX1H,EAAEhI,EAAI,GAAQ2P,EAAuB,EAAX3H,EAAEhI,EAAI,GAAS0P,GAAwB,EAAX1H,EAAEhI,EAAI,GAAU2P,GAAwB,EAAX3H,EAAEhI,EAAI,IACxHA,GAAK,OAGC,GAAgB,MAAZ+O,EACVF,EAAOa,EACPZ,EAAOa,EACa,MAAhBP,GAAuC,MAAhBA,IAC1BP,GAAQa,EAAYxP,EAAQA,EAAQG,OAAS,GAC7CyO,GAAQa,EAAYzP,EAAQA,EAAQG,OAAS,IAEzC2O,IACJU,EAAYC,EAAY,GAEzBzP,EAAQ8J,KAAK6E,EAAMC,EAAMtK,EAAGZ,EAAI8L,GAAwB,EAAX1H,EAAEhI,EAAI,GAAU2P,GAAwB,EAAX3H,EAAEhI,EAAI,IAChFA,GAAK,OAGC,GAAgB,MAAZ+O,EACVF,EAAOa,EA7EI,EAAI,GA6EKlL,EAAIkL,GACxBZ,EAAOa,EA9EI,EAAI,GA8EK/L,EAAI+L,GACnBX,IACJU,EAAYC,EAAY,GAEzBD,GAAwB,EAAX1H,EAAEhI,EAAI,GACnB2P,GAAwB,EAAX3H,EAAEhI,EAAI,GACnBE,EAAQ8J,KAAK6E,EAAMC,EAAMY,EApFd,EAAI,GAoFuBlL,EAAIkL,GAAwBC,EApFvD,EAAI,GAoFgE/L,EAAI+L,GAAwBD,EAAWC,GACtH3P,GAAK,OAGC,GAAgB,MAAZ+O,EACVF,EAAOa,EAAYxP,EAAQA,EAAQG,OAAS,GAC5CyO,EAAOa,EAAYzP,EAAQA,EAAQG,OAAS,GAC5CH,EAAQ8J,KAAK0F,EAAYb,EAAMc,EAAYb,EAAMtK,EA3FtC,EAAI,GA2FwCkL,EAAmB,IAAPb,EAAcrK,GAAgBZ,EA3FtF,EAAI,GA2FwF+L,EAAmB,IAAPb,EAAclL,GAAiB8L,EAAYlL,EAAKmL,EAAY/L,GAC/K5D,GAAK,OAGC,GAAgB,MAAZ+O,EACV5K,GAAKuL,EAAWC,EAAYD,EAAYlL,EAAImL,GAC5C3P,GAAK,OAGC,GAAgB,MAAZ+O,EAEV5K,GAAKuL,EAAWC,EAAWD,EAAYC,EAAYnL,GAAKwK,EAAaW,EAAYD,EAAY,IAC7F1P,GAAK,OAGC,GAAgB,MAAZ+O,GAA+B,MAAZA,EACb,MAAZA,IACHvK,EAAIyK,EACJrL,EAAIsL,EACJhP,EAAQ8P,QAAS,IAEF,MAAZjB,GAAyC,GAAtBvN,EAAKkO,EAAYlL,IAAkC,GAAtBhD,EAAKmO,EAAY/L,MACpEO,GAAKuL,EAAWC,EAAWnL,EAAGZ,GACd,MAAZmL,IACH/O,GAAK,IAGP0P,EAAYlL,EACZmL,EAAY/L,OAGN,GAAgB,MAAZmL,EAAiB,IAC3BM,EAAQrH,EAAEhI,EAAE,GACZsP,EAAQtH,EAAEhI,EAAE,GACZ6O,EAAO7G,EAAEhI,EAAE,GACX8O,EAAO9G,EAAEhI,EAAE,GACXmJ,EAAI,EACe,EAAfkG,EAAMhP,SACLgP,EAAMhP,OAAS,GAClByO,EAAOD,EACPA,EAAOS,EACPnG,MAEA2F,EAAOQ,EACPT,EAAOQ,EAAMY,OAAO,GACpB9G,GAAG,GAEJmG,EAAQD,EAAMa,OAAO,GACrBb,EAAQA,EAAMa,OAAO,IAEtBf,EAAU/C,aAAasD,EAAWC,GAAY3H,EAAEhI,EAAE,IAAKgI,EAAEhI,EAAE,IAAKgI,EAAEhI,EAAE,IAAKqP,GAAQC,GAAQN,EAAaU,EAAY,GAAU,EAALb,GAASG,EAAaW,EAAY,GAAU,EAALb,GAC9J9O,GAAKmJ,EACDgG,MACEhG,EAAI,EAAGA,EAAIgG,EAAQ9O,OAAQ8I,IAC/BjJ,EAAQ8J,KAAKmF,EAAQhG,IAGvBuG,EAAYxP,EAAQA,EAAQG,OAAO,GACnCsP,EAAYzP,EAAQA,EAAQG,OAAO,QAGnCoD,QAAQqM,IAAID,UAGd7P,EAAIE,EAAQG,QACJ,GACPsE,EAAKwL,MACLnQ,EAAI,GACME,EAAQ,KAAOA,EAAQF,EAAE,IAAME,EAAQ,KAAOA,EAAQF,EAAE,KAClEE,EAAQ8P,QAAS,GAElBrL,EAAK5B,YAAc+B,EAAS9E,EACrB2E,EAmDD,SAASyL,oBAAoBtL,EAAQuL,YAAAA,IAAAA,EAAU,WACjD7L,EAAIM,EAAO,GACdlB,EAAI,EACJ1D,EAAU,CAACsE,EAAGZ,GACd5D,EAAI,EACEA,EAAI8E,EAAOzE,OAAQL,GAAG,EAC5BE,EAAQ8J,KACPxF,EACAZ,EACAkB,EAAO9E,GACN4D,GAAKkB,EAAO9E,GAAKwE,GAAK6L,EAAY,EAClC7L,EAAIM,EAAO9E,IACX4D,UAGI1D,EAID,SAASoQ,gBAAgBxL,EAAQuL,EAAWE,GAElD/O,EAAKsD,EAAO,GAAKA,EAAO,IAAM,MAAQtD,EAAKsD,EAAO,GAAKA,EAAO,IAAM,OAASA,EAASA,EAAOvE,MAAM,QAUlGiQ,EAAOC,EAAO1G,EAAO2G,EAAO1Q,EAAG2Q,EAAKC,EAAKC,EAAKC,EAAKC,EAAIC,EAAIhJ,EAAGC,EAAGC,EAT9DvH,EAAImE,EAAOzE,OAAO,EACrBmE,GAAKM,EAAO,GACZlB,GAAKkB,EAAO,GACZmM,GAASnM,EAAO,GAChBoM,GAASpM,EAAO,GAChB5E,EAAU,CAACsE,EAAGZ,EAAGY,EAAGZ,GACpBiJ,EAAMoE,EAAQzM,EACdsI,EAAMoE,EAAQtN,EACdoM,EAASrQ,KAAK8B,IAAIqD,EAAOnE,GAAK6D,GAAK,MAAS7E,KAAK8B,IAAIqD,EAAOnE,EAAE,GAAKiD,GAAK,SAErEoK,MAAMuC,KACTA,EAAkB5Q,KAAKuB,GAAK,IAEzB8O,IACHlL,EAAOkF,KAAKiH,EAAOC,GACnBD,EAAQzM,EACR0M,EAAQtN,EACRY,EAAIM,EAAOnE,EAAE,GACbiD,EAAIkB,EAAOnE,EAAE,GACbmE,EAAOqM,QAAQ3M,EAAGZ,GAClBjD,GAAG,GAEJ0P,EAAaA,GAA2B,IAAdA,GAAoBA,EAAY,EACrDrQ,EAAI,EAAGA,EAAIW,EAAGX,GAAG,EACrBwQ,EAAQhM,EACRiM,EAAQ7M,EACRY,EAAIyM,EACJrN,EAAIsN,EACJD,GAASnM,EAAO9E,EAAE,GAClBkR,GAASpM,EAAO9E,EAAE,GACdwE,IAAMyM,GAASrN,IAAMsN,IASzBlJ,GANA2I,EAAM9D,GAMI8D,GALVE,EAAM/D,GAKgB+D,EACtB5I,GALA4E,EAAMoE,EAAQzM,GAKJqI,GAJVC,EAAMoE,EAAQtN,GAIQkJ,EACtB5E,GAJA0I,EAAMK,EAAQT,GAIJI,GAHVE,EAAMI,EAAQT,GAGQK,EAEtBE,GADAjH,EAAQpK,KAAKmO,MAAO9F,EAAIC,EAAIC,GAAKxG,EAAM,EAAIsG,EAAIC,KACjCtI,KAAKuB,GAAMmP,EACzBU,EAAKrP,EAAMsG,GAAKgJ,EAChBA,GAAMtP,EAAMuG,GACRzD,IAAMgM,GAAS5M,IAAM6M,IACZF,EAARxG,GACH2G,EAAQ9O,EAAOkP,EAAKF,GACpB1Q,EAAQ8J,KACP3H,EAAOmC,EAAIlD,EAAKoP,GAASK,GACzB1O,EAAOuB,EAAIxC,EAAKsP,GAASK,GACzB1O,EAAOmC,GACPnC,EAAOuB,GACPvB,EAAOmC,EAAIlD,EAAKoP,GAASM,GACzB3O,EAAOuB,EAAIxC,EAAKsP,GAASM,MAG1BN,EAAQ9O,EAAOiP,EAAKF,GACpBzQ,EAAQ8J,KACP3H,EAAOmC,EAAIlD,EAAKoP,GAASK,GACzB1O,EAAOuB,EAAIxC,EAAKsP,GAASK,IAC1BL,EAAQ9O,EAAOkL,EAAKD,GACpB3M,EAAQ8J,KACP3H,EAAOmC,GACPnC,EAAOuB,GACPvB,EAAOmC,EAAIlD,EAAKoP,GAASM,GACzB3O,EAAOuB,EAAIxC,EAAKsP,GAASM,cAK7BxM,IAAMyM,GAASrN,IAAMsN,GAAShR,EAAQG,OAAS,EAAIH,EAAQ8J,KAAK3H,EAAO4O,GAAQ5O,EAAO6O,GAAQ7O,EAAO4O,GAAQ5O,EAAO6O,IAAUhR,EAAQG,QAAU,EAC5I2P,IACH9P,EAAQI,OAAO,EAAG,GAClBJ,EAAQG,OAASH,EAAQG,OAAS,GAE5BH,EA4ID,SAASwH,gBAAgB5H,GAC3BiC,EAAUjC,EAAQ,MACrBA,EAAU,CAACA,QAIXsR,EAAI/H,EAAGrJ,EAAGE,EAFP6L,EAAS,GACZpL,EAAIb,EAAQO,WAERgJ,EAAI,EAAGA,EAAI1I,EAAG0I,IAAK,KACvBnJ,EAAUJ,EAAQuJ,GAClB0C,GAAU,IAAM1J,EAAOnC,EAAQ,IAAM,IAAMmC,EAAOnC,EAAQ,IAAM,KAChEkR,EAAKlR,EAAQG,OACRL,EAAI,EAAGA,EAAIoR,EAAIpR,IACnB+L,GAAU1J,EAAOnC,EAAQF,MAAQ,IAAMqC,EAAOnC,EAAQF,MAAQ,IAAMqC,EAAOnC,EAAQF,MAAQ,IAAMqC,EAAOnC,EAAQF,MAAQ,IAAMqC,EAAOnC,EAAQF,MAAQ,IAAMqC,EAAOnC,EAAQF,IAAM,IAE7KE,EAAQ8P,SACXjE,GAAU,YAGLA,ECpmCG,SAAVsF,EAAUhN,OACLiN,EAAMjN,EAAQkN,eAAiBlN,IAC7BmN,KAAkBnN,EAAQoN,QAAU,gBAAiBpN,EAAQoN,QAElEC,GADAF,EAAiB,eACuB,eAElCF,EAAI1J,aAAe0J,EAAMA,EAAI1J,iBACpC+J,EAAOC,OACPC,EAAkB,IAAIC,EAClBR,EAAK,CAERS,GADAC,EAAOV,GACWW,gBAClBC,EAAQZ,EAAIa,MACZC,EAAOJ,EAAK5L,gBAAgB,6BAA8B,MAErDqL,MAAMY,UAAY,WAEnBtB,EAAKO,EAAIgB,cAAc,OAC1BtB,EAAKM,EAAIgB,cAAc,OACxBJ,EAAMK,YAAYxB,GAClBA,EAAGwB,YAAYvB,GACfD,EAAGU,MAAMe,SAAW,SACpBzB,EAAGU,MAAMD,GAAkB,uBAC3BiB,EAAiBzB,EAAG0B,eAAiB3B,EACrCmB,EAAMpK,YAAYiJ,UAEZO,EAsCI,SAAZqB,EAAYtO,UAAWA,EAAQuO,kBAA6D,SAAxCvO,EAAQwB,QAAU,IAAIC,cAA0BzB,EAAU,MAU7F,SAAjBwO,EAAkBxO,EAASrE,MACtBqE,EAAQuD,aAAeoK,GAAQX,EAAQhN,IAAW,KACjDyO,EAAMH,EAAUtO,GACnB0O,EAAKD,EAAOA,EAAIzP,aAAa,UAAY,6BAAgC,+BACzEuC,EAAOkN,EAAO9S,EAAI,OAAS,IAAO,MAClCwE,EAAU,IAANxE,EAAU,EAAI,IAClB4D,EAAU,IAAN5D,EAAU,IAAM,EACpBgT,EAAM,0EACN/P,EAAI+O,EAAK5L,gBAAkB4L,EAAK5L,gBAAgB2M,EAAGxD,QAAQ,SAAU,QAAS3J,GAAQoM,EAAKM,cAAc1M,UACtG5F,IACE8S,GAScG,EAAlBA,GAAkCJ,EAAexO,GACjDpB,EAAEwE,aAAa,QAAS,KACxBxE,EAAEwE,aAAa,SAAU,KACzBxE,EAAEwE,aAAa,YAAa,aAAejD,EAAI,IAAMZ,EAAI,KACzDqP,EAAcV,YAAYtP,KAZrBiQ,KACJA,EAAgBL,EAAexO,IACjBoN,MAAM0B,QAAUH,GAE/B/P,EAAEwO,MAAM0B,QAAUH,EAAM,gCAAkCpP,EAAI,WAAaY,EAAI,KAC/E0O,EAAcX,YAAYtP,KAUrBA,OAEF,4BAuBU,SAAjBmQ,GAAkB/O,EAASgP,OAKzBC,EAAW9D,EAAGvH,EAAGzD,EAAGZ,EAAG2P,EAJpBT,EAAMH,EAAUtO,GACnBmP,EAAYnP,IAAYyO,EACxBW,EAAWX,EAAMY,EAAYC,EAC7BC,EAASvP,EAAQuD,cAEdvD,IAAYsN,SACRtN,KAERoP,EAASpT,QAAUoT,EAASzJ,KAAK6I,EAAexO,EAAS,GAAIwO,EAAexO,EAAS,GAAIwO,EAAexO,EAAS,IACjHiP,EAAYR,EAAMG,EAAgBC,EAC9BJ,EACCU,GAEHhP,IADAyD,EA1BO,SAAV4L,QAAUf,OAERT,EADG7C,EAAIsD,EAAIgB,gBAEPtE,IACJ6C,EAAYS,EAAIrB,MAAMD,GACtBsB,EAAIrB,MAAMD,GAAkB,OAC5BsB,EAAIP,YAAYH,GAChB5C,EAAI4C,EAAK0B,SACThB,EAAIhL,YAAYsK,GAChBC,EAAaS,EAAIrB,MAAMD,GAAkBa,EAAaS,EAAIrB,MAAMsC,eAAevC,EAAejC,QAAQ,WAAY,OAAOzJ,gBAEnH0J,EAeDqE,CAAQxP,IACLpB,EAAIgF,EAAED,EACbpE,GAAKqE,EAAE+L,EAAI/L,EAAEgE,EACbuD,EAAIqC,IAEJ5J,EAAI5D,EAAQ2B,UAGZxB,GADAgL,GADAA,EAAInL,EAAQgO,UAAYhO,EAAQgO,UAAU4B,QAAU,IAC7CC,cAAoD,EAAlB1E,EAAE0E,cAzC/B,SAAfC,aAAe3E,WACVtH,EAAI,IAAI4J,EACX9R,EAAI,EACEA,EAAIwP,EAAE0E,cAAelU,IAC3BkI,EAAEkM,SAAS5E,EAAE6E,QAAQrU,GAAGsU,eAElBpM,EAmC0DiM,CAAa3E,GAAKA,EAAE6E,QAAQ,GAAGC,OAAvEzC,GACjB7J,EAAIC,EAAEzD,EAAIgL,EAAEtH,EAAID,EAAErE,EACxBA,EAAI4L,EAAEvH,EAAIA,EAAEzD,EAAIgL,EAAEvD,EAAIhE,EAAErE,GAErByP,GAAmD,MAAlChP,EAAQwB,QAAQC,gBACpCtB,EAAIZ,EAAI,IAER4P,EAAYV,EAAMc,GAAQrB,YAAYe,GACvCA,EAAU7L,aAAa,YAAa,UAAY+H,EAAExH,EAAI,IAAMwH,EAAEvH,EAAI,IAAMuH,EAAEtH,EAAI,IAAMsH,EAAEvD,EAAI,KAAOuD,EAAEvM,EAAIuB,GAAK,KAAOgL,EAAEwE,EAAIpQ,GAAK,SACxH,IACNY,EAAIZ,EAAI,EACJ6O,MACHjD,EAAInL,EAAQqO,aACZzK,EAAI5D,GACS4D,EAANA,GAAUA,EAAEL,aAAeK,IAAMuH,GAAKvH,EAAEL,YACe,GAAxD+J,EAAK4C,iBAAiBtM,GAAGuJ,GAAkB,IAAInR,SACnDmE,EAAIyD,EAAEuM,WACN5Q,EAAIqE,EAAEwM,UACNxM,EAAI,MAKa,cADpBsL,EAAK5B,EAAK4C,iBAAiBlQ,IACpBmO,UAA2C,UAAhBe,EAAGf,aACpChD,EAAInL,EAAQqO,aACLkB,GAAUA,IAAWpE,GAC3BhL,GAAKoP,EAAOc,YAAc,EAC1B9Q,GAAKgQ,EAAOe,WAAa,EACzBf,EAASA,EAAOhM,YAGlBK,EAAIqL,EAAU7B,OACZmD,IAAOvQ,EAAQoQ,UAAY7Q,EAAK,KAClCqE,EAAE4M,KAAQxQ,EAAQmQ,WAAahQ,EAAK,KACpCyD,EAAEuJ,GAAkB+B,EAAG/B,GACvBvJ,EAAEyJ,GAAwB6B,EAAG7B,GAM7BzJ,EAAEuK,SAA2B,UAAhBe,EAAGf,SAAuB,QAAU,WACjDnO,EAAQuD,WAAW2K,YAAYe,UAEzBA,EAEK,SAAbwB,GAActF,EAAGxH,EAAGC,EAAGC,EAAG+D,EAAGhJ,EAAG+Q,UAC/BxE,EAAExH,EAAIA,EACNwH,EAAEvH,EAAIA,EACNuH,EAAEtH,EAAIA,EACNsH,EAAEvD,EAAIA,EACNuD,EAAEvM,EAAIA,EACNuM,EAAEwE,EAAIA,EACCxE,EA1MT,IAAIwC,EAAML,EAAMI,EAAaG,EAAOgB,EAAeD,EAAepB,EAAiBO,EAGlFK,IAFAjB,EAAiB,YACjBE,EAAuBF,EAAiB,SA8DxCkC,EAAY,GACZC,EAAY,GA4IA7B,0BAKZiD,QAAA,uBACM/M,EAAoBgN,KAApBhN,EAAGC,EAAiB+M,KAAjB/M,EAAGC,EAAc8M,KAAd9M,EAAG+D,EAAW+I,KAAX/I,EAAGhJ,EAAQ+R,KAAR/R,EAAG+Q,EAAKgB,KAALhB,EACnBiB,EAAejN,EAAIiE,EAAIhE,EAAIC,GAAM,aAC3B4M,GACNE,KACA/I,EAAIgJ,GACHhN,EAAIgN,GACJ/M,EAAI+M,EACLjN,EAAIiN,GACH/M,EAAI8L,EAAI/H,EAAIhJ,GAAKgS,IAChBjN,EAAIgM,EAAI/L,EAAIhF,GAAKgS,MAIrBb,SAAA,kBAASE,OACHtM,EAAoBgN,KAApBhN,EAAGC,EAAiB+M,KAAjB/M,EAAGC,EAAc8M,KAAd9M,EAAG+D,EAAW+I,KAAX/I,EAAGhJ,EAAQ+R,KAAR/R,EAAG+Q,EAAKgB,KAALhB,EACnBkB,EAAKZ,EAAOtM,EACZmN,EAAKb,EAAOpM,EACZkN,EAAKd,EAAOrM,EACZ+I,EAAKsD,EAAOrI,EACZoJ,EAAKf,EAAOrR,EACZqS,EAAKhB,EAAON,SACNc,GAAWE,KACjBE,EAAKlN,EAAIoN,EAAKlN,EACdgN,EAAKjN,EAAImN,EAAKnJ,EACdkJ,EAAKnN,EAAIgJ,EAAK9I,EACdiN,EAAKlN,EAAI+I,EAAK/E,EACdhJ,EAAIoS,EAAKrN,EAAIsN,EAAKpN,EAClB8L,EAAIqB,EAAKpN,EAAIqN,EAAKrJ,MAGpBsJ,MAAA,wBACQ,IAAIzD,SAASkD,KAAKhN,EAAGgN,KAAK/M,EAAG+M,KAAK9M,EAAG8M,KAAK/I,EAAG+I,KAAK/R,EAAG+R,KAAKhB,MAGlEwB,OAAA,gBAAOlB,OACDtM,EAAoBgN,KAApBhN,EAAGC,EAAiB+M,KAAjB/M,EAAGC,EAAc8M,KAAd9M,EAAG+D,EAAW+I,KAAX/I,EAAGhJ,EAAQ+R,KAAR/R,EAAG+Q,EAAKgB,KAALhB,SACZhM,IAAMsM,EAAOtM,GAAKC,IAAMqM,EAAOrM,GAAKC,IAAMoM,EAAOpM,GAAK+D,IAAMqI,EAAOrI,GAAKhJ,IAAMqR,EAAOrR,GAAK+Q,IAAMM,EAAON,KAGhHyB,MAAA,eAAM3J,EAAOJ,YAAAA,IAAAA,EAAU,QACjBlH,EAAQsH,EAARtH,EAAGZ,EAAKkI,EAALlI,EACNoE,EAAoBgN,KAApBhN,EAAGC,EAAiB+M,KAAjB/M,EAAGC,EAAc8M,KAAd9M,EAAG+D,EAAW+I,KAAX/I,EAAGhJ,EAAQ+R,KAAR/R,EAAG+Q,EAAKgB,KAALhB,SACjBtI,EAAUlH,EAAKA,EAAIwD,EAAIpE,EAAIsE,EAAIjF,GAAM,EACrCyI,EAAU9H,EAAKY,EAAIyD,EAAIrE,EAAIqI,EAAI+H,GAAM,EAC9BtI,+BAjDI1D,EAAKC,EAAKC,EAAK+D,EAAKhJ,EAAK+Q,YAAzBhM,IAAAA,EAAE,YAAGC,IAAAA,EAAE,YAAGC,IAAAA,EAAE,YAAG+D,IAAAA,EAAE,YAAGhJ,IAAAA,EAAE,YAAG+Q,IAAAA,EAAE,GACtCc,GAAWE,KAAMhN,EAAGC,EAAGC,EAAG+D,EAAGhJ,EAAG+Q,GA4D3B,SAAS0B,gBAAgBrR,EAAS0Q,EAAS1B,EAAesC,OAC3DtR,IAAYA,EAAQuD,aAAeoK,GAAQX,EAAQhN,IAAU4N,kBAAoB5N,SAC9E,IAAIyN,MAER8D,EA/OiB,SAArBC,mBAAqB5S,WAChB+E,EAAG8N,EACA7S,GAAKA,IAAMiP,IACjB4D,EAAQ7S,EAAE8S,QACDD,EAAME,SAAWF,EAAMG,IAAIhT,EAAG,KACnC6S,IAAUA,EAAMI,SAAWJ,EAAMK,QAAUL,EAAMM,kBACpDN,EAAMI,OAASJ,EAAMK,OAAS,KAC9BL,EAAMM,gBAAgB,EAAGN,GACzB9N,EAAIA,EAAEgC,KAAK8L,GAAU9N,EAAI,CAAC8N,IAE3B7S,EAAIA,EAAE2E,kBAEAI,EAmOS6N,CAAmBxR,GAEnCgS,EADM1D,EAAUtO,GACFqP,EAAYC,EAC1BL,EAAYF,GAAe/O,EAASgP,GACpCiD,EAAKD,EAAM,GAAGE,wBACdpB,EAAKkB,EAAM,GAAGE,wBACdC,EAAKH,EAAM,GAAGE,wBACd3C,EAASN,EAAU1L,WACnB6O,GAAWd,GAlND,SAAXe,SAAWrS,SACsC,UAA5CsN,EAAK4C,iBAAiBlQ,GAASmO,YAGnCnO,EAAUA,EAAQuD,aACkB,IAArBvD,EAAQsS,SACfD,SAASrS,WA4MkBqS,CAASrS,GAC5CmL,EAAI,IAAIsC,GACNqD,EAAGN,KAAOyB,EAAGzB,MAAQ,KACrBM,EAAGP,IAAM0B,EAAG1B,KAAO,KACnB4B,EAAG3B,KAAOyB,EAAGzB,MAAQ,KACrB2B,EAAG5B,IAAM0B,EAAG1B,KAAO,IACpB0B,EAAGzB,MAAQ4B,EAAU,EA1NH,SAApBG,2BAA0BjF,EAAKkF,aAAe7E,EAAK0C,YAAc3C,EAAY2C,YAAcxC,EAAMwC,YAAc,EA0NpFkC,IACzBN,EAAG1B,KAAO6B,EAAU,EA5NH,SAAnBK,0BAAyBnF,EAAKoF,aAAgB/E,EAAK2C,WAAa5C,EAAY4C,WAAazC,EAAMyC,WAAa,EA4NlFmC,QAE1BlD,EAAO9L,YAAYwL,GACfsC,MACHU,EAAKV,EAAWvV,OACTiW,MACNnB,EAAKS,EAAWU,IACbJ,OAASf,EAAGgB,OAAS,EACxBhB,EAAGiB,gBAAgB,EAAGjB,UAGjBJ,EAAUvF,EAAEuF,UAAYvF,ECjSH,SAA5BwH,GAA6B9W,EAAS+W,EAAQC,EAAUC,WACnDxW,EAAIsW,EAAO5W,OACduJ,EAAc,IAATuN,EAAa,EAAIA,EACtBnX,EAAI,EAEEA,EAAIW,EAAGX,IACbE,EAAQ0J,GAAUwN,WAAWH,EAAOjX,GAAGkX,IAC9B,IAATC,IAAejX,EAAQ0J,EAAG,GAAK,GAC/BA,GAAM,SAEA1J,EAEM,SAAdmX,GAAeC,EAAQC,EAAMC,UAASJ,WAAWE,EAAOvB,MAAME,IAAIqB,EAAQC,EAAMC,GAAQ,QAAU,EACpF,SAAdC,GAAcvX,OAGZF,EAFGwE,EAAItE,EAAQ,GACf0D,EAAI1D,EAAQ,OAERF,EAAI,EAAGA,EAAIE,EAAQG,OAAQL,GAAG,EAClCwE,EAAKtE,EAAQF,IAAMwE,EACnBZ,EAAK1D,EAAQF,EAAE,IAAM4D,EAGH,SAApB8T,GAAqBC,EAAQzX,EAASoX,EAAQ9S,EAAGZ,EAAGgU,EAAQC,EAAMC,EAAOC,UAEvE7X,EADiB,UAAd2X,EAAKjS,KACE,CAAC1F,KAEU,IAArB2X,EAAKG,aAAyB9X,EAAQiR,QAAQkG,GAAYC,EAAQ9S,EAAGsT,GAAQlU,EAAIyT,GAAYC,EAAQ1T,EAAGmU,GAAS,GACjHF,EAAKI,UAAYR,GAAYvX,GAEnB,EADM0D,EAAI0M,gBAAkBF,qBACjBlQ,EAAS2X,EAAKxH,aAEpCnQ,EAAU0X,EAAOM,GAAOhY,EAASoX,EAAQO,IACzCM,GAAyBR,EAAQL,EAAQ9S,EAAGtE,EAAS,IAAK4X,GAC1DlU,GAAKuU,GAAyBR,EAAQL,EAAQ1T,EAAG1D,EAAS,IAAK6X,GACxDjP,yBAAyB5I,EAAS2X,EAAK/U,aAAkC,IAAnB+U,EAAKxH,UAAkB,GAAK,KAE7E,SAAb+H,GAAaC,UAAKA,EAED,SAAjBC,GAAkBjU,EAASkU,EAAQC,OAEjC1F,EAAKtO,EAAGZ,EADL4L,EAAIkG,gBAAgBrR,SAEqB,SAAxCA,EAAQwB,QAAU,IAAIC,eAE1BtB,GADAsO,EAAMzO,EAAQoU,QAAQxE,SACdzP,EACRZ,EAAIkP,EAAIlP,EACRkP,EAAI7L,QAAU6L,EAAM,CAAC7L,OAAQ5C,EAAQhB,aAAa,SAAU6D,QAAS7C,EAAQhB,aAAa,cAE1FyP,EAAMyF,GAAUlU,EAAQ2B,SAAW3B,EAAQ2B,UAC3CxB,EAAIZ,EAAI,GAEL2U,GAAqB,SAAXA,IACb/T,GAAK+T,EAAOvO,KAAOuO,EAAO,IAAMzF,EAAMA,EAAI7L,MAAQ5C,EAAQqU,aAAe,GAAKH,EAAO/T,EACrFZ,GAAK2U,EAAOvO,KAAOuO,EAAO,IAAMzF,EAAMA,EAAI5L,OAAS7C,EAAQsU,cAAgB,GAAKJ,EAAO3U,GAEjF4U,EAAa/C,MAAOjR,GAAKZ,EAAI4L,EAAEiG,MAAM,CAACjR,EAAGA,EAAGZ,EAAGA,IAAM,CAACY,EAAGgL,EAAEvM,EAAGW,EAAG4L,EAAEwE,IAEzD,SAAlB4E,GAAmBC,EAAaC,EAAWC,EAAYC,OAKrDC,EAJGT,EAAe9C,gBAAgBmD,EAAYjR,YAAY,GAAM,GAChE4H,EAAIgJ,EAAajD,QAAQnB,SAASsB,gBAAgBoD,IAClDI,EAAYZ,GAAeO,EAAaE,EAAYP,KAC3CF,GAAeQ,EAAWE,EAAUR,GAA5ChU,IAAAA,EAAGZ,IAAAA,SAEL4L,EAAEvM,EAAIuM,EAAEwE,EAAI,EACK,SAAbgF,GAAuBF,EAAUK,gBAAsD,SAApCL,EAAUjT,QAAQC,gBACxEmT,EAAIH,EAAUzV,aAAa,KAAKmE,MAAM4R,KAAY,GAElD5U,IADAyU,EAAIzJ,EAAEiG,MAAM,CAACjR,GAAGyU,EAAE,GAAIrV,GAAGqV,EAAE,MACpBzU,EACPZ,GAAKqV,EAAErV,IAEJqV,GAAMH,EAAU9S,SAAW6S,EAAY7S,SAAW8S,EAAUlG,kBAAoBiG,EAAYjG,mBAE/FpO,IADAyU,EAAIzJ,EAAEiG,MAAMqD,EAAU9S,YACfxB,EACPZ,GAAKqV,EAAErV,GAER4L,EAAEvM,EAAIuB,EAAI0U,EAAU1U,EACpBgL,EAAEwE,EAAIpQ,EAAIsV,EAAUtV,EACb4L,EAjFT,IAGC6J,EAAMC,EAAWC,EAAUC,EAHxBC,EAAU,wCAAwC3S,MAAM,KAC3D4S,GAAU,sCAAsC5S,MAAM,KACtD7F,EAAWtB,KAAKuB,GAAK,IAwCrBkY,GAAU,sCAyCVlB,GAAS,SAATA,OAAUpY,EAASwX,SAKjBqC,EAAanK,EAAGyJ,EALUW,IAAAA,MAAOtF,IAAAA,OAAQuF,IAAAA,QAASC,IAAAA,QAASC,IAAAA,YACxDvV,EAAI1E,EAAQ,GAAG,GAClB8D,EAAI9D,EAAQ,GAAG,GACfka,EAAO3C,GAAYC,EAAQ,KAC3B2C,EAAO5C,GAAYC,EAAQ,YAEvBxX,GAAYA,EAAQO,QAGrBuZ,IACW,SAAVA,IAAsBD,EAAcH,EAASI,GAAO,IAAMtC,KAAYA,EACzEtL,iBAAiBlM,EAAS,EAAG,EAAG,EAAG,EAAGka,EAAOxV,EAAGyV,EAAOrW,IAEnDmW,IAAkC,IAAnBA,EAAY,GAC9BV,EAAKa,IAAI5C,EAAQ,CAAC6C,gBAAkC,IAAjBJ,EAAY,GAAY,KAAyB,IAAjBA,EAAY,GAAY,MAE3FA,EAAc,CAAC1C,GAAYC,EAAQ,aAAe,IAAKD,GAAYC,EAAQ,aAAe,KAG3F2B,GADAzJ,EAAIoJ,GAAgBtB,EAAQqC,EAAaI,EAAa,SAChDtE,MAAM,CAACjR,EAAGA,EAAGZ,EAAGA,IACtBoI,iBAAiBlM,EAAS0P,EAAExH,EAAGwH,EAAEvH,EAAGuH,EAAEtH,EAAGsH,EAAEvD,EAAG+N,EAAOxK,EAAEvM,GAAKgW,EAAEzU,EAAIgL,EAAEvM,GAAIgX,EAAOzK,EAAEwE,GAAKiF,EAAErV,EAAI4L,EAAEwE,MAG5FM,EACHtI,iBAAiBlM,EAASwU,EAAOtM,EAAGsM,EAAOrM,EAAGqM,EAAOpM,EAAGoM,EAAOrI,EAAGqI,EAAOrR,EAAGqR,EAAON,IACzE6F,GAAWC,IACrB9N,iBAAiBlM,EAAS,EAAG,EAAG,EAAG,EAAG+Z,GAAW,EAAGC,GAAW,GAEzDha,GArBCkD,WAAW,aAuBpBmV,GAA2B,SAA3BA,yBAA4BR,EAAQL,EAAQJ,EAAUpX,EAASsa,EAAcC,OACxEvE,EAAQwB,EAAOvB,MAClBuE,EAAUxE,EAAMwE,QAChBC,EAASD,GAAWA,EAAQE,SAAWF,EAAQE,QAAQtD,GACvDK,EAAOgD,GAASA,EAAM/T,QAAQ,KAAO,EAAI+T,EAAQrD,EACjDuD,EAAK9C,EAAO+C,IAAM,IAAIpB,EAAU3B,EAAO+C,IAAKpD,EAAQC,EAAM,EAAG,EAAGa,GAAY,EAAGtC,EAAMoE,IAAI5C,EAAQC,EAAMI,IACxG8C,EAAGE,EAAIpB,EAASzD,EAAMG,IAAIqB,EAAQC,EAAM8C,KAAe,EACvDI,EAAG9V,KAAO7E,EACV2a,EAAGG,GAAKR,EACRzC,EAAOkD,OAAO7Q,KAAKuN,IAKRuD,EAAmB,CAC/BC,QAAS,QACT5U,KAAM,aACN6U,2BAASC,EAAMC,EAAQC,GAEtB5B,GADAF,EAAO4B,GACSG,MAAMC,QACtB7B,EAAWH,EAAK+B,MAAME,QACtBhC,EAAY6B,GAEbI,mBAAKjE,EAAQO,OACPwB,SACJ5V,QAAQC,KAAK,iDACN,EAEe,iBAAVmU,IAAuBA,EAAKpG,OAAWoG,EAAKlT,OACxDkT,EAAO,CAAClT,KAAKkT,QAMb/X,EAASmZ,EAJNuC,EAAW,GACb7W,EAAwCkT,EAAxClT,KAAM8W,EAAkC5D,EAAlC4D,WAAY3D,EAAsBD,EAAtBC,MAAOC,EAAeF,EAAfE,MAAOvT,EAAQqT,EAARrT,EAAGZ,EAAKiU,EAALjU,EACpC8X,EAAW/W,EAAK,GAChBiT,EAvBe,SAAjB+D,eAAkBvT,EAAOC,UAAQ,SAAAvI,UAAYsI,GAAiB,IAARC,EAAaF,aAAarI,EAASsI,EAAOC,GAAOvI,GAuB5F6b,CAAe9D,EAAKzP,MAAQ,QAASyP,EAAQA,EAAKxP,IAAM,WAE7DmT,SAAWA,OACXlE,OAASA,GACTtC,KAAK4G,OAAUH,GAA6B,IAAfA,UAC5BI,QAAUzE,WAAWqE,IAAe,OACpCK,UAAYjE,EAAKkE,gBACjBC,MAAQnE,EAAKoE,UAAY,gBACzBC,KAAO5E,EAAOvB,MAAMmE,IAAI5C,EAAQtC,KAAKgH,MAAOhH,WAC5CmH,GAAK5C,EAASjC,EAAOvB,MAAME,IAAIqB,EAAQtC,KAAKgH,SAAW,IAEzDI,MAAMC,QAAQ1X,IAAW,WAAYA,GAA8B,iBAAd+W,EAkBxD5S,yBADAhJ,EAAU8X,EAAOM,GAAOlV,WAAW6U,EAAKlT,MAAO2S,EAAQO,IACrBA,EAAK/U,YACvC0Y,EAASxR,KAAKlK,GACdqY,GAAyBnD,KAAMsC,EAAQO,EAAKrT,GAAK,IAAK1E,EAAS,IAAK+X,EAAKC,OAAS,MAClFK,GAAyBnD,KAAMsC,EAAQO,EAAKjU,GAAK,IAAK9D,EAAS,IAAK+X,EAAKE,OAAS,UArBF,KAC3EkB,KAAKyC,GACJlX,IAAMiV,EAAQjT,QAAQyS,GAC1BzU,EAAIyU,GACOrV,IAAM8V,GAAQlT,QAAQyS,KACjCrV,EAAIqV,OAQDA,KALDzU,GAAKZ,EACR4X,EAASxR,KAAK0N,GAAkB1C,KAAMgC,GAA0BA,GAA0B,GAAIrS,EAAMH,EAAG,GAAIG,EAAMf,EAAG,GAAI0T,EAAQ9S,EAAGZ,EAAGgU,EAAQC,EAAMC,GAASyB,EAAS5U,EAAK,GAAGH,IAAKuT,GAASwB,EAAS5U,EAAK,GAAGf,MAE7MY,EAAIZ,EAAI,EAEC8X,EACTzC,IAAMzU,GAAKyU,IAAMrV,GAAK4X,EAASxR,KAAK0N,GAAkB1C,KAAMgC,GAA0B,GAAIrS,EAAMsU,EAAG,GAAI3B,EAAQ2B,EAAG,EAAGrB,EAAQC,EAAM0B,EAAS5U,EAAK,GAAGsU,QAUvJqD,uBAAOC,EAAOhY,OACTiX,EAAWjX,EAAKiX,SACnBxb,EAAIwb,EAASnb,OACboa,EAAKlW,EAAKmW,QACC,EAAR6B,EACHA,EAAQ,EACEA,EAAQ,IAClBA,EAAQ,GAEFvc,KACN4L,kBAAkB4P,EAASxb,GAAIuc,GAAQvc,GAAKuE,EAAKqX,OAAQJ,EAASxb,SAE5Dya,GACNA,EAAGP,IAAIO,EAAGxa,EAAGwa,EAAGxB,EAAGwB,EAAG9V,KAAK8V,EAAGG,IAAMH,EAAGE,EAAGF,EAAGxO,EAAGsQ,GAChD9B,EAAKA,EAAG+B,MAETjY,EAAKqX,QAAUrX,EAAK2X,KAAK3X,EAAK+S,OAAQ/S,EAAKyX,MAAOR,EAAS,GAAGzR,OAASxF,EAAKuX,QAAU7a,EAAW,GAAKsD,EAAKsX,QAAUtX,EAAK4X,GAAI5X,EAAMgY,IAErIE,6BAAU9X,UACFmE,yBAAyB9F,WAAW2B,IAAOhC,aAEnDwF,aAAAA,aACAnF,WAAAA,WACAsN,gBAAAA,gBACA9M,gBAAAA,gBACAkE,gBAAAA,gBACAsE,iBAAAA,iBACA0J,gBAAAA,gBACA9J,kBAAAA,kBACA9C,yBAAAA,yBACA1E,cAAe,yBAACsY,EAASpY,UAASkV,EAASkD,GAASC,IAAI,SAAArF,UAAUlT,cAAckT,GAAiB,IAAThT,MACxFsY,+CAAmB/D,EAAaC,EAAWhN,OACtC0D,EAAIkG,gBAAgBoD,GAAW,GAAM,GAAM1E,SAASsB,gBAAgBmD,WACjE/M,EAAQ0D,EAAEiG,MAAM3J,GAAS0D,GAEjCqN,eAAgBjE,GAChBkE,iDAAoBjE,EAAaC,EAAWC,EAAYC,OACnDxJ,EAAGoJ,GAAgBC,EAAaC,EAAWC,EAAYC,SACpD,CAACxU,EAAGgL,EAAEvM,EAAGW,EAAG4L,EAAEwE,IAEtB+I,uCAAetd,EAAOoY,OAEjB3X,EAAU8W,GAA0BA,GAA0B,GAAIvX,GADtEoY,EAAOA,GAAQ,IACmErT,GAAK,IAAK,GAAI/E,EAAOoY,EAAKjU,GAAK,IAAK,UACtHiU,EAAKI,UAAYR,GAAYvX,GACtB,CAAgB,UAAd2X,EAAKjS,KAAoB1F,EAAUoQ,gBAAgBpQ,EAAS2X,EAAKxH,eA9NhE,SAAX2M,kBAAiB3D,GAA4B,oBAAZzH,SAA4ByH,EAAOzH,OAAOyH,OAASA,EAAK4D,gBAAkB5D,EAkO5G2D,IAAc3D,EAAK4D,eAAenC"}
lib/scroll_to/ScrollToPlugin.min.js ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * ScrollToPlugin 3.6.1
3
+ * https://greensock.com
4
+ *
5
+ * @license Copyright 2021, GreenSock. All rights reserved.
6
+ * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership.
7
+ * @author: Jack Doyle, jack@greensock.com
8
+ */
9
+
10
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).window=t.window||{})}(this,function(e){"use strict";function k(){return"undefined"!=typeof window}function l(){return i||k()&&(i=window.gsap)&&i.registerPlugin&&i}function m(t){return"string"==typeof t}function n(t){return"function"==typeof t}function o(t,e){var o="x"===e?"Width":"Height",n="scroll"+o,r="client"+o;return t===x||t===u||t===c?Math.max(u[n],c[n])-(x["inner"+o]||u[r]||c[r]):t[n]-t["offset"+o]}function p(t,e){var o="scroll"+("x"===e?"Left":"Top");return t===x&&(null!=t.pageXOffset?o="page"+e.toUpperCase()+"Offset":t=null!=u[o]?u:c),function(){return t[o]}}function r(t,e){if(!(t=a(t)[0])||!t.getBoundingClientRect)return console.warn("scrollTo target doesn't exist. Using 0")||{x:0,y:0};var o=t.getBoundingClientRect(),n=!e||e===x||e===c,r=n?{top:u.clientTop-(x.pageYOffset||u.scrollTop||c.scrollTop||0),left:u.clientLeft-(x.pageXOffset||u.scrollLeft||c.scrollLeft||0)}:e.getBoundingClientRect(),i={x:o.left-r.left,y:o.top-r.top};return!n&&e&&(i.x+=p(e,"x")(),i.y+=p(e,"y")()),i}function s(t,e,n,i,l){return isNaN(t)||"object"==typeof t?m(t)&&"="===t.charAt(1)?parseFloat(t.substr(2))*("-"===t.charAt(0)?-1:1)+i-l:"max"===t?o(e,n)-l:Math.min(o(e,n),r(t,e)[n]-l):parseFloat(t)-l}function t(){i=l(),k()&&i&&document.body&&(x=window,c=document.body,u=document.documentElement,a=i.utils.toArray,i.config({autoKillThreshold:7}),g=i.config(),f=1)}var i,f,x,u,c,a,g,y={version:"3.6.1",name:"scrollTo",rawVars:1,register:function register(e){i=e,t()},init:function init(e,o,r,i,l){f||t();var u=this;u.isWin=e===x,u.target=e,u.tween=r,o=function _clean(t,e,o,r){if(n(t)&&(t=t(e,o,r)),"object"!=typeof t)return m(t)&&"max"!==t&&"="!==t.charAt(1)?{x:t,y:t}:{y:t};if(t.nodeType)return{y:t,x:t};var i,l={};for(i in t)l[i]="onAutoKill"!==i&&n(t[i])?t[i](e,o,r):t[i];return l}(o,i,e,l),u.vars=o,u.autoKill=!!o.autoKill,u.getX=p(e,"x"),u.getY=p(e,"y"),u.x=u.xPrev=u.getX(),u.y=u.yPrev=u.getY(),null!=o.x?(u.add(u,"x",u.x,s(o.x,e,"x",u.x,o.offsetX||0),i,l),u._props.push("scrollTo_x")):u.skipX=1,null!=o.y?(u.add(u,"y",u.y,s(o.y,e,"y",u.y,o.offsetY||0),i,l),u._props.push("scrollTo_y")):u.skipY=1},render:function render(t,e){for(var n,r,i,l,s,u=e._pt,f=e.target,p=e.tween,c=e.autoKill,a=e.xPrev,y=e.yPrev,d=e.isWin;u;)u.r(t,u.d),u=u._next;n=d||!e.skipX?e.getX():a,i=(r=d||!e.skipY?e.getY():y)-y,l=n-a,s=g.autoKillThreshold,e.x<0&&(e.x=0),e.y<0&&(e.y=0),c&&(!e.skipX&&(s<l||l<-s)&&n<o(f,"x")&&(e.skipX=1),!e.skipY&&(s<i||i<-s)&&r<o(f,"y")&&(e.skipY=1),e.skipX&&e.skipY&&(p.kill(),e.vars.onAutoKill&&e.vars.onAutoKill.apply(p,e.vars.onAutoKillParams||[]))),d?x.scrollTo(e.skipX?n:e.x,e.skipY?r:e.y):(e.skipY||(f.scrollTop=e.y),e.skipX||(f.scrollLeft=e.x)),e.xPrev=e.x,e.yPrev=e.y},kill:function kill(t){var e="scrollTo"===t;!e&&"scrollTo_x"!==t||(this.skipX=1),!e&&"scrollTo_y"!==t||(this.skipY=1)}};y.max=o,y.getOffset=r,y.buildGetter=p,l()&&i.registerPlugin(y),e.ScrollToPlugin=y,e.default=y;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});
11
+
lib/scrolltrigger/ScrollTrigger.min.js ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * ScrollTrigger 3.7.1
3
+ * https://greensock.com
4
+ *
5
+ * @license Copyright 2021, GreenSock. All rights reserved.
6
+ * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership.
7
+ * @author: Jack Doyle, jack@greensock.com
8
+ */
9
+
10
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function J(e){return e}function K(e){return Math.round(1e5*e)/1e5||0}function L(){return"undefined"!=typeof window}function M(){return Se||L()&&(Se=window.gsap)&&Se.registerPlugin&&Se}function N(e){return!!~o.indexOf(e)}function O(e,t){return~Fe.indexOf(e)&&Fe[Fe.indexOf(e)+1][t]}function P(t,e){var r=e.s,n=e.sc,o=v.indexOf(t),i=n===ot.sc?1:2;return~o||(o=v.push(t)-1),v[o+i]||(v[o+i]=O(t,r)||(N(t)?n:function(e){return arguments.length?t[r]=e:t[r]}))}function Q(e){return O(e,"getBoundingClientRect")||(N(e)?function(){return pt.width=Me.innerWidth,pt.height=Me.innerHeight,pt}:function(){return it(e)})}function T(e,t){var r=t.s,n=t.d2,o=t.d,i=t.a;return(r="scroll"+n)&&(i=O(e,r))?i()-Q(e)()[o]:N(e)?Math.max(_e[r],Pe[r])-(Me["inner"+n]||_e["client"+n]||Pe["client"+n]):e[r]-e["offset"+n]}function U(e,t){for(var r=0;r<d.length;r+=3)t&&!~t.indexOf(d[r+1])||e(d[r],d[r+1],d[r+2])}function V(e){return"string"==typeof e}function W(e){return"function"==typeof e}function X(e){return"number"==typeof e}function Y(e){return"object"==typeof e}function Z(e){return W(e)&&e()}function $(r,n){return function(){var e=Z(r),t=Z(n);return function(){Z(e),Z(t)}}}function ta(e){return Me.getComputedStyle(e)}function va(e,t){for(var r in t)r in e||(e[r]=t[r]);return e}function xa(e,t){var r=t.d2;return e["offset"+r]||e["client"+r]||0}function ya(e){var t,r=[],n=e.labels,o=e.duration();for(t in n)r.push(n[t]/o);return r}function Ba(t,r,e,n){return e.split(",").forEach(function(e){return t(r,e,n)})}function Ca(e,t,r){return e.addEventListener(t,r,{passive:!0})}function Da(e,t,r){return e.removeEventListener(t,r)}function Ha(e,t){if(V(e)){var r=e.indexOf("="),n=~r?(e.charAt(r-1)+1)*parseFloat(e.substr(r+1)):0;~r&&(e.indexOf("%")>r&&(n*=t/100),e=e.substr(0,r-1)),e=n+(e in C?C[e]*t:~e.indexOf("%")?parseFloat(e)*t/100:parseFloat(e)||0)}return e}function Ia(e,t,r,n,o,i,a){var s=o.startColor,l=o.endColor,c=o.fontSize,u=o.indent,f=o.fontWeight,p=ke.createElement("div"),d=N(r)||"fixed"===O(r,"pinType"),g=-1!==e.indexOf("scroller"),h=d?Pe:r,v=-1!==e.indexOf("start"),m=v?s:l,b="border-color:"+m+";font-size:"+c+";color:"+m+";font-weight:"+f+";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;";return b+="position:"+(g&&d?"fixed;":"absolute;"),!g&&d||(b+=(n===ot?x:y)+":"+(i+parseFloat(u))+"px;"),a&&(b+="box-sizing:border-box;text-align:left;width:"+a.offsetWidth+"px;"),p._isStart=v,p.setAttribute("class","gsap-marker-"+e),p.style.cssText=b,p.innerText=t||0===t?e+"-"+t:e,h.children[0]?h.insertBefore(p,h.children[0]):h.appendChild(p),p._offset=p["offset"+n.op.d2],S(p,0,n,v),p}function Ma(){return l=l||s(F)}function Na(){l||(l=s(F),je||A("scrollStart"),je=He())}function Oa(){return!Be&&!r&&!ke.fullscreenElement&&a.restart(!0)}function Ua(e){var t,r=Se.ticker.frame,n=[],o=0;if(g!==r||De){for(R();o<E.length;o+=4)(t=Me.matchMedia(E[o]).matches)!==E[o+3]&&((E[o+3]=t)?n.push(o):R(1,E[o])||W(E[o+2])&&E[o+2]());for(I(),o=0;o<n.length;o++)t=n[o],Ve=E[t],E[t+2]=E[t+1](e);Ve=0,i&&z(0,1),g=r,A("matchMedia")}}function Va(){return Da(ee,"scrollEnd",Va)||z(!0)}function gb(e,t,r,n){if(e.parentNode!==t){for(var o,i=H.length,a=t.style,s=e.style;i--;)a[o=H[i]]=r[o];a.position="absolute"===r.position?"absolute":"relative","inline"===r.display&&(a.display="inline-block"),s[y]=s[x]="auto",a.overflow="visible",a.boxSizing="border-box",a[Xe]=xa(e,nt)+rt,a[Ze]=xa(e,ot)+rt,a[Ge]=s[et]=s.top=s[b]="0",ft(n),s[Xe]=s.maxWidth=r[Xe],s[Ze]=s.maxHeight=r[Ze],s[Ge]=r[Ge],e.parentNode.insertBefore(t,e),t.appendChild(e)}}function jb(e){for(var t=j.length,r=e.style,n=[],o=0;o<t;o++)n.push(j[o],r[j[o]]);return n.t=e,n}function mb(e,t,r,n,o,i,a,s,l,c,u,f){if(W(e)&&(e=e(s)),V(e)&&"max"===e.substr(0,3)&&(e=f+("="===e.charAt(4)?Ha("0"+e.substr(3),r):0)),X(e))a&&S(a,r,n,!0);else{W(t)&&(t=t(s));var p,d,g,h=Ee(t)[0]||Pe,v=it(h)||{},m=e.split(" ");v&&(v.left||v.top)||"none"!==ta(h).display||(g=h.style.display,h.style.display="block",v=it(h),g?h.style.display=g:h.style.removeProperty("display")),p=Ha(m[0],v[n.d]),d=Ha(m[1]||"0",r),e=v[n.p]-l[n.p]-c+p+o-d,a&&S(a,d,n,r-d<20||a._isStart&&20<d),r-=r-d}if(i){var b=e+r,x=i._isStart;f="scroll"+n.d2,S(i,b,n,x&&20<b||!x&&(u?Math.max(Pe[f],_e[f]):i.parentNode[f])<=b+1),u&&(l=it(a),u&&(i.style[n.op.p]=l[n.op.p]-n.op.m-i._offset+rt))}return Math.round(e)}function ob(e,t,r,n){if(e.parentNode!==t){var o,i,a=e.style;if(t===Pe){for(o in e._stOrig=a.cssText,i=ta(e))+o||G.test(o)||!i[o]||"string"!=typeof a[o]||"0"===o||(a[o]=i[o]);a.top=r,a.left=n}else a.cssText=e._stOrig;Se.core.getCache(e).uncache=1,t.appendChild(e)}}function pb(l,e){function Ye(e,t,r,n,o){var i=Ye.tween,a=t.onComplete,s={};return i&&i.kill(),c=Math.round(r),t[p]=e,(t.modifiers=s)[p]=function(e){return(e=K(f()))!==c&&e!==u&&2<Math.abs(e-c)?(i.kill(),Ye.tween=0):e=r+n*i.ratio+o*i.ratio*i.ratio,u=c,c=K(e)},t.onComplete=function(){Ye.tween=0,a&&a.call(i)},i=Ye.tween=Se.to(l,t)}var c,u,f=P(l,e),p="_scroll"+e.p2;return l[p]=f,l.addEventListener("wheel",function(){return Ye.tween&&Ye.tween.kill()&&(Ye.tween=0)},{passive:!0}),Ye}var Se,i,Me,ke,_e,Pe,o,a,s,l,Ee,Ne,Ae,c,Be,Ie,u,Le,f,p,d,Re,ze,r,We,Ve,g,h,De=1,Fe=[],v=[],He=Date.now,m=He(),je=0,Ue=1,Je=Math.abs,t="scrollLeft",n="scrollTop",b="left",x="right",y="bottom",Xe="width",Ze="height",qe="Right",$e="Left",Ke="Top",Qe="Bottom",Ge="padding",et="margin",tt="Width",w="Height",rt="px",nt={s:t,p:b,p2:$e,os:x,os2:qe,d:Xe,d2:tt,a:"x",sc:function sc(e){return arguments.length?Me.scrollTo(e,ot.sc()):Me.pageXOffset||ke[t]||_e[t]||Pe[t]||0}},ot={s:n,p:"top",p2:Ke,os:y,os2:Qe,d:Ze,d2:w,a:"y",op:nt,sc:function sc(e){return arguments.length?Me.scrollTo(nt.sc(),e):Me.pageYOffset||ke[n]||_e[n]||Pe[n]||0}},it=function _getBounds(e,t){var r=t&&"matrix(1, 0, 0, 1, 0, 0)"!==ta(e)[u]&&Se.to(e,{x:0,y:0,xPercent:0,yPercent:0,rotation:0,rotationX:0,rotationY:0,scale:1,skewX:0,skewY:0}).progress(1),n=e.getBoundingClientRect();return r&&r.progress(0).kill(),n},at={startColor:"green",endColor:"red",indent:0,fontSize:"16px",fontWeight:"normal"},st={toggleActions:"play",anticipatePin:0},C={top:0,left:0,center:.5,bottom:1,right:1},S=function _positionMarker(e,t,r,n){var o={display:"block"},i=r[n?"os2":"p2"],a=r[n?"p2":"os2"];e._isFlipped=n,o[r.a+"Percent"]=n?-100:0,o[r.a]=n?"1px":0,o["border"+i+tt]=1,o["border"+a+tt]=0,o[r.p]=t+"px",Se.set(e,o)},lt=[],ct={},k={},_=[],E=[],A=function _dispatch(e){return k[e]&&k[e].map(function(e){return e()})||_},B=[],I=function _revertRecorded(e){for(var t=0;t<B.length;t+=5)e&&B[t+4]!==e||(B[t].style.cssText=B[t+1],B[t].getBBox&&B[t].setAttribute("transform",B[t+2]||""),B[t+3].uncache=1)},R=function _revertAll(e,t){var r;for(Le=0;Le<lt.length;Le++)r=lt[Le],t&&r.media!==t||(e?r.kill(1):r.revert());t&&I(t),t||A("revert")},z=function _refreshAll(e,t){if(!je||e){h=!0;var r=A("refreshInit");Re&&ee.sort(),t||R(),lt.forEach(function(e){return e.refresh()}),r.forEach(function(e){return e&&e.render&&e.render(-1)}),v.forEach(function(e){return"function"==typeof e&&(e.rec=0)}),a.pause(),h=!1,A("refresh")}else Ca(ee,"scrollEnd",Va)},D=0,ut=1,F=function _updateAll(){if(!h){var e=lt.length,t=He(),r=50<=t-m,n=e&&lt[0].scroll();if(ut=n<D?-1:1,D=n,r&&(je&&!Ie&&200<t-je&&(je=0,A("scrollEnd")),Ae=m,m=t),ut<0){for(Le=e;0<Le--;)lt[Le]&&lt[Le].update(0,r);ut=1}else for(Le=0;Le<e;Le++)lt[Le]&&lt[Le].update(0,r);l=0}},H=[b,"top",y,x,et+Qe,et+qe,et+Ke,et+$e,"display","flexShrink","float","zIndex","grid-column-start","grid-column-end","grid-row-start","grid-row-end","grid-area","justify-self","align-self","place-self"],j=H.concat([Xe,Ze,"boxSizing","max"+tt,"max"+w,"position",et,Ge,Ge+Ke,Ge+qe,Ge+Qe,Ge+$e]),q=/([A-Z])/g,ft=function _setState(e){if(e){var t,r,n=e.t.style,o=e.length,i=0;for((e.t._gsap||Se.core.getCache(e.t)).uncache=1;i<o;i+=2)r=e[i+1],t=e[i],r?n[t]=r:n[t]&&n.removeProperty(t.replace(q,"-$1").toLowerCase())}},pt={left:0,top:0},G=/(?:webkit|moz|length|cssText|inset)/i;nt.op=ot;var ee=(ScrollTrigger.prototype.init=function init(S,M){if(this.progress=this.start=0,this.vars&&this.kill(1),Ue){var d,n,f,k,_,E,A,B,I,L,R,e,z,D,F,H,j,t,U,g,Z,q,h,$,v,m,r,b,x,K,o,p,y,G,ee,te,re=(S=va(V(S)||X(S)||S.nodeType?{trigger:S}:S,st)).horizontal?nt:ot,w=S.onUpdate,C=S.toggleClass,i=S.id,ne=S.onToggle,oe=S.onRefresh,a=S.scrub,ie=S.trigger,ae=S.pin,se=S.pinSpacing,le=S.invalidateOnRefresh,ce=S.anticipatePin,s=S.onScrubComplete,ue=S.onSnapComplete,fe=S.once,pe=S.snap,de=S.pinReparent,ge=!a&&0!==a,he=Ee(S.scroller||Me)[0],l=Se.core.getCache(he),ve=N(he),me="pinType"in S?"fixed"===S.pinType:ve||"fixed"===O(he,"pinType"),be=[S.onEnter,S.onLeave,S.onEnterBack,S.onLeaveBack],xe=ge&&S.toggleActions.split(" "),c="markers"in S?S.markers:st.markers,ye=ve?0:parseFloat(ta(he)["border"+re.p2+tt])||0,we=this,u=S.onRefreshInit&&function(){return S.onRefreshInit(we)},Ce=function _getSizeFunc(e,t,r){var n=r.d,o=r.d2,i=r.a;return(i=O(e,"getBoundingClientRect"))?function(){return i()[n]}:function(){return(t?Me["inner"+o]:e["client"+o])||0}}(he,ve,re),Te=function _getOffsetsFunc(e,t){return!t||~Fe.indexOf(e)?Q(e):function(){return pt}}(he,ve),Oe=0;we.media=Ve,ce*=45,we.scroller=he,we.scroll=P(he,re),k=we.scroll(),we.vars=S,M=M||S.animation,"refreshPriority"in S&&(Re=1),l.tweenScroll=l.tweenScroll||{top:pb(he,ot),left:pb(he,nt)},we.tweenTo=d=l.tweenScroll[re.p],M&&(M.vars.lazy=!1,M._initted||!1!==M.vars.immediateRender&&!1!==S.immediateRender&&M.render(0,!0,!0),we.animation=M.pause(),M.scrollTrigger=we,(o=X(a)&&a)&&(K=Se.to(M,{ease:"power3",duration:o,onComplete:function onComplete(){return s&&s(we)}})),b=0,i=i||M.vars.id),lt.push(we),pe&&(Y(pe)&&!pe.push||(pe={snapTo:pe}),"scrollBehavior"in Pe.style&&Se.set(ve?[Pe,_e]:he,{scrollBehavior:"auto"}),f=W(pe.snapTo)?pe.snapTo:"labels"===pe.snapTo?function _getClosestLabel(t){return function(e){return Se.utils.snap(ya(t),e)}}(M):"labelsDirectional"===pe.snapTo?function _getLabelAtDirection(o){return function(e,t){var r,n=ya(o);if(n.sort(function(e,t){return e-t}),0<t.direction){for(e-=1e-4,r=0;r<n.length;r++)if(n[r]>=e)return n[r];return n.pop()}for(r=n.length,e+=1e-4;r--;)if(n[r]<=e)return n[r];return n[0]}}(M):Se.utils.snap(pe.snapTo),p=pe.duration||{min:.1,max:2},p=Y(p)?Ne(p.min,p.max):Ne(p,p),y=Se.delayedCall(pe.delay||o/2||.1,function(){if(Math.abs(we.getVelocity())<10&&!Ie&&Oe!==we.scroll()){var e=M&&!ge?M.totalProgress():we.progress,t=(e-x)/(He()-Ae)*1e3||0,r=Se.utils.clamp(-we.progress,1-we.progress,Je(t/2)*t/.185),n=we.progress+(!1===pe.inertia?0:r),o=Ne(0,1,f(n,we)),i=we.scroll(),a=Math.round(E+o*z),s=pe.onStart,l=pe.onInterrupt,c=pe.onComplete,u=d.tween;if(i<=A&&E<=i&&a!==i){if(u&&!u._initted&&u.data<=Math.abs(a-i))return;!1===pe.inertia&&(r=o-we.progress),d(a,{duration:p(Je(.185*Math.max(Je(n-e),Je(o-e))/t/.05||0)),ease:pe.ease||"power3",data:Math.abs(a-i),onInterrupt:function onInterrupt(){return y.restart(!0)&&l&&l(we)},onComplete:function onComplete(){Oe=we.scroll(),b=x=M&&!ge?M.totalProgress():we.progress,ue&&ue(we),c&&c(we)}},i,r*z,a-i-r*z),s&&s(we,d.tween)}}else we.isActive&&y.restart(!0)}).pause()),i&&(ct[i]=we),ie=we.trigger=Ee(ie||ae)[0],ae=!0===ae?ie:Ee(ae)[0],V(C)&&(C={targets:ie,className:C}),ae&&(!1===se||se===et||(se=!(!se&&"flex"===ta(ae.parentNode).display)&&Ge),we.pin=ae,!1!==S.force3D&&Se.set(ae,{force3D:!0}),(n=Se.core.getCache(ae)).spacer?D=n.pinState:(n.spacer=j=ke.createElement("div"),j.setAttribute("class","pin-spacer"+(i?" pin-spacer-"+i:"")),n.pinState=D=jb(ae)),we.spacer=j=n.spacer,r=ta(ae),h=r[se+re.os2],U=Se.getProperty(ae),g=Se.quickSetter(ae,re.a,rt),gb(ae,j,r),H=jb(ae)),c&&(e=Y(c)?va(c,at):at,L=Ia("scroller-start",i,he,re,e,0),R=Ia("scroller-end",i,he,re,e,0,L),t=L["offset"+re.op.d2],B=Ia("start",i,he,re,e,t),I=Ia("end",i,he,re,e,t),me||Fe.length&&!0===O(he,"fixedMarkers")||(function _makePositionable(e){var t=ta(e).position;e.style.position="absolute"===t||"fixed"===t?t:"relative"}(ve?Pe:he),Se.set([L,R],{force3D:!0}),v=Se.quickSetter(L,re.a,rt),m=Se.quickSetter(R,re.a,rt))),we.revert=function(e){var t=!1!==e||!we.enabled,r=Be;t!==we.isReverted&&(t&&(we.scroll.rec||(we.scroll.rec=we.scroll()),ee=Math.max(we.scroll(),we.scroll.rec||0),G=we.progress,te=M&&M.progress()),B&&[B,I,L,R].forEach(function(e){return e.style.display=t?"none":"block"}),t&&(Be=1),we.update(t),Be=r,ae&&(t?function _swapPinOut(e,t,r){if(ft(r),e.parentNode===t){var n=t.parentNode;n&&(n.insertBefore(e,t),n.removeChild(t))}}(ae,j,D):de&&we.isActive||gb(ae,j,ta(ae),$)),we.isReverted=t)},we.refresh=function(e,t){if(!Be&&we.enabled||t)if(ae&&e&&je)Ca(ScrollTrigger,"scrollEnd",Va);else{Be=1,K&&K.pause(),le&&M&&M.progress(0).invalidate(),we.isReverted||we.revert();for(var r,n,o,i,a,s,l,c,u,f,p=Ce(),d=Te(),g=T(he,re),h=0,v=0,m=S.end,b=S.endTrigger||ie,x=S.start||(0!==S.start&&ie?ae?"0 0":"0 100%":0),y=S.pinnedContainer&&Ee(S.pinnedContainer)[0],w=ie&&Math.max(0,lt.indexOf(we))||0,C=w;C--;)(s=lt[C]).end||s.refresh(0,1)||(Be=1),!(l=s.pin)||l!==ie&&l!==ae||s.isReverted||((f=f||[]).unshift(s),s.revert());for(E=mb(x,ie,p,re,we.scroll(),B,L,we,d,ye,me,g)||(ae?-.001:0),W(m)&&(m=m(we)),V(m)&&!m.indexOf("+=")&&(~m.indexOf(" ")?m=(V(x)?x.split(" ")[0]:"")+m:(h=Ha(m.substr(2),p),m=V(x)?x:E+h,b=ie)),A=Math.max(E,mb(m||(b?"100% 0":g),b,p,re,we.scroll()+h,I,R,we,d,ye,me,g))||-.001,z=A-E||(E-=.01)&&.001,h=0,C=w;C--;)(l=(s=lt[C]).pin)&&s.start-s._pinPush<E&&(r=s.end-s.start,l!==ie&&l!==y||(h+=r),l===ae&&(v+=r));if(E+=h,A+=h,we._pinPush=v,B&&h&&((r={})[re.a]="+="+h,y&&(r[re.p]="-="+we.scroll()),Se.set([B,I],r)),ae)r=ta(ae),i=re===ot,o=we.scroll(),Z=parseFloat(U(re.a))+v,!g&&1<A&&((ve?Pe:he).style["overflow-"+re.a]="scroll"),gb(ae,j,r),H=jb(ae),n=it(ae,!0),c=me&&P(he,i?nt:ot)(),se&&(($=[se+re.os2,z+v+rt]).t=j,(C=se===Ge?xa(ae,re)+z+v:0)&&$.push(re.d,C+rt),ft($),me&&we.scroll(ee)),me&&((a={top:n.top+(i?o-E:c)+rt,left:n.left+(i?c:o-E)+rt,boxSizing:"border-box",position:"fixed"})[Xe]=a.maxWidth=Math.ceil(n.width)+rt,a[Ze]=a.maxHeight=Math.ceil(n.height)+rt,a[et]=a[et+Ke]=a[et+qe]=a[et+Qe]=a[et+$e]="0",a[Ge]=r[Ge],a[Ge+Ke]=r[Ge+Ke],a[Ge+qe]=r[Ge+qe],a[Ge+Qe]=r[Ge+Qe],a[Ge+$e]=r[Ge+$e],F=function _copyState(e,t,r){for(var n,o=[],i=e.length,a=r?8:0;a<i;a+=2)n=e[a],o.push(n,n in t?t[n]:e[a+1]);return o.t=e.t,o}(D,a,de)),M?(u=M._initted,ze(1),M.render(M.duration(),!0,!0),q=U(re.a)-Z+z+v,z!==q&&F.splice(F.length-2,2),M.render(0,!0,!0),u||M.invalidate(),ze(0)):q=z;else if(ie&&we.scroll())for(n=ie.parentNode;n&&n!==Pe;)n._pinOffset&&(E-=n._pinOffset,A-=n._pinOffset),n=n.parentNode;f&&f.forEach(function(e){return e.revert(!1)}),we.start=E,we.end=A,(k=_=we.scroll())<ee&&we.scroll(ee),we.revert(!1),Be=0,M&&ge&&M._initted&&M.progress()!==te&&M.progress(te,!0).render(M.time(),!0,!0),G!==we.progress&&(K&&M.totalProgress(G,!0),we.progress=G,we.update()),ae&&se&&(j._pinOffset=Math.round(we.progress*q)),oe&&oe(we)}},we.getVelocity=function(){return(we.scroll()-_)/(He()-Ae)*1e3||0},we.update=function(e,t){var r,n,o,i,a,s=we.scroll(),l=e?0:(s-E)/z,c=l<0?0:1<l?1:l||0,u=we.progress;if(t&&(_=k,k=s,pe&&(x=b,b=M&&!ge?M.totalProgress():c)),ce&&!c&&ae&&!Be&&!De&&je&&E<s+(s-_)/(He()-Ae)*ce&&(c=1e-4),c!==u&&we.enabled){if(i=(a=(r=we.isActive=!!c&&c<1)!=(!!u&&u<1))||!!c!=!!u,we.direction=u<c?1:-1,we.progress=c,ge||(!K||Be||De?M&&M.totalProgress(c,!!Be):(K.vars.totalProgress=c,K.invalidate().restart())),ae)if(e&&se&&(j.style[se+re.os2]=h),me){if(i){if(o=!e&&u<c&&s<A+1&&s+1>=T(he,re),de)if(e||!r&&!o)ob(ae,j);else{var f=it(ae,!0),p=s-E;ob(ae,Pe,f.top+(re===ot?p:0)+rt,f.left+(re===ot?0:p)+rt)}ft(r||o?F:H),q!==z&&c<1&&r||g(Z+(1!==c||o?0:q))}}else g(Z+q*c);!pe||d.tween||Be||De||y.restart(!0),C&&(a||fe&&c&&(c<1||!We))&&Ee(C.targets).forEach(function(e){return e.classList[r||fe?"add":"remove"](C.className)}),!w||ge||e||w(we),i&&!Be?(n=c&&!u?0:1===c?1:1===u?2:3,ge&&(o=!a&&"none"!==xe[n+1]&&xe[n+1]||xe[n],M&&("complete"===o||"reset"===o||o in M)&&("complete"===o?M.pause().totalProgress(1):"reset"===o?M.restart(!0).pause():"restart"===o?M.restart(!0):M[o]()),w&&w(we)),!a&&We||(ne&&a&&ne(we),be[n]&&be[n](we),fe&&(1===c?we.kill(!1,1):be[n]=0),a||be[n=1===c?1:3]&&be[n](we))):ge&&w&&!Be&&w(we)}m&&(v(s+(L._isFlipped?1:0)),m(s))},we.enable=function(e,t){we.enabled||(we.enabled=!0,Ca(he,"resize",Oa),Ca(he,"scroll",Na),u&&Ca(ScrollTrigger,"refreshInit",u),!1!==e&&(we.progress=G=0,k=_=Oe=we.scroll()),!1!==t&&we.refresh())},we.getTween=function(e){return e&&d?d.tween:K},we.disable=function(e,t){if(we.enabled&&(!1!==e&&we.revert(),we.enabled=we.isActive=!1,t||K&&K.pause(),ee=0,n&&(n.uncache=1),u&&Da(ScrollTrigger,"refreshInit",u),y&&(y.pause(),d.tween&&d.tween.kill()&&(d.tween=0)),!ve)){for(var r=lt.length;r--;)if(lt[r].scroller===he&&lt[r]!==we)return;Da(he,"resize",Oa),Da(he,"scroll",Na)}},we.kill=function(e,t){we.disable(e,t),i&&delete ct[i];var r=lt.indexOf(we);lt.splice(r,1),r===Le&&0<ut&&Le--,r=0,lt.forEach(function(e){return e.scroller===we.scroller&&(r=1)}),r||(we.scroll.rec=0),M&&(M.scrollTrigger=null,e&&M.render(-1),t||M.kill()),B&&[B,I,L,R].forEach(function(e){return e.parentNode&&e.parentNode.removeChild(e)}),ae&&(n&&(n.uncache=1),r=0,lt.forEach(function(e){return e.pin===ae&&r++}),r||(n.spacer=0))},we.enable(!1,!1),M&&M.add&&!z?Se.delayedCall(.01,function(){return E||A||we.refresh()})&&(z=.01)&&(E=A=0):we.refresh()}else this.update=this.refresh=this.kill=J},ScrollTrigger.register=function register(e){if(!i&&(Se=e||M(),L()&&window.document&&(Me=window,ke=document,_e=ke.documentElement,Pe=ke.body),Se&&(Ee=Se.utils.toArray,Ne=Se.utils.clamp,ze=Se.core.suppressOverwrites||J,Se.core.globals("ScrollTrigger",ScrollTrigger),Pe))){s=Me.requestAnimationFrame||function(e){return setTimeout(e,16)},Ca(Me,"wheel",Na),o=[Me,ke,_e,Pe],Ca(ke,"scroll",Na);var t,r=Pe.style,n=r.borderTop;r.borderTop="1px solid #000",t=it(Pe),ot.m=Math.round(t.top+ot.sc())||0,nt.m=Math.round(t.left+nt.sc())||0,n?r.borderTop=n:r.removeProperty("border-top"),c=setInterval(Ma,200),Se.delayedCall(.5,function(){return De=0}),Ca(ke,"touchcancel",J),Ca(Pe,"touchstart",J),Ba(Ca,ke,"pointerdown,touchstart,mousedown",function(){return Ie=1}),Ba(Ca,ke,"pointerup,touchend,mouseup",function(){return Ie=0}),u=Se.utils.checkPrefix("transform"),j.push(u),i=He(),a=Se.delayedCall(.2,z).pause(),d=[ke,"visibilitychange",function(){var e=Me.innerWidth,t=Me.innerHeight;ke.hidden?(f=e,p=t):f===e&&p===t||Oa()},ke,"DOMContentLoaded",z,Me,"load",function(){return je||z()},Me,"resize",Oa],U(Ca)}return i},ScrollTrigger.defaults=function defaults(e){for(var t in e)st[t]=e[t]},ScrollTrigger.kill=function kill(){Ue=0,lt.slice(0).forEach(function(e){return e.kill(1)})},ScrollTrigger.config=function config(e){"limitCallbacks"in e&&(We=!!e.limitCallbacks);var t=e.syncInterval;t&&clearInterval(c)||(c=t)&&setInterval(Ma,t),"autoRefreshEvents"in e&&(U(Da)||U(Ca,e.autoRefreshEvents||"none"),r=-1===(e.autoRefreshEvents+"").indexOf("resize"))},ScrollTrigger.scrollerProxy=function scrollerProxy(e,t){var r=Ee(e)[0],n=v.indexOf(r),o=N(r);~n&&v.splice(n,o?6:2),o?Fe.unshift(Me,t,Pe,t,_e,t):Fe.unshift(r,t)},ScrollTrigger.matchMedia=function matchMedia(e){var t,r,n,o,i;for(r in e)n=E.indexOf(r),o=e[r],"all"===(Ve=r)?o():(t=Me.matchMedia(r))&&(t.matches&&(i=o()),~n?(E[n+1]=$(E[n+1],o),E[n+2]=$(E[n+2],i)):(n=E.length,E.push(r,o,i),t.addListener?t.addListener(Ua):t.addEventListener("change",Ua)),E[n+3]=t.matches),Ve=0;return E},ScrollTrigger.clearMatchMedia=function clearMatchMedia(e){e||(E.length=0),0<=(e=E.indexOf(e))&&E.splice(e,4)},ScrollTrigger);function ScrollTrigger(e,t){i||ScrollTrigger.register(Se)||console.warn("Please gsap.registerPlugin(ScrollTrigger)"),this.init(e,t)}ee.version="3.7.1",ee.saveStyles=function(e){return e?Ee(e).forEach(function(e){if(e&&e.style){var t=B.indexOf(e);0<=t&&B.splice(t,5),B.push(e,e.style.cssText,e.getBBox&&e.getAttribute("transform"),Se.core.getCache(e),Ve)}}):B},ee.revert=function(e,t){return R(!e,t)},ee.create=function(e,t){return new ee(e,t)},ee.refresh=function(e){return e?Oa():z(!0)},ee.update=F,ee.maxScroll=function(e,t){return T(e,t?nt:ot)},ee.getScrollFunc=function(e,t){return P(Ee(e)[0],t?nt:ot)},ee.getById=function(e){return ct[e]},ee.getAll=function(){return lt.slice(0)},ee.isScrolling=function(){return!!je},ee.addEventListener=function(e,t){var r=k[e]||(k[e]=[]);~r.indexOf(t)||r.push(t)},ee.removeEventListener=function(e,t){var r=k[e],n=r&&r.indexOf(t);0<=n&&r.splice(n,1)},ee.batch=function(e,t){function Ji(e,t){var r=[],n=[],o=Se.delayedCall(i,function(){t(r,n),r=[],n=[]}).pause();return function(e){r.length||o.restart(!0),r.push(e.trigger),n.push(e),a<=r.length&&o.progress(1)}}var r,n=[],o={},i=t.interval||.016,a=t.batchMax||1e9;for(r in t)o[r]="on"===r.substr(0,2)&&W(t[r])&&"onRefreshInit"!==r?Ji(0,t[r]):t[r];return W(a)&&(a=a(),Ca(ee,"refresh",function(){return a=t.batchMax()})),Ee(e).forEach(function(e){var t={};for(r in o)t[r]=o[r];t.trigger=e,n.push(ee.create(t))}),n},ee.sort=function(e){return lt.sort(e||function(e,t){return-1e6*(e.vars.refreshPriority||0)+e.start-(t.start+-1e6*(t.vars.refreshPriority||0))})},M()&&Se.registerPlugin(ee),e.ScrollTrigger=ee,e.default=ee;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});
11
+
lib/scrolltrigger/ScrollTrigger.min.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"file":"ScrollTrigger.min.js","sources":["../src/ScrollTrigger.js"],"sourcesContent":["/*!\n * ScrollTrigger 3.7.1\n * https://greensock.com\n *\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n/* eslint-disable */\n\nlet gsap, _coreInitted, _win, _doc, _docEl, _body, _root, _resizeDelay, _raf, _request, _toArray, _clamp, _time2, _syncInterval, _refreshing, _pointerIsDown, _transformProp, _i, _prevWidth, _prevHeight, _autoRefresh, _sort, _suppressOverwrites, _ignoreResize,\n\t_limitCallbacks, // if true, we'll only trigger callbacks if the active state toggles, so if you scroll immediately past both the start and end positions of a ScrollTrigger (thus inactive to inactive), neither its onEnter nor onLeave will be called. This is useful during startup.\n\t_startup = 1,\n\t_proxies = [],\n\t_scrollers = [],\n\t_getTime = Date.now,\n\t_time1 = _getTime(),\n\t_lastScrollTime = 0,\n\t_enabled = 1,\n\t_passThrough = v => v,\n\t_round = value => Math.round(value * 100000) / 100000 || 0,\n\t_windowExists = () => typeof(window) !== \"undefined\",\n\t_getGSAP = () => gsap || (_windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap),\n\t_isViewport = e => !!~_root.indexOf(e),\n\t_getProxyProp = (element, property) => ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property],\n\t_getScrollFunc = (element, {s, sc}) => { // we store the scroller functions in a alternating sequenced Array like [element, verticalScrollFunc, horizontalScrollFunc, ...] so that we can minimize memory, maximize performance, and we also record the last position as a \".rec\" property in order to revert to that after refreshing to ensure things don't shift around.\n\t\tlet i = _scrollers.indexOf(element),\n\t\t\toffset = sc === _vertical.sc ? 1 : 2;\n\t\t!~i && (i = _scrollers.push(element) - 1);\n\t\treturn _scrollers[i + offset] || (_scrollers[i + offset] = _getProxyProp(element, s) || (_isViewport(element) ? sc : function(value) { return arguments.length ? (element[s] = value) : element[s]; }));\n\t},\n\t_getBoundsFunc = element => _getProxyProp(element, \"getBoundingClientRect\") || (_isViewport(element) ? () => {_winOffsets.width = _win.innerWidth; _winOffsets.height = _win.innerHeight; return _winOffsets;} : () => _getBounds(element)),\n\t_getSizeFunc = (scroller, isViewport, {d, d2, a}) => (a = _getProxyProp(scroller, \"getBoundingClientRect\")) ? () => a()[d] : () => (isViewport ? _win[\"inner\" + d2] : scroller[\"client\" + d2]) || 0,\n\t_getOffsetsFunc = (element, isViewport) => !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : () => _winOffsets,\n\t_maxScroll = (element, {s, d2, d, a}) => (s = \"scroll\" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? Math.max(_docEl[s], _body[s]) - (_win[\"inner\" + d2] || _docEl[\"client\" + d2] || _body[\"client\" + d2]) : element[s] - element[\"offset\" + d2],\n\t_iterateAutoRefresh = (func, events) => {\n\t\tfor (let i = 0; i < _autoRefresh.length; i += 3) {\n\t\t\t(!events || ~events.indexOf(_autoRefresh[i+1])) && func(_autoRefresh[i], _autoRefresh[i+1], _autoRefresh[i+2]);\n\t\t}\n\t},\n\t_isString = value => typeof(value) === \"string\",\n\t_isFunction = value => typeof(value) === \"function\",\n\t_isNumber = value => typeof(value) === \"number\",\n\t_isObject = value => typeof(value) === \"object\",\n\t_callIfFunc = value => _isFunction(value) && value(),\n\t_combineFunc = (f1, f2) => () => {\n\t\tlet result1 = _callIfFunc(f1),\n\t\t\tresult2 = _callIfFunc(f2);\n\t\treturn () => {\n\t\t\t_callIfFunc(result1);\n\t\t\t_callIfFunc(result2);\n\t\t}\n\t},\n\t_abs = Math.abs,\n\t_scrollLeft = \"scrollLeft\",\n\t_scrollTop = \"scrollTop\",\n\t_left = \"left\",\n\t_top = \"top\",\n\t_right = \"right\",\n\t_bottom = \"bottom\",\n\t_width = \"width\",\n\t_height = \"height\",\n\t_Right = \"Right\",\n\t_Left = \"Left\",\n\t_Top = \"Top\",\n\t_Bottom = \"Bottom\",\n\t_padding = \"padding\",\n\t_margin = \"margin\",\n\t_Width = \"Width\",\n\t_Height = \"Height\",\n\t_px = \"px\",\n\t_horizontal = {s: _scrollLeft, p: _left, p2: _Left, os: _right, os2: _Right, d: _width, d2: _Width, a: \"x\", sc: function(value) { return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0}},\n\t_vertical = {s: _scrollTop, p: _top, p2: _Top, os: _bottom, os2: _Bottom, d: _height, d2: _Height, a: \"y\", op: _horizontal, sc: function(value) { return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0}},\n\t_getComputedStyle = element => _win.getComputedStyle(element),\n\t_makePositionable = element => { // if the element already has position: absolute or fixed, leave that, otherwise make it position: relative\n\t\tlet position = _getComputedStyle(element).position;\n\t\telement.style.position = (position === \"absolute\" || position === \"fixed\") ? position : \"relative\";\n\t},\n\t_setDefaults = (obj, defaults) => {\n\t\tfor (let p in defaults) {\n\t\t\t(p in obj) || (obj[p] = defaults[p]);\n\t\t}\n\t\treturn obj;\n\t},\n\t//_isInViewport = element => (element = _getBounds(element)) && !(element.top > (_win.innerHeight || _docEl.clientHeight) || element.bottom < 0 || element.left > (_win.innerWidth || _docEl.clientWidth) || element.right < 0) && element,\n\t_getBounds = (element, withoutTransforms) => {\n\t\tlet tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== \"matrix(1, 0, 0, 1, 0, 0)\" && gsap.to(element, {x: 0, y: 0, xPercent: 0, yPercent: 0, rotation: 0, rotationX: 0, rotationY: 0, scale: 1, skewX: 0, skewY: 0}).progress(1),\n\t\t\tbounds = element.getBoundingClientRect();\n\t\ttween && tween.progress(0).kill();\n\t\treturn bounds;\n\t},\n\t_getSize = (element, {d2}) => element[\"offset\" + d2] || element[\"client\" + d2] || 0,\n\t_getLabelRatioArray = timeline => {\n\t\tlet a = [],\n\t\t\tlabels = timeline.labels,\n\t\t\tduration = timeline.duration(),\n\t\t\tp;\n\t\tfor (p in labels) {\n\t\t\ta.push(labels[p] / duration);\n\t\t}\n\t\treturn a;\n\t},\n\t_getClosestLabel = animation => value => gsap.utils.snap(_getLabelRatioArray(animation), value),\n\t_getLabelAtDirection = timeline => {\n\t\treturn (value, st) => {\n\t\t\tlet a = _getLabelRatioArray(timeline),\n\t\t\t\ti;\n\t\t\ta.sort((a, b) => a - b);\n\t\t\tif (st.direction > 0) {\n\t\t\t\tvalue -= 1e-4; // to avoid rounding errors. If we're too strict, it might snap forward, then immediately again, and again.\n\t\t\t\tfor (i = 0; i < a.length; i++) {\n\t\t\t\t\tif (a[i] >= value) {\n\t\t\t\t\t\treturn a[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn a.pop();\n\t\t\t} else {\n\t\t\t\ti = a.length;\n\t\t\t\tvalue += 1e-4;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tif (a[i] <= value) {\n\t\t\t\t\t\treturn a[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn a[0];\n\t\t};\n\t},\n\t_multiListener = (func, element, types, callback) => types.split(\",\").forEach(type => func(element, type, callback)),\n\t_addListener = (element, type, func) => element.addEventListener(type, func, {passive: true}),\n\t_removeListener = (element, type, func) => element.removeEventListener(type, func),\n\t_markerDefaults = {startColor: \"green\", endColor: \"red\", indent: 0, fontSize: \"16px\", fontWeight:\"normal\"},\n\t_defaults = {toggleActions: \"play\", anticipatePin: 0},\n\t_keywords = {top: 0, left: 0, center: 0.5, bottom: 1, right: 1},\n\t_offsetToPx = (value, size) => {\n\t\tif (_isString(value)) {\n\t\t\tlet eqIndex = value.indexOf(\"=\"),\n\t\t\t\trelative = ~eqIndex ? +(value.charAt(eqIndex-1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;\n\t\t\tif (~eqIndex) {\n\t\t\t\t(value.indexOf(\"%\") > eqIndex) && (relative *= size / 100);\n\t\t\t\tvalue = value.substr(0, eqIndex-1);\n\t\t\t}\n\t\t\tvalue = relative + ((value in _keywords) ? _keywords[value] * size : ~value.indexOf(\"%\") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);\n\t\t}\n\t\treturn value;\n\t},\n\t_createMarker = (type, name, container, direction, {startColor, endColor, fontSize, indent, fontWeight}, offset, matchWidthEl) => {\n\t\tlet e = _doc.createElement(\"div\"),\n\t\t\tuseFixedPosition = _isViewport(container) || _getProxyProp(container, \"pinType\") === \"fixed\",\n\t\t\tisScroller = type.indexOf(\"scroller\") !== -1,\n\t\t\tparent = useFixedPosition ? _body : container,\n\t\t\tisStart = type.indexOf(\"start\") !== -1,\n\t\t\tcolor = isStart ? startColor : endColor,\n\t\t\tcss = \"border-color:\" + color + \";font-size:\" + fontSize + \";color:\" + color + \";font-weight:\" + fontWeight + \";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;\";\n\t\tcss += \"position:\" + (isScroller && useFixedPosition ? \"fixed;\" : \"absolute;\");\n\t\t(isScroller || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + \":\" + (offset + parseFloat(indent)) + \"px;\");\n\t\tmatchWidthEl && (css += \"box-sizing:border-box;text-align:left;width:\" + matchWidthEl.offsetWidth + \"px;\");\n\t\te._isStart = isStart;\n\t\te.setAttribute(\"class\", \"gsap-marker-\" + type);\n\t\te.style.cssText = css;\n\t\te.innerText = name || name === 0 ? type + \"-\" + name : type;\n\t\tparent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e);\n\t\te._offset = e[\"offset\" + direction.op.d2];\n\t\t_positionMarker(e, 0, direction, isStart);\n\t\treturn e;\n\t},\n\t_positionMarker = (marker, start, direction, flipped) => {\n\t\tlet vars = {display: \"block\"},\n\t\t\tside = direction[flipped ? \"os2\" : \"p2\"],\n\t\t\toppositeSide = direction[flipped ? \"p2\" : \"os2\"];\n\t\tmarker._isFlipped = flipped;\n\t\tvars[direction.a + \"Percent\"] = flipped ? -100 : 0;\n\t\tvars[direction.a] = flipped ? \"1px\" : 0;\n\t\tvars[\"border\" + side + _Width] = 1;\n\t\tvars[\"border\" + oppositeSide + _Width] = 0;\n\t\tvars[direction.p] = start + \"px\";\n\t\tgsap.set(marker, vars);\n\t},\n\t_triggers = [],\n\t_ids = {},\n\t_sync = () => _request || (_request = _raf(_updateAll)),\n\t_onScroll = () => {\n\t\tif (!_request) {\n\t\t\t_request = _raf(_updateAll);\n\t\t\t_lastScrollTime || _dispatch(\"scrollStart\");\n\t\t\t_lastScrollTime = _getTime();\n\t\t}\n\t},\n\t_onResize = () => !_refreshing && !_ignoreResize && !_doc.fullscreenElement && _resizeDelay.restart(true), // ignore resizes triggered by refresh()\n\t_listeners = {},\n\t_emptyArray = [],\n\t_media = [],\n\t_creatingMedia, // when ScrollTrigger.matchMedia() is called, we record the current media key here (like \"(min-width: 800px)\") so that we can assign it to everything that's created during that call. Then we can revert just those when necessary. In the ScrollTrigger's init() call, the _creatingMedia is recorded as a \"media\" property on the instance.\n\t_lastMediaTick,\n\t_onMediaChange = e => {\n\t\tlet tick = gsap.ticker.frame,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tindex;\n\t\tif (_lastMediaTick !== tick || _startup) {\n\t\t\t_revertAll();\n\t\t\tfor (; i < _media.length; i+=4) {\n\t\t\t\tindex = _win.matchMedia(_media[i]).matches;\n\t\t\t\tif (index !== _media[i+3]) { // note: some browsers fire the matchMedia event multiple times, like when going full screen, so we shouldn't call the function multiple times. Check to see if it's already matched.\n\t\t\t\t\t_media[i+3] = index;\n\t\t\t\t\tindex ? matches.push(i) : _revertAll(1, _media[i]) || (_isFunction(_media[i+2]) && _media[i+2]()); // Firefox doesn't update the \"matches\" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.\n\t\t\t\t}\n\t\t\t}\n\t\t\t_revertRecorded(); // in case killing/reverting any of the animations actually added inline styles back.\n\t\t\tfor (i = 0; i < matches.length; i++) {\n\t\t\t\tindex = matches[i];\n\t\t\t\t_creatingMedia = _media[index];\n\t\t\t\t_media[index+2] = _media[index+1](e);\n\t\t\t}\n\t\t\t_creatingMedia = 0;\n\t\t\t_coreInitted && _refreshAll(0, 1);\n\t\t\t_lastMediaTick = tick;\n\t\t\t_dispatch(\"matchMedia\");\n\t\t}\n\t},\n\t_softRefresh = () => _removeListener(ScrollTrigger, \"scrollEnd\", _softRefresh) || _refreshAll(true),\n\t_dispatch = type => (_listeners[type] && _listeners[type].map(f => f())) || _emptyArray,\n\t_savedStyles = [], // when ScrollTrigger.saveStyles() is called, the inline styles are recorded in this Array in a sequential format like [element, cssText, gsCache, media]. This keeps it very memory-efficient and fast to iterate through.\n\t_revertRecorded = media => {\n\t\tfor (let i = 0; i < _savedStyles.length; i+=5) {\n\t\t\tif (!media || _savedStyles[i+4] === media) {\n\t\t\t\t_savedStyles[i].style.cssText = _savedStyles[i+1];\n\t\t\t\t_savedStyles[i].getBBox && _savedStyles[i].setAttribute(\"transform\", _savedStyles[i+2] || \"\");\n\t\t\t\t_savedStyles[i+3].uncache = 1;\n\t\t\t}\n\t\t}\n\t},\n\t_revertAll = (kill, media) => {\n\t\tlet trigger;\n\t\tfor (_i = 0; _i < _triggers.length; _i++) {\n\t\t\ttrigger = _triggers[_i];\n\t\t\tif (!media || trigger.media === media) {\n\t\t\t\tif (kill) {\n\t\t\t\t\ttrigger.kill(1);\n\t\t\t\t} else {\n\t\t\t\t\ttrigger.revert();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tmedia && _revertRecorded(media);\n\t\tmedia || _dispatch(\"revert\");\n\t},\n\t_refreshingAll,\n\t_refreshAll = (force, skipRevert) => {\n\t\tif (_lastScrollTime && !force) {\n\t\t\t_addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\t\t\treturn;\n\t\t}\n\t\t_refreshingAll = true;\n\t\tlet refreshInits = _dispatch(\"refreshInit\");\n\t\t_sort && ScrollTrigger.sort();\n\t\tskipRevert || _revertAll();\n\t\t_triggers.forEach(t => t.refresh()) // don't loop with _i because during a refresh() someone could call ScrollTrigger.update() which would iterate through _i resulting in a skip.\n\t\trefreshInits.forEach(result => result && result.render && result.render(-1)); // if the onRefreshInit() returns an animation (typically a gsap.set()), revert it. This makes it easy to put things in a certain spot before refreshing for measurement purposes, and then put things back.\n\t\t_scrollers.forEach(obj => typeof(obj) === \"function\" && (obj.rec = 0)); // zero-out all the recorded scroll positions. Don't use _triggers because if, for example, .matchMedia() is used to create some ScrollTriggers and then the user resizes and it removes ALL ScrollTriggers, and then go back to a size where there are ScrollTriggers, it would have kept the position(s) saved from the initial state.\n\t\t_resizeDelay.pause();\n\t\t_refreshingAll = false;\n\t\t_dispatch(\"refresh\");\n\t},\n\t_lastScroll = 0,\n\t_direction = 1,\n\t_updateAll = () => {\n\t\tif (!_refreshingAll) {\n\t\t\tlet l = _triggers.length,\n\t\t\t\ttime = _getTime(),\n\t\t\t\trecordVelocity = time - _time1 >= 50,\n\t\t\t\tscroll = l && _triggers[0].scroll();\n\t\t\t_direction = _lastScroll > scroll ? -1 : 1;\n\t\t\t_lastScroll = scroll;\n\t\t\tif (recordVelocity) {\n\t\t\t\tif (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {\n\t\t\t\t\t_lastScrollTime = 0;\n\t\t\t\t\t_dispatch(\"scrollEnd\");\n\t\t\t\t}\n\t\t\t\t_time2 = _time1;\n\t\t\t\t_time1 = time;\n\t\t\t}\n\t\t\tif (_direction < 0) {\n\t\t\t\t_i = l;\n\t\t\t\twhile (_i-- > 0) {\n\t\t\t\t\t_triggers[_i] && _triggers[_i].update(0, recordVelocity);\n\t\t\t\t}\n\t\t\t\t_direction = 1;\n\t\t\t} else {\n\t\t\t\tfor (_i = 0; _i < l; _i++) {\n\t\t\t\t\t_triggers[_i] && _triggers[_i].update(0, recordVelocity);\n\t\t\t\t}\n\t\t\t}\n\t\t\t_request = 0;\n\t\t}\n\t},\n\t_propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, \"display\", \"flexShrink\", \"float\", \"zIndex\", \"grid-column-start\", \"grid-column-end\", \"grid-row-start\", \"grid-row-end\", \"grid-area\", \"justify-self\", \"align-self\", \"place-self\"],\n\t_stateProps = _propNamesToCopy.concat([_width, _height, \"boxSizing\", \"max\" + _Width, \"max\" + _Height, \"position\", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]),\n\t_swapPinOut = (pin, spacer, state) => {\n\t\t_setState(state);\n\t\tif (pin.parentNode === spacer) {\n\t\t\tlet parent = spacer.parentNode;\n\t\t\tif (parent) {\n\t\t\t\tparent.insertBefore(pin, spacer);\n\t\t\t\tparent.removeChild(spacer);\n\t\t\t}\n\t\t}\n\t},\n\t_swapPinIn = (pin, spacer, cs, spacerState) => {\n\t\tif (pin.parentNode !== spacer) {\n\t\t\tlet i = _propNamesToCopy.length,\n\t\t\t\tspacerStyle = spacer.style,\n\t\t\t\tpinStyle = pin.style,\n\t\t\t\tp;\n\t\t\twhile (i--) {\n\t\t\t\tp = _propNamesToCopy[i];\n\t\t\t\tspacerStyle[p] = cs[p];\n\t\t\t}\n\t\t\tspacerStyle.position = cs.position === \"absolute\" ? \"absolute\" : \"relative\";\n\t\t\t(cs.display === \"inline\") && (spacerStyle.display = \"inline-block\");\n\t\t\tpinStyle[_bottom] = pinStyle[_right] = \"auto\";\n\t\t\tspacerStyle.overflow = \"visible\";\n\t\t\tspacerStyle.boxSizing = \"border-box\";\n\t\t\tspacerStyle[_width] = _getSize(pin, _horizontal) + _px;\n\t\t\tspacerStyle[_height] = _getSize(pin, _vertical) + _px;\n\t\t\tspacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = \"0\";\n\t\t\t_setState(spacerState);\n\t\t\tpinStyle[_width] = pinStyle[\"max\" + _Width] = cs[_width];\n\t\t\tpinStyle[_height] = pinStyle[\"max\" + _Height] = cs[_height];\n\t\t\tpinStyle[_padding] = cs[_padding];\n\t\t\tpin.parentNode.insertBefore(spacer, pin);\n\t\t\tspacer.appendChild(pin);\n\t\t}\n\t},\n\t_capsExp = /([A-Z])/g,\n\t_setState = state => {\n\t\tif (state) {\n\t\t\tlet style = state.t.style,\n\t\t\t\tl = state.length,\n\t\t\t\ti = 0,\n\t\t\t\tp, value;\n\t\t\t(state.t._gsap || gsap.core.getCache(state.t)).uncache = 1; // otherwise transforms may be off\n\t\t\tfor (; i < l; i +=2) {\n\t\t\t\tvalue = state[i+1];\n\t\t\t\tp = state[i];\n\t\t\t\tif (value) {\n\t\t\t\t\tstyle[p] = value;\n\t\t\t\t} else if (style[p]) {\n\t\t\t\t\tstyle.removeProperty(p.replace(_capsExp, \"-$1\").toLowerCase());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t_getState = element => { // returns an Array with alternating values like [property, value, property, value] and a \"t\" property pointing to the target (element). Makes it fast and cheap.\n\t\tlet l = _stateProps.length,\n\t\t\tstyle = element.style,\n\t\t\tstate = [],\n\t\t\ti = 0;\n\t\tfor (; i < l; i++) {\n\t\t\tstate.push(_stateProps[i], style[_stateProps[i]]);\n\t\t}\n\t\tstate.t = element;\n\t\treturn state;\n\t},\n\t_copyState = (state, override, omitOffsets) => {\n\t\tlet result = [],\n\t\t\tl = state.length,\n\t\t\ti = omitOffsets ? 8 : 0, // skip top, left, right, bottom if omitOffsets is true\n\t\t\tp;\n\t\tfor (; i < l; i += 2) {\n\t\t\tp = state[i];\n\t\t\tresult.push(p, (p in override) ? override[p] : state[i+1]);\n\t\t}\n\t\tresult.t = state.t;\n\t\treturn result;\n\t},\n\t_winOffsets = {left:0, top:0},\n\t_parsePosition = (value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax) => {\n\t\t_isFunction(value) && (value = value(self));\n\t\tif (_isString(value) && value.substr(0,3) === \"max\") {\n\t\t\tvalue = scrollerMax + (value.charAt(4) === \"=\" ? _offsetToPx(\"0\" + value.substr(3), scrollerSize) : 0);\n\t\t}\n\t\tif (!_isNumber(value)) {\n\t\t\t_isFunction(trigger) && (trigger = trigger(self));\n\t\t\tlet element = _toArray(trigger)[0] || _body,\n\t\t\t\tbounds = _getBounds(element) || {},\n\t\t\t\toffsets = value.split(\" \"),\n\t\t\t\tlocalOffset, globalOffset, display;\n\t\t\tif ((!bounds || (!bounds.left && !bounds.top)) && _getComputedStyle(element).display === \"none\") { // if display is \"none\", it won't report getBoundingClientRect() properly\n\t\t\t\tdisplay = element.style.display;\n\t\t\t\telement.style.display = \"block\";\n\t\t\t\tbounds = _getBounds(element);\n\t\t\t\tdisplay ? (element.style.display = display) : element.style.removeProperty(\"display\");\n\t\t\t}\n\t\t\tlocalOffset = _offsetToPx(offsets[0], bounds[direction.d]);\n\t\t\tglobalOffset = _offsetToPx(offsets[1] || \"0\", scrollerSize);\n\t\t\tvalue = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;\n\t\t\tmarkerScroller && _positionMarker(markerScroller, globalOffset, direction, (scrollerSize - globalOffset < 20 || (markerScroller._isStart && globalOffset > 20)));\n\t\t\tscrollerSize -= scrollerSize - globalOffset; // adjust for the marker\n\t\t} else if (markerScroller) {\n\t\t\t_positionMarker(markerScroller, scrollerSize, direction, true);\n\t\t}\n\t\tif (marker) {\n\t\t\tlet position = value + scrollerSize,\n\t\t\t\tisStart = marker._isStart;\n\t\t\tscrollerMax = \"scroll\" + direction.d2;\n\t\t\t_positionMarker(marker, position, direction, (isStart && position > 20) || (!isStart && (useFixedPosition ? Math.max(_body[scrollerMax], _docEl[scrollerMax]) : marker.parentNode[scrollerMax]) <= position + 1));\n\t\t\tif (useFixedPosition) {\n\t\t\t\tscrollerBounds = _getBounds(markerScroller);\n\t\t\t\tuseFixedPosition && (marker.style[direction.op.p] = (scrollerBounds[direction.op.p] - direction.op.m - marker._offset) + _px);\n\t\t\t}\n\t\t}\n\t\treturn Math.round(value);\n\t},\n\t_prefixExp = /(?:webkit|moz|length|cssText|inset)/i,\n\t_reparent = (element, parent, top, left) => {\n\t\tif (element.parentNode !== parent) {\n\t\t\tlet style = element.style,\n\t\t\t\tp, cs;\n\t\t\tif (parent === _body) {\n\t\t\t\telement._stOrig = style.cssText; // record original inline styles so we can revert them later\n\t\t\t\tcs = _getComputedStyle(element);\n\t\t\t\tfor (p in cs) { // must copy all relevant styles to ensure that nothing changes visually when we reparent to the <body>. Skip the vendor prefixed ones.\n\t\t\t\t\tif (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === \"string\" && p !== \"0\") {\n\t\t\t\t\t\tstyle[p] = cs[p];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.top = top;\n\t\t\t\tstyle.left = left;\n\t\t\t} else {\n\t\t\t\tstyle.cssText = element._stOrig;\n\t\t\t}\n\t\t\tgsap.core.getCache(element).uncache = 1;\n\t\t\tparent.appendChild(element);\n\t\t}\n\t},\n\t// returns a function that can be used to tween the scroll position in the direction provided, and when doing so it'll add a .tween property to the FUNCTION itself, and remove it when the tween completes or gets killed. This gives us a way to have multiple ScrollTriggers use a central function for any given scroller and see if there's a scroll tween running (which would affect if/how things get updated)\n\t_getTweenCreator = (scroller, direction) => {\n\t\tlet getScroll = _getScrollFunc(scroller, direction),\n\t\t\tprop = \"_scroll\" + direction.p2, // add a tweenable property to the scroller that's a getter/setter function, like _scrollTop or _scrollLeft. This way, if someone does gsap.killTweensOf(scroller) it'll kill the scroll tween.\n\t\t\tlastScroll1, lastScroll2,\n\t\t\tgetTween = (scrollTo, vars, initialValue, change1, change2) => {\n\t\t\t\tlet tween = getTween.tween,\n\t\t\t\t\tonComplete = vars.onComplete,\n\t\t\t\t\tmodifiers = {};\n\t\t\t\ttween && tween.kill();\n\t\t\t\tlastScroll1 = Math.round(initialValue);\n\t\t\t\tvars[prop] = scrollTo;\n\t\t\t\tvars.modifiers = modifiers;\n\t\t\t\tmodifiers[prop] = value => {\n\t\t\t\t\tvalue = _round(getScroll()); // round because in some [very uncommon] Windows environments, it can get reported with decimals even though it was set without.\n\t\t\t\t\tif (value !== lastScroll1 && value !== lastScroll2 && Math.abs(value - lastScroll1) > 2) { // if the user scrolls, kill the tween. iOS Safari intermittently misreports the scroll position, it may be the most recently-set one or the one before that! When Safari is zoomed (CMD-+), it often misreports as 1 pixel off too! So if we set the scroll position to 125, for example, it'll actually report it as 124.\n\t\t\t\t\t\ttween.kill();\n\t\t\t\t\t\tgetTween.tween = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio;\n\t\t\t\t\t}\n\t\t\t\t\tlastScroll2 = lastScroll1;\n\t\t\t\t\treturn (lastScroll1 = _round(value));\n\t\t\t\t};\n\t\t\t\tvars.onComplete = () => {\n\t\t\t\t\tgetTween.tween = 0;\n\t\t\t\t\tonComplete && onComplete.call(tween);\n\t\t\t\t};\n\t\t\t\ttween = getTween.tween = gsap.to(scroller, vars);\n\t\t\t\treturn tween;\n\t\t\t};\n\t\tscroller[prop] = getScroll;\n\t\tscroller.addEventListener(\"wheel\", () => getTween.tween && getTween.tween.kill() && (getTween.tween = 0), {passive: true}); // Windows machines handle mousewheel scrolling in chunks (like \"3 lines per scroll\") meaning the typical strategy for cancelling the scroll isn't as sensitive. It's much more likely to match one of the previous 2 scroll event positions. So we kill any snapping as soon as there's a wheel event.\n\t\treturn getTween;\n\t};\n\n_horizontal.op = _vertical;\n\n\n\nexport class ScrollTrigger {\n\n\tconstructor(vars, animation) {\n\t\t_coreInitted || ScrollTrigger.register(gsap) || console.warn(\"Please gsap.registerPlugin(ScrollTrigger)\");\n\t\tthis.init(vars, animation);\n\t}\n\n\tinit(vars, animation) {\n\t\tthis.progress = this.start = 0;\n\t\tthis.vars && this.kill(1); // in case it's being initted again\n\t\tif (!_enabled) {\n\t\t\tthis.update = this.refresh = this.kill = _passThrough;\n\t\t\treturn;\n\t\t}\n\t\tvars = _setDefaults((_isString(vars) || _isNumber(vars) || vars.nodeType) ? {trigger: vars} : vars, _defaults);\n\t\tlet direction = vars.horizontal ? _horizontal : _vertical,\n\t\t\t{onUpdate, toggleClass, id, onToggle, onRefresh, scrub, trigger, pin, pinSpacing, invalidateOnRefresh, anticipatePin, onScrubComplete, onSnapComplete, once, snap, pinReparent} = vars,\n\t\t\tisToggle = !scrub && scrub !== 0,\n\t\t\tscroller = _toArray(vars.scroller || _win)[0],\n\t\t\tscrollerCache = gsap.core.getCache(scroller),\n\t\t\tisViewport = _isViewport(scroller),\n\t\t\tuseFixedPosition = \"pinType\" in vars ? vars.pinType === \"fixed\" : isViewport || _getProxyProp(scroller, \"pinType\") === \"fixed\",\n\t\t\tcallbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack],\n\t\t\ttoggleActions = isToggle && vars.toggleActions.split(\" \"),\n\t\t\tmarkers = \"markers\" in vars ? vars.markers : _defaults.markers,\n\t\t\tborderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)[\"border\" + direction.p2 + _Width]) || 0,\n\t\t\tself = this,\n\t\t\tonRefreshInit = vars.onRefreshInit && (() => vars.onRefreshInit(self)),\n\t\t\tgetScrollerSize = _getSizeFunc(scroller, isViewport, direction),\n\t\t\tgetScrollerOffsets = _getOffsetsFunc(scroller, isViewport),\n\t\t\tlastSnap = 0,\n\t\t\ttweenTo, pinCache, snapFunc, scroll1, scroll2, start, end, markerStart, markerEnd, markerStartTrigger, markerEndTrigger, markerVars,\n\t\t\tchange, pinOriginalState, pinActiveState, pinState, spacer, offset, pinGetter, pinSetter, pinStart, pinChange, spacingStart, spacerState, markerStartSetter,\n\t\t\tmarkerEndSetter, cs, snap1, snap2, scrubTween, scrubSmooth, snapDurClamp, snapDelayedCall, prevProgress, prevScroll, prevAnimProgress;\n\n\t\tself.media = _creatingMedia;\n\t\tanticipatePin *= 45;\n\t\tself.scroller = scroller;\n\t\tself.scroll = _getScrollFunc(scroller, direction);\n\t\tscroll1 = self.scroll();\n\t\tself.vars = vars;\n\t\tanimation = animation || vars.animation;\n\t\t(\"refreshPriority\" in vars) && (_sort = 1);\n\t\tscrollerCache.tweenScroll = scrollerCache.tweenScroll || {\n\t\t\ttop: _getTweenCreator(scroller, _vertical),\n\t\t\tleft: _getTweenCreator(scroller, _horizontal)\n\t\t};\n\t\tself.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];\n\t\tif (animation) {\n\t\t\tanimation.vars.lazy = false;\n\t\t\tanimation._initted || (animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.render(0, true, true));\n\t\t\tself.animation = animation.pause();\n\t\t\tanimation.scrollTrigger = self;\n\t\t\tscrubSmooth = _isNumber(scrub) && scrub;\n\t\t\tscrubSmooth && (scrubTween = gsap.to(animation, {ease: \"power3\", duration: scrubSmooth, onComplete: () => onScrubComplete && onScrubComplete(self)}));\n\t\t\tsnap1 = 0;\n\t\t\tid || (id = animation.vars.id);\n\t\t}\n\t\t_triggers.push(self);\n\t\tif (snap) {\n\t\t\tif (!_isObject(snap) || snap.push) {\n\t\t\t\tsnap = {snapTo: snap};\n\t\t\t}\n\t\t\t(\"scrollBehavior\" in _body.style) && gsap.set(isViewport ? [_body, _docEl] : scroller, {scrollBehavior: \"auto\"}); // smooth scrolling doesn't work with snap.\n\t\t\tsnapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === \"labels\" ? _getClosestLabel(animation) : snap.snapTo === \"labelsDirectional\" ? _getLabelAtDirection(animation) : gsap.utils.snap(snap.snapTo);\n\t\t\tsnapDurClamp = snap.duration || {min: 0.1, max: 2};\n\t\t\tsnapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp);\n\t\t\tsnapDelayedCall = gsap.delayedCall(snap.delay || (scrubSmooth / 2) || 0.1, () => {\n\t\t\t\tif (Math.abs(self.getVelocity()) < 10 && !_pointerIsDown && lastSnap !== self.scroll()) {\n\t\t\t\t\tlet totalProgress = animation && !isToggle ? animation.totalProgress() : self.progress,\n\t\t\t\t\t\tvelocity = ((totalProgress - snap2) / (_getTime() - _time2) * 1000) || 0,\n\t\t\t\t\t\tchange1 = gsap.utils.clamp(-self.progress, 1 - self.progress, _abs(velocity / 2) * velocity / 0.185),\n\t\t\t\t\t\tnaturalEnd = self.progress + (snap.inertia === false ? 0 : change1),\n\t\t\t\t\t\tendValue = _clamp(0, 1, snapFunc(naturalEnd, self)),\n\t\t\t\t\t\tscroll = self.scroll(),\n\t\t\t\t\t\tendScroll = Math.round(start + endValue * change),\n\t\t\t\t\t\t{ onStart, onInterrupt, onComplete } = snap,\n\t\t\t\t\t\ttween = tweenTo.tween;\n\t\t\t\t\tif (scroll <= end && scroll >= start && endScroll !== scroll) {\n\t\t\t\t\t\tif (tween && !tween._initted && tween.data <= Math.abs(endScroll - scroll)) { // there's an overlapping snap! So we must figure out which one is closer and let that tween live.\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (snap.inertia === false) {\n\t\t\t\t\t\t\tchange1 = endValue - self.progress;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttweenTo(endScroll, {\n\t\t\t\t\t\t\tduration: snapDurClamp(_abs( (Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05) || 0)),\n\t\t\t\t\t\t\tease: snap.ease || \"power3\",\n\t\t\t\t\t\t\tdata: Math.abs(endScroll - scroll), // record the distance so that if another snap tween occurs (conflict) we can prioritize the closest snap.\n\t\t\t\t\t\t\tonInterrupt: () => snapDelayedCall.restart(true) && onInterrupt && onInterrupt(self),\n\t\t\t\t\t\t\tonComplete: () => {\n\t\t\t\t\t\t\t\tlastSnap = self.scroll();\n\t\t\t\t\t\t\t\tsnap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress;\n\t\t\t\t\t\t\t\tonSnapComplete && onSnapComplete(self);\n\t\t\t\t\t\t\t\tonComplete && onComplete(self);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, scroll, change1 * change, endScroll - scroll - change1 * change);\n\t\t\t\t\t\tonStart && onStart(self, tweenTo.tween);\n\t\t\t\t\t}\n\t\t\t\t} else if (self.isActive) {\n\t\t\t\t\tsnapDelayedCall.restart(true);\n\t\t\t\t}\n\t\t\t}).pause();\n\t\t}\n\t\tid && (_ids[id] = self);\n\t\ttrigger = self.trigger = _toArray(trigger || pin)[0];\n\t\tpin = pin === true ? trigger : _toArray(pin)[0];\n\t\t_isString(toggleClass) && (toggleClass = {targets: trigger, className: toggleClass});\n\t\tif (pin) {\n\t\t\t(pinSpacing === false || pinSpacing === _margin) || (pinSpacing = !pinSpacing && _getComputedStyle(pin.parentNode).display === \"flex\" ? false : _padding); // if the parent is display: flex, don't apply pinSpacing by default.\n\t\t\tself.pin = pin;\n\t\t\tvars.force3D !== false && gsap.set(pin, {force3D: true});\n\t\t\tpinCache = gsap.core.getCache(pin);\n\t\t\tif (!pinCache.spacer) { // record the spacer and pinOriginalState on the cache in case someone tries pinning the same element with MULTIPLE ScrollTriggers - we don't want to have multiple spacers or record the \"original\" pin state after it has already been affected by another ScrollTrigger.\n\t\t\t\tpinCache.spacer = spacer = _doc.createElement(\"div\");\n\t\t\t\tspacer.setAttribute(\"class\", \"pin-spacer\" + (id ? \" pin-spacer-\" + id : \"\"));\n\t\t\t\tpinCache.pinState = pinOriginalState = _getState(pin);\n\t\t\t} else {\n\t\t\t\tpinOriginalState = pinCache.pinState;\n\t\t\t}\n\t\t\tself.spacer = spacer = pinCache.spacer;\n\t\t\tcs = _getComputedStyle(pin);\n\t\t\tspacingStart = cs[pinSpacing + direction.os2];\n\t\t\tpinGetter = gsap.getProperty(pin);\n\t\t\tpinSetter = gsap.quickSetter(pin, direction.a, _px);\n\t\t\t// pin.firstChild && !_maxScroll(pin, direction) && (pin.style.overflow = \"hidden\"); // protects from collapsing margins, but can have unintended consequences as demonstrated here: https://codepen.io/GreenSock/pen/1e42c7a73bfa409d2cf1e184e7a4248d so it was removed in favor of just telling people to set up their CSS to avoid the collapsing margins (overflow: hidden | auto is just one option. Another is border-top: 1px solid transparent).\n\t\t\t_swapPinIn(pin, spacer, cs);\n\t\t\tpinState = _getState(pin);\n\t\t}\n\t\tif (markers) {\n\t\t\tmarkerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;\n\t\t\tmarkerStartTrigger = _createMarker(\"scroller-start\", id, scroller, direction, markerVars, 0);\n\t\t\tmarkerEndTrigger = _createMarker(\"scroller-end\", id, scroller, direction, markerVars, 0, markerStartTrigger);\n\t\t\toffset = markerStartTrigger[\"offset\" + direction.op.d2];\n\t\t\tmarkerStart = _createMarker(\"start\", id, scroller, direction, markerVars, offset);\n\t\t\tmarkerEnd =_createMarker(\"end\", id, scroller, direction, markerVars, offset);\n\t\t\tif (!useFixedPosition && !(_proxies.length && _getProxyProp(scroller, \"fixedMarkers\") === true)) {\n\t\t\t\t_makePositionable(isViewport ? _body : scroller);\n\t\t\t\tgsap.set([markerStartTrigger, markerEndTrigger], {force3D: true});\n\t\t\t\tmarkerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px);\n\t\t\t\tmarkerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px);\n\t\t\t}\n\t\t}\n\n\t\tself.revert = revert => {\n\t\t\tlet r = revert !== false || !self.enabled,\n\t\t\t\tprevRefreshing = _refreshing;\n\t\t\tif (r !== self.isReverted) {\n\t\t\t\tif (r) {\n\t\t\t\t\tself.scroll.rec || (self.scroll.rec = self.scroll());\n\t\t\t\t\tprevScroll = Math.max(self.scroll(), self.scroll.rec || 0); // record the scroll so we can revert later (repositioning/pinning things can affect scroll position). In the static refresh() method, we first record all the scroll positions as a reference.\n\t\t\t\t\tprevProgress = self.progress;\n\t\t\t\t\tprevAnimProgress = animation && animation.progress();\n\t\t\t\t}\n\t\t\t\tmarkerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(m => m.style.display = r ? \"none\" : \"block\");\n\t\t\t\tr && (_refreshing = 1);\n\t\t\t\tself.update(r); // make sure the pin is back in its original position so that all the measurements are correct.\n\t\t\t\t_refreshing = prevRefreshing;\n\t\t\t\tpin && (r ? _swapPinOut(pin, spacer, pinOriginalState) : (!pinReparent || !self.isActive) && _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState));\n\t\t\t\tself.isReverted = r;\n\t\t\t}\n\t\t}\n\n\n\t\tself.refresh = (soft, force) => {\n\t\t\tif ((_refreshing || !self.enabled) && !force) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (pin && soft && _lastScrollTime) {\n\t\t\t\t_addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_refreshing = 1;\n\t\t\tscrubTween && scrubTween.pause();\n\t\t\tinvalidateOnRefresh && animation && animation.progress(0).invalidate();\n\t\t\tself.isReverted || self.revert();\n\t\t\tlet size = getScrollerSize(),\n\t\t\t\tscrollerBounds = getScrollerOffsets(),\n\t\t\t\tmax = _maxScroll(scroller, direction),\n\t\t\t\toffset = 0,\n\t\t\t\totherPinOffset = 0,\n\t\t\t\tparsedEnd = vars.end,\n\t\t\t\tparsedEndTrigger = vars.endTrigger || trigger,\n\t\t\t\tparsedStart = vars.start || (vars.start === 0 || !trigger ? 0 : (pin ? \"0 0\" : \"0 100%\")),\n\t\t\t\tpinnedContainer = vars.pinnedContainer && _toArray(vars.pinnedContainer)[0],\n\t\t\t\ttriggerIndex = (trigger && Math.max(0, _triggers.indexOf(self))) || 0,\n\t\t\t\ti = triggerIndex,\n\t\t\t\tcs, bounds, scroll, isVertical, override, curTrigger, curPin, oppositeScroll, initted, revertedPins;\n\t\t\twhile (i--) { // user might try to pin the same element more than once, so we must find any prior triggers with the same pin, revert them, and determine how long they're pinning so that we can offset things appropriately. Make sure we revert from last to first so that things \"rewind\" properly.\n\t\t\t\tcurTrigger = _triggers[i];\n\t\t\t\tcurTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = 1); // if it's a timeline-based trigger that hasn't been fully initialized yet because it's waiting for 1 tick, just force the refresh() here, otherwise if it contains a pin that's supposed to affect other ScrollTriggers further down the page, they won't be adjusted properly.\n\t\t\t\tcurPin = curTrigger.pin;\n\t\t\t\tif (curPin && (curPin === trigger || curPin === pin) && !curTrigger.isReverted) {\n\t\t\t\t\trevertedPins || (revertedPins = []);\n\t\t\t\t\trevertedPins.unshift(curTrigger); // we'll revert from first to last to make sure things reach their end state properly\n\t\t\t\t\tcurTrigger.revert();\n\t\t\t\t}\n\t\t\t}\n\t\t\tstart = _parsePosition(parsedStart, trigger, size, direction, self.scroll(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max) || (pin ? -0.001 : 0);\n\t\t\t_isFunction(parsedEnd) && (parsedEnd = parsedEnd(self));\n\t\t\tif (_isString(parsedEnd) && !parsedEnd.indexOf(\"+=\")) {\n\t\t\t\tif (~parsedEnd.indexOf(\" \")) {\n\t\t\t\t\tparsedEnd = (_isString(parsedStart) ? parsedStart.split(\" \")[0] : \"\") + parsedEnd;\n\t\t\t\t} else {\n\t\t\t\t\toffset = _offsetToPx(parsedEnd.substr(2), size);\n\t\t\t\t\tparsedEnd = _isString(parsedStart) ? parsedStart : start + offset; // _parsePosition won't factor in the offset if the start is a number, so do it here.\n\t\t\t\t\tparsedEndTrigger = trigger;\n\t\t\t\t}\n\t\t\t}\n\t\t\tend = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? \"100% 0\" : max), parsedEndTrigger, size, direction, self.scroll() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max)) || -0.001;\n\t\t\tchange = (end - start) || ((start -= 0.01) && 0.001);\n\n\t\t\toffset = 0;\n\t\t\ti = triggerIndex;\n\t\t\twhile (i--) {\n\t\t\t\tcurTrigger = _triggers[i];\n\t\t\t\tcurPin = curTrigger.pin;\n\t\t\t\tif (curPin && curTrigger.start - curTrigger._pinPush < start) {\n\t\t\t\t\tcs = curTrigger.end - curTrigger.start;\n\t\t\t\t\t(curPin === trigger || curPin === pinnedContainer) && (offset += cs);\n\t\t\t\t\tcurPin === pin && (otherPinOffset += cs);\n\t\t\t\t}\n\t\t\t}\n\t\t\tstart += offset;\n\t\t\tend += offset;\n\t\t\tself._pinPush = otherPinOffset;\n\t\t\tif (markerStart && offset) { // offset the markers if necessary\n\t\t\t\tcs = {};\n\t\t\t\tcs[direction.a] = \"+=\" + offset;\n\t\t\t\tpinnedContainer && (cs[direction.p] = \"-=\" + self.scroll());\n\t\t\t\tgsap.set([markerStart, markerEnd], cs);\n\t\t\t}\n\n\t\t\tif (pin) {\n\t\t\t\tcs = _getComputedStyle(pin);\n\t\t\t\tisVertical = direction === _vertical;\n\t\t\t\tscroll = self.scroll(); // recalculate because the triggers can affect the scroll\n\t\t\t\tpinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;\n\t\t\t\t!max && end > 1 && ((isViewport ? _body : scroller).style[\"overflow-\" + direction.a] = \"scroll\"); // makes sure the scroller has a scrollbar, otherwise if something has width: 100%, for example, it would be too big (exclude the scrollbar). See https://greensock.com/forums/topic/25182-scrolltrigger-width-of-page-increase-where-markers-are-set-to-false/\n\t\t\t\t_swapPinIn(pin, spacer, cs);\n\t\t\t\tpinState = _getState(pin);\n\t\t\t\t// transforms will interfere with the top/left/right/bottom placement, so remove them temporarily. getBoundingClientRect() factors in transforms.\n\t\t\t\tbounds = _getBounds(pin, true);\n\t\t\t\toppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)();\n\t\t\t\tif (pinSpacing) {\n\t\t\t\t\tspacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];\n\t\t\t\t\tspacerState.t = spacer;\n\t\t\t\t\ti = (pinSpacing === _padding) ? _getSize(pin, direction) + change + otherPinOffset : 0;\n\t\t\t\t\ti && spacerState.push(direction.d, i + _px); // for box-sizing: border-box (must include padding).\n\t\t\t\t\t_setState(spacerState);\n\t\t\t\t\tuseFixedPosition && self.scroll(prevScroll);\n\t\t\t\t}\n\t\t\t\tif (useFixedPosition) {\n\t\t\t\t\toverride = {\n\t\t\t\t\t\ttop: (bounds.top + (isVertical ? scroll - start : oppositeScroll)) + _px,\n\t\t\t\t\t\tleft: (bounds.left + (isVertical ? oppositeScroll : scroll - start)) + _px,\n\t\t\t\t\t\tboxSizing: \"border-box\",\n\t\t\t\t\t\tposition: \"fixed\"\n\t\t\t\t\t};\n\t\t\t\t\toverride[_width] = override[\"max\" + _Width] = Math.ceil(bounds.width) + _px;\n\t\t\t\t\toverride[_height] = override[\"max\" + _Height] = Math.ceil(bounds.height) + _px;\n\t\t\t\t\toverride[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = \"0\";\n\t\t\t\t\toverride[_padding] = cs[_padding];\n\t\t\t\t\toverride[_padding + _Top] = cs[_padding + _Top];\n\t\t\t\t\toverride[_padding + _Right] = cs[_padding + _Right];\n\t\t\t\t\toverride[_padding + _Bottom] = cs[_padding + _Bottom];\n\t\t\t\t\toverride[_padding + _Left] = cs[_padding + _Left];\n\t\t\t\t\tpinActiveState = _copyState(pinOriginalState, override, pinReparent);\n\t\t\t\t}\n\t\t\t\tif (animation) { // the animation might be affecting the transform, so we must jump to the end, check the value, and compensate accordingly. Otherwise, when it becomes unpinned, the pinSetter() will get set to a value that doesn't include whatever the animation did.\n\t\t\t\t\tinitted = animation._initted; // if not, we must invalidate() after this step, otherwise it could lock in starting values prematurely.\n\t\t\t\t\t_suppressOverwrites(1);\n\t\t\t\t\tanimation.render(animation.duration(), true, true);\n\t\t\t\t\tpinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;\n\t\t\t\t\tchange !== pinChange && pinActiveState.splice(pinActiveState.length - 2, 2); // transform is the last property/value set in the state Array. Since the animation is controlling that, we should omit it.\n\t\t\t\t\tanimation.render(0, true, true);\n\t\t\t\t\tinitted || animation.invalidate();\n\t\t\t\t\t_suppressOverwrites(0);\n\t\t\t\t} else {\n\t\t\t\t\tpinChange = change\n\t\t\t\t}\n\t\t\t} else if (trigger && self.scroll()) { // it may be INSIDE a pinned element, so walk up the tree and look for any elements with _pinOffset to compensate because anything with pinSpacing that's already scrolled would throw off the measurements in getBoundingClientRect()\n\t\t\t\tbounds = trigger.parentNode;\n\t\t\t\twhile (bounds && bounds !== _body) {\n\t\t\t\t\tif (bounds._pinOffset) {\n\t\t\t\t\t\tstart -= bounds._pinOffset;\n\t\t\t\t\t\tend -= bounds._pinOffset;\n\t\t\t\t\t}\n\t\t\t\t\tbounds = bounds.parentNode;\n\t\t\t\t}\n\t\t\t}\n\t\t\trevertedPins && revertedPins.forEach(t => t.revert(false));\n\t\t\tself.start = start;\n\t\t\tself.end = end;\n\t\t\tscroll1 = scroll2 = self.scroll(); // reset velocity\n\t\t\tscroll1 < prevScroll && self.scroll(prevScroll);\n\t\t\tself.revert(false);\n\t\t\t_refreshing = 0;\n\t\t\tanimation && isToggle && animation._initted && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress, true).render(animation.time(), true, true); // must force a re-render because if saveStyles() was used on the target(s), the styles could have been wiped out during the refresh().\n\t\t\tif (prevProgress !== self.progress) { // ensures that the direction is set properly (when refreshing, progress is set back to 0 initially, then back again to wherever it needs to be) and that callbacks are triggered.\n\t\t\t\tscrubTween && animation.totalProgress(prevProgress, true); // to avoid issues where animation callbacks like onStart aren't triggered.\n\t\t\t\tself.progress = prevProgress;\n\t\t\t\tself.update();\n\t\t\t}\n\t\t\tpin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange));\n\t\t\tonRefresh && onRefresh(self);\n\t\t};\n\n\t\tself.getVelocity = () => ((self.scroll() - scroll2) / (_getTime() - _time2) * 1000) || 0;\n\n\t\tself.update = (reset, recordVelocity) => {\n\t\t\tlet scroll = self.scroll(),\n\t\t\t\tp = reset ? 0 : (scroll - start) / change,\n\t\t\t\tclipped = p < 0 ? 0 : p > 1 ? 1 : p || 0,\n\t\t\t\tprevProgress = self.progress,\n\t\t\t\tisActive, wasActive, toggleState, action, stateChanged, toggled;\n\t\t\tif (recordVelocity) {\n\t\t\t\tscroll2 = scroll1;\n\t\t\t\tscroll1 = scroll;\n\t\t\t\tif (snap) {\n\t\t\t\t\tsnap2 = snap1;\n\t\t\t\t\tsnap1 = animation && !isToggle ? animation.totalProgress() : clipped;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// anticipate the pinning a few ticks ahead of time based on velocity to avoid a visual glitch due to the fact that most browsers do scrolling on a separate thread (not synced with requestAnimationFrame).\n\t\t\t(anticipatePin && !clipped && pin && !_refreshing && !_startup && _lastScrollTime && start < scroll + ((scroll - scroll2) / (_getTime() - _time2)) * anticipatePin) && (clipped = 0.0001);\n\t\t\tif (clipped !== prevProgress && self.enabled) {\n\t\t\t\tisActive = self.isActive = !!clipped && clipped < 1;\n\t\t\t\twasActive = !!prevProgress && prevProgress < 1;\n\t\t\t\ttoggled = isActive !== wasActive;\n\t\t\t\tstateChanged = toggled || !!clipped !== !!prevProgress; // could go from start all the way to end, thus it didn't toggle but it did change state in a sense (may need to fire a callback)\n\t\t\t\tself.direction = clipped > prevProgress ? 1 : -1;\n\t\t\t\tself.progress = clipped;\n\t\t\t\tif (!isToggle) {\n\t\t\t\t\tif (scrubTween && !_refreshing && !_startup) {\n\t\t\t\t\t\tscrubTween.vars.totalProgress = clipped;\n\t\t\t\t\t\tscrubTween.invalidate().restart();\n\t\t\t\t\t} else if (animation) {\n\t\t\t\t\t\tanimation.totalProgress(clipped, !!_refreshing);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pin) {\n\t\t\t\t\treset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);\n\t\t\t\t\tif (!useFixedPosition) {\n\t\t\t\t\t\tpinSetter(pinStart + pinChange * clipped);\n\t\t\t\t\t} else if (stateChanged) {\n\t\t\t\t\t\taction = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction); // if it's at the VERY end of the page, don't switch away from position: fixed because it's pointless and it could cause a brief flash when the user scrolls back up (when it gets pinned again)\n\t\t\t\t\t\tif (pinReparent) {\n\t\t\t\t\t\t\tif (!reset && (isActive || action)) {\n\t\t\t\t\t\t\t\tlet bounds = _getBounds(pin, true),\n\t\t\t\t\t\t\t\t\toffset = scroll - start;\n\t\t\t\t\t\t\t\t_reparent(pin, _body, (bounds.top + (direction === _vertical ? offset : 0)) + _px, (bounds.left + (direction === _vertical ? 0 : offset)) + _px);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_reparent(pin, spacer);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_setState(isActive || action ? pinActiveState : pinState);\n\t\t\t\t\t\t(pinChange !== change && clipped < 1 && isActive) || pinSetter(pinStart + (clipped === 1 && !action ? pinChange : 0));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsnap && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true);\n\t\t\t\ttoggleClass && (toggled || (once && clipped && (clipped < 1 || !_limitCallbacks))) && _toArray(toggleClass.targets).forEach(el => el.classList[isActive || once ? \"add\" : \"remove\"](toggleClass.className)); // classes could affect positioning, so do it even if reset or refreshing is true.\n\t\t\t\tonUpdate && !isToggle && !reset && onUpdate(self);\n\t\t\t\tif (stateChanged && !_refreshing) {\n\t\t\t\t\ttoggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3; // 0 = enter, 1 = leave, 2 = enterBack, 3 = leaveBack (we prioritize the FIRST encounter, thus if you scroll really fast past the onEnter and onLeave in one tick, it'd prioritize onEnter.\n\t\t\t\t\tif (isToggle) {\n\t\t\t\t\t\taction = (!toggled && toggleActions[toggleState + 1] !== \"none\" && toggleActions[toggleState + 1]) || toggleActions[toggleState]; // if it didn't toggle, that means it shot right past and since we prioritize the \"enter\" action, we should switch to the \"leave\" in this case (but only if one is defined)\n\t\t\t\t\t\tif (animation && (action === \"complete\" || action === \"reset\" || action in animation)) {\n\t\t\t\t\t\t\tif (action === \"complete\") {\n\t\t\t\t\t\t\t\tanimation.pause().totalProgress(1);\n\t\t\t\t\t\t\t} else if (action === \"reset\") {\n\t\t\t\t\t\t\t\tanimation.restart(true).pause();\n\t\t\t\t\t\t\t} else if (action === \"restart\") {\n\t\t\t\t\t\t\t\tanimation.restart(true);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tanimation[action]();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonUpdate && onUpdate(self);\n\t\t\t\t\t}\n\t\t\t\t\tif (toggled || !_limitCallbacks) { // on startup, the page could be scrolled and we don't want to fire callbacks that didn't toggle. For example onEnter shouldn't fire if the ScrollTrigger isn't actually entered.\n\t\t\t\t\t\tonToggle && toggled && onToggle(self);\n\t\t\t\t\t\tcallbacks[toggleState] && callbacks[toggleState](self);\n\t\t\t\t\t\tonce && (clipped === 1 ? self.kill(false, 1) : (callbacks[toggleState] = 0)); // a callback shouldn't be called again if once is true.\n\t\t\t\t\t\tif (!toggled) { // it's possible to go completely past, like from before the start to after the end (or vice-versa) in which case BOTH callbacks should be fired in that order\n\t\t\t\t\t\t\ttoggleState = clipped === 1 ? 1 : 3;\n\t\t\t\t\t\t\tcallbacks[toggleState] && callbacks[toggleState](self);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (isToggle && onUpdate && !_refreshing) {\n\t\t\t\t\tonUpdate(self);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// update absolutely-positioned markers (only if the scroller isn't the viewport)\n\t\t\tif (markerEndSetter) {\n\t\t\t\tmarkerStartSetter(scroll + (markerStartTrigger._isFlipped ? 1 : 0));\n\t\t\t\tmarkerEndSetter(scroll);\n\t\t\t}\n\t\t};\n\n\t\tself.enable = (reset, refresh) => {\n\t\t\tif (!self.enabled) {\n\t\t\t\tself.enabled = true;\n\t\t\t\t_addListener(scroller, \"resize\", _onResize);\n\t\t\t\t_addListener(scroller, \"scroll\", _onScroll);\n\t\t\t\tonRefreshInit && _addListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\t\t\t\tif (reset !== false) {\n\t\t\t\t\tself.progress = prevProgress = 0;\n\t\t\t\t\tscroll1 = scroll2 = lastSnap = self.scroll();\n\t\t\t\t}\n\t\t\t\trefresh !== false && self.refresh();\n\t\t\t}\n\t\t};\n\n\t\tself.getTween = snap => snap && tweenTo ? tweenTo.tween : scrubTween;\n\n\t\tself.disable = (reset, allowAnimation) => {\n\t\t\tif (self.enabled) {\n\t\t\t\treset !== false && self.revert();\n\t\t\t\tself.enabled = self.isActive = false;\n\t\t\t\tallowAnimation || (scrubTween && scrubTween.pause());\n\t\t\t\tprevScroll = 0;\n\t\t\t\tpinCache && (pinCache.uncache = 1);\n\t\t\t\tonRefreshInit && _removeListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\t\t\t\tif (snapDelayedCall) {\n\t\t\t\t\tsnapDelayedCall.pause();\n\t\t\t\t\ttweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);\n\t\t\t\t}\n\t\t\t\tif (!isViewport) {\n\t\t\t\t\tlet i = _triggers.length;\n\t\t\t\t\twhile (i--) {\n\t\t\t\t\t\tif (_triggers[i].scroller === scroller && _triggers[i] !== self) {\n\t\t\t\t\t\t\treturn; //don't remove the listeners if there are still other triggers referencing it.\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t_removeListener(scroller, \"resize\", _onResize);\n\t\t\t\t\t_removeListener(scroller, \"scroll\", _onScroll);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tself.kill = (revert, allowAnimation) => {\n\t\t\tself.disable(revert, allowAnimation);\n\t\t\tid && (delete _ids[id]);\n\t\t\tlet i = _triggers.indexOf(self);\n\t\t\t_triggers.splice(i, 1);\n\t\t\ti === _i && _direction > 0 && _i--; // if we're in the middle of a refresh() or update(), splicing would cause skips in the index, so adjust...\n\n\t\t\t// if no other ScrollTrigger instances of the same scroller are found, wipe out any recorded scroll position. Otherwise, in a single page application, for example, it could maintain scroll position when it really shouldn't.\n\t\t\ti = 0;\n\t\t\t_triggers.forEach(t => t.scroller === self.scroller && (i = 1));\n\t\t\ti || (self.scroll.rec = 0);\n\n\t\t\tif (animation) {\n\t\t\t\tanimation.scrollTrigger = null;\n\t\t\t\trevert && animation.render(-1);\n\t\t\t\tallowAnimation || animation.kill();\n\t\t\t}\n\t\t\tmarkerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(m => m.parentNode && m.parentNode.removeChild(m));\n\t\t\tif (pin) {\n\t\t\t\tpinCache && (pinCache.uncache = 1);\n\t\t\t\ti = 0;\n\t\t\t\t_triggers.forEach(t => t.pin === pin && i++);\n\t\t\t\ti || (pinCache.spacer = 0); // if there aren't any more ScrollTriggers with the same pin, remove the spacer, otherwise it could be contaminated with old/stale values if the user re-creates a ScrollTrigger for the same element.\n\t\t\t}\n\t\t};\n\n\t\tself.enable(false, false);\n\t\t!animation || !animation.add || change ? self.refresh() : gsap.delayedCall(0.01, () => start || end || self.refresh()) && (change = 0.01) && (start = end = 0); // if the animation is a timeline, it may not have been populated yet, so it wouldn't render at the proper place on the first refresh(), thus we should schedule one for the next tick. If \"change\" is defined, we know it must be re-enabling, thus we can refresh() right away.\n\t}\n\n\n\tstatic register(core) {\n\t\tif (!_coreInitted) {\n\t\t\tgsap = core || _getGSAP();\n\t\t\tif (_windowExists() && window.document) {\n\t\t\t\t_win = window;\n\t\t\t\t_doc = document;\n\t\t\t\t_docEl = _doc.documentElement;\n\t\t\t\t_body = _doc.body;\n\t\t\t}\n\t\t\tif (gsap) {\n\t\t\t\t_toArray = gsap.utils.toArray;\n\t\t\t\t_clamp = gsap.utils.clamp;\n\t\t\t\t_suppressOverwrites = gsap.core.suppressOverwrites || _passThrough;\n\t\t\t\tgsap.core.globals(\"ScrollTrigger\", ScrollTrigger); // must register the global manually because in Internet Explorer, functions (classes) don't have a \"name\" property.\n\t\t\t\tif (_body) {\n\t\t\t\t\t_raf = _win.requestAnimationFrame || (f => setTimeout(f, 16));\n\t\t\t\t\t_addListener(_win, \"wheel\", _onScroll);\n\t\t\t\t\t_root = [_win, _doc, _docEl, _body];\n\t\t\t\t\t_addListener(_doc, \"scroll\", _onScroll); // some browsers (like Chrome), the window stops dispatching scroll events on the window if you scroll really fast, but it's consistent on the document!\n\t\t\t\t\tlet bodyStyle = _body.style,\n\t\t\t\t\t\tborder = bodyStyle.borderTop,\n\t\t\t\t\t\tbounds;\n\t\t\t\t\tbodyStyle.borderTop = \"1px solid #000\"; // works around an issue where a margin of a child element could throw off the bounds of the _body, making it seem like there's a margin when there actually isn't. The border ensures that the bounds are accurate.\n\t\t\t\t\tbounds = _getBounds(_body);\n\t\t\t\t\t_vertical.m = Math.round(bounds.top + _vertical.sc()) || 0; // accommodate the offset of the <body> caused by margins and/or padding\n\t\t\t\t\t_horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0;\n\t\t\t\t\tborder ? (bodyStyle.borderTop = border) : bodyStyle.removeProperty(\"border-top\");\n\t\t\t\t\t_syncInterval = setInterval(_sync, 200);\n\t\t\t\t\tgsap.delayedCall(0.5, () => _startup = 0);\n\t\t\t\t\t_addListener(_doc, \"touchcancel\", _passThrough); // some older Android devices intermittently stop dispatching \"touchmove\" events if we don't listen for \"touchcancel\" on the document.\n\t\t\t\t\t_addListener(_body, \"touchstart\", _passThrough); //works around Safari bug: https://greensock.com/forums/topic/21450-draggable-in-iframe-on-mobile-is-buggy/\n\t\t\t\t\t_multiListener(_addListener, _doc, \"pointerdown,touchstart,mousedown\", () => _pointerIsDown = 1);\n\t\t\t\t\t_multiListener(_addListener, _doc, \"pointerup,touchend,mouseup\", () => _pointerIsDown = 0);\n\t\t\t\t\t_transformProp = gsap.utils.checkPrefix(\"transform\");\n\t\t\t\t\t_stateProps.push(_transformProp);\n\t\t\t\t\t_coreInitted = _getTime();\n\t\t\t\t\t_resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause();\n\t\t\t\t\t_autoRefresh = [_doc, \"visibilitychange\", () => {\n\t\t\t\t\t\tlet w = _win.innerWidth,\n\t\t\t\t\t\t\th = _win.innerHeight;\n\t\t\t\t\t\tif (_doc.hidden) {\n\t\t\t\t\t\t\t_prevWidth = w;\n\t\t\t\t\t\t\t_prevHeight = h;\n\t\t\t\t\t\t} else if (_prevWidth !== w || _prevHeight !== h) {\n\t\t\t\t\t\t\t_onResize();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, _doc, \"DOMContentLoaded\", _refreshAll, _win, \"load\", () => _lastScrollTime || _refreshAll(), _win, \"resize\", _onResize];\n\t\t\t\t\t_iterateAutoRefresh(_addListener);\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn _coreInitted;\n\t}\n\n\tstatic defaults(config) {\n\t\tfor (let p in config) {\n\t\t\t_defaults[p] = config[p];\n\t\t}\n\t}\n\n\tstatic kill() {\n\t\t_enabled = 0;\n\t\t_triggers.slice(0).forEach(trigger => trigger.kill(1));\n\t}\n\n\tstatic config(vars) {\n\t\t(\"limitCallbacks\" in vars) && (_limitCallbacks = !!vars.limitCallbacks);\n\t\tlet ms = vars.syncInterval;\n\t\tms && clearInterval(_syncInterval) || ((_syncInterval = ms) && setInterval(_sync, ms));\n\t\tif (\"autoRefreshEvents\" in vars) {\n\t\t\t_iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || \"none\");\n\t\t\t_ignoreResize = (vars.autoRefreshEvents + \"\").indexOf(\"resize\") === -1;\n\t\t}\n\t}\n\n\tstatic scrollerProxy(target, vars) {\n\t\tlet t = _toArray(target)[0],\n\t\t\ti = _scrollers.indexOf(t),\n\t\t\tisViewport = _isViewport(t);\n\t\tif (~i) {\n\t\t\t_scrollers.splice(i, isViewport ? 6 : 2);\n\t\t}\n\t\tisViewport ? _proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _proxies.unshift(t, vars);\n\t}\n\n\tstatic matchMedia(vars) { // _media is populated in the following order: mediaQueryString, onMatch, onUnmatch, isMatched. So if there are two media queries, the Array would have a length of 8\n\t\tlet mq, p, i, func, result;\n\t\tfor (p in vars) {\n\t\t\ti = _media.indexOf(p);\n\t\t\tfunc = vars[p];\n\t\t\t_creatingMedia = p;\n\t\t\tif (p === \"all\") {\n\t\t\t\tfunc();\n\t\t\t} else {\n\t\t\t\tmq = _win.matchMedia(p);\n\t\t\t\tif (mq) {\n\t\t\t\t\tmq.matches && (result = func());\n\t\t\t\t\tif (~i) {\n\t\t\t\t\t\t_media[i + 1] = _combineFunc(_media[i + 1], func);\n\t\t\t\t\t\t_media[i + 2] = _combineFunc(_media[i + 2], result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ti = _media.length;\n\t\t\t\t\t\t_media.push(p, func, result);\n\t\t\t\t\t\tmq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener(\"change\", _onMediaChange);\n\t\t\t\t\t}\n\t\t\t\t\t_media[i + 3] = mq.matches;\n\t\t\t\t}\n\t\t\t}\n\t\t\t_creatingMedia = 0;\n\t\t}\n\t\treturn _media;\n\t}\n\n\tstatic clearMatchMedia(query) {\n\t\tquery || (_media.length = 0);\n\t\tquery = _media.indexOf(query);\n\t\tquery >= 0 && _media.splice(query, 4);\n\t}\n\n\t// static isInViewport(element, ratio, horizontal) {\n\t// \tlet bounds = (_isString(element) ? _toArray(element)[0] : element).getBoundingClientRect(),\n\t// \t\toffset = bounds[horizontal ? \"width\" : \"height\"] * ratio || 0;\n\t// \treturn horizontal ? bounds.right - offset > 0 && bounds.left + offset < _win.innerWidth : bounds.bottom - offset > 0 && bounds.top + offset < _win.innerHeight;\n\t// }\n\t//\n\t// static positionInViewport(element, referencePoint, horizontal) {\n\t// \t_isString(element) && (element = _toArray(element)[0]);\n\t// \tlet bounds = element.getBoundingClientRect(),\n\t// \t\tsize = bounds[horizontal ? \"width\" : \"height\"],\n\t// \t\toffset = referencePoint == null ? size / 2 : ((referencePoint in _keywords) ? _keywords[referencePoint] * size : ~referencePoint.indexOf(\"%\") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0);\n\t// \treturn horizontal ? (bounds.left + offset) / _win.innerWidth : (bounds.top + offset) / _win.innerHeight;\n\t// }\n\n}\n\nScrollTrigger.version = \"3.7.1\";\nScrollTrigger.saveStyles = targets => targets ? _toArray(targets).forEach(target => { // saved styles are recorded in a consecutive alternating Array, like [element, cssText, transform attribute, cache, matchMedia, ...]\n\tif (target && target.style) {\n\t\tlet i = _savedStyles.indexOf(target);\n\t\ti >= 0 && _savedStyles.splice(i, 5);\n\t\t_savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute(\"transform\"), gsap.core.getCache(target), _creatingMedia);\n\t}\n}) : _savedStyles;\nScrollTrigger.revert = (soft, media) => _revertAll(!soft, media);\nScrollTrigger.create = (vars, animation) => new ScrollTrigger(vars, animation);\nScrollTrigger.refresh = safe => safe ? _onResize() : _refreshAll(true);\nScrollTrigger.update = _updateAll;\nScrollTrigger.maxScroll = (element, horizontal) => _maxScroll(element, horizontal ? _horizontal : _vertical);\nScrollTrigger.getScrollFunc = (element, horizontal) => _getScrollFunc(_toArray(element)[0], horizontal ? _horizontal : _vertical);\nScrollTrigger.getById = id => _ids[id];\nScrollTrigger.getAll = () => _triggers.slice(0);\nScrollTrigger.isScrolling = () => !!_lastScrollTime;\nScrollTrigger.addEventListener = (type, callback) => {\n\tlet a = _listeners[type] || (_listeners[type] = []);\n\t~a.indexOf(callback) || a.push(callback);\n};\nScrollTrigger.removeEventListener = (type, callback) => {\n\tlet a = _listeners[type],\n\t\ti = a && a.indexOf(callback);\n\ti >= 0 && a.splice(i, 1);\n};\nScrollTrigger.batch = (targets, vars) => {\n\tlet result = [],\n\t\tvarsCopy = {},\n\t\tinterval = vars.interval || 0.016,\n\t\tbatchMax = vars.batchMax || 1e9,\n\t\tproxyCallback = (type, callback) => {\n\t\t\tlet elements = [],\n\t\t\t\ttriggers = [],\n\t\t\t\tdelay = gsap.delayedCall(interval, () => {callback(elements, triggers); elements = []; triggers = [];}).pause();\n\t\t\treturn self => {\n\t\t\t\telements.length || delay.restart(true);\n\t\t\t\telements.push(self.trigger);\n\t\t\t\ttriggers.push(self);\n\t\t\t\tbatchMax <= elements.length && delay.progress(1);\n\t\t\t};\n\t\t},\n\t\tp;\n\tfor (p in vars) {\n\t\tvarsCopy[p] = (p.substr(0, 2) === \"on\" && _isFunction(vars[p]) && p !== \"onRefreshInit\") ? proxyCallback(p, vars[p]) : vars[p];\n\t}\n\tif (_isFunction(batchMax)) {\n\t\tbatchMax = batchMax();\n\t\t_addListener(ScrollTrigger, \"refresh\", () => batchMax = vars.batchMax());\n\t}\n\t_toArray(targets).forEach(target => {\n\t\tlet config = {};\n\t\tfor (p in varsCopy) {\n\t\t\tconfig[p] = varsCopy[p];\n\t\t}\n\t\tconfig.trigger = target;\n\t\tresult.push(ScrollTrigger.create(config));\n\t});\n\treturn result;\n}\nScrollTrigger.sort = func => _triggers.sort(func || ((a, b) => (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6)));\n\n_getGSAP() && gsap.registerPlugin(ScrollTrigger);\n\nexport { ScrollTrigger as default };"],"names":["_passThrough","v","_round","value","Math","round","_windowExists","window","_getGSAP","gsap","registerPlugin","_isViewport","e","_root","indexOf","_getProxyProp","element","property","_proxies","_getScrollFunc","s","sc","i","_scrollers","offset","_vertical","push","arguments","length","_getBoundsFunc","_winOffsets","width","_win","innerWidth","height","innerHeight","_getBounds","_maxScroll","d2","d","a","max","_docEl","_body","_iterateAutoRefresh","func","events","_autoRefresh","_isString","_isFunction","_isNumber","_isObject","_callIfFunc","_combineFunc","f1","f2","result1","result2","_getComputedStyle","getComputedStyle","_setDefaults","obj","defaults","p","_getSize","_getLabelRatioArray","timeline","labels","duration","_multiListener","types","callback","split","forEach","type","_addListener","addEventListener","passive","_removeListener","removeEventListener","_offsetToPx","size","eqIndex","relative","charAt","parseFloat","substr","_keywords","_createMarker","name","container","direction","matchWidthEl","startColor","endColor","fontSize","indent","fontWeight","_doc","createElement","useFixedPosition","isScroller","parent","isStart","color","css","_right","_bottom","offsetWidth","_isStart","setAttribute","style","cssText","innerText","children","insertBefore","appendChild","_offset","op","_positionMarker","_sync","_request","_raf","_updateAll","_onScroll","_lastScrollTime","_dispatch","_getTime","_onResize","_refreshing","_ignoreResize","fullscreenElement","_resizeDelay","restart","_onMediaChange","index","tick","ticker","frame","matches","_lastMediaTick","_startup","_revertAll","_media","matchMedia","_revertRecorded","_creatingMedia","_coreInitted","_refreshAll","_softRefresh","ScrollTrigger","_swapPinIn","pin","spacer","cs","spacerState","parentNode","_propNamesToCopy","spacerStyle","pinStyle","position","display","overflow","boxSizing","_width","_horizontal","_px","_height","_padding","_margin","_left","_setState","_getState","l","_stateProps","state","t","_parsePosition","trigger","scrollerSize","scroll","marker","markerScroller","self","scrollerBounds","borderWidth","scrollerMax","localOffset","globalOffset","_toArray","bounds","offsets","left","top","removeProperty","m","_reparent","_stOrig","_prefixExp","test","core","getCache","uncache","_getTweenCreator","scroller","getTween","scrollTo","vars","initialValue","change1","change2","tween","onComplete","modifiers","kill","lastScroll1","prop","getScroll","lastScroll2","abs","ratio","call","to","p2","_clamp","_time2","_syncInterval","_pointerIsDown","_transformProp","_i","_prevWidth","_prevHeight","_sort","_suppressOverwrites","_limitCallbacks","_refreshingAll","Date","now","_time1","_enabled","_abs","_scrollLeft","_scrollTop","_Right","_Left","_Top","_Bottom","_Width","_Height","os","os2","pageXOffset","pageYOffset","withoutTransforms","x","y","xPercent","yPercent","rotation","rotationX","rotationY","scale","skewX","skewY","progress","getBoundingClientRect","_markerDefaults","_defaults","toggleActions","anticipatePin","center","bottom","right","start","flipped","side","oppositeSide","_isFlipped","set","_triggers","_ids","_listeners","_emptyArray","map","f","_savedStyles","media","getBBox","revert","force","skipRevert","refreshInits","sort","refresh","result","render","rec","pause","_lastScroll","_direction","time","recordVelocity","update","concat","_capsExp","_gsap","replace","toLowerCase","init","animation","this","tweenTo","pinCache","snapFunc","scroll1","scroll2","end","markerStart","markerEnd","markerStartTrigger","markerEndTrigger","markerVars","change","pinOriginalState","pinActiveState","pinState","pinGetter","pinSetter","pinStart","pinChange","spacingStart","markerStartSetter","markerEndSetter","snap1","snap2","scrubTween","scrubSmooth","snapDurClamp","snapDelayedCall","prevProgress","prevScroll","prevAnimProgress","nodeType","horizontal","onUpdate","toggleClass","id","onToggle","onRefresh","scrub","pinSpacing","invalidateOnRefresh","onScrubComplete","onSnapComplete","once","snap","pinReparent","isToggle","scrollerCache","isViewport","pinType","callbacks","onEnter","onLeave","onEnterBack","onLeaveBack","markers","onRefreshInit","getScrollerSize","_getSizeFunc","getScrollerOffsets","_getOffsetsFunc","lastSnap","tweenScroll","lazy","_initted","immediateRender","scrollTrigger","ease","snapTo","scrollBehavior","_getClosestLabel","utils","_getLabelAtDirection","st","b","pop","min","delayedCall","delay","getVelocity","totalProgress","velocity","clamp","naturalEnd","inertia","endValue","endScroll","onStart","onInterrupt","data","isActive","targets","className","force3D","getProperty","quickSetter","_makePositionable","r","enabled","prevRefreshing","isReverted","_swapPinOut","removeChild","soft","invalidate","isVertical","override","curTrigger","curPin","oppositeScroll","initted","revertedPins","otherPinOffset","parsedEnd","parsedEndTrigger","endTrigger","parsedStart","pinnedContainer","triggerIndex","unshift","_pinPush","ceil","_copyState","omitOffsets","splice","_pinOffset","reset","toggleState","action","stateChanged","toggled","clipped","el","classList","enable","disable","allowAnimation","add","register","document","documentElement","body","toArray","suppressOverwrites","globals","requestAnimationFrame","setTimeout","bodyStyle","border","borderTop","setInterval","checkPrefix","w","h","hidden","config","slice","limitCallbacks","ms","syncInterval","clearInterval","autoRefreshEvents","scrollerProxy","target","mq","addListener","clearMatchMedia","query","console","warn","version","saveStyles","getAttribute","create","safe","maxScroll","getScrollFunc","getById","getAll","isScrolling","batch","proxyCallback","elements","triggers","interval","batchMax","varsCopy","refreshPriority"],"mappings":"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"}
ooohboi-steroids.php CHANGED
@@ -2,20 +2,20 @@
2
  /**
3
  * Plugin Name: OoohBoi Steroids for Elementor
4
  * Description: An awesome set of tools, options and settings that expand Elementor defaults. Instead of creating new Elementor Widgets, these act like an upgrade of existing options or the self-standing panels.
5
- * Version: 1.9.0
6
  * Author: OoohBoi
7
  * Author URI: https://www.youtube.com/c/OoohBoi
8
  * Text Domain: ooohboi-steroids
9
  * Domain Path: /lang
10
  * License: GPLv3
11
- * Elementor tested up to: 3.6.0
12
- * Elementor Pro tested up to: 3.6.5
13
  * License URI: http://www.gnu.org/licenses/gpl-3.0
14
  */
15
 
16
- use Elementor\Core\Settings\Manager as SettingsManager;
17
-
18
- defined( 'ABSPATH' ) || die(); // Exit if accessed directly.
19
 
20
  /**
21
  * Main OoohBoi Steroids Class
@@ -33,7 +33,7 @@ final class OoohBoi_Steroids {
33
  *
34
  * @var string The plugin version.
35
  */
36
- const VERSION = '1.9.0';
37
 
38
  /**
39
  * Minimum Elementor Version
@@ -176,7 +176,7 @@ final class OoohBoi_Steroids {
176
  'ooohboi-steroids-admin',
177
  plugins_url( 'assets/css/admin.css', __FILE__ ),
178
  [],
179
- self::VERSION . '17012022b'
180
  );
181
  } );
182
 
@@ -222,30 +222,6 @@ final class OoohBoi_Steroids {
222
  // Register/Enqueue Scripts
223
  add_action( 'elementor/frontend/after_register_scripts', [ $this, 'ooohboi_register_scripts_front' ] );
224
  add_action( 'elementor/frontend/after_register_styles', [ $this, 'ooohboi_register_styles' ] );
225
-
226
- // Editor Styles & Scripts
227
- add_action('elementor/editor/after_enqueue_scripts', function() {
228
-
229
- wp_enqueue_script(
230
- 'ooohboi-steroids-editor',
231
- plugins_url( 'assets/js/ob-steroids-editor-min.js', __FILE__ ),
232
- [ 'elementor-editor', 'jquery' ],
233
- self::VERSION . '16012022',
234
- true
235
- );
236
- // data to JS via wp_localize_script
237
- $local_data = [
238
- 'dark_stylesheet_url' => self::ooohboi_dark_stylesheet_url(),
239
- 'light_stylesheet_url' => self::ooohboi_light_stylesheet_url(),
240
- ];
241
- wp_localize_script(
242
- 'ooohboi-steroids-editor',
243
- 'SteroidsEditorLocalized',
244
- $local_data
245
- );
246
-
247
- } );
248
-
249
  add_action( 'elementor/frontend/after_enqueue_styles', function() {
250
 
251
  // locomotive scroll
@@ -307,33 +283,11 @@ final class OoohBoi_Steroids {
307
 
308
  }
309
 
310
- /*
311
- * Init Extensions
312
- *
313
- * @since 1.9.0
314
- *
315
- * @access public
316
- */
317
- public function admin_notice_missing_main_plugin() {
318
-
319
- if( isset( $_GET[ 'activate' ] ) ) unset( $_GET[ 'activate' ] );
320
-
321
- $message = sprintf(
322
- /* translators: 1: Plugin name 2: Elementor */
323
- esc_html__( '"%1$s" requires "%2$s" to be installed and activated.', 'ooohboi-steroids' ),
324
- '<strong>' . esc_html__( 'Steroids for Elementor', 'ooohboi-steroids' ) . '</strong>',
325
- '<strong>' . esc_html__( 'Elementor', 'ooohboi-steroids' ) . '</strong>'
326
- );
327
-
328
- printf( '<div class="notice notice-warning is-dismissible"><p>%1$s</p></div>', $message );
329
-
330
- }
331
 
332
  /*
333
  * Init Extensions
334
  *
335
- * @since 1.4.8
336
- * @modified 1.8.2
337
  *
338
  * @access public
339
  */
@@ -342,25 +296,52 @@ final class OoohBoi_Steroids {
342
  // Include extension classes
343
  self::ooohboi_take_steroids();
344
 
345
- $extensions_array = [ 'OoohBoi_Harakiri' => 'ob_use_harakiri', 'OoohBoi_Overlay_Underlay' => 'ob_use_poopart', 'OoohBoi_Overlaiz' => 'ob_use_overlaiz', 'OoohBoi_Paginini' => 'ob_use_paginini', 'OoohBoi_Breaking_Bad' => 'ob_use_breakingbad',
346
- 'OoohBoi_Glider' => 'ob_use_glider', 'OoohBoi_PhotoGiraffe' => 'ob_use_photogiraffe', 'OoohBoi_Teleporter' => 'ob_use_teleporter', 'OoohBoi_SearchCop' => 'ob_use_searchcop', 'OoohBoi_Videomasq' => 'ob_use_videomasq',
347
- 'OoohBoi_Butter_Button' => 'ob_use_butterbutton', 'OoohBoi_Perspektive' => 'ob_use_perspektive', 'OoohBoi_Shadough' => 'ob_use_shadough', 'OoohBoi_PhotoMorph' => 'ob_use_photomorph', 'OoohBoi_Commentz' => 'ob_use_commentz',
348
- 'OoohBoi_SpaceRat' => 'ob_use_spacerat', 'OoohBoi_Imbox' => 'ob_use_imbox', 'OoohBoi_Icobox' => 'ob_use_icobox', 'OoohBoi_Hover_Animator' => 'ob_use_hoveranimator', 'OoohBoi_Kontrolz' => 'ob_use_kontrolz',
349
- 'OoohBoi_Widget_Stalker' => 'ob_use_widgetstalker', 'OoohBoi_Pseudo' => 'ob_use_pseudo', 'OoohBoi_Bullet' => 'ob_use_bullet' ];
350
-
351
  if( ! $ob_settings_options ) {
352
- foreach( $extensions_array as $extension_class => $extension_token ) {
353
- $extension_class::init();
354
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
355
  } else {
356
- foreach( $extensions_array as $extension_class => $extension_token ) {
357
- if( ! isset( $ob_settings_options[ $extension_token ] ) ) {
358
- $ob_settings_options[ $extension_token ] = 'yes';
359
- update_option( 'steroids_for_elementor', $ob_settings_options );
360
- } else {
361
- if( $ob_settings_options[ $extension_token ] && 'yes' === $ob_settings_options[ $extension_token ] ) $extension_class::init();
362
- }
363
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
364
 
365
  // include libraries that involve editor controls; Locomotive Scroll...
366
  if( $ob_settings_options[ 'fieldset_locomotive' ][ 'ob_use_locomotive_scroll' ] && 'yes' === $ob_settings_options[ 'fieldset_locomotive' ][ 'ob_use_locomotive_scroll' ] ) new OoohBoi_Locomotion();
@@ -372,30 +353,15 @@ final class OoohBoi_Steroids {
372
  *
373
  * Include css files and register them
374
  *
375
- * NEW @since 1.9.0
376
  *
377
  * @access public
378
  */
379
  public function ooohboi_register_styles_editor() {
380
-
381
- $theme = SettingsManager::get_settings_managers( 'editorPreferences' )->get_model()->get_settings( 'ui_theme' );
382
-
383
- if( 'light' !== $theme ) {
384
-
385
- $mq = 'all';
386
- if( 'auto' === $theme ) $mq = '(prefers-color-scheme: dark)';
387
-
388
- wp_enqueue_style( 'ooohboi-steroids-styles-editor-dark', self::ooohboi_dark_stylesheet_url(), [ 'elementor-editor' ], self::VERSION . '16012022', $mq );
389
-
390
- } else wp_enqueue_style( 'ooohboi-steroids-styles-dark', self::ooohboi_light_stylesheet_url(), [ 'elementor-editor' ], self::VERSION . '16012022' );
391
 
392
  }
393
- public static function ooohboi_dark_stylesheet_url() {
394
- return plugins_url( 'assets/css/editor-dark.css', __FILE__ );
395
- }
396
- public static function ooohboi_light_stylesheet_url() {
397
- return plugins_url( 'assets/css/editor.css', __FILE__ );
398
- }
399
 
400
  /*
401
  * Init styles
@@ -414,7 +380,7 @@ final class OoohBoi_Steroids {
414
  }
415
  // -----------------------------
416
 
417
- wp_register_style( 'ooohboi-steroids-styles', plugins_url( 'assets/css/main.css', __FILE__ ), NULL, self::VERSION . '24012022' );
418
 
419
  }
420
 
@@ -427,14 +393,11 @@ final class OoohBoi_Steroids {
427
  *
428
  * @access public
429
  */
430
- public function ooohboi_check_file_avail( $the_file ) {
431
- return (bool)@fopen( $the_file, 'r' );
432
- }
433
  public function ooohboi_register_scripts_front() {
434
 
435
  $ele_is_preview = \Elementor\Plugin::$instance->preview->is_preview_mode();
436
 
437
- wp_register_script( 'ooohboi-steroids', plugins_url( 'assets/js/ooohboi-steroids-min.js', __FILE__ ), [ 'jquery' ], self::VERSION . '16012022b', true );
438
 
439
  // locomotive scroll
440
  if( 1 === self::$sfe_lib_locomotive ) {
@@ -443,19 +406,19 @@ final class OoohBoi_Steroids {
443
  }
444
  // gsap
445
  if( 1 === self::$sfe_lib_gsap && ! $ele_is_preview ) {
446
- wp_register_script( 'gsap-js', '//cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/gsap.min.js', [], self::VERSION, true );
447
  }
448
  // scroll trigger
449
  if( 1 === self::$sfe_lib_scroll_trigger && ! $ele_is_preview ) {
450
- wp_register_script( 'scroll-trigger-js', '//cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/ScrollTrigger.min.js', [], self::VERSION, true );
451
  }
452
  // scroll to
453
  if( 1 === self::$sfe_lib_scroll_to && ! $ele_is_preview ) {
454
- wp_register_script( 'scroll-to-js', '//cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/ScrollToPlugin.min.js', [], self::VERSION, true );
455
  }
456
  // scroll motion path
457
  if( 1 === self::$sfe_lib_motion_path && ! $ele_is_preview ) {
458
- wp_register_script( 'motion-path-js', '//cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/MotionPathPlugin.min.js', [], self::VERSION, true );
459
  }
460
  // barba
461
  if( 1 === self::$sfe_lib_barba && ! $ele_is_preview ) {
@@ -500,7 +463,6 @@ final class OoohBoi_Steroids {
500
  include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-kontrolz.php'; // OoohBoi Kontrolz
501
  include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-widget-stalker.php'; // OoohBoi Widget Stalker
502
  include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-pseudo.php'; // OoohBoi Pseudo
503
- include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-bullet.php'; // OoohBoi Bullet
504
  include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-locomotion.php'; // OoohBoi Locomotion
505
  }
506
 
2
  /**
3
  * Plugin Name: OoohBoi Steroids for Elementor
4
  * Description: An awesome set of tools, options and settings that expand Elementor defaults. Instead of creating new Elementor Widgets, these act like an upgrade of existing options or the self-standing panels.
5
+ * Version: 1.8.1
6
  * Author: OoohBoi
7
  * Author URI: https://www.youtube.com/c/OoohBoi
8
  * Text Domain: ooohboi-steroids
9
  * Domain Path: /lang
10
  * License: GPLv3
11
+ * Elementor tested up to: 3.4.9
12
+ * Elementor Pro tested up to: 3.5.9
13
  * License URI: http://www.gnu.org/licenses/gpl-3.0
14
  */
15
 
16
+ if ( ! defined( 'ABSPATH' ) ) {
17
+ exit; // Exit if accessed directly.
18
+ }
19
 
20
  /**
21
  * Main OoohBoi Steroids Class
33
  *
34
  * @var string The plugin version.
35
  */
36
+ const VERSION = '1.8.1';
37
 
38
  /**
39
  * Minimum Elementor Version
176
  'ooohboi-steroids-admin',
177
  plugins_url( 'assets/css/admin.css', __FILE__ ),
178
  [],
179
+ self::VERSION . '17052021'
180
  );
181
  } );
182
 
222
  // Register/Enqueue Scripts
223
  add_action( 'elementor/frontend/after_register_scripts', [ $this, 'ooohboi_register_scripts_front' ] );
224
  add_action( 'elementor/frontend/after_register_styles', [ $this, 'ooohboi_register_styles' ] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
225
  add_action( 'elementor/frontend/after_enqueue_styles', function() {
226
 
227
  // locomotive scroll
283
 
284
  }
285
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
286
 
287
  /*
288
  * Init Extensions
289
  *
290
+ * @since 1.4.8
 
291
  *
292
  * @access public
293
  */
296
  // Include extension classes
297
  self::ooohboi_take_steroids();
298
 
 
 
 
 
 
 
299
  if( ! $ob_settings_options ) {
300
+ OoohBoi_Harakiri::init(); // OoohBoi Harakiri
301
+ OoohBoi_Overlay_Underlay::init(); // OoohBoi Overlay Underlay
302
+ OoohBoi_Overlaiz::init(); // OoohBoi Overlaiz
303
+ OoohBoi_Paginini::init(); // OoohBoi Paginini
304
+ OoohBoi_Breaking_Bad::init(); // OoohBoi Breaking Bad
305
+ OoohBoi_Glider::init(); // OoohBoi Glider Slider
306
+ OoohBoi_PhotoGiraffe::init(); // OoohBoi PhotoGiraffe
307
+ OoohBoi_Teleporter::init(); // OoohBoi Teleporter
308
+ OoohBoi_SearchCop::init(); // OoohBoi Search Cop
309
+ OoohBoi_Videomasq::init(); // OoohBoi Videomasq
310
+ OoohBoi_Butter_Button::init(); // OoohBoi Butter Button
311
+ OoohBoi_Perspektive::init(); // OoohBoi Perspektive
312
+ OoohBoi_Shadough::init(); // OoohBoi Shadough
313
+ OoohBoi_PhotoMorph::init(); // OoohBoi PhotoMorph
314
+ OoohBoi_Commentz::init(); // OoohBoi Commentz
315
+ OoohBoi_SpaceRat::init(); // OoohBoi SpaceRat
316
+ OoohBoi_Imbox::init(); // OoohBoi Imbox
317
+ OoohBoi_Icobox::init(); // OoohBoi Icobox
318
+ OoohBoi_Hover_Animator::init(); // OoohBoi Hover Animator
319
+ OoohBoi_Kontrolz::init(); // OoohBoi Kontrolz
320
+ OoohBoi_Widget_Stalker::init(); // OoohBoi Widget Stalker
321
+ OoohBoi_Pseudo::init(); // OoohBoi Pseudo
322
  } else {
323
+ if( $ob_settings_options[ 'ob_use_harakiri' ] && 'yes' === $ob_settings_options[ 'ob_use_harakiri' ] ) OoohBoi_Harakiri::init(); // OoohBoi Harakiri
324
+ if( $ob_settings_options[ 'ob_use_poopart' ] && 'yes' === $ob_settings_options[ 'ob_use_poopart' ] ) OoohBoi_Overlay_Underlay::init(); // OoohBoi Overlay Underlay
325
+ if( $ob_settings_options[ 'ob_use_overlaiz' ] && 'yes' === $ob_settings_options[ 'ob_use_overlaiz' ] ) OoohBoi_Overlaiz::init(); // OoohBoi Overlaiz
326
+ if( $ob_settings_options[ 'ob_use_paginini' ] && 'yes' === $ob_settings_options[ 'ob_use_paginini' ] ) OoohBoi_Paginini::init(); // OoohBoi Paginini
327
+ if( $ob_settings_options[ 'ob_use_breakingbad' ] && 'yes' === $ob_settings_options[ 'ob_use_breakingbad' ] ) OoohBoi_Breaking_Bad::init(); // OoohBoi Breaking Bad
328
+ if( $ob_settings_options[ 'ob_use_glider' ] && 'yes' === $ob_settings_options[ 'ob_use_glider' ] ) OoohBoi_Glider::init(); // OoohBoi Glider Slider
329
+ if( $ob_settings_options[ 'ob_use_photogiraffe' ] && 'yes' === $ob_settings_options[ 'ob_use_photogiraffe' ] ) OoohBoi_PhotoGiraffe::init(); // OoohBoi PhotoGiraffe
330
+ if( $ob_settings_options[ 'ob_use_teleporter' ] && 'yes' === $ob_settings_options[ 'ob_use_teleporter' ] ) OoohBoi_Teleporter::init(); // OoohBoi Teleporter
331
+ if( $ob_settings_options[ 'ob_use_searchcop' ] && 'yes' === $ob_settings_options[ 'ob_use_searchcop' ] ) OoohBoi_SearchCop::init(); // OoohBoi Search Cop
332
+ if( $ob_settings_options[ 'ob_use_videomasq' ] && 'yes' === $ob_settings_options[ 'ob_use_videomasq' ] ) OoohBoi_Videomasq::init(); // OoohBoi Videomasq
333
+ if( $ob_settings_options[ 'ob_use_butterbutton' ] && 'yes' === $ob_settings_options[ 'ob_use_butterbutton' ] ) OoohBoi_Butter_Button::init(); // OoohBoi Butter Button
334
+ if( $ob_settings_options[ 'ob_use_perspektive' ] && 'yes' === $ob_settings_options[ 'ob_use_perspektive' ] ) OoohBoi_Perspektive::init(); // OoohBoi Perspektive
335
+ if( $ob_settings_options[ 'ob_use_shadough' ] && 'yes' === $ob_settings_options[ 'ob_use_shadough' ] ) OoohBoi_Shadough::init(); // OoohBoi Shadough
336
+ if( $ob_settings_options[ 'ob_use_photomorph' ] && 'yes' === $ob_settings_options[ 'ob_use_photomorph' ] ) OoohBoi_PhotoMorph::init(); // OoohBoi PhotoMorph
337
+ if( $ob_settings_options[ 'ob_use_commentz' ] && 'yes' === $ob_settings_options[ 'ob_use_commentz' ] ) OoohBoi_Commentz::init(); // OoohBoi Commentz
338
+ if( $ob_settings_options[ 'ob_use_spacerat' ] && 'yes' === $ob_settings_options[ 'ob_use_spacerat' ] ) OoohBoi_SpaceRat::init(); // OoohBoi SpaceRat
339
+ if( $ob_settings_options[ 'ob_use_imbox' ] && 'yes' === $ob_settings_options[ 'ob_use_imbox' ] ) OoohBoi_Imbox::init(); // OoohBoi Imbox
340
+ if( $ob_settings_options[ 'ob_use_icobox' ] && 'yes' === $ob_settings_options[ 'ob_use_icobox' ] ) OoohBoi_Icobox::init(); // OoohBoi Icobox
341
+ if( $ob_settings_options[ 'ob_use_hoveranimator' ] && 'yes' === $ob_settings_options[ 'ob_use_hoveranimator' ] ) OoohBoi_Hover_Animator::init(); // OoohBoi Hover Animator
342
+ if( $ob_settings_options[ 'ob_use_kontrolz' ] && 'yes' === $ob_settings_options[ 'ob_use_kontrolz' ] ) OoohBoi_Kontrolz::init(); // OoohBoi Kontrolz
343
+ if( $ob_settings_options[ 'ob_use_widgetstalker' ] && 'yes' === $ob_settings_options[ 'ob_use_widgetstalker' ] ) OoohBoi_Widget_Stalker::init(); // OoohBoi Widget Stalker
344
+ if( $ob_settings_options[ 'ob_use_pseudo' ] && 'yes' === $ob_settings_options[ 'ob_use_pseudo' ] ) OoohBoi_Pseudo::init(); // OoohBoi Pseudo
345
 
346
  // include libraries that involve editor controls; Locomotive Scroll...
347
  if( $ob_settings_options[ 'fieldset_locomotive' ][ 'ob_use_locomotive_scroll' ] && 'yes' === $ob_settings_options[ 'fieldset_locomotive' ][ 'ob_use_locomotive_scroll' ] ) new OoohBoi_Locomotion();
353
  *
354
  * Include css files and register them
355
  *
356
+ * @since 1.0.0
357
  *
358
  * @access public
359
  */
360
  public function ooohboi_register_styles_editor() {
361
+
362
+ wp_enqueue_style( 'ooohboi-steroids-styles-editor', plugins_url( 'assets/css/editor.css', __FILE__ ), [ 'elementor-editor' ], self::VERSION . '28042021' );
 
 
 
 
 
 
 
 
 
363
 
364
  }
 
 
 
 
 
 
365
 
366
  /*
367
  * Init styles
380
  }
381
  // -----------------------------
382
 
383
+ wp_register_style( 'ooohboi-steroids-styles', plugins_url( 'assets/css/main.css', __FILE__ ), NULL, self::VERSION . '03052021' );
384
 
385
  }
386
 
393
  *
394
  * @access public
395
  */
 
 
 
396
  public function ooohboi_register_scripts_front() {
397
 
398
  $ele_is_preview = \Elementor\Plugin::$instance->preview->is_preview_mode();
399
 
400
+ wp_register_script( 'ooohboi-steroids', plugins_url( 'assets/js/ooohboi-steroids-min.js', __FILE__ ), [ 'jquery' ], self::VERSION . '03082021b', true );
401
 
402
  // locomotive scroll
403
  if( 1 === self::$sfe_lib_locomotive ) {
406
  }
407
  // gsap
408
  if( 1 === self::$sfe_lib_gsap && ! $ele_is_preview ) {
409
+ wp_register_script( 'gsap-js', plugins_url( 'lib/gsap/gsap.min.js', __FILE__ ), [], self::VERSION, true );
410
  }
411
  // scroll trigger
412
  if( 1 === self::$sfe_lib_scroll_trigger && ! $ele_is_preview ) {
413
+ wp_register_script( 'scroll-trigger-js', plugins_url( 'lib/scrolltrigger/ScrollTrigger.min.js', __FILE__ ), [], self::VERSION, true );
414
  }
415
  // scroll to
416
  if( 1 === self::$sfe_lib_scroll_to && ! $ele_is_preview ) {
417
+ wp_register_script( 'scroll-to-js', plugins_url( 'lib/scroll_to/ScrollToPlugin.min', __FILE__ ), [], self::VERSION, true );
418
  }
419
  // scroll motion path
420
  if( 1 === self::$sfe_lib_motion_path && ! $ele_is_preview ) {
421
+ wp_register_script( 'motion-path-js', plugins_url( 'lib/motion_path/MotionPathPlugin.min.js', __FILE__ ), [], self::VERSION, true );
422
  }
423
  // barba
424
  if( 1 === self::$sfe_lib_barba && ! $ele_is_preview ) {
463
  include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-kontrolz.php'; // OoohBoi Kontrolz
464
  include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-widget-stalker.php'; // OoohBoi Widget Stalker
465
  include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-pseudo.php'; // OoohBoi Pseudo
 
466
  include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-locomotion.php'; // OoohBoi Locomotion
467
  }
468
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: page-builder, elementor, add-on, background-overlay, vertical text, ghost
4
  Donate link: https://www.paypal.me/ooohboi
5
  Requires at least: 5.0
6
  Tested up to: 5.9
7
- Stable tag: 1.9.0
8
  Requires PHP: 7.0
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses/gpl-3.0
@@ -17,10 +17,7 @@ An awesome set of tools, options and settings that expand Elementor defaults. In
17
 
18
  = What is new? =
19
 
20
- GSAP and its plugins (ScrollTrigger, ScrollTo, MotionPath) are now loaded from the CDN, new interface, major code improvements, Elementor 3.6 friendly, many more...
21
-
22
- = To do... =
23
- Custom Breakpoints compliance
24
 
25
  = In the package so far =
26
 
@@ -93,14 +90,10 @@ More controls to the Icon Box widget.
93
  23. PSEUDO
94
  Add and manage Column's pseudo elements. It's a PoopArt for Columns!
95
 
96
- 24. LOCOMOTION
97
  The power of Locomotive Scroll is now available in Elementor too!
98
 
99
- 25. GSAP, SCROLLTRIGGER & MORE
100
- The power of Locomotive Scroll is now available in Elementor too!
101
-
102
- 26. BULLET
103
- Moves the bullet of the Icon List widget to the top (fine tune with the margin)
104
 
105
  == Installation ==
106
 
@@ -109,7 +102,7 @@ Moves the bullet of the Icon List widget to the top (fine tune with the margin)
109
 
110
  == Upgrade Notice ==
111
 
112
- 1.9.0 - Beware of the changes to the language file!
113
 
114
  == Frequently Asked Questions ==
115
 
@@ -153,21 +146,6 @@ No, you don't. It'll work with both free version of Elementor and Elementor PRO.
153
 
154
  == Changelog ==
155
 
156
- = 1.9.0 =
157
- - Major code improvements (up to 3x faster)
158
- - Improved interface
159
- - Reset to defaults now works properly
160
- - GSAP and its plugins (ScrollTrigger, MotionPath and ScrollTo) are now loaded from the CDN
161
- - All extensions but TELEPORTER are Container friendly (future Elementor 3.6)
162
- - Fix: BUTTER BUTTON background flickers on hover
163
- - BUTTER BUTTON: removed Typography control (typography inherited from the Button widget)
164
-
165
- = 1.8.2 =
166
- - New: BULET - Added option to vertically align the bullet of the Icon List widget
167
- - Improvement: HARAKIRI - Added option to cut off the bottom margin of TextEditor widget
168
- - Fix: PHP 8.0+ warning related to the "exopite-simple-options-framework-class.php on line 1700"
169
- - core improvements - thanks to @nome_nation!
170
-
171
  = 1.8.1 =
172
  - New: ANIME.js added to optional/includable libraries
173
  - New: ICOBOX - prevent icon/title collapse on mobile devices
4
  Donate link: https://www.paypal.me/ooohboi
5
  Requires at least: 5.0
6
  Tested up to: 5.9
7
+ Stable tag: 1.8.1
8
  Requires PHP: 7.0
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses/gpl-3.0
17
 
18
  = What is new? =
19
 
20
+ A few mandatory patches provided!
 
 
 
21
 
22
  = In the package so far =
23
 
90
  23. PSEUDO
91
  Add and manage Column's pseudo elements. It's a PoopArt for Columns!
92
 
93
+ 23. LOCOMOTION
94
  The power of Locomotive Scroll is now available in Elementor too!
95
 
96
+ 25. MORE IS COMING SOON!
 
 
 
 
97
 
98
  == Installation ==
99
 
102
 
103
  == Upgrade Notice ==
104
 
105
+ 1.8.1 - Beware of the changes to the language file!
106
 
107
  == Frequently Asked Questions ==
108
 
146
 
147
  == Changelog ==
148
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  = 1.8.1 =
150
  - New: ANIME.js added to optional/includable libraries
151
  - New: ICOBOX - prevent icon/title collapse on mobile devices