Version Description
- Updated - Readme.txt and documentation
- Removed - Unused files in plugin folders.
Download this release
Release Info
Developer | livemesh |
Plugin | Addons for Elementor |
Version | 2.6.2 |
Comparing to | |
See all releases |
Code changes from version 2.6 to 2.6.2
- addons-for-elementor.php +4 -4
- admin/admin-ajax.php +168 -168
- admin/views/documentation.php +26 -16
- admin/views/settings.php +15 -15
- assets/css/fonts/icomoon/icomoon.eot +0 -0
- assets/css/fonts/icomoon/icomoon.svg +40 -0
- assets/css/fonts/icomoon/icomoon.ttf +0 -0
- assets/css/fonts/icomoon/icomoon.woff +0 -0
- assets/js/modernizr-custom.js +0 -1384
- assets/js/modernizr-custom.min.js +0 -1
- freemius/.codeclimate.yml +0 -19
- freemius/.travis.yml +0 -11
- freemius/README.md +0 -253
- freemius/assets/css/admin/deactivation-feedback.css +0 -2
- freemius/assets/css/admin/license-activation.css +0 -2
- freemius/assets/img/addons-for-beaver-builder.png +0 -0
- freemius/assets/img/addons-for-elementor.png +0 -0
- freemius/assets/js/nojquery.ba-postmessage.min.min.js +0 -1
- freemius/composer.json +0 -10
- freemius/gulpfile.js +0 -167
- freemius/package.json +0 -27
- includes/controls/checkbox.php +34 -0
- plugin.php +2 -2
- readme.txt +42 -37
addons-for-elementor.php
CHANGED
@@ -2,13 +2,13 @@
|
|
2 |
|
3 |
/**
|
4 |
* Plugin Name: Livemesh Addons for Elementor
|
5 |
-
* Plugin URI: https://
|
6 |
* Description: A collection of premium quality addons or widgets for use in Elementor page builder. Elementor must be installed and activated.
|
7 |
* Author: Livemesh
|
8 |
-
* Author URI: https://
|
9 |
* License: GPL3
|
10 |
* License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
11 |
-
* Version: 2.6
|
12 |
* Text Domain: livemesh-el-addons
|
13 |
* Domain Path: languages
|
14 |
*
|
@@ -35,7 +35,7 @@ if ( !defined( 'ABSPATH' ) ) {
|
|
35 |
|
36 |
if ( !function_exists( 'lae_fs' ) ) {
|
37 |
// Plugin version
|
38 |
-
define( 'LAE_VERSION', '2.6' );
|
39 |
// Plugin Root File
|
40 |
define( 'LAE_PLUGIN_FILE', __FILE__ );
|
41 |
// Plugin Folder Path
|
2 |
|
3 |
/**
|
4 |
* Plugin Name: Livemesh Addons for Elementor
|
5 |
+
* Plugin URI: https://livemeshelementor.com
|
6 |
* Description: A collection of premium quality addons or widgets for use in Elementor page builder. Elementor must be installed and activated.
|
7 |
* Author: Livemesh
|
8 |
+
* Author URI: https://livemeshelementor.com
|
9 |
* License: GPL3
|
10 |
* License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
11 |
+
* Version: 2.6.2
|
12 |
* Text Domain: livemesh-el-addons
|
13 |
* Domain Path: languages
|
14 |
*
|
35 |
|
36 |
if ( !function_exists( 'lae_fs' ) ) {
|
37 |
// Plugin version
|
38 |
+
define( 'LAE_VERSION', '2.6.2' );
|
39 |
// Plugin Root File
|
40 |
define( 'LAE_PLUGIN_FILE', __FILE__ );
|
41 |
// Plugin Folder Path
|
admin/admin-ajax.php
CHANGED
@@ -1,169 +1,169 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// Exit if accessed directly
|
4 |
-
if (!defined('ABSPATH')) {
|
5 |
-
exit;
|
6 |
-
}
|
7 |
-
|
8 |
-
class LAE_Admin_Ajax {
|
9 |
-
|
10 |
-
// Instance of this class.
|
11 |
-
protected $plugin_slug = 'livemesh_el_addons';
|
12 |
-
protected $ajax_data;
|
13 |
-
protected $ajax_msg;
|
14 |
-
|
15 |
-
|
16 |
-
public function __construct() {
|
17 |
-
|
18 |
-
// retrieve all ajax string to localize
|
19 |
-
$this->localize_strings();
|
20 |
-
$this->init_hooks();
|
21 |
-
|
22 |
-
}
|
23 |
-
|
24 |
-
public function init_hooks() {
|
25 |
-
|
26 |
-
// Register backend ajax action
|
27 |
-
add_action('wp_ajax_lae_admin_ajax', array($this, 'lae_admin_ajax'));
|
28 |
-
// Load admin ajax js script
|
29 |
-
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
|
30 |
-
|
31 |
-
}
|
32 |
-
|
33 |
-
public function ajax_response($success = true, $message = null, $content = null) {
|
34 |
-
|
35 |
-
$response = array(
|
36 |
-
'success' => $success,
|
37 |
-
'message' => $message,
|
38 |
-
'content' => $content
|
39 |
-
);
|
40 |
-
|
41 |
-
return $response;
|
42 |
-
|
43 |
-
}
|
44 |
-
|
45 |
-
public function lae_check_nonce() {
|
46 |
-
|
47 |
-
// retrieve nonce
|
48 |
-
$nonce = (isset($_POST['nonce'])) ? $_POST['nonce'] : $_GET['nonce'];
|
49 |
-
|
50 |
-
// nonce action for the grid
|
51 |
-
$action = 'lae_admin_nonce';
|
52 |
-
|
53 |
-
// check ajax nounce
|
54 |
-
if (!wp_verify_nonce($nonce, $action)) {
|
55 |
-
// build response
|
56 |
-
$response = $this->ajax_response(false, __('Sorry, an error occurred. Please refresh the page.', 'livemesh-el-addons'));
|
57 |
-
// die and send json error response
|
58 |
-
wp_send_json($response);
|
59 |
-
}
|
60 |
-
|
61 |
-
}
|
62 |
-
|
63 |
-
public function lae_admin_ajax() {
|
64 |
-
|
65 |
-
// check the nonce
|
66 |
-
$this->lae_check_nonce();
|
67 |
-
|
68 |
-
// retrieve data
|
69 |
-
$this->ajax_data = (isset($_POST)) ? $_POST : $_GET;
|
70 |
-
|
71 |
-
// retrieve function
|
72 |
-
$func = $this->ajax_data['func'];
|
73 |
-
|
74 |
-
switch ($func) {
|
75 |
-
case 'lae_save_settings':
|
76 |
-
$response = $this->save_settings_callback();
|
77 |
-
break;
|
78 |
-
case 'lae_reset_settings':
|
79 |
-
$response = $this->save_settings_callback();
|
80 |
-
break;
|
81 |
-
default:
|
82 |
-
$response = ajax_response(false, __('Sorry, an unknown error occurred...', 'livemesh-el-addons'), null);
|
83 |
-
break;
|
84 |
-
}
|
85 |
-
|
86 |
-
// send json response and die
|
87 |
-
wp_send_json($response);
|
88 |
-
|
89 |
-
}
|
90 |
-
|
91 |
-
public function save_settings_callback() {
|
92 |
-
|
93 |
-
// retrieve data from jquery
|
94 |
-
$setting_data = $this->ajax_data['setting_data'];
|
95 |
-
|
96 |
-
lae_update_options($setting_data);
|
97 |
-
|
98 |
-
$template = false;
|
99 |
-
// get new restore global settings panel
|
100 |
-
if ($this->ajax_data['reset']) {
|
101 |
-
ob_start();
|
102 |
-
require_once('views/settings.php');
|
103 |
-
$template = ob_get_clean();
|
104 |
-
}
|
105 |
-
|
106 |
-
$response = $this->ajax_response(true, $this->ajax_data['reset'], $template);
|
107 |
-
return $response;
|
108 |
-
|
109 |
-
}
|
110 |
-
|
111 |
-
|
112 |
-
public function localize_strings() {
|
113 |
-
|
114 |
-
$this->ajax_msg = array(
|
115 |
-
'box_icons' => array(
|
116 |
-
'before' => '<i class="lae-info-box-icon dashicons dashicons-admin-generic"></i>',
|
117 |
-
'success' => '<i class="lae-info-box-icon dashicons dashicons-yes"></i>',
|
118 |
-
'error' => '<i class="lae-info-box-icon dashicons dashicons-no-alt"></i>'
|
119 |
-
),
|
120 |
-
'box_messages' => array(
|
121 |
-
|
122 |
-
'lae_save_settings' => array(
|
123 |
-
'before' => __('Saving plugin settings', 'livemesh-el-addons'),
|
124 |
-
'success' => __('Plugin settings Saved', 'livemesh-el-addons'),
|
125 |
-
'error' => __('Sorry, an error occurs while saving settings...', 'livemesh-el-addons')
|
126 |
-
),
|
127 |
-
'lae_reset_settings' => array(
|
128 |
-
'before' => __('Resetting plugin settings', 'livemesh-el-addons'),
|
129 |
-
'success' => __('Plugin settings resetted', 'livemesh-el-addons'),
|
130 |
-
'error' => __('Sorry, an error occurred while resetting settings', 'livemesh-el-addons')
|
131 |
-
),
|
132 |
-
)
|
133 |
-
);
|
134 |
-
|
135 |
-
}
|
136 |
-
|
137 |
-
public function admin_nonce() {
|
138 |
-
|
139 |
-
return array(
|
140 |
-
'url' => admin_url('admin-ajax.php'),
|
141 |
-
'nonce' => wp_create_nonce('lae_admin_nonce')
|
142 |
-
);
|
143 |
-
|
144 |
-
}
|
145 |
-
|
146 |
-
public function enqueue_admin_scripts() {
|
147 |
-
|
148 |
-
$screen = get_current_screen();
|
149 |
-
|
150 |
-
// enqueue only in grid panel
|
151 |
-
if (strpos($screen->id, $this->plugin_slug) !== false) {
|
152 |
-
// merge nonce to translatable strings
|
153 |
-
$strings = array_merge($this->admin_nonce(), $this->ajax_msg);
|
154 |
-
|
155 |
-
// Use minified libraries if LAE_SCRIPT_DEBUG is turned off
|
156 |
-
$suffix = (defined('LAE_SCRIPT_DEBUG') && LAE_SCRIPT_DEBUG) ? '' : '.min';
|
157 |
-
|
158 |
-
// register and localize script for ajax methods
|
159 |
-
wp_register_script('lae-admin-ajax-scripts', LAE_PLUGIN_URL . 'admin/assets/js/lae-admin-ajax' . $suffix . '.js', array(), LAE_VERSION, true);
|
160 |
-
wp_enqueue_script('lae-admin-ajax-scripts');
|
161 |
-
|
162 |
-
wp_localize_script('lae-admin-ajax-scripts', 'lae_admin_global_var', $strings);
|
163 |
-
|
164 |
-
}
|
165 |
-
}
|
166 |
-
|
167 |
-
}
|
168 |
-
|
169 |
new LAE_Admin_Ajax;
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if (!defined('ABSPATH')) {
|
5 |
+
exit;
|
6 |
+
}
|
7 |
+
|
8 |
+
class LAE_Admin_Ajax {
|
9 |
+
|
10 |
+
// Instance of this class.
|
11 |
+
protected $plugin_slug = 'livemesh_el_addons';
|
12 |
+
protected $ajax_data;
|
13 |
+
protected $ajax_msg;
|
14 |
+
|
15 |
+
|
16 |
+
public function __construct() {
|
17 |
+
|
18 |
+
// retrieve all ajax string to localize
|
19 |
+
$this->localize_strings();
|
20 |
+
$this->init_hooks();
|
21 |
+
|
22 |
+
}
|
23 |
+
|
24 |
+
public function init_hooks() {
|
25 |
+
|
26 |
+
// Register backend ajax action
|
27 |
+
add_action('wp_ajax_lae_admin_ajax', array($this, 'lae_admin_ajax'));
|
28 |
+
// Load admin ajax js script
|
29 |
+
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
|
30 |
+
|
31 |
+
}
|
32 |
+
|
33 |
+
public function ajax_response($success = true, $message = null, $content = null) {
|
34 |
+
|
35 |
+
$response = array(
|
36 |
+
'success' => $success,
|
37 |
+
'message' => $message,
|
38 |
+
'content' => $content
|
39 |
+
);
|
40 |
+
|
41 |
+
return $response;
|
42 |
+
|
43 |
+
}
|
44 |
+
|
45 |
+
public function lae_check_nonce() {
|
46 |
+
|
47 |
+
// retrieve nonce
|
48 |
+
$nonce = (isset($_POST['nonce'])) ? $_POST['nonce'] : $_GET['nonce'];
|
49 |
+
|
50 |
+
// nonce action for the grid
|
51 |
+
$action = 'lae_admin_nonce';
|
52 |
+
|
53 |
+
// check ajax nounce
|
54 |
+
if (!wp_verify_nonce($nonce, $action)) {
|
55 |
+
// build response
|
56 |
+
$response = $this->ajax_response(false, __('Sorry, an error occurred. Please refresh the page.', 'livemesh-el-addons'));
|
57 |
+
// die and send json error response
|
58 |
+
wp_send_json($response);
|
59 |
+
}
|
60 |
+
|
61 |
+
}
|
62 |
+
|
63 |
+
public function lae_admin_ajax() {
|
64 |
+
|
65 |
+
// check the nonce
|
66 |
+
$this->lae_check_nonce();
|
67 |
+
|
68 |
+
// retrieve data
|
69 |
+
$this->ajax_data = (isset($_POST)) ? $_POST : $_GET;
|
70 |
+
|
71 |
+
// retrieve function
|
72 |
+
$func = $this->ajax_data['func'];
|
73 |
+
|
74 |
+
switch ($func) {
|
75 |
+
case 'lae_save_settings':
|
76 |
+
$response = $this->save_settings_callback();
|
77 |
+
break;
|
78 |
+
case 'lae_reset_settings':
|
79 |
+
$response = $this->save_settings_callback();
|
80 |
+
break;
|
81 |
+
default:
|
82 |
+
$response = ajax_response(false, __('Sorry, an unknown error occurred...', 'livemesh-el-addons'), null);
|
83 |
+
break;
|
84 |
+
}
|
85 |
+
|
86 |
+
// send json response and die
|
87 |
+
wp_send_json($response);
|
88 |
+
|
89 |
+
}
|
90 |
+
|
91 |
+
public function save_settings_callback() {
|
92 |
+
|
93 |
+
// retrieve data from jquery
|
94 |
+
$setting_data = $this->ajax_data['setting_data'];
|
95 |
+
|
96 |
+
lae_update_options($setting_data);
|
97 |
+
|
98 |
+
$template = false;
|
99 |
+
// get new restore global settings panel
|
100 |
+
if ($this->ajax_data['reset']) {
|
101 |
+
ob_start();
|
102 |
+
require_once('views/settings.php');
|
103 |
+
$template = ob_get_clean();
|
104 |
+
}
|
105 |
+
|
106 |
+
$response = $this->ajax_response(true, $this->ajax_data['reset'], $template);
|
107 |
+
return $response;
|
108 |
+
|
109 |
+
}
|
110 |
+
|
111 |
+
|
112 |
+
public function localize_strings() {
|
113 |
+
|
114 |
+
$this->ajax_msg = array(
|
115 |
+
'box_icons' => array(
|
116 |
+
'before' => '<i class="lae-info-box-icon dashicons dashicons-admin-generic"></i>',
|
117 |
+
'success' => '<i class="lae-info-box-icon dashicons dashicons-yes"></i>',
|
118 |
+
'error' => '<i class="lae-info-box-icon dashicons dashicons-no-alt"></i>'
|
119 |
+
),
|
120 |
+
'box_messages' => array(
|
121 |
+
|
122 |
+
'lae_save_settings' => array(
|
123 |
+
'before' => __('Saving plugin settings', 'livemesh-el-addons'),
|
124 |
+
'success' => __('Plugin settings Saved', 'livemesh-el-addons'),
|
125 |
+
'error' => __('Sorry, an error occurs while saving settings...', 'livemesh-el-addons')
|
126 |
+
),
|
127 |
+
'lae_reset_settings' => array(
|
128 |
+
'before' => __('Resetting plugin settings', 'livemesh-el-addons'),
|
129 |
+
'success' => __('Plugin settings resetted', 'livemesh-el-addons'),
|
130 |
+
'error' => __('Sorry, an error occurred while resetting settings', 'livemesh-el-addons')
|
131 |
+
),
|
132 |
+
)
|
133 |
+
);
|
134 |
+
|
135 |
+
}
|
136 |
+
|
137 |
+
public function admin_nonce() {
|
138 |
+
|
139 |
+
return array(
|
140 |
+
'url' => admin_url('admin-ajax.php'),
|
141 |
+
'nonce' => wp_create_nonce('lae_admin_nonce')
|
142 |
+
);
|
143 |
+
|
144 |
+
}
|
145 |
+
|
146 |
+
public function enqueue_admin_scripts() {
|
147 |
+
|
148 |
+
$screen = get_current_screen();
|
149 |
+
|
150 |
+
// enqueue only in grid panel
|
151 |
+
if (strpos($screen->id, $this->plugin_slug) !== false) {
|
152 |
+
// merge nonce to translatable strings
|
153 |
+
$strings = array_merge($this->admin_nonce(), $this->ajax_msg);
|
154 |
+
|
155 |
+
// Use minified libraries if LAE_SCRIPT_DEBUG is turned off
|
156 |
+
$suffix = (defined('LAE_SCRIPT_DEBUG') && LAE_SCRIPT_DEBUG) ? '' : '.min';
|
157 |
+
|
158 |
+
// register and localize script for ajax methods
|
159 |
+
wp_register_script('lae-admin-ajax-scripts', LAE_PLUGIN_URL . 'admin/assets/js/lae-admin-ajax' . $suffix . '.js', array(), LAE_VERSION, true);
|
160 |
+
wp_enqueue_script('lae-admin-ajax-scripts');
|
161 |
+
|
162 |
+
wp_localize_script('lae-admin-ajax-scripts', 'lae_admin_global_var', $strings);
|
163 |
+
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
}
|
168 |
+
|
169 |
new LAE_Admin_Ajax;
|
admin/views/documentation.php
CHANGED
@@ -124,7 +124,7 @@ else {
|
|
124 |
The portfolio examples of Posts Grid element is built using custom post type registered by
|
125 |
this plugin.
|
126 |
</li>
|
127 |
-
<li>Optionally, if you have <a href="https://
|
128 |
that replicates the demo site for you by importing the
|
129 |
file sample-data.xml file located in the plugin directory. The import option is available under
|
130 |
<strong> <a href="<?php echo admin_url() . 'import.php'; ?>"
|
@@ -140,7 +140,7 @@ else {
|
|
140 |
<p>Below is a list of required/recommended plugins to install that will help you get the most out of this plugin.
|
141 |
Although some of these plugins are optional, we recommend that you install these popular plugins if
|
142 |
you plan to install the demo data and get most out of this plugin. The demo site and the sample data
|
143 |
-
provided with the <a href="https://
|
144 |
title="Livemesh Addons for Elementor Pro" target="_blank">premium version</a> of
|
145 |
the plugin utilizes all of these plugins including the Portfolio Post type plugin.</p>
|
146 |
<p>These plugins are also listed in the Plugins tab of this help file under Elementor Addons →
|
@@ -167,7 +167,7 @@ else {
|
|
167 |
<hr>
|
168 |
<h3 id="demo-data">Installing Demo Data<a class="back-to-top" href="#panel"><span
|
169 |
class="dashicons dashicons-arrow-up-alt2"></span> Back to top</a></h3>
|
170 |
-
<p>If you have <a href="https://
|
171 |
plugin demo site to get a head start on building your site. Installing demo data reduces the
|
172 |
learning curve associated with trying out the powerful elements part of this plugin.</p>
|
173 |
<p>The sample data imports the pages, posts and portfolio items part of the demo site. Once you are done with playing around the
|
@@ -299,7 +299,7 @@ else {
|
|
299 |
allow you to input a subtitle which is usually displayed on top of the main heading title.</p>
|
300 |
<p>You can choose to align the heading left, right or center with center being the default
|
301 |
alignment.</p>
|
302 |
-
<p>The <a href="https://
|
303 |
choose one of 500+ custom fonts hosted in the Google Fonts library. By default, the heading font
|
304 |
used by the theme is used for main heading title.</p>
|
305 |
|
@@ -313,7 +313,7 @@ else {
|
|
313 |
<p>Many agencies, freelancers, corporates, products/apps require capturing the services provided by the
|
314 |
agency or the features of a product. The services element is designed to help users capture these
|
315 |
services or features in a multi-column grid.</p>
|
316 |
-
<p>The element supports about 3 different styles (with 2 additional styles in <a href="https://
|
317 |
plugin) and each of these styles can be customized further by choosing the type of icon desired to
|
318 |
represent the service – a font icon or an custom image icon. While the choice of font icons is huge
|
319 |
in number and perhaps sufficient for most common services, the icon images can help present the
|
@@ -321,7 +321,7 @@ else {
|
|
321 |
<p>Each of the service requires you to input a title for the service/feature and a short description of
|
322 |
the service offered or the product feature. Additionally, each service allows you to enter a font
|
323 |
icon or an icon image file to represent that service.</p>
|
324 |
-
<p>The <a href="https://
|
325 |
color for the font icon along with providing two additional styles of services/features.</p>
|
326 |
<p><img class="alignnone size-large" src="https://www.livemeshthemes.com/wp-content/uploads/plugin-doc/elementor-addons/services-widget-edit1.png" alt="Services Element Edit Window"></p>
|
327 |
<p><img class="alignnone size-large" src="https://www.livemeshthemes.com/wp-content/uploads/plugin-doc/elementor-addons/services-widget-edit2.png" alt="Services Element Edit Window"></p>
|
@@ -344,7 +344,7 @@ else {
|
|
344 |
<p>This element provides an easy way to capture the team members of your organization or an agency. The
|
345 |
details captured include team member name, position, a short description and the email plus social
|
346 |
profile of the individual team members.</p>
|
347 |
-
<p>Two different styles are provided with more styles planned in the <a href="https://
|
348 |
of the styles display the team members in a multi-column grid. The option to specify the number of
|
349 |
columns is provided that helps to control the number of team members displayed per row of the team
|
350 |
members.</p>
|
@@ -551,7 +551,7 @@ else {
|
|
551 |
you select Portfolio Post type under Post Type entry in Build Tools window as explained below.</p>
|
552 |
|
553 |
<p><img class="alignnone size-large" src="https://www.livemeshthemes.com/wp-content/uploads/plugin-doc/elementor-addons/livemesh-grid-pagination.jpg" alt="Posts Grid Pagination"></p>
|
554 |
-
<p>The <a href="https://
|
555 |
lightbox option for images. The additional posts are loaded via AJAX when the user navigates through
|
556 |
the pages populated or when the user hits the Load More button.</p>
|
557 |
|
@@ -721,7 +721,7 @@ else {
|
|
721 |
image.</p>
|
722 |
<p>The element options are mostly self-explanatory and you can view a live preview of the buttons <a
|
723 |
title="Livemesh Elementor Button Element Demo"
|
724 |
-
href="https://
|
725 |
|
726 |
|
727 |
<hr>
|
@@ -890,7 +890,7 @@ else {
|
|
890 |
video tutorial sites, video marketers, small businesses or websites with a major presence on
|
891 |
YouTube/Vimeo. The videos can be played with a single click of the play button on the gallery item
|
892 |
as seen in this <a title="Video Gallery"
|
893 |
-
href="https://
|
894 |
</p>
|
895 |
<p><img class="alignnone size-large" src="https://www.livemeshthemes.com/wp-content/uploads/plugin-doc/elementor-addons/image-gallery-edit1.png" alt="Image Gallery Element Edit Window"></p>
|
896 |
<p>The configuration for creating a video gallery is similar to that of image gallery; a video URL would be required along with image that acts as a placeholder.</p>
|
@@ -960,7 +960,7 @@ else {
|
|
960 |
video tutorial sites, video marketers, small businesses or websites with a major presence on
|
961 |
YouTube/Vimeo. The videos can be played with a single click of the play button on the gallery item
|
962 |
as seen in this <a title="Video Gallery"
|
963 |
-
href="https://
|
964 |
</p>
|
965 |
<p><img class="alignnone size-large" src="https://www.livemeshthemes.com/wp-content/uploads/plugin-doc/elementor-addons/image-carousel-edit.png" alt="Image Carousel Element Edit Window"></p>
|
966 |
<p>The option for creation of video carousel is similar to that of image carousel - requires input of URL for the Vimeo/YouTube video along with placeholder image. </p>
|
@@ -1064,7 +1064,7 @@ else {
|
|
1064 |
|
1065 |
<hr>
|
1066 |
<h3 id="plugin-support">Plugin Support</span><a class="back-to-top" href="#panel"> Back to top</a></h3>
|
1067 |
-
<p>If you have queries or issues to report related to the plugin, please submit the same through our <a href="https://
|
1068 |
|
1069 |
</div>
|
1070 |
|
@@ -1164,8 +1164,18 @@ else {
|
|
1164 |
<div id="updates-panel" class="panel-left">
|
1165 |
|
1166 |
<h2>Change Log for the Premium Version</h2>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1167 |
<h3>2.6</h3>
|
1168 |
<ul>
|
|
|
1169 |
<li>Added - Twitter grid addon for showcasing tweets on your website.</li>
|
1170 |
<li>Added - 3 styles for display of tweets in a Twitter grid.</li>
|
1171 |
<li>Added - Extensive customization options for Twitter grid addon.</li>
|
@@ -1440,7 +1450,7 @@ else {
|
|
1440 |
<p><?php _e('Premium version offers multiple benefits - more addon elements, advanced features for addons including those part of the free plugin and priority support through a dedicated support portal.', 'livemesh-el-addons'); ?></p>
|
1441 |
|
1442 |
<a class="button button-primary"
|
1443 |
-
href="https://
|
1444 |
title="<?php esc_attr_e('Know More', 'livemesh-el-addons'); ?>"><?php _e('Know More Details', 'livemesh-el-addons'); ?></a>
|
1445 |
</div><!-- .panel-aside knowledge base -->
|
1446 |
|
@@ -1453,10 +1463,10 @@ else {
|
|
1453 |
|
1454 |
<p>The premium version of the plugin entitles you to quick support with replies posted within 24 hours (on week days). </p>
|
1455 |
|
1456 |
-
<p>Please submit your support query through our <a href="https://
|
1457 |
|
1458 |
<a class="button button-primary"
|
1459 |
-
href="https://
|
1460 |
title="<?php esc_attr_e('Contact Us', 'livemesh-el-addons'); ?>"><?php _e('Contact Us', 'livemesh-el-addons'); ?></a>
|
1461 |
</div><!-- .panel-aside knowledge base -->
|
1462 |
|
@@ -1469,7 +1479,7 @@ else {
|
|
1469 |
we will get back to you promptly.</p>
|
1470 |
|
1471 |
<a class="button button-primary"
|
1472 |
-
href="https://
|
1473 |
title="<?php esc_attr_e('Write to Us', 'livemesh-el-addons'); ?>"><?php _e('Write to Us', 'livemesh-el-addons'); ?></a>
|
1474 |
</div><!-- .panel-aside knowledge base -->
|
1475 |
|
124 |
The portfolio examples of Posts Grid element is built using custom post type registered by
|
125 |
this plugin.
|
126 |
</li>
|
127 |
+
<li>Optionally, if you have <a href="https://livemeshelementor.com/pricing/" title="Livemesh Addons for Elementor Pro" target="_blank">premium version</a> of the plugin installed, you can import the sample data
|
128 |
that replicates the demo site for you by importing the
|
129 |
file sample-data.xml file located in the plugin directory. The import option is available under
|
130 |
<strong> <a href="<?php echo admin_url() . 'import.php'; ?>"
|
140 |
<p>Below is a list of required/recommended plugins to install that will help you get the most out of this plugin.
|
141 |
Although some of these plugins are optional, we recommend that you install these popular plugins if
|
142 |
you plan to install the demo data and get most out of this plugin. The demo site and the sample data
|
143 |
+
provided with the <a href="https://livemeshelementor.com/pricing/"
|
144 |
title="Livemesh Addons for Elementor Pro" target="_blank">premium version</a> of
|
145 |
the plugin utilizes all of these plugins including the Portfolio Post type plugin.</p>
|
146 |
<p>These plugins are also listed in the Plugins tab of this help file under Elementor Addons →
|
167 |
<hr>
|
168 |
<h3 id="demo-data">Installing Demo Data<a class="back-to-top" href="#panel"><span
|
169 |
class="dashicons dashicons-arrow-up-alt2"></span> Back to top</a></h3>
|
170 |
+
<p>If you have <a href="https://livemeshelementor.com/pricing/" title="Livemesh Addons for Elementor Pro" target="_blank">premium version</a> of the plugin installed, you can install the demo data to replicate the
|
171 |
plugin demo site to get a head start on building your site. Installing demo data reduces the
|
172 |
learning curve associated with trying out the powerful elements part of this plugin.</p>
|
173 |
<p>The sample data imports the pages, posts and portfolio items part of the demo site. Once you are done with playing around the
|
299 |
allow you to input a subtitle which is usually displayed on top of the main heading title.</p>
|
300 |
<p>You can choose to align the heading left, right or center with center being the default
|
301 |
alignment.</p>
|
302 |
+
<p>The <a href="https://livemeshelementor.com/pricing/" title="Livemesh Addons for Elementor Pro" target="_blank">premium version</a> of the plugin allows selection of a custom font for the heading title. You may
|
303 |
choose one of 500+ custom fonts hosted in the Google Fonts library. By default, the heading font
|
304 |
used by the theme is used for main heading title.</p>
|
305 |
|
313 |
<p>Many agencies, freelancers, corporates, products/apps require capturing the services provided by the
|
314 |
agency or the features of a product. The services element is designed to help users capture these
|
315 |
services or features in a multi-column grid.</p>
|
316 |
+
<p>The element supports about 3 different styles (with 2 additional styles in <a href="https://livemeshelementor.com/pricing/" title="Livemesh Addons for Elementor Pro" target="_blank">premium version</a> of the
|
317 |
plugin) and each of these styles can be customized further by choosing the type of icon desired to
|
318 |
represent the service – a font icon or an custom image icon. While the choice of font icons is huge
|
319 |
in number and perhaps sufficient for most common services, the icon images can help present the
|
321 |
<p>Each of the service requires you to input a title for the service/feature and a short description of
|
322 |
the service offered or the product feature. Additionally, each service allows you to enter a font
|
323 |
icon or an icon image file to represent that service.</p>
|
324 |
+
<p>The <a href="https://livemeshelementor.com/pricing/" title="Livemesh Addons for Elementor Pro" target="_blank">premium version</a> of the plugin allows you specify a custom font size, font color and and hover
|
325 |
color for the font icon along with providing two additional styles of services/features.</p>
|
326 |
<p><img class="alignnone size-large" src="https://www.livemeshthemes.com/wp-content/uploads/plugin-doc/elementor-addons/services-widget-edit1.png" alt="Services Element Edit Window"></p>
|
327 |
<p><img class="alignnone size-large" src="https://www.livemeshthemes.com/wp-content/uploads/plugin-doc/elementor-addons/services-widget-edit2.png" alt="Services Element Edit Window"></p>
|
344 |
<p>This element provides an easy way to capture the team members of your organization or an agency. The
|
345 |
details captured include team member name, position, a short description and the email plus social
|
346 |
profile of the individual team members.</p>
|
347 |
+
<p>Two different styles are provided with more styles planned in the <a href="https://livemeshelementor.com/pricing/" title="Livemesh Addons for Elementor Pro" target="_blank">premium version</a> of the plugin. Most
|
348 |
of the styles display the team members in a multi-column grid. The option to specify the number of
|
349 |
columns is provided that helps to control the number of team members displayed per row of the team
|
350 |
members.</p>
|
551 |
you select Portfolio Post type under Post Type entry in Build Tools window as explained below.</p>
|
552 |
|
553 |
<p><img class="alignnone size-large" src="https://www.livemeshthemes.com/wp-content/uploads/plugin-doc/elementor-addons/livemesh-grid-pagination.jpg" alt="Posts Grid Pagination"></p>
|
554 |
+
<p>The <a href="https://livemeshelementor.com/pricing/" title="Livemesh Addons for Elementor Pro" target="_blank">premium version</a> of the plugin has support for pagination, lazy load with load more button and
|
555 |
lightbox option for images. The additional posts are loaded via AJAX when the user navigates through
|
556 |
the pages populated or when the user hits the Load More button.</p>
|
557 |
|
721 |
image.</p>
|
722 |
<p>The element options are mostly self-explanatory and you can view a live preview of the buttons <a
|
723 |
title="Livemesh Elementor Button Element Demo"
|
724 |
+
href="https://livemeshelementor.com/buttons/">here</a>.</p>
|
725 |
|
726 |
|
727 |
<hr>
|
890 |
video tutorial sites, video marketers, small businesses or websites with a major presence on
|
891 |
YouTube/Vimeo. The videos can be played with a single click of the play button on the gallery item
|
892 |
as seen in this <a title="Video Gallery"
|
893 |
+
href="https://livemeshelementor.com/video-gallery/">demo page</a>.
|
894 |
</p>
|
895 |
<p><img class="alignnone size-large" src="https://www.livemeshthemes.com/wp-content/uploads/plugin-doc/elementor-addons/image-gallery-edit1.png" alt="Image Gallery Element Edit Window"></p>
|
896 |
<p>The configuration for creating a video gallery is similar to that of image gallery; a video URL would be required along with image that acts as a placeholder.</p>
|
960 |
video tutorial sites, video marketers, small businesses or websites with a major presence on
|
961 |
YouTube/Vimeo. The videos can be played with a single click of the play button on the gallery item
|
962 |
as seen in this <a title="Video Gallery"
|
963 |
+
href="https://livemeshelementor.com/video-gallery/">demo page</a>.
|
964 |
</p>
|
965 |
<p><img class="alignnone size-large" src="https://www.livemeshthemes.com/wp-content/uploads/plugin-doc/elementor-addons/image-carousel-edit.png" alt="Image Carousel Element Edit Window"></p>
|
966 |
<p>The option for creation of video carousel is similar to that of image carousel - requires input of URL for the Vimeo/YouTube video along with placeholder image. </p>
|
1064 |
|
1065 |
<hr>
|
1066 |
<h3 id="plugin-support">Plugin Support</span><a class="back-to-top" href="#panel"> Back to top</a></h3>
|
1067 |
+
<p>If you have queries or issues to report related to the plugin, please submit the same through our <a href="https://livemeshelementor.com/contact-us/" title="Livemesh Contact form">website contact form</a>. This will create a support ticket in our support portal.</p>
|
1068 |
|
1069 |
</div>
|
1070 |
|
1164 |
<div id="updates-panel" class="panel-left">
|
1165 |
|
1166 |
<h2>Change Log for the Premium Version</h2>
|
1167 |
+
<h3>2.6.2</h3>
|
1168 |
+
<ul>
|
1169 |
+
<li>Updated - Readme.txt and documentation.</li>
|
1170 |
+
</ul>
|
1171 |
+
<h3>2.6.1</h3>
|
1172 |
+
<ul>
|
1173 |
+
<li>Fixed - Fancybox lightbox combines images from multiple grids/galleries when displaying images/videos in the lightbox.</li>
|
1174 |
+
<li>Fixed - The direct link to lightbox image does not work.</li>
|
1175 |
+
</ul>
|
1176 |
<h3>2.6</h3>
|
1177 |
<ul>
|
1178 |
+
<li>Updated - Freemius library with a security fix. Recommended to update immediately.</li>
|
1179 |
<li>Added - Twitter grid addon for showcasing tweets on your website.</li>
|
1180 |
<li>Added - 3 styles for display of tweets in a Twitter grid.</li>
|
1181 |
<li>Added - Extensive customization options for Twitter grid addon.</li>
|
1450 |
<p><?php _e('Premium version offers multiple benefits - more addon elements, advanced features for addons including those part of the free plugin and priority support through a dedicated support portal.', 'livemesh-el-addons'); ?></p>
|
1451 |
|
1452 |
<a class="button button-primary"
|
1453 |
+
href="https://livemeshelementor.com/addons-demo/#why-upgrade"
|
1454 |
title="<?php esc_attr_e('Know More', 'livemesh-el-addons'); ?>"><?php _e('Know More Details', 'livemesh-el-addons'); ?></a>
|
1455 |
</div><!-- .panel-aside knowledge base -->
|
1456 |
|
1463 |
|
1464 |
<p>The premium version of the plugin entitles you to quick support with replies posted within 24 hours (on week days). </p>
|
1465 |
|
1466 |
+
<p>Please submit your support query through our <a href="https://livemeshelementor.com/contact-us/" title="Livemesh Contact form">website contact form</a>. This will create a support ticket in our support portal.</p>
|
1467 |
|
1468 |
<a class="button button-primary"
|
1469 |
+
href="https://livemeshelementor.com/contact-us/"
|
1470 |
title="<?php esc_attr_e('Contact Us', 'livemesh-el-addons'); ?>"><?php _e('Contact Us', 'livemesh-el-addons'); ?></a>
|
1471 |
</div><!-- .panel-aside knowledge base -->
|
1472 |
|
1479 |
we will get back to you promptly.</p>
|
1480 |
|
1481 |
<a class="button button-primary"
|
1482 |
+
href="https://livemeshelementor.com/contact-us/"
|
1483 |
title="<?php esc_attr_e('Write to Us', 'livemesh-el-addons'); ?>"><?php _e('Write to Us', 'livemesh-el-addons'); ?></a>
|
1484 |
</div><!-- .panel-aside knowledge base -->
|
1485 |
|
admin/views/settings.php
CHANGED
@@ -595,47 +595,47 @@ if ( lae_fs()->is_not_paying() ) {
|
|
595 |
|
596 |
|
597 |
<ul>
|
598 |
-
<li><a href="https://
|
599 |
Blocks!</a> - Present your blog posts, events, news items or portfolio in a dozen creative ways. Comes with AJAX filtering,
|
600 |
pagination and load more features to help visitors navigate your entire collection of blog posts or custom post types and
|
601 |
their categories without reloading the page.
|
602 |
</li>
|
603 |
-
<li><a href="https://
|
604 |
Tabs</a> - Exquisitely designed tabs that function seamlessly across all devices and resolutions. The
|
605 |
plugin features never before choice of over dozen styles of tabs to choose from.
|
606 |
</li>
|
607 |
-
<li><a href="https://
|
608 |
that capture collapsible content panels when space is limited.
|
609 |
</li>
|
610 |
-
<li><a href="https://
|
611 |
Slider</a> - Create a responsive slider of images with support
|
612 |
for captions,
|
613 |
multiple slider types like Nivo, Flex, Slick and lightweight sliders, thumbnail
|
614 |
navigation etc.
|
615 |
</li>
|
616 |
-
<li><a href="https://
|
617 |
Gallery</a> - Create a gallery of images with options for masonry
|
618 |
or fit rows, pagination, lazy load, lightbox support etc.
|
619 |
</li>
|
620 |
-
<li><a href="https://
|
621 |
Gallery</a> - Create a beautiful gallery of videos to help
|
622 |
showcase a collection of YouTube/Vimeo videos on your site.
|
623 |
</li>
|
624 |
-
<li><a href="https://
|
625 |
Carousel</a> - Build a responsive carousel of images.</li>
|
626 |
-
<li><a href="https://
|
627 |
Carousel</a> - Build a responsive carousel of YouTube/Vimeo
|
628 |
videos.
|
629 |
</li>
|
630 |
-
<li><a href="https://
|
631 |
</li>
|
632 |
-
<li><a href="https://
|
633 |
for showcasing services or features as well with icons or images.
|
634 |
</li>
|
635 |
-
<li><a href="https://
|
636 |
page.
|
637 |
</li>
|
638 |
-
<li><a href="https://
|
639 |
</li>
|
640 |
</ul>
|
641 |
|
@@ -665,10 +665,10 @@ if ( lae_fs()->is_not_paying() ) {
|
|
665 |
updated with additional features for existing elements -</p>
|
666 |
|
667 |
<ul>
|
668 |
-
<li><a href="https://
|
669 |
incorporate option to lazy load posts/images with the click of a Load More button.
|
670 |
</li>
|
671 |
-
<li><a href="https://
|
672 |
based pagination support.
|
673 |
</li>
|
674 |
<li><strong>Lightbox Support</strong> - The premium version comes with support for
|
@@ -727,7 +727,7 @@ if ( lae_fs()->is_not_paying() ) {
|
|
727 |
} else {
|
728 |
?>
|
729 |
|
730 |
-
<a class="lae-button know-more" href="https://
|
731 |
echo __( 'Know More', 'livemesh-el-addons' ) ;
|
732 |
?></a>
|
733 |
|
595 |
|
596 |
|
597 |
<ul>
|
598 |
+
<li><a href="https://livemeshelementor.com/posts-block/" title="Post Blocks Addon" target="_blank">Post
|
599 |
Blocks!</a> - Present your blog posts, events, news items or portfolio in a dozen creative ways. Comes with AJAX filtering,
|
600 |
pagination and load more features to help visitors navigate your entire collection of blog posts or custom post types and
|
601 |
their categories without reloading the page.
|
602 |
</li>
|
603 |
+
<li><a href="https://livemeshelementor.com/tabs/" title="Tabs Addon" target="_blank">Responsive
|
604 |
Tabs</a> - Exquisitely designed tabs that function seamlessly across all devices and resolutions. The
|
605 |
plugin features never before choice of over dozen styles of tabs to choose from.
|
606 |
</li>
|
607 |
+
<li><a href="https://livemeshelementor.com/accordion/" title="Accordion/Toggle Addon" target="_blank">Accordion/Toggle</a> - Controls
|
608 |
that capture collapsible content panels when space is limited.
|
609 |
</li>
|
610 |
+
<li><a href="https://livemeshelementor.com/sliders/" title="Image Slider Widget" target="_blank">Image
|
611 |
Slider</a> - Create a responsive slider of images with support
|
612 |
for captions,
|
613 |
multiple slider types like Nivo, Flex, Slick and lightweight sliders, thumbnail
|
614 |
navigation etc.
|
615 |
</li>
|
616 |
+
<li><a href="https://livemeshelementor.com/image-gallery/" title="Image Gallery Widget" target="_blank">Image
|
617 |
Gallery</a> - Create a gallery of images with options for masonry
|
618 |
or fit rows, pagination, lazy load, lightbox support etc.
|
619 |
</li>
|
620 |
+
<li><a href="https://livemeshelementor.com/video-gallery/" title="Video Gallery Widget" target="_blank">Video
|
621 |
Gallery</a> - Create a beautiful gallery of videos to help
|
622 |
showcase a collection of YouTube/Vimeo videos on your site.
|
623 |
</li>
|
624 |
+
<li><a href="https://livemeshelementor.com/gallery-carousel/" title="Image Carousel" target="_blank">Image
|
625 |
Carousel</a> - Build a responsive carousel of images.</li>
|
626 |
+
<li><a href="https://livemeshelementor.com/gallery-carousel/" title="Video Carousel" target="_blank">Video
|
627 |
Carousel</a> - Build a responsive carousel of YouTube/Vimeo
|
628 |
videos.
|
629 |
</li>
|
630 |
+
<li><a href="https://livemeshelementor.com/buttons/" title="Buttons Addon" target="_blank">Buttons</a> - Animated buttons with great choice of colors.
|
631 |
</li>
|
632 |
+
<li><a href="https://livemeshelementor.com/icon-lists/" title="Icon List" target="_blank">Icon List</a> - - Create a list of icons with description and link - for social media profiles,
|
633 |
for showcasing services or features as well with icons or images.
|
634 |
</li>
|
635 |
+
<li><a href="https://livemeshelementor.com/faq-element/" title="FAQ Addon" target="_blank">FAQ</a> - Create a set of Frequently Asked Questions for display in a
|
636 |
page.
|
637 |
</li>
|
638 |
+
<li><a href="https://livemeshelementor.com/features/" title="Features Addon" target="_blank">Features Addon</a> for showcasing product features or services provided by an agency/business.
|
639 |
</li>
|
640 |
</ul>
|
641 |
|
665 |
updated with additional features for existing elements -</p>
|
666 |
|
667 |
<ul>
|
668 |
+
<li><a href="https://livemeshelementor.com/portfolio-grid-pro/" title="Posts Grid" target="_blank">Lazy Load</a> - The portfolio/post grid and image gallery elements
|
669 |
incorporate option to lazy load posts/images with the click of a Load More button.
|
670 |
</li>
|
671 |
+
<li><a href="https://livemeshelementor.com/portfolio-grid-pro/" title="Posts Grid" target="_blank">Pagination</a> - Create a grid of posts or custom post types with AJAX
|
672 |
based pagination support.
|
673 |
</li>
|
674 |
<li><strong>Lightbox Support</strong> - The premium version comes with support for
|
727 |
} else {
|
728 |
?>
|
729 |
|
730 |
+
<a class="lae-button know-more" href="https://livemeshelementor.com/"><i class="dashicons dashicons-external"></i><?php
|
731 |
echo __( 'Know More', 'livemesh-el-addons' ) ;
|
732 |
?></a>
|
733 |
|
assets/css/fonts/icomoon/icomoon.eot
ADDED
Binary file
|
assets/css/fonts/icomoon/icomoon.svg
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" standalone="no"?>
|
2 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3 |
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
+
<metadata>Generated by IcoMoon</metadata>
|
5 |
+
<defs>
|
6 |
+
<font id="icomoon" horiz-adv-x="1024">
|
7 |
+
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
8 |
+
<missing-glyph horiz-adv-x="1024" />
|
9 |
+
<glyph unicode=" " horiz-adv-x="512" d="" />
|
10 |
+
<glyph unicode="" glyph-name="arrow-left" d="M592 672c-12.512 0-23.776-4.896-32.352-12.736l-0.096 0.16-192-176.032c-9.888-9.12-15.552-21.952-15.552-35.424 0-13.44 5.664-26.24 15.552-35.328l192-176 0.096 0.128c8.576-7.904 19.84-12.768 32.352-12.768 26.496 0 48 21.504 48 48 0 14.016-6.080 26.496-15.648 35.264l0.096 0.064-153.408 140.64 153.408 140.64-0.096 0.16c9.568 8.704 15.648 21.216 15.648 35.232 0 26.496-21.504 48-48 48zM512 960c-282.752 0-512-229.28-512-512.032 0-282.72 229.248-511.968 512-511.968s512 229.248 512 511.968c0 282.752-229.248 512.032-512 512.032zM512 32c-229.376 0-416 186.624-416 415.968 0 229.376 186.624 416.032 416 416.032s416-186.656 416-416.064c0-229.312-186.624-415.936-416-415.936z" />
|
11 |
+
<glyph unicode="" glyph-name="arrow-right" d="M464.448 659.392l-0.096-0.16c-8.576 7.84-19.84 12.768-32.352 12.768-26.496 0-48-21.504-48-48 0-14.016 6.080-26.496 15.648-35.264l-0.096-0.16 153.408-140.64-153.312-140.704c-9.568-8.736-15.648-21.248-15.648-35.232 0-26.496 21.504-48 48-48 12.512 0 23.776 4.864 32.352 12.736l0.096-0.128 192 176c9.888 9.088 15.552 21.92 15.552 35.36 0 13.504-5.664 26.304-15.552 35.392l-192 176.032zM512 960c-282.752 0-512-229.28-512-512.032 0-282.72 229.248-511.968 512-511.968s512 229.248 512 511.968c0 282.752-229.248 512.032-512 512.032zM512 32c-229.376 0-416 186.624-416 415.968 0 229.376 186.624 416.032 416 416.032s416-186.656 416-416.064c0-229.312-186.624-415.936-416-415.936z" />
|
12 |
+
<glyph unicode="" glyph-name="icon-aim" d="M865.472 104.341c-55.723 144.341-230.571 247.552-238.677 252.245-14.549 7.787-28.011 18.581-35.307 24.875-0.384 9.579 1.408 13.504 2.069 14.080 0 0 0.939 0.576 3.776 0.576 6.187 0 13.461-2.709 17.259-4.373 18.965-7.083 46.187-8.533 65.707-8.533 5.717 0 9.515 0.128 9.6 0.128 100.907 0.043 163.755 61.675 166.379 64.299 6.528 6.549 8.128 16.491 3.968 24.747l-40.512 80.085c-2.603 5.163-7.211 9.045-12.757 10.752s-11.52 1.088-16.576-1.707c-51.179-28.203-95.893-43.157-129.301-43.157-29.909 0-41.387 11.755-43.627 14.464-7.744 15.424-28.373 55.829-28.373 55.829-0.789 1.536-1.749 3.008-2.88 4.288-12.885 14.912-30.571 22.784-51.115 22.784-26.837 0-50.005-13.419-52.096-14.699-102.997-58.283-103.275-223.744-103.168-229.163-12.011-172.992-198.72-222.613-206.677-224.661-9.451-2.411-16.085-10.923-16.085-20.672 0-4.629 0-13.248 46.677-120.341 3.435-7.872 11.2-12.8 19.541-12.8 1.301 0 2.581 0.085 3.883 0.341 159.189 29.248 268.864 166.208 302.635 213.717 162.411-82.496 207.616-185.003 208.043-185.963 2.539-6.080 7.765-10.667 14.144-12.416 6.4-1.621 13.205-0.384 18.475 3.627l88.043 66.965c7.531 5.76 10.389 15.808 6.955 24.683zM764.459 61.76c-24.768 40.427-89.856 124.245-232.704 192.299-9.771 4.629-21.504 1.259-27.264-7.915-1.088-1.707-106.816-167.659-268.523-206.869-12.011 27.84-23.744 56-30.592 73.621 56.725 20.672 205.547 90.581 217.067 257.621-0.021 1.451 0.107 147.243 81.963 193.621 4.245 2.453 18.048 8.917 30.699 8.917 7.275 0 12.843-2.048 17.323-6.421 4.885-9.621 21.781-42.709 28.416-55.829 2.133-3.584 22.635-35.115 80.256-35.115 36.501 0 80.277 12.843 130.347 38.165l23.061-45.632c-20.011-14.997-64.704-42.219-125.589-42.219-0.192 0-3.499-0.128-8.619-0.128-21.973 0-40.981 2.176-49.195 5.163-1.685 0.789-16.939 7.744-33.771 7.744-18.624 0-29.781-8.213-35.84-15.125-11.029-12.501-14.827-30.549-11.669-55.168 0.597-4.843 2.88-9.301 6.379-12.672 0.96-0.917 23.552-22.464 49.792-36.459 1.621-0.96 156.885-92.587 213.504-215.787l-55.040-41.813zM621.611 622.912c77.099 0 139.861 62.699 139.861 139.84 0 77.077-62.741 139.84-139.861 139.84s-139.819-62.741-139.819-139.84c0-77.12 62.699-139.84 139.819-139.84zM621.611 859.925c53.611 0 97.195-43.584 97.195-97.173s-43.584-97.173-97.195-97.173c-53.589 0-97.152 43.584-97.152 97.173s43.563 97.173 97.152 97.173z" />
|
13 |
+
<glyph unicode="" glyph-name="icon-behance" d="M168.661 484.16h152.811c47.787 0 71.019 28.8 71.019 88 0 62.933-39.851 79.552-60.907 79.552h-162.923c-11.797 0-21.333-9.557-21.333-21.333v-124.885c0-11.776 9.557-21.333 21.333-21.333zM189.995 609.067h141.589c0.192 0 18.24-0.427 18.24-36.885 0-45.333-13.12-45.333-28.352-45.333h-131.477v82.219zM468.459 478.976c23.552 19.499 42.837 51.605 42.837 101.867 0 103.509-70.549 170.368-179.712 170.368h-291.243c-11.776 0-21.333-9.557-21.333-21.333v-559.701c0-11.776 9.557-21.312 21.333-21.312h290.56c0.235 0 2.432-0.043 2.645-0.043 0 0 0 0 0.021 0 13.227 0 59.883 1.813 104.896 24.853 42.091 21.568 92.245 67.115 92.203 160.491 0.192 3.243 3.947 80.149-40.235 126.848-6.656 7.083-13.995 13.077-21.973 17.963zM488.043 335.381c0-58.624-23.211-100.245-69.013-123.712-37.483-19.179-77.781-20.16-85.461-20.16h-0.021l-1.963 0.021h-269.909v517.035h269.909c85.824 0 137.045-47.744 137.045-127.701 0-77.099-59.093-84.672-65.643-85.248-11.456-0.853-20.16-10.603-19.755-22.059 0.448-11.477 9.856-20.544 21.333-20.544 23.36 0 41.259-6.912 54.763-21.141 31.552-33.237 28.779-94.741 28.715-96.491zM331.584 440.555h-162.923c-11.797 0-21.333-9.557-21.333-21.333v-149.611c0-11.776 9.536-21.333 21.333-21.333l155.179 0.021c55.979 1.259 88.085 35.52 88.085 94.037 0 77.696-52.501 98.219-80.341 98.219zM322.944 290.965h-132.949v106.944h141.547c6.293-0.128 37.717-3.328 37.717-55.552 0-44.245-22.293-50.859-46.315-51.392zM789.461 547.2c-83.093 0-114.581-68.459-119.616-104.64-0.853-6.123 0.981-12.288 5.035-16.96 4.032-4.651 9.899-7.339 16.085-7.339h183.851c11.691 0 21.163 9.387 21.333 21.056 0.021 1.92 0.256 47.552-30.891 79.104-18.837 19.115-44.352 28.779-75.797 28.779zM719.765 460.928c9.216 19.499 28.864 43.605 69.696 43.605 19.797 0 34.581-5.184 45.248-15.872 8.192-8.213 12.821-18.624 15.424-27.733h-130.368zM1003.221 362.155c0.661 5.013 15.317 124.075-53.333 202.283-37.739 42.965-92.437 64.747-162.624 64.747-122.091 0-180.117-64.875-207.317-119.317-28.779-57.621-29.056-114.688-28.992-115.733-0.32-4.693-6.443-115.712 64.235-190.997 41.109-43.755 98.923-65.963 170.688-65.963h0.171c0 0 3.243-0.192 8.939-0.192 99.179 0 205.163 44.736 205.163 170.304 0 11.776-9.536 21.333-21.333 21.333h-98.517c-5.717 0-11.179-2.475-15.211-6.549-4.011-4.053-6.208-9.749-6.123-15.467 0.021-0.576 0.107-14.016-10.176-24.448-10.752-10.944-29.547-15.701-56.747-13.781-34.56 2.389-71.211 10.752-77.675 75.157h267.712c10.709 0.043 19.755 8 21.141 18.624zM962.112 386.24h-270.080c-11.776 0-21.333-9.557-21.333-21.333 0-130.837 89.088-137.024 118.379-139.072 41.749-2.944 71.040 6.443 90.944 27.264 10.368 10.859 15.787 22.805 18.603 32.853h57.493c-5.397-40.043-26.795-68.48-64.939-86.592-37.568-17.813-79.765-19.733-96.213-19.733-3.904 0-6.229 0.107-7.701 0.149-60.693 0-108.032 17.6-140.779 52.331-58.048 61.611-53.013 158.4-52.928 160.619 0.043 7.915 2.859 193.749 193.707 193.749 57.28 0 101.141-16.832 130.432-50.069 41.621-47.232 45.312-117.12 44.416-150.165zM666.88 647.424h230.891c11.776 0 21.333 9.536 21.333 21.333v68.907c0 11.797-9.557 21.333-21.333 21.333h-230.891c-11.797 0-21.333-9.536-21.333-21.333v-68.907c0-11.797 9.536-21.333 21.333-21.333zM688.213 716.331h188.224v-26.24h-188.224v26.24z" />
|
14 |
+
<glyph unicode="" glyph-name="icon-dribbble" d="M804.715 756.992l-19.456 18.432-0.661-1.109c-76.672 64.235-172.331 99.669-272.597 99.669-54.464 0-107.456-10.795-158.059-31.125l-0.555 0.576-13.504-5.952c-125.419-55.531-216.96-168.469-244.843-302.187l-3.456-16.597 0.811-0.384c-3.904-23.317-6.4-46.848-6.4-70.315 0-124.736 53.909-241.323 148.309-322.517l-0.192-0.448 12.843-10.219c76.245-60.715 167.915-92.8 265.045-92.8 51.285 0 101.909 9.429 150.955 28.096l13.461 5.227v0.363c139.968 56.747 236.011 181.419 256.704 332.565l1.131-0.405 2.133 27.648c0.832 10.752 1.621 21.525 1.621 32.469 0 117.824-47.339 227.563-133.291 309.013zM889.749 448v-2.155c-42.667 14.549-98.411 21.888-150.464 21.888-45.205 0-89.493-5.632-133.376-16.683-8.491 22.677-16.939 44.821-26.624 66.24l1.408 0.619-0.469 1.003c86.4 43.221 157.675 107.691 210.816 188.395 65.664-70.976 98.709-162.091 98.709-259.307zM762.069 737.451c-49.472-77.675-118.187-139.499-200.491-180.501-46.229 92.032-105.152 176.768-175.616 252.523 40.597 14.272 82.816 21.845 126.037 21.845 92.331 0 180.309-33.451 250.069-93.867zM343.787 792.256c72.299-75.349 132.459-160.32 179.157-252.949-59.328-23.637-121.877-35.627-186.219-35.627-68.011 0-133.867 13.333-196.075 39.616 27.776 108.224 102.272 199.595 203.136 248.96zM128.661 448c0 17.493 1.664 35.029 4.075 52.459 64.896-26.176 133.376-39.467 204.011-39.467s139.2 13.461 204.288 39.701c9.088-20.053 17.643-40.747 25.664-61.973-136.683-46.144-249.003-143.787-313.749-272.789-79.232 72.661-124.288 173.973-124.288 282.069zM286.741 138.133c59.093 123.541 164.949 217.216 294.464 260.629 33.621-101.291 51.456-206.677 52.992-313.707-39.872-13.525-80.917-20.352-122.219-20.352-81.813-0.021-159.36 25.323-225.237 73.429zM675.755 101.675c-3.008 105.216-21.035 208.725-53.931 308.48 89.003 21.781 182.677 18.901 269.888-8.149-15.637-133.803-96.299-245.653-215.957-300.331z" />
|
15 |
+
<glyph unicode="" glyph-name="icon-facebook" d="M766.101 908.203l-139.947-0.064c0 0-2.859 0.213-7.957 0.213-28.715 0-173.909-7.979-213.44-163.691-0.619-1.728-13.888-40.704-14.123-131.371h-132.757c-11.776 0-21.333-9.536-21.333-21.333v-122.304c0-11.776 9.557-21.333 21.333-21.333h145.195v-439.339c0-11.776 9.557-21.333 21.333-21.333h166.251c11.797 0 21.333 9.557 21.333 21.333v438.891h145.664c11.797 0 21.333 9.536 21.333 21.333v122.752c0 11.797-9.536 21.333-21.333 21.333h-145.344v52.523c0 34.965 22.187 72.32 84.48 72.32h69.312c11.776 0 21.333 9.557 21.333 21.333v127.403c0 11.776-9.557 21.333-21.333 21.333zM744.768 780.8h-47.979c-87.829 0-127.147-57.749-127.147-114.987v-73.856c0-11.776 9.536-21.333 21.333-21.333h145.344v-80.085h-145.664c-11.776 0-21.333-9.557-21.333-21.333v-438.891h-123.584v439.339c0 11.797-9.536 21.333-21.333 21.333h-145.195v79.637h132.928c5.739 0 11.2 2.304 15.232 6.421 4.011 4.075 6.208 9.621 6.101 15.36-1.92 97.024 11.435 137.877 12.053 139.947 31.488 123.755 140.096 133.355 172.651 133.355 2.965 0 4.757-0.107 6.485-0.149h120.085v-84.757z" />
|
16 |
+
<glyph unicode="" glyph-name="icon-flickr" d="M358.379 588.523c-76.928 0-139.52-63.040-139.52-140.523 0-77.525 62.592-140.565 139.52-140.565s139.52 63.040 139.52 140.565c0 77.483-62.592 140.523-139.52 140.523zM358.379 350.101c-53.419 0-96.853 43.925-96.853 97.899 0 53.952 43.435 97.856 96.853 97.856 53.397 0 96.853-43.904 96.853-97.856 0-53.973-43.456-97.899-96.853-97.899zM673.536 588.523c-76.928 0-139.52-63.040-139.52-140.523 0-77.525 62.592-140.565 139.52-140.565 76.907 0 139.499 63.040 139.499 140.565 0 77.483-62.571 140.523-139.499 140.523zM673.536 350.101c-53.419 0-96.853 43.925-96.853 97.899 0 53.952 43.435 97.856 96.853 97.856 53.397 0 96.832-43.904 96.832-97.856 0-53.973-43.435-97.899-96.832-97.899zM515.968 906.603c-255.168 0-462.741-205.739-462.741-458.624s207.573-458.581 462.741-458.581c250.795 0 454.827 205.717 454.827 458.581 0 252.907-204.053 458.624-454.827 458.624zM515.968 32.064c-231.616 0-420.075 186.581-420.075 415.915 0 229.355 188.459 415.957 420.075 415.957 227.264 0 412.16-186.603 412.16-415.957 0-229.333-184.896-415.915-412.16-415.915z" />
|
17 |
+
<glyph unicode="" glyph-name="icon-googleplus" d="M498.581 564.864c8 12.053 13.227 24.725 15.808 39.189 1.173 10.816 1.771 20.181 1.771 27.883 0 33.173-8.491 66.859-25.173 99.947-8.555 17.451-20.117 31.957-35.029 43.563-15.467 11.136-33.344 17.109-53.056 17.728-0.405 0.021-0.789 0.021-1.195 0-26.816-0.619-49.387-11.52-67.115-32.384-0.469-0.576-0.939-1.173-1.344-1.792-13.995-20.544-20.8-43.733-20.203-68.416 0-30.912 8.981-63.189 26.859-96.213 9.195-16.299 21.141-30.272 35.541-41.536 16.085-12.608 34.667-19.029 56.085-19.029h0.085c25.515 0.96 47.211 10.347 64.427 27.947 0.939 0.939 1.792 1.984 2.539 3.115zM472.192 610.155c-1.195-6.613-3.904-13.333-8.043-19.968-9.195-8.725-20.331-13.227-33.344-13.739-11.029 0-20.501 3.243-29.035 9.941-9.963 7.808-18.261 17.515-24.491 28.587-14.293 26.389-21.547 51.84-21.547 76.075-0.384 15.936 3.605 29.995 12.16 42.944 9.429 10.773 20.373 16.021 34.261 16.469 11.008-0.448 20.437-3.605 28.224-9.216 9.237-7.189 16.512-16.427 22.4-28.395 13.739-27.285 20.715-54.528 20.715-80.96 0-6.293-0.533-14.037-1.301-21.739zM462.827 320.256c-2.944 2.069-6.336 3.328-9.92 3.733-5.483 0.576-11.883 0.875-19.221 0.896-5.525 0.448-15.637 0.107-35.413-1.749-17.472-2.475-35.648-6.549-55.531-12.544-4.245-1.621-10.219-4.053-18.475-7.552-8.896-4.096-18.048-9.92-27.84-17.899-9.301-8.235-17.195-18.389-23.083-29.547-7.723-13.419-11.648-29.355-11.648-47.403 0-35.285 15.872-64.533 46.741-86.613 27.84-20.949 65.515-31.872 112.597-32.448 42.496 0.576 76.011 10.603 99.733 29.845 24.448 20.053 36.885 46.251 36.885 77.824 0 25.6-8.491 48.235-25.984 68.053-15.083 15.488-37.611 33.6-68.843 55.403zM493.803 152.064c-16-12.992-40.661-19.819-72.768-20.245-37.248 0.448-66.496 8.469-87.339 24.171-20.011 14.293-29.333 30.891-29.333 52.203 0 10.453 2.005 19.221 6.315 26.731 3.883 7.317 8.597 13.461 13.333 17.685 6.293 5.099 12.373 9.024 17.472 11.371 7.083 3.008 12.587 5.248 14.976 6.251 16.341 4.885 32.427 8.448 46.741 10.517 11.733 1.088 20.117 1.643 25.173 1.643l1.579-0.021c4.629-0.619 9.237-0.192 13.141-0.405 26.219-18.539 45.696-34.261 57.301-46.080 9.813-11.157 14.592-23.936 14.592-39.061 0.021-18.667-6.741-32.917-21.184-44.757zM581.781 407.168l-35.904 29.269c-4.971 4.971-10.048 10.709-15.893 18.005-2.005 2.24-4.672 6.165-4.672 14.315 0 7.36 1.835 13.269 6.421 19.627 4.885 7.509 10.176 14.229 14.379 18.709 11.755 10.24 22.827 20.309 34.027 30.976 9.877 10.389 19.307 21.845 28.075 34.155 19.243 27.157 29.376 63.083 30.080 107.093l0.021 7.147c0.085 16.683 0.128 25.877-5.44 44.288-6.891 18.88-13.483 33.877-23.040 45.163h13.696c6.656 0 12.907 3.115 16.939 8.384l54.293 71.040c4.928 6.464 5.781 15.147 2.197 22.421-3.627 7.232-11.029 11.84-19.157 11.84h-220.757c-30.528 0-63.616-3.584-99.008-10.795-36.928-8.597-72.789-27.093-107.84-56.043-49.792-48.149-75.051-102.933-75.051-162.859 0-50.368 18.261-94.997 53.44-131.755 34.816-40.981 85.397-62.144 150.656-62.976 1.664 0 3.371 0.021 5.099 0.064-1.259-6.037-1.877-12.629-1.877-19.883 0-20.309 4.8-38.187 13.333-51.563 0.811-1.557 1.643-3.115 2.496-4.693-18.752-1.685-39.787-4.245-63.040-7.659-41.621-7.189-81.877-21.781-119.957-43.563-35.371-21.077-60.352-46.357-74.155-74.88-13.952-27.968-21.013-54.144-21.013-77.803 0-48.619 22.165-90.624 65.28-124.309 41.856-35.392 104.704-53.739 186.795-54.507h0.533c97.131 1.515 173.056 25.579 225.728 71.509 51.84 45.312 78.123 98.56 78.123 158.613-0.747 41.92-10.752 76.757-30.165 104.107-18.411 24.171-40.192 46.549-64.64 66.56zM570.411 110.037c-44.8-39.061-111.445-59.584-198.059-60.971-71.744 0.704-125.376 15.637-160.021 44.928-33.344 26.069-49.515 55.893-49.515 91.2 0 17.003 5.568 36.779 16.64 59.008 10.219 21.099 29.632 40.299 57.365 56.853 33.408 19.115 68.971 32 105.173 38.272 37.909 5.589 69.739 8.747 94.592 9.451 8 0.213 15.211 4.885 18.645 12.096 3.456 7.232 2.581 15.765-2.261 22.123-7.168 9.429-13.675 19.712-20.203 32.064-5.099 8.085-7.595 18.005-7.595 30.293 0 8.469 1.344 13.355 2.965 17.301 2.368 6.784 4.629 13.056 6.677 18.731 2.496 6.933 1.259 14.677-3.307 20.48-4.053 5.163-10.261 8.128-16.747 8.128-0.789 0-1.579-0.043-2.368-0.128-11.947-1.344-23.061-2.027-32.832-2.027-52.843 0.661-91.563 16.363-119.232 48.853-28.565 29.888-42.453 63.637-42.453 103.211 0 48.576 20.288 91.819 60.779 131.072 28.651 23.595 58.645 39.189 88.533 46.144 31.979 6.528 62.229 9.813 89.899 9.813h177.6l-21.675-28.373h-57.557c-9.387 0-17.429-6.336-20.16-15.339-2.709-9.003 1.045-18.901 8.896-24.107 4.331-2.88 20.203-18.219 26.987-24.768l5.696-5.461c6.464-6.677 13.355-25.643 15.573-31.595 3.328-11.136 3.307-15.296 3.243-30.677l-0.021-6.976c-0.555-34.901-8.043-62.741-22.165-82.709-7.573-10.603-15.744-20.523-23.509-28.715-9.984-9.493-20.629-19.157-33.237-30.272-7.424-7.68-14.4-16.533-20.075-25.344-9.301-12.693-13.995-27.435-13.995-43.861 0-16.853 5.227-31.253 14.741-41.813 6.037-7.595 12.181-14.549 19.883-22.080l37.483-30.677c21.888-17.92 41.344-37.909 57.344-58.859 13.909-19.627 21.269-46.4 21.845-79.189-0.043-47.467-20.843-88.725-63.573-126.080zM882.517 767.232h-64v64c0 11.797-9.557 21.333-21.333 21.333s-21.333-9.536-21.333-21.333v-64h-64c-11.776 0-21.333-9.536-21.333-21.333 0-11.776 9.557-21.333 21.333-21.333h64v-64c0-11.776 9.557-21.333 21.333-21.333s21.333 9.557 21.333 21.333v64h64c11.776 0 21.333 9.557 21.333 21.333 0 11.797-9.557 21.333-21.333 21.333z" />
|
18 |
+
<glyph unicode="" glyph-name="icon-linkedin" d="M255.915 646.272h-172.181c-11.797 0-21.333-9.536-21.333-21.333v-601.899c0-11.797 9.536-21.333 21.333-21.333h172.181c11.797 0 21.333 9.536 21.333 21.333v601.899c0 11.797-9.536 21.333-21.333 21.333zM234.581 44.373h-129.515v559.232h129.515v-559.232zM736 653.589c-83.605 0-138.304-36.053-170.069-67.435l-3.947 40.832c-1.067 10.965-10.261 19.285-21.227 19.285h-0.427l-156.971-3.008c-5.76-0.107-11.2-2.539-15.147-6.741-3.947-4.181-6.016-9.792-5.76-15.552 1.963-43.947 1.899-95.317 1.813-154.795l-0.021-446.165c0-11.797 9.536-21.333 21.333-21.333h172.203c11.776 0 21.333 9.536 21.333 21.333v347.947c0 17.792 1.515 30.635 4.587 38.293 10.731 27.307 46.123 55.573 86.784 55.573 52.672 0 84.096-40.064 84.096-107.2v-334.592c0-11.797 9.557-21.333 21.333-21.333h169.173c11.797 0 21.333 9.536 21.333 21.333v356.416c0.043 173.568-86.101 277.141-230.421 277.141zM923.797 41.365h-126.507v313.259c0 91.029-49.749 149.867-126.763 149.867-61.077 0-110.763-42.581-126.464-82.581-5.184-12.949-7.573-30.080-7.573-53.952v-326.592h-129.536l0.021 424.747c0.085 50.539 0.128 95.253-1.045 134.912l115.499 2.219 6.635-68.821c1.067-10.944 10.24-19.264 21.248-19.264h3.627c7.36 0 14.187 3.776 18.091 10.027 12.587 20.096 61.675 85.739 164.992 85.739 119.36 0 187.797-85.44 187.797-234.475v-335.083zM177.067 897.301c-69.269 0-119.531-47.723-119.531-113.493 0-65.728 49.259-113.429 117.12-113.429 69.952 0 120.704 47.701 120.704 113.941-1.557 66.496-50.197 112.981-118.293 112.981zM174.677 713.024c-43.84 0-74.453 29.099-74.453 70.763 0 42.368 30.869 70.827 76.864 70.827 44.928 0 74.645-28.011 75.648-70.827-0.021-42.325-31.403-70.763-78.059-70.763z" />
|
19 |
+
<glyph unicode="" glyph-name="icon-pinterest" d="M877.205 689.515c-14.592 49.472-38.037 91.136-71.723 127.403-32.939 35.435-70.784 62.293-115.776 82.112-32.384 14.272-84.715 31.275-150.123 31.275-5.717 0-11.477-0.149-17.259-0.427-19.712-0.896-40.597-2.027-60.587-4.885-55.851-8-105.003-24.704-150.251-51.072-57.856-33.664-102.997-79.488-134.165-136.149-16.235-29.483-32.192-81.429-38.955-115.349-8.043-40.171-0.939-109.781 15.189-148.971 19.947-48.384 37.269-71.019 77.269-100.949 0.256-0.171 24.683-18.304 43.029-18.304h0.021c31.915 0.597 38.123 30.677 41.109 45.12 0.512 2.581 1.067 5.141 1.685 7.531 0.533 2.133 1.259 4.395 1.984 6.763 4.352 14.165 10.304 33.557 0.235 51.115-3.712 6.485-8.064 11.435-11.925 15.808-1.963 2.24-3.968 4.437-5.568 6.827-14.016 20.928-21.141 47.168-21.141 77.952 0 40.619 9.173 77.419 28.011 112.448 34.155 63.531 90.88 103.616 164.011 115.989 40.981 6.891 91.157 3.797 126.677-7.616 33.131-10.645 61.333-29.525 81.557-54.571 21.419-26.475 33.664-60.139 36.395-100.053 1.344-19.627 0.576-41.387-2.432-68.523-7.403-65.899-26.453-118.912-56.704-157.589-24.555-31.424-50.944-47.189-80.661-48.192l-4.011-0.085c-17.152 0-30.123 3.84-42.112 12.437-12.011 8.619-19.2 19.243-22.592 33.429-3.861 16.235 0.875 33.365 5.909 51.541l0.789 2.944c4.459 16.149 9.088 30.912 13.632 45.44 7.211 23.040 14.677 46.848 20.843 74.496 6.976 31.381 7.893 56.789 2.816 77.675-6.336 26.091-20.309 45.632-41.557 58.112-21.845 12.8-54.528 15.595-81.003 6.507-39.573-13.568-69.76-49.536-82.795-98.731-6.613-24.832-8.491-50.944-5.675-77.525 2.176-20.651 6.72-39.36 15.125-61.803-0.235-0.768-0.448-1.536-0.704-2.304-0.597-2.069-1.195-4.032-1.6-5.781-9.237-38.677-18.219-76.843-27.179-114.944-8.341-35.413-16.661-70.784-25.173-106.517l-1.92-7.957c-8.832-36.907-18.005-75.093-20.117-120.768l-0.939-18.88c-1.856-35.413-3.776-72.021 0.981-106.112 0.917-6.336 3.2-22.293 18.581-28.011 2.795-2.027 7.509-4.629 14.037-4.629 12.416 0 20.416 8.448 33.408 23.339 30.080 34.325 55.659 77.675 78.251 132.501 10.091 24.533 16.768 50.901 23.232 76.373l3.861 15.104c4.501 17.344 8.917 34.88 13.269 52.267 7.851-6.592 16.811-12.608 27.008-18.261 24.235-13.504 51.563-21.355 81.259-23.36 28.864-2.048 56.939 1.643 89.152 10.944 24.448 6.997 47.893 17.643 69.696 31.616 77.888 50.069 130.987 137.557 149.525 246.4 5.525 32.512 7.872 58.624 7.872 87.275-0.021 33.131-3.989 63.296-11.776 89.579zM838.997 519.787c-16.469-96.875-62.827-174.165-130.496-217.664-18.261-11.733-37.909-20.651-58.389-26.496-27.413-7.893-50.56-11.008-74.453-9.387-23.701 1.6-44.48 7.531-63.424 18.069-19.029 10.581-31.317 21.909-39.915 36.757-4.331 7.531-12.8 11.691-21.376 10.453-8.576-1.195-15.595-7.445-17.749-15.851l-9.6-38.037c-4.501-17.899-9.024-36.011-13.675-53.867l-3.947-15.339c-6.357-25.152-12.352-48.896-21.312-70.613-19.115-46.464-40.299-83.584-64.555-113.195-1.429 24.427-0.021 51.371 1.344 77.632l0.96 19.115c1.941 41.643 10.603 77.824 19.008 112.789l1.92 8.021c8.512 35.755 16.853 71.189 25.216 106.645 8.96 38.037 17.92 76.139 27.115 114.731l1.024 3.563c2.283 7.68 4.885 16.405 1.387 25.173-8.085 20.864-12.373 37.483-14.293 55.637-2.261 21.397-0.768 42.283 4.501 62.080 9.323 35.179 29.504 60.437 55.403 69.312 6.080 2.091 12.651 3.136 19.499 3.136 9.813 0 19.541-2.261 26.048-6.080 11.072-6.507 18.155-16.768 21.717-31.403 3.477-14.208 2.453-33.813-3.008-58.304-5.781-25.899-12.651-47.808-19.904-71.019-4.715-14.976-9.451-30.208-14.059-46.869l-0.789-2.901c-5.931-21.504-12.672-45.867-6.272-72.768 5.803-24.448 18.645-43.477 39.211-58.219 19.136-13.76 41.045-20.437 66.987-20.437l5.461 0.107c42.496 1.429 80.469 23.168 112.811 64.533 35.179 44.971 57.237 105.259 65.493 179.115 3.328 29.76 4.139 53.973 2.624 76.203-3.371 48.811-18.773 90.517-45.781 123.947-25.472 31.552-60.629 55.168-101.717 68.373-41.899 13.483-99.157 17.109-146.816 9.088-86.635-14.656-153.877-62.315-194.496-137.856-22.272-41.408-33.109-84.821-33.109-132.672 0-39.403 9.536-73.6 28.352-101.696 2.603-3.925 5.739-7.552 8.96-11.243 2.773-3.136 5.397-6.144 6.72-8.363 0.789-3.115-2.176-12.715-3.755-17.877-0.917-2.965-1.792-5.803-2.496-8.469-0.789-3.093-1.493-6.4-2.176-9.728-0.576-2.752-1.408-6.741-2.283-9.685-4.48 2.069-10.88 5.717-14.528 8.427-33.899 25.344-46.336 41.643-63.381 83.051-12.821 31.104-19.136 92.715-12.821 124.373 7.125 35.605 22.272 80.917 34.496 103.147 27.392 49.792 67.157 90.112 118.251 119.829 40.427 23.552 84.523 38.507 134.848 45.717 18.133 2.603 37.035 3.627 56.469 4.501 64.277 2.901 117.099-13.568 148.224-27.264 39.552-17.408 72.811-41.003 101.717-72.107 29.077-31.317 49.365-67.435 62.059-110.443 6.635-22.4 10.005-48.469 10.005-77.547 0.043-26.133-2.155-50.112-7.253-80.128z" />
|
20 |
+
<glyph unicode="" glyph-name="icon-skype" d="M942.699 369.941c6.699 37.888 32.192 230.229-111.232 371.264-10.901 12.672-118.507 131.733-316.651 131.733-22.315 0-45.184-1.557-68.139-4.651-18.176 9.557-69.653 33.216-133.995 33.216-69.376 0-131.008-26.773-183.445-79.829-1.216-1.28-118.997-127.061-39.893-289.152-5.931-27.243-19.669-116.011 21.675-224.149 2.261-8.149 57.984-200.341 268.309-263.019 2.859-1.109 70.912-26.667 164.864-26.667 14.613 0 29.227 0.619 43.541 1.877 16.192-7.296 63.467-26.069 121.621-26.069 69.525 0 131.563 27.392 178.859 78.613 4.885 4.885 117.845 120.576 54.485 296.832zM857.451 102.656c-40.171-43.456-89.984-65.493-148.096-65.493-59.947 0-107.584 23.915-108.011 24.149-3.029 1.557-6.4 2.368-9.771 2.368-0.704 0-1.408-0.043-2.133-0.107-14.784-1.472-30.016-2.219-45.248-2.219-85.653 0-149.013 23.616-151.125 24.384-188.715 56.277-240.448 232.341-241.536 235.968-44.096 115.605-19.328 206.677-19.093 207.509 1.515 5.269 0.939 10.923-1.6 15.765-71.893 137.963 25.109 242.816 28.992 246.933 43.904 44.395 95.317 66.923 152.853 66.923 66.56 0 118.4-30.613 118.869-30.891 4.224-2.581 9.323-3.584 14.144-2.859 23.317 3.435 46.571 5.184 69.12 5.184 184.064 0 283.648-116.096 284.608-117.227 0.469-0.555 0.981-1.109 1.472-1.621 140.053-137.024 99.285-336.768 98.859-338.795-0.853-4.011-0.555-8.213 0.896-12.032 57.963-153.045-38.528-253.184-43.2-257.941zM625.579 514.773c-0.704 0.213-1.408 0.384-2.133 0.491-104.363 18.624-165.611 46.571-165.781 46.571-13.547 7.68-21.355 15.829-22.016 22.955-0.704 7.616 6.421 16.811 10.923 21.163 26.133 13.248 50.624 19.968 72.789 19.968 48.491 0 71.296-32.235 72.277-33.6 31.723-46.933 64.32-70.72 96.811-70.72 21.781 0 34.773 10.944 36.779 12.8 21.419 18.795 32.747 41.771 32.811 66.453 0.085 47.339-39.979 84.053-44.096 87.701-48.085 44.843-112.107 67.584-190.229 67.584-72.875 0-131.157-20.309-133.312-21.056-125.44-42.155-135.765-150.293-123.733-201.579 0.192-0.811 0.448-1.6 0.704-2.368 46.293-128.107 240.448-144.683 248.683-145.344 88.832-7.019 92.971-48.448 93.12-50.837 3.093-43.243-74.432-56.576-86.443-58.389-77.525 4.373-96.171 34.005-96.213 34.005 0 0 0 0 0-0.021-0.619 1.28-1.344 2.453-2.197 3.563-42.581 56.341-59.2 75.883-96.448 76.843l-2.88 0.043c-29.845 0-47.509-12.587-57.045-23.147-24.256-26.837-21.077-65.664-20.651-69.995 0.107-0.939 0.277-1.877 0.469-2.816 34.475-144.299 218.56-148.459 239.467-148.459h0.491c11.221-0.661 22.037-0.981 32.427-0.981 245.867 0 262.72 179.627 262.805 181.035 10.731 110.059-98.24 171.2-157.376 188.139zM740.544 330.411c-0.533-6.059-17.579-155.2-250.901-141.248-0.448 0.043-1.941 0.043-2.347 0.043-17.344 0-169.536 3.221-197.547 114.048-0.213 4.907-0.341 24.597 9.899 35.968 5.547 6.123 14.72 9.387 27.157 9.067 15.424-0.405 22.101-5.184 62.656-58.773 6.635-11.157 36.8-50.837 133.099-55.659 1.195-0.064 2.325-0.021 3.477 0.107 49.045 5.589 130.731 33.771 125.781 102.869-0.064 3.307-2.816 81.259-132.416 91.499-1.728 0.149-173.461 14.677-211.435 116.053-2.56 12.373-19.157 111.552 96.341 150.357 0.533 0.192 53.781 18.731 119.424 18.731 66.987 0 121.195-18.901 161.493-56.448 8.427-7.552 30.272-32.363 30.165-56.213-0.085-12.373-6.037-23.595-18.027-34.133-0.128-0.085-3.264-2.411-8.896-2.411-7.915 0-29.76 5.056-61.376 51.819-1.408 2.155-35.669 52.523-107.712 52.523-29.76 0-61.632-8.725-94.763-25.963-1.301-0.683-2.496-1.472-3.627-2.389-3.136-2.56-30.613-25.984-27.84-58.944 1.877-22.229 16.512-41.259 44.971-57.344 2.667-1.259 66.091-30.613 176.619-50.475 13.269-4.032 135.381-44.011 125.803-143.083z" />
|
21 |
+
<glyph unicode="" glyph-name="icon-twitter" d="M973.397 743.083c-7.552 5.163-17.515 4.971-24.832-0.491-5.056-3.776-12.587-7.125-21.376-10.069 28.949 35.925 29.376 59.925 28.949 65.813-0.576 7.68-5.248 14.485-12.224 17.749-6.976 3.285-15.168 2.56-21.461-1.963-39.467-28.267-78.955-34.389-101.973-35.2-37.504 34.859-86.016 53.952-137.536 53.952-111.509 0-202.24-90.709-202.24-202.219 0-8.064 0.491-16.107 1.429-24.085-186.112 4.608-337.024 180.011-338.539 181.824-4.48 5.269-11.179 8.085-18.133 7.445-6.891-0.576-13.056-4.501-16.555-10.453-47.36-80.981-28.032-157.696 4.437-211.328-6.037 3.243-13.333 3.456-19.584 0.341-7.147-3.541-11.712-10.795-11.861-18.752-1.387-85.056 37.461-136.064 76.672-165.76-2.88-1.173-5.504-2.987-7.68-5.355-5.099-5.589-6.869-13.483-4.629-20.715 27.243-87.851 91.243-120.789 136.149-133.141-51.477-36.288-115.2-44.821-163.605-44.821-30.891 0-52.203 3.669-52.416 3.712-9.643 1.707-19.349-3.456-23.275-12.523-3.904-9.045-1.152-19.627 6.741-25.536 97.152-73.024 214.421-88.384 295.744-88.384 64.256 0 108.907 9.387 111.168 9.877 417.323 97.472 433.195 471.659 432.512 539.819 78.229 71.893 90.688 99.947 92.651 106.944 2.411 8.768-1.003 18.155-8.533 23.317zM853.333 637.781c-4.843-4.373-7.403-10.731-6.955-17.28 0.277-4.053 23.083-407.317-398.955-505.877-0.427-0.085-42.453-8.853-101.867-8.853-55.381 0-128.704 7.595-198.635 38.293 64.021 4.096 142.571 23.744 199.061 86.229 5.653 6.272 7.040 15.275 3.605 22.976-3.435 7.68-11.115 12.672-19.563 12.672-3.968 0-87.936 1.024-129.963 79.061 19.456-0.619 37.077 2.261 50.176 8.235 8.405 3.819 13.333 12.565 12.352 21.717-0.981 9.173-7.765 16.64-16.768 18.581-4.544 0.981-101.205 22.976-118.635 124.928 15.147-5.781 33.579-9.792 51.413-7.168 8.277 1.237 15.083 7.189 17.365 15.253 2.304 8.043-0.299 16.704-6.677 22.123-4.267 3.627-96.448 83.733-56.427 188.565 53.696-54.528 199.808-182.805 376-172.885 6.357 0.363 12.224 3.563 16 8.704s5.035 11.712 3.456 17.877c-3.307 12.928-4.971 26.283-4.971 39.723 0 87.979 71.595 159.552 159.573 159.552 43.115 0 83.499-16.939 113.749-47.659 3.925-3.989 9.259-6.272 14.848-6.379l3.285-0.021c15.68 0 40.256 1.899 68.437 10.987-9.024-9.536-20.757-20.288-35.989-32.043-7.467-5.781-10.24-15.765-6.848-24.576 3.413-8.789 12.267-14.336 21.589-13.589 3.456 0.299 18.645 1.6 37.44 4.971-11.797-12.117-26.88-26.688-46.101-44.117z" />
|
22 |
+
<glyph unicode="" glyph-name="icon-vimeo" d="M924.011 765.44c-41.131 61.333-114.411 63.872-117.504 63.957l-7.467 0.107c-200.555 0-249.429-210.581-249.92-212.715-1.621-7.339 0.747-14.997 6.251-20.16 5.504-5.141 13.248-7.019 20.501-4.928 43.2 12.459 73.792 11.435 84.8-2.624 8.448-10.795 6.699-29.248 5.12-36.629-64.299-162.603-104.256-182.016-111.573-184.256-22.037 15.275-55.36 143.381-72.299 279.36-19.563 140.715-80.427 170.24-128 170.24-31.147 0-55.915-13.184-62.272-16.917-80.341-37.205-206.507-169.003-211.861-174.635-7.509-7.851-7.893-20.096-0.917-28.416l40.171-47.915c3.925-4.693 9.707-7.488 15.829-7.616 5.803-0.299 12.011 2.325 16.171 6.827 27.328 29.525 43.179 32.704 48.725 32.704 8.149 0 12.16-7.061 13.013-8.704 46.528-93.525 78.315-227.904 78.656-229.397 60.544-250.219 142.336-277.227 174.699-277.227 3.861 0 6.229 0.427 6.187 0.448 231.829 29.696 437.099 439.488 446.549 458.773 39.872 104.683 41.621 185.323 5.141 239.723zM879.787 542.763c-2.027-4.053-203.733-407.040-413.376-433.6l-0.299-21.333v21.333c-3.029 0-74.709 2.795-133.184 244.437-1.344 5.696-33.216 140.501-81.664 237.867-5.611 12.245-22.763 33.024-51.52 33.024-19.925 0-40.64-9.664-62.891-29.483l-12.907 15.403c34.432 34.688 127.68 125.44 186.432 152.128 0.853 0.405 1.664 0.832 2.453 1.344 0.171 0.107 18.688 11.243 41.045 11.243 55.531 0 77.291-72.555 85.717-133.163 10.816-87.019 42.24-291.392 100.48-314.347 2.624-1.109 6.976-2.368 12.864-2.368 45.867 0 97.365 71.637 153.088 212.971 0.341 0.789 0.576 1.6 0.811 2.411 1.173 4.48 10.731 44.544-12.331 74.389-18.112 23.467-48.811 32.469-92.587 26.069 21.035 51.904 75.883 145.749 197.099 145.749l6.357-0.085c0.533-0.021 54.208-1.877 83.179-45.056 27.947-41.664 24.619-111.061-8.768-198.933z" />
|
23 |
+
<glyph unicode="" glyph-name="icon-zerply" d="M871.915 200.555c-1.728 6.805-6.677 12.352-13.291 14.763-6.592 2.411-13.909 1.472-19.712-2.581-28.096-19.861-57.344-29.525-89.387-29.525-60.715 0-123.264 33.963-189.525 69.867-52.544 28.523-106.539 57.792-162.133 70.485 45.525 49.707 94.123 100.843 141.419 150.571 56.789 59.691 115.499 121.429 170.411 182.336 8.021 8.875 16.448 17.664 24.917 26.475 49.344 51.413 105.259 109.717 93.291 203.285-0.704 5.781-3.797 11.029-8.469 14.485s-10.581 4.821-16.341 3.84c-44.693-7.787-134.251-20.885-232.277-20.885-88.747 0-160.213 11.264-206.677 32.555-8.277 3.861-18.027 1.941-24.299-4.608-40.619-42.347-85.44-97.664-71.253-150.037 17.045-62.869 129.301-57.813 224.619-55.36 2.752 0.085 5.419 0.149 8.128 0.213-66.795-86.955-146.411-181.184-237.099-280.64-8.512-9.344-17.429-18.368-26.325-27.435-50.645-51.435-108.011-109.781-88.363-220.075 2.005-11.264 12.416-18.923 23.936-17.365 99.968 13.909 194.432-6.4 279.851-60.053 17.92-11.264 35.264-23.936 53.675-37.312 42.816-31.211 87.104-63.488 140.075-78.251 17.877-4.992 36.096-7.531 54.165-7.531 56.832 0 108.501 24.469 141.717 67.136 33.259 42.688 43.541 97.963 28.949 155.648zM809.344 71.125c-33.259-42.688-93.077-60.779-150.741-44.757-45.547 12.715-86.677 42.667-126.443 71.637-18.155 13.205-36.885 26.901-56.064 38.933-74.88 47.040-156.203 70.891-241.792 70.891-14.912 0-30.101-0.725-45.355-2.197-6.443 75.541 33.6 116.224 79.403 162.795 9.301 9.429 18.581 18.88 27.456 28.629 103.872 113.899 193.408 221.12 266.133 318.677 4.843 6.485 5.589 15.104 1.963 22.315-3.605 7.211-10.987 11.776-19.072 11.776-16.149 0-34.069-0.469-52.672-0.939-19.776-0.533-40.405-1.067-60.565-1.067-100.075 0-119.296 15.616-121.792 24.917-5.952 21.973 11.157 55.147 50.88 98.667 51.755-20.181 122.325-30.421 210.176-30.421 86.123 0 165.781 9.771 216 17.6-1.173-60.843-41.045-102.4-83.008-146.133-8.789-9.152-17.493-18.219-25.792-27.435-54.571-60.48-113.067-122.027-169.664-181.525-56.875-59.84-115.712-121.664-168.96-180.928-5.483-6.059-6.976-14.741-3.883-22.336 3.093-7.552 10.24-12.715 18.411-13.205 60.821-3.733 124.288-38.144 185.707-71.467 68.011-36.885 138.304-75.051 209.856-75.051 30.421 0 58.731 6.677 85.781 20.288 2.347-33.557-6.528-64.683-25.963-89.664z" />
|
24 |
+
<glyph unicode="" glyph-name="quote" d="M861.576 486.852h-155.377c0 128.663 104.358 233.020 233.050 233.020 42.918 0 77.673 34.786 77.673 77.704 0 42.857-34.756 77.673-77.673 77.673-214.528 0-388.397-173.899-388.397-388.397v-310.724c0-85.835 69.572-155.347 155.347-155.347h155.377c85.805 0 155.347 69.542 155.347 155.347v155.347c0.030 85.805-69.542 155.377-155.347 155.377zM395.475 719.872c42.918 0 77.704 34.786 77.704 77.704 0 42.857-34.786 77.673-77.704 77.673-214.498 0-388.397-173.899-388.397-388.397v-310.724c0-85.835 69.572-155.347 155.377-155.347h155.347c85.805 0 155.377 69.542 155.377 155.347v155.347c0 85.835-69.602 155.377-155.377 155.377h-155.347c0 128.663 104.297 233.020 233.020 233.020z" />
|
25 |
+
<glyph unicode="" glyph-name="video-play" d="M511 960c-267.568 0-487.158-205.256-510-466.896v-90.208c22.842-261.64 242.432-466.896 510-466.896 282.77 0 512 229.23 512 512s-229.23 512-512 512zM513-20c-259.574 0-470 210.426-470 470s210.426 469 470 469 470-209.426 470-469-210.426-470-470-470zM372 688.5c0 0-30 10.5-29-14.5-1-25 0.5-421 0-452 0-27 7.2-29.4 29-14 29 16 398.6 231 398.6 231l-1.2 19.8-397.4 229.7zM704 447l-319-184.5v370.5l319-183.5v-2.5z" />
|
26 |
+
<glyph unicode="" glyph-name="icon-email" d="M960 108.885h-896c-35.285 0-64 28.715-64 64v550.229c0 35.285 28.715 64 64 64h896c35.285 0 64-28.715 64-64v-550.229c0-35.307-28.715-64-64-64zM64 744.448c-11.755 0-21.333-9.579-21.333-21.333v-550.229c0-11.776 9.579-21.333 21.333-21.333h896c11.776 0 21.333 9.557 21.333 21.333v550.229c0 11.755-9.557 21.333-21.333 21.333h-896zM512.064 303.125c-0.021 0-0.043 0-0.085 0-42.069 0.043-81.408 17.536-110.784 49.344l-342.144 369.195c-8 8.64-7.509 22.144 1.152 30.144 8.619 8 22.144 7.509 30.144-1.152l342.144-369.216c21.227-22.976 49.451-35.627 79.509-35.648 0.021 0 0.043 0 0.064 0 30.080 0 58.368 12.672 79.659 35.648l341.909 369.216c7.979 8.661 21.483 9.173 30.144 1.173 8.64-8 9.173-21.504 1.152-30.144l-341.909-369.237c-29.461-31.808-68.843-49.323-110.955-49.323zM61.696 151.381c-5.099 0-10.197 1.813-14.272 5.504-8.747 7.893-9.429 21.376-1.536 30.123l262.229 290.603c7.872 8.768 21.355 9.451 30.123 1.536 8.747-7.893 9.429-21.376 1.536-30.123l-262.251-290.603c-4.203-4.672-10.005-7.040-15.829-7.040zM962.325 151.381c-5.803 0-11.627 2.368-15.829 7.040l-262.251 290.603c-7.893 8.747-7.211 22.229 1.536 30.123 8.725 7.893 22.229 7.232 30.123-1.536l262.251-290.603c7.893-8.747 7.211-22.229-1.536-30.123-4.075-3.691-9.173-5.504-14.293-5.504z" />
|
27 |
+
<glyph unicode="" glyph-name="close" d="M36.447 953.748l981.311-981.311-30.17-30.17-981.311 981.311 30.17 30.17zM987.576 953.748l30.17-30.17-981.311-981.311-30.17 30.17 981.311 981.311z" />
|
28 |
+
<glyph unicode="" glyph-name="icon-plus" d="M0.021 469.333h1023.957v-42.667h-1023.957v42.667zM490.688 960h42.667v-1024h-42.667v1024z" />
|
29 |
+
<glyph unicode="" glyph-name="arrow-right-toggle" d="M777.312 503.168l-306.752 306.752c-28.096 28.096-74.144 28.096-102.24 0l-25.6-25.6c-28.096-28.064-28.096-74.112 0-102.208l234.048-234.112-234.080-234.080c-28.096-28.096-28.096-74.144 0-102.208l25.6-25.6c28.096-28.128 74.144-28.128 102.24 0l306.752 306.784c15.104 15.072 21.824 35.296 20.704 55.136 1.152 19.808-5.568 40.032-20.672 55.136z" />
|
30 |
+
<glyph unicode="" glyph-name="menu" d="M0 783.275h1024v-42.667h-1024v42.667zM0 469.312h1024v-42.667h-1024v42.667zM0 155.392h1024v-42.667h-1024v42.667z" />
|
31 |
+
<glyph unicode="" glyph-name="menu-2" d="M916.523-64h-809.003c-59.285 0-107.52 48.256-107.52 107.541v26.283c0 59.264 48.235 107.499 107.52 107.499h809.003c59.264 0 107.477-48.235 107.477-107.499v-26.283c0-59.285-48.213-107.541-107.477-107.541zM107.52 134.656c-35.755 0-64.853-29.077-64.853-64.832v-26.283c0-35.776 29.099-64.875 64.853-64.875h809.003c35.733 0 64.811 29.099 64.811 64.875v26.283c0 35.755-29.077 64.832-64.811 64.832h-809.003zM916.523 327.317h-809.003c-59.285 0-107.52 48.256-107.52 107.541v26.325c0 59.264 48.235 107.499 107.52 107.499h809.003c59.264 0 107.477-48.235 107.477-107.499v-26.325c0-59.307-48.213-107.541-107.477-107.541zM107.52 526.016c-35.755 0-64.853-29.077-64.853-64.832v-26.325c0-35.776 29.099-64.875 64.853-64.875h809.003c35.733 0 64.811 29.099 64.811 64.875v26.325c0 35.755-29.077 64.832-64.811 64.832h-809.003zM916.523 718.677h-809.003c-59.285 0-107.52 48.213-107.52 107.477v26.347c0 59.264 48.235 107.499 107.52 107.499h809.003c59.264 0 107.477-48.235 107.477-107.499v-26.304c0-59.285-48.213-107.52-107.477-107.52zM107.52 917.333c-35.755 0-64.853-29.077-64.853-64.832v-26.347c0-35.733 29.099-64.811 64.853-64.811h809.003c35.733 0 64.811 29.099 64.811 64.853v26.304c0 35.755-29.077 64.832-64.811 64.832h-809.003z" />
|
32 |
+
<glyph unicode="" glyph-name="Fit-To" d="M17.067-64c-4.403 0-8.772 1.673-12.117 5.052-6.622 6.656-6.554 17.51 0.102 24.132l331.503 328.533c6.69 6.588 17.476 6.554 24.132-0.068 6.622-6.69 6.588-17.545-0.102-24.201l-331.503-328.533c-3.345-3.277-7.68-4.915-12.015-4.915zM691.746 607.642c-4.335 0-8.67 1.638-12.049 4.949-6.69 6.622-6.758 17.442-0.137 24.132l315.221 318.191c6.588 6.724 17.476 6.758 24.132 0.137s6.724-17.442 0.137-24.132l-315.221-318.225c-3.379-3.345-7.68-5.052-12.083-5.052zM1006.933 738.133c-9.387 0-17.067 7.646-17.067 17.067v170.667h-170.667c-9.387 0-17.067 7.646-17.067 17.067s7.68 17.067 17.067 17.067h187.733c9.387 0 17.067-7.646 17.067-17.067v-187.733c0-9.421-7.68-17.067-17.067-17.067zM204.8-64h-187.733c-9.421 0-17.067 7.68-17.067 17.067v187.733c0 9.387 7.646 17.067 17.067 17.067s17.067-7.68 17.067-17.067v-170.667h170.667c9.421 0 17.067-7.68 17.067-17.067s-7.646-17.067-17.067-17.067z" />
|
33 |
+
<glyph unicode="" glyph-name="Full-Screen2" d="M17.067-64c-4.403 0-8.772 1.673-12.117 5.052-6.622 6.656-6.554 17.51 0.102 24.132l331.503 328.533c6.69 6.588 17.476 6.554 24.132-0.068 6.622-6.69 6.588-17.545-0.102-24.201l-331.503-328.533c-3.345-3.277-7.68-4.915-12.015-4.915zM691.746 607.642c-4.335 0-8.67 1.638-12.049 4.949-6.69 6.622-6.758 17.442-0.137 24.132l315.221 318.191c6.588 6.724 17.476 6.758 24.132 0.137s6.724-17.442 0.137-24.132l-315.221-318.225c-3.379-3.345-7.68-5.052-12.083-5.052zM1006.933-64c-4.471 0-9.011 1.775-12.322 5.257l-315.187 328.533c-6.519 6.793-6.349 17.613 0.546 24.132 6.793 6.485 17.613 6.315 24.132-0.546l315.187-328.533c6.519-6.793 6.349-17.613-0.546-24.132-3.311-3.14-7.543-4.71-11.81-4.71zM348.604 607.642c-4.267 0-8.533 1.57-11.81 4.745l-331.537 318.225c-6.793 6.519-7.031 17.34-0.512 24.132 6.554 6.793 17.34 7.031 24.132 0.512l331.537-318.225c6.793-6.519 7.031-17.34 0.512-24.132-3.345-3.482-7.817-5.257-12.322-5.257zM1006.933 738.133c-9.387 0-17.067 7.646-17.067 17.067v170.667h-170.667c-9.387 0-17.067 7.646-17.067 17.067s7.68 17.067 17.067 17.067h187.733c9.387 0 17.067-7.646 17.067-17.067v-187.733c0-9.421-7.68-17.067-17.067-17.067zM1006.933-64h-187.733c-9.387 0-17.067 7.68-17.067 17.067s7.68 17.067 17.067 17.067h170.667v170.667c0 9.387 7.68 17.067 17.067 17.067s17.067-7.68 17.067-17.067v-187.733c0-9.387-7.68-17.067-17.067-17.067zM17.067 738.133c-9.421 0-17.067 7.646-17.067 17.067v187.733c0 9.421 7.646 17.067 17.067 17.067h187.733c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067h-170.667v-170.667c0-9.421-7.646-17.067-17.067-17.067zM204.8-64h-187.733c-9.421 0-17.067 7.68-17.067 17.067v187.733c0 9.387 7.646 17.067 17.067 17.067s17.067-7.68 17.067-17.067v-170.667h170.667c9.421 0 17.067-7.68 17.067-17.067s-7.646-17.067-17.067-17.067z" />
|
34 |
+
<glyph unicode="" glyph-name="arrow-left2" d="M167.488 448.043l-1.643 1.664 241.344 241.344 30.165-30.165-188.075-188.096h-7.957v-42.667h0.896l195.008-195.008-30.165-30.165-241.323 241.344z" />
|
35 |
+
<glyph unicode="" glyph-name="arrow-left22" d="M241.003 426.603c-5.781 0-11.584 2.368-15.787 7.040-7.872 8.704-7.211 22.165 1.493 30.037l541.995 490.816c8.704 7.915 22.208 7.253 30.037-1.493 7.915-8.704 7.253-22.165-1.493-30.080l-541.952-490.773c-4.075-3.712-9.195-5.547-14.293-5.547zM782.997-64.021c-5.12 0-10.24 1.835-14.293 5.547l-541.995 490.624c-8.704 7.872-9.365 21.333-1.493 30.037 7.872 8.747 21.333 9.451 30.080 1.493l541.952-490.581c8.747-7.872 9.408-21.376 1.493-30.080-4.203-4.629-9.941-7.040-15.744-7.040z" />
|
36 |
+
<glyph unicode="" glyph-name="arrow-right2" d="M856.512 447.957l1.643-1.621-241.387-241.387-30.165 30.165 188.075 188.096h7.979v42.667h-0.875l-195.051 195.008 30.165 30.165 241.365-241.344z" />
|
37 |
+
<glyph unicode="" glyph-name="arrow-right22" d="M782.976 426.624c-5.077 0-10.219 1.792-14.251 5.504l-542.037 490.773c-8.704 7.893-9.365 21.355-1.493 30.059 7.915 8.747 21.376 9.408 30.080 1.493l541.995-490.752c8.747-7.915 9.408-21.376 1.493-30.080-4.203-4.672-9.941-6.997-15.787-6.997zM241.024-64c-5.824 0-11.627 2.368-15.829 6.997-7.872 8.704-7.168 22.208 1.493 30.080l542.037 490.624c8.661 7.915 22.165 7.211 30.037-1.493 7.915-8.704 7.211-22.208-1.493-30.080l-541.995-490.624c-4.075-3.669-9.195-5.504-14.251-5.504z" />
|
38 |
+
<glyph unicode="" glyph-name="Start" d="M105.54-59.733c-2.867 0-5.769 0.717-8.397 2.15-5.359 3.038-8.67 8.738-8.67 14.916v981.333c0 6.144 3.311 11.844 8.67 14.848 5.359 3.038 11.947 2.935 17.203-0.239l812.954-490.598c5.086-3.072 8.226-8.602 8.226-14.609 0-5.973-3.14-11.537-8.226-14.609l-812.954-490.735c-2.697-1.673-5.769-2.458-8.806-2.458zM122.607 908.459v-920.883l762.88 460.493-762.88 460.39z" />
|
39 |
+
<glyph unicode="" glyph-name="instagram" d="M512 867.8c136.8 0 153-0.6 206.8-3 50-2.2 77-10.6 95-17.6 23.8-9.2 41-20.4 58.8-38.2 18-18 29-35 38.4-58.8 7-18 15.4-45.2 17.6-95 2.4-54 3-70.2 3-206.8s-0.6-153-3-206.8c-2.2-50-10.6-77-17.6-95-9.2-23.8-20.4-41-38.2-58.8-18-18-35-29-58.8-38.4-18-7-45.2-15.4-95-17.6-54-2.4-70.2-3-206.8-3s-153 0.6-206.8 3c-50 2.2-77 10.6-95 17.6-23.8 9.2-41 20.4-58.8 38.2-18 18-29 35-38.4 58.8-7 18-15.4 45.2-17.6 95-2.4 54-3 70.2-3 206.8s0.6 153 3 206.8c2.2 50 10.6 77 17.6 95 9.2 23.8 20.4 41 38.2 58.8 18 18 35 29 58.8 38.4 18 7 45.2 15.4 95 17.6 53.8 2.4 70 3 206.8 3zM512 960c-139 0-156.4-0.6-211-3-54.4-2.4-91.8-11.2-124.2-23.8-33.8-13.2-62.4-30.6-90.8-59.2-28.6-28.4-46-57-59.2-90.6-12.6-32.6-21.4-69.8-23.8-124.2-2.4-54.8-3-72.2-3-211.2s0.6-156.4 3-211c2.4-54.4 11.2-91.8 23.8-124.2 13.2-33.8 30.6-62.4 59.2-90.8 28.4-28.4 57-46 90.6-59 32.6-12.6 69.8-21.4 124.2-23.8 54.6-2.4 72-3 211-3s156.4 0.6 211 3c54.4 2.4 91.8 11.2 124.2 23.8 33.6 13 62.2 30.6 90.6 59s46 57 59 90.6c12.6 32.6 21.4 69.8 23.8 124.2 2.4 54.6 3 72 3 211s-0.6 156.4-3 211c-2.4 54.4-11.2 91.8-23.8 124.2-12.6 34-30 62.6-58.6 91-28.4 28.4-57 46-90.6 59-32.6 12.6-69.8 21.4-124.2 23.8-54.8 2.6-72.2 3.2-211.2 3.2v0zM512 711c-145.2 0-263-117.8-263-263s117.8-263 263-263 263 117.8 263 263c0 145.2-117.8 263-263 263zM512 277.4c-94.2 0-170.6 76.4-170.6 170.6s76.4 170.6 170.6 170.6c94.2 0 170.6-76.4 170.6-170.6s-76.4-170.6-170.6-170.6zM846.8 721.4c0-33.91-27.49-61.4-61.4-61.4s-61.4 27.49-61.4 61.4c0 33.91 27.49 61.4 61.4 61.4s61.4-27.49 61.4-61.4z" />
|
40 |
+
</font></defs></svg>
|
assets/css/fonts/icomoon/icomoon.ttf
ADDED
Binary file
|
assets/css/fonts/icomoon/icomoon.woff
ADDED
Binary file
|
assets/js/modernizr-custom.js
DELETED
@@ -1,1384 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* modernizr v3.3.1
|
3 |
-
* Build http://modernizr.com/download?-csstransforms-csstransforms3d-flexbox-flexboxlegacy-touchevents-setclasses-shiv-dontmin-cssclassprefix:lae-
|
4 |
-
*
|
5 |
-
* Copyright (c)
|
6 |
-
* Faruk Ates
|
7 |
-
* Paul Irish
|
8 |
-
* Alex Sexton
|
9 |
-
* Ryan Seddon
|
10 |
-
* Patrick Kettner
|
11 |
-
* Stu Cox
|
12 |
-
* Richard Herrera
|
13 |
-
|
14 |
-
* MIT License
|
15 |
-
*/
|
16 |
-
|
17 |
-
/*
|
18 |
-
* Modernizr tests which native CSS3 and HTML5 features are available in the
|
19 |
-
* current UA and makes the results available to you in two ways: as properties on
|
20 |
-
* a global `Modernizr` object, and as classes on the `<html>` element. This
|
21 |
-
* information allows you to progressively enhance your pages with a granular level
|
22 |
-
* of control over the experience.
|
23 |
-
*/
|
24 |
-
|
25 |
-
;(function(window, document, undefined){
|
26 |
-
var classes = [];
|
27 |
-
|
28 |
-
|
29 |
-
var tests = [];
|
30 |
-
|
31 |
-
|
32 |
-
/**
|
33 |
-
*
|
34 |
-
* ModernizrProto is the constructor for Modernizr
|
35 |
-
*
|
36 |
-
* @class
|
37 |
-
* @access public
|
38 |
-
*/
|
39 |
-
|
40 |
-
var ModernizrProto = {
|
41 |
-
// The current version, dummy
|
42 |
-
_version: '3.3.1',
|
43 |
-
|
44 |
-
// Any settings that don't work as separate modules
|
45 |
-
// can go in here as configuration.
|
46 |
-
_config: {
|
47 |
-
'classPrefix': "lae-",
|
48 |
-
'enableClasses': true,
|
49 |
-
'enableJSClass': true,
|
50 |
-
'usePrefixes': true
|
51 |
-
},
|
52 |
-
|
53 |
-
// Queue of tests
|
54 |
-
_q: [],
|
55 |
-
|
56 |
-
// Stub these for people who are listening
|
57 |
-
on: function(test, cb) {
|
58 |
-
// I don't really think people should do this, but we can
|
59 |
-
// safe guard it a bit.
|
60 |
-
// -- NOTE:: this gets WAY overridden in src/addTest for actual async tests.
|
61 |
-
// This is in case people listen to synchronous tests. I would leave it out,
|
62 |
-
// but the code to *disallow* sync tests in the real version of this
|
63 |
-
// function is actually larger than this.
|
64 |
-
var self = this;
|
65 |
-
setTimeout(function() {
|
66 |
-
cb(self[test]);
|
67 |
-
}, 0);
|
68 |
-
},
|
69 |
-
|
70 |
-
addTest: function(name, fn, options) {
|
71 |
-
tests.push({name: name, fn: fn, options: options});
|
72 |
-
},
|
73 |
-
|
74 |
-
addAsyncTest: function(fn) {
|
75 |
-
tests.push({name: null, fn: fn});
|
76 |
-
}
|
77 |
-
};
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
// Fake some of Object.create so we can force non test results to be non "own" properties.
|
82 |
-
var Modernizr = function() {};
|
83 |
-
Modernizr.prototype = ModernizrProto;
|
84 |
-
|
85 |
-
// Leak modernizr globally when you `require` it rather than force it here.
|
86 |
-
// Overwrite name so constructor name is nicer :D
|
87 |
-
Modernizr = new Modernizr();
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
/**
|
92 |
-
* is returns a boolean if the typeof an obj is exactly type.
|
93 |
-
*
|
94 |
-
* @access private
|
95 |
-
* @function is
|
96 |
-
* @param {*} obj - A thing we want to check the type of
|
97 |
-
* @param {string} type - A string to compare the typeof against
|
98 |
-
* @returns {boolean}
|
99 |
-
*/
|
100 |
-
|
101 |
-
function is(obj, type) {
|
102 |
-
return typeof obj === type;
|
103 |
-
}
|
104 |
-
;
|
105 |
-
|
106 |
-
/**
|
107 |
-
* Run through all tests and detect their support in the current UA.
|
108 |
-
*
|
109 |
-
* @access private
|
110 |
-
*/
|
111 |
-
|
112 |
-
function testRunner() {
|
113 |
-
var featureNames;
|
114 |
-
var feature;
|
115 |
-
var aliasIdx;
|
116 |
-
var result;
|
117 |
-
var nameIdx;
|
118 |
-
var featureName;
|
119 |
-
var featureNameSplit;
|
120 |
-
|
121 |
-
for (var featureIdx in tests) {
|
122 |
-
if (tests.hasOwnProperty(featureIdx)) {
|
123 |
-
featureNames = [];
|
124 |
-
feature = tests[featureIdx];
|
125 |
-
// run the test, throw the return value into the Modernizr,
|
126 |
-
// then based on that boolean, define an appropriate className
|
127 |
-
// and push it into an array of classes we'll join later.
|
128 |
-
//
|
129 |
-
// If there is no name, it's an 'async' test that is run,
|
130 |
-
// but not directly added to the object. That should
|
131 |
-
// be done with a post-run addTest call.
|
132 |
-
if (feature.name) {
|
133 |
-
featureNames.push(feature.name.toLowerCase());
|
134 |
-
|
135 |
-
if (feature.options && feature.options.aliases && feature.options.aliases.length) {
|
136 |
-
// Add all the aliases into the names list
|
137 |
-
for (aliasIdx = 0; aliasIdx < feature.options.aliases.length; aliasIdx++) {
|
138 |
-
featureNames.push(feature.options.aliases[aliasIdx].toLowerCase());
|
139 |
-
}
|
140 |
-
}
|
141 |
-
}
|
142 |
-
|
143 |
-
// Run the test, or use the raw value if it's not a function
|
144 |
-
result = is(feature.fn, 'function') ? feature.fn() : feature.fn;
|
145 |
-
|
146 |
-
|
147 |
-
// Set each of the names on the Modernizr object
|
148 |
-
for (nameIdx = 0; nameIdx < featureNames.length; nameIdx++) {
|
149 |
-
featureName = featureNames[nameIdx];
|
150 |
-
// Support dot properties as sub tests. We don't do checking to make sure
|
151 |
-
// that the implied parent tests have been added. You must call them in
|
152 |
-
// order (either in the test, or make the parent test a dependency).
|
153 |
-
//
|
154 |
-
// Cap it to TWO to make the logic simple and because who needs that kind of subtesting
|
155 |
-
// hashtag famous last words
|
156 |
-
featureNameSplit = featureName.split('.');
|
157 |
-
|
158 |
-
if (featureNameSplit.length === 1) {
|
159 |
-
Modernizr[featureNameSplit[0]] = result;
|
160 |
-
} else {
|
161 |
-
// cast to a Boolean, if not one already
|
162 |
-
/* jshint -W053 */
|
163 |
-
if (Modernizr[featureNameSplit[0]] && !(Modernizr[featureNameSplit[0]] instanceof Boolean)) {
|
164 |
-
Modernizr[featureNameSplit[0]] = new Boolean(Modernizr[featureNameSplit[0]]);
|
165 |
-
}
|
166 |
-
|
167 |
-
Modernizr[featureNameSplit[0]][featureNameSplit[1]] = result;
|
168 |
-
}
|
169 |
-
|
170 |
-
classes.push((result ? '' : 'no-') + featureNameSplit.join('-'));
|
171 |
-
}
|
172 |
-
}
|
173 |
-
}
|
174 |
-
}
|
175 |
-
;
|
176 |
-
|
177 |
-
/**
|
178 |
-
* docElement is a convenience wrapper to grab the root element of the document
|
179 |
-
*
|
180 |
-
* @access private
|
181 |
-
* @returns {HTMLElement|SVGElement} The root element of the document
|
182 |
-
*/
|
183 |
-
|
184 |
-
var docElement = document.documentElement;
|
185 |
-
|
186 |
-
|
187 |
-
/**
|
188 |
-
* A convenience helper to check if the document we are running in is an SVG document
|
189 |
-
*
|
190 |
-
* @access private
|
191 |
-
* @returns {boolean}
|
192 |
-
*/
|
193 |
-
|
194 |
-
var isSVG = docElement.nodeName.toLowerCase() === 'svg';
|
195 |
-
|
196 |
-
|
197 |
-
/**
|
198 |
-
* setClasses takes an array of class names and adds them to the root element
|
199 |
-
*
|
200 |
-
* @access private
|
201 |
-
* @function setClasses
|
202 |
-
* @param {string[]} classes - Array of class names
|
203 |
-
*/
|
204 |
-
|
205 |
-
// Pass in an and array of class names, e.g.:
|
206 |
-
// ['no-webp', 'borderradius', ...]
|
207 |
-
function setClasses(classes) {
|
208 |
-
var className = docElement.className;
|
209 |
-
var classPrefix = Modernizr._config.classPrefix || '';
|
210 |
-
|
211 |
-
if (isSVG) {
|
212 |
-
className = className.baseVal;
|
213 |
-
}
|
214 |
-
|
215 |
-
// Change `no-js` to `js` (independently of the `enableClasses` option)
|
216 |
-
// Handle classPrefix on this too
|
217 |
-
if (Modernizr._config.enableJSClass) {
|
218 |
-
var reJS = new RegExp('(^|\\s)' + classPrefix + 'no-js(\\s|$)');
|
219 |
-
className = className.replace(reJS, '$1' + classPrefix + 'js$2');
|
220 |
-
}
|
221 |
-
|
222 |
-
if (Modernizr._config.enableClasses) {
|
223 |
-
// Add the new classes
|
224 |
-
className += ' ' + classPrefix + classes.join(' ' + classPrefix);
|
225 |
-
isSVG ? docElement.className.baseVal = className : docElement.className = className;
|
226 |
-
}
|
227 |
-
|
228 |
-
}
|
229 |
-
|
230 |
-
;
|
231 |
-
|
232 |
-
/**
|
233 |
-
* @optionName html5shiv
|
234 |
-
* @optionProp html5shiv
|
235 |
-
*/
|
236 |
-
|
237 |
-
// Take the html5 variable out of the html5shiv scope so we can return it.
|
238 |
-
var html5;
|
239 |
-
if (!isSVG) {
|
240 |
-
/**
|
241 |
-
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
242 |
-
*/
|
243 |
-
;(function(window, document) {
|
244 |
-
/*jshint evil:true */
|
245 |
-
/** version */
|
246 |
-
var version = '3.7.3';
|
247 |
-
|
248 |
-
/** Preset options */
|
249 |
-
var options = window.html5 || {};
|
250 |
-
|
251 |
-
/** Used to skip problem elements */
|
252 |
-
var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
|
253 |
-
|
254 |
-
/** Not all elements can be cloned in IE **/
|
255 |
-
var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
|
256 |
-
|
257 |
-
/** Detect whether the browser supports default html5 styles */
|
258 |
-
var supportsHtml5Styles;
|
259 |
-
|
260 |
-
/** Name of the expando, to work with multiple documents or to re-shiv one document */
|
261 |
-
var expando = '_html5shiv';
|
262 |
-
|
263 |
-
/** The id for the the documents expando */
|
264 |
-
var expanID = 0;
|
265 |
-
|
266 |
-
/** Cached data for each document */
|
267 |
-
var expandoData = {};
|
268 |
-
|
269 |
-
/** Detect whether the browser supports unknown elements */
|
270 |
-
var supportsUnknownElements;
|
271 |
-
|
272 |
-
(function() {
|
273 |
-
try {
|
274 |
-
var a = document.createElement('a');
|
275 |
-
a.innerHTML = '<xyz></xyz>';
|
276 |
-
//if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
|
277 |
-
supportsHtml5Styles = ('hidden' in a);
|
278 |
-
|
279 |
-
supportsUnknownElements = a.childNodes.length == 1 || (function() {
|
280 |
-
// assign a false positive if unable to shiv
|
281 |
-
(document.createElement)('a');
|
282 |
-
var frag = document.createDocumentFragment();
|
283 |
-
return (
|
284 |
-
typeof frag.cloneNode == 'undefined' ||
|
285 |
-
typeof frag.createDocumentFragment == 'undefined' ||
|
286 |
-
typeof frag.createElement == 'undefined'
|
287 |
-
);
|
288 |
-
}());
|
289 |
-
} catch(e) {
|
290 |
-
// assign a false positive if detection fails => unable to shiv
|
291 |
-
supportsHtml5Styles = true;
|
292 |
-
supportsUnknownElements = true;
|
293 |
-
}
|
294 |
-
|
295 |
-
}());
|
296 |
-
|
297 |
-
/*--------------------------------------------------------------------------*/
|
298 |
-
|
299 |
-
/**
|
300 |
-
* Creates a style sheet with the given CSS text and adds it to the document.
|
301 |
-
* @private
|
302 |
-
* @param {Document} ownerDocument The document.
|
303 |
-
* @param {String} cssText The CSS text.
|
304 |
-
* @returns {StyleSheet} The style element.
|
305 |
-
*/
|
306 |
-
function addStyleSheet(ownerDocument, cssText) {
|
307 |
-
var p = ownerDocument.createElement('p'),
|
308 |
-
parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
|
309 |
-
|
310 |
-
p.innerHTML = 'x<style>' + cssText + '</style>';
|
311 |
-
return parent.insertBefore(p.lastChild, parent.firstChild);
|
312 |
-
}
|
313 |
-
|
314 |
-
/**
|
315 |
-
* Returns the value of `html5.elements` as an array.
|
316 |
-
* @private
|
317 |
-
* @returns {Array} An array of shived element node names.
|
318 |
-
*/
|
319 |
-
function getElements() {
|
320 |
-
var elements = html5.elements;
|
321 |
-
return typeof elements == 'string' ? elements.split(' ') : elements;
|
322 |
-
}
|
323 |
-
|
324 |
-
/**
|
325 |
-
* Extends the built-in list of html5 elements
|
326 |
-
* @memberOf html5
|
327 |
-
* @param {String|Array} newElements whitespace separated list or array of new element names to shiv
|
328 |
-
* @param {Document} ownerDocument The context document.
|
329 |
-
*/
|
330 |
-
function addElements(newElements, ownerDocument) {
|
331 |
-
var elements = html5.elements;
|
332 |
-
if(typeof elements != 'string'){
|
333 |
-
elements = elements.join(' ');
|
334 |
-
}
|
335 |
-
if(typeof newElements != 'string'){
|
336 |
-
newElements = newElements.join(' ');
|
337 |
-
}
|
338 |
-
html5.elements = elements +' '+ newElements;
|
339 |
-
shivDocument(ownerDocument);
|
340 |
-
}
|
341 |
-
|
342 |
-
/**
|
343 |
-
* Returns the data associated to the given document
|
344 |
-
* @private
|
345 |
-
* @param {Document} ownerDocument The document.
|
346 |
-
* @returns {Object} An object of data.
|
347 |
-
*/
|
348 |
-
function getExpandoData(ownerDocument) {
|
349 |
-
var data = expandoData[ownerDocument[expando]];
|
350 |
-
if (!data) {
|
351 |
-
data = {};
|
352 |
-
expanID++;
|
353 |
-
ownerDocument[expando] = expanID;
|
354 |
-
expandoData[expanID] = data;
|
355 |
-
}
|
356 |
-
return data;
|
357 |
-
}
|
358 |
-
|
359 |
-
/**
|
360 |
-
* returns a shived element for the given nodeName and document
|
361 |
-
* @memberOf html5
|
362 |
-
* @param {String} nodeName name of the element
|
363 |
-
* @param {Document|DocumentFragment} ownerDocument The context document.
|
364 |
-
* @returns {Object} The shived element.
|
365 |
-
*/
|
366 |
-
function createElement(nodeName, ownerDocument, data){
|
367 |
-
if (!ownerDocument) {
|
368 |
-
ownerDocument = document;
|
369 |
-
}
|
370 |
-
if(supportsUnknownElements){
|
371 |
-
return ownerDocument.createElement(nodeName);
|
372 |
-
}
|
373 |
-
if (!data) {
|
374 |
-
data = getExpandoData(ownerDocument);
|
375 |
-
}
|
376 |
-
var node;
|
377 |
-
|
378 |
-
if (data.cache[nodeName]) {
|
379 |
-
node = data.cache[nodeName].cloneNode();
|
380 |
-
} else if (saveClones.test(nodeName)) {
|
381 |
-
node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
|
382 |
-
} else {
|
383 |
-
node = data.createElem(nodeName);
|
384 |
-
}
|
385 |
-
|
386 |
-
// Avoid adding some elements to fragments in IE < 9 because
|
387 |
-
// * Attributes like `name` or `type` cannot be set/changed once an element
|
388 |
-
// is inserted into a document/fragment
|
389 |
-
// * Link elements with `src` attributes that are inaccessible, as with
|
390 |
-
// a 403 response, will cause the tab/window to crash
|
391 |
-
// * Script elements appended to fragments will execute when their `src`
|
392 |
-
// or `text` property is set
|
393 |
-
return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
|
394 |
-
}
|
395 |
-
|
396 |
-
/**
|
397 |
-
* returns a shived DocumentFragment for the given document
|
398 |
-
* @memberOf html5
|
399 |
-
* @param {Document} ownerDocument The context document.
|
400 |
-
* @returns {Object} The shived DocumentFragment.
|
401 |
-
*/
|
402 |
-
function createDocumentFragment(ownerDocument, data){
|
403 |
-
if (!ownerDocument) {
|
404 |
-
ownerDocument = document;
|
405 |
-
}
|
406 |
-
if(supportsUnknownElements){
|
407 |
-
return ownerDocument.createDocumentFragment();
|
408 |
-
}
|
409 |
-
data = data || getExpandoData(ownerDocument);
|
410 |
-
var clone = data.frag.cloneNode(),
|
411 |
-
i = 0,
|
412 |
-
elems = getElements(),
|
413 |
-
l = elems.length;
|
414 |
-
for(;i<l;i++){
|
415 |
-
clone.createElement(elems[i]);
|
416 |
-
}
|
417 |
-
return clone;
|
418 |
-
}
|
419 |
-
|
420 |
-
/**
|
421 |
-
* Shivs the `createElement` and `createDocumentFragment` methods of the document.
|
422 |
-
* @private
|
423 |
-
* @param {Document|DocumentFragment} ownerDocument The document.
|
424 |
-
* @param {Object} data of the document.
|
425 |
-
*/
|
426 |
-
function shivMethods(ownerDocument, data) {
|
427 |
-
if (!data.cache) {
|
428 |
-
data.cache = {};
|
429 |
-
data.createElem = ownerDocument.createElement;
|
430 |
-
data.createFrag = ownerDocument.createDocumentFragment;
|
431 |
-
data.frag = data.createFrag();
|
432 |
-
}
|
433 |
-
|
434 |
-
|
435 |
-
ownerDocument.createElement = function(nodeName) {
|
436 |
-
//abort shiv
|
437 |
-
if (!html5.shivMethods) {
|
438 |
-
return data.createElem(nodeName);
|
439 |
-
}
|
440 |
-
return createElement(nodeName, ownerDocument, data);
|
441 |
-
};
|
442 |
-
|
443 |
-
ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
|
444 |
-
'var n=f.cloneNode(),c=n.createElement;' +
|
445 |
-
'h.shivMethods&&(' +
|
446 |
-
// unroll the `createElement` calls
|
447 |
-
getElements().join().replace(/[\w\-:]+/g, function(nodeName) {
|
448 |
-
data.createElem(nodeName);
|
449 |
-
data.frag.createElement(nodeName);
|
450 |
-
return 'c("' + nodeName + '")';
|
451 |
-
}) +
|
452 |
-
');return n}'
|
453 |
-
)(html5, data.frag);
|
454 |
-
}
|
455 |
-
|
456 |
-
/*--------------------------------------------------------------------------*/
|
457 |
-
|
458 |
-
/**
|
459 |
-
* Shivs the given document.
|
460 |
-
* @memberOf html5
|
461 |
-
* @param {Document} ownerDocument The document to shiv.
|
462 |
-
* @returns {Document} The shived document.
|
463 |
-
*/
|
464 |
-
function shivDocument(ownerDocument) {
|
465 |
-
if (!ownerDocument) {
|
466 |
-
ownerDocument = document;
|
467 |
-
}
|
468 |
-
var data = getExpandoData(ownerDocument);
|
469 |
-
|
470 |
-
if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
|
471 |
-
data.hasCSS = !!addStyleSheet(ownerDocument,
|
472 |
-
// corrects block display not defined in IE6/7/8/9
|
473 |
-
'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
|
474 |
-
// adds styling not present in IE6/7/8/9
|
475 |
-
'mark{background:#FF0;color:#000}' +
|
476 |
-
// hides non-rendered elements
|
477 |
-
'template{display:none}'
|
478 |
-
);
|
479 |
-
}
|
480 |
-
if (!supportsUnknownElements) {
|
481 |
-
shivMethods(ownerDocument, data);
|
482 |
-
}
|
483 |
-
return ownerDocument;
|
484 |
-
}
|
485 |
-
|
486 |
-
/*--------------------------------------------------------------------------*/
|
487 |
-
|
488 |
-
/**
|
489 |
-
* The `html5` object is exposed so that more elements can be shived and
|
490 |
-
* existing shiving can be detected on iframes.
|
491 |
-
* @type Object
|
492 |
-
* @example
|
493 |
-
*
|
494 |
-
* // options can be changed before the script is included
|
495 |
-
* html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
|
496 |
-
*/
|
497 |
-
var html5 = {
|
498 |
-
|
499 |
-
/**
|
500 |
-
* An array or space separated string of node names of the elements to shiv.
|
501 |
-
* @memberOf html5
|
502 |
-
* @type Array|String
|
503 |
-
*/
|
504 |
-
'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video',
|
505 |
-
|
506 |
-
/**
|
507 |
-
* current version of html5shiv
|
508 |
-
*/
|
509 |
-
'version': version,
|
510 |
-
|
511 |
-
/**
|
512 |
-
* A flag to indicate that the HTML5 style sheet should be inserted.
|
513 |
-
* @memberOf html5
|
514 |
-
* @type Boolean
|
515 |
-
*/
|
516 |
-
'shivCSS': (options.shivCSS !== false),
|
517 |
-
|
518 |
-
/**
|
519 |
-
* Is equal to true if a browser supports creating unknown/HTML5 elements
|
520 |
-
* @memberOf html5
|
521 |
-
* @type boolean
|
522 |
-
*/
|
523 |
-
'supportsUnknownElements': supportsUnknownElements,
|
524 |
-
|
525 |
-
/**
|
526 |
-
* A flag to indicate that the document's `createElement` and `createDocumentFragment`
|
527 |
-
* methods should be overwritten.
|
528 |
-
* @memberOf html5
|
529 |
-
* @type Boolean
|
530 |
-
*/
|
531 |
-
'shivMethods': (options.shivMethods !== false),
|
532 |
-
|
533 |
-
/**
|
534 |
-
* A string to describe the type of `html5` object ("default" or "default print").
|
535 |
-
* @memberOf html5
|
536 |
-
* @type String
|
537 |
-
*/
|
538 |
-
'type': 'default',
|
539 |
-
|
540 |
-
// shivs the document according to the specified `html5` object options
|
541 |
-
'shivDocument': shivDocument,
|
542 |
-
|
543 |
-
//creates a shived element
|
544 |
-
createElement: createElement,
|
545 |
-
|
546 |
-
//creates a shived documentFragment
|
547 |
-
createDocumentFragment: createDocumentFragment,
|
548 |
-
|
549 |
-
//extends list of elements
|
550 |
-
addElements: addElements
|
551 |
-
};
|
552 |
-
|
553 |
-
/*--------------------------------------------------------------------------*/
|
554 |
-
|
555 |
-
// expose html5
|
556 |
-
window.html5 = html5;
|
557 |
-
|
558 |
-
// shiv the document
|
559 |
-
shivDocument(document);
|
560 |
-
|
561 |
-
if(typeof module == 'object' && module.exports){
|
562 |
-
module.exports = html5;
|
563 |
-
}
|
564 |
-
|
565 |
-
}(typeof window !== "undefined" ? window : this, document));
|
566 |
-
}
|
567 |
-
;
|
568 |
-
|
569 |
-
/**
|
570 |
-
* List of property values to set for css tests. See ticket #21
|
571 |
-
* http://git.io/vUGl4
|
572 |
-
*
|
573 |
-
* @memberof Modernizr
|
574 |
-
* @name Modernizr._prefixes
|
575 |
-
* @optionName Modernizr._prefixes
|
576 |
-
* @optionProp prefixes
|
577 |
-
* @access public
|
578 |
-
* @example
|
579 |
-
*
|
580 |
-
* Modernizr._prefixes is the internal list of prefixes that we test against
|
581 |
-
* inside of things like [prefixed](#modernizr-prefixed) and [prefixedCSS](#-code-modernizr-prefixedcss). It is simply
|
582 |
-
* an array of kebab-case vendor prefixes you can use within your code.
|
583 |
-
*
|
584 |
-
* Some common use cases include
|
585 |
-
*
|
586 |
-
* Generating all possible prefixed version of a CSS property
|
587 |
-
* ```js
|
588 |
-
* var rule = Modernizr._prefixes.join('transform: rotate(20deg); ');
|
589 |
-
*
|
590 |
-
* rule === 'transform: rotate(20deg); webkit-transform: rotate(20deg); moz-transform: rotate(20deg); o-transform: rotate(20deg); ms-transform: rotate(20deg);'
|
591 |
-
* ```
|
592 |
-
*
|
593 |
-
* Generating all possible prefixed version of a CSS value
|
594 |
-
* ```js
|
595 |
-
* rule = 'display:' + Modernizr._prefixes.join('flex; display:') + 'flex';
|
596 |
-
*
|
597 |
-
* rule === 'display:flex; display:-webkit-flex; display:-moz-flex; display:-o-flex; display:-ms-flex; display:flex'
|
598 |
-
* ```
|
599 |
-
*/
|
600 |
-
|
601 |
-
// we use ['',''] rather than an empty array in order to allow a pattern of .`join()`ing prefixes to test
|
602 |
-
// values in feature detects to continue to work
|
603 |
-
var prefixes = (ModernizrProto._config.usePrefixes ? ' -webkit- -moz- -o- -ms- '.split(' ') : ['','']);
|
604 |
-
|
605 |
-
// expose these for the plugin API. Look in the source for how to join() them against your input
|
606 |
-
ModernizrProto._prefixes = prefixes;
|
607 |
-
|
608 |
-
|
609 |
-
/*!
|
610 |
-
{
|
611 |
-
"name": "CSS Supports",
|
612 |
-
"property": "supports",
|
613 |
-
"caniuse": "css-featurequeries",
|
614 |
-
"tags": ["css"],
|
615 |
-
"builderAliases": ["css_supports"],
|
616 |
-
"notes": [{
|
617 |
-
"name": "W3 Spec",
|
618 |
-
"href": "http://dev.w3.org/csswg/css3-conditional/#at-supports"
|
619 |
-
},{
|
620 |
-
"name": "Related Github Issue",
|
621 |
-
"href": "github.com/Modernizr/Modernizr/issues/648"
|
622 |
-
},{
|
623 |
-
"name": "W3 Info",
|
624 |
-
"href": "http://dev.w3.org/csswg/css3-conditional/#the-csssupportsrule-interface"
|
625 |
-
}]
|
626 |
-
}
|
627 |
-
!*/
|
628 |
-
|
629 |
-
var newSyntax = 'CSS' in window && 'supports' in window.CSS;
|
630 |
-
var oldSyntax = 'supportsCSS' in window;
|
631 |
-
Modernizr.addTest('supports', newSyntax || oldSyntax);
|
632 |
-
|
633 |
-
|
634 |
-
/**
|
635 |
-
* createElement is a convenience wrapper around document.createElement. Since we
|
636 |
-
* use createElement all over the place, this allows for (slightly) smaller code
|
637 |
-
* as well as abstracting away issues with creating elements in contexts other than
|
638 |
-
* HTML documents (e.g. SVG documents).
|
639 |
-
*
|
640 |
-
* @access private
|
641 |
-
* @function createElement
|
642 |
-
* @returns {HTMLElement|SVGElement} An HTML or SVG element
|
643 |
-
*/
|
644 |
-
|
645 |
-
function createElement() {
|
646 |
-
if (typeof document.createElement !== 'function') {
|
647 |
-
// This is the case in IE7, where the type of createElement is "object".
|
648 |
-
// For this reason, we cannot call apply() as Object is not a Function.
|
649 |
-
return document.createElement(arguments[0]);
|
650 |
-
} else if (isSVG) {
|
651 |
-
return document.createElementNS.call(document, 'http://www.w3.org/2000/svg', arguments[0]);
|
652 |
-
} else {
|
653 |
-
return document.createElement.apply(document, arguments);
|
654 |
-
}
|
655 |
-
}
|
656 |
-
|
657 |
-
;
|
658 |
-
|
659 |
-
/**
|
660 |
-
* getBody returns the body of a document, or an element that can stand in for
|
661 |
-
* the body if a real body does not exist
|
662 |
-
*
|
663 |
-
* @access private
|
664 |
-
* @function getBody
|
665 |
-
* @returns {HTMLElement|SVGElement} Returns the real body of a document, or an
|
666 |
-
* artificially created element that stands in for the body
|
667 |
-
*/
|
668 |
-
|
669 |
-
function getBody() {
|
670 |
-
// After page load injecting a fake body doesn't work so check if body exists
|
671 |
-
var body = document.body;
|
672 |
-
|
673 |
-
if (!body) {
|
674 |
-
// Can't use the real body create a fake one.
|
675 |
-
body = createElement(isSVG ? 'svg' : 'body');
|
676 |
-
body.fake = true;
|
677 |
-
}
|
678 |
-
|
679 |
-
return body;
|
680 |
-
}
|
681 |
-
|
682 |
-
;
|
683 |
-
|
684 |
-
/**
|
685 |
-
* injectElementWithStyles injects an element with style element and some CSS rules
|
686 |
-
*
|
687 |
-
* @access private
|
688 |
-
* @function injectElementWithStyles
|
689 |
-
* @param {string} rule - String representing a css rule
|
690 |
-
* @param {function} callback - A function that is used to test the injected element
|
691 |
-
* @param {number} [nodes] - An integer representing the number of additional nodes you want injected
|
692 |
-
* @param {string[]} [testnames] - An array of strings that are used as ids for the additional nodes
|
693 |
-
* @returns {boolean}
|
694 |
-
*/
|
695 |
-
|
696 |
-
function injectElementWithStyles(rule, callback, nodes, testnames) {
|
697 |
-
var mod = 'modernizr';
|
698 |
-
var style;
|
699 |
-
var ret;
|
700 |
-
var node;
|
701 |
-
var docOverflow;
|
702 |
-
var div = createElement('div');
|
703 |
-
var body = getBody();
|
704 |
-
|
705 |
-
if (parseInt(nodes, 10)) {
|
706 |
-
// In order not to give false positives we create a node for each test
|
707 |
-
// This also allows the method to scale for unspecified uses
|
708 |
-
while (nodes--) {
|
709 |
-
node = createElement('div');
|
710 |
-
node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
|
711 |
-
div.appendChild(node);
|
712 |
-
}
|
713 |
-
}
|
714 |
-
|
715 |
-
style = createElement('style');
|
716 |
-
style.type = 'text/css';
|
717 |
-
style.id = 's' + mod;
|
718 |
-
|
719 |
-
// IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
|
720 |
-
// Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
|
721 |
-
(!body.fake ? div : body).appendChild(style);
|
722 |
-
body.appendChild(div);
|
723 |
-
|
724 |
-
if (style.styleSheet) {
|
725 |
-
style.styleSheet.cssText = rule;
|
726 |
-
} else {
|
727 |
-
style.appendChild(document.createTextNode(rule));
|
728 |
-
}
|
729 |
-
div.id = mod;
|
730 |
-
|
731 |
-
if (body.fake) {
|
732 |
-
//avoid crashing IE8, if background image is used
|
733 |
-
body.style.background = '';
|
734 |
-
//Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
|
735 |
-
body.style.overflow = 'hidden';
|
736 |
-
docOverflow = docElement.style.overflow;
|
737 |
-
docElement.style.overflow = 'hidden';
|
738 |
-
docElement.appendChild(body);
|
739 |
-
}
|
740 |
-
|
741 |
-
ret = callback(div, rule);
|
742 |
-
// If this is done after page load we don't want to remove the body so check if body exists
|
743 |
-
if (body.fake) {
|
744 |
-
body.parentNode.removeChild(body);
|
745 |
-
docElement.style.overflow = docOverflow;
|
746 |
-
// Trigger layout so kinetic scrolling isn't disabled in iOS6+
|
747 |
-
docElement.offsetHeight;
|
748 |
-
} else {
|
749 |
-
div.parentNode.removeChild(div);
|
750 |
-
}
|
751 |
-
|
752 |
-
return !!ret;
|
753 |
-
|
754 |
-
}
|
755 |
-
|
756 |
-
;
|
757 |
-
|
758 |
-
/**
|
759 |
-
* testStyles injects an element with style element and some CSS rules
|
760 |
-
*
|
761 |
-
* @memberof Modernizr
|
762 |
-
* @name Modernizr.testStyles
|
763 |
-
* @optionName Modernizr.testStyles()
|
764 |
-
* @optionProp testStyles
|
765 |
-
* @access public
|
766 |
-
* @function testStyles
|
767 |
-
* @param {string} rule - String representing a css rule
|
768 |
-
* @param {function} callback - A function that is used to test the injected element
|
769 |
-
* @param {number} [nodes] - An integer representing the number of additional nodes you want injected
|
770 |
-
* @param {string[]} [testnames] - An array of strings that are used as ids for the additional nodes
|
771 |
-
* @returns {boolean}
|
772 |
-
* @example
|
773 |
-
*
|
774 |
-
* `Modernizr.testStyles` takes a CSS rule and injects it onto the current page
|
775 |
-
* along with (possibly multiple) DOM elements. This lets you check for features
|
776 |
-
* that can not be detected by simply checking the [IDL](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Interface_development_guide/IDL_interface_rules).
|
777 |
-
*
|
778 |
-
* ```js
|
779 |
-
* Modernizr.testStyles('#modernizr { width: 9px; color: papayawhip; }', function(elem, rule) {
|
780 |
-
* // elem is the first DOM node in the page (by default #modernizr)
|
781 |
-
* // rule is the first argument you supplied - the CSS rule in string form
|
782 |
-
*
|
783 |
-
* addTest('widthworks', elem.style.width === '9px')
|
784 |
-
* });
|
785 |
-
* ```
|
786 |
-
*
|
787 |
-
* If your test requires multiple nodes, you can include a third argument
|
788 |
-
* indicating how many additional div elements to include on the page. The
|
789 |
-
* additional nodes are injected as children of the `elem` that is returned as
|
790 |
-
* the first argument to the callback.
|
791 |
-
*
|
792 |
-
* ```js
|
793 |
-
* Modernizr.testStyles('#modernizr {width: 1px}; #modernizr2 {width: 2px}', function(elem) {
|
794 |
-
* document.getElementById('modernizr').style.width === '1px'; // true
|
795 |
-
* document.getElementById('modernizr2').style.width === '2px'; // true
|
796 |
-
* elem.firstChild === document.getElementById('modernizr2'); // true
|
797 |
-
* }, 1);
|
798 |
-
* ```
|
799 |
-
*
|
800 |
-
* By default, all of the additional elements have an ID of `modernizr[n]`, where
|
801 |
-
* `n` is its index (e.g. the first additional, second overall is `#modernizr2`,
|
802 |
-
* the second additional is `#modernizr3`, etc.).
|
803 |
-
* If you want to have more meaningful IDs for your function, you can provide
|
804 |
-
* them as the fourth argument, as an array of strings
|
805 |
-
*
|
806 |
-
* ```js
|
807 |
-
* Modernizr.testStyles('#foo {width: 10px}; #bar {height: 20px}', function(elem) {
|
808 |
-
* elem.firstChild === document.getElementById('foo'); // true
|
809 |
-
* elem.lastChild === document.getElementById('bar'); // true
|
810 |
-
* }, 2, ['foo', 'bar']);
|
811 |
-
* ```
|
812 |
-
*
|
813 |
-
*/
|
814 |
-
|
815 |
-
var testStyles = ModernizrProto.testStyles = injectElementWithStyles;
|
816 |
-
|
817 |
-
/*!
|
818 |
-
{
|
819 |
-
"name": "Touch Events",
|
820 |
-
"property": "touchevents",
|
821 |
-
"caniuse" : "touch",
|
822 |
-
"tags": ["media", "attribute"],
|
823 |
-
"notes": [{
|
824 |
-
"name": "Touch Events spec",
|
825 |
-
"href": "https://www.w3.org/TR/2013/WD-touch-events-20130124/"
|
826 |
-
}],
|
827 |
-
"warnings": [
|
828 |
-
"Indicates if the browser supports the Touch Events spec, and does not necessarily reflect a touchscreen device"
|
829 |
-
],
|
830 |
-
"knownBugs": [
|
831 |
-
"False-positive on some configurations of Nokia N900",
|
832 |
-
"False-positive on some BlackBerry 6.0 builds – https://github.com/Modernizr/Modernizr/issues/372#issuecomment-3112695"
|
833 |
-
]
|
834 |
-
}
|
835 |
-
!*/
|
836 |
-
/* DOC
|
837 |
-
Indicates if the browser supports the W3C Touch Events API.
|
838 |
-
|
839 |
-
This *does not* necessarily reflect a touchscreen device:
|
840 |
-
|
841 |
-
* Older touchscreen devices only emulate mouse events
|
842 |
-
* Modern IE touch devices implement the Pointer Events API instead: use `Modernizr.pointerevents` to detect support for that
|
843 |
-
* Some browsers & OS setups may enable touch APIs when no touchscreen is connected
|
844 |
-
* Future browsers may implement other event models for touch interactions
|
845 |
-
|
846 |
-
See this article: [You Can't Detect A Touchscreen](http://www.stucox.com/blog/you-cant-detect-a-touchscreen/).
|
847 |
-
|
848 |
-
It's recommended to bind both mouse and touch/pointer events simultaneously – see [this HTML5 Rocks tutorial](http://www.html5rocks.com/en/mobile/touchandmouse/).
|
849 |
-
|
850 |
-
This test will also return `true` for Firefox 4 Multitouch support.
|
851 |
-
*/
|
852 |
-
|
853 |
-
// Chrome (desktop) used to lie about its support on this, but that has since been rectified: http://crbug.com/36415
|
854 |
-
Modernizr.addTest('touchevents', function() {
|
855 |
-
var bool;
|
856 |
-
if (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
|
857 |
-
bool = true;
|
858 |
-
} else {
|
859 |
-
// include the 'heartz' as a way to have a non matching MQ to help terminate the join
|
860 |
-
// https://git.io/vznFH
|
861 |
-
var query = ['@media (', prefixes.join('touch-enabled),('), 'heartz', ')', '{#modernizr{top:9px;position:absolute}}'].join('');
|
862 |
-
testStyles(query, function(node) {
|
863 |
-
bool = node.offsetTop === 9;
|
864 |
-
});
|
865 |
-
}
|
866 |
-
return bool;
|
867 |
-
});
|
868 |
-
|
869 |
-
|
870 |
-
/**
|
871 |
-
* If the browsers follow the spec, then they would expose vendor-specific style as:
|
872 |
-
* elem.style.WebkitBorderRadius
|
873 |
-
* instead of something like the following, which would be technically incorrect:
|
874 |
-
* elem.style.webkitBorderRadius
|
875 |
-
|
876 |
-
* Webkit ghosts their properties in lowercase but Opera & Moz do not.
|
877 |
-
* Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+
|
878 |
-
* erik.eae.net/archives/2008/03/10/21.48.10/
|
879 |
-
|
880 |
-
* More here: github.com/Modernizr/Modernizr/issues/issue/21
|
881 |
-
*
|
882 |
-
* @access private
|
883 |
-
* @returns {string} The string representing the vendor-specific style properties
|
884 |
-
*/
|
885 |
-
|
886 |
-
var omPrefixes = 'Moz O ms Webkit';
|
887 |
-
|
888 |
-
|
889 |
-
var cssomPrefixes = (ModernizrProto._config.usePrefixes ? omPrefixes.split(' ') : []);
|
890 |
-
ModernizrProto._cssomPrefixes = cssomPrefixes;
|
891 |
-
|
892 |
-
|
893 |
-
/**
|
894 |
-
* List of JavaScript DOM values used for tests
|
895 |
-
*
|
896 |
-
* @memberof Modernizr
|
897 |
-
* @name Modernizr._domPrefixes
|
898 |
-
* @optionName Modernizr._domPrefixes
|
899 |
-
* @optionProp domPrefixes
|
900 |
-
* @access public
|
901 |
-
* @example
|
902 |
-
*
|
903 |
-
* Modernizr._domPrefixes is exactly the same as [_prefixes](#modernizr-_prefixes), but rather
|
904 |
-
* than kebab-case properties, all properties are their Capitalized variant
|
905 |
-
*
|
906 |
-
* ```js
|
907 |
-
* Modernizr._domPrefixes === [ "Moz", "O", "ms", "Webkit" ];
|
908 |
-
* ```
|
909 |
-
*/
|
910 |
-
|
911 |
-
var domPrefixes = (ModernizrProto._config.usePrefixes ? omPrefixes.toLowerCase().split(' ') : []);
|
912 |
-
ModernizrProto._domPrefixes = domPrefixes;
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
/**
|
917 |
-
* contains checks to see if a string contains another string
|
918 |
-
*
|
919 |
-
* @access private
|
920 |
-
* @function contains
|
921 |
-
* @param {string} str - The string we want to check for substrings
|
922 |
-
* @param {string} substr - The substring we want to search the first string for
|
923 |
-
* @returns {boolean}
|
924 |
-
*/
|
925 |
-
|
926 |
-
function contains(str, substr) {
|
927 |
-
return !!~('' + str).indexOf(substr);
|
928 |
-
}
|
929 |
-
|
930 |
-
;
|
931 |
-
|
932 |
-
/**
|
933 |
-
* cssToDOM takes a kebab-case string and converts it to camelCase
|
934 |
-
* e.g. box-sizing -> boxSizing
|
935 |
-
*
|
936 |
-
* @access private
|
937 |
-
* @function cssToDOM
|
938 |
-
* @param {string} name - String name of kebab-case prop we want to convert
|
939 |
-
* @returns {string} The camelCase version of the supplied name
|
940 |
-
*/
|
941 |
-
|
942 |
-
function cssToDOM(name) {
|
943 |
-
return name.replace(/([a-z])-([a-z])/g, function(str, m1, m2) {
|
944 |
-
return m1 + m2.toUpperCase();
|
945 |
-
}).replace(/^-/, '');
|
946 |
-
}
|
947 |
-
;
|
948 |
-
|
949 |
-
/**
|
950 |
-
* fnBind is a super small [bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) polyfill.
|
951 |
-
*
|
952 |
-
* @access private
|
953 |
-
* @function fnBind
|
954 |
-
* @param {function} fn - a function you want to change `this` reference to
|
955 |
-
* @param {object} that - the `this` you want to call the function with
|
956 |
-
* @returns {function} The wrapped version of the supplied function
|
957 |
-
*/
|
958 |
-
|
959 |
-
function fnBind(fn, that) {
|
960 |
-
return function() {
|
961 |
-
return fn.apply(that, arguments);
|
962 |
-
};
|
963 |
-
}
|
964 |
-
|
965 |
-
;
|
966 |
-
|
967 |
-
/**
|
968 |
-
* testDOMProps is a generic DOM property test; if a browser supports
|
969 |
-
* a certain property, it won't return undefined for it.
|
970 |
-
*
|
971 |
-
* @access private
|
972 |
-
* @function testDOMProps
|
973 |
-
* @param {array.<string>} props - An array of properties to test for
|
974 |
-
* @param {object} obj - An object or Element you want to use to test the parameters again
|
975 |
-
* @param {boolean|object} elem - An Element to bind the property lookup again. Use `false` to prevent the check
|
976 |
-
*/
|
977 |
-
function testDOMProps(props, obj, elem) {
|
978 |
-
var item;
|
979 |
-
|
980 |
-
for (var i in props) {
|
981 |
-
if (props[i] in obj) {
|
982 |
-
|
983 |
-
// return the property name as a string
|
984 |
-
if (elem === false) {
|
985 |
-
return props[i];
|
986 |
-
}
|
987 |
-
|
988 |
-
item = obj[props[i]];
|
989 |
-
|
990 |
-
// let's bind a function
|
991 |
-
if (is(item, 'function')) {
|
992 |
-
// bind to obj unless overriden
|
993 |
-
return fnBind(item, elem || obj);
|
994 |
-
}
|
995 |
-
|
996 |
-
// return the unbound function or obj or value
|
997 |
-
return item;
|
998 |
-
}
|
999 |
-
}
|
1000 |
-
return false;
|
1001 |
-
}
|
1002 |
-
|
1003 |
-
;
|
1004 |
-
|
1005 |
-
/**
|
1006 |
-
* Create our "modernizr" element that we do most feature tests on.
|
1007 |
-
*
|
1008 |
-
* @access private
|
1009 |
-
*/
|
1010 |
-
|
1011 |
-
var modElem = {
|
1012 |
-
elem: createElement('modernizr')
|
1013 |
-
};
|
1014 |
-
|
1015 |
-
// Clean up this element
|
1016 |
-
Modernizr._q.push(function() {
|
1017 |
-
delete modElem.elem;
|
1018 |
-
});
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
var mStyle = {
|
1023 |
-
style: modElem.elem.style
|
1024 |
-
};
|
1025 |
-
|
1026 |
-
// kill ref for gc, must happen before mod.elem is removed, so we unshift on to
|
1027 |
-
// the front of the queue.
|
1028 |
-
Modernizr._q.unshift(function() {
|
1029 |
-
delete mStyle.style;
|
1030 |
-
});
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
/**
|
1035 |
-
* domToCSS takes a camelCase string and converts it to kebab-case
|
1036 |
-
* e.g. boxSizing -> box-sizing
|
1037 |
-
*
|
1038 |
-
* @access private
|
1039 |
-
* @function domToCSS
|
1040 |
-
* @param {string} name - String name of camelCase prop we want to convert
|
1041 |
-
* @returns {string} The kebab-case version of the supplied name
|
1042 |
-
*/
|
1043 |
-
|
1044 |
-
function domToCSS(name) {
|
1045 |
-
return name.replace(/([A-Z])/g, function(str, m1) {
|
1046 |
-
return '-' + m1.toLowerCase();
|
1047 |
-
}).replace(/^ms-/, '-ms-');
|
1048 |
-
}
|
1049 |
-
;
|
1050 |
-
|
1051 |
-
/**
|
1052 |
-
* nativeTestProps allows for us to use native feature detection functionality if available.
|
1053 |
-
* some prefixed form, or false, in the case of an unsupported rule
|
1054 |
-
*
|
1055 |
-
* @access private
|
1056 |
-
* @function nativeTestProps
|
1057 |
-
* @param {array} props - An array of property names
|
1058 |
-
* @param {string} value - A string representing the value we want to check via @supports
|
1059 |
-
* @returns {boolean|undefined} A boolean when @supports exists, undefined otherwise
|
1060 |
-
*/
|
1061 |
-
|
1062 |
-
// Accepts a list of property names and a single value
|
1063 |
-
// Returns `undefined` if native detection not available
|
1064 |
-
function nativeTestProps(props, value) {
|
1065 |
-
var i = props.length;
|
1066 |
-
// Start with the JS API: http://www.w3.org/TR/css3-conditional/#the-css-interface
|
1067 |
-
if ('CSS' in window && 'supports' in window.CSS) {
|
1068 |
-
// Try every prefixed variant of the property
|
1069 |
-
while (i--) {
|
1070 |
-
if (window.CSS.supports(domToCSS(props[i]), value)) {
|
1071 |
-
return true;
|
1072 |
-
}
|
1073 |
-
}
|
1074 |
-
return false;
|
1075 |
-
}
|
1076 |
-
// Otherwise fall back to at-rule (for Opera 12.x)
|
1077 |
-
else if ('CSSSupportsRule' in window) {
|
1078 |
-
// Build a condition string for every prefixed variant
|
1079 |
-
var conditionText = [];
|
1080 |
-
while (i--) {
|
1081 |
-
conditionText.push('(' + domToCSS(props[i]) + ':' + value + ')');
|
1082 |
-
}
|
1083 |
-
conditionText = conditionText.join(' or ');
|
1084 |
-
return injectElementWithStyles('@supports (' + conditionText + ') { #modernizr { position: absolute; } }', function(node) {
|
1085 |
-
return getComputedStyle(node, null).position == 'absolute';
|
1086 |
-
});
|
1087 |
-
}
|
1088 |
-
return undefined;
|
1089 |
-
}
|
1090 |
-
;
|
1091 |
-
|
1092 |
-
// testProps is a generic CSS / DOM property test.
|
1093 |
-
|
1094 |
-
// In testing support for a given CSS property, it's legit to test:
|
1095 |
-
// `elem.style[styleName] !== undefined`
|
1096 |
-
// If the property is supported it will return an empty string,
|
1097 |
-
// if unsupported it will return undefined.
|
1098 |
-
|
1099 |
-
// We'll take advantage of this quick test and skip setting a style
|
1100 |
-
// on our modernizr element, but instead just testing undefined vs
|
1101 |
-
// empty string.
|
1102 |
-
|
1103 |
-
// Property names can be provided in either camelCase or kebab-case.
|
1104 |
-
|
1105 |
-
function testProps(props, prefixed, value, skipValueTest) {
|
1106 |
-
skipValueTest = is(skipValueTest, 'undefined') ? false : skipValueTest;
|
1107 |
-
|
1108 |
-
// Try native detect first
|
1109 |
-
if (!is(value, 'undefined')) {
|
1110 |
-
var result = nativeTestProps(props, value);
|
1111 |
-
if (!is(result, 'undefined')) {
|
1112 |
-
return result;
|
1113 |
-
}
|
1114 |
-
}
|
1115 |
-
|
1116 |
-
// Otherwise do it properly
|
1117 |
-
var afterInit, i, propsLength, prop, before;
|
1118 |
-
|
1119 |
-
// If we don't have a style element, that means we're running async or after
|
1120 |
-
// the core tests, so we'll need to create our own elements to use
|
1121 |
-
|
1122 |
-
// inside of an SVG element, in certain browsers, the `style` element is only
|
1123 |
-
// defined for valid tags. Therefore, if `modernizr` does not have one, we
|
1124 |
-
// fall back to a less used element and hope for the best.
|
1125 |
-
var elems = ['modernizr', 'tspan'];
|
1126 |
-
while (!mStyle.style) {
|
1127 |
-
afterInit = true;
|
1128 |
-
mStyle.modElem = createElement(elems.shift());
|
1129 |
-
mStyle.style = mStyle.modElem.style;
|
1130 |
-
}
|
1131 |
-
|
1132 |
-
// Delete the objects if we created them.
|
1133 |
-
function cleanElems() {
|
1134 |
-
if (afterInit) {
|
1135 |
-
delete mStyle.style;
|
1136 |
-
delete mStyle.modElem;
|
1137 |
-
}
|
1138 |
-
}
|
1139 |
-
|
1140 |
-
propsLength = props.length;
|
1141 |
-
for (i = 0; i < propsLength; i++) {
|
1142 |
-
prop = props[i];
|
1143 |
-
before = mStyle.style[prop];
|
1144 |
-
|
1145 |
-
if (contains(prop, '-')) {
|
1146 |
-
prop = cssToDOM(prop);
|
1147 |
-
}
|
1148 |
-
|
1149 |
-
if (mStyle.style[prop] !== undefined) {
|
1150 |
-
|
1151 |
-
// If value to test has been passed in, do a set-and-check test.
|
1152 |
-
// 0 (integer) is a valid property value, so check that `value` isn't
|
1153 |
-
// undefined, rather than just checking it's truthy.
|
1154 |
-
if (!skipValueTest && !is(value, 'undefined')) {
|
1155 |
-
|
1156 |
-
// Needs a try catch block because of old IE. This is slow, but will
|
1157 |
-
// be avoided in most cases because `skipValueTest` will be used.
|
1158 |
-
try {
|
1159 |
-
mStyle.style[prop] = value;
|
1160 |
-
} catch (e) {}
|
1161 |
-
|
1162 |
-
// If the property value has changed, we assume the value used is
|
1163 |
-
// supported. If `value` is empty string, it'll fail here (because
|
1164 |
-
// it hasn't changed), which matches how browsers have implemented
|
1165 |
-
// CSS.supports()
|
1166 |
-
if (mStyle.style[prop] != before) {
|
1167 |
-
cleanElems();
|
1168 |
-
return prefixed == 'pfx' ? prop : true;
|
1169 |
-
}
|
1170 |
-
}
|
1171 |
-
// Otherwise just return true, or the property name if this is a
|
1172 |
-
// `prefixed()` call
|
1173 |
-
else {
|
1174 |
-
cleanElems();
|
1175 |
-
return prefixed == 'pfx' ? prop : true;
|
1176 |
-
}
|
1177 |
-
}
|
1178 |
-
}
|
1179 |
-
cleanElems();
|
1180 |
-
return false;
|
1181 |
-
}
|
1182 |
-
|
1183 |
-
;
|
1184 |
-
|
1185 |
-
/**
|
1186 |
-
* testPropsAll tests a list of DOM properties we want to check against.
|
1187 |
-
* We specify literally ALL possible (known and/or likely) properties on
|
1188 |
-
* the element including the non-vendor prefixed one, for forward-
|
1189 |
-
* compatibility.
|
1190 |
-
*
|
1191 |
-
* @access private
|
1192 |
-
* @function testPropsAll
|
1193 |
-
* @param {string} prop - A string of the property to test for
|
1194 |
-
* @param {string|object} [prefixed] - An object to check the prefixed properties on. Use a string to skip
|
1195 |
-
* @param {HTMLElement|SVGElement} [elem] - An element used to test the property and value against
|
1196 |
-
* @param {string} [value] - A string of a css value
|
1197 |
-
* @param {boolean} [skipValueTest] - An boolean representing if you want to test if value sticks when set
|
1198 |
-
*/
|
1199 |
-
function testPropsAll(prop, prefixed, elem, value, skipValueTest) {
|
1200 |
-
|
1201 |
-
var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
|
1202 |
-
props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
|
1203 |
-
|
1204 |
-
// did they call .prefixed('boxSizing') or are we just testing a prop?
|
1205 |
-
if (is(prefixed, 'string') || is(prefixed, 'undefined')) {
|
1206 |
-
return testProps(props, prefixed, value, skipValueTest);
|
1207 |
-
|
1208 |
-
// otherwise, they called .prefixed('requestAnimationFrame', window[, elem])
|
1209 |
-
} else {
|
1210 |
-
props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
|
1211 |
-
return testDOMProps(props, prefixed, elem);
|
1212 |
-
}
|
1213 |
-
}
|
1214 |
-
|
1215 |
-
// Modernizr.testAllProps() investigates whether a given style property,
|
1216 |
-
// or any of its vendor-prefixed variants, is recognized
|
1217 |
-
//
|
1218 |
-
// Note that the property names must be provided in the camelCase variant.
|
1219 |
-
// Modernizr.testAllProps('boxSizing')
|
1220 |
-
ModernizrProto.testAllProps = testPropsAll;
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
/**
|
1225 |
-
* testAllProps determines whether a given CSS property is supported in the browser
|
1226 |
-
*
|
1227 |
-
* @memberof Modernizr
|
1228 |
-
* @name Modernizr.testAllProps
|
1229 |
-
* @optionName Modernizr.testAllProps()
|
1230 |
-
* @optionProp testAllProps
|
1231 |
-
* @access public
|
1232 |
-
* @function testAllProps
|
1233 |
-
* @param {string} prop - String naming the property to test (either camelCase or kebab-case)
|
1234 |
-
* @param {string} [value] - String of the value to test
|
1235 |
-
* @param {boolean} [skipValueTest=false] - Whether to skip testing that the value is supported when using non-native detection
|
1236 |
-
* @example
|
1237 |
-
*
|
1238 |
-
* testAllProps determines whether a given CSS property, in some prefixed form,
|
1239 |
-
* is supported by the browser.
|
1240 |
-
*
|
1241 |
-
* ```js
|
1242 |
-
* testAllProps('boxSizing') // true
|
1243 |
-
* ```
|
1244 |
-
*
|
1245 |
-
* It can optionally be given a CSS value in string form to test if a property
|
1246 |
-
* value is valid
|
1247 |
-
*
|
1248 |
-
* ```js
|
1249 |
-
* testAllProps('display', 'block') // true
|
1250 |
-
* testAllProps('display', 'penguin') // false
|
1251 |
-
* ```
|
1252 |
-
*
|
1253 |
-
* A boolean can be passed as a third parameter to skip the value check when
|
1254 |
-
* native detection (@supports) isn't available.
|
1255 |
-
*
|
1256 |
-
* ```js
|
1257 |
-
* testAllProps('shapeOutside', 'content-box', true);
|
1258 |
-
* ```
|
1259 |
-
*/
|
1260 |
-
|
1261 |
-
function testAllProps(prop, value, skipValueTest) {
|
1262 |
-
return testPropsAll(prop, undefined, undefined, value, skipValueTest);
|
1263 |
-
}
|
1264 |
-
ModernizrProto.testAllProps = testAllProps;
|
1265 |
-
|
1266 |
-
/*!
|
1267 |
-
{
|
1268 |
-
"name": "Flexbox",
|
1269 |
-
"property": "flexbox",
|
1270 |
-
"caniuse": "flexbox",
|
1271 |
-
"tags": ["css"],
|
1272 |
-
"notes": [{
|
1273 |
-
"name": "The _new_ flexbox",
|
1274 |
-
"href": "http://dev.w3.org/csswg/css3-flexbox"
|
1275 |
-
}],
|
1276 |
-
"warnings": [
|
1277 |
-
"A `true` result for this detect does not imply that the `flex-wrap` property is supported; see the `flexwrap` detect."
|
1278 |
-
]
|
1279 |
-
}
|
1280 |
-
!*/
|
1281 |
-
/* DOC
|
1282 |
-
Detects support for the Flexible Box Layout model, a.k.a. Flexbox, which allows easy manipulation of layout order and sizing within a container.
|
1283 |
-
*/
|
1284 |
-
|
1285 |
-
Modernizr.addTest('flexbox', testAllProps('flexBasis', '1px', true));
|
1286 |
-
|
1287 |
-
/*!
|
1288 |
-
{
|
1289 |
-
"name": "Flexbox (legacy)",
|
1290 |
-
"property": "flexboxlegacy",
|
1291 |
-
"tags": ["css"],
|
1292 |
-
"polyfills": ["flexie"],
|
1293 |
-
"notes": [{
|
1294 |
-
"name": "The _old_ flexbox",
|
1295 |
-
"href": "https://www.w3.org/TR/2009/WD-css3-flexbox-20090723/"
|
1296 |
-
}]
|
1297 |
-
}
|
1298 |
-
!*/
|
1299 |
-
|
1300 |
-
Modernizr.addTest('flexboxlegacy', testAllProps('boxDirection', 'reverse', true));
|
1301 |
-
|
1302 |
-
/*!
|
1303 |
-
{
|
1304 |
-
"name": "CSS Transforms",
|
1305 |
-
"property": "csstransforms",
|
1306 |
-
"caniuse": "transforms2d",
|
1307 |
-
"tags": ["css"]
|
1308 |
-
}
|
1309 |
-
!*/
|
1310 |
-
|
1311 |
-
Modernizr.addTest('csstransforms', function() {
|
1312 |
-
// Android < 3.0 is buggy, so we sniff and blacklist
|
1313 |
-
// http://git.io/hHzL7w
|
1314 |
-
return navigator.userAgent.indexOf('Android 2.') === -1 &&
|
1315 |
-
testAllProps('transform', 'scale(1)', true);
|
1316 |
-
});
|
1317 |
-
|
1318 |
-
/*!
|
1319 |
-
{
|
1320 |
-
"name": "CSS Transforms 3D",
|
1321 |
-
"property": "csstransforms3d",
|
1322 |
-
"caniuse": "transforms3d",
|
1323 |
-
"tags": ["css"],
|
1324 |
-
"warnings": [
|
1325 |
-
"Chrome may occassionally fail this test on some systems; more info: https://code.google.com/p/chromium/issues/detail?id=129004"
|
1326 |
-
]
|
1327 |
-
}
|
1328 |
-
!*/
|
1329 |
-
|
1330 |
-
Modernizr.addTest('csstransforms3d', function() {
|
1331 |
-
var ret = !!testAllProps('perspective', '1px', true);
|
1332 |
-
var usePrefix = Modernizr._config.usePrefixes;
|
1333 |
-
|
1334 |
-
// Webkit's 3D transforms are passed off to the browser's own graphics renderer.
|
1335 |
-
// It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
|
1336 |
-
// some conditions. As a result, Webkit typically recognizes the syntax but
|
1337 |
-
// will sometimes throw a false positive, thus we must do a more thorough check:
|
1338 |
-
if (ret && (!usePrefix || 'webkitPerspective' in docElement.style)) {
|
1339 |
-
var mq;
|
1340 |
-
var defaultStyle = '#modernizr{width:0;height:0}';
|
1341 |
-
// Use CSS Conditional Rules if available
|
1342 |
-
if (Modernizr.supports) {
|
1343 |
-
mq = '@supports (perspective: 1px)';
|
1344 |
-
} else {
|
1345 |
-
// Otherwise, Webkit allows this media query to succeed only if the feature is enabled.
|
1346 |
-
// `@media (transform-3d),(-webkit-transform-3d){ ... }`
|
1347 |
-
mq = '@media (transform-3d)';
|
1348 |
-
if (usePrefix) {
|
1349 |
-
mq += ',(-webkit-transform-3d)';
|
1350 |
-
}
|
1351 |
-
}
|
1352 |
-
|
1353 |
-
mq += '{#modernizr{width:7px;height:18px;margin:0;padding:0;border:0}}';
|
1354 |
-
|
1355 |
-
testStyles(defaultStyle + mq, function(elem) {
|
1356 |
-
ret = elem.offsetWidth === 7 && elem.offsetHeight === 18;
|
1357 |
-
});
|
1358 |
-
}
|
1359 |
-
|
1360 |
-
return ret;
|
1361 |
-
});
|
1362 |
-
|
1363 |
-
|
1364 |
-
// Run each test
|
1365 |
-
testRunner();
|
1366 |
-
|
1367 |
-
// Remove the "no-js" class if it exists
|
1368 |
-
setClasses(classes);
|
1369 |
-
|
1370 |
-
delete ModernizrProto.addTest;
|
1371 |
-
delete ModernizrProto.addAsyncTest;
|
1372 |
-
|
1373 |
-
// Run the things that are supposed to run after the tests
|
1374 |
-
for (var i = 0; i < Modernizr._q.length; i++) {
|
1375 |
-
Modernizr._q[i]();
|
1376 |
-
}
|
1377 |
-
|
1378 |
-
// Leak Modernizr namespace
|
1379 |
-
window.laeModernizr = Modernizr;
|
1380 |
-
|
1381 |
-
|
1382 |
-
;
|
1383 |
-
|
1384 |
-
})(window, document);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/modernizr-custom.min.js
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
(function(window,document,undefined){var classes=[];var tests=[];var ModernizrProto={_version:"3.3.1",_config:{classPrefix:"lae-",enableClasses:true,enableJSClass:true,usePrefixes:true},_q:[],on:function(test,cb){var self=this;setTimeout(function(){cb(self[test])},0)},addTest:function(name,fn,options){tests.push({name:name,fn:fn,options:options})},addAsyncTest:function(fn){tests.push({name:null,fn:fn})}};var Modernizr=function(){};Modernizr.prototype=ModernizrProto;Modernizr=new Modernizr;function is(obj,type){return typeof obj===type}function testRunner(){var featureNames;var feature;var aliasIdx;var result;var nameIdx;var featureName;var featureNameSplit;for(var featureIdx in tests){if(tests.hasOwnProperty(featureIdx)){featureNames=[];feature=tests[featureIdx];if(feature.name){featureNames.push(feature.name.toLowerCase());if(feature.options&&feature.options.aliases&&feature.options.aliases.length){for(aliasIdx=0;aliasIdx<feature.options.aliases.length;aliasIdx++){featureNames.push(feature.options.aliases[aliasIdx].toLowerCase())}}}result=is(feature.fn,"function")?feature.fn():feature.fn;for(nameIdx=0;nameIdx<featureNames.length;nameIdx++){featureName=featureNames[nameIdx];featureNameSplit=featureName.split(".");if(featureNameSplit.length===1){Modernizr[featureNameSplit[0]]=result}else{if(Modernizr[featureNameSplit[0]]&&!(Modernizr[featureNameSplit[0]]instanceof Boolean)){Modernizr[featureNameSplit[0]]=new Boolean(Modernizr[featureNameSplit[0]])}Modernizr[featureNameSplit[0]][featureNameSplit[1]]=result}classes.push((result?"":"no-")+featureNameSplit.join("-"))}}}}var docElement=document.documentElement;var isSVG=docElement.nodeName.toLowerCase()==="svg";function setClasses(classes){var className=docElement.className;var classPrefix=Modernizr._config.classPrefix||"";if(isSVG){className=className.baseVal}if(Modernizr._config.enableJSClass){var reJS=new RegExp("(^|\\s)"+classPrefix+"no-js(\\s|$)");className=className.replace(reJS,"$1"+classPrefix+"js$2")}if(Modernizr._config.enableClasses){className+=" "+classPrefix+classes.join(" "+classPrefix);isSVG?docElement.className.baseVal=className:docElement.className=className}}var html5;if(!isSVG){(function(window,document){var version="3.7.3";var options=window.html5||{};var reSkip=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;var saveClones=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;var supportsHtml5Styles;var expando="_html5shiv";var expanID=0;var expandoData={};var supportsUnknownElements;(function(){try{var a=document.createElement("a");a.innerHTML="<xyz></xyz>";supportsHtml5Styles="hidden"in a;supportsUnknownElements=a.childNodes.length==1||function(){document.createElement("a");var frag=document.createDocumentFragment();return typeof frag.cloneNode=="undefined"||typeof frag.createDocumentFragment=="undefined"||typeof frag.createElement=="undefined"}()}catch(e){supportsHtml5Styles=true;supportsUnknownElements=true}})();function addStyleSheet(ownerDocument,cssText){var p=ownerDocument.createElement("p"),parent=ownerDocument.getElementsByTagName("head")[0]||ownerDocument.documentElement;p.innerHTML="x<style>"+cssText+"</style>";return parent.insertBefore(p.lastChild,parent.firstChild)}function getElements(){var elements=html5.elements;return typeof elements=="string"?elements.split(" "):elements}function addElements(newElements,ownerDocument){var elements=html5.elements;if(typeof elements!="string"){elements=elements.join(" ")}if(typeof newElements!="string"){newElements=newElements.join(" ")}html5.elements=elements+" "+newElements;shivDocument(ownerDocument)}function getExpandoData(ownerDocument){var data=expandoData[ownerDocument[expando]];if(!data){data={};expanID++;ownerDocument[expando]=expanID;expandoData[expanID]=data}return data}function createElement(nodeName,ownerDocument,data){if(!ownerDocument){ownerDocument=document}if(supportsUnknownElements){return ownerDocument.createElement(nodeName)}if(!data){data=getExpandoData(ownerDocument)}var node;if(data.cache[nodeName]){node=data.cache[nodeName].cloneNode()}else if(saveClones.test(nodeName)){node=(data.cache[nodeName]=data.createElem(nodeName)).cloneNode()}else{node=data.createElem(nodeName)}return node.canHaveChildren&&!reSkip.test(nodeName)&&!node.tagUrn?data.frag.appendChild(node):node}function createDocumentFragment(ownerDocument,data){if(!ownerDocument){ownerDocument=document}if(supportsUnknownElements){return ownerDocument.createDocumentFragment()}data=data||getExpandoData(ownerDocument);var clone=data.frag.cloneNode(),i=0,elems=getElements(),l=elems.length;for(;i<l;i++){clone.createElement(elems[i])}return clone}function shivMethods(ownerDocument,data){if(!data.cache){data.cache={};data.createElem=ownerDocument.createElement;data.createFrag=ownerDocument.createDocumentFragment;data.frag=data.createFrag()}ownerDocument.createElement=function(nodeName){if(!html5.shivMethods){return data.createElem(nodeName)}return createElement(nodeName,ownerDocument,data)};ownerDocument.createDocumentFragment=Function("h,f","return function(){"+"var n=f.cloneNode(),c=n.createElement;"+"h.shivMethods&&("+getElements().join().replace(/[\w\-:]+/g,function(nodeName){data.createElem(nodeName);data.frag.createElement(nodeName);return'c("'+nodeName+'")'})+");return n}")(html5,data.frag)}function shivDocument(ownerDocument){if(!ownerDocument){ownerDocument=document}var data=getExpandoData(ownerDocument);if(html5.shivCSS&&!supportsHtml5Styles&&!data.hasCSS){data.hasCSS=!!addStyleSheet(ownerDocument,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}"+"mark{background:#FF0;color:#000}"+"template{display:none}")}if(!supportsUnknownElements){shivMethods(ownerDocument,data)}return ownerDocument}var html5={elements:options.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:version,shivCSS:options.shivCSS!==false,supportsUnknownElements:supportsUnknownElements,shivMethods:options.shivMethods!==false,type:"default",shivDocument:shivDocument,createElement:createElement,createDocumentFragment:createDocumentFragment,addElements:addElements};window.html5=html5;shivDocument(document);if(typeof module=="object"&&module.exports){module.exports=html5}})(typeof window!=="undefined"?window:this,document)}var prefixes=ModernizrProto._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):["",""];ModernizrProto._prefixes=prefixes;var newSyntax="CSS"in window&&"supports"in window.CSS;var oldSyntax="supportsCSS"in window;Modernizr.addTest("supports",newSyntax||oldSyntax);function createElement(){if(typeof document.createElement!=="function"){return document.createElement(arguments[0])}else if(isSVG){return document.createElementNS.call(document,"http://www.w3.org/2000/svg",arguments[0])}else{return document.createElement.apply(document,arguments)}}function getBody(){var body=document.body;if(!body){body=createElement(isSVG?"svg":"body");body.fake=true}return body}function injectElementWithStyles(rule,callback,nodes,testnames){var mod="modernizr";var style;var ret;var node;var docOverflow;var div=createElement("div");var body=getBody();if(parseInt(nodes,10)){while(nodes--){node=createElement("div");node.id=testnames?testnames[nodes]:mod+(nodes+1);div.appendChild(node)}}style=createElement("style");style.type="text/css";style.id="s"+mod;(!body.fake?div:body).appendChild(style);body.appendChild(div);if(style.styleSheet){style.styleSheet.cssText=rule}else{style.appendChild(document.createTextNode(rule))}div.id=mod;if(body.fake){body.style.background="";body.style.overflow="hidden";docOverflow=docElement.style.overflow;docElement.style.overflow="hidden";docElement.appendChild(body)}ret=callback(div,rule);if(body.fake){body.parentNode.removeChild(body);docElement.style.overflow=docOverflow;docElement.offsetHeight}else{div.parentNode.removeChild(div)}return!!ret}var testStyles=ModernizrProto.testStyles=injectElementWithStyles;Modernizr.addTest("touchevents",function(){var bool;if("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch){bool=true}else{var query=["@media (",prefixes.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");testStyles(query,function(node){bool=node.offsetTop===9})}return bool});var omPrefixes="Moz O ms Webkit";var cssomPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.split(" "):[];ModernizrProto._cssomPrefixes=cssomPrefixes;var domPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.toLowerCase().split(" "):[];ModernizrProto._domPrefixes=domPrefixes;function contains(str,substr){return!!~(""+str).indexOf(substr)}function cssToDOM(name){return name.replace(/([a-z])-([a-z])/g,function(str,m1,m2){return m1+m2.toUpperCase()}).replace(/^-/,"")}function fnBind(fn,that){return function(){return fn.apply(that,arguments)}}function testDOMProps(props,obj,elem){var item;for(var i in props){if(props[i]in obj){if(elem===false){return props[i]}item=obj[props[i]];if(is(item,"function")){return fnBind(item,elem||obj)}return item}}return false}var modElem={elem:createElement("modernizr")};Modernizr._q.push(function(){delete modElem.elem});var mStyle={style:modElem.elem.style};Modernizr._q.unshift(function(){delete mStyle.style});function domToCSS(name){return name.replace(/([A-Z])/g,function(str,m1){return"-"+m1.toLowerCase()}).replace(/^ms-/,"-ms-")}function nativeTestProps(props,value){var i=props.length;if("CSS"in window&&"supports"in window.CSS){while(i--){if(window.CSS.supports(domToCSS(props[i]),value)){return true}}return false}else if("CSSSupportsRule"in window){var conditionText=[];while(i--){conditionText.push("("+domToCSS(props[i])+":"+value+")")}conditionText=conditionText.join(" or ");return injectElementWithStyles("@supports ("+conditionText+") { #modernizr { position: absolute; } }",function(node){return getComputedStyle(node,null).position=="absolute"})}return undefined}function testProps(props,prefixed,value,skipValueTest){skipValueTest=is(skipValueTest,"undefined")?false:skipValueTest;if(!is(value,"undefined")){var result=nativeTestProps(props,value);if(!is(result,"undefined")){return result}}var afterInit,i,propsLength,prop,before;var elems=["modernizr","tspan"];while(!mStyle.style){afterInit=true;mStyle.modElem=createElement(elems.shift());mStyle.style=mStyle.modElem.style}function cleanElems(){if(afterInit){delete mStyle.style;delete mStyle.modElem}}propsLength=props.length;for(i=0;i<propsLength;i++){prop=props[i];before=mStyle.style[prop];if(contains(prop,"-")){prop=cssToDOM(prop)}if(mStyle.style[prop]!==undefined){if(!skipValueTest&&!is(value,"undefined")){try{mStyle.style[prop]=value}catch(e){}if(mStyle.style[prop]!=before){cleanElems();return prefixed=="pfx"?prop:true}}else{cleanElems();return prefixed=="pfx"?prop:true}}}cleanElems();return false}function testPropsAll(prop,prefixed,elem,value,skipValueTest){var ucProp=prop.charAt(0).toUpperCase()+prop.slice(1),props=(prop+" "+cssomPrefixes.join(ucProp+" ")+ucProp).split(" ");if(is(prefixed,"string")||is(prefixed,"undefined")){return testProps(props,prefixed,value,skipValueTest)}else{props=(prop+" "+domPrefixes.join(ucProp+" ")+ucProp).split(" ");return testDOMProps(props,prefixed,elem)}}ModernizrProto.testAllProps=testPropsAll;function testAllProps(prop,value,skipValueTest){return testPropsAll(prop,undefined,undefined,value,skipValueTest)}ModernizrProto.testAllProps=testAllProps;Modernizr.addTest("flexbox",testAllProps("flexBasis","1px",true));Modernizr.addTest("flexboxlegacy",testAllProps("boxDirection","reverse",true));Modernizr.addTest("csstransforms",function(){return navigator.userAgent.indexOf("Android 2.")===-1&&testAllProps("transform","scale(1)",true)});Modernizr.addTest("csstransforms3d",function(){var ret=!!testAllProps("perspective","1px",true);var usePrefix=Modernizr._config.usePrefixes;if(ret&&(!usePrefix||"webkitPerspective"in docElement.style)){var mq;var defaultStyle="#modernizr{width:0;height:0}";if(Modernizr.supports){mq="@supports (perspective: 1px)"}else{mq="@media (transform-3d)";if(usePrefix){mq+=",(-webkit-transform-3d)"}}mq+="{#modernizr{width:7px;height:18px;margin:0;padding:0;border:0}}";testStyles(defaultStyle+mq,function(elem){ret=elem.offsetWidth===7&&elem.offsetHeight===18})}return ret});testRunner();setClasses(classes);delete ModernizrProto.addTest;delete ModernizrProto.addAsyncTest;for(var i=0;i<Modernizr._q.length;i++){Modernizr._q[i]()}window.laeModernizr=Modernizr})(window,document);
|
|
freemius/.codeclimate.yml
DELETED
@@ -1,19 +0,0 @@
|
|
1 |
-
engines:
|
2 |
-
phpcodesniffer:
|
3 |
-
enabled: true
|
4 |
-
config:
|
5 |
-
standard: "WordPress"
|
6 |
-
checks:
|
7 |
-
Squiz Commenting InlineComment InvalidEndChar:
|
8 |
-
enabled: false
|
9 |
-
Squiz Commenting InlineComment SpacingBefore:
|
10 |
-
enabled: false
|
11 |
-
Squiz Commenting InlineComment WrongStyle:
|
12 |
-
enabled: false
|
13 |
-
Generic Commenting DocComment MissingShort:
|
14 |
-
enabled: false
|
15 |
-
Generic WhiteSpace ScopeIndent IncorrectExact:
|
16 |
-
enabled: false
|
17 |
-
ratings:
|
18 |
-
paths:
|
19 |
-
- "**.php"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
freemius/.travis.yml
DELETED
@@ -1,11 +0,0 @@
|
|
1 |
-
sudo: false
|
2 |
-
|
3 |
-
language: php
|
4 |
-
|
5 |
-
php:
|
6 |
-
- 5.3
|
7 |
-
- 5.4
|
8 |
-
- 5.5
|
9 |
-
- 5.6
|
10 |
-
- 7.0
|
11 |
-
- hhvm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
freemius/README.md
DELETED
@@ -1,253 +0,0 @@
|
|
1 |
-
Freemius WordPress SDK
|
2 |
-
======================
|
3 |
-
|
4 |
-
[Monetization](https://freemius.com/wordpress/), [analytics](https://freemius.com/wordpress/insights/), and marketing automation platform for plugin & theme developers. Freemius empower developers to create prosperous subscription based businesses.
|
5 |
-
|
6 |
-
You can see some of the WordPress.org plugins & themes that are utilizing the power of Freemius here:
|
7 |
-
|
8 |
-
https://includewp.com/freemius/#focus
|
9 |
-
|
10 |
-
If you are a WordPress plugin or theme developer and you are interested to monetize with Freemius you can [sign-up here for free](https://dashboard.freemius.com/register/):
|
11 |
-
|
12 |
-
https://dashboard.freemius.com/register/
|
13 |
-
|
14 |
-
**Below you'll find the integration instructions for our WordPress SDK.**
|
15 |
-
|
16 |
-
## Code Documentation
|
17 |
-
|
18 |
-
You can find the SDK's PHP-Doc documentation here:
|
19 |
-
https://codedoc.pub/freemius/wordpress-sdk/master/
|
20 |
-
|
21 |
-
## Initializing the SDK
|
22 |
-
|
23 |
-
Copy the code below and paste it into the top of your main plugin's PHP file, right after the plugin's header comment:
|
24 |
-
|
25 |
-
```php
|
26 |
-
<?php
|
27 |
-
// Create a helper function for easy SDK access.
|
28 |
-
function my_prefix_fs() {
|
29 |
-
global $my_prefix_fs;
|
30 |
-
if ( ! isset( $my_prefix_fs ) ) {
|
31 |
-
// Include Freemius SDK.
|
32 |
-
require_once dirname(__FILE__) . '/freemius/start.php';
|
33 |
-
|
34 |
-
$my_prefix_fs = fs_dynamic_init( array(
|
35 |
-
'id' => '1234',
|
36 |
-
'slug' => 'my-plugin-slug',
|
37 |
-
'menu_slug' => 'my_menu_slug', // You can also use __FILE__
|
38 |
-
'public_key' => 'pk_MY_PUBLIC_KEY',
|
39 |
-
'is_live' => true,
|
40 |
-
'is_premium' => true,
|
41 |
-
'has_addons' => false,
|
42 |
-
'has_paid_plans' => false,
|
43 |
-
// Set the SDK to work in a sandbox mode (for development & testing).
|
44 |
-
// IMPORTANT: MAKE SURE TO REMOVE SECRET KEY BEFORE DEPLOYMENT.
|
45 |
-
'secret_key' => 'sk_MY_SECRET_KEY',
|
46 |
-
) );
|
47 |
-
}
|
48 |
-
|
49 |
-
return $my_prefix_fs;
|
50 |
-
}
|
51 |
-
|
52 |
-
// Init Freemius.
|
53 |
-
my_prefix_fs();
|
54 |
-
?>
|
55 |
-
```
|
56 |
-
|
57 |
-
- **1234** - Replace with your plugin's ID.
|
58 |
-
- **pk_MY_PUBLIC_KEY** - Replace with your plugin's public key.
|
59 |
-
- **sk_MY_SECRET_KEY** - Replace with your plugin's secret key.
|
60 |
-
- **my-plugin-slug** - Replace with your plugin's WordPress.org slug.
|
61 |
-
- **my_menu_slug** - Replace with your admin dashboard settings menu slug.
|
62 |
-
|
63 |
-
|
64 |
-
## Usage example
|
65 |
-
|
66 |
-
You can call the SDK by using the shortcode function:
|
67 |
-
|
68 |
-
```php
|
69 |
-
<?php my_prefix_fs()->get_upgrade_url(); ?>
|
70 |
-
```
|
71 |
-
|
72 |
-
Or when calling Freemius multiple times in a scope, it's recommended to use it with the global variable:
|
73 |
-
|
74 |
-
```php
|
75 |
-
<?php
|
76 |
-
global $my_prefix_fs;
|
77 |
-
$my_prefix_fs->get_account_url();
|
78 |
-
?>
|
79 |
-
```
|
80 |
-
|
81 |
-
## Adding license based logic examples
|
82 |
-
|
83 |
-
Add marketing content to encourage your users to upgrade for your paid version:
|
84 |
-
|
85 |
-
```php
|
86 |
-
<?php
|
87 |
-
if ( my_prefix_fs()->is_not_paying() ) {
|
88 |
-
echo '<section><h1>' . esc_html__('Awesome Premium Features', 'my-plugin-slug') . '</h1>';
|
89 |
-
echo '<a href="' . my_prefix_fs()->get_upgrade_url() . '">' .
|
90 |
-
esc_html__('Upgrade Now!', 'my-plugin-slug') .
|
91 |
-
'</a>';
|
92 |
-
echo '</section>';
|
93 |
-
}
|
94 |
-
?>
|
95 |
-
```
|
96 |
-
|
97 |
-
Add logic which will only be available in your premium plugin version:
|
98 |
-
|
99 |
-
```php
|
100 |
-
<?php
|
101 |
-
// This "if" block will be auto removed from the Free version.
|
102 |
-
if ( my_prefix_fs()->is__premium_only() ) {
|
103 |
-
|
104 |
-
// ... premium only logic ...
|
105 |
-
|
106 |
-
}
|
107 |
-
?>
|
108 |
-
```
|
109 |
-
|
110 |
-
To add a function which will only be available in your premium plugin version, simply add __premium_only as the suffix of the function name. Just make sure that all lines that call that method directly or by hooks, are also wrapped in premium only logic:
|
111 |
-
|
112 |
-
```php
|
113 |
-
<?php
|
114 |
-
class My_Plugin {
|
115 |
-
function init() {
|
116 |
-
...
|
117 |
-
|
118 |
-
// This "if" block will be auto removed from the free version.
|
119 |
-
if ( my_prefix_fs()->is__premium_only() ) {
|
120 |
-
// Init premium version.
|
121 |
-
$this->admin_init__premium_only();
|
122 |
-
|
123 |
-
add_action( 'admin_init', array( &$this, 'admin_init_hook__premium_only' );
|
124 |
-
}
|
125 |
-
|
126 |
-
...
|
127 |
-
}
|
128 |
-
|
129 |
-
// This method will be only included in the premium version.
|
130 |
-
function admin_init__premium_only() {
|
131 |
-
...
|
132 |
-
}
|
133 |
-
|
134 |
-
// This method will be only included in the premium version.
|
135 |
-
function admin_init_hook__premium_only() {
|
136 |
-
...
|
137 |
-
}
|
138 |
-
}
|
139 |
-
?>
|
140 |
-
```
|
141 |
-
|
142 |
-
Add logic which will only be executed for customers in your 'professional' plan:
|
143 |
-
|
144 |
-
```php
|
145 |
-
<?php
|
146 |
-
if ( my_prefix_fs()->is_plan('professional', true) ) {
|
147 |
-
// .. logic related to Professional plan only ...
|
148 |
-
}
|
149 |
-
?>
|
150 |
-
```
|
151 |
-
|
152 |
-
Add logic which will only be executed for customers in your 'professional' plan or higher plans:
|
153 |
-
|
154 |
-
```php
|
155 |
-
<?php
|
156 |
-
if ( my_prefix_fs()->is_plan('professional') ) {
|
157 |
-
// ... logic related to Professional plan and higher plans ...
|
158 |
-
}
|
159 |
-
?>
|
160 |
-
```
|
161 |
-
|
162 |
-
Add logic which will only be available in your premium plugin version AND will only be executed for customers in your 'professional' plan (and higher plans):
|
163 |
-
|
164 |
-
```php
|
165 |
-
<?php
|
166 |
-
// This "if" block will be auto removed from the Free version.
|
167 |
-
if ( my_prefix_fs()->is_plan__premium_only('professional') ) {
|
168 |
-
// ... logic related to Professional plan and higher plans ...
|
169 |
-
}
|
170 |
-
?>
|
171 |
-
```
|
172 |
-
|
173 |
-
Add logic only for users in trial:
|
174 |
-
|
175 |
-
```php
|
176 |
-
<?php
|
177 |
-
if ( my_prefix_fs()->is_trial() ) {
|
178 |
-
// ... logic for users in trial ...
|
179 |
-
}
|
180 |
-
?>
|
181 |
-
```
|
182 |
-
|
183 |
-
Add logic for specified paid plan:
|
184 |
-
|
185 |
-
```php
|
186 |
-
<?php
|
187 |
-
// This "if" block will be auto removed from the Free version.
|
188 |
-
if ( my_prefix_fs()->is__premium_only() ) {
|
189 |
-
if ( my_prefix_fs()->is_plan( 'professional', true ) ) {
|
190 |
-
|
191 |
-
// ... logic related to Professional plan only ...
|
192 |
-
|
193 |
-
} else if ( my_prefix_fs()->is_plan( 'business' ) ) {
|
194 |
-
|
195 |
-
// ... logic related to Business plan and higher plans ...
|
196 |
-
|
197 |
-
}
|
198 |
-
}
|
199 |
-
?>
|
200 |
-
```
|
201 |
-
|
202 |
-
## Excluding files and folders from the free plugin version
|
203 |
-
There are two ways to exclude files from your free version.
|
204 |
-
|
205 |
-
1. Add `__premium_only` just before the file extension. For example, functions__premium_only.php will be only included in the premium plugin version. This works for all type of files, not only PHP.
|
206 |
-
2. Add `@fs_premium_only` a sepcial meta tag to the plugin's main PHP file header. Example:
|
207 |
-
```php
|
208 |
-
<?php
|
209 |
-
/**
|
210 |
-
* Plugin Name: My Very Awesome Plugin
|
211 |
-
* Plugin URI: http://my-awesome-plugin.com
|
212 |
-
* Description: Create and manage Awesomeness right in WordPress.
|
213 |
-
* Version: 1.0.0
|
214 |
-
* Author: Awesomattic
|
215 |
-
* Author URI: http://my-awesome-plugin.com/me/
|
216 |
-
* License: GPLv2
|
217 |
-
* Text Domain: myplugin
|
218 |
-
* Domain Path: /langs
|
219 |
-
*
|
220 |
-
* @fs_premium_only /lib/functions.php, /premium-files/
|
221 |
-
*/
|
222 |
-
|
223 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
224 |
-
exit;
|
225 |
-
}
|
226 |
-
|
227 |
-
// ... my code ...
|
228 |
-
?>
|
229 |
-
```
|
230 |
-
The file `/lib/functions.php` and the directory `/premium-files/` will be removed from the free plugin version.
|
231 |
-
|
232 |
-
# WordPress.org Compliance
|
233 |
-
Based on [WordPress.org Guidelines](https://wordpress.org/plugins/about/guidelines/) you are not allowed to submit a plugin that has premium code in it:
|
234 |
-
> All code hosted by WordPress.org servers must be free and fully-functional. If you want to sell advanced features for a plugin (such as a "pro" version), then you must sell and serve that code from your own site, we will not host it on our servers.
|
235 |
-
|
236 |
-
Therefore, if you want to deploy your free plugin's version to WordPress.org, make sure you wrap all your premium code with `if ( my_prefix_fs()->{{ method }}__premium_only() )` or the other methods provided to exclude premium features & files from the free version.
|
237 |
-
|
238 |
-
## Deployment
|
239 |
-
Zip your plugin's root folder and upload it in the Deployment section in the *Freemius Developer's Dashboard*.
|
240 |
-
The plugin will be scanned and processed by a custom developed *PHP Processor* which will auto-generate two versions of your plugin:
|
241 |
-
|
242 |
-
1. **Premium version**: Identical to your uploaded version, including all code (except your `secret_key`). Will be enabled for download ONLY for your paying or in trial customers.
|
243 |
-
2. **Free version**: The code stripped from all your paid features (based on the logic added wrapped in `{ method }__premium_only()`).
|
244 |
-
|
245 |
-
The free version is the one that you should give your users to download. Therefore, download the free generated version and upload to your site. Or, if your plugin was WordPress.org complaint and you made sure to exclude all your premium code with the different provided techniques, you can deploy the downloaded free version to the .org repo.
|
246 |
-
|
247 |
-
## Reporting Bugs
|
248 |
-
Email dev [at] freemius [dot] com
|
249 |
-
|
250 |
-
## FAQ
|
251 |
-
|
252 |
-
## Copyright
|
253 |
-
Freemius, Inc.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
freemius/assets/css/admin/deactivation-feedback.css
DELETED
@@ -1,2 +0,0 @@
|
|
1 |
-
.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}.fs-modal .fs-modal-dialog li.reason{margin-bottom:10px}.fs-modal .fs-modal-dialog li.reason .reason-input,.fs-modal .fs-modal-dialog li.reason .internal-message{margin-left:29px}.fs-modal .fs-modal-dialog li.reason label{display:table}.fs-modal .fs-modal-dialog li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body h2{font-size:20px}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel:not(.active){display:none}.fs-modal .reason-input,.fs-modal .internal-message{margin:3px 0 3px 22px}.fs-modal .reason-input input,.fs-modal .reason-input textarea,.fs-modal .internal-message input,.fs-modal .internal-message textarea{width:100%}.fs-modal li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}body.has-fs-modal{overflow:hidden}#the-list .deactivate>.fs-slug{display:none}
|
2 |
-
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlYWN0aXZhdGlvbi1mZWVkYmFjay5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxlQUFlLGNBQWMsWUFBWSxXQUFXLE1BQU0sZUFBZSxhQUFhLDBCQUEwQixDQUFDLDJCQUEyQix1QkFBdUIsa0JBQWtCLFNBQVMsbUJBQW1CLG9CQUFvQixVQUFVLGVBQWUsV0FBVyxDQUFDLDBCQUEwQiwyQkFBMkIsaUJBQWlCLDhCQUFBLHNCQUFzQixrQkFBa0IsbUJBQW1CLFVBQVUsQ0FBQyxxREFBcUQsZUFBZSxDQUFDLHFDQUFxQyxrQkFBa0IsQ0FBQywwR0FBMEcsZ0JBQWdCLENBQUMsMkNBQTJDLGFBQWEsQ0FBQyxnREFBZ0QsbUJBQW1CLGVBQWUsQ0FBQyxDQUFDLGlCQUFpQixhQUFhLENBQUMsd0JBQXdCLGFBQWEsQ0FBQyxrQ0FBa0MsT0FBTyxDQUFDLG9EQUFvRCxTQUFTLG1CQUFtQixZQUFZLENBQUMseUJBQXlCLGVBQWUsQ0FBQyw0QkFBNEIsY0FBYyxDQUFDLDZCQUE2QixlQUFlLENBQUMsZ0NBQWdDLGlCQUFpQixlQUFlLFlBQVksQ0FBQywyQkFBMkIsNkJBQTZCLGdCQUFnQixDQUFDLG1DQUFtQyxZQUFZLENBQUMsK0NBQStDLFFBQVEsQ0FBQyx1Q0FBdUMsWUFBWSxDQUFDLG9EQUFvRCxxQkFBcUIsQ0FBQyxzSUFBc0ksVUFBVSxDQUFDLDJEQUEyRCxzQkFBc0IsWUFBWSxZQUFZLENBQUMsa0JBQWtCLGVBQWUsQ0FBQywrQkFBK0IsWUFBWSxDQUFDIiwiZmlsZSI6ImRlYWN0aXZhdGlvbi1mZWVkYmFjay5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZnMtbW9kYWx7cG9zaXRpb246Zml4ZWQ7b3ZlcmZsb3c6YXV0bztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO3RvcDowO3otaW5kZXg6MTAwMDAwO2Rpc3BsYXk6bm9uZTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC42KX0uZnMtbW9kYWwgLmZzLW1vZGFsLWRpYWxvZ3tiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi0yOThweDtwYWRkaW5nLWJvdHRvbTozMHB4O3RvcDotMTAwJTt6LWluZGV4OjEwMDAwMTt3aWR0aDo1OTZweH1AbWVkaWEgKG1heC13aWR0aDogNjUwcHgpey5mcy1tb2RhbCAuZnMtbW9kYWwtZGlhbG9ne21hcmdpbi1sZWZ0Oi01MCU7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctcmlnaHQ6MTBweDt3aWR0aDoxMDAlfS5mcy1tb2RhbCAuZnMtbW9kYWwtZGlhbG9nIC5mcy1tb2RhbC1wYW5lbD5oMz5zdHJvbmd7Zm9udC1zaXplOjEuM2VtfS5mcy1tb2RhbCAuZnMtbW9kYWwtZGlhbG9nIGxpLnJlYXNvbnttYXJnaW4tYm90dG9tOjEwcHh9LmZzLW1vZGFsIC5mcy1tb2RhbC1kaWFsb2cgbGkucmVhc29uIC5yZWFzb24taW5wdXQsLmZzLW1vZGFsIC5mcy1tb2RhbC1kaWFsb2cgbGkucmVhc29uIC5pbnRlcm5hbC1tZXNzYWdle21hcmdpbi1sZWZ0OjI5cHh9LmZzLW1vZGFsIC5mcy1tb2RhbC1kaWFsb2cgbGkucmVhc29uIGxhYmVse2Rpc3BsYXk6dGFibGV9LmZzLW1vZGFsIC5mcy1tb2RhbC1kaWFsb2cgbGkucmVhc29uIGxhYmVsPnNwYW57ZGlzcGxheTp0YWJsZS1jZWxsO2ZvbnQtc2l6ZToxLjNlbX19LmZzLW1vZGFsLmFjdGl2ZXtkaXNwbGF5OmJsb2NrfS5mcy1tb2RhbC5hY3RpdmU6YmVmb3Jle2Rpc3BsYXk6YmxvY2t9LmZzLW1vZGFsLmFjdGl2ZSAuZnMtbW9kYWwtZGlhbG9ne3RvcDoxMCV9LmZzLW1vZGFsIC5mcy1tb2RhbC1ib2R5LC5mcy1tb2RhbCAuZnMtbW9kYWwtZm9vdGVye2JvcmRlcjowO2JhY2tncm91bmQ6I2ZlZmVmZTtwYWRkaW5nOjIwcHh9LmZzLW1vZGFsIC5mcy1tb2RhbC1ib2R5e2JvcmRlci1ib3R0b206MH0uZnMtbW9kYWwgLmZzLW1vZGFsLWJvZHkgaDJ7Zm9udC1zaXplOjIwcHh9LmZzLW1vZGFsIC5mcy1tb2RhbC1ib2R5PmRpdnttYXJnaW4tdG9wOjEwcHh9LmZzLW1vZGFsIC5mcy1tb2RhbC1ib2R5PmRpdiBoMntmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToyMHB4O21hcmdpbi10b3A6MH0uZnMtbW9kYWwgLmZzLW1vZGFsLWZvb3Rlcntib3JkZXItdG9wOiNlZWVlZWUgc29saWQgMXB4O3RleHQtYWxpZ246cmlnaHR9LmZzLW1vZGFsIC5mcy1tb2RhbC1mb290ZXI+LmJ1dHRvbnttYXJnaW46MCA3cHh9LmZzLW1vZGFsIC5mcy1tb2RhbC1mb290ZXI+LmJ1dHRvbjpmaXJzdC1jaGlsZHttYXJnaW46MH0uZnMtbW9kYWwgLmZzLW1vZGFsLXBhbmVsOm5vdCguYWN0aXZlKXtkaXNwbGF5Om5vbmV9LmZzLW1vZGFsIC5yZWFzb24taW5wdXQsLmZzLW1vZGFsIC5pbnRlcm5hbC1tZXNzYWdle21hcmdpbjozcHggMCAzcHggMjJweH0uZnMtbW9kYWwgLnJlYXNvbi1pbnB1dCBpbnB1dCwuZnMtbW9kYWwgLnJlYXNvbi1pbnB1dCB0ZXh0YXJlYSwuZnMtbW9kYWwgLmludGVybmFsLW1lc3NhZ2UgaW5wdXQsLmZzLW1vZGFsIC5pbnRlcm5hbC1tZXNzYWdlIHRleHRhcmVhe3dpZHRoOjEwMCV9LmZzLW1vZGFsIGxpLnJlYXNvbi5oYXMtaW50ZXJuYWwtbWVzc2FnZSAuaW50ZXJuYWwtbWVzc2FnZXtib3JkZXI6MXB4IHNvbGlkICNjY2M7cGFkZGluZzo3cHg7ZGlzcGxheTpub25lfWJvZHkuaGFzLWZzLW1vZGFse292ZXJmbG93OmhpZGRlbn0jdGhlLWxpc3QgLmRlYWN0aXZhdGU+LmZzLXNsdWd7ZGlzcGxheTpub25lfVxuIl19 */
|
|
|
|
freemius/assets/css/admin/license-activation.css
DELETED
@@ -1,2 +0,0 @@
|
|
1 |
-
.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body .license-activation-message{margin:0;display:none}.fs-modal .fs-modal-body input.license_key{width:100%}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel:not(.active){display:none}body.has-fs-modal{overflow:hidden}
|
2 |
-
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpY2Vuc2UtYWN0aXZhdGlvbi5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxlQUFlLGNBQWMsWUFBWSxXQUFXLE1BQU0sZUFBZSxhQUFhLDBCQUEwQixDQUFDLDJCQUEyQix1QkFBdUIsa0JBQWtCLFNBQVMsbUJBQW1CLG9CQUFvQixVQUFVLGVBQWUsV0FBVyxDQUFDLDBCQUEwQiwyQkFBMkIsaUJBQWlCLDhCQUFBLHNCQUFzQixrQkFBa0IsbUJBQW1CLFVBQVUsQ0FBQyxxREFBcUQsZUFBZSxDQUFDLENBQUMsaUJBQWlCLGFBQWEsQ0FBQyx3QkFBd0IsYUFBYSxDQUFDLGtDQUFrQyxPQUFPLENBQUMsb0RBQW9ELFNBQVMsbUJBQW1CLFlBQVksQ0FBQyx5QkFBeUIsZUFBZSxDQUFDLHFEQUFxRCxTQUFTLFlBQVksQ0FBQywyQ0FBMkMsVUFBVSxDQUFDLDJCQUEyQixjQUFjLENBQUMsNEJBQTRCLGNBQWMsQ0FBQyw2QkFBNkIsZUFBZSxDQUFDLGdDQUFnQyxpQkFBaUIsZUFBZSxZQUFZLENBQUMsMkJBQTJCLDZCQUE2QixnQkFBZ0IsQ0FBQyxtQ0FBbUMsWUFBWSxDQUFDLCtDQUErQyxRQUFRLENBQUMsdUNBQXVDLFlBQVksQ0FBQyxrQkFBa0IsZUFBZSxDQUFDIiwiZmlsZSI6ImxpY2Vuc2UtYWN0aXZhdGlvbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZnMtbW9kYWx7cG9zaXRpb246Zml4ZWQ7b3ZlcmZsb3c6YXV0bztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO3RvcDowO3otaW5kZXg6MTAwMDAwO2Rpc3BsYXk6bm9uZTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC42KX0uZnMtbW9kYWwgLmZzLW1vZGFsLWRpYWxvZ3tiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi0yOThweDtwYWRkaW5nLWJvdHRvbTozMHB4O3RvcDotMTAwJTt6LWluZGV4OjEwMDAwMTt3aWR0aDo1OTZweH1AbWVkaWEgKG1heC13aWR0aDogNjUwcHgpey5mcy1tb2RhbCAuZnMtbW9kYWwtZGlhbG9ne21hcmdpbi1sZWZ0Oi01MCU7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctcmlnaHQ6MTBweDt3aWR0aDoxMDAlfS5mcy1tb2RhbCAuZnMtbW9kYWwtZGlhbG9nIC5mcy1tb2RhbC1wYW5lbD5oMz5zdHJvbmd7Zm9udC1zaXplOjEuM2VtfX0uZnMtbW9kYWwuYWN0aXZle2Rpc3BsYXk6YmxvY2t9LmZzLW1vZGFsLmFjdGl2ZTpiZWZvcmV7ZGlzcGxheTpibG9ja30uZnMtbW9kYWwuYWN0aXZlIC5mcy1tb2RhbC1kaWFsb2d7dG9wOjEwJX0uZnMtbW9kYWwgLmZzLW1vZGFsLWJvZHksLmZzLW1vZGFsIC5mcy1tb2RhbC1mb290ZXJ7Ym9yZGVyOjA7YmFja2dyb3VuZDojZmVmZWZlO3BhZGRpbmc6MjBweH0uZnMtbW9kYWwgLmZzLW1vZGFsLWJvZHl7Ym9yZGVyLWJvdHRvbTowfS5mcy1tb2RhbCAuZnMtbW9kYWwtYm9keSAubGljZW5zZS1hY3RpdmF0aW9uLW1lc3NhZ2V7bWFyZ2luOjA7ZGlzcGxheTpub25lfS5mcy1tb2RhbCAuZnMtbW9kYWwtYm9keSBpbnB1dC5saWNlbnNlX2tleXt3aWR0aDoxMDAlfS5mcy1tb2RhbCAuZnMtbW9kYWwtYm9keSBwe2ZvbnQtc2l6ZToxNHB4fS5mcy1tb2RhbCAuZnMtbW9kYWwtYm9keSBoMntmb250LXNpemU6MjBweH0uZnMtbW9kYWwgLmZzLW1vZGFsLWJvZHk+ZGl2e21hcmdpbi10b3A6MTBweH0uZnMtbW9kYWwgLmZzLW1vZGFsLWJvZHk+ZGl2IGgye2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjIwcHg7bWFyZ2luLXRvcDowfS5mcy1tb2RhbCAuZnMtbW9kYWwtZm9vdGVye2JvcmRlci10b3A6I2VlZWVlZSBzb2xpZCAxcHg7dGV4dC1hbGlnbjpyaWdodH0uZnMtbW9kYWwgLmZzLW1vZGFsLWZvb3Rlcj4uYnV0dG9ue21hcmdpbjowIDdweH0uZnMtbW9kYWwgLmZzLW1vZGFsLWZvb3Rlcj4uYnV0dG9uOmZpcnN0LWNoaWxke21hcmdpbjowfS5mcy1tb2RhbCAuZnMtbW9kYWwtcGFuZWw6bm90KC5hY3RpdmUpe2Rpc3BsYXk6bm9uZX1ib2R5Lmhhcy1mcy1tb2RhbHtvdmVyZmxvdzpoaWRkZW59XG4iXX0= */
|
|
|
|
freemius/assets/img/addons-for-beaver-builder.png
DELETED
Binary file
|
freemius/assets/img/addons-for-elementor.png
DELETED
Binary file
|
freemius/assets/js/nojquery.ba-postmessage.min.min.js
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
function NoJQueryPostMessageMixin(g,a){var b,h,e,d,f,c=1;if(window.postMessage){if(window.addEventListener){b=function(i){window.addEventListener("message",i,false)};h=function(i){window.removeEventListener("message",i,false)}}else{b=function(i){window.attachEvent("onmessage",i)};h=function(i){window.detachEvent("onmessage",i)}}this[g]=function(i,k,j){if(!k){return}j.postMessage(i,k.replace(/([^:]+:\/\/[^\/]+).*/,"$1"))};this[a]=function(k,j,i){if(e){h(e);e=null}if(!k){return false}e=b(function(l){switch(Object.prototype.toString.call(j)){case"[object String]":if(j!==l.origin){return false}break;case"[object Function]":if(j(l.origin)){return false}break}k(l)})}}else{this[g]=function(i,k,j){if(!k){return}j.location=k.replace(/#.*$/,"")+"#"+ +new Date+c+++"&"+i};this[a]=function(k,j,i){if(d){clearInterval(d);d=null}if(k){i=typeof j==="number"?j:typeof i==="number"?i:100;d=setInterval(function(){var m=document.location.hash,l=/^#?\d+&/;if(m!==f&&l.test(m)){f=m;k({data:m.replace(l,"")})}},i)}}}return this}
|
|
freemius/composer.json
DELETED
@@ -1,10 +0,0 @@
|
|
1 |
-
{
|
2 |
-
"name": "freemius/wordpress-sdk",
|
3 |
-
"description": "Freemius WordPress SDK",
|
4 |
-
"keywords": ["freemius", "wordpress", "plugin", "sdk"],
|
5 |
-
"homepage": "https://freemius.com",
|
6 |
-
"license": "GPL-3.0-only",
|
7 |
-
"require": {
|
8 |
-
"php": ">=5.2"
|
9 |
-
}
|
10 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
freemius/gulpfile.js
DELETED
@@ -1,167 +0,0 @@
|
|
1 |
-
var gulp = require('gulp');
|
2 |
-
var path = require('path');
|
3 |
-
var filesystem = require('fs');
|
4 |
-
var wpPot = require('gulp-wp-pot');
|
5 |
-
var gettext = require('gulp-gettext');
|
6 |
-
var sort = require('gulp-sort');
|
7 |
-
var pofill = require('gulp-pofill');
|
8 |
-
var rename = require('gulp-rename');
|
9 |
-
var clean = require('gulp-clean');
|
10 |
-
|
11 |
-
var languagesFolder = './languages/';
|
12 |
-
|
13 |
-
var options = require('./transifex-config.json');
|
14 |
-
|
15 |
-
function getFolders(dir) {
|
16 |
-
return filesystem.readdirSync(dir)
|
17 |
-
.filter(function (file) {
|
18 |
-
return filesystem.statSync(path.join(dir, file)).isDirectory();
|
19 |
-
});
|
20 |
-
}
|
21 |
-
|
22 |
-
var transifex = require('gulp-transifex').createClient(options);
|
23 |
-
|
24 |
-
// Create POT out of i18n.php.
|
25 |
-
gulp.task('prepare-source', function () {
|
26 |
-
gulp.src('**/*.php')
|
27 |
-
.pipe(sort())
|
28 |
-
.pipe(wpPot({
|
29 |
-
destFile : 'freemius.pot',
|
30 |
-
package : 'freemius',
|
31 |
-
bugReport : 'https://github.com/Freemius/wordpress-sdk/issues',
|
32 |
-
lastTranslator : 'Vova Feldman <vova@freemius.com>',
|
33 |
-
team : 'Freemius Team <admin@freemius.com>',
|
34 |
-
/*gettextMethods: {
|
35 |
-
instances: ['this', '_fs'],
|
36 |
-
methods: [
|
37 |
-
'get_text_inline'
|
38 |
-
]
|
39 |
-
},*/
|
40 |
-
gettextFunctions: [
|
41 |
-
{name: 'get_text_inline'},
|
42 |
-
|
43 |
-
{name: 'fs_text_inline'},
|
44 |
-
{name: 'fs_echo_inline'},
|
45 |
-
{name: 'fs_esc_js_inline'},
|
46 |
-
{name: 'fs_esc_attr_inline'},
|
47 |
-
{name: 'fs_esc_attr_echo_inline'},
|
48 |
-
{name: 'fs_esc_html_inline'},
|
49 |
-
{name: 'fs_esc_html_echo_inline'},
|
50 |
-
|
51 |
-
{name: 'get_text_x_inline', context: 2},
|
52 |
-
{name: 'fs_text_x_inline', context: 2},
|
53 |
-
{name: 'fs_echo_x_inline', context: 2},
|
54 |
-
{name: 'fs_esc_attr_x_inline', context: 2},
|
55 |
-
{name: 'fs_esc_js_x_inline', context: 2},
|
56 |
-
{name: 'fs_esc_js_echo_x_inline', context: 2},
|
57 |
-
{name: 'fs_esc_html_x_inline', context: 2},
|
58 |
-
{name: 'fs_esc_html_echo_x_inline', context: 2}
|
59 |
-
/*,
|
60 |
-
|
61 |
-
|
62 |
-
{name: '_fs_text'},
|
63 |
-
{name: '_fs_x', context: 2},
|
64 |
-
{name: '_fs_echo'},
|
65 |
-
{name: '_fs_esc_attr'},
|
66 |
-
{name: '_fs_esc_attr_echo'},
|
67 |
-
{name: '_fs_esc_html'},
|
68 |
-
{name: '_fs_esc_html_echo'},
|
69 |
-
{name: '_fs_ex', context: 2},
|
70 |
-
{name: '_fs_esc_attr_x', context: 2},
|
71 |
-
{name: '_fs_esc_html_x', context: 2},
|
72 |
-
|
73 |
-
{name: '_fs_n', plural: 2},
|
74 |
-
{name: '_fs_n_noop', plural: 2},
|
75 |
-
{name: '_fs_nx', plural: 2, context: 4},
|
76 |
-
{name: '_fs_nx_noop', plural: 2, context: 3}*/
|
77 |
-
]
|
78 |
-
}))
|
79 |
-
.pipe(gulp.dest(languagesFolder + 'freemius.pot'));
|
80 |
-
|
81 |
-
// Create English PO out of the POT.
|
82 |
-
return gulp.src(languagesFolder + 'freemius.pot')
|
83 |
-
.pipe(pofill({
|
84 |
-
items: function (item) {
|
85 |
-
// If msgstr is empty, use identity translation
|
86 |
-
if (!item.msgstr.length) {
|
87 |
-
item.msgstr = [''];
|
88 |
-
}
|
89 |
-
if (!item.msgstr[0]) {
|
90 |
-
item.msgstr[0] = item.msgid;
|
91 |
-
}
|
92 |
-
return item;
|
93 |
-
}
|
94 |
-
}))
|
95 |
-
.pipe(rename('freemius-en.po'))
|
96 |
-
.pipe(gulp.dest(languagesFolder));
|
97 |
-
});
|
98 |
-
|
99 |
-
// Push updated po resource to transifex.
|
100 |
-
gulp.task('update-transifex', ['prepare-source'], function () {
|
101 |
-
return gulp.src(languagesFolder + 'freemius-en.po')
|
102 |
-
.pipe(transifex.pushResource());
|
103 |
-
});
|
104 |
-
|
105 |
-
// Download latest *.po translations.
|
106 |
-
gulp.task('download-translations', ['update-transifex'], function () {
|
107 |
-
return gulp.src(languagesFolder + 'freemius-en.po')
|
108 |
-
.pipe(transifex.pullResource());
|
109 |
-
});
|
110 |
-
|
111 |
-
// Move translations to languages root.
|
112 |
-
gulp.task('prepare-translations', ['download-translations'], function () {
|
113 |
-
var folders = getFolders(languagesFolder);
|
114 |
-
|
115 |
-
return folders.map(function (folder) {
|
116 |
-
return gulp.src(path.join(languagesFolder, folder, 'freemius-en.po'))
|
117 |
-
.pipe(rename('freemius-' + folder + '.po'))
|
118 |
-
.pipe(gulp.dest(languagesFolder));
|
119 |
-
});
|
120 |
-
});
|
121 |
-
|
122 |
-
// Feel up empty translations with English.
|
123 |
-
gulp.task('translations-feelup', ['prepare-translations'], function () {
|
124 |
-
return gulp.src(languagesFolder + '*.po')
|
125 |
-
.pipe(pofill({
|
126 |
-
items: function (item) {
|
127 |
-
// If msgstr is empty, use identity translation
|
128 |
-
if (0 == item.msgstr.length) {
|
129 |
-
item.msgstr = [''];
|
130 |
-
}
|
131 |
-
if (0 == item.msgstr[0].length) {
|
132 |
-
// item.msgid[0] = item.msgid;
|
133 |
-
item.msgstr[0] = item.msgid;
|
134 |
-
}
|
135 |
-
return item;
|
136 |
-
}
|
137 |
-
}))
|
138 |
-
.pipe(gulp.dest(languagesFolder));
|
139 |
-
});
|
140 |
-
|
141 |
-
// Cleanup temporary translation folders.
|
142 |
-
gulp.task('cleanup', ['prepare-translations'], function () {
|
143 |
-
var folders = getFolders(languagesFolder);
|
144 |
-
|
145 |
-
return folders.map(function (folder) {
|
146 |
-
return gulp.src(path.join(languagesFolder, folder), {read: false})
|
147 |
-
.pipe(clean());
|
148 |
-
});
|
149 |
-
});
|
150 |
-
|
151 |
-
// Compile *.po to *.mo binaries for usage.
|
152 |
-
gulp.task('compile-translations', ['translations-feelup'], function () {
|
153 |
-
// Compile POs to MOs.
|
154 |
-
return gulp.src(languagesFolder + '*.po')
|
155 |
-
.pipe(gettext())
|
156 |
-
.pipe(gulp.dest(languagesFolder))
|
157 |
-
});
|
158 |
-
|
159 |
-
gulp.task('default', [], function () {
|
160 |
-
gulp.run('prepare-source');
|
161 |
-
gulp.run('update-transifex');
|
162 |
-
gulp.run('download-translations');
|
163 |
-
gulp.run('prepare-translations');
|
164 |
-
gulp.run('translations-feelup');
|
165 |
-
gulp.run('cleanup');
|
166 |
-
gulp.run('compile-translations');
|
167 |
-
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
freemius/package.json
DELETED
@@ -1,27 +0,0 @@
|
|
1 |
-
{
|
2 |
-
"name": "freemius-wordpress-sdk",
|
3 |
-
"description": "Monetization, analytics, and marketing automation platform for plugin & theme developers.",
|
4 |
-
"author": "Freemius, Inc.",
|
5 |
-
"license": "GPL-3.0",
|
6 |
-
"homepage": "https://freemius.com",
|
7 |
-
"version": "2.1.2",
|
8 |
-
"main": "gulpfile.js",
|
9 |
-
"dependencies": {},
|
10 |
-
"scripts": {
|
11 |
-
"test": "echo \"Error: no test specified\" && exit 1",
|
12 |
-
"prune": "rimraf .codeclimate.yml .git .github .gitignore .travis.yml gulpfile.js composer.json"
|
13 |
-
},
|
14 |
-
"repository": "Freemius/wordpress-sdk.git",
|
15 |
-
"devDependencies": {
|
16 |
-
"gulp": "^3.9.1",
|
17 |
-
"gulp-clean": "^0.3.2",
|
18 |
-
"gulp-fs": "0.0.2",
|
19 |
-
"gulp-gettext": "^0.3.0",
|
20 |
-
"gulp-path": "^3.0.3",
|
21 |
-
"gulp-pofill": "^1.0.0",
|
22 |
-
"gulp-rename": "^1.2.2",
|
23 |
-
"gulp-sort": "^2.0.0",
|
24 |
-
"gulp-transifex": "^0.1.17",
|
25 |
-
"gulp-wp-pot": "^1.3.5"
|
26 |
-
}
|
27 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/controls/checkbox.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace LivemeshAddons\Controls;
|
4 |
+
|
5 |
+
use Elementor\Control_Base;
|
6 |
+
|
7 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
8 |
+
|
9 |
+
/**
|
10 |
+
* A single Checkbox control
|
11 |
+
*
|
12 |
+
* @param string $default Whether to initial it as checked. 'on' for checked, and '' (empty string) for unchecked
|
13 |
+
* Default ''
|
14 |
+
*
|
15 |
+
* @since 1.0.0
|
16 |
+
*/
|
17 |
+
class LAE_Control_Checkbox extends Control_Base {
|
18 |
+
|
19 |
+
public function get_type() {
|
20 |
+
return 'lae-checkbox';
|
21 |
+
}
|
22 |
+
|
23 |
+
public function content_template() {
|
24 |
+
?>
|
25 |
+
<label class="elementor-control-title">
|
26 |
+
<input type="checkbox" data-setting="{{ data.name }}" />
|
27 |
+
<span>{{{ data.label }}}</span>
|
28 |
+
</label>
|
29 |
+
<# if ( data.description ) { #>
|
30 |
+
<div class="elementor-control-field-description">{{{ data.description }}}</div>
|
31 |
+
<# } #>
|
32 |
+
<?php
|
33 |
+
}
|
34 |
+
}
|
plugin.php
CHANGED
@@ -45,7 +45,7 @@ if ( !class_exists( 'Livemesh_Elementor_Addons' ) ) {
|
|
45 |
public function __clone()
|
46 |
{
|
47 |
// Cloning instances of the class is forbidden
|
48 |
-
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'livemesh-el-addons' ), '2.6' );
|
49 |
}
|
50 |
|
51 |
/**
|
@@ -55,7 +55,7 @@ if ( !class_exists( 'Livemesh_Elementor_Addons' ) ) {
|
|
55 |
public function __wakeup()
|
56 |
{
|
57 |
// Unserializing instances of the class is forbidden
|
58 |
-
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'livemesh-el-addons' ), '2.6' );
|
59 |
}
|
60 |
|
61 |
private function setup_debug_constants()
|
45 |
public function __clone()
|
46 |
{
|
47 |
// Cloning instances of the class is forbidden
|
48 |
+
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'livemesh-el-addons' ), '2.6.2' );
|
49 |
}
|
50 |
|
51 |
/**
|
55 |
public function __wakeup()
|
56 |
{
|
57 |
// Unserializing instances of the class is forbidden
|
58 |
+
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'livemesh-el-addons' ), '2.6.2' );
|
59 |
}
|
60 |
|
61 |
private function setup_debug_constants()
|
readme.txt
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
=== Livemesh Addons for Elementor ===
|
2 |
-
Author URI: https://
|
3 |
-
Plugin URI: https://
|
4 |
Contributors: livemesh, freemius
|
5 |
Tags: elementor, elementor addons, elementor extensions, elementor modules, page builder, portfolio, carousel, posts grid
|
6 |
Requires at least: 4.5
|
7 |
-
Tested up to: 5.
|
8 |
-
Stable Tag: 2.6
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -15,51 +15,51 @@ A collection of premium quality addons or modules for use in Elementor page buil
|
|
15 |
|
16 |
Livemesh Addons for Elementor features huge collection of premium, easy to use yet highly functional extensions that can be used in a Elementor page builder. This is really a premium plugin that you can get for free.
|
17 |
|
18 |
-
This plugin comes with widgets for just about everything you need to build a professional website without switching to a premium theme - services, team profiles, counters, bar charts, piecharts, testimonials, clients list, portfolio/posts grid, posts carousels, pricing plan and much more in the <a href="https://
|
19 |
|
20 |
<a href="https://wordpress.org/plugins/elementor/" rel="nofollow">Elementor</a> plugin must be activated to use this plugin. After you activate the required plugins, the addons should be available for use in Elementor.
|
21 |
|
22 |
See the all of elements in action here -
|
23 |
|
24 |
-
<a href="https://
|
25 |
|
26 |
The plugin comes with the following Elementor addons or extensions. <strong>Almost all of the elements come with a dark version.</strong> -
|
27 |
|
28 |
<ul>
|
29 |
-
<li><a href="https://
|
30 |
-
<li><a href="https://
|
31 |
-
<li><a href="https://
|
32 |
-
<li><a href="https://
|
33 |
-
<li><a href="https://
|
34 |
-
<li><a href="https://
|
35 |
-
<li><a href="https://
|
36 |
-
<li><a href="https://
|
37 |
-
<li><a href="https://
|
38 |
-
<li><a href="https://
|
39 |
-
<li><a href="https://
|
40 |
<li>Heading styles to capture effective headings for your page sections.</li>
|
41 |
-
<li><a href="https://
|
42 |
-
<li><a href="https://
|
43 |
|
44 |
-
The <strong><a href="https://
|
45 |
|
46 |
<ul>
|
47 |
-
<li><a href="https://
|
48 |
-
<li><a href="https://
|
49 |
-
<li><a href="https://
|
50 |
-
<li><a href="https://
|
51 |
-
<li><a href="https://
|
52 |
-
<li><a href="https://
|
53 |
-
<li><a href="https://
|
54 |
-
<li><a href="https://
|
55 |
-
<li><a href="https://
|
56 |
-
<li><a href="https://
|
57 |
-
<li><a href="https://
|
58 |
-
<li><a href="https://
|
59 |
-
<li><a href="https://
|
60 |
-
<li><a href="https://
|
61 |
-
<li><a href="https://
|
62 |
-
<li><a href="https://
|
63 |
<li>Lightbox Support - The premium version comes with support for Lightbox for grid and carousel addons.</li>
|
64 |
<li>Customizations - Ability to choose custom font size, color or hover color for certain addons. More coming.</li>
|
65 |
<li>Custom Animations - Choose from over <strong>40+ animations</strong> for most addon elements (excludes sliders, carousels and grid). The animations display on user scrolling to the element or when the element becomes visible in the browser window.</li>
|
@@ -79,7 +79,7 @@ Optionally, if you have premium version of the plugin installed, you can import
|
|
79 |
|
80 |
The premium version of the plugin entitles you to quick support with replies posted within 24 hours (on week days).
|
81 |
|
82 |
-
Please submit your support query through our <a href="https://
|
83 |
|
84 |
== Frequently Asked Questions ==
|
85 |
|
@@ -106,7 +106,12 @@ Pls install and activate the <a href="https://wordpress.org/plugins/portfolio-po
|
|
106 |
|
107 |
== Changelog ==
|
108 |
|
|
|
|
|
|
|
|
|
109 |
= 2.6 =
|
|
|
110 |
* Fixed - Some themes can raise JS error due to jQuery $ being unavailable
|
111 |
* Updated - Flexslider library with RTL support
|
112 |
|
1 |
=== Livemesh Addons for Elementor ===
|
2 |
+
Author URI: https://livemeshelementor.com
|
3 |
+
Plugin URI: https://livemeshelementor.com
|
4 |
Contributors: livemesh, freemius
|
5 |
Tags: elementor, elementor addons, elementor extensions, elementor modules, page builder, portfolio, carousel, posts grid
|
6 |
Requires at least: 4.5
|
7 |
+
Tested up to: 5.2
|
8 |
+
Stable Tag: 2.6.1
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
15 |
|
16 |
Livemesh Addons for Elementor features huge collection of premium, easy to use yet highly functional extensions that can be used in a Elementor page builder. This is really a premium plugin that you can get for free.
|
17 |
|
18 |
+
This plugin comes with widgets for just about everything you need to build a professional website without switching to a premium theme - services, team profiles, counters, bar charts, piecharts, testimonials, clients list, portfolio/posts grid, posts carousels, pricing plan and much more in the <a href="https://livemeshelementor.com" title="Livemesh Addons for Elementor Premium Version">PRO version</a>. All the addons that help turn your free theme into a premium one with just a few clicks. Every premium page builder element you need is available for easy drag and drop into your page by just activating this plugin.
|
19 |
|
20 |
<a href="https://wordpress.org/plugins/elementor/" rel="nofollow">Elementor</a> plugin must be activated to use this plugin. After you activate the required plugins, the addons should be available for use in Elementor.
|
21 |
|
22 |
See the all of elements in action here -
|
23 |
|
24 |
+
<a href="https://livemeshelementor.com/addons-demo#demo-section" title="Livemesh Addons for Elementor Demo Site"><strong>LIVE DEMO</strong></a> | <a href="https://livemeshelementor.com/pricing/" title="Livemesh Addons for Elementor Premium Version"><strong>Premium Version</strong></a>.
|
25 |
|
26 |
The plugin comes with the following Elementor addons or extensions. <strong>Almost all of the elements come with a dark version.</strong> -
|
27 |
|
28 |
<ul>
|
29 |
+
<li><a href="https://livemeshelementor.com/services/" title="Services Extension">Services</a> that capture what you can offer for your clients/customers.</li>
|
30 |
+
<li><a href="https://livemeshelementor.com/portfolio-grid/" title="Portfolio Grid Addon">Portfolio Grid addon</a> that displays portfolio/blog entries in a nice responsive grid. Masonry and packed options are supported.</li>
|
31 |
+
<li><a href="https://livemeshelementor.com/posts-grid/" title="Posts Grid Extension">Blog Posts Grid</a> that displays portfolio/blog entries in a nice responsive grid. Masonry and packed options are supported.</li>
|
32 |
+
<li><a href="https://livemeshelementor.com/team-member-profiles/" title="Team Profiles Addon">Team Profiles</a> extension to display all the team members.</li>
|
33 |
+
<li><a href="https://livemeshelementor.com/odometer-counters/" title="Odometer/Counters Extension">Odometers/Counters</a> to show impressive numbers pertaining to your work or company.</li>
|
34 |
+
<li><a href="https://livemeshelementor.com/progress-bars/" title="Bar Charts">Bar charts addon</a> to capture skills or any type of percentage stats.</li>
|
35 |
+
<li><a href="https://livemeshelementor.com/piecharts/" title="Piecharts Extension">Animated Pie charts</a> for visual depiction of percentage stats.</li>
|
36 |
+
<li><a href="https://livemeshelementor.com/testimonials/" title="Testimonials Addon">Testimonials</a> to tell everyone the good things you often hear from your clients/customers.</li>
|
37 |
+
<li><a href="https://livemeshelementor.com/testimonial-slider/" title="Testimonial Slider Addon">Testimonials slider</a> is a responsive touch enabled slider that cycles through testimonials.</li>
|
38 |
+
<li><a href="https://livemeshelementor.com/posts-carousel/" title="Posts Carousel Extension">Post Carousel extension</a> that displays your posts as a highly responsive carousel.</li>
|
39 |
+
<li><a href="https://livemeshelementor.com/generic-carousel/" title="Generic Carousel Addon">Generic Carousel</a> element that displays lets you present a list of HTML content in a carousel.</li>
|
40 |
<li>Heading styles to capture effective headings for your page sections.</li>
|
41 |
+
<li><a href="https://livemeshelementor.com/clients-module/" title="Clients List Element">Clients List</a> extension to showcase the clients that you have handled.</li>
|
42 |
+
<li><a href="https://livemeshelementor.com/pricing-table/" title="Pricing Table Extension">Pricing Plans</a> to help get more sales.</li></ul>
|
43 |
|
44 |
+
The <strong><a href="https://livemeshelementor.com/" title="Livemesh Addons for Elementor Premium" target="_blank">Premium version</a></strong> of the plugin comes with additional addons and advanced features added to elements above -
|
45 |
|
46 |
<ul>
|
47 |
+
<li><a href="https://livemeshelementor.com/posts-block/" title="Posts Block Addon">Posts Block</a> to help present your blog posts, events, news items or portfolio in a dozen creative ways. Comes with AJAX filtering, pagination and load more features to help visitors navigate your entire collection of blog posts or custom post types and their categories without reloading the page.</li>
|
48 |
+
<li><a href="https://livemeshelementor.com/twitter-grid/" title="Twitter Grid Addon">Twitter Grid</a> to help showcase tweets on your site with load more option.</li>
|
49 |
+
<li><a href="https://livemeshelementor.com/tabs/" title="Tabs Addon">Responsive Tabs</a> that function seamlessly across all devices and resolutions. The plugin features never before choice of over dozen styles of tabs to choosen from.</li>
|
50 |
+
<li><a href="https://livemeshelementor.com/accordion/" title="Accordion Module">Accordion/Toggle</a> that capture collapsible content panels when space is limited.</li>
|
51 |
+
<li><a href="https://livemeshelementor.com/sliders/" title="Image Slider Extension">Image Slider</a> to create a responsive slider of images with support for captions, multiple slider types like Nivo, Flex, Slick and lightweight sliders, thumbnail navigation etc.</li>
|
52 |
+
<li><a href="https://livemeshelementor.com/image-gallery/" title="Image Gallery Addon">Image Gallery</a> addon that lets you create a grid of images with options for masonry or fit rows, pagination, lazy load, lightbox support etc.</li>
|
53 |
+
<li><a href="https://livemeshelementor.com/video-gallery/" title="Video Gallery Addon">Video Gallery</a> to build a beautiful grid of videos to help showcase a collection of YouTube/Vimeo videos on your site.</li>
|
54 |
+
<li><a href="https://livemeshelementor.com/gallery-carousel/" title="Image Carousel">Image Carousel</a> for a responsive carousel of images.</li>
|
55 |
+
<li><a href="https://livemeshelementor.com/gallery-carousel/" title="Video Carousel">Video Carousel</a> for creation of a responsive carousel of YouTube/Vimeo videos.</li>
|
56 |
+
<li><a href="https://livemeshelementor.com/faq-element/" title="FAQ Element">FAQ element</a> to display a set of Frequently Asked Questions in a page.</li>
|
57 |
+
<li><a href="https://livemeshelementor.com/features/" title="Features Addon">Features Addon</a> for showcasing product features or services provided by an agency/business.</li>
|
58 |
+
<li><a href="https://livemeshelementor.com/buttons/" title="Buttons">Flat style buttons</a> with rich set of customization options.</li>
|
59 |
+
<li><a href="https://livemeshelementor.com/icon-lists/" title="Icon List element">Icon list addon</a> that lets you use either images or icon fonts to create custom social icons list, capture payment options etc.</li>
|
60 |
+
<li><a href="https://livemeshelementor.com/services-advanced/" title="Advanced Services">Advanced Services</a> with additional styles and animations for services addon.</li>
|
61 |
+
<li><a href="https://livemeshelementor.com/portfolio-grid-pro/" title="Posts Grid">Lazy Load</a> - The portfolio/post grid and image gallery addons incorporate option to lazy load posts/images with the click of a Load More button.</li>
|
62 |
+
<li><a href="https://livemeshelementor.com/portfolio-grid-pro/" title="Posts Grid">Pagination</a> - Create a grid of posts or custom post types with AJAX based pagination support. </li>
|
63 |
<li>Lightbox Support - The premium version comes with support for Lightbox for grid and carousel addons.</li>
|
64 |
<li>Customizations - Ability to choose custom font size, color or hover color for certain addons. More coming.</li>
|
65 |
<li>Custom Animations - Choose from over <strong>40+ animations</strong> for most addon elements (excludes sliders, carousels and grid). The animations display on user scrolling to the element or when the element becomes visible in the browser window.</li>
|
79 |
|
80 |
The premium version of the plugin entitles you to quick support with replies posted within 24 hours (on week days).
|
81 |
|
82 |
+
Please submit your support query through our <a href="https://livemeshelementor.com/contact-us/" title="Livemesh Contact form">website contact form</a>. This will create a support ticket in our support portal.
|
83 |
|
84 |
== Frequently Asked Questions ==
|
85 |
|
106 |
|
107 |
== Changelog ==
|
108 |
|
109 |
+
= 2.6.2 =
|
110 |
+
* Updated - Readme.txt and documentation
|
111 |
+
* Removed - Unused files in plugin folders.
|
112 |
+
|
113 |
= 2.6 =
|
114 |
+
* Updated - Freemius library with a security fix. Recommended to update immediately.
|
115 |
* Fixed - Some themes can raise JS error due to jQuery $ being unavailable
|
116 |
* Updated - Flexslider library with RTL support
|
117 |
|