Addons for Elementor - Version 1.6

Version Description

  • Added Compatibility with Elementor and Elementor PRO 2.
  • Added - Dynamic field connections for most widgets supported by Elementor 2.
  • Updated - Removed Livemesh prefix from all elements. For example, Livemesh Services is now named Services, Livemesh Tabs is now Tabs, Livemesh Grid is now Posts Grid etc.
  • Added - Ability to specify client name in HTML for additional formatting.
  • Updated - Waypoints script with new API for handling events on scroll
  • Fixed - Some themes can break animations and report script errors for elements like piecharts, odometers, progress bars etc.
Download this release

Release Info

Developer livemesh
Plugin Icon 128x128 Addons for Elementor
Version 1.6
Comparing to
See all releases

Code changes from version 1.5.4 to 1.6

admin/views/documentation.php CHANGED
@@ -1123,6 +1123,15 @@ else {
1123
1124
<!-- Updates panel -->
1125
<div id="updates-panel" class="panel-left">
1126
<h3>1.5.4</h3>
1127
<ul>
1128
<li>Fixed – Livemesh Grid columns can break in certain resolutions in FireFox.</li>
1123
1124
<!-- Updates panel -->
1125
<div id="updates-panel" class="panel-left">
1126
+ <h3>1.6</h3>
1127
+ <ul>
1128
+ <li>Added – Compatibility with Elementor and Elementor PRO 2.</li>
1129
+ <li>Added - Dynamic field connections for most widgets supported by Elementor 2.</li>
1130
+ <li>Updated - Removed Livemesh prefix from all elements. For example, Livemesh Services is now named Services, Livemesh Tabs is now Tabs, Livemesh Grid is now Posts Grid etc.</li>
1131
+ <li>Added - Ability to specify client name in HTML for additional formatting.</li>
1132
+ <li>Updated - Waypoints script with new API for handling events on scroll</li>
1133
+ <li>Fixed - Some themes can break animations and report script errors for elements like piecharts, odometers, progress bars etc.</li>
1134
+ </ul>
1135
<h3>1.5.4</h3>
1136
<ul>
1137
<li>Fixed – Livemesh Grid columns can break in certain resolutions in FireFox.</li>
assets/js/jquery.waypoints.js CHANGED
@@ -1,502 +1,662 @@
1
- // Generated by CoffeeScript 1.4.0
2
-
3
- /*
4
- jQuery Waypoints - v2.0.2
5
- Copyright (c) 2011-2013 Caleb Troughton
6
- Dual licensed under the MIT license and GPL license.
7
- https://github.com/imakewebthings/jquery-waypoints/blob/master/licenses.txt
8
*/
9
10
11
- (function() {
12
- var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
13
- __slice = [].slice;
14
-
15
- (function(root, factory) {
16
- if (typeof define === 'function' && define.amd) {
17
- return define('waypoints', ['jquery'], function($) {
18
- return factory($, root);
19
- });
20
- } else {
21
- return factory(root.jQuery, root);
22
- }
23
- })(this, function($, window) {
24
- var $w, Context, Waypoint, allWaypoints, contextCounter, contextKey, contexts, isTouch, jQMethods, methods, resizeEvent, scrollEvent, waypointCounter, waypointKey, wp, wps;
25
- $w = $(window);
26
- isTouch = __indexOf.call(window, 'ontouchstart') >= 0;
27
- allWaypoints = {
28
- horizontal: {},
29
- vertical: {}
30
- };
31
- contextCounter = 1;
32
- contexts = {};
33
- contextKey = 'waypoints-context-id';
34
- resizeEvent = 'resize.waypoints';
35
- scrollEvent = 'scroll.waypoints';
36
- waypointCounter = 1;
37
- waypointKey = 'waypoints-waypoint-ids';
38
- wp = 'waypoint';
39
- wps = 'waypoints';
40
- Context = (function() {
41
-
42
- function Context($element) {
43
- var _this = this;
44
- this.$element = $element;
45
- this.element = $element[0];
46
- this.didResize = false;
47
- this.didScroll = false;
48
- this.id = 'context' + contextCounter++;
49
- this.oldScroll = {
50
- x: $element.scrollLeft(),
51
- y: $element.scrollTop()
52
- };
53
- this.waypoints = {
54
- horizontal: {},
55
- vertical: {}
56
- };
57
- $element.data(contextKey, this.id);
58
- contexts[this.id] = this;
59
- $element.bind(scrollEvent, function() {
60
- var scrollHandler;
61
- if (!(_this.didScroll || isTouch)) {
62
- _this.didScroll = true;
63
- scrollHandler = function() {
64
- _this.doScroll();
65
- return _this.didScroll = false;
66
- };
67
- return window.setTimeout(scrollHandler, $[wps].settings.scrollThrottle);
68
- }
69
- });
70
- $element.bind(resizeEvent, function() {
71
- var resizeHandler;
72
- if (!_this.didResize) {
73
- _this.didResize = true;
74
- resizeHandler = function() {
75
- $[wps]('refresh');
76
- return _this.didResize = false;
77
- };
78
- return window.setTimeout(resizeHandler, $[wps].settings.resizeThrottle);
79
- }
80
- });
81
}
82
83
- Context.prototype.doScroll = function() {
84
- var axes,
85
- _this = this;
86
- axes = {
87
- horizontal: {
88
- newScroll: this.$element.scrollLeft(),
89
- oldScroll: this.oldScroll.x,
90
- forward: 'right',
91
- backward: 'left'
92
- },
93
- vertical: {
94
- newScroll: this.$element.scrollTop(),
95
- oldScroll: this.oldScroll.y,
96
- forward: 'down',
97
- backward: 'up'
98
- }
99
- };
100
- if (isTouch && (!axes.vertical.oldScroll || !axes.vertical.newScroll)) {
101
- $[wps]('refresh');
102
- }
103
- $.each(axes, function(aKey, axis) {
104
- var direction, isForward, triggered;
105
- triggered = [];
106
- isForward = axis.newScroll > axis.oldScroll;
107
- direction = isForward ? axis.forward : axis.backward;
108
- $.each(_this.waypoints[aKey], function(wKey, waypoint) {
109
- var _ref, _ref1;
110
- if ((axis.oldScroll < (_ref = waypoint.offset) && _ref <= axis.newScroll)) {
111
- return triggered.push(waypoint);
112
- } else if ((axis.newScroll < (_ref1 = waypoint.offset) && _ref1 <= axis.oldScroll)) {
113
- return triggered.push(waypoint);
114
- }
115
- });
116
- triggered.sort(function(a, b) {
117
- return a.offset - b.offset;
118
- });
119
- if (!isForward) {
120
- triggered.reverse();
121
- }
122
- return $.each(triggered, function(i, waypoint) {
123
- if (waypoint.options.continuous || i === triggered.length - 1) {
124
- return waypoint.trigger([direction]);
125
- }
126
- });
127
- });
128
- return this.oldScroll = {
129
- x: axes.horizontal.newScroll,
130
- y: axes.vertical.newScroll
131
- };
132
- };
133
-
134
- Context.prototype.refresh = function() {
135
- var axes, cOffset, isWin,
136
- _this = this;
137
- isWin = $.isWindow(this.element);
138
- cOffset = this.$element.offset();
139
- this.doScroll();
140
- axes = {
141
- horizontal: {
142
- contextOffset: isWin ? 0 : cOffset.left,
143
- contextScroll: isWin ? 0 : this.oldScroll.x,
144
- contextDimension: this.$element.width(),
145
- oldScroll: this.oldScroll.x,
146
- forward: 'right',
147
- backward: 'left',
148
- offsetProp: 'left'
149
- },
150
- vertical: {
151
- contextOffset: isWin ? 0 : cOffset.top,
152
- contextScroll: isWin ? 0 : this.oldScroll.y,
153
- contextDimension: isWin ? $[wps]('viewportHeight') : this.$element.height(),
154
- oldScroll: this.oldScroll.y,
155
- forward: 'down',
156
- backward: 'up',
157
- offsetProp: 'top'
158
- }
159
- };
160
- return $.each(axes, function(aKey, axis) {
161
- return $.each(_this.waypoints[aKey], function(i, waypoint) {
162
- var adjustment, elementOffset, oldOffset, _ref, _ref1;
163
- adjustment = waypoint.options.offset;
164
- oldOffset = waypoint.offset;
165
- elementOffset = $.isWindow(waypoint.element) ? 0 : waypoint.$element.offset()[axis.offsetProp];
166
- if ($.isFunction(adjustment)) {
167
- adjustment = adjustment.apply(waypoint.element);
168
- } else if (typeof adjustment === 'string') {
169
- adjustment = parseFloat(adjustment);
170
- if (waypoint.options.offset.indexOf('%') > -1) {
171
- adjustment = Math.ceil(axis.contextDimension * adjustment / 100);
172
- }
173
- }
174
- waypoint.offset = elementOffset - axis.contextOffset + axis.contextScroll - adjustment;
175
- if ((waypoint.options.onlyOnScroll && (oldOffset != null)) || !waypoint.enabled) {
176
- return;
177
- }
178
- if (oldOffset !== null && (oldOffset < (_ref = axis.oldScroll) && _ref <= waypoint.offset)) {
179
- return waypoint.trigger([axis.backward]);
180
- } else if (oldOffset !== null && (oldOffset > (_ref1 = axis.oldScroll) && _ref1 >= waypoint.offset)) {
181
- return waypoint.trigger([axis.forward]);
182
- } else if (oldOffset === null && axis.oldScroll >= waypoint.offset) {
183
- return waypoint.trigger([axis.forward]);
184
- }
185
- });
186
- });
187
- };
188
-
189
- Context.prototype.checkEmpty = function() {
190
- if ($.isEmptyObject(this.waypoints.horizontal) && $.isEmptyObject(this.waypoints.vertical)) {
191
- this.$element.unbind([resizeEvent, scrollEvent].join(' '));
192
- return delete contexts[this.id];
193
- }
194
- };
195
-
196
- return Context;
197
-
198
- })();
199
- Waypoint = (function() {
200
-
201
- function Waypoint($element, context, options) {
202
- var idList, _ref;
203
- options = $.extend({}, $.fn[wp].defaults, options);
204
- if (options.offset === 'bottom-in-view') {
205
- options.offset = function() {
206
- var contextHeight;
207
- contextHeight = $[wps]('viewportHeight');
208
- if (!$.isWindow(context.element)) {
209
- contextHeight = context.$element.height();
210
- }
211
- return contextHeight - $(this).outerHeight();
212
- };
213
- }
214
- this.$element = $element;
215
- this.element = $element[0];
216
- this.axis = options.horizontal ? 'horizontal' : 'vertical';
217
- this.callback = options.handler;
218
- this.context = context;
219
- this.enabled = options.enabled;
220
- this.id = 'waypoints' + waypointCounter++;
221
- this.offset = null;
222
- this.options = options;
223
- context.waypoints[this.axis][this.id] = this;
224
- allWaypoints[this.axis][this.id] = this;
225
- idList = (_ref = $element.data(waypointKey)) != null ? _ref : [];
226
- idList.push(this.id);
227
- $element.data(waypointKey, idList);
228
}
229
230
- Waypoint.prototype.trigger = function(args) {
231
- if (!this.enabled) {
232
- return;
233
- }
234
- if (this.callback != null) {
235
- this.callback.apply(this.element, args);
236
- }
237
- if (this.options.triggerOnce) {
238
- return this.destroy();
239
- }
240
- };
241
-
242
- Waypoint.prototype.disable = function() {
243
- return this.enabled = false;
244
- };
245
-
246
- Waypoint.prototype.enable = function() {
247
- this.context.refresh();
248
- return this.enabled = true;
249
- };
250
-
251
- Waypoint.prototype.destroy = function() {
252
- delete allWaypoints[this.axis][this.id];
253
- delete this.context.waypoints[this.axis][this.id];
254
- return this.context.checkEmpty();
255
- };
256
-
257
- Waypoint.getWaypointsByElement = function(element) {
258
- var all, ids;
259
- ids = $(element).data(waypointKey);
260
- if (!ids) {
261
- return [];
262
- }
263
- all = $.extend({}, allWaypoints.horizontal, allWaypoints.vertical);
264
- return $.map(ids, function(id) {
265
- return all[id];
266
- });
267
- };
268
-
269
- return Waypoint;
270
-
271
- })();
272
- methods = {
273
- init: function(f, options) {
274
- var _ref;
275
- if (options == null) {
276
- options = {};
277
- }
278
- if ((_ref = options.handler) == null) {
279
- options.handler = f;
280
- }
281
- this.each(function() {
282
- var $this, context, contextElement, _ref1;
283
- $this = $(this);
284
- contextElement = (_ref1 = options.context) != null ? _ref1 : $.fn[wp].defaults.context;
285
- if (!$.isWindow(contextElement)) {
286
- contextElement = $this.closest(contextElement);
287
- }
288
- contextElement = $(contextElement);
289
- context = contexts[contextElement.data(contextKey)];
290
- if (!context) {
291
- context = new Context(contextElement);
292
- }
293
- return new Waypoint($this, context, options);
294
- });
295
- $[wps]('refresh');
296
- return this;
297
- },
298
- disable: function() {
299
- return methods._invoke(this, 'disable');
300
- },
301
- enable: function() {
302
- return methods._invoke(this, 'enable');
303
- },
304
- destroy: function() {
305
- return methods._invoke(this, 'destroy');
306
- },
307
- prev: function(axis, selector) {
308
- return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) {
309
- if (index > 0) {
310
- return stack.push(waypoints[index - 1]);
311
- }
312
- });
313
- },
314
- next: function(axis, selector) {
315
- return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) {
316
- if (index < waypoints.length - 1) {
317
- return stack.push(waypoints[index + 1]);
318
- }
319
- });
320
},
321
- _traverse: function(axis, selector, push) {
322
- var stack, waypoints;
323
- if (axis == null) {
324
- axis = 'vertical';
325
}
326
- if (selector == null) {
327
- selector = window;
328
}
329
- waypoints = jQMethods.aggregate(selector);
330
- stack = [];
331
- this.each(function() {
332
- var index;
333
- index = $.inArray(this, waypoints[axis]);
334
- return push(stack, index, waypoints[axis]);
335
- });
336
- return this.pushStack(stack);
337
- },
338
- _invoke: function($elements, method) {
339
- $elements.each(function() {
340
- var waypoints;
341
- waypoints = Waypoint.getWaypointsByElement(this);
342
- return $.each(waypoints, function(i, waypoint) {
343
- waypoint[method]();
344
- return true;
345
- });
346
- });
347
- return this;
348
}
349
- };
350
- $.fn[wp] = function() {
351
- var args, method;
352
- method = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
353
- if (methods[method]) {
354
- return methods[method].apply(this, args);
355
- } else if ($.isFunction(method)) {
356
- return methods.init.apply(this, arguments);
357
- } else if ($.isPlainObject(method)) {
358
- return methods.init.apply(this, [null, method]);
359
- } else if (!method) {
360
- return $.error("jQuery Waypoints needs a callback function or handler option.");
361
- } else {
362
- return $.error("The " + method + " method does not exist in jQuery Waypoints.");
363
}
364
- };
365
- $.fn[wp].defaults = {
366
- context: window,
367
- continuous: true,
368
- enabled: true,
369
- horizontal: false,
370
- offset: 0,
371
- triggerOnce: false
372
- };
373
- jQMethods = {
374
- refresh: function() {
375
- return $.each(contexts, function(i, context) {
376
- return context.refresh();
377
- });
378
- },
379
- viewportHeight: function() {
380
- var _ref;
381
- return (_ref = window.innerHeight) != null ? _ref : $w.height();
382
},
383
- aggregate: function(contextSelector) {
384
- var collection, waypoints, _ref;
385
- collection = allWaypoints;
386
- if (contextSelector) {
387
- collection = (_ref = contexts[$(contextSelector).data(contextKey)]) != null ? _ref.waypoints : void 0;
388
}
389
- if (!collection) {
390
- return [];
391
}
392
- waypoints = {
393
- horizontal: [],
394
- vertical: []
395
- };
396
- $.each(waypoints, function(axis, arr) {
397
- $.each(collection[axis], function(key, waypoint) {
398
- return arr.push(waypoint);
399
- });
400
- arr.sort(function(a, b) {
401
- return a.offset - b.offset;
402
- });
403
- waypoints[axis] = $.map(arr, function(waypoint) {
404
- return waypoint.element;
405
- });
406
- return waypoints[axis] = $.unique(waypoints[axis]);
407
- });
408
- return waypoints;
409
- },
410
- above: function(contextSelector) {
411
- if (contextSelector == null) {
412
- contextSelector = window;
413
}
414
- return jQMethods._filter(contextSelector, 'vertical', function(context, waypoint) {
415
- return waypoint.offset <= context.oldScroll.y;
416
- });
417
- },
418
- below: function(contextSelector) {
419
- if (contextSelector == null) {
420
- contextSelector = window;
421
}
422
- return jQMethods._filter(contextSelector, 'vertical', function(context, waypoint) {
423
- return waypoint.offset > context.oldScroll.y;
424
- });
425
- },
426
- left: function(contextSelector) {
427
- if (contextSelector == null) {
428
- contextSelector = window;
429
}
430
- return jQMethods._filter(contextSelector, 'horizontal', function(context, waypoint) {
431
- return waypoint.offset <= context.oldScroll.x;
432
- });
433
- },
434
- right: function(contextSelector) {
435
- if (contextSelector == null) {
436
- contextSelector = window;
437
}
438
- return jQMethods._filter(contextSelector, 'horizontal', function(context, waypoint) {
439
- return waypoint.offset > context.oldScroll.x;
440
- });
441
- },
442
- enable: function() {
443
- return jQMethods._invoke('enable');
444
- },
445
- disable: function() {
446
- return jQMethods._invoke('disable');
447
- },
448
- destroy: function() {
449
- return jQMethods._invoke('destroy');
450
- },
451
- extendFn: function(methodName, f) {
452
- return methods[methodName] = f;
453
- },
454
- _invoke: function(method) {
455
- var waypoints;
456
- waypoints = $.extend({}, allWaypoints.vertical, allWaypoints.horizontal);
457
- return $.each(waypoints, function(key, waypoint) {
458
- waypoint[method]();
459
- return true;
460
- });
461
- },
462
- _filter: function(selector, axis, test) {
463
- var context, waypoints;
464
- context = contexts[$(selector).data(contextKey)];
465
- if (!context) {
466
- return [];
467
}
468
- waypoints = [];
469
- $.each(context.waypoints[axis], function(i, waypoint) {
470
- if (test(context, waypoint)) {
471
- return waypoints.push(waypoint);
472
- }
473
- });
474
- waypoints.sort(function(a, b) {
475
- return a.offset - b.offset;
476
- });
477
- return $.map(waypoints, function(waypoint) {
478
- return waypoint.element;
479
- });
480
}
481
- };
482
- $[wps] = function() {
483
- var args, method;
484
- method = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
485
- if (jQMethods[method]) {
486
- return jQMethods[method].apply(null, args);
487
- } else {
488
- return jQMethods.aggregate.call(null, method);
489
}
490
- };
491
- $[wps].settings = {
492
- resizeThrottle: 100,
493
- scrollThrottle: 30
494
- };
495
- return $w.load(function() {
496
- return $[wps]('refresh');
497
- });
498
- });
499
500
- }).call(this);
501
502
1
+ /*!
2
+ Waypoints - 4.0.1
3
+ Copyright © 2011-2016 Caleb Troughton
4
+ Licensed under the MIT license.
5
+ https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
6
*/
7
+ (function() {
8
+ 'use strict'
9
10
+ var keyCounter = 0
11
+ var allWaypoints = {}
12
13
+ /* http://imakewebthings.com/waypoints/api/waypoint */
14
+ function Waypoint(options) {
15
+ if (!options) {
16
+ throw new Error('No options passed to Waypoint constructor')
17
+ }
18
+ if (!options.element) {
19
+ throw new Error('No element option passed to Waypoint constructor')
20
+ }
21
+ if (!options.handler) {
22
+ throw new Error('No handler option passed to Waypoint constructor')
23
+ }
24
+
25
+ this.key = 'waypoint-' + keyCounter
26
+ this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options)
27
+ this.element = this.options.element
28
+ this.adapter = new Waypoint.Adapter(this.element)
29
+ this.callback = options.handler
30
+ this.axis = this.options.horizontal ? 'horizontal' : 'vertical'
31
+ this.enabled = this.options.enabled
32
+ this.triggerPoint = null
33
+ this.group = Waypoint.Group.findOrCreate({
34
+ name: this.options.group,
35
+ axis: this.axis
36
+ })
37
+ this.context = Waypoint.Context.findOrCreateByElement(this.options.context)
38
+
39
+ if (Waypoint.offsetAliases[this.options.offset]) {
40
+ this.options.offset = Waypoint.offsetAliases[this.options.offset]
41
+ }
42
+ this.group.add(this)
43
+ this.context.add(this)
44
+ allWaypoints[this.key] = this
45
+ keyCounter += 1
46
+ }
47
+
48
+ /* Private */
49
+ Waypoint.prototype.queueTrigger = function(direction) {
50
+ this.group.queueTrigger(this, direction)
51
+ }
52
+
53
+ /* Private */
54
+ Waypoint.prototype.trigger = function(args) {
55
+ if (!this.enabled) {
56
+ return
57
+ }
58
+ if (this.callback) {
59
+ this.callback.apply(this, args)
60
+ }
61
+ }
62
+
63
+ /* Public */
64
+ /* http://imakewebthings.com/waypoints/api/destroy */
65
+ Waypoint.prototype.destroy = function() {
66
+ this.context.remove(this)
67
+ this.group.remove(this)
68
+ delete allWaypoints[this.key]
69
+ }
70
+
71
+ /* Public */
72
+ /* http://imakewebthings.com/waypoints/api/disable */
73
+ Waypoint.prototype.disable = function() {
74
+ this.enabled = false
75
+ return this
76
+ }
77
+
78
+ /* Public */
79
+ /* http://imakewebthings.com/waypoints/api/enable */
80
+ Waypoint.prototype.enable = function() {
81
+ this.context.refresh()
82
+ this.enabled = true
83
+ return this
84
+ }
85
+
86
+ /* Public */
87
+ /* http://imakewebthings.com/waypoints/api/next */
88
+ Waypoint.prototype.next = function() {
89
+ return this.group.next(this)
90
+ }
91
+
92
+ /* Public */
93
+ /* http://imakewebthings.com/waypoints/api/previous */
94
+ Waypoint.prototype.previous = function() {
95
+ return this.group.previous(this)
96
+ }
97
+
98
+ /* Private */
99
+ Waypoint.invokeAll = function(method) {
100
+ var allWaypointsArray = []
101
+ for (var waypointKey in allWaypoints) {
102
+ allWaypointsArray.push(allWaypoints[waypointKey])
103
+ }
104
+ for (var i = 0, end = allWaypointsArray.length; i < end; i++) {
105
+ allWaypointsArray[i][method]()
106
+ }
107
+ }
108
+
109
+ /* Public */
110
+ /* http://imakewebthings.com/waypoints/api/destroy-all */
111
+ Waypoint.destroyAll = function() {
112
+ Waypoint.invokeAll('destroy')
113
+ }
114
+
115
+ /* Public */
116
+ /* http://imakewebthings.com/waypoints/api/disable-all */
117
+ Waypoint.disableAll = function() {
118
+ Waypoint.invokeAll('disable')
119
+ }
120
+
121
+ /* Public */
122
+ /* http://imakewebthings.com/waypoints/api/enable-all */
123
+ Waypoint.enableAll = function() {
124
+ Waypoint.Context.refreshAll()
125
+ for (var waypointKey in allWaypoints) {
126
+ allWaypoints[waypointKey].enabled = true
127
+ }
128
+ return this
129
+ }
130
+
131
+ /* Public */
132
+ /* http://imakewebthings.com/waypoints/api/refresh-all */
133
+ Waypoint.refreshAll = function() {
134
+ Waypoint.Context.refreshAll()
135
+ }
136
+
137
+ /* Public */
138
+ /* http://imakewebthings.com/waypoints/api/viewport-height */
139
+ Waypoint.viewportHeight = function() {
140
+ return window.innerHeight || document.documentElement.clientHeight
141
+ }
142
+
143
+ /* Public */
144
+ /* http://imakewebthings.com/waypoints/api/viewport-width */
145
+ Waypoint.viewportWidth = function() {
146
+ return document.documentElement.clientWidth
147
+ }
148
+
149
+ Waypoint.adapters = []
150
+
151
+ Waypoint.defaults = {
152
+ context: window,
153
+ continuous: true,
154
+ enabled: true,
155
+ group: 'default',
156
+ horizontal: false,
157
+ offset: 0
158
+ }
159
+
160
+ Waypoint.offsetAliases = {
161
+ 'bottom-in-view': function() {
162
+ return this.context.innerHeight() - this.adapter.outerHeight()
163
+ },
164
+ 'right-in-view': function() {
165
+ return this.context.innerWidth() - this.adapter.outerWidth()
166
+ }
167
+ }
168
+
169
+ window.Waypoint = Waypoint
170
+ }())
171
+ ;(function() {
172
+ 'use strict'
173
+
174
+ function requestAnimationFrameShim(callback) {
175
+ window.setTimeout(callback, 1000 / 60)
176
+ }
177
+
178
+ var keyCounter = 0
179
+ var contexts = {}
180
+ var Waypoint = window.Waypoint
181
+ var oldWindowLoad = window.onload
182
+
183
+ /* http://imakewebthings.com/waypoints/api/context */
184
+ function Context(element) {
185
+ this.element = element
186
+ this.Adapter = Waypoint.Adapter
187
+ this.adapter = new this.Adapter(element)
188
+ this.key = 'waypoint-context-' + keyCounter
189
+ this.didScroll = false
190
+ this.didResize = false
191
+ this.oldScroll = {
192
+ x: this.adapter.scrollLeft(),
193
+ y: this.adapter.scrollTop()
194
+ }
195
+ this.waypoints = {
196
+ vertical: {},
197
+ horizontal: {}
198
+ }
199
+
200
+ element.waypointContextKey = this.key
201
+ contexts[element.waypointContextKey] = this
202
+ keyCounter += 1
203
+ if (!Waypoint.windowContext) {
204
+ Waypoint.windowContext = true
205
+ Waypoint.windowContext = new Context(window)
206
+ }
207
+
208
+ this.createThrottledScrollHandler()
209
+ this.createThrottledResizeHandler()
210
+ }
211
+
212
+ /* Private */
213
+ Context.prototype.add = function(waypoint) {
214
+ var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical'
215
+ this.waypoints[axis][waypoint.key] = waypoint
216
+ this.refresh()
217
+ }
218
+
219
+ /* Private */
220
+ Context.prototype.checkEmpty = function() {
221
+ var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)
222
+ var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)
223
+ var isWindow = this.element == this.element.window
224
+ if (horizontalEmpty && verticalEmpty && !isWindow) {
225
+ this.adapter.off('.waypoints')
226
+ delete contexts[this.key]
227
+ }
228
+ }
229
+
230
+ /* Private */
231
+ Context.prototype.createThrottledResizeHandler = function() {
232
+ var self = this
233
+
234
+ function resizeHandler() {
235
+ self.handleResize()
236
+ self.didResize = false
237
+ }
238
+
239
+ this.adapter.on('resize.waypoints', function() {
240
+ if (!self.didResize) {
241
+ self.didResize = true
242
+ Waypoint.requestAnimationFrame(resizeHandler)
243
}
244
+ })
245
+ }
246
247
+ /* Private */
248
+ Context.prototype.createThrottledScrollHandler = function() {
249
+ var self = this
250
+ function scrollHandler() {
251
+ self.handleScroll()
252
+ self.didScroll = false
253
+ }
254
+
255
+ this.adapter.on('scroll.waypoints', function() {
256
+ if (!self.didScroll || Waypoint.isTouch) {
257
+ self.didScroll = true
258
+ Waypoint.requestAnimationFrame(scrollHandler)
259
}
260
+ })
261
+ }
262
263
+ /* Private */
264
+ Context.prototype.handleResize = function() {
265
+ Waypoint.Context.refreshAll()
266
+ }
267
+
268
+ /* Private */
269
+ Context.prototype.handleScroll = function() {
270
+ var triggeredGroups = {}
271
+ var axes = {
272
+ horizontal: {
273
+ newScroll: this.adapter.scrollLeft(),
274
+ oldScroll: this.oldScroll.x,
275
+ forward: 'right',
276
+ backward: 'left'
277
},
278
+ vertical: {
279
+ newScroll: this.adapter.scrollTop(),
280
+ oldScroll: this.oldScroll.y,
281
+ forward: 'down',
282
+ backward: 'up'
283
+ }
284
+ }
285
+
286
+ for (var axisKey in axes) {
287
+ var axis = axes[axisKey]
288
+ var isForward = axis.newScroll > axis.oldScroll
289
+ var direction = isForward ? axis.forward : axis.backward
290
+
291
+ for (var waypointKey in this.waypoints[axisKey]) {
292
+ var waypoint = this.waypoints[axisKey][waypointKey]
293
+ if (waypoint.triggerPoint === null) {
294
+ continue
295
}
296
+ var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint
297
+ var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint
298
+ var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint
299
+ var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint
300
+ if (crossedForward || crossedBackward) {
301
+ waypoint.queueTrigger(direction)
302
+ triggeredGroups[waypoint.group.id] = waypoint.group
303
}
304
}
305
+ }
306
+
307
+ for (var groupKey in triggeredGroups) {
308
+ triggeredGroups[groupKey].flushTriggers()
309
+ }
310
+
311
+ this.oldScroll = {
312
+ x: axes.horizontal.newScroll,
313
+ y: axes.vertical.newScroll
314
+ }
315
+ }
316
+
317
+ /* Private */
318
+ Context.prototype.innerHeight = function() {
319
+ /*eslint-disable eqeqeq */
320
+ if (this.element == this.element.window) {
321
+ return Waypoint.viewportHeight()
322
+ }
323
+ /*eslint-enable eqeqeq */
324
+ return this.adapter.innerHeight()
325
+ }
326
+
327
+ /* Private */
328
+ Context.prototype.remove = function(waypoint) {
329
+ delete this.waypoints[waypoint.axis][waypoint.key]
330
+ this.checkEmpty()
331
+ }
332
+
333
+ /* Private */
334
+ Context.prototype.innerWidth = function() {
335
+ /*eslint-disable eqeqeq */
336
+ if (this.element == this.element.window) {
337
+ return Waypoint.viewportWidth()
338
+ }
339
+ /*eslint-enable eqeqeq */
340
+ return this.adapter.innerWidth()
341
+ }
342
+
343
+ /* Public */
344
+ /* http://imakewebthings.com/waypoints/api/context-destroy */
345
+ Context.prototype.destroy = function() {
346
+ var allWaypoints = []
347
+ for (var axis in this.waypoints) {
348
+ for (var waypointKey in this.waypoints[axis]) {
349
+ allWaypoints.push(this.waypoints[axis][waypointKey])
350
}
351
+ }
352
+ for (var i = 0, end = allWaypoints.length; i < end; i++) {
353
+ allWaypoints[i].destroy()
354
+ }
355
+ }
356
+
357
+ /* Public */
358
+ /* http://imakewebthings.com/waypoints/api/context-refresh */
359
+ Context.prototype.refresh = function() {
360
+ /*eslint-disable eqeqeq */
361
+ var isWindow = this.element == this.element.window
362
+ /*eslint-enable eqeqeq */
363
+ var contextOffset = isWindow ? undefined : this.adapter.offset()
364
+ var triggeredGroups = {}
365
+ var axes
366
+
367
+ this.handleScroll()
368
+ axes = {
369
+ horizontal: {
370
+ contextOffset: isWindow ? 0 : contextOffset.left,
371
+ contextScroll: isWindow ? 0 : this.oldScroll.x,
372
+ contextDimension: this.innerWidth(),
373
+ oldScroll: this.oldScroll.x,
374
+ forward: 'right',
375
+ backward: 'left',
376
+ offsetProp: 'left'
377
},
378
+ vertical: {
379
+ contextOffset: isWindow ? 0 : contextOffset.top,
380
+ contextScroll: isWindow ? 0 : this.oldScroll.y,
381
+ contextDimension: this.innerHeight(),
382
+ oldScroll: this.oldScroll.y,
383
+ forward: 'down',
384
+ backward: 'up',
385
+ offsetProp: 'top'
386
+ }
387
+ }
388
+
389
+ for (var axisKey in axes) {
390
+ var axis = axes[axisKey]
391
+ for (var waypointKey in this.waypoints[axisKey]) {
392
+ var waypoint = this.waypoints[axisKey][waypointKey]
393
+ var adjustment = waypoint.options.offset
394
+ var oldTriggerPoint = waypoint.triggerPoint
395
+ var elementOffset = 0
396
+ var freshWaypoint = oldTriggerPoint == null
397
+ var contextModifier, wasBeforeScroll, nowAfterScroll
398
+ var triggeredBackward, triggeredForward
399
+
400
+ if (waypoint.element !== waypoint.element.window) {
401
+ elementOffset = waypoint.adapter.offset()[axis.offsetProp]
402
}
403
+
404
+ if (typeof adjustment === 'function') {
405
+ adjustment = adjustment.apply(waypoint)
406
}
407
+ else if (typeof adjustment === 'string') {
408
+ adjustment = parseFloat(adjustment)
409
+ if (waypoint.options.offset.indexOf('%') > - 1) {
410
+ adjustment = Math.ceil(axis.contextDimension * adjustment / 100)
411
+ }
412
}
413
+
414
+ contextModifier = axis.contextScroll - axis.contextOffset
415
+ waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment)
416
+ wasBeforeScroll = oldTriggerPoint < axis.oldScroll
417
+ nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll
418
+ triggeredBackward = wasBeforeScroll && nowAfterScroll
419
+ triggeredForward = !wasBeforeScroll && !nowAfterScroll
420
+
421
+ if (!freshWaypoint && triggeredBackward) {
422
+ waypoint.queueTrigger(axis.backward)
423
+ triggeredGroups[waypoint.group.id] = waypoint.group
424
}
425
+ else if (!freshWaypoint && triggeredForward) {
426
+ waypoint.queueTrigger(axis.forward)
427
+ triggeredGroups[waypoint.group.id] = waypoint.group
428
}
429
+ else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {
430
+ waypoint.queueTrigger(axis.forward)
431
+ triggeredGroups[waypoint.group.id] = waypoint.group
432
}
433
+ }
434
+ }
435
+
436
+ Waypoint.requestAnimationFrame(function() {
437
+ for (var groupKey in triggeredGroups) {
438
+ triggeredGroups[groupKey].flushTriggers()
439
+ }
440
+ })
441
+
442
+ return this
443
+ }
444
+
445
+ /* Private */
446
+ Context.findOrCreateByElement = function(element) {
447
+ return Context.findByElement(element) || new Context(element)
448
+ }
449
+
450
+ /* Private */
451
+ Context.refreshAll = function() {
452
+ for (var contextId in contexts) {
453
+ contexts[contextId].refresh()
454
+ }
455
+ }
456
+
457
+ /* Public */
458
+ /* http://imakewebthings.com/waypoints/api/context-find-by-element */
459
+ Context.findByElement = function(element) {
460
+ return contexts[element.waypointContextKey]
461
+ }
462
+
463
+ window.onload = function() {
464
+ if (oldWindowLoad) {
465
+ oldWindowLoad()
466
+ }
467
+ Context.refreshAll()
468
+ }
469
+
470
+
471
+ Waypoint.requestAnimationFrame = function(callback) {
472
+ var requestFn = window.requestAnimationFrame ||
473
+ window.mozRequestAnimationFrame ||
474
+ window.webkitRequestAnimationFrame ||
475
+ requestAnimationFrameShim
476
+ requestFn.call(window, callback)
477
+ }
478
+ Waypoint.Context = Context
479
+ }())
480
+ ;(function() {
481
+ 'use strict'
482
+
483
+ function byTriggerPoint(a, b) {
484
+ return a.triggerPoint - b.triggerPoint
485
+ }
486
+
487
+ function byReverseTriggerPoint(a, b) {
488
+ return b.triggerPoint - a.triggerPoint
489
+ }
490
+
491
+ var groups = {
492
+ vertical: {},
493
+ horizontal: {}
494
+ }
495
+ var Waypoint = window.Waypoint
496
+
497
+ /* http://imakewebthings.com/waypoints/api/group */
498
+ function Group(options) {
499
+ this.name = options.name
500
+ this.axis = options.axis
501
+ this.id = this.name + '-' + this.axis
502
+ this.waypoints = []
503
+ this.clearTriggerQueues()
504
+ groups[this.axis][this.name] = this
505
+ }
506
+
507
+ /* Private */
508
+ Group.prototype.add = function(waypoint) {
509
+ this.waypoints.push(waypoint)
510
+ }
511
+
512
+ /* Private */
513
+ Group.prototype.clearTriggerQueues = function() {
514
+ this.triggerQueues = {
515
+ up: [],
516
+ down: [],
517
+ left: [],
518
+ right: []
519
+ }
520
+ }
521
+
522
+ /* Private */
523
+ Group.prototype.flushTriggers = function() {
524
+ for (var direction in this.triggerQueues) {
525
+ var waypoints = this.triggerQueues[direction]
526
+ var reverse = direction === 'up' || direction === 'left'
527
+ waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint)
528
+ for (var i = 0, end = waypoints.length; i < end; i += 1) {
529
+ var waypoint = waypoints[i]
530
+ if (waypoint.options.continuous || i === waypoints.length - 1) {
531
+ waypoint.trigger([direction])
532
}
533
}
534
+ }
535
+ this.clearTriggerQueues()
536
+ }
537
+
538
+ /* Private */
539
+ Group.prototype.next = function(waypoint) {
540
+ this.waypoints.sort(byTriggerPoint)
541
+ var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
542
+ var isLast = index === this.waypoints.length - 1
543
+ return isLast ? null : this.waypoints[index + 1]
544
+ }
545
+
546
+ /* Private */
547
+ Group.prototype.previous = function(waypoint) {
548
+ this.waypoints.sort(byTriggerPoint)
549
+ var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
550
+ return index ? this.waypoints[index - 1] : null
551
+ }
552
+
553
+ /* Private */
554
+ Group.prototype.queueTrigger = function(waypoint, direction) {
555
+ this.triggerQueues[direction].push(waypoint)
556
+ }
557
+
558
+ /* Private */
559
+ Group.prototype.remove = function(waypoint) {
560
+ var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
561
+ if (index > -1) {
562
+ this.waypoints.splice(index, 1)
563
+ }
564
+ }
565
+
566
+ /* Public */
567
+ /* http://imakewebthings.com/waypoints/api/first */
568
+ Group.prototype.first = function() {
569
+ return this.waypoints[0]
570
+ }
571
+
572
+ /* Public */
573
+ /* http://imakewebthings.com/waypoints/api/last */
574
+ Group.prototype.last = function() {
575
+ return this.waypoints[this.waypoints.length - 1]
576
+ }
577
+
578
+ /* Private */
579
+ Group.findOrCreate = function(options) {
580
+ return groups[options.axis][options.name] || new Group(options)
581
+ }
582
+
583
+ Waypoint.Group = Group
584
+ }())
585
+ ;(function() {
586
+ 'use strict'
587
+
588
+ var $ = window.jQuery
589
+ var Waypoint = window.Waypoint
590
+
591
+ function JQueryAdapter(element) {
592
+ this.$element = $(element)
593
+ }
594
+
595
+ $.each([
596
+ 'innerHeight',
597
+ 'innerWidth',
598
+ 'off',
599
+ 'offset',
600
+ 'on',
601
+ 'outerHeight',
602
+ 'outerWidth',
603
+ 'scrollLeft',
604
+ 'scrollTop'
605
+ ], function(i, method) {
606
+ JQueryAdapter.prototype[method] = function() {
607
+ var args = Array.prototype.slice.call(arguments)
608
+ return this.$element[method].apply(this.$element, args)
609
+ }
610
+ })
611
+
612
+ $.each([
613
+ 'extend',
614
+ 'inArray',
615
+ 'isEmptyObject'
616
+ ], function(i, method) {
617
+ JQueryAdapter[method] = $[method]
618
+ })
619
+
620
+ Waypoint.adapters.push({
621
+ name: 'jquery',
622
+ Adapter: JQueryAdapter
623
+ })
624
+ Waypoint.Adapter = JQueryAdapter
625
+ }())
626
+ ;(function() {
627
+ 'use strict'
628
+
629
+ var Waypoint = window.Waypoint
630
+
631
+ function createExtension(framework) {
632
+ return function() {
633
+ var waypoints = []
634
+ var overrides = arguments[0]
635
+
636
+ if (framework.isFunction(arguments[0])) {
637
+ overrides = framework.extend({}, arguments[1])
638
+ overrides.handler = arguments[0]
639
}
640
641
+ this.each(function() {
642
+ var options = framework.extend({}, overrides, {
643
+ element: this
644
+ })
645
+ if (typeof options.context === 'string') {
646
+ options.context = framework(this).closest(options.context)[0]
647
+ }
648
+ waypoints.push(new Waypoint(options))
649
+ })
650
651
+ return waypoints
652
+ }
653
+ }
654
655
+ if (window.jQuery) {
656
+ window.jQuery.fn.waypoint = createExtension(window.jQuery)
657
+ }
658
+ if (window.Zepto) {
659
+ window.Zepto.fn.waypoint = createExtension(window.Zepto)
660
+ }
661
+ }())
662
+ ;
assets/js/jquery.waypoints.min.js CHANGED
@@ -1 +1,7 @@
1
- (function(){var __indexOf=[].indexOf||function(item){for(var i=0,l=this.length;i<l;i++){if(i in this&&this[i]===item)return i}return-1},__slice=[].slice;(function(root,factory){if(typeof define==="function"&&define.amd){return define("waypoints",["jquery"],function($){return factory($,root)})}else{return factory(root.jQuery,root)}})(this,function($,window){var $w,Context,Waypoint,allWaypoints,contextCounter,contextKey,contexts,isTouch,jQMethods,methods,resizeEvent,scrollEvent,waypointCounter,waypointKey,wp,wps;$w=$(window);isTouch=__indexOf.call(window,"ontouchstart")>=0;allWaypoints={horizontal:{},vertical:{}};contextCounter=1;contexts={};contextKey="waypoints-context-id";resizeEvent="resize.waypoints";scrollEvent="scroll.waypoints";waypointCounter=1;waypointKey="waypoints-waypoint-ids";wp="waypoint";wps="waypoints";Context=function(){function Context($element){var _this=this;this.$element=$element;this.element=$element[0];this.didResize=false;this.didScroll=false;this.id="context"+contextCounter++;this.oldScroll={x:$element.scrollLeft(),y:$element.scrollTop()};this.waypoints={horizontal:{},vertical:{}};$element.data(contextKey,this.id);contexts[this.id]=this;$element.bind(scrollEvent,function(){var scrollHandler;if(!(_this.didScroll||isTouch)){_this.didScroll=true;scrollHandler=function(){_this.doScroll();return _this.didScroll=false};return window.setTimeout(scrollHandler,$[wps].settings.scrollThrottle)}});$element.bind(resizeEvent,function(){var resizeHandler;if(!_this.didResize){_this.didResize=true;resizeHandler=function(){$[wps]("refresh");return _this.didResize=false};return window.setTimeout(resizeHandler,$[wps].settings.resizeThrottle)}})}Context.prototype.doScroll=function(){var axes,_this=this;axes={horizontal:{newScroll:this.$element.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.$element.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};if(isTouch&&(!axes.vertical.oldScroll||!axes.vertical.newScroll)){$[wps]("refresh")}$.each(axes,function(aKey,axis){var direction,isForward,triggered;triggered=[];isForward=axis.newScroll>axis.oldScroll;direction=isForward?axis.forward:axis.backward;$.each(_this.waypoints[aKey],function(wKey,waypoint){var _ref,_ref1;if(axis.oldScroll<(_ref=waypoint.offset)&&_ref<=axis.newScroll){return triggered.push(waypoint)}else if(axis.newScroll<(_ref1=waypoint.offset)&&_ref1<=axis.oldScroll){return triggered.push(waypoint)}});triggered.sort(function(a,b){return a.offset-b.offset});if(!isForward){triggered.reverse()}return $.each(triggered,function(i,waypoint){if(waypoint.options.continuous||i===triggered.length-1){return waypoint.trigger([direction])}})});return this.oldScroll={x:axes.horizontal.newScroll,y:axes.vertical.newScroll}};Context.prototype.refresh=function(){var axes,cOffset,isWin,_this=this;isWin=$.isWindow(this.element);cOffset=this.$element.offset();this.doScroll();axes={horizontal:{contextOffset:isWin?0:cOffset.left,contextScroll:isWin?0:this.oldScroll.x,contextDimension:this.$element.width(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:isWin?0:cOffset.top,contextScroll:isWin?0:this.oldScroll.y,contextDimension:isWin?$[wps]("viewportHeight"):this.$element.height(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};return $.each(axes,function(aKey,axis){return $.each(_this.waypoints[aKey],function(i,waypoint){var adjustment,elementOffset,oldOffset,_ref,_ref1;adjustment=waypoint.options.offset;oldOffset=waypoint.offset;elementOffset=$.isWindow(waypoint.element)?0:waypoint.$element.offset()[axis.offsetProp];if($.isFunction(adjustment)){adjustment=adjustment.apply(waypoint.element)}else if(typeof adjustment==="string"){adjustment=parseFloat(adjustment);if(waypoint.options.offset.indexOf("%")>-1){adjustment=Math.ceil(axis.contextDimension*adjustment/100)}}waypoint.offset=elementOffset-axis.contextOffset+axis.contextScroll-adjustment;if(waypoint.options.onlyOnScroll&&oldOffset!=null||!waypoint.enabled){return}if(oldOffset!==null&&(oldOffset<(_ref=axis.oldScroll)&&_ref<=waypoint.offset)){return waypoint.trigger([axis.backward])}else if(oldOffset!==null&&(oldOffset>(_ref1=axis.oldScroll)&&_ref1>=waypoint.offset)){return waypoint.trigger([axis.forward])}else if(oldOffset===null&&axis.oldScroll>=waypoint.offset){return waypoint.trigger([axis.forward])}})})};Context.prototype.checkEmpty=function(){if($.isEmptyObject(this.waypoints.horizontal)&&$.isEmptyObject(this.waypoints.vertical)){this.$element.unbind([resizeEvent,scrollEvent].join(" "));return delete contexts[this.id]}};return Context}();Waypoint=function(){function Waypoint($element,context,options){var idList,_ref;options=$.extend({},$.fn[wp].defaults,options);if(options.offset==="bottom-in-view"){options.offset=function(){var contextHeight;contextHeight=$[wps]("viewportHeight");if(!$.isWindow(context.element)){contextHeight=context.$element.height()}return contextHeight-$(this).outerHeight()}}this.$element=$element;this.element=$element[0];this.axis=options.horizontal?"horizontal":"vertical";this.callback=options.handler;this.context=context;this.enabled=options.enabled;this.id="waypoints"+waypointCounter++;this.offset=null;this.options=options;context.waypoints[this.axis][this.id]=this;allWaypoints[this.axis][this.id]=this;idList=(_ref=$element.data(waypointKey))!=null?_ref:[];idList.push(this.id);$element.data(waypointKey,idList)}Waypoint.prototype.trigger=function(args){if(!this.enabled){return}if(this.callback!=null){this.callback.apply(this.element,args)}if(this.options.triggerOnce){return this.destroy()}};Waypoint.prototype.disable=function(){return this.enabled=false};Waypoint.prototype.enable=function(){this.context.refresh();return this.enabled=true};Waypoint.prototype.destroy=function(){delete allWaypoints[this.axis][this.id];delete this.context.waypoints[this.axis][this.id];return this.context.checkEmpty()};Waypoint.getWaypointsByElement=function(element){var all,ids;ids=$(element).data(waypointKey);if(!ids){return[]}all=$.extend({},allWaypoints.horizontal,allWaypoints.vertical);return $.map(ids,function(id){return all[id]})};return Waypoint}();methods={init:function(f,options){var _ref;if(options==null){options={}}if((_ref=options.handler)==null){options.handler=f}this.each(function(){var $this,context,contextElement,_ref1;$this=$(this);contextElement=(_ref1=options.context)!=null?_ref1:$.fn[wp].defaults.context;if(!$.isWindow(contextElement)){contextElement=$this.closest(contextElement)}contextElement=$(contextElement);context=contexts[contextElement.data(contextKey)];if(!context){context=new Context(contextElement)}return new Waypoint($this,context,options)});$[wps]("refresh");return this},disable:function(){return methods._invoke(this,"disable")},enable:function(){return methods._invoke(this,"enable")},destroy:function(){return methods._invoke(this,"destroy")},prev:function(axis,selector){return methods._traverse.call(this,axis,selector,function(stack,index,waypoints){if(index>0){return stack.push(waypoints[index-1])}})},next:function(axis,selector){return methods._traverse.call(this,axis,selector,function(stack,index,waypoints){if(index<waypoints.length-1){return stack.push(waypoints[index+1])}})},_traverse:function(axis,selector,push){var stack,waypoints;if(axis==null){axis="vertical"}if(selector==null){selector=window}waypoints=jQMethods.aggregate(selector);stack=[];this.each(function(){var index;index=$.inArray(this,waypoints[axis]);return push(stack,index,waypoints[axis])});return this.pushStack(stack)},_invoke:function($elements,method){$elements.each(function(){var waypoints;waypoints=Waypoint.getWaypointsByElement(this);return $.each(waypoints,function(i,waypoint){waypoint[method]();return true})});return this}};$.fn[wp]=function(){var args,method;method=arguments[0],args=2<=arguments.length?__slice.call(arguments,1):[];if(methods[method]){return methods[method].apply(this,args)}else if($.isFunction(method)){return methods.init.apply(this,arguments)}else if($.isPlainObject(method)){return methods.init.apply(this,[null,method])}else if(!method){return $.error("jQuery Waypoints needs a callback function or handler option.")}else{return $.error("The "+method+" method does not exist in jQuery Waypoints.")}};$.fn[wp].defaults={context:window,continuous:true,enabled:true,horizontal:false,offset:0,triggerOnce:false};jQMethods={refresh:function(){return $.each(contexts,function(i,context){return context.refresh()})},viewportHeight:function(){var _ref;return(_ref=window.innerHeight)!=null?_ref:$w.height()},aggregate:function(contextSelector){var collection,waypoints,_ref;collection=allWaypoints;if(contextSelector){collection=(_ref=contexts[$(contextSelector).data(contextKey)])!=null?_ref.waypoints:void 0}if(!collection){return[]}waypoints={horizontal:[],vertical:[]};$.each(waypoints,function(axis,arr){$.each(collection[axis],function(key,waypoint){return arr.push(waypoint)});arr.sort(function(a,b){return a.offset-b.offset});waypoints[axis]=$.map(arr,function(waypoint){return waypoint.element});return waypoints[axis]=$.unique(waypoints[axis])});return waypoints},above:function(contextSelector){if(contextSelector==null){contextSelector=window}return jQMethods._filter(contextSelector,"vertical",function(context,waypoint){return waypoint.offset<=context.oldScroll.y})},below:function(contextSelector){if(contextSelector==null){contextSelector=window}return jQMethods._filter(contextSelector,"vertical",function(context,waypoint){return waypoint.offset>context.oldScroll.y})},left:function(contextSelector){if(contextSelector==null){contextSelector=window}return jQMethods._filter(contextSelector,"horizontal",function(context,waypoint){return waypoint.offset<=context.oldScroll.x})},right:function(contextSelector){if(contextSelector==null){contextSelector=window}return jQMethods._filter(contextSelector,"horizontal",function(context,waypoint){return waypoint.offset>context.oldScroll.x})},enable:function(){return jQMethods._invoke("enable")},disable:function(){return jQMethods._invoke("disable")},destroy:function(){return jQMethods._invoke("destroy")},extendFn:function(methodName,f){return methods[methodName]=f},_invoke:function(method){var waypoints;waypoints=$.extend({},allWaypoints.vertical,allWaypoints.horizontal);return $.each(waypoints,function(key,waypoint){waypoint[method]();return true})},_filter:function(selector,axis,test){var context,waypoints;context=contexts[$(selector).data(contextKey)];if(!context){return[]}waypoints=[];$.each(context.waypoints[axis],function(i,waypoint){if(test(context,waypoint)){return waypoints.push(waypoint)}});waypoints.sort(function(a,b){return a.offset-b.offset});return $.map(waypoints,function(waypoint){return waypoint.element})}};$[wps]=function(){var args,method;method=arguments[0],args=2<=arguments.length?__slice.call(arguments,1):[];if(jQMethods[method]){return jQMethods[method].apply(null,args)}else{return jQMethods.aggregate.call(null,method)}};$[wps].settings={resizeThrottle:100,scrollThrottle:30};return $w.load(function(){return $[wps]("refresh")})})}).call(this);
1
+ /*!
2
+ Waypoints - 4.0.1
3
+ Copyright © 2011-2016 Caleb Troughton
4
+ Licensed under the MIT license.
5
+ https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
6
+ */
7
+ !function(){"use strict";function t(o){if(!o)throw new Error("No options passed to Waypoint constructor");if(!o.element)throw new Error("No element option passed to Waypoint constructor");if(!o.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,o),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=o.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var o in i)e.push(i[o]);for(var n=0,r=e.length;r>n;n++)e[n][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.Context.refreshAll();for(var e in i)i[e].enabled=!0;return this},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=n.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,o[t.waypointContextKey]=this,i+=1,n.windowContext||(n.windowContext=!0,n.windowContext=new e(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,o={},n=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical),i=this.element==this.element.window;t&&e&&!i&&(this.adapter.off(".waypoints"),delete o[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,n.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||n.isTouch)&&(e.didScroll=!0,n.requestAnimationFrame(t))})},e.prototype.handleResize=function(){n.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var o=e[i],n=o.newScroll>o.oldScroll,r=n?o.forward:o.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s];if(null!==a.triggerPoint){var l=o.oldScroll<a.triggerPoint,h=o.newScroll>=a.triggerPoint,p=l&&h,u=!l&&!h;(p||u)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}}for(var c in t)t[c].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?n.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?n.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var o=0,n=t.length;n>o;o++)t[o].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),o={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var r in t){var s=t[r];for(var a in this.waypoints[r]){var l,h,p,u,c,d=this.waypoints[r][a],f=d.options.offset,w=d.triggerPoint,y=0,g=null==w;d.element!==d.element.window&&(y=d.adapter.offset()[s.offsetProp]),"function"==typeof f?f=f.apply(d):"string"==typeof f&&(f=parseFloat(f),d.options.offset.indexOf("%")>-1&&(f=Math.ceil(s.contextDimension*f/100))),l=s.contextScroll-s.contextOffset,d.triggerPoint=Math.floor(y+l-f),h=w<s.oldScroll,p=d.triggerPoint>=s.oldScroll,u=h&&p,c=!h&&!p,!g&&u?(d.queueTrigger(s.backward),o[d.group.id]=d.group):!g&&c?(d.queueTrigger(s.forward),o[d.group.id]=d.group):g&&s.oldScroll>=d.triggerPoint&&(d.queueTrigger(s.forward),o[d.group.id]=d.group)}}return n.requestAnimationFrame(function(){for(var t in o)o[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in o)o[t].refresh()},e.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},n.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},n.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),o[this.axis][this.name]=this}var o={vertical:{},horizontal:{}},n=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var o=this.triggerQueues[i],n="up"===i||"left"===i;o.sort(n?e:t);for(var r=0,s=o.length;s>r;r+=1){var a=o[r];(a.options.continuous||r===o.length-1)&&a.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints),o=i===this.waypoints.length-1;return o?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=n.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return o[t.axis][t.name]||new i(t)},n.Group=i}(),function(){"use strict";function t(t){this.$element=e(t)}var e=window.jQuery,i=window.Waypoint;e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,i){t.prototype[i]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[i].apply(this.$element,t)}}),e.each(["extend","inArray","isEmptyObject"],function(i,o){t[o]=e[o]}),i.adapters.push({name:"jquery",Adapter:t}),i.Adapter=t}(),function(){"use strict";function t(t){return function(){var i=[],o=arguments[0];return t.isFunction(arguments[0])&&(o=t.extend({},arguments[1]),o.handler=arguments[0]),this.each(function(){var n=t.extend({},o,{element:this});"string"==typeof n.context&&(n.context=t(this).closest(n.context)[0]),i.push(new e(n))}),i}}var e=window.Waypoint;window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}();
assets/js/lae-widgets.js CHANGED
@@ -45,10 +45,10 @@
45
46
$scope.waypoint(function (direction) {
47
48
- WidgetLAEStatsBarHandler($(this), $);
49
50
}, {
51
- offset: $.waypoints('viewportHeight') - 150,
52
triggerOnce: true
53
});
54
@@ -80,10 +80,10 @@
80
81
$scope.waypoint(function (direction) {
82
83
- WidgetLAEPiechartsHandler($(this), $);
84
85
}, {
86
- offset: $.waypoints('viewportHeight') - 100,
87
triggerOnce: true
88
});
89
@@ -109,10 +109,10 @@
109
110
$scope.waypoint(function (direction) {
111
112
- WidgetLAEOdometersHandler($(this), $);
113
114
}, {
115
- offset: $.waypoints('viewportHeight') - 100,
116
triggerOnce: true
117
});
118
};
45
46
$scope.waypoint(function (direction) {
47
48
+ WidgetLAEStatsBarHandler($(this.element), $);
49
50
}, {
51
+ offset: Waypoint.viewportHeight() - 150,
52
triggerOnce: true
53
});
54
80
81
$scope.waypoint(function (direction) {
82
83
+ WidgetLAEPiechartsHandler($(this.element), $);
84
85
}, {
86
+ offset: Waypoint.viewportHeight() - 100,
87
triggerOnce: true
88
});
89
109
110
$scope.waypoint(function (direction) {
111
112
+ WidgetLAEOdometersHandler($(this.element), $);
113
114
}, {
115
+ offset: Waypoint.viewportHeight() - 100,
116
triggerOnce: true
117
});
118
};
assets/js/lae-widgets.min.js CHANGED
@@ -1 +1 @@
1
- (function($){var WidgetLAETestimonialsSliderHandler=function($scope,$){var slider_elem=$scope.find(".lae-testimonials-slider").eq(0);var settings=slider_elem.data("settings");slider_elem.flexslider({selector:".lae-slides > .lae-slide",animation:settings["slide_animation"],direction:settings["direction"],slideshowSpeed:settings["slideshow_speed"],animationSpeed:settings["animation_speed"],namespace:"lae-flex-",pauseOnAction:settings["pause_on_action"],pauseOnHover:settings["pause_on_hover"],controlNav:settings["control_nav"],directionNav:settings["direction_nav"],prevText:"Previous<span></span>",nextText:"Next<span></span>",smoothHeight:false,animationLoop:true,slideshow:true,easing:"swing",controlsContainer:"lae-testimonials-slider"})};var WidgetLAEStatsBarHandler=function($scope,$){$scope.find(".lae-stats-bar-content").each(function(){var dataperc=$(this).data("perc");$(this).animate({width:dataperc+"%"},dataperc*20)})};var WidgetLAEStatsBarHandlerOnScroll=function($scope,$){$scope.waypoint(function(direction){WidgetLAEStatsBarHandler($(this),$)},{offset:$.waypoints("viewportHeight")-150,triggerOnce:true})};var WidgetLAEPiechartsHandler=function($scope,$){$scope.find(".lae-piechart .lae-percentage").each(function(){var track_color=$(this).data("track-color");var bar_color=$(this).data("bar-color");$(this).easyPieChart({animate:2e3,lineWidth:10,barColor:bar_color,trackColor:track_color,scaleColor:false,lineCap:"square",size:220})})};var WidgetLAEPiechartsHandlerOnScroll=function($scope,$){$scope.waypoint(function(direction){WidgetLAEPiechartsHandler($(this),$)},{offset:$.waypoints("viewportHeight")-100,triggerOnce:true})};var WidgetLAEOdometersHandler=function($scope,$){$scope.find(".lae-odometer .lae-number").each(function(){var odometer=$(this);setTimeout(function(){var data_stop=odometer.attr("data-stop");$(odometer).text(data_stop)},100)})};var WidgetLAEOdometersHandlerOnScroll=function($scope,$){$scope.waypoint(function(direction){WidgetLAEOdometersHandler($(this),$)},{offset:$.waypoints("viewportHeight")-100,triggerOnce:true})};var WidgetLAESliderHandler=function($scope,$){var slider_elem=$scope.find(".lae-slider").eq(0);var settings=slider_elem.data("settings");var $slider=slider_elem.find(".lae-flexslider");$slider.flexslider({selector:".lae-slides > .lae-slide",animation:settings["slide_animation"],direction:settings["direction"],slideshowSpeed:settings["slideshow_speed"],animationSpeed:settings["animation_speed"],namespace:"lae-flex-",pauseOnAction:settings["pause_on_action"],pauseOnHover:settings["pause_on_hover"],controlNav:settings["control_nav"],directionNav:settings["direction_nav"],prevText:"Previous<span></span>",nextText:"Next<span></span>",smoothHeight:false,animationLoop:true,slideshow:settings["slideshow"],easing:"swing",randomize:settings["randomize"],animationLoop:settings["loop"],controlsContainer:"lae-slider"})};var WidgetLAEPortfolioHandler=function($scope,$){if($().isotope===undefined){return}var container=$scope.find(".lae-portfolio");if(container.length===0){return}var htmlContent=$scope.find(".js-isotope");var isotopeOptions=htmlContent.data("isotope-options");htmlContent.isotope({itemSelector:isotopeOptions["itemSelector"],layoutMode:isotopeOptions["layoutMode"]});htmlContent.imagesLoaded(function(){htmlContent.isotope("layout")});$scope.find(".lae-taxonomy-filter .lae-filter-item a").on("click",function(e){e.preventDefault();var selector=$(this).attr("data-value");container.isotope({filter:selector});$(this).closest(".lae-taxonomy-filter").children().removeClass("lae-active");$(this).closest(".lae-filter-item").addClass("lae-active");return false})};var WidgetLAECarouselHandler=function($scope,$){var carousel_elem=$scope.find(".lae-carousel, .lae-posts-carousel").eq(0);if(carousel_elem.length>0){var settings=carousel_elem.data("settings");var arrows=settings["arrows"];var dots=settings["dots"];var autoplay=settings["autoplay"];var autoplay_speed=parseInt(settings["autoplay_speed"])||3e3;var animation_speed=parseInt(settings["animation_speed"])||300;var fade=settings["fade"];var pause_on_hover=settings["pause_on_hover"];var display_columns=parseInt(settings["display_columns"])||4;var scroll_columns=parseInt(settings["scroll_columns"])||4;var tablet_width=parseInt(settings["tablet_width"])||800;var tablet_display_columns=parseInt(settings["tablet_display_columns"])||2;var tablet_scroll_columns=parseInt(settings["tablet_scroll_columns"])||2;var mobile_width=parseInt(settings["mobile_width"])||480;var mobile_display_columns=parseInt(settings["mobile_display_columns"])||1;var mobile_scroll_columns=parseInt(settings["mobile_scroll_columns"])||1;carousel_elem.slick({arrows:arrows,dots:dots,infinite:true,autoplay:autoplay,autoplaySpeed:autoplay_speed,speed:animation_speed,fade:false,pauseOnHover:pause_on_hover,slidesToShow:display_columns,slidesToScroll:scroll_columns,responsive:[{breakpoint:tablet_width,settings:{slidesToShow:tablet_display_columns,slidesToScroll:tablet_scroll_columns}},{breakpoint:mobile_width,settings:{slidesToShow:mobile_display_columns,slidesToScroll:mobile_scroll_columns}}]})}};$(window).on("elementor/frontend/init",function(){elementorFrontend.hooks.addAction("frontend/element_ready/lae-testimonials-slider.default",WidgetLAETestimonialsSliderHandler);if(elementorFrontend.isEditMode()){elementorFrontend.hooks.addAction("frontend/element_ready/lae-stats-bars.default",WidgetLAEStatsBarHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-piecharts.default",WidgetLAEPiechartsHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-odometers.default",WidgetLAEOdometersHandler)}else{elementorFrontend.hooks.addAction("frontend/element_ready/lae-stats-bars.default",WidgetLAEStatsBarHandlerOnScroll);elementorFrontend.hooks.addAction("frontend/element_ready/lae-piecharts.default",WidgetLAEPiechartsHandlerOnScroll);elementorFrontend.hooks.addAction("frontend/element_ready/lae-odometers.default",WidgetLAEOdometersHandlerOnScroll)}elementorFrontend.hooks.addAction("frontend/element_ready/lae-slider.default",WidgetLAESliderHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-portfolio.default",WidgetLAEPortfolioHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-carousel.default",WidgetLAECarouselHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-posts-carousel.default",WidgetLAECarouselHandler)})})(jQuery);
1
+ (function($){var WidgetLAETestimonialsSliderHandler=function($scope,$){var slider_elem=$scope.find(".lae-testimonials-slider").eq(0);var settings=slider_elem.data("settings");slider_elem.flexslider({selector:".lae-slides > .lae-slide",animation:settings["slide_animation"],direction:settings["direction"],slideshowSpeed:settings["slideshow_speed"],animationSpeed:settings["animation_speed"],namespace:"lae-flex-",pauseOnAction:settings["pause_on_action"],pauseOnHover:settings["pause_on_hover"],controlNav:settings["control_nav"],directionNav:settings["direction_nav"],prevText:"Previous<span></span>",nextText:"Next<span></span>",smoothHeight:false,animationLoop:true,slideshow:true,easing:"swing",controlsContainer:"lae-testimonials-slider"})};var WidgetLAEStatsBarHandler=function($scope,$){$scope.find(".lae-stats-bar-content").each(function(){var dataperc=$(this).data("perc");$(this).animate({width:dataperc+"%"},dataperc*20)})};var WidgetLAEStatsBarHandlerOnScroll=function($scope,$){$scope.waypoint(function(direction){WidgetLAEStatsBarHandler($(this.element),$)},{offset:Waypoint.viewportHeight()-150,triggerOnce:true})};var WidgetLAEPiechartsHandler=function($scope,$){$scope.find(".lae-piechart .lae-percentage").each(function(){var track_color=$(this).data("track-color");var bar_color=$(this).data("bar-color");$(this).easyPieChart({animate:2e3,lineWidth:10,barColor:bar_color,trackColor:track_color,scaleColor:false,lineCap:"square",size:220})})};var WidgetLAEPiechartsHandlerOnScroll=function($scope,$){$scope.waypoint(function(direction){WidgetLAEPiechartsHandler($(this.element),$)},{offset:Waypoint.viewportHeight()-100,triggerOnce:true})};var WidgetLAEOdometersHandler=function($scope,$){$scope.find(".lae-odometer .lae-number").each(function(){var odometer=$(this);setTimeout(function(){var data_stop=odometer.attr("data-stop");$(odometer).text(data_stop)},100)})};var WidgetLAEOdometersHandlerOnScroll=function($scope,$){$scope.waypoint(function(direction){WidgetLAEOdometersHandler($(this.element),$)},{offset:Waypoint.viewportHeight()-100,triggerOnce:true})};var WidgetLAESliderHandler=function($scope,$){var slider_elem=$scope.find(".lae-slider").eq(0);var settings=slider_elem.data("settings");var $slider=slider_elem.find(".lae-flexslider");$slider.flexslider({selector:".lae-slides > .lae-slide",animation:settings["slide_animation"],direction:settings["direction"],slideshowSpeed:settings["slideshow_speed"],animationSpeed:settings["animation_speed"],namespace:"lae-flex-",pauseOnAction:settings["pause_on_action"],pauseOnHover:settings["pause_on_hover"],controlNav:settings["control_nav"],directionNav:settings["direction_nav"],prevText:"Previous<span></span>",nextText:"Next<span></span>",smoothHeight:false,animationLoop:true,slideshow:settings["slideshow"],easing:"swing",randomize:settings["randomize"],animationLoop:settings["loop"],controlsContainer:"lae-slider"})};var WidgetLAEPortfolioHandler=function($scope,$){if($().isotope===undefined){return}var container=$scope.find(".lae-portfolio");if(container.length===0){return}var htmlContent=$scope.find(".js-isotope");var isotopeOptions=htmlContent.data("isotope-options");htmlContent.isotope({itemSelector:isotopeOptions["itemSelector"],layoutMode:isotopeOptions["layoutMode"]});htmlContent.imagesLoaded(function(){htmlContent.isotope("layout")});$scope.find(".lae-taxonomy-filter .lae-filter-item a").on("click",function(e){e.preventDefault();var selector=$(this).attr("data-value");container.isotope({filter:selector});$(this).closest(".lae-taxonomy-filter").children().removeClass("lae-active");$(this).closest(".lae-filter-item").addClass("lae-active");return false})};var WidgetLAECarouselHandler=function($scope,$){var carousel_elem=$scope.find(".lae-carousel, .lae-posts-carousel").eq(0);if(carousel_elem.length>0){var settings=carousel_elem.data("settings");var arrows=settings["arrows"];var dots=settings["dots"];var autoplay=settings["autoplay"];var autoplay_speed=parseInt(settings["autoplay_speed"])||3e3;var animation_speed=parseInt(settings["animation_speed"])||300;var fade=settings["fade"];var pause_on_hover=settings["pause_on_hover"];var display_columns=parseInt(settings["display_columns"])||4;var scroll_columns=parseInt(settings["scroll_columns"])||4;var tablet_width=parseInt(settings["tablet_width"])||800;var tablet_display_columns=parseInt(settings["tablet_display_columns"])||2;var tablet_scroll_columns=parseInt(settings["tablet_scroll_columns"])||2;var mobile_width=parseInt(settings["mobile_width"])||480;var mobile_display_columns=parseInt(settings["mobile_display_columns"])||1;var mobile_scroll_columns=parseInt(settings["mobile_scroll_columns"])||1;carousel_elem.slick({arrows:arrows,dots:dots,infinite:true,autoplay:autoplay,autoplaySpeed:autoplay_speed,speed:animation_speed,fade:false,pauseOnHover:pause_on_hover,slidesToShow:display_columns,slidesToScroll:scroll_columns,responsive:[{breakpoint:tablet_width,settings:{slidesToShow:tablet_display_columns,slidesToScroll:tablet_scroll_columns}},{breakpoint:mobile_width,settings:{slidesToShow:mobile_display_columns,slidesToScroll:mobile_scroll_columns}}]})}};$(window).on("elementor/frontend/init",function(){elementorFrontend.hooks.addAction("frontend/element_ready/lae-testimonials-slider.default",WidgetLAETestimonialsSliderHandler);if(elementorFrontend.isEditMode()){elementorFrontend.hooks.addAction("frontend/element_ready/lae-stats-bars.default",WidgetLAEStatsBarHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-piecharts.default",WidgetLAEPiechartsHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-odometers.default",WidgetLAEOdometersHandler)}else{elementorFrontend.hooks.addAction("frontend/element_ready/lae-stats-bars.default",WidgetLAEStatsBarHandlerOnScroll);elementorFrontend.hooks.addAction("frontend/element_ready/lae-piecharts.default",WidgetLAEPiechartsHandlerOnScroll);elementorFrontend.hooks.addAction("frontend/element_ready/lae-odometers.default",WidgetLAEOdometersHandlerOnScroll)}elementorFrontend.hooks.addAction("frontend/element_ready/lae-slider.default",WidgetLAESliderHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-portfolio.default",WidgetLAEPortfolioHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-carousel.default",WidgetLAECarouselHandler);elementorFrontend.hooks.addAction("frontend/element_ready/lae-posts-carousel.default",WidgetLAECarouselHandler)})})(jQuery);
includes/widgets/carousel.php CHANGED
@@ -26,7 +26,7 @@ class LAE_Carousel_Widget extends Widget_Base {
26
}
27
28
public function get_title() {
29
- return __('Livemesh Carousel', 'livemesh-el-addons');
30
}
31
32
public function get_icon() {
@@ -123,6 +123,9 @@ Fusce risus nisl, viverra et, tempor et, pretium in, sapien. Vestibulum turpis s
123
'type' => Controls_Manager::WYSIWYG,
124
'default' => __('The HTML content for the element', 'livemesh-el-addons'),
125
'show_label' => false,
126
],
127
128
],
@@ -480,7 +483,7 @@ Fusce risus nisl, viverra et, tempor et, pretium in, sapien. Vestibulum turpis s
480
481
protected function render() {
482
483
- $settings = $this->get_settings();
484
485
$elements = $settings['elements'];
486
26
}
27
28
public function get_title() {
29
+ return __('Carousel', 'livemesh-el-addons');
30
}
31
32
public function get_icon() {
123
'type' => Controls_Manager::WYSIWYG,
124
'default' => __('The HTML content for the element', 'livemesh-el-addons'),
125
'show_label' => false,
126
+ 'dynamic' => [
127
+ 'active' => true,
128
+ ],
129
],
130
131
],
483
484
protected function render() {
485
486
+ $settings = $this->get_settings_for_display();
487
488
$elements = $settings['elements'];
489
includes/widgets/clients.php CHANGED
@@ -27,7 +27,7 @@ class LAE_Clients_Widget extends Widget_Base {
27
}
28
29
public function get_title() {
30
- return __('Livemesh Clients', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
@@ -79,6 +79,9 @@ class LAE_Clients_Widget extends Widget_Base {
79
'label' => __('Client Name', 'livemesh-el-addons'),
80
'label_block' => true,
81
'description' => __('The name of the client/customer.', 'livemesh-el-addons'),
82
],
83
84
[
@@ -92,6 +95,9 @@ class LAE_Clients_Widget extends Widget_Base {
92
'is_external' => 'true',
93
],
94
'placeholder' => __('http://client-link.com', 'livemesh-el-addons'),
95
],
96
97
[
@@ -103,6 +109,9 @@ class LAE_Clients_Widget extends Widget_Base {
103
'url' => Utils::get_placeholder_image_src(),
104
],
105
'label_block' => true,
106
],
107
108
],
@@ -235,7 +244,7 @@ class LAE_Clients_Widget extends Widget_Base {
235
236
protected function render() {
237
238
- $settings = $this->get_settings();
239
?>
240
241
<?php $num_of_columns = intval($settings['per_line']); ?>
@@ -264,12 +273,12 @@ class LAE_Clients_Widget extends Widget_Base {
264
265
<a href="<?php echo esc_url($client['client_link']['url']); ?>"
266
title="<?php echo esc_html($client['client_name']); ?>"
267
- <?php echo $target; ?>><?php echo esc_html($client['client_name']); ?></a>
268
</div>
269
270
<?php else: ?>
271
272
- <div class="lae-client-name"><?php echo esc_html($client['client_name']); ?></div>
273
274
<?php endif; ?>
275
27
}
28
29
public function get_title() {
30
+ return __('Clients', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
79
'label' => __('Client Name', 'livemesh-el-addons'),
80
'label_block' => true,
81
'description' => __('The name of the client/customer.', 'livemesh-el-addons'),
82
+ 'dynamic' => [
83
+ 'active' => true,
84
+ ],
85
],
86
87
[
95
'is_external' => 'true',
96
],
97
'placeholder' => __('http://client-link.com', 'livemesh-el-addons'),
98
+ 'dynamic' => [
99
+ 'active' => true,
100
+ ],
101
],
102
103
[
109
'url' => Utils::get_placeholder_image_src(),
110
],
111
'label_block' => true,
112
+ 'dynamic' => [
113
+ 'active' => true,
114
+ ],
115
],
116
117
],
244
245
protected function render() {
246
247
+ $settings = $this->get_settings_for_display();
248
?>
249
250
<?php $num_of_columns = intval($settings['per_line']); ?>
273
274
<a href="<?php echo esc_url($client['client_link']['url']); ?>"
275
title="<?php echo esc_html($client['client_name']); ?>"
276
+ <?php echo $target; ?>><?php echo wp_kses_post($client['client_name']); ?></a>
277
</div>
278
279
<?php else: ?>
280
281
+ <div class="lae-client-name"><?php echo wp_kses_post($client['client_name']); ?></div>
282
283
<?php endif; ?>
284
includes/widgets/heading.php CHANGED
@@ -26,7 +26,7 @@ class LAE_Heading_Widget extends Widget_Base {
26
}
27
28
public function get_title() {
29
- return __('Livemesh Heading', 'livemesh-el-addons');
30
}
31
32
public function get_icon() {
@@ -77,6 +77,9 @@ class LAE_Heading_Widget extends Widget_Base {
77
'label_block' => true,
78
'separator' => 'before',
79
'default' => __('Heading Title', 'livemesh-el-addons'),
80
]
81
);
82
@@ -90,6 +93,9 @@ class LAE_Heading_Widget extends Widget_Base {
90
'condition' => [
91
'style' => 'style2',
92
],
93
]
94
);
95
@@ -102,6 +108,9 @@ class LAE_Heading_Widget extends Widget_Base {
102
'condition' => [
103
'style' => ['style1', 'style2']
104
],
105
]
106
);
107
@@ -256,7 +265,7 @@ class LAE_Heading_Widget extends Widget_Base {
256
257
protected function render() {
258
259
- $settings = $this->get_settings();
260
261
?>
262
26
}
27
28
public function get_title() {
29
+ return __('Heading', 'livemesh-el-addons');
30
}
31
32
public function get_icon() {
77
'label_block' => true,
78
'separator' => 'before',
79
'default' => __('Heading Title', 'livemesh-el-addons'),
80
+ 'dynamic' => [
81
+ 'active' => true,
82
+ ],
83
]
84
);
85
93
'condition' => [
94
'style' => 'style2',
95
],
96
+ 'dynamic' => [
97
+ 'active' => true,
98
+ ],
99
]
100
);
101
108
'condition' => [
109
'style' => ['style1', 'style2']
110
],
111
+ 'dynamic' => [
112
+ 'active' => true,
113
+ ],
114
]
115
);
116
265
266
protected function render() {
267
268
+ $settings = $this->get_settings_for_display();
269
270
?>
271
includes/widgets/odometers.php CHANGED
@@ -15,6 +15,7 @@ use Elementor\Utils;
15
use Elementor\Scheme_Color;
16
use Elementor\Group_Control_Typography;
17
use Elementor\Scheme_Typography;
18
19
if (!defined('ABSPATH'))
20
exit; // Exit if accessed directly
@@ -27,7 +28,7 @@ class LAE_Odometers_Widget extends Widget_Base {
27
}
28
29
public function get_title() {
30
- return __('Livemesh Odometers', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
@@ -109,6 +110,9 @@ class LAE_Odometers_Widget extends Widget_Base {
109
'label' => __('Stats Title', 'livemesh-el-addons'),
110
'type' => Controls_Manager::TEXT,
111
'label_block' => true,
112
],
113
[
114
'name' => 'start_value',
@@ -145,6 +149,9 @@ class LAE_Odometers_Widget extends Widget_Base {
145
'condition' => [
146
'icon_type' => 'icon_image',
147
],
148
],
149
150
[
@@ -163,6 +170,12 @@ class LAE_Odometers_Widget extends Widget_Base {
163
'label' => __('Prefix', 'livemesh-el-addons'),
164
'type' => Controls_Manager::TEXT,
165
'description' => __('The prefix string like currency symbols like $ to indicate a monetary value.', 'livemesh-el-addons'),
166
],
167
168
[
@@ -170,6 +183,12 @@ class LAE_Odometers_Widget extends Widget_Base {
170
'label' => __('Suffix', 'livemesh-el-addons'),
171
'type' => Controls_Manager::TEXT,
172
'description' => __('The suffix string like hr for hours or m for million.', 'livemesh-el-addons'),
173
],
174
175
],
@@ -202,7 +221,7 @@ class LAE_Odometers_Widget extends Widget_Base {
202
Group_Control_Typography::get_type(),
203
[
204
'name' => 'stats_number_typography',
205
- 'selector' => '{{WRAPPER}} .lae-odometers .lae-odometer .lae-number',
206
]
207
);
208
@@ -331,7 +350,7 @@ class LAE_Odometers_Widget extends Widget_Base {
331
332
protected function render() {
333
334
- $settings = $this->get_settings();
335
?>
336
337
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
15
use Elementor\Scheme_Color;
16
use Elementor\Group_Control_Typography;
17
use Elementor\Scheme_Typography;
18
+ use Elementor\Modules\DynamicTags\Module as TagsModule;
19
20
if (!defined('ABSPATH'))
21
exit; // Exit if accessed directly
28
}
29
30
public function get_title() {
31
+ return __('Odometers', 'livemesh-el-addons');
32
}
33
34
public function get_icon() {
110
'label' => __('Stats Title', 'livemesh-el-addons'),
111
'type' => Controls_Manager::TEXT,
112
'label_block' => true,
113
+ 'dynamic' => [
114
+ 'active' => true,
115
+ ],
116
],
117
[
118
'name' => 'start_value',
149
'condition' => [
150
'icon_type' => 'icon_image',
151
],
152
+ 'dynamic' => [
153
+ 'active' => true,
154
+ ],
155
],
156
157
[
170
'label' => __('Prefix', 'livemesh-el-addons'),
171
'type' => Controls_Manager::TEXT,
172
'description' => __('The prefix string like currency symbols like $ to indicate a monetary value.', 'livemesh-el-addons'),
173
+ 'dynamic' => [
174
+ 'active' => true,
175
+ 'categories' => [
176
+ TagsModule::POST_META_CATEGORY,
177
+ ],
178
+ ],
179
],
180
181
[
183
'label' => __('Suffix', 'livemesh-el-addons'),
184
'type' => Controls_Manager::TEXT,
185
'description' => __('The suffix string like hr for hours or m for million.', 'livemesh-el-addons'),
186
+ 'dynamic' => [
187
+ 'active' => true,
188
+ 'categories' => [
189
+ TagsModule::POST_META_CATEGORY,
190
+ ],
191
+ ],
192
],
193
194
],
221
Group_Control_Typography::get_type(),
222
[
223
'name' => 'stats_number_typography',
224
+ 'selector' => '{{WRAPPER}} .lae-odometers .lae-odometer .lae-number span',
225
]
226
);
227
350
351
protected function render() {
352
353
+ $settings = $this->get_settings_for_display();
354
?>
355
356
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
includes/widgets/piecharts.php CHANGED
@@ -15,6 +15,7 @@ use Elementor\Controls_Manager;
15
use Elementor\Scheme_Color;
16
use Elementor\Group_Control_Typography;
17
use Elementor\Scheme_Typography;
18
19
if (!defined('ABSPATH'))
20
exit; // Exit if accessed directly
@@ -27,7 +28,7 @@ class LAE_Piecharts_Widget extends Widget_Base {
27
}
28
29
public function get_title() {
30
- return __('Livemesh Piecharts', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
@@ -97,6 +98,9 @@ class LAE_Piecharts_Widget extends Widget_Base {
97
'label' => __('Stats Title', 'livemesh-el-addons'),
98
'type' => Controls_Manager::TEXT,
99
'description' => __('The title for the piechart', 'livemesh-el-addons'),
100
],
101
[
102
'name' => 'percentage_value',
@@ -237,7 +241,7 @@ class LAE_Piecharts_Widget extends Widget_Base {
237
238
protected function render() {
239
240
- $settings = $this->get_settings();
241
?>
242
243
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
15
use Elementor\Scheme_Color;
16
use Elementor\Group_Control_Typography;
17
use Elementor\Scheme_Typography;
18
+ use Elementor\Modules\DynamicTags\Module as TagsModule;
19
20
if (!defined('ABSPATH'))
21
exit; // Exit if accessed directly
28
}
29
30
public function get_title() {
31
+ return __('Piecharts', 'livemesh-el-addons');
32
}
33
34
public function get_icon() {
98
'label' => __('Stats Title', 'livemesh-el-addons'),
99
'type' => Controls_Manager::TEXT,
100
'description' => __('The title for the piechart', 'livemesh-el-addons'),
101
+ 'dynamic' => [
102
+ 'active' => true,
103
+ ],
104
],
105
[
106
'name' => 'percentage_value',
241
242
protected function render() {
243
244
+ $settings = $this->get_settings_for_display();
245
?>
246
247
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
includes/widgets/portfolio.php CHANGED
@@ -27,7 +27,7 @@ class LAE_Portfolio_Widget extends Widget_Base {
27
}
28
29
public function get_title() {
30
- return __('Livemesh Grid', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
@@ -155,8 +155,11 @@ class LAE_Portfolio_Widget extends Widget_Base {
155
[
156
'label' => __('Heading for the grid', 'livemesh-el-addons'),
157
'type' => Controls_Manager::TEXT,
158
- 'placeholder' => __('My Portfolio', 'livemesh-el-addons'),
159
- 'default' => __('My Portfolio', 'livemesh-el-addons'),
160
]
161
);
162
@@ -316,7 +319,7 @@ class LAE_Portfolio_Widget extends Widget_Base {
316
$this->add_control(
317
'heading_desktop',
318
[
319
- 'label' => __( 'Desktop', 'livemesh-el-addons' ),
320
'type' => Controls_Manager::HEADING,
321
'separator' => 'after',
322
]
@@ -855,7 +858,7 @@ class LAE_Portfolio_Widget extends Widget_Base {
855
856
protected function render() {
857
858
- $settings = $this->get_settings();
859
860
// Use the processed post selector query to find posts.
861
$query_args = lae_build_query_args($settings);
27
}
28
29
public function get_title() {
30
+ return __('Posts Grid', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
155
[
156
'label' => __('Heading for the grid', 'livemesh-el-addons'),
157
'type' => Controls_Manager::TEXT,
158
+ 'placeholder' => __('My Posts', 'livemesh-el-addons'),
159
+ 'default' => __('My Posts', 'livemesh-el-addons'),
160
+ 'dynamic' => [
161
+ 'active' => true,
162
+ ],
163
]
164
);
165
319
$this->add_control(
320
'heading_desktop',
321
[
322
+ 'label' => __('Desktop', 'livemesh-el-addons'),
323
'type' => Controls_Manager::HEADING,
324
'separator' => 'after',
325
]
858
859
protected function render() {
860
861
+ $settings = $this->get_settings_for_display();
862
863
// Use the processed post selector query to find posts.
864
$query_args = lae_build_query_args($settings);
includes/widgets/posts-carousel.php CHANGED
@@ -25,7 +25,7 @@ class LAE_Posts_Carousel_Widget extends Widget_Base {
25
}
26
27
public function get_title() {
28
- return __('Livemesh Posts Carousel', 'livemesh-el-addons');
29
}
30
31
public function get_icon() {
@@ -740,7 +740,7 @@ class LAE_Posts_Carousel_Widget extends Widget_Base {
740
741
protected function render() {
742
743
- $settings = $this->get_settings();
744
$taxonomies = array();
745
746
$carousel_settings = [
25
}
26
27
public function get_title() {
28
+ return __('Posts Carousel', 'livemesh-el-addons');
29
}
30
31
public function get_icon() {
740
741
protected function render() {
742
743
+ $settings = $this->get_settings_for_display();
744
$taxonomies = array();
745
746
$carousel_settings = [
includes/widgets/pricing-table.php CHANGED
@@ -76,7 +76,7 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
76
}
77
78
public function get_title() {
79
- return __('Livemesh Pricing Table', 'livemesh-el-addons');
80
}
81
82
public function get_icon() {
@@ -134,12 +134,18 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
134
'type' => Controls_Manager::TEXT,
135
'label' => __('Pricing Plan Title', 'livemesh-el-addons'),
136
'label_block' => true,
137
],
138
[
139
'name' => 'tagline',
140
'type' => Controls_Manager::TEXT,
141
'label' => __('Tagline Text', 'livemesh-el-addons'),
142
'description' => __('Provide any subtitle or taglines like "Most Popular", "Best Value", "Best Selling", "Most Flexible" etc. that you would like to use for this pricing plan.', 'livemesh-el-addons'),
143
],
144
145
[
@@ -150,6 +156,9 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
150
'url' => Utils::get_placeholder_image_src(),
151
],
152
'label_block' => true,
153
],
154
155
[
@@ -157,12 +166,18 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
157
'type' => Controls_Manager::TEXT,
158
'label' => __('Price Tag', 'livemesh-el-addons'),
159
'description' => __('Enter the price tag for the pricing plan. HTML is accepted.', 'livemesh-el-addons'),
160
],
161
162
[
163
'name' => 'button_text',
164
'type' => Controls_Manager::TEXT,
165
'label' => __('Text for Pricing Link/Button', 'livemesh-el-addons'),
166
],
167
168
[
@@ -175,6 +190,9 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
175
'is_external' => 'true',
176
],
177
'placeholder' => __('http://your-link.com', 'livemesh-el-addons'),
178
],
179
180
@@ -194,7 +212,10 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
194
'label' => __('Pricing Plan Details', 'livemesh-el-addons'),
195
'description' => __('Enter the content for the pricing plan that include information about individual features of the pricing plan. For prebuilt styling, enter shortcodes content like - [lae_pricing_item title="Storage Space" value="50 GB"] [lae_pricing_item title="Video Uploads" value="50"][lae_pricing_item title="Portfolio Items" value="20"]', 'livemesh-el-addons'),
196
'show_label' => true,
197
- 'rows' => 10
198
],
199
200
],
@@ -485,7 +506,7 @@ class LAE_Pricing_Table_Widget extends Widget_Base {
485
486
protected function render() {
487
488
- $settings = $this->get_settings();
489
490
if (empty($settings['pricing_plans']))
491
return;
76
}
77
78
public function get_title() {
79
+ return __('Pricing Table', 'livemesh-el-addons');
80
}
81
82
public function get_icon() {
134
'type' => Controls_Manager::TEXT,
135
'label' => __('Pricing Plan Title', 'livemesh-el-addons'),
136
'label_block' => true,
137
+ 'dynamic' => [
138
+ 'active' => true,
139
+ ],
140
],
141
[
142
'name' => 'tagline',
143
'type' => Controls_Manager::TEXT,
144
'label' => __('Tagline Text', 'livemesh-el-addons'),
145
'description' => __('Provide any subtitle or taglines like "Most Popular", "Best Value", "Best Selling", "Most Flexible" etc. that you would like to use for this pricing plan.', 'livemesh-el-addons'),
146
+ 'dynamic' => [
147
+ 'active' => true,
148
+ ],
149
],
150
151
[
156
'url' => Utils::get_placeholder_image_src(),
157
],
158
'label_block' => true,
159
+ 'dynamic' => [
160
+ 'active' => true,
161
+ ],
162
],
163
164
[
166
'type' => Controls_Manager::TEXT,
167
'label' => __('Price Tag', 'livemesh-el-addons'),
168
'description' => __('Enter the price tag for the pricing plan. HTML is accepted.', 'livemesh-el-addons'),
169
+ 'dynamic' => [
170
+ 'active' => true,
171
+ ],
172
],
173
174
[
175
'name' => 'button_text',
176
'type' => Controls_Manager::TEXT,
177
'label' => __('Text for Pricing Link/Button', 'livemesh-el-addons'),
178
+ 'dynamic' => [
179
+ 'active' => true,
180
+ ],
181
],
182
183
[
190
'is_external' => 'true',
191
],
192
'placeholder' => __('http://your-link.com', 'livemesh-el-addons'),
193
+ 'dynamic' => [
194
+ 'active' => true,
195
+ ],
196
],
197
198
212
'label' => __('Pricing Plan Details', 'livemesh-el-addons'),
213
'description' => __('Enter the content for the pricing plan that include information about individual features of the pricing plan. For prebuilt styling, enter shortcodes content like - [lae_pricing_item title="Storage Space" value="50 GB"] [lae_pricing_item title="Video Uploads" value="50"][lae_pricing_item title="Portfolio Items" value="20"]', 'livemesh-el-addons'),
214
'show_label' => true,
215
+ 'rows' => 10,
216
+ 'dynamic' => [
217
+ 'active' => true,
218
+ ],
219
],
220
221
],
506
507
protected function render() {
508
509
+ $settings = $this->get_settings_for_display();
510
511
if (empty($settings['pricing_plans']))
512
return;
includes/widgets/services.php CHANGED
@@ -27,7 +27,7 @@ class LAE_Services_Widget extends Widget_Base {
27
}
28
29
public function get_title() {
30
- return __('Livemesh Services', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
@@ -115,6 +115,9 @@ class LAE_Services_Widget extends Widget_Base {
115
'type' => Controls_Manager::TEXT,
116
'label_block' => true,
117
'default' => __('My service title', 'livemesh-el-addons'),
118
],
119
[
120
'name' => 'icon_type',
@@ -138,6 +141,9 @@ class LAE_Services_Widget extends Widget_Base {
138
'condition' => [
139
'icon_type' => 'icon_image',
140
],
141
],
142
[
143
'name' => 'icon',
@@ -155,6 +161,9 @@ class LAE_Services_Widget extends Widget_Base {
155
'type' => Controls_Manager::TEXTAREA,
156
'default' => __('Service description goes here', 'livemesh-el-addons'),
157
'label_block' => true,
158
],
159
160
],
@@ -295,7 +304,7 @@ class LAE_Services_Widget extends Widget_Base {
295
296
protected function render() {
297
298
- $settings = $this->get_settings();
299
?>
300
301
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
27
}
28
29
public function get_title() {
30
+ return __('Services', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
115
'type' => Controls_Manager::TEXT,
116
'label_block' => true,
117
'default' => __('My service title', 'livemesh-el-addons'),
118
+ 'dynamic' => [
119
+ 'active' => true,
120
+ ],
121
],
122
[
123
'name' => 'icon_type',
141
'condition' => [
142
'icon_type' => 'icon_image',
143
],
144
+ 'dynamic' => [
145
+ 'active' => true,
146
+ ],
147
],
148
[
149
'name' => 'icon',
161
'type' => Controls_Manager::TEXTAREA,
162
'default' => __('Service description goes here', 'livemesh-el-addons'),
163
'label_block' => true,
164
+ 'dynamic' => [
165
+ 'active' => true,
166
+ ],
167
],
168
169
],
304
305
protected function render() {
306
307
+ $settings = $this->get_settings_for_display();
308
?>
309
310
<?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
includes/widgets/stats-bars.php CHANGED
@@ -27,7 +27,7 @@ class LAE_Stats_Bars_Widget extends Widget_Base {
27
}
28
29
public function get_title() {
30
- return __('Livemesh Stats Bars', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
@@ -81,6 +81,9 @@ class LAE_Stats_Bars_Widget extends Widget_Base {
81
'label' => __('Stats Title', 'livemesh-el-addons'),
82
'type' => Controls_Manager::TEXT,
83
'description' => __('The title for the stats bar', 'livemesh-el-addons'),
84
],
85
86
[
@@ -274,7 +277,7 @@ class LAE_Stats_Bars_Widget extends Widget_Base {
274
275
protected function render() {
276
277
- $settings = $this->get_settings();
278
?>
279
280
<div class="lae-stats-bars">
27
}
28
29
public function get_title() {
30
+ return __('Stats Bars', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
81
'label' => __('Stats Title', 'livemesh-el-addons'),
82
'type' => Controls_Manager::TEXT,
83
'description' => __('The title for the stats bar', 'livemesh-el-addons'),
84
+ 'dynamic' => [
85
+ 'active' => true,
86
+ ],
87
],
88
89
[
277
278
protected function render() {
279
280
+ $settings = $this->get_settings_for_display();
281
?>
282
283
<div class="lae-stats-bars">
includes/widgets/team-members.php CHANGED
@@ -16,6 +16,7 @@ use Elementor\Utils;
16
use Elementor\Scheme_Color;
17
use Elementor\Group_Control_Typography;
18
use Elementor\Scheme_Typography;
19
20
if (!defined('ABSPATH'))
21
exit; // Exit if accessed directly
@@ -28,7 +29,7 @@ class LAE_Team_Widget extends Widget_Base {
28
}
29
30
public function get_title() {
31
- return __('Livemesh Team Members', 'livemesh-el-addons');
32
}
33
34
public function get_icon() {
@@ -113,11 +114,20 @@ class LAE_Team_Widget extends Widget_Base {
113
'name' => 'member_name',
114
'label' => __('Member Name', 'livemesh-el-addons'),
115
'type' => Controls_Manager::TEXT,
116
],
117
[
118
'name' => 'member_position',
119
'label' => __('Position', 'livemesh-el-addons'),
120
'type' => Controls_Manager::TEXT,
121
],
122
123
[
@@ -128,6 +138,9 @@ class LAE_Team_Widget extends Widget_Base {
128
'url' => Utils::get_placeholder_image_src(),
129
],
130
'label_block' => true,
131
],
132
[
133
'name' => 'member_details',
@@ -136,6 +149,9 @@ class LAE_Team_Widget extends Widget_Base {
136
'default' => __('Details about team member', 'livemesh-el-addons'),
137
'description' => __('Provide a short writeup for the team member', 'livemesh-el-addons'),
138
'label_block' => true,
139
],
140
[
141
'name' => 'social_profile',
@@ -147,6 +163,12 @@ class LAE_Team_Widget extends Widget_Base {
147
'name' => 'member_email',
148
'label' => __('Email Address', 'livemesh-el-addons'),
149
'description' => __('Enter the email address of the team member.', 'livemesh-el-addons'),
150
],
151
152
[
@@ -154,6 +176,12 @@ class LAE_Team_Widget extends Widget_Base {
154
'name' => 'facebook_url',
155
'label' => __('Facebook Page URL', 'livemesh-el-addons'),
156
'description' => __('URL of the Facebook page of the team member.', 'livemesh-el-addons'),
157
],
158
159
[
@@ -161,6 +189,12 @@ class LAE_Team_Widget extends Widget_Base {
161
'name' => 'twitter_url',
162
'label' => __('Twitter Profile URL', 'livemesh-el-addons'),
163
'description' => __('URL of the Twitter page of the team member.', 'livemesh-el-addons'),
164
],
165
166
[
@@ -168,6 +202,12 @@ class LAE_Team_Widget extends Widget_Base {
168
'name' => 'linkedin_url',
169
'label' => __('LinkedIn Page URL', 'livemesh-el-addons'),
170
'description' => __('URL of the LinkedIn profile of the team member.', 'livemesh-el-addons'),
171
],
172
173
[
@@ -175,6 +215,12 @@ class LAE_Team_Widget extends Widget_Base {
175
'name' => 'pinterest_url',
176
'label' => __('Pinterest Page URL', 'livemesh-el-addons'),
177
'description' => __('URL of the Pinterest page for the team member.', 'livemesh-el-addons'),
178
],
179
180
[
@@ -182,6 +228,12 @@ class LAE_Team_Widget extends Widget_Base {
182
'name' => 'dribbble_url',
183
'label' => __('Dribbble Profile URL', 'livemesh-el-addons'),
184
'description' => __('URL of the Dribbble profile of the team member.', 'livemesh-el-addons'),
185
],
186
187
[
@@ -189,6 +241,12 @@ class LAE_Team_Widget extends Widget_Base {
189
'name' => 'google_plus_url',
190
'label' => __('GooglePlus Page URL', 'livemesh-el-addons'),
191
'description' => __('URL of the Google Plus page of the team member.', 'livemesh-el-addons'),
192
],
193
194
[
@@ -196,6 +254,12 @@ class LAE_Team_Widget extends Widget_Base {
196
'name' => 'instagram_url',
197
'label' => __('Instagram Page URL', 'livemesh-el-addons'),
198
'description' => __('URL of the Instagram feed for the team member.', 'livemesh-el-addons'),
199
],
200
201
],
@@ -450,7 +514,7 @@ class LAE_Team_Widget extends Widget_Base {
450
451
protected function render() {
452
453
- $settings = $this->get_settings();
454
?>
455
456
<?php $column_style = ''; ?>
16
use Elementor\Scheme_Color;
17
use Elementor\Group_Control_Typography;
18
use Elementor\Scheme_Typography;
19
+ use Elementor\Modules\DynamicTags\Module as TagsModule;
20
21
if (!defined('ABSPATH'))
22
exit; // Exit if accessed directly
29
}
30
31
public function get_title() {
32
+ return __('Team Members', 'livemesh-el-addons');
33
}
34
35
public function get_icon() {
114
'name' => 'member_name',
115
'label' => __('Member Name', 'livemesh-el-addons'),
116
'type' => Controls_Manager::TEXT,
117
+ 'dynamic' => [
118
+ 'active' => true,
119
+ ],
120
],
121
[
122
'name' => 'member_position',
123
'label' => __('Position', 'livemesh-el-addons'),
124
'type' => Controls_Manager::TEXT,
125
+ 'dynamic' => [
126
+ 'active' => true,
127
+ 'categories' => [
128
+ TagsModule::POST_META_CATEGORY,
129
+ ],
130
+ ],
131
],
132
133
[
138
'url' => Utils::get_placeholder_image_src(),
139
],
140
'label_block' => true,
141
+ 'dynamic' => [
142
+ 'active' => true,
143
+ ],
144
],
145
[
146
'name' => 'member_details',
149
'default' => __('Details about team member', 'livemesh-el-addons'),
150
'description' => __('Provide a short writeup for the team member', 'livemesh-el-addons'),
151
'label_block' => true,
152
+ 'dynamic' => [
153
+ 'active' => true,
154
+ ],
155
],
156
[
157
'name' => 'social_profile',
163
'name' => 'member_email',
164
'label' => __('Email Address', 'livemesh-el-addons'),
165
'description' => __('Enter the email address of the team member.', 'livemesh-el-addons'),
166
+ 'dynamic' => [
167
+ 'active' => true,
168
+ 'categories' => [
169
+ TagsModule::POST_META_CATEGORY,
170
+ ],
171
+ ],
172
],
173
174
[
176
'name' => 'facebook_url',
177
'label' => __('Facebook Page URL', 'livemesh-el-addons'),
178
'description' => __('URL of the Facebook page of the team member.', 'livemesh-el-addons'),
179
+ 'dynamic' => [
180
+ 'active' => true,
181
+ 'categories' => [
182
+ TagsModule::POST_META_CATEGORY,
183
+ ],
184
+ ],
185
],
186
187
[
189
'name' => 'twitter_url',
190
'label' => __('Twitter Profile URL', 'livemesh-el-addons'),
191
'description' => __('URL of the Twitter page of the team member.', 'livemesh-el-addons'),
192
+ 'dynamic' => [
193
+ 'active' => true,
194
+ 'categories' => [
195
+ TagsModule::POST_META_CATEGORY,
196
+ ],
197
+ ],
198
],
199
200
[
202
'name' => 'linkedin_url',
203
'label' => __('LinkedIn Page URL', 'livemesh-el-addons'),
204
'description' => __('URL of the LinkedIn profile of the team member.', 'livemesh-el-addons'),
205
+ 'dynamic' => [
206
+ 'active' => true,
207
+ 'categories' => [
208
+ TagsModule::POST_META_CATEGORY,
209
+ ],
210
+ ],
211
],
212
213
[
215
'name' => 'pinterest_url',
216
'label' => __('Pinterest Page URL', 'livemesh-el-addons'),
217
'description' => __('URL of the Pinterest page for the team member.', 'livemesh-el-addons'),
218
+ 'dynamic' => [
219
+ 'active' => true,
220
+ 'categories' => [
221
+ TagsModule::POST_META_CATEGORY,
222
+ ],
223
+ ],
224
],
225
226
[
228
'name' => 'dribbble_url',
229
'label' => __('Dribbble Profile URL', 'livemesh-el-addons'),
230
'description' => __('URL of the Dribbble profile of the team member.', 'livemesh-el-addons'),
231
+ 'dynamic' => [
232
+ 'active' => true,
233
+ 'categories' => [
234
+ TagsModule::POST_META_CATEGORY,
235
+ ],
236
+ ],
237
],
238
239
[
241
'name' => 'google_plus_url',
242
'label' => __('GooglePlus Page URL', 'livemesh-el-addons'),
243
'description' => __('URL of the Google Plus page of the team member.', 'livemesh-el-addons'),
244
+ 'dynamic' => [
245
+ 'active' => true,
246
+ 'categories' => [
247
+ TagsModule::POST_META_CATEGORY,
248
+ ],
249
+ ],
250
],
251
252
[
254
'name' => 'instagram_url',
255
'label' => __('Instagram Page URL', 'livemesh-el-addons'),
256
'description' => __('URL of the Instagram feed for the team member.', 'livemesh-el-addons'),
257
+ 'dynamic' => [
258
+ 'active' => true,
259
+ 'categories' => [
260
+ TagsModule::POST_META_CATEGORY,
261
+ ],
262
+ ],
263
],
264
265
],
514
515
protected function render() {
516
517
+ $settings = $this->get_settings_for_display();
518
?>
519
520
<?php $column_style = ''; ?>
includes/widgets/testimonials-slider.php CHANGED
@@ -27,7 +27,7 @@ class LAE_Testimonials_Slider_Widget extends Widget_Base {
27
}
28
29
public function get_title() {
30
- return __('Livemesh Testimonials Slider', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
@@ -83,12 +83,18 @@ class LAE_Testimonials_Slider_Widget extends Widget_Base {
83
'label' => __('Name', 'livemesh-el-addons'),
84
'type' => Controls_Manager::TEXT,
85
'description' => __('The client or customer name for the testimonial', 'livemesh-el-addons'),
86
],
87
[
88
'name' => 'credentials',
89
'label' => __('Client Details', 'livemesh-el-addons'),
90
'type' => Controls_Manager::TEXT,
91
'description' => __('The details of the client/customer like company name, position held, company URL etc. HTML accepted.', 'livemesh-el-addons'),
92
],
93
94
[
@@ -99,6 +105,9 @@ class LAE_Testimonials_Slider_Widget extends Widget_Base {
99
'url' => Utils::get_placeholder_image_src(),
100
],
101
'label_block' => true,
102
],
103
104
[
@@ -107,6 +116,9 @@ class LAE_Testimonials_Slider_Widget extends Widget_Base {
107
'type' => Controls_Manager::WYSIWYG,
108
'description' => __('What your customer/client had to say', 'livemesh-el-addons'),
109
'show_label' => false,
110
],
111
112
],
@@ -423,7 +435,7 @@ class LAE_Testimonials_Slider_Widget extends Widget_Base {
423
424
protected function render() {
425
426
- $settings = $this->get_settings();
427
428
$slider_options = [
429
'slide_animation' => $settings['slide_animation'],
27
}
28
29
public function get_title() {
30
+ return __('Testimonials Slider', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
83
'label' => __('Name', 'livemesh-el-addons'),
84
'type' => Controls_Manager::TEXT,
85
'description' => __('The client or customer name for the testimonial', 'livemesh-el-addons'),
86
+ 'dynamic' => [
87
+ 'active' => true,
88
+ ],
89
],
90
[
91
'name' => 'credentials',
92
'label' => __('Client Details', 'livemesh-el-addons'),
93
'type' => Controls_Manager::TEXT,
94
'description' => __('The details of the client/customer like company name, position held, company URL etc. HTML accepted.', 'livemesh-el-addons'),
95
+ 'dynamic' => [
96
+ 'active' => true,
97
+ ],
98
],
99
100
[
105
'url' => Utils::get_placeholder_image_src(),
106
],
107
'label_block' => true,
108
+ 'dynamic' => [
109
+ 'active' => true,
110
+ ],
111
],
112
113
[
116
'type' => Controls_Manager::WYSIWYG,
117
'description' => __('What your customer/client had to say', 'livemesh-el-addons'),
118
'show_label' => false,
119
+ 'dynamic' => [
120
+ 'active' => true,
121
+ ],
122
],
123
124
],
435
436
protected function render() {
437
438
+ $settings = $this->get_settings_for_display();
439
440
$slider_options = [
441
'slide_animation' => $settings['slide_animation'],
includes/widgets/testimonials.php CHANGED
@@ -27,7 +27,7 @@ class LAE_Testimonials_Widget extends Widget_Base {
27
}
28
29
public function get_title() {
30
- return __('Livemesh Testimonials', 'livemesh-el-addons');
31
}
32
33
public function get_icon() {
@@ -96,12 +96,18 @@ class LAE_Testimonials_Widget extends Widget_Base {
96
'label' => __('Name', 'livemesh-el-addons'),
97
'type' => Controls_Manager::TEXT,
98
'description' => __('The client or customer name for the testimonial', 'livemesh-el-addons'),
99
],
100
[
101
'name' => 'credentials',
102
'label' => __('Client Details', 'livemesh-el-addons'),
103
'type' => Controls_Manager::TEXT,
104
'description' => __('The details of the client/customer like company name, credential held, company URL etc. HTML accepted.', 'livemesh-el-addons'),
105
],
106
107
[
@@ -112,6 +118,9 @@ class LAE_Testimonials_Widget extends Widget_Base {
112
'url' => Utils::get_placeholder_image_src(),
113
],
114
'label_block' => true,
115
],
116
117
[
@@ -120,6 +129,9 @@ class LAE_Testimonials_Widget extends Widget_Base {
120
'type' => Controls_Manager::WYSIWYG,
121
'description' => __('What your customer/client had to say', 'livemesh-el-addons'),
122
'show_label' => false,
123
],
124
125