OoohBoi Steroids for Elementor - Version 1.8.0

Version Description

  • Fix: Elementor editor content overflow issue for the "Layers for Elementor" WP theme
  • Fix: Baseline Grid messed up lines
  • Fix: SEARCHCOP for Product post type
  • Update: GSAP to 3.7.1
  • Update: ScrollTrigger to 3.7.1
  • Update: MotionPath to 3.7.1
Download this release

Release Info

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

Code changes from version 1.9.0 to 1.8.0

Files changed (56) 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-breaking-bad.php +1 -1
  22. controls/ooohboi-bullet.php +0 -91
  23. controls/ooohboi-butter-button.php +15 -67
  24. controls/ooohboi-commentz.php +2 -77
  25. controls/ooohboi-glider.php +14 -113
  26. controls/ooohboi-harakiri.php +36 -66
  27. controls/ooohboi-hover-animator.php +113 -214
  28. controls/ooohboi-icobox.php +0 -16
  29. controls/ooohboi-imbox.php +0 -16
  30. controls/ooohboi-overlaiz.php +18 -28
  31. controls/ooohboi-overlay-underlay.php +17 -157
  32. controls/ooohboi-perspektive.php +4 -35
  33. controls/ooohboi-photomorph.php +0 -31
  34. controls/ooohboi-pseudo.php +60 -153
  35. controls/ooohboi-searchcop.php +0 -46
  36. controls/ooohboi-spacerat.php +5 -48
  37. controls/ooohboi-videomasq.php +0 -1
  38. controls/ooohboi-widget-stalker.php +2 -32
  39. inc/common-functions.php +4 -29
  40. inc/exopite-simple-options/exopite-simple-options-framework-class.php +1 -1
  41. inc/img/anime-js.png +0 -0
  42. inc/img/harakiri-cutt-off-bottom.png +0 -0
  43. inc/img/icon-list-bullet.png +0 -0
  44. inc/img/sfe-new-interface.png +0 -0
  45. inc/info/ob-landing.php +17 -26
  46. lang/ooohboi-steroids.pot +619 -703
  47. lib/anime/anime.min.js +0 -8
  48. lib/gsap/gsap.min.js +11 -0
  49. lib/gsap/gsap.min.js.map +1 -0
  50. lib/motion_path/MotionPathPlugin.min.js +11 -0
  51. lib/motion_path/MotionPathPlugin.min.js.map +1 -0
  52. lib/scroll_to/ScrollToPlugin.min.js +11 -0
  53. lib/scrolltrigger/ScrollTrigger.min.js +11 -0
  54. lib/scrolltrigger/ScrollTrigger.min.js.map +1 -0
  55. ooohboi-steroids.php +63 -112
  56. readme.txt +6 -34
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-breaking-bad.php CHANGED
@@ -551,7 +551,7 @@ href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/O
551
  '_ob_bbad_is_stalker',
552
  [
553
  'label' => __( 'Enable Widget Stalker?', 'ooohboi-steroids' ),
554
- 'description' => __( 'NOTE: It changes the default alignment of widgets inside this column - including the Inner Section widget.', 'ooohboi-steroids' ),
555
  'separator' => 'before',
556
  'type' => Controls_Manager::SWITCHER,
557
  'label_on' => __( 'Yes', 'ooohboi-steroids' ),
551
  '_ob_bbad_is_stalker',
552
  [
553
  'label' => __( 'Enable Widget Stalker?', 'ooohboi-steroids' ),
554
+ 'description' => __( 'NOTE: It changes the default alignment of widgets inside this column - including the Ineer Section widget.', 'ooohboi-steroids' ),
555
  'separator' => 'before',
556
  'type' => Controls_Manager::SWITCHER,
557
  'label_on' => __( 'Yes', 'ooohboi-steroids' ),
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-icobox.php CHANGED
@@ -85,22 +85,6 @@ final class OoohBoi_Icobox {
85
  ],
86
  ]
87
  );
88
- // ------------------------------------------------------------------------- since 1.8.1 - Prevent icon & title collapse on mobiles
89
- $element->add_control(
90
- '_ob_icobox_no_collapse',
91
- [
92
- 'label' => sprintf( __( 'Prevent Icon and Title Collapse%sNEW!%s', 'ooohboi-steroids' ), '<sup class="ob-new-feature">', '</sup>' ),
93
- 'description' => __( 'The icon sits atop the title on mobiles. Prevent that, huh?', 'ooohboi-steroids' ),
94
- 'separator' => 'before',
95
- 'type' => Controls_Manager::SWITCHER,
96
- 'label_on' => __( 'Yes', 'ooohboi-steroids' ),
97
- 'label_off' => __( 'No', 'ooohboi-steroids' ),
98
- 'return_value' => 'inherit',
99
- 'selectors' => [
100
- '{{WRAPPER}}.elementor-position-left .elementor-icon-box-wrapper, {{WRAPPER}}.elementor-position-right .elementor-icon-box-wrapper' => 'display: flex !important;',
101
- ],
102
- ]
103
- );
104
  // ------------------------------------------------------------------------- CONTROL: Yes 4 more controls
105
  $element->add_control(
106
  '_ob_icobox_override_defaults',
85
  ],
86
  ]
87
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  // ------------------------------------------------------------------------- CONTROL: Yes 4 more controls
89
  $element->add_control(
90
  '_ob_icobox_override_defaults',
controls/ooohboi-imbox.php CHANGED
@@ -86,22 +86,6 @@ final class OoohBoi_Imbox {
86
  ],
87
  ]
88
  );
89
- // ------------------------------------------------------------------------- since 1.8.1 - Prevent icon & title collapse on mobiles
90
- $element->add_control(
91
- '_ob_imbox_no_collapse',
92
- [
93
- 'label' => sprintf( __( 'Prevent Image and Title Collapse%sNEW!%s', 'ooohboi-steroids' ), '<sup class="ob-new-feature">', '</sup>' ),
94
- 'description' => __( 'The thumbnail sits atop the title on mobiles. Prevent that, huh?', 'ooohboi-steroids' ),
95
- 'separator' => 'before',
96
- 'type' => Controls_Manager::SWITCHER,
97
- 'label_on' => __( 'Yes', 'ooohboi-steroids' ),
98
- 'label_off' => __( 'No', 'ooohboi-steroids' ),
99
- 'return_value' => 'inherit',
100
- 'selectors' => [
101
- '{{WRAPPER}}.elementor-position-left .elementor-image-box-wrapper, {{WRAPPER}}.elementor-position-right .elementor-image-box-wrapper' => 'display: flex !important;',
102
- ],
103
- ]
104
- );
105
 
106
  // ------------------------------------------------------------------------- CONTROL: Yes 4 more controls
107
  $element->add_control(
86
  ],
87
  ]
88
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
  // ------------------------------------------------------------------------- CONTROL: Yes 4 more controls
91
  $element->add_control(
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 ) {
@@ -136,7 +105,7 @@ class OoohBoi_Perspektive {
136
  'size' => 800,
137
  ],
138
  'selectors' => [
139
- $selector => 'transform: perspective({{SIZE}}{{UNIT}}); transform-style: preserve-3d;',
140
  ],
141
  'condition' => [
142
  '_ob_perspektive_use' => 'yes',
@@ -194,7 +163,7 @@ class OoohBoi_Perspektive {
194
  'size' => 0,
195
  ],
196
  'selectors' => [
197
- $selector . ' > *' => 'transform: translateZ({{SIZE}}{{UNIT}});',
198
  ],
199
  'condition' => [
200
  '_ob_perspektive_use' => 'yes',
@@ -218,7 +187,7 @@ class OoohBoi_Perspektive {
218
  'size' => 0,
219
  ],
220
  'selectors' => [
221
- $selector . ' > *' => 'transform: rotateX({{SIZE}}deg) rotateY({{_ob_perspektive_yrot.SIZE}}deg) translateZ({{_ob_perspektive_z.SIZE}}{{_ob_perspektive_z.UNIT}});',
222
  ],
223
  'condition' => [
224
  '_ob_perspektive_use' => 'yes',
@@ -242,7 +211,7 @@ class OoohBoi_Perspektive {
242
  'size' => 0,
243
  ],
244
  'selectors' => [
245
- $selector . ' > *' => 'transform: rotateX({{_ob_perspektive_xrot.SIZE}}deg) rotateY({{SIZE}}deg) translateZ({{_ob_perspektive_z.SIZE}}{{_ob_perspektive_z.UNIT}});',
246
  ],
247
  'condition' => [
248
  '_ob_perspektive_use' => 'yes',
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 ) {
105
  'size' => 800,
106
  ],
107
  'selectors' => [
108
+ $selector => 'perspective: {{SIZE}}{{UNIT}}; transform-style: preserve-3d;',
109
  ],
110
  'condition' => [
111
  '_ob_perspektive_use' => 'yes',
163
  'size' => 0,
164
  ],
165
  'selectors' => [
166
+ $selector . ' > [class*="elementor-"]' => 'transform: translateZ({{SIZE}}{{UNIT}});',
167
  ],
168
  'condition' => [
169
  '_ob_perspektive_use' => 'yes',
187
  'size' => 0,
188
  ],
189
  'selectors' => [
190
+ $selector . ' > [class*="elementor-"]' => 'transform: rotateX({{SIZE}}deg) rotateY({{_ob_perspektive_yrot.SIZE}}deg) translateZ({{_ob_perspektive_z.SIZE}}{{_ob_perspektive_z.UNIT}});',
191
  ],
192
  'condition' => [
193
  '_ob_perspektive_use' => 'yes',
211
  'size' => 0,
212
  ],
213
  'selectors' => [
214
+ $selector . ' > [class*="elementor-"]' => 'transform: rotateX({{_ob_perspektive_xrot.SIZE}}deg) rotateY({{SIZE}}deg) translateZ({{_ob_perspektive_z.SIZE}}{{_ob_perspektive_z.UNIT}});',
215
  ],
216
  'condition' => [
217
  '_ob_perspektive_use' => 'yes',
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
 
@@ -288,13 +272,6 @@ $fields[] = array(
288
  ),
289
  ),
290
  ),
291
- array(
292
- 'id' => 'ob_use_anime',
293
- 'title' => 'Anime',
294
- 'type' => 'switcher',
295
- 'description' => sprintf( __( '%1$s A lightweight JavaScript animation library with a simple, yet powerful API.%3$s%4$sSOURCE%5$s%2$s', 'ooohboi-steroids' ), '<span class="ob-option-desc">', '</span>', '<br />', '<a href="https://animejs.com/" title="Anime Home Page" target="_blank">', '</a>' ),
296
- 'default' => 'no',
297
- ),
298
  array(
299
  'id' => 'ob_use_barba',
300
  'title' => 'Barba',
@@ -302,39 +279,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
 
272
  ),
273
  ),
274
  ),
 
 
 
 
 
 
 
275
  array(
276
  'id' => 'ob_use_barba',
277
  'title' => 'Barba',
279
  '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>' ),
280
  'default' => 'no',
281
  ),
 
282
  array(
283
  'type' => 'card',
284
  'class' => 'sfe-card-warning',
285
  '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' ),
286
  ),
 
287
  array(
288
  'id' => 'ob_use_gsap',
289
  'title' => 'GSAP',
290
  'type' => 'switcher',
291
+ '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>' ),
292
  'default' => 'no',
293
  ),
294
  array(
295
  'id' => 'ob_use_scroll_trigger',
296
  'title' => 'GSAP - SCROLL TRIGGER',
297
  'type' => 'switcher',
298
+ '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>' ),
299
  'default' => 'no',
300
  ),
301
  array(
302
  'id' => 'ob_use_scroll_to',
303
  'title' => 'GSAP - SCROLL TO',
304
  'type' => 'switcher',
305
+ '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>' ),
306
  'default' => 'no',
307
  ),
308
  array(
309
  'id' => 'ob_use_motion_path',
310
  'title' => 'GSAP - MOTION PATH',
311
  'type' => 'switcher',
312
+ '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>' ),
313
  'default' => 'no',
314
  ),
315
 
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/anime-js.png DELETED
Binary file
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,34 @@
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?</h3>
14
  <p>
15
+ A couple of bugs fixed, the loadable JS Libraries were updated to the latest version(s).
16
  </p>
17
+ <p><strong>Do you experience some problems with the particular extensions' Settings/Options?</strong></p>
18
  <p>
19
+ It turns out that these are caused by the Elementor bug which relates to the latest Additional Breakpoints feature, and the responsive controls
20
+ grouped under the Popover toggle control. <br/>
21
+ PLEASE disable the Additional Breakpoints under the Experiments tab until the problem resolved.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  </p>
23
+
24
+ <hr />
25
+
26
+ <h3>v1.7.9 Info</h3>
27
+ <p><strong>New options added to Glider!</strong></p>
28
  <p>
29
+ <img src="<?php echo SFE_DIR_URL . 'img/glider-centered.png'; ?>" alt="New Glider Features" />
 
30
  </p>
31
  <p>
32
+ <em>centeredSlides</em> and <em>centeredSlidesBounds</em> Swiper params are now added to "Glider" extension
33
+ settings. <strong>BEWARE!</strong> Unless you enable "Show Multiple Slides" option, you won't be able to see these!
34
  </p>
35
  <p>
36
+ <em>roundLenghts</em> is here as well! If you ever got issues with blurry slides (on usual resolution screens),
37
+ this is something that can help.
38
  </p>
39
  <p>
40
+ A couple of "regular" bugs also got fixed!
41
  </p>
42
 
43
  </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,48 @@ 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 +92,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 +101,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 +143,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 +197,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 +229,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 +245,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
 
@@ -277,26 +266,27 @@ msgid "Scrollable Column?"
277
  msgstr ""
278
 
279
  #: controls/ooohboi-breaking-bad.php:499
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,14 +295,14 @@ 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
 
312
  #: controls/ooohboi-breaking-bad.php:554
313
  msgid ""
314
  "NOTE: It changes the default alignment of widgets inside this column - "
315
- "including the Inner Section widget."
316
  msgstr ""
317
 
318
  #: controls/ooohboi-breaking-bad.php:568
@@ -323,968 +313,903 @@ 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
 
1187
- #: controls/ooohboi-icobox.php:92
1188
- #, php-format
1189
- msgid "Prevent Icon and Title Collapse%sNEW!%s"
1190
- msgstr ""
1191
-
1192
- #: controls/ooohboi-icobox.php:93
1193
- msgid "The icon sits atop the title on mobiles. Prevent that, huh?"
1194
- msgstr ""
1195
-
1196
- #: controls/ooohboi-icobox.php:108 controls/ooohboi-icobox.php:243
1197
- #: controls/ooohboi-imbox.php:110 controls/ooohboi-imbox.php:406
1198
  msgid "Overrides"
1199
  msgstr ""
1200
 
1201
- #: controls/ooohboi-icobox.php:109 controls/ooohboi-imbox.php:111
1202
  msgid "Allow more basic controls?"
1203
  msgstr ""
1204
 
1205
- #: controls/ooohboi-icobox.php:159
1206
  msgid "Icon Padding"
1207
  msgstr ""
1208
 
1209
- #: controls/ooohboi-icobox.php:175
1210
  msgid "Icon Margin"
1211
  msgstr ""
1212
 
1213
- #: controls/ooohboi-icobox.php:229 controls/ooohboi-imbox.php:306
1214
  msgid "Box Padding"
1215
  msgstr ""
1216
 
1217
- #: controls/ooohboi-icobox.php:244 controls/ooohboi-imbox.php:407
1218
  msgid "Allow separate controls for Title and Description?"
1219
  msgstr ""
1220
 
1221
- #: controls/ooohboi-icobox.php:258 controls/ooohboi-imbox.php:420
1222
  msgid "Title Padding"
1223
  msgstr ""
1224
 
1225
- #: controls/ooohboi-icobox.php:274 controls/ooohboi-imbox.php:436
1226
  msgid "Title Margin"
1227
  msgstr ""
1228
 
1229
- #: controls/ooohboi-icobox.php:289 controls/ooohboi-imbox.php:452
1230
  msgid "Description Padding"
1231
  msgstr ""
1232
 
1233
- #: controls/ooohboi-icobox.php:305 controls/ooohboi-imbox.php:468
1234
  msgid "Description Margin"
1235
  msgstr ""
1236
 
1237
- #: controls/ooohboi-imbox.php:93
1238
- #, php-format
1239
- msgid "Prevent Image and Title Collapse%sNEW!%s"
1240
- msgstr ""
1241
-
1242
- #: controls/ooohboi-imbox.php:94
1243
- msgid "The thumbnail sits atop the title on mobiles. Prevent that, huh?"
1244
- msgstr ""
1245
-
1246
- #: controls/ooohboi-imbox.php:124
1247
  msgid "Image Size"
1248
  msgstr ""
1249
 
1250
- #: controls/ooohboi-imbox.php:161
1251
  msgid "Image Padding"
1252
  msgstr ""
1253
 
1254
- #: controls/ooohboi-imbox.php:177
1255
  msgid "Image Margin"
1256
  msgstr ""
1257
 
1258
- #: controls/ooohboi-imbox.php:192
1259
  msgid "Enable full-height?"
1260
  msgstr ""
1261
 
1262
- #: controls/ooohboi-imbox.php:193
1263
  msgid ""
1264
  "That will make the photo full-height. Makes sense only if the photo is "
1265
  "placed left or the right-hand side!"
1266
  msgstr ""
1267
 
