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
  ],
@@ -332,7 +344,7 @@ class LAE_Testimonials_Widget extends Widget_Base {
332
 
333
  protected function render() {
334
 
335
- $settings = $this->get_settings();
336
  ?>
337
 
338
  <?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
27
  }
28
 
29
  public function get_title() {
30
+ return __('Testimonials', 'livemesh-el-addons');
31
  }
32
 
33
  public function get_icon() {
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
+ 'dynamic' => [
100
+ 'active' => true,
101
+ ],
102
  ],
103
  [
104
  'name' => 'credentials',
105
  'label' => __('Client Details', 'livemesh-el-addons'),
106
  'type' => Controls_Manager::TEXT,
107
  'description' => __('The details of the client/customer like company name, credential held, company URL etc. HTML accepted.', 'livemesh-el-addons'),
108
+ 'dynamic' => [
109
+ 'active' => true,
110
+ ],
111
  ],
112
 
113
  [
118
  'url' => Utils::get_placeholder_image_src(),
119
  ],
120
  'label_block' => true,
121
+ 'dynamic' => [
122
+ 'active' => true,
123
+ ],
124
  ],
125
 
126
  [
129
  'type' => Controls_Manager::WYSIWYG,
130
  'description' => __('What your customer/client had to say', 'livemesh-el-addons'),
131
  'show_label' => false,
132
+ 'dynamic' => [
133
+ 'active' => true,
134
+ ],
135
  ],
136
 
137
  ],
344
 
345
  protected function render() {
346
 
347
+ $settings = $this->get_settings_for_display();
348
  ?>
349
 
350
  <?php $column_style = lae_get_column_class(intval($settings['per_line'])); ?>
livemesh-elementor-addons.php CHANGED
@@ -7,7 +7,7 @@
7
  * Author URI: https://www.livemeshthemes.com/elementor-addons
8
  * License: GPL3
9
  * License URI: https://www.gnu.org/licenses/gpl-3.0.txt
10
- * Version: 1.5.4
11
  * Text Domain: livemesh-el-addons
12
  * Domain Path: languages
13
  *
@@ -75,7 +75,7 @@ if (!class_exists('Livemesh_Elementor_Addons')) :
75
  */
76
  public function __clone() {
77
  // Cloning instances of the class is forbidden
78
- _doing_it_wrong(__FUNCTION__, __('Cheatin&#8217; huh?', 'livemesh-el-addons'), '1.5.4');
79
  }
80
 
81
  /**
@@ -84,7 +84,7 @@ if (!class_exists('Livemesh_Elementor_Addons')) :
84
  */
85
  public function __wakeup() {
86
  // Unserializing instances of the class is forbidden
87
- _doing_it_wrong(__FUNCTION__, __('Cheatin&#8217; huh?', 'livemesh-el-addons'), '1.5.4');
88
  }
89
 
90
  /**
@@ -95,7 +95,7 @@ if (!class_exists('Livemesh_Elementor_Addons')) :
95
 
96
  // Plugin version
97
  if (!defined('LAE_VERSION')) {
98
- define('LAE_VERSION', '1.5.4');
99
  }
100
 
101
  // Plugin Folder Path
@@ -227,7 +227,7 @@ if (!class_exists('Livemesh_Elementor_Addons')) :
227
  'title' => __('Livemesh Addons', 'livemesh-el-addons'),
228
  'icon' => 'fa fa-plug',
229
  ),
230
- 2);
231
  }
232
 
233
  public function localize_scripts() {
7
  * Author URI: https://www.livemeshthemes.com/elementor-addons
8
  * License: GPL3
9
  * License URI: https://www.gnu.org/licenses/gpl-3.0.txt
10
+ * Version: 1.6
11
  * Text Domain: livemesh-el-addons
12
  * Domain Path: languages
13
  *
75
  */
76
  public function __clone() {
77
  // Cloning instances of the class is forbidden
78
+ _doing_it_wrong(__FUNCTION__, __('Cheatin&#8217; huh?', 'livemesh-el-addons'), '1.6');
79
  }
80
 
81
  /**
84
  */
85
  public function __wakeup() {
86
  // Unserializing instances of the class is forbidden
87
+ _doing_it_wrong(__FUNCTION__, __('Cheatin&#8217; huh?', 'livemesh-el-addons'), '1.6');
88
  }
89
 
90
  /**
95
 
96
  // Plugin version
97
  if (!defined('LAE_VERSION')) {
98
+ define('LAE_VERSION', '1.6');
99
  }
100
 
101
  // Plugin Folder Path
227
  'title' => __('Livemesh Addons', 'livemesh-el-addons'),
228
  'icon' => 'fa fa-plug',
229
  ),
230
+ 1);
231
  }
232
 
233
  public function localize_scripts() {
readme.txt CHANGED
@@ -5,7 +5,7 @@ Contributors: livemesh
5
  Tags: elementor, elementor addons, elementor extensions, elementor modules, page builder, portfolio, carousel, posts grid
6
  Requires at least: 4.5
7
  Tested up to: 4.9
8
- Stable Tag: 1.5.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -108,6 +108,14 @@ Pls install and activate the <a href="https://wordpress.org/plugins/portfolio-po
108
 
109
  == Changelog ==
110
 
 
 
 
 
 
 
 
 
111
  = 1.5.4 =
112
  * Fixed – Livemesh Grid columns can break in certain resolutions in FireFox.
113
  * Fixed - The piechart value is not being rounded.
5
  Tags: elementor, elementor addons, elementor extensions, elementor modules, page builder, portfolio, carousel, posts grid
6
  Requires at least: 4.5
7
  Tested up to: 4.9
8
+ Stable Tag: 1.6
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
108
 
109
  == Changelog ==
110
 
111
+ = 1.6 =
112
+ * Added – Compatibility with Elementor and Elementor PRO 2.
113
+ * Added - Dynamic field connections for most widgets supported by Elementor 2.
114
+ * 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.
115
+ * Added - Ability to specify client name in HTML for additional formatting.
116
+ * Updated - Waypoints script with new API for handling events on scroll
117
+ * Fixed - Some themes can break animations and report script errors for elements like piecharts, odometers, progress bars etc.
118
+
119
  = 1.5.4 =
120
  * Fixed – Livemesh Grid columns can break in certain resolutions in FireFox.
121
  * Fixed - The piechart value is not being rounded.