WP ULike - Version 4.4.7

Version Description

  • Improved: Some old functionalities.
  • Improved: Compatibility with WordPress 5.7 applied.
  • Fixed: Some major issues.
Download this release

Release Info

Developer alimir
Plugin Icon 128x128 WP ULike
Version 4.4.7
Comparing to
See all releases

Code changes from version 4.4.6 to 4.4.7

Files changed (60) hide show
  1. admin/assets/js/plugins.js +1 -1
  2. admin/assets/js/solo/dist/statistics.dev.js +0 -195
  3. admin/assets/js/solo/vue/dist/vue.dev.js +0 -11830
  4. admin/classes/class-wp-ulike-admin-assets.php +10 -5
  5. admin/index.php +3 -0
  6. admin/settings/assets/css/style.css +16 -8
  7. admin/settings/assets/css/style.min.css +1 -1
  8. admin/settings/assets/js/main.js +3 -1
  9. admin/settings/assets/js/main.min.js +2 -2
  10. admin/settings/assets/js/plugins.min.js +1 -1
  11. admin/settings/assets/scss/vendor/_fields.scss +15 -7
  12. admin/settings/assets/scss/vendor/_responsive.scss +1 -1
  13. admin/settings/classes/abstract.class.php +4 -6
  14. admin/settings/classes/admin-options.class.php +3 -1
  15. admin/settings/classes/setup.class.php +103 -42
  16. admin/settings/fields/callback/callback.php +2 -1
  17. admin/settings/fields/code_editor/code_editor.php +1 -1
  18. admin/settings/fields/icon/fa4-icons.php +7 -5
  19. admin/settings/fields/icon/fa5-icons.php +7 -5
  20. admin/settings/fields/typography/google-fonts.php +44 -10
  21. admin/settings/functions/customize.php +1 -7
  22. admin/settings/functions/helpers.php +1 -1
  23. admin/settings/languages/default.pot +23 -23
  24. assets/js/dist/wp-ulike.dev.js +0 -216
  25. assets/js/wp-ulike.js +1 -1
  26. assets/js/wp-ulike.min.js +1 -1
  27. dist/Gruntfile.dev.js +0 -463
  28. includes/action.php +171 -0
  29. includes/classes/class-wp-ulike-activator.php +194 -0
  30. {inc → includes}/classes/class-wp-ulike-ajax-listener-base.php +12 -0
  31. {inc → includes}/classes/class-wp-ulike-cta-listener.php +14 -2
  32. {inc → includes}/classes/class-wp-ulike-cta-process.php +3 -3
  33. {inc → includes}/classes/class-wp-ulike-cta-template.php +3 -3
  34. {inc → includes}/classes/class-wp-ulike-customizer.php +3 -3
  35. includes/classes/class-wp-ulike-deactivator.php +21 -0
  36. {inc → includes}/classes/class-wp-ulike-entities-process.php +3 -3
  37. {inc → includes}/classes/class-wp-ulike-frontend-assets.php +9 -5
  38. {inc → includes}/classes/class-wp-ulike-mycred.php +3 -3
  39. {inc → includes}/classes/class-wp-ulike-setting-repo.php +5 -0
  40. {inc → includes}/classes/class-wp-ulike-setting-type.php +5 -0
  41. {inc → includes}/classes/class-wp-ulike-voters-listener.php +5 -2
  42. {inc → includes}/classes/class-wp-ulike.php +3 -3
  43. {inc → includes}/functions/content-types.php +0 -0
  44. {inc → includes}/functions/counter.php +0 -0
  45. {inc → includes}/functions/general.php +0 -0
  46. {inc → includes}/functions/meta.php +0 -0
  47. {inc → includes}/functions/queries.php +0 -0
  48. {inc → includes}/functions/templates.php +0 -0
  49. {inc → includes}/functions/utilities.php +1 -1
  50. {inc → includes}/hooks/frontend-ajax.php +0 -0
  51. {inc → includes}/hooks/general.php +0 -0
  52. {inc → includes}/hooks/shortcodes.php +0 -0
  53. {inc → includes}/hooks/third-party.php +0 -1
  54. {inc → includes}/index.php +0 -0
  55. includes/plugin.php +293 -0
  56. includes/public/index.php +15 -0
  57. languages/wp-ulike-ar.po +483 -422
  58. languages/wp-ulike-de.po +482 -422
  59. languages/wp-ulike-es-co.po +481 -421
  60. languages/wp-ulike-fa_IR.po +159 -138
admin/assets/js/plugins.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! WP ULike - v4.4.6
2
  * https://wpulike.com
3
  * TechnoWich 2021;
4
  */
1
+ /*! WP ULike - v4.4.7
2
  * https://wpulike.com
3
  * TechnoWich 2021;
4
  */
admin/assets/js/solo/dist/statistics.dev.js DELETED
@@ -1,195 +0,0 @@
1
- "use strict";
2
-
3
- /**
4
- * wp ulike admin statistics
5
- */
6
- (function ($) {
7
- $(".wp_ulike_delete").click(function (e) {
8
- e.preventDefault();
9
- var parent = $(this).closest("tr");
10
- var value = $(this).data("id");
11
- var table = $(this).data("table");
12
- var nonce = $(this).data("nonce");
13
- var r = confirm(wp_ulike_admin.logs_notif);
14
-
15
- if (r === true) {
16
- jQuery.ajax({
17
- type: "POST",
18
- url: ajaxurl,
19
- data: {
20
- action: "ulikelogs",
21
- id: value,
22
- nonce: nonce,
23
- table: table
24
- },
25
- beforeSend: function beforeSend() {
26
- parent.css("background-color", "#fff59d");
27
- },
28
- success: function success(response) {
29
- if (response.success) {
30
- parent.fadeOut(300);
31
- } else {
32
- parent.css("background-color", "#ef9a9a");
33
- }
34
- }
35
- });
36
- }
37
- });
38
-
39
- $.fn.WpUlikeAjaxStats = function () {
40
- // local var
41
- var theResponse = null; // jQuery ajax
42
-
43
- $.ajax({
44
- type: "POST",
45
- dataType: "json",
46
- url: ajaxurl,
47
- async: false,
48
- data: {
49
- action: "wp_ulike_ajax_stats",
50
- nonce: wp_ulike_admin.nonce_field
51
- },
52
- success: function success(response) {
53
- if (response.success) {
54
- theResponse = JSON.parse(response.data);
55
- } else {
56
- theResponse = null;
57
- }
58
- }
59
- }); // Return the response text
60
-
61
- return theResponse;
62
- }; // Charts stack array to save data
63
-
64
-
65
- window.wpUlikechartsInfo = [];
66
-
67
- if (wp_ulike_admin.hook_address.indexOf("wp-ulike-statistics") !== -1) {
68
- // Get all tables data
69
- window.wpUlikeAjaxDataset = $.fn.WpUlikeAjaxStats();
70
-
71
- if (window.wpUlikeAjaxDataset === null) {
72
- return;
73
- } // Get single var component
74
-
75
-
76
- Vue.component("get-var", {
77
- props: ["dataset"],
78
- data: function data() {
79
- return {
80
- output: "..."
81
- };
82
- },
83
- mounted: function mounted() {
84
- this.output = this.fetchData(); // Remove spinner class
85
-
86
- this.$nextTick(function () {
87
- this.removeClass(this.$el.offsetParent);
88
- });
89
- },
90
- methods: {
91
- fetchData: function fetchData() {
92
- return window.wpUlikeAjaxDataset[this.dataset];
93
- },
94
- removeClass: function removeClass(element) {
95
- element.classList.remove("wp-ulike-is-loading");
96
- }
97
- }
98
- }); // Get charts object component
99
-
100
- Vue.component("get-chart", {
101
- props: ["dataset", "identify", "type"],
102
- mounted: function mounted() {
103
- if (this.type == "line") {
104
- this.planetChartData = this.fetchData();
105
- this.createLineChart(this.planetChartData);
106
- } else {
107
- this.createPieChart();
108
- } // Remove spinner class
109
-
110
-
111
- this.$nextTick(function () {
112
- this.removeClass(this.$el.offsetParent);
113
- });
114
- },
115
- methods: {
116
- fetchData: function fetchData() {
117
- return window.wpUlikeAjaxDataset[this.dataset];
118
- },
119
- createLineChart: function createLineChart(chartData) {
120
- // Push data stats in dataset options
121
- chartData.options["data"] = chartData.data; // And finally draw it
122
-
123
- this.drawChart({
124
- // The type of chart we want to create
125
- type: "line",
126
- // The data for our dataset
127
- data: {
128
- labels: chartData.label,
129
- datasets: [chartData.options]
130
- }
131
- }); // Set info for this canvas
132
-
133
- this.setInfo(chartData);
134
- },
135
- createPieChart: function createPieChart() {
136
- // Define stack variables
137
- var pieData = [],
138
- pieBackground = [],
139
- pieLabels = []; // Get the info of each chart
140
-
141
- window.wpUlikechartsInfo.forEach(function (value, key) {
142
- pieData.push(value.sum);
143
- pieBackground.push(value.background);
144
- pieLabels.push(value.label);
145
- }); // And finally draw it
146
-
147
- this.drawChart({
148
- // The type of chart we want to create
149
- type: "pie",
150
- // The data for our dataset
151
- data: {
152
- datasets: [{
153
- data: pieData,
154
- backgroundColor: pieBackground
155
- }],
156
- // These labels appear in the legend and in the tooltips when hovering different arcs
157
- labels: pieLabels
158
- }
159
- });
160
- },
161
- drawChart: function drawChart(chartArgs) {
162
- // Get canvas element
163
- var ctx = document.getElementById(this.identify); // Draw Chart
164
-
165
- var chart = new Chart(ctx, chartArgs);
166
- },
167
- setInfo: function setInfo(chartData) {
168
- var sumStack = 0; // Get the sum of total likes
169
-
170
- chartData.data.forEach(function (num) {
171
- sumStack += parseFloat(num) || 0;
172
- }); // Upgrade wpUlikechartsInfo array
173
-
174
- window.wpUlikechartsInfo.push({
175
- type: this.identify,
176
- sum: sumStack,
177
- label: chartData.options.label,
178
- background: chartData.options.backgroundColor
179
- });
180
- },
181
- removeClass: function removeClass(element) {
182
- element.classList.remove("wp-ulike-is-loading");
183
- }
184
- }
185
- });
186
- new Vue({
187
- el: "#wp-ulike-stats-app"
188
- });
189
- } // on document ready
190
-
191
-
192
- $(function () {
193
- $(".wp-ulike-match-height").matchHeight();
194
- });
195
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/assets/js/solo/vue/dist/vue.dev.js DELETED
@@ -1,11830 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
-
5
- /*!
6
- * Vue.js v2.6.12
7
- * (c) 2014-2020 Evan You
8
- * Released under the MIT License.
9
- */
10
- (function (global, factory) {
11
- (typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.Vue = factory());
12
- })(void 0, function () {
13
- 'use strict';
14
- /* */
15
-
16
- var emptyObject = Object.freeze({}); // These helpers produce better VM code in JS engines due to their
17
- // explicitness and function inlining.
18
-
19
- function isUndef(v) {
20
- return v === undefined || v === null;
21
- }
22
-
23
- function isDef(v) {
24
- return v !== undefined && v !== null;
25
- }
26
-
27
- function isTrue(v) {
28
- return v === true;
29
- }
30
-
31
- function isFalse(v) {
32
- return v === false;
33
- }
34
- /**
35
- * Check if value is primitive.
36
- */
37
-
38
-
39
- function isPrimitive(value) {
40
- return typeof value === 'string' || typeof value === 'number' || // $flow-disable-line
41
- _typeof(value) === 'symbol' || typeof value === 'boolean';
42
- }
43
- /**
44
- * Quick object check - this is primarily used to tell
45
- * Objects from primitive values when we know the value
46
- * is a JSON-compliant type.
47
- */
48
-
49
-
50
- function isObject(obj) {
51
- return obj !== null && _typeof(obj) === 'object';
52
- }
53
- /**
54
- * Get the raw type string of a value, e.g., [object Object].
55
- */
56
-
57
-
58
- var _toString = Object.prototype.toString;
59
-
60
- function toRawType(value) {
61
- return _toString.call(value).slice(8, -1);
62
- }
63
- /**
64
- * Strict object type check. Only returns true
65
- * for plain JavaScript objects.
66
- */
67
-
68
-
69
- function isPlainObject(obj) {
70
- return _toString.call(obj) === '[object Object]';
71
- }
72
-
73
- function isRegExp(v) {
74
- return _toString.call(v) === '[object RegExp]';
75
- }
76
- /**
77
- * Check if val is a valid array index.
78
- */
79
-
80
-
81
- function isValidArrayIndex(val) {
82
- var n = parseFloat(String(val));
83
- return n >= 0 && Math.floor(n) === n && isFinite(val);
84
- }
85
-
86
- function isPromise(val) {
87
- return isDef(val) && typeof val.then === 'function' && typeof val["catch"] === 'function';
88
- }
89
- /**
90
- * Convert a value to a string that is actually rendered.
91
- */
92
-
93
-
94
- function toString(val) {
95
- return val == null ? '' : Array.isArray(val) || isPlainObject(val) && val.toString === _toString ? JSON.stringify(val, null, 2) : String(val);
96
- }
97
- /**
98
- * Convert an input value to a number for persistence.
99
- * If the conversion fails, return original string.
100
- */
101
-
102
-
103
- function toNumber(val) {
104
- var n = parseFloat(val);
105
- return isNaN(n) ? val : n;
106
- }
107
- /**
108
- * Make a map and return a function for checking if a key
109
- * is in that map.
110
- */
111
-
112
-
113
- function makeMap(str, expectsLowerCase) {
114
- var map = Object.create(null);
115
- var list = str.split(',');
116
-
117
- for (var i = 0; i < list.length; i++) {
118
- map[list[i]] = true;
119
- }
120
-
121
- return expectsLowerCase ? function (val) {
122
- return map[val.toLowerCase()];
123
- } : function (val) {
124
- return map[val];
125
- };
126
- }
127
- /**
128
- * Check if a tag is a built-in tag.
129
- */
130
-
131
-
132
- var isBuiltInTag = makeMap('slot,component', true);
133
- /**
134
- * Check if an attribute is a reserved attribute.
135
- */
136
-
137
- var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
138
- /**
139
- * Remove an item from an array.
140
- */
141
-
142
- function remove(arr, item) {
143
- if (arr.length) {
144
- var index = arr.indexOf(item);
145
-
146
- if (index > -1) {
147
- return arr.splice(index, 1);
148
- }
149
- }
150
- }
151
- /**
152
- * Check whether an object has the property.
153
- */
154
-
155
-
156
- var hasOwnProperty = Object.prototype.hasOwnProperty;
157
-
158
- function hasOwn(obj, key) {
159
- return hasOwnProperty.call(obj, key);
160
- }
161
- /**
162
- * Create a cached version of a pure function.
163
- */
164
-
165
-
166
- function cached(fn) {
167
- var cache = Object.create(null);
168
- return function cachedFn(str) {
169
- var hit = cache[str];
170
- return hit || (cache[str] = fn(str));
171
- };
172
- }
173
- /**
174
- * Camelize a hyphen-delimited string.
175
- */
176
-
177
-
178
- var camelizeRE = /-(\w)/g;
179
- var camelize = cached(function (str) {
180
- return str.replace(camelizeRE, function (_, c) {
181
- return c ? c.toUpperCase() : '';
182
- });
183
- });
184
- /**
185
- * Capitalize a string.
186
- */
187
-
188
- var capitalize = cached(function (str) {
189
- return str.charAt(0).toUpperCase() + str.slice(1);
190
- });
191
- /**
192
- * Hyphenate a camelCase string.
193
- */
194
-
195
- var hyphenateRE = /\B([A-Z])/g;
196
- var hyphenate = cached(function (str) {
197
- return str.replace(hyphenateRE, '-$1').toLowerCase();
198
- });
199
- /**
200
- * Simple bind polyfill for environments that do not support it,
201
- * e.g., PhantomJS 1.x. Technically, we don't need this anymore
202
- * since native bind is now performant enough in most browsers.
203
- * But removing it would mean breaking code that was able to run in
204
- * PhantomJS 1.x, so this must be kept for backward compatibility.
205
- */
206
-
207
- /* istanbul ignore next */
208
-
209
- function polyfillBind(fn, ctx) {
210
- function boundFn(a) {
211
- var l = arguments.length;
212
- return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx);
213
- }
214
-
215
- boundFn._length = fn.length;
216
- return boundFn;
217
- }
218
-
219
- function nativeBind(fn, ctx) {
220
- return fn.bind(ctx);
221
- }
222
-
223
- var bind = Function.prototype.bind ? nativeBind : polyfillBind;
224
- /**
225
- * Convert an Array-like object to a real Array.
226
- */
227
-
228
- function toArray(list, start) {
229
- start = start || 0;
230
- var i = list.length - start;
231
- var ret = new Array(i);
232
-
233
- while (i--) {
234
- ret[i] = list[i + start];
235
- }
236
-
237
- return ret;
238
- }
239
- /**
240
- * Mix properties into target object.
241
- */
242
-
243
-
244
- function extend(to, _from) {
245
- for (var key in _from) {
246
- to[key] = _from[key];
247
- }
248
-
249
- return to;
250
- }
251
- /**
252
- * Merge an Array of Objects into a single Object.
253
- */
254
-
255
-
256
- function toObject(arr) {
257
- var res = {};
258
-
259
- for (var i = 0; i < arr.length; i++) {
260
- if (arr[i]) {
261
- extend(res, arr[i]);
262
- }
263
- }
264
-
265
- return res;
266
- }
267
- /* eslint-disable no-unused-vars */
268
-
269
- /**
270
- * Perform no operation.
271
- * Stubbing args to make Flow happy without leaving useless transpiled code
272
- * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
273
- */
274
-
275
-
276
- function noop(a, b, c) {}
277
- /**
278
- * Always return false.
279
- */
280
-
281
-
282
- var no = function no(a, b, c) {
283
- return false;
284
- };
285
- /* eslint-enable no-unused-vars */
286
-
287
- /**
288
- * Return the same value.
289
- */
290
-
291
-
292
- var identity = function identity(_) {
293
- return _;
294
- };
295
- /**
296
- * Generate a string containing static keys from compiler modules.
297
- */
298
-
299
-
300
- function genStaticKeys(modules) {
301
- return modules.reduce(function (keys, m) {
302
- return keys.concat(m.staticKeys || []);
303
- }, []).join(',');
304
- }
305
- /**
306
- * Check if two values are loosely equal - that is,
307
- * if they are plain objects, do they have the same shape?
308
- */
309
-
310
-
311
- function looseEqual(a, b) {
312
- if (a === b) {
313
- return true;
314
- }
315
-
316
- var isObjectA = isObject(a);
317
- var isObjectB = isObject(b);
318
-
319
- if (isObjectA && isObjectB) {
320
- try {
321
- var isArrayA = Array.isArray(a);
322
- var isArrayB = Array.isArray(b);
323
-
324
- if (isArrayA && isArrayB) {
325
- return a.length === b.length && a.every(function (e, i) {
326
- return looseEqual(e, b[i]);
327
- });
328
- } else if (a instanceof Date && b instanceof Date) {
329
- return a.getTime() === b.getTime();
330
- } else if (!isArrayA && !isArrayB) {
331
- var keysA = Object.keys(a);
332
- var keysB = Object.keys(b);
333
- return keysA.length === keysB.length && keysA.every(function (key) {
334
- return looseEqual(a[key], b[key]);
335
- });
336
- } else {
337
- /* istanbul ignore next */
338
- return false;
339
- }
340
- } catch (e) {
341
- /* istanbul ignore next */
342
- return false;
343
- }
344
- } else if (!isObjectA && !isObjectB) {
345
- return String(a) === String(b);
346
- } else {
347
- return false;
348
- }
349
- }
350
- /**
351
- * Return the first index at which a loosely equal value can be
352
- * found in the array (if value is a plain object, the array must
353
- * contain an object of the same shape), or -1 if it is not present.
354
- */
355
-
356
-
357
- function looseIndexOf(arr, val) {
358
- for (var i = 0; i < arr.length; i++) {
359
- if (looseEqual(arr[i], val)) {
360
- return i;
361
- }
362
- }
363
-
364
- return -1;
365
- }
366
- /**
367
- * Ensure a function is called only once.
368
- */
369
-
370
-
371
- function once(fn) {
372
- var called = false;
373
- return function () {
374
- if (!called) {
375
- called = true;
376
- fn.apply(this, arguments);
377
- }
378
- };
379
- }
380
-
381
- var SSR_ATTR = 'data-server-rendered';
382
- var ASSET_TYPES = ['component', 'directive', 'filter'];
383
- var LIFECYCLE_HOOKS = ['beforeCreate', 'created', 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'beforeDestroy', 'destroyed', 'activated', 'deactivated', 'errorCaptured', 'serverPrefetch'];
384
- /* */
385
-
386
- var config = {
387
- /**
388
- * Option merge strategies (used in core/util/options)
389
- */
390
- // $flow-disable-line
391
- optionMergeStrategies: Object.create(null),
392
-
393
- /**
394
- * Whether to suppress warnings.
395
- */
396
- silent: false,
397
-
398
- /**
399
- * Show production mode tip message on boot?
400
- */
401
- productionTip: "development" !== 'production',
402
-
403
- /**
404
- * Whether to enable devtools
405
- */
406
- devtools: "development" !== 'production',
407
-
408
- /**
409
- * Whether to record perf
410
- */
411
- performance: false,
412
-
413
- /**
414
- * Error handler for watcher errors
415
- */
416
- errorHandler: null,
417
-
418
- /**
419
- * Warn handler for watcher warns
420
- */
421
- warnHandler: null,
422
-
423
- /**
424
- * Ignore certain custom elements
425
- */
426
- ignoredElements: [],
427
-
428
- /**
429
- * Custom user key aliases for v-on
430
- */
431
- // $flow-disable-line
432
- keyCodes: Object.create(null),
433
-
434
- /**
435
- * Check if a tag is reserved so that it cannot be registered as a
436
- * component. This is platform-dependent and may be overwritten.
437
- */
438
- isReservedTag: no,
439
-
440
- /**
441
- * Check if an attribute is reserved so that it cannot be used as a component
442
- * prop. This is platform-dependent and may be overwritten.
443
- */
444
- isReservedAttr: no,
445
-
446
- /**
447
- * Check if a tag is an unknown element.
448
- * Platform-dependent.
449
- */
450
- isUnknownElement: no,
451
-
452
- /**
453
- * Get the namespace of an element
454
- */
455
- getTagNamespace: noop,
456
-
457
- /**
458
- * Parse the real tag name for the specific platform.
459
- */
460
- parsePlatformTagName: identity,
461
-
462
- /**
463
- * Check if an attribute must be bound using property, e.g. value
464
- * Platform-dependent.
465
- */
466
- mustUseProp: no,
467
-
468
- /**
469
- * Perform updates asynchronously. Intended to be used by Vue Test Utils
470
- * This will significantly reduce performance if set to false.
471
- */
472
- async: true,
473
-
474
- /**
475
- * Exposed for legacy reasons
476
- */
477
- _lifecycleHooks: LIFECYCLE_HOOKS
478
- };
479
- /* */
480
-
481
- /**
482
- * unicode letters used for parsing html tags, component names and property paths.
483
- * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
484
- * skipping \u10000-\uEFFFF due to it freezing up PhantomJS
485
- */
486
-
487
- var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;
488
- /**
489
- * Check if a string starts with $ or _
490
- */
491
-
492
- function isReserved(str) {
493
- var c = (str + '').charCodeAt(0);
494
- return c === 0x24 || c === 0x5F;
495
- }
496
- /**
497
- * Define a property.
498
- */
499
-
500
-
501
- function def(obj, key, val, enumerable) {
502
- Object.defineProperty(obj, key, {
503
- value: val,
504
- enumerable: !!enumerable,
505
- writable: true,
506
- configurable: true
507
- });
508
- }
509
- /**
510
- * Parse simple path.
511
- */
512
-
513
-
514
- var bailRE = new RegExp("[^" + unicodeRegExp.source + ".$_\\d]");
515
-
516
- function parsePath(path) {
517
- if (bailRE.test(path)) {
518
- return;
519
- }
520
-
521
- var segments = path.split('.');
522
- return function (obj) {
523
- for (var i = 0; i < segments.length; i++) {
524
- if (!obj) {
525
- return;
526
- }
527
-
528
- obj = obj[segments[i]];
529
- }
530
-
531
- return obj;
532
- };
533
- }
534
- /* */
535
- // can we use __proto__?
536
-
537
-
538
- var hasProto = '__proto__' in {}; // Browser environment sniffing
539
-
540
- var inBrowser = typeof window !== 'undefined';
541
- var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;
542
- var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();
543
- var UA = inBrowser && window.navigator.userAgent.toLowerCase();
544
- var isIE = UA && /msie|trident/.test(UA);
545
- var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
546
- var isEdge = UA && UA.indexOf('edge/') > 0;
547
- var isAndroid = UA && UA.indexOf('android') > 0 || weexPlatform === 'android';
548
- var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA) || weexPlatform === 'ios';
549
- var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
550
- var isPhantomJS = UA && /phantomjs/.test(UA);
551
- var isFF = UA && UA.match(/firefox\/(\d+)/); // Firefox has a "watch" function on Object.prototype...
552
-
553
- var nativeWatch = {}.watch;
554
- var supportsPassive = false;
555
-
556
- if (inBrowser) {
557
- try {
558
- var opts = {};
559
- Object.defineProperty(opts, 'passive', {
560
- get: function get() {
561
- /* istanbul ignore next */
562
- supportsPassive = true;
563
- }
564
- }); // https://github.com/facebook/flow/issues/285
565
-
566
- window.addEventListener('test-passive', null, opts);
567
- } catch (e) {}
568
- } // this needs to be lazy-evaled because vue may be required before
569
- // vue-server-renderer can set VUE_ENV
570
-
571
-
572
- var _isServer;
573
-
574
- var isServerRendering = function isServerRendering() {
575
- if (_isServer === undefined) {
576
- /* istanbul ignore if */
577
- if (!inBrowser && !inWeex && typeof global !== 'undefined') {
578
- // detect presence of vue-server-renderer and avoid
579
- // Webpack shimming the process
580
- _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';
581
- } else {
582
- _isServer = false;
583
- }
584
- }
585
-
586
- return _isServer;
587
- }; // detect devtools
588
-
589
-
590
- var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
591
- /* istanbul ignore next */
592
-
593
- function isNative(Ctor) {
594
- return typeof Ctor === 'function' && /native code/.test(Ctor.toString());
595
- }
596
-
597
- var hasSymbol = typeof Symbol !== 'undefined' && isNative(Symbol) && typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);
598
-
599
- var _Set;
600
- /* istanbul ignore if */
601
- // $flow-disable-line
602
-
603
-
604
- if (typeof Set !== 'undefined' && isNative(Set)) {
605
- // use native Set when available.
606
- _Set = Set;
607
- } else {
608
- // a non-standard Set polyfill that only works with primitive keys.
609
- _Set =
610
- /*@__PURE__*/
611
- function () {
612
- function Set() {
613
- this.set = Object.create(null);
614
- }
615
-
616
- Set.prototype.has = function has(key) {
617
- return this.set[key] === true;
618
- };
619
-
620
- Set.prototype.add = function add(key) {
621
- this.set[key] = true;
622
- };
623
-
624
- Set.prototype.clear = function clear() {
625
- this.set = Object.create(null);
626
- };
627
-
628
- return Set;
629
- }();
630
- }
631
- /* */
632
-
633
-
634
- var warn = noop;
635
- var tip = noop;
636
- var generateComponentTrace = noop; // work around flow check
637
-
638
- var formatComponentName = noop;
639
- {
640
- var hasConsole = typeof console !== 'undefined';
641
- var classifyRE = /(?:^|[-_])(\w)/g;
642
-
643
- var classify = function classify(str) {
644
- return str.replace(classifyRE, function (c) {
645
- return c.toUpperCase();
646
- }).replace(/[-_]/g, '');
647
- };
648
-
649
- warn = function warn(msg, vm) {
650
- var trace = vm ? generateComponentTrace(vm) : '';
651
-
652
- if (config.warnHandler) {
653
- config.warnHandler.call(null, msg, vm, trace);
654
- } else if (hasConsole && !config.silent) {
655
- console.error("[Vue warn]: " + msg + trace);
656
- }
657
- };
658
-
659
- tip = function tip(msg, vm) {
660
- if (hasConsole && !config.silent) {
661
- console.warn("[Vue tip]: " + msg + (vm ? generateComponentTrace(vm) : ''));
662
- }
663
- };
664
-
665
- formatComponentName = function formatComponentName(vm, includeFile) {
666
- if (vm.$root === vm) {
667
- return '<Root>';
668
- }
669
-
670
- var options = typeof vm === 'function' && vm.cid != null ? vm.options : vm._isVue ? vm.$options || vm.constructor.options : vm;
671
- var name = options.name || options._componentTag;
672
- var file = options.__file;
673
-
674
- if (!name && file) {
675
- var match = file.match(/([^/\\]+)\.vue$/);
676
- name = match && match[1];
677
- }
678
-
679
- return (name ? "<" + classify(name) + ">" : "<Anonymous>") + (file && includeFile !== false ? " at " + file : '');
680
- };
681
-
682
- var repeat = function repeat(str, n) {
683
- var res = '';
684
-
685
- while (n) {
686
- if (n % 2 === 1) {
687
- res += str;
688
- }
689
-
690
- if (n > 1) {
691
- str += str;
692
- }
693
-
694
- n >>= 1;
695
- }
696
-
697
- return res;
698
- };
699
-
700
- generateComponentTrace = function generateComponentTrace(vm) {
701
- if (vm._isVue && vm.$parent) {
702
- var tree = [];
703
- var currentRecursiveSequence = 0;
704
-
705
- while (vm) {
706
- if (tree.length > 0) {
707
- var last = tree[tree.length - 1];
708
-
709
- if (last.constructor === vm.constructor) {
710
- currentRecursiveSequence++;
711
- vm = vm.$parent;
712
- continue;
713
- } else if (currentRecursiveSequence > 0) {
714
- tree[tree.length - 1] = [last, currentRecursiveSequence];
715
- currentRecursiveSequence = 0;
716
- }
717
- }
718
-
719
- tree.push(vm);
720
- vm = vm.$parent;
721
- }
722
-
723
- return '\n\nfound in\n\n' + tree.map(function (vm, i) {
724
- return "" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm) ? formatComponentName(vm[0]) + "... (" + vm[1] + " recursive calls)" : formatComponentName(vm));
725
- }).join('\n');
726
- } else {
727
- return "\n\n(found in " + formatComponentName(vm) + ")";
728
- }
729
- };
730
- }
731
- /* */
732
-
733
- var uid = 0;
734
- /**
735
- * A dep is an observable that can have multiple
736
- * directives subscribing to it.
737
- */
738
-
739
- var Dep = function Dep() {
740
- this.id = uid++;
741
- this.subs = [];
742
- };
743
-
744
- Dep.prototype.addSub = function addSub(sub) {
745
- this.subs.push(sub);
746
- };
747
-
748
- Dep.prototype.removeSub = function removeSub(sub) {
749
- remove(this.subs, sub);
750
- };
751
-
752
- Dep.prototype.depend = function depend() {
753
- if (Dep.target) {
754
- Dep.target.addDep(this);
755
- }
756
- };
757
-
758
- Dep.prototype.notify = function notify() {
759
- // stabilize the subscriber list first
760
- var subs = this.subs.slice();
761
-
762
- if (!config.async) {
763
- // subs aren't sorted in scheduler if not running async
764
- // we need to sort them now to make sure they fire in correct
765
- // order
766
- subs.sort(function (a, b) {
767
- return a.id - b.id;
768
- });
769
- }
770
-
771
- for (var i = 0, l = subs.length; i < l; i++) {
772
- subs[i].update();
773
- }
774
- }; // The current target watcher being evaluated.
775
- // This is globally unique because only one watcher
776
- // can be evaluated at a time.
777
-
778
-
779
- Dep.target = null;
780
- var targetStack = [];
781
-
782
- function pushTarget(target) {
783
- targetStack.push(target);
784
- Dep.target = target;
785
- }
786
-
787
- function popTarget() {
788
- targetStack.pop();
789
- Dep.target = targetStack[targetStack.length - 1];
790
- }
791
- /* */
792
-
793
-
794
- var VNode = function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {
795
- this.tag = tag;
796
- this.data = data;
797
- this.children = children;
798
- this.text = text;
799
- this.elm = elm;
800
- this.ns = undefined;
801
- this.context = context;
802
- this.fnContext = undefined;
803
- this.fnOptions = undefined;
804
- this.fnScopeId = undefined;
805
- this.key = data && data.key;
806
- this.componentOptions = componentOptions;
807
- this.componentInstance = undefined;
808
- this.parent = undefined;
809
- this.raw = false;
810
- this.isStatic = false;
811
- this.isRootInsert = true;
812
- this.isComment = false;
813
- this.isCloned = false;
814
- this.isOnce = false;
815
- this.asyncFactory = asyncFactory;
816
- this.asyncMeta = undefined;
817
- this.isAsyncPlaceholder = false;
818
- };
819
-
820
- var prototypeAccessors = {
821
- child: {
822
- configurable: true
823
- }
824
- }; // DEPRECATED: alias for componentInstance for backwards compat.
825
-
826
- /* istanbul ignore next */
827
-
828
- prototypeAccessors.child.get = function () {
829
- return this.componentInstance;
830
- };
831
-
832
- Object.defineProperties(VNode.prototype, prototypeAccessors);
833
-
834
- var createEmptyVNode = function createEmptyVNode(text) {
835
- if (text === void 0) text = '';
836
- var node = new VNode();
837
- node.text = text;
838
- node.isComment = true;
839
- return node;
840
- };
841
-
842
- function createTextVNode(val) {
843
- return new VNode(undefined, undefined, undefined, String(val));
844
- } // optimized shallow clone
845
- // used for static nodes and slot nodes because they may be reused across
846
- // multiple renders, cloning them avoids errors when DOM manipulations rely
847
- // on their elm reference.
848
-
849
-
850
- function cloneVNode(vnode) {
851
- var cloned = new VNode(vnode.tag, vnode.data, // #7975
852
- // clone children array to avoid mutating original in case of cloning
853
- // a child.
854
- vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);
855
- cloned.ns = vnode.ns;
856
- cloned.isStatic = vnode.isStatic;
857
- cloned.key = vnode.key;
858
- cloned.isComment = vnode.isComment;
859
- cloned.fnContext = vnode.fnContext;
860
- cloned.fnOptions = vnode.fnOptions;
861
- cloned.fnScopeId = vnode.fnScopeId;
862
- cloned.asyncMeta = vnode.asyncMeta;
863
- cloned.isCloned = true;
864
- return cloned;
865
- }
866
- /*
867
- * not type checking this file because flow doesn't play well with
868
- * dynamically accessing methods on Array prototype
869
- */
870
-
871
-
872
- var arrayProto = Array.prototype;
873
- var arrayMethods = Object.create(arrayProto);
874
- var methodsToPatch = ['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'];
875
- /**
876
- * Intercept mutating methods and emit events
877
- */
878
-
879
- methodsToPatch.forEach(function (method) {
880
- // cache original method
881
- var original = arrayProto[method];
882
- def(arrayMethods, method, function mutator() {
883
- var args = [],
884
- len = arguments.length;
885
-
886
- while (len--) {
887
- args[len] = arguments[len];
888
- }
889
-
890
- var result = original.apply(this, args);
891
- var ob = this.__ob__;
892
- var inserted;
893
-
894
- switch (method) {
895
- case 'push':
896
- case 'unshift':
897
- inserted = args;
898
- break;
899
-
900
- case 'splice':
901
- inserted = args.slice(2);
902
- break;
903
- }
904
-
905
- if (inserted) {
906
- ob.observeArray(inserted);
907
- } // notify change
908
-
909
-
910
- ob.dep.notify();
911
- return result;
912
- });
913
- });
914
- /* */
915
-
916
- var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
917
- /**
918
- * In some cases we may want to disable observation inside a component's
919
- * update computation.
920
- */
921
-
922
- var shouldObserve = true;
923
-
924
- function toggleObserving(value) {
925
- shouldObserve = value;
926
- }
927
- /**
928
- * Observer class that is attached to each observed
929
- * object. Once attached, the observer converts the target
930
- * object's property keys into getter/setters that
931
- * collect dependencies and dispatch updates.
932
- */
933
-
934
-
935
- var Observer = function Observer(value) {
936
- this.value = value;
937
- this.dep = new Dep();
938
- this.vmCount = 0;
939
- def(value, '__ob__', this);
940
-
941
- if (Array.isArray(value)) {
942
- if (hasProto) {
943
- protoAugment(value, arrayMethods);
944
- } else {
945
- copyAugment(value, arrayMethods, arrayKeys);
946
- }
947
-
948
- this.observeArray(value);
949
- } else {
950
- this.walk(value);
951
- }
952
- };
953
- /**
954
- * Walk through all properties and convert them into
955
- * getter/setters. This method should only be called when
956
- * value type is Object.
957
- */
958
-
959
-
960
- Observer.prototype.walk = function walk(obj) {
961
- var keys = Object.keys(obj);
962
-
963
- for (var i = 0; i < keys.length; i++) {
964
- defineReactive$$1(obj, keys[i]);
965
- }
966
- };
967
- /**
968
- * Observe a list of Array items.
969
- */
970
-
971
-
972
- Observer.prototype.observeArray = function observeArray(items) {
973
- for (var i = 0, l = items.length; i < l; i++) {
974
- observe(items[i]);
975
- }
976
- }; // helpers
977
-
978
- /**
979
- * Augment a target Object or Array by intercepting
980
- * the prototype chain using __proto__
981
- */
982
-
983
-
984
- function protoAugment(target, src) {
985
- /* eslint-disable no-proto */
986
- target.__proto__ = src;
987
- /* eslint-enable no-proto */
988
- }
989
- /**
990
- * Augment a target Object or Array by defining
991
- * hidden properties.
992
- */
993
-
994
- /* istanbul ignore next */
995
-
996
-
997
- function copyAugment(target, src, keys) {
998
- for (var i = 0, l = keys.length; i < l; i++) {
999
- var key = keys[i];
1000
- def(target, key, src[key]);
1001
- }
1002
- }
1003
- /**
1004
- * Attempt to create an observer instance for a value,
1005
- * returns the new observer if successfully observed,
1006
- * or the existing observer if the value already has one.
1007
- */
1008
-
1009
-
1010
- function observe(value, asRootData) {
1011
- if (!isObject(value) || value instanceof VNode) {
1012
- return;
1013
- }
1014
-
1015
- var ob;
1016
-
1017
- if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
1018
- ob = value.__ob__;
1019
- } else if (shouldObserve && !isServerRendering() && (Array.isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue) {
1020
- ob = new Observer(value);
1021
- }
1022
-
1023
- if (asRootData && ob) {
1024
- ob.vmCount++;
1025
- }
1026
-
1027
- return ob;
1028
- }
1029
- /**
1030
- * Define a reactive property on an Object.
1031
- */
1032
-
1033
-
1034
- function defineReactive$$1(obj, key, val, customSetter, shallow) {
1035
- var dep = new Dep();
1036
- var property = Object.getOwnPropertyDescriptor(obj, key);
1037
-
1038
- if (property && property.configurable === false) {
1039
- return;
1040
- } // cater for pre-defined getter/setters
1041
-
1042
-
1043
- var getter = property && property.get;
1044
- var setter = property && property.set;
1045
-
1046
- if ((!getter || setter) && arguments.length === 2) {
1047
- val = obj[key];
1048
- }
1049
-
1050
- var childOb = !shallow && observe(val);
1051
- Object.defineProperty(obj, key, {
1052
- enumerable: true,
1053
- configurable: true,
1054
- get: function reactiveGetter() {
1055
- var value = getter ? getter.call(obj) : val;
1056
-
1057
- if (Dep.target) {
1058
- dep.depend();
1059
-
1060
- if (childOb) {
1061
- childOb.dep.depend();
1062
-
1063
- if (Array.isArray(value)) {
1064
- dependArray(value);
1065
- }
1066
- }
1067
- }
1068
-
1069
- return value;
1070
- },
1071
- set: function reactiveSetter(newVal) {
1072
- var value = getter ? getter.call(obj) : val;
1073
- /* eslint-disable no-self-compare */
1074
-
1075
- if (newVal === value || newVal !== newVal && value !== value) {
1076
- return;
1077
- }
1078
- /* eslint-enable no-self-compare */
1079
-
1080
-
1081
- if (customSetter) {
1082
- customSetter();
1083
- } // #7981: for accessor properties without setter
1084
-
1085
-
1086
- if (getter && !setter) {
1087
- return;
1088
- }
1089
-
1090
- if (setter) {
1091
- setter.call(obj, newVal);
1092
- } else {
1093
- val = newVal;
1094
- }
1095
-
1096
- childOb = !shallow && observe(newVal);
1097
- dep.notify();
1098
- }
1099
- });
1100
- }
1101
- /**
1102
- * Set a property on an object. Adds the new property and
1103
- * triggers change notification if the property doesn't
1104
- * already exist.
1105
- */
1106
-
1107
-
1108
- function set(target, key, val) {
1109
- if (isUndef(target) || isPrimitive(target)) {
1110
- warn("Cannot set reactive property on undefined, null, or primitive value: " + target);
1111
- }
1112
-
1113
- if (Array.isArray(target) && isValidArrayIndex(key)) {
1114
- target.length = Math.max(target.length, key);
1115
- target.splice(key, 1, val);
1116
- return val;
1117
- }
1118
-
1119
- if (key in target && !(key in Object.prototype)) {
1120
- target[key] = val;
1121
- return val;
1122
- }
1123
-
1124
- var ob = target.__ob__;
1125
-
1126
- if (target._isVue || ob && ob.vmCount) {
1127
- warn('Avoid adding reactive properties to a Vue instance or its root $data ' + 'at runtime - declare it upfront in the data option.');
1128
- return val;
1129
- }
1130
-
1131
- if (!ob) {
1132
- target[key] = val;
1133
- return val;
1134
- }
1135
-
1136
- defineReactive$$1(ob.value, key, val);
1137
- ob.dep.notify();
1138
- return val;
1139
- }
1140
- /**
1141
- * Delete a property and trigger change if necessary.
1142
- */
1143
-
1144
-
1145
- function del(target, key) {
1146
- if (isUndef(target) || isPrimitive(target)) {
1147
- warn("Cannot delete reactive property on undefined, null, or primitive value: " + target);
1148
- }
1149
-
1150
- if (Array.isArray(target) && isValidArrayIndex(key)) {
1151
- target.splice(key, 1);
1152
- return;
1153
- }
1154
-
1155
- var ob = target.__ob__;
1156
-
1157
- if (target._isVue || ob && ob.vmCount) {
1158
- warn('Avoid deleting properties on a Vue instance or its root $data ' + '- just set it to null.');
1159
- return;
1160
- }
1161
-
1162
- if (!hasOwn(target, key)) {
1163
- return;
1164
- }
1165
-
1166
- delete target[key];
1167
-
1168
- if (!ob) {
1169
- return;
1170
- }
1171
-
1172
- ob.dep.notify();
1173
- }
1174
- /**
1175
- * Collect dependencies on array elements when the array is touched, since
1176
- * we cannot intercept array element access like property getters.
1177
- */
1178
-
1179
-
1180
- function dependArray(value) {
1181
- for (var e = void 0, i = 0, l = value.length; i < l; i++) {
1182
- e = value[i];
1183
- e && e.__ob__ && e.__ob__.dep.depend();
1184
-
1185
- if (Array.isArray(e)) {
1186
- dependArray(e);
1187
- }
1188
- }
1189
- }
1190
- /* */
1191
-
1192
- /**
1193
- * Option overwriting strategies are functions that handle
1194
- * how to merge a parent option value and a child option
1195
- * value into the final value.
1196
- */
1197
-
1198
-
1199
- var strats = config.optionMergeStrategies;
1200
- /**
1201
- * Options with restrictions
1202
- */
1203
-
1204
- {
1205
- strats.el = strats.propsData = function (parent, child, vm, key) {
1206
- if (!vm) {
1207
- warn("option \"" + key + "\" can only be used during instance " + 'creation with the `new` keyword.');
1208
- }
1209
-
1210
- return defaultStrat(parent, child);
1211
- };
1212
- }
1213
- /**
1214
- * Helper that recursively merges two data objects together.
1215
- */
1216
-
1217
- function mergeData(to, from) {
1218
- if (!from) {
1219
- return to;
1220
- }
1221
-
1222
- var key, toVal, fromVal;
1223
- var keys = hasSymbol ? Reflect.ownKeys(from) : Object.keys(from);
1224
-
1225
- for (var i = 0; i < keys.length; i++) {
1226
- key = keys[i]; // in case the object is already observed...
1227
-
1228
- if (key === '__ob__') {
1229
- continue;
1230
- }
1231
-
1232
- toVal = to[key];
1233
- fromVal = from[key];
1234
-
1235
- if (!hasOwn(to, key)) {
1236
- set(to, key, fromVal);
1237
- } else if (toVal !== fromVal && isPlainObject(toVal) && isPlainObject(fromVal)) {
1238
- mergeData(toVal, fromVal);
1239
- }
1240
- }
1241
-
1242
- return to;
1243
- }
1244
- /**
1245
- * Data
1246
- */
1247
-
1248
-
1249
- function mergeDataOrFn(parentVal, childVal, vm) {
1250
- if (!vm) {
1251
- // in a Vue.extend merge, both should be functions
1252
- if (!childVal) {
1253
- return parentVal;
1254
- }
1255
-
1256
- if (!parentVal) {
1257
- return childVal;
1258
- } // when parentVal & childVal are both present,
1259
- // we need to return a function that returns the
1260
- // merged result of both functions... no need to
1261
- // check if parentVal is a function here because
1262
- // it has to be a function to pass previous merges.
1263
-
1264
-
1265
- return function mergedDataFn() {
1266
- return mergeData(typeof childVal === 'function' ? childVal.call(this, this) : childVal, typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal);
1267
- };
1268
- } else {
1269
- return function mergedInstanceDataFn() {
1270
- // instance merge
1271
- var instanceData = typeof childVal === 'function' ? childVal.call(vm, vm) : childVal;
1272
- var defaultData = typeof parentVal === 'function' ? parentVal.call(vm, vm) : parentVal;
1273
-
1274
- if (instanceData) {
1275
- return mergeData(instanceData, defaultData);
1276
- } else {
1277
- return defaultData;
1278
- }
1279
- };
1280
- }
1281
- }
1282
-
1283
- strats.data = function (parentVal, childVal, vm) {
1284
- if (!vm) {
1285
- if (childVal && typeof childVal !== 'function') {
1286
- warn('The "data" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);
1287
- return parentVal;
1288
- }
1289
-
1290
- return mergeDataOrFn(parentVal, childVal);
1291
- }
1292
-
1293
- return mergeDataOrFn(parentVal, childVal, vm);
1294
- };
1295
- /**
1296
- * Hooks and props are merged as arrays.
1297
- */
1298
-
1299
-
1300
- function mergeHook(parentVal, childVal) {
1301
- var res = childVal ? parentVal ? parentVal.concat(childVal) : Array.isArray(childVal) ? childVal : [childVal] : parentVal;
1302
- return res ? dedupeHooks(res) : res;
1303
- }
1304
-
1305
- function dedupeHooks(hooks) {
1306
- var res = [];
1307
-
1308
- for (var i = 0; i < hooks.length; i++) {
1309
- if (res.indexOf(hooks[i]) === -1) {
1310
- res.push(hooks[i]);
1311
- }
1312
- }
1313
-
1314
- return res;
1315
- }
1316
-
1317
- LIFECYCLE_HOOKS.forEach(function (hook) {
1318
- strats[hook] = mergeHook;
1319
- });
1320
- /**
1321
- * Assets
1322
- *
1323
- * When a vm is present (instance creation), we need to do
1324
- * a three-way merge between constructor options, instance
1325
- * options and parent options.
1326
- */
1327
-
1328
- function mergeAssets(parentVal, childVal, vm, key) {
1329
- var res = Object.create(parentVal || null);
1330
-
1331
- if (childVal) {
1332
- assertObjectType(key, childVal, vm);
1333
- return extend(res, childVal);
1334
- } else {
1335
- return res;
1336
- }
1337
- }
1338
-
1339
- ASSET_TYPES.forEach(function (type) {
1340
- strats[type + 's'] = mergeAssets;
1341
- });
1342
- /**
1343
- * Watchers.
1344
- *
1345
- * Watchers hashes should not overwrite one
1346
- * another, so we merge them as arrays.
1347
- */
1348
-
1349
- strats.watch = function (parentVal, childVal, vm, key) {
1350
- // work around Firefox's Object.prototype.watch...
1351
- if (parentVal === nativeWatch) {
1352
- parentVal = undefined;
1353
- }
1354
-
1355
- if (childVal === nativeWatch) {
1356
- childVal = undefined;
1357
- }
1358
- /* istanbul ignore if */
1359
-
1360
-
1361
- if (!childVal) {
1362
- return Object.create(parentVal || null);
1363
- }
1364
-
1365
- {
1366
- assertObjectType(key, childVal, vm);
1367
- }
1368
-
1369
- if (!parentVal) {
1370
- return childVal;
1371
- }
1372
-
1373
- var ret = {};
1374
- extend(ret, parentVal);
1375
-
1376
- for (var key$1 in childVal) {
1377
- var parent = ret[key$1];
1378
- var child = childVal[key$1];
1379
-
1380
- if (parent && !Array.isArray(parent)) {
1381
- parent = [parent];
1382
- }
1383
-
1384
- ret[key$1] = parent ? parent.concat(child) : Array.isArray(child) ? child : [child];
1385
- }
1386
-
1387
- return ret;
1388
- };
1389
- /**
1390
- * Other object hashes.
1391
- */
1392
-
1393
-
1394
- strats.props = strats.methods = strats.inject = strats.computed = function (parentVal, childVal, vm, key) {
1395
- if (childVal && "development" !== 'production') {
1396
- assertObjectType(key, childVal, vm);
1397
- }
1398
-
1399
- if (!parentVal) {
1400
- return childVal;
1401
- }
1402
-
1403
- var ret = Object.create(null);
1404
- extend(ret, parentVal);
1405
-
1406
- if (childVal) {
1407
- extend(ret, childVal);
1408
- }
1409
-
1410
- return ret;
1411
- };
1412
-
1413
- strats.provide = mergeDataOrFn;
1414
- /**
1415
- * Default strategy.
1416
- */
1417
-
1418
- var defaultStrat = function defaultStrat(parentVal, childVal) {
1419
- return childVal === undefined ? parentVal : childVal;
1420
- };
1421
- /**
1422
- * Validate component names
1423
- */
1424
-
1425
-
1426
- function checkComponents(options) {
1427
- for (var key in options.components) {
1428
- validateComponentName(key);
1429
- }
1430
- }
1431
-
1432
- function validateComponentName(name) {
1433
- if (!new RegExp("^[a-zA-Z][\\-\\.0-9_" + unicodeRegExp.source + "]*$").test(name)) {
1434
- warn('Invalid component name: "' + name + '". Component names ' + 'should conform to valid custom element name in html5 specification.');
1435
- }
1436
-
1437
- if (isBuiltInTag(name) || config.isReservedTag(name)) {
1438
- warn('Do not use built-in or reserved HTML elements as component ' + 'id: ' + name);
1439
- }
1440
- }
1441
- /**
1442
- * Ensure all props option syntax are normalized into the
1443
- * Object-based format.
1444
- */
1445
-
1446
-
1447
- function normalizeProps(options, vm) {
1448
- var props = options.props;
1449
-
1450
- if (!props) {
1451
- return;
1452
- }
1453
-
1454
- var res = {};
1455
- var i, val, name;
1456
-
1457
- if (Array.isArray(props)) {
1458
- i = props.length;
1459
-
1460
- while (i--) {
1461
- val = props[i];
1462
-
1463
- if (typeof val === 'string') {
1464
- name = camelize(val);
1465
- res[name] = {
1466
- type: null
1467
- };
1468
- } else {
1469
- warn('props must be strings when using array syntax.');
1470
- }
1471
- }
1472
- } else if (isPlainObject(props)) {
1473
- for (var key in props) {
1474
- val = props[key];
1475
- name = camelize(key);
1476
- res[name] = isPlainObject(val) ? val : {
1477
- type: val
1478
- };
1479
- }
1480
- } else {
1481
- warn("Invalid value for option \"props\": expected an Array or an Object, " + "but got " + toRawType(props) + ".", vm);
1482
- }
1483
-
1484
- options.props = res;
1485
- }
1486
- /**
1487
- * Normalize all injections into Object-based format
1488
- */
1489
-
1490
-
1491
- function normalizeInject(options, vm) {
1492
- var inject = options.inject;
1493
-
1494
- if (!inject) {
1495
- return;
1496
- }
1497
-
1498
- var normalized = options.inject = {};
1499
-
1500
- if (Array.isArray(inject)) {
1501
- for (var i = 0; i < inject.length; i++) {
1502
- normalized[inject[i]] = {
1503
- from: inject[i]
1504
- };
1505
- }
1506
- } else if (isPlainObject(inject)) {
1507
- for (var key in inject) {
1508
- var val = inject[key];
1509
- normalized[key] = isPlainObject(val) ? extend({
1510
- from: key
1511
- }, val) : {
1512
- from: val
1513
- };
1514
- }
1515
- } else {
1516
- warn("Invalid value for option \"inject\": expected an Array or an Object, " + "but got " + toRawType(inject) + ".", vm);
1517
- }
1518
- }
1519
- /**
1520
- * Normalize raw function directives into object format.
1521
- */
1522
-
1523
-
1524
- function normalizeDirectives(options) {
1525
- var dirs = options.directives;
1526
-
1527
- if (dirs) {
1528
- for (var key in dirs) {
1529
- var def$$1 = dirs[key];
1530
-
1531
- if (typeof def$$1 === 'function') {
1532
- dirs[key] = {
1533
- bind: def$$1,
1534
- update: def$$1
1535
- };
1536
- }
1537
- }
1538
- }
1539
- }
1540
-
1541
- function assertObjectType(name, value, vm) {
1542
- if (!isPlainObject(value)) {
1543
- warn("Invalid value for option \"" + name + "\": expected an Object, " + "but got " + toRawType(value) + ".", vm);
1544
- }
1545
- }
1546
- /**
1547
- * Merge two option objects into a new one.
1548
- * Core utility used in both instantiation and inheritance.
1549
- */
1550
-
1551
-
1552
- function mergeOptions(parent, child, vm) {
1553
- {
1554
- checkComponents(child);
1555
- }
1556
-
1557
- if (typeof child === 'function') {
1558
- child = child.options;
1559
- }
1560
-
1561
- normalizeProps(child, vm);
1562
- normalizeInject(child, vm);
1563
- normalizeDirectives(child); // Apply extends and mixins on the child options,
1564
- // but only if it is a raw options object that isn't
1565
- // the result of another mergeOptions call.
1566
- // Only merged options has the _base property.
1567
-
1568
- if (!child._base) {
1569
- if (child["extends"]) {
1570
- parent = mergeOptions(parent, child["extends"], vm);
1571
- }
1572
-
1573
- if (child.mixins) {
1574
- for (var i = 0, l = child.mixins.length; i < l; i++) {
1575
- parent = mergeOptions(parent, child.mixins[i], vm);
1576
- }
1577
- }
1578
- }
1579
-
1580
- var options = {};
1581
- var key;
1582
-
1583
- for (key in parent) {
1584
- mergeField(key);
1585
- }
1586
-
1587
- for (key in child) {
1588
- if (!hasOwn(parent, key)) {
1589
- mergeField(key);
1590
- }
1591
- }
1592
-
1593
- function mergeField(key) {
1594
- var strat = strats[key] || defaultStrat;
1595
- options[key] = strat(parent[key], child[key], vm, key);
1596
- }
1597
-
1598
- return options;
1599
- }
1600
- /**
1601
- * Resolve an asset.
1602
- * This function is used because child instances need access
1603
- * to assets defined in its ancestor chain.
1604
- */
1605
-
1606
-
1607
- function resolveAsset(options, type, id, warnMissing) {
1608
- /* istanbul ignore if */
1609
- if (typeof id !== 'string') {
1610
- return;
1611
- }
1612
-
1613
- var assets = options[type]; // check local registration variations first
1614
-
1615
- if (hasOwn(assets, id)) {
1616
- return assets[id];
1617
- }
1618
-
1619
- var camelizedId = camelize(id);
1620
-
1621
- if (hasOwn(assets, camelizedId)) {
1622
- return assets[camelizedId];
1623
- }
1624
-
1625
- var PascalCaseId = capitalize(camelizedId);
1626
-
1627
- if (hasOwn(assets, PascalCaseId)) {
1628
- return assets[PascalCaseId];
1629
- } // fallback to prototype chain
1630
-
1631
-
1632
- var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
1633
-
1634
- if (warnMissing && !res) {
1635
- warn('Failed to resolve ' + type.slice(0, -1) + ': ' + id, options);
1636
- }
1637
-
1638
- return res;
1639
- }
1640
- /* */
1641
-
1642
-
1643
- function validateProp(key, propOptions, propsData, vm) {
1644
- var prop = propOptions[key];
1645
- var absent = !hasOwn(propsData, key);
1646
- var value = propsData[key]; // boolean casting
1647
-
1648
- var booleanIndex = getTypeIndex(Boolean, prop.type);
1649
-
1650
- if (booleanIndex > -1) {
1651
- if (absent && !hasOwn(prop, 'default')) {
1652
- value = false;
1653
- } else if (value === '' || value === hyphenate(key)) {
1654
- // only cast empty string / same name to boolean if
1655
- // boolean has higher priority
1656
- var stringIndex = getTypeIndex(String, prop.type);
1657
-
1658
- if (stringIndex < 0 || booleanIndex < stringIndex) {
1659
- value = true;
1660
- }
1661
- }
1662
- } // check default value
1663
-
1664
-
1665
- if (value === undefined) {
1666
- value = getPropDefaultValue(vm, prop, key); // since the default value is a fresh copy,
1667
- // make sure to observe it.
1668
-
1669
- var prevShouldObserve = shouldObserve;
1670
- toggleObserving(true);
1671
- observe(value);
1672
- toggleObserving(prevShouldObserve);
1673
- }
1674
-
1675
- {
1676
- assertProp(prop, key, value, vm, absent);
1677
- }
1678
- return value;
1679
- }
1680
- /**
1681
- * Get the default value of a prop.
1682
- */
1683
-
1684
-
1685
- function getPropDefaultValue(vm, prop, key) {
1686
- // no default, return undefined
1687
- if (!hasOwn(prop, 'default')) {
1688
- return undefined;
1689
- }
1690
-
1691
- var def = prop["default"]; // warn against non-factory defaults for Object & Array
1692
-
1693
- if (isObject(def)) {
1694
- warn('Invalid default value for prop "' + key + '": ' + 'Props with type Object/Array must use a factory function ' + 'to return the default value.', vm);
1695
- } // the raw prop value was also undefined from previous render,
1696
- // return previous default value to avoid unnecessary watcher trigger
1697
-
1698
-
1699
- if (vm && vm.$options.propsData && vm.$options.propsData[key] === undefined && vm._props[key] !== undefined) {
1700
- return vm._props[key];
1701
- } // call factory function for non-Function types
1702
- // a value is Function if its prototype is function even across different execution context
1703
-
1704
-
1705
- return typeof def === 'function' && getType(prop.type) !== 'Function' ? def.call(vm) : def;
1706
- }
1707
- /**
1708
- * Assert whether a prop is valid.
1709
- */
1710
-
1711
-
1712
- function assertProp(prop, name, value, vm, absent) {
1713
- if (prop.required && absent) {
1714
- warn('Missing required prop: "' + name + '"', vm);
1715
- return;
1716
- }
1717
-
1718
- if (value == null && !prop.required) {
1719
- return;
1720
- }
1721
-
1722
- var type = prop.type;
1723
- var valid = !type || type === true;
1724
- var expectedTypes = [];
1725
-
1726
- if (type) {
1727
- if (!Array.isArray(type)) {
1728
- type = [type];
1729
- }
1730
-
1731
- for (var i = 0; i < type.length && !valid; i++) {
1732
- var assertedType = assertType(value, type[i]);
1733
- expectedTypes.push(assertedType.expectedType || '');
1734
- valid = assertedType.valid;
1735
- }
1736
- }
1737
-
1738
- if (!valid) {
1739
- warn(getInvalidTypeMessage(name, value, expectedTypes), vm);
1740
- return;
1741
- }
1742
-
1743
- var validator = prop.validator;
1744
-
1745
- if (validator) {
1746
- if (!validator(value)) {
1747
- warn('Invalid prop: custom validator check failed for prop "' + name + '".', vm);
1748
- }
1749
- }
1750
- }
1751
-
1752
- var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;
1753
-
1754
- function assertType(value, type) {
1755
- var valid;
1756
- var expectedType = getType(type);
1757
-
1758
- if (simpleCheckRE.test(expectedType)) {
1759
- var t = _typeof(value);
1760
-
1761
- valid = t === expectedType.toLowerCase(); // for primitive wrapper objects
1762
-
1763
- if (!valid && t === 'object') {
1764
- valid = value instanceof type;
1765
- }
1766
- } else if (expectedType === 'Object') {
1767
- valid = isPlainObject(value);
1768
- } else if (expectedType === 'Array') {
1769
- valid = Array.isArray(value);
1770
- } else {
1771
- valid = value instanceof type;
1772
- }
1773
-
1774
- return {
1775
- valid: valid,
1776
- expectedType: expectedType
1777
- };
1778
- }
1779
- /**
1780
- * Use function string name to check built-in types,
1781
- * because a simple equality check will fail when running
1782
- * across different vms / iframes.
1783
- */
1784
-
1785
-
1786
- function getType(fn) {
1787
- var match = fn && fn.toString().match(/^\s*function (\w+)/);
1788
- return match ? match[1] : '';
1789
- }
1790
-
1791
- function isSameType(a, b) {
1792
- return getType(a) === getType(b);
1793
- }
1794
-
1795
- function getTypeIndex(type, expectedTypes) {
1796
- if (!Array.isArray(expectedTypes)) {
1797
- return isSameType(expectedTypes, type) ? 0 : -1;
1798
- }
1799
-
1800
- for (var i = 0, len = expectedTypes.length; i < len; i++) {
1801
- if (isSameType(expectedTypes[i], type)) {
1802
- return i;
1803
- }
1804
- }
1805
-
1806
- return -1;
1807
- }
1808
-
1809
- function getInvalidTypeMessage(name, value, expectedTypes) {
1810
- var message = "Invalid prop: type check failed for prop \"" + name + "\"." + " Expected " + expectedTypes.map(capitalize).join(', ');
1811
- var expectedType = expectedTypes[0];
1812
- var receivedType = toRawType(value);
1813
- var expectedValue = styleValue(value, expectedType);
1814
- var receivedValue = styleValue(value, receivedType); // check if we need to specify expected value
1815
-
1816
- if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {
1817
- message += " with value " + expectedValue;
1818
- }
1819
-
1820
- message += ", got " + receivedType + " "; // check if we need to specify received value
1821
-
1822
- if (isExplicable(receivedType)) {
1823
- message += "with value " + receivedValue + ".";
1824
- }
1825
-
1826
- return message;
1827
- }
1828
-
1829
- function styleValue(value, type) {
1830
- if (type === 'String') {
1831
- return "\"" + value + "\"";
1832
- } else if (type === 'Number') {
1833
- return "" + Number(value);
1834
- } else {
1835
- return "" + value;
1836
- }
1837
- }
1838
-
1839
- function isExplicable(value) {
1840
- var explicitTypes = ['string', 'number', 'boolean'];
1841
- return explicitTypes.some(function (elem) {
1842
- return value.toLowerCase() === elem;
1843
- });
1844
- }
1845
-
1846
- function isBoolean() {
1847
- var args = [],
1848
- len = arguments.length;
1849
-
1850
- while (len--) {
1851
- args[len] = arguments[len];
1852
- }
1853
-
1854
- return args.some(function (elem) {
1855
- return elem.toLowerCase() === 'boolean';
1856
- });
1857
- }
1858
- /* */
1859
-
1860
-
1861
- function handleError(err, vm, info) {
1862
- // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.
1863
- // See: https://github.com/vuejs/vuex/issues/1505
1864
- pushTarget();
1865
-
1866
- try {
1867
- if (vm) {
1868
- var cur = vm;
1869
-
1870
- while (cur = cur.$parent) {
1871
- var hooks = cur.$options.errorCaptured;
1872
-
1873
- if (hooks) {
1874
- for (var i = 0; i < hooks.length; i++) {
1875
- try {
1876
- var capture = hooks[i].call(cur, err, vm, info) === false;
1877
-
1878
- if (capture) {
1879
- return;
1880
- }
1881
- } catch (e) {
1882
- globalHandleError(e, cur, 'errorCaptured hook');
1883
- }
1884
- }
1885
- }
1886
- }
1887
- }
1888
-
1889
- globalHandleError(err, vm, info);
1890
- } finally {
1891
- popTarget();
1892
- }
1893
- }
1894
-
1895
- function invokeWithErrorHandling(handler, context, args, vm, info) {
1896
- var res;
1897
-
1898
- try {
1899
- res = args ? handler.apply(context, args) : handler.call(context);
1900
-
1901
- if (res && !res._isVue && isPromise(res) && !res._handled) {
1902
- res["catch"](function (e) {
1903
- return handleError(e, vm, info + " (Promise/async)");
1904
- }); // issue #9511
1905
- // avoid catch triggering multiple times when nested calls
1906
-
1907
- res._handled = true;
1908
- }
1909
- } catch (e) {
1910
- handleError(e, vm, info);
1911
- }
1912
-
1913
- return res;
1914
- }
1915
-
1916
- function globalHandleError(err, vm, info) {
1917
- if (config.errorHandler) {
1918
- try {
1919
- return config.errorHandler.call(null, err, vm, info);
1920
- } catch (e) {
1921
- // if the user intentionally throws the original error in the handler,
1922
- // do not log it twice
1923
- if (e !== err) {
1924
- logError(e, null, 'config.errorHandler');
1925
- }
1926
- }
1927
- }
1928
-
1929
- logError(err, vm, info);
1930
- }
1931
-
1932
- function logError(err, vm, info) {
1933
- {
1934
- warn("Error in " + info + ": \"" + err.toString() + "\"", vm);
1935
- }
1936
- /* istanbul ignore else */
1937
-
1938
- if ((inBrowser || inWeex) && typeof console !== 'undefined') {
1939
- console.error(err);
1940
- } else {
1941
- throw err;
1942
- }
1943
- }
1944
- /* */
1945
-
1946
-
1947
- var isUsingMicroTask = false;
1948
- var callbacks = [];
1949
- var pending = false;
1950
-
1951
- function flushCallbacks() {
1952
- pending = false;
1953
- var copies = callbacks.slice(0);
1954
- callbacks.length = 0;
1955
-
1956
- for (var i = 0; i < copies.length; i++) {
1957
- copies[i]();
1958
- }
1959
- } // Here we have async deferring wrappers using microtasks.
1960
- // In 2.5 we used (macro) tasks (in combination with microtasks).
1961
- // However, it has subtle problems when state is changed right before repaint
1962
- // (e.g. #6813, out-in transitions).
1963
- // Also, using (macro) tasks in event handler would cause some weird behaviors
1964
- // that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).
1965
- // So we now use microtasks everywhere, again.
1966
- // A major drawback of this tradeoff is that there are some scenarios
1967
- // where microtasks have too high a priority and fire in between supposedly
1968
- // sequential events (e.g. #4521, #6690, which have workarounds)
1969
- // or even between bubbling of the same event (#6566).
1970
-
1971
-
1972
- var timerFunc; // The nextTick behavior leverages the microtask queue, which can be accessed
1973
- // via either native Promise.then or MutationObserver.
1974
- // MutationObserver has wider support, however it is seriously bugged in
1975
- // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
1976
- // completely stops working after triggering a few times... so, if native
1977
- // Promise is available, we will use it:
1978
-
1979
- /* istanbul ignore next, $flow-disable-line */
1980
-
1981
- if (typeof Promise !== 'undefined' && isNative(Promise)) {
1982
- var p = Promise.resolve();
1983
-
1984
- timerFunc = function timerFunc() {
1985
- p.then(flushCallbacks); // In problematic UIWebViews, Promise.then doesn't completely break, but
1986
- // it can get stuck in a weird state where callbacks are pushed into the
1987
- // microtask queue but the queue isn't being flushed, until the browser
1988
- // needs to do some other work, e.g. handle a timer. Therefore we can
1989
- // "force" the microtask queue to be flushed by adding an empty timer.
1990
-
1991
- if (isIOS) {
1992
- setTimeout(noop);
1993
- }
1994
- };
1995
-
1996
- isUsingMicroTask = true;
1997
- } else if (!isIE && typeof MutationObserver !== 'undefined' && (isNative(MutationObserver) || // PhantomJS and iOS 7.x
1998
- MutationObserver.toString() === '[object MutationObserverConstructor]')) {
1999
- // Use MutationObserver where native Promise is not available,
2000
- // e.g. PhantomJS, iOS7, Android 4.4
2001
- // (#6466 MutationObserver is unreliable in IE11)
2002
- var counter = 1;
2003
- var observer = new MutationObserver(flushCallbacks);
2004
- var textNode = document.createTextNode(String(counter));
2005
- observer.observe(textNode, {
2006
- characterData: true
2007
- });
2008
-
2009
- timerFunc = function timerFunc() {
2010
- counter = (counter + 1) % 2;
2011
- textNode.data = String(counter);
2012
- };
2013
-
2014
- isUsingMicroTask = true;
2015
- } else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {
2016
- // Fallback to setImmediate.
2017
- // Technically it leverages the (macro) task queue,
2018
- // but it is still a better choice than setTimeout.
2019
- timerFunc = function timerFunc() {
2020
- setImmediate(flushCallbacks);
2021
- };
2022
- } else {
2023
- // Fallback to setTimeout.
2024
- timerFunc = function timerFunc() {
2025
- setTimeout(flushCallbacks, 0);
2026
- };
2027
- }
2028
-
2029
- function nextTick(cb, ctx) {
2030
- var _resolve;
2031
-
2032
- callbacks.push(function () {
2033
- if (cb) {
2034
- try {
2035
- cb.call(ctx);
2036
- } catch (e) {
2037
- handleError(e, ctx, 'nextTick');
2038
- }
2039
- } else if (_resolve) {
2040
- _resolve(ctx);
2041
- }
2042
- });
2043
-
2044
- if (!pending) {
2045
- pending = true;
2046
- timerFunc();
2047
- } // $flow-disable-line
2048
-
2049
-
2050
- if (!cb && typeof Promise !== 'undefined') {
2051
- return new Promise(function (resolve) {
2052
- _resolve = resolve;
2053
- });
2054
- }
2055
- }
2056
- /* */
2057
-
2058
-
2059
- var mark;
2060
- var measure;
2061
- {
2062
- var perf = inBrowser && window.performance;
2063
- /* istanbul ignore if */
2064
-
2065
- if (perf && perf.mark && perf.measure && perf.clearMarks && perf.clearMeasures) {
2066
- mark = function mark(tag) {
2067
- return perf.mark(tag);
2068
- };
2069
-
2070
- measure = function measure(name, startTag, endTag) {
2071
- perf.measure(name, startTag, endTag);
2072
- perf.clearMarks(startTag);
2073
- perf.clearMarks(endTag); // perf.clearMeasures(name)
2074
- };
2075
- }
2076
- }
2077
- /* not type checking this file because flow doesn't play well with Proxy */
2078
-
2079
- var initProxy;
2080
- {
2081
- var allowedGlobals = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' + 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' + 'require' // for Webpack/Browserify
2082
- );
2083
-
2084
- var warnNonPresent = function warnNonPresent(target, key) {
2085
- warn("Property or method \"" + key + "\" is not defined on the instance but " + 'referenced during render. Make sure that this property is reactive, ' + 'either in the data option, or for class-based components, by ' + 'initializing the property. ' + 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', target);
2086
- };
2087
-
2088
- var warnReservedPrefix = function warnReservedPrefix(target, key) {
2089
- warn("Property \"" + key + "\" must be accessed with \"$data." + key + "\" because " + 'properties starting with "$" or "_" are not proxied in the Vue instance to ' + 'prevent conflicts with Vue internals. ' + 'See: https://vuejs.org/v2/api/#data', target);
2090
- };
2091
-
2092
- var hasProxy = typeof Proxy !== 'undefined' && isNative(Proxy);
2093
-
2094
- if (hasProxy) {
2095
- var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');
2096
- config.keyCodes = new Proxy(config.keyCodes, {
2097
- set: function set(target, key, value) {
2098
- if (isBuiltInModifier(key)) {
2099
- warn("Avoid overwriting built-in modifier in config.keyCodes: ." + key);
2100
- return false;
2101
- } else {
2102
- target[key] = value;
2103
- return true;
2104
- }
2105
- }
2106
- });
2107
- }
2108
-
2109
- var hasHandler = {
2110
- has: function has(target, key) {
2111
- var has = key in target;
2112
- var isAllowed = allowedGlobals(key) || typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data);
2113
-
2114
- if (!has && !isAllowed) {
2115
- if (key in target.$data) {
2116
- warnReservedPrefix(target, key);
2117
- } else {
2118
- warnNonPresent(target, key);
2119
- }
2120
- }
2121
-
2122
- return has || !isAllowed;
2123
- }
2124
- };
2125
- var getHandler = {
2126
- get: function get(target, key) {
2127
- if (typeof key === 'string' && !(key in target)) {
2128
- if (key in target.$data) {
2129
- warnReservedPrefix(target, key);
2130
- } else {
2131
- warnNonPresent(target, key);
2132
- }
2133
- }
2134
-
2135
- return target[key];
2136
- }
2137
- };
2138
-
2139
- initProxy = function initProxy(vm) {
2140
- if (hasProxy) {
2141
- // determine which proxy handler to use
2142
- var options = vm.$options;
2143
- var handlers = options.render && options.render._withStripped ? getHandler : hasHandler;
2144
- vm._renderProxy = new Proxy(vm, handlers);
2145
- } else {
2146
- vm._renderProxy = vm;
2147
- }
2148
- };
2149
- }
2150
- /* */
2151
-
2152
- var seenObjects = new _Set();
2153
- /**
2154
- * Recursively traverse an object to evoke all converted
2155
- * getters, so that every nested property inside the object
2156
- * is collected as a "deep" dependency.
2157
- */
2158
-
2159
- function traverse(val) {
2160
- _traverse(val, seenObjects);
2161
-
2162
- seenObjects.clear();
2163
- }
2164
-
2165
- function _traverse(val, seen) {
2166
- var i, keys;
2167
- var isA = Array.isArray(val);
2168
-
2169
- if (!isA && !isObject(val) || Object.isFrozen(val) || val instanceof VNode) {
2170
- return;
2171
- }
2172
-
2173
- if (val.__ob__) {
2174
- var depId = val.__ob__.dep.id;
2175
-
2176
- if (seen.has(depId)) {
2177
- return;
2178
- }
2179
-
2180
- seen.add(depId);
2181
- }
2182
-
2183
- if (isA) {
2184
- i = val.length;
2185
-
2186
- while (i--) {
2187
- _traverse(val[i], seen);
2188
- }
2189
- } else {
2190
- keys = Object.keys(val);
2191
- i = keys.length;
2192
-
2193
- while (i--) {
2194
- _traverse(val[keys[i]], seen);
2195
- }
2196
- }
2197
- }
2198
- /* */
2199
-
2200
-
2201
- var normalizeEvent = cached(function (name) {
2202
- var passive = name.charAt(0) === '&';
2203
- name = passive ? name.slice(1) : name;
2204
- var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first
2205
-
2206
- name = once$$1 ? name.slice(1) : name;
2207
- var capture = name.charAt(0) === '!';
2208
- name = capture ? name.slice(1) : name;
2209
- return {
2210
- name: name,
2211
- once: once$$1,
2212
- capture: capture,
2213
- passive: passive
2214
- };
2215
- });
2216
-
2217
- function createFnInvoker(fns, vm) {
2218
- function invoker() {
2219
- var arguments$1 = arguments;
2220
- var fns = invoker.fns;
2221
-
2222
- if (Array.isArray(fns)) {
2223
- var cloned = fns.slice();
2224
-
2225
- for (var i = 0; i < cloned.length; i++) {
2226
- invokeWithErrorHandling(cloned[i], null, arguments$1, vm, "v-on handler");
2227
- }
2228
- } else {
2229
- // return handler return value for single handlers
2230
- return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler");
2231
- }
2232
- }
2233
-
2234
- invoker.fns = fns;
2235
- return invoker;
2236
- }
2237
-
2238
- function updateListeners(on, oldOn, add, remove$$1, createOnceHandler, vm) {
2239
- var name, def$$1, cur, old, event;
2240
-
2241
- for (name in on) {
2242
- def$$1 = cur = on[name];
2243
- old = oldOn[name];
2244
- event = normalizeEvent(name);
2245
-
2246
- if (isUndef(cur)) {
2247
- warn("Invalid handler for event \"" + event.name + "\": got " + String(cur), vm);
2248
- } else if (isUndef(old)) {
2249
- if (isUndef(cur.fns)) {
2250
- cur = on[name] = createFnInvoker(cur, vm);
2251
- }
2252
-
2253
- if (isTrue(event.once)) {
2254
- cur = on[name] = createOnceHandler(event.name, cur, event.capture);
2255
- }
2256
-
2257
- add(event.name, cur, event.capture, event.passive, event.params);
2258
- } else if (cur !== old) {
2259
- old.fns = cur;
2260
- on[name] = old;
2261
- }
2262
- }
2263
-
2264
- for (name in oldOn) {
2265
- if (isUndef(on[name])) {
2266
- event = normalizeEvent(name);
2267
- remove$$1(event.name, oldOn[name], event.capture);
2268
- }
2269
- }
2270
- }
2271
- /* */
2272
-
2273
-
2274
- function mergeVNodeHook(def, hookKey, hook) {
2275
- if (def instanceof VNode) {
2276
- def = def.data.hook || (def.data.hook = {});
2277
- }
2278
-
2279
- var invoker;
2280
- var oldHook = def[hookKey];
2281
-
2282
- function wrappedHook() {
2283
- hook.apply(this, arguments); // important: remove merged hook to ensure it's called only once
2284
- // and prevent memory leak
2285
-
2286
- remove(invoker.fns, wrappedHook);
2287
- }
2288
-
2289
- if (isUndef(oldHook)) {
2290
- // no existing hook
2291
- invoker = createFnInvoker([wrappedHook]);
2292
- } else {
2293
- /* istanbul ignore if */
2294
- if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {
2295
- // already a merged invoker
2296
- invoker = oldHook;
2297
- invoker.fns.push(wrappedHook);
2298
- } else {
2299
- // existing plain hook
2300
- invoker = createFnInvoker([oldHook, wrappedHook]);
2301
- }
2302
- }
2303
-
2304
- invoker.merged = true;
2305
- def[hookKey] = invoker;
2306
- }
2307
- /* */
2308
-
2309
-
2310
- function extractPropsFromVNodeData(data, Ctor, tag) {
2311
- // we are only extracting raw values here.
2312
- // validation and default values are handled in the child
2313
- // component itself.
2314
- var propOptions = Ctor.options.props;
2315
-
2316
- if (isUndef(propOptions)) {
2317
- return;
2318
- }
2319
-
2320
- var res = {};
2321
- var attrs = data.attrs;
2322
- var props = data.props;
2323
-
2324
- if (isDef(attrs) || isDef(props)) {
2325
- for (var key in propOptions) {
2326
- var altKey = hyphenate(key);
2327
- {
2328
- var keyInLowerCase = key.toLowerCase();
2329
-
2330
- if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {
2331
- tip("Prop \"" + keyInLowerCase + "\" is passed to component " + formatComponentName(tag || Ctor) + ", but the declared prop name is" + " \"" + key + "\". " + "Note that HTML attributes are case-insensitive and camelCased " + "props need to use their kebab-case equivalents when using in-DOM " + "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\".");
2332
- }
2333
- }
2334
- checkProp(res, props, key, altKey, true) || checkProp(res, attrs, key, altKey, false);
2335
- }
2336
- }
2337
-
2338
- return res;
2339
- }
2340
-
2341
- function checkProp(res, hash, key, altKey, preserve) {
2342
- if (isDef(hash)) {
2343
- if (hasOwn(hash, key)) {
2344
- res[key] = hash[key];
2345
-
2346
- if (!preserve) {
2347
- delete hash[key];
2348
- }
2349
-
2350
- return true;
2351
- } else if (hasOwn(hash, altKey)) {
2352
- res[key] = hash[altKey];
2353
-
2354
- if (!preserve) {
2355
- delete hash[altKey];
2356
- }
2357
-
2358
- return true;
2359
- }
2360
- }
2361
-
2362
- return false;
2363
- }
2364
- /* */
2365
- // The template compiler attempts to minimize the need for normalization by
2366
- // statically analyzing the template at compile time.
2367
- //
2368
- // For plain HTML markup, normalization can be completely skipped because the
2369
- // generated render function is guaranteed to return Array<VNode>. There are
2370
- // two cases where extra normalization is needed:
2371
- // 1. When the children contains components - because a functional component
2372
- // may return an Array instead of a single root. In this case, just a simple
2373
- // normalization is needed - if any child is an Array, we flatten the whole
2374
- // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
2375
- // because functional components already normalize their own children.
2376
-
2377
-
2378
- function simpleNormalizeChildren(children) {
2379
- for (var i = 0; i < children.length; i++) {
2380
- if (Array.isArray(children[i])) {
2381
- return Array.prototype.concat.apply([], children);
2382
- }
2383
- }
2384
-
2385
- return children;
2386
- } // 2. When the children contains constructs that always generated nested Arrays,
2387
- // e.g. <template>, <slot>, v-for, or when the children is provided by user
2388
- // with hand-written render functions / JSX. In such cases a full normalization
2389
- // is needed to cater to all possible types of children values.
2390
-
2391
-
2392
- function normalizeChildren(children) {
2393
- return isPrimitive(children) ? [createTextVNode(children)] : Array.isArray(children) ? normalizeArrayChildren(children) : undefined;
2394
- }
2395
-
2396
- function isTextNode(node) {
2397
- return isDef(node) && isDef(node.text) && isFalse(node.isComment);
2398
- }
2399
-
2400
- function normalizeArrayChildren(children, nestedIndex) {
2401
- var res = [];
2402
- var i, c, lastIndex, last;
2403
-
2404
- for (i = 0; i < children.length; i++) {
2405
- c = children[i];
2406
-
2407
- if (isUndef(c) || typeof c === 'boolean') {
2408
- continue;
2409
- }
2410
-
2411
- lastIndex = res.length - 1;
2412
- last = res[lastIndex]; // nested
2413
-
2414
- if (Array.isArray(c)) {
2415
- if (c.length > 0) {
2416
- c = normalizeArrayChildren(c, (nestedIndex || '') + "_" + i); // merge adjacent text nodes
2417
-
2418
- if (isTextNode(c[0]) && isTextNode(last)) {
2419
- res[lastIndex] = createTextVNode(last.text + c[0].text);
2420
- c.shift();
2421
- }
2422
-
2423
- res.push.apply(res, c);
2424
- }
2425
- } else if (isPrimitive(c)) {
2426
- if (isTextNode(last)) {
2427
- // merge adjacent text nodes
2428
- // this is necessary for SSR hydration because text nodes are
2429
- // essentially merged when rendered to HTML strings
2430
- res[lastIndex] = createTextVNode(last.text + c);
2431
- } else if (c !== '') {
2432
- // convert primitive to vnode
2433
- res.push(createTextVNode(c));
2434
- }
2435
- } else {
2436
- if (isTextNode(c) && isTextNode(last)) {
2437
- // merge adjacent text nodes
2438
- res[lastIndex] = createTextVNode(last.text + c.text);
2439
- } else {
2440
- // default key for nested array children (likely generated by v-for)
2441
- if (isTrue(children._isVList) && isDef(c.tag) && isUndef(c.key) && isDef(nestedIndex)) {
2442
- c.key = "__vlist" + nestedIndex + "_" + i + "__";
2443
- }
2444
-
2445
- res.push(c);
2446
- }
2447
- }
2448
- }
2449
-
2450
- return res;
2451
- }
2452
- /* */
2453
-
2454
-
2455
- function initProvide(vm) {
2456
- var provide = vm.$options.provide;
2457
-
2458
- if (provide) {
2459
- vm._provided = typeof provide === 'function' ? provide.call(vm) : provide;
2460
- }
2461
- }
2462
-
2463
- function initInjections(vm) {
2464
- var result = resolveInject(vm.$options.inject, vm);
2465
-
2466
- if (result) {
2467
- toggleObserving(false);
2468
- Object.keys(result).forEach(function (key) {
2469
- /* istanbul ignore else */
2470
- {
2471
- defineReactive$$1(vm, key, result[key], function () {
2472
- warn("Avoid mutating an injected value directly since the changes will be " + "overwritten whenever the provided component re-renders. " + "injection being mutated: \"" + key + "\"", vm);
2473
- });
2474
- }
2475
- });
2476
- toggleObserving(true);
2477
- }
2478
- }
2479
-
2480
- function resolveInject(inject, vm) {
2481
- if (inject) {
2482
- // inject is :any because flow is not smart enough to figure out cached
2483
- var result = Object.create(null);
2484
- var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject);
2485
-
2486
- for (var i = 0; i < keys.length; i++) {
2487
- var key = keys[i]; // #6574 in case the inject object is observed...
2488
-
2489
- if (key === '__ob__') {
2490
- continue;
2491
- }
2492
-
2493
- var provideKey = inject[key].from;
2494
- var source = vm;
2495
-
2496
- while (source) {
2497
- if (source._provided && hasOwn(source._provided, provideKey)) {
2498
- result[key] = source._provided[provideKey];
2499
- break;
2500
- }
2501
-
2502
- source = source.$parent;
2503
- }
2504
-
2505
- if (!source) {
2506
- if ('default' in inject[key]) {
2507
- var provideDefault = inject[key]["default"];
2508
- result[key] = typeof provideDefault === 'function' ? provideDefault.call(vm) : provideDefault;
2509
- } else {
2510
- warn("Injection \"" + key + "\" not found", vm);
2511
- }
2512
- }
2513
- }
2514
-
2515
- return result;
2516
- }
2517
- }
2518
- /* */
2519
-
2520
- /**
2521
- * Runtime helper for resolving raw children VNodes into a slot object.
2522
- */
2523
-
2524
-
2525
- function resolveSlots(children, context) {
2526
- if (!children || !children.length) {
2527
- return {};
2528
- }
2529
-
2530
- var slots = {};
2531
-
2532
- for (var i = 0, l = children.length; i < l; i++) {
2533
- var child = children[i];
2534
- var data = child.data; // remove slot attribute if the node is resolved as a Vue slot node
2535
-
2536
- if (data && data.attrs && data.attrs.slot) {
2537
- delete data.attrs.slot;
2538
- } // named slots should only be respected if the vnode was rendered in the
2539
- // same context.
2540
-
2541
-
2542
- if ((child.context === context || child.fnContext === context) && data && data.slot != null) {
2543
- var name = data.slot;
2544
- var slot = slots[name] || (slots[name] = []);
2545
-
2546
- if (child.tag === 'template') {
2547
- slot.push.apply(slot, child.children || []);
2548
- } else {
2549
- slot.push(child);
2550
- }
2551
- } else {
2552
- (slots["default"] || (slots["default"] = [])).push(child);
2553
- }
2554
- } // ignore slots that contains only whitespace
2555
-
2556
-
2557
- for (var name$1 in slots) {
2558
- if (slots[name$1].every(isWhitespace)) {
2559
- delete slots[name$1];
2560
- }
2561
- }
2562
-
2563
- return slots;
2564
- }
2565
-
2566
- function isWhitespace(node) {
2567
- return node.isComment && !node.asyncFactory || node.text === ' ';
2568
- }
2569
- /* */
2570
-
2571
-
2572
- function normalizeScopedSlots(slots, normalSlots, prevSlots) {
2573
- var res;
2574
- var hasNormalSlots = Object.keys(normalSlots).length > 0;
2575
- var isStable = slots ? !!slots.$stable : !hasNormalSlots;
2576
- var key = slots && slots.$key;
2577
-
2578
- if (!slots) {
2579
- res = {};
2580
- } else if (slots._normalized) {
2581
- // fast path 1: child component re-render only, parent did not change
2582
- return slots._normalized;
2583
- } else if (isStable && prevSlots && prevSlots !== emptyObject && key === prevSlots.$key && !hasNormalSlots && !prevSlots.$hasNormal) {
2584
- // fast path 2: stable scoped slots w/ no normal slots to proxy,
2585
- // only need to normalize once
2586
- return prevSlots;
2587
- } else {
2588
- res = {};
2589
-
2590
- for (var key$1 in slots) {
2591
- if (slots[key$1] && key$1[0] !== '$') {
2592
- res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);
2593
- }
2594
- }
2595
- } // expose normal slots on scopedSlots
2596
-
2597
-
2598
- for (var key$2 in normalSlots) {
2599
- if (!(key$2 in res)) {
2600
- res[key$2] = proxyNormalSlot(normalSlots, key$2);
2601
- }
2602
- } // avoriaz seems to mock a non-extensible $scopedSlots object
2603
- // and when that is passed down this would cause an error
2604
-
2605
-
2606
- if (slots && Object.isExtensible(slots)) {
2607
- slots._normalized = res;
2608
- }
2609
-
2610
- def(res, '$stable', isStable);
2611
- def(res, '$key', key);
2612
- def(res, '$hasNormal', hasNormalSlots);
2613
- return res;
2614
- }
2615
-
2616
- function normalizeScopedSlot(normalSlots, key, fn) {
2617
- var normalized = function normalized() {
2618
- var res = arguments.length ? fn.apply(null, arguments) : fn({});
2619
- res = res && _typeof(res) === 'object' && !Array.isArray(res) ? [res] // single vnode
2620
- : normalizeChildren(res);
2621
- return res && (res.length === 0 || res.length === 1 && res[0].isComment // #9658
2622
- ) ? undefined : res;
2623
- }; // this is a slot using the new v-slot syntax without scope. although it is
2624
- // compiled as a scoped slot, render fn users would expect it to be present
2625
- // on this.$slots because the usage is semantically a normal slot.
2626
-
2627
-
2628
- if (fn.proxy) {
2629
- Object.defineProperty(normalSlots, key, {
2630
- get: normalized,
2631
- enumerable: true,
2632
- configurable: true
2633
- });
2634
- }
2635
-
2636
- return normalized;
2637
- }
2638
-
2639
- function proxyNormalSlot(slots, key) {
2640
- return function () {
2641
- return slots[key];
2642
- };
2643
- }
2644
- /* */
2645
-
2646
- /**
2647
- * Runtime helper for rendering v-for lists.
2648
- */
2649
-
2650
-
2651
- function renderList(val, render) {
2652
- var ret, i, l, keys, key;
2653
-
2654
- if (Array.isArray(val) || typeof val === 'string') {
2655
- ret = new Array(val.length);
2656
-
2657
- for (i = 0, l = val.length; i < l; i++) {
2658
- ret[i] = render(val[i], i);
2659
- }
2660
- } else if (typeof val === 'number') {
2661
- ret = new Array(val);
2662
-
2663
- for (i = 0; i < val; i++) {
2664
- ret[i] = render(i + 1, i);
2665
- }
2666
- } else if (isObject(val)) {
2667
- if (hasSymbol && val[Symbol.iterator]) {
2668
- ret = [];
2669
- var iterator = val[Symbol.iterator]();
2670
- var result = iterator.next();
2671
-
2672
- while (!result.done) {
2673
- ret.push(render(result.value, ret.length));
2674
- result = iterator.next();
2675
- }
2676
- } else {
2677
- keys = Object.keys(val);
2678
- ret = new Array(keys.length);
2679
-
2680
- for (i = 0, l = keys.length; i < l; i++) {
2681
- key = keys[i];
2682
- ret[i] = render(val[key], key, i);
2683
- }
2684
- }
2685
- }
2686
-
2687
- if (!isDef(ret)) {
2688
- ret = [];
2689
- }
2690
-
2691
- ret._isVList = true;
2692
- return ret;
2693
- }
2694
- /* */
2695
-
2696
- /**
2697
- * Runtime helper for rendering <slot>
2698
- */
2699
-
2700
-
2701
- function renderSlot(name, fallback, props, bindObject) {
2702
- var scopedSlotFn = this.$scopedSlots[name];
2703
- var nodes;
2704
-
2705
- if (scopedSlotFn) {
2706
- // scoped slot
2707
- props = props || {};
2708
-
2709
- if (bindObject) {
2710
- if (!isObject(bindObject)) {
2711
- warn('slot v-bind without argument expects an Object', this);
2712
- }
2713
-
2714
- props = extend(extend({}, bindObject), props);
2715
- }
2716
-
2717
- nodes = scopedSlotFn(props) || fallback;
2718
- } else {
2719
- nodes = this.$slots[name] || fallback;
2720
- }
2721
-
2722
- var target = props && props.slot;
2723
-
2724
- if (target) {
2725
- return this.$createElement('template', {
2726
- slot: target
2727
- }, nodes);
2728
- } else {
2729
- return nodes;
2730
- }
2731
- }
2732
- /* */
2733
-
2734
- /**
2735
- * Runtime helper for resolving filters
2736
- */
2737
-
2738
-
2739
- function resolveFilter(id) {
2740
- return resolveAsset(this.$options, 'filters', id, true) || identity;
2741
- }
2742
- /* */
2743
-
2744
-
2745
- function isKeyNotMatch(expect, actual) {
2746
- if (Array.isArray(expect)) {
2747
- return expect.indexOf(actual) === -1;
2748
- } else {
2749
- return expect !== actual;
2750
- }
2751
- }
2752
- /**
2753
- * Runtime helper for checking keyCodes from config.
2754
- * exposed as Vue.prototype._k
2755
- * passing in eventKeyName as last argument separately for backwards compat
2756
- */
2757
-
2758
-
2759
- function checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {
2760
- var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
2761
-
2762
- if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
2763
- return isKeyNotMatch(builtInKeyName, eventKeyName);
2764
- } else if (mappedKeyCode) {
2765
- return isKeyNotMatch(mappedKeyCode, eventKeyCode);
2766
- } else if (eventKeyName) {
2767
- return hyphenate(eventKeyName) !== key;
2768
- }
2769
- }
2770
- /* */
2771
-
2772
- /**
2773
- * Runtime helper for merging v-bind="object" into a VNode's data.
2774
- */
2775
-
2776
-
2777
- function bindObjectProps(data, tag, value, asProp, isSync) {
2778
- if (value) {
2779
- if (!isObject(value)) {
2780
- warn('v-bind without argument expects an Object or Array value', this);
2781
- } else {
2782
- if (Array.isArray(value)) {
2783
- value = toObject(value);
2784
- }
2785
-
2786
- var hash;
2787
-
2788
- var loop = function loop(key) {
2789
- if (key === 'class' || key === 'style' || isReservedAttribute(key)) {
2790
- hash = data;
2791
- } else {
2792
- var type = data.attrs && data.attrs.type;
2793
- hash = asProp || config.mustUseProp(tag, type, key) ? data.domProps || (data.domProps = {}) : data.attrs || (data.attrs = {});
2794
- }
2795
-
2796
- var camelizedKey = camelize(key);
2797
- var hyphenatedKey = hyphenate(key);
2798
-
2799
- if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
2800
- hash[key] = value[key];
2801
-
2802
- if (isSync) {
2803
- var on = data.on || (data.on = {});
2804
-
2805
- on["update:" + key] = function ($event) {
2806
- value[key] = $event;
2807
- };
2808
- }
2809
- }
2810
- };
2811
-
2812
- for (var key in value) {
2813
- loop(key);
2814
- }
2815
- }
2816
- }
2817
-
2818
- return data;
2819
- }
2820
- /* */
2821
-
2822
- /**
2823
- * Runtime helper for rendering static trees.
2824
- */
2825
-
2826
-
2827
- function renderStatic(index, isInFor) {
2828
- var cached = this._staticTrees || (this._staticTrees = []);
2829
- var tree = cached[index]; // if has already-rendered static tree and not inside v-for,
2830
- // we can reuse the same tree.
2831
-
2832
- if (tree && !isInFor) {
2833
- return tree;
2834
- } // otherwise, render a fresh tree.
2835
-
2836
-
2837
- tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, null, this // for render fns generated for functional component templates
2838
- );
2839
- markStatic(tree, "__static__" + index, false);
2840
- return tree;
2841
- }
2842
- /**
2843
- * Runtime helper for v-once.
2844
- * Effectively it means marking the node as static with a unique key.
2845
- */
2846
-
2847
-
2848
- function markOnce(tree, index, key) {
2849
- markStatic(tree, "__once__" + index + (key ? "_" + key : ""), true);
2850
- return tree;
2851
- }
2852
-
2853
- function markStatic(tree, key, isOnce) {
2854
- if (Array.isArray(tree)) {
2855
- for (var i = 0; i < tree.length; i++) {
2856
- if (tree[i] && typeof tree[i] !== 'string') {
2857
- markStaticNode(tree[i], key + "_" + i, isOnce);
2858
- }
2859
- }
2860
- } else {
2861
- markStaticNode(tree, key, isOnce);
2862
- }
2863
- }
2864
-
2865
- function markStaticNode(node, key, isOnce) {
2866
- node.isStatic = true;
2867
- node.key = key;
2868
- node.isOnce = isOnce;
2869
- }
2870
- /* */
2871
-
2872
-
2873
- function bindObjectListeners(data, value) {
2874
- if (value) {
2875
- if (!isPlainObject(value)) {
2876
- warn('v-on without argument expects an Object value', this);
2877
- } else {
2878
- var on = data.on = data.on ? extend({}, data.on) : {};
2879
-
2880
- for (var key in value) {
2881
- var existing = on[key];
2882
- var ours = value[key];
2883
- on[key] = existing ? [].concat(existing, ours) : ours;
2884
- }
2885
- }
2886
- }
2887
-
2888
- return data;
2889
- }
2890
- /* */
2891
-
2892
-
2893
- function resolveScopedSlots(fns, // see flow/vnode
2894
- res, // the following are added in 2.6
2895
- hasDynamicKeys, contentHashKey) {
2896
- res = res || {
2897
- $stable: !hasDynamicKeys
2898
- };
2899
-
2900
- for (var i = 0; i < fns.length; i++) {
2901
- var slot = fns[i];
2902
-
2903
- if (Array.isArray(slot)) {
2904
- resolveScopedSlots(slot, res, hasDynamicKeys);
2905
- } else if (slot) {
2906
- // marker for reverse proxying v-slot without scope on this.$slots
2907
- if (slot.proxy) {
2908
- slot.fn.proxy = true;
2909
- }
2910
-
2911
- res[slot.key] = slot.fn;
2912
- }
2913
- }
2914
-
2915
- if (contentHashKey) {
2916
- res.$key = contentHashKey;
2917
- }
2918
-
2919
- return res;
2920
- }
2921
- /* */
2922
-
2923
-
2924
- function bindDynamicKeys(baseObj, values) {
2925
- for (var i = 0; i < values.length; i += 2) {
2926
- var key = values[i];
2927
-
2928
- if (typeof key === 'string' && key) {
2929
- baseObj[values[i]] = values[i + 1];
2930
- } else if (key !== '' && key !== null) {
2931
- // null is a special value for explicitly removing a binding
2932
- warn("Invalid value for dynamic directive argument (expected string or null): " + key, this);
2933
- }
2934
- }
2935
-
2936
- return baseObj;
2937
- } // helper to dynamically append modifier runtime markers to event names.
2938
- // ensure only append when value is already string, otherwise it will be cast
2939
- // to string and cause the type check to miss.
2940
-
2941
-
2942
- function prependModifier(value, symbol) {
2943
- return typeof value === 'string' ? symbol + value : value;
2944
- }
2945
- /* */
2946
-
2947
-
2948
- function installRenderHelpers(target) {
2949
- target._o = markOnce;
2950
- target._n = toNumber;
2951
- target._s = toString;
2952
- target._l = renderList;
2953
- target._t = renderSlot;
2954
- target._q = looseEqual;
2955
- target._i = looseIndexOf;
2956
- target._m = renderStatic;
2957
- target._f = resolveFilter;
2958
- target._k = checkKeyCodes;
2959
- target._b = bindObjectProps;
2960
- target._v = createTextVNode;
2961
- target._e = createEmptyVNode;
2962
- target._u = resolveScopedSlots;
2963
- target._g = bindObjectListeners;
2964
- target._d = bindDynamicKeys;
2965
- target._p = prependModifier;
2966
- }
2967
- /* */
2968
-
2969
-
2970
- function FunctionalRenderContext(data, props, children, parent, Ctor) {
2971
- var this$1 = this;
2972
- var options = Ctor.options; // ensure the createElement function in functional components
2973
- // gets a unique context - this is necessary for correct named slot check
2974
-
2975
- var contextVm;
2976
-
2977
- if (hasOwn(parent, '_uid')) {
2978
- contextVm = Object.create(parent); // $flow-disable-line
2979
-
2980
- contextVm._original = parent;
2981
- } else {
2982
- // the context vm passed in is a functional context as well.
2983
- // in this case we want to make sure we are able to get a hold to the
2984
- // real context instance.
2985
- contextVm = parent; // $flow-disable-line
2986
-
2987
- parent = parent._original;
2988
- }
2989
-
2990
- var isCompiled = isTrue(options._compiled);
2991
- var needNormalization = !isCompiled;
2992
- this.data = data;
2993
- this.props = props;
2994
- this.children = children;
2995
- this.parent = parent;
2996
- this.listeners = data.on || emptyObject;
2997
- this.injections = resolveInject(options.inject, parent);
2998
-
2999
- this.slots = function () {
3000
- if (!this$1.$slots) {
3001
- normalizeScopedSlots(data.scopedSlots, this$1.$slots = resolveSlots(children, parent));
3002
- }
3003
-
3004
- return this$1.$slots;
3005
- };
3006
-
3007
- Object.defineProperty(this, 'scopedSlots', {
3008
- enumerable: true,
3009
- get: function get() {
3010
- return normalizeScopedSlots(data.scopedSlots, this.slots());
3011
- }
3012
- }); // support for compiled functional template
3013
-
3014
- if (isCompiled) {
3015
- // exposing $options for renderStatic()
3016
- this.$options = options; // pre-resolve slots for renderSlot()
3017
-
3018
- this.$slots = this.slots();
3019
- this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);
3020
- }
3021
-
3022
- if (options._scopeId) {
3023
- this._c = function (a, b, c, d) {
3024
- var vnode = createElement(contextVm, a, b, c, d, needNormalization);
3025
-
3026
- if (vnode && !Array.isArray(vnode)) {
3027
- vnode.fnScopeId = options._scopeId;
3028
- vnode.fnContext = parent;
3029
- }
3030
-
3031
- return vnode;
3032
- };
3033
- } else {
3034
- this._c = function (a, b, c, d) {
3035
- return createElement(contextVm, a, b, c, d, needNormalization);
3036
- };
3037
- }
3038
- }
3039
-
3040
- installRenderHelpers(FunctionalRenderContext.prototype);
3041
-
3042
- function createFunctionalComponent(Ctor, propsData, data, contextVm, children) {
3043
- var options = Ctor.options;
3044
- var props = {};
3045
- var propOptions = options.props;
3046
-
3047
- if (isDef(propOptions)) {
3048
- for (var key in propOptions) {
3049
- props[key] = validateProp(key, propOptions, propsData || emptyObject);
3050
- }
3051
- } else {
3052
- if (isDef(data.attrs)) {
3053
- mergeProps(props, data.attrs);
3054
- }
3055
-
3056
- if (isDef(data.props)) {
3057
- mergeProps(props, data.props);
3058
- }
3059
- }
3060
-
3061
- var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor);
3062
- var vnode = options.render.call(null, renderContext._c, renderContext);
3063
-
3064
- if (vnode instanceof VNode) {
3065
- return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext);
3066
- } else if (Array.isArray(vnode)) {
3067
- var vnodes = normalizeChildren(vnode) || [];
3068
- var res = new Array(vnodes.length);
3069
-
3070
- for (var i = 0; i < vnodes.length; i++) {
3071
- res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);
3072
- }
3073
-
3074
- return res;
3075
- }
3076
- }
3077
-
3078
- function cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) {
3079
- // #7817 clone node before setting fnContext, otherwise if the node is reused
3080
- // (e.g. it was from a cached normal slot) the fnContext causes named slots
3081
- // that should not be matched to match.
3082
- var clone = cloneVNode(vnode);
3083
- clone.fnContext = contextVm;
3084
- clone.fnOptions = options;
3085
- {
3086
- (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;
3087
- }
3088
-
3089
- if (data.slot) {
3090
- (clone.data || (clone.data = {})).slot = data.slot;
3091
- }
3092
-
3093
- return clone;
3094
- }
3095
-
3096
- function mergeProps(to, from) {
3097
- for (var key in from) {
3098
- to[camelize(key)] = from[key];
3099
- }
3100
- }
3101
- /* */
3102
-
3103
- /* */
3104
-
3105
- /* */
3106
-
3107
- /* */
3108
- // inline hooks to be invoked on component VNodes during patch
3109
-
3110
-
3111
- var componentVNodeHooks = {
3112
- init: function init(vnode, hydrating) {
3113
- if (vnode.componentInstance && !vnode.componentInstance._isDestroyed && vnode.data.keepAlive) {
3114
- // kept-alive components, treat as a patch
3115
- var mountedNode = vnode; // work around flow
3116
-
3117
- componentVNodeHooks.prepatch(mountedNode, mountedNode);
3118
- } else {
3119
- var child = vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance);
3120
- child.$mount(hydrating ? vnode.elm : undefined, hydrating);
3121
- }
3122
- },
3123
- prepatch: function prepatch(oldVnode, vnode) {
3124
- var options = vnode.componentOptions;
3125
- var child = vnode.componentInstance = oldVnode.componentInstance;
3126
- updateChildComponent(child, options.propsData, // updated props
3127
- options.listeners, // updated listeners
3128
- vnode, // new parent vnode
3129
- options.children // new children
3130
- );
3131
- },
3132
- insert: function insert(vnode) {
3133
- var context = vnode.context;
3134
- var componentInstance = vnode.componentInstance;
3135
-
3136
- if (!componentInstance._isMounted) {
3137
- componentInstance._isMounted = true;
3138
- callHook(componentInstance, 'mounted');
3139
- }
3140
-
3141
- if (vnode.data.keepAlive) {
3142
- if (context._isMounted) {
3143
- // vue-router#1212
3144
- // During updates, a kept-alive component's child components may
3145
- // change, so directly walking the tree here may call activated hooks
3146
- // on incorrect children. Instead we push them into a queue which will
3147
- // be processed after the whole patch process ended.
3148
- queueActivatedComponent(componentInstance);
3149
- } else {
3150
- activateChildComponent(componentInstance, true
3151
- /* direct */
3152
- );
3153
- }
3154
- }
3155
- },
3156
- destroy: function destroy(vnode) {
3157
- var componentInstance = vnode.componentInstance;
3158
-
3159
- if (!componentInstance._isDestroyed) {
3160
- if (!vnode.data.keepAlive) {
3161
- componentInstance.$destroy();
3162
- } else {
3163
- deactivateChildComponent(componentInstance, true
3164
- /* direct */
3165
- );
3166
- }
3167
- }
3168
- }
3169
- };
3170
- var hooksToMerge = Object.keys(componentVNodeHooks);
3171
-
3172
- function createComponent(Ctor, data, context, children, tag) {
3173
- if (isUndef(Ctor)) {
3174
- return;
3175
- }
3176
-
3177
- var baseCtor = context.$options._base; // plain options object: turn it into a constructor
3178
-
3179
- if (isObject(Ctor)) {
3180
- Ctor = baseCtor.extend(Ctor);
3181
- } // if at this stage it's not a constructor or an async component factory,
3182
- // reject.
3183
-
3184
-
3185
- if (typeof Ctor !== 'function') {
3186
- {
3187
- warn("Invalid Component definition: " + String(Ctor), context);
3188
- }
3189
- return;
3190
- } // async component
3191
-
3192
-
3193
- var asyncFactory;
3194
-
3195
- if (isUndef(Ctor.cid)) {
3196
- asyncFactory = Ctor;
3197
- Ctor = resolveAsyncComponent(asyncFactory, baseCtor);
3198
-
3199
- if (Ctor === undefined) {
3200
- // return a placeholder node for async component, which is rendered
3201
- // as a comment node but preserves all the raw information for the node.
3202
- // the information will be used for async server-rendering and hydration.
3203
- return createAsyncPlaceholder(asyncFactory, data, context, children, tag);
3204
- }
3205
- }
3206
-
3207
- data = data || {}; // resolve constructor options in case global mixins are applied after
3208
- // component constructor creation
3209
-
3210
- resolveConstructorOptions(Ctor); // transform component v-model data into props & events
3211
-
3212
- if (isDef(data.model)) {
3213
- transformModel(Ctor.options, data);
3214
- } // extract props
3215
-
3216
-
3217
- var propsData = extractPropsFromVNodeData(data, Ctor, tag); // functional component
3218
-
3219
- if (isTrue(Ctor.options.functional)) {
3220
- return createFunctionalComponent(Ctor, propsData, data, context, children);
3221
- } // extract listeners, since these needs to be treated as
3222
- // child component listeners instead of DOM listeners
3223
-
3224
-
3225
- var listeners = data.on; // replace with listeners with .native modifier
3226
- // so it gets processed during parent component patch.
3227
-
3228
- data.on = data.nativeOn;
3229
-
3230
- if (isTrue(Ctor.options["abstract"])) {
3231
- // abstract components do not keep anything
3232
- // other than props & listeners & slot
3233
- // work around flow
3234
- var slot = data.slot;
3235
- data = {};
3236
-
3237
- if (slot) {
3238
- data.slot = slot;
3239
- }
3240
- } // install component management hooks onto the placeholder node
3241
-
3242
-
3243
- installComponentHooks(data); // return a placeholder vnode
3244
-
3245
- var name = Ctor.options.name || tag;
3246
- var vnode = new VNode("vue-component-" + Ctor.cid + (name ? "-" + name : ''), data, undefined, undefined, undefined, context, {
3247
- Ctor: Ctor,
3248
- propsData: propsData,
3249
- listeners: listeners,
3250
- tag: tag,
3251
- children: children
3252
- }, asyncFactory);
3253
- return vnode;
3254
- }
3255
-
3256
- function createComponentInstanceForVnode(vnode, // we know it's MountedComponentVNode but flow doesn't
3257
- parent // activeInstance in lifecycle state
3258
- ) {
3259
- var options = {
3260
- _isComponent: true,
3261
- _parentVnode: vnode,
3262
- parent: parent
3263
- }; // check inline-template render functions
3264
-
3265
- var inlineTemplate = vnode.data.inlineTemplate;
3266
-
3267
- if (isDef(inlineTemplate)) {
3268
- options.render = inlineTemplate.render;
3269
- options.staticRenderFns = inlineTemplate.staticRenderFns;
3270
- }
3271
-
3272
- return new vnode.componentOptions.Ctor(options);
3273
- }
3274
-
3275
- function installComponentHooks(data) {
3276
- var hooks = data.hook || (data.hook = {});
3277
-
3278
- for (var i = 0; i < hooksToMerge.length; i++) {
3279
- var key = hooksToMerge[i];
3280
- var existing = hooks[key];
3281
- var toMerge = componentVNodeHooks[key];
3282
-
3283
- if (existing !== toMerge && !(existing && existing._merged)) {
3284
- hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;
3285
- }
3286
- }
3287
- }
3288
-
3289
- function mergeHook$1(f1, f2) {
3290
- var merged = function merged(a, b) {
3291
- // flow complains about extra args which is why we use any
3292
- f1(a, b);
3293
- f2(a, b);
3294
- };
3295
-
3296
- merged._merged = true;
3297
- return merged;
3298
- } // transform component v-model info (value and callback) into
3299
- // prop and event handler respectively.
3300
-
3301
-
3302
- function transformModel(options, data) {
3303
- var prop = options.model && options.model.prop || 'value';
3304
- var event = options.model && options.model.event || 'input';
3305
- (data.attrs || (data.attrs = {}))[prop] = data.model.value;
3306
- var on = data.on || (data.on = {});
3307
- var existing = on[event];
3308
- var callback = data.model.callback;
3309
-
3310
- if (isDef(existing)) {
3311
- if (Array.isArray(existing) ? existing.indexOf(callback) === -1 : existing !== callback) {
3312
- on[event] = [callback].concat(existing);
3313
- }
3314
- } else {
3315
- on[event] = callback;
3316
- }
3317
- }
3318
- /* */
3319
-
3320
-
3321
- var SIMPLE_NORMALIZE = 1;
3322
- var ALWAYS_NORMALIZE = 2; // wrapper function for providing a more flexible interface
3323
- // without getting yelled at by flow
3324
-
3325
- function createElement(context, tag, data, children, normalizationType, alwaysNormalize) {
3326
- if (Array.isArray(data) || isPrimitive(data)) {
3327
- normalizationType = children;
3328
- children = data;
3329
- data = undefined;
3330
- }
3331
-
3332
- if (isTrue(alwaysNormalize)) {
3333
- normalizationType = ALWAYS_NORMALIZE;
3334
- }
3335
-
3336
- return _createElement(context, tag, data, children, normalizationType);
3337
- }
3338
-
3339
- function _createElement(context, tag, data, children, normalizationType) {
3340
- if (isDef(data) && isDef(data.__ob__)) {
3341
- warn("Avoid using observed data object as vnode data: " + JSON.stringify(data) + "\n" + 'Always create fresh vnode data objects in each render!', context);
3342
- return createEmptyVNode();
3343
- } // object syntax in v-bind
3344
-
3345
-
3346
- if (isDef(data) && isDef(data.is)) {
3347
- tag = data.is;
3348
- }
3349
-
3350
- if (!tag) {
3351
- // in case of component :is set to falsy value
3352
- return createEmptyVNode();
3353
- } // warn against non-primitive key
3354
-
3355
-
3356
- if (isDef(data) && isDef(data.key) && !isPrimitive(data.key)) {
3357
- {
3358
- warn('Avoid using non-primitive value as key, ' + 'use string/number value instead.', context);
3359
- }
3360
- } // support single function children as default scoped slot
3361
-
3362
-
3363
- if (Array.isArray(children) && typeof children[0] === 'function') {
3364
- data = data || {};
3365
- data.scopedSlots = {
3366
- "default": children[0]
3367
- };
3368
- children.length = 0;
3369
- }
3370
-
3371
- if (normalizationType === ALWAYS_NORMALIZE) {
3372
- children = normalizeChildren(children);
3373
- } else if (normalizationType === SIMPLE_NORMALIZE) {
3374
- children = simpleNormalizeChildren(children);
3375
- }
3376
-
3377
- var vnode, ns;
3378
-
3379
- if (typeof tag === 'string') {
3380
- var Ctor;
3381
- ns = context.$vnode && context.$vnode.ns || config.getTagNamespace(tag);
3382
-
3383
- if (config.isReservedTag(tag)) {
3384
- // platform built-in elements
3385
- if (isDef(data) && isDef(data.nativeOn)) {
3386
- warn("The .native modifier for v-on is only valid on components but it was used on <" + tag + ">.", context);
3387
- }
3388
-
3389
- vnode = new VNode(config.parsePlatformTagName(tag), data, children, undefined, undefined, context);
3390
- } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {
3391
- // component
3392
- vnode = createComponent(Ctor, data, context, children, tag);
3393
- } else {
3394
- // unknown or unlisted namespaced elements
3395
- // check at runtime because it may get assigned a namespace when its
3396
- // parent normalizes children
3397
- vnode = new VNode(tag, data, children, undefined, undefined, context);
3398
- }
3399
- } else {
3400
- // direct component options / constructor
3401
- vnode = createComponent(tag, data, context, children);
3402
- }
3403
-
3404
- if (Array.isArray(vnode)) {
3405
- return vnode;
3406
- } else if (isDef(vnode)) {
3407
- if (isDef(ns)) {
3408
- applyNS(vnode, ns);
3409
- }
3410
-
3411
- if (isDef(data)) {
3412
- registerDeepBindings(data);
3413
- }
3414
-
3415
- return vnode;
3416
- } else {
3417
- return createEmptyVNode();
3418
- }
3419
- }
3420
-
3421
- function applyNS(vnode, ns, force) {
3422
- vnode.ns = ns;
3423
-
3424
- if (vnode.tag === 'foreignObject') {
3425
- // use default namespace inside foreignObject
3426
- ns = undefined;
3427
- force = true;
3428
- }
3429
-
3430
- if (isDef(vnode.children)) {
3431
- for (var i = 0, l = vnode.children.length; i < l; i++) {
3432
- var child = vnode.children[i];
3433
-
3434
- if (isDef(child.tag) && (isUndef(child.ns) || isTrue(force) && child.tag !== 'svg')) {
3435
- applyNS(child, ns, force);
3436
- }
3437
- }
3438
- }
3439
- } // ref #5318
3440
- // necessary to ensure parent re-render when deep bindings like :style and
3441
- // :class are used on slot nodes
3442
-
3443
-
3444
- function registerDeepBindings(data) {
3445
- if (isObject(data.style)) {
3446
- traverse(data.style);
3447
- }
3448
-
3449
- if (isObject(data["class"])) {
3450
- traverse(data["class"]);
3451
- }
3452
- }
3453
- /* */
3454
-
3455
-
3456
- function initRender(vm) {
3457
- vm._vnode = null; // the root of the child tree
3458
-
3459
- vm._staticTrees = null; // v-once cached trees
3460
-
3461
- var options = vm.$options;
3462
- var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree
3463
-
3464
- var renderContext = parentVnode && parentVnode.context;
3465
- vm.$slots = resolveSlots(options._renderChildren, renderContext);
3466
- vm.$scopedSlots = emptyObject; // bind the createElement fn to this instance
3467
- // so that we get proper render context inside it.
3468
- // args order: tag, data, children, normalizationType, alwaysNormalize
3469
- // internal version is used by render functions compiled from templates
3470
-
3471
- vm._c = function (a, b, c, d) {
3472
- return createElement(vm, a, b, c, d, false);
3473
- }; // normalization is always applied for the public version, used in
3474
- // user-written render functions.
3475
-
3476
-
3477
- vm.$createElement = function (a, b, c, d) {
3478
- return createElement(vm, a, b, c, d, true);
3479
- }; // $attrs & $listeners are exposed for easier HOC creation.
3480
- // they need to be reactive so that HOCs using them are always updated
3481
-
3482
-
3483
- var parentData = parentVnode && parentVnode.data;
3484
- /* istanbul ignore else */
3485
-
3486
- {
3487
- defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {
3488
- !isUpdatingChildComponent && warn("$attrs is readonly.", vm);
3489
- }, true);
3490
- defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {
3491
- !isUpdatingChildComponent && warn("$listeners is readonly.", vm);
3492
- }, true);
3493
- }
3494
- }
3495
-
3496
- var currentRenderingInstance = null;
3497
-
3498
- function renderMixin(Vue) {
3499
- // install runtime convenience helpers
3500
- installRenderHelpers(Vue.prototype);
3501
-
3502
- Vue.prototype.$nextTick = function (fn) {
3503
- return nextTick(fn, this);
3504
- };
3505
-
3506
- Vue.prototype._render = function () {
3507
- var vm = this;
3508
- var ref = vm.$options;
3509
- var render = ref.render;
3510
- var _parentVnode = ref._parentVnode;
3511
-
3512
- if (_parentVnode) {
3513
- vm.$scopedSlots = normalizeScopedSlots(_parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots);
3514
- } // set parent vnode. this allows render functions to have access
3515
- // to the data on the placeholder node.
3516
-
3517
-
3518
- vm.$vnode = _parentVnode; // render self
3519
-
3520
- var vnode;
3521
-
3522
- try {
3523
- // There's no need to maintain a stack because all render fns are called
3524
- // separately from one another. Nested component's render fns are called
3525
- // when parent component is patched.
3526
- currentRenderingInstance = vm;
3527
- vnode = render.call(vm._renderProxy, vm.$createElement);
3528
- } catch (e) {
3529
- handleError(e, vm, "render"); // return error render result,
3530
- // or previous vnode to prevent render error causing blank component
3531
-
3532
- /* istanbul ignore else */
3533
-
3534
- if (vm.$options.renderError) {
3535
- try {
3536
- vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);
3537
- } catch (e) {
3538
- handleError(e, vm, "renderError");
3539
- vnode = vm._vnode;
3540
- }
3541
- } else {
3542
- vnode = vm._vnode;
3543
- }
3544
- } finally {
3545
- currentRenderingInstance = null;
3546
- } // if the returned array contains only a single node, allow it
3547
-
3548
-
3549
- if (Array.isArray(vnode) && vnode.length === 1) {
3550
- vnode = vnode[0];
3551
- } // return empty vnode in case the render function errored out
3552
-
3553
-
3554
- if (!(vnode instanceof VNode)) {
3555
- if (Array.isArray(vnode)) {
3556
- warn('Multiple root nodes returned from render function. Render function ' + 'should return a single root node.', vm);
3557
- }
3558
-
3559
- vnode = createEmptyVNode();
3560
- } // set parent
3561
-
3562
-
3563
- vnode.parent = _parentVnode;
3564
- return vnode;
3565
- };
3566
- }
3567
- /* */
3568
-
3569
-
3570
- function ensureCtor(comp, base) {
3571
- if (comp.__esModule || hasSymbol && comp[Symbol.toStringTag] === 'Module') {
3572
- comp = comp["default"];
3573
- }
3574
-
3575
- return isObject(comp) ? base.extend(comp) : comp;
3576
- }
3577
-
3578
- function createAsyncPlaceholder(factory, data, context, children, tag) {
3579
- var node = createEmptyVNode();
3580
- node.asyncFactory = factory;
3581
- node.asyncMeta = {
3582
- data: data,
3583
- context: context,
3584
- children: children,
3585
- tag: tag
3586
- };
3587
- return node;
3588
- }
3589
-
3590
- function resolveAsyncComponent(factory, baseCtor) {
3591
- if (isTrue(factory.error) && isDef(factory.errorComp)) {
3592
- return factory.errorComp;
3593
- }
3594
-
3595
- if (isDef(factory.resolved)) {
3596
- return factory.resolved;
3597
- }
3598
-
3599
- var owner = currentRenderingInstance;
3600
-
3601
- if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
3602
- // already pending
3603
- factory.owners.push(owner);
3604
- }
3605
-
3606
- if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
3607
- return factory.loadingComp;
3608
- }
3609
-
3610
- if (owner && !isDef(factory.owners)) {
3611
- var owners = factory.owners = [owner];
3612
- var sync = true;
3613
- var timerLoading = null;
3614
- var timerTimeout = null;
3615
- owner.$on('hook:destroyed', function () {
3616
- return remove(owners, owner);
3617
- });
3618
-
3619
- var forceRender = function forceRender(renderCompleted) {
3620
- for (var i = 0, l = owners.length; i < l; i++) {
3621
- owners[i].$forceUpdate();
3622
- }
3623
-
3624
- if (renderCompleted) {
3625
- owners.length = 0;
3626
-
3627
- if (timerLoading !== null) {
3628
- clearTimeout(timerLoading);
3629
- timerLoading = null;
3630
- }
3631
-
3632
- if (timerTimeout !== null) {
3633
- clearTimeout(timerTimeout);
3634
- timerTimeout = null;
3635
- }
3636
- }
3637
- };
3638
-
3639
- var resolve = once(function (res) {
3640
- // cache resolved
3641
- factory.resolved = ensureCtor(res, baseCtor); // invoke callbacks only if this is not a synchronous resolve
3642
- // (async resolves are shimmed as synchronous during SSR)
3643
-
3644
- if (!sync) {
3645
- forceRender(true);
3646
- } else {
3647
- owners.length = 0;
3648
- }
3649
- });
3650
- var reject = once(function (reason) {
3651
- warn("Failed to resolve async component: " + String(factory) + (reason ? "\nReason: " + reason : ''));
3652
-
3653
- if (isDef(factory.errorComp)) {
3654
- factory.error = true;
3655
- forceRender(true);
3656
- }
3657
- });
3658
- var res = factory(resolve, reject);
3659
-
3660
- if (isObject(res)) {
3661
- if (isPromise(res)) {
3662
- // () => Promise
3663
- if (isUndef(factory.resolved)) {
3664
- res.then(resolve, reject);
3665
- }
3666
- } else if (isPromise(res.component)) {
3667
- res.component.then(resolve, reject);
3668
-
3669
- if (isDef(res.error)) {
3670
- factory.errorComp = ensureCtor(res.error, baseCtor);
3671
- }
3672
-
3673
- if (isDef(res.loading)) {
3674
- factory.loadingComp = ensureCtor(res.loading, baseCtor);
3675
-
3676
- if (res.delay === 0) {
3677
- factory.loading = true;
3678
- } else {
3679
- timerLoading = setTimeout(function () {
3680
- timerLoading = null;
3681
-
3682
- if (isUndef(factory.resolved) && isUndef(factory.error)) {
3683
- factory.loading = true;
3684
- forceRender(false);
3685
- }
3686
- }, res.delay || 200);
3687
- }
3688
- }
3689
-
3690
- if (isDef(res.timeout)) {
3691
- timerTimeout = setTimeout(function () {
3692
- timerTimeout = null;
3693
-
3694
- if (isUndef(factory.resolved)) {
3695
- reject("timeout (" + res.timeout + "ms)");
3696
- }
3697
- }, res.timeout);
3698
- }
3699
- }
3700
- }
3701
-
3702
- sync = false; // return in case resolved synchronously
3703
-
3704
- return factory.loading ? factory.loadingComp : factory.resolved;
3705
- }
3706
- }
3707
- /* */
3708
-
3709
-
3710
- function isAsyncPlaceholder(node) {
3711
- return node.isComment && node.asyncFactory;
3712
- }
3713
- /* */
3714
-
3715
-
3716
- function getFirstComponentChild(children) {
3717
- if (Array.isArray(children)) {
3718
- for (var i = 0; i < children.length; i++) {
3719
- var c = children[i];
3720
-
3721
- if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {
3722
- return c;
3723
- }
3724
- }
3725
- }
3726
- }
3727
- /* */
3728
-
3729
- /* */
3730
-
3731
-
3732
- function initEvents(vm) {
3733
- vm._events = Object.create(null);
3734
- vm._hasHookEvent = false; // init parent attached events
3735
-
3736
- var listeners = vm.$options._parentListeners;
3737
-
3738
- if (listeners) {
3739
- updateComponentListeners(vm, listeners);
3740
- }
3741
- }
3742
-
3743
- var target;
3744
-
3745
- function add(event, fn) {
3746
- target.$on(event, fn);
3747
- }
3748
-
3749
- function remove$1(event, fn) {
3750
- target.$off(event, fn);
3751
- }
3752
-
3753
- function createOnceHandler(event, fn) {
3754
- var _target = target;
3755
- return function onceHandler() {
3756
- var res = fn.apply(null, arguments);
3757
-
3758
- if (res !== null) {
3759
- _target.$off(event, onceHandler);
3760
- }
3761
- };
3762
- }
3763
-
3764
- function updateComponentListeners(vm, listeners, oldListeners) {
3765
- target = vm;
3766
- updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);
3767
- target = undefined;
3768
- }
3769
-
3770
- function eventsMixin(Vue) {
3771
- var hookRE = /^hook:/;
3772
-
3773
- Vue.prototype.$on = function (event, fn) {
3774
- var vm = this;
3775
-
3776
- if (Array.isArray(event)) {
3777
- for (var i = 0, l = event.length; i < l; i++) {
3778
- vm.$on(event[i], fn);
3779
- }
3780
- } else {
3781
- (vm._events[event] || (vm._events[event] = [])).push(fn); // optimize hook:event cost by using a boolean flag marked at registration
3782
- // instead of a hash lookup
3783
-
3784
- if (hookRE.test(event)) {
3785
- vm._hasHookEvent = true;
3786
- }
3787
- }
3788
-
3789
- return vm;
3790
- };
3791
-
3792
- Vue.prototype.$once = function (event, fn) {
3793
- var vm = this;
3794
-
3795
- function on() {
3796
- vm.$off(event, on);
3797
- fn.apply(vm, arguments);
3798
- }
3799
-
3800
- on.fn = fn;
3801
- vm.$on(event, on);
3802
- return vm;
3803
- };
3804
-
3805
- Vue.prototype.$off = function (event, fn) {
3806
- var vm = this; // all
3807
-
3808
- if (!arguments.length) {
3809
- vm._events = Object.create(null);
3810
- return vm;
3811
- } // array of events
3812
-
3813
-
3814
- if (Array.isArray(event)) {
3815
- for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {
3816
- vm.$off(event[i$1], fn);
3817
- }
3818
-
3819
- return vm;
3820
- } // specific event
3821
-
3822
-
3823
- var cbs = vm._events[event];
3824
-
3825
- if (!cbs) {
3826
- return vm;
3827
- }
3828
-
3829
- if (!fn) {
3830
- vm._events[event] = null;
3831
- return vm;
3832
- } // specific handler
3833
-
3834
-
3835
- var cb;
3836
- var i = cbs.length;
3837
-
3838
- while (i--) {
3839
- cb = cbs[i];
3840
-
3841
- if (cb === fn || cb.fn === fn) {
3842
- cbs.splice(i, 1);
3843
- break;
3844
- }
3845
- }
3846
-
3847
- return vm;
3848
- };
3849
-
3850
- Vue.prototype.$emit = function (event) {
3851
- var vm = this;
3852
- {
3853
- var lowerCaseEvent = event.toLowerCase();
3854
-
3855
- if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {
3856
- tip("Event \"" + lowerCaseEvent + "\" is emitted in component " + formatComponentName(vm) + " but the handler is registered for \"" + event + "\". " + "Note that HTML attributes are case-insensitive and you cannot use " + "v-on to listen to camelCase events when using in-DOM templates. " + "You should probably use \"" + hyphenate(event) + "\" instead of \"" + event + "\".");
3857
- }
3858
- }
3859
- var cbs = vm._events[event];
3860
-
3861
- if (cbs) {
3862
- cbs = cbs.length > 1 ? toArray(cbs) : cbs;
3863
- var args = toArray(arguments, 1);
3864
- var info = "event handler for \"" + event + "\"";
3865
-
3866
- for (var i = 0, l = cbs.length; i < l; i++) {
3867
- invokeWithErrorHandling(cbs[i], vm, args, vm, info);
3868
- }
3869
- }
3870
-
3871
- return vm;
3872
- };
3873
- }
3874
- /* */
3875
-
3876
-
3877
- var activeInstance = null;
3878
- var isUpdatingChildComponent = false;
3879
-
3880
- function setActiveInstance(vm) {
3881
- var prevActiveInstance = activeInstance;
3882
- activeInstance = vm;
3883
- return function () {
3884
- activeInstance = prevActiveInstance;
3885
- };
3886
- }
3887
-
3888
- function initLifecycle(vm) {
3889
- var options = vm.$options; // locate first non-abstract parent
3890
-
3891
- var parent = options.parent;
3892
-
3893
- if (parent && !options["abstract"]) {
3894
- while (parent.$options["abstract"] && parent.$parent) {
3895
- parent = parent.$parent;
3896
- }
3897
-
3898
- parent.$children.push(vm);
3899
- }
3900
-
3901
- vm.$parent = parent;
3902
- vm.$root = parent ? parent.$root : vm;
3903
- vm.$children = [];
3904
- vm.$refs = {};
3905
- vm._watcher = null;
3906
- vm._inactive = null;
3907
- vm._directInactive = false;
3908
- vm._isMounted = false;
3909
- vm._isDestroyed = false;
3910
- vm._isBeingDestroyed = false;
3911
- }
3912
-
3913
- function lifecycleMixin(Vue) {
3914
- Vue.prototype._update = function (vnode, hydrating) {
3915
- var vm = this;
3916
- var prevEl = vm.$el;
3917
- var prevVnode = vm._vnode;
3918
- var restoreActiveInstance = setActiveInstance(vm);
3919
- vm._vnode = vnode; // Vue.prototype.__patch__ is injected in entry points
3920
- // based on the rendering backend used.
3921
-
3922
- if (!prevVnode) {
3923
- // initial render
3924
- vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false
3925
- /* removeOnly */
3926
- );
3927
- } else {
3928
- // updates
3929
- vm.$el = vm.__patch__(prevVnode, vnode);
3930
- }
3931
-
3932
- restoreActiveInstance(); // update __vue__ reference
3933
-
3934
- if (prevEl) {
3935
- prevEl.__vue__ = null;
3936
- }
3937
-
3938
- if (vm.$el) {
3939
- vm.$el.__vue__ = vm;
3940
- } // if parent is an HOC, update its $el as well
3941
-
3942
-
3943
- if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {
3944
- vm.$parent.$el = vm.$el;
3945
- } // updated hook is called by the scheduler to ensure that children are
3946
- // updated in a parent's updated hook.
3947
-
3948
- };
3949
-
3950
- Vue.prototype.$forceUpdate = function () {
3951
- var vm = this;
3952
-
3953
- if (vm._watcher) {
3954
- vm._watcher.update();
3955
- }
3956
- };
3957
-
3958
- Vue.prototype.$destroy = function () {
3959
- var vm = this;
3960
-
3961
- if (vm._isBeingDestroyed) {
3962
- return;
3963
- }
3964
-
3965
- callHook(vm, 'beforeDestroy');
3966
- vm._isBeingDestroyed = true; // remove self from parent
3967
-
3968
- var parent = vm.$parent;
3969
-
3970
- if (parent && !parent._isBeingDestroyed && !vm.$options["abstract"]) {
3971
- remove(parent.$children, vm);
3972
- } // teardown watchers
3973
-
3974
-
3975
- if (vm._watcher) {
3976
- vm._watcher.teardown();
3977
- }
3978
-
3979
- var i = vm._watchers.length;
3980
-
3981
- while (i--) {
3982
- vm._watchers[i].teardown();
3983
- } // remove reference from data ob
3984
- // frozen object may not have observer.
3985
-
3986
-
3987
- if (vm._data.__ob__) {
3988
- vm._data.__ob__.vmCount--;
3989
- } // call the last hook...
3990
-
3991
-
3992
- vm._isDestroyed = true; // invoke destroy hooks on current rendered tree
3993
-
3994
- vm.__patch__(vm._vnode, null); // fire destroyed hook
3995
-
3996
-
3997
- callHook(vm, 'destroyed'); // turn off all instance listeners.
3998
-
3999
- vm.$off(); // remove __vue__ reference
4000
-
4001
- if (vm.$el) {
4002
- vm.$el.__vue__ = null;
4003
- } // release circular reference (#6759)
4004
-
4005
-
4006
- if (vm.$vnode) {
4007
- vm.$vnode.parent = null;
4008
- }
4009
- };
4010
- }
4011
-
4012
- function mountComponent(vm, el, hydrating) {
4013
- vm.$el = el;
4014
-
4015
- if (!vm.$options.render) {
4016
- vm.$options.render = createEmptyVNode;
4017
- {
4018
- /* istanbul ignore if */
4019
- if (vm.$options.template && vm.$options.template.charAt(0) !== '#' || vm.$options.el || el) {
4020
- warn('You are using the runtime-only build of Vue where the template ' + 'compiler is not available. Either pre-compile the templates into ' + 'render functions, or use the compiler-included build.', vm);
4021
- } else {
4022
- warn('Failed to mount component: template or render function not defined.', vm);
4023
- }
4024
- }
4025
- }
4026
-
4027
- callHook(vm, 'beforeMount');
4028
- var updateComponent;
4029
- /* istanbul ignore if */
4030
-
4031
- if (config.performance && mark) {
4032
- updateComponent = function updateComponent() {
4033
- var name = vm._name;
4034
- var id = vm._uid;
4035
- var startTag = "vue-perf-start:" + id;
4036
- var endTag = "vue-perf-end:" + id;
4037
- mark(startTag);
4038
-
4039
- var vnode = vm._render();
4040
-
4041
- mark(endTag);
4042
- measure("vue " + name + " render", startTag, endTag);
4043
- mark(startTag);
4044
-
4045
- vm._update(vnode, hydrating);
4046
-
4047
- mark(endTag);
4048
- measure("vue " + name + " patch", startTag, endTag);
4049
- };
4050
- } else {
4051
- updateComponent = function updateComponent() {
4052
- vm._update(vm._render(), hydrating);
4053
- };
4054
- } // we set this to vm._watcher inside the watcher's constructor
4055
- // since the watcher's initial patch may call $forceUpdate (e.g. inside child
4056
- // component's mounted hook), which relies on vm._watcher being already defined
4057
-
4058
-
4059
- new Watcher(vm, updateComponent, noop, {
4060
- before: function before() {
4061
- if (vm._isMounted && !vm._isDestroyed) {
4062
- callHook(vm, 'beforeUpdate');
4063
- }
4064
- }
4065
- }, true
4066
- /* isRenderWatcher */
4067
- );
4068
- hydrating = false; // manually mounted instance, call mounted on self
4069
- // mounted is called for render-created child components in its inserted hook
4070
-
4071
- if (vm.$vnode == null) {
4072
- vm._isMounted = true;
4073
- callHook(vm, 'mounted');
4074
- }
4075
-
4076
- return vm;
4077
- }
4078
-
4079
- function updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) {
4080
- {
4081
- isUpdatingChildComponent = true;
4082
- } // determine whether component has slot children
4083
- // we need to do this before overwriting $options._renderChildren.
4084
- // check if there are dynamic scopedSlots (hand-written or compiled but with
4085
- // dynamic slot names). Static scoped slots compiled from template has the
4086
- // "$stable" marker.
4087
-
4088
- var newScopedSlots = parentVnode.data.scopedSlots;
4089
- var oldScopedSlots = vm.$scopedSlots;
4090
- var hasDynamicScopedSlot = !!(newScopedSlots && !newScopedSlots.$stable || oldScopedSlots !== emptyObject && !oldScopedSlots.$stable || newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key); // Any static slot children from the parent may have changed during parent's
4091
- // update. Dynamic scoped slots may also have changed. In such cases, a forced
4092
- // update is necessary to ensure correctness.
4093
-
4094
- var needsForceUpdate = !!(renderChildren || // has new static slots
4095
- vm.$options._renderChildren || // has old static slots
4096
- hasDynamicScopedSlot);
4097
- vm.$options._parentVnode = parentVnode;
4098
- vm.$vnode = parentVnode; // update vm's placeholder node without re-render
4099
-
4100
- if (vm._vnode) {
4101
- // update child tree's parent
4102
- vm._vnode.parent = parentVnode;
4103
- }
4104
-
4105
- vm.$options._renderChildren = renderChildren; // update $attrs and $listeners hash
4106
- // these are also reactive so they may trigger child update if the child
4107
- // used them during render
4108
-
4109
- vm.$attrs = parentVnode.data.attrs || emptyObject;
4110
- vm.$listeners = listeners || emptyObject; // update props
4111
-
4112
- if (propsData && vm.$options.props) {
4113
- toggleObserving(false);
4114
- var props = vm._props;
4115
- var propKeys = vm.$options._propKeys || [];
4116
-
4117
- for (var i = 0; i < propKeys.length; i++) {
4118
- var key = propKeys[i];
4119
- var propOptions = vm.$options.props; // wtf flow?
4120
-
4121
- props[key] = validateProp(key, propOptions, propsData, vm);
4122
- }
4123
-
4124
- toggleObserving(true); // keep a copy of raw propsData
4125
-
4126
- vm.$options.propsData = propsData;
4127
- } // update listeners
4128
-
4129
-
4130
- listeners = listeners || emptyObject;
4131
- var oldListeners = vm.$options._parentListeners;
4132
- vm.$options._parentListeners = listeners;
4133
- updateComponentListeners(vm, listeners, oldListeners); // resolve slots + force update if has children
4134
-
4135
- if (needsForceUpdate) {
4136
- vm.$slots = resolveSlots(renderChildren, parentVnode.context);
4137
- vm.$forceUpdate();
4138
- }
4139
-
4140
- {
4141
- isUpdatingChildComponent = false;
4142
- }
4143
- }
4144
-
4145
- function isInInactiveTree(vm) {
4146
- while (vm && (vm = vm.$parent)) {
4147
- if (vm._inactive) {
4148
- return true;
4149
- }
4150
- }
4151
-
4152
- return false;
4153
- }
4154
-
4155
- function activateChildComponent(vm, direct) {
4156
- if (direct) {
4157
- vm._directInactive = false;
4158
-
4159
- if (isInInactiveTree(vm)) {
4160
- return;
4161
- }
4162
- } else if (vm._directInactive) {
4163
- return;
4164
- }
4165
-
4166
- if (vm._inactive || vm._inactive === null) {
4167
- vm._inactive = false;
4168
-
4169
- for (var i = 0; i < vm.$children.length; i++) {
4170
- activateChildComponent(vm.$children[i]);
4171
- }
4172
-
4173
- callHook(vm, 'activated');
4174
- }
4175
- }
4176
-
4177
- function deactivateChildComponent(vm, direct) {
4178
- if (direct) {
4179
- vm._directInactive = true;
4180
-
4181
- if (isInInactiveTree(vm)) {
4182
- return;
4183
- }
4184
- }
4185
-
4186
- if (!vm._inactive) {
4187
- vm._inactive = true;
4188
-
4189
- for (var i = 0; i < vm.$children.length; i++) {
4190
- deactivateChildComponent(vm.$children[i]);
4191
- }
4192
-
4193
- callHook(vm, 'deactivated');
4194
- }
4195
- }
4196
-
4197
- function callHook(vm, hook) {
4198
- // #7573 disable dep collection when invoking lifecycle hooks
4199
- pushTarget();
4200
- var handlers = vm.$options[hook];
4201
- var info = hook + " hook";
4202
-
4203
- if (handlers) {
4204
- for (var i = 0, j = handlers.length; i < j; i++) {
4205
- invokeWithErrorHandling(handlers[i], vm, null, vm, info);
4206
- }
4207
- }
4208
-
4209
- if (vm._hasHookEvent) {
4210
- vm.$emit('hook:' + hook);
4211
- }
4212
-
4213
- popTarget();
4214
- }
4215
- /* */
4216
-
4217
-
4218
- var MAX_UPDATE_COUNT = 100;
4219
- var queue = [];
4220
- var activatedChildren = [];
4221
- var has = {};
4222
- var circular = {};
4223
- var waiting = false;
4224
- var flushing = false;
4225
- var index = 0;
4226
- /**
4227
- * Reset the scheduler's state.
4228
- */
4229
-
4230
- function resetSchedulerState() {
4231
- index = queue.length = activatedChildren.length = 0;
4232
- has = {};
4233
- {
4234
- circular = {};
4235
- }
4236
- waiting = flushing = false;
4237
- } // Async edge case #6566 requires saving the timestamp when event listeners are
4238
- // attached. However, calling performance.now() has a perf overhead especially
4239
- // if the page has thousands of event listeners. Instead, we take a timestamp
4240
- // every time the scheduler flushes and use that for all event listeners
4241
- // attached during that flush.
4242
-
4243
-
4244
- var currentFlushTimestamp = 0; // Async edge case fix requires storing an event listener's attach timestamp.
4245
-
4246
- var getNow = Date.now; // Determine what event timestamp the browser is using. Annoyingly, the
4247
- // timestamp can either be hi-res (relative to page load) or low-res
4248
- // (relative to UNIX epoch), so in order to compare time we have to use the
4249
- // same timestamp type when saving the flush timestamp.
4250
- // All IE versions use low-res event timestamps, and have problematic clock
4251
- // implementations (#9632)
4252
-
4253
- if (inBrowser && !isIE) {
4254
- var performance = window.performance;
4255
-
4256
- if (performance && typeof performance.now === 'function' && getNow() > document.createEvent('Event').timeStamp) {
4257
- // if the event timestamp, although evaluated AFTER the Date.now(), is
4258
- // smaller than it, it means the event is using a hi-res timestamp,
4259
- // and we need to use the hi-res version for event listener timestamps as
4260
- // well.
4261
- getNow = function getNow() {
4262
- return performance.now();
4263
- };
4264
- }
4265
- }
4266
- /**
4267
- * Flush both queues and run the watchers.
4268
- */
4269
-
4270
-
4271
- function flushSchedulerQueue() {
4272
- currentFlushTimestamp = getNow();
4273
- flushing = true;
4274
- var watcher, id; // Sort queue before flush.
4275
- // This ensures that:
4276
- // 1. Components are updated from parent to child. (because parent is always
4277
- // created before the child)
4278
- // 2. A component's user watchers are run before its render watcher (because
4279
- // user watchers are created before the render watcher)
4280
- // 3. If a component is destroyed during a parent component's watcher run,
4281
- // its watchers can be skipped.
4282
-
4283
- queue.sort(function (a, b) {
4284
- return a.id - b.id;
4285
- }); // do not cache length because more watchers might be pushed
4286
- // as we run existing watchers
4287
-
4288
- for (index = 0; index < queue.length; index++) {
4289
- watcher = queue[index];
4290
-
4291
- if (watcher.before) {
4292
- watcher.before();
4293
- }
4294
-
4295
- id = watcher.id;
4296
- has[id] = null;
4297
- watcher.run(); // in dev build, check and stop circular updates.
4298
-
4299
- if (has[id] != null) {
4300
- circular[id] = (circular[id] || 0) + 1;
4301
-
4302
- if (circular[id] > MAX_UPDATE_COUNT) {
4303
- warn('You may have an infinite update loop ' + (watcher.user ? "in watcher with expression \"" + watcher.expression + "\"" : "in a component render function."), watcher.vm);
4304
- break;
4305
- }
4306
- }
4307
- } // keep copies of post queues before resetting state
4308
-
4309
-
4310
- var activatedQueue = activatedChildren.slice();
4311
- var updatedQueue = queue.slice();
4312
- resetSchedulerState(); // call component updated and activated hooks
4313
-
4314
- callActivatedHooks(activatedQueue);
4315
- callUpdatedHooks(updatedQueue); // devtool hook
4316
-
4317
- /* istanbul ignore if */
4318
-
4319
- if (devtools && config.devtools) {
4320
- devtools.emit('flush');
4321
- }
4322
- }
4323
-
4324
- function callUpdatedHooks(queue) {
4325
- var i = queue.length;
4326
-
4327
- while (i--) {
4328
- var watcher = queue[i];
4329
- var vm = watcher.vm;
4330
-
4331
- if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {
4332
- callHook(vm, 'updated');
4333
- }
4334
- }
4335
- }
4336
- /**
4337
- * Queue a kept-alive component that was activated during patch.
4338
- * The queue will be processed after the entire tree has been patched.
4339
- */
4340
-
4341
-
4342
- function queueActivatedComponent(vm) {
4343
- // setting _inactive to false here so that a render function can
4344
- // rely on checking whether it's in an inactive tree (e.g. router-view)
4345
- vm._inactive = false;
4346
- activatedChildren.push(vm);
4347
- }
4348
-
4349
- function callActivatedHooks(queue) {
4350
- for (var i = 0; i < queue.length; i++) {
4351
- queue[i]._inactive = true;
4352
- activateChildComponent(queue[i], true
4353
- /* true */
4354
- );
4355
- }
4356
- }
4357
- /**
4358
- * Push a watcher into the watcher queue.
4359
- * Jobs with duplicate IDs will be skipped unless it's
4360
- * pushed when the queue is being flushed.
4361
- */
4362
-
4363
-
4364
- function queueWatcher(watcher) {
4365
- var id = watcher.id;
4366
-
4367
- if (has[id] == null) {
4368
- has[id] = true;
4369
-
4370
- if (!flushing) {
4371
- queue.push(watcher);
4372
- } else {
4373
- // if already flushing, splice the watcher based on its id
4374
- // if already past its id, it will be run next immediately.
4375
- var i = queue.length - 1;
4376
-
4377
- while (i > index && queue[i].id > watcher.id) {
4378
- i--;
4379
- }
4380
-
4381
- queue.splice(i + 1, 0, watcher);
4382
- } // queue the flush
4383
-
4384
-
4385
- if (!waiting) {
4386
- waiting = true;
4387
-
4388
- if (!config.async) {
4389
- flushSchedulerQueue();
4390
- return;
4391
- }
4392
-
4393
- nextTick(flushSchedulerQueue);
4394
- }
4395
- }
4396
- }
4397
- /* */
4398
-
4399
-
4400
- var uid$2 = 0;
4401
- /**
4402
- * A watcher parses an expression, collects dependencies,
4403
- * and fires callback when the expression value changes.
4404
- * This is used for both the $watch() api and directives.
4405
- */
4406
-
4407
- var Watcher = function Watcher(vm, expOrFn, cb, options, isRenderWatcher) {
4408
- this.vm = vm;
4409
-
4410
- if (isRenderWatcher) {
4411
- vm._watcher = this;
4412
- }
4413
-
4414
- vm._watchers.push(this); // options
4415
-
4416
-
4417
- if (options) {
4418
- this.deep = !!options.deep;
4419
- this.user = !!options.user;
4420
- this.lazy = !!options.lazy;
4421
- this.sync = !!options.sync;
4422
- this.before = options.before;
4423
- } else {
4424
- this.deep = this.user = this.lazy = this.sync = false;
4425
- }
4426
-
4427
- this.cb = cb;
4428
- this.id = ++uid$2; // uid for batching
4429
-
4430
- this.active = true;
4431
- this.dirty = this.lazy; // for lazy watchers
4432
-
4433
- this.deps = [];
4434
- this.newDeps = [];
4435
- this.depIds = new _Set();
4436
- this.newDepIds = new _Set();
4437
- this.expression = expOrFn.toString(); // parse expression for getter
4438
-
4439
- if (typeof expOrFn === 'function') {
4440
- this.getter = expOrFn;
4441
- } else {
4442
- this.getter = parsePath(expOrFn);
4443
-
4444
- if (!this.getter) {
4445
- this.getter = noop;
4446
- warn("Failed watching path: \"" + expOrFn + "\" " + 'Watcher only accepts simple dot-delimited paths. ' + 'For full control, use a function instead.', vm);
4447
- }
4448
- }
4449
-
4450
- this.value = this.lazy ? undefined : this.get();
4451
- };
4452
- /**
4453
- * Evaluate the getter, and re-collect dependencies.
4454
- */
4455
-
4456
-
4457
- Watcher.prototype.get = function get() {
4458
- pushTarget(this);
4459
- var value;
4460
- var vm = this.vm;
4461
-
4462
- try {
4463
- value = this.getter.call(vm, vm);
4464
- } catch (e) {
4465
- if (this.user) {
4466
- handleError(e, vm, "getter for watcher \"" + this.expression + "\"");
4467
- } else {
4468
- throw e;
4469
- }
4470
- } finally {
4471
- // "touch" every property so they are all tracked as
4472
- // dependencies for deep watching
4473
- if (this.deep) {
4474
- traverse(value);
4475
- }
4476
-
4477
- popTarget();
4478
- this.cleanupDeps();
4479
- }
4480
-
4481
- return value;
4482
- };
4483
- /**
4484
- * Add a dependency to this directive.
4485
- */
4486
-
4487
-
4488
- Watcher.prototype.addDep = function addDep(dep) {
4489
- var id = dep.id;
4490
-
4491
- if (!this.newDepIds.has(id)) {
4492
- this.newDepIds.add(id);
4493
- this.newDeps.push(dep);
4494
-
4495
- if (!this.depIds.has(id)) {
4496
- dep.addSub(this);
4497
- }
4498
- }
4499
- };
4500
- /**
4501
- * Clean up for dependency collection.
4502
- */
4503
-
4504
-
4505
- Watcher.prototype.cleanupDeps = function cleanupDeps() {
4506
- var i = this.deps.length;
4507
-
4508
- while (i--) {
4509
- var dep = this.deps[i];
4510
-
4511
- if (!this.newDepIds.has(dep.id)) {
4512
- dep.removeSub(this);
4513
- }
4514
- }
4515
-
4516
- var tmp = this.depIds;
4517
- this.depIds = this.newDepIds;
4518
- this.newDepIds = tmp;
4519
- this.newDepIds.clear();
4520
- tmp = this.deps;
4521
- this.deps = this.newDeps;
4522
- this.newDeps = tmp;
4523
- this.newDeps.length = 0;
4524
- };
4525
- /**
4526
- * Subscriber interface.
4527
- * Will be called when a dependency changes.
4528
- */
4529
-
4530
-
4531
- Watcher.prototype.update = function update() {
4532
- /* istanbul ignore else */
4533
- if (this.lazy) {
4534
- this.dirty = true;
4535
- } else if (this.sync) {
4536
- this.run();
4537
- } else {
4538
- queueWatcher(this);
4539
- }
4540
- };
4541
- /**
4542
- * Scheduler job interface.
4543
- * Will be called by the scheduler.
4544
- */
4545
-
4546
-
4547
- Watcher.prototype.run = function run() {
4548
- if (this.active) {
4549
- var value = this.get();
4550
-
4551
- if (value !== this.value || // Deep watchers and watchers on Object/Arrays should fire even
4552
- // when the value is the same, because the value may
4553
- // have mutated.
4554
- isObject(value) || this.deep) {
4555
- // set new value
4556
- var oldValue = this.value;
4557
- this.value = value;
4558
-
4559
- if (this.user) {
4560
- try {
4561
- this.cb.call(this.vm, value, oldValue);
4562
- } catch (e) {
4563
- handleError(e, this.vm, "callback for watcher \"" + this.expression + "\"");
4564
- }
4565
- } else {
4566
- this.cb.call(this.vm, value, oldValue);
4567
- }
4568
- }
4569
- }
4570
- };
4571
- /**
4572
- * Evaluate the value of the watcher.
4573
- * This only gets called for lazy watchers.
4574
- */
4575
-
4576
-
4577
- Watcher.prototype.evaluate = function evaluate() {
4578
- this.value = this.get();
4579
- this.dirty = false;
4580
- };
4581
- /**
4582
- * Depend on all deps collected by this watcher.
4583
- */
4584
-
4585
-
4586
- Watcher.prototype.depend = function depend() {
4587
- var i = this.deps.length;
4588
-
4589
- while (i--) {
4590
- this.deps[i].depend();
4591
- }
4592
- };
4593
- /**
4594
- * Remove self from all dependencies' subscriber list.
4595
- */
4596
-
4597
-
4598
- Watcher.prototype.teardown = function teardown() {
4599
- if (this.active) {
4600
- // remove self from vm's watcher list
4601
- // this is a somewhat expensive operation so we skip it
4602
- // if the vm is being destroyed.
4603
- if (!this.vm._isBeingDestroyed) {
4604
- remove(this.vm._watchers, this);
4605
- }
4606
-
4607
- var i = this.deps.length;
4608
-
4609
- while (i--) {
4610
- this.deps[i].removeSub(this);
4611
- }
4612
-
4613
- this.active = false;
4614
- }
4615
- };
4616
- /* */
4617
-
4618
-
4619
- var sharedPropertyDefinition = {
4620
- enumerable: true,
4621
- configurable: true,
4622
- get: noop,
4623
- set: noop
4624
- };
4625
-
4626
- function proxy(target, sourceKey, key) {
4627
- sharedPropertyDefinition.get = function proxyGetter() {
4628
- return this[sourceKey][key];
4629
- };
4630
-
4631
- sharedPropertyDefinition.set = function proxySetter(val) {
4632
- this[sourceKey][key] = val;
4633
- };
4634
-
4635
- Object.defineProperty(target, key, sharedPropertyDefinition);
4636
- }
4637
-
4638
- function initState(vm) {
4639
- vm._watchers = [];
4640
- var opts = vm.$options;
4641
-
4642
- if (opts.props) {
4643
- initProps(vm, opts.props);
4644
- }
4645
-
4646
- if (opts.methods) {
4647
- initMethods(vm, opts.methods);
4648
- }
4649
-
4650
- if (opts.data) {
4651
- initData(vm);
4652
- } else {
4653
- observe(vm._data = {}, true
4654
- /* asRootData */
4655
- );
4656
- }
4657
-
4658
- if (opts.computed) {
4659
- initComputed(vm, opts.computed);
4660
- }
4661
-
4662
- if (opts.watch && opts.watch !== nativeWatch) {
4663
- initWatch(vm, opts.watch);
4664
- }
4665
- }
4666
-
4667
- function initProps(vm, propsOptions) {
4668
- var propsData = vm.$options.propsData || {};
4669
- var props = vm._props = {}; // cache prop keys so that future props updates can iterate using Array
4670
- // instead of dynamic object key enumeration.
4671
-
4672
- var keys = vm.$options._propKeys = [];
4673
- var isRoot = !vm.$parent; // root instance props should be converted
4674
-
4675
- if (!isRoot) {
4676
- toggleObserving(false);
4677
- }
4678
-
4679
- var loop = function loop(key) {
4680
- keys.push(key);
4681
- var value = validateProp(key, propsOptions, propsData, vm);
4682
- /* istanbul ignore else */
4683
-
4684
- {
4685
- var hyphenatedKey = hyphenate(key);
4686
-
4687
- if (isReservedAttribute(hyphenatedKey) || config.isReservedAttr(hyphenatedKey)) {
4688
- warn("\"" + hyphenatedKey + "\" is a reserved attribute and cannot be used as component prop.", vm);
4689
- }
4690
-
4691
- defineReactive$$1(props, key, value, function () {
4692
- if (!isRoot && !isUpdatingChildComponent) {
4693
- warn("Avoid mutating a prop directly since the value will be " + "overwritten whenever the parent component re-renders. " + "Instead, use a data or computed property based on the prop's " + "value. Prop being mutated: \"" + key + "\"", vm);
4694
- }
4695
- });
4696
- } // static props are already proxied on the component's prototype
4697
- // during Vue.extend(). We only need to proxy props defined at
4698
- // instantiation here.
4699
-
4700
- if (!(key in vm)) {
4701
- proxy(vm, "_props", key);
4702
- }
4703
- };
4704
-
4705
- for (var key in propsOptions) {
4706
- loop(key);
4707
- }
4708
-
4709
- toggleObserving(true);
4710
- }
4711
-
4712
- function initData(vm) {
4713
- var data = vm.$options.data;
4714
- data = vm._data = typeof data === 'function' ? getData(data, vm) : data || {};
4715
-
4716
- if (!isPlainObject(data)) {
4717
- data = {};
4718
- warn('data functions should return an object:\n' + 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', vm);
4719
- } // proxy data on instance
4720
-
4721
-
4722
- var keys = Object.keys(data);
4723
- var props = vm.$options.props;
4724
- var methods = vm.$options.methods;
4725
- var i = keys.length;
4726
-
4727
- while (i--) {
4728
- var key = keys[i];
4729
- {
4730
- if (methods && hasOwn(methods, key)) {
4731
- warn("Method \"" + key + "\" has already been defined as a data property.", vm);
4732
- }
4733
- }
4734
-
4735
- if (props && hasOwn(props, key)) {
4736
- warn("The data property \"" + key + "\" is already declared as a prop. " + "Use prop default value instead.", vm);
4737
- } else if (!isReserved(key)) {
4738
- proxy(vm, "_data", key);
4739
- }
4740
- } // observe data
4741
-
4742
-
4743
- observe(data, true
4744
- /* asRootData */
4745
- );
4746
- }
4747
-
4748
- function getData(data, vm) {
4749
- // #7573 disable dep collection when invoking data getters
4750
- pushTarget();
4751
-
4752
- try {
4753
- return data.call(vm, vm);
4754
- } catch (e) {
4755
- handleError(e, vm, "data()");
4756
- return {};
4757
- } finally {
4758
- popTarget();
4759
- }
4760
- }
4761
-
4762
- var computedWatcherOptions = {
4763
- lazy: true
4764
- };
4765
-
4766
- function initComputed(vm, computed) {
4767
- // $flow-disable-line
4768
- var watchers = vm._computedWatchers = Object.create(null); // computed properties are just getters during SSR
4769
-
4770
- var isSSR = isServerRendering();
4771
-
4772
- for (var key in computed) {
4773
- var userDef = computed[key];
4774
- var getter = typeof userDef === 'function' ? userDef : userDef.get;
4775
-
4776
- if (getter == null) {
4777
- warn("Getter is missing for computed property \"" + key + "\".", vm);
4778
- }
4779
-
4780
- if (!isSSR) {
4781
- // create internal watcher for the computed property.
4782
- watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions);
4783
- } // component-defined computed properties are already defined on the
4784
- // component prototype. We only need to define computed properties defined
4785
- // at instantiation here.
4786
-
4787
-
4788
- if (!(key in vm)) {
4789
- defineComputed(vm, key, userDef);
4790
- } else {
4791
- if (key in vm.$data) {
4792
- warn("The computed property \"" + key + "\" is already defined in data.", vm);
4793
- } else if (vm.$options.props && key in vm.$options.props) {
4794
- warn("The computed property \"" + key + "\" is already defined as a prop.", vm);
4795
- }
4796
- }
4797
- }
4798
- }
4799
-
4800
- function defineComputed(target, key, userDef) {
4801
- var shouldCache = !isServerRendering();
4802
-
4803
- if (typeof userDef === 'function') {
4804
- sharedPropertyDefinition.get = shouldCache ? createComputedGetter(key) : createGetterInvoker(userDef);
4805
- sharedPropertyDefinition.set = noop;
4806
- } else {
4807
- sharedPropertyDefinition.get = userDef.get ? shouldCache && userDef.cache !== false ? createComputedGetter(key) : createGetterInvoker(userDef.get) : noop;
4808
- sharedPropertyDefinition.set = userDef.set || noop;
4809
- }
4810
-
4811
- if (sharedPropertyDefinition.set === noop) {
4812
- sharedPropertyDefinition.set = function () {
4813
- warn("Computed property \"" + key + "\" was assigned to but it has no setter.", this);
4814
- };
4815
- }
4816
-
4817
- Object.defineProperty(target, key, sharedPropertyDefinition);
4818
- }
4819
-
4820
- function createComputedGetter(key) {
4821
- return function computedGetter() {
4822
- var watcher = this._computedWatchers && this._computedWatchers[key];
4823
-
4824
- if (watcher) {
4825
- if (watcher.dirty) {
4826
- watcher.evaluate();
4827
- }
4828
-
4829
- if (Dep.target) {
4830
- watcher.depend();
4831
- }
4832
-
4833
- return watcher.value;
4834
- }
4835
- };
4836
- }
4837
-
4838
- function createGetterInvoker(fn) {
4839
- return function computedGetter() {
4840
- return fn.call(this, this);
4841
- };
4842
- }
4843
-
4844
- function initMethods(vm, methods) {
4845
- var props = vm.$options.props;
4846
-
4847
- for (var key in methods) {
4848
- {
4849
- if (typeof methods[key] !== 'function') {
4850
- warn("Method \"" + key + "\" has type \"" + _typeof(methods[key]) + "\" in the component definition. " + "Did you reference the function correctly?", vm);
4851
- }
4852
-
4853
- if (props && hasOwn(props, key)) {
4854
- warn("Method \"" + key + "\" has already been defined as a prop.", vm);
4855
- }
4856
-
4857
- if (key in vm && isReserved(key)) {
4858
- warn("Method \"" + key + "\" conflicts with an existing Vue instance method. " + "Avoid defining component methods that start with _ or $.");
4859
- }
4860
- }
4861
- vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);
4862
- }
4863
- }
4864
-
4865
- function initWatch(vm, watch) {
4866
- for (var key in watch) {
4867
- var handler = watch[key];
4868
-
4869
- if (Array.isArray(handler)) {
4870
- for (var i = 0; i < handler.length; i++) {
4871
- createWatcher(vm, key, handler[i]);
4872
- }
4873
- } else {
4874
- createWatcher(vm, key, handler);
4875
- }
4876
- }
4877
- }
4878
-
4879
- function createWatcher(vm, expOrFn, handler, options) {
4880
- if (isPlainObject(handler)) {
4881
- options = handler;
4882
- handler = handler.handler;
4883
- }
4884
-
4885
- if (typeof handler === 'string') {
4886
- handler = vm[handler];
4887
- }
4888
-
4889
- return vm.$watch(expOrFn, handler, options);
4890
- }
4891
-
4892
- function stateMixin(Vue) {
4893
- // flow somehow has problems with directly declared definition object
4894
- // when using Object.defineProperty, so we have to procedurally build up
4895
- // the object here.
4896
- var dataDef = {};
4897
-
4898
- dataDef.get = function () {
4899
- return this._data;
4900
- };
4901
-
4902
- var propsDef = {};
4903
-
4904
- propsDef.get = function () {
4905
- return this._props;
4906
- };
4907
-
4908
- {
4909
- dataDef.set = function () {
4910
- warn('Avoid replacing instance root $data. ' + 'Use nested data properties instead.', this);
4911
- };
4912
-
4913
- propsDef.set = function () {
4914
- warn("$props is readonly.", this);
4915
- };
4916
- }
4917
- Object.defineProperty(Vue.prototype, '$data', dataDef);
4918
- Object.defineProperty(Vue.prototype, '$props', propsDef);
4919
- Vue.prototype.$set = set;
4920
- Vue.prototype.$delete = del;
4921
-
4922
- Vue.prototype.$watch = function (expOrFn, cb, options) {
4923
- var vm = this;
4924
-
4925
- if (isPlainObject(cb)) {
4926
- return createWatcher(vm, expOrFn, cb, options);
4927
- }
4928
-
4929
- options = options || {};
4930
- options.user = true;
4931
- var watcher = new Watcher(vm, expOrFn, cb, options);
4932
-
4933
- if (options.immediate) {
4934
- try {
4935
- cb.call(vm, watcher.value);
4936
- } catch (error) {
4937
- handleError(error, vm, "callback for immediate watcher \"" + watcher.expression + "\"");
4938
- }
4939
- }
4940
-
4941
- return function unwatchFn() {
4942
- watcher.teardown();
4943
- };
4944
- };
4945
- }
4946
- /* */
4947
-
4948
-
4949
- var uid$3 = 0;
4950
-
4951
- function initMixin(Vue) {
4952
- Vue.prototype._init = function (options) {
4953
- var vm = this; // a uid
4954
-
4955
- vm._uid = uid$3++;
4956
- var startTag, endTag;
4957
- /* istanbul ignore if */
4958
-
4959
- if (config.performance && mark) {
4960
- startTag = "vue-perf-start:" + vm._uid;
4961
- endTag = "vue-perf-end:" + vm._uid;
4962
- mark(startTag);
4963
- } // a flag to avoid this being observed
4964
-
4965
-
4966
- vm._isVue = true; // merge options
4967
-
4968
- if (options && options._isComponent) {
4969
- // optimize internal component instantiation
4970
- // since dynamic options merging is pretty slow, and none of the
4971
- // internal component options needs special treatment.
4972
- initInternalComponent(vm, options);
4973
- } else {
4974
- vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm);
4975
- }
4976
- /* istanbul ignore else */
4977
-
4978
-
4979
- {
4980
- initProxy(vm);
4981
- } // expose real self
4982
-
4983
- vm._self = vm;
4984
- initLifecycle(vm);
4985
- initEvents(vm);
4986
- initRender(vm);
4987
- callHook(vm, 'beforeCreate');
4988
- initInjections(vm); // resolve injections before data/props
4989
-
4990
- initState(vm);
4991
- initProvide(vm); // resolve provide after data/props
4992
-
4993
- callHook(vm, 'created');
4994
- /* istanbul ignore if */
4995
-
4996
- if (config.performance && mark) {
4997
- vm._name = formatComponentName(vm, false);
4998
- mark(endTag);
4999
- measure("vue " + vm._name + " init", startTag, endTag);
5000
- }
5001
-
5002
- if (vm.$options.el) {
5003
- vm.$mount(vm.$options.el);
5004
- }
5005
- };
5006
- }
5007
-
5008
- function initInternalComponent(vm, options) {
5009
- var opts = vm.$options = Object.create(vm.constructor.options); // doing this because it's faster than dynamic enumeration.
5010
-
5011
- var parentVnode = options._parentVnode;
5012
- opts.parent = options.parent;
5013
- opts._parentVnode = parentVnode;
5014
- var vnodeComponentOptions = parentVnode.componentOptions;
5015
- opts.propsData = vnodeComponentOptions.propsData;
5016
- opts._parentListeners = vnodeComponentOptions.listeners;
5017
- opts._renderChildren = vnodeComponentOptions.children;
5018
- opts._componentTag = vnodeComponentOptions.tag;
5019
-
5020
- if (options.render) {
5021
- opts.render = options.render;
5022
- opts.staticRenderFns = options.staticRenderFns;
5023
- }
5024
- }
5025
-
5026
- function resolveConstructorOptions(Ctor) {
5027
- var options = Ctor.options;
5028
-
5029
- if (Ctor["super"]) {
5030
- var superOptions = resolveConstructorOptions(Ctor["super"]);
5031
- var cachedSuperOptions = Ctor.superOptions;
5032
-
5033
- if (superOptions !== cachedSuperOptions) {
5034
- // super option changed,
5035
- // need to resolve new options.
5036
- Ctor.superOptions = superOptions; // check if there are any late-modified/attached options (#4976)
5037
-
5038
- var modifiedOptions = resolveModifiedOptions(Ctor); // update base extend options
5039
-
5040
- if (modifiedOptions) {
5041
- extend(Ctor.extendOptions, modifiedOptions);
5042
- }
5043
-
5044
- options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
5045
-
5046
- if (options.name) {
5047
- options.components[options.name] = Ctor;
5048
- }
5049
- }
5050
- }
5051
-
5052
- return options;
5053
- }
5054
-
5055
- function resolveModifiedOptions(Ctor) {
5056
- var modified;
5057
- var latest = Ctor.options;
5058
- var sealed = Ctor.sealedOptions;
5059
-
5060
- for (var key in latest) {
5061
- if (latest[key] !== sealed[key]) {
5062
- if (!modified) {
5063
- modified = {};
5064
- }
5065
-
5066
- modified[key] = latest[key];
5067
- }
5068
- }
5069
-
5070
- return modified;
5071
- }
5072
-
5073
- function Vue(options) {
5074
- if (!(this instanceof Vue)) {
5075
- warn('Vue is a constructor and should be called with the `new` keyword');
5076
- }
5077
-
5078
- this._init(options);
5079
- }
5080
-
5081
- initMixin(Vue);
5082
- stateMixin(Vue);
5083
- eventsMixin(Vue);
5084
- lifecycleMixin(Vue);
5085
- renderMixin(Vue);
5086
- /* */
5087
-
5088
- function initUse(Vue) {
5089
- Vue.use = function (plugin) {
5090
- var installedPlugins = this._installedPlugins || (this._installedPlugins = []);
5091
-
5092
- if (installedPlugins.indexOf(plugin) > -1) {
5093
- return this;
5094
- } // additional parameters
5095
-
5096
-
5097
- var args = toArray(arguments, 1);
5098
- args.unshift(this);
5099
-
5100
- if (typeof plugin.install === 'function') {
5101
- plugin.install.apply(plugin, args);
5102
- } else if (typeof plugin === 'function') {
5103
- plugin.apply(null, args);
5104
- }
5105
-
5106
- installedPlugins.push(plugin);
5107
- return this;
5108
- };
5109
- }
5110
- /* */
5111
-
5112
-
5113
- function initMixin$1(Vue) {
5114
- Vue.mixin = function (mixin) {
5115
- this.options = mergeOptions(this.options, mixin);
5116
- return this;
5117
- };
5118
- }
5119
- /* */
5120
-
5121
-
5122
- function initExtend(Vue) {
5123
- /**
5124
- * Each instance constructor, including Vue, has a unique
5125
- * cid. This enables us to create wrapped "child
5126
- * constructors" for prototypal inheritance and cache them.
5127
- */
5128
- Vue.cid = 0;
5129
- var cid = 1;
5130
- /**
5131
- * Class inheritance
5132
- */
5133
-
5134
- Vue.extend = function (extendOptions) {
5135
- extendOptions = extendOptions || {};
5136
- var Super = this;
5137
- var SuperId = Super.cid;
5138
- var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
5139
-
5140
- if (cachedCtors[SuperId]) {
5141
- return cachedCtors[SuperId];
5142
- }
5143
-
5144
- var name = extendOptions.name || Super.options.name;
5145
-
5146
- if (name) {
5147
- validateComponentName(name);
5148
- }
5149
-
5150
- var Sub = function VueComponent(options) {
5151
- this._init(options);
5152
- };
5153
-
5154
- Sub.prototype = Object.create(Super.prototype);
5155
- Sub.prototype.constructor = Sub;
5156
- Sub.cid = cid++;
5157
- Sub.options = mergeOptions(Super.options, extendOptions);
5158
- Sub['super'] = Super; // For props and computed properties, we define the proxy getters on
5159
- // the Vue instances at extension time, on the extended prototype. This
5160
- // avoids Object.defineProperty calls for each instance created.
5161
-
5162
- if (Sub.options.props) {
5163
- initProps$1(Sub);
5164
- }
5165
-
5166
- if (Sub.options.computed) {
5167
- initComputed$1(Sub);
5168
- } // allow further extension/mixin/plugin usage
5169
-
5170
-
5171
- Sub.extend = Super.extend;
5172
- Sub.mixin = Super.mixin;
5173
- Sub.use = Super.use; // create asset registers, so extended classes
5174
- // can have their private assets too.
5175
-
5176
- ASSET_TYPES.forEach(function (type) {
5177
- Sub[type] = Super[type];
5178
- }); // enable recursive self-lookup
5179
-
5180
- if (name) {
5181
- Sub.options.components[name] = Sub;
5182
- } // keep a reference to the super options at extension time.
5183
- // later at instantiation we can check if Super's options have
5184
- // been updated.
5185
-
5186
-
5187
- Sub.superOptions = Super.options;
5188
- Sub.extendOptions = extendOptions;
5189
- Sub.sealedOptions = extend({}, Sub.options); // cache constructor
5190
-
5191
- cachedCtors[SuperId] = Sub;
5192
- return Sub;
5193
- };
5194
- }
5195
-
5196
- function initProps$1(Comp) {
5197
- var props = Comp.options.props;
5198
-
5199
- for (var key in props) {
5200
- proxy(Comp.prototype, "_props", key);
5201
- }
5202
- }
5203
-
5204
- function initComputed$1(Comp) {
5205
- var computed = Comp.options.computed;
5206
-
5207
- for (var key in computed) {
5208
- defineComputed(Comp.prototype, key, computed[key]);
5209
- }
5210
- }
5211
- /* */
5212
-
5213
-
5214
- function initAssetRegisters(Vue) {
5215
- /**
5216
- * Create asset registration methods.
5217
- */
5218
- ASSET_TYPES.forEach(function (type) {
5219
- Vue[type] = function (id, definition) {
5220
- if (!definition) {
5221
- return this.options[type + 's'][id];
5222
- } else {
5223
- /* istanbul ignore if */
5224
- if (type === 'component') {
5225
- validateComponentName(id);
5226
- }
5227
-
5228
- if (type === 'component' && isPlainObject(definition)) {
5229
- definition.name = definition.name || id;
5230
- definition = this.options._base.extend(definition);
5231
- }
5232
-
5233
- if (type === 'directive' && typeof definition === 'function') {
5234
- definition = {
5235
- bind: definition,
5236
- update: definition
5237
- };
5238
- }
5239
-
5240
- this.options[type + 's'][id] = definition;
5241
- return definition;
5242
- }
5243
- };
5244
- });
5245
- }
5246
- /* */
5247
-
5248
-
5249
- function getComponentName(opts) {
5250
- return opts && (opts.Ctor.options.name || opts.tag);
5251
- }
5252
-
5253
- function matches(pattern, name) {
5254
- if (Array.isArray(pattern)) {
5255
- return pattern.indexOf(name) > -1;
5256
- } else if (typeof pattern === 'string') {
5257
- return pattern.split(',').indexOf(name) > -1;
5258
- } else if (isRegExp(pattern)) {
5259
- return pattern.test(name);
5260
- }
5261
- /* istanbul ignore next */
5262
-
5263
-
5264
- return false;
5265
- }
5266
-
5267
- function pruneCache(keepAliveInstance, filter) {
5268
- var cache = keepAliveInstance.cache;
5269
- var keys = keepAliveInstance.keys;
5270
- var _vnode = keepAliveInstance._vnode;
5271
-
5272
- for (var key in cache) {
5273
- var cachedNode = cache[key];
5274
-
5275
- if (cachedNode) {
5276
- var name = getComponentName(cachedNode.componentOptions);
5277
-
5278
- if (name && !filter(name)) {
5279
- pruneCacheEntry(cache, key, keys, _vnode);
5280
- }
5281
- }
5282
- }
5283
- }
5284
-
5285
- function pruneCacheEntry(cache, key, keys, current) {
5286
- var cached$$1 = cache[key];
5287
-
5288
- if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {
5289
- cached$$1.componentInstance.$destroy();
5290
- }
5291
-
5292
- cache[key] = null;
5293
- remove(keys, key);
5294
- }
5295
-
5296
- var patternTypes = [String, RegExp, Array];
5297
- var KeepAlive = {
5298
- name: 'keep-alive',
5299
- "abstract": true,
5300
- props: {
5301
- include: patternTypes,
5302
- exclude: patternTypes,
5303
- max: [String, Number]
5304
- },
5305
- created: function created() {
5306
- this.cache = Object.create(null);
5307
- this.keys = [];
5308
- },
5309
- destroyed: function destroyed() {
5310
- for (var key in this.cache) {
5311
- pruneCacheEntry(this.cache, key, this.keys);
5312
- }
5313
- },
5314
- mounted: function mounted() {
5315
- var this$1 = this;
5316
- this.$watch('include', function (val) {
5317
- pruneCache(this$1, function (name) {
5318
- return matches(val, name);
5319
- });
5320
- });
5321
- this.$watch('exclude', function (val) {
5322
- pruneCache(this$1, function (name) {
5323
- return !matches(val, name);
5324
- });
5325
- });
5326
- },
5327
- render: function render() {
5328
- var slot = this.$slots["default"];
5329
- var vnode = getFirstComponentChild(slot);
5330
- var componentOptions = vnode && vnode.componentOptions;
5331
-
5332
- if (componentOptions) {
5333
- // check pattern
5334
- var name = getComponentName(componentOptions);
5335
- var ref = this;
5336
- var include = ref.include;
5337
- var exclude = ref.exclude;
5338
-
5339
- if ( // not included
5340
- include && (!name || !matches(include, name)) || // excluded
5341
- exclude && name && matches(exclude, name)) {
5342
- return vnode;
5343
- }
5344
-
5345
- var ref$1 = this;
5346
- var cache = ref$1.cache;
5347
- var keys = ref$1.keys;
5348
- var key = vnode.key == null // same constructor may get registered as different local components
5349
- // so cid alone is not enough (#3269)
5350
- ? componentOptions.Ctor.cid + (componentOptions.tag ? "::" + componentOptions.tag : '') : vnode.key;
5351
-
5352
- if (cache[key]) {
5353
- vnode.componentInstance = cache[key].componentInstance; // make current key freshest
5354
-
5355
- remove(keys, key);
5356
- keys.push(key);
5357
- } else {
5358
- cache[key] = vnode;
5359
- keys.push(key); // prune oldest entry
5360
-
5361
- if (this.max && keys.length > parseInt(this.max)) {
5362
- pruneCacheEntry(cache, keys[0], keys, this._vnode);
5363
- }
5364
- }
5365
-
5366
- vnode.data.keepAlive = true;
5367
- }
5368
-
5369
- return vnode || slot && slot[0];
5370
- }
5371
- };
5372
- var builtInComponents = {
5373
- KeepAlive: KeepAlive
5374
- };
5375
- /* */
5376
-
5377
- function initGlobalAPI(Vue) {
5378
- // config
5379
- var configDef = {};
5380
-
5381
- configDef.get = function () {
5382
- return config;
5383
- };
5384
-
5385
- {
5386
- configDef.set = function () {
5387
- warn('Do not replace the Vue.config object, set individual fields instead.');
5388
- };
5389
- }
5390
- Object.defineProperty(Vue, 'config', configDef); // exposed util methods.
5391
- // NOTE: these are not considered part of the public API - avoid relying on
5392
- // them unless you are aware of the risk.
5393
-
5394
- Vue.util = {
5395
- warn: warn,
5396
- extend: extend,
5397
- mergeOptions: mergeOptions,
5398
- defineReactive: defineReactive$$1
5399
- };
5400
- Vue.set = set;
5401
- Vue["delete"] = del;
5402
- Vue.nextTick = nextTick; // 2.6 explicit observable API
5403
-
5404
- Vue.observable = function (obj) {
5405
- observe(obj);
5406
- return obj;
5407
- };
5408
-
5409
- Vue.options = Object.create(null);
5410
- ASSET_TYPES.forEach(function (type) {
5411
- Vue.options[type + 's'] = Object.create(null);
5412
- }); // this is used to identify the "base" constructor to extend all plain-object
5413
- // components with in Weex's multi-instance scenarios.
5414
-
5415
- Vue.options._base = Vue;
5416
- extend(Vue.options.components, builtInComponents);
5417
- initUse(Vue);
5418
- initMixin$1(Vue);
5419
- initExtend(Vue);
5420
- initAssetRegisters(Vue);
5421
- }
5422
-
5423
- initGlobalAPI(Vue);
5424
- Object.defineProperty(Vue.prototype, '$isServer', {
5425
- get: isServerRendering
5426
- });
5427
- Object.defineProperty(Vue.prototype, '$ssrContext', {
5428
- get: function get() {
5429
- /* istanbul ignore next */
5430
- return this.$vnode && this.$vnode.ssrContext;
5431
- }
5432
- }); // expose FunctionalRenderContext for ssr runtime helper installation
5433
-
5434
- Object.defineProperty(Vue, 'FunctionalRenderContext', {
5435
- value: FunctionalRenderContext
5436
- });
5437
- Vue.version = '2.6.12';
5438
- /* */
5439
- // these are reserved for web because they are directly compiled away
5440
- // during template compilation
5441
-
5442
- var isReservedAttr = makeMap('style,class'); // attributes that should be using props for binding
5443
-
5444
- var acceptValue = makeMap('input,textarea,option,select,progress');
5445
-
5446
- var mustUseProp = function mustUseProp(tag, type, attr) {
5447
- return attr === 'value' && acceptValue(tag) && type !== 'button' || attr === 'selected' && tag === 'option' || attr === 'checked' && tag === 'input' || attr === 'muted' && tag === 'video';
5448
- };
5449
-
5450
- var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');
5451
- var isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');
5452
-
5453
- var convertEnumeratedValue = function convertEnumeratedValue(key, value) {
5454
- return isFalsyAttrValue(value) || value === 'false' ? 'false' // allow arbitrary string value for contenteditable
5455
- : key === 'contenteditable' && isValidContentEditableValue(value) ? value : 'true';
5456
- };
5457
-
5458
- var isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' + 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' + 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' + 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' + 'required,reversed,scoped,seamless,selected,sortable,translate,' + 'truespeed,typemustmatch,visible');
5459
- var xlinkNS = 'http://www.w3.org/1999/xlink';
5460
-
5461
- var isXlink = function isXlink(name) {
5462
- return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink';
5463
- };
5464
-
5465
- var getXlinkProp = function getXlinkProp(name) {
5466
- return isXlink(name) ? name.slice(6, name.length) : '';
5467
- };
5468
-
5469
- var isFalsyAttrValue = function isFalsyAttrValue(val) {
5470
- return val == null || val === false;
5471
- };
5472
- /* */
5473
-
5474
-
5475
- function genClassForVnode(vnode) {
5476
- var data = vnode.data;
5477
- var parentNode = vnode;
5478
- var childNode = vnode;
5479
-
5480
- while (isDef(childNode.componentInstance)) {
5481
- childNode = childNode.componentInstance._vnode;
5482
-
5483
- if (childNode && childNode.data) {
5484
- data = mergeClassData(childNode.data, data);
5485
- }
5486
- }
5487
-
5488
- while (isDef(parentNode = parentNode.parent)) {
5489
- if (parentNode && parentNode.data) {
5490
- data = mergeClassData(data, parentNode.data);
5491
- }
5492
- }
5493
-
5494
- return renderClass(data.staticClass, data["class"]);
5495
- }
5496
-
5497
- function mergeClassData(child, parent) {
5498
- return {
5499
- staticClass: concat(child.staticClass, parent.staticClass),
5500
- "class": isDef(child["class"]) ? [child["class"], parent["class"]] : parent["class"]
5501
- };
5502
- }
5503
-
5504
- function renderClass(staticClass, dynamicClass) {
5505
- if (isDef(staticClass) || isDef(dynamicClass)) {
5506
- return concat(staticClass, stringifyClass(dynamicClass));
5507
- }
5508
- /* istanbul ignore next */
5509
-
5510
-
5511
- return '';
5512
- }
5513
-
5514
- function concat(a, b) {
5515
- return a ? b ? a + ' ' + b : a : b || '';
5516
- }
5517
-
5518
- function stringifyClass(value) {
5519
- if (Array.isArray(value)) {
5520
- return stringifyArray(value);
5521
- }
5522
-
5523
- if (isObject(value)) {
5524
- return stringifyObject(value);
5525
- }
5526
-
5527
- if (typeof value === 'string') {
5528
- return value;
5529
- }
5530
- /* istanbul ignore next */
5531
-
5532
-
5533
- return '';
5534
- }
5535
-
5536
- function stringifyArray(value) {
5537
- var res = '';
5538
- var stringified;
5539
-
5540
- for (var i = 0, l = value.length; i < l; i++) {
5541
- if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {
5542
- if (res) {
5543
- res += ' ';
5544
- }
5545
-
5546
- res += stringified;
5547
- }
5548
- }
5549
-
5550
- return res;
5551
- }
5552
-
5553
- function stringifyObject(value) {
5554
- var res = '';
5555
-
5556
- for (var key in value) {
5557
- if (value[key]) {
5558
- if (res) {
5559
- res += ' ';
5560
- }
5561
-
5562
- res += key;
5563
- }
5564
- }
5565
-
5566
- return res;
5567
- }
5568
- /* */
5569
-
5570
-
5571
- var namespaceMap = {
5572
- svg: 'http://www.w3.org/2000/svg',
5573
- math: 'http://www.w3.org/1998/Math/MathML'
5574
- };
5575
- var isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' + 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' + 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' + 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' + 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' + 'embed,object,param,source,canvas,script,noscript,del,ins,' + 'caption,col,colgroup,table,thead,tbody,td,th,tr,' + 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' + 'output,progress,select,textarea,' + 'details,dialog,menu,menuitem,summary,' + 'content,element,shadow,template,blockquote,iframe,tfoot'); // this map is intentionally selective, only covering SVG elements that may
5576
- // contain child elements.
5577
-
5578
- var isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' + 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' + 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true);
5579
-
5580
- var isPreTag = function isPreTag(tag) {
5581
- return tag === 'pre';
5582
- };
5583
-
5584
- var isReservedTag = function isReservedTag(tag) {
5585
- return isHTMLTag(tag) || isSVG(tag);
5586
- };
5587
-
5588
- function getTagNamespace(tag) {
5589
- if (isSVG(tag)) {
5590
- return 'svg';
5591
- } // basic support for MathML
5592
- // note it doesn't support other MathML elements being component roots
5593
-
5594
-
5595
- if (tag === 'math') {
5596
- return 'math';
5597
- }
5598
- }
5599
-
5600
- var unknownElementCache = Object.create(null);
5601
-
5602
- function isUnknownElement(tag) {
5603
- /* istanbul ignore if */
5604
- if (!inBrowser) {
5605
- return true;
5606
- }
5607
-
5608
- if (isReservedTag(tag)) {
5609
- return false;
5610
- }
5611
-
5612
- tag = tag.toLowerCase();
5613
- /* istanbul ignore if */
5614
-
5615
- if (unknownElementCache[tag] != null) {
5616
- return unknownElementCache[tag];
5617
- }
5618
-
5619
- var el = document.createElement(tag);
5620
-
5621
- if (tag.indexOf('-') > -1) {
5622
- // http://stackoverflow.com/a/28210364/1070244
5623
- return unknownElementCache[tag] = el.constructor === window.HTMLUnknownElement || el.constructor === window.HTMLElement;
5624
- } else {
5625
- return unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString());
5626
- }
5627
- }
5628
-
5629
- var isTextInputType = makeMap('text,number,password,search,email,tel,url');
5630
- /* */
5631
-
5632
- /**
5633
- * Query an element selector if it's not an element already.
5634
- */
5635
-
5636
- function query(el) {
5637
- if (typeof el === 'string') {
5638
- var selected = document.querySelector(el);
5639
-
5640
- if (!selected) {
5641
- warn('Cannot find element: ' + el);
5642
- return document.createElement('div');
5643
- }
5644
-
5645
- return selected;
5646
- } else {
5647
- return el;
5648
- }
5649
- }
5650
- /* */
5651
-
5652
-
5653
- function createElement$1(tagName, vnode) {
5654
- var elm = document.createElement(tagName);
5655
-
5656
- if (tagName !== 'select') {
5657
- return elm;
5658
- } // false or null will remove the attribute but undefined will not
5659
-
5660
-
5661
- if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {
5662
- elm.setAttribute('multiple', 'multiple');
5663
- }
5664
-
5665
- return elm;
5666
- }
5667
-
5668
- function createElementNS(namespace, tagName) {
5669
- return document.createElementNS(namespaceMap[namespace], tagName);
5670
- }
5671
-
5672
- function createTextNode(text) {
5673
- return document.createTextNode(text);
5674
- }
5675
-
5676
- function createComment(text) {
5677
- return document.createComment(text);
5678
- }
5679
-
5680
- function insertBefore(parentNode, newNode, referenceNode) {
5681
- parentNode.insertBefore(newNode, referenceNode);
5682
- }
5683
-
5684
- function removeChild(node, child) {
5685
- node.removeChild(child);
5686
- }
5687
-
5688
- function appendChild(node, child) {
5689
- node.appendChild(child);
5690
- }
5691
-
5692
- function parentNode(node) {
5693
- return node.parentNode;
5694
- }
5695
-
5696
- function nextSibling(node) {
5697
- return node.nextSibling;
5698
- }
5699
-
5700
- function tagName(node) {
5701
- return node.tagName;
5702
- }
5703
-
5704
- function setTextContent(node, text) {
5705
- node.textContent = text;
5706
- }
5707
-
5708
- function setStyleScope(node, scopeId) {
5709
- node.setAttribute(scopeId, '');
5710
- }
5711
-
5712
- var nodeOps =
5713
- /*#__PURE__*/
5714
- Object.freeze({
5715
- createElement: createElement$1,
5716
- createElementNS: createElementNS,
5717
- createTextNode: createTextNode,
5718
- createComment: createComment,
5719
- insertBefore: insertBefore,
5720
- removeChild: removeChild,
5721
- appendChild: appendChild,
5722
- parentNode: parentNode,
5723
- nextSibling: nextSibling,
5724
- tagName: tagName,
5725
- setTextContent: setTextContent,
5726
- setStyleScope: setStyleScope
5727
- });
5728
- /* */
5729
-
5730
- var ref = {
5731
- create: function create(_, vnode) {
5732
- registerRef(vnode);
5733
- },
5734
- update: function update(oldVnode, vnode) {
5735
- if (oldVnode.data.ref !== vnode.data.ref) {
5736
- registerRef(oldVnode, true);
5737
- registerRef(vnode);
5738
- }
5739
- },
5740
- destroy: function destroy(vnode) {
5741
- registerRef(vnode, true);
5742
- }
5743
- };
5744
-
5745
- function registerRef(vnode, isRemoval) {
5746
- var key = vnode.data.ref;
5747
-
5748
- if (!isDef(key)) {
5749
- return;
5750
- }
5751
-
5752
- var vm = vnode.context;
5753
- var ref = vnode.componentInstance || vnode.elm;
5754
- var refs = vm.$refs;
5755
-
5756
- if (isRemoval) {
5757
- if (Array.isArray(refs[key])) {
5758
- remove(refs[key], ref);
5759
- } else if (refs[key] === ref) {
5760
- refs[key] = undefined;
5761
- }
5762
- } else {
5763
- if (vnode.data.refInFor) {
5764
- if (!Array.isArray(refs[key])) {
5765
- refs[key] = [ref];
5766
- } else if (refs[key].indexOf(ref) < 0) {
5767
- // $flow-disable-line
5768
- refs[key].push(ref);
5769
- }
5770
- } else {
5771
- refs[key] = ref;
5772
- }
5773
- }
5774
- }
5775
- /**
5776
- * Virtual DOM patching algorithm based on Snabbdom by
5777
- * Simon Friis Vindum (@paldepind)
5778
- * Licensed under the MIT License
5779
- * https://github.com/paldepind/snabbdom/blob/master/LICENSE
5780
- *
5781
- * modified by Evan You (@yyx990803)
5782
- *
5783
- * Not type-checking this because this file is perf-critical and the cost
5784
- * of making flow understand it is not worth it.
5785
- */
5786
-
5787
-
5788
- var emptyNode = new VNode('', {}, []);
5789
- var hooks = ['create', 'activate', 'update', 'remove', 'destroy'];
5790
-
5791
- function sameVnode(a, b) {
5792
- return a.key === b.key && (a.tag === b.tag && a.isComment === b.isComment && isDef(a.data) === isDef(b.data) && sameInputType(a, b) || isTrue(a.isAsyncPlaceholder) && a.asyncFactory === b.asyncFactory && isUndef(b.asyncFactory.error));
5793
- }
5794
-
5795
- function sameInputType(a, b) {
5796
- if (a.tag !== 'input') {
5797
- return true;
5798
- }
5799
-
5800
- var i;
5801
- var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;
5802
- var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;
5803
- return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB);
5804
- }
5805
-
5806
- function createKeyToOldIdx(children, beginIdx, endIdx) {
5807
- var i, key;
5808
- var map = {};
5809
-
5810
- for (i = beginIdx; i <= endIdx; ++i) {
5811
- key = children[i].key;
5812
-
5813
- if (isDef(key)) {
5814
- map[key] = i;
5815
- }
5816
- }
5817
-
5818
- return map;
5819
- }
5820
-
5821
- function createPatchFunction(backend) {
5822
- var i, j;
5823
- var cbs = {};
5824
- var modules = backend.modules;
5825
- var nodeOps = backend.nodeOps;
5826
-
5827
- for (i = 0; i < hooks.length; ++i) {
5828
- cbs[hooks[i]] = [];
5829
-
5830
- for (j = 0; j < modules.length; ++j) {
5831
- if (isDef(modules[j][hooks[i]])) {
5832
- cbs[hooks[i]].push(modules[j][hooks[i]]);
5833
- }
5834
- }
5835
- }
5836
-
5837
- function emptyNodeAt(elm) {
5838
- return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm);
5839
- }
5840
-
5841
- function createRmCb(childElm, listeners) {
5842
- function remove$$1() {
5843
- if (--remove$$1.listeners === 0) {
5844
- removeNode(childElm);
5845
- }
5846
- }
5847
-
5848
- remove$$1.listeners = listeners;
5849
- return remove$$1;
5850
- }
5851
-
5852
- function removeNode(el) {
5853
- var parent = nodeOps.parentNode(el); // element may have already been removed due to v-html / v-text
5854
-
5855
- if (isDef(parent)) {
5856
- nodeOps.removeChild(parent, el);
5857
- }
5858
- }
5859
-
5860
- function isUnknownElement$$1(vnode, inVPre) {
5861
- return !inVPre && !vnode.ns && !(config.ignoredElements.length && config.ignoredElements.some(function (ignore) {
5862
- return isRegExp(ignore) ? ignore.test(vnode.tag) : ignore === vnode.tag;
5863
- })) && config.isUnknownElement(vnode.tag);
5864
- }
5865
-
5866
- var creatingElmInVPre = 0;
5867
-
5868
- function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) {
5869
- if (isDef(vnode.elm) && isDef(ownerArray)) {
5870
- // This vnode was used in a previous render!
5871
- // now it's used as a new node, overwriting its elm would cause
5872
- // potential patch errors down the road when it's used as an insertion
5873
- // reference node. Instead, we clone the node on-demand before creating
5874
- // associated DOM element for it.
5875
- vnode = ownerArray[index] = cloneVNode(vnode);
5876
- }
5877
-
5878
- vnode.isRootInsert = !nested; // for transition enter check
5879
-
5880
- if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {
5881
- return;
5882
- }
5883
-
5884
- var data = vnode.data;
5885
- var children = vnode.children;
5886
- var tag = vnode.tag;
5887
-
5888
- if (isDef(tag)) {
5889
- {
5890
- if (data && data.pre) {
5891
- creatingElmInVPre++;
5892
- }
5893
-
5894
- if (isUnknownElement$$1(vnode, creatingElmInVPre)) {
5895
- warn('Unknown custom element: <' + tag + '> - did you ' + 'register the component correctly? For recursive components, ' + 'make sure to provide the "name" option.', vnode.context);
5896
- }
5897
- }
5898
- vnode.elm = vnode.ns ? nodeOps.createElementNS(vnode.ns, tag) : nodeOps.createElement(tag, vnode);
5899
- setScope(vnode);
5900
- /* istanbul ignore if */
5901
-
5902
- {
5903
- createChildren(vnode, children, insertedVnodeQueue);
5904
-
5905
- if (isDef(data)) {
5906
- invokeCreateHooks(vnode, insertedVnodeQueue);
5907
- }
5908
-
5909
- insert(parentElm, vnode.elm, refElm);
5910
- }
5911
-
5912
- if (data && data.pre) {
5913
- creatingElmInVPre--;
5914
- }
5915
- } else if (isTrue(vnode.isComment)) {
5916
- vnode.elm = nodeOps.createComment(vnode.text);
5917
- insert(parentElm, vnode.elm, refElm);
5918
- } else {
5919
- vnode.elm = nodeOps.createTextNode(vnode.text);
5920
- insert(parentElm, vnode.elm, refElm);
5921
- }
5922
- }
5923
-
5924
- function createComponent(vnode, insertedVnodeQueue, parentElm, refElm) {
5925
- var i = vnode.data;
5926
-
5927
- if (isDef(i)) {
5928
- var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;
5929
-
5930
- if (isDef(i = i.hook) && isDef(i = i.init)) {
5931
- i(vnode, false
5932
- /* hydrating */
5933
- );
5934
- } // after calling the init hook, if the vnode is a child component
5935
- // it should've created a child instance and mounted it. the child
5936
- // component also has set the placeholder vnode's elm.
5937
- // in that case we can just return the element and be done.
5938
-
5939
-
5940
- if (isDef(vnode.componentInstance)) {
5941
- initComponent(vnode, insertedVnodeQueue);
5942
- insert(parentElm, vnode.elm, refElm);
5943
-
5944
- if (isTrue(isReactivated)) {
5945
- reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);
5946
- }
5947
-
5948
- return true;
5949
- }
5950
- }
5951
- }
5952
-
5953
- function initComponent(vnode, insertedVnodeQueue) {
5954
- if (isDef(vnode.data.pendingInsert)) {
5955
- insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);
5956
- vnode.data.pendingInsert = null;
5957
- }
5958
-
5959
- vnode.elm = vnode.componentInstance.$el;
5960
-
5961
- if (isPatchable(vnode)) {
5962
- invokeCreateHooks(vnode, insertedVnodeQueue);
5963
- setScope(vnode);
5964
- } else {
5965
- // empty component root.
5966
- // skip all element-related modules except for ref (#3455)
5967
- registerRef(vnode); // make sure to invoke the insert hook
5968
-
5969
- insertedVnodeQueue.push(vnode);
5970
- }
5971
- }
5972
-
5973
- function reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm) {
5974
- var i; // hack for #4339: a reactivated component with inner transition
5975
- // does not trigger because the inner node's created hooks are not called
5976
- // again. It's not ideal to involve module-specific logic in here but
5977
- // there doesn't seem to be a better way to do it.
5978
-
5979
- var innerNode = vnode;
5980
-
5981
- while (innerNode.componentInstance) {
5982
- innerNode = innerNode.componentInstance._vnode;
5983
-
5984
- if (isDef(i = innerNode.data) && isDef(i = i.transition)) {
5985
- for (i = 0; i < cbs.activate.length; ++i) {
5986
- cbs.activate[i](emptyNode, innerNode);
5987
- }
5988
-
5989
- insertedVnodeQueue.push(innerNode);
5990
- break;
5991
- }
5992
- } // unlike a newly created component,
5993
- // a reactivated keep-alive component doesn't insert itself
5994
-
5995
-
5996
- insert(parentElm, vnode.elm, refElm);
5997
- }
5998
-
5999
- function insert(parent, elm, ref$$1) {
6000
- if (isDef(parent)) {
6001
- if (isDef(ref$$1)) {
6002
- if (nodeOps.parentNode(ref$$1) === parent) {
6003
- nodeOps.insertBefore(parent, elm, ref$$1);
6004
- }
6005
- } else {
6006
- nodeOps.appendChild(parent, elm);
6007
- }
6008
- }
6009
- }
6010
-
6011
- function createChildren(vnode, children, insertedVnodeQueue) {
6012
- if (Array.isArray(children)) {
6013
- {
6014
- checkDuplicateKeys(children);
6015
- }
6016
-
6017
- for (var i = 0; i < children.length; ++i) {
6018
- createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);
6019
- }
6020
- } else if (isPrimitive(vnode.text)) {
6021
- nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));
6022
- }
6023
- }
6024
-
6025
- function isPatchable(vnode) {
6026
- while (vnode.componentInstance) {
6027
- vnode = vnode.componentInstance._vnode;
6028
- }
6029
-
6030
- return isDef(vnode.tag);
6031
- }
6032
-
6033
- function invokeCreateHooks(vnode, insertedVnodeQueue) {
6034
- for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
6035
- cbs.create[i$1](emptyNode, vnode);
6036
- }
6037
-
6038
- i = vnode.data.hook; // Reuse variable
6039
-
6040
- if (isDef(i)) {
6041
- if (isDef(i.create)) {
6042
- i.create(emptyNode, vnode);
6043
- }
6044
-
6045
- if (isDef(i.insert)) {
6046
- insertedVnodeQueue.push(vnode);
6047
- }
6048
- }
6049
- } // set scope id attribute for scoped CSS.
6050
- // this is implemented as a special case to avoid the overhead
6051
- // of going through the normal attribute patching process.
6052
-
6053
-
6054
- function setScope(vnode) {
6055
- var i;
6056
-
6057
- if (isDef(i = vnode.fnScopeId)) {
6058
- nodeOps.setStyleScope(vnode.elm, i);
6059
- } else {
6060
- var ancestor = vnode;
6061
-
6062
- while (ancestor) {
6063
- if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {
6064
- nodeOps.setStyleScope(vnode.elm, i);
6065
- }
6066
-
6067
- ancestor = ancestor.parent;
6068
- }
6069
- } // for slot content they should also get the scopeId from the host instance.
6070
-
6071
-
6072
- if (isDef(i = activeInstance) && i !== vnode.context && i !== vnode.fnContext && isDef(i = i.$options._scopeId)) {
6073
- nodeOps.setStyleScope(vnode.elm, i);
6074
- }
6075
- }
6076
-
6077
- function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {
6078
- for (; startIdx <= endIdx; ++startIdx) {
6079
- createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);
6080
- }
6081
- }
6082
-
6083
- function invokeDestroyHook(vnode) {
6084
- var i, j;
6085
- var data = vnode.data;
6086
-
6087
- if (isDef(data)) {
6088
- if (isDef(i = data.hook) && isDef(i = i.destroy)) {
6089
- i(vnode);
6090
- }
6091
-
6092
- for (i = 0; i < cbs.destroy.length; ++i) {
6093
- cbs.destroy[i](vnode);
6094
- }
6095
- }
6096
-
6097
- if (isDef(i = vnode.children)) {
6098
- for (j = 0; j < vnode.children.length; ++j) {
6099
- invokeDestroyHook(vnode.children[j]);
6100
- }
6101
- }
6102
- }
6103
-
6104
- function removeVnodes(vnodes, startIdx, endIdx) {
6105
- for (; startIdx <= endIdx; ++startIdx) {
6106
- var ch = vnodes[startIdx];
6107
-
6108
- if (isDef(ch)) {
6109
- if (isDef(ch.tag)) {
6110
- removeAndInvokeRemoveHook(ch);
6111
- invokeDestroyHook(ch);
6112
- } else {
6113
- // Text node
6114
- removeNode(ch.elm);
6115
- }
6116
- }
6117
- }
6118
- }
6119
-
6120
- function removeAndInvokeRemoveHook(vnode, rm) {
6121
- if (isDef(rm) || isDef(vnode.data)) {
6122
- var i;
6123
- var listeners = cbs.remove.length + 1;
6124
-
6125
- if (isDef(rm)) {
6126
- // we have a recursively passed down rm callback
6127
- // increase the listeners count
6128
- rm.listeners += listeners;
6129
- } else {
6130
- // directly removing
6131
- rm = createRmCb(vnode.elm, listeners);
6132
- } // recursively invoke hooks on child component root node
6133
-
6134
-
6135
- if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {
6136
- removeAndInvokeRemoveHook(i, rm);
6137
- }
6138
-
6139
- for (i = 0; i < cbs.remove.length; ++i) {
6140
- cbs.remove[i](vnode, rm);
6141
- }
6142
-
6143
- if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {
6144
- i(vnode, rm);
6145
- } else {
6146
- rm();
6147
- }
6148
- } else {
6149
- removeNode(vnode.elm);
6150
- }
6151
- }
6152
-
6153
- function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {
6154
- var oldStartIdx = 0;
6155
- var newStartIdx = 0;
6156
- var oldEndIdx = oldCh.length - 1;
6157
- var oldStartVnode = oldCh[0];
6158
- var oldEndVnode = oldCh[oldEndIdx];
6159
- var newEndIdx = newCh.length - 1;
6160
- var newStartVnode = newCh[0];
6161
- var newEndVnode = newCh[newEndIdx];
6162
- var oldKeyToIdx, idxInOld, vnodeToMove, refElm; // removeOnly is a special flag used only by <transition-group>
6163
- // to ensure removed elements stay in correct relative positions
6164
- // during leaving transitions
6165
-
6166
- var canMove = !removeOnly;
6167
- {
6168
- checkDuplicateKeys(newCh);
6169
- }
6170
-
6171
- while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
6172
- if (isUndef(oldStartVnode)) {
6173
- oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left
6174
- } else if (isUndef(oldEndVnode)) {
6175
- oldEndVnode = oldCh[--oldEndIdx];
6176
- } else if (sameVnode(oldStartVnode, newStartVnode)) {
6177
- patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);
6178
- oldStartVnode = oldCh[++oldStartIdx];
6179
- newStartVnode = newCh[++newStartIdx];
6180
- } else if (sameVnode(oldEndVnode, newEndVnode)) {
6181
- patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);
6182
- oldEndVnode = oldCh[--oldEndIdx];
6183
- newEndVnode = newCh[--newEndIdx];
6184
- } else if (sameVnode(oldStartVnode, newEndVnode)) {
6185
- // Vnode moved right
6186
- patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);
6187
- canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));
6188
- oldStartVnode = oldCh[++oldStartIdx];
6189
- newEndVnode = newCh[--newEndIdx];
6190
- } else if (sameVnode(oldEndVnode, newStartVnode)) {
6191
- // Vnode moved left
6192
- patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);
6193
- canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
6194
- oldEndVnode = oldCh[--oldEndIdx];
6195
- newStartVnode = newCh[++newStartIdx];
6196
- } else {
6197
- if (isUndef(oldKeyToIdx)) {
6198
- oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);
6199
- }
6200
-
6201
- idxInOld = isDef(newStartVnode.key) ? oldKeyToIdx[newStartVnode.key] : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);
6202
-
6203
- if (isUndef(idxInOld)) {
6204
- // New element
6205
- createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
6206
- } else {
6207
- vnodeToMove = oldCh[idxInOld];
6208
-
6209
- if (sameVnode(vnodeToMove, newStartVnode)) {
6210
- patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);
6211
- oldCh[idxInOld] = undefined;
6212
- canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);
6213
- } else {
6214
- // same key but different element. treat as new element
6215
- createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
6216
- }
6217
- }
6218
-
6219
- newStartVnode = newCh[++newStartIdx];
6220
- }
6221
- }
6222
-
6223
- if (oldStartIdx > oldEndIdx) {
6224
- refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;
6225
- addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
6226
- } else if (newStartIdx > newEndIdx) {
6227
- removeVnodes(oldCh, oldStartIdx, oldEndIdx);
6228
- }
6229
- }
6230
-
6231
- function checkDuplicateKeys(children) {
6232
- var seenKeys = {};
6233
-
6234
- for (var i = 0; i < children.length; i++) {
6235
- var vnode = children[i];
6236
- var key = vnode.key;
6237
-
6238
- if (isDef(key)) {
6239
- if (seenKeys[key]) {
6240
- warn("Duplicate keys detected: '" + key + "'. This may cause an update error.", vnode.context);
6241
- } else {
6242
- seenKeys[key] = true;
6243
- }
6244
- }
6245
- }
6246
- }
6247
-
6248
- function findIdxInOld(node, oldCh, start, end) {
6249
- for (var i = start; i < end; i++) {
6250
- var c = oldCh[i];
6251
-
6252
- if (isDef(c) && sameVnode(node, c)) {
6253
- return i;
6254
- }
6255
- }
6256
- }
6257
-
6258
- function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) {
6259
- if (oldVnode === vnode) {
6260
- return;
6261
- }
6262
-
6263
- if (isDef(vnode.elm) && isDef(ownerArray)) {
6264
- // clone reused vnode
6265
- vnode = ownerArray[index] = cloneVNode(vnode);
6266
- }
6267
-
6268
- var elm = vnode.elm = oldVnode.elm;
6269
-
6270
- if (isTrue(oldVnode.isAsyncPlaceholder)) {
6271
- if (isDef(vnode.asyncFactory.resolved)) {
6272
- hydrate(oldVnode.elm, vnode, insertedVnodeQueue);
6273
- } else {
6274
- vnode.isAsyncPlaceholder = true;
6275
- }
6276
-
6277
- return;
6278
- } // reuse element for static trees.
6279
- // note we only do this if the vnode is cloned -
6280
- // if the new node is not cloned it means the render functions have been
6281
- // reset by the hot-reload-api and we need to do a proper re-render.
6282
-
6283
-
6284
- if (isTrue(vnode.isStatic) && isTrue(oldVnode.isStatic) && vnode.key === oldVnode.key && (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) {
6285
- vnode.componentInstance = oldVnode.componentInstance;
6286
- return;
6287
- }
6288
-
6289
- var i;
6290
- var data = vnode.data;
6291
-
6292
- if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {
6293
- i(oldVnode, vnode);
6294
- }
6295
-
6296
- var oldCh = oldVnode.children;
6297
- var ch = vnode.children;
6298
-
6299
- if (isDef(data) && isPatchable(vnode)) {
6300
- for (i = 0; i < cbs.update.length; ++i) {
6301
- cbs.update[i](oldVnode, vnode);
6302
- }
6303
-
6304
- if (isDef(i = data.hook) && isDef(i = i.update)) {
6305
- i(oldVnode, vnode);
6306
- }
6307
- }
6308
-
6309
- if (isUndef(vnode.text)) {
6310
- if (isDef(oldCh) && isDef(ch)) {
6311
- if (oldCh !== ch) {
6312
- updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly);
6313
- }
6314
- } else if (isDef(ch)) {
6315
- {
6316
- checkDuplicateKeys(ch);
6317
- }
6318
-
6319
- if (isDef(oldVnode.text)) {
6320
- nodeOps.setTextContent(elm, '');
6321
- }
6322
-
6323
- addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
6324
- } else if (isDef(oldCh)) {
6325
- removeVnodes(oldCh, 0, oldCh.length - 1);
6326
- } else if (isDef(oldVnode.text)) {
6327
- nodeOps.setTextContent(elm, '');
6328
- }
6329
- } else if (oldVnode.text !== vnode.text) {
6330
- nodeOps.setTextContent(elm, vnode.text);
6331
- }
6332
-
6333
- if (isDef(data)) {
6334
- if (isDef(i = data.hook) && isDef(i = i.postpatch)) {
6335
- i(oldVnode, vnode);
6336
- }
6337
- }
6338
- }
6339
-
6340
- function invokeInsertHook(vnode, queue, initial) {
6341
- // delay insert hooks for component root nodes, invoke them after the
6342
- // element is really inserted
6343
- if (isTrue(initial) && isDef(vnode.parent)) {
6344
- vnode.parent.data.pendingInsert = queue;
6345
- } else {
6346
- for (var i = 0; i < queue.length; ++i) {
6347
- queue[i].data.hook.insert(queue[i]);
6348
- }
6349
- }
6350
- }
6351
-
6352
- var hydrationBailed = false; // list of modules that can skip create hook during hydration because they
6353
- // are already rendered on the client or has no need for initialization
6354
- // Note: style is excluded because it relies on initial clone for future
6355
- // deep updates (#7063).
6356
-
6357
- var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key'); // Note: this is a browser-only function so we can assume elms are DOM nodes.
6358
-
6359
- function hydrate(elm, vnode, insertedVnodeQueue, inVPre) {
6360
- var i;
6361
- var tag = vnode.tag;
6362
- var data = vnode.data;
6363
- var children = vnode.children;
6364
- inVPre = inVPre || data && data.pre;
6365
- vnode.elm = elm;
6366
-
6367
- if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {
6368
- vnode.isAsyncPlaceholder = true;
6369
- return true;
6370
- } // assert node match
6371
-
6372
-
6373
- {
6374
- if (!assertNodeMatch(elm, vnode, inVPre)) {
6375
- return false;
6376
- }
6377
- }
6378
-
6379
- if (isDef(data)) {
6380
- if (isDef(i = data.hook) && isDef(i = i.init)) {
6381
- i(vnode, true
6382
- /* hydrating */
6383
- );
6384
- }
6385
-
6386
- if (isDef(i = vnode.componentInstance)) {
6387
- // child component. it should have hydrated its own tree.
6388
- initComponent(vnode, insertedVnodeQueue);
6389
- return true;
6390
- }
6391
- }
6392
-
6393
- if (isDef(tag)) {
6394
- if (isDef(children)) {
6395
- // empty element, allow client to pick up and populate children
6396
- if (!elm.hasChildNodes()) {
6397
- createChildren(vnode, children, insertedVnodeQueue);
6398
- } else {
6399
- // v-html and domProps: innerHTML
6400
- if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {
6401
- if (i !== elm.innerHTML) {
6402
- /* istanbul ignore if */
6403
- if (typeof console !== 'undefined' && !hydrationBailed) {
6404
- hydrationBailed = true;
6405
- console.warn('Parent: ', elm);
6406
- console.warn('server innerHTML: ', i);
6407
- console.warn('client innerHTML: ', elm.innerHTML);
6408
- }
6409
-
6410
- return false;
6411
- }
6412
- } else {
6413
- // iterate and compare children lists
6414
- var childrenMatch = true;
6415
- var childNode = elm.firstChild;
6416
-
6417
- for (var i$1 = 0; i$1 < children.length; i$1++) {
6418
- if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {
6419
- childrenMatch = false;
6420
- break;
6421
- }
6422
-
6423
- childNode = childNode.nextSibling;
6424
- } // if childNode is not null, it means the actual childNodes list is
6425
- // longer than the virtual children list.
6426
-
6427
-
6428
- if (!childrenMatch || childNode) {
6429
- /* istanbul ignore if */
6430
- if (typeof console !== 'undefined' && !hydrationBailed) {
6431
- hydrationBailed = true;
6432
- console.warn('Parent: ', elm);
6433
- console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);
6434
- }
6435
-
6436
- return false;
6437
- }
6438
- }
6439
- }
6440
- }
6441
-
6442
- if (isDef(data)) {
6443
- var fullInvoke = false;
6444
-
6445
- for (var key in data) {
6446
- if (!isRenderedModule(key)) {
6447
- fullInvoke = true;
6448
- invokeCreateHooks(vnode, insertedVnodeQueue);
6449
- break;
6450
- }
6451
- }
6452
-
6453
- if (!fullInvoke && data['class']) {
6454
- // ensure collecting deps for deep class bindings for future updates
6455
- traverse(data['class']);
6456
- }
6457
- }
6458
- } else if (elm.data !== vnode.text) {
6459
- elm.data = vnode.text;
6460
- }
6461
-
6462
- return true;
6463
- }
6464
-
6465
- function assertNodeMatch(node, vnode, inVPre) {
6466
- if (isDef(vnode.tag)) {
6467
- return vnode.tag.indexOf('vue-component') === 0 || !isUnknownElement$$1(vnode, inVPre) && vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase());
6468
- } else {
6469
- return node.nodeType === (vnode.isComment ? 8 : 3);
6470
- }
6471
- }
6472
-
6473
- return function patch(oldVnode, vnode, hydrating, removeOnly) {
6474
- if (isUndef(vnode)) {
6475
- if (isDef(oldVnode)) {
6476
- invokeDestroyHook(oldVnode);
6477
- }
6478
-
6479
- return;
6480
- }
6481
-
6482
- var isInitialPatch = false;
6483
- var insertedVnodeQueue = [];
6484
-
6485
- if (isUndef(oldVnode)) {
6486
- // empty mount (likely as component), create new root element
6487
- isInitialPatch = true;
6488
- createElm(vnode, insertedVnodeQueue);
6489
- } else {
6490
- var isRealElement = isDef(oldVnode.nodeType);
6491
-
6492
- if (!isRealElement && sameVnode(oldVnode, vnode)) {
6493
- // patch existing root node
6494
- patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);
6495
- } else {
6496
- if (isRealElement) {
6497
- // mounting to a real element
6498
- // check if this is server-rendered content and if we can perform
6499
- // a successful hydration.
6500
- if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {
6501
- oldVnode.removeAttribute(SSR_ATTR);
6502
- hydrating = true;
6503
- }
6504
-
6505
- if (isTrue(hydrating)) {
6506
- if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {
6507
- invokeInsertHook(vnode, insertedVnodeQueue, true);
6508
- return oldVnode;
6509
- } else {
6510
- warn('The client-side rendered virtual DOM tree is not matching ' + 'server-rendered content. This is likely caused by incorrect ' + 'HTML markup, for example nesting block-level elements inside ' + '<p>, or missing <tbody>. Bailing hydration and performing ' + 'full client-side render.');
6511
- }
6512
- } // either not server-rendered, or hydration failed.
6513
- // create an empty node and replace it
6514
-
6515
-
6516
- oldVnode = emptyNodeAt(oldVnode);
6517
- } // replacing existing element
6518
-
6519
-
6520
- var oldElm = oldVnode.elm;
6521
- var parentElm = nodeOps.parentNode(oldElm); // create new node
6522
-
6523
- createElm(vnode, insertedVnodeQueue, // extremely rare edge case: do not insert if old element is in a
6524
- // leaving transition. Only happens when combining transition +
6525
- // keep-alive + HOCs. (#4590)
6526
- oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm)); // update parent placeholder node element, recursively
6527
-
6528
- if (isDef(vnode.parent)) {
6529
- var ancestor = vnode.parent;
6530
- var patchable = isPatchable(vnode);
6531
-
6532
- while (ancestor) {
6533
- for (var i = 0; i < cbs.destroy.length; ++i) {
6534
- cbs.destroy[i](ancestor);
6535
- }
6536
-
6537
- ancestor.elm = vnode.elm;
6538
-
6539
- if (patchable) {
6540
- for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
6541
- cbs.create[i$1](emptyNode, ancestor);
6542
- } // #6513
6543
- // invoke insert hooks that may have been merged by create hooks.
6544
- // e.g. for directives that uses the "inserted" hook.
6545
-
6546
-
6547
- var insert = ancestor.data.hook.insert;
6548
-
6549
- if (insert.merged) {
6550
- // start at index 1 to avoid re-invoking component mounted hook
6551
- for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {
6552
- insert.fns[i$2]();
6553
- }
6554
- }
6555
- } else {
6556
- registerRef(ancestor);
6557
- }
6558
-
6559
- ancestor = ancestor.parent;
6560
- }
6561
- } // destroy old node
6562
-
6563
-
6564
- if (isDef(parentElm)) {
6565
- removeVnodes([oldVnode], 0, 0);
6566
- } else if (isDef(oldVnode.tag)) {
6567
- invokeDestroyHook(oldVnode);
6568
- }
6569
- }
6570
- }
6571
-
6572
- invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);
6573
- return vnode.elm;
6574
- };
6575
- }
6576
- /* */
6577
-
6578
-
6579
- var directives = {
6580
- create: updateDirectives,
6581
- update: updateDirectives,
6582
- destroy: function unbindDirectives(vnode) {
6583
- updateDirectives(vnode, emptyNode);
6584
- }
6585
- };
6586
-
6587
- function updateDirectives(oldVnode, vnode) {
6588
- if (oldVnode.data.directives || vnode.data.directives) {
6589
- _update(oldVnode, vnode);
6590
- }
6591
- }
6592
-
6593
- function _update(oldVnode, vnode) {
6594
- var isCreate = oldVnode === emptyNode;
6595
- var isDestroy = vnode === emptyNode;
6596
- var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);
6597
- var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);
6598
- var dirsWithInsert = [];
6599
- var dirsWithPostpatch = [];
6600
- var key, oldDir, dir;
6601
-
6602
- for (key in newDirs) {
6603
- oldDir = oldDirs[key];
6604
- dir = newDirs[key];
6605
-
6606
- if (!oldDir) {
6607
- // new directive, bind
6608
- callHook$1(dir, 'bind', vnode, oldVnode);
6609
-
6610
- if (dir.def && dir.def.inserted) {
6611
- dirsWithInsert.push(dir);
6612
- }
6613
- } else {
6614
- // existing directive, update
6615
- dir.oldValue = oldDir.value;
6616
- dir.oldArg = oldDir.arg;
6617
- callHook$1(dir, 'update', vnode, oldVnode);
6618
-
6619
- if (dir.def && dir.def.componentUpdated) {
6620
- dirsWithPostpatch.push(dir);
6621
- }
6622
- }
6623
- }
6624
-
6625
- if (dirsWithInsert.length) {
6626
- var callInsert = function callInsert() {
6627
- for (var i = 0; i < dirsWithInsert.length; i++) {
6628
- callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);
6629
- }
6630
- };
6631
-
6632
- if (isCreate) {
6633
- mergeVNodeHook(vnode, 'insert', callInsert);
6634
- } else {
6635
- callInsert();
6636
- }
6637
- }
6638
-
6639
- if (dirsWithPostpatch.length) {
6640
- mergeVNodeHook(vnode, 'postpatch', function () {
6641
- for (var i = 0; i < dirsWithPostpatch.length; i++) {
6642
- callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);
6643
- }
6644
- });
6645
- }
6646
-
6647
- if (!isCreate) {
6648
- for (key in oldDirs) {
6649
- if (!newDirs[key]) {
6650
- // no longer present, unbind
6651
- callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);
6652
- }
6653
- }
6654
- }
6655
- }
6656
-
6657
- var emptyModifiers = Object.create(null);
6658
-
6659
- function normalizeDirectives$1(dirs, vm) {
6660
- var res = Object.create(null);
6661
-
6662
- if (!dirs) {
6663
- // $flow-disable-line
6664
- return res;
6665
- }
6666
-
6667
- var i, dir;
6668
-
6669
- for (i = 0; i < dirs.length; i++) {
6670
- dir = dirs[i];
6671
-
6672
- if (!dir.modifiers) {
6673
- // $flow-disable-line
6674
- dir.modifiers = emptyModifiers;
6675
- }
6676
-
6677
- res[getRawDirName(dir)] = dir;
6678
- dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);
6679
- } // $flow-disable-line
6680
-
6681
-
6682
- return res;
6683
- }
6684
-
6685
- function getRawDirName(dir) {
6686
- return dir.rawName || dir.name + "." + Object.keys(dir.modifiers || {}).join('.');
6687
- }
6688
-
6689
- function callHook$1(dir, hook, vnode, oldVnode, isDestroy) {
6690
- var fn = dir.def && dir.def[hook];
6691
-
6692
- if (fn) {
6693
- try {
6694
- fn(vnode.elm, dir, vnode, oldVnode, isDestroy);
6695
- } catch (e) {
6696
- handleError(e, vnode.context, "directive " + dir.name + " " + hook + " hook");
6697
- }
6698
- }
6699
- }
6700
-
6701
- var baseModules = [ref, directives];
6702
- /* */
6703
-
6704
- function updateAttrs(oldVnode, vnode) {
6705
- var opts = vnode.componentOptions;
6706
-
6707
- if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {
6708
- return;
6709
- }
6710
-
6711
- if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {
6712
- return;
6713
- }
6714
-
6715
- var key, cur, old;
6716
- var elm = vnode.elm;
6717
- var oldAttrs = oldVnode.data.attrs || {};
6718
- var attrs = vnode.data.attrs || {}; // clone observed objects, as the user probably wants to mutate it
6719
-
6720
- if (isDef(attrs.__ob__)) {
6721
- attrs = vnode.data.attrs = extend({}, attrs);
6722
- }
6723
-
6724
- for (key in attrs) {
6725
- cur = attrs[key];
6726
- old = oldAttrs[key];
6727
-
6728
- if (old !== cur) {
6729
- setAttr(elm, key, cur);
6730
- }
6731
- } // #4391: in IE9, setting type can reset value for input[type=radio]
6732
- // #6666: IE/Edge forces progress value down to 1 before setting a max
6733
-
6734
- /* istanbul ignore if */
6735
-
6736
-
6737
- if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {
6738
- setAttr(elm, 'value', attrs.value);
6739
- }
6740
-
6741
- for (key in oldAttrs) {
6742
- if (isUndef(attrs[key])) {
6743
- if (isXlink(key)) {
6744
- elm.removeAttributeNS(xlinkNS, getXlinkProp(key));
6745
- } else if (!isEnumeratedAttr(key)) {
6746
- elm.removeAttribute(key);
6747
- }
6748
- }
6749
- }
6750
- }
6751
-
6752
- function setAttr(el, key, value) {
6753
- if (el.tagName.indexOf('-') > -1) {
6754
- baseSetAttr(el, key, value);
6755
- } else if (isBooleanAttr(key)) {
6756
- // set attribute for blank value
6757
- // e.g. <option disabled>Select one</option>
6758
- if (isFalsyAttrValue(value)) {
6759
- el.removeAttribute(key);
6760
- } else {
6761
- // technically allowfullscreen is a boolean attribute for <iframe>,
6762
- // but Flash expects a value of "true" when used on <embed> tag
6763
- value = key === 'allowfullscreen' && el.tagName === 'EMBED' ? 'true' : key;
6764
- el.setAttribute(key, value);
6765
- }
6766
- } else if (isEnumeratedAttr(key)) {
6767
- el.setAttribute(key, convertEnumeratedValue(key, value));
6768
- } else if (isXlink(key)) {
6769
- if (isFalsyAttrValue(value)) {
6770
- el.removeAttributeNS(xlinkNS, getXlinkProp(key));
6771
- } else {
6772
- el.setAttributeNS(xlinkNS, key, value);
6773
- }
6774
- } else {
6775
- baseSetAttr(el, key, value);
6776
- }
6777
- }
6778
-
6779
- function baseSetAttr(el, key, value) {
6780
- if (isFalsyAttrValue(value)) {
6781
- el.removeAttribute(key);
6782
- } else {
6783
- // #7138: IE10 & 11 fires input event when setting placeholder on
6784
- // <textarea>... block the first input event and remove the blocker
6785
- // immediately.
6786
-
6787
- /* istanbul ignore if */
6788
- if (isIE && !isIE9 && el.tagName === 'TEXTAREA' && key === 'placeholder' && value !== '' && !el.__ieph) {
6789
- var blocker = function blocker(e) {
6790
- e.stopImmediatePropagation();
6791
- el.removeEventListener('input', blocker);
6792
- };
6793
-
6794
- el.addEventListener('input', blocker); // $flow-disable-line
6795
-
6796
- el.__ieph = true;
6797
- /* IE placeholder patched */
6798
- }
6799
-
6800
- el.setAttribute(key, value);
6801
- }
6802
- }
6803
-
6804
- var attrs = {
6805
- create: updateAttrs,
6806
- update: updateAttrs
6807
- };
6808
- /* */
6809
-
6810
- function updateClass(oldVnode, vnode) {
6811
- var el = vnode.elm;
6812
- var data = vnode.data;
6813
- var oldData = oldVnode.data;
6814
-
6815
- if (isUndef(data.staticClass) && isUndef(data["class"]) && (isUndef(oldData) || isUndef(oldData.staticClass) && isUndef(oldData["class"]))) {
6816
- return;
6817
- }
6818
-
6819
- var cls = genClassForVnode(vnode); // handle transition classes
6820
-
6821
- var transitionClass = el._transitionClasses;
6822
-
6823
- if (isDef(transitionClass)) {
6824
- cls = concat(cls, stringifyClass(transitionClass));
6825
- } // set the class
6826
-
6827
-
6828
- if (cls !== el._prevClass) {
6829
- el.setAttribute('class', cls);
6830
- el._prevClass = cls;
6831
- }
6832
- }
6833
-
6834
- var klass = {
6835
- create: updateClass,
6836
- update: updateClass
6837
- };
6838
- /* */
6839
-
6840
- var validDivisionCharRE = /[\w).+\-_$\]]/;
6841
-
6842
- function parseFilters(exp) {
6843
- var inSingle = false;
6844
- var inDouble = false;
6845
- var inTemplateString = false;
6846
- var inRegex = false;
6847
- var curly = 0;
6848
- var square = 0;
6849
- var paren = 0;
6850
- var lastFilterIndex = 0;
6851
- var c, prev, i, expression, filters;
6852
-
6853
- for (i = 0; i < exp.length; i++) {
6854
- prev = c;
6855
- c = exp.charCodeAt(i);
6856
-
6857
- if (inSingle) {
6858
- if (c === 0x27 && prev !== 0x5C) {
6859
- inSingle = false;
6860
- }
6861
- } else if (inDouble) {
6862
- if (c === 0x22 && prev !== 0x5C) {
6863
- inDouble = false;
6864
- }
6865
- } else if (inTemplateString) {
6866
- if (c === 0x60 && prev !== 0x5C) {
6867
- inTemplateString = false;
6868
- }
6869
- } else if (inRegex) {
6870
- if (c === 0x2f && prev !== 0x5C) {
6871
- inRegex = false;
6872
- }
6873
- } else if (c === 0x7C && // pipe
6874
- exp.charCodeAt(i + 1) !== 0x7C && exp.charCodeAt(i - 1) !== 0x7C && !curly && !square && !paren) {
6875
- if (expression === undefined) {
6876
- // first filter, end of expression
6877
- lastFilterIndex = i + 1;
6878
- expression = exp.slice(0, i).trim();
6879
- } else {
6880
- pushFilter();
6881
- }
6882
- } else {
6883
- switch (c) {
6884
- case 0x22:
6885
- inDouble = true;
6886
- break;
6887
- // "
6888
-
6889
- case 0x27:
6890
- inSingle = true;
6891
- break;
6892
- // '
6893
-
6894
- case 0x60:
6895
- inTemplateString = true;
6896
- break;
6897
- // `
6898
-
6899
- case 0x28:
6900
- paren++;
6901
- break;
6902
- // (
6903
-
6904
- case 0x29:
6905
- paren--;
6906
- break;
6907
- // )
6908
-
6909
- case 0x5B:
6910
- square++;
6911
- break;
6912
- // [
6913
-
6914
- case 0x5D:
6915
- square--;
6916
- break;
6917
- // ]
6918
-
6919
- case 0x7B:
6920
- curly++;
6921
- break;
6922
- // {
6923
-
6924
- case 0x7D:
6925
- curly--;
6926
- break;
6927
- // }
6928
- }
6929
-
6930
- if (c === 0x2f) {
6931
- // /
6932
- var j = i - 1;
6933
- var p = void 0; // find first non-whitespace prev char
6934
-
6935
- for (; j >= 0; j--) {
6936
- p = exp.charAt(j);
6937
-
6938
- if (p !== ' ') {
6939
- break;
6940
- }
6941
- }
6942
-
6943
- if (!p || !validDivisionCharRE.test(p)) {
6944
- inRegex = true;
6945
- }
6946
- }
6947
- }
6948
- }
6949
-
6950
- if (expression === undefined) {
6951
- expression = exp.slice(0, i).trim();
6952
- } else if (lastFilterIndex !== 0) {
6953
- pushFilter();
6954
- }
6955
-
6956
- function pushFilter() {
6957
- (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());
6958
- lastFilterIndex = i + 1;
6959
- }
6960
-
6961
- if (filters) {
6962
- for (i = 0; i < filters.length; i++) {
6963
- expression = wrapFilter(expression, filters[i]);
6964
- }
6965
- }
6966
-
6967
- return expression;
6968
- }
6969
-
6970
- function wrapFilter(exp, filter) {
6971
- var i = filter.indexOf('(');
6972
-
6973
- if (i < 0) {
6974
- // _f: resolveFilter
6975
- return "_f(\"" + filter + "\")(" + exp + ")";
6976
- } else {
6977
- var name = filter.slice(0, i);
6978
- var args = filter.slice(i + 1);
6979
- return "_f(\"" + name + "\")(" + exp + (args !== ')' ? ',' + args : args);
6980
- }
6981
- }
6982
- /* */
6983
-
6984
- /* eslint-disable no-unused-vars */
6985
-
6986
-
6987
- function baseWarn(msg, range) {
6988
- console.error("[Vue compiler]: " + msg);
6989
- }
6990
- /* eslint-enable no-unused-vars */
6991
-
6992
-
6993
- function pluckModuleFunction(modules, key) {
6994
- return modules ? modules.map(function (m) {
6995
- return m[key];
6996
- }).filter(function (_) {
6997
- return _;
6998
- }) : [];
6999
- }
7000
-
7001
- function addProp(el, name, value, range, dynamic) {
7002
- (el.props || (el.props = [])).push(rangeSetItem({
7003
- name: name,
7004
- value: value,
7005
- dynamic: dynamic
7006
- }, range));
7007
- el.plain = false;
7008
- }
7009
-
7010
- function addAttr(el, name, value, range, dynamic) {
7011
- var attrs = dynamic ? el.dynamicAttrs || (el.dynamicAttrs = []) : el.attrs || (el.attrs = []);
7012
- attrs.push(rangeSetItem({
7013
- name: name,
7014
- value: value,
7015
- dynamic: dynamic
7016
- }, range));
7017
- el.plain = false;
7018
- } // add a raw attr (use this in preTransforms)
7019
-
7020
-
7021
- function addRawAttr(el, name, value, range) {
7022
- el.attrsMap[name] = value;
7023
- el.attrsList.push(rangeSetItem({
7024
- name: name,
7025
- value: value
7026
- }, range));
7027
- }
7028
-
7029
- function addDirective(el, name, rawName, value, arg, isDynamicArg, modifiers, range) {
7030
- (el.directives || (el.directives = [])).push(rangeSetItem({
7031
- name: name,
7032
- rawName: rawName,
7033
- value: value,
7034
- arg: arg,
7035
- isDynamicArg: isDynamicArg,
7036
- modifiers: modifiers
7037
- }, range));
7038
- el.plain = false;
7039
- }
7040
-
7041
- function prependModifierMarker(symbol, name, dynamic) {
7042
- return dynamic ? "_p(" + name + ",\"" + symbol + "\")" : symbol + name; // mark the event as captured
7043
- }
7044
-
7045
- function addHandler(el, name, value, modifiers, important, warn, range, dynamic) {
7046
- modifiers = modifiers || emptyObject; // warn prevent and passive modifier
7047
-
7048
- /* istanbul ignore if */
7049
-
7050
- if (warn && modifiers.prevent && modifiers.passive) {
7051
- warn('passive and prevent can\'t be used together. ' + 'Passive handler can\'t prevent default event.', range);
7052
- } // normalize click.right and click.middle since they don't actually fire
7053
- // this is technically browser-specific, but at least for now browsers are
7054
- // the only target envs that have right/middle clicks.
7055
-
7056
-
7057
- if (modifiers.right) {
7058
- if (dynamic) {
7059
- name = "(" + name + ")==='click'?'contextmenu':(" + name + ")";
7060
- } else if (name === 'click') {
7061
- name = 'contextmenu';
7062
- delete modifiers.right;
7063
- }
7064
- } else if (modifiers.middle) {
7065
- if (dynamic) {
7066
- name = "(" + name + ")==='click'?'mouseup':(" + name + ")";
7067
- } else if (name === 'click') {
7068
- name = 'mouseup';
7069
- }
7070
- } // check capture modifier
7071
-
7072
-
7073
- if (modifiers.capture) {
7074
- delete modifiers.capture;
7075
- name = prependModifierMarker('!', name, dynamic);
7076
- }
7077
-
7078
- if (modifiers.once) {
7079
- delete modifiers.once;
7080
- name = prependModifierMarker('~', name, dynamic);
7081
- }
7082
- /* istanbul ignore if */
7083
-
7084
-
7085
- if (modifiers.passive) {
7086
- delete modifiers.passive;
7087
- name = prependModifierMarker('&', name, dynamic);
7088
- }
7089
-
7090
- var events;
7091
-
7092
- if (modifiers["native"]) {
7093
- delete modifiers["native"];
7094
- events = el.nativeEvents || (el.nativeEvents = {});
7095
- } else {
7096
- events = el.events || (el.events = {});
7097
- }
7098
-
7099
- var newHandler = rangeSetItem({
7100
- value: value.trim(),
7101
- dynamic: dynamic
7102
- }, range);
7103
-
7104
- if (modifiers !== emptyObject) {
7105
- newHandler.modifiers = modifiers;
7106
- }
7107
-
7108
- var handlers = events[name];
7109
- /* istanbul ignore if */
7110
-
7111
- if (Array.isArray(handlers)) {
7112
- important ? handlers.unshift(newHandler) : handlers.push(newHandler);
7113
- } else if (handlers) {
7114
- events[name] = important ? [newHandler, handlers] : [handlers, newHandler];
7115
- } else {
7116
- events[name] = newHandler;
7117
- }
7118
-
7119
- el.plain = false;
7120
- }
7121
-
7122
- function getRawBindingAttr(el, name) {
7123
- return el.rawAttrsMap[':' + name] || el.rawAttrsMap['v-bind:' + name] || el.rawAttrsMap[name];
7124
- }
7125
-
7126
- function getBindingAttr(el, name, getStatic) {
7127
- var dynamicValue = getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name);
7128
-
7129
- if (dynamicValue != null) {
7130
- return parseFilters(dynamicValue);
7131
- } else if (getStatic !== false) {
7132
- var staticValue = getAndRemoveAttr(el, name);
7133
-
7134
- if (staticValue != null) {
7135
- return JSON.stringify(staticValue);
7136
- }
7137
- }
7138
- } // note: this only removes the attr from the Array (attrsList) so that it
7139
- // doesn't get processed by processAttrs.
7140
- // By default it does NOT remove it from the map (attrsMap) because the map is
7141
- // needed during codegen.
7142
-
7143
-
7144
- function getAndRemoveAttr(el, name, removeFromMap) {
7145
- var val;
7146
-
7147
- if ((val = el.attrsMap[name]) != null) {
7148
- var list = el.attrsList;
7149
-
7150
- for (var i = 0, l = list.length; i < l; i++) {
7151
- if (list[i].name === name) {
7152
- list.splice(i, 1);
7153
- break;
7154
- }
7155
- }
7156
- }
7157
-
7158
- if (removeFromMap) {
7159
- delete el.attrsMap[name];
7160
- }
7161
-
7162
- return val;
7163
- }
7164
-
7165
- function getAndRemoveAttrByRegex(el, name) {
7166
- var list = el.attrsList;
7167
-
7168
- for (var i = 0, l = list.length; i < l; i++) {
7169
- var attr = list[i];
7170
-
7171
- if (name.test(attr.name)) {
7172
- list.splice(i, 1);
7173
- return attr;
7174
- }
7175
- }
7176
- }
7177
-
7178
- function rangeSetItem(item, range) {
7179
- if (range) {
7180
- if (range.start != null) {
7181
- item.start = range.start;
7182
- }
7183
-
7184
- if (range.end != null) {
7185
- item.end = range.end;
7186
- }
7187
- }
7188
-
7189
- return item;
7190
- }
7191
- /* */
7192
-
7193
- /**
7194
- * Cross-platform code generation for component v-model
7195
- */
7196
-
7197
-
7198
- function genComponentModel(el, value, modifiers) {
7199
- var ref = modifiers || {};
7200
- var number = ref.number;
7201
- var trim = ref.trim;
7202
- var baseValueExpression = '$$v';
7203
- var valueExpression = baseValueExpression;
7204
-
7205
- if (trim) {
7206
- valueExpression = "(typeof " + baseValueExpression + " === 'string'" + "? " + baseValueExpression + ".trim()" + ": " + baseValueExpression + ")";
7207
- }
7208
-
7209
- if (number) {
7210
- valueExpression = "_n(" + valueExpression + ")";
7211
- }
7212
-
7213
- var assignment = genAssignmentCode(value, valueExpression);
7214
- el.model = {
7215
- value: "(" + value + ")",
7216
- expression: JSON.stringify(value),
7217
- callback: "function (" + baseValueExpression + ") {" + assignment + "}"
7218
- };
7219
- }
7220
- /**
7221
- * Cross-platform codegen helper for generating v-model value assignment code.
7222
- */
7223
-
7224
-
7225
- function genAssignmentCode(value, assignment) {
7226
- var res = parseModel(value);
7227
-
7228
- if (res.key === null) {
7229
- return value + "=" + assignment;
7230
- } else {
7231
- return "$set(" + res.exp + ", " + res.key + ", " + assignment + ")";
7232
- }
7233
- }
7234
- /**
7235
- * Parse a v-model expression into a base path and a final key segment.
7236
- * Handles both dot-path and possible square brackets.
7237
- *
7238
- * Possible cases:
7239
- *
7240
- * - test
7241
- * - test[key]
7242
- * - test[test1[key]]
7243
- * - test["a"][key]
7244
- * - xxx.test[a[a].test1[key]]
7245
- * - test.xxx.a["asa"][test1[key]]
7246
- *
7247
- */
7248
-
7249
-
7250
- var len, str, chr, index$1, expressionPos, expressionEndPos;
7251
-
7252
- function parseModel(val) {
7253
- // Fix https://github.com/vuejs/vue/pull/7730
7254
- // allow v-model="obj.val " (trailing whitespace)
7255
- val = val.trim();
7256
- len = val.length;
7257
-
7258
- if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {
7259
- index$1 = val.lastIndexOf('.');
7260
-
7261
- if (index$1 > -1) {
7262
- return {
7263
- exp: val.slice(0, index$1),
7264
- key: '"' + val.slice(index$1 + 1) + '"'
7265
- };
7266
- } else {
7267
- return {
7268
- exp: val,
7269
- key: null
7270
- };
7271
- }
7272
- }
7273
-
7274
- str = val;
7275
- index$1 = expressionPos = expressionEndPos = 0;
7276
-
7277
- while (!eof()) {
7278
- chr = next();
7279
- /* istanbul ignore if */
7280
-
7281
- if (isStringStart(chr)) {
7282
- parseString(chr);
7283
- } else if (chr === 0x5B) {
7284
- parseBracket(chr);
7285
- }
7286
- }
7287
-
7288
- return {
7289
- exp: val.slice(0, expressionPos),
7290
- key: val.slice(expressionPos + 1, expressionEndPos)
7291
- };
7292
- }
7293
-
7294
- function next() {
7295
- return str.charCodeAt(++index$1);
7296
- }
7297
-
7298
- function eof() {
7299
- return index$1 >= len;
7300
- }
7301
-
7302
- function isStringStart(chr) {
7303
- return chr === 0x22 || chr === 0x27;
7304
- }
7305
-
7306
- function parseBracket(chr) {
7307
- var inBracket = 1;
7308
- expressionPos = index$1;
7309
-
7310
- while (!eof()) {
7311
- chr = next();
7312
-
7313
- if (isStringStart(chr)) {
7314
- parseString(chr);
7315
- continue;
7316
- }
7317
-
7318
- if (chr === 0x5B) {
7319
- inBracket++;
7320
- }
7321
-
7322
- if (chr === 0x5D) {
7323
- inBracket--;
7324
- }
7325
-
7326
- if (inBracket === 0) {
7327
- expressionEndPos = index$1;
7328
- break;
7329
- }
7330
- }
7331
- }
7332
-
7333
- function parseString(chr) {
7334
- var stringQuote = chr;
7335
-
7336
- while (!eof()) {
7337
- chr = next();
7338
-
7339
- if (chr === stringQuote) {
7340
- break;
7341
- }
7342
- }
7343
- }
7344
- /* */
7345
-
7346
-
7347
- var warn$1; // in some cases, the event used has to be determined at runtime
7348
- // so we used some reserved tokens during compile.
7349
-
7350
- var RANGE_TOKEN = '__r';
7351
- var CHECKBOX_RADIO_TOKEN = '__c';
7352
-
7353
- function model(el, dir, _warn) {
7354
- warn$1 = _warn;
7355
- var value = dir.value;
7356
- var modifiers = dir.modifiers;
7357
- var tag = el.tag;
7358
- var type = el.attrsMap.type;
7359
- {
7360
- // inputs with type="file" are read only and setting the input's
7361
- // value will throw an error.
7362
- if (tag === 'input' && type === 'file') {
7363
- warn$1("<" + el.tag + " v-model=\"" + value + "\" type=\"file\">:\n" + "File inputs are read only. Use a v-on:change listener instead.", el.rawAttrsMap['v-model']);
7364
- }
7365
- }
7366
-
7367
- if (el.component) {
7368
- genComponentModel(el, value, modifiers); // component v-model doesn't need extra runtime
7369
-
7370
- return false;
7371
- } else if (tag === 'select') {
7372
- genSelect(el, value, modifiers);
7373
- } else if (tag === 'input' && type === 'checkbox') {
7374
- genCheckboxModel(el, value, modifiers);
7375
- } else if (tag === 'input' && type === 'radio') {
7376
- genRadioModel(el, value, modifiers);
7377
- } else if (tag === 'input' || tag === 'textarea') {
7378
- genDefaultModel(el, value, modifiers);
7379
- } else if (!config.isReservedTag(tag)) {
7380
- genComponentModel(el, value, modifiers); // component v-model doesn't need extra runtime
7381
-
7382
- return false;
7383
- } else {
7384
- warn$1("<" + el.tag + " v-model=\"" + value + "\">: " + "v-model is not supported on this element type. " + 'If you are working with contenteditable, it\'s recommended to ' + 'wrap a library dedicated for that purpose inside a custom component.', el.rawAttrsMap['v-model']);
7385
- } // ensure runtime directive metadata
7386
-
7387
-
7388
- return true;
7389
- }
7390
-
7391
- function genCheckboxModel(el, value, modifiers) {
7392
- var number = modifiers && modifiers.number;
7393
- var valueBinding = getBindingAttr(el, 'value') || 'null';
7394
- var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';
7395
- var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';
7396
- addProp(el, 'checked', "Array.isArray(" + value + ")" + "?_i(" + value + "," + valueBinding + ")>-1" + (trueValueBinding === 'true' ? ":(" + value + ")" : ":_q(" + value + "," + trueValueBinding + ")"));
7397
- addHandler(el, 'change', "var $$a=" + value + "," + '$$el=$event.target,' + "$$c=$$el.checked?(" + trueValueBinding + "):(" + falseValueBinding + ");" + 'if(Array.isArray($$a)){' + "var $$v=" + (number ? '_n(' + valueBinding + ')' : valueBinding) + "," + '$$i=_i($$a,$$v);' + "if($$el.checked){$$i<0&&(" + genAssignmentCode(value, '$$a.concat([$$v])') + ")}" + "else{$$i>-1&&(" + genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))') + ")}" + "}else{" + genAssignmentCode(value, '$$c') + "}", null, true);
7398
- }
7399
-
7400
- function genRadioModel(el, value, modifiers) {
7401
- var number = modifiers && modifiers.number;
7402
- var valueBinding = getBindingAttr(el, 'value') || 'null';
7403
- valueBinding = number ? "_n(" + valueBinding + ")" : valueBinding;
7404
- addProp(el, 'checked', "_q(" + value + "," + valueBinding + ")");
7405
- addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);
7406
- }
7407
-
7408
- function genSelect(el, value, modifiers) {
7409
- var number = modifiers && modifiers.number;
7410
- var selectedVal = "Array.prototype.filter" + ".call($event.target.options,function(o){return o.selected})" + ".map(function(o){var val = \"_value\" in o ? o._value : o.value;" + "return " + (number ? '_n(val)' : 'val') + "})";
7411
- var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';
7412
- var code = "var $$selectedVal = " + selectedVal + ";";
7413
- code = code + " " + genAssignmentCode(value, assignment);
7414
- addHandler(el, 'change', code, null, true);
7415
- }
7416
-
7417
- function genDefaultModel(el, value, modifiers) {
7418
- var type = el.attrsMap.type; // warn if v-bind:value conflicts with v-model
7419
- // except for inputs with v-bind:type
7420
-
7421
- {
7422
- var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];
7423
- var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];
7424
-
7425
- if (value$1 && !typeBinding) {
7426
- var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';
7427
- warn$1(binding + "=\"" + value$1 + "\" conflicts with v-model on the same element " + 'because the latter already expands to a value binding internally', el.rawAttrsMap[binding]);
7428
- }
7429
- }
7430
- var ref = modifiers || {};
7431
- var lazy = ref.lazy;
7432
- var number = ref.number;
7433
- var trim = ref.trim;
7434
- var needCompositionGuard = !lazy && type !== 'range';
7435
- var event = lazy ? 'change' : type === 'range' ? RANGE_TOKEN : 'input';
7436
- var valueExpression = '$event.target.value';
7437
-
7438
- if (trim) {
7439
- valueExpression = "$event.target.value.trim()";
7440
- }
7441
-
7442
- if (number) {
7443
- valueExpression = "_n(" + valueExpression + ")";
7444
- }
7445
-
7446
- var code = genAssignmentCode(value, valueExpression);
7447
-
7448
- if (needCompositionGuard) {
7449
- code = "if($event.target.composing)return;" + code;
7450
- }
7451
-
7452
- addProp(el, 'value', "(" + value + ")");
7453
- addHandler(el, event, code, null, true);
7454
-
7455
- if (trim || number) {
7456
- addHandler(el, 'blur', '$forceUpdate()');
7457
- }
7458
- }
7459
- /* */
7460
- // normalize v-model event tokens that can only be determined at runtime.
7461
- // it's important to place the event as the first in the array because
7462
- // the whole point is ensuring the v-model callback gets called before
7463
- // user-attached handlers.
7464
-
7465
-
7466
- function normalizeEvents(on) {
7467
- /* istanbul ignore if */
7468
- if (isDef(on[RANGE_TOKEN])) {
7469
- // IE input[type=range] only supports `change` event
7470
- var event = isIE ? 'change' : 'input';
7471
- on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);
7472
- delete on[RANGE_TOKEN];
7473
- } // This was originally intended to fix #4521 but no longer necessary
7474
- // after 2.5. Keeping it for backwards compat with generated code from < 2.4
7475
-
7476
- /* istanbul ignore if */
7477
-
7478
-
7479
- if (isDef(on[CHECKBOX_RADIO_TOKEN])) {
7480
- on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);
7481
- delete on[CHECKBOX_RADIO_TOKEN];
7482
- }
7483
- }
7484
-
7485
- var target$1;
7486
-
7487
- function createOnceHandler$1(event, handler, capture) {
7488
- var _target = target$1; // save current target element in closure
7489
-
7490
- return function onceHandler() {
7491
- var res = handler.apply(null, arguments);
7492
-
7493
- if (res !== null) {
7494
- remove$2(event, onceHandler, capture, _target);
7495
- }
7496
- };
7497
- } // #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp
7498
- // implementation and does not fire microtasks in between event propagation, so
7499
- // safe to exclude.
7500
-
7501
-
7502
- var useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);
7503
-
7504
- function add$1(name, handler, capture, passive) {
7505
- // async edge case #6566: inner click event triggers patch, event handler
7506
- // attached to outer element during patch, and triggered again. This
7507
- // happens because browsers fire microtask ticks between event propagation.
7508
- // the solution is simple: we save the timestamp when a handler is attached,
7509
- // and the handler would only fire if the event passed to it was fired
7510
- // AFTER it was attached.
7511
- if (useMicrotaskFix) {
7512
- var attachedTimestamp = currentFlushTimestamp;
7513
- var original = handler;
7514
-
7515
- handler = original._wrapper = function (e) {
7516
- if ( // no bubbling, should always fire.
7517
- // this is just a safety net in case event.timeStamp is unreliable in
7518
- // certain weird environments...
7519
- e.target === e.currentTarget || // event is fired after handler attachment
7520
- e.timeStamp >= attachedTimestamp || // bail for environments that have buggy event.timeStamp implementations
7521
- // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState
7522
- // #9681 QtWebEngine event.timeStamp is negative value
7523
- e.timeStamp <= 0 || // #9448 bail if event is fired in another document in a multi-page
7524
- // electron/nw.js app, since event.timeStamp will be using a different
7525
- // starting reference
7526
- e.target.ownerDocument !== document) {
7527
- return original.apply(this, arguments);
7528
- }
7529
- };
7530
- }
7531
-
7532
- target$1.addEventListener(name, handler, supportsPassive ? {
7533
- capture: capture,
7534
- passive: passive
7535
- } : capture);
7536
- }
7537
-
7538
- function remove$2(name, handler, capture, _target) {
7539
- (_target || target$1).removeEventListener(name, handler._wrapper || handler, capture);
7540
- }
7541
-
7542
- function updateDOMListeners(oldVnode, vnode) {
7543
- if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {
7544
- return;
7545
- }
7546
-
7547
- var on = vnode.data.on || {};
7548
- var oldOn = oldVnode.data.on || {};
7549
- target$1 = vnode.elm;
7550
- normalizeEvents(on);
7551
- updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);
7552
- target$1 = undefined;
7553
- }
7554
-
7555
- var events = {
7556
- create: updateDOMListeners,
7557
- update: updateDOMListeners
7558
- };
7559
- /* */
7560
-
7561
- var svgContainer;
7562
-
7563
- function updateDOMProps(oldVnode, vnode) {
7564
- if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {
7565
- return;
7566
- }
7567
-
7568
- var key, cur;
7569
- var elm = vnode.elm;
7570
- var oldProps = oldVnode.data.domProps || {};
7571
- var props = vnode.data.domProps || {}; // clone observed objects, as the user probably wants to mutate it
7572
-
7573
- if (isDef(props.__ob__)) {
7574
- props = vnode.data.domProps = extend({}, props);
7575
- }
7576
-
7577
- for (key in oldProps) {
7578
- if (!(key in props)) {
7579
- elm[key] = '';
7580
- }
7581
- }
7582
-
7583
- for (key in props) {
7584
- cur = props[key]; // ignore children if the node has textContent or innerHTML,
7585
- // as these will throw away existing DOM nodes and cause removal errors
7586
- // on subsequent patches (#3360)
7587
-
7588
- if (key === 'textContent' || key === 'innerHTML') {
7589
- if (vnode.children) {
7590
- vnode.children.length = 0;
7591
- }
7592
-
7593
- if (cur === oldProps[key]) {
7594
- continue;
7595
- } // #6601 work around Chrome version <= 55 bug where single textNode
7596
- // replaced by innerHTML/textContent retains its parentNode property
7597
-
7598
-
7599
- if (elm.childNodes.length === 1) {
7600
- elm.removeChild(elm.childNodes[0]);
7601
- }
7602
- }
7603
-
7604
- if (key === 'value' && elm.tagName !== 'PROGRESS') {
7605
- // store value as _value as well since
7606
- // non-string values will be stringified
7607
- elm._value = cur; // avoid resetting cursor position when value is the same
7608
-
7609
- var strCur = isUndef(cur) ? '' : String(cur);
7610
-
7611
- if (shouldUpdateValue(elm, strCur)) {
7612
- elm.value = strCur;
7613
- }
7614
- } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {
7615
- // IE doesn't support innerHTML for SVG elements
7616
- svgContainer = svgContainer || document.createElement('div');
7617
- svgContainer.innerHTML = "<svg>" + cur + "</svg>";
7618
- var svg = svgContainer.firstChild;
7619
-
7620
- while (elm.firstChild) {
7621
- elm.removeChild(elm.firstChild);
7622
- }
7623
-
7624
- while (svg.firstChild) {
7625
- elm.appendChild(svg.firstChild);
7626
- }
7627
- } else if ( // skip the update if old and new VDOM state is the same.
7628
- // `value` is handled separately because the DOM value may be temporarily
7629
- // out of sync with VDOM state due to focus, composition and modifiers.
7630
- // This #4521 by skipping the unnecessary `checked` update.
7631
- cur !== oldProps[key]) {
7632
- // some property updates can throw
7633
- // e.g. `value` on <progress> w/ non-finite value
7634
- try {
7635
- elm[key] = cur;
7636
- } catch (e) {}
7637
- }
7638
- }
7639
- } // check platforms/web/util/attrs.js acceptValue
7640
-
7641
-
7642
- function shouldUpdateValue(elm, checkVal) {
7643
- return !elm.composing && (elm.tagName === 'OPTION' || isNotInFocusAndDirty(elm, checkVal) || isDirtyWithModifiers(elm, checkVal));
7644
- }
7645
-
7646
- function isNotInFocusAndDirty(elm, checkVal) {
7647
- // return true when textbox (.number and .trim) loses focus and its value is
7648
- // not equal to the updated value
7649
- var notInFocus = true; // #6157
7650
- // work around IE bug when accessing document.activeElement in an iframe
7651
-
7652
- try {
7653
- notInFocus = document.activeElement !== elm;
7654
- } catch (e) {}
7655
-
7656
- return notInFocus && elm.value !== checkVal;
7657
- }
7658
-
7659
- function isDirtyWithModifiers(elm, newVal) {
7660
- var value = elm.value;
7661
- var modifiers = elm._vModifiers; // injected by v-model runtime
7662
-
7663
- if (isDef(modifiers)) {
7664
- if (modifiers.number) {
7665
- return toNumber(value) !== toNumber(newVal);
7666
- }
7667
-
7668
- if (modifiers.trim) {
7669
- return value.trim() !== newVal.trim();
7670
- }
7671
- }
7672
-
7673
- return value !== newVal;
7674
- }
7675
-
7676
- var domProps = {
7677
- create: updateDOMProps,
7678
- update: updateDOMProps
7679
- };
7680
- /* */
7681
-
7682
- var parseStyleText = cached(function (cssText) {
7683
- var res = {};
7684
- var listDelimiter = /;(?![^(]*\))/g;
7685
- var propertyDelimiter = /:(.+)/;
7686
- cssText.split(listDelimiter).forEach(function (item) {
7687
- if (item) {
7688
- var tmp = item.split(propertyDelimiter);
7689
- tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
7690
- }
7691
- });
7692
- return res;
7693
- }); // merge static and dynamic style data on the same vnode
7694
-
7695
- function normalizeStyleData(data) {
7696
- var style = normalizeStyleBinding(data.style); // static style is pre-processed into an object during compilation
7697
- // and is always a fresh object, so it's safe to merge into it
7698
-
7699
- return data.staticStyle ? extend(data.staticStyle, style) : style;
7700
- } // normalize possible array / string values into Object
7701
-
7702
-
7703
- function normalizeStyleBinding(bindingStyle) {
7704
- if (Array.isArray(bindingStyle)) {
7705
- return toObject(bindingStyle);
7706
- }
7707
-
7708
- if (typeof bindingStyle === 'string') {
7709
- return parseStyleText(bindingStyle);
7710
- }
7711
-
7712
- return bindingStyle;
7713
- }
7714
- /**
7715
- * parent component style should be after child's
7716
- * so that parent component's style could override it
7717
- */
7718
-
7719
-
7720
- function getStyle(vnode, checkChild) {
7721
- var res = {};
7722
- var styleData;
7723
-
7724
- if (checkChild) {
7725
- var childNode = vnode;
7726
-
7727
- while (childNode.componentInstance) {
7728
- childNode = childNode.componentInstance._vnode;
7729
-
7730
- if (childNode && childNode.data && (styleData = normalizeStyleData(childNode.data))) {
7731
- extend(res, styleData);
7732
- }
7733
- }
7734
- }
7735
-
7736
- if (styleData = normalizeStyleData(vnode.data)) {
7737
- extend(res, styleData);
7738
- }
7739
-
7740
- var parentNode = vnode;
7741
-
7742
- while (parentNode = parentNode.parent) {
7743
- if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {
7744
- extend(res, styleData);
7745
- }
7746
- }
7747
-
7748
- return res;
7749
- }
7750
- /* */
7751
-
7752
-
7753
- var cssVarRE = /^--/;
7754
- var importantRE = /\s*!important$/;
7755
-
7756
- var setProp = function setProp(el, name, val) {
7757
- /* istanbul ignore if */
7758
- if (cssVarRE.test(name)) {
7759
- el.style.setProperty(name, val);
7760
- } else if (importantRE.test(val)) {
7761
- el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');
7762
- } else {
7763
- var normalizedName = normalize(name);
7764
-
7765
- if (Array.isArray(val)) {
7766
- // Support values array created by autoprefixer, e.g.
7767
- // {display: ["-webkit-box", "-ms-flexbox", "flex"]}
7768
- // Set them one by one, and the browser will only set those it can recognize
7769
- for (var i = 0, len = val.length; i < len; i++) {
7770
- el.style[normalizedName] = val[i];
7771
- }
7772
- } else {
7773
- el.style[normalizedName] = val;
7774
- }
7775
- }
7776
- };
7777
-
7778
- var vendorNames = ['Webkit', 'Moz', 'ms'];
7779
- var emptyStyle;
7780
- var normalize = cached(function (prop) {
7781
- emptyStyle = emptyStyle || document.createElement('div').style;
7782
- prop = camelize(prop);
7783
-
7784
- if (prop !== 'filter' && prop in emptyStyle) {
7785
- return prop;
7786
- }
7787
-
7788
- var capName = prop.charAt(0).toUpperCase() + prop.slice(1);
7789
-
7790
- for (var i = 0; i < vendorNames.length; i++) {
7791
- var name = vendorNames[i] + capName;
7792
-
7793
- if (name in emptyStyle) {
7794
- return name;
7795
- }
7796
- }
7797
- });
7798
-
7799
- function updateStyle(oldVnode, vnode) {
7800
- var data = vnode.data;
7801
- var oldData = oldVnode.data;
7802
-
7803
- if (isUndef(data.staticStyle) && isUndef(data.style) && isUndef(oldData.staticStyle) && isUndef(oldData.style)) {
7804
- return;
7805
- }
7806
-
7807
- var cur, name;
7808
- var el = vnode.elm;
7809
- var oldStaticStyle = oldData.staticStyle;
7810
- var oldStyleBinding = oldData.normalizedStyle || oldData.style || {}; // if static style exists, stylebinding already merged into it when doing normalizeStyleData
7811
-
7812
- var oldStyle = oldStaticStyle || oldStyleBinding;
7813
- var style = normalizeStyleBinding(vnode.data.style) || {}; // store normalized style under a different key for next diff
7814
- // make sure to clone it if it's reactive, since the user likely wants
7815
- // to mutate it.
7816
-
7817
- vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style;
7818
- var newStyle = getStyle(vnode, true);
7819
-
7820
- for (name in oldStyle) {
7821
- if (isUndef(newStyle[name])) {
7822
- setProp(el, name, '');
7823
- }
7824
- }
7825
-
7826
- for (name in newStyle) {
7827
- cur = newStyle[name];
7828
-
7829
- if (cur !== oldStyle[name]) {
7830
- // ie9 setting to null has no effect, must use empty string
7831
- setProp(el, name, cur == null ? '' : cur);
7832
- }
7833
- }
7834
- }
7835
-
7836
- var style = {
7837
- create: updateStyle,
7838
- update: updateStyle
7839
- };
7840
- /* */
7841
-
7842
- var whitespaceRE = /\s+/;
7843
- /**
7844
- * Add class with compatibility for SVG since classList is not supported on
7845
- * SVG elements in IE
7846
- */
7847
-
7848
- function addClass(el, cls) {
7849
- /* istanbul ignore if */
7850
- if (!cls || !(cls = cls.trim())) {
7851
- return;
7852
- }
7853
- /* istanbul ignore else */
7854
-
7855
-
7856
- if (el.classList) {
7857
- if (cls.indexOf(' ') > -1) {
7858
- cls.split(whitespaceRE).forEach(function (c) {
7859
- return el.classList.add(c);
7860
- });
7861
- } else {
7862
- el.classList.add(cls);
7863
- }
7864
- } else {
7865
- var cur = " " + (el.getAttribute('class') || '') + " ";
7866
-
7867
- if (cur.indexOf(' ' + cls + ' ') < 0) {
7868
- el.setAttribute('class', (cur + cls).trim());
7869
- }
7870
- }
7871
- }
7872
- /**
7873
- * Remove class with compatibility for SVG since classList is not supported on
7874
- * SVG elements in IE
7875
- */
7876
-
7877
-
7878
- function removeClass(el, cls) {
7879
- /* istanbul ignore if */
7880
- if (!cls || !(cls = cls.trim())) {
7881
- return;
7882
- }
7883
- /* istanbul ignore else */
7884
-
7885
-
7886
- if (el.classList) {
7887
- if (cls.indexOf(' ') > -1) {
7888
- cls.split(whitespaceRE).forEach(function (c) {
7889
- return el.classList.remove(c);
7890
- });
7891
- } else {
7892
- el.classList.remove(cls);
7893
- }
7894
-
7895
- if (!el.classList.length) {
7896
- el.removeAttribute('class');
7897
- }
7898
- } else {
7899
- var cur = " " + (el.getAttribute('class') || '') + " ";
7900
- var tar = ' ' + cls + ' ';
7901
-
7902
- while (cur.indexOf(tar) >= 0) {
7903
- cur = cur.replace(tar, ' ');
7904
- }
7905
-
7906
- cur = cur.trim();
7907
-
7908
- if (cur) {
7909
- el.setAttribute('class', cur);
7910
- } else {
7911
- el.removeAttribute('class');
7912
- }
7913
- }
7914
- }
7915
- /* */
7916
-
7917
-
7918
- function resolveTransition(def$$1) {
7919
- if (!def$$1) {
7920
- return;
7921
- }
7922
- /* istanbul ignore else */
7923
-
7924
-
7925
- if (_typeof(def$$1) === 'object') {
7926
- var res = {};
7927
-
7928
- if (def$$1.css !== false) {
7929
- extend(res, autoCssTransition(def$$1.name || 'v'));
7930
- }
7931
-
7932
- extend(res, def$$1);
7933
- return res;
7934
- } else if (typeof def$$1 === 'string') {
7935
- return autoCssTransition(def$$1);
7936
- }
7937
- }
7938
-
7939
- var autoCssTransition = cached(function (name) {
7940
- return {
7941
- enterClass: name + "-enter",
7942
- enterToClass: name + "-enter-to",
7943
- enterActiveClass: name + "-enter-active",
7944
- leaveClass: name + "-leave",
7945
- leaveToClass: name + "-leave-to",
7946
- leaveActiveClass: name + "-leave-active"
7947
- };
7948
- });
7949
- var hasTransition = inBrowser && !isIE9;
7950
- var TRANSITION = 'transition';
7951
- var ANIMATION = 'animation'; // Transition property/event sniffing
7952
-
7953
- var transitionProp = 'transition';
7954
- var transitionEndEvent = 'transitionend';
7955
- var animationProp = 'animation';
7956
- var animationEndEvent = 'animationend';
7957
-
7958
- if (hasTransition) {
7959
- /* istanbul ignore if */
7960
- if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) {
7961
- transitionProp = 'WebkitTransition';
7962
- transitionEndEvent = 'webkitTransitionEnd';
7963
- }
7964
-
7965
- if (window.onanimationend === undefined && window.onwebkitanimationend !== undefined) {
7966
- animationProp = 'WebkitAnimation';
7967
- animationEndEvent = 'webkitAnimationEnd';
7968
- }
7969
- } // binding to window is necessary to make hot reload work in IE in strict mode
7970
-
7971
-
7972
- var raf = inBrowser ? window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : setTimeout :
7973
- /* istanbul ignore next */
7974
- function (fn) {
7975
- return fn();
7976
- };
7977
-
7978
- function nextFrame(fn) {
7979
- raf(function () {
7980
- raf(fn);
7981
- });
7982
- }
7983
-
7984
- function addTransitionClass(el, cls) {
7985
- var transitionClasses = el._transitionClasses || (el._transitionClasses = []);
7986
-
7987
- if (transitionClasses.indexOf(cls) < 0) {
7988
- transitionClasses.push(cls);
7989
- addClass(el, cls);
7990
- }
7991
- }
7992
-
7993
- function removeTransitionClass(el, cls) {
7994
- if (el._transitionClasses) {
7995
- remove(el._transitionClasses, cls);
7996
- }
7997
-
7998
- removeClass(el, cls);
7999
- }
8000
-
8001
- function whenTransitionEnds(el, expectedType, cb) {
8002
- var ref = getTransitionInfo(el, expectedType);
8003
- var type = ref.type;
8004
- var timeout = ref.timeout;
8005
- var propCount = ref.propCount;
8006
-
8007
- if (!type) {
8008
- return cb();
8009
- }
8010
-
8011
- var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;
8012
- var ended = 0;
8013
-
8014
- var end = function end() {
8015
- el.removeEventListener(event, onEnd);
8016
- cb();
8017
- };
8018
-
8019
- var onEnd = function onEnd(e) {
8020
- if (e.target === el) {
8021
- if (++ended >= propCount) {
8022
- end();
8023
- }
8024
- }
8025
- };
8026
-
8027
- setTimeout(function () {
8028
- if (ended < propCount) {
8029
- end();
8030
- }
8031
- }, timeout + 1);
8032
- el.addEventListener(event, onEnd);
8033
- }
8034
-
8035
- var transformRE = /\b(transform|all)(,|$)/;
8036
-
8037
- function getTransitionInfo(el, expectedType) {
8038
- var styles = window.getComputedStyle(el); // JSDOM may return undefined for transition properties
8039
-
8040
- var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');
8041
- var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');
8042
- var transitionTimeout = getTimeout(transitionDelays, transitionDurations);
8043
- var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');
8044
- var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');
8045
- var animationTimeout = getTimeout(animationDelays, animationDurations);
8046
- var type;
8047
- var timeout = 0;
8048
- var propCount = 0;
8049
- /* istanbul ignore if */
8050
-
8051
- if (expectedType === TRANSITION) {
8052
- if (transitionTimeout > 0) {
8053
- type = TRANSITION;
8054
- timeout = transitionTimeout;
8055
- propCount = transitionDurations.length;
8056
- }
8057
- } else if (expectedType === ANIMATION) {
8058
- if (animationTimeout > 0) {
8059
- type = ANIMATION;
8060
- timeout = animationTimeout;
8061
- propCount = animationDurations.length;
8062
- }
8063
- } else {
8064
- timeout = Math.max(transitionTimeout, animationTimeout);
8065
- type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;
8066
- propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;
8067
- }
8068
-
8069
- var hasTransform = type === TRANSITION && transformRE.test(styles[transitionProp + 'Property']);
8070
- return {
8071
- type: type,
8072
- timeout: timeout,
8073
- propCount: propCount,
8074
- hasTransform: hasTransform
8075
- };
8076
- }
8077
-
8078
- function getTimeout(delays, durations) {
8079
- /* istanbul ignore next */
8080
- while (delays.length < durations.length) {
8081
- delays = delays.concat(delays);
8082
- }
8083
-
8084
- return Math.max.apply(null, durations.map(function (d, i) {
8085
- return toMs(d) + toMs(delays[i]);
8086
- }));
8087
- } // Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers
8088
- // in a locale-dependent way, using a comma instead of a dot.
8089
- // If comma is not replaced with a dot, the input will be rounded down (i.e. acting
8090
- // as a floor function) causing unexpected behaviors
8091
-
8092
-
8093
- function toMs(s) {
8094
- return Number(s.slice(0, -1).replace(',', '.')) * 1000;
8095
- }
8096
- /* */
8097
-
8098
-
8099
- function enter(vnode, toggleDisplay) {
8100
- var el = vnode.elm; // call leave callback now
8101
-
8102
- if (isDef(el._leaveCb)) {
8103
- el._leaveCb.cancelled = true;
8104
-
8105
- el._leaveCb();
8106
- }
8107
-
8108
- var data = resolveTransition(vnode.data.transition);
8109
-
8110
- if (isUndef(data)) {
8111
- return;
8112
- }
8113
- /* istanbul ignore if */
8114
-
8115
-
8116
- if (isDef(el._enterCb) || el.nodeType !== 1) {
8117
- return;
8118
- }
8119
-
8120
- var css = data.css;
8121
- var type = data.type;
8122
- var enterClass = data.enterClass;
8123
- var enterToClass = data.enterToClass;
8124
- var enterActiveClass = data.enterActiveClass;
8125
- var appearClass = data.appearClass;
8126
- var appearToClass = data.appearToClass;
8127
- var appearActiveClass = data.appearActiveClass;
8128
- var beforeEnter = data.beforeEnter;
8129
- var enter = data.enter;
8130
- var afterEnter = data.afterEnter;
8131
- var enterCancelled = data.enterCancelled;
8132
- var beforeAppear = data.beforeAppear;
8133
- var appear = data.appear;
8134
- var afterAppear = data.afterAppear;
8135
- var appearCancelled = data.appearCancelled;
8136
- var duration = data.duration; // activeInstance will always be the <transition> component managing this
8137
- // transition. One edge case to check is when the <transition> is placed
8138
- // as the root node of a child component. In that case we need to check
8139
- // <transition>'s parent for appear check.
8140
-
8141
- var context = activeInstance;
8142
- var transitionNode = activeInstance.$vnode;
8143
-
8144
- while (transitionNode && transitionNode.parent) {
8145
- context = transitionNode.context;
8146
- transitionNode = transitionNode.parent;
8147
- }
8148
-
8149
- var isAppear = !context._isMounted || !vnode.isRootInsert;
8150
-
8151
- if (isAppear && !appear && appear !== '') {
8152
- return;
8153
- }
8154
-
8155
- var startClass = isAppear && appearClass ? appearClass : enterClass;
8156
- var activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass;
8157
- var toClass = isAppear && appearToClass ? appearToClass : enterToClass;
8158
- var beforeEnterHook = isAppear ? beforeAppear || beforeEnter : beforeEnter;
8159
- var enterHook = isAppear ? typeof appear === 'function' ? appear : enter : enter;
8160
- var afterEnterHook = isAppear ? afterAppear || afterEnter : afterEnter;
8161
- var enterCancelledHook = isAppear ? appearCancelled || enterCancelled : enterCancelled;
8162
- var explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration);
8163
-
8164
- if (explicitEnterDuration != null) {
8165
- checkDuration(explicitEnterDuration, 'enter', vnode);
8166
- }
8167
-
8168
- var expectsCSS = css !== false && !isIE9;
8169
- var userWantsControl = getHookArgumentsLength(enterHook);
8170
- var cb = el._enterCb = once(function () {
8171
- if (expectsCSS) {
8172
- removeTransitionClass(el, toClass);
8173
- removeTransitionClass(el, activeClass);
8174
- }
8175
-
8176
- if (cb.cancelled) {
8177
- if (expectsCSS) {
8178
- removeTransitionClass(el, startClass);
8179
- }
8180
-
8181
- enterCancelledHook && enterCancelledHook(el);
8182
- } else {
8183
- afterEnterHook && afterEnterHook(el);
8184
- }
8185
-
8186
- el._enterCb = null;
8187
- });
8188
-
8189
- if (!vnode.data.show) {
8190
- // remove pending leave element on enter by injecting an insert hook
8191
- mergeVNodeHook(vnode, 'insert', function () {
8192
- var parent = el.parentNode;
8193
- var pendingNode = parent && parent._pending && parent._pending[vnode.key];
8194
-
8195
- if (pendingNode && pendingNode.tag === vnode.tag && pendingNode.elm._leaveCb) {
8196
- pendingNode.elm._leaveCb();
8197
- }
8198
-
8199
- enterHook && enterHook(el, cb);
8200
- });
8201
- } // start enter transition
8202
-
8203
-
8204
- beforeEnterHook && beforeEnterHook(el);
8205
-
8206
- if (expectsCSS) {
8207
- addTransitionClass(el, startClass);
8208
- addTransitionClass(el, activeClass);
8209
- nextFrame(function () {
8210
- removeTransitionClass(el, startClass);
8211
-
8212
- if (!cb.cancelled) {
8213
- addTransitionClass(el, toClass);
8214
-
8215
- if (!userWantsControl) {
8216
- if (isValidDuration(explicitEnterDuration)) {
8217
- setTimeout(cb, explicitEnterDuration);
8218
- } else {
8219
- whenTransitionEnds(el, type, cb);
8220
- }
8221
- }
8222
- }
8223
- });
8224
- }
8225
-
8226
- if (vnode.data.show) {
8227
- toggleDisplay && toggleDisplay();
8228
- enterHook && enterHook(el, cb);
8229
- }
8230
-
8231
- if (!expectsCSS && !userWantsControl) {
8232
- cb();
8233
- }
8234
- }
8235
-
8236
- function leave(vnode, rm) {
8237
- var el = vnode.elm; // call enter callback now
8238
-
8239
- if (isDef(el._enterCb)) {
8240
- el._enterCb.cancelled = true;
8241
-
8242
- el._enterCb();
8243
- }
8244
-
8245
- var data = resolveTransition(vnode.data.transition);
8246
-
8247
- if (isUndef(data) || el.nodeType !== 1) {
8248
- return rm();
8249
- }
8250
- /* istanbul ignore if */
8251
-
8252
-
8253
- if (isDef(el._leaveCb)) {
8254
- return;
8255
- }
8256
-
8257
- var css = data.css;
8258
- var type = data.type;
8259
- var leaveClass = data.leaveClass;
8260
- var leaveToClass = data.leaveToClass;
8261
- var leaveActiveClass = data.leaveActiveClass;
8262
- var beforeLeave = data.beforeLeave;
8263
- var leave = data.leave;
8264
- var afterLeave = data.afterLeave;
8265
- var leaveCancelled = data.leaveCancelled;
8266
- var delayLeave = data.delayLeave;
8267
- var duration = data.duration;
8268
- var expectsCSS = css !== false && !isIE9;
8269
- var userWantsControl = getHookArgumentsLength(leave);
8270
- var explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration);
8271
-
8272
- if (isDef(explicitLeaveDuration)) {
8273
- checkDuration(explicitLeaveDuration, 'leave', vnode);
8274
- }
8275
-
8276
- var cb = el._leaveCb = once(function () {
8277
- if (el.parentNode && el.parentNode._pending) {
8278
- el.parentNode._pending[vnode.key] = null;
8279
- }
8280
-
8281
- if (expectsCSS) {
8282
- removeTransitionClass(el, leaveToClass);
8283
- removeTransitionClass(el, leaveActiveClass);
8284
- }
8285
-
8286
- if (cb.cancelled) {
8287
- if (expectsCSS) {
8288
- removeTransitionClass(el, leaveClass);
8289
- }
8290
-
8291
- leaveCancelled && leaveCancelled(el);
8292
- } else {
8293
- rm();
8294
- afterLeave && afterLeave(el);
8295
- }
8296
-
8297
- el._leaveCb = null;
8298
- });
8299
-
8300
- if (delayLeave) {
8301
- delayLeave(performLeave);
8302
- } else {
8303
- performLeave();
8304
- }
8305
-
8306
- function performLeave() {
8307
- // the delayed leave may have already been cancelled
8308
- if (cb.cancelled) {
8309
- return;
8310
- } // record leaving element
8311
-
8312
-
8313
- if (!vnode.data.show && el.parentNode) {
8314
- (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] = vnode;
8315
- }
8316
-
8317
- beforeLeave && beforeLeave(el);
8318
-
8319
- if (expectsCSS) {
8320
- addTransitionClass(el, leaveClass);
8321
- addTransitionClass(el, leaveActiveClass);
8322
- nextFrame(function () {
8323
- removeTransitionClass(el, leaveClass);
8324
-
8325
- if (!cb.cancelled) {
8326
- addTransitionClass(el, leaveToClass);
8327
-
8328
- if (!userWantsControl) {
8329
- if (isValidDuration(explicitLeaveDuration)) {
8330
- setTimeout(cb, explicitLeaveDuration);
8331
- } else {
8332
- whenTransitionEnds(el, type, cb);
8333
- }
8334
- }
8335
- }
8336
- });
8337
- }
8338
-
8339
- leave && leave(el, cb);
8340
-
8341
- if (!expectsCSS && !userWantsControl) {
8342
- cb();
8343
- }
8344
- }
8345
- } // only used in dev mode
8346
-
8347
-
8348
- function checkDuration(val, name, vnode) {
8349
- if (typeof val !== 'number') {
8350
- warn("<transition> explicit " + name + " duration is not a valid number - " + "got " + JSON.stringify(val) + ".", vnode.context);
8351
- } else if (isNaN(val)) {
8352
- warn("<transition> explicit " + name + " duration is NaN - " + 'the duration expression might be incorrect.', vnode.context);
8353
- }
8354
- }
8355
-
8356
- function isValidDuration(val) {
8357
- return typeof val === 'number' && !isNaN(val);
8358
- }
8359
- /**
8360
- * Normalize a transition hook's argument length. The hook may be:
8361
- * - a merged hook (invoker) with the original in .fns
8362
- * - a wrapped component method (check ._length)
8363
- * - a plain function (.length)
8364
- */
8365
-
8366
-
8367
- function getHookArgumentsLength(fn) {
8368
- if (isUndef(fn)) {
8369
- return false;
8370
- }
8371
-
8372
- var invokerFns = fn.fns;
8373
-
8374
- if (isDef(invokerFns)) {
8375
- // invoker
8376
- return getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns);
8377
- } else {
8378
- return (fn._length || fn.length) > 1;
8379
- }
8380
- }
8381
-
8382
- function _enter(_, vnode) {
8383
- if (vnode.data.show !== true) {
8384
- enter(vnode);
8385
- }
8386
- }
8387
-
8388
- var transition = inBrowser ? {
8389
- create: _enter,
8390
- activate: _enter,
8391
- remove: function remove$$1(vnode, rm) {
8392
- /* istanbul ignore else */
8393
- if (vnode.data.show !== true) {
8394
- leave(vnode, rm);
8395
- } else {
8396
- rm();
8397
- }
8398
- }
8399
- } : {};
8400
- var platformModules = [attrs, klass, events, domProps, style, transition];
8401
- /* */
8402
- // the directive module should be applied last, after all
8403
- // built-in modules have been applied.
8404
-
8405
- var modules = platformModules.concat(baseModules);
8406
- var patch = createPatchFunction({
8407
- nodeOps: nodeOps,
8408
- modules: modules
8409
- });
8410
- /**
8411
- * Not type checking this file because flow doesn't like attaching
8412
- * properties to Elements.
8413
- */
8414
-
8415
- /* istanbul ignore if */
8416
-
8417
- if (isIE9) {
8418
- // http://www.matts411.com/post/internet-explorer-9-oninput/
8419
- document.addEventListener('selectionchange', function () {
8420
- var el = document.activeElement;
8421
-
8422
- if (el && el.vmodel) {
8423
- trigger(el, 'input');
8424
- }
8425
- });
8426
- }
8427
-
8428
- var directive = {
8429
- inserted: function inserted(el, binding, vnode, oldVnode) {
8430
- if (vnode.tag === 'select') {
8431
- // #6903
8432
- if (oldVnode.elm && !oldVnode.elm._vOptions) {
8433
- mergeVNodeHook(vnode, 'postpatch', function () {
8434
- directive.componentUpdated(el, binding, vnode);
8435
- });
8436
- } else {
8437
- setSelected(el, binding, vnode.context);
8438
- }
8439
-
8440
- el._vOptions = [].map.call(el.options, getValue);
8441
- } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {
8442
- el._vModifiers = binding.modifiers;
8443
-
8444
- if (!binding.modifiers.lazy) {
8445
- el.addEventListener('compositionstart', onCompositionStart);
8446
- el.addEventListener('compositionend', onCompositionEnd); // Safari < 10.2 & UIWebView doesn't fire compositionend when
8447
- // switching focus before confirming composition choice
8448
- // this also fixes the issue where some browsers e.g. iOS Chrome
8449
- // fires "change" instead of "input" on autocomplete.
8450
-
8451
- el.addEventListener('change', onCompositionEnd);
8452
- /* istanbul ignore if */
8453
-
8454
- if (isIE9) {
8455
- el.vmodel = true;
8456
- }
8457
- }
8458
- }
8459
- },
8460
- componentUpdated: function componentUpdated(el, binding, vnode) {
8461
- if (vnode.tag === 'select') {
8462
- setSelected(el, binding, vnode.context); // in case the options rendered by v-for have changed,
8463
- // it's possible that the value is out-of-sync with the rendered options.
8464
- // detect such cases and filter out values that no longer has a matching
8465
- // option in the DOM.
8466
-
8467
- var prevOptions = el._vOptions;
8468
- var curOptions = el._vOptions = [].map.call(el.options, getValue);
8469
-
8470
- if (curOptions.some(function (o, i) {
8471
- return !looseEqual(o, prevOptions[i]);
8472
- })) {
8473
- // trigger change event if
8474
- // no matching option found for at least one value
8475
- var needReset = el.multiple ? binding.value.some(function (v) {
8476
- return hasNoMatchingOption(v, curOptions);
8477
- }) : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);
8478
-
8479
- if (needReset) {
8480
- trigger(el, 'change');
8481
- }
8482
- }
8483
- }
8484
- }
8485
- };
8486
-
8487
- function setSelected(el, binding, vm) {
8488
- actuallySetSelected(el, binding, vm);
8489
- /* istanbul ignore if */
8490
-
8491
- if (isIE || isEdge) {
8492
- setTimeout(function () {
8493
- actuallySetSelected(el, binding, vm);
8494
- }, 0);
8495
- }
8496
- }
8497
-
8498
- function actuallySetSelected(el, binding, vm) {
8499
- var value = binding.value;
8500
- var isMultiple = el.multiple;
8501
-
8502
- if (isMultiple && !Array.isArray(value)) {
8503
- warn("<select multiple v-model=\"" + binding.expression + "\"> " + "expects an Array value for its binding, but got " + Object.prototype.toString.call(value).slice(8, -1), vm);
8504
- return;
8505
- }
8506
-
8507
- var selected, option;
8508
-
8509
- for (var i = 0, l = el.options.length; i < l; i++) {
8510
- option = el.options[i];
8511
-
8512
- if (isMultiple) {
8513
- selected = looseIndexOf(value, getValue(option)) > -1;
8514
-
8515
- if (option.selected !== selected) {
8516
- option.selected = selected;
8517
- }
8518
- } else {
8519
- if (looseEqual(getValue(option), value)) {
8520
- if (el.selectedIndex !== i) {
8521
- el.selectedIndex = i;
8522
- }
8523
-
8524
- return;
8525
- }
8526
- }
8527
- }
8528
-
8529
- if (!isMultiple) {
8530
- el.selectedIndex = -1;
8531
- }
8532
- }
8533
-
8534
- function hasNoMatchingOption(value, options) {
8535
- return options.every(function (o) {
8536
- return !looseEqual(o, value);
8537
- });
8538
- }
8539
-
8540
- function getValue(option) {
8541
- return '_value' in option ? option._value : option.value;
8542
- }
8543
-
8544
- function onCompositionStart(e) {
8545
- e.target.composing = true;
8546
- }
8547
-
8548
- function onCompositionEnd(e) {
8549
- // prevent triggering an input event for no reason
8550
- if (!e.target.composing) {
8551
- return;
8552
- }
8553
-
8554
- e.target.composing = false;
8555
- trigger(e.target, 'input');
8556
- }
8557
-
8558
- function trigger(el, type) {
8559
- var e = document.createEvent('HTMLEvents');
8560
- e.initEvent(type, true, true);
8561
- el.dispatchEvent(e);
8562
- }
8563
- /* */
8564
- // recursively search for possible transition defined inside the component root
8565
-
8566
-
8567
- function locateNode(vnode) {
8568
- return vnode.componentInstance && (!vnode.data || !vnode.data.transition) ? locateNode(vnode.componentInstance._vnode) : vnode;
8569
- }
8570
-
8571
- var show = {
8572
- bind: function bind(el, ref, vnode) {
8573
- var value = ref.value;
8574
- vnode = locateNode(vnode);
8575
- var transition$$1 = vnode.data && vnode.data.transition;
8576
- var originalDisplay = el.__vOriginalDisplay = el.style.display === 'none' ? '' : el.style.display;
8577
-
8578
- if (value && transition$$1) {
8579
- vnode.data.show = true;
8580
- enter(vnode, function () {
8581
- el.style.display = originalDisplay;
8582
- });
8583
- } else {
8584
- el.style.display = value ? originalDisplay : 'none';
8585
- }
8586
- },
8587
- update: function update(el, ref, vnode) {
8588
- var value = ref.value;
8589
- var oldValue = ref.oldValue;
8590
- /* istanbul ignore if */
8591
-
8592
- if (!value === !oldValue) {
8593
- return;
8594
- }
8595
-
8596
- vnode = locateNode(vnode);
8597
- var transition$$1 = vnode.data && vnode.data.transition;
8598
-
8599
- if (transition$$1) {
8600
- vnode.data.show = true;
8601
-
8602
- if (value) {
8603
- enter(vnode, function () {
8604
- el.style.display = el.__vOriginalDisplay;
8605
- });
8606
- } else {
8607
- leave(vnode, function () {
8608
- el.style.display = 'none';
8609
- });
8610
- }
8611
- } else {
8612
- el.style.display = value ? el.__vOriginalDisplay : 'none';
8613
- }
8614
- },
8615
- unbind: function unbind(el, binding, vnode, oldVnode, isDestroy) {
8616
- if (!isDestroy) {
8617
- el.style.display = el.__vOriginalDisplay;
8618
- }
8619
- }
8620
- };
8621
- var platformDirectives = {
8622
- model: directive,
8623
- show: show
8624
- };
8625
- /* */
8626
-
8627
- var transitionProps = {
8628
- name: String,
8629
- appear: Boolean,
8630
- css: Boolean,
8631
- mode: String,
8632
- type: String,
8633
- enterClass: String,
8634
- leaveClass: String,
8635
- enterToClass: String,
8636
- leaveToClass: String,
8637
- enterActiveClass: String,
8638
- leaveActiveClass: String,
8639
- appearClass: String,
8640
- appearActiveClass: String,
8641
- appearToClass: String,
8642
- duration: [Number, String, Object]
8643
- }; // in case the child is also an abstract component, e.g. <keep-alive>
8644
- // we want to recursively retrieve the real component to be rendered
8645
-
8646
- function getRealChild(vnode) {
8647
- var compOptions = vnode && vnode.componentOptions;
8648
-
8649
- if (compOptions && compOptions.Ctor.options["abstract"]) {
8650
- return getRealChild(getFirstComponentChild(compOptions.children));
8651
- } else {
8652
- return vnode;
8653
- }
8654
- }
8655
-
8656
- function extractTransitionData(comp) {
8657
- var data = {};
8658
- var options = comp.$options; // props
8659
-
8660
- for (var key in options.propsData) {
8661
- data[key] = comp[key];
8662
- } // events.
8663
- // extract listeners and pass them directly to the transition methods
8664
-
8665
-
8666
- var listeners = options._parentListeners;
8667
-
8668
- for (var key$1 in listeners) {
8669
- data[camelize(key$1)] = listeners[key$1];
8670
- }
8671
-
8672
- return data;
8673
- }
8674
-
8675
- function placeholder(h, rawChild) {
8676
- if (/\d-keep-alive$/.test(rawChild.tag)) {
8677
- return h('keep-alive', {
8678
- props: rawChild.componentOptions.propsData
8679
- });
8680
- }
8681
- }
8682
-
8683
- function hasParentTransition(vnode) {
8684
- while (vnode = vnode.parent) {
8685
- if (vnode.data.transition) {
8686
- return true;
8687
- }
8688
- }
8689
- }
8690
-
8691
- function isSameChild(child, oldChild) {
8692
- return oldChild.key === child.key && oldChild.tag === child.tag;
8693
- }
8694
-
8695
- var isNotTextNode = function isNotTextNode(c) {
8696
- return c.tag || isAsyncPlaceholder(c);
8697
- };
8698
-
8699
- var isVShowDirective = function isVShowDirective(d) {
8700
- return d.name === 'show';
8701
- };
8702
-
8703
- var Transition = {
8704
- name: 'transition',
8705
- props: transitionProps,
8706
- "abstract": true,
8707
- render: function render(h) {
8708
- var this$1 = this;
8709
- var children = this.$slots["default"];
8710
-
8711
- if (!children) {
8712
- return;
8713
- } // filter out text nodes (possible whitespaces)
8714
-
8715
-
8716
- children = children.filter(isNotTextNode);
8717
- /* istanbul ignore if */
8718
-
8719
- if (!children.length) {
8720
- return;
8721
- } // warn multiple elements
8722
-
8723
-
8724
- if (children.length > 1) {
8725
- warn('<transition> can only be used on a single element. Use ' + '<transition-group> for lists.', this.$parent);
8726
- }
8727
-
8728
- var mode = this.mode; // warn invalid mode
8729
-
8730
- if (mode && mode !== 'in-out' && mode !== 'out-in') {
8731
- warn('invalid <transition> mode: ' + mode, this.$parent);
8732
- }
8733
-
8734
- var rawChild = children[0]; // if this is a component root node and the component's
8735
- // parent container node also has transition, skip.
8736
-
8737
- if (hasParentTransition(this.$vnode)) {
8738
- return rawChild;
8739
- } // apply transition data to child
8740
- // use getRealChild() to ignore abstract components e.g. keep-alive
8741
-
8742
-
8743
- var child = getRealChild(rawChild);
8744
- /* istanbul ignore if */
8745
-
8746
- if (!child) {
8747
- return rawChild;
8748
- }
8749
-
8750
- if (this._leaving) {
8751
- return placeholder(h, rawChild);
8752
- } // ensure a key that is unique to the vnode type and to this transition
8753
- // component instance. This key will be used to remove pending leaving nodes
8754
- // during entering.
8755
-
8756
-
8757
- var id = "__transition-" + this._uid + "-";
8758
- child.key = child.key == null ? child.isComment ? id + 'comment' : id + child.tag : isPrimitive(child.key) ? String(child.key).indexOf(id) === 0 ? child.key : id + child.key : child.key;
8759
- var data = (child.data || (child.data = {})).transition = extractTransitionData(this);
8760
- var oldRawChild = this._vnode;
8761
- var oldChild = getRealChild(oldRawChild); // mark v-show
8762
- // so that the transition module can hand over the control to the directive
8763
-
8764
- if (child.data.directives && child.data.directives.some(isVShowDirective)) {
8765
- child.data.show = true;
8766
- }
8767
-
8768
- if (oldChild && oldChild.data && !isSameChild(child, oldChild) && !isAsyncPlaceholder(oldChild) && // #6687 component root is a comment node
8769
- !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)) {
8770
- // replace old child transition data with fresh one
8771
- // important for dynamic transitions!
8772
- var oldData = oldChild.data.transition = extend({}, data); // handle transition mode
8773
-
8774
- if (mode === 'out-in') {
8775
- // return placeholder node and queue update when leave finishes
8776
- this._leaving = true;
8777
- mergeVNodeHook(oldData, 'afterLeave', function () {
8778
- this$1._leaving = false;
8779
- this$1.$forceUpdate();
8780
- });
8781
- return placeholder(h, rawChild);
8782
- } else if (mode === 'in-out') {
8783
- if (isAsyncPlaceholder(child)) {
8784
- return oldRawChild;
8785
- }
8786
-
8787
- var delayedLeave;
8788
-
8789
- var performLeave = function performLeave() {
8790
- delayedLeave();
8791
- };
8792
-
8793
- mergeVNodeHook(data, 'afterEnter', performLeave);
8794
- mergeVNodeHook(data, 'enterCancelled', performLeave);
8795
- mergeVNodeHook(oldData, 'delayLeave', function (leave) {
8796
- delayedLeave = leave;
8797
- });
8798
- }
8799
- }
8800
-
8801
- return rawChild;
8802
- }
8803
- };
8804
- /* */
8805
-
8806
- var props = extend({
8807
- tag: String,
8808
- moveClass: String
8809
- }, transitionProps);
8810
- delete props.mode;
8811
- var TransitionGroup = {
8812
- props: props,
8813
- beforeMount: function beforeMount() {
8814
- var this$1 = this;
8815
- var update = this._update;
8816
-
8817
- this._update = function (vnode, hydrating) {
8818
- var restoreActiveInstance = setActiveInstance(this$1); // force removing pass
8819
-
8820
- this$1.__patch__(this$1._vnode, this$1.kept, false, // hydrating
8821
- true // removeOnly (!important, avoids unnecessary moves)
8822
- );
8823
-
8824
- this$1._vnode = this$1.kept;
8825
- restoreActiveInstance();
8826
- update.call(this$1, vnode, hydrating);
8827
- };
8828
- },
8829
- render: function render(h) {
8830
- var tag = this.tag || this.$vnode.data.tag || 'span';
8831
- var map = Object.create(null);
8832
- var prevChildren = this.prevChildren = this.children;
8833
- var rawChildren = this.$slots["default"] || [];
8834
- var children = this.children = [];
8835
- var transitionData = extractTransitionData(this);
8836
-
8837
- for (var i = 0; i < rawChildren.length; i++) {
8838
- var c = rawChildren[i];
8839
-
8840
- if (c.tag) {
8841
- if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {
8842
- children.push(c);
8843
- map[c.key] = c;
8844
- (c.data || (c.data = {})).transition = transitionData;
8845
- } else {
8846
- var opts = c.componentOptions;
8847
- var name = opts ? opts.Ctor.options.name || opts.tag || '' : c.tag;
8848
- warn("<transition-group> children must be keyed: <" + name + ">");
8849
- }
8850
- }
8851
- }
8852
-
8853
- if (prevChildren) {
8854
- var kept = [];
8855
- var removed = [];
8856
-
8857
- for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {
8858
- var c$1 = prevChildren[i$1];
8859
- c$1.data.transition = transitionData;
8860
- c$1.data.pos = c$1.elm.getBoundingClientRect();
8861
-
8862
- if (map[c$1.key]) {
8863
- kept.push(c$1);
8864
- } else {
8865
- removed.push(c$1);
8866
- }
8867
- }
8868
-
8869
- this.kept = h(tag, null, kept);
8870
- this.removed = removed;
8871
- }
8872
-
8873
- return h(tag, null, children);
8874
- },
8875
- updated: function updated() {
8876
- var children = this.prevChildren;
8877
- var moveClass = this.moveClass || (this.name || 'v') + '-move';
8878
-
8879
- if (!children.length || !this.hasMove(children[0].elm, moveClass)) {
8880
- return;
8881
- } // we divide the work into three loops to avoid mixing DOM reads and writes
8882
- // in each iteration - which helps prevent layout thrashing.
8883
-
8884
-
8885
- children.forEach(callPendingCbs);
8886
- children.forEach(recordPosition);
8887
- children.forEach(applyTranslation); // force reflow to put everything in position
8888
- // assign to this to avoid being removed in tree-shaking
8889
- // $flow-disable-line
8890
-
8891
- this._reflow = document.body.offsetHeight;
8892
- children.forEach(function (c) {
8893
- if (c.data.moved) {
8894
- var el = c.elm;
8895
- var s = el.style;
8896
- addTransitionClass(el, moveClass);
8897
- s.transform = s.WebkitTransform = s.transitionDuration = '';
8898
- el.addEventListener(transitionEndEvent, el._moveCb = function cb(e) {
8899
- if (e && e.target !== el) {
8900
- return;
8901
- }
8902
-
8903
- if (!e || /transform$/.test(e.propertyName)) {
8904
- el.removeEventListener(transitionEndEvent, cb);
8905
- el._moveCb = null;
8906
- removeTransitionClass(el, moveClass);
8907
- }
8908
- });
8909
- }
8910
- });
8911
- },
8912
- methods: {
8913
- hasMove: function hasMove(el, moveClass) {
8914
- /* istanbul ignore if */
8915
- if (!hasTransition) {
8916
- return false;
8917
- }
8918
- /* istanbul ignore if */
8919
-
8920
-
8921
- if (this._hasMove) {
8922
- return this._hasMove;
8923
- } // Detect whether an element with the move class applied has
8924
- // CSS transitions. Since the element may be inside an entering
8925
- // transition at this very moment, we make a clone of it and remove
8926
- // all other transition classes applied to ensure only the move class
8927
- // is applied.
8928
-
8929
-
8930
- var clone = el.cloneNode();
8931
-
8932
- if (el._transitionClasses) {
8933
- el._transitionClasses.forEach(function (cls) {
8934
- removeClass(clone, cls);
8935
- });
8936
- }
8937
-
8938
- addClass(clone, moveClass);
8939
- clone.style.display = 'none';
8940
- this.$el.appendChild(clone);
8941
- var info = getTransitionInfo(clone);
8942
- this.$el.removeChild(clone);
8943
- return this._hasMove = info.hasTransform;
8944
- }
8945
- }
8946
- };
8947
-
8948
- function callPendingCbs(c) {
8949
- /* istanbul ignore if */
8950
- if (c.elm._moveCb) {
8951
- c.elm._moveCb();
8952
- }
8953
- /* istanbul ignore if */
8954
-
8955
-
8956
- if (c.elm._enterCb) {
8957
- c.elm._enterCb();
8958
- }
8959
- }
8960
-
8961
- function recordPosition(c) {
8962
- c.data.newPos = c.elm.getBoundingClientRect();
8963
- }
8964
-
8965
- function applyTranslation(c) {
8966
- var oldPos = c.data.pos;
8967
- var newPos = c.data.newPos;
8968
- var dx = oldPos.left - newPos.left;
8969
- var dy = oldPos.top - newPos.top;
8970
-
8971
- if (dx || dy) {
8972
- c.data.moved = true;
8973
- var s = c.elm.style;
8974
- s.transform = s.WebkitTransform = "translate(" + dx + "px," + dy + "px)";
8975
- s.transitionDuration = '0s';
8976
- }
8977
- }
8978
-
8979
- var platformComponents = {
8980
- Transition: Transition,
8981
- TransitionGroup: TransitionGroup
8982
- };
8983
- /* */
8984
- // install platform specific utils
8985
-
8986
- Vue.config.mustUseProp = mustUseProp;
8987
- Vue.config.isReservedTag = isReservedTag;
8988
- Vue.config.isReservedAttr = isReservedAttr;
8989
- Vue.config.getTagNamespace = getTagNamespace;
8990
- Vue.config.isUnknownElement = isUnknownElement; // install platform runtime directives & components
8991
-
8992
- extend(Vue.options.directives, platformDirectives);
8993
- extend(Vue.options.components, platformComponents); // install platform patch function
8994
-
8995
- Vue.prototype.__patch__ = inBrowser ? patch : noop; // public mount method
8996
-
8997
- Vue.prototype.$mount = function (el, hydrating) {
8998
- el = el && inBrowser ? query(el) : undefined;
8999
- return mountComponent(this, el, hydrating);
9000
- }; // devtools global hook
9001
-
9002
- /* istanbul ignore next */
9003
-
9004
-
9005
- if (inBrowser) {
9006
- setTimeout(function () {
9007
- if (config.devtools) {
9008
- if (devtools) {
9009
- devtools.emit('init', Vue);
9010
- } else {
9011
- console[console.info ? 'info' : 'log']('Download the Vue Devtools extension for a better development experience:\n' + 'https://github.com/vuejs/vue-devtools');
9012
- }
9013
- }
9014
-
9015
- if (config.productionTip !== false && typeof console !== 'undefined') {
9016
- console[console.info ? 'info' : 'log']("You are running Vue in development mode.\n" + "Make sure to turn on production mode when deploying for production.\n" + "See more tips at https://vuejs.org/guide/deployment.html");
9017
- }
9018
- }, 0);
9019
- }
9020
- /* */
9021
-
9022
-
9023
- var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g;
9024
- var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g;
9025
- var buildRegex = cached(function (delimiters) {
9026
- var open = delimiters[0].replace(regexEscapeRE, '\\$&');
9027
- var close = delimiters[1].replace(regexEscapeRE, '\\$&');
9028
- return new RegExp(open + '((?:.|\\n)+?)' + close, 'g');
9029
- });
9030
-
9031
- function parseText(text, delimiters) {
9032
- var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;
9033
-
9034
- if (!tagRE.test(text)) {
9035
- return;
9036
- }
9037
-
9038
- var tokens = [];
9039
- var rawTokens = [];
9040
- var lastIndex = tagRE.lastIndex = 0;
9041
- var match, index, tokenValue;
9042
-
9043
- while (match = tagRE.exec(text)) {
9044
- index = match.index; // push text token
9045
-
9046
- if (index > lastIndex) {
9047
- rawTokens.push(tokenValue = text.slice(lastIndex, index));
9048
- tokens.push(JSON.stringify(tokenValue));
9049
- } // tag token
9050
-
9051
-
9052
- var exp = parseFilters(match[1].trim());
9053
- tokens.push("_s(" + exp + ")");
9054
- rawTokens.push({
9055
- '@binding': exp
9056
- });
9057
- lastIndex = index + match[0].length;
9058
- }
9059
-
9060
- if (lastIndex < text.length) {
9061
- rawTokens.push(tokenValue = text.slice(lastIndex));
9062
- tokens.push(JSON.stringify(tokenValue));
9063
- }
9064
-
9065
- return {
9066
- expression: tokens.join('+'),
9067
- tokens: rawTokens
9068
- };
9069
- }
9070
- /* */
9071
-
9072
-
9073
- function transformNode(el, options) {
9074
- var warn = options.warn || baseWarn;
9075
- var staticClass = getAndRemoveAttr(el, 'class');
9076
-
9077
- if (staticClass) {
9078
- var res = parseText(staticClass, options.delimiters);
9079
-
9080
- if (res) {
9081
- warn("class=\"" + staticClass + "\": " + 'Interpolation inside attributes has been removed. ' + 'Use v-bind or the colon shorthand instead. For example, ' + 'instead of <div class="{{ val }}">, use <div :class="val">.', el.rawAttrsMap['class']);
9082
- }
9083
- }
9084
-
9085
- if (staticClass) {
9086
- el.staticClass = JSON.stringify(staticClass);
9087
- }
9088
-
9089
- var classBinding = getBindingAttr(el, 'class', false
9090
- /* getStatic */
9091
- );
9092
-
9093
- if (classBinding) {
9094
- el.classBinding = classBinding;
9095
- }
9096
- }
9097
-
9098
- function genData(el) {
9099
- var data = '';
9100
-
9101
- if (el.staticClass) {
9102
- data += "staticClass:" + el.staticClass + ",";
9103
- }
9104
-
9105
- if (el.classBinding) {
9106
- data += "class:" + el.classBinding + ",";
9107
- }
9108
-
9109
- return data;
9110
- }
9111
-
9112
- var klass$1 = {
9113
- staticKeys: ['staticClass'],
9114
- transformNode: transformNode,
9115
- genData: genData
9116
- };
9117
- /* */
9118
-
9119
- function transformNode$1(el, options) {
9120
- var warn = options.warn || baseWarn;
9121
- var staticStyle = getAndRemoveAttr(el, 'style');
9122
-
9123
- if (staticStyle) {
9124
- /* istanbul ignore if */
9125
- {
9126
- var res = parseText(staticStyle, options.delimiters);
9127
-
9128
- if (res) {
9129
- warn("style=\"" + staticStyle + "\": " + 'Interpolation inside attributes has been removed. ' + 'Use v-bind or the colon shorthand instead. For example, ' + 'instead of <div style="{{ val }}">, use <div :style="val">.', el.rawAttrsMap['style']);
9130
- }
9131
- }
9132
- el.staticStyle = JSON.stringify(parseStyleText(staticStyle));
9133
- }
9134
-
9135
- var styleBinding = getBindingAttr(el, 'style', false
9136
- /* getStatic */
9137
- );
9138
-
9139
- if (styleBinding) {
9140
- el.styleBinding = styleBinding;
9141
- }
9142
- }
9143
-
9144
- function genData$1(el) {
9145
- var data = '';
9146
-
9147
- if (el.staticStyle) {
9148
- data += "staticStyle:" + el.staticStyle + ",";
9149
- }
9150
-
9151
- if (el.styleBinding) {
9152
- data += "style:(" + el.styleBinding + "),";
9153
- }
9154
-
9155
- return data;
9156
- }
9157
-
9158
- var style$1 = {
9159
- staticKeys: ['staticStyle'],
9160
- transformNode: transformNode$1,
9161
- genData: genData$1
9162
- };
9163
- /* */
9164
-
9165
- var decoder;
9166
- var he = {
9167
- decode: function decode(html) {
9168
- decoder = decoder || document.createElement('div');
9169
- decoder.innerHTML = html;
9170
- return decoder.textContent;
9171
- }
9172
- };
9173
- /* */
9174
-
9175
- var isUnaryTag = makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' + 'link,meta,param,source,track,wbr'); // Elements that you can, intentionally, leave open
9176
- // (and which close themselves)
9177
-
9178
- var canBeLeftOpenTag = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'); // HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3
9179
- // Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
9180
-
9181
- var isNonPhrasingTag = makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' + 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' + 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' + 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' + 'title,tr,track');
9182
- /**
9183
- * Not type-checking this file because it's mostly vendor code.
9184
- */
9185
- // Regular Expressions for parsing tags and attributes
9186
-
9187
- var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
9188
- var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
9189
- var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + unicodeRegExp.source + "]*";
9190
- var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")";
9191
- var startTagOpen = new RegExp("^<" + qnameCapture);
9192
- var startTagClose = /^\s*(\/?)>/;
9193
- var endTag = new RegExp("^<\\/" + qnameCapture + "[^>]*>");
9194
- var doctype = /^<!DOCTYPE [^>]+>/i; // #7298: escape - to avoid being passed as HTML comment when inlined in page
9195
-
9196
- var comment = /^<!\--/;
9197
- var conditionalComment = /^<!\[/; // Special Elements (can contain anything)
9198
-
9199
- var isPlainTextElement = makeMap('script,style,textarea', true);
9200
- var reCache = {};
9201
- var decodingMap = {
9202
- '&lt;': '<',
9203
- '&gt;': '>',
9204
- '&quot;': '"',
9205
- '&amp;': '&',
9206
- '&#10;': '\n',
9207
- '&#9;': '\t',
9208
- '&#39;': "'"
9209
- };
9210
- var encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;
9211
- var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g; // #5992
9212
-
9213
- var isIgnoreNewlineTag = makeMap('pre,textarea', true);
9214
-
9215
- var shouldIgnoreFirstNewline = function shouldIgnoreFirstNewline(tag, html) {
9216
- return tag && isIgnoreNewlineTag(tag) && html[0] === '\n';
9217
- };
9218
-
9219
- function decodeAttr(value, shouldDecodeNewlines) {
9220
- var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;
9221
- return value.replace(re, function (match) {
9222
- return decodingMap[match];
9223
- });
9224
- }
9225
-
9226
- function parseHTML(html, options) {
9227
- var stack = [];
9228
- var expectHTML = options.expectHTML;
9229
- var isUnaryTag$$1 = options.isUnaryTag || no;
9230
- var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;
9231
- var index = 0;
9232
- var last, lastTag;
9233
-
9234
- while (html) {
9235
- last = html; // Make sure we're not in a plaintext content element like script/style
9236
-
9237
- if (!lastTag || !isPlainTextElement(lastTag)) {
9238
- var textEnd = html.indexOf('<');
9239
-
9240
- if (textEnd === 0) {
9241
- // Comment:
9242
- if (comment.test(html)) {
9243
- var commentEnd = html.indexOf('-->');
9244
-
9245
- if (commentEnd >= 0) {
9246
- if (options.shouldKeepComment) {
9247
- options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);
9248
- }
9249
-
9250
- advance(commentEnd + 3);
9251
- continue;
9252
- }
9253
- } // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment
9254
-
9255
-
9256
- if (conditionalComment.test(html)) {
9257
- var conditionalEnd = html.indexOf(']>');
9258
-
9259
- if (conditionalEnd >= 0) {
9260
- advance(conditionalEnd + 2);
9261
- continue;
9262
- }
9263
- } // Doctype:
9264
-
9265
-
9266
- var doctypeMatch = html.match(doctype);
9267
-
9268
- if (doctypeMatch) {
9269
- advance(doctypeMatch[0].length);
9270
- continue;
9271
- } // End tag:
9272
-
9273
-
9274
- var endTagMatch = html.match(endTag);
9275
-
9276
- if (endTagMatch) {
9277
- var curIndex = index;
9278
- advance(endTagMatch[0].length);
9279
- parseEndTag(endTagMatch[1], curIndex, index);
9280
- continue;
9281
- } // Start tag:
9282
-
9283
-
9284
- var startTagMatch = parseStartTag();
9285
-
9286
- if (startTagMatch) {
9287
- handleStartTag(startTagMatch);
9288
-
9289
- if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {
9290
- advance(1);
9291
- }
9292
-
9293
- continue;
9294
- }
9295
- }
9296
-
9297
- var text = void 0,
9298
- rest = void 0,
9299
- next = void 0;
9300
-
9301
- if (textEnd >= 0) {
9302
- rest = html.slice(textEnd);
9303
-
9304
- while (!endTag.test(rest) && !startTagOpen.test(rest) && !comment.test(rest) && !conditionalComment.test(rest)) {
9305
- // < in plain text, be forgiving and treat it as text
9306
- next = rest.indexOf('<', 1);
9307
-
9308
- if (next < 0) {
9309
- break;
9310
- }
9311
-
9312
- textEnd += next;
9313
- rest = html.slice(textEnd);
9314
- }
9315
-
9316
- text = html.substring(0, textEnd);
9317
- }
9318
-
9319
- if (textEnd < 0) {
9320
- text = html;
9321
- }
9322
-
9323
- if (text) {
9324
- advance(text.length);
9325
- }
9326
-
9327
- if (options.chars && text) {
9328
- options.chars(text, index - text.length, index);
9329
- }
9330
- } else {
9331
- var endTagLength = 0;
9332
- var stackedTag = lastTag.toLowerCase();
9333
- var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\s\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));
9334
- var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {
9335
- endTagLength = endTag.length;
9336
-
9337
- if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {
9338
- text = text.replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298
9339
- .replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1');
9340
- }
9341
-
9342
- if (shouldIgnoreFirstNewline(stackedTag, text)) {
9343
- text = text.slice(1);
9344
- }
9345
-
9346
- if (options.chars) {
9347
- options.chars(text);
9348
- }
9349
-
9350
- return '';
9351
- });
9352
- index += html.length - rest$1.length;
9353
- html = rest$1;
9354
- parseEndTag(stackedTag, index - endTagLength, index);
9355
- }
9356
-
9357
- if (html === last) {
9358
- options.chars && options.chars(html);
9359
-
9360
- if (!stack.length && options.warn) {
9361
- options.warn("Mal-formatted tag at end of template: \"" + html + "\"", {
9362
- start: index + html.length
9363
- });
9364
- }
9365
-
9366
- break;
9367
- }
9368
- } // Clean up any remaining tags
9369
-
9370
-
9371
- parseEndTag();
9372
-
9373
- function advance(n) {
9374
- index += n;
9375
- html = html.substring(n);
9376
- }
9377
-
9378
- function parseStartTag() {
9379
- var start = html.match(startTagOpen);
9380
-
9381
- if (start) {
9382
- var match = {
9383
- tagName: start[1],
9384
- attrs: [],
9385
- start: index
9386
- };
9387
- advance(start[0].length);
9388
- var end, attr;
9389
-
9390
- while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
9391
- attr.start = index;
9392
- advance(attr[0].length);
9393
- attr.end = index;
9394
- match.attrs.push(attr);
9395
- }
9396
-
9397
- if (end) {
9398
- match.unarySlash = end[1];
9399
- advance(end[0].length);
9400
- match.end = index;
9401
- return match;
9402
- }
9403
- }
9404
- }
9405
-
9406
- function handleStartTag(match) {
9407
- var tagName = match.tagName;
9408
- var unarySlash = match.unarySlash;
9409
-
9410
- if (expectHTML) {
9411
- if (lastTag === 'p' && isNonPhrasingTag(tagName)) {
9412
- parseEndTag(lastTag);
9413
- }
9414
-
9415
- if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {
9416
- parseEndTag(tagName);
9417
- }
9418
- }
9419
-
9420
- var unary = isUnaryTag$$1(tagName) || !!unarySlash;
9421
- var l = match.attrs.length;
9422
- var attrs = new Array(l);
9423
-
9424
- for (var i = 0; i < l; i++) {
9425
- var args = match.attrs[i];
9426
- var value = args[3] || args[4] || args[5] || '';
9427
- var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href' ? options.shouldDecodeNewlinesForHref : options.shouldDecodeNewlines;
9428
- attrs[i] = {
9429
- name: args[1],
9430
- value: decodeAttr(value, shouldDecodeNewlines)
9431
- };
9432
-
9433
- if (options.outputSourceRange) {
9434
- attrs[i].start = args.start + args[0].match(/^\s*/).length;
9435
- attrs[i].end = args.end;
9436
- }
9437
- }
9438
-
9439
- if (!unary) {
9440
- stack.push({
9441
- tag: tagName,
9442
- lowerCasedTag: tagName.toLowerCase(),
9443
- attrs: attrs,
9444
- start: match.start,
9445
- end: match.end
9446
- });
9447
- lastTag = tagName;
9448
- }
9449
-
9450
- if (options.start) {
9451
- options.start(tagName, attrs, unary, match.start, match.end);
9452
- }
9453
- }
9454
-
9455
- function parseEndTag(tagName, start, end) {
9456
- var pos, lowerCasedTagName;
9457
-
9458
- if (start == null) {
9459
- start = index;
9460
- }
9461
-
9462
- if (end == null) {
9463
- end = index;
9464
- } // Find the closest opened tag of the same type
9465
-
9466
-
9467
- if (tagName) {
9468
- lowerCasedTagName = tagName.toLowerCase();
9469
-
9470
- for (pos = stack.length - 1; pos >= 0; pos--) {
9471
- if (stack[pos].lowerCasedTag === lowerCasedTagName) {
9472
- break;
9473
- }
9474
- }
9475
- } else {
9476
- // If no tag name is provided, clean shop
9477
- pos = 0;
9478
- }
9479
-
9480
- if (pos >= 0) {
9481
- // Close all the open elements, up the stack
9482
- for (var i = stack.length - 1; i >= pos; i--) {
9483
- if (i > pos || !tagName && options.warn) {
9484
- options.warn("tag <" + stack[i].tag + "> has no matching end tag.", {
9485
- start: stack[i].start,
9486
- end: stack[i].end
9487
- });
9488
- }
9489
-
9490
- if (options.end) {
9491
- options.end(stack[i].tag, start, end);
9492
- }
9493
- } // Remove the open elements from the stack
9494
-
9495
-
9496
- stack.length = pos;
9497
- lastTag = pos && stack[pos - 1].tag;
9498
- } else if (lowerCasedTagName === 'br') {
9499
- if (options.start) {
9500
- options.start(tagName, [], true, start, end);
9501
- }
9502
- } else if (lowerCasedTagName === 'p') {
9503
- if (options.start) {
9504
- options.start(tagName, [], false, start, end);
9505
- }
9506
-
9507
- if (options.end) {
9508
- options.end(tagName, start, end);
9509
- }
9510
- }
9511
- }
9512
- }
9513
- /* */
9514
-
9515
-
9516
- var onRE = /^@|^v-on:/;
9517
- var dirRE = /^v-|^@|^:|^#/;
9518
- var forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
9519
- var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
9520
- var stripParensRE = /^\(|\)$/g;
9521
- var dynamicArgRE = /^\[.*\]$/;
9522
- var argRE = /:(.*)$/;
9523
- var bindRE = /^:|^\.|^v-bind:/;
9524
- var modifierRE = /\.[^.\]]+(?=[^\]]*$)/g;
9525
- var slotRE = /^v-slot(:|$)|^#/;
9526
- var lineBreakRE = /[\r\n]/;
9527
- var whitespaceRE$1 = /\s+/g;
9528
- var invalidAttributeRE = /[\s"'<>\/=]/;
9529
- var decodeHTMLCached = cached(he.decode);
9530
- var emptySlotScopeToken = "_empty_"; // configurable state
9531
-
9532
- var warn$2;
9533
- var delimiters;
9534
- var transforms;
9535
- var preTransforms;
9536
- var postTransforms;
9537
- var platformIsPreTag;
9538
- var platformMustUseProp;
9539
- var platformGetTagNamespace;
9540
- var maybeComponent;
9541
-
9542
- function createASTElement(tag, attrs, parent) {
9543
- return {
9544
- type: 1,
9545
- tag: tag,
9546
- attrsList: attrs,
9547
- attrsMap: makeAttrsMap(attrs),
9548
- rawAttrsMap: {},
9549
- parent: parent,
9550
- children: []
9551
- };
9552
- }
9553
- /**
9554
- * Convert HTML string to AST.
9555
- */
9556
-
9557
-
9558
- function parse(template, options) {
9559
- warn$2 = options.warn || baseWarn;
9560
- platformIsPreTag = options.isPreTag || no;
9561
- platformMustUseProp = options.mustUseProp || no;
9562
- platformGetTagNamespace = options.getTagNamespace || no;
9563
- var isReservedTag = options.isReservedTag || no;
9564
-
9565
- maybeComponent = function maybeComponent(el) {
9566
- return !!el.component || !isReservedTag(el.tag);
9567
- };
9568
-
9569
- transforms = pluckModuleFunction(options.modules, 'transformNode');
9570
- preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');
9571
- postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');
9572
- delimiters = options.delimiters;
9573
- var stack = [];
9574
- var preserveWhitespace = options.preserveWhitespace !== false;
9575
- var whitespaceOption = options.whitespace;
9576
- var root;
9577
- var currentParent;
9578
- var inVPre = false;
9579
- var inPre = false;
9580
- var warned = false;
9581
-
9582
- function warnOnce(msg, range) {
9583
- if (!warned) {
9584
- warned = true;
9585
- warn$2(msg, range);
9586
- }
9587
- }
9588
-
9589
- function closeElement(element) {
9590
- trimEndingWhitespace(element);
9591
-
9592
- if (!inVPre && !element.processed) {
9593
- element = processElement(element, options);
9594
- } // tree management
9595
-
9596
-
9597
- if (!stack.length && element !== root) {
9598
- // allow root elements with v-if, v-else-if and v-else
9599
- if (root["if"] && (element.elseif || element["else"])) {
9600
- {
9601
- checkRootConstraints(element);
9602
- }
9603
- addIfCondition(root, {
9604
- exp: element.elseif,
9605
- block: element
9606
- });
9607
- } else {
9608
- warnOnce("Component template should contain exactly one root element. " + "If you are using v-if on multiple elements, " + "use v-else-if to chain them instead.", {
9609
- start: element.start
9610
- });
9611
- }
9612
- }
9613
-
9614
- if (currentParent && !element.forbidden) {
9615
- if (element.elseif || element["else"]) {
9616
- processIfConditions(element, currentParent);
9617
- } else {
9618
- if (element.slotScope) {
9619
- // scoped slot
9620
- // keep it in the children list so that v-else(-if) conditions can
9621
- // find it as the prev node.
9622
- var name = element.slotTarget || '"default"';
9623
- (currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;
9624
- }
9625
-
9626
- currentParent.children.push(element);
9627
- element.parent = currentParent;
9628
- }
9629
- } // final children cleanup
9630
- // filter out scoped slots
9631
-
9632
-
9633
- element.children = element.children.filter(function (c) {
9634
- return !c.slotScope;
9635
- }); // remove trailing whitespace node again
9636
-
9637
- trimEndingWhitespace(element); // check pre state
9638
-
9639
- if (element.pre) {
9640
- inVPre = false;
9641
- }
9642
-
9643
- if (platformIsPreTag(element.tag)) {
9644
- inPre = false;
9645
- } // apply post-transforms
9646
-
9647
-
9648
- for (var i = 0; i < postTransforms.length; i++) {
9649
- postTransforms[i](element, options);
9650
- }
9651
- }
9652
-
9653
- function trimEndingWhitespace(el) {
9654
- // remove trailing whitespace node
9655
- if (!inPre) {
9656
- var lastNode;
9657
-
9658
- while ((lastNode = el.children[el.children.length - 1]) && lastNode.type === 3 && lastNode.text === ' ') {
9659
- el.children.pop();
9660
- }
9661
- }
9662
- }
9663
-
9664
- function checkRootConstraints(el) {
9665
- if (el.tag === 'slot' || el.tag === 'template') {
9666
- warnOnce("Cannot use <" + el.tag + "> as component root element because it may " + 'contain multiple nodes.', {
9667
- start: el.start
9668
- });
9669
- }
9670
-
9671
- if (el.attrsMap.hasOwnProperty('v-for')) {
9672
- warnOnce('Cannot use v-for on stateful component root element because ' + 'it renders multiple elements.', el.rawAttrsMap['v-for']);
9673
- }
9674
- }
9675
-
9676
- parseHTML(template, {
9677
- warn: warn$2,
9678
- expectHTML: options.expectHTML,
9679
- isUnaryTag: options.isUnaryTag,
9680
- canBeLeftOpenTag: options.canBeLeftOpenTag,
9681
- shouldDecodeNewlines: options.shouldDecodeNewlines,
9682
- shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,
9683
- shouldKeepComment: options.comments,
9684
- outputSourceRange: options.outputSourceRange,
9685
- start: function start(tag, attrs, unary, start$1, end) {
9686
- // check namespace.
9687
- // inherit parent ns if there is one
9688
- var ns = currentParent && currentParent.ns || platformGetTagNamespace(tag); // handle IE svg bug
9689
-
9690
- /* istanbul ignore if */
9691
-
9692
- if (isIE && ns === 'svg') {
9693
- attrs = guardIESVGBug(attrs);
9694
- }
9695
-
9696
- var element = createASTElement(tag, attrs, currentParent);
9697
-
9698
- if (ns) {
9699
- element.ns = ns;
9700
- }
9701
-
9702
- {
9703
- if (options.outputSourceRange) {
9704
- element.start = start$1;
9705
- element.end = end;
9706
- element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
9707
- cumulated[attr.name] = attr;
9708
- return cumulated;
9709
- }, {});
9710
- }
9711
-
9712
- attrs.forEach(function (attr) {
9713
- if (invalidAttributeRE.test(attr.name)) {
9714
- warn$2("Invalid dynamic argument expression: attribute names cannot contain " + "spaces, quotes, <, >, / or =.", {
9715
- start: attr.start + attr.name.indexOf("["),
9716
- end: attr.start + attr.name.length
9717
- });
9718
- }
9719
- });
9720
- }
9721
-
9722
- if (isForbiddenTag(element) && !isServerRendering()) {
9723
- element.forbidden = true;
9724
- warn$2('Templates should only be responsible for mapping the state to the ' + 'UI. Avoid placing tags with side-effects in your templates, such as ' + "<" + tag + ">" + ', as they will not be parsed.', {
9725
- start: element.start
9726
- });
9727
- } // apply pre-transforms
9728
-
9729
-
9730
- for (var i = 0; i < preTransforms.length; i++) {
9731
- element = preTransforms[i](element, options) || element;
9732
- }
9733
-
9734
- if (!inVPre) {
9735
- processPre(element);
9736
-
9737
- if (element.pre) {
9738
- inVPre = true;
9739
- }
9740
- }
9741
-
9742
- if (platformIsPreTag(element.tag)) {
9743
- inPre = true;
9744
- }
9745
-
9746
- if (inVPre) {
9747
- processRawAttrs(element);
9748
- } else if (!element.processed) {
9749
- // structural directives
9750
- processFor(element);
9751
- processIf(element);
9752
- processOnce(element);
9753
- }
9754
-
9755
- if (!root) {
9756
- root = element;
9757
- {
9758
- checkRootConstraints(root);
9759
- }
9760
- }
9761
-
9762
- if (!unary) {
9763
- currentParent = element;
9764
- stack.push(element);
9765
- } else {
9766
- closeElement(element);
9767
- }
9768
- },
9769
- end: function end(tag, start, end$1) {
9770
- var element = stack[stack.length - 1]; // pop stack
9771
-
9772
- stack.length -= 1;
9773
- currentParent = stack[stack.length - 1];
9774
-
9775
- if (options.outputSourceRange) {
9776
- element.end = end$1;
9777
- }
9778
-
9779
- closeElement(element);
9780
- },
9781
- chars: function chars(text, start, end) {
9782
- if (!currentParent) {
9783
- {
9784
- if (text === template) {
9785
- warnOnce('Component template requires a root element, rather than just text.', {
9786
- start: start
9787
- });
9788
- } else if (text = text.trim()) {
9789
- warnOnce("text \"" + text + "\" outside root element will be ignored.", {
9790
- start: start
9791
- });
9792
- }
9793
- }
9794
- return;
9795
- } // IE textarea placeholder bug
9796
-
9797
- /* istanbul ignore if */
9798
-
9799
-
9800
- if (isIE && currentParent.tag === 'textarea' && currentParent.attrsMap.placeholder === text) {
9801
- return;
9802
- }
9803
-
9804
- var children = currentParent.children;
9805
-
9806
- if (inPre || text.trim()) {
9807
- text = isTextTag(currentParent) ? text : decodeHTMLCached(text);
9808
- } else if (!children.length) {
9809
- // remove the whitespace-only node right after an opening tag
9810
- text = '';
9811
- } else if (whitespaceOption) {
9812
- if (whitespaceOption === 'condense') {
9813
- // in condense mode, remove the whitespace node if it contains
9814
- // line break, otherwise condense to a single space
9815
- text = lineBreakRE.test(text) ? '' : ' ';
9816
- } else {
9817
- text = ' ';
9818
- }
9819
- } else {
9820
- text = preserveWhitespace ? ' ' : '';
9821
- }
9822
-
9823
- if (text) {
9824
- if (!inPre && whitespaceOption === 'condense') {
9825
- // condense consecutive whitespaces into single space
9826
- text = text.replace(whitespaceRE$1, ' ');
9827
- }
9828
-
9829
- var res;
9830
- var child;
9831
-
9832
- if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {
9833
- child = {
9834
- type: 2,
9835
- expression: res.expression,
9836
- tokens: res.tokens,
9837
- text: text
9838
- };
9839
- } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {
9840
- child = {
9841
- type: 3,
9842
- text: text
9843
- };
9844
- }
9845
-
9846
- if (child) {
9847
- if (options.outputSourceRange) {
9848
- child.start = start;
9849
- child.end = end;
9850
- }
9851
-
9852
- children.push(child);
9853
- }
9854
- }
9855
- },
9856
- comment: function comment(text, start, end) {
9857
- // adding anything as a sibling to the root node is forbidden
9858
- // comments should still be allowed, but ignored
9859
- if (currentParent) {
9860
- var child = {
9861
- type: 3,
9862
- text: text,
9863
- isComment: true
9864
- };
9865
-
9866
- if (options.outputSourceRange) {
9867
- child.start = start;
9868
- child.end = end;
9869
- }
9870
-
9871
- currentParent.children.push(child);
9872
- }
9873
- }
9874
- });
9875
- return root;
9876
- }
9877
-
9878
- function processPre(el) {
9879
- if (getAndRemoveAttr(el, 'v-pre') != null) {
9880
- el.pre = true;
9881
- }
9882
- }
9883
-
9884
- function processRawAttrs(el) {
9885
- var list = el.attrsList;
9886
- var len = list.length;
9887
-
9888
- if (len) {
9889
- var attrs = el.attrs = new Array(len);
9890
-
9891
- for (var i = 0; i < len; i++) {
9892
- attrs[i] = {
9893
- name: list[i].name,
9894
- value: JSON.stringify(list[i].value)
9895
- };
9896
-
9897
- if (list[i].start != null) {
9898
- attrs[i].start = list[i].start;
9899
- attrs[i].end = list[i].end;
9900
- }
9901
- }
9902
- } else if (!el.pre) {
9903
- // non root node in pre blocks with no attributes
9904
- el.plain = true;
9905
- }
9906
- }
9907
-
9908
- function processElement(element, options) {
9909
- processKey(element); // determine whether this is a plain element after
9910
- // removing structural attributes
9911
-
9912
- element.plain = !element.key && !element.scopedSlots && !element.attrsList.length;
9913
- processRef(element);
9914
- processSlotContent(element);
9915
- processSlotOutlet(element);
9916
- processComponent(element);
9917
-
9918
- for (var i = 0; i < transforms.length; i++) {
9919
- element = transforms[i](element, options) || element;
9920
- }
9921
-
9922
- processAttrs(element);
9923
- return element;
9924
- }
9925
-
9926
- function processKey(el) {
9927
- var exp = getBindingAttr(el, 'key');
9928
-
9929
- if (exp) {
9930
- {
9931
- if (el.tag === 'template') {
9932
- warn$2("<template> cannot be keyed. Place the key on real elements instead.", getRawBindingAttr(el, 'key'));
9933
- }
9934
-
9935
- if (el["for"]) {
9936
- var iterator = el.iterator2 || el.iterator1;
9937
- var parent = el.parent;
9938
-
9939
- if (iterator && iterator === exp && parent && parent.tag === 'transition-group') {
9940
- warn$2("Do not use v-for index as key on <transition-group> children, " + "this is the same as not using keys.", getRawBindingAttr(el, 'key'), true
9941
- /* tip */
9942
- );
9943
- }
9944
- }
9945
- }
9946
- el.key = exp;
9947
- }
9948
- }
9949
-
9950
- function processRef(el) {
9951
- var ref = getBindingAttr(el, 'ref');
9952
-
9953
- if (ref) {
9954
- el.ref = ref;
9955
- el.refInFor = checkInFor(el);
9956
- }
9957
- }
9958
-
9959
- function processFor(el) {
9960
- var exp;
9961
-
9962
- if (exp = getAndRemoveAttr(el, 'v-for')) {
9963
- var res = parseFor(exp);
9964
-
9965
- if (res) {
9966
- extend(el, res);
9967
- } else {
9968
- warn$2("Invalid v-for expression: " + exp, el.rawAttrsMap['v-for']);
9969
- }
9970
- }
9971
- }
9972
-
9973
- function parseFor(exp) {
9974
- var inMatch = exp.match(forAliasRE);
9975
-
9976
- if (!inMatch) {
9977
- return;
9978
- }
9979
-
9980
- var res = {};
9981
- res["for"] = inMatch[2].trim();
9982
- var alias = inMatch[1].trim().replace(stripParensRE, '');
9983
- var iteratorMatch = alias.match(forIteratorRE);
9984
-
9985
- if (iteratorMatch) {
9986
- res.alias = alias.replace(forIteratorRE, '').trim();
9987
- res.iterator1 = iteratorMatch[1].trim();
9988
-
9989
- if (iteratorMatch[2]) {
9990
- res.iterator2 = iteratorMatch[2].trim();
9991
- }
9992
- } else {
9993
- res.alias = alias;
9994
- }
9995
-
9996
- return res;
9997
- }
9998
-
9999
- function processIf(el) {
10000
- var exp = getAndRemoveAttr(el, 'v-if');
10001
-
10002
- if (exp) {
10003
- el["if"] = exp;
10004
- addIfCondition(el, {
10005
- exp: exp,
10006
- block: el
10007
- });
10008
- } else {
10009
- if (getAndRemoveAttr(el, 'v-else') != null) {
10010
- el["else"] = true;
10011
- }
10012
-
10013
- var elseif = getAndRemoveAttr(el, 'v-else-if');
10014
-
10015
- if (elseif) {
10016
- el.elseif = elseif;
10017
- }
10018
- }
10019
- }
10020
-
10021
- function processIfConditions(el, parent) {
10022
- var prev = findPrevElement(parent.children);
10023
-
10024
- if (prev && prev["if"]) {
10025
- addIfCondition(prev, {
10026
- exp: el.elseif,
10027
- block: el
10028
- });
10029
- } else {
10030
- warn$2("v-" + (el.elseif ? 'else-if="' + el.elseif + '"' : 'else') + " " + "used on element <" + el.tag + "> without corresponding v-if.", el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']);
10031
- }
10032
- }
10033
-
10034
- function findPrevElement(children) {
10035
- var i = children.length;
10036
-
10037
- while (i--) {
10038
- if (children[i].type === 1) {
10039
- return children[i];
10040
- } else {
10041
- if (children[i].text !== ' ') {
10042
- warn$2("text \"" + children[i].text.trim() + "\" between v-if and v-else(-if) " + "will be ignored.", children[i]);
10043
- }
10044
-
10045
- children.pop();
10046
- }
10047
- }
10048
- }
10049
-
10050
- function addIfCondition(el, condition) {
10051
- if (!el.ifConditions) {
10052
- el.ifConditions = [];
10053
- }
10054
-
10055
- el.ifConditions.push(condition);
10056
- }
10057
-
10058
- function processOnce(el) {
10059
- var once$$1 = getAndRemoveAttr(el, 'v-once');
10060
-
10061
- if (once$$1 != null) {
10062
- el.once = true;
10063
- }
10064
- } // handle content being passed to a component as slot,
10065
- // e.g. <template slot="xxx">, <div slot-scope="xxx">
10066
-
10067
-
10068
- function processSlotContent(el) {
10069
- var slotScope;
10070
-
10071
- if (el.tag === 'template') {
10072
- slotScope = getAndRemoveAttr(el, 'scope');
10073
- /* istanbul ignore if */
10074
-
10075
- if (slotScope) {
10076
- warn$2("the \"scope\" attribute for scoped slots have been deprecated and " + "replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute " + "can also be used on plain elements in addition to <template> to " + "denote scoped slots.", el.rawAttrsMap['scope'], true);
10077
- }
10078
-
10079
- el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');
10080
- } else if (slotScope = getAndRemoveAttr(el, 'slot-scope')) {
10081
- /* istanbul ignore if */
10082
- if (el.attrsMap['v-for']) {
10083
- warn$2("Ambiguous combined usage of slot-scope and v-for on <" + el.tag + "> " + "(v-for takes higher priority). Use a wrapper <template> for the " + "scoped slot to make it clearer.", el.rawAttrsMap['slot-scope'], true);
10084
- }
10085
-
10086
- el.slotScope = slotScope;
10087
- } // slot="xxx"
10088
-
10089
-
10090
- var slotTarget = getBindingAttr(el, 'slot');
10091
-
10092
- if (slotTarget) {
10093
- el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget;
10094
- el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']); // preserve slot as an attribute for native shadow DOM compat
10095
- // only for non-scoped slots.
10096
-
10097
- if (el.tag !== 'template' && !el.slotScope) {
10098
- addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));
10099
- }
10100
- } // 2.6 v-slot syntax
10101
-
10102
-
10103
- {
10104
- if (el.tag === 'template') {
10105
- // v-slot on <template>
10106
- var slotBinding = getAndRemoveAttrByRegex(el, slotRE);
10107
-
10108
- if (slotBinding) {
10109
- {
10110
- if (el.slotTarget || el.slotScope) {
10111
- warn$2("Unexpected mixed usage of different slot syntaxes.", el);
10112
- }
10113
-
10114
- if (el.parent && !maybeComponent(el.parent)) {
10115
- warn$2("<template v-slot> can only appear at the root level inside " + "the receiving component", el);
10116
- }
10117
- }
10118
- var ref = getSlotName(slotBinding);
10119
- var name = ref.name;
10120
- var dynamic = ref.dynamic;
10121
- el.slotTarget = name;
10122
- el.slotTargetDynamic = dynamic;
10123
- el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf
10124
- }
10125
- } else {
10126
- // v-slot on component, denotes default slot
10127
- var slotBinding$1 = getAndRemoveAttrByRegex(el, slotRE);
10128
-
10129
- if (slotBinding$1) {
10130
- {
10131
- if (!maybeComponent(el)) {
10132
- warn$2("v-slot can only be used on components or <template>.", slotBinding$1);
10133
- }
10134
-
10135
- if (el.slotScope || el.slotTarget) {
10136
- warn$2("Unexpected mixed usage of different slot syntaxes.", el);
10137
- }
10138
-
10139
- if (el.scopedSlots) {
10140
- warn$2("To avoid scope ambiguity, the default slot should also use " + "<template> syntax when there are other named slots.", slotBinding$1);
10141
- }
10142
- } // add the component's children to its default slot
10143
-
10144
- var slots = el.scopedSlots || (el.scopedSlots = {});
10145
- var ref$1 = getSlotName(slotBinding$1);
10146
- var name$1 = ref$1.name;
10147
- var dynamic$1 = ref$1.dynamic;
10148
- var slotContainer = slots[name$1] = createASTElement('template', [], el);
10149
- slotContainer.slotTarget = name$1;
10150
- slotContainer.slotTargetDynamic = dynamic$1;
10151
- slotContainer.children = el.children.filter(function (c) {
10152
- if (!c.slotScope) {
10153
- c.parent = slotContainer;
10154
- return true;
10155
- }
10156
- });
10157
- slotContainer.slotScope = slotBinding$1.value || emptySlotScopeToken; // remove children as they are returned from scopedSlots now
10158
-
10159
- el.children = []; // mark el non-plain so data gets generated
10160
-
10161
- el.plain = false;
10162
- }
10163
- }
10164
- }
10165
- }
10166
-
10167
- function getSlotName(binding) {
10168
- var name = binding.name.replace(slotRE, '');
10169
-
10170
- if (!name) {
10171
- if (binding.name[0] !== '#') {
10172
- name = 'default';
10173
- } else {
10174
- warn$2("v-slot shorthand syntax requires a slot name.", binding);
10175
- }
10176
- }
10177
-
10178
- return dynamicArgRE.test(name) // dynamic [name]
10179
- ? {
10180
- name: name.slice(1, -1),
10181
- dynamic: true
10182
- } // static name
10183
- : {
10184
- name: "\"" + name + "\"",
10185
- dynamic: false
10186
- };
10187
- } // handle <slot/> outlets
10188
-
10189
-
10190
- function processSlotOutlet(el) {
10191
- if (el.tag === 'slot') {
10192
- el.slotName = getBindingAttr(el, 'name');
10193
-
10194
- if (el.key) {
10195
- warn$2("`key` does not work on <slot> because slots are abstract outlets " + "and can possibly expand into multiple elements. " + "Use the key on a wrapping element instead.", getRawBindingAttr(el, 'key'));
10196
- }
10197
- }
10198
- }
10199
-
10200
- function processComponent(el) {
10201
- var binding;
10202
-
10203
- if (binding = getBindingAttr(el, 'is')) {
10204
- el.component = binding;
10205
- }
10206
-
10207
- if (getAndRemoveAttr(el, 'inline-template') != null) {
10208
- el.inlineTemplate = true;
10209
- }
10210
- }
10211
-
10212
- function processAttrs(el) {
10213
- var list = el.attrsList;
10214
- var i, l, name, rawName, value, modifiers, syncGen, isDynamic;
10215
-
10216
- for (i = 0, l = list.length; i < l; i++) {
10217
- name = rawName = list[i].name;
10218
- value = list[i].value;
10219
-
10220
- if (dirRE.test(name)) {
10221
- // mark element as dynamic
10222
- el.hasBindings = true; // modifiers
10223
-
10224
- modifiers = parseModifiers(name.replace(dirRE, '')); // support .foo shorthand syntax for the .prop modifier
10225
-
10226
- if (modifiers) {
10227
- name = name.replace(modifierRE, '');
10228
- }
10229
-
10230
- if (bindRE.test(name)) {
10231
- // v-bind
10232
- name = name.replace(bindRE, '');
10233
- value = parseFilters(value);
10234
- isDynamic = dynamicArgRE.test(name);
10235
-
10236
- if (isDynamic) {
10237
- name = name.slice(1, -1);
10238
- }
10239
-
10240
- if (value.trim().length === 0) {
10241
- warn$2("The value for a v-bind expression cannot be empty. Found in \"v-bind:" + name + "\"");
10242
- }
10243
-
10244
- if (modifiers) {
10245
- if (modifiers.prop && !isDynamic) {
10246
- name = camelize(name);
10247
-
10248
- if (name === 'innerHtml') {
10249
- name = 'innerHTML';
10250
- }
10251
- }
10252
-
10253
- if (modifiers.camel && !isDynamic) {
10254
- name = camelize(name);
10255
- }
10256
-
10257
- if (modifiers.sync) {
10258
- syncGen = genAssignmentCode(value, "$event");
10259
-
10260
- if (!isDynamic) {
10261
- addHandler(el, "update:" + camelize(name), syncGen, null, false, warn$2, list[i]);
10262
-
10263
- if (hyphenate(name) !== camelize(name)) {
10264
- addHandler(el, "update:" + hyphenate(name), syncGen, null, false, warn$2, list[i]);
10265
- }
10266
- } else {
10267
- // handler w/ dynamic event name
10268
- addHandler(el, "\"update:\"+(" + name + ")", syncGen, null, false, warn$2, list[i], true // dynamic
10269
- );
10270
- }
10271
- }
10272
- }
10273
-
10274
- if (modifiers && modifiers.prop || !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)) {
10275
- addProp(el, name, value, list[i], isDynamic);
10276
- } else {
10277
- addAttr(el, name, value, list[i], isDynamic);
10278
- }
10279
- } else if (onRE.test(name)) {
10280
- // v-on
10281
- name = name.replace(onRE, '');
10282
- isDynamic = dynamicArgRE.test(name);
10283
-
10284
- if (isDynamic) {
10285
- name = name.slice(1, -1);
10286
- }
10287
-
10288
- addHandler(el, name, value, modifiers, false, warn$2, list[i], isDynamic);
10289
- } else {
10290
- // normal directives
10291
- name = name.replace(dirRE, ''); // parse arg
10292
-
10293
- var argMatch = name.match(argRE);
10294
- var arg = argMatch && argMatch[1];
10295
- isDynamic = false;
10296
-
10297
- if (arg) {
10298
- name = name.slice(0, -(arg.length + 1));
10299
-
10300
- if (dynamicArgRE.test(arg)) {
10301
- arg = arg.slice(1, -1);
10302
- isDynamic = true;
10303
- }
10304
- }
10305
-
10306
- addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);
10307
-
10308
- if (name === 'model') {
10309
- checkForAliasModel(el, value);
10310
- }
10311
- }
10312
- } else {
10313
- // literal attribute
10314
- {
10315
- var res = parseText(value, delimiters);
10316
-
10317
- if (res) {
10318
- warn$2(name + "=\"" + value + "\": " + 'Interpolation inside attributes has been removed. ' + 'Use v-bind or the colon shorthand instead. For example, ' + 'instead of <div id="{{ val }}">, use <div :id="val">.', list[i]);
10319
- }
10320
- }
10321
- addAttr(el, name, JSON.stringify(value), list[i]); // #6887 firefox doesn't update muted state if set via attribute
10322
- // even immediately after element creation
10323
-
10324
- if (!el.component && name === 'muted' && platformMustUseProp(el.tag, el.attrsMap.type, name)) {
10325
- addProp(el, name, 'true', list[i]);
10326
- }
10327
- }
10328
- }
10329
- }
10330
-
10331
- function checkInFor(el) {
10332
- var parent = el;
10333
-
10334
- while (parent) {
10335
- if (parent["for"] !== undefined) {
10336
- return true;
10337
- }
10338
-
10339
- parent = parent.parent;
10340
- }
10341
-
10342
- return false;
10343
- }
10344
-
10345
- function parseModifiers(name) {
10346
- var match = name.match(modifierRE);
10347
-
10348
- if (match) {
10349
- var ret = {};
10350
- match.forEach(function (m) {
10351
- ret[m.slice(1)] = true;
10352
- });
10353
- return ret;
10354
- }
10355
- }
10356
-
10357
- function makeAttrsMap(attrs) {
10358
- var map = {};
10359
-
10360
- for (var i = 0, l = attrs.length; i < l; i++) {
10361
- if (map[attrs[i].name] && !isIE && !isEdge) {
10362
- warn$2('duplicate attribute: ' + attrs[i].name, attrs[i]);
10363
- }
10364
-
10365
- map[attrs[i].name] = attrs[i].value;
10366
- }
10367
-
10368
- return map;
10369
- } // for script (e.g. type="x/template") or style, do not decode content
10370
-
10371
-
10372
- function isTextTag(el) {
10373
- return el.tag === 'script' || el.tag === 'style';
10374
- }
10375
-
10376
- function isForbiddenTag(el) {
10377
- return el.tag === 'style' || el.tag === 'script' && (!el.attrsMap.type || el.attrsMap.type === 'text/javascript');
10378
- }
10379
-
10380
- var ieNSBug = /^xmlns:NS\d+/;
10381
- var ieNSPrefix = /^NS\d+:/;
10382
- /* istanbul ignore next */
10383
-
10384
- function guardIESVGBug(attrs) {
10385
- var res = [];
10386
-
10387
- for (var i = 0; i < attrs.length; i++) {
10388
- var attr = attrs[i];
10389
-
10390
- if (!ieNSBug.test(attr.name)) {
10391
- attr.name = attr.name.replace(ieNSPrefix, '');
10392
- res.push(attr);
10393
- }
10394
- }
10395
-
10396
- return res;
10397
- }
10398
-
10399
- function checkForAliasModel(el, value) {
10400
- var _el = el;
10401
-
10402
- while (_el) {
10403
- if (_el["for"] && _el.alias === value) {
10404
- warn$2("<" + el.tag + " v-model=\"" + value + "\">: " + "You are binding v-model directly to a v-for iteration alias. " + "This will not be able to modify the v-for source array because " + "writing to the alias is like modifying a function local variable. " + "Consider using an array of objects and use v-model on an object property instead.", el.rawAttrsMap['v-model']);
10405
- }
10406
-
10407
- _el = _el.parent;
10408
- }
10409
- }
10410
- /* */
10411
-
10412
-
10413
- function preTransformNode(el, options) {
10414
- if (el.tag === 'input') {
10415
- var map = el.attrsMap;
10416
-
10417
- if (!map['v-model']) {
10418
- return;
10419
- }
10420
-
10421
- var typeBinding;
10422
-
10423
- if (map[':type'] || map['v-bind:type']) {
10424
- typeBinding = getBindingAttr(el, 'type');
10425
- }
10426
-
10427
- if (!map.type && !typeBinding && map['v-bind']) {
10428
- typeBinding = "(" + map['v-bind'] + ").type";
10429
- }
10430
-
10431
- if (typeBinding) {
10432
- var ifCondition = getAndRemoveAttr(el, 'v-if', true);
10433
- var ifConditionExtra = ifCondition ? "&&(" + ifCondition + ")" : "";
10434
- var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;
10435
- var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true); // 1. checkbox
10436
-
10437
- var branch0 = cloneASTElement(el); // process for on the main node
10438
-
10439
- processFor(branch0);
10440
- addRawAttr(branch0, 'type', 'checkbox');
10441
- processElement(branch0, options);
10442
- branch0.processed = true; // prevent it from double-processed
10443
-
10444
- branch0["if"] = "(" + typeBinding + ")==='checkbox'" + ifConditionExtra;
10445
- addIfCondition(branch0, {
10446
- exp: branch0["if"],
10447
- block: branch0
10448
- }); // 2. add radio else-if condition
10449
-
10450
- var branch1 = cloneASTElement(el);
10451
- getAndRemoveAttr(branch1, 'v-for', true);
10452
- addRawAttr(branch1, 'type', 'radio');
10453
- processElement(branch1, options);
10454
- addIfCondition(branch0, {
10455
- exp: "(" + typeBinding + ")==='radio'" + ifConditionExtra,
10456
- block: branch1
10457
- }); // 3. other
10458
-
10459
- var branch2 = cloneASTElement(el);
10460
- getAndRemoveAttr(branch2, 'v-for', true);
10461
- addRawAttr(branch2, ':type', typeBinding);
10462
- processElement(branch2, options);
10463
- addIfCondition(branch0, {
10464
- exp: ifCondition,
10465
- block: branch2
10466
- });
10467
-
10468
- if (hasElse) {
10469
- branch0["else"] = true;
10470
- } else if (elseIfCondition) {
10471
- branch0.elseif = elseIfCondition;
10472
- }
10473
-
10474
- return branch0;
10475
- }
10476
- }
10477
- }
10478
-
10479
- function cloneASTElement(el) {
10480
- return createASTElement(el.tag, el.attrsList.slice(), el.parent);
10481
- }
10482
-
10483
- var model$1 = {
10484
- preTransformNode: preTransformNode
10485
- };
10486
- var modules$1 = [klass$1, style$1, model$1];
10487
- /* */
10488
-
10489
- function text(el, dir) {
10490
- if (dir.value) {
10491
- addProp(el, 'textContent', "_s(" + dir.value + ")", dir);
10492
- }
10493
- }
10494
- /* */
10495
-
10496
-
10497
- function html(el, dir) {
10498
- if (dir.value) {
10499
- addProp(el, 'innerHTML', "_s(" + dir.value + ")", dir);
10500
- }
10501
- }
10502
-
10503
- var directives$1 = {
10504
- model: model,
10505
- text: text,
10506
- html: html
10507
- };
10508
- /* */
10509
-
10510
- var baseOptions = {
10511
- expectHTML: true,
10512
- modules: modules$1,
10513
- directives: directives$1,
10514
- isPreTag: isPreTag,
10515
- isUnaryTag: isUnaryTag,
10516
- mustUseProp: mustUseProp,
10517
- canBeLeftOpenTag: canBeLeftOpenTag,
10518
- isReservedTag: isReservedTag,
10519
- getTagNamespace: getTagNamespace,
10520
- staticKeys: genStaticKeys(modules$1)
10521
- };
10522
- /* */
10523
-
10524
- var isStaticKey;
10525
- var isPlatformReservedTag;
10526
- var genStaticKeysCached = cached(genStaticKeys$1);
10527
- /**
10528
- * Goal of the optimizer: walk the generated template AST tree
10529
- * and detect sub-trees that are purely static, i.e. parts of
10530
- * the DOM that never needs to change.
10531
- *
10532
- * Once we detect these sub-trees, we can:
10533
- *
10534
- * 1. Hoist them into constants, so that we no longer need to
10535
- * create fresh nodes for them on each re-render;
10536
- * 2. Completely skip them in the patching process.
10537
- */
10538
-
10539
- function optimize(root, options) {
10540
- if (!root) {
10541
- return;
10542
- }
10543
-
10544
- isStaticKey = genStaticKeysCached(options.staticKeys || '');
10545
- isPlatformReservedTag = options.isReservedTag || no; // first pass: mark all non-static nodes.
10546
-
10547
- markStatic$1(root); // second pass: mark static roots.
10548
-
10549
- markStaticRoots(root, false);
10550
- }
10551
-
10552
- function genStaticKeys$1(keys) {
10553
- return makeMap('type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' + (keys ? ',' + keys : ''));
10554
- }
10555
-
10556
- function markStatic$1(node) {
10557
- node["static"] = isStatic(node);
10558
-
10559
- if (node.type === 1) {
10560
- // do not make component slot content static. this avoids
10561
- // 1. components not able to mutate slot nodes
10562
- // 2. static slot content fails for hot-reloading
10563
- if (!isPlatformReservedTag(node.tag) && node.tag !== 'slot' && node.attrsMap['inline-template'] == null) {
10564
- return;
10565
- }
10566
-
10567
- for (var i = 0, l = node.children.length; i < l; i++) {
10568
- var child = node.children[i];
10569
- markStatic$1(child);
10570
-
10571
- if (!child["static"]) {
10572
- node["static"] = false;
10573
- }
10574
- }
10575
-
10576
- if (node.ifConditions) {
10577
- for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
10578
- var block = node.ifConditions[i$1].block;
10579
- markStatic$1(block);
10580
-
10581
- if (!block["static"]) {
10582
- node["static"] = false;
10583
- }
10584
- }
10585
- }
10586
- }
10587
- }
10588
-
10589
- function markStaticRoots(node, isInFor) {
10590
- if (node.type === 1) {
10591
- if (node["static"] || node.once) {
10592
- node.staticInFor = isInFor;
10593
- } // For a node to qualify as a static root, it should have children that
10594
- // are not just static text. Otherwise the cost of hoisting out will
10595
- // outweigh the benefits and it's better off to just always render it fresh.
10596
-
10597
-
10598
- if (node["static"] && node.children.length && !(node.children.length === 1 && node.children[0].type === 3)) {
10599
- node.staticRoot = true;
10600
- return;
10601
- } else {
10602
- node.staticRoot = false;
10603
- }
10604
-
10605
- if (node.children) {
10606
- for (var i = 0, l = node.children.length; i < l; i++) {
10607
- markStaticRoots(node.children[i], isInFor || !!node["for"]);
10608
- }
10609
- }
10610
-
10611
- if (node.ifConditions) {
10612
- for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
10613
- markStaticRoots(node.ifConditions[i$1].block, isInFor);
10614
- }
10615
- }
10616
- }
10617
- }
10618
-
10619
- function isStatic(node) {
10620
- if (node.type === 2) {
10621
- // expression
10622
- return false;
10623
- }
10624
-
10625
- if (node.type === 3) {
10626
- // text
10627
- return true;
10628
- }
10629
-
10630
- return !!(node.pre || !node.hasBindings && // no dynamic bindings
10631
- !node["if"] && !node["for"] && // not v-if or v-for or v-else
10632
- !isBuiltInTag(node.tag) && // not a built-in
10633
- isPlatformReservedTag(node.tag) && // not a component
10634
- !isDirectChildOfTemplateFor(node) && Object.keys(node).every(isStaticKey));
10635
- }
10636
-
10637
- function isDirectChildOfTemplateFor(node) {
10638
- while (node.parent) {
10639
- node = node.parent;
10640
-
10641
- if (node.tag !== 'template') {
10642
- return false;
10643
- }
10644
-
10645
- if (node["for"]) {
10646
- return true;
10647
- }
10648
- }
10649
-
10650
- return false;
10651
- }
10652
- /* */
10653
-
10654
-
10655
- var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/;
10656
- var fnInvokeRE = /\([^)]*?\);*$/;
10657
- var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/; // KeyboardEvent.keyCode aliases
10658
-
10659
- var keyCodes = {
10660
- esc: 27,
10661
- tab: 9,
10662
- enter: 13,
10663
- space: 32,
10664
- up: 38,
10665
- left: 37,
10666
- right: 39,
10667
- down: 40,
10668
- 'delete': [8, 46]
10669
- }; // KeyboardEvent.key aliases
10670
-
10671
- var keyNames = {
10672
- // #7880: IE11 and Edge use `Esc` for Escape key name.
10673
- esc: ['Esc', 'Escape'],
10674
- tab: 'Tab',
10675
- enter: 'Enter',
10676
- // #9112: IE11 uses `Spacebar` for Space key name.
10677
- space: [' ', 'Spacebar'],
10678
- // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.
10679
- up: ['Up', 'ArrowUp'],
10680
- left: ['Left', 'ArrowLeft'],
10681
- right: ['Right', 'ArrowRight'],
10682
- down: ['Down', 'ArrowDown'],
10683
- // #9112: IE11 uses `Del` for Delete key name.
10684
- 'delete': ['Backspace', 'Delete', 'Del']
10685
- }; // #4868: modifiers that prevent the execution of the listener
10686
- // need to explicitly return null so that we can determine whether to remove
10687
- // the listener for .once
10688
-
10689
- var genGuard = function genGuard(condition) {
10690
- return "if(" + condition + ")return null;";
10691
- };
10692
-
10693
- var modifierCode = {
10694
- stop: '$event.stopPropagation();',
10695
- prevent: '$event.preventDefault();',
10696
- self: genGuard("$event.target !== $event.currentTarget"),
10697
- ctrl: genGuard("!$event.ctrlKey"),
10698
- shift: genGuard("!$event.shiftKey"),
10699
- alt: genGuard("!$event.altKey"),
10700
- meta: genGuard("!$event.metaKey"),
10701
- left: genGuard("'button' in $event && $event.button !== 0"),
10702
- middle: genGuard("'button' in $event && $event.button !== 1"),
10703
- right: genGuard("'button' in $event && $event.button !== 2")
10704
- };
10705
-
10706
- function genHandlers(events, isNative) {
10707
- var prefix = isNative ? 'nativeOn:' : 'on:';
10708
- var staticHandlers = "";
10709
- var dynamicHandlers = "";
10710
-
10711
- for (var name in events) {
10712
- var handlerCode = genHandler(events[name]);
10713
-
10714
- if (events[name] && events[name].dynamic) {
10715
- dynamicHandlers += name + "," + handlerCode + ",";
10716
- } else {
10717
- staticHandlers += "\"" + name + "\":" + handlerCode + ",";
10718
- }
10719
- }
10720
-
10721
- staticHandlers = "{" + staticHandlers.slice(0, -1) + "}";
10722
-
10723
- if (dynamicHandlers) {
10724
- return prefix + "_d(" + staticHandlers + ",[" + dynamicHandlers.slice(0, -1) + "])";
10725
- } else {
10726
- return prefix + staticHandlers;
10727
- }
10728
- }
10729
-
10730
- function genHandler(handler) {
10731
- if (!handler) {
10732
- return 'function(){}';
10733
- }
10734
-
10735
- if (Array.isArray(handler)) {
10736
- return "[" + handler.map(function (handler) {
10737
- return genHandler(handler);
10738
- }).join(',') + "]";
10739
- }
10740
-
10741
- var isMethodPath = simplePathRE.test(handler.value);
10742
- var isFunctionExpression = fnExpRE.test(handler.value);
10743
- var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));
10744
-
10745
- if (!handler.modifiers) {
10746
- if (isMethodPath || isFunctionExpression) {
10747
- return handler.value;
10748
- }
10749
-
10750
- return "function($event){" + (isFunctionInvocation ? "return " + handler.value : handler.value) + "}"; // inline statement
10751
- } else {
10752
- var code = '';
10753
- var genModifierCode = '';
10754
- var keys = [];
10755
-
10756
- for (var key in handler.modifiers) {
10757
- if (modifierCode[key]) {
10758
- genModifierCode += modifierCode[key]; // left/right
10759
-
10760
- if (keyCodes[key]) {
10761
- keys.push(key);
10762
- }
10763
- } else if (key === 'exact') {
10764
- var modifiers = handler.modifiers;
10765
- genModifierCode += genGuard(['ctrl', 'shift', 'alt', 'meta'].filter(function (keyModifier) {
10766
- return !modifiers[keyModifier];
10767
- }).map(function (keyModifier) {
10768
- return "$event." + keyModifier + "Key";
10769
- }).join('||'));
10770
- } else {
10771
- keys.push(key);
10772
- }
10773
- }
10774
-
10775
- if (keys.length) {
10776
- code += genKeyFilter(keys);
10777
- } // Make sure modifiers like prevent and stop get executed after key filtering
10778
-
10779
-
10780
- if (genModifierCode) {
10781
- code += genModifierCode;
10782
- }
10783
-
10784
- var handlerCode = isMethodPath ? "return " + handler.value + "($event)" : isFunctionExpression ? "return (" + handler.value + ")($event)" : isFunctionInvocation ? "return " + handler.value : handler.value;
10785
- return "function($event){" + code + handlerCode + "}";
10786
- }
10787
- }
10788
-
10789
- function genKeyFilter(keys) {
10790
- return (// make sure the key filters only apply to KeyboardEvents
10791
- // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake
10792
- // key events that do not have keyCode property...
10793
- "if(!$event.type.indexOf('key')&&" + keys.map(genFilterCode).join('&&') + ")return null;"
10794
- );
10795
- }
10796
-
10797
- function genFilterCode(key) {
10798
- var keyVal = parseInt(key, 10);
10799
-
10800
- if (keyVal) {
10801
- return "$event.keyCode!==" + keyVal;
10802
- }
10803
-
10804
- var keyCode = keyCodes[key];
10805
- var keyName = keyNames[key];
10806
- return "_k($event.keyCode," + JSON.stringify(key) + "," + JSON.stringify(keyCode) + "," + "$event.key," + "" + JSON.stringify(keyName) + ")";
10807
- }
10808
- /* */
10809
-
10810
-
10811
- function on(el, dir) {
10812
- if (dir.modifiers) {
10813
- warn("v-on without argument does not support modifiers.");
10814
- }
10815
-
10816
- el.wrapListeners = function (code) {
10817
- return "_g(" + code + "," + dir.value + ")";
10818
- };
10819
- }
10820
- /* */
10821
-
10822
-
10823
- function bind$1(el, dir) {
10824
- el.wrapData = function (code) {
10825
- return "_b(" + code + ",'" + el.tag + "'," + dir.value + "," + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + ")";
10826
- };
10827
- }
10828
- /* */
10829
-
10830
-
10831
- var baseDirectives = {
10832
- on: on,
10833
- bind: bind$1,
10834
- cloak: noop
10835
- };
10836
- /* */
10837
-
10838
- var CodegenState = function CodegenState(options) {
10839
- this.options = options;
10840
- this.warn = options.warn || baseWarn;
10841
- this.transforms = pluckModuleFunction(options.modules, 'transformCode');
10842
- this.dataGenFns = pluckModuleFunction(options.modules, 'genData');
10843
- this.directives = extend(extend({}, baseDirectives), options.directives);
10844
- var isReservedTag = options.isReservedTag || no;
10845
-
10846
- this.maybeComponent = function (el) {
10847
- return !!el.component || !isReservedTag(el.tag);
10848
- };
10849
-
10850
- this.onceId = 0;
10851
- this.staticRenderFns = [];
10852
- this.pre = false;
10853
- };
10854
-
10855
- function generate(ast, options) {
10856
- var state = new CodegenState(options);
10857
- var code = ast ? genElement(ast, state) : '_c("div")';
10858
- return {
10859
- render: "with(this){return " + code + "}",
10860
- staticRenderFns: state.staticRenderFns
10861
- };
10862
- }
10863
-
10864
- function genElement(el, state) {
10865
- if (el.parent) {
10866
- el.pre = el.pre || el.parent.pre;
10867
- }
10868
-
10869
- if (el.staticRoot && !el.staticProcessed) {
10870
- return genStatic(el, state);
10871
- } else if (el.once && !el.onceProcessed) {
10872
- return genOnce(el, state);
10873
- } else if (el["for"] && !el.forProcessed) {
10874
- return genFor(el, state);
10875
- } else if (el["if"] && !el.ifProcessed) {
10876
- return genIf(el, state);
10877
- } else if (el.tag === 'template' && !el.slotTarget && !state.pre) {
10878
- return genChildren(el, state) || 'void 0';
10879
- } else if (el.tag === 'slot') {
10880
- return genSlot(el, state);
10881
- } else {
10882
- // component or element
10883
- var code;
10884
-
10885
- if (el.component) {
10886
- code = genComponent(el.component, el, state);
10887
- } else {
10888
- var data;
10889
-
10890
- if (!el.plain || el.pre && state.maybeComponent(el)) {
10891
- data = genData$2(el, state);
10892
- }
10893
-
10894
- var children = el.inlineTemplate ? null : genChildren(el, state, true);
10895
- code = "_c('" + el.tag + "'" + (data ? "," + data : '') + (children ? "," + children : '') + ")";
10896
- } // module transforms
10897
-
10898
-
10899
- for (var i = 0; i < state.transforms.length; i++) {
10900
- code = state.transforms[i](el, code);
10901
- }
10902
-
10903
- return code;
10904
- }
10905
- } // hoist static sub-trees out
10906
-
10907
-
10908
- function genStatic(el, state) {
10909
- el.staticProcessed = true; // Some elements (templates) need to behave differently inside of a v-pre
10910
- // node. All pre nodes are static roots, so we can use this as a location to
10911
- // wrap a state change and reset it upon exiting the pre node.
10912
-
10913
- var originalPreState = state.pre;
10914
-
10915
- if (el.pre) {
10916
- state.pre = el.pre;
10917
- }
10918
-
10919
- state.staticRenderFns.push("with(this){return " + genElement(el, state) + "}");
10920
- state.pre = originalPreState;
10921
- return "_m(" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + ")";
10922
- } // v-once
10923
-
10924
-
10925
- function genOnce(el, state) {
10926
- el.onceProcessed = true;
10927
-
10928
- if (el["if"] && !el.ifProcessed) {
10929
- return genIf(el, state);
10930
- } else if (el.staticInFor) {
10931
- var key = '';
10932
- var parent = el.parent;
10933
-
10934
- while (parent) {
10935
- if (parent["for"]) {
10936
- key = parent.key;
10937
- break;
10938
- }
10939
-
10940
- parent = parent.parent;
10941
- }
10942
-
10943
- if (!key) {
10944
- state.warn("v-once can only be used inside v-for that is keyed. ", el.rawAttrsMap['v-once']);
10945
- return genElement(el, state);
10946
- }
10947
-
10948
- return "_o(" + genElement(el, state) + "," + state.onceId++ + "," + key + ")";
10949
- } else {
10950
- return genStatic(el, state);
10951
- }
10952
- }
10953
-
10954
- function genIf(el, state, altGen, altEmpty) {
10955
- el.ifProcessed = true; // avoid recursion
10956
-
10957
- return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty);
10958
- }
10959
-
10960
- function genIfConditions(conditions, state, altGen, altEmpty) {
10961
- if (!conditions.length) {
10962
- return altEmpty || '_e()';
10963
- }
10964
-
10965
- var condition = conditions.shift();
10966
-
10967
- if (condition.exp) {
10968
- return "(" + condition.exp + ")?" + genTernaryExp(condition.block) + ":" + genIfConditions(conditions, state, altGen, altEmpty);
10969
- } else {
10970
- return "" + genTernaryExp(condition.block);
10971
- } // v-if with v-once should generate code like (a)?_m(0):_m(1)
10972
-
10973
-
10974
- function genTernaryExp(el) {
10975
- return altGen ? altGen(el, state) : el.once ? genOnce(el, state) : genElement(el, state);
10976
- }
10977
- }
10978
-
10979
- function genFor(el, state, altGen, altHelper) {
10980
- var exp = el["for"];
10981
- var alias = el.alias;
10982
- var iterator1 = el.iterator1 ? "," + el.iterator1 : '';
10983
- var iterator2 = el.iterator2 ? "," + el.iterator2 : '';
10984
-
10985
- if (state.maybeComponent(el) && el.tag !== 'slot' && el.tag !== 'template' && !el.key) {
10986
- state.warn("<" + el.tag + " v-for=\"" + alias + " in " + exp + "\">: component lists rendered with " + "v-for should have explicit keys. " + "See https://vuejs.org/guide/list.html#key for more info.", el.rawAttrsMap['v-for'], true
10987
- /* tip */
10988
- );
10989
- }
10990
-
10991
- el.forProcessed = true; // avoid recursion
10992
-
10993
- return (altHelper || '_l') + "((" + exp + ")," + "function(" + alias + iterator1 + iterator2 + "){" + "return " + (altGen || genElement)(el, state) + '})';
10994
- }
10995
-
10996
- function genData$2(el, state) {
10997
- var data = '{'; // directives first.
10998
- // directives may mutate the el's other properties before they are generated.
10999
-
11000
- var dirs = genDirectives(el, state);
11001
-
11002
- if (dirs) {
11003
- data += dirs + ',';
11004
- } // key
11005
-
11006
-
11007
- if (el.key) {
11008
- data += "key:" + el.key + ",";
11009
- } // ref
11010
-
11011
-
11012
- if (el.ref) {
11013
- data += "ref:" + el.ref + ",";
11014
- }
11015
-
11016
- if (el.refInFor) {
11017
- data += "refInFor:true,";
11018
- } // pre
11019
-
11020
-
11021
- if (el.pre) {
11022
- data += "pre:true,";
11023
- } // record original tag name for components using "is" attribute
11024
-
11025
-
11026
- if (el.component) {
11027
- data += "tag:\"" + el.tag + "\",";
11028
- } // module data generation functions
11029
-
11030
-
11031
- for (var i = 0; i < state.dataGenFns.length; i++) {
11032
- data += state.dataGenFns[i](el);
11033
- } // attributes
11034
-
11035
-
11036
- if (el.attrs) {
11037
- data += "attrs:" + genProps(el.attrs) + ",";
11038
- } // DOM props
11039
-
11040
-
11041
- if (el.props) {
11042
- data += "domProps:" + genProps(el.props) + ",";
11043
- } // event handlers
11044
-
11045
-
11046
- if (el.events) {
11047
- data += genHandlers(el.events, false) + ",";
11048
- }
11049
-
11050
- if (el.nativeEvents) {
11051
- data += genHandlers(el.nativeEvents, true) + ",";
11052
- } // slot target
11053
- // only for non-scoped slots
11054
-
11055
-
11056
- if (el.slotTarget && !el.slotScope) {
11057
- data += "slot:" + el.slotTarget + ",";
11058
- } // scoped slots
11059
-
11060
-
11061
- if (el.scopedSlots) {
11062
- data += genScopedSlots(el, el.scopedSlots, state) + ",";
11063
- } // component v-model
11064
-
11065
-
11066
- if (el.model) {
11067
- data += "model:{value:" + el.model.value + ",callback:" + el.model.callback + ",expression:" + el.model.expression + "},";
11068
- } // inline-template
11069
-
11070
-
11071
- if (el.inlineTemplate) {
11072
- var inlineTemplate = genInlineTemplate(el, state);
11073
-
11074
- if (inlineTemplate) {
11075
- data += inlineTemplate + ",";
11076
- }
11077
- }
11078
-
11079
- data = data.replace(/,$/, '') + '}'; // v-bind dynamic argument wrap
11080
- // v-bind with dynamic arguments must be applied using the same v-bind object
11081
- // merge helper so that class/style/mustUseProp attrs are handled correctly.
11082
-
11083
- if (el.dynamicAttrs) {
11084
- data = "_b(" + data + ",\"" + el.tag + "\"," + genProps(el.dynamicAttrs) + ")";
11085
- } // v-bind data wrap
11086
-
11087
-
11088
- if (el.wrapData) {
11089
- data = el.wrapData(data);
11090
- } // v-on data wrap
11091
-
11092
-
11093
- if (el.wrapListeners) {
11094
- data = el.wrapListeners(data);
11095
- }
11096
-
11097
- return data;
11098
- }
11099
-
11100
- function genDirectives(el, state) {
11101
- var dirs = el.directives;
11102
-
11103
- if (!dirs) {
11104
- return;
11105
- }
11106
-
11107
- var res = 'directives:[';
11108
- var hasRuntime = false;
11109
- var i, l, dir, needRuntime;
11110
-
11111
- for (i = 0, l = dirs.length; i < l; i++) {
11112
- dir = dirs[i];
11113
- needRuntime = true;
11114
- var gen = state.directives[dir.name];
11115
-
11116
- if (gen) {
11117
- // compile-time directive that manipulates AST.
11118
- // returns true if it also needs a runtime counterpart.
11119
- needRuntime = !!gen(el, dir, state.warn);
11120
- }
11121
-
11122
- if (needRuntime) {
11123
- hasRuntime = true;
11124
- res += "{name:\"" + dir.name + "\",rawName:\"" + dir.rawName + "\"" + (dir.value ? ",value:(" + dir.value + "),expression:" + JSON.stringify(dir.value) : '') + (dir.arg ? ",arg:" + (dir.isDynamicArg ? dir.arg : "\"" + dir.arg + "\"") : '') + (dir.modifiers ? ",modifiers:" + JSON.stringify(dir.modifiers) : '') + "},";
11125
- }
11126
- }
11127
-
11128
- if (hasRuntime) {
11129
- return res.slice(0, -1) + ']';
11130
- }
11131
- }
11132
-
11133
- function genInlineTemplate(el, state) {
11134
- var ast = el.children[0];
11135
-
11136
- if (el.children.length !== 1 || ast.type !== 1) {
11137
- state.warn('Inline-template components must have exactly one child element.', {
11138
- start: el.start
11139
- });
11140
- }
11141
-
11142
- if (ast && ast.type === 1) {
11143
- var inlineRenderFns = generate(ast, state.options);
11144
- return "inlineTemplate:{render:function(){" + inlineRenderFns.render + "},staticRenderFns:[" + inlineRenderFns.staticRenderFns.map(function (code) {
11145
- return "function(){" + code + "}";
11146
- }).join(',') + "]}";
11147
- }
11148
- }
11149
-
11150
- function genScopedSlots(el, slots, state) {
11151
- // by default scoped slots are considered "stable", this allows child
11152
- // components with only scoped slots to skip forced updates from parent.
11153
- // but in some cases we have to bail-out of this optimization
11154
- // for example if the slot contains dynamic names, has v-if or v-for on them...
11155
- var needsForceUpdate = el["for"] || Object.keys(slots).some(function (key) {
11156
- var slot = slots[key];
11157
- return slot.slotTargetDynamic || slot["if"] || slot["for"] || containsSlotChild(slot) // is passing down slot from parent which may be dynamic
11158
- ;
11159
- }); // #9534: if a component with scoped slots is inside a conditional branch,
11160
- // it's possible for the same component to be reused but with different
11161
- // compiled slot content. To avoid that, we generate a unique key based on
11162
- // the generated code of all the slot contents.
11163
-
11164
- var needsKey = !!el["if"]; // OR when it is inside another scoped slot or v-for (the reactivity may be
11165
- // disconnected due to the intermediate scope variable)
11166
- // #9438, #9506
11167
- // TODO: this can be further optimized by properly analyzing in-scope bindings
11168
- // and skip force updating ones that do not actually use scope variables.
11169
-
11170
- if (!needsForceUpdate) {
11171
- var parent = el.parent;
11172
-
11173
- while (parent) {
11174
- if (parent.slotScope && parent.slotScope !== emptySlotScopeToken || parent["for"]) {
11175
- needsForceUpdate = true;
11176
- break;
11177
- }
11178
-
11179
- if (parent["if"]) {
11180
- needsKey = true;
11181
- }
11182
-
11183
- parent = parent.parent;
11184
- }
11185
- }
11186
-
11187
- var generatedSlots = Object.keys(slots).map(function (key) {
11188
- return genScopedSlot(slots[key], state);
11189
- }).join(',');
11190
- return "scopedSlots:_u([" + generatedSlots + "]" + (needsForceUpdate ? ",null,true" : "") + (!needsForceUpdate && needsKey ? ",null,false," + hash(generatedSlots) : "") + ")";
11191
- }
11192
-
11193
- function hash(str) {
11194
- var hash = 5381;
11195
- var i = str.length;
11196
-
11197
- while (i) {
11198
- hash = hash * 33 ^ str.charCodeAt(--i);
11199
- }
11200
-
11201
- return hash >>> 0;
11202
- }
11203
-
11204
- function containsSlotChild(el) {
11205
- if (el.type === 1) {
11206
- if (el.tag === 'slot') {
11207
- return true;
11208
- }
11209
-
11210
- return el.children.some(containsSlotChild);
11211
- }
11212
-
11213
- return false;
11214
- }
11215
-
11216
- function genScopedSlot(el, state) {
11217
- var isLegacySyntax = el.attrsMap['slot-scope'];
11218
-
11219
- if (el["if"] && !el.ifProcessed && !isLegacySyntax) {
11220
- return genIf(el, state, genScopedSlot, "null");
11221
- }
11222
-
11223
- if (el["for"] && !el.forProcessed) {
11224
- return genFor(el, state, genScopedSlot);
11225
- }
11226
-
11227
- var slotScope = el.slotScope === emptySlotScopeToken ? "" : String(el.slotScope);
11228
- var fn = "function(" + slotScope + "){" + "return " + (el.tag === 'template' ? el["if"] && isLegacySyntax ? "(" + el["if"] + ")?" + (genChildren(el, state) || 'undefined') + ":undefined" : genChildren(el, state) || 'undefined' : genElement(el, state)) + "}"; // reverse proxy v-slot without scope on this.$slots
11229
-
11230
- var reverseProxy = slotScope ? "" : ",proxy:true";
11231
- return "{key:" + (el.slotTarget || "\"default\"") + ",fn:" + fn + reverseProxy + "}";
11232
- }
11233
-
11234
- function genChildren(el, state, checkSkip, altGenElement, altGenNode) {
11235
- var children = el.children;
11236
-
11237
- if (children.length) {
11238
- var el$1 = children[0]; // optimize single v-for
11239
-
11240
- if (children.length === 1 && el$1["for"] && el$1.tag !== 'template' && el$1.tag !== 'slot') {
11241
- var normalizationType = checkSkip ? state.maybeComponent(el$1) ? ",1" : ",0" : "";
11242
- return "" + (altGenElement || genElement)(el$1, state) + normalizationType;
11243
- }
11244
-
11245
- var normalizationType$1 = checkSkip ? getNormalizationType(children, state.maybeComponent) : 0;
11246
- var gen = altGenNode || genNode;
11247
- return "[" + children.map(function (c) {
11248
- return gen(c, state);
11249
- }).join(',') + "]" + (normalizationType$1 ? "," + normalizationType$1 : '');
11250
- }
11251
- } // determine the normalization needed for the children array.
11252
- // 0: no normalization needed
11253
- // 1: simple normalization needed (possible 1-level deep nested array)
11254
- // 2: full normalization needed
11255
-
11256
-
11257
- function getNormalizationType(children, maybeComponent) {
11258
- var res = 0;
11259
-
11260
- for (var i = 0; i < children.length; i++) {
11261
- var el = children[i];
11262
-
11263
- if (el.type !== 1) {
11264
- continue;
11265
- }
11266
-
11267
- if (needsNormalization(el) || el.ifConditions && el.ifConditions.some(function (c) {
11268
- return needsNormalization(c.block);
11269
- })) {
11270
- res = 2;
11271
- break;
11272
- }
11273
-
11274
- if (maybeComponent(el) || el.ifConditions && el.ifConditions.some(function (c) {
11275
- return maybeComponent(c.block);
11276
- })) {
11277
- res = 1;
11278
- }
11279
- }
11280
-
11281
- return res;
11282
- }
11283
-
11284
- function needsNormalization(el) {
11285
- return el["for"] !== undefined || el.tag === 'template' || el.tag === 'slot';
11286
- }
11287
-
11288
- function genNode(node, state) {
11289
- if (node.type === 1) {
11290
- return genElement(node, state);
11291
- } else if (node.type === 3 && node.isComment) {
11292
- return genComment(node);
11293
- } else {
11294
- return genText(node);
11295
- }
11296
- }
11297
-
11298
- function genText(text) {
11299
- return "_v(" + (text.type === 2 ? text.expression // no need for () because already wrapped in _s()
11300
- : transformSpecialNewlines(JSON.stringify(text.text))) + ")";
11301
- }
11302
-
11303
- function genComment(comment) {
11304
- return "_e(" + JSON.stringify(comment.text) + ")";
11305
- }
11306
-
11307
- function genSlot(el, state) {
11308
- var slotName = el.slotName || '"default"';
11309
- var children = genChildren(el, state);
11310
- var res = "_t(" + slotName + (children ? "," + children : '');
11311
- var attrs = el.attrs || el.dynamicAttrs ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) {
11312
- return {
11313
- // slot props are camelized
11314
- name: camelize(attr.name),
11315
- value: attr.value,
11316
- dynamic: attr.dynamic
11317
- };
11318
- })) : null;
11319
- var bind$$1 = el.attrsMap['v-bind'];
11320
-
11321
- if ((attrs || bind$$1) && !children) {
11322
- res += ",null";
11323
- }
11324
-
11325
- if (attrs) {
11326
- res += "," + attrs;
11327
- }
11328
-
11329
- if (bind$$1) {
11330
- res += (attrs ? '' : ',null') + "," + bind$$1;
11331
- }
11332
-
11333
- return res + ')';
11334
- } // componentName is el.component, take it as argument to shun flow's pessimistic refinement
11335
-
11336
-
11337
- function genComponent(componentName, el, state) {
11338
- var children = el.inlineTemplate ? null : genChildren(el, state, true);
11339
- return "_c(" + componentName + "," + genData$2(el, state) + (children ? "," + children : '') + ")";
11340
- }
11341
-
11342
- function genProps(props) {
11343
- var staticProps = "";
11344
- var dynamicProps = "";
11345
-
11346
- for (var i = 0; i < props.length; i++) {
11347
- var prop = props[i];
11348
- var value = transformSpecialNewlines(prop.value);
11349
-
11350
- if (prop.dynamic) {
11351
- dynamicProps += prop.name + "," + value + ",";
11352
- } else {
11353
- staticProps += "\"" + prop.name + "\":" + value + ",";
11354
- }
11355
- }
11356
-
11357
- staticProps = "{" + staticProps.slice(0, -1) + "}";
11358
-
11359
- if (dynamicProps) {
11360
- return "_d(" + staticProps + ",[" + dynamicProps.slice(0, -1) + "])";
11361
- } else {
11362
- return staticProps;
11363
- }
11364
- } // #3895, #4268
11365
-
11366
-
11367
- function transformSpecialNewlines(text) {
11368
- return text.replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
11369
- }
11370
- /* */
11371
- // these keywords should not appear inside expressions, but operators like
11372
- // typeof, instanceof and in are allowed
11373
-
11374
-
11375
- var prohibitedKeywordRE = new RegExp('\\b' + ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' + 'super,throw,while,yield,delete,export,import,return,switch,default,' + 'extends,finally,continue,debugger,function,arguments').split(',').join('\\b|\\b') + '\\b'); // these unary operators should not be used as property/method names
11376
-
11377
- var unaryOperatorsRE = new RegExp('\\b' + 'delete,typeof,void'.split(',').join('\\s*\\([^\\)]*\\)|\\b') + '\\s*\\([^\\)]*\\)'); // strip strings in expressions
11378
-
11379
- var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g; // detect problematic expressions in a template
11380
-
11381
- function detectErrors(ast, warn) {
11382
- if (ast) {
11383
- checkNode(ast, warn);
11384
- }
11385
- }
11386
-
11387
- function checkNode(node, warn) {
11388
- if (node.type === 1) {
11389
- for (var name in node.attrsMap) {
11390
- if (dirRE.test(name)) {
11391
- var value = node.attrsMap[name];
11392
-
11393
- if (value) {
11394
- var range = node.rawAttrsMap[name];
11395
-
11396
- if (name === 'v-for') {
11397
- checkFor(node, "v-for=\"" + value + "\"", warn, range);
11398
- } else if (name === 'v-slot' || name[0] === '#') {
11399
- checkFunctionParameterExpression(value, name + "=\"" + value + "\"", warn, range);
11400
- } else if (onRE.test(name)) {
11401
- checkEvent(value, name + "=\"" + value + "\"", warn, range);
11402
- } else {
11403
- checkExpression(value, name + "=\"" + value + "\"", warn, range);
11404
- }
11405
- }
11406
- }
11407
- }
11408
-
11409
- if (node.children) {
11410
- for (var i = 0; i < node.children.length; i++) {
11411
- checkNode(node.children[i], warn);
11412
- }
11413
- }
11414
- } else if (node.type === 2) {
11415
- checkExpression(node.expression, node.text, warn, node);
11416
- }
11417
- }
11418
-
11419
- function checkEvent(exp, text, warn, range) {
11420
- var stripped = exp.replace(stripStringRE, '');
11421
- var keywordMatch = stripped.match(unaryOperatorsRE);
11422
-
11423
- if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') {
11424
- warn("avoid using JavaScript unary operator as property name: " + "\"" + keywordMatch[0] + "\" in expression " + text.trim(), range);
11425
- }
11426
-
11427
- checkExpression(exp, text, warn, range);
11428
- }
11429
-
11430
- function checkFor(node, text, warn, range) {
11431
- checkExpression(node["for"] || '', text, warn, range);
11432
- checkIdentifier(node.alias, 'v-for alias', text, warn, range);
11433
- checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);
11434
- checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);
11435
- }
11436
-
11437
- function checkIdentifier(ident, type, text, warn, range) {
11438
- if (typeof ident === 'string') {
11439
- try {
11440
- new Function("var " + ident + "=_");
11441
- } catch (e) {
11442
- warn("invalid " + type + " \"" + ident + "\" in expression: " + text.trim(), range);
11443
- }
11444
- }
11445
- }
11446
-
11447
- function checkExpression(exp, text, warn, range) {
11448
- try {
11449
- new Function("return " + exp);
11450
- } catch (e) {
11451
- var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);
11452
-
11453
- if (keywordMatch) {
11454
- warn("avoid using JavaScript keyword as property name: " + "\"" + keywordMatch[0] + "\"\n Raw expression: " + text.trim(), range);
11455
- } else {
11456
- warn("invalid expression: " + e.message + " in\n\n" + " " + exp + "\n\n" + " Raw expression: " + text.trim() + "\n", range);
11457
- }
11458
- }
11459
- }
11460
-
11461
- function checkFunctionParameterExpression(exp, text, warn, range) {
11462
- try {
11463
- new Function(exp, '');
11464
- } catch (e) {
11465
- warn("invalid function parameter expression: " + e.message + " in\n\n" + " " + exp + "\n\n" + " Raw expression: " + text.trim() + "\n", range);
11466
- }
11467
- }
11468
- /* */
11469
-
11470
-
11471
- var range = 2;
11472
-
11473
- function generateCodeFrame(source, start, end) {
11474
- if (start === void 0) start = 0;
11475
- if (end === void 0) end = source.length;
11476
- var lines = source.split(/\r?\n/);
11477
- var count = 0;
11478
- var res = [];
11479
-
11480
- for (var i = 0; i < lines.length; i++) {
11481
- count += lines[i].length + 1;
11482
-
11483
- if (count >= start) {
11484
- for (var j = i - range; j <= i + range || end > count; j++) {
11485
- if (j < 0 || j >= lines.length) {
11486
- continue;
11487
- }
11488
-
11489
- res.push("" + (j + 1) + repeat$1(" ", 3 - String(j + 1).length) + "| " + lines[j]);
11490
- var lineLength = lines[j].length;
11491
-
11492
- if (j === i) {
11493
- // push underline
11494
- var pad = start - (count - lineLength) + 1;
11495
- var length = end > count ? lineLength - pad : end - start;
11496
- res.push(" | " + repeat$1(" ", pad) + repeat$1("^", length));
11497
- } else if (j > i) {
11498
- if (end > count) {
11499
- var length$1 = Math.min(end - count, lineLength);
11500
- res.push(" | " + repeat$1("^", length$1));
11501
- }
11502
-
11503
- count += lineLength + 1;
11504
- }
11505
- }
11506
-
11507
- break;
11508
- }
11509
- }
11510
-
11511
- return res.join('\n');
11512
- }
11513
-
11514
- function repeat$1(str, n) {
11515
- var result = '';
11516
-
11517
- if (n > 0) {
11518
- while (true) {
11519
- // eslint-disable-line
11520
- if (n & 1) {
11521
- result += str;
11522
- }
11523
-
11524
- n >>>= 1;
11525
-
11526
- if (n <= 0) {
11527
- break;
11528
- }
11529
-
11530
- str += str;
11531
- }
11532
- }
11533
-
11534
- return result;
11535
- }
11536
- /* */
11537
-
11538
-
11539
- function createFunction(code, errors) {
11540
- try {
11541
- return new Function(code);
11542
- } catch (err) {
11543
- errors.push({
11544
- err: err,
11545
- code: code
11546
- });
11547
- return noop;
11548
- }
11549
- }
11550
-
11551
- function createCompileToFunctionFn(compile) {
11552
- var cache = Object.create(null);
11553
- return function compileToFunctions(template, options, vm) {
11554
- options = extend({}, options);
11555
- var warn$$1 = options.warn || warn;
11556
- delete options.warn;
11557
- /* istanbul ignore if */
11558
-
11559
- {
11560
- // detect possible CSP restriction
11561
- try {
11562
- new Function('return 1');
11563
- } catch (e) {
11564
- if (e.toString().match(/unsafe-eval|CSP/)) {
11565
- warn$$1('It seems you are using the standalone build of Vue.js in an ' + 'environment with Content Security Policy that prohibits unsafe-eval. ' + 'The template compiler cannot work in this environment. Consider ' + 'relaxing the policy to allow unsafe-eval or pre-compiling your ' + 'templates into render functions.');
11566
- }
11567
- }
11568
- } // check cache
11569
-
11570
- var key = options.delimiters ? String(options.delimiters) + template : template;
11571
-
11572
- if (cache[key]) {
11573
- return cache[key];
11574
- } // compile
11575
-
11576
-
11577
- var compiled = compile(template, options); // check compilation errors/tips
11578
-
11579
- {
11580
- if (compiled.errors && compiled.errors.length) {
11581
- if (options.outputSourceRange) {
11582
- compiled.errors.forEach(function (e) {
11583
- warn$$1("Error compiling template:\n\n" + e.msg + "\n\n" + generateCodeFrame(template, e.start, e.end), vm);
11584
- });
11585
- } else {
11586
- warn$$1("Error compiling template:\n\n" + template + "\n\n" + compiled.errors.map(function (e) {
11587
- return "- " + e;
11588
- }).join('\n') + '\n', vm);
11589
- }
11590
- }
11591
-
11592
- if (compiled.tips && compiled.tips.length) {
11593
- if (options.outputSourceRange) {
11594
- compiled.tips.forEach(function (e) {
11595
- return tip(e.msg, vm);
11596
- });
11597
- } else {
11598
- compiled.tips.forEach(function (msg) {
11599
- return tip(msg, vm);
11600
- });
11601
- }
11602
- }
11603
- } // turn code into functions
11604
-
11605
- var res = {};
11606
- var fnGenErrors = [];
11607
- res.render = createFunction(compiled.render, fnGenErrors);
11608
- res.staticRenderFns = compiled.staticRenderFns.map(function (code) {
11609
- return createFunction(code, fnGenErrors);
11610
- }); // check function generation errors.
11611
- // this should only happen if there is a bug in the compiler itself.
11612
- // mostly for codegen development use
11613
-
11614
- /* istanbul ignore if */
11615
-
11616
- {
11617
- if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {
11618
- warn$$1("Failed to generate render function:\n\n" + fnGenErrors.map(function (ref) {
11619
- var err = ref.err;
11620
- var code = ref.code;
11621
- return err.toString() + " in\n\n" + code + "\n";
11622
- }).join('\n'), vm);
11623
- }
11624
- }
11625
- return cache[key] = res;
11626
- };
11627
- }
11628
- /* */
11629
-
11630
-
11631
- function createCompilerCreator(baseCompile) {
11632
- return function createCompiler(baseOptions) {
11633
- function compile(template, options) {
11634
- var finalOptions = Object.create(baseOptions);
11635
- var errors = [];
11636
- var tips = [];
11637
-
11638
- var warn = function warn(msg, range, tip) {
11639
- (tip ? tips : errors).push(msg);
11640
- };
11641
-
11642
- if (options) {
11643
- if (options.outputSourceRange) {
11644
- // $flow-disable-line
11645
- var leadingSpaceLength = template.match(/^\s*/)[0].length;
11646
-
11647
- warn = function warn(msg, range, tip) {
11648
- var data = {
11649
- msg: msg
11650
- };
11651
-
11652
- if (range) {
11653
- if (range.start != null) {
11654
- data.start = range.start + leadingSpaceLength;
11655
- }
11656
-
11657
- if (range.end != null) {
11658
- data.end = range.end + leadingSpaceLength;
11659
- }
11660
- }
11661
-
11662
- (tip ? tips : errors).push(data);
11663
- };
11664
- } // merge custom modules
11665
-
11666
-
11667
- if (options.modules) {
11668
- finalOptions.modules = (baseOptions.modules || []).concat(options.modules);
11669
- } // merge custom directives
11670
-
11671
-
11672
- if (options.directives) {
11673
- finalOptions.directives = extend(Object.create(baseOptions.directives || null), options.directives);
11674
- } // copy other options
11675
-
11676
-
11677
- for (var key in options) {
11678
- if (key !== 'modules' && key !== 'directives') {
11679
- finalOptions[key] = options[key];
11680
- }
11681
- }
11682
- }
11683
-
11684
- finalOptions.warn = warn;
11685
- var compiled = baseCompile(template.trim(), finalOptions);
11686
- {
11687
- detectErrors(compiled.ast, warn);
11688
- }
11689
- compiled.errors = errors;
11690
- compiled.tips = tips;
11691
- return compiled;
11692
- }
11693
-
11694
- return {
11695
- compile: compile,
11696
- compileToFunctions: createCompileToFunctionFn(compile)
11697
- };
11698
- };
11699
- }
11700
- /* */
11701
- // `createCompilerCreator` allows creating compilers that use alternative
11702
- // parser/optimizer/codegen, e.g the SSR optimizing compiler.
11703
- // Here we just export a default compiler using the default parts.
11704
-
11705
-
11706
- var createCompiler = createCompilerCreator(function baseCompile(template, options) {
11707
- var ast = parse(template.trim(), options);
11708
-
11709
- if (options.optimize !== false) {
11710
- optimize(ast, options);
11711
- }
11712
-
11713
- var code = generate(ast, options);
11714
- return {
11715
- ast: ast,
11716
- render: code.render,
11717
- staticRenderFns: code.staticRenderFns
11718
- };
11719
- });
11720
- /* */
11721
-
11722
- var ref$1 = createCompiler(baseOptions);
11723
- var compile = ref$1.compile;
11724
- var compileToFunctions = ref$1.compileToFunctions;
11725
- /* */
11726
- // check whether current browser encodes a char inside attribute values
11727
-
11728
- var div;
11729
-
11730
- function getShouldDecode(href) {
11731
- div = div || document.createElement('div');
11732
- div.innerHTML = href ? "<a href=\"\n\"/>" : "<div a=\"\n\"/>";
11733
- return div.innerHTML.indexOf('&#10;') > 0;
11734
- } // #3663: IE encodes newlines inside attribute values while other browsers don't
11735
-
11736
-
11737
- var shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false; // #6828: chrome encodes content in a[href]
11738
-
11739
- var shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;
11740
- /* */
11741
-
11742
- var idToTemplate = cached(function (id) {
11743
- var el = query(id);
11744
- return el && el.innerHTML;
11745
- });
11746
- var mount = Vue.prototype.$mount;
11747
-
11748
- Vue.prototype.$mount = function (el, hydrating) {
11749
- el = el && query(el);
11750
- /* istanbul ignore if */
11751
-
11752
- if (el === document.body || el === document.documentElement) {
11753
- warn("Do not mount Vue to <html> or <body> - mount to normal elements instead.");
11754
- return this;
11755
- }
11756
-
11757
- var options = this.$options; // resolve template/el and convert to render function
11758
-
11759
- if (!options.render) {
11760
- var template = options.template;
11761
-
11762
- if (template) {
11763
- if (typeof template === 'string') {
11764
- if (template.charAt(0) === '#') {
11765
- template = idToTemplate(template);
11766
- /* istanbul ignore if */
11767
-
11768
- if (!template) {
11769
- warn("Template element not found or is empty: " + options.template, this);
11770
- }
11771
- }
11772
- } else if (template.nodeType) {
11773
- template = template.innerHTML;
11774
- } else {
11775
- {
11776
- warn('invalid template option:' + template, this);
11777
- }
11778
- return this;
11779
- }
11780
- } else if (el) {
11781
- template = getOuterHTML(el);
11782
- }
11783
-
11784
- if (template) {
11785
- /* istanbul ignore if */
11786
- if (config.performance && mark) {
11787
- mark('compile');
11788
- }
11789
-
11790
- var ref = compileToFunctions(template, {
11791
- outputSourceRange: "development" !== 'production',
11792
- shouldDecodeNewlines: shouldDecodeNewlines,
11793
- shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,
11794
- delimiters: options.delimiters,
11795
- comments: options.comments
11796
- }, this);
11797
- var render = ref.render;
11798
- var staticRenderFns = ref.staticRenderFns;
11799
- options.render = render;
11800
- options.staticRenderFns = staticRenderFns;
11801
- /* istanbul ignore if */
11802
-
11803
- if (config.performance && mark) {
11804
- mark('compile end');
11805
- measure("vue " + this._name + " compile", 'compile', 'compile end');
11806
- }
11807
- }
11808
- }
11809
-
11810
- return mount.call(this, el, hydrating);
11811
- };
11812
- /**
11813
- * Get outerHTML of elements, taking care
11814
- * of SVG elements in IE as well.
11815
- */
11816
-
11817
-
11818
- function getOuterHTML(el) {
11819
- if (el.outerHTML) {
11820
- return el.outerHTML;
11821
- } else {
11822
- var container = document.createElement('div');
11823
- container.appendChild(el.cloneNode(true));
11824
- return container.innerHTML;
11825
- }
11826
- }
11827
-
11828
- Vue.compile = compileToFunctions;
11829
- return Vue;
11830
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/classes/class-wp-ulike-admin-assets.php CHANGED
@@ -20,15 +20,20 @@ if ( ! class_exists( 'wp_ulike_admin_assets' ) ) {
20
 
21
  private $hook;
22
 
23
- /**
24
- * __construct
25
- */
26
- function __construct( $hook ) {
 
 
 
 
 
27
  $this->hook = $hook;
28
  // general assets
29
  $this->load_styles();
30
  $this->load_scripts();
31
- }
32
 
33
 
34
  /**
20
 
21
  private $hook;
22
 
23
+ /**
24
+ * __construct
25
+ */
26
+ function __construct() {
27
+ // general assets
28
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
29
+ }
30
+
31
+ public function enqueue( $hook ){
32
  $this->hook = $hook;
33
  // general assets
34
  $this->load_styles();
35
  $this->load_scripts();
36
+ }
37
 
38
 
39
  /**
admin/index.php CHANGED
@@ -15,6 +15,9 @@ if ( ! defined( 'WPINC' ) ) {
15
  // Register admin panel
16
  new wp_ulike_admin_panel();
17
 
 
 
 
18
  // include about menu functions
19
  require_once( WP_ULIKE_ADMIN_DIR . '/admin-functions.php');
20
  // include logs menu functions
15
  // Register admin panel
16
  new wp_ulike_admin_panel();
17
 
18
+ // Include assets
19
+ new wp_ulike_admin_assets();
20
+
21
  // include about menu functions
22
  require_once( WP_ULIKE_ADMIN_DIR . '/admin-functions.php');
23
  // include logs menu functions
admin/settings/assets/css/style.css CHANGED
@@ -1492,8 +1492,8 @@
1492
  .ulf-field-media .ulf--preview .fa-times {
1493
  position: absolute;
1494
  z-index: 1;
1495
- right: 4px;
1496
- top: 4px;
1497
  font-size: 14px;
1498
  width: 22px;
1499
  height: 22px;
@@ -1502,7 +1502,8 @@
1502
  text-decoration: none;
1503
  color: #fff;
1504
  background-color: #dd3333;
1505
- opacity: 0.8;
 
1506
  transition: all .2s;
1507
  }
1508
  .ulf-field-media .ulf--preview .fa-times:hover {
@@ -2059,8 +2060,9 @@
2059
  */
2060
  .ulf-field-typography textarea,
2061
  .ulf-field-typography select {
2062
- min-width: 100%;
2063
  margin: 0;
 
 
2064
  }
2065
  .ulf-field-typography .ulf--title {
2066
  color: #777;
@@ -2076,6 +2078,7 @@
2076
  }
2077
  .ulf-field-typography .ulf--block {
2078
  flex: 1;
 
2079
  padding-right: 6px;
2080
  padding-bottom: 6px;
2081
  }
@@ -2389,17 +2392,22 @@
2389
  display: inline-block;
2390
  position: relative;
2391
  padding: 4px;
2392
- min-width: 44px;
2393
- min-height: 22px;
 
2394
  margin-bottom: 10px;
 
 
2395
  border: 1px solid #ccc;
2396
  background-color: #f9f9f9;
2397
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08);
2398
  }
2399
  .ulf-image-preview img {
2400
- max-height: 90px;
 
2401
  display: inline-block;
2402
  vertical-align: middle;
 
2403
  }
2404
 
2405
  .ulf-field-custom .ulf-field {
@@ -3725,7 +3733,7 @@
3725
  display: none !important;
3726
  }
3727
 
3728
- .ulf-content {
3729
  margin-left: 0;
3730
  }
3731
 
1492
  .ulf-field-media .ulf--preview .fa-times {
1493
  position: absolute;
1494
  z-index: 1;
1495
+ right: 2px;
1496
+ top: 2px;
1497
  font-size: 14px;
1498
  width: 22px;
1499
  height: 22px;
1502
  text-decoration: none;
1503
  color: #fff;
1504
  background-color: #dd3333;
1505
+ opacity: 0.75;
1506
+ border-radius: 2px;
1507
  transition: all .2s;
1508
  }
1509
  .ulf-field-media .ulf--preview .fa-times:hover {
2060
  */
2061
  .ulf-field-typography textarea,
2062
  .ulf-field-typography select {
 
2063
  margin: 0;
2064
+ min-width: 100%;
2065
+ max-width: 100%;
2066
  }
2067
  .ulf-field-typography .ulf--title {
2068
  color: #777;
2078
  }
2079
  .ulf-field-typography .ulf--block {
2080
  flex: 1;
2081
+ max-width: 100%;
2082
  padding-right: 6px;
2083
  padding-bottom: 6px;
2084
  }
2392
  display: inline-block;
2393
  position: relative;
2394
  padding: 4px;
2395
+ min-width: 100px;
2396
+ min-height: 100px;
2397
+ line-height: 100px;
2398
  margin-bottom: 10px;
2399
+ text-align: center;
2400
+ border-radius: 2px;
2401
  border: 1px solid #ccc;
2402
  background-color: #f9f9f9;
2403
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08);
2404
  }
2405
  .ulf-image-preview img {
2406
+ max-width: 100px;
2407
+ max-height: 100px;
2408
  display: inline-block;
2409
  vertical-align: middle;
2410
+ object-fit: contain;
2411
  }
2412
 
2413
  .ulf-field-custom .ulf-field {
3733
  display: none !important;
3734
  }
3735
 
3736
+ .ulf-nav-normal + .ulf-content {
3737
  margin-left: 0;
3738
  }
3739
 
admin/settings/assets/css/style.min.css CHANGED
@@ -1 +1 @@
1
- .ulf{position:relative}.ulf label{padding:0;margin:0;display:inline-block}.ulf-ab-icon{top:2px}#screen-meta-links+.ulf-options{margin-top:40px}.ulf-options{margin-top:20px;margin-right:20px}.ulf-header{position:relative}.ulf-header-inner{padding:25px;transition:box-shadow .3s ease}.ulf-header-inner h1{float:left;font-size:1.5em;line-height:26px;font-weight:400;margin:0}.ulf-header-inner h1 small{font-size:11px;font-weight:500}.ulf-sticky .ulf-header-inner{position:fixed;z-index:99;top:32px;box-shadow:0 5px 10px rgba(0,0,0,.1)}.ulf-buttons{float:right}.ulf-buttons .button{margin:0 2px;line-height:26px}.ulf-buttons .button:focus{outline:0!important;box-shadow:none!important}.ulf-buttons .ulf-save{min-width:72px}.ulf-header-left{float:left}.ulf-header-right{float:right}.ulf-nav{display:block;position:relative;z-index:10;float:left}.ulf-nav ul{clear:left;margin:0;list-style-type:none}.ulf-nav ul li{margin-bottom:0}.ulf-nav ul li a{font-size:13px;position:relative;display:block;padding:14px 12px;text-decoration:none;transition-property:color,background;transition-duration:.2s;transition-timing-function:ease}.ulf-nav ul li a:focus{outline:0;box-shadow:none}.ulf-nav ul li .ulf-arrow:after{content:"\f054";display:inline-block;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:9px;line-height:1;position:absolute;right:10px;top:50%;margin-top:-4px}.ulf-nav ul li.ulf-tab-expanded .ulf-arrow:after{transform:rotate(90deg)}.ulf-nav ul li.ulf-tab-expanded ul{display:block}.ulf-nav ul ul{display:none;position:relative}.ulf-nav ul ul li a{font-size:12px;padding:12px 14px 12px 24px}.ulf-nav .ulf-tab-icon{width:20px;margin-right:5px;font-size:13px;text-align:center}.ulf-nav .ulf-label-error{margin-left:4px;vertical-align:top}.ulf-nav-normal{width:225px}.ulf-nav-normal+.ulf-content{margin-left:225px}.ulf-nav-inline{width:100%}.ulf-nav-inline ul li{display:inline-block;vertical-align:top}.ulf-nav-background{position:absolute;top:0;left:0;bottom:0;z-index:9;width:225px}.ulf-wrapper{position:relative}.ulf-content{position:relative;background-color:#fff}.ulf-sections{float:left;width:100%}.ulf-section-title{display:none;padding:20px 30px;background-color:#f5f5f5;border-top:1px solid #eee;border-bottom:1px solid #eee}.ulf-section-title h3{margin:0;padding:0;font-size:13px;font-weight:700;text-transform:uppercase}.ulf-section-title .ulf-section-icon{margin-right:5px}.ulf-footer{padding:20px;font-size:11px}.ulf-copyright{float:left;margin-top:5px}.ulf-search-all .ulf-nav,.ulf-search-all .ulf-nav-background,.ulf-show-all .ulf-nav,.ulf-show-all .ulf-nav-background{display:none}.ulf-search-all .ulf-content,.ulf-show-all .ulf-content{margin-left:0}.ulf-search-all .ulf-section,.ulf-search-all .ulf-section-title,.ulf-show-all .ulf-section,.ulf-show-all .ulf-section-title{display:block!important}.ulf-search-all .ulf-section-title{display:none!important}.ulf-expand-all{float:left;padding:0 8px;margin-right:4px;z-index:1;font-size:13px;line-height:30px;cursor:pointer;user-select:none;border-radius:2px;transition:all .2s}.ulf-expand-all span{font-size:11px;vertical-align:middle}.ulf-search{float:left}.ulf-search input{margin:0 2px 0 0;border:none;font-size:12px;line-height:30px;min-height:30px;text-align:inherit;padding:0 10px;border-radius:2px;box-shadow:none}.ulf-search input:focus{box-shadow:none}.ulf-saving .ulf-buttons,.ulf-saving .ulf-content{cursor:default;pointer-events:none;opacity:.5}.ulf-metabox{margin:-6px -12px -12px -12px}.ulf-metabox .ulf-field{padding:20px}.ulf-metabox .ulf-section-title{padding:20px}.block-editor-page .ulf-metabox{margin:-6px -14px -14px -14px}.block-editor-editor-skeleton__content .ulf-metabox{border-left:1px solid #e2e4e7;border-right:1px solid #e2e4e7}.ulf-sections-reset{float:left;width:100%;text-align:right;border-top:1px solid #eee}.ulf-sections-reset .ulf-button-cancel,.ulf-sections-reset input{display:none}.ulf-sections-reset label{padding:10px}.ulf-sections-reset span{-webkit-user-select:none;user-select:none}.ulf-sections-reset input:checked~.ulf-button-reset{display:none}.ulf-sections-reset input:checked~.ulf-button-cancel{display:inline-block}#side-sortables .ulf-section-title{padding:12px}#side-sortables .ulf-field{padding:10px 15px}#side-sortables .ulf-field .ulf-title{float:none;width:100%;margin-bottom:6px}#side-sortables .ulf-field .ulf-fieldset{float:none;width:100%}#side-sortables .ulf-field-text input{width:100%}#side-sortables .ulf-notice{padding:10px 15px}.ulf-comment-metabox{margin:-6px -12px -12px -12px}.ulf-comment-metabox .ulf-field{padding:20px}.ulf-comment-metabox .ulf-section-title{padding:20px}.ulf-tooltip{position:absolute;z-index:5000001;font-size:12px;line-height:1.4;text-align:center;text-decoration:none;padding:6px 12px;max-width:200px;color:#fff;background-color:#000;background-color:rgba(0,0,0,.85);border-radius:4px}.ulf-theme-dark .ulf-header-inner{background-color:#050505}.ulf-theme-dark .ulf-header-inner h1{color:#fff}.ulf-theme-dark .ulf-header-inner h1 small{color:#555}.ulf-theme-dark .ulf-expand-all{color:#999;background-color:#222}.ulf-theme-dark .ulf-expand-all:hover{color:#fff;background-color:#333}.ulf-theme-dark .ulf-search input{color:#fff;background-color:#222}.ulf-theme-dark .ulf-search:focus{background-color:#444}.ulf-theme-dark .ulf-search::-webkit-input-placeholder{color:#666}.ulf-theme-dark .ulf-nav ul li a{color:#999;border-color:#2f2f2f;background-color:#222}.ulf-theme-dark .ulf-nav ul li a:hover{color:#fff}.ulf-theme-dark .ulf-nav ul li .ulf-active{color:#fff;background-color:#111}.ulf-theme-dark .ulf-nav ul ul li a{border-color:#2f2f2f;background-color:#191919}.ulf-theme-dark .ulf-nav ul ul li .ulf-active{background-color:#101010}.ulf-theme-dark .ulf-nav ul ul:before{background-color:rgba(34,34,34,.75)}.ulf-theme-dark .ulf-nav>ul>li:last-child>a{border:none}.ulf-theme-dark .ulf-nav-normal ul li a{border-bottom-width:1px;border-bottom-style:solid}.ulf-theme-dark .ulf-nav-normal ul li .ulf-active:after{content:" ";position:absolute;right:0;top:50%;height:0;width:0;pointer-events:none;border:solid transparent;border-right-color:#fff;border-width:4px;margin-top:-4px}.ulf-theme-dark .ulf-nav-inline{background-color:#222}.ulf-theme-dark .ulf-nav-inline ul li a{text-align:center;border-right-width:1px;border-right-style:solid}.ulf-theme-dark .ulf-nav-inline ul li .ulf-active:after{content:" ";position:absolute;left:50%;bottom:0;height:0;width:0;pointer-events:none;border:solid transparent;border-bottom-color:#fff;border-width:4px;margin-left:-4px}.ulf-theme-dark .ulf-nav-background{background-color:#222}.ulf-theme-dark .ulf-footer{color:#555;background-color:#050505}.ulf-theme-light .ulf-container{border:1px solid #ccd0d4;box-shadow:0 0 15 rgba(0,0,0,.04)}.ulf-theme-light .ulf-header-inner{border-bottom:1px solid #ccd0d4;background-color:#f5f5f5;background:linear-gradient(#fefefe,#f5f5f5)}.ulf-theme-light .ulf-header-inner h1 small{color:#999}.ulf-theme-light .ulf-expand-all{color:#999;background-color:#eee}.ulf-theme-light .ulf-expand-all:hover{color:#555}.ulf-theme-light .ulf-search input{color:#555;background-color:#eee}.ulf-theme-light .ulf-search input::-webkit-input-placeholder{color:#999}.ulf-theme-light .ulf-nav ul li a{font-weight:500;color:#444;background-color:#f5f5f5}.ulf-theme-light .ulf-nav ul li a:hover{color:#111;background-color:#fff}.ulf-theme-light .ulf-nav ul li .ulf-active{color:#111;background-color:#fff}.ulf-theme-light .ulf-nav ul ul li a{background-color:#eee}.ulf-theme-light .ulf-nav-normal>ul{margin-right:-1px;margin-bottom:-1px}.ulf-theme-light .ulf-nav-normal>ul li a{border-bottom:1px solid #ccd0d4;border-right:1px solid #ccd0d4}.ulf-theme-light .ulf-nav-normal>ul li .ulf-active{border-right-color:#fff}.ulf-theme-light .ulf-nav-inline{background-color:#f5f5f5;border-bottom:1px solid #ccd0d4}.ulf-theme-light .ulf-nav-inline>ul{margin-bottom:-1px}.ulf-theme-light .ulf-nav-inline>ul li a{text-align:center;border-right:1px solid #ccd0d4;border-bottom:1px solid #ccd0d4}.ulf-theme-light .ulf-nav-inline>ul li .ulf-active{border-bottom-color:#fff}.ulf-theme-light .ulf-nav-inline>ul ul{display:none!important}.ulf-theme-light .ulf-nav-inline .ulf-arrow:after{display:none}.ulf-theme-light .ulf-nav-background{background-color:#f5f5f5;border-right:1px solid #ccd0d4}.ulf-theme-light .ulf-footer{color:#555;border-top:1px solid #ccd0d4;background-color:#f5f5f5;background:linear-gradient(#fafafa,#f5f5f5)}.ulf-field{position:relative;padding:30px}.ulf-field+.ulf-field{border-top:1px solid #eee}.ulf-field p:first-child{margin-top:0}.ulf-field p:last-child{margin-bottom:0}.ulf-field:after,.ulf-field:before{content:" ";display:table}.ulf-field:after{clear:both}.ulf-field h4{margin-top:0}.ulf-field .ulf-title{position:relative;width:20%;float:left}.ulf-field .ulf-title h4{margin:0;color:#23282d}.ulf-field .ulf-fieldset{float:right;width:calc(80% - 20px)}.ulf-pseudo-field{padding:0 5px 0 0!important;display:inline-block}.ulf-pseudo-field+.ulf-pseudo-field{border:0}.ulf-pseudo-field pre{display:none}.ulf-field-accordion .ulf-accordion-item{position:relative;margin-bottom:5px}.ulf-field-accordion .ulf-accordion-item:last-child{margin-bottom:0}.ulf-field-accordion .ulf-accordion-item h4{font-size:1em}.ulf-field-accordion .ulf-accordion-title{display:block;cursor:pointer;position:relative;margin:0;padding:15px;min-height:0;font-size:100%;user-select:none;border:1px solid #ccd0d4;background-color:#fafafa;box-shadow:0 1px 1px rgba(0,0,0,.04);transition:border-color .15s}.ulf-field-accordion .ulf-accordion-title:active,.ulf-field-accordion .ulf-accordion-title:focus,.ulf-field-accordion .ulf-accordion-title:hover{outline:0;border-color:#999}.ulf-field-accordion .ulf-accordion-title .ulf--icon{width:20px;text-align:center;margin-right:2px}.ulf-field-accordion .ulf-accordion-icon{width:16px;text-align:center}.ulf-field-accordion .ulf-accordion-content{display:none;padding:0;border:1px solid #ccd0d4;border-top:none;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ulf-field-accordion .ulf-accordion-content>.ulf-field{padding:15px}.ulf-field-accordion .ulf-accordion-open{display:block}.ulf-field-background .ulf-field{border:0!important;padding:0;margin-bottom:6px;margin-right:6px}.ulf-field-background .ulf--title{color:#777;font-size:12px}.ulf-field-background .ulf--background-colors{display:flex;flex-wrap:wrap}.ulf-field-background .ulf--background-attributes{display:flex;flex-wrap:wrap}.ulf-field-background .ulf--background-attributes select{min-width:100%;margin:0}.ulf-field-background .ulf--background-attributes .ulf-field{flex:1}.ulf-field-background .ulf--attributes-hidden{display:none}.ulf-field-backup textarea{width:100%;min-height:200px;margin-bottom:5px}.ulf-field-backup small{display:inline-block;margin:5px}.ulf-field-backup hr{margin:20px 0;border:none;border-bottom:1px solid #e5e5e5}.ulf-field-border .ulf--inputs,.ulf-field-dimensions .ulf--inputs,.ulf-field-spacing .ulf--inputs{float:left;display:flex;flex-wrap:wrap}.ulf-field-border .ulf--input,.ulf-field-dimensions .ulf--input,.ulf-field-spacing .ulf--input{display:flex;padding-right:6px;padding-bottom:4px;box-sizing:border-box}.ulf-field-border .ulf--input select,.ulf-field-dimensions .ulf--input select,.ulf-field-spacing .ulf--input select{margin:0}.ulf-field-border .ulf--input input,.ulf-field-dimensions .ulf--input input,.ulf-field-spacing .ulf--input input{position:relative;z-index:1;margin:0;width:65px;max-width:100%;text-align:center}.ulf-field-border .ulf--color,.ulf-field-dimensions .ulf--color,.ulf-field-spacing .ulf--color{float:left}.ulf-field-border .ulf--label,.ulf-field-dimensions .ulf--label,.ulf-field-spacing .ulf--label{display:flex;flex-direction:column;justify-content:center;user-select:none;min-width:20px;max-width:100%;padding:0 4px;font-size:12px;text-align:center;color:#555;border:1px solid #7b776c;background-color:#f5f5f5}.ulf-field-border .ulf--icon,.ulf-field-dimensions .ulf--icon,.ulf-field-spacing .ulf--icon{border-right:0;border-radius:4px 0 0 4px}.ulf-field-border .ulf--icon+input,.ulf-field-dimensions .ulf--icon+input,.ulf-field-spacing .ulf--icon+input{border-top-left-radius:0;border-bottom-left-radius:0}.ulf-field-border .ulf--unit,.ulf-field-dimensions .ulf--unit,.ulf-field-spacing .ulf--unit{border-left:0;border-radius:0 4px 4px 0}.ulf-field-border .ulf--is-unit,.ulf-field-dimensions .ulf--is-unit,.ulf-field-spacing .ulf--is-unit{border-top-right-radius:0;border-bottom-right-radius:0}.ulf-field-button_set .ulf--buttons{display:inline-block}.ulf-field-button_set .ulf--button{position:relative;z-index:1;float:left;cursor:pointer;padding:7px 14px;min-width:16px;text-align:center;color:#555;border:1px solid #ccc;background-color:#f7f7f7;user-select:none;box-shadow:0 1px 0 rgba(0,0,0,.1)}.ulf-field-button_set .ulf--button:first-child{border-radius:4px 0 0 4px}.ulf-field-button_set .ulf--button:last-child{border-radius:0 4px 4px 0}.ulf-field-button_set .ulf--button:not(:first-child){margin-left:-1px}.ulf-field-button_set .ulf--button:hover{background-color:#eee}.ulf-field-button_set .ulf--active,.ulf-field-button_set .ulf--active:hover{z-index:2;color:#fff;border-color:#006799;background-color:#0085ba}.ulf-field-button_set input{display:none}.ulf-field-checkbox ul,.ulf-field-radio ul{margin:0;padding:0;list-style-type:none;overflow-y:auto;max-height:305px}.ulf-field-checkbox ul li,.ulf-field-radio ul li{margin-bottom:6px}.ulf-field-checkbox ul ul,.ulf-field-radio ul ul{max-height:none}.ulf-field-checkbox ul ul li,.ulf-field-radio ul ul li{margin-left:8px}.ulf-field-checkbox ul ul li:first-child,.ulf-field-radio ul ul li:first-child{margin-left:0}.ulf-field-checkbox input,.ulf-field-radio input{margin:0 1px}.ulf-field-checkbox .ulf--inline-list li,.ulf-field-radio .ulf--inline-list li{display:inline-block;margin-right:15px}.ulf-field-checkbox .ulf--text,.ulf-field-radio .ulf--text{margin-left:5px;vertical-align:middle}.ulf-field-checkbox .ulf-checker,.ulf-field-radio .ulf-checker{cursor:pointer}.ulf-field-code_editor .CodeMirror{width:100%;height:400px}.ulf-field-code_editor .cm-s-default{border:1px solid #ccd0d4}.ulf-field-code_editor textarea{width:100%;height:400px}.ulf-field-color>input{opacity:.75;width:115px;max-width:100%}.ulf-field-color .button.wp-picker-clear{padding:0 8px;margin-left:6px;line-height:2.54545455;min-height:30px}.ulf-field-color_group .ulf--left{float:left;margin-right:10px;margin-bottom:5px}.ulf-field-color_group .ulf--title{color:#999;margin-bottom:5px}.ulf-field-fieldset .ulf-fieldset-content{border:1px solid #ccd0d4;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ulf-field-fieldset .ulf-fieldset-content>.ulf-field{padding:15px}.ulf-field-fieldset .ulf-field-subheading{font-size:13px}.ulf-field-date input{margin:0}.ulf-field-date .ulf--to{margin-left:7px}.ulf-datepicker-wrapper{margin-top:5px;width:auto;background-color:#fff;z-index:9999999!important;box-shadow:0 0 30px rgba(0,0,0,.15)}.ulf-datepicker-wrapper *{float:none;margin:0;padding:0;font-family:inherit;font-weight:400;font-style:normal;text-decoration:none;border:0;border-radius:0;box-shadow:none}.ulf-datepicker-wrapper .ui-datepicker-header,.ulf-datepicker-wrapper .ui-widget-header{color:#fff;background:#00a0d2}.ulf-datepicker-wrapper .ui-datepicker-header .ui-state-hover{cursor:pointer}.ulf-datepicker-wrapper .ui-datepicker-title{font-size:14px;line-height:40px;text-align:center}.ulf-datepicker-wrapper .ui-datepicker-next,.ulf-datepicker-wrapper .ui-datepicker-prev{position:static;top:auto;left:auto;right:auto;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:12px;text-align:center;width:41px;height:40px;line-height:40px;color:#fff;background-color:rgba(255,255,255,.1);text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ulf-datepicker-wrapper .ui-datepicker-next span,.ulf-datepicker-wrapper .ui-datepicker-prev span{display:none}.ulf-datepicker-wrapper .ui-datepicker-prev{float:left}.ulf-datepicker-wrapper .ui-datepicker-next{float:right}.ulf-datepicker-wrapper .ui-datepicker-prev:before{content:'\f053'}.ulf-datepicker-wrapper .ui-datepicker-next:before{content:'\f054'}.ulf-datepicker-wrapper .ui-datepicker-next-hover,.ulf-datepicker-wrapper .ui-datepicker-prev-hover{opacity:.75}.ulf-datepicker-wrapper tbody .ui-datepicker-week-col{background-color:#f7f7f7}.ulf-datepicker-wrapper .ui-datepicker-buttonpane{padding:10px;text-align:center;background-color:#f7f7f7}.ulf-datepicker-wrapper .ui-datepicker-buttonpane button{cursor:pointer;margin:0 5px;padding:7px 14px;border:1px solid #eee;background-color:#fff}.ulf-datepicker-wrapper select{margin:0 4px}.ulf-datepicker-wrapper select option{color:#555}.ulf-datepicker-wrapper table{font-size:13px;border-collapse:collapse;width:100%}.ulf-datepicker-wrapper thead{color:#fff;background:#32373c}.ulf-datepicker-wrapper th{text-align:center;padding:7px;border:1px solid #444}.ulf-datepicker-wrapper td{text-align:center;border:1px solid #f4f4f4}.ulf-datepicker-wrapper td.ui-datepicker-other-month{border:transparent}.ulf-datepicker-wrapper td .ui-state-default{color:#555;width:auto;display:block;padding:6px 12px}.ulf-datepicker-wrapper td .ui-state-active,.ulf-datepicker-wrapper td .ui-state-hover{color:#fff;background-color:#0073aa}.ulf-datepicker-wrapper td.ui-state-disabled .ui-state-default{opacity:.5}.ulf-field-gallery input{display:none}.ulf-field-gallery ul{margin:0;padding:0;list-style-type:none}.ulf-field-gallery ul li{display:inline-block;position:relative;padding:4px;margin:0 5px 10px 0;border:1px solid #ccc;background-color:#f9f9f9;border-radius:2px;box-shadow:0 1px 0 rgba(0,0,0,.08)}.ulf-field-gallery ul li img{max-height:60px;display:inline-block;vertical-align:middle}.ulf-field-gallery .button{margin-right:5px;margin-bottom:5px}.ulf-field-group .ulf-cloneable-hidden{display:none!important}.ulf-field-group .ulf-cloneable-wrapper{position:relative}.ulf-field-group .ulf-cloneable-item{display:none;position:relative;margin-bottom:5px}.ulf-field-group .ulf-cloneable-item h4{font-size:1em}.ulf-field-group .ui-accordion .ulf-cloneable-item{display:block}.ulf-field-group .ulf-cloneable-content{border:1px solid #ccd0d4;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ulf-field-group .ulf-cloneable-content>.ulf-field{padding:15px}.ulf-field-group .ulf-cloneable-title{display:block;cursor:pointer;position:relative;user-select:none;margin:0;padding:15px 65px 15px 10px;min-height:0;font-size:100%;border:1px solid #ccd0d4;background-color:#fafafa;box-shadow:0 1px 1px rgba(0,0,0,.04);transition:border-color .15s}.ulf-field-group .ulf-cloneable-title:active,.ulf-field-group .ulf-cloneable-title:focus,.ulf-field-group .ulf-cloneable-title:hover{border-color:#999;outline:0}.ulf-field-group .ulf-cloneable-helper{position:absolute;top:12px;right:10px;z-index:1;font-size:14px;line-height:1em}.ulf-field-group .ulf-cloneable-helper i{display:inline-block;cursor:pointer;padding:5px;color:#999}.ulf-field-group .ulf-cloneable-helper i:hover{color:#555}.ulf-field-group .ulf-cloneable-content{padding:0;border-top:0}.ulf-field-group .ulf-cloneable-title-number,.ulf-field-group .ulf-cloneable-title-prefix{margin-right:5px}.ulf-field-group .ulf-cloneable-alert{display:none;margin-bottom:5px;padding:10px 20px;color:#a94442;border:1px solid #ebccd1;background-color:#f2dede}.ulf-field-group .widget-placeholder{margin-bottom:10px;border:1px dashed #f1c40f;background-color:#fffae4}.ulf-field-group .ulf-cloneable-header-icon{display:inline-block;text-align:center;font-size:14px;width:17px;text-indent:0;vertical-align:text-top}.ulf-field-group .ulf-cloneable-placeholder{background-color:#ddd;margin-top:4px;width:100px;height:10px;font-size:10px;line-height:10px;display:inline-block;vertical-align:top;border-radius:2px}.ulf-field-icon input{display:none}.ulf-field-icon .button{margin-right:5px}.ulf-field-icon .ulf-icon-preview i{display:inline-block;font-size:16px;width:30px;height:28px;line-height:28px;margin-right:5px;text-align:center;vertical-align:top;color:#555;border:1px solid #ccc;background-color:#f7f7f7;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.08)}.ulf-field-image_select .ulf--image{display:inline-block;margin:0 5px 5px 0}.ulf-field-image_select .ulf--inline-list .ulf--image{display:block}.ulf-field-image_select figure{cursor:pointer;position:relative;display:inline-block;max-width:100%;margin:0;vertical-align:bottom;border:2px solid transparent;background-color:#fff;user-select:none;transition:all .2s}.ulf-field-image_select figure:before{position:absolute;top:0;left:0;text-align:center;font-size:10px;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;content:"\f00c";width:16px;height:16px;line-height:14px;opacity:0;color:#fff;background-color:#222;transition:opacity .2s}.ulf-field-image_select .ulf--active figure{border-color:#222;box-shadow:0 0 20px rgba(0,0,0,.2)}.ulf-field-image_select .ulf--active figure:before{opacity:1}.ulf-field-image_select img{max-width:100%;height:auto;vertical-align:top}.ulf-field-image_select input{display:none}.ulf-field-link_color .ulf--left{float:left;margin-right:10px;margin-bottom:5px}.ulf-field-link_color .ulf--title{color:#777;margin-bottom:5px}.ulf-field-map input{width:100%}.ulf-field-map input[type=text].ui-autocomplete-loading{background-position-x:calc(100% - 5px)}.ulf-field-map .ulf--map-search+.ulf--map-osm-wrap{margin-top:10px}.ulf-field-map .ulf--map-osm-wrap{position:relative;padding:5px;border:1px solid #eee;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ulf-field-map .ulf--map-osm{position:relative;z-index:1;min-height:250px}.ulf-field-map .ulf--map-inputs{margin-top:10px;display:flex;justify-content:space-between}.ulf-field-map .ulf--map-input{flex:1}.ulf-field-map .ulf--map-input:last-child{padding-left:10px}.ulf-field-map label{display:block;color:#777;font-size:12px;margin:0 0 2px 0}.ulf-map-ui-autocomplate{z-index:999999;border-radius:4px;overflow:hidden}.ulf-field-media .ulf--placeholder{display:flex;align-items:flex-start}.ulf-field-media .ulf--placeholder input{width:100%;margin:0}.ulf-field-media .button{margin-left:5px}.ulf-field-media .hidden+.button{margin-left:0}.ulf-field-media .ulf--preview{position:relative}.ulf-field-media .ulf--preview .fa-times{position:absolute;z-index:1;right:4px;top:4px;font-size:14px;width:22px;height:22px;line-height:22px;text-align:center;text-decoration:none;color:#fff;background-color:#d33;opacity:.8;transition:all .2s}.ulf-field-media .ulf--preview .fa-times:hover{opacity:1}.ulf-field-media .ulf--preview .fa-times:focus{box-shadow:none}.ulf-field-palette .ulf--palette{position:relative;display:inline-block;cursor:pointer;border:2px solid #ddd;margin-right:10px;margin-bottom:10px;user-select:none;-webkit-user-select:none;transition:all .2s}.ulf-field-palette .ulf--palette span{vertical-align:middle;display:inline-block;width:22px;height:60px;line-height:60px;overflow:hidden;text-indent:-999px}.ulf-field-palette .ulf--palette:before{position:absolute;top:0;left:0;text-align:center;font-size:10px;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;content:"\f00c";width:16px;height:16px;line-height:14px;opacity:0;color:#fff;background-color:#222;transition:opacity .2s}.ulf-field-palette .ulf--active{border-color:#222;box-shadow:0 0 20px rgba(0,0,0,.2)}.ulf-field-palette .ulf--active:before{opacity:1}.ulf-field-palette input{display:none}.ulf-field-repeater .ulf-field-text input{width:100%}.ulf-field-repeater .ulf-repeater-hidden{display:none!important}.ulf-field-repeater .ulf-repeater-wrapper .ulf-repeater-item{display:table;width:100%;margin-bottom:5px;border:1px solid #eee}.ulf-field-repeater .ulf-repeater-wrapper .ulf-repeater-item h4{font-size:1em}.ulf-field-repeater .ulf-repeater-content{width:100%;display:table-cell;vertical-align:middle;background-color:#fff}.ulf-field-repeater .ulf-repeater-content>.ulf-field{padding:15px}.ulf-field-repeater .ulf-repeater-helper{width:100%;display:table-cell;vertical-align:middle;text-align:center;font-size:14px;line-height:1em;border-left:1px solid #eee;background-color:#f7f7f7}.ulf-field-repeater .ulf-repeater-helper i{display:inline-block;cursor:pointer;color:#999;padding:5px}.ulf-field-repeater .ulf-repeater-helper i:hover{color:#555}.ulf-field-repeater .ulf-repeater-helper-inner{width:75px}.ulf-field-repeater .ulf-repeater-alert{display:none;margin-bottom:5px;padding:10px 20px;color:#a94442;border:1px solid #ebccd1;background-color:#f2dede}.ulf-field-repeater .widget-placeholder{height:50px;margin-bottom:3px;border:1px dashed #f1c40f;background-color:#fffae4}.ulf-field-repeater .ui-sortable-helper{height:50px!important;overflow:hidden!important;border-color:#ccc!important;background-color:#eee!important;opacity:.5}.ulf-field-repeater .ui-sortable-helper .ulf-repeater-content,.ulf-field-repeater .ui-sortable-helper .ulf-repeater-helper{display:none}.ulf-field-select .ulf-fieldset{min-height:30px}.ulf-field-select .ulf-chosen{display:none}.ulf-field-select select{max-width:100%;margin:0}.ulf-field-slider .ulf--wrap{display:flex;align-items:center}.ulf-field-slider .ulf--input{display:flex}.ulf-field-slider .ulf--unit{display:flex;justify-content:center;flex-direction:column;user-select:none;padding:0 6px;font-size:11px;line-height:1;border-radius:0 4px 4px 0;color:#555;border:1px solid #7e8993;border-left:0;background-color:#f5f5f5}.ulf-field-slider .ulf-slider-ui{margin-right:15px}.ulf-field-slider input[type=number]{position:relative;z-index:1;margin:0;width:50px;text-align:center}.ulf-field-slider .ulf--is-unit{border-top-right-radius:0;border-bottom-right-radius:0}.ulf-field-slider .ui-slider{position:relative;width:100%;height:3px;border:none;background:#ddd;border-radius:2px}.ulf-field-slider .ui-slider-range{height:3px;border:none;background:#333;border-radius:2px}.ulf-field-slider .ui-slider-handle{position:absolute;width:16px;height:16px;top:-7px;margin-left:-8px;border:none;background:#333;border-radius:2px}.ulf-field-slider .ui-slider-handle:hover,.ulf-field-slider .ui-state-active{cursor:pointer;background:#111}.ulf-field-sortable .ulf-field-text input{width:100%;max-width:100%}.ulf-field-sortable .ulf-sortable .ulf-sortable-item{display:table;width:100%;margin-bottom:5px;border:1px solid #eee}.ulf-field-sortable .ulf-sortable .ulf-sortable-item h4{font-size:1em}.ulf-field-sortable .ulf-sortable-content{width:100%;display:table-cell;vertical-align:middle;background-color:#fff}.ulf-field-sortable .ulf-sortable-content>.ulf-field{padding:15px}.ulf-field-sortable .ulf-sortable-helper{width:100%;display:table-cell;vertical-align:middle;text-align:center;font-size:14px;line-height:1em;border-left:1px solid #eee;background-color:#f7f7f7}.ulf-field-sortable .ulf-sortable-helper i{display:inline-block;cursor:pointer;width:50px;color:#555}.ulf-field-sortable .ulf-sortable-helper i:hover{opacity:.5}.ulf-field-sortable .widget-placeholder{height:50px;margin-bottom:3px;border:1px dashed #f1c40f;background-color:#fffae4}.ulf-field-sortable .ui-sortable-helper{height:50px!important;overflow:hidden!important;border-color:#ccc!important;background-color:#eee!important;opacity:.5}.ulf-field-sortable .ui-sortable-helper .ulf-sortable-content,.ulf-field-sortable .ui-sortable-helper .ulf-sortable-helper{display:none}.ulf-field-sorter .ui-sortable-placeholder{height:20px;border:1px dashed #f1c40f;background-color:#fffae4}.ulf-field-sorter .ulf-modules{float:left;width:50%;box-sizing:border-box}.ulf-field-sorter .ulf-modules:first-child{padding-right:15px}.ulf-field-sorter .ulf-modules:last-child{padding-left:15px}.ulf-field-sorter .ulf-disabled,.ulf-field-sorter .ulf-enabled{padding:5px 15px;border:1px dashed #ddd;background-color:#fff}.ulf-field-sorter .ulf-disabled li{opacity:.5;transition:opacity .15s}.ulf-field-sorter .ulf-disabled .ui-sortable-helper{opacity:1}.ulf-field-sorter .ulf-sorter-title{font-size:13px;font-weight:600;padding:10px;text-align:center;border:1px dashed #ddd;border-bottom:none;background-color:#f8f8f8;text-transform:uppercase}.ulf-field-sorter ul{list-style-type:none;margin:0;padding:0;min-height:62px}.ulf-field-sorter ul li{margin:10px 0;padding:10px 15px;cursor:move;font-weight:700;text-align:center;border:1px solid #e5e5e5;background-color:#fafafa;transition:border-color .15s}.ulf-field-sorter ul li:hover{border-color:#bbb}.ulf-field-spinner .ulf--spin{display:flex}.ulf-field-spinner .ui-spinner{display:flex}.ulf-field-spinner .ui-button{display:flex;flex-direction:column;justify-content:center;text-align:center;min-width:20px;padding:0 4px;color:#555;border:1px solid #7e8993;background-color:#f5f5f5}.ulf-field-spinner .ui-spinner-button{cursor:pointer}.ulf-field-spinner .ui-spinner-button:hover{background-color:#e7e7e7}.ulf-field-spinner .ui-spinner-button:active{background-color:#ddd}.ulf-field-spinner .ui-spinner-button:before{font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:14px;line-height:14px}.ulf-field-spinner .ui-spinner-down{order:1;border-right:0;border-radius:4px 0 0 4px}.ulf-field-spinner .ui-spinner-down:before{content:"\f0d9"}.ulf-field-spinner .ui-spinner-input{order:2}.ulf-field-spinner .ulf--unit{order:3;border-left:0;user-select:none}.ulf-field-spinner .ui-spinner-up{order:4;border-left:0;border-radius:0 4px 4px 0}.ulf-field-spinner .ui-spinner-up:before{content:"\f0da"}.ulf-field-spinner input{position:relative;z-index:1;width:50px;text-align:center;margin:0;padding:0 8px;border-radius:0}.ulf-field-spinner .ui-button-icon,.ulf-field-spinner .ui-button-icon-space,.ulf-field-spinner .ui-button-text{display:none}.ulf-field-switcher .ulf--switcher{float:left;cursor:pointer;position:relative;width:60px;height:26px;padding:0;margin:0;overflow:hidden;border-radius:4px;background-color:#ed6f6f;user-select:none;-webkit-user-select:none}.ulf-field-switcher .ulf--ball{position:absolute;top:4px;left:4px;width:24px;height:18px;background-color:#fff;border-radius:4px;transition:all .1s;box-shadow:1px 1px 1px rgba(0,0,0,.15)}.ulf-field-switcher .ulf--off,.ulf-field-switcher .ulf--on{position:absolute;top:0;left:0;right:0;font-size:11px;line-height:26px;font-weight:500;font-style:normal;text-align:center;text-transform:uppercase;color:#fff;padding-right:28px;opacity:0;transition:all .1s}.ulf-field-switcher .ulf--off{padding-right:0;padding-left:28px;opacity:1}.ulf-field-switcher .ulf--active{background:#4fb845}.ulf-field-switcher .ulf--active .ulf--on{opacity:1}.ulf-field-switcher .ulf--active .ulf--off{opacity:0}.ulf-field-switcher .ulf--active .ulf--ball{left:100%;margin-left:-28px}.ulf-field-switcher .ulf--label{float:left;margin-top:4px;margin-left:8px;font-weight:400;color:#999}.ulf-field-switcher input{display:none}.ulf-field-tabbed .ulf-tabbed-content{border:1px solid #ccd0d4;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ulf-field-tabbed .ulf-tabbed-content>.ulf-field{padding:15px}.ulf-field-tabbed .ulf-tabbed-nav .ulf--icon{padding-right:5px}.ulf-field-tabbed .ulf-tabbed-nav a{display:inline-block;padding:12px 15px;margin-top:1px;margin-right:5px;margin-bottom:-1px;position:relative;text-decoration:none;color:#444;font-weight:600;border:1px solid #ccd0d4;background-color:#f3f3f3;transition:all .2s}.ulf-field-tabbed .ulf-tabbed-nav a:hover{background-color:#f9f9f9}.ulf-field-tabbed .ulf-tabbed-nav a.ulf-tabbed-active{background-color:#fff;border-bottom-color:#fff}.ulf-field-tabbed .ulf-tabbed-nav a:focus{outline:0;box-shadow:none}.ulf-field-text input{width:50%;max-width:100%;margin:0}.ulf-field-textarea textarea{width:100%;max-width:100%;min-height:125px}.ulf-field-textarea .ulf-shortcode-button{margin-bottom:10px;margin-right:5px}.ulf-field-typography select,.ulf-field-typography textarea{min-width:100%;margin:0}.ulf-field-typography .ulf--title{color:#777;margin:0 0 2px 0;font-size:12px}.ulf-field-typography .ulf--title small{vertical-align:top}.ulf-field-typography .ulf--blocks{display:flex;flex-wrap:wrap}.ulf-field-typography .ulf--block{flex:1;padding-right:6px;padding-bottom:6px}.ulf-field-typography .ulf--input{margin:0;min-width:100%}.ulf-field-typography .ulf--input-wrap{position:relative}.ulf-field-typography .ulf--unit{position:absolute;z-index:1;right:4px;top:4px;bottom:4px;padding:2px 6px;color:#666;font-size:11px;line-height:1;border-radius:2px;background:#eee;user-select:none;display:flex;justify-content:center;flex-direction:column}.ulf-field-typography .ulf--preview{font-size:16px;line-height:20px;padding:20px;color:#222;border:1px solid #eee;background-color:#fff;border-radius:2.5px;user-select:none;-webkit-user-select:none;transition:background-color .2s,border-color .2s}.ulf-field-typography .ulf--block-preview{cursor:pointer;position:relative;overflow:hidden;margin-top:10px;max-width:100%}.ulf-field-typography .ulf--black-background{border-color:#000;background-color:#000}.ulf-field-typography .ulf--toggle{position:absolute;top:5px;right:10px;color:#999}.ulf-field-typography .ulf--block-extra-styles{margin-top:5px}.ulf-field-upload input{width:100%;margin:0}.ulf-field-upload .ulf--wrap{display:flex;align-items:flex-start}.ulf-field-upload .button{margin-left:5px}.ulf-field-wp_editor .ulf-wp-editor{float:left;width:100%}.ulf-field-wp_editor .mce-toolbar-grp{border:none}.ulf-field-wp_editor .mce-btn.mce-active button,.ulf-field-wp_editor .mce-btn.mce-active i,.ulf-field-wp_editor .mce-btn.mce-active:hover button,.ulf-field-wp_editor .mce-btn.mce-active:hover i{color:#23282d}.ulf-field-wp_editor .wp-media-buttons{position:relative;z-index:2}.ulf-field-wp_editor .wp-editor-tabs{position:relative;z-index:1}.ulf-field-wp_editor .ulf-no-tinymce{border:1px solid #e5e5e5}.ulf-field-wp_editor .ulf-no-quicktags .wp-media-buttons{float:none;display:block}.ulf-field-wp_editor .ulf-no-quicktags .mce-tinymce{box-shadow:none;border:1px solid #e5e5e5}.ulf-field-wp_editor textarea{width:100%;max-width:100%;margin:0;box-shadow:none}.ulf-field-heading{font-size:1.5em;font-weight:700;color:#23282d;background-color:#f5f5f5}.ulf-field-subheading{font-size:14px;font-weight:700;padding-top:17px;padding-bottom:17px;color:#23282d;background-color:#f7f7f7}.ulf-field-submessage{padding:0!important;border:0!important}.ulf-field-submessage+.ulf-field{border-top:0!important}.ulf-submessage{font-size:12px;padding:17px 30px;border-top:1px solid transparent;border-bottom:1px solid transparent}.ulf-submessage-success{color:#3c763d;border-color:#d6e9c6;background-color:#dff0d8}.ulf-submessage-info{color:#31708f;border-color:#bce8f1;background-color:#d9edf7}.ulf-submessage-warning{color:#8a6d3b;border-color:#faebcc;background-color:#fcf8e3}.ulf-submessage-danger{color:#a94442;border-color:#ebccd1;background-color:#f2dede}.ulf-submessage-normal{color:#23282d;border-color:#eee;background-color:#f7f7f7}.ulf-field-notice{background-color:#f7f7f7}.ulf-notice{padding:12px;background-color:#fff;border-left-style:solid;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,.1)}.ulf-notice-success{border-color:#46b450}.ulf-notice-info{border-color:#339fd4}.ulf-notice-warning{border-color:#ffbc00}.ulf-notice-danger{border-color:#dc3232}.ulf-notice-normal{border-color:#222}.ulf-field-number input{width:100%;margin:0}.ulf-field-number .ulf--wrap{position:relative;float:left;width:100px}.ulf-field-number .ulf--unit{position:absolute;z-index:1;right:4px;top:4px;bottom:4px;padding:2px 6px;color:#666;font-size:11px;line-height:1;border-radius:2px;background:#eee;user-select:none;display:flex;justify-content:center;flex-direction:column}.ulf-field-link input{display:none}.ulf-field-link .ulf--result{display:inline-block;font-size:12px;line-height:16px;padding:7px 10px;margin-bottom:7px;color:#777;border:1px solid #e5e5e5;background-color:#f5f5f5;border-radius:2px;world-break:break-word}.ulf-field-link .ulf--wrap{position:relative;float:left;width:100px}.ulf-field-link .ulf--unit{position:absolute;z-index:1;right:4px;top:4px;bottom:4px;padding:2px 6px;color:#666;font-size:11px;line-height:1;border-radius:2px;background:#eee;user-select:none;display:flex;justify-content:center;flex-direction:column}.ulf-help{cursor:help;position:absolute;top:0;right:0;padding:5px;font-size:13px;color:#aaa}.ulf-help .ulf-help-text{display:none}.ulf-image-preview{display:inline-block;position:relative;padding:4px;min-width:44px;min-height:22px;margin-bottom:10px;border:1px solid #ccc;background-color:#f9f9f9;box-shadow:0 1px 0 rgba(0,0,0,.08)}.ulf-image-preview img{max-height:90px;display:inline-block;vertical-align:middle}.ulf-field-custom .ulf-field{padding:0}.ulf-field .chosen-container-single .chosen-single{height:28px;line-height:26px}.ulf-field .chosen-container-single .chosen-single abbr{top:0;right:20px;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:12px;height:100%;width:18px;color:#aaa;text-align:center;background:0 0}.ulf-field .chosen-container-single .chosen-single abbr:before{content:"\f00d"}.ulf-field .chosen-container-single .chosen-single abbr:hover{color:#555}.ulf-field .chosen-container-multi .chosen-choices li.search-choice .search-choice-close{font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:12px;height:100%;width:18px;color:#aaa;text-align:center;background:0 0}.ulf-field .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{content:"\f00d";display:inline-block;padding-top:3px}.ulf-field .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{color:#555}.ulf-field .chosen-container-single .chosen-single div b{font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:14px;color:#aaa;background:0 0}.ulf-field .chosen-container-single .chosen-single div b:before{content:"\f107"}.ulf-field .chosen-container-single .chosen-single div b:hover{color:#555}.ulf-field .chosen-container-multi .chosen-choices li.search-choice-placeholder{border:1px dashed #aaa;margin:3px 5px 3px 0}.ulf-field .chosen-container-multi .ui-sortable li.search-choice span{cursor:move}.ulf-field .chosen-container-active.chosen-with-drop .chosen-single div b:before{content:"\f106"}.ulf-field .chosen-container-single .chosen-single-with-deselect span{margin-right:40px}.ulf-field .chosen-container-single .chosen-search input[type=text]{background:0 0}.ulf-field .chosen-container-single .chosen-search:before{font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:11px;content:"\f002";position:absolute;right:12px;top:10px;color:#aaa}.ulf-field .wp-picker-container{display:inline-block}.ulf-field .wp-picker-container .wp-color-result.button{margin-bottom:0}.ulf-field .ulf--transparent-wrap{display:none;position:relative;top:-1px;width:235px;padding:9px 10px;border:1px solid #dfdfdf;border-top:none;background-color:#fff}.ulf-field .wp-picker-active .ulf--transparent-wrap{display:block}.ulf-field .ulf--transparent-slider{position:absolute;width:190px;margin-left:2px;height:18px}.ulf-field .ulf--transparent-slider .ui-slider-handle{position:absolute;top:-3px;bottom:-3px;z-index:5;border-color:#aaa;border-style:solid;border-width:4px 3px;width:10px;height:16px;margin:0 -5px;background:0 0;cursor:ew-resize;opacity:.9;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2)}.ulf-field .ulf--transparent-slider .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.ulf-field .ulf--transparent-offset{height:18px;width:200px;background:url(../images/checkerboard.png) repeat-y center left scroll #fff;border-radius:2px;box-shadow:inset 0 0 5px rgba(0,0,0,.4)}.ulf-field .ulf--transparent-text{position:absolute;top:12px;right:10px;width:30px;font-size:12px;line-height:12px;text-align:center;color:#999}.ulf-field .ulf--transparent-button{cursor:pointer;user-select:none;margin-top:10px;font-size:11px;text-align:center;border-radius:2px;padding:3px 7px;box-shadow:0 1px 0 rgba(0,0,0,.1);letter-spacing:.2px;color:#777;border:1px solid #ccc;background-color:#f7f7f7;transition:background-color .2s,border-color .2s,color .2s}.ulf-field .ulf--transparent-active .wp-color-result{background-image:url(../images/checkerboard.png);background-size:135px;background-position:center left;background-color:transparent!important}.ulf-field .ulf--transparent-active .ulf--transparent-button{color:#fff;border-color:#3ea032;background-color:#4fb845}.ulf-field .ulf--transparent-active .fa:before{content:"\f205"}.ulf-widgets>.ulf-field{position:relative;top:-1px;margin-right:-15px;margin-left:-15px;padding:12px 15px}.ulf-widgets>.ulf-field .ulf-field{margin-left:0;margin-right:0}.ulf-widgets>.ulf-field .ulf-title{float:none;width:100%;margin-bottom:5px}.ulf-widgets>.ulf-field .ulf-fieldset{float:none;width:100%}.ulf-widgets .ulf-field-text input{width:100%}.ulf-widgets .ulf-field-notice .ulf-notice{padding:15px}.control-section .ulf-widgets>.ulf-field{margin-right:-10px;margin-left:-10px;padding:10px 12px}.control-section .ulf-field{padding:0}.control-section .ulf-field .ulf-title{float:none;width:100%;margin-bottom:6px}.control-section .ulf-field .ulf-title h4{display:block;font-size:13px;line-height:1;font-weight:600;color:inherit}.control-section .ulf-field .ulf-fieldset{float:none;width:100%}.control-section .ulf-help{top:-5px;right:-5px}.control-section .ulf-field-select select{width:100%}.control-section .ulf-field-heading{color:inherit;font-size:14px;line-height:1em;margin-right:-15px;margin-left:-15px;padding:15px}.control-section .ulf-field-subheading{color:inherit;font-size:11px;margin-right:-15px;margin-left:-15px;padding:10px 15px}.control-section .ulf-subtitle-text{margin-top:4px;font-size:12px}.control-section .ulf-field-submessage .ulf-submessage{margin-right:-15px;margin-left:-15px;padding:15px}.control-section .ulf-fieldset .ulf-field-heading,.control-section .ulf-fieldset .ulf-field-subheading,.control-section .ulf-fieldset .ulf-field-submessage .ulf-submessage{margin-left:0;margin-right:0}.control-section .ulf-field-date .ulf--to{margin-left:0}.control-section .ulf-field-sorter ul li{padding:5px}.control-section .ulf-field-sorter .ulf-modules{float:none;width:100%}.control-section .ulf-field-sorter .ulf-modules:first-child{padding-right:0;padding-bottom:15px}.control-section .ulf-field-background .ulf--background-attributes{flex-direction:column}.control-section .ulf-field-spacing input{width:90px}.control-section .ulf-field-border .ulf--input{flex:1 50%}.control-section .ulf-field-border input,.control-section .ulf-field-border select{width:100%}.control-section .ulf-field-spinner input{width:50px}.control-section .ulf-field-number .ulf--wrap{width:100%}.control-section .ulf-field-backup .ulf-export-data{display:none}.control-section .ulf-field-fieldset .ulf-fieldset-content{border-color:#e5e5e5}.control-section .ulf-accordion-content>.ulf-field,.control-section .ulf-cloneable-content>.ulf-field,.control-section .ulf-fieldset-content>.ulf-field,.control-section .ulf-repeater-content>.ulf-field,.control-section .ulf-sortable-content>.ulf-field,.control-section .ulf-tabbed-content>.ulf-field{padding:10px}.control-section .ulf-accordion-content>.ulf-field .ulf-title,.control-section .ulf-cloneable-content>.ulf-field .ulf-title,.control-section .ulf-fieldset-content>.ulf-field .ulf-title,.control-section .ulf-repeater-content>.ulf-field .ulf-title,.control-section .ulf-sortable-content>.ulf-field .ulf-title,.control-section .ulf-tabbed-content>.ulf-field .ulf-title{margin-bottom:5px}.control-section .ulf-accordion-content>.ulf-field h4,.control-section .ulf-cloneable-content>.ulf-field h4,.control-section .ulf-fieldset-content>.ulf-field h4,.control-section .ulf-repeater-content>.ulf-field h4,.control-section .ulf-sortable-content>.ulf-field h4,.control-section .ulf-tabbed-content>.ulf-field h4{font-size:12px}.control-section .ulf-depend-hidden.ulf-depend-on{display:none!important}.control-section .ulf-depend-visible.ulf-depend-on{border-top:0!important}.ulf-taxonomy{max-width:95%}.ulf-taxonomy>.ulf-field{border-top:none!important}.ulf-taxonomy>.ulf-field-heading{font-size:1.1em;padding:20px!important;border:1px solid #ddd}.ulf-taxonomy>.ulf-field-subheading{font-size:12px;padding:15px!important;border:1px solid #ddd}.ulf-taxonomy>.ulf-field-submessage .ulf-submessage{padding:15px;border-left-width:1px;border-left-style:solid;border-right-width:1px;border-right-style:solid}.ulf-taxonomy>.ulf-field-notice{background-color:transparent}.ulf-taxonomy .ulf-section-title{display:block;padding:15px;background-color:#f9f9f9;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ulf-taxonomy-add-fields>.ulf-field{padding:8px 0}.ulf-taxonomy-add-fields>.ulf-field>.ulf-title{float:none;width:100%;padding:2px 2px 4px 0}.ulf-taxonomy-add-fields>.ulf-field>.ulf-title h4{font-size:12px;font-weight:400}.ulf-taxonomy-add-fields>.ulf-field>.ulf-fieldset{float:none;width:100%}.ulf-taxonomy-add-fields>.ulf-field>.ulf-fieldset>.ulf-help{right:-5px}.ulf-taxonomy-add-fields+p.submit{margin-top:0}.ulf-taxonomy-edit-fields>.ulf-field{padding:20px 0}.ulf-taxonomy-edit-fields>.ulf-field>.ulf-title{width:200px}.ulf-taxonomy-edit-fields>.ulf-field>.ulf-title h4{font-size:14px;font-weight:600;line-height:1.3;display:inline-block;vertical-align:middle}.ulf-taxonomy-edit-fields>.ulf-field>.ulf-fieldset{width:calc(100% - 220px)}.ulf-taxonomy-edit-fields>.ulf-field>.ulf-fieldset>.ulf-help{top:-5px;right:-5px}.ulf-taxonomy-edit-fields>.ulf-field-submessage{margin:20px 0}.ulf-taxonomy-edit-fields>.ulf-field-heading,.ulf-taxonomy-edit-fields>.ulf-field-subheading{margin:20px 0;border:1px solid #ddd}.ulf-nav-menu-options{clear:both;float:left;width:100%}.ulf-nav-menu-options>.ulf-fields{margin-left:-10px;margin-top:10px;margin-bottom:10px;border-top:1px solid #eee;border-bottom:1px solid #eee}.ulf-nav-menu-options>.ulf-fields>.ulf-field{padding:12px 14px 12px 12px}.ulf-nav-menu-options>.ulf-fields>.ulf-field .ulf-title{float:none;width:100%;margin-bottom:5px}.ulf-nav-menu-options>.ulf-fields>.ulf-field .ulf-fieldset{float:none;width:100%}.ulf-nav-menu-options .ulf-field-text input{width:100%}.ulf-nav-menu-options .ulf-field-notice .ulf-notice{padding:15px}.ulf-nav-menu-title{padding:12px 14px 12px 12px;background-color:#f5f5f5;border-top:1px solid #eee;border-bottom:1px solid #eee}.ulf-nav-menu-title:first-child{border-top:0}.ulf-nav-menu-title h4{margin:0;padding:0;color:#23282d}.ulf-nav-menu-icon{margin-right:5px}.ulf-profile-options>h2>.fa{padding-right:7px}.ulf-profile-options>.ulf-field{max-width:750px;padding:15px 0;border-top:none!important}.ulf-profile-options>.ulf-field>.ulf-title{width:200px}.ulf-profile-options>.ulf-field>.ulf-title h4{font-size:14px;font-weight:600;line-height:1.3;display:inline-block;vertical-align:middle}.ulf-profile-options>.ulf-field>.ulf-fieldset{width:calc(100% - 220px)}.ulf-profile-options>.ulf-field>.ulf-fieldset>.ulf-help{top:-15px;right:-5px}.ulf-profile-options>.ulf-field-heading{font-size:1.1em}.ulf-profile-options>.ulf-field-subheading{font-size:12px}.ulf-profile-options>.ulf-field-heading,.ulf-profile-options>.ulf-field-subheading{margin:10px 0;padding:15px!important;border:1px solid #ddd}.ulf-profile-options>.ulf-field-submessage{margin:20px 0}.ulf-profile-options>.ulf-field-submessage .ulf-submessage{padding:10px;border-left-width:1px;border-left-style:solid;border-right-width:1px;border-right-style:solid}.ulf-profile-options>.ulf-field-notice{background-color:transparent}.ulf-modal{position:fixed;z-index:100101;top:0;left:0;width:100%;height:100%}.ulf-modal.hidden{display:none}.ulf-modal-icon{z-index:100102}.ulf-modal-table{display:table;width:100%;height:100%}.ulf-modal-table-cell{display:table-cell;vertical-align:middle;margin:100px 0}.ulf-modal-inner{position:relative;z-index:10;width:760px;height:750px;margin:0 auto;background-color:#fff}.ulf-modal-content{position:relative;overflow:hidden;overflow-y:auto;height:595px}.ulf-modal-content .ulf-shortcode-button{display:none}.ulf-modal-content .ulf-field{padding:15px 30px 15px 15px}.ulf-modal-content a:active,.ulf-modal-content a:focus{outline:0;box-shadow:none}.ulf-modal-content h4{font-size:13px}.ulf-modal-content h4 small{font-style:italic;font-weight:400;color:#aaa}.ulf-modal-title{position:relative;background-color:#fcfcfc;border-bottom:1px solid #ddd;height:36px;font-size:16px;font-weight:600;line-height:36px;margin:0;padding:0 36px 0 16px}.ulf-modal-header{width:100%;padding:14px 0;background-color:#f5f5f5;border-bottom:1px solid #ddd}.ulf-modal-header select{display:block;width:250px;margin:0 auto;font-size:13px;line-height:1;height:30px;min-height:30px;background-color:#fff}.ulf-modal-close{color:#666;padding:0;position:absolute;top:0;right:0;width:36px;height:36px;text-align:center;background:0 0;border:none;cursor:pointer}.ulf-modal-close:before{font:normal 20px/36px dashicons;content:"\f158";vertical-align:top;width:36px;height:36px}.ulf-modal-close:hover{opacity:.5}.ulf-modal-insert-wrapper{text-align:center;width:100%;padding:15px 0;background-color:#f5f5f5;border-top:1px solid #ddd}.ulf-modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000;opacity:.5}.ulf--repeatable{padding:15px 15px 0 15px}.ulf--repeat-button-block{text-align:center;padding-bottom:15px}.ulf--repeat-shortcode{position:relative;margin-bottom:15px;border:1px dashed #ddd}.ulf--repeat-shortcode:first-child .ulf-repeat-remove{display:none}.ulf--repeat-shortcode .ulf-repeat-remove{position:absolute;right:10px;top:10px;z-index:10;cursor:pointer;display:inline-block;font-size:11px;width:18px;height:18px;line-height:18px;text-align:center;border-radius:2px;color:#fff;background-color:#e14d43;opacity:.5}.ulf--repeat-shortcode .ulf-repeat-remove:hover{opacity:.5}.ulf-shortcode-single .ulf-modal-inner{height:750px}.ulf-shortcode-single .ulf-modal-content{height:652px}.elementor-editor-active .ulf-shortcode-button{margin-left:5px}.elementor-editor-active .ulf-modal .hidden{display:none!important}.ulf-shortcode-block{text-align:center;padding:14px;font-size:13px;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}.ulf-shortcode-block .components-button{margin-bottom:10px}.ulf-modal-icon .ulf-icon-title{padding:15px 0;margin:4px;font-size:14px;font-weight:700;text-align:center;border:1px solid #eee;background-color:#f7f7f7}.ulf-modal-icon .ulf-modal-header{text-align:center}.ulf-modal-icon .ulf-icon-search{width:50%;height:40px;line-height:40px}.ulf-modal-icon i{cursor:pointer;display:inline-block;margin:4px;width:35px;height:35px;line-height:35px;font-size:16px;color:#555;text-align:center;border:1px solid #ccc;background-color:#f7f7f7;border-radius:2px;box-shadow:1px 1px 0 rgba(0,0,0,.05)}.ulf-modal-icon i:hover{color:#fff;border-color:#222;background-color:#222}.ulf-modal-icon .ulf-modal-content{padding:10px;height:618px}.ulf-modal-icon .ulf-error-text{padding:10px}.ulf-modal-loading{display:none;position:absolute;left:15px;top:15px}.ulf-loading{position:relative;width:20px;height:20px;background:#ccc;border-radius:20px;box-shadow:0 2px 5px rgba(0,0,0,.07)}.ulf-loading:after{position:absolute;top:50%;left:50%;width:4px;height:4px;content:"";margin-top:-2px;margin-left:-2px;background-color:#fff;animation-duration:.5s;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:ulfLoader;border-radius:4px}@keyframes ulfLoader{0%{transform:rotate(0) translateX(-6px) rotate(0)}100%{transform:rotate(360deg) translateX(-6px) rotate(-360deg)}}.ulf-subtitle-text{margin-top:6px;font-weight:400;color:#999}.ulf-desc-text{clear:both;float:left;width:100%;margin-top:6px;font-weight:400;color:#999}.ulf-error-text{margin-top:6px;color:#d02c21}.ulf-before-text{margin-bottom:6px}.ulf-after-text{margin-top:6px}.ulf-metabox-hide{display:none!important}.ulf-metabox-show{display:block!important}.ulf-depend-hidden.ulf-depend-on{display:none}.ulf-depend-visible.ulf-depend-on{display:block;opacity:.75;filter:grayscale(1);user-select:none;border-top:1px solid #eee}.ulf-depend-visible.ulf-depend-on .clear:before{content:"";left:0;top:0;right:0;bottom:0;position:absolute;background-color:#eee;opacity:.25;z-index:10}.ulf-warning-primary{color:#fff!important;border-color:#dc3545!important;background:#dc3545!important}.ulf-warning-primary:focus,.ulf-warning-primary:hover{border-color:#bd2130!important;background:#bd2130!important}.ulf-warning-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #bd2130!important}.ulf-warning-primary:active{border-color:#bd2130!important;background:#bd2130!important}.ulf-form-result{display:none;float:left;padding:0 8px;margin-right:4px;font-size:11px;line-height:30px;user-select:none;border-radius:2px}.ulf-form-show{display:block}.ulf-form-success{color:#fff;background-color:#46b450}.ulf-form-warning{color:#8a6d3b;background-color:#faebcc}.ulf-label-error{position:relative;top:-2px;display:inline-block;font-size:10px;line-height:10px;height:10px;width:10px;padding:1px;font-style:normal;text-align:center;color:#fff;vertical-align:middle;background-color:#e10000;border-radius:2px}.ulf-no-option{padding:30px}.ulf-input-number{-moz-appearance:textfield}.ulf-input-number::-webkit-inner-spin-button,.ulf-input-number::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ulf-fa5-shims .ulf .fab,.ulf-fa5-shims .ulf .far,.ulf-fa5-shims .ulf .fas{font-family:FontAwesome;font-style:normal}.ulf-welcome-wrap{position:relative;margin:25px 40px 0 20px;font-size:15px;max-width:1200px}.ulf-welcome-wrap p{font-size:14px;line-height:1.5}.ulf-welcome-wrap h1{margin:.2em 200px 0 0;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.ulf-welcome-wrap .ulf-logo{position:absolute;overflow:hidden;top:0;right:0;height:160px;width:140px;background-image:linear-gradient(45deg,#2d67cb,#ad19f3);box-shadow:0 1px 4px rgba(0,0,0,.25),inset 0 0 0 4px rgba(0,0,0,.25)}.ulf-welcome-wrap .ulf-logo .ulf--effects i{position:absolute;width:200px;height:100px;background-color:rgba(0,0,0,.15);transform:rotate(-45deg)}.ulf-welcome-wrap .ulf-logo .ulf--effects i:nth-child(1){bottom:-20px;right:-70px}.ulf-welcome-wrap .ulf-logo .ulf--effects i:nth-child(2){bottom:-35px;right:-80px}.ulf-welcome-wrap .ulf-logo .ulf--effects i:nth-child(3){bottom:-50px;right:-90px}.ulf-welcome-wrap .ulf-logo .ulf--effects i:nth-child(4){bottom:-65px;right:-100px}.ulf-welcome-wrap .ulf-logo .ulf--wp-logos{position:relative;padding-top:25px;text-align:center}.ulf-welcome-wrap .ulf-logo .ulf--wp-logo{position:absolute;left:20px;width:20px;height:20px;background-repeat:no-repeat;background-position:center center;background-image:url(../images/wp-logo.svg)}.ulf-welcome-wrap .ulf-logo .ulf--wp-plugin-logo{display:inline-block;width:50px;height:50px;border:3px solid #fff;background-size:40px;background-repeat:no-repeat;background-position:center center;background-image:url(../images/wp-plugin-logo.svg);border-radius:100%;vertical-align:middle}.ulf-welcome-wrap .ulf-logo .ulf--text{position:absolute;left:0;right:0;top:90px;color:#fff;font-size:13px;line-height:1.2em;font-weight:600;text-align:center;text-transform:uppercase;text-shadow:1px 1px 0 rgba(0,0,0,.25)}.ulf-welcome-wrap .ulf-logo .ulf--version{top:auto;left:auto;right:8px;bottom:4px;font-size:11px;text-transform:lowercase}.ulf-welcome-wrap .ulf-about-text{font-weight:400;line-height:1.6em;font-size:19px;margin:1em 200px 1em 0;color:#555d66}.ulf-welcome-wrap .ulf-demo-button{margin:1em 200px 2em 0}.ulf-welcome-wrap .nav-tab-wrapper{margin-bottom:20px}.ulf-welcome-wrap ul{list-style-type:disc;padding-left:15px}.ulf-welcome-wrap .ulf--col{float:left;padding-right:20px;box-sizing:border-box}.ulf-welcome-wrap .ulf--col-2{width:50%}.ulf-welcome-wrap .ulf--col-3{width:33.333%}.ulf-welcome-wrap .ulf--col-4{width:25%}.ulf-welcome-wrap .ulf--col-5{width:20%}.ulf-welcome-wrap .ulf--col-last{padding-right:0}.ulf-welcome-wrap .ulf--col-upgrade{padding:10px 0;text-align:center;border-top:1px solid #e5e5e5}.ulf--table-compare tfoot td,.ulf--table-compare thead td{text-align:center}.ulf--table-compare td{font-size:14px;text-align:center;vertical-align:middle;padding:10px}.ulf--table-compare td:first-child{text-align:left}.ulf--table-compare tfoot td{padding:15px 0}.ulf--table-compare .fa{font-size:18px}.ulf--table-compare .fa-check-circle{color:#46b450}.ulf--table-compare .fa-times-circle{color:#dc3232}.ulf-welcome-cols{clear:both;margin:20px 0;background-color:#fff;padding:0 0;border-radius:2px;border:1px solid #e5e5e5}.ulf-welcome-cols .ulf--col{width:33.333%;float:left;padding:20px;text-align:center;box-sizing:border-box;min-height:200px;border-right:1px solid #e5e5e5}.ulf-welcome-cols .ulf--block,.ulf-welcome-cols .ulf--left{float:left;width:20%;padding:0 30px;text-align:center;box-sizing:border-box}.ulf-welcome-cols .ulf--block{width:80%}.ulf-welcome-cols .ulf--col-first{border-bottom:1px solid #e5e5e5}.ulf-welcome-cols .ulf--last{border-right:none}.ulf-welcome-cols .ulf--space{height:20px}.ulf-welcome-cols .ulf--icon{display:inline-block;font-size:20px;width:30px;height:30px;line-height:30px;text-align:center;margin-bottom:10px;color:#fff;background-color:#555;border-radius:30px}.ulf-welcome-cols .ulf--active{background-color:#5cb85c}.ulf-welcome-cols .ulf--deactive{background-color:#e14d43}.ulf-welcome-cols .ulf--title{font-weight:700;display:block}.ulf-welcome-cols p:last-child{margin-bottom:0}.ulf-features-cols .ulf--key-features{width:30%}.ulf-features-cols .ulf--available-fields{width:70%}.ulf-code-block{margin:20px 0;padding:5px 20px;background-color:#fff;border-radius:2px;box-shadow:0 1px 1px rgba(0,0,0,.15)}.ulf-code-block pre{font-size:13px;color:#0073aa}.ulf-code-block pre span{color:#999}.ulf--table-fields td{font-size:14px}.ulf--upgrade a{color:#5cb85c;font-weight:700}.ulf--upgrade a:focus,.ulf--upgrade a:hover{color:#4aa14a;outline:0;box-shadow:none}@media only screen and (max-width:782px){.ulf-welcome-cols .ulf--col{width:100%;min-height:auto;border-right:none;border-bottom:1px solid #e5e5e5}.ulf-features-cols .ulf--key-features{width:100%}.ulf-features-cols .ulf--available-fields{width:100%}}@media only screen and (max-width:1200px){.ulf-metabox .ulf-field .ulf-title{float:none;width:100%;margin-bottom:10px}.ulf-metabox .ulf-field .ulf-fieldset{float:none;width:100%}}@media only screen and (max-width:782px){.ulf-header-inner{text-align:center}.ulf-header-inner h1{width:100%;margin-bottom:10px}.ulf-form-result{float:none;margin-right:0;margin-bottom:10px}.ulf-header-left,.ulf-header-right,.ulf-search{width:100%}.ulf-search{text-align:center;margin-bottom:15px}.ulf-footer{text-align:center}.ulf-buttons{float:none}.ulf-copyright{float:none;margin-top:10px}.ulf-expand-all,.ulf-nav,.ulf-nav-background,.ulf-reset-section{display:none!important}.ulf-content{margin-left:0}.ulf-section,.ulf-section-title{display:block!important}.ulf-field .ulf-title{float:none;width:100%;margin-bottom:10px}.ulf-field .ulf-fieldset{float:none;width:100%}.ulf-field-color .button.wp-picker-clear{padding:0 8px;line-height:2.14285714;min-height:32px}.ulf-modal-inner{width:350px;height:400px}.ulf-modal-content{height:237px}.ulf-icon-dialog .ulf-modal-inner{width:305px;height:380px}.ulf-icon-dialog .ulf-modal-content{height:267px}.ulf-modal-icon .ulf-modal-inner{width:330px;height:385px}.ulf-modal-icon .ulf-modal-content{height:252px}.ulf-profile-options>.ulf-field>.ulf-title,.ulf-taxonomy-edit-fields>.ulf-field>.ulf-title{float:none;width:100%;margin-bottom:10px}.ulf-profile-options>.ulf-field>.ulf-fieldset,.ulf-taxonomy-edit-fields>.ulf-field>.ulf-fieldset{float:none;width:100%}.ulf-nav-menu-options>.ulf-fields{margin-left:-10px;margin-right:-10px}.ulf-nav-menu-options>.ulf-fields>.ulf-field{padding:10px}}.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;user-select:none}.chosen-container *{box-sizing:border-box}.chosen-container .chosen-drop{position:absolute;top:100%;z-index:1010;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15);clip:rect(0,0,0,0);clip-path:inset(100% 100%)}.chosen-container.chosen-with-drop .chosen-drop{clip:auto;clip-path:none}.chosen-container a{cursor:pointer}.chosen-container .chosen-single .group-name,.chosen-container .search-choice .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}.chosen-container .chosen-single .group-name:after,.chosen-container .search-choice .group-name:after{content:":";padding-left:2px;vertical-align:top}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:25px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;font-size:1px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;clip:rect(0,0,0,0);clip-path:inset(100% 100%)}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto;border:1px solid #aaa;background-color:#fff;background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:0;outline:0;border:0!important;background:0 0!important;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0;width:25px;height:25px;min-height:25px}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 6px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:0;right:0;display:block;width:12px;height:12px;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;border-bottom-right-radius:0;border-bottom-left-radius:0;background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:none}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;direction:rtl}
1
+ .ulf{position:relative}.ulf label{padding:0;margin:0;display:inline-block}.ulf-ab-icon{top:2px}#screen-meta-links+.ulf-options{margin-top:40px}.ulf-options{margin-top:20px;margin-right:20px}.ulf-header{position:relative}.ulf-header-inner{padding:25px;transition:box-shadow .3s ease}.ulf-header-inner h1{float:left;font-size:1.5em;line-height:26px;font-weight:400;margin:0}.ulf-header-inner h1 small{font-size:11px;font-weight:500}.ulf-sticky .ulf-header-inner{position:fixed;z-index:99;top:32px;box-shadow:0 5px 10px rgba(0,0,0,.1)}.ulf-buttons{float:right}.ulf-buttons .button{margin:0 2px;line-height:26px}.ulf-buttons .button:focus{outline:0!important;box-shadow:none!important}.ulf-buttons .ulf-save{min-width:72px}.ulf-header-left{float:left}.ulf-header-right{float:right}.ulf-nav{display:block;position:relative;z-index:10;float:left}.ulf-nav ul{clear:left;margin:0;list-style-type:none}.ulf-nav ul li{margin-bottom:0}.ulf-nav ul li a{font-size:13px;position:relative;display:block;padding:14px 12px;text-decoration:none;transition-property:color,background;transition-duration:.2s;transition-timing-function:ease}.ulf-nav ul li a:focus{outline:0;box-shadow:none}.ulf-nav ul li .ulf-arrow:after{content:"\f054";display:inline-block;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:9px;line-height:1;position:absolute;right:10px;top:50%;margin-top:-4px}.ulf-nav ul li.ulf-tab-expanded .ulf-arrow:after{transform:rotate(90deg)}.ulf-nav ul li.ulf-tab-expanded ul{display:block}.ulf-nav ul ul{display:none;position:relative}.ulf-nav ul ul li a{font-size:12px;padding:12px 14px 12px 24px}.ulf-nav .ulf-tab-icon{width:20px;margin-right:5px;font-size:13px;text-align:center}.ulf-nav .ulf-label-error{margin-left:4px;vertical-align:top}.ulf-nav-normal{width:225px}.ulf-nav-normal+.ulf-content{margin-left:225px}.ulf-nav-inline{width:100%}.ulf-nav-inline ul li{display:inline-block;vertical-align:top}.ulf-nav-background{position:absolute;top:0;left:0;bottom:0;z-index:9;width:225px}.ulf-wrapper{position:relative}.ulf-content{position:relative;background-color:#fff}.ulf-sections{float:left;width:100%}.ulf-section-title{display:none;padding:20px 30px;background-color:#f5f5f5;border-top:1px solid #eee;border-bottom:1px solid #eee}.ulf-section-title h3{margin:0;padding:0;font-size:13px;font-weight:700;text-transform:uppercase}.ulf-section-title .ulf-section-icon{margin-right:5px}.ulf-footer{padding:20px;font-size:11px}.ulf-copyright{float:left;margin-top:5px}.ulf-search-all .ulf-nav,.ulf-search-all .ulf-nav-background,.ulf-show-all .ulf-nav,.ulf-show-all .ulf-nav-background{display:none}.ulf-search-all .ulf-content,.ulf-show-all .ulf-content{margin-left:0}.ulf-search-all .ulf-section,.ulf-search-all .ulf-section-title,.ulf-show-all .ulf-section,.ulf-show-all .ulf-section-title{display:block!important}.ulf-search-all .ulf-section-title{display:none!important}.ulf-expand-all{float:left;padding:0 8px;margin-right:4px;z-index:1;font-size:13px;line-height:30px;cursor:pointer;user-select:none;border-radius:2px;transition:all .2s}.ulf-expand-all span{font-size:11px;vertical-align:middle}.ulf-search{float:left}.ulf-search input{margin:0 2px 0 0;border:none;font-size:12px;line-height:30px;min-height:30px;text-align:inherit;padding:0 10px;border-radius:2px;box-shadow:none}.ulf-search input:focus{box-shadow:none}.ulf-saving .ulf-buttons,.ulf-saving .ulf-content{cursor:default;pointer-events:none;opacity:.5}.ulf-metabox{margin:-6px -12px -12px -12px}.ulf-metabox .ulf-field{padding:20px}.ulf-metabox .ulf-section-title{padding:20px}.block-editor-page .ulf-metabox{margin:-6px -14px -14px -14px}.block-editor-editor-skeleton__content .ulf-metabox{border-left:1px solid #e2e4e7;border-right:1px solid #e2e4e7}.ulf-sections-reset{float:left;width:100%;text-align:right;border-top:1px solid #eee}.ulf-sections-reset .ulf-button-cancel,.ulf-sections-reset input{display:none}.ulf-sections-reset label{padding:10px}.ulf-sections-reset span{-webkit-user-select:none;user-select:none}.ulf-sections-reset input:checked~.ulf-button-reset{display:none}.ulf-sections-reset input:checked~.ulf-button-cancel{display:inline-block}#side-sortables .ulf-section-title{padding:12px}#side-sortables .ulf-field{padding:10px 15px}#side-sortables .ulf-field .ulf-title{float:none;width:100%;margin-bottom:6px}#side-sortables .ulf-field .ulf-fieldset{float:none;width:100%}#side-sortables .ulf-field-text input{width:100%}#side-sortables .ulf-notice{padding:10px 15px}.ulf-comment-metabox{margin:-6px -12px -12px -12px}.ulf-comment-metabox .ulf-field{padding:20px}.ulf-comment-metabox .ulf-section-title{padding:20px}.ulf-tooltip{position:absolute;z-index:5000001;font-size:12px;line-height:1.4;text-align:center;text-decoration:none;padding:6px 12px;max-width:200px;color:#fff;background-color:#000;background-color:rgba(0,0,0,.85);border-radius:4px}.ulf-theme-dark .ulf-header-inner{background-color:#050505}.ulf-theme-dark .ulf-header-inner h1{color:#fff}.ulf-theme-dark .ulf-header-inner h1 small{color:#555}.ulf-theme-dark .ulf-expand-all{color:#999;background-color:#222}.ulf-theme-dark .ulf-expand-all:hover{color:#fff;background-color:#333}.ulf-theme-dark .ulf-search input{color:#fff;background-color:#222}.ulf-theme-dark .ulf-search:focus{background-color:#444}.ulf-theme-dark .ulf-search::-webkit-input-placeholder{color:#666}.ulf-theme-dark .ulf-nav ul li a{color:#999;border-color:#2f2f2f;background-color:#222}.ulf-theme-dark .ulf-nav ul li a:hover{color:#fff}.ulf-theme-dark .ulf-nav ul li .ulf-active{color:#fff;background-color:#111}.ulf-theme-dark .ulf-nav ul ul li a{border-color:#2f2f2f;background-color:#191919}.ulf-theme-dark .ulf-nav ul ul li .ulf-active{background-color:#101010}.ulf-theme-dark .ulf-nav ul ul:before{background-color:rgba(34,34,34,.75)}.ulf-theme-dark .ulf-nav>ul>li:last-child>a{border:none}.ulf-theme-dark .ulf-nav-normal ul li a{border-bottom-width:1px;border-bottom-style:solid}.ulf-theme-dark .ulf-nav-normal ul li .ulf-active:after{content:" ";position:absolute;right:0;top:50%;height:0;width:0;pointer-events:none;border:solid transparent;border-right-color:#fff;border-width:4px;margin-top:-4px}.ulf-theme-dark .ulf-nav-inline{background-color:#222}.ulf-theme-dark .ulf-nav-inline ul li a{text-align:center;border-right-width:1px;border-right-style:solid}.ulf-theme-dark .ulf-nav-inline ul li .ulf-active:after{content:" ";position:absolute;left:50%;bottom:0;height:0;width:0;pointer-events:none;border:solid transparent;border-bottom-color:#fff;border-width:4px;margin-left:-4px}.ulf-theme-dark .ulf-nav-background{background-color:#222}.ulf-theme-dark .ulf-footer{color:#555;background-color:#050505}.ulf-theme-light .ulf-container{border:1px solid #ccd0d4;box-shadow:0 0 15 rgba(0,0,0,.04)}.ulf-theme-light .ulf-header-inner{border-bottom:1px solid #ccd0d4;background-color:#f5f5f5;background:linear-gradient(#fefefe,#f5f5f5)}.ulf-theme-light .ulf-header-inner h1 small{color:#999}.ulf-theme-light .ulf-expand-all{color:#999;background-color:#eee}.ulf-theme-light .ulf-expand-all:hover{color:#555}.ulf-theme-light .ulf-search input{color:#555;background-color:#eee}.ulf-theme-light .ulf-search input::-webkit-input-placeholder{color:#999}.ulf-theme-light .ulf-nav ul li a{font-weight:500;color:#444;background-color:#f5f5f5}.ulf-theme-light .ulf-nav ul li a:hover{color:#111;background-color:#fff}.ulf-theme-light .ulf-nav ul li .ulf-active{color:#111;background-color:#fff}.ulf-theme-light .ulf-nav ul ul li a{background-color:#eee}.ulf-theme-light .ulf-nav-normal>ul{margin-right:-1px;margin-bottom:-1px}.ulf-theme-light .ulf-nav-normal>ul li a{border-bottom:1px solid #ccd0d4;border-right:1px solid #ccd0d4}.ulf-theme-light .ulf-nav-normal>ul li .ulf-active{border-right-color:#fff}.ulf-theme-light .ulf-nav-inline{background-color:#f5f5f5;border-bottom:1px solid #ccd0d4}.ulf-theme-light .ulf-nav-inline>ul{margin-bottom:-1px}.ulf-theme-light .ulf-nav-inline>ul li a{text-align:center;border-right:1px solid #ccd0d4;border-bottom:1px solid #ccd0d4}.ulf-theme-light .ulf-nav-inline>ul li .ulf-active{border-bottom-color:#fff}.ulf-theme-light .ulf-nav-inline>ul ul{display:none!important}.ulf-theme-light .ulf-nav-inline .ulf-arrow:after{display:none}.ulf-theme-light .ulf-nav-background{background-color:#f5f5f5;border-right:1px solid #ccd0d4}.ulf-theme-light .ulf-footer{color:#555;border-top:1px solid #ccd0d4;background-color:#f5f5f5;background:linear-gradient(#fafafa,#f5f5f5)}.ulf-field{position:relative;padding:30px}.ulf-field+.ulf-field{border-top:1px solid #eee}.ulf-field p:first-child{margin-top:0}.ulf-field p:last-child{margin-bottom:0}.ulf-field:after,.ulf-field:before{content:" ";display:table}.ulf-field:after{clear:both}.ulf-field h4{margin-top:0}.ulf-field .ulf-title{position:relative;width:20%;float:left}.ulf-field .ulf-title h4{margin:0;color:#23282d}.ulf-field .ulf-fieldset{float:right;width:calc(80% - 20px)}.ulf-pseudo-field{padding:0 5px 0 0!important;display:inline-block}.ulf-pseudo-field+.ulf-pseudo-field{border:0}.ulf-pseudo-field pre{display:none}.ulf-field-accordion .ulf-accordion-item{position:relative;margin-bottom:5px}.ulf-field-accordion .ulf-accordion-item:last-child{margin-bottom:0}.ulf-field-accordion .ulf-accordion-item h4{font-size:1em}.ulf-field-accordion .ulf-accordion-title{display:block;cursor:pointer;position:relative;margin:0;padding:15px;min-height:0;font-size:100%;user-select:none;border:1px solid #ccd0d4;background-color:#fafafa;box-shadow:0 1px 1px rgba(0,0,0,.04);transition:border-color .15s}.ulf-field-accordion .ulf-accordion-title:active,.ulf-field-accordion .ulf-accordion-title:focus,.ulf-field-accordion .ulf-accordion-title:hover{outline:0;border-color:#999}.ulf-field-accordion .ulf-accordion-title .ulf--icon{width:20px;text-align:center;margin-right:2px}.ulf-field-accordion .ulf-accordion-icon{width:16px;text-align:center}.ulf-field-accordion .ulf-accordion-content{display:none;padding:0;border:1px solid #ccd0d4;border-top:none;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ulf-field-accordion .ulf-accordion-content>.ulf-field{padding:15px}.ulf-field-accordion .ulf-accordion-open{display:block}.ulf-field-background .ulf-field{border:0!important;padding:0;margin-bottom:6px;margin-right:6px}.ulf-field-background .ulf--title{color:#777;font-size:12px}.ulf-field-background .ulf--background-colors{display:flex;flex-wrap:wrap}.ulf-field-background .ulf--background-attributes{display:flex;flex-wrap:wrap}.ulf-field-background .ulf--background-attributes select{min-width:100%;margin:0}.ulf-field-background .ulf--background-attributes .ulf-field{flex:1}.ulf-field-background .ulf--attributes-hidden{display:none}.ulf-field-backup textarea{width:100%;min-height:200px;margin-bottom:5px}.ulf-field-backup small{display:inline-block;margin:5px}.ulf-field-backup hr{margin:20px 0;border:none;border-bottom:1px solid #e5e5e5}.ulf-field-border .ulf--inputs,.ulf-field-dimensions .ulf--inputs,.ulf-field-spacing .ulf--inputs{float:left;display:flex;flex-wrap:wrap}.ulf-field-border .ulf--input,.ulf-field-dimensions .ulf--input,.ulf-field-spacing .ulf--input{display:flex;padding-right:6px;padding-bottom:4px;box-sizing:border-box}.ulf-field-border .ulf--input select,.ulf-field-dimensions .ulf--input select,.ulf-field-spacing .ulf--input select{margin:0}.ulf-field-border .ulf--input input,.ulf-field-dimensions .ulf--input input,.ulf-field-spacing .ulf--input input{position:relative;z-index:1;margin:0;width:65px;max-width:100%;text-align:center}.ulf-field-border .ulf--color,.ulf-field-dimensions .ulf--color,.ulf-field-spacing .ulf--color{float:left}.ulf-field-border .ulf--label,.ulf-field-dimensions .ulf--label,.ulf-field-spacing .ulf--label{display:flex;flex-direction:column;justify-content:center;user-select:none;min-width:20px;max-width:100%;padding:0 4px;font-size:12px;text-align:center;color:#555;border:1px solid #7b776c;background-color:#f5f5f5}.ulf-field-border .ulf--icon,.ulf-field-dimensions .ulf--icon,.ulf-field-spacing .ulf--icon{border-right:0;border-radius:4px 0 0 4px}.ulf-field-border .ulf--icon+input,.ulf-field-dimensions .ulf--icon+input,.ulf-field-spacing .ulf--icon+input{border-top-left-radius:0;border-bottom-left-radius:0}.ulf-field-border .ulf--unit,.ulf-field-dimensions .ulf--unit,.ulf-field-spacing .ulf--unit{border-left:0;border-radius:0 4px 4px 0}.ulf-field-border .ulf--is-unit,.ulf-field-dimensions .ulf--is-unit,.ulf-field-spacing .ulf--is-unit{border-top-right-radius:0;border-bottom-right-radius:0}.ulf-field-button_set .ulf--buttons{display:inline-block}.ulf-field-button_set .ulf--button{position:relative;z-index:1;float:left;cursor:pointer;padding:7px 14px;min-width:16px;text-align:center;color:#555;border:1px solid #ccc;background-color:#f7f7f7;user-select:none;box-shadow:0 1px 0 rgba(0,0,0,.1)}.ulf-field-button_set .ulf--button:first-child{border-radius:4px 0 0 4px}.ulf-field-button_set .ulf--button:last-child{border-radius:0 4px 4px 0}.ulf-field-button_set .ulf--button:not(:first-child){margin-left:-1px}.ulf-field-button_set .ulf--button:hover{background-color:#eee}.ulf-field-button_set .ulf--active,.ulf-field-button_set .ulf--active:hover{z-index:2;color:#fff;border-color:#006799;background-color:#0085ba}.ulf-field-button_set input{display:none}.ulf-field-checkbox ul,.ulf-field-radio ul{margin:0;padding:0;list-style-type:none;overflow-y:auto;max-height:305px}.ulf-field-checkbox ul li,.ulf-field-radio ul li{margin-bottom:6px}.ulf-field-checkbox ul ul,.ulf-field-radio ul ul{max-height:none}.ulf-field-checkbox ul ul li,.ulf-field-radio ul ul li{margin-left:8px}.ulf-field-checkbox ul ul li:first-child,.ulf-field-radio ul ul li:first-child{margin-left:0}.ulf-field-checkbox input,.ulf-field-radio input{margin:0 1px}.ulf-field-checkbox .ulf--inline-list li,.ulf-field-radio .ulf--inline-list li{display:inline-block;margin-right:15px}.ulf-field-checkbox .ulf--text,.ulf-field-radio .ulf--text{margin-left:5px;vertical-align:middle}.ulf-field-checkbox .ulf-checker,.ulf-field-radio .ulf-checker{cursor:pointer}.ulf-field-code_editor .CodeMirror{width:100%;height:400px}.ulf-field-code_editor .cm-s-default{border:1px solid #ccd0d4}.ulf-field-code_editor textarea{width:100%;height:400px}.ulf-field-color>input{opacity:.75;width:115px;max-width:100%}.ulf-field-color .button.wp-picker-clear{padding:0 8px;margin-left:6px;line-height:2.54545455;min-height:30px}.ulf-field-color_group .ulf--left{float:left;margin-right:10px;margin-bottom:5px}.ulf-field-color_group .ulf--title{color:#999;margin-bottom:5px}.ulf-field-fieldset .ulf-fieldset-content{border:1px solid #ccd0d4;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ulf-field-fieldset .ulf-fieldset-content>.ulf-field{padding:15px}.ulf-field-fieldset .ulf-field-subheading{font-size:13px}.ulf-field-date input{margin:0}.ulf-field-date .ulf--to{margin-left:7px}.ulf-datepicker-wrapper{margin-top:5px;width:auto;background-color:#fff;z-index:9999999!important;box-shadow:0 0 30px rgba(0,0,0,.15)}.ulf-datepicker-wrapper *{float:none;margin:0;padding:0;font-family:inherit;font-weight:400;font-style:normal;text-decoration:none;border:0;border-radius:0;box-shadow:none}.ulf-datepicker-wrapper .ui-datepicker-header,.ulf-datepicker-wrapper .ui-widget-header{color:#fff;background:#00a0d2}.ulf-datepicker-wrapper .ui-datepicker-header .ui-state-hover{cursor:pointer}.ulf-datepicker-wrapper .ui-datepicker-title{font-size:14px;line-height:40px;text-align:center}.ulf-datepicker-wrapper .ui-datepicker-next,.ulf-datepicker-wrapper .ui-datepicker-prev{position:static;top:auto;left:auto;right:auto;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:12px;text-align:center;width:41px;height:40px;line-height:40px;color:#fff;background-color:rgba(255,255,255,.1);text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ulf-datepicker-wrapper .ui-datepicker-next span,.ulf-datepicker-wrapper .ui-datepicker-prev span{display:none}.ulf-datepicker-wrapper .ui-datepicker-prev{float:left}.ulf-datepicker-wrapper .ui-datepicker-next{float:right}.ulf-datepicker-wrapper .ui-datepicker-prev:before{content:'\f053'}.ulf-datepicker-wrapper .ui-datepicker-next:before{content:'\f054'}.ulf-datepicker-wrapper .ui-datepicker-next-hover,.ulf-datepicker-wrapper .ui-datepicker-prev-hover{opacity:.75}.ulf-datepicker-wrapper tbody .ui-datepicker-week-col{background-color:#f7f7f7}.ulf-datepicker-wrapper .ui-datepicker-buttonpane{padding:10px;text-align:center;background-color:#f7f7f7}.ulf-datepicker-wrapper .ui-datepicker-buttonpane button{cursor:pointer;margin:0 5px;padding:7px 14px;border:1px solid #eee;background-color:#fff}.ulf-datepicker-wrapper select{margin:0 4px}.ulf-datepicker-wrapper select option{color:#555}.ulf-datepicker-wrapper table{font-size:13px;border-collapse:collapse;width:100%}.ulf-datepicker-wrapper thead{color:#fff;background:#32373c}.ulf-datepicker-wrapper th{text-align:center;padding:7px;border:1px solid #444}.ulf-datepicker-wrapper td{text-align:center;border:1px solid #f4f4f4}.ulf-datepicker-wrapper td.ui-datepicker-other-month{border:transparent}.ulf-datepicker-wrapper td .ui-state-default{color:#555;width:auto;display:block;padding:6px 12px}.ulf-datepicker-wrapper td .ui-state-active,.ulf-datepicker-wrapper td .ui-state-hover{color:#fff;background-color:#0073aa}.ulf-datepicker-wrapper td.ui-state-disabled .ui-state-default{opacity:.5}.ulf-field-gallery input{display:none}.ulf-field-gallery ul{margin:0;padding:0;list-style-type:none}.ulf-field-gallery ul li{display:inline-block;position:relative;padding:4px;margin:0 5px 10px 0;border:1px solid #ccc;background-color:#f9f9f9;border-radius:2px;box-shadow:0 1px 0 rgba(0,0,0,.08)}.ulf-field-gallery ul li img{max-height:60px;display:inline-block;vertical-align:middle}.ulf-field-gallery .button{margin-right:5px;margin-bottom:5px}.ulf-field-group .ulf-cloneable-hidden{display:none!important}.ulf-field-group .ulf-cloneable-wrapper{position:relative}.ulf-field-group .ulf-cloneable-item{display:none;position:relative;margin-bottom:5px}.ulf-field-group .ulf-cloneable-item h4{font-size:1em}.ulf-field-group .ui-accordion .ulf-cloneable-item{display:block}.ulf-field-group .ulf-cloneable-content{border:1px solid #ccd0d4;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ulf-field-group .ulf-cloneable-content>.ulf-field{padding:15px}.ulf-field-group .ulf-cloneable-title{display:block;cursor:pointer;position:relative;user-select:none;margin:0;padding:15px 65px 15px 10px;min-height:0;font-size:100%;border:1px solid #ccd0d4;background-color:#fafafa;box-shadow:0 1px 1px rgba(0,0,0,.04);transition:border-color .15s}.ulf-field-group .ulf-cloneable-title:active,.ulf-field-group .ulf-cloneable-title:focus,.ulf-field-group .ulf-cloneable-title:hover{border-color:#999;outline:0}.ulf-field-group .ulf-cloneable-helper{position:absolute;top:12px;right:10px;z-index:1;font-size:14px;line-height:1em}.ulf-field-group .ulf-cloneable-helper i{display:inline-block;cursor:pointer;padding:5px;color:#999}.ulf-field-group .ulf-cloneable-helper i:hover{color:#555}.ulf-field-group .ulf-cloneable-content{padding:0;border-top:0}.ulf-field-group .ulf-cloneable-title-number,.ulf-field-group .ulf-cloneable-title-prefix{margin-right:5px}.ulf-field-group .ulf-cloneable-alert{display:none;margin-bottom:5px;padding:10px 20px;color:#a94442;border:1px solid #ebccd1;background-color:#f2dede}.ulf-field-group .widget-placeholder{margin-bottom:10px;border:1px dashed #f1c40f;background-color:#fffae4}.ulf-field-group .ulf-cloneable-header-icon{display:inline-block;text-align:center;font-size:14px;width:17px;text-indent:0;vertical-align:text-top}.ulf-field-group .ulf-cloneable-placeholder{background-color:#ddd;margin-top:4px;width:100px;height:10px;font-size:10px;line-height:10px;display:inline-block;vertical-align:top;border-radius:2px}.ulf-field-icon input{display:none}.ulf-field-icon .button{margin-right:5px}.ulf-field-icon .ulf-icon-preview i{display:inline-block;font-size:16px;width:30px;height:28px;line-height:28px;margin-right:5px;text-align:center;vertical-align:top;color:#555;border:1px solid #ccc;background-color:#f7f7f7;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.08)}.ulf-field-image_select .ulf--image{display:inline-block;margin:0 5px 5px 0}.ulf-field-image_select .ulf--inline-list .ulf--image{display:block}.ulf-field-image_select figure{cursor:pointer;position:relative;display:inline-block;max-width:100%;margin:0;vertical-align:bottom;border:2px solid transparent;background-color:#fff;user-select:none;transition:all .2s}.ulf-field-image_select figure:before{position:absolute;top:0;left:0;text-align:center;font-size:10px;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;content:"\f00c";width:16px;height:16px;line-height:14px;opacity:0;color:#fff;background-color:#222;transition:opacity .2s}.ulf-field-image_select .ulf--active figure{border-color:#222;box-shadow:0 0 20px rgba(0,0,0,.2)}.ulf-field-image_select .ulf--active figure:before{opacity:1}.ulf-field-image_select img{max-width:100%;height:auto;vertical-align:top}.ulf-field-image_select input{display:none}.ulf-field-link_color .ulf--left{float:left;margin-right:10px;margin-bottom:5px}.ulf-field-link_color .ulf--title{color:#777;margin-bottom:5px}.ulf-field-map input{width:100%}.ulf-field-map input[type=text].ui-autocomplete-loading{background-position-x:calc(100% - 5px)}.ulf-field-map .ulf--map-search+.ulf--map-osm-wrap{margin-top:10px}.ulf-field-map .ulf--map-osm-wrap{position:relative;padding:5px;border:1px solid #eee;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ulf-field-map .ulf--map-osm{position:relative;z-index:1;min-height:250px}.ulf-field-map .ulf--map-inputs{margin-top:10px;display:flex;justify-content:space-between}.ulf-field-map .ulf--map-input{flex:1}.ulf-field-map .ulf--map-input:last-child{padding-left:10px}.ulf-field-map label{display:block;color:#777;font-size:12px;margin:0 0 2px 0}.ulf-map-ui-autocomplate{z-index:999999;border-radius:4px;overflow:hidden}.ulf-field-media .ulf--placeholder{display:flex;align-items:flex-start}.ulf-field-media .ulf--placeholder input{width:100%;margin:0}.ulf-field-media .button{margin-left:5px}.ulf-field-media .hidden+.button{margin-left:0}.ulf-field-media .ulf--preview{position:relative}.ulf-field-media .ulf--preview .fa-times{position:absolute;z-index:1;right:2px;top:2px;font-size:14px;width:22px;height:22px;line-height:22px;text-align:center;text-decoration:none;color:#fff;background-color:#d33;opacity:.75;border-radius:2px;transition:all .2s}.ulf-field-media .ulf--preview .fa-times:hover{opacity:1}.ulf-field-media .ulf--preview .fa-times:focus{box-shadow:none}.ulf-field-palette .ulf--palette{position:relative;display:inline-block;cursor:pointer;border:2px solid #ddd;margin-right:10px;margin-bottom:10px;user-select:none;-webkit-user-select:none;transition:all .2s}.ulf-field-palette .ulf--palette span{vertical-align:middle;display:inline-block;width:22px;height:60px;line-height:60px;overflow:hidden;text-indent:-999px}.ulf-field-palette .ulf--palette:before{position:absolute;top:0;left:0;text-align:center;font-size:10px;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;content:"\f00c";width:16px;height:16px;line-height:14px;opacity:0;color:#fff;background-color:#222;transition:opacity .2s}.ulf-field-palette .ulf--active{border-color:#222;box-shadow:0 0 20px rgba(0,0,0,.2)}.ulf-field-palette .ulf--active:before{opacity:1}.ulf-field-palette input{display:none}.ulf-field-repeater .ulf-field-text input{width:100%}.ulf-field-repeater .ulf-repeater-hidden{display:none!important}.ulf-field-repeater .ulf-repeater-wrapper .ulf-repeater-item{display:table;width:100%;margin-bottom:5px;border:1px solid #eee}.ulf-field-repeater .ulf-repeater-wrapper .ulf-repeater-item h4{font-size:1em}.ulf-field-repeater .ulf-repeater-content{width:100%;display:table-cell;vertical-align:middle;background-color:#fff}.ulf-field-repeater .ulf-repeater-content>.ulf-field{padding:15px}.ulf-field-repeater .ulf-repeater-helper{width:100%;display:table-cell;vertical-align:middle;text-align:center;font-size:14px;line-height:1em;border-left:1px solid #eee;background-color:#f7f7f7}.ulf-field-repeater .ulf-repeater-helper i{display:inline-block;cursor:pointer;color:#999;padding:5px}.ulf-field-repeater .ulf-repeater-helper i:hover{color:#555}.ulf-field-repeater .ulf-repeater-helper-inner{width:75px}.ulf-field-repeater .ulf-repeater-alert{display:none;margin-bottom:5px;padding:10px 20px;color:#a94442;border:1px solid #ebccd1;background-color:#f2dede}.ulf-field-repeater .widget-placeholder{height:50px;margin-bottom:3px;border:1px dashed #f1c40f;background-color:#fffae4}.ulf-field-repeater .ui-sortable-helper{height:50px!important;overflow:hidden!important;border-color:#ccc!important;background-color:#eee!important;opacity:.5}.ulf-field-repeater .ui-sortable-helper .ulf-repeater-content,.ulf-field-repeater .ui-sortable-helper .ulf-repeater-helper{display:none}.ulf-field-select .ulf-fieldset{min-height:30px}.ulf-field-select .ulf-chosen{display:none}.ulf-field-select select{max-width:100%;margin:0}.ulf-field-slider .ulf--wrap{display:flex;align-items:center}.ulf-field-slider .ulf--input{display:flex}.ulf-field-slider .ulf--unit{display:flex;justify-content:center;flex-direction:column;user-select:none;padding:0 6px;font-size:11px;line-height:1;border-radius:0 4px 4px 0;color:#555;border:1px solid #7e8993;border-left:0;background-color:#f5f5f5}.ulf-field-slider .ulf-slider-ui{margin-right:15px}.ulf-field-slider input[type=number]{position:relative;z-index:1;margin:0;width:50px;text-align:center}.ulf-field-slider .ulf--is-unit{border-top-right-radius:0;border-bottom-right-radius:0}.ulf-field-slider .ui-slider{position:relative;width:100%;height:3px;border:none;background:#ddd;border-radius:2px}.ulf-field-slider .ui-slider-range{height:3px;border:none;background:#333;border-radius:2px}.ulf-field-slider .ui-slider-handle{position:absolute;width:16px;height:16px;top:-7px;margin-left:-8px;border:none;background:#333;border-radius:2px}.ulf-field-slider .ui-slider-handle:hover,.ulf-field-slider .ui-state-active{cursor:pointer;background:#111}.ulf-field-sortable .ulf-field-text input{width:100%;max-width:100%}.ulf-field-sortable .ulf-sortable .ulf-sortable-item{display:table;width:100%;margin-bottom:5px;border:1px solid #eee}.ulf-field-sortable .ulf-sortable .ulf-sortable-item h4{font-size:1em}.ulf-field-sortable .ulf-sortable-content{width:100%;display:table-cell;vertical-align:middle;background-color:#fff}.ulf-field-sortable .ulf-sortable-content>.ulf-field{padding:15px}.ulf-field-sortable .ulf-sortable-helper{width:100%;display:table-cell;vertical-align:middle;text-align:center;font-size:14px;line-height:1em;border-left:1px solid #eee;background-color:#f7f7f7}.ulf-field-sortable .ulf-sortable-helper i{display:inline-block;cursor:pointer;width:50px;color:#555}.ulf-field-sortable .ulf-sortable-helper i:hover{opacity:.5}.ulf-field-sortable .widget-placeholder{height:50px;margin-bottom:3px;border:1px dashed #f1c40f;background-color:#fffae4}.ulf-field-sortable .ui-sortable-helper{height:50px!important;overflow:hidden!important;border-color:#ccc!important;background-color:#eee!important;opacity:.5}.ulf-field-sortable .ui-sortable-helper .ulf-sortable-content,.ulf-field-sortable .ui-sortable-helper .ulf-sortable-helper{display:none}.ulf-field-sorter .ui-sortable-placeholder{height:20px;border:1px dashed #f1c40f;background-color:#fffae4}.ulf-field-sorter .ulf-modules{float:left;width:50%;box-sizing:border-box}.ulf-field-sorter .ulf-modules:first-child{padding-right:15px}.ulf-field-sorter .ulf-modules:last-child{padding-left:15px}.ulf-field-sorter .ulf-disabled,.ulf-field-sorter .ulf-enabled{padding:5px 15px;border:1px dashed #ddd;background-color:#fff}.ulf-field-sorter .ulf-disabled li{opacity:.5;transition:opacity .15s}.ulf-field-sorter .ulf-disabled .ui-sortable-helper{opacity:1}.ulf-field-sorter .ulf-sorter-title{font-size:13px;font-weight:600;padding:10px;text-align:center;border:1px dashed #ddd;border-bottom:none;background-color:#f8f8f8;text-transform:uppercase}.ulf-field-sorter ul{list-style-type:none;margin:0;padding:0;min-height:62px}.ulf-field-sorter ul li{margin:10px 0;padding:10px 15px;cursor:move;font-weight:700;text-align:center;border:1px solid #e5e5e5;background-color:#fafafa;transition:border-color .15s}.ulf-field-sorter ul li:hover{border-color:#bbb}.ulf-field-spinner .ulf--spin{display:flex}.ulf-field-spinner .ui-spinner{display:flex}.ulf-field-spinner .ui-button{display:flex;flex-direction:column;justify-content:center;text-align:center;min-width:20px;padding:0 4px;color:#555;border:1px solid #7e8993;background-color:#f5f5f5}.ulf-field-spinner .ui-spinner-button{cursor:pointer}.ulf-field-spinner .ui-spinner-button:hover{background-color:#e7e7e7}.ulf-field-spinner .ui-spinner-button:active{background-color:#ddd}.ulf-field-spinner .ui-spinner-button:before{font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:14px;line-height:14px}.ulf-field-spinner .ui-spinner-down{order:1;border-right:0;border-radius:4px 0 0 4px}.ulf-field-spinner .ui-spinner-down:before{content:"\f0d9"}.ulf-field-spinner .ui-spinner-input{order:2}.ulf-field-spinner .ulf--unit{order:3;border-left:0;user-select:none}.ulf-field-spinner .ui-spinner-up{order:4;border-left:0;border-radius:0 4px 4px 0}.ulf-field-spinner .ui-spinner-up:before{content:"\f0da"}.ulf-field-spinner input{position:relative;z-index:1;width:50px;text-align:center;margin:0;padding:0 8px;border-radius:0}.ulf-field-spinner .ui-button-icon,.ulf-field-spinner .ui-button-icon-space,.ulf-field-spinner .ui-button-text{display:none}.ulf-field-switcher .ulf--switcher{float:left;cursor:pointer;position:relative;width:60px;height:26px;padding:0;margin:0;overflow:hidden;border-radius:4px;background-color:#ed6f6f;user-select:none;-webkit-user-select:none}.ulf-field-switcher .ulf--ball{position:absolute;top:4px;left:4px;width:24px;height:18px;background-color:#fff;border-radius:4px;transition:all .1s;box-shadow:1px 1px 1px rgba(0,0,0,.15)}.ulf-field-switcher .ulf--off,.ulf-field-switcher .ulf--on{position:absolute;top:0;left:0;right:0;font-size:11px;line-height:26px;font-weight:500;font-style:normal;text-align:center;text-transform:uppercase;color:#fff;padding-right:28px;opacity:0;transition:all .1s}.ulf-field-switcher .ulf--off{padding-right:0;padding-left:28px;opacity:1}.ulf-field-switcher .ulf--active{background:#4fb845}.ulf-field-switcher .ulf--active .ulf--on{opacity:1}.ulf-field-switcher .ulf--active .ulf--off{opacity:0}.ulf-field-switcher .ulf--active .ulf--ball{left:100%;margin-left:-28px}.ulf-field-switcher .ulf--label{float:left;margin-top:4px;margin-left:8px;font-weight:400;color:#999}.ulf-field-switcher input{display:none}.ulf-field-tabbed .ulf-tabbed-content{border:1px solid #ccd0d4;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ulf-field-tabbed .ulf-tabbed-content>.ulf-field{padding:15px}.ulf-field-tabbed .ulf-tabbed-nav .ulf--icon{padding-right:5px}.ulf-field-tabbed .ulf-tabbed-nav a{display:inline-block;padding:12px 15px;margin-top:1px;margin-right:5px;margin-bottom:-1px;position:relative;text-decoration:none;color:#444;font-weight:600;border:1px solid #ccd0d4;background-color:#f3f3f3;transition:all .2s}.ulf-field-tabbed .ulf-tabbed-nav a:hover{background-color:#f9f9f9}.ulf-field-tabbed .ulf-tabbed-nav a.ulf-tabbed-active{background-color:#fff;border-bottom-color:#fff}.ulf-field-tabbed .ulf-tabbed-nav a:focus{outline:0;box-shadow:none}.ulf-field-text input{width:50%;max-width:100%;margin:0}.ulf-field-textarea textarea{width:100%;max-width:100%;min-height:125px}.ulf-field-textarea .ulf-shortcode-button{margin-bottom:10px;margin-right:5px}.ulf-field-typography select,.ulf-field-typography textarea{margin:0;min-width:100%;max-width:100%}.ulf-field-typography .ulf--title{color:#777;margin:0 0 2px 0;font-size:12px}.ulf-field-typography .ulf--title small{vertical-align:top}.ulf-field-typography .ulf--blocks{display:flex;flex-wrap:wrap}.ulf-field-typography .ulf--block{flex:1;max-width:100%;padding-right:6px;padding-bottom:6px}.ulf-field-typography .ulf--input{margin:0;min-width:100%}.ulf-field-typography .ulf--input-wrap{position:relative}.ulf-field-typography .ulf--unit{position:absolute;z-index:1;right:4px;top:4px;bottom:4px;padding:2px 6px;color:#666;font-size:11px;line-height:1;border-radius:2px;background:#eee;user-select:none;display:flex;justify-content:center;flex-direction:column}.ulf-field-typography .ulf--preview{font-size:16px;line-height:20px;padding:20px;color:#222;border:1px solid #eee;background-color:#fff;border-radius:2.5px;user-select:none;-webkit-user-select:none;transition:background-color .2s,border-color .2s}.ulf-field-typography .ulf--block-preview{cursor:pointer;position:relative;overflow:hidden;margin-top:10px;max-width:100%}.ulf-field-typography .ulf--black-background{border-color:#000;background-color:#000}.ulf-field-typography .ulf--toggle{position:absolute;top:5px;right:10px;color:#999}.ulf-field-typography .ulf--block-extra-styles{margin-top:5px}.ulf-field-upload input{width:100%;margin:0}.ulf-field-upload .ulf--wrap{display:flex;align-items:flex-start}.ulf-field-upload .button{margin-left:5px}.ulf-field-wp_editor .ulf-wp-editor{float:left;width:100%}.ulf-field-wp_editor .mce-toolbar-grp{border:none}.ulf-field-wp_editor .mce-btn.mce-active button,.ulf-field-wp_editor .mce-btn.mce-active i,.ulf-field-wp_editor .mce-btn.mce-active:hover button,.ulf-field-wp_editor .mce-btn.mce-active:hover i{color:#23282d}.ulf-field-wp_editor .wp-media-buttons{position:relative;z-index:2}.ulf-field-wp_editor .wp-editor-tabs{position:relative;z-index:1}.ulf-field-wp_editor .ulf-no-tinymce{border:1px solid #e5e5e5}.ulf-field-wp_editor .ulf-no-quicktags .wp-media-buttons{float:none;display:block}.ulf-field-wp_editor .ulf-no-quicktags .mce-tinymce{box-shadow:none;border:1px solid #e5e5e5}.ulf-field-wp_editor textarea{width:100%;max-width:100%;margin:0;box-shadow:none}.ulf-field-heading{font-size:1.5em;font-weight:700;color:#23282d;background-color:#f5f5f5}.ulf-field-subheading{font-size:14px;font-weight:700;padding-top:17px;padding-bottom:17px;color:#23282d;background-color:#f7f7f7}.ulf-field-submessage{padding:0!important;border:0!important}.ulf-field-submessage+.ulf-field{border-top:0!important}.ulf-submessage{font-size:12px;padding:17px 30px;border-top:1px solid transparent;border-bottom:1px solid transparent}.ulf-submessage-success{color:#3c763d;border-color:#d6e9c6;background-color:#dff0d8}.ulf-submessage-info{color:#31708f;border-color:#bce8f1;background-color:#d9edf7}.ulf-submessage-warning{color:#8a6d3b;border-color:#faebcc;background-color:#fcf8e3}.ulf-submessage-danger{color:#a94442;border-color:#ebccd1;background-color:#f2dede}.ulf-submessage-normal{color:#23282d;border-color:#eee;background-color:#f7f7f7}.ulf-field-notice{background-color:#f7f7f7}.ulf-notice{padding:12px;background-color:#fff;border-left-style:solid;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,.1)}.ulf-notice-success{border-color:#46b450}.ulf-notice-info{border-color:#339fd4}.ulf-notice-warning{border-color:#ffbc00}.ulf-notice-danger{border-color:#dc3232}.ulf-notice-normal{border-color:#222}.ulf-field-number input{width:100%;margin:0}.ulf-field-number .ulf--wrap{position:relative;float:left;width:100px}.ulf-field-number .ulf--unit{position:absolute;z-index:1;right:4px;top:4px;bottom:4px;padding:2px 6px;color:#666;font-size:11px;line-height:1;border-radius:2px;background:#eee;user-select:none;display:flex;justify-content:center;flex-direction:column}.ulf-field-link input{display:none}.ulf-field-link .ulf--result{display:inline-block;font-size:12px;line-height:16px;padding:7px 10px;margin-bottom:7px;color:#777;border:1px solid #e5e5e5;background-color:#f5f5f5;border-radius:2px;world-break:break-word}.ulf-field-link .ulf--wrap{position:relative;float:left;width:100px}.ulf-field-link .ulf--unit{position:absolute;z-index:1;right:4px;top:4px;bottom:4px;padding:2px 6px;color:#666;font-size:11px;line-height:1;border-radius:2px;background:#eee;user-select:none;display:flex;justify-content:center;flex-direction:column}.ulf-help{cursor:help;position:absolute;top:0;right:0;padding:5px;font-size:13px;color:#aaa}.ulf-help .ulf-help-text{display:none}.ulf-image-preview{display:inline-block;position:relative;padding:4px;min-width:100px;min-height:100px;line-height:100px;margin-bottom:10px;text-align:center;border-radius:2px;border:1px solid #ccc;background-color:#f9f9f9;box-shadow:0 1px 0 rgba(0,0,0,.08)}.ulf-image-preview img{max-width:100px;max-height:100px;display:inline-block;vertical-align:middle;object-fit:contain}.ulf-field-custom .ulf-field{padding:0}.ulf-field .chosen-container-single .chosen-single{height:28px;line-height:26px}.ulf-field .chosen-container-single .chosen-single abbr{top:0;right:20px;font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:12px;height:100%;width:18px;color:#aaa;text-align:center;background:0 0}.ulf-field .chosen-container-single .chosen-single abbr:before{content:"\f00d"}.ulf-field .chosen-container-single .chosen-single abbr:hover{color:#555}.ulf-field .chosen-container-multi .chosen-choices li.search-choice .search-choice-close{font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:12px;height:100%;width:18px;color:#aaa;text-align:center;background:0 0}.ulf-field .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{content:"\f00d";display:inline-block;padding-top:3px}.ulf-field .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{color:#555}.ulf-field .chosen-container-single .chosen-single div b{font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:14px;color:#aaa;background:0 0}.ulf-field .chosen-container-single .chosen-single div b:before{content:"\f107"}.ulf-field .chosen-container-single .chosen-single div b:hover{color:#555}.ulf-field .chosen-container-multi .chosen-choices li.search-choice-placeholder{border:1px dashed #aaa;margin:3px 5px 3px 0}.ulf-field .chosen-container-multi .ui-sortable li.search-choice span{cursor:move}.ulf-field .chosen-container-active.chosen-with-drop .chosen-single div b:before{content:"\f106"}.ulf-field .chosen-container-single .chosen-single-with-deselect span{margin-right:40px}.ulf-field .chosen-container-single .chosen-search input[type=text]{background:0 0}.ulf-field .chosen-container-single .chosen-search:before{font-family:"Font Awesome 5 Pro","Font Awesome 5 Free",FontAwesome;font-weight:900;font-size:11px;content:"\f002";position:absolute;right:12px;top:10px;color:#aaa}.ulf-field .wp-picker-container{display:inline-block}.ulf-field .wp-picker-container .wp-color-result.button{margin-bottom:0}.ulf-field .ulf--transparent-wrap{display:none;position:relative;top:-1px;width:235px;padding:9px 10px;border:1px solid #dfdfdf;border-top:none;background-color:#fff}.ulf-field .wp-picker-active .ulf--transparent-wrap{display:block}.ulf-field .ulf--transparent-slider{position:absolute;width:190px;margin-left:2px;height:18px}.ulf-field .ulf--transparent-slider .ui-slider-handle{position:absolute;top:-3px;bottom:-3px;z-index:5;border-color:#aaa;border-style:solid;border-width:4px 3px;width:10px;height:16px;margin:0 -5px;background:0 0;cursor:ew-resize;opacity:.9;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2)}.ulf-field .ulf--transparent-slider .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.ulf-field .ulf--transparent-offset{height:18px;width:200px;background:url(../images/checkerboard.png) repeat-y center left scroll #fff;border-radius:2px;box-shadow:inset 0 0 5px rgba(0,0,0,.4)}.ulf-field .ulf--transparent-text{position:absolute;top:12px;right:10px;width:30px;font-size:12px;line-height:12px;text-align:center;color:#999}.ulf-field .ulf--transparent-button{cursor:pointer;user-select:none;margin-top:10px;font-size:11px;text-align:center;border-radius:2px;padding:3px 7px;box-shadow:0 1px 0 rgba(0,0,0,.1);letter-spacing:.2px;color:#777;border:1px solid #ccc;background-color:#f7f7f7;transition:background-color .2s,border-color .2s,color .2s}.ulf-field .ulf--transparent-active .wp-color-result{background-image:url(../images/checkerboard.png);background-size:135px;background-position:center left;background-color:transparent!important}.ulf-field .ulf--transparent-active .ulf--transparent-button{color:#fff;border-color:#3ea032;background-color:#4fb845}.ulf-field .ulf--transparent-active .fa:before{content:"\f205"}.ulf-widgets>.ulf-field{position:relative;top:-1px;margin-right:-15px;margin-left:-15px;padding:12px 15px}.ulf-widgets>.ulf-field .ulf-field{margin-left:0;margin-right:0}.ulf-widgets>.ulf-field .ulf-title{float:none;width:100%;margin-bottom:5px}.ulf-widgets>.ulf-field .ulf-fieldset{float:none;width:100%}.ulf-widgets .ulf-field-text input{width:100%}.ulf-widgets .ulf-field-notice .ulf-notice{padding:15px}.control-section .ulf-widgets>.ulf-field{margin-right:-10px;margin-left:-10px;padding:10px 12px}.control-section .ulf-field{padding:0}.control-section .ulf-field .ulf-title{float:none;width:100%;margin-bottom:6px}.control-section .ulf-field .ulf-title h4{display:block;font-size:13px;line-height:1;font-weight:600;color:inherit}.control-section .ulf-field .ulf-fieldset{float:none;width:100%}.control-section .ulf-help{top:-5px;right:-5px}.control-section .ulf-field-select select{width:100%}.control-section .ulf-field-heading{color:inherit;font-size:14px;line-height:1em;margin-right:-15px;margin-left:-15px;padding:15px}.control-section .ulf-field-subheading{color:inherit;font-size:11px;margin-right:-15px;margin-left:-15px;padding:10px 15px}.control-section .ulf-subtitle-text{margin-top:4px;font-size:12px}.control-section .ulf-field-submessage .ulf-submessage{margin-right:-15px;margin-left:-15px;padding:15px}.control-section .ulf-fieldset .ulf-field-heading,.control-section .ulf-fieldset .ulf-field-subheading,.control-section .ulf-fieldset .ulf-field-submessage .ulf-submessage{margin-left:0;margin-right:0}.control-section .ulf-field-date .ulf--to{margin-left:0}.control-section .ulf-field-sorter ul li{padding:5px}.control-section .ulf-field-sorter .ulf-modules{float:none;width:100%}.control-section .ulf-field-sorter .ulf-modules:first-child{padding-right:0;padding-bottom:15px}.control-section .ulf-field-background .ulf--background-attributes{flex-direction:column}.control-section .ulf-field-spacing input{width:90px}.control-section .ulf-field-border .ulf--input{flex:1 50%}.control-section .ulf-field-border input,.control-section .ulf-field-border select{width:100%}.control-section .ulf-field-spinner input{width:50px}.control-section .ulf-field-number .ulf--wrap{width:100%}.control-section .ulf-field-backup .ulf-export-data{display:none}.control-section .ulf-field-fieldset .ulf-fieldset-content{border-color:#e5e5e5}.control-section .ulf-accordion-content>.ulf-field,.control-section .ulf-cloneable-content>.ulf-field,.control-section .ulf-fieldset-content>.ulf-field,.control-section .ulf-repeater-content>.ulf-field,.control-section .ulf-sortable-content>.ulf-field,.control-section .ulf-tabbed-content>.ulf-field{padding:10px}.control-section .ulf-accordion-content>.ulf-field .ulf-title,.control-section .ulf-cloneable-content>.ulf-field .ulf-title,.control-section .ulf-fieldset-content>.ulf-field .ulf-title,.control-section .ulf-repeater-content>.ulf-field .ulf-title,.control-section .ulf-sortable-content>.ulf-field .ulf-title,.control-section .ulf-tabbed-content>.ulf-field .ulf-title{margin-bottom:5px}.control-section .ulf-accordion-content>.ulf-field h4,.control-section .ulf-cloneable-content>.ulf-field h4,.control-section .ulf-fieldset-content>.ulf-field h4,.control-section .ulf-repeater-content>.ulf-field h4,.control-section .ulf-sortable-content>.ulf-field h4,.control-section .ulf-tabbed-content>.ulf-field h4{font-size:12px}.control-section .ulf-depend-hidden.ulf-depend-on{display:none!important}.control-section .ulf-depend-visible.ulf-depend-on{border-top:0!important}.ulf-taxonomy{max-width:95%}.ulf-taxonomy>.ulf-field{border-top:none!important}.ulf-taxonomy>.ulf-field-heading{font-size:1.1em;padding:20px!important;border:1px solid #ddd}.ulf-taxonomy>.ulf-field-subheading{font-size:12px;padding:15px!important;border:1px solid #ddd}.ulf-taxonomy>.ulf-field-submessage .ulf-submessage{padding:15px;border-left-width:1px;border-left-style:solid;border-right-width:1px;border-right-style:solid}.ulf-taxonomy>.ulf-field-notice{background-color:transparent}.ulf-taxonomy .ulf-section-title{display:block;padding:15px;background-color:#f9f9f9;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ulf-taxonomy-add-fields>.ulf-field{padding:8px 0}.ulf-taxonomy-add-fields>.ulf-field>.ulf-title{float:none;width:100%;padding:2px 2px 4px 0}.ulf-taxonomy-add-fields>.ulf-field>.ulf-title h4{font-size:12px;font-weight:400}.ulf-taxonomy-add-fields>.ulf-field>.ulf-fieldset{float:none;width:100%}.ulf-taxonomy-add-fields>.ulf-field>.ulf-fieldset>.ulf-help{right:-5px}.ulf-taxonomy-add-fields+p.submit{margin-top:0}.ulf-taxonomy-edit-fields>.ulf-field{padding:20px 0}.ulf-taxonomy-edit-fields>.ulf-field>.ulf-title{width:200px}.ulf-taxonomy-edit-fields>.ulf-field>.ulf-title h4{font-size:14px;font-weight:600;line-height:1.3;display:inline-block;vertical-align:middle}.ulf-taxonomy-edit-fields>.ulf-field>.ulf-fieldset{width:calc(100% - 220px)}.ulf-taxonomy-edit-fields>.ulf-field>.ulf-fieldset>.ulf-help{top:-5px;right:-5px}.ulf-taxonomy-edit-fields>.ulf-field-submessage{margin:20px 0}.ulf-taxonomy-edit-fields>.ulf-field-heading,.ulf-taxonomy-edit-fields>.ulf-field-subheading{margin:20px 0;border:1px solid #ddd}.ulf-nav-menu-options{clear:both;float:left;width:100%}.ulf-nav-menu-options>.ulf-fields{margin-left:-10px;margin-top:10px;margin-bottom:10px;border-top:1px solid #eee;border-bottom:1px solid #eee}.ulf-nav-menu-options>.ulf-fields>.ulf-field{padding:12px 14px 12px 12px}.ulf-nav-menu-options>.ulf-fields>.ulf-field .ulf-title{float:none;width:100%;margin-bottom:5px}.ulf-nav-menu-options>.ulf-fields>.ulf-field .ulf-fieldset{float:none;width:100%}.ulf-nav-menu-options .ulf-field-text input{width:100%}.ulf-nav-menu-options .ulf-field-notice .ulf-notice{padding:15px}.ulf-nav-menu-title{padding:12px 14px 12px 12px;background-color:#f5f5f5;border-top:1px solid #eee;border-bottom:1px solid #eee}.ulf-nav-menu-title:first-child{border-top:0}.ulf-nav-menu-title h4{margin:0;padding:0;color:#23282d}.ulf-nav-menu-icon{margin-right:5px}.ulf-profile-options>h2>.fa{padding-right:7px}.ulf-profile-options>.ulf-field{max-width:750px;padding:15px 0;border-top:none!important}.ulf-profile-options>.ulf-field>.ulf-title{width:200px}.ulf-profile-options>.ulf-field>.ulf-title h4{font-size:14px;font-weight:600;line-height:1.3;display:inline-block;vertical-align:middle}.ulf-profile-options>.ulf-field>.ulf-fieldset{width:calc(100% - 220px)}.ulf-profile-options>.ulf-field>.ulf-fieldset>.ulf-help{top:-15px;right:-5px}.ulf-profile-options>.ulf-field-heading{font-size:1.1em}.ulf-profile-options>.ulf-field-subheading{font-size:12px}.ulf-profile-options>.ulf-field-heading,.ulf-profile-options>.ulf-field-subheading{margin:10px 0;padding:15px!important;border:1px solid #ddd}.ulf-profile-options>.ulf-field-submessage{margin:20px 0}.ulf-profile-options>.ulf-field-submessage .ulf-submessage{padding:10px;border-left-width:1px;border-left-style:solid;border-right-width:1px;border-right-style:solid}.ulf-profile-options>.ulf-field-notice{background-color:transparent}.ulf-modal{position:fixed;z-index:100101;top:0;left:0;width:100%;height:100%}.ulf-modal.hidden{display:none}.ulf-modal-icon{z-index:100102}.ulf-modal-table{display:table;width:100%;height:100%}.ulf-modal-table-cell{display:table-cell;vertical-align:middle;margin:100px 0}.ulf-modal-inner{position:relative;z-index:10;width:760px;height:750px;margin:0 auto;background-color:#fff}.ulf-modal-content{position:relative;overflow:hidden;overflow-y:auto;height:595px}.ulf-modal-content .ulf-shortcode-button{display:none}.ulf-modal-content .ulf-field{padding:15px 30px 15px 15px}.ulf-modal-content a:active,.ulf-modal-content a:focus{outline:0;box-shadow:none}.ulf-modal-content h4{font-size:13px}.ulf-modal-content h4 small{font-style:italic;font-weight:400;color:#aaa}.ulf-modal-title{position:relative;background-color:#fcfcfc;border-bottom:1px solid #ddd;height:36px;font-size:16px;font-weight:600;line-height:36px;margin:0;padding:0 36px 0 16px}.ulf-modal-header{width:100%;padding:14px 0;background-color:#f5f5f5;border-bottom:1px solid #ddd}.ulf-modal-header select{display:block;width:250px;margin:0 auto;font-size:13px;line-height:1;height:30px;min-height:30px;background-color:#fff}.ulf-modal-close{color:#666;padding:0;position:absolute;top:0;right:0;width:36px;height:36px;text-align:center;background:0 0;border:none;cursor:pointer}.ulf-modal-close:before{font:normal 20px/36px dashicons;content:"\f158";vertical-align:top;width:36px;height:36px}.ulf-modal-close:hover{opacity:.5}.ulf-modal-insert-wrapper{text-align:center;width:100%;padding:15px 0;background-color:#f5f5f5;border-top:1px solid #ddd}.ulf-modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000;opacity:.5}.ulf--repeatable{padding:15px 15px 0 15px}.ulf--repeat-button-block{text-align:center;padding-bottom:15px}.ulf--repeat-shortcode{position:relative;margin-bottom:15px;border:1px dashed #ddd}.ulf--repeat-shortcode:first-child .ulf-repeat-remove{display:none}.ulf--repeat-shortcode .ulf-repeat-remove{position:absolute;right:10px;top:10px;z-index:10;cursor:pointer;display:inline-block;font-size:11px;width:18px;height:18px;line-height:18px;text-align:center;border-radius:2px;color:#fff;background-color:#e14d43;opacity:.5}.ulf--repeat-shortcode .ulf-repeat-remove:hover{opacity:.5}.ulf-shortcode-single .ulf-modal-inner{height:750px}.ulf-shortcode-single .ulf-modal-content{height:652px}.elementor-editor-active .ulf-shortcode-button{margin-left:5px}.elementor-editor-active .ulf-modal .hidden{display:none!important}.ulf-shortcode-block{text-align:center;padding:14px;font-size:13px;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}.ulf-shortcode-block .components-button{margin-bottom:10px}.ulf-modal-icon .ulf-icon-title{padding:15px 0;margin:4px;font-size:14px;font-weight:700;text-align:center;border:1px solid #eee;background-color:#f7f7f7}.ulf-modal-icon .ulf-modal-header{text-align:center}.ulf-modal-icon .ulf-icon-search{width:50%;height:40px;line-height:40px}.ulf-modal-icon i{cursor:pointer;display:inline-block;margin:4px;width:35px;height:35px;line-height:35px;font-size:16px;color:#555;text-align:center;border:1px solid #ccc;background-color:#f7f7f7;border-radius:2px;box-shadow:1px 1px 0 rgba(0,0,0,.05)}.ulf-modal-icon i:hover{color:#fff;border-color:#222;background-color:#222}.ulf-modal-icon .ulf-modal-content{padding:10px;height:618px}.ulf-modal-icon .ulf-error-text{padding:10px}.ulf-modal-loading{display:none;position:absolute;left:15px;top:15px}.ulf-loading{position:relative;width:20px;height:20px;background:#ccc;border-radius:20px;box-shadow:0 2px 5px rgba(0,0,0,.07)}.ulf-loading:after{position:absolute;top:50%;left:50%;width:4px;height:4px;content:"";margin-top:-2px;margin-left:-2px;background-color:#fff;animation-duration:.5s;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:ulfLoader;border-radius:4px}@keyframes ulfLoader{0%{transform:rotate(0) translateX(-6px) rotate(0)}100%{transform:rotate(360deg) translateX(-6px) rotate(-360deg)}}.ulf-subtitle-text{margin-top:6px;font-weight:400;color:#999}.ulf-desc-text{clear:both;float:left;width:100%;margin-top:6px;font-weight:400;color:#999}.ulf-error-text{margin-top:6px;color:#d02c21}.ulf-before-text{margin-bottom:6px}.ulf-after-text{margin-top:6px}.ulf-metabox-hide{display:none!important}.ulf-metabox-show{display:block!important}.ulf-depend-hidden.ulf-depend-on{display:none}.ulf-depend-visible.ulf-depend-on{display:block;opacity:.75;filter:grayscale(1);user-select:none;border-top:1px solid #eee}.ulf-depend-visible.ulf-depend-on .clear:before{content:"";left:0;top:0;right:0;bottom:0;position:absolute;background-color:#eee;opacity:.25;z-index:10}.ulf-warning-primary{color:#fff!important;border-color:#dc3545!important;background:#dc3545!important}.ulf-warning-primary:focus,.ulf-warning-primary:hover{border-color:#bd2130!important;background:#bd2130!important}.ulf-warning-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #bd2130!important}.ulf-warning-primary:active{border-color:#bd2130!important;background:#bd2130!important}.ulf-form-result{display:none;float:left;padding:0 8px;margin-right:4px;font-size:11px;line-height:30px;user-select:none;border-radius:2px}.ulf-form-show{display:block}.ulf-form-success{color:#fff;background-color:#46b450}.ulf-form-warning{color:#8a6d3b;background-color:#faebcc}.ulf-label-error{position:relative;top:-2px;display:inline-block;font-size:10px;line-height:10px;height:10px;width:10px;padding:1px;font-style:normal;text-align:center;color:#fff;vertical-align:middle;background-color:#e10000;border-radius:2px}.ulf-no-option{padding:30px}.ulf-input-number{-moz-appearance:textfield}.ulf-input-number::-webkit-inner-spin-button,.ulf-input-number::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ulf-fa5-shims .ulf .fab,.ulf-fa5-shims .ulf .far,.ulf-fa5-shims .ulf .fas{font-family:FontAwesome;font-style:normal}.ulf-welcome-wrap{position:relative;margin:25px 40px 0 20px;font-size:15px;max-width:1200px}.ulf-welcome-wrap p{font-size:14px;line-height:1.5}.ulf-welcome-wrap h1{margin:.2em 200px 0 0;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.ulf-welcome-wrap .ulf-logo{position:absolute;overflow:hidden;top:0;right:0;height:160px;width:140px;background-image:linear-gradient(45deg,#2d67cb,#ad19f3);box-shadow:0 1px 4px rgba(0,0,0,.25),inset 0 0 0 4px rgba(0,0,0,.25)}.ulf-welcome-wrap .ulf-logo .ulf--effects i{position:absolute;width:200px;height:100px;background-color:rgba(0,0,0,.15);transform:rotate(-45deg)}.ulf-welcome-wrap .ulf-logo .ulf--effects i:nth-child(1){bottom:-20px;right:-70px}.ulf-welcome-wrap .ulf-logo .ulf--effects i:nth-child(2){bottom:-35px;right:-80px}.ulf-welcome-wrap .ulf-logo .ulf--effects i:nth-child(3){bottom:-50px;right:-90px}.ulf-welcome-wrap .ulf-logo .ulf--effects i:nth-child(4){bottom:-65px;right:-100px}.ulf-welcome-wrap .ulf-logo .ulf--wp-logos{position:relative;padding-top:25px;text-align:center}.ulf-welcome-wrap .ulf-logo .ulf--wp-logo{position:absolute;left:20px;width:20px;height:20px;background-repeat:no-repeat;background-position:center center;background-image:url(../images/wp-logo.svg)}.ulf-welcome-wrap .ulf-logo .ulf--wp-plugin-logo{display:inline-block;width:50px;height:50px;border:3px solid #fff;background-size:40px;background-repeat:no-repeat;background-position:center center;background-image:url(../images/wp-plugin-logo.svg);border-radius:100%;vertical-align:middle}.ulf-welcome-wrap .ulf-logo .ulf--text{position:absolute;left:0;right:0;top:90px;color:#fff;font-size:13px;line-height:1.2em;font-weight:600;text-align:center;text-transform:uppercase;text-shadow:1px 1px 0 rgba(0,0,0,.25)}.ulf-welcome-wrap .ulf-logo .ulf--version{top:auto;left:auto;right:8px;bottom:4px;font-size:11px;text-transform:lowercase}.ulf-welcome-wrap .ulf-about-text{font-weight:400;line-height:1.6em;font-size:19px;margin:1em 200px 1em 0;color:#555d66}.ulf-welcome-wrap .ulf-demo-button{margin:1em 200px 2em 0}.ulf-welcome-wrap .nav-tab-wrapper{margin-bottom:20px}.ulf-welcome-wrap ul{list-style-type:disc;padding-left:15px}.ulf-welcome-wrap .ulf--col{float:left;padding-right:20px;box-sizing:border-box}.ulf-welcome-wrap .ulf--col-2{width:50%}.ulf-welcome-wrap .ulf--col-3{width:33.333%}.ulf-welcome-wrap .ulf--col-4{width:25%}.ulf-welcome-wrap .ulf--col-5{width:20%}.ulf-welcome-wrap .ulf--col-last{padding-right:0}.ulf-welcome-wrap .ulf--col-upgrade{padding:10px 0;text-align:center;border-top:1px solid #e5e5e5}.ulf--table-compare tfoot td,.ulf--table-compare thead td{text-align:center}.ulf--table-compare td{font-size:14px;text-align:center;vertical-align:middle;padding:10px}.ulf--table-compare td:first-child{text-align:left}.ulf--table-compare tfoot td{padding:15px 0}.ulf--table-compare .fa{font-size:18px}.ulf--table-compare .fa-check-circle{color:#46b450}.ulf--table-compare .fa-times-circle{color:#dc3232}.ulf-welcome-cols{clear:both;margin:20px 0;background-color:#fff;padding:0 0;border-radius:2px;border:1px solid #e5e5e5}.ulf-welcome-cols .ulf--col{width:33.333%;float:left;padding:20px;text-align:center;box-sizing:border-box;min-height:200px;border-right:1px solid #e5e5e5}.ulf-welcome-cols .ulf--block,.ulf-welcome-cols .ulf--left{float:left;width:20%;padding:0 30px;text-align:center;box-sizing:border-box}.ulf-welcome-cols .ulf--block{width:80%}.ulf-welcome-cols .ulf--col-first{border-bottom:1px solid #e5e5e5}.ulf-welcome-cols .ulf--last{border-right:none}.ulf-welcome-cols .ulf--space{height:20px}.ulf-welcome-cols .ulf--icon{display:inline-block;font-size:20px;width:30px;height:30px;line-height:30px;text-align:center;margin-bottom:10px;color:#fff;background-color:#555;border-radius:30px}.ulf-welcome-cols .ulf--active{background-color:#5cb85c}.ulf-welcome-cols .ulf--deactive{background-color:#e14d43}.ulf-welcome-cols .ulf--title{font-weight:700;display:block}.ulf-welcome-cols p:last-child{margin-bottom:0}.ulf-features-cols .ulf--key-features{width:30%}.ulf-features-cols .ulf--available-fields{width:70%}.ulf-code-block{margin:20px 0;padding:5px 20px;background-color:#fff;border-radius:2px;box-shadow:0 1px 1px rgba(0,0,0,.15)}.ulf-code-block pre{font-size:13px;color:#0073aa}.ulf-code-block pre span{color:#999}.ulf--table-fields td{font-size:14px}.ulf--upgrade a{color:#5cb85c;font-weight:700}.ulf--upgrade a:focus,.ulf--upgrade a:hover{color:#4aa14a;outline:0;box-shadow:none}@media only screen and (max-width:782px){.ulf-welcome-cols .ulf--col{width:100%;min-height:auto;border-right:none;border-bottom:1px solid #e5e5e5}.ulf-features-cols .ulf--key-features{width:100%}.ulf-features-cols .ulf--available-fields{width:100%}}@media only screen and (max-width:1200px){.ulf-metabox .ulf-field .ulf-title{float:none;width:100%;margin-bottom:10px}.ulf-metabox .ulf-field .ulf-fieldset{float:none;width:100%}}@media only screen and (max-width:782px){.ulf-header-inner{text-align:center}.ulf-header-inner h1{width:100%;margin-bottom:10px}.ulf-form-result{float:none;margin-right:0;margin-bottom:10px}.ulf-header-left,.ulf-header-right,.ulf-search{width:100%}.ulf-search{text-align:center;margin-bottom:15px}.ulf-footer{text-align:center}.ulf-buttons{float:none}.ulf-copyright{float:none;margin-top:10px}.ulf-expand-all,.ulf-nav,.ulf-nav-background,.ulf-reset-section{display:none!important}.ulf-nav-normal+.ulf-content{margin-left:0}.ulf-section,.ulf-section-title{display:block!important}.ulf-field .ulf-title{float:none;width:100%;margin-bottom:10px}.ulf-field .ulf-fieldset{float:none;width:100%}.ulf-field-color .button.wp-picker-clear{padding:0 8px;line-height:2.14285714;min-height:32px}.ulf-modal-inner{width:350px;height:400px}.ulf-modal-content{height:237px}.ulf-icon-dialog .ulf-modal-inner{width:305px;height:380px}.ulf-icon-dialog .ulf-modal-content{height:267px}.ulf-modal-icon .ulf-modal-inner{width:330px;height:385px}.ulf-modal-icon .ulf-modal-content{height:252px}.ulf-profile-options>.ulf-field>.ulf-title,.ulf-taxonomy-edit-fields>.ulf-field>.ulf-title{float:none;width:100%;margin-bottom:10px}.ulf-profile-options>.ulf-field>.ulf-fieldset,.ulf-taxonomy-edit-fields>.ulf-field>.ulf-fieldset{float:none;width:100%}.ulf-nav-menu-options>.ulf-fields{margin-left:-10px;margin-right:-10px}.ulf-nav-menu-options>.ulf-fields>.ulf-field{padding:10px}}.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;user-select:none}.chosen-container *{box-sizing:border-box}.chosen-container .chosen-drop{position:absolute;top:100%;z-index:1010;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15);clip:rect(0,0,0,0);clip-path:inset(100% 100%)}.chosen-container.chosen-with-drop .chosen-drop{clip:auto;clip-path:none}.chosen-container a{cursor:pointer}.chosen-container .chosen-single .group-name,.chosen-container .search-choice .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}.chosen-container .chosen-single .group-name:after,.chosen-container .search-choice .group-name:after{content:":";padding-left:2px;vertical-align:top}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:25px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;font-size:1px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;clip:rect(0,0,0,0);clip-path:inset(100% 100%)}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto;border:1px solid #aaa;background-color:#fff;background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:0;outline:0;border:0!important;background:0 0!important;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0;width:25px;height:25px;min-height:25px}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 6px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:0;right:0;display:block;width:12px;height:12px;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;border-bottom-right-radius:0;border-bottom-left-radius:0;background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:none}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;direction:rtl}
admin/settings/assets/js/main.js CHANGED
@@ -1303,6 +1303,8 @@
1303
  thumbnail = attributes.sizes.thumbnail.url;
1304
  } else if ( typeof attributes.sizes !== 'undefined' && typeof attributes.sizes.full !== 'undefined' ) {
1305
  thumbnail = attributes.sizes.full.url;
 
 
1306
  } else {
1307
  thumbnail = attributes.icon;
1308
  }
@@ -1578,7 +1580,7 @@
1578
 
1579
  var $this = $(this),
1580
  $input = $this.find('input'),
1581
- $inited = $this.find('.ui-spinner-button'),
1582
  data = $input.data();
1583
 
1584
  if ( $inited.length ) {
1303
  thumbnail = attributes.sizes.thumbnail.url;
1304
  } else if ( typeof attributes.sizes !== 'undefined' && typeof attributes.sizes.full !== 'undefined' ) {
1305
  thumbnail = attributes.sizes.full.url;
1306
+ } else if ( attributes.url.split('.').pop().toLowerCase() === 'svg' ) {
1307
+ thumbnail = attributes.url;
1308
  } else {
1309
  thumbnail = attributes.icon;
1310
  }
1580
 
1581
  var $this = $(this),
1582
  $input = $this.find('input'),
1583
+ $inited = $this.find('.ui-button'),
1584
  data = $input.data();
1585
 
1586
  if ( $inited.length ) {
admin/settings/assets/js/main.min.js CHANGED
@@ -1,3 +1,3 @@
1
- /* Codestar Framework | A Simple and Lightweight WordPress Option Framework - v2.2.1*/
2
 
3
- !function(I,_,b,y){"use strict";var T=T||{};T.funcs={},T.vars={onloaded:!1,$body:I("body"),$window:I(_),$document:I(b),$form_warning:null,is_confirm:!1,form_modified:!1,code_themes:[],is_rtl:I("body").hasClass("rtl")},T.helper={uid:function(e){return(e||"")+Math.random().toString(36).substr(2,9)},preg_quote:function(e){return(e+"").replace(/(\[|\])/g,"\\$1")},name_nested_replace:function(e,t){var n=new RegExp(T.helper.preg_quote(t+"[\\d+]"),"g");e.find(":radio").each(function(){(this.checked||this.orginal_checked)&&(this.orginal_checked=!0)}),e.each(function(e){I(this).find(":input").each(function(){this.name=this.name.replace(n,t+"["+e+"]"),this.orginal_checked&&(this.checked=!0)})})},debounce:function(i,s,a){var c;return function(){var e=this,t=arguments,n=a&&!c;clearTimeout(c),c=setTimeout(function(){c=null,a||i.apply(e,t)},s),n&&i.apply(e,t)}}},I.fn.ulf_clone=function(){for(var e=I.fn.clone.apply(this,arguments),t=this.find("select").add(this.filter("select")),n=e.find("select").add(e.filter("select")),i=0;i<t.length;++i)for(var s=0;s<t[i].options.length;++s)!0===t[i].options[s].selected&&(n[i].options[s].selected=!0);return this.find(":radio").each(function(){this.orginal_checked=this.checked}),e},I.fn.ulf_expand_all=function(){return this.each(function(){I(this).on("click",function(e){e.preventDefault(),I(".ulf-wrapper").toggleClass("ulf-show-all"),I(".ulf-section").ulf_reload_script(),I(this).find(".fa").toggleClass("fa-indent").toggleClass("fa-outdent")})})},I.fn.ulf_nav_options=function(){return this.each(function(){var s,a=I(this).find("a");I(_).on("hashchange ulf.hashchange",function(){var e=_.location.hash.replace("#tab=",""),t=e||a.first().attr("href").replace("#tab=",""),n=I('[data-tab-id="'+t+'"]');if(n.length){n.closest(".ulf-tab-item").addClass("ulf-tab-expanded").siblings().removeClass("ulf-tab-expanded"),n.next().is("ul")&&(t=(n=n.next().find("li").first().find("a")).data("tab-id")),a.removeClass("ulf-active"),n.addClass("ulf-active"),s&&s.addClass("hidden");var i=I('[data-section-id="'+t+'"]');i.removeClass("hidden"),i.ulf_reload_script(),I(".ulf-section-id").val(i.index()+1),s=i}}).trigger("ulf.hashchange")})},I.fn.ulf_nav_metabox=function(){return this.each(function(){var s,e=I(this),a=e.find("a"),c=e.parent().find(".ulf-section");a.each(function(i){I(this).on("click",function(e){e.preventDefault();var t=I(this);a.removeClass("ulf-active"),t.addClass("ulf-active"),s!==y&&s.addClass("hidden");var n=c.eq(i);n.removeClass("hidden"),n.ulf_reload_script(),s=n})}),a.first().trigger("click")})},I.fn.ulf_page_templates=function(){this.length&&I(b).on("change",".editor-page-attributes__template select, #page_template",function(){var e=I(this).val()||"default";I(".ulf-page-templates").removeClass("ulf-metabox-show").addClass("ulf-metabox-hide"),I(".ulf-page-"+e.toLowerCase().replace(/[^a-zA-Z0-9]+/g,"-")).removeClass("ulf-metabox-hide").addClass("ulf-metabox-show")})},I.fn.ulf_post_formats=function(){this.length&&I(b).on("change",'.editor-post-format select, #formatdiv input[name="post_format"]',function(){var e=I(this).val()||"default";e="0"===e?"default":e,I(".ulf-post-formats").removeClass("ulf-metabox-show").addClass("ulf-metabox-hide"),I(".ulf-post-format-"+e).removeClass("ulf-metabox-hide").addClass("ulf-metabox-show")})},I.fn.ulf_search=function(){return this.each(function(){I(this).find("input").on("change keyup",function(){var n=I(this).val(),e=I(".ulf-wrapper"),t=e.find(".ulf-section").find("> .ulf-field:not(.ulf-depend-on)"),i=t.find("> .ulf-title, .ulf-search-tags");3<n.length?(t.addClass("ulf-metabox-hide"),e.addClass("ulf-search-all"),i.each(function(){var e=I(this);if(e.text().match(new RegExp(".*?"+n+".*?","i"))){var t=e.closest(".ulf-field");t.removeClass("ulf-metabox-hide"),t.parent().ulf_reload_script()}})):(t.removeClass("ulf-metabox-hide"),e.removeClass("ulf-search-all"))})})},I.fn.ulf_sticky=function(){return this.each(function(){var i=I(this),e=I(_),s=i.find(".ulf-header-inner"),a=parseInt(s.css("padding-left"))+parseInt(s.css("padding-right")),c=0,r=!1,t=function(){r||requestAnimationFrame(function(){var e,t,n;e=i.offset().top,t=Math.max(32,e-c),n=Math.max(b.documentElement.clientWidth,_.innerWidth||0),t<=32&&782<n?(s.css({width:i.outerWidth()-a}),i.css({height:i.outerHeight()}).addClass("ulf-sticky")):(s.removeAttr("style"),i.removeAttr("style").removeClass("ulf-sticky")),r=!1}),r=!0},n=function(){c=e.scrollTop(),t()};e.on("scroll resize",n),n()})},I.fn.ulf_dependency=function(){return this.each(function(){var e=I(this),t=e.children("[data-controller]");if(t.length){var n=I.ulf_deps.createRuleset(),i=I.ulf_deps.createRuleset(),f=[],l=[];t.each(function(){var s=I(this),e=s.data("controller").split("|"),a=s.data("condition").split("|"),c=s.data("value").toString().split("|"),r=!!s.data("depend-global"),o=r?i:n;I.each(e,function(e,t){var n=c[e]||"",i=a[e]||a[0];(o=o.createRule('[data-depend-id="'+t+'"]',i,n)).include(s),r?l.push(t):f.push(t)})}),f.length&&I.ulf_deps.enable(e,n,f),l.length&&I.ulf_deps.enable(T.vars.$body,i,l)}})},I.fn.ulf_field_accordion=function(){return this.each(function(){I(this).find(".ulf-accordion-title").on("click",function(){var e=I(this),t=e.find(".ulf-accordion-icon"),n=e.next();t.hasClass("fa-angle-right")?t.removeClass("fa-angle-right").addClass("fa-angle-down"):t.removeClass("fa-angle-down").addClass("fa-angle-right"),n.data("opened")||(n.ulf_reload_script(),n.data("opened",!0)),n.toggleClass("ulf-accordion-open")})})},I.fn.ulf_field_backup=function(){return this.each(function(){if(_.wp.customize!==y){var t=this,n=I(this),i=(I("body"),n.find(".ulf-import")),s=n.find(".ulf-reset");t.notificationOverlay=function(){wp.customize.notifications&&wp.customize.OverlayNotification&&(wp.customize.state("saved").get()||(wp.customize.state("changesetStatus").set("trash"),wp.customize.each(function(e){e._dirty=!1}),wp.customize.state("saved").set(!0)),wp.customize.notifications.add(new wp.customize.OverlayNotification("ulf_field_backup_notification",{type:"default",message:"&nbsp;",loading:!0})))},s.on("click",function(e){e.preventDefault(),T.vars.is_confirm&&(t.notificationOverlay(),_.wp.ajax.post("ulf-reset",{unique:s.data("unique"),nonce:s.data("nonce")}).done(function(e){_.location.reload(!0)}).fail(function(e){alert(e.error),wp.customize.notifications.remove("ulf_field_backup_notification")}))}),i.on("click",function(e){e.preventDefault(),T.vars.is_confirm&&(t.notificationOverlay(),_.wp.ajax.post("ulf-import",{unique:i.data("unique"),nonce:i.data("nonce"),data:n.find(".ulf-import-data").val()}).done(function(e){_.location.reload(!0)}).fail(function(e){alert(e.error),wp.customize.notifications.remove("ulf_field_backup_notification")}))})}})},I.fn.ulf_field_background=function(){return this.each(function(){I(this).find(".ulf--background-image").ulf_reload_script()})},I.fn.ulf_field_code_editor=function(){return this.each(function(){if("function"==typeof CodeMirror){var t=I(this),i=t.find("textarea"),e=t.find(".CodeMirror"),s=i.data("editor");e.length&&e.remove();var a=setInterval(function(){if(t.is(":visible")){var n=CodeMirror.fromTextArea(i[0],s);if("default"!==s.theme&&-1===T.vars.code_themes.indexOf(s.theme)){var e=I("<link>");I("#ulf-codemirror-css").after(e),e.attr({rel:"stylesheet",id:"ulf-codemirror-"+s.theme+"-css",href:s.cdnURL+"/theme/"+s.theme+".min.css",type:"text/css",media:"all"}),T.vars.code_themes.push(s.theme)}CodeMirror.modeURL=s.cdnURL+"/mode/%N/%N.min.js",CodeMirror.autoLoadMode(n,s.mode),n.on("change",function(e,t){i.val(n.getValue()).trigger("change")}),clearInterval(a)}})}})},I.fn.ulf_field_date=function(){return this.each(function(){var e=I(this),i=e.find("input"),s=e.find(".ulf-date-settings").data("settings"),t={showAnim:"",beforeShow:function(e,t){I(t.dpDiv).addClass("ulf-datepicker-wrapper")},onClose:function(e,t){I(t.dpDiv).removeClass("ulf-datepicker-wrapper")}};s=I.extend({},s,t),2===i.length&&(s=I.extend({},s,{onSelect:function(e){I(this),i.first();var t=i.first().attr("id")===I(this).attr("id")?"minDate":"maxDate",n=I.datepicker.parseDate(s.dateFormat,e);i.not(this).datepicker("option",t,n)}})),i.each(function(){var e=I(this);e.hasClass("hasDatepicker")&&e.removeAttr("id").removeClass("hasDatepicker"),e.datepicker(s)})})},I.fn.ulf_field_fieldset=function(){return this.each(function(){I(this).find(".ulf-fieldset-content").ulf_reload_script()})},I.fn.ulf_field_gallery=function(){return this.each(function(){var a,e=I(this),c=e.find(".ulf-edit-gallery"),r=e.find(".ulf-clear-gallery"),o=e.find("ul"),f=e.find("input");e.find("img");e.on("click",".ulf-button, .ulf-edit-gallery",function(e){var t=I(this),n=f.val(),i=t.hasClass("ulf-edit-gallery")?"edit":"add",s="add"!==i||n.length?"gallery-edit":"gallery";e.preventDefault(),void 0!==_.wp&&_.wp.media&&_.wp.media.gallery&&("gallery"===s?(a=_.wp.media({library:{type:"image"},frame:"post",state:"gallery",multiple:!0})).open():(a=_.wp.media.gallery.edit('[gallery ids="'+n+'"]'),"add"===i&&a.setState("gallery-library")),a.on("update",function(e){o.empty();var t=e.models.map(function(e){var t=e.toJSON(),n=t.sizes&&t.sizes.thumbnail&&t.sizes.thumbnail.url?t.sizes.thumbnail.url:t.url;return o.append('<li><img src="'+n+'"></li>'),t.id});f.val(t.join(",")).trigger("change"),r.removeClass("hidden"),c.removeClass("hidden")}))}),r.on("click",function(e){e.preventDefault(),o.empty(),f.val("").trigger("change"),r.addClass("hidden"),c.addClass("hidden")})})},I.fn.ulf_field_group=function(){return this.each(function(){var e=I(this),t=e.children(".ulf-fieldset"),n=t.length?t:e,r=n.children(".ulf-cloneable-wrapper"),i=n.children(".ulf-cloneable-hidden"),o=n.children(".ulf-cloneable-max"),f=n.children(".ulf-cloneable-min"),l=r.data("field-id"),d=Boolean(Number(r.data("title-number"))),h=parseInt(r.data("max")),s=parseInt(r.data("min"));r.hasClass("ui-accordion")&&r.find(".ui-accordion-header-icon").remove();var p=function(e){e.find(".ulf-cloneable-title-number").each(function(e){I(this).html(I(this).closest(".ulf-cloneable-item").index()+1+".")})};r.accordion({header:"> .ulf-cloneable-item > .ulf-cloneable-title",collapsible:!0,active:!1,animate:!1,heightStyle:"content",icons:{header:"ulf-cloneable-header-icon fas fa-angle-right",activeHeader:"ulf-cloneable-header-icon fas fa-angle-down"},activate:function(e,t){var n=t.newPanel,i=t.newHeader;if(n.length&&!n.data("opened")){var s=n.children().first().find(":input").first(),a=i.find(".ulf-cloneable-value");s.on("change keyup",function(e){a.text(s.val())}),n.ulf_reload_script(),n.data("opened",!0),n.data("retry",!1)}else n.data("retry")&&(n.ulf_reload_script_retry(),n.data("retry",!1))}}),r.sortable({axis:"y",handle:".ulf-cloneable-title,.ulf-cloneable-sort",helper:"original",cursor:"move",placeholder:"widget-placeholder",start:function(e,t){r.accordion({active:!1}),r.sortable("refreshPositions"),t.item.children(".ulf-cloneable-content").data("retry",!0)},update:function(e,t){T.helper.name_nested_replace(r.children(".ulf-cloneable-item"),l),r.ulf_customizer_refresh(),d&&p(r)}}),n.children(".ulf-cloneable-add").on("click",function(e){e.preventDefault();var t=r.children(".ulf-cloneable-item").length;if(f.hide(),h&&h<t+1)o.show();else{var n=i.ulf_clone(!0);n.removeClass("ulf-cloneable-hidden"),n.find(':input[name!="_pseudo"]').each(function(){this.name=this.name.replace("___","").replace(l+"[0]",l+"["+t+"]")}),r.append(n),r.accordion("refresh"),r.accordion({active:t}),r.ulf_customizer_refresh(),r.ulf_customizer_listen({closest:!0}),d&&p(r)}});var a=function(e){e.preventDefault();var t=r.children(".ulf-cloneable-item").length;if(f.hide(),h&&h<t+1)o.show();else{var n=I(this).parent().parent(),i=n.children(".ulf-cloneable-helper").ulf_clone(!0),s=n.children(".ulf-cloneable-title").ulf_clone(),a=n.children(".ulf-cloneable-content").ulf_clone(),c=I('<div class="ulf-cloneable-item" />');c.append(i),c.append(s),c.append(a),r.children().eq(n.index()).after(c),T.helper.name_nested_replace(r.children(".ulf-cloneable-item"),l),r.accordion("refresh"),r.ulf_customizer_refresh(),r.ulf_customizer_listen({closest:!0}),d&&p(r)}};r.children(".ulf-cloneable-item").children(".ulf-cloneable-helper").on("click",".ulf-cloneable-clone",a),n.children(".ulf-cloneable-hidden").children(".ulf-cloneable-helper").on("click",".ulf-cloneable-clone",a);var c=function(e){e.preventDefault();var t=r.children(".ulf-cloneable-item").length;o.hide(),f.hide(),s&&t-1<s?f.show():(I(this).closest(".ulf-cloneable-item").remove(),T.helper.name_nested_replace(r.children(".ulf-cloneable-item"),l),r.ulf_customizer_refresh(),d&&p(r))};r.children(".ulf-cloneable-item").children(".ulf-cloneable-helper").on("click",".ulf-cloneable-remove",c),n.children(".ulf-cloneable-hidden").children(".ulf-cloneable-helper").on("click",".ulf-cloneable-remove",c)})},I.fn.ulf_field_icon=function(){return this.each(function(){var n=I(this);n.on("click",".ulf-icon-add",function(e){e.preventDefault();var t=I(this),i=I("#ulf-modal-icon");i.removeClass("hidden"),T.vars.$icon_target=n,T.vars.icon_modal_loaded||(i.find(".ulf-modal-loading").show(),_.wp.ajax.post("ulf-get-icons",{nonce:t.data("nonce")}).done(function(e){i.find(".ulf-modal-loading").hide(),T.vars.icon_modal_loaded=!0;var n=i.find(".ulf-modal-load").html(e.content);n.on("click","i",function(e){e.preventDefault();var t=I(this).attr("title");T.vars.$icon_target.find(".ulf-icon-preview i").removeAttr("class").addClass(t),T.vars.$icon_target.find(".ulf-icon-preview").removeClass("hidden"),T.vars.$icon_target.find(".ulf-icon-remove").removeClass("hidden"),T.vars.$icon_target.find("input").val(t).trigger("change"),i.addClass("hidden")}),i.on("change keyup",".ulf-icon-search",function(){var t=I(this).val();n.find("i").each(function(){var e=I(this);e.attr("title").search(new RegExp(t,"i"))<0?e.hide():e.show()})}),i.on("click",".ulf-modal-close, .ulf-modal-overlay",function(){i.addClass("hidden")})}).fail(function(e){i.find(".ulf-modal-loading").hide(),i.find(".ulf-modal-load").html(e.error),i.on("click",function(){i.addClass("hidden")})}))}),n.on("click",".ulf-icon-remove",function(e){e.preventDefault(),n.find(".ulf-icon-preview").addClass("hidden"),n.find("input").val("").trigger("change"),I(this).addClass("hidden")})})},I.fn.ulf_field_map=function(){return this.each(function(){if("undefined"!=typeof L){var e=I(this),t=e.find(".ulf--map-osm"),n=e.find(".ulf--map-search input"),i=e.find(".ulf--latitude"),s=e.find(".ulf--longitude"),a=e.find(".ulf--zoom"),c=t.data("map"),r=L.map(t.get(0),c);L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:'&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}).addTo(r);var o=L.marker(c.center,{draggable:!0}).addTo(r),f=function(e){i.val(e.lat),s.val(e.lng),a.val(r.getZoom())};r.on("click",function(e){o.setLatLng(e.latlng),f(e.latlng)}),r.on("zoom",function(){f(o.getLatLng())}),o.on("drag",function(){f(o.getLatLng())}),n.length||(n=I('[data-depend-id="'+e.find(".ulf--address-field").data("address-field")+'"]'));var l={};n.autocomplete({source:function(e,n){var i=e.term;i in l?n(l[i]):I.get("https://nominatim.openstreetmap.org/search",{format:"json",q:i},function(e){var t;t=e.length?e.map(function(e){return{value:e.display_name,label:e.display_name,lat:e.lat,lon:e.lon}},"json"):[{value:"no-data",label:"No Results."}],l[i]=t,n(t)})},select:function(e,t){if("no-data"===t.item.value)return!1;var n=L.latLng(t.item.lat,t.item.lon);r.panTo(n),o.setLatLng(n),f(n)},create:function(e,t){I(this).autocomplete("widget").addClass("ulf-map-ui-autocomplate")}});var d=function(){var e=L.latLng(i.val(),s.val());r.panTo(e),o.setLatLng(e)};i.on("change",d),s.on("change",d)}})},I.fn.ulf_field_link=function(){return this.each(function(){var s=I(this),e=s.find(".ulf--link"),a=s.find(".ulf--add"),c=s.find(".ulf--edit"),r=s.find(".ulf--remove"),o=s.find(".ulf--result"),t=T.helper.uid("ulf-wplink-textarea-");a.on("click",function(e){e.preventDefault(),_.wpLink.open(t)}),c.on("click",function(e){e.preventDefault(),a.trigger("click"),I("#wp-link-url").val(s.find(".ulf--url").val()),I("#wp-link-text").val(s.find(".ulf--text").val()),I("#wp-link-target").prop("checked","_blank"===s.find(".ulf--target").val())}),r.on("click",function(e){e.preventDefault(),s.find(".ulf--url").val("").trigger("change"),s.find(".ulf--text").val(""),s.find(".ulf--target").val(""),a.removeClass("hidden"),c.addClass("hidden"),r.addClass("hidden"),o.parent().addClass("hidden")}),e.attr("id",t).on("change",function(){var e=_.wpLink.getAttrs(),t=e.href,n=I("#wp-link-text").val(),i=e.target?e.target:"";s.find(".ulf--url").val(t).trigger("change"),s.find(".ulf--text").val(n),s.find(".ulf--target").val(i),o.html('{url:"'+t+'", text:"'+n+'", target:"'+i+'"}'),a.addClass("hidden"),c.removeClass("hidden"),r.removeClass("hidden"),o.parent().removeClass("hidden")})})},I.fn.ulf_field_media=function(){return this.each(function(){var i,s=I(this),a=s.find(".ulf--button"),c=s.find(".ulf--remove"),r=a.data("library")&&a.data("library").split(",")||"",o=!!s.hasClass("ulf-assign-field-background")&&s.closest(".ulf-field-background").find(".ulf--auto-attributes");a.on("click",function(e){e.preventDefault(),void 0!==_.wp&&_.wp.media&&_.wp.media.gallery&&(i||(i=_.wp.media({library:{type:r}})).on("select",function(){var e,t=i.state().get("selection").first().attributes,n=a.data("preview-size")||"thumbnail";r.length&&-1===r.indexOf(t.subtype)&&-1===r.indexOf(t.type)||(s.find(".ulf--id").val(t.id),s.find(".ulf--width").val(t.width),s.find(".ulf--height").val(t.height),s.find(".ulf--alt").val(t.alt),s.find(".ulf--title").val(t.title),s.find(".ulf--description").val(t.description),e=void 0!==t.sizes&&void 0!==t.sizes.thumbnail&&"thumbnail"===n?t.sizes.thumbnail.url:void 0!==t.sizes&&void 0!==t.sizes.full?t.sizes.full.url:t.icon,o&&o.removeClass("ulf--attributes-hidden"),c.removeClass("hidden"),s.find(".ulf--preview").removeClass("hidden"),s.find(".ulf--src").attr("src",e),s.find(".ulf--thumbnail").val(e),s.find(".ulf--url").val(t.url).trigger("change"))}),i.open())}),c.on("click",function(e){e.preventDefault(),o&&o.addClass("ulf--attributes-hidden"),c.addClass("hidden"),s.find("input").val(""),s.find(".ulf--preview").addClass("hidden"),s.find(".ulf--url").trigger("change")})})},I.fn.ulf_field_repeater=function(){return this.each(function(){var e=I(this),t=e.children(".ulf-fieldset"),n=t.length?t:e,c=n.children(".ulf-repeater-wrapper"),i=n.children(".ulf-repeater-hidden"),r=n.children(".ulf-repeater-max"),o=n.children(".ulf-repeater-min"),f=c.data("field-id"),l=parseInt(c.data("max")),s=parseInt(c.data("min"));c.children(".ulf-repeater-item").children(".ulf-repeater-content").ulf_reload_script(),c.sortable({axis:"y",handle:".ulf-repeater-sort",helper:"original",cursor:"move",placeholder:"widget-placeholder",update:function(e,t){T.helper.name_nested_replace(c.children(".ulf-repeater-item"),f),c.ulf_customizer_refresh(),t.item.ulf_reload_script_retry()}}),n.children(".ulf-repeater-add").on("click",function(e){e.preventDefault();var t=c.children(".ulf-repeater-item").length;if(o.hide(),l&&l<t+1)r.show();else{var n=i.ulf_clone(!0);n.removeClass("ulf-repeater-hidden"),n.find(':input[name!="_pseudo"]').each(function(){this.name=this.name.replace("___","").replace(f+"[0]",f+"["+t+"]")}),c.append(n),n.children(".ulf-repeater-content").ulf_reload_script(),c.ulf_customizer_refresh(),c.ulf_customizer_listen({closest:!0})}});var a=function(e){e.preventDefault();var t=c.children(".ulf-repeater-item").length;if(o.hide(),l&&l<t+1)r.show();else{var n=I(this).parent().parent().parent(),i=n.children(".ulf-repeater-content").ulf_clone(),s=n.children(".ulf-repeater-helper").ulf_clone(!0),a=I('<div class="ulf-repeater-item" />');a.append(i),a.append(s),c.children().eq(n.index()).after(a),a.children(".ulf-repeater-content").ulf_reload_script(),T.helper.name_nested_replace(c.children(".ulf-repeater-item"),f),c.ulf_customizer_refresh(),c.ulf_customizer_listen({closest:!0})}};c.children(".ulf-repeater-item").children(".ulf-repeater-helper").on("click",".ulf-repeater-clone",a),n.children(".ulf-repeater-hidden").children(".ulf-repeater-helper").on("click",".ulf-repeater-clone",a);var d=function(e){e.preventDefault();var t=c.children(".ulf-repeater-item").length;r.hide(),o.hide(),s&&t-1<s?o.show():(I(this).closest(".ulf-repeater-item").remove(),T.helper.name_nested_replace(c.children(".ulf-repeater-item"),f),c.ulf_customizer_refresh())};c.children(".ulf-repeater-item").children(".ulf-repeater-helper").on("click",".ulf-repeater-remove",d),n.children(".ulf-repeater-hidden").children(".ulf-repeater-helper").on("click",".ulf-repeater-remove",d)})},I.fn.ulf_field_slider=function(){return this.each(function(){var e=I(this),n=e.find("input"),t=e.find(".ulf-slider-ui"),i=n.data(),s=n.val()||0;t.hasClass("ui-slider")&&t.empty(),t.slider({range:"min",value:s,min:i.min||0,max:i.max||100,step:i.step||1,slide:function(e,t){n.val(t.value).trigger("change")}}),n.on("keyup",function(){t.slider("value",n.val())})})},I.fn.ulf_field_sortable=function(){return this.each(function(){var n=I(this).find(".ulf-sortable");n.sortable({axis:"y",helper:"original",cursor:"move",placeholder:"widget-placeholder",update:function(e,t){n.ulf_customizer_refresh()}}),n.find(".ulf-sortable-content").ulf_reload_script()})},I.fn.ulf_field_sorter=function(){return this.each(function(){var i=I(this),e=i.find(".ulf-enabled"),t=i.find(".ulf-disabled"),n=!!t.length&&t;e.sortable({connectWith:n,placeholder:"ui-sortable-placeholder",update:function(e,t){var n=t.item.find("input");t.item.parent().hasClass("ulf-enabled")?n.attr("name",n.attr("name").replace("disabled","enabled")):n.attr("name",n.attr("name").replace("enabled","disabled")),i.ulf_customizer_refresh()}}),n&&n.sortable({connectWith:e,placeholder:"ui-sortable-placeholder",update:function(e,t){i.ulf_customizer_refresh()}})})},I.fn.ulf_field_spinner=function(){return this.each(function(){var e=I(this),n=e.find("input"),t=e.find(".ui-spinner-button"),i=n.data();t.length&&t.remove(),n.spinner({min:i.min||0,max:i.max||100,step:i.step||1,create:function(e,t){i.unit&&n.after('<span class="ui-button ulf--unit">'+i.unit+"</span>")},spin:function(e,t){n.val(t.value).trigger("change")}})})},I.fn.ulf_field_switcher=function(){return this.each(function(){var n=I(this).find(".ulf--switcher");n.on("click",function(){var e=0,t=n.find("input");n.hasClass("ulf--active")?n.removeClass("ulf--active"):(e=1,n.addClass("ulf--active")),t.val(e).trigger("change")})})},I.fn.ulf_field_tabbed=function(){return this.each(function(){var e=I(this),t=e.find(".ulf-tabbed-nav a"),s=e.find(".ulf-tabbed-content");s.eq(0).ulf_reload_script(),t.on("click",function(e){e.preventDefault();var t=I(this),n=t.index(),i=s.eq(n);t.addClass("ulf-tabbed-active").siblings().removeClass("ulf-tabbed-active"),i.ulf_reload_script(),i.removeClass("hidden").siblings().addClass("hidden")})})},I.fn.ulf_field_typography=function(){return this.each(function(){var j=this,L=I(this),i=[],q=ulf_typography_json.webfonts,t=ulf_typography_json.googlestyles,A=ulf_typography_json.defaultstyles;j.sanitize_subset=function(e){return e=(e=e.replace("-ext"," Extended")).charAt(0).toUpperCase()+e.slice(1)},j.sanitize_style=function(e){return t[e]?t[e]:e},j.load_google_font=function(e,t,n){e&&"object"==typeof WebFont&&(t=t?t.replace("normal",""):"",n=n?n.replace("normal",""):"",(t||n)&&(e=e+":"+t+n),-1===i.indexOf(e)&&WebFont.load({google:{families:[e]}}),i.push(e))},j.append_select_options=function(e,t,s,a,c){e.find("option").not(":first").remove();var r="";I.each(t,function(e,t){var n,i=t;n=c?s&&-1!==s.indexOf(t)?" selected":"":s&&s===t?" selected":"","subset"===a?i=j.sanitize_subset(t):"style"===a&&(i=j.sanitize_style(t)),r+='<option value="'+t+'"'+n+">"+i+"</option>"}),e.append(r).trigger("ulf.change").trigger("chosen:updated")},j.init=function(){var l=[],e=L.find(".ulf--typography"),d=L.find(".ulf--type"),h=L.find(".ulf--block-font-style"),v=e.data("unit"),g=e.data("line-height-unit"),t=e.data("exclude")?e.data("exclude").split(","):[];L.find(".ulf--chosen").length&&L.find("select").each(function(){var e=I(this),t=e.parent().find(".chosen-container");t.length&&t.remove(),e.chosen({allow_single_deselect:!0,disable_search_threshold:15,width:"100%"})});var m=L.find(".ulf--font-family"),i=m.val();m.find("option").not(":first-child").remove();var s="";I.each(q,function(n,e){t&&-1!==t.indexOf(n)||(s+='<optgroup label="'+e.label+'">',I.each(e.fonts,function(e,t){s+='<option value="'+(t="object"==typeof t?e:t)+'" data-type="'+n+'"'+(t===i?" selected":"")+">"+t+"</option>"}),s+="</optgroup>")}),m.append(s).trigger("chosen:updated");var p=L.find(".ulf--block-font-style");if(p.length){var u=L.find(".ulf--font-style-select"),_=u.val()?u.val().replace(/normal/g,""):"";u.on("change ulf.change",function(e){var t=u.val();!t&&l&&-1===l.indexOf("normal")&&(t=l[0]);var n=t&&"italic"!==t&&"normal"===t?"normal":"",i=t&&"italic"!==t&&"normal"!==t?t.replace("italic",""):n,s=t&&"italic"===t.substr(-6)?"italic":"";L.find(".ulf--font-weight").val(i),L.find(".ulf--font-style").val(s)});var b=L.find(".ulf--block-extra-styles");if(b.length)var y=L.find(".ulf--extra-styles"),w=y.val()}var C=L.find(".ulf--block-subset");if(C.length)var k=L.find(".ulf--subset"),x=k.val(),z=k.data("multiple")||!1;var D=L.find(".ulf--block-backup-font-family");m.on("change ulf.change",function(e){C.length&&C.addClass("hidden"),b.length&&b.addClass("hidden"),D.length&&D.addClass("hidden");var t=m.find(":selected"),n=t.val(),i=t.data("type");if(i&&n){if("google"!==i&&"custom"!==i||!D.length||D.removeClass("hidden"),p.length){var s=A;"google"===i&&q[i].fonts[n][0]?s=q[i].fonts[n][0]:"custom"===i&&q[i].fonts[n]&&(s=q[i].fonts[n]);var a=-1!==(l=s).indexOf("normal")?"normal":s[0],c=_&&-1!==s.indexOf(_)?_:a;j.append_select_options(u,s,c,"style"),_=!1,p.removeClass("hidden"),"google"===i&&b.length&&1<s.length&&(j.append_select_options(y,s,w,"style",!0),w=!1,b.removeClass("hidden"))}if("google"===i&&C.length&&q[i].fonts[n][1]){var r=q[i].fonts[n][1],o=r.length<2&&"latin"!==r[0]?r[0]:"",f=x&&-1!==r.indexOf(x)?x:o;f=z&&x?x:f,j.append_select_options(k,r,f,"subset",z),x=!1,C.removeClass("hidden")}}else h.find(":input").val(""),C.length&&(k.find("option").not(":first-child").remove(),k.trigger("chosen:updated")),p.length&&(u.find("option").not(":first-child").remove(),u.trigger("chosen:updated"));d.val(i)}).trigger("ulf.change");var O=L.find(".ulf--block-preview");if(O.length){var S=L.find(".ulf--preview");L.on("change",T.helper.debounce(function(e){O.removeClass("hidden");var t=m.val(),n=L.find(".ulf--font-weight").val(),i=L.find(".ulf--font-style").val(),s=L.find(".ulf--font-size").val(),a=L.find(".ulf--font-variant").val(),c=L.find(".ulf--line-height").val(),r=L.find(".ulf--text-align").val(),o=L.find(".ulf--text-transform").val(),f=L.find(".ulf--text-decoration").val(),l=L.find(".ulf--color").val(),d=L.find(".ulf--word-spacing").val(),h=L.find(".ulf--letter-spacing").val(),p=L.find(".ulf--custom-style").val();"google"===L.find(".ulf--type").val()&&j.load_google_font(t,n,i);var u={};t&&(u.fontFamily=t),n&&(u.fontWeight=n),i&&(u.fontStyle=i),a&&(u.fontVariant=a),s&&(u.fontSize=s+v),c&&(u.lineHeight=c+g),h&&(u.letterSpacing=h+v),d&&(u.wordSpacing=d+v),r&&(u.textAlign=r),o&&(u.textTransform=o),f&&(u.textDecoration=f),l&&(u.color=l),S.removeAttr("style"),p&&S.attr("style",p),S.css(u)},100)),O.on("click",function(){S.toggleClass("ulf--black-background");var e=O.find(".ulf--toggle");e.hasClass("fa-toggle-off")?e.removeClass("fa-toggle-off").addClass("fa-toggle-on"):e.removeClass("fa-toggle-on").addClass("fa-toggle-off")}),O.hasClass("hidden")||L.trigger("change")}},j.init()})},I.fn.ulf_field_upload=function(){return this.each(function(){var t,e=I(this),n=e.find("input"),i=e.find(".ulf--button"),s=e.find(".ulf--remove"),a=i.data("library")&&i.data("library").split(",")||"";n.on("change",function(e){n.val()?s.removeClass("hidden"):s.addClass("hidden")}),i.on("click",function(e){e.preventDefault(),void 0!==_.wp&&_.wp.media&&_.wp.media.gallery&&(t||(t=_.wp.media({library:{type:a}})).on("select",function(){var e=t.state().get("selection").first().attributes;a.length&&-1===a.indexOf(e.subtype)&&-1===a.indexOf(e.type)||n.val(e.url).trigger("change")}),t.open())}),s.on("click",function(e){e.preventDefault(),n.val("").trigger("change")})})},I.fn.ulf_field_wp_editor=function(){return this.each(function(){if(void 0!==_.wp.editor&&void 0!==_.tinyMCEPreInit&&void 0!==_.tinyMCEPreInit.mceInit.ulf_wp_editor){var e=I(this),t=e.find(".ulf-wp-editor"),n=e.find("textarea");(e.find(".wp-editor-wrap").length||e.find(".mce-container").length)&&(t.empty(),t.append(n),n.css("display",""));var i=T.helper.uid("ulf-editor-");n.attr("id",i);var s={tinymce:_.tinyMCEPreInit.mceInit.ulf_wp_editor,quicktags:_.tinyMCEPreInit.qtInit.ulf_wp_editor},a=t.data("editor-settings"),c=wp.oldEditor?wp.oldEditor:wp.editor;c&&c.hasOwnProperty("autop")&&(wp.editor.autop=c.autop,wp.editor.removep=c.removep,wp.editor.initialize=c.initialize);s.tinymce=I.extend({},s.tinymce,{selector:"#"+i,setup:function(t){t.on("change keyup",function(){var e=a.wpautop?t.getContent():wp.editor.removep(t.getContent());n.val(e).trigger("change")})}}),!1===a.tinymce&&(s.tinymce=!1,t.addClass("ulf-no-tinymce")),!1===a.quicktags&&(s.quicktags=!1,t.addClass("ulf-no-quicktags"));var r=setInterval(function(){e.is(":visible")&&(_.wp.editor.initialize(i,s),clearInterval(r))});if(a.media_buttons&&_.ulf_media_buttons){var o=t.find(".wp-media-buttons");if(o.length)o.find(".ulf-shortcode-button").data("editor-id",i);else{var f=I(_.ulf_media_buttons);f.find(".ulf-shortcode-button").data("editor-id",i),t.prepend(f)}}}})},I.fn.ulf_confirm=function(){return this.each(function(){I(this).on("click",function(e){var t=I(this).data("confirm")||_.ulf_vars.i18n.confirm;if(!confirm(t))return e.preventDefault(),!1;T.vars.is_confirm=!0,T.vars.form_modified=!1})})},I.fn.serializeObject=function(){var s={};return I.each(this.serializeArray(),function(e,t){var n=t.name,i=t.value;s[n]=s[n]===y?i:I.isArray(s[n])?s[n].concat(i):[s[n],i]}),s},I.fn.ulf_save=function(){return this.each(function(){var i,s=I(this),c=I(".ulf-save"),r=I(".ulf-options"),o=!1;s.on("click",function(e){if(!o){var t=s.data("save"),n=s.val();c.attr("value",t),s.hasClass("ulf-save-ajax")?(e.preventDefault(),r.addClass("ulf-saving"),c.prop("disabled",!0),_.wp.ajax.post("ulf_"+r.data("unique")+"_ajax_save",{data:I("#ulf-form").serializeJSONULF()}).done(function(e){if(I(".ulf-error").remove(),Object.keys(e.errors).length){var a='<i class="ulf-label-error ulf-error">!</i>';I.each(e.errors,function(e,t){var n=I('[data-depend-id="'+e+'"]'),i=I("#ulf-tab-link-"+(n.closest(".ulf-section").index()+1)),s=i.closest(".ulf-tab-depth-0");n.closest(".ulf-fieldset").append('<p class="ulf-error ulf-error-text">'+t+"</p>"),i.find(".ulf-error").length||i.append(a),s.find(".ulf-arrow .ulf-error").length||s.find(".ulf-arrow").append(a)})}r.removeClass("ulf-saving"),c.prop("disabled",!1).attr("value",n),o=!1,T.vars.form_modified=!1,T.vars.$form_warning.hide(),clearTimeout(i);var t=I(".ulf-form-success");t.empty().append(e.notice).fadeIn("fast",function(){i=setTimeout(function(){t.fadeOut("fast")},1e3)})}).fail(function(e){alert(e.error)})):T.vars.form_modified=!1}o=!0})})},I.fn.ulf_options=function(){return this.each(function(){var e=I(this),t=e.find(".ulf-content"),n=e.find(".ulf-form-success"),i=e.find(".ulf-form-warning"),s=e.find(".ulf-header .ulf-save");(T.vars.$form_warning=i).length&&(_.onbeforeunload=function(){return!!T.vars.form_modified||y},t.on("change keypress",":input",function(){T.vars.form_modified||(n.hide(),i.fadeIn("fast"),T.vars.form_modified=!0)})),n.hasClass("ulf-form-show")&&setTimeout(function(){n.fadeOut("fast")},1e3),I(b).keydown(function(e){if((e.ctrlKey||e.metaKey)&&83===e.which)return s.trigger("click"),e.preventDefault(),!1})})},I.fn.ulf_taxonomy=function(){return this.each(function(){var e=I(this),t=e.parents("form");if("addtag"===t.attr("id")){var n=t.find("#submit"),i=e.find(".ulf-field").ulf_clone();n.on("click",function(){t.find(".form-required").hasClass("form-invalid")||(e.data("inited",!1),e.empty(),e.html(i),i=i.ulf_clone(),e.ulf_reload_script())})}})},I.fn.ulf_shortcode=function(){var m=this;return m.shortcode_parse=function(e,n){var i="";return I.each(e,function(e,t){i+="["+(n=n||e),I.each(t,function(e,t){"content"===e?(i+="]",i+=t,i+="[/"+n):i+=m.shortcode_tags(e,t)}),i+="]"}),i},m.shortcode_tags=function(e,t){var n="";return""!==t&&("object"!=typeof t||I.isArray(t)?n+=" "+e.replace("-","_")+'="'+t.toString()+'"':I.each(t,function(e,t){switch(e){case"background-image":t=t.url?t.url:""}""!==t&&(n+=" "+e.replace("-","_")+'="'+t.toString()+'"')})),n},m.insertAtChars=function(e,t){var n=void 0!==e[0].name?e[0]:e;return n.value.length&&void 0!==n.selectionStart?(n.focus(),n.value.substring(0,n.selectionStart)+t+n.value.substring(n.selectionEnd,n.value.length)):(n.focus(),t)},m.send_to_editor=function(e,t){var n;if("undefined"!=typeof tinymce&&(n=tinymce.get(t)),n&&!n.isHidden())n.execCommand("mceInsertContent",!1,e);else{var i=I("#"+t);i.val(m.insertAtChars(i,e)).trigger("change")}},this.each(function(){var c,r,o,n,f,l,d,s,h,p=I(this),i=p.find(".ulf-modal-load"),u=(p.find(".ulf-modal-content"),p.find(".ulf-modal-insert")),a=p.find(".ulf-modal-loading"),t=p.find("select"),v=p.data("modal-id"),g=p.data("nonce");I(b).on("click",'.ulf-shortcode-button[data-modal-id="'+v+'"]',function(e){e.preventDefault(),h=I(this),c=h.data("editor-id")||!1,r=h.data("target-id")||!1,o=h.data("gutenberg-id")||!1,p.removeClass("hidden"),p.hasClass("ulf-shortcode-single")&&f===y&&t.trigger("change")}),t.on("change",function(){var e=I(this),t=e.find(":selected");n=e.val(),f=t.data("shortcode"),l=t.data("view")||"normal",d=t.data("group")||f,i.empty(),n?(a.show(),_.wp.ajax.post("ulf-get-shortcode-"+v,{shortcode_key:n,nonce:g}).done(function(e){a.hide();var t=I(e.content).appendTo(i);u.parent().removeClass("hidden"),s=t.find(".ulf--repeat-shortcode").ulf_clone(),t.ulf_reload_script(),t.find(".ulf-fields").ulf_reload_script()})):u.parent().addClass("hidden")}),u.on("click",function(e){if(e.preventDefault(),!u.prop("disabled")&&!u.attr("disabled")){var i="",t=p.find(".ulf-field:not(.ulf-depend-on)").find(":input:not(.ignore)").serializeObjectULF();switch(l){case"contents":var n=f?t[f]:t;I.each(n,function(e,t){var n=f||e;i+="["+n+"]"+t+"[/"+n+"]"});break;case"group":i+="["+f,I.each(t[f],function(e,t){i+=m.shortcode_tags(e,t)}),i+="]",i+=m.shortcode_parse(t[d],d),i+="[/"+f+"]";break;case"repeater":i+=m.shortcode_parse(t[d],d);break;default:i+=m.shortcode_parse(t)}if(i=""===i?"["+f+"]":i,o){var s=_.ulf_gutenberg_props.attributes.hasOwnProperty("shortcode")?_.ulf_gutenberg_props.attributes.shortcode:"";_.ulf_gutenberg_props.setAttributes({shortcode:s+i})}else if(c)m.send_to_editor(i,c);else{var a=r?I(r):h.parent().find("textarea");a.val(m.insertAtChars(a,i)).trigger("change")}p.addClass("hidden")}}),p.on("click",".ulf--repeat-button",function(e){e.preventDefault();var t=p.find(".ulf--repeatable"),n=s.ulf_clone(),i=n.find(".ulf-repeat-remove");n.appendTo(t);n.find(".ulf-fields").ulf_reload_script(),T.helper.name_nested_replace(p.find(".ulf--repeat-shortcode"),d),i.on("click",function(){n.remove(),T.helper.name_nested_replace(p.find(".ulf--repeat-shortcode"),d)})}),p.on("click",".ulf-modal-close, .ulf-modal-overlay",function(){p.addClass("hidden")})})},"function"==typeof Color&&(Color.prototype.toString=function(){if(this._alpha<1)return this.toCSS("rgba",this._alpha).replace(/\s+/g,"");var e=parseInt(this._color,10).toString(16);if(this.error)return"";if(e.length<6)for(var t=6-e.length-1;0<=t;t--)e="0"+e;return"#"+e}),T.funcs.parse_color=function(e){var t=e.replace(/\s+/g,""),n=-1!==t.indexOf("rgba")?parseFloat(100*t.replace(/^.*,(.+)\)/,"$1")):100;return{value:t,transparent:n,rgba:n<100}},I.fn.ulf_color=function(){return this.each(function(){var c,r=I(this),o=T.funcs.parse_color(r.val()),e=!_.ulf_vars.color_palette.length||_.ulf_vars.color_palette;r.hasClass("wp-color-picker")&&r.closest(".wp-picker-container").after(r).remove(),r.wpColorPicker({palettes:e,change:function(e,t){var n=t.color.toString();c.removeClass("ulf--transparent-active"),c.find(".ulf--transparent-offset").css("background-color",n),r.val(n).trigger("change")},create:function(){c=r.closest(".wp-picker-container");var i=r.data("a8cIris"),e=I('<div class="ulf--transparent-wrap"><div class="ulf--transparent-slider"></div><div class="ulf--transparent-offset"></div><div class="ulf--transparent-text"></div><div class="ulf--transparent-button">transparent <i class="fas fa-toggle-off"></i></div></div>').appendTo(c.find(".wp-picker-holder")),s=e.find(".ulf--transparent-slider"),a=e.find(".ulf--transparent-text"),n=e.find(".ulf--transparent-offset"),t=e.find(".ulf--transparent-button");"transparent"===r.val()&&c.addClass("ulf--transparent-active"),t.on("click",function(){"transparent"!==r.val()?(r.val("transparent").trigger("change").removeClass("iris-error"),c.addClass("ulf--transparent-active")):(r.val(i._color.toString()).trigger("change"),c.removeClass("ulf--transparent-active"))}),s.slider({value:o.transparent,step:1,min:0,max:100,slide:function(e,t){var n=parseFloat(t.value/100);i._color._alpha=n,r.wpColorPicker("color",i._color.toString()),a.text(1===n||0===n?"":n)},create:function(){var e=parseFloat(o.transparent/100),t=e<1?e:"";a.text(t),n.css("background-color",o.value),c.on("click",".wp-picker-clear",function(){i._color._alpha=1,a.text(""),s.slider("option","value",100),c.removeClass("ulf--transparent-active"),r.trigger("change")}),c.on("click",".wp-picker-default",function(){var e=T.funcs.parse_color(r.data("default-color")),t=parseFloat(e.transparent/100),n=t<1?t:"";i._color._alpha=t,a.text(n),s.slider("option","value",e.transparent),"transparent"===e.value&&(r.removeClass("iris-error"),c.addClass("ulf--transparent-active"))})}})}})})},I.fn.ulf_chosen=function(){return this.each(function(){var a=I(this),e=a.parent().find(".chosen-container"),t=a.hasClass("ulf-chosen-sortable")||!1,n=a.hasClass("ulf-chosen-ajax")||!1,i=a.attr("multiple")||!1,s=i?"100%":"auto",c=I.extend({allow_single_deselect:!0,disable_search_threshold:10,width:s,no_results_text:_.ulf_vars.i18n.no_results_text},a.data("chosen-settings"));if(e.length&&e.remove(),n){var r=I.extend({data:{type:"post",nonce:""},allow_single_deselect:!0,disable_search_threshold:-1,width:"100%",min_length:3,type_delay:500,typing_text:_.ulf_vars.i18n.typing_text,searching_text:_.ulf_vars.i18n.searching_text,no_results_text:_.ulf_vars.i18n.no_results_text},a.data("chosen-settings"));a.ULFAjaxChosen(r)}else a.chosen(c);if(i){var o=a.parent().find(".ulf-hide-select"),f=o.val()||[];a.on("change",function(e,t){t&&t.selected?o.append('<option value="'+t.selected+'" selected="selected">'+t.selected+"</option>"):t&&t.deselected&&o.find('option[value="'+t.deselected+'"]').remove(),_.wp.customize!==y&&0===o.children().length&&o.data("customize-setting-link")&&_.wp.customize.control(o.data("customize-setting-link")).setting.set(""),o.trigger("change")}),a.ULFChosenOrder(f,!0)}if(t){var l=a.parent().find(".chosen-container").find(".chosen-choices");l.bind("mousedown",function(e){I(e.target).is("span")&&e.stopPropagation()}),l.sortable({items:"li:not(.search-field)",helper:"orginal",cursor:"move",placeholder:"search-choice-placeholder",start:function(e,t){t.placeholder.width(t.item.innerWidth()),t.placeholder.height(t.item.innerHeight())},update:function(e,t){var i="",s=a.data("chosen"),n=a.parent().find(".ulf-hide-select");l.find(".search-choice-close").each(function(){var n=I(this).data("option-array-index");I.each(s.results_data,function(e,t){t.array_index===n&&(i+='<option value="'+t.value+'" selected>'+t.value+"</option>")})}),n.children().remove(),n.append(i),n.trigger("change")}})}})},I.fn.ulf_checkbox=function(){return this.each(function(){var e=I(this),t=e.find(".ulf--input"),n=e.find(".ulf--checkbox");n.on("click",function(){t.val(Number(n.prop("checked"))).trigger("change")})})},I.fn.ulf_siblings=function(){return this.each(function(){var t=I(this),e=t.find(".ulf--sibling"),n=t.data("multiple")||!1;e.on("click",function(){var e=I(this);n?e.hasClass("ulf--active")?(e.removeClass("ulf--active"),e.find("input").prop("checked",!1).trigger("change")):(e.addClass("ulf--active"),e.find("input").prop("checked",!0).trigger("change")):(t.find("input").prop("checked",!1),e.find("input").prop("checked",!0).trigger("change"),e.addClass("ulf--active").siblings().removeClass("ulf--active"))})})},I.fn.ulf_help=function(){return this.each(function(){var e,t,n=I(this);n.on({mouseenter:function(){e=I('<div class="ulf-tooltip"></div>').html(n.find(".ulf-help-text").html()).appendTo("body"),t=T.vars.is_rtl?n.offset().left+24:n.offset().left-e.outerWidth(),e.css({top:n.offset().top-(e.outerHeight()/2-14),left:t})},mouseleave:function(){e!==y&&e.remove()}})})},I.fn.ulf_customizer_refresh=function(){return this.each(function(){var e=I(this),t=e.closest(".ulf-customize-complex");if(t.length){var n=t.data("unique-id");if(n===y)return;var i=t.find(":input"),s=t.data("option-id"),a=i.serializeObjectULF(),c=!I.isEmptyObject(a)&&a[n]&&a[n][s]?a[n][s]:"",r=_.wp.customize.control(n+"["+s+"]");r.setting._value=null,r.setting.set(c)}else e.find(":input").first().trigger("change");I(b).trigger("ulf-customizer-refresh",e)})},I.fn.ulf_customizer_listen=function(e){var t=I.extend({closest:!1},e);return this.each(function(){if(_.wp.customize!==y){var n=t.closest?I(this).closest(".ulf-customize-complex"):I(this),e=n.find(":input"),i=n.data("unique-id"),s=n.data("option-id");i!==y&&e.on("change keyup",function(){var e=n.find(":input").serializeObjectULF(),t=!I.isEmptyObject(e)&&e[i]&&e[i][s]?e[i][s]:"";_.wp.customize.control(i+"["+s+"]").setting.set(t)})}})},I(b).on("expanded",".control-section",function(){var e=I(this);if(e.hasClass("open")&&!e.data("inited")){var t=e.find(".ulf-customize-field"),n=e.find(".ulf-customize-complex");t.length&&(e.ulf_dependency(),t.ulf_reload_script({dependency:!1}),n.ulf_customizer_listen()),e.data("inited",!0)}}),T.vars.$window.on("resize ulf.resize",T.helper.debounce(function(e){(-1<navigator.userAgent.indexOf("AppleWebKit/")?T.vars.$window.width():_.innerWidth)<=782&&!T.vars.onloaded&&(I(".ulf-section").ulf_reload_script(),T.vars.onloaded=!0)},200)).trigger("ulf.resize"),I.fn.ulf_widgets=function(){this.length&&(I(b).on("widget-added widget-updated",function(e,t){t.find(".ulf-fields").ulf_reload_script()}),I(".widgets-sortables, .control-section-sidebar").on("sortstop",function(e,t){t.item.find(".ulf-fields").ulf_reload_script_retry()}),I(b).on("click",".widget-top",function(e){I(this).parent().find(".ulf-fields").ulf_reload_script()}))},I.fn.ulf_nav_menu=function(){return this.each(function(){var e=I(this);e.on("click","a.item-edit",function(){I(this).closest("li.menu-item").find(".ulf-fields").ulf_reload_script()}),e.on("sortstop",function(e,t){t.item.find(".ulf-fields").ulf_reload_script_retry()})})},I.fn.ulf_reload_script_retry=function(){return this.each(function(){var e=I(this);e.data("inited")&&e.children(".ulf-field-wp_editor").ulf_field_wp_editor()})},I.fn.ulf_reload_script=function(e){var t=I.extend({dependency:!0},e);return this.each(function(){var e=I(this);e.data("inited")||(e.children(".ulf-field-accordion").ulf_field_accordion(),e.children(".ulf-field-backup").ulf_field_backup(),e.children(".ulf-field-background").ulf_field_background(),e.children(".ulf-field-code_editor").ulf_field_code_editor(),e.children(".ulf-field-date").ulf_field_date(),e.children(".ulf-field-fieldset").ulf_field_fieldset(),e.children(".ulf-field-gallery").ulf_field_gallery(),e.children(".ulf-field-group").ulf_field_group(),e.children(".ulf-field-icon").ulf_field_icon(),e.children(".ulf-field-link").ulf_field_link(),e.children(".ulf-field-media").ulf_field_media(),e.children(".ulf-field-map").ulf_field_map(),e.children(".ulf-field-repeater").ulf_field_repeater(),e.children(".ulf-field-slider").ulf_field_slider(),e.children(".ulf-field-sortable").ulf_field_sortable(),e.children(".ulf-field-sorter").ulf_field_sorter(),e.children(".ulf-field-spinner").ulf_field_spinner(),e.children(".ulf-field-switcher").ulf_field_switcher(),e.children(".ulf-field-tabbed").ulf_field_tabbed(),e.children(".ulf-field-typography").ulf_field_typography(),e.children(".ulf-field-upload").ulf_field_upload(),e.children(".ulf-field-wp_editor").ulf_field_wp_editor(),e.children(".ulf-field-border").find(".ulf-color").ulf_color(),e.children(".ulf-field-background").find(".ulf-color").ulf_color(),e.children(".ulf-field-color").find(".ulf-color").ulf_color(),e.children(".ulf-field-color_group").find(".ulf-color").ulf_color(),e.children(".ulf-field-link_color").find(".ulf-color").ulf_color(),e.children(".ulf-field-typography").find(".ulf-color").ulf_color(),e.children(".ulf-field-select").find(".ulf-chosen").ulf_chosen(),e.children(".ulf-field-checkbox").find(".ulf-checkbox").ulf_checkbox(),e.children(".ulf-field-button_set").find(".ulf-siblings").ulf_siblings(),e.children(".ulf-field-image_select").find(".ulf-siblings").ulf_siblings(),e.children(".ulf-field-palette").find(".ulf-siblings").ulf_siblings(),e.children(".ulf-field").find(".ulf-help").ulf_help(),t.dependency&&e.ulf_dependency(),e.data("inited",!0),I(b).trigger("ulf-reload-script",e))})},I(b).ready(function(){I(".ulf-save").ulf_save(),I(".ulf-options").ulf_options(),I(".ulf-sticky-header").ulf_sticky(),I(".ulf-nav-options").ulf_nav_options(),I(".ulf-nav-metabox").ulf_nav_metabox(),I(".ulf-taxonomy").ulf_taxonomy(),I(".ulf-page-templates").ulf_page_templates(),I(".ulf-post-formats").ulf_post_formats(),I(".ulf-shortcode").ulf_shortcode(),I(".ulf-search").ulf_search(),I(".ulf-confirm").ulf_confirm(),I(".ulf-expand-all").ulf_expand_all(),I(".ulf-onload").ulf_reload_script(),I(".widget").ulf_widgets(),I("#menu-to-edit").ulf_nav_menu()})}(jQuery,window,document);
1
+ /* Codestar Framework | A Simple and Lightweight WordPress Option Framework - v2.2.2*/
2
 
3
+ !function(I,_,b,y){"use strict";var T=T||{};T.funcs={},T.vars={onloaded:!1,$body:I("body"),$window:I(_),$document:I(b),$form_warning:null,is_confirm:!1,form_modified:!1,code_themes:[],is_rtl:I("body").hasClass("rtl")},T.helper={uid:function(e){return(e||"")+Math.random().toString(36).substr(2,9)},preg_quote:function(e){return(e+"").replace(/(\[|\])/g,"\\$1")},name_nested_replace:function(e,t){var n=new RegExp(T.helper.preg_quote(t+"[\\d+]"),"g");e.find(":radio").each(function(){(this.checked||this.orginal_checked)&&(this.orginal_checked=!0)}),e.each(function(e){I(this).find(":input").each(function(){this.name=this.name.replace(n,t+"["+e+"]"),this.orginal_checked&&(this.checked=!0)})})},debounce:function(i,s,a){var c;return function(){var e=this,t=arguments,n=a&&!c;clearTimeout(c),c=setTimeout(function(){c=null,a||i.apply(e,t)},s),n&&i.apply(e,t)}}},I.fn.ulf_clone=function(){for(var e=I.fn.clone.apply(this,arguments),t=this.find("select").add(this.filter("select")),n=e.find("select").add(e.filter("select")),i=0;i<t.length;++i)for(var s=0;s<t[i].options.length;++s)!0===t[i].options[s].selected&&(n[i].options[s].selected=!0);return this.find(":radio").each(function(){this.orginal_checked=this.checked}),e},I.fn.ulf_expand_all=function(){return this.each(function(){I(this).on("click",function(e){e.preventDefault(),I(".ulf-wrapper").toggleClass("ulf-show-all"),I(".ulf-section").ulf_reload_script(),I(this).find(".fa").toggleClass("fa-indent").toggleClass("fa-outdent")})})},I.fn.ulf_nav_options=function(){return this.each(function(){var s,a=I(this).find("a");I(_).on("hashchange ulf.hashchange",function(){var e=_.location.hash.replace("#tab=",""),t=e||a.first().attr("href").replace("#tab=",""),n=I('[data-tab-id="'+t+'"]');if(n.length){n.closest(".ulf-tab-item").addClass("ulf-tab-expanded").siblings().removeClass("ulf-tab-expanded"),n.next().is("ul")&&(t=(n=n.next().find("li").first().find("a")).data("tab-id")),a.removeClass("ulf-active"),n.addClass("ulf-active"),s&&s.addClass("hidden");var i=I('[data-section-id="'+t+'"]');i.removeClass("hidden"),i.ulf_reload_script(),I(".ulf-section-id").val(i.index()+1),s=i}}).trigger("ulf.hashchange")})},I.fn.ulf_nav_metabox=function(){return this.each(function(){var s,e=I(this),a=e.find("a"),c=e.parent().find(".ulf-section");a.each(function(i){I(this).on("click",function(e){e.preventDefault();var t=I(this);a.removeClass("ulf-active"),t.addClass("ulf-active"),s!==y&&s.addClass("hidden");var n=c.eq(i);n.removeClass("hidden"),n.ulf_reload_script(),s=n})}),a.first().trigger("click")})},I.fn.ulf_page_templates=function(){this.length&&I(b).on("change",".editor-page-attributes__template select, #page_template",function(){var e=I(this).val()||"default";I(".ulf-page-templates").removeClass("ulf-metabox-show").addClass("ulf-metabox-hide"),I(".ulf-page-"+e.toLowerCase().replace(/[^a-zA-Z0-9]+/g,"-")).removeClass("ulf-metabox-hide").addClass("ulf-metabox-show")})},I.fn.ulf_post_formats=function(){this.length&&I(b).on("change",'.editor-post-format select, #formatdiv input[name="post_format"]',function(){var e=I(this).val()||"default";e="0"===e?"default":e,I(".ulf-post-formats").removeClass("ulf-metabox-show").addClass("ulf-metabox-hide"),I(".ulf-post-format-"+e).removeClass("ulf-metabox-hide").addClass("ulf-metabox-show")})},I.fn.ulf_search=function(){return this.each(function(){I(this).find("input").on("change keyup",function(){var n=I(this).val(),e=I(".ulf-wrapper"),t=e.find(".ulf-section").find("> .ulf-field:not(.ulf-depend-on)"),i=t.find("> .ulf-title, .ulf-search-tags");3<n.length?(t.addClass("ulf-metabox-hide"),e.addClass("ulf-search-all"),i.each(function(){var e=I(this);if(e.text().match(new RegExp(".*?"+n+".*?","i"))){var t=e.closest(".ulf-field");t.removeClass("ulf-metabox-hide"),t.parent().ulf_reload_script()}})):(t.removeClass("ulf-metabox-hide"),e.removeClass("ulf-search-all"))})})},I.fn.ulf_sticky=function(){return this.each(function(){var i=I(this),e=I(_),s=i.find(".ulf-header-inner"),a=parseInt(s.css("padding-left"))+parseInt(s.css("padding-right")),c=0,r=!1,t=function(){r||requestAnimationFrame(function(){var e,t,n;e=i.offset().top,t=Math.max(32,e-c),n=Math.max(b.documentElement.clientWidth,_.innerWidth||0),t<=32&&782<n?(s.css({width:i.outerWidth()-a}),i.css({height:i.outerHeight()}).addClass("ulf-sticky")):(s.removeAttr("style"),i.removeAttr("style").removeClass("ulf-sticky")),r=!1}),r=!0},n=function(){c=e.scrollTop(),t()};e.on("scroll resize",n),n()})},I.fn.ulf_dependency=function(){return this.each(function(){var e=I(this),t=e.children("[data-controller]");if(t.length){var n=I.ulf_deps.createRuleset(),i=I.ulf_deps.createRuleset(),f=[],l=[];t.each(function(){var s=I(this),e=s.data("controller").split("|"),a=s.data("condition").split("|"),c=s.data("value").toString().split("|"),r=!!s.data("depend-global"),o=r?i:n;I.each(e,function(e,t){var n=c[e]||"",i=a[e]||a[0];(o=o.createRule('[data-depend-id="'+t+'"]',i,n)).include(s),r?l.push(t):f.push(t)})}),f.length&&I.ulf_deps.enable(e,n,f),l.length&&I.ulf_deps.enable(T.vars.$body,i,l)}})},I.fn.ulf_field_accordion=function(){return this.each(function(){I(this).find(".ulf-accordion-title").on("click",function(){var e=I(this),t=e.find(".ulf-accordion-icon"),n=e.next();t.hasClass("fa-angle-right")?t.removeClass("fa-angle-right").addClass("fa-angle-down"):t.removeClass("fa-angle-down").addClass("fa-angle-right"),n.data("opened")||(n.ulf_reload_script(),n.data("opened",!0)),n.toggleClass("ulf-accordion-open")})})},I.fn.ulf_field_backup=function(){return this.each(function(){if(_.wp.customize!==y){var t=this,n=I(this),i=(I("body"),n.find(".ulf-import")),s=n.find(".ulf-reset");t.notificationOverlay=function(){wp.customize.notifications&&wp.customize.OverlayNotification&&(wp.customize.state("saved").get()||(wp.customize.state("changesetStatus").set("trash"),wp.customize.each(function(e){e._dirty=!1}),wp.customize.state("saved").set(!0)),wp.customize.notifications.add(new wp.customize.OverlayNotification("ulf_field_backup_notification",{type:"default",message:"&nbsp;",loading:!0})))},s.on("click",function(e){e.preventDefault(),T.vars.is_confirm&&(t.notificationOverlay(),_.wp.ajax.post("ulf-reset",{unique:s.data("unique"),nonce:s.data("nonce")}).done(function(e){_.location.reload(!0)}).fail(function(e){alert(e.error),wp.customize.notifications.remove("ulf_field_backup_notification")}))}),i.on("click",function(e){e.preventDefault(),T.vars.is_confirm&&(t.notificationOverlay(),_.wp.ajax.post("ulf-import",{unique:i.data("unique"),nonce:i.data("nonce"),data:n.find(".ulf-import-data").val()}).done(function(e){_.location.reload(!0)}).fail(function(e){alert(e.error),wp.customize.notifications.remove("ulf_field_backup_notification")}))})}})},I.fn.ulf_field_background=function(){return this.each(function(){I(this).find(".ulf--background-image").ulf_reload_script()})},I.fn.ulf_field_code_editor=function(){return this.each(function(){if("function"==typeof CodeMirror){var t=I(this),i=t.find("textarea"),e=t.find(".CodeMirror"),s=i.data("editor");e.length&&e.remove();var a=setInterval(function(){if(t.is(":visible")){var n=CodeMirror.fromTextArea(i[0],s);if("default"!==s.theme&&-1===T.vars.code_themes.indexOf(s.theme)){var e=I("<link>");I("#ulf-codemirror-css").after(e),e.attr({rel:"stylesheet",id:"ulf-codemirror-"+s.theme+"-css",href:s.cdnURL+"/theme/"+s.theme+".min.css",type:"text/css",media:"all"}),T.vars.code_themes.push(s.theme)}CodeMirror.modeURL=s.cdnURL+"/mode/%N/%N.min.js",CodeMirror.autoLoadMode(n,s.mode),n.on("change",function(e,t){i.val(n.getValue()).trigger("change")}),clearInterval(a)}})}})},I.fn.ulf_field_date=function(){return this.each(function(){var e=I(this),i=e.find("input"),s=e.find(".ulf-date-settings").data("settings"),t={showAnim:"",beforeShow:function(e,t){I(t.dpDiv).addClass("ulf-datepicker-wrapper")},onClose:function(e,t){I(t.dpDiv).removeClass("ulf-datepicker-wrapper")}};s=I.extend({},s,t),2===i.length&&(s=I.extend({},s,{onSelect:function(e){I(this),i.first();var t=i.first().attr("id")===I(this).attr("id")?"minDate":"maxDate",n=I.datepicker.parseDate(s.dateFormat,e);i.not(this).datepicker("option",t,n)}})),i.each(function(){var e=I(this);e.hasClass("hasDatepicker")&&e.removeAttr("id").removeClass("hasDatepicker"),e.datepicker(s)})})},I.fn.ulf_field_fieldset=function(){return this.each(function(){I(this).find(".ulf-fieldset-content").ulf_reload_script()})},I.fn.ulf_field_gallery=function(){return this.each(function(){var a,e=I(this),c=e.find(".ulf-edit-gallery"),r=e.find(".ulf-clear-gallery"),o=e.find("ul"),f=e.find("input");e.find("img");e.on("click",".ulf-button, .ulf-edit-gallery",function(e){var t=I(this),n=f.val(),i=t.hasClass("ulf-edit-gallery")?"edit":"add",s="add"!==i||n.length?"gallery-edit":"gallery";e.preventDefault(),void 0!==_.wp&&_.wp.media&&_.wp.media.gallery&&("gallery"===s?(a=_.wp.media({library:{type:"image"},frame:"post",state:"gallery",multiple:!0})).open():(a=_.wp.media.gallery.edit('[gallery ids="'+n+'"]'),"add"===i&&a.setState("gallery-library")),a.on("update",function(e){o.empty();var t=e.models.map(function(e){var t=e.toJSON(),n=t.sizes&&t.sizes.thumbnail&&t.sizes.thumbnail.url?t.sizes.thumbnail.url:t.url;return o.append('<li><img src="'+n+'"></li>'),t.id});f.val(t.join(",")).trigger("change"),r.removeClass("hidden"),c.removeClass("hidden")}))}),r.on("click",function(e){e.preventDefault(),o.empty(),f.val("").trigger("change"),r.addClass("hidden"),c.addClass("hidden")})})},I.fn.ulf_field_group=function(){return this.each(function(){var e=I(this),t=e.children(".ulf-fieldset"),n=t.length?t:e,r=n.children(".ulf-cloneable-wrapper"),i=n.children(".ulf-cloneable-hidden"),o=n.children(".ulf-cloneable-max"),f=n.children(".ulf-cloneable-min"),l=r.data("field-id"),d=Boolean(Number(r.data("title-number"))),h=parseInt(r.data("max")),s=parseInt(r.data("min"));r.hasClass("ui-accordion")&&r.find(".ui-accordion-header-icon").remove();var p=function(e){e.find(".ulf-cloneable-title-number").each(function(e){I(this).html(I(this).closest(".ulf-cloneable-item").index()+1+".")})};r.accordion({header:"> .ulf-cloneable-item > .ulf-cloneable-title",collapsible:!0,active:!1,animate:!1,heightStyle:"content",icons:{header:"ulf-cloneable-header-icon fas fa-angle-right",activeHeader:"ulf-cloneable-header-icon fas fa-angle-down"},activate:function(e,t){var n=t.newPanel,i=t.newHeader;if(n.length&&!n.data("opened")){var s=n.children().first().find(":input").first(),a=i.find(".ulf-cloneable-value");s.on("change keyup",function(e){a.text(s.val())}),n.ulf_reload_script(),n.data("opened",!0),n.data("retry",!1)}else n.data("retry")&&(n.ulf_reload_script_retry(),n.data("retry",!1))}}),r.sortable({axis:"y",handle:".ulf-cloneable-title,.ulf-cloneable-sort",helper:"original",cursor:"move",placeholder:"widget-placeholder",start:function(e,t){r.accordion({active:!1}),r.sortable("refreshPositions"),t.item.children(".ulf-cloneable-content").data("retry",!0)},update:function(e,t){T.helper.name_nested_replace(r.children(".ulf-cloneable-item"),l),r.ulf_customizer_refresh(),d&&p(r)}}),n.children(".ulf-cloneable-add").on("click",function(e){e.preventDefault();var t=r.children(".ulf-cloneable-item").length;if(f.hide(),h&&h<t+1)o.show();else{var n=i.ulf_clone(!0);n.removeClass("ulf-cloneable-hidden"),n.find(':input[name!="_pseudo"]').each(function(){this.name=this.name.replace("___","").replace(l+"[0]",l+"["+t+"]")}),r.append(n),r.accordion("refresh"),r.accordion({active:t}),r.ulf_customizer_refresh(),r.ulf_customizer_listen({closest:!0}),d&&p(r)}});var a=function(e){e.preventDefault();var t=r.children(".ulf-cloneable-item").length;if(f.hide(),h&&h<t+1)o.show();else{var n=I(this).parent().parent(),i=n.children(".ulf-cloneable-helper").ulf_clone(!0),s=n.children(".ulf-cloneable-title").ulf_clone(),a=n.children(".ulf-cloneable-content").ulf_clone(),c=I('<div class="ulf-cloneable-item" />');c.append(i),c.append(s),c.append(a),r.children().eq(n.index()).after(c),T.helper.name_nested_replace(r.children(".ulf-cloneable-item"),l),r.accordion("refresh"),r.ulf_customizer_refresh(),r.ulf_customizer_listen({closest:!0}),d&&p(r)}};r.children(".ulf-cloneable-item").children(".ulf-cloneable-helper").on("click",".ulf-cloneable-clone",a),n.children(".ulf-cloneable-hidden").children(".ulf-cloneable-helper").on("click",".ulf-cloneable-clone",a);var c=function(e){e.preventDefault();var t=r.children(".ulf-cloneable-item").length;o.hide(),f.hide(),s&&t-1<s?f.show():(I(this).closest(".ulf-cloneable-item").remove(),T.helper.name_nested_replace(r.children(".ulf-cloneable-item"),l),r.ulf_customizer_refresh(),d&&p(r))};r.children(".ulf-cloneable-item").children(".ulf-cloneable-helper").on("click",".ulf-cloneable-remove",c),n.children(".ulf-cloneable-hidden").children(".ulf-cloneable-helper").on("click",".ulf-cloneable-remove",c)})},I.fn.ulf_field_icon=function(){return this.each(function(){var n=I(this);n.on("click",".ulf-icon-add",function(e){e.preventDefault();var t=I(this),i=I("#ulf-modal-icon");i.removeClass("hidden"),T.vars.$icon_target=n,T.vars.icon_modal_loaded||(i.find(".ulf-modal-loading").show(),_.wp.ajax.post("ulf-get-icons",{nonce:t.data("nonce")}).done(function(e){i.find(".ulf-modal-loading").hide(),T.vars.icon_modal_loaded=!0;var n=i.find(".ulf-modal-load").html(e.content);n.on("click","i",function(e){e.preventDefault();var t=I(this).attr("title");T.vars.$icon_target.find(".ulf-icon-preview i").removeAttr("class").addClass(t),T.vars.$icon_target.find(".ulf-icon-preview").removeClass("hidden"),T.vars.$icon_target.find(".ulf-icon-remove").removeClass("hidden"),T.vars.$icon_target.find("input").val(t).trigger("change"),i.addClass("hidden")}),i.on("change keyup",".ulf-icon-search",function(){var t=I(this).val();n.find("i").each(function(){var e=I(this);e.attr("title").search(new RegExp(t,"i"))<0?e.hide():e.show()})}),i.on("click",".ulf-modal-close, .ulf-modal-overlay",function(){i.addClass("hidden")})}).fail(function(e){i.find(".ulf-modal-loading").hide(),i.find(".ulf-modal-load").html(e.error),i.on("click",function(){i.addClass("hidden")})}))}),n.on("click",".ulf-icon-remove",function(e){e.preventDefault(),n.find(".ulf-icon-preview").addClass("hidden"),n.find("input").val("").trigger("change"),I(this).addClass("hidden")})})},I.fn.ulf_field_map=function(){return this.each(function(){if("undefined"!=typeof L){var e=I(this),t=e.find(".ulf--map-osm"),n=e.find(".ulf--map-search input"),i=e.find(".ulf--latitude"),s=e.find(".ulf--longitude"),a=e.find(".ulf--zoom"),c=t.data("map"),r=L.map(t.get(0),c);L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:'&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}).addTo(r);var o=L.marker(c.center,{draggable:!0}).addTo(r),f=function(e){i.val(e.lat),s.val(e.lng),a.val(r.getZoom())};r.on("click",function(e){o.setLatLng(e.latlng),f(e.latlng)}),r.on("zoom",function(){f(o.getLatLng())}),o.on("drag",function(){f(o.getLatLng())}),n.length||(n=I('[data-depend-id="'+e.find(".ulf--address-field").data("address-field")+'"]'));var l={};n.autocomplete({source:function(e,n){var i=e.term;i in l?n(l[i]):I.get("https://nominatim.openstreetmap.org/search",{format:"json",q:i},function(e){var t;t=e.length?e.map(function(e){return{value:e.display_name,label:e.display_name,lat:e.lat,lon:e.lon}},"json"):[{value:"no-data",label:"No Results."}],l[i]=t,n(t)})},select:function(e,t){if("no-data"===t.item.value)return!1;var n=L.latLng(t.item.lat,t.item.lon);r.panTo(n),o.setLatLng(n),f(n)},create:function(e,t){I(this).autocomplete("widget").addClass("ulf-map-ui-autocomplate")}});var d=function(){var e=L.latLng(i.val(),s.val());r.panTo(e),o.setLatLng(e)};i.on("change",d),s.on("change",d)}})},I.fn.ulf_field_link=function(){return this.each(function(){var s=I(this),e=s.find(".ulf--link"),a=s.find(".ulf--add"),c=s.find(".ulf--edit"),r=s.find(".ulf--remove"),o=s.find(".ulf--result"),t=T.helper.uid("ulf-wplink-textarea-");a.on("click",function(e){e.preventDefault(),_.wpLink.open(t)}),c.on("click",function(e){e.preventDefault(),a.trigger("click"),I("#wp-link-url").val(s.find(".ulf--url").val()),I("#wp-link-text").val(s.find(".ulf--text").val()),I("#wp-link-target").prop("checked","_blank"===s.find(".ulf--target").val())}),r.on("click",function(e){e.preventDefault(),s.find(".ulf--url").val("").trigger("change"),s.find(".ulf--text").val(""),s.find(".ulf--target").val(""),a.removeClass("hidden"),c.addClass("hidden"),r.addClass("hidden"),o.parent().addClass("hidden")}),e.attr("id",t).on("change",function(){var e=_.wpLink.getAttrs(),t=e.href,n=I("#wp-link-text").val(),i=e.target?e.target:"";s.find(".ulf--url").val(t).trigger("change"),s.find(".ulf--text").val(n),s.find(".ulf--target").val(i),o.html('{url:"'+t+'", text:"'+n+'", target:"'+i+'"}'),a.addClass("hidden"),c.removeClass("hidden"),r.removeClass("hidden"),o.parent().removeClass("hidden")})})},I.fn.ulf_field_media=function(){return this.each(function(){var i,s=I(this),a=s.find(".ulf--button"),c=s.find(".ulf--remove"),r=a.data("library")&&a.data("library").split(",")||"",o=!!s.hasClass("ulf-assign-field-background")&&s.closest(".ulf-field-background").find(".ulf--auto-attributes");a.on("click",function(e){e.preventDefault(),void 0!==_.wp&&_.wp.media&&_.wp.media.gallery&&(i||(i=_.wp.media({library:{type:r}})).on("select",function(){var e,t=i.state().get("selection").first().attributes,n=a.data("preview-size")||"thumbnail";r.length&&-1===r.indexOf(t.subtype)&&-1===r.indexOf(t.type)||(s.find(".ulf--id").val(t.id),s.find(".ulf--width").val(t.width),s.find(".ulf--height").val(t.height),s.find(".ulf--alt").val(t.alt),s.find(".ulf--title").val(t.title),s.find(".ulf--description").val(t.description),e=void 0!==t.sizes&&void 0!==t.sizes.thumbnail&&"thumbnail"===n?t.sizes.thumbnail.url:void 0!==t.sizes&&void 0!==t.sizes.full?t.sizes.full.url:"svg"===t.url.split(".").pop().toLowerCase()?t.url:t.icon,o&&o.removeClass("ulf--attributes-hidden"),c.removeClass("hidden"),s.find(".ulf--preview").removeClass("hidden"),s.find(".ulf--src").attr("src",e),s.find(".ulf--thumbnail").val(e),s.find(".ulf--url").val(t.url).trigger("change"))}),i.open())}),c.on("click",function(e){e.preventDefault(),o&&o.addClass("ulf--attributes-hidden"),c.addClass("hidden"),s.find("input").val(""),s.find(".ulf--preview").addClass("hidden"),s.find(".ulf--url").trigger("change")})})},I.fn.ulf_field_repeater=function(){return this.each(function(){var e=I(this),t=e.children(".ulf-fieldset"),n=t.length?t:e,c=n.children(".ulf-repeater-wrapper"),i=n.children(".ulf-repeater-hidden"),r=n.children(".ulf-repeater-max"),o=n.children(".ulf-repeater-min"),f=c.data("field-id"),l=parseInt(c.data("max")),s=parseInt(c.data("min"));c.children(".ulf-repeater-item").children(".ulf-repeater-content").ulf_reload_script(),c.sortable({axis:"y",handle:".ulf-repeater-sort",helper:"original",cursor:"move",placeholder:"widget-placeholder",update:function(e,t){T.helper.name_nested_replace(c.children(".ulf-repeater-item"),f),c.ulf_customizer_refresh(),t.item.ulf_reload_script_retry()}}),n.children(".ulf-repeater-add").on("click",function(e){e.preventDefault();var t=c.children(".ulf-repeater-item").length;if(o.hide(),l&&l<t+1)r.show();else{var n=i.ulf_clone(!0);n.removeClass("ulf-repeater-hidden"),n.find(':input[name!="_pseudo"]').each(function(){this.name=this.name.replace("___","").replace(f+"[0]",f+"["+t+"]")}),c.append(n),n.children(".ulf-repeater-content").ulf_reload_script(),c.ulf_customizer_refresh(),c.ulf_customizer_listen({closest:!0})}});var a=function(e){e.preventDefault();var t=c.children(".ulf-repeater-item").length;if(o.hide(),l&&l<t+1)r.show();else{var n=I(this).parent().parent().parent(),i=n.children(".ulf-repeater-content").ulf_clone(),s=n.children(".ulf-repeater-helper").ulf_clone(!0),a=I('<div class="ulf-repeater-item" />');a.append(i),a.append(s),c.children().eq(n.index()).after(a),a.children(".ulf-repeater-content").ulf_reload_script(),T.helper.name_nested_replace(c.children(".ulf-repeater-item"),f),c.ulf_customizer_refresh(),c.ulf_customizer_listen({closest:!0})}};c.children(".ulf-repeater-item").children(".ulf-repeater-helper").on("click",".ulf-repeater-clone",a),n.children(".ulf-repeater-hidden").children(".ulf-repeater-helper").on("click",".ulf-repeater-clone",a);var d=function(e){e.preventDefault();var t=c.children(".ulf-repeater-item").length;r.hide(),o.hide(),s&&t-1<s?o.show():(I(this).closest(".ulf-repeater-item").remove(),T.helper.name_nested_replace(c.children(".ulf-repeater-item"),f),c.ulf_customizer_refresh())};c.children(".ulf-repeater-item").children(".ulf-repeater-helper").on("click",".ulf-repeater-remove",d),n.children(".ulf-repeater-hidden").children(".ulf-repeater-helper").on("click",".ulf-repeater-remove",d)})},I.fn.ulf_field_slider=function(){return this.each(function(){var e=I(this),n=e.find("input"),t=e.find(".ulf-slider-ui"),i=n.data(),s=n.val()||0;t.hasClass("ui-slider")&&t.empty(),t.slider({range:"min",value:s,min:i.min||0,max:i.max||100,step:i.step||1,slide:function(e,t){n.val(t.value).trigger("change")}}),n.on("keyup",function(){t.slider("value",n.val())})})},I.fn.ulf_field_sortable=function(){return this.each(function(){var n=I(this).find(".ulf-sortable");n.sortable({axis:"y",helper:"original",cursor:"move",placeholder:"widget-placeholder",update:function(e,t){n.ulf_customizer_refresh()}}),n.find(".ulf-sortable-content").ulf_reload_script()})},I.fn.ulf_field_sorter=function(){return this.each(function(){var i=I(this),e=i.find(".ulf-enabled"),t=i.find(".ulf-disabled"),n=!!t.length&&t;e.sortable({connectWith:n,placeholder:"ui-sortable-placeholder",update:function(e,t){var n=t.item.find("input");t.item.parent().hasClass("ulf-enabled")?n.attr("name",n.attr("name").replace("disabled","enabled")):n.attr("name",n.attr("name").replace("enabled","disabled")),i.ulf_customizer_refresh()}}),n&&n.sortable({connectWith:e,placeholder:"ui-sortable-placeholder",update:function(e,t){i.ulf_customizer_refresh()}})})},I.fn.ulf_field_spinner=function(){return this.each(function(){var e=I(this),n=e.find("input"),t=e.find(".ui-button"),i=n.data();t.length&&t.remove(),n.spinner({min:i.min||0,max:i.max||100,step:i.step||1,create:function(e,t){i.unit&&n.after('<span class="ui-button ulf--unit">'+i.unit+"</span>")},spin:function(e,t){n.val(t.value).trigger("change")}})})},I.fn.ulf_field_switcher=function(){return this.each(function(){var n=I(this).find(".ulf--switcher");n.on("click",function(){var e=0,t=n.find("input");n.hasClass("ulf--active")?n.removeClass("ulf--active"):(e=1,n.addClass("ulf--active")),t.val(e).trigger("change")})})},I.fn.ulf_field_tabbed=function(){return this.each(function(){var e=I(this),t=e.find(".ulf-tabbed-nav a"),s=e.find(".ulf-tabbed-content");s.eq(0).ulf_reload_script(),t.on("click",function(e){e.preventDefault();var t=I(this),n=t.index(),i=s.eq(n);t.addClass("ulf-tabbed-active").siblings().removeClass("ulf-tabbed-active"),i.ulf_reload_script(),i.removeClass("hidden").siblings().addClass("hidden")})})},I.fn.ulf_field_typography=function(){return this.each(function(){var j=this,L=I(this),i=[],q=ulf_typography_json.webfonts,t=ulf_typography_json.googlestyles,A=ulf_typography_json.defaultstyles;j.sanitize_subset=function(e){return e=(e=e.replace("-ext"," Extended")).charAt(0).toUpperCase()+e.slice(1)},j.sanitize_style=function(e){return t[e]?t[e]:e},j.load_google_font=function(e,t,n){e&&"object"==typeof WebFont&&(t=t?t.replace("normal",""):"",n=n?n.replace("normal",""):"",(t||n)&&(e=e+":"+t+n),-1===i.indexOf(e)&&WebFont.load({google:{families:[e]}}),i.push(e))},j.append_select_options=function(e,t,s,a,c){e.find("option").not(":first").remove();var r="";I.each(t,function(e,t){var n,i=t;n=c?s&&-1!==s.indexOf(t)?" selected":"":s&&s===t?" selected":"","subset"===a?i=j.sanitize_subset(t):"style"===a&&(i=j.sanitize_style(t)),r+='<option value="'+t+'"'+n+">"+i+"</option>"}),e.append(r).trigger("ulf.change").trigger("chosen:updated")},j.init=function(){var l=[],e=L.find(".ulf--typography"),d=L.find(".ulf--type"),h=L.find(".ulf--block-font-style"),v=e.data("unit"),g=e.data("line-height-unit"),t=e.data("exclude")?e.data("exclude").split(","):[];L.find(".ulf--chosen").length&&L.find("select").each(function(){var e=I(this),t=e.parent().find(".chosen-container");t.length&&t.remove(),e.chosen({allow_single_deselect:!0,disable_search_threshold:15,width:"100%"})});var m=L.find(".ulf--font-family"),i=m.val();m.find("option").not(":first-child").remove();var s="";I.each(q,function(n,e){t&&-1!==t.indexOf(n)||(s+='<optgroup label="'+e.label+'">',I.each(e.fonts,function(e,t){s+='<option value="'+(t="object"==typeof t?e:t)+'" data-type="'+n+'"'+(t===i?" selected":"")+">"+t+"</option>"}),s+="</optgroup>")}),m.append(s).trigger("chosen:updated");var p=L.find(".ulf--block-font-style");if(p.length){var u=L.find(".ulf--font-style-select"),_=u.val()?u.val().replace(/normal/g,""):"";u.on("change ulf.change",function(e){var t=u.val();!t&&l&&-1===l.indexOf("normal")&&(t=l[0]);var n=t&&"italic"!==t&&"normal"===t?"normal":"",i=t&&"italic"!==t&&"normal"!==t?t.replace("italic",""):n,s=t&&"italic"===t.substr(-6)?"italic":"";L.find(".ulf--font-weight").val(i),L.find(".ulf--font-style").val(s)});var b=L.find(".ulf--block-extra-styles");if(b.length)var y=L.find(".ulf--extra-styles"),w=y.val()}var C=L.find(".ulf--block-subset");if(C.length)var k=L.find(".ulf--subset"),x=k.val(),z=k.data("multiple")||!1;var D=L.find(".ulf--block-backup-font-family");m.on("change ulf.change",function(e){C.length&&C.addClass("hidden"),b.length&&b.addClass("hidden"),D.length&&D.addClass("hidden");var t=m.find(":selected"),n=t.val(),i=t.data("type");if(i&&n){if("google"!==i&&"custom"!==i||!D.length||D.removeClass("hidden"),p.length){var s=A;"google"===i&&q[i].fonts[n][0]?s=q[i].fonts[n][0]:"custom"===i&&q[i].fonts[n]&&(s=q[i].fonts[n]);var a=-1!==(l=s).indexOf("normal")?"normal":s[0],c=_&&-1!==s.indexOf(_)?_:a;j.append_select_options(u,s,c,"style"),_=!1,p.removeClass("hidden"),"google"===i&&b.length&&1<s.length&&(j.append_select_options(y,s,w,"style",!0),w=!1,b.removeClass("hidden"))}if("google"===i&&C.length&&q[i].fonts[n][1]){var r=q[i].fonts[n][1],o=r.length<2&&"latin"!==r[0]?r[0]:"",f=x&&-1!==r.indexOf(x)?x:o;f=z&&x?x:f,j.append_select_options(k,r,f,"subset",z),x=!1,C.removeClass("hidden")}}else h.find(":input").val(""),C.length&&(k.find("option").not(":first-child").remove(),k.trigger("chosen:updated")),p.length&&(u.find("option").not(":first-child").remove(),u.trigger("chosen:updated"));d.val(i)}).trigger("ulf.change");var O=L.find(".ulf--block-preview");if(O.length){var S=L.find(".ulf--preview");L.on("change",T.helper.debounce(function(e){O.removeClass("hidden");var t=m.val(),n=L.find(".ulf--font-weight").val(),i=L.find(".ulf--font-style").val(),s=L.find(".ulf--font-size").val(),a=L.find(".ulf--font-variant").val(),c=L.find(".ulf--line-height").val(),r=L.find(".ulf--text-align").val(),o=L.find(".ulf--text-transform").val(),f=L.find(".ulf--text-decoration").val(),l=L.find(".ulf--color").val(),d=L.find(".ulf--word-spacing").val(),h=L.find(".ulf--letter-spacing").val(),p=L.find(".ulf--custom-style").val();"google"===L.find(".ulf--type").val()&&j.load_google_font(t,n,i);var u={};t&&(u.fontFamily=t),n&&(u.fontWeight=n),i&&(u.fontStyle=i),a&&(u.fontVariant=a),s&&(u.fontSize=s+v),c&&(u.lineHeight=c+g),h&&(u.letterSpacing=h+v),d&&(u.wordSpacing=d+v),r&&(u.textAlign=r),o&&(u.textTransform=o),f&&(u.textDecoration=f),l&&(u.color=l),S.removeAttr("style"),p&&S.attr("style",p),S.css(u)},100)),O.on("click",function(){S.toggleClass("ulf--black-background");var e=O.find(".ulf--toggle");e.hasClass("fa-toggle-off")?e.removeClass("fa-toggle-off").addClass("fa-toggle-on"):e.removeClass("fa-toggle-on").addClass("fa-toggle-off")}),O.hasClass("hidden")||L.trigger("change")}},j.init()})},I.fn.ulf_field_upload=function(){return this.each(function(){var t,e=I(this),n=e.find("input"),i=e.find(".ulf--button"),s=e.find(".ulf--remove"),a=i.data("library")&&i.data("library").split(",")||"";n.on("change",function(e){n.val()?s.removeClass("hidden"):s.addClass("hidden")}),i.on("click",function(e){e.preventDefault(),void 0!==_.wp&&_.wp.media&&_.wp.media.gallery&&(t||(t=_.wp.media({library:{type:a}})).on("select",function(){var e=t.state().get("selection").first().attributes;a.length&&-1===a.indexOf(e.subtype)&&-1===a.indexOf(e.type)||n.val(e.url).trigger("change")}),t.open())}),s.on("click",function(e){e.preventDefault(),n.val("").trigger("change")})})},I.fn.ulf_field_wp_editor=function(){return this.each(function(){if(void 0!==_.wp.editor&&void 0!==_.tinyMCEPreInit&&void 0!==_.tinyMCEPreInit.mceInit.ulf_wp_editor){var e=I(this),t=e.find(".ulf-wp-editor"),n=e.find("textarea");(e.find(".wp-editor-wrap").length||e.find(".mce-container").length)&&(t.empty(),t.append(n),n.css("display",""));var i=T.helper.uid("ulf-editor-");n.attr("id",i);var s={tinymce:_.tinyMCEPreInit.mceInit.ulf_wp_editor,quicktags:_.tinyMCEPreInit.qtInit.ulf_wp_editor},a=t.data("editor-settings"),c=wp.oldEditor?wp.oldEditor:wp.editor;c&&c.hasOwnProperty("autop")&&(wp.editor.autop=c.autop,wp.editor.removep=c.removep,wp.editor.initialize=c.initialize);s.tinymce=I.extend({},s.tinymce,{selector:"#"+i,setup:function(t){t.on("change keyup",function(){var e=a.wpautop?t.getContent():wp.editor.removep(t.getContent());n.val(e).trigger("change")})}}),!1===a.tinymce&&(s.tinymce=!1,t.addClass("ulf-no-tinymce")),!1===a.quicktags&&(s.quicktags=!1,t.addClass("ulf-no-quicktags"));var r=setInterval(function(){e.is(":visible")&&(_.wp.editor.initialize(i,s),clearInterval(r))});if(a.media_buttons&&_.ulf_media_buttons){var o=t.find(".wp-media-buttons");if(o.length)o.find(".ulf-shortcode-button").data("editor-id",i);else{var f=I(_.ulf_media_buttons);f.find(".ulf-shortcode-button").data("editor-id",i),t.prepend(f)}}}})},I.fn.ulf_confirm=function(){return this.each(function(){I(this).on("click",function(e){var t=I(this).data("confirm")||_.ulf_vars.i18n.confirm;if(!confirm(t))return e.preventDefault(),!1;T.vars.is_confirm=!0,T.vars.form_modified=!1})})},I.fn.serializeObject=function(){var s={};return I.each(this.serializeArray(),function(e,t){var n=t.name,i=t.value;s[n]=s[n]===y?i:I.isArray(s[n])?s[n].concat(i):[s[n],i]}),s},I.fn.ulf_save=function(){return this.each(function(){var i,s=I(this),c=I(".ulf-save"),r=I(".ulf-options"),o=!1;s.on("click",function(e){if(!o){var t=s.data("save"),n=s.val();c.attr("value",t),s.hasClass("ulf-save-ajax")?(e.preventDefault(),r.addClass("ulf-saving"),c.prop("disabled",!0),_.wp.ajax.post("ulf_"+r.data("unique")+"_ajax_save",{data:I("#ulf-form").serializeJSONULF()}).done(function(e){if(I(".ulf-error").remove(),Object.keys(e.errors).length){var a='<i class="ulf-label-error ulf-error">!</i>';I.each(e.errors,function(e,t){var n=I('[data-depend-id="'+e+'"]'),i=I("#ulf-tab-link-"+(n.closest(".ulf-section").index()+1)),s=i.closest(".ulf-tab-depth-0");n.closest(".ulf-fieldset").append('<p class="ulf-error ulf-error-text">'+t+"</p>"),i.find(".ulf-error").length||i.append(a),s.find(".ulf-arrow .ulf-error").length||s.find(".ulf-arrow").append(a)})}r.removeClass("ulf-saving"),c.prop("disabled",!1).attr("value",n),o=!1,T.vars.form_modified=!1,T.vars.$form_warning.hide(),clearTimeout(i);var t=I(".ulf-form-success");t.empty().append(e.notice).fadeIn("fast",function(){i=setTimeout(function(){t.fadeOut("fast")},1e3)})}).fail(function(e){alert(e.error)})):T.vars.form_modified=!1}o=!0})})},I.fn.ulf_options=function(){return this.each(function(){var e=I(this),t=e.find(".ulf-content"),n=e.find(".ulf-form-success"),i=e.find(".ulf-form-warning"),s=e.find(".ulf-header .ulf-save");(T.vars.$form_warning=i).length&&(_.onbeforeunload=function(){return!!T.vars.form_modified||y},t.on("change keypress",":input",function(){T.vars.form_modified||(n.hide(),i.fadeIn("fast"),T.vars.form_modified=!0)})),n.hasClass("ulf-form-show")&&setTimeout(function(){n.fadeOut("fast")},1e3),I(b).keydown(function(e){if((e.ctrlKey||e.metaKey)&&83===e.which)return s.trigger("click"),e.preventDefault(),!1})})},I.fn.ulf_taxonomy=function(){return this.each(function(){var e=I(this),t=e.parents("form");if("addtag"===t.attr("id")){var n=t.find("#submit"),i=e.find(".ulf-field").ulf_clone();n.on("click",function(){t.find(".form-required").hasClass("form-invalid")||(e.data("inited",!1),e.empty(),e.html(i),i=i.ulf_clone(),e.ulf_reload_script())})}})},I.fn.ulf_shortcode=function(){var m=this;return m.shortcode_parse=function(e,n){var i="";return I.each(e,function(e,t){i+="["+(n=n||e),I.each(t,function(e,t){"content"===e?(i+="]",i+=t,i+="[/"+n):i+=m.shortcode_tags(e,t)}),i+="]"}),i},m.shortcode_tags=function(e,t){var n="";return""!==t&&("object"!=typeof t||I.isArray(t)?n+=" "+e.replace("-","_")+'="'+t.toString()+'"':I.each(t,function(e,t){switch(e){case"background-image":t=t.url?t.url:""}""!==t&&(n+=" "+e.replace("-","_")+'="'+t.toString()+'"')})),n},m.insertAtChars=function(e,t){var n=void 0!==e[0].name?e[0]:e;return n.value.length&&void 0!==n.selectionStart?(n.focus(),n.value.substring(0,n.selectionStart)+t+n.value.substring(n.selectionEnd,n.value.length)):(n.focus(),t)},m.send_to_editor=function(e,t){var n;if("undefined"!=typeof tinymce&&(n=tinymce.get(t)),n&&!n.isHidden())n.execCommand("mceInsertContent",!1,e);else{var i=I("#"+t);i.val(m.insertAtChars(i,e)).trigger("change")}},this.each(function(){var c,r,o,n,f,l,d,s,h,p=I(this),i=p.find(".ulf-modal-load"),u=(p.find(".ulf-modal-content"),p.find(".ulf-modal-insert")),a=p.find(".ulf-modal-loading"),t=p.find("select"),v=p.data("modal-id"),g=p.data("nonce");I(b).on("click",'.ulf-shortcode-button[data-modal-id="'+v+'"]',function(e){e.preventDefault(),h=I(this),c=h.data("editor-id")||!1,r=h.data("target-id")||!1,o=h.data("gutenberg-id")||!1,p.removeClass("hidden"),p.hasClass("ulf-shortcode-single")&&f===y&&t.trigger("change")}),t.on("change",function(){var e=I(this),t=e.find(":selected");n=e.val(),f=t.data("shortcode"),l=t.data("view")||"normal",d=t.data("group")||f,i.empty(),n?(a.show(),_.wp.ajax.post("ulf-get-shortcode-"+v,{shortcode_key:n,nonce:g}).done(function(e){a.hide();var t=I(e.content).appendTo(i);u.parent().removeClass("hidden"),s=t.find(".ulf--repeat-shortcode").ulf_clone(),t.ulf_reload_script(),t.find(".ulf-fields").ulf_reload_script()})):u.parent().addClass("hidden")}),u.on("click",function(e){if(e.preventDefault(),!u.prop("disabled")&&!u.attr("disabled")){var i="",t=p.find(".ulf-field:not(.ulf-depend-on)").find(":input:not(.ignore)").serializeObjectULF();switch(l){case"contents":var n=f?t[f]:t;I.each(n,function(e,t){var n=f||e;i+="["+n+"]"+t+"[/"+n+"]"});break;case"group":i+="["+f,I.each(t[f],function(e,t){i+=m.shortcode_tags(e,t)}),i+="]",i+=m.shortcode_parse(t[d],d),i+="[/"+f+"]";break;case"repeater":i+=m.shortcode_parse(t[d],d);break;default:i+=m.shortcode_parse(t)}if(i=""===i?"["+f+"]":i,o){var s=_.ulf_gutenberg_props.attributes.hasOwnProperty("shortcode")?_.ulf_gutenberg_props.attributes.shortcode:"";_.ulf_gutenberg_props.setAttributes({shortcode:s+i})}else if(c)m.send_to_editor(i,c);else{var a=r?I(r):h.parent().find("textarea");a.val(m.insertAtChars(a,i)).trigger("change")}p.addClass("hidden")}}),p.on("click",".ulf--repeat-button",function(e){e.preventDefault();var t=p.find(".ulf--repeatable"),n=s.ulf_clone(),i=n.find(".ulf-repeat-remove");n.appendTo(t);n.find(".ulf-fields").ulf_reload_script(),T.helper.name_nested_replace(p.find(".ulf--repeat-shortcode"),d),i.on("click",function(){n.remove(),T.helper.name_nested_replace(p.find(".ulf--repeat-shortcode"),d)})}),p.on("click",".ulf-modal-close, .ulf-modal-overlay",function(){p.addClass("hidden")})})},"function"==typeof Color&&(Color.prototype.toString=function(){if(this._alpha<1)return this.toCSS("rgba",this._alpha).replace(/\s+/g,"");var e=parseInt(this._color,10).toString(16);if(this.error)return"";if(e.length<6)for(var t=6-e.length-1;0<=t;t--)e="0"+e;return"#"+e}),T.funcs.parse_color=function(e){var t=e.replace(/\s+/g,""),n=-1!==t.indexOf("rgba")?parseFloat(100*t.replace(/^.*,(.+)\)/,"$1")):100;return{value:t,transparent:n,rgba:n<100}},I.fn.ulf_color=function(){return this.each(function(){var c,r=I(this),o=T.funcs.parse_color(r.val()),e=!_.ulf_vars.color_palette.length||_.ulf_vars.color_palette;r.hasClass("wp-color-picker")&&r.closest(".wp-picker-container").after(r).remove(),r.wpColorPicker({palettes:e,change:function(e,t){var n=t.color.toString();c.removeClass("ulf--transparent-active"),c.find(".ulf--transparent-offset").css("background-color",n),r.val(n).trigger("change")},create:function(){c=r.closest(".wp-picker-container");var i=r.data("a8cIris"),e=I('<div class="ulf--transparent-wrap"><div class="ulf--transparent-slider"></div><div class="ulf--transparent-offset"></div><div class="ulf--transparent-text"></div><div class="ulf--transparent-button">transparent <i class="fas fa-toggle-off"></i></div></div>').appendTo(c.find(".wp-picker-holder")),s=e.find(".ulf--transparent-slider"),a=e.find(".ulf--transparent-text"),n=e.find(".ulf--transparent-offset"),t=e.find(".ulf--transparent-button");"transparent"===r.val()&&c.addClass("ulf--transparent-active"),t.on("click",function(){"transparent"!==r.val()?(r.val("transparent").trigger("change").removeClass("iris-error"),c.addClass("ulf--transparent-active")):(r.val(i._color.toString()).trigger("change"),c.removeClass("ulf--transparent-active"))}),s.slider({value:o.transparent,step:1,min:0,max:100,slide:function(e,t){var n=parseFloat(t.value/100);i._color._alpha=n,r.wpColorPicker("color",i._color.toString()),a.text(1===n||0===n?"":n)},create:function(){var e=parseFloat(o.transparent/100),t=e<1?e:"";a.text(t),n.css("background-color",o.value),c.on("click",".wp-picker-clear",function(){i._color._alpha=1,a.text(""),s.slider("option","value",100),c.removeClass("ulf--transparent-active"),r.trigger("change")}),c.on("click",".wp-picker-default",function(){var e=T.funcs.parse_color(r.data("default-color")),t=parseFloat(e.transparent/100),n=t<1?t:"";i._color._alpha=t,a.text(n),s.slider("option","value",e.transparent),"transparent"===e.value&&(r.removeClass("iris-error"),c.addClass("ulf--transparent-active"))})}})}})})},I.fn.ulf_chosen=function(){return this.each(function(){var a=I(this),e=a.parent().find(".chosen-container"),t=a.hasClass("ulf-chosen-sortable")||!1,n=a.hasClass("ulf-chosen-ajax")||!1,i=a.attr("multiple")||!1,s=i?"100%":"auto",c=I.extend({allow_single_deselect:!0,disable_search_threshold:10,width:s,no_results_text:_.ulf_vars.i18n.no_results_text},a.data("chosen-settings"));if(e.length&&e.remove(),n){var r=I.extend({data:{type:"post",nonce:""},allow_single_deselect:!0,disable_search_threshold:-1,width:"100%",min_length:3,type_delay:500,typing_text:_.ulf_vars.i18n.typing_text,searching_text:_.ulf_vars.i18n.searching_text,no_results_text:_.ulf_vars.i18n.no_results_text},a.data("chosen-settings"));a.ULFAjaxChosen(r)}else a.chosen(c);if(i){var o=a.parent().find(".ulf-hide-select"),f=o.val()||[];a.on("change",function(e,t){t&&t.selected?o.append('<option value="'+t.selected+'" selected="selected">'+t.selected+"</option>"):t&&t.deselected&&o.find('option[value="'+t.deselected+'"]').remove(),_.wp.customize!==y&&0===o.children().length&&o.data("customize-setting-link")&&_.wp.customize.control(o.data("customize-setting-link")).setting.set(""),o.trigger("change")}),a.ULFChosenOrder(f,!0)}if(t){var l=a.parent().find(".chosen-container").find(".chosen-choices");l.bind("mousedown",function(e){I(e.target).is("span")&&e.stopPropagation()}),l.sortable({items:"li:not(.search-field)",helper:"orginal",cursor:"move",placeholder:"search-choice-placeholder",start:function(e,t){t.placeholder.width(t.item.innerWidth()),t.placeholder.height(t.item.innerHeight())},update:function(e,t){var i="",s=a.data("chosen"),n=a.parent().find(".ulf-hide-select");l.find(".search-choice-close").each(function(){var n=I(this).data("option-array-index");I.each(s.results_data,function(e,t){t.array_index===n&&(i+='<option value="'+t.value+'" selected>'+t.value+"</option>")})}),n.children().remove(),n.append(i),n.trigger("change")}})}})},I.fn.ulf_checkbox=function(){return this.each(function(){var e=I(this),t=e.find(".ulf--input"),n=e.find(".ulf--checkbox");n.on("click",function(){t.val(Number(n.prop("checked"))).trigger("change")})})},I.fn.ulf_siblings=function(){return this.each(function(){var t=I(this),e=t.find(".ulf--sibling"),n=t.data("multiple")||!1;e.on("click",function(){var e=I(this);n?e.hasClass("ulf--active")?(e.removeClass("ulf--active"),e.find("input").prop("checked",!1).trigger("change")):(e.addClass("ulf--active"),e.find("input").prop("checked",!0).trigger("change")):(t.find("input").prop("checked",!1),e.find("input").prop("checked",!0).trigger("change"),e.addClass("ulf--active").siblings().removeClass("ulf--active"))})})},I.fn.ulf_help=function(){return this.each(function(){var e,t,n=I(this);n.on({mouseenter:function(){e=I('<div class="ulf-tooltip"></div>').html(n.find(".ulf-help-text").html()).appendTo("body"),t=T.vars.is_rtl?n.offset().left+24:n.offset().left-e.outerWidth(),e.css({top:n.offset().top-(e.outerHeight()/2-14),left:t})},mouseleave:function(){e!==y&&e.remove()}})})},I.fn.ulf_customizer_refresh=function(){return this.each(function(){var e=I(this),t=e.closest(".ulf-customize-complex");if(t.length){var n=t.data("unique-id");if(n===y)return;var i=t.find(":input"),s=t.data("option-id"),a=i.serializeObjectULF(),c=!I.isEmptyObject(a)&&a[n]&&a[n][s]?a[n][s]:"",r=_.wp.customize.control(n+"["+s+"]");r.setting._value=null,r.setting.set(c)}else e.find(":input").first().trigger("change");I(b).trigger("ulf-customizer-refresh",e)})},I.fn.ulf_customizer_listen=function(e){var t=I.extend({closest:!1},e);return this.each(function(){if(_.wp.customize!==y){var n=t.closest?I(this).closest(".ulf-customize-complex"):I(this),e=n.find(":input"),i=n.data("unique-id"),s=n.data("option-id");i!==y&&e.on("change keyup",function(){var e=n.find(":input").serializeObjectULF(),t=!I.isEmptyObject(e)&&e[i]&&e[i][s]?e[i][s]:"";_.wp.customize.control(i+"["+s+"]").setting.set(t)})}})},I(b).on("expanded",".control-section",function(){var e=I(this);if(e.hasClass("open")&&!e.data("inited")){var t=e.find(".ulf-customize-field"),n=e.find(".ulf-customize-complex");t.length&&(e.ulf_dependency(),t.ulf_reload_script({dependency:!1}),n.ulf_customizer_listen()),e.data("inited",!0)}}),T.vars.$window.on("resize ulf.resize",T.helper.debounce(function(e){(-1<navigator.userAgent.indexOf("AppleWebKit/")?T.vars.$window.width():_.innerWidth)<=782&&!T.vars.onloaded&&(I(".ulf-section").ulf_reload_script(),T.vars.onloaded=!0)},200)).trigger("ulf.resize"),I.fn.ulf_widgets=function(){this.length&&(I(b).on("widget-added widget-updated",function(e,t){t.find(".ulf-fields").ulf_reload_script()}),I(".widgets-sortables, .control-section-sidebar").on("sortstop",function(e,t){t.item.find(".ulf-fields").ulf_reload_script_retry()}),I(b).on("click",".widget-top",function(e){I(this).parent().find(".ulf-fields").ulf_reload_script()}))},I.fn.ulf_nav_menu=function(){return this.each(function(){var e=I(this);e.on("click","a.item-edit",function(){I(this).closest("li.menu-item").find(".ulf-fields").ulf_reload_script()}),e.on("sortstop",function(e,t){t.item.find(".ulf-fields").ulf_reload_script_retry()})})},I.fn.ulf_reload_script_retry=function(){return this.each(function(){var e=I(this);e.data("inited")&&e.children(".ulf-field-wp_editor").ulf_field_wp_editor()})},I.fn.ulf_reload_script=function(e){var t=I.extend({dependency:!0},e);return this.each(function(){var e=I(this);e.data("inited")||(e.children(".ulf-field-accordion").ulf_field_accordion(),e.children(".ulf-field-backup").ulf_field_backup(),e.children(".ulf-field-background").ulf_field_background(),e.children(".ulf-field-code_editor").ulf_field_code_editor(),e.children(".ulf-field-date").ulf_field_date(),e.children(".ulf-field-fieldset").ulf_field_fieldset(),e.children(".ulf-field-gallery").ulf_field_gallery(),e.children(".ulf-field-group").ulf_field_group(),e.children(".ulf-field-icon").ulf_field_icon(),e.children(".ulf-field-link").ulf_field_link(),e.children(".ulf-field-media").ulf_field_media(),e.children(".ulf-field-map").ulf_field_map(),e.children(".ulf-field-repeater").ulf_field_repeater(),e.children(".ulf-field-slider").ulf_field_slider(),e.children(".ulf-field-sortable").ulf_field_sortable(),e.children(".ulf-field-sorter").ulf_field_sorter(),e.children(".ulf-field-spinner").ulf_field_spinner(),e.children(".ulf-field-switcher").ulf_field_switcher(),e.children(".ulf-field-tabbed").ulf_field_tabbed(),e.children(".ulf-field-typography").ulf_field_typography(),e.children(".ulf-field-upload").ulf_field_upload(),e.children(".ulf-field-wp_editor").ulf_field_wp_editor(),e.children(".ulf-field-border").find(".ulf-color").ulf_color(),e.children(".ulf-field-background").find(".ulf-color").ulf_color(),e.children(".ulf-field-color").find(".ulf-color").ulf_color(),e.children(".ulf-field-color_group").find(".ulf-color").ulf_color(),e.children(".ulf-field-link_color").find(".ulf-color").ulf_color(),e.children(".ulf-field-typography").find(".ulf-color").ulf_color(),e.children(".ulf-field-select").find(".ulf-chosen").ulf_chosen(),e.children(".ulf-field-checkbox").find(".ulf-checkbox").ulf_checkbox(),e.children(".ulf-field-button_set").find(".ulf-siblings").ulf_siblings(),e.children(".ulf-field-image_select").find(".ulf-siblings").ulf_siblings(),e.children(".ulf-field-palette").find(".ulf-siblings").ulf_siblings(),e.children(".ulf-field").find(".ulf-help").ulf_help(),t.dependency&&e.ulf_dependency(),e.data("inited",!0),I(b).trigger("ulf-reload-script",e))})},I(b).ready(function(){I(".ulf-save").ulf_save(),I(".ulf-options").ulf_options(),I(".ulf-sticky-header").ulf_sticky(),I(".ulf-nav-options").ulf_nav_options(),I(".ulf-nav-metabox").ulf_nav_metabox(),I(".ulf-taxonomy").ulf_taxonomy(),I(".ulf-page-templates").ulf_page_templates(),I(".ulf-post-formats").ulf_post_formats(),I(".ulf-shortcode").ulf_shortcode(),I(".ulf-search").ulf_search(),I(".ulf-confirm").ulf_confirm(),I(".ulf-expand-all").ulf_expand_all(),I(".ulf-onload").ulf_reload_script(),I(".widget").ulf_widgets(),I("#menu-to-edit").ulf_nav_menu()})}(jQuery,window,document);
admin/settings/assets/js/plugins.min.js CHANGED
@@ -1,3 +1,3 @@
1
- /* Codestar Framework | A Simple and Lightweight WordPress Option Framework - v2.2.1*/
2
 
3
  !function(o){function e(t,e){this.element=o(t),this.options=e,this.init()}e.prototype.init=function(){this.element.chosen(this.options),this.container=this.element.next(".chosen-container"),this.search_field=this.container.find(".chosen-search-input"),this.is_multiple=this.container.hasClass("chosen-container-multi"),this.is_typing=!1,this.chosenXhr=null,this.events()},e.prototype.events=function(){var t=this;this.search_field.on("compositionstart",function(){t.is_typing=!0}),this.search_field.on("compositionend",function(){t.is_typing=!1,t.update_list()}),this.search_field.on("keyup",function(){t.update_list()}),this.search_field.on("focus",function(){t.search_field_focused()})},e.prototype.search_field_focused=function(){this.search_welcome_message(),0===this.options.min_length&&0===this.search_field.val().length&&this.update_list()},e.prototype.search_welcome_message=function(){var t=o.trim(this.search_field.val()),e=this.container.find(".chosen-results");0===e.children().length&&0===t.length&&e.html('<li class="no-results">'+this.options.typing_text.replace("%s",this.options.min_length-t.length)+"</li>")},e.prototype.update_list=function(){var e=this;if(this.search_welcome_message(),!this.is_typing){var t=o.trim(this.search_field.val()),s=t.length<this.options.min_length?this.options.typing_text.replace("%s",this.options.min_length-t.length):this.options.searching_text;this.container.find(".no-results").text(s),t!==this.search_field.data("prevVal")&&(this.search_field.data("prevVal",t),this.timer&&clearTimeout(this.timer),t.length<this.options.min_length||(this.timer=setTimeout(function(){e.chosenXhr&&e.chosenXhr.abort(),e.options.data.term=t,e.chosenXhr=window.wp.ajax.post("ulf-chosen",e.options.data).done(function(t){e.show_results(t)}).fail(function(t){e.container.find(".no-results").text(t.error)})},this.options.type_delay)))}},e.prototype.show_results=function(t){var s=this;if(!this.is_typing&&null!==t){if(0===t.length)return this.element.data().chosen.no_results_clear(),void this.element.data().chosen.no_results(this.search_field.val());var i=[];this.element.find("option").each(function(){o(this).is(":selected")?i.push(o(this).val()+"-"+o(this).text()):o(this).attr("value").length&&o(this).remove()}),o.each(t,function(t,e){-1===o.inArray(e.value+"-"+e.text,i)&&o("<option />").attr("value",e.value).html(e.text).appendTo(s.element)});var e=this.search_field.val(),n=this.search_field.innerWidth();if(this.element.trigger("chosen:updated"),this.is_multiple){var r=this.element.parent().find(".ulf-hide-select").val()||[];this.element.ULFChosenOrder(r,!0),this.search_field.css("width",n)}this.search_field.val(e),null!==this.chosenXhr.done&&this.chosenXhr.done(t)}},o.fn.ULFAjaxChosen=function(t){return this.each(function(){new e(this,t)})}}(jQuery),function(){var s,i,o=[].indexOf||function(t){for(var e=0,s=this.length;e<s;e++)if(e in this&&this[e]===t)return e;return-1},n={}.hasOwnProperty;i=function(){function t(){}return t.insertAt=function(t,e,s){return s.insertBefore(t,s.children[e].nextSibling)},t.getFlattenedOptionsAndGroups=function(t){var e,s,i,n,r,o,h,l,c;for(e=[],o=0,l=(i=Array.prototype.filter.call(t.childNodes,function(t){var e;return"OPTION"===(e=t.nodeName.toUpperCase())||"OPTGROUP"===e})).length;o<l;o++)if(s=i[o],e.push(s),"OPTGROUP"===s.nodeName.toUpperCase())for(h=0,c=(r=Array.prototype.filter.call(s.childNodes,function(t){return"OPTION"===t.nodeName.toUpperCase()})).length;h<c;h++)n=r[h],e.push(n);return e},t.isValidMultipleSelectElement=function(t){return null!=t&&"SELECT"===t.nodeName&&t.multiple},t.getChosenUIContainer=function(t){return""!==t.id?document.getElementById(t.id.replace(/-/g,"_")+"_chosen"):this.searchChosenUIContainer(t)},t.isChosenified=function(t){return null!=this.getChosenUIContainer(t)},t.forceSelection=function(t,e){var s,i,n,r;for(n=this.getFlattenedOptionsAndGroups(t),s=0;s<n.length;)r=(i=n[s]).getAttribute("value"),0<=o.call(e,r)?(i.selected=!0,i.setAttribute("selected","")):(i.selected=!1,i.removeAttribute("selected")),s++;return this.triggerEvent(t,"chosen:updated")},t.ULFChosenOrder=function(t,e,s){var i,n,r,o,h,l,c,a,u,_,d,p,f,g;if(null!=this.getDOMElement&&(t=this.getDOMElement(t)),this.isValidMultipleSelectElement(t)&&null!=(n=this.getChosenUIContainer(t))&&e instanceof Array){for(e=e.map(Function.prototype.call,String.prototype.trim),c=this.getFlattenedOptionsAndGroups(t),null!=s&&!0===s&&this.forceSelection(t,e),g=[],r=_=0,p=e.length;_<p;r=++_){for(h=e[r],a=null,o=d=0,f=c.length;d<f;o=++d)c[o].value===h&&(a=o);i=n.querySelectorAll(".search-choice"),u=this.relAttributeName,null!=(l=Array.prototype.filter.call(i,function(t){return null!=t.querySelector("a.search-choice-close["+u+'="'+a+'"]')})[0])&&(n.querySelector("ul.chosen-choices"),g.push(this.insertAt(l,r,n.querySelector("ul.chosen-choices"))))}return g}},t}(),(s=jQuery).fn.extend({ULFChosenOrder:function(t,e){return _ULFChosenOrder.ULFChosenOrder(this,t,e)}}),this._ULFChosenOrder=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return function(t,e){for(var s in e)n.call(e,s)&&(t[s]=e[s]);function i(){this.constructor=t}i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype}(e,i),e.relAttributeName="data-option-array-index",e.isjQueryObject=function(t){return"undefined"!=typeof jQuery&&null!==jQuery&&t instanceof jQuery},e.getDOMElement=function(t){return this.isjQueryObject(t)?t.get(0):t},e.searchChosenUIContainer=function(t){return null!=s(t).data("chosen")?s(t).data("chosen").container[0]:s(t).next(".chosen-container.chosen-container-multi").get(0)},e.triggerEvent=function(t,e){return s(t).trigger(e)},e}()}.call(this),function(){var h,s,n,o,r={}.hasOwnProperty;(o=function(){function t(){this.options_index=0,this.parsed=[]}return t.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},t.prototype.add_group=function(t){var e,s,i,n,r,o;for(e=this.parsed.length,this.parsed.push({array_index:e,group:!0,label:t.label,title:t.title?t.title:void 0,children:0,disabled:t.disabled,classes:t.className}),o=[],s=0,i=(r=t.childNodes).length;s<i;s++)n=r[s],o.push(this.add_option(n,e,t.disabled));return o},t.prototype.add_option=function(t,e,s){if("OPTION"===t.nodeName.toUpperCase())return""!==t.text?(null!=e&&(this.parsed[e].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:t.value,text:t.text,html:t.innerHTML,title:t.title?t.title:void 0,selected:t.selected,disabled:!0===s?s:t.disabled,group_array_index:e,group_label:null!=e?this.parsed[e].label:null,classes:t.className,style:t.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1},t}()).select_to_array=function(t){var e,s,i,n,r;for(n=new o,s=0,i=(r=t.childNodes).length;s<i;s++)e=r[s],n.add_node(e);return n.parsed},s=function(){function n(t,e){var s,i;this.form_field=t,this.options=null!=e?e:{},this.label_click_handler=(s=this.label_click_handler,i=this,function(){return s.apply(i,arguments)}),n.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.on_ready())}return n.prototype.set_default_values=function(){var e,s;return this.click_test_action=(e=this,function(t){return e.test_active_click(t)}),this.activate_action=(s=this,function(t){return s.activate_field(t)}),this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.is_rtl=this.options.rtl||/\bchosen-rtl\b/.test(this.form_field.className),this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text&&this.options.allow_single_deselect,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null==this.options.enable_split_word_search||this.options.enable_split_word_search,this.group_search=null==this.options.group_search||this.options.group_search,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null==this.options.single_backstroke_delete||this.options.single_backstroke_delete,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null==this.options.display_selected_options||this.options.display_selected_options,this.display_disabled_options=null==this.options.display_disabled_options||this.options.display_disabled_options,this.include_group_label_in_selected=this.options.include_group_label_in_selected||!1,this.max_shown_results=this.options.max_shown_results||Number.POSITIVE_INFINITY,this.case_sensitive_search=this.options.case_sensitive_search||!1,this.hide_results_on_select=null==this.options.hide_results_on_select||this.options.hide_results_on_select},n.prototype.set_default_text=function(){return this.form_field.getAttribute("data-placeholder")?this.default_text=this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||n.default_multiple_text:this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||n.default_single_text,this.default_text=this.escape_html(this.default_text),this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||n.default_no_result_text},n.prototype.choice_label=function(t){return this.include_group_label_in_selected&&null!=t.group_label?"<b class='group-name'>"+this.escape_html(t.group_label)+"</b>"+t.html:t.html},n.prototype.mouse_enter=function(){return this.mouse_on_container=!0},n.prototype.mouse_leave=function(){return this.mouse_on_container=!1},n.prototype.input_focus=function(t){if(this.is_multiple){if(!this.active_field)return setTimeout((e=this,function(){return e.container_mousedown()}),50)}else if(!this.active_field)return this.activate_field();var e},n.prototype.input_blur=function(t){if(!this.mouse_on_container)return this.active_field=!1,setTimeout((e=this,function(){return e.blur_test()}),100);var e},n.prototype.label_click_handler=function(t){return this.is_multiple?this.container_mousedown(t):this.activate_field()},n.prototype.results_option_build=function(t){var e,s,i,n,r,o,h;for(e="",n=h=0,r=(o=this.results_data).length;n<r&&((i="")!==(i=(s=o[n]).group?this.result_add_group(s):this.result_add_option(s))&&(h++,e+=i),(null!=t?t.first:void 0)&&(s.selected&&this.is_multiple?this.choice_build(s):s.selected&&!this.is_multiple&&this.single_set_selected_text(this.choice_label(s))),!(h>=this.max_shown_results));n++);return e},n.prototype.result_add_option=function(t){var e,s;return t.search_match&&this.include_option_in_results(t)?(e=[],t.disabled||t.selected&&this.is_multiple||e.push("active-result"),!t.disabled||t.selected&&this.is_multiple||e.push("disabled-result"),t.selected&&e.push("result-selected"),null!=t.group_array_index&&e.push("group-option"),""!==t.classes&&e.push(t.classes),(s=document.createElement("li")).className=e.join(" "),t.style&&(s.style.cssText=t.style),s.setAttribute("data-option-array-index",t.array_index),s.innerHTML=t.highlighted_html||t.html,t.title&&(s.title=t.title),this.outerHTML(s)):""},n.prototype.result_add_group=function(t){var e,s;return(t.search_match||t.group_match)&&0<t.active_options?((e=[]).push("group-result"),t.classes&&e.push(t.classes),(s=document.createElement("li")).className=e.join(" "),s.innerHTML=t.highlighted_html||this.escape_html(t.label),t.title&&(s.title=t.title),this.outerHTML(s)):""},n.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},n.prototype.reset_single_select_options=function(){var t,e,s,i,n;for(n=[],t=0,e=(s=this.results_data).length;t<e;t++)(i=s[t]).selected?n.push(i.selected=!1):n.push(void 0);return n},n.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},n.prototype.results_search=function(t){return this.results_showing?this.winnow_results():this.results_show()},n.prototype.winnow_results=function(t){var e,s,i,n,r,o,h,l,c,a,u,_,d,p,f;for(this.no_results_clear(),a=0,e=(h=this.get_search_text()).replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),c=this.get_search_regex(e),i=0,n=(l=this.results_data).length;i<n;i++)(r=l[i]).search_match=!1,_=u=null,r.highlighted_html="",this.include_option_in_results(r)&&(r.group&&(r.group_match=!1,r.active_options=0),null!=r.group_array_index&&this.results_data[r.group_array_index]&&(0===(u=this.results_data[r.group_array_index]).active_options&&u.search_match&&(a+=1),u.active_options+=1),f=r.group?r.label:r.text,r.group&&!this.group_search||(_=this.search_string_match(f,c),r.search_match=null!=_,r.search_match&&!r.group&&(a+=1),r.search_match?(h.length&&(d=_.index,o=f.slice(0,d),s=f.slice(d,d+h.length),p=f.slice(d+h.length),r.highlighted_html=this.escape_html(o)+"<em>"+this.escape_html(s)+"</em>"+this.escape_html(p)),null!=u&&(u.group_match=!0)):null!=r.group_array_index&&this.results_data[r.group_array_index].search_match&&(r.search_match=!0)));return this.result_clear_highlight(),a<1&&h.length?(this.update_results_content(""),this.no_results(h)):(this.update_results_content(this.results_option_build()),(null!=t?t.skip_highlight:void 0)?void 0:this.winnow_results_set_highlight())},n.prototype.get_search_regex=function(t){var e,s;return s=this.search_contains?t:"(^|\\s|\\b)"+t+"[^\\s]*",this.enable_split_word_search||this.search_contains||(s="^"+s),e=this.case_sensitive_search?"":"i",new RegExp(s,e)},n.prototype.search_string_match=function(t,e){var s;return s=e.exec(t),!this.search_contains&&(null!=s?s[1]:void 0)&&(s.index+=1),s},n.prototype.choices_count=function(){var t,e,s;if(null!=this.selected_option_count)return this.selected_option_count;for(t=this.selected_option_count=0,e=(s=this.form_field.options).length;t<e;t++)s[t].selected&&(this.selected_option_count+=1);return this.selected_option_count},n.prototype.choices_click=function(t){if(t.preventDefault(),this.activate_field(),!this.results_showing&&!this.is_disabled)return this.results_show()},n.prototype.keydown_checker=function(t){var e,s;switch(s=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),8!==s&&this.pending_backstroke&&this.clear_backstroke(),s){case 8:this.backstroke_length=this.get_search_field_value().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(t),this.mouse_on_container=!1;break;case 13:case 27:this.results_showing&&t.preventDefault();break;case 32:this.disable_search&&t.preventDefault();break;case 38:t.preventDefault(),this.keyup_arrow();break;case 40:t.preventDefault(),this.keydown_arrow()}},n.prototype.keyup_checker=function(t){var e,s;switch(s=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),s){case 8:this.is_multiple&&this.backstroke_length<1&&0<this.choices_count()?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:t.preventDefault(),this.results_showing&&this.result_select(t);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},n.prototype.clipboard_event_checker=function(t){var e;if(!this.is_disabled)return setTimeout((e=this,function(){return e.results_search()}),50)},n.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+"px"},n.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},n.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},n.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},n.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},n.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:((e=document.createElement("div")).appendChild(t),e.innerHTML)},n.prototype.get_single_html=function(){return'<a class="chosen-single chosen-default">\n <span>'+this.default_text+'</span>\n <div><b></b></div>\n</a>\n<div class="chosen-drop">\n <div class="chosen-search">\n <input class="chosen-search-input" type="text" autocomplete="off" />\n </div>\n <ul class="chosen-results"></ul>\n</div>'},n.prototype.get_multi_html=function(){return'<ul class="chosen-choices">\n <li class="search-field">\n <input class="chosen-search-input" type="text" autocomplete="off" value="'+this.default_text+'" />\n </li>\n</ul>\n<div class="chosen-drop">\n <ul class="chosen-results"></ul>\n</div>'},n.prototype.get_no_results_html=function(t){return'<li class="no-results">\n '+this.results_none_found+" <span>"+this.escape_html(t)+"</span>\n</li>"},n.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?8<=document.documentMode:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},n.default_multiple_text="Select Some Options",n.default_single_text="Select an Option",n.default_no_result_text="No results match",n}(),(h=jQuery).fn.extend({chosen:function(i){return s.browser_is_supported()?this.each(function(t){var e,s;s=(e=h(this)).data("chosen"),"destroy"!==i?s instanceof n||e.data("chosen",new n(this,i)):s instanceof n&&s.destroy()}):this}}),n=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return function(t,e){for(var s in e)r.call(e,s)&&(t[s]=e[s]);function i(){this.constructor=t}i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype}(e,s),e.prototype.setup=function(){return this.form_field_jq=h(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex},e.prototype.set_up_html=function(){var t,e;return(t=["chosen-container"]).push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&t.push(this.form_field.className),this.is_rtl&&t.push("chosen-rtl"),e={class:t.join(" "),title:this.form_field.title},this.form_field.id.length&&(e.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=h("<div />",e),this.container.width(this.container_width()),this.is_multiple?this.container.html(this.get_multi_html()):this.container.html(this.get_single_html()),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},e.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},e.prototype.register_observers=function(){var e,s,i,n,r,o,h,l,c,a,u,_,d,p,f,g,m,v,y,b,w,x,k,C;return this.container.on("touchstart.chosen",(e=this,function(t){e.container_mousedown(t)})),this.container.on("touchend.chosen",(s=this,function(t){s.container_mouseup(t)})),this.container.on("mousedown.chosen",(i=this,function(t){i.container_mousedown(t)})),this.container.on("mouseup.chosen",(n=this,function(t){n.container_mouseup(t)})),this.container.on("mouseenter.chosen",(r=this,function(t){r.mouse_enter(t)})),this.container.on("mouseleave.chosen",(o=this,function(t){o.mouse_leave(t)})),this.search_results.on("mouseup.chosen",(h=this,function(t){h.search_results_mouseup(t)})),this.search_results.on("mouseover.chosen",(l=this,function(t){l.search_results_mouseover(t)})),this.search_results.on("mouseout.chosen",(c=this,function(t){c.search_results_mouseout(t)})),this.search_results.on("mousewheel.chosen DOMMouseScroll.chosen",(a=this,function(t){a.search_results_mousewheel(t)})),this.search_results.on("touchstart.chosen",(u=this,function(t){u.search_results_touchstart(t)})),this.search_results.on("touchmove.chosen",(_=this,function(t){_.search_results_touchmove(t)})),this.search_results.on("touchend.chosen",(d=this,function(t){d.search_results_touchend(t)})),this.form_field_jq.on("chosen:updated.chosen",(p=this,function(t){p.results_update_field(t)})),this.form_field_jq.on("chosen:activate.chosen",(f=this,function(t){f.activate_field(t)})),this.form_field_jq.on("chosen:open.chosen",(g=this,function(t){g.container_mousedown(t)})),this.form_field_jq.on("chosen:close.chosen",(m=this,function(t){m.close_field(t)})),this.search_field.on("blur.chosen",(v=this,function(t){v.input_blur(t)})),this.search_field.on("keyup.chosen",(y=this,function(t){y.keyup_checker(t)})),this.search_field.on("keydown.chosen",(b=this,function(t){b.keydown_checker(t)})),this.search_field.on("focus.chosen",(w=this,function(t){w.input_focus(t)})),this.search_field.on("cut.chosen",(x=this,function(t){x.clipboard_event_checker(t)})),this.search_field.on("paste.chosen",(k=this,function(t){k.clipboard_event_checker(t)})),this.is_multiple?this.search_choices.on("click.chosen",(C=this,function(t){C.choices_click(t)})):this.container.on("click.chosen",function(t){t.preventDefault()})},e.prototype.destroy=function(){return h(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),0<this.form_field_label.length&&this.form_field_label.off("click.chosen"),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},e.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field.disabled||this.form_field_jq.parents("fieldset").is(":disabled"),this.container.toggleClass("chosen-disabled",this.is_disabled),this.search_field[0].disabled=this.is_disabled,this.is_multiple||this.selected_item.off("focus.chosen",this.activate_field),this.is_disabled?this.close_field():this.is_multiple?void 0:this.selected_item.on("focus.chosen",this.activate_field)},e.prototype.container_mousedown=function(t){var e;if(!this.is_disabled)return!t||"mousedown"!==(e=t.type)&&"touchstart"!==e||this.results_showing||t.preventDefault(),null!=t&&h(t.target).hasClass("search-choice-close")?void 0:(this.active_field?this.is_multiple||!t||h(t.target)[0]!==this.selected_item[0]&&!h(t.target).parents("a.chosen-single").length||(t.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),h(this.container[0].ownerDocument).on("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},e.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},e.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=t.originalEvent.deltaY||-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),"DOMMouseScroll"===t.type&&(e*=40),this.search_results.scrollTop(e+this.search_results.scrollTop())},e.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass("chosen-container-active"))return this.close_field()},e.prototype.close_field=function(){return h(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale(),this.search_field.blur()},e.prototype.activate_field=function(){if(!this.is_disabled)return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},e.prototype.test_active_click=function(t){var e;return(e=h(t.target).closest(".chosen-container")).length&&this.container[0]===e[0]?this.active_field=!0:this.close_field()},e.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=o.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},e.prototype.result_do_highlight=function(t){var e,s,i,n;if(t.length){if(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass("highlighted"),(i=parseInt(this.search_results.css("maxHeight"),10))+(n=this.search_results.scrollTop())<=(e=(s=this.result_highlight.position().top+this.search_results.scrollTop())+this.result_highlight.outerHeight()))return this.search_results.scrollTop(0<e-i?e-i:0);if(s<n)return this.search_results.scrollTop(s)}},e.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},e.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.get_search_field_value()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},e.prototype.update_results_content=function(t){return this.search_results.html(t)},e.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},e.prototype.set_tab_index=function(t){var e;if(this.form_field.tabIndex)return e=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=e},e.prototype.set_label_behavior=function(){if(this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=h("label[for='"+this.form_field.id+"']")),0<this.form_field_label.length)return this.form_field_label.on("click.chosen",this.label_click_handler)},e.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},e.prototype.search_results_mouseup=function(t){var e;if((e=h(t.target).hasClass("active-result")?h(t.target):h(t.target).parents(".active-result").first()).length)return this.result_highlight=e,this.result_select(t),this.search_field.focus()},e.prototype.search_results_mouseover=function(t){var e;if(e=h(t.target).hasClass("active-result")?h(t.target):h(t.target).parents(".active-result").first())return this.result_do_highlight(e)},e.prototype.search_results_mouseout=function(t){if(h(t.target).hasClass("active-result")||h(t.target).parents(".active-result").first())return this.result_clear_highlight()},e.prototype.choice_build=function(t){var e,s,i;return e=h("<li />",{class:"search-choice"}).html("<span>"+this.choice_label(t)+"</span>"),t.disabled?e.addClass("search-choice-disabled"):((s=h("<a />",{class:"search-choice-close","data-option-array-index":t.array_index})).on("click.chosen",(i=this,function(t){return i.choice_destroy_link_click(t)})),e.append(s)),this.search_container.before(e)},e.prototype.choice_destroy_link_click=function(t){if(t.preventDefault(),t.stopPropagation(),!this.is_disabled)return this.choice_destroy(h(t.target))},e.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute("data-option-array-index")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&0<this.choices_count()&&this.get_search_field_value().length<1&&this.results_hide(),t.parents("li").first().remove(),this.search_field_scale()},e.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},e.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},e.prototype.result_select=function(t){var e,s;if(this.result_highlight)return e=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClass("active-result"):this.reset_single_select_options(),e.addClass("result-selected"),(s=this.results_data[e[0].getAttribute("data-option-array-index")]).selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(s):this.single_set_selected_text(this.choice_label(s)),this.is_multiple&&(!this.hide_results_on_select||t.metaKey||t.ctrlKey)?t.metaKey||t.ctrlKey?this.winnow_results({skip_highlight:!0}):(this.search_field.val(""),this.winnow_results()):(this.results_hide(),this.show_search_field_default()),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.trigger_form_field_change({selected:this.form_field.options[s.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,t.preventDefault(),this.search_field_scale())},e.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").html(t)},e.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change({deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},e.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")},e.prototype.get_search_field_value=function(){return this.search_field.val()},e.prototype.get_search_text=function(){return h.trim(this.get_search_field_value())},e.prototype.escape_html=function(t){return h("<div/>").text(t).html()},e.prototype.winnow_results_set_highlight=function(){var t,e;if(null!=(t=(e=this.is_multiple?[]:this.search_results.find(".result-selected.active-result")).length?e.first():this.search_results.find(".active-result").first()))return this.result_do_highlight(t)},e.prototype.no_results=function(t){var e;return e=this.get_no_results_html(t),this.search_results.append(e),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},e.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},e.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(t):void 0:this.results_show()},e.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll("li.active-result")).length?this.result_do_highlight(t.first()):(0<this.choices_count()&&this.results_hide(),this.result_clear_highlight()):void 0:this.results_show()},e.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(t=this.search_container.siblings("li.search-choice").last()).length&&!t.hasClass("search-choice-disabled")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0},e.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},e.prototype.search_field_scale=function(){var t,e,s,i,n,r,o;if(this.is_multiple){for(n={position:"absolute",left:"-1000px",top:"-1000px",display:"none",whiteSpace:"pre"},e=0,s=(r=["fontSize","fontStyle","fontWeight","fontFamily","lineHeight","textTransform","letterSpacing"]).length;e<s;e++)n[i=r[e]]=this.search_field.css(i);return(t=h("<div />").css(n)).text(this.get_search_field_value()),h("body").append(t),o=t.width()+25,t.remove(),this.container.is(":visible")&&(o=Math.min(this.container.outerWidth()-10,o)),this.search_field.width(o)}},e.prototype.trigger_form_field_change=function(t){return this.form_field_jq.trigger("input",t),this.form_field_jq.trigger("change",t)},e}()}.call(this),function(o){"use strict";function n(t,e,s){this.init(t,e,s)}function t(){this.rules=[]}o.extend(n.prototype,{init:function(t,e,s){this.controller=t,this.condition=e,this.value=s,this.rules=[],this.controls=[]},evalCondition:function(t,e,s,i,n){if("=="==s)return this.checkBoolean(i)==this.checkBoolean(n);if("!="==s)return this.checkBoolean(i)!=this.checkBoolean(n);if(">="==s)return Number(n)>=Number(i);if("<="==s)return Number(n)<=Number(i);if(">"==s)return Number(n)>Number(i);if("<"==s)return Number(n)<Number(i);if("()"==s)return window[i](t,e,n);if("any"==s){if(o.isArray(n)){for(var r=n.length-1;0<=r;r--)if(-1!==o.inArray(n[r],i.split(",")))return!0}else if(-1!==o.inArray(n,i.split(",")))return!0}else if("not-any"==s)if(o.isArray(n)){for(r=n.length-1;0<=r;r--)if(-1==o.inArray(n[r],i.split(",")))return!0}else if(-1==o.inArray(n,i.split(",")))return!0;return!1},checkBoolean:function(t){switch(t){case!0:case"true":case 1:case"1":t=!0;break;case null:case!1:case"false":case 0:case"0":t=!1}return t},checkCondition:function(t){if(!this.condition)return!0;var e=t.find(this.controller),s=this.getControlValue(t,e);return void 0!==s&&(s=this.normalizeValue(e,this.value,s),this.evalCondition(t,e,this.condition,this.value,s))},normalizeValue:function(t,e,s){return"number"==typeof e?parseFloat(s):s},getControlValue:function(t,e){return 1<e.length&&("radio"==e.attr("type")||"checkbox"==e.attr("type"))?e.filter(":checked").map(function(){return this.value}).get():"checkbox"==e.attr("type")||"radio"==e.attr("type")?e.is(":checked"):e.val()},createRule:function(t,e,s){var i=new n(t,e,s);return this.rules.push(i),i},include:function(t){this.controls.push(t)},applyRule:function(s,t){var e;e=void 0===t?this.checkCondition(s):t;var i=o.map(this.controls,function(t,e){return s.find(t)});e?(o(i).each(function(){o(this).removeClass("ulf-depend-on")}),o(this.rules).each(function(){this.applyRule(s)})):(o(i).each(function(){o(this).addClass("ulf-depend-on")}),o(this.rules).each(function(){this.applyRule(s,!1)}))}}),o.extend(t.prototype,{createRule:function(t,e,s){var i=new n(t,e,s);return this.rules.push(i),i},applyRules:function(t){o(this.rules).each(function(){this.applyRule(t)})}}),o.ulf_deps={createRuleset:function(){return new t},enable:function(s,i,n){return s.on("change keyup",function(t){var e=t.target.getAttribute("data-depend-id")||t.target.getAttribute("data-sub-depend-id");-1!==n.indexOf(e)&&i.applyRules(s)}),i.applyRules(s),!0}}}(jQuery),function(t,s){if("function"==typeof define&&define.amd)define(["exports","jquery"],function(t,e){return s(t,e)});else if("undefined"!=typeof exports){var e=require("jquery");s(exports,e)}else s(t,t.jQuery||t.Zepto||t.ender||t.$)}(this,function(t,e){var h={validate:/^(?!(_nonce|_pseudo))[a-zA-Z0-9_-]*(?:\[(?:\d*|(?!(_nonce|_pseudo))[a-zA-Z0-9_-]+)\])*$/i,key:/[a-zA-Z0-9_-]+|(?=\[\])/g,named:/^[a-zA-Z0-9_-]+$/,push:/^$/,fixed:/^\d+$/};function s(i,t){var s={},r={};function o(t,e,s){return t[e]=s,t}function e(){return s}this.addPair=function(t){if(!h.validate.test(t.name))return this;var e=function(t,e){for(var s,i=t.match(h.key);void 0!==(s=i.pop());)h.push.test(s)?e=o([],(n=t.replace(/\[\]$/,""),void 0===r[n]&&(r[n]=0),r[n]++),e):h.fixed.test(s)?e=o([],s,e):h.named.test(s)&&(e=o({},s,e));var n;return e}(t.name,t.value);return s=i.extend(!0,s,e),this},this.addPairs=function(t){if(!i.isArray(t))throw new Error("formSerializer.addPairs expects an Array");for(var e=0,s=t.length;e<s;e++)this.addPair(t[e]);return this},this.serialize=e,this.serializeJSON=function(){return JSON.stringify(e())}}return s.patterns=h,s.serializeObject=function(){return new s(e,this).addPairs(this.serializeArray()).serialize()},s.serializeJSON=function(){return new s(e,this).addPairs(this.serializeArray()).serializeJSON()},void 0!==e.fn&&(e.fn.serializeObjectULF=s.serializeObject,e.fn.serializeJSONULF=s.serializeJSON),t.FormSerializer=s});
1
+ /* Codestar Framework | A Simple and Lightweight WordPress Option Framework - v2.2.2*/
2
 
3
  !function(o){function e(t,e){this.element=o(t),this.options=e,this.init()}e.prototype.init=function(){this.element.chosen(this.options),this.container=this.element.next(".chosen-container"),this.search_field=this.container.find(".chosen-search-input"),this.is_multiple=this.container.hasClass("chosen-container-multi"),this.is_typing=!1,this.chosenXhr=null,this.events()},e.prototype.events=function(){var t=this;this.search_field.on("compositionstart",function(){t.is_typing=!0}),this.search_field.on("compositionend",function(){t.is_typing=!1,t.update_list()}),this.search_field.on("keyup",function(){t.update_list()}),this.search_field.on("focus",function(){t.search_field_focused()})},e.prototype.search_field_focused=function(){this.search_welcome_message(),0===this.options.min_length&&0===this.search_field.val().length&&this.update_list()},e.prototype.search_welcome_message=function(){var t=o.trim(this.search_field.val()),e=this.container.find(".chosen-results");0===e.children().length&&0===t.length&&e.html('<li class="no-results">'+this.options.typing_text.replace("%s",this.options.min_length-t.length)+"</li>")},e.prototype.update_list=function(){var e=this;if(this.search_welcome_message(),!this.is_typing){var t=o.trim(this.search_field.val()),s=t.length<this.options.min_length?this.options.typing_text.replace("%s",this.options.min_length-t.length):this.options.searching_text;this.container.find(".no-results").text(s),t!==this.search_field.data("prevVal")&&(this.search_field.data("prevVal",t),this.timer&&clearTimeout(this.timer),t.length<this.options.min_length||(this.timer=setTimeout(function(){e.chosenXhr&&e.chosenXhr.abort(),e.options.data.term=t,e.chosenXhr=window.wp.ajax.post("ulf-chosen",e.options.data).done(function(t){e.show_results(t)}).fail(function(t){e.container.find(".no-results").text(t.error)})},this.options.type_delay)))}},e.prototype.show_results=function(t){var s=this;if(!this.is_typing&&null!==t){if(0===t.length)return this.element.data().chosen.no_results_clear(),void this.element.data().chosen.no_results(this.search_field.val());var i=[];this.element.find("option").each(function(){o(this).is(":selected")?i.push(o(this).val()+"-"+o(this).text()):o(this).attr("value").length&&o(this).remove()}),o.each(t,function(t,e){-1===o.inArray(e.value+"-"+e.text,i)&&o("<option />").attr("value",e.value).html(e.text).appendTo(s.element)});var e=this.search_field.val(),n=this.search_field.innerWidth();if(this.element.trigger("chosen:updated"),this.is_multiple){var r=this.element.parent().find(".ulf-hide-select").val()||[];this.element.ULFChosenOrder(r,!0),this.search_field.css("width",n)}this.search_field.val(e),null!==this.chosenXhr.done&&this.chosenXhr.done(t)}},o.fn.ULFAjaxChosen=function(t){return this.each(function(){new e(this,t)})}}(jQuery),function(){var s,i,o=[].indexOf||function(t){for(var e=0,s=this.length;e<s;e++)if(e in this&&this[e]===t)return e;return-1},n={}.hasOwnProperty;i=function(){function t(){}return t.insertAt=function(t,e,s){return s.insertBefore(t,s.children[e].nextSibling)},t.getFlattenedOptionsAndGroups=function(t){var e,s,i,n,r,o,h,l,c;for(e=[],o=0,l=(i=Array.prototype.filter.call(t.childNodes,function(t){var e;return"OPTION"===(e=t.nodeName.toUpperCase())||"OPTGROUP"===e})).length;o<l;o++)if(s=i[o],e.push(s),"OPTGROUP"===s.nodeName.toUpperCase())for(h=0,c=(r=Array.prototype.filter.call(s.childNodes,function(t){return"OPTION"===t.nodeName.toUpperCase()})).length;h<c;h++)n=r[h],e.push(n);return e},t.isValidMultipleSelectElement=function(t){return null!=t&&"SELECT"===t.nodeName&&t.multiple},t.getChosenUIContainer=function(t){return""!==t.id?document.getElementById(t.id.replace(/-/g,"_")+"_chosen"):this.searchChosenUIContainer(t)},t.isChosenified=function(t){return null!=this.getChosenUIContainer(t)},t.forceSelection=function(t,e){var s,i,n,r;for(n=this.getFlattenedOptionsAndGroups(t),s=0;s<n.length;)r=(i=n[s]).getAttribute("value"),0<=o.call(e,r)?(i.selected=!0,i.setAttribute("selected","")):(i.selected=!1,i.removeAttribute("selected")),s++;return this.triggerEvent(t,"chosen:updated")},t.ULFChosenOrder=function(t,e,s){var i,n,r,o,h,l,c,a,u,_,d,p,f,g;if(null!=this.getDOMElement&&(t=this.getDOMElement(t)),this.isValidMultipleSelectElement(t)&&null!=(n=this.getChosenUIContainer(t))&&e instanceof Array){for(e=e.map(Function.prototype.call,String.prototype.trim),c=this.getFlattenedOptionsAndGroups(t),null!=s&&!0===s&&this.forceSelection(t,e),g=[],r=_=0,p=e.length;_<p;r=++_){for(h=e[r],a=null,o=d=0,f=c.length;d<f;o=++d)c[o].value===h&&(a=o);i=n.querySelectorAll(".search-choice"),u=this.relAttributeName,null!=(l=Array.prototype.filter.call(i,function(t){return null!=t.querySelector("a.search-choice-close["+u+'="'+a+'"]')})[0])&&(n.querySelector("ul.chosen-choices"),g.push(this.insertAt(l,r,n.querySelector("ul.chosen-choices"))))}return g}},t}(),(s=jQuery).fn.extend({ULFChosenOrder:function(t,e){return _ULFChosenOrder.ULFChosenOrder(this,t,e)}}),this._ULFChosenOrder=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return function(t,e){for(var s in e)n.call(e,s)&&(t[s]=e[s]);function i(){this.constructor=t}i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype}(e,i),e.relAttributeName="data-option-array-index",e.isjQueryObject=function(t){return"undefined"!=typeof jQuery&&null!==jQuery&&t instanceof jQuery},e.getDOMElement=function(t){return this.isjQueryObject(t)?t.get(0):t},e.searchChosenUIContainer=function(t){return null!=s(t).data("chosen")?s(t).data("chosen").container[0]:s(t).next(".chosen-container.chosen-container-multi").get(0)},e.triggerEvent=function(t,e){return s(t).trigger(e)},e}()}.call(this),function(){var h,s,n,o,r={}.hasOwnProperty;(o=function(){function t(){this.options_index=0,this.parsed=[]}return t.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},t.prototype.add_group=function(t){var e,s,i,n,r,o;for(e=this.parsed.length,this.parsed.push({array_index:e,group:!0,label:t.label,title:t.title?t.title:void 0,children:0,disabled:t.disabled,classes:t.className}),o=[],s=0,i=(r=t.childNodes).length;s<i;s++)n=r[s],o.push(this.add_option(n,e,t.disabled));return o},t.prototype.add_option=function(t,e,s){if("OPTION"===t.nodeName.toUpperCase())return""!==t.text?(null!=e&&(this.parsed[e].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:t.value,text:t.text,html:t.innerHTML,title:t.title?t.title:void 0,selected:t.selected,disabled:!0===s?s:t.disabled,group_array_index:e,group_label:null!=e?this.parsed[e].label:null,classes:t.className,style:t.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1},t}()).select_to_array=function(t){var e,s,i,n,r;for(n=new o,s=0,i=(r=t.childNodes).length;s<i;s++)e=r[s],n.add_node(e);return n.parsed},s=function(){function n(t,e){var s,i;this.form_field=t,this.options=null!=e?e:{},this.label_click_handler=(s=this.label_click_handler,i=this,function(){return s.apply(i,arguments)}),n.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.on_ready())}return n.prototype.set_default_values=function(){var e,s;return this.click_test_action=(e=this,function(t){return e.test_active_click(t)}),this.activate_action=(s=this,function(t){return s.activate_field(t)}),this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.is_rtl=this.options.rtl||/\bchosen-rtl\b/.test(this.form_field.className),this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text&&this.options.allow_single_deselect,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null==this.options.enable_split_word_search||this.options.enable_split_word_search,this.group_search=null==this.options.group_search||this.options.group_search,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null==this.options.single_backstroke_delete||this.options.single_backstroke_delete,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null==this.options.display_selected_options||this.options.display_selected_options,this.display_disabled_options=null==this.options.display_disabled_options||this.options.display_disabled_options,this.include_group_label_in_selected=this.options.include_group_label_in_selected||!1,this.max_shown_results=this.options.max_shown_results||Number.POSITIVE_INFINITY,this.case_sensitive_search=this.options.case_sensitive_search||!1,this.hide_results_on_select=null==this.options.hide_results_on_select||this.options.hide_results_on_select},n.prototype.set_default_text=function(){return this.form_field.getAttribute("data-placeholder")?this.default_text=this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||n.default_multiple_text:this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||n.default_single_text,this.default_text=this.escape_html(this.default_text),this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||n.default_no_result_text},n.prototype.choice_label=function(t){return this.include_group_label_in_selected&&null!=t.group_label?"<b class='group-name'>"+this.escape_html(t.group_label)+"</b>"+t.html:t.html},n.prototype.mouse_enter=function(){return this.mouse_on_container=!0},n.prototype.mouse_leave=function(){return this.mouse_on_container=!1},n.prototype.input_focus=function(t){if(this.is_multiple){if(!this.active_field)return setTimeout((e=this,function(){return e.container_mousedown()}),50)}else if(!this.active_field)return this.activate_field();var e},n.prototype.input_blur=function(t){if(!this.mouse_on_container)return this.active_field=!1,setTimeout((e=this,function(){return e.blur_test()}),100);var e},n.prototype.label_click_handler=function(t){return this.is_multiple?this.container_mousedown(t):this.activate_field()},n.prototype.results_option_build=function(t){var e,s,i,n,r,o,h;for(e="",n=h=0,r=(o=this.results_data).length;n<r&&((i="")!==(i=(s=o[n]).group?this.result_add_group(s):this.result_add_option(s))&&(h++,e+=i),(null!=t?t.first:void 0)&&(s.selected&&this.is_multiple?this.choice_build(s):s.selected&&!this.is_multiple&&this.single_set_selected_text(this.choice_label(s))),!(h>=this.max_shown_results));n++);return e},n.prototype.result_add_option=function(t){var e,s;return t.search_match&&this.include_option_in_results(t)?(e=[],t.disabled||t.selected&&this.is_multiple||e.push("active-result"),!t.disabled||t.selected&&this.is_multiple||e.push("disabled-result"),t.selected&&e.push("result-selected"),null!=t.group_array_index&&e.push("group-option"),""!==t.classes&&e.push(t.classes),(s=document.createElement("li")).className=e.join(" "),t.style&&(s.style.cssText=t.style),s.setAttribute("data-option-array-index",t.array_index),s.innerHTML=t.highlighted_html||t.html,t.title&&(s.title=t.title),this.outerHTML(s)):""},n.prototype.result_add_group=function(t){var e,s;return(t.search_match||t.group_match)&&0<t.active_options?((e=[]).push("group-result"),t.classes&&e.push(t.classes),(s=document.createElement("li")).className=e.join(" "),s.innerHTML=t.highlighted_html||this.escape_html(t.label),t.title&&(s.title=t.title),this.outerHTML(s)):""},n.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},n.prototype.reset_single_select_options=function(){var t,e,s,i,n;for(n=[],t=0,e=(s=this.results_data).length;t<e;t++)(i=s[t]).selected?n.push(i.selected=!1):n.push(void 0);return n},n.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},n.prototype.results_search=function(t){return this.results_showing?this.winnow_results():this.results_show()},n.prototype.winnow_results=function(t){var e,s,i,n,r,o,h,l,c,a,u,_,d,p,f;for(this.no_results_clear(),a=0,e=(h=this.get_search_text()).replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),c=this.get_search_regex(e),i=0,n=(l=this.results_data).length;i<n;i++)(r=l[i]).search_match=!1,_=u=null,r.highlighted_html="",this.include_option_in_results(r)&&(r.group&&(r.group_match=!1,r.active_options=0),null!=r.group_array_index&&this.results_data[r.group_array_index]&&(0===(u=this.results_data[r.group_array_index]).active_options&&u.search_match&&(a+=1),u.active_options+=1),f=r.group?r.label:r.text,r.group&&!this.group_search||(_=this.search_string_match(f,c),r.search_match=null!=_,r.search_match&&!r.group&&(a+=1),r.search_match?(h.length&&(d=_.index,o=f.slice(0,d),s=f.slice(d,d+h.length),p=f.slice(d+h.length),r.highlighted_html=this.escape_html(o)+"<em>"+this.escape_html(s)+"</em>"+this.escape_html(p)),null!=u&&(u.group_match=!0)):null!=r.group_array_index&&this.results_data[r.group_array_index].search_match&&(r.search_match=!0)));return this.result_clear_highlight(),a<1&&h.length?(this.update_results_content(""),this.no_results(h)):(this.update_results_content(this.results_option_build()),(null!=t?t.skip_highlight:void 0)?void 0:this.winnow_results_set_highlight())},n.prototype.get_search_regex=function(t){var e,s;return s=this.search_contains?t:"(^|\\s|\\b)"+t+"[^\\s]*",this.enable_split_word_search||this.search_contains||(s="^"+s),e=this.case_sensitive_search?"":"i",new RegExp(s,e)},n.prototype.search_string_match=function(t,e){var s;return s=e.exec(t),!this.search_contains&&(null!=s?s[1]:void 0)&&(s.index+=1),s},n.prototype.choices_count=function(){var t,e,s;if(null!=this.selected_option_count)return this.selected_option_count;for(t=this.selected_option_count=0,e=(s=this.form_field.options).length;t<e;t++)s[t].selected&&(this.selected_option_count+=1);return this.selected_option_count},n.prototype.choices_click=function(t){if(t.preventDefault(),this.activate_field(),!this.results_showing&&!this.is_disabled)return this.results_show()},n.prototype.keydown_checker=function(t){var e,s;switch(s=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),8!==s&&this.pending_backstroke&&this.clear_backstroke(),s){case 8:this.backstroke_length=this.get_search_field_value().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(t),this.mouse_on_container=!1;break;case 13:case 27:this.results_showing&&t.preventDefault();break;case 32:this.disable_search&&t.preventDefault();break;case 38:t.preventDefault(),this.keyup_arrow();break;case 40:t.preventDefault(),this.keydown_arrow()}},n.prototype.keyup_checker=function(t){var e,s;switch(s=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),s){case 8:this.is_multiple&&this.backstroke_length<1&&0<this.choices_count()?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:t.preventDefault(),this.results_showing&&this.result_select(t);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},n.prototype.clipboard_event_checker=function(t){var e;if(!this.is_disabled)return setTimeout((e=this,function(){return e.results_search()}),50)},n.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+"px"},n.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},n.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},n.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},n.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},n.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:((e=document.createElement("div")).appendChild(t),e.innerHTML)},n.prototype.get_single_html=function(){return'<a class="chosen-single chosen-default">\n <span>'+this.default_text+'</span>\n <div><b></b></div>\n</a>\n<div class="chosen-drop">\n <div class="chosen-search">\n <input class="chosen-search-input" type="text" autocomplete="off" />\n </div>\n <ul class="chosen-results"></ul>\n</div>'},n.prototype.get_multi_html=function(){return'<ul class="chosen-choices">\n <li class="search-field">\n <input class="chosen-search-input" type="text" autocomplete="off" value="'+this.default_text+'" />\n </li>\n</ul>\n<div class="chosen-drop">\n <ul class="chosen-results"></ul>\n</div>'},n.prototype.get_no_results_html=function(t){return'<li class="no-results">\n '+this.results_none_found+" <span>"+this.escape_html(t)+"</span>\n</li>"},n.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?8<=document.documentMode:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},n.default_multiple_text="Select Some Options",n.default_single_text="Select an Option",n.default_no_result_text="No results match",n}(),(h=jQuery).fn.extend({chosen:function(i){return s.browser_is_supported()?this.each(function(t){var e,s;s=(e=h(this)).data("chosen"),"destroy"!==i?s instanceof n||e.data("chosen",new n(this,i)):s instanceof n&&s.destroy()}):this}}),n=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return function(t,e){for(var s in e)r.call(e,s)&&(t[s]=e[s]);function i(){this.constructor=t}i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype}(e,s),e.prototype.setup=function(){return this.form_field_jq=h(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex},e.prototype.set_up_html=function(){var t,e;return(t=["chosen-container"]).push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&t.push(this.form_field.className),this.is_rtl&&t.push("chosen-rtl"),e={class:t.join(" "),title:this.form_field.title},this.form_field.id.length&&(e.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=h("<div />",e),this.container.width(this.container_width()),this.is_multiple?this.container.html(this.get_multi_html()):this.container.html(this.get_single_html()),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},e.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},e.prototype.register_observers=function(){var e,s,i,n,r,o,h,l,c,a,u,_,d,p,f,g,m,v,y,b,w,x,k,C;return this.container.on("touchstart.chosen",(e=this,function(t){e.container_mousedown(t)})),this.container.on("touchend.chosen",(s=this,function(t){s.container_mouseup(t)})),this.container.on("mousedown.chosen",(i=this,function(t){i.container_mousedown(t)})),this.container.on("mouseup.chosen",(n=this,function(t){n.container_mouseup(t)})),this.container.on("mouseenter.chosen",(r=this,function(t){r.mouse_enter(t)})),this.container.on("mouseleave.chosen",(o=this,function(t){o.mouse_leave(t)})),this.search_results.on("mouseup.chosen",(h=this,function(t){h.search_results_mouseup(t)})),this.search_results.on("mouseover.chosen",(l=this,function(t){l.search_results_mouseover(t)})),this.search_results.on("mouseout.chosen",(c=this,function(t){c.search_results_mouseout(t)})),this.search_results.on("mousewheel.chosen DOMMouseScroll.chosen",(a=this,function(t){a.search_results_mousewheel(t)})),this.search_results.on("touchstart.chosen",(u=this,function(t){u.search_results_touchstart(t)})),this.search_results.on("touchmove.chosen",(_=this,function(t){_.search_results_touchmove(t)})),this.search_results.on("touchend.chosen",(d=this,function(t){d.search_results_touchend(t)})),this.form_field_jq.on("chosen:updated.chosen",(p=this,function(t){p.results_update_field(t)})),this.form_field_jq.on("chosen:activate.chosen",(f=this,function(t){f.activate_field(t)})),this.form_field_jq.on("chosen:open.chosen",(g=this,function(t){g.container_mousedown(t)})),this.form_field_jq.on("chosen:close.chosen",(m=this,function(t){m.close_field(t)})),this.search_field.on("blur.chosen",(v=this,function(t){v.input_blur(t)})),this.search_field.on("keyup.chosen",(y=this,function(t){y.keyup_checker(t)})),this.search_field.on("keydown.chosen",(b=this,function(t){b.keydown_checker(t)})),this.search_field.on("focus.chosen",(w=this,function(t){w.input_focus(t)})),this.search_field.on("cut.chosen",(x=this,function(t){x.clipboard_event_checker(t)})),this.search_field.on("paste.chosen",(k=this,function(t){k.clipboard_event_checker(t)})),this.is_multiple?this.search_choices.on("click.chosen",(C=this,function(t){C.choices_click(t)})):this.container.on("click.chosen",function(t){t.preventDefault()})},e.prototype.destroy=function(){return h(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),0<this.form_field_label.length&&this.form_field_label.off("click.chosen"),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},e.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field.disabled||this.form_field_jq.parents("fieldset").is(":disabled"),this.container.toggleClass("chosen-disabled",this.is_disabled),this.search_field[0].disabled=this.is_disabled,this.is_multiple||this.selected_item.off("focus.chosen",this.activate_field),this.is_disabled?this.close_field():this.is_multiple?void 0:this.selected_item.on("focus.chosen",this.activate_field)},e.prototype.container_mousedown=function(t){var e;if(!this.is_disabled)return!t||"mousedown"!==(e=t.type)&&"touchstart"!==e||this.results_showing||t.preventDefault(),null!=t&&h(t.target).hasClass("search-choice-close")?void 0:(this.active_field?this.is_multiple||!t||h(t.target)[0]!==this.selected_item[0]&&!h(t.target).parents("a.chosen-single").length||(t.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),h(this.container[0].ownerDocument).on("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},e.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},e.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=t.originalEvent.deltaY||-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),"DOMMouseScroll"===t.type&&(e*=40),this.search_results.scrollTop(e+this.search_results.scrollTop())},e.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass("chosen-container-active"))return this.close_field()},e.prototype.close_field=function(){return h(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale(),this.search_field.blur()},e.prototype.activate_field=function(){if(!this.is_disabled)return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},e.prototype.test_active_click=function(t){var e;return(e=h(t.target).closest(".chosen-container")).length&&this.container[0]===e[0]?this.active_field=!0:this.close_field()},e.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=o.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},e.prototype.result_do_highlight=function(t){var e,s,i,n;if(t.length){if(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass("highlighted"),(i=parseInt(this.search_results.css("maxHeight"),10))+(n=this.search_results.scrollTop())<=(e=(s=this.result_highlight.position().top+this.search_results.scrollTop())+this.result_highlight.outerHeight()))return this.search_results.scrollTop(0<e-i?e-i:0);if(s<n)return this.search_results.scrollTop(s)}},e.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},e.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.get_search_field_value()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},e.prototype.update_results_content=function(t){return this.search_results.html(t)},e.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},e.prototype.set_tab_index=function(t){var e;if(this.form_field.tabIndex)return e=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=e},e.prototype.set_label_behavior=function(){if(this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=h("label[for='"+this.form_field.id+"']")),0<this.form_field_label.length)return this.form_field_label.on("click.chosen",this.label_click_handler)},e.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},e.prototype.search_results_mouseup=function(t){var e;if((e=h(t.target).hasClass("active-result")?h(t.target):h(t.target).parents(".active-result").first()).length)return this.result_highlight=e,this.result_select(t),this.search_field.focus()},e.prototype.search_results_mouseover=function(t){var e;if(e=h(t.target).hasClass("active-result")?h(t.target):h(t.target).parents(".active-result").first())return this.result_do_highlight(e)},e.prototype.search_results_mouseout=function(t){if(h(t.target).hasClass("active-result")||h(t.target).parents(".active-result").first())return this.result_clear_highlight()},e.prototype.choice_build=function(t){var e,s,i;return e=h("<li />",{class:"search-choice"}).html("<span>"+this.choice_label(t)+"</span>"),t.disabled?e.addClass("search-choice-disabled"):((s=h("<a />",{class:"search-choice-close","data-option-array-index":t.array_index})).on("click.chosen",(i=this,function(t){return i.choice_destroy_link_click(t)})),e.append(s)),this.search_container.before(e)},e.prototype.choice_destroy_link_click=function(t){if(t.preventDefault(),t.stopPropagation(),!this.is_disabled)return this.choice_destroy(h(t.target))},e.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute("data-option-array-index")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&0<this.choices_count()&&this.get_search_field_value().length<1&&this.results_hide(),t.parents("li").first().remove(),this.search_field_scale()},e.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},e.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},e.prototype.result_select=function(t){var e,s;if(this.result_highlight)return e=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClass("active-result"):this.reset_single_select_options(),e.addClass("result-selected"),(s=this.results_data[e[0].getAttribute("data-option-array-index")]).selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(s):this.single_set_selected_text(this.choice_label(s)),this.is_multiple&&(!this.hide_results_on_select||t.metaKey||t.ctrlKey)?t.metaKey||t.ctrlKey?this.winnow_results({skip_highlight:!0}):(this.search_field.val(""),this.winnow_results()):(this.results_hide(),this.show_search_field_default()),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.trigger_form_field_change({selected:this.form_field.options[s.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,t.preventDefault(),this.search_field_scale())},e.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").html(t)},e.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change({deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},e.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")},e.prototype.get_search_field_value=function(){return this.search_field.val()},e.prototype.get_search_text=function(){return h.trim(this.get_search_field_value())},e.prototype.escape_html=function(t){return h("<div/>").text(t).html()},e.prototype.winnow_results_set_highlight=function(){var t,e;if(null!=(t=(e=this.is_multiple?[]:this.search_results.find(".result-selected.active-result")).length?e.first():this.search_results.find(".active-result").first()))return this.result_do_highlight(t)},e.prototype.no_results=function(t){var e;return e=this.get_no_results_html(t),this.search_results.append(e),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},e.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},e.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(t):void 0:this.results_show()},e.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll("li.active-result")).length?this.result_do_highlight(t.first()):(0<this.choices_count()&&this.results_hide(),this.result_clear_highlight()):void 0:this.results_show()},e.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(t=this.search_container.siblings("li.search-choice").last()).length&&!t.hasClass("search-choice-disabled")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0},e.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},e.prototype.search_field_scale=function(){var t,e,s,i,n,r,o;if(this.is_multiple){for(n={position:"absolute",left:"-1000px",top:"-1000px",display:"none",whiteSpace:"pre"},e=0,s=(r=["fontSize","fontStyle","fontWeight","fontFamily","lineHeight","textTransform","letterSpacing"]).length;e<s;e++)n[i=r[e]]=this.search_field.css(i);return(t=h("<div />").css(n)).text(this.get_search_field_value()),h("body").append(t),o=t.width()+25,t.remove(),this.container.is(":visible")&&(o=Math.min(this.container.outerWidth()-10,o)),this.search_field.width(o)}},e.prototype.trigger_form_field_change=function(t){return this.form_field_jq.trigger("input",t),this.form_field_jq.trigger("change",t)},e}()}.call(this),function(o){"use strict";function n(t,e,s){this.init(t,e,s)}function t(){this.rules=[]}o.extend(n.prototype,{init:function(t,e,s){this.controller=t,this.condition=e,this.value=s,this.rules=[],this.controls=[]},evalCondition:function(t,e,s,i,n){if("=="==s)return this.checkBoolean(i)==this.checkBoolean(n);if("!="==s)return this.checkBoolean(i)!=this.checkBoolean(n);if(">="==s)return Number(n)>=Number(i);if("<="==s)return Number(n)<=Number(i);if(">"==s)return Number(n)>Number(i);if("<"==s)return Number(n)<Number(i);if("()"==s)return window[i](t,e,n);if("any"==s){if(o.isArray(n)){for(var r=n.length-1;0<=r;r--)if(-1!==o.inArray(n[r],i.split(",")))return!0}else if(-1!==o.inArray(n,i.split(",")))return!0}else if("not-any"==s)if(o.isArray(n)){for(r=n.length-1;0<=r;r--)if(-1==o.inArray(n[r],i.split(",")))return!0}else if(-1==o.inArray(n,i.split(",")))return!0;return!1},checkBoolean:function(t){switch(t){case!0:case"true":case 1:case"1":t=!0;break;case null:case!1:case"false":case 0:case"0":t=!1}return t},checkCondition:function(t){if(!this.condition)return!0;var e=t.find(this.controller),s=this.getControlValue(t,e);return void 0!==s&&(s=this.normalizeValue(e,this.value,s),this.evalCondition(t,e,this.condition,this.value,s))},normalizeValue:function(t,e,s){return"number"==typeof e?parseFloat(s):s},getControlValue:function(t,e){return 1<e.length&&("radio"==e.attr("type")||"checkbox"==e.attr("type"))?e.filter(":checked").map(function(){return this.value}).get():"checkbox"==e.attr("type")||"radio"==e.attr("type")?e.is(":checked"):e.val()},createRule:function(t,e,s){var i=new n(t,e,s);return this.rules.push(i),i},include:function(t){this.controls.push(t)},applyRule:function(s,t){var e;e=void 0===t?this.checkCondition(s):t;var i=o.map(this.controls,function(t,e){return s.find(t)});e?(o(i).each(function(){o(this).removeClass("ulf-depend-on")}),o(this.rules).each(function(){this.applyRule(s)})):(o(i).each(function(){o(this).addClass("ulf-depend-on")}),o(this.rules).each(function(){this.applyRule(s,!1)}))}}),o.extend(t.prototype,{createRule:function(t,e,s){var i=new n(t,e,s);return this.rules.push(i),i},applyRules:function(t){o(this.rules).each(function(){this.applyRule(t)})}}),o.ulf_deps={createRuleset:function(){return new t},enable:function(s,i,n){return s.on("change keyup",function(t){var e=t.target.getAttribute("data-depend-id")||t.target.getAttribute("data-sub-depend-id");-1!==n.indexOf(e)&&i.applyRules(s)}),i.applyRules(s),!0}}}(jQuery),function(t,s){if("function"==typeof define&&define.amd)define(["exports","jquery"],function(t,e){return s(t,e)});else if("undefined"!=typeof exports){var e=require("jquery");s(exports,e)}else s(t,t.jQuery||t.Zepto||t.ender||t.$)}(this,function(t,e){var h={validate:/^(?!(_nonce|_pseudo))[a-zA-Z0-9_-]*(?:\[(?:\d*|(?!(_nonce|_pseudo))[a-zA-Z0-9_-]+)\])*$/i,key:/[a-zA-Z0-9_-]+|(?=\[\])/g,named:/^[a-zA-Z0-9_-]+$/,push:/^$/,fixed:/^\d+$/};function s(i,t){var s={},r={};function o(t,e,s){return t[e]=s,t}function e(){return s}this.addPair=function(t){if(!h.validate.test(t.name))return this;var e=function(t,e){for(var s,i=t.match(h.key);void 0!==(s=i.pop());)h.push.test(s)?e=o([],(n=t.replace(/\[\]$/,""),void 0===r[n]&&(r[n]=0),r[n]++),e):h.fixed.test(s)?e=o([],s,e):h.named.test(s)&&(e=o({},s,e));var n;return e}(t.name,t.value);return s=i.extend(!0,s,e),this},this.addPairs=function(t){if(!i.isArray(t))throw new Error("formSerializer.addPairs expects an Array");for(var e=0,s=t.length;e<s;e++)this.addPair(t[e]);return this},this.serialize=e,this.serializeJSON=function(){return JSON.stringify(e())}}return s.patterns=h,s.serializeObject=function(){return new s(e,this).addPairs(this.serializeArray()).serialize()},s.serializeJSON=function(){return new s(e,this).addPairs(this.serializeArray()).serializeJSON()},void 0!==e.fn&&(e.fn.serializeObjectULF=s.serializeObject,e.fn.serializeJSONULF=s.serializeJSON),t.FormSerializer=s});
admin/settings/assets/scss/vendor/_fields.scss CHANGED
@@ -979,8 +979,8 @@
979
  .fa-times{
980
  position: absolute;
981
  z-index: 1;
982
- right: 4px;
983
- top: 4px;
984
  font-size: 14px;
985
  width: 22px;
986
  height: 22px;
@@ -989,7 +989,8 @@
989
  text-decoration: none;
990
  color: #fff;
991
  background-color: #dd3333;
992
- opacity: 0.8;
 
993
  transition: all .2s;
994
 
995
  &:hover{
@@ -1678,8 +1679,9 @@
1678
 
1679
  textarea,
1680
  select{
1681
- min-width: 100%;
1682
  margin: 0;
 
 
1683
  }
1684
 
1685
  .csf--title{
@@ -1699,6 +1701,7 @@
1699
 
1700
  .csf--block{
1701
  flex: 1;
 
1702
  padding-right: 6px;
1703
  padding-bottom: 6px;
1704
  }
@@ -2054,17 +2057,22 @@
2054
  display: inline-block;
2055
  position: relative;
2056
  padding: 4px;
2057
- min-width: 44px;
2058
- min-height: 22px;
 
2059
  margin-bottom: 10px;
 
 
2060
  border: 1px solid #ccc;
2061
  background-color: #f9f9f9;
2062
  box-shadow: 0 1px 0 rgba(0,0,0,0.08);
2063
 
2064
  img{
2065
- max-height: 90px;
 
2066
  display: inline-block;
2067
  vertical-align: middle;
 
2068
  }
2069
  }
2070
 
979
  .fa-times{
980
  position: absolute;
981
  z-index: 1;
982
+ right: 2px;
983
+ top: 2px;
984
  font-size: 14px;
985
  width: 22px;
986
  height: 22px;
989
  text-decoration: none;
990
  color: #fff;
991
  background-color: #dd3333;
992
+ opacity: 0.75;
993
+ border-radius: 2px;
994
  transition: all .2s;
995
 
996
  &:hover{
1679
 
1680
  textarea,
1681
  select{
 
1682
  margin: 0;
1683
+ min-width: 100%;
1684
+ max-width: 100%;
1685
  }
1686
 
1687
  .csf--title{
1701
 
1702
  .csf--block{
1703
  flex: 1;
1704
+ max-width: 100%;
1705
  padding-right: 6px;
1706
  padding-bottom: 6px;
1707
  }
2057
  display: inline-block;
2058
  position: relative;
2059
  padding: 4px;
2060
+ min-width: 100px;
2061
+ min-height: 100px;
2062
+ line-height: 100px;
2063
  margin-bottom: 10px;
2064
+ text-align: center;
2065
+ border-radius: 2px;
2066
  border: 1px solid #ccc;
2067
  background-color: #f9f9f9;
2068
  box-shadow: 0 1px 0 rgba(0,0,0,0.08);
2069
 
2070
  img{
2071
+ max-width: 100px;
2072
+ max-height: 100px;
2073
  display: inline-block;
2074
  vertical-align: middle;
2075
+ object-fit: contain;
2076
  }
2077
  }
2078
 
admin/settings/assets/scss/vendor/_responsive.scss CHANGED
@@ -69,7 +69,7 @@
69
  display: none !important;
70
  }
71
 
72
- .csf-content{
73
  margin-left: 0;
74
  }
75
 
69
  display: none !important;
70
  }
71
 
72
+ .csf-nav-normal + .csf-content{
73
  margin-left: 0;
74
  }
75
 
admin/settings/classes/abstract.class.php CHANGED
@@ -36,12 +36,10 @@ if ( ! class_exists( 'ULF_Abstract' ) ) {
36
  $field_type = ( ! empty( $field['type'] ) ) ? $field['type'] : '';
37
  $field_output = ( ! empty( $field['output'] ) ) ? $field['output'] : '';
38
  $field_check = ( $field_type === 'typography' || $field_output ) ? true : false;
 
39
 
40
  if ( $field_type && $field_id ) {
41
 
42
- ULF::maybe_include_field( $field_type );
43
-
44
- $class_name = 'ULF_Field_' . $field_type;
45
 
46
  if( $field_type === 'fieldset' ) {
47
  if ( ! empty( $field['fields'] ) ) {
@@ -65,9 +63,9 @@ if ( ! class_exists( 'ULF_Abstract' ) ) {
65
  }
66
  }
67
 
68
- if ( class_exists( $class_name ) ) {
69
 
70
- if ( method_exists( $class_name, 'output' ) || method_exists( $class_name, 'enqueue_google_fonts' ) ) {
71
 
72
  $field_value = '';
73
 
@@ -99,7 +97,7 @@ if ( ! class_exists( 'ULF_Abstract' ) ) {
99
 
100
  }
101
 
102
- $instance = new $class_name( $field, $field_value, $this->unique, 'wp/enqueue', $this );
103
 
104
  // typography enqueue and embed google web fonts
105
  if ( $field_type === 'typography' && $this->args['enqueue_webfont'] && ! empty( $field_value['font-family'] ) ) {
36
  $field_type = ( ! empty( $field['type'] ) ) ? $field['type'] : '';
37
  $field_output = ( ! empty( $field['output'] ) ) ? $field['output'] : '';
38
  $field_check = ( $field_type === 'typography' || $field_output ) ? true : false;
39
+ $field_class = 'ULF_Field_' . $field_type;
40
 
41
  if ( $field_type && $field_id ) {
42
 
 
 
 
43
 
44
  if( $field_type === 'fieldset' ) {
45
  if ( ! empty( $field['fields'] ) ) {
63
  }
64
  }
65
 
66
+ if ( class_exists( $field_class ) ) {
67
 
68
+ if ( method_exists( $field_class, 'output' ) || method_exists( $field_class, 'enqueue_google_fonts' ) ) {
69
 
70
  $field_value = '';
71
 
97
 
98
  }
99
 
100
+ $instance = new $field_class( $field, $field_value, $this->unique, 'wp/enqueue', $this );
101
 
102
  // typography enqueue and embed google web fonts
103
  if ( $field_type === 'typography' && $this->args['enqueue_webfont'] && ! empty( $field_value['font-family'] ) ) {
admin/settings/classes/admin-options.class.php CHANGED
@@ -52,6 +52,7 @@ if ( ! class_exists( 'ULF_Options' ) ) {
52
  'sticky_header' => true,
53
  'save_defaults' => true,
54
  'ajax_save' => true,
 
55
 
56
  // admin bar menu settings
57
  'admin_bar_menu_icon' => '',
@@ -533,6 +534,7 @@ if ( ! class_exists( 'ULF_Options' ) ) {
533
  $theme = ( $this->args['theme'] ) ? ' ulf-theme-'. $this->args['theme'] : '';
534
  $class = ( $this->args['class'] ) ? ' '. $this->args['class'] : '';
535
  $nav_type = ( $this->args['nav'] === 'inline' ) ? 'inline' : 'normal';
 
536
 
537
  do_action( 'ulf_options_before' );
538
 
@@ -540,7 +542,7 @@ if ( ! class_exists( 'ULF_Options' ) ) {
540
 
541
  echo '<div class="ulf-container">';
542
 
543
- echo '<form method="post" action="" enctype="multipart/form-data" id="ulf-form" autocomplete="off" novalidate="novalidate">';
544
 
545
  echo '<input type="hidden" class="ulf-section-id" name="ulf_transient[section]" value="1">';
546
 
52
  'sticky_header' => true,
53
  'save_defaults' => true,
54
  'ajax_save' => true,
55
+ 'form_action' => '',
56
 
57
  // admin bar menu settings
58
  'admin_bar_menu_icon' => '',
534
  $theme = ( $this->args['theme'] ) ? ' ulf-theme-'. $this->args['theme'] : '';
535
  $class = ( $this->args['class'] ) ? ' '. $this->args['class'] : '';
536
  $nav_type = ( $this->args['nav'] === 'inline' ) ? 'inline' : 'normal';
537
+ $form_action = ( $this->args['form_action'] ) ? $this->args['form_action'] : '';
538
 
539
  do_action( 'ulf_options_before' );
540
 
542
 
543
  echo '<div class="ulf-container">';
544
 
545
+ echo '<form method="post" action="'. esc_attr( $form_action ) .'" enctype="multipart/form-data" id="ulf-form" autocomplete="off" novalidate="novalidate">';
546
 
547
  echo '<input type="hidden" class="ulf-section-id" name="ulf_transient[section]" value="1">';
548
 
admin/settings/classes/setup.class.php CHANGED
@@ -12,10 +12,12 @@ if ( ! class_exists( 'ULF' ) ) {
12
 
13
  // Default constants
14
  public static $premium = true;
15
- public static $version = '2.2.1';
16
  public static $dir = '';
17
  public static $url = '';
18
  public static $css = '';
 
 
19
  public static $webfonts = array();
20
  public static $subsets = array();
21
  public static $inited = array();
@@ -35,18 +37,33 @@ if ( ! class_exists( 'ULF' ) ) {
35
  // Shortcode instances
36
  public static $shortcode_instances = array();
37
 
38
- // Initalize
39
- public static function init() {
40
 
41
- // Init action
42
- do_action( 'ulf_init' );
 
 
43
 
44
- // Set directory constants
45
  self::constants();
46
 
47
  // Include files
48
  self::includes();
49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  // Setup textdomain
51
  self::textdomain();
52
 
@@ -68,7 +85,7 @@ if ( ! class_exists( 'ULF' ) ) {
68
 
69
  // Setup admin option framework
70
  $params = array();
71
- if ( ! empty( self::$args['admin_options'] ) ) {
72
  foreach ( self::$args['admin_options'] as $key => $value ) {
73
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
74
 
@@ -91,7 +108,7 @@ if ( ! class_exists( 'ULF' ) ) {
91
 
92
  // Setup customize option framework
93
  $params = array();
94
- if ( ! empty( self::$args['customize_options'] ) ) {
95
  foreach ( self::$args['customize_options'] as $key => $value ) {
96
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
97
 
@@ -107,7 +124,7 @@ if ( ! class_exists( 'ULF' ) ) {
107
 
108
  // Setup metabox option framework
109
  $params = array();
110
- if ( ! empty( self::$args['metabox_options'] ) ) {
111
  foreach ( self::$args['metabox_options'] as $key => $value ) {
112
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
113
 
@@ -123,7 +140,7 @@ if ( ! class_exists( 'ULF' ) ) {
123
 
124
  // Setup nav menu option framework
125
  $params = array();
126
- if ( ! empty( self::$args['nav_menu_options'] ) ) {
127
  foreach ( self::$args['nav_menu_options'] as $key => $value ) {
128
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
129
 
@@ -139,7 +156,7 @@ if ( ! class_exists( 'ULF' ) ) {
139
 
140
  // Setup profile option framework
141
  $params = array();
142
- if ( ! empty( self::$args['profile_options'] ) ) {
143
  foreach ( self::$args['profile_options'] as $key => $value ) {
144
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
145
 
@@ -155,7 +172,7 @@ if ( ! class_exists( 'ULF' ) ) {
155
 
156
  // Setup taxonomy option framework
157
  $params = array();
158
- if ( ! empty( self::$args['taxonomy_options'] ) ) {
159
  $taxonomy = ( isset( $_GET['taxonomy'] ) ) ? sanitize_text_field( wp_unslash( $_GET['taxonomy'] ) ) : '';
160
  foreach ( self::$args['taxonomy_options'] as $key => $value ) {
161
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
@@ -171,7 +188,7 @@ if ( ! class_exists( 'ULF' ) ) {
171
  }
172
 
173
  // Setup widget option framework
174
- if ( ! empty( self::$args['widget_options'] ) && class_exists( 'WP_Widget_Factory' ) ) {
175
  $wp_widget_factory = new WP_Widget_Factory();
176
  foreach ( self::$args['widget_options'] as $key => $value ) {
177
  if ( ! isset( self::$inited[$key] ) ) {
@@ -185,7 +202,7 @@ if ( ! class_exists( 'ULF' ) ) {
185
 
186
  // Setup comment option framework
187
  $params = array();
188
- if ( ! empty( self::$args['comment_options'] ) ) {
189
  foreach ( self::$args['comment_options'] as $key => $value ) {
190
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
191
 
@@ -201,8 +218,7 @@ if ( ! class_exists( 'ULF' ) ) {
201
 
202
  // Setup shortcode option framework
203
  $params = array();
204
- if ( ! empty( self::$args['shortcode_options'] ) ) {
205
-
206
  foreach ( self::$args['shortcode_options'] as $key => $value ) {
207
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
208
 
@@ -216,7 +232,7 @@ if ( ! class_exists( 'ULF' ) ) {
216
  }
217
 
218
  // Once editor setup for gutenberg and media buttons
219
- if ( ! empty( self::$shortcode_instances ) ) {
220
  foreach ( self::$shortcode_instances as $instance ) {
221
  if ( ! empty( $instance['show_in_editor'] ) ) {
222
  ULF_Shortcoder::once_editor_setup();
@@ -287,7 +303,7 @@ if ( ! class_exists( 'ULF' ) ) {
287
  public static function constants() {
288
 
289
  // We need this path-finder code for set URL of framework
290
- $dirname = str_replace( '//', '/', wp_normalize_path( dirname( dirname( __FILE__ ) ) ) );
291
  $theme_dir = str_replace( '//', '/', wp_normalize_path( get_parent_theme_file_path() ) );
292
  $plugin_dir = str_replace( '//', '/', wp_normalize_path( WP_PLUGIN_DIR ) );
293
  $located_plugin = ( preg_match( '#'. self::sanitize_dirname( $plugin_dir ) .'#', self::sanitize_dirname( $dirname ) ) ) ? true : false;
@@ -382,13 +398,61 @@ if ( ! class_exists( 'ULF' ) ) {
382
  self::include_plugin_file( 'classes/comment-options.class.php' );
383
  }
384
 
385
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
386
 
387
- // Maybe include a field class
388
- public static function maybe_include_field( $type = '' ) {
389
- if ( ! class_exists( 'ULF_Field_'. $type ) && class_exists( 'ULF_Fields' ) ) {
390
- self::include_plugin_file( 'fields/'. $type .'/'. $type .'.php' );
 
 
391
  }
 
392
  }
393
 
394
  // Setup textdomain
@@ -429,13 +493,12 @@ if ( ! class_exists( 'ULF' ) ) {
429
  public static function add_admin_enqueue_scripts() {
430
 
431
  // Loads scripts and styles only when needed
432
- $enqueue = false;
433
  $wpscreen = get_current_screen();
434
 
435
  if ( ! empty( self::$args['admin_options'] ) ) {
436
  foreach ( self::$args['admin_options'] as $argument ) {
437
  if ( substr( $wpscreen->id, -strlen( $argument['menu_slug'] ) ) === $argument['menu_slug'] ) {
438
- $enqueue = true;
439
  }
440
  }
441
  }
@@ -443,15 +506,15 @@ if ( ! class_exists( 'ULF' ) ) {
443
  if ( ! empty( self::$args['metabox_options'] ) ) {
444
  foreach ( self::$args['metabox_options'] as $argument ) {
445
  if ( in_array( $wpscreen->post_type, (array) $argument['post_type'] ) ) {
446
- $enqueue = true;
447
  }
448
  }
449
  }
450
 
451
  if ( ! empty( self::$args['taxonomy_options'] ) ) {
452
  foreach ( self::$args['taxonomy_options'] as $argument ) {
453
- if ( $wpscreen->taxonomy === $argument['taxonomy'] ) {
454
- $enqueue = true;
455
  }
456
  }
457
  }
@@ -459,36 +522,36 @@ if ( ! class_exists( 'ULF' ) ) {
459
  if ( ! empty( self::$shortcode_instances ) ) {
460
  foreach ( self::$shortcode_instances as $argument ) {
461
  if ( ( $argument['show_in_editor'] && $wpscreen->base === 'post' ) || $argument['show_in_custom'] ) {
462
- $enqueue = true;
463
  }
464
  }
465
  }
466
 
467
  if ( ! empty( self::$args['widget_options'] ) && ( $wpscreen->id === 'widgets' || $wpscreen->id === 'customize' ) ) {
468
- $enqueue = true;
469
  }
470
 
471
  if ( ! empty( self::$args['customize_options'] ) && $wpscreen->id === 'customize' ) {
472
- $enqueue = true;
473
  }
474
 
475
  if ( ! empty( self::$args['nav_menu_options'] ) && $wpscreen->id === 'nav-menus' ) {
476
- $enqueue = true;
477
  }
478
 
479
  if ( ! empty( self::$args['profile_options'] ) && ( $wpscreen->id === 'profile' || $wpscreen->id === 'user-edit' ) ) {
480
- $enqueue = true;
481
  }
482
 
483
  if ( ! empty( self::$args['comment_options'] ) && $wpscreen->id === 'comment' ) {
484
- $enqueue = true;
485
  }
486
 
487
  if ( $wpscreen->id === 'tools_page_ulf-welcome' ) {
488
- $enqueue = true;
489
  }
490
 
491
- if ( ! $enqueue ) {
492
  return;
493
  }
494
 
@@ -506,8 +569,8 @@ if ( ! class_exists( 'ULF' ) ) {
506
  if ( apply_filters( 'ulf_fa4', false ) ) {
507
  wp_enqueue_style( 'ulf-fa', 'https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome'. $min .'.css', array(), '4.7.0', 'all' );
508
  } else {
509
- wp_enqueue_style( 'ulf-fa5', 'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/css/all'. $min .'.css', array(), '5.14.0', 'all' );
510
- wp_enqueue_style( 'ulf-fa5-v4-shims', 'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/css/v4-shims'. $min .'.css', array(), '5.14.0', 'all' );
511
  }
512
 
513
  // Main style
@@ -540,7 +603,6 @@ if ( ! class_exists( 'ULF' ) ) {
540
  foreach ( self::$fields as $field ) {
541
  if ( ! empty( $field['type'] ) ) {
542
  $classname = 'ULF_Field_' . $field['type'];
543
- self::maybe_include_field( $field['type'] );
544
  if ( class_exists( $classname ) && method_exists( $classname, 'enqueue' ) ) {
545
  $instance = new $classname( $field );
546
  if ( method_exists( $classname, 'enqueue' ) ) {
@@ -697,8 +759,6 @@ if ( ! class_exists( 'ULF' ) ) {
697
  $value = ( ! isset( $value ) && isset( $field['default'] ) ) ? $field['default'] : $value;
698
  $value = ( isset( $field['value'] ) ) ? $field['value'] : $value;
699
 
700
- self::maybe_include_field( $field_type );
701
-
702
  $classname = 'ULF_Field_'. $field_type;
703
 
704
  if ( class_exists( $classname ) ) {
@@ -720,5 +780,6 @@ if ( ! class_exists( 'ULF' ) ) {
720
 
721
  }
722
 
723
- ULF::init();
724
  }
 
 
12
 
13
  // Default constants
14
  public static $premium = true;
15
+ public static $version = '2.2.2';
16
  public static $dir = '';
17
  public static $url = '';
18
  public static $css = '';
19
+ public static $file = '';
20
+ public static $enqueue = false;
21
  public static $webfonts = array();
22
  public static $subsets = array();
23
  public static $inited = array();
37
  // Shortcode instances
38
  public static $shortcode_instances = array();
39
 
40
+ private static $instance = null;
 
41
 
42
+ public static function init( $file = __FILE__ ) {
43
+
44
+ // Set file constant
45
+ self::$file = $file;
46
 
47
+ // Set constants
48
  self::constants();
49
 
50
  // Include files
51
  self::includes();
52
 
53
+ if ( is_null( self::$instance ) ) {
54
+ self::$instance = new self();
55
+ }
56
+
57
+ return self::$instance;
58
+
59
+ }
60
+
61
+ // Initalize
62
+ public function __construct() {
63
+
64
+ // Init action
65
+ do_action( 'ulf_init' );
66
+
67
  // Setup textdomain
68
  self::textdomain();
69
 
85
 
86
  // Setup admin option framework
87
  $params = array();
88
+ if ( class_exists( 'ULF_Options' ) && ! empty( self::$args['admin_options'] ) ) {
89
  foreach ( self::$args['admin_options'] as $key => $value ) {
90
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
91
 
108
 
109
  // Setup customize option framework
110
  $params = array();
111
+ if ( class_exists( 'ULF_Customize_Options' ) && ! empty( self::$args['customize_options'] ) ) {
112
  foreach ( self::$args['customize_options'] as $key => $value ) {
113
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
114
 
124
 
125
  // Setup metabox option framework
126
  $params = array();
127
+ if ( class_exists( 'ULF_Metabox' ) && ! empty( self::$args['metabox_options'] ) ) {
128
  foreach ( self::$args['metabox_options'] as $key => $value ) {
129
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
130
 
140
 
141
  // Setup nav menu option framework
142
  $params = array();
143
+ if ( class_exists( 'ULF_Nav_Menu_Options' ) && ! empty( self::$args['nav_menu_options'] ) ) {
144
  foreach ( self::$args['nav_menu_options'] as $key => $value ) {
145
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
146
 
156
 
157
  // Setup profile option framework
158
  $params = array();
159
+ if ( class_exists( 'ULF_Profile_Options' ) && ! empty( self::$args['profile_options'] ) ) {
160
  foreach ( self::$args['profile_options'] as $key => $value ) {
161
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
162
 
172
 
173
  // Setup taxonomy option framework
174
  $params = array();
175
+ if ( class_exists( 'ULF_Taxonomy_Options' ) && ! empty( self::$args['taxonomy_options'] ) ) {
176
  $taxonomy = ( isset( $_GET['taxonomy'] ) ) ? sanitize_text_field( wp_unslash( $_GET['taxonomy'] ) ) : '';
177
  foreach ( self::$args['taxonomy_options'] as $key => $value ) {
178
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
188
  }
189
 
190
  // Setup widget option framework
191
+ if ( class_exists( 'ULF_Widget' ) && class_exists( 'WP_Widget_Factory' ) && ! empty( self::$args['widget_options'] ) ) {
192
  $wp_widget_factory = new WP_Widget_Factory();
193
  foreach ( self::$args['widget_options'] as $key => $value ) {
194
  if ( ! isset( self::$inited[$key] ) ) {
202
 
203
  // Setup comment option framework
204
  $params = array();
205
+ if ( class_exists( 'ULF_Comment_Metabox' ) && ! empty( self::$args['comment_options'] ) ) {
206
  foreach ( self::$args['comment_options'] as $key => $value ) {
207
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
208
 
218
 
219
  // Setup shortcode option framework
220
  $params = array();
221
+ if ( class_exists( 'ULF_Shortcoder' ) && ! empty( self::$args['shortcode_options'] ) ) {
 
222
  foreach ( self::$args['shortcode_options'] as $key => $value ) {
223
  if ( ! empty( self::$args['sections'][$key] ) && ! isset( self::$inited[$key] ) ) {
224
 
232
  }
233
 
234
  // Once editor setup for gutenberg and media buttons
235
+ if ( class_exists( 'ULF_Shortcoder' ) && ! empty( self::$shortcode_instances ) ) {
236
  foreach ( self::$shortcode_instances as $instance ) {
237
  if ( ! empty( $instance['show_in_editor'] ) ) {
238
  ULF_Shortcoder::once_editor_setup();
303
  public static function constants() {
304
 
305
  // We need this path-finder code for set URL of framework
306
+ $dirname = str_replace( '//', '/', wp_normalize_path( dirname( dirname( self::$file ) ) ) );
307
  $theme_dir = str_replace( '//', '/', wp_normalize_path( get_parent_theme_file_path() ) );
308
  $plugin_dir = str_replace( '//', '/', wp_normalize_path( WP_PLUGIN_DIR ) );
309
  $located_plugin = ( preg_match( '#'. self::sanitize_dirname( $plugin_dir ) .'#', self::sanitize_dirname( $dirname ) ) ) ? true : false;
398
  self::include_plugin_file( 'classes/comment-options.class.php' );
399
  }
400
 
401
+ // Include all framework fields
402
+ $fields = apply_filters( 'ulf_fields', array(
403
+ 'accordion',
404
+ 'background',
405
+ 'backup',
406
+ 'border',
407
+ 'button_set',
408
+ 'callback',
409
+ 'checkbox',
410
+ 'code_editor',
411
+ 'color',
412
+ 'color_group',
413
+ 'content',
414
+ 'date',
415
+ 'dimensions',
416
+ 'fieldset',
417
+ 'gallery',
418
+ 'group',
419
+ 'heading',
420
+ 'icon',
421
+ 'image_select',
422
+ 'link',
423
+ 'link_color',
424
+ 'map',
425
+ 'media',
426
+ 'notice',
427
+ 'number',
428
+ 'palette',
429
+ 'radio',
430
+ 'repeater',
431
+ 'select',
432
+ 'slider',
433
+ 'sortable',
434
+ 'sorter',
435
+ 'spacing',
436
+ 'spinner',
437
+ 'subheading',
438
+ 'submessage',
439
+ 'switcher',
440
+ 'tabbed',
441
+ 'text',
442
+ 'textarea',
443
+ 'typography',
444
+ 'upload',
445
+ 'wp_editor',
446
+ ) );
447
 
448
+ if ( ! empty( $fields ) ) {
449
+ foreach ( $fields as $field ) {
450
+ if ( ! class_exists( 'ULF_Field_'. $field ) && class_exists( 'ULF_Fields' ) ) {
451
+ self::include_plugin_file( 'fields/'. $field .'/'. $field .'.php' );
452
+ }
453
+ }
454
  }
455
+
456
  }
457
 
458
  // Setup textdomain
493
  public static function add_admin_enqueue_scripts() {
494
 
495
  // Loads scripts and styles only when needed
 
496
  $wpscreen = get_current_screen();
497
 
498
  if ( ! empty( self::$args['admin_options'] ) ) {
499
  foreach ( self::$args['admin_options'] as $argument ) {
500
  if ( substr( $wpscreen->id, -strlen( $argument['menu_slug'] ) ) === $argument['menu_slug'] ) {
501
+ self::$enqueue = true;
502
  }
503
  }
504
  }
506
  if ( ! empty( self::$args['metabox_options'] ) ) {
507
  foreach ( self::$args['metabox_options'] as $argument ) {
508
  if ( in_array( $wpscreen->post_type, (array) $argument['post_type'] ) ) {
509
+ self::$enqueue = true;
510
  }
511
  }
512
  }
513
 
514
  if ( ! empty( self::$args['taxonomy_options'] ) ) {
515
  foreach ( self::$args['taxonomy_options'] as $argument ) {
516
+ if ( in_array( $wpscreen->taxonomy, (array) $argument['taxonomy'] ) ) {
517
+ self::$enqueue = true;
518
  }
519
  }
520
  }
522
  if ( ! empty( self::$shortcode_instances ) ) {
523
  foreach ( self::$shortcode_instances as $argument ) {
524
  if ( ( $argument['show_in_editor'] && $wpscreen->base === 'post' ) || $argument['show_in_custom'] ) {
525
+ self::$enqueue = true;
526
  }
527
  }
528
  }
529
 
530
  if ( ! empty( self::$args['widget_options'] ) && ( $wpscreen->id === 'widgets' || $wpscreen->id === 'customize' ) ) {
531
+ self::$enqueue = true;
532
  }
533
 
534
  if ( ! empty( self::$args['customize_options'] ) && $wpscreen->id === 'customize' ) {
535
+ self::$enqueue = true;
536
  }
537
 
538
  if ( ! empty( self::$args['nav_menu_options'] ) && $wpscreen->id === 'nav-menus' ) {
539
+ self::$enqueue = true;
540
  }
541
 
542
  if ( ! empty( self::$args['profile_options'] ) && ( $wpscreen->id === 'profile' || $wpscreen->id === 'user-edit' ) ) {
543
+ self::$enqueue = true;
544
  }
545
 
546
  if ( ! empty( self::$args['comment_options'] ) && $wpscreen->id === 'comment' ) {
547
+ self::$enqueue = true;
548
  }
549
 
550
  if ( $wpscreen->id === 'tools_page_ulf-welcome' ) {
551
+ self::$enqueue = true;
552
  }
553
 
554
+ if ( ! apply_filters( 'ulf_enqueue_assets', self::$enqueue ) ) {
555
  return;
556
  }
557
 
569
  if ( apply_filters( 'ulf_fa4', false ) ) {
570
  wp_enqueue_style( 'ulf-fa', 'https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome'. $min .'.css', array(), '4.7.0', 'all' );
571
  } else {
572
+ wp_enqueue_style( 'ulf-fa5', 'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.3/css/all'. $min .'.css', array(), '5.15.3', 'all' );
573
+ wp_enqueue_style( 'ulf-fa5-v4-shims', 'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.3/css/v4-shims'. $min .'.css', array(), '5.15.3', 'all' );
574
  }
575
 
576
  // Main style
603
  foreach ( self::$fields as $field ) {
604
  if ( ! empty( $field['type'] ) ) {
605
  $classname = 'ULF_Field_' . $field['type'];
 
606
  if ( class_exists( $classname ) && method_exists( $classname, 'enqueue' ) ) {
607
  $instance = new $classname( $field );
608
  if ( method_exists( $classname, 'enqueue' ) ) {
759
  $value = ( ! isset( $value ) && isset( $field['default'] ) ) ? $field['default'] : $value;
760
  $value = ( isset( $field['value'] ) ) ? $field['value'] : $value;
761
 
 
 
762
  $classname = 'ULF_Field_'. $field_type;
763
 
764
  if ( class_exists( $classname ) ) {
780
 
781
  }
782
 
 
783
  }
784
+
785
+ ULF::init( __FILE__ );
admin/settings/fields/callback/callback.php CHANGED
@@ -16,7 +16,7 @@ if ( ! class_exists( 'ULF_Field_callback' ) ) {
16
 
17
  public function render() {
18
 
19
- if ( isset( $this->field['function'] ) && function_exists( $this->field['function'] ) ) {
20
 
21
  $args = ( isset( $this->field['args'] ) ) ? $this->field['args'] : null;
22
 
@@ -28,3 +28,4 @@ if ( ! class_exists( 'ULF_Field_callback' ) ) {
28
 
29
  }
30
  }
 
16
 
17
  public function render() {
18
 
19
+ if ( isset( $this->field['function'] ) && is_callable( $this->field['function'] ) ) {
20
 
21
  $args = ( isset( $this->field['args'] ) ) ? $this->field['args'] : null;
22
 
28
 
29
  }
30
  }
31
+
admin/settings/fields/code_editor/code_editor.php CHANGED
@@ -10,7 +10,7 @@
10
  if ( ! class_exists( 'ULF_Field_code_editor' ) ) {
11
  class ULF_Field_code_editor extends ULF_Fields {
12
 
13
- public $version = '5.58.2';
14
  public $cdn_url = 'https://cdn.jsdelivr.net/npm/codemirror@';
15
 
16
  public function __construct( $field, $value = '', $unique = '', $where = '', $parent = '' ) {
10
  if ( ! class_exists( 'ULF_Field_code_editor' ) ) {
11
  class ULF_Field_code_editor extends ULF_Fields {
12
 
13
+ public $version = '5.60.0';
14
  public $cdn_url = 'https://cdn.jsdelivr.net/npm/codemirror@';
15
 
16
  public function __construct( $field, $value = '', $unique = '', $where = '', $parent = '' ) {
admin/settings/fields/icon/fa4-icons.php CHANGED
@@ -2,9 +2,11 @@
2
  //
3
  // Font Awesome 4 Icons
4
  //
5
- function ulf_get_default_icons() {
6
- return array( array(
7
- 'title' => 'Font Awesome',
8
- 'icons' => array( 'fa fa-glass','fa fa-music','fa fa-search','fa fa-envelope-o','fa fa-heart','fa fa-star','fa fa-star-o','fa fa-user','fa fa-film','fa fa-th-large','fa fa-th','fa fa-th-list','fa fa-check','fa fa-times','fa fa-search-plus','fa fa-search-minus','fa fa-power-off','fa fa-signal','fa fa-cog','fa fa-trash-o','fa fa-home','fa fa-file-o','fa fa-clock-o','fa fa-road','fa fa-download','fa fa-arrow-circle-o-down','fa fa-arrow-circle-o-up','fa fa-inbox','fa fa-play-circle-o','fa fa-repeat','fa fa-refresh','fa fa-list-alt','fa fa-lock','fa fa-flag','fa fa-headphones','fa fa-volume-off','fa fa-volume-down','fa fa-volume-up','fa fa-qrcode','fa fa-barcode','fa fa-tag','fa fa-tags','fa fa-book','fa fa-bookmark','fa fa-print','fa fa-camera','fa fa-font','fa fa-bold','fa fa-italic','fa fa-text-height','fa fa-text-width','fa fa-align-left','fa fa-align-center','fa fa-align-right','fa fa-align-justify','fa fa-list','fa fa-outdent','fa fa-indent','fa fa-video-camera','fa fa-picture-o','fa fa-pencil','fa fa-map-marker','fa fa-adjust','fa fa-tint','fa fa-pencil-square-o','fa fa-share-square-o','fa fa-check-square-o','fa fa-arrows','fa fa-step-backward','fa fa-fast-backward','fa fa-backward','fa fa-play','fa fa-pause','fa fa-stop','fa fa-forward','fa fa-fast-forward','fa fa-step-forward','fa fa-eject','fa fa-chevron-left','fa fa-chevron-right','fa fa-plus-circle','fa fa-minus-circle','fa fa-times-circle','fa fa-check-circle','fa fa-question-circle','fa fa-info-circle','fa fa-crosshairs','fa fa-times-circle-o','fa fa-check-circle-o','fa fa-ban','fa fa-arrow-left','fa fa-arrow-right','fa fa-arrow-up','fa fa-arrow-down','fa fa-share','fa fa-expand','fa fa-compress','fa fa-plus','fa fa-minus','fa fa-asterisk','fa fa-exclamation-circle','fa fa-gift','fa fa-leaf','fa fa-fire','fa fa-eye','fa fa-eye-slash','fa fa-exclamation-triangle','fa fa-plane','fa fa-calendar','fa fa-random','fa fa-comment','fa fa-magnet','fa fa-chevron-up','fa fa-chevron-down','fa fa-retweet','fa fa-shopping-cart','fa fa-folder','fa fa-folder-open','fa fa-arrows-v','fa fa-arrows-h','fa fa-bar-chart','fa fa-twitter-square','fa fa-facebook-square','fa fa-camera-retro','fa fa-key','fa fa-cogs','fa fa-comments','fa fa-thumbs-o-up','fa fa-thumbs-o-down','fa fa-star-half','fa fa-heart-o','fa fa-sign-out','fa fa-linkedin-square','fa fa-thumb-tack','fa fa-external-link','fa fa-sign-in','fa fa-trophy','fa fa-github-square','fa fa-upload','fa fa-lemon-o','fa fa-phone','fa fa-square-o','fa fa-bookmark-o','fa fa-phone-square','fa fa-twitter','fa fa-facebook','fa fa-github','fa fa-unlock','fa fa-credit-card','fa fa-rss','fa fa-hdd-o','fa fa-bullhorn','fa fa-bell','fa fa-certificate','fa fa-hand-o-right','fa fa-hand-o-left','fa fa-hand-o-up','fa fa-hand-o-down','fa fa-arrow-circle-left','fa fa-arrow-circle-right','fa fa-arrow-circle-up','fa fa-arrow-circle-down','fa fa-globe','fa fa-wrench','fa fa-tasks','fa fa-filter','fa fa-briefcase','fa fa-arrows-alt','fa fa-users','fa fa-link','fa fa-cloud','fa fa-flask','fa fa-scissors','fa fa-files-o','fa fa-paperclip','fa fa-floppy-o','fa fa-square','fa fa-bars','fa fa-list-ul','fa fa-list-ol','fa fa-strikethrough','fa fa-underline','fa fa-table','fa fa-magic','fa fa-truck','fa fa-pinterest','fa fa-pinterest-square','fa fa-google-plus-square','fa fa-google-plus','fa fa-money','fa fa-caret-down','fa fa-caret-up','fa fa-caret-left','fa fa-caret-right','fa fa-columns','fa fa-sort','fa fa-sort-desc','fa fa-sort-asc','fa fa-envelope','fa fa-linkedin','fa fa-undo','fa fa-gavel','fa fa-tachometer','fa fa-comment-o','fa fa-comments-o','fa fa-bolt','fa fa-sitemap','fa fa-umbrella','fa fa-clipboard','fa fa-lightbulb-o','fa fa-exchange','fa fa-cloud-download','fa fa-cloud-upload','fa fa-user-md','fa fa-stethoscope','fa fa-suitcase','fa fa-bell-o','fa fa-coffee','fa fa-cutlery','fa fa-file-text-o','fa fa-building-o','fa fa-hospital-o','fa fa-ambulance','fa fa-medkit','fa fa-fighter-jet','fa fa-beer','fa fa-h-square','fa fa-plus-square','fa fa-angle-double-left','fa fa-angle-double-right','fa fa-angle-double-up','fa fa-angle-double-down','fa fa-angle-left','fa fa-angle-right','fa fa-angle-up','fa fa-angle-down','fa fa-desktop','fa fa-laptop','fa fa-tablet','fa fa-mobile','fa fa-circle-o','fa fa-quote-left','fa fa-quote-right','fa fa-spinner','fa fa-circle','fa fa-reply','fa fa-github-alt','fa fa-folder-o','fa fa-folder-open-o','fa fa-smile-o','fa fa-frown-o','fa fa-meh-o','fa fa-gamepad','fa fa-keyboard-o','fa fa-flag-o','fa fa-flag-checkered','fa fa-terminal','fa fa-code','fa fa-reply-all','fa fa-star-half-o','fa fa-location-arrow','fa fa-crop','fa fa-code-fork','fa fa-chain-broken','fa fa-question','fa fa-info','fa fa-exclamation','fa fa-superscript','fa fa-subscript','fa fa-eraser','fa fa-puzzle-piece','fa fa-microphone','fa fa-microphone-slash','fa fa-shield','fa fa-calendar-o','fa fa-fire-extinguisher','fa fa-rocket','fa fa-maxcdn','fa fa-chevron-circle-left','fa fa-chevron-circle-right','fa fa-chevron-circle-up','fa fa-chevron-circle-down','fa fa-html5','fa fa-css3','fa fa-anchor','fa fa-unlock-alt','fa fa-bullseye','fa fa-ellipsis-h','fa fa-ellipsis-v','fa fa-rss-square','fa fa-play-circle','fa fa-ticket','fa fa-minus-square','fa fa-minus-square-o','fa fa-level-up','fa fa-level-down','fa fa-check-square','fa fa-pencil-square','fa fa-external-link-square','fa fa-share-square','fa fa-compass','fa fa-caret-square-o-down','fa fa-caret-square-o-up','fa fa-caret-square-o-right','fa fa-eur','fa fa-gbp','fa fa-usd','fa fa-inr','fa fa-jpy','fa fa-rub','fa fa-krw','fa fa-btc','fa fa-file','fa fa-file-text','fa fa-sort-alpha-asc','fa fa-sort-alpha-desc','fa fa-sort-amount-asc','fa fa-sort-amount-desc','fa fa-sort-numeric-asc','fa fa-sort-numeric-desc','fa fa-thumbs-up','fa fa-thumbs-down','fa fa-youtube-square','fa fa-youtube','fa fa-xing','fa fa-xing-square','fa fa-youtube-play','fa fa-dropbox','fa fa-stack-overflow','fa fa-instagram','fa fa-flickr','fa fa-adn','fa fa-bitbucket','fa fa-bitbucket-square','fa fa-tumblr','fa fa-tumblr-square','fa fa-long-arrow-down','fa fa-long-arrow-up','fa fa-long-arrow-left','fa fa-long-arrow-right','fa fa-apple','fa fa-windows','fa fa-android','fa fa-linux','fa fa-dribbble','fa fa-skype','fa fa-foursquare','fa fa-trello','fa fa-female','fa fa-male','fa fa-gratipay','fa fa-sun-o','fa fa-moon-o','fa fa-archive','fa fa-bug','fa fa-vk','fa fa-weibo','fa fa-renren','fa fa-pagelines','fa fa-stack-exchange','fa fa-arrow-circle-o-right','fa fa-arrow-circle-o-left','fa fa-caret-square-o-left','fa fa-dot-circle-o','fa fa-wheelchair','fa fa-vimeo-square','fa fa-try','fa fa-plus-square-o','fa fa-space-shuttle','fa fa-slack','fa fa-envelope-square','fa fa-wordpress','fa fa-openid','fa fa-university','fa fa-graduation-cap','fa fa-yahoo','fa fa-google','fa fa-reddit','fa fa-reddit-square','fa fa-stumbleupon-circle','fa fa-stumbleupon','fa fa-delicious','fa fa-digg','fa fa-pied-piper-pp','fa fa-pied-piper-alt','fa fa-drupal','fa fa-joomla','fa fa-language','fa fa-fax','fa fa-building','fa fa-child','fa fa-paw','fa fa-spoon','fa fa-cube','fa fa-cubes','fa fa-behance','fa fa-behance-square','fa fa-steam','fa fa-steam-square','fa fa-recycle','fa fa-car','fa fa-taxi','fa fa-tree','fa fa-spotify','fa fa-deviantart','fa fa-soundcloud','fa fa-database','fa fa-file-pdf-o','fa fa-file-word-o','fa fa-file-excel-o','fa fa-file-powerpoint-o','fa fa-file-image-o','fa fa-file-archive-o','fa fa-file-audio-o','fa fa-file-video-o','fa fa-file-code-o','fa fa-vine','fa fa-codepen','fa fa-jsfiddle','fa fa-life-ring','fa fa-circle-o-notch','fa fa-rebel','fa fa-empire','fa fa-git-square','fa fa-git','fa fa-hacker-news','fa fa-tencent-weibo','fa fa-qq','fa fa-weixin','fa fa-paper-plane','fa fa-paper-plane-o','fa fa-history','fa fa-circle-thin','fa fa-header','fa fa-paragraph','fa fa-sliders','fa fa-share-alt','fa fa-share-alt-square','fa fa-bomb','fa fa-futbol-o','fa fa-tty','fa fa-binoculars','fa fa-plug','fa fa-slideshare','fa fa-twitch','fa fa-yelp','fa fa-newspaper-o','fa fa-wifi','fa fa-calculator','fa fa-paypal','fa fa-google-wallet','fa fa-cc-visa','fa fa-cc-mastercard','fa fa-cc-discover','fa fa-cc-amex','fa fa-cc-paypal','fa fa-cc-stripe','fa fa-bell-slash','fa fa-bell-slash-o','fa fa-trash','fa fa-copyright','fa fa-at','fa fa-eyedropper','fa fa-paint-brush','fa fa-birthday-cake','fa fa-area-chart','fa fa-pie-chart','fa fa-line-chart','fa fa-lastfm','fa fa-lastfm-square','fa fa-toggle-off','fa fa-toggle-on','fa fa-bicycle','fa fa-bus','fa fa-ioxhost','fa fa-angellist','fa fa-cc','fa fa-ils','fa fa-meanpath','fa fa-buysellads','fa fa-connectdevelop','fa fa-dashcube','fa fa-forumbee','fa fa-leanpub','fa fa-sellsy','fa fa-shirtsinbulk','fa fa-simplybuilt','fa fa-skyatlas','fa fa-cart-plus','fa fa-cart-arrow-down','fa fa-diamond','fa fa-ship','fa fa-user-secret','fa fa-motorcycle','fa fa-street-view','fa fa-heartbeat','fa fa-venus','fa fa-mars','fa fa-mercury','fa fa-transgender','fa fa-transgender-alt','fa fa-venus-double','fa fa-mars-double','fa fa-venus-mars','fa fa-mars-stroke','fa fa-mars-stroke-v','fa fa-mars-stroke-h','fa fa-neuter','fa fa-genderless','fa fa-facebook-official','fa fa-pinterest-p','fa fa-whatsapp','fa fa-server','fa fa-user-plus','fa fa-user-times','fa fa-bed','fa fa-viacoin','fa fa-train','fa fa-subway','fa fa-medium','fa fa-y-combinator','fa fa-optin-monster','fa fa-opencart','fa fa-expeditedssl','fa fa-battery-full','fa fa-battery-three-quarters','fa fa-battery-half','fa fa-battery-quarter','fa fa-battery-empty','fa fa-mouse-pointer','fa fa-i-cursor','fa fa-object-group','fa fa-object-ungroup','fa fa-sticky-note','fa fa-sticky-note-o','fa fa-cc-jcb','fa fa-cc-diners-club','fa fa-clone','fa fa-balance-scale','fa fa-hourglass-o','fa fa-hourglass-start','fa fa-hourglass-half','fa fa-hourglass-end','fa fa-hourglass','fa fa-hand-rock-o','fa fa-hand-paper-o','fa fa-hand-scissors-o','fa fa-hand-lizard-o','fa fa-hand-spock-o','fa fa-hand-pointer-o','fa fa-hand-peace-o','fa fa-trademark','fa fa-registered','fa fa-creative-commons','fa fa-gg','fa fa-gg-circle','fa fa-tripadvisor','fa fa-odnoklassniki','fa fa-odnoklassniki-square','fa fa-get-pocket','fa fa-wikipedia-w','fa fa-safari','fa fa-chrome','fa fa-firefox','fa fa-opera','fa fa-internet-explorer','fa fa-television','fa fa-contao','fa fa-500px','fa fa-amazon','fa fa-calendar-plus-o','fa fa-calendar-minus-o','fa fa-calendar-times-o','fa fa-calendar-check-o','fa fa-industry','fa fa-map-pin','fa fa-map-signs','fa fa-map-o','fa fa-map','fa fa-commenting','fa fa-commenting-o','fa fa-houzz','fa fa-vimeo','fa fa-black-tie','fa fa-fonticons','fa fa-reddit-alien','fa fa-edge','fa fa-credit-card-alt','fa fa-codiepie','fa fa-modx','fa fa-fort-awesome','fa fa-usb','fa fa-product-hunt','fa fa-mixcloud','fa fa-scribd','fa fa-pause-circle','fa fa-pause-circle-o','fa fa-stop-circle','fa fa-stop-circle-o','fa fa-shopping-bag','fa fa-shopping-basket','fa fa-hashtag','fa fa-bluetooth','fa fa-bluetooth-b','fa fa-percent','fa fa-gitlab','fa fa-wpbeginner','fa fa-wpforms','fa fa-envira','fa fa-universal-access','fa fa-wheelchair-alt','fa fa-question-circle-o','fa fa-blind','fa fa-audio-description','fa fa-volume-control-phone','fa fa-braille','fa fa-assistive-listening-systems','fa fa-american-sign-language-interpreting','fa fa-deaf','fa fa-glide','fa fa-glide-g','fa fa-sign-language','fa fa-low-vision','fa fa-viadeo','fa fa-viadeo-square','fa fa-snapchat','fa fa-snapchat-ghost','fa fa-snapchat-square','fa fa-pied-piper','fa fa-first-order','fa fa-yoast','fa fa-themeisle','fa fa-google-plus-official','fa fa-font-awesome','fa fa-handshake-o','fa fa-envelope-open','fa fa-envelope-open-o','fa fa-linode','fa fa-address-book','fa fa-address-book-o','fa fa-address-card','fa fa-address-card-o','fa fa-user-circle','fa fa-user-circle-o','fa fa-user-o','fa fa-id-badge','fa fa-id-card','fa fa-id-card-o','fa fa-quora','fa fa-free-code-camp','fa fa-telegram','fa fa-thermometer-full','fa fa-thermometer-three-quarters','fa fa-thermometer-half','fa fa-thermometer-quarter','fa fa-thermometer-empty','fa fa-shower','fa fa-bath','fa fa-podcast','fa fa-window-maximize','fa fa-window-minimize','fa fa-window-restore','fa fa-window-close','fa fa-window-close-o','fa fa-bandcamp','fa fa-grav','fa fa-etsy','fa fa-imdb','fa fa-ravelry','fa fa-eercast','fa fa-microchip','fa fa-snowflake-o','fa fa-superpowers','fa fa-wpexplorer','fa fa-meetup' )
9
- ) );
 
 
10
  }
2
  //
3
  // Font Awesome 4 Icons
4
  //
5
+ if ( ! function_exists( 'ulf_get_default_icons' ) ) {
6
+ function ulf_get_default_icons() {
7
+ return array( array(
8
+ 'title' => 'Font Awesome',
9
+ 'icons' => array( 'fa fa-glass','fa fa-music','fa fa-search','fa fa-envelope-o','fa fa-heart','fa fa-star','fa fa-star-o','fa fa-user','fa fa-film','fa fa-th-large','fa fa-th','fa fa-th-list','fa fa-check','fa fa-times','fa fa-search-plus','fa fa-search-minus','fa fa-power-off','fa fa-signal','fa fa-cog','fa fa-trash-o','fa fa-home','fa fa-file-o','fa fa-clock-o','fa fa-road','fa fa-download','fa fa-arrow-circle-o-down','fa fa-arrow-circle-o-up','fa fa-inbox','fa fa-play-circle-o','fa fa-repeat','fa fa-refresh','fa fa-list-alt','fa fa-lock','fa fa-flag','fa fa-headphones','fa fa-volume-off','fa fa-volume-down','fa fa-volume-up','fa fa-qrcode','fa fa-barcode','fa fa-tag','fa fa-tags','fa fa-book','fa fa-bookmark','fa fa-print','fa fa-camera','fa fa-font','fa fa-bold','fa fa-italic','fa fa-text-height','fa fa-text-width','fa fa-align-left','fa fa-align-center','fa fa-align-right','fa fa-align-justify','fa fa-list','fa fa-outdent','fa fa-indent','fa fa-video-camera','fa fa-picture-o','fa fa-pencil','fa fa-map-marker','fa fa-adjust','fa fa-tint','fa fa-pencil-square-o','fa fa-share-square-o','fa fa-check-square-o','fa fa-arrows','fa fa-step-backward','fa fa-fast-backward','fa fa-backward','fa fa-play','fa fa-pause','fa fa-stop','fa fa-forward','fa fa-fast-forward','fa fa-step-forward','fa fa-eject','fa fa-chevron-left','fa fa-chevron-right','fa fa-plus-circle','fa fa-minus-circle','fa fa-times-circle','fa fa-check-circle','fa fa-question-circle','fa fa-info-circle','fa fa-crosshairs','fa fa-times-circle-o','fa fa-check-circle-o','fa fa-ban','fa fa-arrow-left','fa fa-arrow-right','fa fa-arrow-up','fa fa-arrow-down','fa fa-share','fa fa-expand','fa fa-compress','fa fa-plus','fa fa-minus','fa fa-asterisk','fa fa-exclamation-circle','fa fa-gift','fa fa-leaf','fa fa-fire','fa fa-eye','fa fa-eye-slash','fa fa-exclamation-triangle','fa fa-plane','fa fa-calendar','fa fa-random','fa fa-comment','fa fa-magnet','fa fa-chevron-up','fa fa-chevron-down','fa fa-retweet','fa fa-shopping-cart','fa fa-folder','fa fa-folder-open','fa fa-arrows-v','fa fa-arrows-h','fa fa-bar-chart','fa fa-twitter-square','fa fa-facebook-square','fa fa-camera-retro','fa fa-key','fa fa-cogs','fa fa-comments','fa fa-thumbs-o-up','fa fa-thumbs-o-down','fa fa-star-half','fa fa-heart-o','fa fa-sign-out','fa fa-linkedin-square','fa fa-thumb-tack','fa fa-external-link','fa fa-sign-in','fa fa-trophy','fa fa-github-square','fa fa-upload','fa fa-lemon-o','fa fa-phone','fa fa-square-o','fa fa-bookmark-o','fa fa-phone-square','fa fa-twitter','fa fa-facebook','fa fa-github','fa fa-unlock','fa fa-credit-card','fa fa-rss','fa fa-hdd-o','fa fa-bullhorn','fa fa-bell','fa fa-certificate','fa fa-hand-o-right','fa fa-hand-o-left','fa fa-hand-o-up','fa fa-hand-o-down','fa fa-arrow-circle-left','fa fa-arrow-circle-right','fa fa-arrow-circle-up','fa fa-arrow-circle-down','fa fa-globe','fa fa-wrench','fa fa-tasks','fa fa-filter','fa fa-briefcase','fa fa-arrows-alt','fa fa-users','fa fa-link','fa fa-cloud','fa fa-flask','fa fa-scissors','fa fa-files-o','fa fa-paperclip','fa fa-floppy-o','fa fa-square','fa fa-bars','fa fa-list-ul','fa fa-list-ol','fa fa-strikethrough','fa fa-underline','fa fa-table','fa fa-magic','fa fa-truck','fa fa-pinterest','fa fa-pinterest-square','fa fa-google-plus-square','fa fa-google-plus','fa fa-money','fa fa-caret-down','fa fa-caret-up','fa fa-caret-left','fa fa-caret-right','fa fa-columns','fa fa-sort','fa fa-sort-desc','fa fa-sort-asc','fa fa-envelope','fa fa-linkedin','fa fa-undo','fa fa-gavel','fa fa-tachometer','fa fa-comment-o','fa fa-comments-o','fa fa-bolt','fa fa-sitemap','fa fa-umbrella','fa fa-clipboard','fa fa-lightbulb-o','fa fa-exchange','fa fa-cloud-download','fa fa-cloud-upload','fa fa-user-md','fa fa-stethoscope','fa fa-suitcase','fa fa-bell-o','fa fa-coffee','fa fa-cutlery','fa fa-file-text-o','fa fa-building-o','fa fa-hospital-o','fa fa-ambulance','fa fa-medkit','fa fa-fighter-jet','fa fa-beer','fa fa-h-square','fa fa-plus-square','fa fa-angle-double-left','fa fa-angle-double-right','fa fa-angle-double-up','fa fa-angle-double-down','fa fa-angle-left','fa fa-angle-right','fa fa-angle-up','fa fa-angle-down','fa fa-desktop','fa fa-laptop','fa fa-tablet','fa fa-mobile','fa fa-circle-o','fa fa-quote-left','fa fa-quote-right','fa fa-spinner','fa fa-circle','fa fa-reply','fa fa-github-alt','fa fa-folder-o','fa fa-folder-open-o','fa fa-smile-o','fa fa-frown-o','fa fa-meh-o','fa fa-gamepad','fa fa-keyboard-o','fa fa-flag-o','fa fa-flag-checkered','fa fa-terminal','fa fa-code','fa fa-reply-all','fa fa-star-half-o','fa fa-location-arrow','fa fa-crop','fa fa-code-fork','fa fa-chain-broken','fa fa-question','fa fa-info','fa fa-exclamation','fa fa-superscript','fa fa-subscript','fa fa-eraser','fa fa-puzzle-piece','fa fa-microphone','fa fa-microphone-slash','fa fa-shield','fa fa-calendar-o','fa fa-fire-extinguisher','fa fa-rocket','fa fa-maxcdn','fa fa-chevron-circle-left','fa fa-chevron-circle-right','fa fa-chevron-circle-up','fa fa-chevron-circle-down','fa fa-html5','fa fa-css3','fa fa-anchor','fa fa-unlock-alt','fa fa-bullseye','fa fa-ellipsis-h','fa fa-ellipsis-v','fa fa-rss-square','fa fa-play-circle','fa fa-ticket','fa fa-minus-square','fa fa-minus-square-o','fa fa-level-up','fa fa-level-down','fa fa-check-square','fa fa-pencil-square','fa fa-external-link-square','fa fa-share-square','fa fa-compass','fa fa-caret-square-o-down','fa fa-caret-square-o-up','fa fa-caret-square-o-right','fa fa-eur','fa fa-gbp','fa fa-usd','fa fa-inr','fa fa-jpy','fa fa-rub','fa fa-krw','fa fa-btc','fa fa-file','fa fa-file-text','fa fa-sort-alpha-asc','fa fa-sort-alpha-desc','fa fa-sort-amount-asc','fa fa-sort-amount-desc','fa fa-sort-numeric-asc','fa fa-sort-numeric-desc','fa fa-thumbs-up','fa fa-thumbs-down','fa fa-youtube-square','fa fa-youtube','fa fa-xing','fa fa-xing-square','fa fa-youtube-play','fa fa-dropbox','fa fa-stack-overflow','fa fa-instagram','fa fa-flickr','fa fa-adn','fa fa-bitbucket','fa fa-bitbucket-square','fa fa-tumblr','fa fa-tumblr-square','fa fa-long-arrow-down','fa fa-long-arrow-up','fa fa-long-arrow-left','fa fa-long-arrow-right','fa fa-apple','fa fa-windows','fa fa-android','fa fa-linux','fa fa-dribbble','fa fa-skype','fa fa-foursquare','fa fa-trello','fa fa-female','fa fa-male','fa fa-gratipay','fa fa-sun-o','fa fa-moon-o','fa fa-archive','fa fa-bug','fa fa-vk','fa fa-weibo','fa fa-renren','fa fa-pagelines','fa fa-stack-exchange','fa fa-arrow-circle-o-right','fa fa-arrow-circle-o-left','fa fa-caret-square-o-left','fa fa-dot-circle-o','fa fa-wheelchair','fa fa-vimeo-square','fa fa-try','fa fa-plus-square-o','fa fa-space-shuttle','fa fa-slack','fa fa-envelope-square','fa fa-wordpress','fa fa-openid','fa fa-university','fa fa-graduation-cap','fa fa-yahoo','fa fa-google','fa fa-reddit','fa fa-reddit-square','fa fa-stumbleupon-circle','fa fa-stumbleupon','fa fa-delicious','fa fa-digg','fa fa-pied-piper-pp','fa fa-pied-piper-alt','fa fa-drupal','fa fa-joomla','fa fa-language','fa fa-fax','fa fa-building','fa fa-child','fa fa-paw','fa fa-spoon','fa fa-cube','fa fa-cubes','fa fa-behance','fa fa-behance-square','fa fa-steam','fa fa-steam-square','fa fa-recycle','fa fa-car','fa fa-taxi','fa fa-tree','fa fa-spotify','fa fa-deviantart','fa fa-soundcloud','fa fa-database','fa fa-file-pdf-o','fa fa-file-word-o','fa fa-file-excel-o','fa fa-file-powerpoint-o','fa fa-file-image-o','fa fa-file-archive-o','fa fa-file-audio-o','fa fa-file-video-o','fa fa-file-code-o','fa fa-vine','fa fa-codepen','fa fa-jsfiddle','fa fa-life-ring','fa fa-circle-o-notch','fa fa-rebel','fa fa-empire','fa fa-git-square','fa fa-git','fa fa-hacker-news','fa fa-tencent-weibo','fa fa-qq','fa fa-weixin','fa fa-paper-plane','fa fa-paper-plane-o','fa fa-history','fa fa-circle-thin','fa fa-header','fa fa-paragraph','fa fa-sliders','fa fa-share-alt','fa fa-share-alt-square','fa fa-bomb','fa fa-futbol-o','fa fa-tty','fa fa-binoculars','fa fa-plug','fa fa-slideshare','fa fa-twitch','fa fa-yelp','fa fa-newspaper-o','fa fa-wifi','fa fa-calculator','fa fa-paypal','fa fa-google-wallet','fa fa-cc-visa','fa fa-cc-mastercard','fa fa-cc-discover','fa fa-cc-amex','fa fa-cc-paypal','fa fa-cc-stripe','fa fa-bell-slash','fa fa-bell-slash-o','fa fa-trash','fa fa-copyright','fa fa-at','fa fa-eyedropper','fa fa-paint-brush','fa fa-birthday-cake','fa fa-area-chart','fa fa-pie-chart','fa fa-line-chart','fa fa-lastfm','fa fa-lastfm-square','fa fa-toggle-off','fa fa-toggle-on','fa fa-bicycle','fa fa-bus','fa fa-ioxhost','fa fa-angellist','fa fa-cc','fa fa-ils','fa fa-meanpath','fa fa-buysellads','fa fa-connectdevelop','fa fa-dashcube','fa fa-forumbee','fa fa-leanpub','fa fa-sellsy','fa fa-shirtsinbulk','fa fa-simplybuilt','fa fa-skyatlas','fa fa-cart-plus','fa fa-cart-arrow-down','fa fa-diamond','fa fa-ship','fa fa-user-secret','fa fa-motorcycle','fa fa-street-view','fa fa-heartbeat','fa fa-venus','fa fa-mars','fa fa-mercury','fa fa-transgender','fa fa-transgender-alt','fa fa-venus-double','fa fa-mars-double','fa fa-venus-mars','fa fa-mars-stroke','fa fa-mars-stroke-v','fa fa-mars-stroke-h','fa fa-neuter','fa fa-genderless','fa fa-facebook-official','fa fa-pinterest-p','fa fa-whatsapp','fa fa-server','fa fa-user-plus','fa fa-user-times','fa fa-bed','fa fa-viacoin','fa fa-train','fa fa-subway','fa fa-medium','fa fa-y-combinator','fa fa-optin-monster','fa fa-opencart','fa fa-expeditedssl','fa fa-battery-full','fa fa-battery-three-quarters','fa fa-battery-half','fa fa-battery-quarter','fa fa-battery-empty','fa fa-mouse-pointer','fa fa-i-cursor','fa fa-object-group','fa fa-object-ungroup','fa fa-sticky-note','fa fa-sticky-note-o','fa fa-cc-jcb','fa fa-cc-diners-club','fa fa-clone','fa fa-balance-scale','fa fa-hourglass-o','fa fa-hourglass-start','fa fa-hourglass-half','fa fa-hourglass-end','fa fa-hourglass','fa fa-hand-rock-o','fa fa-hand-paper-o','fa fa-hand-scissors-o','fa fa-hand-lizard-o','fa fa-hand-spock-o','fa fa-hand-pointer-o','fa fa-hand-peace-o','fa fa-trademark','fa fa-registered','fa fa-creative-commons','fa fa-gg','fa fa-gg-circle','fa fa-tripadvisor','fa fa-odnoklassniki','fa fa-odnoklassniki-square','fa fa-get-pocket','fa fa-wikipedia-w','fa fa-safari','fa fa-chrome','fa fa-firefox','fa fa-opera','fa fa-internet-explorer','fa fa-television','fa fa-contao','fa fa-500px','fa fa-amazon','fa fa-calendar-plus-o','fa fa-calendar-minus-o','fa fa-calendar-times-o','fa fa-calendar-check-o','fa fa-industry','fa fa-map-pin','fa fa-map-signs','fa fa-map-o','fa fa-map','fa fa-commenting','fa fa-commenting-o','fa fa-houzz','fa fa-vimeo','fa fa-black-tie','fa fa-fonticons','fa fa-reddit-alien','fa fa-edge','fa fa-credit-card-alt','fa fa-codiepie','fa fa-modx','fa fa-fort-awesome','fa fa-usb','fa fa-product-hunt','fa fa-mixcloud','fa fa-scribd','fa fa-pause-circle','fa fa-pause-circle-o','fa fa-stop-circle','fa fa-stop-circle-o','fa fa-shopping-bag','fa fa-shopping-basket','fa fa-hashtag','fa fa-bluetooth','fa fa-bluetooth-b','fa fa-percent','fa fa-gitlab','fa fa-wpbeginner','fa fa-wpforms','fa fa-envira','fa fa-universal-access','fa fa-wheelchair-alt','fa fa-question-circle-o','fa fa-blind','fa fa-audio-description','fa fa-volume-control-phone','fa fa-braille','fa fa-assistive-listening-systems','fa fa-american-sign-language-interpreting','fa fa-deaf','fa fa-glide','fa fa-glide-g','fa fa-sign-language','fa fa-low-vision','fa fa-viadeo','fa fa-viadeo-square','fa fa-snapchat','fa fa-snapchat-ghost','fa fa-snapchat-square','fa fa-pied-piper','fa fa-first-order','fa fa-yoast','fa fa-themeisle','fa fa-google-plus-official','fa fa-font-awesome','fa fa-handshake-o','fa fa-envelope-open','fa fa-envelope-open-o','fa fa-linode','fa fa-address-book','fa fa-address-book-o','fa fa-address-card','fa fa-address-card-o','fa fa-user-circle','fa fa-user-circle-o','fa fa-user-o','fa fa-id-badge','fa fa-id-card','fa fa-id-card-o','fa fa-quora','fa fa-free-code-camp','fa fa-telegram','fa fa-thermometer-full','fa fa-thermometer-three-quarters','fa fa-thermometer-half','fa fa-thermometer-quarter','fa fa-thermometer-empty','fa fa-shower','fa fa-bath','fa fa-podcast','fa fa-window-maximize','fa fa-window-minimize','fa fa-window-restore','fa fa-window-close','fa fa-window-close-o','fa fa-bandcamp','fa fa-grav','fa fa-etsy','fa fa-imdb','fa fa-ravelry','fa fa-eercast','fa fa-microchip','fa fa-snowflake-o','fa fa-superpowers','fa fa-wpexplorer','fa fa-meetup' )
10
+ ) );
11
+ }
12
  }
admin/settings/fields/icon/fa5-icons.php CHANGED
@@ -2,9 +2,11 @@
2
  //
3
  // Font Awesome 5 Free Icons
4
  //
5
- function ulf_get_default_icons() {
6
- return array( array(
7
- 'title' => 'Font Awesome 5 Free',
8
- 'icons' => array( 'fab fa-500px','fab fa-accessible-icon','fab fa-accusoft','fab fa-acquisitions-incorporated','fas fa-ad','fas fa-address-book','far fa-address-book','fas fa-address-card','far fa-address-card','fas fa-adjust','fab fa-adn','fab fa-adversal','fab fa-affiliatetheme','fas fa-air-freshener','fab fa-airbnb','fab fa-algolia','fas fa-align-center','fas fa-align-justify','fas fa-align-left','fas fa-align-right','fab fa-alipay','fas fa-allergies','fab fa-amazon','fab fa-amazon-pay','fas fa-ambulance','fas fa-american-sign-language-interpreting','fab fa-amilia','fas fa-anchor','fab fa-android','fab fa-angellist','fas fa-angle-double-down','fas fa-angle-double-left','fas fa-angle-double-right','fas fa-angle-double-up','fas fa-angle-down','fas fa-angle-left','fas fa-angle-right','fas fa-angle-up','fas fa-angry','far fa-angry','fab fa-angrycreative','fab fa-angular','fas fa-ankh','fab fa-app-store','fab fa-app-store-ios','fab fa-apper','fab fa-apple','fas fa-apple-alt','fab fa-apple-pay','fas fa-archive','fas fa-archway','fas fa-arrow-alt-circle-down','far fa-arrow-alt-circle-down','fas fa-arrow-alt-circle-left','far fa-arrow-alt-circle-left','fas fa-arrow-alt-circle-right','far fa-arrow-alt-circle-right','fas fa-arrow-alt-circle-up','far fa-arrow-alt-circle-up','fas fa-arrow-circle-down','fas fa-arrow-circle-left','fas fa-arrow-circle-right','fas fa-arrow-circle-up','fas fa-arrow-down','fas fa-arrow-left','fas fa-arrow-right','fas fa-arrow-up','fas fa-arrows-alt','fas fa-arrows-alt-h','fas fa-arrows-alt-v','fab fa-artstation','fas fa-assistive-listening-systems','fas fa-asterisk','fab fa-asymmetrik','fas fa-at','fas fa-atlas','fab fa-atlassian','fas fa-atom','fab fa-audible','fas fa-audio-description','fab fa-autoprefixer','fab fa-avianex','fab fa-aviato','fas fa-award','fab fa-aws','fas fa-baby','fas fa-baby-carriage','fas fa-backspace','fas fa-backward','fas fa-bacon','fas fa-bacteria','fas fa-bacterium','fas fa-bahai','fas fa-balance-scale','fas fa-balance-scale-left','fas fa-balance-scale-right','fas fa-ban','fas fa-band-aid','fab fa-bandcamp','fas fa-barcode','fas fa-bars','fas fa-baseball-ball','fas fa-basketball-ball','fas fa-bath','fas fa-battery-empty','fas fa-battery-full','fas fa-battery-half','fas fa-battery-quarter','fas fa-battery-three-quarters','fab fa-battle-net','fas fa-bed','fas fa-beer','fab fa-behance','fab fa-behance-square','fas fa-bell','far fa-bell','fas fa-bell-slash','far fa-bell-slash','fas fa-bezier-curve','fas fa-bible','fas fa-bicycle','fas fa-biking','fab fa-bimobject','fas fa-binoculars','fas fa-biohazard','fas fa-birthday-cake','fab fa-bitbucket','fab fa-bitcoin','fab fa-bity','fab fa-black-tie','fab fa-blackberry','fas fa-blender','fas fa-blender-phone','fas fa-blind','fas fa-blog','fab fa-blogger','fab fa-blogger-b','fab fa-bluetooth','fab fa-bluetooth-b','fas fa-bold','fas fa-bolt','fas fa-bomb','fas fa-bone','fas fa-bong','fas fa-book','fas fa-book-dead','fas fa-book-medical','fas fa-book-open','fas fa-book-reader','fas fa-bookmark','far fa-bookmark','fab fa-bootstrap','fas fa-border-all','fas fa-border-none','fas fa-border-style','fas fa-bowling-ball','fas fa-box','fas fa-box-open','fas fa-box-tissue','fas fa-boxes','fas fa-braille','fas fa-brain','fas fa-bread-slice','fas fa-briefcase','fas fa-briefcase-medical','fas fa-broadcast-tower','fas fa-broom','fas fa-brush','fab fa-btc','fab fa-buffer','fas fa-bug','fas fa-building','far fa-building','fas fa-bullhorn','fas fa-bullseye','fas fa-burn','fab fa-buromobelexperte','fas fa-bus','fas fa-bus-alt','fas fa-business-time','fab fa-buy-n-large','fab fa-buysellads','fas fa-calculator','fas fa-calendar','far fa-calendar','fas fa-calendar-alt','far fa-calendar-alt','fas fa-calendar-check','far fa-calendar-check','fas fa-calendar-day','fas fa-calendar-minus','far fa-calendar-minus','fas fa-calendar-plus','far fa-calendar-plus','fas fa-calendar-times','far fa-calendar-times','fas fa-calendar-week','fas fa-camera','fas fa-camera-retro','fas fa-campground','fab fa-canadian-maple-leaf','fas fa-candy-cane','fas fa-cannabis','fas fa-capsules','fas fa-car','fas fa-car-alt','fas fa-car-battery','fas fa-car-crash','fas fa-car-side','fas fa-caravan','fas fa-caret-down','fas fa-caret-left','fas fa-caret-right','fas fa-caret-square-down','far fa-caret-square-down','fas fa-caret-square-left','far fa-caret-square-left','fas fa-caret-square-right','far fa-caret-square-right','fas fa-caret-square-up','far fa-caret-square-up','fas fa-caret-up','fas fa-carrot','fas fa-cart-arrow-down','fas fa-cart-plus','fas fa-cash-register','fas fa-cat','fab fa-cc-amazon-pay','fab fa-cc-amex','fab fa-cc-apple-pay','fab fa-cc-diners-club','fab fa-cc-discover','fab fa-cc-jcb','fab fa-cc-mastercard','fab fa-cc-paypal','fab fa-cc-stripe','fab fa-cc-visa','fab fa-centercode','fab fa-centos','fas fa-certificate','fas fa-chair','fas fa-chalkboard','fas fa-chalkboard-teacher','fas fa-charging-station','fas fa-chart-area','fas fa-chart-bar','far fa-chart-bar','fas fa-chart-line','fas fa-chart-pie','fas fa-check','fas fa-check-circle','far fa-check-circle','fas fa-check-double','fas fa-check-square','far fa-check-square','fas fa-cheese','fas fa-chess','fas fa-chess-bishop','fas fa-chess-board','fas fa-chess-king','fas fa-chess-knight','fas fa-chess-pawn','fas fa-chess-queen','fas fa-chess-rook','fas fa-chevron-circle-down','fas fa-chevron-circle-left','fas fa-chevron-circle-right','fas fa-chevron-circle-up','fas fa-chevron-down','fas fa-chevron-left','fas fa-chevron-right','fas fa-chevron-up','fas fa-child','fab fa-chrome','fab fa-chromecast','fas fa-church','fas fa-circle','far fa-circle','fas fa-circle-notch','fas fa-city','fas fa-clinic-medical','fas fa-clipboard','far fa-clipboard','fas fa-clipboard-check','fas fa-clipboard-list','fas fa-clock','far fa-clock','fas fa-clone','far fa-clone','fas fa-closed-captioning','far fa-closed-captioning','fas fa-cloud','fas fa-cloud-download-alt','fas fa-cloud-meatball','fas fa-cloud-moon','fas fa-cloud-moon-rain','fas fa-cloud-rain','fas fa-cloud-showers-heavy','fas fa-cloud-sun','fas fa-cloud-sun-rain','fas fa-cloud-upload-alt','fab fa-cloudflare','fab fa-cloudscale','fab fa-cloudsmith','fab fa-cloudversify','fas fa-cocktail','fas fa-code','fas fa-code-branch','fab fa-codepen','fab fa-codiepie','fas fa-coffee','fas fa-cog','fas fa-cogs','fas fa-coins','fas fa-columns','fas fa-comment','far fa-comment','fas fa-comment-alt','far fa-comment-alt','fas fa-comment-dollar','fas fa-comment-dots','far fa-comment-dots','fas fa-comment-medical','fas fa-comment-slash','fas fa-comments','far fa-comments','fas fa-comments-dollar','fas fa-compact-disc','fas fa-compass','far fa-compass','fas fa-compress','fas fa-compress-alt','fas fa-compress-arrows-alt','fas fa-concierge-bell','fab fa-confluence','fab fa-connectdevelop','fab fa-contao','fas fa-cookie','fas fa-cookie-bite','fas fa-copy','far fa-copy','fas fa-copyright','far fa-copyright','fab fa-cotton-bureau','fas fa-couch','fab fa-cpanel','fab fa-creative-commons','fab fa-creative-commons-by','fab fa-creative-commons-nc','fab fa-creative-commons-nc-eu','fab fa-creative-commons-nc-jp','fab fa-creative-commons-nd','fab fa-creative-commons-pd','fab fa-creative-commons-pd-alt','fab fa-creative-commons-remix','fab fa-creative-commons-sa','fab fa-creative-commons-sampling','fab fa-creative-commons-sampling-plus','fab fa-creative-commons-share','fab fa-creative-commons-zero','fas fa-credit-card','far fa-credit-card','fab fa-critical-role','fas fa-crop','fas fa-crop-alt','fas fa-cross','fas fa-crosshairs','fas fa-crow','fas fa-crown','fas fa-crutch','fab fa-css3','fab fa-css3-alt','fas fa-cube','fas fa-cubes','fas fa-cut','fab fa-cuttlefish','fab fa-d-and-d','fab fa-d-and-d-beyond','fab fa-dailymotion','fab fa-dashcube','fas fa-database','fas fa-deaf','fab fa-deezer','fab fa-delicious','fas fa-democrat','fab fa-deploydog','fab fa-deskpro','fas fa-desktop','fab fa-dev','fab fa-deviantart','fas fa-dharmachakra','fab fa-dhl','fas fa-diagnoses','fab fa-diaspora','fas fa-dice','fas fa-dice-d20','fas fa-dice-d6','fas fa-dice-five','fas fa-dice-four','fas fa-dice-one','fas fa-dice-six','fas fa-dice-three','fas fa-dice-two','fab fa-digg','fab fa-digital-ocean','fas fa-digital-tachograph','fas fa-directions','fab fa-discord','fab fa-discourse','fas fa-disease','fas fa-divide','fas fa-dizzy','far fa-dizzy','fas fa-dna','fab fa-dochub','fab fa-docker','fas fa-dog','fas fa-dollar-sign','fas fa-dolly','fas fa-dolly-flatbed','fas fa-donate','fas fa-door-closed','fas fa-door-open','fas fa-dot-circle','far fa-dot-circle','fas fa-dove','fas fa-download','fab fa-draft2digital','fas fa-drafting-compass','fas fa-dragon','fas fa-draw-polygon','fab fa-dribbble','fab fa-dribbble-square','fab fa-dropbox','fas fa-drum','fas fa-drum-steelpan','fas fa-drumstick-bite','fab fa-drupal','fas fa-dumbbell','fas fa-dumpster','fas fa-dumpster-fire','fas fa-dungeon','fab fa-dyalog','fab fa-earlybirds','fab fa-ebay','fab fa-edge','fab fa-edge-legacy','fas fa-edit','far fa-edit','fas fa-egg','fas fa-eject','fab fa-elementor','fas fa-ellipsis-h','fas fa-ellipsis-v','fab fa-ello','fab fa-ember','fab fa-empire','fas fa-envelope','far fa-envelope','fas fa-envelope-open','far fa-envelope-open','fas fa-envelope-open-text','fas fa-envelope-square','fab fa-envira','fas fa-equals','fas fa-eraser','fab fa-erlang','fab fa-ethereum','fas fa-ethernet','fab fa-etsy','fas fa-euro-sign','fab fa-evernote','fas fa-exchange-alt','fas fa-exclamation','fas fa-exclamation-circle','fas fa-exclamation-triangle','fas fa-expand','fas fa-expand-alt','fas fa-expand-arrows-alt','fab fa-expeditedssl','fas fa-external-link-alt','fas fa-external-link-square-alt','fas fa-eye','far fa-eye','fas fa-eye-dropper','fas fa-eye-slash','far fa-eye-slash','fab fa-facebook','fab fa-facebook-f','fab fa-facebook-messenger','fab fa-facebook-square','fas fa-fan','fab fa-fantasy-flight-games','fas fa-fast-backward','fas fa-fast-forward','fas fa-faucet','fas fa-fax','fas fa-feather','fas fa-feather-alt','fab fa-fedex','fab fa-fedora','fas fa-female','fas fa-fighter-jet','fab fa-figma','fas fa-file','far fa-file','fas fa-file-alt','far fa-file-alt','fas fa-file-archive','far fa-file-archive','fas fa-file-audio','far fa-file-audio','fas fa-file-code','far fa-file-code','fas fa-file-contract','fas fa-file-csv','fas fa-file-download','fas fa-file-excel','far fa-file-excel','fas fa-file-export','fas fa-file-image','far fa-file-image','fas fa-file-import','fas fa-file-invoice','fas fa-file-invoice-dollar','fas fa-file-medical','fas fa-file-medical-alt','fas fa-file-pdf','far fa-file-pdf','fas fa-file-powerpoint','far fa-file-powerpoint','fas fa-file-prescription','fas fa-file-signature','fas fa-file-upload','fas fa-file-video','far fa-file-video','fas fa-file-word','far fa-file-word','fas fa-fill','fas fa-fill-drip','fas fa-film','fas fa-filter','fas fa-fingerprint','fas fa-fire','fas fa-fire-alt','fas fa-fire-extinguisher','fab fa-firefox','fab fa-firefox-browser','fas fa-first-aid','fab fa-first-order','fab fa-first-order-alt','fab fa-firstdraft','fas fa-fish','fas fa-fist-raised','fas fa-flag','far fa-flag','fas fa-flag-checkered','fas fa-flag-usa','fas fa-flask','fab fa-flickr','fab fa-flipboard','fas fa-flushed','far fa-flushed','fab fa-fly','fas fa-folder','far fa-folder','fas fa-folder-minus','fas fa-folder-open','far fa-folder-open','fas fa-folder-plus','fas fa-font','fab fa-font-awesome','fab fa-font-awesome-alt','fab fa-font-awesome-flag','fab fa-fonticons','fab fa-fonticons-fi','fas fa-football-ball','fab fa-fort-awesome','fab fa-fort-awesome-alt','fab fa-forumbee','fas fa-forward','fab fa-foursquare','fab fa-free-code-camp','fab fa-freebsd','fas fa-frog','fas fa-frown','far fa-frown','fas fa-frown-open','far fa-frown-open','fab fa-fulcrum','fas fa-funnel-dollar','fas fa-futbol','far fa-futbol','fab fa-galactic-republic','fab fa-galactic-senate','fas fa-gamepad','fas fa-gas-pump','fas fa-gavel','fas fa-gem','far fa-gem','fas fa-genderless','fab fa-get-pocket','fab fa-gg','fab fa-gg-circle','fas fa-ghost','fas fa-gift','fas fa-gifts','fab fa-git','fab fa-git-alt','fab fa-git-square','fab fa-github','fab fa-github-alt','fab fa-github-square','fab fa-gitkraken','fab fa-gitlab','fab fa-gitter','fas fa-glass-cheers','fas fa-glass-martini','fas fa-glass-martini-alt','fas fa-glass-whiskey','fas fa-glasses','fab fa-glide','fab fa-glide-g','fas fa-globe','fas fa-globe-africa','fas fa-globe-americas','fas fa-globe-asia','fas fa-globe-europe','fab fa-gofore','fas fa-golf-ball','fab fa-goodreads','fab fa-goodreads-g','fab fa-google','fab fa-google-drive','fab fa-google-pay','fab fa-google-play','fab fa-google-plus','fab fa-google-plus-g','fab fa-google-plus-square','fab fa-google-wallet','fas fa-gopuram','fas fa-graduation-cap','fab fa-gratipay','fab fa-grav','fas fa-greater-than','fas fa-greater-than-equal','fas fa-grimace','far fa-grimace','fas fa-grin','far fa-grin','fas fa-grin-alt','far fa-grin-alt','fas fa-grin-beam','far fa-grin-beam','fas fa-grin-beam-sweat','far fa-grin-beam-sweat','fas fa-grin-hearts','far fa-grin-hearts','fas fa-grin-squint','far fa-grin-squint','fas fa-grin-squint-tears','far fa-grin-squint-tears','fas fa-grin-stars','far fa-grin-stars','fas fa-grin-tears','far fa-grin-tears','fas fa-grin-tongue','far fa-grin-tongue','fas fa-grin-tongue-squint','far fa-grin-tongue-squint','fas fa-grin-tongue-wink','far fa-grin-tongue-wink','fas fa-grin-wink','far fa-grin-wink','fas fa-grip-horizontal','fas fa-grip-lines','fas fa-grip-lines-vertical','fas fa-grip-vertical','fab fa-gripfire','fab fa-grunt','fab fa-guilded','fas fa-guitar','fab fa-gulp','fas fa-h-square','fab fa-hacker-news','fab fa-hacker-news-square','fab fa-hackerrank','fas fa-hamburger','fas fa-hammer','fas fa-hamsa','fas fa-hand-holding','fas fa-hand-holding-heart','fas fa-hand-holding-medical','fas fa-hand-holding-usd','fas fa-hand-holding-water','fas fa-hand-lizard','far fa-hand-lizard','fas fa-hand-middle-finger','fas fa-hand-paper','far fa-hand-paper','fas fa-hand-peace','far fa-hand-peace','fas fa-hand-point-down','far fa-hand-point-down','fas fa-hand-point-left','far fa-hand-point-left','fas fa-hand-point-right','far fa-hand-point-right','fas fa-hand-point-up','far fa-hand-point-up','fas fa-hand-pointer','far fa-hand-pointer','fas fa-hand-rock','far fa-hand-rock','fas fa-hand-scissors','far fa-hand-scissors','fas fa-hand-sparkles','fas fa-hand-spock','far fa-hand-spock','fas fa-hands','fas fa-hands-helping','fas fa-hands-wash','fas fa-handshake','far fa-handshake','fas fa-handshake-alt-slash','fas fa-handshake-slash','fas fa-hanukiah','fas fa-hard-hat','fas fa-hashtag','fas fa-hat-cowboy','fas fa-hat-cowboy-side','fas fa-hat-wizard','fas fa-hdd','far fa-hdd','fas fa-head-side-cough','fas fa-head-side-cough-slash','fas fa-head-side-mask','fas fa-head-side-virus','fas fa-heading','fas fa-headphones','fas fa-headphones-alt','fas fa-headset','fas fa-heart','far fa-heart','fas fa-heart-broken','fas fa-heartbeat','fas fa-helicopter','fas fa-highlighter','fas fa-hiking','fas fa-hippo','fab fa-hips','fab fa-hire-a-helper','fas fa-history','fab fa-hive','fas fa-hockey-puck','fas fa-holly-berry','fas fa-home','fab fa-hooli','fab fa-hornbill','fas fa-horse','fas fa-horse-head','fas fa-hospital','far fa-hospital','fas fa-hospital-alt','fas fa-hospital-symbol','fas fa-hospital-user','fas fa-hot-tub','fas fa-hotdog','fas fa-hotel','fab fa-hotjar','fas fa-hourglass','far fa-hourglass','fas fa-hourglass-end','fas fa-hourglass-half','fas fa-hourglass-start','fas fa-house-damage','fas fa-house-user','fab fa-houzz','fas fa-hryvnia','fab fa-html5','fab fa-hubspot','fas fa-i-cursor','fas fa-ice-cream','fas fa-icicles','fas fa-icons','fas fa-id-badge','far fa-id-badge','fas fa-id-card','far fa-id-card','fas fa-id-card-alt','fab fa-ideal','fas fa-igloo','fas fa-image','far fa-image','fas fa-images','far fa-images','fab fa-imdb','fas fa-inbox','fas fa-indent','fas fa-industry','fas fa-infinity','fas fa-info','fas fa-info-circle','fab fa-innosoft','fab fa-instagram','fab fa-instagram-square','fab fa-instalod','fab fa-intercom','fab fa-internet-explorer','fab fa-invision','fab fa-ioxhost','fas fa-italic','fab fa-itch-io','fab fa-itunes','fab fa-itunes-note','fab fa-java','fas fa-jedi','fab fa-jedi-order','fab fa-jenkins','fab fa-jira','fab fa-joget','fas fa-joint','fab fa-joomla','fas fa-journal-whills','fab fa-js','fab fa-js-square','fab fa-jsfiddle','fas fa-kaaba','fab fa-kaggle','fas fa-key','fab fa-keybase','fas fa-keyboard','far fa-keyboard','fab fa-keycdn','fas fa-khanda','fab fa-kickstarter','fab fa-kickstarter-k','fas fa-kiss','far fa-kiss','fas fa-kiss-beam','far fa-kiss-beam','fas fa-kiss-wink-heart','far fa-kiss-wink-heart','fas fa-kiwi-bird','fab fa-korvue','fas fa-landmark','fas fa-language','fas fa-laptop','fas fa-laptop-code','fas fa-laptop-house','fas fa-laptop-medical','fab fa-laravel','fab fa-lastfm','fab fa-lastfm-square','fas fa-laugh','far fa-laugh','fas fa-laugh-beam','far fa-laugh-beam','fas fa-laugh-squint','far fa-laugh-squint','fas fa-laugh-wink','far fa-laugh-wink','fas fa-layer-group','fas fa-leaf','fab fa-leanpub','fas fa-lemon','far fa-lemon','fab fa-less','fas fa-less-than','fas fa-less-than-equal','fas fa-level-down-alt','fas fa-level-up-alt','fas fa-life-ring','far fa-life-ring','fas fa-lightbulb','far fa-lightbulb','fab fa-line','fas fa-link','fab fa-linkedin','fab fa-linkedin-in','fab fa-linode','fab fa-linux','fas fa-lira-sign','fas fa-list','fas fa-list-alt','far fa-list-alt','fas fa-list-ol','fas fa-list-ul','fas fa-location-arrow','fas fa-lock','fas fa-lock-open','fas fa-long-arrow-alt-down','fas fa-long-arrow-alt-left','fas fa-long-arrow-alt-right','fas fa-long-arrow-alt-up','fas fa-low-vision','fas fa-luggage-cart','fas fa-lungs','fas fa-lungs-virus','fab fa-lyft','fab fa-magento','fas fa-magic','fas fa-magnet','fas fa-mail-bulk','fab fa-mailchimp','fas fa-male','fab fa-mandalorian','fas fa-map','far fa-map','fas fa-map-marked','fas fa-map-marked-alt','fas fa-map-marker','fas fa-map-marker-alt','fas fa-map-pin','fas fa-map-signs','fab fa-markdown','fas fa-marker','fas fa-mars','fas fa-mars-double','fas fa-mars-stroke','fas fa-mars-stroke-h','fas fa-mars-stroke-v','fas fa-mask','fab fa-mastodon','fab fa-maxcdn','fab fa-mdb','fas fa-medal','fab fa-medapps','fab fa-medium','fab fa-medium-m','fas fa-medkit','fab fa-medrt','fab fa-meetup','fab fa-megaport','fas fa-meh','far fa-meh','fas fa-meh-blank','far fa-meh-blank','fas fa-meh-rolling-eyes','far fa-meh-rolling-eyes','fas fa-memory','fab fa-mendeley','fas fa-menorah','fas fa-mercury','fas fa-meteor','fab fa-microblog','fas fa-microchip','fas fa-microphone','fas fa-microphone-alt','fas fa-microphone-alt-slash','fas fa-microphone-slash','fas fa-microscope','fab fa-microsoft','fas fa-minus','fas fa-minus-circle','fas fa-minus-square','far fa-minus-square','fas fa-mitten','fab fa-mix','fab fa-mixcloud','fab fa-mixer','fab fa-mizuni','fas fa-mobile','fas fa-mobile-alt','fab fa-modx','fab fa-monero','fas fa-money-bill','fas fa-money-bill-alt','far fa-money-bill-alt','fas fa-money-bill-wave','fas fa-money-bill-wave-alt','fas fa-money-check','fas fa-money-check-alt','fas fa-monument','fas fa-moon','far fa-moon','fas fa-mortar-pestle','fas fa-mosque','fas fa-motorcycle','fas fa-mountain','fas fa-mouse','fas fa-mouse-pointer','fas fa-mug-hot','fas fa-music','fab fa-napster','fab fa-neos','fas fa-network-wired','fas fa-neuter','fas fa-newspaper','far fa-newspaper','fab fa-nimblr','fab fa-node','fab fa-node-js','fas fa-not-equal','fas fa-notes-medical','fab fa-npm','fab fa-ns8','fab fa-nutritionix','fas fa-object-group','far fa-object-group','fas fa-object-ungroup','far fa-object-ungroup','fab fa-octopus-deploy','fab fa-odnoklassniki','fab fa-odnoklassniki-square','fas fa-oil-can','fab fa-old-republic','fas fa-om','fab fa-opencart','fab fa-openid','fab fa-opera','fab fa-optin-monster','fab fa-orcid','fab fa-osi','fas fa-otter','fas fa-outdent','fab fa-page4','fab fa-pagelines','fas fa-pager','fas fa-paint-brush','fas fa-paint-roller','fas fa-palette','fab fa-palfed','fas fa-pallet','fas fa-paper-plane','far fa-paper-plane','fas fa-paperclip','fas fa-parachute-box','fas fa-paragraph','fas fa-parking','fas fa-passport','fas fa-pastafarianism','fas fa-paste','fab fa-patreon','fas fa-pause','fas fa-pause-circle','far fa-pause-circle','fas fa-paw','fab fa-paypal','fas fa-peace','fas fa-pen','fas fa-pen-alt','fas fa-pen-fancy','fas fa-pen-nib','fas fa-pen-square','fas fa-pencil-alt','fas fa-pencil-ruler','fab fa-penny-arcade','fas fa-people-arrows','fas fa-people-carry','fas fa-pepper-hot','fab fa-perbyte','fas fa-percent','fas fa-percentage','fab fa-periscope','fas fa-person-booth','fab fa-phabricator','fab fa-phoenix-framework','fab fa-phoenix-squadron','fas fa-phone','fas fa-phone-alt','fas fa-phone-slash','fas fa-phone-square','fas fa-phone-square-alt','fas fa-phone-volume','fas fa-photo-video','fab fa-php','fab fa-pied-piper','fab fa-pied-piper-alt','fab fa-pied-piper-hat','fab fa-pied-piper-pp','fab fa-pied-piper-square','fas fa-piggy-bank','fas fa-pills','fab fa-pinterest','fab fa-pinterest-p','fab fa-pinterest-square','fas fa-pizza-slice','fas fa-place-of-worship','fas fa-plane','fas fa-plane-arrival','fas fa-plane-departure','fas fa-plane-slash','fas fa-play','fas fa-play-circle','far fa-play-circle','fab fa-playstation','fas fa-plug','fas fa-plus','fas fa-plus-circle','fas fa-plus-square','far fa-plus-square','fas fa-podcast','fas fa-poll','fas fa-poll-h','fas fa-poo','fas fa-poo-storm','fas fa-poop','fas fa-portrait','fas fa-pound-sign','fas fa-power-off','fas fa-pray','fas fa-praying-hands','fas fa-prescription','fas fa-prescription-bottle','fas fa-prescription-bottle-alt','fas fa-print','fas fa-procedures','fab fa-product-hunt','fas fa-project-diagram','fas fa-pump-medical','fas fa-pump-soap','fab fa-pushed','fas fa-puzzle-piece','fab fa-python','fab fa-qq','fas fa-qrcode','fas fa-question','fas fa-question-circle','far fa-question-circle','fas fa-quidditch','fab fa-quinscape','fab fa-quora','fas fa-quote-left','fas fa-quote-right','fas fa-quran','fab fa-r-project','fas fa-radiation','fas fa-radiation-alt','fas fa-rainbow','fas fa-random','fab fa-raspberry-pi','fab fa-ravelry','fab fa-react','fab fa-reacteurope','fab fa-readme','fab fa-rebel','fas fa-receipt','fas fa-record-vinyl','fas fa-recycle','fab fa-red-river','fab fa-reddit','fab fa-reddit-alien','fab fa-reddit-square','fab fa-redhat','fas fa-redo','fas fa-redo-alt','fas fa-registered','far fa-registered','fas fa-remove-format','fab fa-renren','fas fa-reply','fas fa-reply-all','fab fa-replyd','fas fa-republican','fab fa-researchgate','fab fa-resolving','fas fa-restroom','fas fa-retweet','fab fa-rev','fas fa-ribbon','fas fa-ring','fas fa-road','fas fa-robot','fas fa-rocket','fab fa-rocketchat','fab fa-rockrms','fas fa-route','fas fa-rss','fas fa-rss-square','fas fa-ruble-sign','fas fa-ruler','fas fa-ruler-combined','fas fa-ruler-horizontal','fas fa-ruler-vertical','fas fa-running','fas fa-rupee-sign','fab fa-rust','fas fa-sad-cry','far fa-sad-cry','fas fa-sad-tear','far fa-sad-tear','fab fa-safari','fab fa-salesforce','fab fa-sass','fas fa-satellite','fas fa-satellite-dish','fas fa-save','far fa-save','fab fa-schlix','fas fa-school','fas fa-screwdriver','fab fa-scribd','fas fa-scroll','fas fa-sd-card','fas fa-search','fas fa-search-dollar','fas fa-search-location','fas fa-search-minus','fas fa-search-plus','fab fa-searchengin','fas fa-seedling','fab fa-sellcast','fab fa-sellsy','fas fa-server','fab fa-servicestack','fas fa-shapes','fas fa-share','fas fa-share-alt','fas fa-share-alt-square','fas fa-share-square','far fa-share-square','fas fa-shekel-sign','fas fa-shield-alt','fas fa-shield-virus','fas fa-ship','fas fa-shipping-fast','fab fa-shirtsinbulk','fas fa-shoe-prints','fab fa-shopify','fas fa-shopping-bag','fas fa-shopping-basket','fas fa-shopping-cart','fab fa-shopware','fas fa-shower','fas fa-shuttle-van','fas fa-sign','fas fa-sign-in-alt','fas fa-sign-language','fas fa-sign-out-alt','fas fa-signal','fas fa-signature','fas fa-sim-card','fab fa-simplybuilt','fas fa-sink','fab fa-sistrix','fas fa-sitemap','fab fa-sith','fas fa-skating','fab fa-sketch','fas fa-skiing','fas fa-skiing-nordic','fas fa-skull','fas fa-skull-crossbones','fab fa-skyatlas','fab fa-skype','fab fa-slack','fab fa-slack-hash','fas fa-slash','fas fa-sleigh','fas fa-sliders-h','fab fa-slideshare','fas fa-smile','far fa-smile','fas fa-smile-beam','far fa-smile-beam','fas fa-smile-wink','far fa-smile-wink','fas fa-smog','fas fa-smoking','fas fa-smoking-ban','fas fa-sms','fab fa-snapchat','fab fa-snapchat-ghost','fab fa-snapchat-square','fas fa-snowboarding','fas fa-snowflake','far fa-snowflake','fas fa-snowman','fas fa-snowplow','fas fa-soap','fas fa-socks','fas fa-solar-panel','fas fa-sort','fas fa-sort-alpha-down','fas fa-sort-alpha-down-alt','fas fa-sort-alpha-up','fas fa-sort-alpha-up-alt','fas fa-sort-amount-down','fas fa-sort-amount-down-alt','fas fa-sort-amount-up','fas fa-sort-amount-up-alt','fas fa-sort-down','fas fa-sort-numeric-down','fas fa-sort-numeric-down-alt','fas fa-sort-numeric-up','fas fa-sort-numeric-up-alt','fas fa-sort-up','fab fa-soundcloud','fab fa-sourcetree','fas fa-spa','fas fa-space-shuttle','fab fa-speakap','fab fa-speaker-deck','fas fa-spell-check','fas fa-spider','fas fa-spinner','fas fa-splotch','fab fa-spotify','fas fa-spray-can','fas fa-square','far fa-square','fas fa-square-full','fas fa-square-root-alt','fab fa-squarespace','fab fa-stack-exchange','fab fa-stack-overflow','fab fa-stackpath','fas fa-stamp','fas fa-star','far fa-star','fas fa-star-and-crescent','fas fa-star-half','far fa-star-half','fas fa-star-half-alt','fas fa-star-of-david','fas fa-star-of-life','fab fa-staylinked','fab fa-steam','fab fa-steam-square','fab fa-steam-symbol','fas fa-step-backward','fas fa-step-forward','fas fa-stethoscope','fab fa-sticker-mule','fas fa-sticky-note','far fa-sticky-note','fas fa-stop','fas fa-stop-circle','far fa-stop-circle','fas fa-stopwatch','fas fa-stopwatch-20','fas fa-store','fas fa-store-alt','fas fa-store-alt-slash','fas fa-store-slash','fab fa-strava','fas fa-stream','fas fa-street-view','fas fa-strikethrough','fab fa-stripe','fab fa-stripe-s','fas fa-stroopwafel','fab fa-studiovinari','fab fa-stumbleupon','fab fa-stumbleupon-circle','fas fa-subscript','fas fa-subway','fas fa-suitcase','fas fa-suitcase-rolling','fas fa-sun','far fa-sun','fab fa-superpowers','fas fa-superscript','fab fa-supple','fas fa-surprise','far fa-surprise','fab fa-suse','fas fa-swatchbook','fab fa-swift','fas fa-swimmer','fas fa-swimming-pool','fab fa-symfony','fas fa-synagogue','fas fa-sync','fas fa-sync-alt','fas fa-syringe','fas fa-table','fas fa-table-tennis','fas fa-tablet','fas fa-tablet-alt','fas fa-tablets','fas fa-tachometer-alt','fas fa-tag','fas fa-tags','fas fa-tape','fas fa-tasks','fas fa-taxi','fab fa-teamspeak','fas fa-teeth','fas fa-teeth-open','fab fa-telegram','fab fa-telegram-plane','fas fa-temperature-high','fas fa-temperature-low','fab fa-tencent-weibo','fas fa-tenge','fas fa-terminal','fas fa-text-height','fas fa-text-width','fas fa-th','fas fa-th-large','fas fa-th-list','fab fa-the-red-yeti','fas fa-theater-masks','fab fa-themeco','fab fa-themeisle','fas fa-thermometer','fas fa-thermometer-empty','fas fa-thermometer-full','fas fa-thermometer-half','fas fa-thermometer-quarter','fas fa-thermometer-three-quarters','fab fa-think-peaks','fas fa-thumbs-down','far fa-thumbs-down','fas fa-thumbs-up','far fa-thumbs-up','fas fa-thumbtack','fas fa-ticket-alt','fab fa-tiktok','fas fa-times','fas fa-times-circle','far fa-times-circle','fas fa-tint','fas fa-tint-slash','fas fa-tired','far fa-tired','fas fa-toggle-off','fas fa-toggle-on','fas fa-toilet','fas fa-toilet-paper','fas fa-toilet-paper-slash','fas fa-toolbox','fas fa-tools','fas fa-tooth','fas fa-torah','fas fa-torii-gate','fas fa-tractor','fab fa-trade-federation','fas fa-trademark','fas fa-traffic-light','fas fa-trailer','fas fa-train','fas fa-tram','fas fa-transgender','fas fa-transgender-alt','fas fa-trash','fas fa-trash-alt','far fa-trash-alt','fas fa-trash-restore','fas fa-trash-restore-alt','fas fa-tree','fab fa-trello','fab fa-tripadvisor','fas fa-trophy','fas fa-truck','fas fa-truck-loading','fas fa-truck-monster','fas fa-truck-moving','fas fa-truck-pickup','fas fa-tshirt','fas fa-tty','fab fa-tumblr','fab fa-tumblr-square','fas fa-tv','fab fa-twitch','fab fa-twitter','fab fa-twitter-square','fab fa-typo3','fab fa-uber','fab fa-ubuntu','fab fa-uikit','fab fa-umbraco','fas fa-umbrella','fas fa-umbrella-beach','fab fa-uncharted','fas fa-underline','fas fa-undo','fas fa-undo-alt','fab fa-uniregistry','fab fa-unity','fas fa-universal-access','fas fa-university','fas fa-unlink','fas fa-unlock','fas fa-unlock-alt','fab fa-unsplash','fab fa-untappd','fas fa-upload','fab fa-ups','fab fa-usb','fas fa-user','far fa-user','fas fa-user-alt','fas fa-user-alt-slash','fas fa-user-astronaut','fas fa-user-check','fas fa-user-circle','far fa-user-circle','fas fa-user-clock','fas fa-user-cog','fas fa-user-edit','fas fa-user-friends','fas fa-user-graduate','fas fa-user-injured','fas fa-user-lock','fas fa-user-md','fas fa-user-minus','fas fa-user-ninja','fas fa-user-nurse','fas fa-user-plus','fas fa-user-secret','fas fa-user-shield','fas fa-user-slash','fas fa-user-tag','fas fa-user-tie','fas fa-user-times','fas fa-users','fas fa-users-cog','fas fa-users-slash','fab fa-usps','fab fa-ussunnah','fas fa-utensil-spoon','fas fa-utensils','fab fa-vaadin','fas fa-vector-square','fas fa-venus','fas fa-venus-double','fas fa-venus-mars','fas fa-vest','fas fa-vest-patches','fab fa-viacoin','fab fa-viadeo','fab fa-viadeo-square','fas fa-vial','fas fa-vials','fab fa-viber','fas fa-video','fas fa-video-slash','fas fa-vihara','fab fa-vimeo','fab fa-vimeo-square','fab fa-vimeo-v','fab fa-vine','fas fa-virus','fas fa-virus-slash','fas fa-viruses','fab fa-vk','fab fa-vnv','fas fa-voicemail','fas fa-volleyball-ball','fas fa-volume-down','fas fa-volume-mute','fas fa-volume-off','fas fa-volume-up','fas fa-vote-yea','fas fa-vr-cardboard','fab fa-vuejs','fas fa-walking','fas fa-wallet','fas fa-warehouse','fab fa-watchman-monitoring','fas fa-water','fas fa-wave-square','fab fa-waze','fab fa-weebly','fab fa-weibo','fas fa-weight','fas fa-weight-hanging','fab fa-weixin','fab fa-whatsapp','fab fa-whatsapp-square','fas fa-wheelchair','fab fa-whmcs','fas fa-wifi','fab fa-wikipedia-w','fas fa-wind','fas fa-window-close','far fa-window-close','fas fa-window-maximize','far fa-window-maximize','fas fa-window-minimize','far fa-window-minimize','fas fa-window-restore','far fa-window-restore','fab fa-windows','fas fa-wine-bottle','fas fa-wine-glass','fas fa-wine-glass-alt','fab fa-wix','fab fa-wizards-of-the-coast','fab fa-wodu','fab fa-wolf-pack-battalion','fas fa-won-sign','fab fa-wordpress','fab fa-wordpress-simple','fab fa-wpbeginner','fab fa-wpexplorer','fab fa-wpforms','fab fa-wpressr','fas fa-wrench','fas fa-x-ray','fab fa-xbox','fab fa-xing','fab fa-xing-square','fab fa-y-combinator','fab fa-yahoo','fab fa-yammer','fab fa-yandex','fab fa-yandex-international','fab fa-yarn','fab fa-yelp','fas fa-yen-sign','fas fa-yin-yang','fab fa-yoast','fab fa-youtube','fab fa-youtube-square','fab fa-zhihu' )
9
- ) );
 
 
10
  }
2
  //
3
  // Font Awesome 5 Free Icons
4
  //
5
+ if ( ! function_exists( 'ulf_get_default_icons' ) ) {
6
+ function ulf_get_default_icons() {
7
+ return array( array(
8
+ 'title' => 'Font Awesome 5 Free',
9
+ 'icons' => array( 'fab fa-500px','fab fa-accessible-icon','fab fa-accusoft','fab fa-acquisitions-incorporated','fas fa-ad','fas fa-address-book','far fa-address-book','fas fa-address-card','far fa-address-card','fas fa-adjust','fab fa-adn','fab fa-adversal','fab fa-affiliatetheme','fas fa-air-freshener','fab fa-airbnb','fab fa-algolia','fas fa-align-center','fas fa-align-justify','fas fa-align-left','fas fa-align-right','fab fa-alipay','fas fa-allergies','fab fa-amazon','fab fa-amazon-pay','fas fa-ambulance','fas fa-american-sign-language-interpreting','fab fa-amilia','fas fa-anchor','fab fa-android','fab fa-angellist','fas fa-angle-double-down','fas fa-angle-double-left','fas fa-angle-double-right','fas fa-angle-double-up','fas fa-angle-down','fas fa-angle-left','fas fa-angle-right','fas fa-angle-up','fas fa-angry','far fa-angry','fab fa-angrycreative','fab fa-angular','fas fa-ankh','fab fa-app-store','fab fa-app-store-ios','fab fa-apper','fab fa-apple','fas fa-apple-alt','fab fa-apple-pay','fas fa-archive','fas fa-archway','fas fa-arrow-alt-circle-down','far fa-arrow-alt-circle-down','fas fa-arrow-alt-circle-left','far fa-arrow-alt-circle-left','fas fa-arrow-alt-circle-right','far fa-arrow-alt-circle-right','fas fa-arrow-alt-circle-up','far fa-arrow-alt-circle-up','fas fa-arrow-circle-down','fas fa-arrow-circle-left','fas fa-arrow-circle-right','fas fa-arrow-circle-up','fas fa-arrow-down','fas fa-arrow-left','fas fa-arrow-right','fas fa-arrow-up','fas fa-arrows-alt','fas fa-arrows-alt-h','fas fa-arrows-alt-v','fab fa-artstation','fas fa-assistive-listening-systems','fas fa-asterisk','fab fa-asymmetrik','fas fa-at','fas fa-atlas','fab fa-atlassian','fas fa-atom','fab fa-audible','fas fa-audio-description','fab fa-autoprefixer','fab fa-avianex','fab fa-aviato','fas fa-award','fab fa-aws','fas fa-baby','fas fa-baby-carriage','fas fa-backspace','fas fa-backward','fas fa-bacon','fas fa-bacteria','fas fa-bacterium','fas fa-bahai','fas fa-balance-scale','fas fa-balance-scale-left','fas fa-balance-scale-right','fas fa-ban','fas fa-band-aid','fab fa-bandcamp','fas fa-barcode','fas fa-bars','fas fa-baseball-ball','fas fa-basketball-ball','fas fa-bath','fas fa-battery-empty','fas fa-battery-full','fas fa-battery-half','fas fa-battery-quarter','fas fa-battery-three-quarters','fab fa-battle-net','fas fa-bed','fas fa-beer','fab fa-behance','fab fa-behance-square','fas fa-bell','far fa-bell','fas fa-bell-slash','far fa-bell-slash','fas fa-bezier-curve','fas fa-bible','fas fa-bicycle','fas fa-biking','fab fa-bimobject','fas fa-binoculars','fas fa-biohazard','fas fa-birthday-cake','fab fa-bitbucket','fab fa-bitcoin','fab fa-bity','fab fa-black-tie','fab fa-blackberry','fas fa-blender','fas fa-blender-phone','fas fa-blind','fas fa-blog','fab fa-blogger','fab fa-blogger-b','fab fa-bluetooth','fab fa-bluetooth-b','fas fa-bold','fas fa-bolt','fas fa-bomb','fas fa-bone','fas fa-bong','fas fa-book','fas fa-book-dead','fas fa-book-medical','fas fa-book-open','fas fa-book-reader','fas fa-bookmark','far fa-bookmark','fab fa-bootstrap','fas fa-border-all','fas fa-border-none','fas fa-border-style','fas fa-bowling-ball','fas fa-box','fas fa-box-open','fas fa-box-tissue','fas fa-boxes','fas fa-braille','fas fa-brain','fas fa-bread-slice','fas fa-briefcase','fas fa-briefcase-medical','fas fa-broadcast-tower','fas fa-broom','fas fa-brush','fab fa-btc','fab fa-buffer','fas fa-bug','fas fa-building','far fa-building','fas fa-bullhorn','fas fa-bullseye','fas fa-burn','fab fa-buromobelexperte','fas fa-bus','fas fa-bus-alt','fas fa-business-time','fab fa-buy-n-large','fab fa-buysellads','fas fa-calculator','fas fa-calendar','far fa-calendar','fas fa-calendar-alt','far fa-calendar-alt','fas fa-calendar-check','far fa-calendar-check','fas fa-calendar-day','fas fa-calendar-minus','far fa-calendar-minus','fas fa-calendar-plus','far fa-calendar-plus','fas fa-calendar-times','far fa-calendar-times','fas fa-calendar-week','fas fa-camera','fas fa-camera-retro','fas fa-campground','fab fa-canadian-maple-leaf','fas fa-candy-cane','fas fa-cannabis','fas fa-capsules','fas fa-car','fas fa-car-alt','fas fa-car-battery','fas fa-car-crash','fas fa-car-side','fas fa-caravan','fas fa-caret-down','fas fa-caret-left','fas fa-caret-right','fas fa-caret-square-down','far fa-caret-square-down','fas fa-caret-square-left','far fa-caret-square-left','fas fa-caret-square-right','far fa-caret-square-right','fas fa-caret-square-up','far fa-caret-square-up','fas fa-caret-up','fas fa-carrot','fas fa-cart-arrow-down','fas fa-cart-plus','fas fa-cash-register','fas fa-cat','fab fa-cc-amazon-pay','fab fa-cc-amex','fab fa-cc-apple-pay','fab fa-cc-diners-club','fab fa-cc-discover','fab fa-cc-jcb','fab fa-cc-mastercard','fab fa-cc-paypal','fab fa-cc-stripe','fab fa-cc-visa','fab fa-centercode','fab fa-centos','fas fa-certificate','fas fa-chair','fas fa-chalkboard','fas fa-chalkboard-teacher','fas fa-charging-station','fas fa-chart-area','fas fa-chart-bar','far fa-chart-bar','fas fa-chart-line','fas fa-chart-pie','fas fa-check','fas fa-check-circle','far fa-check-circle','fas fa-check-double','fas fa-check-square','far fa-check-square','fas fa-cheese','fas fa-chess','fas fa-chess-bishop','fas fa-chess-board','fas fa-chess-king','fas fa-chess-knight','fas fa-chess-pawn','fas fa-chess-queen','fas fa-chess-rook','fas fa-chevron-circle-down','fas fa-chevron-circle-left','fas fa-chevron-circle-right','fas fa-chevron-circle-up','fas fa-chevron-down','fas fa-chevron-left','fas fa-chevron-right','fas fa-chevron-up','fas fa-child','fab fa-chrome','fab fa-chromecast','fas fa-church','fas fa-circle','far fa-circle','fas fa-circle-notch','fas fa-city','fas fa-clinic-medical','fas fa-clipboard','far fa-clipboard','fas fa-clipboard-check','fas fa-clipboard-list','fas fa-clock','far fa-clock','fas fa-clone','far fa-clone','fas fa-closed-captioning','far fa-closed-captioning','fas fa-cloud','fas fa-cloud-download-alt','fas fa-cloud-meatball','fas fa-cloud-moon','fas fa-cloud-moon-rain','fas fa-cloud-rain','fas fa-cloud-showers-heavy','fas fa-cloud-sun','fas fa-cloud-sun-rain','fas fa-cloud-upload-alt','fab fa-cloudflare','fab fa-cloudscale','fab fa-cloudsmith','fab fa-cloudversify','fas fa-cocktail','fas fa-code','fas fa-code-branch','fab fa-codepen','fab fa-codiepie','fas fa-coffee','fas fa-cog','fas fa-cogs','fas fa-coins','fas fa-columns','fas fa-comment','far fa-comment','fas fa-comment-alt','far fa-comment-alt','fas fa-comment-dollar','fas fa-comment-dots','far fa-comment-dots','fas fa-comment-medical','fas fa-comment-slash','fas fa-comments','far fa-comments','fas fa-comments-dollar','fas fa-compact-disc','fas fa-compass','far fa-compass','fas fa-compress','fas fa-compress-alt','fas fa-compress-arrows-alt','fas fa-concierge-bell','fab fa-confluence','fab fa-connectdevelop','fab fa-contao','fas fa-cookie','fas fa-cookie-bite','fas fa-copy','far fa-copy','fas fa-copyright','far fa-copyright','fab fa-cotton-bureau','fas fa-couch','fab fa-cpanel','fab fa-creative-commons','fab fa-creative-commons-by','fab fa-creative-commons-nc','fab fa-creative-commons-nc-eu','fab fa-creative-commons-nc-jp','fab fa-creative-commons-nd','fab fa-creative-commons-pd','fab fa-creative-commons-pd-alt','fab fa-creative-commons-remix','fab fa-creative-commons-sa','fab fa-creative-commons-sampling','fab fa-creative-commons-sampling-plus','fab fa-creative-commons-share','fab fa-creative-commons-zero','fas fa-credit-card','far fa-credit-card','fab fa-critical-role','fas fa-crop','fas fa-crop-alt','fas fa-cross','fas fa-crosshairs','fas fa-crow','fas fa-crown','fas fa-crutch','fab fa-css3','fab fa-css3-alt','fas fa-cube','fas fa-cubes','fas fa-cut','fab fa-cuttlefish','fab fa-d-and-d','fab fa-d-and-d-beyond','fab fa-dailymotion','fab fa-dashcube','fas fa-database','fas fa-deaf','fab fa-deezer','fab fa-delicious','fas fa-democrat','fab fa-deploydog','fab fa-deskpro','fas fa-desktop','fab fa-dev','fab fa-deviantart','fas fa-dharmachakra','fab fa-dhl','fas fa-diagnoses','fab fa-diaspora','fas fa-dice','fas fa-dice-d20','fas fa-dice-d6','fas fa-dice-five','fas fa-dice-four','fas fa-dice-one','fas fa-dice-six','fas fa-dice-three','fas fa-dice-two','fab fa-digg','fab fa-digital-ocean','fas fa-digital-tachograph','fas fa-directions','fab fa-discord','fab fa-discourse','fas fa-disease','fas fa-divide','fas fa-dizzy','far fa-dizzy','fas fa-dna','fab fa-dochub','fab fa-docker','fas fa-dog','fas fa-dollar-sign','fas fa-dolly','fas fa-dolly-flatbed','fas fa-donate','fas fa-door-closed','fas fa-door-open','fas fa-dot-circle','far fa-dot-circle','fas fa-dove','fas fa-download','fab fa-draft2digital','fas fa-drafting-compass','fas fa-dragon','fas fa-draw-polygon','fab fa-dribbble','fab fa-dribbble-square','fab fa-dropbox','fas fa-drum','fas fa-drum-steelpan','fas fa-drumstick-bite','fab fa-drupal','fas fa-dumbbell','fas fa-dumpster','fas fa-dumpster-fire','fas fa-dungeon','fab fa-dyalog','fab fa-earlybirds','fab fa-ebay','fab fa-edge','fab fa-edge-legacy','fas fa-edit','far fa-edit','fas fa-egg','fas fa-eject','fab fa-elementor','fas fa-ellipsis-h','fas fa-ellipsis-v','fab fa-ello','fab fa-ember','fab fa-empire','fas fa-envelope','far fa-envelope','fas fa-envelope-open','far fa-envelope-open','fas fa-envelope-open-text','fas fa-envelope-square','fab fa-envira','fas fa-equals','fas fa-eraser','fab fa-erlang','fab fa-ethereum','fas fa-ethernet','fab fa-etsy','fas fa-euro-sign','fab fa-evernote','fas fa-exchange-alt','fas fa-exclamation','fas fa-exclamation-circle','fas fa-exclamation-triangle','fas fa-expand','fas fa-expand-alt','fas fa-expand-arrows-alt','fab fa-expeditedssl','fas fa-external-link-alt','fas fa-external-link-square-alt','fas fa-eye','far fa-eye','fas fa-eye-dropper','fas fa-eye-slash','far fa-eye-slash','fab fa-facebook','fab fa-facebook-f','fab fa-facebook-messenger','fab fa-facebook-square','fas fa-fan','fab fa-fantasy-flight-games','fas fa-fast-backward','fas fa-fast-forward','fas fa-faucet','fas fa-fax','fas fa-feather','fas fa-feather-alt','fab fa-fedex','fab fa-fedora','fas fa-female','fas fa-fighter-jet','fab fa-figma','fas fa-file','far fa-file','fas fa-file-alt','far fa-file-alt','fas fa-file-archive','far fa-file-archive','fas fa-file-audio','far fa-file-audio','fas fa-file-code','far fa-file-code','fas fa-file-contract','fas fa-file-csv','fas fa-file-download','fas fa-file-excel','far fa-file-excel','fas fa-file-export','fas fa-file-image','far fa-file-image','fas fa-file-import','fas fa-file-invoice','fas fa-file-invoice-dollar','fas fa-file-medical','fas fa-file-medical-alt','fas fa-file-pdf','far fa-file-pdf','fas fa-file-powerpoint','far fa-file-powerpoint','fas fa-file-prescription','fas fa-file-signature','fas fa-file-upload','fas fa-file-video','far fa-file-video','fas fa-file-word','far fa-file-word','fas fa-fill','fas fa-fill-drip','fas fa-film','fas fa-filter','fas fa-fingerprint','fas fa-fire','fas fa-fire-alt','fas fa-fire-extinguisher','fab fa-firefox','fab fa-firefox-browser','fas fa-first-aid','fab fa-first-order','fab fa-first-order-alt','fab fa-firstdraft','fas fa-fish','fas fa-fist-raised','fas fa-flag','far fa-flag','fas fa-flag-checkered','fas fa-flag-usa','fas fa-flask','fab fa-flickr','fab fa-flipboard','fas fa-flushed','far fa-flushed','fab fa-fly','fas fa-folder','far fa-folder','fas fa-folder-minus','fas fa-folder-open','far fa-folder-open','fas fa-folder-plus','fas fa-font','fab fa-font-awesome','fab fa-font-awesome-alt','fab fa-font-awesome-flag','far fa-font-awesome-logo-full','fas fa-font-awesome-logo-full','fab fa-font-awesome-logo-full','fab fa-fonticons','fab fa-fonticons-fi','fas fa-football-ball','fab fa-fort-awesome','fab fa-fort-awesome-alt','fab fa-forumbee','fas fa-forward','fab fa-foursquare','fab fa-free-code-camp','fab fa-freebsd','fas fa-frog','fas fa-frown','far fa-frown','fas fa-frown-open','far fa-frown-open','fab fa-fulcrum','fas fa-funnel-dollar','fas fa-futbol','far fa-futbol','fab fa-galactic-republic','fab fa-galactic-senate','fas fa-gamepad','fas fa-gas-pump','fas fa-gavel','fas fa-gem','far fa-gem','fas fa-genderless','fab fa-get-pocket','fab fa-gg','fab fa-gg-circle','fas fa-ghost','fas fa-gift','fas fa-gifts','fab fa-git','fab fa-git-alt','fab fa-git-square','fab fa-github','fab fa-github-alt','fab fa-github-square','fab fa-gitkraken','fab fa-gitlab','fab fa-gitter','fas fa-glass-cheers','fas fa-glass-martini','fas fa-glass-martini-alt','fas fa-glass-whiskey','fas fa-glasses','fab fa-glide','fab fa-glide-g','fas fa-globe','fas fa-globe-africa','fas fa-globe-americas','fas fa-globe-asia','fas fa-globe-europe','fab fa-gofore','fas fa-golf-ball','fab fa-goodreads','fab fa-goodreads-g','fab fa-google','fab fa-google-drive','fab fa-google-pay','fab fa-google-play','fab fa-google-plus','fab fa-google-plus-g','fab fa-google-plus-square','fab fa-google-wallet','fas fa-gopuram','fas fa-graduation-cap','fab fa-gratipay','fab fa-grav','fas fa-greater-than','fas fa-greater-than-equal','fas fa-grimace','far fa-grimace','fas fa-grin','far fa-grin','fas fa-grin-alt','far fa-grin-alt','fas fa-grin-beam','far fa-grin-beam','fas fa-grin-beam-sweat','far fa-grin-beam-sweat','fas fa-grin-hearts','far fa-grin-hearts','fas fa-grin-squint','far fa-grin-squint','fas fa-grin-squint-tears','far fa-grin-squint-tears','fas fa-grin-stars','far fa-grin-stars','fas fa-grin-tears','far fa-grin-tears','fas fa-grin-tongue','far fa-grin-tongue','fas fa-grin-tongue-squint','far fa-grin-tongue-squint','fas fa-grin-tongue-wink','far fa-grin-tongue-wink','fas fa-grin-wink','far fa-grin-wink','fas fa-grip-horizontal','fas fa-grip-lines','fas fa-grip-lines-vertical','fas fa-grip-vertical','fab fa-gripfire','fab fa-grunt','fab fa-guilded','fas fa-guitar','fab fa-gulp','fas fa-h-square','fab fa-hacker-news','fab fa-hacker-news-square','fab fa-hackerrank','fas fa-hamburger','fas fa-hammer','fas fa-hamsa','fas fa-hand-holding','fas fa-hand-holding-heart','fas fa-hand-holding-medical','fas fa-hand-holding-usd','fas fa-hand-holding-water','fas fa-hand-lizard','far fa-hand-lizard','fas fa-hand-middle-finger','fas fa-hand-paper','far fa-hand-paper','fas fa-hand-peace','far fa-hand-peace','fas fa-hand-point-down','far fa-hand-point-down','fas fa-hand-point-left','far fa-hand-point-left','fas fa-hand-point-right','far fa-hand-point-right','fas fa-hand-point-up','far fa-hand-point-up','fas fa-hand-pointer','far fa-hand-pointer','fas fa-hand-rock','far fa-hand-rock','fas fa-hand-scissors','far fa-hand-scissors','fas fa-hand-sparkles','fas fa-hand-spock','far fa-hand-spock','fas fa-hands','fas fa-hands-helping','fas fa-hands-wash','fas fa-handshake','far fa-handshake','fas fa-handshake-alt-slash','fas fa-handshake-slash','fas fa-hanukiah','fas fa-hard-hat','fas fa-hashtag','fas fa-hat-cowboy','fas fa-hat-cowboy-side','fas fa-hat-wizard','fas fa-hdd','far fa-hdd','fas fa-head-side-cough','fas fa-head-side-cough-slash','fas fa-head-side-mask','fas fa-head-side-virus','fas fa-heading','fas fa-headphones','fas fa-headphones-alt','fas fa-headset','fas fa-heart','far fa-heart','fas fa-heart-broken','fas fa-heartbeat','fas fa-helicopter','fas fa-highlighter','fas fa-hiking','fas fa-hippo','fab fa-hips','fab fa-hire-a-helper','fas fa-history','fab fa-hive','fas fa-hockey-puck','fas fa-holly-berry','fas fa-home','fab fa-hooli','fab fa-hornbill','fas fa-horse','fas fa-horse-head','fas fa-hospital','far fa-hospital','fas fa-hospital-alt','fas fa-hospital-symbol','fas fa-hospital-user','fas fa-hot-tub','fas fa-hotdog','fas fa-hotel','fab fa-hotjar','fas fa-hourglass','far fa-hourglass','fas fa-hourglass-end','fas fa-hourglass-half','fas fa-hourglass-start','fas fa-house-damage','fas fa-house-user','fab fa-houzz','fas fa-hryvnia','fab fa-html5','fab fa-hubspot','fas fa-i-cursor','fas fa-ice-cream','fas fa-icicles','fas fa-icons','fas fa-id-badge','far fa-id-badge','fas fa-id-card','far fa-id-card','fas fa-id-card-alt','fab fa-ideal','fas fa-igloo','fas fa-image','far fa-image','fas fa-images','far fa-images','fab fa-imdb','fas fa-inbox','fas fa-indent','fas fa-industry','fas fa-infinity','fas fa-info','fas fa-info-circle','fab fa-innosoft','fab fa-instagram','fab fa-instagram-square','fab fa-instalod','fab fa-intercom','fab fa-internet-explorer','fab fa-invision','fab fa-ioxhost','fas fa-italic','fab fa-itch-io','fab fa-itunes','fab fa-itunes-note','fab fa-java','fas fa-jedi','fab fa-jedi-order','fab fa-jenkins','fab fa-jira','fab fa-joget','fas fa-joint','fab fa-joomla','fas fa-journal-whills','fab fa-js','fab fa-js-square','fab fa-jsfiddle','fas fa-kaaba','fab fa-kaggle','fas fa-key','fab fa-keybase','fas fa-keyboard','far fa-keyboard','fab fa-keycdn','fas fa-khanda','fab fa-kickstarter','fab fa-kickstarter-k','fas fa-kiss','far fa-kiss','fas fa-kiss-beam','far fa-kiss-beam','fas fa-kiss-wink-heart','far fa-kiss-wink-heart','fas fa-kiwi-bird','fab fa-korvue','fas fa-landmark','fas fa-language','fas fa-laptop','fas fa-laptop-code','fas fa-laptop-house','fas fa-laptop-medical','fab fa-laravel','fab fa-lastfm','fab fa-lastfm-square','fas fa-laugh','far fa-laugh','fas fa-laugh-beam','far fa-laugh-beam','fas fa-laugh-squint','far fa-laugh-squint','fas fa-laugh-wink','far fa-laugh-wink','fas fa-layer-group','fas fa-leaf','fab fa-leanpub','fas fa-lemon','far fa-lemon','fab fa-less','fas fa-less-than','fas fa-less-than-equal','fas fa-level-down-alt','fas fa-level-up-alt','fas fa-life-ring','far fa-life-ring','fas fa-lightbulb','far fa-lightbulb','fab fa-line','fas fa-link','fab fa-linkedin','fab fa-linkedin-in','fab fa-linode','fab fa-linux','fas fa-lira-sign','fas fa-list','fas fa-list-alt','far fa-list-alt','fas fa-list-ol','fas fa-list-ul','fas fa-location-arrow','fas fa-lock','fas fa-lock-open','fas fa-long-arrow-alt-down','fas fa-long-arrow-alt-left','fas fa-long-arrow-alt-right','fas fa-long-arrow-alt-up','fas fa-low-vision','fas fa-luggage-cart','fas fa-lungs','fas fa-lungs-virus','fab fa-lyft','fab fa-magento','fas fa-magic','fas fa-magnet','fas fa-mail-bulk','fab fa-mailchimp','fas fa-male','fab fa-mandalorian','fas fa-map','far fa-map','fas fa-map-marked','fas fa-map-marked-alt','fas fa-map-marker','fas fa-map-marker-alt','fas fa-map-pin','fas fa-map-signs','fab fa-markdown','fas fa-marker','fas fa-mars','fas fa-mars-double','fas fa-mars-stroke','fas fa-mars-stroke-h','fas fa-mars-stroke-v','fas fa-mask','fab fa-mastodon','fab fa-maxcdn','fab fa-mdb','fas fa-medal','fab fa-medapps','fab fa-medium','fab fa-medium-m','fas fa-medkit','fab fa-medrt','fab fa-meetup','fab fa-megaport','fas fa-meh','far fa-meh','fas fa-meh-blank','far fa-meh-blank','fas fa-meh-rolling-eyes','far fa-meh-rolling-eyes','fas fa-memory','fab fa-mendeley','fas fa-menorah','fas fa-mercury','fas fa-meteor','fab fa-microblog','fas fa-microchip','fas fa-microphone','fas fa-microphone-alt','fas fa-microphone-alt-slash','fas fa-microphone-slash','fas fa-microscope','fab fa-microsoft','fas fa-minus','fas fa-minus-circle','fas fa-minus-square','far fa-minus-square','fas fa-mitten','fab fa-mix','fab fa-mixcloud','fab fa-mixer','fab fa-mizuni','fas fa-mobile','fas fa-mobile-alt','fab fa-modx','fab fa-monero','fas fa-money-bill','fas fa-money-bill-alt','far fa-money-bill-alt','fas fa-money-bill-wave','fas fa-money-bill-wave-alt','fas fa-money-check','fas fa-money-check-alt','fas fa-monument','fas fa-moon','far fa-moon','fas fa-mortar-pestle','fas fa-mosque','fas fa-motorcycle','fas fa-mountain','fas fa-mouse','fas fa-mouse-pointer','fas fa-mug-hot','fas fa-music','fab fa-napster','fab fa-neos','fas fa-network-wired','fas fa-neuter','fas fa-newspaper','far fa-newspaper','fab fa-nimblr','fab fa-node','fab fa-node-js','fas fa-not-equal','fas fa-notes-medical','fab fa-npm','fab fa-ns8','fab fa-nutritionix','fas fa-object-group','far fa-object-group','fas fa-object-ungroup','far fa-object-ungroup','fab fa-octopus-deploy','fab fa-odnoklassniki','fab fa-odnoklassniki-square','fas fa-oil-can','fab fa-old-republic','fas fa-om','fab fa-opencart','fab fa-openid','fab fa-opera','fab fa-optin-monster','fab fa-orcid','fab fa-osi','fas fa-otter','fas fa-outdent','fab fa-page4','fab fa-pagelines','fas fa-pager','fas fa-paint-brush','fas fa-paint-roller','fas fa-palette','fab fa-palfed','fas fa-pallet','fas fa-paper-plane','far fa-paper-plane','fas fa-paperclip','fas fa-parachute-box','fas fa-paragraph','fas fa-parking','fas fa-passport','fas fa-pastafarianism','fas fa-paste','fab fa-patreon','fas fa-pause','fas fa-pause-circle','far fa-pause-circle','fas fa-paw','fab fa-paypal','fas fa-peace','fas fa-pen','fas fa-pen-alt','fas fa-pen-fancy','fas fa-pen-nib','fas fa-pen-square','fas fa-pencil-alt','fas fa-pencil-ruler','fab fa-penny-arcade','fas fa-people-arrows','fas fa-people-carry','fas fa-pepper-hot','fab fa-perbyte','fas fa-percent','fas fa-percentage','fab fa-periscope','fas fa-person-booth','fab fa-phabricator','fab fa-phoenix-framework','fab fa-phoenix-squadron','fas fa-phone','fas fa-phone-alt','fas fa-phone-slash','fas fa-phone-square','fas fa-phone-square-alt','fas fa-phone-volume','fas fa-photo-video','fab fa-php','fab fa-pied-piper','fab fa-pied-piper-alt','fab fa-pied-piper-hat','fab fa-pied-piper-pp','fab fa-pied-piper-square','fas fa-piggy-bank','fas fa-pills','fab fa-pinterest','fab fa-pinterest-p','fab fa-pinterest-square','fas fa-pizza-slice','fas fa-place-of-worship','fas fa-plane','fas fa-plane-arrival','fas fa-plane-departure','fas fa-plane-slash','fas fa-play','fas fa-play-circle','far fa-play-circle','fab fa-playstation','fas fa-plug','fas fa-plus','fas fa-plus-circle','fas fa-plus-square','far fa-plus-square','fas fa-podcast','fas fa-poll','fas fa-poll-h','fas fa-poo','fas fa-poo-storm','fas fa-poop','fas fa-portrait','fas fa-pound-sign','fas fa-power-off','fas fa-pray','fas fa-praying-hands','fas fa-prescription','fas fa-prescription-bottle','fas fa-prescription-bottle-alt','fas fa-print','fas fa-procedures','fab fa-product-hunt','fas fa-project-diagram','fas fa-pump-medical','fas fa-pump-soap','fab fa-pushed','fas fa-puzzle-piece','fab fa-python','fab fa-qq','fas fa-qrcode','fas fa-question','fas fa-question-circle','far fa-question-circle','fas fa-quidditch','fab fa-quinscape','fab fa-quora','fas fa-quote-left','fas fa-quote-right','fas fa-quran','fab fa-r-project','fas fa-radiation','fas fa-radiation-alt','fas fa-rainbow','fas fa-random','fab fa-raspberry-pi','fab fa-ravelry','fab fa-react','fab fa-reacteurope','fab fa-readme','fab fa-rebel','fas fa-receipt','fas fa-record-vinyl','fas fa-recycle','fab fa-red-river','fab fa-reddit','fab fa-reddit-alien','fab fa-reddit-square','fab fa-redhat','fas fa-redo','fas fa-redo-alt','fas fa-registered','far fa-registered','fas fa-remove-format','fab fa-renren','fas fa-reply','fas fa-reply-all','fab fa-replyd','fas fa-republican','fab fa-researchgate','fab fa-resolving','fas fa-restroom','fas fa-retweet','fab fa-rev','fas fa-ribbon','fas fa-ring','fas fa-road','fas fa-robot','fas fa-rocket','fab fa-rocketchat','fab fa-rockrms','fas fa-route','fas fa-rss','fas fa-rss-square','fas fa-ruble-sign','fas fa-ruler','fas fa-ruler-combined','fas fa-ruler-horizontal','fas fa-ruler-vertical','fas fa-running','fas fa-rupee-sign','fab fa-rust','fas fa-sad-cry','far fa-sad-cry','fas fa-sad-tear','far fa-sad-tear','fab fa-safari','fab fa-salesforce','fab fa-sass','fas fa-satellite','fas fa-satellite-dish','fas fa-save','far fa-save','fab fa-schlix','fas fa-school','fas fa-screwdriver','fab fa-scribd','fas fa-scroll','fas fa-sd-card','fas fa-search','fas fa-search-dollar','fas fa-search-location','fas fa-search-minus','fas fa-search-plus','fab fa-searchengin','fas fa-seedling','fab fa-sellcast','fab fa-sellsy','fas fa-server','fab fa-servicestack','fas fa-shapes','fas fa-share','fas fa-share-alt','fas fa-share-alt-square','fas fa-share-square','far fa-share-square','fas fa-shekel-sign','fas fa-shield-alt','fas fa-shield-virus','fas fa-ship','fas fa-shipping-fast','fab fa-shirtsinbulk','fas fa-shoe-prints','fab fa-shopify','fas fa-shopping-bag','fas fa-shopping-basket','fas fa-shopping-cart','fab fa-shopware','fas fa-shower','fas fa-shuttle-van','fas fa-sign','fas fa-sign-in-alt','fas fa-sign-language','fas fa-sign-out-alt','fas fa-signal','fas fa-signature','fas fa-sim-card','fab fa-simplybuilt','fas fa-sink','fab fa-sistrix','fas fa-sitemap','fab fa-sith','fas fa-skating','fab fa-sketch','fas fa-skiing','fas fa-skiing-nordic','fas fa-skull','fas fa-skull-crossbones','fab fa-skyatlas','fab fa-skype','fab fa-slack','fab fa-slack-hash','fas fa-slash','fas fa-sleigh','fas fa-sliders-h','fab fa-slideshare','fas fa-smile','far fa-smile','fas fa-smile-beam','far fa-smile-beam','fas fa-smile-wink','far fa-smile-wink','fas fa-smog','fas fa-smoking','fas fa-smoking-ban','fas fa-sms','fab fa-snapchat','fab fa-snapchat-ghost','fab fa-snapchat-square','fas fa-snowboarding','fas fa-snowflake','far fa-snowflake','fas fa-snowman','fas fa-snowplow','fas fa-soap','fas fa-socks','fas fa-solar-panel','fas fa-sort','fas fa-sort-alpha-down','fas fa-sort-alpha-down-alt','fas fa-sort-alpha-up','fas fa-sort-alpha-up-alt','fas fa-sort-amount-down','fas fa-sort-amount-down-alt','fas fa-sort-amount-up','fas fa-sort-amount-up-alt','fas fa-sort-down','fas fa-sort-numeric-down','fas fa-sort-numeric-down-alt','fas fa-sort-numeric-up','fas fa-sort-numeric-up-alt','fas fa-sort-up','fab fa-soundcloud','fab fa-sourcetree','fas fa-spa','fas fa-space-shuttle','fab fa-speakap','fab fa-speaker-deck','fas fa-spell-check','fas fa-spider','fas fa-spinner','fas fa-splotch','fab fa-spotify','fas fa-spray-can','fas fa-square','far fa-square','fas fa-square-full','fas fa-square-root-alt','fab fa-squarespace','fab fa-stack-exchange','fab fa-stack-overflow','fab fa-stackpath','fas fa-stamp','fas fa-star','far fa-star','fas fa-star-and-crescent','fas fa-star-half','far fa-star-half','fas fa-star-half-alt','fas fa-star-of-david','fas fa-star-of-life','fab fa-staylinked','fab fa-steam','fab fa-steam-square','fab fa-steam-symbol','fas fa-step-backward','fas fa-step-forward','fas fa-stethoscope','fab fa-sticker-mule','fas fa-sticky-note','far fa-sticky-note','fas fa-stop','fas fa-stop-circle','far fa-stop-circle','fas fa-stopwatch','fas fa-stopwatch-20','fas fa-store','fas fa-store-alt','fas fa-store-alt-slash','fas fa-store-slash','fab fa-strava','fas fa-stream','fas fa-street-view','fas fa-strikethrough','fab fa-stripe','fab fa-stripe-s','fas fa-stroopwafel','fab fa-studiovinari','fab fa-stumbleupon','fab fa-stumbleupon-circle','fas fa-subscript','fas fa-subway','fas fa-suitcase','fas fa-suitcase-rolling','fas fa-sun','far fa-sun','fab fa-superpowers','fas fa-superscript','fab fa-supple','fas fa-surprise','far fa-surprise','fab fa-suse','fas fa-swatchbook','fab fa-swift','fas fa-swimmer','fas fa-swimming-pool','fab fa-symfony','fas fa-synagogue','fas fa-sync','fas fa-sync-alt','fas fa-syringe','fas fa-table','fas fa-table-tennis','fas fa-tablet','fas fa-tablet-alt','fas fa-tablets','fas fa-tachometer-alt','fas fa-tag','fas fa-tags','fas fa-tape','fas fa-tasks','fas fa-taxi','fab fa-teamspeak','fas fa-teeth','fas fa-teeth-open','fab fa-telegram','fab fa-telegram-plane','fas fa-temperature-high','fas fa-temperature-low','fab fa-tencent-weibo','fas fa-tenge','fas fa-terminal','fas fa-text-height','fas fa-text-width','fas fa-th','fas fa-th-large','fas fa-th-list','fab fa-the-red-yeti','fas fa-theater-masks','fab fa-themeco','fab fa-themeisle','fas fa-thermometer','fas fa-thermometer-empty','fas fa-thermometer-full','fas fa-thermometer-half','fas fa-thermometer-quarter','fas fa-thermometer-three-quarters','fab fa-think-peaks','fas fa-thumbs-down','far fa-thumbs-down','fas fa-thumbs-up','far fa-thumbs-up','fas fa-thumbtack','fas fa-ticket-alt','fab fa-tiktok','fas fa-times','fas fa-times-circle','far fa-times-circle','fas fa-tint','fas fa-tint-slash','fas fa-tired','far fa-tired','fas fa-toggle-off','fas fa-toggle-on','fas fa-toilet','fas fa-toilet-paper','fas fa-toilet-paper-slash','fas fa-toolbox','fas fa-tools','fas fa-tooth','fas fa-torah','fas fa-torii-gate','fas fa-tractor','fab fa-trade-federation','fas fa-trademark','fas fa-traffic-light','fas fa-trailer','fas fa-train','fas fa-tram','fas fa-transgender','fas fa-transgender-alt','fas fa-trash','fas fa-trash-alt','far fa-trash-alt','fas fa-trash-restore','fas fa-trash-restore-alt','fas fa-tree','fab fa-trello','fab fa-tripadvisor','fas fa-trophy','fas fa-truck','fas fa-truck-loading','fas fa-truck-monster','fas fa-truck-moving','fas fa-truck-pickup','fas fa-tshirt','fas fa-tty','fab fa-tumblr','fab fa-tumblr-square','fas fa-tv','fab fa-twitch','fab fa-twitter','fab fa-twitter-square','fab fa-typo3','fab fa-uber','fab fa-ubuntu','fab fa-uikit','fab fa-umbraco','fas fa-umbrella','fas fa-umbrella-beach','fab fa-uncharted','fas fa-underline','fas fa-undo','fas fa-undo-alt','fab fa-uniregistry','fab fa-unity','fas fa-universal-access','fas fa-university','fas fa-unlink','fas fa-unlock','fas fa-unlock-alt','fab fa-unsplash','fab fa-untappd','fas fa-upload','fab fa-ups','fab fa-usb','fas fa-user','far fa-user','fas fa-user-alt','fas fa-user-alt-slash','fas fa-user-astronaut','fas fa-user-check','fas fa-user-circle','far fa-user-circle','fas fa-user-clock','fas fa-user-cog','fas fa-user-edit','fas fa-user-friends','fas fa-user-graduate','fas fa-user-injured','fas fa-user-lock','fas fa-user-md','fas fa-user-minus','fas fa-user-ninja','fas fa-user-nurse','fas fa-user-plus','fas fa-user-secret','fas fa-user-shield','fas fa-user-slash','fas fa-user-tag','fas fa-user-tie','fas fa-user-times','fas fa-users','fas fa-users-cog','fas fa-users-slash','fab fa-usps','fab fa-ussunnah','fas fa-utensil-spoon','fas fa-utensils','fab fa-vaadin','fas fa-vector-square','fas fa-venus','fas fa-venus-double','fas fa-venus-mars','fas fa-vest','fas fa-vest-patches','fab fa-viacoin','fab fa-viadeo','fab fa-viadeo-square','fas fa-vial','fas fa-vials','fab fa-viber','fas fa-video','fas fa-video-slash','fas fa-vihara','fab fa-vimeo','fab fa-vimeo-square','fab fa-vimeo-v','fab fa-vine','fas fa-virus','fas fa-virus-slash','fas fa-viruses','fab fa-vk','fab fa-vnv','fas fa-voicemail','fas fa-volleyball-ball','fas fa-volume-down','fas fa-volume-mute','fas fa-volume-off','fas fa-volume-up','fas fa-vote-yea','fas fa-vr-cardboard','fab fa-vuejs','fas fa-walking','fas fa-wallet','fas fa-warehouse','fab fa-watchman-monitoring','fas fa-water','fas fa-wave-square','fab fa-waze','fab fa-weebly','fab fa-weibo','fas fa-weight','fas fa-weight-hanging','fab fa-weixin','fab fa-whatsapp','fab fa-whatsapp-square','fas fa-wheelchair','fab fa-whmcs','fas fa-wifi','fab fa-wikipedia-w','fas fa-wind','fas fa-window-close','far fa-window-close','fas fa-window-maximize','far fa-window-maximize','fas fa-window-minimize','far fa-window-minimize','fas fa-window-restore','far fa-window-restore','fab fa-windows','fas fa-wine-bottle','fas fa-wine-glass','fas fa-wine-glass-alt','fab fa-wix','fab fa-wizards-of-the-coast','fab fa-wodu','fab fa-wolf-pack-battalion','fas fa-won-sign','fab fa-wordpress','fab fa-wordpress-simple','fab fa-wpbeginner','fab fa-wpexplorer','fab fa-wpforms','fab fa-wpressr','fas fa-wrench','fas fa-x-ray','fab fa-xbox','fab fa-xing','fab fa-xing-square','fab fa-y-combinator','fab fa-yahoo','fab fa-yammer','fab fa-yandex','fab fa-yandex-international','fab fa-yarn','fab fa-yelp','fas fa-yen-sign','fas fa-yin-yang','fab fa-yoast','fab fa-youtube','fab fa-youtube-square','fab fa-zhihu' )
10
+ ) );
11
+ }
12
  }
admin/settings/fields/typography/google-fonts.php CHANGED
@@ -13,13 +13,15 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
13
  'Adamina'=>[['normal'],['latin']],
14
  'Advent Pro'=>[['100','200','300','normal','500','600','700'],['greek','latin','latin-ext']],
15
  'Aguafina Script'=>[['normal'],['latin','latin-ext']],
 
 
16
  'Akronim'=>[['normal'],['latin','latin-ext']],
17
  'Aladin'=>[['normal'],['latin','latin-ext']],
18
  'Alata'=>[['normal'],['latin','latin-ext','vietnamese']],
19
  'Alatsi'=>[['normal'],['latin','latin-ext','vietnamese']],
20
  'Aldrich'=>[['normal'],['latin']],
21
  'Alef'=>[['normal','700'],['hebrew','latin']],
22
- 'Alegreya'=>[['normal','italic','500','500italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']],
23
  'Alegreya SC'=>[['normal','italic','500','500italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']],
24
  'Alegreya Sans'=>[['100','100italic','300','300italic','normal','italic','500','500italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']],
25
  'Alegreya Sans SC'=>[['100','100italic','300','300italic','normal','italic','500','500italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']],
@@ -47,6 +49,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
47
  'Anaheim'=>[['normal'],['latin','latin-ext']],
48
  'Andada'=>[['normal'],['latin','latin-ext']],
49
  'Andika'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']],
 
50
  'Angkor'=>[['normal'],['khmer']],
51
  'Annie Use Your Telescope'=>[['normal'],['latin']],
52
  'Anonymous Pro'=>[['normal','italic','700','700italic'],['cyrillic','greek','latin','latin-ext']],
@@ -61,9 +64,9 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
61
  'Archivo'=>[['normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','vietnamese']],
62
  'Archivo Black'=>[['normal'],['latin','latin-ext']],
63
  'Archivo Narrow'=>[['normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','vietnamese']],
64
- 'Aref Ruqaa'=>[['normal','700'],['arabic','latin']],
65
  'Arima Madurai'=>[['100','200','300','normal','500','700','800','900'],['latin','latin-ext','tamil','vietnamese']],
66
- 'Arimo'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','greek','greek-ext','hebrew','latin','latin-ext','vietnamese']],
67
  'Arizonia'=>[['normal'],['latin','latin-ext']],
68
  'Armata'=>[['normal'],['latin','latin-ext']],
69
  'Arsenal'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']],
@@ -95,6 +98,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
95
  'Bahiana'=>[['normal'],['latin','latin-ext']],
96
  'Bahianita'=>[['normal'],['latin','latin-ext','vietnamese']],
97
  'Bai Jamjuree'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','thai','vietnamese']],
 
98
  'Baloo 2'=>[['normal','500','600','700','800'],['devanagari','latin','latin-ext','vietnamese']],
99
  'Baloo Bhai 2'=>[['normal','500','600','700','800'],['gujarati','latin','latin-ext','vietnamese']],
100
  'Baloo Bhaina 2'=>[['normal','500','600','700','800'],['latin','latin-ext','oriya','vietnamese']],
@@ -125,11 +129,16 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
125
  'Bellota'=>[['300','300italic','normal','italic','700','700italic'],['cyrillic','latin','latin-ext','vietnamese']],
126
  'Bellota Text'=>[['300','300italic','normal','italic','700','700italic'],['cyrillic','latin','latin-ext','vietnamese']],
127
  'BenchNine'=>[['300','normal','700'],['latin','latin-ext']],
 
128
  'Bentham'=>[['normal'],['latin']],
129
  'Berkshire Swash'=>[['normal'],['latin','latin-ext']],
130
  'Beth Ellen'=>[['normal'],['latin']],
131
  'Bevan'=>[['normal'],['latin','latin-ext','vietnamese']],
132
  'Big Shoulders Display'=>[['100','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
 
 
 
 
133
  'Big Shoulders Text'=>[['100','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
134
  'Bigelow Rules'=>[['normal'],['latin','latin-ext']],
135
  'Bigshot One'=>[['normal'],['latin']],
@@ -143,6 +152,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
143
  'Black Han Sans'=>[['normal'],['korean','latin']],
144
  'Black Ops One'=>[['normal'],['latin','latin-ext']],
145
  'Blinker'=>[['100','200','300','normal','600','700','800','900'],['latin','latin-ext']],
 
146
  'Bokor'=>[['normal'],['khmer']],
147
  'Bonbon'=>[['normal'],['latin']],
148
  'Boogaloo'=>[['normal'],['latin']],
@@ -150,6 +160,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
150
  'Bowlby One SC'=>[['normal'],['latin','latin-ext']],
151
  'Brawler'=>[['normal'],['latin']],
152
  'Bree Serif'=>[['normal'],['latin','latin-ext']],
 
153
  'Bubblegum Sans'=>[['normal'],['latin','latin-ext']],
154
  'Bubbler One'=>[['normal'],['latin','latin-ext']],
155
  'Buda'=>[['300'],['latin']],
@@ -182,9 +193,10 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
182
  'Carrois Gothic'=>[['normal'],['latin']],
183
  'Carrois Gothic SC'=>[['normal'],['latin']],
184
  'Carter One'=>[['normal'],['latin']],
 
185
  'Catamaran'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','tamil']],
186
  'Caudex'=>[['normal','italic','700','700italic'],['greek','greek-ext','latin','latin-ext']],
187
- 'Caveat'=>[['normal','700'],['cyrillic','cyrillic-ext','latin','latin-ext']],
188
  'Caveat Brush'=>[['normal'],['latin','latin-ext']],
189
  'Cedarville Cursive'=>[['normal'],['latin']],
190
  'Ceviche One'=>[['normal'],['latin','latin-ext']],
@@ -277,6 +289,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
277
  'Doppio One'=>[['normal'],['latin','latin-ext']],
278
  'Dorsa'=>[['normal'],['latin']],
279
  'Dosis'=>[['200','300','normal','500','600','700','800'],['latin','latin-ext','vietnamese']],
 
280
  'Dr Sugiyama'=>[['normal'],['latin','latin-ext']],
281
  'Duru Sans'=>[['normal'],['latin','latin-ext']],
282
  'Dynalight'=>[['normal'],['latin','latin-ext']],
@@ -337,6 +350,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
337
  'Forum'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext']],
338
  'Francois One'=>[['normal'],['latin','latin-ext','vietnamese']],
339
  'Frank Ruhl Libre'=>[['300','normal','500','700','900'],['hebrew','latin','latin-ext']],
 
340
  'Freckle Face'=>[['normal'],['latin','latin-ext']],
341
  'Fredericka the Great'=>[['normal'],['latin','latin-ext']],
342
  'Fredoka One'=>[['normal'],['latin']],
@@ -371,6 +385,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
371
  'Gloria Hallelujah'=>[['normal'],['latin']],
372
  'Goblin One'=>[['normal'],['latin']],
373
  'Gochi Hand'=>[['normal'],['latin']],
 
374
  'Gorditas'=>[['normal','700'],['latin']],
375
  'Gothic A1'=>[['100','200','300','normal','500','600','700','800','900'],['korean','latin']],
376
  'Gotu'=>[['normal'],['devanagari','latin','latin-ext','vietnamese']],
@@ -389,6 +404,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
389
  'Gupter'=>[['normal','500','700'],['latin']],
390
  'Gurajada'=>[['normal'],['latin','telugu']],
391
  'Habibi'=>[['normal'],['latin','latin-ext']],
 
392
  'Halant'=>[['300','normal','500','600','700'],['devanagari','latin','latin-ext']],
393
  'Hammersmith One'=>[['normal'],['latin','latin-ext']],
394
  'Hanalei'=>[['normal'],['latin','latin-ext']],
@@ -425,9 +441,10 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
425
  'IM Fell French Canon SC'=>[['normal'],['latin']],
426
  'IM Fell Great Primer'=>[['normal','italic'],['latin']],
427
  'IM Fell Great Primer SC'=>[['normal'],['latin']],
428
- 'Ibarra Real Nova'=>[['normal','italic','600','600italic','700','700italic'],['latin','latin-ext']],
429
  'Iceberg'=>[['normal'],['latin']],
430
  'Iceland'=>[['normal'],['latin']],
 
431
  'Imprima'=>[['normal'],['latin','latin-ext']],
432
  'Inconsolata'=>[['200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
433
  'Inder'=>[['normal'],['latin','latin-ext']],
@@ -445,13 +462,14 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
445
  'Jacques Francois'=>[['normal'],['latin']],
446
  'Jacques Francois Shadow'=>[['normal'],['latin']],
447
  'Jaldi'=>[['normal','700'],['devanagari','latin','latin-ext']],
 
448
  'Jim Nightshade'=>[['normal'],['latin','latin-ext']],
449
  'Jockey One'=>[['normal'],['latin','latin-ext']],
450
  'Jolly Lodger'=>[['normal'],['latin','latin-ext']],
451
  'Jomhuria'=>[['normal'],['arabic','latin','latin-ext']],
452
  'Jomolhari'=>[['normal'],['latin','tibetan']],
453
  'Josefin Sans'=>[['100','200','300','normal','500','600','700','100italic','200italic','300italic','italic','500italic','600italic','700italic'],['latin','latin-ext','vietnamese']],
454
- 'Josefin Slab'=>[['100','100italic','300','300italic','normal','italic','600','600italic','700','700italic'],['latin']],
455
  'Jost'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','latin','latin-ext']],
456
  'Joti One'=>[['normal'],['latin','latin-ext']],
457
  'Jua'=>[['normal'],['korean','latin']],
@@ -468,7 +486,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
468
  'Kameron'=>[['normal','700'],['latin']],
469
  'Kanit'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','thai','vietnamese']],
470
  'Kantumruy'=>[['300','normal','700'],['khmer']],
471
- 'Karla'=>[['normal','italic','700','700italic'],['latin','latin-ext']],
472
  'Karma'=>[['300','normal','500','600','700'],['devanagari','latin','latin-ext']],
473
  'Katibeh'=>[['normal'],['arabic','latin','latin-ext']],
474
  'Kaushan Script'=>[['normal'],['latin','latin-ext']],
@@ -507,6 +525,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
507
  'Lakki Reddy'=>[['normal'],['latin','telugu']],
508
  'Lalezar'=>[['normal'],['arabic','latin','latin-ext','vietnamese']],
509
  'Lancelot'=>[['normal'],['latin','latin-ext']],
 
510
  'Lateef'=>[['normal'],['arabic','latin']],
511
  'Lato'=>[['100','100italic','300','300italic','normal','italic','700','700italic','900','900italic'],['latin','latin-ext']],
512
  'League Script'=>[['normal'],['latin']],
@@ -528,10 +547,11 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
528
  'Libre Barcode 39 Extended'=>[['normal'],['latin']],
529
  'Libre Barcode 39 Extended Text'=>[['normal'],['latin']],
530
  'Libre Barcode 39 Text'=>[['normal'],['latin']],
 
531
  'Libre Baskerville'=>[['normal','italic','700'],['latin','latin-ext']],
532
  'Libre Caslon Display'=>[['normal'],['latin','latin-ext']],
533
  'Libre Caslon Text'=>[['normal','italic','700'],['latin','latin-ext']],
534
- 'Libre Franklin'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext']],
535
  'Life Savers'=>[['normal','700','800'],['latin','latin-ext']],
536
  'Lilita One'=>[['normal'],['latin','latin-ext']],
537
  'Lily Script One'=>[['normal'],['latin','latin-ext']],
@@ -646,10 +666,12 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
646
  'Nanum Gothic Coding'=>[['normal','700'],['korean','latin']],
647
  'Nanum Myeongjo'=>[['normal','700','800'],['korean','latin']],
648
  'Nanum Pen Script'=>[['normal'],['korean','latin']],
 
649
  'Neucha'=>[['normal'],['cyrillic','latin']],
650
  'Neuton'=>[['200','300','normal','italic','700','800'],['latin','latin-ext']],
651
  'New Rocker'=>[['normal'],['latin','latin-ext']],
652
  'News Cycle'=>[['normal','700'],['latin','latin-ext']],
 
653
  'Niconne'=>[['normal'],['latin','latin-ext']],
654
  'Niramit'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','thai','vietnamese']],
655
  'Nixie One'=>[['normal'],['latin']],
@@ -685,6 +707,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
685
  'Odibee Sans'=>[['normal'],['latin']],
686
  'Odor Mean Chey'=>[['normal'],['khmer']],
687
  'Offside'=>[['normal'],['latin']],
 
688
  'Old Standard TT'=>[['normal','italic','700'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']],
689
  'Oldenburg'=>[['normal'],['latin','latin-ext']],
690
  'Oleo Script'=>[['normal','700'],['latin','latin-ext']],
@@ -753,6 +776,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
753
  'Poppins'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['devanagari','latin','latin-ext']],
754
  'Port Lligat Sans'=>[['normal'],['latin']],
755
  'Port Lligat Slab'=>[['normal'],['latin']],
 
756
  'Pragati Narrow'=>[['normal','700'],['devanagari','latin','latin-ext']],
757
  'Prata'=>[['normal'],['cyrillic','cyrillic-ext','latin','vietnamese']],
758
  'Preahvihear'=>[['normal'],['khmer']],
@@ -797,6 +821,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
797
  'Redressed'=>[['normal'],['latin']],
798
  'Reem Kufi'=>[['normal'],['arabic','latin']],
799
  'Reenie Beanie'=>[['normal'],['latin']],
 
800
  'Revalia'=>[['normal'],['latin','latin-ext']],
801
  'Rhodium Libre'=>[['normal'],['devanagari','latin','latin-ext']],
802
  'Ribeye'=>[['normal'],['latin','latin-ext']],
@@ -809,6 +834,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
809
  'Roboto Slab'=>[['100','200','300','normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']],
810
  'Rochester'=>[['normal'],['latin']],
811
  'Rock Salt'=>[['normal'],['latin']],
 
812
  'Rokkitt'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
813
  'Romanesco'=>[['normal'],['latin','latin-ext']],
814
  'Ropa Sans'=>[['normal','italic'],['latin','latin-ext']],
@@ -831,7 +857,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
831
  'Sacramento'=>[['normal'],['latin','latin-ext']],
832
  'Sahitya'=>[['normal','700'],['devanagari','latin']],
833
  'Sail'=>[['normal'],['latin','latin-ext']],
834
- 'Saira'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
835
  'Saira Condensed'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
836
  'Saira Extra Condensed'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
837
  'Saira Semi Condensed'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
@@ -865,6 +891,8 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
865
  'Share'=>[['normal','italic','700','700italic'],['latin','latin-ext']],
866
  'Share Tech'=>[['normal'],['latin']],
867
  'Share Tech Mono'=>[['normal'],['latin']],
 
 
868
  'Shojumaru'=>[['normal'],['latin','latin-ext']],
869
  'Short Stack'=>[['normal'],['latin']],
870
  'Shrikhand'=>[['normal'],['gujarati','latin','latin-ext']],
@@ -896,6 +924,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
896
  'Source Code Pro'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','900','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']],
897
  'Source Sans Pro'=>[['200','200italic','300','300italic','normal','italic','600','600italic','700','700italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']],
898
  'Source Serif Pro'=>[['200','200italic','300','300italic','normal','italic','600','600italic','700','700italic','900','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']],
 
899
  'Space Mono'=>[['normal','italic','700','700italic'],['latin','latin-ext','vietnamese']],
900
  'Spartan'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext']],
901
  'Special Elite'=>[['normal'],['latin']],
@@ -912,6 +941,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
912
  'Stalemate'=>[['normal'],['latin','latin-ext']],
913
  'Stalinist One'=>[['normal'],['cyrillic','latin','latin-ext']],
914
  'Stardos Stencil'=>[['normal','700'],['latin']],
 
915
  'Stint Ultra Condensed'=>[['normal'],['latin','latin-ext']],
916
  'Stint Ultra Expanded'=>[['normal'],['latin','latin-ext']],
917
  'Stoke'=>[['300','normal'],['latin','latin-ext']],
@@ -943,6 +973,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
943
  'Tenali Ramakrishna'=>[['normal'],['latin','telugu']],
944
  'Tenor Sans'=>[['normal'],['cyrillic','latin','latin-ext']],
945
  'Text Me One'=>[['normal'],['latin','latin-ext']],
 
946
  'Thasadith'=>[['normal','italic','700','700italic'],['latin','latin-ext','thai','vietnamese']],
947
  'The Girl Next Door'=>[['normal'],['latin']],
948
  'Tienne'=>[['normal','700','900'],['latin']],
@@ -957,6 +988,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
957
  'Trispace'=>[['100','200','300','normal','500','600','700','800'],['latin','latin-ext','vietnamese']],
958
  'Trocchi'=>[['normal'],['latin','latin-ext']],
959
  'Trochut'=>[['normal','italic','700'],['latin']],
 
960
  'Trykker'=>[['normal'],['latin','latin-ext']],
961
  'Tulpen One'=>[['normal'],['latin']],
962
  'Turret Road'=>[['200','300','normal','500','700','800'],['latin','latin-ext']],
@@ -997,6 +1029,7 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
997
  'Wendy One'=>[['normal'],['latin','latin-ext']],
998
  'Wire One'=>[['normal'],['latin']],
999
  'Work Sans'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']],
 
1000
  'Yanone Kaffeesatz'=>[['200','300','normal','500','600','700'],['cyrillic','latin','latin-ext','vietnamese']],
1001
  'Yantramanav'=>[['100','300','normal','500','700','900'],['devanagari','latin','latin-ext']],
1002
  'Yatra One'=>[['normal'],['devanagari','latin','latin-ext']],
@@ -1005,13 +1038,14 @@ if ( ! function_exists( 'ulf_get_google_fonts' ) ) {
1005
  'Yeseva One'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']],
1006
  'Yesteryear'=>[['normal'],['latin']],
1007
  'Yrsa'=>[['300','normal','500','600','700'],['latin','latin-ext']],
 
1008
  'ZCOOL KuaiLe'=>[['normal'],['chinese-simplified','latin']],
1009
  'ZCOOL QingKe HuangYou'=>[['normal'],['chinese-simplified','latin']],
1010
  'ZCOOL XiaoWei'=>[['normal'],['chinese-simplified','latin']],
1011
  'Zeyada'=>[['normal'],['latin']],
1012
  'Zhi Mang Xing'=>[['normal'],['chinese-simplified','latin']],
1013
  'Zilla Slab'=>[['300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext']],
1014
- 'Zilla Slab Highlight'=>[['normal','700'],['latin','latin-ext']]
1015
  ];
1016
  }
1017
  }
13
  'Adamina'=>[['normal'],['latin']],
14
  'Advent Pro'=>[['100','200','300','normal','500','600','700'],['greek','latin','latin-ext']],
15
  'Aguafina Script'=>[['normal'],['latin','latin-ext']],
16
+ 'Akaya Kanadaka'=>[['normal'],['kannada','latin','latin-ext']],
17
+ 'Akaya Telivigala'=>[['normal'],['latin','latin-ext','telugu']],
18
  'Akronim'=>[['normal'],['latin','latin-ext']],
19
  'Aladin'=>[['normal'],['latin','latin-ext']],
20
  'Alata'=>[['normal'],['latin','latin-ext','vietnamese']],
21
  'Alatsi'=>[['normal'],['latin','latin-ext','vietnamese']],
22
  'Aldrich'=>[['normal'],['latin']],
23
  'Alef'=>[['normal','700'],['hebrew','latin']],
24
+ 'Alegreya'=>[['normal','500','600','700','800','900','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']],
25
  'Alegreya SC'=>[['normal','italic','500','500italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']],
26
  'Alegreya Sans'=>[['100','100italic','300','300italic','normal','italic','500','500italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']],
27
  'Alegreya Sans SC'=>[['100','100italic','300','300italic','normal','italic','500','500italic','700','700italic','800','800italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']],
49
  'Anaheim'=>[['normal'],['latin','latin-ext']],
50
  'Andada'=>[['normal'],['latin','latin-ext']],
51
  'Andika'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']],
52
+ 'Andika New Basic'=>[['normal','italic','700','700italic'],['latin','latin-ext','vietnamese']],
53
  'Angkor'=>[['normal'],['khmer']],
54
  'Annie Use Your Telescope'=>[['normal'],['latin']],
55
  'Anonymous Pro'=>[['normal','italic','700','700italic'],['cyrillic','greek','latin','latin-ext']],
64
  'Archivo'=>[['normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','vietnamese']],
65
  'Archivo Black'=>[['normal'],['latin','latin-ext']],
66
  'Archivo Narrow'=>[['normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','vietnamese']],
67
+ 'Aref Ruqaa'=>[['normal','700'],['arabic','latin','latin-ext']],
68
  'Arima Madurai'=>[['100','200','300','normal','500','700','800','900'],['latin','latin-ext','tamil','vietnamese']],
69
+ 'Arimo'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['cyrillic','cyrillic-ext','greek','greek-ext','hebrew','latin','latin-ext','vietnamese']],
70
  'Arizonia'=>[['normal'],['latin','latin-ext']],
71
  'Armata'=>[['normal'],['latin','latin-ext']],
72
  'Arsenal'=>[['normal','italic','700','700italic'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']],
98
  'Bahiana'=>[['normal'],['latin','latin-ext']],
99
  'Bahianita'=>[['normal'],['latin','latin-ext','vietnamese']],
100
  'Bai Jamjuree'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','thai','vietnamese']],
101
+ 'Ballet'=>[['normal'],['latin','latin-ext','vietnamese']],
102
  'Baloo 2'=>[['normal','500','600','700','800'],['devanagari','latin','latin-ext','vietnamese']],
103
  'Baloo Bhai 2'=>[['normal','500','600','700','800'],['gujarati','latin','latin-ext','vietnamese']],
104
  'Baloo Bhaina 2'=>[['normal','500','600','700','800'],['latin','latin-ext','oriya','vietnamese']],
129
  'Bellota'=>[['300','300italic','normal','italic','700','700italic'],['cyrillic','latin','latin-ext','vietnamese']],
130
  'Bellota Text'=>[['300','300italic','normal','italic','700','700italic'],['cyrillic','latin','latin-ext','vietnamese']],
131
  'BenchNine'=>[['300','normal','700'],['latin','latin-ext']],
132
+ 'Benne'=>[['normal'],['kannada','latin','latin-ext']],
133
  'Bentham'=>[['normal'],['latin']],
134
  'Berkshire Swash'=>[['normal'],['latin','latin-ext']],
135
  'Beth Ellen'=>[['normal'],['latin']],
136
  'Bevan'=>[['normal'],['latin','latin-ext','vietnamese']],
137
  'Big Shoulders Display'=>[['100','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
138
+ 'Big Shoulders Inline Display'=>[['100','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
139
+ 'Big Shoulders Inline Text'=>[['100','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
140
+ 'Big Shoulders Stencil Display'=>[['100','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
141
+ 'Big Shoulders Stencil Text'=>[['100','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
142
  'Big Shoulders Text'=>[['100','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
143
  'Bigelow Rules'=>[['normal'],['latin','latin-ext']],
144
  'Bigshot One'=>[['normal'],['latin']],
152
  'Black Han Sans'=>[['normal'],['korean','latin']],
153
  'Black Ops One'=>[['normal'],['latin','latin-ext']],
154
  'Blinker'=>[['100','200','300','normal','600','700','800','900'],['latin','latin-ext']],
155
+ 'Bodoni Moda'=>[['normal','500','600','700','800','900','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext']],
156
  'Bokor'=>[['normal'],['khmer']],
157
  'Bonbon'=>[['normal'],['latin']],
158
  'Boogaloo'=>[['normal'],['latin']],
160
  'Bowlby One SC'=>[['normal'],['latin','latin-ext']],
161
  'Brawler'=>[['normal'],['latin']],
162
  'Bree Serif'=>[['normal'],['latin','latin-ext']],
163
+ 'Brygada 1918'=>[['normal','500','600','700'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']],
164
  'Bubblegum Sans'=>[['normal'],['latin','latin-ext']],
165
  'Bubbler One'=>[['normal'],['latin','latin-ext']],
166
  'Buda'=>[['300'],['latin']],
193
  'Carrois Gothic'=>[['normal'],['latin']],
194
  'Carrois Gothic SC'=>[['normal'],['latin']],
195
  'Carter One'=>[['normal'],['latin']],
196
+ 'Castoro'=>[['normal','italic'],['latin','latin-ext']],
197
  'Catamaran'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','tamil']],
198
  'Caudex'=>[['normal','italic','700','700italic'],['greek','greek-ext','latin','latin-ext']],
199
+ 'Caveat'=>[['normal','500','600','700'],['cyrillic','cyrillic-ext','latin','latin-ext']],
200
  'Caveat Brush'=>[['normal'],['latin','latin-ext']],
201
  'Cedarville Cursive'=>[['normal'],['latin']],
202
  'Ceviche One'=>[['normal'],['latin','latin-ext']],
289
  'Doppio One'=>[['normal'],['latin','latin-ext']],
290
  'Dorsa'=>[['normal'],['latin']],
291
  'Dosis'=>[['200','300','normal','500','600','700','800'],['latin','latin-ext','vietnamese']],
292
+ 'DotGothic16'=>[['normal'],['cyrillic','japanese','latin','latin-ext']],
293
  'Dr Sugiyama'=>[['normal'],['latin','latin-ext']],
294
  'Duru Sans'=>[['normal'],['latin','latin-ext']],
295
  'Dynalight'=>[['normal'],['latin','latin-ext']],
350
  'Forum'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext']],
351
  'Francois One'=>[['normal'],['latin','latin-ext','vietnamese']],
352
  'Frank Ruhl Libre'=>[['300','normal','500','700','900'],['hebrew','latin','latin-ext']],
353
+ 'Fraunces'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']],
354
  'Freckle Face'=>[['normal'],['latin','latin-ext']],
355
  'Fredericka the Great'=>[['normal'],['latin','latin-ext']],
356
  'Fredoka One'=>[['normal'],['latin']],
385
  'Gloria Hallelujah'=>[['normal'],['latin']],
386
  'Goblin One'=>[['normal'],['latin']],
387
  'Gochi Hand'=>[['normal'],['latin']],
388
+ 'Goldman'=>[['normal','700'],['latin','latin-ext','vietnamese']],
389
  'Gorditas'=>[['normal','700'],['latin']],
390
  'Gothic A1'=>[['100','200','300','normal','500','600','700','800','900'],['korean','latin']],
391
  'Gotu'=>[['normal'],['devanagari','latin','latin-ext','vietnamese']],
404
  'Gupter'=>[['normal','500','700'],['latin']],
405
  'Gurajada'=>[['normal'],['latin','telugu']],
406
  'Habibi'=>[['normal'],['latin','latin-ext']],
407
+ 'Hachi Maru Pop'=>[['normal'],['cyrillic','japanese','latin','latin-ext']],
408
  'Halant'=>[['300','normal','500','600','700'],['devanagari','latin','latin-ext']],
409
  'Hammersmith One'=>[['normal'],['latin','latin-ext']],
410
  'Hanalei'=>[['normal'],['latin','latin-ext']],
441
  'IM Fell French Canon SC'=>[['normal'],['latin']],
442
  'IM Fell Great Primer'=>[['normal','italic'],['latin']],
443
  'IM Fell Great Primer SC'=>[['normal'],['latin']],
444
+ 'Ibarra Real Nova'=>[['normal','500','600','700','italic','500italic','600italic','700italic'],['latin','latin-ext']],
445
  'Iceberg'=>[['normal'],['latin']],
446
  'Iceland'=>[['normal'],['latin']],
447
+ 'Imbue'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
448
  'Imprima'=>[['normal'],['latin','latin-ext']],
449
  'Inconsolata'=>[['200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
450
  'Inder'=>[['normal'],['latin','latin-ext']],
462
  'Jacques Francois'=>[['normal'],['latin']],
463
  'Jacques Francois Shadow'=>[['normal'],['latin']],
464
  'Jaldi'=>[['normal','700'],['devanagari','latin','latin-ext']],
465
+ 'JetBrains Mono'=>[['100','200','300','normal','500','600','700','800','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']],
466
  'Jim Nightshade'=>[['normal'],['latin','latin-ext']],
467
  'Jockey One'=>[['normal'],['latin','latin-ext']],
468
  'Jolly Lodger'=>[['normal'],['latin','latin-ext']],
469
  'Jomhuria'=>[['normal'],['arabic','latin','latin-ext']],
470
  'Jomolhari'=>[['normal'],['latin','tibetan']],
471
  'Josefin Sans'=>[['100','200','300','normal','500','600','700','100italic','200italic','300italic','italic','500italic','600italic','700italic'],['latin','latin-ext','vietnamese']],
472
+ 'Josefin Slab'=>[['100','200','300','normal','500','600','700','100italic','200italic','300italic','italic','500italic','600italic','700italic'],['latin']],
473
  'Jost'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['cyrillic','latin','latin-ext']],
474
  'Joti One'=>[['normal'],['latin','latin-ext']],
475
  'Jua'=>[['normal'],['korean','latin']],
486
  'Kameron'=>[['normal','700'],['latin']],
487
  'Kanit'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['latin','latin-ext','thai','vietnamese']],
488
  'Kantumruy'=>[['300','normal','700'],['khmer']],
489
+ 'Karla'=>[['200','300','normal','500','600','700','800','200italic','300italic','italic','500italic','600italic','700italic','800italic'],['latin','latin-ext']],
490
  'Karma'=>[['300','normal','500','600','700'],['devanagari','latin','latin-ext']],
491
  'Katibeh'=>[['normal'],['arabic','latin','latin-ext']],
492
  'Kaushan Script'=>[['normal'],['latin','latin-ext']],
525
  'Lakki Reddy'=>[['normal'],['latin','telugu']],
526
  'Lalezar'=>[['normal'],['arabic','latin','latin-ext','vietnamese']],
527
  'Lancelot'=>[['normal'],['latin','latin-ext']],
528
+ 'Langar'=>[['normal'],['gurmukhi','latin','latin-ext']],
529
  'Lateef'=>[['normal'],['arabic','latin']],
530
  'Lato'=>[['100','100italic','300','300italic','normal','italic','700','700italic','900','900italic'],['latin','latin-ext']],
531
  'League Script'=>[['normal'],['latin']],
547
  'Libre Barcode 39 Extended'=>[['normal'],['latin']],
548
  'Libre Barcode 39 Extended Text'=>[['normal'],['latin']],
549
  'Libre Barcode 39 Text'=>[['normal'],['latin']],
550
+ 'Libre Barcode EAN13 Text'=>[['normal'],['latin']],
551
  'Libre Baskerville'=>[['normal','italic','700'],['latin','latin-ext']],
552
  'Libre Caslon Display'=>[['normal'],['latin','latin-ext']],
553
  'Libre Caslon Text'=>[['normal','italic','700'],['latin','latin-ext']],
554
+ 'Libre Franklin'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']],
555
  'Life Savers'=>[['normal','700','800'],['latin','latin-ext']],
556
  'Lilita One'=>[['normal'],['latin','latin-ext']],
557
  'Lily Script One'=>[['normal'],['latin','latin-ext']],
666
  'Nanum Gothic Coding'=>[['normal','700'],['korean','latin']],
667
  'Nanum Myeongjo'=>[['normal','700','800'],['korean','latin']],
668
  'Nanum Pen Script'=>[['normal'],['korean','latin']],
669
+ 'Nerko One'=>[['normal'],['latin','latin-ext']],
670
  'Neucha'=>[['normal'],['cyrillic','latin']],
671
  'Neuton'=>[['200','300','normal','italic','700','800'],['latin','latin-ext']],
672
  'New Rocker'=>[['normal'],['latin','latin-ext']],
673
  'News Cycle'=>[['normal','700'],['latin','latin-ext']],
674
+ 'Newsreader'=>[['200','300','normal','500','600','700','800','200italic','300italic','italic','500italic','600italic','700italic','800italic'],['latin','latin-ext','vietnamese']],
675
  'Niconne'=>[['normal'],['latin','latin-ext']],
676
  'Niramit'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext','thai','vietnamese']],
677
  'Nixie One'=>[['normal'],['latin']],
707
  'Odibee Sans'=>[['normal'],['latin']],
708
  'Odor Mean Chey'=>[['normal'],['khmer']],
709
  'Offside'=>[['normal'],['latin']],
710
+ 'Oi'=>[['normal'],['greek','latin','latin-ext','vietnamese']],
711
  'Old Standard TT'=>[['normal','italic','700'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']],
712
  'Oldenburg'=>[['normal'],['latin','latin-ext']],
713
  'Oleo Script'=>[['normal','700'],['latin','latin-ext']],
776
  'Poppins'=>[['100','100italic','200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','800','800italic','900','900italic'],['devanagari','latin','latin-ext']],
777
  'Port Lligat Sans'=>[['normal'],['latin']],
778
  'Port Lligat Slab'=>[['normal'],['latin']],
779
+ 'Potta One'=>[['normal'],['japanese','latin','latin-ext','vietnamese']],
780
  'Pragati Narrow'=>[['normal','700'],['devanagari','latin','latin-ext']],
781
  'Prata'=>[['normal'],['cyrillic','cyrillic-ext','latin','vietnamese']],
782
  'Preahvihear'=>[['normal'],['khmer']],
821
  'Redressed'=>[['normal'],['latin']],
822
  'Reem Kufi'=>[['normal'],['arabic','latin']],
823
  'Reenie Beanie'=>[['normal'],['latin']],
824
+ 'Reggae One'=>[['normal'],['cyrillic','japanese','latin','latin-ext']],
825
  'Revalia'=>[['normal'],['latin','latin-ext']],
826
  'Rhodium Libre'=>[['normal'],['devanagari','latin','latin-ext']],
827
  'Ribeye'=>[['normal'],['latin','latin-ext']],
834
  'Roboto Slab'=>[['100','200','300','normal','500','600','700','800','900'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']],
835
  'Rochester'=>[['normal'],['latin']],
836
  'Rock Salt'=>[['normal'],['latin']],
837
+ 'RocknRoll One'=>[['normal'],['cyrillic','japanese','latin','latin-ext']],
838
  'Rokkitt'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
839
  'Romanesco'=>[['normal'],['latin','latin-ext']],
840
  'Ropa Sans'=>[['normal','italic'],['latin','latin-ext']],
857
  'Sacramento'=>[['normal'],['latin','latin-ext']],
858
  'Sahitya'=>[['normal','700'],['devanagari','latin']],
859
  'Sail'=>[['normal'],['latin','latin-ext']],
860
+ 'Saira'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']],
861
  'Saira Condensed'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
862
  'Saira Extra Condensed'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
863
  'Saira Semi Condensed'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
891
  'Share'=>[['normal','italic','700','700italic'],['latin','latin-ext']],
892
  'Share Tech'=>[['normal'],['latin']],
893
  'Share Tech Mono'=>[['normal'],['latin']],
894
+ 'Shippori Mincho'=>[['normal','500','600','700','800'],['japanese','latin','latin-ext']],
895
+ 'Shippori Mincho B1'=>[['normal','500','600','700','800'],['japanese','latin','latin-ext']],
896
  'Shojumaru'=>[['normal'],['latin','latin-ext']],
897
  'Short Stack'=>[['normal'],['latin']],
898
  'Shrikhand'=>[['normal'],['gujarati','latin','latin-ext']],
924
  'Source Code Pro'=>[['200','200italic','300','300italic','normal','italic','500','500italic','600','600italic','700','700italic','900','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']],
925
  'Source Sans Pro'=>[['200','200italic','300','300italic','normal','italic','600','600italic','700','700italic','900','900italic'],['cyrillic','cyrillic-ext','greek','greek-ext','latin','latin-ext','vietnamese']],
926
  'Source Serif Pro'=>[['200','200italic','300','300italic','normal','italic','600','600italic','700','700italic','900','900italic'],['cyrillic','cyrillic-ext','greek','latin','latin-ext','vietnamese']],
927
+ 'Space Grotesk'=>[['300','normal','500','600','700'],['latin','latin-ext','vietnamese']],
928
  'Space Mono'=>[['normal','italic','700','700italic'],['latin','latin-ext','vietnamese']],
929
  'Spartan'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext']],
930
  'Special Elite'=>[['normal'],['latin']],
941
  'Stalemate'=>[['normal'],['latin','latin-ext']],
942
  'Stalinist One'=>[['normal'],['cyrillic','latin','latin-ext']],
943
  'Stardos Stencil'=>[['normal','700'],['latin']],
944
+ 'Stick'=>[['normal'],['cyrillic','japanese','latin','latin-ext']],
945
  'Stint Ultra Condensed'=>[['normal'],['latin','latin-ext']],
946
  'Stint Ultra Expanded'=>[['normal'],['latin','latin-ext']],
947
  'Stoke'=>[['300','normal'],['latin','latin-ext']],
973
  'Tenali Ramakrishna'=>[['normal'],['latin','telugu']],
974
  'Tenor Sans'=>[['normal'],['cyrillic','latin','latin-ext']],
975
  'Text Me One'=>[['normal'],['latin','latin-ext']],
976
+ 'Texturina'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']],
977
  'Thasadith'=>[['normal','italic','700','700italic'],['latin','latin-ext','thai','vietnamese']],
978
  'The Girl Next Door'=>[['normal'],['latin']],
979
  'Tienne'=>[['normal','700','900'],['latin']],
988
  'Trispace'=>[['100','200','300','normal','500','600','700','800'],['latin','latin-ext','vietnamese']],
989
  'Trocchi'=>[['normal'],['latin','latin-ext']],
990
  'Trochut'=>[['normal','italic','700'],['latin']],
991
+ 'Truculenta'=>[['100','200','300','normal','500','600','700','800','900'],['latin','latin-ext','vietnamese']],
992
  'Trykker'=>[['normal'],['latin','latin-ext']],
993
  'Tulpen One'=>[['normal'],['latin']],
994
  'Turret Road'=>[['200','300','normal','500','700','800'],['latin','latin-ext']],
1029
  'Wendy One'=>[['normal'],['latin','latin-ext']],
1030
  'Wire One'=>[['normal'],['latin']],
1031
  'Work Sans'=>[['100','200','300','normal','500','600','700','800','900','100italic','200italic','300italic','italic','500italic','600italic','700italic','800italic','900italic'],['latin','latin-ext','vietnamese']],
1032
+ 'Xanh Mono'=>[['normal','italic'],['latin','latin-ext','vietnamese']],
1033
  'Yanone Kaffeesatz'=>[['200','300','normal','500','600','700'],['cyrillic','latin','latin-ext','vietnamese']],
1034
  'Yantramanav'=>[['100','300','normal','500','700','900'],['devanagari','latin','latin-ext']],
1035
  'Yatra One'=>[['normal'],['devanagari','latin','latin-ext']],
1038
  'Yeseva One'=>[['normal'],['cyrillic','cyrillic-ext','latin','latin-ext','vietnamese']],
1039
  'Yesteryear'=>[['normal'],['latin']],
1040
  'Yrsa'=>[['300','normal','500','600','700'],['latin','latin-ext']],
1041
+ 'Yusei Magic'=>[['normal'],['japanese','latin','latin-ext']],
1042
  'ZCOOL KuaiLe'=>[['normal'],['chinese-simplified','latin']],
1043
  'ZCOOL QingKe HuangYou'=>[['normal'],['chinese-simplified','latin']],
1044
  'ZCOOL XiaoWei'=>[['normal'],['chinese-simplified','latin']],
1045
  'Zeyada'=>[['normal'],['latin']],
1046
  'Zhi Mang Xing'=>[['normal'],['chinese-simplified','latin']],
1047
  'Zilla Slab'=>[['300','300italic','normal','italic','500','500italic','600','600italic','700','700italic'],['latin','latin-ext']],
1048
+ 'Zilla Slab Highlight'=>[['normal','700'],['latin','latin-ext']],
1049
  ];
1050
  }
1051
  }
admin/settings/functions/customize.php CHANGED
@@ -42,13 +42,6 @@ if ( ! class_exists( 'WP_Customize_Control_ULF' ) && class_exists( 'WP_Customize
42
  public $field = '';
43
  public $unique = '';
44
 
45
- public function enqueue() {
46
-
47
- // parent::enqueue();
48
- // echo 'xxx';
49
-
50
- }
51
-
52
  public function render() {
53
 
54
  $depend = '';
@@ -110,6 +103,7 @@ if ( ! class_exists( 'WP_Customize_Control_ULF' ) && class_exists( 'WP_Customize
110
  'fieldset',
111
  'group',
112
  'image_select',
 
113
  'link_color',
114
  'media',
115
  'palette',
42
  public $field = '';
43
  public $unique = '';
44
 
 
 
 
 
 
 
 
45
  public function render() {
46
 
47
  $depend = '';
103
  'fieldset',
104
  'group',
105
  'image_select',
106
+ 'link',
107
  'link_color',
108
  'media',
109
  'palette',
admin/settings/functions/helpers.php CHANGED
@@ -36,7 +36,7 @@ if ( ! function_exists( 'ulf_array_search' ) ) {
36
  * @version 1.0.0
37
  *
38
  */
39
- if ( ! function_exists( 'ulf_microtime' ) ) {
40
  function ulf_timeout( $timenow, $starttime, $timeout = 30 ) {
41
  return ( ( $timenow - $starttime ) < $timeout ) ? true : false;
42
  }
36
  * @version 1.0.0
37
  *
38
  */
39
+ if ( ! function_exists( 'ulf_timeout' ) ) {
40
  function ulf_timeout( $timenow, $starttime, $timeout = 30 ) {
41
  return ( ( $timenow - $starttime ) < $timeout ) ? true : false;
42
  }
admin/settings/languages/default.pot CHANGED
@@ -2,73 +2,73 @@
2
  # This file is distributed under the same license as the Codestar Framework package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Codestar Framework 2.2.1\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://wordpress.org/support/plugin/codestar-framework\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
 
12
- #: classes/admin-options.class.php:225
13
  msgid "Error while saving the changes."
14
  msgstr ""
15
 
16
- #: classes/admin-options.class.php:285
17
  msgid "Settings successfully imported."
18
  msgstr ""
19
 
20
- #: classes/admin-options.class.php:297 classes/admin-options.class.php:313
21
  msgid "Default settings restored."
22
  msgstr ""
23
 
24
- #: classes/admin-options.class.php:384
25
  msgid "Settings saved."
26
  msgstr ""
27
 
28
- #: classes/admin-options.class.php:563
29
  msgid "You have unsaved changes, save your changes!"
30
  msgstr ""
31
 
32
- #: classes/admin-options.class.php:565
33
  msgid "show all settings"
34
  msgstr ""
35
 
36
- #: classes/admin-options.class.php:567 fields/icon/icon.php:57
37
  #: fields/map/map.php:23
38
  msgid "Search..."
39
  msgstr ""
40
 
41
- #: classes/admin-options.class.php:570 classes/admin-options.class.php:693
42
  msgid "Save"
43
  msgstr ""
44
 
45
- #: classes/admin-options.class.php:570 classes/admin-options.class.php:693
46
  msgid "Saving..."
47
  msgstr ""
48
 
49
- #: classes/admin-options.class.php:571 classes/admin-options.class.php:694
50
  msgid "Reset Section"
51
  msgstr ""
52
 
53
- #: classes/admin-options.class.php:571 classes/admin-options.class.php:694
54
  msgid "Are you sure to reset this section options?"
55
  msgstr ""
56
 
57
- #: classes/admin-options.class.php:572 classes/admin-options.class.php:695
58
  msgid "Reset All"
59
  msgstr ""
60
 
61
- #: classes/admin-options.class.php:572 classes/admin-options.class.php:695
62
  #: classes/comment-options.class.php:215 classes/metabox-options.class.php:293
63
  #: fields/backup/backup.php:31
64
  msgid "Reset"
65
  msgstr ""
66
 
67
- #: classes/admin-options.class.php:572 classes/admin-options.class.php:695
68
  msgid "Are you sure you want to reset all settings to default values?"
69
  msgstr ""
70
 
71
- #: classes/admin-options.class.php:670 classes/comment-options.class.php:198
72
  #: classes/metabox-options.class.php:276 fields/button_set/button_set.php:56
73
  #: fields/checkbox/checkbox.php:76 fields/radio/radio.php:75
74
  #: fields/select/select.php:113 functions/actions.php:41
@@ -83,27 +83,27 @@ msgstr ""
83
  msgid "Cancel"
84
  msgstr ""
85
 
86
- #: classes/setup.class.php:529
87
  msgid "Are you sure?"
88
  msgstr ""
89
 
90
- #: classes/setup.class.php:530
91
  msgid "Please enter %s or more characters"
92
  msgstr ""
93
 
94
- #: classes/setup.class.php:531
95
  msgid "Searching..."
96
  msgstr ""
97
 
98
- #: classes/setup.class.php:532
99
  msgid "No results found."
100
  msgstr ""
101
 
102
- #: classes/setup.class.php:634
103
  msgid "Oops! Not allowed."
104
  msgstr ""
105
 
106
- #: classes/setup.class.php:708 classes/setup.class.php:712
107
  msgid "Field not found!"
108
  msgstr ""
109
 
@@ -645,4 +645,4 @@ msgstr ""
645
 
646
  #: functions/validate.php:68 functions/validate.php:146
647
  msgid "Please enter a valid URL."
648
- msgstr ""
2
  # This file is distributed under the same license as the Codestar Framework package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Codestar Framework 2.2.2\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://wordpress.org/support/plugin/codestar-framework\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
 
12
+ #: classes/admin-options.class.php:226
13
  msgid "Error while saving the changes."
14
  msgstr ""
15
 
16
+ #: classes/admin-options.class.php:286
17
  msgid "Settings successfully imported."
18
  msgstr ""
19
 
20
+ #: classes/admin-options.class.php:298 classes/admin-options.class.php:314
21
  msgid "Default settings restored."
22
  msgstr ""
23
 
24
+ #: classes/admin-options.class.php:385
25
  msgid "Settings saved."
26
  msgstr ""
27
 
28
+ #: classes/admin-options.class.php:565
29
  msgid "You have unsaved changes, save your changes!"
30
  msgstr ""
31
 
32
+ #: classes/admin-options.class.php:567
33
  msgid "show all settings"
34
  msgstr ""
35
 
36
+ #: classes/admin-options.class.php:569 fields/icon/icon.php:57
37
  #: fields/map/map.php:23
38
  msgid "Search..."
39
  msgstr ""
40
 
41
+ #: classes/admin-options.class.php:572 classes/admin-options.class.php:695
42
  msgid "Save"
43
  msgstr ""
44
 
45
+ #: classes/admin-options.class.php:572 classes/admin-options.class.php:695
46
  msgid "Saving..."
47
  msgstr ""
48
 
49
+ #: classes/admin-options.class.php:573 classes/admin-options.class.php:696
50
  msgid "Reset Section"
51
  msgstr ""
52
 
53
+ #: classes/admin-options.class.php:573 classes/admin-options.class.php:696
54
  msgid "Are you sure to reset this section options?"
55
  msgstr ""
56
 
57
+ #: classes/admin-options.class.php:574 classes/admin-options.class.php:697
58
  msgid "Reset All"
59
  msgstr ""
60
 
61
+ #: classes/admin-options.class.php:574 classes/admin-options.class.php:697
62
  #: classes/comment-options.class.php:215 classes/metabox-options.class.php:293
63
  #: fields/backup/backup.php:31
64
  msgid "Reset"
65
  msgstr ""
66
 
67
+ #: classes/admin-options.class.php:574 classes/admin-options.class.php:697
68
  msgid "Are you sure you want to reset all settings to default values?"
69
  msgstr ""
70
 
71
+ #: classes/admin-options.class.php:672 classes/comment-options.class.php:198
72
  #: classes/metabox-options.class.php:276 fields/button_set/button_set.php:56
73
  #: fields/checkbox/checkbox.php:76 fields/radio/radio.php:75
74
  #: fields/select/select.php:113 functions/actions.php:41
83
  msgid "Cancel"
84
  msgstr ""
85
 
86
+ #: classes/setup.class.php:592
87
  msgid "Are you sure?"
88
  msgstr ""
89
 
90
+ #: classes/setup.class.php:593
91
  msgid "Please enter %s or more characters"
92
  msgstr ""
93
 
94
+ #: classes/setup.class.php:594
95
  msgid "Searching..."
96
  msgstr ""
97
 
98
+ #: classes/setup.class.php:595
99
  msgid "No results found."
100
  msgstr ""
101
 
102
+ #: classes/setup.class.php:696
103
  msgid "Oops! Not allowed."
104
  msgstr ""
105
 
106
+ #: classes/setup.class.php:768 classes/setup.class.php:772
107
  msgid "Field not found!"
108
  msgstr ""
109
 
645
 
646
  #: functions/validate.php:68 functions/validate.php:146
647
  msgid "Please enter a valid URL."
648
+ msgstr ""
assets/js/dist/wp-ulike.dev.js DELETED
@@ -1,216 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
-
5
- !function (t, e, i, s) {
6
- "use strict";
7
-
8
- var n = {
9
- messageType: "success",
10
- messageText: "Hello World!",
11
- timeout: 8e3,
12
- messageElement: "wpulike-message",
13
- notifContainer: "wpulike-notification"
14
- };
15
-
16
- function l(e, i) {
17
- this.element = e, this.$element = t(e), this.settings = t.extend({}, n, i), this._defaults = n, this._name = "WordpressUlikeNotifications", this.init();
18
- }
19
-
20
- t.extend(l.prototype, {
21
- init: function init() {
22
- this._message(), this._container(), this._append(), this._remove();
23
- },
24
- _message: function _message() {
25
- this.$messageElement = t("<div/>").addClass(this.settings.messageElement + " wpulike-" + this.settings.messageType).text(this.settings.messageText);
26
- },
27
- _container: function _container() {
28
- t("." + this.settings.notifContainer).length || this.$element.append(t("<div/>").addClass(this.settings.notifContainer)), this.$notifContainer = this.$element.find("." + this.settings.notifContainer);
29
- },
30
- _append: function _append() {
31
- this.$notifContainer.append(this.$messageElement).trigger("WordpressUlikeNotificationAppend");
32
- },
33
- _remove: function _remove() {
34
- var e = this;
35
- this.$messageElement.click(function () {
36
- t(this).fadeOut(300, function () {
37
- t(this).remove(), t("." + e.settings.messageElement).length || e.$notifContainer.remove();
38
- }).trigger("WordpressUlikeRemoveNotification");
39
- }), e.settings.timeout && setTimeout(function () {
40
- e.$messageElement.fadeOut(300, function () {
41
- t(this).remove(), t("." + e.settings.messageElement).length || e.$notifContainer.remove();
42
- }).trigger("WordpressUlikeRemoveNotification");
43
- }, e.settings.timeout);
44
- }
45
- }), t.fn.WordpressUlikeNotifications = function (t) {
46
- return this.each(function () {
47
- new l(this, t);
48
- });
49
- };
50
- }(jQuery, window, document), function (t, e, i, s) {
51
- "use strict";
52
-
53
- t(e);
54
- var n = t(i),
55
- l = {
56
- ID: 0,
57
- nonce: 0,
58
- type: "",
59
- append: "",
60
- appendTimeout: 2e3,
61
- displayLikers: !1,
62
- disablePophover: !0,
63
- isTotal: !1,
64
- factor: "",
65
- template: "",
66
- counterSelector: ".count-box",
67
- generalSelector: ".wp_ulike_general_class",
68
- buttonSelector: ".wp_ulike_btn",
69
- likersSelector: ".wp_ulike_likers_wrapper"
70
- },
71
- a = {
72
- "ulike-id": "ID",
73
- "ulike-nonce": "nonce",
74
- "ulike-type": "type",
75
- "ulike-append": "append",
76
- "ulike-is-total": "isTotal",
77
- "ulike-display-likers": "displayLikers",
78
- "ulike-disable-pophover": "disablePophover",
79
- "ulike-append-timeout": "appendTimeout",
80
- "ulike-factor": "factor",
81
- "ulike-template": "template"
82
- };
83
-
84
- function o(e, i) {
85
- for (var s in this.element = e, this.$element = t(e), this.settings = t.extend({}, l, i), this._defaults = l, this._name = "WordpressUlike", this.buttonElement = this.$element.find(this.settings.buttonSelector), this.generalElement = this.$element.find(this.settings.generalSelector), this.counterElement = this.generalElement.find(this.settings.counterSelector), this.likersElement = this.$element.find(this.settings.likersSelector), a) {
86
- var n = this.buttonElement.data(s);
87
- void 0 !== n && (this.settings[a[s]] = n);
88
- }
89
-
90
- this.init();
91
- }
92
-
93
- t.extend(o.prototype, {
94
- init: function init() {
95
- this.buttonElement.click(this._initLike.bind(this)), this.generalElement.one("mouseenter", this._updateLikers.bind(this));
96
- },
97
- _ajax: function _ajax(e, i) {
98
- t.ajax({
99
- url: wp_ulike_params.ajax_url,
100
- type: "POST",
101
- cache: !1,
102
- dataType: "json",
103
- data: e
104
- }).done(i);
105
- },
106
- _initLike: function _initLike(t) {
107
- t.stopPropagation(), this._maybeUpdateElements(t), this._updateSameButtons(), this._updateSameLikers(), this.buttonElement.prop("disabled", !0), n.trigger("WordpressUlikeLoading", this.element), this.generalElement.addClass("wp_ulike_is_loading"), this._ajax({
108
- action: "wp_ulike_process",
109
- id: this.settings.ID,
110
- nonce: this.settings.nonce,
111
- factor: this.settings.factor,
112
- type: this.settings.type,
113
- template: this.settings.template,
114
- displayLikers: this.settings.displayLikers,
115
- disablePophover: this.settings.disablePophover
116
- }, function (t) {
117
- this.generalElement.removeClass("wp_ulike_is_loading"), t.success ? (this._updateMarkup(t), this._appendChild()) : this._sendNotification("error", t.data), this.buttonElement.prop("disabled", !1), n.trigger("WordpressUlikeUpdated", this.element);
118
- }.bind(this));
119
- },
120
- _maybeUpdateElements: function _maybeUpdateElements(e) {
121
- this.buttonElement = t(e.currentTarget), this.generalElement = this.buttonElement.closest(this.settings.generalSelector), this.counterElement = this.generalElement.find(this.settings.counterSelector), this.settings.factor = this.buttonElement.data("ulike-factor");
122
- },
123
- _appendChild: function _appendChild() {
124
- if ("" !== this.settings.append) {
125
- var e = t(this.settings.append);
126
- this.buttonElement.append(e), this.settings.appendTimeout && setTimeout(function () {
127
- e.detach();
128
- }, this.settings.appendTimeout);
129
- }
130
- },
131
- _updateMarkup: function _updateMarkup(t) {
132
- this._setSbilingElement(), this._setSbilingButtons(), this._updateGeneralClassNames(t.data.status), null !== t.data.data && (t.data.status < 5 && (this.__updateCounter(t.data.data), this.settings.displayLikers && void 0 !== t.data.likers && this._updateLikersMarkup(t.data.likers)), this._updateButton(t.data.btnText, t.data.status)), this._sendNotification(t.data.messageType, t.data.message);
133
- },
134
- _updateGeneralClassNames: function _updateGeneralClassNames(t) {
135
- var e = "wp_ulike_is_not_liked",
136
- i = "wp_ulike_is_liked",
137
- s = "wp_ulike_is_unliked",
138
- n = "wp_ulike_click_is_disabled";
139
-
140
- switch (this.siblingElement.length && this.siblingElement.removeClass(this._arrayToString([i, s])), t) {
141
- case 1:
142
- this.generalElement.addClass(i).removeClass(e), this.generalElement.children().first().addClass(n);
143
- break;
144
-
145
- case 2:
146
- this.generalElement.addClass(s).removeClass(i);
147
- break;
148
-
149
- case 3:
150
- this.generalElement.addClass(i).removeClass(s);
151
- break;
152
-
153
- default:
154
- this.generalElement.addClass(n), this.siblingElement.length && this.siblingElement.addClass(n);
155
- }
156
- },
157
- _arrayToString: function _arrayToString(t) {
158
- return t.join(" ");
159
- },
160
- _setSbilingElement: function _setSbilingElement() {
161
- this.siblingElement = this.generalElement.siblings();
162
- },
163
- _setSbilingButtons: function _setSbilingButtons() {
164
- this.siblingButton = this.buttonElement.siblings(this.settings.buttonSelector);
165
- },
166
- __updateCounter: function __updateCounter(t) {
167
- "object" != _typeof(t) ? this.counterElement.text(t) : this.settings.isTotal && void 0 !== t.sub ? this.counterElement.text(t.sub) : "down" === this.settings.factor ? (this.counterElement.text(t.down), this.siblingElement.length && this.siblingElement.find(this.settings.counterSelector).text(t.up)) : (this.counterElement.text(t.up), this.siblingElement.length && this.siblingElement.find(this.settings.counterSelector).text(t.down)), n.trigger("WordpressUlikeCounterUpdated", [this.buttonElement]);
168
- },
169
- _updateLikers: function _updateLikers() {
170
- this.settings.displayLikers && !this.likersElement.length && (this.generalElement.addClass("wp_ulike_is_getting_likers_list"), this._ajax({
171
- action: "wp_ulike_get_likers",
172
- id: this.settings.ID,
173
- nonce: this.settings.nonce,
174
- type: this.settings.type,
175
- displayLikers: this.settings.displayLikers,
176
- disablePophover: this.settings.disablePophover
177
- }, function (t) {
178
- this.generalElement.removeClass("wp_ulike_is_getting_likers_list"), t.success && this._updateLikersMarkup(t.data);
179
- }.bind(this)));
180
- },
181
- _updateLikersMarkup: function _updateLikersMarkup(e) {
182
- this.likersElement.length || (this.likersElement = t("<div>", {
183
- "class": e["class"]
184
- }).appendTo(this.$element)), e.template ? this.likersElement.show().html(e.template) : this.likersElement.hide();
185
- },
186
- _updateSameButtons: function _updateSameButtons() {
187
- var t = void 0 !== this.settings.factor ? "_" + this.settings.factor : "";
188
- this.sameButtons = n.find(".wp_" + this.settings.type.toLowerCase() + t + "_btn_" + this.settings.ID), this.sameButtons.length > 1 && (this.buttonElement = this.sameButtons, this.generalElement = this.buttonElement.closest(this.settings.generalSelector), this.counterElement = this.generalElement.find(this.settings.counterSelector));
189
- },
190
- _updateSameLikers: function _updateSameLikers() {
191
- this.sameLikers = n.find(".wp_" + this.settings.type.toLowerCase() + "_likers_" + this.settings.ID), this.sameLikers.length > 1 && (this.likersElement = this.sameLikers);
192
- },
193
- _getLikersElement: function _getLikersElement() {
194
- return this.likersElement;
195
- },
196
- _updateButton: function _updateButton(t, e) {
197
- this.buttonElement.hasClass("wp_ulike_put_image") ? (this.buttonElement.toggleClass("image-unlike wp_ulike_btn_is_active"), this.siblingElement.length && this.siblingElement.find(this.settings.buttonSelector).removeClass("image-unlike wp_ulike_btn_is_active"), this.siblingButton.length && this.siblingButton.removeClass("image-unlike wp_ulike_btn_is_active")) : this.buttonElement.hasClass("wp_ulike_put_text") && null !== t && ("object" != _typeof(t) ? this.buttonElement.find("span").html(t) : "down" === this.settings.factor ? (this.buttonElement.find("span").html(t.down), this.siblingElement.length && this.siblingElement.find(this.settings.buttonSelector).find("span").html(t.up)) : (this.buttonElement.find("span").html(t.up), this.siblingElement.length && this.siblingElement.find(this.settings.buttonSelector).find("span").html(t.down)));
198
- },
199
- _sendNotification: function _sendNotification(e, s) {
200
- "1" === wp_ulike_params.notifications && t(i.body).WordpressUlikeNotifications({
201
- messageType: e,
202
- messageText: s
203
- });
204
- }
205
- }), t.fn.WordpressUlike = function (e) {
206
- return this.each(function () {
207
- t.data(this, "plugin_WordpressUlike") || t.data(this, "plugin_WordpressUlike", new o(this, e));
208
- });
209
- };
210
- }(jQuery, window, document), function (t) {
211
- t(function () {
212
- t(this).bind("DOMNodeInserted", function (e) {
213
- t(".wpulike").WordpressUlike();
214
- });
215
- }), t(".wpulike").WordpressUlike();
216
- }(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/wp-ulike.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! WP ULike - v4.4.6
2
  * https://wpulike.com
3
  * TechnoWich 2021;
4
  */
1
+ /*! WP ULike - v4.4.7
2
  * https://wpulike.com
3
  * TechnoWich 2021;
4
  */
assets/js/wp-ulike.min.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! WP ULike - v4.4.6
2
  * https://wpulike.com
3
  * TechnoWich 2021;
4
  */
1
+ /*! WP ULike - v4.4.7
2
  * https://wpulike.com
3
  * TechnoWich 2021;
4
  */
dist/Gruntfile.dev.js DELETED
@@ -1,463 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = function (grunt) {
4
- // load all grunt tasks matching the `grunt-*` pattern
5
- require('load-grunt-tasks')(grunt);
6
-
7
- require('time-grunt')(grunt);
8
-
9
- grunt.initConfig({
10
- pkg: grunt.file.readJSON('package.json'),
11
- // Meta definitions
12
- meta: {
13
- project: "wp-ulike",
14
- version: "<%= pkg.title || pkg.name %> - v<%= pkg.version %>",
15
- copyright: "<%= pkg.author.name %> <%= grunt.template.today('yyyy') %>",
16
- header: "/*\n" + " * <%= meta.version %>\n" + " * <%= pkg.homepage %>\n" + " *\n" + " * <%= pkg.description %>\n" + " *\n" + " * <%= meta.copyright %>" + " */\n",
17
- phpheader: "\n" + " * @package <%= pkg.name %>\n" + " * @author <%= pkg.author.name %> <%= grunt.template.today('yyyy') %>\n" + " * @link <%= pkg.homepage %>",
18
- buildDir: "build",
19
- projectSubDir: '<%= meta.project %>',
20
- buildPath: '<%= meta.buildDir %>/<%= meta.projectSubDir %>',
21
- installableZipFile: '<%= meta.project %>',
22
- // '<%= meta.project %>-installable'
23
- zipBuildPath: '<%= meta.buildDir %>/<%= meta.installableZipFile %>.zip'
24
- },
25
- // javascript linting with jshint
26
- jshint: {
27
- options: {
28
- jshintrc: '.jshintrc',
29
- "force": true
30
- },
31
- gruntFile: {
32
- // you can overrides global options for this target here
33
- options: {},
34
- files: {
35
- src: ['Gruntfile.js']
36
- }
37
- },
38
- frontJsScript: {
39
- // you can overrides global options for this target here
40
- options: {},
41
- files: {
42
- src: ['assets/js/wp-ulike.js']
43
- }
44
- }
45
- },
46
- // watch and compile scss files to css
47
- compass: {
48
- options: {
49
- config: 'assets/sass/config.rb',
50
- sassDir: 'assets/sass',
51
- cssDir: 'assets/css',
52
- sourcemap: false
53
- },
54
- back_dev: {
55
- options: {
56
- sassDir: 'admin/assets/sass',
57
- cssDir: 'admin/assets/css/',
58
- environment: 'development',
59
- watch: true,
60
- trace: true,
61
- outputStyle: 'compact' // nested, expanded, compact, compressed.
62
-
63
- }
64
- },
65
- back_build: {
66
- options: {
67
- sassDir: 'admin/assets/sass',
68
- cssDir: 'admin/assets/css/',
69
- environment: 'development',
70
- watch: false,
71
- trace: true,
72
- outputStyle: 'expanded' // nested, expanded, compact, compressed.
73
-
74
- }
75
- },
76
- front_dev: {
77
- options: {
78
- sassDir: 'assets/sass',
79
- cssDir: 'assets/css',
80
- specify: ['assets/sass/wp-ulike.scss'],
81
- environment: 'development',
82
- watch: true,
83
- trace: true,
84
- outputStyle: 'expanded' // nested, expanded, compact, compressed.
85
-
86
- }
87
- },
88
- front_build: {
89
- options: {
90
- sassDir: 'assets/sass',
91
- cssDir: 'assets/css',
92
- specify: ['assets/sass/wp-ulike.scss'],
93
- environment: 'development',
94
- watch: false,
95
- trace: true,
96
- outputStyle: 'expanded' // nested, expanded, compact, compressed.
97
-
98
- }
99
- }
100
- },
101
- phplint: {
102
- options: {
103
- phpArgs: {
104
- "-d": null,
105
- "-f": null
106
- }
107
- },
108
- all: {
109
- src: ['*.php', '**/*.php', '!node_modules/**', '!vendor/**']
110
- }
111
- },
112
- // Generate POT file
113
- makepot: {
114
- target: {
115
- options: {
116
- domainPath: 'languages',
117
- mainFile: 'wp-ulike.php',
118
- potFilename: 'wp-ulike.pot',
119
- potHeaders: {
120
- poedit: true,
121
- 'Report-Msgid-Bugs-To': 'https://wordpress.org/plugins/wp-ulike/',
122
- 'Last-Translator': 'Alimir <info@alimir.ir>',
123
- 'Language-Team': 'Alimir <info@alimir.ir>',
124
- 'x-poedit-keywordslist': '__;_e;__ngettext:1,2;__ngettext_noop:1,2;_n:1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_attr_ex:1,2c;esc_html_x',
125
- 'x-poedit-country': 'United States',
126
- 'x-textdomain-support': 'yes'
127
- },
128
- type: 'wp-plugin',
129
- updatePoFiles: true
130
- }
131
- }
132
- },
133
- po2mo: {
134
- files: {
135
- src: 'languages/*.po',
136
- expand: true
137
- }
138
- },
139
- // Copy files from bower_component folder to right places
140
- copy: {
141
- // gMaps: {
142
- // files: [
143
- // {
144
- // expand: true, // Enable dynamic expansion.
145
- // cwd: '<%= pkg.bower.components %>jqvmap/dist', // Src matches are relative to this path.
146
- // src: ['jquery.vmap.min.js', 'maps/jquery.vmap.world.js'], // Actual pattern(s) to match.
147
- // dest: 'admin/assets/js/src/plugins' // Destination path prefix.
148
- // }
149
- // ]
150
- // },
151
- chartjs: {
152
- files: [{
153
- expand: true,
154
- // Enable dynamic expansion.
155
- cwd: 'node_modules/chart.js/dist',
156
- // Src matches are relative to this path.
157
- src: ['Chart.min.js'],
158
- // Actual pattern(s) to match.
159
- dest: 'admin/assets/js/src/plugins/' // Destination path prefix.
160
-
161
- }]
162
- },
163
- vueJs: {
164
- files: [{
165
- expand: true,
166
- // Enable dynamic expansion.
167
- cwd: 'node_modules/vue/dist',
168
- // Src matches are relative to this path.
169
- src: ['vue.min.js', 'vue.js'],
170
- // Actual pattern(s) to match.
171
- dest: 'admin/assets/js/solo/vue/' // Destination path prefix.
172
-
173
- }]
174
- },
175
- matchHeight: {
176
- files: [{
177
- expand: true,
178
- // Enable dynamic expansion.
179
- cwd: 'node_modules/jquery-match-height/dist',
180
- // Src matches are relative to this path.
181
- src: ['jquery.matchHeight-min.js'],
182
- // Actual pattern(s) to match.
183
- dest: 'admin/assets/js/src/plugins/' // Destination path prefix.
184
-
185
- }]
186
- }
187
- },
188
- // merge js files
189
- concat: {
190
- frontJsScripts: {
191
- options: {
192
- banner: "/*! <%= meta.version %>\n" + " * <%= pkg.homepage %>\n" + " * <%= meta.copyright %>;\n" + " */\n",
193
- process: function process(src, filepath) {
194
- var separator = "\n\n/* ================== " + filepath + " =================== */\n\n\n";
195
- return (separator + src).replace(/;\s*$/, "") + ";"; // make sure always a semicolon is at the end
196
- }
197
- },
198
- src: ['assets/js/src/tooltip.js', 'assets/js/src/wordpress-ulike-notifications.js', 'assets/js/src/wordpress-ulike.js', 'assets/js/src/scripts.js'],
199
- dest: 'assets/js/wp-ulike.js'
200
- },
201
- adminJsPlugins: {
202
- options: {
203
- banner: "/*! <%= meta.version %>\n" + " * <%= pkg.homepage %>\n" + " * <%= meta.copyright %>;\n" + " */\n",
204
- process: function process(src, filepath) {
205
- var separator = "\n\n/* ================== " + filepath + " =================== */\n\n\n";
206
- return (separator + src).replace(/;\s*$/, "") + ";"; // make sure always a semicolon is at the end
207
- }
208
- },
209
- src: ['node_modules/chart.js/dist/Chart.js', 'node_modules/jquery-match-height/dist/jquery.matchHeight.js'],
210
- dest: 'admin/assets/js/plugins.js'
211
- } // adminJsScripts: {
212
- // options: {
213
- // banner: "/*! <%= meta.version %>\n" +
214
- // " * <%= pkg.homepage %>\n" +
215
- // " * <%= meta.copyright %>;\n" +
216
- // " */\n",
217
- // process: function(src, filepath) {
218
- // var separator = "\n\n/* ================== " + filepath + " =================== */\n\n\n";
219
- // return (separator + src).replace(/;\s*$/, "") + ";"; // make sure always a semicolon is at the end
220
- // },
221
- // },
222
- // src: [
223
- // 'admin/assets/js/src/*.js',
224
- // ],
225
- // dest: 'admin/assets/js/scripts.js'
226
- // }
227
-
228
- },
229
- // css minify
230
- cssmin: {
231
- options: {
232
- keepSpecialComments: 1
233
- },
234
- target: {
235
- files: {
236
- 'assets/css/wp-ulike.min.css': ['assets/css/wp-ulike.css']
237
- }
238
- }
239
- },
240
- clean: {
241
- build: ['<%= meta.buildPath %>', '<%= meta.zipBuildPath %>'],
242
- version: ['build/*.txt']
243
- },
244
- // JS minification
245
- uglify: {
246
- options: {
247
- mangle: true,
248
- preserveComments: 'some'
249
- },
250
- frontJsScripts: {
251
- src: '<%= concat.frontJsScripts.dest %>',
252
- dest: 'assets/js/wp-ulike.min.js'
253
- }
254
- },
255
- // JS minification
256
- terser: {
257
- options: {},
258
- main: {
259
- files: {
260
- 'assets/js/wp-ulike.min.js': ['<%= concat.frontJsScripts.dest %>'],
261
- 'admin/assets/js/plugins.js': ['<%= concat.adminJsPlugins.dest %>']
262
- }
263
- }
264
- },
265
- preprocess: {
266
- options: {
267
- context: {
268
- VERSION: "<%= pkg.version %>",
269
- DEV: true,
270
- TODO: true,
271
- LITE: false,
272
- PRO: false,
273
- HEADER: "<%= meta.phpheader %>"
274
- }
275
- },
276
- pro: {
277
- src: ['<%= meta.buildPath %>/**/*.php', '<%= meta.buildPath %>/**/*.css', '<%= meta.buildPath %>/README.txt'],
278
- options: {
279
- inline: true,
280
- context: {
281
- DEV: false,
282
- TODO: false,
283
- LITE: false,
284
- PRO: true
285
- }
286
- }
287
- },
288
- liteOfficial: {
289
- src: ['<%= meta.buildPath %>/**/*.php', '<%= meta.buildPath %>/**/*.css', '<%= meta.buildPath %>/README.txt'],
290
- options: {
291
- inline: true,
292
- context: {
293
- DEV: false,
294
- TODO: false,
295
- LITE: true,
296
- PRO: false
297
- }
298
- }
299
- }
300
- },
301
- shell: {
302
- install: {
303
- command: "brew install jpegoptim; brew install pngquant; mkdir <%= meta.buildPath %>"
304
- },
305
- // Sync package.json version with git repo version
306
- updateVersion: {
307
- command: 'npm version $(git describe --tags `git rev-list --tags --max-count=1`);'
308
- },
309
- // Increase package.json version one step
310
- bumpVersion: {
311
- command: 'npm version patch'
312
- },
313
- cleanBuildDotFiles: {
314
- command: ' find <%= meta.buildDir %> -name ".DS_Store" -delete' // exclude dotfiles
315
-
316
- },
317
- zipBuild: {
318
- command: 'cd <%= meta.buildDir %>; zip -FSr -9 <%= meta.installableZipFile %> <%= meta.projectSubDir %> -x */\.*; cd ..;' // exclude dotfiles
319
-
320
- },
321
- zipDlPack: {
322
- command: 'cd <%= meta.buildDir %>; zip -FSr -9 <%= meta.project %>-download-package * -x /<%= meta.projectSubDir %>/* */\.*; cd ..;' // exclude dotfiles
323
-
324
- },
325
- createTextVersion: {
326
- command: 'echo Latest version: v<%= pkg.version %> >> <%= meta.buildDir %>/<%= pkg.version %>.txt'
327
- },
328
- findLitePngs: {
329
- command: "find ./<%= meta.buildPath %>/ -name '*.png'"
330
- },
331
- compressLitePngs: {
332
- command: "find ./<%= meta.buildPath %>/ -name '*.png' -exec pngquant --speed 3 --quality=65-80 --skip-if-larger --ext .png --force 256 {} \\;"
333
- },
334
- getLitePngsSize: {
335
- command: "find ./<%= meta.buildPath %>/ -name '*.png' -exec du -ch {} + | grep total$ "
336
- },
337
- findLiteJpgs: {
338
- command: "find ./<%= meta.buildPath %>/ -name '*.jpg'"
339
- },
340
- compressLiteJpgs: {
341
- command: "find ./<%= meta.buildPath %>/ -name '*.jpg' -exec jpegoptim -m80 -o -p {} \\;"
342
- },
343
- getLiteJpgsSize: {
344
- command: "find ./<%= meta.buildPath %>/ -name '*.jpg' -exec du -ch {} + | grep total$ "
345
- }
346
- },
347
- // Running multiple blocking tasks
348
- concurrent: {
349
- watch_frontend_scss: {
350
- tasks: ['compass_dev', 'watch', 'compass:front_dev'],
351
- options: {
352
- logConcurrentOutput: true
353
- }
354
- }
355
- },
356
- // watch for changes and trigger sass, jshint, uglify and livereload
357
- watch: {
358
- concat_front_js_scripts: {
359
- files: ['assets/js/src/*.js'],
360
- tasks: ['concat:frontJsScripts']
361
- },
362
- concat_admin_js_plugins: {
363
- files: ['admin/assets/js/src/plugins/**/*.js'],
364
- tasks: ['concat:adminJsPlugins']
365
- },
366
- // concat_admin_js_scripts: {
367
- // files: ['admin/assets/js/src/*.js'],
368
- // tasks: ['concat:adminJsScripts']
369
- // },
370
- livereload: {
371
- options: {
372
- livereload: 35985
373
- },
374
- files: ['*.css', 'assets/css/*.css', 'assets/js/src/*.js', 'assets/js/*.js', 'assets/img/**/*.{png,jpg,jpeg,gif,webp,svg}']
375
- }
376
- },
377
- wp_deploy: {
378
- deploy: {
379
- options: {
380
- plugin_slug: '<%= meta.project %>',
381
- svn_user: 'alimir',
382
- build_dir: '<%= meta.buildPath %>',
383
- //relative path to your build directory
384
- assets_dir: 'wp-assets' //relative path to your assets directory (optional).
385
-
386
- }
387
- }
388
- },
389
- // deploy via rsync
390
- deploy: {
391
- options: {
392
- args: ["--verbose --delete-after"],
393
- // z:compress while transfering data, P: display progress
394
- exclude: ['.git*', 'node_modules', 'Gruntfile.js', 'package.json', 'composer.json', 'assets/js/src', 'admin/assets/js/src', 'readme.md', '.jshintrc', 'build', '.*', '.ds_store', 'package-lock.json', 'config.rb', 'assets/sass/', 'admin/assets/sass/', 'deploy.sh', 'wp-assets', 'docs', 'README.md', 'SUMMARY.md'],
395
- recursive: true,
396
- syncDestIgnoreExcl: true
397
- },
398
- build: {
399
- options: {
400
- src: "./",
401
- dest: "<%= meta.buildPath %>"
402
- }
403
- },
404
- prod_ir: {
405
- options: {
406
- exclude: [],
407
- src: "<%= meta.buildPath %>/",
408
- dest: "/home/wpulike.ir/public_html/wp-content/plugins/<%= meta.project %>/",
409
- host: "root@78.46.117.192"
410
- }
411
- },
412
- prod: {
413
- options: {
414
- exclude: [],
415
- src: "<%= meta.buildPath %>/",
416
- dest: "/home/wpulike.com/public_html/wp-content/plugins/<%= meta.project %>/",
417
- host: "root@159.69.92.197"
418
- }
419
- },
420
- sandbox: {
421
- options: {
422
- exclude: [],
423
- src: "<%= meta.buildPath %>/",
424
- dest: "/home/sandbox.wpulike.com/public_html/wp-content/plugins/<%= meta.project %>/",
425
- host: "root@159.69.92.197"
426
- }
427
- },
428
- lite: {
429
- options: {
430
- exclude: ['.git*', 'node_modules', '.sass-cache', 'Gruntfile.js', 'package.json', 'composer.json', '_devDependencies', 'assets/js/src', 'admin/assets/js/src', 'readme.md', '.jshintrc', 'build', '.*', '.ds_store', 'package-lock.json', 'bower.json', 'config.rb', 'assets/sass/', 'admin/assets/sass/', 'deploy.sh', 'docs', 'wp-assets', 'README.md', 'SUMMARY.md'],
431
- src: ['./'],
432
- dest: "<%= meta.buildPath %>"
433
- }
434
- }
435
- }
436
- });
437
- grunt.registerTask('install', ['shell:install']);
438
- grunt.registerTask('compress', ['shell:compressLitePngs', 'shell:compressLiteJpgs']);
439
- grunt.registerTask('buildVersion', ['clean:version', 'shell:createTextVersion']); // rename tasks
440
-
441
- grunt.renameTask('rsync', 'deploy'); // phplint
442
-
443
- grunt.registerTask("php", ["phplint"]); // register task
444
-
445
- grunt.registerTask('syncversion', ['shell:updateVersion']);
446
- grunt.registerTask('bump', ['shell:bumpVersion']);
447
- grunt.registerTask('i18n', ['makepot', 'po2mo']);
448
- grunt.registerTask('compass_dev', ['compass:back_dev']); // compress the product in one pack
449
-
450
- grunt.registerTask('pack', ['shell:zipBuild']); // deploy the lite version in /build folder
451
-
452
- grunt.registerTask('beta', ['clean:build', 'compass:front_build', 'compass:back_build', 'cssmin', 'deploy:lite', 'shell:cleanBuildDotFiles', 'compress']); // build the final lite version in /build folder and pack the product
453
-
454
- grunt.registerTask('build', ['concat', 'terser', 'beta', 'preprocess:liteOfficial', 'buildVersion', 'pack']);
455
- grunt.registerTask('release', ['build', 'wp_deploy:deploy']); // register task
456
-
457
- grunt.registerTask('default', ['concat', 'cssmin', 'terser']);
458
- grunt.registerTask('dev', ['concurrent']);
459
- grunt.registerTask('update_dep', ['copy', 'concat']);
460
- grunt.registerTask('product', ['build', 'deploy:prod']);
461
- grunt.registerTask('sandbox', ['build', 'deploy:sandbox']);
462
- grunt.registerTask('product_fa', ['build', 'deploy:prod_ir']);
463
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/action.php ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP ULIKE Register Hook CLASS
4
+ *
5
+ *
6
+ * @package wp-ulike
7
+ * @author TechnoWich 2021
8
+ * @link https://wpulike.com
9
+ */
10
+
11
+ // If this file is called directly, abort.
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit; // Exit if accessed directly.
14
+ }
15
+
16
+ if ( ! class_exists( 'wp_ulike_register_action_hook' ) ) :
17
+
18
+ class wp_ulike_register_action_hook {
19
+
20
+ /**
21
+ * Instance of this class.
22
+ *
23
+ * @var object
24
+ */
25
+ protected static $instance = null;
26
+
27
+ /**
28
+ * Initialize the plugin
29
+ *
30
+ * @since 1.0.0
31
+ */
32
+ private function __construct() {
33
+ add_action( 'wpmu_new_blog', array( $this, 'activate_new_site' ) );
34
+ }
35
+
36
+
37
+ /**
38
+ * Fired when the plugin is activated.
39
+ *
40
+ * @param boolean $network_wide True if WPMU superadmin uses
41
+ * "Network Activate" action, false if
42
+ * WPMU is disabled or plugin is
43
+ * activated on an individual blog.
44
+ */
45
+ public static function activate( $network_wide ) {
46
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
47
+ if ( $network_wide ) {
48
+ // Get all blog ids
49
+ $blog_ids = self::get_blog_ids();
50
+ foreach ( $blog_ids as $blog_id ) {
51
+
52
+ switch_to_blog( $blog_id );
53
+ self::single_activate();
54
+ }
55
+ restore_current_blog();
56
+ } else {
57
+ self::single_activate();
58
+ }
59
+ } else {
60
+ self::single_activate();
61
+ }
62
+ }
63
+
64
+ /**
65
+ * Fired when the plugin is deactivated.
66
+ *
67
+ * @param boolean $network_wide True if WPMU superadmin uses
68
+ * "Network Deactivate" action, false if
69
+ * WPMU is disabled or plugin is
70
+ * deactivated on an individual blog.
71
+ */
72
+ public static function deactivate( $network_wide ) {
73
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
74
+ if ( $network_wide ) {
75
+ // Get all blog ids
76
+ $blog_ids = self::get_blog_ids();
77
+ foreach ( $blog_ids as $blog_id ) {
78
+ switch_to_blog( $blog_id );
79
+ self::single_deactivate();
80
+ }
81
+ restore_current_blog();
82
+ } else {
83
+ self::single_deactivate();
84
+ }
85
+ } else {
86
+ self::single_deactivate();
87
+ }
88
+ }
89
+
90
+ /**
91
+ * Fired for each blog when the plugin is activated.
92
+ */
93
+ private static function single_activate() {
94
+ // Init activator class
95
+ if( ! class_exists('wp_ulike_activator') ){
96
+ require_once WP_ULIKE_INC_DIR . '/classes/class-wp-ulike-activator.php';
97
+ }
98
+ wp_ulike_activator::get_instance()::activate();
99
+
100
+ // Fire action
101
+ do_action( 'wp_ulike_activated', get_current_blog_id() );
102
+ }
103
+
104
+ /**
105
+ * Fired for each blog when the plugin is deactivated.
106
+ */
107
+ private static function single_deactivate() {
108
+ // Init activator class
109
+ if( ! class_exists('wp_ulike_deactivator') ){
110
+ require_once WP_ULIKE_INC_DIR . '/classes/class-wp-ulike-deactivator.php';
111
+ }
112
+ // Init deactivator class
113
+ wp_ulike_deactivator::deactivate();
114
+
115
+ // Fire action
116
+ do_action( 'wp_ulike_deactivated' );
117
+ }
118
+
119
+ /**
120
+ * Fired when a new site is activated with a WPMU environment.
121
+ *
122
+ * @param int $blog_id ID of the new blog.
123
+ */
124
+ public function activate_new_site( $blog_id ) {
125
+ if ( 1 !== did_action( 'wpmu_new_blog' ) ) {
126
+ return;
127
+ }
128
+
129
+ switch_to_blog( $blog_id );
130
+ self::single_activate();
131
+ restore_current_blog();
132
+ }
133
+
134
+ /**
135
+ * Get all blog ids of blogs in the current network that are:
136
+ * - not archived
137
+ * - not spam
138
+ * - not deleted
139
+ *
140
+ * @return array|false The blog ids, false if no matches.
141
+ */
142
+ private static function get_blog_ids() {
143
+ global $wpdb;
144
+
145
+ // get an array of blog ids
146
+ $sql = "SELECT blog_id FROM $wpdb->blogs
147
+ WHERE archived = '0' AND spam = '0'
148
+ AND deleted = '0'";
149
+
150
+ return $wpdb->get_col( $sql );
151
+ }
152
+
153
+ /**
154
+ * Return an instance of this class.
155
+ *
156
+ * @return object A single instance of this class.
157
+ */
158
+ public static function get_instance() {
159
+ // If the single instance hasn't been set, set it now.
160
+ if ( null == self::$instance ) {
161
+ self::$instance = new self;
162
+ }
163
+
164
+ return self::$instance;
165
+ }
166
+
167
+ }
168
+
169
+ endif;
170
+
171
+ wp_ulike_register_action_hook::get_instance();
includes/classes/class-wp-ulike-activator.php ADDED
@@ -0,0 +1,194 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP ULike Activator
4
+ *
5
+ * @package wp-ulike
6
+ * @author TechnoWich 2021
7
+ * @link https://wpulike.com
8
+ */
9
+
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit; // Exit if accessed directly.
13
+ }
14
+
15
+ class wp_ulike_activator {
16
+
17
+ /**
18
+ * Instance of this class.
19
+ *
20
+ * @var object
21
+ */
22
+ protected static $instance = null;
23
+
24
+ /**
25
+ * Other variables
26
+ */
27
+ protected static $tables, $database;
28
+
29
+ public function __construct(){
30
+ global $wpdb;
31
+
32
+ self::$database = $wpdb;
33
+ self::$tables = array(
34
+ 'posts' => self::$database->prefix . "ulike",
35
+ 'comments' => self::$database->prefix . "ulike_comments",
36
+ 'activities' => self::$database->prefix . "ulike_activities",
37
+ 'forums' => self::$database->prefix . "ulike_forums",
38
+ 'meta' => self::$database->prefix . "ulike_meta"
39
+ );
40
+ }
41
+
42
+
43
+ public static function activate() {
44
+ self::install_tables();
45
+ }
46
+
47
+ public static function install_tables(){
48
+
49
+ $max_index_length = 191;
50
+ $charset_collate = '';
51
+
52
+ if ( ! empty( $wpdb->charset ) ) {
53
+ $charset_collate = "DEFAULT CHARACTER SET " . self::$database->charset;
54
+ }
55
+ if ( ! empty( self::$database->collate ) ) {
56
+ $charset_collate .= " COLLATE " . self::$database->collate;
57
+ }
58
+
59
+ if( ! function_exists('maybe_create_table') ){
60
+ // Add one library admin function for next function
61
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
62
+ }
63
+
64
+ // Extract array to variables
65
+ extract( self::$tables );
66
+
67
+ // Posts table
68
+ maybe_create_table( $posts, "CREATE TABLE IF NOT EXISTS `{$posts}` (
69
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
70
+ `post_id` bigint(20) NOT NULL,
71
+ `date_time` datetime NOT NULL,
72
+ `ip` varchar(100) NOT NULL,
73
+ `user_id` varchar(100) NOT NULL,
74
+ `status` varchar(30) NOT NULL,
75
+ PRIMARY KEY (`id`),
76
+ KEY `post_id` (`post_id`),
77
+ KEY `date_time` (`date_time`),
78
+ KEY `user_id` (`user_id`),
79
+ KEY `status` (`status`)
80
+ ) $charset_collate AUTO_INCREMENT=1;" );
81
+
82
+ // Comments table
83
+ maybe_create_table( $comments, "CREATE TABLE IF NOT EXISTS `{$comments}` (
84
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
85
+ `comment_id` bigint(20) NOT NULL,
86
+ `date_time` datetime NOT NULL,
87
+ `ip` varchar(100) NOT NULL,
88
+ `user_id` varchar(100) NOT NULL,
89
+ `status` varchar(30) NOT NULL,
90
+ PRIMARY KEY (`id`),
91
+ KEY `comment_id` (`comment_id`),
92
+ KEY `date_time` (`date_time`),
93
+ KEY `user_id` (`user_id`),
94
+ KEY `status` (`status`)
95
+ ) $charset_collate AUTO_INCREMENT=1;" );
96
+
97
+ // Activities table
98
+ maybe_create_table( $activities, "CREATE TABLE IF NOT EXISTS `{$activities}` (
99
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
100
+ `activity_id` bigint(20) NOT NULL,
101
+ `date_time` datetime NOT NULL,
102
+ `ip` varchar(100) NOT NULL,
103
+ `user_id` varchar(100) NOT NULL,
104
+ `status` varchar(30) NOT NULL,
105
+ PRIMARY KEY (`id`),
106
+ KEY `activity_id` (`activity_id`),
107
+ KEY `date_time` (`date_time`),
108
+ KEY `user_id` (`user_id`),
109
+ KEY `status` (`status`)
110
+ ) $charset_collate AUTO_INCREMENT=1;" );
111
+
112
+ // Forums table
113
+ maybe_create_table( $forums, "CREATE TABLE IF NOT EXISTS `{$forums}` (
114
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
115
+ `topic_id` bigint(20) NOT NULL,
116
+ `date_time` datetime NOT NULL,
117
+ `ip` varchar(100) NOT NULL,
118
+ `user_id` varchar(100) NOT NULL,
119
+ `status` varchar(30) NOT NULL,
120
+ PRIMARY KEY (`id`),
121
+ KEY `topic_id` (`topic_id`),
122
+ KEY `date_time` (`date_time`),
123
+ KEY `user_id` (`user_id`),
124
+ KEY `status` (`status`)
125
+ ) $charset_collate AUTO_INCREMENT=1;" );
126
+
127
+ // Meta values table
128
+ maybe_create_table( $meta, "CREATE TABLE IF NOT EXISTS `{$meta}` (
129
+ `meta_id` bigint(20) unsigned NOT NULL auto_increment,
130
+ `item_id` bigint(20) unsigned NOT NULL default '0',
131
+ `meta_group` varchar(100) default NULL,
132
+ `meta_key` varchar(255) default NULL,
133
+ `meta_value` longtext,
134
+ PRIMARY KEY (`meta_id`),
135
+ KEY `item_id` (`item_id`),
136
+ KEY `meta_group` (`meta_group`),
137
+ KEY `meta_key` (`meta_key`($max_index_length))
138
+ ) $charset_collate AUTO_INCREMENT=1;" );
139
+
140
+ }
141
+
142
+ public static function upgrade_0(){
143
+ // Extract array to variables
144
+ extract( self::$tables );
145
+
146
+ // Upgrade Tables
147
+ if ( version_compare( get_option( 'wp_ulike_dbVersion', '1.6' ), WP_ULIKE_DB_VERSION, '<' ) ) {
148
+ // Posts ugrades
149
+ self::$database->query( "
150
+ ALTER TABLE $posts
151
+ ADD INDEX( `post_id`, `date_time`, `user_id`, `status`),
152
+ CHANGE `user_id` `user_id` VARCHAR(100) NOT NULL,
153
+ CHANGE `ip` `ip` VARCHAR(100) NOT NULL;
154
+ " );
155
+ // Comments ugrades
156
+ self::$database->query( "
157
+ ALTER TABLE $comments
158
+ ADD INDEX( `comment_id`, `date_time`, `user_id`, `status`),
159
+ CHANGE `user_id` `user_id` VARCHAR(100) NOT NULL,
160
+ CHANGE `ip` `ip` VARCHAR(100) NOT NULL;
161
+ " );
162
+ // BuddyPress ugrades
163
+ self::$database->query( "
164
+ ALTER TABLE $activities
165
+ ADD INDEX( `activity_id`, `date_time`, `user_id`, `status`),
166
+ CHANGE `user_id` `user_id` VARCHAR(100) NOT NULL,
167
+ CHANGE `ip` `ip` VARCHAR(100) NOT NULL;
168
+ " );
169
+ // bbPress upgrades
170
+ self::$database->query( "
171
+ ALTER TABLE $forums
172
+ ADD INDEX( `topic_id`, `date_time`, `user_id`, `status`),
173
+ CHANGE `user_id` `user_id` VARCHAR(100) NOT NULL,
174
+ CHANGE `ip` `ip` VARCHAR(100) NOT NULL;
175
+ " );
176
+ // Update db version
177
+ update_option( 'wp_ulike_dbVersion', WP_ULIKE_DB_VERSION );
178
+ }
179
+ }
180
+
181
+ /**
182
+ * Return an instance of this class.
183
+ *
184
+ * @return object A single instance of this class.
185
+ */
186
+ public static function get_instance() {
187
+ // If the single instance hasn't been set, set it now.
188
+ if ( null == self::$instance ) {
189
+ self::$instance = new self;
190
+ }
191
+
192
+ return self::$instance;
193
+ }
194
+ }
{inc → includes}/classes/class-wp-ulike-ajax-listener-base.php RENAMED
@@ -1,4 +1,16 @@
1
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  /**
4
  * Base AJAX class
1
  <?php
2
+ /**
3
+ * WP ULike AJAX Listener
4
+ *
5
+ * @package wp-ulike
6
+ * @author TechnoWich 2021
7
+ * @link https://wpulike.com
8
+ */
9
+
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit; // Exit if accessed directly.
13
+ }
14
 
15
  /**
16
  * Base AJAX class
{inc → includes}/classes/class-wp-ulike-cta-listener.php RENAMED
@@ -1,4 +1,16 @@
1
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  final class wp_ulike_cta_listener extends wp_ulike_ajax_listener_base {
4
 
@@ -159,9 +171,9 @@ final class wp_ulike_cta_listener extends wp_ulike_ajax_listener_base {
159
  */
160
  private function validates(){
161
  // Return false when ID not exist
162
- if( empty( $this->data['id'] ) ) return false;
163
  // Return false when nonce invalid
164
- if( ! wp_verify_nonce( $this->data['nonce'], $this->data['type'] . $this->data['id'] ) && wp_ulike_is_cache_exist() ) return false;
165
 
166
  return true;
167
  }
1
  <?php
2
+ /**
3
+ * WP ULike CTA Listener
4
+ *
5
+ * @package wp-ulike
6
+ * @author TechnoWich 2021
7
+ * @link https://wpulike.com
8
+ */
9
+
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit; // Exit if accessed directly.
13
+ }
14
 
15
  final class wp_ulike_cta_listener extends wp_ulike_ajax_listener_base {
16
 
171
  */
172
  private function validates(){
173
  // Return false when ID not exist
174
+ if( empty( $this->data['id'] ) || empty( $this->data['type'] ) ) return false;
175
  // Return false when nonce invalid
176
+ if( ! $this->user && ! wp_verify_nonce( $this->data['nonce'], $this->data['type'] . $this->data['id'] ) && ! wp_ulike_is_cache_exist() ) return false;
177
 
178
  return true;
179
  }
{inc → includes}/classes/class-wp-ulike-cta-process.php RENAMED
@@ -7,9 +7,9 @@
7
  * @link https://wpulike.com
8
  */
9
 
10
- // no direct access allowed
11
- if ( ! defined('ABSPATH') ) {
12
- die();
13
  }
14
 
15
  if ( ! class_exists( 'wp_ulike_cta_process' ) ) {
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit; // Exit if accessed directly.
13
  }
14
 
15
  if ( ! class_exists( 'wp_ulike_cta_process' ) ) {
{inc → includes}/classes/class-wp-ulike-cta-template.php RENAMED
@@ -7,9 +7,9 @@
7
  * @link https://wpulike.com
8
  */
9
 
10
- // no direct access allowed
11
- if ( ! defined('ABSPATH') ) {
12
- die();
13
  }
14
 
15
  if ( ! class_exists( 'wp_ulike_cta_template' ) ) {
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit; // Exit if accessed directly.
13
  }
14
 
15
  if ( ! class_exists( 'wp_ulike_cta_template' ) ) {
{inc → includes}/classes/class-wp-ulike-customizer.php RENAMED
@@ -7,9 +7,9 @@
7
  * @link https://wpulike.com
8
  */
9
 
10
- // no direct access allowed
11
- if ( ! defined('ABSPATH') ) {
12
- die();
13
  }
14
 
15
  if ( ! class_exists( 'wp_ulike_customizer' ) ) {
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit; // Exit if accessed directly.
13
  }
14
 
15
  if ( ! class_exists( 'wp_ulike_customizer' ) ) {
includes/classes/class-wp-ulike-deactivator.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP ULike Deactivator
4
+ *
5
+ * @package wp-ulike
6
+ * @author TechnoWich 2021
7
+ * @link https://wpulike.com
8
+ */
9
+
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit; // Exit if accessed directly.
13
+ }
14
+
15
+ class wp_ulike_deactivator {
16
+
17
+ public static function deactivate() {
18
+
19
+ }
20
+
21
+ }
{inc → includes}/classes/class-wp-ulike-entities-process.php RENAMED
@@ -7,9 +7,9 @@
7
  * @link https://wpulike.com
8
  */
9
 
10
- // no direct access allowed
11
- if ( ! defined('ABSPATH') ) {
12
- die();
13
  }
14
 
15
  if ( ! class_exists( 'wp_ulike_entities_process' ) ) {
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit; // Exit if accessed directly.
13
  }
14
 
15
  if ( ! class_exists( 'wp_ulike_entities_process' ) ) {
{inc → includes}/classes/class-wp-ulike-frontend-assets.php RENAMED
@@ -7,9 +7,9 @@
7
  * @link https://wpulike.com
8
  */
9
 
10
- // no direct access allowed
11
- if ( ! defined('ABSPATH') ) {
12
- die();
13
  }
14
 
15
  if ( ! class_exists( 'wp_ulike_frontend_assets' ) ) {
@@ -24,6 +24,11 @@ if ( ! class_exists( 'wp_ulike_frontend_assets' ) ) {
24
  * __construct
25
  */
26
  function __construct() {
 
 
 
 
 
27
  // If user has been disabled this page in options, then return.
28
  if( ! is_wp_ulike( wp_ulike_get_option( 'disable_plugin_files' ), array(), true ) ) {
29
  return;
@@ -31,8 +36,7 @@ if ( ! class_exists( 'wp_ulike_frontend_assets' ) ) {
31
  // general assets
32
  $this->load_styles();
33
  $this->load_scripts();
34
- }
35
-
36
 
37
  /**
38
  * Styles for admin
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit; // Exit if accessed directly.
13
  }
14
 
15
  if ( ! class_exists( 'wp_ulike_frontend_assets' ) ) {
24
  * __construct
25
  */
26
  function __construct() {
27
+ // general assets
28
+ add_action( 'wp_enqueue_scripts', array( $this, 'enqueue' ) );
29
+ }
30
+
31
+ public function enqueue(){
32
  // If user has been disabled this page in options, then return.
33
  if( ! is_wp_ulike( wp_ulike_get_option( 'disable_plugin_files' ), array(), true ) ) {
34
  return;
36
  // general assets
37
  $this->load_styles();
38
  $this->load_scripts();
39
+ }
 
40
 
41
  /**
42
  * Styles for admin
{inc → includes}/classes/class-wp-ulike-mycred.php RENAMED
@@ -7,9 +7,9 @@
7
  * @link https://wpulike.com
8
  */
9
 
10
- // no direct access allowed
11
- if ( ! defined('ABSPATH') ) {
12
- die();
13
  }
14
 
15
  if ( class_exists( 'myCRED_Hook' ) ) :
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit; // Exit if accessed directly.
13
  }
14
 
15
  if ( class_exists( 'myCRED_Hook' ) ) :
{inc → includes}/classes/class-wp-ulike-setting-repo.php RENAMED
@@ -1,5 +1,10 @@
1
  <?php
2
 
 
 
 
 
 
3
  class wp_ulike_setting_repo {
4
 
5
  protected static function getOption( $key, $default = NULL ){
1
  <?php
2
 
3
+ // If this file is called directly, abort.
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+ exit; // Exit if accessed directly.
6
+ }
7
+
8
  class wp_ulike_setting_repo {
9
 
10
  protected static function getOption( $key, $default = NULL ){
{inc → includes}/classes/class-wp-ulike-setting-type.php RENAMED
@@ -1,5 +1,10 @@
1
  <?php
2
 
 
 
 
 
 
3
  class wp_ulike_setting_type {
4
 
5
  protected $typeSettings;
1
  <?php
2
 
3
+ // If this file is called directly, abort.
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+ exit; // Exit if accessed directly.
6
+ }
7
+
8
  class wp_ulike_setting_type {
9
 
10
  protected $typeSettings;
{inc → includes}/classes/class-wp-ulike-voters-listener.php RENAMED
@@ -1,5 +1,10 @@
1
  <?php
2
 
 
 
 
 
 
3
  final class wp_ulike_voters_listener extends wp_ulike_ajax_listener_base {
4
 
5
  public function __construct(){
@@ -86,8 +91,6 @@ final class wp_ulike_voters_listener extends wp_ulike_ajax_listener_base {
86
  if( wp_ulike_setting_repo::restrictLikersBox( $this->settings_type->getType() ) && ! $this->user ) return false;
87
  // Return false display is off
88
  if( ! $this->data['displayLikers'] ) return false;
89
- // Return false when nonce invalid
90
- if( ! wp_verify_nonce( $this->data['nonce'], $this->data['type'] . $this->data['id'] ) && wp_ulike_is_cache_exist() ) return false;
91
 
92
  return true;
93
  }
1
  <?php
2
 
3
+ // If this file is called directly, abort.
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+ exit; // Exit if accessed directly.
6
+ }
7
+
8
  final class wp_ulike_voters_listener extends wp_ulike_ajax_listener_base {
9
 
10
  public function __construct(){
91
  if( wp_ulike_setting_repo::restrictLikersBox( $this->settings_type->getType() ) && ! $this->user ) return false;
92
  // Return false display is off
93
  if( ! $this->data['displayLikers'] ) return false;
 
 
94
 
95
  return true;
96
  }
{inc → includes}/classes/class-wp-ulike.php RENAMED
@@ -7,9 +7,9 @@
7
  * @link https://wpulike.com
8
  */
9
 
10
- // no direct access allowed
11
- if ( ! defined('ABSPATH') ) {
12
- die();
13
  }
14
 
15
  if ( ! class_exists( 'wp_ulike' ) ) {
7
  * @link https://wpulike.com
8
  */
9
 
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit; // Exit if accessed directly.
13
  }
14
 
15
  if ( ! class_exists( 'wp_ulike' ) ) {
{inc → includes}/functions/content-types.php RENAMED
File without changes
{inc → includes}/functions/counter.php RENAMED
File without changes
{inc → includes}/functions/general.php RENAMED
File without changes
{inc → includes}/functions/meta.php RENAMED
File without changes
{inc → includes}/functions/queries.php RENAMED
File without changes
{inc → includes}/functions/templates.php RENAMED
File without changes
{inc → includes}/functions/utilities.php RENAMED
@@ -172,7 +172,7 @@ if( ! function_exists( 'wp_ulike_validate_ip' ) ){
172
  * @return boolean
173
  */
174
  function wp_ulike_validate_ip( $ip ) {
175
- return filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) === false ? false : true;
176
  }
177
  }
178
 
172
  * @return boolean
173
  */
174
  function wp_ulike_validate_ip( $ip ) {
175
+ return filter_var( $ip, FILTER_VALIDATE_IP ) === false ? false : true;
176
  }
177
  }
178
 
{inc → includes}/hooks/frontend-ajax.php RENAMED
File without changes
{inc → includes}/hooks/general.php RENAMED
File without changes
{inc → includes}/hooks/shortcodes.php RENAMED
File without changes
{inc → includes}/hooks/third-party.php RENAMED
@@ -56,7 +56,6 @@ if( ! function_exists( 'wp_ulike_put_buddypress' ) ){
56
  add_action( 'bp_activity_entry_content', 'wp_ulike_put_buddypress', 15 );
57
  }
58
 
59
-
60
  if( ! function_exists( 'wp_ulike_buddypress_activity_content_ajax_display' ) ){
61
  /**
62
  * BuddyPress activity content display for ajax load more
56
  add_action( 'bp_activity_entry_content', 'wp_ulike_put_buddypress', 15 );
57
  }
58
 
 
59
  if( ! function_exists( 'wp_ulike_buddypress_activity_content_ajax_display' ) ){
60
  /**
61
  * BuddyPress activity content display for ajax load more
{inc → includes}/index.php RENAMED
File without changes
includes/plugin.php ADDED
@@ -0,0 +1,293 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP ULIKE BASE CLASS
4
+ *
5
+ *
6
+ * @package wp-ulike
7
+ * @author TechnoWich 2021
8
+ * @link https://wpulike.com
9
+ */
10
+
11
+ // If this file is called directly, abort.
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit; // Exit if accessed directly.
14
+ }
15
+
16
+ class WpUlikeInit {
17
+
18
+ /**
19
+ * Instance of this class.
20
+ *
21
+ * @since 3.1
22
+ *
23
+ * @var object
24
+ */
25
+ protected static $instance = null;
26
+
27
+ /**
28
+ * Initialize the plugin
29
+ *
30
+ * @since 3.1
31
+ */
32
+ private function __construct() {
33
+ // init plugin
34
+ $this->init();
35
+
36
+ // This hook is called once any activated plugins have been loaded.
37
+ add_action( 'plugins_loaded', array( $this, 'plugins_loaded' ) );
38
+
39
+ // Activate plugin when new blog is added
40
+ add_action( 'activated_plugin', array( $this, 'after_activation' ) );
41
+
42
+ $prefix = is_network_admin() ? 'network_admin_' : '';
43
+ add_filter( "{$prefix}plugin_action_links", array( $this, 'add_links' ), 10, 5 );
44
+ }
45
+
46
+ /**
47
+ * Plugins loaded hook
48
+ *
49
+ * @return void
50
+ */
51
+ public function plugins_loaded(){
52
+ // Upgrade database
53
+ if ( self::is_admin_backend() ) {
54
+ $this->maybe_upgrade_database();
55
+ }
56
+ // Load plugin text domain
57
+ $this->load_plugin_textdomain();
58
+ }
59
+
60
+ private function maybe_upgrade_database(){
61
+ $current_version = get_option( 'wp_ulike_dbVersion', '1.6' );
62
+ // Check database upgrade if needed
63
+ if ( version_compare( $current_version, '2.1', '<' ) ) {
64
+ wp_ulike_activator::get_instance()::upgrade_0();
65
+ }
66
+ }
67
+
68
+ /**
69
+ * Init the plugin when WordPress Initialises.
70
+ *
71
+ * @return void
72
+ */
73
+ public function init(){
74
+ // Define constant values
75
+ $this->define_constants();
76
+
77
+ // Include Files
78
+ $this->includes();
79
+
80
+ // Loaded action
81
+ do_action( 'wp_ulike_loaded' );
82
+ }
83
+
84
+ /**
85
+ * Define constants
86
+ *
87
+ * @return void
88
+ */
89
+ private function define_constants(){
90
+ // a custom directory in uploads directory for storing custom files. Default uploads/{TWT_DOMAIN}
91
+ $uploads = wp_get_upload_dir();
92
+ define( 'WP_ULIKE_CUSTOM_DIR' , $uploads['basedir'] . '/' . WP_ULIKE_SLUG );
93
+ }
94
+
95
+ /**
96
+ * Add admin links
97
+ *
98
+ * @param array $actions
99
+ * @param string $plugin_file
100
+ * @return array
101
+ */
102
+ public function add_links( $actions, $plugin_file ) {
103
+
104
+ if ( $plugin_file === WP_ULIKE_BASENAME ) {
105
+ $settings = array('settings' => '<a href="admin.php?page=wp-ulike-settings">' . __('Settings', WP_ULIKE_SLUG) . '</a>');
106
+ $stats = array('stats' => '<a href="admin.php?page=wp-ulike-statistics">' . __('Statistics', WP_ULIKE_SLUG) . '</a>');
107
+ $about = array('about' => '<a href="admin.php?page=wp-ulike-about">' . __('About', WP_ULIKE_SLUG) . '</a>');
108
+ // Merge on actions array
109
+ $actions = array_merge( $about, $actions );
110
+ $actions = array_merge( $stats, $actions );
111
+ $actions = array_merge( $settings, $actions );
112
+ }
113
+
114
+ return $actions;
115
+ }
116
+
117
+
118
+ /**
119
+ * Auto-load classes on demand to reduce memory consumption
120
+ *
121
+ * @param mixed $class
122
+ * @return void
123
+ */
124
+ public function autoload( $class ) {
125
+ $path = null;
126
+ $class = strtolower( $class );
127
+ $file = 'class-' . str_replace( '_', '-', $class ) . '.php';
128
+
129
+ // the possible pathes containing classes
130
+ $possible_pathes = array(
131
+ WP_ULIKE_INC_DIR . '/classes/',
132
+ WP_ULIKE_ADMIN_DIR . '/classes/'
133
+ );
134
+
135
+ foreach ( $possible_pathes as $path ) {
136
+ if( is_readable( $path . $file ) ){
137
+ include_once( $path . $file );
138
+ return;
139
+ }
140
+ }
141
+ }
142
+
143
+ /**
144
+ * Include Files
145
+ *
146
+ * @return void
147
+ */
148
+ private function includes() {
149
+ // Auto-load classes on demand
150
+ if ( function_exists( "__autoload" ) ) {
151
+ spl_autoload_register( "__autoload" );
152
+ }
153
+ spl_autoload_register( array( $this, 'autoload' ) );
154
+
155
+ // load common functionalities
156
+ include_once( WP_ULIKE_INC_DIR . '/index.php' );
157
+
158
+ // Dashboard and Administrative Functionality
159
+ if ( self::is_admin_backend() ) {
160
+ // Load admin specific codes
161
+ include( WP_ULIKE_ADMIN_DIR . '/index.php' );
162
+
163
+ // Load AJAX specific codes on demand
164
+ if ( self::is_ajax() ){
165
+ include( WP_ULIKE_INC_DIR . '/hooks/frontend-ajax.php' );
166
+ include( WP_ULIKE_ADMIN_DIR . '/admin-ajax.php' );
167
+ }
168
+ }
169
+
170
+ // Load Frontend Functionality
171
+ if( self::is_frontend() ){
172
+ include( WP_ULIKE_INC_DIR . '/public/index.php' );
173
+ }
174
+ }
175
+
176
+ /**
177
+ * Is ajax
178
+ *
179
+ * @return bool
180
+ */
181
+ public static function is_ajax() {
182
+ return ( function_exists( 'wp_doing_ajax' ) && wp_doing_ajax() ) || defined( 'DOING_AJAX' );
183
+ }
184
+
185
+ /**
186
+ * Is admin
187
+ *
188
+ * @return bool
189
+ */
190
+ public static function is_admin_backend() {
191
+ return is_admin();
192
+ }
193
+
194
+ /**
195
+ * Is cron
196
+ *
197
+ * @return bool
198
+ */
199
+ public static function is_cron() {
200
+ return ( function_exists( 'wp_doing_cron' ) && wp_doing_cron() ) || defined( 'DOING_CRON' );
201
+ }
202
+
203
+ /**
204
+ * Is rest
205
+ *
206
+ * @return bool
207
+ */
208
+ public static function is_rest() {
209
+ return defined( 'REST_REQUEST' );
210
+ }
211
+
212
+ /**
213
+ * Is frontend
214
+ *
215
+ * @return bool
216
+ */
217
+ public static function is_frontend() {
218
+ return ( ! self::is_admin_backend() || ! self::is_ajax() ) && ! self::is_cron() && ! self::is_rest();
219
+ }
220
+
221
+ /**
222
+ * Get Client IP address
223
+ *
224
+ * @return String
225
+ */
226
+ public function get_ip() {
227
+ _deprecated_function( 'get_ip', '4.2.7', 'wp_ulike_get_user_ip' );
228
+ // Get user IP
229
+ return wp_ulike_get_user_ip();
230
+ }
231
+
232
+ /**
233
+ * Plugin redirect after activation
234
+ *
235
+ * @param string $plugin
236
+ * @return void
237
+ */
238
+ public function after_activation( $plugin ) {
239
+ if( $plugin == WP_ULIKE_BASENAME ) {
240
+ // Redirect to the about page
241
+ if( wp_safe_redirect( admin_url( 'admin.php?page=wp-ulike-about' ) ) ) exit;
242
+ }
243
+ }
244
+
245
+ /**
246
+ * Load the plugin text domain for translation.
247
+ *
248
+ * @return void
249
+ */
250
+ public function load_plugin_textdomain() {
251
+ // Set filter for language directory
252
+ $lang_dir = WP_ULIKE_DIR . 'languages/';
253
+ $lang_dir = apply_filters( 'wp_ulike_languages_directory', $lang_dir );
254
+
255
+ // Traditional WordPress plugin locale filter
256
+ $locale = apply_filters( 'plugin_locale', get_locale(), WP_ULIKE_SLUG );
257
+ $mofile = sprintf( '%1$s-%2$s.mo', WP_ULIKE_SLUG, $locale );
258
+
259
+ // Setup paths to current locale file
260
+ $mofile_local = $lang_dir . $mofile;
261
+ $mofile_global = WP_LANG_DIR . '/plugins/' . WP_ULIKE_SLUG . '/' . $mofile;
262
+
263
+ if( file_exists( $mofile_global ) ) {
264
+ // Look in global /wp-content/languages/plugins/wp-ulike/ folder
265
+ load_textdomain( WP_ULIKE_SLUG, $mofile_global );
266
+ } elseif( file_exists( $mofile_local ) ) {
267
+ // Look in local /wp-content/plugins/wp-ulike/languages/ folder
268
+ load_textdomain( WP_ULIKE_SLUG, $mofile_local );
269
+ } else {
270
+ // Load the default language files
271
+ load_plugin_textdomain( WP_ULIKE_SLUG, false, $lang_dir );
272
+ }
273
+ }
274
+
275
+ /**
276
+ * Return an instance of this class.
277
+ *
278
+ * @since 3.1
279
+ *
280
+ * @return object A single instance of this class.
281
+ */
282
+ public static function get_instance() {
283
+ // If the single instance hasn't been set, set it now.
284
+ if ( null == self::$instance ) {
285
+ self::$instance = new self;
286
+ }
287
+
288
+ return self::$instance;
289
+ }
290
+
291
+ }
292
+
293
+ WpUlikeInit::get_instance();
includes/public/index.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Include Public Files
4
+ *
5
+ * @package wp-ulike
6
+ * @author TechnoWich 2021
7
+ * @link https://wpulike.com
8
+ */
9
+
10
+ // If this file is called directly, abort.
11
+ if ( ! defined( 'WPINC' ) ) {
12
+ die('No Naughty Business Please !');
13
+ }
14
+
15
+ new wp_ulike_frontend_assets();
languages/wp-ulike-ar.po CHANGED
@@ -4,7 +4,7 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: Plugins - WP ULike - Stable (latest release)\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/plugins/wp-ulike/\n"
7
- "POT-Creation-Date: 2021-01-09 00:39:07+00:00\n"
8
  "PO-Revision-Date: 2017-01-20 23:26:42+0000\n"
9
  "Language: ar\n"
10
  "MIME-Version: 1.0\n"
@@ -34,11 +34,11 @@ msgid "It's Ok!"
34
  msgstr "لا بأس!"
35
 
36
  #: admin/admin-functions.php:240
37
- #: admin/classes/class-wp-ulike-admin-panel.php:757
38
  #: build/wp-ulike/admin/admin-functions.php:243
39
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:760
40
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:152
41
- #: inc/classes/class-wp-ulike-customizer.php:149
42
  msgid "Button"
43
  msgstr ""
44
 
@@ -99,15 +99,17 @@ msgstr ""
99
  #: admin/admin-hooks.php:170 admin/admin-hooks.php:194
100
  #: admin/admin-hooks.php:217 admin/classes/class-wp-ulike-admin-panel.php:383
101
  #: admin/classes/class-wp-ulike-admin-panel.php:413
102
- #: admin/classes/class-wp-ulike-admin-panel.php:531
103
  #: admin/classes/class-wp-ulike-admin-panel.php:560
 
104
  #: build/wp-ulike/admin/admin-hooks.php:173
105
  #: build/wp-ulike/admin/admin-hooks.php:197
106
  #: build/wp-ulike/admin/admin-hooks.php:220
107
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:386
108
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:416
109
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:534
110
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:563
 
111
  msgid "Get More Information"
112
  msgstr "احصل على المزيد من المعلومات"
113
 
@@ -151,25 +153,25 @@ msgstr "استعمل النسخة الإحترافية"
151
 
152
  #: admin/admin-hooks.php:485 admin/classes/class-wp-ulike-admin-panel.php:125
153
  #: admin/classes/class-wp-ulike-admin-panel.php:142
154
- #: admin/classes/class-wp-ulike-admin-panel.php:611
155
- #: admin/classes/class-wp-ulike-admin-panel.php:641
156
  #: admin/classes/class-wp-ulike-widget.php:355
157
  #: build/wp-ulike/admin/admin-hooks.php:488
158
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:128
159
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:145
160
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:614
161
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:644
162
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:358
163
  msgid "Like"
164
  msgstr "اعجاب"
165
 
166
- #: admin/classes/class-wp-ulike-admin-assets.php:119
167
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:107
168
  msgid "Are you sure to remove this item?!"
169
  msgstr "هل أنت متأكد لإزالة هذا البند ؟!"
170
 
171
- #: admin/classes/class-wp-ulike-admin-assets.php:120
172
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:108
173
  msgid "No information was found in this database!"
174
  msgstr "لا من نجد معلومات في قاعدة البيانات هذه!"
175
 
@@ -205,13 +207,13 @@ msgstr "سجلات مواضيع الإعجاب"
205
  #: admin/includes/templates/statistics.php:124
206
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:62
207
  #: build/wp-ulike/admin/includes/templates/statistics.php:127
208
- #: build/wp-ulike/wp-ulike.php:169 wp-ulike.php:166
209
  msgid "Statistics"
210
  msgstr "إحصائيات"
211
 
212
  #: admin/classes/class-wp-ulike-admin-pages.php:67
213
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:70
214
- #: build/wp-ulike/wp-ulike.php:170 wp-ulike.php:167
215
  msgid "About"
216
  msgstr ""
217
 
@@ -238,7 +240,7 @@ msgstr "السجلات"
238
 
239
  #: admin/classes/class-wp-ulike-admin-panel.php:43
240
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:46
241
- #: build/wp-ulike/wp-ulike.php:168 wp-ulike.php:165
242
  msgid "Settings"
243
  msgstr "الإعدادات"
244
 
@@ -280,12 +282,12 @@ msgstr ""
280
 
281
  #: admin/classes/class-wp-ulike-admin-panel.php:131
282
  #: admin/classes/class-wp-ulike-admin-panel.php:147
283
- #: admin/classes/class-wp-ulike-admin-panel.php:622
284
- #: admin/classes/class-wp-ulike-admin-panel.php:653
285
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:134
286
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:150
287
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:625
288
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:656
289
  msgid "Unlike"
290
  msgstr "الغاء اعجابي"
291
 
@@ -389,53 +391,53 @@ msgid "With this option, you can disable all plugin assets on these pages."
389
  msgstr "بإستخدام هذا الخيار، بإمكانك تعطيل جميع مكونات الإضافة في هذه الصفحات."
390
 
391
  #: admin/classes/class-wp-ulike-admin-panel.php:201
392
- #: admin/classes/class-wp-ulike-admin-panel.php:694
393
  #: admin/includes/templates/about.php:46
394
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:204
395
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:697
396
  #: build/wp-ulike/admin/includes/templates/about.php:49
397
  msgid "Home"
398
  msgstr "الرئیسیة"
399
 
400
  #: admin/classes/class-wp-ulike-admin-panel.php:202
401
- #: admin/classes/class-wp-ulike-admin-panel.php:695
402
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:205
403
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:698
404
  msgid "Singular"
405
  msgstr "التفرد"
406
 
407
  #: admin/classes/class-wp-ulike-admin-panel.php:203
408
- #: admin/classes/class-wp-ulike-admin-panel.php:696
409
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:206
410
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:699
411
  msgid "Archives"
412
  msgstr "أرشيف"
413
 
414
  #: admin/classes/class-wp-ulike-admin-panel.php:204
415
- #: admin/classes/class-wp-ulike-admin-panel.php:697
416
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:207
417
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:700
418
  msgid "Categories"
419
  msgstr "تصنیفات"
420
 
421
  #: admin/classes/class-wp-ulike-admin-panel.php:205
422
- #: admin/classes/class-wp-ulike-admin-panel.php:698
423
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:208
424
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:701
425
  msgid "Search Results"
426
  msgstr "نتائج البحث"
427
 
428
  #: admin/classes/class-wp-ulike-admin-panel.php:206
429
- #: admin/classes/class-wp-ulike-admin-panel.php:699
430
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:209
431
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:702
432
  msgid "Tags"
433
  msgstr "الوسوم"
434
 
435
  #: admin/classes/class-wp-ulike-admin-panel.php:207
436
- #: admin/classes/class-wp-ulike-admin-panel.php:700
437
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:210
438
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:703
439
  msgid "Author Page"
440
  msgstr "صفحة المبرمج"
441
 
@@ -502,12 +504,12 @@ msgstr "النص لنشاطات المنشور :"
502
 
503
  #: admin/classes/class-wp-ulike-admin-panel.php:268
504
  #: admin/classes/class-wp-ulike-admin-panel.php:280
505
- #: admin/classes/class-wp-ulike-admin-panel.php:765
506
- #: admin/classes/class-wp-ulike-admin-panel.php:821
507
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:271
508
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:283
509
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:768
510
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:824
511
  msgid "Allowed Variables:"
512
  msgstr "المتغیرات المسموحة :"
513
 
@@ -633,176 +635,196 @@ msgid ""
633
  "with just a few simple clicks."
634
  msgstr ""
635
 
636
- #: admin/classes/class-wp-ulike-admin-panel.php:433
637
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
638
  msgid "Translations"
639
  msgstr "الترجمة"
640
 
641
- #: admin/classes/class-wp-ulike-admin-panel.php:442
642
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:445
643
  #, fuzzy
644
  msgid "Strings"
645
  msgstr "الإعدادات"
646
 
647
- #: admin/classes/class-wp-ulike-admin-panel.php:448
648
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:451
649
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:30
650
- #: inc/classes/class-wp-ulike-setting-repo.php:30
651
  msgid "You have already registered a vote."
652
  msgstr ""
653
 
654
- #: admin/classes/class-wp-ulike-admin-panel.php:449
655
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:452
656
  msgid "Already Voted Message"
657
  msgstr "إشعار تم التصويت بالفعل"
658
 
659
- #: admin/classes/class-wp-ulike-admin-panel.php:454
660
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:457
661
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:21
662
- #: inc/classes/class-wp-ulike-setting-repo.php:21
663
  msgid "You Should Login To Submit Your Like"
664
  msgstr "عليك تسجيل الدخول لاعمال اعجاب"
665
 
666
- #: admin/classes/class-wp-ulike-admin-panel.php:455
667
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:458
668
  msgid "Login Required Message"
669
  msgstr "رسالة تسجيل الدخول مطلوب"
670
 
671
- #: admin/classes/class-wp-ulike-admin-panel.php:460
672
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:463
673
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:39
674
- #: inc/classes/class-wp-ulike-setting-repo.php:39
675
  msgid "Thanks! You Liked This."
676
  msgstr "شكراً! لقد قمت بالإعجاب بهذا."
677
 
678
- #: admin/classes/class-wp-ulike-admin-panel.php:461
679
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:464
680
  msgid "Liked Notice Message"
681
  msgstr ""
682
 
683
- #: admin/classes/class-wp-ulike-admin-panel.php:466
684
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:469
685
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:48
686
- #: inc/classes/class-wp-ulike-setting-repo.php:48
687
  msgid "Sorry! You unliked this."
688
  msgstr "نأسف لعدم إعجابك بهذا!"
689
 
690
- #: admin/classes/class-wp-ulike-admin-panel.php:467
691
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:470
692
  msgid "Unliked Notice Message"
693
  msgstr ""
694
 
695
- #: admin/classes/class-wp-ulike-admin-panel.php:472
696
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:475
697
  #: build/wp-ulike/inc/functions/templates.php:73
698
  #: build/wp-ulike/inc/functions/templates.php:125
699
  #: build/wp-ulike/inc/functions/templates.php:177
700
  #: build/wp-ulike/inc/functions/templates.php:227
701
- #: inc/functions/templates.php:70 inc/functions/templates.php:122
702
- #: inc/functions/templates.php:174 inc/functions/templates.php:224
703
  msgid "Like Button"
704
  msgstr "زر الاعجاب"
705
 
706
- #: admin/classes/class-wp-ulike-admin-panel.php:473
707
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:476
708
  msgid "Like Button Aria Label"
709
  msgstr ""
710
 
711
- #: admin/classes/class-wp-ulike-admin-panel.php:483
712
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:486
713
  msgid "Developer Tools"
714
  msgstr ""
715
 
716
- #: admin/classes/class-wp-ulike-admin-panel.php:489
717
  #: admin/settings/fields/typography/typography.php:295
718
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:492
719
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:295
720
  msgid "Custom Style"
721
  msgstr "تخصیص الاسلوب ( Style) : "
722
 
723
- #: admin/classes/class-wp-ulike-admin-panel.php:503
724
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:506
725
  msgid "Custom Spinner"
726
  msgstr "سبينر مخصص"
727
 
728
- #: admin/classes/class-wp-ulike-admin-panel.php:510
729
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:513
730
  msgid "Enable Inline Custom CSS"
731
  msgstr ""
732
 
733
- #: admin/classes/class-wp-ulike-admin-panel.php:511
734
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:514
735
  msgid ""
736
  "If you don't want to use \"custom.css\" file for any reason, by activating "
737
  "this option, the styles will be added to the page as inline."
738
  msgstr ""
739
 
740
- #: admin/classes/class-wp-ulike-admin-panel.php:518
741
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:521
742
  msgid "REST API"
743
  msgstr ""
744
 
745
- #: admin/classes/class-wp-ulike-admin-panel.php:525
746
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:528
747
  msgid "How to Get Started with WP ULike REST API?"
748
  msgstr ""
749
 
750
- #: admin/classes/class-wp-ulike-admin-panel.php:526
751
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:529
752
  msgid ""
753
  "Have you ever tried to get data from online sources like WP ULike logs and "
754
  "use them in your Application or website? the solution is Rest API!"
755
  msgstr ""
756
 
757
- #: admin/classes/class-wp-ulike-admin-panel.php:547
758
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:550
759
  msgid "Optimization"
760
  msgstr ""
761
 
762
- #: admin/classes/class-wp-ulike-admin-panel.php:554
763
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:557
764
  msgid "How to Optimize or Repair WP ULike Database Tables?"
765
  msgstr ""
766
 
767
- #: admin/classes/class-wp-ulike-admin-panel.php:555
768
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:558
769
  msgid ""
770
  "Have you ever optimized your WP ULike database? Optimizing your database "
771
  "cleans up unwanted data which reduces database size and improves performance."
772
  msgstr ""
773
 
774
- #: admin/classes/class-wp-ulike-admin-panel.php:587
775
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:590
776
  msgid "Select a Template"
777
  msgstr "اختر قالب"
778
 
779
- #: admin/classes/class-wp-ulike-admin-panel.php:588
780
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:591
781
  msgid "Display online preview"
782
  msgstr ""
783
 
784
- #: admin/classes/class-wp-ulike-admin-panel.php:588
785
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:591
786
  msgid "Here"
787
  msgstr ""
788
 
789
- #: admin/classes/class-wp-ulike-admin-panel.php:596
790
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:599
791
  msgid "Button Type"
792
  msgstr "نوع الزر"
793
 
794
- #: admin/classes/class-wp-ulike-admin-panel.php:599
795
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:602
796
  msgid "Image"
797
  msgstr "الصورة"
798
 
799
- #: admin/classes/class-wp-ulike-admin-panel.php:600
800
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:603
801
  msgid "Text"
802
  msgstr "نص"
803
 
804
- #: admin/classes/class-wp-ulike-admin-panel.php:607
805
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:610
806
  msgid ""
807
  "Enter your custom button text in the fields above. You can also use HTML "
808
  "tags in these fields."
@@ -810,30 +832,30 @@ msgstr ""
810
  "ادخل نص المخصص للزر بالحقل أعلاه. وكذلك بإمكانك استخدام وسوم HTML في هذه "
811
  "الحقول."
812
 
813
- #: admin/classes/class-wp-ulike-admin-panel.php:608
814
- #: admin/classes/class-wp-ulike-admin-panel.php:616
815
- #: admin/classes/class-wp-ulike-admin-panel.php:627
816
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:611
817
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:619
818
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:630
819
  msgid "Button Text"
820
  msgstr "نص الزر"
821
 
822
- #: admin/classes/class-wp-ulike-admin-panel.php:638
823
- #: admin/classes/class-wp-ulike-admin-panel.php:646
824
- #: admin/classes/class-wp-ulike-admin-panel.php:658
825
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:641
826
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:649
827
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:661
828
  msgid "Button Image"
829
  msgstr "صورة الزر"
830
 
831
- #: admin/classes/class-wp-ulike-admin-panel.php:671
832
  #: admin/classes/class-wp-ulike-settings.php:65
833
  #: admin/classes/class-wp-ulike-settings.php:72
834
  #: admin/classes/class-wp-ulike-settings.php:78
835
  #: admin/classes/class-wp-ulike-settings.php:84
836
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:674
837
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:68
838
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:75
839
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:81
@@ -841,241 +863,224 @@ msgstr "صورة الزر"
841
  msgid "Automatic display"
842
  msgstr "عرض تلقائي"
843
 
844
- #: admin/classes/class-wp-ulike-admin-panel.php:676
845
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:679
846
  msgid "Button Position"
847
  msgstr "موضع الزر"
848
 
849
- #: admin/classes/class-wp-ulike-admin-panel.php:679
850
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:682
851
  msgid "Top of Content"
852
  msgstr "اعلی المحتوا"
853
 
854
- #: admin/classes/class-wp-ulike-admin-panel.php:680
855
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:683
856
  msgid "Bottom of Content"
857
  msgstr "اسفل المحتوا"
858
 
859
- #: admin/classes/class-wp-ulike-admin-panel.php:681
860
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:684
861
  msgid "Top and Bottom"
862
  msgstr "أعلى وأسفل"
863
 
864
- #: admin/classes/class-wp-ulike-admin-panel.php:688
865
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:691
866
  msgid "Automatic Display Restriction"
867
  msgstr "تقييد العرض التلقائي"
868
 
869
- #: admin/classes/class-wp-ulike-admin-panel.php:689
870
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:692
871
  msgid "With this option, you can disable automatic display on these pages."
872
  msgstr "بإستخدام هذا الخيار، بإمكانك تعطيل العرض التلقائي في هذه الصفحات."
873
 
874
- #: admin/classes/class-wp-ulike-admin-panel.php:707
875
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:710
876
  msgid "Post Types Filter"
877
  msgstr "تصفية أنواع المنشورات"
878
 
879
- #: admin/classes/class-wp-ulike-admin-panel.php:708
880
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:711
881
  msgid "Select a post type"
882
  msgstr "تحديد مقالة لنسخها"
883
 
884
- #: admin/classes/class-wp-ulike-admin-panel.php:709
885
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:712
886
  msgid "Make these post types an exception and display the button on them."
887
  msgstr "اجعل لأنواع المنشورات هذه إستثناء واعرض الزر فيها"
888
 
889
- #: admin/classes/class-wp-ulike-admin-panel.php:719
890
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:722
891
  msgid "Display Counter Value Condition"
892
  msgstr ""
893
 
894
- #: admin/classes/class-wp-ulike-admin-panel.php:722
895
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:725
896
  #, fuzzy
897
  msgid "Visible"
898
  msgstr "تم الزيارة"
899
 
900
- #: admin/classes/class-wp-ulike-admin-panel.php:723
901
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:726
902
  msgid "Hidden"
903
  msgstr ""
904
 
905
- #: admin/classes/class-wp-ulike-admin-panel.php:724
906
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:727
907
  #, fuzzy
908
  msgid "Only Logged In Users"
909
  msgstr "فقط المستخدمين المسجلين"
910
 
911
- #: admin/classes/class-wp-ulike-admin-panel.php:730
912
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:733
913
  msgid "Hide Zero Counter Box"
914
  msgstr ""
915
 
916
- #: admin/classes/class-wp-ulike-admin-panel.php:736
917
  #: admin/classes/class-wp-ulike-settings.php:58
918
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:739
919
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:61
920
  msgid "Logging Method"
921
  msgstr "طريقة تسجيل"
922
 
923
- #: admin/classes/class-wp-ulike-admin-panel.php:738
924
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:741
925
  #, fuzzy
926
  msgid "No Limit"
927
  msgstr "حدود"
928
 
929
- #: admin/classes/class-wp-ulike-admin-panel.php:739
930
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:742
931
  msgid "Cookie"
932
  msgstr ""
933
 
934
- #: admin/classes/class-wp-ulike-admin-panel.php:740
935
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:743
936
  #, fuzzy
937
  msgid "Username/IP"
938
  msgstr "اسم المستخدم : "
939
 
940
- #: admin/classes/class-wp-ulike-admin-panel.php:741
941
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:744
942
  #, fuzzy
943
  msgid "Username/IP + Cookie"
944
  msgstr "اسم المستخدم : "
945
 
946
- #: admin/classes/class-wp-ulike-admin-panel.php:744
947
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:747
948
  msgid ""
949
  "\"No Limit\": There will be no restrictions and users can submit their "
950
  "points each time they refresh the page. In this option, it will not be "
951
  "possible to resubmit reverse points (un-like/un-dislike)."
952
  msgstr ""
953
 
954
- #: admin/classes/class-wp-ulike-admin-panel.php:744
955
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:747
956
  msgid ""
957
  "\"Cookie\": By saving users' cookies, it is possible to submit points only "
958
  "once per user and in case of re-clicking, the appropriate message will be "
959
  "displayed."
960
  msgstr ""
961
 
962
- #: admin/classes/class-wp-ulike-admin-panel.php:744
963
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:747
964
  msgid ""
965
  "Username/IP: By saving the username/IP of users, It supports the reverse "
966
  "feature (un-like and un-dislike) and users can change their reactions and "
967
  "are only allowed to have a specific point type."
968
  msgstr ""
969
 
970
- #: admin/classes/class-wp-ulike-admin-panel.php:749
971
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:752
972
  msgid "Only logged in users"
973
  msgstr "فقط المستخدمين المسجلين"
974
 
975
- #: admin/classes/class-wp-ulike-admin-panel.php:754
976
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:757
977
  msgid "Display Type"
978
  msgstr "عرض النوع"
979
 
980
- #: admin/classes/class-wp-ulike-admin-panel.php:756
981
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:759
982
  msgid "Template"
983
  msgstr ""
984
 
985
- #: admin/classes/class-wp-ulike-admin-panel.php:771
986
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:774
987
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:138
988
- #: inc/classes/class-wp-ulike-setting-repo.php:138
989
  msgid "You need to login in order to like this post: "
990
  msgstr "تحتاج إلى تسجيل الدخول لتقییم هذا المنشور :"
991
 
992
- #: admin/classes/class-wp-ulike-admin-panel.php:773
993
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:776
994
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:140
995
- #: inc/classes/class-wp-ulike-setting-repo.php:140
996
  msgid "click here"
997
  msgstr "اضغط هنا انقر للدخول"
998
 
999
- #: admin/classes/class-wp-ulike-admin-panel.php:775
1000
- #: admin/classes/class-wp-ulike-admin-panel.php:820
1001
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:778
1002
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:823
1003
  msgid "Custom HTML Template"
1004
  msgstr "قالب HTML المخصص"
1005
 
1006
- #: admin/classes/class-wp-ulike-admin-panel.php:781
1007
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:784
1008
  msgid "Display Likers Box"
1009
  msgstr "عرض صندوق Likers"
1010
 
1011
- #: admin/classes/class-wp-ulike-admin-panel.php:786
1012
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:789
1013
  msgid "User List Arrange"
1014
  msgstr ""
1015
 
1016
- #: admin/classes/class-wp-ulike-admin-panel.php:789
1017
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:792
1018
  msgid "Ascending"
1019
  msgstr ""
1020
 
1021
- #: admin/classes/class-wp-ulike-admin-panel.php:790
1022
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:793
1023
  msgid "Descending"
1024
  msgstr ""
1025
 
1026
- #: admin/classes/class-wp-ulike-admin-panel.php:798
1027
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:801
1028
  msgid "Hide For Anonymous Users"
1029
  msgstr ""
1030
 
1031
- #: admin/classes/class-wp-ulike-admin-panel.php:804
1032
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:807
1033
  #, fuzzy
1034
  msgid "Likers Box Display"
1035
  msgstr "عدد من قام بالضغط على زر الإعجاب"
1036
 
1037
- #: admin/classes/class-wp-ulike-admin-panel.php:807
1038
- #: admin/settings/fields/typography/typography.php:119
1039
- #: admin/settings/fields/typography/typography.php:132
1040
- #: admin/settings/fields/typography/typography.php:145
1041
- #: admin/settings/fields/typography/typography.php:160
1042
- #: admin/settings/fields/typography/typography.php:176
1043
- #: admin/settings/fields/typography/typography.php:189
1044
- #: admin/settings/fields/typography/typography.php:203
1045
- #: admin/settings/fields/typography/typography.php:221
1046
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:810
1047
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:119
1048
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:132
1049
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:145
1050
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:160
1051
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:176
1052
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:189
1053
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:203
1054
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:221
1055
- #: build/wp-ulike/inc/functions/templates.php:26 inc/functions/templates.php:23
1056
- msgid "Default"
1057
- msgstr "افتراضي"
1058
 
1059
- #: admin/classes/class-wp-ulike-admin-panel.php:808
1060
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:811
1061
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:550
1062
- #: inc/classes/class-wp-ulike-customizer.php:547
1063
  #, fuzzy
1064
  msgid "Popover"
1065
  msgstr "غلاف"
1066
 
1067
- #: admin/classes/class-wp-ulike-admin-panel.php:834
1068
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:837
1069
  msgid "Size of Gravatars"
1070
  msgstr "مقیاس قراواتار"
1071
 
1072
- #: admin/classes/class-wp-ulike-admin-panel.php:842
1073
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:845
1074
  msgid "Likers Count"
1075
  msgstr "عدد من قام بالضغط على زر الإعجاب"
1076
 
1077
- #: admin/classes/class-wp-ulike-admin-panel.php:843
1078
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:846
1079
  msgid "The number of users to show in the users liked box"
1080
  msgstr "حد الاقصی لإعرض عدد المستخدمين فی الباکس ؟!"
1081
 
@@ -1182,14 +1187,14 @@ msgstr ""
1182
 
1183
  #: admin/classes/class-wp-ulike-settings.php:59
1184
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:62
1185
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:248
1186
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:273
1187
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:292
1188
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:311
1189
- #: inc/classes/class-wp-ulike-mycred.php:245
1190
- #: inc/classes/class-wp-ulike-mycred.php:270
1191
- #: inc/classes/class-wp-ulike-mycred.php:289
1192
- #: inc/classes/class-wp-ulike-mycred.php:308
1193
  msgid "required"
1194
  msgstr ""
1195
 
@@ -1515,7 +1520,8 @@ msgstr ""
1515
 
1516
  #: admin/classes/class-wp-ulike-widget.php:543
1517
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:546
1518
- #: build/wp-ulike/inc/functions/templates.php:32 inc/functions/templates.php:29
 
1519
  msgid "Heart"
1520
  msgstr ""
1521
 
@@ -1832,8 +1838,8 @@ msgstr ""
1832
  msgid "WP ULike Premium"
1833
  msgstr "نسخة البريميوم من WP ULike"
1834
 
1835
- #: admin/includes/templates/go-pro.php:135
1836
- #: build/wp-ulike/admin/includes/templates/go-pro.php:138
1837
  msgid ""
1838
  "Elementor is the #1 WordPress page builder. In the new version of the WP "
1839
  "ULike PRO plugin we fully support this page builder and have a variety of "
@@ -1843,8 +1849,8 @@ msgstr ""
1843
  "PRO ، قمنا بدعم بانئ الصفحات هذا بشكل كامل ولدينا مجموعة متنوعة من عناصر "
1844
  "التحكم وأدوات التحكم التي تجعل الأمر أسهل لك."
1845
 
1846
- #: admin/includes/templates/go-pro.php:135
1847
- #: build/wp-ulike/admin/includes/templates/go-pro.php:138
1848
  msgid ""
1849
  "Just drag your desired widget and drop it in your Elementor sections, "
1850
  "customize as you go and enjoy your like and dislike buttons on your contents."
@@ -1918,42 +1924,42 @@ msgstr ""
1918
  msgid "Topic Title"
1919
  msgstr "عنوان الموضوع"
1920
 
1921
- #: admin/settings/classes/admin-options.class.php:225
1922
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:225
1923
  #, fuzzy
1924
  msgid "Error while saving the changes."
1925
  msgstr "حصل خلل أثناء حفظ التغييرات."
1926
 
1927
- #: admin/settings/classes/admin-options.class.php:285
1928
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:285
1929
  msgid "Settings successfully imported."
1930
  msgstr ""
1931
 
1932
- #: admin/settings/classes/admin-options.class.php:297
1933
- #: admin/settings/classes/admin-options.class.php:313
1934
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:297
1935
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:313
1936
  #, fuzzy
1937
  msgid "Default settings restored."
1938
  msgstr "تمت إستعادة الخيارات الإفتراضية."
1939
 
1940
- #: admin/settings/classes/admin-options.class.php:384
1941
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:384
1942
  msgid "Settings saved."
1943
  msgstr "تم حفظ التغییرات"
1944
 
1945
- #: admin/settings/classes/admin-options.class.php:563
1946
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:563
1947
  msgid "You have unsaved changes, save your changes!"
1948
  msgstr ""
1949
 
1950
- #: admin/settings/classes/admin-options.class.php:565
1951
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:565
1952
  #, fuzzy
1953
  msgid "show all settings"
1954
  msgstr "عرض جميع الخيارات"
1955
 
1956
- #: admin/settings/classes/admin-options.class.php:567
1957
  #: admin/settings/fields/icon/icon.php:57 admin/settings/fields/map/map.php:23
1958
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:567
1959
  #: build/wp-ulike/admin/settings/fields/icon/icon.php:57
@@ -1962,43 +1968,43 @@ msgstr "عرض جميع الخيارات"
1962
  msgid "Search..."
1963
  msgstr "يتم البحث..."
1964
 
1965
- #: admin/settings/classes/admin-options.class.php:570
1966
- #: admin/settings/classes/admin-options.class.php:693
1967
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:570
1968
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:693
1969
  msgid "Save"
1970
  msgstr "حفظ"
1971
 
1972
- #: admin/settings/classes/admin-options.class.php:570
1973
- #: admin/settings/classes/admin-options.class.php:693
1974
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:570
1975
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:693
1976
  msgid "Saving..."
1977
  msgstr "جاري الحفظ..."
1978
 
1979
- #: admin/settings/classes/admin-options.class.php:571
1980
- #: admin/settings/classes/admin-options.class.php:694
1981
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:571
1982
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:694
1983
  msgid "Reset Section"
1984
  msgstr "إعادة تعيين القسم"
1985
 
1986
- #: admin/settings/classes/admin-options.class.php:571
1987
- #: admin/settings/classes/admin-options.class.php:694
1988
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:571
1989
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:694
1990
  msgid "Are you sure to reset this section options?"
1991
  msgstr "هل أنت متأكد من إعادة تعيين جميع الخيارات إلى الخيارات الإفتراضية؟"
1992
 
1993
- #: admin/settings/classes/admin-options.class.php:572
1994
- #: admin/settings/classes/admin-options.class.php:695
1995
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:572
1996
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:695
1997
  msgid "Reset All"
1998
  msgstr "إعادة تعيين الكل"
1999
 
2000
- #: admin/settings/classes/admin-options.class.php:572
2001
- #: admin/settings/classes/admin-options.class.php:695
2002
  #: admin/settings/classes/comment-options.class.php:215
2003
  #: admin/settings/classes/metabox-options.class.php:293
2004
  #: admin/settings/fields/backup/backup.php:31
@@ -2011,15 +2017,15 @@ msgstr "إعادة تعيين الكل"
2011
  msgid "Reset"
2012
  msgstr "إعادة تعيين الكل"
2013
 
2014
- #: admin/settings/classes/admin-options.class.php:572
2015
- #: admin/settings/classes/admin-options.class.php:695
2016
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:572
2017
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:695
2018
  #, fuzzy
2019
  msgid "Are you sure you want to reset all settings to default values?"
2020
  msgstr "هل تريد حقا أن إعادة تعيين كافة هذه الإعدادات إلى قيمها الافتراضية؟"
2021
 
2022
- #: admin/settings/classes/admin-options.class.php:670
2023
  #: admin/settings/classes/comment-options.class.php:198
2024
  #: admin/settings/classes/metabox-options.class.php:276
2025
  #: admin/settings/fields/button_set/button_set.php:56
@@ -2053,34 +2059,34 @@ msgstr "حدث المنشورللإستعادة"
2053
  msgid "Cancel"
2054
  msgstr "إلغاء"
2055
 
2056
- #: admin/settings/classes/setup.class.php:529
2057
  #: build/wp-ulike/admin/settings/classes/setup.class.php:529
2058
  msgid "Are you sure?"
2059
  msgstr "هل أنت متأكد من ذلك؟"
2060
 
2061
- #: admin/settings/classes/setup.class.php:530
2062
  #: build/wp-ulike/admin/settings/classes/setup.class.php:530
2063
  msgid "Please enter %s or more characters"
2064
  msgstr "الرجاء إدخال %s او اكثر من الحروف"
2065
 
2066
- #: admin/settings/classes/setup.class.php:531
2067
  #: build/wp-ulike/admin/settings/classes/setup.class.php:531
2068
  msgid "Searching..."
2069
  msgstr "يتم البحث..."
2070
 
2071
- #: admin/settings/classes/setup.class.php:532
2072
  #: build/wp-ulike/admin/settings/classes/setup.class.php:532
2073
  #, fuzzy
2074
  msgid "No results found."
2075
  msgstr "لم نجد نتائج في"
2076
 
2077
- #: admin/settings/classes/setup.class.php:634
2078
  #: build/wp-ulike/admin/settings/classes/setup.class.php:634
2079
  msgid "Oops! Not allowed."
2080
  msgstr ""
2081
 
2082
- #: admin/settings/classes/setup.class.php:708
2083
- #: admin/settings/classes/setup.class.php:712
2084
  #: build/wp-ulike/admin/settings/classes/setup.class.php:708
2085
  #: build/wp-ulike/admin/settings/classes/setup.class.php:712
2086
  #, fuzzy
@@ -2316,9 +2322,9 @@ msgstr "وضع مزيج الخلفية"
2316
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:76
2317
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:164
2318
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:306
2319
- #: inc/classes/class-wp-ulike-customizer.php:73
2320
- #: inc/classes/class-wp-ulike-customizer.php:161
2321
- #: inc/classes/class-wp-ulike-customizer.php:303
2322
  msgid "Normal"
2323
  msgstr "عادي"
2324
 
@@ -2562,8 +2568,8 @@ msgstr "إزالة الأيقونة"
2562
  #: build/wp-ulike/admin/settings/fields/link_color/link_color.php:37
2563
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:94
2564
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:202
2565
- #: inc/classes/class-wp-ulike-customizer.php:91
2566
- #: inc/classes/class-wp-ulike-customizer.php:199
2567
  msgid "Hover"
2568
  msgstr "المرور فوق"
2569
 
@@ -2572,9 +2578,9 @@ msgstr "المرور فوق"
2572
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:114
2573
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:237
2574
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:330
2575
- #: inc/classes/class-wp-ulike-customizer.php:111
2576
- #: inc/classes/class-wp-ulike-customizer.php:234
2577
- #: inc/classes/class-wp-ulike-customizer.php:327
2578
  msgid "Active"
2579
  msgstr "تفعيل"
2580
 
@@ -2647,6 +2653,27 @@ msgstr "اختر خط"
2647
  msgid "Backup Font Family"
2648
  msgstr "النسخ الإحتياطي للخط"
2649
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2650
  #: admin/settings/fields/typography/typography.php:130
2651
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:130
2652
  msgid "Font Style"
@@ -2850,45 +2877,45 @@ msgid "Please enter a valid URL."
2850
  msgstr "من فضلك أدخل رابط صحيح!"
2851
 
2852
  #: build/wp-ulike/inc/classes/class-wp-ulike-ajax-listener-base.php:60
2853
- #: inc/classes/class-wp-ulike-ajax-listener-base.php:60
2854
  msgid "There was an error processing the request."
2855
  msgstr ""
2856
 
2857
- #: build/wp-ulike/inc/classes/class-wp-ulike-cta-listener.php:45
2858
- #: build/wp-ulike/inc/classes/class-wp-ulike-voters-listener.php:35
2859
- #: inc/classes/class-wp-ulike-cta-listener.php:46
2860
- #: inc/classes/class-wp-ulike-voters-listener.php:36
2861
  msgid "permission denied."
2862
  msgstr ""
2863
 
2864
- #: build/wp-ulike/inc/classes/class-wp-ulike-cta-listener.php:49
2865
- #: build/wp-ulike/inc/classes/class-wp-ulike-voters-listener.php:39
2866
- #: inc/classes/class-wp-ulike-cta-listener.php:50
2867
- #: inc/classes/class-wp-ulike-voters-listener.php:40
2868
  msgid "Invalid item type."
2869
  msgstr ""
2870
 
2871
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:52
2872
- #: inc/classes/class-wp-ulike-customizer.php:49
2873
  #, fuzzy
2874
  msgid "Button Templates"
2875
  msgstr "نص الزر"
2876
 
2877
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:56
2878
- #: inc/classes/class-wp-ulike-customizer.php:53
2879
  #, fuzzy
2880
  msgid "Template Wrapper"
2881
  msgstr "متغيرات القالب"
2882
 
2883
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:61
2884
- #: inc/classes/class-wp-ulike-customizer.php:58
2885
  msgid "In this section, you can customize the template wrapper styles."
2886
  msgstr ""
2887
 
2888
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:68
2889
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:380
2890
- #: inc/classes/class-wp-ulike-customizer.php:65
2891
- #: inc/classes/class-wp-ulike-customizer.php:377
2892
  msgid "Typography"
2893
  msgstr ""
2894
 
@@ -2905,19 +2932,19 @@ msgstr ""
2905
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:475
2906
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:513
2907
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:556
2908
- #: inc/classes/class-wp-ulike-customizer.php:78
2909
- #: inc/classes/class-wp-ulike-customizer.php:97
2910
- #: inc/classes/class-wp-ulike-customizer.php:117
2911
- #: inc/classes/class-wp-ulike-customizer.php:173
2912
- #: inc/classes/class-wp-ulike-customizer.php:212
2913
- #: inc/classes/class-wp-ulike-customizer.php:246
2914
- #: inc/classes/class-wp-ulike-customizer.php:314
2915
- #: inc/classes/class-wp-ulike-customizer.php:339
2916
- #: inc/classes/class-wp-ulike-customizer.php:396
2917
- #: inc/classes/class-wp-ulike-customizer.php:434
2918
- #: inc/classes/class-wp-ulike-customizer.php:472
2919
- #: inc/classes/class-wp-ulike-customizer.php:510
2920
- #: inc/classes/class-wp-ulike-customizer.php:553
2921
  #, fuzzy
2922
  msgid "Background"
2923
  msgstr "حجم الخلفية"
@@ -2935,19 +2962,19 @@ msgstr "حجم الخلفية"
2935
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:482
2936
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:520
2937
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:563
2938
- #: inc/classes/class-wp-ulike-customizer.php:85
2939
- #: inc/classes/class-wp-ulike-customizer.php:105
2940
- #: inc/classes/class-wp-ulike-customizer.php:123
2941
- #: inc/classes/class-wp-ulike-customizer.php:179
2942
- #: inc/classes/class-wp-ulike-customizer.php:220
2943
- #: inc/classes/class-wp-ulike-customizer.php:252
2944
- #: inc/classes/class-wp-ulike-customizer.php:321
2945
- #: inc/classes/class-wp-ulike-customizer.php:345
2946
- #: inc/classes/class-wp-ulike-customizer.php:403
2947
- #: inc/classes/class-wp-ulike-customizer.php:441
2948
- #: inc/classes/class-wp-ulike-customizer.php:479
2949
- #: inc/classes/class-wp-ulike-customizer.php:517
2950
- #: inc/classes/class-wp-ulike-customizer.php:560
2951
  #, fuzzy
2952
  msgid "Border"
2953
  msgstr "حدود الصندوق"
@@ -2955,9 +2982,9 @@ msgstr "حدود الصندوق"
2955
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:137
2956
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:280
2957
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:358
2958
- #: inc/classes/class-wp-ulike-customizer.php:134
2959
- #: inc/classes/class-wp-ulike-customizer.php:277
2960
- #: inc/classes/class-wp-ulike-customizer.php:355
2961
  #, fuzzy
2962
  msgid "Padding"
2963
  msgstr "حشوة الصندوق"
@@ -2965,14 +2992,14 @@ msgstr "حشوة الصندوق"
2965
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:145
2966
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:288
2967
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:365
2968
- #: inc/classes/class-wp-ulike-customizer.php:142
2969
- #: inc/classes/class-wp-ulike-customizer.php:285
2970
- #: inc/classes/class-wp-ulike-customizer.php:362
2971
  msgid "Margin"
2972
  msgstr ""
2973
 
2974
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:157
2975
- #: inc/classes/class-wp-ulike-customizer.php:154
2976
  msgid ""
2977
  "In this section, you can customize the styles related to the buttons. Please "
2978
  "note that some buttons have different structures (such as SVG based) and "
@@ -2988,15 +3015,15 @@ msgstr ""
2988
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:431
2989
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:469
2990
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:507
2991
- #: inc/classes/class-wp-ulike-customizer.php:166
2992
- #: inc/classes/class-wp-ulike-customizer.php:205
2993
- #: inc/classes/class-wp-ulike-customizer.php:239
2994
- #: inc/classes/class-wp-ulike-customizer.php:308
2995
- #: inc/classes/class-wp-ulike-customizer.php:332
2996
- #: inc/classes/class-wp-ulike-customizer.php:390
2997
- #: inc/classes/class-wp-ulike-customizer.php:428
2998
- #: inc/classes/class-wp-ulike-customizer.php:466
2999
- #: inc/classes/class-wp-ulike-customizer.php:504
3000
  #, fuzzy
3001
  msgid "Text Color"
3002
  msgstr "لون الخط"
@@ -3006,48 +3033,48 @@ msgstr "لون الخط"
3006
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:451
3007
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:489
3008
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:527
3009
- #: inc/classes/class-wp-ulike-customizer.php:186
3010
- #: inc/classes/class-wp-ulike-customizer.php:410
3011
- #: inc/classes/class-wp-ulike-customizer.php:448
3012
- #: inc/classes/class-wp-ulike-customizer.php:486
3013
- #: inc/classes/class-wp-ulike-customizer.php:524
3014
  msgid "Image Dimensions"
3015
  msgstr ""
3016
 
3017
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:196
3018
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:231
3019
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:262
3020
- #: inc/classes/class-wp-ulike-customizer.php:193
3021
- #: inc/classes/class-wp-ulike-customizer.php:228
3022
- #: inc/classes/class-wp-ulike-customizer.php:259
3023
  #, fuzzy
3024
  msgid "Like Image"
3025
  msgstr "الصورة"
3026
 
3027
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:273
3028
- #: inc/classes/class-wp-ulike-customizer.php:270
3029
  #, fuzzy
3030
  msgid "Button Dimensions"
3031
  msgstr "موضع الزر"
3032
 
3033
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:294
3034
- #: inc/classes/class-wp-ulike-customizer.php:291
3035
  #, fuzzy
3036
  msgid "Counter"
3037
  msgstr "وسط"
3038
 
3039
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:299
3040
- #: inc/classes/class-wp-ulike-customizer.php:296
3041
  msgid "In this section, you can customize the template counter styles."
3042
  msgstr ""
3043
 
3044
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:373
3045
- #: inc/classes/class-wp-ulike-customizer.php:370
3046
  msgid "Toast Messages"
3047
  msgstr ""
3048
 
3049
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:388
3050
- #: inc/classes/class-wp-ulike-customizer.php:385
3051
  msgid "Info"
3052
  msgstr ""
3053
 
@@ -3055,220 +3082,254 @@ msgstr ""
3055
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:458
3056
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:496
3057
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:534
3058
- #: inc/classes/class-wp-ulike-customizer.php:417
3059
- #: inc/classes/class-wp-ulike-customizer.php:455
3060
- #: inc/classes/class-wp-ulike-customizer.php:493
3061
- #: inc/classes/class-wp-ulike-customizer.php:531
3062
  #, fuzzy
3063
  msgid "Icon Image"
3064
  msgstr "صورة الزر"
3065
 
3066
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:426
3067
- #: inc/classes/class-wp-ulike-customizer.php:423
3068
  msgid "Success"
3069
  msgstr ""
3070
 
3071
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:464
3072
- #: inc/classes/class-wp-ulike-customizer.php:461
3073
  msgid "Error"
3074
  msgstr ""
3075
 
3076
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:502
3077
- #: inc/classes/class-wp-ulike-customizer.php:499
3078
  msgid "Warning"
3079
  msgstr ""
3080
 
3081
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:546
3082
- #: inc/classes/class-wp-ulike-customizer.php:543
3083
  #, fuzzy
3084
  msgid "Likers Box"
3085
  msgstr "عدد من قام بالضغط على زر الإعجاب"
3086
 
3087
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:570
3088
- #: inc/classes/class-wp-ulike-customizer.php:567
3089
  #, fuzzy
3090
  msgid "Arrow Color"
3091
  msgstr "لون الخط"
3092
 
3093
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:230
3094
- #: inc/classes/class-wp-ulike-mycred.php:227
3095
  msgid "Points for Liking content"
3096
  msgstr ""
3097
 
3098
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:234
3099
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:259
3100
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:284
3101
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:303
3102
- #: inc/classes/class-wp-ulike-mycred.php:231
3103
- #: inc/classes/class-wp-ulike-mycred.php:256
3104
- #: inc/classes/class-wp-ulike-mycred.php:281
3105
- #: inc/classes/class-wp-ulike-mycred.php:300
3106
  msgid "Points"
3107
  msgstr "نقاط"
3108
 
3109
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:236
3110
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:261
3111
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:286
3112
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:305
3113
- #: inc/classes/class-wp-ulike-mycred.php:233
3114
- #: inc/classes/class-wp-ulike-mycred.php:258
3115
- #: inc/classes/class-wp-ulike-mycred.php:283
3116
- #: inc/classes/class-wp-ulike-mycred.php:302
3117
  msgid "Use zero to disable."
3118
  msgstr "اكتب الصفر لتعطيلها."
3119
 
3120
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:241
3121
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:266
3122
- #: inc/classes/class-wp-ulike-mycred.php:238
3123
- #: inc/classes/class-wp-ulike-mycred.php:263
 
 
 
 
3124
  msgid "Limit"
3125
  msgstr ""
3126
 
3127
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:247
3128
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:272
3129
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:291
3130
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:310
3131
- #: inc/classes/class-wp-ulike-mycred.php:244
3132
- #: inc/classes/class-wp-ulike-mycred.php:269
3133
- #: inc/classes/class-wp-ulike-mycred.php:288
3134
- #: inc/classes/class-wp-ulike-mycred.php:307
3135
  msgid "Log template"
3136
  msgstr ""
3137
 
3138
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:255
3139
- #: inc/classes/class-wp-ulike-mycred.php:252
3140
  msgid "Points for Author Who Get Liked"
3141
  msgstr ""
3142
 
3143
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:280
3144
- #: inc/classes/class-wp-ulike-mycred.php:277
3145
  msgid "Points for unliking content"
3146
  msgstr ""
3147
 
3148
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:299
3149
- #: inc/classes/class-wp-ulike-mycred.php:296
3150
  msgid "Points for Author Who Get Unliked"
3151
  msgstr ""
3152
 
3153
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:318
3154
- #: inc/classes/class-wp-ulike-mycred.php:315
3155
  msgid "Limits"
3156
  msgstr "حدود"
3157
 
3158
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:323
3159
- #: inc/classes/class-wp-ulike-mycred.php:320
3160
  msgid ""
3161
  "%plural% is to be awarded even when item authors Like/Unlike their own item."
3162
  msgstr "%plural% سيتم منحها حتى عند إعجاب او عدم إعجاب مؤلف المنشور."
3163
 
3164
- #: build/wp-ulike/inc/functions/counter.php:72 inc/functions/counter.php:69
 
3165
  msgid "Please enter some value for required variables."
3166
  msgstr "الرجاء إدخال قيمة للمتغيرات المطلوبة."
3167
 
3168
- #: build/wp-ulike/inc/functions/counter.php:86 inc/functions/counter.php:83
 
3169
  msgid "Table info is empty."
3170
  msgstr "جدول المعلومات فارغ"
3171
 
3172
- #: build/wp-ulike/inc/functions/templates.php:38 inc/functions/templates.php:35
 
3173
  msgid "Twitter Heart"
3174
  msgstr "قلب تويتر"
3175
 
3176
- #: build/wp-ulike/inc/functions/templates.php:44 inc/functions/templates.php:41
 
3177
  msgid "Animated Heart"
3178
  msgstr "قلب متحرك"
3179
 
3180
- #: build/wp-ulike/inc/hooks/shortcodes.php:146 inc/hooks/shortcodes.php:143
 
3181
  msgid "Error receiving input parameters"
3182
  msgstr ""
3183
 
3184
- #: build/wp-ulike/inc/hooks/third-party.php:120 inc/hooks/third-party.php:117
 
3185
  msgid "WP ULike Activity"
3186
  msgstr "نشاطات وردبرس یولایک"
3187
 
3188
- #: build/wp-ulike/inc/hooks/third-party.php:135 inc/hooks/third-party.php:132
 
3189
  msgid "Votes"
3190
  msgstr ""
3191
 
3192
- #: build/wp-ulike/inc/hooks/third-party.php:344 inc/hooks/third-party.php:341
 
3193
  msgid "posts"
3194
  msgstr ""
3195
 
3196
- #: build/wp-ulike/inc/hooks/third-party.php:351 inc/hooks/third-party.php:348
 
3197
  msgid "comments"
3198
  msgstr ""
3199
 
3200
- #: build/wp-ulike/inc/hooks/third-party.php:357 inc/hooks/third-party.php:354
 
3201
  msgid "activities"
3202
  msgstr ""
3203
 
3204
- #: build/wp-ulike/inc/hooks/third-party.php:365 inc/hooks/third-party.php:362
 
3205
  msgid "topics"
3206
  msgstr ""
3207
 
3208
- #: build/wp-ulike/inc/hooks/third-party.php:368 inc/hooks/third-party.php:365
 
3209
  msgid "replies"
3210
  msgstr ""
3211
 
3212
- #: build/wp-ulike/inc/hooks/third-party.php:380 inc/hooks/third-party.php:377
 
3213
  msgid "You have %d new %s likes"
3214
  msgstr ""
3215
 
3216
- #: build/wp-ulike/inc/hooks/third-party.php:384 inc/hooks/third-party.php:381
 
3217
  msgid "%s liked one of your %s"
3218
  msgstr ""
3219
 
3220
- #: build/wp-ulike/inc/hooks/third-party.php:428 inc/hooks/third-party.php:425
 
3221
  msgid "New activity liked"
3222
  msgstr ""
3223
 
3224
- #: build/wp-ulike/inc/hooks/third-party.php:433 inc/hooks/third-party.php:430
 
3225
  msgid "New comment liked"
3226
  msgstr ""
3227
 
3228
- #: build/wp-ulike/inc/hooks/third-party.php:438 inc/hooks/third-party.php:435
 
3229
  msgid "New post liked"
3230
  msgstr ""
3231
 
3232
- #: build/wp-ulike/inc/hooks/third-party.php:443 inc/hooks/third-party.php:440
 
3233
  msgid "New topic liked"
3234
  msgstr "موضوع جديد تم الإعجاب به"
3235
 
3236
- #: build/wp-ulike/inc/hooks/third-party.php:800 inc/hooks/third-party.php:797
 
 
 
 
 
 
3237
  msgid ""
3238
  "This hook award / deducts points from users who Like/Unlike any content of "
3239
  "WordPress, bbPress, BuddyPress & ..."
3240
  msgstr ""
3241
 
3242
- #: build/wp-ulike/inc/hooks/third-party.php:816 inc/hooks/third-party.php:813
 
3243
  msgid "Liking Content"
3244
  msgstr ""
3245
 
3246
- #: build/wp-ulike/inc/hooks/third-party.php:817 inc/hooks/third-party.php:814
 
3247
  msgid "Liked Content"
3248
  msgstr "المحتوى الحاصل على إعجاب"
3249
 
3250
- #: build/wp-ulike/inc/hooks/third-party.php:818 inc/hooks/third-party.php:815
 
3251
  msgid "Unliking Content"
3252
  msgstr ""
3253
 
3254
- #: build/wp-ulike/inc/hooks/third-party.php:819 inc/hooks/third-party.php:816
 
3255
  msgid "Unliked Content"
3256
  msgstr ""
3257
 
3258
- #: build/wp-ulike/inc/hooks/third-party.php:837 inc/hooks/third-party.php:834
 
3259
  msgid "Recent Posts Liked"
3260
  msgstr "مشاركات تم الإعجاب بها مؤخراً"
3261
 
3262
- #: build/wp-ulike/inc/hooks/third-party.php:842 inc/hooks/third-party.php:839
 
3263
  msgid "Recent Comments Liked"
3264
  msgstr "تعليقات تم الإعجاب بها مؤخراً"
3265
 
3266
- #: build/wp-ulike/inc/hooks/third-party.php:873
3267
- #: build/wp-ulike/inc/hooks/third-party.php:899
3268
- #: build/wp-ulike/inc/hooks/third-party.php:929
3269
- #: build/wp-ulike/inc/hooks/third-party.php:959 inc/hooks/third-party.php:870
3270
- #: inc/hooks/third-party.php:896 inc/hooks/third-party.php:926
3271
- #: inc/hooks/third-party.php:956
3272
  msgid "This user has not made any likes."
3273
  msgstr ""
3274
 
@@ -3276,7 +3337,7 @@ msgstr ""
3276
  msgid "WP ULike"
3277
  msgstr "وردبرس یولایک"
3278
 
3279
- #: build/wp-ulike/wp-ulike.php:584 wp-ulike.php:581
3280
  msgid ""
3281
  "You are using two instances of WP ULike plugin at same time, please deactive "
3282
  "one of them."
4
  msgstr ""
5
  "Project-Id-Version: Plugins - WP ULike - Stable (latest release)\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/plugins/wp-ulike/\n"
7
+ "POT-Creation-Date: 2021-04-04 15:20:05+00:00\n"
8
  "PO-Revision-Date: 2017-01-20 23:26:42+0000\n"
9
  "Language: ar\n"
10
  "MIME-Version: 1.0\n"
34
  msgstr "لا بأس!"
35
 
36
  #: admin/admin-functions.php:240
37
+ #: admin/classes/class-wp-ulike-admin-panel.php:786
38
  #: build/wp-ulike/admin/admin-functions.php:243
39
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:789
40
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:152
41
+ #: includes/classes/class-wp-ulike-customizer.php:149
42
  msgid "Button"
43
  msgstr ""
44
 
99
  #: admin/admin-hooks.php:170 admin/admin-hooks.php:194
100
  #: admin/admin-hooks.php:217 admin/classes/class-wp-ulike-admin-panel.php:383
101
  #: admin/classes/class-wp-ulike-admin-panel.php:413
102
+ #: admin/classes/class-wp-ulike-admin-panel.php:443
103
  #: admin/classes/class-wp-ulike-admin-panel.php:560
104
+ #: admin/classes/class-wp-ulike-admin-panel.php:589
105
  #: build/wp-ulike/admin/admin-hooks.php:173
106
  #: build/wp-ulike/admin/admin-hooks.php:197
107
  #: build/wp-ulike/admin/admin-hooks.php:220
108
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:386
109
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:416
110
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:446
111
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:563
112
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:592
113
  msgid "Get More Information"
114
  msgstr "احصل على المزيد من المعلومات"
115
 
153
 
154
  #: admin/admin-hooks.php:485 admin/classes/class-wp-ulike-admin-panel.php:125
155
  #: admin/classes/class-wp-ulike-admin-panel.php:142
156
+ #: admin/classes/class-wp-ulike-admin-panel.php:640
157
+ #: admin/classes/class-wp-ulike-admin-panel.php:670
158
  #: admin/classes/class-wp-ulike-widget.php:355
159
  #: build/wp-ulike/admin/admin-hooks.php:488
160
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:128
161
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:145
162
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:643
163
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:673
164
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:358
165
  msgid "Like"
166
  msgstr "اعجاب"
167
 
168
+ #: admin/classes/class-wp-ulike-admin-assets.php:126
169
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:109
170
  msgid "Are you sure to remove this item?!"
171
  msgstr "هل أنت متأكد لإزالة هذا البند ؟!"
172
 
173
+ #: admin/classes/class-wp-ulike-admin-assets.php:127
174
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:110
175
  msgid "No information was found in this database!"
176
  msgstr "لا من نجد معلومات في قاعدة البيانات هذه!"
177
 
207
  #: admin/includes/templates/statistics.php:124
208
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:62
209
  #: build/wp-ulike/admin/includes/templates/statistics.php:127
210
+ #: build/wp-ulike/wp-ulike.php:179 includes/plugin.php:103
211
  msgid "Statistics"
212
  msgstr "إحصائيات"
213
 
214
  #: admin/classes/class-wp-ulike-admin-pages.php:67
215
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:70
216
+ #: build/wp-ulike/wp-ulike.php:180 includes/plugin.php:104
217
  msgid "About"
218
  msgstr ""
219
 
240
 
241
  #: admin/classes/class-wp-ulike-admin-panel.php:43
242
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:46
243
+ #: build/wp-ulike/wp-ulike.php:178 includes/plugin.php:102
244
  msgid "Settings"
245
  msgstr "الإعدادات"
246
 
282
 
283
  #: admin/classes/class-wp-ulike-admin-panel.php:131
284
  #: admin/classes/class-wp-ulike-admin-panel.php:147
285
+ #: admin/classes/class-wp-ulike-admin-panel.php:651
286
+ #: admin/classes/class-wp-ulike-admin-panel.php:682
287
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:134
288
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:150
289
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:654
290
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:685
291
  msgid "Unlike"
292
  msgstr "الغاء اعجابي"
293
 
391
  msgstr "بإستخدام هذا الخيار، بإمكانك تعطيل جميع مكونات الإضافة في هذه الصفحات."
392
 
393
  #: admin/classes/class-wp-ulike-admin-panel.php:201
394
+ #: admin/classes/class-wp-ulike-admin-panel.php:723
395
  #: admin/includes/templates/about.php:46
396
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:204
397
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:726
398
  #: build/wp-ulike/admin/includes/templates/about.php:49
399
  msgid "Home"
400
  msgstr "الرئیسیة"
401
 
402
  #: admin/classes/class-wp-ulike-admin-panel.php:202
403
+ #: admin/classes/class-wp-ulike-admin-panel.php:724
404
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:205
405
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:727
406
  msgid "Singular"
407
  msgstr "التفرد"
408
 
409
  #: admin/classes/class-wp-ulike-admin-panel.php:203
410
+ #: admin/classes/class-wp-ulike-admin-panel.php:725
411
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:206
412
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:728
413
  msgid "Archives"
414
  msgstr "أرشيف"
415
 
416
  #: admin/classes/class-wp-ulike-admin-panel.php:204
417
+ #: admin/classes/class-wp-ulike-admin-panel.php:726
418
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:207
419
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:729
420
  msgid "Categories"
421
  msgstr "تصنیفات"
422
 
423
  #: admin/classes/class-wp-ulike-admin-panel.php:205
424
+ #: admin/classes/class-wp-ulike-admin-panel.php:727
425
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:208
426
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:730
427
  msgid "Search Results"
428
  msgstr "نتائج البحث"
429
 
430
  #: admin/classes/class-wp-ulike-admin-panel.php:206
431
+ #: admin/classes/class-wp-ulike-admin-panel.php:728
432
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:209
433
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:731
434
  msgid "Tags"
435
  msgstr "الوسوم"
436
 
437
  #: admin/classes/class-wp-ulike-admin-panel.php:207
438
+ #: admin/classes/class-wp-ulike-admin-panel.php:729
439
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:210
440
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:732
441
  msgid "Author Page"
442
  msgstr "صفحة المبرمج"
443
 
504
 
505
  #: admin/classes/class-wp-ulike-admin-panel.php:268
506
  #: admin/classes/class-wp-ulike-admin-panel.php:280
507
+ #: admin/classes/class-wp-ulike-admin-panel.php:794
508
+ #: admin/classes/class-wp-ulike-admin-panel.php:850
509
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:271
510
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:283
511
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:797
512
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:853
513
  msgid "Allowed Variables:"
514
  msgstr "المتغیرات المسموحة :"
515
 
635
  "with just a few simple clicks."
636
  msgstr ""
637
 
638
+ #: admin/classes/class-wp-ulike-admin-panel.php:430
639
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:433
640
+ #, fuzzy
641
+ msgid "Share Buttons"
642
+ msgstr "زر الاعجاب"
643
+
644
+ #: admin/classes/class-wp-ulike-admin-panel.php:437
645
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:440
646
+ msgid "Easy Social Share Buttons for WordPress"
647
+ msgstr ""
648
+
649
+ #: admin/classes/class-wp-ulike-admin-panel.php:438
650
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:441
651
+ msgid ""
652
+ "WP ULike Share buttons enables your website users to share the content over "
653
+ "Facebook, Twitter, Google, Linkedin, Whatsapp, Tumblr, Pinterest, Reddit and "
654
+ "over 23 more social sharing services. This is the Simplest and Smoothest "
655
+ "Social Sharing service with optimized and great looking vector icons."
656
+ msgstr ""
657
+
658
+ #: admin/classes/class-wp-ulike-admin-panel.php:462
659
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:465
660
  msgid "Translations"
661
  msgstr "الترجمة"
662
 
663
+ #: admin/classes/class-wp-ulike-admin-panel.php:471
664
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:474
665
  #, fuzzy
666
  msgid "Strings"
667
  msgstr "الإعدادات"
668
 
669
+ #: admin/classes/class-wp-ulike-admin-panel.php:477
670
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:480
671
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:30
672
+ #: includes/classes/class-wp-ulike-setting-repo.php:35
673
  msgid "You have already registered a vote."
674
  msgstr ""
675
 
676
+ #: admin/classes/class-wp-ulike-admin-panel.php:478
677
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:481
678
  msgid "Already Voted Message"
679
  msgstr "إشعار تم التصويت بالفعل"
680
 
681
+ #: admin/classes/class-wp-ulike-admin-panel.php:483
682
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:486
683
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:21
684
+ #: includes/classes/class-wp-ulike-setting-repo.php:26
685
  msgid "You Should Login To Submit Your Like"
686
  msgstr "عليك تسجيل الدخول لاعمال اعجاب"
687
 
688
+ #: admin/classes/class-wp-ulike-admin-panel.php:484
689
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:487
690
  msgid "Login Required Message"
691
  msgstr "رسالة تسجيل الدخول مطلوب"
692
 
693
+ #: admin/classes/class-wp-ulike-admin-panel.php:489
694
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:492
695
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:39
696
+ #: includes/classes/class-wp-ulike-setting-repo.php:44
697
  msgid "Thanks! You Liked This."
698
  msgstr "شكراً! لقد قمت بالإعجاب بهذا."
699
 
700
+ #: admin/classes/class-wp-ulike-admin-panel.php:490
701
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:493
702
  msgid "Liked Notice Message"
703
  msgstr ""
704
 
705
+ #: admin/classes/class-wp-ulike-admin-panel.php:495
706
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:498
707
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:48
708
+ #: includes/classes/class-wp-ulike-setting-repo.php:53
709
  msgid "Sorry! You unliked this."
710
  msgstr "نأسف لعدم إعجابك بهذا!"
711
 
712
+ #: admin/classes/class-wp-ulike-admin-panel.php:496
713
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:499
714
  msgid "Unliked Notice Message"
715
  msgstr ""
716
 
717
+ #: admin/classes/class-wp-ulike-admin-panel.php:501
718
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:504
719
  #: build/wp-ulike/inc/functions/templates.php:73
720
  #: build/wp-ulike/inc/functions/templates.php:125
721
  #: build/wp-ulike/inc/functions/templates.php:177
722
  #: build/wp-ulike/inc/functions/templates.php:227
723
+ #: includes/functions/templates.php:70 includes/functions/templates.php:122
724
+ #: includes/functions/templates.php:174 includes/functions/templates.php:224
725
  msgid "Like Button"
726
  msgstr "زر الاعجاب"
727
 
728
+ #: admin/classes/class-wp-ulike-admin-panel.php:502
729
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:505
730
  msgid "Like Button Aria Label"
731
  msgstr ""
732
 
733
+ #: admin/classes/class-wp-ulike-admin-panel.php:512
734
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:515
735
  msgid "Developer Tools"
736
  msgstr ""
737
 
738
+ #: admin/classes/class-wp-ulike-admin-panel.php:518
739
  #: admin/settings/fields/typography/typography.php:295
740
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:521
741
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:295
742
  msgid "Custom Style"
743
  msgstr "تخصیص الاسلوب ( Style) : "
744
 
745
+ #: admin/classes/class-wp-ulike-admin-panel.php:532
746
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:535
747
  msgid "Custom Spinner"
748
  msgstr "سبينر مخصص"
749
 
750
+ #: admin/classes/class-wp-ulike-admin-panel.php:539
751
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:542
752
  msgid "Enable Inline Custom CSS"
753
  msgstr ""
754
 
755
+ #: admin/classes/class-wp-ulike-admin-panel.php:540
756
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:543
757
  msgid ""
758
  "If you don't want to use \"custom.css\" file for any reason, by activating "
759
  "this option, the styles will be added to the page as inline."
760
  msgstr ""
761
 
762
+ #: admin/classes/class-wp-ulike-admin-panel.php:547
763
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:550
764
  msgid "REST API"
765
  msgstr ""
766
 
767
+ #: admin/classes/class-wp-ulike-admin-panel.php:554
768
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:557
769
  msgid "How to Get Started with WP ULike REST API?"
770
  msgstr ""
771
 
772
+ #: admin/classes/class-wp-ulike-admin-panel.php:555
773
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:558
774
  msgid ""
775
  "Have you ever tried to get data from online sources like WP ULike logs and "
776
  "use them in your Application or website? the solution is Rest API!"
777
  msgstr ""
778
 
779
+ #: admin/classes/class-wp-ulike-admin-panel.php:576
780
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:579
781
  msgid "Optimization"
782
  msgstr ""
783
 
784
+ #: admin/classes/class-wp-ulike-admin-panel.php:583
785
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:586
786
  msgid "How to Optimize or Repair WP ULike Database Tables?"
787
  msgstr ""
788
 
789
+ #: admin/classes/class-wp-ulike-admin-panel.php:584
790
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:587
791
  msgid ""
792
  "Have you ever optimized your WP ULike database? Optimizing your database "
793
  "cleans up unwanted data which reduces database size and improves performance."
794
  msgstr ""
795
 
796
+ #: admin/classes/class-wp-ulike-admin-panel.php:616
797
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:619
798
  msgid "Select a Template"
799
  msgstr "اختر قالب"
800
 
801
+ #: admin/classes/class-wp-ulike-admin-panel.php:617
802
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:620
803
  msgid "Display online preview"
804
  msgstr ""
805
 
806
+ #: admin/classes/class-wp-ulike-admin-panel.php:617
807
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:620
808
  msgid "Here"
809
  msgstr ""
810
 
811
+ #: admin/classes/class-wp-ulike-admin-panel.php:625
812
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:628
813
  msgid "Button Type"
814
  msgstr "نوع الزر"
815
 
816
+ #: admin/classes/class-wp-ulike-admin-panel.php:628
817
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:631
818
  msgid "Image"
819
  msgstr "الصورة"
820
 
821
+ #: admin/classes/class-wp-ulike-admin-panel.php:629
822
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:632
823
  msgid "Text"
824
  msgstr "نص"
825
 
826
+ #: admin/classes/class-wp-ulike-admin-panel.php:636
827
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:639
828
  msgid ""
829
  "Enter your custom button text in the fields above. You can also use HTML "
830
  "tags in these fields."
832
  "ادخل نص المخصص للزر بالحقل أعلاه. وكذلك بإمكانك استخدام وسوم HTML في هذه "
833
  "الحقول."
834
 
835
+ #: admin/classes/class-wp-ulike-admin-panel.php:637
836
+ #: admin/classes/class-wp-ulike-admin-panel.php:645
837
+ #: admin/classes/class-wp-ulike-admin-panel.php:656
838
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:640
839
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:648
840
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:659
841
  msgid "Button Text"
842
  msgstr "نص الزر"
843
 
844
+ #: admin/classes/class-wp-ulike-admin-panel.php:667
845
+ #: admin/classes/class-wp-ulike-admin-panel.php:675
846
+ #: admin/classes/class-wp-ulike-admin-panel.php:687
847
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:670
848
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:678
849
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:690
850
  msgid "Button Image"
851
  msgstr "صورة الزر"
852
 
853
+ #: admin/classes/class-wp-ulike-admin-panel.php:700
854
  #: admin/classes/class-wp-ulike-settings.php:65
855
  #: admin/classes/class-wp-ulike-settings.php:72
856
  #: admin/classes/class-wp-ulike-settings.php:78
857
  #: admin/classes/class-wp-ulike-settings.php:84
858
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:703
859
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:68
860
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:75
861
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:81
863
  msgid "Automatic display"
864
  msgstr "عرض تلقائي"
865
 
866
+ #: admin/classes/class-wp-ulike-admin-panel.php:705
867
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:708
868
  msgid "Button Position"
869
  msgstr "موضع الزر"
870
 
871
+ #: admin/classes/class-wp-ulike-admin-panel.php:708
872
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:711
873
  msgid "Top of Content"
874
  msgstr "اعلی المحتوا"
875
 
876
+ #: admin/classes/class-wp-ulike-admin-panel.php:709
877
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:712
878
  msgid "Bottom of Content"
879
  msgstr "اسفل المحتوا"
880
 
881
+ #: admin/classes/class-wp-ulike-admin-panel.php:710
882
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:713
883
  msgid "Top and Bottom"
884
  msgstr "أعلى وأسفل"
885
 
886
+ #: admin/classes/class-wp-ulike-admin-panel.php:717
887
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:720
888
  msgid "Automatic Display Restriction"
889
  msgstr "تقييد العرض التلقائي"
890
 
891
+ #: admin/classes/class-wp-ulike-admin-panel.php:718
892
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:721
893
  msgid "With this option, you can disable automatic display on these pages."
894
  msgstr "بإستخدام هذا الخيار، بإمكانك تعطيل العرض التلقائي في هذه الصفحات."
895
 
896
+ #: admin/classes/class-wp-ulike-admin-panel.php:736
897
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:739
898
  msgid "Post Types Filter"
899
  msgstr "تصفية أنواع المنشورات"
900
 
901
+ #: admin/classes/class-wp-ulike-admin-panel.php:737
902
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:740
903
  msgid "Select a post type"
904
  msgstr "تحديد مقالة لنسخها"
905
 
906
+ #: admin/classes/class-wp-ulike-admin-panel.php:738
907
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:741
908
  msgid "Make these post types an exception and display the button on them."
909
  msgstr "اجعل لأنواع المنشورات هذه إستثناء واعرض الزر فيها"
910
 
911
+ #: admin/classes/class-wp-ulike-admin-panel.php:748
912
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:751
913
  msgid "Display Counter Value Condition"
914
  msgstr ""
915
 
916
+ #: admin/classes/class-wp-ulike-admin-panel.php:751
917
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:754
918
  #, fuzzy
919
  msgid "Visible"
920
  msgstr "تم الزيارة"
921
 
922
+ #: admin/classes/class-wp-ulike-admin-panel.php:752
923
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:755
924
  msgid "Hidden"
925
  msgstr ""
926
 
927
+ #: admin/classes/class-wp-ulike-admin-panel.php:753
928
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:756
929
  #, fuzzy
930
  msgid "Only Logged In Users"
931
  msgstr "فقط المستخدمين المسجلين"
932
 
933
+ #: admin/classes/class-wp-ulike-admin-panel.php:759
934
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:762
935
  msgid "Hide Zero Counter Box"
936
  msgstr ""
937
 
938
+ #: admin/classes/class-wp-ulike-admin-panel.php:765
939
  #: admin/classes/class-wp-ulike-settings.php:58
940
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:768
941
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:61
942
  msgid "Logging Method"
943
  msgstr "طريقة تسجيل"
944
 
945
+ #: admin/classes/class-wp-ulike-admin-panel.php:767
946
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:770
947
  #, fuzzy
948
  msgid "No Limit"
949
  msgstr "حدود"
950
 
951
+ #: admin/classes/class-wp-ulike-admin-panel.php:768
952
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:771
953
  msgid "Cookie"
954
  msgstr ""
955
 
956
+ #: admin/classes/class-wp-ulike-admin-panel.php:769
957
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:772
958
  #, fuzzy
959
  msgid "Username/IP"
960
  msgstr "اسم المستخدم : "
961
 
962
+ #: admin/classes/class-wp-ulike-admin-panel.php:770
963
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:773
964
  #, fuzzy
965
  msgid "Username/IP + Cookie"
966
  msgstr "اسم المستخدم : "
967
 
968
+ #: admin/classes/class-wp-ulike-admin-panel.php:773
969
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:776
970
  msgid ""
971
  "\"No Limit\": There will be no restrictions and users can submit their "
972
  "points each time they refresh the page. In this option, it will not be "
973
  "possible to resubmit reverse points (un-like/un-dislike)."
974
  msgstr ""
975
 
976
+ #: admin/classes/class-wp-ulike-admin-panel.php:773
977
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:776
978
  msgid ""
979
  "\"Cookie\": By saving users' cookies, it is possible to submit points only "
980
  "once per user and in case of re-clicking, the appropriate message will be "
981
  "displayed."
982
  msgstr ""
983
 
984
+ #: admin/classes/class-wp-ulike-admin-panel.php:773
985
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:776
986
  msgid ""
987
  "Username/IP: By saving the username/IP of users, It supports the reverse "
988
  "feature (un-like and un-dislike) and users can change their reactions and "
989
  "are only allowed to have a specific point type."
990
  msgstr ""
991
 
992
+ #: admin/classes/class-wp-ulike-admin-panel.php:778
993
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:781
994
  msgid "Only logged in users"
995
  msgstr "فقط المستخدمين المسجلين"
996
 
997
+ #: admin/classes/class-wp-ulike-admin-panel.php:783
998
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:786
999
  msgid "Display Type"
1000
  msgstr "عرض النوع"
1001
 
1002
+ #: admin/classes/class-wp-ulike-admin-panel.php:785
1003
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:788
1004
  msgid "Template"
1005
  msgstr ""
1006
 
1007
+ #: admin/classes/class-wp-ulike-admin-panel.php:800
1008
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:803
1009
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:138
1010
+ #: includes/classes/class-wp-ulike-setting-repo.php:143
1011
  msgid "You need to login in order to like this post: "
1012
  msgstr "تحتاج إلى تسجيل الدخول لتقییم هذا المنشور :"
1013
 
1014
+ #: admin/classes/class-wp-ulike-admin-panel.php:802
1015
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:805
1016
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:140
1017
+ #: includes/classes/class-wp-ulike-setting-repo.php:145
1018
  msgid "click here"
1019
  msgstr "اضغط هنا انقر للدخول"
1020
 
1021
+ #: admin/classes/class-wp-ulike-admin-panel.php:804
1022
+ #: admin/classes/class-wp-ulike-admin-panel.php:849
1023
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:807
1024
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:852
1025
  msgid "Custom HTML Template"
1026
  msgstr "قالب HTML المخصص"
1027
 
1028
+ #: admin/classes/class-wp-ulike-admin-panel.php:810
1029
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:813
1030
  msgid "Display Likers Box"
1031
  msgstr "عرض صندوق Likers"
1032
 
1033
+ #: admin/classes/class-wp-ulike-admin-panel.php:815
1034
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:818
1035
  msgid "User List Arrange"
1036
  msgstr ""
1037
 
1038
+ #: admin/classes/class-wp-ulike-admin-panel.php:818
1039
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:821
1040
  msgid "Ascending"
1041
  msgstr ""
1042
 
1043
+ #: admin/classes/class-wp-ulike-admin-panel.php:819
1044
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:822
1045
  msgid "Descending"
1046
  msgstr ""
1047
 
1048
+ #: admin/classes/class-wp-ulike-admin-panel.php:827
1049
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:830
1050
  msgid "Hide For Anonymous Users"
1051
  msgstr ""
1052
 
1053
+ #: admin/classes/class-wp-ulike-admin-panel.php:833
1054
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:836
1055
  #, fuzzy
1056
  msgid "Likers Box Display"
1057
  msgstr "عدد من قام بالضغط على زر الإعجاب"
1058
 
1059
+ #: admin/classes/class-wp-ulike-admin-panel.php:836
1060
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:839
1061
+ msgid "Inline"
1062
+ msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1063
 
1064
+ #: admin/classes/class-wp-ulike-admin-panel.php:837
1065
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:840
1066
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:550
1067
+ #: includes/classes/class-wp-ulike-customizer.php:547
1068
  #, fuzzy
1069
  msgid "Popover"
1070
  msgstr "غلاف"
1071
 
1072
+ #: admin/classes/class-wp-ulike-admin-panel.php:863
1073
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:866
1074
  msgid "Size of Gravatars"
1075
  msgstr "مقیاس قراواتار"
1076
 
1077
+ #: admin/classes/class-wp-ulike-admin-panel.php:871
1078
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:874
1079
  msgid "Likers Count"
1080
  msgstr "عدد من قام بالضغط على زر الإعجاب"
1081
 
1082
+ #: admin/classes/class-wp-ulike-admin-panel.php:872
1083
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:875
1084
  msgid "The number of users to show in the users liked box"
1085
  msgstr "حد الاقصی لإعرض عدد المستخدمين فی الباکس ؟!"
1086
 
1187
 
1188
  #: admin/classes/class-wp-ulike-settings.php:59
1189
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:62
1190
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:259
1191
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:284
1192
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:309
1193
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:334
1194
+ #: includes/classes/class-wp-ulike-mycred.php:256
1195
+ #: includes/classes/class-wp-ulike-mycred.php:281
1196
+ #: includes/classes/class-wp-ulike-mycred.php:306
1197
+ #: includes/classes/class-wp-ulike-mycred.php:331
1198
  msgid "required"
1199
  msgstr ""
1200
 
1520
 
1521
  #: admin/classes/class-wp-ulike-widget.php:543
1522
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:546
1523
+ #: build/wp-ulike/inc/functions/templates.php:32
1524
+ #: includes/functions/templates.php:29
1525
  msgid "Heart"
1526
  msgstr ""
1527
 
1838
  msgid "WP ULike Premium"
1839
  msgstr "نسخة البريميوم من WP ULike"
1840
 
1841
+ #: admin/includes/templates/go-pro.php:140
1842
+ #: build/wp-ulike/admin/includes/templates/go-pro.php:143
1843
  msgid ""
1844
  "Elementor is the #1 WordPress page builder. In the new version of the WP "
1845
  "ULike PRO plugin we fully support this page builder and have a variety of "
1849
  "PRO ، قمنا بدعم بانئ الصفحات هذا بشكل كامل ولدينا مجموعة متنوعة من عناصر "
1850
  "التحكم وأدوات التحكم التي تجعل الأمر أسهل لك."
1851
 
1852
+ #: admin/includes/templates/go-pro.php:140
1853
+ #: build/wp-ulike/admin/includes/templates/go-pro.php:143
1854
  msgid ""
1855
  "Just drag your desired widget and drop it in your Elementor sections, "
1856
  "customize as you go and enjoy your like and dislike buttons on your contents."
1924
  msgid "Topic Title"
1925
  msgstr "عنوان الموضوع"
1926
 
1927
+ #: admin/settings/classes/admin-options.class.php:226
1928
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:225
1929
  #, fuzzy
1930
  msgid "Error while saving the changes."
1931
  msgstr "حصل خلل أثناء حفظ التغييرات."
1932
 
1933
+ #: admin/settings/classes/admin-options.class.php:286
1934
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:285
1935
  msgid "Settings successfully imported."
1936
  msgstr ""
1937
 
1938
+ #: admin/settings/classes/admin-options.class.php:298
1939
+ #: admin/settings/classes/admin-options.class.php:314
1940
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:297
1941
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:313
1942
  #, fuzzy
1943
  msgid "Default settings restored."
1944
  msgstr "تمت إستعادة الخيارات الإفتراضية."
1945
 
1946
+ #: admin/settings/classes/admin-options.class.php:385
1947
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:384
1948
  msgid "Settings saved."
1949
  msgstr "تم حفظ التغییرات"
1950
 
1951
+ #: admin/settings/classes/admin-options.class.php:565
1952
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:563
1953
  msgid "You have unsaved changes, save your changes!"
1954
  msgstr ""
1955
 
1956
+ #: admin/settings/classes/admin-options.class.php:567
1957
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:565
1958
  #, fuzzy
1959
  msgid "show all settings"
1960
  msgstr "عرض جميع الخيارات"
1961
 
1962
+ #: admin/settings/classes/admin-options.class.php:569
1963
  #: admin/settings/fields/icon/icon.php:57 admin/settings/fields/map/map.php:23
1964
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:567
1965
  #: build/wp-ulike/admin/settings/fields/icon/icon.php:57
1968
  msgid "Search..."
1969
  msgstr "يتم البحث..."
1970
 
1971
+ #: admin/settings/classes/admin-options.class.php:572
1972
+ #: admin/settings/classes/admin-options.class.php:695
1973
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:570
1974
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:693
1975
  msgid "Save"
1976
  msgstr "حفظ"
1977
 
1978
+ #: admin/settings/classes/admin-options.class.php:572
1979
+ #: admin/settings/classes/admin-options.class.php:695
1980
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:570
1981
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:693
1982
  msgid "Saving..."
1983
  msgstr "جاري الحفظ..."
1984
 
1985
+ #: admin/settings/classes/admin-options.class.php:573
1986
+ #: admin/settings/classes/admin-options.class.php:696
1987
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:571
1988
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:694
1989
  msgid "Reset Section"
1990
  msgstr "إعادة تعيين القسم"
1991
 
1992
+ #: admin/settings/classes/admin-options.class.php:573
1993
+ #: admin/settings/classes/admin-options.class.php:696
1994
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:571
1995
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:694
1996
  msgid "Are you sure to reset this section options?"
1997
  msgstr "هل أنت متأكد من إعادة تعيين جميع الخيارات إلى الخيارات الإفتراضية؟"
1998
 
1999
+ #: admin/settings/classes/admin-options.class.php:574
2000
+ #: admin/settings/classes/admin-options.class.php:697
2001
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:572
2002
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:695
2003
  msgid "Reset All"
2004
  msgstr "إعادة تعيين الكل"
2005
 
2006
+ #: admin/settings/classes/admin-options.class.php:574
2007
+ #: admin/settings/classes/admin-options.class.php:697
2008
  #: admin/settings/classes/comment-options.class.php:215
2009
  #: admin/settings/classes/metabox-options.class.php:293
2010
  #: admin/settings/fields/backup/backup.php:31
2017
  msgid "Reset"
2018
  msgstr "إعادة تعيين الكل"
2019
 
2020
+ #: admin/settings/classes/admin-options.class.php:574
2021
+ #: admin/settings/classes/admin-options.class.php:697
2022
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:572
2023
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:695
2024
  #, fuzzy
2025
  msgid "Are you sure you want to reset all settings to default values?"
2026
  msgstr "هل تريد حقا أن إعادة تعيين كافة هذه الإعدادات إلى قيمها الافتراضية؟"
2027
 
2028
+ #: admin/settings/classes/admin-options.class.php:672
2029
  #: admin/settings/classes/comment-options.class.php:198
2030
  #: admin/settings/classes/metabox-options.class.php:276
2031
  #: admin/settings/fields/button_set/button_set.php:56
2059
  msgid "Cancel"
2060
  msgstr "إلغاء"
2061
 
2062
+ #: admin/settings/classes/setup.class.php:592
2063
  #: build/wp-ulike/admin/settings/classes/setup.class.php:529
2064
  msgid "Are you sure?"
2065
  msgstr "هل أنت متأكد من ذلك؟"
2066
 
2067
+ #: admin/settings/classes/setup.class.php:593
2068
  #: build/wp-ulike/admin/settings/classes/setup.class.php:530
2069
  msgid "Please enter %s or more characters"
2070
  msgstr "الرجاء إدخال %s او اكثر من الحروف"
2071
 
2072
+ #: admin/settings/classes/setup.class.php:594
2073
  #: build/wp-ulike/admin/settings/classes/setup.class.php:531
2074
  msgid "Searching..."
2075
  msgstr "يتم البحث..."
2076
 
2077
+ #: admin/settings/classes/setup.class.php:595
2078
  #: build/wp-ulike/admin/settings/classes/setup.class.php:532
2079
  #, fuzzy
2080
  msgid "No results found."
2081
  msgstr "لم نجد نتائج في"
2082
 
2083
+ #: admin/settings/classes/setup.class.php:696
2084
  #: build/wp-ulike/admin/settings/classes/setup.class.php:634
2085
  msgid "Oops! Not allowed."
2086
  msgstr ""
2087
 
2088
+ #: admin/settings/classes/setup.class.php:768
2089
+ #: admin/settings/classes/setup.class.php:772
2090
  #: build/wp-ulike/admin/settings/classes/setup.class.php:708
2091
  #: build/wp-ulike/admin/settings/classes/setup.class.php:712
2092
  #, fuzzy
2322
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:76
2323
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:164
2324
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:306
2325
+ #: includes/classes/class-wp-ulike-customizer.php:73
2326
+ #: includes/classes/class-wp-ulike-customizer.php:161
2327
+ #: includes/classes/class-wp-ulike-customizer.php:303
2328
  msgid "Normal"
2329
  msgstr "عادي"
2330
 
2568
  #: build/wp-ulike/admin/settings/fields/link_color/link_color.php:37
2569
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:94
2570
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:202
2571
+ #: includes/classes/class-wp-ulike-customizer.php:91
2572
+ #: includes/classes/class-wp-ulike-customizer.php:199
2573
  msgid "Hover"
2574
  msgstr "المرور فوق"
2575
 
2578
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:114
2579
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:237
2580
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:330
2581
+ #: includes/classes/class-wp-ulike-customizer.php:111
2582
+ #: includes/classes/class-wp-ulike-customizer.php:234
2583
+ #: includes/classes/class-wp-ulike-customizer.php:327
2584
  msgid "Active"
2585
  msgstr "تفعيل"
2586
 
2653
  msgid "Backup Font Family"
2654
  msgstr "النسخ الإحتياطي للخط"
2655
 
2656
+ #: admin/settings/fields/typography/typography.php:119
2657
+ #: admin/settings/fields/typography/typography.php:132
2658
+ #: admin/settings/fields/typography/typography.php:145
2659
+ #: admin/settings/fields/typography/typography.php:160
2660
+ #: admin/settings/fields/typography/typography.php:176
2661
+ #: admin/settings/fields/typography/typography.php:189
2662
+ #: admin/settings/fields/typography/typography.php:203
2663
+ #: admin/settings/fields/typography/typography.php:221
2664
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:119
2665
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:132
2666
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:145
2667
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:160
2668
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:176
2669
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:189
2670
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:203
2671
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:221
2672
+ #: build/wp-ulike/inc/functions/templates.php:26
2673
+ #: includes/functions/templates.php:23
2674
+ msgid "Default"
2675
+ msgstr "افتراضي"
2676
+
2677
  #: admin/settings/fields/typography/typography.php:130
2678
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:130
2679
  msgid "Font Style"
2877
  msgstr "من فضلك أدخل رابط صحيح!"
2878
 
2879
  #: build/wp-ulike/inc/classes/class-wp-ulike-ajax-listener-base.php:60
2880
+ #: includes/classes/class-wp-ulike-ajax-listener-base.php:69
2881
  msgid "There was an error processing the request."
2882
  msgstr ""
2883
 
2884
+ #: build/wp-ulike/inc/classes/class-wp-ulike-cta-listener.php:46
2885
+ #: build/wp-ulike/inc/classes/class-wp-ulike-voters-listener.php:36
2886
+ #: includes/classes/class-wp-ulike-cta-listener.php:55
2887
+ #: includes/classes/class-wp-ulike-voters-listener.php:41
2888
  msgid "permission denied."
2889
  msgstr ""
2890
 
2891
+ #: build/wp-ulike/inc/classes/class-wp-ulike-cta-listener.php:50
2892
+ #: build/wp-ulike/inc/classes/class-wp-ulike-voters-listener.php:40
2893
+ #: includes/classes/class-wp-ulike-cta-listener.php:59
2894
+ #: includes/classes/class-wp-ulike-voters-listener.php:45
2895
  msgid "Invalid item type."
2896
  msgstr ""
2897
 
2898
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:52
2899
+ #: includes/classes/class-wp-ulike-customizer.php:49
2900
  #, fuzzy
2901
  msgid "Button Templates"
2902
  msgstr "نص الزر"
2903
 
2904
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:56
2905
+ #: includes/classes/class-wp-ulike-customizer.php:53
2906
  #, fuzzy
2907
  msgid "Template Wrapper"
2908
  msgstr "متغيرات القالب"
2909
 
2910
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:61
2911
+ #: includes/classes/class-wp-ulike-customizer.php:58
2912
  msgid "In this section, you can customize the template wrapper styles."
2913
  msgstr ""
2914
 
2915
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:68
2916
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:380
2917
+ #: includes/classes/class-wp-ulike-customizer.php:65
2918
+ #: includes/classes/class-wp-ulike-customizer.php:377
2919
  msgid "Typography"
2920
  msgstr ""
2921
 
2932
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:475
2933
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:513
2934
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:556
2935
+ #: includes/classes/class-wp-ulike-customizer.php:78
2936
+ #: includes/classes/class-wp-ulike-customizer.php:97
2937
+ #: includes/classes/class-wp-ulike-customizer.php:117
2938
+ #: includes/classes/class-wp-ulike-customizer.php:173
2939
+ #: includes/classes/class-wp-ulike-customizer.php:212
2940
+ #: includes/classes/class-wp-ulike-customizer.php:246
2941
+ #: includes/classes/class-wp-ulike-customizer.php:314
2942
+ #: includes/classes/class-wp-ulike-customizer.php:339
2943
+ #: includes/classes/class-wp-ulike-customizer.php:396
2944
+ #: includes/classes/class-wp-ulike-customizer.php:434
2945
+ #: includes/classes/class-wp-ulike-customizer.php:472
2946
+ #: includes/classes/class-wp-ulike-customizer.php:510
2947
+ #: includes/classes/class-wp-ulike-customizer.php:553
2948
  #, fuzzy
2949
  msgid "Background"
2950
  msgstr "حجم الخلفية"
2962
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:482
2963
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:520
2964
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:563
2965
+ #: includes/classes/class-wp-ulike-customizer.php:85
2966
+ #: includes/classes/class-wp-ulike-customizer.php:105
2967
+ #: includes/classes/class-wp-ulike-customizer.php:123
2968
+ #: includes/classes/class-wp-ulike-customizer.php:179
2969
+ #: includes/classes/class-wp-ulike-customizer.php:220
2970
+ #: includes/classes/class-wp-ulike-customizer.php:252
2971
+ #: includes/classes/class-wp-ulike-customizer.php:321
2972
+ #: includes/classes/class-wp-ulike-customizer.php:345
2973
+ #: includes/classes/class-wp-ulike-customizer.php:403
2974
+ #: includes/classes/class-wp-ulike-customizer.php:441
2975
+ #: includes/classes/class-wp-ulike-customizer.php:479
2976
+ #: includes/classes/class-wp-ulike-customizer.php:517
2977
+ #: includes/classes/class-wp-ulike-customizer.php:560
2978
  #, fuzzy
2979
  msgid "Border"
2980
  msgstr "حدود الصندوق"
2982
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:137
2983
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:280
2984
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:358
2985
+ #: includes/classes/class-wp-ulike-customizer.php:134
2986
+ #: includes/classes/class-wp-ulike-customizer.php:277
2987
+ #: includes/classes/class-wp-ulike-customizer.php:355
2988
  #, fuzzy
2989
  msgid "Padding"
2990
  msgstr "حشوة الصندوق"
2992
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:145
2993
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:288
2994
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:365
2995
+ #: includes/classes/class-wp-ulike-customizer.php:142
2996
+ #: includes/classes/class-wp-ulike-customizer.php:285
2997
+ #: includes/classes/class-wp-ulike-customizer.php:362
2998
  msgid "Margin"
2999
  msgstr ""
3000
 
3001
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:157
3002
+ #: includes/classes/class-wp-ulike-customizer.php:154
3003
  msgid ""
3004
  "In this section, you can customize the styles related to the buttons. Please "
3005
  "note that some buttons have different structures (such as SVG based) and "
3015
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:431
3016
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:469
3017
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:507
3018
+ #: includes/classes/class-wp-ulike-customizer.php:166
3019
+ #: includes/classes/class-wp-ulike-customizer.php:205
3020
+ #: includes/classes/class-wp-ulike-customizer.php:239
3021
+ #: includes/classes/class-wp-ulike-customizer.php:308
3022
+ #: includes/classes/class-wp-ulike-customizer.php:332
3023
+ #: includes/classes/class-wp-ulike-customizer.php:390
3024
+ #: includes/classes/class-wp-ulike-customizer.php:428
3025
+ #: includes/classes/class-wp-ulike-customizer.php:466
3026
+ #: includes/classes/class-wp-ulike-customizer.php:504
3027
  #, fuzzy
3028
  msgid "Text Color"
3029
  msgstr "لون الخط"
3033
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:451
3034
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:489
3035
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:527
3036
+ #: includes/classes/class-wp-ulike-customizer.php:186
3037
+ #: includes/classes/class-wp-ulike-customizer.php:410
3038
+ #: includes/classes/class-wp-ulike-customizer.php:448
3039
+ #: includes/classes/class-wp-ulike-customizer.php:486
3040
+ #: includes/classes/class-wp-ulike-customizer.php:524
3041
  msgid "Image Dimensions"
3042
  msgstr ""
3043
 
3044
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:196
3045
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:231
3046
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:262
3047
+ #: includes/classes/class-wp-ulike-customizer.php:193
3048
+ #: includes/classes/class-wp-ulike-customizer.php:228
3049
+ #: includes/classes/class-wp-ulike-customizer.php:259
3050
  #, fuzzy
3051
  msgid "Like Image"
3052
  msgstr "الصورة"
3053
 
3054
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:273
3055
+ #: includes/classes/class-wp-ulike-customizer.php:270
3056
  #, fuzzy
3057
  msgid "Button Dimensions"
3058
  msgstr "موضع الزر"
3059
 
3060
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:294
3061
+ #: includes/classes/class-wp-ulike-customizer.php:291
3062
  #, fuzzy
3063
  msgid "Counter"
3064
  msgstr "وسط"
3065
 
3066
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:299
3067
+ #: includes/classes/class-wp-ulike-customizer.php:296
3068
  msgid "In this section, you can customize the template counter styles."
3069
  msgstr ""
3070
 
3071
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:373
3072
+ #: includes/classes/class-wp-ulike-customizer.php:370
3073
  msgid "Toast Messages"
3074
  msgstr ""
3075
 
3076
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:388
3077
+ #: includes/classes/class-wp-ulike-customizer.php:385
3078
  msgid "Info"
3079
  msgstr ""
3080
 
3082
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:458
3083
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:496
3084
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:534
3085
+ #: includes/classes/class-wp-ulike-customizer.php:417
3086
+ #: includes/classes/class-wp-ulike-customizer.php:455
3087
+ #: includes/classes/class-wp-ulike-customizer.php:493
3088
+ #: includes/classes/class-wp-ulike-customizer.php:531
3089
  #, fuzzy
3090
  msgid "Icon Image"
3091
  msgstr "صورة الزر"
3092
 
3093
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:426
3094
+ #: includes/classes/class-wp-ulike-customizer.php:423
3095
  msgid "Success"
3096
  msgstr ""
3097
 
3098
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:464
3099
+ #: includes/classes/class-wp-ulike-customizer.php:461
3100
  msgid "Error"
3101
  msgstr ""
3102
 
3103
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:502
3104
+ #: includes/classes/class-wp-ulike-customizer.php:499
3105
  msgid "Warning"
3106
  msgstr ""
3107
 
3108
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:546
3109
+ #: includes/classes/class-wp-ulike-customizer.php:543
3110
  #, fuzzy
3111
  msgid "Likers Box"
3112
  msgstr "عدد من قام بالضغط على زر الإعجاب"
3113
 
3114
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:570
3115
+ #: includes/classes/class-wp-ulike-customizer.php:567
3116
  #, fuzzy
3117
  msgid "Arrow Color"
3118
  msgstr "لون الخط"
3119
 
3120
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:241
3121
+ #: includes/classes/class-wp-ulike-mycred.php:238
3122
  msgid "Points for Liking content"
3123
  msgstr ""
3124
 
3125
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:245
3126
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:270
3127
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:295
3128
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:320
3129
+ #: includes/classes/class-wp-ulike-mycred.php:242
3130
+ #: includes/classes/class-wp-ulike-mycred.php:267
3131
+ #: includes/classes/class-wp-ulike-mycred.php:292
3132
+ #: includes/classes/class-wp-ulike-mycred.php:317
3133
  msgid "Points"
3134
  msgstr "نقاط"
3135
 
3136
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:247
3137
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:272
3138
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:297
3139
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:322
3140
+ #: includes/classes/class-wp-ulike-mycred.php:244
3141
+ #: includes/classes/class-wp-ulike-mycred.php:269
3142
+ #: includes/classes/class-wp-ulike-mycred.php:294
3143
+ #: includes/classes/class-wp-ulike-mycred.php:319
3144
  msgid "Use zero to disable."
3145
  msgstr "اكتب الصفر لتعطيلها."
3146
 
3147
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:252
3148
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:277
3149
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:302
3150
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:327
3151
+ #: includes/classes/class-wp-ulike-mycred.php:249
3152
+ #: includes/classes/class-wp-ulike-mycred.php:274
3153
+ #: includes/classes/class-wp-ulike-mycred.php:299
3154
+ #: includes/classes/class-wp-ulike-mycred.php:324
3155
  msgid "Limit"
3156
  msgstr ""
3157
 
3158
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:258
3159
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:283
3160
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:308
3161
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:333
3162
+ #: includes/classes/class-wp-ulike-mycred.php:255
3163
+ #: includes/classes/class-wp-ulike-mycred.php:280
3164
+ #: includes/classes/class-wp-ulike-mycred.php:305
3165
+ #: includes/classes/class-wp-ulike-mycred.php:330
3166
  msgid "Log template"
3167
  msgstr ""
3168
 
3169
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:266
3170
+ #: includes/classes/class-wp-ulike-mycred.php:263
3171
  msgid "Points for Author Who Get Liked"
3172
  msgstr ""
3173
 
3174
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:291
3175
+ #: includes/classes/class-wp-ulike-mycred.php:288
3176
  msgid "Points for unliking content"
3177
  msgstr ""
3178
 
3179
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:316
3180
+ #: includes/classes/class-wp-ulike-mycred.php:313
3181
  msgid "Points for Author Who Get Unliked"
3182
  msgstr ""
3183
 
3184
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:341
3185
+ #: includes/classes/class-wp-ulike-mycred.php:338
3186
  msgid "Limits"
3187
  msgstr "حدود"
3188
 
3189
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:346
3190
+ #: includes/classes/class-wp-ulike-mycred.php:343
3191
  msgid ""
3192
  "%plural% is to be awarded even when item authors Like/Unlike their own item."
3193
  msgstr "%plural% سيتم منحها حتى عند إعجاب او عدم إعجاب مؤلف المنشور."
3194
 
3195
+ #: build/wp-ulike/inc/functions/counter.php:72
3196
+ #: includes/functions/counter.php:69
3197
  msgid "Please enter some value for required variables."
3198
  msgstr "الرجاء إدخال قيمة للمتغيرات المطلوبة."
3199
 
3200
+ #: build/wp-ulike/inc/functions/counter.php:86
3201
+ #: includes/functions/counter.php:83
3202
  msgid "Table info is empty."
3203
  msgstr "جدول المعلومات فارغ"
3204
 
3205
+ #: build/wp-ulike/inc/functions/templates.php:38
3206
+ #: includes/functions/templates.php:35
3207
  msgid "Twitter Heart"
3208
  msgstr "قلب تويتر"
3209
 
3210
+ #: build/wp-ulike/inc/functions/templates.php:44
3211
+ #: includes/functions/templates.php:41
3212
  msgid "Animated Heart"
3213
  msgstr "قلب متحرك"
3214
 
3215
+ #: build/wp-ulike/inc/hooks/shortcodes.php:146
3216
+ #: includes/hooks/shortcodes.php:143
3217
  msgid "Error receiving input parameters"
3218
  msgstr ""
3219
 
3220
+ #: build/wp-ulike/inc/hooks/third-party.php:120
3221
+ #: includes/hooks/third-party.php:116
3222
  msgid "WP ULike Activity"
3223
  msgstr "نشاطات وردبرس یولایک"
3224
 
3225
+ #: build/wp-ulike/inc/hooks/third-party.php:135
3226
+ #: includes/hooks/third-party.php:131
3227
  msgid "Votes"
3228
  msgstr ""
3229
 
3230
+ #: build/wp-ulike/inc/hooks/third-party.php:344
3231
+ #: includes/hooks/third-party.php:340
3232
  msgid "posts"
3233
  msgstr ""
3234
 
3235
+ #: build/wp-ulike/inc/hooks/third-party.php:351
3236
+ #: includes/hooks/third-party.php:347
3237
  msgid "comments"
3238
  msgstr ""
3239
 
3240
+ #: build/wp-ulike/inc/hooks/third-party.php:357
3241
+ #: includes/hooks/third-party.php:353
3242
  msgid "activities"
3243
  msgstr ""
3244
 
3245
+ #: build/wp-ulike/inc/hooks/third-party.php:365
3246
+ #: includes/hooks/third-party.php:361
3247
  msgid "topics"
3248
  msgstr ""
3249
 
3250
+ #: build/wp-ulike/inc/hooks/third-party.php:368
3251
+ #: includes/hooks/third-party.php:364
3252
  msgid "replies"
3253
  msgstr ""
3254
 
3255
+ #: build/wp-ulike/inc/hooks/third-party.php:380
3256
+ #: includes/hooks/third-party.php:376
3257
  msgid "You have %d new %s likes"
3258
  msgstr ""
3259
 
3260
+ #: build/wp-ulike/inc/hooks/third-party.php:384
3261
+ #: includes/hooks/third-party.php:380
3262
  msgid "%s liked one of your %s"
3263
  msgstr ""
3264
 
3265
+ #: build/wp-ulike/inc/hooks/third-party.php:428
3266
+ #: includes/hooks/third-party.php:424
3267
  msgid "New activity liked"
3268
  msgstr ""
3269
 
3270
+ #: build/wp-ulike/inc/hooks/third-party.php:433
3271
+ #: includes/hooks/third-party.php:429
3272
  msgid "New comment liked"
3273
  msgstr ""
3274
 
3275
+ #: build/wp-ulike/inc/hooks/third-party.php:438
3276
+ #: includes/hooks/third-party.php:434
3277
  msgid "New post liked"
3278
  msgstr ""
3279
 
3280
+ #: build/wp-ulike/inc/hooks/third-party.php:443
3281
+ #: includes/hooks/third-party.php:439
3282
  msgid "New topic liked"
3283
  msgstr "موضوع جديد تم الإعجاب به"
3284
 
3285
+ #: build/wp-ulike/inc/hooks/third-party.php:797
3286
+ #: includes/hooks/third-party.php:795
3287
+ msgid "Points for liking content"
3288
+ msgstr ""
3289
+
3290
+ #: build/wp-ulike/inc/hooks/third-party.php:798
3291
+ #: includes/hooks/third-party.php:796
3292
  msgid ""
3293
  "This hook award / deducts points from users who Like/Unlike any content of "
3294
  "WordPress, bbPress, BuddyPress & ..."
3295
  msgstr ""
3296
 
3297
+ #: build/wp-ulike/inc/hooks/third-party.php:814
3298
+ #: includes/hooks/third-party.php:812
3299
  msgid "Liking Content"
3300
  msgstr ""
3301
 
3302
+ #: build/wp-ulike/inc/hooks/third-party.php:815
3303
+ #: includes/hooks/third-party.php:813
3304
  msgid "Liked Content"
3305
  msgstr "المحتوى الحاصل على إعجاب"
3306
 
3307
+ #: build/wp-ulike/inc/hooks/third-party.php:816
3308
+ #: includes/hooks/third-party.php:814
3309
  msgid "Unliking Content"
3310
  msgstr ""
3311
 
3312
+ #: build/wp-ulike/inc/hooks/third-party.php:817
3313
+ #: includes/hooks/third-party.php:815
3314
  msgid "Unliked Content"
3315
  msgstr ""
3316
 
3317
+ #: build/wp-ulike/inc/hooks/third-party.php:835
3318
+ #: includes/hooks/third-party.php:833
3319
  msgid "Recent Posts Liked"
3320
  msgstr "مشاركات تم الإعجاب بها مؤخراً"
3321
 
3322
+ #: build/wp-ulike/inc/hooks/third-party.php:840
3323
+ #: includes/hooks/third-party.php:838
3324
  msgid "Recent Comments Liked"
3325
  msgstr "تعليقات تم الإعجاب بها مؤخراً"
3326
 
3327
+ #: build/wp-ulike/inc/hooks/third-party.php:871
3328
+ #: build/wp-ulike/inc/hooks/third-party.php:897
3329
+ #: build/wp-ulike/inc/hooks/third-party.php:927
3330
+ #: build/wp-ulike/inc/hooks/third-party.php:957
3331
+ #: includes/hooks/third-party.php:869 includes/hooks/third-party.php:895
3332
+ #: includes/hooks/third-party.php:925 includes/hooks/third-party.php:955
3333
  msgid "This user has not made any likes."
3334
  msgstr ""
3335
 
3337
  msgid "WP ULike"
3338
  msgstr "وردبرس یولایک"
3339
 
3340
+ #: build/wp-ulike/wp-ulike.php:594 wp-ulike.php:76
3341
  msgid ""
3342
  "You are using two instances of WP ULike plugin at same time, please deactive "
3343
  "one of them."
languages/wp-ulike-de.po CHANGED
@@ -4,7 +4,7 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: Plugins - WP ULike - Stable (latest release)\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/plugins/wp-ulike/\n"
7
- "POT-Creation-Date: 2021-01-09 00:39:07+00:00\n"
8
  "PO-Revision-Date: 2019-06-19 16:23:52+0000\n"
9
  "Language: de\n"
10
  "MIME-Version: 1.0\n"
@@ -33,11 +33,11 @@ msgid "It's Ok!"
33
  msgstr ""
34
 
35
  #: admin/admin-functions.php:240
36
- #: admin/classes/class-wp-ulike-admin-panel.php:757
37
  #: build/wp-ulike/admin/admin-functions.php:243
38
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:760
39
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:152
40
- #: inc/classes/class-wp-ulike-customizer.php:149
41
  msgid "Button"
42
  msgstr ""
43
 
@@ -95,15 +95,17 @@ msgstr ""
95
  #: admin/admin-hooks.php:170 admin/admin-hooks.php:194
96
  #: admin/admin-hooks.php:217 admin/classes/class-wp-ulike-admin-panel.php:383
97
  #: admin/classes/class-wp-ulike-admin-panel.php:413
98
- #: admin/classes/class-wp-ulike-admin-panel.php:531
99
  #: admin/classes/class-wp-ulike-admin-panel.php:560
 
100
  #: build/wp-ulike/admin/admin-hooks.php:173
101
  #: build/wp-ulike/admin/admin-hooks.php:197
102
  #: build/wp-ulike/admin/admin-hooks.php:220
103
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:386
104
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:416
105
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:534
106
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:563
 
107
  msgid "Get More Information"
108
  msgstr ""
109
 
@@ -143,25 +145,25 @@ msgstr ""
143
 
144
  #: admin/admin-hooks.php:485 admin/classes/class-wp-ulike-admin-panel.php:125
145
  #: admin/classes/class-wp-ulike-admin-panel.php:142
146
- #: admin/classes/class-wp-ulike-admin-panel.php:611
147
- #: admin/classes/class-wp-ulike-admin-panel.php:641
148
  #: admin/classes/class-wp-ulike-widget.php:355
149
  #: build/wp-ulike/admin/admin-hooks.php:488
150
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:128
151
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:145
152
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:614
153
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:644
154
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:358
155
  msgid "Like"
156
  msgstr ""
157
 
158
- #: admin/classes/class-wp-ulike-admin-assets.php:119
159
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:107
160
  msgid "Are you sure to remove this item?!"
161
  msgstr ""
162
 
163
- #: admin/classes/class-wp-ulike-admin-assets.php:120
164
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:108
165
  msgid "No information was found in this database!"
166
  msgstr ""
167
 
@@ -197,13 +199,13 @@ msgstr ""
197
  #: admin/includes/templates/statistics.php:124
198
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:62
199
  #: build/wp-ulike/admin/includes/templates/statistics.php:127
200
- #: build/wp-ulike/wp-ulike.php:169 wp-ulike.php:166
201
  msgid "Statistics"
202
  msgstr ""
203
 
204
  #: admin/classes/class-wp-ulike-admin-pages.php:67
205
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:70
206
- #: build/wp-ulike/wp-ulike.php:170 wp-ulike.php:167
207
  msgid "About"
208
  msgstr ""
209
 
@@ -230,7 +232,7 @@ msgstr "Logdateien"
230
 
231
  #: admin/classes/class-wp-ulike-admin-panel.php:43
232
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:46
233
- #: build/wp-ulike/wp-ulike.php:168 wp-ulike.php:165
234
  msgid "Settings"
235
  msgstr ""
236
 
@@ -271,12 +273,12 @@ msgstr ""
271
 
272
  #: admin/classes/class-wp-ulike-admin-panel.php:131
273
  #: admin/classes/class-wp-ulike-admin-panel.php:147
274
- #: admin/classes/class-wp-ulike-admin-panel.php:622
275
- #: admin/classes/class-wp-ulike-admin-panel.php:653
276
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:134
277
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:150
278
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:625
279
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:656
280
  msgid "Unlike"
281
  msgstr ""
282
 
@@ -376,53 +378,53 @@ msgid "With this option, you can disable all plugin assets on these pages."
376
  msgstr ""
377
 
378
  #: admin/classes/class-wp-ulike-admin-panel.php:201
379
- #: admin/classes/class-wp-ulike-admin-panel.php:694
380
  #: admin/includes/templates/about.php:46
381
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:204
382
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:697
383
  #: build/wp-ulike/admin/includes/templates/about.php:49
384
  msgid "Home"
385
  msgstr "Home"
386
 
387
  #: admin/classes/class-wp-ulike-admin-panel.php:202
388
- #: admin/classes/class-wp-ulike-admin-panel.php:695
389
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:205
390
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:698
391
  msgid "Singular"
392
  msgstr ""
393
 
394
  #: admin/classes/class-wp-ulike-admin-panel.php:203
395
- #: admin/classes/class-wp-ulike-admin-panel.php:696
396
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:206
397
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:699
398
  msgid "Archives"
399
  msgstr "Archives"
400
 
401
  #: admin/classes/class-wp-ulike-admin-panel.php:204
402
- #: admin/classes/class-wp-ulike-admin-panel.php:697
403
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:207
404
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:700
405
  msgid "Categories"
406
  msgstr "Katgeorien"
407
 
408
  #: admin/classes/class-wp-ulike-admin-panel.php:205
409
- #: admin/classes/class-wp-ulike-admin-panel.php:698
410
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:208
411
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:701
412
  msgid "Search Results"
413
  msgstr "Suchergebnisse"
414
 
415
  #: admin/classes/class-wp-ulike-admin-panel.php:206
416
- #: admin/classes/class-wp-ulike-admin-panel.php:699
417
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:209
418
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:702
419
  msgid "Tags"
420
  msgstr "Schlagwörter"
421
 
422
  #: admin/classes/class-wp-ulike-admin-panel.php:207
423
- #: admin/classes/class-wp-ulike-admin-panel.php:700
424
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:210
425
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:703
426
  msgid "Author Page"
427
  msgstr ""
428
 
@@ -488,12 +490,12 @@ msgstr ""
488
 
489
  #: admin/classes/class-wp-ulike-admin-panel.php:268
490
  #: admin/classes/class-wp-ulike-admin-panel.php:280
491
- #: admin/classes/class-wp-ulike-admin-panel.php:765
492
- #: admin/classes/class-wp-ulike-admin-panel.php:821
493
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:271
494
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:283
495
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:768
496
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:824
497
  msgid "Allowed Variables:"
498
  msgstr ""
499
 
@@ -615,204 +617,223 @@ msgid ""
615
  "with just a few simple clicks."
616
  msgstr ""
617
 
618
- #: admin/classes/class-wp-ulike-admin-panel.php:433
619
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
620
  msgid "Translations"
621
  msgstr "Übersetzungen"
622
 
623
- #: admin/classes/class-wp-ulike-admin-panel.php:442
624
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:445
625
  msgid "Strings"
626
  msgstr ""
627
 
628
- #: admin/classes/class-wp-ulike-admin-panel.php:448
629
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:451
630
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:30
631
- #: inc/classes/class-wp-ulike-setting-repo.php:30
632
  msgid "You have already registered a vote."
633
  msgstr ""
634
 
635
- #: admin/classes/class-wp-ulike-admin-panel.php:449
636
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:452
637
  msgid "Already Voted Message"
638
  msgstr ""
639
 
640
- #: admin/classes/class-wp-ulike-admin-panel.php:454
641
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:457
642
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:21
643
- #: inc/classes/class-wp-ulike-setting-repo.php:21
644
  msgid "You Should Login To Submit Your Like"
645
  msgstr ""
646
 
647
- #: admin/classes/class-wp-ulike-admin-panel.php:455
648
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:458
649
  msgid "Login Required Message"
650
  msgstr ""
651
 
652
- #: admin/classes/class-wp-ulike-admin-panel.php:460
653
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:463
654
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:39
655
- #: inc/classes/class-wp-ulike-setting-repo.php:39
656
  msgid "Thanks! You Liked This."
657
  msgstr ""
658
 
659
- #: admin/classes/class-wp-ulike-admin-panel.php:461
660
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:464
661
  msgid "Liked Notice Message"
662
  msgstr ""
663
 
664
- #: admin/classes/class-wp-ulike-admin-panel.php:466
665
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:469
666
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:48
667
- #: inc/classes/class-wp-ulike-setting-repo.php:48
668
  msgid "Sorry! You unliked this."
669
  msgstr ""
670
 
671
- #: admin/classes/class-wp-ulike-admin-panel.php:467
672
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:470
673
  msgid "Unliked Notice Message"
674
  msgstr ""
675
 
676
- #: admin/classes/class-wp-ulike-admin-panel.php:472
677
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:475
678
  #: build/wp-ulike/inc/functions/templates.php:73
679
  #: build/wp-ulike/inc/functions/templates.php:125
680
  #: build/wp-ulike/inc/functions/templates.php:177
681
  #: build/wp-ulike/inc/functions/templates.php:227
682
- #: inc/functions/templates.php:70 inc/functions/templates.php:122
683
- #: inc/functions/templates.php:174 inc/functions/templates.php:224
684
  msgid "Like Button"
685
  msgstr ""
686
 
687
- #: admin/classes/class-wp-ulike-admin-panel.php:473
688
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:476
689
  msgid "Like Button Aria Label"
690
  msgstr ""
691
 
692
- #: admin/classes/class-wp-ulike-admin-panel.php:483
693
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:486
694
  msgid "Developer Tools"
695
  msgstr ""
696
 
697
- #: admin/classes/class-wp-ulike-admin-panel.php:489
698
  #: admin/settings/fields/typography/typography.php:295
699
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:492
700
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:295
701
  msgid "Custom Style"
702
  msgstr ""
703
 
704
- #: admin/classes/class-wp-ulike-admin-panel.php:503
705
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:506
706
  msgid "Custom Spinner"
707
  msgstr ""
708
 
709
- #: admin/classes/class-wp-ulike-admin-panel.php:510
710
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:513
711
  msgid "Enable Inline Custom CSS"
712
  msgstr ""
713
 
714
- #: admin/classes/class-wp-ulike-admin-panel.php:511
715
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:514
716
  msgid ""
717
  "If you don't want to use \"custom.css\" file for any reason, by activating "
718
  "this option, the styles will be added to the page as inline."
719
  msgstr ""
720
 
721
- #: admin/classes/class-wp-ulike-admin-panel.php:518
722
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:521
723
  msgid "REST API"
724
  msgstr ""
725
 
726
- #: admin/classes/class-wp-ulike-admin-panel.php:525
727
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:528
728
  msgid "How to Get Started with WP ULike REST API?"
729
  msgstr ""
730
 
731
- #: admin/classes/class-wp-ulike-admin-panel.php:526
732
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:529
733
  msgid ""
734
  "Have you ever tried to get data from online sources like WP ULike logs and "
735
  "use them in your Application or website? the solution is Rest API!"
736
  msgstr ""
737
 
738
- #: admin/classes/class-wp-ulike-admin-panel.php:547
739
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:550
740
  msgid "Optimization"
741
  msgstr ""
742
 
743
- #: admin/classes/class-wp-ulike-admin-panel.php:554
744
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:557
745
  msgid "How to Optimize or Repair WP ULike Database Tables?"
746
  msgstr ""
747
 
748
- #: admin/classes/class-wp-ulike-admin-panel.php:555
749
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:558
750
  msgid ""
751
  "Have you ever optimized your WP ULike database? Optimizing your database "
752
  "cleans up unwanted data which reduces database size and improves performance."
753
  msgstr ""
754
 
755
- #: admin/classes/class-wp-ulike-admin-panel.php:587
756
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:590
757
  msgid "Select a Template"
758
  msgstr ""
759
 
760
- #: admin/classes/class-wp-ulike-admin-panel.php:588
761
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:591
762
  msgid "Display online preview"
763
  msgstr ""
764
 
765
- #: admin/classes/class-wp-ulike-admin-panel.php:588
766
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:591
767
  msgid "Here"
768
  msgstr ""
769
 
770
- #: admin/classes/class-wp-ulike-admin-panel.php:596
771
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:599
772
  msgid "Button Type"
773
  msgstr ""
774
 
775
- #: admin/classes/class-wp-ulike-admin-panel.php:599
776
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:602
777
  msgid "Image"
778
  msgstr ""
779
 
780
- #: admin/classes/class-wp-ulike-admin-panel.php:600
781
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:603
782
  msgid "Text"
783
  msgstr "Text"
784
 
785
- #: admin/classes/class-wp-ulike-admin-panel.php:607
786
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:610
787
  msgid ""
788
  "Enter your custom button text in the fields above. You can also use HTML "
789
  "tags in these fields."
790
  msgstr ""
791
 
792
- #: admin/classes/class-wp-ulike-admin-panel.php:608
793
- #: admin/classes/class-wp-ulike-admin-panel.php:616
794
- #: admin/classes/class-wp-ulike-admin-panel.php:627
795
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:611
796
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:619
797
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:630
798
  msgid "Button Text"
799
  msgstr ""
800
 
801
- #: admin/classes/class-wp-ulike-admin-panel.php:638
802
- #: admin/classes/class-wp-ulike-admin-panel.php:646
803
- #: admin/classes/class-wp-ulike-admin-panel.php:658
804
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:641
805
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:649
806
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:661
807
  msgid "Button Image"
808
  msgstr ""
809
 
810
- #: admin/classes/class-wp-ulike-admin-panel.php:671
811
  #: admin/classes/class-wp-ulike-settings.php:65
812
  #: admin/classes/class-wp-ulike-settings.php:72
813
  #: admin/classes/class-wp-ulike-settings.php:78
814
  #: admin/classes/class-wp-ulike-settings.php:84
815
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:674
816
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:68
817
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:75
818
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:81
@@ -820,236 +841,219 @@ msgstr ""
820
  msgid "Automatic display"
821
  msgstr ""
822
 
823
- #: admin/classes/class-wp-ulike-admin-panel.php:676
824
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:679
825
  msgid "Button Position"
826
  msgstr ""
827
 
828
- #: admin/classes/class-wp-ulike-admin-panel.php:679
829
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:682
830
  msgid "Top of Content"
831
  msgstr ""
832
 
833
- #: admin/classes/class-wp-ulike-admin-panel.php:680
834
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:683
835
  msgid "Bottom of Content"
836
  msgstr ""
837
 
838
- #: admin/classes/class-wp-ulike-admin-panel.php:681
839
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:684
840
  msgid "Top and Bottom"
841
  msgstr ""
842
 
843
- #: admin/classes/class-wp-ulike-admin-panel.php:688
844
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:691
845
  msgid "Automatic Display Restriction"
846
  msgstr ""
847
 
848
- #: admin/classes/class-wp-ulike-admin-panel.php:689
849
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:692
850
  msgid "With this option, you can disable automatic display on these pages."
851
  msgstr ""
852
 
853
- #: admin/classes/class-wp-ulike-admin-panel.php:707
854
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:710
855
  msgid "Post Types Filter"
856
  msgstr ""
857
 
858
- #: admin/classes/class-wp-ulike-admin-panel.php:708
859
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:711
860
  msgid "Select a post type"
861
  msgstr ""
862
 
863
- #: admin/classes/class-wp-ulike-admin-panel.php:709
864
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:712
865
  msgid "Make these post types an exception and display the button on them."
866
  msgstr ""
867
 
868
- #: admin/classes/class-wp-ulike-admin-panel.php:719
869
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:722
870
  msgid "Display Counter Value Condition"
871
  msgstr ""
872
 
873
- #: admin/classes/class-wp-ulike-admin-panel.php:722
874
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:725
875
  msgid "Visible"
876
  msgstr ""
877
 
878
- #: admin/classes/class-wp-ulike-admin-panel.php:723
879
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:726
880
  msgid "Hidden"
881
  msgstr ""
882
 
883
- #: admin/classes/class-wp-ulike-admin-panel.php:724
884
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:727
885
  msgid "Only Logged In Users"
886
  msgstr ""
887
 
888
- #: admin/classes/class-wp-ulike-admin-panel.php:730
889
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:733
890
  msgid "Hide Zero Counter Box"
891
  msgstr ""
892
 
893
- #: admin/classes/class-wp-ulike-admin-panel.php:736
894
  #: admin/classes/class-wp-ulike-settings.php:58
895
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:739
896
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:61
897
  msgid "Logging Method"
898
  msgstr ""
899
 
900
- #: admin/classes/class-wp-ulike-admin-panel.php:738
901
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:741
902
  msgid "No Limit"
903
  msgstr ""
904
 
905
- #: admin/classes/class-wp-ulike-admin-panel.php:739
906
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:742
907
  msgid "Cookie"
908
  msgstr ""
909
 
910
- #: admin/classes/class-wp-ulike-admin-panel.php:740
911
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:743
912
  #, fuzzy
913
  msgid "Username/IP"
914
  msgstr "Benutzername"
915
 
916
- #: admin/classes/class-wp-ulike-admin-panel.php:741
917
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:744
918
  #, fuzzy
919
  msgid "Username/IP + Cookie"
920
  msgstr "Benutzername"
921
 
922
- #: admin/classes/class-wp-ulike-admin-panel.php:744
923
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:747
924
  msgid ""
925
  "\"No Limit\": There will be no restrictions and users can submit their "
926
  "points each time they refresh the page. In this option, it will not be "
927
  "possible to resubmit reverse points (un-like/un-dislike)."
928
  msgstr ""
929
 
930
- #: admin/classes/class-wp-ulike-admin-panel.php:744
931
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:747
932
  msgid ""
933
  "\"Cookie\": By saving users' cookies, it is possible to submit points only "
934
  "once per user and in case of re-clicking, the appropriate message will be "
935
  "displayed."
936
  msgstr ""
937
 
938
- #: admin/classes/class-wp-ulike-admin-panel.php:744
939
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:747
940
  msgid ""
941
  "Username/IP: By saving the username/IP of users, It supports the reverse "
942
  "feature (un-like and un-dislike) and users can change their reactions and "
943
  "are only allowed to have a specific point type."
944
  msgstr ""
945
 
946
- #: admin/classes/class-wp-ulike-admin-panel.php:749
947
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:752
948
  msgid "Only logged in users"
949
  msgstr ""
950
 
951
- #: admin/classes/class-wp-ulike-admin-panel.php:754
952
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:757
953
  msgid "Display Type"
954
  msgstr ""
955
 
956
- #: admin/classes/class-wp-ulike-admin-panel.php:756
957
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:759
958
  msgid "Template"
959
  msgstr ""
960
 
961
- #: admin/classes/class-wp-ulike-admin-panel.php:771
962
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:774
963
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:138
964
- #: inc/classes/class-wp-ulike-setting-repo.php:138
965
  msgid "You need to login in order to like this post: "
966
  msgstr ""
967
 
968
- #: admin/classes/class-wp-ulike-admin-panel.php:773
969
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:776
970
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:140
971
- #: inc/classes/class-wp-ulike-setting-repo.php:140
972
  msgid "click here"
973
  msgstr ""
974
 
975
- #: admin/classes/class-wp-ulike-admin-panel.php:775
976
- #: admin/classes/class-wp-ulike-admin-panel.php:820
977
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:778
978
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:823
979
  msgid "Custom HTML Template"
980
  msgstr ""
981
 
982
- #: admin/classes/class-wp-ulike-admin-panel.php:781
983
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:784
984
  msgid "Display Likers Box"
985
  msgstr ""
986
 
987
- #: admin/classes/class-wp-ulike-admin-panel.php:786
988
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:789
989
  msgid "User List Arrange"
990
  msgstr ""
991
 
992
- #: admin/classes/class-wp-ulike-admin-panel.php:789
993
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:792
994
  msgid "Ascending"
995
  msgstr ""
996
 
997
- #: admin/classes/class-wp-ulike-admin-panel.php:790
998
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:793
999
  msgid "Descending"
1000
  msgstr ""
1001
 
1002
- #: admin/classes/class-wp-ulike-admin-panel.php:798
1003
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:801
1004
  msgid "Hide For Anonymous Users"
1005
  msgstr ""
1006
 
1007
- #: admin/classes/class-wp-ulike-admin-panel.php:804
1008
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:807
1009
  msgid "Likers Box Display"
1010
  msgstr ""
1011
 
1012
- #: admin/classes/class-wp-ulike-admin-panel.php:807
1013
- #: admin/settings/fields/typography/typography.php:119
1014
- #: admin/settings/fields/typography/typography.php:132
1015
- #: admin/settings/fields/typography/typography.php:145
1016
- #: admin/settings/fields/typography/typography.php:160
1017
- #: admin/settings/fields/typography/typography.php:176
1018
- #: admin/settings/fields/typography/typography.php:189
1019
- #: admin/settings/fields/typography/typography.php:203
1020
- #: admin/settings/fields/typography/typography.php:221
1021
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:810
1022
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:119
1023
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:132
1024
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:145
1025
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:160
1026
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:176
1027
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:189
1028
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:203
1029
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:221
1030
- #: build/wp-ulike/inc/functions/templates.php:26 inc/functions/templates.php:23
1031
- msgid "Default"
1032
- msgstr "Standard"
1033
 
1034
- #: admin/classes/class-wp-ulike-admin-panel.php:808
1035
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:811
1036
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:550
1037
- #: inc/classes/class-wp-ulike-customizer.php:547
1038
  msgid "Popover"
1039
  msgstr ""
1040
 
1041
- #: admin/classes/class-wp-ulike-admin-panel.php:834
1042
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:837
1043
  msgid "Size of Gravatars"
1044
  msgstr ""
1045
 
1046
- #: admin/classes/class-wp-ulike-admin-panel.php:842
1047
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:845
1048
  msgid "Likers Count"
1049
  msgstr ""
1050
 
1051
- #: admin/classes/class-wp-ulike-admin-panel.php:843
1052
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:846
1053
  msgid "The number of users to show in the users liked box"
1054
  msgstr ""
1055
 
@@ -1139,14 +1143,14 @@ msgstr ""
1139
 
1140
  #: admin/classes/class-wp-ulike-settings.php:59
1141
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:62
1142
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:248
1143
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:273
1144
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:292
1145
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:311
1146
- #: inc/classes/class-wp-ulike-mycred.php:245
1147
- #: inc/classes/class-wp-ulike-mycred.php:270
1148
- #: inc/classes/class-wp-ulike-mycred.php:289
1149
- #: inc/classes/class-wp-ulike-mycred.php:308
1150
  msgid "required"
1151
  msgstr ""
1152
 
@@ -1468,7 +1472,8 @@ msgstr ""
1468
 
1469
  #: admin/classes/class-wp-ulike-widget.php:543
1470
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:546
1471
- #: build/wp-ulike/inc/functions/templates.php:32 inc/functions/templates.php:29
 
1472
  msgid "Heart"
1473
  msgstr ""
1474
 
@@ -1777,16 +1782,16 @@ msgstr ""
1777
  msgid "WP ULike Premium"
1778
  msgstr ""
1779
 
1780
- #: admin/includes/templates/go-pro.php:135
1781
- #: build/wp-ulike/admin/includes/templates/go-pro.php:138
1782
  msgid ""
1783
  "Elementor is the #1 WordPress page builder. In the new version of the WP "
1784
  "ULike PRO plugin we fully support this page builder and have a variety of "
1785
  "widgets & controllers that make life much easier for you."
1786
  msgstr ""
1787
 
1788
- #: admin/includes/templates/go-pro.php:135
1789
- #: build/wp-ulike/admin/includes/templates/go-pro.php:138
1790
  msgid ""
1791
  "Just drag your desired widget and drop it in your Elementor sections, "
1792
  "customize as you go and enjoy your like and dislike buttons on your contents."
@@ -1857,39 +1862,39 @@ msgstr ""
1857
  msgid "Topic Title"
1858
  msgstr ""
1859
 
1860
- #: admin/settings/classes/admin-options.class.php:225
1861
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:225
1862
  msgid "Error while saving the changes."
1863
  msgstr ""
1864
 
1865
- #: admin/settings/classes/admin-options.class.php:285
1866
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:285
1867
  msgid "Settings successfully imported."
1868
  msgstr ""
1869
 
1870
- #: admin/settings/classes/admin-options.class.php:297
1871
- #: admin/settings/classes/admin-options.class.php:313
1872
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:297
1873
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:313
1874
  msgid "Default settings restored."
1875
  msgstr ""
1876
 
1877
- #: admin/settings/classes/admin-options.class.php:384
1878
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:384
1879
  msgid "Settings saved."
1880
  msgstr "Einstellungen gespeichert."
1881
 
1882
- #: admin/settings/classes/admin-options.class.php:563
1883
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:563
1884
  msgid "You have unsaved changes, save your changes!"
1885
  msgstr ""
1886
 
1887
- #: admin/settings/classes/admin-options.class.php:565
1888
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:565
1889
  msgid "show all settings"
1890
  msgstr ""
1891
 
1892
- #: admin/settings/classes/admin-options.class.php:567
1893
  #: admin/settings/fields/icon/icon.php:57 admin/settings/fields/map/map.php:23
1894
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:567
1895
  #: build/wp-ulike/admin/settings/fields/icon/icon.php:57
@@ -1897,43 +1902,43 @@ msgstr ""
1897
  msgid "Search..."
1898
  msgstr ""
1899
 
1900
- #: admin/settings/classes/admin-options.class.php:570
1901
- #: admin/settings/classes/admin-options.class.php:693
1902
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:570
1903
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:693
1904
  msgid "Save"
1905
  msgstr ""
1906
 
1907
- #: admin/settings/classes/admin-options.class.php:570
1908
- #: admin/settings/classes/admin-options.class.php:693
1909
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:570
1910
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:693
1911
  msgid "Saving..."
1912
  msgstr ""
1913
 
1914
- #: admin/settings/classes/admin-options.class.php:571
1915
- #: admin/settings/classes/admin-options.class.php:694
1916
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:571
1917
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:694
1918
  msgid "Reset Section"
1919
  msgstr ""
1920
 
1921
- #: admin/settings/classes/admin-options.class.php:571
1922
- #: admin/settings/classes/admin-options.class.php:694
1923
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:571
1924
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:694
1925
  msgid "Are you sure to reset this section options?"
1926
  msgstr ""
1927
 
1928
- #: admin/settings/classes/admin-options.class.php:572
1929
- #: admin/settings/classes/admin-options.class.php:695
1930
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:572
1931
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:695
1932
  msgid "Reset All"
1933
  msgstr ""
1934
 
1935
- #: admin/settings/classes/admin-options.class.php:572
1936
- #: admin/settings/classes/admin-options.class.php:695
1937
  #: admin/settings/classes/comment-options.class.php:215
1938
  #: admin/settings/classes/metabox-options.class.php:293
1939
  #: admin/settings/fields/backup/backup.php:31
@@ -1945,14 +1950,14 @@ msgstr ""
1945
  msgid "Reset"
1946
  msgstr ""
1947
 
1948
- #: admin/settings/classes/admin-options.class.php:572
1949
- #: admin/settings/classes/admin-options.class.php:695
1950
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:572
1951
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:695
1952
  msgid "Are you sure you want to reset all settings to default values?"
1953
  msgstr ""
1954
 
1955
- #: admin/settings/classes/admin-options.class.php:670
1956
  #: admin/settings/classes/comment-options.class.php:198
1957
  #: admin/settings/classes/metabox-options.class.php:276
1958
  #: admin/settings/fields/button_set/button_set.php:56
@@ -1985,33 +1990,33 @@ msgstr ""
1985
  msgid "Cancel"
1986
  msgstr ""
1987
 
1988
- #: admin/settings/classes/setup.class.php:529
1989
  #: build/wp-ulike/admin/settings/classes/setup.class.php:529
1990
  msgid "Are you sure?"
1991
  msgstr ""
1992
 
1993
- #: admin/settings/classes/setup.class.php:530
1994
  #: build/wp-ulike/admin/settings/classes/setup.class.php:530
1995
  msgid "Please enter %s or more characters"
1996
  msgstr ""
1997
 
1998
- #: admin/settings/classes/setup.class.php:531
1999
  #: build/wp-ulike/admin/settings/classes/setup.class.php:531
2000
  msgid "Searching..."
2001
  msgstr ""
2002
 
2003
- #: admin/settings/classes/setup.class.php:532
2004
  #: build/wp-ulike/admin/settings/classes/setup.class.php:532
2005
  msgid "No results found."
2006
  msgstr ""
2007
 
2008
- #: admin/settings/classes/setup.class.php:634
2009
  #: build/wp-ulike/admin/settings/classes/setup.class.php:634
2010
  msgid "Oops! Not allowed."
2011
  msgstr ""
2012
 
2013
- #: admin/settings/classes/setup.class.php:708
2014
- #: admin/settings/classes/setup.class.php:712
2015
  #: build/wp-ulike/admin/settings/classes/setup.class.php:708
2016
  #: build/wp-ulike/admin/settings/classes/setup.class.php:712
2017
  msgid "Field not found!"
@@ -2245,9 +2250,9 @@ msgstr ""
2245
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:76
2246
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:164
2247
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:306
2248
- #: inc/classes/class-wp-ulike-customizer.php:73
2249
- #: inc/classes/class-wp-ulike-customizer.php:161
2250
- #: inc/classes/class-wp-ulike-customizer.php:303
2251
  msgid "Normal"
2252
  msgstr ""
2253
 
@@ -2486,8 +2491,8 @@ msgstr ""
2486
  #: build/wp-ulike/admin/settings/fields/link_color/link_color.php:37
2487
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:94
2488
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:202
2489
- #: inc/classes/class-wp-ulike-customizer.php:91
2490
- #: inc/classes/class-wp-ulike-customizer.php:199
2491
  msgid "Hover"
2492
  msgstr ""
2493
 
@@ -2496,9 +2501,9 @@ msgstr ""
2496
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:114
2497
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:237
2498
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:330
2499
- #: inc/classes/class-wp-ulike-customizer.php:111
2500
- #: inc/classes/class-wp-ulike-customizer.php:234
2501
- #: inc/classes/class-wp-ulike-customizer.php:327
2502
  msgid "Active"
2503
  msgstr ""
2504
 
@@ -2571,6 +2576,27 @@ msgstr ""
2571
  msgid "Backup Font Family"
2572
  msgstr ""
2573
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2574
  #: admin/settings/fields/typography/typography.php:130
2575
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:130
2576
  msgid "Font Style"
@@ -2769,43 +2795,43 @@ msgid "Please enter a valid URL."
2769
  msgstr ""
2770
 
2771
  #: build/wp-ulike/inc/classes/class-wp-ulike-ajax-listener-base.php:60
2772
- #: inc/classes/class-wp-ulike-ajax-listener-base.php:60
2773
  msgid "There was an error processing the request."
2774
  msgstr ""
2775
 
2776
- #: build/wp-ulike/inc/classes/class-wp-ulike-cta-listener.php:45
2777
- #: build/wp-ulike/inc/classes/class-wp-ulike-voters-listener.php:35
2778
- #: inc/classes/class-wp-ulike-cta-listener.php:46
2779
- #: inc/classes/class-wp-ulike-voters-listener.php:36
2780
  msgid "permission denied."
2781
  msgstr ""
2782
 
2783
- #: build/wp-ulike/inc/classes/class-wp-ulike-cta-listener.php:49
2784
- #: build/wp-ulike/inc/classes/class-wp-ulike-voters-listener.php:39
2785
- #: inc/classes/class-wp-ulike-cta-listener.php:50
2786
- #: inc/classes/class-wp-ulike-voters-listener.php:40
2787
  msgid "Invalid item type."
2788
  msgstr ""
2789
 
2790
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:52
2791
- #: inc/classes/class-wp-ulike-customizer.php:49
2792
  msgid "Button Templates"
2793
  msgstr ""
2794
 
2795
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:56
2796
- #: inc/classes/class-wp-ulike-customizer.php:53
2797
  msgid "Template Wrapper"
2798
  msgstr ""
2799
 
2800
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:61
2801
- #: inc/classes/class-wp-ulike-customizer.php:58
2802
  msgid "In this section, you can customize the template wrapper styles."
2803
  msgstr ""
2804
 
2805
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:68
2806
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:380
2807
- #: inc/classes/class-wp-ulike-customizer.php:65
2808
- #: inc/classes/class-wp-ulike-customizer.php:377
2809
  msgid "Typography"
2810
  msgstr ""
2811
 
@@ -2822,19 +2848,19 @@ msgstr ""
2822
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:475
2823
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:513
2824
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:556
2825
- #: inc/classes/class-wp-ulike-customizer.php:78
2826
- #: inc/classes/class-wp-ulike-customizer.php:97
2827
- #: inc/classes/class-wp-ulike-customizer.php:117
2828
- #: inc/classes/class-wp-ulike-customizer.php:173
2829
- #: inc/classes/class-wp-ulike-customizer.php:212
2830
- #: inc/classes/class-wp-ulike-customizer.php:246
2831
- #: inc/classes/class-wp-ulike-customizer.php:314
2832
- #: inc/classes/class-wp-ulike-customizer.php:339
2833
- #: inc/classes/class-wp-ulike-customizer.php:396
2834
- #: inc/classes/class-wp-ulike-customizer.php:434
2835
- #: inc/classes/class-wp-ulike-customizer.php:472
2836
- #: inc/classes/class-wp-ulike-customizer.php:510
2837
- #: inc/classes/class-wp-ulike-customizer.php:553
2838
  msgid "Background"
2839
  msgstr ""
2840
 
@@ -2851,42 +2877,42 @@ msgstr ""
2851
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:482
2852
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:520
2853
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:563
2854
- #: inc/classes/class-wp-ulike-customizer.php:85
2855
- #: inc/classes/class-wp-ulike-customizer.php:105
2856
- #: inc/classes/class-wp-ulike-customizer.php:123
2857
- #: inc/classes/class-wp-ulike-customizer.php:179
2858
- #: inc/classes/class-wp-ulike-customizer.php:220
2859
- #: inc/classes/class-wp-ulike-customizer.php:252
2860
- #: inc/classes/class-wp-ulike-customizer.php:321
2861
- #: inc/classes/class-wp-ulike-customizer.php:345
2862
- #: inc/classes/class-wp-ulike-customizer.php:403
2863
- #: inc/classes/class-wp-ulike-customizer.php:441
2864
- #: inc/classes/class-wp-ulike-customizer.php:479
2865
- #: inc/classes/class-wp-ulike-customizer.php:517
2866
- #: inc/classes/class-wp-ulike-customizer.php:560
2867
  msgid "Border"
2868
  msgstr ""
2869
 
2870
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:137
2871
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:280
2872
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:358
2873
- #: inc/classes/class-wp-ulike-customizer.php:134
2874
- #: inc/classes/class-wp-ulike-customizer.php:277
2875
- #: inc/classes/class-wp-ulike-customizer.php:355
2876
  msgid "Padding"
2877
  msgstr ""
2878
 
2879
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:145
2880
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:288
2881
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:365
2882
- #: inc/classes/class-wp-ulike-customizer.php:142
2883
- #: inc/classes/class-wp-ulike-customizer.php:285
2884
- #: inc/classes/class-wp-ulike-customizer.php:362
2885
  msgid "Margin"
2886
  msgstr ""
2887
 
2888
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:157
2889
- #: inc/classes/class-wp-ulike-customizer.php:154
2890
  msgid ""
2891
  "In this section, you can customize the styles related to the buttons. Please "
2892
  "note that some buttons have different structures (such as SVG based) and "
@@ -2902,15 +2928,15 @@ msgstr ""
2902
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:431
2903
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:469
2904
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:507
2905
- #: inc/classes/class-wp-ulike-customizer.php:166
2906
- #: inc/classes/class-wp-ulike-customizer.php:205
2907
- #: inc/classes/class-wp-ulike-customizer.php:239
2908
- #: inc/classes/class-wp-ulike-customizer.php:308
2909
- #: inc/classes/class-wp-ulike-customizer.php:332
2910
- #: inc/classes/class-wp-ulike-customizer.php:390
2911
- #: inc/classes/class-wp-ulike-customizer.php:428
2912
- #: inc/classes/class-wp-ulike-customizer.php:466
2913
- #: inc/classes/class-wp-ulike-customizer.php:504
2914
  msgid "Text Color"
2915
  msgstr ""
2916
 
@@ -2919,46 +2945,46 @@ msgstr ""
2919
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:451
2920
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:489
2921
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:527
2922
- #: inc/classes/class-wp-ulike-customizer.php:186
2923
- #: inc/classes/class-wp-ulike-customizer.php:410
2924
- #: inc/classes/class-wp-ulike-customizer.php:448
2925
- #: inc/classes/class-wp-ulike-customizer.php:486
2926
- #: inc/classes/class-wp-ulike-customizer.php:524
2927
  msgid "Image Dimensions"
2928
  msgstr ""
2929
 
2930
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:196
2931
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:231
2932
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:262
2933
- #: inc/classes/class-wp-ulike-customizer.php:193
2934
- #: inc/classes/class-wp-ulike-customizer.php:228
2935
- #: inc/classes/class-wp-ulike-customizer.php:259
2936
  msgid "Like Image"
2937
  msgstr ""
2938
 
2939
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:273
2940
- #: inc/classes/class-wp-ulike-customizer.php:270
2941
  msgid "Button Dimensions"
2942
  msgstr ""
2943
 
2944
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:294
2945
- #: inc/classes/class-wp-ulike-customizer.php:291
2946
  #, fuzzy
2947
  msgid "Counter"
2948
  msgstr "Zentriert"
2949
 
2950
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:299
2951
- #: inc/classes/class-wp-ulike-customizer.php:296
2952
  msgid "In this section, you can customize the template counter styles."
2953
  msgstr ""
2954
 
2955
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:373
2956
- #: inc/classes/class-wp-ulike-customizer.php:370
2957
  msgid "Toast Messages"
2958
  msgstr ""
2959
 
2960
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:388
2961
- #: inc/classes/class-wp-ulike-customizer.php:385
2962
  msgid "Info"
2963
  msgstr ""
2964
 
@@ -2966,217 +2992,251 @@ msgstr ""
2966
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:458
2967
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:496
2968
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:534
2969
- #: inc/classes/class-wp-ulike-customizer.php:417
2970
- #: inc/classes/class-wp-ulike-customizer.php:455
2971
- #: inc/classes/class-wp-ulike-customizer.php:493
2972
- #: inc/classes/class-wp-ulike-customizer.php:531
2973
  msgid "Icon Image"
2974
  msgstr ""
2975
 
2976
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:426
2977
- #: inc/classes/class-wp-ulike-customizer.php:423
2978
  msgid "Success"
2979
  msgstr ""
2980
 
2981
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:464
2982
- #: inc/classes/class-wp-ulike-customizer.php:461
2983
  msgid "Error"
2984
  msgstr ""
2985
 
2986
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:502
2987
- #: inc/classes/class-wp-ulike-customizer.php:499
2988
  msgid "Warning"
2989
  msgstr ""
2990
 
2991
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:546
2992
- #: inc/classes/class-wp-ulike-customizer.php:543
2993
  msgid "Likers Box"
2994
  msgstr ""
2995
 
2996
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:570
2997
- #: inc/classes/class-wp-ulike-customizer.php:567
2998
  msgid "Arrow Color"
2999
  msgstr ""
3000
 
3001
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:230
3002
- #: inc/classes/class-wp-ulike-mycred.php:227
3003
  msgid "Points for Liking content"
3004
  msgstr ""
3005
 
3006
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:234
3007
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:259
3008
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:284
3009
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:303
3010
- #: inc/classes/class-wp-ulike-mycred.php:231
3011
- #: inc/classes/class-wp-ulike-mycred.php:256
3012
- #: inc/classes/class-wp-ulike-mycred.php:281
3013
- #: inc/classes/class-wp-ulike-mycred.php:300
3014
  msgid "Points"
3015
  msgstr ""
3016
 
3017
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:236
3018
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:261
3019
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:286
3020
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:305
3021
- #: inc/classes/class-wp-ulike-mycred.php:233
3022
- #: inc/classes/class-wp-ulike-mycred.php:258
3023
- #: inc/classes/class-wp-ulike-mycred.php:283
3024
- #: inc/classes/class-wp-ulike-mycred.php:302
3025
  msgid "Use zero to disable."
3026
  msgstr ""
3027
 
3028
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:241
3029
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:266
3030
- #: inc/classes/class-wp-ulike-mycred.php:238
3031
- #: inc/classes/class-wp-ulike-mycred.php:263
 
 
 
 
3032
  msgid "Limit"
3033
  msgstr ""
3034
 
3035
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:247
3036
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:272
3037
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:291
3038
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:310
3039
- #: inc/classes/class-wp-ulike-mycred.php:244
3040
- #: inc/classes/class-wp-ulike-mycred.php:269
3041
- #: inc/classes/class-wp-ulike-mycred.php:288
3042
- #: inc/classes/class-wp-ulike-mycred.php:307
3043
  msgid "Log template"
3044
  msgstr ""
3045
 
3046
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:255
3047
- #: inc/classes/class-wp-ulike-mycred.php:252
3048
  msgid "Points for Author Who Get Liked"
3049
  msgstr ""
3050
 
3051
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:280
3052
- #: inc/classes/class-wp-ulike-mycred.php:277
3053
  msgid "Points for unliking content"
3054
  msgstr ""
3055
 
3056
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:299
3057
- #: inc/classes/class-wp-ulike-mycred.php:296
3058
  msgid "Points for Author Who Get Unliked"
3059
  msgstr ""
3060
 
3061
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:318
3062
- #: inc/classes/class-wp-ulike-mycred.php:315
3063
  msgid "Limits"
3064
  msgstr ""
3065
 
3066
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:323
3067
- #: inc/classes/class-wp-ulike-mycred.php:320
3068
  msgid ""
3069
  "%plural% is to be awarded even when item authors Like/Unlike their own item."
3070
  msgstr ""
3071
 
3072
- #: build/wp-ulike/inc/functions/counter.php:72 inc/functions/counter.php:69
 
3073
  msgid "Please enter some value for required variables."
3074
  msgstr ""
3075
 
3076
- #: build/wp-ulike/inc/functions/counter.php:86 inc/functions/counter.php:83
 
3077
  msgid "Table info is empty."
3078
  msgstr ""
3079
 
3080
- #: build/wp-ulike/inc/functions/templates.php:38 inc/functions/templates.php:35
 
3081
  msgid "Twitter Heart"
3082
  msgstr ""
3083
 
3084
- #: build/wp-ulike/inc/functions/templates.php:44 inc/functions/templates.php:41
 
3085
  msgid "Animated Heart"
3086
  msgstr ""
3087
 
3088
- #: build/wp-ulike/inc/hooks/shortcodes.php:146 inc/hooks/shortcodes.php:143
 
3089
  msgid "Error receiving input parameters"
3090
  msgstr ""
3091
 
3092
- #: build/wp-ulike/inc/hooks/third-party.php:120 inc/hooks/third-party.php:117
 
3093
  msgid "WP ULike Activity"
3094
  msgstr ""
3095
 
3096
- #: build/wp-ulike/inc/hooks/third-party.php:135 inc/hooks/third-party.php:132
 
3097
  msgid "Votes"
3098
  msgstr ""
3099
 
3100
- #: build/wp-ulike/inc/hooks/third-party.php:344 inc/hooks/third-party.php:341
 
3101
  msgid "posts"
3102
  msgstr ""
3103
 
3104
- #: build/wp-ulike/inc/hooks/third-party.php:351 inc/hooks/third-party.php:348
 
3105
  msgid "comments"
3106
  msgstr ""
3107
 
3108
- #: build/wp-ulike/inc/hooks/third-party.php:357 inc/hooks/third-party.php:354
 
3109
  msgid "activities"
3110
  msgstr ""
3111
 
3112
- #: build/wp-ulike/inc/hooks/third-party.php:365 inc/hooks/third-party.php:362
 
3113
  msgid "topics"
3114
  msgstr ""
3115
 
3116
- #: build/wp-ulike/inc/hooks/third-party.php:368 inc/hooks/third-party.php:365
 
3117
  msgid "replies"
3118
  msgstr ""
3119
 
3120
- #: build/wp-ulike/inc/hooks/third-party.php:380 inc/hooks/third-party.php:377
 
3121
  msgid "You have %d new %s likes"
3122
  msgstr ""
3123
 
3124
- #: build/wp-ulike/inc/hooks/third-party.php:384 inc/hooks/third-party.php:381
 
3125
  msgid "%s liked one of your %s"
3126
  msgstr ""
3127
 
3128
- #: build/wp-ulike/inc/hooks/third-party.php:428 inc/hooks/third-party.php:425
 
3129
  msgid "New activity liked"
3130
  msgstr ""
3131
 
3132
- #: build/wp-ulike/inc/hooks/third-party.php:433 inc/hooks/third-party.php:430
 
3133
  msgid "New comment liked"
3134
  msgstr ""
3135
 
3136
- #: build/wp-ulike/inc/hooks/third-party.php:438 inc/hooks/third-party.php:435
 
3137
  msgid "New post liked"
3138
  msgstr ""
3139
 
3140
- #: build/wp-ulike/inc/hooks/third-party.php:443 inc/hooks/third-party.php:440
 
3141
  msgid "New topic liked"
3142
  msgstr ""
3143
 
3144
- #: build/wp-ulike/inc/hooks/third-party.php:800 inc/hooks/third-party.php:797
 
 
 
 
 
 
3145
  msgid ""
3146
  "This hook award / deducts points from users who Like/Unlike any content of "
3147
  "WordPress, bbPress, BuddyPress & ..."
3148
  msgstr ""
3149
 
3150
- #: build/wp-ulike/inc/hooks/third-party.php:816 inc/hooks/third-party.php:813
 
3151
  msgid "Liking Content"
3152
  msgstr ""
3153
 
3154
- #: build/wp-ulike/inc/hooks/third-party.php:817 inc/hooks/third-party.php:814
 
3155
  msgid "Liked Content"
3156
  msgstr ""
3157
 
3158
- #: build/wp-ulike/inc/hooks/third-party.php:818 inc/hooks/third-party.php:815
 
3159
  msgid "Unliking Content"
3160
  msgstr ""
3161
 
3162
- #: build/wp-ulike/inc/hooks/third-party.php:819 inc/hooks/third-party.php:816
 
3163
  msgid "Unliked Content"
3164
  msgstr ""
3165
 
3166
- #: build/wp-ulike/inc/hooks/third-party.php:837 inc/hooks/third-party.php:834
 
3167
  msgid "Recent Posts Liked"
3168
  msgstr ""
3169
 
3170
- #: build/wp-ulike/inc/hooks/third-party.php:842 inc/hooks/third-party.php:839
 
3171
  msgid "Recent Comments Liked"
3172
  msgstr ""
3173
 
3174
- #: build/wp-ulike/inc/hooks/third-party.php:873
3175
- #: build/wp-ulike/inc/hooks/third-party.php:899
3176
- #: build/wp-ulike/inc/hooks/third-party.php:929
3177
- #: build/wp-ulike/inc/hooks/third-party.php:959 inc/hooks/third-party.php:870
3178
- #: inc/hooks/third-party.php:896 inc/hooks/third-party.php:926
3179
- #: inc/hooks/third-party.php:956
3180
  msgid "This user has not made any likes."
3181
  msgstr ""
3182
 
@@ -3184,7 +3244,7 @@ msgstr ""
3184
  msgid "WP ULike"
3185
  msgstr ""
3186
 
3187
- #: build/wp-ulike/wp-ulike.php:584 wp-ulike.php:581
3188
  msgid ""
3189
  "You are using two instances of WP ULike plugin at same time, please deactive "
3190
  "one of them."
4
  msgstr ""
5
  "Project-Id-Version: Plugins - WP ULike - Stable (latest release)\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/plugins/wp-ulike/\n"
7
+ "POT-Creation-Date: 2021-04-04 15:20:05+00:00\n"
8
  "PO-Revision-Date: 2019-06-19 16:23:52+0000\n"
9
  "Language: de\n"
10
  "MIME-Version: 1.0\n"
33
  msgstr ""
34
 
35
  #: admin/admin-functions.php:240
36
+ #: admin/classes/class-wp-ulike-admin-panel.php:786
37
  #: build/wp-ulike/admin/admin-functions.php:243
38
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:789
39
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:152
40
+ #: includes/classes/class-wp-ulike-customizer.php:149
41
  msgid "Button"
42
  msgstr ""
43
 
95
  #: admin/admin-hooks.php:170 admin/admin-hooks.php:194
96
  #: admin/admin-hooks.php:217 admin/classes/class-wp-ulike-admin-panel.php:383
97
  #: admin/classes/class-wp-ulike-admin-panel.php:413
98
+ #: admin/classes/class-wp-ulike-admin-panel.php:443
99
  #: admin/classes/class-wp-ulike-admin-panel.php:560
100
+ #: admin/classes/class-wp-ulike-admin-panel.php:589
101
  #: build/wp-ulike/admin/admin-hooks.php:173
102
  #: build/wp-ulike/admin/admin-hooks.php:197
103
  #: build/wp-ulike/admin/admin-hooks.php:220
104
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:386
105
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:416
106
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:446
107
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:563
108
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:592
109
  msgid "Get More Information"
110
  msgstr ""
111
 
145
 
146
  #: admin/admin-hooks.php:485 admin/classes/class-wp-ulike-admin-panel.php:125
147
  #: admin/classes/class-wp-ulike-admin-panel.php:142
148
+ #: admin/classes/class-wp-ulike-admin-panel.php:640
149
+ #: admin/classes/class-wp-ulike-admin-panel.php:670
150
  #: admin/classes/class-wp-ulike-widget.php:355
151
  #: build/wp-ulike/admin/admin-hooks.php:488
152
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:128
153
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:145
154
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:643
155
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:673
156
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:358
157
  msgid "Like"
158
  msgstr ""
159
 
160
+ #: admin/classes/class-wp-ulike-admin-assets.php:126
161
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:109
162
  msgid "Are you sure to remove this item?!"
163
  msgstr ""
164
 
165
+ #: admin/classes/class-wp-ulike-admin-assets.php:127
166
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:110
167
  msgid "No information was found in this database!"
168
  msgstr ""
169
 
199
  #: admin/includes/templates/statistics.php:124
200
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:62
201
  #: build/wp-ulike/admin/includes/templates/statistics.php:127
202
+ #: build/wp-ulike/wp-ulike.php:179 includes/plugin.php:103
203
  msgid "Statistics"
204
  msgstr ""
205
 
206
  #: admin/classes/class-wp-ulike-admin-pages.php:67
207
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:70
208
+ #: build/wp-ulike/wp-ulike.php:180 includes/plugin.php:104
209
  msgid "About"
210
  msgstr ""
211
 
232
 
233
  #: admin/classes/class-wp-ulike-admin-panel.php:43
234
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:46
235
+ #: build/wp-ulike/wp-ulike.php:178 includes/plugin.php:102
236
  msgid "Settings"
237
  msgstr ""
238
 
273
 
274
  #: admin/classes/class-wp-ulike-admin-panel.php:131
275
  #: admin/classes/class-wp-ulike-admin-panel.php:147
276
+ #: admin/classes/class-wp-ulike-admin-panel.php:651
277
+ #: admin/classes/class-wp-ulike-admin-panel.php:682
278
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:134
279
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:150
280
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:654
281
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:685
282
  msgid "Unlike"
283
  msgstr ""
284
 
378
  msgstr ""
379
 
380
  #: admin/classes/class-wp-ulike-admin-panel.php:201
381
+ #: admin/classes/class-wp-ulike-admin-panel.php:723
382
  #: admin/includes/templates/about.php:46
383
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:204
384
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:726
385
  #: build/wp-ulike/admin/includes/templates/about.php:49
386
  msgid "Home"
387
  msgstr "Home"
388
 
389
  #: admin/classes/class-wp-ulike-admin-panel.php:202
390
+ #: admin/classes/class-wp-ulike-admin-panel.php:724
391
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:205
392
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:727
393
  msgid "Singular"
394
  msgstr ""
395
 
396
  #: admin/classes/class-wp-ulike-admin-panel.php:203
397
+ #: admin/classes/class-wp-ulike-admin-panel.php:725
398
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:206
399
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:728
400
  msgid "Archives"
401
  msgstr "Archives"
402
 
403
  #: admin/classes/class-wp-ulike-admin-panel.php:204
404
+ #: admin/classes/class-wp-ulike-admin-panel.php:726
405
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:207
406
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:729
407
  msgid "Categories"
408
  msgstr "Katgeorien"
409
 
410
  #: admin/classes/class-wp-ulike-admin-panel.php:205
411
+ #: admin/classes/class-wp-ulike-admin-panel.php:727
412
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:208
413
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:730
414
  msgid "Search Results"
415
  msgstr "Suchergebnisse"
416
 
417
  #: admin/classes/class-wp-ulike-admin-panel.php:206
418
+ #: admin/classes/class-wp-ulike-admin-panel.php:728
419
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:209
420
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:731
421
  msgid "Tags"
422
  msgstr "Schlagwörter"
423
 
424
  #: admin/classes/class-wp-ulike-admin-panel.php:207
425
+ #: admin/classes/class-wp-ulike-admin-panel.php:729
426
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:210
427
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:732
428
  msgid "Author Page"
429
  msgstr ""
430
 
490
 
491
  #: admin/classes/class-wp-ulike-admin-panel.php:268
492
  #: admin/classes/class-wp-ulike-admin-panel.php:280
493
+ #: admin/classes/class-wp-ulike-admin-panel.php:794
494
+ #: admin/classes/class-wp-ulike-admin-panel.php:850
495
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:271
496
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:283
497
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:797
498
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:853
499
  msgid "Allowed Variables:"
500
  msgstr ""
501
 
617
  "with just a few simple clicks."
618
  msgstr ""
619
 
620
+ #: admin/classes/class-wp-ulike-admin-panel.php:430
621
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:433
622
+ msgid "Share Buttons"
623
+ msgstr ""
624
+
625
+ #: admin/classes/class-wp-ulike-admin-panel.php:437
626
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:440
627
+ msgid "Easy Social Share Buttons for WordPress"
628
+ msgstr ""
629
+
630
+ #: admin/classes/class-wp-ulike-admin-panel.php:438
631
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:441
632
+ msgid ""
633
+ "WP ULike Share buttons enables your website users to share the content over "
634
+ "Facebook, Twitter, Google, Linkedin, Whatsapp, Tumblr, Pinterest, Reddit and "
635
+ "over 23 more social sharing services. This is the Simplest and Smoothest "
636
+ "Social Sharing service with optimized and great looking vector icons."
637
+ msgstr ""
638
+
639
+ #: admin/classes/class-wp-ulike-admin-panel.php:462
640
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:465
641
  msgid "Translations"
642
  msgstr "Übersetzungen"
643
 
644
+ #: admin/classes/class-wp-ulike-admin-panel.php:471
645
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:474
646
  msgid "Strings"
647
  msgstr ""
648
 
649
+ #: admin/classes/class-wp-ulike-admin-panel.php:477
650
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:480
651
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:30
652
+ #: includes/classes/class-wp-ulike-setting-repo.php:35
653
  msgid "You have already registered a vote."
654
  msgstr ""
655
 
656
+ #: admin/classes/class-wp-ulike-admin-panel.php:478
657
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:481
658
  msgid "Already Voted Message"
659
  msgstr ""
660
 
661
+ #: admin/classes/class-wp-ulike-admin-panel.php:483
662
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:486
663
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:21
664
+ #: includes/classes/class-wp-ulike-setting-repo.php:26
665
  msgid "You Should Login To Submit Your Like"
666
  msgstr ""
667
 
668
+ #: admin/classes/class-wp-ulike-admin-panel.php:484
669
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:487
670
  msgid "Login Required Message"
671
  msgstr ""
672
 
673
+ #: admin/classes/class-wp-ulike-admin-panel.php:489
674
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:492
675
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:39
676
+ #: includes/classes/class-wp-ulike-setting-repo.php:44
677
  msgid "Thanks! You Liked This."
678
  msgstr ""
679
 
680
+ #: admin/classes/class-wp-ulike-admin-panel.php:490
681
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:493
682
  msgid "Liked Notice Message"
683
  msgstr ""
684
 
685
+ #: admin/classes/class-wp-ulike-admin-panel.php:495
686
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:498
687
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:48
688
+ #: includes/classes/class-wp-ulike-setting-repo.php:53
689
  msgid "Sorry! You unliked this."
690
  msgstr ""
691
 
692
+ #: admin/classes/class-wp-ulike-admin-panel.php:496
693
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:499
694
  msgid "Unliked Notice Message"
695
  msgstr ""
696
 
697
+ #: admin/classes/class-wp-ulike-admin-panel.php:501
698
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:504
699
  #: build/wp-ulike/inc/functions/templates.php:73
700
  #: build/wp-ulike/inc/functions/templates.php:125
701
  #: build/wp-ulike/inc/functions/templates.php:177
702
  #: build/wp-ulike/inc/functions/templates.php:227
703
+ #: includes/functions/templates.php:70 includes/functions/templates.php:122
704
+ #: includes/functions/templates.php:174 includes/functions/templates.php:224
705
  msgid "Like Button"
706
  msgstr ""
707
 
708
+ #: admin/classes/class-wp-ulike-admin-panel.php:502
709
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:505
710
  msgid "Like Button Aria Label"
711
  msgstr ""
712
 
713
+ #: admin/classes/class-wp-ulike-admin-panel.php:512
714
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:515
715
  msgid "Developer Tools"
716
  msgstr ""
717
 
718
+ #: admin/classes/class-wp-ulike-admin-panel.php:518
719
  #: admin/settings/fields/typography/typography.php:295
720
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:521
721
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:295
722
  msgid "Custom Style"
723
  msgstr ""
724
 
725
+ #: admin/classes/class-wp-ulike-admin-panel.php:532
726
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:535
727
  msgid "Custom Spinner"
728
  msgstr ""
729
 
730
+ #: admin/classes/class-wp-ulike-admin-panel.php:539
731
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:542
732
  msgid "Enable Inline Custom CSS"
733
  msgstr ""
734
 
735
+ #: admin/classes/class-wp-ulike-admin-panel.php:540
736
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:543
737
  msgid ""
738
  "If you don't want to use \"custom.css\" file for any reason, by activating "
739
  "this option, the styles will be added to the page as inline."
740
  msgstr ""
741
 
742
+ #: admin/classes/class-wp-ulike-admin-panel.php:547
743
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:550
744
  msgid "REST API"
745
  msgstr ""
746
 
747
+ #: admin/classes/class-wp-ulike-admin-panel.php:554
748
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:557
749
  msgid "How to Get Started with WP ULike REST API?"
750
  msgstr ""
751
 
752
+ #: admin/classes/class-wp-ulike-admin-panel.php:555
753
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:558
754
  msgid ""
755
  "Have you ever tried to get data from online sources like WP ULike logs and "
756
  "use them in your Application or website? the solution is Rest API!"
757
  msgstr ""
758
 
759
+ #: admin/classes/class-wp-ulike-admin-panel.php:576
760
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:579
761
  msgid "Optimization"
762
  msgstr ""
763
 
764
+ #: admin/classes/class-wp-ulike-admin-panel.php:583
765
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:586
766
  msgid "How to Optimize or Repair WP ULike Database Tables?"
767
  msgstr ""
768
 
769
+ #: admin/classes/class-wp-ulike-admin-panel.php:584
770
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:587
771
  msgid ""
772
  "Have you ever optimized your WP ULike database? Optimizing your database "
773
  "cleans up unwanted data which reduces database size and improves performance."
774
  msgstr ""
775
 
776
+ #: admin/classes/class-wp-ulike-admin-panel.php:616
777
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:619
778
  msgid "Select a Template"
779
  msgstr ""
780
 
781
+ #: admin/classes/class-wp-ulike-admin-panel.php:617
782
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:620
783
  msgid "Display online preview"
784
  msgstr ""
785
 
786
+ #: admin/classes/class-wp-ulike-admin-panel.php:617
787
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:620
788
  msgid "Here"
789
  msgstr ""
790
 
791
+ #: admin/classes/class-wp-ulike-admin-panel.php:625
792
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:628
793
  msgid "Button Type"
794
  msgstr ""
795
 
796
+ #: admin/classes/class-wp-ulike-admin-panel.php:628
797
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:631
798
  msgid "Image"
799
  msgstr ""
800
 
801
+ #: admin/classes/class-wp-ulike-admin-panel.php:629
802
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:632
803
  msgid "Text"
804
  msgstr "Text"
805
 
806
+ #: admin/classes/class-wp-ulike-admin-panel.php:636
807
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:639
808
  msgid ""
809
  "Enter your custom button text in the fields above. You can also use HTML "
810
  "tags in these fields."
811
  msgstr ""
812
 
813
+ #: admin/classes/class-wp-ulike-admin-panel.php:637
814
+ #: admin/classes/class-wp-ulike-admin-panel.php:645
815
+ #: admin/classes/class-wp-ulike-admin-panel.php:656
816
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:640
817
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:648
818
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:659
819
  msgid "Button Text"
820
  msgstr ""
821
 
822
+ #: admin/classes/class-wp-ulike-admin-panel.php:667
823
+ #: admin/classes/class-wp-ulike-admin-panel.php:675
824
+ #: admin/classes/class-wp-ulike-admin-panel.php:687
825
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:670
826
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:678
827
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:690
828
  msgid "Button Image"
829
  msgstr ""
830
 
831
+ #: admin/classes/class-wp-ulike-admin-panel.php:700
832
  #: admin/classes/class-wp-ulike-settings.php:65
833
  #: admin/classes/class-wp-ulike-settings.php:72
834
  #: admin/classes/class-wp-ulike-settings.php:78
835
  #: admin/classes/class-wp-ulike-settings.php:84
836
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:703
837
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:68
838
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:75
839
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:81
841
  msgid "Automatic display"
842
  msgstr ""
843
 
844
+ #: admin/classes/class-wp-ulike-admin-panel.php:705
845
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:708
846
  msgid "Button Position"
847
  msgstr ""
848
 
849
+ #: admin/classes/class-wp-ulike-admin-panel.php:708
850
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:711
851
  msgid "Top of Content"
852
  msgstr ""
853
 
854
+ #: admin/classes/class-wp-ulike-admin-panel.php:709
855
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:712
856
  msgid "Bottom of Content"
857
  msgstr ""
858
 
859
+ #: admin/classes/class-wp-ulike-admin-panel.php:710
860
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:713
861
  msgid "Top and Bottom"
862
  msgstr ""
863
 
864
+ #: admin/classes/class-wp-ulike-admin-panel.php:717
865
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:720
866
  msgid "Automatic Display Restriction"
867
  msgstr ""
868
 
869
+ #: admin/classes/class-wp-ulike-admin-panel.php:718
870
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:721
871
  msgid "With this option, you can disable automatic display on these pages."
872
  msgstr ""
873
 
874
+ #: admin/classes/class-wp-ulike-admin-panel.php:736
875
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:739
876
  msgid "Post Types Filter"
877
  msgstr ""
878
 
879
+ #: admin/classes/class-wp-ulike-admin-panel.php:737
880
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:740
881
  msgid "Select a post type"
882
  msgstr ""
883
 
884
+ #: admin/classes/class-wp-ulike-admin-panel.php:738
885
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:741
886
  msgid "Make these post types an exception and display the button on them."
887
  msgstr ""
888
 
889
+ #: admin/classes/class-wp-ulike-admin-panel.php:748
890
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:751
891
  msgid "Display Counter Value Condition"
892
  msgstr ""
893
 
894
+ #: admin/classes/class-wp-ulike-admin-panel.php:751
895
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:754
896
  msgid "Visible"
897
  msgstr ""
898
 
899
+ #: admin/classes/class-wp-ulike-admin-panel.php:752
900
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:755
901
  msgid "Hidden"
902
  msgstr ""
903
 
904
+ #: admin/classes/class-wp-ulike-admin-panel.php:753
905
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:756
906
  msgid "Only Logged In Users"
907
  msgstr ""
908
 
909
+ #: admin/classes/class-wp-ulike-admin-panel.php:759
910
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:762
911
  msgid "Hide Zero Counter Box"
912
  msgstr ""
913
 
914
+ #: admin/classes/class-wp-ulike-admin-panel.php:765
915
  #: admin/classes/class-wp-ulike-settings.php:58
916
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:768
917
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:61
918
  msgid "Logging Method"
919
  msgstr ""
920
 
921
+ #: admin/classes/class-wp-ulike-admin-panel.php:767
922
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:770
923
  msgid "No Limit"
924
  msgstr ""
925
 
926
+ #: admin/classes/class-wp-ulike-admin-panel.php:768
927
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:771
928
  msgid "Cookie"
929
  msgstr ""
930
 
931
+ #: admin/classes/class-wp-ulike-admin-panel.php:769
932
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:772
933
  #, fuzzy
934
  msgid "Username/IP"
935
  msgstr "Benutzername"
936
 
937
+ #: admin/classes/class-wp-ulike-admin-panel.php:770
938
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:773
939
  #, fuzzy
940
  msgid "Username/IP + Cookie"
941
  msgstr "Benutzername"
942
 
943
+ #: admin/classes/class-wp-ulike-admin-panel.php:773
944
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:776
945
  msgid ""
946
  "\"No Limit\": There will be no restrictions and users can submit their "
947
  "points each time they refresh the page. In this option, it will not be "
948
  "possible to resubmit reverse points (un-like/un-dislike)."
949
  msgstr ""
950
 
951
+ #: admin/classes/class-wp-ulike-admin-panel.php:773
952
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:776
953
  msgid ""
954
  "\"Cookie\": By saving users' cookies, it is possible to submit points only "
955
  "once per user and in case of re-clicking, the appropriate message will be "
956
  "displayed."
957
  msgstr ""
958
 
959
+ #: admin/classes/class-wp-ulike-admin-panel.php:773
960
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:776
961
  msgid ""
962
  "Username/IP: By saving the username/IP of users, It supports the reverse "
963
  "feature (un-like and un-dislike) and users can change their reactions and "
964
  "are only allowed to have a specific point type."
965
  msgstr ""
966
 
967
+ #: admin/classes/class-wp-ulike-admin-panel.php:778
968
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:781
969
  msgid "Only logged in users"
970
  msgstr ""
971
 
972
+ #: admin/classes/class-wp-ulike-admin-panel.php:783
973
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:786
974
  msgid "Display Type"
975
  msgstr ""
976
 
977
+ #: admin/classes/class-wp-ulike-admin-panel.php:785
978
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:788
979
  msgid "Template"
980
  msgstr ""
981
 
982
+ #: admin/classes/class-wp-ulike-admin-panel.php:800
983
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:803
984
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:138
985
+ #: includes/classes/class-wp-ulike-setting-repo.php:143
986
  msgid "You need to login in order to like this post: "
987
  msgstr ""
988
 
989
+ #: admin/classes/class-wp-ulike-admin-panel.php:802
990
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:805
991
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:140
992
+ #: includes/classes/class-wp-ulike-setting-repo.php:145
993
  msgid "click here"
994
  msgstr ""
995
 
996
+ #: admin/classes/class-wp-ulike-admin-panel.php:804
997
+ #: admin/classes/class-wp-ulike-admin-panel.php:849
998
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:807
999
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:852
1000
  msgid "Custom HTML Template"
1001
  msgstr ""
1002
 
1003
+ #: admin/classes/class-wp-ulike-admin-panel.php:810
1004
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:813
1005
  msgid "Display Likers Box"
1006
  msgstr ""
1007
 
1008
+ #: admin/classes/class-wp-ulike-admin-panel.php:815
1009
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:818
1010
  msgid "User List Arrange"
1011
  msgstr ""
1012
 
1013
+ #: admin/classes/class-wp-ulike-admin-panel.php:818
1014
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:821
1015
  msgid "Ascending"
1016
  msgstr ""
1017
 
1018
+ #: admin/classes/class-wp-ulike-admin-panel.php:819
1019
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:822
1020
  msgid "Descending"
1021
  msgstr ""
1022
 
1023
+ #: admin/classes/class-wp-ulike-admin-panel.php:827
1024
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:830
1025
  msgid "Hide For Anonymous Users"
1026
  msgstr ""
1027
 
1028
+ #: admin/classes/class-wp-ulike-admin-panel.php:833
1029
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:836
1030
  msgid "Likers Box Display"
1031
  msgstr ""
1032
 
1033
+ #: admin/classes/class-wp-ulike-admin-panel.php:836
1034
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:839
1035
+ msgid "Inline"
1036
+ msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1037
 
1038
+ #: admin/classes/class-wp-ulike-admin-panel.php:837
1039
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:840
1040
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:550
1041
+ #: includes/classes/class-wp-ulike-customizer.php:547
1042
  msgid "Popover"
1043
  msgstr ""
1044
 
1045
+ #: admin/classes/class-wp-ulike-admin-panel.php:863
1046
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:866
1047
  msgid "Size of Gravatars"
1048
  msgstr ""
1049
 
1050
+ #: admin/classes/class-wp-ulike-admin-panel.php:871
1051
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:874
1052
  msgid "Likers Count"
1053
  msgstr ""
1054
 
1055
+ #: admin/classes/class-wp-ulike-admin-panel.php:872
1056
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:875
1057
  msgid "The number of users to show in the users liked box"
1058
  msgstr ""
1059
 
1143
 
1144
  #: admin/classes/class-wp-ulike-settings.php:59
1145
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:62
1146
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:259
1147
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:284
1148
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:309
1149
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:334
1150
+ #: includes/classes/class-wp-ulike-mycred.php:256
1151
+ #: includes/classes/class-wp-ulike-mycred.php:281
1152
+ #: includes/classes/class-wp-ulike-mycred.php:306
1153
+ #: includes/classes/class-wp-ulike-mycred.php:331
1154
  msgid "required"
1155
  msgstr ""
1156
 
1472
 
1473
  #: admin/classes/class-wp-ulike-widget.php:543
1474
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:546
1475
+ #: build/wp-ulike/inc/functions/templates.php:32
1476
+ #: includes/functions/templates.php:29
1477
  msgid "Heart"
1478
  msgstr ""
1479
 
1782
  msgid "WP ULike Premium"
1783
  msgstr ""
1784
 
1785
+ #: admin/includes/templates/go-pro.php:140
1786
+ #: build/wp-ulike/admin/includes/templates/go-pro.php:143
1787
  msgid ""
1788
  "Elementor is the #1 WordPress page builder. In the new version of the WP "
1789
  "ULike PRO plugin we fully support this page builder and have a variety of "
1790
  "widgets & controllers that make life much easier for you."
1791
  msgstr ""
1792
 
1793
+ #: admin/includes/templates/go-pro.php:140
1794
+ #: build/wp-ulike/admin/includes/templates/go-pro.php:143
1795
  msgid ""
1796
  "Just drag your desired widget and drop it in your Elementor sections, "
1797
  "customize as you go and enjoy your like and dislike buttons on your contents."
1862
  msgid "Topic Title"
1863
  msgstr ""
1864
 
1865
+ #: admin/settings/classes/admin-options.class.php:226
1866
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:225
1867
  msgid "Error while saving the changes."
1868
  msgstr ""
1869
 
1870
+ #: admin/settings/classes/admin-options.class.php:286
1871
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:285
1872
  msgid "Settings successfully imported."
1873
  msgstr ""
1874
 
1875
+ #: admin/settings/classes/admin-options.class.php:298
1876
+ #: admin/settings/classes/admin-options.class.php:314
1877
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:297
1878
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:313
1879
  msgid "Default settings restored."
1880
  msgstr ""
1881
 
1882
+ #: admin/settings/classes/admin-options.class.php:385
1883
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:384
1884
  msgid "Settings saved."
1885
  msgstr "Einstellungen gespeichert."
1886
 
1887
+ #: admin/settings/classes/admin-options.class.php:565
1888
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:563
1889
  msgid "You have unsaved changes, save your changes!"
1890
  msgstr ""
1891
 
1892
+ #: admin/settings/classes/admin-options.class.php:567
1893
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:565
1894
  msgid "show all settings"
1895
  msgstr ""
1896
 
1897
+ #: admin/settings/classes/admin-options.class.php:569
1898
  #: admin/settings/fields/icon/icon.php:57 admin/settings/fields/map/map.php:23
1899
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:567
1900
  #: build/wp-ulike/admin/settings/fields/icon/icon.php:57
1902
  msgid "Search..."
1903
  msgstr ""
1904
 
1905
+ #: admin/settings/classes/admin-options.class.php:572
1906
+ #: admin/settings/classes/admin-options.class.php:695
1907
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:570
1908
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:693
1909
  msgid "Save"
1910
  msgstr ""
1911
 
1912
+ #: admin/settings/classes/admin-options.class.php:572
1913
+ #: admin/settings/classes/admin-options.class.php:695
1914
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:570
1915
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:693
1916
  msgid "Saving..."
1917
  msgstr ""
1918
 
1919
+ #: admin/settings/classes/admin-options.class.php:573
1920
+ #: admin/settings/classes/admin-options.class.php:696
1921
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:571
1922
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:694
1923
  msgid "Reset Section"
1924
  msgstr ""
1925
 
1926
+ #: admin/settings/classes/admin-options.class.php:573
1927
+ #: admin/settings/classes/admin-options.class.php:696
1928
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:571
1929
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:694
1930
  msgid "Are you sure to reset this section options?"
1931
  msgstr ""
1932
 
1933
+ #: admin/settings/classes/admin-options.class.php:574
1934
+ #: admin/settings/classes/admin-options.class.php:697
1935
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:572
1936
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:695
1937
  msgid "Reset All"
1938
  msgstr ""
1939
 
1940
+ #: admin/settings/classes/admin-options.class.php:574
1941
+ #: admin/settings/classes/admin-options.class.php:697
1942
  #: admin/settings/classes/comment-options.class.php:215
1943
  #: admin/settings/classes/metabox-options.class.php:293
1944
  #: admin/settings/fields/backup/backup.php:31
1950
  msgid "Reset"
1951
  msgstr ""
1952
 
1953
+ #: admin/settings/classes/admin-options.class.php:574
1954
+ #: admin/settings/classes/admin-options.class.php:697
1955
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:572
1956
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:695
1957
  msgid "Are you sure you want to reset all settings to default values?"
1958
  msgstr ""
1959
 
1960
+ #: admin/settings/classes/admin-options.class.php:672
1961
  #: admin/settings/classes/comment-options.class.php:198
1962
  #: admin/settings/classes/metabox-options.class.php:276
1963
  #: admin/settings/fields/button_set/button_set.php:56
1990
  msgid "Cancel"
1991
  msgstr ""
1992
 
1993
+ #: admin/settings/classes/setup.class.php:592
1994
  #: build/wp-ulike/admin/settings/classes/setup.class.php:529
1995
  msgid "Are you sure?"
1996
  msgstr ""
1997
 
1998
+ #: admin/settings/classes/setup.class.php:593
1999
  #: build/wp-ulike/admin/settings/classes/setup.class.php:530
2000
  msgid "Please enter %s or more characters"
2001
  msgstr ""
2002
 
2003
+ #: admin/settings/classes/setup.class.php:594
2004
  #: build/wp-ulike/admin/settings/classes/setup.class.php:531
2005
  msgid "Searching..."
2006
  msgstr ""
2007
 
2008
+ #: admin/settings/classes/setup.class.php:595
2009
  #: build/wp-ulike/admin/settings/classes/setup.class.php:532
2010
  msgid "No results found."
2011
  msgstr ""
2012
 
2013
+ #: admin/settings/classes/setup.class.php:696
2014
  #: build/wp-ulike/admin/settings/classes/setup.class.php:634
2015
  msgid "Oops! Not allowed."
2016
  msgstr ""
2017
 
2018
+ #: admin/settings/classes/setup.class.php:768
2019
+ #: admin/settings/classes/setup.class.php:772
2020
  #: build/wp-ulike/admin/settings/classes/setup.class.php:708
2021
  #: build/wp-ulike/admin/settings/classes/setup.class.php:712
2022
  msgid "Field not found!"
2250
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:76
2251
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:164
2252
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:306
2253
+ #: includes/classes/class-wp-ulike-customizer.php:73
2254
+ #: includes/classes/class-wp-ulike-customizer.php:161
2255
+ #: includes/classes/class-wp-ulike-customizer.php:303
2256
  msgid "Normal"
2257
  msgstr ""
2258
 
2491
  #: build/wp-ulike/admin/settings/fields/link_color/link_color.php:37
2492
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:94
2493
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:202
2494
+ #: includes/classes/class-wp-ulike-customizer.php:91
2495
+ #: includes/classes/class-wp-ulike-customizer.php:199
2496
  msgid "Hover"
2497
  msgstr ""
2498
 
2501
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:114
2502
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:237
2503
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:330
2504
+ #: includes/classes/class-wp-ulike-customizer.php:111
2505
+ #: includes/classes/class-wp-ulike-customizer.php:234
2506
+ #: includes/classes/class-wp-ulike-customizer.php:327
2507
  msgid "Active"
2508
  msgstr ""
2509
 
2576
  msgid "Backup Font Family"
2577
  msgstr ""
2578
 
2579
+ #: admin/settings/fields/typography/typography.php:119
2580
+ #: admin/settings/fields/typography/typography.php:132
2581
+ #: admin/settings/fields/typography/typography.php:145
2582
+ #: admin/settings/fields/typography/typography.php:160
2583
+ #: admin/settings/fields/typography/typography.php:176
2584
+ #: admin/settings/fields/typography/typography.php:189
2585
+ #: admin/settings/fields/typography/typography.php:203
2586
+ #: admin/settings/fields/typography/typography.php:221
2587
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:119
2588
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:132
2589
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:145
2590
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:160
2591
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:176
2592
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:189
2593
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:203
2594
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:221
2595
+ #: build/wp-ulike/inc/functions/templates.php:26
2596
+ #: includes/functions/templates.php:23
2597
+ msgid "Default"
2598
+ msgstr "Standard"
2599
+
2600
  #: admin/settings/fields/typography/typography.php:130
2601
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:130
2602
  msgid "Font Style"
2795
  msgstr ""
2796
 
2797
  #: build/wp-ulike/inc/classes/class-wp-ulike-ajax-listener-base.php:60
2798
+ #: includes/classes/class-wp-ulike-ajax-listener-base.php:69
2799
  msgid "There was an error processing the request."
2800
  msgstr ""
2801
 
2802
+ #: build/wp-ulike/inc/classes/class-wp-ulike-cta-listener.php:46
2803
+ #: build/wp-ulike/inc/classes/class-wp-ulike-voters-listener.php:36
2804
+ #: includes/classes/class-wp-ulike-cta-listener.php:55
2805
+ #: includes/classes/class-wp-ulike-voters-listener.php:41
2806
  msgid "permission denied."
2807
  msgstr ""
2808
 
2809
+ #: build/wp-ulike/inc/classes/class-wp-ulike-cta-listener.php:50
2810
+ #: build/wp-ulike/inc/classes/class-wp-ulike-voters-listener.php:40
2811
+ #: includes/classes/class-wp-ulike-cta-listener.php:59
2812
+ #: includes/classes/class-wp-ulike-voters-listener.php:45
2813
  msgid "Invalid item type."
2814
  msgstr ""
2815
 
2816
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:52
2817
+ #: includes/classes/class-wp-ulike-customizer.php:49
2818
  msgid "Button Templates"
2819
  msgstr ""
2820
 
2821
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:56
2822
+ #: includes/classes/class-wp-ulike-customizer.php:53
2823
  msgid "Template Wrapper"
2824
  msgstr ""
2825
 
2826
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:61
2827
+ #: includes/classes/class-wp-ulike-customizer.php:58
2828
  msgid "In this section, you can customize the template wrapper styles."
2829
  msgstr ""
2830
 
2831
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:68
2832
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:380
2833
+ #: includes/classes/class-wp-ulike-customizer.php:65
2834
+ #: includes/classes/class-wp-ulike-customizer.php:377
2835
  msgid "Typography"
2836
  msgstr ""
2837
 
2848
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:475
2849
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:513
2850
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:556
2851
+ #: includes/classes/class-wp-ulike-customizer.php:78
2852
+ #: includes/classes/class-wp-ulike-customizer.php:97
2853
+ #: includes/classes/class-wp-ulike-customizer.php:117
2854
+ #: includes/classes/class-wp-ulike-customizer.php:173
2855
+ #: includes/classes/class-wp-ulike-customizer.php:212
2856
+ #: includes/classes/class-wp-ulike-customizer.php:246
2857
+ #: includes/classes/class-wp-ulike-customizer.php:314
2858
+ #: includes/classes/class-wp-ulike-customizer.php:339
2859
+ #: includes/classes/class-wp-ulike-customizer.php:396
2860
+ #: includes/classes/class-wp-ulike-customizer.php:434
2861
+ #: includes/classes/class-wp-ulike-customizer.php:472
2862
+ #: includes/classes/class-wp-ulike-customizer.php:510
2863
+ #: includes/classes/class-wp-ulike-customizer.php:553
2864
  msgid "Background"
2865
  msgstr ""
2866
 
2877
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:482
2878
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:520
2879
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:563
2880
+ #: includes/classes/class-wp-ulike-customizer.php:85
2881
+ #: includes/classes/class-wp-ulike-customizer.php:105
2882
+ #: includes/classes/class-wp-ulike-customizer.php:123
2883
+ #: includes/classes/class-wp-ulike-customizer.php:179
2884
+ #: includes/classes/class-wp-ulike-customizer.php:220
2885
+ #: includes/classes/class-wp-ulike-customizer.php:252
2886
+ #: includes/classes/class-wp-ulike-customizer.php:321
2887
+ #: includes/classes/class-wp-ulike-customizer.php:345
2888
+ #: includes/classes/class-wp-ulike-customizer.php:403
2889
+ #: includes/classes/class-wp-ulike-customizer.php:441
2890
+ #: includes/classes/class-wp-ulike-customizer.php:479
2891
+ #: includes/classes/class-wp-ulike-customizer.php:517
2892
+ #: includes/classes/class-wp-ulike-customizer.php:560
2893
  msgid "Border"
2894
  msgstr ""
2895
 
2896
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:137
2897
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:280
2898
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:358
2899
+ #: includes/classes/class-wp-ulike-customizer.php:134
2900
+ #: includes/classes/class-wp-ulike-customizer.php:277
2901
+ #: includes/classes/class-wp-ulike-customizer.php:355
2902
  msgid "Padding"
2903
  msgstr ""
2904
 
2905
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:145
2906
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:288
2907
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:365
2908
+ #: includes/classes/class-wp-ulike-customizer.php:142
2909
+ #: includes/classes/class-wp-ulike-customizer.php:285
2910
+ #: includes/classes/class-wp-ulike-customizer.php:362
2911
  msgid "Margin"
2912
  msgstr ""
2913
 
2914
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:157
2915
+ #: includes/classes/class-wp-ulike-customizer.php:154
2916
  msgid ""
2917
  "In this section, you can customize the styles related to the buttons. Please "
2918
  "note that some buttons have different structures (such as SVG based) and "
2928
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:431
2929
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:469
2930
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:507
2931
+ #: includes/classes/class-wp-ulike-customizer.php:166
2932
+ #: includes/classes/class-wp-ulike-customizer.php:205
2933
+ #: includes/classes/class-wp-ulike-customizer.php:239
2934
+ #: includes/classes/class-wp-ulike-customizer.php:308
2935
+ #: includes/classes/class-wp-ulike-customizer.php:332
2936
+ #: includes/classes/class-wp-ulike-customizer.php:390
2937
+ #: includes/classes/class-wp-ulike-customizer.php:428
2938
+ #: includes/classes/class-wp-ulike-customizer.php:466
2939
+ #: includes/classes/class-wp-ulike-customizer.php:504
2940
  msgid "Text Color"
2941
  msgstr ""
2942
 
2945
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:451
2946
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:489
2947
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:527
2948
+ #: includes/classes/class-wp-ulike-customizer.php:186
2949
+ #: includes/classes/class-wp-ulike-customizer.php:410
2950
+ #: includes/classes/class-wp-ulike-customizer.php:448
2951
+ #: includes/classes/class-wp-ulike-customizer.php:486
2952
+ #: includes/classes/class-wp-ulike-customizer.php:524
2953
  msgid "Image Dimensions"
2954
  msgstr ""
2955
 
2956
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:196
2957
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:231
2958
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:262
2959
+ #: includes/classes/class-wp-ulike-customizer.php:193
2960
+ #: includes/classes/class-wp-ulike-customizer.php:228
2961
+ #: includes/classes/class-wp-ulike-customizer.php:259
2962
  msgid "Like Image"
2963
  msgstr ""
2964
 
2965
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:273
2966
+ #: includes/classes/class-wp-ulike-customizer.php:270
2967
  msgid "Button Dimensions"
2968
  msgstr ""
2969
 
2970
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:294
2971
+ #: includes/classes/class-wp-ulike-customizer.php:291
2972
  #, fuzzy
2973
  msgid "Counter"
2974
  msgstr "Zentriert"
2975
 
2976
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:299
2977
+ #: includes/classes/class-wp-ulike-customizer.php:296
2978
  msgid "In this section, you can customize the template counter styles."
2979
  msgstr ""
2980
 
2981
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:373
2982
+ #: includes/classes/class-wp-ulike-customizer.php:370
2983
  msgid "Toast Messages"
2984
  msgstr ""
2985
 
2986
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:388
2987
+ #: includes/classes/class-wp-ulike-customizer.php:385
2988
  msgid "Info"
2989
  msgstr ""
2990
 
2992
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:458
2993
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:496
2994
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:534
2995
+ #: includes/classes/class-wp-ulike-customizer.php:417
2996
+ #: includes/classes/class-wp-ulike-customizer.php:455
2997
+ #: includes/classes/class-wp-ulike-customizer.php:493
2998
+ #: includes/classes/class-wp-ulike-customizer.php:531
2999
  msgid "Icon Image"
3000
  msgstr ""
3001
 
3002
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:426
3003
+ #: includes/classes/class-wp-ulike-customizer.php:423
3004
  msgid "Success"
3005
  msgstr ""
3006
 
3007
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:464
3008
+ #: includes/classes/class-wp-ulike-customizer.php:461
3009
  msgid "Error"
3010
  msgstr ""
3011
 
3012
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:502
3013
+ #: includes/classes/class-wp-ulike-customizer.php:499
3014
  msgid "Warning"
3015
  msgstr ""
3016
 
3017
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:546
3018
+ #: includes/classes/class-wp-ulike-customizer.php:543
3019
  msgid "Likers Box"
3020
  msgstr ""
3021
 
3022
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:570
3023
+ #: includes/classes/class-wp-ulike-customizer.php:567
3024
  msgid "Arrow Color"
3025
  msgstr ""
3026
 
3027
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:241
3028
+ #: includes/classes/class-wp-ulike-mycred.php:238
3029
  msgid "Points for Liking content"
3030
  msgstr ""
3031
 
3032
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:245
3033
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:270
3034
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:295
3035
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:320
3036
+ #: includes/classes/class-wp-ulike-mycred.php:242
3037
+ #: includes/classes/class-wp-ulike-mycred.php:267
3038
+ #: includes/classes/class-wp-ulike-mycred.php:292
3039
+ #: includes/classes/class-wp-ulike-mycred.php:317
3040
  msgid "Points"
3041
  msgstr ""
3042
 
3043
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:247
3044
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:272
3045
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:297
3046
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:322
3047
+ #: includes/classes/class-wp-ulike-mycred.php:244
3048
+ #: includes/classes/class-wp-ulike-mycred.php:269
3049
+ #: includes/classes/class-wp-ulike-mycred.php:294
3050
+ #: includes/classes/class-wp-ulike-mycred.php:319
3051
  msgid "Use zero to disable."
3052
  msgstr ""
3053
 
3054
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:252
3055
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:277
3056
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:302
3057
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:327
3058
+ #: includes/classes/class-wp-ulike-mycred.php:249
3059
+ #: includes/classes/class-wp-ulike-mycred.php:274
3060
+ #: includes/classes/class-wp-ulike-mycred.php:299
3061
+ #: includes/classes/class-wp-ulike-mycred.php:324
3062
  msgid "Limit"
3063
  msgstr ""
3064
 
3065
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:258
3066
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:283
3067
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:308
3068
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:333
3069
+ #: includes/classes/class-wp-ulike-mycred.php:255
3070
+ #: includes/classes/class-wp-ulike-mycred.php:280
3071
+ #: includes/classes/class-wp-ulike-mycred.php:305
3072
+ #: includes/classes/class-wp-ulike-mycred.php:330
3073
  msgid "Log template"
3074
  msgstr ""
3075
 
3076
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:266
3077
+ #: includes/classes/class-wp-ulike-mycred.php:263
3078
  msgid "Points for Author Who Get Liked"
3079
  msgstr ""
3080
 
3081
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:291
3082
+ #: includes/classes/class-wp-ulike-mycred.php:288
3083
  msgid "Points for unliking content"
3084
  msgstr ""
3085
 
3086
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:316
3087
+ #: includes/classes/class-wp-ulike-mycred.php:313
3088
  msgid "Points for Author Who Get Unliked"
3089
  msgstr ""
3090
 
3091
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:341
3092
+ #: includes/classes/class-wp-ulike-mycred.php:338
3093
  msgid "Limits"
3094
  msgstr ""
3095
 
3096
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:346
3097
+ #: includes/classes/class-wp-ulike-mycred.php:343
3098
  msgid ""
3099
  "%plural% is to be awarded even when item authors Like/Unlike their own item."
3100
  msgstr ""
3101
 
3102
+ #: build/wp-ulike/inc/functions/counter.php:72
3103
+ #: includes/functions/counter.php:69
3104
  msgid "Please enter some value for required variables."
3105
  msgstr ""
3106
 
3107
+ #: build/wp-ulike/inc/functions/counter.php:86
3108
+ #: includes/functions/counter.php:83
3109
  msgid "Table info is empty."
3110
  msgstr ""
3111
 
3112
+ #: build/wp-ulike/inc/functions/templates.php:38
3113
+ #: includes/functions/templates.php:35
3114
  msgid "Twitter Heart"
3115
  msgstr ""
3116
 
3117
+ #: build/wp-ulike/inc/functions/templates.php:44
3118
+ #: includes/functions/templates.php:41
3119
  msgid "Animated Heart"
3120
  msgstr ""
3121
 
3122
+ #: build/wp-ulike/inc/hooks/shortcodes.php:146
3123
+ #: includes/hooks/shortcodes.php:143
3124
  msgid "Error receiving input parameters"
3125
  msgstr ""
3126
 
3127
+ #: build/wp-ulike/inc/hooks/third-party.php:120
3128
+ #: includes/hooks/third-party.php:116
3129
  msgid "WP ULike Activity"
3130
  msgstr ""
3131
 
3132
+ #: build/wp-ulike/inc/hooks/third-party.php:135
3133
+ #: includes/hooks/third-party.php:131
3134
  msgid "Votes"
3135
  msgstr ""
3136
 
3137
+ #: build/wp-ulike/inc/hooks/third-party.php:344
3138
+ #: includes/hooks/third-party.php:340
3139
  msgid "posts"
3140
  msgstr ""
3141
 
3142
+ #: build/wp-ulike/inc/hooks/third-party.php:351
3143
+ #: includes/hooks/third-party.php:347
3144
  msgid "comments"
3145
  msgstr ""
3146
 
3147
+ #: build/wp-ulike/inc/hooks/third-party.php:357
3148
+ #: includes/hooks/third-party.php:353
3149
  msgid "activities"
3150
  msgstr ""
3151
 
3152
+ #: build/wp-ulike/inc/hooks/third-party.php:365
3153
+ #: includes/hooks/third-party.php:361
3154
  msgid "topics"
3155
  msgstr ""
3156
 
3157
+ #: build/wp-ulike/inc/hooks/third-party.php:368
3158
+ #: includes/hooks/third-party.php:364
3159
  msgid "replies"
3160
  msgstr ""
3161
 
3162
+ #: build/wp-ulike/inc/hooks/third-party.php:380
3163
+ #: includes/hooks/third-party.php:376
3164
  msgid "You have %d new %s likes"
3165
  msgstr ""
3166
 
3167
+ #: build/wp-ulike/inc/hooks/third-party.php:384
3168
+ #: includes/hooks/third-party.php:380
3169
  msgid "%s liked one of your %s"
3170
  msgstr ""
3171
 
3172
+ #: build/wp-ulike/inc/hooks/third-party.php:428
3173
+ #: includes/hooks/third-party.php:424
3174
  msgid "New activity liked"
3175
  msgstr ""
3176
 
3177
+ #: build/wp-ulike/inc/hooks/third-party.php:433
3178
+ #: includes/hooks/third-party.php:429
3179
  msgid "New comment liked"
3180
  msgstr ""
3181
 
3182
+ #: build/wp-ulike/inc/hooks/third-party.php:438
3183
+ #: includes/hooks/third-party.php:434
3184
  msgid "New post liked"
3185
  msgstr ""
3186
 
3187
+ #: build/wp-ulike/inc/hooks/third-party.php:443
3188
+ #: includes/hooks/third-party.php:439
3189
  msgid "New topic liked"
3190
  msgstr ""
3191
 
3192
+ #: build/wp-ulike/inc/hooks/third-party.php:797
3193
+ #: includes/hooks/third-party.php:795
3194
+ msgid "Points for liking content"
3195
+ msgstr ""
3196
+
3197
+ #: build/wp-ulike/inc/hooks/third-party.php:798
3198
+ #: includes/hooks/third-party.php:796
3199
  msgid ""
3200
  "This hook award / deducts points from users who Like/Unlike any content of "
3201
  "WordPress, bbPress, BuddyPress & ..."
3202
  msgstr ""
3203
 
3204
+ #: build/wp-ulike/inc/hooks/third-party.php:814
3205
+ #: includes/hooks/third-party.php:812
3206
  msgid "Liking Content"
3207
  msgstr ""
3208
 
3209
+ #: build/wp-ulike/inc/hooks/third-party.php:815
3210
+ #: includes/hooks/third-party.php:813
3211
  msgid "Liked Content"
3212
  msgstr ""
3213
 
3214
+ #: build/wp-ulike/inc/hooks/third-party.php:816
3215
+ #: includes/hooks/third-party.php:814
3216
  msgid "Unliking Content"
3217
  msgstr ""
3218
 
3219
+ #: build/wp-ulike/inc/hooks/third-party.php:817
3220
+ #: includes/hooks/third-party.php:815
3221
  msgid "Unliked Content"
3222
  msgstr ""
3223
 
3224
+ #: build/wp-ulike/inc/hooks/third-party.php:835
3225
+ #: includes/hooks/third-party.php:833
3226
  msgid "Recent Posts Liked"
3227
  msgstr ""
3228
 
3229
+ #: build/wp-ulike/inc/hooks/third-party.php:840
3230
+ #: includes/hooks/third-party.php:838
3231
  msgid "Recent Comments Liked"
3232
  msgstr ""
3233
 
3234
+ #: build/wp-ulike/inc/hooks/third-party.php:871
3235
+ #: build/wp-ulike/inc/hooks/third-party.php:897
3236
+ #: build/wp-ulike/inc/hooks/third-party.php:927
3237
+ #: build/wp-ulike/inc/hooks/third-party.php:957
3238
+ #: includes/hooks/third-party.php:869 includes/hooks/third-party.php:895
3239
+ #: includes/hooks/third-party.php:925 includes/hooks/third-party.php:955
3240
  msgid "This user has not made any likes."
3241
  msgstr ""
3242
 
3244
  msgid "WP ULike"
3245
  msgstr ""
3246
 
3247
+ #: build/wp-ulike/wp-ulike.php:594 wp-ulike.php:76
3248
  msgid ""
3249
  "You are using two instances of WP ULike plugin at same time, please deactive "
3250
  "one of them."
languages/wp-ulike-es-co.po CHANGED
@@ -4,7 +4,7 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: Plugins - WP ULike - Stable (latest release)\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/plugins/wp-ulike/\n"
7
- "POT-Creation-Date: 2021-01-09 00:39:07+00:00\n"
8
  "PO-Revision-Date: +0000\n"
9
  "Language: es_CO\n"
10
  "MIME-Version: 1.0\n"
@@ -33,11 +33,11 @@ msgid "It's Ok!"
33
  msgstr ""
34
 
35
  #: admin/admin-functions.php:240
36
- #: admin/classes/class-wp-ulike-admin-panel.php:757
37
  #: build/wp-ulike/admin/admin-functions.php:243
38
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:760
39
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:152
40
- #: inc/classes/class-wp-ulike-customizer.php:149
41
  msgid "Button"
42
  msgstr ""
43
 
@@ -95,15 +95,17 @@ msgstr ""
95
  #: admin/admin-hooks.php:170 admin/admin-hooks.php:194
96
  #: admin/admin-hooks.php:217 admin/classes/class-wp-ulike-admin-panel.php:383
97
  #: admin/classes/class-wp-ulike-admin-panel.php:413
98
- #: admin/classes/class-wp-ulike-admin-panel.php:531
99
  #: admin/classes/class-wp-ulike-admin-panel.php:560
 
100
  #: build/wp-ulike/admin/admin-hooks.php:173
101
  #: build/wp-ulike/admin/admin-hooks.php:197
102
  #: build/wp-ulike/admin/admin-hooks.php:220
103
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:386
104
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:416
105
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:534
106
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:563
 
107
  msgid "Get More Information"
108
  msgstr ""
109
 
@@ -143,25 +145,25 @@ msgstr ""
143
 
144
  #: admin/admin-hooks.php:485 admin/classes/class-wp-ulike-admin-panel.php:125
145
  #: admin/classes/class-wp-ulike-admin-panel.php:142
146
- #: admin/classes/class-wp-ulike-admin-panel.php:611
147
- #: admin/classes/class-wp-ulike-admin-panel.php:641
148
  #: admin/classes/class-wp-ulike-widget.php:355
149
  #: build/wp-ulike/admin/admin-hooks.php:488
150
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:128
151
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:145
152
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:614
153
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:644
154
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:358
155
  msgid "Like"
156
  msgstr ""
157
 
158
- #: admin/classes/class-wp-ulike-admin-assets.php:119
159
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:107
160
  msgid "Are you sure to remove this item?!"
161
  msgstr ""
162
 
163
- #: admin/classes/class-wp-ulike-admin-assets.php:120
164
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:108
165
  msgid "No information was found in this database!"
166
  msgstr ""
167
 
@@ -197,13 +199,13 @@ msgstr ""
197
  #: admin/includes/templates/statistics.php:124
198
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:62
199
  #: build/wp-ulike/admin/includes/templates/statistics.php:127
200
- #: build/wp-ulike/wp-ulike.php:169 wp-ulike.php:166
201
  msgid "Statistics"
202
  msgstr ""
203
 
204
  #: admin/classes/class-wp-ulike-admin-pages.php:67
205
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:70
206
- #: build/wp-ulike/wp-ulike.php:170 wp-ulike.php:167
207
  msgid "About"
208
  msgstr ""
209
 
@@ -230,7 +232,7 @@ msgstr ""
230
 
231
  #: admin/classes/class-wp-ulike-admin-panel.php:43
232
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:46
233
- #: build/wp-ulike/wp-ulike.php:168 wp-ulike.php:165
234
  msgid "Settings"
235
  msgstr ""
236
 
@@ -271,12 +273,12 @@ msgstr ""
271
 
272
  #: admin/classes/class-wp-ulike-admin-panel.php:131
273
  #: admin/classes/class-wp-ulike-admin-panel.php:147
274
- #: admin/classes/class-wp-ulike-admin-panel.php:622
275
- #: admin/classes/class-wp-ulike-admin-panel.php:653
276
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:134
277
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:150
278
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:625
279
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:656
280
  msgid "Unlike"
281
  msgstr ""
282
 
@@ -375,53 +377,53 @@ msgid "With this option, you can disable all plugin assets on these pages."
375
  msgstr ""
376
 
377
  #: admin/classes/class-wp-ulike-admin-panel.php:201
378
- #: admin/classes/class-wp-ulike-admin-panel.php:694
379
  #: admin/includes/templates/about.php:46
380
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:204
381
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:697
382
  #: build/wp-ulike/admin/includes/templates/about.php:49
383
  msgid "Home"
384
  msgstr ""
385
 
386
  #: admin/classes/class-wp-ulike-admin-panel.php:202
387
- #: admin/classes/class-wp-ulike-admin-panel.php:695
388
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:205
389
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:698
390
  msgid "Singular"
391
  msgstr ""
392
 
393
  #: admin/classes/class-wp-ulike-admin-panel.php:203
394
- #: admin/classes/class-wp-ulike-admin-panel.php:696
395
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:206
396
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:699
397
  msgid "Archives"
398
  msgstr ""
399
 
400
  #: admin/classes/class-wp-ulike-admin-panel.php:204
401
- #: admin/classes/class-wp-ulike-admin-panel.php:697
402
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:207
403
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:700
404
  msgid "Categories"
405
  msgstr ""
406
 
407
  #: admin/classes/class-wp-ulike-admin-panel.php:205
408
- #: admin/classes/class-wp-ulike-admin-panel.php:698
409
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:208
410
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:701
411
  msgid "Search Results"
412
  msgstr ""
413
 
414
  #: admin/classes/class-wp-ulike-admin-panel.php:206
415
- #: admin/classes/class-wp-ulike-admin-panel.php:699
416
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:209
417
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:702
418
  msgid "Tags"
419
  msgstr ""
420
 
421
  #: admin/classes/class-wp-ulike-admin-panel.php:207
422
- #: admin/classes/class-wp-ulike-admin-panel.php:700
423
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:210
424
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:703
425
  msgid "Author Page"
426
  msgstr ""
427
 
@@ -487,12 +489,12 @@ msgstr ""
487
 
488
  #: admin/classes/class-wp-ulike-admin-panel.php:268
489
  #: admin/classes/class-wp-ulike-admin-panel.php:280
490
- #: admin/classes/class-wp-ulike-admin-panel.php:765
491
- #: admin/classes/class-wp-ulike-admin-panel.php:821
492
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:271
493
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:283
494
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:768
495
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:824
496
  msgid "Allowed Variables:"
497
  msgstr ""
498
 
@@ -614,204 +616,223 @@ msgid ""
614
  "with just a few simple clicks."
615
  msgstr ""
616
 
617
- #: admin/classes/class-wp-ulike-admin-panel.php:433
618
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
619
  msgid "Translations"
620
  msgstr ""
621
 
622
- #: admin/classes/class-wp-ulike-admin-panel.php:442
623
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:445
624
  msgid "Strings"
625
  msgstr ""
626
 
627
- #: admin/classes/class-wp-ulike-admin-panel.php:448
628
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:451
629
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:30
630
- #: inc/classes/class-wp-ulike-setting-repo.php:30
631
  msgid "You have already registered a vote."
632
  msgstr ""
633
 
634
- #: admin/classes/class-wp-ulike-admin-panel.php:449
635
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:452
636
  msgid "Already Voted Message"
637
  msgstr ""
638
 
639
- #: admin/classes/class-wp-ulike-admin-panel.php:454
640
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:457
641
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:21
642
- #: inc/classes/class-wp-ulike-setting-repo.php:21
643
  msgid "You Should Login To Submit Your Like"
644
  msgstr ""
645
 
646
- #: admin/classes/class-wp-ulike-admin-panel.php:455
647
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:458
648
  msgid "Login Required Message"
649
  msgstr ""
650
 
651
- #: admin/classes/class-wp-ulike-admin-panel.php:460
652
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:463
653
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:39
654
- #: inc/classes/class-wp-ulike-setting-repo.php:39
655
  msgid "Thanks! You Liked This."
656
  msgstr ""
657
 
658
- #: admin/classes/class-wp-ulike-admin-panel.php:461
659
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:464
660
  msgid "Liked Notice Message"
661
  msgstr ""
662
 
663
- #: admin/classes/class-wp-ulike-admin-panel.php:466
664
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:469
665
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:48
666
- #: inc/classes/class-wp-ulike-setting-repo.php:48
667
  msgid "Sorry! You unliked this."
668
  msgstr ""
669
 
670
- #: admin/classes/class-wp-ulike-admin-panel.php:467
671
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:470
672
  msgid "Unliked Notice Message"
673
  msgstr ""
674
 
675
- #: admin/classes/class-wp-ulike-admin-panel.php:472
676
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:475
677
  #: build/wp-ulike/inc/functions/templates.php:73
678
  #: build/wp-ulike/inc/functions/templates.php:125
679
  #: build/wp-ulike/inc/functions/templates.php:177
680
  #: build/wp-ulike/inc/functions/templates.php:227
681
- #: inc/functions/templates.php:70 inc/functions/templates.php:122
682
- #: inc/functions/templates.php:174 inc/functions/templates.php:224
683
  msgid "Like Button"
684
  msgstr ""
685
 
686
- #: admin/classes/class-wp-ulike-admin-panel.php:473
687
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:476
688
  msgid "Like Button Aria Label"
689
  msgstr ""
690
 
691
- #: admin/classes/class-wp-ulike-admin-panel.php:483
692
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:486
693
  msgid "Developer Tools"
694
  msgstr ""
695
 
696
- #: admin/classes/class-wp-ulike-admin-panel.php:489
697
  #: admin/settings/fields/typography/typography.php:295
698
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:492
699
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:295
700
  msgid "Custom Style"
701
  msgstr ""
702
 
703
- #: admin/classes/class-wp-ulike-admin-panel.php:503
704
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:506
705
  msgid "Custom Spinner"
706
  msgstr ""
707
 
708
- #: admin/classes/class-wp-ulike-admin-panel.php:510
709
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:513
710
  msgid "Enable Inline Custom CSS"
711
  msgstr ""
712
 
713
- #: admin/classes/class-wp-ulike-admin-panel.php:511
714
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:514
715
  msgid ""
716
  "If you don't want to use \"custom.css\" file for any reason, by activating "
717
  "this option, the styles will be added to the page as inline."
718
  msgstr ""
719
 
720
- #: admin/classes/class-wp-ulike-admin-panel.php:518
721
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:521
722
  msgid "REST API"
723
  msgstr ""
724
 
725
- #: admin/classes/class-wp-ulike-admin-panel.php:525
726
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:528
727
  msgid "How to Get Started with WP ULike REST API?"
728
  msgstr ""
729
 
730
- #: admin/classes/class-wp-ulike-admin-panel.php:526
731
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:529
732
  msgid ""
733
  "Have you ever tried to get data from online sources like WP ULike logs and "
734
  "use them in your Application or website? the solution is Rest API!"
735
  msgstr ""
736
 
737
- #: admin/classes/class-wp-ulike-admin-panel.php:547
738
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:550
739
  msgid "Optimization"
740
  msgstr ""
741
 
742
- #: admin/classes/class-wp-ulike-admin-panel.php:554
743
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:557
744
  msgid "How to Optimize or Repair WP ULike Database Tables?"
745
  msgstr ""
746
 
747
- #: admin/classes/class-wp-ulike-admin-panel.php:555
748
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:558
749
  msgid ""
750
  "Have you ever optimized your WP ULike database? Optimizing your database "
751
  "cleans up unwanted data which reduces database size and improves performance."
752
  msgstr ""
753
 
754
- #: admin/classes/class-wp-ulike-admin-panel.php:587
755
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:590
756
  msgid "Select a Template"
757
  msgstr ""
758
 
759
- #: admin/classes/class-wp-ulike-admin-panel.php:588
760
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:591
761
  msgid "Display online preview"
762
  msgstr ""
763
 
764
- #: admin/classes/class-wp-ulike-admin-panel.php:588
765
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:591
766
  msgid "Here"
767
  msgstr ""
768
 
769
- #: admin/classes/class-wp-ulike-admin-panel.php:596
770
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:599
771
  msgid "Button Type"
772
  msgstr ""
773
 
774
- #: admin/classes/class-wp-ulike-admin-panel.php:599
775
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:602
776
  msgid "Image"
777
  msgstr ""
778
 
779
- #: admin/classes/class-wp-ulike-admin-panel.php:600
780
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:603
781
  msgid "Text"
782
  msgstr ""
783
 
784
- #: admin/classes/class-wp-ulike-admin-panel.php:607
785
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:610
786
  msgid ""
787
  "Enter your custom button text in the fields above. You can also use HTML "
788
  "tags in these fields."
789
  msgstr ""
790
 
791
- #: admin/classes/class-wp-ulike-admin-panel.php:608
792
- #: admin/classes/class-wp-ulike-admin-panel.php:616
793
- #: admin/classes/class-wp-ulike-admin-panel.php:627
794
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:611
795
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:619
796
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:630
797
  msgid "Button Text"
798
  msgstr ""
799
 
800
- #: admin/classes/class-wp-ulike-admin-panel.php:638
801
- #: admin/classes/class-wp-ulike-admin-panel.php:646
802
- #: admin/classes/class-wp-ulike-admin-panel.php:658
803
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:641
804
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:649
805
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:661
806
  msgid "Button Image"
807
  msgstr ""
808
 
809
- #: admin/classes/class-wp-ulike-admin-panel.php:671
810
  #: admin/classes/class-wp-ulike-settings.php:65
811
  #: admin/classes/class-wp-ulike-settings.php:72
812
  #: admin/classes/class-wp-ulike-settings.php:78
813
  #: admin/classes/class-wp-ulike-settings.php:84
814
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:674
815
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:68
816
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:75
817
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:81
@@ -819,234 +840,217 @@ msgstr ""
819
  msgid "Automatic display"
820
  msgstr ""
821
 
822
- #: admin/classes/class-wp-ulike-admin-panel.php:676
823
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:679
824
  msgid "Button Position"
825
  msgstr ""
826
 
827
- #: admin/classes/class-wp-ulike-admin-panel.php:679
828
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:682
829
  msgid "Top of Content"
830
  msgstr ""
831
 
832
- #: admin/classes/class-wp-ulike-admin-panel.php:680
833
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:683
834
  msgid "Bottom of Content"
835
  msgstr ""
836
 
837
- #: admin/classes/class-wp-ulike-admin-panel.php:681
838
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:684
839
  msgid "Top and Bottom"
840
  msgstr ""
841
 
842
- #: admin/classes/class-wp-ulike-admin-panel.php:688
843
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:691
844
  msgid "Automatic Display Restriction"
845
  msgstr ""
846
 
847
- #: admin/classes/class-wp-ulike-admin-panel.php:689
848
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:692
849
  msgid "With this option, you can disable automatic display on these pages."
850
  msgstr ""
851
 
852
- #: admin/classes/class-wp-ulike-admin-panel.php:707
853
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:710
854
  msgid "Post Types Filter"
855
  msgstr ""
856
 
857
- #: admin/classes/class-wp-ulike-admin-panel.php:708
858
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:711
859
  msgid "Select a post type"
860
  msgstr ""
861
 
862
- #: admin/classes/class-wp-ulike-admin-panel.php:709
863
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:712
864
  msgid "Make these post types an exception and display the button on them."
865
  msgstr ""
866
 
867
- #: admin/classes/class-wp-ulike-admin-panel.php:719
868
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:722
869
  msgid "Display Counter Value Condition"
870
  msgstr ""
871
 
872
- #: admin/classes/class-wp-ulike-admin-panel.php:722
873
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:725
874
  msgid "Visible"
875
  msgstr ""
876
 
877
- #: admin/classes/class-wp-ulike-admin-panel.php:723
878
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:726
879
  msgid "Hidden"
880
  msgstr ""
881
 
882
- #: admin/classes/class-wp-ulike-admin-panel.php:724
883
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:727
884
  msgid "Only Logged In Users"
885
  msgstr ""
886
 
887
- #: admin/classes/class-wp-ulike-admin-panel.php:730
888
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:733
889
  msgid "Hide Zero Counter Box"
890
  msgstr ""
891
 
892
- #: admin/classes/class-wp-ulike-admin-panel.php:736
893
  #: admin/classes/class-wp-ulike-settings.php:58
894
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:739
895
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:61
896
  msgid "Logging Method"
897
  msgstr ""
898
 
899
- #: admin/classes/class-wp-ulike-admin-panel.php:738
900
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:741
901
  msgid "No Limit"
902
  msgstr ""
903
 
904
- #: admin/classes/class-wp-ulike-admin-panel.php:739
905
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:742
906
  msgid "Cookie"
907
  msgstr ""
908
 
909
- #: admin/classes/class-wp-ulike-admin-panel.php:740
910
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:743
911
  msgid "Username/IP"
912
  msgstr ""
913
 
914
- #: admin/classes/class-wp-ulike-admin-panel.php:741
915
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:744
916
  msgid "Username/IP + Cookie"
917
  msgstr ""
918
 
919
- #: admin/classes/class-wp-ulike-admin-panel.php:744
920
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:747
921
  msgid ""
922
  "\"No Limit\": There will be no restrictions and users can submit their "
923
  "points each time they refresh the page. In this option, it will not be "
924
  "possible to resubmit reverse points (un-like/un-dislike)."
925
  msgstr ""
926
 
927
- #: admin/classes/class-wp-ulike-admin-panel.php:744
928
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:747
929
  msgid ""
930
  "\"Cookie\": By saving users' cookies, it is possible to submit points only "
931
  "once per user and in case of re-clicking, the appropriate message will be "
932
  "displayed."
933
  msgstr ""
934
 
935
- #: admin/classes/class-wp-ulike-admin-panel.php:744
936
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:747
937
  msgid ""
938
  "Username/IP: By saving the username/IP of users, It supports the reverse "
939
  "feature (un-like and un-dislike) and users can change their reactions and "
940
  "are only allowed to have a specific point type."
941
  msgstr ""
942
 
943
- #: admin/classes/class-wp-ulike-admin-panel.php:749
944
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:752
945
  msgid "Only logged in users"
946
  msgstr ""
947
 
948
- #: admin/classes/class-wp-ulike-admin-panel.php:754
949
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:757
950
  msgid "Display Type"
951
  msgstr ""
952
 
953
- #: admin/classes/class-wp-ulike-admin-panel.php:756
954
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:759
955
  msgid "Template"
956
  msgstr ""
957
 
958
- #: admin/classes/class-wp-ulike-admin-panel.php:771
959
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:774
960
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:138
961
- #: inc/classes/class-wp-ulike-setting-repo.php:138
962
  msgid "You need to login in order to like this post: "
963
  msgstr ""
964
 
965
- #: admin/classes/class-wp-ulike-admin-panel.php:773
966
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:776
967
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:140
968
- #: inc/classes/class-wp-ulike-setting-repo.php:140
969
  msgid "click here"
970
  msgstr ""
971
 
972
- #: admin/classes/class-wp-ulike-admin-panel.php:775
973
- #: admin/classes/class-wp-ulike-admin-panel.php:820
974
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:778
975
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:823
976
  msgid "Custom HTML Template"
977
  msgstr ""
978
 
979
- #: admin/classes/class-wp-ulike-admin-panel.php:781
980
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:784
981
  msgid "Display Likers Box"
982
  msgstr ""
983
 
984
- #: admin/classes/class-wp-ulike-admin-panel.php:786
985
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:789
986
  msgid "User List Arrange"
987
  msgstr ""
988
 
989
- #: admin/classes/class-wp-ulike-admin-panel.php:789
990
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:792
991
  msgid "Ascending"
992
  msgstr ""
993
 
994
- #: admin/classes/class-wp-ulike-admin-panel.php:790
995
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:793
996
  msgid "Descending"
997
  msgstr ""
998
 
999
- #: admin/classes/class-wp-ulike-admin-panel.php:798
1000
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:801
1001
  msgid "Hide For Anonymous Users"
1002
  msgstr ""
1003
 
1004
- #: admin/classes/class-wp-ulike-admin-panel.php:804
1005
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:807
1006
  msgid "Likers Box Display"
1007
  msgstr ""
1008
 
1009
- #: admin/classes/class-wp-ulike-admin-panel.php:807
1010
- #: admin/settings/fields/typography/typography.php:119
1011
- #: admin/settings/fields/typography/typography.php:132
1012
- #: admin/settings/fields/typography/typography.php:145
1013
- #: admin/settings/fields/typography/typography.php:160
1014
- #: admin/settings/fields/typography/typography.php:176
1015
- #: admin/settings/fields/typography/typography.php:189
1016
- #: admin/settings/fields/typography/typography.php:203
1017
- #: admin/settings/fields/typography/typography.php:221
1018
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:810
1019
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:119
1020
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:132
1021
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:145
1022
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:160
1023
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:176
1024
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:189
1025
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:203
1026
- #: build/wp-ulike/admin/settings/fields/typography/typography.php:221
1027
- #: build/wp-ulike/inc/functions/templates.php:26 inc/functions/templates.php:23
1028
- msgid "Default"
1029
  msgstr ""
1030
 
1031
- #: admin/classes/class-wp-ulike-admin-panel.php:808
1032
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:811
1033
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:550
1034
- #: inc/classes/class-wp-ulike-customizer.php:547
1035
  msgid "Popover"
1036
  msgstr ""
1037
 
1038
- #: admin/classes/class-wp-ulike-admin-panel.php:834
1039
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:837
1040
  msgid "Size of Gravatars"
1041
  msgstr ""
1042
 
1043
- #: admin/classes/class-wp-ulike-admin-panel.php:842
1044
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:845
1045
  msgid "Likers Count"
1046
  msgstr ""
1047
 
1048
- #: admin/classes/class-wp-ulike-admin-panel.php:843
1049
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:846
1050
  msgid "The number of users to show in the users liked box"
1051
  msgstr ""
1052
 
@@ -1136,14 +1140,14 @@ msgstr ""
1136
 
1137
  #: admin/classes/class-wp-ulike-settings.php:59
1138
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:62
1139
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:248
1140
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:273
1141
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:292
1142
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:311
1143
- #: inc/classes/class-wp-ulike-mycred.php:245
1144
- #: inc/classes/class-wp-ulike-mycred.php:270
1145
- #: inc/classes/class-wp-ulike-mycred.php:289
1146
- #: inc/classes/class-wp-ulike-mycred.php:308
1147
  msgid "required"
1148
  msgstr ""
1149
 
@@ -1465,7 +1469,8 @@ msgstr ""
1465
 
1466
  #: admin/classes/class-wp-ulike-widget.php:543
1467
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:546
1468
- #: build/wp-ulike/inc/functions/templates.php:32 inc/functions/templates.php:29
 
1469
  msgid "Heart"
1470
  msgstr ""
1471
 
@@ -1774,16 +1779,16 @@ msgstr ""
1774
  msgid "WP ULike Premium"
1775
  msgstr ""
1776
 
1777
- #: admin/includes/templates/go-pro.php:135
1778
- #: build/wp-ulike/admin/includes/templates/go-pro.php:138
1779
  msgid ""
1780
  "Elementor is the #1 WordPress page builder. In the new version of the WP "
1781
  "ULike PRO plugin we fully support this page builder and have a variety of "
1782
  "widgets & controllers that make life much easier for you."
1783
  msgstr ""
1784
 
1785
- #: admin/includes/templates/go-pro.php:135
1786
- #: build/wp-ulike/admin/includes/templates/go-pro.php:138
1787
  msgid ""
1788
  "Just drag your desired widget and drop it in your Elementor sections, "
1789
  "customize as you go and enjoy your like and dislike buttons on your contents."
@@ -1854,39 +1859,39 @@ msgstr ""
1854
  msgid "Topic Title"
1855
  msgstr ""
1856
 
1857
- #: admin/settings/classes/admin-options.class.php:225
1858
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:225
1859
  msgid "Error while saving the changes."
1860
  msgstr ""
1861
 
1862
- #: admin/settings/classes/admin-options.class.php:285
1863
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:285
1864
  msgid "Settings successfully imported."
1865
  msgstr ""
1866
 
1867
- #: admin/settings/classes/admin-options.class.php:297
1868
- #: admin/settings/classes/admin-options.class.php:313
1869
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:297
1870
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:313
1871
  msgid "Default settings restored."
1872
  msgstr ""
1873
 
1874
- #: admin/settings/classes/admin-options.class.php:384
1875
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:384
1876
  msgid "Settings saved."
1877
  msgstr ""
1878
 
1879
- #: admin/settings/classes/admin-options.class.php:563
1880
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:563
1881
  msgid "You have unsaved changes, save your changes!"
1882
  msgstr ""
1883
 
1884
- #: admin/settings/classes/admin-options.class.php:565
1885
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:565
1886
  msgid "show all settings"
1887
  msgstr ""
1888
 
1889
- #: admin/settings/classes/admin-options.class.php:567
1890
  #: admin/settings/fields/icon/icon.php:57 admin/settings/fields/map/map.php:23
1891
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:567
1892
  #: build/wp-ulike/admin/settings/fields/icon/icon.php:57
@@ -1894,43 +1899,43 @@ msgstr ""
1894
  msgid "Search..."
1895
  msgstr ""
1896
 
1897
- #: admin/settings/classes/admin-options.class.php:570
1898
- #: admin/settings/classes/admin-options.class.php:693
1899
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:570
1900
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:693
1901
  msgid "Save"
1902
  msgstr ""
1903
 
1904
- #: admin/settings/classes/admin-options.class.php:570
1905
- #: admin/settings/classes/admin-options.class.php:693
1906
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:570
1907
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:693
1908
  msgid "Saving..."
1909
  msgstr ""
1910
 
1911
- #: admin/settings/classes/admin-options.class.php:571
1912
- #: admin/settings/classes/admin-options.class.php:694
1913
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:571
1914
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:694
1915
  msgid "Reset Section"
1916
  msgstr ""
1917
 
1918
- #: admin/settings/classes/admin-options.class.php:571
1919
- #: admin/settings/classes/admin-options.class.php:694
1920
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:571
1921
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:694
1922
  msgid "Are you sure to reset this section options?"
1923
  msgstr ""
1924
 
1925
- #: admin/settings/classes/admin-options.class.php:572
1926
- #: admin/settings/classes/admin-options.class.php:695
1927
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:572
1928
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:695
1929
  msgid "Reset All"
1930
  msgstr ""
1931
 
1932
- #: admin/settings/classes/admin-options.class.php:572
1933
- #: admin/settings/classes/admin-options.class.php:695
1934
  #: admin/settings/classes/comment-options.class.php:215
1935
  #: admin/settings/classes/metabox-options.class.php:293
1936
  #: admin/settings/fields/backup/backup.php:31
@@ -1942,14 +1947,14 @@ msgstr ""
1942
  msgid "Reset"
1943
  msgstr ""
1944
 
1945
- #: admin/settings/classes/admin-options.class.php:572
1946
- #: admin/settings/classes/admin-options.class.php:695
1947
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:572
1948
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:695
1949
  msgid "Are you sure you want to reset all settings to default values?"
1950
  msgstr ""
1951
 
1952
- #: admin/settings/classes/admin-options.class.php:670
1953
  #: admin/settings/classes/comment-options.class.php:198
1954
  #: admin/settings/classes/metabox-options.class.php:276
1955
  #: admin/settings/fields/button_set/button_set.php:56
@@ -1982,33 +1987,33 @@ msgstr ""
1982
  msgid "Cancel"
1983
  msgstr ""
1984
 
1985
- #: admin/settings/classes/setup.class.php:529
1986
  #: build/wp-ulike/admin/settings/classes/setup.class.php:529
1987
  msgid "Are you sure?"
1988
  msgstr ""
1989
 
1990
- #: admin/settings/classes/setup.class.php:530
1991
  #: build/wp-ulike/admin/settings/classes/setup.class.php:530
1992
  msgid "Please enter %s or more characters"
1993
  msgstr ""
1994
 
1995
- #: admin/settings/classes/setup.class.php:531
1996
  #: build/wp-ulike/admin/settings/classes/setup.class.php:531
1997
  msgid "Searching..."
1998
  msgstr ""
1999
 
2000
- #: admin/settings/classes/setup.class.php:532
2001
  #: build/wp-ulike/admin/settings/classes/setup.class.php:532
2002
  msgid "No results found."
2003
  msgstr ""
2004
 
2005
- #: admin/settings/classes/setup.class.php:634
2006
  #: build/wp-ulike/admin/settings/classes/setup.class.php:634
2007
  msgid "Oops! Not allowed."
2008
  msgstr ""
2009
 
2010
- #: admin/settings/classes/setup.class.php:708
2011
- #: admin/settings/classes/setup.class.php:712
2012
  #: build/wp-ulike/admin/settings/classes/setup.class.php:708
2013
  #: build/wp-ulike/admin/settings/classes/setup.class.php:712
2014
  msgid "Field not found!"
@@ -2242,9 +2247,9 @@ msgstr ""
2242
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:76
2243
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:164
2244
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:306
2245
- #: inc/classes/class-wp-ulike-customizer.php:73
2246
- #: inc/classes/class-wp-ulike-customizer.php:161
2247
- #: inc/classes/class-wp-ulike-customizer.php:303
2248
  msgid "Normal"
2249
  msgstr ""
2250
 
@@ -2483,8 +2488,8 @@ msgstr ""
2483
  #: build/wp-ulike/admin/settings/fields/link_color/link_color.php:37
2484
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:94
2485
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:202
2486
- #: inc/classes/class-wp-ulike-customizer.php:91
2487
- #: inc/classes/class-wp-ulike-customizer.php:199
2488
  msgid "Hover"
2489
  msgstr ""
2490
 
@@ -2493,9 +2498,9 @@ msgstr ""
2493
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:114
2494
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:237
2495
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:330
2496
- #: inc/classes/class-wp-ulike-customizer.php:111
2497
- #: inc/classes/class-wp-ulike-customizer.php:234
2498
- #: inc/classes/class-wp-ulike-customizer.php:327
2499
  msgid "Active"
2500
  msgstr ""
2501
 
@@ -2568,6 +2573,27 @@ msgstr ""
2568
  msgid "Backup Font Family"
2569
  msgstr ""
2570
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2571
  #: admin/settings/fields/typography/typography.php:130
2572
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:130
2573
  msgid "Font Style"
@@ -2766,43 +2792,43 @@ msgid "Please enter a valid URL."
2766
  msgstr ""
2767
 
2768
  #: build/wp-ulike/inc/classes/class-wp-ulike-ajax-listener-base.php:60
2769
- #: inc/classes/class-wp-ulike-ajax-listener-base.php:60
2770
  msgid "There was an error processing the request."
2771
  msgstr ""
2772
 
2773
- #: build/wp-ulike/inc/classes/class-wp-ulike-cta-listener.php:45
2774
- #: build/wp-ulike/inc/classes/class-wp-ulike-voters-listener.php:35
2775
- #: inc/classes/class-wp-ulike-cta-listener.php:46
2776
- #: inc/classes/class-wp-ulike-voters-listener.php:36
2777
  msgid "permission denied."
2778
  msgstr ""
2779
 
2780
- #: build/wp-ulike/inc/classes/class-wp-ulike-cta-listener.php:49
2781
- #: build/wp-ulike/inc/classes/class-wp-ulike-voters-listener.php:39
2782
- #: inc/classes/class-wp-ulike-cta-listener.php:50
2783
- #: inc/classes/class-wp-ulike-voters-listener.php:40
2784
  msgid "Invalid item type."
2785
  msgstr ""
2786
 
2787
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:52
2788
- #: inc/classes/class-wp-ulike-customizer.php:49
2789
  msgid "Button Templates"
2790
  msgstr ""
2791
 
2792
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:56
2793
- #: inc/classes/class-wp-ulike-customizer.php:53
2794
  msgid "Template Wrapper"
2795
  msgstr ""
2796
 
2797
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:61
2798
- #: inc/classes/class-wp-ulike-customizer.php:58
2799
  msgid "In this section, you can customize the template wrapper styles."
2800
  msgstr ""
2801
 
2802
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:68
2803
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:380
2804
- #: inc/classes/class-wp-ulike-customizer.php:65
2805
- #: inc/classes/class-wp-ulike-customizer.php:377
2806
  msgid "Typography"
2807
  msgstr ""
2808
 
@@ -2819,19 +2845,19 @@ msgstr ""
2819
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:475
2820
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:513
2821
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:556
2822
- #: inc/classes/class-wp-ulike-customizer.php:78
2823
- #: inc/classes/class-wp-ulike-customizer.php:97
2824
- #: inc/classes/class-wp-ulike-customizer.php:117
2825
- #: inc/classes/class-wp-ulike-customizer.php:173
2826
- #: inc/classes/class-wp-ulike-customizer.php:212
2827
- #: inc/classes/class-wp-ulike-customizer.php:246
2828
- #: inc/classes/class-wp-ulike-customizer.php:314
2829
- #: inc/classes/class-wp-ulike-customizer.php:339
2830
- #: inc/classes/class-wp-ulike-customizer.php:396
2831
- #: inc/classes/class-wp-ulike-customizer.php:434
2832
- #: inc/classes/class-wp-ulike-customizer.php:472
2833
- #: inc/classes/class-wp-ulike-customizer.php:510
2834
- #: inc/classes/class-wp-ulike-customizer.php:553
2835
  msgid "Background"
2836
  msgstr ""
2837
 
@@ -2848,42 +2874,42 @@ msgstr ""
2848
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:482
2849
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:520
2850
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:563
2851
- #: inc/classes/class-wp-ulike-customizer.php:85
2852
- #: inc/classes/class-wp-ulike-customizer.php:105
2853
- #: inc/classes/class-wp-ulike-customizer.php:123
2854
- #: inc/classes/class-wp-ulike-customizer.php:179
2855
- #: inc/classes/class-wp-ulike-customizer.php:220
2856
- #: inc/classes/class-wp-ulike-customizer.php:252
2857
- #: inc/classes/class-wp-ulike-customizer.php:321
2858
- #: inc/classes/class-wp-ulike-customizer.php:345
2859
- #: inc/classes/class-wp-ulike-customizer.php:403
2860
- #: inc/classes/class-wp-ulike-customizer.php:441
2861
- #: inc/classes/class-wp-ulike-customizer.php:479
2862
- #: inc/classes/class-wp-ulike-customizer.php:517
2863
- #: inc/classes/class-wp-ulike-customizer.php:560
2864
  msgid "Border"
2865
  msgstr ""
2866
 
2867
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:137
2868
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:280
2869
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:358
2870
- #: inc/classes/class-wp-ulike-customizer.php:134
2871
- #: inc/classes/class-wp-ulike-customizer.php:277
2872
- #: inc/classes/class-wp-ulike-customizer.php:355
2873
  msgid "Padding"
2874
  msgstr ""
2875
 
2876
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:145
2877
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:288
2878
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:365
2879
- #: inc/classes/class-wp-ulike-customizer.php:142
2880
- #: inc/classes/class-wp-ulike-customizer.php:285
2881
- #: inc/classes/class-wp-ulike-customizer.php:362
2882
  msgid "Margin"
2883
  msgstr ""
2884
 
2885
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:157
2886
- #: inc/classes/class-wp-ulike-customizer.php:154
2887
  msgid ""
2888
  "In this section, you can customize the styles related to the buttons. Please "
2889
  "note that some buttons have different structures (such as SVG based) and "
@@ -2899,15 +2925,15 @@ msgstr ""
2899
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:431
2900
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:469
2901
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:507
2902
- #: inc/classes/class-wp-ulike-customizer.php:166
2903
- #: inc/classes/class-wp-ulike-customizer.php:205
2904
- #: inc/classes/class-wp-ulike-customizer.php:239
2905
- #: inc/classes/class-wp-ulike-customizer.php:308
2906
- #: inc/classes/class-wp-ulike-customizer.php:332
2907
- #: inc/classes/class-wp-ulike-customizer.php:390
2908
- #: inc/classes/class-wp-ulike-customizer.php:428
2909
- #: inc/classes/class-wp-ulike-customizer.php:466
2910
- #: inc/classes/class-wp-ulike-customizer.php:504
2911
  msgid "Text Color"
2912
  msgstr ""
2913
 
@@ -2916,45 +2942,45 @@ msgstr ""
2916
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:451
2917
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:489
2918
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:527
2919
- #: inc/classes/class-wp-ulike-customizer.php:186
2920
- #: inc/classes/class-wp-ulike-customizer.php:410
2921
- #: inc/classes/class-wp-ulike-customizer.php:448
2922
- #: inc/classes/class-wp-ulike-customizer.php:486
2923
- #: inc/classes/class-wp-ulike-customizer.php:524
2924
  msgid "Image Dimensions"
2925
  msgstr ""
2926
 
2927
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:196
2928
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:231
2929
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:262
2930
- #: inc/classes/class-wp-ulike-customizer.php:193
2931
- #: inc/classes/class-wp-ulike-customizer.php:228
2932
- #: inc/classes/class-wp-ulike-customizer.php:259
2933
  msgid "Like Image"
2934
  msgstr ""
2935
 
2936
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:273
2937
- #: inc/classes/class-wp-ulike-customizer.php:270
2938
  msgid "Button Dimensions"
2939
  msgstr ""
2940
 
2941
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:294
2942
- #: inc/classes/class-wp-ulike-customizer.php:291
2943
  msgid "Counter"
2944
  msgstr ""
2945
 
2946
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:299
2947
- #: inc/classes/class-wp-ulike-customizer.php:296
2948
  msgid "In this section, you can customize the template counter styles."
2949
  msgstr ""
2950
 
2951
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:373
2952
- #: inc/classes/class-wp-ulike-customizer.php:370
2953
  msgid "Toast Messages"
2954
  msgstr ""
2955
 
2956
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:388
2957
- #: inc/classes/class-wp-ulike-customizer.php:385
2958
  msgid "Info"
2959
  msgstr ""
2960
 
@@ -2962,217 +2988,251 @@ msgstr ""
2962
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:458
2963
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:496
2964
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:534
2965
- #: inc/classes/class-wp-ulike-customizer.php:417
2966
- #: inc/classes/class-wp-ulike-customizer.php:455
2967
- #: inc/classes/class-wp-ulike-customizer.php:493
2968
- #: inc/classes/class-wp-ulike-customizer.php:531
2969
  msgid "Icon Image"
2970
  msgstr ""
2971
 
2972
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:426
2973
- #: inc/classes/class-wp-ulike-customizer.php:423
2974
  msgid "Success"
2975
  msgstr ""
2976
 
2977
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:464
2978
- #: inc/classes/class-wp-ulike-customizer.php:461
2979
  msgid "Error"
2980
  msgstr ""
2981
 
2982
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:502
2983
- #: inc/classes/class-wp-ulike-customizer.php:499
2984
  msgid "Warning"
2985
  msgstr ""
2986
 
2987
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:546
2988
- #: inc/classes/class-wp-ulike-customizer.php:543
2989
  msgid "Likers Box"
2990
  msgstr ""
2991
 
2992
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:570
2993
- #: inc/classes/class-wp-ulike-customizer.php:567
2994
  msgid "Arrow Color"
2995
  msgstr ""
2996
 
2997
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:230
2998
- #: inc/classes/class-wp-ulike-mycred.php:227
2999
  msgid "Points for Liking content"
3000
  msgstr ""
3001
 
3002
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:234
3003
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:259
3004
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:284
3005
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:303
3006
- #: inc/classes/class-wp-ulike-mycred.php:231
3007
- #: inc/classes/class-wp-ulike-mycred.php:256
3008
- #: inc/classes/class-wp-ulike-mycred.php:281
3009
- #: inc/classes/class-wp-ulike-mycred.php:300
3010
  msgid "Points"
3011
  msgstr ""
3012
 
3013
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:236
3014
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:261
3015
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:286
3016
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:305
3017
- #: inc/classes/class-wp-ulike-mycred.php:233
3018
- #: inc/classes/class-wp-ulike-mycred.php:258
3019
- #: inc/classes/class-wp-ulike-mycred.php:283
3020
- #: inc/classes/class-wp-ulike-mycred.php:302
3021
  msgid "Use zero to disable."
3022
  msgstr ""
3023
 
3024
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:241
3025
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:266
3026
- #: inc/classes/class-wp-ulike-mycred.php:238
3027
- #: inc/classes/class-wp-ulike-mycred.php:263
 
 
 
 
3028
  msgid "Limit"
3029
  msgstr ""
3030
 
3031
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:247
3032
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:272
3033
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:291
3034
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:310
3035
- #: inc/classes/class-wp-ulike-mycred.php:244
3036
- #: inc/classes/class-wp-ulike-mycred.php:269
3037
- #: inc/classes/class-wp-ulike-mycred.php:288
3038
- #: inc/classes/class-wp-ulike-mycred.php:307
3039
  msgid "Log template"
3040
  msgstr ""
3041
 
3042
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:255
3043
- #: inc/classes/class-wp-ulike-mycred.php:252
3044
  msgid "Points for Author Who Get Liked"
3045
  msgstr ""
3046
 
3047
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:280
3048
- #: inc/classes/class-wp-ulike-mycred.php:277
3049
  msgid "Points for unliking content"
3050
  msgstr ""
3051
 
3052
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:299
3053
- #: inc/classes/class-wp-ulike-mycred.php:296
3054
  msgid "Points for Author Who Get Unliked"
3055
  msgstr ""
3056
 
3057
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:318
3058
- #: inc/classes/class-wp-ulike-mycred.php:315
3059
  msgid "Limits"
3060
  msgstr ""
3061
 
3062
- #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:323
3063
- #: inc/classes/class-wp-ulike-mycred.php:320
3064
  msgid ""
3065
  "%plural% is to be awarded even when item authors Like/Unlike their own item."
3066
  msgstr ""
3067
 
3068
- #: build/wp-ulike/inc/functions/counter.php:72 inc/functions/counter.php:69
 
3069
  msgid "Please enter some value for required variables."
3070
  msgstr ""
3071
 
3072
- #: build/wp-ulike/inc/functions/counter.php:86 inc/functions/counter.php:83
 
3073
  msgid "Table info is empty."
3074
  msgstr ""
3075
 
3076
- #: build/wp-ulike/inc/functions/templates.php:38 inc/functions/templates.php:35
 
3077
  msgid "Twitter Heart"
3078
  msgstr ""
3079
 
3080
- #: build/wp-ulike/inc/functions/templates.php:44 inc/functions/templates.php:41
 
3081
  msgid "Animated Heart"
3082
  msgstr ""
3083
 
3084
- #: build/wp-ulike/inc/hooks/shortcodes.php:146 inc/hooks/shortcodes.php:143
 
3085
  msgid "Error receiving input parameters"
3086
  msgstr ""
3087
 
3088
- #: build/wp-ulike/inc/hooks/third-party.php:120 inc/hooks/third-party.php:117
 
3089
  msgid "WP ULike Activity"
3090
  msgstr ""
3091
 
3092
- #: build/wp-ulike/inc/hooks/third-party.php:135 inc/hooks/third-party.php:132
 
3093
  msgid "Votes"
3094
  msgstr ""
3095
 
3096
- #: build/wp-ulike/inc/hooks/third-party.php:344 inc/hooks/third-party.php:341
 
3097
  msgid "posts"
3098
  msgstr ""
3099
 
3100
- #: build/wp-ulike/inc/hooks/third-party.php:351 inc/hooks/third-party.php:348
 
3101
  msgid "comments"
3102
  msgstr ""
3103
 
3104
- #: build/wp-ulike/inc/hooks/third-party.php:357 inc/hooks/third-party.php:354
 
3105
  msgid "activities"
3106
  msgstr ""
3107
 
3108
- #: build/wp-ulike/inc/hooks/third-party.php:365 inc/hooks/third-party.php:362
 
3109
  msgid "topics"
3110
  msgstr ""
3111
 
3112
- #: build/wp-ulike/inc/hooks/third-party.php:368 inc/hooks/third-party.php:365
 
3113
  msgid "replies"
3114
  msgstr ""
3115
 
3116
- #: build/wp-ulike/inc/hooks/third-party.php:380 inc/hooks/third-party.php:377
 
3117
  msgid "You have %d new %s likes"
3118
  msgstr ""
3119
 
3120
- #: build/wp-ulike/inc/hooks/third-party.php:384 inc/hooks/third-party.php:381
 
3121
  msgid "%s liked one of your %s"
3122
  msgstr ""
3123
 
3124
- #: build/wp-ulike/inc/hooks/third-party.php:428 inc/hooks/third-party.php:425
 
3125
  msgid "New activity liked"
3126
  msgstr ""
3127
 
3128
- #: build/wp-ulike/inc/hooks/third-party.php:433 inc/hooks/third-party.php:430
 
3129
  msgid "New comment liked"
3130
  msgstr ""
3131
 
3132
- #: build/wp-ulike/inc/hooks/third-party.php:438 inc/hooks/third-party.php:435
 
3133
  msgid "New post liked"
3134
  msgstr ""
3135
 
3136
- #: build/wp-ulike/inc/hooks/third-party.php:443 inc/hooks/third-party.php:440
 
3137
  msgid "New topic liked"
3138
  msgstr ""
3139
 
3140
- #: build/wp-ulike/inc/hooks/third-party.php:800 inc/hooks/third-party.php:797
 
 
 
 
 
 
3141
  msgid ""
3142
  "This hook award / deducts points from users who Like/Unlike any content of "
3143
  "WordPress, bbPress, BuddyPress & ..."
3144
  msgstr ""
3145
 
3146
- #: build/wp-ulike/inc/hooks/third-party.php:816 inc/hooks/third-party.php:813
 
3147
  msgid "Liking Content"
3148
  msgstr ""
3149
 
3150
- #: build/wp-ulike/inc/hooks/third-party.php:817 inc/hooks/third-party.php:814
 
3151
  msgid "Liked Content"
3152
  msgstr ""
3153
 
3154
- #: build/wp-ulike/inc/hooks/third-party.php:818 inc/hooks/third-party.php:815
 
3155
  msgid "Unliking Content"
3156
  msgstr ""
3157
 
3158
- #: build/wp-ulike/inc/hooks/third-party.php:819 inc/hooks/third-party.php:816
 
3159
  msgid "Unliked Content"
3160
  msgstr ""
3161
 
3162
- #: build/wp-ulike/inc/hooks/third-party.php:837 inc/hooks/third-party.php:834
 
3163
  msgid "Recent Posts Liked"
3164
  msgstr ""
3165
 
3166
- #: build/wp-ulike/inc/hooks/third-party.php:842 inc/hooks/third-party.php:839
 
3167
  msgid "Recent Comments Liked"
3168
  msgstr ""
3169
 
3170
- #: build/wp-ulike/inc/hooks/third-party.php:873
3171
- #: build/wp-ulike/inc/hooks/third-party.php:899
3172
- #: build/wp-ulike/inc/hooks/third-party.php:929
3173
- #: build/wp-ulike/inc/hooks/third-party.php:959 inc/hooks/third-party.php:870
3174
- #: inc/hooks/third-party.php:896 inc/hooks/third-party.php:926
3175
- #: inc/hooks/third-party.php:956
3176
  msgid "This user has not made any likes."
3177
  msgstr ""
3178
 
@@ -3180,7 +3240,7 @@ msgstr ""
3180
  msgid "WP ULike"
3181
  msgstr ""
3182
 
3183
- #: build/wp-ulike/wp-ulike.php:584 wp-ulike.php:581
3184
  msgid ""
3185
  "You are using two instances of WP ULike plugin at same time, please deactive "
3186
  "one of them."
4
  msgstr ""
5
  "Project-Id-Version: Plugins - WP ULike - Stable (latest release)\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/plugins/wp-ulike/\n"
7
+ "POT-Creation-Date: 2021-04-04 15:20:05+00:00\n"
8
  "PO-Revision-Date: +0000\n"
9
  "Language: es_CO\n"
10
  "MIME-Version: 1.0\n"
33
  msgstr ""
34
 
35
  #: admin/admin-functions.php:240
36
+ #: admin/classes/class-wp-ulike-admin-panel.php:786
37
  #: build/wp-ulike/admin/admin-functions.php:243
38
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:789
39
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:152
40
+ #: includes/classes/class-wp-ulike-customizer.php:149
41
  msgid "Button"
42
  msgstr ""
43
 
95
  #: admin/admin-hooks.php:170 admin/admin-hooks.php:194
96
  #: admin/admin-hooks.php:217 admin/classes/class-wp-ulike-admin-panel.php:383
97
  #: admin/classes/class-wp-ulike-admin-panel.php:413
98
+ #: admin/classes/class-wp-ulike-admin-panel.php:443
99
  #: admin/classes/class-wp-ulike-admin-panel.php:560
100
+ #: admin/classes/class-wp-ulike-admin-panel.php:589
101
  #: build/wp-ulike/admin/admin-hooks.php:173
102
  #: build/wp-ulike/admin/admin-hooks.php:197
103
  #: build/wp-ulike/admin/admin-hooks.php:220
104
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:386
105
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:416
106
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:446
107
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:563
108
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:592
109
  msgid "Get More Information"
110
  msgstr ""
111
 
145
 
146
  #: admin/admin-hooks.php:485 admin/classes/class-wp-ulike-admin-panel.php:125
147
  #: admin/classes/class-wp-ulike-admin-panel.php:142
148
+ #: admin/classes/class-wp-ulike-admin-panel.php:640
149
+ #: admin/classes/class-wp-ulike-admin-panel.php:670
150
  #: admin/classes/class-wp-ulike-widget.php:355
151
  #: build/wp-ulike/admin/admin-hooks.php:488
152
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:128
153
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:145
154
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:643
155
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:673
156
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:358
157
  msgid "Like"
158
  msgstr ""
159
 
160
+ #: admin/classes/class-wp-ulike-admin-assets.php:126
161
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:109
162
  msgid "Are you sure to remove this item?!"
163
  msgstr ""
164
 
165
+ #: admin/classes/class-wp-ulike-admin-assets.php:127
166
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:110
167
  msgid "No information was found in this database!"
168
  msgstr ""
169
 
199
  #: admin/includes/templates/statistics.php:124
200
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:62
201
  #: build/wp-ulike/admin/includes/templates/statistics.php:127
202
+ #: build/wp-ulike/wp-ulike.php:179 includes/plugin.php:103
203
  msgid "Statistics"
204
  msgstr ""
205
 
206
  #: admin/classes/class-wp-ulike-admin-pages.php:67
207
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:70
208
+ #: build/wp-ulike/wp-ulike.php:180 includes/plugin.php:104
209
  msgid "About"
210
  msgstr ""
211
 
232
 
233
  #: admin/classes/class-wp-ulike-admin-panel.php:43
234
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:46
235
+ #: build/wp-ulike/wp-ulike.php:178 includes/plugin.php:102
236
  msgid "Settings"
237
  msgstr ""
238
 
273
 
274
  #: admin/classes/class-wp-ulike-admin-panel.php:131
275
  #: admin/classes/class-wp-ulike-admin-panel.php:147
276
+ #: admin/classes/class-wp-ulike-admin-panel.php:651
277
+ #: admin/classes/class-wp-ulike-admin-panel.php:682
278
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:134
279
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:150
280
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:654
281
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:685
282
  msgid "Unlike"
283
  msgstr ""
284
 
377
  msgstr ""
378
 
379
  #: admin/classes/class-wp-ulike-admin-panel.php:201
380
+ #: admin/classes/class-wp-ulike-admin-panel.php:723
381
  #: admin/includes/templates/about.php:46
382
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:204
383
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:726
384
  #: build/wp-ulike/admin/includes/templates/about.php:49
385
  msgid "Home"
386
  msgstr ""
387
 
388
  #: admin/classes/class-wp-ulike-admin-panel.php:202
389
+ #: admin/classes/class-wp-ulike-admin-panel.php:724
390
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:205
391
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:727
392
  msgid "Singular"
393
  msgstr ""
394
 
395
  #: admin/classes/class-wp-ulike-admin-panel.php:203
396
+ #: admin/classes/class-wp-ulike-admin-panel.php:725
397
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:206
398
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:728
399
  msgid "Archives"
400
  msgstr ""
401
 
402
  #: admin/classes/class-wp-ulike-admin-panel.php:204
403
+ #: admin/classes/class-wp-ulike-admin-panel.php:726
404
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:207
405
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:729
406
  msgid "Categories"
407
  msgstr ""
408
 
409
  #: admin/classes/class-wp-ulike-admin-panel.php:205
410
+ #: admin/classes/class-wp-ulike-admin-panel.php:727
411
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:208
412
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:730
413
  msgid "Search Results"
414
  msgstr ""
415
 
416
  #: admin/classes/class-wp-ulike-admin-panel.php:206
417
+ #: admin/classes/class-wp-ulike-admin-panel.php:728
418
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:209
419
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:731
420
  msgid "Tags"
421
  msgstr ""
422
 
423
  #: admin/classes/class-wp-ulike-admin-panel.php:207
424
+ #: admin/classes/class-wp-ulike-admin-panel.php:729
425
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:210
426
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:732
427
  msgid "Author Page"
428
  msgstr ""
429
 
489
 
490
  #: admin/classes/class-wp-ulike-admin-panel.php:268
491
  #: admin/classes/class-wp-ulike-admin-panel.php:280
492
+ #: admin/classes/class-wp-ulike-admin-panel.php:794
493
+ #: admin/classes/class-wp-ulike-admin-panel.php:850
494
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:271
495
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:283
496
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:797
497
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:853
498
  msgid "Allowed Variables:"
499
  msgstr ""
500
 
616
  "with just a few simple clicks."
617
  msgstr ""
618
 
619
+ #: admin/classes/class-wp-ulike-admin-panel.php:430
620
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:433
621
+ msgid "Share Buttons"
622
+ msgstr ""
623
+
624
+ #: admin/classes/class-wp-ulike-admin-panel.php:437
625
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:440
626
+ msgid "Easy Social Share Buttons for WordPress"
627
+ msgstr ""
628
+
629
+ #: admin/classes/class-wp-ulike-admin-panel.php:438
630
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:441
631
+ msgid ""
632
+ "WP ULike Share buttons enables your website users to share the content over "
633
+ "Facebook, Twitter, Google, Linkedin, Whatsapp, Tumblr, Pinterest, Reddit and "
634
+ "over 23 more social sharing services. This is the Simplest and Smoothest "
635
+ "Social Sharing service with optimized and great looking vector icons."
636
+ msgstr ""
637
+
638
+ #: admin/classes/class-wp-ulike-admin-panel.php:462
639
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:465
640
  msgid "Translations"
641
  msgstr ""
642
 
643
+ #: admin/classes/class-wp-ulike-admin-panel.php:471
644
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:474
645
  msgid "Strings"
646
  msgstr ""
647
 
648
+ #: admin/classes/class-wp-ulike-admin-panel.php:477
649
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:480
650
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:30
651
+ #: includes/classes/class-wp-ulike-setting-repo.php:35
652
  msgid "You have already registered a vote."
653
  msgstr ""
654
 
655
+ #: admin/classes/class-wp-ulike-admin-panel.php:478
656
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:481
657
  msgid "Already Voted Message"
658
  msgstr ""
659
 
660
+ #: admin/classes/class-wp-ulike-admin-panel.php:483
661
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:486
662
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:21
663
+ #: includes/classes/class-wp-ulike-setting-repo.php:26
664
  msgid "You Should Login To Submit Your Like"
665
  msgstr ""
666
 
667
+ #: admin/classes/class-wp-ulike-admin-panel.php:484
668
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:487
669
  msgid "Login Required Message"
670
  msgstr ""
671
 
672
+ #: admin/classes/class-wp-ulike-admin-panel.php:489
673
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:492
674
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:39
675
+ #: includes/classes/class-wp-ulike-setting-repo.php:44
676
  msgid "Thanks! You Liked This."
677
  msgstr ""
678
 
679
+ #: admin/classes/class-wp-ulike-admin-panel.php:490
680
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:493
681
  msgid "Liked Notice Message"
682
  msgstr ""
683
 
684
+ #: admin/classes/class-wp-ulike-admin-panel.php:495
685
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:498
686
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:48
687
+ #: includes/classes/class-wp-ulike-setting-repo.php:53
688
  msgid "Sorry! You unliked this."
689
  msgstr ""
690
 
691
+ #: admin/classes/class-wp-ulike-admin-panel.php:496
692
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:499
693
  msgid "Unliked Notice Message"
694
  msgstr ""
695
 
696
+ #: admin/classes/class-wp-ulike-admin-panel.php:501
697
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:504
698
  #: build/wp-ulike/inc/functions/templates.php:73
699
  #: build/wp-ulike/inc/functions/templates.php:125
700
  #: build/wp-ulike/inc/functions/templates.php:177
701
  #: build/wp-ulike/inc/functions/templates.php:227
702
+ #: includes/functions/templates.php:70 includes/functions/templates.php:122
703
+ #: includes/functions/templates.php:174 includes/functions/templates.php:224
704
  msgid "Like Button"
705
  msgstr ""
706
 
707
+ #: admin/classes/class-wp-ulike-admin-panel.php:502
708
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:505
709
  msgid "Like Button Aria Label"
710
  msgstr ""
711
 
712
+ #: admin/classes/class-wp-ulike-admin-panel.php:512
713
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:515
714
  msgid "Developer Tools"
715
  msgstr ""
716
 
717
+ #: admin/classes/class-wp-ulike-admin-panel.php:518
718
  #: admin/settings/fields/typography/typography.php:295
719
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:521
720
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:295
721
  msgid "Custom Style"
722
  msgstr ""
723
 
724
+ #: admin/classes/class-wp-ulike-admin-panel.php:532
725
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:535
726
  msgid "Custom Spinner"
727
  msgstr ""
728
 
729
+ #: admin/classes/class-wp-ulike-admin-panel.php:539
730
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:542
731
  msgid "Enable Inline Custom CSS"
732
  msgstr ""
733
 
734
+ #: admin/classes/class-wp-ulike-admin-panel.php:540
735
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:543
736
  msgid ""
737
  "If you don't want to use \"custom.css\" file for any reason, by activating "
738
  "this option, the styles will be added to the page as inline."
739
  msgstr ""
740
 
741
+ #: admin/classes/class-wp-ulike-admin-panel.php:547
742
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:550
743
  msgid "REST API"
744
  msgstr ""
745
 
746
+ #: admin/classes/class-wp-ulike-admin-panel.php:554
747
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:557
748
  msgid "How to Get Started with WP ULike REST API?"
749
  msgstr ""
750
 
751
+ #: admin/classes/class-wp-ulike-admin-panel.php:555
752
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:558
753
  msgid ""
754
  "Have you ever tried to get data from online sources like WP ULike logs and "
755
  "use them in your Application or website? the solution is Rest API!"
756
  msgstr ""
757
 
758
+ #: admin/classes/class-wp-ulike-admin-panel.php:576
759
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:579
760
  msgid "Optimization"
761
  msgstr ""
762
 
763
+ #: admin/classes/class-wp-ulike-admin-panel.php:583
764
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:586
765
  msgid "How to Optimize or Repair WP ULike Database Tables?"
766
  msgstr ""
767
 
768
+ #: admin/classes/class-wp-ulike-admin-panel.php:584
769
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:587
770
  msgid ""
771
  "Have you ever optimized your WP ULike database? Optimizing your database "
772
  "cleans up unwanted data which reduces database size and improves performance."
773
  msgstr ""
774
 
775
+ #: admin/classes/class-wp-ulike-admin-panel.php:616
776
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:619
777
  msgid "Select a Template"
778
  msgstr ""
779
 
780
+ #: admin/classes/class-wp-ulike-admin-panel.php:617
781
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:620
782
  msgid "Display online preview"
783
  msgstr ""
784
 
785
+ #: admin/classes/class-wp-ulike-admin-panel.php:617
786
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:620
787
  msgid "Here"
788
  msgstr ""
789
 
790
+ #: admin/classes/class-wp-ulike-admin-panel.php:625
791
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:628
792
  msgid "Button Type"
793
  msgstr ""
794
 
795
+ #: admin/classes/class-wp-ulike-admin-panel.php:628
796
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:631
797
  msgid "Image"
798
  msgstr ""
799
 
800
+ #: admin/classes/class-wp-ulike-admin-panel.php:629
801
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:632
802
  msgid "Text"
803
  msgstr ""
804
 
805
+ #: admin/classes/class-wp-ulike-admin-panel.php:636
806
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:639
807
  msgid ""
808
  "Enter your custom button text in the fields above. You can also use HTML "
809
  "tags in these fields."
810
  msgstr ""
811
 
812
+ #: admin/classes/class-wp-ulike-admin-panel.php:637
813
+ #: admin/classes/class-wp-ulike-admin-panel.php:645
814
+ #: admin/classes/class-wp-ulike-admin-panel.php:656
815
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:640
816
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:648
817
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:659
818
  msgid "Button Text"
819
  msgstr ""
820
 
821
+ #: admin/classes/class-wp-ulike-admin-panel.php:667
822
+ #: admin/classes/class-wp-ulike-admin-panel.php:675
823
+ #: admin/classes/class-wp-ulike-admin-panel.php:687
824
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:670
825
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:678
826
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:690
827
  msgid "Button Image"
828
  msgstr ""
829
 
830
+ #: admin/classes/class-wp-ulike-admin-panel.php:700
831
  #: admin/classes/class-wp-ulike-settings.php:65
832
  #: admin/classes/class-wp-ulike-settings.php:72
833
  #: admin/classes/class-wp-ulike-settings.php:78
834
  #: admin/classes/class-wp-ulike-settings.php:84
835
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:703
836
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:68
837
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:75
838
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:81
840
  msgid "Automatic display"
841
  msgstr ""
842
 
843
+ #: admin/classes/class-wp-ulike-admin-panel.php:705
844
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:708
845
  msgid "Button Position"
846
  msgstr ""
847
 
848
+ #: admin/classes/class-wp-ulike-admin-panel.php:708
849
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:711
850
  msgid "Top of Content"
851
  msgstr ""
852
 
853
+ #: admin/classes/class-wp-ulike-admin-panel.php:709
854
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:712
855
  msgid "Bottom of Content"
856
  msgstr ""
857
 
858
+ #: admin/classes/class-wp-ulike-admin-panel.php:710
859
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:713
860
  msgid "Top and Bottom"
861
  msgstr ""
862
 
863
+ #: admin/classes/class-wp-ulike-admin-panel.php:717
864
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:720
865
  msgid "Automatic Display Restriction"
866
  msgstr ""
867
 
868
+ #: admin/classes/class-wp-ulike-admin-panel.php:718
869
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:721
870
  msgid "With this option, you can disable automatic display on these pages."
871
  msgstr ""
872
 
873
+ #: admin/classes/class-wp-ulike-admin-panel.php:736
874
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:739
875
  msgid "Post Types Filter"
876
  msgstr ""
877
 
878
+ #: admin/classes/class-wp-ulike-admin-panel.php:737
879
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:740
880
  msgid "Select a post type"
881
  msgstr ""
882
 
883
+ #: admin/classes/class-wp-ulike-admin-panel.php:738
884
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:741
885
  msgid "Make these post types an exception and display the button on them."
886
  msgstr ""
887
 
888
+ #: admin/classes/class-wp-ulike-admin-panel.php:748
889
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:751
890
  msgid "Display Counter Value Condition"
891
  msgstr ""
892
 
893
+ #: admin/classes/class-wp-ulike-admin-panel.php:751
894
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:754
895
  msgid "Visible"
896
  msgstr ""
897
 
898
+ #: admin/classes/class-wp-ulike-admin-panel.php:752
899
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:755
900
  msgid "Hidden"
901
  msgstr ""
902
 
903
+ #: admin/classes/class-wp-ulike-admin-panel.php:753
904
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:756
905
  msgid "Only Logged In Users"
906
  msgstr ""
907
 
908
+ #: admin/classes/class-wp-ulike-admin-panel.php:759
909
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:762
910
  msgid "Hide Zero Counter Box"
911
  msgstr ""
912
 
913
+ #: admin/classes/class-wp-ulike-admin-panel.php:765
914
  #: admin/classes/class-wp-ulike-settings.php:58
915
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:768
916
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:61
917
  msgid "Logging Method"
918
  msgstr ""
919
 
920
+ #: admin/classes/class-wp-ulike-admin-panel.php:767
921
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:770
922
  msgid "No Limit"
923
  msgstr ""
924
 
925
+ #: admin/classes/class-wp-ulike-admin-panel.php:768
926
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:771
927
  msgid "Cookie"
928
  msgstr ""
929
 
930
+ #: admin/classes/class-wp-ulike-admin-panel.php:769
931
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:772
932
  msgid "Username/IP"
933
  msgstr ""
934
 
935
+ #: admin/classes/class-wp-ulike-admin-panel.php:770
936
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:773
937
  msgid "Username/IP + Cookie"
938
  msgstr ""
939
 
940
+ #: admin/classes/class-wp-ulike-admin-panel.php:773
941
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:776
942
  msgid ""
943
  "\"No Limit\": There will be no restrictions and users can submit their "
944
  "points each time they refresh the page. In this option, it will not be "
945
  "possible to resubmit reverse points (un-like/un-dislike)."
946
  msgstr ""
947
 
948
+ #: admin/classes/class-wp-ulike-admin-panel.php:773
949
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:776
950
  msgid ""
951
  "\"Cookie\": By saving users' cookies, it is possible to submit points only "
952
  "once per user and in case of re-clicking, the appropriate message will be "
953
  "displayed."
954
  msgstr ""
955
 
956
+ #: admin/classes/class-wp-ulike-admin-panel.php:773
957
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:776
958
  msgid ""
959
  "Username/IP: By saving the username/IP of users, It supports the reverse "
960
  "feature (un-like and un-dislike) and users can change their reactions and "
961
  "are only allowed to have a specific point type."
962
  msgstr ""
963
 
964
+ #: admin/classes/class-wp-ulike-admin-panel.php:778
965
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:781
966
  msgid "Only logged in users"
967
  msgstr ""
968
 
969
+ #: admin/classes/class-wp-ulike-admin-panel.php:783
970
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:786
971
  msgid "Display Type"
972
  msgstr ""
973
 
974
+ #: admin/classes/class-wp-ulike-admin-panel.php:785
975
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:788
976
  msgid "Template"
977
  msgstr ""
978
 
979
+ #: admin/classes/class-wp-ulike-admin-panel.php:800
980
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:803
981
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:138
982
+ #: includes/classes/class-wp-ulike-setting-repo.php:143
983
  msgid "You need to login in order to like this post: "
984
  msgstr ""
985
 
986
+ #: admin/classes/class-wp-ulike-admin-panel.php:802
987
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:805
988
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:140
989
+ #: includes/classes/class-wp-ulike-setting-repo.php:145
990
  msgid "click here"
991
  msgstr ""
992
 
993
+ #: admin/classes/class-wp-ulike-admin-panel.php:804
994
+ #: admin/classes/class-wp-ulike-admin-panel.php:849
995
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:807
996
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:852
997
  msgid "Custom HTML Template"
998
  msgstr ""
999
 
1000
+ #: admin/classes/class-wp-ulike-admin-panel.php:810
1001
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:813
1002
  msgid "Display Likers Box"
1003
  msgstr ""
1004
 
1005
+ #: admin/classes/class-wp-ulike-admin-panel.php:815
1006
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:818
1007
  msgid "User List Arrange"
1008
  msgstr ""
1009
 
1010
+ #: admin/classes/class-wp-ulike-admin-panel.php:818
1011
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:821
1012
  msgid "Ascending"
1013
  msgstr ""
1014
 
1015
+ #: admin/classes/class-wp-ulike-admin-panel.php:819
1016
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:822
1017
  msgid "Descending"
1018
  msgstr ""
1019
 
1020
+ #: admin/classes/class-wp-ulike-admin-panel.php:827
1021
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:830
1022
  msgid "Hide For Anonymous Users"
1023
  msgstr ""
1024
 
1025
+ #: admin/classes/class-wp-ulike-admin-panel.php:833
1026
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:836
1027
  msgid "Likers Box Display"
1028
  msgstr ""
1029
 
1030
+ #: admin/classes/class-wp-ulike-admin-panel.php:836
1031
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:839
1032
+ msgid "Inline"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1033
  msgstr ""
1034
 
1035
+ #: admin/classes/class-wp-ulike-admin-panel.php:837
1036
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:840
1037
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:550
1038
+ #: includes/classes/class-wp-ulike-customizer.php:547
1039
  msgid "Popover"
1040
  msgstr ""
1041
 
1042
+ #: admin/classes/class-wp-ulike-admin-panel.php:863
1043
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:866
1044
  msgid "Size of Gravatars"
1045
  msgstr ""
1046
 
1047
+ #: admin/classes/class-wp-ulike-admin-panel.php:871
1048
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:874
1049
  msgid "Likers Count"
1050
  msgstr ""
1051
 
1052
+ #: admin/classes/class-wp-ulike-admin-panel.php:872
1053
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:875
1054
  msgid "The number of users to show in the users liked box"
1055
  msgstr ""
1056
 
1140
 
1141
  #: admin/classes/class-wp-ulike-settings.php:59
1142
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:62
1143
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:259
1144
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:284
1145
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:309
1146
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:334
1147
+ #: includes/classes/class-wp-ulike-mycred.php:256
1148
+ #: includes/classes/class-wp-ulike-mycred.php:281
1149
+ #: includes/classes/class-wp-ulike-mycred.php:306
1150
+ #: includes/classes/class-wp-ulike-mycred.php:331
1151
  msgid "required"
1152
  msgstr ""
1153
 
1469
 
1470
  #: admin/classes/class-wp-ulike-widget.php:543
1471
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:546
1472
+ #: build/wp-ulike/inc/functions/templates.php:32
1473
+ #: includes/functions/templates.php:29
1474
  msgid "Heart"
1475
  msgstr ""
1476
 
1779
  msgid "WP ULike Premium"
1780
  msgstr ""
1781
 
1782
+ #: admin/includes/templates/go-pro.php:140
1783
+ #: build/wp-ulike/admin/includes/templates/go-pro.php:143
1784
  msgid ""
1785
  "Elementor is the #1 WordPress page builder. In the new version of the WP "
1786
  "ULike PRO plugin we fully support this page builder and have a variety of "
1787
  "widgets & controllers that make life much easier for you."
1788
  msgstr ""
1789
 
1790
+ #: admin/includes/templates/go-pro.php:140
1791
+ #: build/wp-ulike/admin/includes/templates/go-pro.php:143
1792
  msgid ""
1793
  "Just drag your desired widget and drop it in your Elementor sections, "
1794
  "customize as you go and enjoy your like and dislike buttons on your contents."
1859
  msgid "Topic Title"
1860
  msgstr ""
1861
 
1862
+ #: admin/settings/classes/admin-options.class.php:226
1863
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:225
1864
  msgid "Error while saving the changes."
1865
  msgstr ""
1866
 
1867
+ #: admin/settings/classes/admin-options.class.php:286
1868
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:285
1869
  msgid "Settings successfully imported."
1870
  msgstr ""
1871
 
1872
+ #: admin/settings/classes/admin-options.class.php:298
1873
+ #: admin/settings/classes/admin-options.class.php:314
1874
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:297
1875
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:313
1876
  msgid "Default settings restored."
1877
  msgstr ""
1878
 
1879
+ #: admin/settings/classes/admin-options.class.php:385
1880
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:384
1881
  msgid "Settings saved."
1882
  msgstr ""
1883
 
1884
+ #: admin/settings/classes/admin-options.class.php:565
1885
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:563
1886
  msgid "You have unsaved changes, save your changes!"
1887
  msgstr ""
1888
 
1889
+ #: admin/settings/classes/admin-options.class.php:567
1890
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:565
1891
  msgid "show all settings"
1892
  msgstr ""
1893
 
1894
+ #: admin/settings/classes/admin-options.class.php:569
1895
  #: admin/settings/fields/icon/icon.php:57 admin/settings/fields/map/map.php:23
1896
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:567
1897
  #: build/wp-ulike/admin/settings/fields/icon/icon.php:57
1899
  msgid "Search..."
1900
  msgstr ""
1901
 
1902
+ #: admin/settings/classes/admin-options.class.php:572
1903
+ #: admin/settings/classes/admin-options.class.php:695
1904
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:570
1905
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:693
1906
  msgid "Save"
1907
  msgstr ""
1908
 
1909
+ #: admin/settings/classes/admin-options.class.php:572
1910
+ #: admin/settings/classes/admin-options.class.php:695
1911
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:570
1912
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:693
1913
  msgid "Saving..."
1914
  msgstr ""
1915
 
1916
+ #: admin/settings/classes/admin-options.class.php:573
1917
+ #: admin/settings/classes/admin-options.class.php:696
1918
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:571
1919
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:694
1920
  msgid "Reset Section"
1921
  msgstr ""
1922
 
1923
+ #: admin/settings/classes/admin-options.class.php:573
1924
+ #: admin/settings/classes/admin-options.class.php:696
1925
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:571
1926
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:694
1927
  msgid "Are you sure to reset this section options?"
1928
  msgstr ""
1929
 
1930
+ #: admin/settings/classes/admin-options.class.php:574
1931
+ #: admin/settings/classes/admin-options.class.php:697
1932
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:572
1933
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:695
1934
  msgid "Reset All"
1935
  msgstr ""
1936
 
1937
+ #: admin/settings/classes/admin-options.class.php:574
1938
+ #: admin/settings/classes/admin-options.class.php:697
1939
  #: admin/settings/classes/comment-options.class.php:215
1940
  #: admin/settings/classes/metabox-options.class.php:293
1941
  #: admin/settings/fields/backup/backup.php:31
1947
  msgid "Reset"
1948
  msgstr ""
1949
 
1950
+ #: admin/settings/classes/admin-options.class.php:574
1951
+ #: admin/settings/classes/admin-options.class.php:697
1952
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:572
1953
  #: build/wp-ulike/admin/settings/classes/admin-options.class.php:695
1954
  msgid "Are you sure you want to reset all settings to default values?"
1955
  msgstr ""
1956
 
1957
+ #: admin/settings/classes/admin-options.class.php:672
1958
  #: admin/settings/classes/comment-options.class.php:198
1959
  #: admin/settings/classes/metabox-options.class.php:276
1960
  #: admin/settings/fields/button_set/button_set.php:56
1987
  msgid "Cancel"
1988
  msgstr ""
1989
 
1990
+ #: admin/settings/classes/setup.class.php:592
1991
  #: build/wp-ulike/admin/settings/classes/setup.class.php:529
1992
  msgid "Are you sure?"
1993
  msgstr ""
1994
 
1995
+ #: admin/settings/classes/setup.class.php:593
1996
  #: build/wp-ulike/admin/settings/classes/setup.class.php:530
1997
  msgid "Please enter %s or more characters"
1998
  msgstr ""
1999
 
2000
+ #: admin/settings/classes/setup.class.php:594
2001
  #: build/wp-ulike/admin/settings/classes/setup.class.php:531
2002
  msgid "Searching..."
2003
  msgstr ""
2004
 
2005
+ #: admin/settings/classes/setup.class.php:595
2006
  #: build/wp-ulike/admin/settings/classes/setup.class.php:532
2007
  msgid "No results found."
2008
  msgstr ""
2009
 
2010
+ #: admin/settings/classes/setup.class.php:696
2011
  #: build/wp-ulike/admin/settings/classes/setup.class.php:634
2012
  msgid "Oops! Not allowed."
2013
  msgstr ""
2014
 
2015
+ #: admin/settings/classes/setup.class.php:768
2016
+ #: admin/settings/classes/setup.class.php:772
2017
  #: build/wp-ulike/admin/settings/classes/setup.class.php:708
2018
  #: build/wp-ulike/admin/settings/classes/setup.class.php:712
2019
  msgid "Field not found!"
2247
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:76
2248
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:164
2249
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:306
2250
+ #: includes/classes/class-wp-ulike-customizer.php:73
2251
+ #: includes/classes/class-wp-ulike-customizer.php:161
2252
+ #: includes/classes/class-wp-ulike-customizer.php:303
2253
  msgid "Normal"
2254
  msgstr ""
2255
 
2488
  #: build/wp-ulike/admin/settings/fields/link_color/link_color.php:37
2489
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:94
2490
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:202
2491
+ #: includes/classes/class-wp-ulike-customizer.php:91
2492
+ #: includes/classes/class-wp-ulike-customizer.php:199
2493
  msgid "Hover"
2494
  msgstr ""
2495
 
2498
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:114
2499
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:237
2500
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:330
2501
+ #: includes/classes/class-wp-ulike-customizer.php:111
2502
+ #: includes/classes/class-wp-ulike-customizer.php:234
2503
+ #: includes/classes/class-wp-ulike-customizer.php:327
2504
  msgid "Active"
2505
  msgstr ""
2506
 
2573
  msgid "Backup Font Family"
2574
  msgstr ""
2575
 
2576
+ #: admin/settings/fields/typography/typography.php:119
2577
+ #: admin/settings/fields/typography/typography.php:132
2578
+ #: admin/settings/fields/typography/typography.php:145
2579
+ #: admin/settings/fields/typography/typography.php:160
2580
+ #: admin/settings/fields/typography/typography.php:176
2581
+ #: admin/settings/fields/typography/typography.php:189
2582
+ #: admin/settings/fields/typography/typography.php:203
2583
+ #: admin/settings/fields/typography/typography.php:221
2584
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:119
2585
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:132
2586
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:145
2587
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:160
2588
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:176
2589
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:189
2590
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:203
2591
+ #: build/wp-ulike/admin/settings/fields/typography/typography.php:221
2592
+ #: build/wp-ulike/inc/functions/templates.php:26
2593
+ #: includes/functions/templates.php:23
2594
+ msgid "Default"
2595
+ msgstr ""
2596
+
2597
  #: admin/settings/fields/typography/typography.php:130
2598
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:130
2599
  msgid "Font Style"
2792
  msgstr ""
2793
 
2794
  #: build/wp-ulike/inc/classes/class-wp-ulike-ajax-listener-base.php:60
2795
+ #: includes/classes/class-wp-ulike-ajax-listener-base.php:69
2796
  msgid "There was an error processing the request."
2797
  msgstr ""
2798
 
2799
+ #: build/wp-ulike/inc/classes/class-wp-ulike-cta-listener.php:46
2800
+ #: build/wp-ulike/inc/classes/class-wp-ulike-voters-listener.php:36
2801
+ #: includes/classes/class-wp-ulike-cta-listener.php:55
2802
+ #: includes/classes/class-wp-ulike-voters-listener.php:41
2803
  msgid "permission denied."
2804
  msgstr ""
2805
 
2806
+ #: build/wp-ulike/inc/classes/class-wp-ulike-cta-listener.php:50
2807
+ #: build/wp-ulike/inc/classes/class-wp-ulike-voters-listener.php:40
2808
+ #: includes/classes/class-wp-ulike-cta-listener.php:59
2809
+ #: includes/classes/class-wp-ulike-voters-listener.php:45
2810
  msgid "Invalid item type."
2811
  msgstr ""
2812
 
2813
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:52
2814
+ #: includes/classes/class-wp-ulike-customizer.php:49
2815
  msgid "Button Templates"
2816
  msgstr ""
2817
 
2818
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:56
2819
+ #: includes/classes/class-wp-ulike-customizer.php:53
2820
  msgid "Template Wrapper"
2821
  msgstr ""
2822
 
2823
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:61
2824
+ #: includes/classes/class-wp-ulike-customizer.php:58
2825
  msgid "In this section, you can customize the template wrapper styles."
2826
  msgstr ""
2827
 
2828
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:68
2829
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:380
2830
+ #: includes/classes/class-wp-ulike-customizer.php:65
2831
+ #: includes/classes/class-wp-ulike-customizer.php:377
2832
  msgid "Typography"
2833
  msgstr ""
2834
 
2845
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:475
2846
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:513
2847
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:556
2848
+ #: includes/classes/class-wp-ulike-customizer.php:78
2849
+ #: includes/classes/class-wp-ulike-customizer.php:97
2850
+ #: includes/classes/class-wp-ulike-customizer.php:117
2851
+ #: includes/classes/class-wp-ulike-customizer.php:173
2852
+ #: includes/classes/class-wp-ulike-customizer.php:212
2853
+ #: includes/classes/class-wp-ulike-customizer.php:246
2854
+ #: includes/classes/class-wp-ulike-customizer.php:314
2855
+ #: includes/classes/class-wp-ulike-customizer.php:339
2856
+ #: includes/classes/class-wp-ulike-customizer.php:396
2857
+ #: includes/classes/class-wp-ulike-customizer.php:434
2858
+ #: includes/classes/class-wp-ulike-customizer.php:472
2859
+ #: includes/classes/class-wp-ulike-customizer.php:510
2860
+ #: includes/classes/class-wp-ulike-customizer.php:553
2861
  msgid "Background"
2862
  msgstr ""
2863
 
2874
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:482
2875
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:520
2876
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:563
2877
+ #: includes/classes/class-wp-ulike-customizer.php:85
2878
+ #: includes/classes/class-wp-ulike-customizer.php:105
2879
+ #: includes/classes/class-wp-ulike-customizer.php:123
2880
+ #: includes/classes/class-wp-ulike-customizer.php:179
2881
+ #: includes/classes/class-wp-ulike-customizer.php:220
2882
+ #: includes/classes/class-wp-ulike-customizer.php:252
2883
+ #: includes/classes/class-wp-ulike-customizer.php:321
2884
+ #: includes/classes/class-wp-ulike-customizer.php:345
2885
+ #: includes/classes/class-wp-ulike-customizer.php:403
2886
+ #: includes/classes/class-wp-ulike-customizer.php:441
2887
+ #: includes/classes/class-wp-ulike-customizer.php:479
2888
+ #: includes/classes/class-wp-ulike-customizer.php:517
2889
+ #: includes/classes/class-wp-ulike-customizer.php:560
2890
  msgid "Border"
2891
  msgstr ""
2892
 
2893
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:137
2894
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:280
2895
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:358
2896
+ #: includes/classes/class-wp-ulike-customizer.php:134
2897
+ #: includes/classes/class-wp-ulike-customizer.php:277
2898
+ #: includes/classes/class-wp-ulike-customizer.php:355
2899
  msgid "Padding"
2900
  msgstr ""
2901
 
2902
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:145
2903
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:288
2904
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:365
2905
+ #: includes/classes/class-wp-ulike-customizer.php:142
2906
+ #: includes/classes/class-wp-ulike-customizer.php:285
2907
+ #: includes/classes/class-wp-ulike-customizer.php:362
2908
  msgid "Margin"
2909
  msgstr ""
2910
 
2911
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:157
2912
+ #: includes/classes/class-wp-ulike-customizer.php:154
2913
  msgid ""
2914
  "In this section, you can customize the styles related to the buttons. Please "
2915
  "note that some buttons have different structures (such as SVG based) and "
2925
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:431
2926
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:469
2927
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:507
2928
+ #: includes/classes/class-wp-ulike-customizer.php:166
2929
+ #: includes/classes/class-wp-ulike-customizer.php:205
2930
+ #: includes/classes/class-wp-ulike-customizer.php:239
2931
+ #: includes/classes/class-wp-ulike-customizer.php:308
2932
+ #: includes/classes/class-wp-ulike-customizer.php:332
2933
+ #: includes/classes/class-wp-ulike-customizer.php:390
2934
+ #: includes/classes/class-wp-ulike-customizer.php:428
2935
+ #: includes/classes/class-wp-ulike-customizer.php:466
2936
+ #: includes/classes/class-wp-ulike-customizer.php:504
2937
  msgid "Text Color"
2938
  msgstr ""
2939
 
2942
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:451
2943
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:489
2944
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:527
2945
+ #: includes/classes/class-wp-ulike-customizer.php:186
2946
+ #: includes/classes/class-wp-ulike-customizer.php:410
2947
+ #: includes/classes/class-wp-ulike-customizer.php:448
2948
+ #: includes/classes/class-wp-ulike-customizer.php:486
2949
+ #: includes/classes/class-wp-ulike-customizer.php:524
2950
  msgid "Image Dimensions"
2951
  msgstr ""
2952
 
2953
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:196
2954
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:231
2955
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:262
2956
+ #: includes/classes/class-wp-ulike-customizer.php:193
2957
+ #: includes/classes/class-wp-ulike-customizer.php:228
2958
+ #: includes/classes/class-wp-ulike-customizer.php:259
2959
  msgid "Like Image"
2960
  msgstr ""
2961
 
2962
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:273
2963
+ #: includes/classes/class-wp-ulike-customizer.php:270
2964
  msgid "Button Dimensions"
2965
  msgstr ""
2966
 
2967
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:294
2968
+ #: includes/classes/class-wp-ulike-customizer.php:291
2969
  msgid "Counter"
2970
  msgstr ""
2971
 
2972
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:299
2973
+ #: includes/classes/class-wp-ulike-customizer.php:296
2974
  msgid "In this section, you can customize the template counter styles."
2975
  msgstr ""
2976
 
2977
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:373
2978
+ #: includes/classes/class-wp-ulike-customizer.php:370
2979
  msgid "Toast Messages"
2980
  msgstr ""
2981
 
2982
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:388
2983
+ #: includes/classes/class-wp-ulike-customizer.php:385
2984
  msgid "Info"
2985
  msgstr ""
2986
 
2988
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:458
2989
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:496
2990
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:534
2991
+ #: includes/classes/class-wp-ulike-customizer.php:417
2992
+ #: includes/classes/class-wp-ulike-customizer.php:455
2993
+ #: includes/classes/class-wp-ulike-customizer.php:493
2994
+ #: includes/classes/class-wp-ulike-customizer.php:531
2995
  msgid "Icon Image"
2996
  msgstr ""
2997
 
2998
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:426
2999
+ #: includes/classes/class-wp-ulike-customizer.php:423
3000
  msgid "Success"
3001
  msgstr ""
3002
 
3003
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:464
3004
+ #: includes/classes/class-wp-ulike-customizer.php:461
3005
  msgid "Error"
3006
  msgstr ""
3007
 
3008
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:502
3009
+ #: includes/classes/class-wp-ulike-customizer.php:499
3010
  msgid "Warning"
3011
  msgstr ""
3012
 
3013
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:546
3014
+ #: includes/classes/class-wp-ulike-customizer.php:543
3015
  msgid "Likers Box"
3016
  msgstr ""
3017
 
3018
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:570
3019
+ #: includes/classes/class-wp-ulike-customizer.php:567
3020
  msgid "Arrow Color"
3021
  msgstr ""
3022
 
3023
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:241
3024
+ #: includes/classes/class-wp-ulike-mycred.php:238
3025
  msgid "Points for Liking content"
3026
  msgstr ""
3027
 
3028
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:245
3029
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:270
3030
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:295
3031
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:320
3032
+ #: includes/classes/class-wp-ulike-mycred.php:242
3033
+ #: includes/classes/class-wp-ulike-mycred.php:267
3034
+ #: includes/classes/class-wp-ulike-mycred.php:292
3035
+ #: includes/classes/class-wp-ulike-mycred.php:317
3036
  msgid "Points"
3037
  msgstr ""
3038
 
3039
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:247
3040
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:272
3041
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:297
3042
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:322
3043
+ #: includes/classes/class-wp-ulike-mycred.php:244
3044
+ #: includes/classes/class-wp-ulike-mycred.php:269
3045
+ #: includes/classes/class-wp-ulike-mycred.php:294
3046
+ #: includes/classes/class-wp-ulike-mycred.php:319
3047
  msgid "Use zero to disable."
3048
  msgstr ""
3049
 
3050
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:252
3051
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:277
3052
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:302
3053
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:327
3054
+ #: includes/classes/class-wp-ulike-mycred.php:249
3055
+ #: includes/classes/class-wp-ulike-mycred.php:274
3056
+ #: includes/classes/class-wp-ulike-mycred.php:299
3057
+ #: includes/classes/class-wp-ulike-mycred.php:324
3058
  msgid "Limit"
3059
  msgstr ""
3060
 
3061
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:258
3062
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:283
3063
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:308
3064
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:333
3065
+ #: includes/classes/class-wp-ulike-mycred.php:255
3066
+ #: includes/classes/class-wp-ulike-mycred.php:280
3067
+ #: includes/classes/class-wp-ulike-mycred.php:305
3068
+ #: includes/classes/class-wp-ulike-mycred.php:330
3069
  msgid "Log template"
3070
  msgstr ""
3071
 
3072
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:266
3073
+ #: includes/classes/class-wp-ulike-mycred.php:263
3074
  msgid "Points for Author Who Get Liked"
3075
  msgstr ""
3076
 
3077
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:291
3078
+ #: includes/classes/class-wp-ulike-mycred.php:288
3079
  msgid "Points for unliking content"
3080
  msgstr ""
3081
 
3082
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:316
3083
+ #: includes/classes/class-wp-ulike-mycred.php:313
3084
  msgid "Points for Author Who Get Unliked"
3085
  msgstr ""
3086
 
3087
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:341
3088
+ #: includes/classes/class-wp-ulike-mycred.php:338
3089
  msgid "Limits"
3090
  msgstr ""
3091
 
3092
+ #: build/wp-ulike/inc/classes/class-wp-ulike-mycred.php:346
3093
+ #: includes/classes/class-wp-ulike-mycred.php:343
3094
  msgid ""
3095
  "%plural% is to be awarded even when item authors Like/Unlike their own item."
3096
  msgstr ""
3097
 
3098
+ #: build/wp-ulike/inc/functions/counter.php:72
3099
+ #: includes/functions/counter.php:69
3100
  msgid "Please enter some value for required variables."
3101
  msgstr ""
3102
 
3103
+ #: build/wp-ulike/inc/functions/counter.php:86
3104
+ #: includes/functions/counter.php:83
3105
  msgid "Table info is empty."
3106
  msgstr ""
3107
 
3108
+ #: build/wp-ulike/inc/functions/templates.php:38
3109
+ #: includes/functions/templates.php:35
3110
  msgid "Twitter Heart"
3111
  msgstr ""
3112
 
3113
+ #: build/wp-ulike/inc/functions/templates.php:44
3114
+ #: includes/functions/templates.php:41
3115
  msgid "Animated Heart"
3116
  msgstr ""
3117
 
3118
+ #: build/wp-ulike/inc/hooks/shortcodes.php:146
3119
+ #: includes/hooks/shortcodes.php:143
3120
  msgid "Error receiving input parameters"
3121
  msgstr ""
3122
 
3123
+ #: build/wp-ulike/inc/hooks/third-party.php:120
3124
+ #: includes/hooks/third-party.php:116
3125
  msgid "WP ULike Activity"
3126
  msgstr ""
3127
 
3128
+ #: build/wp-ulike/inc/hooks/third-party.php:135
3129
+ #: includes/hooks/third-party.php:131
3130
  msgid "Votes"
3131
  msgstr ""
3132
 
3133
+ #: build/wp-ulike/inc/hooks/third-party.php:344
3134
+ #: includes/hooks/third-party.php:340
3135
  msgid "posts"
3136
  msgstr ""
3137
 
3138
+ #: build/wp-ulike/inc/hooks/third-party.php:351
3139
+ #: includes/hooks/third-party.php:347
3140
  msgid "comments"
3141
  msgstr ""
3142
 
3143
+ #: build/wp-ulike/inc/hooks/third-party.php:357
3144
+ #: includes/hooks/third-party.php:353
3145
  msgid "activities"
3146
  msgstr ""
3147
 
3148
+ #: build/wp-ulike/inc/hooks/third-party.php:365
3149
+ #: includes/hooks/third-party.php:361
3150
  msgid "topics"
3151
  msgstr ""
3152
 
3153
+ #: build/wp-ulike/inc/hooks/third-party.php:368
3154
+ #: includes/hooks/third-party.php:364
3155
  msgid "replies"
3156
  msgstr ""
3157
 
3158
+ #: build/wp-ulike/inc/hooks/third-party.php:380
3159
+ #: includes/hooks/third-party.php:376
3160
  msgid "You have %d new %s likes"
3161
  msgstr ""
3162
 
3163
+ #: build/wp-ulike/inc/hooks/third-party.php:384
3164
+ #: includes/hooks/third-party.php:380
3165
  msgid "%s liked one of your %s"
3166
  msgstr ""
3167
 
3168
+ #: build/wp-ulike/inc/hooks/third-party.php:428
3169
+ #: includes/hooks/third-party.php:424
3170
  msgid "New activity liked"
3171
  msgstr ""
3172
 
3173
+ #: build/wp-ulike/inc/hooks/third-party.php:433
3174
+ #: includes/hooks/third-party.php:429
3175
  msgid "New comment liked"
3176
  msgstr ""
3177
 
3178
+ #: build/wp-ulike/inc/hooks/third-party.php:438
3179
+ #: includes/hooks/third-party.php:434
3180
  msgid "New post liked"
3181
  msgstr ""
3182
 
3183
+ #: build/wp-ulike/inc/hooks/third-party.php:443
3184
+ #: includes/hooks/third-party.php:439
3185
  msgid "New topic liked"
3186
  msgstr ""
3187
 
3188
+ #: build/wp-ulike/inc/hooks/third-party.php:797
3189
+ #: includes/hooks/third-party.php:795
3190
+ msgid "Points for liking content"
3191
+ msgstr ""
3192
+
3193
+ #: build/wp-ulike/inc/hooks/third-party.php:798
3194
+ #: includes/hooks/third-party.php:796
3195
  msgid ""
3196
  "This hook award / deducts points from users who Like/Unlike any content of "
3197
  "WordPress, bbPress, BuddyPress & ..."
3198
  msgstr ""
3199
 
3200
+ #: build/wp-ulike/inc/hooks/third-party.php:814
3201
+ #: includes/hooks/third-party.php:812
3202
  msgid "Liking Content"
3203
  msgstr ""
3204
 
3205
+ #: build/wp-ulike/inc/hooks/third-party.php:815
3206
+ #: includes/hooks/third-party.php:813
3207
  msgid "Liked Content"
3208
  msgstr ""
3209
 
3210
+ #: build/wp-ulike/inc/hooks/third-party.php:816
3211
+ #: includes/hooks/third-party.php:814
3212
  msgid "Unliking Content"
3213
  msgstr ""
3214
 
3215
+ #: build/wp-ulike/inc/hooks/third-party.php:817
3216
+ #: includes/hooks/third-party.php:815
3217
  msgid "Unliked Content"
3218
  msgstr ""
3219
 
3220
+ #: build/wp-ulike/inc/hooks/third-party.php:835
3221
+ #: includes/hooks/third-party.php:833
3222
  msgid "Recent Posts Liked"
3223
  msgstr ""
3224
 
3225
+ #: build/wp-ulike/inc/hooks/third-party.php:840
3226
+ #: includes/hooks/third-party.php:838
3227
  msgid "Recent Comments Liked"
3228
  msgstr ""
3229
 
3230
+ #: build/wp-ulike/inc/hooks/third-party.php:871
3231
+ #: build/wp-ulike/inc/hooks/third-party.php:897
3232
+ #: build/wp-ulike/inc/hooks/third-party.php:927
3233
+ #: build/wp-ulike/inc/hooks/third-party.php:957
3234
+ #: includes/hooks/third-party.php:869 includes/hooks/third-party.php:895
3235
+ #: includes/hooks/third-party.php:925 includes/hooks/third-party.php:955
3236
  msgid "This user has not made any likes."
3237
  msgstr ""
3238
 
3240
  msgid "WP ULike"
3241
  msgstr ""
3242
 
3243
+ #: build/wp-ulike/wp-ulike.php:594 wp-ulike.php:76
3244
  msgid ""
3245
  "You are using two instances of WP ULike plugin at same time, please deactive "
3246
  "one of them."
languages/wp-ulike-fa_IR.po CHANGED
@@ -4,7 +4,7 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: Plugins - WP ULike - Stable (latest release)\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/plugins/wp-ulike/\n"
7
- "POT-Creation-Date: 2021-01-09 00:39:07+00:00\n"
8
  "PO-Revision-Date: 2021-01-09 02:03+0330\n"
9
  "Last-Translator: \n"
10
  "Language-Team: \n"
@@ -35,11 +35,11 @@ msgid "It's Ok!"
35
  msgstr ""
36
 
37
  #: admin/admin-functions.php:240
38
- #: admin/classes/class-wp-ulike-admin-panel.php:757
39
  #: build/wp-ulike/admin/admin-functions.php:243
40
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:760
41
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:152
42
- #: inc/classes/class-wp-ulike-customizer.php:149
43
  msgid "Button"
44
  msgstr ""
45
 
@@ -97,15 +97,17 @@ msgstr ""
97
  #: admin/admin-hooks.php:170 admin/admin-hooks.php:194
98
  #: admin/admin-hooks.php:217 admin/classes/class-wp-ulike-admin-panel.php:383
99
  #: admin/classes/class-wp-ulike-admin-panel.php:413
100
- #: admin/classes/class-wp-ulike-admin-panel.php:531
101
  #: admin/classes/class-wp-ulike-admin-panel.php:560
 
102
  #: build/wp-ulike/admin/admin-hooks.php:173
103
  #: build/wp-ulike/admin/admin-hooks.php:197
104
  #: build/wp-ulike/admin/admin-hooks.php:220
105
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:386
106
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:416
107
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:534
108
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:563
 
109
  msgid "Get More Information"
110
  msgstr ""
111
 
@@ -145,25 +147,25 @@ msgstr ""
145
 
146
  #: admin/admin-hooks.php:485 admin/classes/class-wp-ulike-admin-panel.php:125
147
  #: admin/classes/class-wp-ulike-admin-panel.php:142
148
- #: admin/classes/class-wp-ulike-admin-panel.php:611
149
- #: admin/classes/class-wp-ulike-admin-panel.php:641
150
  #: admin/classes/class-wp-ulike-widget.php:355
151
  #: build/wp-ulike/admin/admin-hooks.php:488
152
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:128
153
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:145
154
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:614
155
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:644
156
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:358
157
  msgid "Like"
158
  msgstr "لایک"
159
 
160
- #: admin/classes/class-wp-ulike-admin-assets.php:119
161
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:107
162
  msgid "Are you sure to remove this item?!"
163
  msgstr "آیا از حذف این آیتم اطمینان دارید؟!"
164
 
165
- #: admin/classes/class-wp-ulike-admin-assets.php:120
166
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:108
167
  msgid "No information was found in this database!"
168
  msgstr ""
169
 
@@ -199,13 +201,13 @@ msgstr "وقایع لایک در تاپیک ها"
199
  #: admin/includes/templates/statistics.php:124
200
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:62
201
  #: build/wp-ulike/admin/includes/templates/statistics.php:127
202
- #: build/wp-ulike/wp-ulike.php:169 wp-ulike.php:166
203
  msgid "Statistics"
204
  msgstr "آماره"
205
 
206
  #: admin/classes/class-wp-ulike-admin-pages.php:67
207
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:70
208
- #: build/wp-ulike/wp-ulike.php:170 wp-ulike.php:167
209
  msgid "About"
210
  msgstr "درباره"
211
 
@@ -232,7 +234,7 @@ msgstr "وقایع"
232
 
233
  #: admin/classes/class-wp-ulike-admin-panel.php:43
234
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:46
235
- #: build/wp-ulike/wp-ulike.php:168 wp-ulike.php:165
236
  msgid "Settings"
237
  msgstr "تنظیمات"
238
 
@@ -275,12 +277,12 @@ msgstr ""
275
 
276
  #: admin/classes/class-wp-ulike-admin-panel.php:131
277
  #: admin/classes/class-wp-ulike-admin-panel.php:147
278
- #: admin/classes/class-wp-ulike-admin-panel.php:622
279
- #: admin/classes/class-wp-ulike-admin-panel.php:653
280
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:134
281
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:150
282
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:625
283
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:656
284
  msgid "Unlike"
285
  msgstr "آنلایک"
286
 
@@ -381,53 +383,53 @@ msgid "With this option, you can disable all plugin assets on these pages."
381
  msgstr ""
382
 
383
  #: admin/classes/class-wp-ulike-admin-panel.php:201
384
- #: admin/classes/class-wp-ulike-admin-panel.php:694
385
  #: admin/includes/templates/about.php:46
386
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:204
387
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:697
388
  #: build/wp-ulike/admin/includes/templates/about.php:49
389
  msgid "Home"
390
  msgstr "خانه"
391
 
392
  #: admin/classes/class-wp-ulike-admin-panel.php:202
393
- #: admin/classes/class-wp-ulike-admin-panel.php:695
394
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:205
395
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:698
396
  msgid "Singular"
397
  msgstr ""
398
 
399
  #: admin/classes/class-wp-ulike-admin-panel.php:203
400
- #: admin/classes/class-wp-ulike-admin-panel.php:696
401
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:206
402
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:699
403
  msgid "Archives"
404
  msgstr "بایگانی"
405
 
406
  #: admin/classes/class-wp-ulike-admin-panel.php:204
407
- #: admin/classes/class-wp-ulike-admin-panel.php:697
408
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:207
409
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:700
410
  msgid "Categories"
411
  msgstr "دسته بندی ها"
412
 
413
  #: admin/classes/class-wp-ulike-admin-panel.php:205
414
- #: admin/classes/class-wp-ulike-admin-panel.php:698
415
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:208
416
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:701
417
  msgid "Search Results"
418
  msgstr "نتایج جستجوها"
419
 
420
  #: admin/classes/class-wp-ulike-admin-panel.php:206
421
- #: admin/classes/class-wp-ulike-admin-panel.php:699
422
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:209
423
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:702
424
  msgid "Tags"
425
  msgstr "برچسب ها"
426
 
427
  #: admin/classes/class-wp-ulike-admin-panel.php:207
428
- #: admin/classes/class-wp-ulike-admin-panel.php:700
429
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:210
430
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:703
431
  msgid "Author Page"
432
  msgstr "صفحه نویسنده"
433
 
@@ -495,12 +497,12 @@ msgstr "متن فعالیت مطالب"
495
 
496
  #: admin/classes/class-wp-ulike-admin-panel.php:268
497
  #: admin/classes/class-wp-ulike-admin-panel.php:280
498
- #: admin/classes/class-wp-ulike-admin-panel.php:765
499
- #: admin/classes/class-wp-ulike-admin-panel.php:821
500
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:271
501
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:283
502
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:768
503
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:824
504
  msgid "Allowed Variables:"
505
  msgstr "متغیرهای قابل استفاده:"
506
 
@@ -622,204 +624,224 @@ msgid ""
622
  "with just a few simple clicks."
623
  msgstr ""
624
 
625
- #: admin/classes/class-wp-ulike-admin-panel.php:433
626
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
627
  msgid "Translations"
628
  msgstr "ترجمه ها"
629
 
630
- #: admin/classes/class-wp-ulike-admin-panel.php:442
631
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:445
632
  msgid "Strings"
633
  msgstr "رشته ها"
634
 
635
- #: admin/classes/class-wp-ulike-admin-panel.php:448
636
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:451
637
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:30
638
- #: inc/classes/class-wp-ulike-setting-repo.php:30
639
  msgid "You have already registered a vote."
640
  msgstr ""
641
 
642
- #: admin/classes/class-wp-ulike-admin-panel.php:449
643
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:452
644
  msgid "Already Voted Message"
645
  msgstr ""
646
 
647
- #: admin/classes/class-wp-ulike-admin-panel.php:454
648
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:457
649
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:21
650
- #: inc/classes/class-wp-ulike-setting-repo.php:21
651
  msgid "You Should Login To Submit Your Like"
652
  msgstr "برای ثبت لایک، باید وارد شوید"
653
 
654
- #: admin/classes/class-wp-ulike-admin-panel.php:455
655
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:458
656
  msgid "Login Required Message"
657
  msgstr ""
658
 
659
- #: admin/classes/class-wp-ulike-admin-panel.php:460
660
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:463
661
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:39
662
- #: inc/classes/class-wp-ulike-setting-repo.php:39
663
  msgid "Thanks! You Liked This."
664
  msgstr "متشکریم! شما این را لایک کردید."
665
 
666
- #: admin/classes/class-wp-ulike-admin-panel.php:461
667
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:464
668
  msgid "Liked Notice Message"
669
  msgstr "پیغام اطلاعیه پسندیدن"
670
 
671
- #: admin/classes/class-wp-ulike-admin-panel.php:466
672
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:469
673
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:48
674
- #: inc/classes/class-wp-ulike-setting-repo.php:48
675
  msgid "Sorry! You unliked this."
676
  msgstr "متأسفیم! شما این را نپسندیدید."
677
 
678
- #: admin/classes/class-wp-ulike-admin-panel.php:467
679
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:470
680
  msgid "Unliked Notice Message"
681
  msgstr "پیغام اطلاعیه لغو پسندیدن"
682
 
683
- #: admin/classes/class-wp-ulike-admin-panel.php:472
684
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:475
685
  #: build/wp-ulike/inc/functions/templates.php:73
686
  #: build/wp-ulike/inc/functions/templates.php:125
687
  #: build/wp-ulike/inc/functions/templates.php:177
688
  #: build/wp-ulike/inc/functions/templates.php:227
689
- #: inc/functions/templates.php:70 inc/functions/templates.php:122
690
- #: inc/functions/templates.php:174 inc/functions/templates.php:224
691
  msgid "Like Button"
692
  msgstr "دکمه لایک"
693
 
694
- #: admin/classes/class-wp-ulike-admin-panel.php:473
695
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:476
696
  msgid "Like Button Aria Label"
697
  msgstr ""
698
 
699
- #: admin/classes/class-wp-ulike-admin-panel.php:483
700
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:486
701
  msgid "Developer Tools"
702
  msgstr "ابزارهای توسعه"
703
 
704
- #: admin/classes/class-wp-ulike-admin-panel.php:489
705
  #: admin/settings/fields/typography/typography.php:295
706
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:492
707
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:295
708
  msgid "Custom Style"
709
  msgstr "سفارشی سازی"
710
 
711
- #: admin/classes/class-wp-ulike-admin-panel.php:503
712
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:506
713
  msgid "Custom Spinner"
714
  msgstr ""
715
 
716
- #: admin/classes/class-wp-ulike-admin-panel.php:510
717
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:513
718
  msgid "Enable Inline Custom CSS"
719
  msgstr ""
720
 
721
- #: admin/classes/class-wp-ulike-admin-panel.php:511
722
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:514
723
  msgid ""
724
  "If you don't want to use \"custom.css\" file for any reason, by activating "
725
  "this option, the styles will be added to the page as inline."
726
  msgstr ""
727
 
728
- #: admin/classes/class-wp-ulike-admin-panel.php:518
729
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:521
730
  msgid "REST API"
731
  msgstr "تنظیمات Rest API"
732
 
733
- #: admin/classes/class-wp-ulike-admin-panel.php:525
734
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:528
735
  msgid "How to Get Started with WP ULike REST API?"
736
  msgstr ""
737
 
738
- #: admin/classes/class-wp-ulike-admin-panel.php:526
739
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:529
740
  msgid ""
741
  "Have you ever tried to get data from online sources like WP ULike logs and "
742
  "use them in your Application or website? the solution is Rest API!"
743
  msgstr ""
744
 
745
- #: admin/classes/class-wp-ulike-admin-panel.php:547
746
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:550
747
  msgid "Optimization"
748
  msgstr "بهینه سازی"
749
 
750
- #: admin/classes/class-wp-ulike-admin-panel.php:554
751
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:557
752
  msgid "How to Optimize or Repair WP ULike Database Tables?"
753
  msgstr ""
754
 
755
- #: admin/classes/class-wp-ulike-admin-panel.php:555
756
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:558
757
  msgid ""
758
  "Have you ever optimized your WP ULike database? Optimizing your database "
759
  "cleans up unwanted data which reduces database size and improves performance."
760
  msgstr ""
761
 
762
- #: admin/classes/class-wp-ulike-admin-panel.php:587
763
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:590
764
  msgid "Select a Template"
765
  msgstr "یک تمپلیت انتخاب کنید"
766
 
767
- #: admin/classes/class-wp-ulike-admin-panel.php:588
768
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:591
769
  msgid "Display online preview"
770
  msgstr ""
771
 
772
- #: admin/classes/class-wp-ulike-admin-panel.php:588
773
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:591
774
  msgid "Here"
775
  msgstr ""
776
 
777
- #: admin/classes/class-wp-ulike-admin-panel.php:596
778
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:599
779
  msgid "Button Type"
780
  msgstr "حالت دکمه"
781
 
782
- #: admin/classes/class-wp-ulike-admin-panel.php:599
783
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:602
784
  msgid "Image"
785
  msgstr ""
786
 
787
- #: admin/classes/class-wp-ulike-admin-panel.php:600
788
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:603
789
  msgid "Text"
790
  msgstr "متن"
791
 
792
- #: admin/classes/class-wp-ulike-admin-panel.php:607
793
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:610
794
  msgid ""
795
  "Enter your custom button text in the fields above. You can also use HTML "
796
  "tags in these fields."
797
  msgstr ""
798
 
799
- #: admin/classes/class-wp-ulike-admin-panel.php:608
800
- #: admin/classes/class-wp-ulike-admin-panel.php:616
801
- #: admin/classes/class-wp-ulike-admin-panel.php:627
802
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:611
803
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:619
804
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:630
805
  msgid "Button Text"
806
  msgstr "متن دکمه"
807
 
808
- #: admin/classes/class-wp-ulike-admin-panel.php:638
809
- #: admin/classes/class-wp-ulike-admin-panel.php:646
810
- #: admin/classes/class-wp-ulike-admin-panel.php:658
811
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:641
812
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:649
813
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:661
814
  msgid "Button Image"
815
  msgstr ""
816
 
817
- #: admin/classes/class-wp-ulike-admin-panel.php:671
818
  #: admin/classes/class-wp-ulike-settings.php:65
819
  #: admin/classes/class-wp-ulike-settings.php:72
820
  #: admin/classes/class-wp-ulike-settings.php:78
821
  #: admin/classes/class-wp-ulike-settings.php:84
822
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:674
823
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:68
824
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:75
825
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:81
@@ -827,238 +849,221 @@ msgstr ""
827
  msgid "Automatic display"
828
  msgstr "نمایش خودکار"
829
 
830
- #: admin/classes/class-wp-ulike-admin-panel.php:676
831
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:679
832
  msgid "Button Position"
833
  msgstr ""
834
 
835
- #: admin/classes/class-wp-ulike-admin-panel.php:679
836
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:682
837
  msgid "Top of Content"
838
  msgstr "بالای محتوا"
839
 
840
- #: admin/classes/class-wp-ulike-admin-panel.php:680
841
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:683
842
  msgid "Bottom of Content"
843
  msgstr "پایین محتوا"
844
 
845
- #: admin/classes/class-wp-ulike-admin-panel.php:681
846
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:684
847
  msgid "Top and Bottom"
848
  msgstr "بالا و پایین"
849
 
850
- #: admin/classes/class-wp-ulike-admin-panel.php:688
851
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:691
852
  msgid "Automatic Display Restriction"
853
  msgstr ""
854
 
855
- #: admin/classes/class-wp-ulike-admin-panel.php:689
856
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:692
857
  msgid "With this option, you can disable automatic display on these pages."
858
  msgstr ""
859
 
860
- #: admin/classes/class-wp-ulike-admin-panel.php:707
861
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:710
862
  msgid "Post Types Filter"
863
  msgstr ""
864
 
865
- #: admin/classes/class-wp-ulike-admin-panel.php:708
866
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:711
867
  msgid "Select a post type"
868
  msgstr ""
869
 
870
- #: admin/classes/class-wp-ulike-admin-panel.php:709
871
- #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:712
872
  msgid "Make these post types an exception and display the button on them."
873
  msgstr ""
874
 
875
- #: admin/classes/class-wp
4
  msgstr ""
5
  "Project-Id-Version: Plugins - WP ULike - Stable (latest release)\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/plugins/wp-ulike/\n"
7
+ "POT-Creation-Date: 2021-04-04 15:20:05+00:00\n"
8
  "PO-Revision-Date: 2021-01-09 02:03+0330\n"
9
  "Last-Translator: \n"
10
  "Language-Team: \n"
35
  msgstr ""
36
 
37
  #: admin/admin-functions.php:240
38
+ #: admin/classes/class-wp-ulike-admin-panel.php:786
39
  #: build/wp-ulike/admin/admin-functions.php:243
40
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:789
41
  #: build/wp-ulike/inc/classes/class-wp-ulike-customizer.php:152
42
+ #: includes/classes/class-wp-ulike-customizer.php:149
43
  msgid "Button"
44
  msgstr ""
45
 
97
  #: admin/admin-hooks.php:170 admin/admin-hooks.php:194
98
  #: admin/admin-hooks.php:217 admin/classes/class-wp-ulike-admin-panel.php:383
99
  #: admin/classes/class-wp-ulike-admin-panel.php:413
100
+ #: admin/classes/class-wp-ulike-admin-panel.php:443
101
  #: admin/classes/class-wp-ulike-admin-panel.php:560
102
+ #: admin/classes/class-wp-ulike-admin-panel.php:589
103
  #: build/wp-ulike/admin/admin-hooks.php:173
104
  #: build/wp-ulike/admin/admin-hooks.php:197
105
  #: build/wp-ulike/admin/admin-hooks.php:220
106
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:386
107
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:416
108
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:446
109
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:563
110
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:592
111
  msgid "Get More Information"
112
  msgstr ""
113
 
147
 
148
  #: admin/admin-hooks.php:485 admin/classes/class-wp-ulike-admin-panel.php:125
149
  #: admin/classes/class-wp-ulike-admin-panel.php:142
150
+ #: admin/classes/class-wp-ulike-admin-panel.php:640
151
+ #: admin/classes/class-wp-ulike-admin-panel.php:670
152
  #: admin/classes/class-wp-ulike-widget.php:355
153
  #: build/wp-ulike/admin/admin-hooks.php:488
154
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:128
155
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:145
156
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:643
157
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:673
158
  #: build/wp-ulike/admin/classes/class-wp-ulike-widget.php:358
159
  msgid "Like"
160
  msgstr "لایک"
161
 
162
+ #: admin/classes/class-wp-ulike-admin-assets.php:126
163
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:109
164
  msgid "Are you sure to remove this item?!"
165
  msgstr "آیا از حذف این آیتم اطمینان دارید؟!"
166
 
167
+ #: admin/classes/class-wp-ulike-admin-assets.php:127
168
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-assets.php:110
169
  msgid "No information was found in this database!"
170
  msgstr ""
171
 
201
  #: admin/includes/templates/statistics.php:124
202
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:62
203
  #: build/wp-ulike/admin/includes/templates/statistics.php:127
204
+ #: build/wp-ulike/wp-ulike.php:179 includes/plugin.php:103
205
  msgid "Statistics"
206
  msgstr "آماره"
207
 
208
  #: admin/classes/class-wp-ulike-admin-pages.php:67
209
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-pages.php:70
210
+ #: build/wp-ulike/wp-ulike.php:180 includes/plugin.php:104
211
  msgid "About"
212
  msgstr "درباره"
213
 
234
 
235
  #: admin/classes/class-wp-ulike-admin-panel.php:43
236
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:46
237
+ #: build/wp-ulike/wp-ulike.php:178 includes/plugin.php:102
238
  msgid "Settings"
239
  msgstr "تنظیمات"
240
 
277
 
278
  #: admin/classes/class-wp-ulike-admin-panel.php:131
279
  #: admin/classes/class-wp-ulike-admin-panel.php:147
280
+ #: admin/classes/class-wp-ulike-admin-panel.php:651
281
+ #: admin/classes/class-wp-ulike-admin-panel.php:682
282
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:134
283
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:150
284
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:654
285
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:685
286
  msgid "Unlike"
287
  msgstr "آنلایک"
288
 
383
  msgstr ""
384
 
385
  #: admin/classes/class-wp-ulike-admin-panel.php:201
386
+ #: admin/classes/class-wp-ulike-admin-panel.php:723
387
  #: admin/includes/templates/about.php:46
388
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:204
389
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:726
390
  #: build/wp-ulike/admin/includes/templates/about.php:49
391
  msgid "Home"
392
  msgstr "خانه"
393
 
394
  #: admin/classes/class-wp-ulike-admin-panel.php:202
395
+ #: admin/classes/class-wp-ulike-admin-panel.php:724
396
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:205
397
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:727
398
  msgid "Singular"
399
  msgstr ""
400
 
401
  #: admin/classes/class-wp-ulike-admin-panel.php:203
402
+ #: admin/classes/class-wp-ulike-admin-panel.php:725
403
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:206
404
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:728
405
  msgid "Archives"
406
  msgstr "بایگانی"
407
 
408
  #: admin/classes/class-wp-ulike-admin-panel.php:204
409
+ #: admin/classes/class-wp-ulike-admin-panel.php:726
410
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:207
411
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:729
412
  msgid "Categories"
413
  msgstr "دسته بندی ها"
414
 
415
  #: admin/classes/class-wp-ulike-admin-panel.php:205
416
+ #: admin/classes/class-wp-ulike-admin-panel.php:727
417
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:208
418
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:730
419
  msgid "Search Results"
420
  msgstr "نتایج جستجوها"
421
 
422
  #: admin/classes/class-wp-ulike-admin-panel.php:206
423
+ #: admin/classes/class-wp-ulike-admin-panel.php:728
424
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:209
425
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:731
426
  msgid "Tags"
427
  msgstr "برچسب ها"
428
 
429
  #: admin/classes/class-wp-ulike-admin-panel.php:207
430
+ #: admin/classes/class-wp-ulike-admin-panel.php:729
431
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:210
432
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:732
433
  msgid "Author Page"
434
  msgstr "صفحه نویسنده"
435
 
497
 
498
  #: admin/classes/class-wp-ulike-admin-panel.php:268
499
  #: admin/classes/class-wp-ulike-admin-panel.php:280
500
+ #: admin/classes/class-wp-ulike-admin-panel.php:794
501
+ #: admin/classes/class-wp-ulike-admin-panel.php:850
502
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:271
503
  #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:283
504
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:797
505
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:853
506
  msgid "Allowed Variables:"
507
  msgstr "متغیرهای قابل استفاده:"
508
 
624
  "with just a few simple clicks."
625
  msgstr ""
626
 
627
+ #: admin/classes/class-wp-ulike-admin-panel.php:430
628
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:433
629
+ #, fuzzy
630
+ msgid "Share Buttons"
631
+ msgstr "دکمه لایک"
632
+
633
+ #: admin/classes/class-wp-ulike-admin-panel.php:437
634
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:440
635
+ msgid "Easy Social Share Buttons for WordPress"
636
+ msgstr ""
637
+
638
+ #: admin/classes/class-wp-ulike-admin-panel.php:438
639
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:441
640
+ msgid ""
641
+ "WP ULike Share buttons enables your website users to share the content over "
642
+ "Facebook, Twitter, Google, Linkedin, Whatsapp, Tumblr, Pinterest, Reddit and "
643
+ "over 23 more social sharing services. This is the Simplest and Smoothest "
644
+ "Social Sharing service with optimized and great looking vector icons."
645
+ msgstr ""
646
+
647
+ #: admin/classes/class-wp-ulike-admin-panel.php:462
648
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:465
649
  msgid "Translations"
650
  msgstr "ترجمه ها"
651
 
652
+ #: admin/classes/class-wp-ulike-admin-panel.php:471
653
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:474
654
  msgid "Strings"
655
  msgstr "رشته ها"
656
 
657
+ #: admin/classes/class-wp-ulike-admin-panel.php:477
658
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:480
659
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:30
660
+ #: includes/classes/class-wp-ulike-setting-repo.php:35
661
  msgid "You have already registered a vote."
662
  msgstr ""
663
 
664
+ #: admin/classes/class-wp-ulike-admin-panel.php:478
665
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:481
666
  msgid "Already Voted Message"
667
  msgstr ""
668
 
669
+ #: admin/classes/class-wp-ulike-admin-panel.php:483
670
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:486
671
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:21
672
+ #: includes/classes/class-wp-ulike-setting-repo.php:26
673
  msgid "You Should Login To Submit Your Like"
674
  msgstr "برای ثبت لایک، باید وارد شوید"
675
 
676
+ #: admin/classes/class-wp-ulike-admin-panel.php:484
677
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:487
678
  msgid "Login Required Message"
679
  msgstr ""
680
 
681
+ #: admin/classes/class-wp-ulike-admin-panel.php:489
682
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:492
683
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:39
684
+ #: includes/classes/class-wp-ulike-setting-repo.php:44
685
  msgid "Thanks! You Liked This."
686
  msgstr "متشکریم! شما این را لایک کردید."
687
 
688
+ #: admin/classes/class-wp-ulike-admin-panel.php:490
689
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:493
690
  msgid "Liked Notice Message"
691
  msgstr "پیغام اطلاعیه پسندیدن"
692
 
693
+ #: admin/classes/class-wp-ulike-admin-panel.php:495
694
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:498
695
  #: build/wp-ulike/inc/classes/class-wp-ulike-setting-repo.php:48
696
+ #: includes/classes/class-wp-ulike-setting-repo.php:53
697
  msgid "Sorry! You unliked this."
698
  msgstr "متأسفیم! شما این را نپسندیدید."
699
 
700
+ #: admin/classes/class-wp-ulike-admin-panel.php:496
701
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:499
702
  msgid "Unliked Notice Message"
703
  msgstr "پیغام اطلاعیه لغو پسندیدن"
704
 
705
+ #: admin/classes/class-wp-ulike-admin-panel.php:501
706
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:504
707
  #: build/wp-ulike/inc/functions/templates.php:73
708
  #: build/wp-ulike/inc/functions/templates.php:125
709
  #: build/wp-ulike/inc/functions/templates.php:177
710
  #: build/wp-ulike/inc/functions/templates.php:227
711
+ #: includes/functions/templates.php:70 includes/functions/templates.php:122
712
+ #: includes/functions/templates.php:174 includes/functions/templates.php:224
713
  msgid "Like Button"
714
  msgstr "دکمه لایک"
715
 
716
+ #: admin/classes/class-wp-ulike-admin-panel.php:502
717
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:505
718
  msgid "Like Button Aria Label"
719
  msgstr ""
720
 
721
+ #: admin/classes/class-wp-ulike-admin-panel.php:512
722
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:515
723
  msgid "Developer Tools"
724
  msgstr "ابزارهای توسعه"
725
 
726
+ #: admin/classes/class-wp-ulike-admin-panel.php:518
727
  #: admin/settings/fields/typography/typography.php:295
728
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:521
729
  #: build/wp-ulike/admin/settings/fields/typography/typography.php:295
730
  msgid "Custom Style"
731
  msgstr "سفارشی سازی"
732
 
733
+ #: admin/classes/class-wp-ulike-admin-panel.php:532
734
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:535
735
  msgid "Custom Spinner"
736
  msgstr ""
737
 
738
+ #: admin/classes/class-wp-ulike-admin-panel.php:539
739
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:542
740
  msgid "Enable Inline Custom CSS"
741
  msgstr ""
742
 
743
+ #: admin/classes/class-wp-ulike-admin-panel.php:540
744
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:543
745
  msgid ""
746
  "If you don't want to use \"custom.css\" file for any reason, by activating "
747
  "this option, the styles will be added to the page as inline."
748
  msgstr ""
749
 
750
+ #: admin/classes/class-wp-ulike-admin-panel.php:547
751
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:550
752
  msgid "REST API"
753
  msgstr "تنظیمات Rest API"
754
 
755
+ #: admin/classes/class-wp-ulike-admin-panel.php:554
756
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:557
757
  msgid "How to Get Started with WP ULike REST API?"
758
  msgstr ""
759
 
760
+ #: admin/classes/class-wp-ulike-admin-panel.php:555
761
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:558
762
  msgid ""
763
  "Have you ever tried to get data from online sources like WP ULike logs and "
764
  "use them in your Application or website? the solution is Rest API!"
765
  msgstr ""
766
 
767
+ #: admin/classes/class-wp-ulike-admin-panel.php:576
768
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:579
769
  msgid "Optimization"
770
  msgstr "بهینه سازی"
771
 
772
+ #: admin/classes/class-wp-ulike-admin-panel.php:583
773
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:586
774
  msgid "How to Optimize or Repair WP ULike Database Tables?"
775
  msgstr ""
776
 
777
+ #: admin/classes/class-wp-ulike-admin-panel.php:584
778
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:587
779
  msgid ""
780
  "Have you ever optimized your WP ULike database? Optimizing your database "
781
  "cleans up unwanted data which reduces database size and improves performance."
782
  msgstr ""
783
 
784
+ #: admin/classes/class-wp-ulike-admin-panel.php:616
785
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:619
786
  msgid "Select a Template"
787
  msgstr "یک تمپلیت انتخاب کنید"
788
 
789
+ #: admin/classes/class-wp-ulike-admin-panel.php:617
790
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:620
791
  msgid "Display online preview"
792
  msgstr ""
793
 
794
+ #: admin/classes/class-wp-ulike-admin-panel.php:617
795
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:620
796
  msgid "Here"
797
  msgstr ""
798
 
799
+ #: admin/classes/class-wp-ulike-admin-panel.php:625
800
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:628
801
  msgid "Button Type"
802
  msgstr "حالت دکمه"
803
 
804
+ #: admin/classes/class-wp-ulike-admin-panel.php:628
805
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:631
806
  msgid "Image"
807
  msgstr ""
808
 
809
+ #: admin/classes/class-wp-ulike-admin-panel.php:629
810
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:632
811
  msgid "Text"
812
  msgstr "متن"
813
 
814
+ #: admin/classes/class-wp-ulike-admin-panel.php:636
815
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:639
816
  msgid ""
817
  "Enter your custom button text in the fields above. You can also use HTML "
818
  "tags in these fields."
819
  msgstr ""
820
 
821
+ #: admin/classes/class-wp-ulike-admin-panel.php:637
822
+ #: admin/classes/class-wp-ulike-admin-panel.php:645
823
+ #: admin/classes/class-wp-ulike-admin-panel.php:656
824
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:640
825
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:648
826
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:659
827
  msgid "Button Text"
828
  msgstr "متن دکمه"
829
 
830
+ #: admin/classes/class-wp-ulike-admin-panel.php:667
831
+ #: admin/classes/class-wp-ulike-admin-panel.php:675
832
+ #: admin/classes/class-wp-ulike-admin-panel.php:687
833
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:670
834
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:678
835
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:690
836
  msgid "Button Image"
837
  msgstr ""
838
 
839
+ #: admin/classes/class-wp-ulike-admin-panel.php:700
840
  #: admin/classes/class-wp-ulike-settings.php:65
841
  #: admin/classes/class-wp-ulike-settings.php:72
842
  #: admin/classes/class-wp-ulike-settings.php:78
843
  #: admin/classes/class-wp-ulike-settings.php:84
844
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:703
845
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:68
846
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:75
847
  #: build/wp-ulike/admin/classes/class-wp-ulike-settings.php:81
849
  msgid "Automatic display"
850
  msgstr "نمایش خودکار"
851
 
852
+ #: admin/classes/class-wp-ulike-admin-panel.php:705
853
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:708
854
  msgid "Button Position"
855
  msgstr ""
856
 
857
+ #: admin/classes/class-wp-ulike-admin-panel.php:708
858
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:711
859
  msgid "Top of Content"
860
  msgstr "بالای محتوا"
861
 
862
+ #: admin/classes/class-wp-ulike-admin-panel.php:709
863
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:712
864
  msgid "Bottom of Content"
865
  msgstr "پایین محتوا"
866
 
867
+ #: admin/classes/class-wp-ulike-admin-panel.php:710
868
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:713
869
  msgid "Top and Bottom"
870
  msgstr "بالا و پایین"
871
 
872
+ #: admin/classes/class-wp-ulike-admin-panel.php:717
873
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:720
874
  msgid "Automatic Display Restriction"
875
  msgstr ""
876
 
877
+ #: admin/classes/class-wp-ulike-admin-panel.php:718
878
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:721
879
  msgid "With this option, you can disable automatic display on these pages."
880
  msgstr ""
881
 
882
+ #: admin/classes/class-wp-ulike-admin-panel.php:736
883
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:739
884
  msgid "Post Types Filter"
885
  msgstr ""
886
 
887
+ #: admin/classes/class-wp-ulike-admin-panel.php:737
888
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:740
889
  msgid "Select a post type"
890
  msgstr ""
891
 
892
+ #: admin/classes/class-wp-ulike-admin-panel.php:738
893
+ #: build/wp-ulike/admin/classes/class-wp-ulike-admin-panel.php:741
894
  msgid "Make these post types an exception and display the button on them."
895
  msgstr ""
896