1268
- #: controls/ooohboi-imbox.php:246
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"
1281
  msgstr ""
1282
 
1283
- #: controls/ooohboi-imbox.php:319
1284
  msgid "Box Margin"
1285
  msgstr ""
1286
 
1287
- #: controls/ooohboi-imbox.php:392
1288
  msgid "Box z-index"
1289
  msgstr ""
1290
 
@@ -1308,68 +1233,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 +1302,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 +1553,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 +1597,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 +1683,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 +1787,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 +1799,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 +1837,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 +1968,89 @@ 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-08-03 15:31+0200\n"
7
+ "PO-Revision-Date: 2021-08-03 15:30+0200\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:231 controls/ooohboi-imbox.php:98
47
+ #: controls/ooohboi-imbox.php:394 controls/ooohboi-overlaiz.php:61
48
+ #: controls/ooohboi-overlay-underlay.php:1258
49
+ #: controls/ooohboi-overlay-underlay.php:1277 controls/ooohboi-paginini.php:220
50
+ #: controls/ooohboi-perspektive.php:74 controls/ooohboi-photomorph.php:66
51
+ #: controls/ooohboi-photomorph.php:142 controls/ooohboi-pseudo.php:69
52
+ #: controls/ooohboi-shadough.php:50 controls/ooohboi-spacerat.php:69
53
+ #: controls/ooohboi-spacerat.php:339 controls/ooohboi-widget-stalker.php:67
 
 
 
 
54
  #: inc/exopite-simple-options/fields/upload.php:131
55
  msgid "Yes"
56
  msgstr ""
57
 
58
  #: controls/ooohboi-breaking-bad.php:94 controls/ooohboi-breaking-bad.php:176
59
  #: controls/ooohboi-breaking-bad.php:483 controls/ooohboi-breaking-bad.php:558
60
+ #: controls/ooohboi-butter-button.php:72 controls/ooohboi-commentz.php:71
61
+ #: controls/ooohboi-commentz.php:1064 controls/ooohboi-glider.php:69
62
+ #: controls/ooohboi-glider.php:84 controls/ooohboi-glider.php:135
63
+ #: controls/ooohboi-glider.php:360 controls/ooohboi-glider.php:517
64
+ #: controls/ooohboi-glider.php:598 controls/ooohboi-glider.php:619
65
+ #: controls/ooohboi-glider.php:641 controls/ooohboi-glider.php:681
66
+ #: controls/ooohboi-glider.php:716 controls/ooohboi-glider.php:734
67
+ #: controls/ooohboi-glider.php:753 controls/ooohboi-glider.php:772
68
+ #: controls/ooohboi-harakiri.php:95 controls/ooohboi-hover-animator.php:69
69
+ #: controls/ooohboi-hover-animator.php:146 controls/ooohboi-icobox.php:97
70
+ #: controls/ooohboi-icobox.php:232 controls/ooohboi-imbox.php:99
71
+ #: controls/ooohboi-imbox.php:395 controls/ooohboi-overlaiz.php:62
72
+ #: controls/ooohboi-overlay-underlay.php:1259
73
+ #: controls/ooohboi-overlay-underlay.php:1278 controls/ooohboi-paginini.php:221
74
+ #: controls/ooohboi-perspektive.php:75 controls/ooohboi-photomorph.php:67
75
+ #: controls/ooohboi-photomorph.php:143 controls/ooohboi-pseudo.php:70
76
+ #: controls/ooohboi-shadough.php:51 controls/ooohboi-spacerat.php:70
77
+ #: controls/ooohboi-spacerat.php:340 controls/ooohboi-widget-stalker.php:68
 
 
 
 
78
  #: inc/exopite-simple-options/fields/upload.php:129
79
  msgid "No"
80
  msgstr ""
92
  #: controls/ooohboi-breaking-bad.php:109 controls/ooohboi-breaking-bad.php:155
93
  #: controls/ooohboi-breaking-bad.php:315 controls/ooohboi-breaking-bad.php:338
94
  #: controls/ooohboi-breaking-bad.php:467 controls/ooohboi-breaking-bad.php:592
95
+ #: controls/ooohboi-breaking-bad.php:616 controls/ooohboi-commentz.php:133
96
+ #: controls/ooohboi-commentz.php:653 controls/ooohboi-widget-stalker.php:196
97
  msgid "Center"
98
  msgstr ""
99
 
101
  #: controls/ooohboi-breaking-bad.php:316 controls/ooohboi-breaking-bad.php:339
102
  #: controls/ooohboi-breaking-bad.php:468 controls/ooohboi-breaking-bad.php:593
103
  #: controls/ooohboi-breaking-bad.php:617
104
+ #: controls/ooohboi-widget-stalker.php:197
105
  msgid "End"
106
  msgstr ""
107
 
143
  "avoid content overlaps."
144
  msgstr ""
145
 
146
+ #: controls/ooohboi-breaking-bad.php:192 controls/ooohboi-widget-stalker.php:79
 
147
  msgid "Size Method"
148
  msgstr ""
149
 
150
+ #: controls/ooohboi-breaking-bad.php:193 controls/ooohboi-widget-stalker.php:80
 
151
  msgid "Use Flex or Units?"
152
  msgstr ""
153
 
154
  #: controls/ooohboi-breaking-bad.php:198 controls/ooohboi-breaking-bad.php:210
155
+ #: controls/ooohboi-widget-stalker.php:84
156
+ #: controls/ooohboi-widget-stalker.php:96
157
  msgid "Flex"
158
  msgstr ""
159
 
160
+ #: controls/ooohboi-breaking-bad.php:199 controls/ooohboi-widget-stalker.php:85
 
161
  msgid "Units"
162
  msgstr ""
163
 
164
+ #: controls/ooohboi-breaking-bad.php:249 controls/ooohboi-overlaiz.php:75
165
+ #: controls/ooohboi-overlaiz.php:578 controls/ooohboi-overlay-underlay.php:170
166
+ #: controls/ooohboi-overlay-underlay.php:557
167
+ #: controls/ooohboi-overlay-underlay.php:766
168
+ #: controls/ooohboi-overlay-underlay.php:1132 controls/ooohboi-pseudo.php:182
169
+ #: controls/ooohboi-pseudo.php:593 controls/ooohboi-pseudo.php:815
170
+ #: controls/ooohboi-pseudo.php:1213 controls/ooohboi-spacerat.php:238
171
+ #: controls/ooohboi-videomasq.php:122
172
  msgid "Width"
173
  msgstr ""
174
 
175
  #: controls/ooohboi-breaking-bad.php:255 controls/ooohboi-breaking-bad.php:294
176
  #: controls/ooohboi-breaking-bad.php:406 controls/ooohboi-teleporter.php:137
177
  #: controls/ooohboi-teleporter.php:155 controls/ooohboi-teleporter.php:186
178
+ #: controls/ooohboi-teleporter.php:203 controls/ooohboi-widget-stalker.php:138
179
+ #: controls/ooohboi-widget-stalker.php:176
180
  msgid ""
181
  "You can enter any acceptable CSS value, for example: 50em, 300px, 100%, "
182
  "calc(100% - 300px)."
183
  msgstr ""
184
 
185
  #: controls/ooohboi-breaking-bad.php:289 controls/ooohboi-breaking-bad.php:402
186
+ #: controls/ooohboi-widget-stalker.php:172
187
  msgid "Max Width"
188
  msgstr ""
189
 
197
  "direction is Row or Inherit)."
198
  msgstr ""
199
 
200
+ #: controls/ooohboi-breaking-bad.php:313 controls/ooohboi-overlaiz.php:558
201
+ #: controls/ooohboi-overlay-underlay.php:539
202
+ #: controls/ooohboi-overlay-underlay.php:1115 controls/ooohboi-pseudo.php:574
203
+ #: controls/ooohboi-pseudo.php:1195 controls/ooohboi-spacerat.php:220
204
+ #: controls/ooohboi-videomasq.php:104 controls/ooohboi-widget-stalker.php:194
205
  msgid "Auto"
206
  msgstr ""
207
 
208
  #: controls/ooohboi-breaking-bad.php:314
209
+ #: controls/ooohboi-widget-stalker.php:195
210
  msgid "Baseline"
211
  msgstr ""
212
 
229
  msgstr ""
230
 
231
  #: controls/ooohboi-breaking-bad.php:355 controls/ooohboi-breaking-bad.php:444
232
+ #: controls/ooohboi-widget-stalker.php:213
233
  #, php-format
234
  msgid "More info at %sMozilla%s."
235
  msgstr ""
245
  "Breaking Bad for this Column parent SECTION!"
246
  msgstr ""
247
 
248
+ #: controls/ooohboi-breaking-bad.php:416 controls/ooohboi-harakiri.php:155
249
  msgid "Custom Height"
250
  msgstr ""
251
 
266
  msgstr ""
267
 
268
  #: controls/ooohboi-breaking-bad.php:499
269
+ #, php-format
270
+ msgid "Column Link%sNEW!%s"
271
  msgstr ""
272
 
273
+ #: controls/ooohboi-breaking-bad.php:504 controls/ooohboi-spacerat.php:94
274
  #: controls/ooohboi-teleporter.php:78
275
  msgid "None"
276
  msgstr ""
277
 
278
+ #: controls/ooohboi-breaking-bad.php:505 controls/ooohboi-spacerat.php:95
279
  #: controls/ooohboi-teleporter.php:79
280
  msgid "Custom URL"
281
  msgstr ""
282
 
283
+ #: controls/ooohboi-breaking-bad.php:516 controls/ooohboi-spacerat.php:90
284
+ #: controls/ooohboi-spacerat.php:107 controls/ooohboi-teleporter.php:73
285
  #: controls/ooohboi-teleporter.php:90
286
  msgid "Link"
287
  msgstr ""
288
 
289
+ #: controls/ooohboi-breaking-bad.php:523 controls/ooohboi-spacerat.php:113
290
  #: controls/ooohboi-teleporter.php:97
291
  msgid "https://your-link.com"
292
  msgstr ""
295
  msgid "Widget Stalker"
296
  msgstr ""
297
 
298
+ #: controls/ooohboi-breaking-bad.php:553 controls/ooohboi-widget-stalker.php:63
299
  msgid "Enable Widget Stalker?"
300
  msgstr ""
301
 
302
  #: controls/ooohboi-breaking-bad.php:554
303
  msgid ""
304
  "NOTE: It changes the default alignment of widgets inside this column - "
305
+ "including the Ineer Section widget."
306
  msgstr ""
307
 
308
  #: controls/ooohboi-breaking-bad.php:568
313
  msgid "Align Widgets"
314
  msgstr ""
315
 
316
+ #: controls/ooohboi-butter-button.php:68
317
+ msgid "Enable Butter Buttons?"
 
 
 
 
 
 
 
 
 
318
  msgstr ""
319
 
320
+ #: controls/ooohboi-butter-button.php:84
321
+ msgid "Typography"
322
  msgstr ""
323
 
324
+ #: controls/ooohboi-butter-button.php:97 controls/ooohboi-icobox.php:106
325
  msgid "Icon Size"
326
  msgstr ""
327
 
328
+ #: controls/ooohboi-butter-button.php:98
329
  msgid "Be sure the icon is selected in the Content tab!"
330
  msgstr ""
331
 
332
+ #: controls/ooohboi-butter-button.php:132
333
  msgid "Transition Duration"
334
  msgstr ""
335
 
336
+ #: controls/ooohboi-butter-button.php:158 controls/ooohboi-commentz.php:149
337
+ #: controls/ooohboi-commentz.php:733 controls/ooohboi-commentz.php:960
338
+ #: controls/ooohboi-glider.php:277 controls/ooohboi-kontrolz.php:107
339
  #: controls/ooohboi-paginini.php:59
340
  msgid "Padding"
341
  msgstr ""
342
 
343
+ #: controls/ooohboi-butter-button.php:178
344
+ msgid "Regular"
 
 
 
 
345
  msgstr ""
346
 
347
+ #: controls/ooohboi-butter-button.php:186
348
+ #: controls/ooohboi-butter-button.php:298
349
  msgid "Text Color"
350
  msgstr ""
351
 
352
+ #: controls/ooohboi-butter-button.php:206
353
+ #: controls/ooohboi-butter-button.php:319
354
  msgctxt "Butter Button Text Shadow Control"
355
  msgid "Text Shadow"
356
  msgstr ""
357
 
358
+ #: controls/ooohboi-butter-button.php:233
359
+ #: controls/ooohboi-butter-button.php:346 controls/ooohboi-commentz.php:246
360
+ #: controls/ooohboi-commentz.php:420 controls/ooohboi-commentz.php:919
361
+ #: controls/ooohboi-imbox.php:193 controls/ooohboi-imbox.php:207
362
+ #: controls/ooohboi-imbox.php:339 controls/ooohboi-imbox.php:353
363
+ #: controls/ooohboi-overlaiz.php:368 controls/ooohboi-overlaiz.php:387
364
+ #: controls/ooohboi-overlay-underlay.php:426
365
+ #: controls/ooohboi-overlay-underlay.php:443
366
+ #: controls/ooohboi-overlay-underlay.php:1003
367
+ #: controls/ooohboi-overlay-underlay.php:1020 controls/ooohboi-paginini.php:146
368
+ #: controls/ooohboi-paginini.php:195 controls/ooohboi-pseudo.php:455
369
+ #: controls/ooohboi-pseudo.php:473 controls/ooohboi-pseudo.php:1077
370
+ #: controls/ooohboi-pseudo.php:1095
 
 
 
 
 
 
 
 
 
 
 
 
371
  msgid "Border"
372
  msgstr ""
373
 
374
+ #: controls/ooohboi-butter-button.php:246
375
+ #: controls/ooohboi-butter-button.php:359 controls/ooohboi-commentz.php:257
376
+ #: controls/ooohboi-commentz.php:432 controls/ooohboi-commentz.php:805
377
+ #: controls/ooohboi-commentz.php:930 controls/ooohboi-glider.php:235
378
+ #: controls/ooohboi-glider.php:472 controls/ooohboi-imbox.php:215
379
+ #: controls/ooohboi-imbox.php:361 controls/ooohboi-kontrolz.php:95
380
+ #: controls/ooohboi-kontrolz.php:207 controls/ooohboi-overlaiz.php:399
381
+ #: controls/ooohboi-overlay-underlay.php:454
382
+ #: controls/ooohboi-overlay-underlay.php:1031 controls/ooohboi-paginini.php:154
383
+ #: controls/ooohboi-paginini.php:203 controls/ooohboi-pseudo.php:485
384
+ #: controls/ooohboi-pseudo.php:1107
385
  msgid "Border Radius"
386
  msgstr ""
387
 
388
+ #: controls/ooohboi-butter-button.php:264
389
+ #: controls/ooohboi-butter-button.php:377 controls/ooohboi-icobox.php:55
390
+ #: controls/ooohboi-imbox.php:56 controls/ooohboi-imbox.php:317
391
+ #: controls/ooohboi-overlaiz.php:419
392
  msgid "Box Shadow"
393
  msgstr ""
394
 
395
+ #: controls/ooohboi-butter-button.php:290 controls/ooohboi-photomorph.php:111
396
  #: controls/ooohboi-teleporter.php:174
397
  msgid "Hover"
398
  msgstr ""
399
 
400
+ #: controls/ooohboi-commentz.php:67
 
 
 
 
 
 
401
  msgid "Enable Commentz"
402
  msgstr ""
403
 
404
+ #: controls/ooohboi-commentz.php:68
405
  msgid "That will allow you to style up the post comments."
406
  msgstr ""
407
 
408
+ #: controls/ooohboi-commentz.php:84
409
  msgid "Heading"
410
  msgstr ""
411
 
412
+ #: controls/ooohboi-commentz.php:97
413
  msgid "Heading style"
414
  msgstr ""
415
 
416
+ #: controls/ooohboi-commentz.php:112 controls/ooohboi-commentz.php:502
417
+ #: controls/ooohboi-commentz.php:575 controls/ooohboi-commentz.php:866
418
+ #: controls/ooohboi-harakiri.php:228
419
  msgid "Color"
420
  msgstr ""
421
 
422
+ #: controls/ooohboi-commentz.php:128
423
  msgid "Text alignment"
424
  msgstr ""
425
 
426
+ #: controls/ooohboi-commentz.php:132 controls/ooohboi-commentz.php:652
427
  msgid "Left"
428
  msgstr ""
429
 
430
+ #: controls/ooohboi-commentz.php:134 controls/ooohboi-commentz.php:654
431
  msgid "Right"
432
  msgstr ""
433
 
434
+ #: controls/ooohboi-commentz.php:168 controls/ooohboi-commentz.php:590
435
+ #: controls/ooohboi-commentz.php:749 controls/ooohboi-commentz.php:881
436
+ #: controls/ooohboi-commentz.php:979 controls/ooohboi-commentz.php:1041
437
  #: controls/ooohboi-paginini.php:75
438
  msgid "Margin"
439
  msgstr ""
440
 
441
+ #: controls/ooohboi-commentz.php:201
442
  msgid "Comment list style"
443
  msgstr ""
444
 
445
+ #: controls/ooohboi-commentz.php:216
446
  msgid "Comment body padding"
447
  msgstr ""
448
 
449
+ #: controls/ooohboi-commentz.php:231
450
  msgid "Comment body margin"
451
  msgstr ""
452
 
453
+ #: controls/ooohboi-commentz.php:272 controls/ooohboi-commentz.php:945
454
  msgid "Background color"
455
  msgstr ""
456
 
457
+ #: controls/ooohboi-commentz.php:287
458
  msgid "Background color replies"
459
  msgstr ""
460
 
461
+ #: controls/ooohboi-commentz.php:303
462
  msgid "Child comments indent"
463
  msgstr ""
464
 
465
+ #: controls/ooohboi-commentz.php:335
466
  msgid "Gravatar"
467
  msgstr ""
468
 
469
+ #: controls/ooohboi-commentz.php:339
470
  msgid "Hide"
471
  msgstr ""
472
 
473
+ #: controls/ooohboi-commentz.php:340
474
  msgid "Show"
475
  msgstr ""
476
 
477
+ #: controls/ooohboi-commentz.php:356
478
  msgid "Gravatar style"
479
  msgstr ""
480
 
481
+ #: controls/ooohboi-commentz.php:372 controls/ooohboi-glider.php:446
482
  msgid "Size"
483
  msgstr ""
484
 
485
+ #: controls/ooohboi-commentz.php:403
486
  msgid "Position"
487
  msgstr ""
488
 
489
+ #: controls/ooohboi-commentz.php:463
490
  msgid "Meta-data User"
491
  msgstr ""
492
 
493
+ #: controls/ooohboi-commentz.php:475
494
  msgid "Meta-data Time"
495
  msgstr ""
496
 
497
+ #: controls/ooohboi-commentz.php:488
498
  msgid "Meta-data style"
499
  msgstr ""
500
 
501
+ #: controls/ooohboi-commentz.php:517
502
  msgid "Outer Margin"
503
  msgstr ""
504
 
505
+ #: controls/ooohboi-commentz.php:547
506
  msgid "Comment text"
507
  msgstr ""
508
 
509
+ #: controls/ooohboi-commentz.php:560
510
  msgid "Comment text style"
511
  msgstr ""
512
 
513
+ #: controls/ooohboi-commentz.php:620
514
  msgid "Reply button"
515
  msgstr ""
516
 
517
+ #: controls/ooohboi-commentz.php:633
518
  msgid "Reply button style"
519
  msgstr ""
520
 
521
+ #: controls/ooohboi-commentz.php:648
522
  msgid "Align button"
523
  msgstr ""
524
 
525
+ #: controls/ooohboi-commentz.php:669
526
  msgid "Text color normal"
527
  msgstr ""
528
 
529
+ #: controls/ooohboi-commentz.php:684
530
  msgid "Text color hover"
531
  msgstr ""
532
 
533
+ #: controls/ooohboi-commentz.php:700
534
  msgid "Background color normal"
535
  msgstr ""
536
 
537
+ #: controls/ooohboi-commentz.php:717
538
  msgid "Background color hover"
539
  msgstr ""
540
 
541
+ #: controls/ooohboi-commentz.php:765
542
  msgid "Border color normal"
543
  msgstr ""
544
 
545
+ #: controls/ooohboi-commentz.php:778
546
  msgid "Border color hover"
547
  msgstr ""
548
 
549
+ #: controls/ooohboi-commentz.php:791
550
  msgid "Border Width"
551
  msgstr ""
552
 
553
+ #: controls/ooohboi-commentz.php:837
554
  msgid "Comment form heading"
555
  msgstr ""
556
 
557
+ #: controls/ooohboi-commentz.php:851
558
  msgid "Comment form heading style"
559
  msgstr ""
560
 
561
+ #: controls/ooohboi-commentz.php:904
562
  msgid "Comment form style"
563
  msgstr ""
564
 
565
+ #: controls/ooohboi-commentz.php:1013
566
  msgid "Comments Nav"
567
  msgstr ""
568
 
569
+ #: controls/ooohboi-commentz.php:1026
570
  msgid "Comments Nav style"
571
  msgstr ""
572
 
573
+ #: controls/ooohboi-commentz.php:1059
574
  msgid "Hide the Website input field?"
575
  msgstr ""
576
 
577
+ #: controls/ooohboi-commentz.php:1060
578
  msgid ""
579
  "If you make it hidden, be sure it's not mandatory otherwise the comment can "
580
  "not be posted!"
581
  msgstr ""
582
 
583
+ #: controls/ooohboi-glider.php:64
584
  msgid "Create Slider?"
585
  msgstr ""
586
 
587
+ #: controls/ooohboi-glider.php:65
588
+ msgid "This section columns will become slidable."
 
 
589
  msgstr ""
590
 
591
+ #: controls/ooohboi-glider.php:80
592
  msgid "Adaptable height?"
593
  msgstr ""
594
 
595
+ #: controls/ooohboi-glider.php:98
596
  msgid "Slider height"
597
  msgstr ""
598
 
599
+ #: controls/ooohboi-glider.php:131
600
  msgid "Hide Navigation"
601
  msgstr ""
602
 
603
+ #: controls/ooohboi-glider.php:152 controls/ooohboi-kontrolz.php:46
604
  msgid "Navigation styles"
605
  msgstr ""
606
 
607
+ #: controls/ooohboi-glider.php:169
608
  msgid "Arrows Color"
609
  msgstr ""
610
 
611
+ #: controls/ooohboi-glider.php:186 controls/ooohboi-kontrolz.php:58
612
  msgid "Arrows Color - Hover"
613
  msgstr ""
614
 
615
+ #: controls/ooohboi-glider.php:203 controls/ooohboi-kontrolz.php:71
616
  #: controls/ooohboi-paginini.php:47 controls/ooohboi-paginini.php:121
617
  #: controls/ooohboi-paginini.php:182
618
  msgid "Background Color"
619
  msgstr ""
620
 
621
+ #: controls/ooohboi-glider.php:219 controls/ooohboi-kontrolz.php:83
622
  msgid "Background Color - Hover"
623
  msgstr ""
624
 
625
+ #: controls/ooohboi-glider.php:251
626
  msgid "Icon size"
627
  msgstr ""
628
 
629
+ #: controls/ooohboi-glider.php:302 controls/ooohboi-kontrolz.php:128
630
  msgid "Calc - Y"
631
  msgstr ""
632
 
633
+ #: controls/ooohboi-glider.php:303 controls/ooohboi-glider.php:321
634
+ #: controls/ooohboi-glider.php:338 controls/ooohboi-kontrolz.php:129
635
  #: controls/ooohboi-kontrolz.php:143 controls/ooohboi-kontrolz.php:156
636
  msgid "Valid CSS only! Like: 25px or 15em or 100% - 50px or 50% + 3rem"
637
  msgstr ""
638
 
639
+ #: controls/ooohboi-glider.php:319 controls/ooohboi-kontrolz.php:141
640
  msgid "Calc Prev - X"
641
  msgstr ""
642
 
643
+ #: controls/ooohboi-glider.php:336 controls/ooohboi-kontrolz.php:154
644
  msgid "Calc Next - X"
645
  msgstr ""
646
 
647
+ #: controls/ooohboi-glider.php:356
648
  msgid "Hide Pagination"
649
  msgstr ""
650
 
651
+ #: controls/ooohboi-glider.php:378 controls/ooohboi-kontrolz.php:170
652
  msgid "Pagination styles"
653
  msgstr ""
654
 
655
+ #: controls/ooohboi-glider.php:394
656
  msgid "Pagination type"
657
  msgstr ""
658
 
659
+ #: controls/ooohboi-glider.php:398
660
  msgid "Bullets"
661
  msgstr ""
662
 
663
+ #: controls/ooohboi-glider.php:399
664
  msgid "Fraction"
665
  msgstr ""
666
 
667
+ #: controls/ooohboi-glider.php:400
668
  msgid "Progress Bar"
669
  msgstr ""
670
 
671
+ #: controls/ooohboi-glider.php:413 controls/ooohboi-kontrolz.php:182
672
  msgid "Pagination Color"
673
  msgstr ""
674
 
675
+ #: controls/ooohboi-glider.php:429 controls/ooohboi-kontrolz.php:195
676
  msgid "Pagination Color - Active"
677
  msgstr ""
678
 
679
+ #: controls/ooohboi-glider.php:493
680
  msgid "Transition type"
681
  msgstr ""
682
 
683
+ #: controls/ooohboi-glider.php:498
684
  msgid "Slide"
685
  msgstr ""
686
 
687
+ #: controls/ooohboi-glider.php:499 controls/ooohboi-teleporter.php:317
688
  msgid "Fade"
689
  msgstr ""
690
 
691
+ #: controls/ooohboi-glider.php:513
692
  msgid "Show Multiple Slides"
693
  msgstr ""
694
 
695
+ #: controls/ooohboi-glider.php:534
696
  msgid "Slides Per View"
697
  msgstr ""
698
 
699
+ #: controls/ooohboi-glider.php:555
700
  msgid "Slides to Scroll"
701
  msgstr ""
702
 
703
+ #: controls/ooohboi-glider.php:556
704
  msgid "Scrolling multiple slides can break infinite loop."
705
  msgstr ""
706
 
707
+ #: controls/ooohboi-glider.php:575
708
  msgid "Space Between Slides (px)"
709
  msgstr ""
710
 
711
+ #: controls/ooohboi-glider.php:593
712
+ #, php-format
713
+ msgid "Centered Slides%sNEW!%s"
714
  msgstr ""
715
 
716
+ #: controls/ooohboi-glider.php:594
717
  msgid "Active slide will be centered."
718
  msgstr ""
719
 
720
+ #: controls/ooohboi-glider.php:614
721
+ #, php-format
722
+ msgid "Centered Slide Bounds%sNEW!%s"
723
  msgstr ""
724
 
725
+ #: controls/ooohboi-glider.php:615
726
  msgid ""
727
  "Active slide will be centered without adding gaps at the beginning and end "
728
  "of slider."
729
  msgstr ""
730
 
731
+ #: controls/ooohboi-glider.php:637
732
  msgid "Infinite Loop"
733
  msgstr ""
734
 
735
+ #: controls/ooohboi-glider.php:656
736
  msgid "Direction"
737
  msgstr ""
738
 
739
+ #: controls/ooohboi-glider.php:661
740
  msgid "Horizontal"
741
  msgstr ""
742
 
743
+ #: controls/ooohboi-glider.php:662
744
  msgid "Vertical"
745
  msgstr ""
746
 
747
+ #: controls/ooohboi-glider.php:676
748
  msgid "Parallax"
749
  msgstr ""
750
 
751
+ #: controls/ooohboi-glider.php:677
752
  msgid "It will work with Elementor PRO Attributes only."
753
  msgstr ""
754
 
755
+ #: controls/ooohboi-glider.php:696
756
  msgid "Transition speed"
757
  msgstr ""
758
 
759
+ #: controls/ooohboi-glider.php:712
760
  msgid "Enable Touch Move"
761
  msgstr ""
762
 
763
+ #: controls/ooohboi-glider.php:730
764
  msgid "Enable Mousewheel"
765
  msgstr ""
766
 
767
+ #: controls/ooohboi-glider.php:748
768
+ #, php-format
769
+ msgid "Deblur Slides%sNEW!%s"
770
  msgstr ""
771
 
772
+ #: controls/ooohboi-glider.php:749
773
  msgid "Round values of slides width and height to prevent blurry texts?"
774
  msgstr ""
775
 
776
+ #: controls/ooohboi-glider.php:768
777
  msgid "Autoplay"
778
  msgstr ""
779
 
780
+ #: controls/ooohboi-glider.php:786
781
  msgid "Autoplay delay"
782
  msgstr ""
783
 
784
+ #: controls/ooohboi-glider.php:787
785
  msgid "In miliseconds! 1000 is one second."
786
  msgstr ""
787
 
788
+ #: controls/ooohboi-harakiri.php:60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
789
  msgid "Color - HOVER"
790
  msgstr ""
791
 
792
+ #: controls/ooohboi-harakiri.php:72
793
  msgid "Writing Mode"
794
  msgstr ""
795
 
796
+ #: controls/ooohboi-harakiri.php:78
797
  msgid "Vertical LR"
798
  msgstr ""
799
 
800
+ #: controls/ooohboi-harakiri.php:79
801
  msgid "Vertical RL"
802
  msgstr ""
803
 
804
+ #: controls/ooohboi-harakiri.php:80 controls/ooohboi-overlay-underlay.php:131
805
+ #: controls/ooohboi-overlay-underlay.php:727 controls/ooohboi-photomorph.php:81
806
+ #: controls/ooohboi-pseudo.php:141 controls/ooohboi-pseudo.php:774
807
+ #: controls/ooohboi-teleporter.php:129
808
+ msgid "Normal"
809
+ msgstr ""
810
+
811
+ #: controls/ooohboi-harakiri.php:92
812
  msgid "Flip"
813
  msgstr ""
814
 
815
+ #: controls/ooohboi-harakiri.php:131 controls/ooohboi-overlaiz.php:142
816
+ #: controls/ooohboi-overlay-underlay.php:227
817
+ #: controls/ooohboi-overlay-underlay.php:819 controls/ooohboi-pseudo.php:243
818
+ #: controls/ooohboi-pseudo.php:874
819
  msgid "Height"
820
  msgstr ""
821
 
822
+ #: controls/ooohboi-harakiri.php:135 controls/ooohboi-harakiri.php:214
823
+ #: controls/ooohboi-hover-animator.php:276
824
+ #: controls/ooohboi-hover-animator.php:458
825
+ #: controls/ooohboi-hover-animator.php:640
826
+ #: controls/ooohboi-hover-animator.php:875
827
+ #: controls/ooohboi-hover-animator.php:1031 controls/ooohboi-overlaiz.php:527
828
+ #: controls/ooohboi-overlaiz.php:557 controls/ooohboi-overlay-underlay.php:510
829
+ #: controls/ooohboi-overlay-underlay.php:538
830
+ #: controls/ooohboi-overlay-underlay.php:1087
831
+ #: controls/ooohboi-overlay-underlay.php:1114
832
+ #: controls/ooohboi-photomorph.php:189 controls/ooohboi-pseudo.php:544
833
+ #: controls/ooohboi-pseudo.php:573 controls/ooohboi-pseudo.php:1166
834
+ #: controls/ooohboi-pseudo.php:1194 controls/ooohboi-spacerat.php:191
835
+ #: controls/ooohboi-spacerat.php:219 controls/ooohboi-videomasq.php:75
836
+ #: controls/ooohboi-videomasq.php:103
837
  msgid "Default"
838
  msgstr ""
839
 
840
+ #: controls/ooohboi-harakiri.php:136
841
  msgid "Inline"
842
  msgstr ""
843
 
844
+ #: controls/ooohboi-harakiri.php:137 controls/ooohboi-overlaiz.php:561
845
+ #: controls/ooohboi-overlay-underlay.php:542
846
+ #: controls/ooohboi-overlay-underlay.php:1118 controls/ooohboi-pseudo.php:577
847
+ #: controls/ooohboi-pseudo.php:1198 controls/ooohboi-spacerat.php:223
848
+ #: controls/ooohboi-videomasq.php:107
849
  msgid "Custom"
850
  msgstr ""
851
 
852
+ #: controls/ooohboi-harakiri.php:156
853
  msgid "NOTE: [%] unit works properly only if Column height is a fixed value!"
854
  msgstr ""
855
 
856
+ #: controls/ooohboi-harakiri.php:205
857
  msgid "Mix Blend Mode"
858
  msgstr ""
859
 
860
+ #: controls/ooohboi-harakiri.php:207
861
  #, php-format
862
  msgid "Learn more about this CSS property: %sMozilla.org%s"
863
  msgstr ""
864
 
865
+ #: controls/ooohboi-harakiri.php:215
866
  msgid "Multiply"
867
  msgstr ""
868
 
869
+ #: controls/ooohboi-harakiri.php:216
870
  msgid "Screen"
871
  msgstr ""
872
 
873
+ #: controls/ooohboi-harakiri.php:217 controls/ooohboi-overlay-underlay.php:79
874
  msgid "Overlay"
875
  msgstr ""
876
 
877
+ #: controls/ooohboi-harakiri.php:218
878
  msgid "Darken"
879
  msgstr ""
880
 
881
+ #: controls/ooohboi-harakiri.php:219
882
  msgid "Lighten"
883
  msgstr ""
884
 
885
+ #: controls/ooohboi-harakiri.php:220
886
  msgid "Color-dodge"
887
  msgstr ""
888
 
889
+ #: controls/ooohboi-harakiri.php:221
890
  msgid "Color-burn"
891
  msgstr ""
892
 
893
+ #: controls/ooohboi-harakiri.php:222
894
  msgid "Hard-light"
895
  msgstr ""
896
 
897
+ #: controls/ooohboi-harakiri.php:223
898
  msgid "Soft-light"
899
  msgstr ""
900
 
901
+ #: controls/ooohboi-harakiri.php:224
902
  msgid "Difference"
903
  msgstr ""
904
 
905
+ #: controls/ooohboi-harakiri.php:225
906
  msgid "Exclusion"
907
  msgstr ""
908
 
909
+ #: controls/ooohboi-harakiri.php:226
910
  msgid "Hue"
911
  msgstr ""
912
 
913
+ #: controls/ooohboi-harakiri.php:227
914
  msgid "Saturation"
915
  msgstr ""
916
 
917
+ #: controls/ooohboi-harakiri.php:229
918
  msgid "Luminosity"
919
  msgstr ""
920
 
921
+ #: controls/ooohboi-hover-animator.php:65
 
 
 
 
 
 
 
 
922
  msgid "Enable HOVERANIMATOR?"
923
  msgstr ""
924
 
925
+ #: controls/ooohboi-hover-animator.php:80
926
  msgid ""
927
+ "With Hoveranimator you can animate any widget in this column on mouse-over "
928
+ "event. Animation panel is available under the Advanced tab, per widget!"
929
  msgstr ""
930
 
931
+ #: controls/ooohboi-hover-animator.php:88 controls/ooohboi-icobox.php:75
932
+ #: controls/ooohboi-imbox.php:76 controls/ooohboi-perspektive.php:225
933
  #: controls/ooohboi-teleporter.php:361
934
  msgid "Content Overflow"
935
  msgstr ""
936
 
937
+ #: controls/ooohboi-hover-animator.php:89
938
  msgid ""
939
  "VISIBLE - makes visible all the elements outside this Column boundaries, "
940
  "HIDDEN - hides everything outside this Column boundaries."
941
  msgstr ""
942
 
943
+ #: controls/ooohboi-hover-animator.php:94 controls/ooohboi-icobox.php:80
944
+ #: controls/ooohboi-imbox.php:81 controls/ooohboi-perspektive.php:231
945
  #: controls/ooohboi-teleporter.php:367
946
  msgid "Visible"
947
  msgstr ""
948
 
949
+ #: controls/ooohboi-hover-animator.php:95 controls/ooohboi-icobox.php:81
950
+ #: controls/ooohboi-imbox.php:82 controls/ooohboi-perspektive.php:232
951
  #: controls/ooohboi-teleporter.php:368
952
  msgid "Hidden"
953
  msgstr ""
954
 
955
+ #: controls/ooohboi-hover-animator.php:142
956
  msgid "Enable Hoveranimator"
957
  msgstr ""
958
 
959
+ #: controls/ooohboi-hover-animator.php:143
960
  msgid ""
961
  "That will allow you to animate this widget on mouse-over event of the parent "
962
  "column."
963
  msgstr ""
964
 
965
+ #: controls/ooohboi-hover-animator.php:157
966
+ #: controls/ooohboi-overlay-underlay.php:94
967
+ #: controls/ooohboi-overlay-underlay.php:690 controls/ooohboi-pseudo.php:102
968
+ #: controls/ooohboi-pseudo.php:735
969
  msgid "Opacity"
970
  msgstr ""
971
 
972
+ #: controls/ooohboi-hover-animator.php:172
973
  msgid "Opacity Normal"
974
  msgstr ""
975
 
976
+ #: controls/ooohboi-hover-animator.php:195
977
  msgid "Opacity Hover"
978
  msgstr ""
979
 
980
+ #: controls/ooohboi-hover-animator.php:216
981
+ #: controls/ooohboi-hover-animator.php:399
982
+ #: controls/ooohboi-hover-animator.php:581
983
+ #: controls/ooohboi-hover-animator.php:816
984
+ #: controls/ooohboi-hover-animator.php:972
985
  msgid "Duration"
986
  msgstr ""
987
 
988
+ #: controls/ooohboi-hover-animator.php:243
989
+ #: controls/ooohboi-hover-animator.php:426
990
+ #: controls/ooohboi-hover-animator.php:608
991
+ #: controls/ooohboi-hover-animator.php:843
992
+ #: controls/ooohboi-hover-animator.php:999
993
  msgid "Delay"
994
  msgstr ""
995
 
996
+ #: controls/ooohboi-hover-animator.php:270
997
+ #: controls/ooohboi-hover-animator.php:453
998
+ #: controls/ooohboi-hover-animator.php:635
999
+ #: controls/ooohboi-hover-animator.php:870
1000
+ #: controls/ooohboi-hover-animator.php:1026
1001
  msgid "Easing"
1002
  msgstr ""
1003
 
1004
+ #: controls/ooohboi-hover-animator.php:277
1005
+ #: controls/ooohboi-hover-animator.php:459
1006
+ #: controls/ooohboi-hover-animator.php:641
1007
+ #: controls/ooohboi-hover-animator.php:876
1008
+ #: controls/ooohboi-hover-animator.php:1032 controls/ooohboi-photomorph.php:190
1009
  msgid "Ease-in"
1010
  msgstr ""
1011
 
1012
+ #: controls/ooohboi-hover-animator.php:278
1013
+ #: controls/ooohboi-hover-animator.php:460
1014
+ #: controls/ooohboi-hover-animator.php:642
1015
+ #: controls/ooohboi-hover-animator.php:877
1016
+ #: controls/ooohboi-hover-animator.php:1033 controls/ooohboi-photomorph.php:191
1017
  msgid "Ease-out"
1018
  msgstr ""
1019
 
1020
+ #: controls/ooohboi-hover-animator.php:279
1021
+ #: controls/ooohboi-hover-animator.php:461
1022
+ #: controls/ooohboi-hover-animator.php:643
1023
+ #: controls/ooohboi-hover-animator.php:878
1024
+ #: controls/ooohboi-hover-animator.php:1034 controls/ooohboi-photomorph.php:192
1025
  msgid "Ease-in-out"
1026
  msgstr ""
1027
 
1028
+ #: controls/ooohboi-hover-animator.php:298
1029
+ #: controls/ooohboi-overlay-underlay.php:284
1030
+ #: controls/ooohboi-overlay-underlay.php:872 controls/ooohboi-pseudo.php:304
1031
+ #: controls/ooohboi-pseudo.php:933
1032
  msgid "Offset Top"
1033
  msgstr ""
1034
 
1035
+ #: controls/ooohboi-hover-animator.php:313
1036
  msgid "Offset Top Normal"
1037
  msgstr ""
1038
 
1039
+ #: controls/ooohboi-hover-animator.php:343
1040
  msgid "Calc Offset Top Normal"
1041
  msgstr ""
1042
 
1043
+ #: controls/ooohboi-hover-animator.php:344
1044
+ #: controls/ooohboi-hover-animator.php:387
1045
+ #: controls/ooohboi-hover-animator.php:526
1046
+ #: controls/ooohboi-hover-animator.php:569 controls/ooohboi-overlaiz.php:127
1047
+ #: controls/ooohboi-overlaiz.php:194 controls/ooohboi-overlaiz.php:261
1048
+ #: controls/ooohboi-overlaiz.php:328 controls/ooohboi-overlay-underlay.php:213
1049
+ #: controls/ooohboi-overlay-underlay.php:327
1050
+ #: controls/ooohboi-overlay-underlay.php:808
1051
+ #: controls/ooohboi-overlay-underlay.php:914
1052
+ #: controls/ooohboi-overlay-underlay.php:967 controls/ooohboi-pseudo.php:228
1053
+ #: controls/ooohboi-pseudo.php:350 controls/ooohboi-pseudo.php:860
1054
+ #: controls/ooohboi-pseudo.php:978 controls/ooohboi-pseudo.php:1037
1055
  msgid "Enter CSS calc value only! Like: 100% - 50px or 100% + 2em"
1056
  msgstr ""
1057
 
1058
+ #: controls/ooohboi-hover-animator.php:358
1059
  msgid "Offset Top Hover"
1060
  msgstr ""
1061
 
1062
+ #: controls/ooohboi-hover-animator.php:386
1063
  msgid "Calc Offset Top Hover"
1064
  msgstr ""
1065
 
1066
+ #: controls/ooohboi-hover-animator.php:480
1067
+ #: controls/ooohboi-overlay-underlay.php:341
1068
+ #: controls/ooohboi-overlay-underlay.php:925 controls/ooohboi-pseudo.php:365
1069
+ #: controls/ooohboi-pseudo.php:992
1070
  msgid "Offset Left"
1071
  msgstr ""
1072
 
1073
+ #: controls/ooohboi-hover-animator.php:495
1074
  msgid "Offset Left Normal"
1075
  msgstr ""
1076
 
1077
+ #: controls/ooohboi-hover-animator.php:525
1078
  msgid "Calc Offset Left Normal"
1079
  msgstr ""
1080
 
1081
+ #: controls/ooohboi-hover-animator.php:540
1082
  msgid "Offset Left Hover"
1083
  msgstr ""
1084
 
1085
+ #: controls/ooohboi-hover-animator.php:568
1086
  msgid "Calc Offset Left Hover"
1087
  msgstr ""
1088
 
1089
+ #: controls/ooohboi-hover-animator.php:662
1090
  msgid "Transforms"
1091
  msgstr ""
1092
 
1093
+ #: controls/ooohboi-hover-animator.php:677
1094
  msgid "ScaleX Normal"
1095
  msgstr ""
1096
 
1097
+ #: controls/ooohboi-hover-animator.php:701
1098
  msgid "ScaleX Hover"
1099
  msgstr ""
1100
 
1101
+ #: controls/ooohboi-hover-animator.php:723
1102
  msgid "ScaleY Normal"
1103
  msgstr ""
1104
 
1105
+ #: controls/ooohboi-hover-animator.php:747
1106
  msgid "ScaleY Hover"
1107
  msgstr ""
1108
 
1109
+ #: controls/ooohboi-hover-animator.php:769
1110
  msgid "Rotation Normal"
1111
  msgstr ""
1112
 
1113
+ #: controls/ooohboi-hover-animator.php:793
1114
  msgid "Rotation Hover"
1115
  msgstr ""
1116
 
1117
+ #: controls/ooohboi-hover-animator.php:897 controls/ooohboi-shadough.php:123
1118
+ #: controls/ooohboi-spacerat.php:433
1119
  msgid "Blur"
1120
  msgstr ""
1121
 
1122
+ #: controls/ooohboi-hover-animator.php:912
1123
  msgid "Blur Normal"
1124
  msgstr ""
1125
 
1126
+ #: controls/ooohboi-hover-animator.php:943
1127
  msgid "Blur Hover"
1128
  msgstr ""
1129
 
1130
+ #: controls/ooohboi-icobox.php:92 controls/ooohboi-icobox.php:227
1131
+ #: controls/ooohboi-imbox.php:94 controls/ooohboi-imbox.php:390
 
 
 
 
 
 
 
 
 
1132
  msgid "Overrides"
1133
  msgstr ""
1134
 
1135
+ #: controls/ooohboi-icobox.php:93 controls/ooohboi-imbox.php:95
1136
  msgid "Allow more basic controls?"
1137
  msgstr ""
1138
 
1139
+ #: controls/ooohboi-icobox.php:143
1140
  msgid "Icon Padding"
1141
  msgstr ""
1142
 
1143
+ #: controls/ooohboi-icobox.php:159
1144
  msgid "Icon Margin"
1145
  msgstr ""
1146
 
1147
+ #: controls/ooohboi-icobox.php:213 controls/ooohboi-imbox.php:290
1148
  msgid "Box Padding"
1149
  msgstr ""
1150
 
1151
+ #: controls/ooohboi-icobox.php:228 controls/ooohboi-imbox.php:391
1152
  msgid "Allow separate controls for Title and Description?"
1153
  msgstr ""
1154
 
1155
+ #: controls/ooohboi-icobox.php:242 controls/ooohboi-imbox.php:404
1156
  msgid "Title Padding"
1157
  msgstr ""
1158
 
1159
+ #: controls/ooohboi-icobox.php:258 controls/ooohboi-imbox.php:420
1160
  msgid "Title Margin"
1161
  msgstr ""
1162
 
1163
+ #: controls/ooohboi-icobox.php:273 controls/ooohboi-imbox.php:436
1164
  msgid "Description Padding"
1165
  msgstr ""
1166
 
1167
+ #: controls/ooohboi-icobox.php:289 controls/ooohboi-imbox.php:452
1168
  msgid "Description Margin"
1169
  msgstr ""
1170
 
1171
+ #: controls/ooohboi-imbox.php:108
 
 
 
 
 
 
 
 
 
1172
  msgid "Image Size"
1173
  msgstr ""
1174
 
1175
+ #: controls/ooohboi-imbox.php:145
1176
  msgid "Image Padding"
1177
  msgstr ""
1178
 
1179
+ #: controls/ooohboi-imbox.php:161
1180
  msgid "Image Margin"
1181
  msgstr ""
1182
 
1183
+ #: controls/ooohboi-imbox.php:176
1184
  msgid "Enable full-height?"
1185
  msgstr ""
1186
 
1187
+ #: controls/ooohboi-imbox.php:177
1188
  msgid ""
1189
  "That will make the photo full-height. Makes sense only if the photo is "
1190
  "placed left or the right-hand side!"
1191
  msgstr ""
1192
 
1193
+ #: controls/ooohboi-imbox.php:230
1194
  msgid "Image clip path"
1195
  msgstr ""
1196
 
1197
+ #: controls/ooohboi-imbox.php:232 controls/ooohboi-overlaiz.php:461
1198
+ #: controls/ooohboi-overlay-underlay.php:633
1199
+ #: controls/ooohboi-overlay-underlay.php:1206
1200
+ #: controls/ooohboi-photomorph.php:89 controls/ooohboi-photomorph.php:119
1201
+ #: controls/ooohboi-pseudo.php:673 controls/ooohboi-pseudo.php:1291
1202
+ #: controls/ooohboi-spacerat.php:496
1203
  #, php-format
1204
  msgid ""
1205
  "Enter the full clip-path property! See the copy-paste examples at %sClippy%s"
1206
  msgstr ""
1207
 
1208
+ #: controls/ooohboi-imbox.php:303
1209
  msgid "Box Margin"
1210
  msgstr ""
1211
 
1212
+ #: controls/ooohboi-imbox.php:376
1213
  msgid "Box z-index"
1214
  msgstr ""
1215
 
1233
  "pipe character, i.e. data-scroll-offset%s100,50em"
1234
  msgstr ""
1235
 
1236
+ #: controls/ooohboi-overlaiz.php:58
1237
  msgid "Enable Overlaiz?"
1238
  msgstr ""
1239
 
1240
+ #: controls/ooohboi-overlaiz.php:126 controls/ooohboi-overlay-underlay.php:212
1241
+ #: controls/ooohboi-overlay-underlay.php:807 controls/ooohboi-pseudo.php:227
1242
+ #: controls/ooohboi-pseudo.php:859
1243
  msgid "Calc Width"
1244
  msgstr ""
1245
 
1246
+ #: controls/ooohboi-overlaiz.php:193 controls/ooohboi-overlay-underlay.php:269
1247
+ #: controls/ooohboi-overlay-underlay.php:860 controls/ooohboi-pseudo.php:288
1248
+ #: controls/ooohboi-pseudo.php:918
1249
  msgid "Calc Height"
1250
  msgstr ""
1251
 
1252
+ #: controls/ooohboi-overlaiz.php:209
1253
  msgid "Position - X"
1254
  msgstr ""
1255
 
1256
+ #: controls/ooohboi-overlaiz.php:260
1257
  msgid "Calc Position - X"
1258
  msgstr ""
1259
 
1260
+ #: controls/ooohboi-overlaiz.php:276
1261
  msgid "Position - Y"
1262
  msgstr ""
1263
 
1264
+ #: controls/ooohboi-overlaiz.php:327
1265
  msgid "Calc Position - Y"
1266
  msgstr ""
1267
 
1268
+ #: controls/ooohboi-overlaiz.php:343
1269
  msgid "Rotation"
1270
  msgstr ""
1271
 
1272
+ #: controls/ooohboi-overlaiz.php:445 controls/ooohboi-overlay-underlay.php:631
1273
+ #: controls/ooohboi-overlay-underlay.php:1204 controls/ooohboi-pseudo.php:671
1274
+ #: controls/ooohboi-pseudo.php:1289 controls/ooohboi-spacerat.php:494
1275
  msgid "Clip path"
1276
  msgstr ""
1277
 
1278
+ #: controls/ooohboi-overlaiz.php:484
1279
  msgid "Mask"
1280
  msgstr ""
1281
 
1282
+ #: controls/ooohboi-overlaiz.php:485 controls/ooohboi-spacerat.php:153
1283
+ #: controls/ooohboi-spacerat.php:315
1284
  msgid ""
1285
  "NOTE: In order to see the effect you should add the Background to the Spacer "
1286
  "widget first!"
1287
  msgstr ""
1288
 
1289
+ #: controls/ooohboi-overlaiz.php:503 controls/ooohboi-overlay-underlay.php:488
1290
+ #: controls/ooohboi-overlay-underlay.php:1065 controls/ooohboi-pseudo.php:521
1291
+ #: controls/ooohboi-pseudo.php:1143 controls/ooohboi-spacerat.php:169
1292
  msgid "Choose Image Mask"
1293
  msgstr ""
1294
 
1295
+ #: controls/ooohboi-overlaiz.php:504 controls/ooohboi-overlay-underlay.php:489
1296
+ #: controls/ooohboi-overlay-underlay.php:1066 controls/ooohboi-pseudo.php:522
1297
+ #: controls/ooohboi-pseudo.php:1144 controls/ooohboi-spacerat.php:170
1298
  #, php-format
1299
  msgid ""
1300
  "NOTE: Image Mask should be black-and-transparent SVG file! Anything that’s "
1302
  "transparent will be completely hidden."
1303
  msgstr ""
1304
 
1305
+ #: controls/ooohboi-overlaiz.php:523 controls/ooohboi-overlay-underlay.php:506
1306
+ #: controls/ooohboi-overlay-underlay.php:1083 controls/ooohboi-pseudo.php:540
1307
+ #: controls/ooohboi-pseudo.php:1162 controls/ooohboi-spacerat.php:187
1308
+ #: controls/ooohboi-videomasq.php:71
1309
  msgid "Mask position"
1310
  msgstr ""
1311
 
1312
+ #: controls/ooohboi-overlaiz.php:528 controls/ooohboi-overlay-underlay.php:511
1313
+ #: controls/ooohboi-overlay-underlay.php:1088 controls/ooohboi-pseudo.php:545
1314
+ #: controls/ooohboi-pseudo.php:1167 controls/ooohboi-spacerat.php:192
1315
+ #: controls/ooohboi-videomasq.php:76
1316
  msgid "Center Center"
1317
  msgstr ""
1318
 
1319
+ #: controls/ooohboi-overlaiz.php:529 controls/ooohboi-overlay-underlay.php:512
1320
+ #: controls/ooohboi-overlay-underlay.php:1089 controls/ooohboi-pseudo.php:546
1321
+ #: controls/ooohboi-pseudo.php:1168 controls/ooohboi-spacerat.php:193
1322
+ #: controls/ooohboi-videomasq.php:77
1323
  msgid "Center Left"
1324
  msgstr ""
1325
 
1326
+ #: controls/ooohboi-overlaiz.php:530 controls/ooohboi-overlay-underlay.php:513
1327
+ #: controls/ooohboi-overlay-underlay.php:1090 controls/ooohboi-pseudo.php:547
1328
+ #: controls/ooohboi-pseudo.php:1169 controls/ooohboi-spacerat.php:194
1329
+ #: controls/ooohboi-videomasq.php:78
1330
  msgid "Center Right"
1331
  msgstr ""
1332
 
1333
+ #: controls/ooohboi-overlaiz.php:531 controls/ooohboi-overlay-underlay.php:514
1334
+ #: controls/ooohboi-overlay-underlay.php:1091 controls/ooohboi-pseudo.php:548
1335
+ #: controls/ooohboi-pseudo.php:1170 controls/ooohboi-spacerat.php:195
1336
+ #: controls/ooohboi-videomasq.php:79
1337
  msgid "Top Center"
1338
  msgstr ""
1339
 
1340
+ #: controls/ooohboi-overlaiz.php:532 controls/ooohboi-overlay-underlay.php:515
1341
+ #: controls/ooohboi-overlay-underlay.php:1092 controls/ooohboi-pseudo.php:549
1342
+ #: controls/ooohboi-pseudo.php:1171 controls/ooohboi-spacerat.php:196
1343
+ #: controls/ooohboi-videomasq.php:80
1344
  msgid "Top Left"
1345
  msgstr ""
1346
 
1347
+ #: controls/ooohboi-overlaiz.php:533 controls/ooohboi-overlay-underlay.php:516
1348
+ #: controls/ooohboi-overlay-underlay.php:1093 controls/ooohboi-pseudo.php:550
1349
+ #: controls/ooohboi-pseudo.php:1172 controls/ooohboi-spacerat.php:197
1350
+ #: controls/ooohboi-videomasq.php:81
1351
  msgid "Top Right"
1352
  msgstr ""
1353
 
1354
+ #: controls/ooohboi-overlaiz.php:534 controls/ooohboi-overlay-underlay.php:517
1355
+ #: controls/ooohboi-overlay-underlay.php:1094 controls/ooohboi-pseudo.php:551
1356
+ #: controls/ooohboi-pseudo.php:1173 controls/ooohboi-spacerat.php:198
1357
+ #: controls/ooohboi-videomasq.php:82
1358
  msgid "Bottom Center"
1359
  msgstr ""
1360
 
1361
+ #: controls/ooohboi-overlaiz.php:535 controls/ooohboi-overlay-underlay.php:518
1362
+ #: controls/ooohboi-overlay-underlay.php:1095 controls/ooohboi-pseudo.php:552
1363
+ #: controls/ooohboi-pseudo.php:1174 controls/ooohboi-spacerat.php:199
1364
+ #: controls/ooohboi-videomasq.php:83
1365
  msgid "Bottom Left"
1366
  msgstr ""
1367
 
1368
+ #: controls/ooohboi-overlaiz.php:536 controls/ooohboi-overlay-underlay.php:519
1369
+ #: controls/ooohboi-overlay-underlay.php:1096 controls/ooohboi-pseudo.php:553
1370
+ #: controls/ooohboi-pseudo.php:1175 controls/ooohboi-spacerat.php:200
1371
+ #: controls/ooohboi-videomasq.php:84
1372
  msgid "Bottom Right"
1373
  msgstr ""
1374
 
1375
+ #: controls/ooohboi-overlaiz.php:553 controls/ooohboi-overlay-underlay.php:534
1376
+ #: controls/ooohboi-overlay-underlay.php:1110 controls/ooohboi-pseudo.php:569
1377
+ #: controls/ooohboi-pseudo.php:1190 controls/ooohboi-spacerat.php:215
1378
+ #: controls/ooohboi-videomasq.php:99
1379
  msgid "Mask size"
1380
  msgstr ""
1381
 
1382
+ #: controls/ooohboi-overlaiz.php:559 controls/ooohboi-overlay-underlay.php:540
1383
+ #: controls/ooohboi-overlay-underlay.php:1116 controls/ooohboi-pseudo.php:575
1384
+ #: controls/ooohboi-pseudo.php:1196 controls/ooohboi-spacerat.php:221
1385
+ #: controls/ooohboi-videomasq.php:105
1386
  msgid "Cover"
1387
  msgstr ""
1388
 
1389
+ #: controls/ooohboi-overlaiz.php:560 controls/ooohboi-overlay-underlay.php:541
1390
+ #: controls/ooohboi-overlay-underlay.php:1117 controls/ooohboi-pseudo.php:576
1391
+ #: controls/ooohboi-pseudo.php:1197 controls/ooohboi-spacerat.php:222
1392
+ #: controls/ooohboi-videomasq.php:106
1393
  msgid "Contain"
1394
  msgstr ""
1395
 
1396
+ #: controls/ooohboi-overlaiz.php:635 controls/ooohboi-overlay-underlay.php:606
1397
+ #: controls/ooohboi-overlay-underlay.php:1180 controls/ooohboi-pseudo.php:645
1398
+ #: controls/ooohboi-pseudo.php:1264 controls/ooohboi-spacerat.php:289
1399
+ #: controls/ooohboi-videomasq.php:171
1400
  msgid "Mask repeat"
1401
  msgstr ""
1402
 
1403
+ #: controls/ooohboi-overlaiz.php:639 controls/ooohboi-overlay-underlay.php:610
1404
+ #: controls/ooohboi-overlay-underlay.php:1184 controls/ooohboi-pseudo.php:649
1405
+ #: controls/ooohboi-pseudo.php:1268 controls/ooohboi-spacerat.php:293
1406
+ #: controls/ooohboi-videomasq.php:175
1407
  msgid "No-repeat"
1408
  msgstr ""
1409
 
1410
+ #: controls/ooohboi-overlaiz.php:640 controls/ooohboi-overlay-underlay.php:611
1411
+ #: controls/ooohboi-overlay-underlay.php:1185 controls/ooohboi-pseudo.php:650
1412
+ #: controls/ooohboi-pseudo.php:1269 controls/ooohboi-spacerat.php:294
1413
+ #: controls/ooohboi-videomasq.php:176
1414
  msgid "Repeat"
1415
  msgstr ""
1416
 
1417
+ #: controls/ooohboi-overlaiz.php:641 controls/ooohboi-overlay-underlay.php:612
1418
+ #: controls/ooohboi-overlay-underlay.php:1186 controls/ooohboi-pseudo.php:651
1419
+ #: controls/ooohboi-pseudo.php:1270 controls/ooohboi-spacerat.php:295
1420
+ #: controls/ooohboi-videomasq.php:177
1421
  msgid "Repeat-x"
1422
  msgstr ""
1423
 
1424
+ #: controls/ooohboi-overlaiz.php:642 controls/ooohboi-overlay-underlay.php:613
1425
+ #: controls/ooohboi-overlay-underlay.php:1187 controls/ooohboi-pseudo.php:652
1426
+ #: controls/ooohboi-pseudo.php:1271 controls/ooohboi-spacerat.php:296
1427
+ #: controls/ooohboi-videomasq.php:178
1428
  msgid "Repeat-y"
1429
  msgstr ""
1430
 
1431
+ #: controls/ooohboi-overlaiz.php:662 controls/ooohboi-overlay-underlay.php:653
1432
+ #: controls/ooohboi-overlay-underlay.php:1226 controls/ooohboi-pseudo.php:694
1433
+ #: controls/ooohboi-pseudo.php:1312
1434
  msgid "Z-Index"
1435
  msgstr ""
1436
 
1437
+ #: controls/ooohboi-overlay-underlay.php:128
1438
+ #: controls/ooohboi-overlay-underlay.php:724 controls/ooohboi-pseudo.php:138
1439
+ #: controls/ooohboi-pseudo.php:771
 
 
 
 
1440
  msgid "Blend Mode"
1441
  msgstr ""
1442
 
1443
+ #: controls/ooohboi-overlay-underlay.php:154
1444
+ #: controls/ooohboi-overlay-underlay.php:750 controls/ooohboi-pseudo.php:165
1445
+ #: controls/ooohboi-pseudo.php:798
1446
  msgid "Position and Size"
1447
  msgstr ""
1448
 
1449
+ #: controls/ooohboi-overlay-underlay.php:270
1450
+ #: controls/ooohboi-overlay-underlay.php:384
1451
+ #: controls/ooohboi-overlay-underlay.php:861 controls/ooohboi-pseudo.php:289
1452
+ #: controls/ooohboi-pseudo.php:411 controls/ooohboi-pseudo.php:919
1453
  msgid "Enter CSS calc value only! Like: 45% + 85px or 100% - 3em"
1454
  msgstr ""
1455
 
1456
+ #: controls/ooohboi-overlay-underlay.php:326
1457
+ #: controls/ooohboi-overlay-underlay.php:913 controls/ooohboi-pseudo.php:349
1458
+ #: controls/ooohboi-pseudo.php:977
1459
  msgid "Calc Offset Top"
1460
  msgstr ""
1461
 
1462
+ #: controls/ooohboi-overlay-underlay.php:383
1463
+ #: controls/ooohboi-overlay-underlay.php:966 controls/ooohboi-pseudo.php:410
1464
+ #: controls/ooohboi-pseudo.php:1036
1465
  msgid "Calc Offset Left"
1466
  msgstr ""
1467
 
1468
+ #: controls/ooohboi-overlay-underlay.php:399
1469
+ #: controls/ooohboi-overlay-underlay.php:979 controls/ooohboi-pseudo.php:427
1470
+ #: controls/ooohboi-pseudo.php:1052
1471
  msgid "Rotate"
1472
  msgstr ""
1473
 
1474
+ #: controls/ooohboi-overlay-underlay.php:472
1475
  msgid "Overlay Mask"
1476
  msgstr ""
1477
 
1478
+ #: controls/ooohboi-overlay-underlay.php:674
1479
  msgid "Underlay"
1480
  msgstr ""
1481
 
1482
+ #: controls/ooohboi-overlay-underlay.php:1049
1483
  msgid "Underlay Mask"
1484
  msgstr ""
1485
 
1486
+ #: controls/ooohboi-overlay-underlay.php:1255
1487
  msgid "Get rid of the Horizontal scroller?"
1488
  msgstr ""
1489
 
1490
+ #: controls/ooohboi-overlay-underlay.php:1256
1491
  msgid ""
1492
  "OoohBoi POOOPART may cause Horizontal Scroller to show up. This is how you "
1493
  "can remove it."
1494
  msgstr ""
1495
 
1496
+ #: controls/ooohboi-overlay-underlay.php:1274
1497
  msgid "Baseline Grid"
1498
  msgstr ""
1499
 
1500
+ #: controls/ooohboi-overlay-underlay.php:1275
1501
  msgid "Baseline grid helps you maintain accuracy and consistency"
1502
  msgstr ""
1503
 
1504
+ #: controls/ooohboi-overlay-underlay.php:1288
1505
  msgid "Grid style"
1506
  msgstr ""
1507
 
1508
+ #: controls/ooohboi-overlay-underlay.php:1292
1509
  msgid "Squares"
1510
  msgstr ""
1511
 
1512
+ #: controls/ooohboi-overlay-underlay.php:1293
1513
  msgid "Vertical lines"
1514
  msgstr ""
1515
 
1516
+ #: controls/ooohboi-overlay-underlay.php:1294
1517
  msgid "Horizontal lines"
1518
  msgstr ""
1519
 
1520
+ #: controls/ooohboi-overlay-underlay.php:1304
1521
  msgid "Grid color"
1522
  msgstr ""
1523
 
1524
+ #: controls/ooohboi-overlay-underlay.php:1315
1525
  msgid "Grid size"
1526
  msgstr ""
1527
 
1528
+ #: controls/ooohboi-overlay-underlay.php:1339
1529
  msgid "Vertical Spacing"
1530
  msgstr ""
1531
 
1532
+ #: controls/ooohboi-overlay-underlay.php:1363
1533
  msgid "Horizontal Spacing"
1534
  msgstr ""
1535
 
1553
  msgid "Unstyle Prev and Next?"
1554
  msgstr ""
1555
 
1556
+ #: controls/ooohboi-perspektive.php:70
1557
  msgid "Enable Perspektive?"
1558
  msgstr ""
1559
 
1560
+ #: controls/ooohboi-perspektive.php:71
1561
  msgid ""
1562
  "NOTE: Perspektive interferes with z-index! The background of the element "
1563
  "with the Perspektive will not be affected by the Perspektive."
1564
  msgstr ""
1565
 
1566
+ #: controls/ooohboi-perspektive.php:86
1567
  msgid "Perspective"
1568
  msgstr ""
1569
 
1570
+ #: controls/ooohboi-perspektive.php:119
1571
  msgid "Perspective Origin"
1572
  msgstr ""
1573
 
1574
+ #: controls/ooohboi-perspektive.php:144
1575
  msgid "Translate Z"
1576
  msgstr ""
1577
 
1578
+ #: controls/ooohboi-perspektive.php:177
1579
  msgid "Rotate X"
1580
  msgstr ""
1581
 
1582
+ #: controls/ooohboi-perspektive.php:201
1583
  msgid "Rotate Y"
1584
  msgstr ""
1585
 
1586
+ #: controls/ooohboi-perspektive.php:226
1587
  msgid "Just in case the wrapper is \"overflow: hidden\""
1588
  msgstr ""
1589
 
1597
  "(Column) uses the fixed height."
1598
  msgstr ""
1599
 
1600
+ #: controls/ooohboi-photomorph.php:63
1601
  msgid "Enable PhotoMorph"
1602
  msgstr ""
1603
 
1604
+ #: controls/ooohboi-photomorph.php:64
1605
  msgid ""
1606
  "That will allow you to add the custom clip-path for both Normal and Hover "
1607
  "Image widget."
1608
  msgstr ""
1609
 
1610
+ #: controls/ooohboi-photomorph.php:139
1611
  msgid "Animate Hover?"
1612
  msgstr ""
1613
 
1614
+ #: controls/ooohboi-photomorph.php:140
1615
  msgid ""
1616
  "To ensure the smooth transition, be sure that the number of nodes of the "
1617
  "Normal state clip-path EQUALS the number of nodes of the Hover state!"
1618
  msgstr ""
1619
 
1620
+ #: controls/ooohboi-photomorph.php:156
1621
  msgid "Animation duration"
1622
  msgstr ""
1623
 
1624
+ #: controls/ooohboi-photomorph.php:183
1625
  msgid "Animation effect"
1626
  msgstr ""
1627
 
1628
+ #: controls/ooohboi-photomorph.php:208
1629
  msgid "Animation delay"
1630
  msgstr ""
1631
 
1632
+ #: controls/ooohboi-pseudo.php:65
1633
  msgid "Enable Pseudo?"
1634
  msgstr ""
1635
 
1636
+ #: controls/ooohboi-pseudo.php:66
1637
  msgid ""
1638
  "This is how you can create and manage :before and :after pseudo elements for "
1639
  "this column"
1640
  msgstr ""
1641
 
1642
+ #: controls/ooohboi-pseudo.php:84
1643
  msgid "Before"
1644
  msgstr ""
1645
 
1646
+ #: controls/ooohboi-pseudo.php:504
1647
  msgid "Before Mask"
1648
  msgstr ""
1649
 
1650
+ #: controls/ooohboi-pseudo.php:716
1651
  msgid "After"
1652
  msgstr ""
1653
 
1654
+ #: controls/ooohboi-pseudo.php:1126
1655
  msgid "After Mask"
1656
  msgstr ""
1657
 
1658
+ #: controls/ooohboi-searchcop.php:45
1659
  msgid "Search Target"
1660
  msgstr ""
1661
 
1662
+ #: controls/ooohboi-searchcop.php:50
1663
  msgid "Search Posts"
1664
  msgstr ""
1665
 
1666
+ #: controls/ooohboi-searchcop.php:51
1667
  msgid "Search Pages"
1668
  msgstr ""
1669
 
1670
+ #: controls/ooohboi-searchcop.php:52
1671
  msgid "Search Products"
1672
  msgstr ""
1673
 
1674
+ #: controls/ooohboi-searchcop.php:53
1675
  msgid "Search All"
1676
  msgstr ""
1677
 
1683
  msgid "Creates a shadow that conforms to the shape."
1684
  msgstr ""
1685
 
1686
+ #: controls/ooohboi-shadough.php:61 controls/ooohboi-spacerat.php:369
1687
  msgid "Offset X"
1688
  msgstr ""
1689
 
1690
+ #: controls/ooohboi-shadough.php:92 controls/ooohboi-spacerat.php:401
1691
  msgid "Offset Y"
1692
  msgstr ""
1693
 
1694
+ #: controls/ooohboi-shadough.php:153 controls/ooohboi-spacerat.php:464
1695
  msgid "Shadow Color"
1696
  msgstr ""
1697
 
1698
+ #: controls/ooohboi-spacerat.php:65
1699
  msgid "Enable SpaceRat?"
1700
  msgstr ""
1701
 
1702
+ #: controls/ooohboi-spacerat.php:66
1703
  msgid "Awesome gear for the pretty-much dull Spacer widget."
1704
  msgstr ""
1705
 
1706
+ #: controls/ooohboi-spacerat.php:125 controls/ooohboi-teleporter.php:109
1707
  msgid "Cursor Pointer"
1708
  msgstr ""
1709
 
1710
+ #: controls/ooohboi-spacerat.php:126 controls/ooohboi-teleporter.php:110
1711
  msgid "Keep the default cursor or show pointer on Hover?"
1712
  msgstr ""
1713
 
1714
+ #: controls/ooohboi-spacerat.php:152
1715
  msgid "SpaceRat Mask"
1716
  msgstr ""
1717
 
1718
+ #: controls/ooohboi-spacerat.php:337
1719
  msgid "Add shadow?"
1720
  msgstr ""
1721
 
1722
+ #: controls/ooohboi-spacerat.php:352
1723
  msgid "Define Shadow"
1724
  msgstr ""
1725
 
1787
  msgid "Strongly advised: HIDDEN."
1788
  msgstr ""
1789
 
1790
+ #: controls/ooohboi-videomasq.php:53
1791
  msgid "Choose Video Mask"
1792
  msgstr ""
1793
 
1794
+ #: controls/ooohboi-videomasq.php:54
1795
  #, php-format
1796
  msgid ""
1797
  "NOTE: The video mask should be black-and-transparent SVG file! Anything "
1799
  "that’s transparent will be completely hidden."
1800
  msgstr ""
1801
 
1802
+ #: controls/ooohboi-widget-stalker.php:64
1803
  msgid ""
1804
+ "NOTE: Position of this widget is controlled by the parent Column. See the "
1805
+ "Layout tab, Layout panel > Breaking Bad, Widget Stalker settings."
1806
  msgstr ""
1807
 
1808
+ #: controls/ooohboi-widget-stalker.php:134
1809
  msgid "Widget width"
1810
  msgstr ""
1811
 
1812
+ #: controls/ooohboi-widget-stalker.php:189
1813
  msgid "Align self"
1814
  msgstr ""
1815
 
1816
+ #: controls/ooohboi-widget-stalker.php:190
1817
  msgid "Align this widget vertically"
1818
  msgstr ""
1819
 
1820
+ #: controls/ooohboi-widget-stalker.php:211
1821
  msgid "Widget Order"
1822
  msgstr ""
1823
 
1824
+ #: inc/common-functions.php:34
1825
  msgid "What's New?"
1826
  msgstr ""
1827
 
1828
+ #: inc/common-functions.php:47
1829
  msgid "Manage Extensions"
1830
  msgstr ""
1831
 
1832
+ #: inc/common-functions.php:53
1833
  #, php-format
1834
  msgid ""
1835
  "%sThe following extensions are currently available with Steroids for "
1837
  "or OFF.%s"
1838
  msgstr ""
1839
 
1840
+ #: inc/common-functions.php:60
1841
  #, php-format
1842
  msgid ""
1843
  "%sAllows you to change the writing mode of the Heading and Text Editor "
1844
  "widgets%s"
1845
  msgstr ""
1846
 
1847
+ #: inc/common-functions.php:67
1848
  #, php-format
1849
  msgid "%sAdd an overlay or underlay ghost-element to any Elementor Widget%s"
1850
  msgstr ""
1851
 
1852
+ #: inc/common-functions.php:74
1853
  #, php-format
1854
  msgid ""
1855
  "%sAn awesome set of options for the Background Overlay element manipulation%s"
1856
  msgstr ""
1857
 
1858
+ #: inc/common-functions.php:81
1859
  #, php-format
1860
  msgid "%sIt allows you to style up the posts pagination in Elementor%s"
1861
  msgstr ""
1862
 
1863
+ #: inc/common-functions.php:88
1864
  #, php-format
1865
  msgid "%sA must to have extension for the Section and Columns%s"
1866
  msgstr ""
1867
 
1868
+ #: inc/common-functions.php:95
1869
  #, php-format
1870
  msgid "%sThe content slider made out of Section and Columns (Swiper)%s"
1871
  msgstr ""
1872
 
1873
+ #: inc/common-functions.php:102
1874
  #, php-format
1875
  msgid "%sMake the Image widget full-height of the container%s"
1876
  msgstr ""
1877
 
1878
+ #: inc/common-functions.php:109
1879
  #, php-format
1880
  msgid "%sThe Column hover controls for an exceptional effects%s"
1881
  msgstr ""
1882
 
1883
+ #: inc/common-functions.php:116
1884
  #, php-format
1885
  msgid "%sDecide what to search for; posts only, pages only or everything%s"
1886
  msgstr ""
1887
 
1888
+ #: inc/common-functions.php:123
1889
  #, php-format
1890
  msgid ""
1891
  "%sAdd the SVG mask to the Section video background and let the video play "
1892
  "inside any shape%s"
1893
  msgstr ""
1894
 
1895
+ #: inc/common-functions.php:130
1896
  #, php-format
1897
  msgid "%sDesign awesome buttons in Elementor%s"
1898
  msgstr ""
1899
 
1900
+ #: inc/common-functions.php:137
1901
  #, php-format
1902
  msgid "%sA small set of options that allow you to move widgets in 3D space%s"
1903
  msgstr ""
1904
 
1905
+ #: inc/common-functions.php:144
1906
  #, php-format
1907
  msgid "%sCreate the shadow that conforms the shape%s"
1908
  msgstr ""
1909
 
1910
+ #: inc/common-functions.php:151
1911
  #, php-format
1912
  msgid ""
1913
  "%sAllows you to add the clip-path to the Image widget for Normal and Hover "
1914
  "state%s"
1915
  msgstr ""
1916
 
1917
+ #: inc/common-functions.php:158
1918
  #, php-format
1919
  msgid "%sAllows you to style up the post comments."
1920
  msgstr ""
1921
 
1922
+ #: inc/common-functions.php:165
1923
  #, php-format
1924
  msgid "%sAdds new shine to the Spacer widget."
1925
  msgstr ""
1926
 
1927
+ #: inc/common-functions.php:172
1928
  #, php-format
1929
  msgid "%sImage Box widget extra controls"
1930
  msgstr ""
1931
 
1932
+ #: inc/common-functions.php:179
1933
  #, php-format
1934
  msgid "%sIcon Box widget extra controls"
1935
  msgstr ""
1936
 
1937
+ #: inc/common-functions.php:186
1938
  #, php-format
1939
  msgid "%sAnimate widgets on columns mouse-over event"
1940
  msgstr ""
1941
 
1942
+ #: inc/common-functions.php:193
1943
  #, php-format
1944
  msgid ""
1945
  "%sAllows you to additionaly style Image Carousel and Media Carousel controls"
1946
  "%s"
1947
  msgstr ""
1948
 
1949
+ #: inc/common-functions.php:200
1950
  #, php-format
1951
  msgid "%sStack widgets like flex elements%s"
1952
  msgstr ""
1953
 
1954
+ #: inc/common-functions.php:207
1955
  #, php-format
1956
  msgid "%sTake control over the Column's pseudo elements%s"
1957
  msgstr ""
1958
 
1959
+ #: inc/common-functions.php:215
 
 
 
 
 
1960
  msgid "Manage JS Libraries"
1961
  msgstr ""
1962
 
1963
+ #: inc/common-functions.php:221
1964
  #, php-format
1965
  msgid ""
1966
  "%sThe following libraries are currently available with Steroids for "
1968
  "OFF.%s"
1969
  msgstr ""
1970
 
1971
+ #: inc/common-functions.php:227
1972
  msgid "LOCOMOTIVE SCROLL"
1973
  msgstr ""
1974
 
1975
+ #: inc/common-functions.php:228
1976
  #, php-format
1977
  msgid ""
1978
  "%1$sDetection of elements in viewport and smooth scrolling with parallax.%3$s"
1979
  "%4$sSOURCE%5$s%2$s"
1980
  msgstr ""
1981
 
1982
+ #: inc/common-functions.php:239
1983
  msgid "Enable for Tablets"
1984
  msgstr ""
1985
 
1986
+ #: inc/common-functions.php:240
1987
  msgid "Enable for Mobiles"
1988
  msgstr ""
1989
 
1990
+ #: inc/common-functions.php:249
1991
  msgid "Multiplier"
1992
  msgstr ""
1993
 
1994
+ #: inc/common-functions.php:250
1995
  #, php-format
1996
  msgid "%sBoost/reduce scrolling speed. 1 is the default.%s"
1997
  msgstr ""
1998
 
1999
+ #: inc/common-functions.php:259
2000
  msgid "Refresh on resize?"
2001
  msgstr ""
2002
 
2003
+ #: inc/common-functions.php:260
2004
  msgid ""
2005
  "Things get messy on resize. That will do the silent page refresh upon the "
2006
  "window resize/orientationchange."
2007
  msgstr ""
2008
 
2009
+ #: inc/common-functions.php:267
2010
  msgid "Enable freehand mode?"
2011
  msgstr ""
2012
 
2013
+ #: inc/common-functions.php:268
2014
  #, php-format
2015
  msgid ""
2016
  "That removes all the default %sdata-scroll-section%s attributes so you can "
2017
  "set them at will."
2018
  msgstr ""
2019
 
2020
+ #: inc/common-functions.php:279
2021
  #, php-format
2022
  msgid ""
2023
+ "%1$s Create badass fluid and smooth transitions between your website's pages."
2024
+ "%3$s%4$sSOURCE%5$s%2$s"
2025
  msgstr ""
2026
 
2027
+ #: inc/common-functions.php:285
 
2028
  msgid ""
2029
+ "<span>BEWARE!</span>By enabling any of the GSAP files below, you acknowledge "
2030
+ "the <a href=\"https://greensock.com/standard-license/\" target=\"_blank"
2031
+ "\">Standard \"No Charge\" GreenSock License</a>."
2032
  msgstr ""
2033
 
2034
+ #: inc/common-functions.php:291
2035
  #, php-format
2036
  msgid ""
2037
  "%1$sGreenSock's GSAP JavaScript animation library (including Draggable).%3$s"
2038
  "%4$sSOURCE%5$s%2$s"
2039
  msgstr ""
2040
 
2041
+ #: inc/common-functions.php:298
2042
  #, php-format
2043
  msgid "%1$sLet your page react to scroll changes.%3$s%4$sSOURCE%5$s%2$s"
2044
  msgstr ""
2045
 
2046
+ #: inc/common-functions.php:305
2047
  #, php-format
2048
  msgid ""
2049
  "%1$sAnimates the scroll position of the window or a DOM element.%3$s"
2050
  "%4$sSOURCE%5$s%2$s"
2051
  msgstr ""
2052
 
2053
+ #: inc/common-functions.php:312
2054
  #, php-format
2055
  msgid ""
2056
  "%1$sAnimate anything (SVG, DOM, canvas, generic objects, whatever) along a "
lib/anime/anime.min.js DELETED
@@ -1,8 +0,0 @@
1
- /*
2
- * anime.js v3.2.1
3
- * (c) 2020 Julian Garnier
4
- * Released under the MIT license
5
- * animejs.com
6
- */
7
-
8
- !function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):n.anime=e()}(this,function(){"use strict";var n={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0},e={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},t=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],r={CSS:{},springs:{}};function a(n,e,t){return Math.min(Math.max(n,e),t)}function o(n,e){return n.indexOf(e)>-1}function u(n,e){return n.apply(null,e)}var i={arr:function(n){return Array.isArray(n)},obj:function(n){return o(Object.prototype.toString.call(n),"Object")},pth:function(n){return i.obj(n)&&n.hasOwnProperty("totalLength")},svg:function(n){return n instanceof SVGElement},inp:function(n){return n instanceof HTMLInputElement},dom:function(n){return n.nodeType||i.svg(n)},str:function(n){return"string"==typeof n},fnc:function(n){return"function"==typeof n},und:function(n){return void 0===n},nil:function(n){return i.und(n)||null===n},hex:function(n){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(n)},rgb:function(n){return/^rgb/.test(n)},hsl:function(n){return/^hsl/.test(n)},col:function(n){return i.hex(n)||i.rgb(n)||i.hsl(n)},key:function(t){return!n.hasOwnProperty(t)&&!e.hasOwnProperty(t)&&"targets"!==t&&"keyframes"!==t}};function c(n){var e=/\(([^)]+)\)/.exec(n);return e?e[1].split(",").map(function(n){return parseFloat(n)}):[]}function s(n,e){var t=c(n),o=a(i.und(t[0])?1:t[0],.1,100),u=a(i.und(t[1])?100:t[1],.1,100),s=a(i.und(t[2])?10:t[2],.1,100),f=a(i.und(t[3])?0:t[3],.1,100),l=Math.sqrt(u/o),d=s/(2*Math.sqrt(u*o)),p=d<1?l*Math.sqrt(1-d*d):0,v=1,h=d<1?(d*l-f)/p:-f+l;function g(n){var t=e?e*n/1e3:n;return t=d<1?Math.exp(-t*d*l)*(v*Math.cos(p*t)+h*Math.sin(p*t)):(v+h*t)*Math.exp(-t*l),0===n||1===n?n:1-t}return e?g:function(){var e=r.springs[n];if(e)return e;for(var t=0,a=0;;)if(1===g(t+=1/6)){if(++a>=16)break}else a=0;var o=t*(1/6)*1e3;return r.springs[n]=o,o}}function f(n){return void 0===n&&(n=10),function(e){return Math.ceil(a(e,1e-6,1)*n)*(1/n)}}var l,d,p=function(){var n=11,e=1/(n-1);function t(n,e){return 1-3*e+3*n}function r(n,e){return 3*e-6*n}function a(n){return 3*n}function o(n,e,o){return((t(e,o)*n+r(e,o))*n+a(e))*n}function u(n,e,o){return 3*t(e,o)*n*n+2*r(e,o)*n+a(e)}return function(t,r,a,i){if(0<=t&&t<=1&&0<=a&&a<=1){var c=new Float32Array(n);if(t!==r||a!==i)for(var s=0;s<n;++s)c[s]=o(s*e,t,a);return function(n){return t===r&&a===i?n:0===n||1===n?n:o(f(n),r,i)}}function f(r){for(var i=0,s=1,f=n-1;s!==f&&c[s]<=r;++s)i+=e;var l=i+(r-c[--s])/(c[s+1]-c[s])*e,d=u(l,t,a);return d>=.001?function(n,e,t,r){for(var a=0;a<4;++a){var i=u(e,t,r);if(0===i)return e;e-=(o(e,t,r)-n)/i}return e}(r,l,t,a):0===d?l:function(n,e,t,r,a){for(var u,i,c=0;(u=o(i=e+(t-e)/2,r,a)-n)>0?t=i:e=i,Math.abs(u)>1e-7&&++c<10;);return i}(r,i,i+e,t,a)}}}(),v=(l={linear:function(){return function(n){return n}}},d={Sine:function(){return function(n){return 1-Math.cos(n*Math.PI/2)}},Circ:function(){return function(n){return 1-Math.sqrt(1-n*n)}},Back:function(){return function(n){return n*n*(3*n-2)}},Bounce:function(){return function(n){for(var e,t=4;n<((e=Math.pow(2,--t))-1)/11;);return 1/Math.pow(4,3-t)-7.5625*Math.pow((3*e-2)/22-n,2)}},Elastic:function(n,e){void 0===n&&(n=1),void 0===e&&(e=.5);var t=a(n,1,10),r=a(e,.1,2);return function(n){return 0===n||1===n?n:-t*Math.pow(2,10*(n-1))*Math.sin((n-1-r/(2*Math.PI)*Math.asin(1/t))*(2*Math.PI)/r)}}},["Quad","Cubic","Quart","Quint","Expo"].forEach(function(n,e){d[n]=function(){return function(n){return Math.pow(n,e+2)}}}),Object.keys(d).forEach(function(n){var e=d[n];l["easeIn"+n]=e,l["easeOut"+n]=function(n,t){return function(r){return 1-e(n,t)(1-r)}},l["easeInOut"+n]=function(n,t){return function(r){return r<.5?e(n,t)(2*r)/2:1-e(n,t)(-2*r+2)/2}},l["easeOutIn"+n]=function(n,t){return function(r){return r<.5?(1-e(n,t)(1-2*r))/2:(e(n,t)(2*r-1)+1)/2}}}),l);function h(n,e){if(i.fnc(n))return n;var t=n.split("(")[0],r=v[t],a=c(n);switch(t){case"spring":return s(n,e);case"cubicBezier":return u(p,a);case"steps":return u(f,a);default:return u(r,a)}}function g(n){try{return document.querySelectorAll(n)}catch(n){return}}function m(n,e){for(var t=n.length,r=arguments.length>=2?arguments[1]:void 0,a=[],o=0;o<t;o++)if(o in n){var u=n[o];e.call(r,u,o,n)&&a.push(u)}return a}function y(n){return n.reduce(function(n,e){return n.concat(i.arr(e)?y(e):e)},[])}function b(n){return i.arr(n)?n:(i.str(n)&&(n=g(n)||n),n instanceof NodeList||n instanceof HTMLCollection?[].slice.call(n):[n])}function M(n,e){return n.some(function(n){return n===e})}function x(n){var e={};for(var t in n)e[t]=n[t];return e}function w(n,e){var t=x(n);for(var r in n)t[r]=e.hasOwnProperty(r)?e[r]:n[r];return t}function k(n,e){var t=x(n);for(var r in e)t[r]=i.und(n[r])?e[r]:n[r];return t}function O(n){return i.rgb(n)?(t=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(e=n))?"rgba("+t[1]+",1)":e:i.hex(n)?(r=n.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(n,e,t,r){return e+e+t+t+r+r}),a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(r),"rgba("+parseInt(a[1],16)+","+parseInt(a[2],16)+","+parseInt(a[3],16)+",1)"):i.hsl(n)?function(n){var e,t,r,a=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(n)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(n),o=parseInt(a[1],10)/360,u=parseInt(a[2],10)/100,i=parseInt(a[3],10)/100,c=a[4]||1;function s(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+6*(e-n)*t:t<.5?e:t<2/3?n+(e-n)*(2/3-t)*6:n}if(0==u)e=t=r=i;else{var f=i<.5?i*(1+u):i+u-i*u,l=2*i-f;e=s(l,f,o+1/3),t=s(l,f,o),r=s(l,f,o-1/3)}return"rgba("+255*e+","+255*t+","+255*r+","+c+")"}(n):void 0;var e,t,r,a}function C(n){var e=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(n);if(e)return e[1]}function P(n,e){return i.fnc(n)?n(e.target,e.id,e.total):n}function I(n,e){return n.getAttribute(e)}function D(n,e,t){if(M([t,"deg","rad","turn"],C(e)))return e;var a=r.CSS[e+t];if(!i.und(a))return a;var o=document.createElement(n.tagName),u=n.parentNode&&n.parentNode!==document?n.parentNode:document.body;u.appendChild(o),o.style.position="absolute",o.style.width=100+t;var c=100/o.offsetWidth;u.removeChild(o);var s=c*parseFloat(e);return r.CSS[e+t]=s,s}function B(n,e,t){if(e in n.style){var r=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),a=n.style[e]||getComputedStyle(n).getPropertyValue(r)||"0";return t?D(n,a,t):a}}function T(n,e){return i.dom(n)&&!i.inp(n)&&(!i.nil(I(n,e))||i.svg(n)&&n[e])?"attribute":i.dom(n)&&M(t,e)?"transform":i.dom(n)&&"transform"!==e&&B(n,e)?"css":null!=n[e]?"object":void 0}function E(n){if(i.dom(n)){for(var e,t=n.style.transform||"",r=/(\w+)\(([^)]*)\)/g,a=new Map;e=r.exec(t);)a.set(e[1],e[2]);return a}}function F(n,e,t,r){var a,u=o(e,"scale")?1:0+(o(a=e,"translate")||"perspective"===a?"px":o(a,"rotate")||o(a,"skew")?"deg":void 0),i=E(n).get(e)||u;return t&&(t.transforms.list.set(e,i),t.transforms.last=e),r?D(n,i,r):i}function A(n,e,t,r){switch(T(n,e)){case"transform":return F(n,e,r,t);case"css":return B(n,e,t);case"attribute":return I(n,e);default:return n[e]||0}}function N(n,e){var t=/^(\*=|\+=|-=)/.exec(n);if(!t)return n;var r=C(n)||0,a=parseFloat(e),o=parseFloat(n.replace(t[0],""));switch(t[0][0]){case"+":return a+o+r;case"-":return a-o+r;case"*":return a*o+r}}function S(n,e){if(i.col(n))return O(n);if(/\s/g.test(n))return n;var t=C(n),r=t?n.substr(0,n.length-t.length):n;return e?r+e:r}function L(n,e){return Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2))}function j(n){for(var e,t=n.points,r=0,a=0;a<t.numberOfItems;a++){var o=t.getItem(a);a>0&&(r+=L(e,o)),e=o}return r}function q(n){if(n.getTotalLength)return n.getTotalLength();switch(n.tagName.toLowerCase()){case"circle":return o=n,2*Math.PI*I(o,"r");case"rect":return 2*I(a=n,"width")+2*I(a,"height");case"line":return L({x:I(r=n,"x1"),y:I(r,"y1")},{x:I(r,"x2"),y:I(r,"y2")});case"polyline":return j(n);case"polygon":return t=(e=n).points,j(e)+L(t.getItem(t.numberOfItems-1),t.getItem(0))}var e,t,r,a,o}function H(n,e){var t=e||{},r=t.el||function(n){for(var e=n.parentNode;i.svg(e)&&i.svg(e.parentNode);)e=e.parentNode;return e}(n),a=r.getBoundingClientRect(),o=I(r,"viewBox"),u=a.width,c=a.height,s=t.viewBox||(o?o.split(" "):[0,0,u,c]);return{el:r,viewBox:s,x:s[0]/1,y:s[1]/1,w:u,h:c,vW:s[2],vH:s[3]}}function V(n,e,t){function r(t){void 0===t&&(t=0);var r=e+t>=1?e+t:0;return n.el.getPointAtLength(r)}var a=H(n.el,n.svg),o=r(),u=r(-1),i=r(1),c=t?1:a.w/a.vW,s=t?1:a.h/a.vH;switch(n.property){case"x":return(o.x-a.x)*c;case"y":return(o.y-a.y)*s;case"angle":return 180*Math.atan2(i.y-u.y,i.x-u.x)/Math.PI}}function $(n,e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,r=S(i.pth(n)?n.totalLength:n,e)+"";return{original:r,numbers:r.match(t)?r.match(t).map(Number):[0],strings:i.str(n)||e?r.split(t):[]}}function W(n){return m(n?y(i.arr(n)?n.map(b):b(n)):[],function(n,e,t){return t.indexOf(n)===e})}function X(n){var e=W(n);return e.map(function(n,t){return{target:n,id:t,total:e.length,transforms:{list:E(n)}}})}function Y(n,e){var t=x(e);if(/^spring/.test(t.easing)&&(t.duration=s(t.easing)),i.arr(n)){var r=n.length;2===r&&!i.obj(n[0])?n={value:n}:i.fnc(e.duration)||(t.duration=e.duration/r)}var a=i.arr(n)?n:[n];return a.map(function(n,t){var r=i.obj(n)&&!i.pth(n)?n:{value:n};return i.und(r.delay)&&(r.delay=t?0:e.delay),i.und(r.endDelay)&&(r.endDelay=t===a.length-1?e.endDelay:0),r}).map(function(n){return k(n,t)})}function Z(n,e){var t=[],r=e.keyframes;for(var a in r&&(e=k(function(n){for(var e=m(y(n.map(function(n){return Object.keys(n)})),function(n){return i.key(n)}).reduce(function(n,e){return n.indexOf(e)<0&&n.push(e),n},[]),t={},r=function(r){var a=e[r];t[a]=n.map(function(n){var e={};for(var t in n)i.key(t)?t==a&&(e.value=n[t]):e[t]=n[t];return e})},a=0;a<e.length;a++)r(a);return t}(r),e)),e)i.key(a)&&t.push({name:a,tweens:Y(e[a],n)});return t}function G(n,e){var t;return n.tweens.map(function(r){var a=function(n,e){var t={};for(var r in n){var a=P(n[r],e);i.arr(a)&&1===(a=a.map(function(n){return P(n,e)})).length&&(a=a[0]),t[r]=a}return t.duration=parseFloat(t.duration),t.delay=parseFloat(t.delay),t}(r,e),o=a.value,u=i.arr(o)?o[1]:o,c=C(u),s=A(e.target,n.name,c,e),f=t?t.to.original:s,l=i.arr(o)?o[0]:f,d=C(l)||C(s),p=c||d;return i.und(u)&&(u=f),a.from=$(l,p),a.to=$(N(u,l),p),a.start=t?t.end:0,a.end=a.start+a.delay+a.duration+a.endDelay,a.easing=h(a.easing,a.duration),a.isPath=i.pth(o),a.isPathTargetInsideSVG=a.isPath&&i.svg(e.target),a.isColor=i.col(a.from.original),a.isColor&&(a.round=1),t=a,a})}var Q={css:function(n,e,t){return n.style[e]=t},attribute:function(n,e,t){return n.setAttribute(e,t)},object:function(n,e,t){return n[e]=t},transform:function(n,e,t,r,a){if(r.list.set(e,t),e===r.last||a){var o="";r.list.forEach(function(n,e){o+=e+"("+n+") "}),n.style.transform=o}}};function z(n,e){X(n).forEach(function(n){for(var t in e){var r=P(e[t],n),a=n.target,o=C(r),u=A(a,t,o,n),i=N(S(r,o||C(u)),u),c=T(a,t);Q[c](a,t,i,n.transforms,!0)}})}function _(n,e){return m(y(n.map(function(n){return e.map(function(e){return function(n,e){var t=T(n.target,e.name);if(t){var r=G(e,n),a=r[r.length-1];return{type:t,property:e.name,animatable:n,tweens:r,duration:a.end,delay:r[0].delay,endDelay:a.endDelay}}}(n,e)})})),function(n){return!i.und(n)})}function R(n,e){var t=n.length,r=function(n){return n.timelineOffset?n.timelineOffset:0},a={};return a.duration=t?Math.max.apply(Math,n.map(function(n){return r(n)+n.duration})):e.duration,a.delay=t?Math.min.apply(Math,n.map(function(n){return r(n)+n.delay})):e.delay,a.endDelay=t?a.duration-Math.max.apply(Math,n.map(function(n){return r(n)+n.duration-n.endDelay})):e.endDelay,a}var J=0;var K=[],U=function(){var n;function e(t){for(var r=K.length,a=0;a<r;){var o=K[a];o.paused?(K.splice(a,1),r--):(o.tick(t),a++)}n=a>0?requestAnimationFrame(e):void 0}return"undefined"!=typeof document&&document.addEventListener("visibilitychange",function(){en.suspendWhenDocumentHidden&&(nn()?n=cancelAnimationFrame(n):(K.forEach(function(n){return n._onDocumentVisibility()}),U()))}),function(){n||nn()&&en.suspendWhenDocumentHidden||!(K.length>0)||(n=requestAnimationFrame(e))}}();function nn(){return!!document&&document.hidden}function en(t){void 0===t&&(t={});var r,o=0,u=0,i=0,c=0,s=null;function f(n){var e=window.Promise&&new Promise(function(n){return s=n});return n.finished=e,e}var l,d,p,v,h,g,y,b,M=(d=w(n,l=t),p=w(e,l),v=Z(p,l),h=X(l.targets),g=_(h,v),y=R(g,p),b=J,J++,k(d,{id:b,children:[],animatables:h,animations:g,duration:y.duration,delay:y.delay,endDelay:y.endDelay}));f(M);function x(){var n=M.direction;"alternate"!==n&&(M.direction="normal"!==n?"normal":"reverse"),M.reversed=!M.reversed,r.forEach(function(n){return n.reversed=M.reversed})}function O(n){return M.reversed?M.duration-n:n}function C(){o=0,u=O(M.currentTime)*(1/en.speed)}function P(n,e){e&&e.seek(n-e.timelineOffset)}function I(n){for(var e=0,t=M.animations,r=t.length;e<r;){var o=t[e],u=o.animatable,i=o.tweens,c=i.length-1,s=i[c];c&&(s=m(i,function(e){return n<e.end})[0]||s);for(var f=a(n-s.start-s.delay,0,s.duration)/s.duration,l=isNaN(f)?1:s.easing(f),d=s.to.strings,p=s.round,v=[],h=s.to.numbers.length,g=void 0,y=0;y<h;y++){var b=void 0,x=s.to.numbers[y],w=s.from.numbers[y]||0;b=s.isPath?V(s.value,l*x,s.isPathTargetInsideSVG):w+l*(x-w),p&&(s.isColor&&y>2||(b=Math.round(b*p)/p)),v.push(b)}var k=d.length;if(k){g=d[0];for(var O=0;O<k;O++){d[O];var C=d[O+1],P=v[O];isNaN(P)||(g+=C?P+C:P+" ")}}else g=v[0];Q[o.type](u.target,o.property,g,u.transforms),o.currentValue=g,e++}}function D(n){M[n]&&!M.passThrough&&M[n](M)}function B(n){var e=M.duration,t=M.delay,l=e-M.endDelay,d=O(n);M.progress=a(d/e*100,0,100),M.reversePlayback=d<M.currentTime,r&&function(n){if(M.reversePlayback)for(var e=c;e--;)P(n,r[e]);else for(var t=0;t<c;t++)P(n,r[t])}(d),!M.began&&M.currentTime>0&&(M.began=!0,D("begin")),!M.loopBegan&&M.currentTime>0&&(M.loopBegan=!0,D("loopBegin")),d<=t&&0!==M.currentTime&&I(0),(d>=l&&M.currentTime!==e||!e)&&I(e),d>t&&d<l?(M.changeBegan||(M.changeBegan=!0,M.changeCompleted=!1,D("changeBegin")),D("change"),I(d)):M.changeBegan&&(M.changeCompleted=!0,M.changeBegan=!1,D("changeComplete")),M.currentTime=a(d,0,e),M.began&&D("update"),n>=e&&(u=0,M.remaining&&!0!==M.remaining&&M.remaining--,M.remaining?(o=i,D("loopComplete"),M.loopBegan=!1,"alternate"===M.direction&&x()):(M.paused=!0,M.completed||(M.completed=!0,D("loopComplete"),D("complete"),!M.passThrough&&"Promise"in window&&(s(),f(M)))))}return M.reset=function(){var n=M.direction;M.passThrough=!1,M.currentTime=0,M.progress=0,M.paused=!0,M.began=!1,M.loopBegan=!1,M.changeBegan=!1,M.completed=!1,M.changeCompleted=!1,M.reversePlayback=!1,M.reversed="reverse"===n,M.remaining=M.loop,r=M.children;for(var e=c=r.length;e--;)M.children[e].reset();(M.reversed&&!0!==M.loop||"alternate"===n&&1===M.loop)&&M.remaining++,I(M.reversed?M.duration:0)},M._onDocumentVisibility=C,M.set=function(n,e){return z(n,e),M},M.tick=function(n){i=n,o||(o=i),B((i+(u-o))*en.speed)},M.seek=function(n){B(O(n))},M.pause=function(){M.paused=!0,C()},M.play=function(){M.paused&&(M.completed&&M.reset(),M.paused=!1,K.push(M),C(),U())},M.reverse=function(){x(),M.completed=!M.reversed,C()},M.restart=function(){M.reset(),M.play()},M.remove=function(n){rn(W(n),M)},M.reset(),M.autoplay&&M.play(),M}function tn(n,e){for(var t=e.length;t--;)M(n,e[t].animatable.target)&&e.splice(t,1)}function rn(n,e){var t=e.animations,r=e.children;tn(n,t);for(var a=r.length;a--;){var o=r[a],u=o.animations;tn(n,u),u.length||o.children.length||r.splice(a,1)}t.length||r.length||e.pause()}return en.version="3.2.1",en.speed=1,en.suspendWhenDocumentHidden=!0,en.running=K,en.remove=function(n){for(var e=W(n),t=K.length;t--;)rn(e,K[t])},en.get=A,en.set=z,en.convertPx=D,en.path=function(n,e){var t=i.str(n)?g(n)[0]:n,r=e||100;return function(n){return{property:n,el:t,svg:H(t),totalLength:q(t)*(r/100)}}},en.setDashoffset=function(n){var e=q(n);return n.setAttribute("stroke-dasharray",e),e},en.stagger=function(n,e){void 0===e&&(e={});var t=e.direction||"normal",r=e.easing?h(e.easing):null,a=e.grid,o=e.axis,u=e.from||0,c="first"===u,s="center"===u,f="last"===u,l=i.arr(n),d=l?parseFloat(n[0]):parseFloat(n),p=l?parseFloat(n[1]):0,v=C(l?n[1]:n)||0,g=e.start||0+(l?d:0),m=[],y=0;return function(n,e,i){if(c&&(u=0),s&&(u=(i-1)/2),f&&(u=i-1),!m.length){for(var h=0;h<i;h++){if(a){var b=s?(a[0]-1)/2:u%a[0],M=s?(a[1]-1)/2:Math.floor(u/a[0]),x=b-h%a[0],w=M-Math.floor(h/a[0]),k=Math.sqrt(x*x+w*w);"x"===o&&(k=-x),"y"===o&&(k=-w),m.push(k)}else m.push(Math.abs(u-h));y=Math.max.apply(Math,m)}r&&(m=m.map(function(n){return r(n/y)*y})),"reverse"===t&&(m=m.map(function(n){return o?n<0?-1*n:-n:Math.abs(y-n)}))}return g+(l?(p-d)/y:d)*(Math.round(100*m[e])/100)+v}},en.timeline=function(n){void 0===n&&(n={});var t=en(n);return t.duration=0,t.add=function(r,a){var o=K.indexOf(t),u=t.children;function c(n){n.passThrough=!0}o>-1&&K.splice(o,1);for(var s=0;s<u.length;s++)c(u[s]);var f=k(r,w(e,n));f.targets=f.targets||n.targets;var l=t.duration;f.autoplay=!1,f.direction=t.direction,f.timelineOffset=i.und(a)?l:N(a,l),c(t),t.seek(f.timelineOffset);var d=en(f);c(d),u.push(d);var p=R(u,n);return t.delay=p.delay,t.endDelay=p.endDelay,t.duration=p.duration,t.seek(0),t.reset(),t.autoplay&&t.play(),t},t},en.easing=h,en.penner=v,en.random=function(n,e){return Math.floor(Math.random()*(e-n+1))+n},en});
 
 
 
 
 
 
 
 
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":"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"}
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
@@ -42,7 +42,7 @@ final class OoohBoi_Steroids {
42
  *
43
  * @var string Minimum Elementor version required to run the plugin.
44
  */
45
- const MINIMUM_ELEMENTOR_VERSION = '3.2';
46
 
47
  /**
48
  * Minimum PHP Version
@@ -86,7 +86,6 @@ final class OoohBoi_Steroids {
86
  private static $sfe_lib_gsap = 0;
87
  private static $sfe_remove_locomotive_section_attribute = 0;
88
  private static $sfe_lib_barba = 0;
89
- private static $sfe_lib_anime = 0;
90
 
91
  /**
92
  * Instance
@@ -176,7 +175,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
 
@@ -212,8 +211,6 @@ final class OoohBoi_Steroids {
212
  if( isset( $ob_settings_options[ 'ob_use_motion_path' ] ) && $ob_settings_options[ 'ob_use_motion_path' ] && 'yes' === $ob_settings_options[ 'ob_use_motion_path' ] ) self::$sfe_lib_motion_path = 1;
213
  // ... Barba
214
  if( isset( $ob_settings_options[ 'ob_use_barba' ] ) && $ob_settings_options[ 'ob_use_barba' ] && 'yes' === $ob_settings_options[ 'ob_use_barba' ] ) self::$sfe_lib_barba = 1;
215
- // ... Anime
216
- if( isset( $ob_settings_options[ 'ob_use_anime' ] ) && $ob_settings_options[ 'ob_use_anime' ] && 'yes' === $ob_settings_options[ 'ob_use_anime' ] ) self::$sfe_lib_anime = 1;
217
  }
218
 
219
  // Editor Styles
@@ -222,30 +219,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
@@ -283,10 +256,6 @@ final class OoohBoi_Steroids {
283
  if( 1 === self::$sfe_lib_barba ) {
284
  wp_enqueue_script( 'barba-js' );
285
  }
286
- // anime
287
- if( 1 === self::$sfe_lib_anime ) {
288
- wp_enqueue_script( 'anime-js' );
289
- }
290
  // plugin stuff
291
  wp_enqueue_style( 'ooohboi-steroids-styles' );
292
  wp_enqueue_script( 'ooohboi-steroids' );
@@ -307,33 +276,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 +289,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 +346,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 +373,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 +386,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,28 +399,24 @@ 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 ) {
462
  wp_register_script( 'barba-js', plugins_url( 'lib/barba/barba.min.js', __FILE__ ), [], self::VERSION, true );
463
  }
464
- // anime
465
- if( 1 === self::$sfe_lib_anime && ! $ele_is_preview ) {
466
- wp_register_script( 'anime-js', plugins_url( 'lib/anime/anime.min.js', __FILE__ ), [], self::VERSION, true );
467
- }
468
  // -----------------------------
469
 
470
  }
@@ -500,7 +452,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.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.4.9
12
+ * Elementor Pro tested up to: 3.4.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.0';
37
 
38
  /**
39
  * Minimum Elementor Version
42
  *
43
  * @var string Minimum Elementor version required to run the plugin.
44
  */
45
+ const MINIMUM_ELEMENTOR_VERSION = '2.5.11';
46
 
47
  /**
48
  * Minimum PHP Version
86
  private static $sfe_lib_gsap = 0;
87
  private static $sfe_remove_locomotive_section_attribute = 0;
88
  private static $sfe_lib_barba = 0;
 
89
 
90
  /**
91
  * Instance
175
  'ooohboi-steroids-admin',
176
  plugins_url( 'assets/css/admin.css', __FILE__ ),
177
  [],
178
+ self::VERSION . '17052021'
179
  );
180
  } );
181
 
211
  if( isset( $ob_settings_options[ 'ob_use_motion_path' ] ) && $ob_settings_options[ 'ob_use_motion_path' ] && 'yes' === $ob_settings_options[ 'ob_use_motion_path' ] ) self::$sfe_lib_motion_path = 1;
212
  // ... Barba
213
  if( isset( $ob_settings_options[ 'ob_use_barba' ] ) && $ob_settings_options[ 'ob_use_barba' ] && 'yes' === $ob_settings_options[ 'ob_use_barba' ] ) self::$sfe_lib_barba = 1;
 
 
214
  }
215
 
216
  // Editor Styles
219
  // Register/Enqueue Scripts
220
  add_action( 'elementor/frontend/after_register_scripts', [ $this, 'ooohboi_register_scripts_front' ] );
221
  add_action( 'elementor/frontend/after_register_styles', [ $this, 'ooohboi_register_styles' ] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  add_action( 'elementor/frontend/after_enqueue_styles', function() {
223
 
224
  // locomotive scroll
256
  if( 1 === self::$sfe_lib_barba ) {
257
  wp_enqueue_script( 'barba-js' );
258
  }
 
 
 
 
259
  // plugin stuff
260
  wp_enqueue_style( 'ooohboi-steroids-styles' );
261
  wp_enqueue_script( 'ooohboi-steroids' );
276
 
277
  }
278
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
279
 
280
  /*
281
  * Init Extensions
282
  *
283
+ * @since 1.4.8
 
284
  *
285
  * @access public
286
  */
289
  // Include extension classes
290
  self::ooohboi_take_steroids();
291
 
 
 
 
 
 
 
292
  if( ! $ob_settings_options ) {
293
+ OoohBoi_Harakiri::init(); // OoohBoi Harakiri
294
+ OoohBoi_Overlay_Underlay::init(); // OoohBoi Overlay Underlay
295
+ OoohBoi_Overlaiz::init(); // OoohBoi Overlaiz
296
+ OoohBoi_Paginini::init(); // OoohBoi Paginini
297
+ OoohBoi_Breaking_Bad::init(); // OoohBoi Breaking Bad
298
+ OoohBoi_Glider::init(); // OoohBoi Glider Slider
299
+ OoohBoi_PhotoGiraffe::init(); // OoohBoi PhotoGiraffe
300
+ OoohBoi_Teleporter::init(); // OoohBoi Teleporter
301
+ OoohBoi_SearchCop::init(); // OoohBoi Search Cop
302
+ OoohBoi_Videomasq::init(); // OoohBoi Videomasq
303
+ OoohBoi_Butter_Button::init(); // OoohBoi Butter Button
304
+ OoohBoi_Perspektive::init(); // OoohBoi Perspektive
305
+ OoohBoi_Shadough::init(); // OoohBoi Shadough
306
+ OoohBoi_PhotoMorph::init(); // OoohBoi PhotoMorph
307
+ OoohBoi_Commentz::init(); // OoohBoi Commentz
308
+ OoohBoi_SpaceRat::init(); // OoohBoi SpaceRat
309
+ OoohBoi_Imbox::init(); // OoohBoi Imbox
310
+ OoohBoi_Icobox::init(); // OoohBoi Icobox
311
+ OoohBoi_Hover_Animator::init(); // OoohBoi Hover Animator
312
+ OoohBoi_Kontrolz::init(); // OoohBoi Kontrolz
313
+ OoohBoi_Widget_Stalker::init(); // OoohBoi Widget Stalker
314
+ OoohBoi_Pseudo::init(); // OoohBoi Pseudo
315
  } else {
316
+ if( $ob_settings_options[ 'ob_use_harakiri' ] && 'yes' === $ob_settings_options[ 'ob_use_harakiri' ] ) OoohBoi_Harakiri::init(); // OoohBoi Harakiri
317
+ if( $ob_settings_options[ 'ob_use_poopart' ] && 'yes' === $ob_settings_options[ 'ob_use_poopart' ] ) OoohBoi_Overlay_Underlay::init(); // OoohBoi Overlay Underlay
318
+ if( $ob_settings_options[ 'ob_use_overlaiz' ] && 'yes' === $ob_settings_options[ 'ob_use_overlaiz' ] ) OoohBoi_Overlaiz::init(); // OoohBoi Overlaiz
319
+ if( $ob_settings_options[ 'ob_use_paginini' ] && 'yes' === $ob_settings_options[ 'ob_use_paginini' ] ) OoohBoi_Paginini::init(); // OoohBoi Paginini
320
+ if( $ob_settings_options[ 'ob_use_breakingbad' ] && 'yes' === $ob_settings_options[ 'ob_use_breakingbad' ] ) OoohBoi_Breaking_Bad::init(); // OoohBoi Breaking Bad
321
+ if( $ob_settings_options[ 'ob_use_glider' ] && 'yes' === $ob_settings_options[ 'ob_use_glider' ] ) OoohBoi_Glider::init(); // OoohBoi Glider Slider
322
+ if( $ob_settings_options[ 'ob_use_photogiraffe' ] && 'yes' === $ob_settings_options[ 'ob_use_photogiraffe' ] ) OoohBoi_PhotoGiraffe::init(); // OoohBoi PhotoGiraffe
323
+ if( $ob_settings_options[ 'ob_use_teleporter' ] && 'yes' === $ob_settings_options[ 'ob_use_teleporter' ] ) OoohBoi_Teleporter::init(); // OoohBoi Teleporter
324
+ if( $ob_settings_options[ 'ob_use_searchcop' ] && 'yes' === $ob_settings_options[ 'ob_use_searchcop' ] ) OoohBoi_SearchCop::init(); // OoohBoi Search Cop
325
+ if( $ob_settings_options[ 'ob_use_videomasq' ] && 'yes' === $ob_settings_options[ 'ob_use_videomasq' ] ) OoohBoi_Videomasq::init(); // OoohBoi Videomasq
326
+ if( $ob_settings_options[ 'ob_use_butterbutton' ] && 'yes' === $ob_settings_options[ 'ob_use_butterbutton' ] ) OoohBoi_Butter_Button::init(); // OoohBoi Butter Button
327
+ if( $ob_settings_options[ 'ob_use_perspektive' ] && 'yes' === $ob_settings_options[ 'ob_use_perspektive' ] ) OoohBoi_Perspektive::init(); // OoohBoi Perspektive
328
+ if( $ob_settings_options[ 'ob_use_shadough' ] && 'yes' === $ob_settings_options[ 'ob_use_shadough' ] ) OoohBoi_Shadough::init(); // OoohBoi Shadough
329
+ if( $ob_settings_options[ 'ob_use_photomorph' ] && 'yes' === $ob_settings_options[ 'ob_use_photomorph' ] ) OoohBoi_PhotoMorph::init(); // OoohBoi PhotoMorph
330
+ if( $ob_settings_options[ 'ob_use_commentz' ] && 'yes' === $ob_settings_options[ 'ob_use_commentz' ] ) OoohBoi_Commentz::init(); // OoohBoi Commentz
331
+ if( $ob_settings_options[ 'ob_use_spacerat' ] && 'yes' === $ob_settings_options[ 'ob_use_spacerat' ] ) OoohBoi_SpaceRat::init(); // OoohBoi SpaceRat
332
+ if( $ob_settings_options[ 'ob_use_imbox' ] && 'yes' === $ob_settings_options[ 'ob_use_imbox' ] ) OoohBoi_Imbox::init(); // OoohBoi Imbox
333
+ if( $ob_settings_options[ 'ob_use_icobox' ] && 'yes' === $ob_settings_options[ 'ob_use_icobox' ] ) OoohBoi_Icobox::init(); // OoohBoi Icobox
334
+ if( $ob_settings_options[ 'ob_use_hoveranimator' ] && 'yes' === $ob_settings_options[ 'ob_use_hoveranimator' ] ) OoohBoi_Hover_Animator::init(); // OoohBoi Hover Animator
335
+ if( $ob_settings_options[ 'ob_use_kontrolz' ] && 'yes' === $ob_settings_options[ 'ob_use_kontrolz' ] ) OoohBoi_Kontrolz::init(); // OoohBoi Kontrolz
336
+ if( $ob_settings_options[ 'ob_use_widgetstalker' ] && 'yes' === $ob_settings_options[ 'ob_use_widgetstalker' ] ) OoohBoi_Widget_Stalker::init(); // OoohBoi Widget Stalker
337
+ if( $ob_settings_options[ 'ob_use_pseudo' ] && 'yes' === $ob_settings_options[ 'ob_use_pseudo' ] ) OoohBoi_Pseudo::init(); // OoohBoi Pseudo
338
 
339
  // include libraries that involve editor controls; Locomotive Scroll...
340
  if( $ob_settings_options[ 'fieldset_locomotive' ][ 'ob_use_locomotive_scroll' ] && 'yes' === $ob_settings_options[ 'fieldset_locomotive' ][ 'ob_use_locomotive_scroll' ] ) new OoohBoi_Locomotion();
346
  *
347
  * Include css files and register them
348
  *
349
+ * @since 1.0.0
350
  *
351
  * @access public
352
  */
353
  public function ooohboi_register_styles_editor() {
354
+
355
+ wp_enqueue_style( 'ooohboi-steroids-styles-editor', plugins_url( 'assets/css/editor.css', __FILE__ ), [ 'elementor-editor' ], self::VERSION . '28042021' );
 
 
 
 
 
 
 
 
 
356
 
357
  }
 
 
 
 
 
 
358
 
359
  /*
360
  * Init styles
373
  }
374
  // -----------------------------
375
 
376
+ wp_register_style( 'ooohboi-steroids-styles', plugins_url( 'assets/css/main.css', __FILE__ ), NULL, self::VERSION . '03052021' );
377
 
378
  }
379
 
386
  *
387
  * @access public
388
  */
 
 
 
389
  public function ooohboi_register_scripts_front() {
390
 
391
  $ele_is_preview = \Elementor\Plugin::$instance->preview->is_preview_mode();
392
 
393
+ wp_register_script( 'ooohboi-steroids', plugins_url( 'assets/js/ooohboi-steroids-min.js', __FILE__ ), [ 'jquery' ], self::VERSION . '03082021b', true );
394
 
395
  // locomotive scroll
396
  if( 1 === self::$sfe_lib_locomotive ) {
399
  }
400
  // gsap
401
  if( 1 === self::$sfe_lib_gsap && ! $ele_is_preview ) {
402
+ wp_register_script( 'gsap-js', plugins_url( 'lib/gsap/gsap.min.js', __FILE__ ), [], self::VERSION, true );
403
  }
404
  // scroll trigger
405
  if( 1 === self::$sfe_lib_scroll_trigger && ! $ele_is_preview ) {
406
+ wp_register_script( 'scroll-trigger-js', plugins_url( 'lib/scrolltrigger/ScrollTrigger.min.js', __FILE__ ), [], self::VERSION, true );
407
  }
408
  // scroll to
409
  if( 1 === self::$sfe_lib_scroll_to && ! $ele_is_preview ) {
410
+ wp_register_script( 'scroll-to-js', plugins_url( 'lib/scroll_to/ScrollToPlugin.min', __FILE__ ), [], self::VERSION, true );
411
  }
412
  // scroll motion path
413
  if( 1 === self::$sfe_lib_motion_path && ! $ele_is_preview ) {
414
+ wp_register_script( 'motion-path-js', plugins_url( 'lib/motion_path/MotionPathPlugin.min.js', __FILE__ ), [], self::VERSION, true );
415
  }
416
  // barba
417
  if( 1 === self::$sfe_lib_barba && ! $ele_is_preview ) {
418
  wp_register_script( 'barba-js', plugins_url( 'lib/barba/barba.min.js', __FILE__ ), [], self::VERSION, true );
419
  }
 
 
 
 
420
  // -----------------------------
421
 
422
  }
452
  include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-kontrolz.php'; // OoohBoi Kontrolz
453
  include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-widget-stalker.php'; // OoohBoi Widget Stalker
454
  include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-pseudo.php'; // OoohBoi Pseudo
 
455
  include_once plugin_dir_path( __FILE__ ) . 'controls/ooohboi-locomotion.php'; // OoohBoi Locomotion
456
  }
457
 
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: OoohBoi
3
  Tags: page-builder, elementor, add-on, background-overlay, vertical text, ghost elements, overlapping columns
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,27 +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
174
- - New: IMBOX - prevent thumbnail/title collapse on mobile devices
175
- - Fix: PERSPEKTIVE extension now works as expected
176
-
177
  = 1.8.0 =
178
  - Fix: Elementor editor content overflow issue for the "Layers for Elementor" WP theme
179
  - Fix: Baseline Grid messed up lines
3
  Tags: page-builder, elementor, add-on, background-overlay, vertical text, ghost elements, overlapping columns
4
  Donate link: https://www.paypal.me/ooohboi
5
  Requires at least: 5.0
6
+ Tested up to: 5.8
7
+ Stable tag: 1.8.0
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
+ Glider extension brings the option to center slides! A couple of bugs fixed too. Not much but it came from the heart :)
 
 
 
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.7.9 - Beware of the changes to the language file!
106
 
107
  == Frequently Asked Questions ==
108
 
146
 
147
  == Changelog ==
148
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  = 1.8.0 =
150
  - Fix: Elementor editor content overflow issue for the "Layers for Elementor" WP theme
151
  - Fix: Baseline Grid messed up lines