Version Description
27/Mar/2020 =
FIX: Don't override advanced-cache.php if caching is disabled
Download this release
Release Info
| Developer | DavidAnderson |
| Plugin | |
| Version | 3.0.18 |
| Comparing to | |
| See all releases | |
Code changes from version 3.0.16 to 3.0.18
- cache/class-wpo-cache-config.php +20 -1
- cache/class-wpo-cache-rules.php +49 -0
- cache/class-wpo-load-url-task.php +1 -1
- cache/class-wpo-page-cache.php +61 -5
- cache/file-based-page-cache-functions.php +61 -1
- css/admin-3-0-16.min.css +0 -2
- css/admin-3-0-16.min.css.map +0 -1
- css/admin-3-0-18.min.css +2 -0
- css/admin-3-0-18.min.css.map +1 -0
- css/admin.css +6 -0
- css/smush-3-0-16.min.css +0 -2
- css/smush-3-0-16.min.css.map +0 -1
- css/smush-3-0-18.min.css +2 -0
- css/smush-3-0-18.min.css.map +1 -0
- css/smush.css +21 -17
- css/wp-optimize-admin-3-0-16.min.css +0 -2
- css/wp-optimize-admin-3-0-16.min.css.map +0 -1
- css/wp-optimize-admin-3-0-18.min.css +2 -0
- css/wp-optimize-admin-3-0-18.min.css.map +1 -0
- css/wp-optimize-admin.css +306 -13
- css/wp-optimize-notices-3-0-16.min.css +0 -2
- css/wp-optimize-notices-3-0-16.min.css.map +0 -1
- css/wp-optimize-notices.css +0 -136
- google-fonts.json +1 -0
- includes/class-commands.php +25 -9
- includes/class-updraft-php-logger.php +1 -0
- includes/class-updraft-smush-manager-commands.php +1 -0
- includes/class-updraft-smush-manager.php +10 -10
- includes/class-wp-optimize-options.php +1 -1
- includes/class-wp-optimize-updates.php +8 -0
- includes/class-wp-optimizer.php +19 -2
- includes/wp-optimize-notices.php +12 -15
- js/cache-3-0-16.min.js +0 -1
- js/cache-3-0-18.min.js +1 -0
- js/cache.js +5 -3
- js/handlebars/LICENSE +1 -1
- js/handlebars/handlebars.js +298 -98
- js/handlebars/handlebars.min.js +5 -5
- js/handlebars/handlebars.runtime.js +245 -37
- js/handlebars/handlebars.runtime.min.js +3 -3
- js/loadAsync-3-0-18.min.js +1 -0
- js/loadAsync.js +23 -0
- js/loadCSS-3-0-18.min.js +1 -0
- js/loadCSS.js +89 -0
- js/minify-3-0-18.min.js +1 -0
- js/minify-admin-purge-3-0-18.min.js +1 -0
- js/minify-admin-purge.js +16 -0
- js/minify.js +244 -0
- js/{queue-3-0-16.min.js → queue-3-0-18.min.js} +0 -0
- js/send-command-3-0-18.min.js +1 -0
- js/send-command.js +105 -0
- js/tablesorter/jquery.tablesorter.js +2914 -2914
- js/tablesorter/jquery.tablesorter.min.js +1 -1
- js/tablesorter/jquery.tablesorter.widgets.js +614 -1215
cache/class-wpo-cache-config.php
CHANGED
|
@@ -103,6 +103,8 @@ class WPO_Cache_Config {
|
|
| 103 |
update_option('wpo_cache_config', $config);
|
| 104 |
}
|
| 105 |
|
|
|
|
|
|
|
| 106 |
return $this->write($config, $skip_disk_if_not_yet_present);
|
| 107 |
}
|
| 108 |
|
|
@@ -163,7 +165,23 @@ class WPO_Cache_Config {
|
|
| 163 |
}
|
| 164 |
|
| 165 |
$this->config = wp_parse_args($config, $this->get_defaults());
|
| 166 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 167 |
return false;
|
| 168 |
}
|
| 169 |
|
|
@@ -231,6 +249,7 @@ class WPO_Cache_Config {
|
|
| 231 |
'enable_mobile_caching' => false,
|
| 232 |
'enable_user_caching' => false,
|
| 233 |
'site_url' => network_site_url('/'),
|
|
|
|
| 234 |
);
|
| 235 |
|
| 236 |
return apply_filters('wpo_cache_defaults', $defaults);
|
| 103 |
update_option('wpo_cache_config', $config);
|
| 104 |
}
|
| 105 |
|
| 106 |
+
do_action('wpo_cache_config_updated', $config);
|
| 107 |
+
|
| 108 |
return $this->write($config, $skip_disk_if_not_yet_present);
|
| 109 |
}
|
| 110 |
|
| 165 |
}
|
| 166 |
|
| 167 |
$this->config = wp_parse_args($config, $this->get_defaults());
|
| 168 |
+
|
| 169 |
+
// from 3.0.17 we use more secure way to store cache config files.
|
| 170 |
+
$advanced_cache_version = WPO_Page_Cache::instance()->get_advanced_cache_version();
|
| 171 |
+
// if advanced-cache.php exists and has at least 3.0.17 version or
|
| 172 |
+
// advanced-cache.php doesn't exist and WP-O has at least 3.0.17 version then
|
| 173 |
+
// we write the cache config in a new format.
|
| 174 |
+
if (($advanced_cache_version && (0 >= version_compare($advanced_cache_version, '3.0.17')))
|
| 175 |
+
|| (!$advanced_cache_version && (0 >= version_compare(WPO_VERSION, '3.0.17')))
|
| 176 |
+
) {
|
| 177 |
+
$config_content = '<?php' . "\n"
|
| 178 |
+
. 'if (!defined(\'ABSPATH\')) die(\'No direct access allowed\');' . "\n\n"
|
| 179 |
+
. '$GLOBALS[\'wpo_cache_config\'] = json_decode(\'' . json_encode($this->config) . '\', true);' . "\n";
|
| 180 |
+
} else {
|
| 181 |
+
$config_content = json_encode($this->config);
|
| 182 |
+
}
|
| 183 |
+
|
| 184 |
+
if ((!$only_if_present || file_exists($config_file)) && !file_put_contents($config_file, $config_content)) {
|
| 185 |
return false;
|
| 186 |
}
|
| 187 |
|
| 249 |
'enable_mobile_caching' => false,
|
| 250 |
'enable_user_caching' => false,
|
| 251 |
'site_url' => network_site_url('/'),
|
| 252 |
+
'enable_cache_per_country' => false,
|
| 253 |
);
|
| 254 |
|
| 255 |
return apply_filters('wpo_cache_defaults', $defaults);
|
cache/class-wpo-cache-rules.php
CHANGED
|
@@ -38,11 +38,13 @@ class WPO_Cache_Rules {
|
|
| 38 |
*/
|
| 39 |
public function setup_hooks() {
|
| 40 |
add_action('save_post', array($this, 'purge_post_on_update'), 10, 1);
|
|
|
|
| 41 |
add_action('wp_trash_post', array($this, 'purge_post_on_update'), 10, 1);
|
| 42 |
add_action('comment_post', array($this, 'purge_post_on_comment'), 10, 3);
|
| 43 |
add_action('wp_set_comment_status', array($this, 'purge_post_on_comment_status_change'), 10, 1);
|
| 44 |
add_action('edit_terms', array($this, 'purge_related_elements_on_term_updated'), 10, 2);
|
| 45 |
add_action('set_object_terms', array($this, 'purge_related_elements_on_post_terms_change'), 10, 6);
|
|
|
|
| 46 |
|
| 47 |
/**
|
| 48 |
* List of hooks for which when executed, the cache will be purged
|
|
@@ -119,6 +121,41 @@ class WPO_Cache_Rules {
|
|
| 119 |
}
|
| 120 |
}
|
| 121 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
/**
|
| 123 |
* We use it with edit_terms action filter to purge cached elements related
|
| 124 |
* to updated term when term updated.
|
|
@@ -202,6 +239,18 @@ class WPO_Cache_Rules {
|
|
| 202 |
}
|
| 203 |
}
|
| 204 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 205 |
/**
|
| 206 |
* Returns an instance of the current class, creates one if it doesn't exist
|
| 207 |
*
|
| 38 |
*/
|
| 39 |
public function setup_hooks() {
|
| 40 |
add_action('save_post', array($this, 'purge_post_on_update'), 10, 1);
|
| 41 |
+
add_action('save_post', array($this, 'purge_archive_pages_on_post_update'), 10, 1);
|
| 42 |
add_action('wp_trash_post', array($this, 'purge_post_on_update'), 10, 1);
|
| 43 |
add_action('comment_post', array($this, 'purge_post_on_comment'), 10, 3);
|
| 44 |
add_action('wp_set_comment_status', array($this, 'purge_post_on_comment_status_change'), 10, 1);
|
| 45 |
add_action('edit_terms', array($this, 'purge_related_elements_on_term_updated'), 10, 2);
|
| 46 |
add_action('set_object_terms', array($this, 'purge_related_elements_on_post_terms_change'), 10, 6);
|
| 47 |
+
add_action('wpo_cache_config_updated', array($this, 'cache_config_updated'), 10, 1);
|
| 48 |
|
| 49 |
/**
|
| 50 |
* List of hooks for which when executed, the cache will be purged
|
| 121 |
}
|
| 122 |
}
|
| 123 |
|
| 124 |
+
/**
|
| 125 |
+
* Purge archive pages on post update.
|
| 126 |
+
*
|
| 127 |
+
* @param integer $post_id
|
| 128 |
+
*/
|
| 129 |
+
public function purge_archive_pages_on_post_update($post_id) {
|
| 130 |
+
$post_type = get_post_type($post_id);
|
| 131 |
+
|
| 132 |
+
if ((defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) || 'revision' === $post_type) {
|
| 133 |
+
return;
|
| 134 |
+
}
|
| 135 |
+
|
| 136 |
+
$post_obj = get_post_type_object($post_type);
|
| 137 |
+
|
| 138 |
+
if ('post' == $post_type) {
|
| 139 |
+
// delete all archive pages for post.
|
| 140 |
+
$post_date = get_post_time('Y-m-j', false, $post_id);
|
| 141 |
+
list($year, $month, $day) = $post_date;
|
| 142 |
+
|
| 143 |
+
$archive_links = array(
|
| 144 |
+
get_year_link($year),
|
| 145 |
+
get_month_link($year, $month),
|
| 146 |
+
get_day_link($year, $month, $day),
|
| 147 |
+
);
|
| 148 |
+
|
| 149 |
+
foreach ($archive_links as $link) {
|
| 150 |
+
WPO_Page_Cache::delete_cache_by_url($link, true);
|
| 151 |
+
}
|
| 152 |
+
} elseif ($post_obj->has_archive) {
|
| 153 |
+
// delete archive page for custom post type.
|
| 154 |
+
WPO_Page_Cache::delete_cache_by_url(get_post_type_archive_link($post_type), true);
|
| 155 |
+
}
|
| 156 |
+
|
| 157 |
+
}
|
| 158 |
+
|
| 159 |
/**
|
| 160 |
* We use it with edit_terms action filter to purge cached elements related
|
| 161 |
* to updated term when term updated.
|
| 239 |
}
|
| 240 |
}
|
| 241 |
|
| 242 |
+
/**
|
| 243 |
+
* Triggered by wpo_cache_config_updated.
|
| 244 |
+
*
|
| 245 |
+
* @param array $config
|
| 246 |
+
*/
|
| 247 |
+
public function cache_config_updated($config) {
|
| 248 |
+
// delete front page form cache if defined in the settings
|
| 249 |
+
if (is_array($config['cache_exception_urls']) && in_array('/', $config['cache_exception_urls'])) {
|
| 250 |
+
WPO_Page_Cache::delete_cache_by_url(home_url());
|
| 251 |
+
}
|
| 252 |
+
}
|
| 253 |
+
|
| 254 |
/**
|
| 255 |
* Returns an instance of the current class, creates one if it doesn't exist
|
| 256 |
*
|
cache/class-wpo-load-url-task.php
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
|
| 3 |
if (!defined('ABSPATH')) die('Access denied.');
|
| 4 |
|
| 5 |
-
if (!class_exists('Updraft_Task_1_1')) require_once(WPO_PLUGIN_MAIN_PATH . 'vendor/updraft-tasks/class-updraft-task.php');
|
| 6 |
|
| 7 |
if (!class_exists('WP_Optimize_Page_Cache_Preloader')) require_once(dirname(__FILE__) . '/class-wpo-cache-preloader.php');
|
| 8 |
|
| 2 |
|
| 3 |
if (!defined('ABSPATH')) die('Access denied.');
|
| 4 |
|
| 5 |
+
if (!class_exists('Updraft_Task_1_1')) require_once(WPO_PLUGIN_MAIN_PATH . 'vendor/team-updraft/common-libs/src/updraft-tasks/class-updraft-task.php');
|
| 6 |
|
| 7 |
if (!class_exists('WP_Optimize_Page_Cache_Preloader')) require_once(dirname(__FILE__) . '/class-wpo-cache-preloader.php');
|
| 8 |
|
cache/class-wpo-page-cache.php
CHANGED
|
@@ -87,6 +87,13 @@ class WPO_Page_Cache {
|
|
| 87 |
*/
|
| 88 |
public $advanced_cache_file_content;
|
| 89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
/**
|
| 91 |
* Set everything up here
|
| 92 |
*/
|
|
@@ -109,12 +116,15 @@ class WPO_Page_Cache {
|
|
| 109 |
|
| 110 |
// Handle single page purge.
|
| 111 |
add_action('wp_loaded', array($this, 'handle_purge_single_page_cache'));
|
|
|
|
|
|
|
| 112 |
}
|
| 113 |
|
| 114 |
/**
|
| 115 |
* Do required actions on activate/deactivate any plugin.
|
| 116 |
*/
|
| 117 |
public function activate_deactivate_plugin() {
|
|
|
|
| 118 |
$this->update_cache_config();
|
| 119 |
|
| 120 |
/**
|
|
@@ -272,7 +282,7 @@ class WPO_Page_Cache {
|
|
| 272 |
*/
|
| 273 |
public function show_notice($message, $type) {
|
| 274 |
?>
|
| 275 |
-
<div class="notice notice-<?php echo $type; ?> is-dismissible">
|
| 276 |
<p><?php echo $message; ?></p>
|
| 277 |
</div>
|
| 278 |
<script>
|
|
@@ -455,8 +465,12 @@ class WPO_Page_Cache {
|
|
| 455 |
return new WP_Error('create_folders', sprintf(__('The request to the filesystem failed: unable to create directory %s. Please check your file permissions.'), str_ireplace(ABSPATH, '', WPO_CACHE_CONFIG_DIR)));
|
| 456 |
}
|
| 457 |
|
| 458 |
-
if (!is_dir(WPO_CACHE_FILES_DIR)
|
| 459 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 460 |
}
|
| 461 |
|
| 462 |
return true;
|
|
@@ -533,7 +547,11 @@ if (false !== \$plugin_location) {
|
|
| 533 |
|
| 534 |
if (!@file_exists(WPO_CACHE_CONFIG_DIR . '/$config_file_basename')) { return; }
|
| 535 |
|
| 536 |
-
\$GLOBALS['wpo_cache_config'] = json_decode(file_get_contents(WPO_CACHE_CONFIG_DIR . '/$config_file_basename'), true);
|
|
|
|
|
|
|
|
|
|
|
|
|
| 537 |
|
| 538 |
if (empty(\$GLOBALS['wpo_cache_config']) || empty(\$GLOBALS['wpo_cache_config']['enable_page_caching'])) { return; }
|
| 539 |
|
|
@@ -551,7 +569,7 @@ EOF;
|
|
| 551 |
return false;
|
| 552 |
}
|
| 553 |
|
| 554 |
-
if (file_put_contents($this->get_advanced_cache_filename(), $this->advanced_cache_file_content)) {
|
| 555 |
$this->advanced_cache_file_writing_error = true;
|
| 556 |
return false;
|
| 557 |
}
|
|
@@ -560,6 +578,32 @@ EOF;
|
|
| 560 |
return true;
|
| 561 |
}
|
| 562 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 563 |
/**
|
| 564 |
* Get WPO version number from advanced-cache.php file.
|
| 565 |
*
|
|
@@ -840,6 +884,18 @@ EOF;
|
|
| 840 |
wpo_delete_files($path, false);
|
| 841 |
}
|
| 842 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 843 |
/**
|
| 844 |
* Logs error messages
|
| 845 |
*
|
| 87 |
*/
|
| 88 |
public $advanced_cache_file_content;
|
| 89 |
|
| 90 |
+
/**
|
| 91 |
+
* Store the latest advanced-cache.php version required
|
| 92 |
+
*
|
| 93 |
+
* @var string
|
| 94 |
+
*/
|
| 95 |
+
private $_minimum_advanced_cache_file_version = '3.0.17';
|
| 96 |
+
|
| 97 |
/**
|
| 98 |
* Set everything up here
|
| 99 |
*/
|
| 116 |
|
| 117 |
// Handle single page purge.
|
| 118 |
add_action('wp_loaded', array($this, 'handle_purge_single_page_cache'));
|
| 119 |
+
|
| 120 |
+
add_action('admin_init', array($this, 'admin_init'));
|
| 121 |
}
|
| 122 |
|
| 123 |
/**
|
| 124 |
* Do required actions on activate/deactivate any plugin.
|
| 125 |
*/
|
| 126 |
public function activate_deactivate_plugin() {
|
| 127 |
+
|
| 128 |
$this->update_cache_config();
|
| 129 |
|
| 130 |
/**
|
| 282 |
*/
|
| 283 |
public function show_notice($message, $type) {
|
| 284 |
?>
|
| 285 |
+
<div class="notice wpo-notice notice-<?php echo $type; ?> is-dismissible">
|
| 286 |
<p><?php echo $message; ?></p>
|
| 287 |
</div>
|
| 288 |
<script>
|
| 465 |
return new WP_Error('create_folders', sprintf(__('The request to the filesystem failed: unable to create directory %s. Please check your file permissions.'), str_ireplace(ABSPATH, '', WPO_CACHE_CONFIG_DIR)));
|
| 466 |
}
|
| 467 |
|
| 468 |
+
if (!is_dir(WPO_CACHE_FILES_DIR)) {
|
| 469 |
+
if (!wp_mkdir_p(WPO_CACHE_FILES_DIR)) {
|
| 470 |
+
return new WP_Error('create_folders', sprintf(__('The request to the filesystem failed: unable to create directory %s. Please check your file permissions.'), str_ireplace(ABSPATH, '', WPO_CACHE_FILES_DIR)));
|
| 471 |
+
} else {
|
| 472 |
+
wpo_disable_cache_directories_viewing();
|
| 473 |
+
}
|
| 474 |
}
|
| 475 |
|
| 476 |
return true;
|
| 547 |
|
| 548 |
if (!@file_exists(WPO_CACHE_CONFIG_DIR . '/$config_file_basename')) { return; }
|
| 549 |
|
| 550 |
+
\$GLOBALS['wpo_cache_config'] = @json_decode(file_get_contents(WPO_CACHE_CONFIG_DIR . '/$config_file_basename'), true);
|
| 551 |
+
|
| 552 |
+
if (empty(\$GLOBALS['wpo_cache_config'])) {
|
| 553 |
+
include_once(WPO_CACHE_CONFIG_DIR . '/$config_file_basename');
|
| 554 |
+
}
|
| 555 |
|
| 556 |
if (empty(\$GLOBALS['wpo_cache_config']) || empty(\$GLOBALS['wpo_cache_config']['enable_page_caching'])) { return; }
|
| 557 |
|
| 569 |
return false;
|
| 570 |
}
|
| 571 |
|
| 572 |
+
if (!file_put_contents($this->get_advanced_cache_filename(), $this->advanced_cache_file_content)) {
|
| 573 |
$this->advanced_cache_file_writing_error = true;
|
| 574 |
return false;
|
| 575 |
}
|
| 578 |
return true;
|
| 579 |
}
|
| 580 |
|
| 581 |
+
/**
|
| 582 |
+
* Update advanced cache version if needed.
|
| 583 |
+
*/
|
| 584 |
+
public function maybe_update_advanced_cache() {
|
| 585 |
+
|
| 586 |
+
if (!$this->is_enabled()) return;
|
| 587 |
+
|
| 588 |
+
// from 3.0.17 we use more secure way to store cache config files and need update advanced-cache.php
|
| 589 |
+
$advanced_cache_current_version = $this->get_advanced_cache_version();
|
| 590 |
+
if ($advanced_cache_current_version && version_compare($advanced_cache_current_version, $this->_minimum_advanced_cache_file_version, '>=')) return;
|
| 591 |
+
|
| 592 |
+
if (!$this->write_advanced_cache()) {
|
| 593 |
+
add_action('admin_notices', array($this, 'notice_advanced_cache_autoupdate_error'));
|
| 594 |
+
} else {
|
| 595 |
+
$this->update_cache_config();
|
| 596 |
+
}
|
| 597 |
+
}
|
| 598 |
+
|
| 599 |
+
/**
|
| 600 |
+
* Show notification when advanced-cache.php could not be updated.
|
| 601 |
+
*/
|
| 602 |
+
public function notice_advanced_cache_autoupdate_error() {
|
| 603 |
+
$this->show_notice(__('The file advanced-cache.php needs to be updated, but the automatic process failed.', 'wp_optimize').
|
| 604 |
+
' <a href="'.admin_url('admin.php?page=wpo_cache').'">'.__('Please try to re-enable WP-Optimize cache manually.', 'wp-optimize').'</a>', 'error');
|
| 605 |
+
}
|
| 606 |
+
|
| 607 |
/**
|
| 608 |
* Get WPO version number from advanced-cache.php file.
|
| 609 |
*
|
| 884 |
wpo_delete_files($path, false);
|
| 885 |
}
|
| 886 |
|
| 887 |
+
/**
|
| 888 |
+
* Admin actions
|
| 889 |
+
*
|
| 890 |
+
* @return void
|
| 891 |
+
*/
|
| 892 |
+
public function admin_init() {
|
| 893 |
+
// Maybe update the advanced cache.
|
| 894 |
+
if ((!defined('DOING_AJAX') || !DOING_AJAX) && current_user_can('update_plugins')) {
|
| 895 |
+
$this->maybe_update_advanced_cache();
|
| 896 |
+
}
|
| 897 |
+
}
|
| 898 |
+
|
| 899 |
/**
|
| 900 |
* Logs error messages
|
| 901 |
*
|
cache/file-based-page-cache-functions.php
CHANGED
|
@@ -46,6 +46,8 @@ function wpo_cache($buffer, $flags) {
|
|
| 46 |
// Try creating a folder for cached files, if it was flushed recently
|
| 47 |
if (!mkdir(WPO_CACHE_FILES_DIR)) {
|
| 48 |
$no_cache_because[] = __('WP-O cache directory was not found', 'wp-optimize').' ('.WPO_CACHE_FILES_DIR.')';
|
|
|
|
|
|
|
| 49 |
}
|
| 50 |
}
|
| 51 |
|
|
@@ -123,7 +125,13 @@ function wpo_cache($buffer, $flags) {
|
|
| 123 |
|
| 124 |
$add_to_footer = '';
|
| 125 |
|
| 126 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
if (!empty($GLOBALS['wpo_cache_config']['enable_mobile_caching']) && wpo_is_mobile()) {
|
| 128 |
$add_to_footer .= "\n<!-- Cached by WP-Optimize - for mobile devices - https://getwpo.com - Last modified: " . gmdate('D, d M Y H:i:s', $modified_time) . " GMT -->\n";
|
| 129 |
} else {
|
|
@@ -131,6 +139,9 @@ function wpo_cache($buffer, $flags) {
|
|
| 131 |
}
|
| 132 |
}
|
| 133 |
|
|
|
|
|
|
|
|
|
|
| 134 |
/**
|
| 135 |
* Save $buffer into cache file.
|
| 136 |
*/
|
|
@@ -197,6 +208,12 @@ function wpo_restricted_cache_page_type($restricted) {
|
|
| 197 |
$restricted = __('Page type is not cacheable (search, 404 or password-protected)', 'wp-optimize');
|
| 198 |
}
|
| 199 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 200 |
// Don't cache htacesss. Remember to properly escape any output to prevent injection.
|
| 201 |
if (strpos($_SERVER['REQUEST_URI'], '.htaccess') !== false) {
|
| 202 |
$restricted = 'The file path is unsuitable for caching ('.$_SERVER['REQUEST_URI'].')';
|
|
@@ -613,6 +630,9 @@ function wpo_url_in_exceptions($url) {
|
|
| 613 |
if (!empty($exceptions)) {
|
| 614 |
foreach ($exceptions as $exception) {
|
| 615 |
|
|
|
|
|
|
|
|
|
|
| 616 |
if (wpo_url_exception_match($url, $exception)) {
|
| 617 |
// Exception match.
|
| 618 |
return true;
|
|
@@ -883,3 +903,43 @@ function wpo_cache_config_get($key, $default = false) {
|
|
| 883 |
}
|
| 884 |
}
|
| 885 |
endif;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
// Try creating a folder for cached files, if it was flushed recently
|
| 47 |
if (!mkdir(WPO_CACHE_FILES_DIR)) {
|
| 48 |
$no_cache_because[] = __('WP-O cache directory was not found', 'wp-optimize').' ('.WPO_CACHE_FILES_DIR.')';
|
| 49 |
+
} else {
|
| 50 |
+
wpo_disable_cache_directories_viewing();
|
| 51 |
}
|
| 52 |
}
|
| 53 |
|
| 125 |
|
| 126 |
$add_to_footer = '';
|
| 127 |
|
| 128 |
+
/**
|
| 129 |
+
* Filter wether to display the html comment <!-- Cached by WP-Optimize ... -->
|
| 130 |
+
*
|
| 131 |
+
* @param boolean $show - Wether to display the html comment
|
| 132 |
+
* @return boolean
|
| 133 |
+
*/
|
| 134 |
+
if (preg_match('#</html>#i', $buffer) && (apply_filters('wpo_cache_show_cached_by_comment', true) || (defined('WP_DEBUG') && WP_DEBUG))) {
|
| 135 |
if (!empty($GLOBALS['wpo_cache_config']['enable_mobile_caching']) && wpo_is_mobile()) {
|
| 136 |
$add_to_footer .= "\n<!-- Cached by WP-Optimize - for mobile devices - https://getwpo.com - Last modified: " . gmdate('D, d M Y H:i:s', $modified_time) . " GMT -->\n";
|
| 137 |
} else {
|
| 139 |
}
|
| 140 |
}
|
| 141 |
|
| 142 |
+
// Create an empty index.php file in the cache directory for disable directory viewing.
|
| 143 |
+
if (!is_file($path . '/index.php')) file_put_contents($path . '/index.php', '');
|
| 144 |
+
|
| 145 |
/**
|
| 146 |
* Save $buffer into cache file.
|
| 147 |
*/
|
| 208 |
$restricted = __('Page type is not cacheable (search, 404 or password-protected)', 'wp-optimize');
|
| 209 |
}
|
| 210 |
|
| 211 |
+
// Don't cache the front page if option is set.
|
| 212 |
+
if (in_array('/', wpo_get_url_exceptions()) && function_exists('is_front_page') && is_front_page()) {
|
| 213 |
+
|
| 214 |
+
$restricted = __('In the settings, caching is disabled for the front page', 'wp-optimize');
|
| 215 |
+
}
|
| 216 |
+
|
| 217 |
// Don't cache htacesss. Remember to properly escape any output to prevent injection.
|
| 218 |
if (strpos($_SERVER['REQUEST_URI'], '.htaccess') !== false) {
|
| 219 |
$restricted = 'The file path is unsuitable for caching ('.$_SERVER['REQUEST_URI'].')';
|
| 630 |
if (!empty($exceptions)) {
|
| 631 |
foreach ($exceptions as $exception) {
|
| 632 |
|
| 633 |
+
// don't check / - front page using regexp, we handle it in wpo_restricted_cache_page_type()
|
| 634 |
+
if ('/' == $exception) continue;
|
| 635 |
+
|
| 636 |
if (wpo_url_exception_match($url, $exception)) {
|
| 637 |
// Exception match.
|
| 638 |
return true;
|
| 903 |
}
|
| 904 |
}
|
| 905 |
endif;
|
| 906 |
+
|
| 907 |
+
if (!function_exists('wpo_disable_cache_directories_viewing')) :
|
| 908 |
+
function wpo_disable_cache_directories_viewing() {
|
| 909 |
+
global $is_apache, $is_IIS, $is_iis7;
|
| 910 |
+
|
| 911 |
+
if (!is_dir(WPO_CACHE_FILES_DIR)) return;
|
| 912 |
+
|
| 913 |
+
// Create .htaccess file for apache server.
|
| 914 |
+
if ($is_apache) {
|
| 915 |
+
$htaccess_filename = WPO_CACHE_FILES_DIR . '/.htaccess';
|
| 916 |
+
|
| 917 |
+
// CS does not like heredoc
|
| 918 |
+
// phpcs:disable
|
| 919 |
+
$htaccess_content = <<<EOF
|
| 920 |
+
# Disable directory browsing
|
| 921 |
+
Options -Indexes
|
| 922 |
+
|
| 923 |
+
# Disable access to any files
|
| 924 |
+
<FilesMatch ".*">
|
| 925 |
+
Order allow,deny
|
| 926 |
+
Deny from all
|
| 927 |
+
</FilesMatch>
|
| 928 |
+
EOF;
|
| 929 |
+
// phpcs:enable
|
| 930 |
+
|
| 931 |
+
if (!is_file($htaccess_filename)) @file_put_contents($htaccess_filename, $htaccess_content); // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged
|
| 932 |
+
}
|
| 933 |
+
|
| 934 |
+
// Create web.config file for IIS servers.
|
| 935 |
+
if ($is_IIS || $is_iis7) {
|
| 936 |
+
$webconfig_filename = WPO_CACHE_FILES_DIR . '/web.config';
|
| 937 |
+
$webconfig_content = "<configuration>\n<system.webServer>\n<authorization>\n<deny users=\"*\" />\n</authorization>\n</system.webServer>\n</configuration>\n";
|
| 938 |
+
|
| 939 |
+
if (!is_file($webconfig_filename)) @file_put_contents($webconfig_filename, $webconfig_content); // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged
|
| 940 |
+
}
|
| 941 |
+
|
| 942 |
+
// Create empty index.php file for all servers.
|
| 943 |
+
if (!is_file(WPO_CACHE_FILES_DIR . '/index.php')) @file_put_contents(WPO_CACHE_FILES_DIR . '/index.php', '');// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged
|
| 944 |
+
}
|
| 945 |
+
endif;
|
css/admin-3-0-16.min.css
DELETED
|
@@ -1,2 +0,0 @@
|
|
| 1 |
-
.wpo_hidden{display:none !important}.wpo_info{background:#FFF;color:#444;font-family:-apple-system,"BlinkMacSystemFont","Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif;margin:2em auto;padding:1em 2em;max-width:700px;box-shadow:0 1px 3px rgba(0,0,0,0.13)}#wp-optimize-wrap .widefat thead th,#wp-optimize-wrap .widefat thead td{border-bottom:1px solid #e1e1e1}#wp-optimize-wrap .widefat td,#wp-optimize-wrap .widefat th{padding:8px 10px}.wpo_primary_big{padding:4px 6px !important;font-size:22px !important;min-height:34px;min-width:200px}.wpo_section{clear:both;padding:0;margin:0}.wp-optimize-settings{margin-bottom:16px}.wp-optimize-settings td>label{font-weight:bold;display:block;margin-bottom:8px}.wpo_col{display:block;float:left;margin:1% 0 1% 1%}.wpo_col:first-child{margin-left:0}.wpo_group:before,.wpo_group:after{content:"";display:table}.wpo_group:after{clear:both}.wpo_half_width{width:48%}.wpo_span_3_of_3{width:100%}.wpo_span_2_of_3{width:65.3%}.wpo_span_1_of_3{width:32.1%}#wp-optimize-wrap .nav-tab-wrapper{margin:0}@media screen and (min-width:549px){.show_on_default_sizes{display:block !important}.show_on_mobile_sizes{display:none !important}}@media screen and (max-width:548px){.show_on_default_sizes{display:none !important}.show_on_mobile_sizes{display:block !important}}@media screen and (max-width:768px){.wpo_col{margin:1% 0}.wpo_span_3_of_3{width:100%}.wpo_span_2_of_3{width:100%}.wpo_span_1_of_3{width:100%}.wpo_half_width{width:100%}}.wp-optimize-setting-is-sensitive td>label::before{content:"\f534";font-family:'dashicons';display:inline-block;margin-right:6px;font-style:normal;line-height:1;vertical-align:middle;width:20px;font-size:18px;height:20px;text-align:center;color:#72777c}.wpo-run-optimizations__container{margin-bottom:15px}td.wp-optimize-settings-optimization-checkbox{width:18px;padding-left:4px;padding-right:0}.wp-optimize-settings-optimization-checkbox input{margin:0;padding:0}#retention-period{width:60px}.wp-optimize-settings-optimization-info{font-size:80%;font-style:italic}img.addons{display:block;margin-left:auto;margin-right:auto;margin-bottom:20px;max-height:44px;height:auto;max-width:100%}.wpo_spinner{width:18px;height:18px;padding-left:10px;display:none;position:relative;top:4px}.optimization_spinner{width:20px;height:20px}#wp-optimize-auto-options{margin:20px 0 0 28px}.display-none{display:none}.visibility-hidden{visibility:hidden}.margin-one-percent{margin:1%}#save_done,.save-done{color:#d94f00;font-size:220% !important}.wp-optimize-settings-optimization-info a{text-decoration:underline}.wp-optimize-settings-optimization-run-spinner{position:relative;top:2px}@media screen and (min-width:782px){td.wp-optimize-settings-optimization-run{width:180px;padding-top:16px}}#wpoptimize_table_list .tablesorter-filter-row{display:none !important}#wpoptimize_table_list .optimization_spinner{position:relative;top:2px;left:5px}#wpoptimize_table_list .optimization_spinner.visibility-hidden{display:none}#wpoptimize_table_list_filter{width:100%;margin-bottom:15px}#wpoptimize_table_list_tables_not_found{display:none;margin:20px 0}div#wpoptimize_table_list_tables_not_found+h3{margin-top:30px}#wpoptimize_table_list tr th:first-child,#wpoptimize_table_list tr td:first-child{display:none}#optimize_form .select2-container,#wp-optimize-auto-options .select2-container{width:50% !important;top:-5px;height:40px;margin-left:10px}#wpoptimize_table_list .optimization_done_icon{color:#009b24;font-size:200%;display:inline-block;position:relative}#wpo_sitelist_show_moreoptions_cron{font-size:13px;line-height:1.5;letter-spacing:1px}#wp-optimize-nav-tab-contents-images .wpo_span_2_of_3 h3{display:inline-block}.wpo_remove_selected_sizes_btn__container{margin-top:20px}.unused-image-sizes__label{display:block;line-height:1.6}@media(max-width:782px){.unused-image-sizes__label{margin-left:30px;margin-bottom:15px;line-height:1;word-break:break-word}.unused-image-sizes__label input[type=checkbox]{margin-left:-30px}body.rtl .unused-image-sizes__label{margin-right:30px;margin-left:0}body.rtl .unused-image-sizes__label input[type=checkbox]{margin-left:4px;margin-right:-30px}}#wp-optimize-nav-tab-contents-tables a{vertical-align:middle}#wpo_sitelist_moreoptions,#wpo_sitelist_moreoptions_cron{margin:4px 16px 6px 0;border:1px dotted;padding:6px 10px;max-height:300px;overflow-y:scroll;overflow-x:hidden}#wpo_sitelist_moreoptions{max-height:150px;margin-right:0}#wpo_settings_sites_list li,#wpo_settings_sites_list li a{font-size:13px;line-height:1.5}#wpo_sitelist_moreoptions_cron li{padding-left:20px}#wpo_import_error_message{display:none;color:#9b0000}#wpo_import_success_message{display:none;color:#46b450}#wp-optimize-logging-options{margin-top:10px}.wpo_logging_header{font-weight:bold;border-top:1px solid #333;border-bottom:1px solid #333;padding:5px 0;margin:0}.wpo_logging_row{border-bottom:1px solid #a1a2a3;padding:5px 0}.wpo_logging_logger_title,.wpo_logging_options_title,.wpo_logging_status_title,.wpo_logging_actions_title,.wpo_logging_logger_row,.wpo_logging_options_row,.wpo_logging_status_row,.wpo_logging_actions_row{display:inline-block;vertical-align:middle}.wpo_logging_logger_title,.wpo_logging_logger_row{width:38%}.wpo_logging_options_title,.wpo_logging_options_row{width:44%}.wpo_logging_status_title,.wpo_logging_status_row{width:8%}.wpo_logging_actions_title,.wpo_logging_actions_row{width:7%}.wpo_logging_actions_row{text-align:right}.wpo_logging_options_row{word-wrap:break-word}.wpo_logging_actions_row .dashicons-no-alt,.wpo_add_logger_form .dashicons-no-alt{background-color:#f06666;color:#FFF;width:20px;height:20px;border-radius:20px;display:inline-block;cursor:pointer;margin-left:5px}.wpo_add_logger_form .dashicons-no-alt{margin-top:12px;margin-right:10px;float:right}.wpo_logger_type{width:90%;margin-top:10px}.wpo_logger_addition_option{width:100%;margin-top:5px}.wpo_alert_notice{background-color:#f06666;color:#FFF;padding:5px;display:block;margin-bottom:5px;border-radius:5px}.wpo_error_field{border-color:#f06666 !important}.save_settings_reminder{display:none;color:#333;padding:15px 20px;background-color:#f0a5a4;border-radius:3px;margin:15px 0}#wpo_remove_selected_sizes{margin-top:20px}.wpo_unused_images_buttons_wrap{float:right;margin-right:20px}.wpo_unused_images_container h3{min-width:150px}#wpo_unused_images,#wpo_smush_images_grid{max-height:500px;overflow-y:auto}#wpo_unused_images a{outline:0}#wp-optimize-nav-tab-wpo_database-tables-contents .wpo-take-a-backup{margin-left:1%}.run-single-table-delete{margin-top:3px}#wpo_browser_cache_output,#wpo_gzip_compression_output,#wpo_advanced_cache_output{background:#f0f0f0;padding:10px;border:1px solid #CCC;white-space:pre-wrap}#wpo_gzip_compression_error_message,.wpo-error{color:#9b0000}.notice.wpo-error__enabling-cache{white-space:pre;margin-bottom:15px}a.loading.wpo-refresh-gzip-status{color:rgba(68,68,68,0.5);text-decoration:none}a.loading.wpo-refresh-gzip-status img.wpo_spinner.display-none{display:inline-block}#wpo_browser_cache_expire_days,#wpo_browser_cache_expire_hours{width:50px}.wpo-enabled .wpo-disabled{display:none}.wpo-disabled .wpo-enabled{display:none}.wpo-button-wrap{margin-top:10px}
|
| 2 |
-
/*# sourceMappingURL=admin-3-0-16.min.css.map */
|
|
|
|
|
|
css/admin-3-0-16.min.css.map
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
{"version":3,"sources":["css/admin.css"],"names":[],"mappings":"AAAA;CACC,yBAAyB;CACzB;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,2IAA2I;CAC3I,iBAAiB;CACjB,iBAAiB;CACjB,iBAAiB;CAEjB,uCAAuC;CACvC;;AAED;CACC,iCAAiC;CACjC;;AAED;CACC,kBAAkB;CAClB;;AAED,gBAAgB;AAChB;CACC,4BAA4B;CAC5B,2BAA2B;CAC3B,iBAAiB;CACjB,iBAAiB;CACjB;;AAED,gBAAgB;AAChB;CACC,YAAY;CACZ,WAAW;CACX,UAAU;CACV;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,kBAAkB;CAClB,eAAe;CACf,mBAAmB;CACnB;;AAED,oBAAoB;AACpB;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,eAAe;CACf;;AAED,gBAAgB;AAChB;;CAEC,YAAY;CACZ,eAAe;CACf;;AAED;CACC,YAAY;CACZ;;AAED;CACC,WAAW;CACX;;AAED,qBAAqB;AACrB;CACC,YAAY;CACZ;;AAED;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;CACC,UAAU;CACV;;AAED;;CAEC;EACC,0BAA0B;EAC1B;;CAED;EACC,yBAAyB;EACzB;;CAED;;AAED;;CAEC;EACC,yBAAyB;EACzB;;CAED;EACC,0BAA0B;EAC1B;;CAED;;AAED;;CAEC;EACC,aAAa;EACb;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;;AAED,qRAAqR;;AAErR;CACC,iBAAiB;CACjB,yBAAyB;CACzB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CACnB,eAAe;CACf,uBAAuB;CACvB,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;CACC,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED,sCAAsC;AACtC;CACC,eAAe;CACf,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,iBAAiB;CACjB,aAAa;CACb,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,cAAc;CACd,mBAAmB;CACnB,SAAS;CACT;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,cAAc;CACd;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,WAAW;CACX;;AAED;CACC,eAAe;CACf,2BAA2B;CAC3B;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,mBAAmB;CACnB,SAAS;CACT;;AAED;;CAEC;EACC,aAAa;EACb,kBAAkB;EAClB;;CAED;;AAED;CACC,yBAAyB;CACzB;;AAED;CACC,mBAAmB;CACnB,SAAS;CACT,UAAU;CACV;;AAED;CACC,cAAc;CACd;;AAED;CACC,YAAY;CACZ,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED,uBAAuB;AACvB;;CAEC,cAAc;CACd;;AAED;;CAEC,sBAAsB;CACtB,UAAU;CACV,aAAa;CACb,kBAAkB;CAClB;;AAED;CACC,eAAe;CACf,gBAAgB;CAChB,sBAAsB;CACtB,mBAAmB;CACnB;;AAED;CACC,gBAAgB;CAChB,iBAAiB;CACjB,oBAAoB;CACpB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,iBAAiB;CACjB;;AAED;;CAEC;EACC,kBAAkB;EAClB,oBAAoB;EACpB,eAAe;EACf,uBAAuB;EACvB;;CAED;EACC,mBAAmB;EACnB;;CAED;EACC,mBAAmB;EACnB,eAAe;EACf;;CAED;EACC,iBAAiB;EACjB,oBAAoB;EACpB;;CAED;;AAED;CACC,uBAAuB;CACvB;;AAED;;CAEC,uBAAuB;CACvB,mBAAmB;CACnB,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB,gBAAgB;CAChB;;AAED;;CAEC,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED,oBAAoB;AACpB;CACC,kBAAkB;CAClB,2BAA2B;CAC3B,8BAA8B;CAC9B,eAAe;CACf,UAAU;CACV;;AAED;CACC,iCAAiC;CACjC,eAAe;CACf;;AAED;;;;;;;;CAQC,sBAAsB;CACtB,uBAAuB;CACvB;;AAED;;CAEC,WAAW;CACX;;AAED;;CAEC,WAAW;CACX;;AAED;;CAEC,UAAU;CACV;;AAED;;CAEC,UAAU;CACV;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC,0BAA0B;CAC1B,YAAY;CACZ,YAAY;CACZ,aAAa;CACb,oBAAoB;CACpB,sBAAsB;CACtB,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB,mBAAmB;CACnB,aAAa;CACb;;AAED;CACC,WAAW;CACX,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB;;AAED;CACC,0BAA0B;CAC1B,YAAY;CACZ,aAAa;CACb,eAAe;CACf,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,iCAAiC;CACjC;;AAED;CACC,cAAc;CACd,YAAY;CACZ,mBAAmB;CACnB,0BAA0B;CAC1B,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb,mBAAmB;CACnB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,kBAAkB;CAClB,iBAAiB;CACjB;;AAED;CACC,cAAc;CACd;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;;;CAGC,oBAAoB;CACpB,cAAc;CACd,uBAAuB;CACvB,sBAAsB;CACtB;;AAED;;CAEC,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB,oBAAoB;CACpB;;AAED;CACC,6BAA6B;CAC7B,sBAAsB;CACtB;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC,YAAY;CACZ;;AAED;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB","file":"admin-3-0-16.min.css","sourcesContent":[".wpo_hidden {\n\tdisplay: none !important;\n}\n\n.wpo_info {\n\tbackground: #FFF;\n\tcolor: #444;\n\tfont-family: -apple-system, \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen-Sans\", \"Ubuntu\", \"Cantarell\", \"Helvetica Neue\", sans-serif;\n\tmargin: 2em auto;\n\tpadding: 1em 2em;\n\tmax-width: 700px;\n\t-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13);\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.13);\n}\n\n#wp-optimize-wrap .widefat thead th, #wp-optimize-wrap .widefat thead td {\n\tborder-bottom: 1px solid #E1E1E1;\n}\n\n#wp-optimize-wrap .widefat td, #wp-optimize-wrap .widefat th {\n\tpadding: 8px 10px;\n}\n\n/* big button */\n.wpo_primary_big {\n\tpadding: 4px 6px !important;\n\tfont-size: 22px !important;\n\tmin-height: 34px;\n\tmin-width: 200px;\n}\n\n/* SECTIONS */\n.wpo_section {\n\tclear: both;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.wp-optimize-settings {\n\tmargin-bottom: 16px;\n}\n\n.wp-optimize-settings td > label {\n\tfont-weight: bold;\n\tdisplay: block;\n\tmargin-bottom: 8px;\n}\n\n/* COLUMN SETUP */\n.wpo_col {\n\tdisplay: block;\n\tfloat: left;\n\tmargin: 1% 0 1% 1%;\n}\n\n.wpo_col:first-child {\n\tmargin-left: 0;\n}\n\n/* GROUPING */\n.wpo_group:before,\n.wpo_group:after {\n\tcontent: \"\";\n\tdisplay: table;\n}\n\n.wpo_group:after {\n\tclear: both;\n}\n\n.wpo_half_width {\n\twidth: 48%;\n}\n\n/* GRID OF THREE */\n.wpo_span_3_of_3 {\n\twidth: 100%;\n}\n\n.wpo_span_2_of_3 {\n\twidth: 65.3%;\n}\n\n.wpo_span_1_of_3 {\n\twidth: 32.1%;\n}\n\n#wp-optimize-wrap .nav-tab-wrapper {\n\tmargin: 0;\n}\n\n@media screen and (min-width: 549px) {\n\n\t.show_on_default_sizes {\n\t\tdisplay: block !important;\n\t}\n\n\t.show_on_mobile_sizes {\n\t\tdisplay: none !important;\n\t}\n\n}\n\n@media screen and (max-width: 548px) {\n\n\t.show_on_default_sizes {\n\t\tdisplay: none !important;\n\t}\n\n\t.show_on_mobile_sizes {\n\t\tdisplay: block !important;\n\t}\n\n}\n\n@media screen and (max-width: 768px) {\n\n\t.wpo_col {\n\t\tmargin: 1% 0;\n\t}\n\n\t.wpo_span_3_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_span_2_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_span_1_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_half_width {\n\t\twidth: 100%;\n\t}\n\n}\n\n/* .wp-optimize-settings-clean-transient label, .wp-optimize-settings-clean-pingbacks label, .wp-optimize-settings-clean-trackbacks label, .wp-optimize-settings-clean-postmeta label, .wp-optimize-settings-clean-orphandata label, .wp-optimize-settings-clean-commentmeta label */\n\n.wp-optimize-setting-is-sensitive td > label::before {\n\tcontent: \"\\f534\";\n\tfont-family: 'dashicons';\n\tdisplay: inline-block;\n\tmargin-right: 6px;\n\tfont-style: normal;\n\tline-height: 1;\n\tvertical-align: middle;\n\twidth: 20px;\n\tfont-size: 18px;\n\theight: 20px;\n\ttext-align: center;\n\tcolor: #72777C;\n}\n\n.wpo-run-optimizations__container {\n\tmargin-bottom: 15px;\n}\n\ntd.wp-optimize-settings-optimization-checkbox {\n\twidth: 18px;\n\tpadding-left: 4px;\n\tpadding-right: 0px;\n}\n\n.wp-optimize-settings-optimization-checkbox input {\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#retention-period {\n\twidth: 60px;\n}\n\n.wp-optimize-settings-optimization-info {\n\tfont-size: 80%;\n\tfont-style: italic;\n}\n\n.wp-optimize-settings input[type=\"checkbox\"] {\n\t/* width: 18px; */\n}\n\n/* Added for the Image on Addons tab*/\nimg.addons {\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tmargin-bottom: 20px;\n\tmax-height: 44px;\n\theight: auto;\n\tmax-width: 100%;\n}\n\n.wpo_spinner {\n\twidth: 18px;\n\theight: 18px;\n\tpadding-left: 10px;\n\tdisplay: none;\n\tposition: relative;\n\ttop: 4px;\n}\n\n.optimization_spinner {\n\twidth: 20px;\n\theight: 20px;\n}\n\n#wp-optimize-auto-options {\n\tmargin: 20px 0 0 28px;\n}\n\n.display-none {\n\tdisplay: none;\n}\n\n.visibility-hidden {\n\tvisibility: hidden;\n}\n\n.margin-one-percent {\n\tmargin: 1%;\n}\n\n#save_done, .save-done {\n\tcolor: #D94F00;\n\tfont-size: 220% !important;\n}\n\n.wp-optimize-settings-optimization-info a {\n\ttext-decoration: underline;\n}\n\n.wp-optimize-settings-optimization-run-spinner {\n\tposition: relative;\n\ttop: 2px;\n}\n\n@media screen and (min-width: 782px) {\n\n\ttd.wp-optimize-settings-optimization-run {\n\t\twidth: 180px;\n\t\tpadding-top: 16px;\n\t}\n\n}\n\n#wpoptimize_table_list .tablesorter-filter-row {\n\tdisplay: none !important;\n}\n\n#wpoptimize_table_list .optimization_spinner {\n\tposition: relative;\n\ttop: 2px;\n\tleft: 5px;\n}\n\n#wpoptimize_table_list .optimization_spinner.visibility-hidden {\n\tdisplay: none;\n}\n\n#wpoptimize_table_list_filter {\n\twidth: 100%;\n\tmargin-bottom: 15px;\n}\n\n#wpoptimize_table_list_tables_not_found {\n\tdisplay: none;\n\tmargin: 20px 0;\n}\n\ndiv#wpoptimize_table_list_tables_not_found + h3 {\n\tmargin-top: 30px;\n}\n\n/* Hide First column */\n#wpoptimize_table_list tr th:first-child,\n#wpoptimize_table_list tr td:first-child {\n\tdisplay: none;\n}\n\n#optimize_form .select2-container,\n#wp-optimize-auto-options .select2-container {\n\twidth: 50% !important;\n\ttop: -5px;\n\theight: 40px;\n\tmargin-left: 10px;\n}\n\n#wpoptimize_table_list .optimization_done_icon {\n\tcolor: #009B24;\n\tfont-size: 200%;\n\tdisplay: inline-block;\n\tposition: relative;\n}\n\n#wpo_sitelist_show_moreoptions_cron {\n\tfont-size: 13px;\n\tline-height: 1.5;\n\tletter-spacing: 1px;\n}\n\n#wp-optimize-nav-tab-contents-images .wpo_span_2_of_3 h3 {\n\tdisplay: inline-block;\n}\n\n.wpo_remove_selected_sizes_btn__container {\n\tmargin-top: 20px;\n}\n\n.unused-image-sizes__label {\n\tdisplay: block;\n\tline-height: 1.6;\n}\n\n@media (max-width: 782px) {\n\n\t.unused-image-sizes__label {\n\t\tmargin-left: 30px;\n\t\tmargin-bottom: 15px;\n\t\tline-height: 1;\n\t\tword-break: break-word;\n\t}\n\n\t.unused-image-sizes__label input[type=checkbox] {\n\t\tmargin-left: -30px;\n\t}\n\n\tbody.rtl .unused-image-sizes__label {\n\t\tmargin-right: 30px;\n\t\tmargin-left: 0;\n\t}\n\n\tbody.rtl .unused-image-sizes__label input[type=checkbox] {\n\t\tmargin-left: 4px;\n\t\tmargin-right: -30px;\n\t}\n\n}\n\n#wp-optimize-nav-tab-contents-tables a {\n\tvertical-align: middle;\n}\n\n#wpo_sitelist_moreoptions,\n#wpo_sitelist_moreoptions_cron {\n\tmargin: 4px 16px 6px 0;\n\tborder: 1px dotted;\n\tpadding: 6px 10px;\n\tmax-height: 300px;\n\toverflow-y: scroll;\n\toverflow-x: hidden;\n}\n\n#wpo_sitelist_moreoptions {\n\tmax-height: 150px;\n\tmargin-right: 0;\n}\n\n#wpo_settings_sites_list li,\n#wpo_settings_sites_list li a {\n\tfont-size: 13px;\n\tline-height: 1.5;\n}\n\n#wpo_sitelist_moreoptions_cron li {\n\tpadding-left: 20px;\n}\n\n#wpo_import_error_message {\n\tdisplay: none;\n\tcolor: #9B0000;\n}\n\n#wpo_import_success_message {\n\tdisplay: none;\n\tcolor: #46B450;\n}\n\n#wp-optimize-logging-options {\n\tmargin-top: 10px;\n}\n\n/* Logger settings*/\n.wpo_logging_header {\n\tfont-weight: bold;\n\tborder-top: 1px solid #333;\n\tborder-bottom: 1px solid #333;\n\tpadding: 5px 0;\n\tmargin: 0;\n}\n\n.wpo_logging_row {\n\tborder-bottom: 1px solid #A1A2A3;\n\tpadding: 5px 0;\n}\n\n.wpo_logging_logger_title,\n.wpo_logging_options_title,\n.wpo_logging_status_title,\n.wpo_logging_actions_title,\n.wpo_logging_logger_row,\n.wpo_logging_options_row,\n.wpo_logging_status_row,\n.wpo_logging_actions_row {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.wpo_logging_logger_title,\n.wpo_logging_logger_row {\n\twidth: 38%;\n}\n\n.wpo_logging_options_title,\n.wpo_logging_options_row {\n\twidth: 44%;\n}\n\n.wpo_logging_status_title,\n.wpo_logging_status_row {\n\twidth: 8%;\n}\n\n.wpo_logging_actions_title,\n.wpo_logging_actions_row {\n\twidth: 7%;\n}\n\n.wpo_logging_actions_row {\n\ttext-align: right;\n}\n\n.wpo_logging_options_row {\n\tword-wrap: break-word;\n}\n\n.wpo_logging_actions_row .dashicons-no-alt,\n.wpo_add_logger_form .dashicons-no-alt {\n\tbackground-color: #F06666;\n\tcolor: #FFF;\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 20px;\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tmargin-left: 5px;\n}\n\n.wpo_add_logger_form .dashicons-no-alt {\n\tmargin-top: 12px;\n\tmargin-right: 10px;\n\tfloat: right;\n}\n\n.wpo_logger_type {\n\twidth: 90%;\n\tmargin-top: 10px;\n}\n\n.wpo_logger_addition_option {\n\twidth: 100%;\n\tmargin-top: 5px;\n}\n\n.wpo_alert_notice {\n\tbackground-color: #F06666;\n\tcolor: #FFF;\n\tpadding: 5px;\n\tdisplay: block;\n\tmargin-bottom: 5px;\n\tborder-radius: 5px;\n}\n\n.wpo_error_field {\n\tborder-color: #F06666 !important;\n}\n\n.save_settings_reminder {\n\tdisplay: none;\n\tcolor: #333;\n\tpadding: 15px 20px;\n\tbackground-color: #F0A5A4;\n\tborder-radius: 3px;\n\tmargin: 15px 0;\n}\n\n#wpo_remove_selected_sizes {\n\tmargin-top: 20px;\n}\n\n.wpo_unused_images_buttons_wrap {\n\tfloat: right;\n\tmargin-right: 20px;\n}\n\n.wpo_unused_images_container h3 {\n\tmin-width: 150px;\n}\n\n#wpo_unused_images, #wpo_smush_images_grid {\n\tmax-height: 500px;\n\toverflow-y: auto;\n}\n\n#wpo_unused_images a {\n\toutline: none;\n}\n\n#wp-optimize-nav-tab-wpo_database-tables-contents .wpo-take-a-backup {\n\tmargin-left: 1%;\n}\n\n.run-single-table-delete {\n\tmargin-top: 3px;\n}\n\n#wpo_browser_cache_output,\n#wpo_gzip_compression_output,\n#wpo_advanced_cache_output {\n\tbackground: #F0F0F0;\n\tpadding: 10px;\n\tborder: 1px solid #CCC;\n\twhite-space: pre-wrap;\n}\n\n#wpo_gzip_compression_error_message,\n.wpo-error {\n\tcolor: #9B0000;\n}\n\n.notice.wpo-error__enabling-cache {\n\twhite-space: pre;\n\tmargin-bottom: 15px;\n}\n\na.loading.wpo-refresh-gzip-status {\n\tcolor: rgba(68, 68, 68, 0.5);\n\ttext-decoration: none;\n}\n\na.loading.wpo-refresh-gzip-status img.wpo_spinner.display-none {\n\tdisplay: inline-block;\n}\n\n#wpo_browser_cache_expire_days,\n#wpo_browser_cache_expire_hours {\n\twidth: 50px;\n}\n\n.wpo-enabled .wpo-disabled {\n\tdisplay: none;\n}\n\n.wpo-disabled .wpo-enabled {\n\tdisplay: none;\n}\n\n.wpo-button-wrap {\n\tmargin-top: 10px;\n}"]}
|
|
|
css/admin-3-0-18.min.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
| 1 |
+
.wpo_hidden{display:none !important}.wpo_info{background:#FFF;color:#444;font-family:-apple-system,"BlinkMacSystemFont","Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif;margin:2em auto;padding:1em 2em;max-width:700px;box-shadow:0 1px 3px rgba(0,0,0,0.13)}#wp-optimize-wrap .widefat thead th,#wp-optimize-wrap .widefat thead td{border-bottom:1px solid #e1e1e1}#wp-optimize-wrap .widefat td,#wp-optimize-wrap .widefat th{padding:8px 10px}.wpo_primary_big{padding:4px 6px !important;font-size:22px !important;min-height:34px;min-width:200px}.wpo_section{clear:both;padding:0;margin:0}.wp-optimize-settings{margin-bottom:16px}.wp-optimize-settings td>label{font-weight:bold;display:block;margin-bottom:8px}.wpo_col{display:block;float:left;margin:1% 0 1% 1%}.wpo_col:first-child{margin-left:0}.wpo_group:before,.wpo_group:after{content:"";display:table}.wpo_group:after{clear:both}.wpo_half_width{width:48%}.wpo_span_3_of_3{width:100%}.wpo_span_2_of_3{width:65.3%}.wpo_span_1_of_3{width:32.1%}#wp-optimize-wrap .nav-tab-wrapper{margin:0}@media screen and (min-width:549px){.show_on_default_sizes{display:block !important}.show_on_mobile_sizes{display:none !important}}@media screen and (max-width:548px){.show_on_default_sizes{display:none !important}.show_on_mobile_sizes{display:block !important}}@media screen and (max-width:768px){.wpo_col{margin:1% 0}.wpo_span_3_of_3{width:100%}.wpo_span_2_of_3{width:100%}.wpo_span_1_of_3{width:100%}.wpo_half_width{width:100%}}.wp-optimize-setting-is-sensitive td>label::before{content:"\f534";font-family:'dashicons';display:inline-block;margin-right:6px;font-style:normal;line-height:1;vertical-align:middle;width:20px;font-size:18px;height:20px;text-align:center;color:#72777c}.wpo-run-optimizations__container{margin-bottom:15px}.wp-optimize-optimizations-table-placeholder{min-height:80px}td.wp-optimize-settings-optimization-checkbox{width:18px;padding-left:4px;padding-right:0}.wp-optimize-settings-optimization-checkbox input{margin:0;padding:0}#retention-period{width:60px}.wp-optimize-settings-optimization-info{font-size:80%;font-style:italic}img.addons{display:block;margin-left:auto;margin-right:auto;margin-bottom:20px;max-height:44px;height:auto;max-width:100%}.wpo_spinner{width:18px;height:18px;padding-left:10px;display:none;position:relative;top:4px}.optimization_spinner{width:20px;height:20px}#wp-optimize-auto-options{margin:20px 0 0 28px}.display-none{display:none}.visibility-hidden{visibility:hidden}.margin-one-percent{margin:1%}#save_done,.save-done{color:#d94f00;font-size:220% !important}.wp-optimize-settings-optimization-info a{text-decoration:underline}.wp-optimize-settings-optimization-run-spinner{position:relative;top:2px}@media screen and (min-width:782px){td.wp-optimize-settings-optimization-run{width:180px;padding-top:16px}}#wpoptimize_table_list .tablesorter-filter-row{display:none !important}#wpoptimize_table_list .optimization_spinner{position:relative;top:2px;left:5px}#wpoptimize_table_list .optimization_spinner.visibility-hidden{display:none}#wpoptimize_table_list_filter{width:100%;margin-bottom:15px}#wpoptimize_table_list_tables_not_found{display:none;margin:20px 0}div#wpoptimize_table_list_tables_not_found+h3{margin-top:30px}#wpoptimize_table_list tr th:first-child,#wpoptimize_table_list tr td:first-child{display:none}#optimize_form .select2-container,#wp-optimize-auto-options .select2-container{width:50% !important;top:-5px;height:40px;margin-left:10px}#wpoptimize_table_list .optimization_done_icon{color:#009b24;font-size:200%;display:inline-block;position:relative}#wpo_sitelist_show_moreoptions_cron{font-size:13px;line-height:1.5;letter-spacing:1px}#wp-optimize-nav-tab-contents-images .wpo_span_2_of_3 h3{display:inline-block}.wpo_remove_selected_sizes_btn__container{margin-top:20px}.unused-image-sizes__label{display:block;line-height:1.6}@media(max-width:782px){.unused-image-sizes__label{margin-left:30px;margin-bottom:15px;line-height:1;word-break:break-word}.unused-image-sizes__label input[type=checkbox]{margin-left:-30px}body.rtl .unused-image-sizes__label{margin-right:30px;margin-left:0}body.rtl .unused-image-sizes__label input[type=checkbox]{margin-left:4px;margin-right:-30px}}#wp-optimize-nav-tab-contents-tables a{vertical-align:middle}#wpo_sitelist_moreoptions,#wpo_sitelist_moreoptions_cron{margin:4px 16px 6px 0;border:1px dotted;padding:6px 10px;max-height:300px;overflow-y:scroll;overflow-x:hidden}#wpo_sitelist_moreoptions{max-height:150px;margin-right:0}#wpo_settings_sites_list li,#wpo_settings_sites_list li a{font-size:13px;line-height:1.5}#wpo_sitelist_moreoptions_cron li{padding-left:20px}#wpo_import_error_message{display:none;color:#9b0000}#wpo_import_success_message{display:none;color:#46b450}#wp-optimize-logging-options{margin-top:10px}.wpo_logging_header{font-weight:bold;border-top:1px solid #333;border-bottom:1px solid #333;padding:5px 0;margin:0}.wpo_logging_row{border-bottom:1px solid #a1a2a3;padding:5px 0}.wpo_logging_logger_title,.wpo_logging_options_title,.wpo_logging_status_title,.wpo_logging_actions_title,.wpo_logging_logger_row,.wpo_logging_options_row,.wpo_logging_status_row,.wpo_logging_actions_row{display:inline-block;vertical-align:middle}.wpo_logging_logger_title,.wpo_logging_logger_row{width:38%}.wpo_logging_options_title,.wpo_logging_options_row{width:44%}.wpo_logging_status_title,.wpo_logging_status_row{width:8%}.wpo_logging_actions_title,.wpo_logging_actions_row{width:7%}.wpo_logging_actions_row{text-align:right}.wpo_logging_options_row{word-wrap:break-word}.wpo_logging_actions_row .dashicons-no-alt,.wpo_add_logger_form .dashicons-no-alt{background-color:#f06666;color:#FFF;width:20px;height:20px;border-radius:20px;display:inline-block;cursor:pointer;margin-left:5px}.wpo_add_logger_form .dashicons-no-alt{margin-top:12px;margin-right:10px;float:right}.wpo_logger_type{width:90%;margin-top:10px}.wpo_logger_addition_option{width:100%;margin-top:5px}.wpo_alert_notice{background-color:#f06666;color:#FFF;padding:5px;display:block;margin-bottom:5px;border-radius:5px}.wpo_error_field{border-color:#f06666 !important}.save_settings_reminder{display:none;color:#333;padding:15px 20px;background-color:#f0a5a4;border-radius:3px;margin:15px 0}#wpo_remove_selected_sizes{margin-top:20px}.wpo_unused_images_buttons_wrap{float:right;margin-right:20px}.wpo_unused_images_container h3{min-width:150px}#wpo_unused_images,#wpo_smush_images_grid{max-height:500px;overflow-y:auto}#wpo_unused_images a{outline:0}#wp-optimize-nav-tab-wpo_database-tables-contents .wpo-take-a-backup{margin-left:1%}.run-single-table-delete{margin-top:3px}#wpo_browser_cache_output,#wpo_gzip_compression_output,#wpo_advanced_cache_output{background:#f0f0f0;padding:10px;border:1px solid #CCC;white-space:pre-wrap}#wpo_gzip_compression_error_message,.wpo-error{color:#9b0000}.notice.wpo-error__enabling-cache{white-space:pre;margin-bottom:15px}a.loading.wpo-refresh-gzip-status{color:rgba(68,68,68,0.5);text-decoration:none}a.loading.wpo-refresh-gzip-status img.wpo_spinner.display-none{display:inline-block}#wpo_browser_cache_expire_days,#wpo_browser_cache_expire_hours{width:50px}.wpo-enabled .wpo-disabled{display:none}.wpo-disabled .wpo-enabled{display:none}.wpo-button-wrap{margin-top:10px}
|
| 2 |
+
/*# sourceMappingURL=admin-3-0-18.min.css.map */
|
css/admin-3-0-18.min.css.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
{"version":3,"sources":["css/admin.css"],"names":[],"mappings":"AAAA;CACC,yBAAyB;CACzB;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,2IAA2I;CAC3I,iBAAiB;CACjB,iBAAiB;CACjB,iBAAiB;CAEjB,uCAAuC;CACvC;;AAED;CACC,iCAAiC;CACjC;;AAED;CACC,kBAAkB;CAClB;;AAED,gBAAgB;AAChB;CACC,4BAA4B;CAC5B,2BAA2B;CAC3B,iBAAiB;CACjB,iBAAiB;CACjB;;AAED,gBAAgB;AAChB;CACC,YAAY;CACZ,WAAW;CACX,UAAU;CACV;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,kBAAkB;CAClB,eAAe;CACf,mBAAmB;CACnB;;AAED,oBAAoB;AACpB;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,eAAe;CACf;;AAED,gBAAgB;AAChB;;CAEC,YAAY;CACZ,eAAe;CACf;;AAED;CACC,YAAY;CACZ;;AAED;CACC,WAAW;CACX;;AAED,qBAAqB;AACrB;CACC,YAAY;CACZ;;AAED;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;CACC,UAAU;CACV;;AAED;;CAEC;EACC,0BAA0B;EAC1B;;CAED;EACC,yBAAyB;EACzB;;CAED;;AAED;;CAEC;EACC,yBAAyB;EACzB;;CAED;EACC,0BAA0B;EAC1B;;CAED;;AAED;;CAEC;EACC,aAAa;EACb;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;;AAED,qRAAqR;;AAErR,uBAAuB;;AAEvB;CACC,iBAAiB;CACjB,yBAAyB;CACzB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CACnB,eAAe;CACf,uBAAuB;CACvB,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;CACC,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED,sCAAsC;AACtC;CACC,eAAe;CACf,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,iBAAiB;CACjB,aAAa;CACb,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,cAAc;CACd,mBAAmB;CACnB,SAAS;CACT;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,cAAc;CACd;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,WAAW;CACX;;AAED;CACC,eAAe;CACf,2BAA2B;CAC3B;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,mBAAmB;CACnB,SAAS;CACT;;AAED;;CAEC;EACC,aAAa;EACb,kBAAkB;EAClB;;CAED;;AAED;CACC,yBAAyB;CACzB;;AAED;CACC,mBAAmB;CACnB,SAAS;CACT,UAAU;CACV;;AAED;CACC,cAAc;CACd;;AAED;CACC,YAAY;CACZ,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED,uBAAuB;AACvB;;CAEC,cAAc;CACd;;AAED;;CAEC,sBAAsB;CACtB,UAAU;CACV,aAAa;CACb,kBAAkB;CAClB;;AAED;CACC,eAAe;CACf,gBAAgB;CAChB,sBAAsB;CACtB,mBAAmB;CACnB;;AAED;CACC,gBAAgB;CAChB,iBAAiB;CACjB,oBAAoB;CACpB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,iBAAiB;CACjB;;AAED;;CAEC;EACC,kBAAkB;EAClB,oBAAoB;EACpB,eAAe;EACf,uBAAuB;EACvB;;CAED;EACC,mBAAmB;EACnB;;CAED;EACC,mBAAmB;EACnB,eAAe;EACf;;CAED;EACC,iBAAiB;EACjB,oBAAoB;EACpB;;CAED;;AAED;CACC,uBAAuB;CACvB;;AAED;;CAEC,uBAAuB;CACvB,mBAAmB;CACnB,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB,gBAAgB;CAChB;;AAED;;CAEC,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED,oBAAoB;AACpB;CACC,kBAAkB;CAClB,2BAA2B;CAC3B,8BAA8B;CAC9B,eAAe;CACf,UAAU;CACV;;AAED;CACC,iCAAiC;CACjC,eAAe;CACf;;AAED;;;;;;;;CAQC,sBAAsB;CACtB,uBAAuB;CACvB;;AAED;;CAEC,WAAW;CACX;;AAED;;CAEC,WAAW;CACX;;AAED;;CAEC,UAAU;CACV;;AAED;;CAEC,UAAU;CACV;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC,0BAA0B;CAC1B,YAAY;CACZ,YAAY;CACZ,aAAa;CACb,oBAAoB;CACpB,sBAAsB;CACtB,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB,mBAAmB;CACnB,aAAa;CACb;;AAED;CACC,WAAW;CACX,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB;;AAED;CACC,0BAA0B;CAC1B,YAAY;CACZ,aAAa;CACb,eAAe;CACf,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,iCAAiC;CACjC;;AAED;CACC,cAAc;CACd,YAAY;CACZ,mBAAmB;CACnB,0BAA0B;CAC1B,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb,mBAAmB;CACnB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,kBAAkB;CAClB,iBAAiB;CACjB;;AAED;CACC,cAAc;CACd;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;;;CAGC,oBAAoB;CACpB,cAAc;CACd,uBAAuB;CACvB,sBAAsB;CACtB;;AAED;;CAEC,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB,oBAAoB;CACpB;;AAED;CACC,6BAA6B;CAC7B,sBAAsB;CACtB;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC,YAAY;CACZ;;AAED;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB","file":"admin-3-0-18.min.css","sourcesContent":[".wpo_hidden {\n\tdisplay: none !important;\n}\n\n.wpo_info {\n\tbackground: #FFF;\n\tcolor: #444;\n\tfont-family: -apple-system, \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen-Sans\", \"Ubuntu\", \"Cantarell\", \"Helvetica Neue\", sans-serif;\n\tmargin: 2em auto;\n\tpadding: 1em 2em;\n\tmax-width: 700px;\n\t-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13);\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.13);\n}\n\n#wp-optimize-wrap .widefat thead th, #wp-optimize-wrap .widefat thead td {\n\tborder-bottom: 1px solid #E1E1E1;\n}\n\n#wp-optimize-wrap .widefat td, #wp-optimize-wrap .widefat th {\n\tpadding: 8px 10px;\n}\n\n/* big button */\n.wpo_primary_big {\n\tpadding: 4px 6px !important;\n\tfont-size: 22px !important;\n\tmin-height: 34px;\n\tmin-width: 200px;\n}\n\n/* SECTIONS */\n.wpo_section {\n\tclear: both;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.wp-optimize-settings {\n\tmargin-bottom: 16px;\n}\n\n.wp-optimize-settings td > label {\n\tfont-weight: bold;\n\tdisplay: block;\n\tmargin-bottom: 8px;\n}\n\n/* COLUMN SETUP */\n.wpo_col {\n\tdisplay: block;\n\tfloat: left;\n\tmargin: 1% 0 1% 1%;\n}\n\n.wpo_col:first-child {\n\tmargin-left: 0;\n}\n\n/* GROUPING */\n.wpo_group:before,\n.wpo_group:after {\n\tcontent: \"\";\n\tdisplay: table;\n}\n\n.wpo_group:after {\n\tclear: both;\n}\n\n.wpo_half_width {\n\twidth: 48%;\n}\n\n/* GRID OF THREE */\n.wpo_span_3_of_3 {\n\twidth: 100%;\n}\n\n.wpo_span_2_of_3 {\n\twidth: 65.3%;\n}\n\n.wpo_span_1_of_3 {\n\twidth: 32.1%;\n}\n\n#wp-optimize-wrap .nav-tab-wrapper {\n\tmargin: 0;\n}\n\n@media screen and (min-width: 549px) {\n\n\t.show_on_default_sizes {\n\t\tdisplay: block !important;\n\t}\n\n\t.show_on_mobile_sizes {\n\t\tdisplay: none !important;\n\t}\n\n}\n\n@media screen and (max-width: 548px) {\n\n\t.show_on_default_sizes {\n\t\tdisplay: none !important;\n\t}\n\n\t.show_on_mobile_sizes {\n\t\tdisplay: block !important;\n\t}\n\n}\n\n@media screen and (max-width: 768px) {\n\n\t.wpo_col {\n\t\tmargin: 1% 0;\n\t}\n\n\t.wpo_span_3_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_span_2_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_span_1_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_half_width {\n\t\twidth: 100%;\n\t}\n\n}\n\n/* .wp-optimize-settings-clean-transient label, .wp-optimize-settings-clean-pingbacks label, .wp-optimize-settings-clean-trackbacks label, .wp-optimize-settings-clean-postmeta label, .wp-optimize-settings-clean-orphandata label, .wp-optimize-settings-clean-commentmeta label */\n\n/* Optimizations tab */\n\n.wp-optimize-setting-is-sensitive td > label::before {\n\tcontent: \"\\f534\";\n\tfont-family: 'dashicons';\n\tdisplay: inline-block;\n\tmargin-right: 6px;\n\tfont-style: normal;\n\tline-height: 1;\n\tvertical-align: middle;\n\twidth: 20px;\n\tfont-size: 18px;\n\theight: 20px;\n\ttext-align: center;\n\tcolor: #72777C;\n}\n\n.wpo-run-optimizations__container {\n\tmargin-bottom: 15px;\n}\n\n.wp-optimize-optimizations-table-placeholder {\n\tmin-height: 80px;\n}\n\ntd.wp-optimize-settings-optimization-checkbox {\n\twidth: 18px;\n\tpadding-left: 4px;\n\tpadding-right: 0px;\n}\n\n.wp-optimize-settings-optimization-checkbox input {\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#retention-period {\n\twidth: 60px;\n}\n\n.wp-optimize-settings-optimization-info {\n\tfont-size: 80%;\n\tfont-style: italic;\n}\n\n.wp-optimize-settings input[type=\"checkbox\"] {\n\t/* width: 18px; */\n}\n\n/* Added for the Image on Addons tab*/\nimg.addons {\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tmargin-bottom: 20px;\n\tmax-height: 44px;\n\theight: auto;\n\tmax-width: 100%;\n}\n\n.wpo_spinner {\n\twidth: 18px;\n\theight: 18px;\n\tpadding-left: 10px;\n\tdisplay: none;\n\tposition: relative;\n\ttop: 4px;\n}\n\n.optimization_spinner {\n\twidth: 20px;\n\theight: 20px;\n}\n\n#wp-optimize-auto-options {\n\tmargin: 20px 0 0 28px;\n}\n\n.display-none {\n\tdisplay: none;\n}\n\n.visibility-hidden {\n\tvisibility: hidden;\n}\n\n.margin-one-percent {\n\tmargin: 1%;\n}\n\n#save_done, .save-done {\n\tcolor: #D94F00;\n\tfont-size: 220% !important;\n}\n\n.wp-optimize-settings-optimization-info a {\n\ttext-decoration: underline;\n}\n\n.wp-optimize-settings-optimization-run-spinner {\n\tposition: relative;\n\ttop: 2px;\n}\n\n@media screen and (min-width: 782px) {\n\n\ttd.wp-optimize-settings-optimization-run {\n\t\twidth: 180px;\n\t\tpadding-top: 16px;\n\t}\n\n}\n\n#wpoptimize_table_list .tablesorter-filter-row {\n\tdisplay: none !important;\n}\n\n#wpoptimize_table_list .optimization_spinner {\n\tposition: relative;\n\ttop: 2px;\n\tleft: 5px;\n}\n\n#wpoptimize_table_list .optimization_spinner.visibility-hidden {\n\tdisplay: none;\n}\n\n#wpoptimize_table_list_filter {\n\twidth: 100%;\n\tmargin-bottom: 15px;\n}\n\n#wpoptimize_table_list_tables_not_found {\n\tdisplay: none;\n\tmargin: 20px 0;\n}\n\ndiv#wpoptimize_table_list_tables_not_found + h3 {\n\tmargin-top: 30px;\n}\n\n/* Hide First column */\n#wpoptimize_table_list tr th:first-child,\n#wpoptimize_table_list tr td:first-child {\n\tdisplay: none;\n}\n\n#optimize_form .select2-container,\n#wp-optimize-auto-options .select2-container {\n\twidth: 50% !important;\n\ttop: -5px;\n\theight: 40px;\n\tmargin-left: 10px;\n}\n\n#wpoptimize_table_list .optimization_done_icon {\n\tcolor: #009B24;\n\tfont-size: 200%;\n\tdisplay: inline-block;\n\tposition: relative;\n}\n\n#wpo_sitelist_show_moreoptions_cron {\n\tfont-size: 13px;\n\tline-height: 1.5;\n\tletter-spacing: 1px;\n}\n\n#wp-optimize-nav-tab-contents-images .wpo_span_2_of_3 h3 {\n\tdisplay: inline-block;\n}\n\n.wpo_remove_selected_sizes_btn__container {\n\tmargin-top: 20px;\n}\n\n.unused-image-sizes__label {\n\tdisplay: block;\n\tline-height: 1.6;\n}\n\n@media (max-width: 782px) {\n\n\t.unused-image-sizes__label {\n\t\tmargin-left: 30px;\n\t\tmargin-bottom: 15px;\n\t\tline-height: 1;\n\t\tword-break: break-word;\n\t}\n\n\t.unused-image-sizes__label input[type=checkbox] {\n\t\tmargin-left: -30px;\n\t}\n\n\tbody.rtl .unused-image-sizes__label {\n\t\tmargin-right: 30px;\n\t\tmargin-left: 0;\n\t}\n\n\tbody.rtl .unused-image-sizes__label input[type=checkbox] {\n\t\tmargin-left: 4px;\n\t\tmargin-right: -30px;\n\t}\n\n}\n\n#wp-optimize-nav-tab-contents-tables a {\n\tvertical-align: middle;\n}\n\n#wpo_sitelist_moreoptions,\n#wpo_sitelist_moreoptions_cron {\n\tmargin: 4px 16px 6px 0;\n\tborder: 1px dotted;\n\tpadding: 6px 10px;\n\tmax-height: 300px;\n\toverflow-y: scroll;\n\toverflow-x: hidden;\n}\n\n#wpo_sitelist_moreoptions {\n\tmax-height: 150px;\n\tmargin-right: 0;\n}\n\n#wpo_settings_sites_list li,\n#wpo_settings_sites_list li a {\n\tfont-size: 13px;\n\tline-height: 1.5;\n}\n\n#wpo_sitelist_moreoptions_cron li {\n\tpadding-left: 20px;\n}\n\n#wpo_import_error_message {\n\tdisplay: none;\n\tcolor: #9B0000;\n}\n\n#wpo_import_success_message {\n\tdisplay: none;\n\tcolor: #46B450;\n}\n\n#wp-optimize-logging-options {\n\tmargin-top: 10px;\n}\n\n/* Logger settings*/\n.wpo_logging_header {\n\tfont-weight: bold;\n\tborder-top: 1px solid #333;\n\tborder-bottom: 1px solid #333;\n\tpadding: 5px 0;\n\tmargin: 0;\n}\n\n.wpo_logging_row {\n\tborder-bottom: 1px solid #A1A2A3;\n\tpadding: 5px 0;\n}\n\n.wpo_logging_logger_title,\n.wpo_logging_options_title,\n.wpo_logging_status_title,\n.wpo_logging_actions_title,\n.wpo_logging_logger_row,\n.wpo_logging_options_row,\n.wpo_logging_status_row,\n.wpo_logging_actions_row {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.wpo_logging_logger_title,\n.wpo_logging_logger_row {\n\twidth: 38%;\n}\n\n.wpo_logging_options_title,\n.wpo_logging_options_row {\n\twidth: 44%;\n}\n\n.wpo_logging_status_title,\n.wpo_logging_status_row {\n\twidth: 8%;\n}\n\n.wpo_logging_actions_title,\n.wpo_logging_actions_row {\n\twidth: 7%;\n}\n\n.wpo_logging_actions_row {\n\ttext-align: right;\n}\n\n.wpo_logging_options_row {\n\tword-wrap: break-word;\n}\n\n.wpo_logging_actions_row .dashicons-no-alt,\n.wpo_add_logger_form .dashicons-no-alt {\n\tbackground-color: #F06666;\n\tcolor: #FFF;\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 20px;\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tmargin-left: 5px;\n}\n\n.wpo_add_logger_form .dashicons-no-alt {\n\tmargin-top: 12px;\n\tmargin-right: 10px;\n\tfloat: right;\n}\n\n.wpo_logger_type {\n\twidth: 90%;\n\tmargin-top: 10px;\n}\n\n.wpo_logger_addition_option {\n\twidth: 100%;\n\tmargin-top: 5px;\n}\n\n.wpo_alert_notice {\n\tbackground-color: #F06666;\n\tcolor: #FFF;\n\tpadding: 5px;\n\tdisplay: block;\n\tmargin-bottom: 5px;\n\tborder-radius: 5px;\n}\n\n.wpo_error_field {\n\tborder-color: #F06666 !important;\n}\n\n.save_settings_reminder {\n\tdisplay: none;\n\tcolor: #333;\n\tpadding: 15px 20px;\n\tbackground-color: #F0A5A4;\n\tborder-radius: 3px;\n\tmargin: 15px 0;\n}\n\n#wpo_remove_selected_sizes {\n\tmargin-top: 20px;\n}\n\n.wpo_unused_images_buttons_wrap {\n\tfloat: right;\n\tmargin-right: 20px;\n}\n\n.wpo_unused_images_container h3 {\n\tmin-width: 150px;\n}\n\n#wpo_unused_images, #wpo_smush_images_grid {\n\tmax-height: 500px;\n\toverflow-y: auto;\n}\n\n#wpo_unused_images a {\n\toutline: none;\n}\n\n#wp-optimize-nav-tab-wpo_database-tables-contents .wpo-take-a-backup {\n\tmargin-left: 1%;\n}\n\n.run-single-table-delete {\n\tmargin-top: 3px;\n}\n\n#wpo_browser_cache_output,\n#wpo_gzip_compression_output,\n#wpo_advanced_cache_output {\n\tbackground: #F0F0F0;\n\tpadding: 10px;\n\tborder: 1px solid #CCC;\n\twhite-space: pre-wrap;\n}\n\n#wpo_gzip_compression_error_message,\n.wpo-error {\n\tcolor: #9B0000;\n}\n\n.notice.wpo-error__enabling-cache {\n\twhite-space: pre;\n\tmargin-bottom: 15px;\n}\n\na.loading.wpo-refresh-gzip-status {\n\tcolor: rgba(68, 68, 68, 0.5);\n\ttext-decoration: none;\n}\n\na.loading.wpo-refresh-gzip-status img.wpo_spinner.display-none {\n\tdisplay: inline-block;\n}\n\n#wpo_browser_cache_expire_days,\n#wpo_browser_cache_expire_hours {\n\twidth: 50px;\n}\n\n.wpo-enabled .wpo-disabled {\n\tdisplay: none;\n}\n\n.wpo-disabled .wpo-enabled {\n\tdisplay: none;\n}\n\n.wpo-button-wrap {\n\tmargin-top: 10px;\n}"]}
|
css/admin.css
CHANGED
|
@@ -138,6 +138,8 @@
|
|
| 138 |
|
| 139 |
/* .wp-optimize-settings-clean-transient label, .wp-optimize-settings-clean-pingbacks label, .wp-optimize-settings-clean-trackbacks label, .wp-optimize-settings-clean-postmeta label, .wp-optimize-settings-clean-orphandata label, .wp-optimize-settings-clean-commentmeta label */
|
| 140 |
|
|
|
|
|
|
|
| 141 |
.wp-optimize-setting-is-sensitive td > label::before {
|
| 142 |
content: "\f534";
|
| 143 |
font-family: 'dashicons';
|
|
@@ -157,6 +159,10 @@
|
|
| 157 |
margin-bottom: 15px;
|
| 158 |
}
|
| 159 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 160 |
td.wp-optimize-settings-optimization-checkbox {
|
| 161 |
width: 18px;
|
| 162 |
padding-left: 4px;
|
| 138 |
|
| 139 |
/* .wp-optimize-settings-clean-transient label, .wp-optimize-settings-clean-pingbacks label, .wp-optimize-settings-clean-trackbacks label, .wp-optimize-settings-clean-postmeta label, .wp-optimize-settings-clean-orphandata label, .wp-optimize-settings-clean-commentmeta label */
|
| 140 |
|
| 141 |
+
/* Optimizations tab */
|
| 142 |
+
|
| 143 |
.wp-optimize-setting-is-sensitive td > label::before {
|
| 144 |
content: "\f534";
|
| 145 |
font-family: 'dashicons';
|
| 159 |
margin-bottom: 15px;
|
| 160 |
}
|
| 161 |
|
| 162 |
+
.wp-optimize-optimizations-table-placeholder {
|
| 163 |
+
min-height: 80px;
|
| 164 |
+
}
|
| 165 |
+
|
| 166 |
td.wp-optimize-settings-optimization-checkbox {
|
| 167 |
width: 18px;
|
| 168 |
padding-left: 4px;
|
css/smush-3-0-16.min.css
DELETED
|
@@ -1,2 +0,0 @@
|
|
| 1 |
-
.wpo-fieldgroup .autosmush{display:inline-block;width:100%}.wpo-fieldgroup .autosmush h3{font-size:1.2em;margin:3px 18px}.wpo-fieldgroup .compression_server div{max-width:300px}.wpo-fieldgroup .compression_server h2{margin:10px 0}.wpo-fieldgroup .compression_server h3{clear:both;width:100%}.wpo-fieldgroup .compression_server p{margin:1px}.wpo-fieldgroup .compression_server p:last-of-type{margin-bottom:10px}.wpo-fieldgroup .compression_server{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.wpo-fieldgroup .compression_server>div{-ms-flex:1;flex:1;margin-right:10px;height:100%;position:relative}.wpo-fieldgroup .compression_server input[type="radio"]{position:absolute;z-index:1;top:calc(50% + 2px);left:20px;transform:translatey(-50%)}.wpo-fieldgroup .compression_server input[type="radio"] ~ label h4{color:#23282d;margin-top:0;margin-bottom:.9em;font-size:1.2em}.wpo-fieldgroup .compression_server label{display:block;position:relative;box-sizing:border-box;height:100%;background:#FFF;text-align:left;box-shadow:0 3px 10px -2px hsla(150,5%,65%,0.5)}.wpo-fieldgroup .compression_server input[type="radio"]+label{padding:20px;border:2px solid #FFF;padding-left:65px;position:relative;border-radius:5px;color:#82868b}.wpo-fieldgroup .compression_server input[type="radio"]+label::before{content:'';display:block;position:absolute;top:0;left:52px;height:100%;border-right:1px solid #edeff0}.wpo-fieldgroup .save-options{margin:10px 0}.wpo-fieldgroup .compression_server input[type="radio"]:focus+label,.wpo-fieldgroup .compression_server input[type="radio"]+label:hover{border-color:rgba(0,134,184,0.38)}.wpo-fieldgroup .compression_server input[type="radio"]:focus+label{box-shadow:0 3px 10px -2px #5b9dd9}.wpo-fieldgroup .compression_server input[type="radio"]:focus+label h4{color:#0086b9}.wpo-fieldgroup .compression_server input[type="radio"]:checked+label,.wpo-fieldgroup .compression_server input[type="radio"]:checked+label:hover{border-color:#0086b9}@media only screen and (max-width:700px){.wpo-fieldgroup .compression_server{-ms-flex-direction:column;flex-direction:column}.wpo-fieldgroup .compression_server>div{margin-bottom:15px;max-width:100%}}.wpo-fieldgroup h4{margin:1em 0;width:100%}.wpo-fieldgroup .image_quality input[type=radio]{position:absolute;visibility:hidden;display:none}.wpo-fieldgroup .image_quality label{color:#23282d;display:inline-block;cursor:pointer;font-weight:bold;padding:5px 20px;background:#f9f9f9;float:left;margin:0 .5px}.wpo-fieldgroup .image_quality input[type=radio]:checked+label{color:white;background:#0088b9}.wpo-fieldgroup .image_quality label+.wpo-fieldgroup .image_quality input[type=radio]+label{border-left:solid 3px #675f6b}.wpo-fieldgroup .image_quality.radio-group{border:solid .5px #c4c4c4;display:inline-block;border-radius:5px;overflow:hidden;border-bottom:solid 2px #c4c4c4;background:#c4c4c4}.wpo-fieldgroup .image_options input{min-height:16px;min-width:16px;margin:3px 2px}img#wpo_smush_images_save_options_spinner{max-width:20px;max-height:20px}span#wpo_smush_images_save_options_fail{font-size:inherit;color:red}span#wpo_smush_images_save_options_done{font-size:inherit;color:green}#smush-complete-summary span.clearfix{height:10px;display:block;clear:both}span.close{display:block;clear:both;text-align:left;color:#df6927;border:2px solid;border-radius:50%;cursor:pointer}.modal-message-text{margin:0 25px}.smush-options.custom_compression{margin:10px}#smush-backup-delete-days{width:50px;margin:0 8px}img#wpo_smush_delete_backup_spinner{max-width:20px;max-height:20px;position:relative;top:4px}span#wpo_smush_delete_backup_done{font-size:inherit;color:green}.wpo-fieldgroup .smush-options.custom_compression{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;margin-left:24px}.wpo-fieldgroup .smush-options.custom_compression>span{display:inline-block;padding:6px;border:1px solid #cfd2d4;border-radius:4px;font-size:.9em;position:relative}.wpo-fieldgroup .smush-options.custom_compression>span.slider-start::after{content:'';width:6px;height:6px;display:block;position:absolute;top:0;left:100%;transform:translate(-3px,8px) rotate(45deg);border-right:1px solid #cfd2d4;border-top:1px solid #cfd2d4;background:#edeff0}.wpo-fieldgroup .smush-options.custom_compression>span.slider-end::before{content:'';width:6px;height:6px;display:block;position:absolute;top:0;right:100%;transform:translate(3px,8px) rotate(45deg);border-left:1px solid #cfd2d4;border-bottom:1px solid #cfd2d4;background:#edeff0}.wpo-fieldgroup .smush-options.custom_compression>input{margin-left:8px;margin-right:8px}@media screen and (max-width:782px){.wpo-fieldgroup input[type="radio"]{height:16px;width:16px}.wpo-fieldgroup input[type="radio"]:checked:before{width:6px;height:6px;margin:4px}.wpo-fieldgroup .smush-options.custom_compression{-ms-flex-direction:column;flex-direction:column}.wpo-fieldgroup .smush-options.custom_compression>input{width:100%}.wpo-fieldgroup .smush-options.custom_compression>span{display:block;width:100%}.wpo-fieldgroup .smush-options.custom_compression>span.slider-start::after{left:0;transform:translate(7px,22px) rotate(135deg)}.wpo-fieldgroup .smush-options.custom_compression>span.slider-end::before{right:auto;left:100%;transform:translate(-14px,-5px) rotate(135deg)}}#wpo_smush_settings .align-left{float:left}#wpo_smush_settings .align-right{float:right}.wpo-fieldgroup .wpo_smush_images_buttons_wrap{width:100%}.wpo-fieldgroup .smush-refresh-icon,.wpo-fieldgroup .smush-select-actions{font-size:15px}.wpo-fieldgroup img.wpo_smush_images_loader{display:none;min-height:20px;min-width:20px}.wpo-fieldgroup .dashicons.dashicons-image-rotate,{font-size:15px}.wpo-fieldgroup .toggle-smush-advanced{cursor:pointer;text-decoration:underline;color:#0088bc}.wpo-fieldgroup .button.toggle-smush-advanced{display:block;width:calc(100% + 40px);margin-left:-20px;margin-right:-20px;padding-left:20px;padding-right:20px;position:relative;text-decoration:none}.wpo-fieldgroup .button.toggle-smush-advanced span.dashicons{text-decoration:none;font-size:16px;height:16px;vertical-align:middle;color:#444;transition:.2s all}.wpo-fieldgroup .toggle-smush-advanced span.text{background:#f2f4f4;z-index:1;position:relative;padding-right:5px}.wpo-fieldgroup .button.toggle-smush-advanced:hover,.wpo-fieldgroup .button.toggle-smush-advanced:focus{background:transparent}.wpo-fieldgroup .button.toggle-smush-advanced .toggle-smush-advanced__text-show{display:inline-block}.wpo-fieldgroup .button.toggle-smush-advanced .toggle-smush-advanced__text-hide{display:none}.wpo-fieldgroup .button.toggle-smush-advanced.opened .toggle-smush-advanced__text-show{display:none}.wpo-fieldgroup .button.toggle-smush-advanced.opened .toggle-smush-advanced__text-hide{display:inline-block}.wpo-fieldgroup .button.toggle-smush-advanced.opened::before{content:'';border-top:1px solid #CCC;width:100%;position:absolute;top:16px;left:0}.wpo-fieldgroup .button.toggle-smush-advanced.opened span.dashicons{transform:rotate(180deg)}.wpo-fieldgroup .smush-advanced{display:none}.wpo-fieldgroup .button.toggle-smush-advanced.opened+.smush-advanced{display:block}.wpo_smush_image:focus-within label{box-shadow:0 0 4px #0272aa}.wpo_smush_image .wpo_smush_image__input:checked+label{border-color:#0272aa}.uncompressed-images input[type="checkbox"]{position:absolute;opacity:0;width:0;height:0}.uncompressed-images small.red{clear:both;display:block;margin:5px}.smush-actions .wpo_primary_small{display:inline-block;margin:5px}.smush-actions{display:inline-block;width:100%;margin:10px 0}.smush-actions .dashicons.dashicons-yes{font-size:15px;margin:0 5px}.smush-actions img{max-height:25px;max-width:25px}#smush-log-modal{width:100%;height:100%}#log-panel{height:80%;overflow:scroll;margin:2%}#log-panel pre{text-align:left;overflow:auto;height:100%;background:gainsboro}.smush-information{margin-bottom:10px}#smush_stats{text-align:center;margin:0 auto;padding:2%;min-width:350px;font-size:larger}#smush_stats .wpo_smush_stats_cta_btn{clear:both;display:block;text-align:center}#smush_stats .smush_stats_row td:first-child{text-align:left}#smush_stats tr.smush_stats_row td:last-child{text-align:right}#smush_stats #wpo_smush_images_information_container p{padding:10px}#smush-complete-summary .checkmark-circle{width:50px;height:50px;position:relative;display:inline-block;vertical-align:top}#smush-complete-summary .checkmark-circle .background{width:50px;height:50px;border-radius:50%;background:#df6927;position:absolute}#smush-complete-summary .checkmark-circle .checkmark{border-radius:5px}#smush-complete-summary .checkmark-circle .checkmark.draw:after{animation-delay:100ms;animation-duration:1s;animation-timing-function:ease;animation-name:checkmark;transform:scalex(-1) rotate(135deg);animation-fill-mode:forwards}#smush-complete-summary .checkmark-circle .checkmark:after{opacity:1;height:25px;width:12.5px;transform-origin:left top;border-right:5px solid white;border-top:5px solid white;border-radius:2.5px !important;content:'';left:8.3333333333px;top:25px;position:absolute}#smush_stats .wpo_primary_small{text-align:center}#smush-complete-summary #summary-message{margin:15px auto}img#wpo_smush_images_clear_stats_spinner{width:20px;line-height:1;vertical-align:middle}#wpo_smush_images_information_container{padding:10px}#wpo_smush_images_information_wrapper .progress-bar{height:25px;padding:1px;width:350px;margin:10px auto;border-radius:5px}#wpo_smush_images_information_wrapper .progress-bar span{display:inline-block;height:100%;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5) inset;transition:width .4s ease-in-out}#wpo_smush_images_information_wrapper .orange span{background-color:#df6927}#wpo_smush_images_information_wrapper .stripes span{background-size:30px;background-image:linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);animation:animate-stripes 3s linear infinite}#smush-metabox-inside-wrapper{display:inline-table;width:100%}#smush-metabox-inside-wrapper h4{margin:2px 0}#smush-metabox-inside-wrapper label{margin-top:5px;clear:left;display:block}#smush-metabox-inside-wrapper .wpo_smush_single_image{display:block}#smush-metabox-inside-wrapper .wpo_smush_single_image.action_button{padding:5px 0}#smush-metabox-inside-wrapper fieldset{margin:10px 0}#smush-metabox-inside-wrapper input[type="radio"]{margin:-4px 4px 0 0}#smush-metabox-inside-wrapper .alignleft{float:left}#smush-metabox-inside-wrapper p#smush_info{margin:20px auto;padding-top:10px;clear:both}#smush-metabox-inside-wrapper .toggle-smush-advanced{cursor:pointer;display:block;clear:both;margin-top:10px;margin-bottom:10px}#smush-metabox-inside-wrapper .toggle-smush-advanced:not(.opened) ~ .smush-advanced{display:none}#smush-metabox-inside-wrapper .toggle-smush-advanced.opened ~ .smush-advanced{display:block !important}#smush-metabox-inside-wrapper .smush-options.custom_compression span{display:block;max-width:30%;clear:both}#smush-metabox-inside-wrapper input#custom_compression_slider{display:block;clear:both;width:100%}#smush-metabox-inside-wrapper .smush-options.custom_compression span.alignleft{float:left}#smush-metabox-inside-wrapper .smush-options.custom_compression span.alignright{float:right;text-align:right}.smush-metabox-dashboard-link{clear:both;padding-top:15px;text-align:right}.media-frame-content .attachment-compat .compat-item,.compat-field-wpo_compress_image{overflow:visible !important}.compat-field-wpo_compress_image{border-top:1px solid #DDD}.compat-field-wpo_compress_image span.dashicons{text-align:left;float:none;min-height:0;padding-top:2px}.compat-field-wpo_compress_image td.field{width:auto;float:none}.compat-field-wpo_compress_image td.field [data-tooltip]{display:none}.compat-field-wpo_compress_image th.label{text-align:left;min-width:0;float:none;margin:0}.compat-field-wpo_compress_image th.label label span{font-weight:500;text-align:left}.wpo_restore_single_image .alignright{float:right}.blockUI.blockMsg.blockPage{z-index:170000 !important;right:0;left:0 !important;margin-right:auto !important;margin-left:auto !important;max-width:90%;cursor:default !important}.blockUI.blockOverlay{cursor:default !important}#smush-metabox-inside-wrapper [data-tooltip],.wpo-fieldgroup [data-tooltip]{position:relative;cursor:pointer;line-height:18px}#smush-metabox-inside-wrapper [data-tooltip]:before,#smush-metabox-inside-wrapper [data-tooltip]:after,.wpo-fieldgroup [data-tooltip]:before,.wpo-fieldgroup [data-tooltip]:after{visibility:hidden;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);opacity:0;pointer-events:none}#smush-metabox-inside-wrapper [data-tooltip]:before,.wpo-fieldgroup [data-tooltip]:before{position:absolute;bottom:150%;left:50%;margin-bottom:5px;margin-left:-140px;padding:12px;width:275px;z-index:9999;border-radius:3px;background-color:#000;background-color:hsla(0,0%,20%,0.95);color:#FFF;content:attr(data-tooltip);text-align:center;font-size:.85rem;font-weight:400;line-height:1.4}#smush-metabox-inside-wrapper [data-tooltip]:before{margin-left:-280px}#smush-metabox-inside-wrapper [data-tooltip]:after,.wpo-fieldgroup [data-tooltip]:after{position:absolute;bottom:150%;left:50%;margin-left:-5px;width:0;border-top:5px solid #000;border-top:5px solid hsla(0,0%,20%,0.9);border-right:5px solid transparent;border-left:5px solid transparent;content:" ";font-size:0;line-height:0}#smush-metabox-inside-wrapper [data-tooltip]:hover:before,#smush-metabox-inside-wrapper [data-tooltip]:hover:after,.wpo-fieldgroup [data-tooltip]:hover:before,.wpo-fieldgroup [data-tooltip]:hover:after,#smush-metabox-inside-wrapper [data-tooltip]:focus:before,#smush-metabox-inside-wrapper [data-tooltip]:focus:after,.wpo-fieldgroup [data-tooltip]:focus:before,.wpo-fieldgroup [data-tooltip]:focus:after{visibility:visible;-ms-filter:"alpha(opacity=100)";filter:alpha(opacity=100);opacity:1}@keyframes checkmark{0%{height:0;width:0;opacity:1}20%{height:0;width:12.5px;opacity:1}40%{height:25px;width:12.5px;opacity:1}100%{height:25px;width:12.5px;opacity:1}}@keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}@keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}
|
| 2 |
-
/*# sourceMappingURL=smush-3-0-16.min.css.map */
|
|
|
|
|
|
css/smush-3-0-16.min.css.map
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
{"version":3,"sources":["css/smush.css"],"names":[],"mappings":"AAAA;;GAEG;AACH;CACC,sBAAsB;CACtB,YAAY;CACZ;;AAED;CACC,iBAAiB;CACjB,iBAAiB;CACjB;;AAED;;GAEG;AACH;CACC,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf;;AAED;CACC,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,YAAY;CACZ;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,qBAAqB;CACrB,cAAc;CACd,wBAAwB;CACxB,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,QAAQ;CACR,mBAAmB;CACnB,aAAa;CACb,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,WAAW;CACX,qBAAqB;CACrB,WAAW;CACX,4BAA4B;CAC5B;;AAED;CACC,eAAe;CACf,cAAc;CACd,qBAAqB;CACrB,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,mBAAmB;CACnB,uBAAuB;CACvB,aAAa;CACb,iBAAiB;CACjB,iBAAiB;CACjB,sDAAsD;CACtD;;AAED;CACC,cAAc;CACd,uBAAuB;CACvB,mBAAmB;CACnB,mBAAmB;CACnB,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,OAAO;CACP,WAAW;CACX,aAAa;CACb,gCAAgC;CAChC;;AAED;CACC,eAAe;CACf;;AAED;;CAEC,sCAAsC;CACtC;;AAED;CACC,sCAAsC;CACtC;;AAED;CACC,eAAe;CACf;;AAED;;CAEC,sBAAsB;CACtB;;AAED;;CAEC;EACC,2BAA2B;EAC3B,uBAAuB;EACvB;;CAED;EACC,oBAAoB;EACpB,gBAAgB;EAChB;;CAED;;AAED;;GAEG;AACH;CACC,cAAc;CACd,YAAY;CACZ;;AAED;CACC,mBAAmB;CACnB,mBAAmB;CACnB,cAAc;CACd;;AAED;CACC,eAAe;CACf,sBAAsB;CACtB,gBAAgB;CAChB,kBAAkB;CAClB,kBAAkB;CAClB,oBAAoB;CACpB,YAAY;CACZ,eAAe;CACf;;AAED;CACC,aAAa;CACb,oBAAoB;CACpB;;AAED;CACC,+BAA+B;CAC/B;;AAED;CACC,2BAA2B;CAC3B,sBAAsB;CACtB,mBAAmB;CACnB,iBAAiB;CACjB,iCAAiC;CACjC,oBAAoB;CACpB;;AAED;CACC,iBAAiB;CACjB,gBAAgB;CAChB,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB,WAAW;CACX;;AAED;CACC,mBAAmB;CACnB,aAAa;CACb;;AAED;CACC,aAAa;CACb,eAAe;CACf,YAAY;CACZ;;AAED;CACC,eAAe;CACf,YAAY;CACZ,iBAAiB;CACjB,eAAe;CACf,kBAAkB;CAClB,mBAAmB;CACnB,gBAAgB;CAChB;;AAED;CACC,eAAe;CACf;;AAED;CACC,aAAa;CACb;;AAED;CACC,YAAY;CACZ,cAAc;CACd;;AAED;CACC,gBAAgB;CAChB,iBAAiB;CACjB,mBAAmB;CACnB,SAAS;CACT;;AAED;CACC,mBAAmB;CACnB,aAAa;CACb;;AAED;CACC,qBAAc;CAAd,cAAc;CACd,uBAAoB;KAApB,oBAAoB;CACpB,kBAAkB;CAClB;;AAED;CACC,sBAAsB;CACtB,aAAa;CACb,0BAA0B;CAC1B,mBAAmB;CACnB,iBAAiB;CACjB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,OAAO;CACP,WAAW;CACX,8CAA8C;CAC9C,gCAAgC;CAChC,8BAA8B;CAC9B,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,OAAO;CACP,YAAY;CACZ,6CAA6C;CAC7C,+BAA+B;CAC/B,iCAAiC;CACjC,oBAAoB;CACpB;;AAED;CACC,iBAAiB;CACjB,kBAAkB;CAClB;;AAED;;CAEC;EACC,aAAa;EACb,YAAY;EACZ;;CAED;EACC,WAAW;EACX,YAAY;EACZ,YAAY;EACZ;;CAED;EACC,2BAAuB;MAAvB,uBAAuB;EACvB;;CAED;EACC,YAAY;EACZ;;CAED;EACC,eAAe;EACf,YAAY;EACZ;;CAED;EACC,QAAQ;EACR,+CAA+C;EAC/C;;CAED;EACC,YAAY;EACZ,WAAW;EACX,iDAAiD;EACjD;;CAED;;AAED;;GAEG;;AAEH;CACC,YAAY;CACZ;;AAED;CACC,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;;CAEC,gBAAgB;CAChB;;AAED;CACC,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB,2BAA2B;CAC3B,eAAe;CACf;;AAED;CACC,eAAe;CACf,yBAAyB;CACzB,mBAAmB;CACnB,oBAAoB;CACpB,mBAAmB;CACnB,oBAAoB;CACpB,mBAAmB;CACnB,sBAAsB;CACtB;;AAED;CACC,sBAAsB;CACtB,gBAAgB;CAChB,aAAa;CACb,uBAAuB;CACvB,YAAY;CACZ,oBAAoB;CACpB;;AAED;CACC,oBAAoB;CACpB,WAAW;CACX,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;;CAEC,wBAAwB;CACxB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,YAAY;CACZ,2BAA2B;CAC3B,YAAY;CACZ,mBAAmB;CACnB,UAAU;CACV,QAAQ;CACR;;AAED;CACC,0BAA0B;CAC1B;;AAED;CACC,cAAc;CACd;;AAED;CACC,eAAe;CACf;;AAED;CACC,4BAA4B;CAC5B;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,mBAAmB;CACnB,WAAW;CACX,SAAS;CACT,UAAU;CACV;;AAED;CACC,YAAY;CACZ,eAAe;CACf,YAAY;CACZ;;AAED;CACC,sBAAsB;CACtB,YAAY;CACZ;;AAED;CACC,sBAAsB;CACtB,YAAY;CACZ,eAAe;CACf;;AAED;CACC,gBAAgB;CAChB,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB,gBAAgB;CAChB;;AAED;;GAEG;;AAEH;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,YAAY;CACZ,iBAAiB;CACjB,WAAW;CACX;;AAED;CACC,iBAAiB;CACjB,eAAe;CACf,aAAa;CACb,sBAAsB;CACtB;;AAED;CACC,oBAAoB;CACpB;;AAED;;GAEG;;AAEH;CACC,mBAAmB;CACnB,eAAe;CACf,YAAY;CACZ,iBAAiB;CACjB,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,cAAc;CACd;;AAED;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,sBAAsB;CACtB,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,oBAAoB;CACpB,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,uBAAuB;CACvB,uBAAuB;CACvB,gCAAgC;CAChC,0BAA0B;CAC1B,qCAAqC;CACrC,8BAA8B;CAC9B;;AAED;CACC,WAAW;CACX,aAAa;CACb,cAAc;CACd,2BAA2B;CAC3B,8BAA8B;CAC9B,4BAA4B;CAC5B,gCAAgC;CAChC,YAAY;CACZ,qBAAqB;CACrB,UAAU;CACV,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,eAAe;CACf,uBAAuB;CACvB;;AAED,2BAA2B;;AAE3B;CACC,cAAc;CACd;;AAED;CACC,aAAa;CACb,aAAa;CACb,aAAa;CACb,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,sBAAsB;CACtB,aAAa;CACb,mBAAmB;CACnB,kDAAkD;CAClD,kCAAkC;CAClC;;AAED;CACC,0BAA0B;CAC1B;;AAED;CACC,sBAAsB;CACtB,oMAAoM;CACpM,8CAA8C;CAC9C;;AAED;;GAEG;;AAEH;CACC,sBAAsB;CACtB,YAAY;CACZ;;AAED;CACC,cAAc;CACd;;AAED;CACC,gBAAgB;CAChB,YAAY;CACZ,eAAe;CACf;;AAED;CACC,eAAe;CACf;;AAED;CACC,eAAe;CACf;;AAED;CACC,eAAe;CACf;;AAED;CACC,qBAAqB;CACrB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,kBAAkB;CAClB,kBAAkB;CAClB,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB,eAAe;CACf,YAAY;CACZ,iBAAiB;CACjB,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd;;AAED;CACC,0BAA0B;CAC1B;;AAED;CACC,eAAe;CACf,eAAe;CACf,YAAY;CACZ;;AAED;CACC,eAAe;CACf,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,YAAY;CACZ;;AAED;CACC,aAAa;CACb,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,kBAAkB;CAClB,kBAAkB;CAClB;;AAED;;CAEC,6BAA6B;CAC7B;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,cAAc;CACd,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB,aAAa;CACb,YAAY;CACZ,UAAU;CACV;;AAED;CACC,iBAAiB;CACjB,iBAAiB;CACjB;;AAED,+CAA+C;AAC/C;CACC,aAAa;CACb;;AAED;;GAEG;AACH;CACC,2BAA2B;CAC3B,SAAS;CACT,mBAAmB;CACnB,8BAA8B;CAC9B,6BAA6B;CAC7B,eAAe;CACf,2BAA2B;CAC3B;;AAED;CACC,2BAA2B;CAC3B;;AAED;;GAEG;;AAEH,4DAA4D;AAC5D;;CAEC,mBAAmB;CACnB,gBAAgB;CAChB,kBAAkB;CAClB;;AAED,yCAAyC;AACzC;;;;CAIC,mBAAmB;CACnB,iEAAiE;CACjE,4DAA4D;CAC5D,WAAW;CACX,qBAAqB;CACrB;;AAED,wCAAwC;AACxC;;CAEC,mBAAmB;CACnB,aAAa;CACb,UAAU;CACV,mBAAmB;CACnB,oBAAoB;CACpB,cAAc;CACd,aAAa;CACb,cAAc;CACd,mBAAmB;CACnB,uBAAuB;CACvB,yCAAyC;CACzC,YAAY;CACZ,4BAA4B;CAC5B,mBAAmB;CACnB,kBAAkB;CAClB,iBAAiB;CACjB,iBAAiB;CACjB;;AAED;CACC,oBAAoB;CACpB;;AAED,6DAA6D;AAC7D;;CAEC,mBAAmB;CACnB,aAAa;CACb,UAAU;CACV,kBAAkB;CAClB,SAAS;CACT,2BAA2B;CAC3B,4CAA4C;CAC5C,oCAAoC;CACpC,mCAAmC;CACnC,aAAa;CACb,aAAa;CACb,eAAe;CACf;;AAED,mCAAmC;AACnC;;;;;;;;CAQC,oBAAoB;CACpB,mEAAmE;CACnE,8DAA8D;CAC9D,WAAW;CACX;;AAED;;GAEG;;AAEH;;CAEC;EACC,UAAU;EACV,SAAS;EACT,WAAW;EACX;;CAED;EACC,UAAU;EACV,cAAc;EACd,WAAW;EACX;;CAED;EACC,aAAa;EACb,cAAc;EACd,WAAW;EACX;;CAED;EACC,aAAa;EACb,cAAc;EACd,WAAW;EACX;;CAED;;AAED;;CAEC;EACC,yBAAyB;EACzB;;CAED;EACC,4BAA4B;EAC5B;;CAED;;AAED;;CAEC;EACC,yBAAyB;EACzB;;CAED;EACC,4BAA4B;EAC5B;;CAED","file":"smush-3-0-16.min.css","sourcesContent":["/**\n * Autosmush\n */\n.wpo-fieldgroup .autosmush {\n\tdisplay: inline-block;\n\twidth: 100%;\n}\n\n.wpo-fieldgroup .autosmush h3 {\n\tfont-size: 1.2em;\n\tmargin: 3px 18px;\n}\n\n/**\n * Compression Server\n */\n.wpo-fieldgroup .compression_server div {\n\tmax-width: 300px;\n}\n\n.wpo-fieldgroup .compression_server h2 {\n\tmargin: 10px 0;\n}\n\n.wpo-fieldgroup .compression_server h3 {\n\tclear: both;\n\twidth: 100%;\n}\n\n.wpo-fieldgroup .compression_server p {\n\tmargin: 1px;\n}\n\n.wpo-fieldgroup .compression_server p:last-of-type {\n\tmargin-bottom: 10px;\n}\n\n.wpo-fieldgroup .compression_server {\n\tdisplay: -ms-flexbox;\n\tdisplay: flex;\n\t-ms-flex-flow: row wrap;\n\tflex-flow: row wrap;\n}\n\n.wpo-fieldgroup .compression_server > div {\n\t-ms-flex: 1;\n\tflex: 1;\n\tmargin-right: 10px;\n\theight: 100%;\n\tposition: relative;\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"] {\n\tposition: absolute;\n\tz-index: 1;\n\ttop: calc(50% + 2px);\n\tleft: 20px;\n\ttransform: translatey(-50%);\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"] ~ label h4 {\n\tcolor: #23282D;\n\tmargin-top: 0;\n\tmargin-bottom: 0.9em;\n\tfont-size: 1.2em;\n}\n\n.wpo-fieldgroup .compression_server label {\n\tdisplay: block;\n\tposition: relative;\n\tbox-sizing: border-box;\n\theight: 100%;\n\tbackground: #FFF;\n\ttext-align: left;\n\tbox-shadow: 0px 3px 10px -2px hsla(150, 5%, 65%, 0.5);\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"] + label {\n\tpadding: 20px;\n\tborder: 2px solid #FFF;\n\tpadding-left: 65px;\n\tposition: relative;\n\tborder-radius: 5px;\n\tcolor: #82868B;\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"] + label::before {\n\tcontent: '';\n\tdisplay: block;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 52px;\n\theight: 100%;\n\tborder-right: 1px solid #EDEFF0;\n}\n\n.wpo-fieldgroup .save-options {\n\tmargin: 10px 0;\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"]:focus + label,\n.wpo-fieldgroup .compression_server input[type=\"radio\"] + label:hover {\n\tborder-color: rgba(0, 134, 184, 0.38);\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"]:focus + label {\n\tbox-shadow: 0px 3px 10px -2px #5B9DD9;\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"]:focus + label h4 {\n\tcolor: #0086B9;\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"]:checked + label,\n.wpo-fieldgroup .compression_server input[type=\"radio\"]:checked + label:hover {\n\tborder-color: #0086B9;\n}\n\n@media only screen and (max-width: 700px) {\n\n\t.wpo-fieldgroup .compression_server {\n\t\t-ms-flex-direction: column;\n\t\tflex-direction: column;\n\t}\n\n\t.wpo-fieldgroup .compression_server > div {\n\t\tmargin-bottom: 15px;\n\t\tmax-width: 100%;\n\t}\n\n}\n\n/**\n * Compression Options\n */\n.wpo-fieldgroup h4 {\n\tmargin: 1em 0;\n\twidth: 100%;\n}\n\n.wpo-fieldgroup .image_quality input[type=radio] {\n\tposition: absolute;\n\tvisibility: hidden;\n\tdisplay: none;\n}\n\n.wpo-fieldgroup .image_quality label {\n\tcolor: #23282D;\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tfont-weight: bold;\n\tpadding: 5px 20px;\n\tbackground: #F9F9F9;\n\tfloat: left;\n\tmargin: 0 .5px;\n}\n\n.wpo-fieldgroup .image_quality input[type=radio]:checked + label {\n\tcolor: white;\n\tbackground: #0088B9;\n}\n\n.wpo-fieldgroup .image_quality label + .wpo-fieldgroup .image_quality input[type=radio] + label {\n\tborder-left: solid 3px #675F6B;\n}\n\n.wpo-fieldgroup .image_quality.radio-group {\n\tborder: solid .5px #C4C4C4;\n\tdisplay: inline-block;\n\tborder-radius: 5px;\n\toverflow: hidden;\n\tborder-bottom: solid 2px #C4C4C4;\n\tbackground: #C4C4C4;\n}\n\n.wpo-fieldgroup .image_options input {\n\tmin-height: 16px;\n\tmin-width: 16px;\n\tmargin: 3px 2px;\n}\n\nimg#wpo_smush_images_save_options_spinner {\n\tmax-width: 20px;\n\tmax-height: 20px;\n}\n\nspan#wpo_smush_images_save_options_fail {\n\tfont-size: inherit;\n\tcolor: red;\n}\n\nspan#wpo_smush_images_save_options_done {\n\tfont-size: inherit;\n\tcolor: green;\n}\n\n#smush-complete-summary span.clearfix {\n\theight: 10px;\n\tdisplay: block;\n\tclear: both;\n}\n\nspan.close {\n\tdisplay: block;\n\tclear: both;\n\ttext-align: left;\n\tcolor: #DF6927;\n\tborder: 2px solid;\n\tborder-radius: 50%;\n\tcursor: pointer;\n}\n\n.modal-message-text {\n\tmargin: 0 25px;\n}\n\n.smush-options.custom_compression {\n\tmargin: 10px;\n}\n\n#smush-backup-delete-days {\n\twidth: 50px;\n\tmargin: 0 8px;\n}\n\nimg#wpo_smush_delete_backup_spinner {\n\tmax-width: 20px;\n\tmax-height: 20px;\n\tposition: relative;\n\ttop: 4px;\n}\n\nspan#wpo_smush_delete_backup_done {\n\tfont-size: inherit;\n\tcolor: green;\n}\n\n.wpo-fieldgroup .smush-options.custom_compression {\n\tdisplay: flex;\n\talign-items: center;\n\tmargin-left: 24px;\n}\n\n.wpo-fieldgroup .smush-options.custom_compression > span {\n\tdisplay: inline-block;\n\tpadding: 6px;\n\tborder: 1px solid #CFD2D4;\n\tborder-radius: 4px;\n\tfont-size: 0.9em;\n\tposition: relative;\n}\n\n.wpo-fieldgroup .smush-options.custom_compression > span.slider-start::after {\n\tcontent: '';\n\twidth: 6px;\n\theight: 6px;\n\tdisplay: block;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 100%;\n\ttransform: translate(-3px, 8px) rotate(45deg);\n\tborder-right: 1px solid #CFD2D4;\n\tborder-top: 1px solid #CFD2D4;\n\tbackground: #EDEFF0;\n}\n\n.wpo-fieldgroup .smush-options.custom_compression > span.slider-end::before {\n\tcontent: '';\n\twidth: 6px;\n\theight: 6px;\n\tdisplay: block;\n\tposition: absolute;\n\ttop: 0;\n\tright: 100%;\n\ttransform: translate(3px, 8px) rotate(45deg);\n\tborder-left: 1px solid #CFD2D4;\n\tborder-bottom: 1px solid #CFD2D4;\n\tbackground: #EDEFF0;\n}\n\n.wpo-fieldgroup .smush-options.custom_compression > input {\n\tmargin-left: 8px;\n\tmargin-right: 8px;\n}\n\n@media screen and (max-width: 782px) {\n\n\t.wpo-fieldgroup input[type=\"radio\"] {\n\t\theight: 16px;\n\t\twidth: 16px;\n\t}\n\n\t.wpo-fieldgroup\tinput[type=\"radio\"]:checked:before {\n\t\twidth: 6px;\n\t\theight: 6px;\n\t\tmargin: 4px;\n\t}\n\n\t.wpo-fieldgroup .smush-options.custom_compression {\n\t\tflex-direction: column;\n\t}\n\n\t.wpo-fieldgroup .smush-options.custom_compression > input {\n\t\twidth: 100%;\n\t}\n\n\t.wpo-fieldgroup .smush-options.custom_compression > span {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t}\n\n\t.wpo-fieldgroup .smush-options.custom_compression > span.slider-start::after {\n\t\tleft: 0;\n\t\ttransform: translate(7px, 22px) rotate(135deg);\n\t}\n\n\t.wpo-fieldgroup .smush-options.custom_compression > span.slider-end::before {\n\t\tright: auto;\n\t\tleft: 100%;\n\t\ttransform: translate(-14px, -5px) rotate(135deg);\n\t}\n\n}\n\n/**\n * Uncompressed images\n */\n\n#wpo_smush_settings .align-left {\n\tfloat: left;\n}\n\n#wpo_smush_settings .align-right {\n\tfloat: right;\n}\n\n.wpo-fieldgroup .wpo_smush_images_buttons_wrap {\n\twidth: 100%;\n}\n\n.wpo-fieldgroup .smush-refresh-icon,\n.wpo-fieldgroup .smush-select-actions {\n\tfont-size: 15px;\n}\n\n.wpo-fieldgroup img.wpo_smush_images_loader {\n\tdisplay: none;\n\tmin-height: 20px;\n\tmin-width: 20px;\n}\n\n.wpo-fieldgroup .dashicons.dashicons-image-rotate, {\n\tfont-size: 15px;\n}\n\n.wpo-fieldgroup .toggle-smush-advanced {\n\tcursor: pointer;\n\ttext-decoration: underline;\n\tcolor: #0088BC;\n}\n\n.wpo-fieldgroup .button.toggle-smush-advanced {\n\tdisplay: block;\n\twidth: calc(100% + 40px);\n\tmargin-left: -20px;\n\tmargin-right: -20px;\n\tpadding-left: 20px;\n\tpadding-right: 20px;\n\tposition: relative;\n\ttext-decoration: none;\n}\n\n.wpo-fieldgroup .button.toggle-smush-advanced span.dashicons {\n\ttext-decoration: none;\n\tfont-size: 16px;\n\theight: 16px;\n\tvertical-align: middle;\n\tcolor: #444;\n\ttransition: .2s all;\n}\n\n.wpo-fieldgroup .toggle-smush-advanced span.text {\n\tbackground: #F2F4F4;\n\tz-index: 1;\n\tposition: relative;\n\tpadding-right: 5px;\n}\n\n.wpo-fieldgroup .button.toggle-smush-advanced:hover,\n.wpo-fieldgroup .button.toggle-smush-advanced:focus {\n\tbackground: transparent;\n}\n\n.wpo-fieldgroup .button.toggle-smush-advanced .toggle-smush-advanced__text-show {\n\tdisplay: inline-block;\n}\n\n.wpo-fieldgroup .button.toggle-smush-advanced .toggle-smush-advanced__text-hide {\n\tdisplay: none;\n}\n\n.wpo-fieldgroup .button.toggle-smush-advanced.opened .toggle-smush-advanced__text-show {\n\tdisplay: none;\n}\n\n.wpo-fieldgroup .button.toggle-smush-advanced.opened .toggle-smush-advanced__text-hide {\n\tdisplay: inline-block;\n}\n\n.wpo-fieldgroup .button.toggle-smush-advanced.opened::before {\n\tcontent: '';\n\tborder-top: 1px solid #CCC;\n\twidth: 100%;\n\tposition: absolute;\n\ttop: 16px;\n\tleft: 0;\n}\n\n.wpo-fieldgroup .button.toggle-smush-advanced.opened span.dashicons {\n\ttransform: rotate(180deg);\n}\n\n.wpo-fieldgroup .smush-advanced {\n\tdisplay: none;\n}\n\n.wpo-fieldgroup .button.toggle-smush-advanced.opened + .smush-advanced {\n\tdisplay: block;\n}\n\n.wpo_smush_image:focus-within label {\n\tbox-shadow: 0 0 4px #0272AA;\n}\n\n.wpo_smush_image .wpo_smush_image__input:checked + label {\n\tborder-color: #0272AA;\n}\n\n.uncompressed-images input[type=\"checkbox\"] {\n\tposition: absolute;\n\topacity: 0;\n\twidth: 0;\n\theight: 0;\n}\n\n.uncompressed-images small.red {\n\tclear: both;\n\tdisplay: block;\n\tmargin: 5px;\n}\n\n.smush-actions .wpo_primary_small {\n\tdisplay: inline-block;\n\tmargin: 5px;\n}\n\n.smush-actions {\n\tdisplay: inline-block;\n\twidth: 100%;\n\tmargin: 10px 0;\n}\n\n.smush-actions .dashicons.dashicons-yes {\n\tfont-size: 15px;\n\tmargin: 0 5px;\n}\n\n.smush-actions img {\n\tmax-height: 25px;\n\tmax-width: 25px;\n}\n\n/**\n * Log and panels\n */\n\n#smush-log-modal {\n\twidth: 100%;\n\theight: 100%;\n}\n\n#log-panel {\n\theight: 80%;\n\toverflow: scroll;\n\tmargin: 2%;\n}\n\n#log-panel pre {\n\ttext-align: left;\n\toverflow: auto;\n\theight: 100%;\n\tbackground: gainsboro;\n}\n\n.smush-information {\n\tmargin-bottom: 10px;\n}\n\n/**\n * Smush modal progress box & related styling\n */\n\n#smush_stats {\n\ttext-align: center;\n\tmargin: 0 auto;\n\tpadding: 2%;\n\tmin-width: 350px;\n\tfont-size: larger;\n}\n\n#smush_stats .wpo_smush_stats_cta_btn {\n\tclear: both;\n\tdisplay: block;\n\ttext-align: center;\n}\n\n#smush_stats .smush_stats_row td:first-child {\n\ttext-align: left;\n}\n\n#smush_stats tr.smush_stats_row td:last-child {\n\ttext-align: right;\n}\n\n#smush_stats #wpo_smush_images_information_container p {\n\tpadding: 10px;\n}\n\n#smush-complete-summary .checkmark-circle {\n\twidth: 50px;\n\theight: 50px;\n\tposition: relative;\n\tdisplay: inline-block;\n\tvertical-align: top;\n}\n\n#smush-complete-summary .checkmark-circle .background {\n\twidth: 50px;\n\theight: 50px;\n\tborder-radius: 50%;\n\tbackground: #DF6927;\n\tposition: absolute;\n}\n\n#smush-complete-summary .checkmark-circle .checkmark {\n\tborder-radius: 5px;\n}\n\n#smush-complete-summary .checkmark-circle .checkmark.draw:after {\n\tanimation-delay: 100ms;\n\tanimation-duration: 1s;\n\tanimation-timing-function: ease;\n\tanimation-name: checkmark;\n\ttransform: scalex(-1) rotate(135deg);\n\tanimation-fill-mode: forwards;\n}\n\n#smush-complete-summary .checkmark-circle .checkmark:after {\n\topacity: 1;\n\theight: 25px;\n\twidth: 12.5px;\n\ttransform-origin: left top;\n\tborder-right: 5px solid white;\n\tborder-top: 5px solid white;\n\tborder-radius: 2.5px !important;\n\tcontent: '';\n\tleft: 8.3333333333px;\n\ttop: 25px;\n\tposition: absolute;\n}\n\n#smush_stats .wpo_primary_small {\n\ttext-align: center;\n}\n\n#smush-complete-summary #summary-message {\n\tmargin: 15px auto;\n}\n\nimg#wpo_smush_images_clear_stats_spinner {\n\twidth: 20px;\n\tline-height: 1;\n\tvertical-align: middle;\n}\n\n/* Animated progress bar */\n\n#wpo_smush_images_information_container {\n\tpadding: 10px;\n}\n\n#wpo_smush_images_information_wrapper .progress-bar {\n\theight: 25px;\n\tpadding: 1px;\n\twidth: 350px;\n\tmargin: 10px auto;\n\tborder-radius: 5px;\n}\n\n#wpo_smush_images_information_wrapper .progress-bar span {\n\tdisplay: inline-block;\n\theight: 100%;\n\tborder-radius: 3px;\n\tbox-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset;\n\ttransition: width .4s ease-in-out;\n}\n\n#wpo_smush_images_information_wrapper .orange span {\n\tbackground-color: #DF6927;\n}\n\n#wpo_smush_images_information_wrapper .stripes span {\n\tbackground-size: 30px;\n\tbackground-image: linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n\tanimation: animate-stripes 3s linear infinite;\n}\n\n/**\n * Smush metabox\n */\n\n#smush-metabox-inside-wrapper {\n\tdisplay: inline-table;\n\twidth: 100%;\n}\n\n#smush-metabox-inside-wrapper h4 {\n\tmargin: 2px 0;\n}\n\n#smush-metabox-inside-wrapper label {\n\tmargin-top: 5px;\n\tclear: left;\n\tdisplay: block;\n}\n\n#smush-metabox-inside-wrapper .wpo_smush_single_image {\n\tdisplay: block;\n}\n\n#smush-metabox-inside-wrapper .wpo_smush_single_image.action_button {\n\tpadding: 5px 0;\n}\n\n#smush-metabox-inside-wrapper fieldset {\n\tmargin: 10px 0;\n}\n\n#smush-metabox-inside-wrapper input[type=\"radio\"] {\n\tmargin: -4px 4px 0 0;\n}\n\n#smush-metabox-inside-wrapper .alignleft {\n\tfloat: left;\n}\n\n#smush-metabox-inside-wrapper p#smush_info {\n\tmargin: 20px auto;\n\tpadding-top: 10px;\n\tclear: both;\n}\n\n#smush-metabox-inside-wrapper .toggle-smush-advanced {\n\tcursor: pointer;\n\tdisplay: block;\n\tclear: both;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n}\n\n#smush-metabox-inside-wrapper .toggle-smush-advanced:not(.opened) ~ .smush-advanced {\n\tdisplay: none;\n}\n\n#smush-metabox-inside-wrapper .toggle-smush-advanced.opened ~ .smush-advanced {\n\tdisplay: block !important;\n}\n\n#smush-metabox-inside-wrapper .smush-options.custom_compression span {\n\tdisplay: block;\n\tmax-width: 30%;\n\tclear: both;\n}\n\n#smush-metabox-inside-wrapper input#custom_compression_slider {\n\tdisplay: block;\n\tclear: both;\n\twidth: 100%;\n}\n\n#smush-metabox-inside-wrapper .smush-options.custom_compression span.alignleft {\n\tfloat: left;\n}\n\n#smush-metabox-inside-wrapper .smush-options.custom_compression span.alignright {\n\tfloat: right;\n\ttext-align: right;\n}\n\n.smush-metabox-dashboard-link {\n\tclear: both;\n\tpadding-top: 15px;\n\ttext-align: right;\n}\n\n.media-frame-content .attachment-compat .compat-item,\n.compat-field-wpo_compress_image {\n\toverflow: visible !important;\n}\n\n.compat-field-wpo_compress_image {\n\tborder-top: 1px solid #DDD;\n}\n\n.compat-field-wpo_compress_image span.dashicons {\n\ttext-align: left;\n\tfloat: none;\n\tmin-height: 0;\n\tpadding-top: 2px;\n}\n\n.compat-field-wpo_compress_image td.field {\n\twidth: auto;\n\tfloat: none;\n}\n\n.compat-field-wpo_compress_image td.field [data-tooltip] {\n\tdisplay: none;\n}\n\n.compat-field-wpo_compress_image th.label {\n\ttext-align: left;\n\tmin-width: 0;\n\tfloat: none;\n\tmargin: 0;\n}\n\n.compat-field-wpo_compress_image th.label label span {\n\tfont-weight: 500;\n\ttext-align: left;\n}\n\n/* fix for elementor restore button position */\n.wpo_restore_single_image .alignright {\n\tfloat: right;\n}\n\n/**\n * Force fix the modals\n */\n.blockUI.blockMsg.blockPage {\n\tz-index: 170000 !important;\n\tright: 0;\n\tleft: 0 !important;\n\tmargin-right: auto !important;\n\tmargin-left: auto !important;\n\tmax-width: 90%;\n\tcursor: default !important;\n}\n\n.blockUI.blockOverlay {\n\tcursor: default !important;\n}\n\n/**\n * Tooltip Styles\n */\n\n/* Add this attribute to the element that needs a tooltip */\n#smush-metabox-inside-wrapper [data-tooltip],\n.wpo-fieldgroup [data-tooltip] {\n\tposition: relative;\n\tcursor: pointer;\n\tline-height: 18px;\n}\n\n/* Hide the tooltip content by default */\n#smush-metabox-inside-wrapper [data-tooltip]:before,\n#smush-metabox-inside-wrapper [data-tooltip]:after,\n.wpo-fieldgroup [data-tooltip]:before,\n.wpo-fieldgroup [data-tooltip]:after {\n\tvisibility: hidden;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n\tfilter: progid: DXImageTransform.Microsoft.Alpha(Opacity=0);\n\topacity: 0;\n\tpointer-events: none;\n}\n\n/* Position tooltip above the element */\n#smush-metabox-inside-wrapper [data-tooltip]:before,\n.wpo-fieldgroup [data-tooltip]:before {\n\tposition: absolute;\n\tbottom: 150%;\n\tleft: 50%;\n\tmargin-bottom: 5px;\n\tmargin-left: -140px;\n\tpadding: 12px;\n\twidth: 275px;\n\tz-index: 9999;\n\tborder-radius: 3px;\n\tbackground-color: #000;\n\tbackground-color: hsla(0, 0%, 20%, 0.95);\n\tcolor: #FFF;\n\tcontent: attr(data-tooltip);\n\ttext-align: center;\n\tfont-size: .85rem;\n\tfont-weight: 400;\n\tline-height: 1.4;\n}\n\n#smush-metabox-inside-wrapper [data-tooltip]:before {\n\tmargin-left: -280px;\n}\n\n/* Triangle hack to make tooltip look like a speech bubble */\n#smush-metabox-inside-wrapper [data-tooltip]:after,\n.wpo-fieldgroup [data-tooltip]:after {\n\tposition: absolute;\n\tbottom: 150%;\n\tleft: 50%;\n\tmargin-left: -5px;\n\twidth: 0;\n\tborder-top: 5px solid #000;\n\tborder-top: 5px solid hsla(0, 0%, 20%, 0.9);\n\tborder-right: 5px solid transparent;\n\tborder-left: 5px solid transparent;\n\tcontent: \" \";\n\tfont-size: 0;\n\tline-height: 0;\n}\n\n/* Show tooltip content on hover */\n#smush-metabox-inside-wrapper [data-tooltip]:hover:before,\n#smush-metabox-inside-wrapper [data-tooltip]:hover:after,\n.wpo-fieldgroup [data-tooltip]:hover:before,\n.wpo-fieldgroup [data-tooltip]:hover:after,\n#smush-metabox-inside-wrapper [data-tooltip]:focus:before,\n#smush-metabox-inside-wrapper [data-tooltip]:focus:after,\n.wpo-fieldgroup [data-tooltip]:focus:before,\n.wpo-fieldgroup [data-tooltip]:focus:after {\n\tvisibility: visible;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n\tfilter: progid: DXImageTransform.Microsoft.Alpha(Opacity=100);\n\topacity: 1;\n}\n\n/**\n * Animation needed for smush\n */\n\n@keyframes checkmark {\n\n\t0% {\n\t\theight: 0;\n\t\twidth: 0;\n\t\topacity: 1;\n\t}\n\n\t20% {\n\t\theight: 0;\n\t\twidth: 12.5px;\n\t\topacity: 1;\n\t}\n\n\t40% {\n\t\theight: 25px;\n\t\twidth: 12.5px;\n\t\topacity: 1;\n\t}\n\n\t100% {\n\t\theight: 25px;\n\t\twidth: 12.5px;\n\t\topacity: 1;\n\t}\n\n}\n\n@keyframes animate-stripes {\n\n\t0% {\n\t\tbackground-position: 0 0;\n\t}\n\n\t100% {\n\t\tbackground-position: 60px 0;\n\t}\n\n}\n\n@keyframes animate-stripes {\n\n\t0% {\n\t\tbackground-position: 0 0;\n\t}\n\n\t100% {\n\t\tbackground-position: 60px 0;\n\t}\n\n}\n"]}
|
|
|
css/smush-3-0-18.min.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
| 1 |
+
.wpo-fieldgroup .autosmush{display:inline-block;width:100%}.wpo-fieldgroup .autosmush h3{font-size:1.2em;margin:3px 18px}.wpo-fieldgroup .compression_server div{max-width:300px}.wpo-fieldgroup .compression_server h2{margin:10px 0}.wpo-fieldgroup .compression_server h3{clear:both;width:100%}.wpo-fieldgroup .compression_server p{margin:1px}.wpo-fieldgroup .compression_server p:last-of-type{margin-bottom:10px}.wpo-fieldgroup .compression_server{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.wpo-fieldgroup .compression_server>div{-ms-flex:1;flex:1;margin-right:10px;height:100%;position:relative}.wpo-fieldgroup .compression_server input[type="radio"]{position:absolute;z-index:1;top:calc(50% + 2px);left:20px;transform:translatey(-50%)}.wpo-fieldgroup .compression_server input[type="radio"] ~ label h4{color:#23282d;margin-top:0;margin-bottom:.9em;font-size:1.2em}.wpo-fieldgroup .compression_server label{display:block;position:relative;box-sizing:border-box;height:100%;background:#FFF;text-align:left;box-shadow:0 3px 10px -2px hsla(150,5%,65%,0.5)}.wpo-fieldgroup .compression_server input[type="radio"]+label{padding:20px;border:2px solid #FFF;padding-left:65px;position:relative;border-radius:5px;color:#82868b}.wpo-fieldgroup .compression_server input[type="radio"]+label::before{content:'';display:block;position:absolute;top:0;left:52px;height:100%;border-right:1px solid #edeff0}.wpo-fieldgroup .save-options{margin:10px 0}.wpo-fieldgroup .compression_server input[type="radio"]:focus+label,.wpo-fieldgroup .compression_server input[type="radio"]+label:hover{border-color:rgba(0,134,184,0.38)}.wpo-fieldgroup .compression_server input[type="radio"]:focus+label{box-shadow:0 3px 10px -2px #5b9dd9}.wpo-fieldgroup .compression_server input[type="radio"]:focus+label h4{color:#0086b9}.wpo-fieldgroup .compression_server input[type="radio"]:checked+label,.wpo-fieldgroup .compression_server input[type="radio"]:checked+label:hover{border-color:#0086b9}@media only screen and (max-width:700px){.wpo-fieldgroup .compression_server{-ms-flex-direction:column;flex-direction:column}.wpo-fieldgroup .compression_server>div{margin-bottom:15px;max-width:100%}}.wpo-fieldgroup h4{margin:1em 0;width:100%}.wpo-fieldgroup .image_quality input[type=radio]{position:absolute;visibility:hidden;display:none}.wpo-fieldgroup .image_quality label{color:#23282d;display:inline-block;cursor:pointer;font-weight:bold;padding:5px 20px;background:#f9f9f9;float:left;margin:0 .5px}.wpo-fieldgroup .image_quality input[type=radio]:checked+label{color:white;background:#0088b9}.wpo-fieldgroup .image_quality label+.wpo-fieldgroup .image_quality input[type=radio]+label{border-left:solid 3px #675f6b}.wpo-fieldgroup .image_quality.radio-group{border:solid .5px #c4c4c4;display:inline-block;border-radius:5px;overflow:hidden;border-bottom:solid 2px #c4c4c4;background:#c4c4c4}.wpo-fieldgroup .image_options input{min-height:16px;min-width:16px;margin:3px 2px}img#wpo_smush_images_save_options_spinner{max-width:20px;max-height:20px}span#wpo_smush_images_save_options_fail{font-size:inherit;color:red}span#wpo_smush_images_save_options_done{font-size:inherit;color:green}#smush-complete-summary span.clearfix{height:10px;display:block;clear:both}span.close{display:block;clear:both;text-align:left;color:#df6927;border:2px solid;border-radius:50%;cursor:pointer}.modal-message-text{margin:0 25px}.smush-options.custom_compression{margin:10px}#smush-backup-delete-days{width:50px;margin:0 8px}img#wpo_smush_delete_backup_spinner{max-width:20px;max-height:20px;position:relative;top:4px}span#wpo_smush_delete_backup_done{font-size:inherit;color:green}.wpo-fieldgroup .smush-options.custom_compression{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;margin-left:24px}.wpo-fieldgroup .smush-options.custom_compression>span{display:inline-block;padding:6px;border:1px solid #cfd2d4;border-radius:4px;font-size:.9em;position:relative}.wpo-fieldgroup .smush-options.custom_compression>span.slider-start::after{content:'';width:6px;height:6px;display:block;position:absolute;top:0;left:100%;transform:translate(-3px,8px) rotate(45deg);border-right:1px solid #cfd2d4;border-top:1px solid #cfd2d4;background:#edeff0}.wpo-fieldgroup .smush-options.custom_compression>span.slider-end::before{content:'';width:6px;height:6px;display:block;position:absolute;top:0;right:100%;transform:translate(3px,8px) rotate(45deg);border-left:1px solid #cfd2d4;border-bottom:1px solid #cfd2d4;background:#edeff0}.wpo-fieldgroup .smush-options.custom_compression>input{margin-left:8px;margin-right:8px}@media screen and (max-width:782px){.wpo-fieldgroup input[type="radio"]{height:16px;width:16px}.wpo-fieldgroup input[type="radio"]:checked:before{width:6px;height:6px;margin:4px}.wpo-fieldgroup .smush-options.custom_compression{-ms-flex-direction:column;flex-direction:column}.wpo-fieldgroup .smush-options.custom_compression>input{width:100%}.wpo-fieldgroup .smush-options.custom_compression>span{display:block;width:100%}.wpo-fieldgroup .smush-options.custom_compression>span.slider-start::after{left:0;transform:translate(7px,22px) rotate(135deg)}.wpo-fieldgroup .smush-options.custom_compression>span.slider-end::before{right:auto;left:100%;transform:translate(-14px,-5px) rotate(135deg)}}#wpo_smush_settings .align-left{float:left}#wpo_smush_settings .align-right{float:right}.wpo-fieldgroup .wpo_smush_images_buttons_wrap{width:100%}.wpo-fieldgroup .smush-refresh-icon,.wpo-fieldgroup .smush-select-actions{font-size:15px}.wpo-fieldgroup img.wpo_smush_images_loader{display:none;min-height:20px;min-width:20px}.wpo-fieldgroup .dashicons.dashicons-image-rotate,{font-size:15px}.wpo-fieldgroup .wpo-toggle-advanced-options{cursor:pointer;text-decoration:underline;color:#0088bc}.wpo-fieldgroup .button.wpo-toggle-advanced-options{display:block;width:calc(100% + 40px);margin-left:-20px;margin-right:-20px;padding-left:20px;padding-right:20px;position:relative;text-decoration:none}.wpo-fieldgroup .button.wpo-toggle-advanced-options span.dashicons{text-decoration:none;font-size:16px;height:16px;vertical-align:middle;color:#444;transition:.2s all}.wpo-fieldgroup .wpo-toggle-advanced-options span.text{background:#f2f4f4;z-index:1;position:relative;padding-right:5px}.wpo-fieldgroup .button.wpo-toggle-advanced-options:hover,.wpo-fieldgroup .button.wpo-toggle-advanced-options:focus{background:transparent}.wpo-fieldgroup .button.wpo-toggle-advanced-options .wpo-toggle-advanced-options__text-show{display:inline-block}.wpo-fieldgroup .button.wpo-toggle-advanced-options .wpo-toggle-advanced-options__text-hide{display:none}.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened .wpo-toggle-advanced-options__text-show{display:none}.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened .wpo-toggle-advanced-options__text-hide{display:inline-block}.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened::before{content:'';border-top:1px solid #CCC;width:100%;position:absolute;top:16px;left:0}.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened span.dashicons{transform:rotate(180deg)}.wpo-fieldgroup .wpo-advanced-options{display:none}.wpo-advanced-options>fieldset:first-child{margin-top:10px}.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened+.wpo-advanced-options{display:block}.wpo_smush_image:focus-within label{box-shadow:0 0 4px #0272aa}.wpo_smush_image .wpo_smush_image__input:checked+label{border-color:#0272aa}.uncompressed-images input[type="checkbox"]{position:absolute;opacity:0;width:0;height:0}.uncompressed-images small.red{clear:both;display:block;margin:5px}.smush-actions .wpo_primary_small{display:inline-block;margin:5px}.smush-actions{display:inline-block;width:100%;margin:10px 0}.smush-actions .dashicons.dashicons-yes{font-size:15px;margin:0 5px}.smush-actions img{max-height:25px;max-width:25px}#smush-log-modal{width:100%;height:100%}#log-panel{height:80%;overflow:scroll;margin:2%}#log-panel pre{text-align:left;overflow:auto;height:100%;background:gainsboro}.smush-information{margin-bottom:10px}#smush_stats{text-align:center;margin:0 auto;padding:2%;min-width:350px;font-size:larger}#smush_stats .wpo_smush_stats_cta_btn{clear:both;display:block;text-align:center}#smush_stats .smush_stats_row td:first-child{text-align:left}#smush_stats tr.smush_stats_row td:last-child{text-align:right}#smush_stats #wpo_smush_images_information_container p{padding:10px}#smush-complete-summary .checkmark-circle{width:50px;height:50px;position:relative;display:inline-block;vertical-align:top}#smush-complete-summary .checkmark-circle .background{width:50px;height:50px;border-radius:50%;background:#df6927;position:absolute}#smush-complete-summary .checkmark-circle .checkmark{border-radius:5px}#smush-complete-summary .checkmark-circle .checkmark.draw:after{animation-delay:100ms;animation-duration:1s;animation-timing-function:ease;animation-name:checkmark;transform:scalex(-1) rotate(135deg);animation-fill-mode:forwards}#smush-complete-summary .checkmark-circle .checkmark:after{opacity:1;height:25px;width:12.5px;transform-origin:left top;border-right:5px solid white;border-top:5px solid white;border-radius:2.5px !important;content:'';left:8.3333333333px;top:25px;position:absolute}#smush_stats .wpo_primary_small{text-align:center}#smush-complete-summary #summary-message{margin:15px auto}img#wpo_smush_images_clear_stats_spinner{width:20px;line-height:1;vertical-align:middle}#wpo_smush_images_information_container{padding:10px}#wpo_smush_images_information_wrapper .progress-bar{height:25px;padding:1px;width:350px;margin:10px auto;border-radius:5px}#wpo_smush_images_information_wrapper .progress-bar span{display:inline-block;height:100%;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5) inset;transition:width .4s ease-in-out}#wpo_smush_images_information_wrapper .orange span{background-color:#df6927}#wpo_smush_images_information_wrapper .stripes span{background-size:30px;background-image:linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);animation:animate-stripes 3s linear infinite}#smush-metabox-inside-wrapper{display:inline-table;width:100%}#smush-metabox-inside-wrapper h4{margin:2px 0}#smush-metabox-inside-wrapper label{margin-top:5px;clear:left;display:block}#smush-metabox-inside-wrapper .wpo_smush_single_image{display:block}#smush-metabox-inside-wrapper .wpo_smush_single_image.action_button{padding:5px 0}#smush-metabox-inside-wrapper fieldset{margin:10px 0}#smush-metabox-inside-wrapper input[type="radio"]{margin:-4px 4px 0 0}#smush-metabox-inside-wrapper .alignleft{float:left}#smush-metabox-inside-wrapper p#smush_info{margin:20px auto;padding-top:10px;clear:both}#smush-metabox-inside-wrapper .wpo-toggle-advanced-options{cursor:pointer;display:block;clear:both;margin-top:10px;margin-bottom:10px}#smush-metabox-inside-wrapper .wpo-toggle-advanced-options:not(.opened) ~ .wpo-advanced-options{display:none}#smush-metabox-inside-wrapper .wpo-toggle-advanced-options.opened ~ .wpo-advanced-options{display:block !important}#smush-metabox-inside-wrapper .smush-options.custom_compression span{display:block;max-width:30%;clear:both}#smush-metabox-inside-wrapper input#custom_compression_slider{display:block;clear:both;width:100%}#smush-metabox-inside-wrapper .smush-options.custom_compression span.alignleft{float:left}#smush-metabox-inside-wrapper .smush-options.custom_compression span.alignright{float:right;text-align:right}.smush-metabox-dashboard-link{clear:both;padding-top:15px;text-align:right}.media-frame-content .attachment-compat .compat-item,.compat-field-wpo_compress_image{overflow:visible !important}.compat-field-wpo_compress_image{border-top:1px solid #DDD}.compat-field-wpo_compress_image span.dashicons{text-align:left;float:none;min-height:0;padding-top:2px}.compat-field-wpo_compress_image td.field{width:auto;float:none}.compat-field-wpo_compress_image td.field [data-tooltip]{display:none}.compat-field-wpo_compress_image th.label{text-align:left;min-width:0;float:none;margin:0}.compat-field-wpo_compress_image th.label label span{font-weight:500;text-align:left}.wpo_restore_single_image .alignright{float:right}.blockUI.blockMsg.blockPage{z-index:170000 !important;right:0;left:0 !important;margin-right:auto !important;margin-left:auto !important;max-width:90%;cursor:default !important}.blockUI.blockOverlay{cursor:default !important}#smush-metabox-inside-wrapper [data-tooltip],.wpo-fieldgroup [data-tooltip]{position:relative;cursor:pointer;line-height:18px}#smush-metabox-inside-wrapper [data-tooltip]:before,#smush-metabox-inside-wrapper [data-tooltip]:after,.wpo-fieldgroup [data-tooltip]:before,.wpo-fieldgroup [data-tooltip]:after{visibility:hidden;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);opacity:0;pointer-events:none}#smush-metabox-inside-wrapper [data-tooltip]:before,.wpo-fieldgroup [data-tooltip]:before{position:absolute;bottom:150%;left:50%;margin-bottom:5px;margin-left:-140px;padding:12px;width:275px;z-index:9999;border-radius:3px;background-color:#000;background-color:hsla(0,0%,20%,0.95);color:#FFF;content:attr(data-tooltip);text-align:center;font-size:.85rem;font-weight:400;line-height:1.4}#smush-metabox-inside-wrapper [data-tooltip]:before{margin-left:-280px}#smush-metabox-inside-wrapper [data-tooltip]:after,.wpo-fieldgroup [data-tooltip]:after{position:absolute;bottom:150%;left:50%;margin-left:-5px;width:0;border-top:5px solid #000;border-top:5px solid hsla(0,0%,20%,0.9);border-right:5px solid transparent;border-left:5px solid transparent;content:" ";font-size:0;line-height:0}#smush-metabox-inside-wrapper [data-tooltip]:hover:before,#smush-metabox-inside-wrapper [data-tooltip]:hover:after,.wpo-fieldgroup [data-tooltip]:hover:before,.wpo-fieldgroup [data-tooltip]:hover:after,#smush-metabox-inside-wrapper [data-tooltip]:focus:before,#smush-metabox-inside-wrapper [data-tooltip]:focus:after,.wpo-fieldgroup [data-tooltip]:focus:before,.wpo-fieldgroup [data-tooltip]:focus:after{visibility:visible;-ms-filter:"alpha(opacity=100)";filter:alpha(opacity=100);opacity:1}@keyframes checkmark{0%{height:0;width:0;opacity:1}20%{height:0;width:12.5px;opacity:1}40%{height:25px;width:12.5px;opacity:1}100%{height:25px;width:12.5px;opacity:1}}@keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}@keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}
|
| 2 |
+
/*# sourceMappingURL=smush-3-0-18.min.css.map */
|
css/smush-3-0-18.min.css.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
{"version":3,"sources":["css/smush.css"],"names":[],"mappings":"AAAA;;GAEG;AACH;CACC,sBAAsB;CACtB,YAAY;CACZ;;AAED;CACC,iBAAiB;CACjB,iBAAiB;CACjB;;AAED;;GAEG;AACH;CACC,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf;;AAED;CACC,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,YAAY;CACZ;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,qBAAqB;CACrB,cAAc;CACd,wBAAwB;CACxB,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,QAAQ;CACR,mBAAmB;CACnB,aAAa;CACb,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,WAAW;CACX,qBAAqB;CACrB,WAAW;CACX,4BAA4B;CAC5B;;AAED;CACC,eAAe;CACf,cAAc;CACd,qBAAqB;CACrB,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,mBAAmB;CACnB,uBAAuB;CACvB,aAAa;CACb,iBAAiB;CACjB,iBAAiB;CACjB,sDAAsD;CACtD;;AAED;CACC,cAAc;CACd,uBAAuB;CACvB,mBAAmB;CACnB,mBAAmB;CACnB,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,OAAO;CACP,WAAW;CACX,aAAa;CACb,gCAAgC;CAChC;;AAED;CACC,eAAe;CACf;;AAED;;CAEC,sCAAsC;CACtC;;AAED;CACC,sCAAsC;CACtC;;AAED;CACC,eAAe;CACf;;AAED;;CAEC,sBAAsB;CACtB;;AAED;;CAEC;EACC,2BAA2B;EAC3B,uBAAuB;EACvB;;CAED;EACC,oBAAoB;EACpB,gBAAgB;EAChB;;CAED;;AAED;;GAEG;AACH;CACC,cAAc;CACd,YAAY;CACZ;;AAED;CACC,mBAAmB;CACnB,mBAAmB;CACnB,cAAc;CACd;;AAED;CACC,eAAe;CACf,sBAAsB;CACtB,gBAAgB;CAChB,kBAAkB;CAClB,kBAAkB;CAClB,oBAAoB;CACpB,YAAY;CACZ,eAAe;CACf;;AAED;CACC,aAAa;CACb,oBAAoB;CACpB;;AAED;CACC,+BAA+B;CAC/B;;AAED;CACC,2BAA2B;CAC3B,sBAAsB;CACtB,mBAAmB;CACnB,iBAAiB;CACjB,iCAAiC;CACjC,oBAAoB;CACpB;;AAED;CACC,iBAAiB;CACjB,gBAAgB;CAChB,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB,WAAW;CACX;;AAED;CACC,mBAAmB;CACnB,aAAa;CACb;;AAED;CACC,aAAa;CACb,eAAe;CACf,YAAY;CACZ;;AAED;CACC,eAAe;CACf,YAAY;CACZ,iBAAiB;CACjB,eAAe;CACf,kBAAkB;CAClB,mBAAmB;CACnB,gBAAgB;CAChB;;AAED;CACC,eAAe;CACf;;AAED;CACC,aAAa;CACb;;AAED;CACC,YAAY;CACZ,cAAc;CACd;;AAED;CACC,gBAAgB;CAChB,iBAAiB;CACjB,mBAAmB;CACnB,SAAS;CACT;;AAED;CACC,mBAAmB;CACnB,aAAa;CACb;;AAED;CACC,qBAAc;CAAd,cAAc;CACd,uBAAoB;KAApB,oBAAoB;CACpB,kBAAkB;CAClB;;AAED;CACC,sBAAsB;CACtB,aAAa;CACb,0BAA0B;CAC1B,mBAAmB;CACnB,iBAAiB;CACjB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,OAAO;CACP,WAAW;CACX,8CAA8C;CAC9C,gCAAgC;CAChC,8BAA8B;CAC9B,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,OAAO;CACP,YAAY;CACZ,6CAA6C;CAC7C,+BAA+B;CAC/B,iCAAiC;CACjC,oBAAoB;CACpB;;AAED;CACC,iBAAiB;CACjB,kBAAkB;CAClB;;AAED;;CAEC;EACC,aAAa;EACb,YAAY;EACZ;;CAED;EACC,WAAW;EACX,YAAY;EACZ,YAAY;EACZ;;CAED;EACC,2BAAuB;MAAvB,uBAAuB;EACvB;;CAED;EACC,YAAY;EACZ;;CAED;EACC,eAAe;EACf,YAAY;EACZ;;CAED;EACC,QAAQ;EACR,+CAA+C;EAC/C;;CAED;EACC,YAAY;EACZ,WAAW;EACX,iDAAiD;EACjD;;CAED;;AAED;;GAEG;;AAEH;CACC,YAAY;CACZ;;AAED;CACC,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;;CAEC,gBAAgB;CAChB;;AAED;CACC,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB,2BAA2B;CAC3B,eAAe;CACf;;AAED;CACC,eAAe;CACf,yBAAyB;CACzB,mBAAmB;CACnB,oBAAoB;CACpB,mBAAmB;CACnB,oBAAoB;CACpB,mBAAmB;CACnB,sBAAsB;CACtB;;AAED;CACC,sBAAsB;CACtB,gBAAgB;CAChB,aAAa;CACb,uBAAuB;CACvB,YAAY;CACZ,oBAAoB;CACpB;;AAED;CACC,oBAAoB;CACpB,WAAW;CACX,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;;CAEC,wBAAwB;CACxB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,YAAY;CACZ,2BAA2B;CAC3B,YAAY;CACZ,mBAAmB;CACnB,UAAU;CACV,QAAQ;CACR;;AAED;CACC,0BAA0B;CAC1B;;AAED;CACC,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf;;AAED;CACC,4BAA4B;CAC5B;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,mBAAmB;CACnB,WAAW;CACX,SAAS;CACT,UAAU;CACV;;AAED;CACC,YAAY;CACZ,eAAe;CACf,YAAY;CACZ;;AAED;CACC,sBAAsB;CACtB,YAAY;CACZ;;AAED;CACC,sBAAsB;CACtB,YAAY;CACZ,eAAe;CACf;;AAED;CACC,gBAAgB;CAChB,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB,gBAAgB;CAChB;;AAED;;GAEG;;AAEH;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,YAAY;CACZ,iBAAiB;CACjB,WAAW;CACX;;AAED;CACC,iBAAiB;CACjB,eAAe;CACf,aAAa;CACb,sBAAsB;CACtB;;AAED;CACC,oBAAoB;CACpB;;AAED;;GAEG;;AAEH;CACC,mBAAmB;CACnB,eAAe;CACf,YAAY;CACZ,iBAAiB;CACjB,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,cAAc;CACd;;AAED;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,sBAAsB;CACtB,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,oBAAoB;CACpB,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,uBAAuB;CACvB,uBAAuB;CACvB,gCAAgC;CAChC,0BAA0B;CAC1B,qCAAqC;CACrC,8BAA8B;CAC9B;;AAED;CACC,WAAW;CACX,aAAa;CACb,cAAc;CACd,2BAA2B;CAC3B,8BAA8B;CAC9B,4BAA4B;CAC5B,gCAAgC;CAChC,YAAY;CACZ,qBAAqB;CACrB,UAAU;CACV,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,eAAe;CACf,uBAAuB;CACvB;;AAED,2BAA2B;;AAE3B;CACC,cAAc;CACd;;AAED;CACC,aAAa;CACb,aAAa;CACb,aAAa;CACb,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,sBAAsB;CACtB,aAAa;CACb,mBAAmB;CACnB,kDAAkD;CAClD,kCAAkC;CAClC;;AAED;CACC,0BAA0B;CAC1B;;AAED;CACC,sBAAsB;CACtB,oMAAoM;CACpM,8CAA8C;CAC9C;;AAED;;GAEG;;AAEH;CACC,sBAAsB;CACtB,YAAY;CACZ;;AAED;CACC,cAAc;CACd;;AAED;CACC,gBAAgB;CAChB,YAAY;CACZ,eAAe;CACf;;AAED;CACC,eAAe;CACf;;AAED;CACC,eAAe;CACf;;AAED;CACC,eAAe;CACf;;AAED;CACC,qBAAqB;CACrB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,kBAAkB;CAClB,kBAAkB;CAClB,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB,eAAe;CACf,YAAY;CACZ,iBAAiB;CACjB,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd;;AAED;CACC,0BAA0B;CAC1B;;AAED;CACC,eAAe;CACf,eAAe;CACf,YAAY;CACZ;;AAED;CACC,eAAe;CACf,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,YAAY;CACZ;;AAED;CACC,aAAa;CACb,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,kBAAkB;CAClB,kBAAkB;CAClB;;AAED;;CAEC,6BAA6B;CAC7B;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,cAAc;CACd,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB,aAAa;CACb,YAAY;CACZ,UAAU;CACV;;AAED;CACC,iBAAiB;CACjB,iBAAiB;CACjB;;AAED,+CAA+C;AAC/C;CACC,aAAa;CACb;;AAED;;GAEG;AACH;CACC,2BAA2B;CAC3B,SAAS;CACT,mBAAmB;CACnB,8BAA8B;CAC9B,6BAA6B;CAC7B,eAAe;CACf,2BAA2B;CAC3B;;AAED;CACC,2BAA2B;CAC3B;;AAED;;GAEG;;AAEH,4DAA4D;AAC5D;;CAEC,mBAAmB;CACnB,gBAAgB;CAChB,kBAAkB;CAClB;;AAED,yCAAyC;AACzC;;;;CAIC,mBAAmB;CACnB,iEAAiE;CACjE,4DAA4D;CAC5D,WAAW;CACX,qBAAqB;CACrB;;AAED,wCAAwC;AACxC;;CAEC,mBAAmB;CACnB,aAAa;CACb,UAAU;CACV,mBAAmB;CACnB,oBAAoB;CACpB,cAAc;CACd,aAAa;CACb,cAAc;CACd,mBAAmB;CACnB,uBAAuB;CACvB,yCAAyC;CACzC,YAAY;CACZ,4BAA4B;CAC5B,mBAAmB;CACnB,kBAAkB;CAClB,iBAAiB;CACjB,iBAAiB;CACjB;;AAED;CACC,oBAAoB;CACpB;;AAED,6DAA6D;AAC7D;;CAEC,mBAAmB;CACnB,aAAa;CACb,UAAU;CACV,kBAAkB;CAClB,SAAS;CACT,2BAA2B;CAC3B,4CAA4C;CAC5C,oCAAoC;CACpC,mCAAmC;CACnC,aAAa;CACb,aAAa;CACb,eAAe;CACf;;AAED,mCAAmC;AACnC;;;;;;;;CAQC,oBAAoB;CACpB,mEAAmE;CACnE,8DAA8D;CAC9D,WAAW;CACX;;AAED;;GAEG;;AAEH;;CAEC;EACC,UAAU;EACV,SAAS;EACT,WAAW;EACX;;CAED;EACC,UAAU;EACV,cAAc;EACd,WAAW;EACX;;CAED;EACC,aAAa;EACb,cAAc;EACd,WAAW;EACX;;CAED;EACC,aAAa;EACb,cAAc;EACd,WAAW;EACX;;CAED;;AAED;;CAEC;EACC,yBAAyB;EACzB;;CAED;EACC,4BAA4B;EAC5B;;CAED;;AAED;;CAEC;EACC,yBAAyB;EACzB;;CAED;EACC,4BAA4B;EAC5B;;CAED","file":"smush-3-0-18.min.css","sourcesContent":["/**\n * Autosmush\n */\n.wpo-fieldgroup .autosmush {\n\tdisplay: inline-block;\n\twidth: 100%;\n}\n\n.wpo-fieldgroup .autosmush h3 {\n\tfont-size: 1.2em;\n\tmargin: 3px 18px;\n}\n\n/**\n * Compression Server\n */\n.wpo-fieldgroup .compression_server div {\n\tmax-width: 300px;\n}\n\n.wpo-fieldgroup .compression_server h2 {\n\tmargin: 10px 0;\n}\n\n.wpo-fieldgroup .compression_server h3 {\n\tclear: both;\n\twidth: 100%;\n}\n\n.wpo-fieldgroup .compression_server p {\n\tmargin: 1px;\n}\n\n.wpo-fieldgroup .compression_server p:last-of-type {\n\tmargin-bottom: 10px;\n}\n\n.wpo-fieldgroup .compression_server {\n\tdisplay: -ms-flexbox;\n\tdisplay: flex;\n\t-ms-flex-flow: row wrap;\n\tflex-flow: row wrap;\n}\n\n.wpo-fieldgroup .compression_server > div {\n\t-ms-flex: 1;\n\tflex: 1;\n\tmargin-right: 10px;\n\theight: 100%;\n\tposition: relative;\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"] {\n\tposition: absolute;\n\tz-index: 1;\n\ttop: calc(50% + 2px);\n\tleft: 20px;\n\ttransform: translatey(-50%);\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"] ~ label h4 {\n\tcolor: #23282D;\n\tmargin-top: 0;\n\tmargin-bottom: 0.9em;\n\tfont-size: 1.2em;\n}\n\n.wpo-fieldgroup .compression_server label {\n\tdisplay: block;\n\tposition: relative;\n\tbox-sizing: border-box;\n\theight: 100%;\n\tbackground: #FFF;\n\ttext-align: left;\n\tbox-shadow: 0px 3px 10px -2px hsla(150, 5%, 65%, 0.5);\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"] + label {\n\tpadding: 20px;\n\tborder: 2px solid #FFF;\n\tpadding-left: 65px;\n\tposition: relative;\n\tborder-radius: 5px;\n\tcolor: #82868B;\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"] + label::before {\n\tcontent: '';\n\tdisplay: block;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 52px;\n\theight: 100%;\n\tborder-right: 1px solid #EDEFF0;\n}\n\n.wpo-fieldgroup .save-options {\n\tmargin: 10px 0;\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"]:focus + label,\n.wpo-fieldgroup .compression_server input[type=\"radio\"] + label:hover {\n\tborder-color: rgba(0, 134, 184, 0.38);\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"]:focus + label {\n\tbox-shadow: 0px 3px 10px -2px #5B9DD9;\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"]:focus + label h4 {\n\tcolor: #0086B9;\n}\n\n.wpo-fieldgroup .compression_server input[type=\"radio\"]:checked + label,\n.wpo-fieldgroup .compression_server input[type=\"radio\"]:checked + label:hover {\n\tborder-color: #0086B9;\n}\n\n@media only screen and (max-width: 700px) {\n\n\t.wpo-fieldgroup .compression_server {\n\t\t-ms-flex-direction: column;\n\t\tflex-direction: column;\n\t}\n\n\t.wpo-fieldgroup .compression_server > div {\n\t\tmargin-bottom: 15px;\n\t\tmax-width: 100%;\n\t}\n\n}\n\n/**\n * Compression Options\n */\n.wpo-fieldgroup h4 {\n\tmargin: 1em 0;\n\twidth: 100%;\n}\n\n.wpo-fieldgroup .image_quality input[type=radio] {\n\tposition: absolute;\n\tvisibility: hidden;\n\tdisplay: none;\n}\n\n.wpo-fieldgroup .image_quality label {\n\tcolor: #23282D;\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tfont-weight: bold;\n\tpadding: 5px 20px;\n\tbackground: #F9F9F9;\n\tfloat: left;\n\tmargin: 0 .5px;\n}\n\n.wpo-fieldgroup .image_quality input[type=radio]:checked + label {\n\tcolor: white;\n\tbackground: #0088B9;\n}\n\n.wpo-fieldgroup .image_quality label + .wpo-fieldgroup .image_quality input[type=radio] + label {\n\tborder-left: solid 3px #675F6B;\n}\n\n.wpo-fieldgroup .image_quality.radio-group {\n\tborder: solid .5px #C4C4C4;\n\tdisplay: inline-block;\n\tborder-radius: 5px;\n\toverflow: hidden;\n\tborder-bottom: solid 2px #C4C4C4;\n\tbackground: #C4C4C4;\n}\n\n.wpo-fieldgroup .image_options input {\n\tmin-height: 16px;\n\tmin-width: 16px;\n\tmargin: 3px 2px;\n}\n\nimg#wpo_smush_images_save_options_spinner {\n\tmax-width: 20px;\n\tmax-height: 20px;\n}\n\nspan#wpo_smush_images_save_options_fail {\n\tfont-size: inherit;\n\tcolor: red;\n}\n\nspan#wpo_smush_images_save_options_done {\n\tfont-size: inherit;\n\tcolor: green;\n}\n\n#smush-complete-summary span.clearfix {\n\theight: 10px;\n\tdisplay: block;\n\tclear: both;\n}\n\nspan.close {\n\tdisplay: block;\n\tclear: both;\n\ttext-align: left;\n\tcolor: #DF6927;\n\tborder: 2px solid;\n\tborder-radius: 50%;\n\tcursor: pointer;\n}\n\n.modal-message-text {\n\tmargin: 0 25px;\n}\n\n.smush-options.custom_compression {\n\tmargin: 10px;\n}\n\n#smush-backup-delete-days {\n\twidth: 50px;\n\tmargin: 0 8px;\n}\n\nimg#wpo_smush_delete_backup_spinner {\n\tmax-width: 20px;\n\tmax-height: 20px;\n\tposition: relative;\n\ttop: 4px;\n}\n\nspan#wpo_smush_delete_backup_done {\n\tfont-size: inherit;\n\tcolor: green;\n}\n\n.wpo-fieldgroup .smush-options.custom_compression {\n\tdisplay: flex;\n\talign-items: center;\n\tmargin-left: 24px;\n}\n\n.wpo-fieldgroup .smush-options.custom_compression > span {\n\tdisplay: inline-block;\n\tpadding: 6px;\n\tborder: 1px solid #CFD2D4;\n\tborder-radius: 4px;\n\tfont-size: 0.9em;\n\tposition: relative;\n}\n\n.wpo-fieldgroup .smush-options.custom_compression > span.slider-start::after {\n\tcontent: '';\n\twidth: 6px;\n\theight: 6px;\n\tdisplay: block;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 100%;\n\ttransform: translate(-3px, 8px) rotate(45deg);\n\tborder-right: 1px solid #CFD2D4;\n\tborder-top: 1px solid #CFD2D4;\n\tbackground: #EDEFF0;\n}\n\n.wpo-fieldgroup .smush-options.custom_compression > span.slider-end::before {\n\tcontent: '';\n\twidth: 6px;\n\theight: 6px;\n\tdisplay: block;\n\tposition: absolute;\n\ttop: 0;\n\tright: 100%;\n\ttransform: translate(3px, 8px) rotate(45deg);\n\tborder-left: 1px solid #CFD2D4;\n\tborder-bottom: 1px solid #CFD2D4;\n\tbackground: #EDEFF0;\n}\n\n.wpo-fieldgroup .smush-options.custom_compression > input {\n\tmargin-left: 8px;\n\tmargin-right: 8px;\n}\n\n@media screen and (max-width: 782px) {\n\n\t.wpo-fieldgroup input[type=\"radio\"] {\n\t\theight: 16px;\n\t\twidth: 16px;\n\t}\n\n\t.wpo-fieldgroup\tinput[type=\"radio\"]:checked:before {\n\t\twidth: 6px;\n\t\theight: 6px;\n\t\tmargin: 4px;\n\t}\n\n\t.wpo-fieldgroup .smush-options.custom_compression {\n\t\tflex-direction: column;\n\t}\n\n\t.wpo-fieldgroup .smush-options.custom_compression > input {\n\t\twidth: 100%;\n\t}\n\n\t.wpo-fieldgroup .smush-options.custom_compression > span {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t}\n\n\t.wpo-fieldgroup .smush-options.custom_compression > span.slider-start::after {\n\t\tleft: 0;\n\t\ttransform: translate(7px, 22px) rotate(135deg);\n\t}\n\n\t.wpo-fieldgroup .smush-options.custom_compression > span.slider-end::before {\n\t\tright: auto;\n\t\tleft: 100%;\n\t\ttransform: translate(-14px, -5px) rotate(135deg);\n\t}\n\n}\n\n/**\n * Uncompressed images\n */\n\n#wpo_smush_settings .align-left {\n\tfloat: left;\n}\n\n#wpo_smush_settings .align-right {\n\tfloat: right;\n}\n\n.wpo-fieldgroup .wpo_smush_images_buttons_wrap {\n\twidth: 100%;\n}\n\n.wpo-fieldgroup .smush-refresh-icon,\n.wpo-fieldgroup .smush-select-actions {\n\tfont-size: 15px;\n}\n\n.wpo-fieldgroup img.wpo_smush_images_loader {\n\tdisplay: none;\n\tmin-height: 20px;\n\tmin-width: 20px;\n}\n\n.wpo-fieldgroup .dashicons.dashicons-image-rotate, {\n\tfont-size: 15px;\n}\n\n.wpo-fieldgroup .wpo-toggle-advanced-options {\n\tcursor: pointer;\n\ttext-decoration: underline;\n\tcolor: #0088BC;\n}\n\n.wpo-fieldgroup .button.wpo-toggle-advanced-options {\n\tdisplay: block;\n\twidth: calc(100% + 40px);\n\tmargin-left: -20px;\n\tmargin-right: -20px;\n\tpadding-left: 20px;\n\tpadding-right: 20px;\n\tposition: relative;\n\ttext-decoration: none;\n}\n\n.wpo-fieldgroup .button.wpo-toggle-advanced-options span.dashicons {\n\ttext-decoration: none;\n\tfont-size: 16px;\n\theight: 16px;\n\tvertical-align: middle;\n\tcolor: #444;\n\ttransition: .2s all;\n}\n\n.wpo-fieldgroup .wpo-toggle-advanced-options span.text {\n\tbackground: #F2F4F4;\n\tz-index: 1;\n\tposition: relative;\n\tpadding-right: 5px;\n}\n\n.wpo-fieldgroup .button.wpo-toggle-advanced-options:hover,\n.wpo-fieldgroup .button.wpo-toggle-advanced-options:focus {\n\tbackground: transparent;\n}\n\n.wpo-fieldgroup .button.wpo-toggle-advanced-options .wpo-toggle-advanced-options__text-show {\n\tdisplay: inline-block;\n}\n\n.wpo-fieldgroup .button.wpo-toggle-advanced-options .wpo-toggle-advanced-options__text-hide {\n\tdisplay: none;\n}\n\n.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened .wpo-toggle-advanced-options__text-show {\n\tdisplay: none;\n}\n\n.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened .wpo-toggle-advanced-options__text-hide {\n\tdisplay: inline-block;\n}\n\n.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened::before {\n\tcontent: '';\n\tborder-top: 1px solid #CCC;\n\twidth: 100%;\n\tposition: absolute;\n\ttop: 16px;\n\tleft: 0;\n}\n\n.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened span.dashicons {\n\ttransform: rotate(180deg);\n}\n\n.wpo-fieldgroup .wpo-advanced-options {\n\tdisplay: none;\n}\n\n.wpo-advanced-options > fieldset:first-child {\n\tmargin-top: 10px;\n}\n\n.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened + .wpo-advanced-options {\n\tdisplay: block;\n}\n\n.wpo_smush_image:focus-within label {\n\tbox-shadow: 0 0 4px #0272AA;\n}\n\n.wpo_smush_image .wpo_smush_image__input:checked + label {\n\tborder-color: #0272AA;\n}\n\n.uncompressed-images input[type=\"checkbox\"] {\n\tposition: absolute;\n\topacity: 0;\n\twidth: 0;\n\theight: 0;\n}\n\n.uncompressed-images small.red {\n\tclear: both;\n\tdisplay: block;\n\tmargin: 5px;\n}\n\n.smush-actions .wpo_primary_small {\n\tdisplay: inline-block;\n\tmargin: 5px;\n}\n\n.smush-actions {\n\tdisplay: inline-block;\n\twidth: 100%;\n\tmargin: 10px 0;\n}\n\n.smush-actions .dashicons.dashicons-yes {\n\tfont-size: 15px;\n\tmargin: 0 5px;\n}\n\n.smush-actions img {\n\tmax-height: 25px;\n\tmax-width: 25px;\n}\n\n/**\n * Log and panels\n */\n\n#smush-log-modal {\n\twidth: 100%;\n\theight: 100%;\n}\n\n#log-panel {\n\theight: 80%;\n\toverflow: scroll;\n\tmargin: 2%;\n}\n\n#log-panel pre {\n\ttext-align: left;\n\toverflow: auto;\n\theight: 100%;\n\tbackground: gainsboro;\n}\n\n.smush-information {\n\tmargin-bottom: 10px;\n}\n\n/**\n * Smush modal progress box & related styling\n */\n\n#smush_stats {\n\ttext-align: center;\n\tmargin: 0 auto;\n\tpadding: 2%;\n\tmin-width: 350px;\n\tfont-size: larger;\n}\n\n#smush_stats .wpo_smush_stats_cta_btn {\n\tclear: both;\n\tdisplay: block;\n\ttext-align: center;\n}\n\n#smush_stats .smush_stats_row td:first-child {\n\ttext-align: left;\n}\n\n#smush_stats tr.smush_stats_row td:last-child {\n\ttext-align: right;\n}\n\n#smush_stats #wpo_smush_images_information_container p {\n\tpadding: 10px;\n}\n\n#smush-complete-summary .checkmark-circle {\n\twidth: 50px;\n\theight: 50px;\n\tposition: relative;\n\tdisplay: inline-block;\n\tvertical-align: top;\n}\n\n#smush-complete-summary .checkmark-circle .background {\n\twidth: 50px;\n\theight: 50px;\n\tborder-radius: 50%;\n\tbackground: #DF6927;\n\tposition: absolute;\n}\n\n#smush-complete-summary .checkmark-circle .checkmark {\n\tborder-radius: 5px;\n}\n\n#smush-complete-summary .checkmark-circle .checkmark.draw:after {\n\tanimation-delay: 100ms;\n\tanimation-duration: 1s;\n\tanimation-timing-function: ease;\n\tanimation-name: checkmark;\n\ttransform: scalex(-1) rotate(135deg);\n\tanimation-fill-mode: forwards;\n}\n\n#smush-complete-summary .checkmark-circle .checkmark:after {\n\topacity: 1;\n\theight: 25px;\n\twidth: 12.5px;\n\ttransform-origin: left top;\n\tborder-right: 5px solid white;\n\tborder-top: 5px solid white;\n\tborder-radius: 2.5px !important;\n\tcontent: '';\n\tleft: 8.3333333333px;\n\ttop: 25px;\n\tposition: absolute;\n}\n\n#smush_stats .wpo_primary_small {\n\ttext-align: center;\n}\n\n#smush-complete-summary #summary-message {\n\tmargin: 15px auto;\n}\n\nimg#wpo_smush_images_clear_stats_spinner {\n\twidth: 20px;\n\tline-height: 1;\n\tvertical-align: middle;\n}\n\n/* Animated progress bar */\n\n#wpo_smush_images_information_container {\n\tpadding: 10px;\n}\n\n#wpo_smush_images_information_wrapper .progress-bar {\n\theight: 25px;\n\tpadding: 1px;\n\twidth: 350px;\n\tmargin: 10px auto;\n\tborder-radius: 5px;\n}\n\n#wpo_smush_images_information_wrapper .progress-bar span {\n\tdisplay: inline-block;\n\theight: 100%;\n\tborder-radius: 3px;\n\tbox-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset;\n\ttransition: width .4s ease-in-out;\n}\n\n#wpo_smush_images_information_wrapper .orange span {\n\tbackground-color: #DF6927;\n}\n\n#wpo_smush_images_information_wrapper .stripes span {\n\tbackground-size: 30px;\n\tbackground-image: linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n\tanimation: animate-stripes 3s linear infinite;\n}\n\n/**\n * Smush metabox\n */\n\n#smush-metabox-inside-wrapper {\n\tdisplay: inline-table;\n\twidth: 100%;\n}\n\n#smush-metabox-inside-wrapper h4 {\n\tmargin: 2px 0;\n}\n\n#smush-metabox-inside-wrapper label {\n\tmargin-top: 5px;\n\tclear: left;\n\tdisplay: block;\n}\n\n#smush-metabox-inside-wrapper .wpo_smush_single_image {\n\tdisplay: block;\n}\n\n#smush-metabox-inside-wrapper .wpo_smush_single_image.action_button {\n\tpadding: 5px 0;\n}\n\n#smush-metabox-inside-wrapper fieldset {\n\tmargin: 10px 0;\n}\n\n#smush-metabox-inside-wrapper input[type=\"radio\"] {\n\tmargin: -4px 4px 0 0;\n}\n\n#smush-metabox-inside-wrapper .alignleft {\n\tfloat: left;\n}\n\n#smush-metabox-inside-wrapper p#smush_info {\n\tmargin: 20px auto;\n\tpadding-top: 10px;\n\tclear: both;\n}\n\n#smush-metabox-inside-wrapper .wpo-toggle-advanced-options {\n\tcursor: pointer;\n\tdisplay: block;\n\tclear: both;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n}\n\n#smush-metabox-inside-wrapper .wpo-toggle-advanced-options:not(.opened) ~ .wpo-advanced-options {\n\tdisplay: none;\n}\n\n#smush-metabox-inside-wrapper .wpo-toggle-advanced-options.opened ~ .wpo-advanced-options {\n\tdisplay: block !important;\n}\n\n#smush-metabox-inside-wrapper .smush-options.custom_compression span {\n\tdisplay: block;\n\tmax-width: 30%;\n\tclear: both;\n}\n\n#smush-metabox-inside-wrapper input#custom_compression_slider {\n\tdisplay: block;\n\tclear: both;\n\twidth: 100%;\n}\n\n#smush-metabox-inside-wrapper .smush-options.custom_compression span.alignleft {\n\tfloat: left;\n}\n\n#smush-metabox-inside-wrapper .smush-options.custom_compression span.alignright {\n\tfloat: right;\n\ttext-align: right;\n}\n\n.smush-metabox-dashboard-link {\n\tclear: both;\n\tpadding-top: 15px;\n\ttext-align: right;\n}\n\n.media-frame-content .attachment-compat .compat-item,\n.compat-field-wpo_compress_image {\n\toverflow: visible !important;\n}\n\n.compat-field-wpo_compress_image {\n\tborder-top: 1px solid #DDD;\n}\n\n.compat-field-wpo_compress_image span.dashicons {\n\ttext-align: left;\n\tfloat: none;\n\tmin-height: 0;\n\tpadding-top: 2px;\n}\n\n.compat-field-wpo_compress_image td.field {\n\twidth: auto;\n\tfloat: none;\n}\n\n.compat-field-wpo_compress_image td.field [data-tooltip] {\n\tdisplay: none;\n}\n\n.compat-field-wpo_compress_image th.label {\n\ttext-align: left;\n\tmin-width: 0;\n\tfloat: none;\n\tmargin: 0;\n}\n\n.compat-field-wpo_compress_image th.label label span {\n\tfont-weight: 500;\n\ttext-align: left;\n}\n\n/* fix for elementor restore button position */\n.wpo_restore_single_image .alignright {\n\tfloat: right;\n}\n\n/**\n * Force fix the modals\n */\n.blockUI.blockMsg.blockPage {\n\tz-index: 170000 !important;\n\tright: 0;\n\tleft: 0 !important;\n\tmargin-right: auto !important;\n\tmargin-left: auto !important;\n\tmax-width: 90%;\n\tcursor: default !important;\n}\n\n.blockUI.blockOverlay {\n\tcursor: default !important;\n}\n\n/**\n * Tooltip Styles\n */\n\n/* Add this attribute to the element that needs a tooltip */\n#smush-metabox-inside-wrapper [data-tooltip],\n.wpo-fieldgroup [data-tooltip] {\n\tposition: relative;\n\tcursor: pointer;\n\tline-height: 18px;\n}\n\n/* Hide the tooltip content by default */\n#smush-metabox-inside-wrapper [data-tooltip]:before,\n#smush-metabox-inside-wrapper [data-tooltip]:after,\n.wpo-fieldgroup [data-tooltip]:before,\n.wpo-fieldgroup [data-tooltip]:after {\n\tvisibility: hidden;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n\tfilter: progid: DXImageTransform.Microsoft.Alpha(Opacity=0);\n\topacity: 0;\n\tpointer-events: none;\n}\n\n/* Position tooltip above the element */\n#smush-metabox-inside-wrapper [data-tooltip]:before,\n.wpo-fieldgroup [data-tooltip]:before {\n\tposition: absolute;\n\tbottom: 150%;\n\tleft: 50%;\n\tmargin-bottom: 5px;\n\tmargin-left: -140px;\n\tpadding: 12px;\n\twidth: 275px;\n\tz-index: 9999;\n\tborder-radius: 3px;\n\tbackground-color: #000;\n\tbackground-color: hsla(0, 0%, 20%, 0.95);\n\tcolor: #FFF;\n\tcontent: attr(data-tooltip);\n\ttext-align: center;\n\tfont-size: .85rem;\n\tfont-weight: 400;\n\tline-height: 1.4;\n}\n\n#smush-metabox-inside-wrapper [data-tooltip]:before {\n\tmargin-left: -280px;\n}\n\n/* Triangle hack to make tooltip look like a speech bubble */\n#smush-metabox-inside-wrapper [data-tooltip]:after,\n.wpo-fieldgroup [data-tooltip]:after {\n\tposition: absolute;\n\tbottom: 150%;\n\tleft: 50%;\n\tmargin-left: -5px;\n\twidth: 0;\n\tborder-top: 5px solid #000;\n\tborder-top: 5px solid hsla(0, 0%, 20%, 0.9);\n\tborder-right: 5px solid transparent;\n\tborder-left: 5px solid transparent;\n\tcontent: \" \";\n\tfont-size: 0;\n\tline-height: 0;\n}\n\n/* Show tooltip content on hover */\n#smush-metabox-inside-wrapper [data-tooltip]:hover:before,\n#smush-metabox-inside-wrapper [data-tooltip]:hover:after,\n.wpo-fieldgroup [data-tooltip]:hover:before,\n.wpo-fieldgroup [data-tooltip]:hover:after,\n#smush-metabox-inside-wrapper [data-tooltip]:focus:before,\n#smush-metabox-inside-wrapper [data-tooltip]:focus:after,\n.wpo-fieldgroup [data-tooltip]:focus:before,\n.wpo-fieldgroup [data-tooltip]:focus:after {\n\tvisibility: visible;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n\tfilter: progid: DXImageTransform.Microsoft.Alpha(Opacity=100);\n\topacity: 1;\n}\n\n/**\n * Animation needed for smush\n */\n\n@keyframes checkmark {\n\n\t0% {\n\t\theight: 0;\n\t\twidth: 0;\n\t\topacity: 1;\n\t}\n\n\t20% {\n\t\theight: 0;\n\t\twidth: 12.5px;\n\t\topacity: 1;\n\t}\n\n\t40% {\n\t\theight: 25px;\n\t\twidth: 12.5px;\n\t\topacity: 1;\n\t}\n\n\t100% {\n\t\theight: 25px;\n\t\twidth: 12.5px;\n\t\topacity: 1;\n\t}\n\n}\n\n@keyframes animate-stripes {\n\n\t0% {\n\t\tbackground-position: 0 0;\n\t}\n\n\t100% {\n\t\tbackground-position: 60px 0;\n\t}\n\n}\n\n@keyframes animate-stripes {\n\n\t0% {\n\t\tbackground-position: 0 0;\n\t}\n\n\t100% {\n\t\tbackground-position: 60px 0;\n\t}\n\n}\n"]}
|
css/smush.css
CHANGED
|
@@ -356,13 +356,13 @@ span#wpo_smush_delete_backup_done {
|
|
| 356 |
font-size: 15px;
|
| 357 |
}
|
| 358 |
|
| 359 |
-
.wpo-fieldgroup .toggle-
|
| 360 |
cursor: pointer;
|
| 361 |
text-decoration: underline;
|
| 362 |
color: #0088BC;
|
| 363 |
}
|
| 364 |
|
| 365 |
-
.wpo-fieldgroup .button.toggle-
|
| 366 |
display: block;
|
| 367 |
width: calc(100% + 40px);
|
| 368 |
margin-left: -20px;
|
|
@@ -373,7 +373,7 @@ span#wpo_smush_delete_backup_done {
|
|
| 373 |
text-decoration: none;
|
| 374 |
}
|
| 375 |
|
| 376 |
-
.wpo-fieldgroup .button.toggle-
|
| 377 |
text-decoration: none;
|
| 378 |
font-size: 16px;
|
| 379 |
height: 16px;
|
|
@@ -382,35 +382,35 @@ span#wpo_smush_delete_backup_done {
|
|
| 382 |
transition: .2s all;
|
| 383 |
}
|
| 384 |
|
| 385 |
-
.wpo-fieldgroup .toggle-
|
| 386 |
background: #F2F4F4;
|
| 387 |
z-index: 1;
|
| 388 |
position: relative;
|
| 389 |
padding-right: 5px;
|
| 390 |
}
|
| 391 |
|
| 392 |
-
.wpo-fieldgroup .button.toggle-
|
| 393 |
-
.wpo-fieldgroup .button.toggle-
|
| 394 |
background: transparent;
|
| 395 |
}
|
| 396 |
|
| 397 |
-
.wpo-fieldgroup .button.toggle-
|
| 398 |
display: inline-block;
|
| 399 |
}
|
| 400 |
|
| 401 |
-
.wpo-fieldgroup .button.toggle-
|
| 402 |
display: none;
|
| 403 |
}
|
| 404 |
|
| 405 |
-
.wpo-fieldgroup .button.toggle-
|
| 406 |
display: none;
|
| 407 |
}
|
| 408 |
|
| 409 |
-
.wpo-fieldgroup .button.toggle-
|
| 410 |
display: inline-block;
|
| 411 |
}
|
| 412 |
|
| 413 |
-
.wpo-fieldgroup .button.toggle-
|
| 414 |
content: '';
|
| 415 |
border-top: 1px solid #CCC;
|
| 416 |
width: 100%;
|
|
@@ -419,15 +419,19 @@ span#wpo_smush_delete_backup_done {
|
|
| 419 |
left: 0;
|
| 420 |
}
|
| 421 |
|
| 422 |
-
.wpo-fieldgroup .button.toggle-
|
| 423 |
transform: rotate(180deg);
|
| 424 |
}
|
| 425 |
|
| 426 |
-
.wpo-fieldgroup .
|
| 427 |
display: none;
|
| 428 |
}
|
| 429 |
|
| 430 |
-
.wpo-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 431 |
display: block;
|
| 432 |
}
|
| 433 |
|
|
@@ -663,7 +667,7 @@ img#wpo_smush_images_clear_stats_spinner {
|
|
| 663 |
clear: both;
|
| 664 |
}
|
| 665 |
|
| 666 |
-
#smush-metabox-inside-wrapper .toggle-
|
| 667 |
cursor: pointer;
|
| 668 |
display: block;
|
| 669 |
clear: both;
|
|
@@ -671,11 +675,11 @@ img#wpo_smush_images_clear_stats_spinner {
|
|
| 671 |
margin-bottom: 10px;
|
| 672 |
}
|
| 673 |
|
| 674 |
-
#smush-metabox-inside-wrapper .toggle-
|
| 675 |
display: none;
|
| 676 |
}
|
| 677 |
|
| 678 |
-
#smush-metabox-inside-wrapper .toggle-
|
| 679 |
display: block !important;
|
| 680 |
}
|
| 681 |
|
| 356 |
font-size: 15px;
|
| 357 |
}
|
| 358 |
|
| 359 |
+
.wpo-fieldgroup .wpo-toggle-advanced-options {
|
| 360 |
cursor: pointer;
|
| 361 |
text-decoration: underline;
|
| 362 |
color: #0088BC;
|
| 363 |
}
|
| 364 |
|
| 365 |
+
.wpo-fieldgroup .button.wpo-toggle-advanced-options {
|
| 366 |
display: block;
|
| 367 |
width: calc(100% + 40px);
|
| 368 |
margin-left: -20px;
|
| 373 |
text-decoration: none;
|
| 374 |
}
|
| 375 |
|
| 376 |
+
.wpo-fieldgroup .button.wpo-toggle-advanced-options span.dashicons {
|
| 377 |
text-decoration: none;
|
| 378 |
font-size: 16px;
|
| 379 |
height: 16px;
|
| 382 |
transition: .2s all;
|
| 383 |
}
|
| 384 |
|
| 385 |
+
.wpo-fieldgroup .wpo-toggle-advanced-options span.text {
|
| 386 |
background: #F2F4F4;
|
| 387 |
z-index: 1;
|
| 388 |
position: relative;
|
| 389 |
padding-right: 5px;
|
| 390 |
}
|
| 391 |
|
| 392 |
+
.wpo-fieldgroup .button.wpo-toggle-advanced-options:hover,
|
| 393 |
+
.wpo-fieldgroup .button.wpo-toggle-advanced-options:focus {
|
| 394 |
background: transparent;
|
| 395 |
}
|
| 396 |
|
| 397 |
+
.wpo-fieldgroup .button.wpo-toggle-advanced-options .wpo-toggle-advanced-options__text-show {
|
| 398 |
display: inline-block;
|
| 399 |
}
|
| 400 |
|
| 401 |
+
.wpo-fieldgroup .button.wpo-toggle-advanced-options .wpo-toggle-advanced-options__text-hide {
|
| 402 |
display: none;
|
| 403 |
}
|
| 404 |
|
| 405 |
+
.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened .wpo-toggle-advanced-options__text-show {
|
| 406 |
display: none;
|
| 407 |
}
|
| 408 |
|
| 409 |
+
.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened .wpo-toggle-advanced-options__text-hide {
|
| 410 |
display: inline-block;
|
| 411 |
}
|
| 412 |
|
| 413 |
+
.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened::before {
|
| 414 |
content: '';
|
| 415 |
border-top: 1px solid #CCC;
|
| 416 |
width: 100%;
|
| 419 |
left: 0;
|
| 420 |
}
|
| 421 |
|
| 422 |
+
.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened span.dashicons {
|
| 423 |
transform: rotate(180deg);
|
| 424 |
}
|
| 425 |
|
| 426 |
+
.wpo-fieldgroup .wpo-advanced-options {
|
| 427 |
display: none;
|
| 428 |
}
|
| 429 |
|
| 430 |
+
.wpo-advanced-options > fieldset:first-child {
|
| 431 |
+
margin-top: 10px;
|
| 432 |
+
}
|
| 433 |
+
|
| 434 |
+
.wpo-fieldgroup .button.wpo-toggle-advanced-options.opened + .wpo-advanced-options {
|
| 435 |
display: block;
|
| 436 |
}
|
| 437 |
|
| 667 |
clear: both;
|
| 668 |
}
|
| 669 |
|
| 670 |
+
#smush-metabox-inside-wrapper .wpo-toggle-advanced-options {
|
| 671 |
cursor: pointer;
|
| 672 |
display: block;
|
| 673 |
clear: both;
|
| 675 |
margin-bottom: 10px;
|
| 676 |
}
|
| 677 |
|
| 678 |
+
#smush-metabox-inside-wrapper .wpo-toggle-advanced-options:not(.opened) ~ .wpo-advanced-options {
|
| 679 |
display: none;
|
| 680 |
}
|
| 681 |
|
| 682 |
+
#smush-metabox-inside-wrapper .wpo-toggle-advanced-options.opened ~ .wpo-advanced-options {
|
| 683 |
display: block !important;
|
| 684 |
}
|
| 685 |
|
css/wp-optimize-admin-3-0-16.min.css
DELETED
|
@@ -1,2 +0,0 @@
|
|
| 1 |
-
.wpo_hidden{display:none !important}.wpo_info{background:#FFF;color:#444;font-family:-apple-system,"BlinkMacSystemFont","Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif;margin:2em auto;padding:1em 2em;max-width:700px;box-shadow:0 1px 3px rgba(0,0,0,0.13)}#wp-optimize-wrap .widefat thead th,#wp-optimize-wrap .widefat thead td{border-bottom:1px solid #e1e1e1}#wp-optimize-wrap .widefat td,#wp-optimize-wrap .widefat th{padding:8px 10px}.wpo_primary_big{padding:4px 6px !important;font-size:22px !important;min-height:34px;min-width:200px}.wpo_section{clear:both;padding:0;margin:0}.wp-optimize-settings{margin-bottom:16px}.wp-optimize-settings td>label{font-weight:bold;display:block;margin-bottom:8px}.wpo_col{display:block;float:left;margin:1% 0 1% 1%}.wpo_col:first-child{margin-left:0}.wpo_group:before,.wpo_group:after{content:"";display:table}.wpo_group:after{clear:both}.wpo_half_width{width:48%}.wpo_span_3_of_3{width:100%}.wpo_span_2_of_3{width:65.3%}.wpo_span_1_of_3{width:32.1%}#wp-optimize-wrap .nav-tab-wrapper{margin:0}@media screen and (min-width:549px){.show_on_default_sizes{display:block !important}.show_on_mobile_sizes{display:none !important}}@media screen and (max-width:548px){.show_on_default_sizes{display:none !important}.show_on_mobile_sizes{display:block !important}}@media screen and (max-width:768px){.wpo_col{margin:1% 0}.wpo_span_3_of_3{width:100%}.wpo_span_2_of_3{width:100%}.wpo_span_1_of_3{width:100%}.wpo_half_width{width:100%}}.wp-optimize-setting-is-sensitive td>label::before{content:"\f534";font-family:'dashicons';display:inline-block;margin-right:6px;font-style:normal;line-height:1;vertical-align:middle;width:20px;font-size:18px;height:20px;text-align:center;color:#72777c}.wpo-run-optimizations__container{margin-bottom:15px}td.wp-optimize-settings-optimization-checkbox{width:18px;padding-left:4px;padding-right:0}.wp-optimize-settings-optimization-checkbox input{margin:0;padding:0}#retention-period{width:60px}.wp-optimize-settings-optimization-info{font-size:80%;font-style:italic}img.addons{display:block;margin-left:auto;margin-right:auto;margin-bottom:20px;max-height:44px;height:auto;max-width:100%}.wpo_spinner{width:18px;height:18px;padding-left:10px;display:none;position:relative;top:4px}.optimization_spinner{width:20px;height:20px}#wp-optimize-auto-options{margin:20px 0 0 28px}.display-none{display:none}.visibility-hidden{visibility:hidden}.margin-one-percent{margin:1%}#save_done,.save-done{color:#d94f00;font-size:220% !important}.wp-optimize-settings-optimization-info a{text-decoration:underline}.wp-optimize-settings-optimization-run-spinner{position:relative;top:2px}@media screen and (min-width:782px){td.wp-optimize-settings-optimization-run{width:180px;padding-top:16px}}#wpoptimize_table_list .tablesorter-filter-row{display:none !important}#wpoptimize_table_list .optimization_spinner{position:relative;top:2px;left:5px}#wpoptimize_table_list .optimization_spinner.visibility-hidden{display:none}#wpoptimize_table_list_filter{width:100%;margin-bottom:15px}#wpoptimize_table_list_tables_not_found{display:none;margin:20px 0}div#wpoptimize_table_list_tables_not_found+h3{margin-top:30px}#wpoptimize_table_list tr th:first-child,#wpoptimize_table_list tr td:first-child{display:none}#optimize_form .select2-container,#wp-optimize-auto-options .select2-container{width:50% !important;top:-5px;height:40px;margin-left:10px}#wpoptimize_table_list .optimization_done_icon{color:#009b24;font-size:200%;display:inline-block;position:relative}#wpo_sitelist_show_moreoptions_cron{font-size:13px;line-height:1.5;letter-spacing:1px}#wp-optimize-nav-tab-contents-images .wpo_span_2_of_3 h3{display:inline-block}.wpo_remove_selected_sizes_btn__container{margin-top:20px}.unused-image-sizes__label{display:block;line-height:1.6}@media(max-width:782px){.unused-image-sizes__label{margin-left:30px;margin-bottom:15px;line-height:1;word-break:break-word}.unused-image-sizes__label input[type=checkbox]{margin-left:-30px}body.rtl .unused-image-sizes__label{margin-right:30px;margin-left:0}body.rtl .unused-image-sizes__label input[type=checkbox]{margin-left:4px;margin-right:-30px}}#wp-optimize-nav-tab-contents-tables a{vertical-align:middle}#wpo_sitelist_moreoptions,#wpo_sitelist_moreoptions_cron{margin:4px 16px 6px 0;border:1px dotted;padding:6px 10px;max-height:300px;overflow-y:scroll;overflow-x:hidden}#wpo_sitelist_moreoptions{max-height:150px;margin-right:0}#wpo_settings_sites_list li,#wpo_settings_sites_list li a{font-size:13px;line-height:1.5}#wpo_sitelist_moreoptions_cron li{padding-left:20px}#wpo_import_error_message{display:none;color:#9b0000}#wpo_import_success_message{display:none;color:#46b450}#wp-optimize-logging-options{margin-top:10px}.wpo_logging_header{font-weight:bold;border-top:1px solid #333;border-bottom:1px solid #333;padding:5px 0;margin:0}.wpo_logging_row{border-bottom:1px solid #a1a2a3;padding:5px 0}.wpo_logging_logger_title,.wpo_logging_options_title,.wpo_logging_status_title,.wpo_logging_actions_title,.wpo_logging_logger_row,.wpo_logging_options_row,.wpo_logging_status_row,.wpo_logging_actions_row{display:inline-block;vertical-align:middle}.wpo_logging_logger_title,.wpo_logging_logger_row{width:38%}.wpo_logging_options_title,.wpo_logging_options_row{width:44%}.wpo_logging_status_title,.wpo_logging_status_row{width:8%}.wpo_logging_actions_title,.wpo_logging_actions_row{width:7%}.wpo_logging_actions_row{text-align:right}.wpo_logging_options_row{word-wrap:break-word}.wpo_logging_actions_row .dashicons-no-alt,.wpo_add_logger_form .dashicons-no-alt{background-color:#f06666;color:#FFF;width:20px;height:20px;border-radius:20px;display:inline-block;cursor:pointer;margin-left:5px}.wpo_add_logger_form .dashicons-no-alt{margin-top:12px;margin-right:10px;float:right}.wpo_logger_type{width:90%;margin-top:10px}.wpo_logger_addition_option{width:100%;margin-top:5px}.wpo_alert_notice{background-color:#f06666;color:#FFF;padding:5px;display:block;margin-bottom:5px;border-radius:5px}.wpo_error_field{border-color:#f06666 !important}.save_settings_reminder{display:none;color:#333;padding:15px 20px;background-color:#f0a5a4;border-radius:3px;margin:15px 0}#wpo_remove_selected_sizes{margin-top:20px}.wpo_unused_images_buttons_wrap{float:right;margin-right:20px}.wpo_unused_images_container h3{min-width:150px}#wpo_unused_images,#wpo_smush_images_grid{max-height:500px;overflow-y:auto}#wpo_unused_images a{outline:0}#wp-optimize-nav-tab-wpo_database-tables-contents .wpo-take-a-backup{margin-left:1%}.run-single-table-delete{margin-top:3px}#wpo_browser_cache_output,#wpo_gzip_compression_output,#wpo_advanced_cache_output{background:#f0f0f0;padding:10px;border:1px solid #CCC;white-space:pre-wrap}#wpo_gzip_compression_error_message,.wpo-error{color:#9b0000}.notice.wpo-error__enabling-cache{white-space:pre;margin-bottom:15px}a.loading.wpo-refresh-gzip-status{color:rgba(68,68,68,0.5);text-decoration:none}a.loading.wpo-refresh-gzip-status img.wpo_spinner.display-none{display:inline-block}#wpo_browser_cache_expire_days,#wpo_browser_cache_expire_hours{width:50px}.wpo-enabled .wpo-disabled{display:none}.wpo-disabled .wpo-enabled{display:none}.wpo-button-wrap{margin-top:10px}body[class*="toplevel_page_WP-Optimize"] #wpbody,body[class*="wp-optimize_page_"] #wpbody{padding-right:15px}@media screen and (max-width:768px){body[class*="toplevel_page_WP-Optimize"] #wpbody,body[class*="wp-optimize_page_"] #wpbody{padding-right:0}}body.toplevel_page_WP-Optimize.rtl #wpbody{padding-left:15px;padding-right:0}@media screen and (max-width:768px){body.toplevel_page_WP-Optimize.rtl #wpbody{padding-left:10px}}body[class*="toplevel_page_WP-Optimize"] #wpbody-content,body[class*="wp-optimize_page_"] #wpbody-content{padding-top:80px}@media(max-width:600px){body[class*="toplevel_page_WP-Optimize"] #wpbody-content,body[class*="wp-optimize_page_"] #wpbody-content{padding-top:0}}@media(min-width:820px){body[class*="toplevel_page_WP-Optimize"] #wpbody-content,body[class*="wp-optimize_page_"] #wpbody-content{padding-top:100px}}#wp-optimize-wrap{position:relative;padding-top:20px}@media(max-width:600px){#wp-optimize-wrap{padding-top:110px}}@media(max-width:782px){#wp-optimize-wrap{margin-right:0}}.wpo-main-header{height:77px;position:fixed;top:32px;left:160px;background:#FFF;right:0;z-index:9980}@media(min-width:820px){.wpo-main-header{height:105px}}.wpo-main-header .wpo-logo__container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;position:relative;height:100%;line-height:1;font-size:1rem;padding-left:50px;margin-left:10px}.wpo-main-header .wpo-logo{position:absolute;left:0;top:50%;transform:translateY(-50%);width:50px}.wpo-main-header .wpo-subheader{margin:0;font-weight:300;color:#72777c;line-height:1.3}@media(max-width:1080px){.wpo-main-header .wpo-subheader{display:none}}.wpo-main-header p.wpo-header-links{margin:0;font-size:.7rem;position:absolute;right:0;padding:6px 15px;background:#edeeef;border-bottom-left-radius:5px;z-index:1}.wpo-main-header p.wpo-header-links a{text-decoration:none}.wpo-main-header p.wpo-header-links .wpo-header-links__label{color:#82868b;position:absolute;right:100%;width:110px;text-align:right;padding-right:10px}@media(max-width:820px){.wpo-main-header p.wpo-header-links{display:none}}.wpo-main-header p.wpo-header-links__mobile{padding:10px;background:#edeeef;margin-bottom:0}@media(min-width:820px){.wpo-main-header p.wpo-header-links__mobile{display:none}}.wpo-main-header p.wpo-header-links__mobile a{display:inline-block;padding:4px;font-size:.8rem}.wpo-main-header p.wpo-header-links__mobile .wpo-header-links__label{color:#82868b}@media(max-width:600px){.wpo-main-header .wpo-logo__container strong{width:140px;display:inline-block}}@media(max-width:960px){body.auto-fold .wpo-main-header{left:36px}}@media(max-width:782px){body.auto-fold .wpo-main-header{left:0;top:46px}}@media(max-width:600px){body.auto-fold .wpo-main-header{position:absolute;left:-10px;right:-10px;top:10px}}@media(max-width:600px){body.auto-fold #screen-meta+#wp-optimize-wrap .wpo-main-header{top:0}}@media(min-width:782px){body.folded .wpo-main-header{left:36px}}body.is-scrolled .wpo-main-header{box-shadow:0 5px 25px rgba(0,0,0,0.17)}body.rtl .wpo-main-header{right:160px;left:0}body.rtl .wpo-main-header .wpo-logo__container{padding-left:10px;padding-right:50px;margin-left:0;margin-right:10px}body.rtl .wpo-main-header .wpo-logo{position:absolute;left:auto;right:0}body.rtl .wpo-main-header p.wpo-header-links{right:auto;left:0;border-bottom-right-radius:5px;border-bottom-left-radius:0}body.rtl .wpo-main-header p.wpo-header-links .wpo-header-links__label{position:absolute;left:100%;right:auto;width:110px;text-align:left;padding-left:10px}@media(max-width:960px){body.rtl.auto-fold .wpo-main-header{right:36px}}@media(max-width:782px){body.rtl.auto-fold .wpo-main-header{right:0;top:46px}}@media(max-width:600px){body.rtl.auto-fold .wpo-main-header{position:absolute;left:-10px;right:-10px;top:10px}}@media(min-width:782px){body.rtl.folded .wpo-main-header{right:36px;left:0}}body.rtl .wpo-page{padding-right:0}@media(min-width:769px){}.wpo-page:not(.active){display:none}.wpo-introduction-notice{padding:15px 20px;margin-top:30px;margin-bottom:30px;background:#FFF url('../images/notices/logo-bg-notice.png') no-repeat 100% 100%}.wpo-introduction-notice h3{font-size:2em}.wpo-introduction-notice p:not(.font-size__normal){font-size:1.2em}.wpo-introduction-notice .wpo-introduction-notice__footer-links{padding-top:20px}.wpo-introduction-notice .wpo-introduction-notice__footer-links>a,.wpo-introduction-notice .wpo-introduction-notice__footer-links>span{display:inline-block;margin-left:5px;margin-right:5px}@media(min-width:1200px){.wpo-tab-postbox.right-col{width:350px;float:right;box-sizing:border-box;margin-top:3.1rem}.right-col+.wpo-main{float:left;box-sizing:border-box;width:calc(100% - 380px)}}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@media(max-width:782px){#wp-optimize-wrap .button-large{display:block;width:100%}}#wp-optimize-wrap .red{color:#e07575}#wp-optimize-wrap div[id*="_notice"] div.updated,#wp-optimize-wrap>.notice{margin-left:0;margin-right:0}.notice.notice-warning.wpo-warning{margin-bottom:18px}.notice.notice-warning.wpo-warning p{padding-left:36px;position:relative}.notice.notice-warning.wpo-warning p>.dashicons{position:absolute;left:0;font-size:26px;top:50%;transform:translateY(-50%);height:26px;color:#ffb900}.button.button-block{display:block;width:100%;text-align:center}.wpo-refresh-button{float:right}.wpo-refresh-button:hover{cursor:pointer}.wpo-refresh-button .dashicons{text-decoration:none;line-height:inherit;font-size:inherit}*[class*="wpo-badge"]{display:inline-block;font-size:.8em;text-transform:uppercase;background:#f2f4f5;padding:3px 5px;line-height:1;border-radius:3px}.wpo-badge__new{background:#dbe3e6;color:#00689a}.wpo-first-child{margin-top:0}#save_done,.save-done{color:#009b24;font-size:250%}p.wpo-take-a-backup{display:inline-block;margin:0;line-height:1;padding-top:8px}@media(min-width:782px){p.wpo-take-a-backup{margin-left:20px}}#wp-optimize-wrap .nav-tab-wrapper ~ .wp-optimize-nav-tab-contents>.postbox{border:0}#wp-optimize-wrap .nav-tab-wrapper ~ .wp-optimize-nav-tab-contents>.postbox>h3:first-child{margin-top:0}.wpo-p25,.postbox.wpo-tab-postbox{padding:25px}.wpo-tab-postbox>h3:first-child{margin-top:0}.wpo-fieldgroup{background:#f2f4f5;border-radius:8px;padding:20px}.wpo-fieldgroup:not(:last-child){margin-bottom:2em}.wpo-fieldgroup>*:first-child{margin-top:0}.wpo-fieldgroup>*:last-child{margin-bottom:0}.wpo-fieldgroup.premium-only{position:relative}.wpo-fieldgroup .switch+label{font-weight:600}.wpo-fieldgroup code{font-size:inherit;background:#d8dbdc;border-radius:3px}.wpo-fieldgroup__subgroup:not(:last-of-type){margin-bottom:20px}#wp-optimize-wrap .switch{position:relative;display:inline-block;width:38px;height:18px;margin-right:6px;box-sizing:border-box}#wp-optimize-wrap .switch input{opacity:0;width:0;height:0}#wp-optimize-wrap .switch .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#f2f4f5;transition:.2s}#wp-optimize-wrap .switch .slider::before{position:absolute;content:"";height:8px;width:8px;left:2px;bottom:2px;background-color:#555d66;border:1px solid #555d66;transition:all .2s}#wp-optimize-wrap .switch .slider::after{content:'';display:block;position:absolute;height:4px;width:3px;right:4px;top:4px;border-radius:50%;border:1px solid #72777c;box-sizing:content-box}#wp-optimize-wrap .switch .slider.round{border-radius:23px;border:2px solid #555d66}#wp-optimize-wrap .switch .slider.round::before{border-radius:50%}#wp-optimize-wrap .switch input:checked+.slider{background:#0272aa;border-color:#0272aa}#wp-optimize-wrap .switch input:checked+.slider::before{background:#FFF;border-color:#FFF;transform:translateX(20px)}#wp-optimize-wrap .switch input:checked+.slider::after{content:'';display:block;position:absolute;height:6px;width:2px;left:7px;top:4px;background:#FFF;border:0}#wp-optimize-wrap .switch input:focus+.slider{box-shadow:0 0 0 2px #f2f4f5,0 0 0 3px #555d66}#wp-optimize-wrap .switch-container{display:block;clear:both}#wp-optimize-wrap .switch-container label{line-height:1;vertical-align:middle}#wp-optimize-wrap .switch-container+small{margin-left:49px}#wp-optimize-wrap .wpo-fieldgroup>.switch-container:first-child{padding-top:0}.wpo-info{position:relative;display:inline-block}@media(max-width:480px){.wpo-info{display:block}}.wpo-info__content{opacity:0;visibility:hidden;position:absolute;top:100%;left:-25px;background:#FFF;padding:20px;width:380px;max-width:380px;z-index:5;box-shadow:0 11px 25px 0 rgba(0,0,0,0),0 11px 25px 3000px rgba(0,0,0,0);transition:.2s all}@media(max-width:480px){.wpo-info__content{width:auto}}span.wpo-info__close{display:none;margin-left:20px;color:#444}.wpo-info.opened span.wpo-info__close{display:inline-block}.wpo-info.opened .wpo-info__content{opacity:1;visibility:visible;box-shadow:0 11px 25px 0 rgba(0,0,0,0.3),0 11px 25px 3000px rgba(0,0,0,0.3)}.wpo-info.opened a.wpo-info__trigger{z-index:6}.wpo-info__content img,.wpo-info__content iframe{max-width:100%}a.wpo-info__trigger{display:inline-block;text-decoration:none;padding:10px;position:relative;background:#FFF;margin-left:-10px}a.wpo-info__trigger span.dashicons{text-decoration:none;vertical-align:middle}.wpo-rotate{animation:rotate 1s linear infinite;transform-origin:50% 50%}#wp-optimize-wrap h2.nav-tab-wrapper{margin-bottom:0;border-bottom:0;position:relative}#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:hover,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:focus,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:focus:active{border:0;background:transparent;margin:0;border-top:3px solid transparent;padding:7px 15px;color:#0272aa}#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:hover .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:focus .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:focus:active .dashicons{display:block;margin:0 auto;color:#72777c;font-size:30px;width:30px;height:30px}#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab span.premium-only,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:hover span.premium-only,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:focus span.premium-only,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:focus:active span.premium-only{display:inline-block;margin-left:6px;padding:4px;font-size:10px;background:#0272aa;line-height:1;border-radius:3px;color:#FFF;font-weight:300;text-transform:uppercase;letter-spacing:.06em}#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active:hover,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active:focus,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active:focus:active{background:#FFF;box-shadow:0 0 1px rgba(0,0,0,0.04);border-top-color:#0272aa}#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active:hover .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active:focus .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active:focus:active .dashicons{color:#0272aa}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback{display:block;float:right;position:relative}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab,#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab:hover,#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab:focus,#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab:focus:active{position:relative}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab:hover .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab:focus .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab:focus:active .dashicons{display:inline-block;font-size:20px;height:18px;transform:translateY(4px)}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>div{display:none}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback:hover a.nav-tab::after{content:'';display:block;position:absolute;bottom:0;right:0;height:2px;width:100%;background-color:#0172aa}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback:hover>div{position:absolute;display:block;background:#FFF;padding:15px;right:0;top:100%;z-index:4;box-shadow:0 11px 25px 0 rgba(0,0,0,0.1);width:350px}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback:hover>div a{display:block;font-size:14px;font-weight:normal;padding:6px 3px;text-align:center}@media(max-width:782px){#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback{display:none}#wp-optimize-wrap h2.nav-tab-wrapper a:not(.nav-tab-active){display:none}}#wp-optimize-wrap h2.nav-tab-wrapper a[role="toggle-menu"]{display:block;float:right}@media(min-width:782px){#wp-optimize-wrap h2.nav-tab-wrapper a[role="toggle-menu"]{display:none}}#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back,#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active{text-align:right}#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active .dashicons{color:#b5b9be;font-size:18px;display:inline-block;height:auto;line-height:inherit;width:20px}@media(min-width:782px){#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back,#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active{position:absolute;bottom:14px;right:0;font-size:12px;font-weight:400;text-decoration:none;padding:0}#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active .dashicons{color:#b5b9be;font-size:18px;display:inline-block;height:auto;line-height:inherit;width:20px}}@media(max-width:782px){.wpo-mobile-menu-opened .wpo-main .wpo-tab-postbox{// display:none}.wpo-mobile-menu-opened h2.nav-tab-wrapper a{display:block;float:none}.wpo-mobile-menu-opened h2.nav-tab-wrapper a.nav-tab{display:block !important}.wpo-mobile-menu-opened h2.nav-tab-wrapper a:not(.nav-tab-active){background:#f9f9f9 !important}.wpo-mobile-menu-opened h2.nav-tab-wrapper a.nav-tab-active,.wpo-mobile-menu-opened h2.nav-tab-wrapper a.nav-tab-active:focus{border-top:0;border-left:3px solid}.wpo-mobile-menu-opened h2.nav-tab-wrapper a.nav-tab-active .dashicons,.wpo-mobile-menu-opened h2.nav-tab-wrapper a.nav-tab-active:focus .dashicons,.wpo-mobile-menu-opened h2.nav-tab-wrapper a:focus .dashicons,.wpo-mobile-menu-opened h2.nav-tab-wrapper a:hover .dashicons,.wpo-mobile-menu-opened h2.nav-tab-wrapper a .dashicons{display:inline-block;line-height:inherit}.wpo-mobile-menu-opened h2.nav-tab-wrapper a[role="toggle-menu"]{display:none}}.wpo-pages-menu{position:absolute;bottom:0;right:0;display:none}@media(max-width:820px){.opened+.wpo-pages-menu{display:block;box-shadow:0 5px 25px rgba(0,0,0,0.17)}}@media(min-width:821px){.wpo-pages-menu{display:-ms-flexbox;display:flex;height:77px}}.wpo-pages-menu>a{text-decoration:none;position:relative;color:inherit;text-align:center;box-sizing:border-box;display:block;color:#555d66}@media(min-width:821px){.wpo-pages-menu>a{padding:0 8px;height:77px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center}.wpo-pages-menu>a>span{display:block;margin:0 auto}}@media(max-width:820px){.wpo-pages-menu>a{padding:15px;font-size:1.2em}}.wpo-pages-menu>a.active::after{content:'';display:block;position:absolute;bottom:0;left:0;width:100%;height:3px;background:#e46b1f;color:#191e23}@media(max-width:820px){.wpo-pages-menu>a.active::after{width:3px;height:100%}}@media(max-width:820px){.wpo-pages-menu>a.active{color:#e46b1f}}.wpo-pages-menu>a:hover{background:#f9f9f9;color:#191e23}.wpo-pages-menu span.separator{display:block;width:2px;background:#efefef;margin-top:18px;margin-bottom:18px;margin-right:5px;margin-left:5px}@media(max-width:820px){.wpo-pages-menu span.separator{width:80%;height:2px;margin:10px 10%}}@media(max-width:820px){.wpo-pages-menu{text-align:center;top:100%;width:100%;bottom:auto;background:#FFF}}body.rtl .wpo-pages-menu{left:0;right:auto}#wp-optimize-nav-page-menu{position:absolute;right:0;bottom:0;display:-ms-flexbox;display:flex;height:77px;-ms-flex-direction:column;flex-direction:column;padding:0 20px;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;text-decoration:none}#wp-optimize-nav-page-menu:not(.opened) .dashicons-no-alt{display:none}#wp-optimize-nav-page-menu.opened .dashicons-menu{display:none}@media(min-width:821px){#wp-optimize-nav-page-menu{display:none}}body.rtl #wp-optimize-nav-page-menu{right:auto;left:0}.wpo-dashboard-pages-menu{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.wpo-dashboard-pages-menu[data-itemscount="1"] .wpo-dashboard-pages-menu__item,.wpo-dashboard-pages-menu[data-itemscount="2"] .wpo-dashboard-pages-menu__item,.wpo-dashboard-pages-menu[data-itemscount="3"] .wpo-dashboard-pages-menu__item{width:calc(33.333% - 13.33333px)}.wpo-dashboard-pages-menu[data-itemscount="4"] .wpo-dashboard-pages-menu__item{width:calc(25% - 15px)}.wpo-dashboard-pages-menu[data-itemscount="5"] .wpo-dashboard-pages-menu__item{width:calc(20% - 16px)}.wpo-dashboard-pages-menu[data-itemscount="6"] .wpo-dashboard-pages-menu__item{width:calc(16.66667% - 16.66667px)}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item{padding:20px;margin-right:20px;box-sizing:border-box;padding-bottom:60px;min-width:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item:last-child{margin-right:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item h3{margin-top:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item h3 .dashicons{color:#72777c;line-height:1;height:18px;margin-top:-2px;margin-right:10px}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item a{position:absolute;bottom:20px;left:20px;width:calc(100% - 40px) !important}@media(max-width:782px){.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item{width:100%;margin-right:0;padding-bottom:20px}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item a.button.button-large{width:auto !important;left:auto;bottom:auto;top:50%;transform:translateY(-50%);right:20px}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item h3{margin:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item p{display:none}}#wpadminbar .quicklinks .menupop.hover ul li.separator .ab-item.ab-empty-item{height:2px;line-height:2px;background:rgba(255,255,255,0.0902);margin:5px 10px;width:auto;min-width:0}.wpo_unused_image,.wpo_smush_image{position:relative;margin:4px;width:calc(50% - 8px);text-align:center}@media(min-width:500px){.wpo_unused_image,.wpo_smush_image{width:calc(25% - 8px)}}@media(min-width:782px){.wpo_unused_image,.wpo_smush_image{width:calc(16.6666% - 8px)}}@media(min-width:1100px){.wpo_unused_image,.wpo_smush_image{width:calc(12.5% - 8px)}}.wpo_unused_image .wpo_unused_image__input,.wpo_smush_image .wpo_unused_image__input{position:absolute;top:10px;opacity:0;width:0;height:0}.wpo_unused_image label,.wpo_smush_image label{display:block;width:100%;position:relative;padding:1px;border:3px solid #f2f4f5;box-sizing:border-box}.wpo_unused_image label::before,.wpo_smush_image label::before{content:"";display:block;padding-top:100%}.wpo_unused_image label .thumbnail,.wpo_smush_image label .thumbnail{position:absolute;top:1px;left:1px;width:calc(100% - 2px);height:calc(100% - 2px);background-repeat:no-repeat;background-size:cover;background-position:50% 50%;overflow:hidden;background:rgba(220,220,220,0.2)}.wpo_unused_image label .thumbnail img,.wpo_smush_image label .thumbnail img{display:block;margin:0;max-height:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.wpo_unused_image label span.dashicons,.wpo_smush_image label span.dashicons{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:25px;width:25px;opacity:.2}.wpo_unused_image .wpo_unused_image__input:checked+label,.wpo_unused_image.selected label,.wpo_smush_image .wpo_unused_image__input:checked+label,.wpo_smush_image.selected label{border-color:#0272aa}.wpo_unused_image:focus-within label,.wpo_smush_image:focus-within label{box-shadow:0 0 4px #0272aa}.wpo_unused_image a,.wpo_unused_image a.button,.wpo_unused_image a.button:active,.wpo_smush_image a,.wpo_smush_image a.button,.wpo_smush_image a.button:active{position:absolute;z-index:2;bottom:13px;left:50%;transform:translateX(-50%);display:none}.wpo_unused_image:hover a,.wpo_unused_image:hover a.button,.wpo_unused_image:hover a.button:active,.wpo_smush_image:hover a,.wpo_smush_image:hover a.button,.wpo_smush_image:hover a.button:active{display:inline-block}#wpo_unused_images,#wpo_unused_images_trash,#wpo_smush_images_grid{width:calc(100% + 8px);margin-left:-4px;margin-right:-4px;max-height:500px;overflow-y:auto;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;position:relative}#wpo_unused_images .wpo-fieldgroup,#wpo_unused_images_trash .wpo-fieldgroup,#wpo_smush_images_grid .wpo-fieldgroup{width:100%;margin:4px}#wpo_unused_images a,#wpo_unused_images_trash a{outline:0}.wpo-unused-images__premium-mask,.wpo-unused-image-sizes__premium-mask{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;background:linear-gradient(to bottom,rgba(255,255,255,0),rgba(255,255,255,0.85));display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.wpo-unused-image-sizes__premium-mask{background:linear-gradient(to bottom,rgba(255,255,255,0.3),rgba(255,255,255,0.85))}a.wpo-unused-images__premium-link{background:#FFF;display:inline-block;padding:10px;border-radius:3px;box-shadow:0 2px 8px rgba(0,0,0,0.3)}p.wpo-plugin-installed{color:#009b24}.wpo-repeater__add{display:inline-block;cursor:pointer;font-weight:bold;text-decoration:none}.wpo-plugin-family__premium h2{margin:0;padding:25px}.wpo-plugin-family__plugins{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:1px;padding-bottom:1px}.wpo-plugin-family__plugin{-ms-flex:auto;flex:auto;width:100%;padding:30px;box-sizing:border-box;border:1px solid #e3e4e7;margin-left:-1px;margin-bottom:-1px}@media(min-width:782px){.wpo-plugin-family__plugin{width:50%}.wpo-plugin-family__free .wpo-plugin-family__plugin{width:100%}}@media(max-width:1080px){.wpo-plugin-family__free .wpo-plugin-family__plugin{width:50%}}@media(max-width:782px){.wpo-plugin-family__free .wpo-plugin-family__plugin{width:100%}}div#wp-optimize-nav-tab-wpo_mayalso-may_also-contents .wpo-tab-postbox{padding:0}.wpo_feature_cont{width:64.5%}.wpo_plugin_family_cont{width:34.5%}@media(max-width:1080px){.wpo_feature_cont,.wpo_plugin_family_cont{width:100%;float:none;margin:0}}.wpo_feature_cont header,.wpo_plugin_family_cont header{padding:20px}@media(max-width:1080px){.wpo_feature_cont header,.wpo_plugin_family_cont header{padding:40px}}.wpo_feature_cont header h2,.wpo_plugin_family_cont header h2{margin:0}.wpo_feature_cont header p,.wpo_plugin_family_cont header p{margin-bottom:0}.wpo_feat_table,.wpo_feat_th,.wpo_feat_table td{border:0;border-collapse:collapse;background-color:white;font-size:120%;text-align:center}.wpo_feat_table td{border:1px solid #f1f1f1;border-bottom-width:4px;padding:15px}.wpo_feat_table td:nth-child(2),.wpo_feat_table td:nth-child(3){background:rgba(241,241,241,0.38)}.wpo_feat_table p{padding:0 10px;margin:5px 0;font-size:13px}.wpo_feat_table h4{margin:5px 0}.wpo_feat_table .dashicons{width:25px;height:25px;font-size:25px;line-height:1}.wpo_feat_table .dashicons-yes,.wpo_feat_table .updraft-yes{color:green}.wpo_feat_table .dashicons-no-alt,.wpo_feat_table .updraft-no{color:red}.wpo_feat_table tr.wpo-main-feature-row td{background:#f1f1f1;border-bottom-color:#fafafa}.wpo_feat_table tr.wpo-main-feature-row td img.wpo-premium-image{width:64px}.wpo-premium-image{display:none}@media screen and (min-width:720px){#wpoptimize_table_list_filter{width:40%}.wpo-premium-image{display:block;float:left;padding:16px 18px;width:30px;height:auto}}@media screen and (min-width:1220px){.wpo_feat_table td:nth-child(2),.wpo_feat_table td:nth-child(3){width:110px}}.other-plugin-title{text-decoration:none}@media screen and (max-width:782px){table.wpo_feat_table{display:block}table.wpo_feat_table tr{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}table.wpo_feat_table td{display:block}table.wpo_feat_table td:first-child{width:100%;border-bottom:0}table.wpo_feat_table td:not(:first-child){width:50%;box-sizing:border-box}table.wpo_feat_table td:first-child:empty{display:none}table.wpo_feat_table td[data-colname]::before{content:attr(data-colname);font-size:.8rem;color:#CCC;line-height:1}}.wpo-cache-feature-image{width:40px;padding:16px 14px}#wp-optimize-wrap .wp-list-table td{word-break:break-all}@media screen and (max-width:782px){#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody tr,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody th,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td{display:block}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td{padding:3px 8px 3px 35%;word-break:break-word;box-sizing:border-box}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td::before{color:#b5b9be}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead tr{display:block}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead th.column-primary{display:block;box-sizing:border-box}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead th:not(.column-primary){display:none !important}}body.rtl #wp-optimize-wrap .wpo-table-list-filter{text-align:left}@media screen and (max-width:782px){body.rtl #wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td{padding:3px 35% 3px 8px}}.tablesorter-headerRow th{vertical-align:top}th:not(.sorter-false) .tablesorter-header-inner{color:#0074ab}th:not(.sorter-false) .tablesorter-header-inner::after{content:'';font-family:'dashicons';font-size:20px;line-height:20px;height:20px;width:20px;display:none;vertical-align:bottom}th.tablesorter-header.tablesorter-headerAsc,th.tablesorter-header.tablesorter-headerDesc{font-weight:500;border-bottom-color:#0272aa}th.tablesorter-header.tablesorter-headerAsc .tablesorter-header-inner::after,th.tablesorter-header.tablesorter-headerDesc .tablesorter-header-inner::after{display:inline-block}th.tablesorter-header.tablesorter-headerDesc .tablesorter-header-inner::after{content:"\f140"}th.tablesorter-header.tablesorter-headerAsc .tablesorter-header-inner::after{content:"\f142"}th.tablesorter-header:focus{outline:0;box-shadow:0 0 3px rgba(0,116,171,0.78)}th.tablesorter-header:focus:not(.tablesorter-headerAsc):not(.tablesorter-headerDesc) .tablesorter-header-inner::after{content:"\f142";opacity:.5}.tablesorter.hasFilters tr.filtered{display:none}.wpo-text__dim .dashicons-info{margin-top:2px;margin-right:5px;border-radius:30px;background:#fff;color:#e07575}#wp-optimize-nav-tab-wpo_cache-advanced-contents textarea{width:100%;border-radius:5px;height:100px;min-height:100px;margin-top:10px;margin-bottom:10px}#page_cache_length_value{height:28px;position:relative;top:2px}#wp_optimize_preload_cache_status{margin-left:10px;display:inline-block;color:#82868b;font-size:smaller}.align-left{margin:10px 10px 0 0;float:left}textarea.cache-settings{display:block;clear:both;min-height:225px;overflow:scroll;min-width:75%;margin:10px 0}#wp-optimize-purge-cache,#wp-optimize-purge-cache ~ span,#wp-optimize-purge-cache ~ img{vertical-align:middle;top:auto}#wp-optimize-nav-tab-wpo_cache-cache-contents .wpo-error{font-size:12px}#wpo_browser_cache_error_message{padding-top:10px;padding-bottom:10px;margin-left:0;margin-bottom:10px}#wpo_browser_cache_error_message:empty{display:none}#wp-optimize-nav-tab-wpo_cache-advanced-contents label,#wp-optimize-nav-tab-wpo_cache-preload-contents label,#wp-optimize-nav-tab-wpo_cache-cache-contents label{font-weight:600}.wpo-gzip-already-enabled span.dashicons.dashicons-yes,.wpo-enabled>span.dashicons.dashicons-yes{font-size:40px;width:40px;height:40px;line-height:40px;vertical-align:middle;color:green}
|
| 2 |
-
/*# sourceMappingURL=wp-optimize-admin-3-0-16.min.css.map */
|
|
|
|
|
|
css/wp-optimize-admin-3-0-16.min.css.map
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
{"version":3,"sources":["css/wp-optimize-admin.scss","css/admin.css","css/scss/_layout.scss","css/scss/_common.scss","css/scss/_menu-and-tabs.scss","css/scss/_image-list.scss","css/scss/_plugin-family-tab.scss","css/scss/_table-sorter.scss","css/scss/_cache.scss"],"names":[],"mappings":"AAAA,YAAY;;AAcZ,gBAAgB;;ACdhB;CACC,yBAAyB;CACzB;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,2IAA2I;CAC3I,iBAAiB;CACjB,iBAAiB;CACjB,iBAAiB;CAEjB,uCAAuC;CACvC;;AAED;CACC,iCAAiC;CACjC;;AAED;CACC,kBAAkB;CAClB;;AAED,gBAAgB;;AAChB;CACC,4BAA4B;CAC5B,2BAA2B;CAC3B,iBAAiB;CACjB,iBAAiB;CACjB;;AAED,gBAAgB;;AAChB;CACC,YAAY;CACZ,WAAW;CACX,UAAU;CACV;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,kBAAkB;CAClB,eAAe;CACf,mBAAmB;CACnB;;AAED,oBAAoB;;AACpB;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,eAAe;CACf;;AAED,gBAAgB;;AAChB;;CAEC,YAAY;CACZ,eAAe;CACf;;AAED;CACC,YAAY;CACZ;;AAED;CACC,WAAW;CACX;;AAED,qBAAqB;;AACrB;CACC,YAAY;CACZ;;AAED;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;CACC,UAAU;CACV;;AAED;;CAEC;EACC,0BAA0B;EAC1B;;CAED;EACC,yBAAyB;EACzB;;CAED;;AAED;;CAEC;EACC,yBAAyB;EACzB;;CAED;EACC,0BAA0B;EAC1B;;CAED;;AAED;;CAEC;EACC,aAAa;EACb;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;;AAED,qRAAqR;;AAErR;CACC,iBAAiB;CACjB,yBAAyB;CACzB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CACnB,eAAe;CACf,uBAAuB;CACvB,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;CACC,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED,sCAAsC;;AACtC;CACC,eAAe;CACf,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,iBAAiB;CACjB,aAAa;CACb,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,cAAc;CACd,mBAAmB;CACnB,SAAS;CACT;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,cAAc;CACd;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,WAAW;CACX;;AAED;CACC,eAAe;CACf,2BAA2B;CAC3B;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,mBAAmB;CACnB,SAAS;CACT;;AAED;;CAEC;EACC,aAAa;EACb,kBAAkB;EAClB;;CAED;;AAED;CACC,yBAAyB;CACzB;;AAED;CACC,mBAAmB;CACnB,SAAS;CACT,UAAU;CACV;;AAED;CACC,cAAc;CACd;;AAED;CACC,YAAY;CACZ,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED,uBAAuB;;AACvB;;CAEC,cAAc;CACd;;AAED;;CAEC,sBAAsB;CACtB,UAAU;CACV,aAAa;CACb,kBAAkB;CAClB;;AAED;CACC,eAAe;CACf,gBAAgB;CAChB,sBAAsB;CACtB,mBAAmB;CACnB;;AAED;CACC,gBAAgB;CAChB,iBAAiB;CACjB,oBAAoB;CACpB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,iBAAiB;CACjB;;AAED;;CAEC;EACC,kBAAkB;EAClB,oBAAoB;EACpB,eAAe;EACf,uBAAuB;EACvB;;CAED;EACC,mBAAmB;EACnB;;CAED;EACC,mBAAmB;EACnB,eAAe;EACf;;CAED;EACC,iBAAiB;EACjB,oBAAoB;EACpB;;CAED;;AAED;CACC,uBAAuB;CACvB;;AAED;;CAEC,uBAAuB;CACvB,mBAAmB;CACnB,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB,gBAAgB;CAChB;;AAED;;CAEC,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED,oBAAoB;;AACpB;CACC,kBAAkB;CAClB,2BAA2B;CAC3B,8BAA8B;CAC9B,eAAe;CACf,UAAU;CACV;;AAED;CACC,iCAAiC;CACjC,eAAe;CACf;;AAED;;;;;;;;CAQC,sBAAsB;CACtB,uBAAuB;CACvB;;AAED;;CAEC,WAAW;CACX;;AAED;;CAEC,WAAW;CACX;;AAED;;CAEC,UAAU;CACV;;AAED;;CAEC,UAAU;CACV;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC,0BAA0B;CAC1B,YAAY;CACZ,YAAY;CACZ,aAAa;CACb,oBAAoB;CACpB,sBAAsB;CACtB,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB,mBAAmB;CACnB,aAAa;CACb;;AAED;CACC,WAAW;CACX,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB;;AAED;CACC,0BAA0B;CAC1B,YAAY;CACZ,aAAa;CACb,eAAe;CACf,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,iCAAiC;CACjC;;AAED;CACC,cAAc;CACd,YAAY;CACZ,mBAAmB;CACnB,0BAA0B;CAC1B,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb,mBAAmB;CACnB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,kBAAkB;CAClB,iBAAiB;CACjB;;AAED;CACC,cAAc;CACd;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;;;CAGC,oBAAoB;CACpB,cAAc;CACd,uBAAuB;CACvB,sBAAsB;CACtB;;AAED;;CAEC,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB,oBAAoB;CACpB;;AAED;CACC,6BAA6B;CAC7B,sBAAsB;CACtB;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC,YAAY;CACZ;;AAED;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB;;ACjjBD;;CAEC,oBAAoB;CAIpB;;AAHA;;CAHD;;EAIE,iBAAiB;EAElB;CADC;;AAGF;CACC,mBAAmB;CACnB,iBAAiB;CAIjB;;AAHA;;CAHD;EAIE,mBAAmB;EAEpB;CADC;;AAGF;;CAEC,kBAAkB;CASlB;;AAPA;;CAJD;;EAKE,eAAe;EAMhB;CALC;;AAED;;CARD;;EASE,mBAAmB;EAEpB;CADC;;AAGF;CACC,mBAAmB;CACnB,kBAAkB;CASlB;;AAPA;;CAJD;EAKE,mBAAmB;EAMpB;CALC;;AAED;;CARD;EASE,gBAAgB;EAEjB;CADC;;AAGF,eAAe;;AAEf;;CAEC,aAAa;CACb,gBAAgB;CAChB,UAAU;CACV,YAAY;CACZ,iBAAiB;CACjB,SAAS;CACT,cAAc;;CAsLd;;AApLA;;CAVD;EAWE,cAAc;EAmLf;CAlLC;;AAED;EACC,qBAAc;EAAd,cAAc;EACd,2BAAuB;MAAvB,uBAAuB;EACvB,sBAAwB;MAAxB,wBAAwB;EACxB,mBAAmB;EACnB,aAAa;EACb,eAAe;EACf,gBAAgB;EAChB,mBAAmB;EACnB,kBAAkB;CAClB;;AAED;EACC,mBAAmB;EACnB,QAAQ;EACR,SAAS;EACT,4BAA4B;EAC5B,YAAY;CACZ;;AAED;EACC,UAAU;EACV,iBAAiB;EACjB,eAA0B;EAC1B,iBAAiB;CAKjB;;AAHA;;CAND;EAOE,cAAc;EAEf;CADC;;AAGF;EACC,UAAU;EACV,kBAAkB;EAClB,mBAAmB;EACnB,SAAS;EACT,kBAAkB;EAClB,oBAAoB;EACpB,+BAA+B;EAC/B,WAAW;CAkBX;;AAhBA;GACC,sBAAsB;GACtB;;AAED;GACC,eAAgC;GAChC,mBAAmB;GACnB,YAAY;GACZ,aAAa;GACb,kBAAkB;GAClB,oBAAoB;GACpB;;AAED;;CAvBD;EAwBE,cAAc;EAEf;CADC;;AAGF;EACC,cAAc;EACd,oBAAoB;EACpB,iBAAiB;CAcjB;;AAbA;;CAJD;EAKE,cAAc;EAYf;CAXC;;AAED;GACC,sBAAsB;GACtB,aAAa;GACb,iBAAiB;CACjB;;AACD;GACC,eAAgC;CAChC;;AAIF;;CAEC;GACC,aAAa;GACb,sBAAsB;EACtB;CAED;;AAGA;;CADD;EAEE,WAAW;EAYZ;CAXC;;AACD;;CAJD;EAKE,QAAQ;EACR,UAAU;EAQX;CAPC;;AACD;;CARD;EASE,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb,UAAU;EAEX;CADC;;AAID;;CADD;EAEE,OAAO;EAER;CADC;;AAID;;CADD;EAEE,WAAW;EAEZ;CADC;;AAEF;EACC,2CAA2C;CAC3C;;AAED,SAAS;;AACT;EACC,aAAa;EACb,QAAQ;CA8BR;;AA5BA;GACC,mBAAmB;GACnB,oBAAoB;GACpB,eAAe;GACf,mBAAmB;GACnB;;AAED;GACC,mBAAmB;GACnB,WAAW;GACX,SAAS;GACT;;AAED;GACC,YAAY;GACZ,QAAQ;GACR,gCAAgC;GAChC,6BAA6B;GAU7B;;AARA;IACC,mBAAmB;IACnB,WAAW;IACX,YAAY;IACZ,aAAa;IACb,iBAAiB;IACjB,mBAAmB;IACnB;;AAKF;;CADD;EAEE,YAAY;EAYb;CAXC;;AACD;;CAJD;EAKE,SAAS;EACT,UAAU;EAQX;CAPC;;AACD;;CARD;EASE,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb,UAAU;EAEX;CADC;;AAID;;CADD;EAEE,YAAY;EACZ,QAAQ;EAET;CADC;;AAMF;EACC,iBAAiB;EACjB;;AACD;;CAJD,YAUC;CALC;;AAED;CACC,cAAc;CACd;;AAGF;CACC,mBAAmB;CACnB,iBAAiB;CACjB,oBAAoB;CACpB,iFAAiF;CAkBjF;;AAhBA;EACC,eAAe;EACf;;AAED;EACC,iBAAiB;EACjB;;AAED;EACC,kBAAkB;EAMlB;;AALA;GACC,sBAAsB;GACtB,iBAAiB;GACjB,kBAAkB;GAClB;;AAIH,aAAa;;AACb;;CAEC;EACC,aAAa;EACb,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB;;CAED;EACC,YAAY;EACZ,uBAAuB;EACvB,0BAA0B;EAC1B;;CAED;;AChSD;;CAEC;EACC,qBAAqB;EACrB;;CAED;EACC,0BAA0B;EAC1B;;CAED;;AAED,mBAAmB;;AAGnB,aAAa;;AAKX;;CADD;EAEE,eAAe;EACf,YAAY;EAEb;CADC;;AAGF;EACC,eAAY;CACZ;;AAED;;EAEC,eAAe;EACf,gBAAgB;CAChB;;AAGF;CACC,oBAAoB;CACpB;;AAED;CACC,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,QAAQ;CACR,gBAAgB;CAChB,SAAS;CACT,4BAA4B;CAC5B,aAAa;CACb,eAAe;CACf;;AAED;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB,qBAAqB;CACrB,mBAAmB;CACnB;;AAED,oBAAoB;;AAEpB;CACC,sBAAsB;CACtB,gBAAgB;CAChB,0BAA0B;CAC1B,oBAA6B;CAC7B,iBAAiB;CACjB,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,oBAAoB;CACpB,eAAe;CACf;;AAED;CACC,cAAc;CACd;;AAED;CACC,eAAgB;CAChB,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB,UAAU;CACV,eAAe;CACf,iBAAiB;CAIjB;;AAHA;;CALD;EAME,kBAAkB;EAEnB;CADC;;AAGF,aAAa;;AAEb;CACC,aAAa;;CAMb;;AAJA;EACC,cAAc;EACd;;AAIF;;CAEC,cAAc;CACd;;AAIA;EACC,cAAc;EACd;;AAGF,iBAAiB;;AAEjB;CACC,oBAA6B;CAC7B,mBAAmB;CACnB,aAAc;CA2Bd;;AAzBA;CACC,mBAAmB;CACnB;;AAED;EACC,cAAc;CACd;;AAED;EACC,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB;;AAED;EACC,iBAAiB;CACjB;;AAED;EACC,mBAAmB;EACnB,oBAAoB;EACpB,mBAAmB;CACnB;;AAID;CACC,oBAAoB;CACpB;;AAGF,kBAAkB;;AAGjB;EACC,mBAAmB;EACnB,sBAAsB;EACtB,YAAY;EACZ,aAAa;EACb,kBAAkB;EAClB,uBAAuB;;EAmFvB;;AAjFA,gCAAgC;;AAChC;GACC,WAAW;GACX,SAAS;GACT,UAAU;GACV;;AAED,gBAAgB;;AAChB;GACC,mBAAmB;GACnB,gBAAgB;GAChB,OAAO;GACP,QAAQ;GACR,SAAS;GACT,UAAU;GACV,0BAAmC;GACnC,eAAgB;;GAoChB;;AAlCA;CACC,mBAAmB;CACnB,YAAY;CACZ,YAAY;CACZ,WAAW;CACX,UAAU;CACV,YAAY;CACZ,0BAAgC;CAChC,0BAAgC;CAChC,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,YAAY;CACZ,WAAW;CACX,WAAW;CACX,SAAS;CACT,mBAAmB;CACnB,0BAAqC;CACrC,wBAAuB;CACvB;;AAjCF,mCAmCC,qBAAqB;CASrB;;AARA;CACC,oBAAoB;CACpB,0BAAgC;CAIhC;;AAHA;CACA,mBAAmB;CAClB;;AAKH;GACC,oBAAqB;GACrB,qBAAuB;;GAmBvB;;AAlBA;CACC,iBAAiB;CACjB,mBAAmB;CACnB,4BAA4B;CAC5B;;AAED;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,YAAY;CACZ,WAAW;CACX,UAAU;CACV,SAAS;CACT,iBAAiB;CACjB,aAAa;CACb;;AAIF;GACC,iDAAgE;GAChE;;AAIF;EACC,eAAe;EACf,YAAY;EAQZ;;AAPA;GACC,eAAe;GACf,uBAAuB;GACvB;;AACD;CACC,kBAAkB;CAClB;;AAGF;EACC,eAAe;EACf;;AAIF,gBAAgB;;AAEhB;CACC,mBAAmB;CACnB,sBAAsB;CAItB;;AAHA;;CAHD;EAIE,eAAe;EAEhB;CADC;;AAGF;CACC,WAAW;CACX,mBAAmB;CACnB,mBAAmB;CACnB,UAAU;CACV,YAAY;CACZ,iBAAiB;CACjB,cAAc;CACd,aAAa;CACb,iBAAiB;CACjB,WAAW;CACX,sFAAsF;CACtF,qBAAqB;CAKrB;;AAHA;;CAdD;EAeE,YAAY;EAEb;CADC;;AAGF;CACC,cAAc;CACd,kBAAkB;CAClB,YAAY;CACZ;;AAIA;EACC,sBAAsB;EACtB;;AAED;EACC,WAAW;EACX,oBAAoB;EACpB,0FAA0F;EAC1F;;AAED;EACC,WAAW;EACX;;AAIF;;CAEC,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB,sBAAsB;CACtB,cAAc;CACd,mBAAmB;CACnB,iBAAiB;CACjB,mBAAmB;CACnB;;AAED;CACC,sBAAsB;CACtB,uBAAuB;CACvB;;AAED;CACC,qCAAqC;CACrC,0BAA0B;CAC1B;;AC1WD,UAAU;;AAEV;IACI,iBAAiB;CACpB,oBAAoB;CACpB,mBAAmB;CA8JnB;;AA5JA;;;;EAIC,aAAa;EACb,wBAAwB;EACxB,UAAU;EACV,kCAAkC;EAClC,kBAAkB;EAClB,eAAgB;EAwBhB;;AAtBA;GACC,eAAe;GACf,eAAe;GACf,eAA0B;GAC1B,gBAAgB;GAChB,YAAY;GACZ,aAAa;GACb;;AAED;GACC,sBAAsB;GACtB,iBAAiB;GACjB,aAAa;GACb,gBAAgB;GAChB,oBAAqB;GACrB,eAAe;GACf,mBAAmB;GACnB,YAAY;GACZ,iBAAiB;GACjB,0BAA0B;GAC1B,sBAAsB;GACtB;;AAGF;;;;EAIC,iBAAiB;EACjB,wCAAwC;EACxC,0BAA2B;EAK3B;;AAHA;GACC,eAAgB;GAChB;;AAGF;EACC,eAAe;EACf,aAAa;EACb,mBAAmB;EAiDnB;;AA/CA;;;;GAIC,mBAAmB;GAOnB;;AANA;IACC,sBAAsB;IACtB,gBAAgB;IAChB,aAAa;IACb,2BAA2B;IAC3B;;AAGF;GACC,cAAc;GACd;;AAEA;IACC,YAAY;IACZ,eAAe;IACf,mBAAmB;IACnB,UAAU;IACV,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,0BAA0B;CAC1B;;AACD;IACC,mBAAmB;IACnB,eAAe;IACf,iBAAiB;IACjB,cAAc;IACd,SAAS;IACT,UAAU;IACV,WAAW;IACX,iDAAiD;IACjD,aAAa;CASb;;AAPA;KACC,eAAe;KACf,gBAAgB;KAChB,oBAAoB;KACpB,iBAAiB;KACjB,mBAAmB;KACnB;;AAKJ;;CACC;GACC,cAAc;EACd;;CACD;GACC,cAAc;EACd;CACD;;AAED;EACC,eAAe;EACf,aAAa;CAIb;;AAHA;;CAHD;EAIE,cAAc;EAEf;CADC;;AAKD;CAEC,kBAAkB;CA8BlB;;AA5BA;IACC,eAAsB;IACtB,gBAAgB;IAChB,sBAAsB;IACtB,aAAa;IACb,qBAAqB;IACrB,YAAY;CACZ;;AAED;;CAbD;EAcE,mBAAmB;EACnB,aAAa;EACb,SAAS;EACT,gBAAgB;EAChB,iBAAiB;EACjB,sBAAsB;EACtB,WAAW;EAYZ;;CAVC;KACC,eAAsB;KACtB,gBAAgB;KAChB,sBAAsB;KACtB,aAAa;KACb,qBAAqB;KACrB,YAAY;EACZ;CACD;;AAOJ;;EAIE;EACA,iBAAiB;GAChB;;EAED;GACC,eAAe;GACf,WAAY;GA8BZ;;EA5BA;EACC,0BAA0B;EAC1B;;EAED;EACC,+BAA+B;EAC/B;;EAED;;EAEC,iBAAiB;EACjB,uBAAuB;EACvB;;EAOA;KACC,sBAAsB;KACtB,qBAAqB;EACrB;;EAGF;EACC,cAAc;EACd;;CAKH;;AAGD,gBAAgB;;AAEhB;CACC,mBAAmB;CACnB,UAAU;CACV,SAAS;CACT,cAAc;CAkGd;;AAhGA;;CACC;GACC,eAAe;GACf,2CAA2C;EAC3C;CACD;;AAED;;CAbD;EAcE,qBAAc;EAAd,cAAc;EACd,aAAa;EAuFd;CAtFC;;AAED;EACC,sBAAsB;EACtB,mBAAmB;EACnB,eAAe;EACf,mBAAmB;EACnB,uBAAuB;EACvB,eAAe;EACf,eAAqB;CA+CrB;;AA7CA;;CATD;EAUE,eAAe;EACf,aAAa;EACb,qBAAc;EAAd,cAAc;EACd,2BAAuB;MAAvB,uBAAuB;EACvB,sBAAwB;MAAxB,wBAAwB;EAwCzB;;CAtCC;IACC,eAAe;IACf,eAAe;EACf;CACD;;AAED;;CAtBD;EAuBE,cAAc;EACd,iBAAiB;EA8BlB;CA7BC;;AAGA;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,UAAU;CACV,QAAQ;CACR,YAAY;CACZ,YAAY;CACZ,oBAAmB;CACnB,eAAuB;CAOvB;;AALA;;CAXD;EAYE,WAAW;EACX,aAAa;EAGd;CAFC;;AAGF;;CAlBD;EAmBE,eAAc;EAEf;CADC;;AAGF;CACC,oBAAoB;CACpB,eAAuB;CACvB;;AAGF;EACC,eAAe;EACf,WAAW;EACX,oBAAoB;EACpB,iBAAiB;EACjB,oBAAoB;EACpB,kBAAkB;EAClB,iBAAiB;CAMjB;;AALA;;CARD;EASE,WAAW;EACX,YAAY;EACZ,iBAAiB;EAElB;CADC;;AAGF;;CAzFD;EA0FE,mBAAmB;EACnB,UAAU;EACV,YAAY;EACZ,aAAa;EACb,iBAAiB;EAQlB;CANC;;AAED;EACC,QAAQ;EACR,YAAY;CACZ;;AAGF;CACC,mBAAmB;CACnB,SAAS;CACT,UAAU;CACV,qBAAc;CAAd,cAAc;CACd,aAAa;IACV,2BAAuB;QAAvB,uBAAuB;IACvB,gBAAgB;IAChB,uBAAoB;QAApB,oBAAoB;IACpB,sBAAwB;QAAxB,wBAAwB;CAC3B,qBAAsB;CAkBtB;;AAhBA;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd;;AAED;;CApBD;EAqBE,cAAc;EAOf;CANC;;AAED;EACC,YAAY;EACZ,QAAQ;CACR;;AAGF,oBAAoB;;AAEpB,mDAAmD;;AACnD;CACC,qBAAc;CAAd,cAAc;CACd,oBAAgB;KAAhB,eAAgB;;CAEhB,gCAAgC;;CA2EhC;;AAvEC;GACC,kCAAgC;CAChC;;AAVH,2BAaC,iCAAiC;CAkEjC;;AA/DE;IACC,wBAA8D;CAC9D;;AAFD;IACC,wBAA8D;CAC9D;;AAFD;IACC,oCAA8D;CAC9D;;AAIH;EACC,cAAkB;EAClB,mBAAuB;EACvB,uBAAuB;EACvB,qBAAqB;EACrB,aAAa;CAkDb;;AAhDA;CACC,gBAAgB;CAChB;;AAED;GACC,cAAc;CAUd;;AARA;IACC,eAA0B;IAC1B,eAAe;IACf,aAAa;IACb,iBAAiB;IACjB,kBAAkB;IAClB;;AAIF;GACC,mBAAmB;GACnB,aAAiB;GACjB,WAAe;GACf,oCAA4C;CAC5C;;AAED;;CA/BD;EAgCE,YAAY;EACZ,gBAAgB;EAChB,qBAAqB;EAqBtB;;CAnBC;IACC,uBAAuB;IACvB,WAAW;IACX,aAAa;IACb,SAAS;IACT,4BAA4B;IAC5B,YAAgB;EAChB;;CAED;IACC,UAAU;EACV;;CAED;IACC,cAAc;EACd;CAED;;AAMH,yBAAyB;;AAEzB;IACI,YAAY;IACZ,iBAAiB;IACjB,wCAAsB;IACtB,iBAAiB;IACjB,YAAY;IACZ,aAAa;CAChB;;ACzbD,iDAAiD;;AAEjD;CACC,mBAAmB;CACnB,YAAY;CACZ,uBAAuB;CACvB,mBAAmB;;CAkGnB;;AAhGA;;CAND;EAOE,uBAAuB;EA+FxB;CA9FC;;AAED;;CAVD;EAWE,4BAA4B;EA2F7B;CA1FC;;AAED;;CAdD;EAeE,yBAAyB;EAuF1B;CAtFC;;AAED;EACC,mBAAmB;EACnB,UAAU;EACV,WAAW;EACX,SAAS;EACT,UAAU;CACV;;AAED;EACC,eAAe;EACf,YAAY;EACZ,mBAAmB;EACnB,aAAa;EACb,0BAAmC;EACnC,uBAAuB;CA0CvB;;AAxCA;CACC,YAAY;CACZ,eAAe;CACf,kBAAkB;CAClB;;AAED;GACC,mBAAmB;GACnB,SAAS;GACT,UAAU;GACV,wBAAwB;GACxB,yBAAyB;GACzB,6BAA6B;GAC7B,uBAAuB;GACvB,6BAA6B;GAC7B,iBAAiB;GACjB,qCAAqC;CAarC;;AAXA;IACC,eAAe;IACf,UAAU;IACV,iBAAiB;IACjB,mBAAmB;IACnB,SAAS;IACT,UAAU;IACV,gCAAgC;IAChC,0BAAkB;OAAlB,uBAAkB;QAAlB,sBAAkB;YAAlB,kBAAkB;IAClB;;AAIF;GACC,mBAAmB;GACnB,SAAS;GACT,UAAU;GACV,iCAAiC;GACjC,gBAAgB;GAChB,YAAY;GACZ,YAAY;CACZ;;AAGF;;;;EAEC,sBAAuB;CACvB;;AAED;CACC,4BAA6B;CAC7B;;AAED;EACC,mBAAmB;EACnB,WAAW;EACX,aAAa;EACb,UAAU;EACV,4BAA4B;EAC5B,cAAc;CACd;;AAIA;GACC,sBAAsB;CACtB;;AAMH;CACC,wBAAwB;IACrB,kBAAkB;IAClB,mBAAmB;CACtB,kBAAkB;CAClB,iBAAiB;IACd,qBAAc;IAAd,cAAc;CACjB,oBAAgB;KAAhB,gBAAgB;CAChB,mBAAmB;;CAOnB;;AALA;EACC,YAAY;EACZ,YAAY;EACZ;;AAIF;CACC,cAAc;CACd;;AAED;;CAEC,mBAAmB;CACnB,OAAO;CACP,QAAQ;CACR,YAAY;CACZ,aAAa;CACb,WAAW;CACX,0FAA0F;CAC1F,qBAAc;CAAd,cAAc;CACd,uBAAoB;KAApB,oBAAoB;CACpB,sBAAwB;KAAxB,wBAAwB;CACxB;;AAED;CACC,4FAA4F;CAC5F;;AAED;CACC,iBAAiB;CACjB,sBAAsB;CACtB,cAAc;CACd,mBAAmB;CACnB,yCAAyC;CACzC;;ACvJD,uBAAuB;;AAEvB,8BAA8B;;AAE9B;IACI,eAAgB;CACnB;;AAED,uBAAuB;;AAEvB;CACC,sBAAsB;CACtB,gBAAgB;CAChB,kBAAkB;CAClB,sBAAsB;CACtB;;AAGD,wBAAwB;;AAExB;IACI,UAAU;IACV,cAAc;CACjB;;AAED;IACI,qBAAc;IAAd,cAAc;IACd,oBAAgB;QAAhB,gBAAgB;CACnB,kBAAkB;CAClB,oBAAoB;CACpB;;AAED;IACI,eAAW;QAAX,WAAW;IACX,YAAY;IACZ,cAAc;IACd,uBAAuB;IACvB,0BAA0B;CAC7B,kBAAkB;CAClB,oBAAoB;;CAsBpB;;AApBA;;CATD;EAUE,WAAW;EAmBZ;;CAjBC;GACC,YAAY;EACZ;CACD;;AAED;;CACC;GACC,WAAW;EACX;CACD;;AAED;;CACC;GACC,YAAY;EACZ;CACD;;AAIF;IACI,WAAW;CACd;;AAED,wCAAwC;;AACxC;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;;CAEC;;EAEC,YAAY;EACZ,YAAY;EACZ,UAAU;EACV;;CAED;;AAKA;EACC,cAAc;;EAcd;;AAZA;;CAHD;EAIE,cAAc;EAWf;CAVC;;AAED;GACC,UAAU;CACV;;AAED;GACC,iBAAiB;CACjB;;AAMH;CACC,aAAa;CACb,0BAA0B;CAC1B,wBAAwB;CACxB,gBAAgB;CAChB,mBAAmB;CACnB;;AAGA;EACC,0BAA0B;EAC1B,yBAAyB;EACzB,cAAc;EACd;;AAED;EACC,sCAAsC;EACtC;;AAED;EACC,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB;;AAED;EACC,gBAAgB;EAChB;;AAED;EACC,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,eAAe;EACf;;AAED;EACC,aAAa;EACb;;AAED;EACC,WAAW;EACX;;AAED;EACC,oBAAoB;EACpB,6BAA6B;EAK7B;;AAHA;GACC,YAAY;GACZ;;AAMH;CACC,cAAc;CACd;;AAED;;CAEC;EACC,WAAW;EACX;;CAED;EACC,eAAe;EACf,YAAY;EACZ,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb;;CAED;;AAED;;CAEC;EACC,aAAa;EACb;;CAED;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC;;EAEC,eAAe;EA+Bf;;EA7BA;GACC,qBAAc;GAAd,cAAc;GACd,oBAAgB;OAAhB,gBAAgB;GAChB;;EAED;GACC,cAAe;GAsBf;;EApBA;EACC,YAAY;EACZ,oBAAoB;EACpB;;EAED;EACC,WAAW;EACX,uBAAuB;EACvB;;EAED;EACC,cAAc;EACd;;EAED;EACC,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;EACZ,eAAe;EACf;;CAIH;;AAED;CACC,YAAY;CACZ,mBAAmB;CACnB;;AC9OD,iBAAiB;;AAMf;GACC,sBAAsB;GACtB;;AAIF;;GAIE;IACC,eAAe;IACf;;GAED;IACC,yBAAyB;IACzB,uBAAuB;IACvB,sBAAuB;;IAMvB;;GAJA;EACC,eAAsB;EACtB;;GAQF;IACC,eAAe;IACf;;GAED;IACC,eAAe;IACf,uBAAuB;IACvB;;GAED;IACC,yBAAyB;IACzB;CAIF;;AAGA;GACC,iBAAiB;GACjB;;AACD;IAEE;KACC,yBAAyB;KACzB;CAEF;;AAIH;CACC,oBAAoB;CACpB;;AAED;;CAEC,cAAe;;CAaf;;AAXA;CACC,YAAY;CACZ,yBAAyB;CACzB,gBAAgB;CAChB,kBAAkB;CAClB,aAAa;CACb,YAAY;CACZ,cAAc;CACd,uBAAuB;CACvB;;AAIF;;IAEI,iBAAiB;IACjB,6BAA8B;CAIjC;;AAHA;EACC,sBAAsB;EACtB;;AAGF;IACI,iBAAiB;CACpB;;AAED;IACI,iBAAiB;CACpB;;AAED;IACI,cAAc;CACjB,2CAA4C;;CAO5C;;AALA;CACC,iBAAiB;CACjB,aAAa;CACb;;AAIF;IACI,cAAc;CACjB;;ACrHC;IACE,gBAAgB;IAChB,kBAAkB;IAClB,oBAAoB;IACpB,iBAAiB;IACjB,eAAY;GACb;;AAID;IACE,YAAY;IACZ,mBAAmB;IACnB,cAAc;IACd,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;GACrB;;AAGH;EACE,aAAa;EACb,mBAAmB;EACnB,SAAS;CACV;;AAED;EACE,kBAAkB;EAClB,sBAAsB;EACtB,eAAe;EACf,mBAAmB;CACpB;;AAED;IACI,0BAA0B;IAC1B,YAAY;CACf;;AAED;IACI,eAAe;IACf,YAAY;IACZ,kBAAkB;IAClB,iBAAiB;IACjB,eAAe;IACf,iBAAiB;CACpB;;AAED;;;EAGE,uBAAuB;EACvB,UAAU;CACX;;AAED;EACE,gBAAgB;CACjB;;AAGD;EACE,kBAAkB;EAClB,qBAAqB;EACrB,eAAe;EACf,mBAAoB;CAKrB;;AAHC;CACE,cAAc;CACf;;AAMD;IACE,iBAAiB;GAClB;;AAGH;;EAEE,gBAAgB;EAChB,YAAY;EACZ,aAAa;EACb,kBAAkB;EAClB,uBAAuB;EACvB,aAAa;CACd","file":"wp-optimize-admin-3-0-16.min.css","sourcesContent":["/* COLORS */\n$wp-blue: #0272AA;\n$wp-gray-dark: #555d66;\n$wp-gray-darker: #191e23;\n$wp-secondary-gray: #72777C;\n$wp-secondary-gray-light: #82868B;\n$wp-light-gray: #B5B9BE;\n$wp-lighter-gray: #F2F4F5;\n$success: #009B24;\n$error: #9B3600;\n$red: #E07575;\n$brand: #E46B1F;\n$spacing: 20px; \n\n/* OTHER VARS */\n$breakpoint-small: 782px;\n\n@import \"admin.css\";\n\n@import \"scss/layout\";\n\n@import \"scss/common\";\n\n@import \"scss/menu-and-tabs\";\n\n@import \"scss/image-list\";\n\n@import \"scss/plugin-family-tab\";\n\n@import \"scss/table-sorter\";\n\n@import \"scss/cache\";",".wpo_hidden {\n\tdisplay: none !important;\n}\n\n.wpo_info {\n\tbackground: #FFF;\n\tcolor: #444;\n\tfont-family: -apple-system, \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen-Sans\", \"Ubuntu\", \"Cantarell\", \"Helvetica Neue\", sans-serif;\n\tmargin: 2em auto;\n\tpadding: 1em 2em;\n\tmax-width: 700px;\n\t-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13);\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.13);\n}\n\n#wp-optimize-wrap .widefat thead th, #wp-optimize-wrap .widefat thead td {\n\tborder-bottom: 1px solid #E1E1E1;\n}\n\n#wp-optimize-wrap .widefat td, #wp-optimize-wrap .widefat th {\n\tpadding: 8px 10px;\n}\n\n/* big button */\n.wpo_primary_big {\n\tpadding: 4px 6px !important;\n\tfont-size: 22px !important;\n\tmin-height: 34px;\n\tmin-width: 200px;\n}\n\n/* SECTIONS */\n.wpo_section {\n\tclear: both;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.wp-optimize-settings {\n\tmargin-bottom: 16px;\n}\n\n.wp-optimize-settings td > label {\n\tfont-weight: bold;\n\tdisplay: block;\n\tmargin-bottom: 8px;\n}\n\n/* COLUMN SETUP */\n.wpo_col {\n\tdisplay: block;\n\tfloat: left;\n\tmargin: 1% 0 1% 1%;\n}\n\n.wpo_col:first-child {\n\tmargin-left: 0;\n}\n\n/* GROUPING */\n.wpo_group:before,\n.wpo_group:after {\n\tcontent: \"\";\n\tdisplay: table;\n}\n\n.wpo_group:after {\n\tclear: both;\n}\n\n.wpo_half_width {\n\twidth: 48%;\n}\n\n/* GRID OF THREE */\n.wpo_span_3_of_3 {\n\twidth: 100%;\n}\n\n.wpo_span_2_of_3 {\n\twidth: 65.3%;\n}\n\n.wpo_span_1_of_3 {\n\twidth: 32.1%;\n}\n\n#wp-optimize-wrap .nav-tab-wrapper {\n\tmargin: 0;\n}\n\n@media screen and (min-width: 549px) {\n\n\t.show_on_default_sizes {\n\t\tdisplay: block !important;\n\t}\n\n\t.show_on_mobile_sizes {\n\t\tdisplay: none !important;\n\t}\n\n}\n\n@media screen and (max-width: 548px) {\n\n\t.show_on_default_sizes {\n\t\tdisplay: none !important;\n\t}\n\n\t.show_on_mobile_sizes {\n\t\tdisplay: block !important;\n\t}\n\n}\n\n@media screen and (max-width: 768px) {\n\n\t.wpo_col {\n\t\tmargin: 1% 0;\n\t}\n\n\t.wpo_span_3_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_span_2_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_span_1_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_half_width {\n\t\twidth: 100%;\n\t}\n\n}\n\n/* .wp-optimize-settings-clean-transient label, .wp-optimize-settings-clean-pingbacks label, .wp-optimize-settings-clean-trackbacks label, .wp-optimize-settings-clean-postmeta label, .wp-optimize-settings-clean-orphandata label, .wp-optimize-settings-clean-commentmeta label */\n\n.wp-optimize-setting-is-sensitive td > label::before {\n\tcontent: \"\\f534\";\n\tfont-family: 'dashicons';\n\tdisplay: inline-block;\n\tmargin-right: 6px;\n\tfont-style: normal;\n\tline-height: 1;\n\tvertical-align: middle;\n\twidth: 20px;\n\tfont-size: 18px;\n\theight: 20px;\n\ttext-align: center;\n\tcolor: #72777C;\n}\n\n.wpo-run-optimizations__container {\n\tmargin-bottom: 15px;\n}\n\ntd.wp-optimize-settings-optimization-checkbox {\n\twidth: 18px;\n\tpadding-left: 4px;\n\tpadding-right: 0px;\n}\n\n.wp-optimize-settings-optimization-checkbox input {\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#retention-period {\n\twidth: 60px;\n}\n\n.wp-optimize-settings-optimization-info {\n\tfont-size: 80%;\n\tfont-style: italic;\n}\n\n.wp-optimize-settings input[type=\"checkbox\"] {\n\t/* width: 18px; */\n}\n\n/* Added for the Image on Addons tab*/\nimg.addons {\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tmargin-bottom: 20px;\n\tmax-height: 44px;\n\theight: auto;\n\tmax-width: 100%;\n}\n\n.wpo_spinner {\n\twidth: 18px;\n\theight: 18px;\n\tpadding-left: 10px;\n\tdisplay: none;\n\tposition: relative;\n\ttop: 4px;\n}\n\n.optimization_spinner {\n\twidth: 20px;\n\theight: 20px;\n}\n\n#wp-optimize-auto-options {\n\tmargin: 20px 0 0 28px;\n}\n\n.display-none {\n\tdisplay: none;\n}\n\n.visibility-hidden {\n\tvisibility: hidden;\n}\n\n.margin-one-percent {\n\tmargin: 1%;\n}\n\n#save_done, .save-done {\n\tcolor: #D94F00;\n\tfont-size: 220% !important;\n}\n\n.wp-optimize-settings-optimization-info a {\n\ttext-decoration: underline;\n}\n\n.wp-optimize-settings-optimization-run-spinner {\n\tposition: relative;\n\ttop: 2px;\n}\n\n@media screen and (min-width: 782px) {\n\n\ttd.wp-optimize-settings-optimization-run {\n\t\twidth: 180px;\n\t\tpadding-top: 16px;\n\t}\n\n}\n\n#wpoptimize_table_list .tablesorter-filter-row {\n\tdisplay: none !important;\n}\n\n#wpoptimize_table_list .optimization_spinner {\n\tposition: relative;\n\ttop: 2px;\n\tleft: 5px;\n}\n\n#wpoptimize_table_list .optimization_spinner.visibility-hidden {\n\tdisplay: none;\n}\n\n#wpoptimize_table_list_filter {\n\twidth: 100%;\n\tmargin-bottom: 15px;\n}\n\n#wpoptimize_table_list_tables_not_found {\n\tdisplay: none;\n\tmargin: 20px 0;\n}\n\ndiv#wpoptimize_table_list_tables_not_found + h3 {\n\tmargin-top: 30px;\n}\n\n/* Hide First column */\n#wpoptimize_table_list tr th:first-child,\n#wpoptimize_table_list tr td:first-child {\n\tdisplay: none;\n}\n\n#optimize_form .select2-container,\n#wp-optimize-auto-options .select2-container {\n\twidth: 50% !important;\n\ttop: -5px;\n\theight: 40px;\n\tmargin-left: 10px;\n}\n\n#wpoptimize_table_list .optimization_done_icon {\n\tcolor: #009B24;\n\tfont-size: 200%;\n\tdisplay: inline-block;\n\tposition: relative;\n}\n\n#wpo_sitelist_show_moreoptions_cron {\n\tfont-size: 13px;\n\tline-height: 1.5;\n\tletter-spacing: 1px;\n}\n\n#wp-optimize-nav-tab-contents-images .wpo_span_2_of_3 h3 {\n\tdisplay: inline-block;\n}\n\n.wpo_remove_selected_sizes_btn__container {\n\tmargin-top: 20px;\n}\n\n.unused-image-sizes__label {\n\tdisplay: block;\n\tline-height: 1.6;\n}\n\n@media (max-width: 782px) {\n\n\t.unused-image-sizes__label {\n\t\tmargin-left: 30px;\n\t\tmargin-bottom: 15px;\n\t\tline-height: 1;\n\t\tword-break: break-word;\n\t}\n\n\t.unused-image-sizes__label input[type=checkbox] {\n\t\tmargin-left: -30px;\n\t}\n\n\tbody.rtl .unused-image-sizes__label {\n\t\tmargin-right: 30px;\n\t\tmargin-left: 0;\n\t}\n\n\tbody.rtl .unused-image-sizes__label input[type=checkbox] {\n\t\tmargin-left: 4px;\n\t\tmargin-right: -30px;\n\t}\n\n}\n\n#wp-optimize-nav-tab-contents-tables a {\n\tvertical-align: middle;\n}\n\n#wpo_sitelist_moreoptions,\n#wpo_sitelist_moreoptions_cron {\n\tmargin: 4px 16px 6px 0;\n\tborder: 1px dotted;\n\tpadding: 6px 10px;\n\tmax-height: 300px;\n\toverflow-y: scroll;\n\toverflow-x: hidden;\n}\n\n#wpo_sitelist_moreoptions {\n\tmax-height: 150px;\n\tmargin-right: 0;\n}\n\n#wpo_settings_sites_list li,\n#wpo_settings_sites_list li a {\n\tfont-size: 13px;\n\tline-height: 1.5;\n}\n\n#wpo_sitelist_moreoptions_cron li {\n\tpadding-left: 20px;\n}\n\n#wpo_import_error_message {\n\tdisplay: none;\n\tcolor: #9B0000;\n}\n\n#wpo_import_success_message {\n\tdisplay: none;\n\tcolor: #46B450;\n}\n\n#wp-optimize-logging-options {\n\tmargin-top: 10px;\n}\n\n/* Logger settings*/\n.wpo_logging_header {\n\tfont-weight: bold;\n\tborder-top: 1px solid #333;\n\tborder-bottom: 1px solid #333;\n\tpadding: 5px 0;\n\tmargin: 0;\n}\n\n.wpo_logging_row {\n\tborder-bottom: 1px solid #A1A2A3;\n\tpadding: 5px 0;\n}\n\n.wpo_logging_logger_title,\n.wpo_logging_options_title,\n.wpo_logging_status_title,\n.wpo_logging_actions_title,\n.wpo_logging_logger_row,\n.wpo_logging_options_row,\n.wpo_logging_status_row,\n.wpo_logging_actions_row {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.wpo_logging_logger_title,\n.wpo_logging_logger_row {\n\twidth: 38%;\n}\n\n.wpo_logging_options_title,\n.wpo_logging_options_row {\n\twidth: 44%;\n}\n\n.wpo_logging_status_title,\n.wpo_logging_status_row {\n\twidth: 8%;\n}\n\n.wpo_logging_actions_title,\n.wpo_logging_actions_row {\n\twidth: 7%;\n}\n\n.wpo_logging_actions_row {\n\ttext-align: right;\n}\n\n.wpo_logging_options_row {\n\tword-wrap: break-word;\n}\n\n.wpo_logging_actions_row .dashicons-no-alt,\n.wpo_add_logger_form .dashicons-no-alt {\n\tbackground-color: #F06666;\n\tcolor: #FFF;\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 20px;\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tmargin-left: 5px;\n}\n\n.wpo_add_logger_form .dashicons-no-alt {\n\tmargin-top: 12px;\n\tmargin-right: 10px;\n\tfloat: right;\n}\n\n.wpo_logger_type {\n\twidth: 90%;\n\tmargin-top: 10px;\n}\n\n.wpo_logger_addition_option {\n\twidth: 100%;\n\tmargin-top: 5px;\n}\n\n.wpo_alert_notice {\n\tbackground-color: #F06666;\n\tcolor: #FFF;\n\tpadding: 5px;\n\tdisplay: block;\n\tmargin-bottom: 5px;\n\tborder-radius: 5px;\n}\n\n.wpo_error_field {\n\tborder-color: #F06666 !important;\n}\n\n.save_settings_reminder {\n\tdisplay: none;\n\tcolor: #333;\n\tpadding: 15px 20px;\n\tbackground-color: #F0A5A4;\n\tborder-radius: 3px;\n\tmargin: 15px 0;\n}\n\n#wpo_remove_selected_sizes {\n\tmargin-top: 20px;\n}\n\n.wpo_unused_images_buttons_wrap {\n\tfloat: right;\n\tmargin-right: 20px;\n}\n\n.wpo_unused_images_container h3 {\n\tmin-width: 150px;\n}\n\n#wpo_unused_images, #wpo_smush_images_grid {\n\tmax-height: 500px;\n\toverflow-y: auto;\n}\n\n#wpo_unused_images a {\n\toutline: none;\n}\n\n#wp-optimize-nav-tab-wpo_database-tables-contents .wpo-take-a-backup {\n\tmargin-left: 1%;\n}\n\n.run-single-table-delete {\n\tmargin-top: 3px;\n}\n\n#wpo_browser_cache_output,\n#wpo_gzip_compression_output,\n#wpo_advanced_cache_output {\n\tbackground: #F0F0F0;\n\tpadding: 10px;\n\tborder: 1px solid #CCC;\n\twhite-space: pre-wrap;\n}\n\n#wpo_gzip_compression_error_message,\n.wpo-error {\n\tcolor: #9B0000;\n}\n\n.notice.wpo-error__enabling-cache {\n\twhite-space: pre;\n\tmargin-bottom: 15px;\n}\n\na.loading.wpo-refresh-gzip-status {\n\tcolor: rgba(68, 68, 68, 0.5);\n\ttext-decoration: none;\n}\n\na.loading.wpo-refresh-gzip-status img.wpo_spinner.display-none {\n\tdisplay: inline-block;\n}\n\n#wpo_browser_cache_expire_days,\n#wpo_browser_cache_expire_hours {\n\twidth: 50px;\n}\n\n.wpo-enabled .wpo-disabled {\n\tdisplay: none;\n}\n\n.wpo-disabled .wpo-enabled {\n\tdisplay: none;\n}\n\n.wpo-button-wrap {\n\tmargin-top: 10px;\n}","body[class*=\"toplevel_page_WP-Optimize\"] #wpbody,\nbody[class*=\"wp-optimize_page_\"] #wpbody {\n\tpadding-right: 15px;\n\t@media screen and (max-width: 768px) {\n\t\tpadding-right: 0;\n\t}\n}\n\nbody.toplevel_page_WP-Optimize.rtl #wpbody {\n\tpadding-left: 15px;\n\tpadding-right: 0;\n\t@media screen and (max-width: 768px) {\n\t\tpadding-left: 10px;\n\t}\n}\n\nbody[class*=\"toplevel_page_WP-Optimize\"] #wpbody-content,\nbody[class*=\"wp-optimize_page_\"] #wpbody-content {\n\tpadding-top: 80px;\n\n\t@media (max-width: 600px) {\n\t\tpadding-top: 0;\n\t}\t\n\n\t@media (min-width: 820px) {\n\t\tpadding-top: 100px;\n\t}\t\n}\n\n#wp-optimize-wrap {\n\tposition: relative;\n\tpadding-top: 20px;\n\n\t@media (max-width: 600px) {\n\t\tpadding-top: 110px;\n\t}\t\n\n\t@media(max-width: $breakpoint-small) {\n\t\tmargin-right: 0;\n\t}\n}\n\n/* DASHBOARD */\n\n.wpo-main-header {\n\n\theight: 77px;\n\tposition: fixed;\n\ttop: 32px;\n\tleft: 160px;\n\tbackground: #FFF;\n\tright: 0;\n\tz-index: 9980;\n\n\t@media (min-width: 820px) {\n\t\theight: 105px;\n\t}\t\n\n\t.wpo-logo__container {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tposition: relative;\n\t\theight: 100%;\n\t\tline-height: 1;\n\t\tfont-size: 1rem;\n\t\tpadding-left: 50px;\n\t\tmargin-left: 10px;\n\t}\n\n\t.wpo-logo {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\twidth: 50px;\n\t}\n\n\t.wpo-subheader {\n\t\tmargin: 0;\n\t\tfont-weight: 300;\n\t\tcolor: $wp-secondary-gray;\n\t\tline-height: 1.3;\n\n\t\t@media (max-width: 1080px) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\tp.wpo-header-links {\n\t\tmargin: 0;\n\t\tfont-size: 0.7rem;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tpadding: 6px 15px;\n\t\tbackground: #EDEEEF;\n\t\tborder-bottom-left-radius: 5px;\n\t\tz-index: 1;\n\n\t\ta {\n\t\t\ttext-decoration: none;\n\t\t}\n\n\t\t.wpo-header-links__label {\n\t\t\tcolor: $wp-secondary-gray-light;\n\t\t\tposition: absolute;\n\t\t\tright: 100%;\n\t\t\twidth: 110px;\n\t\t\ttext-align: right;\n\t\t\tpadding-right: 10px;\n\t\t}\n\n\t\t@media (max-width: 820px) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\tp.wpo-header-links__mobile {\n\t\tpadding: 10px;\n\t\tbackground: #EDEEEF;\n\t\tmargin-bottom: 0;\n\t\t@media (min-width: 820px) {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\ta {\n\t\t\tdisplay: inline-block;\n\t\t\tpadding: 4px;\n\t\t\tfont-size: .8rem;\n\t\t}\n\t\t.wpo-header-links__label {\n\t\t\tcolor: $wp-secondary-gray-light;\n\t\t}\n\n\t}\n\n\t@media (max-width: 600px) {\n\t\t\n\t\t.wpo-logo__container strong {\n\t\t\twidth: 140px;\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t}\n\n\tbody.auto-fold & {\n\t\t@media (max-width: 960px) {\n\t\t\tleft: 36px;\n\t\t}\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\tleft: 0;\n\t\t\ttop: 46px;\n\t\t}\n\t\t@media (max-width: 600px) {\n\t\t\tposition: absolute;\n\t\t\tleft: -10px;\n\t\t\tright: -10px;\n\t\t\ttop: 10px;\n\t\t}\n\t}\n\n\tbody.auto-fold #screen-meta + #wp-optimize-wrap & {\n\t\t@media (max-width: 600px) {\n\t\t\ttop: 0;\n\t\t}\n\t}\n\n\tbody.folded & {\n\t\t@media (min-width: $breakpoint-small) {\n\t\t\tleft: 36px;\n\t\t}\n\t}\n\tbody.is-scrolled & {\n\t\tbox-shadow: 0 5px 25px rgba(0, 0, 0, 0.17);\n\t}\n\n\t/* RTL */\n\tbody.rtl & {\n\t\tright: 160px;\n\t\tleft: 0;\n\n\t\t.wpo-logo__container {\n\t\t\tpadding-left: 10px;\n\t\t\tpadding-right: 50px;\n\t\t\tmargin-left: 0;\n\t\t\tmargin-right: 10px;\n\t\t}\n\t\n\t\t.wpo-logo {\n\t\t\tposition: absolute;\n\t\t\tleft: auto;\n\t\t\tright: 0;\n\t\t}\t\n\n\t\tp.wpo-header-links {\n\t\t\tright: auto;\n\t\t\tleft: 0;\n\t\t\tborder-bottom-right-radius: 5px;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\n\t\t\t.wpo-header-links__label {\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: 100%;\n\t\t\t\tright: auto;\n\t\t\t\twidth: 110px;\n\t\t\t\ttext-align: left;\n\t\t\t\tpadding-left: 10px;\n\t\t\t}\n\t\t}\n\t}\n\n\tbody.rtl.auto-fold & {\n\t\t@media (max-width: 960px) {\n\t\t\tright: 36px;\n\t\t}\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\tright: 0;\n\t\t\ttop: 46px;\n\t\t}\n\t\t@media (max-width: 600px) {\n\t\t\tposition: absolute;\n\t\t\tleft: -10px;\n\t\t\tright: -10px;\n\t\t\ttop: 10px;\n\t\t}\n\t}\n\n\tbody.rtl.folded & {\n\t\t@media (min-width: $breakpoint-small) {\n\t\t\tright: 36px;\n\t\t\tleft: 0;\n\t\t}\n\t}\n\n}\n\n.wpo-page {\n\tbody.rtl & {\n\t\tpadding-right: 0;\n\t}\n\t@media (min-width: 769px) {\n\t}\n\n\t&:not(.active) {\n\t\tdisplay: none;\n\t}\n}\n\n.wpo-introduction-notice {\n\tpadding: 15px 20px;\n\tmargin-top: 30px;\n\tmargin-bottom: 30px;\n\tbackground: #FFF url('../images/notices/logo-bg-notice.png') no-repeat 100% 100%;\n\n\th3 {\n\t\tfont-size: 2em;\n\t}\n\n\tp:not(.font-size__normal) {\n\t\tfont-size: 1.2em;\n\t}\n\n\t.wpo-introduction-notice__footer-links {\n\t\tpadding-top: 20px;\n\t\t> a, > span {\n\t\t\tdisplay: inline-block;\n\t\t\tmargin-left: 5px;\n\t\t\tmargin-right: 5px;\n\t\t}\n\t}\n}\n\n/* Columns */\n@media (min-width: 1200px) {\n\n\t.wpo-tab-postbox.right-col {\n\t\twidth: 350px;\n\t\tfloat: right;\n\t\tbox-sizing: border-box;\n\t\tmargin-top: 3.1rem;\n\t}\n\n\t.right-col + .wpo-main {\n\t\tfloat: left;\n\t\tbox-sizing: border-box;\n\t\twidth: calc(100% - 380px);\n\t}\n\n}\n","@keyframes rotate {\n\n\t0% {\n\t\ttransform: rotate(0);\n\t}\n\n\t100% {\n\t\ttransform: rotate(360deg);\n\t}\n\n}\n\n/* Common BLOCKS */\n\n\n/* Buttons */\n\n#wp-optimize-wrap {\n\n\t.button-large {\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t.red {\n\t\tcolor: $red;\n\t}\n\n\tdiv[id*=\"_notice\"] div.updated,\n\t> .notice {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n}\n\n.notice.notice-warning.wpo-warning {\n\tmargin-bottom: 18px;\n}\n\n.notice.notice-warning.wpo-warning p {\n\tpadding-left: 36px;\n\tposition: relative;\n}\n\n.notice.notice-warning.wpo-warning p > .dashicons {\n\tposition: absolute;\n\tleft: 0;\n\tfont-size: 26px;\n\ttop: 50%;\n\ttransform: translateY(-50%);\n\theight: 26px;\n\tcolor: #FFB900;\n}\n\n.button.button-block {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: center;\n}\n\n.wpo-refresh-button {\n\tfloat: right;\n}\n\n.wpo-refresh-button:hover {\n\tcursor: pointer;\n}\n\n.wpo-refresh-button .dashicons {\n\ttext-decoration: none;\n\tline-height: inherit;\n\tfont-size: inherit;\n}\n\n/* Helper classes */\n\n*[class*=\"wpo-badge\"] {\n\tdisplay: inline-block;\n\tfont-size: .8em;\n\ttext-transform: uppercase;\n\tbackground: $wp-lighter-gray;\n\tpadding: 3px 5px;\n\tline-height: 1;\n\tborder-radius: 3px;\n}\n\n.wpo-badge__new {\n\tbackground: #DBE3E6;\n\tcolor: #00689a;\n}\n\n.wpo-first-child {\n\tmargin-top: 0;\n}\n\n#save_done, .save-done {\n\tcolor: $success;\n\tfont-size: 250%;\n}\n\np.wpo-take-a-backup {\n\tdisplay: inline-block;\n\tmargin: 0;\n\tline-height: 1;\n\tpadding-top: 8px;\n\t@media (min-width: $breakpoint-small) {\n\t\tmargin-left: 20px;\n\t}\n}\n\n/* Postbox */\n\n#wp-optimize-wrap .nav-tab-wrapper ~ .wp-optimize-nav-tab-contents > .postbox {\n\tborder: none;\n\n\t> h3:first-child {\n\t\tmargin-top: 0;\n\t}\n\n}\n\n.wpo-p25,\n.postbox.wpo-tab-postbox {\n\tpadding: 25px;\n}\n\n.wpo-tab-postbox {\n\t\n\t> h3:first-child {\n\t\tmargin-top: 0;\n\t}\n}\n\n/* Field group */\n\n.wpo-fieldgroup {\n\tbackground: $wp-lighter-gray;\n\tborder-radius: 8px;\n\tpadding: 20px;\n\n\t&:not(:last-child) {\n\t\tmargin-bottom: 2em;\n\t}\n\n\t> *:first-child {\n\t\tmargin-top: 0;\n\t}\n\t\n\t> *:last-child {\n\t\tmargin-bottom: 0;\n\t}\n\n\t&.premium-only {\n\t\tposition: relative;\n\t}\n\n\t.switch + label {\n\t\tfont-weight: 600;\n\t}\n\n\tcode {\n\t\tfont-size: inherit;\n\t\tbackground: #d8dbdc;\n\t\tborder-radius: 3px;\n\t}\n}\n\n.wpo-fieldgroup__subgroup {\n\t&:not(:last-of-type) {\n\t\tmargin-bottom: 20px;\n\t}\n}\n\n/* The switches */\n#wp-optimize-wrap {\n\n\t.switch {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t\twidth: 38px;\n\t\theight: 18px;\n\t\tmargin-right: 6px;\n\t\tbox-sizing: border-box;\n\n\t\t/* Hide default HTML checkbox */\n\t\tinput {\n\t\t\topacity: 0;\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t}\n\n\t\t/* The slider */\n\t\t.slider {\n\t\t\tposition: absolute;\n\t\t\tcursor: pointer;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t\tbackground-color: $wp-lighter-gray;\n\t\t\ttransition: .2s;\n\n\t\t\t&::before {\n\t\t\t\tposition: absolute;\n\t\t\t\tcontent: \"\";\n\t\t\t\theight: 8px;\n\t\t\t\twidth: 8px;\n\t\t\t\tleft: 2px;\n\t\t\t\tbottom: 2px;\n\t\t\t\tbackground-color: $wp-gray-dark;\n\t\t\t\tborder: 1px solid $wp-gray-dark;\n\t\t\t\ttransition: all .2s;\n\t\t\t}\n\n\t\t\t&::after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\theight: 4px;\n\t\t\t\twidth: 3px;\n\t\t\t\tright: 4px;\n\t\t\t\ttop: 4px;\n\t\t\t\tborder-radius: 50%;\n\t\t\t\tborder: 1px solid $wp-secondary-gray;\n\t\t\t\tbox-sizing: content-box\n\t\t\t}\n\n\t\t\t/* Rounded sliders */\n\t\t\t&.round {\n\t\t\t\tborder-radius: 23px;\n\t\t\t\tborder: 2px solid $wp-gray-dark;\n\t\t\t\t&::before {\n\t\t\t\tborder-radius: 50%;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tinput:checked + .slider {\n\t\t\tbackground: $wp-blue;\n\t\t\tborder-color: $wp-blue;\n\t\t\t&::before {\n\t\t\t\tbackground: #FFF;\n\t\t\t\tborder-color: #FFF;\n\t\t\t\ttransform: translateX(20px);\n\t\t\t}\n\n\t\t\t&::after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\theight: 6px;\n\t\t\t\twidth: 2px;\n\t\t\t\tleft: 7px;\n\t\t\t\ttop: 4px;\n\t\t\t\tbackground: #FFF;\n\t\t\t\tborder: none;\n\t\t\t}\n\n\t\t}\n\n\t\tinput:focus + .slider {\n\t\t\tbox-shadow: 0 0 0 2px $wp-lighter-gray, 0 0 0 3px $wp-gray-dark;\n\t\t}\n\n\t}\n\n\t.switch-container {\n\t\tdisplay: block;\n\t\tclear: both;\n\t\tlabel {\n\t\t\tline-height: 1;\n\t\t\tvertical-align: middle;\n\t\t}\n\t\t& + small {\n\t\t\tmargin-left: 49px;\n\t\t}\n\t}\n\n\t.wpo-fieldgroup > .switch-container:first-child {\n\t\tpadding-top: 0;\n\t}\n\n}\n\n/* Help popup */\n\n.wpo-info {\n\tposition: relative;\n\tdisplay: inline-block;\n\t@media (max-width:480px) {\n\t\tdisplay: block;\n\t}\n}\n\n.wpo-info__content {\n\topacity: 0;\n\tvisibility: hidden;\n\tposition: absolute;\n\ttop: 100%;\n\tleft: -25px;\n\tbackground: #FFF;\n\tpadding: 20px;\n\twidth: 380px;\n\tmax-width: 380px;\n\tz-index: 5;\n\tbox-shadow: 0px 11px 25px 0px rgba(0, 0, 0, 0), 0px 11px 25px 3000px rgba(0, 0, 0, 0);\n\ttransition: 0.2s all;\n\n\t@media (max-width:480px) {\n\t\twidth: auto;\n\t}\n}\n\nspan.wpo-info__close {\n\tdisplay: none;\n\tmargin-left: 20px;\n\tcolor: #444;\n}\n\n.wpo-info.opened {\n\n\tspan.wpo-info__close {\n\t\tdisplay: inline-block;\n\t}\n\n\t.wpo-info__content {\n\t\topacity: 1;\n\t\tvisibility: visible;\n\t\tbox-shadow: 0px 11px 25px 0px rgba(0, 0, 0, 0.3), 0px 11px 25px 3000px rgba(0, 0, 0, 0.3);\n\t}\n\n\ta.wpo-info__trigger {\n\t\tz-index: 6;\n\t}\n\t\n}\n\n.wpo-info__content img,\n.wpo-info__content iframe {\n\tmax-width: 100%;\n}\n\na.wpo-info__trigger {\n\tdisplay: inline-block;\n\ttext-decoration: none;\n\tpadding: 10px;\n\tposition: relative;\n\tbackground: #FFF;\n\tmargin-left: -10px;\n}\n\na.wpo-info__trigger span.dashicons {\n\ttext-decoration: none;\n\tvertical-align: middle;\n}\n\n.wpo-rotate {\n\tanimation: rotate 1s linear infinite;\n\ttransform-origin: 50% 50%;\n}","/* TABS */\n\n#wp-optimize-wrap h2.nav-tab-wrapper {\n margin-bottom: 0;\n\tborder-bottom: none;\n\tposition: relative;\n\t\n\t.nav-tab,\n\t.nav-tab:hover,\n\t.nav-tab:focus,\n\t.nav-tab:focus:active {\n\t\tborder: none;\n\t\tbackground: transparent;\n\t\tmargin: 0;\n\t\tborder-top: 3px solid transparent;\n\t\tpadding: 7px 15px;\n\t\tcolor: $wp-blue;\n\n\t\t.dashicons {\n\t\t\tdisplay: block;\n\t\t\tmargin: 0 auto;\n\t\t\tcolor: $wp-secondary-gray;\n\t\t\tfont-size: 30px;\n\t\t\twidth: 30px;\n\t\t\theight: 30px;\n\t\t}\n\t\t\n\t\tspan.premium-only {\n\t\t\tdisplay: inline-block;\n\t\t\tmargin-left: 6px;\n\t\t\tpadding: 4px;\n\t\t\tfont-size: 10px;\n\t\t\tbackground: $wp-blue;\n\t\t\tline-height: 1;\n\t\t\tborder-radius: 3px;\n\t\t\tcolor: #FFF;\n\t\t\tfont-weight: 300;\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: .06em;\n\t\t}\t\t\n\t}\n\t\n\t.nav-tab-active,\n\t.nav-tab-active:hover,\n\t.nav-tab-active:focus,\n\t.nav-tab-active:focus:active {\n\t\tbackground: #FFF;\n\t\tbox-shadow: 0 0 1px rgba(0, 0, 0, 0.04);\n\t\tborder-top-color: $wp-blue;\n\n\t\t.dashicons {\n\t\t\tcolor: $wp-blue;\n\t\t}\n\t}\n\n\t.wpo-feedback {\n\t\tdisplay: block;\n\t\tfloat: right;\n\t\tposition: relative;\n\n\t\t> .nav-tab,\n\t\t> .nav-tab:hover,\n\t\t> .nav-tab:focus,\n\t\t> .nav-tab:focus:active {\n\t\t\tposition: relative;\n\t\t\t.dashicons {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tfont-size: 20px;\n\t\t\t\theight: 18px;\n\t\t\t\ttransform: translateY(4px);\n\t\t\t}\n\t\t}\n\n\t\t> div {\n\t\t\tdisplay: none;\n\t\t}\n\t\t&:hover {\n\t\t\ta.nav-tab::after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom: 0;\n\t\t\t\tright: 0;\n\t\t\t\theight: 2px;\n\t\t\t\twidth: 100%;\n\t\t\t\tbackground-color: #0172aa;\n\t\t\t}\n\t\t\t> div {\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: block;\n\t\t\t\tbackground: #FFF;\n\t\t\t\tpadding: 15px;\n\t\t\t\tright: 0;\n\t\t\t\ttop: 100%;\n\t\t\t\tz-index: 4;\n\t\t\t\tbox-shadow: 0px 11px 25px 0px rgba(0, 0, 0, 0.1);\n\t\t\t\twidth: 350px;\n\n\t\t\t\ta {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\tpadding: 6px 3px;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t@media (max-width: $breakpoint-small) {\n\t\t.wpo-feedback {\n\t\t\tdisplay: none;\n\t\t}\n\t\ta:not(.nav-tab-active) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\t\n\ta[role=\"toggle-menu\"] {\n\t\tdisplay: block;\n\t\tfloat: right;\n\t\t@media (min-width: $breakpoint-small) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\n\ta.nav-tab.wp-optimize-nav-tab__back {\n\t\t&, &:focus:active {\t\n\n\t\t\ttext-align: right;\n\n\t\t\t.dashicons {\n\t\t\t\tcolor: $wp-light-gray;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\theight: auto;\n\t\t\t\tline-height: inherit;\n\t\t\t\twidth: 20px;\n\t\t\t}\n\n\t\t\t@media (min-width: $breakpoint-small) {\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom: 14px;\n\t\t\t\tright: 0;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-weight: 400;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tpadding: 0;\n\t\t\t\n\t\t\t\t.dashicons {\n\t\t\t\t\tcolor: $wp-light-gray;\n\t\t\t\t\tfont-size: 18px;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\theight: auto;\n\t\t\t\t\tline-height: inherit;\n\t\t\t\t\twidth: 20px;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t}\n\t\n\t}\n}\n\n@media (max-width: $breakpoint-small) {\n\n\t.wpo-mobile-menu-opened {\n\n\t\t.wpo-main .wpo-tab-postbox {\n\t\t//\tdisplay: none;\n\t\t}\n\n\t\th2.nav-tab-wrapper a {\n\t\t\tdisplay: block;\n\t\t\tfloat: none;\n\n\t\t\t&.nav-tab {\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\n\t\t\t&:not(.nav-tab-active) {\n\t\t\t\tbackground: #f9f9f9 !important;\n\t\t\t}\n\n\t\t\t&.nav-tab-active,\n\t\t\t&.nav-tab-active:focus {\n\t\t\t\tborder-top: none;\n\t\t\t\tborder-left: 3px solid;\n\t\t\t}\n\n\t\t\t&.nav-tab-active,\n\t\t\t&.nav-tab-active:focus,\n\t\t\t&:focus,\n\t\t\t&:hover,\n\t\t\t& {\n\t\t\t\t.dashicons {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tline-height: inherit;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&[role=\"toggle-menu\"] {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\n\t}\n\n}\n\n\n/* Pages MENU */\n\n.wpo-pages-menu {\n\tposition: absolute;\n\tbottom: 0;\n\tright: 0;\n\tdisplay: none;\n\n\t@media (max-width: 820px) {\n\t\t.opened + & {\n\t\t\tdisplay: block;\n\t\t\tbox-shadow: 0 5px 25px rgba(0, 0, 0, 0.17);\n\t\t}\n\t}\n\n\t@media (min-width: 821px) {\n\t\tdisplay: flex;\n\t\theight: 77px;\n\t}\n\n\t> a {\n\t\ttext-decoration: none;\n\t\tposition: relative;\n\t\tcolor: inherit;\n\t\ttext-align: center;\n\t\tbox-sizing: border-box;\n\t\tdisplay: block;\n\t\tcolor: $wp-gray-dark;\n\n\t\t@media (min-width: 821px) {\n\t\t\tpadding: 0 8px;\n\t\t\theight: 77px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: center;\n\n\t\t\t> span {\n\t\t\t\tdisplay: block;\n\t\t\t\tmargin: 0 auto;\n\t\t\t}\n\t\t}\n\n\t\t@media (max-width: 820px) {\n\t\t\tpadding: 15px;\n\t\t\tfont-size: 1.2em;\n\t\t}\n\n\t\t&.active {\n\t\t\t&::after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom: 0;\n\t\t\t\tleft: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 3px;\n\t\t\t\tbackground: $brand;\n\t\t\t\tcolor: $wp-gray-darker;\n\n\t\t\t\t@media (max-width: 820px) {\n\t\t\t\t\twidth: 3px;\n\t\t\t\t\theight: 100%;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t@media (max-width: 820px) {\n\t\t\t\tcolor: $brand;\n\t\t\t}\n\t\t}\n\n\t\t&:hover {\n\t\t\tbackground: #F9F9F9;\n\t\t\tcolor: $wp-gray-darker;\n\t\t}\n\t}\n\n\tspan.separator {\n\t\tdisplay: block;\n\t\twidth: 2px;\n\t\tbackground: #EFEFEF;\n\t\tmargin-top: 18px;\n\t\tmargin-bottom: 18px;\n\t\tmargin-right: 5px;\n\t\tmargin-left: 5px;\n\t\t@media (max-width: 820px) {\n\t\t\twidth: 80%;\n\t\t\theight: 2px;\n\t\t\tmargin: 10px 10%;\n\t\t}\n\t}\n\n\t@media (max-width: 820px) {\n\t\ttext-align: center;\n\t\ttop: 100%;\n\t\twidth: 100%;\n\t\tbottom: auto;\n\t\tbackground: #FFF;\t\t\n\n\t}\n\n\tbody.rtl & {\n\t\tleft: 0;\n\t\tright: auto;\n\t}\n}\n\n#wp-optimize-nav-page-menu {\n\tposition: absolute;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\theight: 77px;\n flex-direction: column;\n padding: 0 20px;\n align-items: center;\n justify-content: center;\n\ttext-decoration: none;\n\n\t&:not(.opened) .dashicons-no-alt {\n\t\tdisplay: none;\n\t}\n\n\t&.opened .dashicons-menu {\n\t\tdisplay: none;\n\t}\n\n\t@media (min-width: 821px) {\n\t\tdisplay: none;\n\t}\n\n\tbody.rtl & {\n\t\tright: auto;\n\t\tleft: 0;\n\t}\n}\n\n/* DASHBOARD Menu */\n\n/* Calculate column width with a $spacing gutter */\n.wpo-dashboard-pages-menu {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t/* Same size for 1 to 3 items */\n\t&[data-itemscount=\"1\"],\n\t&[data-itemscount=\"2\"],\n\t&[data-itemscount=\"3\"] {\n\t\t.wpo-dashboard-pages-menu__item {\n\t\t\twidth: calc(33.333% - 40px / 3);\n\t\t}\n\t}\n\n\t/* above 3 items, change sizes */\n\t@for $count from 4 to 6 {\n\t\t&[data-itemscount=\"$count\"] {\n\t\t\t.wpo-dashboard-pages-menu__item {\n\t\t\t\twidth: calc(100% / $count - $spacing * ($count - 1) / $count);\n\t\t\t}\n\t\t}\n\t}\n\n\t.postbox.wpo-dashboard-pages-menu__item {\n\t\tpadding: $spacing;\n\t\tmargin-right: $spacing;\n\t\tbox-sizing: border-box;\n\t\tpadding-bottom: 60px;\n\t\tmin-width: 0;\n\t\n\t\t&:last-child {\n\t\t\tmargin-right: 0;\n\t\t}\n\t\n\t\th3 {\n\t\t\tmargin-top: 0;\n\n\t\t\t.dashicons {\n\t\t\t\tcolor: $wp-secondary-gray;\n\t\t\t\tline-height: 1;\n\t\t\t\theight: 18px;\n\t\t\t\tmargin-top: -2px;\n\t\t\t\tmargin-right: 10px\n\t\t\t}\n\n\t\t}\n\n\t\ta {\n\t\t\tposition: absolute;\n\t\t\tbottom: $spacing;\n\t\t\tleft: $spacing;\n\t\t\twidth: calc(100% - $spacing * 2) !important;\n\t\t}\n\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\twidth: 100%;\n\t\t\tmargin-right: 0;\n\t\t\tpadding-bottom: 20px;\n\n\t\t\ta.button.button-large {\n\t\t\t\twidth: auto !important;\n\t\t\t\tleft: auto;\n\t\t\t\tbottom: auto;\n\t\t\t\ttop: 50%;\n\t\t\t\ttransform: translateY(-50%);\n\t\t\t\tright: $spacing;\n\t\t\t}\n\n\t\t\th3 {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\tp {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t}\n\t\n\t}\n\n}\n\n/* Admin bar separator */\n\n#wpadminbar .quicklinks .menupop.hover ul li.separator .ab-item.ab-empty-item {\n height: 2px;\n line-height: 2px;\n background: #ffffff17;\n margin: 5px 10px;\n width: auto;\n min-width: 0;\n}","/* Unused images / wpo_smush_image / image grid*/\n\n.wpo_unused_image, .wpo_smush_image {\n\tposition: relative;\n\tmargin: 4px;\n\twidth: calc(50% - 8px);\n\ttext-align: center;\n\n\t@media (min-width: 500px) {\n\t\twidth: calc(25% - 8px);\n\t}\n\n\t@media (min-width: $breakpoint-small) {\n\t\twidth: calc(16.6666% - 8px);\n\t}\n\n\t@media (min-width: 1100px) {\n\t\twidth: calc(12.5% - 8px);\n\t}\n\n\t.wpo_unused_image__input {\n\t\tposition: absolute;\n\t\ttop: 10px;\n\t\topacity: 0;\n\t\twidth: 0;\n\t\theight: 0;\n\t}\n\t\n\tlabel {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tposition: relative;\n\t\tpadding: 1px;\n\t\tborder: 3px solid $wp-lighter-gray;\n\t\tbox-sizing: border-box;\n\n\t\t&::before {\n\t\t\tcontent: \"\";\n\t\t\tdisplay: block;\n\t\t\tpadding-top: 100%;\n\t\t}\n\n\t\t.thumbnail {\n\t\t\tposition: absolute;\n\t\t\ttop: 1px;\n\t\t\tleft: 1px;\n\t\t\twidth: calc(100% - 2px);\n\t\t\theight: calc(100% - 2px);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-size: cover;\n\t\t\tbackground-position: 50% 50%;\n\t\t\toverflow: hidden;\n\t\t\tbackground: rgba(220, 220, 220, 0.2);\n\n\t\t\timg {\n\t\t\t\tdisplay: block;\n\t\t\t\tmargin: 0;\n\t\t\t\tmax-height: 100%;\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translate(-50%,-50%);\n\t\t\t\tuser-select: none;\n\t\t\t}\n\n\t\t}\n\n\t\tspan.dashicons {\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\tleft: 50%;\n\t\t\ttransform: translate(-50%, -50%);\n\t\t\tfont-size: 25px;\n\t\t\twidth: 25px;\n\t\t\topacity: .2;\n\t\t}\n\t}\n\t\n\t.wpo_unused_image__input:checked + label,\n\t&.selected label {\n\t\tborder-color: $wp-blue;\n\t}\n\n\t&:focus-within label {\n\t\tbox-shadow: 0 0 4px $wp-blue;\n\t}\n\t\n\ta, a.button, a.button:active {\n\t\tposition: absolute;\n\t\tz-index: 2;\n\t\tbottom: 13px;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t\tdisplay: none;\n\t}\n\n\t&:hover {\n\n\t\ta, a.button, a.button:active {\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t}\n\n}\n\n#wpo_unused_images, #wpo_unused_images_trash, #wpo_smush_images_grid {\n\twidth: calc(100% + 8px);\n margin-left: -4px;\n margin-right: -4px;\n\tmax-height: 500px;\n\toverflow-y: auto;\n display: flex;\n\tflex-wrap: wrap;\n\tposition: relative;\n\n\t.wpo-fieldgroup {\n\t\twidth: 100%;\n\t\tmargin: 4px;\n\t}\n\n}\n\n#wpo_unused_images a, #wpo_unused_images_trash a {\n\toutline: none;\n}\n\n.wpo-unused-images__premium-mask,\n.wpo-unused-image-sizes__premium-mask {\n\tposition: absolute;\n\ttop: 0; \n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 1;\n\tbackground: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.85));\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.wpo-unused-image-sizes__premium-mask {\n\tbackground: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.85));\n}\n\na.wpo-unused-images__premium-link {\n\tbackground: #FFF;\n\tdisplay: inline-block;\n\tpadding: 10px;\n\tborder-radius: 3px;\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n}\n","/* More Plugins page */\n\n/* Plugins family / Premium */\n\np.wpo-plugin-installed {\n color: $success;\n}\n\n/* Settings repeater */\n\n.wpo-repeater__add {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tfont-weight: bold;\n\ttext-decoration: none;\n}\n\n\n/* Plugin familly tab */\n\n.wpo-plugin-family__premium h2 {\n margin: 0;\n padding: 25px;\n}\n\n.wpo-plugin-family__plugins {\n display: flex;\n flex-wrap: wrap;\n\tpadding-left: 1px;\n\tpadding-bottom: 1px;\n}\n\n.wpo-plugin-family__plugin {\n flex: auto;\n width: 100%;\n padding: 30px;\n box-sizing: border-box;\n border: 1px solid #E3E4E7;\n\tmargin-left: -1px;\n\tmargin-bottom: -1px;\n\n\t@media (min-width: $breakpoint-small) {\n\t\twidth: 50%;\n\n\t\t.wpo-plugin-family__free & {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t@media (max-width: 1080px) {\n\t\t.wpo-plugin-family__free & {\n\t\t\twidth: 50%;\n\t\t}\n\t}\n\n\t@media (max-width: $breakpoint-small) {\n\t\t.wpo-plugin-family__free & {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n}\n\ndiv#wp-optimize-nav-tab-wpo_mayalso-may_also-contents .wpo-tab-postbox {\n padding: 0;\n}\n\n/* Added for WPO Premium Features tab */\n.wpo_feature_cont {\n\twidth: 64.5%;\n}\n\n.wpo_plugin_family_cont {\n\twidth: 34.5%;\n}\n\n@media (max-width: 1080px) {\n\n\t.wpo_feature_cont,\n\t.wpo_plugin_family_cont {\n\t\twidth: 100%;\n\t\tfloat: none;\n\t\tmargin: 0;\n\t}\n\n}\n\n.wpo_feature_cont,\n.wpo_plugin_family_cont {\n\n\theader {\n\t\tpadding: 20px;\n\n\t\t@media (max-width: 1080px) {\n\t\t\tpadding: 40px;\t\t\n\t\t}\n\n\t\th2 {\n\t\t\tmargin: 0;\n\t\t}\n\t\n\t\tp {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t}\n\n}\n\n.wpo_feat_table, .wpo_feat_th, .wpo_feat_table td {\n\tborder: none;\n\tborder-collapse: collapse;\n\tbackground-color: white;\n\tfont-size: 120%;\n\ttext-align: center;\n}\n\n.wpo_feat_table {\n\ttd {\n\t\tborder: 1px solid #F1F1F1;\n\t\tborder-bottom-width: 4px;\n\t\tpadding: 15px;\n\t}\n\n\ttd:nth-child(2), td:nth-child(3) {\n\t\tbackground: rgba(241, 241, 241, 0.38);\n\t}\n\n\tp {\n\t\tpadding: 0px 10px;\n\t\tmargin: 5px 0px;\n\t\tfont-size: 13px;\n\t}\n\n\th4 {\n\t\tmargin: 5px 0px;\n\t}\n\n\t.dashicons {\n\t\twidth: 25px;\n\t\theight: 25px;\n\t\tfont-size: 25px;\n\t\tline-height: 1;\n\t}\n\n\t.dashicons-yes, .updraft-yes {\n\t\tcolor: green;\n\t}\n\t\n\t.dashicons-no-alt, .updraft-no {\n\t\tcolor: red;\n\t}\n\t\n\ttr.wpo-main-feature-row td {\n\t\tbackground: #f1f1f1;\n\t\tborder-bottom-color: #fafafa;\n\n\t\timg.wpo-premium-image {\n\t\t\twidth: 64px;\n\t\t}\n\t}\n}\n\n\n\n.wpo-premium-image {\n\tdisplay: none;\n}\n\n@media screen and (min-width: 720px) {\n\n\t#wpoptimize_table_list_filter {\n\t\twidth: 40%;\n\t}\n\n\t.wpo-premium-image {\n\t\tdisplay: block;\n\t\tfloat: left;\n\t\tpadding: 16px 18px;\n\t\twidth: 30px;\n\t\theight: auto;\n\t}\n\n}\n\n@media screen and (min-width: 1220px) {\n\n\t.wpo_feat_table td:nth-child(2), .wpo_feat_table td:nth-child(3) {\n\t\twidth: 110px;\n\t}\n\n}\n\n.other-plugin-title {\n\ttext-decoration: none;\n}\n\n@media screen and (max-width: $breakpoint-small) {\n\n\ttable.wpo_feat_table {\n\n\t\tdisplay: block;\n\n\t\ttr {\n\t\t\tdisplay: flex;\n\t\t\tflex-wrap: wrap;\n\t\t}\n\n\t\ttd {\n\t\t\tdisplay: block;\n\n\t\t\t&:first-child {\n\t\t\t\twidth: 100%;\n\t\t\t\tborder-bottom: none;\n\t\t\t}\n\n\t\t\t&:not(:first-child) {\n\t\t\t\twidth: 50%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\n\t\t\t&:first-child:empty {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t&[data-colname]::before {\n\t\t\t\tcontent: attr(data-colname);\n\t\t\t\tfont-size: 0.8rem;\n\t\t\t\tcolor: #CCC;\n\t\t\t\tline-height: 1;\n\t\t\t}\n\t\t}\n\t}\n\n}\n\n.wpo-cache-feature-image {\n\twidth: 40px;\n\tpadding: 16px 14px;\n}\n","\n/* tablesorter */\n\n#wp-optimize-wrap {\n\n\t.wp-list-table {\n\t\t\n\t\ttd {\n\t\t\tword-break: break-all; \n\t\t}\n\n\t}\n\n\t@media screen and (max-width: $breakpoint-small ) {\n\n\t\t.wp-list-table.wp-list-table-mobile-labels tbody {\n\n\t\t\t&, tr, th, td {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\tpadding: 3px 8px 3px 35%;\n\t\t\t\tword-break: break-word;\n\t\t\t\tbox-sizing: border-box; \n\n\t\t\t\t&::before {\n\t\t\t\t\tcolor: $wp-light-gray;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\t\t\n\n\t\t.wp-list-table.wp-list-table-mobile-labels thead {\n\n\t\t\t&, tr {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\tth.column-primary {\n\t\t\t\tdisplay: block;\n\t\t\t\tbox-sizing: border-box; \n\t\t\t}\n\n\t\t\tth:not(.column-primary) {\n\t\t\t\tdisplay: none !important; \n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tbody.rtl & {\n\t\t.wpo-table-list-filter {\n\t\t\ttext-align: left;\n\t\t}\n\t\t@media screen and (max-width: $breakpoint-small ) {\n\t\t\t.wp-list-table.wp-list-table-mobile-labels tbody {\n\t\t\t\ttd {\n\t\t\t\t\tpadding: 3px 35% 3px 8px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n.tablesorter-headerRow th {\n\tvertical-align: top;\n}\n\nth:not(.sorter-false) .tablesorter-header-inner {\n\n\tcolor: #0074ab;\n\n\t&::after {\n\t\tcontent: '';\n\t\tfont-family: 'dashicons';\n\t\tfont-size: 20px;\n\t\tline-height: 20px;\n\t\theight: 20px;\n\t\twidth: 20px;\n\t\tdisplay: none;\n\t\tvertical-align: bottom;\n\t}\n\n}\n\nth.tablesorter-header.tablesorter-headerAsc,\nth.tablesorter-header.tablesorter-headerDesc {\n font-weight: 500;\n border-bottom-color: $wp-blue;\n\t.tablesorter-header-inner::after {\n\t\tdisplay: inline-block;\n\t}\n}\n\nth.tablesorter-header.tablesorter-headerDesc .tablesorter-header-inner::after {\n content: \"\\f140\";\n}\n\nth.tablesorter-header.tablesorter-headerAsc .tablesorter-header-inner::after {\n content: \"\\f142\";\n}\n\nth.tablesorter-header:focus {\n outline: none;\n\tbox-shadow: 0 0 3px rgba(0, 116, 171, 0.78);\n\n\t&:not(.tablesorter-headerAsc):not(.tablesorter-headerDesc) .tablesorter-header-inner::after {\n\t\tcontent: \"\\f142\";\n\t\topacity: 0.5;\n\t}\n\n}\n\n.tablesorter.hasFilters tr.filtered {\n display: none;\n}\n",".wpo-text__dim {\n .dashicons-info {\n margin-top: 2px;\n margin-right: 5px;\n border-radius: 30px;\n background: #fff;\n color: $red;\n }\n}\n\n#wp-optimize-nav-tab-wpo_cache-advanced-contents {\n textarea {\n width: 100%;\n border-radius: 5px;\n height: 100px;\n min-height: 100px;\n margin-top: 10px;\n margin-bottom: 10px;\n }\n}\n\n#page_cache_length_value {\n height: 28px;\n position: relative;\n top: 2px;\n}\n\n#wp_optimize_preload_cache_status {\n margin-left: 10px;\n display: inline-block;\n color: #82868B;\n font-size: smaller;\n}\n\n.align-left {\n margin: 10px 10px 0px 0px;\n float: left;\n}\n\ntextarea.cache-settings {\n display: block;\n clear: both;\n min-height: 225px;\n overflow: scroll;\n min-width: 75%;\n margin: 10px 0px;\n}\n\n#wp-optimize-purge-cache, \n#wp-optimize-purge-cache ~ span, \n#wp-optimize-purge-cache ~ img {\n vertical-align: middle;\n top: auto;\n}\n\n#wp-optimize-nav-tab-wpo_cache-cache-contents .wpo-error {\n font-size: 12px;\n}\n\n\n#wpo_browser_cache_error_message {\n padding-top: 10px;\n padding-bottom: 10px;\n margin-left: 0;\n margin-bottom: 10px;\n \n &:empty {\n display: none;\n }\n}\n\n#wp-optimize-nav-tab-wpo_cache-advanced-contents,\n#wp-optimize-nav-tab-wpo_cache-preload-contents,\n#wp-optimize-nav-tab-wpo_cache-cache-contents {\n label {\n font-weight: 600;\n }\n}\n\n.wpo-gzip-already-enabled span.dashicons.dashicons-yes,\n.wpo-enabled > span.dashicons.dashicons-yes {\n font-size: 40px;\n width: 40px;\n height: 40px;\n line-height: 40px;\n vertical-align: middle;\n color: green;\n}\n"]}
|
|
|
css/wp-optimize-admin-3-0-18.min.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
| 1 |
+
.wpo_hidden{display:none !important}.wpo_info{background:#FFF;color:#444;font-family:-apple-system,"BlinkMacSystemFont","Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif;margin:2em auto;padding:1em 2em;max-width:700px;box-shadow:0 1px 3px rgba(0,0,0,0.13)}#wp-optimize-wrap .widefat thead th,#wp-optimize-wrap .widefat thead td{border-bottom:1px solid #e1e1e1}#wp-optimize-wrap .widefat td,#wp-optimize-wrap .widefat th{padding:8px 10px}.wpo_primary_big{padding:4px 6px !important;font-size:22px !important;min-height:34px;min-width:200px}.wpo_section{clear:both;padding:0;margin:0}.wp-optimize-settings{margin-bottom:16px}.wp-optimize-settings td>label{font-weight:bold;display:block;margin-bottom:8px}.wpo_col{display:block;float:left;margin:1% 0 1% 1%}.wpo_col:first-child{margin-left:0}.wpo_group:before,.wpo_group:after{content:"";display:table}.wpo_group:after{clear:both}.wpo_half_width{width:48%}.wpo_span_3_of_3{width:100%}.wpo_span_2_of_3{width:65.3%}.wpo_span_1_of_3{width:32.1%}#wp-optimize-wrap .nav-tab-wrapper{margin:0}@media screen and (min-width:549px){.show_on_default_sizes{display:block !important}.show_on_mobile_sizes{display:none !important}}@media screen and (max-width:548px){.show_on_default_sizes{display:none !important}.show_on_mobile_sizes{display:block !important}}@media screen and (max-width:768px){.wpo_col{margin:1% 0}.wpo_span_3_of_3{width:100%}.wpo_span_2_of_3{width:100%}.wpo_span_1_of_3{width:100%}.wpo_half_width{width:100%}}.wp-optimize-setting-is-sensitive td>label::before{content:"\f534";font-family:'dashicons';display:inline-block;margin-right:6px;font-style:normal;line-height:1;vertical-align:middle;width:20px;font-size:18px;height:20px;text-align:center;color:#72777c}.wpo-run-optimizations__container{margin-bottom:15px}.wp-optimize-optimizations-table-placeholder{min-height:80px}td.wp-optimize-settings-optimization-checkbox{width:18px;padding-left:4px;padding-right:0}.wp-optimize-settings-optimization-checkbox input{margin:0;padding:0}#retention-period{width:60px}.wp-optimize-settings-optimization-info{font-size:80%;font-style:italic}img.addons{display:block;margin-left:auto;margin-right:auto;margin-bottom:20px;max-height:44px;height:auto;max-width:100%}.wpo_spinner{width:18px;height:18px;padding-left:10px;display:none;position:relative;top:4px}.optimization_spinner{width:20px;height:20px}#wp-optimize-auto-options{margin:20px 0 0 28px}.display-none{display:none}.visibility-hidden{visibility:hidden}.margin-one-percent{margin:1%}#save_done,.save-done{color:#d94f00;font-size:220% !important}.wp-optimize-settings-optimization-info a{text-decoration:underline}.wp-optimize-settings-optimization-run-spinner{position:relative;top:2px}@media screen and (min-width:782px){td.wp-optimize-settings-optimization-run{width:180px;padding-top:16px}}#wpoptimize_table_list .tablesorter-filter-row{display:none !important}#wpoptimize_table_list .optimization_spinner{position:relative;top:2px;left:5px}#wpoptimize_table_list .optimization_spinner.visibility-hidden{display:none}#wpoptimize_table_list_filter{width:100%;margin-bottom:15px}#wpoptimize_table_list_tables_not_found{display:none;margin:20px 0}div#wpoptimize_table_list_tables_not_found+h3{margin-top:30px}#wpoptimize_table_list tr th:first-child,#wpoptimize_table_list tr td:first-child{display:none}#optimize_form .select2-container,#wp-optimize-auto-options .select2-container{width:50% !important;top:-5px;height:40px;margin-left:10px}#wpoptimize_table_list .optimization_done_icon{color:#009b24;font-size:200%;display:inline-block;position:relative}#wpo_sitelist_show_moreoptions_cron{font-size:13px;line-height:1.5;letter-spacing:1px}#wp-optimize-nav-tab-contents-images .wpo_span_2_of_3 h3{display:inline-block}.wpo_remove_selected_sizes_btn__container{margin-top:20px}.unused-image-sizes__label{display:block;line-height:1.6}@media(max-width:782px){.unused-image-sizes__label{margin-left:30px;margin-bottom:15px;line-height:1;word-break:break-word}.unused-image-sizes__label input[type=checkbox]{margin-left:-30px}body.rtl .unused-image-sizes__label{margin-right:30px;margin-left:0}body.rtl .unused-image-sizes__label input[type=checkbox]{margin-left:4px;margin-right:-30px}}#wp-optimize-nav-tab-contents-tables a{vertical-align:middle}#wpo_sitelist_moreoptions,#wpo_sitelist_moreoptions_cron{margin:4px 16px 6px 0;border:1px dotted;padding:6px 10px;max-height:300px;overflow-y:scroll;overflow-x:hidden}#wpo_sitelist_moreoptions{max-height:150px;margin-right:0}#wpo_settings_sites_list li,#wpo_settings_sites_list li a{font-size:13px;line-height:1.5}#wpo_sitelist_moreoptions_cron li{padding-left:20px}#wpo_import_error_message{display:none;color:#9b0000}#wpo_import_success_message{display:none;color:#46b450}#wp-optimize-logging-options{margin-top:10px}.wpo_logging_header{font-weight:bold;border-top:1px solid #333;border-bottom:1px solid #333;padding:5px 0;margin:0}.wpo_logging_row{border-bottom:1px solid #a1a2a3;padding:5px 0}.wpo_logging_logger_title,.wpo_logging_options_title,.wpo_logging_status_title,.wpo_logging_actions_title,.wpo_logging_logger_row,.wpo_logging_options_row,.wpo_logging_status_row,.wpo_logging_actions_row{display:inline-block;vertical-align:middle}.wpo_logging_logger_title,.wpo_logging_logger_row{width:38%}.wpo_logging_options_title,.wpo_logging_options_row{width:44%}.wpo_logging_status_title,.wpo_logging_status_row{width:8%}.wpo_logging_actions_title,.wpo_logging_actions_row{width:7%}.wpo_logging_actions_row{text-align:right}.wpo_logging_options_row{word-wrap:break-word}.wpo_logging_actions_row .dashicons-no-alt,.wpo_add_logger_form .dashicons-no-alt{background-color:#f06666;color:#FFF;width:20px;height:20px;border-radius:20px;display:inline-block;cursor:pointer;margin-left:5px}.wpo_add_logger_form .dashicons-no-alt{margin-top:12px;margin-right:10px;float:right}.wpo_logger_type{width:90%;margin-top:10px}.wpo_logger_addition_option{width:100%;margin-top:5px}.wpo_alert_notice{background-color:#f06666;color:#FFF;padding:5px;display:block;margin-bottom:5px;border-radius:5px}.wpo_error_field{border-color:#f06666 !important}.save_settings_reminder{display:none;color:#333;padding:15px 20px;background-color:#f0a5a4;border-radius:3px;margin:15px 0}#wpo_remove_selected_sizes{margin-top:20px}.wpo_unused_images_buttons_wrap{float:right;margin-right:20px}.wpo_unused_images_container h3{min-width:150px}#wpo_unused_images,#wpo_smush_images_grid{max-height:500px;overflow-y:auto}#wpo_unused_images a{outline:0}#wp-optimize-nav-tab-wpo_database-tables-contents .wpo-take-a-backup{margin-left:1%}.run-single-table-delete{margin-top:3px}#wpo_browser_cache_output,#wpo_gzip_compression_output,#wpo_advanced_cache_output{background:#f0f0f0;padding:10px;border:1px solid #CCC;white-space:pre-wrap}#wpo_gzip_compression_error_message,.wpo-error{color:#9b0000}.notice.wpo-error__enabling-cache{white-space:pre;margin-bottom:15px}a.loading.wpo-refresh-gzip-status{color:rgba(68,68,68,0.5);text-decoration:none}a.loading.wpo-refresh-gzip-status img.wpo_spinner.display-none{display:inline-block}#wpo_browser_cache_expire_days,#wpo_browser_cache_expire_hours{width:50px}.wpo-enabled .wpo-disabled{display:none}.wpo-disabled .wpo-enabled{display:none}.wpo-button-wrap{margin-top:10px}body[class*="toplevel_page_WP-Optimize"] #wpbody,body[class*="wp-optimize_page_"] #wpbody{padding-right:15px}@media screen and (max-width:768px){body[class*="toplevel_page_WP-Optimize"] #wpbody,body[class*="wp-optimize_page_"] #wpbody{padding-right:0}}body.toplevel_page_WP-Optimize.rtl #wpbody{padding-left:15px;padding-right:0}@media screen and (max-width:768px){body.toplevel_page_WP-Optimize.rtl #wpbody{padding-left:10px}}body[class*="toplevel_page_WP-Optimize"] #wpbody-content,body[class*="wp-optimize_page_"] #wpbody-content{padding-top:80px}@media(max-width:600px){body[class*="toplevel_page_WP-Optimize"] #wpbody-content,body[class*="wp-optimize_page_"] #wpbody-content{padding-top:0}}@media(min-width:820px){body[class*="toplevel_page_WP-Optimize"] #wpbody-content,body[class*="wp-optimize_page_"] #wpbody-content{padding-top:100px}}#wp-optimize-wrap{position:relative;padding-top:20px}@media(max-width:600px){#wp-optimize-wrap{padding-top:110px}}@media(max-width:782px){#wp-optimize-wrap{margin-right:0}}.wpo-main-header{height:77px;position:fixed;top:32px;left:160px;background:#FFF;right:0;z-index:9980}@media(min-width:820px){.wpo-main-header{height:105px}}.wpo-main-header .wpo-logo__container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;position:relative;height:100%;line-height:1;font-size:1rem;padding-left:50px;margin-left:10px}.wpo-main-header .wpo-logo{position:absolute;left:0;top:50%;transform:translateY(-50%);width:50px}.wpo-main-header .wpo-subheader{margin:0;font-weight:300;color:#72777c;line-height:1.3}@media(max-width:1080px){.wpo-main-header .wpo-subheader{display:none}}.wpo-main-header p.wpo-header-links{margin:0;font-size:.7rem;position:absolute;right:0;padding:6px 15px;background:#edeeef;border-bottom-left-radius:5px;z-index:1}.wpo-main-header p.wpo-header-links a{text-decoration:none}.wpo-main-header p.wpo-header-links .wpo-header-links__label{color:#82868b;position:absolute;right:100%;width:110px;text-align:right;padding-right:10px}@media(max-width:820px){.wpo-main-header p.wpo-header-links{display:none}}.wpo-main-header p.wpo-header-links__mobile{padding:10px;background:#edeeef;margin-bottom:0}@media(min-width:820px){.wpo-main-header p.wpo-header-links__mobile{display:none}}.wpo-main-header p.wpo-header-links__mobile a{display:inline-block;padding:4px;font-size:.8rem}.wpo-main-header p.wpo-header-links__mobile .wpo-header-links__label{color:#82868b}@media(max-width:600px){.wpo-main-header .wpo-logo__container strong{width:140px;display:inline-block}}@media(max-width:960px){body.auto-fold .wpo-main-header{left:36px}}@media(max-width:782px){body.auto-fold .wpo-main-header{left:0;top:46px}}@media(max-width:600px){body.auto-fold .wpo-main-header{position:absolute;left:-10px;right:-10px;top:10px}}@media(max-width:600px){body.auto-fold #screen-meta+#wp-optimize-wrap .wpo-main-header{top:0}}@media(min-width:782px){body.folded .wpo-main-header{left:36px}}body.is-scrolled .wpo-main-header{box-shadow:0 5px 25px rgba(0,0,0,0.17)}body.rtl .wpo-main-header{right:160px;left:0}body.rtl .wpo-main-header .wpo-logo__container{padding-left:10px;padding-right:50px;margin-left:0;margin-right:10px}body.rtl .wpo-main-header .wpo-logo{position:absolute;left:auto;right:0}body.rtl .wpo-main-header p.wpo-header-links{right:auto;left:0;border-bottom-right-radius:5px;border-bottom-left-radius:0}body.rtl .wpo-main-header p.wpo-header-links .wpo-header-links__label{position:absolute;left:100%;right:auto;width:110px;text-align:left;padding-left:10px}@media(max-width:960px){body.rtl.auto-fold .wpo-main-header{right:36px}}@media(max-width:782px){body.rtl.auto-fold .wpo-main-header{right:0;top:46px}}@media(max-width:600px){body.rtl.auto-fold .wpo-main-header{position:absolute;left:-10px;right:-10px;top:10px}}@media(min-width:782px){body.rtl.folded .wpo-main-header{right:36px;left:0}}body.rtl .wpo-page{padding-right:0}@media(min-width:769px){}.wpo-page:not(.active){display:none}.wpo-introduction-notice{padding:15px 20px;margin-top:30px;margin-bottom:30px;background:#FFF url('../images/notices/logo-bg-notice.png') no-repeat 100% 100%}.wpo-introduction-notice h3{font-size:2em}.wpo-introduction-notice p:not(.font-size__normal){font-size:1.2em}.wpo-introduction-notice .wpo-introduction-notice__footer-links{padding-top:20px}.wpo-introduction-notice .wpo-introduction-notice__footer-links>a,.wpo-introduction-notice .wpo-introduction-notice__footer-links>span{display:inline-block;margin-left:5px;margin-right:5px}@media(min-width:1200px){.wpo-tab-postbox.right-col{width:350px;float:right;box-sizing:border-box;margin-top:3.1rem}.right-col+.wpo-main{float:left;box-sizing:border-box;width:calc(100% - 380px)}}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@media(max-width:782px){#wp-optimize-wrap .button-large{display:block;width:100%}}#wp-optimize-wrap .red{color:#e07575}#wp-optimize-wrap div[id*="_notice"] div.updated,#wp-optimize-wrap>.notice{margin-left:0;margin-right:0}#wp-optimize-wrap textarea{width:100%;border-radius:5px;height:100px;min-height:100px;margin-top:10px;margin-bottom:10px}.notice.notice-error.wpo-warning,.notice.notice-warning.wpo-warning{margin-bottom:18px}.notice.notice-warning.wpo-warning p{padding-left:36px;position:relative}.notice.notice-warning.wpo-warning p>.dashicons{position:absolute;left:0;font-size:26px;top:50%;transform:translateY(-50%);height:26px;color:#ffb900}.button.button-block{display:block;width:100%;text-align:center}.wpo-refresh-button{float:right}.wpo-refresh-button:hover{cursor:pointer}.wpo-refresh-button .dashicons{text-decoration:none;line-height:inherit;font-size:inherit}*[class*="wpo-badge"]{display:inline-block;font-size:.8em;text-transform:uppercase;background:#f2f4f5;padding:3px 5px;line-height:1;border-radius:3px}.wpo-badge__new{background:#dbe3e6;color:#00689a}.wpo-first-child{margin-top:0}#save_done,.save-done{color:#009b24;font-size:250%}p.wpo-take-a-backup{display:inline-block;margin:0;line-height:1;padding-top:8px}@media(min-width:782px){.button ~ p.wpo-take-a-backup{margin-left:20px}}#wp-optimize-wrap .nav-tab-wrapper ~ .wp-optimize-nav-tab-contents>.postbox{border:0}#wp-optimize-wrap .nav-tab-wrapper ~ .wp-optimize-nav-tab-contents>.postbox>h3:first-child{margin-top:0}.wpo-p25,.postbox.wpo-tab-postbox{padding:25px}.wpo-tab-postbox>h3:first-child{margin-top:0}.wpo-fieldgroup{background:#f2f4f5;border-radius:8px;padding:20px}.wpo-fieldgroup:not(:last-child){margin-bottom:2em}.wpo-fieldgroup>*:first-child{margin-top:0}.wpo-fieldgroup>*:last-child{margin-bottom:0}.wpo-fieldgroup.premium-only{position:relative}.wpo-fieldgroup .switch+label{font-weight:600}.wpo-fieldgroup code{font-size:inherit;background:#d8dbdc;border-radius:3px}.wpo-fieldgroup fieldset label{display:block;margin-bottom:6px}.wpo-fieldgroup__subgroup:not(:last-of-type){margin-bottom:20px}#wp-optimize-wrap .switch{position:relative;display:inline-block;width:38px;height:18px;margin-right:6px;box-sizing:border-box}#wp-optimize-wrap .switch input{opacity:0;width:0;height:0}#wp-optimize-wrap .switch .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#f2f4f5;transition:.2s}#wp-optimize-wrap .switch .slider::before{position:absolute;content:"";height:8px;width:8px;left:2px;bottom:2px;background-color:#555d66;border:1px solid #555d66;transition:all .2s}#wp-optimize-wrap .switch .slider::after{content:'';display:block;position:absolute;height:4px;width:3px;right:4px;top:4px;border-radius:50%;border:1px solid #72777c;box-sizing:content-box}#wp-optimize-wrap .switch .slider.round{border-radius:23px;border:2px solid #555d66}#wp-optimize-wrap .switch .slider.round::before{border-radius:50%}#wp-optimize-wrap .switch input:checked+.slider{background:#0272aa;border-color:#0272aa}#wp-optimize-wrap .switch input:checked+.slider::before{background:#FFF;border-color:#FFF;transform:translateX(20px)}#wp-optimize-wrap .switch input:checked+.slider::after{content:'';display:block;position:absolute;height:6px;width:2px;left:7px;top:4px;background:#FFF;border:0}#wp-optimize-wrap .switch input:disabled+.slider,#wp-optimize-wrap .switch input:disabled:checked+.slider{background:#555d66;border-color:#555d66;opacity:.3}#wp-optimize-wrap .switch input:focus+.slider{box-shadow:0 0 0 2px #f2f4f5,0 0 0 3px #555d66}#wp-optimize-wrap .switch-container{display:block;clear:both}#wp-optimize-wrap .switch-container label{line-height:1;vertical-align:middle}#wp-optimize-wrap .switch-container+small{margin-left:49px}#wp-optimize-wrap .switch-container [data-tooltip] .dashicons{transform:translateY(-3px)}#wp-optimize-wrap .wpo-fieldgroup>.switch-container:first-child{padding-top:0}label.wpo-label__bold{font-weight:600}.wpo-info{position:relative;display:inline-block}@media(max-width:480px){.wpo-info{display:block}}.wpo-info__content{opacity:0;visibility:hidden;position:absolute;top:100%;left:-25px;background:#FFF;padding:20px;width:380px;max-width:380px;z-index:5;box-shadow:0 11px 25px 0 rgba(0,0,0,0),0 11px 25px 3000px rgba(0,0,0,0);transition:.2s all}@media(max-width:480px){.wpo-info__content{width:auto}}span.wpo-info__close{display:none;margin-left:20px;color:#444}.wpo-info.opened span.wpo-info__close{display:inline-block}.wpo-info.opened .wpo-info__content{opacity:1;visibility:visible;box-shadow:0 11px 25px 0 rgba(0,0,0,0.3),0 11px 25px 3000px rgba(0,0,0,0.3)}.wpo-info.opened a.wpo-info__trigger{z-index:6}.wpo-info__content img,.wpo-info__content iframe{max-width:100%}a.wpo-info__trigger{display:inline-block;text-decoration:none;padding:10px;position:relative;background:#FFF;margin-left:-10px}a.wpo-info__trigger span.dashicons{text-decoration:none;vertical-align:middle}.wpo_section.wpo_group.wpo-feature-is-disabled>*:not(.wpo-show){opacity:.5}.wpo_shade{display:block;position:absolute;left:0;right:0;top:0;bottom:0;width:100%;height:100%;z-index:9979;opacity:1;background-color:rgba(255,255,255,0.88)}.wpo_shade.hidden{display:none}.wpo_shade_inner{text-align:center;padding-top:80px}.wpo_shade_inner h4{font-size:2em}.wpo_shade_inner .dashicons.dashicons-update-alt{font-size:50px;height:50px;width:50px}.wpo-rotate{animation:rotate 1s linear infinite;transform-origin:50% 50%}#wp-optimize-wrap h2.nav-tab-wrapper{margin-bottom:0;border-bottom:0;position:relative}#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:hover,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:focus,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:focus:active{border:0;background:transparent;margin:0;border-top:3px solid transparent;padding:7px 15px;color:#0272aa}#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:hover .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:focus .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:focus:active .dashicons{display:block;margin:0 auto;color:#72777c;font-size:30px;width:30px;height:30px}#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab span.premium-only,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:hover span.premium-only,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:focus span.premium-only,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab:focus:active span.premium-only{display:inline-block;margin-left:6px;padding:4px;font-size:10px;background:#0272aa;line-height:1;border-radius:3px;color:#FFF;font-weight:300;text-transform:uppercase;letter-spacing:.06em}#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active:hover,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active:focus,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active:focus:active{background:#FFF;box-shadow:0 0 1px rgba(0,0,0,0.04);border-top-color:#0272aa}#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active:hover .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active:focus .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .nav-tab-active:focus:active .dashicons{color:#0272aa}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback{display:block;float:right;position:relative}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab,#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab:hover,#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab:focus,#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab:focus:active{position:relative}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab:hover .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab:focus .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>.nav-tab:focus:active .dashicons{display:inline-block;font-size:20px;height:18px;transform:translateY(4px)}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback>div{display:none}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback:hover a.nav-tab::after{content:'';display:block;position:absolute;bottom:0;right:0;height:2px;width:100%;background-color:#0172aa}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback:hover>div{position:absolute;display:block;background:#FFF;padding:15px;right:0;top:100%;z-index:4;box-shadow:0 11px 25px 0 rgba(0,0,0,0.1);width:350px}#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback:hover>div a{display:block;font-size:14px;font-weight:normal;padding:6px 3px;text-align:center}@media(max-width:782px){#wp-optimize-wrap h2.nav-tab-wrapper .wpo-feedback{display:none}#wp-optimize-wrap h2.nav-tab-wrapper a:not(.nav-tab-active){display:none}}#wp-optimize-wrap h2.nav-tab-wrapper a[role="toggle-menu"]{display:block;float:right}@media(min-width:782px){#wp-optimize-wrap h2.nav-tab-wrapper a[role="toggle-menu"]{display:none}}#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back,#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active{text-align:right}#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active .dashicons{color:#b5b9be;font-size:18px;display:inline-block;height:auto;line-height:inherit;width:20px}@media(min-width:782px){#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back,#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active{position:absolute;bottom:14px;right:0;font-size:12px;font-weight:400;text-decoration:none;padding:0}#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back .dashicons,#wp-optimize-wrap h2.nav-tab-wrapper a.nav-tab.wp-optimize-nav-tab__back:focus:active .dashicons{color:#b5b9be;font-size:18px;display:inline-block;height:auto;line-height:inherit;width:20px}}@media(max-width:782px){.wpo-mobile-menu-opened .wpo-main .wpo-tab-postbox{// display:none}.wpo-mobile-menu-opened h2.nav-tab-wrapper a{display:block;float:none}.wpo-mobile-menu-opened h2.nav-tab-wrapper a.nav-tab{display:block !important}.wpo-mobile-menu-opened h2.nav-tab-wrapper a:not(.nav-tab-active){background:#f9f9f9 !important}.wpo-mobile-menu-opened h2.nav-tab-wrapper a.nav-tab-active,.wpo-mobile-menu-opened h2.nav-tab-wrapper a.nav-tab-active:focus{border-top:0;border-left:3px solid}.wpo-mobile-menu-opened h2.nav-tab-wrapper a.nav-tab-active .dashicons,.wpo-mobile-menu-opened h2.nav-tab-wrapper a.nav-tab-active:focus .dashicons,.wpo-mobile-menu-opened h2.nav-tab-wrapper a:focus .dashicons,.wpo-mobile-menu-opened h2.nav-tab-wrapper a:hover .dashicons,.wpo-mobile-menu-opened h2.nav-tab-wrapper a .dashicons{display:inline-block;line-height:inherit}.wpo-mobile-menu-opened h2.nav-tab-wrapper a[role="toggle-menu"]{display:none}}.wpo-pages-menu{position:absolute;bottom:0;right:0;display:none}@media(max-width:820px){.opened+.wpo-pages-menu{display:block;box-shadow:0 5px 25px rgba(0,0,0,0.17)}}@media(min-width:821px){.wpo-pages-menu{display:-ms-flexbox;display:flex;height:77px}}.wpo-pages-menu>a{text-decoration:none;position:relative;color:inherit;text-align:center;box-sizing:border-box;display:block;color:#555d66}@media(min-width:821px){.wpo-pages-menu>a{padding:0 8px;height:77px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center}.wpo-pages-menu>a>span{display:block;margin:0 auto}}@media(max-width:820px){.wpo-pages-menu>a{padding:15px;font-size:1.2em}}.wpo-pages-menu>a.active::after{content:'';display:block;position:absolute;bottom:0;left:0;width:100%;height:3px;background:#e46b1f;color:#191e23}@media(max-width:820px){.wpo-pages-menu>a.active::after{width:3px;height:100%}}@media(max-width:820px){.wpo-pages-menu>a.active{color:#e46b1f}}.wpo-pages-menu>a:hover{background:#f9f9f9;color:#191e23}.wpo-pages-menu span.separator{display:block;width:2px;background:#efefef;margin-top:18px;margin-bottom:18px;margin-right:5px;margin-left:5px}@media(max-width:820px){.wpo-pages-menu span.separator{width:80%;height:2px;margin:10px 10%}}@media(max-width:820px){.wpo-pages-menu{text-align:center;top:100%;width:100%;bottom:auto;background:#FFF}}body.rtl .wpo-pages-menu{left:0;right:auto}#wp-optimize-nav-page-menu{position:absolute;right:0;bottom:0;display:-ms-flexbox;display:flex;height:77px;-ms-flex-direction:column;flex-direction:column;padding:0 20px;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;text-decoration:none}#wp-optimize-nav-page-menu:not(.opened) .dashicons-no-alt{display:none}#wp-optimize-nav-page-menu.opened .dashicons-menu{display:none}@media(min-width:821px){#wp-optimize-nav-page-menu{display:none}}body.rtl #wp-optimize-nav-page-menu{right:auto;left:0}.wpo-dashboard-pages-menu{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.wpo-dashboard-pages-menu[data-itemscount="1"] .wpo-dashboard-pages-menu__item,.wpo-dashboard-pages-menu[data-itemscount="2"] .wpo-dashboard-pages-menu__item,.wpo-dashboard-pages-menu[data-itemscount="3"] .wpo-dashboard-pages-menu__item{width:calc(33.333% - 13.33333px)}.wpo-dashboard-pages-menu[data-itemscount="4"] .wpo-dashboard-pages-menu__item{width:calc(25% - 15px)}.wpo-dashboard-pages-menu[data-itemscount="5"] .wpo-dashboard-pages-menu__item{width:calc(20% - 16px)}.wpo-dashboard-pages-menu[data-itemscount="6"] .wpo-dashboard-pages-menu__item{width:calc(16.66667% - 16.66667px)}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item{padding:20px;margin-right:20px;box-sizing:border-box;padding-bottom:60px;min-width:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item:last-child{margin-right:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item h3{margin-top:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item h3 .dashicons{color:#72777c;line-height:1;height:18px;margin-top:-2px;margin-right:10px}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item a{position:absolute;bottom:20px;left:20px;width:calc(100% - 40px) !important}@media(max-width:782px){.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item{width:100%;margin-right:0;padding-bottom:20px}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item a.button.button-large{width:auto !important;left:auto;bottom:auto;top:50%;transform:translateY(-50%);right:20px}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item h3{margin:0}.wpo-dashboard-pages-menu .postbox.wpo-dashboard-pages-menu__item p{display:none}}#wpadminbar .quicklinks .menupop.hover ul li.separator .ab-item.ab-empty-item{height:2px;line-height:2px;background:rgba(255,255,255,0.0902);margin:5px 10px;width:auto;min-width:0}.updraft-ad-container.updated,.updraft-ad-container{margin-left:0;margin-right:0;position:relative;padding-right:80px}body[class*=WP-Optimize] .notice,body[class*=WP-Optimize] .error,body[class*=wp-optimize] .notice,body[class*=wp-optimize] .error{margin-left:0;margin-right:0}body.wp-core-ui.is-scrolled .wpo-main-error-notice{position:fixed;top:132px;left:160px;right:0;z-index:20;transition:.2s all}div#wpbody-content>.notice:not(.wpo-notice),div#wpbody-content>.warning:not(.wpo-notice),div#wpbody-content>.updated:not(.wpo-notice),div#wpbody-content>.error:not(.wpo-notice){display:none}.toplevel_page_WP-Optimize.rtl .notice,.toplevel_page_WP-Optimize.rtl div.updated,.toplevel_page_WP-Optimize.rtl div.error,.toplevel_page_WP-Optimize .notice,.toplevel_page_WP-Optimize div.updated,.toplevel_page_WP-Optimize div.error{margin-right:0}body.rtl .updraft-ad-container.updated,body.rtl .updraft-ad-container{padding-right:10px;padding-left:80px}.updraft_notice_container{padding:7px;display:-ms-flexbox;display:flex;-ms-flex-align:left;align-items:left;-ms-flex-direction:column;flex-direction:column;height:auto;overflow:hidden}.updraft_advert_content_left{float:none;width:65px}.updraft_advert_content_right{float:none;width:auto;overflow:hidden}.updraft_advert_bottom{margin:10px 0;padding:10px;font-size:140%;background-color:#FFF;border-color:#e6db55;border:1px solid;border-radius:4px}.updraft-advert-dismiss{position:absolute;font-size:13px;top:5px;right:10px}body.rtl .updraft-advert-dismiss{left:10px;right:auto}h3.updraft_advert_heading{margin-top:5px !important;margin-bottom:5px !important}h4.updraft_advert_heading{margin-top:2px !important;margin-bottom:3px !important}.updraft_center_content{text-align:center;margin-bottom:5px}.updraft_notice_link{padding-left:5px}.updraft_text_center{text-align:center}.wpo-main-header+.updraft-ad-container,.wpo-main-header+.updated{margin-bottom:20px}@media screen and (min-width:560px){.updraft_notice_container{-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center}}@media screen and (max-width:560px){body.rtl .updraft-ad-container.updated,body.rtl .updraft-ad-container{padding-right:10px;padding-left:10px}}@media screen and (max-width:768px){.wpo-main-header+.updraft-ad-container,.wpo-main-header+.updated{margin-right:0}}.wpo_unused_image,.wpo_smush_image{position:relative;margin:4px;width:calc(50% - 8px);text-align:center}@media(min-width:500px){.wpo_unused_image,.wpo_smush_image{width:calc(25% - 8px)}}@media(min-width:782px){.wpo_unused_image,.wpo_smush_image{width:calc(16.6666% - 8px)}}@media(min-width:1100px){.wpo_unused_image,.wpo_smush_image{width:calc(12.5% - 8px)}}.wpo_unused_image .wpo_unused_image__input,.wpo_smush_image .wpo_unused_image__input{position:absolute;top:10px;opacity:0;width:0;height:0}.wpo_unused_image label,.wpo_smush_image label{display:block;width:100%;position:relative;padding:1px;border:3px solid #f2f4f5;box-sizing:border-box}.wpo_unused_image label::before,.wpo_smush_image label::before{content:"";display:block;padding-top:100%}.wpo_unused_image label .thumbnail,.wpo_smush_image label .thumbnail{position:absolute;top:1px;left:1px;width:calc(100% - 2px);height:calc(100% - 2px);background-repeat:no-repeat;background-size:cover;background-position:50% 50%;overflow:hidden;background:rgba(220,220,220,0.2)}.wpo_unused_image label .thumbnail img,.wpo_smush_image label .thumbnail img{display:block;margin:0;max-height:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-user-select:none;-ms-user-select:none;user-select:none}.wpo_unused_image label span.dashicons,.wpo_smush_image label span.dashicons{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:25px;width:25px;opacity:.2}.wpo_unused_image .wpo_unused_image__input:checked+label,.wpo_unused_image.selected label,.wpo_smush_image .wpo_unused_image__input:checked+label,.wpo_smush_image.selected label{border-color:#0272aa}.wpo_unused_image:focus-within label,.wpo_smush_image:focus-within label{box-shadow:0 0 4px #0272aa}.wpo_unused_image a,.wpo_unused_image a.button,.wpo_unused_image a.button:active,.wpo_smush_image a,.wpo_smush_image a.button,.wpo_smush_image a.button:active{position:absolute;z-index:2;bottom:13px;left:50%;transform:translateX(-50%);display:none}.wpo_unused_image:hover a,.wpo_unused_image:hover a.button,.wpo_unused_image:hover a.button:active,.wpo_smush_image:hover a,.wpo_smush_image:hover a.button,.wpo_smush_image:hover a.button:active{display:inline-block}#wpo_unused_images,#wpo_unused_images_trash,#wpo_smush_images_grid{width:calc(100% + 8px);margin-left:-4px;margin-right:-4px;max-height:500px;overflow-y:auto;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;position:relative}#wpo_unused_images .wpo-fieldgroup,#wpo_unused_images_trash .wpo-fieldgroup,#wpo_smush_images_grid .wpo-fieldgroup{width:100%;margin:4px}#wpo_unused_images a,#wpo_unused_images_trash a{outline:0}.wpo-unused-images__premium-mask,.wpo-unused-image-sizes__premium-mask{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;background:linear-gradient(to bottom,rgba(255,255,255,0),rgba(255,255,255,0.85));display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.wpo-unused-image-sizes__premium-mask{background:linear-gradient(to bottom,rgba(255,255,255,0.3),rgba(255,255,255,0.85))}a.wpo-unused-images__premium-link{background:#FFF;display:inline-block;padding:10px;border-radius:3px;box-shadow:0 2px 8px rgba(0,0,0,0.3)}p.wpo-plugin-installed{color:#009b24}.wpo-repeater__add{display:inline-block;cursor:pointer;font-weight:bold;text-decoration:none}.wpo-plugin-family__premium h2{margin:0;padding:25px}.wpo-plugin-family__plugins{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:1px;padding-bottom:1px}.wpo-plugin-family__plugin{-ms-flex:auto;flex:auto;width:100%;padding:30px;box-sizing:border-box;border:1px solid #e3e4e7;margin-left:-1px;margin-bottom:-1px}@media(min-width:782px){.wpo-plugin-family__plugin{width:50%}.wpo-plugin-family__free .wpo-plugin-family__plugin{width:100%}}@media(max-width:1080px){.wpo-plugin-family__free .wpo-plugin-family__plugin{width:50%}}@media(max-width:782px){.wpo-plugin-family__free .wpo-plugin-family__plugin{width:100%}}div#wp-optimize-nav-tab-wpo_mayalso-may_also-contents .wpo-tab-postbox{padding:0}.wpo_feature_cont{width:64.5%}.wpo_plugin_family_cont{width:34.5%}@media(max-width:1080px){.wpo_feature_cont,.wpo_plugin_family_cont{width:100%;float:none;margin:0}}.wpo_feature_cont header,.wpo_plugin_family_cont header{padding:20px}@media(max-width:1080px){.wpo_feature_cont header,.wpo_plugin_family_cont header{padding:40px}}.wpo_feature_cont header h2,.wpo_plugin_family_cont header h2{margin:0}.wpo_feature_cont header p,.wpo_plugin_family_cont header p{margin-bottom:0}.wpo_feat_table,.wpo_feat_th,.wpo_feat_table td{border:0;border-collapse:collapse;background-color:white;font-size:120%;text-align:center}.wpo_feat_table td{border:1px solid #f1f1f1;border-bottom-width:4px;padding:15px}.wpo_feat_table td:nth-child(2),.wpo_feat_table td:nth-child(3){background:rgba(241,241,241,0.38)}.wpo_feat_table p{padding:0 10px;margin:5px 0;font-size:13px}.wpo_feat_table h4{margin:5px 0}.wpo_feat_table .dashicons{width:25px;height:25px;font-size:25px;line-height:1}.wpo_feat_table .dashicons-yes,.wpo_feat_table .updraft-yes{color:green}.wpo_feat_table .dashicons-no-alt,.wpo_feat_table .updraft-no{color:red}.wpo_feat_table tr.wpo-main-feature-row td{background:#f1f1f1;border-bottom-color:#fafafa}.wpo_feat_table tr.wpo-main-feature-row td img.wpo-premium-image{width:64px}.wpo-premium-image{display:none}@media screen and (min-width:720px){#wpoptimize_table_list_filter{width:40%}.wpo-premium-image{display:block;float:left;padding:16px 18px;width:30px;height:auto}}@media screen and (min-width:1220px){.wpo_feat_table td:nth-child(2),.wpo_feat_table td:nth-child(3){width:110px}}.other-plugin-title{text-decoration:none}@media screen and (max-width:782px){table.wpo_feat_table{display:block}table.wpo_feat_table tr{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}table.wpo_feat_table td{display:block}table.wpo_feat_table td:first-child{width:100%;border-bottom:0}table.wpo_feat_table td:not(:first-child){width:50%;box-sizing:border-box}table.wpo_feat_table td:first-child:empty{display:none}table.wpo_feat_table td[data-colname]::before{content:attr(data-colname);font-size:.8rem;color:#CCC;line-height:1}}.wpo-cache-feature-image{width:40px;padding:16px 14px}#wp-optimize-wrap .wp-list-table td{word-break:break-all}@media screen and (max-width:782px){#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody tr,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody th,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td{display:block}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td{padding:3px 8px 3px 35%;word-break:break-word;box-sizing:border-box}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td::before{color:#b5b9be}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead,#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead tr{display:block}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead th.column-primary{display:block;box-sizing:border-box}#wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels thead th:not(.column-primary){display:none !important}}body.rtl #wp-optimize-wrap .wpo-table-list-filter{text-align:left}@media screen and (max-width:782px){body.rtl #wp-optimize-wrap .wp-list-table.wp-list-table-mobile-labels tbody td{padding:3px 35% 3px 8px}}.tablesorter-headerRow th{vertical-align:top}th:not(.sorter-false) .tablesorter-header-inner{color:#0074ab}th:not(.sorter-false) .tablesorter-header-inner::after{content:'';font-family:'dashicons';font-size:20px;line-height:20px;height:20px;width:20px;display:none;vertical-align:bottom}th.tablesorter-header.tablesorter-headerAsc,th.tablesorter-header.tablesorter-headerDesc{font-weight:500;border-bottom-color:#0272aa}th.tablesorter-header.tablesorter-headerAsc .tablesorter-header-inner::after,th.tablesorter-header.tablesorter-headerDesc .tablesorter-header-inner::after{display:inline-block}th.tablesorter-header.tablesorter-headerDesc .tablesorter-header-inner::after{content:"\f140"}th.tablesorter-header.tablesorter-headerAsc .tablesorter-header-inner::after{content:"\f142"}th.tablesorter-header:focus{outline:0;box-shadow:0 0 3px rgba(0,116,171,0.78)}th.tablesorter-header:focus:not(.tablesorter-headerAsc):not(.tablesorter-headerDesc) .tablesorter-header-inner::after{content:"\f142";opacity:.5}.tablesorter.hasFilters tr.filtered{display:none}.wpo-text__dim .dashicons-info{margin-top:2px;margin-right:5px;border-radius:30px;background:#fff;color:#e07575}#page_cache_length_value{height:28px;position:relative;top:2px}#wp_optimize_preload_cache_status{margin-left:10px;display:inline-block;color:#82868b;font-size:smaller}.align-left{margin:10px 10px 0 0;float:left}textarea.cache-settings{display:block;clear:both;min-height:225px;overflow:scroll;min-width:75%;margin:10px 0}#wp-optimize-purge-cache,#wp-optimize-purge-cache ~ span,#wp-optimize-purge-cache ~ img{vertical-align:middle;top:auto}#wp-optimize-nav-tab-wpo_cache-cache-contents .wpo-error{font-size:12px}#wpo_browser_cache_error_message{padding-top:10px;padding-bottom:10px;margin-left:0;margin-bottom:10px}#wpo_browser_cache_error_message:empty{display:none}#wp-optimize-nav-tab-wpo_cache-advanced-contents label,#wp-optimize-nav-tab-wpo_cache-preload-contents label,#wp-optimize-nav-tab-wpo_cache-cache-contents label{font-weight:600}.wpo-gzip-already-enabled span.dashicons.dashicons-yes,.wpo-enabled>span.dashicons.dashicons-yes{font-size:40px;width:40px;height:40px;line-height:40px;vertical-align:middle;color:green}#wp-optimize-wrap .filename{display:inline-block;padding:6px 0}#wp-optimize-wrap .no-files-yet .filename{font-style:italic}#wp-optimize-wrap .processed{margin:0}#wp-optimize-wrap .processed .wpo_min_log{padding:8px;background:white;border:1px solid #cdcdcd;border-radius:4px;line-height:1.5em}#wp-optimize-wrap .processed .wpo_min_log ul{overflow-x:auto}#wp-optimize-wrap .processed .wpo_min_log ul li{white-space:nowrap}#wp-optimize-wrap .processed .wpo_min_log ul li.failed .wpo_min_file_url{color:#dc3232}#wp-optimize-wrap .processed .wpo_min_log h5{margin-top:0;margin-bottom:8px;border-bottom:1px solid #cdcdcd;padding-bottom:6px}#wp-optimize-wrap .processed .wpo_min_log .wpo_min_file_debug{color:#9c9c9c;display:inline-block}#wp-optimize-wrap .processed .wpo_min_log .wpo_min_file_debug::before{content:'—';display:inline-block;margin:0 10px}#wp-optimize-wrap .show-if-enabled{display:none}#wp-optimize-wrap .is-enabled .show-if-enabled{display:block}#wp-optimize-wrap .wpo-fieldgroup__subgroup.wpo_min_enable_minify+.wpo-fieldgroup__subgroup{display:none}#wp-optimize-wrap .wpo-fieldgroup__subgroup.wpo_min_enable_minify.enabled+.wpo-fieldgroup__subgroup{display:block}#wp-optimize-wrap .wpo-fieldgroup__subgroup.wpo_min_enable_minify:not(.enabled){margin-bottom:0}
|
| 2 |
+
/*# sourceMappingURL=wp-optimize-admin-3-0-18.min.css.map */
|
css/wp-optimize-admin-3-0-18.min.css.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
{"version":3,"sources":["css/wp-optimize-admin.scss","css/admin.css","css/scss/_layout.scss","css/scss/_common.scss","css/scss/_menu-and-tabs.scss","css/scss/_notices.scss","css/scss/_image-list.scss","css/scss/_plugin-family-tab.scss","css/scss/_table-sorter.scss","css/scss/_cache.scss","css/scss/_minify.scss"],"names":[],"mappings":"AAAA,YAAY;;AAcZ,gBAAgB;;ACdhB;CACC,yBAAyB;CACzB;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,2IAA2I;CAC3I,iBAAiB;CACjB,iBAAiB;CACjB,iBAAiB;CAEjB,uCAAuC;CACvC;;AAED;CACC,iCAAiC;CACjC;;AAED;CACC,kBAAkB;CAClB;;AAED,gBAAgB;;AAChB;CACC,4BAA4B;CAC5B,2BAA2B;CAC3B,iBAAiB;CACjB,iBAAiB;CACjB;;AAED,gBAAgB;;AAChB;CACC,YAAY;CACZ,WAAW;CACX,UAAU;CACV;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,kBAAkB;CAClB,eAAe;CACf,mBAAmB;CACnB;;AAED,oBAAoB;;AACpB;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,eAAe;CACf;;AAED,gBAAgB;;AAChB;;CAEC,YAAY;CACZ,eAAe;CACf;;AAED;CACC,YAAY;CACZ;;AAED;CACC,WAAW;CACX;;AAED,qBAAqB;;AACrB;CACC,YAAY;CACZ;;AAED;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;CACC,UAAU;CACV;;AAED;;CAEC;EACC,0BAA0B;EAC1B;;CAED;EACC,yBAAyB;EACzB;;CAED;;AAED;;CAEC;EACC,yBAAyB;EACzB;;CAED;EACC,0BAA0B;EAC1B;;CAED;;AAED;;CAEC;EACC,aAAa;EACb;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;EACC,YAAY;EACZ;;CAED;;AAED,qRAAqR;;AAErR,uBAAuB;;AAEvB;CACC,iBAAiB;CACjB,yBAAyB;CACzB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CACnB,eAAe;CACf,uBAAuB;CACvB,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;CACC,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED,sCAAsC;;AACtC;CACC,eAAe;CACf,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,iBAAiB;CACjB,aAAa;CACb,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,cAAc;CACd,mBAAmB;CACnB,SAAS;CACT;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,cAAc;CACd;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,WAAW;CACX;;AAED;CACC,eAAe;CACf,2BAA2B;CAC3B;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,mBAAmB;CACnB,SAAS;CACT;;AAED;;CAEC;EACC,aAAa;EACb,kBAAkB;EAClB;;CAED;;AAED;CACC,yBAAyB;CACzB;;AAED;CACC,mBAAmB;CACnB,SAAS;CACT,UAAU;CACV;;AAED;CACC,cAAc;CACd;;AAED;CACC,YAAY;CACZ,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED,uBAAuB;;AACvB;;CAEC,cAAc;CACd;;AAED;;CAEC,sBAAsB;CACtB,UAAU;CACV,aAAa;CACb,kBAAkB;CAClB;;AAED;CACC,eAAe;CACf,gBAAgB;CAChB,sBAAsB;CACtB,mBAAmB;CACnB;;AAED;CACC,gBAAgB;CAChB,iBAAiB;CACjB,oBAAoB;CACpB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,iBAAiB;CACjB;;AAED;;CAEC;EACC,kBAAkB;EAClB,oBAAoB;EACpB,eAAe;EACf,uBAAuB;EACvB;;CAED;EACC,mBAAmB;EACnB;;CAED;EACC,mBAAmB;EACnB,eAAe;EACf;;CAED;EACC,iBAAiB;EACjB,oBAAoB;EACpB;;CAED;;AAED;CACC,uBAAuB;CACvB;;AAED;;CAEC,uBAAuB;CACvB,mBAAmB;CACnB,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB,gBAAgB;CAChB;;AAED;;CAEC,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,cAAc;CACd,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED,oBAAoB;;AACpB;CACC,kBAAkB;CAClB,2BAA2B;CAC3B,8BAA8B;CAC9B,eAAe;CACf,UAAU;CACV;;AAED;CACC,iCAAiC;CACjC,eAAe;CACf;;AAED;;;;;;;;CAQC,sBAAsB;CACtB,uBAAuB;CACvB;;AAED;;CAEC,WAAW;CACX;;AAED;;CAEC,WAAW;CACX;;AAED;;CAEC,UAAU;CACV;;AAED;;CAEC,UAAU;CACV;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC,0BAA0B;CAC1B,YAAY;CACZ,YAAY;CACZ,aAAa;CACb,oBAAoB;CACpB,sBAAsB;CACtB,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB,mBAAmB;CACnB,aAAa;CACb;;AAED;CACC,WAAW;CACX,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB;;AAED;CACC,0BAA0B;CAC1B,YAAY;CACZ,aAAa;CACb,eAAe;CACf,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,iCAAiC;CACjC;;AAED;CACC,cAAc;CACd,YAAY;CACZ,mBAAmB;CACnB,0BAA0B;CAC1B,mBAAmB;CACnB,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb,mBAAmB;CACnB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,kBAAkB;CAClB,iBAAiB;CACjB;;AAED;CACC,cAAc;CACd;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;;;CAGC,oBAAoB;CACpB,cAAc;CACd,uBAAuB;CACvB,sBAAsB;CACtB;;AAED;;CAEC,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB,oBAAoB;CACpB;;AAED;CACC,6BAA6B;CAC7B,sBAAsB;CACtB;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC,YAAY;CACZ;;AAED;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB;;ACvjBD;;CAEC,oBAAoB;CAIpB;;AAHA;;CAHD;;EAIE,iBAAiB;EAElB;CADC;;AAGF;CACC,mBAAmB;CACnB,iBAAiB;CAIjB;;AAHA;;CAHD;EAIE,mBAAmB;EAEpB;CADC;;AAGF;;CAEC,kBAAkB;CASlB;;AAPA;;CAJD;;EAKE,eAAe;EAMhB;CALC;;AAED;;CARD;;EASE,mBAAmB;EAEpB;CADC;;AAGF;CACC,mBAAmB;CACnB,kBAAkB;CASlB;;AAPA;;CAJD;EAKE,mBAAmB;EAMpB;CALC;;AAED;;CARD;EASE,gBAAgB;EAEjB;CADC;;AAGF,eAAe;;AAEf;;CAEC,aAAa;CACb,gBAAgB;CAChB,UAAU;CACV,YAAY;CACZ,iBAAiB;CACjB,SAAS;CACT,cAAc;;CAsLd;;AApLA;;CAVD;EAWE,cAAc;EAmLf;CAlLC;;AAED;EACC,qBAAc;EAAd,cAAc;EACd,2BAAuB;MAAvB,uBAAuB;EACvB,sBAAwB;MAAxB,wBAAwB;EACxB,mBAAmB;EACnB,aAAa;EACb,eAAe;EACf,gBAAgB;EAChB,mBAAmB;EACnB,kBAAkB;CAClB;;AAED;EACC,mBAAmB;EACnB,QAAQ;EACR,SAAS;EACT,4BAA4B;EAC5B,YAAY;CACZ;;AAED;EACC,UAAU;EACV,iBAAiB;EACjB,eAA0B;EAC1B,iBAAiB;CAKjB;;AAHA;;CAND;EAOE,cAAc;EAEf;CADC;;AAGF;EACC,UAAU;EACV,kBAAkB;EAClB,mBAAmB;EACnB,SAAS;EACT,kBAAkB;EAClB,oBAAoB;EACpB,+BAA+B;EAC/B,WAAW;CAkBX;;AAhBA;GACC,sBAAsB;GACtB;;AAED;GACC,eAAgC;GAChC,mBAAmB;GACnB,YAAY;GACZ,aAAa;GACb,kBAAkB;GAClB,oBAAoB;GACpB;;AAED;;CAvBD;EAwBE,cAAc;EAEf;CADC;;AAGF;EACC,cAAc;EACd,oBAAoB;EACpB,iBAAiB;CAcjB;;AAbA;;CAJD;EAKE,cAAc;EAYf;CAXC;;AAED;GACC,sBAAsB;GACtB,aAAa;GACb,iBAAiB;CACjB;;AACD;GACC,eAAgC;CAChC;;AAIF;;CAEC;GACC,aAAa;GACb,sBAAsB;EACtB;CAED;;AAGA;;CADD;EAEE,WAAW;EAYZ;CAXC;;AACD;;CAJD;EAKE,QAAQ;EACR,UAAU;EAQX;CAPC;;AACD;;CARD;EASE,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb,UAAU;EAEX;CADC;;AAID;;CADD;EAEE,OAAO;EAER;CADC;;AAID;;CADD;EAEE,WAAW;EAEZ;CADC;;AAEF;EACC,2CAA2C;CAC3C;;AAED,SAAS;;AACT;EACC,aAAa;EACb,QAAQ;CA8BR;;AA5BA;GACC,mBAAmB;GACnB,oBAAoB;GACpB,eAAe;GACf,mBAAmB;GACnB;;AAED;GACC,mBAAmB;GACnB,WAAW;GACX,SAAS;GACT;;AAED;GACC,YAAY;GACZ,QAAQ;GACR,gCAAgC;GAChC,6BAA6B;GAU7B;;AARA;IACC,mBAAmB;IACnB,WAAW;IACX,YAAY;IACZ,aAAa;IACb,iBAAiB;IACjB,mBAAmB;IACnB;;AAKF;;CADD;EAEE,YAAY;EAYb;CAXC;;AACD;;CAJD;EAKE,SAAS;EACT,UAAU;EAQX;CAPC;;AACD;;CARD;EASE,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb,UAAU;EAEX;CADC;;AAID;;CADD;EAEE,YAAY;EACZ,QAAQ;EAET;CADC;;AAMF;EACC,iBAAiB;EACjB;;AACD;;CAJD,YAUC;CALC;;AAED;CACC,cAAc;CACd;;AAGF;CACC,mBAAmB;CACnB,iBAAiB;CACjB,oBAAoB;CACpB,iFAAiF;CAkBjF;;AAhBA;EACC,eAAe;EACf;;AAED;EACC,iBAAiB;EACjB;;AAED;EACC,kBAAkB;EAMlB;;AALA;GACC,sBAAsB;GACtB,iBAAiB;GACjB,kBAAkB;GAClB;;AAIH,aAAa;;AACb;;CAEC;EACC,aAAa;EACb,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB;;CAED;EACC,YAAY;EACZ,uBAAuB;EACvB,0BAA0B;EAC1B;;CAED;;AChSD;;CAEC;EACC,qBAAqB;EACrB;;CAED;EACC,0BAA0B;EAC1B;;CAED;;AAED,mBAAmB;;AAGnB,aAAa;;AAKX;;CADD;EAEE,eAAe;EACf,YAAY;EAEb;CADC;;AAGF;EACC,eAAY;CACZ;;AAED;;EAEC,eAAe;EACf,gBAAgB;CAChB;;AAED;EACC,YAAY;EACZ,mBAAmB;EACnB,cAAc;EACd,kBAAkB;EAClB,iBAAiB;EACjB,oBAAoB;CACpB;;AAIF;;CAEC,oBAAoB;CACpB;;AAED;CACC,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,QAAQ;CACR,gBAAgB;CAChB,SAAS;CACT,4BAA4B;CAC5B,aAAa;CACb,eAAe;CACf;;AAED;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB,qBAAqB;CACrB,mBAAmB;CACnB;;AAED,oBAAoB;;AAEpB;CACC,sBAAsB;CACtB,gBAAgB;CAChB,0BAA0B;CAC1B,oBAA6B;CAC7B,iBAAiB;CACjB,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,oBAAoB;CACpB,eAAe;CACf;;AAED;CACC,cAAc;CACd;;AAED;CACC,eAAgB;CAChB,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB,UAAU;CACV,eAAe;CACf,iBAAiB;CACjB;;AAED;CACC;EACC,kBAAkB;EAClB;CACD;;AAED,aAAa;;AAEb;CACC,aAAa;;CAMb;;AAJA;EACC,cAAc;EACd;;AAIF;;CAEC,cAAc;CACd;;AAIA;EACC,cAAc;EACd;;AAGF,iBAAiB;;AAEjB;CACC,oBAA6B;CAC7B,mBAAmB;CACnB,aAAc;;CAqCd;;AAnCA;CACC,mBAAmB;CACnB;;AAED;EACC,cAAc;CACd;;AAED;EACC,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB;;AAED;EACC,iBAAiB;CACjB;;AAED;EACC,mBAAmB;EACnB,oBAAoB;EACpB,mBAAmB;CACnB;;AAIA;GACC,eAAe;GACf,mBAAmB;GACnB;;AAOF;CACC,oBAAoB;CACpB;;AAGF,kBAAkB;;AAGjB;EACC,mBAAmB;EACnB,sBAAsB;EACtB,YAAY;EACZ,aAAa;EACb,kBAAkB;EAClB,uBAAuB;;EAyFvB;;AAvFA,gCAAgC;;AAChC;GACC,WAAW;GACX,SAAS;GACT,UAAU;GACV;;AAED,gBAAgB;;AAChB;GACC,mBAAmB;GACnB,gBAAgB;GAChB,OAAO;GACP,QAAQ;GACR,SAAS;GACT,UAAU;GACV,0BAAmC;GACnC,eAAgB;;GAoChB;;AAlCA;CACC,mBAAmB;CACnB,YAAY;CACZ,YAAY;CACZ,WAAW;CACX,UAAU;CACV,YAAY;CACZ,0BAAgC;CAChC,0BAAgC;CAChC,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,YAAY;CACZ,WAAW;CACX,WAAW;CACX,SAAS;CACT,mBAAmB;CACnB,0BAAqC;CACrC,wBAAuB;CACvB;;AAjCF,mCAmCC,qBAAqB;CASrB;;AARA;CACC,oBAAoB;CACpB,0BAAgC;CAIhC;;AAHA;CACA,mBAAmB;CAClB;;AAKH;GACC,oBAAqB;GACrB,qBAAuB;;GAmBvB;;AAlBA;CACC,iBAAiB;CACjB,mBAAmB;CACnB,4BAA4B;CAC5B;;AAED;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,YAAY;CACZ,WAAW;CACX,UAAU;CACV,SAAS;CACT,iBAAiB;CACjB,aAAa;CACb;;AAGF;;GAEC,oBAA0B;GAC1B,sBAA4B;GAC5B,aAAa;GACb;;AAED;GACC,iDAAgE;GAChE;;AAIF;EACC,eAAe;EACf,YAAY;EAWZ;;AAVA;GACC,eAAe;GACf,uBAAuB;GACvB;;AACD;CACC,kBAAkB;CAClB;;AACD;GACC,4BAA4B;CAC5B;;AAGF;EACC,eAAe;EACf;;AAIF;CACC,iBAAiB;CACjB;;AAED,gBAAgB;;AAEhB;CACC,mBAAmB;CACnB,sBAAsB;CAItB;;AAHA;;CAHD;EAIE,eAAe;EAEhB;CADC;;AAGF;CACC,WAAW;CACX,mBAAmB;CACnB,mBAAmB;CACnB,UAAU;CACV,YAAY;CACZ,iBAAiB;CACjB,cAAc;CACd,aAAa;CACb,iBAAiB;CACjB,WAAW;CACX,sFAAsF;CACtF,qBAAqB;CAKrB;;AAHA;;CAdD;EAeE,YAAY;EAEb;CADC;;AAGF;CACC,cAAc;CACd,kBAAkB;CAClB,YAAY;CACZ;;AAIA;EACC,sBAAsB;EACtB;;AAED;EACC,WAAW;EACX,oBAAoB;EACpB,0FAA0F;EAC1F;;AAED;EACC,WAAW;EACX;;AAIF;;CAEC,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB,sBAAsB;CACtB,cAAc;CACd,mBAAmB;CACnB,iBAAiB;CACjB,mBAAmB;CACnB;;AAED;CACC,sBAAsB;CACtB,uBAAuB;CACvB;;AAED;IACI,aAAa;CAChB;;AAED,qBAAqB;;AAErB;CACC,eAAe;CACf,mBAAmB;CACnB,QAAQ;CACR,SAAS;CACT,OAAO;CACP,UAAU;CACV,YAAY;CACZ,aAAa;CACb,cAAc;CACd,WAAW;CACX,4CAA4C;CAC5C;;AAED;CACC,cAAc;CACd;;AAED;CACC,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,eAAe;CACf;;AAED;CACC,gBAAgB;CAChB,aAAa;CACb,YAAY;CACZ;;AAED;CACC,qCAAqC;CACrC,0BAA0B;CAC1B;;ACtbD,UAAU;;AAEV;IACI,iBAAiB;CACpB,oBAAoB;CACpB,mBAAmB;CA8JnB;;AA5JA;;;;EAIC,aAAa;EACb,wBAAwB;EACxB,UAAU;EACV,kCAAkC;EAClC,kBAAkB;EAClB,eAAgB;EAwBhB;;AAtBA;GACC,eAAe;GACf,eAAe;GACf,eAA0B;GAC1B,gBAAgB;GAChB,YAAY;GACZ,aAAa;GACb;;AAED;GACC,sBAAsB;GACtB,iBAAiB;GACjB,aAAa;GACb,gBAAgB;GAChB,oBAAqB;GACrB,eAAe;GACf,mBAAmB;GACnB,YAAY;GACZ,iBAAiB;GACjB,0BAA0B;GAC1B,sBAAsB;GACtB;;AAGF;;;;EAIC,iBAAiB;EACjB,wCAAwC;EACxC,0BAA2B;EAK3B;;AAHA;GACC,eAAgB;GAChB;;AAGF;EACC,eAAe;EACf,aAAa;EACb,mBAAmB;EAiDnB;;AA/CA;;;;GAIC,mBAAmB;GAOnB;;AANA;IACC,sBAAsB;IACtB,gBAAgB;IAChB,aAAa;IACb,2BAA2B;IAC3B;;AAGF;GACC,cAAc;GACd;;AAEA;IACC,YAAY;IACZ,eAAe;IACf,mBAAmB;IACnB,UAAU;IACV,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,0BAA0B;CAC1B;;AACD;IACC,mBAAmB;IACnB,eAAe;IACf,iBAAiB;IACjB,cAAc;IACd,SAAS;IACT,UAAU;IACV,WAAW;IACX,iDAAiD;IACjD,aAAa;CASb;;AAPA;KACC,eAAe;KACf,gBAAgB;KAChB,oBAAoB;KACpB,iBAAiB;KACjB,mBAAmB;KACnB;;AAKJ;;CACC;GACC,cAAc;EACd;;CACD;GACC,cAAc;EACd;CACD;;AAED;EACC,eAAe;EACf,aAAa;CAIb;;AAHA;;CAHD;EAIE,cAAc;EAEf;CADC;;AAKD;CAEC,kBAAkB;CA8BlB;;AA5BA;IACC,eAAsB;IACtB,gBAAgB;IAChB,sBAAsB;IACtB,aAAa;IACb,qBAAqB;IACrB,YAAY;CACZ;;AAED;;CAbD;EAcE,mBAAmB;EACnB,aAAa;EACb,SAAS;EACT,gBAAgB;EAChB,iBAAiB;EACjB,sBAAsB;EACtB,WAAW;EAYZ;;CAVC;KACC,eAAsB;KACtB,gBAAgB;KAChB,sBAAsB;KACtB,aAAa;KACb,qBAAqB;KACrB,YAAY;EACZ;CACD;;AAOJ;;EAIE;EACA,iBAAiB;GAChB;;EAED;GACC,eAAe;GACf,WAAY;GA8BZ;;EA5BA;EACC,0BAA0B;EAC1B;;EAED;EACC,+BAA+B;EAC/B;;EAED;;EAEC,iBAAiB;EACjB,uBAAuB;EACvB;;EAOA;KACC,sBAAsB;KACtB,qBAAqB;EACrB;;EAGF;EACC,cAAc;EACd;;CAKH;;AAGD,gBAAgB;;AAEhB;CACC,mBAAmB;CACnB,UAAU;CACV,SAAS;CACT,cAAc;CAkGd;;AAhGA;;CACC;GACC,eAAe;GACf,2CAA2C;EAC3C;CACD;;AAED;;CAbD;EAcE,qBAAc;EAAd,cAAc;EACd,aAAa;EAuFd;CAtFC;;AAED;EACC,sBAAsB;EACtB,mBAAmB;EACnB,eAAe;EACf,mBAAmB;EACnB,uBAAuB;EACvB,eAAe;EACf,eAAqB;CA+CrB;;AA7CA;;CATD;EAUE,eAAe;EACf,aAAa;EACb,qBAAc;EAAd,cAAc;EACd,2BAAuB;MAAvB,uBAAuB;EACvB,sBAAwB;MAAxB,wBAAwB;EAwCzB;;CAtCC;IACC,eAAe;IACf,eAAe;EACf;CACD;;AAED;;CAtBD;EAuBE,cAAc;EACd,iBAAiB;EA8BlB;CA7BC;;AAGA;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,UAAU;CACV,QAAQ;CACR,YAAY;CACZ,YAAY;CACZ,oBAAmB;CACnB,eAAuB;CAOvB;;AALA;;CAXD;EAYE,WAAW;EACX,aAAa;EAGd;CAFC;;AAGF;;CAlBD;EAmBE,eAAc;EAEf;CADC;;AAGF;CACC,oBAAoB;CACpB,eAAuB;CACvB;;AAGF;EACC,eAAe;EACf,WAAW;EACX,oBAAoB;EACpB,iBAAiB;EACjB,oBAAoB;EACpB,kBAAkB;EAClB,iBAAiB;CAMjB;;AALA;;CARD;EASE,WAAW;EACX,YAAY;EACZ,iBAAiB;EAElB;CADC;;AAGF;;CAzFD;EA0FE,mBAAmB;EACnB,UAAU;EACV,YAAY;EACZ,aAAa;EACb,iBAAiB;EAQlB;CANC;;AAED;EACC,QAAQ;EACR,YAAY;CACZ;;AAGF;CACC,mBAAmB;CACnB,SAAS;CACT,UAAU;CACV,qBAAc;CAAd,cAAc;CACd,aAAa;IACV,2BAAuB;QAAvB,uBAAuB;IACvB,gBAAgB;IAChB,uBAAoB;QAApB,oBAAoB;IACpB,sBAAwB;QAAxB,wBAAwB;CAC3B,qBAAsB;CAkBtB;;AAhBA;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd;;AAED;;CApBD;EAqBE,cAAc;EAOf;CANC;;AAED;EACC,YAAY;EACZ,QAAQ;CACR;;AAGF,oBAAoB;;AAEpB,mDAAmD;;AACnD;CACC,qBAAc;CAAd,cAAc;CACd,oBAAgB;KAAhB,eAAgB;;CAEhB,gCAAgC;;CA2EhC;;AAvEC;GACC,kCAAgC;CAChC;;AAVH,2BAaC,iCAAiC;CAkEjC;;AA/DE;IACC,wBAA8D;CAC9D;;AAFD;IACC,wBAA8D;CAC9D;;AAFD;IACC,oCAA8D;CAC9D;;AAIH;EACC,cAAkB;EAClB,mBAAuB;EACvB,uBAAuB;EACvB,qBAAqB;EACrB,aAAa;CAkDb;;AAhDA;CACC,gBAAgB;CAChB;;AAED;GACC,cAAc;CAUd;;AARA;IACC,eAA0B;IAC1B,eAAe;IACf,aAAa;IACb,iBAAiB;IACjB,kBAAkB;IAClB;;AAIF;GACC,mBAAmB;GACnB,aAAiB;GACjB,WAAe;GACf,oCAA4C;CAC5C;;AAED;;CA/BD;EAgCE,YAAY;EACZ,gBAAgB;EAChB,qBAAqB;EAqBtB;;CAnBC;IACC,uBAAuB;IACvB,WAAW;IACX,aAAa;IACb,SAAS;IACT,4BAA4B;IAC5B,YAAgB;EAChB;;CAED;IACC,UAAU;EACV;;CAED;IACC,cAAc;EACd;CAED;;AAMH,yBAAyB;;AAEzB;IACI,YAAY;IACZ,iBAAiB;IACjB,wCAAsB;IACtB,iBAAiB;IACjB,YAAY;IACZ,aAAa;CAChB;;ACzbD,qBAAqB;;AAErB;;CAEC,iBAAiB;CACjB,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB;;AAED,+CAA+C;;AAI9C;EACC,eAAe;EACf,gBAAgB;EAChB;;AAGF;;EAEE;;AAEF;IACI,eAAe;IACf,WAAW;IACX,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,oBAAoB;CACvB;;AAED,0BAA0B;;AAGzB;;;;EAIC,cAAc;EACd;;AAGF;;;;;;CAMC,gBAAgB;CAChB;;AAED;;CAEC,oBAAoB;CACpB,mBAAmB;CACnB;;AAED;CACC,aAAa;CAEb,qBAAqB;CACrB,cAAc;CAEd,qBAAqB;CACrB,kBAAkB;CAClB,2BAAuB;KAAvB,uBAAuB;CACvB,aAAa;CACb,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,YAAY;CACZ,YAAY;CACZ,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,cAAc;CACd,gBAAgB;CAChB,uBAAuB;CACvB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,gBAAgB;CAChB,SAAS;CACT,YAAY;CACZ;;AAED;CACC,WAAW;CACX,YAAY;CACZ;;AAED;CACC,2BAA2B;CAC3B,8BAA8B;CAC9B;;AAED;CACC,2BAA2B;CAC3B,8BAA8B;CAC9B;;AAED;CACC,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,mBAAmB;CACnB;;AAED;;CAEC,oBAAoB;CACpB;;AAED;;CAEC;EACC,wBAAoB;MAApB,oBAAoB;EAEpB,uBAAuB;EACvB,oBAAoB;EACpB;;CAED;;AAED;;CAEC;;EAEC,oBAAoB;EACpB,mBAAmB;EACnB;;CAED;;AAED;;CAEC;;EAEC,gBAAgB;EAChB;;CAED;;ACjKD,iDAAiD;;AAEjD;CACC,mBAAmB;CACnB,YAAY;CACZ,uBAAuB;CACvB,mBAAmB;;CAkGnB;;AAhGA;;CAND;EAOE,uBAAuB;EA+FxB;CA9FC;;AAED;;CAVD;EAWE,4BAA4B;EA2F7B;CA1FC;;AAED;;CAdD;EAeE,yBAAyB;EAuF1B;CAtFC;;AAED;EACC,mBAAmB;EACnB,UAAU;EACV,WAAW;EACX,SAAS;EACT,UAAU;CACV;;AAED;EACC,eAAe;EACf,YAAY;EACZ,mBAAmB;EACnB,aAAa;EACb,0BAAmC;EACnC,uBAAuB;CA0CvB;;AAxCA;CACC,YAAY;CACZ,eAAe;CACf,kBAAkB;CAClB;;AAED;GACC,mBAAmB;GACnB,SAAS;GACT,UAAU;GACV,wBAAwB;GACxB,yBAAyB;GACzB,6BAA6B;GAC7B,uBAAuB;GACvB,6BAA6B;GAC7B,iBAAiB;GACjB,qCAAqC;CAarC;;AAXA;IACC,eAAe;IACf,UAAU;IACV,iBAAiB;IACjB,mBAAmB;IACnB,SAAS;IACT,UAAU;IACV,gCAAgC;IAChC,0BAAkB;QAAlB,sBAAkB;YAAlB,kBAAkB;IAClB;;AAIF;GACC,mBAAmB;GACnB,SAAS;GACT,UAAU;GACV,iCAAiC;GACjC,gBAAgB;GAChB,YAAY;GACZ,YAAY;CACZ;;AAGF;;;;EAEC,sBAAuB;CACvB;;AAED;CACC,4BAA6B;CAC7B;;AAED;EACC,mBAAmB;EACnB,WAAW;EACX,aAAa;EACb,UAAU;EACV,4BAA4B;EAC5B,cAAc;CACd;;AAIA;GACC,sBAAsB;CACtB;;AAMH;CACC,wBAAwB;IACrB,kBAAkB;IAClB,mBAAmB;CACtB,kBAAkB;CAClB,iBAAiB;IACd,qBAAc;IAAd,cAAc;CACjB,oBAAgB;KAAhB,gBAAgB;CAChB,mBAAmB;;CAOnB;;AALA;EACC,YAAY;EACZ,YAAY;EACZ;;AAIF;CACC,cAAc;CACd;;AAED;;CAEC,mBAAmB;CACnB,OAAO;CACP,QAAQ;CACR,YAAY;CACZ,aAAa;CACb,WAAW;CACX,0FAA0F;CAC1F,qBAAc;CAAd,cAAc;CACd,uBAAoB;KAApB,oBAAoB;CACpB,sBAAwB;KAAxB,wBAAwB;CACxB;;AAED;CACC,4FAA4F;CAC5F;;AAED;CACC,iBAAiB;CACjB,sBAAsB;CACtB,cAAc;CACd,mBAAmB;CACnB,yCAAyC;CACzC;;ACvJD,uBAAuB;;AAEvB,8BAA8B;;AAE9B;IACI,eAAgB;CACnB;;AAED,uBAAuB;;AAEvB;CACC,sBAAsB;CACtB,gBAAgB;CAChB,kBAAkB;CAClB,sBAAsB;CACtB;;AAGD,wBAAwB;;AAExB;IACI,UAAU;IACV,cAAc;CACjB;;AAED;IACI,qBAAc;IAAd,cAAc;IACd,oBAAgB;QAAhB,gBAAgB;CACnB,kBAAkB;CAClB,oBAAoB;CACpB;;AAED;IACI,eAAW;QAAX,WAAW;IACX,YAAY;IACZ,cAAc;IACd,uBAAuB;IACvB,0BAA0B;CAC7B,kBAAkB;CAClB,oBAAoB;;CAsBpB;;AApBA;;CATD;EAUE,WAAW;EAmBZ;;CAjBC;GACC,YAAY;EACZ;CACD;;AAED;;CACC;GACC,WAAW;EACX;CACD;;AAED;;CACC;GACC,YAAY;EACZ;CACD;;AAIF;IACI,WAAW;CACd;;AAED,wCAAwC;;AACxC;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;;CAEC;;EAEC,YAAY;EACZ,YAAY;EACZ,UAAU;EACV;;CAED;;AAKA;EACC,cAAc;;EAcd;;AAZA;;CAHD;EAIE,cAAc;EAWf;CAVC;;AAED;GACC,UAAU;CACV;;AAED;GACC,iBAAiB;CACjB;;AAMH;CACC,aAAa;CACb,0BAA0B;CAC1B,wBAAwB;CACxB,gBAAgB;CAChB,mBAAmB;CACnB;;AAGA;EACC,0BAA0B;EAC1B,yBAAyB;EACzB,cAAc;EACd;;AAED;EACC,sCAAsC;EACtC;;AAED;EACC,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB;;AAED;EACC,gBAAgB;EAChB;;AAED;EACC,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,eAAe;EACf;;AAED;EACC,aAAa;EACb;;AAED;EACC,WAAW;EACX;;AAED;EACC,oBAAoB;EACpB,6BAA6B;EAK7B;;AAHA;GACC,YAAY;GACZ;;AAMH;CACC,cAAc;CACd;;AAED;;CAEC;EACC,WAAW;EACX;;CAED;EACC,eAAe;EACf,YAAY;EACZ,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb;;CAED;;AAED;;CAEC;EACC,aAAa;EACb;;CAED;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC;;EAEC,eAAe;EA+Bf;;EA7BA;GACC,qBAAc;GAAd,cAAc;GACd,oBAAgB;OAAhB,gBAAgB;GAChB;;EAED;GACC,cAAe;GAsBf;;EApBA;EACC,YAAY;EACZ,oBAAoB;EACpB;;EAED;EACC,WAAW;EACX,uBAAuB;EACvB;;EAED;EACC,cAAc;EACd;;EAED;EACC,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;EACZ,eAAe;EACf;;CAIH;;AAED;CACC,YAAY;CACZ,mBAAmB;CACnB;;AC9OD,iBAAiB;;AAMf;GACC,sBAAsB;GACtB;;AAIF;;GAIE;IACC,eAAe;IACf;;GAED;IACC,yBAAyB;IACzB,uBAAuB;IACvB,sBAAuB;;IAMvB;;GAJA;EACC,eAAsB;EACtB;;GAQF;IACC,eAAe;IACf;;GAED;IACC,eAAe;IACf,uBAAuB;IACvB;;GAED;IACC,yBAAyB;IACzB;CAIF;;AAGA;GACC,iBAAiB;GACjB;;AACD;IAEE;KACC,yBAAyB;KACzB;CAEF;;AAIH;CACC,oBAAoB;CACpB;;AAED;;CAEC,cAAe;;CAaf;;AAXA;CACC,YAAY;CACZ,yBAAyB;CACzB,gBAAgB;CAChB,kBAAkB;CAClB,aAAa;CACb,YAAY;CACZ,cAAc;CACd,uBAAuB;CACvB;;AAIF;;IAEI,iBAAiB;IACjB,6BAA8B;CAIjC;;AAHA;EACC,sBAAsB;EACtB;;AAGF;IACI,iBAAiB;CACpB;;AAED;IACI,iBAAiB;CACpB;;AAED;IACI,cAAc;CACjB,2CAA4C;;CAO5C;;AALA;CACC,iBAAiB;CACjB,aAAa;CACb;;AAIF;IACI,cAAc;CACjB;;ACrHC;IACE,gBAAgB;IAChB,kBAAkB;IAClB,oBAAoB;IACpB,iBAAiB;IACjB,eAAY;GACb;;AAGH;EACE,aAAa;EACb,mBAAmB;EACnB,SAAS;CACV;;AAED;EACE,kBAAkB;EAClB,sBAAsB;EACtB,eAAe;EACf,mBAAmB;CACpB;;AAED;IACI,0BAA0B;IAC1B,YAAY;CACf;;AAED;IACI,eAAe;IACf,YAAY;IACZ,kBAAkB;IAClB,iBAAiB;IACjB,eAAe;IACf,iBAAiB;CACpB;;AAED;;;EAGE,uBAAuB;EACvB,UAAU;CACX;;AAED;EACE,gBAAgB;CACjB;;AAGD;EACE,kBAAkB;EAClB,qBAAqB;EACrB,eAAe;EACf,mBAAoB;CAKrB;;AAHC;CACE,cAAc;CACf;;AAMD;IACE,iBAAiB;GAClB;;AAGH;;EAEE,gBAAgB;EAChB,YAAY;EACZ,aAAa;EACb,kBAAkB;EAClB,uBAAuB;EACvB,aAAa;CACd;;AC1EA;EACC,sBAAsB;EACtB,eAAe;EACf;;AAED;EACC,mBAAmB;EACnB;;AAED;EACC,UAAU;EACV;;AAED;EACC,aAAa;EACb,kBAAkB;EAClB,0BAA0B;EAC1B,mBAAmB;EACnB,mBAAmB;EAyBnB;;AAxBA;GACC,iBAAiB;GAOjB;;AANA;IACC,mBAAoB;IAIpB;;AAHA;CACC,eAAe;CACf;;AAGH;GACC,cAAc;GACd,mBAAmB;GACnB,iCAAiC;GACjC,oBAAoB;GACpB;;AACD;GACC,eAAe;GACf,qBAAsB;GAMtB;;AALA;CACC,aAAa;CACb,sBAAsB;CACtB,eAAe;CACf;;AAIH;EACC,cAAc;EACd;;AAED;EACC,eAAe;EACf;;AAED;EACC,cAAc;EACd;;AAED;EACC,eAAe;EACf;;AAED;EACC,iBAAiB;EACjB","file":"wp-optimize-admin-3-0-18.min.css","sourcesContent":["/* COLORS */\n$wp-blue: #0272AA;\n$wp-gray-dark: #555d66;\n$wp-gray-darker: #191e23;\n$wp-secondary-gray: #72777C;\n$wp-secondary-gray-light: #82868B;\n$wp-light-gray: #B5B9BE;\n$wp-lighter-gray: #F2F4F5;\n$success: #009B24;\n$error: #9B3600;\n$red: #E07575;\n$brand: #E46B1F;\n$spacing: 20px; \n\n/* OTHER VARS */\n$breakpoint-small: 782px;\n\n@import \"admin.css\";\n\n@import \"scss/layout\";\n\n@import \"scss/common\";\n\n@import \"scss/menu-and-tabs\";\n\n@import \"scss/notices\";\n\n@import \"scss/image-list\";\n\n@import \"scss/plugin-family-tab\";\n\n@import \"scss/table-sorter\";\n\n@import \"scss/cache\";\n\n@import \"scss/minify\";",".wpo_hidden {\n\tdisplay: none !important;\n}\n\n.wpo_info {\n\tbackground: #FFF;\n\tcolor: #444;\n\tfont-family: -apple-system, \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Oxygen-Sans\", \"Ubuntu\", \"Cantarell\", \"Helvetica Neue\", sans-serif;\n\tmargin: 2em auto;\n\tpadding: 1em 2em;\n\tmax-width: 700px;\n\t-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13);\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.13);\n}\n\n#wp-optimize-wrap .widefat thead th, #wp-optimize-wrap .widefat thead td {\n\tborder-bottom: 1px solid #E1E1E1;\n}\n\n#wp-optimize-wrap .widefat td, #wp-optimize-wrap .widefat th {\n\tpadding: 8px 10px;\n}\n\n/* big button */\n.wpo_primary_big {\n\tpadding: 4px 6px !important;\n\tfont-size: 22px !important;\n\tmin-height: 34px;\n\tmin-width: 200px;\n}\n\n/* SECTIONS */\n.wpo_section {\n\tclear: both;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.wp-optimize-settings {\n\tmargin-bottom: 16px;\n}\n\n.wp-optimize-settings td > label {\n\tfont-weight: bold;\n\tdisplay: block;\n\tmargin-bottom: 8px;\n}\n\n/* COLUMN SETUP */\n.wpo_col {\n\tdisplay: block;\n\tfloat: left;\n\tmargin: 1% 0 1% 1%;\n}\n\n.wpo_col:first-child {\n\tmargin-left: 0;\n}\n\n/* GROUPING */\n.wpo_group:before,\n.wpo_group:after {\n\tcontent: \"\";\n\tdisplay: table;\n}\n\n.wpo_group:after {\n\tclear: both;\n}\n\n.wpo_half_width {\n\twidth: 48%;\n}\n\n/* GRID OF THREE */\n.wpo_span_3_of_3 {\n\twidth: 100%;\n}\n\n.wpo_span_2_of_3 {\n\twidth: 65.3%;\n}\n\n.wpo_span_1_of_3 {\n\twidth: 32.1%;\n}\n\n#wp-optimize-wrap .nav-tab-wrapper {\n\tmargin: 0;\n}\n\n@media screen and (min-width: 549px) {\n\n\t.show_on_default_sizes {\n\t\tdisplay: block !important;\n\t}\n\n\t.show_on_mobile_sizes {\n\t\tdisplay: none !important;\n\t}\n\n}\n\n@media screen and (max-width: 548px) {\n\n\t.show_on_default_sizes {\n\t\tdisplay: none !important;\n\t}\n\n\t.show_on_mobile_sizes {\n\t\tdisplay: block !important;\n\t}\n\n}\n\n@media screen and (max-width: 768px) {\n\n\t.wpo_col {\n\t\tmargin: 1% 0;\n\t}\n\n\t.wpo_span_3_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_span_2_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_span_1_of_3 {\n\t\twidth: 100%;\n\t}\n\n\t.wpo_half_width {\n\t\twidth: 100%;\n\t}\n\n}\n\n/* .wp-optimize-settings-clean-transient label, .wp-optimize-settings-clean-pingbacks label, .wp-optimize-settings-clean-trackbacks label, .wp-optimize-settings-clean-postmeta label, .wp-optimize-settings-clean-orphandata label, .wp-optimize-settings-clean-commentmeta label */\n\n/* Optimizations tab */\n\n.wp-optimize-setting-is-sensitive td > label::before {\n\tcontent: \"\\f534\";\n\tfont-family: 'dashicons';\n\tdisplay: inline-block;\n\tmargin-right: 6px;\n\tfont-style: normal;\n\tline-height: 1;\n\tvertical-align: middle;\n\twidth: 20px;\n\tfont-size: 18px;\n\theight: 20px;\n\ttext-align: center;\n\tcolor: #72777C;\n}\n\n.wpo-run-optimizations__container {\n\tmargin-bottom: 15px;\n}\n\n.wp-optimize-optimizations-table-placeholder {\n\tmin-height: 80px;\n}\n\ntd.wp-optimize-settings-optimization-checkbox {\n\twidth: 18px;\n\tpadding-left: 4px;\n\tpadding-right: 0px;\n}\n\n.wp-optimize-settings-optimization-checkbox input {\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#retention-period {\n\twidth: 60px;\n}\n\n.wp-optimize-settings-optimization-info {\n\tfont-size: 80%;\n\tfont-style: italic;\n}\n\n.wp-optimize-settings input[type=\"checkbox\"] {\n\t/* width: 18px; */\n}\n\n/* Added for the Image on Addons tab*/\nimg.addons {\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tmargin-bottom: 20px;\n\tmax-height: 44px;\n\theight: auto;\n\tmax-width: 100%;\n}\n\n.wpo_spinner {\n\twidth: 18px;\n\theight: 18px;\n\tpadding-left: 10px;\n\tdisplay: none;\n\tposition: relative;\n\ttop: 4px;\n}\n\n.optimization_spinner {\n\twidth: 20px;\n\theight: 20px;\n}\n\n#wp-optimize-auto-options {\n\tmargin: 20px 0 0 28px;\n}\n\n.display-none {\n\tdisplay: none;\n}\n\n.visibility-hidden {\n\tvisibility: hidden;\n}\n\n.margin-one-percent {\n\tmargin: 1%;\n}\n\n#save_done, .save-done {\n\tcolor: #D94F00;\n\tfont-size: 220% !important;\n}\n\n.wp-optimize-settings-optimization-info a {\n\ttext-decoration: underline;\n}\n\n.wp-optimize-settings-optimization-run-spinner {\n\tposition: relative;\n\ttop: 2px;\n}\n\n@media screen and (min-width: 782px) {\n\n\ttd.wp-optimize-settings-optimization-run {\n\t\twidth: 180px;\n\t\tpadding-top: 16px;\n\t}\n\n}\n\n#wpoptimize_table_list .tablesorter-filter-row {\n\tdisplay: none !important;\n}\n\n#wpoptimize_table_list .optimization_spinner {\n\tposition: relative;\n\ttop: 2px;\n\tleft: 5px;\n}\n\n#wpoptimize_table_list .optimization_spinner.visibility-hidden {\n\tdisplay: none;\n}\n\n#wpoptimize_table_list_filter {\n\twidth: 100%;\n\tmargin-bottom: 15px;\n}\n\n#wpoptimize_table_list_tables_not_found {\n\tdisplay: none;\n\tmargin: 20px 0;\n}\n\ndiv#wpoptimize_table_list_tables_not_found + h3 {\n\tmargin-top: 30px;\n}\n\n/* Hide First column */\n#wpoptimize_table_list tr th:first-child,\n#wpoptimize_table_list tr td:first-child {\n\tdisplay: none;\n}\n\n#optimize_form .select2-container,\n#wp-optimize-auto-options .select2-container {\n\twidth: 50% !important;\n\ttop: -5px;\n\theight: 40px;\n\tmargin-left: 10px;\n}\n\n#wpoptimize_table_list .optimization_done_icon {\n\tcolor: #009B24;\n\tfont-size: 200%;\n\tdisplay: inline-block;\n\tposition: relative;\n}\n\n#wpo_sitelist_show_moreoptions_cron {\n\tfont-size: 13px;\n\tline-height: 1.5;\n\tletter-spacing: 1px;\n}\n\n#wp-optimize-nav-tab-contents-images .wpo_span_2_of_3 h3 {\n\tdisplay: inline-block;\n}\n\n.wpo_remove_selected_sizes_btn__container {\n\tmargin-top: 20px;\n}\n\n.unused-image-sizes__label {\n\tdisplay: block;\n\tline-height: 1.6;\n}\n\n@media (max-width: 782px) {\n\n\t.unused-image-sizes__label {\n\t\tmargin-left: 30px;\n\t\tmargin-bottom: 15px;\n\t\tline-height: 1;\n\t\tword-break: break-word;\n\t}\n\n\t.unused-image-sizes__label input[type=checkbox] {\n\t\tmargin-left: -30px;\n\t}\n\n\tbody.rtl .unused-image-sizes__label {\n\t\tmargin-right: 30px;\n\t\tmargin-left: 0;\n\t}\n\n\tbody.rtl .unused-image-sizes__label input[type=checkbox] {\n\t\tmargin-left: 4px;\n\t\tmargin-right: -30px;\n\t}\n\n}\n\n#wp-optimize-nav-tab-contents-tables a {\n\tvertical-align: middle;\n}\n\n#wpo_sitelist_moreoptions,\n#wpo_sitelist_moreoptions_cron {\n\tmargin: 4px 16px 6px 0;\n\tborder: 1px dotted;\n\tpadding: 6px 10px;\n\tmax-height: 300px;\n\toverflow-y: scroll;\n\toverflow-x: hidden;\n}\n\n#wpo_sitelist_moreoptions {\n\tmax-height: 150px;\n\tmargin-right: 0;\n}\n\n#wpo_settings_sites_list li,\n#wpo_settings_sites_list li a {\n\tfont-size: 13px;\n\tline-height: 1.5;\n}\n\n#wpo_sitelist_moreoptions_cron li {\n\tpadding-left: 20px;\n}\n\n#wpo_import_error_message {\n\tdisplay: none;\n\tcolor: #9B0000;\n}\n\n#wpo_import_success_message {\n\tdisplay: none;\n\tcolor: #46B450;\n}\n\n#wp-optimize-logging-options {\n\tmargin-top: 10px;\n}\n\n/* Logger settings*/\n.wpo_logging_header {\n\tfont-weight: bold;\n\tborder-top: 1px solid #333;\n\tborder-bottom: 1px solid #333;\n\tpadding: 5px 0;\n\tmargin: 0;\n}\n\n.wpo_logging_row {\n\tborder-bottom: 1px solid #A1A2A3;\n\tpadding: 5px 0;\n}\n\n.wpo_logging_logger_title,\n.wpo_logging_options_title,\n.wpo_logging_status_title,\n.wpo_logging_actions_title,\n.wpo_logging_logger_row,\n.wpo_logging_options_row,\n.wpo_logging_status_row,\n.wpo_logging_actions_row {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.wpo_logging_logger_title,\n.wpo_logging_logger_row {\n\twidth: 38%;\n}\n\n.wpo_logging_options_title,\n.wpo_logging_options_row {\n\twidth: 44%;\n}\n\n.wpo_logging_status_title,\n.wpo_logging_status_row {\n\twidth: 8%;\n}\n\n.wpo_logging_actions_title,\n.wpo_logging_actions_row {\n\twidth: 7%;\n}\n\n.wpo_logging_actions_row {\n\ttext-align: right;\n}\n\n.wpo_logging_options_row {\n\tword-wrap: break-word;\n}\n\n.wpo_logging_actions_row .dashicons-no-alt,\n.wpo_add_logger_form .dashicons-no-alt {\n\tbackground-color: #F06666;\n\tcolor: #FFF;\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 20px;\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tmargin-left: 5px;\n}\n\n.wpo_add_logger_form .dashicons-no-alt {\n\tmargin-top: 12px;\n\tmargin-right: 10px;\n\tfloat: right;\n}\n\n.wpo_logger_type {\n\twidth: 90%;\n\tmargin-top: 10px;\n}\n\n.wpo_logger_addition_option {\n\twidth: 100%;\n\tmargin-top: 5px;\n}\n\n.wpo_alert_notice {\n\tbackground-color: #F06666;\n\tcolor: #FFF;\n\tpadding: 5px;\n\tdisplay: block;\n\tmargin-bottom: 5px;\n\tborder-radius: 5px;\n}\n\n.wpo_error_field {\n\tborder-color: #F06666 !important;\n}\n\n.save_settings_reminder {\n\tdisplay: none;\n\tcolor: #333;\n\tpadding: 15px 20px;\n\tbackground-color: #F0A5A4;\n\tborder-radius: 3px;\n\tmargin: 15px 0;\n}\n\n#wpo_remove_selected_sizes {\n\tmargin-top: 20px;\n}\n\n.wpo_unused_images_buttons_wrap {\n\tfloat: right;\n\tmargin-right: 20px;\n}\n\n.wpo_unused_images_container h3 {\n\tmin-width: 150px;\n}\n\n#wpo_unused_images, #wpo_smush_images_grid {\n\tmax-height: 500px;\n\toverflow-y: auto;\n}\n\n#wpo_unused_images a {\n\toutline: none;\n}\n\n#wp-optimize-nav-tab-wpo_database-tables-contents .wpo-take-a-backup {\n\tmargin-left: 1%;\n}\n\n.run-single-table-delete {\n\tmargin-top: 3px;\n}\n\n#wpo_browser_cache_output,\n#wpo_gzip_compression_output,\n#wpo_advanced_cache_output {\n\tbackground: #F0F0F0;\n\tpadding: 10px;\n\tborder: 1px solid #CCC;\n\twhite-space: pre-wrap;\n}\n\n#wpo_gzip_compression_error_message,\n.wpo-error {\n\tcolor: #9B0000;\n}\n\n.notice.wpo-error__enabling-cache {\n\twhite-space: pre;\n\tmargin-bottom: 15px;\n}\n\na.loading.wpo-refresh-gzip-status {\n\tcolor: rgba(68, 68, 68, 0.5);\n\ttext-decoration: none;\n}\n\na.loading.wpo-refresh-gzip-status img.wpo_spinner.display-none {\n\tdisplay: inline-block;\n}\n\n#wpo_browser_cache_expire_days,\n#wpo_browser_cache_expire_hours {\n\twidth: 50px;\n}\n\n.wpo-enabled .wpo-disabled {\n\tdisplay: none;\n}\n\n.wpo-disabled .wpo-enabled {\n\tdisplay: none;\n}\n\n.wpo-button-wrap {\n\tmargin-top: 10px;\n}","body[class*=\"toplevel_page_WP-Optimize\"] #wpbody,\nbody[class*=\"wp-optimize_page_\"] #wpbody {\n\tpadding-right: 15px;\n\t@media screen and (max-width: 768px) {\n\t\tpadding-right: 0;\n\t}\n}\n\nbody.toplevel_page_WP-Optimize.rtl #wpbody {\n\tpadding-left: 15px;\n\tpadding-right: 0;\n\t@media screen and (max-width: 768px) {\n\t\tpadding-left: 10px;\n\t}\n}\n\nbody[class*=\"toplevel_page_WP-Optimize\"] #wpbody-content,\nbody[class*=\"wp-optimize_page_\"] #wpbody-content {\n\tpadding-top: 80px;\n\n\t@media (max-width: 600px) {\n\t\tpadding-top: 0;\n\t}\t\n\n\t@media (min-width: 820px) {\n\t\tpadding-top: 100px;\n\t}\t\n}\n\n#wp-optimize-wrap {\n\tposition: relative;\n\tpadding-top: 20px;\n\n\t@media (max-width: 600px) {\n\t\tpadding-top: 110px;\n\t}\t\n\n\t@media(max-width: $breakpoint-small) {\n\t\tmargin-right: 0;\n\t}\n}\n\n/* DASHBOARD */\n\n.wpo-main-header {\n\n\theight: 77px;\n\tposition: fixed;\n\ttop: 32px;\n\tleft: 160px;\n\tbackground: #FFF;\n\tright: 0;\n\tz-index: 9980;\n\n\t@media (min-width: 820px) {\n\t\theight: 105px;\n\t}\t\n\n\t.wpo-logo__container {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tposition: relative;\n\t\theight: 100%;\n\t\tline-height: 1;\n\t\tfont-size: 1rem;\n\t\tpadding-left: 50px;\n\t\tmargin-left: 10px;\n\t}\n\n\t.wpo-logo {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\twidth: 50px;\n\t}\n\n\t.wpo-subheader {\n\t\tmargin: 0;\n\t\tfont-weight: 300;\n\t\tcolor: $wp-secondary-gray;\n\t\tline-height: 1.3;\n\n\t\t@media (max-width: 1080px) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\tp.wpo-header-links {\n\t\tmargin: 0;\n\t\tfont-size: 0.7rem;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tpadding: 6px 15px;\n\t\tbackground: #EDEEEF;\n\t\tborder-bottom-left-radius: 5px;\n\t\tz-index: 1;\n\n\t\ta {\n\t\t\ttext-decoration: none;\n\t\t}\n\n\t\t.wpo-header-links__label {\n\t\t\tcolor: $wp-secondary-gray-light;\n\t\t\tposition: absolute;\n\t\t\tright: 100%;\n\t\t\twidth: 110px;\n\t\t\ttext-align: right;\n\t\t\tpadding-right: 10px;\n\t\t}\n\n\t\t@media (max-width: 820px) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\tp.wpo-header-links__mobile {\n\t\tpadding: 10px;\n\t\tbackground: #EDEEEF;\n\t\tmargin-bottom: 0;\n\t\t@media (min-width: 820px) {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\ta {\n\t\t\tdisplay: inline-block;\n\t\t\tpadding: 4px;\n\t\t\tfont-size: .8rem;\n\t\t}\n\t\t.wpo-header-links__label {\n\t\t\tcolor: $wp-secondary-gray-light;\n\t\t}\n\n\t}\n\n\t@media (max-width: 600px) {\n\t\t\n\t\t.wpo-logo__container strong {\n\t\t\twidth: 140px;\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t}\n\n\tbody.auto-fold & {\n\t\t@media (max-width: 960px) {\n\t\t\tleft: 36px;\n\t\t}\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\tleft: 0;\n\t\t\ttop: 46px;\n\t\t}\n\t\t@media (max-width: 600px) {\n\t\t\tposition: absolute;\n\t\t\tleft: -10px;\n\t\t\tright: -10px;\n\t\t\ttop: 10px;\n\t\t}\n\t}\n\n\tbody.auto-fold #screen-meta + #wp-optimize-wrap & {\n\t\t@media (max-width: 600px) {\n\t\t\ttop: 0;\n\t\t}\n\t}\n\n\tbody.folded & {\n\t\t@media (min-width: $breakpoint-small) {\n\t\t\tleft: 36px;\n\t\t}\n\t}\n\tbody.is-scrolled & {\n\t\tbox-shadow: 0 5px 25px rgba(0, 0, 0, 0.17);\n\t}\n\n\t/* RTL */\n\tbody.rtl & {\n\t\tright: 160px;\n\t\tleft: 0;\n\n\t\t.wpo-logo__container {\n\t\t\tpadding-left: 10px;\n\t\t\tpadding-right: 50px;\n\t\t\tmargin-left: 0;\n\t\t\tmargin-right: 10px;\n\t\t}\n\t\n\t\t.wpo-logo {\n\t\t\tposition: absolute;\n\t\t\tleft: auto;\n\t\t\tright: 0;\n\t\t}\t\n\n\t\tp.wpo-header-links {\n\t\t\tright: auto;\n\t\t\tleft: 0;\n\t\t\tborder-bottom-right-radius: 5px;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\n\t\t\t.wpo-header-links__label {\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: 100%;\n\t\t\t\tright: auto;\n\t\t\t\twidth: 110px;\n\t\t\t\ttext-align: left;\n\t\t\t\tpadding-left: 10px;\n\t\t\t}\n\t\t}\n\t}\n\n\tbody.rtl.auto-fold & {\n\t\t@media (max-width: 960px) {\n\t\t\tright: 36px;\n\t\t}\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\tright: 0;\n\t\t\ttop: 46px;\n\t\t}\n\t\t@media (max-width: 600px) {\n\t\t\tposition: absolute;\n\t\t\tleft: -10px;\n\t\t\tright: -10px;\n\t\t\ttop: 10px;\n\t\t}\n\t}\n\n\tbody.rtl.folded & {\n\t\t@media (min-width: $breakpoint-small) {\n\t\t\tright: 36px;\n\t\t\tleft: 0;\n\t\t}\n\t}\n\n}\n\n.wpo-page {\n\tbody.rtl & {\n\t\tpadding-right: 0;\n\t}\n\t@media (min-width: 769px) {\n\t}\n\n\t&:not(.active) {\n\t\tdisplay: none;\n\t}\n}\n\n.wpo-introduction-notice {\n\tpadding: 15px 20px;\n\tmargin-top: 30px;\n\tmargin-bottom: 30px;\n\tbackground: #FFF url('../images/notices/logo-bg-notice.png') no-repeat 100% 100%;\n\n\th3 {\n\t\tfont-size: 2em;\n\t}\n\n\tp:not(.font-size__normal) {\n\t\tfont-size: 1.2em;\n\t}\n\n\t.wpo-introduction-notice__footer-links {\n\t\tpadding-top: 20px;\n\t\t> a, > span {\n\t\t\tdisplay: inline-block;\n\t\t\tmargin-left: 5px;\n\t\t\tmargin-right: 5px;\n\t\t}\n\t}\n}\n\n/* Columns */\n@media (min-width: 1200px) {\n\n\t.wpo-tab-postbox.right-col {\n\t\twidth: 350px;\n\t\tfloat: right;\n\t\tbox-sizing: border-box;\n\t\tmargin-top: 3.1rem;\n\t}\n\n\t.right-col + .wpo-main {\n\t\tfloat: left;\n\t\tbox-sizing: border-box;\n\t\twidth: calc(100% - 380px);\n\t}\n\n}\n","@keyframes rotate {\n\n\t0% {\n\t\ttransform: rotate(0);\n\t}\n\n\t100% {\n\t\ttransform: rotate(360deg);\n\t}\n\n}\n\n/* Common BLOCKS */\n\n\n/* Buttons */\n\n#wp-optimize-wrap {\n\n\t.button-large {\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t.red {\n\t\tcolor: $red;\n\t}\n\n\tdiv[id*=\"_notice\"] div.updated,\n\t> .notice {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\ttextarea {\n\t\twidth: 100%;\n\t\tborder-radius: 5px;\n\t\theight: 100px;\n\t\tmin-height: 100px;\n\t\tmargin-top: 10px;\n\t\tmargin-bottom: 10px;\n\t}\n\t\n}\n\n.notice.notice-error.wpo-warning,\n.notice.notice-warning.wpo-warning {\n\tmargin-bottom: 18px;\n}\n\n.notice.notice-warning.wpo-warning p {\n\tpadding-left: 36px;\n\tposition: relative;\n}\n\n.notice.notice-warning.wpo-warning p > .dashicons {\n\tposition: absolute;\n\tleft: 0;\n\tfont-size: 26px;\n\ttop: 50%;\n\ttransform: translateY(-50%);\n\theight: 26px;\n\tcolor: #FFB900;\n}\n\n.button.button-block {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: center;\n}\n\n.wpo-refresh-button {\n\tfloat: right;\n}\n\n.wpo-refresh-button:hover {\n\tcursor: pointer;\n}\n\n.wpo-refresh-button .dashicons {\n\ttext-decoration: none;\n\tline-height: inherit;\n\tfont-size: inherit;\n}\n\n/* Helper classes */\n\n*[class*=\"wpo-badge\"] {\n\tdisplay: inline-block;\n\tfont-size: .8em;\n\ttext-transform: uppercase;\n\tbackground: $wp-lighter-gray;\n\tpadding: 3px 5px;\n\tline-height: 1;\n\tborder-radius: 3px;\n}\n\n.wpo-badge__new {\n\tbackground: #DBE3E6;\n\tcolor: #00689a;\n}\n\n.wpo-first-child {\n\tmargin-top: 0;\n}\n\n#save_done, .save-done {\n\tcolor: $success;\n\tfont-size: 250%;\n}\n\np.wpo-take-a-backup {\n\tdisplay: inline-block;\n\tmargin: 0;\n\tline-height: 1;\n\tpadding-top: 8px;\n}\n\n@media (min-width: $breakpoint-small) {\n\t.button ~ p.wpo-take-a-backup {\n\t\tmargin-left: 20px;\n\t}\n}\n\n/* Postbox */\n\n#wp-optimize-wrap .nav-tab-wrapper ~ .wp-optimize-nav-tab-contents > .postbox {\n\tborder: none;\n\n\t> h3:first-child {\n\t\tmargin-top: 0;\n\t}\n\n}\n\n.wpo-p25,\n.postbox.wpo-tab-postbox {\n\tpadding: 25px;\n}\n\n.wpo-tab-postbox {\n\t\n\t> h3:first-child {\n\t\tmargin-top: 0;\n\t}\n}\n\n/* Field group */\n\n.wpo-fieldgroup {\n\tbackground: $wp-lighter-gray;\n\tborder-radius: 8px;\n\tpadding: 20px;\n\n\t&:not(:last-child) {\n\t\tmargin-bottom: 2em;\n\t}\n\n\t> *:first-child {\n\t\tmargin-top: 0;\n\t}\n\t\n\t> *:last-child {\n\t\tmargin-bottom: 0;\n\t}\n\n\t&.premium-only {\n\t\tposition: relative;\n\t}\n\n\t.switch + label {\n\t\tfont-weight: 600;\n\t}\n\n\tcode {\n\t\tfont-size: inherit;\n\t\tbackground: #d8dbdc;\n\t\tborder-radius: 3px;\n\t}\n\n\tfieldset {\n\n\t\tlabel {\n\t\t\tdisplay: block;\n\t\t\tmargin-bottom: 6px;\n\t\t}\n\n\t}\n\n}\n\n.wpo-fieldgroup__subgroup {\n\t&:not(:last-of-type) {\n\t\tmargin-bottom: 20px;\n\t}\n}\n\n/* The switches */\n#wp-optimize-wrap {\n\n\t.switch {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t\twidth: 38px;\n\t\theight: 18px;\n\t\tmargin-right: 6px;\n\t\tbox-sizing: border-box;\n\n\t\t/* Hide default HTML checkbox */\n\t\tinput {\n\t\t\topacity: 0;\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t}\n\n\t\t/* The slider */\n\t\t.slider {\n\t\t\tposition: absolute;\n\t\t\tcursor: pointer;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t\tbackground-color: $wp-lighter-gray;\n\t\t\ttransition: .2s;\n\n\t\t\t&::before {\n\t\t\t\tposition: absolute;\n\t\t\t\tcontent: \"\";\n\t\t\t\theight: 8px;\n\t\t\t\twidth: 8px;\n\t\t\t\tleft: 2px;\n\t\t\t\tbottom: 2px;\n\t\t\t\tbackground-color: $wp-gray-dark;\n\t\t\t\tborder: 1px solid $wp-gray-dark;\n\t\t\t\ttransition: all .2s;\n\t\t\t}\n\n\t\t\t&::after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\theight: 4px;\n\t\t\t\twidth: 3px;\n\t\t\t\tright: 4px;\n\t\t\t\ttop: 4px;\n\t\t\t\tborder-radius: 50%;\n\t\t\t\tborder: 1px solid $wp-secondary-gray;\n\t\t\t\tbox-sizing: content-box\n\t\t\t}\n\n\t\t\t/* Rounded sliders */\n\t\t\t&.round {\n\t\t\t\tborder-radius: 23px;\n\t\t\t\tborder: 2px solid $wp-gray-dark;\n\t\t\t\t&::before {\n\t\t\t\tborder-radius: 50%;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tinput:checked + .slider {\n\t\t\tbackground: $wp-blue;\n\t\t\tborder-color: $wp-blue;\n\t\t\t&::before {\n\t\t\t\tbackground: #FFF;\n\t\t\t\tborder-color: #FFF;\n\t\t\t\ttransform: translateX(20px);\n\t\t\t}\n\n\t\t\t&::after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\theight: 6px;\n\t\t\t\twidth: 2px;\n\t\t\t\tleft: 7px;\n\t\t\t\ttop: 4px;\n\t\t\t\tbackground: #FFF;\n\t\t\t\tborder: none;\n\t\t\t}\n\n\t\t}\n\t\tinput:disabled + .slider,\n\t\tinput:disabled:checked + .slider {\n\t\t\tbackground: $wp-gray-dark;\n\t\t\tborder-color: $wp-gray-dark;\n\t\t\topacity: 0.3;\n\t\t}\t\t\n\n\t\tinput:focus + .slider {\n\t\t\tbox-shadow: 0 0 0 2px $wp-lighter-gray, 0 0 0 3px $wp-gray-dark;\n\t\t}\n\n\t}\n\n\t.switch-container {\n\t\tdisplay: block;\n\t\tclear: both;\n\t\tlabel {\n\t\t\tline-height: 1;\n\t\t\tvertical-align: middle;\n\t\t}\n\t\t& + small {\n\t\t\tmargin-left: 49px;\n\t\t}\n\t\t[data-tooltip] .dashicons {\n\t\t\ttransform: translateY(-3px);\n\t\t}\n\t}\n\n\t.wpo-fieldgroup > .switch-container:first-child {\n\t\tpadding-top: 0;\n\t}\n\n}\n\nlabel.wpo-label__bold {\n\tfont-weight: 600;\n}\n\n/* Help popup */\n\n.wpo-info {\n\tposition: relative;\n\tdisplay: inline-block;\n\t@media (max-width:480px) {\n\t\tdisplay: block;\n\t}\n}\n\n.wpo-info__content {\n\topacity: 0;\n\tvisibility: hidden;\n\tposition: absolute;\n\ttop: 100%;\n\tleft: -25px;\n\tbackground: #FFF;\n\tpadding: 20px;\n\twidth: 380px;\n\tmax-width: 380px;\n\tz-index: 5;\n\tbox-shadow: 0px 11px 25px 0px rgba(0, 0, 0, 0), 0px 11px 25px 3000px rgba(0, 0, 0, 0);\n\ttransition: 0.2s all;\n\n\t@media (max-width:480px) {\n\t\twidth: auto;\n\t}\n}\n\nspan.wpo-info__close {\n\tdisplay: none;\n\tmargin-left: 20px;\n\tcolor: #444;\n}\n\n.wpo-info.opened {\n\n\tspan.wpo-info__close {\n\t\tdisplay: inline-block;\n\t}\n\n\t.wpo-info__content {\n\t\topacity: 1;\n\t\tvisibility: visible;\n\t\tbox-shadow: 0px 11px 25px 0px rgba(0, 0, 0, 0.3), 0px 11px 25px 3000px rgba(0, 0, 0, 0.3);\n\t}\n\n\ta.wpo-info__trigger {\n\t\tz-index: 6;\n\t}\n\t\n}\n\n.wpo-info__content img,\n.wpo-info__content iframe {\n\tmax-width: 100%;\n}\n\na.wpo-info__trigger {\n\tdisplay: inline-block;\n\ttext-decoration: none;\n\tpadding: 10px;\n\tposition: relative;\n\tbackground: #FFF;\n\tmargin-left: -10px;\n}\n\na.wpo-info__trigger span.dashicons {\n\ttext-decoration: none;\n\tvertical-align: middle;\n}\n\n.wpo_section.wpo_group.wpo-feature-is-disabled > *:not(.wpo-show) {\n opacity: 0.5;\n}\n\n/* Custom Block UI */\n\n.wpo_shade {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 0;\n\tright: 0;\n\ttop: 0;\n\tbottom: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 9979;\n\topacity: 1;\n\tbackground-color: rgba(255, 255, 255, 0.88);\n}\n\n.wpo_shade.hidden {\n\tdisplay: none;\n}\n\n.wpo_shade_inner {\n\ttext-align: center;\n\tpadding-top: 80px;\n}\n\n.wpo_shade_inner h4 {\n\tfont-size: 2em;\n}\n\n.wpo_shade_inner .dashicons.dashicons-update-alt {\n\tfont-size: 50px;\n\theight: 50px;\n\twidth: 50px;\n}\n\n.wpo-rotate {\n\tanimation: rotate 1s linear infinite;\n\ttransform-origin: 50% 50%;\n}\n","/* TABS */\n\n#wp-optimize-wrap h2.nav-tab-wrapper {\n margin-bottom: 0;\n\tborder-bottom: none;\n\tposition: relative;\n\t\n\t.nav-tab,\n\t.nav-tab:hover,\n\t.nav-tab:focus,\n\t.nav-tab:focus:active {\n\t\tborder: none;\n\t\tbackground: transparent;\n\t\tmargin: 0;\n\t\tborder-top: 3px solid transparent;\n\t\tpadding: 7px 15px;\n\t\tcolor: $wp-blue;\n\n\t\t.dashicons {\n\t\t\tdisplay: block;\n\t\t\tmargin: 0 auto;\n\t\t\tcolor: $wp-secondary-gray;\n\t\t\tfont-size: 30px;\n\t\t\twidth: 30px;\n\t\t\theight: 30px;\n\t\t}\n\t\t\n\t\tspan.premium-only {\n\t\t\tdisplay: inline-block;\n\t\t\tmargin-left: 6px;\n\t\t\tpadding: 4px;\n\t\t\tfont-size: 10px;\n\t\t\tbackground: $wp-blue;\n\t\t\tline-height: 1;\n\t\t\tborder-radius: 3px;\n\t\t\tcolor: #FFF;\n\t\t\tfont-weight: 300;\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: .06em;\n\t\t}\t\t\n\t}\n\t\n\t.nav-tab-active,\n\t.nav-tab-active:hover,\n\t.nav-tab-active:focus,\n\t.nav-tab-active:focus:active {\n\t\tbackground: #FFF;\n\t\tbox-shadow: 0 0 1px rgba(0, 0, 0, 0.04);\n\t\tborder-top-color: $wp-blue;\n\n\t\t.dashicons {\n\t\t\tcolor: $wp-blue;\n\t\t}\n\t}\n\n\t.wpo-feedback {\n\t\tdisplay: block;\n\t\tfloat: right;\n\t\tposition: relative;\n\n\t\t> .nav-tab,\n\t\t> .nav-tab:hover,\n\t\t> .nav-tab:focus,\n\t\t> .nav-tab:focus:active {\n\t\t\tposition: relative;\n\t\t\t.dashicons {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tfont-size: 20px;\n\t\t\t\theight: 18px;\n\t\t\t\ttransform: translateY(4px);\n\t\t\t}\n\t\t}\n\n\t\t> div {\n\t\t\tdisplay: none;\n\t\t}\n\t\t&:hover {\n\t\t\ta.nav-tab::after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom: 0;\n\t\t\t\tright: 0;\n\t\t\t\theight: 2px;\n\t\t\t\twidth: 100%;\n\t\t\t\tbackground-color: #0172aa;\n\t\t\t}\n\t\t\t> div {\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: block;\n\t\t\t\tbackground: #FFF;\n\t\t\t\tpadding: 15px;\n\t\t\t\tright: 0;\n\t\t\t\ttop: 100%;\n\t\t\t\tz-index: 4;\n\t\t\t\tbox-shadow: 0px 11px 25px 0px rgba(0, 0, 0, 0.1);\n\t\t\t\twidth: 350px;\n\n\t\t\t\ta {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\tpadding: 6px 3px;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t@media (max-width: $breakpoint-small) {\n\t\t.wpo-feedback {\n\t\t\tdisplay: none;\n\t\t}\n\t\ta:not(.nav-tab-active) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\t\n\ta[role=\"toggle-menu\"] {\n\t\tdisplay: block;\n\t\tfloat: right;\n\t\t@media (min-width: $breakpoint-small) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\n\ta.nav-tab.wp-optimize-nav-tab__back {\n\t\t&, &:focus:active {\t\n\n\t\t\ttext-align: right;\n\n\t\t\t.dashicons {\n\t\t\t\tcolor: $wp-light-gray;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\theight: auto;\n\t\t\t\tline-height: inherit;\n\t\t\t\twidth: 20px;\n\t\t\t}\n\n\t\t\t@media (min-width: $breakpoint-small) {\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom: 14px;\n\t\t\t\tright: 0;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-weight: 400;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tpadding: 0;\n\t\t\t\n\t\t\t\t.dashicons {\n\t\t\t\t\tcolor: $wp-light-gray;\n\t\t\t\t\tfont-size: 18px;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\theight: auto;\n\t\t\t\t\tline-height: inherit;\n\t\t\t\t\twidth: 20px;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t}\n\t\n\t}\n}\n\n@media (max-width: $breakpoint-small) {\n\n\t.wpo-mobile-menu-opened {\n\n\t\t.wpo-main .wpo-tab-postbox {\n\t\t//\tdisplay: none;\n\t\t}\n\n\t\th2.nav-tab-wrapper a {\n\t\t\tdisplay: block;\n\t\t\tfloat: none;\n\n\t\t\t&.nav-tab {\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\n\t\t\t&:not(.nav-tab-active) {\n\t\t\t\tbackground: #f9f9f9 !important;\n\t\t\t}\n\n\t\t\t&.nav-tab-active,\n\t\t\t&.nav-tab-active:focus {\n\t\t\t\tborder-top: none;\n\t\t\t\tborder-left: 3px solid;\n\t\t\t}\n\n\t\t\t&.nav-tab-active,\n\t\t\t&.nav-tab-active:focus,\n\t\t\t&:focus,\n\t\t\t&:hover,\n\t\t\t& {\n\t\t\t\t.dashicons {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tline-height: inherit;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&[role=\"toggle-menu\"] {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\n\t}\n\n}\n\n\n/* Pages MENU */\n\n.wpo-pages-menu {\n\tposition: absolute;\n\tbottom: 0;\n\tright: 0;\n\tdisplay: none;\n\n\t@media (max-width: 820px) {\n\t\t.opened + & {\n\t\t\tdisplay: block;\n\t\t\tbox-shadow: 0 5px 25px rgba(0, 0, 0, 0.17);\n\t\t}\n\t}\n\n\t@media (min-width: 821px) {\n\t\tdisplay: flex;\n\t\theight: 77px;\n\t}\n\n\t> a {\n\t\ttext-decoration: none;\n\t\tposition: relative;\n\t\tcolor: inherit;\n\t\ttext-align: center;\n\t\tbox-sizing: border-box;\n\t\tdisplay: block;\n\t\tcolor: $wp-gray-dark;\n\n\t\t@media (min-width: 821px) {\n\t\t\tpadding: 0 8px;\n\t\t\theight: 77px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: center;\n\n\t\t\t> span {\n\t\t\t\tdisplay: block;\n\t\t\t\tmargin: 0 auto;\n\t\t\t}\n\t\t}\n\n\t\t@media (max-width: 820px) {\n\t\t\tpadding: 15px;\n\t\t\tfont-size: 1.2em;\n\t\t}\n\n\t\t&.active {\n\t\t\t&::after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom: 0;\n\t\t\t\tleft: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 3px;\n\t\t\t\tbackground: $brand;\n\t\t\t\tcolor: $wp-gray-darker;\n\n\t\t\t\t@media (max-width: 820px) {\n\t\t\t\t\twidth: 3px;\n\t\t\t\t\theight: 100%;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t@media (max-width: 820px) {\n\t\t\t\tcolor: $brand;\n\t\t\t}\n\t\t}\n\n\t\t&:hover {\n\t\t\tbackground: #F9F9F9;\n\t\t\tcolor: $wp-gray-darker;\n\t\t}\n\t}\n\n\tspan.separator {\n\t\tdisplay: block;\n\t\twidth: 2px;\n\t\tbackground: #EFEFEF;\n\t\tmargin-top: 18px;\n\t\tmargin-bottom: 18px;\n\t\tmargin-right: 5px;\n\t\tmargin-left: 5px;\n\t\t@media (max-width: 820px) {\n\t\t\twidth: 80%;\n\t\t\theight: 2px;\n\t\t\tmargin: 10px 10%;\n\t\t}\n\t}\n\n\t@media (max-width: 820px) {\n\t\ttext-align: center;\n\t\ttop: 100%;\n\t\twidth: 100%;\n\t\tbottom: auto;\n\t\tbackground: #FFF;\t\t\n\n\t}\n\n\tbody.rtl & {\n\t\tleft: 0;\n\t\tright: auto;\n\t}\n}\n\n#wp-optimize-nav-page-menu {\n\tposition: absolute;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\theight: 77px;\n flex-direction: column;\n padding: 0 20px;\n align-items: center;\n justify-content: center;\n\ttext-decoration: none;\n\n\t&:not(.opened) .dashicons-no-alt {\n\t\tdisplay: none;\n\t}\n\n\t&.opened .dashicons-menu {\n\t\tdisplay: none;\n\t}\n\n\t@media (min-width: 821px) {\n\t\tdisplay: none;\n\t}\n\n\tbody.rtl & {\n\t\tright: auto;\n\t\tleft: 0;\n\t}\n}\n\n/* DASHBOARD Menu */\n\n/* Calculate column width with a $spacing gutter */\n.wpo-dashboard-pages-menu {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t/* Same size for 1 to 3 items */\n\t&[data-itemscount=\"1\"],\n\t&[data-itemscount=\"2\"],\n\t&[data-itemscount=\"3\"] {\n\t\t.wpo-dashboard-pages-menu__item {\n\t\t\twidth: calc(33.333% - 40px / 3);\n\t\t}\n\t}\n\n\t/* above 3 items, change sizes */\n\t@for $count from 4 to 6 {\n\t\t&[data-itemscount=\"$count\"] {\n\t\t\t.wpo-dashboard-pages-menu__item {\n\t\t\t\twidth: calc(100% / $count - $spacing * ($count - 1) / $count);\n\t\t\t}\n\t\t}\n\t}\n\n\t.postbox.wpo-dashboard-pages-menu__item {\n\t\tpadding: $spacing;\n\t\tmargin-right: $spacing;\n\t\tbox-sizing: border-box;\n\t\tpadding-bottom: 60px;\n\t\tmin-width: 0;\n\t\n\t\t&:last-child {\n\t\t\tmargin-right: 0;\n\t\t}\n\t\n\t\th3 {\n\t\t\tmargin-top: 0;\n\n\t\t\t.dashicons {\n\t\t\t\tcolor: $wp-secondary-gray;\n\t\t\t\tline-height: 1;\n\t\t\t\theight: 18px;\n\t\t\t\tmargin-top: -2px;\n\t\t\t\tmargin-right: 10px\n\t\t\t}\n\n\t\t}\n\n\t\ta {\n\t\t\tposition: absolute;\n\t\t\tbottom: $spacing;\n\t\t\tleft: $spacing;\n\t\t\twidth: calc(100% - $spacing * 2) !important;\n\t\t}\n\n\t\t@media (max-width: $breakpoint-small) {\n\t\t\twidth: 100%;\n\t\t\tmargin-right: 0;\n\t\t\tpadding-bottom: 20px;\n\n\t\t\ta.button.button-large {\n\t\t\t\twidth: auto !important;\n\t\t\t\tleft: auto;\n\t\t\t\tbottom: auto;\n\t\t\t\ttop: 50%;\n\t\t\t\ttransform: translateY(-50%);\n\t\t\t\tright: $spacing;\n\t\t\t}\n\n\t\t\th3 {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\tp {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t}\n\t\n\t}\n\n}\n\n/* Admin bar separator */\n\n#wpadminbar .quicklinks .menupop.hover ul li.separator .ab-item.ab-empty-item {\n height: 2px;\n line-height: 2px;\n background: #ffffff17;\n margin: 5px 10px;\n width: auto;\n min-width: 0;\n}","/* CSS for adverts */\n\n.updraft-ad-container.updated,\n.updraft-ad-container {\n\tmargin-left: 0px;\n\tmargin-right: 0px;\n\tposition: relative;\n\tpadding-right: 80px;\n}\n\n/* General notices (non WPO) on the WPO page */\n\nbody[class*=WP-Optimize],\nbody[class*=wp-optimize] {\n\t.notice, .error {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n}\n\n/*\n\tMake the main error notice sticky\n*/\n\nbody.wp-core-ui.is-scrolled .wpo-main-error-notice {\n position:fixed;\n top: 132px;\n left: 160px;\n right: 0;\n z-index: 20;\n transition: .2s all;\n}\n\n/* Remove other notices */\n\ndiv#wpbody-content {\n\t> .notice:not(.wpo-notice),\n\t> .warning:not(.wpo-notice),\n\t> .updated:not(.wpo-notice),\n\t> .error:not(.wpo-notice) {\n\t\tdisplay: none;\n\t}\n}\n\n.toplevel_page_WP-Optimize.rtl .notice,\n.toplevel_page_WP-Optimize.rtl div.updated,\n.toplevel_page_WP-Optimize.rtl div.error,\n.toplevel_page_WP-Optimize .notice,\n.toplevel_page_WP-Optimize div.updated,\n.toplevel_page_WP-Optimize div.error {\n\tmargin-right: 0;\n}\n\nbody.rtl .updraft-ad-container.updated,\nbody.rtl .updraft-ad-container {\n\tpadding-right: 10px;\n\tpadding-left: 80px;\n}\n\n.updraft_notice_container {\n\tpadding: 7px;\n\tdisplay: -webkit-box;\n\tdisplay: -ms-flexbox;\n\tdisplay: flex;\n\t-webkit-box-align: left;\n\t-ms-flex-align: left;\n\talign-items: left;\n\tflex-direction: column;\n\theight: auto;\n\toverflow: hidden;\n}\n\n.updraft_advert_content_left {\n\tfloat: none;\n\twidth: 65px;\n}\n\n.updraft_advert_content_right {\n\tfloat: none;\n\twidth: auto;\n\toverflow: hidden;\n}\n\n.updraft_advert_bottom {\n\tmargin: 10px 0;\n\tpadding: 10px;\n\tfont-size: 140%;\n\tbackground-color: #FFF;\n\tborder-color: #E6DB55;\n\tborder: 1px solid;\n\tborder-radius: 4px;\n}\n\n.updraft-advert-dismiss {\n\tposition: absolute;\n\tfont-size: 13px;\n\ttop: 5px;\n\tright: 10px;\n}\n\nbody.rtl .updraft-advert-dismiss {\n\tleft: 10px;\n\tright: auto;\n}\n\nh3.updraft_advert_heading {\n\tmargin-top: 5px !important;\n\tmargin-bottom: 5px !important;\n}\n\nh4.updraft_advert_heading {\n\tmargin-top: 2px !important;\n\tmargin-bottom: 3px !important;\n}\n\n.updraft_center_content {\n\ttext-align: center;\n\tmargin-bottom: 5px;\n}\n\n.updraft_notice_link {\n\tpadding-left: 5px;\n}\n\n.updraft_text_center {\n\ttext-align: center;\n}\n\n.wpo-main-header + .updraft-ad-container,\n.wpo-main-header + .updated {\n\tmargin-bottom: 20px;\n}\n\n@media screen and (min-width: 560px) {\n\n\t.updraft_notice_container {\n\t\tflex-direction: row;\n\t\t-webkit-box-align: center;\n\t\t-ms-flex-align: center;\n\t\talign-items: center;\n\t}\n\n}\n\n@media screen and (max-width: 560px) {\n\n\tbody.rtl .updraft-ad-container.updated,\n\tbody.rtl .updraft-ad-container {\n\t\tpadding-right: 10px;\n\t\tpadding-left: 10px;\n\t}\n\n}\n\n@media screen and (max-width: 768px) {\n\n\t.wpo-main-header + .updraft-ad-container,\n\t.wpo-main-header + .updated {\n\t\tmargin-right: 0;\n\t}\n\n}\n\n","/* Unused images / wpo_smush_image / image grid*/\n\n.wpo_unused_image, .wpo_smush_image {\n\tposition: relative;\n\tmargin: 4px;\n\twidth: calc(50% - 8px);\n\ttext-align: center;\n\n\t@media (min-width: 500px) {\n\t\twidth: calc(25% - 8px);\n\t}\n\n\t@media (min-width: $breakpoint-small) {\n\t\twidth: calc(16.6666% - 8px);\n\t}\n\n\t@media (min-width: 1100px) {\n\t\twidth: calc(12.5% - 8px);\n\t}\n\n\t.wpo_unused_image__input {\n\t\tposition: absolute;\n\t\ttop: 10px;\n\t\topacity: 0;\n\t\twidth: 0;\n\t\theight: 0;\n\t}\n\t\n\tlabel {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tposition: relative;\n\t\tpadding: 1px;\n\t\tborder: 3px solid $wp-lighter-gray;\n\t\tbox-sizing: border-box;\n\n\t\t&::before {\n\t\t\tcontent: \"\";\n\t\t\tdisplay: block;\n\t\t\tpadding-top: 100%;\n\t\t}\n\n\t\t.thumbnail {\n\t\t\tposition: absolute;\n\t\t\ttop: 1px;\n\t\t\tleft: 1px;\n\t\t\twidth: calc(100% - 2px);\n\t\t\theight: calc(100% - 2px);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-size: cover;\n\t\t\tbackground-position: 50% 50%;\n\t\t\toverflow: hidden;\n\t\t\tbackground: rgba(220, 220, 220, 0.2);\n\n\t\t\timg {\n\t\t\t\tdisplay: block;\n\t\t\t\tmargin: 0;\n\t\t\t\tmax-height: 100%;\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translate(-50%,-50%);\n\t\t\t\tuser-select: none;\n\t\t\t}\n\n\t\t}\n\n\t\tspan.dashicons {\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\tleft: 50%;\n\t\t\ttransform: translate(-50%, -50%);\n\t\t\tfont-size: 25px;\n\t\t\twidth: 25px;\n\t\t\topacity: .2;\n\t\t}\n\t}\n\t\n\t.wpo_unused_image__input:checked + label,\n\t&.selected label {\n\t\tborder-color: $wp-blue;\n\t}\n\n\t&:focus-within label {\n\t\tbox-shadow: 0 0 4px $wp-blue;\n\t}\n\t\n\ta, a.button, a.button:active {\n\t\tposition: absolute;\n\t\tz-index: 2;\n\t\tbottom: 13px;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t\tdisplay: none;\n\t}\n\n\t&:hover {\n\n\t\ta, a.button, a.button:active {\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t}\n\n}\n\n#wpo_unused_images, #wpo_unused_images_trash, #wpo_smush_images_grid {\n\twidth: calc(100% + 8px);\n margin-left: -4px;\n margin-right: -4px;\n\tmax-height: 500px;\n\toverflow-y: auto;\n display: flex;\n\tflex-wrap: wrap;\n\tposition: relative;\n\n\t.wpo-fieldgroup {\n\t\twidth: 100%;\n\t\tmargin: 4px;\n\t}\n\n}\n\n#wpo_unused_images a, #wpo_unused_images_trash a {\n\toutline: none;\n}\n\n.wpo-unused-images__premium-mask,\n.wpo-unused-image-sizes__premium-mask {\n\tposition: absolute;\n\ttop: 0; \n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 1;\n\tbackground: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.85));\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.wpo-unused-image-sizes__premium-mask {\n\tbackground: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.85));\n}\n\na.wpo-unused-images__premium-link {\n\tbackground: #FFF;\n\tdisplay: inline-block;\n\tpadding: 10px;\n\tborder-radius: 3px;\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n}\n","/* More Plugins page */\n\n/* Plugins family / Premium */\n\np.wpo-plugin-installed {\n color: $success;\n}\n\n/* Settings repeater */\n\n.wpo-repeater__add {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tfont-weight: bold;\n\ttext-decoration: none;\n}\n\n\n/* Plugin familly tab */\n\n.wpo-plugin-family__premium h2 {\n margin: 0;\n padding: 25px;\n}\n\n.wpo-plugin-family__plugins {\n display: flex;\n flex-wrap: wrap;\n\tpadding-left: 1px;\n\tpadding-bottom: 1px;\n}\n\n.wpo-plugin-family__plugin {\n flex: auto;\n width: 100%;\n padding: 30px;\n box-sizing: border-box;\n border: 1px solid #E3E4E7;\n\tmargin-left: -1px;\n\tmargin-bottom: -1px;\n\n\t@media (min-width: $breakpoint-small) {\n\t\twidth: 50%;\n\n\t\t.wpo-plugin-family__free & {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t@media (max-width: 1080px) {\n\t\t.wpo-plugin-family__free & {\n\t\t\twidth: 50%;\n\t\t}\n\t}\n\n\t@media (max-width: $breakpoint-small) {\n\t\t.wpo-plugin-family__free & {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n}\n\ndiv#wp-optimize-nav-tab-wpo_mayalso-may_also-contents .wpo-tab-postbox {\n padding: 0;\n}\n\n/* Added for WPO Premium Features tab */\n.wpo_feature_cont {\n\twidth: 64.5%;\n}\n\n.wpo_plugin_family_cont {\n\twidth: 34.5%;\n}\n\n@media (max-width: 1080px) {\n\n\t.wpo_feature_cont,\n\t.wpo_plugin_family_cont {\n\t\twidth: 100%;\n\t\tfloat: none;\n\t\tmargin: 0;\n\t}\n\n}\n\n.wpo_feature_cont,\n.wpo_plugin_family_cont {\n\n\theader {\n\t\tpadding: 20px;\n\n\t\t@media (max-width: 1080px) {\n\t\t\tpadding: 40px;\t\t\n\t\t}\n\n\t\th2 {\n\t\t\tmargin: 0;\n\t\t}\n\t\n\t\tp {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t}\n\n}\n\n.wpo_feat_table, .wpo_feat_th, .wpo_feat_table td {\n\tborder: none;\n\tborder-collapse: collapse;\n\tbackground-color: white;\n\tfont-size: 120%;\n\ttext-align: center;\n}\n\n.wpo_feat_table {\n\ttd {\n\t\tborder: 1px solid #F1F1F1;\n\t\tborder-bottom-width: 4px;\n\t\tpadding: 15px;\n\t}\n\n\ttd:nth-child(2), td:nth-child(3) {\n\t\tbackground: rgba(241, 241, 241, 0.38);\n\t}\n\n\tp {\n\t\tpadding: 0px 10px;\n\t\tmargin: 5px 0px;\n\t\tfont-size: 13px;\n\t}\n\n\th4 {\n\t\tmargin: 5px 0px;\n\t}\n\n\t.dashicons {\n\t\twidth: 25px;\n\t\theight: 25px;\n\t\tfont-size: 25px;\n\t\tline-height: 1;\n\t}\n\n\t.dashicons-yes, .updraft-yes {\n\t\tcolor: green;\n\t}\n\t\n\t.dashicons-no-alt, .updraft-no {\n\t\tcolor: red;\n\t}\n\t\n\ttr.wpo-main-feature-row td {\n\t\tbackground: #f1f1f1;\n\t\tborder-bottom-color: #fafafa;\n\n\t\timg.wpo-premium-image {\n\t\t\twidth: 64px;\n\t\t}\n\t}\n}\n\n\n\n.wpo-premium-image {\n\tdisplay: none;\n}\n\n@media screen and (min-width: 720px) {\n\n\t#wpoptimize_table_list_filter {\n\t\twidth: 40%;\n\t}\n\n\t.wpo-premium-image {\n\t\tdisplay: block;\n\t\tfloat: left;\n\t\tpadding: 16px 18px;\n\t\twidth: 30px;\n\t\theight: auto;\n\t}\n\n}\n\n@media screen and (min-width: 1220px) {\n\n\t.wpo_feat_table td:nth-child(2), .wpo_feat_table td:nth-child(3) {\n\t\twidth: 110px;\n\t}\n\n}\n\n.other-plugin-title {\n\ttext-decoration: none;\n}\n\n@media screen and (max-width: $breakpoint-small) {\n\n\ttable.wpo_feat_table {\n\n\t\tdisplay: block;\n\n\t\ttr {\n\t\t\tdisplay: flex;\n\t\t\tflex-wrap: wrap;\n\t\t}\n\n\t\ttd {\n\t\t\tdisplay: block;\n\n\t\t\t&:first-child {\n\t\t\t\twidth: 100%;\n\t\t\t\tborder-bottom: none;\n\t\t\t}\n\n\t\t\t&:not(:first-child) {\n\t\t\t\twidth: 50%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\n\t\t\t&:first-child:empty {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t&[data-colname]::before {\n\t\t\t\tcontent: attr(data-colname);\n\t\t\t\tfont-size: 0.8rem;\n\t\t\t\tcolor: #CCC;\n\t\t\t\tline-height: 1;\n\t\t\t}\n\t\t}\n\t}\n\n}\n\n.wpo-cache-feature-image {\n\twidth: 40px;\n\tpadding: 16px 14px;\n}\n","\n/* tablesorter */\n\n#wp-optimize-wrap {\n\n\t.wp-list-table {\n\t\t\n\t\ttd {\n\t\t\tword-break: break-all; \n\t\t}\n\n\t}\n\n\t@media screen and (max-width: $breakpoint-small ) {\n\n\t\t.wp-list-table.wp-list-table-mobile-labels tbody {\n\n\t\t\t&, tr, th, td {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\tpadding: 3px 8px 3px 35%;\n\t\t\t\tword-break: break-word;\n\t\t\t\tbox-sizing: border-box; \n\n\t\t\t\t&::before {\n\t\t\t\t\tcolor: $wp-light-gray;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\t\t\n\n\t\t.wp-list-table.wp-list-table-mobile-labels thead {\n\n\t\t\t&, tr {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\tth.column-primary {\n\t\t\t\tdisplay: block;\n\t\t\t\tbox-sizing: border-box; \n\t\t\t}\n\n\t\t\tth:not(.column-primary) {\n\t\t\t\tdisplay: none !important; \n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tbody.rtl & {\n\t\t.wpo-table-list-filter {\n\t\t\ttext-align: left;\n\t\t}\n\t\t@media screen and (max-width: $breakpoint-small ) {\n\t\t\t.wp-list-table.wp-list-table-mobile-labels tbody {\n\t\t\t\ttd {\n\t\t\t\t\tpadding: 3px 35% 3px 8px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n.tablesorter-headerRow th {\n\tvertical-align: top;\n}\n\nth:not(.sorter-false) .tablesorter-header-inner {\n\n\tcolor: #0074ab;\n\n\t&::after {\n\t\tcontent: '';\n\t\tfont-family: 'dashicons';\n\t\tfont-size: 20px;\n\t\tline-height: 20px;\n\t\theight: 20px;\n\t\twidth: 20px;\n\t\tdisplay: none;\n\t\tvertical-align: bottom;\n\t}\n\n}\n\nth.tablesorter-header.tablesorter-headerAsc,\nth.tablesorter-header.tablesorter-headerDesc {\n font-weight: 500;\n border-bottom-color: $wp-blue;\n\t.tablesorter-header-inner::after {\n\t\tdisplay: inline-block;\n\t}\n}\n\nth.tablesorter-header.tablesorter-headerDesc .tablesorter-header-inner::after {\n content: \"\\f140\";\n}\n\nth.tablesorter-header.tablesorter-headerAsc .tablesorter-header-inner::after {\n content: \"\\f142\";\n}\n\nth.tablesorter-header:focus {\n outline: none;\n\tbox-shadow: 0 0 3px rgba(0, 116, 171, 0.78);\n\n\t&:not(.tablesorter-headerAsc):not(.tablesorter-headerDesc) .tablesorter-header-inner::after {\n\t\tcontent: \"\\f142\";\n\t\topacity: 0.5;\n\t}\n\n}\n\n.tablesorter.hasFilters tr.filtered {\n display: none;\n}\n",".wpo-text__dim {\n .dashicons-info {\n margin-top: 2px;\n margin-right: 5px;\n border-radius: 30px;\n background: #fff;\n color: $red;\n }\n}\n\n#page_cache_length_value {\n height: 28px;\n position: relative;\n top: 2px;\n}\n\n#wp_optimize_preload_cache_status {\n margin-left: 10px;\n display: inline-block;\n color: #82868B;\n font-size: smaller;\n}\n\n.align-left {\n margin: 10px 10px 0px 0px;\n float: left;\n}\n\ntextarea.cache-settings {\n display: block;\n clear: both;\n min-height: 225px;\n overflow: scroll;\n min-width: 75%;\n margin: 10px 0px;\n}\n\n#wp-optimize-purge-cache, \n#wp-optimize-purge-cache ~ span, \n#wp-optimize-purge-cache ~ img {\n vertical-align: middle;\n top: auto;\n}\n\n#wp-optimize-nav-tab-wpo_cache-cache-contents .wpo-error {\n font-size: 12px;\n}\n\n\n#wpo_browser_cache_error_message {\n padding-top: 10px;\n padding-bottom: 10px;\n margin-left: 0;\n margin-bottom: 10px;\n \n &:empty {\n display: none;\n }\n}\n\n#wp-optimize-nav-tab-wpo_cache-advanced-contents,\n#wp-optimize-nav-tab-wpo_cache-preload-contents,\n#wp-optimize-nav-tab-wpo_cache-cache-contents {\n label {\n font-weight: 600;\n }\n}\n\n.wpo-gzip-already-enabled span.dashicons.dashicons-yes,\n.wpo-enabled > span.dashicons.dashicons-yes {\n font-size: 40px;\n width: 40px;\n height: 40px;\n line-height: 40px;\n vertical-align: middle;\n color: green;\n}\n","#wp-optimize-wrap {\n\n\t.filename {\n\t\tdisplay: inline-block;\n\t\tpadding: 6px 0;\n\t}\n\n\t.no-files-yet .filename {\n\t\tfont-style: italic;\n\t}\n\n\t.processed {\n\t\tmargin: 0;\n\t}\n\n\t.processed .wpo_min_log {\n\t\tpadding: 8px;\n\t\tbackground: white;\n\t\tborder: 1px solid #CDCDCD;\n\t\tborder-radius: 4px;\n\t\tline-height: 1.5em;\n\t\tul {\n\t\t\toverflow-x: auto;\n\t\t\tli {\n\t\t\t\twhite-space: nowrap;\n\t\t\t\t&.failed .wpo_min_file_url {\n\t\t\t\t\tcolor: #dc3232;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\th5 {\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 8px;\n\t\t\tborder-bottom: 1px solid #cdcdcd;\n\t\t\tpadding-bottom: 6px;\n\t\t}\n\t\t.wpo_min_file_debug {\n\t\t\tcolor: #9c9c9c;\n\t\t\tdisplay: inline-block;\n\t\t\t&::before {\n\t\t\t\tcontent: '—';\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmargin: 0 10px;\n\t\t\t}\n\t\t}\n\t}\n\n\t.show-if-enabled {\n\t\tdisplay: none;\n\t}\n\n\t.is-enabled .show-if-enabled {\n\t\tdisplay: block;\n\t}\n\n\t.wpo-fieldgroup__subgroup.wpo_min_enable_minify + .wpo-fieldgroup__subgroup {\n\t\tdisplay: none;\n\t}\n\t\n\t.wpo-fieldgroup__subgroup.wpo_min_enable_minify.enabled + .wpo-fieldgroup__subgroup {\n\t\tdisplay: block;\n\t}\n\n\t.wpo-fieldgroup__subgroup.wpo_min_enable_minify:not(.enabled) {\n\t\tmargin-bottom: 0;\n\t}\n}\n"]}
|
css/wp-optimize-admin.css
CHANGED
|
@@ -147,6 +147,8 @@
|
|
| 147 |
|
| 148 |
/* .wp-optimize-settings-clean-transient label, .wp-optimize-settings-clean-pingbacks label, .wp-optimize-settings-clean-trackbacks label, .wp-optimize-settings-clean-postmeta label, .wp-optimize-settings-clean-orphandata label, .wp-optimize-settings-clean-commentmeta label */
|
| 149 |
|
|
|
|
|
|
|
| 150 |
.wp-optimize-setting-is-sensitive td > label::before {
|
| 151 |
content: "\f534";
|
| 152 |
font-family: 'dashicons';
|
|
@@ -166,6 +168,10 @@
|
|
| 166 |
margin-bottom: 15px;
|
| 167 |
}
|
| 168 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 169 |
td.wp-optimize-settings-optimization-checkbox {
|
| 170 |
width: 18px;
|
| 171 |
padding-left: 4px;
|
|
@@ -960,6 +966,16 @@ body.rtl .wpo-page {
|
|
| 960 |
margin-right: 0;
|
| 961 |
}
|
| 962 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 963 |
.notice.notice-warning.wpo-warning {
|
| 964 |
margin-bottom: 18px;
|
| 965 |
}
|
|
@@ -1033,8 +1049,7 @@ p.wpo-take-a-backup {
|
|
| 1033 |
}
|
| 1034 |
|
| 1035 |
@media (min-width: 782px) {
|
| 1036 |
-
|
| 1037 |
-
p.wpo-take-a-backup {
|
| 1038 |
margin-left: 20px;
|
| 1039 |
}
|
| 1040 |
}
|
|
@@ -1065,6 +1080,7 @@ p.wpo-take-a-backup {
|
|
| 1065 |
background: #F2F4F5;
|
| 1066 |
border-radius: 8px;
|
| 1067 |
padding: 20px
|
|
|
|
| 1068 |
}
|
| 1069 |
|
| 1070 |
.wpo-fieldgroup:not(:last-child) {
|
|
@@ -1093,6 +1109,11 @@ p.wpo-take-a-backup {
|
|
| 1093 |
border-radius: 3px;
|
| 1094 |
}
|
| 1095 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1096 |
.wpo-fieldgroup__subgroup:not(:last-of-type) {
|
| 1097 |
margin-bottom: 20px;
|
| 1098 |
}
|
|
@@ -1192,6 +1213,13 @@ p.wpo-take-a-backup {
|
|
| 1192 |
border: none;
|
| 1193 |
}
|
| 1194 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1195 |
#wp-optimize-wrap .switch input:focus + .slider {
|
| 1196 |
box-shadow: 0 0 0 2px #F2F4F5, 0 0 0 3px #555d66;
|
| 1197 |
}
|
|
@@ -1210,10 +1238,18 @@ p.wpo-take-a-backup {
|
|
| 1210 |
margin-left: 49px;
|
| 1211 |
}
|
| 1212 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1213 |
#wp-optimize-wrap .wpo-fieldgroup > .switch-container:first-child {
|
| 1214 |
padding-top: 0;
|
| 1215 |
}
|
| 1216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1217 |
/* Help popup */
|
| 1218 |
|
| 1219 |
.wpo-info {
|
|
@@ -1289,6 +1325,45 @@ a.wpo-info__trigger span.dashicons {
|
|
| 1289 |
vertical-align: middle;
|
| 1290 |
}
|
| 1291 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1292 |
.wpo-rotate {
|
| 1293 |
animation: rotate 1s linear infinite;
|
| 1294 |
transform-origin: 50% 50%;
|
|
@@ -1767,6 +1842,163 @@ body.rtl #wp-optimize-nav-page-menu {
|
|
| 1767 |
min-width: 0;
|
| 1768 |
}
|
| 1769 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1770 |
/* Unused images / wpo_smush_image / image grid*/
|
| 1771 |
|
| 1772 |
.wpo_unused_image, .wpo_smush_image {
|
|
@@ -1843,7 +2075,6 @@ body.rtl #wp-optimize-nav-page-menu {
|
|
| 1843 |
left: 50%;
|
| 1844 |
transform: translate(-50%,-50%);
|
| 1845 |
-webkit-user-select: none;
|
| 1846 |
-
-moz-user-select: none;
|
| 1847 |
-ms-user-select: none;
|
| 1848 |
user-select: none;
|
| 1849 |
}
|
|
@@ -2288,15 +2519,6 @@ th.tablesorter-header:focus:not(.tablesorter-headerAsc):not(.tablesorter-headerD
|
|
| 2288 |
color: #E07575;
|
| 2289 |
}
|
| 2290 |
|
| 2291 |
-
#wp-optimize-nav-tab-wpo_cache-advanced-contents textarea {
|
| 2292 |
-
width: 100%;
|
| 2293 |
-
border-radius: 5px;
|
| 2294 |
-
height: 100px;
|
| 2295 |
-
min-height: 100px;
|
| 2296 |
-
margin-top: 10px;
|
| 2297 |
-
margin-bottom: 10px;
|
| 2298 |
-
}
|
| 2299 |
-
|
| 2300 |
#page_cache_length_value {
|
| 2301 |
height: 28px;
|
| 2302 |
position: relative;
|
|
@@ -2358,4 +2580,75 @@ textarea.cache-settings {
|
|
| 2358 |
line-height: 40px;
|
| 2359 |
vertical-align: middle;
|
| 2360 |
color: green;
|
| 2361 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 147 |
|
| 148 |
/* .wp-optimize-settings-clean-transient label, .wp-optimize-settings-clean-pingbacks label, .wp-optimize-settings-clean-trackbacks label, .wp-optimize-settings-clean-postmeta label, .wp-optimize-settings-clean-orphandata label, .wp-optimize-settings-clean-commentmeta label */
|
| 149 |
|
| 150 |
+
/* Optimizations tab */
|
| 151 |
+
|
| 152 |
.wp-optimize-setting-is-sensitive td > label::before {
|
| 153 |
content: "\f534";
|
| 154 |
font-family: 'dashicons';
|
| 168 |
margin-bottom: 15px;
|
| 169 |
}
|
| 170 |
|
| 171 |
+
.wp-optimize-optimizations-table-placeholder {
|
| 172 |
+
min-height: 80px;
|
| 173 |
+
}
|
| 174 |
+
|
| 175 |
td.wp-optimize-settings-optimization-checkbox {
|
| 176 |
width: 18px;
|
| 177 |
padding-left: 4px;
|
| 966 |
margin-right: 0;
|
| 967 |
}
|
| 968 |
|
| 969 |
+
#wp-optimize-wrap textarea {
|
| 970 |
+
width: 100%;
|
| 971 |
+
border-radius: 5px;
|
| 972 |
+
height: 100px;
|
| 973 |
+
min-height: 100px;
|
| 974 |
+
margin-top: 10px;
|
| 975 |
+
margin-bottom: 10px;
|
| 976 |
+
}
|
| 977 |
+
|
| 978 |
+
.notice.notice-error.wpo-warning,
|
| 979 |
.notice.notice-warning.wpo-warning {
|
| 980 |
margin-bottom: 18px;
|
| 981 |
}
|
| 1049 |
}
|
| 1050 |
|
| 1051 |
@media (min-width: 782px) {
|
| 1052 |
+
.button ~ p.wpo-take-a-backup {
|
|
|
|
| 1053 |
margin-left: 20px;
|
| 1054 |
}
|
| 1055 |
}
|
| 1080 |
background: #F2F4F5;
|
| 1081 |
border-radius: 8px;
|
| 1082 |
padding: 20px
|
| 1083 |
+
|
| 1084 |
}
|
| 1085 |
|
| 1086 |
.wpo-fieldgroup:not(:last-child) {
|
| 1109 |
border-radius: 3px;
|
| 1110 |
}
|
| 1111 |
|
| 1112 |
+
.wpo-fieldgroup fieldset label {
|
| 1113 |
+
display: block;
|
| 1114 |
+
margin-bottom: 6px;
|
| 1115 |
+
}
|
| 1116 |
+
|
| 1117 |
.wpo-fieldgroup__subgroup:not(:last-of-type) {
|
| 1118 |
margin-bottom: 20px;
|
| 1119 |
}
|
| 1213 |
border: none;
|
| 1214 |
}
|
| 1215 |
|
| 1216 |
+
#wp-optimize-wrap .switch input:disabled + .slider,
|
| 1217 |
+
#wp-optimize-wrap .switch input:disabled:checked + .slider {
|
| 1218 |
+
background: #555d66;
|
| 1219 |
+
border-color: #555d66;
|
| 1220 |
+
opacity: 0.3;
|
| 1221 |
+
}
|
| 1222 |
+
|
| 1223 |
#wp-optimize-wrap .switch input:focus + .slider {
|
| 1224 |
box-shadow: 0 0 0 2px #F2F4F5, 0 0 0 3px #555d66;
|
| 1225 |
}
|
| 1238 |
margin-left: 49px;
|
| 1239 |
}
|
| 1240 |
|
| 1241 |
+
#wp-optimize-wrap .switch-container [data-tooltip] .dashicons {
|
| 1242 |
+
transform: translateY(-3px);
|
| 1243 |
+
}
|
| 1244 |
+
|
| 1245 |
#wp-optimize-wrap .wpo-fieldgroup > .switch-container:first-child {
|
| 1246 |
padding-top: 0;
|
| 1247 |
}
|
| 1248 |
|
| 1249 |
+
label.wpo-label__bold {
|
| 1250 |
+
font-weight: 600;
|
| 1251 |
+
}
|
| 1252 |
+
|
| 1253 |
/* Help popup */
|
| 1254 |
|
| 1255 |
.wpo-info {
|
| 1325 |
vertical-align: middle;
|
| 1326 |
}
|
| 1327 |
|
| 1328 |
+
.wpo_section.wpo_group.wpo-feature-is-disabled > *:not(.wpo-show) {
|
| 1329 |
+
opacity: 0.5;
|
| 1330 |
+
}
|
| 1331 |
+
|
| 1332 |
+
/* Custom Block UI */
|
| 1333 |
+
|
| 1334 |
+
.wpo_shade {
|
| 1335 |
+
display: block;
|
| 1336 |
+
position: absolute;
|
| 1337 |
+
left: 0;
|
| 1338 |
+
right: 0;
|
| 1339 |
+
top: 0;
|
| 1340 |
+
bottom: 0;
|
| 1341 |
+
width: 100%;
|
| 1342 |
+
height: 100%;
|
| 1343 |
+
z-index: 9979;
|
| 1344 |
+
opacity: 1;
|
| 1345 |
+
background-color: rgba(255, 255, 255, 0.88);
|
| 1346 |
+
}
|
| 1347 |
+
|
| 1348 |
+
.wpo_shade.hidden {
|
| 1349 |
+
display: none;
|
| 1350 |
+
}
|
| 1351 |
+
|
| 1352 |
+
.wpo_shade_inner {
|
| 1353 |
+
text-align: center;
|
| 1354 |
+
padding-top: 80px;
|
| 1355 |
+
}
|
| 1356 |
+
|
| 1357 |
+
.wpo_shade_inner h4 {
|
| 1358 |
+
font-size: 2em;
|
| 1359 |
+
}
|
| 1360 |
+
|
| 1361 |
+
.wpo_shade_inner .dashicons.dashicons-update-alt {
|
| 1362 |
+
font-size: 50px;
|
| 1363 |
+
height: 50px;
|
| 1364 |
+
width: 50px;
|
| 1365 |
+
}
|
| 1366 |
+
|
| 1367 |
.wpo-rotate {
|
| 1368 |
animation: rotate 1s linear infinite;
|
| 1369 |
transform-origin: 50% 50%;
|
| 1842 |
min-width: 0;
|
| 1843 |
}
|
| 1844 |
|
| 1845 |
+
/* CSS for adverts */
|
| 1846 |
+
|
| 1847 |
+
.updraft-ad-container.updated,
|
| 1848 |
+
.updraft-ad-container {
|
| 1849 |
+
margin-left: 0px;
|
| 1850 |
+
margin-right: 0px;
|
| 1851 |
+
position: relative;
|
| 1852 |
+
padding-right: 80px;
|
| 1853 |
+
}
|
| 1854 |
+
|
| 1855 |
+
/* General notices (non WPO) on the WPO page */
|
| 1856 |
+
|
| 1857 |
+
body[class*=WP-Optimize] .notice, body[class*=WP-Optimize] .error, body[class*=wp-optimize] .notice, body[class*=wp-optimize] .error {
|
| 1858 |
+
margin-left: 0;
|
| 1859 |
+
margin-right: 0;
|
| 1860 |
+
}
|
| 1861 |
+
|
| 1862 |
+
/*
|
| 1863 |
+
Make the main error notice sticky
|
| 1864 |
+
*/
|
| 1865 |
+
|
| 1866 |
+
body.wp-core-ui.is-scrolled .wpo-main-error-notice {
|
| 1867 |
+
position:fixed;
|
| 1868 |
+
top: 132px;
|
| 1869 |
+
left: 160px;
|
| 1870 |
+
right: 0;
|
| 1871 |
+
z-index: 20;
|
| 1872 |
+
transition: .2s all;
|
| 1873 |
+
}
|
| 1874 |
+
|
| 1875 |
+
/* Remove other notices */
|
| 1876 |
+
|
| 1877 |
+
div#wpbody-content > .notice:not(.wpo-notice),
|
| 1878 |
+
div#wpbody-content > .warning:not(.wpo-notice),
|
| 1879 |
+
div#wpbody-content > .updated:not(.wpo-notice),
|
| 1880 |
+
div#wpbody-content > .error:not(.wpo-notice) {
|
| 1881 |
+
display: none;
|
| 1882 |
+
}
|
| 1883 |
+
|
| 1884 |
+
.toplevel_page_WP-Optimize.rtl .notice,
|
| 1885 |
+
.toplevel_page_WP-Optimize.rtl div.updated,
|
| 1886 |
+
.toplevel_page_WP-Optimize.rtl div.error,
|
| 1887 |
+
.toplevel_page_WP-Optimize .notice,
|
| 1888 |
+
.toplevel_page_WP-Optimize div.updated,
|
| 1889 |
+
.toplevel_page_WP-Optimize div.error {
|
| 1890 |
+
margin-right: 0;
|
| 1891 |
+
}
|
| 1892 |
+
|
| 1893 |
+
body.rtl .updraft-ad-container.updated,
|
| 1894 |
+
body.rtl .updraft-ad-container {
|
| 1895 |
+
padding-right: 10px;
|
| 1896 |
+
padding-left: 80px;
|
| 1897 |
+
}
|
| 1898 |
+
|
| 1899 |
+
.updraft_notice_container {
|
| 1900 |
+
padding: 7px;
|
| 1901 |
+
display: -ms-flexbox;
|
| 1902 |
+
display: flex;
|
| 1903 |
+
-ms-flex-align: left;
|
| 1904 |
+
align-items: left;
|
| 1905 |
+
-ms-flex-direction: column;
|
| 1906 |
+
flex-direction: column;
|
| 1907 |
+
height: auto;
|
| 1908 |
+
overflow: hidden;
|
| 1909 |
+
}
|
| 1910 |
+
|
| 1911 |
+
.updraft_advert_content_left {
|
| 1912 |
+
float: none;
|
| 1913 |
+
width: 65px;
|
| 1914 |
+
}
|
| 1915 |
+
|
| 1916 |
+
.updraft_advert_content_right {
|
| 1917 |
+
float: none;
|
| 1918 |
+
width: auto;
|
| 1919 |
+
overflow: hidden;
|
| 1920 |
+
}
|
| 1921 |
+
|
| 1922 |
+
.updraft_advert_bottom {
|
| 1923 |
+
margin: 10px 0;
|
| 1924 |
+
padding: 10px;
|
| 1925 |
+
font-size: 140%;
|
| 1926 |
+
background-color: #FFF;
|
| 1927 |
+
border-color: #E6DB55;
|
| 1928 |
+
border: 1px solid;
|
| 1929 |
+
border-radius: 4px;
|
| 1930 |
+
}
|
| 1931 |
+
|
| 1932 |
+
.updraft-advert-dismiss {
|
| 1933 |
+
position: absolute;
|
| 1934 |
+
font-size: 13px;
|
| 1935 |
+
top: 5px;
|
| 1936 |
+
right: 10px;
|
| 1937 |
+
}
|
| 1938 |
+
|
| 1939 |
+
body.rtl .updraft-advert-dismiss {
|
| 1940 |
+
left: 10px;
|
| 1941 |
+
right: auto;
|
| 1942 |
+
}
|
| 1943 |
+
|
| 1944 |
+
h3.updraft_advert_heading {
|
| 1945 |
+
margin-top: 5px !important;
|
| 1946 |
+
margin-bottom: 5px !important;
|
| 1947 |
+
}
|
| 1948 |
+
|
| 1949 |
+
h4.updraft_advert_heading {
|
| 1950 |
+
margin-top: 2px !important;
|
| 1951 |
+
margin-bottom: 3px !important;
|
| 1952 |
+
}
|
| 1953 |
+
|
| 1954 |
+
.updraft_center_content {
|
| 1955 |
+
text-align: center;
|
| 1956 |
+
margin-bottom: 5px;
|
| 1957 |
+
}
|
| 1958 |
+
|
| 1959 |
+
.updraft_notice_link {
|
| 1960 |
+
padding-left: 5px;
|
| 1961 |
+
}
|
| 1962 |
+
|
| 1963 |
+
.updraft_text_center {
|
| 1964 |
+
text-align: center;
|
| 1965 |
+
}
|
| 1966 |
+
|
| 1967 |
+
.wpo-main-header + .updraft-ad-container,
|
| 1968 |
+
.wpo-main-header + .updated {
|
| 1969 |
+
margin-bottom: 20px;
|
| 1970 |
+
}
|
| 1971 |
+
|
| 1972 |
+
@media screen and (min-width: 560px) {
|
| 1973 |
+
|
| 1974 |
+
.updraft_notice_container {
|
| 1975 |
+
-ms-flex-direction: row;
|
| 1976 |
+
flex-direction: row;
|
| 1977 |
+
-ms-flex-align: center;
|
| 1978 |
+
align-items: center;
|
| 1979 |
+
}
|
| 1980 |
+
|
| 1981 |
+
}
|
| 1982 |
+
|
| 1983 |
+
@media screen and (max-width: 560px) {
|
| 1984 |
+
|
| 1985 |
+
body.rtl .updraft-ad-container.updated,
|
| 1986 |
+
body.rtl .updraft-ad-container {
|
| 1987 |
+
padding-right: 10px;
|
| 1988 |
+
padding-left: 10px;
|
| 1989 |
+
}
|
| 1990 |
+
|
| 1991 |
+
}
|
| 1992 |
+
|
| 1993 |
+
@media screen and (max-width: 768px) {
|
| 1994 |
+
|
| 1995 |
+
.wpo-main-header + .updraft-ad-container,
|
| 1996 |
+
.wpo-main-header + .updated {
|
| 1997 |
+
margin-right: 0;
|
| 1998 |
+
}
|
| 1999 |
+
|
| 2000 |
+
}
|
| 2001 |
+
|
| 2002 |
/* Unused images / wpo_smush_image / image grid*/
|
| 2003 |
|
| 2004 |
.wpo_unused_image, .wpo_smush_image {
|
| 2075 |
left: 50%;
|
| 2076 |
transform: translate(-50%,-50%);
|
| 2077 |
-webkit-user-select: none;
|
|
|
|
| 2078 |
-ms-user-select: none;
|
| 2079 |
user-select: none;
|
| 2080 |
}
|
| 2519 |
color: #E07575;
|
| 2520 |
}
|
| 2521 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2522 |
#page_cache_length_value {
|
| 2523 |
height: 28px;
|
| 2524 |
position: relative;
|
| 2580 |
line-height: 40px;
|
| 2581 |
vertical-align: middle;
|
| 2582 |
color: green;
|
| 2583 |
+
}
|
| 2584 |
+
|
| 2585 |
+
#wp-optimize-wrap .filename {
|
| 2586 |
+
display: inline-block;
|
| 2587 |
+
padding: 6px 0;
|
| 2588 |
+
}
|
| 2589 |
+
|
| 2590 |
+
#wp-optimize-wrap .no-files-yet .filename {
|
| 2591 |
+
font-style: italic;
|
| 2592 |
+
}
|
| 2593 |
+
|
| 2594 |
+
#wp-optimize-wrap .processed {
|
| 2595 |
+
margin: 0;
|
| 2596 |
+
}
|
| 2597 |
+
|
| 2598 |
+
#wp-optimize-wrap .processed .wpo_min_log {
|
| 2599 |
+
padding: 8px;
|
| 2600 |
+
background: white;
|
| 2601 |
+
border: 1px solid #CDCDCD;
|
| 2602 |
+
border-radius: 4px;
|
| 2603 |
+
line-height: 1.5em;
|
| 2604 |
+
}
|
| 2605 |
+
|
| 2606 |
+
#wp-optimize-wrap .processed .wpo_min_log ul {
|
| 2607 |
+
overflow-x: auto;
|
| 2608 |
+
}
|
| 2609 |
+
|
| 2610 |
+
#wp-optimize-wrap .processed .wpo_min_log ul li {
|
| 2611 |
+
white-space: nowrap
|
| 2612 |
+
}
|
| 2613 |
+
|
| 2614 |
+
#wp-optimize-wrap .processed .wpo_min_log ul li.failed .wpo_min_file_url {
|
| 2615 |
+
color: #dc3232;
|
| 2616 |
+
}
|
| 2617 |
+
|
| 2618 |
+
#wp-optimize-wrap .processed .wpo_min_log h5 {
|
| 2619 |
+
margin-top: 0;
|
| 2620 |
+
margin-bottom: 8px;
|
| 2621 |
+
border-bottom: 1px solid #cdcdcd;
|
| 2622 |
+
padding-bottom: 6px;
|
| 2623 |
+
}
|
| 2624 |
+
|
| 2625 |
+
#wp-optimize-wrap .processed .wpo_min_log .wpo_min_file_debug {
|
| 2626 |
+
color: #9c9c9c;
|
| 2627 |
+
display: inline-block
|
| 2628 |
+
}
|
| 2629 |
+
|
| 2630 |
+
#wp-optimize-wrap .processed .wpo_min_log .wpo_min_file_debug::before {
|
| 2631 |
+
content: '—';
|
| 2632 |
+
display: inline-block;
|
| 2633 |
+
margin: 0 10px;
|
| 2634 |
+
}
|
| 2635 |
+
|
| 2636 |
+
#wp-optimize-wrap .show-if-enabled {
|
| 2637 |
+
display: none;
|
| 2638 |
+
}
|
| 2639 |
+
|
| 2640 |
+
#wp-optimize-wrap .is-enabled .show-if-enabled {
|
| 2641 |
+
display: block;
|
| 2642 |
+
}
|
| 2643 |
+
|
| 2644 |
+
#wp-optimize-wrap .wpo-fieldgroup__subgroup.wpo_min_enable_minify + .wpo-fieldgroup__subgroup {
|
| 2645 |
+
display: none;
|
| 2646 |
+
}
|
| 2647 |
+
|
| 2648 |
+
#wp-optimize-wrap .wpo-fieldgroup__subgroup.wpo_min_enable_minify.enabled + .wpo-fieldgroup__subgroup {
|
| 2649 |
+
display: block;
|
| 2650 |
+
}
|
| 2651 |
+
|
| 2652 |
+
#wp-optimize-wrap .wpo-fieldgroup__subgroup.wpo_min_enable_minify:not(.enabled) {
|
| 2653 |
+
margin-bottom: 0;
|
| 2654 |
+
}
|
css/wp-optimize-notices-3-0-16.min.css
DELETED
|
@@ -1,2 +0,0 @@
|
|
| 1 |
-
.updraft-ad-container.updated,.updraft-ad-container{margin-left:0;margin-right:0;position:relative;padding-right:80px}body[class*=WP-Optimize] .notice,body[class*=wp-optimize] .notice{margin-left:0;margin-right:0}.toplevel_page_WP-Optimize.rtl .notice,.toplevel_page_WP-Optimize.rtl div.updated,.toplevel_page_WP-Optimize.rtl div.error,.toplevel_page_WP-Optimize .notice,.toplevel_page_WP-Optimize div.updated,.toplevel_page_WP-Optimize div.error{margin-right:0}body.rtl .updraft-ad-container.updated,body.rtl .updraft-ad-container{padding-right:10px;padding-left:80px}.updraft_notice_container{padding:7px;display:-ms-flexbox;display:flex;-ms-flex-align:left;align-items:left;-ms-flex-direction:column;flex-direction:column;height:auto;overflow:hidden}.updraft_advert_content_left{float:none;width:65px}.updraft_advert_content_right{float:none;width:auto;overflow:hidden}.updraft_advert_bottom{margin:10px 0;padding:10px;font-size:140%;background-color:#FFF;border-color:#e6db55;border:1px solid;border-radius:4px}.updraft-advert-dismiss{position:absolute;font-size:13px;top:5px;right:10px}body.rtl .updraft-advert-dismiss{left:10px;right:auto}h3.updraft_advert_heading{margin-top:5px !important;margin-bottom:5px !important}h4.updraft_advert_heading{margin-top:2px !important;margin-bottom:3px !important}.updraft_center_content{text-align:center;margin-bottom:5px}.updraft_notice_link{padding-left:5px}.updraft_text_center{text-align:center}.wpo-main-header+.updraft-ad-container,.wpo-main-header+.updated{margin-bottom:20px}@media screen and (min-width:560px){.updraft_notice_container{-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center}}@media screen and (max-width:560px){body.rtl .updraft-ad-container.updated,body.rtl .updraft-ad-container{padding-right:10px;padding-left:10px}}@media screen and (max-width:768px){.wpo-main-header+.updraft-ad-container,.wpo-main-header+.updated{margin-right:0}}
|
| 2 |
-
/*# sourceMappingURL=wp-optimize-notices-3-0-16.min.css.map */
|
|
|
|
|
|
css/wp-optimize-notices-3-0-16.min.css.map
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
{"version":3,"sources":["css/wp-optimize-notices.css"],"names":[],"mappings":"AAAA,qBAAqB;;AAErB;;CAEC,iBAAiB;CACjB,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB;;AAED,+CAA+C;;AAE/C;;CAEC,eAAe;CACf,gBAAgB;CAChB;;AAED;;;;;;CAMC,gBAAgB;CAChB;;AAED;;CAEC,oBAAoB;CACpB,mBAAmB;CACnB;;AAED;CACC,aAAa;CAEb,qBAAqB;CACrB,cAAc;CAEd,qBAAqB;CACrB,kBAAkB;CAClB,2BAAuB;KAAvB,uBAAuB;CACvB,aAAa;CACb,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,YAAY;CACZ,YAAY;CACZ,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,cAAc;CACd,gBAAgB;CAChB,uBAAuB;CACvB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,gBAAgB;CAChB,SAAS;CACT,YAAY;CACZ;;AAED;CACC,WAAW;CACX,YAAY;CACZ;;AAED;CACC,2BAA2B;CAC3B,8BAA8B;CAC9B;;AAED;CACC,2BAA2B;CAC3B,8BAA8B;CAC9B;;AAED;CACC,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,mBAAmB;CACnB;;AAED;;CAEC,oBAAoB;CACpB;;AAED;;CAEC;EACC,wBAAoB;MAApB,oBAAoB;EAEpB,uBAAuB;EACvB,oBAAoB;EACpB;;CAED;;AAED;;CAEC;;EAEC,oBAAoB;EACpB,mBAAmB;EACnB;;CAED;;AAED;;CAEC;;EAEC,gBAAgB;EAChB;;CAED","file":"wp-optimize-notices-3-0-16.min.css","sourcesContent":["/* CSS for adverts */\n\n.updraft-ad-container.updated,\n.updraft-ad-container {\n\tmargin-left: 0px;\n\tmargin-right: 0px;\n\tposition: relative;\n\tpadding-right: 80px;\n}\n\n/* General notices (non WPO) on the WPO page */\n\nbody[class*=WP-Optimize] .notice,\nbody[class*=wp-optimize] .notice {\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n.toplevel_page_WP-Optimize.rtl .notice,\n.toplevel_page_WP-Optimize.rtl div.updated,\n.toplevel_page_WP-Optimize.rtl div.error,\n.toplevel_page_WP-Optimize .notice,\n.toplevel_page_WP-Optimize div.updated,\n.toplevel_page_WP-Optimize div.error {\n\tmargin-right: 0;\n}\n\nbody.rtl .updraft-ad-container.updated,\nbody.rtl .updraft-ad-container {\n\tpadding-right: 10px;\n\tpadding-left: 80px;\n}\n\n.updraft_notice_container {\n\tpadding: 7px;\n\tdisplay: -webkit-box;\n\tdisplay: -ms-flexbox;\n\tdisplay: flex;\n\t-webkit-box-align: left;\n\t-ms-flex-align: left;\n\talign-items: left;\n\tflex-direction: column;\n\theight: auto;\n\toverflow: hidden;\n}\n\n.updraft_advert_content_left {\n\tfloat: none;\n\twidth: 65px;\n}\n\n.updraft_advert_content_right {\n\tfloat: none;\n\twidth: auto;\n\toverflow: hidden;\n}\n\n.updraft_advert_bottom {\n\tmargin: 10px 0;\n\tpadding: 10px;\n\tfont-size: 140%;\n\tbackground-color: #FFF;\n\tborder-color: #E6DB55;\n\tborder: 1px solid;\n\tborder-radius: 4px;\n}\n\n.updraft-advert-dismiss {\n\tposition: absolute;\n\tfont-size: 13px;\n\ttop: 5px;\n\tright: 10px;\n}\n\nbody.rtl .updraft-advert-dismiss {\n\tleft: 10px;\n\tright: auto;\n}\n\nh3.updraft_advert_heading {\n\tmargin-top: 5px !important;\n\tmargin-bottom: 5px !important;\n}\n\nh4.updraft_advert_heading {\n\tmargin-top: 2px !important;\n\tmargin-bottom: 3px !important;\n}\n\n.updraft_center_content {\n\ttext-align: center;\n\tmargin-bottom: 5px;\n}\n\n.updraft_notice_link {\n\tpadding-left: 5px;\n}\n\n.updraft_text_center {\n\ttext-align: center;\n}\n\n.wpo-main-header + .updraft-ad-container,\n.wpo-main-header + .updated {\n\tmargin-bottom: 20px;\n}\n\n@media screen and (min-width: 560px) {\n\n\t.updraft_notice_container {\n\t\tflex-direction: row;\n\t\t-webkit-box-align: center;\n\t\t-ms-flex-align: center;\n\t\talign-items: center;\n\t}\n\n}\n\n@media screen and (max-width: 560px) {\n\n\tbody.rtl .updraft-ad-container.updated,\n\tbody.rtl .updraft-ad-container {\n\t\tpadding-right: 10px;\n\t\tpadding-left: 10px;\n\t}\n\n}\n\n@media screen and (max-width: 768px) {\n\n\t.wpo-main-header + .updraft-ad-container,\n\t.wpo-main-header + .updated {\n\t\tmargin-right: 0;\n\t}\n\n}\n\n"]}
|
|
|
css/wp-optimize-notices.css
DELETED
|
@@ -1,136 +0,0 @@
|
|
| 1 |
-
/* CSS for adverts */
|
| 2 |
-
|
| 3 |
-
.updraft-ad-container.updated,
|
| 4 |
-
.updraft-ad-container {
|
| 5 |
-
margin-left: 0px;
|
| 6 |
-
margin-right: 0px;
|
| 7 |
-
position: relative;
|
| 8 |
-
padding-right: 80px;
|
| 9 |
-
}
|
| 10 |
-
|
| 11 |
-
/* General notices (non WPO) on the WPO page */
|
| 12 |
-
|
| 13 |
-
body[class*=WP-Optimize] .notice,
|
| 14 |
-
body[class*=wp-optimize] .notice {
|
| 15 |
-
margin-left: 0;
|
| 16 |
-
margin-right: 0;
|
| 17 |
-
}
|
| 18 |
-
|
| 19 |
-
.toplevel_page_WP-Optimize.rtl .notice,
|
| 20 |
-
.toplevel_page_WP-Optimize.rtl div.updated,
|
| 21 |
-
.toplevel_page_WP-Optimize.rtl div.error,
|
| 22 |
-
.toplevel_page_WP-Optimize .notice,
|
| 23 |
-
.toplevel_page_WP-Optimize div.updated,
|
| 24 |
-
.toplevel_page_WP-Optimize div.error {
|
| 25 |
-
margin-right: 0;
|
| 26 |
-
}
|
| 27 |
-
|
| 28 |
-
body.rtl .updraft-ad-container.updated,
|
| 29 |
-
body.rtl .updraft-ad-container {
|
| 30 |
-
padding-right: 10px;
|
| 31 |
-
padding-left: 80px;
|
| 32 |
-
}
|
| 33 |
-
|
| 34 |
-
.updraft_notice_container {
|
| 35 |
-
padding: 7px;
|
| 36 |
-
display: -ms-flexbox;
|
| 37 |
-
display: flex;
|
| 38 |
-
-ms-flex-align: left;
|
| 39 |
-
align-items: left;
|
| 40 |
-
-ms-flex-direction: column;
|
| 41 |
-
flex-direction: column;
|
| 42 |
-
height: auto;
|
| 43 |
-
overflow: hidden;
|
| 44 |
-
}
|
| 45 |
-
|
| 46 |
-
.updraft_advert_content_left {
|
| 47 |
-
float: none;
|
| 48 |
-
width: 65px;
|
| 49 |
-
}
|
| 50 |
-
|
| 51 |
-
.updraft_advert_content_right {
|
| 52 |
-
float: none;
|
| 53 |
-
width: auto;
|
| 54 |
-
overflow: hidden;
|
| 55 |
-
}
|
| 56 |
-
|
| 57 |
-
.updraft_advert_bottom {
|
| 58 |
-
margin: 10px 0;
|
| 59 |
-
padding: 10px;
|
| 60 |
-
font-size: 140%;
|
| 61 |
-
background-color: #FFF;
|
| 62 |
-
border-color: #E6DB55;
|
| 63 |
-
border: 1px solid;
|
| 64 |
-
border-radius: 4px;
|
| 65 |
-
}
|
| 66 |
-
|
| 67 |
-
.updraft-advert-dismiss {
|
| 68 |
-
position: absolute;
|
| 69 |
-
font-size: 13px;
|
| 70 |
-
top: 5px;
|
| 71 |
-
right: 10px;
|
| 72 |
-
}
|
| 73 |
-
|
| 74 |
-
body.rtl .updraft-advert-dismiss {
|
| 75 |
-
left: 10px;
|
| 76 |
-
right: auto;
|
| 77 |
-
}
|
| 78 |
-
|
| 79 |
-
h3.updraft_advert_heading {
|
| 80 |
-
margin-top: 5px !important;
|
| 81 |
-
margin-bottom: 5px !important;
|
| 82 |
-
}
|
| 83 |
-
|
| 84 |
-
h4.updraft_advert_heading {
|
| 85 |
-
margin-top: 2px !important;
|
| 86 |
-
margin-bottom: 3px !important;
|
| 87 |
-
}
|
| 88 |
-
|
| 89 |
-
.updraft_center_content {
|
| 90 |
-
text-align: center;
|
| 91 |
-
margin-bottom: 5px;
|
| 92 |
-
}
|
| 93 |
-
|
| 94 |
-
.updraft_notice_link {
|
| 95 |
-
padding-left: 5px;
|
| 96 |
-
}
|
| 97 |
-
|
| 98 |
-
.updraft_text_center {
|
| 99 |
-
text-align: center;
|
| 100 |
-
}
|
| 101 |
-
|
| 102 |
-
.wpo-main-header + .updraft-ad-container,
|
| 103 |
-
.wpo-main-header + .updated {
|
| 104 |
-
margin-bottom: 20px;
|
| 105 |
-
}
|
| 106 |
-
|
| 107 |
-
@media screen and (min-width: 560px) {
|
| 108 |
-
|
| 109 |
-
.updraft_notice_container {
|
| 110 |
-
-ms-flex-direction: row;
|
| 111 |
-
flex-direction: row;
|
| 112 |
-
-ms-flex-align: center;
|
| 113 |
-
align-items: center;
|
| 114 |
-
}
|
| 115 |
-
|
| 116 |
-
}
|
| 117 |
-
|
| 118 |
-
@media screen and (max-width: 560px) {
|
| 119 |
-
|
| 120 |
-
body.rtl .updraft-ad-container.updated,
|
| 121 |
-
body.rtl .updraft-ad-container {
|
| 122 |
-
padding-right: 10px;
|
| 123 |
-
padding-left: 10px;
|
| 124 |
-
}
|
| 125 |
-
|
| 126 |
-
}
|
| 127 |
-
|
| 128 |
-
@media screen and (max-width: 768px) {
|
| 129 |
-
|
| 130 |
-
.wpo-main-header + .updraft-ad-container,
|
| 131 |
-
.wpo-main-header + .updated {
|
| 132 |
-
margin-right: 0;
|
| 133 |
-
}
|
| 134 |
-
|
| 135 |
-
}
|
| 136 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
google-fonts.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
["abeezee","abel","abhaya libre","abril fatface","aclonica","acme","actor","adamina","advent pro","aguafina script","akronim","aladin","alata","alatsi","aldrich","alef","alegreya","alegreya sc","alegreya sans","alegreya sans sc","aleo","alex brush","alfa slab one","alice","alike","alike angular","allan","allerta","allerta stencil","allura","almarai","almendra","almendra display","almendra sc","amarante","amaranth","amatic sc","amethysta","amiko","amiri","amita","anaheim","andada","andika","angkor","annie use your telescope","anonymous pro","antic","antic didone","antic slab","anton","arapey","arbutus","arbutus slab","architects daughter","archivo","archivo black","archivo narrow","aref ruqaa","arima madurai","arimo","arizonia","armata","arsenal","artifika","arvo","arya","asap","asap condensed","asar","asset","assistant","astloch","asul","athiti","atma","atomic age","aubrey","audiowide","autour one","average","average sans","averia gruesa libre","averia libre","averia sans libre","averia serif libre","b612","b612 mono","bad script","bahiana","bahianita","bai jamjuree","baloo 2","baloo bhai 2","baloo bhaina 2","baloo chettan 2","baloo da 2","baloo paaji 2","baloo tamma 2","baloo tammudu 2","baloo thambi 2","balthazar","bangers","barlow","barlow condensed","barlow semi condensed","barriecito","barrio","basic","baskervville","battambang","baumans","bayon","be vietnam","bebas neue","belgrano","bellefair","belleza","bellota","bellota text","benchnine","bentham","berkshire swash","beth ellen","bevan","big shoulders display","big shoulders text","bigelow rules","bigshot one","bilbo","bilbo swash caps","biorhyme","biorhyme expanded","biryani","bitter","black and white picture","black han sans","black ops one","blinker","bokor","bonbon","boogaloo","bowlby one","bowlby one sc","brawler","bree serif","bubblegum sans","bubbler one","buda","buenard","bungee","bungee hairline","bungee inline","bungee outline","bungee shade","butcherman","butterfly kids","cabin","cabin condensed","cabin sketch","caesar dressing","cagliostro","cairo","caladea","calistoga","calligraffitti","cambay","cambo","candal","cantarell","cantata one","cantora one","capriola","cardo","carme","carrois gothic","carrois gothic sc","carter one","catamaran","caudex","caveat","caveat brush","cedarville cursive","ceviche one","chakra petch","changa","changa one","chango","charm","charmonman","chathura","chau philomene one","chela one","chelsea market","chenla","cherry cream soda","cherry swash","chewy","chicle","chilanka","chivo","chonburi","cinzel","cinzel decorative","clicker script","coda","coda caption","codystar","coiny","combo","comfortaa","comic neue","coming soon","concert one","condiment","content","contrail one","convergence","cookie","copse","corben","cormorant","cormorant garamond","cormorant infant","cormorant sc","cormorant unicase","cormorant upright","courgette","courier prime","cousine","coustard","covered by your grace","crafty girls","creepster","crete round","crimson pro","crimson text","croissant one","crushed","cuprum","cute font","cutive","cutive mono","dm sans","dm serif display","dm serif text","damion","dancing script","dangrek","darker grotesque","david libre","dawning of a new day","days one","dekko","delius","delius swash caps","delius unicase","della respira","denk one","devonshire","dhurjati","didact gothic","diplomata","diplomata sc","do hyeon","dokdo","domine","donegal one","doppio one","dorsa","dosis","dr sugiyama","duru sans","dynalight","eb garamond","eagle lake","east sea dokdo","eater","economica","eczar","el messiri","electrolize","elsie","elsie swash caps","emblema one","emilys candy","encode sans","encode sans condensed","encode sans expanded","encode sans semi condensed","encode sans semi expanded","engagement","englebert","enriqueta","erica one","esteban","euphoria script","ewert","exo","exo 2","expletus sans","fahkwang","fanwood text","farro","farsan","fascinate","fascinate inline","faster one","fasthand","fauna one","faustina","federant","federo","felipa","fenix","finger paint","fira code","fira mono","fira sans","fira sans condensed","fira sans extra condensed","fjalla one","fjord one","flamenco","flavors","fondamento","fontdiner swanky","forum","francois one","frank ruhl libre","freckle face","fredericka the great","fredoka one","freehand","fresca","frijole","fruktur","fugaz one","gfs didot","gfs neohellenic","gabriela","gaegu","gafata","galada","galdeano","galindo","gamja flower","gayathri","gelasio","gentium basic","gentium book basic","geo","geostar","geostar fill","germania one","gidugu","gilda display","girassol","give you glory","glass antiqua","glegoo","gloria hallelujah","goblin one","gochi hand","gorditas","gothic a1","gotu","goudy bookletter 1911","graduate","grand hotel","gravitas one","great vibes","grenze","griffy","gruppo","gudea","gugi","gupter","gurajada","habibi","halant","hammersmith one","hanalei","hanalei fill","handlee","hanuman","happy monkey","harmattan","headland one","heebo","henny penny","hepta slab","herr von muellerhoff","hi melody","hind","hind guntur","hind madurai","hind siliguri","hind vadodara","holtwood one sc","homemade apple","homenaje","ibm plex mono","ibm plex sans","ibm plex sans condensed","ibm plex serif","im fell dw pica","im fell dw pica sc","im fell double pica","im fell double pica sc","im fell english","im fell english sc","im fell french canon","im fell french canon sc","im fell great primer","im fell great primer sc","ibarra real nova","iceberg","iceland","imprima","inconsolata","inder","indie flower","inika","inknut antiqua","inria sans","inria serif","inter","irish grover","istok web","italiana","italianno","itim","jacques francois","jacques francois shadow","jaldi","jim nightshade","jockey one","jolly lodger","jomhuria","jomolhari","josefin sans","josefin slab","joti one","jua","judson","julee","julius sans one","junge","jura","just another hand","just me again down here","k2d","kadwa","kalam","kameron","kanit","kantumruy","karla","karma","katibeh","kaushan script","kavivanar","kavoon","kdam thmor","keania one","kelly slab","kenia","khand","khmer","khula","kirang haerang","kite one","knewave","koho","kodchasan","kosugi","kosugi maru","kotta one","koulen","kranky","kreon","kristi","krona one","krub","kulim park","kumar one","kumar one outline","kurale","la belle aurore","lacquer","laila","lakki reddy","lalezar","lancelot","lateef","lato","league script","leckerli one","ledger","lekton","lemon","lemonada","lexend deca","lexend exa","lexend giga","lexend mega","lexend peta","lexend tera","lexend zetta","libre barcode 128","libre barcode 128 text","libre barcode 39","libre barcode 39 extended","libre barcode 39 extended text","libre barcode 39 text","libre baskerville","libre caslon display","libre caslon text","libre franklin","life savers","lilita one","lily script one","limelight","linden hill","literata","liu jian mao cao","livvic","lobster","lobster two","londrina outline","londrina shadow","londrina sketch","londrina solid","long cang","lora","love ya like a sister","loved by the king","lovers quarrel","luckiest guy","lusitana","lustria","m plus 1p","m plus rounded 1c","ma shan zheng","macondo","macondo swash caps","mada","magra","maiden orange","maitree","major mono display","mako","mali","mallanna","mandali","manjari","mansalva","manuale","marcellus","marcellus sc","marck script","margarine","markazi text","marko one","marmelad","martel","martel sans","marvel","mate","mate sc","maven pro","mclaren","meddon","medievalsharp","medula one","meera inimai","megrim","meie script","merienda","merienda one","merriweather","merriweather sans","metal","metal mania","metamorphous","metrophobic","michroma","milonga","miltonian","miltonian tattoo","mina","miniver","miriam libre","mirza","miss fajardose","mitr","modak","modern antiqua","mogra","molengo","molle","monda","monofett","monoton","monsieur la doulaise","montaga","montez","montserrat","montserrat alternates","montserrat subrayada","moul","moulpali","mountains of christmas","mouse memoirs","mr bedfort","mr dafoe","mr de haviland","mrs saint delafield","mrs sheppards","mukta","mukta mahee","mukta malar","mukta vaani","muli","mystery quest","ntr","nanum brush script","nanum gothic","nanum gothic coding","nanum myeongjo","nanum pen script","neucha","neuton","new rocker","news cycle","niconne","niramit","nixie one","nobile","nokora","norican","nosifer","notable","nothing you could do","noticia text","noto sans","noto sans hk","noto sans jp","noto sans kr","noto sans sc","noto sans tc","noto serif","noto serif jp","noto serif kr","noto serif sc","noto serif tc","nova cut","nova flat","nova mono","nova oval","nova round","nova script","nova slim","nova square","numans","nunito","nunito sans","odibee sans","odor mean chey","offside","old standard tt","oldenburg","oleo script","oleo script swash caps","open sans","open sans condensed","oranienbaum","orbitron","oregano","orienta","original surfer","oswald","over the rainbow","overlock","overlock sc","overpass","overpass mono","ovo","oxanium","oxygen","oxygen mono","pt mono","pt sans","pt sans caption","pt sans narrow","pt serif","pt serif caption","pacifico","padauk","palanquin","palanquin dark","pangolin","paprika","parisienne","passero one","passion one","pathway gothic one","patrick hand","patrick hand sc","pattaya","patua one","pavanam","paytone one","peddana","peralta","permanent marker","petit formal script","petrona","philosopher","piedra","pinyon script","pirata one","plaster","play","playball","playfair display","playfair display sc","podkova","poiret one","poller one","poly","pompiere","pontano sans","poor story","poppins","port lligat sans","port lligat slab","pragati narrow","prata","preahvihear","press start 2p","pridi","princess sofia","prociono","prompt","prosto one","proza libre","public sans","puritan","purple purse","quando","quantico","quattrocento","quattrocento sans","questrial","quicksand","quintessential","qwigley","racing sans one","radley","rajdhani","rakkas","raleway","raleway dots","ramabhadra","ramaraja","rambla","rammetto one","ranchers","rancho","ranga","rasa","rationale","ravi prakash","red hat display","red hat text","redressed","reem kufi","reenie beanie","revalia","rhodium libre","ribeye","ribeye marrow","righteous","risque","roboto","roboto condensed","roboto mono","roboto slab","rochester","rock salt","rokkitt","romanesco","ropa sans","rosario","rosarivo","rouge script","rozha one","rubik","rubik mono one","ruda","rufina","ruge boogie","ruluko","rum raisin","ruslan display","russo one","ruthie","rye","sacramento","sahitya","sail","saira","saira condensed","saira extra condensed","saira semi condensed","saira stencil one","salsa","sanchez","sancreek","sansita","sarabun","sarala","sarina","sarpanch","satisfy","sawarabi gothic","sawarabi mincho","scada","scheherazade","schoolbell","scope one","seaweed script","secular one","sedgwick ave","sedgwick ave display","sen","sevillana","seymour one","shadows into light","shadows into light two","shanti","share","share tech","share tech mono","shojumaru","short stack","shrikhand","siemreap","sigmar one","signika","signika negative","simonetta","single day","sintony","sirin stencil","six caps","skranji","slabo 13px","slabo 27px","slackey","smokum","smythe","sniglet","snippet","snowburst one","sofadi one","sofia","solway","song myung","sonsie one","sorts mill goudy","source code pro","source sans pro","source serif pro","space mono","spartan","special elite","spectral","spectral sc","spicy rice","spinnaker","spirax","squada one","sree krushnadevaraya","sriracha","srisakdi","staatliches","stalemate","stalinist one","stardos stencil","stint ultra condensed","stint ultra expanded","stoke","strait","stylish","sue ellen francisco","suez one","sulphur point","sumana","sunflower","sunshiney","supermercado one","sura","suranna","suravaram","suwannaphum","swanky and moo moo","syncopate","tajawal","tangerine","taprom","tauri","taviraj","teko","telex","tenali ramakrishna","tenor sans","text me one","thasadith","the girl next door","tienne","tillana","timmana","tinos","titan one","titillium web","tomorrow","trade winds","trirong","trocchi","trochut","trykker","tulpen one","turret road","ubuntu","ubuntu condensed","ubuntu mono","ultra","uncial antiqua","underdog","unica one","unifrakturcook","unifrakturmaguntia","unkempt","unlock","unna","vt323","vampiro one","varela","varela round","vast shadow","vesper libre","viaoda libre","vibes","vibur","vidaloka","viga","voces","volkhov","vollkorn","vollkorn sc","voltaire","waiting for the sunrise","wallpoet","walter turncoat","warnes","wellfleet","wendy one","wire one","work sans","yanone kaffeesatz","yantramanav","yatra one","yellowtail","yeon sung","yeseva one","yesteryear","yrsa","zcool kuaile","zcool qingke huangyou","zcool xiaowei","zeyada","zhi mang xing","zilla slab","zilla slab highlight"]
|
includes/class-commands.php
CHANGED
|
@@ -37,7 +37,7 @@ class WP_Optimize_Commands {
|
|
| 37 |
}
|
| 38 |
|
| 39 |
public function get_status_box_contents() {
|
| 40 |
-
return WP_Optimize()->include_template('
|
| 41 |
}
|
| 42 |
|
| 43 |
public function get_optimizations_table() {
|
|
@@ -51,8 +51,10 @@ class WP_Optimize_Commands {
|
|
| 51 |
* @return array An array containing the WPO translations and the "WP Optimize" tab's rendered contents
|
| 52 |
*/
|
| 53 |
public function get_wp_optimize_contents() {
|
| 54 |
-
$content = WP_Optimize()->include_template('database/optimize-table.php', true, array('optimize_db' => false));
|
| 55 |
-
|
|
|
|
|
|
|
| 56 |
|
| 57 |
return array(
|
| 58 |
'content' => $content,
|
|
@@ -67,7 +69,7 @@ class WP_Optimize_Commands {
|
|
| 67 |
* @return array An array containing the WPO translations and the "Table Information" tab's rendered contents
|
| 68 |
*/
|
| 69 |
public function get_table_information_contents() {
|
| 70 |
-
$content = WP_Optimize()->include_template('database/tables.php', true, array('optimize_db' => false));
|
| 71 |
|
| 72 |
return array(
|
| 73 |
'content' => $content,
|
|
@@ -83,8 +85,8 @@ class WP_Optimize_Commands {
|
|
| 83 |
*/
|
| 84 |
public function get_settings_contents() {
|
| 85 |
$admin_settings = '<form action="#" method="post" enctype="multipart/form-data" name="settings_form" id="settings_form">';
|
| 86 |
-
$admin_settings .= WP_Optimize()->include_template('
|
| 87 |
-
$admin_settings .= WP_Optimize()->include_template('
|
| 88 |
$admin_settings .= WP_Optimize()->include_template('settings/settings-logging.php', true, array('optimize_db' => false));
|
| 89 |
$admin_settings .= '<input id="wp-optimize-settings-save" class="button button-primary" type="submit" name="wp-optimize-settings" value="' . esc_attr('Save settings', 'wp-optimize') .'" />';
|
| 90 |
$admin_settings .= '</form>';
|
|
@@ -295,15 +297,29 @@ class WP_Optimize_Commands {
|
|
| 295 |
|
| 296 |
return $results;
|
| 297 |
}
|
| 298 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 299 |
public function get_table_list() {
|
| 300 |
|
| 301 |
list ($total_size, $part2) = $this->optimizer->get_current_db_size();
|
| 302 |
|
| 303 |
-
return array(
|
| 304 |
'table_list' => WP_Optimize()->include_template('database/tables-body.php', true, array('optimize_db' => false)),
|
| 305 |
'total_size' => $total_size
|
| 306 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 307 |
}
|
| 308 |
|
| 309 |
/**
|
| 37 |
}
|
| 38 |
|
| 39 |
public function get_status_box_contents() {
|
| 40 |
+
return WP_Optimize()->include_template('database/status-box-contents.php', true, array('optimize_db' => false));
|
| 41 |
}
|
| 42 |
|
| 43 |
public function get_optimizations_table() {
|
| 51 |
* @return array An array containing the WPO translations and the "WP Optimize" tab's rendered contents
|
| 52 |
*/
|
| 53 |
public function get_wp_optimize_contents() {
|
| 54 |
+
$content = WP_Optimize()->include_template('database/optimize-table.php', true, array('optimize_db' => false, 'load_data' => WP_Optimize()->template_should_include_data()));
|
| 55 |
+
if (WP_Optimize()->is_updraft_central_request()) {
|
| 56 |
+
$content .= $this->get_status_box_contents();
|
| 57 |
+
}
|
| 58 |
|
| 59 |
return array(
|
| 60 |
'content' => $content,
|
| 69 |
* @return array An array containing the WPO translations and the "Table Information" tab's rendered contents
|
| 70 |
*/
|
| 71 |
public function get_table_information_contents() {
|
| 72 |
+
$content = WP_Optimize()->include_template('database/tables.php', true, array('optimize_db' => false, 'load_data' => WP_Optimize()->template_should_include_data()));
|
| 73 |
|
| 74 |
return array(
|
| 75 |
'content' => $content,
|
| 85 |
*/
|
| 86 |
public function get_settings_contents() {
|
| 87 |
$admin_settings = '<form action="#" method="post" enctype="multipart/form-data" name="settings_form" id="settings_form">';
|
| 88 |
+
$admin_settings .= WP_Optimize()->include_template('database/settings-general.php', true, array('optimize_db' => false));
|
| 89 |
+
$admin_settings .= WP_Optimize()->include_template('database/settings-auto-cleanup.php', true, array('optimize_db' => false, 'show_innodb_option' => WP_Optimize()->template_should_include_data() && $this->optimizer->show_innodb_force_optimize()));
|
| 90 |
$admin_settings .= WP_Optimize()->include_template('settings/settings-logging.php', true, array('optimize_db' => false));
|
| 91 |
$admin_settings .= '<input id="wp-optimize-settings-save" class="button button-primary" type="submit" name="wp-optimize-settings" value="' . esc_attr('Save settings', 'wp-optimize') .'" />';
|
| 92 |
$admin_settings .= '</form>';
|
| 297 |
|
| 298 |
return $results;
|
| 299 |
}
|
| 300 |
+
|
| 301 |
+
/**
|
| 302 |
+
* Get the data for the tables tab
|
| 303 |
+
*
|
| 304 |
+
* @return array
|
| 305 |
+
*/
|
| 306 |
public function get_table_list() {
|
| 307 |
|
| 308 |
list ($total_size, $part2) = $this->optimizer->get_current_db_size();
|
| 309 |
|
| 310 |
+
return apply_filters('wpo_get_tables_data', array(
|
| 311 |
'table_list' => WP_Optimize()->include_template('database/tables-body.php', true, array('optimize_db' => false)),
|
| 312 |
'total_size' => $total_size
|
| 313 |
+
));
|
| 314 |
+
}
|
| 315 |
+
|
| 316 |
+
/**
|
| 317 |
+
* Get the database tabs information
|
| 318 |
+
*
|
| 319 |
+
* @return array
|
| 320 |
+
*/
|
| 321 |
+
public function get_database_tabs() {
|
| 322 |
+
return array_merge(array('optimizations' => $this->get_optimizations_table()), $this->get_table_list());
|
| 323 |
}
|
| 324 |
|
| 325 |
/**
|
includes/class-updraft-php-logger.php
CHANGED
|
@@ -3,6 +3,7 @@
|
|
| 3 |
if (!defined('ABSPATH')) die('No direct access allowed');
|
| 4 |
|
| 5 |
if (class_exists('Updraft_PHP_Logger')) return;
|
|
|
|
| 6 |
|
| 7 |
/**
|
| 8 |
* Class Updraft_PHP_Logger
|
| 3 |
if (!defined('ABSPATH')) die('No direct access allowed');
|
| 4 |
|
| 5 |
if (class_exists('Updraft_PHP_Logger')) return;
|
| 6 |
+
if (!class_exists('Updraft_Abstract_Logger')) require_once('class-updraft-abstract-logger.php');
|
| 7 |
|
| 8 |
/**
|
| 9 |
* Class Updraft_PHP_Logger
|
includes/class-updraft-smush-manager-commands.php
CHANGED
|
@@ -119,6 +119,7 @@ class Updraft_Smush_Manager_Commands extends Updraft_Task_Manager_Commands_1_0 {
|
|
| 119 |
|
| 120 |
$response['status'] = true;
|
| 121 |
$response['operation'] = 'restore';
|
|
|
|
| 122 |
$response['image'] = $image_id;
|
| 123 |
$response['success'] = $success;
|
| 124 |
$response['summary'] = __('The image was restored successfully', 'wp-optimize');
|
| 119 |
|
| 120 |
$response['status'] = true;
|
| 121 |
$response['operation'] = 'restore';
|
| 122 |
+
$response['blog_id'] = $blog_id;
|
| 123 |
$response['image'] = $image_id;
|
| 124 |
$response['success'] = $success;
|
| 125 |
$response['summary'] = __('The image was restored successfully', 'wp-optimize');
|
includes/class-updraft-smush-manager.php
CHANGED
|
@@ -248,25 +248,25 @@ class Updraft_Smush_Manager extends Updraft_Task_Manager_1_2 {
|
|
| 248 |
$backup_path = get_post_meta($image_id, 'original-file', true);
|
| 249 |
|
| 250 |
// If the file doesn't exist, check if it's relative
|
| 251 |
-
if (!
|
| 252 |
$uploads_dir = wp_upload_dir();
|
| 253 |
$uploads_basedir = trailingslashit($uploads_dir['basedir']);
|
| 254 |
|
| 255 |
-
if (
|
| 256 |
$backup_path = $uploads_basedir . $backup_path;
|
| 257 |
}
|
| 258 |
}
|
| 259 |
|
| 260 |
// If the file still doesn't exist, the record could be an absolute path from a migrated site
|
| 261 |
// Use the current Uploads path
|
| 262 |
-
if (!
|
| 263 |
$current_uploads_dir_folder = trailingslashit(substr($uploads_basedir, strlen(ABSPATH)));
|
| 264 |
// A strict operator (!==) needs to be used, as 0 is a positive result.
|
| 265 |
if (false !== strpos($backup_path, $current_uploads_dir_folder)) {
|
| 266 |
$temp_relative_backup_path = substr($backup_path, strpos($backup_path, $current_uploads_dir_folder) + strlen($current_uploads_dir_folder));
|
| 267 |
}
|
| 268 |
|
| 269 |
-
if (
|
| 270 |
$backup_path = $uploads_basedir . $temp_relative_backup_path;
|
| 271 |
}
|
| 272 |
|
|
@@ -274,7 +274,7 @@ class Updraft_Smush_Manager extends Updraft_Task_Manager_1_2 {
|
|
| 274 |
|
| 275 |
// If the file still doesn't exist, the record could be an absolute path from a migrated site
|
| 276 |
// The current Uploads path failed, so try with the default uploads directory value
|
| 277 |
-
if (!
|
| 278 |
// A strict operator (!==) needs to be used, as 0 is a positive result.
|
| 279 |
if (false !== strpos($backup_path, 'wp-content/uploads/')) {
|
| 280 |
$backup_path = substr($backup_path, strpos($backup_path, 'wp-content/uploads/') + strlen('wp-content/uploads/'));
|
|
@@ -282,7 +282,7 @@ class Updraft_Smush_Manager extends Updraft_Task_Manager_1_2 {
|
|
| 282 |
}
|
| 283 |
}
|
| 284 |
|
| 285 |
-
if (!
|
| 286 |
// Delete information about backup.
|
| 287 |
delete_post_meta($image_id, 'original-file');
|
| 288 |
$error = new WP_Error('restore_backup_not_found', __('The backup was not found; it may have been deleted or was already restored', 'wp-optimize'));
|
|
@@ -1022,7 +1022,7 @@ class Updraft_Smush_Manager extends Updraft_Task_Manager_1_2 {
|
|
| 1022 |
$log_header[] = "\n";
|
| 1023 |
$log_header[] = "Header for logs at time: ".date('r')." on ".network_site_url();
|
| 1024 |
$log_header[] = "WP: ".$wp_version;
|
| 1025 |
-
$log_header[] = "PHP: ".phpversion()." (".PHP_SAPI.", ".@php_uname().")"
|
| 1026 |
$log_header[] = "MySQL: $mysql_version";
|
| 1027 |
$log_header[] = "WPLANG: ".get_locale();
|
| 1028 |
$log_header[] = "Server: ".$_SERVER["SERVER_SOFTWARE"];
|
|
@@ -1067,7 +1067,7 @@ class Updraft_Smush_Manager extends Updraft_Task_Manager_1_2 {
|
|
| 1067 |
|
| 1068 |
if (!$got_wp_version) {
|
| 1069 |
global $wp_version;
|
| 1070 |
-
@include(ABSPATH.WPINC.'/version.php')
|
| 1071 |
$got_wp_version = $wp_version;
|
| 1072 |
}
|
| 1073 |
|
|
@@ -1113,7 +1113,7 @@ class Updraft_Smush_Manager extends Updraft_Task_Manager_1_2 {
|
|
| 1113 |
* @return Integer - 1 or 0
|
| 1114 |
*/
|
| 1115 |
public function detect_safe_mode() {
|
| 1116 |
-
return (@ini_get('safe_mode') && strtolower(@ini_get('safe_mode')) != "off") ? 1 : 0
|
| 1117 |
}
|
| 1118 |
|
| 1119 |
/**
|
|
@@ -1352,7 +1352,7 @@ class Updraft_Smush_Manager extends Updraft_Task_Manager_1_2 {
|
|
| 1352 |
public function unscheduled_original_file_deletion($post_id) {
|
| 1353 |
$the_original_file = get_post_meta($post_id, 'original-file', true);
|
| 1354 |
if ('' != $the_original_file && file_exists($the_original_file)) {
|
| 1355 |
-
@unlink($the_original_file)
|
| 1356 |
}
|
| 1357 |
}
|
| 1358 |
|
| 248 |
$backup_path = get_post_meta($image_id, 'original-file', true);
|
| 249 |
|
| 250 |
// If the file doesn't exist, check if it's relative
|
| 251 |
+
if (!is_file($backup_path)) {
|
| 252 |
$uploads_dir = wp_upload_dir();
|
| 253 |
$uploads_basedir = trailingslashit($uploads_dir['basedir']);
|
| 254 |
|
| 255 |
+
if (is_file($uploads_basedir . $backup_path)) {
|
| 256 |
$backup_path = $uploads_basedir . $backup_path;
|
| 257 |
}
|
| 258 |
}
|
| 259 |
|
| 260 |
// If the file still doesn't exist, the record could be an absolute path from a migrated site
|
| 261 |
// Use the current Uploads path
|
| 262 |
+
if (!is_file($backup_path)) {
|
| 263 |
$current_uploads_dir_folder = trailingslashit(substr($uploads_basedir, strlen(ABSPATH)));
|
| 264 |
// A strict operator (!==) needs to be used, as 0 is a positive result.
|
| 265 |
if (false !== strpos($backup_path, $current_uploads_dir_folder)) {
|
| 266 |
$temp_relative_backup_path = substr($backup_path, strpos($backup_path, $current_uploads_dir_folder) + strlen($current_uploads_dir_folder));
|
| 267 |
}
|
| 268 |
|
| 269 |
+
if (is_file($uploads_basedir . $temp_relative_backup_path)) {
|
| 270 |
$backup_path = $uploads_basedir . $temp_relative_backup_path;
|
| 271 |
}
|
| 272 |
|
| 274 |
|
| 275 |
// If the file still doesn't exist, the record could be an absolute path from a migrated site
|
| 276 |
// The current Uploads path failed, so try with the default uploads directory value
|
| 277 |
+
if (!is_file($backup_path)) {
|
| 278 |
// A strict operator (!==) needs to be used, as 0 is a positive result.
|
| 279 |
if (false !== strpos($backup_path, 'wp-content/uploads/')) {
|
| 280 |
$backup_path = substr($backup_path, strpos($backup_path, 'wp-content/uploads/') + strlen('wp-content/uploads/'));
|
| 282 |
}
|
| 283 |
}
|
| 284 |
|
| 285 |
+
if (!is_file($backup_path)) {
|
| 286 |
// Delete information about backup.
|
| 287 |
delete_post_meta($image_id, 'original-file');
|
| 288 |
$error = new WP_Error('restore_backup_not_found', __('The backup was not found; it may have been deleted or was already restored', 'wp-optimize'));
|
| 1022 |
$log_header[] = "\n";
|
| 1023 |
$log_header[] = "Header for logs at time: ".date('r')." on ".network_site_url();
|
| 1024 |
$log_header[] = "WP: ".$wp_version;
|
| 1025 |
+
$log_header[] = "PHP: ".phpversion()." (".PHP_SAPI.", ".@php_uname().")";// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged
|
| 1026 |
$log_header[] = "MySQL: $mysql_version";
|
| 1027 |
$log_header[] = "WPLANG: ".get_locale();
|
| 1028 |
$log_header[] = "Server: ".$_SERVER["SERVER_SOFTWARE"];
|
| 1067 |
|
| 1068 |
if (!$got_wp_version) {
|
| 1069 |
global $wp_version;
|
| 1070 |
+
@include(ABSPATH.WPINC.'/version.php');// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged
|
| 1071 |
$got_wp_version = $wp_version;
|
| 1072 |
}
|
| 1073 |
|
| 1113 |
* @return Integer - 1 or 0
|
| 1114 |
*/
|
| 1115 |
public function detect_safe_mode() {
|
| 1116 |
+
return (@ini_get('safe_mode') && strtolower(@ini_get('safe_mode')) != "off") ? 1 : 0;// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged
|
| 1117 |
}
|
| 1118 |
|
| 1119 |
/**
|
| 1352 |
public function unscheduled_original_file_deletion($post_id) {
|
| 1353 |
$the_original_file = get_post_meta($post_id, 'original-file', true);
|
| 1354 |
if ('' != $the_original_file && file_exists($the_original_file)) {
|
| 1355 |
+
@unlink($the_original_file);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged
|
| 1356 |
}
|
| 1357 |
}
|
| 1358 |
|
includes/class-wp-optimize-options.php
CHANGED
|
@@ -408,7 +408,7 @@ class WP_Optimize_Options {
|
|
| 408 |
// Save additional auto backup option values.
|
| 409 |
foreach ($settings as $key => $value) {
|
| 410 |
if (preg_match('/enable\-auto\-backup\-/', $key)) {
|
| 411 |
-
$value = ('
|
| 412 |
$this->update_option($key, $value);
|
| 413 |
}
|
| 414 |
}
|
| 408 |
// Save additional auto backup option values.
|
| 409 |
foreach ($settings as $key => $value) {
|
| 410 |
if (preg_match('/enable\-auto\-backup\-/', $key)) {
|
| 411 |
+
$value = ('true' == $value) ? 'true' : 'false';
|
| 412 |
$this->update_option($key, $value);
|
| 413 |
}
|
| 414 |
}
|
includes/class-wp-optimize-updates.php
CHANGED
|
@@ -22,6 +22,7 @@ class WP_Optimize_Updates {
|
|
| 22 |
*/
|
| 23 |
private static $updates = array(
|
| 24 |
'3.0.12' => array('delete_old_locks'),
|
|
|
|
| 25 |
);
|
| 26 |
|
| 27 |
/**
|
|
@@ -65,6 +66,13 @@ class WP_Optimize_Updates {
|
|
| 65 |
|
| 66 |
$wpdb->query($query);
|
| 67 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
}
|
| 69 |
|
| 70 |
endif;
|
| 22 |
*/
|
| 23 |
private static $updates = array(
|
| 24 |
'3.0.12' => array('delete_old_locks'),
|
| 25 |
+
'3.0.17' => array('disable_cache_directories_viewing'),
|
| 26 |
);
|
| 27 |
|
| 28 |
/**
|
| 66 |
|
| 67 |
$wpdb->query($query);
|
| 68 |
}
|
| 69 |
+
|
| 70 |
+
/**
|
| 71 |
+
* Disable cache directories viewing.
|
| 72 |
+
*/
|
| 73 |
+
public static function disable_cache_directories_viewing() {
|
| 74 |
+
wpo_disable_cache_directories_viewing();
|
| 75 |
+
}
|
| 76 |
}
|
| 77 |
|
| 78 |
endif;
|
includes/class-wp-optimizer.php
CHANGED
|
@@ -458,9 +458,14 @@ class WP_Optimizer {
|
|
| 458 |
/**
|
| 459 |
* This function will return total database size and a possible gain of db in KB.
|
| 460 |
*
|
|
|
|
| 461 |
* @return string total db size gained.
|
| 462 |
*/
|
| 463 |
-
public function get_current_db_size() {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 464 |
|
| 465 |
$wp_optimize = WP_Optimize();
|
| 466 |
|
|
@@ -487,7 +492,9 @@ class WP_Optimizer {
|
|
| 487 |
}
|
| 488 |
|
| 489 |
$total_size = ($data_usage + $index_usage);
|
| 490 |
-
|
|
|
|
|
|
|
| 491 |
}
|
| 492 |
|
| 493 |
/**
|
|
@@ -537,4 +544,14 @@ class WP_Optimizer {
|
|
| 537 |
|
| 538 |
return array('output' => $output);
|
| 539 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 540 |
}
|
| 458 |
/**
|
| 459 |
* This function will return total database size and a possible gain of db in KB.
|
| 460 |
*
|
| 461 |
+
* @param boolean $update - Wether to update the values or not
|
| 462 |
* @return string total db size gained.
|
| 463 |
*/
|
| 464 |
+
public function get_current_db_size($update = false) {
|
| 465 |
+
|
| 466 |
+
if (!$update && $db_size = get_transient('wpo_get_current_db_size')) {
|
| 467 |
+
return $db_size;
|
| 468 |
+
}
|
| 469 |
|
| 470 |
$wp_optimize = WP_Optimize();
|
| 471 |
|
| 492 |
}
|
| 493 |
|
| 494 |
$total_size = ($data_usage + $index_usage);
|
| 495 |
+
$db_size = array($wp_optimize->format_size($total_size), $wp_optimize->format_size($total_gain));
|
| 496 |
+
set_transient('wpo_get_current_db_size', $db_size, 3600);
|
| 497 |
+
return $db_size;
|
| 498 |
}
|
| 499 |
|
| 500 |
/**
|
| 544 |
|
| 545 |
return array('output' => $output);
|
| 546 |
}
|
| 547 |
+
|
| 548 |
+
/**
|
| 549 |
+
* Wether InnoDB tables require confirmation to be optimized
|
| 550 |
+
*
|
| 551 |
+
* @return boolean
|
| 552 |
+
*/
|
| 553 |
+
public function show_innodb_force_optimize() {
|
| 554 |
+
$tablesstatus = $this->get_table_information();
|
| 555 |
+
return false === $tablesstatus['is_optimizable'] && $tablesstatus['inno_db_tables'] > 0;
|
| 556 |
+
}
|
| 557 |
}
|
includes/wp-optimize-notices.php
CHANGED
|
@@ -17,7 +17,7 @@ class WP_Optimize_Notices extends Updraft_Notices_1_0 {
|
|
| 17 |
/**
|
| 18 |
* Creates and returns the only notice instance
|
| 19 |
*
|
| 20 |
-
* @return
|
| 21 |
*/
|
| 22 |
public static function instance() {
|
| 23 |
if (empty(self::$_instance)) {
|
|
@@ -123,17 +123,17 @@ class WP_Optimize_Notices extends Updraft_Notices_1_0 {
|
|
| 123 |
'supported_positions' => $this->anywhere,
|
| 124 |
'validity_function' => 'is_wpo_premium_installed',
|
| 125 |
),
|
| 126 |
-
'meta-slider' => array(
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
),
|
| 137 |
|
| 138 |
// The sale adverts content starts here
|
| 139 |
'blackfriday' => array(
|
|
@@ -218,9 +218,6 @@ class WP_Optimize_Notices extends Updraft_Notices_1_0 {
|
|
| 218 |
if ($this->initialized) return;
|
| 219 |
$this->initialized = true;
|
| 220 |
$this->notices_content = (defined('WP_OPTIMIZE_NOADS_B') && WP_OPTIMIZE_NOADS_B) ? array() : $this->populate_notices_content();
|
| 221 |
-
$our_version = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? WPO_VERSION.'.'.time() : WPO_VERSION;
|
| 222 |
-
$min_or_not_internal = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '' : '-'. str_replace('.', '-', WPO_VERSION). '.min';
|
| 223 |
-
wp_enqueue_style('wp-optimize-notices-css', WPO_PLUGIN_URL.'/css/wp-optimize-notices'.$min_or_not_internal.'.css', array(), $our_version);
|
| 224 |
}
|
| 225 |
|
| 226 |
/**
|
| 17 |
/**
|
| 18 |
* Creates and returns the only notice instance
|
| 19 |
*
|
| 20 |
+
* @return object WP_Optimize_Notices instance
|
| 21 |
*/
|
| 22 |
public static function instance() {
|
| 23 |
if (empty(self::$_instance)) {
|
| 123 |
'supported_positions' => $this->anywhere,
|
| 124 |
'validity_function' => 'is_wpo_premium_installed',
|
| 125 |
),
|
| 126 |
+
// 'meta-slider' => array(
|
| 127 |
+
// 'prefix' => '',
|
| 128 |
+
// 'title' => __("MetaSlider: the world's #1 slider plugin from the makers of WP-Optimize", "wp-optimize"),
|
| 129 |
+
// 'text' => __("With MetaSlider, you can easily add style and flare with beautifully-designed sliders.", "wp-optimize"),
|
| 130 |
+
// 'button_link' => 'https://www.metaslider.com',
|
| 131 |
+
// 'button_meta' => 'metaslider',
|
| 132 |
+
// 'image' => 'notices/metaslider_logo.png',
|
| 133 |
+
// 'dismiss_time' => 'dismiss_notice',
|
| 134 |
+
// 'supported_positions' => $this->anywhere,
|
| 135 |
+
// 'validity_function' => 'is_metaslider_installed',
|
| 136 |
+
// ),
|
| 137 |
|
| 138 |
// The sale adverts content starts here
|
| 139 |
'blackfriday' => array(
|
| 218 |
if ($this->initialized) return;
|
| 219 |
$this->initialized = true;
|
| 220 |
$this->notices_content = (defined('WP_OPTIMIZE_NOADS_B') && WP_OPTIMIZE_NOADS_B) ? array() : $this->populate_notices_content();
|
|
|
|
|
|
|
|
|
|
| 221 |
}
|
| 222 |
|
| 223 |
/**
|
js/cache-3-0-16.min.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
var WP_Optimize_Cache=function(e){function a(){var e={};return s(".cache-settings").each(function(){var a=s(this),o=a.attr("name");a.is('input[type="checkbox"]')?e[o]=a.is(":checked")?1:0:a.is("textarea")?e[o]=a.val().split("\n"):e[o]=a.val()}),e}function o(){d||(d=setInterval(function(){t()},5e3))}function t(){e("get_cache_preload_status",null,function(e){e.done?(_.val(wpoptimize.run_now),_.data("running",!1),clearInterval(d),d=null):(_.val(wpoptimize.cancel),_.data("running",!0)),l.text(e.message),r(e)})}function r(e){s("#wpo_current_cache_size_information").text(wpoptimize.current_cache_size+" "+e.size),s("#wpo_current_cache_file_count").text(wpoptimize.number_of_files+" "+e.file_count)}var s=jQuery,i=s("#wp_optimize_browser_cache_enable"),n=s("#wp-optimize-purge-cache"),p=s("#enable_page_caching"),c=s("#page_cache_length_value");n.click(function(){var a=s(this),t=a.next(),i=t.next();t.show(),e("purge_page_cache",{},function(e){t.hide(),i.show(),setTimeout(function(){i.fadeOut("slow",function(){i.hide()}),o()},5e3),r(e)})}),s("body").on("wpo_purge_cache",function(){n.trigger("click")}),i.closest("form").submit(function(e){return e.preventDefault(),i.trigger("click"),!1}),c.on("change",function(){var e=parseInt(c.val(),10);s('#preload_schedule_type option[value="wpo_use_cache_lifespan"]').prop("disabled",isNaN(e)||e<=0)}),s("#wp_optimize_gzip_compression_enable").on("click",function(){var a=s(this),o=a.next();o.show(),e("enable_gzip_compression",{enable:a.data("enable")},function(e){var t=s("#wpo_gzip_compression_status");e?(e.enabled?(a.text(wpoptimize.disable),a.data("enable","0"),t.removeClass("wpo-disabled").addClass("wpo-enabled")):(a.text(wpoptimize.enable),a.data("enable","1"),t.addClass("wpo-disabled").removeClass("wpo-enabled")),e.message?s("#wpo_gzip_compression_error_message").text(e.message).show():s("#wpo_gzip_compression_error_message").hide(),e.output?s("#wpo_gzip_compression_output").html(e.output).show():s("#wpo_gzip_compression_output").hide()):alert(wpoptimize.error_unexpected_response),o.hide()}).fail(function(){alert(wpoptimize.error_unexpected_response),o.hide()})}),s(".wpo-refresh-gzip-status").on("click",function(a){a.preventDefault(),$link=s(this),$link.addClass("loading"),e("get_gzip_compression_status",null,function(e){$link.removeClass("loading");var a=s("#wpo_gzip_compression_status");e.hasOwnProperty("status")?e.status?a.removeClass("wpo-disabled").addClass("wpo-enabled"):a.addClass("wpo-disabled").removeClass("wpo-enabled"):e.hasOwnProperty("error")&&(alert(e.error),console.log("Gzip status error code: "+e.code),console.log("Gzip status error message: "+e.message))})}),i.on("click",function(){var a=s("#wpo_browser_cache_expire_days"),o=s("#wpo_browser_cache_expire_hours"),t=parseInt(a.val(),10),r=parseInt(o.val(),10),i=s(this),n=i.next();return isNaN(t)&&(t=0),isNaN(r)&&(r=0),t<0||r<0?(s("#wpo_browser_cache_error_message").text(wpoptimize.please_use_positive_integers).show(),!1):r>23?(s("#wpo_browser_cache_error_message").text(wpoptimize.please_use_valid_values).show(),!1):(s("#wpo_browser_cache_error_message").hide(),a.val(t),o.val(r),n.show(),void e("enable_browser_cache",{browser_cache_expire_days:t,browser_cache_expire_hours:r},function(e){var a=s("#wpo_browser_cache_status");e?(e.enabled?(i.text(wpoptimize.update),a.removeClass("wpo-disabled").addClass("wpo-enabled")):(i.text(wpoptimize.enable),a.addClass("wpo-disabled").removeClass("wpo-enabled")),e.message?s("#wpo_browser_cache_message").text(e.message).show():s("#wpo_browser_cache_message").hide(),e.error_message?s("#wpo_browser_cache_error_message").text(e.error_message).show():s("#wpo_browser_cache_error_message").hide(),e.output?s("#wpo_browser_cache_output").html(e.output).show():s("#wpo_browser_cache_output").hide()):alert(wpoptimize.error_unexpected_response),n.hide()}).fail(function(){alert(wpoptimize.error_unexpected_response),n.hide()}))}),s("#wp-optimize-save-cache-settings, #wp-optimize-save-cache-advanced-rules, #wp-optimize-save-cache-preload-settings").click(function(){var o=s(this),t=o.next(),r=t.next();t.show(),s.blockUI(),e("save_cache_settings",{"cache-settings":a()},function(e){e.hasOwnProperty("error")?(console.log(e.error),s(".wpo-error__enabling-cache").removeClass("wpo_hidden").find("p").text(e.error.message)):s(".wpo-error__enabling-cache").addClass("wpo_hidden").find("p").text(""),e.hasOwnProperty("advanced_cache_file_writing_error")?s("#wpo_advanced_cache_output").text(e.advanced_cache_file_content).show():s("#wpo_advanced_cache_output").hide(),s.unblockUI(),t.hide(),p.prop("checked",e.enabled),r.show(),p.is(":checked")?(s(".purge-cache").show(),s("#wp_optimize_run_cache_preload").removeProp("disabled")):(s(".purge-cache").hide(),s("#wp_optimize_run_cache_preload").prop("disabled",!0)),setTimeout(function(){r.fadeOut("slow",function(){r.hide()})},5e3)})}),p.on("change",function(){s("#wp-optimize-save-cache-settings").trigger("click")});var _=s("#wp_optimize_run_cache_preload"),l=s("#wp_optimize_preload_cache_status"),d=null,u=s("#enable_schedule_preload"),w=s("#preload_schedule_type");u.change(function(){u.prop("checked")?w.prop("disabled",!1):w.prop("disabled",!0)}),u.trigger("change"),_.on("click",function(){var a=s(this),t=a.data("running"),r=l.text();a.prop("disabled",!0),t?(a.data("running",!1),clearInterval(d),d=null,e("cancel_cache_preload",null,function(e){e&&e.hasOwnProperty("message")&&l.text(e.message)}).always(function(){a.val(wpoptimize.run_now),a.prop("disabled",!1)})):(l.text(wpoptimize.starting_preload),a.data("running",!0),e("run_cache_preload",null,null,!0,{timeout:3e3}).always(function(e){try{var t=wpo_parse_json(e)}catch(s){}return t&&t.error?(alert(t.error),l.text(r),a.prop("disabled",!1),void a.data("running",!1)):(l.text(wpoptimize.loading_urls),a.val(wpoptimize.cancel),a.prop("disabled",!1),void o())}))}),_.data("running")&&o()};
|
|
|
js/cache-3-0-18.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
var WP_Optimize_Cache=function(){function e(){var e={};return r(".cache-settings").each(function(){var a=r(this),o=a.attr("name");a.is('input[type="checkbox"]')?e[o]=a.is(":checked")?1:0:a.is("textarea")?e[o]=a.val().split("\n"):e[o]=a.val()}),e}function a(){d||(d=setInterval(function(){o()},5e3))}function o(){s("get_cache_preload_status",null,function(e){e.done?(_.val(wpoptimize.run_now),_.data("running",!1),clearInterval(d),d=null):(_.val(wpoptimize.cancel),_.data("running",!0)),l.text(e.message),t(e)})}function t(e){r("#wpo_current_cache_size_information").text(wpoptimize.current_cache_size+" "+e.size),r("#wpo_current_cache_file_count").text(wpoptimize.number_of_files+" "+e.file_count)}var r=jQuery,s=wp_optimize.send_command,i=r("#wp_optimize_browser_cache_enable"),n=r("#wp-optimize-purge-cache"),p=r("#enable_page_caching"),c=r("#page_cache_length_value");n.click(function(){var e=r(this),o=e.next(),i=o.next();o.show(),s("purge_page_cache",{},function(e){o.hide(),i.show(),setTimeout(function(){i.fadeOut("slow",function(){i.hide()}),a()},5e3),t(e)})}),r("body").on("wpo_purge_cache",function(){n.trigger("click")}),i.closest("form").submit(function(e){return e.preventDefault(),i.trigger("click"),!1}),c.on("change",function(){var e=parseInt(c.val(),10);r('#preload_schedule_type option[value="wpo_use_cache_lifespan"]').prop("disabled",isNaN(e)||e<=0)}),r("#wp_optimize_gzip_compression_enable").on("click",function(){var e=r(this),a=e.next();a.show(),s("enable_gzip_compression",{enable:e.data("enable")},function(o){var t=r("#wpo_gzip_compression_status");o?(o.enabled?(e.text(wpoptimize.disable),e.data("enable","0"),t.removeClass("wpo-disabled").addClass("wpo-enabled")):(e.text(wpoptimize.enable),e.data("enable","1"),t.addClass("wpo-disabled").removeClass("wpo-enabled")),o.message?r("#wpo_gzip_compression_error_message").text(o.message).show():r("#wpo_gzip_compression_error_message").hide(),o.output?r("#wpo_gzip_compression_output").html(o.output).show():r("#wpo_gzip_compression_output").hide()):alert(wpoptimize.error_unexpected_response),a.hide()}).fail(function(){alert(wpoptimize.error_unexpected_response),a.hide()})}),r(".wpo-refresh-gzip-status").on("click",function(e){e.preventDefault(),$link=r(this),$link.addClass("loading"),s("get_gzip_compression_status",null,function(e){$link.removeClass("loading");var a=r("#wpo_gzip_compression_status");e.hasOwnProperty("status")?e.status?a.removeClass("wpo-disabled").addClass("wpo-enabled"):a.addClass("wpo-disabled").removeClass("wpo-enabled"):e.hasOwnProperty("error")&&(alert(e.error),console.log("Gzip status error code: "+e.code),console.log("Gzip status error message: "+e.message))})}),i.on("click",function(){var e=r("#wpo_browser_cache_expire_days"),a=r("#wpo_browser_cache_expire_hours"),o=parseInt(e.val(),10),t=parseInt(a.val(),10),i=r(this),n=i.next();return isNaN(o)&&(o=0),isNaN(t)&&(t=0),o<0||t<0?(r("#wpo_browser_cache_error_message").text(wpoptimize.please_use_positive_integers).show(),!1):t>23?(r("#wpo_browser_cache_error_message").text(wpoptimize.please_use_valid_values).show(),!1):(r("#wpo_browser_cache_error_message").hide(),e.val(o),a.val(t),n.show(),void s("enable_browser_cache",{browser_cache_expire_days:o,browser_cache_expire_hours:t},function(e){var a=r("#wpo_browser_cache_status");e?(e.enabled?(i.text(wpoptimize.update),a.removeClass("wpo-disabled").addClass("wpo-enabled")):(i.text(wpoptimize.enable),a.addClass("wpo-disabled").removeClass("wpo-enabled")),e.message?r("#wpo_browser_cache_message").text(e.message).show():r("#wpo_browser_cache_message").hide(),e.error_message?r("#wpo_browser_cache_error_message").text(e.error_message).show():r("#wpo_browser_cache_error_message").hide(),e.output?r("#wpo_browser_cache_output").html(e.output).show():r("#wpo_browser_cache_output").hide()):alert(wpoptimize.error_unexpected_response),n.hide()}).fail(function(){alert(wpoptimize.error_unexpected_response),n.hide()}))}),r("#wp-optimize-save-cache-settings, #wp-optimize-save-cache-advanced-rules, #wp-optimize-save-cache-preload-settings").click(function(){var a=r(this),o=a.next(),t=o.next();o.show(),r.blockUI(),s("save_cache_settings",{"cache-settings":e()},function(e){e.hasOwnProperty("error")?(console.log(e.error),r(".wpo-error__enabling-cache").removeClass("wpo_hidden").find("p").text(e.error.message)):r(".wpo-error__enabling-cache").addClass("wpo_hidden").find("p").text(""),e.hasOwnProperty("advanced_cache_file_writing_error")?r("#wpo_advanced_cache_output").text(e.advanced_cache_file_content).show():r("#wpo_advanced_cache_output").hide(),p.prop("checked",e.enabled),t.show(),p.is(":checked")?(r(".purge-cache").show(),r("#wp_optimize_run_cache_preload").removeProp("disabled")):(r(".purge-cache").hide(),r("#wp_optimize_run_cache_preload").prop("disabled",!0)),setTimeout(function(){t.fadeOut("slow",function(){t.hide()})},5e3)}).always(function(){r.unblockUI(),o.hide()})}),p.on("change",function(){r("#wp-optimize-save-cache-settings").trigger("click")});var _=r("#wp_optimize_run_cache_preload"),l=r("#wp_optimize_preload_cache_status"),d=null,u=r("#enable_schedule_preload"),w=r("#preload_schedule_type");u.change(function(){u.prop("checked")?w.prop("disabled",!1):w.prop("disabled",!0)}),u.trigger("change"),_.on("click",function(){var e=r(this),o=e.data("running"),t=l.text();e.prop("disabled",!0),o?(e.data("running",!1),clearInterval(d),d=null,s("cancel_cache_preload",null,function(e){e&&e.hasOwnProperty("message")&&l.text(e.message)}).always(function(){e.val(wpoptimize.run_now),e.prop("disabled",!1)})):(l.text(wpoptimize.starting_preload),e.data("running",!0),s("run_cache_preload",null,null,!0,{timeout:3e3}).always(function(o){try{var r=wpo_parse_json(o)}catch(s){}return r&&r.error?(alert(r.error),l.text(t),e.prop("disabled",!1),void e.data("running",!1)):(l.text(wpoptimize.loading_urls),e.val(wpoptimize.cancel),e.prop("disabled",!1),void a())}))}),_.data("running")&&a()};
|
js/cache.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
-
var WP_Optimize_Cache = function (
|
| 2 |
|
| 3 |
var $ = jQuery;
|
|
|
|
| 4 |
|
| 5 |
var browser_cache_enable_btn = $('#wp_optimize_browser_cache_enable'),
|
| 6 |
purge_cache_btn = $('#wp-optimize-purge-cache'),
|
|
@@ -251,8 +252,6 @@ var WP_Optimize_Cache = function (send_command) {
|
|
| 251 |
$('#wpo_advanced_cache_output').hide();
|
| 252 |
}
|
| 253 |
|
| 254 |
-
$.unblockUI();
|
| 255 |
-
spinner.hide();
|
| 256 |
// update the toggle state depending on response.enabled
|
| 257 |
enable_page_caching_switch.prop('checked', response.enabled);
|
| 258 |
success_icon.show();
|
|
@@ -273,6 +272,9 @@ var WP_Optimize_Cache = function (send_command) {
|
|
| 273 |
success_icon.hide();
|
| 274 |
});
|
| 275 |
}, 5000);
|
|
|
|
|
|
|
|
|
|
| 276 |
});
|
| 277 |
});
|
| 278 |
|
| 1 |
+
var WP_Optimize_Cache = function () {
|
| 2 |
|
| 3 |
var $ = jQuery;
|
| 4 |
+
var send_command = wp_optimize.send_command;
|
| 5 |
|
| 6 |
var browser_cache_enable_btn = $('#wp_optimize_browser_cache_enable'),
|
| 7 |
purge_cache_btn = $('#wp-optimize-purge-cache'),
|
| 252 |
$('#wpo_advanced_cache_output').hide();
|
| 253 |
}
|
| 254 |
|
|
|
|
|
|
|
| 255 |
// update the toggle state depending on response.enabled
|
| 256 |
enable_page_caching_switch.prop('checked', response.enabled);
|
| 257 |
success_icon.show();
|
| 272 |
success_icon.hide();
|
| 273 |
});
|
| 274 |
}, 5000);
|
| 275 |
+
}).always(function() {
|
| 276 |
+
$.unblockUI();
|
| 277 |
+
spinner.hide();
|
| 278 |
});
|
| 279 |
});
|
| 280 |
|
js/handlebars/LICENSE
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
Copyright (C) 2011-
|
| 2 |
|
| 3 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 4 |
of this software and associated documentation files (the "Software"), to deal
|
| 1 |
+
Copyright (C) 2011-2019 by Yehuda Katz
|
| 2 |
|
| 3 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 4 |
of this software and associated documentation files (the "Software"), to deal
|
js/handlebars/handlebars.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
/**!
|
| 2 |
|
| 3 |
@license
|
| 4 |
-
handlebars v4.
|
| 5 |
|
| 6 |
-
Copyright (C) 2011-
|
| 7 |
|
| 8 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 9 |
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -92,23 +92,23 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 92 |
|
| 93 |
// Compiler imports
|
| 94 |
|
| 95 |
-
var _handlebarsCompilerAst = __webpack_require__(
|
| 96 |
|
| 97 |
var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst);
|
| 98 |
|
| 99 |
-
var _handlebarsCompilerBase = __webpack_require__(
|
| 100 |
|
| 101 |
-
var _handlebarsCompilerCompiler = __webpack_require__(
|
| 102 |
|
| 103 |
-
var _handlebarsCompilerJavascriptCompiler = __webpack_require__(
|
| 104 |
|
| 105 |
var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler);
|
| 106 |
|
| 107 |
-
var _handlebarsCompilerVisitor = __webpack_require__(
|
| 108 |
|
| 109 |
var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor);
|
| 110 |
|
| 111 |
-
var _handlebarsNoConflict = __webpack_require__(
|
| 112 |
|
| 113 |
var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
|
| 114 |
|
|
@@ -178,7 +178,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 178 |
// Each of these augment the Handlebars object. No need to setup here.
|
| 179 |
// (This is done to easily share code between commonjs and browse envs)
|
| 180 |
|
| 181 |
-
var _handlebarsSafeString = __webpack_require__(
|
| 182 |
|
| 183 |
var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);
|
| 184 |
|
|
@@ -190,11 +190,11 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 190 |
|
| 191 |
var Utils = _interopRequireWildcard(_handlebarsUtils);
|
| 192 |
|
| 193 |
-
var _handlebarsRuntime = __webpack_require__(
|
| 194 |
|
| 195 |
var runtime = _interopRequireWildcard(_handlebarsRuntime);
|
| 196 |
|
| 197 |
-
var _handlebarsNoConflict = __webpack_require__(
|
| 198 |
|
| 199 |
var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
|
| 200 |
|
|
@@ -276,7 +276,9 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 276 |
|
| 277 |
var _logger2 = _interopRequireDefault(_logger);
|
| 278 |
|
| 279 |
-
var
|
|
|
|
|
|
|
| 280 |
exports.VERSION = VERSION;
|
| 281 |
var COMPILER_REVISION = 8;
|
| 282 |
exports.COMPILER_REVISION = COMPILER_REVISION;
|
|
@@ -352,6 +354,13 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 352 |
},
|
| 353 |
unregisterDecorator: function unregisterDecorator(name) {
|
| 354 |
delete this.decorators[name];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 355 |
}
|
| 356 |
};
|
| 357 |
|
|
@@ -375,7 +384,6 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 375 |
exports.createFrame = createFrame;
|
| 376 |
exports.blockParams = blockParams;
|
| 377 |
exports.appendContextPath = appendContextPath;
|
| 378 |
-
|
| 379 |
var escape = {
|
| 380 |
'&': '&',
|
| 381 |
'<': '<',
|
|
@@ -499,7 +507,6 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 499 |
var _Object$defineProperty = __webpack_require__(7)['default'];
|
| 500 |
|
| 501 |
exports.__esModule = true;
|
| 502 |
-
|
| 503 |
var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];
|
| 504 |
|
| 505 |
function Exception(message, node) {
|
|
@@ -1047,7 +1054,11 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1047 |
if (arguments.length != 2) {
|
| 1048 |
throw new _exception2['default']('#unless requires exactly one argument');
|
| 1049 |
}
|
| 1050 |
-
return instance.helpers['if'].call(this, conditional, {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1051 |
});
|
| 1052 |
};
|
| 1053 |
|
|
@@ -1090,22 +1101,19 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1090 |
'use strict';
|
| 1091 |
|
| 1092 |
exports.__esModule = true;
|
| 1093 |
-
var dangerousPropertyRegex = /^(constructor|__defineGetter__|__defineSetter__|__lookupGetter__|__proto__)$/;
|
| 1094 |
-
|
| 1095 |
-
exports.dangerousPropertyRegex = dangerousPropertyRegex;
|
| 1096 |
|
| 1097 |
exports['default'] = function (instance) {
|
| 1098 |
-
instance.registerHelper('lookup', function (obj, field) {
|
| 1099 |
if (!obj) {
|
|
|
|
| 1100 |
return obj;
|
| 1101 |
}
|
| 1102 |
-
|
| 1103 |
-
return undefined;
|
| 1104 |
-
}
|
| 1105 |
-
return obj[field];
|
| 1106 |
});
|
| 1107 |
};
|
| 1108 |
|
|
|
|
|
|
|
| 1109 |
/***/ }),
|
| 1110 |
/* 29 */
|
| 1111 |
/***/ (function(module, exports, __webpack_require__) {
|
|
@@ -1238,8 +1246,8 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1238 |
|
| 1239 |
if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
|
| 1240 |
var method = logger.methodMap[level];
|
|
|
|
| 1241 |
if (!console[method]) {
|
| 1242 |
-
// eslint-disable-line no-console
|
| 1243 |
method = 'log';
|
| 1244 |
}
|
| 1245 |
|
|
@@ -1257,6 +1265,129 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1257 |
|
| 1258 |
/***/ }),
|
| 1259 |
/* 33 */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1260 |
/***/ (function(module, exports) {
|
| 1261 |
|
| 1262 |
// Build out our basic SafeString type
|
|
@@ -1275,12 +1406,14 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1275 |
module.exports = exports['default'];
|
| 1276 |
|
| 1277 |
/***/ }),
|
| 1278 |
-
/*
|
| 1279 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1280 |
|
| 1281 |
'use strict';
|
| 1282 |
|
| 1283 |
-
var _Object$seal = __webpack_require__(
|
|
|
|
|
|
|
| 1284 |
|
| 1285 |
var _interopRequireWildcard = __webpack_require__(3)['default'];
|
| 1286 |
|
|
@@ -1306,6 +1439,10 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1306 |
|
| 1307 |
var _helpers = __webpack_require__(10);
|
| 1308 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1309 |
function checkRevision(compilerInfo) {
|
| 1310 |
var compilerRevision = compilerInfo && compilerInfo[0] || 1,
|
| 1311 |
currentRevision = _base.COMPILER_REVISION;
|
|
@@ -1325,7 +1462,6 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1325 |
}
|
| 1326 |
|
| 1327 |
function template(templateSpec, env) {
|
| 1328 |
-
|
| 1329 |
/* istanbul ignore next */
|
| 1330 |
if (!env) {
|
| 1331 |
throw new _exception2['default']('No environment passed to template');
|
|
@@ -1352,13 +1488,16 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1352 |
}
|
| 1353 |
partial = env.VM.resolvePartial.call(this, partial, context, options);
|
| 1354 |
|
| 1355 |
-
var
|
|
|
|
|
|
|
|
|
|
| 1356 |
|
| 1357 |
-
var result = env.VM.invokePartial.call(this, partial, context,
|
| 1358 |
|
| 1359 |
if (result == null && env.compile) {
|
| 1360 |
options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
|
| 1361 |
-
result = options.partials[options.name](context,
|
| 1362 |
}
|
| 1363 |
if (result != null) {
|
| 1364 |
if (options.indent) {
|
|
@@ -1382,14 +1521,31 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1382 |
var container = {
|
| 1383 |
strict: function strict(obj, name, loc) {
|
| 1384 |
if (!obj || !(name in obj)) {
|
| 1385 |
-
throw new _exception2['default']('"' + name + '" not defined in ' + obj, {
|
|
|
|
|
|
|
| 1386 |
}
|
| 1387 |
return obj[name];
|
| 1388 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1389 |
lookup: function lookup(depths, name) {
|
| 1390 |
var len = depths.length;
|
| 1391 |
for (var i = 0; i < len; i++) {
|
| 1392 |
-
|
|
|
|
| 1393 |
return depths[i][name];
|
| 1394 |
}
|
| 1395 |
}
|
|
@@ -1425,6 +1581,15 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1425 |
}
|
| 1426 |
return value;
|
| 1427 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1428 |
// An empty object to use as replacement for null-contexts
|
| 1429 |
nullContext: _Object$seal({}),
|
| 1430 |
|
|
@@ -1454,28 +1619,35 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1454 |
function main(context /*, options*/) {
|
| 1455 |
return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);
|
| 1456 |
}
|
|
|
|
| 1457 |
main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);
|
| 1458 |
return main(context, options);
|
| 1459 |
}
|
|
|
|
| 1460 |
ret.isTop = true;
|
| 1461 |
|
| 1462 |
ret._setup = function (options) {
|
| 1463 |
if (!options.partial) {
|
| 1464 |
-
|
|
|
|
|
|
|
| 1465 |
|
| 1466 |
if (templateSpec.usePartial) {
|
| 1467 |
-
|
|
|
|
| 1468 |
}
|
| 1469 |
if (templateSpec.usePartial || templateSpec.useDecorators) {
|
| 1470 |
container.decorators = Utils.extend({}, env.decorators, options.decorators);
|
| 1471 |
}
|
| 1472 |
|
| 1473 |
container.hooks = {};
|
|
|
|
| 1474 |
|
| 1475 |
var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;
|
| 1476 |
_helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);
|
| 1477 |
_helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);
|
| 1478 |
} else {
|
|
|
|
| 1479 |
container.helpers = options.helpers;
|
| 1480 |
container.partials = options.partials;
|
| 1481 |
container.decorators = options.decorators;
|
|
@@ -1596,25 +1768,39 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1596 |
return prog;
|
| 1597 |
}
|
| 1598 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1599 |
/***/ }),
|
| 1600 |
-
/*
|
| 1601 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1602 |
|
| 1603 |
-
module.exports = { "default": __webpack_require__(
|
| 1604 |
|
| 1605 |
/***/ }),
|
| 1606 |
-
/*
|
| 1607 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1608 |
|
| 1609 |
-
__webpack_require__(
|
| 1610 |
module.exports = __webpack_require__(21).Object.seal;
|
| 1611 |
|
| 1612 |
/***/ }),
|
| 1613 |
-
/*
|
| 1614 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1615 |
|
| 1616 |
// 19.1.2.17 Object.seal(O)
|
| 1617 |
-
var isObject = __webpack_require__(
|
| 1618 |
|
| 1619 |
__webpack_require__(18)('seal', function($seal){
|
| 1620 |
return function seal(it){
|
|
@@ -1623,7 +1809,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1623 |
});
|
| 1624 |
|
| 1625 |
/***/ }),
|
| 1626 |
-
/*
|
| 1627 |
/***/ (function(module, exports) {
|
| 1628 |
|
| 1629 |
module.exports = function(it){
|
|
@@ -1631,12 +1817,34 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1631 |
};
|
| 1632 |
|
| 1633 |
/***/ }),
|
| 1634 |
-
/*
|
| 1635 |
/***/ (function(module, exports) {
|
| 1636 |
|
| 1637 |
-
/* WEBPACK VAR INJECTION */(function(global) {/* global window */
|
| 1638 |
'use strict';
|
| 1639 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1640 |
exports.__esModule = true;
|
| 1641 |
|
| 1642 |
exports['default'] = function (Handlebars) {
|
|
@@ -1656,7 +1864,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1656 |
/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
|
| 1657 |
|
| 1658 |
/***/ }),
|
| 1659 |
-
/*
|
| 1660 |
/***/ (function(module, exports) {
|
| 1661 |
|
| 1662 |
'use strict';
|
|
@@ -1691,7 +1899,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1691 |
module.exports = exports['default'];
|
| 1692 |
|
| 1693 |
/***/ }),
|
| 1694 |
-
/*
|
| 1695 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1696 |
|
| 1697 |
'use strict';
|
|
@@ -1704,15 +1912,15 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1704 |
exports.parseWithoutProcessing = parseWithoutProcessing;
|
| 1705 |
exports.parse = parse;
|
| 1706 |
|
| 1707 |
-
var _parser = __webpack_require__(
|
| 1708 |
|
| 1709 |
var _parser2 = _interopRequireDefault(_parser);
|
| 1710 |
|
| 1711 |
-
var _whitespaceControl = __webpack_require__(
|
| 1712 |
|
| 1713 |
var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl);
|
| 1714 |
|
| 1715 |
-
var _helpers = __webpack_require__(
|
| 1716 |
|
| 1717 |
var Helpers = _interopRequireWildcard(_helpers);
|
| 1718 |
|
|
@@ -1749,7 +1957,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1749 |
}
|
| 1750 |
|
| 1751 |
/***/ }),
|
| 1752 |
-
/*
|
| 1753 |
/***/ (function(module, exports) {
|
| 1754 |
|
| 1755 |
// File ignored in coverage tests via setting in .istanbul.yml
|
|
@@ -2490,7 +2698,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 2490 |
module.exports = exports["default"];
|
| 2491 |
|
| 2492 |
/***/ }),
|
| 2493 |
-
/*
|
| 2494 |
/***/ (function(module, exports, __webpack_require__) {
|
| 2495 |
|
| 2496 |
'use strict';
|
|
@@ -2499,7 +2707,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 2499 |
|
| 2500 |
exports.__esModule = true;
|
| 2501 |
|
| 2502 |
-
var _visitor = __webpack_require__(
|
| 2503 |
|
| 2504 |
var _visitor2 = _interopRequireDefault(_visitor);
|
| 2505 |
|
|
@@ -2714,7 +2922,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 2714 |
module.exports = exports['default'];
|
| 2715 |
|
| 2716 |
/***/ }),
|
| 2717 |
-
/*
|
| 2718 |
/***/ (function(module, exports, __webpack_require__) {
|
| 2719 |
|
| 2720 |
'use strict';
|
|
@@ -2857,7 +3065,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 2857 |
module.exports = exports['default'];
|
| 2858 |
|
| 2859 |
/***/ }),
|
| 2860 |
-
/*
|
| 2861 |
/***/ (function(module, exports, __webpack_require__) {
|
| 2862 |
|
| 2863 |
'use strict';
|
|
@@ -3088,14 +3296,14 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 3088 |
}
|
| 3089 |
|
| 3090 |
/***/ }),
|
| 3091 |
-
/*
|
| 3092 |
/***/ (function(module, exports, __webpack_require__) {
|
| 3093 |
|
| 3094 |
/* eslint-disable new-cap */
|
| 3095 |
|
| 3096 |
'use strict';
|
| 3097 |
|
| 3098 |
-
var _Object$create = __webpack_require__(
|
| 3099 |
|
| 3100 |
var _interopRequireDefault = __webpack_require__(1)['default'];
|
| 3101 |
|
|
@@ -3110,7 +3318,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 3110 |
|
| 3111 |
var _utils = __webpack_require__(5);
|
| 3112 |
|
| 3113 |
-
var _ast = __webpack_require__(
|
| 3114 |
|
| 3115 |
var _ast2 = _interopRequireDefault(_ast);
|
| 3116 |
|
|
@@ -3165,14 +3373,14 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 3165 |
options.blockParams = options.blockParams || [];
|
| 3166 |
|
| 3167 |
options.knownHelpers = _utils.extend(_Object$create(null), {
|
| 3168 |
-
|
| 3169 |
-
|
| 3170 |
-
|
| 3171 |
'if': true,
|
| 3172 |
-
|
| 3173 |
'with': true,
|
| 3174 |
-
|
| 3175 |
-
|
| 3176 |
}, options.knownHelpers);
|
| 3177 |
|
| 3178 |
return this.accept(program);
|
|
@@ -3439,7 +3647,11 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 3439 |
|
| 3440 |
// HELPERS
|
| 3441 |
opcode: function opcode(name) {
|
| 3442 |
-
this.opcodes.push({
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3443 |
},
|
| 3444 |
|
| 3445 |
addDepth: function addDepth(depth) {
|
|
@@ -3655,22 +3867,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 3655 |
}
|
| 3656 |
|
| 3657 |
/***/ }),
|
| 3658 |
-
/*
|
| 3659 |
-
/***/ (function(module, exports, __webpack_require__) {
|
| 3660 |
-
|
| 3661 |
-
module.exports = { "default": __webpack_require__(48), __esModule: true };
|
| 3662 |
-
|
| 3663 |
-
/***/ }),
|
| 3664 |
-
/* 48 */
|
| 3665 |
-
/***/ (function(module, exports, __webpack_require__) {
|
| 3666 |
-
|
| 3667 |
-
var $ = __webpack_require__(9);
|
| 3668 |
-
module.exports = function create(P, D){
|
| 3669 |
-
return $.create(P, D);
|
| 3670 |
-
};
|
| 3671 |
-
|
| 3672 |
-
/***/ }),
|
| 3673 |
-
/* 49 */
|
| 3674 |
/***/ (function(module, exports, __webpack_require__) {
|
| 3675 |
|
| 3676 |
'use strict';
|
|
@@ -3689,12 +3886,10 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 3689 |
|
| 3690 |
var _utils = __webpack_require__(5);
|
| 3691 |
|
| 3692 |
-
var _codeGen = __webpack_require__(
|
| 3693 |
|
| 3694 |
var _codeGen2 = _interopRequireDefault(_codeGen);
|
| 3695 |
|
| 3696 |
-
var _helpersLookup = __webpack_require__(28);
|
| 3697 |
-
|
| 3698 |
function Literal(value) {
|
| 3699 |
this.value = value;
|
| 3700 |
}
|
|
@@ -3704,20 +3899,8 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 3704 |
JavaScriptCompiler.prototype = {
|
| 3705 |
// PUBLIC API: You can override these methods in a subclass to provide
|
| 3706 |
// alternative compiled forms for name lookup and buffering semantics
|
| 3707 |
-
nameLookup: function nameLookup(parent, name
|
| 3708 |
-
|
| 3709 |
-
var isEnumerable = [this.aliasable('container.propertyIsEnumerable'), '.call(', parent, ',', JSON.stringify(name), ')'];
|
| 3710 |
-
return ['(', isEnumerable, '?', _actualLookup(), ' : undefined)'];
|
| 3711 |
-
}
|
| 3712 |
-
return _actualLookup();
|
| 3713 |
-
|
| 3714 |
-
function _actualLookup() {
|
| 3715 |
-
if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
|
| 3716 |
-
return [parent, '.', name];
|
| 3717 |
-
} else {
|
| 3718 |
-
return [parent, '[', JSON.stringify(name), ']'];
|
| 3719 |
-
}
|
| 3720 |
-
}
|
| 3721 |
},
|
| 3722 |
depthedLookup: function depthedLookup(name) {
|
| 3723 |
return [this.aliasable('container.lookup'), '(depths, "', name, '")'];
|
|
@@ -3753,6 +3936,12 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 3753 |
return this.quotedString('');
|
| 3754 |
},
|
| 3755 |
// END PUBLIC API
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3756 |
|
| 3757 |
compile: function compile(environment, options, context, asObject) {
|
| 3758 |
this.environment = environment;
|
|
@@ -3811,7 +4000,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 3811 |
if (!this.decorators.isEmpty()) {
|
| 3812 |
this.useDecorators = true;
|
| 3813 |
|
| 3814 |
-
this.decorators.prepend('var decorators = container.decorators;\n');
|
| 3815 |
this.decorators.push('return fn;');
|
| 3816 |
|
| 3817 |
if (asObject) {
|
|
@@ -3924,6 +4113,10 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 3924 |
}
|
| 3925 |
});
|
| 3926 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3927 |
var params = ['container', 'depth0', 'helpers', 'partials', 'data'];
|
| 3928 |
|
| 3929 |
if (this.useBlockParams || this.useDepths) {
|
|
@@ -4002,6 +4195,10 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 4002 |
return this.source.merge();
|
| 4003 |
},
|
| 4004 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4005 |
// [blockValue]
|
| 4006 |
//
|
| 4007 |
// On stack, before: hash, inverse, program, value
|
|
@@ -4804,6 +5001,9 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 4804 |
}
|
| 4805 |
})();
|
| 4806 |
|
|
|
|
|
|
|
|
|
|
| 4807 |
JavaScriptCompiler.isValidJavaScriptVariableName = function (name) {
|
| 4808 |
return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
|
| 4809 |
};
|
|
@@ -4831,7 +5031,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 4831 |
module.exports = exports['default'];
|
| 4832 |
|
| 4833 |
/***/ }),
|
| 4834 |
-
/*
|
| 4835 |
/***/ (function(module, exports, __webpack_require__) {
|
| 4836 |
|
| 4837 |
/* global define */
|
| 1 |
/**!
|
| 2 |
|
| 3 |
@license
|
| 4 |
+
handlebars v4.7.3
|
| 5 |
|
| 6 |
+
Copyright (C) 2011-2019 by Yehuda Katz
|
| 7 |
|
| 8 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 9 |
of this software and associated documentation files (the "Software"), to deal
|
| 92 |
|
| 93 |
// Compiler imports
|
| 94 |
|
| 95 |
+
var _handlebarsCompilerAst = __webpack_require__(45);
|
| 96 |
|
| 97 |
var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst);
|
| 98 |
|
| 99 |
+
var _handlebarsCompilerBase = __webpack_require__(46);
|
| 100 |
|
| 101 |
+
var _handlebarsCompilerCompiler = __webpack_require__(51);
|
| 102 |
|
| 103 |
+
var _handlebarsCompilerJavascriptCompiler = __webpack_require__(52);
|
| 104 |
|
| 105 |
var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler);
|
| 106 |
|
| 107 |
+
var _handlebarsCompilerVisitor = __webpack_require__(49);
|
| 108 |
|
| 109 |
var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor);
|
| 110 |
|
| 111 |
+
var _handlebarsNoConflict = __webpack_require__(44);
|
| 112 |
|
| 113 |
var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
|
| 114 |
|
| 178 |
// Each of these augment the Handlebars object. No need to setup here.
|
| 179 |
// (This is done to easily share code between commonjs and browse envs)
|
| 180 |
|
| 181 |
+
var _handlebarsSafeString = __webpack_require__(37);
|
| 182 |
|
| 183 |
var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);
|
| 184 |
|
| 190 |
|
| 191 |
var Utils = _interopRequireWildcard(_handlebarsUtils);
|
| 192 |
|
| 193 |
+
var _handlebarsRuntime = __webpack_require__(38);
|
| 194 |
|
| 195 |
var runtime = _interopRequireWildcard(_handlebarsRuntime);
|
| 196 |
|
| 197 |
+
var _handlebarsNoConflict = __webpack_require__(44);
|
| 198 |
|
| 199 |
var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
|
| 200 |
|
| 276 |
|
| 277 |
var _logger2 = _interopRequireDefault(_logger);
|
| 278 |
|
| 279 |
+
var _internalProtoAccess = __webpack_require__(33);
|
| 280 |
+
|
| 281 |
+
var VERSION = '4.7.3';
|
| 282 |
exports.VERSION = VERSION;
|
| 283 |
var COMPILER_REVISION = 8;
|
| 284 |
exports.COMPILER_REVISION = COMPILER_REVISION;
|
| 354 |
},
|
| 355 |
unregisterDecorator: function unregisterDecorator(name) {
|
| 356 |
delete this.decorators[name];
|
| 357 |
+
},
|
| 358 |
+
/**
|
| 359 |
+
* Reset the memory of illegal property accesses that have already been logged.
|
| 360 |
+
* @deprecated should only be used in handlebars test-cases
|
| 361 |
+
*/
|
| 362 |
+
resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {
|
| 363 |
+
_internalProtoAccess.resetLoggedProperties();
|
| 364 |
}
|
| 365 |
};
|
| 366 |
|
| 384 |
exports.createFrame = createFrame;
|
| 385 |
exports.blockParams = blockParams;
|
| 386 |
exports.appendContextPath = appendContextPath;
|
|
|
|
| 387 |
var escape = {
|
| 388 |
'&': '&',
|
| 389 |
'<': '<',
|
| 507 |
var _Object$defineProperty = __webpack_require__(7)['default'];
|
| 508 |
|
| 509 |
exports.__esModule = true;
|
|
|
|
| 510 |
var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];
|
| 511 |
|
| 512 |
function Exception(message, node) {
|
| 1054 |
if (arguments.length != 2) {
|
| 1055 |
throw new _exception2['default']('#unless requires exactly one argument');
|
| 1056 |
}
|
| 1057 |
+
return instance.helpers['if'].call(this, conditional, {
|
| 1058 |
+
fn: options.inverse,
|
| 1059 |
+
inverse: options.fn,
|
| 1060 |
+
hash: options.hash
|
| 1061 |
+
});
|
| 1062 |
});
|
| 1063 |
};
|
| 1064 |
|
| 1101 |
'use strict';
|
| 1102 |
|
| 1103 |
exports.__esModule = true;
|
|
|
|
|
|
|
|
|
|
| 1104 |
|
| 1105 |
exports['default'] = function (instance) {
|
| 1106 |
+
instance.registerHelper('lookup', function (obj, field, options) {
|
| 1107 |
if (!obj) {
|
| 1108 |
+
// Note for 5.0: Change to "obj == null" in 5.0
|
| 1109 |
return obj;
|
| 1110 |
}
|
| 1111 |
+
return options.lookupProperty(obj, field);
|
|
|
|
|
|
|
|
|
|
| 1112 |
});
|
| 1113 |
};
|
| 1114 |
|
| 1115 |
+
module.exports = exports['default'];
|
| 1116 |
+
|
| 1117 |
/***/ }),
|
| 1118 |
/* 29 */
|
| 1119 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1246 |
|
| 1247 |
if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
|
| 1248 |
var method = logger.methodMap[level];
|
| 1249 |
+
// eslint-disable-next-line no-console
|
| 1250 |
if (!console[method]) {
|
|
|
|
| 1251 |
method = 'log';
|
| 1252 |
}
|
| 1253 |
|
| 1265 |
|
| 1266 |
/***/ }),
|
| 1267 |
/* 33 */
|
| 1268 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1269 |
+
|
| 1270 |
+
'use strict';
|
| 1271 |
+
|
| 1272 |
+
var _Object$create = __webpack_require__(34)['default'];
|
| 1273 |
+
|
| 1274 |
+
var _Object$keys = __webpack_require__(13)['default'];
|
| 1275 |
+
|
| 1276 |
+
var _interopRequireWildcard = __webpack_require__(3)['default'];
|
| 1277 |
+
|
| 1278 |
+
exports.__esModule = true;
|
| 1279 |
+
exports.createProtoAccessControl = createProtoAccessControl;
|
| 1280 |
+
exports.resultIsAllowed = resultIsAllowed;
|
| 1281 |
+
exports.resetLoggedProperties = resetLoggedProperties;
|
| 1282 |
+
|
| 1283 |
+
var _createNewLookupObject = __webpack_require__(36);
|
| 1284 |
+
|
| 1285 |
+
var _logger = __webpack_require__(32);
|
| 1286 |
+
|
| 1287 |
+
var logger = _interopRequireWildcard(_logger);
|
| 1288 |
+
|
| 1289 |
+
var loggedProperties = _Object$create(null);
|
| 1290 |
+
|
| 1291 |
+
function createProtoAccessControl(runtimeOptions) {
|
| 1292 |
+
var defaultMethodWhiteList = _Object$create(null);
|
| 1293 |
+
defaultMethodWhiteList['constructor'] = false;
|
| 1294 |
+
defaultMethodWhiteList['__defineGetter__'] = false;
|
| 1295 |
+
defaultMethodWhiteList['__defineSetter__'] = false;
|
| 1296 |
+
defaultMethodWhiteList['__lookupGetter__'] = false;
|
| 1297 |
+
|
| 1298 |
+
var defaultPropertyWhiteList = _Object$create(null);
|
| 1299 |
+
// eslint-disable-next-line no-proto
|
| 1300 |
+
defaultPropertyWhiteList['__proto__'] = false;
|
| 1301 |
+
|
| 1302 |
+
return {
|
| 1303 |
+
properties: {
|
| 1304 |
+
whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),
|
| 1305 |
+
defaultValue: runtimeOptions.allowProtoPropertiesByDefault
|
| 1306 |
+
},
|
| 1307 |
+
methods: {
|
| 1308 |
+
whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),
|
| 1309 |
+
defaultValue: runtimeOptions.allowProtoMethodsByDefault
|
| 1310 |
+
}
|
| 1311 |
+
};
|
| 1312 |
+
}
|
| 1313 |
+
|
| 1314 |
+
function resultIsAllowed(result, protoAccessControl, propertyName) {
|
| 1315 |
+
if (typeof result === 'function') {
|
| 1316 |
+
return checkWhiteList(protoAccessControl.methods, propertyName);
|
| 1317 |
+
} else {
|
| 1318 |
+
return checkWhiteList(protoAccessControl.properties, propertyName);
|
| 1319 |
+
}
|
| 1320 |
+
}
|
| 1321 |
+
|
| 1322 |
+
function checkWhiteList(protoAccessControlForType, propertyName) {
|
| 1323 |
+
if (protoAccessControlForType.whitelist[propertyName] !== undefined) {
|
| 1324 |
+
return protoAccessControlForType.whitelist[propertyName] === true;
|
| 1325 |
+
}
|
| 1326 |
+
if (protoAccessControlForType.defaultValue !== undefined) {
|
| 1327 |
+
return protoAccessControlForType.defaultValue;
|
| 1328 |
+
}
|
| 1329 |
+
logUnexpecedPropertyAccessOnce(propertyName);
|
| 1330 |
+
return false;
|
| 1331 |
+
}
|
| 1332 |
+
|
| 1333 |
+
function logUnexpecedPropertyAccessOnce(propertyName) {
|
| 1334 |
+
if (loggedProperties[propertyName] !== true) {
|
| 1335 |
+
loggedProperties[propertyName] = true;
|
| 1336 |
+
logger.log('error', 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\n' + 'You can add a runtime option to disable the check or this warning:\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');
|
| 1337 |
+
}
|
| 1338 |
+
}
|
| 1339 |
+
|
| 1340 |
+
function resetLoggedProperties() {
|
| 1341 |
+
_Object$keys(loggedProperties).forEach(function (propertyName) {
|
| 1342 |
+
delete loggedProperties[propertyName];
|
| 1343 |
+
});
|
| 1344 |
+
}
|
| 1345 |
+
|
| 1346 |
+
/***/ }),
|
| 1347 |
+
/* 34 */
|
| 1348 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1349 |
+
|
| 1350 |
+
module.exports = { "default": __webpack_require__(35), __esModule: true };
|
| 1351 |
+
|
| 1352 |
+
/***/ }),
|
| 1353 |
+
/* 35 */
|
| 1354 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1355 |
+
|
| 1356 |
+
var $ = __webpack_require__(9);
|
| 1357 |
+
module.exports = function create(P, D){
|
| 1358 |
+
return $.create(P, D);
|
| 1359 |
+
};
|
| 1360 |
+
|
| 1361 |
+
/***/ }),
|
| 1362 |
+
/* 36 */
|
| 1363 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1364 |
+
|
| 1365 |
+
'use strict';
|
| 1366 |
+
|
| 1367 |
+
var _Object$create = __webpack_require__(34)['default'];
|
| 1368 |
+
|
| 1369 |
+
exports.__esModule = true;
|
| 1370 |
+
exports.createNewLookupObject = createNewLookupObject;
|
| 1371 |
+
|
| 1372 |
+
var _utils = __webpack_require__(5);
|
| 1373 |
+
|
| 1374 |
+
/**
|
| 1375 |
+
* Create a new object with "null"-prototype to avoid truthy results on prototype properties.
|
| 1376 |
+
* The resulting object can be used with "object[property]" to check if a property exists
|
| 1377 |
+
* @param {...object} sources a varargs parameter of source objects that will be merged
|
| 1378 |
+
* @returns {object}
|
| 1379 |
+
*/
|
| 1380 |
+
|
| 1381 |
+
function createNewLookupObject() {
|
| 1382 |
+
for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
|
| 1383 |
+
sources[_key] = arguments[_key];
|
| 1384 |
+
}
|
| 1385 |
+
|
| 1386 |
+
return _utils.extend.apply(undefined, [_Object$create(null)].concat(sources));
|
| 1387 |
+
}
|
| 1388 |
+
|
| 1389 |
+
/***/ }),
|
| 1390 |
+
/* 37 */
|
| 1391 |
/***/ (function(module, exports) {
|
| 1392 |
|
| 1393 |
// Build out our basic SafeString type
|
| 1406 |
module.exports = exports['default'];
|
| 1407 |
|
| 1408 |
/***/ }),
|
| 1409 |
+
/* 38 */
|
| 1410 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1411 |
|
| 1412 |
'use strict';
|
| 1413 |
|
| 1414 |
+
var _Object$seal = __webpack_require__(39)['default'];
|
| 1415 |
+
|
| 1416 |
+
var _Object$keys = __webpack_require__(13)['default'];
|
| 1417 |
|
| 1418 |
var _interopRequireWildcard = __webpack_require__(3)['default'];
|
| 1419 |
|
| 1439 |
|
| 1440 |
var _helpers = __webpack_require__(10);
|
| 1441 |
|
| 1442 |
+
var _internalWrapHelper = __webpack_require__(43);
|
| 1443 |
+
|
| 1444 |
+
var _internalProtoAccess = __webpack_require__(33);
|
| 1445 |
+
|
| 1446 |
function checkRevision(compilerInfo) {
|
| 1447 |
var compilerRevision = compilerInfo && compilerInfo[0] || 1,
|
| 1448 |
currentRevision = _base.COMPILER_REVISION;
|
| 1462 |
}
|
| 1463 |
|
| 1464 |
function template(templateSpec, env) {
|
|
|
|
| 1465 |
/* istanbul ignore next */
|
| 1466 |
if (!env) {
|
| 1467 |
throw new _exception2['default']('No environment passed to template');
|
| 1488 |
}
|
| 1489 |
partial = env.VM.resolvePartial.call(this, partial, context, options);
|
| 1490 |
|
| 1491 |
+
var extendedOptions = Utils.extend({}, options, {
|
| 1492 |
+
hooks: this.hooks,
|
| 1493 |
+
protoAccessControl: this.protoAccessControl
|
| 1494 |
+
});
|
| 1495 |
|
| 1496 |
+
var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);
|
| 1497 |
|
| 1498 |
if (result == null && env.compile) {
|
| 1499 |
options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
|
| 1500 |
+
result = options.partials[options.name](context, extendedOptions);
|
| 1501 |
}
|
| 1502 |
if (result != null) {
|
| 1503 |
if (options.indent) {
|
| 1521 |
var container = {
|
| 1522 |
strict: function strict(obj, name, loc) {
|
| 1523 |
if (!obj || !(name in obj)) {
|
| 1524 |
+
throw new _exception2['default']('"' + name + '" not defined in ' + obj, {
|
| 1525 |
+
loc: loc
|
| 1526 |
+
});
|
| 1527 |
}
|
| 1528 |
return obj[name];
|
| 1529 |
},
|
| 1530 |
+
lookupProperty: function lookupProperty(parent, propertyName) {
|
| 1531 |
+
var result = parent[propertyName];
|
| 1532 |
+
if (result == null) {
|
| 1533 |
+
return result;
|
| 1534 |
+
}
|
| 1535 |
+
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
| 1536 |
+
return result;
|
| 1537 |
+
}
|
| 1538 |
+
|
| 1539 |
+
if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {
|
| 1540 |
+
return result;
|
| 1541 |
+
}
|
| 1542 |
+
return undefined;
|
| 1543 |
+
},
|
| 1544 |
lookup: function lookup(depths, name) {
|
| 1545 |
var len = depths.length;
|
| 1546 |
for (var i = 0; i < len; i++) {
|
| 1547 |
+
var result = depths[i] && container.lookupProperty(depths[i], name);
|
| 1548 |
+
if (result != null) {
|
| 1549 |
return depths[i][name];
|
| 1550 |
}
|
| 1551 |
}
|
| 1581 |
}
|
| 1582 |
return value;
|
| 1583 |
},
|
| 1584 |
+
mergeIfNeeded: function mergeIfNeeded(param, common) {
|
| 1585 |
+
var obj = param || common;
|
| 1586 |
+
|
| 1587 |
+
if (param && common && param !== common) {
|
| 1588 |
+
obj = Utils.extend({}, common, param);
|
| 1589 |
+
}
|
| 1590 |
+
|
| 1591 |
+
return obj;
|
| 1592 |
+
},
|
| 1593 |
// An empty object to use as replacement for null-contexts
|
| 1594 |
nullContext: _Object$seal({}),
|
| 1595 |
|
| 1619 |
function main(context /*, options*/) {
|
| 1620 |
return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);
|
| 1621 |
}
|
| 1622 |
+
|
| 1623 |
main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);
|
| 1624 |
return main(context, options);
|
| 1625 |
}
|
| 1626 |
+
|
| 1627 |
ret.isTop = true;
|
| 1628 |
|
| 1629 |
ret._setup = function (options) {
|
| 1630 |
if (!options.partial) {
|
| 1631 |
+
var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);
|
| 1632 |
+
wrapHelpersToPassLookupProperty(mergedHelpers, container);
|
| 1633 |
+
container.helpers = mergedHelpers;
|
| 1634 |
|
| 1635 |
if (templateSpec.usePartial) {
|
| 1636 |
+
// Use mergeIfNeeded here to prevent compiling global partials multiple times
|
| 1637 |
+
container.partials = container.mergeIfNeeded(options.partials, env.partials);
|
| 1638 |
}
|
| 1639 |
if (templateSpec.usePartial || templateSpec.useDecorators) {
|
| 1640 |
container.decorators = Utils.extend({}, env.decorators, options.decorators);
|
| 1641 |
}
|
| 1642 |
|
| 1643 |
container.hooks = {};
|
| 1644 |
+
container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);
|
| 1645 |
|
| 1646 |
var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;
|
| 1647 |
_helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);
|
| 1648 |
_helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);
|
| 1649 |
} else {
|
| 1650 |
+
container.protoAccessControl = options.protoAccessControl; // internal option
|
| 1651 |
container.helpers = options.helpers;
|
| 1652 |
container.partials = options.partials;
|
| 1653 |
container.decorators = options.decorators;
|
| 1768 |
return prog;
|
| 1769 |
}
|
| 1770 |
|
| 1771 |
+
function wrapHelpersToPassLookupProperty(mergedHelpers, container) {
|
| 1772 |
+
_Object$keys(mergedHelpers).forEach(function (helperName) {
|
| 1773 |
+
var helper = mergedHelpers[helperName];
|
| 1774 |
+
mergedHelpers[helperName] = passLookupPropertyOption(helper, container);
|
| 1775 |
+
});
|
| 1776 |
+
}
|
| 1777 |
+
|
| 1778 |
+
function passLookupPropertyOption(helper, container) {
|
| 1779 |
+
var lookupProperty = container.lookupProperty;
|
| 1780 |
+
return _internalWrapHelper.wrapHelper(helper, function (options) {
|
| 1781 |
+
return Utils.extend({ lookupProperty: lookupProperty }, options);
|
| 1782 |
+
});
|
| 1783 |
+
}
|
| 1784 |
+
|
| 1785 |
/***/ }),
|
| 1786 |
+
/* 39 */
|
| 1787 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1788 |
|
| 1789 |
+
module.exports = { "default": __webpack_require__(40), __esModule: true };
|
| 1790 |
|
| 1791 |
/***/ }),
|
| 1792 |
+
/* 40 */
|
| 1793 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1794 |
|
| 1795 |
+
__webpack_require__(41);
|
| 1796 |
module.exports = __webpack_require__(21).Object.seal;
|
| 1797 |
|
| 1798 |
/***/ }),
|
| 1799 |
+
/* 41 */
|
| 1800 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1801 |
|
| 1802 |
// 19.1.2.17 Object.seal(O)
|
| 1803 |
+
var isObject = __webpack_require__(42);
|
| 1804 |
|
| 1805 |
__webpack_require__(18)('seal', function($seal){
|
| 1806 |
return function seal(it){
|
| 1809 |
});
|
| 1810 |
|
| 1811 |
/***/ }),
|
| 1812 |
+
/* 42 */
|
| 1813 |
/***/ (function(module, exports) {
|
| 1814 |
|
| 1815 |
module.exports = function(it){
|
| 1817 |
};
|
| 1818 |
|
| 1819 |
/***/ }),
|
| 1820 |
+
/* 43 */
|
| 1821 |
/***/ (function(module, exports) {
|
| 1822 |
|
|
|
|
| 1823 |
'use strict';
|
| 1824 |
|
| 1825 |
+
exports.__esModule = true;
|
| 1826 |
+
exports.wrapHelper = wrapHelper;
|
| 1827 |
+
|
| 1828 |
+
function wrapHelper(helper, transformOptionsFn) {
|
| 1829 |
+
if (typeof helper !== 'function') {
|
| 1830 |
+
// This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639
|
| 1831 |
+
// We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.
|
| 1832 |
+
return helper;
|
| 1833 |
+
}
|
| 1834 |
+
var wrapper = function wrapper() /* dynamic arguments */{
|
| 1835 |
+
var options = arguments[arguments.length - 1];
|
| 1836 |
+
arguments[arguments.length - 1] = transformOptionsFn(options);
|
| 1837 |
+
return helper.apply(this, arguments);
|
| 1838 |
+
};
|
| 1839 |
+
return wrapper;
|
| 1840 |
+
}
|
| 1841 |
+
|
| 1842 |
+
/***/ }),
|
| 1843 |
+
/* 44 */
|
| 1844 |
+
/***/ (function(module, exports) {
|
| 1845 |
+
|
| 1846 |
+
/* WEBPACK VAR INJECTION */(function(global) {'use strict';
|
| 1847 |
+
|
| 1848 |
exports.__esModule = true;
|
| 1849 |
|
| 1850 |
exports['default'] = function (Handlebars) {
|
| 1864 |
/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
|
| 1865 |
|
| 1866 |
/***/ }),
|
| 1867 |
+
/* 45 */
|
| 1868 |
/***/ (function(module, exports) {
|
| 1869 |
|
| 1870 |
'use strict';
|
| 1899 |
module.exports = exports['default'];
|
| 1900 |
|
| 1901 |
/***/ }),
|
| 1902 |
+
/* 46 */
|
| 1903 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1904 |
|
| 1905 |
'use strict';
|
| 1912 |
exports.parseWithoutProcessing = parseWithoutProcessing;
|
| 1913 |
exports.parse = parse;
|
| 1914 |
|
| 1915 |
+
var _parser = __webpack_require__(47);
|
| 1916 |
|
| 1917 |
var _parser2 = _interopRequireDefault(_parser);
|
| 1918 |
|
| 1919 |
+
var _whitespaceControl = __webpack_require__(48);
|
| 1920 |
|
| 1921 |
var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl);
|
| 1922 |
|
| 1923 |
+
var _helpers = __webpack_require__(50);
|
| 1924 |
|
| 1925 |
var Helpers = _interopRequireWildcard(_helpers);
|
| 1926 |
|
| 1957 |
}
|
| 1958 |
|
| 1959 |
/***/ }),
|
| 1960 |
+
/* 47 */
|
| 1961 |
/***/ (function(module, exports) {
|
| 1962 |
|
| 1963 |
// File ignored in coverage tests via setting in .istanbul.yml
|
| 2698 |
module.exports = exports["default"];
|
| 2699 |
|
| 2700 |
/***/ }),
|
| 2701 |
+
/* 48 */
|
| 2702 |
/***/ (function(module, exports, __webpack_require__) {
|
| 2703 |
|
| 2704 |
'use strict';
|
| 2707 |
|
| 2708 |
exports.__esModule = true;
|
| 2709 |
|
| 2710 |
+
var _visitor = __webpack_require__(49);
|
| 2711 |
|
| 2712 |
var _visitor2 = _interopRequireDefault(_visitor);
|
| 2713 |
|
| 2922 |
module.exports = exports['default'];
|
| 2923 |
|
| 2924 |
/***/ }),
|
| 2925 |
+
/* 49 */
|
| 2926 |
/***/ (function(module, exports, __webpack_require__) {
|
| 2927 |
|
| 2928 |
'use strict';
|
| 3065 |
module.exports = exports['default'];
|
| 3066 |
|
| 3067 |
/***/ }),
|
| 3068 |
+
/* 50 */
|
| 3069 |
/***/ (function(module, exports, __webpack_require__) {
|
| 3070 |
|
| 3071 |
'use strict';
|
| 3296 |
}
|
| 3297 |
|
| 3298 |
/***/ }),
|
| 3299 |
+
/* 51 */
|
| 3300 |
/***/ (function(module, exports, __webpack_require__) {
|
| 3301 |
|
| 3302 |
/* eslint-disable new-cap */
|
| 3303 |
|
| 3304 |
'use strict';
|
| 3305 |
|
| 3306 |
+
var _Object$create = __webpack_require__(34)['default'];
|
| 3307 |
|
| 3308 |
var _interopRequireDefault = __webpack_require__(1)['default'];
|
| 3309 |
|
| 3318 |
|
| 3319 |
var _utils = __webpack_require__(5);
|
| 3320 |
|
| 3321 |
+
var _ast = __webpack_require__(45);
|
| 3322 |
|
| 3323 |
var _ast2 = _interopRequireDefault(_ast);
|
| 3324 |
|
| 3373 |
options.blockParams = options.blockParams || [];
|
| 3374 |
|
| 3375 |
options.knownHelpers = _utils.extend(_Object$create(null), {
|
| 3376 |
+
helperMissing: true,
|
| 3377 |
+
blockHelperMissing: true,
|
| 3378 |
+
each: true,
|
| 3379 |
'if': true,
|
| 3380 |
+
unless: true,
|
| 3381 |
'with': true,
|
| 3382 |
+
log: true,
|
| 3383 |
+
lookup: true
|
| 3384 |
}, options.knownHelpers);
|
| 3385 |
|
| 3386 |
return this.accept(program);
|
| 3647 |
|
| 3648 |
// HELPERS
|
| 3649 |
opcode: function opcode(name) {
|
| 3650 |
+
this.opcodes.push({
|
| 3651 |
+
opcode: name,
|
| 3652 |
+
args: slice.call(arguments, 1),
|
| 3653 |
+
loc: this.sourceNode[0].loc
|
| 3654 |
+
});
|
| 3655 |
},
|
| 3656 |
|
| 3657 |
addDepth: function addDepth(depth) {
|
| 3867 |
}
|
| 3868 |
|
| 3869 |
/***/ }),
|
| 3870 |
+
/* 52 */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3871 |
/***/ (function(module, exports, __webpack_require__) {
|
| 3872 |
|
| 3873 |
'use strict';
|
| 3886 |
|
| 3887 |
var _utils = __webpack_require__(5);
|
| 3888 |
|
| 3889 |
+
var _codeGen = __webpack_require__(53);
|
| 3890 |
|
| 3891 |
var _codeGen2 = _interopRequireDefault(_codeGen);
|
| 3892 |
|
|
|
|
|
|
|
| 3893 |
function Literal(value) {
|
| 3894 |
this.value = value;
|
| 3895 |
}
|
| 3899 |
JavaScriptCompiler.prototype = {
|
| 3900 |
// PUBLIC API: You can override these methods in a subclass to provide
|
| 3901 |
// alternative compiled forms for name lookup and buffering semantics
|
| 3902 |
+
nameLookup: function nameLookup(parent, name /*, type */) {
|
| 3903 |
+
return this.internalNameLookup(parent, name);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3904 |
},
|
| 3905 |
depthedLookup: function depthedLookup(name) {
|
| 3906 |
return [this.aliasable('container.lookup'), '(depths, "', name, '")'];
|
| 3936 |
return this.quotedString('');
|
| 3937 |
},
|
| 3938 |
// END PUBLIC API
|
| 3939 |
+
internalNameLookup: function internalNameLookup(parent, name) {
|
| 3940 |
+
this.lookupPropertyFunctionIsUsed = true;
|
| 3941 |
+
return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];
|
| 3942 |
+
},
|
| 3943 |
+
|
| 3944 |
+
lookupPropertyFunctionIsUsed: false,
|
| 3945 |
|
| 3946 |
compile: function compile(environment, options, context, asObject) {
|
| 3947 |
this.environment = environment;
|
| 4000 |
if (!this.decorators.isEmpty()) {
|
| 4001 |
this.useDecorators = true;
|
| 4002 |
|
| 4003 |
+
this.decorators.prepend(['var decorators = container.decorators, ', this.lookupPropertyFunctionVarDeclaration(), ';\n']);
|
| 4004 |
this.decorators.push('return fn;');
|
| 4005 |
|
| 4006 |
if (asObject) {
|
| 4113 |
}
|
| 4114 |
});
|
| 4115 |
|
| 4116 |
+
if (this.lookupPropertyFunctionIsUsed) {
|
| 4117 |
+
varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();
|
| 4118 |
+
}
|
| 4119 |
+
|
| 4120 |
var params = ['container', 'depth0', 'helpers', 'partials', 'data'];
|
| 4121 |
|
| 4122 |
if (this.useBlockParams || this.useDepths) {
|
| 4195 |
return this.source.merge();
|
| 4196 |
},
|
| 4197 |
|
| 4198 |
+
lookupPropertyFunctionVarDeclaration: function lookupPropertyFunctionVarDeclaration() {
|
| 4199 |
+
return '\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n '.trim();
|
| 4200 |
+
},
|
| 4201 |
+
|
| 4202 |
// [blockValue]
|
| 4203 |
//
|
| 4204 |
// On stack, before: hash, inverse, program, value
|
| 5001 |
}
|
| 5002 |
})();
|
| 5003 |
|
| 5004 |
+
/**
|
| 5005 |
+
* @deprecated May be removed in the next major version
|
| 5006 |
+
*/
|
| 5007 |
JavaScriptCompiler.isValidJavaScriptVariableName = function (name) {
|
| 5008 |
return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
|
| 5009 |
};
|
| 5031 |
module.exports = exports['default'];
|
| 5032 |
|
| 5033 |
/***/ }),
|
| 5034 |
+
/* 53 */
|
| 5035 |
/***/ (function(module, exports, __webpack_require__) {
|
| 5036 |
|
| 5037 |
/* global define */
|
js/handlebars/handlebars.min.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
/**!
|
| 2 |
|
| 3 |
@license
|
| 4 |
-
handlebars v4.
|
| 5 |
|
| 6 |
-
Copyright (C) 2011-
|
| 7 |
|
| 8 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 9 |
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -24,6 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
| 24 |
THE SOFTWARE.
|
| 25 |
|
| 26 |
*/
|
| 27 |
-
!function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?exports.Handlebars=b():a.Handlebars=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){"use strict";function d(){var a=r();return a.compile=function(b,c){return k.compile(b,c,a)},a.precompile=function(b,c){return k.precompile(b,c,a)},a.AST=i["default"],a.Compiler=k.Compiler,a.JavaScriptCompiler=m["default"],a.Parser=j.parser,a.parse=j.parse,a.parseWithoutProcessing=j.parseWithoutProcessing,a}var e=c(1)["default"];b.__esModule=!0;var f=c(2),g=e(f),h=c(40),i=e(h),j=c(41),k=c(46),l=c(49),m=e(l),n=c(44),o=e(n),p=c(39),q=e(p),r=g["default"].create,s=d();s.create=d,q["default"](s),s.Visitor=o["default"],s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){return a&&a.__esModule?a:{"default":a}},b.__esModule=!0},function(a,b,c){"use strict";function d(){var a=new h.HandlebarsEnvironment;return n.extend(a,h),a.SafeString=j["default"],a.Exception=l["default"],a.Utils=n,a.escapeExpression=n.escapeExpression,a.VM=p,a.template=function(b){return p.template(b,a)},a}var e=c(3)["default"],f=c(1)["default"];b.__esModule=!0;var g=c(4),h=e(g),i=c(33),j=f(i),k=c(6),l=f(k),m=c(5),n=e(m),o=c(34),p=e(o),q=c(39),r=f(q),s=d();s.create=d,r["default"](s),s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b},b.__esModule=!0},function(a,b,c){"use strict";function d(a,b,c){this.helpers=a||{},this.partials=b||{},this.decorators=c||{},i.registerDefaultHelpers(this),j.registerDefaultDecorators(this)}var e=c(1)["default"];b.__esModule=!0,b.HandlebarsEnvironment=d;var f=c(5),g=c(6),h=e(g),i=c(10),j=c(30),k=c(32),l=e(k),m="4.5.3";b.VERSION=m;var n=8;b.COMPILER_REVISION=n;var o=7;b.LAST_COMPATIBLE_COMPILER_REVISION=o;var p={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};b.REVISION_CHANGES=p;var q="[object Object]";d.prototype={constructor:d,logger:l["default"],log:l["default"].log,registerHelper:function(a,b){if(f.toString.call(a)===q){if(b)throw new h["default"]("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){if(f.toString.call(a)===q)f.extend(this.partials,a);else{if("undefined"==typeof b)throw new h["default"]('Attempting to register a partial called "'+a+'" as undefined');this.partials[a]=b}},unregisterPartial:function(a){delete this.partials[a]},registerDecorator:function(a,b){if(f.toString.call(a)===q){if(b)throw new h["default"]("Arg not supported with multiple decorators");f.extend(this.decorators,a)}else this.decorators[a]=b},unregisterDecorator:function(a){delete this.decorators[a]}};var r=l["default"].log;b.log=r,b.createFrame=f.createFrame,b.logger=l["default"]},function(a,b){"use strict";function c(a){return k[a]}function d(a){for(var b=1;b<arguments.length;b++)for(var c in arguments[b])Object.prototype.hasOwnProperty.call(arguments[b],c)&&(a[c]=arguments[b][c]);return a}function e(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1}function f(a){if("string"!=typeof a){if(a&&a.toHTML)return a.toHTML();if(null==a)return"";if(!a)return a+"";a=""+a}return m.test(a)?a.replace(l,c):a}function g(a){return!a&&0!==a||!(!p(a)||0!==a.length)}function h(a){var b=d({},a);return b._parent=a,b}function i(a,b){return a.path=b,a}function j(a,b){return(a?a+".":"")+b}b.__esModule=!0,b.extend=d,b.indexOf=e,b.escapeExpression=f,b.isEmpty=g,b.createFrame=h,b.blockParams=i,b.appendContextPath=j;var k={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},l=/[&<>"'`=]/g,m=/[&<>"'`=]/,n=Object.prototype.toString;b.toString=n;var o=function(a){return"function"==typeof a};o(/x/)&&(b.isFunction=o=function(a){return"function"==typeof a&&"[object Function]"===n.call(a)}),b.isFunction=o;var p=Array.isArray||function(a){return!(!a||"object"!=typeof a)&&"[object Array]"===n.call(a)};b.isArray=p},function(a,b,c){"use strict";function d(a,b){var c=b&&b.loc,g=void 0,h=void 0,i=void 0,j=void 0;c&&(g=c.start.line,h=c.end.line,i=c.start.column,j=c.end.column,a+=" - "+g+":"+i);for(var k=Error.prototype.constructor.call(this,a),l=0;l<f.length;l++)this[f[l]]=k[f[l]];Error.captureStackTrace&&Error.captureStackTrace(this,d);try{c&&(this.lineNumber=g,this.endLineNumber=h,e?(Object.defineProperty(this,"column",{value:i,enumerable:!0}),Object.defineProperty(this,"endColumn",{value:j,enumerable:!0})):(this.column=i,this.endColumn=j))}catch(m){}}var e=c(7)["default"];b.__esModule=!0;var f=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];d.prototype=new Error,b["default"]=d,a.exports=b["default"]},function(a,b,c){a.exports={"default":c(8),__esModule:!0}},function(a,b,c){var d=c(9);a.exports=function(a,b,c){return d.setDesc(a,b,c)}},function(a,b){var c=Object;a.exports={create:c.create,getProto:c.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:c.getOwnPropertyDescriptor,setDesc:c.defineProperty,setDescs:c.defineProperties,getKeys:c.keys,getNames:c.getOwnPropertyNames,getSymbols:c.getOwnPropertySymbols,each:[].forEach}},function(a,b,c){"use strict";function d(a){h["default"](a),j["default"](a),l["default"](a),n["default"](a),p["default"](a),r["default"](a),t["default"](a)}function e(a,b,c){a.helpers[b]&&(a.hooks[b]=a.helpers[b],c||delete a.helpers[b])}var f=c(1)["default"];b.__esModule=!0,b.registerDefaultHelpers=d,b.moveHelperToHooks=e;var g=c(11),h=f(g),i=c(12),j=f(i),k=c(25),l=f(k),m=c(26),n=f(m),o=c(27),p=f(o),q=c(28),r=f(q),s=c(29),t=f(s)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerHelper("blockHelperMissing",function(b,c){var e=c.inverse,f=c.fn;if(b===!0)return f(this);if(b===!1||null==b)return e(this);if(d.isArray(b))return b.length>0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):e(this);if(c.data&&c.ids){var g=d.createFrame(c.data);g.contextPath=d.appendContextPath(c.data.contextPath,c.name),c={data:g}}return f(b,c)})},a.exports=b["default"]},function(a,b,c){(function(d){"use strict";var e=c(13)["default"],f=c(1)["default"];b.__esModule=!0;var g=c(5),h=c(6),i=f(h);b["default"]=function(a){a.registerHelper("each",function(a,b){function c(b,c,d){l&&(l.key=b,l.index=c,l.first=0===c,l.last=!!d,m&&(l.contextPath=m+b)),k+=f(a[b],{data:l,blockParams:g.blockParams([a[b],b],[m+b,null])})}if(!b)throw new i["default"]("Must pass iterator to #each");var f=b.fn,h=b.inverse,j=0,k="",l=void 0,m=void 0;if(b.data&&b.ids&&(m=g.appendContextPath(b.data.contextPath,b.ids[0])+"."),g.isFunction(a)&&(a=a.call(this)),b.data&&(l=g.createFrame(b.data)),a&&"object"==typeof a)if(g.isArray(a))for(var n=a.length;j<n;j++)j in a&&c(j,j,j===a.length-1);else if(d.Symbol&&a[d.Symbol.iterator]){for(var o=[],p=a[d.Symbol.iterator](),q=p.next();!q.done;q=p.next())o.push(q.value);a=o;for(var n=a.length;j<n;j++)c(j,j,j===a.length-1)}else!function(){var b=void 0;e(a).forEach(function(a){void 0!==b&&c(b,j-1),b=a,j++}),void 0!==b&&c(b,j-1,!0)}();return 0===j&&(k=h(this)),k})},a.exports=b["default"]}).call(b,function(){return this}())},function(a,b,c){a.exports={"default":c(14),__esModule:!0}},function(a,b,c){c(15),a.exports=c(21).Object.keys},function(a,b,c){var d=c(16);c(18)("keys",function(a){return function(b){return a(d(b))}})},function(a,b,c){var d=c(17);a.exports=function(a){return Object(d(a))}},function(a,b){a.exports=function(a){if(void 0==a)throw TypeError("Can't call method on "+a);return a}},function(a,b,c){var d=c(19),e=c(21),f=c(24);a.exports=function(a,b){var c=(e.Object||{})[a]||Object[a],g={};g[a]=b(c),d(d.S+d.F*f(function(){c(1)}),"Object",g)}},function(a,b,c){var d=c(20),e=c(21),f=c(22),g="prototype",h=function(a,b,c){var i,j,k,l=a&h.F,m=a&h.G,n=a&h.S,o=a&h.P,p=a&h.B,q=a&h.W,r=m?e:e[b]||(e[b]={}),s=m?d:n?d[b]:(d[b]||{})[g];m&&(c=b);for(i in c)j=!l&&s&&i in s,j&&i in r||(k=j?s[i]:c[i],r[i]=m&&"function"!=typeof s[i]?c[i]:p&&j?f(k,d):q&&s[i]==k?function(a){var b=function(b){return this instanceof a?new a(b):a(b)};return b[g]=a[g],b}(k):o&&"function"==typeof k?f(Function.call,k):k,o&&((r[g]||(r[g]={}))[i]=k))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,a.exports=h},function(a,b){var c=a.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=c)},function(a,b){var c=a.exports={version:"1.2.6"};"number"==typeof __e&&(__e=c)},function(a,b,c){var d=c(23);a.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(a,b){a.exports=function(a){try{return!!a()}catch(b){return!0}}},function(a,b,c){"use strict";var d=c(1)["default"];b.__esModule=!0;var e=c(6),f=d(e);b["default"]=function(a){a.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new f["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(1)["default"];b.__esModule=!0;var e=c(5),f=c(6),g=d(f);b["default"]=function(a){a.registerHelper("if",function(a,b){if(2!=arguments.length)throw new g["default"]("#if requires exactly one argument");return e.isFunction(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||e.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){if(2!=arguments.length)throw new g["default"]("#unless requires exactly one argument");return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("log",function(){for(var b=[void 0],c=arguments[arguments.length-1],d=0;d<arguments.length-1;d++)b.push(arguments[d]);var e=1;null!=c.hash.level?e=c.hash.level:c.data&&null!=c.data.level&&(e=c.data.level),b[0]=e,a.log.apply(a,b)})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0;var c=/^(constructor|__defineGetter__|__defineSetter__|__lookupGetter__|__proto__)$/;b.dangerousPropertyRegex=c,b["default"]=function(a){a.registerHelper("lookup",function(a,b){if(!a)return a;if(!c.test(String(b))||Object.prototype.propertyIsEnumerable.call(a,b))return a[b]})}},function(a,b,c){"use strict";var d=c(1)["default"];b.__esModule=!0;var e=c(5),f=c(6),g=d(f);b["default"]=function(a){a.registerHelper("with",function(a,b){if(2!=arguments.length)throw new g["default"]("#with requires exactly one argument");e.isFunction(a)&&(a=a.call(this));var c=b.fn;if(e.isEmpty(a))return b.inverse(this);var d=b.data;return b.data&&b.ids&&(d=e.createFrame(b.data),d.contextPath=e.appendContextPath(b.data.contextPath,b.ids[0])),c(a,{data:d,blockParams:e.blockParams([a],[d&&d.contextPath])})})},a.exports=b["default"]},function(a,b,c){"use strict";function d(a){g["default"](a)}var e=c(1)["default"];b.__esModule=!0,b.registerDefaultDecorators=d;var f=c(31),g=e(f)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerDecorator("inline",function(a,b,c,e){var f=a;return b.partials||(b.partials={},f=function(e,f){var g=c.partials;c.partials=d.extend({},g,b.partials);var h=a(e,f);return c.partials=g,h}),b.partials[e.args[0]]=e.fn,f})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5),e={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(a){if("string"==typeof a){var b=d.indexOf(e.methodMap,a.toLowerCase());a=b>=0?b:parseInt(a,10)}return a},log:function(a){if(a=e.lookupLevel(a),"undefined"!=typeof console&&e.lookupLevel(e.level)<=a){var b=e.methodMap[a];console[b]||(b="log");for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;f<c;f++)d[f-1]=arguments[f];console[b].apply(console,d)}}};b["default"]=e,a.exports=b["default"]},function(a,b){"use strict";function c(a){this.string=a}b.__esModule=!0,c.prototype.toString=c.prototype.toHTML=function(){return""+this.string},b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=s.COMPILER_REVISION;if(!(b>=s.LAST_COMPATIBLE_COMPILER_REVISION&&b<=s.COMPILER_REVISION)){if(b<s.LAST_COMPATIBLE_COMPILER_REVISION){var d=s.REVISION_CHANGES[c],e=s.REVISION_CHANGES[b];throw new r["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new r["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){function c(c,d,e){e.hash&&(d=p.extend({},d,e.hash),e.ids&&(e.ids[0]=!0)),c=b.VM.resolvePartial.call(this,c,d,e);var f=p.extend({},e,{hooks:this.hooks}),g=b.VM.invokePartial.call(this,c,d,f);if(null==g&&b.compile&&(e.partials[e.name]=b.compile(c,a.compilerOptions,b),g=e.partials[e.name](d,f)),null!=g){if(e.indent){for(var h=g.split("\n"),i=0,j=h.length;i<j&&(h[i]||i+1!==j);i++)h[i]=e.indent+h[i];g=h.join("\n")}return g}throw new r["default"]("The partial "+e.name+" could not be compiled when running in runtime-only mode")}function d(b){function c(b){return""+a.main(g,b,g.helpers,g.partials,f,i,h)}var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],f=e.data;d._setup(e),!e.partial&&a.useData&&(f=j(b,f));var h=void 0,i=a.useBlockParams?[]:void 0;return a.useDepths&&(h=e.depths?b!=e.depths[0]?[b].concat(e.depths):e.depths:[b]),(c=k(a.main,c,g,e.depths||[],f,i))(b,e)}if(!b)throw new r["default"]("No environment passed to template");if(!a||!a.main)throw new r["default"]("Unknown template object: "+typeof a);a.main.decorator=a.main_d,b.VM.checkRevision(a.compiler);var e=a.compiler&&7===a.compiler[0],g={strict:function(a,b,c){if(!(a&&b in a))throw new r["default"]('"'+b+'" not defined in '+a,{loc:c});return a[b]},lookup:function(a,b){for(var c=a.length,d=0;d<c;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:p.escapeExpression,invokePartial:c,fn:function(b){var c=a[b];return c.decorator=a[b+"_d"],c},programs:[],program:function(a,b,c,d,e){var g=this.programs[a],h=this.fn(a);return b||e||d||c?g=f(this,a,h,b,c,d,e):g||(g=this.programs[a]=f(this,a,h)),g},data:function(a,b){for(;a&&b--;)a=a._parent;return a},nullContext:l({}),noop:b.VM.noop,compilerInfo:a.compiler};return d.isTop=!0,d._setup=function(c){if(c.partial)g.helpers=c.helpers,g.partials=c.partials,g.decorators=c.decorators,g.hooks=c.hooks;else{g.helpers=p.extend({},b.helpers,c.helpers),a.usePartial&&(g.partials=p.extend({},b.partials,c.partials)),(a.usePartial||a.useDecorators)&&(g.decorators=p.extend({},b.decorators,c.decorators)),g.hooks={};var d=c.allowCallsToHelperMissing||e;t.moveHelperToHooks(g,"helperMissing",d),t.moveHelperToHooks(g,"blockHelperMissing",d)}},d._child=function(b,c,d,e){if(a.useBlockParams&&!d)throw new r["default"]("must pass block params");if(a.useDepths&&!e)throw new r["default"]("must pass parent depths");return f(g,b,a[b],c,0,d,e)},d}function f(a,b,c,d,e,f,g){function h(b){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],h=g;return!g||b==g[0]||b===a.nullContext&&null===g[0]||(h=[b].concat(g)),c(a,b,a.helpers,a.partials,e.data||d,f&&[e.blockParams].concat(f),h)}return h=k(c,h,a,g,d,f),h.program=b,h.depth=g?g.length:0,h.blockParams=e||0,h}function g(a,b,c){return a?a.call||c.name||(c.name=a,a=c.partials[a]):a="@partial-block"===c.name?c.data["partial-block"]:c.partials[c.name],a}function h(a,b,c){var d=c.data&&c.data["partial-block"];c.partial=!0,c.ids&&(c.data.contextPath=c.ids[0]||c.data.contextPath);var e=void 0;if(c.fn&&c.fn!==i&&!function(){c.data=s.createFrame(c.data);var a=c.fn;e=c.data["partial-block"]=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return c.data=s.createFrame(c.data),c.data["partial-block"]=d,a(b,c)},a.partials&&(c.partials=p.extend({},c.partials,a.partials))}(),void 0===a&&e&&(a=e),void 0===a)throw new r["default"]("The partial "+c.name+" could not be found");if(a instanceof Function)return a(b,c)}function i(){return""}function j(a,b){return b&&"root"in b||(b=b?s.createFrame(b):{},b.root=a),b}function k(a,b,c,d,e,f){if(a.decorator){var g={};b=a.decorator(b,g,c,d&&d[0],e,f,d),p.extend(b,g)}return b}var l=c(35)["default"],m=c(3)["default"],n=c(1)["default"];b.__esModule=!0,b.checkRevision=d,b.template=e,b.wrapProgram=f,b.resolvePartial=g,b.invokePartial=h,b.noop=i;var o=c(5),p=m(o),q=c(6),r=n(q),s=c(4),t=c(10)},function(a,b,c){a.exports={"default":c(36),__esModule:!0}},function(a,b,c){c(37),a.exports=c(21).Object.seal},function(a,b,c){var d=c(38);c(18)("seal",function(a){return function(b){return a&&d(b)?a(b):b}})},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(a,b){(function(c){"use strict";b.__esModule=!0,b["default"]=function(a){var b="undefined"!=typeof c?c:window,d=b.Handlebars;a.noConflict=function(){return b.Handlebars===a&&(b.Handlebars=d),a}},a.exports=b["default"]}).call(b,function(){return this}())},function(a,b){"use strict";b.__esModule=!0;var c={helpers:{helperExpression:function(a){return"SubExpression"===a.type||("MustacheStatement"===a.type||"BlockStatement"===a.type)&&!!(a.params&&a.params.length||a.hash)},scopedId:function(a){return/^\.|this\b/.test(a.original)},simpleId:function(a){return 1===a.parts.length&&!c.helpers.scopedId(a)&&!a.depth}}};b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b){if("Program"===a.type)return a;i["default"].yy=o,o.locInfo=function(a){return new o.SourceLocation(b&&b.srcName,a)};var c=i["default"].parse(a);return c}function e(a,b){var c=d(a,b),e=new k["default"](b);return e.accept(c)}var f=c(1)["default"],g=c(3)["default"];b.__esModule=!0,b.parseWithoutProcessing=d,b.parse=e;var h=c(42),i=f(h),j=c(43),k=f(j),l=c(45),m=g(l),n=c(5);b.parser=i["default"];var o={};n.extend(o,m)},function(a,b){"use strict";b.__esModule=!0;var c=function(){function a(){this.yy={}}var b={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(a,b,c,d,e,f,g){var h=f.length-1;switch(e){case 1:return f[h-1];case 2:this.$=d.prepareProgram(f[h]);break;case 3:this.$=f[h];break;case 4:this.$=f[h];break;case 5:this.$=f[h];break;case 6:this.$=f[h];break;case 7:this.$=f[h];break;case 8:this.$=f[h];break;case 9:this.$={type:"CommentStatement",value:d.stripComment(f[h]),strip:d.stripFlags(f[h],f[h]),loc:d.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:f[h],value:f[h],loc:d.locInfo(this._$)};break;case 11:this.$=d.prepareRawBlock(f[h-2],f[h-1],f[h],this._$);break;case 12:this.$={path:f[h-3],params:f[h-2],hash:f[h-1]};break;case 13:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!1,this._$);break;case 14:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!0,this._$);break;case 15:this.$={open:f[h-5],path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 16:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 17:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 18:this.$={strip:d.stripFlags(f[h-1],f[h-1]),program:f[h]};break;case 19:var i=d.prepareBlock(f[h-2],f[h-1],f[h],f[h],!1,this._$),j=d.prepareProgram([i],f[h-1].loc);j.chained=!0,this.$={strip:f[h-2].strip,program:j,chain:!0};break;case 20:this.$=f[h];break;case 21:this.$={path:f[h-1],strip:d.stripFlags(f[h-2],f[h])};break;case 22:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 23:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 24:this.$={type:"PartialStatement",name:f[h-3],params:f[h-2],hash:f[h-1],indent:"",strip:d.stripFlags(f[h-4],f[h]),loc:d.locInfo(this._$)};break;case 25:this.$=d.preparePartialBlock(f[h-2],f[h-1],f[h],this._$);break;case 26:this.$={path:f[h-3],params:f[h-2],hash:f[h-1],strip:d.stripFlags(f[h-4],f[h])};break;case 27:this.$=f[h];break;case 28:this.$=f[h];break;case 29:this.$={type:"SubExpression",path:f[h-3],params:f[h-2],hash:f[h-1],loc:d.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:f[h],loc:d.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:d.id(f[h-2]),value:f[h],loc:d.locInfo(this._$)};break;case 32:this.$=d.id(f[h-1]);break;case 33:this.$=f[h];break;case 34:this.$=f[h];break;case 35:this.$={type:"StringLiteral",value:f[h],original:f[h],loc:d.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(f[h]),original:Number(f[h]),loc:d.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===f[h],original:"true"===f[h],loc:d.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:d.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:d.locInfo(this._$)};break;case 40:this.$=f[h];break;case 41:this.$=f[h];break;case 42:this.$=d.preparePath(!0,f[h],this._$);break;case 43:this.$=d.preparePath(!1,f[h],this._$);break;case 44:f[h-2].push({part:d.id(f[h]),original:f[h],separator:f[h-1]}),this.$=f[h-2];break;case 45:this.$=[{part:d.id(f[h]),original:f[h]}];break;case 46:this.$=[];break;case 47:f[h-1].push(f[h]);break;case 48:this.$=[];break;case 49:f[h-1].push(f[h]);break;case 50:this.$=[];break;case 51:f[h-1].push(f[h]);break;case 58:this.$=[];break;case 59:f[h-1].push(f[h]);break;case 64:this.$=[];break;case 65:f[h-1].push(f[h]);break;case 70:this.$=[];break;case 71:f[h-1].push(f[h]);break;case 78:this.$=[];break;case 79:f[h-1].push(f[h]);break;case 82:this.$=[];break;case 83:f[h-1].push(f[h]);break;case 86:this.$=[];break;case 87:f[h-1].push(f[h]);break;case 90:this.$=[];break;case 91:f[h-1].push(f[h]);break;case 94:this.$=[];break;case 95:f[h-1].push(f[h]);break;case 98:this.$=[f[h]];break;case 99:f[h-1].push(f[h]);break;case 100:this.$=[f[h]];break;case 101:f[h-1].push(f[h])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],
|
| 28 |
-
81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},parseError:function(a,b){throw new Error(a)},parse:function(a){function b(){var a;return a=c.lexer.lex()||1,"number"!=typeof a&&(a=c.symbols_[a]||a),a}var c=this,d=[0],e=[null],f=[],g=this.table,h="",i=0,j=0,k=0;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var l=this.lexer.yylloc;f.push(l);var m=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var n,o,p,q,r,s,t,u,v,w={};;){if(p=d[d.length-1],this.defaultActions[p]?q=this.defaultActions[p]:(null!==n&&"undefined"!=typeof n||(n=b()),q=g[p]&&g[p][n]),"undefined"==typeof q||!q.length||!q[0]){var x="";if(!k){v=[];for(s in g[p])this.terminals_[s]&&s>2&&v.push("'"+this.terminals_[s]+"'");x=this.lexer.showPosition?"Parse error on line "+(i+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+v.join(", ")+", got '"+(this.terminals_[n]||n)+"'":"Parse error on line "+(i+1)+": Unexpected "+(1==n?"end of input":"'"+(this.terminals_[n]||n)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[n]||n,line:this.lexer.yylineno,loc:l,expected:v})}}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+p+", token: "+n);switch(q[0]){case 1:d.push(n),e.push(this.lexer.yytext),f.push(this.lexer.yylloc),d.push(q[1]),n=null,o?(n=o,o=null):(j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,l=this.lexer.yylloc,k>0&&k--);break;case 2:if(t=this.productions_[q[1]][1],w.$=e[e.length-t],w._$={first_line:f[f.length-(t||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(t||1)].first_column,last_column:f[f.length-1].last_column},m&&(w._$.range=[f[f.length-(t||1)].range[0],f[f.length-1].range[1]]),r=this.performAction.call(w,h,j,i,this.yy,q[1],e,f),"undefined"!=typeof r)return r;t&&(d=d.slice(0,-1*t*2),e=e.slice(0,-1*t),f=f.slice(0,-1*t)),d.push(this.productions_[q[1]][0]),e.push(w.$),f.push(w._$),u=g[d[d.length-2]][d[d.length-1]],d.push(u);break;case 3:return!0}}return!0}},c=function(){var a={EOF:1,parseError:function(a,b){if(!this.yy.parser)throw new Error(a);this.yy.parser.parseError(a,b)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var b=a.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var b=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b-1),this.offset-=b;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[e[0],e[0]+this.yyleng-b]),this},more:function(){return this._more=!0,this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=new Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d,e;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),g=0;g<f.length&&(c=this._input.match(this.rules[f[g]]),!c||b&&!(c[0].length>b[0].length)||(b=c,d=g,this.options.flex));g++);return b?(e=b[0].match(/(?:\r\n?|\n).*/g),e&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-e[e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,f[d],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a?a:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return"undefined"!=typeof a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)}};return a.options={},a.performAction=function(a,b,c,d){function e(a,c){return b.yytext=b.yytext.substring(a,b.yyleng-c+a)}switch(c){case 0:if("\\\\"===b.yytext.slice(-2)?(e(0,1),this.begin("mu")):"\\"===b.yytext.slice(-1)?(e(0,1),this.begin("emu")):this.begin("mu"),b.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(e(5,9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(b.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return b.yytext=e(1,2).replace(/\\"/g,'"'),80;case 32:return b.yytext=e(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return b.yytext=b.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},a.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]+?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],a.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},a}();return b.lexer=c,a.prototype=b,b.Parser=a,new a}();b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=a}function e(a,b,c){void 0===b&&(b=a.length);var d=a[b-1],e=a[b-2];return d?"ContentStatement"===d.type?(e||!c?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(d.original):void 0:c}function f(a,b,c){void 0===b&&(b=-1);var d=a[b+1],e=a[b+2];return d?"ContentStatement"===d.type?(e||!c?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(d.original):void 0:c}function g(a,b,c){var d=a[null==b?0:b+1];if(d&&"ContentStatement"===d.type&&(c||!d.rightStripped)){var e=d.value;d.value=d.value.replace(c?/^\s+/:/^[ \t]*\r?\n?/,""),d.rightStripped=d.value!==e}}function h(a,b,c){var d=a[null==b?a.length-1:b-1];if(d&&"ContentStatement"===d.type&&(c||!d.leftStripped)){var e=d.value;return d.value=d.value.replace(c?/\s+$/:/[ \t]+$/,""),d.leftStripped=d.value!==e,d.leftStripped}}var i=c(1)["default"];b.__esModule=!0;var j=c(44),k=i(j);d.prototype=new k["default"],d.prototype.Program=function(a){var b=!this.options.ignoreStandalone,c=!this.isRootSeen;this.isRootSeen=!0;for(var d=a.body,i=0,j=d.length;i<j;i++){var k=d[i],l=this.accept(k);if(l){var m=e(d,i,c),n=f(d,i,c),o=l.openStandalone&&m,p=l.closeStandalone&&n,q=l.inlineStandalone&&m&&n;l.close&&g(d,i,!0),l.open&&h(d,i,!0),b&&q&&(g(d,i),h(d,i)&&"PartialStatement"===k.type&&(k.indent=/([ \t]+$)/.exec(d[i-1].original)[1])),b&&o&&(g((k.program||k.inverse).body),h(d,i)),b&&p&&(g(d,i),h((k.inverse||k.program).body))}}return a},d.prototype.BlockStatement=d.prototype.DecoratorBlock=d.prototype.PartialBlockStatement=function(a){this.accept(a.program),this.accept(a.inverse);var b=a.program||a.inverse,c=a.program&&a.inverse,d=c,i=c;if(c&&c.chained)for(d=c.body[0].program;i.chained;)i=i.body[i.body.length-1].program;var j={open:a.openStrip.open,close:a.closeStrip.close,openStandalone:f(b.body),closeStandalone:e((d||b).body)};if(a.openStrip.close&&g(b.body,null,!0),c){var k=a.inverseStrip;k.open&&h(b.body,null,!0),k.close&&g(d.body,null,!0),a.closeStrip.open&&h(i.body,null,!0),!this.options.ignoreStandalone&&e(b.body)&&f(d.body)&&(h(b.body),g(d.body))}else a.closeStrip.open&&h(b.body,null,!0);return j},d.prototype.Decorator=d.prototype.MustacheStatement=function(a){return a.strip},d.prototype.PartialStatement=d.prototype.CommentStatement=function(a){var b=a.strip||{};return{inlineStandalone:!0,open:b.open,close:b.close}},b["default"]=d,a.exports=b["default"]},function(a,b,c){"use strict";function d(){this.parents=[]}function e(a){this.acceptRequired(a,"path"),this.acceptArray(a.params),this.acceptKey(a,"hash")}function f(a){e.call(this,a),this.acceptKey(a,"program"),this.acceptKey(a,"inverse")}function g(a){this.acceptRequired(a,"name"),this.acceptArray(a.params),this.acceptKey(a,"hash")}var h=c(1)["default"];b.__esModule=!0;var i=c(6),j=h(i);d.prototype={constructor:d,mutating:!1,acceptKey:function(a,b){var c=this.accept(a[b]);if(this.mutating){if(c&&!d.prototype[c.type])throw new j["default"]('Unexpected node type "'+c.type+'" found when accepting '+b+" on "+a.type);a[b]=c}},acceptRequired:function(a,b){if(this.acceptKey(a,b),!a[b])throw new j["default"](a.type+" requires "+b)},acceptArray:function(a){for(var b=0,c=a.length;b<c;b++)this.acceptKey(a,b),a[b]||(a.splice(b,1),b--,c--)},accept:function(a){if(a){if(!this[a.type])throw new j["default"]("Unknown type: "+a.type,a);this.current&&this.parents.unshift(this.current),this.current=a;var b=this[a.type](a);return this.current=this.parents.shift(),!this.mutating||b?b:b!==!1?a:void 0}},Program:function(a){this.acceptArray(a.body)},MustacheStatement:e,Decorator:e,BlockStatement:f,DecoratorBlock:f,PartialStatement:g,PartialBlockStatement:function(a){g.call(this,a),this.acceptKey(a,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:e,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(a){this.acceptArray(a.pairs)},HashPair:function(a){this.acceptRequired(a,"value")}},b["default"]=d,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b){if(b=b.path?b.path.original:b,a.path.original!==b){var c={loc:a.path.loc};throw new q["default"](a.path.original+" doesn't match "+b,c)}}function e(a,b){this.source=a,this.start={line:b.first_line,column:b.first_column},this.end={line:b.last_line,column:b.last_column}}function f(a){return/^\[.*\]$/.test(a)?a.substring(1,a.length-1):a}function g(a,b){return{open:"~"===a.charAt(2),close:"~"===b.charAt(b.length-3)}}function h(a){return a.replace(/^\{\{~?!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function i(a,b,c){c=this.locInfo(c);for(var d=a?"@":"",e=[],f=0,g=0,h=b.length;g<h;g++){var i=b[g].part,j=b[g].original!==i;if(d+=(b[g].separator||"")+i,j||".."!==i&&"."!==i&&"this"!==i)e.push(i);else{if(e.length>0)throw new q["default"]("Invalid path: "+d,{loc:c});".."===i&&f++}}return{type:"PathExpression",data:a,depth:f,parts:e,original:d,loc:c}}function j(a,b,c,d,e,f){var g=d.charAt(3)||d.charAt(2),h="{"!==g&&"&"!==g,i=/\*/.test(d);return{type:i?"Decorator":"MustacheStatement",path:a,params:b,hash:c,escaped:h,strip:e,loc:this.locInfo(f)}}function k(a,b,c,e){d(a,c),e=this.locInfo(e);var f={type:"Program",body:b,strip:{},loc:e};return{type:"BlockStatement",path:a.path,params:a.params,hash:a.hash,program:f,openStrip:{},inverseStrip:{},closeStrip:{},loc:e}}function l(a,b,c,e,f,g){e&&e.path&&d(a,e);var h=/\*/.test(a.open);b.blockParams=a.blockParams;var i=void 0,j=void 0;if(c){if(h)throw new q["default"]("Unexpected inverse block on decorator",c);c.chain&&(c.program.body[0].closeStrip=e.strip),j=c.strip,i=c.program}return f&&(f=i,i=b,b=f),{type:h?"DecoratorBlock":"BlockStatement",path:a.path,params:a.params,hash:a.hash,program:b,inverse:i,openStrip:a.strip,inverseStrip:j,closeStrip:e&&e.strip,loc:this.locInfo(g)}}function m(a,b){if(!b&&a.length){var c=a[0].loc,d=a[a.length-1].loc;c&&d&&(b={source:c.source,start:{line:c.start.line,column:c.start.column},end:{line:d.end.line,column:d.end.column}})}return{type:"Program",body:a,strip:{},loc:b}}function n(a,b,c,e){return d(a,c),{type:"PartialBlockStatement",name:a.path,params:a.params,hash:a.hash,program:b,openStrip:a.strip,closeStrip:c&&c.strip,loc:this.locInfo(e)}}var o=c(1)["default"];b.__esModule=!0,b.SourceLocation=e,b.id=f,b.stripFlags=g,b.stripComment=h,b.preparePath=i,b.prepareMustache=j,b.prepareRawBlock=k,b.prepareBlock=l,b.prepareProgram=m,b.preparePartialBlock=n;var p=c(6),q=o(p)},function(a,b,c){"use strict";function d(){}function e(a,b,c){if(null==a||"string"!=typeof a&&"Program"!==a.type)throw new l["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var d=c.parse(a,b),e=(new c.Compiler).compile(d,b);return(new c.JavaScriptCompiler).compile(e,b)}function f(a,b,c){function d(){var d=c.parse(a,b),e=(new c.Compiler).compile(d,b),f=(new c.JavaScriptCompiler).compile(e,b,void 0,!0);return c.template(f)}function e(a,b){return f||(f=d()),f.call(this,a,b)}if(void 0===b&&(b={}),null==a||"string"!=typeof a&&"Program"!==a.type)throw new l["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+a);b=m.extend({},b),"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var f=void 0;return e._setup=function(a){return f||(f=d()),f._setup(a)},e._child=function(a,b,c,e){return f||(f=d()),f._child(a,b,c,e)},e}function g(a,b){if(a===b)return!0;if(m.isArray(a)&&m.isArray(b)&&a.length===b.length){for(var c=0;c<a.length;c++)if(!g(a[c],b[c]))return!1;return!0}}function h(a){if(!a.path.parts){var b=a.path;a.path={type:"PathExpression",data:!1,depth:0,parts:[b.original+""],original:b.original+"",loc:b.loc}}}var i=c(47)["default"],j=c(1)["default"];b.__esModule=!0,b.Compiler=d,b.precompile=e,b.compile=f;var k=c(6),l=j(k),m=c(5),n=c(40),o=j(n),p=[].slice;d.prototype={compiler:d,equals:function(a){var b=this.opcodes.length;if(a.opcodes.length!==b)return!1;for(var c=0;c<b;c++){var d=this.opcodes[c],e=a.opcodes[c];if(d.opcode!==e.opcode||!g(d.args,e.args))return!1}b=this.children.length;for(var c=0;c<b;c++)if(!this.children[c].equals(a.children[c]))return!1;return!0},guid:0,compile:function(a,b){return this.sourceNode=[],this.opcodes=[],this.children=[],this.options=b,this.stringParams=b.stringParams,this.trackIds=b.trackIds,b.blockParams=b.blockParams||[],b.knownHelpers=m.extend(i(null),{helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},b.knownHelpers),this.accept(a)},compileProgram:function(a){var b=new this.compiler,c=b.compile(a,this.options),d=this.guid++;return this.usePartial=this.usePartial||c.usePartial,this.children[d]=c,this.useDepths=this.useDepths||c.useDepths,d},accept:function(a){if(!this[a.type])throw new l["default"]("Unknown type: "+a.type,a);this.sourceNode.unshift(a);var b=this[a.type](a);return this.sourceNode.shift(),b},Program:function(a){this.options.blockParams.unshift(a.blockParams);for(var b=a.body,c=b.length,d=0;d<c;d++)this.accept(b[d]);return this.options.blockParams.shift(),this.isSimple=1===c,this.blockParams=a.blockParams?a.blockParams.length:0,this},BlockStatement:function(a){h(a);var b=a.program,c=a.inverse;b=b&&this.compileProgram(b),c=c&&this.compileProgram(c);var d=this.classifySexpr(a);"helper"===d?this.helperSexpr(a,b,c):"simple"===d?(this.simpleSexpr(a),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.opcode("emptyHash"),this.opcode("blockValue",a.path.original)):(this.ambiguousSexpr(a,b,c),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(a){var b=a.program&&this.compileProgram(a.program),c=this.setupFullMustacheParams(a,b,void 0),d=a.path;this.useDecorators=!0,this.opcode("registerDecorator",c.length,d.original)},PartialStatement:function(a){this.usePartial=!0;var b=a.program;b&&(b=this.compileProgram(a.program));var c=a.params;if(c.length>1)throw new l["default"]("Unsupported number of partial arguments: "+c.length,a);c.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):c.push({type:"PathExpression",parts:[],depth:0}));var d=a.name.original,e="SubExpression"===a.name.type;e&&this.accept(a.name),this.setupFullMustacheParams(a,b,void 0,!0);var f=a.indent||"";this.options.preventIndent&&f&&(this.opcode("appendContent",f),f=""),this.opcode("invokePartial",e,d,f),this.opcode("append")},PartialBlockStatement:function(a){this.PartialStatement(a)},MustacheStatement:function(a){this.SubExpression(a),a.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(a){this.DecoratorBlock(a)},ContentStatement:function(a){a.value&&this.opcode("appendContent",a.value)},CommentStatement:function(){},SubExpression:function(a){h(a);var b=this.classifySexpr(a);"simple"===b?this.simpleSexpr(a):"helper"===b?this.helperSexpr(a):this.ambiguousSexpr(a)},ambiguousSexpr:function(a,b,c){var d=a.path,e=d.parts[0],f=null!=b||null!=c;this.opcode("getContext",d.depth),this.opcode("pushProgram",b),this.opcode("pushProgram",c),d.strict=!0,this.accept(d),this.opcode("invokeAmbiguous",e,f)},simpleSexpr:function(a){var b=a.path;b.strict=!0,this.accept(b),this.opcode("resolvePossibleLambda")},helperSexpr:function(a,b,c){var d=this.setupFullMustacheParams(a,b,c),e=a.path,f=e.parts[0];if(this.options.knownHelpers[f])this.opcode("invokeKnownHelper",d.length,f);else{if(this.options.knownHelpersOnly)throw new l["default"]("You specified knownHelpersOnly, but used the unknown helper "+f,a);e.strict=!0,e.falsy=!0,this.accept(e),this.opcode("invokeHelper",d.length,e.original,o["default"].helpers.simpleId(e))}},PathExpression:function(a){this.addDepth(a.depth),this.opcode("getContext",a.depth);var b=a.parts[0],c=o["default"].helpers.scopedId(a),d=!a.depth&&!c&&this.blockParamIndex(b);d?this.opcode("lookupBlockParam",d,a.parts):b?a.data?(this.options.data=!0,this.opcode("lookupData",a.depth,a.parts,a.strict)):this.opcode("lookupOnContext",a.parts,a.falsy,a.strict,c):this.opcode("pushContext")},StringLiteral:function(a){this.opcode("pushString",a.value)},NumberLiteral:function(a){this.opcode("pushLiteral",a.value)},BooleanLiteral:function(a){this.opcode("pushLiteral",a.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(a){var b=a.pairs,c=0,d=b.length;for(this.opcode("pushHash");c<d;c++)this.pushParam(b[c].value);for(;c--;)this.opcode("assignToHash",b[c].key);this.opcode("popHash")},opcode:function(a){this.opcodes.push({opcode:a,args:p.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(a){a&&(this.useDepths=!0)},classifySexpr:function(a){var b=o["default"].helpers.simpleId(a.path),c=b&&!!this.blockParamIndex(a.path.parts[0]),d=!c&&o["default"].helpers.helperExpression(a),e=!c&&(d||b);if(e&&!d){var f=a.path.parts[0],g=this.options;g.knownHelpers[f]?d=!0:g.knownHelpersOnly&&(e=!1)}return d?"helper":e?"ambiguous":"simple"},pushParams:function(a){for(var b=0,c=a.length;b<c;b++)this.pushParam(a[b])},pushParam:function(a){var b=null!=a.value?a.value:a.original||"";if(this.stringParams)b.replace&&(b=b.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),a.depth&&this.addDepth(a.depth),this.opcode("getContext",a.depth||0),this.opcode("pushStringParam",b,a.type),"SubExpression"===a.type&&this.accept(a);else{if(this.trackIds){var c=void 0;if(!a.parts||o["default"].helpers.scopedId(a)||a.depth||(c=this.blockParamIndex(a.parts[0])),c){var d=a.parts.slice(1).join(".");this.opcode("pushId","BlockParam",c,d)}else b=a.original||b,b.replace&&(b=b.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",a.type,b)}this.accept(a)}},setupFullMustacheParams:function(a,b,c,d){var e=a.params;return this.pushParams(e),this.opcode("pushProgram",b),this.opcode("pushProgram",c),a.hash?this.accept(a.hash):this.opcode("emptyHash",d),e},blockParamIndex:function(a){for(var b=0,c=this.options.blockParams.length;b<c;b++){var d=this.options.blockParams[b],e=d&&m.indexOf(d,a);if(d&&e>=0)return[b,e]}}}},function(a,b,c){a.exports={"default":c(48),__esModule:!0}},function(a,b,c){var d=c(9);a.exports=function(a,b){return d.create(a,b)}},function(a,b,c){"use strict";function d(a){this.value=a}function e(){}function f(a,b,c,d){var e=b.popStack(),f=0,g=c.length;for(a&&g--;f<g;f++)e=b.nameLookup(e,c[f],d);return a?[b.aliasable("container.strict"),"(",e,", ",b.quotedString(c[f]),", ",JSON.stringify(b.source.currentLocation)," )"]:e}var g=c(13)["default"],h=c(1)["default"];b.__esModule=!0;var i=c(4),j=c(6),k=h(j),l=c(5),m=c(50),n=h(m),o=c(28);e.prototype={nameLookup:function(a,b){function c(){return e.isValidJavaScriptVariableName(b)?[a,".",b]:[a,"[",JSON.stringify(b),"]"]}if(o.dangerousPropertyRegex.test(b)){var d=[this.aliasable("container.propertyIsEnumerable"),".call(",a,",",JSON.stringify(b),")"];return["(",d,"?",c()," : undefined)"]}return c()},depthedLookup:function(a){return[this.aliasable("container.lookup"),'(depths, "',a,'")']},compilerInfo:function(){var a=i.COMPILER_REVISION,b=i.REVISION_CHANGES[a];return[a,b]},appendToBuffer:function(a,b,c){return l.isArray(a)||(a=[a]),a=this.source.wrap(a,b),this.environment.isSimple?["return ",a,";"]:c?["buffer += ",a,";"]:(a.appendToBuffer=!0,a)},initializeBuffer:function(){return this.quotedString("")},compile:function(a,b,c,d){this.environment=a,this.options=b,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!d,this.name=this.environment.name,this.isChild=!!c,this.context=c||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(a,b),this.useDepths=this.useDepths||a.useDepths||a.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||a.useBlockParams;var e=a.opcodes,f=void 0,g=void 0,h=void 0,i=void 0;for(h=0,i=e.length;h<i;h++)f=e[h],this.source.currentLocation=f.loc,g=g||f.loc,this[f.opcode].apply(this,f.args);if(this.source.currentLocation=g,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new k["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),d?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var j=this.createFunctionContext(d);if(this.isChild)return j;var l={compiler:this.compilerInfo(),main:j};this.decorators&&(l.main_d=this.decorators,l.useDecorators=!0);var m=this.context,n=m.programs,o=m.decorators;for(h=0,i=n.length;h<i;h++)n[h]&&(l[h]=n[h],o[h]&&(l[h+"_d"]=o[h],l.useDecorators=!0));return this.environment.usePartial&&(l.usePartial=!0),this.options.data&&(l.useData=!0),this.useDepths&&(l.useDepths=!0),this.useBlockParams&&(l.useBlockParams=!0),this.options.compat&&(l.compat=!0),d?l.compilerOptions=this.options:(l.compiler=JSON.stringify(l.compiler),this.source.currentLocation={start:{line:1,column:0}},l=this.objectLiteral(l),b.srcName?(l=l.toStringWithSourceMap({file:b.destName}),l.map=l.map&&l.map.toString()):l=l.toString()),l},preamble:function(){this.lastContext=0,this.source=new n["default"](this.options.srcName),this.decorators=new n["default"](this.options.srcName)},createFunctionContext:function(a){var b=this,c="",d=this.stackVars.concat(this.registers.list);d.length>0&&(c+=", "+d.join(", "));var e=0;g(this.aliases).forEach(function(a){var d=b.aliases[a];d.children&&d.referenceCount>1&&(c+=", alias"+ ++e+"="+a,d.children[0]="alias"+e)});var f=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&f.push("blockParams"),this.useDepths&&f.push("depths");var h=this.mergeSource(c);return a?(f.push(h),Function.apply(this,f)):this.source.wrap(["function(",f.join(","),") {\n ",h,"}"])},mergeSource:function(a){var b=this.environment.isSimple,c=!this.forceBuffer,d=void 0,e=void 0,f=void 0,g=void 0;return this.source.each(function(a){a.appendToBuffer?(f?a.prepend(" + "):f=a,g=a):(f&&(e?f.prepend("buffer += "):d=!0,g.add(";"),f=g=void 0),e=!0,b||(c=!1))}),c?f?(f.prepend("return "),g.add(";")):e||this.source.push('return "";'):(a+=", buffer = "+(d?"":this.initializeBuffer()),
|
| 29 |
-
f?(f.prepend("return buffer + "),g.add(";")):this.source.push("return buffer;")),a&&this.source.prepend("var "+a.substring(2)+(d?"":";\n")),this.source.merge()},blockValue:function(a){var b=this.aliasable("container.hooks.blockHelperMissing"),c=[this.contextName(0)];this.setupHelperArgs(a,0,c);var d=this.popStack();c.splice(1,0,d),this.push(this.source.functionCall(b,"call",c))},ambiguousBlockValue:function(){var a=this.aliasable("container.hooks.blockHelperMissing"),b=[this.contextName(0)];this.setupHelperArgs("",0,b,!0),this.flushInline();var c=this.topStack();b.splice(1,0,c),this.pushSource(["if (!",this.lastHelper,") { ",c," = ",this.source.functionCall(a,"call",b),"}"])},appendContent:function(a){this.pendingContent?a=this.pendingContent+a:this.pendingLocation=this.source.currentLocation,this.pendingContent=a},append:function(){if(this.isInline())this.replaceStack(function(a){return[" != null ? ",a,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var a=this.popStack();this.pushSource(["if (",a," != null) { ",this.appendToBuffer(a,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(a){this.lastContext=a},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(a,b,c,d){var e=0;d||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(a[e++])),this.resolvePath("context",a,e,b,c)},lookupBlockParam:function(a,b){this.useBlockParams=!0,this.push(["blockParams[",a[0],"][",a[1],"]"]),this.resolvePath("context",b,1)},lookupData:function(a,b,c){a?this.pushStackLiteral("container.data(data, "+a+")"):this.pushStackLiteral("data"),this.resolvePath("data",b,0,!0,c)},resolvePath:function(a,b,c,d,e){var g=this;if(this.options.strict||this.options.assumeObjects)return void this.push(f(this.options.strict&&e,this,b,a));for(var h=b.length;c<h;c++)this.replaceStack(function(e){var f=g.nameLookup(e,b[c],a);return d?[" && ",f]:[" != null ? ",f," : ",e]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(a,b){this.pushContext(),this.pushString(b),"SubExpression"!==b&&("string"==typeof a?this.pushString(a):this.pushStackLiteral(a))},emptyHash:function(a){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(a?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:{},types:[],contexts:[],ids:[]}},popHash:function(){var a=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(a.ids)),this.stringParams&&(this.push(this.objectLiteral(a.contexts)),this.push(this.objectLiteral(a.types))),this.push(this.objectLiteral(a.values))},pushString:function(a){this.pushStackLiteral(this.quotedString(a))},pushLiteral:function(a){this.pushStackLiteral(a)},pushProgram:function(a){null!=a?this.pushStackLiteral(this.programExpression(a)):this.pushStackLiteral(null)},registerDecorator:function(a,b){var c=this.nameLookup("decorators",b,"decorator"),d=this.setupHelperArgs(b,a);this.decorators.push(["fn = ",this.decorators.functionCall(c,"",["fn","props","container",d])," || fn;"])},invokeHelper:function(a,b,c){var d=this.popStack(),e=this.setupHelper(a,b),f=[];c&&f.push(e.name),f.push(d),this.options.strict||f.push(this.aliasable("container.hooks.helperMissing"));var g=["(",this.itemsSeparatedBy(f,"||"),")"],h=this.source.functionCall(g,"call",e.callParams);this.push(h)},itemsSeparatedBy:function(a,b){var c=[];c.push(a[0]);for(var d=1;d<a.length;d++)c.push(b,a[d]);return c},invokeKnownHelper:function(a,b){var c=this.setupHelper(a,b);this.push(this.source.functionCall(c.name,"call",c.callParams))},invokeAmbiguous:function(a,b){this.useRegister("helper");var c=this.popStack();this.emptyHash();var d=this.setupHelper(0,a,b),e=this.lastHelper=this.nameLookup("helpers",a,"helper"),f=["(","(helper = ",e," || ",c,")"];this.options.strict||(f[0]="(helper = ",f.push(" != null ? helper : ",this.aliasable("container.hooks.helperMissing"))),this.push(["(",f,d.paramsInit?["),(",d.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",d.callParams)," : helper))"])},invokePartial:function(a,b,c){var d=[],e=this.setupParams(b,1,d);a&&(b=this.popStack(),delete e.name),c&&(e.indent=JSON.stringify(c)),e.helpers="helpers",e.partials="partials",e.decorators="container.decorators",a?d.unshift(b):d.unshift(this.nameLookup("partials",b,"partial")),this.options.compat&&(e.depths="depths"),e=this.objectLiteral(e),d.push(e),this.push(this.source.functionCall("container.invokePartial","",d))},assignToHash:function(a){var b=this.popStack(),c=void 0,d=void 0,e=void 0;this.trackIds&&(e=this.popStack()),this.stringParams&&(d=this.popStack(),c=this.popStack());var f=this.hash;c&&(f.contexts[a]=c),d&&(f.types[a]=d),e&&(f.ids[a]=e),f.values[a]=b},pushId:function(a,b,c){"BlockParam"===a?this.pushStackLiteral("blockParams["+b[0]+"].path["+b[1]+"]"+(c?" + "+JSON.stringify("."+c):"")):"PathExpression"===a?this.pushString(b):"SubExpression"===a?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:e,compileChildren:function(a,b){for(var c=a.children,d=void 0,e=void 0,f=0,g=c.length;f<g;f++){d=c[f],e=new this.compiler;var h=this.matchExistingProgram(d);if(null==h){this.context.programs.push("");var i=this.context.programs.length;d.index=i,d.name="program"+i,this.context.programs[i]=e.compile(d,b,this.context,!this.precompile),this.context.decorators[i]=e.decorators,this.context.environments[i]=d,this.useDepths=this.useDepths||e.useDepths,this.useBlockParams=this.useBlockParams||e.useBlockParams,d.useDepths=this.useDepths,d.useBlockParams=this.useBlockParams}else d.index=h.index,d.name="program"+h.index,this.useDepths=this.useDepths||h.useDepths,this.useBlockParams=this.useBlockParams||h.useBlockParams}},matchExistingProgram:function(a){for(var b=0,c=this.context.environments.length;b<c;b++){var d=this.context.environments[b];if(d&&d.equals(a))return d}},programExpression:function(a){var b=this.environment.children[a],c=[b.index,"data",b.blockParams];return(this.useBlockParams||this.useDepths)&&c.push("blockParams"),this.useDepths&&c.push("depths"),"container.program("+c.join(", ")+")"},useRegister:function(a){this.registers[a]||(this.registers[a]=!0,this.registers.list.push(a))},push:function(a){return a instanceof d||(a=this.source.wrap(a)),this.inlineStack.push(a),a},pushStackLiteral:function(a){this.push(new d(a))},pushSource:function(a){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),a&&this.source.push(a)},replaceStack:function(a){var b=["("],c=void 0,e=void 0,f=void 0;if(!this.isInline())throw new k["default"]("replaceStack on non-inline");var g=this.popStack(!0);if(g instanceof d)c=[g.value],b=["(",c],f=!0;else{e=!0;var h=this.incrStack();b=["((",this.push(h)," = ",g,")"],c=this.topStack()}var i=a.call(this,c);f||this.popStack(),e&&this.stackSlot--,this.push(b.concat(i,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var a=this.inlineStack;this.inlineStack=[];for(var b=0,c=a.length;b<c;b++){var e=a[b];if(e instanceof d)this.compileStack.push(e);else{var f=this.incrStack();this.pushSource([f," = ",e,";"]),this.compileStack.push(f)}}},isInline:function(){return this.inlineStack.length},popStack:function(a){var b=this.isInline(),c=(b?this.inlineStack:this.compileStack).pop();if(!a&&c instanceof d)return c.value;if(!b){if(!this.stackSlot)throw new k["default"]("Invalid stack pop");this.stackSlot--}return c},topStack:function(){var a=this.isInline()?this.inlineStack:this.compileStack,b=a[a.length-1];return b instanceof d?b.value:b},contextName:function(a){return this.useDepths&&a?"depths["+a+"]":"depth"+a},quotedString:function(a){return this.source.quotedString(a)},objectLiteral:function(a){return this.source.objectLiteral(a)},aliasable:function(a){var b=this.aliases[a];return b?(b.referenceCount++,b):(b=this.aliases[a]=this.source.wrap(a),b.aliasable=!0,b.referenceCount=1,b)},setupHelper:function(a,b,c){var d=[],e=this.setupHelperArgs(b,a,d,c),f=this.nameLookup("helpers",b,"helper"),g=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : (container.nullContext || {})");return{params:d,paramsInit:e,name:f,callParams:[g].concat(d)}},setupParams:function(a,b,c){var d={},e=[],f=[],g=[],h=!c,i=void 0;h&&(c=[]),d.name=this.quotedString(a),d.hash=this.popStack(),this.trackIds&&(d.hashIds=this.popStack()),this.stringParams&&(d.hashTypes=this.popStack(),d.hashContexts=this.popStack());var j=this.popStack(),k=this.popStack();(k||j)&&(d.fn=k||"container.noop",d.inverse=j||"container.noop");for(var l=b;l--;)i=this.popStack(),c[l]=i,this.trackIds&&(g[l]=this.popStack()),this.stringParams&&(f[l]=this.popStack(),e[l]=this.popStack());return h&&(d.args=this.source.generateArray(c)),this.trackIds&&(d.ids=this.source.generateArray(g)),this.stringParams&&(d.types=this.source.generateArray(f),d.contexts=this.source.generateArray(e)),this.options.data&&(d.data="data"),this.useBlockParams&&(d.blockParams="blockParams"),d},setupHelperArgs:function(a,b,c,d){var e=this.setupParams(a,b,c);return e.loc=JSON.stringify(this.source.currentLocation),e=this.objectLiteral(e),d?(this.useRegister("options"),c.push("options"),["options=",e]):c?(c.push(e),""):e}},function(){for(var a="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),b=e.RESERVED_WORDS={},c=0,d=a.length;c<d;c++)b[a[c]]=!0}(),e.isValidJavaScriptVariableName=function(a){return!e.RESERVED_WORDS[a]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(a)},b["default"]=e,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b,c){if(g.isArray(a)){for(var d=[],e=0,f=a.length;e<f;e++)d.push(b.wrap(a[e],c));return d}return"boolean"==typeof a||"number"==typeof a?a+"":a}function e(a){this.srcFile=a,this.source=[]}var f=c(13)["default"];b.__esModule=!0;var g=c(5),h=void 0;try{}catch(i){}h||(h=function(a,b,c,d){this.src="",d&&this.add(d)},h.prototype={add:function(a){g.isArray(a)&&(a=a.join("")),this.src+=a},prepend:function(a){g.isArray(a)&&(a=a.join("")),this.src=a+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),e.prototype={isEmpty:function(){return!this.source.length},prepend:function(a,b){this.source.unshift(this.wrap(a,b))},push:function(a,b){this.source.push(this.wrap(a,b))},merge:function(){var a=this.empty();return this.each(function(b){a.add([" ",b,"\n"])}),a},each:function(a){for(var b=0,c=this.source.length;b<c;b++)a(this.source[b])},empty:function(){var a=this.currentLocation||{start:{}};return new h(a.start.line,a.start.column,this.srcFile)},wrap:function(a){var b=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return a instanceof h?a:(a=d(a,this,b),new h(b.start.line,b.start.column,this.srcFile,a))},functionCall:function(a,b,c){return c=this.generateList(c),this.wrap([a,b?"."+b+"(":"(",c,")"])},quotedString:function(a){return'"'+(a+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(a){var b=this,c=[];f(a).forEach(function(e){var f=d(a[e],b);"undefined"!==f&&c.push([b.quotedString(e),":",f])});var e=this.generateList(c);return e.prepend("{"),e.add("}"),e},generateList:function(a){for(var b=this.empty(),c=0,e=a.length;c<e;c++)c&&b.add(","),b.add(d(a[c],this));return b},generateArray:function(a){var b=this.generateList(a);return b.prepend("["),b.add("]"),b}},b["default"]=e,a.exports=b["default"]}])});
|
| 1 |
/**!
|
| 2 |
|
| 3 |
@license
|
| 4 |
+
handlebars v4.7.3
|
| 5 |
|
| 6 |
+
Copyright (C) 2011-2019 by Yehuda Katz
|
| 7 |
|
| 8 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 9 |
of this software and associated documentation files (the "Software"), to deal
|
| 24 |
THE SOFTWARE.
|
| 25 |
|
| 26 |
*/
|
| 27 |
+
!function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?exports.Handlebars=b():a.Handlebars=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){"use strict";function d(){var a=r();return a.compile=function(b,c){return k.compile(b,c,a)},a.precompile=function(b,c){return k.precompile(b,c,a)},a.AST=i["default"],a.Compiler=k.Compiler,a.JavaScriptCompiler=m["default"],a.Parser=j.parser,a.parse=j.parse,a.parseWithoutProcessing=j.parseWithoutProcessing,a}var e=c(1)["default"];b.__esModule=!0;var f=c(2),g=e(f),h=c(45),i=e(h),j=c(46),k=c(51),l=c(52),m=e(l),n=c(49),o=e(n),p=c(44),q=e(p),r=g["default"].create,s=d();s.create=d,q["default"](s),s.Visitor=o["default"],s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){return a&&a.__esModule?a:{"default":a}},b.__esModule=!0},function(a,b,c){"use strict";function d(){var a=new h.HandlebarsEnvironment;return n.extend(a,h),a.SafeString=j["default"],a.Exception=l["default"],a.Utils=n,a.escapeExpression=n.escapeExpression,a.VM=p,a.template=function(b){return p.template(b,a)},a}var e=c(3)["default"],f=c(1)["default"];b.__esModule=!0;var g=c(4),h=e(g),i=c(37),j=f(i),k=c(6),l=f(k),m=c(5),n=e(m),o=c(38),p=e(o),q=c(44),r=f(q),s=d();s.create=d,r["default"](s),s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b},b.__esModule=!0},function(a,b,c){"use strict";function d(a,b,c){this.helpers=a||{},this.partials=b||{},this.decorators=c||{},i.registerDefaultHelpers(this),j.registerDefaultDecorators(this)}var e=c(1)["default"];b.__esModule=!0,b.HandlebarsEnvironment=d;var f=c(5),g=c(6),h=e(g),i=c(10),j=c(30),k=c(32),l=e(k),m=c(33),n="4.7.3";b.VERSION=n;var o=8;b.COMPILER_REVISION=o;var p=7;b.LAST_COMPATIBLE_COMPILER_REVISION=p;var q={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};b.REVISION_CHANGES=q;var r="[object Object]";d.prototype={constructor:d,logger:l["default"],log:l["default"].log,registerHelper:function(a,b){if(f.toString.call(a)===r){if(b)throw new h["default"]("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){if(f.toString.call(a)===r)f.extend(this.partials,a);else{if("undefined"==typeof b)throw new h["default"]('Attempting to register a partial called "'+a+'" as undefined');this.partials[a]=b}},unregisterPartial:function(a){delete this.partials[a]},registerDecorator:function(a,b){if(f.toString.call(a)===r){if(b)throw new h["default"]("Arg not supported with multiple decorators");f.extend(this.decorators,a)}else this.decorators[a]=b},unregisterDecorator:function(a){delete this.decorators[a]},resetLoggedPropertyAccesses:function(){m.resetLoggedProperties()}};var s=l["default"].log;b.log=s,b.createFrame=f.createFrame,b.logger=l["default"]},function(a,b){"use strict";function c(a){return k[a]}function d(a){for(var b=1;b<arguments.length;b++)for(var c in arguments[b])Object.prototype.hasOwnProperty.call(arguments[b],c)&&(a[c]=arguments[b][c]);return a}function e(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1}function f(a){if("string"!=typeof a){if(a&&a.toHTML)return a.toHTML();if(null==a)return"";if(!a)return a+"";a=""+a}return m.test(a)?a.replace(l,c):a}function g(a){return!a&&0!==a||!(!p(a)||0!==a.length)}function h(a){var b=d({},a);return b._parent=a,b}function i(a,b){return a.path=b,a}function j(a,b){return(a?a+".":"")+b}b.__esModule=!0,b.extend=d,b.indexOf=e,b.escapeExpression=f,b.isEmpty=g,b.createFrame=h,b.blockParams=i,b.appendContextPath=j;var k={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},l=/[&<>"'`=]/g,m=/[&<>"'`=]/,n=Object.prototype.toString;b.toString=n;var o=function(a){return"function"==typeof a};o(/x/)&&(b.isFunction=o=function(a){return"function"==typeof a&&"[object Function]"===n.call(a)}),b.isFunction=o;var p=Array.isArray||function(a){return!(!a||"object"!=typeof a)&&"[object Array]"===n.call(a)};b.isArray=p},function(a,b,c){"use strict";function d(a,b){var c=b&&b.loc,g=void 0,h=void 0,i=void 0,j=void 0;c&&(g=c.start.line,h=c.end.line,i=c.start.column,j=c.end.column,a+=" - "+g+":"+i);for(var k=Error.prototype.constructor.call(this,a),l=0;l<f.length;l++)this[f[l]]=k[f[l]];Error.captureStackTrace&&Error.captureStackTrace(this,d);try{c&&(this.lineNumber=g,this.endLineNumber=h,e?(Object.defineProperty(this,"column",{value:i,enumerable:!0}),Object.defineProperty(this,"endColumn",{value:j,enumerable:!0})):(this.column=i,this.endColumn=j))}catch(m){}}var e=c(7)["default"];b.__esModule=!0;var f=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];d.prototype=new Error,b["default"]=d,a.exports=b["default"]},function(a,b,c){a.exports={"default":c(8),__esModule:!0}},function(a,b,c){var d=c(9);a.exports=function(a,b,c){return d.setDesc(a,b,c)}},function(a,b){var c=Object;a.exports={create:c.create,getProto:c.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:c.getOwnPropertyDescriptor,setDesc:c.defineProperty,setDescs:c.defineProperties,getKeys:c.keys,getNames:c.getOwnPropertyNames,getSymbols:c.getOwnPropertySymbols,each:[].forEach}},function(a,b,c){"use strict";function d(a){h["default"](a),j["default"](a),l["default"](a),n["default"](a),p["default"](a),r["default"](a),t["default"](a)}function e(a,b,c){a.helpers[b]&&(a.hooks[b]=a.helpers[b],c||delete a.helpers[b])}var f=c(1)["default"];b.__esModule=!0,b.registerDefaultHelpers=d,b.moveHelperToHooks=e;var g=c(11),h=f(g),i=c(12),j=f(i),k=c(25),l=f(k),m=c(26),n=f(m),o=c(27),p=f(o),q=c(28),r=f(q),s=c(29),t=f(s)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerHelper("blockHelperMissing",function(b,c){var e=c.inverse,f=c.fn;if(b===!0)return f(this);if(b===!1||null==b)return e(this);if(d.isArray(b))return b.length>0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):e(this);if(c.data&&c.ids){var g=d.createFrame(c.data);g.contextPath=d.appendContextPath(c.data.contextPath,c.name),c={data:g}}return f(b,c)})},a.exports=b["default"]},function(a,b,c){(function(d){"use strict";var e=c(13)["default"],f=c(1)["default"];b.__esModule=!0;var g=c(5),h=c(6),i=f(h);b["default"]=function(a){a.registerHelper("each",function(a,b){function c(b,c,d){l&&(l.key=b,l.index=c,l.first=0===c,l.last=!!d,m&&(l.contextPath=m+b)),k+=f(a[b],{data:l,blockParams:g.blockParams([a[b],b],[m+b,null])})}if(!b)throw new i["default"]("Must pass iterator to #each");var f=b.fn,h=b.inverse,j=0,k="",l=void 0,m=void 0;if(b.data&&b.ids&&(m=g.appendContextPath(b.data.contextPath,b.ids[0])+"."),g.isFunction(a)&&(a=a.call(this)),b.data&&(l=g.createFrame(b.data)),a&&"object"==typeof a)if(g.isArray(a))for(var n=a.length;j<n;j++)j in a&&c(j,j,j===a.length-1);else if(d.Symbol&&a[d.Symbol.iterator]){for(var o=[],p=a[d.Symbol.iterator](),q=p.next();!q.done;q=p.next())o.push(q.value);a=o;for(var n=a.length;j<n;j++)c(j,j,j===a.length-1)}else!function(){var b=void 0;e(a).forEach(function(a){void 0!==b&&c(b,j-1),b=a,j++}),void 0!==b&&c(b,j-1,!0)}();return 0===j&&(k=h(this)),k})},a.exports=b["default"]}).call(b,function(){return this}())},function(a,b,c){a.exports={"default":c(14),__esModule:!0}},function(a,b,c){c(15),a.exports=c(21).Object.keys},function(a,b,c){var d=c(16);c(18)("keys",function(a){return function(b){return a(d(b))}})},function(a,b,c){var d=c(17);a.exports=function(a){return Object(d(a))}},function(a,b){a.exports=function(a){if(void 0==a)throw TypeError("Can't call method on "+a);return a}},function(a,b,c){var d=c(19),e=c(21),f=c(24);a.exports=function(a,b){var c=(e.Object||{})[a]||Object[a],g={};g[a]=b(c),d(d.S+d.F*f(function(){c(1)}),"Object",g)}},function(a,b,c){var d=c(20),e=c(21),f=c(22),g="prototype",h=function(a,b,c){var i,j,k,l=a&h.F,m=a&h.G,n=a&h.S,o=a&h.P,p=a&h.B,q=a&h.W,r=m?e:e[b]||(e[b]={}),s=m?d:n?d[b]:(d[b]||{})[g];m&&(c=b);for(i in c)j=!l&&s&&i in s,j&&i in r||(k=j?s[i]:c[i],r[i]=m&&"function"!=typeof s[i]?c[i]:p&&j?f(k,d):q&&s[i]==k?function(a){var b=function(b){return this instanceof a?new a(b):a(b)};return b[g]=a[g],b}(k):o&&"function"==typeof k?f(Function.call,k):k,o&&((r[g]||(r[g]={}))[i]=k))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,a.exports=h},function(a,b){var c=a.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=c)},function(a,b){var c=a.exports={version:"1.2.6"};"number"==typeof __e&&(__e=c)},function(a,b,c){var d=c(23);a.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(a,b){a.exports=function(a){try{return!!a()}catch(b){return!0}}},function(a,b,c){"use strict";var d=c(1)["default"];b.__esModule=!0;var e=c(6),f=d(e);b["default"]=function(a){a.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new f["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(1)["default"];b.__esModule=!0;var e=c(5),f=c(6),g=d(f);b["default"]=function(a){a.registerHelper("if",function(a,b){if(2!=arguments.length)throw new g["default"]("#if requires exactly one argument");return e.isFunction(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||e.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){if(2!=arguments.length)throw new g["default"]("#unless requires exactly one argument");return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("log",function(){for(var b=[void 0],c=arguments[arguments.length-1],d=0;d<arguments.length-1;d++)b.push(arguments[d]);var e=1;null!=c.hash.level?e=c.hash.level:c.data&&null!=c.data.level&&(e=c.data.level),b[0]=e,a.log.apply(a,b)})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("lookup",function(a,b,c){return a?c.lookupProperty(a,b):a})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(1)["default"];b.__esModule=!0;var e=c(5),f=c(6),g=d(f);b["default"]=function(a){a.registerHelper("with",function(a,b){if(2!=arguments.length)throw new g["default"]("#with requires exactly one argument");e.isFunction(a)&&(a=a.call(this));var c=b.fn;if(e.isEmpty(a))return b.inverse(this);var d=b.data;return b.data&&b.ids&&(d=e.createFrame(b.data),d.contextPath=e.appendContextPath(b.data.contextPath,b.ids[0])),c(a,{data:d,blockParams:e.blockParams([a],[d&&d.contextPath])})})},a.exports=b["default"]},function(a,b,c){"use strict";function d(a){g["default"](a)}var e=c(1)["default"];b.__esModule=!0,b.registerDefaultDecorators=d;var f=c(31),g=e(f)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerDecorator("inline",function(a,b,c,e){var f=a;return b.partials||(b.partials={},f=function(e,f){var g=c.partials;c.partials=d.extend({},g,b.partials);var h=a(e,f);return c.partials=g,h}),b.partials[e.args[0]]=e.fn,f})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5),e={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(a){if("string"==typeof a){var b=d.indexOf(e.methodMap,a.toLowerCase());a=b>=0?b:parseInt(a,10)}return a},log:function(a){if(a=e.lookupLevel(a),"undefined"!=typeof console&&e.lookupLevel(e.level)<=a){var b=e.methodMap[a];console[b]||(b="log");for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;f<c;f++)d[f-1]=arguments[f];console[b].apply(console,d)}}};b["default"]=e,a.exports=b["default"]},function(a,b,c){"use strict";function d(a){var b=i(null);b.constructor=!1,b.__defineGetter__=!1,b.__defineSetter__=!1,b.__lookupGetter__=!1;var c=i(null);return c.__proto__=!1,{properties:{whitelist:l.createNewLookupObject(c,a.allowedProtoProperties),defaultValue:a.allowProtoPropertiesByDefault},methods:{whitelist:l.createNewLookupObject(b,a.allowedProtoMethods),defaultValue:a.allowProtoMethodsByDefault}}}function e(a,b,c){return"function"==typeof a?f(b.methods,c):f(b.properties,c)}function f(a,b){return void 0!==a.whitelist[b]?a.whitelist[b]===!0:void 0!==a.defaultValue?a.defaultValue:(g(b),!1)}function g(a){o[a]!==!0&&(o[a]=!0,n.log("error",'Handlebars: Access has been denied to resolve the property "'+a+'" because it is not an "own property" of its parent.\nYou can add a runtime option to disable the check or this warning:\nSee https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'))}function h(){j(o).forEach(function(a){delete o[a]})}var i=c(34)["default"],j=c(13)["default"],k=c(3)["default"];b.__esModule=!0,b.createProtoAccessControl=d,b.resultIsAllowed=e,b.resetLoggedProperties=h;var l=c(36),m=c(32),n=k(m),o=i(null)},function(a,b,c){a.exports={"default":c(35),__esModule:!0}},function(a,b,c){var d=c(9);a.exports=function(a,b){return d.create(a,b)}},function(a,b,c){"use strict";function d(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return f.extend.apply(void 0,[e(null)].concat(b))}var e=c(34)["default"];b.__esModule=!0,b.createNewLookupObject=d;var f=c(5)},function(a,b){"use strict";function c(a){this.string=a}b.__esModule=!0,c.prototype.toString=c.prototype.toHTML=function(){return""+this.string},b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=v.COMPILER_REVISION;if(!(b>=v.LAST_COMPATIBLE_COMPILER_REVISION&&b<=v.COMPILER_REVISION)){if(b<v.LAST_COMPATIBLE_COMPILER_REVISION){var d=v.REVISION_CHANGES[c],e=v.REVISION_CHANGES[b];throw new u["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new u["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){function c(c,d,e){e.hash&&(d=s.extend({},d,e.hash),e.ids&&(e.ids[0]=!0)),c=b.VM.resolvePartial.call(this,c,d,e);var f=s.extend({},e,{hooks:this.hooks,protoAccessControl:this.protoAccessControl}),g=b.VM.invokePartial.call(this,c,d,f);if(null==g&&b.compile&&(e.partials[e.name]=b.compile(c,a.compilerOptions,b),g=e.partials[e.name](d,f)),null!=g){if(e.indent){for(var h=g.split("\n"),i=0,j=h.length;i<j&&(h[i]||i+1!==j);i++)h[i]=e.indent+h[i];g=h.join("\n")}return g}throw new u["default"]("The partial "+e.name+" could not be compiled when running in runtime-only mode")}function d(b){function c(b){return""+a.main(g,b,g.helpers,g.partials,f,i,h)}var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],f=e.data;d._setup(e),!e.partial&&a.useData&&(f=j(b,f));var h=void 0,i=a.useBlockParams?[]:void 0;return a.useDepths&&(h=e.depths?b!=e.depths[0]?[b].concat(e.depths):e.depths:[b]),(c=k(a.main,c,g,e.depths||[],f,i))(b,e)}if(!b)throw new u["default"]("No environment passed to template");if(!a||!a.main)throw new u["default"]("Unknown template object: "+typeof a);a.main.decorator=a.main_d,b.VM.checkRevision(a.compiler);var e=a.compiler&&7===a.compiler[0],g={strict:function(a,b,c){if(!(a&&b in a))throw new u["default"]('"'+b+'" not defined in '+a,{loc:c});return a[b]},lookupProperty:function(a,b){var c=a[b];return null==c?c:Object.prototype.hasOwnProperty.call(a,b)?c:y.resultIsAllowed(c,g.protoAccessControl,b)?c:void 0},lookup:function(a,b){for(var c=a.length,d=0;d<c;d++){var e=a[d]&&g.lookupProperty(a[d],b);if(null!=e)return a[d][b]}},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:s.escapeExpression,invokePartial:c,fn:function(b){var c=a[b];return c.decorator=a[b+"_d"],c},programs:[],program:function(a,b,c,d,e){var g=this.programs[a],h=this.fn(a);return b||e||d||c?g=f(this,a,h,b,c,d,e):g||(g=this.programs[a]=f(this,a,h)),g},data:function(a,b){for(;a&&b--;)a=a._parent;return a},mergeIfNeeded:function(a,b){var c=a||b;return a&&b&&a!==b&&(c=s.extend({},b,a)),c},nullContext:n({}),noop:b.VM.noop,compilerInfo:a.compiler};return d.isTop=!0,d._setup=function(c){if(c.partial)g.protoAccessControl=c.protoAccessControl,g.helpers=c.helpers,g.partials=c.partials,g.decorators=c.decorators,g.hooks=c.hooks;else{var d=s.extend({},b.helpers,c.helpers);l(d,g),g.helpers=d,a.usePartial&&(g.partials=g.mergeIfNeeded(c.partials,b.partials)),(a.usePartial||a.useDecorators)&&(g.decorators=s.extend({},b.decorators,c.decorators)),g.hooks={},g.protoAccessControl=y.createProtoAccessControl(c);var f=c.allowCallsToHelperMissing||e;w.moveHelperToHooks(g,"helperMissing",f),w.moveHelperToHooks(g,"blockHelperMissing",f)}},d._child=function(b,c,d,e){if(a.useBlockParams&&!d)throw new u["default"]("must pass block params");if(a.useDepths&&!e)throw new u["default"]("must pass parent depths");return f(g,b,a[b],c,0,d,e)},d}function f(a,b,c,d,e,f,g){function h(b){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],h=g;return!g||b==g[0]||b===a.nullContext&&null===g[0]||(h=[b].concat(g)),c(a,b,a.helpers,a.partials,e.data||d,f&&[e.blockParams].concat(f),h)}return h=k(c,h,a,g,d,f),h.program=b,h.depth=g?g.length:0,h.blockParams=e||0,h}function g(a,b,c){return a?a.call||c.name||(c.name=a,a=c.partials[a]):a="@partial-block"===c.name?c.data["partial-block"]:c.partials[c.name],a}function h(a,b,c){var d=c.data&&c.data["partial-block"];c.partial=!0,c.ids&&(c.data.contextPath=c.ids[0]||c.data.contextPath);var e=void 0;if(c.fn&&c.fn!==i&&!function(){c.data=v.createFrame(c.data);var a=c.fn;e=c.data["partial-block"]=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return c.data=v.createFrame(c.data),c.data["partial-block"]=d,a(b,c)},a.partials&&(c.partials=s.extend({},c.partials,a.partials))}(),void 0===a&&e&&(a=e),void 0===a)throw new u["default"]("The partial "+c.name+" could not be found");if(a instanceof Function)return a(b,c)}function i(){return""}function j(a,b){return b&&"root"in b||(b=b?v.createFrame(b):{},b.root=a),b}function k(a,b,c,d,e,f){if(a.decorator){var g={};b=a.decorator(b,g,c,d&&d[0],e,f,d),s.extend(b,g)}return b}function l(a,b){o(a).forEach(function(c){var d=a[c];a[c]=m(d,b)})}function m(a,b){var c=b.lookupProperty;return x.wrapHelper(a,function(a){return s.extend({lookupProperty:c},a)})}var n=c(39)["default"],o=c(13)["default"],p=c(3)["default"],q=c(1)["default"];b.__esModule=!0,b.checkRevision=d,b.template=e,b.wrapProgram=f,b.resolvePartial=g,b.invokePartial=h,b.noop=i;var r=c(5),s=p(r),t=c(6),u=q(t),v=c(4),w=c(10),x=c(43),y=c(33)},function(a,b,c){a.exports={"default":c(40),__esModule:!0}},function(a,b,c){c(41),a.exports=c(21).Object.seal},function(a,b,c){var d=c(42);c(18)("seal",function(a){return function(b){return a&&d(b)?a(b):b}})},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(a,b){"use strict";function c(a,b){if("function"!=typeof a)return a;var c=function(){var c=arguments[arguments.length-1];return arguments[arguments.length-1]=b(c),a.apply(this,arguments)};return c}b.__esModule=!0,b.wrapHelper=c},function(a,b){(function(c){"use strict";b.__esModule=!0,b["default"]=function(a){var b="undefined"!=typeof c?c:window,d=b.Handlebars;a.noConflict=function(){return b.Handlebars===a&&(b.Handlebars=d),a}},a.exports=b["default"]}).call(b,function(){return this}())},function(a,b){"use strict";b.__esModule=!0;var c={helpers:{helperExpression:function(a){return"SubExpression"===a.type||("MustacheStatement"===a.type||"BlockStatement"===a.type)&&!!(a.params&&a.params.length||a.hash)},scopedId:function(a){return/^\.|this\b/.test(a.original)},simpleId:function(a){return 1===a.parts.length&&!c.helpers.scopedId(a)&&!a.depth}}};b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b){if("Program"===a.type)return a;i["default"].yy=o,o.locInfo=function(a){return new o.SourceLocation(b&&b.srcName,a)};var c=i["default"].parse(a);return c}function e(a,b){var c=d(a,b),e=new k["default"](b);return e.accept(c)}var f=c(1)["default"],g=c(3)["default"];b.__esModule=!0,b.parseWithoutProcessing=d,b.parse=e;var h=c(47),i=f(h),j=c(48),k=f(j),l=c(50),m=g(l),n=c(5);b.parser=i["default"];var o={};n.extend(o,m)},function(a,b){"use strict";b.__esModule=!0;var c=function(){function a(){this.yy={}}var b={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(a,b,c,d,e,f,g){var h=f.length-1;switch(e){case 1:return f[h-1];case 2:this.$=d.prepareProgram(f[h]);break;case 3:this.$=f[h];break;case 4:this.$=f[h];break;case 5:this.$=f[h];break;case 6:this.$=f[h];break;case 7:this.$=f[h];break;case 8:this.$=f[h];break;case 9:this.$={type:"CommentStatement",value:d.stripComment(f[h]),strip:d.stripFlags(f[h],f[h]),loc:d.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:f[h],value:f[h],loc:d.locInfo(this._$)};break;case 11:this.$=d.prepareRawBlock(f[h-2],f[h-1],f[h],this._$);break;case 12:this.$={path:f[h-3],params:f[h-2],hash:f[h-1]};break;case 13:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!1,this._$);break;case 14:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!0,this._$);break;case 15:this.$={open:f[h-5],path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 16:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 17:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 18:this.$={strip:d.stripFlags(f[h-1],f[h-1]),program:f[h]};break;case 19:var i=d.prepareBlock(f[h-2],f[h-1],f[h],f[h],!1,this._$),j=d.prepareProgram([i],f[h-1].loc);j.chained=!0,this.$={strip:f[h-2].strip,program:j,chain:!0};break;case 20:this.$=f[h];break;case 21:this.$={path:f[h-1],strip:d.stripFlags(f[h-2],f[h])};break;case 22:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 23:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 24:this.$={type:"PartialStatement",name:f[h-3],params:f[h-2],hash:f[h-1],indent:"",strip:d.stripFlags(f[h-4],f[h]),loc:d.locInfo(this._$)};break;case 25:this.$=d.preparePartialBlock(f[h-2],f[h-1],f[h],this._$);break;case 26:this.$={path:f[h-3],params:f[h-2],hash:f[h-1],strip:d.stripFlags(f[h-4],f[h])};break;case 27:this.$=f[h];break;case 28:this.$=f[h];break;case 29:this.$={type:"SubExpression",path:f[h-3],params:f[h-2],hash:f[h-1],loc:d.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:f[h],loc:d.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:d.id(f[h-2]),value:f[h],loc:d.locInfo(this._$)};break;case 32:this.$=d.id(f[h-1]);break;case 33:this.$=f[h];break;case 34:this.$=f[h];break;case 35:this.$={type:"StringLiteral",value:f[h],original:f[h],loc:d.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(f[h]),original:Number(f[h]),loc:d.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===f[h],original:"true"===f[h],loc:d.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:d.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:d.locInfo(this._$)};break;case 40:this.$=f[h];break;case 41:this.$=f[h];break;case 42:this.$=d.preparePath(!0,f[h],this._$);break;case 43:this.$=d.preparePath(!1,f[h],this._$);break;case 44:f[h-2].push({part:d.id(f[h]),original:f[h],separator:f[h-1]}),this.$=f[h-2];break;case 45:this.$=[{part:d.id(f[h]),original:f[h]}];break;case 46:this.$=[];break;case 47:f[h-1].push(f[h]);break;case 48:this.$=[];break;case 49:f[h-1].push(f[h]);break;case 50:this.$=[];break;case 51:f[h-1].push(f[h]);break;case 58:this.$=[];break;case 59:f[h-1].push(f[h]);break;case 64:this.$=[];break;case 65:f[h-1].push(f[h]);break;case 70:this.$=[];break;case 71:f[h-1].push(f[h]);break;case 78:this.$=[];break;case 79:f[h-1].push(f[h]);break;case 82:this.$=[];break;case 83:f[h-1].push(f[h]);break;case 86:this.$=[];break;case 87:f[h-1].push(f[h]);break;case 90:this.$=[];break;case 91:f[h-1].push(f[h]);break;case 94:this.$=[];break;case 95:f[h-1].push(f[h]);break;case 98:this.$=[f[h]];break;case 99:f[h-1].push(f[h]);break;case 100:this.$=[f[h]];break;case 101:f[h-1].push(f[h])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],
|
| 28 |
+
72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},parseError:function(a,b){throw new Error(a)},parse:function(a){function b(){var a;return a=c.lexer.lex()||1,"number"!=typeof a&&(a=c.symbols_[a]||a),a}var c=this,d=[0],e=[null],f=[],g=this.table,h="",i=0,j=0,k=0;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var l=this.lexer.yylloc;f.push(l);var m=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var n,o,p,q,r,s,t,u,v,w={};;){if(p=d[d.length-1],this.defaultActions[p]?q=this.defaultActions[p]:(null!==n&&"undefined"!=typeof n||(n=b()),q=g[p]&&g[p][n]),"undefined"==typeof q||!q.length||!q[0]){var x="";if(!k){v=[];for(s in g[p])this.terminals_[s]&&s>2&&v.push("'"+this.terminals_[s]+"'");x=this.lexer.showPosition?"Parse error on line "+(i+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+v.join(", ")+", got '"+(this.terminals_[n]||n)+"'":"Parse error on line "+(i+1)+": Unexpected "+(1==n?"end of input":"'"+(this.terminals_[n]||n)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[n]||n,line:this.lexer.yylineno,loc:l,expected:v})}}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+p+", token: "+n);switch(q[0]){case 1:d.push(n),e.push(this.lexer.yytext),f.push(this.lexer.yylloc),d.push(q[1]),n=null,o?(n=o,o=null):(j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,l=this.lexer.yylloc,k>0&&k--);break;case 2:if(t=this.productions_[q[1]][1],w.$=e[e.length-t],w._$={first_line:f[f.length-(t||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(t||1)].first_column,last_column:f[f.length-1].last_column},m&&(w._$.range=[f[f.length-(t||1)].range[0],f[f.length-1].range[1]]),r=this.performAction.call(w,h,j,i,this.yy,q[1],e,f),"undefined"!=typeof r)return r;t&&(d=d.slice(0,-1*t*2),e=e.slice(0,-1*t),f=f.slice(0,-1*t)),d.push(this.productions_[q[1]][0]),e.push(w.$),f.push(w._$),u=g[d[d.length-2]][d[d.length-1]],d.push(u);break;case 3:return!0}}return!0}},c=function(){var a={EOF:1,parseError:function(a,b){if(!this.yy.parser)throw new Error(a);this.yy.parser.parseError(a,b)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var b=a.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var b=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b-1),this.offset-=b;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[e[0],e[0]+this.yyleng-b]),this},more:function(){return this._more=!0,this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=new Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d,e;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),g=0;g<f.length&&(c=this._input.match(this.rules[f[g]]),!c||b&&!(c[0].length>b[0].length)||(b=c,d=g,this.options.flex));g++);return b?(e=b[0].match(/(?:\r\n?|\n).*/g),e&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-e[e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,f[d],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a?a:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return"undefined"!=typeof a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)}};return a.options={},a.performAction=function(a,b,c,d){function e(a,c){return b.yytext=b.yytext.substring(a,b.yyleng-c+a)}switch(c){case 0:if("\\\\"===b.yytext.slice(-2)?(e(0,1),this.begin("mu")):"\\"===b.yytext.slice(-1)?(e(0,1),this.begin("emu")):this.begin("mu"),b.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(e(5,9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(b.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return b.yytext=e(1,2).replace(/\\"/g,'"'),80;case 32:return b.yytext=e(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return b.yytext=b.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},a.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]+?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],a.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},a}();return b.lexer=c,a.prototype=b,b.Parser=a,new a}();b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=a}function e(a,b,c){void 0===b&&(b=a.length);var d=a[b-1],e=a[b-2];return d?"ContentStatement"===d.type?(e||!c?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(d.original):void 0:c}function f(a,b,c){void 0===b&&(b=-1);var d=a[b+1],e=a[b+2];return d?"ContentStatement"===d.type?(e||!c?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(d.original):void 0:c}function g(a,b,c){var d=a[null==b?0:b+1];if(d&&"ContentStatement"===d.type&&(c||!d.rightStripped)){var e=d.value;d.value=d.value.replace(c?/^\s+/:/^[ \t]*\r?\n?/,""),d.rightStripped=d.value!==e}}function h(a,b,c){var d=a[null==b?a.length-1:b-1];if(d&&"ContentStatement"===d.type&&(c||!d.leftStripped)){var e=d.value;return d.value=d.value.replace(c?/\s+$/:/[ \t]+$/,""),d.leftStripped=d.value!==e,d.leftStripped}}var i=c(1)["default"];b.__esModule=!0;var j=c(49),k=i(j);d.prototype=new k["default"],d.prototype.Program=function(a){var b=!this.options.ignoreStandalone,c=!this.isRootSeen;this.isRootSeen=!0;for(var d=a.body,i=0,j=d.length;i<j;i++){var k=d[i],l=this.accept(k);if(l){var m=e(d,i,c),n=f(d,i,c),o=l.openStandalone&&m,p=l.closeStandalone&&n,q=l.inlineStandalone&&m&&n;l.close&&g(d,i,!0),l.open&&h(d,i,!0),b&&q&&(g(d,i),h(d,i)&&"PartialStatement"===k.type&&(k.indent=/([ \t]+$)/.exec(d[i-1].original)[1])),b&&o&&(g((k.program||k.inverse).body),h(d,i)),b&&p&&(g(d,i),h((k.inverse||k.program).body))}}return a},d.prototype.BlockStatement=d.prototype.DecoratorBlock=d.prototype.PartialBlockStatement=function(a){this.accept(a.program),this.accept(a.inverse);var b=a.program||a.inverse,c=a.program&&a.inverse,d=c,i=c;if(c&&c.chained)for(d=c.body[0].program;i.chained;)i=i.body[i.body.length-1].program;var j={open:a.openStrip.open,close:a.closeStrip.close,openStandalone:f(b.body),closeStandalone:e((d||b).body)};if(a.openStrip.close&&g(b.body,null,!0),c){var k=a.inverseStrip;k.open&&h(b.body,null,!0),k.close&&g(d.body,null,!0),a.closeStrip.open&&h(i.body,null,!0),!this.options.ignoreStandalone&&e(b.body)&&f(d.body)&&(h(b.body),g(d.body))}else a.closeStrip.open&&h(b.body,null,!0);return j},d.prototype.Decorator=d.prototype.MustacheStatement=function(a){return a.strip},d.prototype.PartialStatement=d.prototype.CommentStatement=function(a){var b=a.strip||{};return{inlineStandalone:!0,open:b.open,close:b.close}},b["default"]=d,a.exports=b["default"]},function(a,b,c){"use strict";function d(){this.parents=[]}function e(a){this.acceptRequired(a,"path"),this.acceptArray(a.params),this.acceptKey(a,"hash")}function f(a){e.call(this,a),this.acceptKey(a,"program"),this.acceptKey(a,"inverse")}function g(a){this.acceptRequired(a,"name"),this.acceptArray(a.params),this.acceptKey(a,"hash")}var h=c(1)["default"];b.__esModule=!0;var i=c(6),j=h(i);d.prototype={constructor:d,mutating:!1,acceptKey:function(a,b){var c=this.accept(a[b]);if(this.mutating){if(c&&!d.prototype[c.type])throw new j["default"]('Unexpected node type "'+c.type+'" found when accepting '+b+" on "+a.type);a[b]=c}},acceptRequired:function(a,b){if(this.acceptKey(a,b),!a[b])throw new j["default"](a.type+" requires "+b)},acceptArray:function(a){for(var b=0,c=a.length;b<c;b++)this.acceptKey(a,b),a[b]||(a.splice(b,1),b--,c--)},accept:function(a){if(a){if(!this[a.type])throw new j["default"]("Unknown type: "+a.type,a);this.current&&this.parents.unshift(this.current),this.current=a;var b=this[a.type](a);return this.current=this.parents.shift(),!this.mutating||b?b:b!==!1?a:void 0}},Program:function(a){this.acceptArray(a.body)},MustacheStatement:e,Decorator:e,BlockStatement:f,DecoratorBlock:f,PartialStatement:g,PartialBlockStatement:function(a){g.call(this,a),this.acceptKey(a,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:e,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(a){this.acceptArray(a.pairs)},HashPair:function(a){this.acceptRequired(a,"value")}},b["default"]=d,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b){if(b=b.path?b.path.original:b,a.path.original!==b){var c={loc:a.path.loc};throw new q["default"](a.path.original+" doesn't match "+b,c)}}function e(a,b){this.source=a,this.start={line:b.first_line,column:b.first_column},this.end={line:b.last_line,column:b.last_column}}function f(a){return/^\[.*\]$/.test(a)?a.substring(1,a.length-1):a}function g(a,b){return{open:"~"===a.charAt(2),close:"~"===b.charAt(b.length-3)}}function h(a){return a.replace(/^\{\{~?!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function i(a,b,c){c=this.locInfo(c);for(var d=a?"@":"",e=[],f=0,g=0,h=b.length;g<h;g++){var i=b[g].part,j=b[g].original!==i;if(d+=(b[g].separator||"")+i,j||".."!==i&&"."!==i&&"this"!==i)e.push(i);else{if(e.length>0)throw new q["default"]("Invalid path: "+d,{loc:c});".."===i&&f++}}return{type:"PathExpression",data:a,depth:f,parts:e,original:d,loc:c}}function j(a,b,c,d,e,f){var g=d.charAt(3)||d.charAt(2),h="{"!==g&&"&"!==g,i=/\*/.test(d);return{type:i?"Decorator":"MustacheStatement",path:a,params:b,hash:c,escaped:h,strip:e,loc:this.locInfo(f)}}function k(a,b,c,e){d(a,c),e=this.locInfo(e);var f={type:"Program",body:b,strip:{},loc:e};return{type:"BlockStatement",path:a.path,params:a.params,hash:a.hash,program:f,openStrip:{},inverseStrip:{},closeStrip:{},loc:e}}function l(a,b,c,e,f,g){e&&e.path&&d(a,e);var h=/\*/.test(a.open);b.blockParams=a.blockParams;var i=void 0,j=void 0;if(c){if(h)throw new q["default"]("Unexpected inverse block on decorator",c);c.chain&&(c.program.body[0].closeStrip=e.strip),j=c.strip,i=c.program}return f&&(f=i,i=b,b=f),{type:h?"DecoratorBlock":"BlockStatement",path:a.path,params:a.params,hash:a.hash,program:b,inverse:i,openStrip:a.strip,inverseStrip:j,closeStrip:e&&e.strip,loc:this.locInfo(g)}}function m(a,b){if(!b&&a.length){var c=a[0].loc,d=a[a.length-1].loc;c&&d&&(b={source:c.source,start:{line:c.start.line,column:c.start.column},end:{line:d.end.line,column:d.end.column}})}return{type:"Program",body:a,strip:{},loc:b}}function n(a,b,c,e){return d(a,c),{type:"PartialBlockStatement",name:a.path,params:a.params,hash:a.hash,program:b,openStrip:a.strip,closeStrip:c&&c.strip,loc:this.locInfo(e)}}var o=c(1)["default"];b.__esModule=!0,b.SourceLocation=e,b.id=f,b.stripFlags=g,b.stripComment=h,b.preparePath=i,b.prepareMustache=j,b.prepareRawBlock=k,b.prepareBlock=l,b.prepareProgram=m,b.preparePartialBlock=n;var p=c(6),q=o(p)},function(a,b,c){"use strict";function d(){}function e(a,b,c){if(null==a||"string"!=typeof a&&"Program"!==a.type)throw new l["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var d=c.parse(a,b),e=(new c.Compiler).compile(d,b);return(new c.JavaScriptCompiler).compile(e,b)}function f(a,b,c){function d(){var d=c.parse(a,b),e=(new c.Compiler).compile(d,b),f=(new c.JavaScriptCompiler).compile(e,b,void 0,!0);return c.template(f)}function e(a,b){return f||(f=d()),f.call(this,a,b)}if(void 0===b&&(b={}),null==a||"string"!=typeof a&&"Program"!==a.type)throw new l["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+a);b=m.extend({},b),"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var f=void 0;return e._setup=function(a){return f||(f=d()),f._setup(a)},e._child=function(a,b,c,e){return f||(f=d()),f._child(a,b,c,e)},e}function g(a,b){if(a===b)return!0;if(m.isArray(a)&&m.isArray(b)&&a.length===b.length){for(var c=0;c<a.length;c++)if(!g(a[c],b[c]))return!1;return!0}}function h(a){if(!a.path.parts){var b=a.path;a.path={type:"PathExpression",data:!1,depth:0,parts:[b.original+""],original:b.original+"",loc:b.loc}}}var i=c(34)["default"],j=c(1)["default"];b.__esModule=!0,b.Compiler=d,b.precompile=e,b.compile=f;var k=c(6),l=j(k),m=c(5),n=c(45),o=j(n),p=[].slice;d.prototype={compiler:d,equals:function(a){var b=this.opcodes.length;if(a.opcodes.length!==b)return!1;for(var c=0;c<b;c++){var d=this.opcodes[c],e=a.opcodes[c];if(d.opcode!==e.opcode||!g(d.args,e.args))return!1}b=this.children.length;for(var c=0;c<b;c++)if(!this.children[c].equals(a.children[c]))return!1;return!0},guid:0,compile:function(a,b){return this.sourceNode=[],this.opcodes=[],this.children=[],this.options=b,this.stringParams=b.stringParams,this.trackIds=b.trackIds,b.blockParams=b.blockParams||[],b.knownHelpers=m.extend(i(null),{helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},b.knownHelpers),this.accept(a)},compileProgram:function(a){var b=new this.compiler,c=b.compile(a,this.options),d=this.guid++;return this.usePartial=this.usePartial||c.usePartial,this.children[d]=c,this.useDepths=this.useDepths||c.useDepths,d},accept:function(a){if(!this[a.type])throw new l["default"]("Unknown type: "+a.type,a);this.sourceNode.unshift(a);var b=this[a.type](a);return this.sourceNode.shift(),b},Program:function(a){this.options.blockParams.unshift(a.blockParams);for(var b=a.body,c=b.length,d=0;d<c;d++)this.accept(b[d]);return this.options.blockParams.shift(),this.isSimple=1===c,this.blockParams=a.blockParams?a.blockParams.length:0,this},BlockStatement:function(a){h(a);var b=a.program,c=a.inverse;b=b&&this.compileProgram(b),c=c&&this.compileProgram(c);var d=this.classifySexpr(a);"helper"===d?this.helperSexpr(a,b,c):"simple"===d?(this.simpleSexpr(a),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.opcode("emptyHash"),this.opcode("blockValue",a.path.original)):(this.ambiguousSexpr(a,b,c),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(a){var b=a.program&&this.compileProgram(a.program),c=this.setupFullMustacheParams(a,b,void 0),d=a.path;this.useDecorators=!0,this.opcode("registerDecorator",c.length,d.original)},PartialStatement:function(a){this.usePartial=!0;var b=a.program;b&&(b=this.compileProgram(a.program));var c=a.params;if(c.length>1)throw new l["default"]("Unsupported number of partial arguments: "+c.length,a);c.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):c.push({type:"PathExpression",parts:[],depth:0}));var d=a.name.original,e="SubExpression"===a.name.type;e&&this.accept(a.name),this.setupFullMustacheParams(a,b,void 0,!0);var f=a.indent||"";this.options.preventIndent&&f&&(this.opcode("appendContent",f),f=""),this.opcode("invokePartial",e,d,f),this.opcode("append")},PartialBlockStatement:function(a){this.PartialStatement(a)},MustacheStatement:function(a){this.SubExpression(a),a.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(a){this.DecoratorBlock(a)},ContentStatement:function(a){a.value&&this.opcode("appendContent",a.value)},CommentStatement:function(){},SubExpression:function(a){h(a);var b=this.classifySexpr(a);"simple"===b?this.simpleSexpr(a):"helper"===b?this.helperSexpr(a):this.ambiguousSexpr(a)},ambiguousSexpr:function(a,b,c){var d=a.path,e=d.parts[0],f=null!=b||null!=c;this.opcode("getContext",d.depth),this.opcode("pushProgram",b),this.opcode("pushProgram",c),d.strict=!0,this.accept(d),this.opcode("invokeAmbiguous",e,f)},simpleSexpr:function(a){var b=a.path;b.strict=!0,this.accept(b),this.opcode("resolvePossibleLambda")},helperSexpr:function(a,b,c){var d=this.setupFullMustacheParams(a,b,c),e=a.path,f=e.parts[0];if(this.options.knownHelpers[f])this.opcode("invokeKnownHelper",d.length,f);else{if(this.options.knownHelpersOnly)throw new l["default"]("You specified knownHelpersOnly, but used the unknown helper "+f,a);e.strict=!0,e.falsy=!0,this.accept(e),this.opcode("invokeHelper",d.length,e.original,o["default"].helpers.simpleId(e))}},PathExpression:function(a){this.addDepth(a.depth),this.opcode("getContext",a.depth);var b=a.parts[0],c=o["default"].helpers.scopedId(a),d=!a.depth&&!c&&this.blockParamIndex(b);d?this.opcode("lookupBlockParam",d,a.parts):b?a.data?(this.options.data=!0,this.opcode("lookupData",a.depth,a.parts,a.strict)):this.opcode("lookupOnContext",a.parts,a.falsy,a.strict,c):this.opcode("pushContext")},StringLiteral:function(a){this.opcode("pushString",a.value)},NumberLiteral:function(a){this.opcode("pushLiteral",a.value)},BooleanLiteral:function(a){this.opcode("pushLiteral",a.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(a){var b=a.pairs,c=0,d=b.length;for(this.opcode("pushHash");c<d;c++)this.pushParam(b[c].value);for(;c--;)this.opcode("assignToHash",b[c].key);this.opcode("popHash")},opcode:function(a){this.opcodes.push({opcode:a,args:p.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(a){a&&(this.useDepths=!0)},classifySexpr:function(a){var b=o["default"].helpers.simpleId(a.path),c=b&&!!this.blockParamIndex(a.path.parts[0]),d=!c&&o["default"].helpers.helperExpression(a),e=!c&&(d||b);if(e&&!d){var f=a.path.parts[0],g=this.options;g.knownHelpers[f]?d=!0:g.knownHelpersOnly&&(e=!1)}return d?"helper":e?"ambiguous":"simple"},pushParams:function(a){for(var b=0,c=a.length;b<c;b++)this.pushParam(a[b])},pushParam:function(a){var b=null!=a.value?a.value:a.original||"";if(this.stringParams)b.replace&&(b=b.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),a.depth&&this.addDepth(a.depth),this.opcode("getContext",a.depth||0),this.opcode("pushStringParam",b,a.type),"SubExpression"===a.type&&this.accept(a);else{if(this.trackIds){var c=void 0;if(!a.parts||o["default"].helpers.scopedId(a)||a.depth||(c=this.blockParamIndex(a.parts[0])),c){var d=a.parts.slice(1).join(".");this.opcode("pushId","BlockParam",c,d)}else b=a.original||b,b.replace&&(b=b.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",a.type,b)}this.accept(a)}},setupFullMustacheParams:function(a,b,c,d){var e=a.params;return this.pushParams(e),this.opcode("pushProgram",b),this.opcode("pushProgram",c),a.hash?this.accept(a.hash):this.opcode("emptyHash",d),e},blockParamIndex:function(a){for(var b=0,c=this.options.blockParams.length;b<c;b++){var d=this.options.blockParams[b],e=d&&m.indexOf(d,a);if(d&&e>=0)return[b,e]}}}},function(a,b,c){"use strict";function d(a){this.value=a}function e(){}function f(a,b,c,d){var e=b.popStack(),f=0,g=c.length;for(a&&g--;f<g;f++)e=b.nameLookup(e,c[f],d);return a?[b.aliasable("container.strict"),"(",e,", ",b.quotedString(c[f]),", ",JSON.stringify(b.source.currentLocation)," )"]:e}var g=c(13)["default"],h=c(1)["default"];b.__esModule=!0;var i=c(4),j=c(6),k=h(j),l=c(5),m=c(53),n=h(m);e.prototype={nameLookup:function(a,b){return this.internalNameLookup(a,b)},depthedLookup:function(a){return[this.aliasable("container.lookup"),'(depths, "',a,'")']},compilerInfo:function(){var a=i.COMPILER_REVISION,b=i.REVISION_CHANGES[a];return[a,b]},appendToBuffer:function(a,b,c){return l.isArray(a)||(a=[a]),a=this.source.wrap(a,b),this.environment.isSimple?["return ",a,";"]:c?["buffer += ",a,";"]:(a.appendToBuffer=!0,a)},initializeBuffer:function(){return this.quotedString("")},internalNameLookup:function(a,b){return this.lookupPropertyFunctionIsUsed=!0,["lookupProperty(",a,",",JSON.stringify(b),")"]},lookupPropertyFunctionIsUsed:!1,compile:function(a,b,c,d){this.environment=a,this.options=b,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!d,this.name=this.environment.name,this.isChild=!!c,this.context=c||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(a,b),this.useDepths=this.useDepths||a.useDepths||a.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||a.useBlockParams;var e=a.opcodes,f=void 0,g=void 0,h=void 0,i=void 0;for(h=0,i=e.length;h<i;h++)f=e[h],this.source.currentLocation=f.loc,g=g||f.loc,this[f.opcode].apply(this,f.args);if(this.source.currentLocation=g,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new k["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend(["var decorators = container.decorators, ",this.lookupPropertyFunctionVarDeclaration(),";\n"]),
|
| 29 |
+
this.decorators.push("return fn;"),d?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var j=this.createFunctionContext(d);if(this.isChild)return j;var l={compiler:this.compilerInfo(),main:j};this.decorators&&(l.main_d=this.decorators,l.useDecorators=!0);var m=this.context,n=m.programs,o=m.decorators;for(h=0,i=n.length;h<i;h++)n[h]&&(l[h]=n[h],o[h]&&(l[h+"_d"]=o[h],l.useDecorators=!0));return this.environment.usePartial&&(l.usePartial=!0),this.options.data&&(l.useData=!0),this.useDepths&&(l.useDepths=!0),this.useBlockParams&&(l.useBlockParams=!0),this.options.compat&&(l.compat=!0),d?l.compilerOptions=this.options:(l.compiler=JSON.stringify(l.compiler),this.source.currentLocation={start:{line:1,column:0}},l=this.objectLiteral(l),b.srcName?(l=l.toStringWithSourceMap({file:b.destName}),l.map=l.map&&l.map.toString()):l=l.toString()),l},preamble:function(){this.lastContext=0,this.source=new n["default"](this.options.srcName),this.decorators=new n["default"](this.options.srcName)},createFunctionContext:function(a){var b=this,c="",d=this.stackVars.concat(this.registers.list);d.length>0&&(c+=", "+d.join(", "));var e=0;g(this.aliases).forEach(function(a){var d=b.aliases[a];d.children&&d.referenceCount>1&&(c+=", alias"+ ++e+"="+a,d.children[0]="alias"+e)}),this.lookupPropertyFunctionIsUsed&&(c+=", "+this.lookupPropertyFunctionVarDeclaration());var f=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&f.push("blockParams"),this.useDepths&&f.push("depths");var h=this.mergeSource(c);return a?(f.push(h),Function.apply(this,f)):this.source.wrap(["function(",f.join(","),") {\n ",h,"}"])},mergeSource:function(a){var b=this.environment.isSimple,c=!this.forceBuffer,d=void 0,e=void 0,f=void 0,g=void 0;return this.source.each(function(a){a.appendToBuffer?(f?a.prepend(" + "):f=a,g=a):(f&&(e?f.prepend("buffer += "):d=!0,g.add(";"),f=g=void 0),e=!0,b||(c=!1))}),c?f?(f.prepend("return "),g.add(";")):e||this.source.push('return "";'):(a+=", buffer = "+(d?"":this.initializeBuffer()),f?(f.prepend("return buffer + "),g.add(";")):this.source.push("return buffer;")),a&&this.source.prepend("var "+a.substring(2)+(d?"":";\n")),this.source.merge()},lookupPropertyFunctionVarDeclaration:function(){return"\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n ".trim()},blockValue:function(a){var b=this.aliasable("container.hooks.blockHelperMissing"),c=[this.contextName(0)];this.setupHelperArgs(a,0,c);var d=this.popStack();c.splice(1,0,d),this.push(this.source.functionCall(b,"call",c))},ambiguousBlockValue:function(){var a=this.aliasable("container.hooks.blockHelperMissing"),b=[this.contextName(0)];this.setupHelperArgs("",0,b,!0),this.flushInline();var c=this.topStack();b.splice(1,0,c),this.pushSource(["if (!",this.lastHelper,") { ",c," = ",this.source.functionCall(a,"call",b),"}"])},appendContent:function(a){this.pendingContent?a=this.pendingContent+a:this.pendingLocation=this.source.currentLocation,this.pendingContent=a},append:function(){if(this.isInline())this.replaceStack(function(a){return[" != null ? ",a,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var a=this.popStack();this.pushSource(["if (",a," != null) { ",this.appendToBuffer(a,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(a){this.lastContext=a},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(a,b,c,d){var e=0;d||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(a[e++])),this.resolvePath("context",a,e,b,c)},lookupBlockParam:function(a,b){this.useBlockParams=!0,this.push(["blockParams[",a[0],"][",a[1],"]"]),this.resolvePath("context",b,1)},lookupData:function(a,b,c){a?this.pushStackLiteral("container.data(data, "+a+")"):this.pushStackLiteral("data"),this.resolvePath("data",b,0,!0,c)},resolvePath:function(a,b,c,d,e){var g=this;if(this.options.strict||this.options.assumeObjects)return void this.push(f(this.options.strict&&e,this,b,a));for(var h=b.length;c<h;c++)this.replaceStack(function(e){var f=g.nameLookup(e,b[c],a);return d?[" && ",f]:[" != null ? ",f," : ",e]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(a,b){this.pushContext(),this.pushString(b),"SubExpression"!==b&&("string"==typeof a?this.pushString(a):this.pushStackLiteral(a))},emptyHash:function(a){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(a?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:{},types:[],contexts:[],ids:[]}},popHash:function(){var a=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(a.ids)),this.stringParams&&(this.push(this.objectLiteral(a.contexts)),this.push(this.objectLiteral(a.types))),this.push(this.objectLiteral(a.values))},pushString:function(a){this.pushStackLiteral(this.quotedString(a))},pushLiteral:function(a){this.pushStackLiteral(a)},pushProgram:function(a){null!=a?this.pushStackLiteral(this.programExpression(a)):this.pushStackLiteral(null)},registerDecorator:function(a,b){var c=this.nameLookup("decorators",b,"decorator"),d=this.setupHelperArgs(b,a);this.decorators.push(["fn = ",this.decorators.functionCall(c,"",["fn","props","container",d])," || fn;"])},invokeHelper:function(a,b,c){var d=this.popStack(),e=this.setupHelper(a,b),f=[];c&&f.push(e.name),f.push(d),this.options.strict||f.push(this.aliasable("container.hooks.helperMissing"));var g=["(",this.itemsSeparatedBy(f,"||"),")"],h=this.source.functionCall(g,"call",e.callParams);this.push(h)},itemsSeparatedBy:function(a,b){var c=[];c.push(a[0]);for(var d=1;d<a.length;d++)c.push(b,a[d]);return c},invokeKnownHelper:function(a,b){var c=this.setupHelper(a,b);this.push(this.source.functionCall(c.name,"call",c.callParams))},invokeAmbiguous:function(a,b){this.useRegister("helper");var c=this.popStack();this.emptyHash();var d=this.setupHelper(0,a,b),e=this.lastHelper=this.nameLookup("helpers",a,"helper"),f=["(","(helper = ",e," || ",c,")"];this.options.strict||(f[0]="(helper = ",f.push(" != null ? helper : ",this.aliasable("container.hooks.helperMissing"))),this.push(["(",f,d.paramsInit?["),(",d.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",d.callParams)," : helper))"])},invokePartial:function(a,b,c){var d=[],e=this.setupParams(b,1,d);a&&(b=this.popStack(),delete e.name),c&&(e.indent=JSON.stringify(c)),e.helpers="helpers",e.partials="partials",e.decorators="container.decorators",a?d.unshift(b):d.unshift(this.nameLookup("partials",b,"partial")),this.options.compat&&(e.depths="depths"),e=this.objectLiteral(e),d.push(e),this.push(this.source.functionCall("container.invokePartial","",d))},assignToHash:function(a){var b=this.popStack(),c=void 0,d=void 0,e=void 0;this.trackIds&&(e=this.popStack()),this.stringParams&&(d=this.popStack(),c=this.popStack());var f=this.hash;c&&(f.contexts[a]=c),d&&(f.types[a]=d),e&&(f.ids[a]=e),f.values[a]=b},pushId:function(a,b,c){"BlockParam"===a?this.pushStackLiteral("blockParams["+b[0]+"].path["+b[1]+"]"+(c?" + "+JSON.stringify("."+c):"")):"PathExpression"===a?this.pushString(b):"SubExpression"===a?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:e,compileChildren:function(a,b){for(var c=a.children,d=void 0,e=void 0,f=0,g=c.length;f<g;f++){d=c[f],e=new this.compiler;var h=this.matchExistingProgram(d);if(null==h){this.context.programs.push("");var i=this.context.programs.length;d.index=i,d.name="program"+i,this.context.programs[i]=e.compile(d,b,this.context,!this.precompile),this.context.decorators[i]=e.decorators,this.context.environments[i]=d,this.useDepths=this.useDepths||e.useDepths,this.useBlockParams=this.useBlockParams||e.useBlockParams,d.useDepths=this.useDepths,d.useBlockParams=this.useBlockParams}else d.index=h.index,d.name="program"+h.index,this.useDepths=this.useDepths||h.useDepths,this.useBlockParams=this.useBlockParams||h.useBlockParams}},matchExistingProgram:function(a){for(var b=0,c=this.context.environments.length;b<c;b++){var d=this.context.environments[b];if(d&&d.equals(a))return d}},programExpression:function(a){var b=this.environment.children[a],c=[b.index,"data",b.blockParams];return(this.useBlockParams||this.useDepths)&&c.push("blockParams"),this.useDepths&&c.push("depths"),"container.program("+c.join(", ")+")"},useRegister:function(a){this.registers[a]||(this.registers[a]=!0,this.registers.list.push(a))},push:function(a){return a instanceof d||(a=this.source.wrap(a)),this.inlineStack.push(a),a},pushStackLiteral:function(a){this.push(new d(a))},pushSource:function(a){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),a&&this.source.push(a)},replaceStack:function(a){var b=["("],c=void 0,e=void 0,f=void 0;if(!this.isInline())throw new k["default"]("replaceStack on non-inline");var g=this.popStack(!0);if(g instanceof d)c=[g.value],b=["(",c],f=!0;else{e=!0;var h=this.incrStack();b=["((",this.push(h)," = ",g,")"],c=this.topStack()}var i=a.call(this,c);f||this.popStack(),e&&this.stackSlot--,this.push(b.concat(i,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var a=this.inlineStack;this.inlineStack=[];for(var b=0,c=a.length;b<c;b++){var e=a[b];if(e instanceof d)this.compileStack.push(e);else{var f=this.incrStack();this.pushSource([f," = ",e,";"]),this.compileStack.push(f)}}},isInline:function(){return this.inlineStack.length},popStack:function(a){var b=this.isInline(),c=(b?this.inlineStack:this.compileStack).pop();if(!a&&c instanceof d)return c.value;if(!b){if(!this.stackSlot)throw new k["default"]("Invalid stack pop");this.stackSlot--}return c},topStack:function(){var a=this.isInline()?this.inlineStack:this.compileStack,b=a[a.length-1];return b instanceof d?b.value:b},contextName:function(a){return this.useDepths&&a?"depths["+a+"]":"depth"+a},quotedString:function(a){return this.source.quotedString(a)},objectLiteral:function(a){return this.source.objectLiteral(a)},aliasable:function(a){var b=this.aliases[a];return b?(b.referenceCount++,b):(b=this.aliases[a]=this.source.wrap(a),b.aliasable=!0,b.referenceCount=1,b)},setupHelper:function(a,b,c){var d=[],e=this.setupHelperArgs(b,a,d,c),f=this.nameLookup("helpers",b,"helper"),g=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : (container.nullContext || {})");return{params:d,paramsInit:e,name:f,callParams:[g].concat(d)}},setupParams:function(a,b,c){var d={},e=[],f=[],g=[],h=!c,i=void 0;h&&(c=[]),d.name=this.quotedString(a),d.hash=this.popStack(),this.trackIds&&(d.hashIds=this.popStack()),this.stringParams&&(d.hashTypes=this.popStack(),d.hashContexts=this.popStack());var j=this.popStack(),k=this.popStack();(k||j)&&(d.fn=k||"container.noop",d.inverse=j||"container.noop");for(var l=b;l--;)i=this.popStack(),c[l]=i,this.trackIds&&(g[l]=this.popStack()),this.stringParams&&(f[l]=this.popStack(),e[l]=this.popStack());return h&&(d.args=this.source.generateArray(c)),this.trackIds&&(d.ids=this.source.generateArray(g)),this.stringParams&&(d.types=this.source.generateArray(f),d.contexts=this.source.generateArray(e)),this.options.data&&(d.data="data"),this.useBlockParams&&(d.blockParams="blockParams"),d},setupHelperArgs:function(a,b,c,d){var e=this.setupParams(a,b,c);return e.loc=JSON.stringify(this.source.currentLocation),e=this.objectLiteral(e),d?(this.useRegister("options"),c.push("options"),["options=",e]):c?(c.push(e),""):e}},function(){for(var a="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),b=e.RESERVED_WORDS={},c=0,d=a.length;c<d;c++)b[a[c]]=!0}(),e.isValidJavaScriptVariableName=function(a){return!e.RESERVED_WORDS[a]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(a)},b["default"]=e,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b,c){if(g.isArray(a)){for(var d=[],e=0,f=a.length;e<f;e++)d.push(b.wrap(a[e],c));return d}return"boolean"==typeof a||"number"==typeof a?a+"":a}function e(a){this.srcFile=a,this.source=[]}var f=c(13)["default"];b.__esModule=!0;var g=c(5),h=void 0;try{}catch(i){}h||(h=function(a,b,c,d){this.src="",d&&this.add(d)},h.prototype={add:function(a){g.isArray(a)&&(a=a.join("")),this.src+=a},prepend:function(a){g.isArray(a)&&(a=a.join("")),this.src=a+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),e.prototype={isEmpty:function(){return!this.source.length},prepend:function(a,b){this.source.unshift(this.wrap(a,b))},push:function(a,b){this.source.push(this.wrap(a,b))},merge:function(){var a=this.empty();return this.each(function(b){a.add([" ",b,"\n"])}),a},each:function(a){for(var b=0,c=this.source.length;b<c;b++)a(this.source[b])},empty:function(){var a=this.currentLocation||{start:{}};return new h(a.start.line,a.start.column,this.srcFile)},wrap:function(a){var b=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return a instanceof h?a:(a=d(a,this,b),new h(b.start.line,b.start.column,this.srcFile,a))},functionCall:function(a,b,c){return c=this.generateList(c),this.wrap([a,b?"."+b+"(":"(",c,")"])},quotedString:function(a){return'"'+(a+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(a){var b=this,c=[];f(a).forEach(function(e){var f=d(a[e],b);"undefined"!==f&&c.push([b.quotedString(e),":",f])});var e=this.generateList(c);return e.prepend("{"),e.add("}"),e},generateList:function(a){for(var b=this.empty(),c=0,e=a.length;c<e;c++)c&&b.add(","),b.add(d(a[c],this));return b},generateArray:function(a){var b=this.generateList(a);return b.prepend("["),b.add("]"),b}},b["default"]=e,a.exports=b["default"]}])});
|
js/handlebars/handlebars.runtime.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
/**!
|
| 2 |
|
| 3 |
@license
|
| 4 |
-
handlebars v4.
|
| 5 |
|
| 6 |
-
Copyright (C) 2011-
|
| 7 |
|
| 8 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 9 |
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -95,7 +95,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 95 |
// Each of these augment the Handlebars object. No need to setup here.
|
| 96 |
// (This is done to easily share code between commonjs and browse envs)
|
| 97 |
|
| 98 |
-
var _handlebarsSafeString = __webpack_require__(
|
| 99 |
|
| 100 |
var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);
|
| 101 |
|
|
@@ -107,11 +107,11 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 107 |
|
| 108 |
var Utils = _interopRequireWildcard(_handlebarsUtils);
|
| 109 |
|
| 110 |
-
var _handlebarsRuntime = __webpack_require__(
|
| 111 |
|
| 112 |
var runtime = _interopRequireWildcard(_handlebarsRuntime);
|
| 113 |
|
| 114 |
-
var _handlebarsNoConflict = __webpack_require__(
|
| 115 |
|
| 116 |
var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
|
| 117 |
|
|
@@ -207,7 +207,9 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 207 |
|
| 208 |
var _logger2 = _interopRequireDefault(_logger);
|
| 209 |
|
| 210 |
-
var
|
|
|
|
|
|
|
| 211 |
exports.VERSION = VERSION;
|
| 212 |
var COMPILER_REVISION = 8;
|
| 213 |
exports.COMPILER_REVISION = COMPILER_REVISION;
|
|
@@ -283,6 +285,13 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 283 |
},
|
| 284 |
unregisterDecorator: function unregisterDecorator(name) {
|
| 285 |
delete this.decorators[name];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 286 |
}
|
| 287 |
};
|
| 288 |
|
|
@@ -306,7 +315,6 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 306 |
exports.createFrame = createFrame;
|
| 307 |
exports.blockParams = blockParams;
|
| 308 |
exports.appendContextPath = appendContextPath;
|
| 309 |
-
|
| 310 |
var escape = {
|
| 311 |
'&': '&',
|
| 312 |
'<': '<',
|
|
@@ -430,7 +438,6 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 430 |
var _Object$defineProperty = __webpack_require__(6)['default'];
|
| 431 |
|
| 432 |
exports.__esModule = true;
|
| 433 |
-
|
| 434 |
var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];
|
| 435 |
|
| 436 |
function Exception(message, node) {
|
|
@@ -978,7 +985,11 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 978 |
if (arguments.length != 2) {
|
| 979 |
throw new _exception2['default']('#unless requires exactly one argument');
|
| 980 |
}
|
| 981 |
-
return instance.helpers['if'].call(this, conditional, {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 982 |
});
|
| 983 |
};
|
| 984 |
|
|
@@ -1021,22 +1032,19 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1021 |
'use strict';
|
| 1022 |
|
| 1023 |
exports.__esModule = true;
|
| 1024 |
-
var dangerousPropertyRegex = /^(constructor|__defineGetter__|__defineSetter__|__lookupGetter__|__proto__)$/;
|
| 1025 |
-
|
| 1026 |
-
exports.dangerousPropertyRegex = dangerousPropertyRegex;
|
| 1027 |
|
| 1028 |
exports['default'] = function (instance) {
|
| 1029 |
-
instance.registerHelper('lookup', function (obj, field) {
|
| 1030 |
if (!obj) {
|
|
|
|
| 1031 |
return obj;
|
| 1032 |
}
|
| 1033 |
-
|
| 1034 |
-
return undefined;
|
| 1035 |
-
}
|
| 1036 |
-
return obj[field];
|
| 1037 |
});
|
| 1038 |
};
|
| 1039 |
|
|
|
|
|
|
|
| 1040 |
/***/ }),
|
| 1041 |
/* 28 */
|
| 1042 |
/***/ (function(module, exports, __webpack_require__) {
|
|
@@ -1169,8 +1177,8 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1169 |
|
| 1170 |
if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
|
| 1171 |
var method = logger.methodMap[level];
|
|
|
|
| 1172 |
if (!console[method]) {
|
| 1173 |
-
// eslint-disable-line no-console
|
| 1174 |
method = 'log';
|
| 1175 |
}
|
| 1176 |
|
|
@@ -1188,6 +1196,129 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1188 |
|
| 1189 |
/***/ }),
|
| 1190 |
/* 32 */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1191 |
/***/ (function(module, exports) {
|
| 1192 |
|
| 1193 |
// Build out our basic SafeString type
|
|
@@ -1206,12 +1337,14 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1206 |
module.exports = exports['default'];
|
| 1207 |
|
| 1208 |
/***/ }),
|
| 1209 |
-
/*
|
| 1210 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1211 |
|
| 1212 |
'use strict';
|
| 1213 |
|
| 1214 |
-
var _Object$seal = __webpack_require__(
|
|
|
|
|
|
|
| 1215 |
|
| 1216 |
var _interopRequireWildcard = __webpack_require__(1)['default'];
|
| 1217 |
|
|
@@ -1237,6 +1370,10 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1237 |
|
| 1238 |
var _helpers = __webpack_require__(9);
|
| 1239 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1240 |
function checkRevision(compilerInfo) {
|
| 1241 |
var compilerRevision = compilerInfo && compilerInfo[0] || 1,
|
| 1242 |
currentRevision = _base.COMPILER_REVISION;
|
|
@@ -1256,7 +1393,6 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1256 |
}
|
| 1257 |
|
| 1258 |
function template(templateSpec, env) {
|
| 1259 |
-
|
| 1260 |
/* istanbul ignore next */
|
| 1261 |
if (!env) {
|
| 1262 |
throw new _exception2['default']('No environment passed to template');
|
|
@@ -1283,13 +1419,16 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1283 |
}
|
| 1284 |
partial = env.VM.resolvePartial.call(this, partial, context, options);
|
| 1285 |
|
| 1286 |
-
var
|
|
|
|
|
|
|
|
|
|
| 1287 |
|
| 1288 |
-
var result = env.VM.invokePartial.call(this, partial, context,
|
| 1289 |
|
| 1290 |
if (result == null && env.compile) {
|
| 1291 |
options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
|
| 1292 |
-
result = options.partials[options.name](context,
|
| 1293 |
}
|
| 1294 |
if (result != null) {
|
| 1295 |
if (options.indent) {
|
|
@@ -1313,14 +1452,31 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1313 |
var container = {
|
| 1314 |
strict: function strict(obj, name, loc) {
|
| 1315 |
if (!obj || !(name in obj)) {
|
| 1316 |
-
throw new _exception2['default']('"' + name + '" not defined in ' + obj, {
|
|
|
|
|
|
|
| 1317 |
}
|
| 1318 |
return obj[name];
|
| 1319 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1320 |
lookup: function lookup(depths, name) {
|
| 1321 |
var len = depths.length;
|
| 1322 |
for (var i = 0; i < len; i++) {
|
| 1323 |
-
|
|
|
|
| 1324 |
return depths[i][name];
|
| 1325 |
}
|
| 1326 |
}
|
|
@@ -1356,6 +1512,15 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1356 |
}
|
| 1357 |
return value;
|
| 1358 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1359 |
// An empty object to use as replacement for null-contexts
|
| 1360 |
nullContext: _Object$seal({}),
|
| 1361 |
|
|
@@ -1385,28 +1550,35 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1385 |
function main(context /*, options*/) {
|
| 1386 |
return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);
|
| 1387 |
}
|
|
|
|
| 1388 |
main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);
|
| 1389 |
return main(context, options);
|
| 1390 |
}
|
|
|
|
| 1391 |
ret.isTop = true;
|
| 1392 |
|
| 1393 |
ret._setup = function (options) {
|
| 1394 |
if (!options.partial) {
|
| 1395 |
-
|
|
|
|
|
|
|
| 1396 |
|
| 1397 |
if (templateSpec.usePartial) {
|
| 1398 |
-
|
|
|
|
| 1399 |
}
|
| 1400 |
if (templateSpec.usePartial || templateSpec.useDecorators) {
|
| 1401 |
container.decorators = Utils.extend({}, env.decorators, options.decorators);
|
| 1402 |
}
|
| 1403 |
|
| 1404 |
container.hooks = {};
|
|
|
|
| 1405 |
|
| 1406 |
var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;
|
| 1407 |
_helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);
|
| 1408 |
_helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);
|
| 1409 |
} else {
|
|
|
|
| 1410 |
container.helpers = options.helpers;
|
| 1411 |
container.partials = options.partials;
|
| 1412 |
container.decorators = options.decorators;
|
|
@@ -1527,25 +1699,39 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1527 |
return prog;
|
| 1528 |
}
|
| 1529 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1530 |
/***/ }),
|
| 1531 |
-
/*
|
| 1532 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1533 |
|
| 1534 |
-
module.exports = { "default": __webpack_require__(
|
| 1535 |
|
| 1536 |
/***/ }),
|
| 1537 |
-
/*
|
| 1538 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1539 |
|
| 1540 |
-
__webpack_require__(
|
| 1541 |
module.exports = __webpack_require__(20).Object.seal;
|
| 1542 |
|
| 1543 |
/***/ }),
|
| 1544 |
-
/*
|
| 1545 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1546 |
|
| 1547 |
// 19.1.2.17 Object.seal(O)
|
| 1548 |
-
var isObject = __webpack_require__(
|
| 1549 |
|
| 1550 |
__webpack_require__(17)('seal', function($seal){
|
| 1551 |
return function seal(it){
|
|
@@ -1554,7 +1740,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1554 |
});
|
| 1555 |
|
| 1556 |
/***/ }),
|
| 1557 |
-
/*
|
| 1558 |
/***/ (function(module, exports) {
|
| 1559 |
|
| 1560 |
module.exports = function(it){
|
|
@@ -1562,12 +1748,34 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
| 1562 |
};
|
| 1563 |
|
| 1564 |
/***/ }),
|
| 1565 |
-
/*
|
| 1566 |
/***/ (function(module, exports) {
|
| 1567 |
|
| 1568 |
-
/* WEBPACK VAR INJECTION */(function(global) {/* global window */
|
| 1569 |
'use strict';
|
| 1570 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1571 |
exports.__esModule = true;
|
| 1572 |
|
| 1573 |
exports['default'] = function (Handlebars) {
|
| 1 |
/**!
|
| 2 |
|
| 3 |
@license
|
| 4 |
+
handlebars v4.7.3
|
| 5 |
|
| 6 |
+
Copyright (C) 2011-2019 by Yehuda Katz
|
| 7 |
|
| 8 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 9 |
of this software and associated documentation files (the "Software"), to deal
|
| 95 |
// Each of these augment the Handlebars object. No need to setup here.
|
| 96 |
// (This is done to easily share code between commonjs and browse envs)
|
| 97 |
|
| 98 |
+
var _handlebarsSafeString = __webpack_require__(36);
|
| 99 |
|
| 100 |
var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);
|
| 101 |
|
| 107 |
|
| 108 |
var Utils = _interopRequireWildcard(_handlebarsUtils);
|
| 109 |
|
| 110 |
+
var _handlebarsRuntime = __webpack_require__(37);
|
| 111 |
|
| 112 |
var runtime = _interopRequireWildcard(_handlebarsRuntime);
|
| 113 |
|
| 114 |
+
var _handlebarsNoConflict = __webpack_require__(43);
|
| 115 |
|
| 116 |
var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
|
| 117 |
|
| 207 |
|
| 208 |
var _logger2 = _interopRequireDefault(_logger);
|
| 209 |
|
| 210 |
+
var _internalProtoAccess = __webpack_require__(32);
|
| 211 |
+
|
| 212 |
+
var VERSION = '4.7.3';
|
| 213 |
exports.VERSION = VERSION;
|
| 214 |
var COMPILER_REVISION = 8;
|
| 215 |
exports.COMPILER_REVISION = COMPILER_REVISION;
|
| 285 |
},
|
| 286 |
unregisterDecorator: function unregisterDecorator(name) {
|
| 287 |
delete this.decorators[name];
|
| 288 |
+
},
|
| 289 |
+
/**
|
| 290 |
+
* Reset the memory of illegal property accesses that have already been logged.
|
| 291 |
+
* @deprecated should only be used in handlebars test-cases
|
| 292 |
+
*/
|
| 293 |
+
resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {
|
| 294 |
+
_internalProtoAccess.resetLoggedProperties();
|
| 295 |
}
|
| 296 |
};
|
| 297 |
|
| 315 |
exports.createFrame = createFrame;
|
| 316 |
exports.blockParams = blockParams;
|
| 317 |
exports.appendContextPath = appendContextPath;
|
|
|
|
| 318 |
var escape = {
|
| 319 |
'&': '&',
|
| 320 |
'<': '<',
|
| 438 |
var _Object$defineProperty = __webpack_require__(6)['default'];
|
| 439 |
|
| 440 |
exports.__esModule = true;
|
|
|
|
| 441 |
var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];
|
| 442 |
|
| 443 |
function Exception(message, node) {
|
| 985 |
if (arguments.length != 2) {
|
| 986 |
throw new _exception2['default']('#unless requires exactly one argument');
|
| 987 |
}
|
| 988 |
+
return instance.helpers['if'].call(this, conditional, {
|
| 989 |
+
fn: options.inverse,
|
| 990 |
+
inverse: options.fn,
|
| 991 |
+
hash: options.hash
|
| 992 |
+
});
|
| 993 |
});
|
| 994 |
};
|
| 995 |
|
| 1032 |
'use strict';
|
| 1033 |
|
| 1034 |
exports.__esModule = true;
|
|
|
|
|
|
|
|
|
|
| 1035 |
|
| 1036 |
exports['default'] = function (instance) {
|
| 1037 |
+
instance.registerHelper('lookup', function (obj, field, options) {
|
| 1038 |
if (!obj) {
|
| 1039 |
+
// Note for 5.0: Change to "obj == null" in 5.0
|
| 1040 |
return obj;
|
| 1041 |
}
|
| 1042 |
+
return options.lookupProperty(obj, field);
|
|
|
|
|
|
|
|
|
|
| 1043 |
});
|
| 1044 |
};
|
| 1045 |
|
| 1046 |
+
module.exports = exports['default'];
|
| 1047 |
+
|
| 1048 |
/***/ }),
|
| 1049 |
/* 28 */
|
| 1050 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1177 |
|
| 1178 |
if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
|
| 1179 |
var method = logger.methodMap[level];
|
| 1180 |
+
// eslint-disable-next-line no-console
|
| 1181 |
if (!console[method]) {
|
|
|
|
| 1182 |
method = 'log';
|
| 1183 |
}
|
| 1184 |
|
| 1196 |
|
| 1197 |
/***/ }),
|
| 1198 |
/* 32 */
|
| 1199 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1200 |
+
|
| 1201 |
+
'use strict';
|
| 1202 |
+
|
| 1203 |
+
var _Object$create = __webpack_require__(33)['default'];
|
| 1204 |
+
|
| 1205 |
+
var _Object$keys = __webpack_require__(12)['default'];
|
| 1206 |
+
|
| 1207 |
+
var _interopRequireWildcard = __webpack_require__(1)['default'];
|
| 1208 |
+
|
| 1209 |
+
exports.__esModule = true;
|
| 1210 |
+
exports.createProtoAccessControl = createProtoAccessControl;
|
| 1211 |
+
exports.resultIsAllowed = resultIsAllowed;
|
| 1212 |
+
exports.resetLoggedProperties = resetLoggedProperties;
|
| 1213 |
+
|
| 1214 |
+
var _createNewLookupObject = __webpack_require__(35);
|
| 1215 |
+
|
| 1216 |
+
var _logger = __webpack_require__(31);
|
| 1217 |
+
|
| 1218 |
+
var logger = _interopRequireWildcard(_logger);
|
| 1219 |
+
|
| 1220 |
+
var loggedProperties = _Object$create(null);
|
| 1221 |
+
|
| 1222 |
+
function createProtoAccessControl(runtimeOptions) {
|
| 1223 |
+
var defaultMethodWhiteList = _Object$create(null);
|
| 1224 |
+
defaultMethodWhiteList['constructor'] = false;
|
| 1225 |
+
defaultMethodWhiteList['__defineGetter__'] = false;
|
| 1226 |
+
defaultMethodWhiteList['__defineSetter__'] = false;
|
| 1227 |
+
defaultMethodWhiteList['__lookupGetter__'] = false;
|
| 1228 |
+
|
| 1229 |
+
var defaultPropertyWhiteList = _Object$create(null);
|
| 1230 |
+
// eslint-disable-next-line no-proto
|
| 1231 |
+
defaultPropertyWhiteList['__proto__'] = false;
|
| 1232 |
+
|
| 1233 |
+
return {
|
| 1234 |
+
properties: {
|
| 1235 |
+
whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),
|
| 1236 |
+
defaultValue: runtimeOptions.allowProtoPropertiesByDefault
|
| 1237 |
+
},
|
| 1238 |
+
methods: {
|
| 1239 |
+
whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),
|
| 1240 |
+
defaultValue: runtimeOptions.allowProtoMethodsByDefault
|
| 1241 |
+
}
|
| 1242 |
+
};
|
| 1243 |
+
}
|
| 1244 |
+
|
| 1245 |
+
function resultIsAllowed(result, protoAccessControl, propertyName) {
|
| 1246 |
+
if (typeof result === 'function') {
|
| 1247 |
+
return checkWhiteList(protoAccessControl.methods, propertyName);
|
| 1248 |
+
} else {
|
| 1249 |
+
return checkWhiteList(protoAccessControl.properties, propertyName);
|
| 1250 |
+
}
|
| 1251 |
+
}
|
| 1252 |
+
|
| 1253 |
+
function checkWhiteList(protoAccessControlForType, propertyName) {
|
| 1254 |
+
if (protoAccessControlForType.whitelist[propertyName] !== undefined) {
|
| 1255 |
+
return protoAccessControlForType.whitelist[propertyName] === true;
|
| 1256 |
+
}
|
| 1257 |
+
if (protoAccessControlForType.defaultValue !== undefined) {
|
| 1258 |
+
return protoAccessControlForType.defaultValue;
|
| 1259 |
+
}
|
| 1260 |
+
logUnexpecedPropertyAccessOnce(propertyName);
|
| 1261 |
+
return false;
|
| 1262 |
+
}
|
| 1263 |
+
|
| 1264 |
+
function logUnexpecedPropertyAccessOnce(propertyName) {
|
| 1265 |
+
if (loggedProperties[propertyName] !== true) {
|
| 1266 |
+
loggedProperties[propertyName] = true;
|
| 1267 |
+
logger.log('error', 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\n' + 'You can add a runtime option to disable the check or this warning:\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');
|
| 1268 |
+
}
|
| 1269 |
+
}
|
| 1270 |
+
|
| 1271 |
+
function resetLoggedProperties() {
|
| 1272 |
+
_Object$keys(loggedProperties).forEach(function (propertyName) {
|
| 1273 |
+
delete loggedProperties[propertyName];
|
| 1274 |
+
});
|
| 1275 |
+
}
|
| 1276 |
+
|
| 1277 |
+
/***/ }),
|
| 1278 |
+
/* 33 */
|
| 1279 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1280 |
+
|
| 1281 |
+
module.exports = { "default": __webpack_require__(34), __esModule: true };
|
| 1282 |
+
|
| 1283 |
+
/***/ }),
|
| 1284 |
+
/* 34 */
|
| 1285 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1286 |
+
|
| 1287 |
+
var $ = __webpack_require__(8);
|
| 1288 |
+
module.exports = function create(P, D){
|
| 1289 |
+
return $.create(P, D);
|
| 1290 |
+
};
|
| 1291 |
+
|
| 1292 |
+
/***/ }),
|
| 1293 |
+
/* 35 */
|
| 1294 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1295 |
+
|
| 1296 |
+
'use strict';
|
| 1297 |
+
|
| 1298 |
+
var _Object$create = __webpack_require__(33)['default'];
|
| 1299 |
+
|
| 1300 |
+
exports.__esModule = true;
|
| 1301 |
+
exports.createNewLookupObject = createNewLookupObject;
|
| 1302 |
+
|
| 1303 |
+
var _utils = __webpack_require__(4);
|
| 1304 |
+
|
| 1305 |
+
/**
|
| 1306 |
+
* Create a new object with "null"-prototype to avoid truthy results on prototype properties.
|
| 1307 |
+
* The resulting object can be used with "object[property]" to check if a property exists
|
| 1308 |
+
* @param {...object} sources a varargs parameter of source objects that will be merged
|
| 1309 |
+
* @returns {object}
|
| 1310 |
+
*/
|
| 1311 |
+
|
| 1312 |
+
function createNewLookupObject() {
|
| 1313 |
+
for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
|
| 1314 |
+
sources[_key] = arguments[_key];
|
| 1315 |
+
}
|
| 1316 |
+
|
| 1317 |
+
return _utils.extend.apply(undefined, [_Object$create(null)].concat(sources));
|
| 1318 |
+
}
|
| 1319 |
+
|
| 1320 |
+
/***/ }),
|
| 1321 |
+
/* 36 */
|
| 1322 |
/***/ (function(module, exports) {
|
| 1323 |
|
| 1324 |
// Build out our basic SafeString type
|
| 1337 |
module.exports = exports['default'];
|
| 1338 |
|
| 1339 |
/***/ }),
|
| 1340 |
+
/* 37 */
|
| 1341 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1342 |
|
| 1343 |
'use strict';
|
| 1344 |
|
| 1345 |
+
var _Object$seal = __webpack_require__(38)['default'];
|
| 1346 |
+
|
| 1347 |
+
var _Object$keys = __webpack_require__(12)['default'];
|
| 1348 |
|
| 1349 |
var _interopRequireWildcard = __webpack_require__(1)['default'];
|
| 1350 |
|
| 1370 |
|
| 1371 |
var _helpers = __webpack_require__(9);
|
| 1372 |
|
| 1373 |
+
var _internalWrapHelper = __webpack_require__(42);
|
| 1374 |
+
|
| 1375 |
+
var _internalProtoAccess = __webpack_require__(32);
|
| 1376 |
+
|
| 1377 |
function checkRevision(compilerInfo) {
|
| 1378 |
var compilerRevision = compilerInfo && compilerInfo[0] || 1,
|
| 1379 |
currentRevision = _base.COMPILER_REVISION;
|
| 1393 |
}
|
| 1394 |
|
| 1395 |
function template(templateSpec, env) {
|
|
|
|
| 1396 |
/* istanbul ignore next */
|
| 1397 |
if (!env) {
|
| 1398 |
throw new _exception2['default']('No environment passed to template');
|
| 1419 |
}
|
| 1420 |
partial = env.VM.resolvePartial.call(this, partial, context, options);
|
| 1421 |
|
| 1422 |
+
var extendedOptions = Utils.extend({}, options, {
|
| 1423 |
+
hooks: this.hooks,
|
| 1424 |
+
protoAccessControl: this.protoAccessControl
|
| 1425 |
+
});
|
| 1426 |
|
| 1427 |
+
var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);
|
| 1428 |
|
| 1429 |
if (result == null && env.compile) {
|
| 1430 |
options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
|
| 1431 |
+
result = options.partials[options.name](context, extendedOptions);
|
| 1432 |
}
|
| 1433 |
if (result != null) {
|
| 1434 |
if (options.indent) {
|
| 1452 |
var container = {
|
| 1453 |
strict: function strict(obj, name, loc) {
|
| 1454 |
if (!obj || !(name in obj)) {
|
| 1455 |
+
throw new _exception2['default']('"' + name + '" not defined in ' + obj, {
|
| 1456 |
+
loc: loc
|
| 1457 |
+
});
|
| 1458 |
}
|
| 1459 |
return obj[name];
|
| 1460 |
},
|
| 1461 |
+
lookupProperty: function lookupProperty(parent, propertyName) {
|
| 1462 |
+
var result = parent[propertyName];
|
| 1463 |
+
if (result == null) {
|
| 1464 |
+
return result;
|
| 1465 |
+
}
|
| 1466 |
+
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
| 1467 |
+
return result;
|
| 1468 |
+
}
|
| 1469 |
+
|
| 1470 |
+
if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {
|
| 1471 |
+
return result;
|
| 1472 |
+
}
|
| 1473 |
+
return undefined;
|
| 1474 |
+
},
|
| 1475 |
lookup: function lookup(depths, name) {
|
| 1476 |
var len = depths.length;
|
| 1477 |
for (var i = 0; i < len; i++) {
|
| 1478 |
+
var result = depths[i] && container.lookupProperty(depths[i], name);
|
| 1479 |
+
if (result != null) {
|
| 1480 |
return depths[i][name];
|
| 1481 |
}
|
| 1482 |
}
|
| 1512 |
}
|
| 1513 |
return value;
|
| 1514 |
},
|
| 1515 |
+
mergeIfNeeded: function mergeIfNeeded(param, common) {
|
| 1516 |
+
var obj = param || common;
|
| 1517 |
+
|
| 1518 |
+
if (param && common && param !== common) {
|
| 1519 |
+
obj = Utils.extend({}, common, param);
|
| 1520 |
+
}
|
| 1521 |
+
|
| 1522 |
+
return obj;
|
| 1523 |
+
},
|
| 1524 |
// An empty object to use as replacement for null-contexts
|
| 1525 |
nullContext: _Object$seal({}),
|
| 1526 |
|
| 1550 |
function main(context /*, options*/) {
|
| 1551 |
return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);
|
| 1552 |
}
|
| 1553 |
+
|
| 1554 |
main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);
|
| 1555 |
return main(context, options);
|
| 1556 |
}
|
| 1557 |
+
|
| 1558 |
ret.isTop = true;
|
| 1559 |
|
| 1560 |
ret._setup = function (options) {
|
| 1561 |
if (!options.partial) {
|
| 1562 |
+
var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);
|
| 1563 |
+
wrapHelpersToPassLookupProperty(mergedHelpers, container);
|
| 1564 |
+
container.helpers = mergedHelpers;
|
| 1565 |
|
| 1566 |
if (templateSpec.usePartial) {
|
| 1567 |
+
// Use mergeIfNeeded here to prevent compiling global partials multiple times
|
| 1568 |
+
container.partials = container.mergeIfNeeded(options.partials, env.partials);
|
| 1569 |
}
|
| 1570 |
if (templateSpec.usePartial || templateSpec.useDecorators) {
|
| 1571 |
container.decorators = Utils.extend({}, env.decorators, options.decorators);
|
| 1572 |
}
|
| 1573 |
|
| 1574 |
container.hooks = {};
|
| 1575 |
+
container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);
|
| 1576 |
|
| 1577 |
var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;
|
| 1578 |
_helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);
|
| 1579 |
_helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);
|
| 1580 |
} else {
|
| 1581 |
+
container.protoAccessControl = options.protoAccessControl; // internal option
|
| 1582 |
container.helpers = options.helpers;
|
| 1583 |
container.partials = options.partials;
|
| 1584 |
container.decorators = options.decorators;
|
| 1699 |
return prog;
|
| 1700 |
}
|
| 1701 |
|
| 1702 |
+
function wrapHelpersToPassLookupProperty(mergedHelpers, container) {
|
| 1703 |
+
_Object$keys(mergedHelpers).forEach(function (helperName) {
|
| 1704 |
+
var helper = mergedHelpers[helperName];
|
| 1705 |
+
mergedHelpers[helperName] = passLookupPropertyOption(helper, container);
|
| 1706 |
+
});
|
| 1707 |
+
}
|
| 1708 |
+
|
| 1709 |
+
function passLookupPropertyOption(helper, container) {
|
| 1710 |
+
var lookupProperty = container.lookupProperty;
|
| 1711 |
+
return _internalWrapHelper.wrapHelper(helper, function (options) {
|
| 1712 |
+
return Utils.extend({ lookupProperty: lookupProperty }, options);
|
| 1713 |
+
});
|
| 1714 |
+
}
|
| 1715 |
+
|
| 1716 |
/***/ }),
|
| 1717 |
+
/* 38 */
|
| 1718 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1719 |
|
| 1720 |
+
module.exports = { "default": __webpack_require__(39), __esModule: true };
|
| 1721 |
|
| 1722 |
/***/ }),
|
| 1723 |
+
/* 39 */
|
| 1724 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1725 |
|
| 1726 |
+
__webpack_require__(40);
|
| 1727 |
module.exports = __webpack_require__(20).Object.seal;
|
| 1728 |
|
| 1729 |
/***/ }),
|
| 1730 |
+
/* 40 */
|
| 1731 |
/***/ (function(module, exports, __webpack_require__) {
|
| 1732 |
|
| 1733 |
// 19.1.2.17 Object.seal(O)
|
| 1734 |
+
var isObject = __webpack_require__(41);
|
| 1735 |
|
| 1736 |
__webpack_require__(17)('seal', function($seal){
|
| 1737 |
return function seal(it){
|
| 1740 |
});
|
| 1741 |
|
| 1742 |
/***/ }),
|
| 1743 |
+
/* 41 */
|
| 1744 |
/***/ (function(module, exports) {
|
| 1745 |
|
| 1746 |
module.exports = function(it){
|
| 1748 |
};
|
| 1749 |
|
| 1750 |
/***/ }),
|
| 1751 |
+
/* 42 */
|
| 1752 |
/***/ (function(module, exports) {
|
| 1753 |
|
|
|
|
| 1754 |
'use strict';
|
| 1755 |
|
| 1756 |
+
exports.__esModule = true;
|
| 1757 |
+
exports.wrapHelper = wrapHelper;
|
| 1758 |
+
|
| 1759 |
+
function wrapHelper(helper, transformOptionsFn) {
|
| 1760 |
+
if (typeof helper !== 'function') {
|
| 1761 |
+
// This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639
|
| 1762 |
+
// We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.
|
| 1763 |
+
return helper;
|
| 1764 |
+
}
|
| 1765 |
+
var wrapper = function wrapper() /* dynamic arguments */{
|
| 1766 |
+
var options = arguments[arguments.length - 1];
|
| 1767 |
+
arguments[arguments.length - 1] = transformOptionsFn(options);
|
| 1768 |
+
return helper.apply(this, arguments);
|
| 1769 |
+
};
|
| 1770 |
+
return wrapper;
|
| 1771 |
+
}
|
| 1772 |
+
|
| 1773 |
+
/***/ }),
|
| 1774 |
+
/* 43 */
|
| 1775 |
+
/***/ (function(module, exports) {
|
| 1776 |
+
|
| 1777 |
+
/* WEBPACK VAR INJECTION */(function(global) {'use strict';
|
| 1778 |
+
|
| 1779 |
exports.__esModule = true;
|
| 1780 |
|
| 1781 |
exports['default'] = function (Handlebars) {
|
js/handlebars/handlebars.runtime.min.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
/**!
|
| 2 |
|
| 3 |
@license
|
| 4 |
-
handlebars v4.
|
| 5 |
|
| 6 |
-
Copyright (C) 2011-
|
| 7 |
|
| 8 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 9 |
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -24,4 +24,4 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
| 24 |
THE SOFTWARE.
|
| 25 |
|
| 26 |
*/
|
| 27 |
-
!function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?exports.Handlebars=b():a.Handlebars=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){"use strict";function d(){var a=new h.HandlebarsEnvironment;return n.extend(a,h),a.SafeString=j["default"],a.Exception=l["default"],a.Utils=n,a.escapeExpression=n.escapeExpression,a.VM=p,a.template=function(b){return p.template(b,a)},a}var e=c(1)["default"],f=c(2)["default"];b.__esModule=!0;var g=c(3),h=e(g),i=c(32),j=f(i),k=c(5),l=f(k),m=c(4),n=e(m),o=c(33),p=e(o),q=c(38),r=f(q),s=d();s.create=d,r["default"](s),s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b},b.__esModule=!0},function(a,b){"use strict";b["default"]=function(a){return a&&a.__esModule?a:{"default":a}},b.__esModule=!0},function(a,b,c){"use strict";function d(a,b,c){this.helpers=a||{},this.partials=b||{},this.decorators=c||{},i.registerDefaultHelpers(this),j.registerDefaultDecorators(this)}var e=c(2)["default"];b.__esModule=!0,b.HandlebarsEnvironment=d;var f=c(4),g=c(5),h=e(g),i=c(9),j=c(29),k=c(31),l=e(k),m="4.5.3";b.VERSION=m;var n=8;b.COMPILER_REVISION=n;var o=7;b.LAST_COMPATIBLE_COMPILER_REVISION=o;var p={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};b.REVISION_CHANGES=p;var q="[object Object]";d.prototype={constructor:d,logger:l["default"],log:l["default"].log,registerHelper:function(a,b){if(f.toString.call(a)===q){if(b)throw new h["default"]("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){if(f.toString.call(a)===q)f.extend(this.partials,a);else{if("undefined"==typeof b)throw new h["default"]('Attempting to register a partial called "'+a+'" as undefined');this.partials[a]=b}},unregisterPartial:function(a){delete this.partials[a]},registerDecorator:function(a,b){if(f.toString.call(a)===q){if(b)throw new h["default"]("Arg not supported with multiple decorators");f.extend(this.decorators,a)}else this.decorators[a]=b},unregisterDecorator:function(a){delete this.decorators[a]}};var r=l["default"].log;b.log=r,b.createFrame=f.createFrame,b.logger=l["default"]},function(a,b){"use strict";function c(a){return k[a]}function d(a){for(var b=1;b<arguments.length;b++)for(var c in arguments[b])Object.prototype.hasOwnProperty.call(arguments[b],c)&&(a[c]=arguments[b][c]);return a}function e(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1}function f(a){if("string"!=typeof a){if(a&&a.toHTML)return a.toHTML();if(null==a)return"";if(!a)return a+"";a=""+a}return m.test(a)?a.replace(l,c):a}function g(a){return!a&&0!==a||!(!p(a)||0!==a.length)}function h(a){var b=d({},a);return b._parent=a,b}function i(a,b){return a.path=b,a}function j(a,b){return(a?a+".":"")+b}b.__esModule=!0,b.extend=d,b.indexOf=e,b.escapeExpression=f,b.isEmpty=g,b.createFrame=h,b.blockParams=i,b.appendContextPath=j;var k={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},l=/[&<>"'`=]/g,m=/[&<>"'`=]/,n=Object.prototype.toString;b.toString=n;var o=function(a){return"function"==typeof a};o(/x/)&&(b.isFunction=o=function(a){return"function"==typeof a&&"[object Function]"===n.call(a)}),b.isFunction=o;var p=Array.isArray||function(a){return!(!a||"object"!=typeof a)&&"[object Array]"===n.call(a)};b.isArray=p},function(a,b,c){"use strict";function d(a,b){var c=b&&b.loc,g=void 0,h=void 0,i=void 0,j=void 0;c&&(g=c.start.line,h=c.end.line,i=c.start.column,j=c.end.column,a+=" - "+g+":"+i);for(var k=Error.prototype.constructor.call(this,a),l=0;l<f.length;l++)this[f[l]]=k[f[l]];Error.captureStackTrace&&Error.captureStackTrace(this,d);try{c&&(this.lineNumber=g,this.endLineNumber=h,e?(Object.defineProperty(this,"column",{value:i,enumerable:!0}),Object.defineProperty(this,"endColumn",{value:j,enumerable:!0})):(this.column=i,this.endColumn=j))}catch(m){}}var e=c(6)["default"];b.__esModule=!0;var f=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];d.prototype=new Error,b["default"]=d,a.exports=b["default"]},function(a,b,c){a.exports={"default":c(7),__esModule:!0}},function(a,b,c){var d=c(8);a.exports=function(a,b,c){return d.setDesc(a,b,c)}},function(a,b){var c=Object;a.exports={create:c.create,getProto:c.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:c.getOwnPropertyDescriptor,setDesc:c.defineProperty,setDescs:c.defineProperties,getKeys:c.keys,getNames:c.getOwnPropertyNames,getSymbols:c.getOwnPropertySymbols,each:[].forEach}},function(a,b,c){"use strict";function d(a){h["default"](a),j["default"](a),l["default"](a),n["default"](a),p["default"](a),r["default"](a),t["default"](a)}function e(a,b,c){a.helpers[b]&&(a.hooks[b]=a.helpers[b],c||delete a.helpers[b])}var f=c(2)["default"];b.__esModule=!0,b.registerDefaultHelpers=d,b.moveHelperToHooks=e;var g=c(10),h=f(g),i=c(11),j=f(i),k=c(24),l=f(k),m=c(25),n=f(m),o=c(26),p=f(o),q=c(27),r=f(q),s=c(28),t=f(s)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(4);b["default"]=function(a){a.registerHelper("blockHelperMissing",function(b,c){var e=c.inverse,f=c.fn;if(b===!0)return f(this);if(b===!1||null==b)return e(this);if(d.isArray(b))return b.length>0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):e(this);if(c.data&&c.ids){var g=d.createFrame(c.data);g.contextPath=d.appendContextPath(c.data.contextPath,c.name),c={data:g}}return f(b,c)})},a.exports=b["default"]},function(a,b,c){(function(d){"use strict";var e=c(12)["default"],f=c(2)["default"];b.__esModule=!0;var g=c(4),h=c(5),i=f(h);b["default"]=function(a){a.registerHelper("each",function(a,b){function c(b,c,d){l&&(l.key=b,l.index=c,l.first=0===c,l.last=!!d,m&&(l.contextPath=m+b)),k+=f(a[b],{data:l,blockParams:g.blockParams([a[b],b],[m+b,null])})}if(!b)throw new i["default"]("Must pass iterator to #each");var f=b.fn,h=b.inverse,j=0,k="",l=void 0,m=void 0;if(b.data&&b.ids&&(m=g.appendContextPath(b.data.contextPath,b.ids[0])+"."),g.isFunction(a)&&(a=a.call(this)),b.data&&(l=g.createFrame(b.data)),a&&"object"==typeof a)if(g.isArray(a))for(var n=a.length;j<n;j++)j in a&&c(j,j,j===a.length-1);else if(d.Symbol&&a[d.Symbol.iterator]){for(var o=[],p=a[d.Symbol.iterator](),q=p.next();!q.done;q=p.next())o.push(q.value);a=o;for(var n=a.length;j<n;j++)c(j,j,j===a.length-1)}else!function(){var b=void 0;e(a).forEach(function(a){void 0!==b&&c(b,j-1),b=a,j++}),void 0!==b&&c(b,j-1,!0)}();return 0===j&&(k=h(this)),k})},a.exports=b["default"]}).call(b,function(){return this}())},function(a,b,c){a.exports={"default":c(13),__esModule:!0}},function(a,b,c){c(14),a.exports=c(20).Object.keys},function(a,b,c){var d=c(15);c(17)("keys",function(a){return function(b){return a(d(b))}})},function(a,b,c){var d=c(16);a.exports=function(a){return Object(d(a))}},function(a,b){a.exports=function(a){if(void 0==a)throw TypeError("Can't call method on "+a);return a}},function(a,b,c){var d=c(18),e=c(20),f=c(23);a.exports=function(a,b){var c=(e.Object||{})[a]||Object[a],g={};g[a]=b(c),d(d.S+d.F*f(function(){c(1)}),"Object",g)}},function(a,b,c){var d=c(19),e=c(20),f=c(21),g="prototype",h=function(a,b,c){var i,j,k,l=a&h.F,m=a&h.G,n=a&h.S,o=a&h.P,p=a&h.B,q=a&h.W,r=m?e:e[b]||(e[b]={}),s=m?d:n?d[b]:(d[b]||{})[g];m&&(c=b);for(i in c)j=!l&&s&&i in s,j&&i in r||(k=j?s[i]:c[i],r[i]=m&&"function"!=typeof s[i]?c[i]:p&&j?f(k,d):q&&s[i]==k?function(a){var b=function(b){return this instanceof a?new a(b):a(b)};return b[g]=a[g],b}(k):o&&"function"==typeof k?f(Function.call,k):k,o&&((r[g]||(r[g]={}))[i]=k))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,a.exports=h},function(a,b){var c=a.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=c)},function(a,b){var c=a.exports={version:"1.2.6"};"number"==typeof __e&&(__e=c)},function(a,b,c){var d=c(22);a.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(a,b){a.exports=function(a){try{return!!a()}catch(b){return!0}}},function(a,b,c){"use strict";var d=c(2)["default"];b.__esModule=!0;var e=c(5),f=d(e);b["default"]=function(a){a.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new f["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(2)["default"];b.__esModule=!0;var e=c(4),f=c(5),g=d(f);b["default"]=function(a){a.registerHelper("if",function(a,b){if(2!=arguments.length)throw new g["default"]("#if requires exactly one argument");return e.isFunction(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||e.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){if(2!=arguments.length)throw new g["default"]("#unless requires exactly one argument");return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("log",function(){for(var b=[void 0],c=arguments[arguments.length-1],d=0;d<arguments.length-1;d++)b.push(arguments[d]);var e=1;null!=c.hash.level?e=c.hash.level:c.data&&null!=c.data.level&&(e=c.data.level),b[0]=e,a.log.apply(a,b)})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0;var c=/^(constructor|__defineGetter__|__defineSetter__|__lookupGetter__|__proto__)$/;b.dangerousPropertyRegex=c,b["default"]=function(a){a.registerHelper("lookup",function(a,b){if(!a)return a;if(!c.test(String(b))||Object.prototype.propertyIsEnumerable.call(a,b))return a[b]})}},function(a,b,c){"use strict";var d=c(2)["default"];b.__esModule=!0;var e=c(4),f=c(5),g=d(f);b["default"]=function(a){a.registerHelper("with",function(a,b){if(2!=arguments.length)throw new g["default"]("#with requires exactly one argument");e.isFunction(a)&&(a=a.call(this));var c=b.fn;if(e.isEmpty(a))return b.inverse(this);var d=b.data;return b.data&&b.ids&&(d=e.createFrame(b.data),d.contextPath=e.appendContextPath(b.data.contextPath,b.ids[0])),c(a,{data:d,blockParams:e.blockParams([a],[d&&d.contextPath])})})},a.exports=b["default"]},function(a,b,c){"use strict";function d(a){g["default"](a)}var e=c(2)["default"];b.__esModule=!0,b.registerDefaultDecorators=d;var f=c(30),g=e(f)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(4);b["default"]=function(a){a.registerDecorator("inline",function(a,b,c,e){var f=a;return b.partials||(b.partials={},f=function(e,f){var g=c.partials;c.partials=d.extend({},g,b.partials);var h=a(e,f);return c.partials=g,h}),b.partials[e.args[0]]=e.fn,f})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(4),e={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(a){if("string"==typeof a){var b=d.indexOf(e.methodMap,a.toLowerCase());a=b>=0?b:parseInt(a,10)}return a},log:function(a){if(a=e.lookupLevel(a),"undefined"!=typeof console&&e.lookupLevel(e.level)<=a){var b=e.methodMap[a];console[b]||(b="log");for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;f<c;f++)d[f-1]=arguments[f];console[b].apply(console,d)}}};b["default"]=e,a.exports=b["default"]},function(a,b){"use strict";function c(a){this.string=a}b.__esModule=!0,c.prototype.toString=c.prototype.toHTML=function(){return""+this.string},b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=s.COMPILER_REVISION;if(!(b>=s.LAST_COMPATIBLE_COMPILER_REVISION&&b<=s.COMPILER_REVISION)){if(b<s.LAST_COMPATIBLE_COMPILER_REVISION){var d=s.REVISION_CHANGES[c],e=s.REVISION_CHANGES[b];throw new r["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new r["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){function c(c,d,e){e.hash&&(d=p.extend({},d,e.hash),e.ids&&(e.ids[0]=!0)),c=b.VM.resolvePartial.call(this,c,d,e);var f=p.extend({},e,{hooks:this.hooks}),g=b.VM.invokePartial.call(this,c,d,f);if(null==g&&b.compile&&(e.partials[e.name]=b.compile(c,a.compilerOptions,b),g=e.partials[e.name](d,f)),null!=g){if(e.indent){for(var h=g.split("\n"),i=0,j=h.length;i<j&&(h[i]||i+1!==j);i++)h[i]=e.indent+h[i];g=h.join("\n")}return g}throw new r["default"]("The partial "+e.name+" could not be compiled when running in runtime-only mode")}function d(b){function c(b){return""+a.main(g,b,g.helpers,g.partials,f,i,h)}var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],f=e.data;d._setup(e),!e.partial&&a.useData&&(f=j(b,f));var h=void 0,i=a.useBlockParams?[]:void 0;return a.useDepths&&(h=e.depths?b!=e.depths[0]?[b].concat(e.depths):e.depths:[b]),(c=k(a.main,c,g,e.depths||[],f,i))(b,e)}if(!b)throw new r["default"]("No environment passed to template");if(!a||!a.main)throw new r["default"]("Unknown template object: "+typeof a);a.main.decorator=a.main_d,b.VM.checkRevision(a.compiler);var e=a.compiler&&7===a.compiler[0],g={strict:function(a,b,c){if(!(a&&b in a))throw new r["default"]('"'+b+'" not defined in '+a,{loc:c});return a[b]},lookup:function(a,b){for(var c=a.length,d=0;d<c;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:p.escapeExpression,invokePartial:c,fn:function(b){var c=a[b];return c.decorator=a[b+"_d"],c},programs:[],program:function(a,b,c,d,e){var g=this.programs[a],h=this.fn(a);return b||e||d||c?g=f(this,a,h,b,c,d,e):g||(g=this.programs[a]=f(this,a,h)),g},data:function(a,b){for(;a&&b--;)a=a._parent;return a},nullContext:l({}),noop:b.VM.noop,compilerInfo:a.compiler};return d.isTop=!0,d._setup=function(c){if(c.partial)g.helpers=c.helpers,g.partials=c.partials,g.decorators=c.decorators,g.hooks=c.hooks;else{g.helpers=p.extend({},b.helpers,c.helpers),a.usePartial&&(g.partials=p.extend({},b.partials,c.partials)),(a.usePartial||a.useDecorators)&&(g.decorators=p.extend({},b.decorators,c.decorators)),g.hooks={};var d=c.allowCallsToHelperMissing||e;t.moveHelperToHooks(g,"helperMissing",d),t.moveHelperToHooks(g,"blockHelperMissing",d)}},d._child=function(b,c,d,e){if(a.useBlockParams&&!d)throw new r["default"]("must pass block params");if(a.useDepths&&!e)throw new r["default"]("must pass parent depths");return f(g,b,a[b],c,0,d,e)},d}function f(a,b,c,d,e,f,g){function h(b){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],h=g;return!g||b==g[0]||b===a.nullContext&&null===g[0]||(h=[b].concat(g)),c(a,b,a.helpers,a.partials,e.data||d,f&&[e.blockParams].concat(f),h)}return h=k(c,h,a,g,d,f),h.program=b,h.depth=g?g.length:0,h.blockParams=e||0,h}function g(a,b,c){return a?a.call||c.name||(c.name=a,a=c.partials[a]):a="@partial-block"===c.name?c.data["partial-block"]:c.partials[c.name],a}function h(a,b,c){var d=c.data&&c.data["partial-block"];c.partial=!0,c.ids&&(c.data.contextPath=c.ids[0]||c.data.contextPath);var e=void 0;if(c.fn&&c.fn!==i&&!function(){c.data=s.createFrame(c.data);var a=c.fn;e=c.data["partial-block"]=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return c.data=s.createFrame(c.data),c.data["partial-block"]=d,a(b,c)},a.partials&&(c.partials=p.extend({},c.partials,a.partials))}(),void 0===a&&e&&(a=e),void 0===a)throw new r["default"]("The partial "+c.name+" could not be found");if(a instanceof Function)return a(b,c)}function i(){return""}function j(a,b){return b&&"root"in b||(b=b?s.createFrame(b):{},b.root=a),b}function k(a,b,c,d,e,f){if(a.decorator){var g={};b=a.decorator(b,g,c,d&&d[0],e,f,d),p.extend(b,g)}return b}var l=c(34)["default"],m=c(1)["default"],n=c(2)["default"];b.__esModule=!0,b.checkRevision=d,b.template=e,b.wrapProgram=f,b.resolvePartial=g,b.invokePartial=h,b.noop=i;var o=c(4),p=m(o),q=c(5),r=n(q),s=c(3),t=c(9)},function(a,b,c){a.exports={"default":c(35),__esModule:!0}},function(a,b,c){c(36),a.exports=c(20).Object.seal},function(a,b,c){var d=c(37);c(17)("seal",function(a){return function(b){return a&&d(b)?a(b):b}})},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(a,b){(function(c){"use strict";b.__esModule=!0,b["default"]=function(a){var b="undefined"!=typeof c?c:window,d=b.Handlebars;a.noConflict=function(){return b.Handlebars===a&&(b.Handlebars=d),a}},a.exports=b["default"]}).call(b,function(){return this}())}])});
|
| 1 |
/**!
|
| 2 |
|
| 3 |
@license
|
| 4 |
+
handlebars v4.7.3
|
| 5 |
|
| 6 |
+
Copyright (C) 2011-2019 by Yehuda Katz
|
| 7 |
|
| 8 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 9 |
of this software and associated documentation files (the "Software"), to deal
|
| 24 |
THE SOFTWARE.
|
| 25 |
|
| 26 |
*/
|
| 27 |
+
!function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?exports.Handlebars=b():a.Handlebars=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){"use strict";function d(){var a=new h.HandlebarsEnvironment;return n.extend(a,h),a.SafeString=j["default"],a.Exception=l["default"],a.Utils=n,a.escapeExpression=n.escapeExpression,a.VM=p,a.template=function(b){return p.template(b,a)},a}var e=c(1)["default"],f=c(2)["default"];b.__esModule=!0;var g=c(3),h=e(g),i=c(36),j=f(i),k=c(5),l=f(k),m=c(4),n=e(m),o=c(37),p=e(o),q=c(43),r=f(q),s=d();s.create=d,r["default"](s),s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b},b.__esModule=!0},function(a,b){"use strict";b["default"]=function(a){return a&&a.__esModule?a:{"default":a}},b.__esModule=!0},function(a,b,c){"use strict";function d(a,b,c){this.helpers=a||{},this.partials=b||{},this.decorators=c||{},i.registerDefaultHelpers(this),j.registerDefaultDecorators(this)}var e=c(2)["default"];b.__esModule=!0,b.HandlebarsEnvironment=d;var f=c(4),g=c(5),h=e(g),i=c(9),j=c(29),k=c(31),l=e(k),m=c(32),n="4.7.3";b.VERSION=n;var o=8;b.COMPILER_REVISION=o;var p=7;b.LAST_COMPATIBLE_COMPILER_REVISION=p;var q={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};b.REVISION_CHANGES=q;var r="[object Object]";d.prototype={constructor:d,logger:l["default"],log:l["default"].log,registerHelper:function(a,b){if(f.toString.call(a)===r){if(b)throw new h["default"]("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){if(f.toString.call(a)===r)f.extend(this.partials,a);else{if("undefined"==typeof b)throw new h["default"]('Attempting to register a partial called "'+a+'" as undefined');this.partials[a]=b}},unregisterPartial:function(a){delete this.partials[a]},registerDecorator:function(a,b){if(f.toString.call(a)===r){if(b)throw new h["default"]("Arg not supported with multiple decorators");f.extend(this.decorators,a)}else this.decorators[a]=b},unregisterDecorator:function(a){delete this.decorators[a]},resetLoggedPropertyAccesses:function(){m.resetLoggedProperties()}};var s=l["default"].log;b.log=s,b.createFrame=f.createFrame,b.logger=l["default"]},function(a,b){"use strict";function c(a){return k[a]}function d(a){for(var b=1;b<arguments.length;b++)for(var c in arguments[b])Object.prototype.hasOwnProperty.call(arguments[b],c)&&(a[c]=arguments[b][c]);return a}function e(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1}function f(a){if("string"!=typeof a){if(a&&a.toHTML)return a.toHTML();if(null==a)return"";if(!a)return a+"";a=""+a}return m.test(a)?a.replace(l,c):a}function g(a){return!a&&0!==a||!(!p(a)||0!==a.length)}function h(a){var b=d({},a);return b._parent=a,b}function i(a,b){return a.path=b,a}function j(a,b){return(a?a+".":"")+b}b.__esModule=!0,b.extend=d,b.indexOf=e,b.escapeExpression=f,b.isEmpty=g,b.createFrame=h,b.blockParams=i,b.appendContextPath=j;var k={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},l=/[&<>"'`=]/g,m=/[&<>"'`=]/,n=Object.prototype.toString;b.toString=n;var o=function(a){return"function"==typeof a};o(/x/)&&(b.isFunction=o=function(a){return"function"==typeof a&&"[object Function]"===n.call(a)}),b.isFunction=o;var p=Array.isArray||function(a){return!(!a||"object"!=typeof a)&&"[object Array]"===n.call(a)};b.isArray=p},function(a,b,c){"use strict";function d(a,b){var c=b&&b.loc,g=void 0,h=void 0,i=void 0,j=void 0;c&&(g=c.start.line,h=c.end.line,i=c.start.column,j=c.end.column,a+=" - "+g+":"+i);for(var k=Error.prototype.constructor.call(this,a),l=0;l<f.length;l++)this[f[l]]=k[f[l]];Error.captureStackTrace&&Error.captureStackTrace(this,d);try{c&&(this.lineNumber=g,this.endLineNumber=h,e?(Object.defineProperty(this,"column",{value:i,enumerable:!0}),Object.defineProperty(this,"endColumn",{value:j,enumerable:!0})):(this.column=i,this.endColumn=j))}catch(m){}}var e=c(6)["default"];b.__esModule=!0;var f=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];d.prototype=new Error,b["default"]=d,a.exports=b["default"]},function(a,b,c){a.exports={"default":c(7),__esModule:!0}},function(a,b,c){var d=c(8);a.exports=function(a,b,c){return d.setDesc(a,b,c)}},function(a,b){var c=Object;a.exports={create:c.create,getProto:c.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:c.getOwnPropertyDescriptor,setDesc:c.defineProperty,setDescs:c.defineProperties,getKeys:c.keys,getNames:c.getOwnPropertyNames,getSymbols:c.getOwnPropertySymbols,each:[].forEach}},function(a,b,c){"use strict";function d(a){h["default"](a),j["default"](a),l["default"](a),n["default"](a),p["default"](a),r["default"](a),t["default"](a)}function e(a,b,c){a.helpers[b]&&(a.hooks[b]=a.helpers[b],c||delete a.helpers[b])}var f=c(2)["default"];b.__esModule=!0,b.registerDefaultHelpers=d,b.moveHelperToHooks=e;var g=c(10),h=f(g),i=c(11),j=f(i),k=c(24),l=f(k),m=c(25),n=f(m),o=c(26),p=f(o),q=c(27),r=f(q),s=c(28),t=f(s)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(4);b["default"]=function(a){a.registerHelper("blockHelperMissing",function(b,c){var e=c.inverse,f=c.fn;if(b===!0)return f(this);if(b===!1||null==b)return e(this);if(d.isArray(b))return b.length>0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):e(this);if(c.data&&c.ids){var g=d.createFrame(c.data);g.contextPath=d.appendContextPath(c.data.contextPath,c.name),c={data:g}}return f(b,c)})},a.exports=b["default"]},function(a,b,c){(function(d){"use strict";var e=c(12)["default"],f=c(2)["default"];b.__esModule=!0;var g=c(4),h=c(5),i=f(h);b["default"]=function(a){a.registerHelper("each",function(a,b){function c(b,c,d){l&&(l.key=b,l.index=c,l.first=0===c,l.last=!!d,m&&(l.contextPath=m+b)),k+=f(a[b],{data:l,blockParams:g.blockParams([a[b],b],[m+b,null])})}if(!b)throw new i["default"]("Must pass iterator to #each");var f=b.fn,h=b.inverse,j=0,k="",l=void 0,m=void 0;if(b.data&&b.ids&&(m=g.appendContextPath(b.data.contextPath,b.ids[0])+"."),g.isFunction(a)&&(a=a.call(this)),b.data&&(l=g.createFrame(b.data)),a&&"object"==typeof a)if(g.isArray(a))for(var n=a.length;j<n;j++)j in a&&c(j,j,j===a.length-1);else if(d.Symbol&&a[d.Symbol.iterator]){for(var o=[],p=a[d.Symbol.iterator](),q=p.next();!q.done;q=p.next())o.push(q.value);a=o;for(var n=a.length;j<n;j++)c(j,j,j===a.length-1)}else!function(){var b=void 0;e(a).forEach(function(a){void 0!==b&&c(b,j-1),b=a,j++}),void 0!==b&&c(b,j-1,!0)}();return 0===j&&(k=h(this)),k})},a.exports=b["default"]}).call(b,function(){return this}())},function(a,b,c){a.exports={"default":c(13),__esModule:!0}},function(a,b,c){c(14),a.exports=c(20).Object.keys},function(a,b,c){var d=c(15);c(17)("keys",function(a){return function(b){return a(d(b))}})},function(a,b,c){var d=c(16);a.exports=function(a){return Object(d(a))}},function(a,b){a.exports=function(a){if(void 0==a)throw TypeError("Can't call method on "+a);return a}},function(a,b,c){var d=c(18),e=c(20),f=c(23);a.exports=function(a,b){var c=(e.Object||{})[a]||Object[a],g={};g[a]=b(c),d(d.S+d.F*f(function(){c(1)}),"Object",g)}},function(a,b,c){var d=c(19),e=c(20),f=c(21),g="prototype",h=function(a,b,c){var i,j,k,l=a&h.F,m=a&h.G,n=a&h.S,o=a&h.P,p=a&h.B,q=a&h.W,r=m?e:e[b]||(e[b]={}),s=m?d:n?d[b]:(d[b]||{})[g];m&&(c=b);for(i in c)j=!l&&s&&i in s,j&&i in r||(k=j?s[i]:c[i],r[i]=m&&"function"!=typeof s[i]?c[i]:p&&j?f(k,d):q&&s[i]==k?function(a){var b=function(b){return this instanceof a?new a(b):a(b)};return b[g]=a[g],b}(k):o&&"function"==typeof k?f(Function.call,k):k,o&&((r[g]||(r[g]={}))[i]=k))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,a.exports=h},function(a,b){var c=a.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=c)},function(a,b){var c=a.exports={version:"1.2.6"};"number"==typeof __e&&(__e=c)},function(a,b,c){var d=c(22);a.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(a,b){a.exports=function(a){try{return!!a()}catch(b){return!0}}},function(a,b,c){"use strict";var d=c(2)["default"];b.__esModule=!0;var e=c(5),f=d(e);b["default"]=function(a){a.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new f["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(2)["default"];b.__esModule=!0;var e=c(4),f=c(5),g=d(f);b["default"]=function(a){a.registerHelper("if",function(a,b){if(2!=arguments.length)throw new g["default"]("#if requires exactly one argument");return e.isFunction(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||e.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){if(2!=arguments.length)throw new g["default"]("#unless requires exactly one argument");return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("log",function(){for(var b=[void 0],c=arguments[arguments.length-1],d=0;d<arguments.length-1;d++)b.push(arguments[d]);var e=1;null!=c.hash.level?e=c.hash.level:c.data&&null!=c.data.level&&(e=c.data.level),b[0]=e,a.log.apply(a,b)})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("lookup",function(a,b,c){return a?c.lookupProperty(a,b):a})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(2)["default"];b.__esModule=!0;var e=c(4),f=c(5),g=d(f);b["default"]=function(a){a.registerHelper("with",function(a,b){if(2!=arguments.length)throw new g["default"]("#with requires exactly one argument");e.isFunction(a)&&(a=a.call(this));var c=b.fn;if(e.isEmpty(a))return b.inverse(this);var d=b.data;return b.data&&b.ids&&(d=e.createFrame(b.data),d.contextPath=e.appendContextPath(b.data.contextPath,b.ids[0])),c(a,{data:d,blockParams:e.blockParams([a],[d&&d.contextPath])})})},a.exports=b["default"]},function(a,b,c){"use strict";function d(a){g["default"](a)}var e=c(2)["default"];b.__esModule=!0,b.registerDefaultDecorators=d;var f=c(30),g=e(f)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(4);b["default"]=function(a){a.registerDecorator("inline",function(a,b,c,e){var f=a;return b.partials||(b.partials={},f=function(e,f){var g=c.partials;c.partials=d.extend({},g,b.partials);var h=a(e,f);return c.partials=g,h}),b.partials[e.args[0]]=e.fn,f})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(4),e={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(a){if("string"==typeof a){var b=d.indexOf(e.methodMap,a.toLowerCase());a=b>=0?b:parseInt(a,10)}return a},log:function(a){if(a=e.lookupLevel(a),"undefined"!=typeof console&&e.lookupLevel(e.level)<=a){var b=e.methodMap[a];console[b]||(b="log");for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;f<c;f++)d[f-1]=arguments[f];console[b].apply(console,d)}}};b["default"]=e,a.exports=b["default"]},function(a,b,c){"use strict";function d(a){var b=i(null);b.constructor=!1,b.__defineGetter__=!1,b.__defineSetter__=!1,b.__lookupGetter__=!1;var c=i(null);return c.__proto__=!1,{properties:{whitelist:l.createNewLookupObject(c,a.allowedProtoProperties),defaultValue:a.allowProtoPropertiesByDefault},methods:{whitelist:l.createNewLookupObject(b,a.allowedProtoMethods),defaultValue:a.allowProtoMethodsByDefault}}}function e(a,b,c){return"function"==typeof a?f(b.methods,c):f(b.properties,c)}function f(a,b){return void 0!==a.whitelist[b]?a.whitelist[b]===!0:void 0!==a.defaultValue?a.defaultValue:(g(b),!1)}function g(a){o[a]!==!0&&(o[a]=!0,n.log("error",'Handlebars: Access has been denied to resolve the property "'+a+'" because it is not an "own property" of its parent.\nYou can add a runtime option to disable the check or this warning:\nSee https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'))}function h(){j(o).forEach(function(a){delete o[a]})}var i=c(33)["default"],j=c(12)["default"],k=c(1)["default"];b.__esModule=!0,b.createProtoAccessControl=d,b.resultIsAllowed=e,b.resetLoggedProperties=h;var l=c(35),m=c(31),n=k(m),o=i(null)},function(a,b,c){a.exports={"default":c(34),__esModule:!0}},function(a,b,c){var d=c(8);a.exports=function(a,b){return d.create(a,b)}},function(a,b,c){"use strict";function d(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return f.extend.apply(void 0,[e(null)].concat(b))}var e=c(33)["default"];b.__esModule=!0,b.createNewLookupObject=d;var f=c(4)},function(a,b){"use strict";function c(a){this.string=a}b.__esModule=!0,c.prototype.toString=c.prototype.toHTML=function(){return""+this.string},b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=v.COMPILER_REVISION;if(!(b>=v.LAST_COMPATIBLE_COMPILER_REVISION&&b<=v.COMPILER_REVISION)){if(b<v.LAST_COMPATIBLE_COMPILER_REVISION){var d=v.REVISION_CHANGES[c],e=v.REVISION_CHANGES[b];throw new u["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new u["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){function c(c,d,e){e.hash&&(d=s.extend({},d,e.hash),e.ids&&(e.ids[0]=!0)),c=b.VM.resolvePartial.call(this,c,d,e);var f=s.extend({},e,{hooks:this.hooks,protoAccessControl:this.protoAccessControl}),g=b.VM.invokePartial.call(this,c,d,f);if(null==g&&b.compile&&(e.partials[e.name]=b.compile(c,a.compilerOptions,b),g=e.partials[e.name](d,f)),null!=g){if(e.indent){for(var h=g.split("\n"),i=0,j=h.length;i<j&&(h[i]||i+1!==j);i++)h[i]=e.indent+h[i];g=h.join("\n")}return g}throw new u["default"]("The partial "+e.name+" could not be compiled when running in runtime-only mode")}function d(b){function c(b){return""+a.main(g,b,g.helpers,g.partials,f,i,h)}var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],f=e.data;d._setup(e),!e.partial&&a.useData&&(f=j(b,f));var h=void 0,i=a.useBlockParams?[]:void 0;return a.useDepths&&(h=e.depths?b!=e.depths[0]?[b].concat(e.depths):e.depths:[b]),(c=k(a.main,c,g,e.depths||[],f,i))(b,e)}if(!b)throw new u["default"]("No environment passed to template");if(!a||!a.main)throw new u["default"]("Unknown template object: "+typeof a);a.main.decorator=a.main_d,b.VM.checkRevision(a.compiler);var e=a.compiler&&7===a.compiler[0],g={strict:function(a,b,c){if(!(a&&b in a))throw new u["default"]('"'+b+'" not defined in '+a,{loc:c});return a[b]},lookupProperty:function(a,b){var c=a[b];return null==c?c:Object.prototype.hasOwnProperty.call(a,b)?c:y.resultIsAllowed(c,g.protoAccessControl,b)?c:void 0},lookup:function(a,b){for(var c=a.length,d=0;d<c;d++){var e=a[d]&&g.lookupProperty(a[d],b);if(null!=e)return a[d][b]}},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:s.escapeExpression,invokePartial:c,fn:function(b){var c=a[b];return c.decorator=a[b+"_d"],c},programs:[],program:function(a,b,c,d,e){var g=this.programs[a],h=this.fn(a);return b||e||d||c?g=f(this,a,h,b,c,d,e):g||(g=this.programs[a]=f(this,a,h)),g},data:function(a,b){for(;a&&b--;)a=a._parent;return a},mergeIfNeeded:function(a,b){var c=a||b;return a&&b&&a!==b&&(c=s.extend({},b,a)),c},nullContext:n({}),noop:b.VM.noop,compilerInfo:a.compiler};return d.isTop=!0,d._setup=function(c){if(c.partial)g.protoAccessControl=c.protoAccessControl,g.helpers=c.helpers,g.partials=c.partials,g.decorators=c.decorators,g.hooks=c.hooks;else{var d=s.extend({},b.helpers,c.helpers);l(d,g),g.helpers=d,a.usePartial&&(g.partials=g.mergeIfNeeded(c.partials,b.partials)),(a.usePartial||a.useDecorators)&&(g.decorators=s.extend({},b.decorators,c.decorators)),g.hooks={},g.protoAccessControl=y.createProtoAccessControl(c);var f=c.allowCallsToHelperMissing||e;w.moveHelperToHooks(g,"helperMissing",f),w.moveHelperToHooks(g,"blockHelperMissing",f)}},d._child=function(b,c,d,e){if(a.useBlockParams&&!d)throw new u["default"]("must pass block params");if(a.useDepths&&!e)throw new u["default"]("must pass parent depths");return f(g,b,a[b],c,0,d,e)},d}function f(a,b,c,d,e,f,g){function h(b){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],h=g;return!g||b==g[0]||b===a.nullContext&&null===g[0]||(h=[b].concat(g)),c(a,b,a.helpers,a.partials,e.data||d,f&&[e.blockParams].concat(f),h)}return h=k(c,h,a,g,d,f),h.program=b,h.depth=g?g.length:0,h.blockParams=e||0,h}function g(a,b,c){return a?a.call||c.name||(c.name=a,a=c.partials[a]):a="@partial-block"===c.name?c.data["partial-block"]:c.partials[c.name],a}function h(a,b,c){var d=c.data&&c.data["partial-block"];c.partial=!0,c.ids&&(c.data.contextPath=c.ids[0]||c.data.contextPath);var e=void 0;if(c.fn&&c.fn!==i&&!function(){c.data=v.createFrame(c.data);var a=c.fn;e=c.data["partial-block"]=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return c.data=v.createFrame(c.data),c.data["partial-block"]=d,a(b,c)},a.partials&&(c.partials=s.extend({},c.partials,a.partials))}(),void 0===a&&e&&(a=e),void 0===a)throw new u["default"]("The partial "+c.name+" could not be found");if(a instanceof Function)return a(b,c)}function i(){return""}function j(a,b){return b&&"root"in b||(b=b?v.createFrame(b):{},b.root=a),b}function k(a,b,c,d,e,f){if(a.decorator){var g={};b=a.decorator(b,g,c,d&&d[0],e,f,d),s.extend(b,g)}return b}function l(a,b){o(a).forEach(function(c){var d=a[c];a[c]=m(d,b)})}function m(a,b){var c=b.lookupProperty;return x.wrapHelper(a,function(a){return s.extend({lookupProperty:c},a)})}var n=c(38)["default"],o=c(12)["default"],p=c(1)["default"],q=c(2)["default"];b.__esModule=!0,b.checkRevision=d,b.template=e,b.wrapProgram=f,b.resolvePartial=g,b.invokePartial=h,b.noop=i;var r=c(4),s=p(r),t=c(5),u=q(t),v=c(3),w=c(9),x=c(42),y=c(32)},function(a,b,c){a.exports={"default":c(39),__esModule:!0}},function(a,b,c){c(40),a.exports=c(20).Object.seal},function(a,b,c){var d=c(41);c(17)("seal",function(a){return function(b){return a&&d(b)?a(b):b}})},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(a,b){"use strict";function c(a,b){if("function"!=typeof a)return a;var c=function(){var c=arguments[arguments.length-1];return arguments[arguments.length-1]=b(c),a.apply(this,arguments)};return c}b.__esModule=!0,b.wrapHelper=c},function(a,b){(function(c){"use strict";b.__esModule=!0,b["default"]=function(a){var b="undefined"!=typeof c?c:window,d=b.Handlebars;a.noConflict=function(){return b.Handlebars===a&&(b.Handlebars=d),a}},a.exports=b["default"]}).call(b,function(){return this}())}])});
|
js/loadAsync-3-0-18.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
function loadAsync(e,t){var a,n=!1;a=document.createElement("script"),a.type="text/javascript",a.src=e,a.onreadystatechange=function(){n||this.readyState&&"complete"!=this.readyState||(n=!0,"function"==typeof t&&t())},a.onload=a.onreadystatechange,document.getElementsByTagName("head")[0].appendChild(a)}
|
js/loadAsync.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
* This function will work cross-browser for loading scripts asynchronously
|
| 3 |
+
*/
|
| 4 |
+
function loadAsync(src, callback) {
|
| 5 |
+
var scriptTag,
|
| 6 |
+
ready = false;
|
| 7 |
+
|
| 8 |
+
scriptTag = document.createElement('script');
|
| 9 |
+
scriptTag.type = 'text/javascript';
|
| 10 |
+
scriptTag.src = src;
|
| 11 |
+
scriptTag.onreadystatechange = function() {
|
| 12 |
+
// console.log( this.readyState ); //uncomment this line to see which ready states are called.
|
| 13 |
+
if (!ready
|
| 14 |
+
&& (!this.readyState || this.readyState == 'complete')
|
| 15 |
+
) {
|
| 16 |
+
ready = true;
|
| 17 |
+
typeof callback === 'function' && callback();
|
| 18 |
+
}
|
| 19 |
+
};
|
| 20 |
+
scriptTag.onload = scriptTag.onreadystatechange
|
| 21 |
+
|
| 22 |
+
document.getElementsByTagName("head")[0].appendChild(scriptTag)
|
| 23 |
+
}
|
js/loadCSS-3-0-18.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
!function(e){"use strict";var t=function(t,n,o,r){function i(e){return l.body?e():void setTimeout(function(){i(e)})}function d(){s.addEventListener&&s.removeEventListener("load",d),s.media=o||"all"}var a,l=e.document,s=l.createElement("link");if(n)a=n;else{var f=(l.body||l.getElementsByTagName("head")[0]).childNodes;a=f[f.length-1]}var u=l.styleSheets;if(r)for(var c in r)r.hasOwnProperty(c)&&s.setAttribute(c,r[c]);s.rel="stylesheet",s.href=t,s.media="only x",i(function(){a.parentNode.insertBefore(s,n?a:a.nextSibling)});var v=function(e){for(var t=s.href,n=u.length;n--;)if(u[n].href===t)return e();setTimeout(function(){v(e)})};return s.addEventListener&&s.addEventListener("load",d),s.onloadcssdefined=v,v(d),s};"undefined"!=typeof exports?exports.loadCSS=t:e.loadCSS=t}("undefined"!=typeof global?global:this);
|
js/loadCSS.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// phpcs:disable
|
| 2 |
+
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
|
| 3 |
+
(function(w){
|
| 4 |
+
"use strict";
|
| 5 |
+
/* exported loadCSS */
|
| 6 |
+
var loadCSS = function( href, before, media, attributes ){
|
| 7 |
+
// Arguments explained:
|
| 8 |
+
// `href` [REQUIRED] is the URL for your CSS file.
|
| 9 |
+
// `before` [OPTIONAL] is the element the script should use as a reference for injecting our stylesheet <link> before
|
| 10 |
+
// By default, loadCSS attempts to inject the link after the last stylesheet or script in the DOM. However, you might desire a more specific location in your document.
|
| 11 |
+
// `media` [OPTIONAL] is the media type or query of the stylesheet. By default it will be 'all'
|
| 12 |
+
// `attributes` [OPTIONAL] is the Object of attribute name/attribute value pairs to set on the stylesheet's DOM Element.
|
| 13 |
+
var doc = w.document;
|
| 14 |
+
var ss = doc.createElement( "link" );
|
| 15 |
+
var ref;
|
| 16 |
+
if( before ){
|
| 17 |
+
ref = before;
|
| 18 |
+
}
|
| 19 |
+
else {
|
| 20 |
+
var refs = ( doc.body || doc.getElementsByTagName( "head" )[ 0 ] ).childNodes;
|
| 21 |
+
ref = refs[ refs.length - 1];
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
var sheets = doc.styleSheets;
|
| 25 |
+
// Set any of the provided attributes to the stylesheet DOM Element.
|
| 26 |
+
if( attributes ){
|
| 27 |
+
for( var attributeName in attributes ){
|
| 28 |
+
if( attributes.hasOwnProperty( attributeName ) ){
|
| 29 |
+
ss.setAttribute( attributeName, attributes[attributeName] );
|
| 30 |
+
}
|
| 31 |
+
}
|
| 32 |
+
}
|
| 33 |
+
ss.rel = "stylesheet";
|
| 34 |
+
ss.href = href;
|
| 35 |
+
// temporarily set media to something inapplicable to ensure it'll fetch without blocking render
|
| 36 |
+
ss.media = "only x";
|
| 37 |
+
|
| 38 |
+
// wait until body is defined before injecting link. This ensures a non-blocking load in IE11.
|
| 39 |
+
function ready( cb ){
|
| 40 |
+
if( doc.body ){
|
| 41 |
+
return cb();
|
| 42 |
+
}
|
| 43 |
+
setTimeout(function(){
|
| 44 |
+
ready( cb );
|
| 45 |
+
});
|
| 46 |
+
}
|
| 47 |
+
// Inject link
|
| 48 |
+
// Note: the ternary preserves the existing behavior of "before" argument, but we could choose to change the argument to "after" in a later release and standardize on ref.nextSibling for all refs
|
| 49 |
+
// Note: `insertBefore` is used instead of `appendChild`, for safety re: http://www.paulirish.com/2011/surefire-dom-element-insertion/
|
| 50 |
+
ready( function(){
|
| 51 |
+
ref.parentNode.insertBefore( ss, ( before ? ref : ref.nextSibling ) );
|
| 52 |
+
});
|
| 53 |
+
// A method (exposed on return object for external use) that mimics onload by polling document.styleSheets until it includes the new sheet.
|
| 54 |
+
var onloadcssdefined = function( cb ){
|
| 55 |
+
var resolvedHref = ss.href;
|
| 56 |
+
var i = sheets.length;
|
| 57 |
+
while( i-- ){
|
| 58 |
+
if( sheets[ i ].href === resolvedHref ){
|
| 59 |
+
return cb();
|
| 60 |
+
}
|
| 61 |
+
}
|
| 62 |
+
setTimeout(function() {
|
| 63 |
+
onloadcssdefined( cb );
|
| 64 |
+
});
|
| 65 |
+
};
|
| 66 |
+
|
| 67 |
+
function loadCB(){
|
| 68 |
+
if( ss.addEventListener ){
|
| 69 |
+
ss.removeEventListener( "load", loadCB );
|
| 70 |
+
}
|
| 71 |
+
ss.media = media || "all";
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
// once loaded, set link's media back to `all` so that the stylesheet applies once it loads
|
| 75 |
+
if( ss.addEventListener ){
|
| 76 |
+
ss.addEventListener( "load", loadCB);
|
| 77 |
+
}
|
| 78 |
+
ss.onloadcssdefined = onloadcssdefined;
|
| 79 |
+
onloadcssdefined( loadCB );
|
| 80 |
+
return ss;
|
| 81 |
+
};
|
| 82 |
+
// commonjs
|
| 83 |
+
if( typeof exports !== "undefined" ){
|
| 84 |
+
exports.loadCSS = loadCSS;
|
| 85 |
+
}
|
| 86 |
+
else {
|
| 87 |
+
w.loadCSS = loadCSS;
|
| 88 |
+
}
|
| 89 |
+
}( typeof global !== "undefined" ? global : this ));
|
js/minify-3-0-18.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
!function(e){var i=window.wp_optimize||{},t=i.send_command,n=wpoptimize.refresh_frequency||6e3;if(!t)return void console.error("WP-Optimize Minify: wp_optimize.send_command is required.");var s={};s.init=function(){var i=this;return this.enabled=!1,e(document).on("wp-optimize/minify/toggle-status",function(t,n){n.hasOwnProperty("enabled")&&(e('[data-whichpage="wpo_minify"]').toggleClass("is-enabled",n.enabled),i.enabled=n.enabled,i.enabled&&i.getFiles())}),e(".purge_minify_cache").click(function(){e.blockUI(),t("purge_minify_cache",null,function(e){console.log(e)}).always(function(){e.unblockUI()})}),e(".purge_all_minify_cache").click(function(){e.blockUI(),t("purge_all_minify_cache",null,function(e){console.log(e)}).always(function(){e.unblockUI()})}),e(".minify_increment_cache").click(function(){e.blockUI(),t("minify_increment_cache",null,function(e){console.log(e)}).always(function(){e.unblockUI()})}),e("input[type=checkbox].wpo-save-setting").on("change",function(i){var n=e(this),s=n.prop("checked"),o=n.prop("name"),c={};c[o]=s,e.blockUI(),t("save_minify_settings",c,function(e){e.success?n.trigger("wp-optimize/minify/saved_setting"):console.log("Settings not saved",c)}).always(function(){e.unblockUI()})}),e("#wpo_min_enable_minify").on("wp-optimize/minify/saved_setting",function(){this.enabled=e(this).prop("checked"),e(document).trigger("wp-optimize/minify/toggle-status",{enabled:this.enabled})}),e("#wpo_min_enable_minify, #wpo_min_enable_minify_css, #wpo_min_enable_minify_js, #wpo_min_enable_minify_html").on("wp-optimize/minify/saved_setting",function(){e(this).closest(".wpo_section").toggleClass("wpo-feature-is-disabled",!e(this).is(":checked"))}),e("#wpo_min_enable_minify_debug").on("wp-optimize/minify/saved_setting",function(){e.blockUI({message:"<h1>"+wpoptimize.page_refresh+"</h1>"}),location.href=e("#wp-optimize-nav-tab-wpo_minify-advanced").prop("href")}),e("#wpo_min_edit_default_exclutions").on("wp-optimize/minify/saved_setting",function(){e(".wpo-minify-default-exclusions").toggleClass("hidden",!e(this).prop("checked"))}),e(".wp-optimize-save-minify-settings").click(function(i){i.preventDefault();var n=e(this),s=n.closest("form"),o=n.next(),c=o.next();o.show(),e.blockUI();var l=e(s).serializeArray().reduce(function(e,i){return e[i.name]=i.value,e},{});e(s).find('input[type="checkbox"]').each(function(i){var t=e(this).attr("name");l[t]=e(this).is(":checked")?"true":"false"}),t("save_minify_settings",l,function(i){i.hasOwnProperty("error")?(console.log(i.error),e(".wpo-error__enabling-cache").removeClass("wpo_hidden").find("p").text(i.error.message)):e(".wpo-error__enabling-cache").addClass("wpo_hidden").find("p").text(""),o.hide(),c.show(),setTimeout(function(){c.fadeOut("slow",function(){c.hide()})},5e3)}).always(function(){e.unblockUI()})}),e(".wp-optimize-minify-status-information-notice").on("click",".notice-dismiss",function(e){e.preventDefault(),t("hide_minify_notice")}),e("#wpo_min_jsprocessed, #wpo_min_cssprocessed").on("click",".log",function(i){i.preventDefault(),e(this).nextAll(".wpo_min_log").slideToggle("fast")}),this.enabled=e("#wpo_min_enable_minify").prop("checked"),e(document).trigger("wp-optimize/minify/toggle-status",{enabled:this.enabled}),this},s.getFiles=function(){if(this.enabled){var i={stamp:(new Date).getTime()};t("get_minify_cached_files",i,function(i){i.cachesize.length>0&&(e("#wpo_min_cache_size").html(i.cachesize),e("#wpo_min_cache_time").html(i.cacheTime),e("#wpo_min_cache_path").html(i.cachePath));var t=[];i.js.length>0&&e(i.js).each(function(){t.push(this.uid),0==e("#"+this.uid).length&&e("#wpo_min_jsprocessed ul.processed").append('\t\t\t\t\t\t<li id="'+this.uid+'">\t\t\t\t\t\t\t<span class="filename">'+this.filename+" ("+this.fsize+')</span>\t\t\t\t\t\t\t<a href="#" class="log">'+wpoptimize.toggle_info+'</a>\t\t\t\t\t\t\t<div class="hidden wpo_min_log">'+this.log+"</div>\t\t\t\t\t\t</li>\t\t\t\t\t")}),e("#wpo_min_jsprocessed ul.processed .no-files-yet").toggle(!i.js.length),i.css.length>0&&e(i.css).each(function(){t.push(this.uid),0==e("#"+this.uid).length&&e("#wpo_min_cssprocessed ul.processed").append('\t\t\t\t\t\t<li id="'+this.uid+'">\t\t\t\t\t\t\t<span class="filename">'+this.filename+" ("+this.fsize+')</span>\t\t\t\t\t\t\t<a href="#" class="log">'+wpoptimize.toggle_info+'</a>\t\t\t\t\t\t\t<div class="hidden wpo_min_log">'+this.log+"</div>\t\t\t\t\t\t</li>\t\t\t\t\t")}),e("#wpo_min_cssprocessed ul.processed .no-files-yet").toggle(!i.css.length),e("#wpo_min_jsprocessed ul.processed > li, #wpo_min_cssprocessed ul.processed > li").each(function(){-1==jQuery.inArray(e(this).attr("id"),t)&&(e(this).is(".no-files-yet")||e(this).remove())})}),n&&setTimeout(s.getFiles.bind(this),n)}},i.minify=s}(jQuery);
|
js/minify-admin-purge-3-0-18.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
jQuery(document).ready(function(e){e("#wp-admin-bar-purge_minify_cache").click(function(n){n.preventDefault(),wp_optimize.send_command("purge_minify_cache",null,function(e){console.log(e),e.hasOwnProperty("error")&&alert(e.error),e.hasOwnProperty("message")&&alert(e.notice)}).always(function(){e.unblockUI()})})});
|
js/minify-admin-purge.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
jQuery(document).ready(function ($) {
|
| 2 |
+
$('#wp-admin-bar-purge_minify_cache').click(function(e) {
|
| 3 |
+
e.preventDefault();
|
| 4 |
+
wp_optimize.send_command('purge_minify_cache', null, function(response) {
|
| 5 |
+
console.log(response)
|
| 6 |
+
if (response.hasOwnProperty('error')) {
|
| 7 |
+
alert(response.error);
|
| 8 |
+
}
|
| 9 |
+
if (response.hasOwnProperty('message')) {
|
| 10 |
+
alert(response.notice);
|
| 11 |
+
}
|
| 12 |
+
}).always(function() {
|
| 13 |
+
$.unblockUI();
|
| 14 |
+
});
|
| 15 |
+
})
|
| 16 |
+
});
|
js/minify.js
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
(function ($) {
|
| 2 |
+
var wp_optimize = window.wp_optimize || {};
|
| 3 |
+
var send_command = wp_optimize.send_command;
|
| 4 |
+
var refresh_frequency = wpoptimize.refresh_frequency || 6000;
|
| 5 |
+
|
| 6 |
+
if (!send_command) {
|
| 7 |
+
console.error('WP-Optimize Minify: wp_optimize.send_command is required.');
|
| 8 |
+
return;
|
| 9 |
+
}
|
| 10 |
+
|
| 11 |
+
var minify = {};
|
| 12 |
+
|
| 13 |
+
/**
|
| 14 |
+
* Initializing the minify feature and events
|
| 15 |
+
*/
|
| 16 |
+
minify.init = function () {
|
| 17 |
+
|
| 18 |
+
var minify = this;
|
| 19 |
+
this.enabled = false;
|
| 20 |
+
|
| 21 |
+
$(document).on('wp-optimize/minify/toggle-status', function(e, params) {
|
| 22 |
+
if (params.hasOwnProperty('enabled')) {
|
| 23 |
+
$('[data-whichpage="wpo_minify"]').toggleClass('is-enabled', params.enabled)
|
| 24 |
+
minify.enabled = params.enabled;
|
| 25 |
+
if (minify.enabled) minify.getFiles();
|
| 26 |
+
}
|
| 27 |
+
});
|
| 28 |
+
|
| 29 |
+
/**
|
| 30 |
+
* The standard handler for clearing the cache. Safe to use
|
| 31 |
+
*/
|
| 32 |
+
$('.purge_minify_cache').click(function() {
|
| 33 |
+
$.blockUI();
|
| 34 |
+
send_command('purge_minify_cache', null, function(response) {
|
| 35 |
+
console.log(response)
|
| 36 |
+
}).always(function() {
|
| 37 |
+
$.unblockUI();
|
| 38 |
+
});
|
| 39 |
+
});
|
| 40 |
+
|
| 41 |
+
/**
|
| 42 |
+
* Removes the entire cache dir.
|
| 43 |
+
* Use with caution, as cached html may still reference those files.
|
| 44 |
+
*/
|
| 45 |
+
$('.purge_all_minify_cache').click(function() {
|
| 46 |
+
$.blockUI();
|
| 47 |
+
send_command('purge_all_minify_cache', null, function(response) {
|
| 48 |
+
console.log(response)
|
| 49 |
+
|
| 50 |
+
}).always(function() {
|
| 51 |
+
$.unblockUI();
|
| 52 |
+
});
|
| 53 |
+
});
|
| 54 |
+
|
| 55 |
+
/**
|
| 56 |
+
* Forces minifiy to create a new cache, safe to use
|
| 57 |
+
*/
|
| 58 |
+
$('.minify_increment_cache').click(function() {
|
| 59 |
+
$.blockUI();
|
| 60 |
+
send_command('minify_increment_cache', null, function(response) {
|
| 61 |
+
console.log(response)
|
| 62 |
+
}).always(function() {
|
| 63 |
+
$.unblockUI();
|
| 64 |
+
});
|
| 65 |
+
});
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
// ======= SLIDERS ========
|
| 69 |
+
// Generic slider save
|
| 70 |
+
$('input[type=checkbox].wpo-save-setting').on('change', function(e) {
|
| 71 |
+
var input = $(this),
|
| 72 |
+
val = input.prop('checked'),
|
| 73 |
+
name = input.prop('name'),
|
| 74 |
+
data = {};
|
| 75 |
+
data[name] = val;
|
| 76 |
+
$.blockUI();
|
| 77 |
+
send_command('save_minify_settings', data, function(response) {
|
| 78 |
+
if (response.success) {
|
| 79 |
+
input.trigger('wp-optimize/minify/saved_setting');
|
| 80 |
+
} else {
|
| 81 |
+
console.log('Settings not saved', data)
|
| 82 |
+
}
|
| 83 |
+
}).always(function() {
|
| 84 |
+
$.unblockUI();
|
| 85 |
+
});
|
| 86 |
+
});
|
| 87 |
+
|
| 88 |
+
// Slider enable minify
|
| 89 |
+
$('#wpo_min_enable_minify').on('wp-optimize/minify/saved_setting', function() {
|
| 90 |
+
this.enabled = $(this).prop('checked');
|
| 91 |
+
$(document).trigger('wp-optimize/minify/toggle-status', {enabled: this.enabled});
|
| 92 |
+
});
|
| 93 |
+
|
| 94 |
+
// Toggle wpo-feature-is-disabled class
|
| 95 |
+
$('#wpo_min_enable_minify, #wpo_min_enable_minify_css, #wpo_min_enable_minify_js, #wpo_min_enable_minify_html').on('wp-optimize/minify/saved_setting', function() {
|
| 96 |
+
$(this).closest('.wpo_section').toggleClass('wpo-feature-is-disabled', !$(this).is(':checked'));
|
| 97 |
+
});
|
| 98 |
+
|
| 99 |
+
// slider enable Debug mode
|
| 100 |
+
$('#wpo_min_enable_minify_debug').on('wp-optimize/minify/saved_setting', function() {
|
| 101 |
+
// Refresh the page as it's needed to show the extra options
|
| 102 |
+
$.blockUI({message: '<h1>'+wpoptimize.page_refresh+'</h1>'});
|
| 103 |
+
location.href = $('#wp-optimize-nav-tab-wpo_minify-advanced').prop('href');
|
| 104 |
+
});
|
| 105 |
+
|
| 106 |
+
// Edit default exclusions
|
| 107 |
+
$('#wpo_min_edit_default_exclutions').on('wp-optimize/minify/saved_setting', function() {
|
| 108 |
+
// Show exclusions section
|
| 109 |
+
$('.wpo-minify-default-exclusions').toggleClass('hidden', !$(this).prop('checked'));
|
| 110 |
+
});
|
| 111 |
+
|
| 112 |
+
// Save settings
|
| 113 |
+
$('.wp-optimize-save-minify-settings').click(function(e) {
|
| 114 |
+
e.preventDefault();
|
| 115 |
+
var btn = $(this),
|
| 116 |
+
form = btn.closest('form'),
|
| 117 |
+
spinner = btn.next(),
|
| 118 |
+
success_icon = spinner.next();
|
| 119 |
+
|
| 120 |
+
spinner.show();
|
| 121 |
+
$.blockUI();
|
| 122 |
+
|
| 123 |
+
var data = $(form).serializeArray().reduce(function(collection, item) {
|
| 124 |
+
collection[item.name] = item.value;
|
| 125 |
+
return collection;
|
| 126 |
+
}, {});
|
| 127 |
+
|
| 128 |
+
$(form).find('input[type="checkbox"]').each(function(i) {
|
| 129 |
+
var name = $(this).attr("name");
|
| 130 |
+
data[name] = $(this).is(':checked') ? 'true' : 'false';
|
| 131 |
+
});
|
| 132 |
+
|
| 133 |
+
send_command('save_minify_settings', data, function(response) {
|
| 134 |
+
if (response.hasOwnProperty('error')) {
|
| 135 |
+
// show error
|
| 136 |
+
console.log(response.error);
|
| 137 |
+
$('.wpo-error__enabling-cache').removeClass('wpo_hidden').find('p').text(response.error.message);
|
| 138 |
+
} else {
|
| 139 |
+
$('.wpo-error__enabling-cache').addClass('wpo_hidden').find('p').text('');
|
| 140 |
+
}
|
| 141 |
+
spinner.hide();
|
| 142 |
+
success_icon.show();
|
| 143 |
+
setTimeout(function() {
|
| 144 |
+
success_icon.fadeOut('slow', function() {
|
| 145 |
+
success_icon.hide();
|
| 146 |
+
});
|
| 147 |
+
}, 5000);
|
| 148 |
+
}).always(function() {
|
| 149 |
+
$.unblockUI();
|
| 150 |
+
});
|
| 151 |
+
})
|
| 152 |
+
|
| 153 |
+
// Dismiss information notice
|
| 154 |
+
$('.wp-optimize-minify-status-information-notice').on('click', '.notice-dismiss', function(e) {
|
| 155 |
+
e.preventDefault();
|
| 156 |
+
send_command('hide_minify_notice');
|
| 157 |
+
});
|
| 158 |
+
|
| 159 |
+
// Show logs
|
| 160 |
+
$('#wpo_min_jsprocessed, #wpo_min_cssprocessed').on('click', '.log', function(e) {
|
| 161 |
+
e.preventDefault();
|
| 162 |
+
$(this).nextAll('.wpo_min_log').slideToggle('fast');
|
| 163 |
+
});
|
| 164 |
+
|
| 165 |
+
// Set the initial `enabled` value
|
| 166 |
+
this.enabled = $('#wpo_min_enable_minify').prop('checked');
|
| 167 |
+
$(document).trigger('wp-optimize/minify/toggle-status', {enabled: this.enabled});
|
| 168 |
+
|
| 169 |
+
return this;
|
| 170 |
+
}
|
| 171 |
+
|
| 172 |
+
/**
|
| 173 |
+
* Get the list of files generated by Minify and update the markup.
|
| 174 |
+
*/
|
| 175 |
+
minify.getFiles = function() {
|
| 176 |
+
// Only run if the feature is enabled
|
| 177 |
+
if (!this.enabled) return;
|
| 178 |
+
|
| 179 |
+
var data = {
|
| 180 |
+
stamp: new Date().getTime()
|
| 181 |
+
};
|
| 182 |
+
|
| 183 |
+
send_command('get_minify_cached_files', data, function(response) {
|
| 184 |
+
if (response.cachesize.length > 0) {
|
| 185 |
+
$("#wpo_min_cache_size").html(response.cachesize);
|
| 186 |
+
$("#wpo_min_cache_time").html(response.cacheTime);
|
| 187 |
+
$("#wpo_min_cache_path").html(response.cachePath);
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
// reset
|
| 191 |
+
var wpominarr = [];
|
| 192 |
+
|
| 193 |
+
// js
|
| 194 |
+
if (response.js.length > 0) {
|
| 195 |
+
$(response.js).each(function () {
|
| 196 |
+
wpominarr.push(this.uid);
|
| 197 |
+
if ($('#'+this.uid).length == 0) {
|
| 198 |
+
$('#wpo_min_jsprocessed ul.processed').append('\
|
| 199 |
+
<li id="'+this.uid+'">\
|
| 200 |
+
<span class="filename">'+this.filename+' ('+this.fsize+')</span>\
|
| 201 |
+
<a href="#" class="log">' + wpoptimize.toggle_info + '</a>\
|
| 202 |
+
<div class="hidden wpo_min_log">'+this.log+'</div>\
|
| 203 |
+
</li>\
|
| 204 |
+
');
|
| 205 |
+
}
|
| 206 |
+
});
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
+
$('#wpo_min_jsprocessed ul.processed .no-files-yet').toggle(!response.js.length);
|
| 210 |
+
|
| 211 |
+
// css
|
| 212 |
+
if (response.css.length > 0) {
|
| 213 |
+
$(response.css).each(function () {
|
| 214 |
+
wpominarr.push(this.uid);
|
| 215 |
+
if ($('#'+this.uid).length == 0) {
|
| 216 |
+
$('#wpo_min_cssprocessed ul.processed').append('\
|
| 217 |
+
<li id="'+this.uid+'">\
|
| 218 |
+
<span class="filename">'+this.filename+' ('+this.fsize+')</span>\
|
| 219 |
+
<a href="#" class="log">' + wpoptimize.toggle_info + '</a>\
|
| 220 |
+
<div class="hidden wpo_min_log">'+this.log+'</div>\
|
| 221 |
+
</li>\
|
| 222 |
+
');
|
| 223 |
+
}
|
| 224 |
+
});
|
| 225 |
+
}
|
| 226 |
+
|
| 227 |
+
$('#wpo_min_cssprocessed ul.processed .no-files-yet').toggle(!response.css.length);
|
| 228 |
+
|
| 229 |
+
// Remove <li> if it's not in the files array
|
| 230 |
+
$('#wpo_min_jsprocessed ul.processed > li, #wpo_min_cssprocessed ul.processed > li').each(function () {
|
| 231 |
+
if (-1 == jQuery.inArray($(this).attr('id'), wpominarr)) {
|
| 232 |
+
if (!$(this).is('.no-files-yet')) {
|
| 233 |
+
$(this).remove();
|
| 234 |
+
}
|
| 235 |
+
}
|
| 236 |
+
});
|
| 237 |
+
});
|
| 238 |
+
|
| 239 |
+
if (refresh_frequency) setTimeout(minify.getFiles.bind(this), refresh_frequency);
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
wp_optimize.minify = minify;
|
| 243 |
+
|
| 244 |
+
})(jQuery);
|
js/{queue-3-0-16.min.js → queue-3-0-18.min.js}
RENAMED
|
File without changes
|
js/send-command-3-0-18.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
var wp_optimize=window.wp_optimize||{};wp_optimize.send_command=function(e,o,i,t,r){t="undefined"==typeof t||t,o||(o={}),o.hasOwnProperty("include_ui_elements")||(o.include_ui_elements=!0);var n={action:"wp_optimize_ajax",subaction:e,nonce:wp_optimize_ajax_nonce,data:o},s={type:"post",data:n,success:function(e){if(t){try{var o=wpo_parse_json(e)}catch(r){return console.log(r),console.log(e),void alert(wpoptimize.error_unexpected_response)}if(!o.result&&o.hasOwnProperty("error_code")&&o.error_code)return void wp_optimize.notices.show_notice(o.error_code,o.error_message);"function"==typeof i&&i(o)}else{if(!e.result&&e.hasOwnProperty("error_code")&&e.error_code)return void wp_optimize.notices.show_notice(e.error_code,e.error_message);"function"==typeof i&&i(e)}}};return"object"==typeof r&&r.hasOwnProperty("timeout")&&(s.timeout=r.timeout),jQuery.ajax(ajaxurl,s)},wp_optimize.notices={errors:[],show_notice:function(e,o){jQuery("#wp-optimize-wrap").length?(this.notice||this.add_notice(),this.notice.show(),this.errors[e]||(this.errors[e]=jQuery("<p/>").html(o).appendTo(this.notice).data("error_code",e))):window.wp&&wp.hasOwnProperty("data")?wp.data.dispatch("core/notices").createNotice("error","WP-Optimize: "+o,{isDismissible:!0}):alert("WP-Optimize: "+o)},add_notice:function(){this.notice_container=jQuery('<div class="wpo-main-error-notice"></div>').prependTo("#wp-optimize-wrap"),this.notice=jQuery('<div class="notice notice-error wpo-notice is-dismissible"><button type="button" class="notice-dismiss"><span class="screen-reader-text">'+commonL10n.dismiss+"</span></button></div>"),this.notice.appendTo(this.notice_container),this.notice.on("click",".notice-dismiss",function(e){this.notice.hide().find("p").remove(),this.errors=[]}.bind(this))}};
|
js/send-command.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
var wp_optimize = window.wp_optimize || {};
|
| 2 |
+
|
| 3 |
+
/**
|
| 4 |
+
* Send an action via admin-ajax.php.
|
| 5 |
+
*
|
| 6 |
+
* @param {string} action The action to send
|
| 7 |
+
* @param {[type]} data Data to send
|
| 8 |
+
* @param {Function} callback Will be called with the results
|
| 9 |
+
* @param {boolean} json_parse JSON parse the results
|
| 10 |
+
* @param {object} options Optional extra options; current properties supported are 'timeout' (in milliseconds)
|
| 11 |
+
*
|
| 12 |
+
* @return {JSON}
|
| 13 |
+
*/
|
| 14 |
+
wp_optimize.send_command = function (action, data, callback, json_parse, options) {
|
| 15 |
+
|
| 16 |
+
json_parse = ('undefined' === typeof json_parse) ? true : json_parse;
|
| 17 |
+
|
| 18 |
+
if (!data) data = {};
|
| 19 |
+
// If the command doesn't have the property, default to true
|
| 20 |
+
if (!data.hasOwnProperty('include_ui_elements')) {
|
| 21 |
+
data.include_ui_elements = true;
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
var ajax_data = {
|
| 25 |
+
action: 'wp_optimize_ajax',
|
| 26 |
+
subaction: action,
|
| 27 |
+
nonce: wp_optimize_ajax_nonce,
|
| 28 |
+
data: data
|
| 29 |
+
};
|
| 30 |
+
|
| 31 |
+
var args = {
|
| 32 |
+
type: 'post',
|
| 33 |
+
data: ajax_data,
|
| 34 |
+
success: function (response) {
|
| 35 |
+
if (json_parse) {
|
| 36 |
+
try {
|
| 37 |
+
var resp = wpo_parse_json(response);
|
| 38 |
+
} catch (e) {
|
| 39 |
+
console.log(e);
|
| 40 |
+
console.log(response);
|
| 41 |
+
alert(wpoptimize.error_unexpected_response);
|
| 42 |
+
return;
|
| 43 |
+
}
|
| 44 |
+
// If result == false and and error code is provided, show the error and return.
|
| 45 |
+
if (!resp.result && resp.hasOwnProperty('error_code') && resp.error_code) {
|
| 46 |
+
wp_optimize.notices.show_notice(resp.error_code, resp.error_message);
|
| 47 |
+
return;
|
| 48 |
+
}
|
| 49 |
+
if ('function' === typeof callback) callback(resp);
|
| 50 |
+
} else {
|
| 51 |
+
if (!response.result && response.hasOwnProperty('error_code') && response.error_code) {
|
| 52 |
+
wp_optimize.notices.show_notice(response.error_code, response.error_message);
|
| 53 |
+
return;
|
| 54 |
+
}
|
| 55 |
+
if ('function' === typeof callback) callback(response);
|
| 56 |
+
}
|
| 57 |
+
}
|
| 58 |
+
};
|
| 59 |
+
|
| 60 |
+
// Eventually merge options
|
| 61 |
+
if ('object' === typeof options) {
|
| 62 |
+
if (options.hasOwnProperty('timeout')) { args.timeout = options.timeout; }
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
return jQuery.ajax(ajaxurl, args);
|
| 66 |
+
};
|
| 67 |
+
|
| 68 |
+
|
| 69 |
+
/**
|
| 70 |
+
* JS notices
|
| 71 |
+
*/
|
| 72 |
+
wp_optimize.notices = {
|
| 73 |
+
errors: [],
|
| 74 |
+
show_notice: function(error_code, error_message) {
|
| 75 |
+
// WPO main page
|
| 76 |
+
if (jQuery('#wp-optimize-wrap').length) {
|
| 77 |
+
if (!this.notice) this.add_notice();
|
| 78 |
+
this.notice.show();
|
| 79 |
+
if (!this.errors[error_code]) {
|
| 80 |
+
this.errors[error_code] = jQuery('<p/>').html(error_message).appendTo(this.notice).data('error_code', error_code);
|
| 81 |
+
}
|
| 82 |
+
// Post edit page
|
| 83 |
+
} else if (window.wp && wp.hasOwnProperty('data')) {
|
| 84 |
+
wp.data.dispatch('core/notices').createNotice(
|
| 85 |
+
'error',
|
| 86 |
+
'WP-Optimize: ' + error_message,
|
| 87 |
+
{
|
| 88 |
+
isDismissible: true
|
| 89 |
+
}
|
| 90 |
+
);
|
| 91 |
+
// Other locations
|
| 92 |
+
} else {
|
| 93 |
+
alert('WP-Optimize: ' + error_message);
|
| 94 |
+
}
|
| 95 |
+
},
|
| 96 |
+
add_notice: function() {
|
| 97 |
+
this.notice_container = jQuery('<div class="wpo-main-error-notice"></div>').prependTo('#wp-optimize-wrap');
|
| 98 |
+
this.notice = jQuery('<div class="notice notice-error wpo-notice is-dismissible"><button type="button" class="notice-dismiss"><span class="screen-reader-text">'+commonL10n.dismiss+'</span></button></div>');
|
| 99 |
+
this.notice.appendTo(this.notice_container);
|
| 100 |
+
this.notice.on('click', '.notice-dismiss', function(e) {
|
| 101 |
+
this.notice.hide().find('p').remove();
|
| 102 |
+
this.errors = [];
|
| 103 |
+
}.bind(this));
|
| 104 |
+
}
|
| 105 |
+
};
|
js/tablesorter/jquery.tablesorter.js
CHANGED
|
@@ -1,2916 +1,2916 @@
|
|
| 1 |
(function(factory){if (typeof define === 'function' && define.amd){define(['jquery'], factory);} else if (typeof module === 'object' && typeof module.exports === 'object'){module.exports = factory(require('jquery'));} else {factory(jQuery);}}(function(jQuery){
|
| 2 |
-
/*! TableSorter (FORK) v2.31.
|
| 3 |
-
* Client-side table sorting with ease!
|
| 4 |
-
* @requires jQuery v1.2.6+
|
| 5 |
-
*
|
| 6 |
-
* Copyright (c) 2007 Christian Bach
|
| 7 |
-
* fork maintained by Rob Garrison
|
| 8 |
-
*
|
| 9 |
-
* Examples and original docs at: http://tablesorter.com
|
| 10 |
-
* Dual licensed under the MIT and GPL licenses:
|
| 11 |
-
* http://www.opensource.org/licenses/mit-license.php
|
| 12 |
-
* http://www.gnu.org/licenses/gpl.html
|
| 13 |
-
*
|
| 14 |
-
* @type jQuery
|
| 15 |
-
* @name tablesorter (FORK)
|
| 16 |
-
* @cat Plugins/Tablesorter
|
| 17 |
-
* @author Christian Bach - christian.bach@polyester.se
|
| 18 |
-
* @contributor Rob Garrison - https://github.com/Mottie/tablesorter
|
| 19 |
-
* @docs (fork) - https://mottie.github.io/tablesorter/docs/
|
| 20 |
-
*/
|
| 21 |
-
/*jshint browser:true, jquery:true, unused:false, expr: true */
|
| 22 |
-
;( function( $ ) {
|
| 23 |
-
'use strict';
|
| 24 |
-
var ts = $.tablesorter = {
|
| 25 |
-
|
| 26 |
-
version : '2.31.
|
| 27 |
-
|
| 28 |
-
parsers : [],
|
| 29 |
-
widgets : [],
|
| 30 |
-
defaults : {
|
| 31 |
-
|
| 32 |
-
// *** appearance
|
| 33 |
-
theme : 'default', // adds tablesorter-{theme} to the table for styling
|
| 34 |
-
widthFixed : false, // adds colgroup to fix widths of columns
|
| 35 |
-
showProcessing : false, // show an indeterminate timer icon in the header when the table is sorted or filtered.
|
| 36 |
-
|
| 37 |
-
headerTemplate : '{content}',// header layout template (HTML ok); {content} = innerHTML, {icon} = <i/> // class from cssIcon
|
| 38 |
-
onRenderTemplate : null, // function( index, template ) { return template; }, // template is a string
|
| 39 |
-
onRenderHeader : null, // function( index ) {}, // nothing to return
|
| 40 |
-
|
| 41 |
-
// *** functionality
|
| 42 |
-
cancelSelection : true, // prevent text selection in the header
|
| 43 |
-
tabIndex : true, // add tabindex to header for keyboard accessibility
|
| 44 |
-
dateFormat : 'mmddyyyy', // other options: 'ddmmyyy' or 'yyyymmdd'
|
| 45 |
-
sortMultiSortKey : 'shiftKey', // key used to select additional columns
|
| 46 |
-
sortResetKey : 'ctrlKey', // key used to remove sorting on a column
|
| 47 |
-
usNumberFormat : true, // false for German '1.234.567,89' or French '1 234 567,89'
|
| 48 |
-
delayInit : false, // if false, the parsed table contents will not update until the first sort
|
| 49 |
-
serverSideSorting: false, // if true, server-side sorting should be performed because client-side sorting will be disabled, but the ui and events will still be used.
|
| 50 |
-
resort : true, // default setting to trigger a resort after an 'update', 'addRows', 'updateCell', etc has completed
|
| 51 |
-
|
| 52 |
-
// *** sort options
|
| 53 |
-
headers : {}, // set sorter, string, empty, locked order, sortInitialOrder, filter, etc.
|
| 54 |
-
ignoreCase : true, // ignore case while sorting
|
| 55 |
-
sortForce : null, // column(s) first sorted; always applied
|
| 56 |
-
sortList : [], // Initial sort order; applied initially; updated when manually sorted
|
| 57 |
-
sortAppend : null, // column(s) sorted last; always applied
|
| 58 |
-
sortStable : false, // when sorting two rows with exactly the same content, the original sort order is maintained
|
| 59 |
-
|
| 60 |
-
sortInitialOrder : 'asc', // sort direction on first click
|
| 61 |
-
sortLocaleCompare: false, // replace equivalent character (accented characters)
|
| 62 |
-
sortReset : false, // third click on the header will reset column to default - unsorted
|
| 63 |
-
sortRestart : false, // restart sort to 'sortInitialOrder' when clicking on previously unsorted columns
|
| 64 |
-
|
| 65 |
-
emptyTo : 'bottom', // sort empty cell to bottom, top, none, zero, emptyMax, emptyMin
|
| 66 |
-
stringTo : 'max', // sort strings in numerical column as max, min, top, bottom, zero
|
| 67 |
-
duplicateSpan : true, // colspan cells in the tbody will have duplicated content in the cache for each spanned column
|
| 68 |
-
textExtraction : 'basic', // text extraction method/function - function( node, table, cellIndex ) {}
|
| 69 |
-
textAttribute : 'data-text',// data-attribute that contains alternate cell text (used in default textExtraction function)
|
| 70 |
-
textSorter : null, // choose overall or specific column sorter function( a, b, direction, table, columnIndex ) [alt: ts.sortText]
|
| 71 |
-
numberSorter : null, // choose overall numeric sorter function( a, b, direction, maxColumnValue )
|
| 72 |
-
|
| 73 |
-
// *** widget options
|
| 74 |
-
initWidgets : true, // apply widgets on tablesorter initialization
|
| 75 |
-
widgetClass : 'widget-{name}', // table class name template to match to include a widget
|
| 76 |
-
widgets : [], // method to add widgets, e.g. widgets: ['zebra']
|
| 77 |
-
widgetOptions : {
|
| 78 |
-
zebra : [ 'even', 'odd' ] // zebra widget alternating row class names
|
| 79 |
-
},
|
| 80 |
-
|
| 81 |
-
// *** callbacks
|
| 82 |
-
initialized : null, // function( table ) {},
|
| 83 |
-
|
| 84 |
-
// *** extra css class names
|
| 85 |
-
tableClass : '',
|
| 86 |
-
cssAsc : '',
|
| 87 |
-
cssDesc : '',
|
| 88 |
-
cssNone : '',
|
| 89 |
-
cssHeader : '',
|
| 90 |
-
cssHeaderRow : '',
|
| 91 |
-
cssProcessing : '', // processing icon applied to header during sort/filter
|
| 92 |
-
|
| 93 |
-
cssChildRow : 'tablesorter-childRow', // class name indiciating that a row is to be attached to its parent
|
| 94 |
-
cssInfoBlock : 'tablesorter-infoOnly', // don't sort tbody with this class name (only one class name allowed here!)
|
| 95 |
-
cssNoSort : 'tablesorter-noSort', // class name added to element inside header; clicking on it won't cause a sort
|
| 96 |
-
cssIgnoreRow : 'tablesorter-ignoreRow',// header row to ignore; cells within this row will not be added to c.$headers
|
| 97 |
-
|
| 98 |
-
cssIcon : 'tablesorter-icon', // if this class does not exist, the {icon} will not be added from the headerTemplate
|
| 99 |
-
cssIconNone : '', // class name added to the icon when there is no column sort
|
| 100 |
-
cssIconAsc : '', // class name added to the icon when the column has an ascending sort
|
| 101 |
-
cssIconDesc : '', // class name added to the icon when the column has a descending sort
|
| 102 |
-
cssIconDisabled : '', // class name added to the icon when the column has a disabled sort
|
| 103 |
-
|
| 104 |
-
// *** events
|
| 105 |
-
pointerClick : 'click',
|
| 106 |
-
pointerDown : 'mousedown',
|
| 107 |
-
pointerUp : 'mouseup',
|
| 108 |
-
|
| 109 |
-
// *** selectors
|
| 110 |
-
selectorHeaders : '> thead th, > thead td',
|
| 111 |
-
selectorSort : 'th, td', // jQuery selector of content within selectorHeaders that is clickable to trigger a sort
|
| 112 |
-
selectorRemove : '.remove-me',
|
| 113 |
-
|
| 114 |
-
// *** advanced
|
| 115 |
-
debug : false,
|
| 116 |
-
|
| 117 |
-
// *** Internal variables
|
| 118 |
-
headerList: [],
|
| 119 |
-
empties: {},
|
| 120 |
-
strings: {},
|
| 121 |
-
parsers: [],
|
| 122 |
-
|
| 123 |
-
// *** parser options for validator; values must be falsy!
|
| 124 |
-
globalize: 0,
|
| 125 |
-
imgAttr: 0
|
| 126 |
-
|
| 127 |
-
// removed: widgetZebra: { css: ['even', 'odd'] }
|
| 128 |
-
|
| 129 |
-
},
|
| 130 |
-
|
| 131 |
-
// internal css classes - these will ALWAYS be added to
|
| 132 |
-
// the table and MUST only contain one class name - fixes #381
|
| 133 |
-
css : {
|
| 134 |
-
table : 'tablesorter',
|
| 135 |
-
cssHasChild: 'tablesorter-hasChildRow',
|
| 136 |
-
childRow : 'tablesorter-childRow',
|
| 137 |
-
colgroup : 'tablesorter-colgroup',
|
| 138 |
-
header : 'tablesorter-header',
|
| 139 |
-
headerRow : 'tablesorter-headerRow',
|
| 140 |
-
headerIn : 'tablesorter-header-inner',
|
| 141 |
-
icon : 'tablesorter-icon',
|
| 142 |
-
processing : 'tablesorter-processing',
|
| 143 |
-
sortAsc : 'tablesorter-headerAsc',
|
| 144 |
-
sortDesc : 'tablesorter-headerDesc',
|
| 145 |
-
sortNone : 'tablesorter-headerUnSorted'
|
| 146 |
-
},
|
| 147 |
-
|
| 148 |
-
// labels applied to sortable headers for accessibility (aria) support
|
| 149 |
-
language : {
|
| 150 |
-
sortAsc : 'Ascending sort applied, ',
|
| 151 |
-
sortDesc : 'Descending sort applied, ',
|
| 152 |
-
sortNone : 'No sort applied, ',
|
| 153 |
-
sortDisabled : 'sorting is disabled',
|
| 154 |
-
nextAsc : 'activate to apply an ascending sort',
|
| 155 |
-
nextDesc : 'activate to apply a descending sort',
|
| 156 |
-
nextNone : 'activate to remove the sort'
|
| 157 |
-
},
|
| 158 |
-
|
| 159 |
-
regex : {
|
| 160 |
-
templateContent : /\{content\}/g,
|
| 161 |
-
templateIcon : /\{icon\}/g,
|
| 162 |
-
templateName : /\{name\}/i,
|
| 163 |
-
spaces : /\s+/g,
|
| 164 |
-
nonWord : /\W/g,
|
| 165 |
-
formElements : /(input|select|button|textarea)/i,
|
| 166 |
-
|
| 167 |
-
// *** sort functions ***
|
| 168 |
-
// regex used in natural sort
|
| 169 |
-
// chunk/tokenize numbers & letters
|
| 170 |
-
chunk : /(^([+\-]?(?:\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,
|
| 171 |
-
// replace chunks @ ends
|
| 172 |
-
chunks : /(^\\0|\\0$)/,
|
| 173 |
-
hex : /^0x[0-9a-f]+$/i,
|
| 174 |
-
|
| 175 |
-
// *** formatFloat ***
|
| 176 |
-
comma : /,/g,
|
| 177 |
-
digitNonUS : /[\s|\.]/g,
|
| 178 |
-
digitNegativeTest : /^\s*\([.\d]+\)/,
|
| 179 |
-
digitNegativeReplace : /^\s*\(([.\d]+)\)/,
|
| 180 |
-
|
| 181 |
-
// *** isDigit ***
|
| 182 |
-
digitTest : /^[\-+(]?\d+[)]?$/,
|
| 183 |
-
digitReplace : /[,.'"\s]/g
|
| 184 |
-
|
| 185 |
-
},
|
| 186 |
-
|
| 187 |
-
// digit sort, text location
|
| 188 |
-
string : {
|
| 189 |
-
max : 1,
|
| 190 |
-
min : -1,
|
| 191 |
-
emptymin : 1,
|
| 192 |
-
emptymax : -1,
|
| 193 |
-
zero : 0,
|
| 194 |
-
none : 0,
|
| 195 |
-
'null' : 0,
|
| 196 |
-
top : true,
|
| 197 |
-
bottom : false
|
| 198 |
-
},
|
| 199 |
-
|
| 200 |
-
keyCodes : {
|
| 201 |
-
enter : 13
|
| 202 |
-
},
|
| 203 |
-
|
| 204 |
-
// placeholder date parser data (globalize)
|
| 205 |
-
dates : {},
|
| 206 |
-
|
| 207 |
-
// These methods can be applied on table.config instance
|
| 208 |
-
instanceMethods : {},
|
| 209 |
-
|
| 210 |
-
/*
|
| 211 |
-
▄█████ ██████ ██████ ██ ██ █████▄
|
| 212 |
-
▀█▄ ██▄▄ ██ ██ ██ ██▄▄██
|
| 213 |
-
▀█▄ ██▀▀ ██ ██ ██ ██▀▀▀
|
| 214 |
-
█████▀ ██████ ██ ▀████▀ ██
|
| 215 |
-
*/
|
| 216 |
-
|
| 217 |
-
setup : function( table, c ) {
|
| 218 |
-
// if no thead or tbody, or tablesorter is already present, quit
|
| 219 |
-
if ( !table || !table.tHead || table.tBodies.length === 0 || table.hasInitialized === true ) {
|
| 220 |
-
if ( ts.debug(c, 'core') ) {
|
| 221 |
-
if ( table.hasInitialized ) {
|
| 222 |
-
console.warn( 'Stopping initialization. Tablesorter has already been initialized' );
|
| 223 |
-
} else {
|
| 224 |
-
console.error( 'Stopping initialization! No table, thead or tbody', table );
|
| 225 |
-
}
|
| 226 |
-
}
|
| 227 |
-
return;
|
| 228 |
-
}
|
| 229 |
-
|
| 230 |
-
var tmp = '',
|
| 231 |
-
$table = $( table ),
|
| 232 |
-
meta = $.metadata;
|
| 233 |
-
// initialization flag
|
| 234 |
-
table.hasInitialized = false;
|
| 235 |
-
// table is being processed flag
|
| 236 |
-
table.isProcessing = true;
|
| 237 |
-
// make sure to store the config object
|
| 238 |
-
table.config = c;
|
| 239 |
-
// save the settings where they read
|
| 240 |
-
$.data( table, 'tablesorter', c );
|
| 241 |
-
if ( ts.debug(c, 'core') ) {
|
| 242 |
-
console[ console.group ? 'group' : 'log' ]( 'Initializing tablesorter v' + ts.version );
|
| 243 |
-
$.data( table, 'startoveralltimer', new Date() );
|
| 244 |
-
}
|
| 245 |
-
|
| 246 |
-
// removing this in version 3 (only supports jQuery 1.7+)
|
| 247 |
-
c.supportsDataObject = ( function( version ) {
|
| 248 |
-
version[ 0 ] = parseInt( version[ 0 ], 10 );
|
| 249 |
-
return ( version[ 0 ] > 1 ) || ( version[ 0 ] === 1 && parseInt( version[ 1 ], 10 ) >= 4 );
|
| 250 |
-
})( $.fn.jquery.split( '.' ) );
|
| 251 |
-
// ensure case insensitivity
|
| 252 |
-
c.emptyTo = c.emptyTo.toLowerCase();
|
| 253 |
-
c.stringTo = c.stringTo.toLowerCase();
|
| 254 |
-
c.last = { sortList : [], clickedIndex : -1 };
|
| 255 |
-
// add table theme class only if there isn't already one there
|
| 256 |
-
if ( !/tablesorter\-/.test( $table.attr( 'class' ) ) ) {
|
| 257 |
-
tmp = ( c.theme !== '' ? ' tablesorter-' + c.theme : '' );
|
| 258 |
-
}
|
| 259 |
-
|
| 260 |
-
// give the table a unique id, which will be used in namespace binding
|
| 261 |
-
if ( !c.namespace ) {
|
| 262 |
-
c.namespace = '.tablesorter' + Math.random().toString( 16 ).slice( 2 );
|
| 263 |
-
} else {
|
| 264 |
-
// make sure namespace starts with a period & doesn't have weird characters
|
| 265 |
-
c.namespace = '.' + c.namespace.replace( ts.regex.nonWord, '' );
|
| 266 |
-
}
|
| 267 |
-
|
| 268 |
-
c.table = table;
|
| 269 |
-
c.$table = $table
|
| 270 |
-
// add namespace to table to allow bindings on extra elements to target
|
| 271 |
-
// the parent table (e.g. parser-input-select)
|
| 272 |
-
.addClass( ts.css.table + ' ' + c.tableClass + tmp + ' ' + c.namespace.slice(1) )
|
| 273 |
-
.attr( 'role', 'grid' );
|
| 274 |
-
c.$headers = $table.find( c.selectorHeaders );
|
| 275 |
-
|
| 276 |
-
c.$table.children().children( 'tr' ).attr( 'role', 'row' );
|
| 277 |
-
c.$tbodies = $table.children( 'tbody:not(.' + c.cssInfoBlock + ')' ).attr({
|
| 278 |
-
'aria-live' : 'polite',
|
| 279 |
-
'aria-relevant' : 'all'
|
| 280 |
-
});
|
| 281 |
-
if ( c.$table.children( 'caption' ).length ) {
|
| 282 |
-
tmp = c.$table.children( 'caption' )[ 0 ];
|
| 283 |
-
if ( !tmp.id ) { tmp.id = c.namespace.slice( 1 ) + 'caption'; }
|
| 284 |
-
c.$table.attr( 'aria-labelledby', tmp.id );
|
| 285 |
-
}
|
| 286 |
-
c.widgetInit = {}; // keep a list of initialized widgets
|
| 287 |
-
// change textExtraction via data-attribute
|
| 288 |
-
c.textExtraction = c.$table.attr( 'data-text-extraction' ) || c.textExtraction || 'basic';
|
| 289 |
-
// build headers
|
| 290 |
-
ts.buildHeaders( c );
|
| 291 |
-
// fixate columns if the users supplies the fixedWidth option
|
| 292 |
-
// do this after theme has been applied
|
| 293 |
-
ts.fixColumnWidth( table );
|
| 294 |
-
// add widgets from class name
|
| 295 |
-
ts.addWidgetFromClass( table );
|
| 296 |
-
// add widget options before parsing (e.g. grouping widget has parser settings)
|
| 297 |
-
ts.applyWidgetOptions( table );
|
| 298 |
-
// try to auto detect column type, and store in tables config
|
| 299 |
-
ts.setupParsers( c );
|
| 300 |
-
// start total row count at zero
|
| 301 |
-
c.totalRows = 0;
|
| 302 |
-
// only validate options while debugging. See #1528
|
| 303 |
-
if (c.debug) {
|
| 304 |
-
ts.validateOptions( c );
|
| 305 |
-
}
|
| 306 |
-
// build the cache for the tbody cells
|
| 307 |
-
// delayInit will delay building the cache until the user starts a sort
|
| 308 |
-
if ( !c.delayInit ) { ts.buildCache( c ); }
|
| 309 |
-
// bind all header events and methods
|
| 310 |
-
ts.bindEvents( table, c.$headers, true );
|
| 311 |
-
ts.bindMethods( c );
|
| 312 |
-
// get sort list from jQuery data or metadata
|
| 313 |
-
// in jQuery < 1.4, an error occurs when calling $table.data()
|
| 314 |
-
if ( c.supportsDataObject && typeof $table.data().sortlist !== 'undefined' ) {
|
| 315 |
-
c.sortList = $table.data().sortlist;
|
| 316 |
-
} else if ( meta && ( $table.metadata() && $table.metadata().sortlist ) ) {
|
| 317 |
-
c.sortList = $table.metadata().sortlist;
|
| 318 |
-
}
|
| 319 |
-
// apply widget init code
|
| 320 |
-
ts.applyWidget( table, true );
|
| 321 |
-
// if user has supplied a sort list to constructor
|
| 322 |
-
if ( c.sortList.length > 0 ) {
|
| 323 |
-
// save sortList before any sortAppend is added
|
| 324 |
-
c.last.sortList = c.sortList;
|
| 325 |
-
ts.sortOn( c, c.sortList, {}, !c.initWidgets );
|
| 326 |
-
} else {
|
| 327 |
-
ts.setHeadersCss( c );
|
| 328 |
-
if ( c.initWidgets ) {
|
| 329 |
-
// apply widget format
|
| 330 |
-
ts.applyWidget( table, false );
|
| 331 |
-
}
|
| 332 |
-
}
|
| 333 |
-
|
| 334 |
-
// show processesing icon
|
| 335 |
-
if ( c.showProcessing ) {
|
| 336 |
-
$table
|
| 337 |
-
.unbind( 'sortBegin' + c.namespace + ' sortEnd' + c.namespace )
|
| 338 |
-
.bind( 'sortBegin' + c.namespace + ' sortEnd' + c.namespace, function( e ) {
|
| 339 |
-
clearTimeout( c.timerProcessing );
|
| 340 |
-
ts.isProcessing( table );
|
| 341 |
-
if ( e.type === 'sortBegin' ) {
|
| 342 |
-
c.timerProcessing = setTimeout( function() {
|
| 343 |
-
ts.isProcessing( table, true );
|
| 344 |
-
}, 500 );
|
| 345 |
-
}
|
| 346 |
-
});
|
| 347 |
-
}
|
| 348 |
-
|
| 349 |
-
// initialized
|
| 350 |
-
table.hasInitialized = true;
|
| 351 |
-
table.isProcessing = false;
|
| 352 |
-
if ( ts.debug(c, 'core') ) {
|
| 353 |
-
console.log( 'Overall initialization time:' + ts.benchmark( $.data( table, 'startoveralltimer' ) ) );
|
| 354 |
-
if ( ts.debug(c, 'core') && console.groupEnd ) { console.groupEnd(); }
|
| 355 |
-
}
|
| 356 |
-
$table.triggerHandler( 'tablesorter-initialized', table );
|
| 357 |
-
if ( typeof c.initialized === 'function' ) {
|
| 358 |
-
c.initialized( table );
|
| 359 |
-
}
|
| 360 |
-
},
|
| 361 |
-
|
| 362 |
-
bindMethods : function( c ) {
|
| 363 |
-
var $table = c.$table,
|
| 364 |
-
namespace = c.namespace,
|
| 365 |
-
events = ( 'sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete ' +
|
| 366 |
-
'sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup ' +
|
| 367 |
-
'mouseleave ' ).split( ' ' )
|
| 368 |
-
.join( namespace + ' ' );
|
| 369 |
-
// apply easy methods that trigger bound events
|
| 370 |
-
$table
|
| 371 |
-
.unbind( events.replace( ts.regex.spaces, ' ' ) )
|
| 372 |
-
.bind( 'sortReset' + namespace, function( e, callback ) {
|
| 373 |
-
e.stopPropagation();
|
| 374 |
-
// using this.config to ensure functions are getting a non-cached version of the config
|
| 375 |
-
ts.sortReset( this.config, function( table ) {
|
| 376 |
-
if (table.isApplyingWidgets) {
|
| 377 |
-
// multiple triggers in a row... filterReset, then sortReset - see #1361
|
| 378 |
-
// wait to update widgets
|
| 379 |
-
setTimeout( function() {
|
| 380 |
-
ts.applyWidget( table, '', callback );
|
| 381 |
-
}, 100 );
|
| 382 |
-
} else {
|
| 383 |
-
ts.applyWidget( table, '', callback );
|
| 384 |
-
}
|
| 385 |
-
});
|
| 386 |
-
})
|
| 387 |
-
.bind( 'updateAll' + namespace, function( e, resort, callback ) {
|
| 388 |
-
e.stopPropagation();
|
| 389 |
-
ts.updateAll( this.config, resort, callback );
|
| 390 |
-
})
|
| 391 |
-
.bind( 'update' + namespace + ' updateRows' + namespace, function( e, resort, callback ) {
|
| 392 |
-
e.stopPropagation();
|
| 393 |
-
ts.update( this.config, resort, callback );
|
| 394 |
-
})
|
| 395 |
-
.bind( 'updateHeaders' + namespace, function( e, callback ) {
|
| 396 |
-
e.stopPropagation();
|
| 397 |
-
ts.updateHeaders( this.config, callback );
|
| 398 |
-
})
|
| 399 |
-
.bind( 'updateCell' + namespace, function( e, cell, resort, callback ) {
|
| 400 |
-
e.stopPropagation();
|
| 401 |
-
ts.updateCell( this.config, cell, resort, callback );
|
| 402 |
-
})
|
| 403 |
-
.bind( 'addRows' + namespace, function( e, $row, resort, callback ) {
|
| 404 |
-
e.stopPropagation();
|
| 405 |
-
ts.addRows( this.config, $row, resort, callback );
|
| 406 |
-
})
|
| 407 |
-
.bind( 'updateComplete' + namespace, function() {
|
| 408 |
-
this.isUpdating = false;
|
| 409 |
-
})
|
| 410 |
-
.bind( 'sorton' + namespace, function( e, list, callback, init ) {
|
| 411 |
-
e.stopPropagation();
|
| 412 |
-
ts.sortOn( this.config, list, callback, init );
|
| 413 |
-
})
|
| 414 |
-
.bind( 'appendCache' + namespace, function( e, callback, init ) {
|
| 415 |
-
e.stopPropagation();
|
| 416 |
-
ts.appendCache( this.config, init );
|
| 417 |
-
if ( $.isFunction( callback ) ) {
|
| 418 |
-
callback( this );
|
| 419 |
-
}
|
| 420 |
-
})
|
| 421 |
-
// $tbodies variable is used by the tbody sorting widget
|
| 422 |
-
.bind( 'updateCache' + namespace, function( e, callback, $tbodies ) {
|
| 423 |
-
e.stopPropagation();
|
| 424 |
-
ts.updateCache( this.config, callback, $tbodies );
|
| 425 |
-
})
|
| 426 |
-
.bind( 'applyWidgetId' + namespace, function( e, id ) {
|
| 427 |
-
e.stopPropagation();
|
| 428 |
-
ts.applyWidgetId( this, id );
|
| 429 |
-
})
|
| 430 |
-
.bind( 'applyWidgets' + namespace, function( e, callback ) {
|
| 431 |
-
e.stopPropagation();
|
| 432 |
-
// apply widgets (false = not initializing)
|
| 433 |
-
ts.applyWidget( this, false, callback );
|
| 434 |
-
})
|
| 435 |
-
.bind( 'refreshWidgets' + namespace, function( e, all, dontapply ) {
|
| 436 |
-
e.stopPropagation();
|
| 437 |
-
ts.refreshWidgets( this, all, dontapply );
|
| 438 |
-
})
|
| 439 |
-
.bind( 'removeWidget' + namespace, function( e, name, refreshing ) {
|
| 440 |
-
e.stopPropagation();
|
| 441 |
-
ts.removeWidget( this, name, refreshing );
|
| 442 |
-
})
|
| 443 |
-
.bind( 'destroy' + namespace, function( e, removeClasses, callback ) {
|
| 444 |
-
e.stopPropagation();
|
| 445 |
-
ts.destroy( this, removeClasses, callback );
|
| 446 |
-
})
|
| 447 |
-
.bind( 'resetToLoadState' + namespace, function( e ) {
|
| 448 |
-
e.stopPropagation();
|
| 449 |
-
// remove all widgets
|
| 450 |
-
ts.removeWidget( this, true, false );
|
| 451 |
-
var tmp = $.extend( true, {}, c.originalSettings );
|
| 452 |
-
// restore original settings; this clears out current settings, but does not clear
|
| 453 |
-
// values saved to storage.
|
| 454 |
-
c = $.extend( true, {}, ts.defaults, tmp );
|
| 455 |
-
c.originalSettings = tmp;
|
| 456 |
-
this.hasInitialized = false;
|
| 457 |
-
// setup the entire table again
|
| 458 |
-
ts.setup( this, c );
|
| 459 |
-
});
|
| 460 |
-
},
|
| 461 |
-
|
| 462 |
-
bindEvents : function( table, $headers, core ) {
|
| 463 |
-
table = $( table )[ 0 ];
|
| 464 |
-
var tmp,
|
| 465 |
-
c = table.config,
|
| 466 |
-
namespace = c.namespace,
|
| 467 |
-
downTarget = null;
|
| 468 |
-
if ( core !== true ) {
|
| 469 |
-
$headers.addClass( namespace.slice( 1 ) + '_extra_headers' );
|
| 470 |
-
tmp = ts.getClosest( $headers, 'table' );
|
| 471 |
-
if ( tmp.length && tmp[ 0 ].nodeName === 'TABLE' && tmp[ 0 ] !== table ) {
|
| 472 |
-
$( tmp[ 0 ] ).addClass( namespace.slice( 1 ) + '_extra_table' );
|
| 473 |
-
}
|
| 474 |
-
}
|
| 475 |
-
tmp = ( c.pointerDown + ' ' + c.pointerUp + ' ' + c.pointerClick + ' sort keyup ' )
|
| 476 |
-
.replace( ts.regex.spaces, ' ' )
|
| 477 |
-
.split( ' ' )
|
| 478 |
-
.join( namespace + ' ' );
|
| 479 |
-
// apply event handling to headers and/or additional headers (stickyheaders, scroller, etc)
|
| 480 |
-
$headers
|
| 481 |
-
// http://stackoverflow.com/questions/5312849/jquery-find-self;
|
| 482 |
-
.find( c.selectorSort )
|
| 483 |
-
.add( $headers.filter( c.selectorSort ) )
|
| 484 |
-
.unbind( tmp )
|
| 485 |
-
.bind( tmp, function( e, external ) {
|
| 486 |
-
var $cell, cell, temp,
|
| 487 |
-
$target = $( e.target ),
|
| 488 |
-
// wrap event type in spaces, so the match doesn't trigger on inner words
|
| 489 |
-
type = ' ' + e.type + ' ';
|
| 490 |
-
// only recognize left clicks
|
| 491 |
-
if ( ( ( e.which || e.button ) !== 1 && !type.match( ' ' + c.pointerClick + ' | sort | keyup ' ) ) ||
|
| 492 |
-
// allow pressing enter
|
| 493 |
-
( type === ' keyup ' && e.which !== ts.keyCodes.enter ) ||
|
| 494 |
-
// allow triggering a click event (e.which is undefined) & ignore physical clicks
|
| 495 |
-
( type.match( ' ' + c.pointerClick + ' ' ) && typeof e.which !== 'undefined' ) ) {
|
| 496 |
-
return;
|
| 497 |
-
}
|
| 498 |
-
// ignore mouseup if mousedown wasn't on the same target
|
| 499 |
-
if ( type.match( ' ' + c.pointerUp + ' ' ) && downTarget !== e.target && external !== true ) {
|
| 500 |
-
return;
|
| 501 |
-
}
|
| 502 |
-
// set target on mousedown
|
| 503 |
-
if ( type.match( ' ' + c.pointerDown + ' ' ) ) {
|
| 504 |
-
downTarget = e.target;
|
| 505 |
-
// preventDefault needed or jQuery v1.3.2 and older throws an
|
| 506 |
-
// "Uncaught TypeError: handler.apply is not a function" error
|
| 507 |
-
temp = $target.jquery.split( '.' );
|
| 508 |
-
if ( temp[ 0 ] === '1' && temp[ 1 ] < 4 ) { e.preventDefault(); }
|
| 509 |
-
return;
|
| 510 |
-
}
|
| 511 |
-
downTarget = null;
|
| 512 |
-
$cell = ts.getClosest( $( this ), '.' + ts.css.header );
|
| 513 |
-
// prevent sort being triggered on form elements
|
| 514 |
-
if ( ts.regex.formElements.test( e.target.nodeName ) ||
|
| 515 |
-
// nosort class name, or elements within a nosort container
|
| 516 |
-
$target.hasClass( c.cssNoSort ) || $target.parents( '.' + c.cssNoSort ).length > 0 ||
|
| 517 |
-
// disabled cell directly clicked
|
| 518 |
-
$cell.hasClass( 'sorter-false' ) ||
|
| 519 |
-
// elements within a button
|
| 520 |
-
$target.parents( 'button' ).length > 0 ) {
|
| 521 |
-
return !c.cancelSelection;
|
| 522 |
-
}
|
| 523 |
-
if ( c.delayInit && ts.isEmptyObject( c.cache ) ) {
|
| 524 |
-
ts.buildCache( c );
|
| 525 |
-
}
|
| 526 |
-
// use column index from data-attribute or index of current row; fixes #1116
|
| 527 |
-
c.last.clickedIndex = $cell.attr( 'data-column' ) || $cell.index();
|
| 528 |
-
cell = c.$headerIndexed[ c.last.clickedIndex ][0];
|
| 529 |
-
if ( cell && !cell.sortDisabled ) {
|
| 530 |
-
ts.initSort( c, cell, e );
|
| 531 |
-
}
|
| 532 |
-
});
|
| 533 |
-
if ( c.cancelSelection ) {
|
| 534 |
-
// cancel selection
|
| 535 |
-
$headers
|
| 536 |
-
.attr( 'unselectable', 'on' )
|
| 537 |
-
.bind( 'selectstart', false )
|
| 538 |
-
.css({
|
| 539 |
-
'user-select' : 'none',
|
| 540 |
-
'MozUserSelect' : 'none' // not needed for jQuery 1.8+
|
| 541 |
-
});
|
| 542 |
-
}
|
| 543 |
-
},
|
| 544 |
-
|
| 545 |
-
buildHeaders : function( c ) {
|
| 546 |
-
var $temp, icon, timer, indx;
|
| 547 |
-
c.headerList = [];
|
| 548 |
-
c.headerContent = [];
|
| 549 |
-
c.sortVars = [];
|
| 550 |
-
if ( ts.debug(c, 'core') ) {
|
| 551 |
-
timer = new Date();
|
| 552 |
-
}
|
| 553 |
-
// children tr in tfoot - see issue #196 & #547
|
| 554 |
-
// don't pass table.config to computeColumnIndex here - widgets (math) pass it to "quickly" index tbody cells
|
| 555 |
-
c.columns = ts.computeColumnIndex( c.$table.children( 'thead, tfoot' ).children( 'tr' ) );
|
| 556 |
-
// add icon if cssIcon option exists
|
| 557 |
-
icon = c.cssIcon ?
|
| 558 |
-
'<i class="' + ( c.cssIcon === ts.css.icon ? ts.css.icon : c.cssIcon + ' ' + ts.css.icon ) + '"></i>' :
|
| 559 |
-
'';
|
| 560 |
-
// redefine c.$headers here in case of an updateAll that replaces or adds an entire header cell - see #683
|
| 561 |
-
c.$headers = $( $.map( c.$table.find( c.selectorHeaders ), function( elem, index ) {
|
| 562 |
-
var configHeaders, header, column, template, tmp,
|
| 563 |
-
$elem = $( elem );
|
| 564 |
-
// ignore cell (don't add it to c.$headers) if row has ignoreRow class
|
| 565 |
-
if ( ts.getClosest( $elem, 'tr' ).hasClass( c.cssIgnoreRow ) ) { return; }
|
| 566 |
-
// transfer data-column to element if not th/td - #1459
|
| 567 |
-
if ( !/(th|td)/i.test( elem.nodeName ) ) {
|
| 568 |
-
tmp = ts.getClosest( $elem, 'th, td' );
|
| 569 |
-
$elem.attr( 'data-column', tmp.attr( 'data-column' ) );
|
| 570 |
-
}
|
| 571 |
-
// make sure to get header cell & not column indexed cell
|
| 572 |
-
configHeaders = ts.getColumnData( c.table, c.headers, index, true );
|
| 573 |
-
// save original header content
|
| 574 |
-
c.headerContent[ index ] = $elem.html();
|
| 575 |
-
// if headerTemplate is empty, don't reformat the header cell
|
| 576 |
-
if ( c.headerTemplate !== '' && !$elem.find( '.' + ts.css.headerIn ).length ) {
|
| 577 |
-
// set up header template
|
| 578 |
-
template = c.headerTemplate
|
| 579 |
-
.replace( ts.regex.templateContent, $elem.html() )
|
| 580 |
-
.replace( ts.regex.templateIcon, $elem.find( '.' + ts.css.icon ).length ? '' : icon );
|
| 581 |
-
if ( c.onRenderTemplate ) {
|
| 582 |
-
header = c.onRenderTemplate.apply( $elem, [ index, template ] );
|
| 583 |
-
// only change t if something is returned
|
| 584 |
-
if ( header && typeof header === 'string' ) {
|
| 585 |
-
template = header;
|
| 586 |
-
}
|
| 587 |
-
}
|
| 588 |
-
$elem.html( '<div class="' + ts.css.headerIn + '">' + template + '</div>' ); // faster than wrapInner
|
| 589 |
-
}
|
| 590 |
-
if ( c.onRenderHeader ) {
|
| 591 |
-
c.onRenderHeader.apply( $elem, [ index, c, c.$table ] );
|
| 592 |
-
}
|
| 593 |
-
column = parseInt( $elem.attr( 'data-column' ), 10 );
|
| 594 |
-
elem.column = column;
|
| 595 |
-
tmp = ts.getOrder( ts.getData( $elem, configHeaders, 'sortInitialOrder' ) || c.sortInitialOrder );
|
| 596 |
-
// this may get updated numerous times if there are multiple rows
|
| 597 |
-
c.sortVars[ column ] = {
|
| 598 |
-
count : -1, // set to -1 because clicking on the header automatically adds one
|
| 599 |
-
order : tmp ?
|
| 600 |
-
( c.sortReset ? [ 1, 0, 2 ] : [ 1, 0 ] ) : // desc, asc, unsorted
|
| 601 |
-
( c.sortReset ? [ 0, 1, 2 ] : [ 0, 1 ] ), // asc, desc, unsorted
|
| 602 |
-
lockedOrder : false,
|
| 603 |
-
sortedBy : ''
|
| 604 |
-
};
|
| 605 |
-
tmp = ts.getData( $elem, configHeaders, 'lockedOrder' ) || false;
|
| 606 |
-
if ( typeof tmp !== 'undefined' && tmp !== false ) {
|
| 607 |
-
c.sortVars[ column ].lockedOrder = true;
|
| 608 |
-
c.sortVars[ column ].order = ts.getOrder( tmp ) ? [ 1, 1 ] : [ 0, 0 ];
|
| 609 |
-
}
|
| 610 |
-
// add cell to headerList
|
| 611 |
-
c.headerList[ index ] = elem;
|
| 612 |
-
$elem.addClass( ts.css.header + ' ' + c.cssHeader );
|
| 613 |
-
// add to parent in case there are multiple rows
|
| 614 |
-
ts.getClosest( $elem, 'tr' )
|
| 615 |
-
.addClass( ts.css.headerRow + ' ' + c.cssHeaderRow )
|
| 616 |
-
.attr( 'role', 'row' );
|
| 617 |
-
// allow keyboard cursor to focus on element
|
| 618 |
-
if ( c.tabIndex ) {
|
| 619 |
-
$elem.attr( 'tabindex', 0 );
|
| 620 |
-
}
|
| 621 |
-
return elem;
|
| 622 |
-
}) );
|
| 623 |
-
// cache headers per column
|
| 624 |
-
c.$headerIndexed = [];
|
| 625 |
-
for ( indx = 0; indx < c.columns; indx++ ) {
|
| 626 |
-
// colspan in header making a column undefined
|
| 627 |
-
if ( ts.isEmptyObject( c.sortVars[ indx ] ) ) {
|
| 628 |
-
c.sortVars[ indx ] = {};
|
| 629 |
-
}
|
| 630 |
-
// Use c.$headers.parent() in case selectorHeaders doesn't point to the th/td
|
| 631 |
-
$temp = c.$headers.filter( '[data-column="' + indx + '"]' );
|
| 632 |
-
// target sortable column cells, unless there are none, then use non-sortable cells
|
| 633 |
-
// .last() added in jQuery 1.4; use .filter(':last') to maintain compatibility with jQuery v1.2.6
|
| 634 |
-
c.$headerIndexed[ indx ] = $temp.length ?
|
| 635 |
-
$temp.not( '.sorter-false' ).length ?
|
| 636 |
-
$temp.not( '.sorter-false' ).filter( ':last' ) :
|
| 637 |
-
$temp.filter( ':last' ) :
|
| 638 |
-
$();
|
| 639 |
-
}
|
| 640 |
-
c.$table.find( c.selectorHeaders ).attr({
|
| 641 |
-
scope: 'col',
|
| 642 |
-
role : 'columnheader'
|
| 643 |
-
});
|
| 644 |
-
// enable/disable sorting
|
| 645 |
-
ts.updateHeader( c );
|
| 646 |
-
if ( ts.debug(c, 'core') ) {
|
| 647 |
-
console.log( 'Built headers:' + ts.benchmark( timer ) );
|
| 648 |
-
console.log( c.$headers );
|
| 649 |
-
}
|
| 650 |
-
},
|
| 651 |
-
|
| 652 |
-
// Use it to add a set of methods to table.config which will be available for all tables.
|
| 653 |
-
// This should be done before table initialization
|
| 654 |
-
addInstanceMethods : function( methods ) {
|
| 655 |
-
$.extend( ts.instanceMethods, methods );
|
| 656 |
-
},
|
| 657 |
-
|
| 658 |
-
/*
|
| 659 |
-
█████▄ ▄████▄ █████▄ ▄█████ ██████ █████▄ ▄█████
|
| 660 |
-
██▄▄██ ██▄▄██ ██▄▄██ ▀█▄ ██▄▄ ██▄▄██ ▀█▄
|
| 661 |
-
██▀▀▀ ██▀▀██ ██▀██ ▀█▄ ██▀▀ ██▀██ ▀█▄
|
| 662 |
-
██ ██ ██ ██ ██ █████▀ ██████ ██ ██ █████▀
|
| 663 |
-
*/
|
| 664 |
-
setupParsers : function( c, $tbodies ) {
|
| 665 |
-
var rows, list, span, max, colIndex, indx, header, configHeaders,
|
| 666 |
-
noParser, parser, extractor, time, tbody, len,
|
| 667 |
-
table = c.table,
|
| 668 |
-
tbodyIndex = 0,
|
| 669 |
-
debug = ts.debug(c, 'core'),
|
| 670 |
-
debugOutput = {};
|
| 671 |
-
// update table bodies in case we start with an empty table
|
| 672 |
-
c.$tbodies = c.$table.children( 'tbody:not(.' + c.cssInfoBlock + ')' );
|
| 673 |
-
tbody = typeof $tbodies === 'undefined' ? c.$tbodies : $tbodies;
|
| 674 |
-
len = tbody.length;
|
| 675 |
-
if ( len === 0 ) {
|
| 676 |
-
return debug ? console.warn( 'Warning: *Empty table!* Not building a parser cache' ) : '';
|
| 677 |
-
} else if ( debug ) {
|
| 678 |
-
time = new Date();
|
| 679 |
-
console[ console.group ? 'group' : 'log' ]( 'Detecting parsers for each column' );
|
| 680 |
-
}
|
| 681 |
-
list = {
|
| 682 |
-
extractors: [],
|
| 683 |
-
parsers: []
|
| 684 |
-
};
|
| 685 |
-
while ( tbodyIndex < len ) {
|
| 686 |
-
rows = tbody[ tbodyIndex ].rows;
|
| 687 |
-
if ( rows.length ) {
|
| 688 |
-
colIndex = 0;
|
| 689 |
-
max = c.columns;
|
| 690 |
-
for ( indx = 0; indx < max; indx++ ) {
|
| 691 |
-
header = c.$headerIndexed[ colIndex ];
|
| 692 |
-
if ( header && header.length ) {
|
| 693 |
-
// get column indexed table cell; adding true parameter fixes #1362 but
|
| 694 |
-
// it would break backwards compatibility...
|
| 695 |
-
configHeaders = ts.getColumnData( table, c.headers, colIndex ); // , true );
|
| 696 |
-
// get column parser/extractor
|
| 697 |
-
extractor = ts.getParserById( ts.getData( header, configHeaders, 'extractor' ) );
|
| 698 |
-
parser = ts.getParserById( ts.getData( header, configHeaders, 'sorter' ) );
|
| 699 |
-
noParser = ts.getData( header, configHeaders, 'parser' ) === 'false';
|
| 700 |
-
// empty cells behaviour - keeping emptyToBottom for backwards compatibility
|
| 701 |
-
c.empties[colIndex] = (
|
| 702 |
-
ts.getData( header, configHeaders, 'empty' ) ||
|
| 703 |
-
c.emptyTo || ( c.emptyToBottom ? 'bottom' : 'top' ) ).toLowerCase();
|
| 704 |
-
// text strings behaviour in numerical sorts
|
| 705 |
-
c.strings[colIndex] = (
|
| 706 |
-
ts.getData( header, configHeaders, 'string' ) ||
|
| 707 |
-
c.stringTo ||
|
| 708 |
-
'max' ).toLowerCase();
|
| 709 |
-
if ( noParser ) {
|
| 710 |
-
parser = ts.getParserById( 'no-parser' );
|
| 711 |
-
}
|
| 712 |
-
if ( !extractor ) {
|
| 713 |
-
// For now, maybe detect someday
|
| 714 |
-
extractor = false;
|
| 715 |
-
}
|
| 716 |
-
if ( !parser ) {
|
| 717 |
-
parser = ts.detectParserForColumn( c, rows, -1, colIndex );
|
| 718 |
-
}
|
| 719 |
-
if ( debug ) {
|
| 720 |
-
debugOutput[ '(' + colIndex + ') ' + header.text() ] = {
|
| 721 |
-
parser : parser.id,
|
| 722 |
-
extractor : extractor ? extractor.id : 'none',
|
| 723 |
-
string : c.strings[ colIndex ],
|
| 724 |
-
empty : c.empties[ colIndex ]
|
| 725 |
-
};
|
| 726 |
-
}
|
| 727 |
-
list.parsers[ colIndex ] = parser;
|
| 728 |
-
list.extractors[ colIndex ] = extractor;
|
| 729 |
-
span = header[ 0 ].colSpan - 1;
|
| 730 |
-
if ( span > 0 ) {
|
| 731 |
-
colIndex += span;
|
| 732 |
-
max += span;
|
| 733 |
-
while ( span + 1 > 0 ) {
|
| 734 |
-
// set colspan columns to use the same parsers & extractors
|
| 735 |
-
list.parsers[ colIndex - span ] = parser;
|
| 736 |
-
list.extractors[ colIndex - span ] = extractor;
|
| 737 |
-
span--;
|
| 738 |
-
}
|
| 739 |
-
}
|
| 740 |
-
}
|
| 741 |
-
colIndex++;
|
| 742 |
-
}
|
| 743 |
-
}
|
| 744 |
-
tbodyIndex += ( list.parsers.length ) ? len : 1;
|
| 745 |
-
}
|
| 746 |
-
if ( debug ) {
|
| 747 |
-
if ( !ts.isEmptyObject( debugOutput ) ) {
|
| 748 |
-
console[ console.table ? 'table' : 'log' ]( debugOutput );
|
| 749 |
-
} else {
|
| 750 |
-
console.warn( ' No parsers detected!' );
|
| 751 |
-
}
|
| 752 |
-
console.log( 'Completed detecting parsers' + ts.benchmark( time ) );
|
| 753 |
-
if ( console.groupEnd ) { console.groupEnd(); }
|
| 754 |
-
}
|
| 755 |
-
c.parsers = list.parsers;
|
| 756 |
-
c.extractors = list.extractors;
|
| 757 |
-
},
|
| 758 |
-
|
| 759 |
-
addParser : function( parser ) {
|
| 760 |
-
var indx,
|
| 761 |
-
len = ts.parsers.length,
|
| 762 |
-
add = true;
|
| 763 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 764 |
-
if ( ts.parsers[ indx ].id.toLowerCase() === parser.id.toLowerCase() ) {
|
| 765 |
-
add = false;
|
| 766 |
-
}
|
| 767 |
-
}
|
| 768 |
-
if ( add ) {
|
| 769 |
-
ts.parsers[ ts.parsers.length ] = parser;
|
| 770 |
-
}
|
| 771 |
-
},
|
| 772 |
-
|
| 773 |
-
getParserById : function( name ) {
|
| 774 |
-
/*jshint eqeqeq:false */ // eslint-disable-next-line eqeqeq
|
| 775 |
-
if ( name == 'false' ) { return false; }
|
| 776 |
-
var indx,
|
| 777 |
-
len = ts.parsers.length;
|
| 778 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 779 |
-
if ( ts.parsers[ indx ].id.toLowerCase() === ( name.toString() ).toLowerCase() ) {
|
| 780 |
-
return ts.parsers[ indx ];
|
| 781 |
-
}
|
| 782 |
-
}
|
| 783 |
-
return false;
|
| 784 |
-
},
|
| 785 |
-
|
| 786 |
-
detectParserForColumn : function( c, rows, rowIndex, cellIndex ) {
|
| 787 |
-
var cur, $node, row,
|
| 788 |
-
indx = ts.parsers.length,
|
| 789 |
-
node = false,
|
| 790 |
-
nodeValue = '',
|
| 791 |
-
debug = ts.debug(c, 'core'),
|
| 792 |
-
keepLooking = true;
|
| 793 |
-
while ( nodeValue === '' && keepLooking ) {
|
| 794 |
-
rowIndex++;
|
| 795 |
-
row = rows[ rowIndex ];
|
| 796 |
-
// stop looking after 50 empty rows
|
| 797 |
-
if ( row && rowIndex < 50 ) {
|
| 798 |
-
if ( row.className.indexOf( ts.cssIgnoreRow ) < 0 ) {
|
| 799 |
-
node = rows[ rowIndex ].cells[ cellIndex ];
|
| 800 |
-
nodeValue = ts.getElementText( c, node, cellIndex );
|
| 801 |
-
$node = $( node );
|
| 802 |
-
if ( debug ) {
|
| 803 |
-
console.log( 'Checking if value was empty on row ' + rowIndex + ', column: ' +
|
| 804 |
-
cellIndex + ': "' + nodeValue + '"' );
|
| 805 |
-
}
|
| 806 |
-
}
|
| 807 |
-
} else {
|
| 808 |
-
keepLooking = false;
|
| 809 |
-
}
|
| 810 |
-
}
|
| 811 |
-
while ( --indx >= 0 ) {
|
| 812 |
-
cur = ts.parsers[ indx ];
|
| 813 |
-
// ignore the default text parser because it will always be true
|
| 814 |
-
if ( cur && cur.id !== 'text' && cur.is && cur.is( nodeValue, c.table, node, $node ) ) {
|
| 815 |
-
return cur;
|
| 816 |
-
}
|
| 817 |
-
}
|
| 818 |
-
// nothing found, return the generic parser (text)
|
| 819 |
-
return ts.getParserById( 'text' );
|
| 820 |
-
},
|
| 821 |
-
|
| 822 |
-
getElementText : function( c, node, cellIndex ) {
|
| 823 |
-
if ( !node ) { return ''; }
|
| 824 |
-
var tmp,
|
| 825 |
-
extract = c.textExtraction || '',
|
| 826 |
-
// node could be a jquery object
|
| 827 |
-
// http://jsperf.com/jquery-vs-instanceof-jquery/2
|
| 828 |
-
$node = node.jquery ? node : $( node );
|
| 829 |
-
if ( typeof extract === 'string' ) {
|
| 830 |
-
// check data-attribute first when set to 'basic'; don't use node.innerText - it's really slow!
|
| 831 |
-
// http://www.kellegous.com/j/2013/02/27/innertext-vs-textcontent/
|
| 832 |
-
if ( extract === 'basic' && typeof ( tmp = $node.attr( c.textAttribute ) ) !== 'undefined' ) {
|
| 833 |
-
return $.trim( tmp );
|
| 834 |
-
}
|
| 835 |
-
return $.trim( node.textContent || $node.text() );
|
| 836 |
-
} else {
|
| 837 |
-
if ( typeof extract === 'function' ) {
|
| 838 |
-
return $.trim( extract( $node[ 0 ], c.table, cellIndex ) );
|
| 839 |
-
} else if ( typeof ( tmp = ts.getColumnData( c.table, extract, cellIndex ) ) === 'function' ) {
|
| 840 |
-
return $.trim( tmp( $node[ 0 ], c.table, cellIndex ) );
|
| 841 |
-
}
|
| 842 |
-
}
|
| 843 |
-
// fallback
|
| 844 |
-
return $.trim( $node[ 0 ].textContent || $node.text() );
|
| 845 |
-
},
|
| 846 |
-
|
| 847 |
-
// centralized function to extract/parse cell contents
|
| 848 |
-
getParsedText : function( c, cell, colIndex, txt ) {
|
| 849 |
-
if ( typeof txt === 'undefined' ) {
|
| 850 |
-
txt = ts.getElementText( c, cell, colIndex );
|
| 851 |
-
}
|
| 852 |
-
// if no parser, make sure to return the txt
|
| 853 |
-
var val = '' + txt,
|
| 854 |
-
parser = c.parsers[ colIndex ],
|
| 855 |
-
extractor = c.extractors[ colIndex ];
|
| 856 |
-
if ( parser ) {
|
| 857 |
-
// do extract before parsing, if there is one
|
| 858 |
-
if ( extractor && typeof extractor.format === 'function' ) {
|
| 859 |
-
txt = extractor.format( txt, c.table, cell, colIndex );
|
| 860 |
-
}
|
| 861 |
-
// allow parsing if the string is empty, previously parsing would change it to zero,
|
| 862 |
-
// in case the parser needs to extract data from the table cell attributes
|
| 863 |
-
val = parser.id === 'no-parser' ? '' :
|
| 864 |
-
// make sure txt is a string (extractor may have converted it)
|
| 865 |
-
parser.format( '' + txt, c.table, cell, colIndex );
|
| 866 |
-
if ( c.ignoreCase && typeof val === 'string' ) {
|
| 867 |
-
val = val.toLowerCase();
|
| 868 |
-
}
|
| 869 |
-
}
|
| 870 |
-
return val;
|
| 871 |
-
},
|
| 872 |
-
|
| 873 |
-
/*
|
| 874 |
-
▄████▄ ▄████▄ ▄████▄ ██ ██ ██████
|
| 875 |
-
██ ▀▀ ██▄▄██ ██ ▀▀ ██▄▄██ ██▄▄
|
| 876 |
-
██ ▄▄ ██▀▀██ ██ ▄▄ ██▀▀██ ██▀▀
|
| 877 |
-
▀████▀ ██ ██ ▀████▀ ██ ██ ██████
|
| 878 |
-
*/
|
| 879 |
-
buildCache : function( c, callback, $tbodies ) {
|
| 880 |
-
var cache, val, txt, rowIndex, colIndex, tbodyIndex, $tbody, $row,
|
| 881 |
-
cols, $cells, cell, cacheTime, totalRows, rowData, prevRowData,
|
| 882 |
-
colMax, span, cacheIndex, hasParser, max, len, index,
|
| 883 |
-
table = c.table,
|
| 884 |
-
parsers = c.parsers,
|
| 885 |
-
debug = ts.debug(c, 'core');
|
| 886 |
-
// update tbody variable
|
| 887 |
-
c.$tbodies = c.$table.children( 'tbody:not(.' + c.cssInfoBlock + ')' );
|
| 888 |
-
$tbody = typeof $tbodies === 'undefined' ? c.$tbodies : $tbodies,
|
| 889 |
-
c.cache = {};
|
| 890 |
-
c.totalRows = 0;
|
| 891 |
-
// if no parsers found, return - it's an empty table.
|
| 892 |
-
if ( !parsers ) {
|
| 893 |
-
return debug ? console.warn( 'Warning: *Empty table!* Not building a cache' ) : '';
|
| 894 |
-
}
|
| 895 |
-
if ( debug ) {
|
| 896 |
-
cacheTime = new Date();
|
| 897 |
-
}
|
| 898 |
-
// processing icon
|
| 899 |
-
if ( c.showProcessing ) {
|
| 900 |
-
ts.isProcessing( table, true );
|
| 901 |
-
}
|
| 902 |
-
for ( tbodyIndex = 0; tbodyIndex < $tbody.length; tbodyIndex++ ) {
|
| 903 |
-
colMax = []; // column max value per tbody
|
| 904 |
-
cache = c.cache[ tbodyIndex ] = {
|
| 905 |
-
normalized: [] // array of normalized row data; last entry contains 'rowData' above
|
| 906 |
-
// colMax: # // added at the end
|
| 907 |
-
};
|
| 908 |
-
|
| 909 |
-
totalRows = ( $tbody[ tbodyIndex ] && $tbody[ tbodyIndex ].rows.length ) || 0;
|
| 910 |
-
for ( rowIndex = 0; rowIndex < totalRows; ++rowIndex ) {
|
| 911 |
-
rowData = {
|
| 912 |
-
// order: original row order #
|
| 913 |
-
// $row : jQuery Object[]
|
| 914 |
-
child: [], // child row text (filter widget)
|
| 915 |
-
raw: [] // original row text
|
| 916 |
-
};
|
| 917 |
-
/** Add the table data to main data array */
|
| 918 |
-
$row = $( $tbody[ tbodyIndex ].rows[ rowIndex ] );
|
| 919 |
-
cols = [];
|
| 920 |
-
// ignore "remove-me" rows
|
| 921 |
-
if ( $row.hasClass( c.selectorRemove.slice(1) ) ) {
|
| 922 |
-
continue;
|
| 923 |
-
}
|
| 924 |
-
// if this is a child row, add it to the last row's children and continue to the next row
|
| 925 |
-
// ignore child row class, if it is the first row
|
| 926 |
-
if ( $row.hasClass( c.cssChildRow ) && rowIndex !== 0 ) {
|
| 927 |
-
len = cache.normalized.length - 1;
|
| 928 |
-
prevRowData = cache.normalized[ len ][ c.columns ];
|
| 929 |
-
prevRowData.$row = prevRowData.$row.add( $row );
|
| 930 |
-
// add 'hasChild' class name to parent row
|
| 931 |
-
if ( !$row.prev().hasClass( c.cssChildRow ) ) {
|
| 932 |
-
$row.prev().addClass( ts.css.cssHasChild );
|
| 933 |
-
}
|
| 934 |
-
// save child row content (un-parsed!)
|
| 935 |
-
$cells = $row.children( 'th, td' );
|
| 936 |
-
len = prevRowData.child.length;
|
| 937 |
-
prevRowData.child[ len ] = [];
|
| 938 |
-
// child row content does not account for colspans/rowspans; so indexing may be off
|
| 939 |
-
cacheIndex = 0;
|
| 940 |
-
max = c.columns;
|
| 941 |
-
for ( colIndex = 0; colIndex < max; colIndex++ ) {
|
| 942 |
-
cell = $cells[ colIndex ];
|
| 943 |
-
if ( cell ) {
|
| 944 |
-
prevRowData.child[ len ][ colIndex ] = ts.getParsedText( c, cell, colIndex );
|
| 945 |
-
span = $cells[ colIndex ].colSpan - 1;
|
| 946 |
-
if ( span > 0 ) {
|
| 947 |
-
cacheIndex += span;
|
| 948 |
-
max += span;
|
| 949 |
-
}
|
| 950 |
-
}
|
| 951 |
-
cacheIndex++;
|
| 952 |
-
}
|
| 953 |
-
// go to the next for loop
|
| 954 |
-
continue;
|
| 955 |
-
}
|
| 956 |
-
rowData.$row = $row;
|
| 957 |
-
rowData.order = rowIndex; // add original row position to rowCache
|
| 958 |
-
cacheIndex = 0;
|
| 959 |
-
max = c.columns;
|
| 960 |
-
for ( colIndex = 0; colIndex < max; ++colIndex ) {
|
| 961 |
-
cell = $row[ 0 ].cells[ colIndex ];
|
| 962 |
-
if ( cell && cacheIndex < c.columns ) {
|
| 963 |
-
hasParser = typeof parsers[ cacheIndex ] !== 'undefined';
|
| 964 |
-
if ( !hasParser && debug ) {
|
| 965 |
-
console.warn( 'No parser found for row: ' + rowIndex + ', column: ' + colIndex +
|
| 966 |
-
'; cell containing: "' + $(cell).text() + '"; does it have a header?' );
|
| 967 |
-
}
|
| 968 |
-
val = ts.getElementText( c, cell, cacheIndex );
|
| 969 |
-
rowData.raw[ cacheIndex ] = val; // save original row text
|
| 970 |
-
// save raw column text even if there is no parser set
|
| 971 |
-
txt = ts.getParsedText( c, cell, cacheIndex, val );
|
| 972 |
-
cols[ cacheIndex ] = txt;
|
| 973 |
-
if ( hasParser && ( parsers[ cacheIndex ].type || '' ).toLowerCase() === 'numeric' ) {
|
| 974 |
-
// determine column max value (ignore sign)
|
| 975 |
-
colMax[ cacheIndex ] = Math.max( Math.abs( txt ) || 0, colMax[ cacheIndex ] || 0 );
|
| 976 |
-
}
|
| 977 |
-
// allow colSpan in tbody
|
| 978 |
-
span = cell.colSpan - 1;
|
| 979 |
-
if ( span > 0 ) {
|
| 980 |
-
index = 0;
|
| 981 |
-
while ( index <= span ) {
|
| 982 |
-
// duplicate text (or not) to spanned columns
|
| 983 |
-
// instead of setting duplicate span to empty string, use textExtraction to try to get a value
|
| 984 |
-
// see http://stackoverflow.com/q/36449711/145346
|
| 985 |
-
txt = c.duplicateSpan || index === 0 ?
|
| 986 |
-
|
| 987 |
-
typeof c.textExtraction !== 'string' ?
|
| 988 |
-
ts.getElementText( c, cell, cacheIndex + index ) || '' :
|
| 989 |
-
'';
|
| 990 |
-
rowData.raw[ cacheIndex + index ] = txt;
|
| 991 |
-
cols[ cacheIndex + index ] = txt;
|
| 992 |
-
index++;
|
| 993 |
-
}
|
| 994 |
-
cacheIndex += span;
|
| 995 |
-
max += span;
|
| 996 |
-
}
|
| 997 |
-
}
|
| 998 |
-
cacheIndex++;
|
| 999 |
-
}
|
| 1000 |
-
// ensure rowData is always in the same location (after the last column)
|
| 1001 |
-
cols[ c.columns ] = rowData;
|
| 1002 |
-
cache.normalized[ cache.normalized.length ] = cols;
|
| 1003 |
-
}
|
| 1004 |
-
cache.colMax = colMax;
|
| 1005 |
-
// total up rows, not including child rows
|
| 1006 |
-
c.totalRows += cache.normalized.length;
|
| 1007 |
-
|
| 1008 |
-
}
|
| 1009 |
-
if ( c.showProcessing ) {
|
| 1010 |
-
ts.isProcessing( table ); // remove processing icon
|
| 1011 |
-
}
|
| 1012 |
-
if ( debug ) {
|
| 1013 |
-
len = Math.min( 5, c.cache[ 0 ].normalized.length );
|
| 1014 |
-
console[ console.group ? 'group' : 'log' ]( 'Building cache for ' + c.totalRows +
|
| 1015 |
-
' rows (showing ' + len + ' rows in log) and ' + c.columns + ' columns' +
|
| 1016 |
-
ts.benchmark( cacheTime ) );
|
| 1017 |
-
val = {};
|
| 1018 |
-
for ( colIndex = 0; colIndex < c.columns; colIndex++ ) {
|
| 1019 |
-
for ( cacheIndex = 0; cacheIndex < len; cacheIndex++ ) {
|
| 1020 |
-
if ( !val[ 'row: ' + cacheIndex ] ) {
|
| 1021 |
-
val[ 'row: ' + cacheIndex ] = {};
|
| 1022 |
-
}
|
| 1023 |
-
val[ 'row: ' + cacheIndex ][ c.$headerIndexed[ colIndex ].text() ] =
|
| 1024 |
-
c.cache[ 0 ].normalized[ cacheIndex ][ colIndex ];
|
| 1025 |
-
}
|
| 1026 |
-
}
|
| 1027 |
-
console[ console.table ? 'table' : 'log' ]( val );
|
| 1028 |
-
if ( console.groupEnd ) { console.groupEnd(); }
|
| 1029 |
-
}
|
| 1030 |
-
if ( $.isFunction( callback ) ) {
|
| 1031 |
-
callback( table );
|
| 1032 |
-
}
|
| 1033 |
-
},
|
| 1034 |
-
|
| 1035 |
-
getColumnText : function( table, column, callback, rowFilter ) {
|
| 1036 |
-
table = $( table )[0];
|
| 1037 |
-
var tbodyIndex, rowIndex, cache, row, tbodyLen, rowLen, raw, parsed, $cell, result,
|
| 1038 |
-
hasCallback = typeof callback === 'function',
|
| 1039 |
-
allColumns = column === 'all',
|
| 1040 |
-
data = { raw : [], parsed: [], $cell: [] },
|
| 1041 |
-
c = table.config;
|
| 1042 |
-
if ( ts.isEmptyObject( c ) ) {
|
| 1043 |
-
if ( ts.debug(c, 'core') ) {
|
| 1044 |
-
console.warn( 'No cache found - aborting getColumnText function!' );
|
| 1045 |
-
}
|
| 1046 |
-
} else {
|
| 1047 |
-
tbodyLen = c.$tbodies.length;
|
| 1048 |
-
for ( tbodyIndex = 0; tbodyIndex < tbodyLen; tbodyIndex++ ) {
|
| 1049 |
-
cache = c.cache[ tbodyIndex ].normalized;
|
| 1050 |
-
rowLen = cache.length;
|
| 1051 |
-
for ( rowIndex = 0; rowIndex < rowLen; rowIndex++ ) {
|
| 1052 |
-
row = cache[ rowIndex ];
|
| 1053 |
-
if ( rowFilter && !row[ c.columns ].$row.is( rowFilter ) ) {
|
| 1054 |
-
continue;
|
| 1055 |
-
}
|
| 1056 |
-
result = true;
|
| 1057 |
-
parsed = ( allColumns ) ? row.slice( 0, c.columns ) : row[ column ];
|
| 1058 |
-
row = row[ c.columns ];
|
| 1059 |
-
raw = ( allColumns ) ? row.raw : row.raw[ column ];
|
| 1060 |
-
$cell = ( allColumns ) ? row.$row.children() : row.$row.children().eq( column );
|
| 1061 |
-
if ( hasCallback ) {
|
| 1062 |
-
result = callback({
|
| 1063 |
-
tbodyIndex : tbodyIndex,
|
| 1064 |
-
rowIndex : rowIndex,
|
| 1065 |
-
parsed : parsed,
|
| 1066 |
-
raw : raw,
|
| 1067 |
-
$row : row.$row,
|
| 1068 |
-
$cell : $cell
|
| 1069 |
-
});
|
| 1070 |
-
}
|
| 1071 |
-
if ( result !== false ) {
|
| 1072 |
-
data.parsed[ data.parsed.length ] = parsed;
|
| 1073 |
-
data.raw[ data.raw.length ] = raw;
|
| 1074 |
-
data.$cell[ data.$cell.length ] = $cell;
|
| 1075 |
-
}
|
| 1076 |
-
}
|
| 1077 |
-
}
|
| 1078 |
-
// return everything
|
| 1079 |
-
return data;
|
| 1080 |
-
}
|
| 1081 |
-
},
|
| 1082 |
-
|
| 1083 |
-
/*
|
| 1084 |
-
██ ██ █████▄ █████▄ ▄████▄ ██████ ██████
|
| 1085 |
-
██ ██ ██▄▄██ ██ ██ ██▄▄██ ██ ██▄▄
|
| 1086 |
-
██ ██ ██▀▀▀ ██ ██ ██▀▀██ ██ ██▀▀
|
| 1087 |
-
▀████▀ ██ █████▀ ██ ██ ██ ██████
|
| 1088 |
-
*/
|
| 1089 |
-
setHeadersCss : function( c ) {
|
| 1090 |
-
var indx, column,
|
| 1091 |
-
list = c.sortList,
|
| 1092 |
-
len = list.length,
|
| 1093 |
-
none = ts.css.sortNone + ' ' + c.cssNone,
|
| 1094 |
-
css = [ ts.css.sortAsc + ' ' + c.cssAsc, ts.css.sortDesc + ' ' + c.cssDesc ],
|
| 1095 |
-
cssIcon = [ c.cssIconAsc, c.cssIconDesc, c.cssIconNone ],
|
| 1096 |
-
aria = [ 'ascending', 'descending' ],
|
| 1097 |
-
updateColumnSort = function($el, index) {
|
| 1098 |
-
$el
|
| 1099 |
-
.removeClass( none )
|
| 1100 |
-
.addClass( css[ index ] )
|
| 1101 |
-
.attr( 'aria-sort', aria[ index ] )
|
| 1102 |
-
.find( '.' + ts.css.icon )
|
| 1103 |
-
.removeClass( cssIcon[ 2 ] )
|
| 1104 |
-
.addClass( cssIcon[ index ] );
|
| 1105 |
-
},
|
| 1106 |
-
// find the footer
|
| 1107 |
-
$extras = c.$table
|
| 1108 |
-
.find( 'tfoot tr' )
|
| 1109 |
-
.children( 'td, th' )
|
| 1110 |
-
.add( $( c.namespace + '_extra_headers' ) )
|
| 1111 |
-
.removeClass( css.join( ' ' ) ),
|
| 1112 |
-
// remove all header information
|
| 1113 |
-
$sorted = c.$headers
|
| 1114 |
-
.add( $( 'thead ' + c.namespace + '_extra_headers' ) )
|
| 1115 |
-
.removeClass( css.join( ' ' ) )
|
| 1116 |
-
.addClass( none )
|
| 1117 |
-
.attr( 'aria-sort', 'none' )
|
| 1118 |
-
.find( '.' + ts.css.icon )
|
| 1119 |
-
.removeClass( cssIcon.join( ' ' ) )
|
| 1120 |
-
.end();
|
| 1121 |
-
// add css none to all sortable headers
|
| 1122 |
-
$sorted
|
| 1123 |
-
.not( '.sorter-false' )
|
| 1124 |
-
.find( '.' + ts.css.icon )
|
| 1125 |
-
.addClass( cssIcon[ 2 ] );
|
| 1126 |
-
// add disabled css icon class
|
| 1127 |
-
if ( c.cssIconDisabled ) {
|
| 1128 |
-
$sorted
|
| 1129 |
-
.filter( '.sorter-false' )
|
| 1130 |
-
.find( '.' + ts.css.icon )
|
| 1131 |
-
.addClass( c.cssIconDisabled );
|
| 1132 |
-
}
|
| 1133 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 1134 |
-
// direction = 2 means reset!
|
| 1135 |
-
if ( list[ indx ][ 1 ] !== 2 ) {
|
| 1136 |
-
// multicolumn sorting updating - see #1005
|
| 1137 |
-
// .not(function() {}) needs jQuery 1.4
|
| 1138 |
-
// filter(function(i, el) {}) <- el is undefined in jQuery v1.2.6
|
| 1139 |
-
$sorted = c.$headers.filter( function( i ) {
|
| 1140 |
-
// only include headers that are in the sortList (this includes colspans)
|
| 1141 |
-
var include = true,
|
| 1142 |
-
$el = c.$headers.eq( i ),
|
| 1143 |
-
col = parseInt( $el.attr( 'data-column' ), 10 ),
|
| 1144 |
-
end = col + ts.getClosest( $el, 'th, td' )[0].colSpan;
|
| 1145 |
-
for ( ; col < end; col++ ) {
|
| 1146 |
-
include = include ? include || ts.isValueInArray( col, c.sortList ) > -1 : false;
|
| 1147 |
-
}
|
| 1148 |
-
return include;
|
| 1149 |
-
});
|
| 1150 |
-
|
| 1151 |
-
// choose the :last in case there are nested columns
|
| 1152 |
-
$sorted = $sorted
|
| 1153 |
-
.not( '.sorter-false' )
|
| 1154 |
-
.filter( '[data-column="' + list[ indx ][ 0 ] + '"]' + ( len === 1 ? ':last' : '' ) );
|
| 1155 |
-
if ( $sorted.length ) {
|
| 1156 |
-
for ( column = 0; column < $sorted.length; column++ ) {
|
| 1157 |
-
if ( !$sorted[ column ].sortDisabled ) {
|
| 1158 |
-
updateColumnSort( $sorted.eq( column ), list[ indx ][ 1 ] );
|
| 1159 |
-
}
|
| 1160 |
-
}
|
| 1161 |
-
}
|
| 1162 |
-
// add sorted class to footer & extra headers, if they exist
|
| 1163 |
-
if ( $extras.length ) {
|
| 1164 |
-
updateColumnSort( $extras.filter( '[data-column="' + list[ indx ][ 0 ] + '"]' ), list[ indx ][ 1 ] );
|
| 1165 |
-
}
|
| 1166 |
-
}
|
| 1167 |
-
}
|
| 1168 |
-
// add verbose aria labels
|
| 1169 |
-
len = c.$headers.length;
|
| 1170 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 1171 |
-
ts.setColumnAriaLabel( c, c.$headers.eq( indx ) );
|
| 1172 |
-
}
|
| 1173 |
-
},
|
| 1174 |
-
|
| 1175 |
-
getClosest : function( $el, selector ) {
|
| 1176 |
-
// jQuery v1.2.6 doesn't have closest()
|
| 1177 |
-
if ( $.fn.closest ) {
|
| 1178 |
-
return $el.closest( selector );
|
| 1179 |
-
}
|
| 1180 |
-
return $el.is( selector ) ?
|
| 1181 |
-
$el :
|
| 1182 |
-
$el.parents( selector ).filter( ':first' );
|
| 1183 |
-
},
|
| 1184 |
-
|
| 1185 |
-
// nextSort (optional), lets you disable next sort text
|
| 1186 |
-
setColumnAriaLabel : function( c, $header, nextSort ) {
|
| 1187 |
-
if ( $header.length ) {
|
| 1188 |
-
var column = parseInt( $header.attr( 'data-column' ), 10 ),
|
| 1189 |
-
vars = c.sortVars[ column ],
|
| 1190 |
-
tmp = $header.hasClass( ts.css.sortAsc ) ?
|
| 1191 |
-
'sortAsc' :
|
| 1192 |
-
$header.hasClass( ts.css.sortDesc ) ? 'sortDesc' : 'sortNone',
|
| 1193 |
-
txt = $.trim( $header.text() ) + ': ' + ts.language[ tmp ];
|
| 1194 |
-
if ( $header.hasClass( 'sorter-false' ) || nextSort === false ) {
|
| 1195 |
-
txt += ts.language.sortDisabled;
|
| 1196 |
-
} else {
|
| 1197 |
-
tmp = ( vars.count + 1 ) % vars.order.length;
|
| 1198 |
-
nextSort = vars.order[ tmp ];
|
| 1199 |
-
// if nextSort
|
| 1200 |
-
txt += ts.language[ nextSort === 0 ? 'nextAsc' : nextSort === 1 ? 'nextDesc' : 'nextNone' ];
|
| 1201 |
-
}
|
| 1202 |
-
$header.attr( 'aria-label', txt );
|
| 1203 |
-
if (vars.sortedBy) {
|
| 1204 |
-
$header.attr( 'data-sortedBy', vars.sortedBy );
|
| 1205 |
-
} else {
|
| 1206 |
-
$header.removeAttr('data-sortedBy');
|
| 1207 |
-
}
|
| 1208 |
-
}
|
| 1209 |
-
},
|
| 1210 |
-
|
| 1211 |
-
updateHeader : function( c ) {
|
| 1212 |
-
var index, isDisabled, $header, col,
|
| 1213 |
-
table = c.table,
|
| 1214 |
-
len = c.$headers.length;
|
| 1215 |
-
for ( index = 0; index < len; index++ ) {
|
| 1216 |
-
$header = c.$headers.eq( index );
|
| 1217 |
-
col = ts.getColumnData( table, c.headers, index, true );
|
| 1218 |
-
// add 'sorter-false' class if 'parser-false' is set
|
| 1219 |
-
isDisabled = ts.getData( $header, col, 'sorter' ) === 'false' || ts.getData( $header, col, 'parser' ) === 'false';
|
| 1220 |
-
ts.setColumnSort( c, $header, isDisabled );
|
| 1221 |
-
}
|
| 1222 |
-
},
|
| 1223 |
-
|
| 1224 |
-
setColumnSort : function( c, $header, isDisabled ) {
|
| 1225 |
-
var id = c.table.id;
|
| 1226 |
-
$header[ 0 ].sortDisabled = isDisabled;
|
| 1227 |
-
$header[ isDisabled ? 'addClass' : 'removeClass' ]( 'sorter-false' )
|
| 1228 |
-
.attr( 'aria-disabled', '' + isDisabled );
|
| 1229 |
-
// disable tab index on disabled cells
|
| 1230 |
-
if ( c.tabIndex ) {
|
| 1231 |
-
if ( isDisabled ) {
|
| 1232 |
-
$header.removeAttr( 'tabindex' );
|
| 1233 |
-
} else {
|
| 1234 |
-
$header.attr( 'tabindex', '0' );
|
| 1235 |
-
}
|
| 1236 |
-
}
|
| 1237 |
-
// aria-controls - requires table ID
|
| 1238 |
-
if ( id ) {
|
| 1239 |
-
if ( isDisabled ) {
|
| 1240 |
-
$header.removeAttr( 'aria-controls' );
|
| 1241 |
-
} else {
|
| 1242 |
-
$header.attr( 'aria-controls', id );
|
| 1243 |
-
}
|
| 1244 |
-
}
|
| 1245 |
-
},
|
| 1246 |
-
|
| 1247 |
-
updateHeaderSortCount : function( c, list ) {
|
| 1248 |
-
var col, dir, group, indx, primary, temp, val, order,
|
| 1249 |
-
sortList = list || c.sortList,
|
| 1250 |
-
len = sortList.length;
|
| 1251 |
-
c.sortList = [];
|
| 1252 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 1253 |
-
val = sortList[ indx ];
|
| 1254 |
-
// ensure all sortList values are numeric - fixes #127
|
| 1255 |
-
col = parseInt( val[ 0 ], 10 );
|
| 1256 |
-
// prevents error if sorton array is wrong
|
| 1257 |
-
if ( col < c.columns ) {
|
| 1258 |
-
|
| 1259 |
-
// set order if not already defined - due to colspan header without associated header cell
|
| 1260 |
-
// adding this check prevents a javascript error
|
| 1261 |
-
if ( !c.sortVars[ col ].order ) {
|
| 1262 |
-
if ( ts.getOrder( c.sortInitialOrder ) ) {
|
| 1263 |
-
order = c.sortReset ? [ 1, 0, 2 ] : [ 1, 0 ];
|
| 1264 |
-
} else {
|
| 1265 |
-
order = c.sortReset ? [ 0, 1, 2 ] : [ 0, 1 ];
|
| 1266 |
-
}
|
| 1267 |
-
c.sortVars[ col ].order = order;
|
| 1268 |
-
c.sortVars[ col ].count = 0;
|
| 1269 |
-
}
|
| 1270 |
-
|
| 1271 |
-
order = c.sortVars[ col ].order;
|
| 1272 |
-
dir = ( '' + val[ 1 ] ).match( /^(1|d|s|o|n)/ );
|
| 1273 |
-
dir = dir ? dir[ 0 ] : '';
|
| 1274 |
-
// 0/(a)sc (default), 1/(d)esc, (s)ame, (o)pposite, (n)ext
|
| 1275 |
-
switch ( dir ) {
|
| 1276 |
-
case '1' : case 'd' : // descending
|
| 1277 |
-
dir = 1;
|
| 1278 |
-
break;
|
| 1279 |
-
case 's' : // same direction (as primary column)
|
| 1280 |
-
// if primary sort is set to 's', make it ascending
|
| 1281 |
-
dir = primary || 0;
|
| 1282 |
-
break;
|
| 1283 |
-
case 'o' :
|
| 1284 |
-
temp = order[ ( primary || 0 ) % order.length ];
|
| 1285 |
-
// opposite of primary column; but resets if primary resets
|
| 1286 |
-
dir = temp === 0 ? 1 : temp === 1 ? 0 : 2;
|
| 1287 |
-
break;
|
| 1288 |
-
case 'n' :
|
| 1289 |
-
dir = order[ ( ++c.sortVars[ col ].count ) % order.length ];
|
| 1290 |
-
break;
|
| 1291 |
-
default : // ascending
|
| 1292 |
-
dir = 0;
|
| 1293 |
-
break;
|
| 1294 |
-
}
|
| 1295 |
-
primary = indx === 0 ? dir : primary;
|
| 1296 |
-
group = [ col, parseInt( dir, 10 ) || 0 ];
|
| 1297 |
-
c.sortList[ c.sortList.length ] = group;
|
| 1298 |
-
dir = $.inArray( group[ 1 ], order ); // fixes issue #167
|
| 1299 |
-
c.sortVars[ col ].count = dir >= 0 ? dir : group[ 1 ] % order.length;
|
| 1300 |
-
}
|
| 1301 |
-
}
|
| 1302 |
-
},
|
| 1303 |
-
|
| 1304 |
-
updateAll : function( c, resort, callback ) {
|
| 1305 |
-
var table = c.table;
|
| 1306 |
-
table.isUpdating = true;
|
| 1307 |
-
ts.refreshWidgets( table, true, true );
|
| 1308 |
-
ts.buildHeaders( c );
|
| 1309 |
-
ts.bindEvents( table, c.$headers, true );
|
| 1310 |
-
ts.bindMethods( c );
|
| 1311 |
-
ts.commonUpdate( c, resort, callback );
|
| 1312 |
-
},
|
| 1313 |
-
|
| 1314 |
-
update : function( c, resort, callback ) {
|
| 1315 |
-
var table = c.table;
|
| 1316 |
-
table.isUpdating = true;
|
| 1317 |
-
// update sorting (if enabled/disabled)
|
| 1318 |
-
ts.updateHeader( c );
|
| 1319 |
-
ts.commonUpdate( c, resort, callback );
|
| 1320 |
-
},
|
| 1321 |
-
|
| 1322 |
-
// simple header update - see #989
|
| 1323 |
-
updateHeaders : function( c, callback ) {
|
| 1324 |
-
c.table.isUpdating = true;
|
| 1325 |
-
ts.buildHeaders( c );
|
| 1326 |
-
ts.bindEvents( c.table, c.$headers, true );
|
| 1327 |
-
ts.resortComplete( c, callback );
|
| 1328 |
-
},
|
| 1329 |
-
|
| 1330 |
-
updateCell : function( c, cell, resort, callback ) {
|
| 1331 |
-
// updateCell for child rows is a mess - we'll ignore them for now
|
| 1332 |
-
// eventually I'll break out the "update" row cache code to make everything consistent
|
| 1333 |
-
if ( $( cell ).closest( 'tr' ).hasClass( c.cssChildRow ) ) {
|
| 1334 |
-
console.warn('Tablesorter Warning! "updateCell" for child row content has been disabled, use "update" instead');
|
| 1335 |
-
return;
|
| 1336 |
-
}
|
| 1337 |
-
if ( ts.isEmptyObject( c.cache ) ) {
|
| 1338 |
-
// empty table, do an update instead - fixes #1099
|
| 1339 |
-
ts.updateHeader( c );
|
| 1340 |
-
ts.commonUpdate( c, resort, callback );
|
| 1341 |
-
return;
|
| 1342 |
-
}
|
| 1343 |
-
c.table.isUpdating = true;
|
| 1344 |
-
c.$table.find( c.selectorRemove ).remove();
|
| 1345 |
-
// get position from the dom
|
| 1346 |
-
var tmp, indx, row, icell, cache, len,
|
| 1347 |
-
$tbodies = c.$tbodies,
|
| 1348 |
-
$cell = $( cell ),
|
| 1349 |
-
// update cache - format: function( s, table, cell, cellIndex )
|
| 1350 |
-
// no closest in jQuery v1.2.6
|
| 1351 |
-
tbodyIndex = $tbodies.index( ts.getClosest( $cell, 'tbody' ) ),
|
| 1352 |
-
tbcache = c.cache[ tbodyIndex ],
|
| 1353 |
-
$row = ts.getClosest( $cell, 'tr' );
|
| 1354 |
-
cell = $cell[ 0 ]; // in case cell is a jQuery object
|
| 1355 |
-
// tbody may not exist if update is initialized while tbody is removed for processing
|
| 1356 |
-
if ( $tbodies.length && tbodyIndex >= 0 ) {
|
| 1357 |
-
row = $tbodies.eq( tbodyIndex ).find( 'tr' ).not( '.' + c.cssChildRow ).index( $row );
|
| 1358 |
-
cache = tbcache.normalized[ row ];
|
| 1359 |
-
len = $row[ 0 ].cells.length;
|
| 1360 |
-
if ( len !== c.columns ) {
|
| 1361 |
-
// colspan in here somewhere!
|
| 1362 |
-
icell = 0;
|
| 1363 |
-
tmp = false;
|
| 1364 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 1365 |
-
if ( !tmp && $row[ 0 ].cells[ indx ] !== cell ) {
|
| 1366 |
-
icell += $row[ 0 ].cells[ indx ].colSpan;
|
| 1367 |
-
} else {
|
| 1368 |
-
tmp = true;
|
| 1369 |
-
}
|
| 1370 |
-
}
|
| 1371 |
-
} else {
|
| 1372 |
-
icell = $cell.index();
|
| 1373 |
-
}
|
| 1374 |
-
tmp = ts.getElementText( c, cell, icell ); // raw
|
| 1375 |
-
cache[ c.columns ].raw[ icell ] = tmp;
|
| 1376 |
-
tmp = ts.getParsedText( c, cell, icell, tmp );
|
| 1377 |
-
cache[ icell ] = tmp; // parsed
|
| 1378 |
-
if ( ( c.parsers[ icell ].type || '' ).toLowerCase() === 'numeric' ) {
|
| 1379 |
-
// update column max value (ignore sign)
|
| 1380 |
-
tbcache.colMax[ icell ] = Math.max( Math.abs( tmp ) || 0, tbcache.colMax[ icell ] || 0 );
|
| 1381 |
-
}
|
| 1382 |
-
tmp = resort !== 'undefined' ? resort : c.resort;
|
| 1383 |
-
if ( tmp !== false ) {
|
| 1384 |
-
// widgets will be reapplied
|
| 1385 |
-
ts.checkResort( c, tmp, callback );
|
| 1386 |
-
} else {
|
| 1387 |
-
// don't reapply widgets is resort is false, just in case it causes
|
| 1388 |
-
// problems with element focus
|
| 1389 |
-
ts.resortComplete( c, callback );
|
| 1390 |
-
}
|
| 1391 |
-
} else {
|
| 1392 |
-
if ( ts.debug(c, 'core') ) {
|
| 1393 |
-
console.error( 'updateCell aborted, tbody missing or not within the indicated table' );
|
| 1394 |
-
}
|
| 1395 |
-
c.table.isUpdating = false;
|
| 1396 |
-
}
|
| 1397 |
-
},
|
| 1398 |
-
|
| 1399 |
-
addRows : function( c, $row, resort, callback ) {
|
| 1400 |
-
var txt, val, tbodyIndex, rowIndex, rows, cellIndex, len, order,
|
| 1401 |
-
cacheIndex, rowData, cells, cell, span,
|
| 1402 |
-
// allow passing a row string if only one non-info tbody exists in the table
|
| 1403 |
-
valid = typeof $row === 'string' && c.$tbodies.length === 1 && /<tr/.test( $row || '' ),
|
| 1404 |
-
table = c.table;
|
| 1405 |
-
if ( valid ) {
|
| 1406 |
-
$row = $( $row );
|
| 1407 |
-
c.$tbodies.append( $row );
|
| 1408 |
-
} else if (
|
| 1409 |
-
!$row ||
|
| 1410 |
-
// row is a jQuery object?
|
| 1411 |
-
!( $row instanceof $ ) ||
|
| 1412 |
-
// row contained in the table?
|
| 1413 |
-
( ts.getClosest( $row, 'table' )[ 0 ] !== c.table )
|
| 1414 |
-
) {
|
| 1415 |
-
if ( ts.debug(c, 'core') ) {
|
| 1416 |
-
console.error( 'addRows method requires (1) a jQuery selector reference to rows that have already ' +
|
| 1417 |
-
'been added to the table, or (2) row HTML string to be added to a table with only one tbody' );
|
| 1418 |
-
}
|
| 1419 |
-
return false;
|
| 1420 |
-
}
|
| 1421 |
-
table.isUpdating = true;
|
| 1422 |
-
if ( ts.isEmptyObject( c.cache ) ) {
|
| 1423 |
-
// empty table, do an update instead - fixes #450
|
| 1424 |
-
ts.updateHeader( c );
|
| 1425 |
-
ts.commonUpdate( c, resort, callback );
|
| 1426 |
-
} else {
|
| 1427 |
-
rows = $row.filter( 'tr' ).attr( 'role', 'row' ).length;
|
| 1428 |
-
tbodyIndex = c.$tbodies.index( $row.parents( 'tbody' ).filter( ':first' ) );
|
| 1429 |
-
// fixes adding rows to an empty table - see issue #179
|
| 1430 |
-
if ( !( c.parsers && c.parsers.length ) ) {
|
| 1431 |
-
ts.setupParsers( c );
|
| 1432 |
-
}
|
| 1433 |
-
// add each row
|
| 1434 |
-
for ( rowIndex = 0; rowIndex < rows; rowIndex++ ) {
|
| 1435 |
-
cacheIndex = 0;
|
| 1436 |
-
len = $row[ rowIndex ].cells.length;
|
| 1437 |
-
order = c.cache[ tbodyIndex ].normalized.length;
|
| 1438 |
-
cells = [];
|
| 1439 |
-
rowData = {
|
| 1440 |
-
child : [],
|
| 1441 |
-
raw : [],
|
| 1442 |
-
$row : $row.eq( rowIndex ),
|
| 1443 |
-
order : order
|
| 1444 |
-
};
|
| 1445 |
-
// add each cell
|
| 1446 |
-
for ( cellIndex = 0; cellIndex < len; cellIndex++ ) {
|
| 1447 |
-
cell = $row[ rowIndex ].cells[ cellIndex ];
|
| 1448 |
-
txt = ts.getElementText( c, cell, cacheIndex );
|
| 1449 |
-
rowData.raw[ cacheIndex ] = txt;
|
| 1450 |
-
val = ts.getParsedText( c, cell, cacheIndex, txt );
|
| 1451 |
-
cells[ cacheIndex ] = val;
|
| 1452 |
-
if ( ( c.parsers[ cacheIndex ].type || '' ).toLowerCase() === 'numeric' ) {
|
| 1453 |
-
// update column max value (ignore sign)
|
| 1454 |
-
c.cache[ tbodyIndex ].colMax[ cacheIndex ] =
|
| 1455 |
-
Math.max( Math.abs( val ) || 0, c.cache[ tbodyIndex ].colMax[ cacheIndex ] || 0 );
|
| 1456 |
-
}
|
| 1457 |
-
span = cell.colSpan - 1;
|
| 1458 |
-
if ( span > 0 ) {
|
| 1459 |
-
cacheIndex += span;
|
| 1460 |
-
}
|
| 1461 |
-
cacheIndex++;
|
| 1462 |
-
}
|
| 1463 |
-
// add the row data to the end
|
| 1464 |
-
cells[ c.columns ] = rowData;
|
| 1465 |
-
// update cache
|
| 1466 |
-
c.cache[ tbodyIndex ].normalized[ order ] = cells;
|
| 1467 |
-
}
|
| 1468 |
-
// resort using current settings
|
| 1469 |
-
ts.checkResort( c, resort, callback );
|
| 1470 |
-
}
|
| 1471 |
-
},
|
| 1472 |
-
|
| 1473 |
-
updateCache : function( c, callback, $tbodies ) {
|
| 1474 |
-
// rebuild parsers
|
| 1475 |
-
if ( !( c.parsers && c.parsers.length ) ) {
|
| 1476 |
-
ts.setupParsers( c, $tbodies );
|
| 1477 |
-
}
|
| 1478 |
-
// rebuild the cache map
|
| 1479 |
-
ts.buildCache( c, callback, $tbodies );
|
| 1480 |
-
},
|
| 1481 |
-
|
| 1482 |
-
// init flag (true) used by pager plugin to prevent widget application
|
| 1483 |
-
// renamed from appendToTable
|
| 1484 |
-
appendCache : function( c, init ) {
|
| 1485 |
-
var parsed, totalRows, $tbody, $curTbody, rowIndex, tbodyIndex, appendTime,
|
| 1486 |
-
table = c.table,
|
| 1487 |
-
$tbodies = c.$tbodies,
|
| 1488 |
-
rows = [],
|
| 1489 |
-
cache = c.cache;
|
| 1490 |
-
// empty table - fixes #206/#346
|
| 1491 |
-
if ( ts.isEmptyObject( cache ) ) {
|
| 1492 |
-
// run pager appender in case the table was just emptied
|
| 1493 |
-
return c.appender ? c.appender( table, rows ) :
|
| 1494 |
-
table.isUpdating ? c.$table.triggerHandler( 'updateComplete', table ) : ''; // Fixes #532
|
| 1495 |
-
}
|
| 1496 |
-
if ( ts.debug(c, 'core') ) {
|
| 1497 |
-
appendTime = new Date();
|
| 1498 |
-
}
|
| 1499 |
-
for ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
|
| 1500 |
-
$tbody = $tbodies.eq( tbodyIndex );
|
| 1501 |
-
if ( $tbody.length ) {
|
| 1502 |
-
// detach tbody for manipulation
|
| 1503 |
-
$curTbody = ts.processTbody( table, $tbody, true );
|
| 1504 |
-
parsed = cache[ tbodyIndex ].normalized;
|
| 1505 |
-
totalRows = parsed.length;
|
| 1506 |
-
for ( rowIndex = 0; rowIndex < totalRows; rowIndex++ ) {
|
| 1507 |
-
rows[rows.length] = parsed[ rowIndex ][ c.columns ].$row;
|
| 1508 |
-
// removeRows used by the pager plugin; don't render if using ajax - fixes #411
|
| 1509 |
-
if ( !c.appender || ( c.pager && !c.pager.removeRows && !c.pager.ajax ) ) {
|
| 1510 |
-
$curTbody.append( parsed[ rowIndex ][ c.columns ].$row );
|
| 1511 |
-
}
|
| 1512 |
-
}
|
| 1513 |
-
// restore tbody
|
| 1514 |
-
ts.processTbody( table, $curTbody, false );
|
| 1515 |
-
}
|
| 1516 |
-
}
|
| 1517 |
-
if ( c.appender ) {
|
| 1518 |
-
c.appender( table, rows );
|
| 1519 |
-
}
|
| 1520 |
-
if ( ts.debug(c, 'core') ) {
|
| 1521 |
-
console.log( 'Rebuilt table' + ts.benchmark( appendTime ) );
|
| 1522 |
-
}
|
| 1523 |
-
// apply table widgets; but not before ajax completes
|
| 1524 |
-
if ( !init && !c.appender ) {
|
| 1525 |
-
ts.applyWidget( table );
|
| 1526 |
-
}
|
| 1527 |
-
if ( table.isUpdating ) {
|
| 1528 |
-
c.$table.triggerHandler( 'updateComplete', table );
|
| 1529 |
-
}
|
| 1530 |
-
},
|
| 1531 |
-
|
| 1532 |
-
commonUpdate : function( c, resort, callback ) {
|
| 1533 |
-
// remove rows/elements before update
|
| 1534 |
-
c.$table.find( c.selectorRemove ).remove();
|
| 1535 |
-
// rebuild parsers
|
| 1536 |
-
ts.setupParsers( c );
|
| 1537 |
-
// rebuild the cache map
|
| 1538 |
-
ts.buildCache( c );
|
| 1539 |
-
ts.checkResort( c, resort, callback );
|
| 1540 |
-
},
|
| 1541 |
-
|
| 1542 |
-
/*
|
| 1543 |
-
▄█████ ▄████▄ █████▄ ██████ ██ █████▄ ▄████▄
|
| 1544 |
-
▀█▄ ██ ██ ██▄▄██ ██ ██ ██ ██ ██ ▄▄▄
|
| 1545 |
-
▀█▄ ██ ██ ██▀██ ██ ██ ██ ██ ██ ▀██
|
| 1546 |
-
█████▀ ▀████▀ ██ ██ ██ ██ ██ ██ ▀████▀
|
| 1547 |
-
*/
|
| 1548 |
-
initSort : function( c, cell, event ) {
|
| 1549 |
-
if ( c.table.isUpdating ) {
|
| 1550 |
-
// let any updates complete before initializing a sort
|
| 1551 |
-
return setTimeout( function() {
|
| 1552 |
-
ts.initSort( c, cell, event );
|
| 1553 |
-
}, 50 );
|
| 1554 |
-
}
|
| 1555 |
-
|
| 1556 |
-
var arry, indx, headerIndx, dir, temp, tmp, $header,
|
| 1557 |
-
notMultiSort = !event[ c.sortMultiSortKey ],
|
| 1558 |
-
table = c.table,
|
| 1559 |
-
len = c.$headers.length,
|
| 1560 |
-
th = ts.getClosest( $( cell ), 'th, td' ),
|
| 1561 |
-
col = parseInt( th.attr( 'data-column' ), 10 ),
|
| 1562 |
-
sortedBy = event.type === 'mouseup' ? 'user' : event.type,
|
| 1563 |
-
order = c.sortVars[ col ].order;
|
| 1564 |
-
th = th[0];
|
| 1565 |
-
// Only call sortStart if sorting is enabled
|
| 1566 |
-
c.$table.triggerHandler( 'sortStart', table );
|
| 1567 |
-
// get current column sort order
|
| 1568 |
-
tmp = ( c.sortVars[ col ].count + 1 ) % order.length;
|
| 1569 |
-
c.sortVars[ col ].count = event[ c.sortResetKey ] ? 2 : tmp;
|
| 1570 |
-
// reset all sorts on non-current column - issue #30
|
| 1571 |
-
if ( c.sortRestart ) {
|
| 1572 |
-
for ( headerIndx = 0; headerIndx < len; headerIndx++ ) {
|
| 1573 |
-
$header = c.$headers.eq( headerIndx );
|
| 1574 |
-
tmp = parseInt( $header.attr( 'data-column' ), 10 );
|
| 1575 |
-
// only reset counts on columns that weren't just clicked on and if not included in a multisort
|
| 1576 |
-
if ( col !== tmp && ( notMultiSort || $header.hasClass( ts.css.sortNone ) ) ) {
|
| 1577 |
-
c.sortVars[ tmp ].count = -1;
|
| 1578 |
-
}
|
| 1579 |
-
}
|
| 1580 |
-
}
|
| 1581 |
-
// user only wants to sort on one column
|
| 1582 |
-
if ( notMultiSort ) {
|
| 1583 |
-
$.each( c.sortVars, function( i ) {
|
| 1584 |
-
c.sortVars[ i ].sortedBy = '';
|
| 1585 |
-
});
|
| 1586 |
-
// flush the sort list
|
| 1587 |
-
c.sortList = [];
|
| 1588 |
-
c.last.sortList = [];
|
| 1589 |
-
if ( c.sortForce !== null ) {
|
| 1590 |
-
arry = c.sortForce;
|
| 1591 |
-
for ( indx = 0; indx < arry.length; indx++ ) {
|
| 1592 |
-
if ( arry[ indx ][ 0 ] !== col ) {
|
| 1593 |
-
c.sortList[ c.sortList.length ] = arry[ indx ];
|
| 1594 |
-
c.sortVars[ arry[ indx ][ 0 ] ].sortedBy = 'sortForce';
|
| 1595 |
-
}
|
| 1596 |
-
}
|
| 1597 |
-
}
|
| 1598 |
-
// add column to sort list
|
| 1599 |
-
dir = order[ c.sortVars[ col ].count ];
|
| 1600 |
-
if ( dir < 2 ) {
|
| 1601 |
-
c.sortList[ c.sortList.length ] = [ col, dir ];
|
| 1602 |
-
c.sortVars[ col ].sortedBy = sortedBy;
|
| 1603 |
-
// add other columns if header spans across multiple
|
| 1604 |
-
if ( th.colSpan > 1 ) {
|
| 1605 |
-
for ( indx = 1; indx < th.colSpan; indx++ ) {
|
| 1606 |
-
c.sortList[ c.sortList.length ] = [ col + indx, dir ];
|
| 1607 |
-
// update count on columns in colSpan
|
| 1608 |
-
c.sortVars[ col + indx ].count = $.inArray( dir, order );
|
| 1609 |
-
c.sortVars[ col + indx ].sortedBy = sortedBy;
|
| 1610 |
-
}
|
| 1611 |
-
}
|
| 1612 |
-
}
|
| 1613 |
-
// multi column sorting
|
| 1614 |
-
} else {
|
| 1615 |
-
// get rid of the sortAppend before adding more - fixes issue #115 & #523
|
| 1616 |
-
c.sortList = $.extend( [], c.last.sortList );
|
| 1617 |
-
|
| 1618 |
-
// the user has clicked on an already sorted column
|
| 1619 |
-
if ( ts.isValueInArray( col, c.sortList ) >= 0 ) {
|
| 1620 |
-
// reverse the sorting direction
|
| 1621 |
-
c.sortVars[ col ].sortedBy = sortedBy;
|
| 1622 |
-
for ( indx = 0; indx < c.sortList.length; indx++ ) {
|
| 1623 |
-
tmp = c.sortList[ indx ];
|
| 1624 |
-
if ( tmp[ 0 ] === col ) {
|
| 1625 |
-
// order.count seems to be incorrect when compared to cell.count
|
| 1626 |
-
tmp[ 1 ] = order[ c.sortVars[ col ].count ];
|
| 1627 |
-
if ( tmp[1] === 2 ) {
|
| 1628 |
-
c.sortList.splice( indx, 1 );
|
| 1629 |
-
c.sortVars[ col ].count = -1;
|
| 1630 |
-
}
|
| 1631 |
-
}
|
| 1632 |
-
}
|
| 1633 |
-
} else {
|
| 1634 |
-
// add column to sort list array
|
| 1635 |
-
dir = order[ c.sortVars[ col ].count ];
|
| 1636 |
-
c.sortVars[ col ].sortedBy = sortedBy;
|
| 1637 |
-
if ( dir < 2 ) {
|
| 1638 |
-
c.sortList[ c.sortList.length ] = [ col, dir ];
|
| 1639 |
-
// add other columns if header spans across multiple
|
| 1640 |
-
if ( th.colSpan > 1 ) {
|
| 1641 |
-
for ( indx = 1; indx < th.colSpan; indx++ ) {
|
| 1642 |
-
c.sortList[ c.sortList.length ] = [ col + indx, dir ];
|
| 1643 |
-
// update count on columns in colSpan
|
| 1644 |
-
c.sortVars[ col + indx ].count = $.inArray( dir, order );
|
| 1645 |
-
c.sortVars[ col + indx ].sortedBy = sortedBy;
|
| 1646 |
-
}
|
| 1647 |
-
}
|
| 1648 |
-
}
|
| 1649 |
-
}
|
| 1650 |
-
}
|
| 1651 |
-
// save sort before applying sortAppend
|
| 1652 |
-
c.last.sortList = $.extend( [], c.sortList );
|
| 1653 |
-
if ( c.sortList.length && c.sortAppend ) {
|
| 1654 |
-
arry = $.isArray( c.sortAppend ) ? c.sortAppend : c.sortAppend[ c.sortList[ 0 ][ 0 ] ];
|
| 1655 |
-
if ( !ts.isEmptyObject( arry ) ) {
|
| 1656 |
-
for ( indx = 0; indx < arry.length; indx++ ) {
|
| 1657 |
-
if ( arry[ indx ][ 0 ] !== col && ts.isValueInArray( arry[ indx ][ 0 ], c.sortList ) < 0 ) {
|
| 1658 |
-
dir = arry[ indx ][ 1 ];
|
| 1659 |
-
temp = ( '' + dir ).match( /^(a|d|s|o|n)/ );
|
| 1660 |
-
if ( temp ) {
|
| 1661 |
-
tmp = c.sortList[ 0 ][ 1 ];
|
| 1662 |
-
switch ( temp[ 0 ] ) {
|
| 1663 |
-
case 'd' :
|
| 1664 |
-
dir = 1;
|
| 1665 |
-
break;
|
| 1666 |
-
case 's' :
|
| 1667 |
-
dir = tmp;
|
| 1668 |
-
break;
|
| 1669 |
-
case 'o' :
|
| 1670 |
-
dir = tmp === 0 ? 1 : 0;
|
| 1671 |
-
break;
|
| 1672 |
-
case 'n' :
|
| 1673 |
-
dir = ( tmp + 1 ) % order.length;
|
| 1674 |
-
break;
|
| 1675 |
-
default:
|
| 1676 |
-
dir = 0;
|
| 1677 |
-
break;
|
| 1678 |
-
}
|
| 1679 |
-
}
|
| 1680 |
-
c.sortList[ c.sortList.length ] = [ arry[ indx ][ 0 ], dir ];
|
| 1681 |
-
c.sortVars[ arry[ indx ][ 0 ] ].sortedBy = 'sortAppend';
|
| 1682 |
-
}
|
| 1683 |
-
}
|
| 1684 |
-
}
|
| 1685 |
-
}
|
| 1686 |
-
// sortBegin event triggered immediately before the sort
|
| 1687 |
-
c.$table.triggerHandler( 'sortBegin', table );
|
| 1688 |
-
// setTimeout needed so the processing icon shows up
|
| 1689 |
-
setTimeout( function() {
|
| 1690 |
-
// set css for headers
|
| 1691 |
-
ts.setHeadersCss( c );
|
| 1692 |
-
ts.multisort( c );
|
| 1693 |
-
ts.appendCache( c );
|
| 1694 |
-
c.$table.triggerHandler( 'sortBeforeEnd', table );
|
| 1695 |
-
c.$table.triggerHandler( 'sortEnd', table );
|
| 1696 |
-
}, 1 );
|
| 1697 |
-
},
|
| 1698 |
-
|
| 1699 |
-
// sort multiple columns
|
| 1700 |
-
multisort : function( c ) { /*jshint loopfunc:true */
|
| 1701 |
-
var tbodyIndex, sortTime, colMax, rows, tmp,
|
| 1702 |
-
table = c.table,
|
| 1703 |
-
sorter = [],
|
| 1704 |
-
dir = 0,
|
| 1705 |
-
textSorter = c.textSorter || '',
|
| 1706 |
-
sortList = c.sortList,
|
| 1707 |
-
sortLen = sortList.length,
|
| 1708 |
-
len = c.$tbodies.length;
|
| 1709 |
-
if ( c.serverSideSorting || ts.isEmptyObject( c.cache ) ) {
|
| 1710 |
-
// empty table - fixes #206/#346
|
| 1711 |
-
return;
|
| 1712 |
-
}
|
| 1713 |
-
if ( ts.debug(c, 'core') ) { sortTime = new Date(); }
|
| 1714 |
-
// cache textSorter to optimize speed
|
| 1715 |
-
if ( typeof textSorter === 'object' ) {
|
| 1716 |
-
colMax = c.columns;
|
| 1717 |
-
while ( colMax-- ) {
|
| 1718 |
-
tmp = ts.getColumnData( table, textSorter, colMax );
|
| 1719 |
-
if ( typeof tmp === 'function' ) {
|
| 1720 |
-
sorter[ colMax ] = tmp;
|
| 1721 |
-
}
|
| 1722 |
-
}
|
| 1723 |
-
}
|
| 1724 |
-
for ( tbodyIndex = 0; tbodyIndex < len; tbodyIndex++ ) {
|
| 1725 |
-
colMax = c.cache[ tbodyIndex ].colMax;
|
| 1726 |
-
rows = c.cache[ tbodyIndex ].normalized;
|
| 1727 |
-
|
| 1728 |
-
rows.sort( function( a, b ) {
|
| 1729 |
-
var sortIndex, num, col, order, sort, x, y;
|
| 1730 |
-
// rows is undefined here in IE, so don't use it!
|
| 1731 |
-
for ( sortIndex = 0; sortIndex < sortLen; sortIndex++ ) {
|
| 1732 |
-
col = sortList[ sortIndex ][ 0 ];
|
| 1733 |
-
order = sortList[ sortIndex ][ 1 ];
|
| 1734 |
-
// sort direction, true = asc, false = desc
|
| 1735 |
-
dir = order === 0;
|
| 1736 |
-
|
| 1737 |
-
if ( c.sortStable && a[ col ] === b[ col ] && sortLen === 1 ) {
|
| 1738 |
-
return a[ c.columns ].order - b[ c.columns ].order;
|
| 1739 |
-
}
|
| 1740 |
-
|
| 1741 |
-
// fallback to natural sort since it is more robust
|
| 1742 |
-
num = /n/i.test( ts.getSortType( c.parsers, col ) );
|
| 1743 |
-
if ( num && c.strings[ col ] ) {
|
| 1744 |
-
// sort strings in numerical columns
|
| 1745 |
-
if ( typeof ( ts.string[ c.strings[ col ] ] ) === 'boolean' ) {
|
| 1746 |
-
num = ( dir ? 1 : -1 ) * ( ts.string[ c.strings[ col ] ] ? -1 : 1 );
|
| 1747 |
-
} else {
|
| 1748 |
-
num = ( c.strings[ col ] ) ? ts.string[ c.strings[ col ] ] || 0 : 0;
|
| 1749 |
-
}
|
| 1750 |
-
// fall back to built-in numeric sort
|
| 1751 |
-
// var sort = $.tablesorter['sort' + s]( a[col], b[col], dir, colMax[col], table );
|
| 1752 |
-
sort = c.numberSorter ? c.numberSorter( a[ col ], b[ col ], dir, colMax[ col ], table ) :
|
| 1753 |
-
ts[ 'sortNumeric' + ( dir ? 'Asc' : 'Desc' ) ]( a[ col ], b[ col ], num, colMax[ col ], col, c );
|
| 1754 |
-
} else {
|
| 1755 |
-
// set a & b depending on sort direction
|
| 1756 |
-
x = dir ? a : b;
|
| 1757 |
-
y = dir ? b : a;
|
| 1758 |
-
// text sort function
|
| 1759 |
-
if ( typeof textSorter === 'function' ) {
|
| 1760 |
-
// custom OVERALL text sorter
|
| 1761 |
-
sort = textSorter( x[ col ], y[ col ], dir, col, table );
|
| 1762 |
-
} else if ( typeof sorter[ col ] === 'function' ) {
|
| 1763 |
-
// custom text sorter for a SPECIFIC COLUMN
|
| 1764 |
-
sort = sorter[ col ]( x[ col ], y[ col ], dir, col, table );
|
| 1765 |
-
} else {
|
| 1766 |
-
// fall back to natural sort
|
| 1767 |
-
sort = ts[ 'sortNatural' + ( dir ? 'Asc' : 'Desc' ) ]( a[ col ] || '', b[ col ] || '', col, c );
|
| 1768 |
-
}
|
| 1769 |
-
}
|
| 1770 |
-
if ( sort ) { return sort; }
|
| 1771 |
-
}
|
| 1772 |
-
return a[ c.columns ].order - b[ c.columns ].order;
|
| 1773 |
-
});
|
| 1774 |
-
}
|
| 1775 |
-
if ( ts.debug(c, 'core') ) {
|
| 1776 |
-
console.log( 'Applying sort ' + sortList.toString() + ts.benchmark( sortTime ) );
|
| 1777 |
-
}
|
| 1778 |
-
},
|
| 1779 |
-
|
| 1780 |
-
resortComplete : function( c, callback ) {
|
| 1781 |
-
if ( c.table.isUpdating ) {
|
| 1782 |
-
c.$table.triggerHandler( 'updateComplete', c.table );
|
| 1783 |
-
}
|
| 1784 |
-
if ( $.isFunction( callback ) ) {
|
| 1785 |
-
callback( c.table );
|
| 1786 |
-
}
|
| 1787 |
-
},
|
| 1788 |
-
|
| 1789 |
-
checkResort : function( c, resort, callback ) {
|
| 1790 |
-
var sortList = $.isArray( resort ) ? resort : c.sortList,
|
| 1791 |
-
// if no resort parameter is passed, fallback to config.resort (true by default)
|
| 1792 |
-
resrt = typeof resort === 'undefined' ? c.resort : resort;
|
| 1793 |
-
// don't try to resort if the table is still processing
|
| 1794 |
-
// this will catch spamming of the updateCell method
|
| 1795 |
-
if ( resrt !== false && !c.serverSideSorting && !c.table.isProcessing ) {
|
| 1796 |
-
if ( sortList.length ) {
|
| 1797 |
-
ts.sortOn( c, sortList, function() {
|
| 1798 |
-
ts.resortComplete( c, callback );
|
| 1799 |
-
}, true );
|
| 1800 |
-
} else {
|
| 1801 |
-
ts.sortReset( c, function() {
|
| 1802 |
-
ts.resortComplete( c, callback );
|
| 1803 |
-
ts.applyWidget( c.table, false );
|
| 1804 |
-
} );
|
| 1805 |
-
}
|
| 1806 |
-
} else {
|
| 1807 |
-
ts.resortComplete( c, callback );
|
| 1808 |
-
ts.applyWidget( c.table, false );
|
| 1809 |
-
}
|
| 1810 |
-
},
|
| 1811 |
-
|
| 1812 |
-
sortOn : function( c, list, callback, init ) {
|
| 1813 |
-
var indx,
|
| 1814 |
-
table = c.table;
|
| 1815 |
-
c.$table.triggerHandler( 'sortStart', table );
|
| 1816 |
-
for (indx = 0; indx < c.columns; indx++) {
|
| 1817 |
-
c.sortVars[ indx ].sortedBy = ts.isValueInArray( indx, list ) > -1 ? 'sorton' : '';
|
| 1818 |
-
}
|
| 1819 |
-
// update header count index
|
| 1820 |
-
ts.updateHeaderSortCount( c, list );
|
| 1821 |
-
// set css for headers
|
| 1822 |
-
ts.setHeadersCss( c );
|
| 1823 |
-
// fixes #346
|
| 1824 |
-
if ( c.delayInit && ts.isEmptyObject( c.cache ) ) {
|
| 1825 |
-
ts.buildCache( c );
|
| 1826 |
-
}
|
| 1827 |
-
c.$table.triggerHandler( 'sortBegin', table );
|
| 1828 |
-
// sort the table and append it to the dom
|
| 1829 |
-
ts.multisort( c );
|
| 1830 |
-
ts.appendCache( c, init );
|
| 1831 |
-
c.$table.triggerHandler( 'sortBeforeEnd', table );
|
| 1832 |
-
c.$table.triggerHandler( 'sortEnd', table );
|
| 1833 |
-
ts.applyWidget( table );
|
| 1834 |
-
if ( $.isFunction( callback ) ) {
|
| 1835 |
-
callback( table );
|
| 1836 |
-
}
|
| 1837 |
-
},
|
| 1838 |
-
|
| 1839 |
-
sortReset : function( c, callback ) {
|
| 1840 |
-
c.sortList = [];
|
| 1841 |
-
var indx;
|
| 1842 |
-
for (indx = 0; indx < c.columns; indx++) {
|
| 1843 |
-
c.sortVars[ indx ].count = -1;
|
| 1844 |
-
c.sortVars[ indx ].sortedBy = '';
|
| 1845 |
-
}
|
| 1846 |
-
ts.setHeadersCss( c );
|
| 1847 |
-
ts.multisort( c );
|
| 1848 |
-
ts.appendCache( c );
|
| 1849 |
-
if ( $.isFunction( callback ) ) {
|
| 1850 |
-
callback( c.table );
|
| 1851 |
-
}
|
| 1852 |
-
},
|
| 1853 |
-
|
| 1854 |
-
getSortType : function( parsers, column ) {
|
| 1855 |
-
return ( parsers && parsers[ column ] ) ? parsers[ column ].type || '' : '';
|
| 1856 |
-
},
|
| 1857 |
-
|
| 1858 |
-
getOrder : function( val ) {
|
| 1859 |
-
// look for 'd' in 'desc' order; return true
|
| 1860 |
-
return ( /^d/i.test( val ) || val === 1 );
|
| 1861 |
-
},
|
| 1862 |
-
|
| 1863 |
-
// Natural sort - https://github.com/overset/javascript-natural-sort (date sorting removed)
|
| 1864 |
-
sortNatural : function( a, b ) {
|
| 1865 |
-
if ( a === b ) { return 0; }
|
| 1866 |
-
a = ( a || '' ).toString();
|
| 1867 |
-
b = ( b || '' ).toString();
|
| 1868 |
-
var aNum, bNum, aFloat, bFloat, indx, max,
|
| 1869 |
-
regex = ts.regex;
|
| 1870 |
-
// first try and sort Hex codes
|
| 1871 |
-
if ( regex.hex.test( b ) ) {
|
| 1872 |
-
aNum = parseInt( a.match( regex.hex ), 16 );
|
| 1873 |
-
bNum = parseInt( b.match( regex.hex ), 16 );
|
| 1874 |
-
if ( aNum < bNum ) { return -1; }
|
| 1875 |
-
if ( aNum > bNum ) { return 1; }
|
| 1876 |
-
}
|
| 1877 |
-
// chunk/tokenize
|
| 1878 |
-
aNum = a.replace( regex.chunk, '\\0$1\\0' ).replace( regex.chunks, '' ).split( '\\0' );
|
| 1879 |
-
bNum = b.replace( regex.chunk, '\\0$1\\0' ).replace( regex.chunks, '' ).split( '\\0' );
|
| 1880 |
-
max = Math.max( aNum.length, bNum.length );
|
| 1881 |
-
// natural sorting through split numeric strings and default strings
|
| 1882 |
-
for ( indx = 0; indx < max; indx++ ) {
|
| 1883 |
-
// find floats not starting with '0', string or 0 if not defined
|
| 1884 |
-
aFloat = isNaN( aNum[ indx ] ) ? aNum[ indx ] || 0 : parseFloat( aNum[ indx ] ) || 0;
|
| 1885 |
-
bFloat = isNaN( bNum[ indx ] ) ? bNum[ indx ] || 0 : parseFloat( bNum[ indx ] ) || 0;
|
| 1886 |
-
// handle numeric vs string comparison - number < string - (Kyle Adams)
|
| 1887 |
-
if ( isNaN( aFloat ) !== isNaN( bFloat ) ) { return isNaN( aFloat ) ? 1 : -1; }
|
| 1888 |
-
// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
|
| 1889 |
-
if ( typeof aFloat !== typeof bFloat ) {
|
| 1890 |
-
aFloat += '';
|
| 1891 |
-
bFloat += '';
|
| 1892 |
-
}
|
| 1893 |
-
if ( aFloat < bFloat ) { return -1; }
|
| 1894 |
-
if ( aFloat > bFloat ) { return 1; }
|
| 1895 |
-
}
|
| 1896 |
-
return 0;
|
| 1897 |
-
},
|
| 1898 |
-
|
| 1899 |
-
sortNaturalAsc : function( a, b, col, c ) {
|
| 1900 |
-
if ( a === b ) { return 0; }
|
| 1901 |
-
var empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];
|
| 1902 |
-
if ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : -empty || -1; }
|
| 1903 |
-
if ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : empty || 1; }
|
| 1904 |
-
return ts.sortNatural( a, b );
|
| 1905 |
-
},
|
| 1906 |
-
|
| 1907 |
-
sortNaturalDesc : function( a, b, col, c ) {
|
| 1908 |
-
if ( a === b ) { return 0; }
|
| 1909 |
-
var empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];
|
| 1910 |
-
if ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : empty || 1; }
|
| 1911 |
-
if ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : -empty || -1; }
|
| 1912 |
-
return ts.sortNatural( b, a );
|
| 1913 |
-
},
|
| 1914 |
-
|
| 1915 |
-
// basic alphabetical sort
|
| 1916 |
-
sortText : function( a, b ) {
|
| 1917 |
-
return a > b ? 1 : ( a < b ? -1 : 0 );
|
| 1918 |
-
},
|
| 1919 |
-
|
| 1920 |
-
// return text string value by adding up ascii value
|
| 1921 |
-
// so the text is somewhat sorted when using a digital sort
|
| 1922 |
-
// this is NOT an alphanumeric sort
|
| 1923 |
-
getTextValue : function( val, num, max ) {
|
| 1924 |
-
if ( max ) {
|
| 1925 |
-
// make sure the text value is greater than the max numerical value (max)
|
| 1926 |
-
var indx,
|
| 1927 |
-
len = val ? val.length : 0,
|
| 1928 |
-
n = max + num;
|
| 1929 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 1930 |
-
n += val.charCodeAt( indx );
|
| 1931 |
-
}
|
| 1932 |
-
return num * n;
|
| 1933 |
-
}
|
| 1934 |
-
return 0;
|
| 1935 |
-
},
|
| 1936 |
-
|
| 1937 |
-
sortNumericAsc : function( a, b, num, max, col, c ) {
|
| 1938 |
-
if ( a === b ) { return 0; }
|
| 1939 |
-
var empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];
|
| 1940 |
-
if ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : -empty || -1; }
|
| 1941 |
-
if ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : empty || 1; }
|
| 1942 |
-
if ( isNaN( a ) ) { a = ts.getTextValue( a, num, max ); }
|
| 1943 |
-
if ( isNaN( b ) ) { b = ts.getTextValue( b, num, max ); }
|
| 1944 |
-
return a - b;
|
| 1945 |
-
},
|
| 1946 |
-
|
| 1947 |
-
sortNumericDesc : function( a, b, num, max, col, c ) {
|
| 1948 |
-
if ( a === b ) { return 0; }
|
| 1949 |
-
var empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];
|
| 1950 |
-
if ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : empty || 1; }
|
| 1951 |
-
if ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : -empty || -1; }
|
| 1952 |
-
if ( isNaN( a ) ) { a = ts.getTextValue( a, num, max ); }
|
| 1953 |
-
if ( isNaN( b ) ) { b = ts.getTextValue( b, num, max ); }
|
| 1954 |
-
return b - a;
|
| 1955 |
-
},
|
| 1956 |
-
|
| 1957 |
-
sortNumeric : function( a, b ) {
|
| 1958 |
-
return a - b;
|
| 1959 |
-
},
|
| 1960 |
-
|
| 1961 |
-
/*
|
| 1962 |
-
██ ██ ██ ██ █████▄ ▄████▄ ██████ ██████ ▄█████
|
| 1963 |
-
██ ██ ██ ██ ██ ██ ██ ▄▄▄ ██▄▄ ██ ▀█▄
|
| 1964 |
-
██ ██ ██ ██ ██ ██ ██ ▀██ ██▀▀ ██ ▀█▄
|
| 1965 |
-
███████▀ ██ █████▀ ▀████▀ ██████ ██ █████▀
|
| 1966 |
-
*/
|
| 1967 |
-
addWidget : function( widget ) {
|
| 1968 |
-
if ( widget.id && !ts.isEmptyObject( ts.getWidgetById( widget.id ) ) ) {
|
| 1969 |
-
console.warn( '"' + widget.id + '" widget was loaded more than once!' );
|
| 1970 |
-
}
|
| 1971 |
-
ts.widgets[ ts.widgets.length ] = widget;
|
| 1972 |
-
},
|
| 1973 |
-
|
| 1974 |
-
hasWidget : function( $table, name ) {
|
| 1975 |
-
$table = $( $table );
|
| 1976 |
-
return $table.length && $table[ 0 ].config && $table[ 0 ].config.widgetInit[ name ] || false;
|
| 1977 |
-
},
|
| 1978 |
-
|
| 1979 |
-
getWidgetById : function( name ) {
|
| 1980 |
-
var indx, widget,
|
| 1981 |
-
len = ts.widgets.length;
|
| 1982 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 1983 |
-
widget = ts.widgets[ indx ];
|
| 1984 |
-
if ( widget && widget.id && widget.id.toLowerCase() === name.toLowerCase() ) {
|
| 1985 |
-
return widget;
|
| 1986 |
-
}
|
| 1987 |
-
}
|
| 1988 |
-
},
|
| 1989 |
-
|
| 1990 |
-
applyWidgetOptions : function( table ) {
|
| 1991 |
-
var indx, widget, wo,
|
| 1992 |
-
c = table.config,
|
| 1993 |
-
len = c.widgets.length;
|
| 1994 |
-
if ( len ) {
|
| 1995 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 1996 |
-
widget = ts.getWidgetById( c.widgets[ indx ] );
|
| 1997 |
-
if ( widget && widget.options ) {
|
| 1998 |
-
wo = $.extend( true, {}, widget.options );
|
| 1999 |
-
c.widgetOptions = $.extend( true, wo, c.widgetOptions );
|
| 2000 |
-
// add widgetOptions to defaults for option validator
|
| 2001 |
-
$.extend( true, ts.defaults.widgetOptions, widget.options );
|
| 2002 |
-
}
|
| 2003 |
-
}
|
| 2004 |
-
}
|
| 2005 |
-
},
|
| 2006 |
-
|
| 2007 |
-
addWidgetFromClass : function( table ) {
|
| 2008 |
-
var len, indx,
|
| 2009 |
-
c = table.config,
|
| 2010 |
-
// look for widgets to apply from table class
|
| 2011 |
-
// don't match from 'ui-widget-content'; use \S instead of \w to include widgets
|
| 2012 |
-
// with dashes in the name, e.g. "widget-test-2" extracts out "test-2"
|
| 2013 |
-
regex = '^' + c.widgetClass.replace( ts.regex.templateName, '(\\S+)+' ) + '$',
|
| 2014 |
-
widgetClass = new RegExp( regex, 'g' ),
|
| 2015 |
-
// split up table class (widget id's can include dashes) - stop using match
|
| 2016 |
-
// otherwise only one widget gets extracted, see #1109
|
| 2017 |
-
widgets = ( table.className || '' ).split( ts.regex.spaces );
|
| 2018 |
-
if ( widgets.length ) {
|
| 2019 |
-
len = widgets.length;
|
| 2020 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 2021 |
-
if ( widgets[ indx ].match( widgetClass ) ) {
|
| 2022 |
-
c.widgets[ c.widgets.length ] = widgets[ indx ].replace( widgetClass, '$1' );
|
| 2023 |
-
}
|
| 2024 |
-
}
|
| 2025 |
-
}
|
| 2026 |
-
},
|
| 2027 |
-
|
| 2028 |
-
applyWidgetId : function( table, id, init ) {
|
| 2029 |
-
table = $(table)[0];
|
| 2030 |
-
var applied, time, name,
|
| 2031 |
-
c = table.config,
|
| 2032 |
-
wo = c.widgetOptions,
|
| 2033 |
-
debug = ts.debug(c, 'core'),
|
| 2034 |
-
widget = ts.getWidgetById( id );
|
| 2035 |
-
if ( widget ) {
|
| 2036 |
-
name = widget.id;
|
| 2037 |
-
applied = false;
|
| 2038 |
-
// add widget name to option list so it gets reapplied after sorting, filtering, etc
|
| 2039 |
-
if ( $.inArray( name, c.widgets ) < 0 ) {
|
| 2040 |
-
c.widgets[ c.widgets.length ] = name;
|
| 2041 |
-
}
|
| 2042 |
-
if ( debug ) { time = new Date(); }
|
| 2043 |
-
|
| 2044 |
-
if ( init || !( c.widgetInit[ name ] ) ) {
|
| 2045 |
-
// set init flag first to prevent calling init more than once (e.g. pager)
|
| 2046 |
-
c.widgetInit[ name ] = true;
|
| 2047 |
-
if ( table.hasInitialized ) {
|
| 2048 |
-
// don't reapply widget options on tablesorter init
|
| 2049 |
-
ts.applyWidgetOptions( table );
|
| 2050 |
-
}
|
| 2051 |
-
if ( typeof widget.init === 'function' ) {
|
| 2052 |
-
applied = true;
|
| 2053 |
-
if ( debug ) {
|
| 2054 |
-
console[ console.group ? 'group' : 'log' ]( 'Initializing ' + name + ' widget' );
|
| 2055 |
-
}
|
| 2056 |
-
widget.init( table, widget, c, wo );
|
| 2057 |
-
}
|
| 2058 |
-
}
|
| 2059 |
-
if ( !init && typeof widget.format === 'function' ) {
|
| 2060 |
-
applied = true;
|
| 2061 |
-
if ( debug ) {
|
| 2062 |
-
console[ console.group ? 'group' : 'log' ]( 'Updating ' + name + ' widget' );
|
| 2063 |
-
}
|
| 2064 |
-
widget.format( table, c, wo, false );
|
| 2065 |
-
}
|
| 2066 |
-
if ( debug ) {
|
| 2067 |
-
if ( applied ) {
|
| 2068 |
-
console.log( 'Completed ' + ( init ? 'initializing ' : 'applying ' ) + name + ' widget' + ts.benchmark( time ) );
|
| 2069 |
-
if ( console.groupEnd ) { console.groupEnd(); }
|
| 2070 |
-
}
|
| 2071 |
-
}
|
| 2072 |
-
}
|
| 2073 |
-
},
|
| 2074 |
-
|
| 2075 |
-
applyWidget : function( table, init, callback ) {
|
| 2076 |
-
table = $( table )[ 0 ]; // in case this is called externally
|
| 2077 |
-
var indx, len, names, widget, time,
|
| 2078 |
-
c = table.config,
|
| 2079 |
-
debug = ts.debug(c, 'core'),
|
| 2080 |
-
widgets = [];
|
| 2081 |
-
// prevent numerous consecutive widget applications
|
| 2082 |
-
if ( init !== false && table.hasInitialized && ( table.isApplyingWidgets || table.isUpdating ) ) {
|
| 2083 |
-
return;
|
| 2084 |
-
}
|
| 2085 |
-
if ( debug ) { time = new Date(); }
|
| 2086 |
-
ts.addWidgetFromClass( table );
|
| 2087 |
-
// prevent "tablesorter-ready" from firing multiple times in a row
|
| 2088 |
-
clearTimeout( c.timerReady );
|
| 2089 |
-
if ( c.widgets.length ) {
|
| 2090 |
-
table.isApplyingWidgets = true;
|
| 2091 |
-
// ensure unique widget ids
|
| 2092 |
-
c.widgets = $.grep( c.widgets, function( val, index ) {
|
| 2093 |
-
return $.inArray( val, c.widgets ) === index;
|
| 2094 |
-
});
|
| 2095 |
-
names = c.widgets || [];
|
| 2096 |
-
len = names.length;
|
| 2097 |
-
// build widget array & add priority as needed
|
| 2098 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 2099 |
-
widget = ts.getWidgetById( names[ indx ] );
|
| 2100 |
-
if ( widget && widget.id ) {
|
| 2101 |
-
// set priority to 10 if not defined
|
| 2102 |
-
if ( !widget.priority ) { widget.priority = 10; }
|
| 2103 |
-
widgets[ indx ] = widget;
|
| 2104 |
-
} else if ( debug ) {
|
| 2105 |
-
console.warn( '"' + names[ indx ] + '" was enabled, but the widget code has not been loaded!' );
|
| 2106 |
-
}
|
| 2107 |
-
}
|
| 2108 |
-
// sort widgets by priority
|
| 2109 |
-
widgets.sort( function( a, b ) {
|
| 2110 |
-
return a.priority < b.priority ? -1 : a.priority === b.priority ? 0 : 1;
|
| 2111 |
-
});
|
| 2112 |
-
// add/update selected widgets
|
| 2113 |
-
len = widgets.length;
|
| 2114 |
-
if ( debug ) {
|
| 2115 |
-
console[ console.group ? 'group' : 'log' ]( 'Start ' + ( init ? 'initializing' : 'applying' ) + ' widgets' );
|
| 2116 |
-
}
|
| 2117 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 2118 |
-
widget = widgets[ indx ];
|
| 2119 |
-
if ( widget && widget.id ) {
|
| 2120 |
-
ts.applyWidgetId( table, widget.id, init );
|
| 2121 |
-
}
|
| 2122 |
-
}
|
| 2123 |
-
if ( debug && console.groupEnd ) { console.groupEnd(); }
|
| 2124 |
-
}
|
| 2125 |
-
c.timerReady = setTimeout( function() {
|
| 2126 |
-
table.isApplyingWidgets = false;
|
| 2127 |
-
$.data( table, 'lastWidgetApplication', new Date() );
|
| 2128 |
-
c.$table.triggerHandler( 'tablesorter-ready' );
|
| 2129 |
-
// callback executed on init only
|
| 2130 |
-
if ( !init && typeof callback === 'function' ) {
|
| 2131 |
-
callback( table );
|
| 2132 |
-
}
|
| 2133 |
-
if ( debug ) {
|
| 2134 |
-
widget = c.widgets.length;
|
| 2135 |
-
console.log( 'Completed ' +
|
| 2136 |
-
( init === true ? 'initializing ' : 'applying ' ) + widget +
|
| 2137 |
-
' widget' + ( widget !== 1 ? 's' : '' ) + ts.benchmark( time ) );
|
| 2138 |
-
}
|
| 2139 |
-
}, 10 );
|
| 2140 |
-
},
|
| 2141 |
-
|
| 2142 |
-
removeWidget : function( table, name, refreshing ) {
|
| 2143 |
-
table = $( table )[ 0 ];
|
| 2144 |
-
var index, widget, indx, len,
|
| 2145 |
-
c = table.config;
|
| 2146 |
-
// if name === true, add all widgets from $.tablesorter.widgets
|
| 2147 |
-
if ( name === true ) {
|
| 2148 |
-
name = [];
|
| 2149 |
-
len = ts.widgets.length;
|
| 2150 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 2151 |
-
widget = ts.widgets[ indx ];
|
| 2152 |
-
if ( widget && widget.id ) {
|
| 2153 |
-
name[ name.length ] = widget.id;
|
| 2154 |
-
}
|
| 2155 |
-
}
|
| 2156 |
-
} else {
|
| 2157 |
-
// name can be either an array of widgets names,
|
| 2158 |
-
// or a space/comma separated list of widget names
|
| 2159 |
-
name = ( $.isArray( name ) ? name.join( ',' ) : name || '' ).toLowerCase().split( /[\s,]+/ );
|
| 2160 |
-
}
|
| 2161 |
-
len = name.length;
|
| 2162 |
-
for ( index = 0; index < len; index++ ) {
|
| 2163 |
-
widget = ts.getWidgetById( name[ index ] );
|
| 2164 |
-
indx = $.inArray( name[ index ], c.widgets );
|
| 2165 |
-
// don't remove the widget from config.widget if refreshing
|
| 2166 |
-
if ( indx >= 0 && refreshing !== true ) {
|
| 2167 |
-
c.widgets.splice( indx, 1 );
|
| 2168 |
-
}
|
| 2169 |
-
if ( widget && widget.remove ) {
|
| 2170 |
-
if ( ts.debug(c, 'core') ) {
|
| 2171 |
-
console.log( ( refreshing ? 'Refreshing' : 'Removing' ) + ' "' + name[ index ] + '" widget' );
|
| 2172 |
-
}
|
| 2173 |
-
widget.remove( table, c, c.widgetOptions, refreshing );
|
| 2174 |
-
c.widgetInit[ name[ index ] ] = false;
|
| 2175 |
-
}
|
| 2176 |
-
}
|
| 2177 |
-
c.$table.triggerHandler( 'widgetRemoveEnd', table );
|
| 2178 |
-
},
|
| 2179 |
-
|
| 2180 |
-
refreshWidgets : function( table, doAll, dontapply ) {
|
| 2181 |
-
table = $( table )[ 0 ]; // see issue #243
|
| 2182 |
-
var indx, widget,
|
| 2183 |
-
c = table.config,
|
| 2184 |
-
curWidgets = c.widgets,
|
| 2185 |
-
widgets = ts.widgets,
|
| 2186 |
-
len = widgets.length,
|
| 2187 |
-
list = [],
|
| 2188 |
-
callback = function( table ) {
|
| 2189 |
-
$( table ).triggerHandler( 'refreshComplete' );
|
| 2190 |
-
};
|
| 2191 |
-
// remove widgets not defined in config.widgets, unless doAll is true
|
| 2192 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 2193 |
-
widget = widgets[ indx ];
|
| 2194 |
-
if ( widget && widget.id && ( doAll || $.inArray( widget.id, curWidgets ) < 0 ) ) {
|
| 2195 |
-
list[ list.length ] = widget.id;
|
| 2196 |
-
}
|
| 2197 |
-
}
|
| 2198 |
-
ts.removeWidget( table, list.join( ',' ), true );
|
| 2199 |
-
if ( dontapply !== true ) {
|
| 2200 |
-
// call widget init if
|
| 2201 |
-
ts.applyWidget( table, doAll || false, callback );
|
| 2202 |
-
if ( doAll ) {
|
| 2203 |
-
// apply widget format
|
| 2204 |
-
ts.applyWidget( table, false, callback );
|
| 2205 |
-
}
|
| 2206 |
-
} else {
|
| 2207 |
-
callback( table );
|
| 2208 |
-
}
|
| 2209 |
-
},
|
| 2210 |
-
|
| 2211 |
-
/*
|
| 2212 |
-
██ ██ ██████ ██ ██ ██ ██████ ██ ██████ ▄█████
|
| 2213 |
-
██ ██ ██ ██ ██ ██ ██ ██ ██▄▄ ▀█▄
|
| 2214 |
-
██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀█▄
|
| 2215 |
-
▀████▀ ██ ██ ██████ ██ ██ ██ ██████ █████▀
|
| 2216 |
-
*/
|
| 2217 |
-
benchmark : function( diff ) {
|
| 2218 |
-
return ( ' (' + ( new Date().getTime() - diff.getTime() ) + ' ms)' );
|
| 2219 |
-
},
|
| 2220 |
-
// deprecated ts.log
|
| 2221 |
-
log : function() {
|
| 2222 |
-
console.log( arguments );
|
| 2223 |
-
},
|
| 2224 |
-
debug : function(c, name) {
|
| 2225 |
-
return c && (
|
| 2226 |
-
c.debug === true ||
|
| 2227 |
-
typeof c.debug === 'string' && c.debug.indexOf(name) > -1
|
| 2228 |
-
);
|
| 2229 |
-
},
|
| 2230 |
-
|
| 2231 |
-
// $.isEmptyObject from jQuery v1.4
|
| 2232 |
-
isEmptyObject : function( obj ) {
|
| 2233 |
-
/*jshint forin: false */
|
| 2234 |
-
for ( var name in obj ) {
|
| 2235 |
-
return false;
|
| 2236 |
-
}
|
| 2237 |
-
return true;
|
| 2238 |
-
},
|
| 2239 |
-
|
| 2240 |
-
isValueInArray : function( column, arry ) {
|
| 2241 |
-
var indx,
|
| 2242 |
-
len = arry && arry.length || 0;
|
| 2243 |
-
for ( indx = 0; indx < len; indx++ ) {
|
| 2244 |
-
if ( arry[ indx ][ 0 ] === column ) {
|
| 2245 |
-
return indx;
|
| 2246 |
-
}
|
| 2247 |
-
}
|
| 2248 |
-
return -1;
|
| 2249 |
-
},
|
| 2250 |
-
|
| 2251 |
-
formatFloat : function( str, table ) {
|
| 2252 |
-
if ( typeof str !== 'string' || str === '' ) { return str; }
|
| 2253 |
-
// allow using formatFloat without a table; defaults to US number format
|
| 2254 |
-
var num,
|
| 2255 |
-
usFormat = table && table.config ? table.config.usNumberFormat !== false :
|
| 2256 |
-
typeof table !== 'undefined' ? table : true;
|
| 2257 |
-
if ( usFormat ) {
|
| 2258 |
-
// US Format - 1,234,567.89 -> 1234567.89
|
| 2259 |
-
str = str.replace( ts.regex.comma, '' );
|
| 2260 |
-
} else {
|
| 2261 |
-
// German Format = 1.234.567,89 -> 1234567.89
|
| 2262 |
-
// French Format = 1 234 567,89 -> 1234567.89
|
| 2263 |
-
str = str.replace( ts.regex.digitNonUS, '' ).replace( ts.regex.comma, '.' );
|
| 2264 |
-
}
|
| 2265 |
-
if ( ts.regex.digitNegativeTest.test( str ) ) {
|
| 2266 |
-
// make (#) into a negative number -> (10) = -10
|
| 2267 |
-
str = str.replace( ts.regex.digitNegativeReplace, '-$1' );
|
| 2268 |
-
}
|
| 2269 |
-
num = parseFloat( str );
|
| 2270 |
-
// return the text instead of zero
|
| 2271 |
-
return isNaN( num ) ? $.trim( str ) : num;
|
| 2272 |
-
},
|
| 2273 |
-
|
| 2274 |
-
isDigit : function( str ) {
|
| 2275 |
-
// replace all unwanted chars and match
|
| 2276 |
-
return isNaN( str ) ?
|
| 2277 |
-
ts.regex.digitTest.test( str.toString().replace( ts.regex.digitReplace, '' ) ) :
|
| 2278 |
-
str !== '';
|
| 2279 |
-
},
|
| 2280 |
-
|
| 2281 |
-
// computeTableHeaderCellIndexes from:
|
| 2282 |
-
// http://www.javascripttoolbox.com/lib/table/examples.php
|
| 2283 |
-
// http://www.javascripttoolbox.com/temp/table_cellindex.html
|
| 2284 |
-
computeColumnIndex : function( $rows, c ) {
|
| 2285 |
-
var i, j, k, l, cell, cells, rowIndex, rowSpan, colSpan, firstAvailCol,
|
| 2286 |
-
// total columns has been calculated, use it to set the matrixrow
|
| 2287 |
-
columns = c && c.columns || 0,
|
| 2288 |
-
matrix = [],
|
| 2289 |
-
matrixrow = new Array( columns );
|
| 2290 |
-
for ( i = 0; i < $rows.length; i++ ) {
|
| 2291 |
-
cells = $rows[ i ].cells;
|
| 2292 |
-
for ( j = 0; j < cells.length; j++ ) {
|
| 2293 |
-
cell = cells[ j ];
|
| 2294 |
-
rowIndex = i;
|
| 2295 |
-
rowSpan = cell.rowSpan || 1;
|
| 2296 |
-
colSpan = cell.colSpan || 1;
|
| 2297 |
-
if ( typeof matrix[ rowIndex ] === 'undefined' ) {
|
| 2298 |
-
matrix[ rowIndex ] = [];
|
| 2299 |
-
}
|
| 2300 |
-
// Find first available column in the first row
|
| 2301 |
-
for ( k = 0; k < matrix[ rowIndex ].length + 1; k++ ) {
|
| 2302 |
-
if ( typeof matrix[ rowIndex ][ k ] === 'undefined' ) {
|
| 2303 |
-
firstAvailCol = k;
|
| 2304 |
-
break;
|
| 2305 |
-
}
|
| 2306 |
-
}
|
| 2307 |
-
// jscs:disable disallowEmptyBlocks
|
| 2308 |
-
if ( columns && cell.cellIndex === firstAvailCol ) {
|
| 2309 |
-
// don't to anything
|
| 2310 |
-
} else if ( cell.setAttribute ) {
|
| 2311 |
-
// jscs:enable disallowEmptyBlocks
|
| 2312 |
-
// add data-column (setAttribute = IE8+)
|
| 2313 |
-
cell.setAttribute( 'data-column', firstAvailCol );
|
| 2314 |
-
} else {
|
| 2315 |
-
// remove once we drop support for IE7 - 1/12/2016
|
| 2316 |
-
$( cell ).attr( 'data-column', firstAvailCol );
|
| 2317 |
-
}
|
| 2318 |
-
for ( k = rowIndex; k < rowIndex + rowSpan; k++ ) {
|
| 2319 |
-
if ( typeof matrix[ k ] === 'undefined' ) {
|
| 2320 |
-
matrix[ k ] = [];
|
| 2321 |
-
}
|
| 2322 |
-
matrixrow = matrix[ k ];
|
| 2323 |
-
for ( l = firstAvailCol; l < firstAvailCol + colSpan; l++ ) {
|
| 2324 |
-
matrixrow[ l ] = 'x';
|
| 2325 |
-
}
|
| 2326 |
-
}
|
| 2327 |
-
}
|
| 2328 |
-
}
|
| 2329 |
-
ts.checkColumnCount($rows, matrix, matrixrow.length);
|
| 2330 |
-
return matrixrow.length;
|
| 2331 |
-
},
|
| 2332 |
-
|
| 2333 |
-
checkColumnCount : function($rows, matrix, columns) {
|
| 2334 |
-
// this DOES NOT report any tbody column issues, except for the math and
|
| 2335 |
-
// and column selector widgets
|
| 2336 |
-
var i, len,
|
| 2337 |
-
valid = true,
|
| 2338 |
-
cells = [];
|
| 2339 |
-
for ( i = 0; i < matrix.length; i++ ) {
|
| 2340 |
-
// some matrix entries are undefined when testing the footer because
|
| 2341 |
-
// it is using the rowIndex property
|
| 2342 |
-
if ( matrix[i] ) {
|
| 2343 |
-
len = matrix[i].length;
|
| 2344 |
-
if ( matrix[i].length !== columns ) {
|
| 2345 |
-
valid = false;
|
| 2346 |
-
break;
|
| 2347 |
-
}
|
| 2348 |
-
}
|
| 2349 |
-
}
|
| 2350 |
-
if ( !valid ) {
|
| 2351 |
-
$rows.each( function( indx, el ) {
|
| 2352 |
-
var cell = el.parentElement.nodeName;
|
| 2353 |
-
if ( cells.indexOf( cell ) < 0 ) {
|
| 2354 |
-
cells.push( cell );
|
| 2355 |
-
}
|
| 2356 |
-
});
|
| 2357 |
-
console.error(
|
| 2358 |
-
'Invalid or incorrect number of columns in the ' +
|
| 2359 |
-
cells.join( ' or ' ) + '; expected ' + columns +
|
| 2360 |
-
', but found ' + len + ' columns'
|
| 2361 |
-
);
|
| 2362 |
-
}
|
| 2363 |
-
},
|
| 2364 |
-
|
| 2365 |
-
// automatically add a colgroup with col elements set to a percentage width
|
| 2366 |
-
fixColumnWidth : function( table ) {
|
| 2367 |
-
table = $( table )[ 0 ];
|
| 2368 |
-
var overallWidth, percent, $tbodies, len, index,
|
| 2369 |
-
c = table.config,
|
| 2370 |
-
$colgroup = c.$table.children( 'colgroup' );
|
| 2371 |
-
// remove plugin-added colgroup, in case we need to refresh the widths
|
| 2372 |
-
if ( $colgroup.length && $colgroup.hasClass( ts.css.colgroup ) ) {
|
| 2373 |
-
$colgroup.remove();
|
| 2374 |
-
}
|
| 2375 |
-
if ( c.widthFixed && c.$table.children( 'colgroup' ).length === 0 ) {
|
| 2376 |
-
$colgroup = $( '<colgroup class="' + ts.css.colgroup + '">' );
|
| 2377 |
-
overallWidth = c.$table.width();
|
| 2378 |
-
// only add col for visible columns - fixes #371
|
| 2379 |
-
$tbodies = c.$tbodies.find( 'tr:first' ).children( ':visible' );
|
| 2380 |
-
len = $tbodies.length;
|
| 2381 |
-
for ( index = 0; index < len; index++ ) {
|
| 2382 |
-
percent = parseInt( ( $tbodies.eq( index ).width() / overallWidth ) * 1000, 10 ) / 10 + '%';
|
| 2383 |
-
$colgroup.append( $( '<col>' ).css( 'width', percent ) );
|
| 2384 |
-
}
|
| 2385 |
-
c.$table.prepend( $colgroup );
|
| 2386 |
-
}
|
| 2387 |
-
},
|
| 2388 |
-
|
| 2389 |
-
// get sorter, string, empty, etc options for each column from
|
| 2390 |
-
// jQuery data, metadata, header option or header class name ('sorter-false')
|
| 2391 |
-
// priority = jQuery data > meta > headers option > header class name
|
| 2392 |
-
getData : function( header, configHeader, key ) {
|
| 2393 |
-
var meta, cl4ss,
|
| 2394 |
-
val = '',
|
| 2395 |
-
$header = $( header );
|
| 2396 |
-
if ( !$header.length ) { return ''; }
|
| 2397 |
-
meta = $.metadata ? $header.metadata() : false;
|
| 2398 |
-
cl4ss = ' ' + ( $header.attr( 'class' ) || '' );
|
| 2399 |
-
if ( typeof $header.data( key ) !== 'undefined' ||
|
| 2400 |
-
typeof $header.data( key.toLowerCase() ) !== 'undefined' ) {
|
| 2401 |
-
// 'data-lockedOrder' is assigned to 'lockedorder'; but 'data-locked-order' is assigned to 'lockedOrder'
|
| 2402 |
-
// 'data-sort-initial-order' is assigned to 'sortInitialOrder'
|
| 2403 |
-
val += $header.data( key ) || $header.data( key.toLowerCase() );
|
| 2404 |
-
} else if ( meta && typeof meta[ key ] !== 'undefined' ) {
|
| 2405 |
-
val += meta[ key ];
|
| 2406 |
-
} else if ( configHeader && typeof configHeader[ key ] !== 'undefined' ) {
|
| 2407 |
-
val += configHeader[ key ];
|
| 2408 |
-
} else if ( cl4ss !== ' ' && cl4ss.match( ' ' + key + '-' ) ) {
|
| 2409 |
-
// include sorter class name 'sorter-text', etc; now works with 'sorter-my-custom-parser'
|
| 2410 |
-
val = cl4ss.match( new RegExp( '\\s' + key + '-([\\w-]+)' ) )[ 1 ] || '';
|
| 2411 |
-
}
|
| 2412 |
-
return $.trim( val );
|
| 2413 |
-
},
|
| 2414 |
-
|
| 2415 |
-
getColumnData : function( table, obj, indx, getCell, $headers ) {
|
| 2416 |
-
if ( typeof obj !== 'object' || obj === null ) {
|
| 2417 |
-
return obj;
|
| 2418 |
-
}
|
| 2419 |
-
table = $( table )[ 0 ];
|
| 2420 |
-
var $header, key,
|
| 2421 |
-
c = table.config,
|
| 2422 |
-
$cells = ( $headers || c.$headers ),
|
| 2423 |
-
// c.$headerIndexed is not defined initially
|
| 2424 |
-
$cell = c.$headerIndexed && c.$headerIndexed[ indx ] ||
|
| 2425 |
-
$cells.find( '[data-column="' + indx + '"]:last' );
|
| 2426 |
-
if ( typeof obj[ indx ] !== 'undefined' ) {
|
| 2427 |
-
return getCell ? obj[ indx ] : obj[ $cells.index( $cell ) ];
|
| 2428 |
-
}
|
| 2429 |
-
for ( key in obj ) {
|
| 2430 |
-
if ( typeof key === 'string' ) {
|
| 2431 |
-
$header = $cell
|
| 2432 |
-
// header cell with class/id
|
| 2433 |
-
.filter( key )
|
| 2434 |
-
// find elements within the header cell with cell/id
|
| 2435 |
-
.add( $cell.find( key ) );
|
| 2436 |
-
if ( $header.length ) {
|
| 2437 |
-
return obj[ key ];
|
| 2438 |
-
}
|
| 2439 |
-
}
|
| 2440 |
-
}
|
| 2441 |
-
return;
|
| 2442 |
-
},
|
| 2443 |
-
|
| 2444 |
-
// *** Process table ***
|
| 2445 |
-
// add processing indicator
|
| 2446 |
-
isProcessing : function( $table, toggle, $headers ) {
|
| 2447 |
-
$table = $( $table );
|
| 2448 |
-
var c = $table[ 0 ].config,
|
| 2449 |
-
// default to all headers
|
| 2450 |
-
$header = $headers || $table.find( '.' + ts.css.header );
|
| 2451 |
-
if ( toggle ) {
|
| 2452 |
-
// don't use sortList if custom $headers used
|
| 2453 |
-
if ( typeof $headers !== 'undefined' && c.sortList.length > 0 ) {
|
| 2454 |
-
// get headers from the sortList
|
| 2455 |
-
$header = $header.filter( function() {
|
| 2456 |
-
// get data-column from attr to keep compatibility with jQuery 1.2.6
|
| 2457 |
-
return this.sortDisabled ?
|
| 2458 |
-
false :
|
| 2459 |
-
ts.isValueInArray( parseFloat( $( this ).attr( 'data-column' ) ), c.sortList ) >= 0;
|
| 2460 |
-
});
|
| 2461 |
-
}
|
| 2462 |
-
$table.add( $header ).addClass( ts.css.processing + ' ' + c.cssProcessing );
|
| 2463 |
-
} else {
|
| 2464 |
-
$table.add( $header ).removeClass( ts.css.processing + ' ' + c.cssProcessing );
|
| 2465 |
-
}
|
| 2466 |
-
},
|
| 2467 |
-
|
| 2468 |
-
// detach tbody but save the position
|
| 2469 |
-
// don't use tbody because there are portions that look for a tbody index (updateCell)
|
| 2470 |
-
processTbody : function( table, $tb, getIt ) {
|
| 2471 |
-
table = $( table )[ 0 ];
|
| 2472 |
-
if ( getIt ) {
|
| 2473 |
-
table.isProcessing = true;
|
| 2474 |
-
$tb.before( '<colgroup class="tablesorter-savemyplace"/>' );
|
| 2475 |
-
return $.fn.detach ? $tb.detach() : $tb.remove();
|
| 2476 |
-
}
|
| 2477 |
-
var holdr = $( table ).find( 'colgroup.tablesorter-savemyplace' );
|
| 2478 |
-
$tb.insertAfter( holdr );
|
| 2479 |
-
holdr.remove();
|
| 2480 |
-
table.isProcessing = false;
|
| 2481 |
-
},
|
| 2482 |
-
|
| 2483 |
-
clearTableBody : function( table ) {
|
| 2484 |
-
$( table )[ 0 ].config.$tbodies.children().detach();
|
| 2485 |
-
},
|
| 2486 |
-
|
| 2487 |
-
// used when replacing accented characters during sorting
|
| 2488 |
-
characterEquivalents : {
|
| 2489 |
-
'a' : '\u00e1\u00e0\u00e2\u00e3\u00e4\u0105\u00e5', // áàâãäąå
|
| 2490 |
-
'A' : '\u00c1\u00c0\u00c2\u00c3\u00c4\u0104\u00c5', // ÁÀÂÃÄĄÅ
|
| 2491 |
-
'c' : '\u00e7\u0107\u010d', // çćč
|
| 2492 |
-
'C' : '\u00c7\u0106\u010c', // ÇĆČ
|
| 2493 |
-
'e' : '\u00e9\u00e8\u00ea\u00eb\u011b\u0119', // éèêëěę
|
| 2494 |
-
'E' : '\u00c9\u00c8\u00ca\u00cb\u011a\u0118', // ÉÈÊËĚĘ
|
| 2495 |
-
'i' : '\u00ed\u00ec\u0130\u00ee\u00ef\u0131', // íìİîïı
|
| 2496 |
-
'I' : '\u00cd\u00cc\u0130\u00ce\u00cf', // ÍÌİÎÏ
|
| 2497 |
-
'o' : '\u00f3\u00f2\u00f4\u00f5\u00f6\u014d', // óòôõöō
|
| 2498 |
-
'O' : '\u00d3\u00d2\u00d4\u00d5\u00d6\u014c', // ÓÒÔÕÖŌ
|
| 2499 |
-
'ss': '\u00df', // ß (s sharp)
|
| 2500 |
-
'SS': '\u1e9e', // ẞ (Capital sharp s)
|
| 2501 |
-
'u' : '\u00fa\u00f9\u00fb\u00fc\u016f', // úùûüů
|
| 2502 |
-
'U' : '\u00da\u00d9\u00db\u00dc\u016e' // ÚÙÛÜŮ
|
| 2503 |
-
},
|
| 2504 |
-
|
| 2505 |
-
replaceAccents : function( str ) {
|
| 2506 |
-
var chr,
|
| 2507 |
-
acc = '[',
|
| 2508 |
-
eq = ts.characterEquivalents;
|
| 2509 |
-
if ( !ts.characterRegex ) {
|
| 2510 |
-
ts.characterRegexArray = {};
|
| 2511 |
-
for ( chr in eq ) {
|
| 2512 |
-
if ( typeof chr === 'string' ) {
|
| 2513 |
-
acc += eq[ chr ];
|
| 2514 |
-
ts.characterRegexArray[ chr ] = new RegExp( '[' + eq[ chr ] + ']', 'g' );
|
| 2515 |
-
}
|
| 2516 |
-
}
|
| 2517 |
-
ts.characterRegex = new RegExp( acc + ']' );
|
| 2518 |
-
}
|
| 2519 |
-
if ( ts.characterRegex.test( str ) ) {
|
| 2520 |
-
for ( chr in eq ) {
|
| 2521 |
-
if ( typeof chr === 'string' ) {
|
| 2522 |
-
str = str.replace( ts.characterRegexArray[ chr ], chr );
|
| 2523 |
-
}
|
| 2524 |
-
}
|
| 2525 |
-
}
|
| 2526 |
-
return str;
|
| 2527 |
-
},
|
| 2528 |
-
|
| 2529 |
-
validateOptions : function( c ) {
|
| 2530 |
-
var setting, setting2, typ, timer,
|
| 2531 |
-
// ignore options containing an array
|
| 2532 |
-
ignore = 'headers sortForce sortList sortAppend widgets'.split( ' ' ),
|
| 2533 |
-
orig = c.originalSettings;
|
| 2534 |
-
if ( orig ) {
|
| 2535 |
-
if ( ts.debug(c, 'core') ) {
|
| 2536 |
-
timer = new Date();
|
| 2537 |
-
}
|
| 2538 |
-
for ( setting in orig ) {
|
| 2539 |
-
typ = typeof ts.defaults[setting];
|
| 2540 |
-
if ( typ === 'undefined' ) {
|
| 2541 |
-
console.warn( 'Tablesorter Warning! "table.config.' + setting + '" option not recognized' );
|
| 2542 |
-
} else if ( typ === 'object' ) {
|
| 2543 |
-
for ( setting2 in orig[setting] ) {
|
| 2544 |
-
typ = ts.defaults[setting] && typeof ts.defaults[setting][setting2];
|
| 2545 |
-
if ( $.inArray( setting, ignore ) < 0 && typ === 'undefined' ) {
|
| 2546 |
-
console.warn( 'Tablesorter Warning! "table.config.' + setting + '.' + setting2 + '" option not recognized' );
|
| 2547 |
-
}
|
| 2548 |
-
}
|
| 2549 |
-
}
|
| 2550 |
-
}
|
| 2551 |
-
if ( ts.debug(c, 'core') ) {
|
| 2552 |
-
console.log( 'validate options time:' + ts.benchmark( timer ) );
|
| 2553 |
-
}
|
| 2554 |
-
}
|
| 2555 |
-
},
|
| 2556 |
-
|
| 2557 |
-
// restore headers
|
| 2558 |
-
restoreHeaders : function( table ) {
|
| 2559 |
-
var index, $cell,
|
| 2560 |
-
c = $( table )[ 0 ].config,
|
| 2561 |
-
$headers = c.$table.find( c.selectorHeaders ),
|
| 2562 |
-
len = $headers.length;
|
| 2563 |
-
// don't use c.$headers here in case header cells were swapped
|
| 2564 |
-
for ( index = 0; index < len; index++ ) {
|
| 2565 |
-
$cell = $headers.eq( index );
|
| 2566 |
-
// only restore header cells if it is wrapped
|
| 2567 |
-
// because this is also used by the updateAll method
|
| 2568 |
-
if ( $cell.find( '.' + ts.css.headerIn ).length ) {
|
| 2569 |
-
$cell.html( c.headerContent[ index ] );
|
| 2570 |
-
}
|
| 2571 |
-
}
|
| 2572 |
-
},
|
| 2573 |
-
|
| 2574 |
-
destroy : function( table, removeClasses, callback ) {
|
| 2575 |
-
table = $( table )[ 0 ];
|
| 2576 |
-
if ( !table.hasInitialized ) { return; }
|
| 2577 |
-
// remove all widgets
|
| 2578 |
-
ts.removeWidget( table, true, false );
|
| 2579 |
-
var events,
|
| 2580 |
-
$t = $( table ),
|
| 2581 |
-
c = table.config,
|
| 2582 |
-
$h = $t.find( 'thead:first' ),
|
| 2583 |
-
$r = $h.find( 'tr.' + ts.css.headerRow ).removeClass( ts.css.headerRow + ' ' + c.cssHeaderRow ),
|
| 2584 |
-
$f = $t.find( 'tfoot:first > tr' ).children( 'th, td' );
|
| 2585 |
-
if ( removeClasses === false && $.inArray( 'uitheme', c.widgets ) >= 0 ) {
|
| 2586 |
-
// reapply uitheme classes, in case we want to maintain appearance
|
| 2587 |
-
$t.triggerHandler( 'applyWidgetId', [ 'uitheme' ] );
|
| 2588 |
-
$t.triggerHandler( 'applyWidgetId', [ 'zebra' ] );
|
| 2589 |
-
}
|
| 2590 |
-
// remove widget added rows, just in case
|
| 2591 |
-
$h.find( 'tr' ).not( $r ).remove();
|
| 2592 |
-
// disable tablesorter - not using .unbind( namespace ) because namespacing was
|
| 2593 |
-
// added in jQuery v1.4.3 - see http://api.jquery.com/event.namespace/
|
| 2594 |
-
events = 'sortReset update updateRows updateAll updateHeaders updateCell addRows updateComplete sorton ' +
|
| 2595 |
-
'appendCache updateCache applyWidgetId applyWidgets refreshWidgets removeWidget destroy mouseup mouseleave ' +
|
| 2596 |
-
'keypress sortBegin sortEnd resetToLoadState '.split( ' ' )
|
| 2597 |
-
.join( c.namespace + ' ' );
|
| 2598 |
-
$t
|
| 2599 |
-
.removeData( 'tablesorter' )
|
| 2600 |
-
.unbind( events.replace( ts.regex.spaces, ' ' ) );
|
| 2601 |
-
c.$headers
|
| 2602 |
-
.add( $f )
|
| 2603 |
-
.removeClass( [ ts.css.header, c.cssHeader, c.cssAsc, c.cssDesc, ts.css.sortAsc, ts.css.sortDesc, ts.css.sortNone ].join( ' ' ) )
|
| 2604 |
-
.removeAttr( 'data-column' )
|
| 2605 |
-
.removeAttr( 'aria-label' )
|
| 2606 |
-
.attr( 'aria-disabled', 'true' );
|
| 2607 |
-
$r
|
| 2608 |
-
.find( c.selectorSort )
|
| 2609 |
-
.unbind( ( 'mousedown mouseup keypress '.split( ' ' ).join( c.namespace + ' ' ) ).replace( ts.regex.spaces, ' ' ) );
|
| 2610 |
-
ts.restoreHeaders( table );
|
| 2611 |
-
$t.toggleClass( ts.css.table + ' ' + c.tableClass + ' tablesorter-' + c.theme, removeClasses === false );
|
| 2612 |
-
$t.removeClass(c.namespace.slice(1));
|
| 2613 |
-
// clear flag in case the plugin is initialized again
|
| 2614 |
-
table.hasInitialized = false;
|
| 2615 |
-
delete table.config.cache;
|
| 2616 |
-
if ( typeof callback === 'function' ) {
|
| 2617 |
-
callback( table );
|
| 2618 |
-
}
|
| 2619 |
-
if ( ts.debug(c, 'core') ) {
|
| 2620 |
-
console.log( 'tablesorter has been removed' );
|
| 2621 |
-
}
|
| 2622 |
-
}
|
| 2623 |
-
|
| 2624 |
-
};
|
| 2625 |
-
|
| 2626 |
-
$.fn.tablesorter = function( settings ) {
|
| 2627 |
-
return this.each( function() {
|
| 2628 |
-
var table = this,
|
| 2629 |
-
// merge & extend config options
|
| 2630 |
-
c = $.extend( true, {}, ts.defaults, settings, ts.instanceMethods );
|
| 2631 |
-
// save initial settings
|
| 2632 |
-
c.originalSettings = settings;
|
| 2633 |
-
// create a table from data (build table widget)
|
| 2634 |
-
if ( !table.hasInitialized && ts.buildTable && this.nodeName !== 'TABLE' ) {
|
| 2635 |
-
// return the table (in case the original target is the table's container)
|
| 2636 |
-
ts.buildTable( table, c );
|
| 2637 |
-
} else {
|
| 2638 |
-
ts.setup( table, c );
|
| 2639 |
-
}
|
| 2640 |
-
});
|
| 2641 |
-
};
|
| 2642 |
-
|
| 2643 |
-
// set up debug logs
|
| 2644 |
-
if ( !( window.console && window.console.log ) ) {
|
| 2645 |
-
// access $.tablesorter.logs for browsers that don't have a console...
|
| 2646 |
-
ts.logs = [];
|
| 2647 |
-
/*jshint -W020 */
|
| 2648 |
-
console = {};
|
| 2649 |
-
console.log = console.warn = console.error = console.table = function() {
|
| 2650 |
-
var arg = arguments.length > 1 ? arguments : arguments[0];
|
| 2651 |
-
ts.logs[ ts.logs.length ] = { date: Date.now(), log: arg };
|
| 2652 |
-
};
|
| 2653 |
-
}
|
| 2654 |
-
|
| 2655 |
-
// add default parsers
|
| 2656 |
-
ts.addParser({
|
| 2657 |
-
id : 'no-parser',
|
| 2658 |
-
is : function() {
|
| 2659 |
-
return false;
|
| 2660 |
-
},
|
| 2661 |
-
format : function() {
|
| 2662 |
-
return '';
|
| 2663 |
-
},
|
| 2664 |
-
type : 'text'
|
| 2665 |
-
});
|
| 2666 |
-
|
| 2667 |
-
ts.addParser({
|
| 2668 |
-
id : 'text',
|
| 2669 |
-
is : function() {
|
| 2670 |
-
return true;
|
| 2671 |
-
},
|
| 2672 |
-
format : function( str, table ) {
|
| 2673 |
-
var c = table.config;
|
| 2674 |
-
if ( str ) {
|
| 2675 |
-
str = $.trim( c.ignoreCase ? str.toLocaleLowerCase() : str );
|
| 2676 |
-
str = c.sortLocaleCompare ? ts.replaceAccents( str ) : str;
|
| 2677 |
-
}
|
| 2678 |
-
return str;
|
| 2679 |
-
},
|
| 2680 |
-
type : 'text'
|
| 2681 |
-
});
|
| 2682 |
-
|
| 2683 |
-
ts.regex.nondigit = /[^\w,. \-()]/g;
|
| 2684 |
-
ts.addParser({
|
| 2685 |
-
id : 'digit',
|
| 2686 |
-
is : function( str ) {
|
| 2687 |
-
return ts.isDigit( str );
|
| 2688 |
-
},
|
| 2689 |
-
format : function( str, table ) {
|
| 2690 |
-
var num = ts.formatFloat( ( str || '' ).replace( ts.regex.nondigit, '' ), table );
|
| 2691 |
-
return str && typeof num === 'number' ? num :
|
| 2692 |
-
str ? $.trim( str && table.config.ignoreCase ? str.toLocaleLowerCase() : str ) : str;
|
| 2693 |
-
},
|
| 2694 |
-
type : 'numeric'
|
| 2695 |
-
});
|
| 2696 |
-
|
| 2697 |
-
ts.regex.currencyReplace = /[+\-,. ]/g;
|
| 2698 |
-
ts.regex.currencyTest = /^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/;
|
| 2699 |
-
ts.addParser({
|
| 2700 |
-
id : 'currency',
|
| 2701 |
-
is : function( str ) {
|
| 2702 |
-
str = ( str || '' ).replace( ts.regex.currencyReplace, '' );
|
| 2703 |
-
// test for £$€¤¥¢
|
| 2704 |
-
return ts.regex.currencyTest.test( str );
|
| 2705 |
-
},
|
| 2706 |
-
format : function( str, table ) {
|
| 2707 |
-
var num = ts.formatFloat( ( str || '' ).replace( ts.regex.nondigit, '' ), table );
|
| 2708 |
-
return str && typeof num === 'number' ? num :
|
| 2709 |
-
str ? $.trim( str && table.config.ignoreCase ? str.toLocaleLowerCase() : str ) : str;
|
| 2710 |
-
},
|
| 2711 |
-
type : 'numeric'
|
| 2712 |
-
});
|
| 2713 |
-
|
| 2714 |
-
// too many protocols to add them all https://en.wikipedia.org/wiki/URI_scheme
|
| 2715 |
-
// now, this regex can be updated before initialization
|
| 2716 |
-
ts.regex.urlProtocolTest = /^(https?|ftp|file):\/\//;
|
| 2717 |
-
ts.regex.urlProtocolReplace = /(https?|ftp|file):\/\/(www\.)?/;
|
| 2718 |
-
ts.addParser({
|
| 2719 |
-
id : 'url',
|
| 2720 |
-
is : function( str ) {
|
| 2721 |
-
return ts.regex.urlProtocolTest.test( str );
|
| 2722 |
-
},
|
| 2723 |
-
format : function( str ) {
|
| 2724 |
-
return str ? $.trim( str.replace( ts.regex.urlProtocolReplace, '' ) ) : str;
|
| 2725 |
-
},
|
| 2726 |
-
type : 'text'
|
| 2727 |
-
});
|
| 2728 |
-
|
| 2729 |
-
ts.regex.dash = /-/g;
|
| 2730 |
-
ts.regex.isoDate = /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/;
|
| 2731 |
-
ts.addParser({
|
| 2732 |
-
id : 'isoDate',
|
| 2733 |
-
is : function( str ) {
|
| 2734 |
-
return ts.regex.isoDate.test( str );
|
| 2735 |
-
},
|
| 2736 |
-
format : function( str ) {
|
| 2737 |
-
var date = str ? new Date( str.replace( ts.regex.dash, '/' ) ) : str;
|
| 2738 |
-
return date instanceof Date && isFinite( date ) ? date.getTime() : str;
|
| 2739 |
-
},
|
| 2740 |
-
type : 'numeric'
|
| 2741 |
-
});
|
| 2742 |
-
|
| 2743 |
-
ts.regex.percent = /%/g;
|
| 2744 |
-
ts.regex.percentTest = /(\d\s*?%|%\s*?\d)/;
|
| 2745 |
-
ts.addParser({
|
| 2746 |
-
id : 'percent',
|
| 2747 |
-
is : function( str ) {
|
| 2748 |
-
return ts.regex.percentTest.test( str ) && str.length < 15;
|
| 2749 |
-
},
|
| 2750 |
-
format : function( str, table ) {
|
| 2751 |
-
return str ? ts.formatFloat( str.replace( ts.regex.percent, '' ), table ) : str;
|
| 2752 |
-
},
|
| 2753 |
-
type : 'numeric'
|
| 2754 |
-
});
|
| 2755 |
-
|
| 2756 |
-
// added image parser to core v2.17.9
|
| 2757 |
-
ts.addParser({
|
| 2758 |
-
id : 'image',
|
| 2759 |
-
is : function( str, table, node, $node ) {
|
| 2760 |
-
return $node.find( 'img' ).length > 0;
|
| 2761 |
-
},
|
| 2762 |
-
format : function( str, table, cell ) {
|
| 2763 |
-
return $( cell ).find( 'img' ).attr( table.config.imgAttr || 'alt' ) || str;
|
| 2764 |
-
},
|
| 2765 |
-
parsed : true, // filter widget flag
|
| 2766 |
-
type : 'text'
|
| 2767 |
-
});
|
| 2768 |
-
|
| 2769 |
-
ts.regex.dateReplace = /(\S)([AP]M)$/i; // used by usLongDate & time parser
|
| 2770 |
-
ts.regex.usLongDateTest1 = /^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i;
|
| 2771 |
-
ts.regex.usLongDateTest2 = /^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i;
|
| 2772 |
-
ts.addParser({
|
| 2773 |
-
id : 'usLongDate',
|
| 2774 |
-
is : function( str ) {
|
| 2775 |
-
// two digit years are not allowed cross-browser
|
| 2776 |
-
// Jan 01, 2013 12:34:56 PM or 01 Jan 2013
|
| 2777 |
-
return ts.regex.usLongDateTest1.test( str ) || ts.regex.usLongDateTest2.test( str );
|
| 2778 |
-
},
|
| 2779 |
-
format : function( str ) {
|
| 2780 |
-
var date = str ? new Date( str.replace( ts.regex.dateReplace, '$1 $2' ) ) : str;
|
| 2781 |
-
return date instanceof Date && isFinite( date ) ? date.getTime() : str;
|
| 2782 |
-
},
|
| 2783 |
-
type : 'numeric'
|
| 2784 |
-
});
|
| 2785 |
-
|
| 2786 |
-
// testing for ##-##-#### or ####-##-##, so it's not perfect; time can be included
|
| 2787 |
-
ts.regex.shortDateTest = /(^\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4})|(^\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2})/;
|
| 2788 |
-
// escaped "-" because JSHint in Firefox was showing it as an error
|
| 2789 |
-
ts.regex.shortDateReplace = /[\-.,]/g;
|
| 2790 |
-
// XXY covers MDY & DMY formats
|
| 2791 |
-
ts.regex.shortDateXXY = /(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/;
|
| 2792 |
-
ts.regex.shortDateYMD = /(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/;
|
| 2793 |
-
ts.convertFormat = function( dateString, format ) {
|
| 2794 |
-
dateString = ( dateString || '' )
|
| 2795 |
-
.replace( ts.regex.spaces, ' ' )
|
| 2796 |
-
.replace( ts.regex.shortDateReplace, '/' );
|
| 2797 |
-
if ( format === 'mmddyyyy' ) {
|
| 2798 |
-
dateString = dateString.replace( ts.regex.shortDateXXY, '$3/$1/$2' );
|
| 2799 |
-
} else if ( format === 'ddmmyyyy' ) {
|
| 2800 |
-
dateString = dateString.replace( ts.regex.shortDateXXY, '$3/$2/$1' );
|
| 2801 |
-
} else if ( format === 'yyyymmdd' ) {
|
| 2802 |
-
dateString = dateString.replace( ts.regex.shortDateYMD, '$1/$2/$3' );
|
| 2803 |
-
}
|
| 2804 |
-
var date = new Date( dateString );
|
| 2805 |
-
return date instanceof Date && isFinite( date ) ? date.getTime() : '';
|
| 2806 |
-
};
|
| 2807 |
-
|
| 2808 |
-
ts.addParser({
|
| 2809 |
-
id : 'shortDate', // 'mmddyyyy', 'ddmmyyyy' or 'yyyymmdd'
|
| 2810 |
-
is : function( str ) {
|
| 2811 |
-
str = ( str || '' ).replace( ts.regex.spaces, ' ' ).replace( ts.regex.shortDateReplace, '/' );
|
| 2812 |
-
return ts.regex.shortDateTest.test( str );
|
| 2813 |
-
},
|
| 2814 |
-
format : function( str, table, cell, cellIndex ) {
|
| 2815 |
-
if ( str ) {
|
| 2816 |
-
var c = table.config,
|
| 2817 |
-
$header = c.$headerIndexed[ cellIndex ],
|
| 2818 |
-
format = $header.length && $header.data( 'dateFormat' ) ||
|
| 2819 |
-
ts.getData( $header, ts.getColumnData( table, c.headers, cellIndex ), 'dateFormat' ) ||
|
| 2820 |
-
c.dateFormat;
|
| 2821 |
-
// save format because getData can be slow...
|
| 2822 |
-
if ( $header.length ) {
|
| 2823 |
-
$header.data( 'dateFormat', format );
|
| 2824 |
-
}
|
| 2825 |
-
return ts.convertFormat( str, format ) || str;
|
| 2826 |
-
}
|
| 2827 |
-
return str;
|
| 2828 |
-
},
|
| 2829 |
-
type : 'numeric'
|
| 2830 |
-
});
|
| 2831 |
-
|
| 2832 |
-
// match 24 hour time & 12 hours time + am/pm - see http://regexr.com/3c3tk
|
| 2833 |
-
ts.regex.timeTest = /^(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)$|^((?:[01]\d|[2][0-4]):[0-5]\d)$/i;
|
| 2834 |
-
ts.regex.timeMatch = /(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)|((?:[01]\d|[2][0-4]):[0-5]\d)/i;
|
| 2835 |
-
ts.addParser({
|
| 2836 |
-
id : 'time',
|
| 2837 |
-
is : function( str ) {
|
| 2838 |
-
return ts.regex.timeTest.test( str );
|
| 2839 |
-
},
|
| 2840 |
-
format : function( str ) {
|
| 2841 |
-
// isolate time... ignore month, day and year
|
| 2842 |
-
var temp,
|
| 2843 |
-
timePart = ( str || '' ).match( ts.regex.timeMatch ),
|
| 2844 |
-
orig = new Date( str ),
|
| 2845 |
-
// no time component? default to 00:00 by leaving it out, but only if str is defined
|
| 2846 |
-
time = str && ( timePart !== null ? timePart[ 0 ] : '00:00 AM' ),
|
| 2847 |
-
date = time ? new Date( '2000/01/01 ' + time.replace( ts.regex.dateReplace, '$1 $2' ) ) : time;
|
| 2848 |
-
if ( date instanceof Date && isFinite( date ) ) {
|
| 2849 |
-
temp = orig instanceof Date && isFinite( orig ) ? orig.getTime() : 0;
|
| 2850 |
-
// if original string was a valid date, add it to the decimal so the column sorts in some kind of order
|
| 2851 |
-
// luckily new Date() ignores the decimals
|
| 2852 |
-
return temp ? parseFloat( date.getTime() + '.' + orig.getTime() ) : date.getTime();
|
| 2853 |
-
}
|
| 2854 |
-
return str;
|
| 2855 |
-
},
|
| 2856 |
-
type : 'numeric'
|
| 2857 |
-
});
|
| 2858 |
-
|
| 2859 |
-
ts.addParser({
|
| 2860 |
-
id : 'metadata',
|
| 2861 |
-
is : function() {
|
| 2862 |
-
return false;
|
| 2863 |
-
},
|
| 2864 |
-
format : function( str, table, cell ) {
|
| 2865 |
-
var c = table.config,
|
| 2866 |
-
p = ( !c.parserMetadataName ) ? 'sortValue' : c.parserMetadataName;
|
| 2867 |
-
return $( cell ).metadata()[ p ];
|
| 2868 |
-
},
|
| 2869 |
-
type : 'numeric'
|
| 2870 |
-
});
|
| 2871 |
-
|
| 2872 |
-
/*
|
| 2873 |
-
██████ ██████ █████▄ █████▄ ▄████▄
|
| 2874 |
-
▄█▀ ██▄▄ ██▄▄██ ██▄▄██ ██▄▄██
|
| 2875 |
-
▄█▀ ██▀▀ ██▀▀██ ██▀▀█ ██▀▀██
|
| 2876 |
-
██████ ██████ █████▀ ██ ██ ██ ██
|
| 2877 |
-
*/
|
| 2878 |
-
// add default widgets
|
| 2879 |
-
ts.addWidget({
|
| 2880 |
-
id : 'zebra',
|
| 2881 |
-
priority : 90,
|
| 2882 |
-
format : function( table, c, wo ) {
|
| 2883 |
-
var $visibleRows, $row, count, isEven, tbodyIndex, rowIndex, len,
|
| 2884 |
-
child = new RegExp( c.cssChildRow, 'i' ),
|
| 2885 |
-
$tbodies = c.$tbodies.add( $( c.namespace + '_extra_table' ).children( 'tbody:not(.' + c.cssInfoBlock + ')' ) );
|
| 2886 |
-
for ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
|
| 2887 |
-
// loop through the visible rows
|
| 2888 |
-
count = 0;
|
| 2889 |
-
$visibleRows = $tbodies.eq( tbodyIndex ).children( 'tr:visible' ).not( c.selectorRemove );
|
| 2890 |
-
len = $visibleRows.length;
|
| 2891 |
-
for ( rowIndex = 0; rowIndex < len; rowIndex++ ) {
|
| 2892 |
-
$row = $visibleRows.eq( rowIndex );
|
| 2893 |
-
// style child rows the same way the parent row was styled
|
| 2894 |
-
if ( !child.test( $row[ 0 ].className ) ) { count++; }
|
| 2895 |
-
isEven = ( count % 2 === 0 );
|
| 2896 |
-
$row
|
| 2897 |
-
.removeClass( wo.zebra[ isEven ? 1 : 0 ] )
|
| 2898 |
-
.addClass( wo.zebra[ isEven ? 0 : 1 ] );
|
| 2899 |
-
}
|
| 2900 |
-
}
|
| 2901 |
-
},
|
| 2902 |
-
remove : function( table, c, wo, refreshing ) {
|
| 2903 |
-
if ( refreshing ) { return; }
|
| 2904 |
-
var tbodyIndex, $tbody,
|
| 2905 |
-
$tbodies = c.$tbodies,
|
| 2906 |
-
toRemove = ( wo.zebra || [ 'even', 'odd' ] ).join( ' ' );
|
| 2907 |
-
for ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
|
| 2908 |
-
$tbody = ts.processTbody( table, $tbodies.eq( tbodyIndex ), true ); // remove tbody
|
| 2909 |
-
$tbody.children().removeClass( toRemove );
|
| 2910 |
-
ts.processTbody( table, $tbody, false ); // restore tbody
|
| 2911 |
-
}
|
| 2912 |
-
}
|
| 2913 |
-
});
|
| 2914 |
-
|
| 2915 |
-
})( jQuery );
|
| 2916 |
return jQuery.tablesorter;}));
|
| 1 |
(function(factory){if (typeof define === 'function' && define.amd){define(['jquery'], factory);} else if (typeof module === 'object' && typeof module.exports === 'object'){module.exports = factory(require('jquery'));} else {factory(jQuery);}}(function(jQuery){
|
| 2 |
+
/*! TableSorter (FORK) v2.31.3 *//*
|
| 3 |
+
* Client-side table sorting with ease!
|
| 4 |
+
* @requires jQuery v1.2.6+
|
| 5 |
+
*
|
| 6 |
+
* Copyright (c) 2007 Christian Bach
|
| 7 |
+
* fork maintained by Rob Garrison
|
| 8 |
+
*
|
| 9 |
+
* Examples and original docs at: http://tablesorter.com
|
| 10 |
+
* Dual licensed under the MIT and GPL licenses:
|
| 11 |
+
* http://www.opensource.org/licenses/mit-license.php
|
| 12 |
+
* http://www.gnu.org/licenses/gpl.html
|
| 13 |
+
*
|
| 14 |
+
* @type jQuery
|
| 15 |
+
* @name tablesorter (FORK)
|
| 16 |
+
* @cat Plugins/Tablesorter
|
| 17 |
+
* @author Christian Bach - christian.bach@polyester.se
|
| 18 |
+
* @contributor Rob Garrison - https://github.com/Mottie/tablesorter
|
| 19 |
+
* @docs (fork) - https://mottie.github.io/tablesorter/docs/
|
| 20 |
+
*/
|
| 21 |
+
/*jshint browser:true, jquery:true, unused:false, expr: true */
|
| 22 |
+
;( function( $ ) {
|
| 23 |
+
'use strict';
|
| 24 |
+
var ts = $.tablesorter = {
|
| 25 |
+
|
| 26 |
+
version : '2.31.3',
|
| 27 |
+
|
| 28 |
+
parsers : [],
|
| 29 |
+
widgets : [],
|
| 30 |
+
defaults : {
|
| 31 |
+
|
| 32 |
+
// *** appearance
|
| 33 |
+
theme : 'default', // adds tablesorter-{theme} to the table for styling
|
| 34 |
+
widthFixed : false, // adds colgroup to fix widths of columns
|
| 35 |
+
showProcessing : false, // show an indeterminate timer icon in the header when the table is sorted or filtered.
|
| 36 |
+
|
| 37 |
+
headerTemplate : '{content}',// header layout template (HTML ok); {content} = innerHTML, {icon} = <i/> // class from cssIcon
|
| 38 |
+
onRenderTemplate : null, // function( index, template ) { return template; }, // template is a string
|
| 39 |
+
onRenderHeader : null, // function( index ) {}, // nothing to return
|
| 40 |
+
|
| 41 |
+
// *** functionality
|
| 42 |
+
cancelSelection : true, // prevent text selection in the header
|
| 43 |
+
tabIndex : true, // add tabindex to header for keyboard accessibility
|
| 44 |
+
dateFormat : 'mmddyyyy', // other options: 'ddmmyyy' or 'yyyymmdd'
|
| 45 |
+
sortMultiSortKey : 'shiftKey', // key used to select additional columns
|
| 46 |
+
sortResetKey : 'ctrlKey', // key used to remove sorting on a column
|
| 47 |
+
usNumberFormat : true, // false for German '1.234.567,89' or French '1 234 567,89'
|
| 48 |
+
delayInit : false, // if false, the parsed table contents will not update until the first sort
|
| 49 |
+
serverSideSorting: false, // if true, server-side sorting should be performed because client-side sorting will be disabled, but the ui and events will still be used.
|
| 50 |
+
resort : true, // default setting to trigger a resort after an 'update', 'addRows', 'updateCell', etc has completed
|
| 51 |
+
|
| 52 |
+
// *** sort options
|
| 53 |
+
headers : {}, // set sorter, string, empty, locked order, sortInitialOrder, filter, etc.
|
| 54 |
+
ignoreCase : true, // ignore case while sorting
|
| 55 |
+
sortForce : null, // column(s) first sorted; always applied
|
| 56 |
+
sortList : [], // Initial sort order; applied initially; updated when manually sorted
|
| 57 |
+
sortAppend : null, // column(s) sorted last; always applied
|
| 58 |
+
sortStable : false, // when sorting two rows with exactly the same content, the original sort order is maintained
|
| 59 |
+
|
| 60 |
+
sortInitialOrder : 'asc', // sort direction on first click
|
| 61 |
+
sortLocaleCompare: false, // replace equivalent character (accented characters)
|
| 62 |
+
sortReset : false, // third click on the header will reset column to default - unsorted
|
| 63 |
+
sortRestart : false, // restart sort to 'sortInitialOrder' when clicking on previously unsorted columns
|
| 64 |
+
|
| 65 |
+
emptyTo : 'bottom', // sort empty cell to bottom, top, none, zero, emptyMax, emptyMin
|
| 66 |
+
stringTo : 'max', // sort strings in numerical column as max, min, top, bottom, zero
|
| 67 |
+
duplicateSpan : true, // colspan cells in the tbody will have duplicated content in the cache for each spanned column
|
| 68 |
+
textExtraction : 'basic', // text extraction method/function - function( node, table, cellIndex ) {}
|
| 69 |
+
textAttribute : 'data-text',// data-attribute that contains alternate cell text (used in default textExtraction function)
|
| 70 |
+
textSorter : null, // choose overall or specific column sorter function( a, b, direction, table, columnIndex ) [alt: ts.sortText]
|
| 71 |
+
numberSorter : null, // choose overall numeric sorter function( a, b, direction, maxColumnValue )
|
| 72 |
+
|
| 73 |
+
// *** widget options
|
| 74 |
+
initWidgets : true, // apply widgets on tablesorter initialization
|
| 75 |
+
widgetClass : 'widget-{name}', // table class name template to match to include a widget
|
| 76 |
+
widgets : [], // method to add widgets, e.g. widgets: ['zebra']
|
| 77 |
+
widgetOptions : {
|
| 78 |
+
zebra : [ 'even', 'odd' ] // zebra widget alternating row class names
|
| 79 |
+
},
|
| 80 |
+
|
| 81 |
+
// *** callbacks
|
| 82 |
+
initialized : null, // function( table ) {},
|
| 83 |
+
|
| 84 |
+
// *** extra css class names
|
| 85 |
+
tableClass : '',
|
| 86 |
+
cssAsc : '',
|
| 87 |
+
cssDesc : '',
|
| 88 |
+
cssNone : '',
|
| 89 |
+
cssHeader : '',
|
| 90 |
+
cssHeaderRow : '',
|
| 91 |
+
cssProcessing : '', // processing icon applied to header during sort/filter
|
| 92 |
+
|
| 93 |
+
cssChildRow : 'tablesorter-childRow', // class name indiciating that a row is to be attached to its parent
|
| 94 |
+
cssInfoBlock : 'tablesorter-infoOnly', // don't sort tbody with this class name (only one class name allowed here!)
|
| 95 |
+
cssNoSort : 'tablesorter-noSort', // class name added to element inside header; clicking on it won't cause a sort
|
| 96 |
+
cssIgnoreRow : 'tablesorter-ignoreRow',// header row to ignore; cells within this row will not be added to c.$headers
|
| 97 |
+
|
| 98 |
+
cssIcon : 'tablesorter-icon', // if this class does not exist, the {icon} will not be added from the headerTemplate
|
| 99 |
+
cssIconNone : '', // class name added to the icon when there is no column sort
|
| 100 |
+
cssIconAsc : '', // class name added to the icon when the column has an ascending sort
|
| 101 |
+
cssIconDesc : '', // class name added to the icon when the column has a descending sort
|
| 102 |
+
cssIconDisabled : '', // class name added to the icon when the column has a disabled sort
|
| 103 |
+
|
| 104 |
+
// *** events
|
| 105 |
+
pointerClick : 'click',
|
| 106 |
+
pointerDown : 'mousedown',
|
| 107 |
+
pointerUp : 'mouseup',
|
| 108 |
+
|
| 109 |
+
// *** selectors
|
| 110 |
+
selectorHeaders : '> thead th, > thead td',
|
| 111 |
+
selectorSort : 'th, td', // jQuery selector of content within selectorHeaders that is clickable to trigger a sort
|
| 112 |
+
selectorRemove : '.remove-me',
|
| 113 |
+
|
| 114 |
+
// *** advanced
|
| 115 |
+
debug : false,
|
| 116 |
+
|
| 117 |
+
// *** Internal variables
|
| 118 |
+
headerList: [],
|
| 119 |
+
empties: {},
|
| 120 |
+
strings: {},
|
| 121 |
+
parsers: [],
|
| 122 |
+
|
| 123 |
+
// *** parser options for validator; values must be falsy!
|
| 124 |
+
globalize: 0,
|
| 125 |
+
imgAttr: 0
|
| 126 |
+
|
| 127 |
+
// removed: widgetZebra: { css: ['even', 'odd'] }
|
| 128 |
+
|
| 129 |
+
},
|
| 130 |
+
|
| 131 |
+
// internal css classes - these will ALWAYS be added to
|
| 132 |
+
// the table and MUST only contain one class name - fixes #381
|
| 133 |
+
css : {
|
| 134 |
+
table : 'tablesorter',
|
| 135 |
+
cssHasChild: 'tablesorter-hasChildRow',
|
| 136 |
+
childRow : 'tablesorter-childRow',
|
| 137 |
+
colgroup : 'tablesorter-colgroup',
|
| 138 |
+
header : 'tablesorter-header',
|
| 139 |
+
headerRow : 'tablesorter-headerRow',
|
| 140 |
+
headerIn : 'tablesorter-header-inner',
|
| 141 |
+
icon : 'tablesorter-icon',
|
| 142 |
+
processing : 'tablesorter-processing',
|
| 143 |
+
sortAsc : 'tablesorter-headerAsc',
|
| 144 |
+
sortDesc : 'tablesorter-headerDesc',
|
| 145 |
+
sortNone : 'tablesorter-headerUnSorted'
|
| 146 |
+
},
|
| 147 |
+
|
| 148 |
+
// labels applied to sortable headers for accessibility (aria) support
|
| 149 |
+
language : {
|
| 150 |
+
sortAsc : 'Ascending sort applied, ',
|
| 151 |
+
sortDesc : 'Descending sort applied, ',
|
| 152 |
+
sortNone : 'No sort applied, ',
|
| 153 |
+
sortDisabled : 'sorting is disabled',
|
| 154 |
+
nextAsc : 'activate to apply an ascending sort',
|
| 155 |
+
nextDesc : 'activate to apply a descending sort',
|
| 156 |
+
nextNone : 'activate to remove the sort'
|
| 157 |
+
},
|
| 158 |
+
|
| 159 |
+
regex : {
|
| 160 |
+
templateContent : /\{content\}/g,
|
| 161 |
+
templateIcon : /\{icon\}/g,
|
| 162 |
+
templateName : /\{name\}/i,
|
| 163 |
+
spaces : /\s+/g,
|
| 164 |
+
nonWord : /\W/g,
|
| 165 |
+
formElements : /(input|select|button|textarea)/i,
|
| 166 |
+
|
| 167 |
+
// *** sort functions ***
|
| 168 |
+
// regex used in natural sort
|
| 169 |
+
// chunk/tokenize numbers & letters
|
| 170 |
+
chunk : /(^([+\-]?(?:\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,
|
| 171 |
+
// replace chunks @ ends
|
| 172 |
+
chunks : /(^\\0|\\0$)/,
|
| 173 |
+
hex : /^0x[0-9a-f]+$/i,
|
| 174 |
+
|
| 175 |
+
// *** formatFloat ***
|
| 176 |
+
comma : /,/g,
|
| 177 |
+
digitNonUS : /[\s|\.]/g,
|
| 178 |
+
digitNegativeTest : /^\s*\([.\d]+\)/,
|
| 179 |
+
digitNegativeReplace : /^\s*\(([.\d]+)\)/,
|
| 180 |
+
|
| 181 |
+
// *** isDigit ***
|
| 182 |
+
digitTest : /^[\-+(]?\d+[)]?$/,
|
| 183 |
+
digitReplace : /[,.'"\s]/g
|
| 184 |
+
|
| 185 |
+
},
|
| 186 |
+
|
| 187 |
+
// digit sort, text location
|
| 188 |
+
string : {
|
| 189 |
+
max : 1,
|
| 190 |
+
min : -1,
|
| 191 |
+
emptymin : 1,
|
| 192 |
+
emptymax : -1,
|
| 193 |
+
zero : 0,
|
| 194 |
+
none : 0,
|
| 195 |
+
'null' : 0,
|
| 196 |
+
top : true,
|
| 197 |
+
bottom : false
|
| 198 |
+
},
|
| 199 |
+
|
| 200 |
+
keyCodes : {
|
| 201 |
+
enter : 13
|
| 202 |
+
},
|
| 203 |
+
|
| 204 |
+
// placeholder date parser data (globalize)
|
| 205 |
+
dates : {},
|
| 206 |
+
|
| 207 |
+
// These methods can be applied on table.config instance
|
| 208 |
+
instanceMethods : {},
|
| 209 |
+
|
| 210 |
+
/*
|
| 211 |
+
▄█████ ██████ ██████ ██ ██ █████▄
|
| 212 |
+
▀█▄ ██▄▄ ██ ██ ██ ██▄▄██
|
| 213 |
+
▀█▄ ██▀▀ ██ ██ ██ ██▀▀▀
|
| 214 |
+
█████▀ ██████ ██ ▀████▀ ██
|
| 215 |
+
*/
|
| 216 |
+
|
| 217 |
+
setup : function( table, c ) {
|
| 218 |
+
// if no thead or tbody, or tablesorter is already present, quit
|
| 219 |
+
if ( !table || !table.tHead || table.tBodies.length === 0 || table.hasInitialized === true ) {
|
| 220 |
+
if ( ts.debug(c, 'core') ) {
|
| 221 |
+
if ( table.hasInitialized ) {
|
| 222 |
+
console.warn( 'Stopping initialization. Tablesorter has already been initialized' );
|
| 223 |
+
} else {
|
| 224 |
+
console.error( 'Stopping initialization! No table, thead or tbody', table );
|
| 225 |
+
}
|
| 226 |
+
}
|
| 227 |
+
return;
|
| 228 |
+
}
|
| 229 |
+
|
| 230 |
+
var tmp = '',
|
| 231 |
+
$table = $( table ),
|
| 232 |
+
meta = $.metadata;
|
| 233 |
+
// initialization flag
|
| 234 |
+
table.hasInitialized = false;
|
| 235 |
+
// table is being processed flag
|
| 236 |
+
table.isProcessing = true;
|
| 237 |
+
// make sure to store the config object
|
| 238 |
+
table.config = c;
|
| 239 |
+
// save the settings where they read
|
| 240 |
+
$.data( table, 'tablesorter', c );
|
| 241 |
+
if ( ts.debug(c, 'core') ) {
|
| 242 |
+
console[ console.group ? 'group' : 'log' ]( 'Initializing tablesorter v' + ts.version );
|
| 243 |
+
$.data( table, 'startoveralltimer', new Date() );
|
| 244 |
+
}
|
| 245 |
+
|
| 246 |
+
// removing this in version 3 (only supports jQuery 1.7+)
|
| 247 |
+
c.supportsDataObject = ( function( version ) {
|
| 248 |
+
version[ 0 ] = parseInt( version[ 0 ], 10 );
|
| 249 |
+
return ( version[ 0 ] > 1 ) || ( version[ 0 ] === 1 && parseInt( version[ 1 ], 10 ) >= 4 );
|
| 250 |
+
})( $.fn.jquery.split( '.' ) );
|
| 251 |
+
// ensure case insensitivity
|
| 252 |
+
c.emptyTo = c.emptyTo.toLowerCase();
|
| 253 |
+
c.stringTo = c.stringTo.toLowerCase();
|
| 254 |
+
c.last = { sortList : [], clickedIndex : -1 };
|
| 255 |
+
// add table theme class only if there isn't already one there
|
| 256 |
+
if ( !/tablesorter\-/.test( $table.attr( 'class' ) ) ) {
|
| 257 |
+
tmp = ( c.theme !== '' ? ' tablesorter-' + c.theme : '' );
|
| 258 |
+
}
|
| 259 |
+
|
| 260 |
+
// give the table a unique id, which will be used in namespace binding
|
| 261 |
+
if ( !c.namespace ) {
|
| 262 |
+
c.namespace = '.tablesorter' + Math.random().toString( 16 ).slice( 2 );
|
| 263 |
+
} else {
|
| 264 |
+
// make sure namespace starts with a period & doesn't have weird characters
|
| 265 |
+
c.namespace = '.' + c.namespace.replace( ts.regex.nonWord, '' );
|
| 266 |
+
}
|
| 267 |
+
|
| 268 |
+
c.table = table;
|
| 269 |
+
c.$table = $table
|
| 270 |
+
// add namespace to table to allow bindings on extra elements to target
|
| 271 |
+
// the parent table (e.g. parser-input-select)
|
| 272 |
+
.addClass( ts.css.table + ' ' + c.tableClass + tmp + ' ' + c.namespace.slice(1) )
|
| 273 |
+
.attr( 'role', 'grid' );
|
| 274 |
+
c.$headers = $table.find( c.selectorHeaders );
|
| 275 |
+
|
| 276 |
+
c.$table.children().children( 'tr' ).attr( 'role', 'row' );
|
| 277 |
+
c.$tbodies = $table.children( 'tbody:not(.' + c.cssInfoBlock + ')' ).attr({
|
| 278 |
+
'aria-live' : 'polite',
|
| 279 |
+
'aria-relevant' : 'all'
|
| 280 |
+
});
|
| 281 |
+
if ( c.$table.children( 'caption' ).length ) {
|
| 282 |
+
tmp = c.$table.children( 'caption' )[ 0 ];
|
| 283 |
+
if ( !tmp.id ) { tmp.id = c.namespace.slice( 1 ) + 'caption'; }
|
| 284 |
+
c.$table.attr( 'aria-labelledby', tmp.id );
|
| 285 |
+
}
|
| 286 |
+
c.widgetInit = {}; // keep a list of initialized widgets
|
| 287 |
+
// change textExtraction via data-attribute
|
| 288 |
+
c.textExtraction = c.$table.attr( 'data-text-extraction' ) || c.textExtraction || 'basic';
|
| 289 |
+
// build headers
|
| 290 |
+
ts.buildHeaders( c );
|
| 291 |
+
// fixate columns if the users supplies the fixedWidth option
|
| 292 |
+
// do this after theme has been applied
|
| 293 |
+
ts.fixColumnWidth( table );
|
| 294 |
+
// add widgets from class name
|
| 295 |
+
ts.addWidgetFromClass( table );
|
| 296 |
+
// add widget options before parsing (e.g. grouping widget has parser settings)
|
| 297 |
+
ts.applyWidgetOptions( table );
|
| 298 |
+
// try to auto detect column type, and store in tables config
|
| 299 |
+
ts.setupParsers( c );
|
| 300 |
+
// start total row count at zero
|
| 301 |
+
c.totalRows = 0;
|
| 302 |
+
// only validate options while debugging. See #1528
|
| 303 |
+
if (c.debug) {
|
| 304 |
+
ts.validateOptions( c );
|
| 305 |
+
}
|
| 306 |
+
// build the cache for the tbody cells
|
| 307 |
+
// delayInit will delay building the cache until the user starts a sort
|
| 308 |
+
if ( !c.delayInit ) { ts.buildCache( c ); }
|
| 309 |
+
// bind all header events and methods
|
| 310 |
+
ts.bindEvents( table, c.$headers, true );
|
| 311 |
+
ts.bindMethods( c );
|
| 312 |
+
// get sort list from jQuery data or metadata
|
| 313 |
+
// in jQuery < 1.4, an error occurs when calling $table.data()
|
| 314 |
+
if ( c.supportsDataObject && typeof $table.data().sortlist !== 'undefined' ) {
|
| 315 |
+
c.sortList = $table.data().sortlist;
|
| 316 |
+
} else if ( meta && ( $table.metadata() && $table.metadata().sortlist ) ) {
|
| 317 |
+
c.sortList = $table.metadata().sortlist;
|
| 318 |
+
}
|
| 319 |
+
// apply widget init code
|
| 320 |
+
ts.applyWidget( table, true );
|
| 321 |
+
// if user has supplied a sort list to constructor
|
| 322 |
+
if ( c.sortList.length > 0 ) {
|
| 323 |
+
// save sortList before any sortAppend is added
|
| 324 |
+
c.last.sortList = c.sortList;
|
| 325 |
+
ts.sortOn( c, c.sortList, {}, !c.initWidgets );
|
| 326 |
+
} else {
|
| 327 |
+
ts.setHeadersCss( c );
|
| 328 |
+
if ( c.initWidgets ) {
|
| 329 |
+
// apply widget format
|
| 330 |
+
ts.applyWidget( table, false );
|
| 331 |
+
}
|
| 332 |
+
}
|
| 333 |
+
|
| 334 |
+
// show processesing icon
|
| 335 |
+
if ( c.showProcessing ) {
|
| 336 |
+
$table
|
| 337 |
+
.unbind( 'sortBegin' + c.namespace + ' sortEnd' + c.namespace )
|
| 338 |
+
.bind( 'sortBegin' + c.namespace + ' sortEnd' + c.namespace, function( e ) {
|
| 339 |
+
clearTimeout( c.timerProcessing );
|
| 340 |
+
ts.isProcessing( table );
|
| 341 |
+
if ( e.type === 'sortBegin' ) {
|
| 342 |
+
c.timerProcessing = setTimeout( function() {
|
| 343 |
+
ts.isProcessing( table, true );
|
| 344 |
+
}, 500 );
|
| 345 |
+
}
|
| 346 |
+
});
|
| 347 |
+
}
|
| 348 |
+
|
| 349 |
+
// initialized
|
| 350 |
+
table.hasInitialized = true;
|
| 351 |
+
table.isProcessing = false;
|
| 352 |
+
if ( ts.debug(c, 'core') ) {
|
| 353 |
+
console.log( 'Overall initialization time:' + ts.benchmark( $.data( table, 'startoveralltimer' ) ) );
|
| 354 |
+
if ( ts.debug(c, 'core') && console.groupEnd ) { console.groupEnd(); }
|
| 355 |
+
}
|
| 356 |
+
$table.triggerHandler( 'tablesorter-initialized', table );
|
| 357 |
+
if ( typeof c.initialized === 'function' ) {
|
| 358 |
+
c.initialized( table );
|
| 359 |
+
}
|
| 360 |
+
},
|
| 361 |
+
|
| 362 |
+
bindMethods : function( c ) {
|
| 363 |
+
var $table = c.$table,
|
| 364 |
+
namespace = c.namespace,
|
| 365 |
+
events = ( 'sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete ' +
|
| 366 |
+
'sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup ' +
|
| 367 |
+
'mouseleave ' ).split( ' ' )
|
| 368 |
+
.join( namespace + ' ' );
|
| 369 |
+
// apply easy methods that trigger bound events
|
| 370 |
+
$table
|
| 371 |
+
.unbind( events.replace( ts.regex.spaces, ' ' ) )
|
| 372 |
+
.bind( 'sortReset' + namespace, function( e, callback ) {
|
| 373 |
+
e.stopPropagation();
|
| 374 |
+
// using this.config to ensure functions are getting a non-cached version of the config
|
| 375 |
+
ts.sortReset( this.config, function( table ) {
|
| 376 |
+
if (table.isApplyingWidgets) {
|
| 377 |
+
// multiple triggers in a row... filterReset, then sortReset - see #1361
|
| 378 |
+
// wait to update widgets
|
| 379 |
+
setTimeout( function() {
|
| 380 |
+
ts.applyWidget( table, '', callback );
|
| 381 |
+
}, 100 );
|
| 382 |
+
} else {
|
| 383 |
+
ts.applyWidget( table, '', callback );
|
| 384 |
+
}
|
| 385 |
+
});
|
| 386 |
+
})
|
| 387 |
+
.bind( 'updateAll' + namespace, function( e, resort, callback ) {
|
| 388 |
+
e.stopPropagation();
|
| 389 |
+
ts.updateAll( this.config, resort, callback );
|
| 390 |
+
})
|
| 391 |
+
.bind( 'update' + namespace + ' updateRows' + namespace, function( e, resort, callback ) {
|
| 392 |
+
e.stopPropagation();
|
| 393 |
+
ts.update( this.config, resort, callback );
|
| 394 |
+
})
|
| 395 |
+
.bind( 'updateHeaders' + namespace, function( e, callback ) {
|
| 396 |
+
e.stopPropagation();
|
| 397 |
+
ts.updateHeaders( this.config, callback );
|
| 398 |
+
})
|
| 399 |
+
.bind( 'updateCell' + namespace, function( e, cell, resort, callback ) {
|
| 400 |
+
e.stopPropagation();
|
| 401 |
+
ts.updateCell( this.config, cell, resort, callback );
|
| 402 |
+
})
|
| 403 |
+
.bind( 'addRows' + namespace, function( e, $row, resort, callback ) {
|
| 404 |
+
e.stopPropagation();
|
| 405 |
+
ts.addRows( this.config, $row, resort, callback );
|
| 406 |
+
})
|
| 407 |
+
.bind( 'updateComplete' + namespace, function() {
|
| 408 |
+
this.isUpdating = false;
|
| 409 |
+
})
|
| 410 |
+
.bind( 'sorton' + namespace, function( e, list, callback, init ) {
|
| 411 |
+
e.stopPropagation();
|
| 412 |
+
ts.sortOn( this.config, list, callback, init );
|
| 413 |
+
})
|
| 414 |
+
.bind( 'appendCache' + namespace, function( e, callback, init ) {
|
| 415 |
+
e.stopPropagation();
|
| 416 |
+
ts.appendCache( this.config, init );
|
| 417 |
+
if ( $.isFunction( callback ) ) {
|
| 418 |
+
callback( this );
|
| 419 |
+
}
|
| 420 |
+
})
|
| 421 |
+
// $tbodies variable is used by the tbody sorting widget
|
| 422 |
+
.bind( 'updateCache' + namespace, function( e, callback, $tbodies ) {
|
| 423 |
+
e.stopPropagation();
|
| 424 |
+
ts.updateCache( this.config, callback, $tbodies );
|
| 425 |
+
})
|
| 426 |
+
.bind( 'applyWidgetId' + namespace, function( e, id ) {
|
| 427 |
+
e.stopPropagation();
|
| 428 |
+
ts.applyWidgetId( this, id );
|
| 429 |
+
})
|
| 430 |
+
.bind( 'applyWidgets' + namespace, function( e, callback ) {
|
| 431 |
+
e.stopPropagation();
|
| 432 |
+
// apply widgets (false = not initializing)
|
| 433 |
+
ts.applyWidget( this, false, callback );
|
| 434 |
+
})
|
| 435 |
+
.bind( 'refreshWidgets' + namespace, function( e, all, dontapply ) {
|
| 436 |
+
e.stopPropagation();
|
| 437 |
+
ts.refreshWidgets( this, all, dontapply );
|
| 438 |
+
})
|
| 439 |
+
.bind( 'removeWidget' + namespace, function( e, name, refreshing ) {
|
| 440 |
+
e.stopPropagation();
|
| 441 |
+
ts.removeWidget( this, name, refreshing );
|
| 442 |
+
})
|
| 443 |
+
.bind( 'destroy' + namespace, function( e, removeClasses, callback ) {
|
| 444 |
+
e.stopPropagation();
|
| 445 |
+
ts.destroy( this, removeClasses, callback );
|
| 446 |
+
})
|
| 447 |
+
.bind( 'resetToLoadState' + namespace, function( e ) {
|
| 448 |
+
e.stopPropagation();
|
| 449 |
+
// remove all widgets
|
| 450 |
+
ts.removeWidget( this, true, false );
|
| 451 |
+
var tmp = $.extend( true, {}, c.originalSettings );
|
| 452 |
+
// restore original settings; this clears out current settings, but does not clear
|
| 453 |
+
// values saved to storage.
|
| 454 |
+
c = $.extend( true, {}, ts.defaults, tmp );
|
| 455 |
+
c.originalSettings = tmp;
|
| 456 |
+
this.hasInitialized = false;
|
| 457 |
+
// setup the entire table again
|
| 458 |
+
ts.setup( this, c );
|
| 459 |
+
});
|
| 460 |
+
},
|
| 461 |
+
|
| 462 |
+
bindEvents : function( table, $headers, core ) {
|
| 463 |
+
table = $( table )[ 0 ];
|
| 464 |
+
var tmp,
|
| 465 |
+
c = table.config,
|
| 466 |
+
namespace = c.namespace,
|
| 467 |
+
downTarget = null;
|
| 468 |
+
if ( core !== true ) {
|
| 469 |
+
$headers.addClass( namespace.slice( 1 ) + '_extra_headers' );
|
| 470 |
+
tmp = ts.getClosest( $headers, 'table' );
|
| 471 |
+
if ( tmp.length && tmp[ 0 ].nodeName === 'TABLE' && tmp[ 0 ] !== table ) {
|
| 472 |
+
$( tmp[ 0 ] ).addClass( namespace.slice( 1 ) + '_extra_table' );
|
| 473 |
+
}
|
| 474 |
+
}
|
| 475 |
+
tmp = ( c.pointerDown + ' ' + c.pointerUp + ' ' + c.pointerClick + ' sort keyup ' )
|
| 476 |
+
.replace( ts.regex.spaces, ' ' )
|
| 477 |
+
.split( ' ' )
|
| 478 |
+
.join( namespace + ' ' );
|
| 479 |
+
// apply event handling to headers and/or additional headers (stickyheaders, scroller, etc)
|
| 480 |
+
$headers
|
| 481 |
+
// http://stackoverflow.com/questions/5312849/jquery-find-self;
|
| 482 |
+
.find( c.selectorSort )
|
| 483 |
+
.add( $headers.filter( c.selectorSort ) )
|
| 484 |
+
.unbind( tmp )
|
| 485 |
+
.bind( tmp, function( e, external ) {
|
| 486 |
+
var $cell, cell, temp,
|
| 487 |
+
$target = $( e.target ),
|
| 488 |
+
// wrap event type in spaces, so the match doesn't trigger on inner words
|
| 489 |
+
type = ' ' + e.type + ' ';
|
| 490 |
+
// only recognize left clicks
|
| 491 |
+
if ( ( ( e.which || e.button ) !== 1 && !type.match( ' ' + c.pointerClick + ' | sort | keyup ' ) ) ||
|
| 492 |
+
// allow pressing enter
|
| 493 |
+
( type === ' keyup ' && e.which !== ts.keyCodes.enter ) ||
|
| 494 |
+
// allow triggering a click event (e.which is undefined) & ignore physical clicks
|
| 495 |
+
( type.match( ' ' + c.pointerClick + ' ' ) && typeof e.which !== 'undefined' ) ) {
|
| 496 |
+
return;
|
| 497 |
+
}
|
| 498 |
+
// ignore mouseup if mousedown wasn't on the same target
|
| 499 |
+
if ( type.match( ' ' + c.pointerUp + ' ' ) && downTarget !== e.target && external !== true ) {
|
| 500 |
+
return;
|
| 501 |
+
}
|
| 502 |
+
// set target on mousedown
|
| 503 |
+
if ( type.match( ' ' + c.pointerDown + ' ' ) ) {
|
| 504 |
+
downTarget = e.target;
|
| 505 |
+
// preventDefault needed or jQuery v1.3.2 and older throws an
|
| 506 |
+
// "Uncaught TypeError: handler.apply is not a function" error
|
| 507 |
+
temp = $target.jquery.split( '.' );
|
| 508 |
+
if ( temp[ 0 ] === '1' && temp[ 1 ] < 4 ) { e.preventDefault(); }
|
| 509 |
+
return;
|
| 510 |
+
}
|
| 511 |
+
downTarget = null;
|
| 512 |
+
$cell = ts.getClosest( $( this ), '.' + ts.css.header );
|
| 513 |
+
// prevent sort being triggered on form elements
|
| 514 |
+
if ( ts.regex.formElements.test( e.target.nodeName ) ||
|
| 515 |
+
// nosort class name, or elements within a nosort container
|
| 516 |
+
$target.hasClass( c.cssNoSort ) || $target.parents( '.' + c.cssNoSort ).length > 0 ||
|
| 517 |
+
// disabled cell directly clicked
|
| 518 |
+
$cell.hasClass( 'sorter-false' ) ||
|
| 519 |
+
// elements within a button
|
| 520 |
+
$target.parents( 'button' ).length > 0 ) {
|
| 521 |
+
return !c.cancelSelection;
|
| 522 |
+
}
|
| 523 |
+
if ( c.delayInit && ts.isEmptyObject( c.cache ) ) {
|
| 524 |
+
ts.buildCache( c );
|
| 525 |
+
}
|
| 526 |
+
// use column index from data-attribute or index of current row; fixes #1116
|
| 527 |
+
c.last.clickedIndex = $cell.attr( 'data-column' ) || $cell.index();
|
| 528 |
+
cell = c.$headerIndexed[ c.last.clickedIndex ][0];
|
| 529 |
+
if ( cell && !cell.sortDisabled ) {
|
| 530 |
+
ts.initSort( c, cell, e );
|
| 531 |
+
}
|
| 532 |
+
});
|
| 533 |
+
if ( c.cancelSelection ) {
|
| 534 |
+
// cancel selection
|
| 535 |
+
$headers
|
| 536 |
+
.attr( 'unselectable', 'on' )
|
| 537 |
+
.bind( 'selectstart', false )
|
| 538 |
+
.css({
|
| 539 |
+
'user-select' : 'none',
|
| 540 |
+
'MozUserSelect' : 'none' // not needed for jQuery 1.8+
|
| 541 |
+
});
|
| 542 |
+
}
|
| 543 |
+
},
|
| 544 |
+
|
| 545 |
+
buildHeaders : function( c ) {
|
| 546 |
+
var $temp, icon, timer, indx;
|
| 547 |
+
c.headerList = [];
|
| 548 |
+
c.headerContent = [];
|
| 549 |
+
c.sortVars = [];
|
| 550 |
+
if ( ts.debug(c, 'core') ) {
|
| 551 |
+
timer = new Date();
|
| 552 |
+
}
|
| 553 |
+
// children tr in tfoot - see issue #196 & #547
|
| 554 |
+
// don't pass table.config to computeColumnIndex here - widgets (math) pass it to "quickly" index tbody cells
|
| 555 |
+
c.columns = ts.computeColumnIndex( c.$table.children( 'thead, tfoot' ).children( 'tr' ) );
|
| 556 |
+
// add icon if cssIcon option exists
|
| 557 |
+
icon = c.cssIcon ?
|
| 558 |
+
'<i class="' + ( c.cssIcon === ts.css.icon ? ts.css.icon : c.cssIcon + ' ' + ts.css.icon ) + '"></i>' :
|
| 559 |
+
'';
|
| 560 |
+
// redefine c.$headers here in case of an updateAll that replaces or adds an entire header cell - see #683
|
| 561 |
+
c.$headers = $( $.map( c.$table.find( c.selectorHeaders ), function( elem, index ) {
|
| 562 |
+
var configHeaders, header, column, template, tmp,
|
| 563 |
+
$elem = $( elem );
|
| 564 |
+
// ignore cell (don't add it to c.$headers) if row has ignoreRow class
|
| 565 |
+
if ( ts.getClosest( $elem, 'tr' ).hasClass( c.cssIgnoreRow ) ) { return; }
|
| 566 |
+
// transfer data-column to element if not th/td - #1459
|
| 567 |
+
if ( !/(th|td)/i.test( elem.nodeName ) ) {
|
| 568 |
+
tmp = ts.getClosest( $elem, 'th, td' );
|
| 569 |
+
$elem.attr( 'data-column', tmp.attr( 'data-column' ) );
|
| 570 |
+
}
|
| 571 |
+
// make sure to get header cell & not column indexed cell
|
| 572 |
+
configHeaders = ts.getColumnData( c.table, c.headers, index, true );
|
| 573 |
+
// save original header content
|
| 574 |
+
c.headerContent[ index ] = $elem.html();
|
| 575 |
+
// if headerTemplate is empty, don't reformat the header cell
|
| 576 |
+
if ( c.headerTemplate !== '' && !$elem.find( '.' + ts.css.headerIn ).length ) {
|
| 577 |
+
// set up header template
|
| 578 |
+
template = c.headerTemplate
|
| 579 |
+
.replace( ts.regex.templateContent, $elem.html() )
|
| 580 |
+
.replace( ts.regex.templateIcon, $elem.find( '.' + ts.css.icon ).length ? '' : icon );
|
| 581 |
+
if ( c.onRenderTemplate ) {
|
| 582 |
+
header = c.onRenderTemplate.apply( $elem, [ index, template ] );
|
| 583 |
+
// only change t if something is returned
|
| 584 |
+
if ( header && typeof header === 'string' ) {
|
| 585 |
+
template = header;
|
| 586 |
+
}
|
| 587 |
+
}
|
| 588 |
+
$elem.html( '<div class="' + ts.css.headerIn + '">' + template + '</div>' ); // faster than wrapInner
|
| 589 |
+
}
|
| 590 |
+
if ( c.onRenderHeader ) {
|
| 591 |
+
c.onRenderHeader.apply( $elem, [ index, c, c.$table ] );
|
| 592 |
+
}
|
| 593 |
+
column = parseInt( $elem.attr( 'data-column' ), 10 );
|
| 594 |
+
elem.column = column;
|
| 595 |
+
tmp = ts.getOrder( ts.getData( $elem, configHeaders, 'sortInitialOrder' ) || c.sortInitialOrder );
|
| 596 |
+
// this may get updated numerous times if there are multiple rows
|
| 597 |
+
c.sortVars[ column ] = {
|
| 598 |
+
count : -1, // set to -1 because clicking on the header automatically adds one
|
| 599 |
+
order : tmp ?
|
| 600 |
+
( c.sortReset ? [ 1, 0, 2 ] : [ 1, 0 ] ) : // desc, asc, unsorted
|
| 601 |
+
( c.sortReset ? [ 0, 1, 2 ] : [ 0, 1 ] ), // asc, desc, unsorted
|
| 602 |
+
lockedOrder : false,
|
| 603 |
+
sortedBy : ''
|
| 604 |
+
};
|
| 605 |
+
tmp = ts.getData( $elem, configHeaders, 'lockedOrder' ) || false;
|
| 606 |
+
if ( typeof tmp !== 'undefined' && tmp !== false ) {
|
| 607 |
+
c.sortVars[ column ].lockedOrder = true;
|
| 608 |
+
c.sortVars[ column ].order = ts.getOrder( tmp ) ? [ 1, 1 ] : [ 0, 0 ];
|
| 609 |
+
}
|
| 610 |
+
// add cell to headerList
|
| 611 |
+
c.headerList[ index ] = elem;
|
| 612 |
+
$elem.addClass( ts.css.header + ' ' + c.cssHeader );
|
| 613 |
+
// add to parent in case there are multiple rows
|
| 614 |
+
ts.getClosest( $elem, 'tr' )
|
| 615 |
+
.addClass( ts.css.headerRow + ' ' + c.cssHeaderRow )
|
| 616 |
+
.attr( 'role', 'row' );
|
| 617 |
+
// allow keyboard cursor to focus on element
|
| 618 |
+
if ( c.tabIndex ) {
|
| 619 |
+
$elem.attr( 'tabindex', 0 );
|
| 620 |
+
}
|
| 621 |
+
return elem;
|
| 622 |
+
}) );
|
| 623 |
+
// cache headers per column
|
| 624 |
+
c.$headerIndexed = [];
|
| 625 |
+
for ( indx = 0; indx < c.columns; indx++ ) {
|
| 626 |
+
// colspan in header making a column undefined
|
| 627 |
+
if ( ts.isEmptyObject( c.sortVars[ indx ] ) ) {
|
| 628 |
+
c.sortVars[ indx ] = {};
|
| 629 |
+
}
|
| 630 |
+
// Use c.$headers.parent() in case selectorHeaders doesn't point to the th/td
|
| 631 |
+
$temp = c.$headers.filter( '[data-column="' + indx + '"]' );
|
| 632 |
+
// target sortable column cells, unless there are none, then use non-sortable cells
|
| 633 |
+
// .last() added in jQuery 1.4; use .filter(':last') to maintain compatibility with jQuery v1.2.6
|
| 634 |
+
c.$headerIndexed[ indx ] = $temp.length ?
|
| 635 |
+
$temp.not( '.sorter-false' ).length ?
|
| 636 |
+
$temp.not( '.sorter-false' ).filter( ':last' ) :
|
| 637 |
+
$temp.filter( ':last' ) :
|
| 638 |
+
$();
|
| 639 |
+
}
|
| 640 |
+
c.$table.find( c.selectorHeaders ).attr({
|
| 641 |
+
scope: 'col',
|
| 642 |
+
role : 'columnheader'
|
| 643 |
+
});
|
| 644 |
+
// enable/disable sorting
|
| 645 |
+
ts.updateHeader( c );
|
| 646 |
+
if ( ts.debug(c, 'core') ) {
|
| 647 |
+
console.log( 'Built headers:' + ts.benchmark( timer ) );
|
| 648 |
+
console.log( c.$headers );
|
| 649 |
+
}
|
| 650 |
+
},
|
| 651 |
+
|
| 652 |
+
// Use it to add a set of methods to table.config which will be available for all tables.
|
| 653 |
+
// This should be done before table initialization
|
| 654 |
+
addInstanceMethods : function( methods ) {
|
| 655 |
+
$.extend( ts.instanceMethods, methods );
|
| 656 |
+
},
|
| 657 |
+
|
| 658 |
+
/*
|
| 659 |
+
█████▄ ▄████▄ █████▄ ▄█████ ██████ █████▄ ▄█████
|
| 660 |
+
██▄▄██ ██▄▄██ ██▄▄██ ▀█▄ ██▄▄ ██▄▄██ ▀█▄
|
| 661 |
+
██▀▀▀ ██▀▀██ ██▀██ ▀█▄ ██▀▀ ██▀██ ▀█▄
|
| 662 |
+
██ ██ ██ ██ ██ █████▀ ██████ ██ ██ █████▀
|
| 663 |
+
*/
|
| 664 |
+
setupParsers : function( c, $tbodies ) {
|
| 665 |
+
var rows, list, span, max, colIndex, indx, header, configHeaders,
|
| 666 |
+
noParser, parser, extractor, time, tbody, len,
|
| 667 |
+
table = c.table,
|
| 668 |
+
tbodyIndex = 0,
|
| 669 |
+
debug = ts.debug(c, 'core'),
|
| 670 |
+
debugOutput = {};
|
| 671 |
+
// update table bodies in case we start with an empty table
|
| 672 |
+
c.$tbodies = c.$table.children( 'tbody:not(.' + c.cssInfoBlock + ')' );
|
| 673 |
+
tbody = typeof $tbodies === 'undefined' ? c.$tbodies : $tbodies;
|
| 674 |
+
len = tbody.length;
|
| 675 |
+
if ( len === 0 ) {
|
| 676 |
+
return debug ? console.warn( 'Warning: *Empty table!* Not building a parser cache' ) : '';
|
| 677 |
+
} else if ( debug ) {
|
| 678 |
+
time = new Date();
|
| 679 |
+
console[ console.group ? 'group' : 'log' ]( 'Detecting parsers for each column' );
|
| 680 |
+
}
|
| 681 |
+
list = {
|
| 682 |
+
extractors: [],
|
| 683 |
+
parsers: []
|
| 684 |
+
};
|
| 685 |
+
while ( tbodyIndex < len ) {
|
| 686 |
+
rows = tbody[ tbodyIndex ].rows;
|
| 687 |
+
if ( rows.length ) {
|
| 688 |
+
colIndex = 0;
|
| 689 |
+
max = c.columns;
|
| 690 |
+
for ( indx = 0; indx < max; indx++ ) {
|
| 691 |
+
header = c.$headerIndexed[ colIndex ];
|
| 692 |
+
if ( header && header.length ) {
|
| 693 |
+
// get column indexed table cell; adding true parameter fixes #1362 but
|
| 694 |
+
// it would break backwards compatibility...
|
| 695 |
+
configHeaders = ts.getColumnData( table, c.headers, colIndex ); // , true );
|
| 696 |
+
// get column parser/extractor
|
| 697 |
+
extractor = ts.getParserById( ts.getData( header, configHeaders, 'extractor' ) );
|
| 698 |
+
parser = ts.getParserById( ts.getData( header, configHeaders, 'sorter' ) );
|
| 699 |
+
noParser = ts.getData( header, configHeaders, 'parser' ) === 'false';
|
| 700 |
+
// empty cells behaviour - keeping emptyToBottom for backwards compatibility
|
| 701 |
+
c.empties[colIndex] = (
|
| 702 |
+
ts.getData( header, configHeaders, 'empty' ) ||
|
| 703 |
+
c.emptyTo || ( c.emptyToBottom ? 'bottom' : 'top' ) ).toLowerCase();
|
| 704 |
+
// text strings behaviour in numerical sorts
|
| 705 |
+
c.strings[colIndex] = (
|
| 706 |
+
ts.getData( header, configHeaders, 'string' ) ||
|
| 707 |
+
c.stringTo ||
|
| 708 |
+
'max' ).toLowerCase();
|
| 709 |
+
if ( noParser ) {
|
| 710 |
+
parser = ts.getParserById( 'no-parser' );
|
| 711 |
+
}
|
| 712 |
+
if ( !extractor ) {
|
| 713 |
+
// For now, maybe detect someday
|
| 714 |
+
extractor = false;
|
| 715 |
+
}
|
| 716 |
+
if ( !parser ) {
|
| 717 |
+
parser = ts.detectParserForColumn( c, rows, -1, colIndex );
|
| 718 |
+
}
|
| 719 |
+
if ( debug ) {
|
| 720 |
+
debugOutput[ '(' + colIndex + ') ' + header.text() ] = {
|
| 721 |
+
parser : parser.id,
|
| 722 |
+
extractor : extractor ? extractor.id : 'none',
|
| 723 |
+
string : c.strings[ colIndex ],
|
| 724 |
+
empty : c.empties[ colIndex ]
|
| 725 |
+
};
|
| 726 |
+
}
|
| 727 |
+
list.parsers[ colIndex ] = parser;
|
| 728 |
+
list.extractors[ colIndex ] = extractor;
|
| 729 |
+
span = header[ 0 ].colSpan - 1;
|
| 730 |
+
if ( span > 0 ) {
|
| 731 |
+
colIndex += span;
|
| 732 |
+
max += span;
|
| 733 |
+
while ( span + 1 > 0 ) {
|
| 734 |
+
// set colspan columns to use the same parsers & extractors
|
| 735 |
+
list.parsers[ colIndex - span ] = parser;
|
| 736 |
+
list.extractors[ colIndex - span ] = extractor;
|
| 737 |
+
span--;
|
| 738 |
+
}
|
| 739 |
+
}
|
| 740 |
+
}
|
| 741 |
+
colIndex++;
|
| 742 |
+
}
|
| 743 |
+
}
|
| 744 |
+
tbodyIndex += ( list.parsers.length ) ? len : 1;
|
| 745 |
+
}
|
| 746 |
+
if ( debug ) {
|
| 747 |
+
if ( !ts.isEmptyObject( debugOutput ) ) {
|
| 748 |
+
console[ console.table ? 'table' : 'log' ]( debugOutput );
|
| 749 |
+
} else {
|
| 750 |
+
console.warn( ' No parsers detected!' );
|
| 751 |
+
}
|
| 752 |
+
console.log( 'Completed detecting parsers' + ts.benchmark( time ) );
|
| 753 |
+
if ( console.groupEnd ) { console.groupEnd(); }
|
| 754 |
+
}
|
| 755 |
+
c.parsers = list.parsers;
|
| 756 |
+
c.extractors = list.extractors;
|
| 757 |
+
},
|
| 758 |
+
|
| 759 |
+
addParser : function( parser ) {
|
| 760 |
+
var indx,
|
| 761 |
+
len = ts.parsers.length,
|
| 762 |
+
add = true;
|
| 763 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 764 |
+
if ( ts.parsers[ indx ].id.toLowerCase() === parser.id.toLowerCase() ) {
|
| 765 |
+
add = false;
|
| 766 |
+
}
|
| 767 |
+
}
|
| 768 |
+
if ( add ) {
|
| 769 |
+
ts.parsers[ ts.parsers.length ] = parser;
|
| 770 |
+
}
|
| 771 |
+
},
|
| 772 |
+
|
| 773 |
+
getParserById : function( name ) {
|
| 774 |
+
/*jshint eqeqeq:false */ // eslint-disable-next-line eqeqeq
|
| 775 |
+
if ( name == 'false' ) { return false; }
|
| 776 |
+
var indx,
|
| 777 |
+
len = ts.parsers.length;
|
| 778 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 779 |
+
if ( ts.parsers[ indx ].id.toLowerCase() === ( name.toString() ).toLowerCase() ) {
|
| 780 |
+
return ts.parsers[ indx ];
|
| 781 |
+
}
|
| 782 |
+
}
|
| 783 |
+
return false;
|
| 784 |
+
},
|
| 785 |
+
|
| 786 |
+
detectParserForColumn : function( c, rows, rowIndex, cellIndex ) {
|
| 787 |
+
var cur, $node, row,
|
| 788 |
+
indx = ts.parsers.length,
|
| 789 |
+
node = false,
|
| 790 |
+
nodeValue = '',
|
| 791 |
+
debug = ts.debug(c, 'core'),
|
| 792 |
+
keepLooking = true;
|
| 793 |
+
while ( nodeValue === '' && keepLooking ) {
|
| 794 |
+
rowIndex++;
|
| 795 |
+
row = rows[ rowIndex ];
|
| 796 |
+
// stop looking after 50 empty rows
|
| 797 |
+
if ( row && rowIndex < 50 ) {
|
| 798 |
+
if ( row.className.indexOf( ts.cssIgnoreRow ) < 0 ) {
|
| 799 |
+
node = rows[ rowIndex ].cells[ cellIndex ];
|
| 800 |
+
nodeValue = ts.getElementText( c, node, cellIndex );
|
| 801 |
+
$node = $( node );
|
| 802 |
+
if ( debug ) {
|
| 803 |
+
console.log( 'Checking if value was empty on row ' + rowIndex + ', column: ' +
|
| 804 |
+
cellIndex + ': "' + nodeValue + '"' );
|
| 805 |
+
}
|
| 806 |
+
}
|
| 807 |
+
} else {
|
| 808 |
+
keepLooking = false;
|
| 809 |
+
}
|
| 810 |
+
}
|
| 811 |
+
while ( --indx >= 0 ) {
|
| 812 |
+
cur = ts.parsers[ indx ];
|
| 813 |
+
// ignore the default text parser because it will always be true
|
| 814 |
+
if ( cur && cur.id !== 'text' && cur.is && cur.is( nodeValue, c.table, node, $node ) ) {
|
| 815 |
+
return cur;
|
| 816 |
+
}
|
| 817 |
+
}
|
| 818 |
+
// nothing found, return the generic parser (text)
|
| 819 |
+
return ts.getParserById( 'text' );
|
| 820 |
+
},
|
| 821 |
+
|
| 822 |
+
getElementText : function( c, node, cellIndex ) {
|
| 823 |
+
if ( !node ) { return ''; }
|
| 824 |
+
var tmp,
|
| 825 |
+
extract = c.textExtraction || '',
|
| 826 |
+
// node could be a jquery object
|
| 827 |
+
// http://jsperf.com/jquery-vs-instanceof-jquery/2
|
| 828 |
+
$node = node.jquery ? node : $( node );
|
| 829 |
+
if ( typeof extract === 'string' ) {
|
| 830 |
+
// check data-attribute first when set to 'basic'; don't use node.innerText - it's really slow!
|
| 831 |
+
// http://www.kellegous.com/j/2013/02/27/innertext-vs-textcontent/
|
| 832 |
+
if ( extract === 'basic' && typeof ( tmp = $node.attr( c.textAttribute ) ) !== 'undefined' ) {
|
| 833 |
+
return $.trim( tmp );
|
| 834 |
+
}
|
| 835 |
+
return $.trim( node.textContent || $node.text() );
|
| 836 |
+
} else {
|
| 837 |
+
if ( typeof extract === 'function' ) {
|
| 838 |
+
return $.trim( extract( $node[ 0 ], c.table, cellIndex ) );
|
| 839 |
+
} else if ( typeof ( tmp = ts.getColumnData( c.table, extract, cellIndex ) ) === 'function' ) {
|
| 840 |
+
return $.trim( tmp( $node[ 0 ], c.table, cellIndex ) );
|
| 841 |
+
}
|
| 842 |
+
}
|
| 843 |
+
// fallback
|
| 844 |
+
return $.trim( $node[ 0 ].textContent || $node.text() );
|
| 845 |
+
},
|
| 846 |
+
|
| 847 |
+
// centralized function to extract/parse cell contents
|
| 848 |
+
getParsedText : function( c, cell, colIndex, txt ) {
|
| 849 |
+
if ( typeof txt === 'undefined' ) {
|
| 850 |
+
txt = ts.getElementText( c, cell, colIndex );
|
| 851 |
+
}
|
| 852 |
+
// if no parser, make sure to return the txt
|
| 853 |
+
var val = '' + txt,
|
| 854 |
+
parser = c.parsers[ colIndex ],
|
| 855 |
+
extractor = c.extractors[ colIndex ];
|
| 856 |
+
if ( parser ) {
|
| 857 |
+
// do extract before parsing, if there is one
|
| 858 |
+
if ( extractor && typeof extractor.format === 'function' ) {
|
| 859 |
+
txt = extractor.format( txt, c.table, cell, colIndex );
|
| 860 |
+
}
|
| 861 |
+
// allow parsing if the string is empty, previously parsing would change it to zero,
|
| 862 |
+
// in case the parser needs to extract data from the table cell attributes
|
| 863 |
+
val = parser.id === 'no-parser' ? '' :
|
| 864 |
+
// make sure txt is a string (extractor may have converted it)
|
| 865 |
+
parser.format( '' + txt, c.table, cell, colIndex );
|
| 866 |
+
if ( c.ignoreCase && typeof val === 'string' ) {
|
| 867 |
+
val = val.toLowerCase();
|
| 868 |
+
}
|
| 869 |
+
}
|
| 870 |
+
return val;
|
| 871 |
+
},
|
| 872 |
+
|
| 873 |
+
/*
|
| 874 |
+
▄████▄ ▄████▄ ▄████▄ ██ ██ ██████
|
| 875 |
+
██ ▀▀ ██▄▄██ ██ ▀▀ ██▄▄██ ██▄▄
|
| 876 |
+
██ ▄▄ ██▀▀██ ██ ▄▄ ██▀▀██ ██▀▀
|
| 877 |
+
▀████▀ ██ ██ ▀████▀ ██ ██ ██████
|
| 878 |
+
*/
|
| 879 |
+
buildCache : function( c, callback, $tbodies ) {
|
| 880 |
+
var cache, val, txt, rowIndex, colIndex, tbodyIndex, $tbody, $row,
|
| 881 |
+
cols, $cells, cell, cacheTime, totalRows, rowData, prevRowData,
|
| 882 |
+
colMax, span, cacheIndex, hasParser, max, len, index,
|
| 883 |
+
table = c.table,
|
| 884 |
+
parsers = c.parsers,
|
| 885 |
+
debug = ts.debug(c, 'core');
|
| 886 |
+
// update tbody variable
|
| 887 |
+
c.$tbodies = c.$table.children( 'tbody:not(.' + c.cssInfoBlock + ')' );
|
| 888 |
+
$tbody = typeof $tbodies === 'undefined' ? c.$tbodies : $tbodies,
|
| 889 |
+
c.cache = {};
|
| 890 |
+
c.totalRows = 0;
|
| 891 |
+
// if no parsers found, return - it's an empty table.
|
| 892 |
+
if ( !parsers ) {
|
| 893 |
+
return debug ? console.warn( 'Warning: *Empty table!* Not building a cache' ) : '';
|
| 894 |
+
}
|
| 895 |
+
if ( debug ) {
|
| 896 |
+
cacheTime = new Date();
|
| 897 |
+
}
|
| 898 |
+
// processing icon
|
| 899 |
+
if ( c.showProcessing ) {
|
| 900 |
+
ts.isProcessing( table, true );
|
| 901 |
+
}
|
| 902 |
+
for ( tbodyIndex = 0; tbodyIndex < $tbody.length; tbodyIndex++ ) {
|
| 903 |
+
colMax = []; // column max value per tbody
|
| 904 |
+
cache = c.cache[ tbodyIndex ] = {
|
| 905 |
+
normalized: [] // array of normalized row data; last entry contains 'rowData' above
|
| 906 |
+
// colMax: # // added at the end
|
| 907 |
+
};
|
| 908 |
+
|
| 909 |
+
totalRows = ( $tbody[ tbodyIndex ] && $tbody[ tbodyIndex ].rows.length ) || 0;
|
| 910 |
+
for ( rowIndex = 0; rowIndex < totalRows; ++rowIndex ) {
|
| 911 |
+
rowData = {
|
| 912 |
+
// order: original row order #
|
| 913 |
+
// $row : jQuery Object[]
|
| 914 |
+
child: [], // child row text (filter widget)
|
| 915 |
+
raw: [] // original row text
|
| 916 |
+
};
|
| 917 |
+
/** Add the table data to main data array */
|
| 918 |
+
$row = $( $tbody[ tbodyIndex ].rows[ rowIndex ] );
|
| 919 |
+
cols = [];
|
| 920 |
+
// ignore "remove-me" rows
|
| 921 |
+
if ( $row.hasClass( c.selectorRemove.slice(1) ) ) {
|
| 922 |
+
continue;
|
| 923 |
+
}
|
| 924 |
+
// if this is a child row, add it to the last row's children and continue to the next row
|
| 925 |
+
// ignore child row class, if it is the first row
|
| 926 |
+
if ( $row.hasClass( c.cssChildRow ) && rowIndex !== 0 ) {
|
| 927 |
+
len = cache.normalized.length - 1;
|
| 928 |
+
prevRowData = cache.normalized[ len ][ c.columns ];
|
| 929 |
+
prevRowData.$row = prevRowData.$row.add( $row );
|
| 930 |
+
// add 'hasChild' class name to parent row
|
| 931 |
+
if ( !$row.prev().hasClass( c.cssChildRow ) ) {
|
| 932 |
+
$row.prev().addClass( ts.css.cssHasChild );
|
| 933 |
+
}
|
| 934 |
+
// save child row content (un-parsed!)
|
| 935 |
+
$cells = $row.children( 'th, td' );
|
| 936 |
+
len = prevRowData.child.length;
|
| 937 |
+
prevRowData.child[ len ] = [];
|
| 938 |
+
// child row content does not account for colspans/rowspans; so indexing may be off
|
| 939 |
+
cacheIndex = 0;
|
| 940 |
+
max = c.columns;
|
| 941 |
+
for ( colIndex = 0; colIndex < max; colIndex++ ) {
|
| 942 |
+
cell = $cells[ colIndex ];
|
| 943 |
+
if ( cell ) {
|
| 944 |
+
prevRowData.child[ len ][ colIndex ] = ts.getParsedText( c, cell, colIndex );
|
| 945 |
+
span = $cells[ colIndex ].colSpan - 1;
|
| 946 |
+
if ( span > 0 ) {
|
| 947 |
+
cacheIndex += span;
|
| 948 |
+
max += span;
|
| 949 |
+
}
|
| 950 |
+
}
|
| 951 |
+
cacheIndex++;
|
| 952 |
+
}
|
| 953 |
+
// go to the next for loop
|
| 954 |
+
continue;
|
| 955 |
+
}
|
| 956 |
+
rowData.$row = $row;
|
| 957 |
+
rowData.order = rowIndex; // add original row position to rowCache
|
| 958 |
+
cacheIndex = 0;
|
| 959 |
+
max = c.columns;
|
| 960 |
+
for ( colIndex = 0; colIndex < max; ++colIndex ) {
|
| 961 |
+
cell = $row[ 0 ].cells[ colIndex ];
|
| 962 |
+
if ( cell && cacheIndex < c.columns ) {
|
| 963 |
+
hasParser = typeof parsers[ cacheIndex ] !== 'undefined';
|
| 964 |
+
if ( !hasParser && debug ) {
|
| 965 |
+
console.warn( 'No parser found for row: ' + rowIndex + ', column: ' + colIndex +
|
| 966 |
+
'; cell containing: "' + $(cell).text() + '"; does it have a header?' );
|
| 967 |
+
}
|
| 968 |
+
val = ts.getElementText( c, cell, cacheIndex );
|
| 969 |
+
rowData.raw[ cacheIndex ] = val; // save original row text
|
| 970 |
+
// save raw column text even if there is no parser set
|
| 971 |
+
txt = ts.getParsedText( c, cell, cacheIndex, val );
|
| 972 |
+
cols[ cacheIndex ] = txt;
|
| 973 |
+
if ( hasParser && ( parsers[ cacheIndex ].type || '' ).toLowerCase() === 'numeric' ) {
|
| 974 |
+
// determine column max value (ignore sign)
|
| 975 |
+
colMax[ cacheIndex ] = Math.max( Math.abs( txt ) || 0, colMax[ cacheIndex ] || 0 );
|
| 976 |
+
}
|
| 977 |
+
// allow colSpan in tbody
|
| 978 |
+
span = cell.colSpan - 1;
|
| 979 |
+
if ( span > 0 ) {
|
| 980 |
+
index = 0;
|
| 981 |
+
while ( index <= span ) {
|
| 982 |
+
// duplicate text (or not) to spanned columns
|
| 983 |
+
// instead of setting duplicate span to empty string, use textExtraction to try to get a value
|
| 984 |
+
// see http://stackoverflow.com/q/36449711/145346
|
| 985 |
+
txt = c.duplicateSpan || index === 0 ?
|
| 986 |
+
txt :
|
| 987 |
+
typeof c.textExtraction !== 'string' ?
|
| 988 |
+
ts.getElementText( c, cell, cacheIndex + index ) || '' :
|
| 989 |
+
'';
|
| 990 |
+
rowData.raw[ cacheIndex + index ] = txt;
|
| 991 |
+
cols[ cacheIndex + index ] = txt;
|
| 992 |
+
index++;
|
| 993 |
+
}
|
| 994 |
+
cacheIndex += span;
|
| 995 |
+
max += span;
|
| 996 |
+
}
|
| 997 |
+
}
|
| 998 |
+
cacheIndex++;
|
| 999 |
+
}
|
| 1000 |
+
// ensure rowData is always in the same location (after the last column)
|
| 1001 |
+
cols[ c.columns ] = rowData;
|
| 1002 |
+
cache.normalized[ cache.normalized.length ] = cols;
|
| 1003 |
+
}
|
| 1004 |
+
cache.colMax = colMax;
|
| 1005 |
+
// total up rows, not including child rows
|
| 1006 |
+
c.totalRows += cache.normalized.length;
|
| 1007 |
+
|
| 1008 |
+
}
|
| 1009 |
+
if ( c.showProcessing ) {
|
| 1010 |
+
ts.isProcessing( table ); // remove processing icon
|
| 1011 |
+
}
|
| 1012 |
+
if ( debug ) {
|
| 1013 |
+
len = Math.min( 5, c.cache[ 0 ].normalized.length );
|
| 1014 |
+
console[ console.group ? 'group' : 'log' ]( 'Building cache for ' + c.totalRows +
|
| 1015 |
+
' rows (showing ' + len + ' rows in log) and ' + c.columns + ' columns' +
|
| 1016 |
+
ts.benchmark( cacheTime ) );
|
| 1017 |
+
val = {};
|
| 1018 |
+
for ( colIndex = 0; colIndex < c.columns; colIndex++ ) {
|
| 1019 |
+
for ( cacheIndex = 0; cacheIndex < len; cacheIndex++ ) {
|
| 1020 |
+
if ( !val[ 'row: ' + cacheIndex ] ) {
|
| 1021 |
+
val[ 'row: ' + cacheIndex ] = {};
|
| 1022 |
+
}
|
| 1023 |
+
val[ 'row: ' + cacheIndex ][ c.$headerIndexed[ colIndex ].text() ] =
|
| 1024 |
+
c.cache[ 0 ].normalized[ cacheIndex ][ colIndex ];
|
| 1025 |
+
}
|
| 1026 |
+
}
|
| 1027 |
+
console[ console.table ? 'table' : 'log' ]( val );
|
| 1028 |
+
if ( console.groupEnd ) { console.groupEnd(); }
|
| 1029 |
+
}
|
| 1030 |
+
if ( $.isFunction( callback ) ) {
|
| 1031 |
+
callback( table );
|
| 1032 |
+
}
|
| 1033 |
+
},
|
| 1034 |
+
|
| 1035 |
+
getColumnText : function( table, column, callback, rowFilter ) {
|
| 1036 |
+
table = $( table )[0];
|
| 1037 |
+
var tbodyIndex, rowIndex, cache, row, tbodyLen, rowLen, raw, parsed, $cell, result,
|
| 1038 |
+
hasCallback = typeof callback === 'function',
|
| 1039 |
+
allColumns = column === 'all',
|
| 1040 |
+
data = { raw : [], parsed: [], $cell: [] },
|
| 1041 |
+
c = table.config;
|
| 1042 |
+
if ( ts.isEmptyObject( c ) ) {
|
| 1043 |
+
if ( ts.debug(c, 'core') ) {
|
| 1044 |
+
console.warn( 'No cache found - aborting getColumnText function!' );
|
| 1045 |
+
}
|
| 1046 |
+
} else {
|
| 1047 |
+
tbodyLen = c.$tbodies.length;
|
| 1048 |
+
for ( tbodyIndex = 0; tbodyIndex < tbodyLen; tbodyIndex++ ) {
|
| 1049 |
+
cache = c.cache[ tbodyIndex ].normalized;
|
| 1050 |
+
rowLen = cache.length;
|
| 1051 |
+
for ( rowIndex = 0; rowIndex < rowLen; rowIndex++ ) {
|
| 1052 |
+
row = cache[ rowIndex ];
|
| 1053 |
+
if ( rowFilter && !row[ c.columns ].$row.is( rowFilter ) ) {
|
| 1054 |
+
continue;
|
| 1055 |
+
}
|
| 1056 |
+
result = true;
|
| 1057 |
+
parsed = ( allColumns ) ? row.slice( 0, c.columns ) : row[ column ];
|
| 1058 |
+
row = row[ c.columns ];
|
| 1059 |
+
raw = ( allColumns ) ? row.raw : row.raw[ column ];
|
| 1060 |
+
$cell = ( allColumns ) ? row.$row.children() : row.$row.children().eq( column );
|
| 1061 |
+
if ( hasCallback ) {
|
| 1062 |
+
result = callback({
|
| 1063 |
+
tbodyIndex : tbodyIndex,
|
| 1064 |
+
rowIndex : rowIndex,
|
| 1065 |
+
parsed : parsed,
|
| 1066 |
+
raw : raw,
|
| 1067 |
+
$row : row.$row,
|
| 1068 |
+
$cell : $cell
|
| 1069 |
+
});
|
| 1070 |
+
}
|
| 1071 |
+
if ( result !== false ) {
|
| 1072 |
+
data.parsed[ data.parsed.length ] = parsed;
|
| 1073 |
+
data.raw[ data.raw.length ] = raw;
|
| 1074 |
+
data.$cell[ data.$cell.length ] = $cell;
|
| 1075 |
+
}
|
| 1076 |
+
}
|
| 1077 |
+
}
|
| 1078 |
+
// return everything
|
| 1079 |
+
return data;
|
| 1080 |
+
}
|
| 1081 |
+
},
|
| 1082 |
+
|
| 1083 |
+
/*
|
| 1084 |
+
██ ██ █████▄ █████▄ ▄████▄ ██████ ██████
|
| 1085 |
+
██ ██ ██▄▄██ ██ ██ ██▄▄██ ██ ██▄▄
|
| 1086 |
+
██ ██ ██▀▀▀ ██ ██ ██▀▀██ ██ ██▀▀
|
| 1087 |
+
▀████▀ ██ █████▀ ██ ██ ██ ██████
|
| 1088 |
+
*/
|
| 1089 |
+
setHeadersCss : function( c ) {
|
| 1090 |
+
var indx, column,
|
| 1091 |
+
list = c.sortList,
|
| 1092 |
+
len = list.length,
|
| 1093 |
+
none = ts.css.sortNone + ' ' + c.cssNone,
|
| 1094 |
+
css = [ ts.css.sortAsc + ' ' + c.cssAsc, ts.css.sortDesc + ' ' + c.cssDesc ],
|
| 1095 |
+
cssIcon = [ c.cssIconAsc, c.cssIconDesc, c.cssIconNone ],
|
| 1096 |
+
aria = [ 'ascending', 'descending' ],
|
| 1097 |
+
updateColumnSort = function($el, index) {
|
| 1098 |
+
$el
|
| 1099 |
+
.removeClass( none )
|
| 1100 |
+
.addClass( css[ index ] )
|
| 1101 |
+
.attr( 'aria-sort', aria[ index ] )
|
| 1102 |
+
.find( '.' + ts.css.icon )
|
| 1103 |
+
.removeClass( cssIcon[ 2 ] )
|
| 1104 |
+
.addClass( cssIcon[ index ] );
|
| 1105 |
+
},
|
| 1106 |
+
// find the footer
|
| 1107 |
+
$extras = c.$table
|
| 1108 |
+
.find( 'tfoot tr' )
|
| 1109 |
+
.children( 'td, th' )
|
| 1110 |
+
.add( $( c.namespace + '_extra_headers' ) )
|
| 1111 |
+
.removeClass( css.join( ' ' ) ),
|
| 1112 |
+
// remove all header information
|
| 1113 |
+
$sorted = c.$headers
|
| 1114 |
+
.add( $( 'thead ' + c.namespace + '_extra_headers' ) )
|
| 1115 |
+
.removeClass( css.join( ' ' ) )
|
| 1116 |
+
.addClass( none )
|
| 1117 |
+
.attr( 'aria-sort', 'none' )
|
| 1118 |
+
.find( '.' + ts.css.icon )
|
| 1119 |
+
.removeClass( cssIcon.join( ' ' ) )
|
| 1120 |
+
.end();
|
| 1121 |
+
// add css none to all sortable headers
|
| 1122 |
+
$sorted
|
| 1123 |
+
.not( '.sorter-false' )
|
| 1124 |
+
.find( '.' + ts.css.icon )
|
| 1125 |
+
.addClass( cssIcon[ 2 ] );
|
| 1126 |
+
// add disabled css icon class
|
| 1127 |
+
if ( c.cssIconDisabled ) {
|
| 1128 |
+
$sorted
|
| 1129 |
+
.filter( '.sorter-false' )
|
| 1130 |
+
.find( '.' + ts.css.icon )
|
| 1131 |
+
.addClass( c.cssIconDisabled );
|
| 1132 |
+
}
|
| 1133 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 1134 |
+
// direction = 2 means reset!
|
| 1135 |
+
if ( list[ indx ][ 1 ] !== 2 ) {
|
| 1136 |
+
// multicolumn sorting updating - see #1005
|
| 1137 |
+
// .not(function() {}) needs jQuery 1.4
|
| 1138 |
+
// filter(function(i, el) {}) <- el is undefined in jQuery v1.2.6
|
| 1139 |
+
$sorted = c.$headers.filter( function( i ) {
|
| 1140 |
+
// only include headers that are in the sortList (this includes colspans)
|
| 1141 |
+
var include = true,
|
| 1142 |
+
$el = c.$headers.eq( i ),
|
| 1143 |
+
col = parseInt( $el.attr( 'data-column' ), 10 ),
|
| 1144 |
+
end = col + ts.getClosest( $el, 'th, td' )[0].colSpan;
|
| 1145 |
+
for ( ; col < end; col++ ) {
|
| 1146 |
+
include = include ? include || ts.isValueInArray( col, c.sortList ) > -1 : false;
|
| 1147 |
+
}
|
| 1148 |
+
return include;
|
| 1149 |
+
});
|
| 1150 |
+
|
| 1151 |
+
// choose the :last in case there are nested columns
|
| 1152 |
+
$sorted = $sorted
|
| 1153 |
+
.not( '.sorter-false' )
|
| 1154 |
+
.filter( '[data-column="' + list[ indx ][ 0 ] + '"]' + ( len === 1 ? ':last' : '' ) );
|
| 1155 |
+
if ( $sorted.length ) {
|
| 1156 |
+
for ( column = 0; column < $sorted.length; column++ ) {
|
| 1157 |
+
if ( !$sorted[ column ].sortDisabled ) {
|
| 1158 |
+
updateColumnSort( $sorted.eq( column ), list[ indx ][ 1 ] );
|
| 1159 |
+
}
|
| 1160 |
+
}
|
| 1161 |
+
}
|
| 1162 |
+
// add sorted class to footer & extra headers, if they exist
|
| 1163 |
+
if ( $extras.length ) {
|
| 1164 |
+
updateColumnSort( $extras.filter( '[data-column="' + list[ indx ][ 0 ] + '"]' ), list[ indx ][ 1 ] );
|
| 1165 |
+
}
|
| 1166 |
+
}
|
| 1167 |
+
}
|
| 1168 |
+
// add verbose aria labels
|
| 1169 |
+
len = c.$headers.length;
|
| 1170 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 1171 |
+
ts.setColumnAriaLabel( c, c.$headers.eq( indx ) );
|
| 1172 |
+
}
|
| 1173 |
+
},
|
| 1174 |
+
|
| 1175 |
+
getClosest : function( $el, selector ) {
|
| 1176 |
+
// jQuery v1.2.6 doesn't have closest()
|
| 1177 |
+
if ( $.fn.closest ) {
|
| 1178 |
+
return $el.closest( selector );
|
| 1179 |
+
}
|
| 1180 |
+
return $el.is( selector ) ?
|
| 1181 |
+
$el :
|
| 1182 |
+
$el.parents( selector ).filter( ':first' );
|
| 1183 |
+
},
|
| 1184 |
+
|
| 1185 |
+
// nextSort (optional), lets you disable next sort text
|
| 1186 |
+
setColumnAriaLabel : function( c, $header, nextSort ) {
|
| 1187 |
+
if ( $header.length ) {
|
| 1188 |
+
var column = parseInt( $header.attr( 'data-column' ), 10 ),
|
| 1189 |
+
vars = c.sortVars[ column ],
|
| 1190 |
+
tmp = $header.hasClass( ts.css.sortAsc ) ?
|
| 1191 |
+
'sortAsc' :
|
| 1192 |
+
$header.hasClass( ts.css.sortDesc ) ? 'sortDesc' : 'sortNone',
|
| 1193 |
+
txt = $.trim( $header.text() ) + ': ' + ts.language[ tmp ];
|
| 1194 |
+
if ( $header.hasClass( 'sorter-false' ) || nextSort === false ) {
|
| 1195 |
+
txt += ts.language.sortDisabled;
|
| 1196 |
+
} else {
|
| 1197 |
+
tmp = ( vars.count + 1 ) % vars.order.length;
|
| 1198 |
+
nextSort = vars.order[ tmp ];
|
| 1199 |
+
// if nextSort
|
| 1200 |
+
txt += ts.language[ nextSort === 0 ? 'nextAsc' : nextSort === 1 ? 'nextDesc' : 'nextNone' ];
|
| 1201 |
+
}
|
| 1202 |
+
$header.attr( 'aria-label', txt );
|
| 1203 |
+
if (vars.sortedBy) {
|
| 1204 |
+
$header.attr( 'data-sortedBy', vars.sortedBy );
|
| 1205 |
+
} else {
|
| 1206 |
+
$header.removeAttr('data-sortedBy');
|
| 1207 |
+
}
|
| 1208 |
+
}
|
| 1209 |
+
},
|
| 1210 |
+
|
| 1211 |
+
updateHeader : function( c ) {
|
| 1212 |
+
var index, isDisabled, $header, col,
|
| 1213 |
+
table = c.table,
|
| 1214 |
+
len = c.$headers.length;
|
| 1215 |
+
for ( index = 0; index < len; index++ ) {
|
| 1216 |
+
$header = c.$headers.eq( index );
|
| 1217 |
+
col = ts.getColumnData( table, c.headers, index, true );
|
| 1218 |
+
// add 'sorter-false' class if 'parser-false' is set
|
| 1219 |
+
isDisabled = ts.getData( $header, col, 'sorter' ) === 'false' || ts.getData( $header, col, 'parser' ) === 'false';
|
| 1220 |
+
ts.setColumnSort( c, $header, isDisabled );
|
| 1221 |
+
}
|
| 1222 |
+
},
|
| 1223 |
+
|
| 1224 |
+
setColumnSort : function( c, $header, isDisabled ) {
|
| 1225 |
+
var id = c.table.id;
|
| 1226 |
+
$header[ 0 ].sortDisabled = isDisabled;
|
| 1227 |
+
$header[ isDisabled ? 'addClass' : 'removeClass' ]( 'sorter-false' )
|
| 1228 |
+
.attr( 'aria-disabled', '' + isDisabled );
|
| 1229 |
+
// disable tab index on disabled cells
|
| 1230 |
+
if ( c.tabIndex ) {
|
| 1231 |
+
if ( isDisabled ) {
|
| 1232 |
+
$header.removeAttr( 'tabindex' );
|
| 1233 |
+
} else {
|
| 1234 |
+
$header.attr( 'tabindex', '0' );
|
| 1235 |
+
}
|
| 1236 |
+
}
|
| 1237 |
+
// aria-controls - requires table ID
|
| 1238 |
+
if ( id ) {
|
| 1239 |
+
if ( isDisabled ) {
|
| 1240 |
+
$header.removeAttr( 'aria-controls' );
|
| 1241 |
+
} else {
|
| 1242 |
+
$header.attr( 'aria-controls', id );
|
| 1243 |
+
}
|
| 1244 |
+
}
|
| 1245 |
+
},
|
| 1246 |
+
|
| 1247 |
+
updateHeaderSortCount : function( c, list ) {
|
| 1248 |
+
var col, dir, group, indx, primary, temp, val, order,
|
| 1249 |
+
sortList = list || c.sortList,
|
| 1250 |
+
len = sortList.length;
|
| 1251 |
+
c.sortList = [];
|
| 1252 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 1253 |
+
val = sortList[ indx ];
|
| 1254 |
+
// ensure all sortList values are numeric - fixes #127
|
| 1255 |
+
col = parseInt( val[ 0 ], 10 );
|
| 1256 |
+
// prevents error if sorton array is wrong
|
| 1257 |
+
if ( col < c.columns ) {
|
| 1258 |
+
|
| 1259 |
+
// set order if not already defined - due to colspan header without associated header cell
|
| 1260 |
+
// adding this check prevents a javascript error
|
| 1261 |
+
if ( !c.sortVars[ col ].order ) {
|
| 1262 |
+
if ( ts.getOrder( c.sortInitialOrder ) ) {
|
| 1263 |
+
order = c.sortReset ? [ 1, 0, 2 ] : [ 1, 0 ];
|
| 1264 |
+
} else {
|
| 1265 |
+
order = c.sortReset ? [ 0, 1, 2 ] : [ 0, 1 ];
|
| 1266 |
+
}
|
| 1267 |
+
c.sortVars[ col ].order = order;
|
| 1268 |
+
c.sortVars[ col ].count = 0;
|
| 1269 |
+
}
|
| 1270 |
+
|
| 1271 |
+
order = c.sortVars[ col ].order;
|
| 1272 |
+
dir = ( '' + val[ 1 ] ).match( /^(1|d|s|o|n)/ );
|
| 1273 |
+
dir = dir ? dir[ 0 ] : '';
|
| 1274 |
+
// 0/(a)sc (default), 1/(d)esc, (s)ame, (o)pposite, (n)ext
|
| 1275 |
+
switch ( dir ) {
|
| 1276 |
+
case '1' : case 'd' : // descending
|
| 1277 |
+
dir = 1;
|
| 1278 |
+
break;
|
| 1279 |
+
case 's' : // same direction (as primary column)
|
| 1280 |
+
// if primary sort is set to 's', make it ascending
|
| 1281 |
+
dir = primary || 0;
|
| 1282 |
+
break;
|
| 1283 |
+
case 'o' :
|
| 1284 |
+
temp = order[ ( primary || 0 ) % order.length ];
|
| 1285 |
+
// opposite of primary column; but resets if primary resets
|
| 1286 |
+
dir = temp === 0 ? 1 : temp === 1 ? 0 : 2;
|
| 1287 |
+
break;
|
| 1288 |
+
case 'n' :
|
| 1289 |
+
dir = order[ ( ++c.sortVars[ col ].count ) % order.length ];
|
| 1290 |
+
break;
|
| 1291 |
+
default : // ascending
|
| 1292 |
+
dir = 0;
|
| 1293 |
+
break;
|
| 1294 |
+
}
|
| 1295 |
+
primary = indx === 0 ? dir : primary;
|
| 1296 |
+
group = [ col, parseInt( dir, 10 ) || 0 ];
|
| 1297 |
+
c.sortList[ c.sortList.length ] = group;
|
| 1298 |
+
dir = $.inArray( group[ 1 ], order ); // fixes issue #167
|
| 1299 |
+
c.sortVars[ col ].count = dir >= 0 ? dir : group[ 1 ] % order.length;
|
| 1300 |
+
}
|
| 1301 |
+
}
|
| 1302 |
+
},
|
| 1303 |
+
|
| 1304 |
+
updateAll : function( c, resort, callback ) {
|
| 1305 |
+
var table = c.table;
|
| 1306 |
+
table.isUpdating = true;
|
| 1307 |
+
ts.refreshWidgets( table, true, true );
|
| 1308 |
+
ts.buildHeaders( c );
|
| 1309 |
+
ts.bindEvents( table, c.$headers, true );
|
| 1310 |
+
ts.bindMethods( c );
|
| 1311 |
+
ts.commonUpdate( c, resort, callback );
|
| 1312 |
+
},
|
| 1313 |
+
|
| 1314 |
+
update : function( c, resort, callback ) {
|
| 1315 |
+
var table = c.table;
|
| 1316 |
+
table.isUpdating = true;
|
| 1317 |
+
// update sorting (if enabled/disabled)
|
| 1318 |
+
ts.updateHeader( c );
|
| 1319 |
+
ts.commonUpdate( c, resort, callback );
|
| 1320 |
+
},
|
| 1321 |
+
|
| 1322 |
+
// simple header update - see #989
|
| 1323 |
+
updateHeaders : function( c, callback ) {
|
| 1324 |
+
c.table.isUpdating = true;
|
| 1325 |
+
ts.buildHeaders( c );
|
| 1326 |
+
ts.bindEvents( c.table, c.$headers, true );
|
| 1327 |
+
ts.resortComplete( c, callback );
|
| 1328 |
+
},
|
| 1329 |
+
|
| 1330 |
+
updateCell : function( c, cell, resort, callback ) {
|
| 1331 |
+
// updateCell for child rows is a mess - we'll ignore them for now
|
| 1332 |
+
// eventually I'll break out the "update" row cache code to make everything consistent
|
| 1333 |
+
if ( $( cell ).closest( 'tr' ).hasClass( c.cssChildRow ) ) {
|
| 1334 |
+
console.warn('Tablesorter Warning! "updateCell" for child row content has been disabled, use "update" instead');
|
| 1335 |
+
return;
|
| 1336 |
+
}
|
| 1337 |
+
if ( ts.isEmptyObject( c.cache ) ) {
|
| 1338 |
+
// empty table, do an update instead - fixes #1099
|
| 1339 |
+
ts.updateHeader( c );
|
| 1340 |
+
ts.commonUpdate( c, resort, callback );
|
| 1341 |
+
return;
|
| 1342 |
+
}
|
| 1343 |
+
c.table.isUpdating = true;
|
| 1344 |
+
c.$table.find( c.selectorRemove ).remove();
|
| 1345 |
+
// get position from the dom
|
| 1346 |
+
var tmp, indx, row, icell, cache, len,
|
| 1347 |
+
$tbodies = c.$tbodies,
|
| 1348 |
+
$cell = $( cell ),
|
| 1349 |
+
// update cache - format: function( s, table, cell, cellIndex )
|
| 1350 |
+
// no closest in jQuery v1.2.6
|
| 1351 |
+
tbodyIndex = $tbodies.index( ts.getClosest( $cell, 'tbody' ) ),
|
| 1352 |
+
tbcache = c.cache[ tbodyIndex ],
|
| 1353 |
+
$row = ts.getClosest( $cell, 'tr' );
|
| 1354 |
+
cell = $cell[ 0 ]; // in case cell is a jQuery object
|
| 1355 |
+
// tbody may not exist if update is initialized while tbody is removed for processing
|
| 1356 |
+
if ( $tbodies.length && tbodyIndex >= 0 ) {
|
| 1357 |
+
row = $tbodies.eq( tbodyIndex ).find( 'tr' ).not( '.' + c.cssChildRow ).index( $row );
|
| 1358 |
+
cache = tbcache.normalized[ row ];
|
| 1359 |
+
len = $row[ 0 ].cells.length;
|
| 1360 |
+
if ( len !== c.columns ) {
|
| 1361 |
+
// colspan in here somewhere!
|
| 1362 |
+
icell = 0;
|
| 1363 |
+
tmp = false;
|
| 1364 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 1365 |
+
if ( !tmp && $row[ 0 ].cells[ indx ] !== cell ) {
|
| 1366 |
+
icell += $row[ 0 ].cells[ indx ].colSpan;
|
| 1367 |
+
} else {
|
| 1368 |
+
tmp = true;
|
| 1369 |
+
}
|
| 1370 |
+
}
|
| 1371 |
+
} else {
|
| 1372 |
+
icell = $cell.index();
|
| 1373 |
+
}
|
| 1374 |
+
tmp = ts.getElementText( c, cell, icell ); // raw
|
| 1375 |
+
cache[ c.columns ].raw[ icell ] = tmp;
|
| 1376 |
+
tmp = ts.getParsedText( c, cell, icell, tmp );
|
| 1377 |
+
cache[ icell ] = tmp; // parsed
|
| 1378 |
+
if ( ( c.parsers[ icell ].type || '' ).toLowerCase() === 'numeric' ) {
|
| 1379 |
+
// update column max value (ignore sign)
|
| 1380 |
+
tbcache.colMax[ icell ] = Math.max( Math.abs( tmp ) || 0, tbcache.colMax[ icell ] || 0 );
|
| 1381 |
+
}
|
| 1382 |
+
tmp = resort !== 'undefined' ? resort : c.resort;
|
| 1383 |
+
if ( tmp !== false ) {
|
| 1384 |
+
// widgets will be reapplied
|
| 1385 |
+
ts.checkResort( c, tmp, callback );
|
| 1386 |
+
} else {
|
| 1387 |
+
// don't reapply widgets is resort is false, just in case it causes
|
| 1388 |
+
// problems with element focus
|
| 1389 |
+
ts.resortComplete( c, callback );
|
| 1390 |
+
}
|
| 1391 |
+
} else {
|
| 1392 |
+
if ( ts.debug(c, 'core') ) {
|
| 1393 |
+
console.error( 'updateCell aborted, tbody missing or not within the indicated table' );
|
| 1394 |
+
}
|
| 1395 |
+
c.table.isUpdating = false;
|
| 1396 |
+
}
|
| 1397 |
+
},
|
| 1398 |
+
|
| 1399 |
+
addRows : function( c, $row, resort, callback ) {
|
| 1400 |
+
var txt, val, tbodyIndex, rowIndex, rows, cellIndex, len, order,
|
| 1401 |
+
cacheIndex, rowData, cells, cell, span,
|
| 1402 |
+
// allow passing a row string if only one non-info tbody exists in the table
|
| 1403 |
+
valid = typeof $row === 'string' && c.$tbodies.length === 1 && /<tr/.test( $row || '' ),
|
| 1404 |
+
table = c.table;
|
| 1405 |
+
if ( valid ) {
|
| 1406 |
+
$row = $( $row );
|
| 1407 |
+
c.$tbodies.append( $row );
|
| 1408 |
+
} else if (
|
| 1409 |
+
!$row ||
|
| 1410 |
+
// row is a jQuery object?
|
| 1411 |
+
!( $row instanceof $ ) ||
|
| 1412 |
+
// row contained in the table?
|
| 1413 |
+
( ts.getClosest( $row, 'table' )[ 0 ] !== c.table )
|
| 1414 |
+
) {
|
| 1415 |
+
if ( ts.debug(c, 'core') ) {
|
| 1416 |
+
console.error( 'addRows method requires (1) a jQuery selector reference to rows that have already ' +
|
| 1417 |
+
'been added to the table, or (2) row HTML string to be added to a table with only one tbody' );
|
| 1418 |
+
}
|
| 1419 |
+
return false;
|
| 1420 |
+
}
|
| 1421 |
+
table.isUpdating = true;
|
| 1422 |
+
if ( ts.isEmptyObject( c.cache ) ) {
|
| 1423 |
+
// empty table, do an update instead - fixes #450
|
| 1424 |
+
ts.updateHeader( c );
|
| 1425 |
+
ts.commonUpdate( c, resort, callback );
|
| 1426 |
+
} else {
|
| 1427 |
+
rows = $row.filter( 'tr' ).attr( 'role', 'row' ).length;
|
| 1428 |
+
tbodyIndex = c.$tbodies.index( $row.parents( 'tbody' ).filter( ':first' ) );
|
| 1429 |
+
// fixes adding rows to an empty table - see issue #179
|
| 1430 |
+
if ( !( c.parsers && c.parsers.length ) ) {
|
| 1431 |
+
ts.setupParsers( c );
|
| 1432 |
+
}
|
| 1433 |
+
// add each row
|
| 1434 |
+
for ( rowIndex = 0; rowIndex < rows; rowIndex++ ) {
|
| 1435 |
+
cacheIndex = 0;
|
| 1436 |
+
len = $row[ rowIndex ].cells.length;
|
| 1437 |
+
order = c.cache[ tbodyIndex ].normalized.length;
|
| 1438 |
+
cells = [];
|
| 1439 |
+
rowData = {
|
| 1440 |
+
child : [],
|
| 1441 |
+
raw : [],
|
| 1442 |
+
$row : $row.eq( rowIndex ),
|
| 1443 |
+
order : order
|
| 1444 |
+
};
|
| 1445 |
+
// add each cell
|
| 1446 |
+
for ( cellIndex = 0; cellIndex < len; cellIndex++ ) {
|
| 1447 |
+
cell = $row[ rowIndex ].cells[ cellIndex ];
|
| 1448 |
+
txt = ts.getElementText( c, cell, cacheIndex );
|
| 1449 |
+
rowData.raw[ cacheIndex ] = txt;
|
| 1450 |
+
val = ts.getParsedText( c, cell, cacheIndex, txt );
|
| 1451 |
+
cells[ cacheIndex ] = val;
|
| 1452 |
+
if ( ( c.parsers[ cacheIndex ].type || '' ).toLowerCase() === 'numeric' ) {
|
| 1453 |
+
// update column max value (ignore sign)
|
| 1454 |
+
c.cache[ tbodyIndex ].colMax[ cacheIndex ] =
|
| 1455 |
+
Math.max( Math.abs( val ) || 0, c.cache[ tbodyIndex ].colMax[ cacheIndex ] || 0 );
|
| 1456 |
+
}
|
| 1457 |
+
span = cell.colSpan - 1;
|
| 1458 |
+
if ( span > 0 ) {
|
| 1459 |
+
cacheIndex += span;
|
| 1460 |
+
}
|
| 1461 |
+
cacheIndex++;
|
| 1462 |
+
}
|
| 1463 |
+
// add the row data to the end
|
| 1464 |
+
cells[ c.columns ] = rowData;
|
| 1465 |
+
// update cache
|
| 1466 |
+
c.cache[ tbodyIndex ].normalized[ order ] = cells;
|
| 1467 |
+
}
|
| 1468 |
+
// resort using current settings
|
| 1469 |
+
ts.checkResort( c, resort, callback );
|
| 1470 |
+
}
|
| 1471 |
+
},
|
| 1472 |
+
|
| 1473 |
+
updateCache : function( c, callback, $tbodies ) {
|
| 1474 |
+
// rebuild parsers
|
| 1475 |
+
if ( !( c.parsers && c.parsers.length ) ) {
|
| 1476 |
+
ts.setupParsers( c, $tbodies );
|
| 1477 |
+
}
|
| 1478 |
+
// rebuild the cache map
|
| 1479 |
+
ts.buildCache( c, callback, $tbodies );
|
| 1480 |
+
},
|
| 1481 |
+
|
| 1482 |
+
// init flag (true) used by pager plugin to prevent widget application
|
| 1483 |
+
// renamed from appendToTable
|
| 1484 |
+
appendCache : function( c, init ) {
|
| 1485 |
+
var parsed, totalRows, $tbody, $curTbody, rowIndex, tbodyIndex, appendTime,
|
| 1486 |
+
table = c.table,
|
| 1487 |
+
$tbodies = c.$tbodies,
|
| 1488 |
+
rows = [],
|
| 1489 |
+
cache = c.cache;
|
| 1490 |
+
// empty table - fixes #206/#346
|
| 1491 |
+
if ( ts.isEmptyObject( cache ) ) {
|
| 1492 |
+
// run pager appender in case the table was just emptied
|
| 1493 |
+
return c.appender ? c.appender( table, rows ) :
|
| 1494 |
+
table.isUpdating ? c.$table.triggerHandler( 'updateComplete', table ) : ''; // Fixes #532
|
| 1495 |
+
}
|
| 1496 |
+
if ( ts.debug(c, 'core') ) {
|
| 1497 |
+
appendTime = new Date();
|
| 1498 |
+
}
|
| 1499 |
+
for ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
|
| 1500 |
+
$tbody = $tbodies.eq( tbodyIndex );
|
| 1501 |
+
if ( $tbody.length ) {
|
| 1502 |
+
// detach tbody for manipulation
|
| 1503 |
+
$curTbody = ts.processTbody( table, $tbody, true );
|
| 1504 |
+
parsed = cache[ tbodyIndex ].normalized;
|
| 1505 |
+
totalRows = parsed.length;
|
| 1506 |
+
for ( rowIndex = 0; rowIndex < totalRows; rowIndex++ ) {
|
| 1507 |
+
rows[rows.length] = parsed[ rowIndex ][ c.columns ].$row;
|
| 1508 |
+
// removeRows used by the pager plugin; don't render if using ajax - fixes #411
|
| 1509 |
+
if ( !c.appender || ( c.pager && !c.pager.removeRows && !c.pager.ajax ) ) {
|
| 1510 |
+
$curTbody.append( parsed[ rowIndex ][ c.columns ].$row );
|
| 1511 |
+
}
|
| 1512 |
+
}
|
| 1513 |
+
// restore tbody
|
| 1514 |
+
ts.processTbody( table, $curTbody, false );
|
| 1515 |
+
}
|
| 1516 |
+
}
|
| 1517 |
+
if ( c.appender ) {
|
| 1518 |
+
c.appender( table, rows );
|
| 1519 |
+
}
|
| 1520 |
+
if ( ts.debug(c, 'core') ) {
|
| 1521 |
+
console.log( 'Rebuilt table' + ts.benchmark( appendTime ) );
|
| 1522 |
+
}
|
| 1523 |
+
// apply table widgets; but not before ajax completes
|
| 1524 |
+
if ( !init && !c.appender ) {
|
| 1525 |
+
ts.applyWidget( table );
|
| 1526 |
+
}
|
| 1527 |
+
if ( table.isUpdating ) {
|
| 1528 |
+
c.$table.triggerHandler( 'updateComplete', table );
|
| 1529 |
+
}
|
| 1530 |
+
},
|
| 1531 |
+
|
| 1532 |
+
commonUpdate : function( c, resort, callback ) {
|
| 1533 |
+
// remove rows/elements before update
|
| 1534 |
+
c.$table.find( c.selectorRemove ).remove();
|
| 1535 |
+
// rebuild parsers
|
| 1536 |
+
ts.setupParsers( c );
|
| 1537 |
+
// rebuild the cache map
|
| 1538 |
+
ts.buildCache( c );
|
| 1539 |
+
ts.checkResort( c, resort, callback );
|
| 1540 |
+
},
|
| 1541 |
+
|
| 1542 |
+
/*
|
| 1543 |
+
▄█████ ▄████▄ █████▄ ██████ ██ █████▄ ▄████▄
|
| 1544 |
+
▀█▄ ██ ██ ██▄▄██ ██ ██ ██ ██ ██ ▄▄▄
|
| 1545 |
+
▀█▄ ██ ██ ██▀██ ██ ██ ██ ██ ██ ▀██
|
| 1546 |
+
█████▀ ▀████▀ ██ ██ ██ ██ ██ ██ ▀████▀
|
| 1547 |
+
*/
|
| 1548 |
+
initSort : function( c, cell, event ) {
|
| 1549 |
+
if ( c.table.isUpdating ) {
|
| 1550 |
+
// let any updates complete before initializing a sort
|
| 1551 |
+
return setTimeout( function() {
|
| 1552 |
+
ts.initSort( c, cell, event );
|
| 1553 |
+
}, 50 );
|
| 1554 |
+
}
|
| 1555 |
+
|
| 1556 |
+
var arry, indx, headerIndx, dir, temp, tmp, $header,
|
| 1557 |
+
notMultiSort = !event[ c.sortMultiSortKey ],
|
| 1558 |
+
table = c.table,
|
| 1559 |
+
len = c.$headers.length,
|
| 1560 |
+
th = ts.getClosest( $( cell ), 'th, td' ),
|
| 1561 |
+
col = parseInt( th.attr( 'data-column' ), 10 ),
|
| 1562 |
+
sortedBy = event.type === 'mouseup' ? 'user' : event.type,
|
| 1563 |
+
order = c.sortVars[ col ].order;
|
| 1564 |
+
th = th[0];
|
| 1565 |
+
// Only call sortStart if sorting is enabled
|
| 1566 |
+
c.$table.triggerHandler( 'sortStart', table );
|
| 1567 |
+
// get current column sort order
|
| 1568 |
+
tmp = ( c.sortVars[ col ].count + 1 ) % order.length;
|
| 1569 |
+
c.sortVars[ col ].count = event[ c.sortResetKey ] ? 2 : tmp;
|
| 1570 |
+
// reset all sorts on non-current column - issue #30
|
| 1571 |
+
if ( c.sortRestart ) {
|
| 1572 |
+
for ( headerIndx = 0; headerIndx < len; headerIndx++ ) {
|
| 1573 |
+
$header = c.$headers.eq( headerIndx );
|
| 1574 |
+
tmp = parseInt( $header.attr( 'data-column' ), 10 );
|
| 1575 |
+
// only reset counts on columns that weren't just clicked on and if not included in a multisort
|
| 1576 |
+
if ( col !== tmp && ( notMultiSort || $header.hasClass( ts.css.sortNone ) ) ) {
|
| 1577 |
+
c.sortVars[ tmp ].count = -1;
|
| 1578 |
+
}
|
| 1579 |
+
}
|
| 1580 |
+
}
|
| 1581 |
+
// user only wants to sort on one column
|
| 1582 |
+
if ( notMultiSort ) {
|
| 1583 |
+
$.each( c.sortVars, function( i ) {
|
| 1584 |
+
c.sortVars[ i ].sortedBy = '';
|
| 1585 |
+
});
|
| 1586 |
+
// flush the sort list
|
| 1587 |
+
c.sortList = [];
|
| 1588 |
+
c.last.sortList = [];
|
| 1589 |
+
if ( c.sortForce !== null ) {
|
| 1590 |
+
arry = c.sortForce;
|
| 1591 |
+
for ( indx = 0; indx < arry.length; indx++ ) {
|
| 1592 |
+
if ( arry[ indx ][ 0 ] !== col ) {
|
| 1593 |
+
c.sortList[ c.sortList.length ] = arry[ indx ];
|
| 1594 |
+
c.sortVars[ arry[ indx ][ 0 ] ].sortedBy = 'sortForce';
|
| 1595 |
+
}
|
| 1596 |
+
}
|
| 1597 |
+
}
|
| 1598 |
+
// add column to sort list
|
| 1599 |
+
dir = order[ c.sortVars[ col ].count ];
|
| 1600 |
+
if ( dir < 2 ) {
|
| 1601 |
+
c.sortList[ c.sortList.length ] = [ col, dir ];
|
| 1602 |
+
c.sortVars[ col ].sortedBy = sortedBy;
|
| 1603 |
+
// add other columns if header spans across multiple
|
| 1604 |
+
if ( th.colSpan > 1 ) {
|
| 1605 |
+
for ( indx = 1; indx < th.colSpan; indx++ ) {
|
| 1606 |
+
c.sortList[ c.sortList.length ] = [ col + indx, dir ];
|
| 1607 |
+
// update count on columns in colSpan
|
| 1608 |
+
c.sortVars[ col + indx ].count = $.inArray( dir, order );
|
| 1609 |
+
c.sortVars[ col + indx ].sortedBy = sortedBy;
|
| 1610 |
+
}
|
| 1611 |
+
}
|
| 1612 |
+
}
|
| 1613 |
+
// multi column sorting
|
| 1614 |
+
} else {
|
| 1615 |
+
// get rid of the sortAppend before adding more - fixes issue #115 & #523
|
| 1616 |
+
c.sortList = $.extend( [], c.last.sortList );
|
| 1617 |
+
|
| 1618 |
+
// the user has clicked on an already sorted column
|
| 1619 |
+
if ( ts.isValueInArray( col, c.sortList ) >= 0 ) {
|
| 1620 |
+
// reverse the sorting direction
|
| 1621 |
+
c.sortVars[ col ].sortedBy = sortedBy;
|
| 1622 |
+
for ( indx = 0; indx < c.sortList.length; indx++ ) {
|
| 1623 |
+
tmp = c.sortList[ indx ];
|
| 1624 |
+
if ( tmp[ 0 ] === col ) {
|
| 1625 |
+
// order.count seems to be incorrect when compared to cell.count
|
| 1626 |
+
tmp[ 1 ] = order[ c.sortVars[ col ].count ];
|
| 1627 |
+
if ( tmp[1] === 2 ) {
|
| 1628 |
+
c.sortList.splice( indx, 1 );
|
| 1629 |
+
c.sortVars[ col ].count = -1;
|
| 1630 |
+
}
|
| 1631 |
+
}
|
| 1632 |
+
}
|
| 1633 |
+
} else {
|
| 1634 |
+
// add column to sort list array
|
| 1635 |
+
dir = order[ c.sortVars[ col ].count ];
|
| 1636 |
+
c.sortVars[ col ].sortedBy = sortedBy;
|
| 1637 |
+
if ( dir < 2 ) {
|
| 1638 |
+
c.sortList[ c.sortList.length ] = [ col, dir ];
|
| 1639 |
+
// add other columns if header spans across multiple
|
| 1640 |
+
if ( th.colSpan > 1 ) {
|
| 1641 |
+
for ( indx = 1; indx < th.colSpan; indx++ ) {
|
| 1642 |
+
c.sortList[ c.sortList.length ] = [ col + indx, dir ];
|
| 1643 |
+
// update count on columns in colSpan
|
| 1644 |
+
c.sortVars[ col + indx ].count = $.inArray( dir, order );
|
| 1645 |
+
c.sortVars[ col + indx ].sortedBy = sortedBy;
|
| 1646 |
+
}
|
| 1647 |
+
}
|
| 1648 |
+
}
|
| 1649 |
+
}
|
| 1650 |
+
}
|
| 1651 |
+
// save sort before applying sortAppend
|
| 1652 |
+
c.last.sortList = $.extend( [], c.sortList );
|
| 1653 |
+
if ( c.sortList.length && c.sortAppend ) {
|
| 1654 |
+
arry = $.isArray( c.sortAppend ) ? c.sortAppend : c.sortAppend[ c.sortList[ 0 ][ 0 ] ];
|
| 1655 |
+
if ( !ts.isEmptyObject( arry ) ) {
|
| 1656 |
+
for ( indx = 0; indx < arry.length; indx++ ) {
|
| 1657 |
+
if ( arry[ indx ][ 0 ] !== col && ts.isValueInArray( arry[ indx ][ 0 ], c.sortList ) < 0 ) {
|
| 1658 |
+
dir = arry[ indx ][ 1 ];
|
| 1659 |
+
temp = ( '' + dir ).match( /^(a|d|s|o|n)/ );
|
| 1660 |
+
if ( temp ) {
|
| 1661 |
+
tmp = c.sortList[ 0 ][ 1 ];
|
| 1662 |
+
switch ( temp[ 0 ] ) {
|
| 1663 |
+
case 'd' :
|
| 1664 |
+
dir = 1;
|
| 1665 |
+
break;
|
| 1666 |
+
case 's' :
|
| 1667 |
+
dir = tmp;
|
| 1668 |
+
break;
|
| 1669 |
+
case 'o' :
|
| 1670 |
+
dir = tmp === 0 ? 1 : 0;
|
| 1671 |
+
break;
|
| 1672 |
+
case 'n' :
|
| 1673 |
+
dir = ( tmp + 1 ) % order.length;
|
| 1674 |
+
break;
|
| 1675 |
+
default:
|
| 1676 |
+
dir = 0;
|
| 1677 |
+
break;
|
| 1678 |
+
}
|
| 1679 |
+
}
|
| 1680 |
+
c.sortList[ c.sortList.length ] = [ arry[ indx ][ 0 ], dir ];
|
| 1681 |
+
c.sortVars[ arry[ indx ][ 0 ] ].sortedBy = 'sortAppend';
|
| 1682 |
+
}
|
| 1683 |
+
}
|
| 1684 |
+
}
|
| 1685 |
+
}
|
| 1686 |
+
// sortBegin event triggered immediately before the sort
|
| 1687 |
+
c.$table.triggerHandler( 'sortBegin', table );
|
| 1688 |
+
// setTimeout needed so the processing icon shows up
|
| 1689 |
+
setTimeout( function() {
|
| 1690 |
+
// set css for headers
|
| 1691 |
+
ts.setHeadersCss( c );
|
| 1692 |
+
ts.multisort( c );
|
| 1693 |
+
ts.appendCache( c );
|
| 1694 |
+
c.$table.triggerHandler( 'sortBeforeEnd', table );
|
| 1695 |
+
c.$table.triggerHandler( 'sortEnd', table );
|
| 1696 |
+
}, 1 );
|
| 1697 |
+
},
|
| 1698 |
+
|
| 1699 |
+
// sort multiple columns
|
| 1700 |
+
multisort : function( c ) { /*jshint loopfunc:true */
|
| 1701 |
+
var tbodyIndex, sortTime, colMax, rows, tmp,
|
| 1702 |
+
table = c.table,
|
| 1703 |
+
sorter = [],
|
| 1704 |
+
dir = 0,
|
| 1705 |
+
textSorter = c.textSorter || '',
|
| 1706 |
+
sortList = c.sortList,
|
| 1707 |
+
sortLen = sortList.length,
|
| 1708 |
+
len = c.$tbodies.length;
|
| 1709 |
+
if ( c.serverSideSorting || ts.isEmptyObject( c.cache ) ) {
|
| 1710 |
+
// empty table - fixes #206/#346
|
| 1711 |
+
return;
|
| 1712 |
+
}
|
| 1713 |
+
if ( ts.debug(c, 'core') ) { sortTime = new Date(); }
|
| 1714 |
+
// cache textSorter to optimize speed
|
| 1715 |
+
if ( typeof textSorter === 'object' ) {
|
| 1716 |
+
colMax = c.columns;
|
| 1717 |
+
while ( colMax-- ) {
|
| 1718 |
+
tmp = ts.getColumnData( table, textSorter, colMax );
|
| 1719 |
+
if ( typeof tmp === 'function' ) {
|
| 1720 |
+
sorter[ colMax ] = tmp;
|
| 1721 |
+
}
|
| 1722 |
+
}
|
| 1723 |
+
}
|
| 1724 |
+
for ( tbodyIndex = 0; tbodyIndex < len; tbodyIndex++ ) {
|
| 1725 |
+
colMax = c.cache[ tbodyIndex ].colMax;
|
| 1726 |
+
rows = c.cache[ tbodyIndex ].normalized;
|
| 1727 |
+
|
| 1728 |
+
rows.sort( function( a, b ) {
|
| 1729 |
+
var sortIndex, num, col, order, sort, x, y;
|
| 1730 |
+
// rows is undefined here in IE, so don't use it!
|
| 1731 |
+
for ( sortIndex = 0; sortIndex < sortLen; sortIndex++ ) {
|
| 1732 |
+
col = sortList[ sortIndex ][ 0 ];
|
| 1733 |
+
order = sortList[ sortIndex ][ 1 ];
|
| 1734 |
+
// sort direction, true = asc, false = desc
|
| 1735 |
+
dir = order === 0;
|
| 1736 |
+
|
| 1737 |
+
if ( c.sortStable && a[ col ] === b[ col ] && sortLen === 1 ) {
|
| 1738 |
+
return a[ c.columns ].order - b[ c.columns ].order;
|
| 1739 |
+
}
|
| 1740 |
+
|
| 1741 |
+
// fallback to natural sort since it is more robust
|
| 1742 |
+
num = /n/i.test( ts.getSortType( c.parsers, col ) );
|
| 1743 |
+
if ( num && c.strings[ col ] ) {
|
| 1744 |
+
// sort strings in numerical columns
|
| 1745 |
+
if ( typeof ( ts.string[ c.strings[ col ] ] ) === 'boolean' ) {
|
| 1746 |
+
num = ( dir ? 1 : -1 ) * ( ts.string[ c.strings[ col ] ] ? -1 : 1 );
|
| 1747 |
+
} else {
|
| 1748 |
+
num = ( c.strings[ col ] ) ? ts.string[ c.strings[ col ] ] || 0 : 0;
|
| 1749 |
+
}
|
| 1750 |
+
// fall back to built-in numeric sort
|
| 1751 |
+
// var sort = $.tablesorter['sort' + s]( a[col], b[col], dir, colMax[col], table );
|
| 1752 |
+
sort = c.numberSorter ? c.numberSorter( a[ col ], b[ col ], dir, colMax[ col ], table ) :
|
| 1753 |
+
ts[ 'sortNumeric' + ( dir ? 'Asc' : 'Desc' ) ]( a[ col ], b[ col ], num, colMax[ col ], col, c );
|
| 1754 |
+
} else {
|
| 1755 |
+
// set a & b depending on sort direction
|
| 1756 |
+
x = dir ? a : b;
|
| 1757 |
+
y = dir ? b : a;
|
| 1758 |
+
// text sort function
|
| 1759 |
+
if ( typeof textSorter === 'function' ) {
|
| 1760 |
+
// custom OVERALL text sorter
|
| 1761 |
+
sort = textSorter( x[ col ], y[ col ], dir, col, table );
|
| 1762 |
+
} else if ( typeof sorter[ col ] === 'function' ) {
|
| 1763 |
+
// custom text sorter for a SPECIFIC COLUMN
|
| 1764 |
+
sort = sorter[ col ]( x[ col ], y[ col ], dir, col, table );
|
| 1765 |
+
} else {
|
| 1766 |
+
// fall back to natural sort
|
| 1767 |
+
sort = ts[ 'sortNatural' + ( dir ? 'Asc' : 'Desc' ) ]( a[ col ] || '', b[ col ] || '', col, c );
|
| 1768 |
+
}
|
| 1769 |
+
}
|
| 1770 |
+
if ( sort ) { return sort; }
|
| 1771 |
+
}
|
| 1772 |
+
return a[ c.columns ].order - b[ c.columns ].order;
|
| 1773 |
+
});
|
| 1774 |
+
}
|
| 1775 |
+
if ( ts.debug(c, 'core') ) {
|
| 1776 |
+
console.log( 'Applying sort ' + sortList.toString() + ts.benchmark( sortTime ) );
|
| 1777 |
+
}
|
| 1778 |
+
},
|
| 1779 |
+
|
| 1780 |
+
resortComplete : function( c, callback ) {
|
| 1781 |
+
if ( c.table.isUpdating ) {
|
| 1782 |
+
c.$table.triggerHandler( 'updateComplete', c.table );
|
| 1783 |
+
}
|
| 1784 |
+
if ( $.isFunction( callback ) ) {
|
| 1785 |
+
callback( c.table );
|
| 1786 |
+
}
|
| 1787 |
+
},
|
| 1788 |
+
|
| 1789 |
+
checkResort : function( c, resort, callback ) {
|
| 1790 |
+
var sortList = $.isArray( resort ) ? resort : c.sortList,
|
| 1791 |
+
// if no resort parameter is passed, fallback to config.resort (true by default)
|
| 1792 |
+
resrt = typeof resort === 'undefined' ? c.resort : resort;
|
| 1793 |
+
// don't try to resort if the table is still processing
|
| 1794 |
+
// this will catch spamming of the updateCell method
|
| 1795 |
+
if ( resrt !== false && !c.serverSideSorting && !c.table.isProcessing ) {
|
| 1796 |
+
if ( sortList.length ) {
|
| 1797 |
+
ts.sortOn( c, sortList, function() {
|
| 1798 |
+
ts.resortComplete( c, callback );
|
| 1799 |
+
}, true );
|
| 1800 |
+
} else {
|
| 1801 |
+
ts.sortReset( c, function() {
|
| 1802 |
+
ts.resortComplete( c, callback );
|
| 1803 |
+
ts.applyWidget( c.table, false );
|
| 1804 |
+
} );
|
| 1805 |
+
}
|
| 1806 |
+
} else {
|
| 1807 |
+
ts.resortComplete( c, callback );
|
| 1808 |
+
ts.applyWidget( c.table, false );
|
| 1809 |
+
}
|
| 1810 |
+
},
|
| 1811 |
+
|
| 1812 |
+
sortOn : function( c, list, callback, init ) {
|
| 1813 |
+
var indx,
|
| 1814 |
+
table = c.table;
|
| 1815 |
+
c.$table.triggerHandler( 'sortStart', table );
|
| 1816 |
+
for (indx = 0; indx < c.columns; indx++) {
|
| 1817 |
+
c.sortVars[ indx ].sortedBy = ts.isValueInArray( indx, list ) > -1 ? 'sorton' : '';
|
| 1818 |
+
}
|
| 1819 |
+
// update header count index
|
| 1820 |
+
ts.updateHeaderSortCount( c, list );
|
| 1821 |
+
// set css for headers
|
| 1822 |
+
ts.setHeadersCss( c );
|
| 1823 |
+
// fixes #346
|
| 1824 |
+
if ( c.delayInit && ts.isEmptyObject( c.cache ) ) {
|
| 1825 |
+
ts.buildCache( c );
|
| 1826 |
+
}
|
| 1827 |
+
c.$table.triggerHandler( 'sortBegin', table );
|
| 1828 |
+
// sort the table and append it to the dom
|
| 1829 |
+
ts.multisort( c );
|
| 1830 |
+
ts.appendCache( c, init );
|
| 1831 |
+
c.$table.triggerHandler( 'sortBeforeEnd', table );
|
| 1832 |
+
c.$table.triggerHandler( 'sortEnd', table );
|
| 1833 |
+
ts.applyWidget( table );
|
| 1834 |
+
if ( $.isFunction( callback ) ) {
|
| 1835 |
+
callback( table );
|
| 1836 |
+
}
|
| 1837 |
+
},
|
| 1838 |
+
|
| 1839 |
+
sortReset : function( c, callback ) {
|
| 1840 |
+
c.sortList = [];
|
| 1841 |
+
var indx;
|
| 1842 |
+
for (indx = 0; indx < c.columns; indx++) {
|
| 1843 |
+
c.sortVars[ indx ].count = -1;
|
| 1844 |
+
c.sortVars[ indx ].sortedBy = '';
|
| 1845 |
+
}
|
| 1846 |
+
ts.setHeadersCss( c );
|
| 1847 |
+
ts.multisort( c );
|
| 1848 |
+
ts.appendCache( c );
|
| 1849 |
+
if ( $.isFunction( callback ) ) {
|
| 1850 |
+
callback( c.table );
|
| 1851 |
+
}
|
| 1852 |
+
},
|
| 1853 |
+
|
| 1854 |
+
getSortType : function( parsers, column ) {
|
| 1855 |
+
return ( parsers && parsers[ column ] ) ? parsers[ column ].type || '' : '';
|
| 1856 |
+
},
|
| 1857 |
+
|
| 1858 |
+
getOrder : function( val ) {
|
| 1859 |
+
// look for 'd' in 'desc' order; return true
|
| 1860 |
+
return ( /^d/i.test( val ) || val === 1 );
|
| 1861 |
+
},
|
| 1862 |
+
|
| 1863 |
+
// Natural sort - https://github.com/overset/javascript-natural-sort (date sorting removed)
|
| 1864 |
+
sortNatural : function( a, b ) {
|
| 1865 |
+
if ( a === b ) { return 0; }
|
| 1866 |
+
a = ( a || '' ).toString();
|
| 1867 |
+
b = ( b || '' ).toString();
|
| 1868 |
+
var aNum, bNum, aFloat, bFloat, indx, max,
|
| 1869 |
+
regex = ts.regex;
|
| 1870 |
+
// first try and sort Hex codes
|
| 1871 |
+
if ( regex.hex.test( b ) ) {
|
| 1872 |
+
aNum = parseInt( a.match( regex.hex ), 16 );
|
| 1873 |
+
bNum = parseInt( b.match( regex.hex ), 16 );
|
| 1874 |
+
if ( aNum < bNum ) { return -1; }
|
| 1875 |
+
if ( aNum > bNum ) { return 1; }
|
| 1876 |
+
}
|
| 1877 |
+
// chunk/tokenize
|
| 1878 |
+
aNum = a.replace( regex.chunk, '\\0$1\\0' ).replace( regex.chunks, '' ).split( '\\0' );
|
| 1879 |
+
bNum = b.replace( regex.chunk, '\\0$1\\0' ).replace( regex.chunks, '' ).split( '\\0' );
|
| 1880 |
+
max = Math.max( aNum.length, bNum.length );
|
| 1881 |
+
// natural sorting through split numeric strings and default strings
|
| 1882 |
+
for ( indx = 0; indx < max; indx++ ) {
|
| 1883 |
+
// find floats not starting with '0', string or 0 if not defined
|
| 1884 |
+
aFloat = isNaN( aNum[ indx ] ) ? aNum[ indx ] || 0 : parseFloat( aNum[ indx ] ) || 0;
|
| 1885 |
+
bFloat = isNaN( bNum[ indx ] ) ? bNum[ indx ] || 0 : parseFloat( bNum[ indx ] ) || 0;
|
| 1886 |
+
// handle numeric vs string comparison - number < string - (Kyle Adams)
|
| 1887 |
+
if ( isNaN( aFloat ) !== isNaN( bFloat ) ) { return isNaN( aFloat ) ? 1 : -1; }
|
| 1888 |
+
// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
|
| 1889 |
+
if ( typeof aFloat !== typeof bFloat ) {
|
| 1890 |
+
aFloat += '';
|
| 1891 |
+
bFloat += '';
|
| 1892 |
+
}
|
| 1893 |
+
if ( aFloat < bFloat ) { return -1; }
|
| 1894 |
+
if ( aFloat > bFloat ) { return 1; }
|
| 1895 |
+
}
|
| 1896 |
+
return 0;
|
| 1897 |
+
},
|
| 1898 |
+
|
| 1899 |
+
sortNaturalAsc : function( a, b, col, c ) {
|
| 1900 |
+
if ( a === b ) { return 0; }
|
| 1901 |
+
var empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];
|
| 1902 |
+
if ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : -empty || -1; }
|
| 1903 |
+
if ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : empty || 1; }
|
| 1904 |
+
return ts.sortNatural( a, b );
|
| 1905 |
+
},
|
| 1906 |
+
|
| 1907 |
+
sortNaturalDesc : function( a, b, col, c ) {
|
| 1908 |
+
if ( a === b ) { return 0; }
|
| 1909 |
+
var empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];
|
| 1910 |
+
if ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : empty || 1; }
|
| 1911 |
+
if ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : -empty || -1; }
|
| 1912 |
+
return ts.sortNatural( b, a );
|
| 1913 |
+
},
|
| 1914 |
+
|
| 1915 |
+
// basic alphabetical sort
|
| 1916 |
+
sortText : function( a, b ) {
|
| 1917 |
+
return a > b ? 1 : ( a < b ? -1 : 0 );
|
| 1918 |
+
},
|
| 1919 |
+
|
| 1920 |
+
// return text string value by adding up ascii value
|
| 1921 |
+
// so the text is somewhat sorted when using a digital sort
|
| 1922 |
+
// this is NOT an alphanumeric sort
|
| 1923 |
+
getTextValue : function( val, num, max ) {
|
| 1924 |
+
if ( max ) {
|
| 1925 |
+
// make sure the text value is greater than the max numerical value (max)
|
| 1926 |
+
var indx,
|
| 1927 |
+
len = val ? val.length : 0,
|
| 1928 |
+
n = max + num;
|
| 1929 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 1930 |
+
n += val.charCodeAt( indx );
|
| 1931 |
+
}
|
| 1932 |
+
return num * n;
|
| 1933 |
+
}
|
| 1934 |
+
return 0;
|
| 1935 |
+
},
|
| 1936 |
+
|
| 1937 |
+
sortNumericAsc : function( a, b, num, max, col, c ) {
|
| 1938 |
+
if ( a === b ) { return 0; }
|
| 1939 |
+
var empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];
|
| 1940 |
+
if ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : -empty || -1; }
|
| 1941 |
+
if ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : empty || 1; }
|
| 1942 |
+
if ( isNaN( a ) ) { a = ts.getTextValue( a, num, max ); }
|
| 1943 |
+
if ( isNaN( b ) ) { b = ts.getTextValue( b, num, max ); }
|
| 1944 |
+
return a - b;
|
| 1945 |
+
},
|
| 1946 |
+
|
| 1947 |
+
sortNumericDesc : function( a, b, num, max, col, c ) {
|
| 1948 |
+
if ( a === b ) { return 0; }
|
| 1949 |
+
var empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];
|
| 1950 |
+
if ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : empty || 1; }
|
| 1951 |
+
if ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : -empty || -1; }
|
| 1952 |
+
if ( isNaN( a ) ) { a = ts.getTextValue( a, num, max ); }
|
| 1953 |
+
if ( isNaN( b ) ) { b = ts.getTextValue( b, num, max ); }
|
| 1954 |
+
return b - a;
|
| 1955 |
+
},
|
| 1956 |
+
|
| 1957 |
+
sortNumeric : function( a, b ) {
|
| 1958 |
+
return a - b;
|
| 1959 |
+
},
|
| 1960 |
+
|
| 1961 |
+
/*
|
| 1962 |
+
██ ██ ██ ██ █████▄ ▄████▄ ██████ ██████ ▄█████
|
| 1963 |
+
██ ██ ██ ██ ██ ██ ██ ▄▄▄ ██▄▄ ██ ▀█▄
|
| 1964 |
+
██ ██ ██ ██ ██ ██ ██ ▀██ ██▀▀ ██ ▀█▄
|
| 1965 |
+
███████▀ ██ █████▀ ▀████▀ ██████ ██ █████▀
|
| 1966 |
+
*/
|
| 1967 |
+
addWidget : function( widget ) {
|
| 1968 |
+
if ( widget.id && !ts.isEmptyObject( ts.getWidgetById( widget.id ) ) ) {
|
| 1969 |
+
console.warn( '"' + widget.id + '" widget was loaded more than once!' );
|
| 1970 |
+
}
|
| 1971 |
+
ts.widgets[ ts.widgets.length ] = widget;
|
| 1972 |
+
},
|
| 1973 |
+
|
| 1974 |
+
hasWidget : function( $table, name ) {
|
| 1975 |
+
$table = $( $table );
|
| 1976 |
+
return $table.length && $table[ 0 ].config && $table[ 0 ].config.widgetInit[ name ] || false;
|
| 1977 |
+
},
|
| 1978 |
+
|
| 1979 |
+
getWidgetById : function( name ) {
|
| 1980 |
+
var indx, widget,
|
| 1981 |
+
len = ts.widgets.length;
|
| 1982 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 1983 |
+
widget = ts.widgets[ indx ];
|
| 1984 |
+
if ( widget && widget.id && widget.id.toLowerCase() === name.toLowerCase() ) {
|
| 1985 |
+
return widget;
|
| 1986 |
+
}
|
| 1987 |
+
}
|
| 1988 |
+
},
|
| 1989 |
+
|
| 1990 |
+
applyWidgetOptions : function( table ) {
|
| 1991 |
+
var indx, widget, wo,
|
| 1992 |
+
c = table.config,
|
| 1993 |
+
len = c.widgets.length;
|
| 1994 |
+
if ( len ) {
|
| 1995 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 1996 |
+
widget = ts.getWidgetById( c.widgets[ indx ] );
|
| 1997 |
+
if ( widget && widget.options ) {
|
| 1998 |
+
wo = $.extend( true, {}, widget.options );
|
| 1999 |
+
c.widgetOptions = $.extend( true, wo, c.widgetOptions );
|
| 2000 |
+
// add widgetOptions to defaults for option validator
|
| 2001 |
+
$.extend( true, ts.defaults.widgetOptions, widget.options );
|
| 2002 |
+
}
|
| 2003 |
+
}
|
| 2004 |
+
}
|
| 2005 |
+
},
|
| 2006 |
+
|
| 2007 |
+
addWidgetFromClass : function( table ) {
|
| 2008 |
+
var len, indx,
|
| 2009 |
+
c = table.config,
|
| 2010 |
+
// look for widgets to apply from table class
|
| 2011 |
+
// don't match from 'ui-widget-content'; use \S instead of \w to include widgets
|
| 2012 |
+
// with dashes in the name, e.g. "widget-test-2" extracts out "test-2"
|
| 2013 |
+
regex = '^' + c.widgetClass.replace( ts.regex.templateName, '(\\S+)+' ) + '$',
|
| 2014 |
+
widgetClass = new RegExp( regex, 'g' ),
|
| 2015 |
+
// split up table class (widget id's can include dashes) - stop using match
|
| 2016 |
+
// otherwise only one widget gets extracted, see #1109
|
| 2017 |
+
widgets = ( table.className || '' ).split( ts.regex.spaces );
|
| 2018 |
+
if ( widgets.length ) {
|
| 2019 |
+
len = widgets.length;
|
| 2020 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 2021 |
+
if ( widgets[ indx ].match( widgetClass ) ) {
|
| 2022 |
+
c.widgets[ c.widgets.length ] = widgets[ indx ].replace( widgetClass, '$1' );
|
| 2023 |
+
}
|
| 2024 |
+
}
|
| 2025 |
+
}
|
| 2026 |
+
},
|
| 2027 |
+
|
| 2028 |
+
applyWidgetId : function( table, id, init ) {
|
| 2029 |
+
table = $(table)[0];
|
| 2030 |
+
var applied, time, name,
|
| 2031 |
+
c = table.config,
|
| 2032 |
+
wo = c.widgetOptions,
|
| 2033 |
+
debug = ts.debug(c, 'core'),
|
| 2034 |
+
widget = ts.getWidgetById( id );
|
| 2035 |
+
if ( widget ) {
|
| 2036 |
+
name = widget.id;
|
| 2037 |
+
applied = false;
|
| 2038 |
+
// add widget name to option list so it gets reapplied after sorting, filtering, etc
|
| 2039 |
+
if ( $.inArray( name, c.widgets ) < 0 ) {
|
| 2040 |
+
c.widgets[ c.widgets.length ] = name;
|
| 2041 |
+
}
|
| 2042 |
+
if ( debug ) { time = new Date(); }
|
| 2043 |
+
|
| 2044 |
+
if ( init || !( c.widgetInit[ name ] ) ) {
|
| 2045 |
+
// set init flag first to prevent calling init more than once (e.g. pager)
|
| 2046 |
+
c.widgetInit[ name ] = true;
|
| 2047 |
+
if ( table.hasInitialized ) {
|
| 2048 |
+
// don't reapply widget options on tablesorter init
|
| 2049 |
+
ts.applyWidgetOptions( table );
|
| 2050 |
+
}
|
| 2051 |
+
if ( typeof widget.init === 'function' ) {
|
| 2052 |
+
applied = true;
|
| 2053 |
+
if ( debug ) {
|
| 2054 |
+
console[ console.group ? 'group' : 'log' ]( 'Initializing ' + name + ' widget' );
|
| 2055 |
+
}
|
| 2056 |
+
widget.init( table, widget, c, wo );
|
| 2057 |
+
}
|
| 2058 |
+
}
|
| 2059 |
+
if ( !init && typeof widget.format === 'function' ) {
|
| 2060 |
+
applied = true;
|
| 2061 |
+
if ( debug ) {
|
| 2062 |
+
console[ console.group ? 'group' : 'log' ]( 'Updating ' + name + ' widget' );
|
| 2063 |
+
}
|
| 2064 |
+
widget.format( table, c, wo, false );
|
| 2065 |
+
}
|
| 2066 |
+
if ( debug ) {
|
| 2067 |
+
if ( applied ) {
|
| 2068 |
+
console.log( 'Completed ' + ( init ? 'initializing ' : 'applying ' ) + name + ' widget' + ts.benchmark( time ) );
|
| 2069 |
+
if ( console.groupEnd ) { console.groupEnd(); }
|
| 2070 |
+
}
|
| 2071 |
+
}
|
| 2072 |
+
}
|
| 2073 |
+
},
|
| 2074 |
+
|
| 2075 |
+
applyWidget : function( table, init, callback ) {
|
| 2076 |
+
table = $( table )[ 0 ]; // in case this is called externally
|
| 2077 |
+
var indx, len, names, widget, time,
|
| 2078 |
+
c = table.config,
|
| 2079 |
+
debug = ts.debug(c, 'core'),
|
| 2080 |
+
widgets = [];
|
| 2081 |
+
// prevent numerous consecutive widget applications
|
| 2082 |
+
if ( init !== false && table.hasInitialized && ( table.isApplyingWidgets || table.isUpdating ) ) {
|
| 2083 |
+
return;
|
| 2084 |
+
}
|
| 2085 |
+
if ( debug ) { time = new Date(); }
|
| 2086 |
+
ts.addWidgetFromClass( table );
|
| 2087 |
+
// prevent "tablesorter-ready" from firing multiple times in a row
|
| 2088 |
+
clearTimeout( c.timerReady );
|
| 2089 |
+
if ( c.widgets.length ) {
|
| 2090 |
+
table.isApplyingWidgets = true;
|
| 2091 |
+
// ensure unique widget ids
|
| 2092 |
+
c.widgets = $.grep( c.widgets, function( val, index ) {
|
| 2093 |
+
return $.inArray( val, c.widgets ) === index;
|
| 2094 |
+
});
|
| 2095 |
+
names = c.widgets || [];
|
| 2096 |
+
len = names.length;
|
| 2097 |
+
// build widget array & add priority as needed
|
| 2098 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 2099 |
+
widget = ts.getWidgetById( names[ indx ] );
|
| 2100 |
+
if ( widget && widget.id ) {
|
| 2101 |
+
// set priority to 10 if not defined
|
| 2102 |
+
if ( !widget.priority ) { widget.priority = 10; }
|
| 2103 |
+
widgets[ indx ] = widget;
|
| 2104 |
+
} else if ( debug ) {
|
| 2105 |
+
console.warn( '"' + names[ indx ] + '" was enabled, but the widget code has not been loaded!' );
|
| 2106 |
+
}
|
| 2107 |
+
}
|
| 2108 |
+
// sort widgets by priority
|
| 2109 |
+
widgets.sort( function( a, b ) {
|
| 2110 |
+
return a.priority < b.priority ? -1 : a.priority === b.priority ? 0 : 1;
|
| 2111 |
+
});
|
| 2112 |
+
// add/update selected widgets
|
| 2113 |
+
len = widgets.length;
|
| 2114 |
+
if ( debug ) {
|
| 2115 |
+
console[ console.group ? 'group' : 'log' ]( 'Start ' + ( init ? 'initializing' : 'applying' ) + ' widgets' );
|
| 2116 |
+
}
|
| 2117 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 2118 |
+
widget = widgets[ indx ];
|
| 2119 |
+
if ( widget && widget.id ) {
|
| 2120 |
+
ts.applyWidgetId( table, widget.id, init );
|
| 2121 |
+
}
|
| 2122 |
+
}
|
| 2123 |
+
if ( debug && console.groupEnd ) { console.groupEnd(); }
|
| 2124 |
+
}
|
| 2125 |
+
c.timerReady = setTimeout( function() {
|
| 2126 |
+
table.isApplyingWidgets = false;
|
| 2127 |
+
$.data( table, 'lastWidgetApplication', new Date() );
|
| 2128 |
+
c.$table.triggerHandler( 'tablesorter-ready' );
|
| 2129 |
+
// callback executed on init only
|
| 2130 |
+
if ( !init && typeof callback === 'function' ) {
|
| 2131 |
+
callback( table );
|
| 2132 |
+
}
|
| 2133 |
+
if ( debug ) {
|
| 2134 |
+
widget = c.widgets.length;
|
| 2135 |
+
console.log( 'Completed ' +
|
| 2136 |
+
( init === true ? 'initializing ' : 'applying ' ) + widget +
|
| 2137 |
+
' widget' + ( widget !== 1 ? 's' : '' ) + ts.benchmark( time ) );
|
| 2138 |
+
}
|
| 2139 |
+
}, 10 );
|
| 2140 |
+
},
|
| 2141 |
+
|
| 2142 |
+
removeWidget : function( table, name, refreshing ) {
|
| 2143 |
+
table = $( table )[ 0 ];
|
| 2144 |
+
var index, widget, indx, len,
|
| 2145 |
+
c = table.config;
|
| 2146 |
+
// if name === true, add all widgets from $.tablesorter.widgets
|
| 2147 |
+
if ( name === true ) {
|
| 2148 |
+
name = [];
|
| 2149 |
+
len = ts.widgets.length;
|
| 2150 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 2151 |
+
widget = ts.widgets[ indx ];
|
| 2152 |
+
if ( widget && widget.id ) {
|
| 2153 |
+
name[ name.length ] = widget.id;
|
| 2154 |
+
}
|
| 2155 |
+
}
|
| 2156 |
+
} else {
|
| 2157 |
+
// name can be either an array of widgets names,
|
| 2158 |
+
// or a space/comma separated list of widget names
|
| 2159 |
+
name = ( $.isArray( name ) ? name.join( ',' ) : name || '' ).toLowerCase().split( /[\s,]+/ );
|
| 2160 |
+
}
|
| 2161 |
+
len = name.length;
|
| 2162 |
+
for ( index = 0; index < len; index++ ) {
|
| 2163 |
+
widget = ts.getWidgetById( name[ index ] );
|
| 2164 |
+
indx = $.inArray( name[ index ], c.widgets );
|
| 2165 |
+
// don't remove the widget from config.widget if refreshing
|
| 2166 |
+
if ( indx >= 0 && refreshing !== true ) {
|
| 2167 |
+
c.widgets.splice( indx, 1 );
|
| 2168 |
+
}
|
| 2169 |
+
if ( widget && widget.remove ) {
|
| 2170 |
+
if ( ts.debug(c, 'core') ) {
|
| 2171 |
+
console.log( ( refreshing ? 'Refreshing' : 'Removing' ) + ' "' + name[ index ] + '" widget' );
|
| 2172 |
+
}
|
| 2173 |
+
widget.remove( table, c, c.widgetOptions, refreshing );
|
| 2174 |
+
c.widgetInit[ name[ index ] ] = false;
|
| 2175 |
+
}
|
| 2176 |
+
}
|
| 2177 |
+
c.$table.triggerHandler( 'widgetRemoveEnd', table );
|
| 2178 |
+
},
|
| 2179 |
+
|
| 2180 |
+
refreshWidgets : function( table, doAll, dontapply ) {
|
| 2181 |
+
table = $( table )[ 0 ]; // see issue #243
|
| 2182 |
+
var indx, widget,
|
| 2183 |
+
c = table.config,
|
| 2184 |
+
curWidgets = c.widgets,
|
| 2185 |
+
widgets = ts.widgets,
|
| 2186 |
+
len = widgets.length,
|
| 2187 |
+
list = [],
|
| 2188 |
+
callback = function( table ) {
|
| 2189 |
+
$( table ).triggerHandler( 'refreshComplete' );
|
| 2190 |
+
};
|
| 2191 |
+
// remove widgets not defined in config.widgets, unless doAll is true
|
| 2192 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 2193 |
+
widget = widgets[ indx ];
|
| 2194 |
+
if ( widget && widget.id && ( doAll || $.inArray( widget.id, curWidgets ) < 0 ) ) {
|
| 2195 |
+
list[ list.length ] = widget.id;
|
| 2196 |
+
}
|
| 2197 |
+
}
|
| 2198 |
+
ts.removeWidget( table, list.join( ',' ), true );
|
| 2199 |
+
if ( dontapply !== true ) {
|
| 2200 |
+
// call widget init if
|
| 2201 |
+
ts.applyWidget( table, doAll || false, callback );
|
| 2202 |
+
if ( doAll ) {
|
| 2203 |
+
// apply widget format
|
| 2204 |
+
ts.applyWidget( table, false, callback );
|
| 2205 |
+
}
|
| 2206 |
+
} else {
|
| 2207 |
+
callback( table );
|
| 2208 |
+
}
|
| 2209 |
+
},
|
| 2210 |
+
|
| 2211 |
+
/*
|
| 2212 |
+
██ ██ ██████ ██ ██ ██ ██████ ██ ██████ ▄█████
|
| 2213 |
+
██ ██ ██ ██ ██ ██ ██ ██ ██▄▄ ▀█▄
|
| 2214 |
+
██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀█▄
|
| 2215 |
+
▀████▀ ██ ██ ██████ ██ ██ ██ ██████ █████▀
|
| 2216 |
+
*/
|
| 2217 |
+
benchmark : function( diff ) {
|
| 2218 |
+
return ( ' (' + ( new Date().getTime() - diff.getTime() ) + ' ms)' );
|
| 2219 |
+
},
|
| 2220 |
+
// deprecated ts.log
|
| 2221 |
+
log : function() {
|
| 2222 |
+
console.log( arguments );
|
| 2223 |
+
},
|
| 2224 |
+
debug : function(c, name) {
|
| 2225 |
+
return c && (
|
| 2226 |
+
c.debug === true ||
|
| 2227 |
+
typeof c.debug === 'string' && c.debug.indexOf(name) > -1
|
| 2228 |
+
);
|
| 2229 |
+
},
|
| 2230 |
+
|
| 2231 |
+
// $.isEmptyObject from jQuery v1.4
|
| 2232 |
+
isEmptyObject : function( obj ) {
|
| 2233 |
+
/*jshint forin: false */
|
| 2234 |
+
for ( var name in obj ) {
|
| 2235 |
+
return false;
|
| 2236 |
+
}
|
| 2237 |
+
return true;
|
| 2238 |
+
},
|
| 2239 |
+
|
| 2240 |
+
isValueInArray : function( column, arry ) {
|
| 2241 |
+
var indx,
|
| 2242 |
+
len = arry && arry.length || 0;
|
| 2243 |
+
for ( indx = 0; indx < len; indx++ ) {
|
| 2244 |
+
if ( arry[ indx ][ 0 ] === column ) {
|
| 2245 |
+
return indx;
|
| 2246 |
+
}
|
| 2247 |
+
}
|
| 2248 |
+
return -1;
|
| 2249 |
+
},
|
| 2250 |
+
|
| 2251 |
+
formatFloat : function( str, table ) {
|
| 2252 |
+
if ( typeof str !== 'string' || str === '' ) { return str; }
|
| 2253 |
+
// allow using formatFloat without a table; defaults to US number format
|
| 2254 |
+
var num,
|
| 2255 |
+
usFormat = table && table.config ? table.config.usNumberFormat !== false :
|
| 2256 |
+
typeof table !== 'undefined' ? table : true;
|
| 2257 |
+
if ( usFormat ) {
|
| 2258 |
+
// US Format - 1,234,567.89 -> 1234567.89
|
| 2259 |
+
str = str.replace( ts.regex.comma, '' );
|
| 2260 |
+
} else {
|
| 2261 |
+
// German Format = 1.234.567,89 -> 1234567.89
|
| 2262 |
+
// French Format = 1 234 567,89 -> 1234567.89
|
| 2263 |
+
str = str.replace( ts.regex.digitNonUS, '' ).replace( ts.regex.comma, '.' );
|
| 2264 |
+
}
|
| 2265 |
+
if ( ts.regex.digitNegativeTest.test( str ) ) {
|
| 2266 |
+
// make (#) into a negative number -> (10) = -10
|
| 2267 |
+
str = str.replace( ts.regex.digitNegativeReplace, '-$1' );
|
| 2268 |
+
}
|
| 2269 |
+
num = parseFloat( str );
|
| 2270 |
+
// return the text instead of zero
|
| 2271 |
+
return isNaN( num ) ? $.trim( str ) : num;
|
| 2272 |
+
},
|
| 2273 |
+
|
| 2274 |
+
isDigit : function( str ) {
|
| 2275 |
+
// replace all unwanted chars and match
|
| 2276 |
+
return isNaN( str ) ?
|
| 2277 |
+
ts.regex.digitTest.test( str.toString().replace( ts.regex.digitReplace, '' ) ) :
|
| 2278 |
+
str !== '';
|
| 2279 |
+
},
|
| 2280 |
+
|
| 2281 |
+
// computeTableHeaderCellIndexes from:
|
| 2282 |
+
// http://www.javascripttoolbox.com/lib/table/examples.php
|
| 2283 |
+
// http://www.javascripttoolbox.com/temp/table_cellindex.html
|
| 2284 |
+
computeColumnIndex : function( $rows, c ) {
|
| 2285 |
+
var i, j, k, l, cell, cells, rowIndex, rowSpan, colSpan, firstAvailCol,
|
| 2286 |
+
// total columns has been calculated, use it to set the matrixrow
|
| 2287 |
+
columns = c && c.columns || 0,
|
| 2288 |
+
matrix = [],
|
| 2289 |
+
matrixrow = new Array( columns );
|
| 2290 |
+
for ( i = 0; i < $rows.length; i++ ) {
|
| 2291 |
+
cells = $rows[ i ].cells;
|
| 2292 |
+
for ( j = 0; j < cells.length; j++ ) {
|
| 2293 |
+
cell = cells[ j ];
|
| 2294 |
+
rowIndex = i;
|
| 2295 |
+
rowSpan = cell.rowSpan || 1;
|
| 2296 |
+
colSpan = cell.colSpan || 1;
|
| 2297 |
+
if ( typeof matrix[ rowIndex ] === 'undefined' ) {
|
| 2298 |
+
matrix[ rowIndex ] = [];
|
| 2299 |
+
}
|
| 2300 |
+
// Find first available column in the first row
|
| 2301 |
+
for ( k = 0; k < matrix[ rowIndex ].length + 1; k++ ) {
|
| 2302 |
+
if ( typeof matrix[ rowIndex ][ k ] === 'undefined' ) {
|
| 2303 |
+
firstAvailCol = k;
|
| 2304 |
+
break;
|
| 2305 |
+
}
|
| 2306 |
+
}
|
| 2307 |
+
// jscs:disable disallowEmptyBlocks
|
| 2308 |
+
if ( columns && cell.cellIndex === firstAvailCol ) {
|
| 2309 |
+
// don't to anything
|
| 2310 |
+
} else if ( cell.setAttribute ) {
|
| 2311 |
+
// jscs:enable disallowEmptyBlocks
|
| 2312 |
+
// add data-column (setAttribute = IE8+)
|
| 2313 |
+
cell.setAttribute( 'data-column', firstAvailCol );
|
| 2314 |
+
} else {
|
| 2315 |
+
// remove once we drop support for IE7 - 1/12/2016
|
| 2316 |
+
$( cell ).attr( 'data-column', firstAvailCol );
|
| 2317 |
+
}
|
| 2318 |
+
for ( k = rowIndex; k < rowIndex + rowSpan; k++ ) {
|
| 2319 |
+
if ( typeof matrix[ k ] === 'undefined' ) {
|
| 2320 |
+
matrix[ k ] = [];
|
| 2321 |
+
}
|
| 2322 |
+
matrixrow = matrix[ k ];
|
| 2323 |
+
for ( l = firstAvailCol; l < firstAvailCol + colSpan; l++ ) {
|
| 2324 |
+
matrixrow[ l ] = 'x';
|
| 2325 |
+
}
|
| 2326 |
+
}
|
| 2327 |
+
}
|
| 2328 |
+
}
|
| 2329 |
+
ts.checkColumnCount($rows, matrix, matrixrow.length);
|
| 2330 |
+
return matrixrow.length;
|
| 2331 |
+
},
|
| 2332 |
+
|
| 2333 |
+
checkColumnCount : function($rows, matrix, columns) {
|
| 2334 |
+
// this DOES NOT report any tbody column issues, except for the math and
|
| 2335 |
+
// and column selector widgets
|
| 2336 |
+
var i, len,
|
| 2337 |
+
valid = true,
|
| 2338 |
+
cells = [];
|
| 2339 |
+
for ( i = 0; i < matrix.length; i++ ) {
|
| 2340 |
+
// some matrix entries are undefined when testing the footer because
|
| 2341 |
+
// it is using the rowIndex property
|
| 2342 |
+
if ( matrix[i] ) {
|
| 2343 |
+
len = matrix[i].length;
|
| 2344 |
+
if ( matrix[i].length !== columns ) {
|
| 2345 |
+
valid = false;
|
| 2346 |
+
break;
|
| 2347 |
+
}
|
| 2348 |
+
}
|
| 2349 |
+
}
|
| 2350 |
+
if ( !valid ) {
|
| 2351 |
+
$rows.each( function( indx, el ) {
|
| 2352 |
+
var cell = el.parentElement.nodeName;
|
| 2353 |
+
if ( cells.indexOf( cell ) < 0 ) {
|
| 2354 |
+
cells.push( cell );
|
| 2355 |
+
}
|
| 2356 |
+
});
|
| 2357 |
+
console.error(
|
| 2358 |
+
'Invalid or incorrect number of columns in the ' +
|
| 2359 |
+
cells.join( ' or ' ) + '; expected ' + columns +
|
| 2360 |
+
', but found ' + len + ' columns'
|
| 2361 |
+
);
|
| 2362 |
+
}
|
| 2363 |
+
},
|
| 2364 |
+
|
| 2365 |
+
// automatically add a colgroup with col elements set to a percentage width
|
| 2366 |
+
fixColumnWidth : function( table ) {
|
| 2367 |
+
table = $( table )[ 0 ];
|
| 2368 |
+
var overallWidth, percent, $tbodies, len, index,
|
| 2369 |
+
c = table.config,
|
| 2370 |
+
$colgroup = c.$table.children( 'colgroup' );
|
| 2371 |
+
// remove plugin-added colgroup, in case we need to refresh the widths
|
| 2372 |
+
if ( $colgroup.length && $colgroup.hasClass( ts.css.colgroup ) ) {
|
| 2373 |
+
$colgroup.remove();
|
| 2374 |
+
}
|
| 2375 |
+
if ( c.widthFixed && c.$table.children( 'colgroup' ).length === 0 ) {
|
| 2376 |
+
$colgroup = $( '<colgroup class="' + ts.css.colgroup + '">' );
|
| 2377 |
+
overallWidth = c.$table.width();
|
| 2378 |
+
// only add col for visible columns - fixes #371
|
| 2379 |
+
$tbodies = c.$tbodies.find( 'tr:first' ).children( ':visible' );
|
| 2380 |
+
len = $tbodies.length;
|
| 2381 |
+
for ( index = 0; index < len; index++ ) {
|
| 2382 |
+
percent = parseInt( ( $tbodies.eq( index ).width() / overallWidth ) * 1000, 10 ) / 10 + '%';
|
| 2383 |
+
$colgroup.append( $( '<col>' ).css( 'width', percent ) );
|
| 2384 |
+
}
|
| 2385 |
+
c.$table.prepend( $colgroup );
|
| 2386 |
+
}
|
| 2387 |
+
},
|
| 2388 |
+
|
| 2389 |
+
// get sorter, string, empty, etc options for each column from
|
| 2390 |
+
// jQuery data, metadata, header option or header class name ('sorter-false')
|
| 2391 |
+
// priority = jQuery data > meta > headers option > header class name
|
| 2392 |
+
getData : function( header, configHeader, key ) {
|
| 2393 |
+
var meta, cl4ss,
|
| 2394 |
+
val = '',
|
| 2395 |
+
$header = $( header );
|
| 2396 |
+
if ( !$header.length ) { return ''; }
|
| 2397 |
+
meta = $.metadata ? $header.metadata() : false;
|
| 2398 |
+
cl4ss = ' ' + ( $header.attr( 'class' ) || '' );
|
| 2399 |
+
if ( typeof $header.data( key ) !== 'undefined' ||
|
| 2400 |
+
typeof $header.data( key.toLowerCase() ) !== 'undefined' ) {
|
| 2401 |
+
// 'data-lockedOrder' is assigned to 'lockedorder'; but 'data-locked-order' is assigned to 'lockedOrder'
|
| 2402 |
+
// 'data-sort-initial-order' is assigned to 'sortInitialOrder'
|
| 2403 |
+
val += $header.data( key ) || $header.data( key.toLowerCase() );
|
| 2404 |
+
} else if ( meta && typeof meta[ key ] !== 'undefined' ) {
|
| 2405 |
+
val += meta[ key ];
|
| 2406 |
+
} else if ( configHeader && typeof configHeader[ key ] !== 'undefined' ) {
|
| 2407 |
+
val += configHeader[ key ];
|
| 2408 |
+
} else if ( cl4ss !== ' ' && cl4ss.match( ' ' + key + '-' ) ) {
|
| 2409 |
+
// include sorter class name 'sorter-text', etc; now works with 'sorter-my-custom-parser'
|
| 2410 |
+
val = cl4ss.match( new RegExp( '\\s' + key + '-([\\w-]+)' ) )[ 1 ] || '';
|
| 2411 |
+
}
|
| 2412 |
+
return $.trim( val );
|
| 2413 |
+
},
|
| 2414 |
+
|
| 2415 |
+
getColumnData : function( table, obj, indx, getCell, $headers ) {
|
| 2416 |
+
if ( typeof obj !== 'object' || obj === null ) {
|
| 2417 |
+
return obj;
|
| 2418 |
+
}
|
| 2419 |
+
table = $( table )[ 0 ];
|
| 2420 |
+
var $header, key,
|
| 2421 |
+
c = table.config,
|
| 2422 |
+
$cells = ( $headers || c.$headers ),
|
| 2423 |
+
// c.$headerIndexed is not defined initially
|
| 2424 |
+
$cell = c.$headerIndexed && c.$headerIndexed[ indx ] ||
|
| 2425 |
+
$cells.find( '[data-column="' + indx + '"]:last' );
|
| 2426 |
+
if ( typeof obj[ indx ] !== 'undefined' ) {
|
| 2427 |
+
return getCell ? obj[ indx ] : obj[ $cells.index( $cell ) ];
|
| 2428 |
+
}
|
| 2429 |
+
for ( key in obj ) {
|
| 2430 |
+
if ( typeof key === 'string' ) {
|
| 2431 |
+
$header = $cell
|
| 2432 |
+
// header cell with class/id
|
| 2433 |
+
.filter( key )
|
| 2434 |
+
// find elements within the header cell with cell/id
|
| 2435 |
+
.add( $cell.find( key ) );
|
| 2436 |
+
if ( $header.length ) {
|
| 2437 |
+
return obj[ key ];
|
| 2438 |
+
}
|
| 2439 |
+
}
|
| 2440 |
+
}
|
| 2441 |
+
return;
|
| 2442 |
+
},
|
| 2443 |
+
|
| 2444 |
+
// *** Process table ***
|
| 2445 |
+
// add processing indicator
|
| 2446 |
+
isProcessing : function( $table, toggle, $headers ) {
|
| 2447 |
+
$table = $( $table );
|
| 2448 |
+
var c = $table[ 0 ].config,
|
| 2449 |
+
// default to all headers
|
| 2450 |
+
$header = $headers || $table.find( '.' + ts.css.header );
|
| 2451 |
+
if ( toggle ) {
|
| 2452 |
+
// don't use sortList if custom $headers used
|
| 2453 |
+
if ( typeof $headers !== 'undefined' && c.sortList.length > 0 ) {
|
| 2454 |
+
// get headers from the sortList
|
| 2455 |
+
$header = $header.filter( function() {
|
| 2456 |
+
// get data-column from attr to keep compatibility with jQuery 1.2.6
|
| 2457 |
+
return this.sortDisabled ?
|
| 2458 |
+
false :
|
| 2459 |
+
ts.isValueInArray( parseFloat( $( this ).attr( 'data-column' ) ), c.sortList ) >= 0;
|
| 2460 |
+
});
|
| 2461 |
+
}
|
| 2462 |
+
$table.add( $header ).addClass( ts.css.processing + ' ' + c.cssProcessing );
|
| 2463 |
+
} else {
|
| 2464 |
+
$table.add( $header ).removeClass( ts.css.processing + ' ' + c.cssProcessing );
|
| 2465 |
+
}
|
| 2466 |
+
},
|
| 2467 |
+
|
| 2468 |
+
// detach tbody but save the position
|
| 2469 |
+
// don't use tbody because there are portions that look for a tbody index (updateCell)
|
| 2470 |
+
processTbody : function( table, $tb, getIt ) {
|
| 2471 |
+
table = $( table )[ 0 ];
|
| 2472 |
+
if ( getIt ) {
|
| 2473 |
+
table.isProcessing = true;
|
| 2474 |
+
$tb.before( '<colgroup class="tablesorter-savemyplace"/>' );
|
| 2475 |
+
return $.fn.detach ? $tb.detach() : $tb.remove();
|
| 2476 |
+
}
|
| 2477 |
+
var holdr = $( table ).find( 'colgroup.tablesorter-savemyplace' );
|
| 2478 |
+
$tb.insertAfter( holdr );
|
| 2479 |
+
holdr.remove();
|
| 2480 |
+
table.isProcessing = false;
|
| 2481 |
+
},
|
| 2482 |
+
|
| 2483 |
+
clearTableBody : function( table ) {
|
| 2484 |
+
$( table )[ 0 ].config.$tbodies.children().detach();
|
| 2485 |
+
},
|
| 2486 |
+
|
| 2487 |
+
// used when replacing accented characters during sorting
|
| 2488 |
+
characterEquivalents : {
|
| 2489 |
+
'a' : '\u00e1\u00e0\u00e2\u00e3\u00e4\u0105\u00e5', // áàâãäąå
|
| 2490 |
+
'A' : '\u00c1\u00c0\u00c2\u00c3\u00c4\u0104\u00c5', // ÁÀÂÃÄĄÅ
|
| 2491 |
+
'c' : '\u00e7\u0107\u010d', // çćč
|
| 2492 |
+
'C' : '\u00c7\u0106\u010c', // ÇĆČ
|
| 2493 |
+
'e' : '\u00e9\u00e8\u00ea\u00eb\u011b\u0119', // éèêëěę
|
| 2494 |
+
'E' : '\u00c9\u00c8\u00ca\u00cb\u011a\u0118', // ÉÈÊËĚĘ
|
| 2495 |
+
'i' : '\u00ed\u00ec\u0130\u00ee\u00ef\u0131', // íìİîïı
|
| 2496 |
+
'I' : '\u00cd\u00cc\u0130\u00ce\u00cf', // ÍÌİÎÏ
|
| 2497 |
+
'o' : '\u00f3\u00f2\u00f4\u00f5\u00f6\u014d', // óòôõöō
|
| 2498 |
+
'O' : '\u00d3\u00d2\u00d4\u00d5\u00d6\u014c', // ÓÒÔÕÖŌ
|
| 2499 |
+
'ss': '\u00df', // ß (s sharp)
|
| 2500 |
+
'SS': '\u1e9e', // ẞ (Capital sharp s)
|
| 2501 |
+
'u' : '\u00fa\u00f9\u00fb\u00fc\u016f', // úùûüů
|
| 2502 |
+
'U' : '\u00da\u00d9\u00db\u00dc\u016e' // ÚÙÛÜŮ
|
| 2503 |
+
},
|
| 2504 |
+
|
| 2505 |
+
replaceAccents : function( str ) {
|
| 2506 |
+
var chr,
|
| 2507 |
+
acc = '[',
|
| 2508 |
+
eq = ts.characterEquivalents;
|
| 2509 |
+
if ( !ts.characterRegex ) {
|
| 2510 |
+
ts.characterRegexArray = {};
|
| 2511 |
+
for ( chr in eq ) {
|
| 2512 |
+
if ( typeof chr === 'string' ) {
|
| 2513 |
+
acc += eq[ chr ];
|
| 2514 |
+
ts.characterRegexArray[ chr ] = new RegExp( '[' + eq[ chr ] + ']', 'g' );
|
| 2515 |
+
}
|
| 2516 |
+
}
|
| 2517 |
+
ts.characterRegex = new RegExp( acc + ']' );
|
| 2518 |
+
}
|
| 2519 |
+
if ( ts.characterRegex.test( str ) ) {
|
| 2520 |
+
for ( chr in eq ) {
|
| 2521 |
+
if ( typeof chr === 'string' ) {
|
| 2522 |
+
str = str.replace( ts.characterRegexArray[ chr ], chr );
|
| 2523 |
+
}
|
| 2524 |
+
}
|
| 2525 |
+
}
|
| 2526 |
+
return str;
|
| 2527 |
+
},
|
| 2528 |
+
|
| 2529 |
+
validateOptions : function( c ) {
|
| 2530 |
+
var setting, setting2, typ, timer,
|
| 2531 |
+
// ignore options containing an array
|
| 2532 |
+
ignore = 'headers sortForce sortList sortAppend widgets'.split( ' ' ),
|
| 2533 |
+
orig = c.originalSettings;
|
| 2534 |
+
if ( orig ) {
|
| 2535 |
+
if ( ts.debug(c, 'core') ) {
|
| 2536 |
+
timer = new Date();
|
| 2537 |
+
}
|
| 2538 |
+
for ( setting in orig ) {
|
| 2539 |
+
typ = typeof ts.defaults[setting];
|
| 2540 |
+
if ( typ === 'undefined' ) {
|
| 2541 |
+
console.warn( 'Tablesorter Warning! "table.config.' + setting + '" option not recognized' );
|
| 2542 |
+
} else if ( typ === 'object' ) {
|
| 2543 |
+
for ( setting2 in orig[setting] ) {
|
| 2544 |
+
typ = ts.defaults[setting] && typeof ts.defaults[setting][setting2];
|
| 2545 |
+
if ( $.inArray( setting, ignore ) < 0 && typ === 'undefined' ) {
|
| 2546 |
+
console.warn( 'Tablesorter Warning! "table.config.' + setting + '.' + setting2 + '" option not recognized' );
|
| 2547 |
+
}
|
| 2548 |
+
}
|
| 2549 |
+
}
|
| 2550 |
+
}
|
| 2551 |
+
if ( ts.debug(c, 'core') ) {
|
| 2552 |
+
console.log( 'validate options time:' + ts.benchmark( timer ) );
|
| 2553 |
+
}
|
| 2554 |
+
}
|
| 2555 |
+
},
|
| 2556 |
+
|
| 2557 |
+
// restore headers
|
| 2558 |
+
restoreHeaders : function( table ) {
|
| 2559 |
+
var index, $cell,
|
| 2560 |
+
c = $( table )[ 0 ].config,
|
| 2561 |
+
$headers = c.$table.find( c.selectorHeaders ),
|
| 2562 |
+
len = $headers.length;
|
| 2563 |
+
// don't use c.$headers here in case header cells were swapped
|
| 2564 |
+
for ( index = 0; index < len; index++ ) {
|
| 2565 |
+
$cell = $headers.eq( index );
|
| 2566 |
+
// only restore header cells if it is wrapped
|
| 2567 |
+
// because this is also used by the updateAll method
|
| 2568 |
+
if ( $cell.find( '.' + ts.css.headerIn ).length ) {
|
| 2569 |
+
$cell.html( c.headerContent[ index ] );
|
| 2570 |
+
}
|
| 2571 |
+
}
|
| 2572 |
+
},
|
| 2573 |
+
|
| 2574 |
+
destroy : function( table, removeClasses, callback ) {
|
| 2575 |
+
table = $( table )[ 0 ];
|
| 2576 |
+
if ( !table.hasInitialized ) { return; }
|
| 2577 |
+
// remove all widgets
|
| 2578 |
+
ts.removeWidget( table, true, false );
|
| 2579 |
+
var events,
|
| 2580 |
+
$t = $( table ),
|
| 2581 |
+
c = table.config,
|
| 2582 |
+
$h = $t.find( 'thead:first' ),
|
| 2583 |
+
$r = $h.find( 'tr.' + ts.css.headerRow ).removeClass( ts.css.headerRow + ' ' + c.cssHeaderRow ),
|
| 2584 |
+
$f = $t.find( 'tfoot:first > tr' ).children( 'th, td' );
|
| 2585 |
+
if ( removeClasses === false && $.inArray( 'uitheme', c.widgets ) >= 0 ) {
|
| 2586 |
+
// reapply uitheme classes, in case we want to maintain appearance
|
| 2587 |
+
$t.triggerHandler( 'applyWidgetId', [ 'uitheme' ] );
|
| 2588 |
+
$t.triggerHandler( 'applyWidgetId', [ 'zebra' ] );
|
| 2589 |
+
}
|
| 2590 |
+
// remove widget added rows, just in case
|
| 2591 |
+
$h.find( 'tr' ).not( $r ).remove();
|
| 2592 |
+
// disable tablesorter - not using .unbind( namespace ) because namespacing was
|
| 2593 |
+
// added in jQuery v1.4.3 - see http://api.jquery.com/event.namespace/
|
| 2594 |
+
events = 'sortReset update updateRows updateAll updateHeaders updateCell addRows updateComplete sorton ' +
|
| 2595 |
+
'appendCache updateCache applyWidgetId applyWidgets refreshWidgets removeWidget destroy mouseup mouseleave ' +
|
| 2596 |
+
'keypress sortBegin sortEnd resetToLoadState '.split( ' ' )
|
| 2597 |
+
.join( c.namespace + ' ' );
|
| 2598 |
+
$t
|
| 2599 |
+
.removeData( 'tablesorter' )
|
| 2600 |
+
.unbind( events.replace( ts.regex.spaces, ' ' ) );
|
| 2601 |
+
c.$headers
|
| 2602 |
+
.add( $f )
|
| 2603 |
+
.removeClass( [ ts.css.header, c.cssHeader, c.cssAsc, c.cssDesc, ts.css.sortAsc, ts.css.sortDesc, ts.css.sortNone ].join( ' ' ) )
|
| 2604 |
+
.removeAttr( 'data-column' )
|
| 2605 |
+
.removeAttr( 'aria-label' )
|
| 2606 |
+
.attr( 'aria-disabled', 'true' );
|
| 2607 |
+
$r
|
| 2608 |
+
.find( c.selectorSort )
|
| 2609 |
+
.unbind( ( 'mousedown mouseup keypress '.split( ' ' ).join( c.namespace + ' ' ) ).replace( ts.regex.spaces, ' ' ) );
|
| 2610 |
+
ts.restoreHeaders( table );
|
| 2611 |
+
$t.toggleClass( ts.css.table + ' ' + c.tableClass + ' tablesorter-' + c.theme, removeClasses === false );
|
| 2612 |
+
$t.removeClass(c.namespace.slice(1));
|
| 2613 |
+
// clear flag in case the plugin is initialized again
|
| 2614 |
+
table.hasInitialized = false;
|
| 2615 |
+
delete table.config.cache;
|
| 2616 |
+
if ( typeof callback === 'function' ) {
|
| 2617 |
+
callback( table );
|
| 2618 |
+
}
|
| 2619 |
+
if ( ts.debug(c, 'core') ) {
|
| 2620 |
+
console.log( 'tablesorter has been removed' );
|
| 2621 |
+
}
|
| 2622 |
+
}
|
| 2623 |
+
|
| 2624 |
+
};
|
| 2625 |
+
|
| 2626 |
+
$.fn.tablesorter = function( settings ) {
|
| 2627 |
+
return this.each( function() {
|
| 2628 |
+
var table = this,
|
| 2629 |
+
// merge & extend config options
|
| 2630 |
+
c = $.extend( true, {}, ts.defaults, settings, ts.instanceMethods );
|
| 2631 |
+
// save initial settings
|
| 2632 |
+
c.originalSettings = settings;
|
| 2633 |
+
// create a table from data (build table widget)
|
| 2634 |
+
if ( !table.hasInitialized && ts.buildTable && this.nodeName !== 'TABLE' ) {
|
| 2635 |
+
// return the table (in case the original target is the table's container)
|
| 2636 |
+
ts.buildTable( table, c );
|
| 2637 |
+
} else {
|
| 2638 |
+
ts.setup( table, c );
|
| 2639 |
+
}
|
| 2640 |
+
});
|
| 2641 |
+
};
|
| 2642 |
+
|
| 2643 |
+
// set up debug logs
|
| 2644 |
+
if ( !( window.console && window.console.log ) ) {
|
| 2645 |
+
// access $.tablesorter.logs for browsers that don't have a console...
|
| 2646 |
+
ts.logs = [];
|
| 2647 |
+
/*jshint -W020 */
|
| 2648 |
+
console = {};
|
| 2649 |
+
console.log = console.warn = console.error = console.table = function() {
|
| 2650 |
+
var arg = arguments.length > 1 ? arguments : arguments[0];
|
| 2651 |
+
ts.logs[ ts.logs.length ] = { date: Date.now(), log: arg };
|
| 2652 |
+
};
|
| 2653 |
+
}
|
| 2654 |
+
|
| 2655 |
+
// add default parsers
|
| 2656 |
+
ts.addParser({
|
| 2657 |
+
id : 'no-parser',
|
| 2658 |
+
is : function() {
|
| 2659 |
+
return false;
|
| 2660 |
+
},
|
| 2661 |
+
format : function() {
|
| 2662 |
+
return '';
|
| 2663 |
+
},
|
| 2664 |
+
type : 'text'
|
| 2665 |
+
});
|
| 2666 |
+
|
| 2667 |
+
ts.addParser({
|
| 2668 |
+
id : 'text',
|
| 2669 |
+
is : function() {
|
| 2670 |
+
return true;
|
| 2671 |
+
},
|
| 2672 |
+
format : function( str, table ) {
|
| 2673 |
+
var c = table.config;
|
| 2674 |
+
if ( str ) {
|
| 2675 |
+
str = $.trim( c.ignoreCase ? str.toLocaleLowerCase() : str );
|
| 2676 |
+
str = c.sortLocaleCompare ? ts.replaceAccents( str ) : str;
|
| 2677 |
+
}
|
| 2678 |
+
return str;
|
| 2679 |
+
},
|
| 2680 |
+
type : 'text'
|
| 2681 |
+
});
|
| 2682 |
+
|
| 2683 |
+
ts.regex.nondigit = /[^\w,. \-()]/g;
|
| 2684 |
+
ts.addParser({
|
| 2685 |
+
id : 'digit',
|
| 2686 |
+
is : function( str ) {
|
| 2687 |
+
return ts.isDigit( str );
|
| 2688 |
+
},
|
| 2689 |
+
format : function( str, table ) {
|
| 2690 |
+
var num = ts.formatFloat( ( str || '' ).replace( ts.regex.nondigit, '' ), table );
|
| 2691 |
+
return str && typeof num === 'number' ? num :
|
| 2692 |
+
str ? $.trim( str && table.config.ignoreCase ? str.toLocaleLowerCase() : str ) : str;
|
| 2693 |
+
},
|
| 2694 |
+
type : 'numeric'
|
| 2695 |
+
});
|
| 2696 |
+
|
| 2697 |
+
ts.regex.currencyReplace = /[+\-,. ]/g;
|
| 2698 |
+
ts.regex.currencyTest = /^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/;
|
| 2699 |
+
ts.addParser({
|
| 2700 |
+
id : 'currency',
|
| 2701 |
+
is : function( str ) {
|
| 2702 |
+
str = ( str || '' ).replace( ts.regex.currencyReplace, '' );
|
| 2703 |
+
// test for £$€¤¥¢
|
| 2704 |
+
return ts.regex.currencyTest.test( str );
|
| 2705 |
+
},
|
| 2706 |
+
format : function( str, table ) {
|
| 2707 |
+
var num = ts.formatFloat( ( str || '' ).replace( ts.regex.nondigit, '' ), table );
|
| 2708 |
+
return str && typeof num === 'number' ? num :
|
| 2709 |
+
str ? $.trim( str && table.config.ignoreCase ? str.toLocaleLowerCase() : str ) : str;
|
| 2710 |
+
},
|
| 2711 |
+
type : 'numeric'
|
| 2712 |
+
});
|
| 2713 |
+
|
| 2714 |
+
// too many protocols to add them all https://en.wikipedia.org/wiki/URI_scheme
|
| 2715 |
+
// now, this regex can be updated before initialization
|
| 2716 |
+
ts.regex.urlProtocolTest = /^(https?|ftp|file):\/\//;
|
| 2717 |
+
ts.regex.urlProtocolReplace = /(https?|ftp|file):\/\/(www\.)?/;
|
| 2718 |
+
ts.addParser({
|
| 2719 |
+
id : 'url',
|
| 2720 |
+
is : function( str ) {
|
| 2721 |
+
return ts.regex.urlProtocolTest.test( str );
|
| 2722 |
+
},
|
| 2723 |
+
format : function( str ) {
|
| 2724 |
+
return str ? $.trim( str.replace( ts.regex.urlProtocolReplace, '' ) ) : str;
|
| 2725 |
+
},
|
| 2726 |
+
type : 'text'
|
| 2727 |
+
});
|
| 2728 |
+
|
| 2729 |
+
ts.regex.dash = /-/g;
|
| 2730 |
+
ts.regex.isoDate = /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/;
|
| 2731 |
+
ts.addParser({
|
| 2732 |
+
id : 'isoDate',
|
| 2733 |
+
is : function( str ) {
|
| 2734 |
+
return ts.regex.isoDate.test( str );
|
| 2735 |
+
},
|
| 2736 |
+
format : function( str ) {
|
| 2737 |
+
var date = str ? new Date( str.replace( ts.regex.dash, '/' ) ) : str;
|
| 2738 |
+
return date instanceof Date && isFinite( date ) ? date.getTime() : str;
|
| 2739 |
+
},
|
| 2740 |
+
type : 'numeric'
|
| 2741 |
+
});
|
| 2742 |
+
|
| 2743 |
+
ts.regex.percent = /%/g;
|
| 2744 |
+
ts.regex.percentTest = /(\d\s*?%|%\s*?\d)/;
|
| 2745 |
+
ts.addParser({
|
| 2746 |
+
id : 'percent',
|
| 2747 |
+
is : function( str ) {
|
| 2748 |
+
return ts.regex.percentTest.test( str ) && str.length < 15;
|
| 2749 |
+
},
|
| 2750 |
+
format : function( str, table ) {
|
| 2751 |
+
return str ? ts.formatFloat( str.replace( ts.regex.percent, '' ), table ) : str;
|
| 2752 |
+
},
|
| 2753 |
+
type : 'numeric'
|
| 2754 |
+
});
|
| 2755 |
+
|
| 2756 |
+
// added image parser to core v2.17.9
|
| 2757 |
+
ts.addParser({
|
| 2758 |
+
id : 'image',
|
| 2759 |
+
is : function( str, table, node, $node ) {
|
| 2760 |
+
return $node.find( 'img' ).length > 0;
|
| 2761 |
+
},
|
| 2762 |
+
format : function( str, table, cell ) {
|
| 2763 |
+
return $( cell ).find( 'img' ).attr( table.config.imgAttr || 'alt' ) || str;
|
| 2764 |
+
},
|
| 2765 |
+
parsed : true, // filter widget flag
|
| 2766 |
+
type : 'text'
|
| 2767 |
+
});
|
| 2768 |
+
|
| 2769 |
+
ts.regex.dateReplace = /(\S)([AP]M)$/i; // used by usLongDate & time parser
|
| 2770 |
+
ts.regex.usLongDateTest1 = /^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i;
|
| 2771 |
+
ts.regex.usLongDateTest2 = /^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i;
|
| 2772 |
+
ts.addParser({
|
| 2773 |
+
id : 'usLongDate',
|
| 2774 |
+
is : function( str ) {
|
| 2775 |
+
// two digit years are not allowed cross-browser
|
| 2776 |
+
// Jan 01, 2013 12:34:56 PM or 01 Jan 2013
|
| 2777 |
+
return ts.regex.usLongDateTest1.test( str ) || ts.regex.usLongDateTest2.test( str );
|
| 2778 |
+
},
|
| 2779 |
+
format : function( str ) {
|
| 2780 |
+
var date = str ? new Date( str.replace( ts.regex.dateReplace, '$1 $2' ) ) : str;
|
| 2781 |
+
return date instanceof Date && isFinite( date ) ? date.getTime() : str;
|
| 2782 |
+
},
|
| 2783 |
+
type : 'numeric'
|
| 2784 |
+
});
|
| 2785 |
+
|
| 2786 |
+
// testing for ##-##-#### or ####-##-##, so it's not perfect; time can be included
|
| 2787 |
+
ts.regex.shortDateTest = /(^\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4})|(^\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2})/;
|
| 2788 |
+
// escaped "-" because JSHint in Firefox was showing it as an error
|
| 2789 |
+
ts.regex.shortDateReplace = /[\-.,]/g;
|
| 2790 |
+
// XXY covers MDY & DMY formats
|
| 2791 |
+
ts.regex.shortDateXXY = /(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/;
|
| 2792 |
+
ts.regex.shortDateYMD = /(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/;
|
| 2793 |
+
ts.convertFormat = function( dateString, format ) {
|
| 2794 |
+
dateString = ( dateString || '' )
|
| 2795 |
+
.replace( ts.regex.spaces, ' ' )
|
| 2796 |
+
.replace( ts.regex.shortDateReplace, '/' );
|
| 2797 |
+
if ( format === 'mmddyyyy' ) {
|
| 2798 |
+
dateString = dateString.replace( ts.regex.shortDateXXY, '$3/$1/$2' );
|
| 2799 |
+
} else if ( format === 'ddmmyyyy' ) {
|
| 2800 |
+
dateString = dateString.replace( ts.regex.shortDateXXY, '$3/$2/$1' );
|
| 2801 |
+
} else if ( format === 'yyyymmdd' ) {
|
| 2802 |
+
dateString = dateString.replace( ts.regex.shortDateYMD, '$1/$2/$3' );
|
| 2803 |
+
}
|
| 2804 |
+
var date = new Date( dateString );
|
| 2805 |
+
return date instanceof Date && isFinite( date ) ? date.getTime() : '';
|
| 2806 |
+
};
|
| 2807 |
+
|
| 2808 |
+
ts.addParser({
|
| 2809 |
+
id : 'shortDate', // 'mmddyyyy', 'ddmmyyyy' or 'yyyymmdd'
|
| 2810 |
+
is : function( str ) {
|
| 2811 |
+
str = ( str || '' ).replace( ts.regex.spaces, ' ' ).replace( ts.regex.shortDateReplace, '/' );
|
| 2812 |
+
return ts.regex.shortDateTest.test( str );
|
| 2813 |
+
},
|
| 2814 |
+
format : function( str, table, cell, cellIndex ) {
|
| 2815 |
+
if ( str ) {
|
| 2816 |
+
var c = table.config,
|
| 2817 |
+
$header = c.$headerIndexed[ cellIndex ],
|
| 2818 |
+
format = $header.length && $header.data( 'dateFormat' ) ||
|
| 2819 |
+
ts.getData( $header, ts.getColumnData( table, c.headers, cellIndex ), 'dateFormat' ) ||
|
| 2820 |
+
c.dateFormat;
|
| 2821 |
+
// save format because getData can be slow...
|
| 2822 |
+
if ( $header.length ) {
|
| 2823 |
+
$header.data( 'dateFormat', format );
|
| 2824 |
+
}
|
| 2825 |
+
return ts.convertFormat( str, format ) || str;
|
| 2826 |
+
}
|
| 2827 |
+
return str;
|
| 2828 |
+
},
|
| 2829 |
+
type : 'numeric'
|
| 2830 |
+
});
|
| 2831 |
+
|
| 2832 |
+
// match 24 hour time & 12 hours time + am/pm - see http://regexr.com/3c3tk
|
| 2833 |
+
ts.regex.timeTest = /^(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)$|^((?:[01]\d|[2][0-4]):[0-5]\d)$/i;
|
| 2834 |
+
ts.regex.timeMatch = /(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)|((?:[01]\d|[2][0-4]):[0-5]\d)/i;
|
| 2835 |
+
ts.addParser({
|
| 2836 |
+
id : 'time',
|
| 2837 |
+
is : function( str ) {
|
| 2838 |
+
return ts.regex.timeTest.test( str );
|
| 2839 |
+
},
|
| 2840 |
+
format : function( str ) {
|
| 2841 |
+
// isolate time... ignore month, day and year
|
| 2842 |
+
var temp,
|
| 2843 |
+
timePart = ( str || '' ).match( ts.regex.timeMatch ),
|
| 2844 |
+
orig = new Date( str ),
|
| 2845 |
+
// no time component? default to 00:00 by leaving it out, but only if str is defined
|
| 2846 |
+
time = str && ( timePart !== null ? timePart[ 0 ] : '00:00 AM' ),
|
| 2847 |
+
date = time ? new Date( '2000/01/01 ' + time.replace( ts.regex.dateReplace, '$1 $2' ) ) : time;
|
| 2848 |
+
if ( date instanceof Date && isFinite( date ) ) {
|
| 2849 |
+
temp = orig instanceof Date && isFinite( orig ) ? orig.getTime() : 0;
|
| 2850 |
+
// if original string was a valid date, add it to the decimal so the column sorts in some kind of order
|
| 2851 |
+
// luckily new Date() ignores the decimals
|
| 2852 |
+
return temp ? parseFloat( date.getTime() + '.' + orig.getTime() ) : date.getTime();
|
| 2853 |
+
}
|
| 2854 |
+
return str;
|
| 2855 |
+
},
|
| 2856 |
+
type : 'numeric'
|
| 2857 |
+
});
|
| 2858 |
+
|
| 2859 |
+
ts.addParser({
|
| 2860 |
+
id : 'metadata',
|
| 2861 |
+
is : function() {
|
| 2862 |
+
return false;
|
| 2863 |
+
},
|
| 2864 |
+
format : function( str, table, cell ) {
|
| 2865 |
+
var c = table.config,
|
| 2866 |
+
p = ( !c.parserMetadataName ) ? 'sortValue' : c.parserMetadataName;
|
| 2867 |
+
return $( cell ).metadata()[ p ];
|
| 2868 |
+
},
|
| 2869 |
+
type : 'numeric'
|
| 2870 |
+
});
|
| 2871 |
+
|
| 2872 |
+
/*
|
| 2873 |
+
██████ ██████ █████▄ █████▄ ▄████▄
|
| 2874 |
+
▄█▀ ██▄▄ ██▄▄██ ██▄▄██ ██▄▄██
|
| 2875 |
+
▄█▀ ██▀▀ ██▀▀██ ██▀▀█ ██▀▀██
|
| 2876 |
+
██████ ██████ █████▀ ██ ██ ██ ██
|
| 2877 |
+
*/
|
| 2878 |
+
// add default widgets
|
| 2879 |
+
ts.addWidget({
|
| 2880 |
+
id : 'zebra',
|
| 2881 |
+
priority : 90,
|
| 2882 |
+
format : function( table, c, wo ) {
|
| 2883 |
+
var $visibleRows, $row, count, isEven, tbodyIndex, rowIndex, len,
|
| 2884 |
+
child = new RegExp( c.cssChildRow, 'i' ),
|
| 2885 |
+
$tbodies = c.$tbodies.add( $( c.namespace + '_extra_table' ).children( 'tbody:not(.' + c.cssInfoBlock + ')' ) );
|
| 2886 |
+
for ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
|
| 2887 |
+
// loop through the visible rows
|
| 2888 |
+
count = 0;
|
| 2889 |
+
$visibleRows = $tbodies.eq( tbodyIndex ).children( 'tr:visible' ).not( c.selectorRemove );
|
| 2890 |
+
len = $visibleRows.length;
|
| 2891 |
+
for ( rowIndex = 0; rowIndex < len; rowIndex++ ) {
|
| 2892 |
+
$row = $visibleRows.eq( rowIndex );
|
| 2893 |
+
// style child rows the same way the parent row was styled
|
| 2894 |
+
if ( !child.test( $row[ 0 ].className ) ) { count++; }
|
| 2895 |
+
isEven = ( count % 2 === 0 );
|
| 2896 |
+
$row
|
| 2897 |
+
.removeClass( wo.zebra[ isEven ? 1 : 0 ] )
|
| 2898 |
+
.addClass( wo.zebra[ isEven ? 0 : 1 ] );
|
| 2899 |
+
}
|
| 2900 |
+
}
|
| 2901 |
+
},
|
| 2902 |
+
remove : function( table, c, wo, refreshing ) {
|
| 2903 |
+
if ( refreshing ) { return; }
|
| 2904 |
+
var tbodyIndex, $tbody,
|
| 2905 |
+
$tbodies = c.$tbodies,
|
| 2906 |
+
toRemove = ( wo.zebra || [ 'even', 'odd' ] ).join( ' ' );
|
| 2907 |
+
for ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
|
| 2908 |
+
$tbody = ts.processTbody( table, $tbodies.eq( tbodyIndex ), true ); // remove tbody
|
| 2909 |
+
$tbody.children().removeClass( toRemove );
|
| 2910 |
+
ts.processTbody( table, $tbody, false ); // restore tbody
|
| 2911 |
+
}
|
| 2912 |
+
}
|
| 2913 |
+
});
|
| 2914 |
+
|
| 2915 |
+
})( jQuery );
|
| 2916 |
return jQuery.tablesorter;}));
|
js/tablesorter/jquery.tablesorter.min.js
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&"object"==typeof module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(e){return function(A){"use strict";var L=A.tablesorter={version:"2.31.2",parsers:[],widgets:[],defaults:{theme:"default",widthFixed:!1,showProcessing:!1,headerTemplate:"{content}",onRenderTemplate:null,onRenderHeader:null,cancelSelection:!0,tabIndex:!0,dateFormat:"mmddyyyy",sortMultiSortKey:"shiftKey",sortResetKey:"ctrlKey",usNumberFormat:!0,delayInit:!1,serverSideSorting:!1,resort:!0,headers:{},ignoreCase:!0,sortForce:null,sortList:[],sortAppend:null,sortStable:!1,sortInitialOrder:"asc",sortLocaleCompare:!1,sortReset:!1,sortRestart:!1,emptyTo:"bottom",stringTo:"max",duplicateSpan:!0,textExtraction:"basic",textAttribute:"data-text",textSorter:null,numberSorter:null,initWidgets:!0,widgetClass:"widget-{name}",widgets:[],widgetOptions:{zebra:["even","odd"]},initialized:null,tableClass:"",cssAsc:"",cssDesc:"",cssNone:"",cssHeader:"",cssHeaderRow:"",cssProcessing:"",cssChildRow:"tablesorter-childRow",cssInfoBlock:"tablesorter-infoOnly",cssNoSort:"tablesorter-noSort",cssIgnoreRow:"tablesorter-ignoreRow",cssIcon:"tablesorter-icon",cssIconNone:"",cssIconAsc:"",cssIconDesc:"",cssIconDisabled:"",pointerClick:"click",pointerDown:"mousedown",pointerUp:"mouseup",selectorHeaders:"> thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1,headerList:[],empties:{},strings:{},parsers:[],globalize:0,imgAttr:0},css:{table:"tablesorter",cssHasChild:"tablesorter-hasChildRow",childRow:"tablesorter-childRow",colgroup:"tablesorter-colgroup",header:"tablesorter-header",headerRow:"tablesorter-headerRow",headerIn:"tablesorter-header-inner",icon:"tablesorter-icon",processing:"tablesorter-processing",sortAsc:"tablesorter-headerAsc",sortDesc:"tablesorter-headerDesc",sortNone:"tablesorter-headerUnSorted"},language:{sortAsc:"Ascending sort applied, ",sortDesc:"Descending sort applied, ",sortNone:"No sort applied, ",sortDisabled:"sorting is disabled",nextAsc:"activate to apply an ascending sort",nextDesc:"activate to apply a descending sort",nextNone:"activate to remove the sort"},regex:{templateContent:/\{content\}/g,templateIcon:/\{icon\}/g,templateName:/\{name\}/i,spaces:/\s+/g,nonWord:/\W/g,formElements:/(input|select|button|textarea)/i,chunk:/(^([+\-]?(?:\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,chunks:/(^\\0|\\0$)/,hex:/^0x[0-9a-f]+$/i,comma:/,/g,digitNonUS:/[\s|\.]/g,digitNegativeTest:/^\s*\([.\d]+\)/,digitNegativeReplace:/^\s*\(([.\d]+)\)/,digitTest:/^[\-+(]?\d+[)]?$/,digitReplace:/[,.'"\s]/g},string:{max:1,min:-1,emptymin:1,emptymax:-1,zero:0,none:0,"null":0,top:!0,bottom:!1},keyCodes:{enter:13},dates:{},instanceMethods:{},setup:function(t,r){if(t&&t.tHead&&0!==t.tBodies.length&&!0!==t.hasInitialized){var e,o="",s=A(t),a=A.metadata;t.hasInitialized=!1,t.isProcessing=!0,t.config=r,A.data(t,"tablesorter",r),L.debug(r,"core")&&(console[console.group?"group":"log"]("Initializing tablesorter v"+L.version),A.data(t,"startoveralltimer",new Date)),r.supportsDataObject=((e=A.fn.jquery.split("."))[0]=parseInt(e[0],10),1<e[0]||1===e[0]&&4<=parseInt(e[1],10)),r.emptyTo=r.emptyTo.toLowerCase(),r.stringTo=r.stringTo.toLowerCase(),r.last={sortList:[],clickedIndex:-1},/tablesorter\-/.test(s.attr("class"))||(o=""!==r.theme?" tablesorter-"+r.theme:""),r.namespace?r.namespace="."+r.namespace.replace(L.regex.nonWord,""):r.namespace=".tablesorter"+Math.random().toString(16).slice(2),r.table=t,r.$table=s.addClass(L.css.table+" "+r.tableClass+o+" "+r.namespace.slice(1)).attr("role","grid"),r.$headers=s.find(r.selectorHeaders),r.$table.children().children("tr").attr("role","row"),r.$tbodies=s.children("tbody:not(."+r.cssInfoBlock+")").attr({"aria-live":"polite","aria-relevant":"all"}),r.$table.children("caption").length&&((o=r.$table.children("caption")[0]).id||(o.id=r.namespace.slice(1)+"caption"),r.$table.attr("aria-labelledby",o.id)),r.widgetInit={},r.textExtraction=r.$table.attr("data-text-extraction")||r.textExtraction||"basic",L.buildHeaders(r),L.fixColumnWidth(t),L.addWidgetFromClass(t),L.applyWidgetOptions(t),L.setupParsers(r),r.totalRows=0,r.debug&&L.validateOptions(r),r.delayInit||L.buildCache(r),L.bindEvents(t,r.$headers,!0),L.bindMethods(r),r.supportsDataObject&&void 0!==s.data().sortlist?r.sortList=s.data().sortlist:a&&s.metadata()&&s.metadata().sortlist&&(r.sortList=s.metadata().sortlist),L.applyWidget(t,!0),0<r.sortList.length?(r.last.sortList=r.sortList,L.sortOn(r,r.sortList,{},!r.initWidgets)):(L.setHeadersCss(r),r.initWidgets&&L.applyWidget(t,!1)),r.showProcessing&&s.unbind("sortBegin"+r.namespace+" sortEnd"+r.namespace).bind("sortBegin"+r.namespace+" sortEnd"+r.namespace,function(e){clearTimeout(r.timerProcessing),L.isProcessing(t),"sortBegin"===e.type&&(r.timerProcessing=setTimeout(function(){L.isProcessing(t,!0)},500))}),t.hasInitialized=!0,t.isProcessing=!1,L.debug(r,"core")&&(console.log("Overall initialization time:"+L.benchmark(A.data(t,"startoveralltimer"))),L.debug(r,"core")&&console.groupEnd&&console.groupEnd()),s.triggerHandler("tablesorter-initialized",t),"function"==typeof r.initialized&&r.initialized(t)}else L.debug(r,"core")&&(t.hasInitialized?console.warn("Stopping initialization. Tablesorter has already been initialized"):console.error("Stopping initialization! No table, thead or tbody",t))},bindMethods:function(r){var e=r.$table,t=r.namespace,o="sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave ".split(" ").join(t+" ");e.unbind(o.replace(L.regex.spaces," ")).bind("sortReset"+t,function(e,t){e.stopPropagation(),L.sortReset(this.config,function(e){e.isApplyingWidgets?setTimeout(function(){L.applyWidget(e,"",t)},100):L.applyWidget(e,"",t)})}).bind("updateAll"+t,function(e,t,r){e.stopPropagation(),L.updateAll(this.config,t,r)}).bind("update"+t+" updateRows"+t,function(e,t,r){e.stopPropagation(),L.update(this.config,t,r)}).bind("updateHeaders"+t,function(e,t){e.stopPropagation(),L.updateHeaders(this.config,t)}).bind("updateCell"+t,function(e,t,r,o){e.stopPropagation(),L.updateCell(this.config,t,r,o)}).bind("addRows"+t,function(e,t,r,o){e.stopPropagation(),L.addRows(this.config,t,r,o)}).bind("updateComplete"+t,function(){this.isUpdating=!1}).bind("sorton"+t,function(e,t,r,o){e.stopPropagation(),L.sortOn(this.config,t,r,o)}).bind("appendCache"+t,function(e,t,r){e.stopPropagation(),L.appendCache(this.config,r),A.isFunction(t)&&t(this)}).bind("updateCache"+t,function(e,t,r){e.stopPropagation(),L.updateCache(this.config,t,r)}).bind("applyWidgetId"+t,function(e,t){e.stopPropagation(),L.applyWidgetId(this,t)}).bind("applyWidgets"+t,function(e,t){e.stopPropagation(),L.applyWidget(this,!1,t)}).bind("refreshWidgets"+t,function(e,t,r){e.stopPropagation(),L.refreshWidgets(this,t,r)}).bind("removeWidget"+t,function(e,t,r){e.stopPropagation(),L.removeWidget(this,t,r)}).bind("destroy"+t,function(e,t,r){e.stopPropagation(),L.destroy(this,t,r)}).bind("resetToLoadState"+t,function(e){e.stopPropagation(),L.removeWidget(this,!0,!1);var t=A.extend(!0,{},r.originalSettings);(r=A.extend(!0,{},L.defaults,t)).originalSettings=t,this.hasInitialized=!1,L.setup(this,r)})},bindEvents:function(e,t,r){var o,i=(e=A(e)[0]).config,s=i.namespace,d=null;!0!==r&&(t.addClass(s.slice(1)+"_extra_headers"),(o=L.getClosest(t,"table")).length&&"TABLE"===o[0].nodeName&&o[0]!==e&&A(o[0]).addClass(s.slice(1)+"_extra_table")),o=(i.pointerDown+" "+i.pointerUp+" "+i.pointerClick+" sort keyup ").replace(L.regex.spaces," ").split(" ").join(s+" "),t.find(i.selectorSort).add(t.filter(i.selectorSort)).unbind(o).bind(o,function(e,t){var r,o,s,a=A(e.target),n=" "+e.type+" ";if(!(1!==(e.which||e.button)&&!n.match(" "+i.pointerClick+" | sort | keyup ")||" keyup "===n&&e.which!==L.keyCodes.enter||n.match(" "+i.pointerClick+" ")&&void 0!==e.which||n.match(" "+i.pointerUp+" ")&&d!==e.target&&!0!==t)){if(n.match(" "+i.pointerDown+" "))return d=e.target,void("1"===(s=a.jquery.split("."))[0]&&s[1]<4&&e.preventDefault());if(d=null,r=L.getClosest(A(this),"."+L.css.header),L.regex.formElements.test(e.target.nodeName)||a.hasClass(i.cssNoSort)||0<a.parents("."+i.cssNoSort).length||r.hasClass("sorter-false")||0<a.parents("button").length)return!i.cancelSelection;i.delayInit&&L.isEmptyObject(i.cache)&&L.buildCache(i),i.last.clickedIndex=r.attr("data-column")||r.index(),(o=i.$headerIndexed[i.last.clickedIndex][0])&&!o.sortDisabled&&L.initSort(i,o,e)}}),i.cancelSelection&&t.attr("unselectable","on").bind("selectstart",!1).css({"user-select":"none",MozUserSelect:"none"})},buildHeaders:function(d){var e,l,t,r;for(d.headerList=[],d.headerContent=[],d.sortVars=[],L.debug(d,"core")&&(t=new Date),d.columns=L.computeColumnIndex(d.$table.children("thead, tfoot").children("tr")),l=d.cssIcon?'<i class="'+(d.cssIcon===L.css.icon?L.css.icon:d.cssIcon+" "+L.css.icon)+'"></i>':"",d.$headers=A(A.map(d.$table.find(d.selectorHeaders),function(e,t){var r,o,s,a,n,i=A(e);if(!L.getClosest(i,"tr").hasClass(d.cssIgnoreRow))return/(th|td)/i.test(e.nodeName)||(n=L.getClosest(i,"th, td"),i.attr("data-column",n.attr("data-column"))),r=L.getColumnData(d.table,d.headers,t,!0),d.headerContent[t]=i.html(),""===d.headerTemplate||i.find("."+L.css.headerIn).length||(a=d.headerTemplate.replace(L.regex.templateContent,i.html()).replace(L.regex.templateIcon,i.find("."+L.css.icon).length?"":l),d.onRenderTemplate&&(o=d.onRenderTemplate.apply(i,[t,a]))&&"string"==typeof o&&(a=o),i.html('<div class="'+L.css.headerIn+'">'+a+"</div>")),d.onRenderHeader&&d.onRenderHeader.apply(i,[t,d,d.$table]),s=parseInt(i.attr("data-column"),10),e.column=s,n=L.getOrder(L.getData(i,r,"sortInitialOrder")||d.sortInitialOrder),d.sortVars[s]={count:-1,order:n?d.sortReset?[1,0,2]:[1,0]:d.sortReset?[0,1,2]:[0,1],lockedOrder:!1,sortedBy:""},void 0!==(n=L.getData(i,r,"lockedOrder")||!1)&&!1!==n&&(d.sortVars[s].lockedOrder=!0,d.sortVars[s].order=L.getOrder(n)?[1,1]:[0,0]),d.headerList[t]=e,i.addClass(L.css.header+" "+d.cssHeader),L.getClosest(i,"tr").addClass(L.css.headerRow+" "+d.cssHeaderRow).attr("role","row"),d.tabIndex&&i.attr("tabindex",0),e})),d.$headerIndexed=[],r=0;r<d.columns;r++)L.isEmptyObject(d.sortVars[r])&&(d.sortVars[r]={}),e=d.$headers.filter('[data-column="'+r+'"]'),d.$headerIndexed[r]=e.length?e.not(".sorter-false").length?e.not(".sorter-false").filter(":last"):e.filter(":last"):A();d.$table.find(d.selectorHeaders).attr({scope:"col",role:"columnheader"}),L.updateHeader(d),L.debug(d,"core")&&(console.log("Built headers:"+L.benchmark(t)),console.log(d.$headers))},addInstanceMethods:function(e){A.extend(L.instanceMethods,e)},setupParsers:function(e,t){var r,o,s,a,n,i,d,l,c,g,p,u,f,h,m=e.table,b=0,y=L.debug(e,"core"),w={};if(e.$tbodies=e.$table.children("tbody:not(."+e.cssInfoBlock+")"),0===(h=(f=void 0===t?e.$tbodies:t).length))return y?console.warn("Warning: *Empty table!* Not building a parser cache"):"";for(y&&(u=new Date,console[console.group?"group":"log"]("Detecting parsers for each column")),o={extractors:[],parsers:[]};b<h;){if((r=f[b].rows).length)for(n=0,a=e.columns,i=0;i<a;i++){if((d=e.$headerIndexed[n])&&d.length&&(l=L.getColumnData(m,e.headers,n),p=L.getParserById(L.getData(d,l,"extractor")),g=L.getParserById(L.getData(d,l,"sorter")),c="false"===L.getData(d,l,"parser"),e.empties[n]=(L.getData(d,l,"empty")||e.emptyTo||(e.emptyToBottom?"bottom":"top")).toLowerCase(),e.strings[n]=(L.getData(d,l,"string")||e.stringTo||"max").toLowerCase(),c&&(g=L.getParserById("no-parser")),p=p||!1,g=g||L.detectParserForColumn(e,r,-1,n),y&&(w["("+n+") "+d.text()]={parser:g.id,extractor:p?p.id:"none",string:e.strings[n],empty:e.empties[n]}),o.parsers[n]=g,o.extractors[n]=p,0<(s=d[0].colSpan-1)))for(n+=s,a+=s;0<s+1;)o.parsers[n-s]=g,o.extractors[n-s]=p,s--;n++}b+=o.parsers.length?h:1}y&&(L.isEmptyObject(w)?console.warn(" No parsers detected!"):console[console.table?"table":"log"](w),console.log("Completed detecting parsers"+L.benchmark(u)),console.groupEnd&&console.groupEnd()),e.parsers=o.parsers,e.extractors=o.extractors},addParser:function(e){var t,r=L.parsers.length,o=!0;for(t=0;t<r;t++)L.parsers[t].id.toLowerCase()===e.id.toLowerCase()&&(o=!1);o&&(L.parsers[L.parsers.length]=e)},getParserById:function(e){if("false"==e)return!1;var t,r=L.parsers.length;for(t=0;t<r;t++)if(L.parsers[t].id.toLowerCase()===e.toString().toLowerCase())return L.parsers[t];return!1},detectParserForColumn:function(e,t,r,o){for(var s,a,n,i=L.parsers.length,d=!1,l="",c=L.debug(e,"core"),g=!0;""===l&&g;)(n=t[++r])&&r<50?n.className.indexOf(L.cssIgnoreRow)<0&&(d=t[r].cells[o],l=L.getElementText(e,d,o),a=A(d),c&&console.log("Checking if value was empty on row "+r+", column: "+o+': "'+l+'"')):g=!1;for(;0<=--i;)if((s=L.parsers[i])&&"text"!==s.id&&s.is&&s.is(l,e.table,d,a))return s;return L.getParserById("text")},getElementText:function(e,t,r){if(!t)return"";var o,s=e.textExtraction||"",a=t.jquery?t:A(t);return"string"==typeof s?"basic"===s&&void 0!==(o=a.attr(e.textAttribute))?A.trim(o):A.trim(t.textContent||a.text()):"function"==typeof s?A.trim(s(a[0],e.table,r)):"function"==typeof(o=L.getColumnData(e.table,s,r))?A.trim(o(a[0],e.table,r)):A.trim(a[0].textContent||a.text())},getParsedText:function(e,t,r,o){void 0===o&&(o=L.getElementText(e,t,r));var s=""+o,a=e.parsers[r],n=e.extractors[r];return a&&(n&&"function"==typeof n.format&&(o=n.format(o,e.table,t,r)),s="no-parser"===a.id?"":a.format(""+o,e.table,t,r),e.ignoreCase&&"string"==typeof s&&(s=s.toLowerCase())),s},buildCache:function(e,t,r){var o,s,a,n,i,d,l,c,g,p,u,f,h,m,b,y,w,x,v,C,$,I,D=e.table,R=e.parsers,T=L.debug(e,"core");if(e.$tbodies=e.$table.children("tbody:not(."+e.cssInfoBlock+")"),l=void 0===r?e.$tbodies:r,e.cache={},e.totalRows=0,!R)return T?console.warn("Warning: *Empty table!* Not building a cache"):"";for(T&&(f=new Date),e.showProcessing&&L.isProcessing(D,!0),d=0;d<l.length;d++){for(y=[],o=e.cache[d]={normalized:[]},h=l[d]&&l[d].rows.length||0,n=0;n<h;++n)if(m={child:[],raw:[]},g=[],!(c=A(l[d].rows[n])).hasClass(e.selectorRemove.slice(1)))if(c.hasClass(e.cssChildRow)&&0!==n)for($=o.normalized.length-1,(b=o.normalized[$][e.columns]).$row=b.$row.add(c),c.prev().hasClass(e.cssChildRow)||c.prev().addClass(L.css.cssHasChild),p=c.children("th, td"),$=b.child.length,b.child[$]=[],x=0,C=e.columns,i=0;i<C;i++)(u=p[i])&&(b.child[$][i]=L.getParsedText(e,u,i),0<(w=p[i].colSpan-1)&&(x+=w,C+=w)),x++;else{for(m.$row=c,m.order=n,x=0,C=e.columns,i=0;i<C;++i){if((u=c[0].cells[i])&&x<e.columns&&(!(v=void 0!==R[x])&&T&&console.warn("No parser found for row: "+n+", column: "+i+'; cell containing: "'+A(u).text()+'"; does it have a header?'),s=L.getElementText(e,u,x),m.raw[x]=s,a=L.getParsedText(e,u,x,s),g[x]=a,v&&"numeric"===(R[x].type||"").toLowerCase()&&(y[x]=Math.max(Math.abs(a)||0,y[x]||0)),0<(w=u.colSpan-1))){for(I=0;I<=w;)a=e.duplicateSpan||0===I?s:"string"!=typeof e.textExtraction&&L.getElementText(e,u,x+I)||"",m.raw[x+I]=a,g[x+I]=a,I++;x+=w,C+=w}x++}g[e.columns]=m,o.normalized[o.normalized.length]=g}o.colMax=y,e.totalRows+=o.normalized.length}if(e.showProcessing&&L.isProcessing(D),T){for($=Math.min(5,e.cache[0].normalized.length),console[console.group?"group":"log"]("Building cache for "+e.totalRows+" rows (showing "+$+" rows in log) and "+e.columns+" columns"+L.benchmark(f)),s={},i=0;i<e.columns;i++)for(x=0;x<$;x++)s["row: "+x]||(s["row: "+x]={}),s["row: "+x][e.$headerIndexed[i].text()]=e.cache[0].normalized[x][i];console[console.table?"table":"log"](s),console.groupEnd&&console.groupEnd()}A.isFunction(t)&&t(D)},getColumnText:function(e,t,r,o){var s,a,n,i,d,l,c,g,p,u,f="function"==typeof r,h="all"===t,m={raw:[],parsed:[],$cell:[]},b=(e=A(e)[0]).config;if(!L.isEmptyObject(b)){for(d=b.$tbodies.length,s=0;s<d;s++)for(l=(n=b.cache[s].normalized).length,a=0;a<l;a++)i=n[a],o&&!i[b.columns].$row.is(o)||(u=!0,g=h?i.slice(0,b.columns):i[t],i=i[b.columns],c=h?i.raw:i.raw[t],p=h?i.$row.children():i.$row.children().eq(t),f&&(u=r({tbodyIndex:s,rowIndex:a,parsed:g,raw:c,$row:i.$row,$cell:p})),!1!==u&&(m.parsed[m.parsed.length]=g,m.raw[m.raw.length]=c,m.$cell[m.$cell.length]=p));return m}L.debug(b,"core")&&console.warn("No cache found - aborting getColumnText function!")},setHeadersCss:function(a){function e(e,t){e.removeClass(n).addClass(i[t]).attr("aria-sort",l[t]).find("."+L.css.icon).removeClass(d[2]).addClass(d[t])}var t,r,o=a.sortList,s=o.length,n=L.css.sortNone+" "+a.cssNone,i=[L.css.sortAsc+" "+a.cssAsc,L.css.sortDesc+" "+a.cssDesc],d=[a.cssIconAsc,a.cssIconDesc,a.cssIconNone],l=["ascending","descending"],c=a.$table.find("tfoot tr").children("td, th").add(A(a.namespace+"_extra_headers")).removeClass(i.join(" ")),g=a.$headers.add(A("thead "+a.namespace+"_extra_headers")).removeClass(i.join(" ")).addClass(n).attr("aria-sort","none").find("."+L.css.icon).removeClass(d.join(" ")).end();for(g.not(".sorter-false").find("."+L.css.icon).addClass(d[2]),a.cssIconDisabled&&g.filter(".sorter-false").find("."+L.css.icon).addClass(a.cssIconDisabled),t=0;t<s;t++)if(2!==o[t][1]){if((g=(g=a.$headers.filter(function(e){for(var t=!0,r=a.$headers.eq(e),o=parseInt(r.attr("data-column"),10),s=o+L.getClosest(r,"th, td")[0].colSpan;o<s;o++)t=!!t&&(t||-1<L.isValueInArray(o,a.sortList));return t})).not(".sorter-false").filter('[data-column="'+o[t][0]+'"]'+(1===s?":last":""))).length)for(r=0;r<g.length;r++)g[r].sortDisabled||e(g.eq(r),o[t][1]);c.length&&e(c.filter('[data-column="'+o[t][0]+'"]'),o[t][1])}for(s=a.$headers.length,t=0;t<s;t++)L.setColumnAriaLabel(a,a.$headers.eq(t))},getClosest:function(e,t){return A.fn.closest?e.closest(t):e.is(t)?e:e.parents(t).filter(":first")},setColumnAriaLabel:function(e,t,r){if(t.length){var o=parseInt(t.attr("data-column"),10),s=e.sortVars[o],a=t.hasClass(L.css.sortAsc)?"sortAsc":t.hasClass(L.css.sortDesc)?"sortDesc":"sortNone",n=A.trim(t.text())+": "+L.language[a];t.hasClass("sorter-false")||!1===r?n+=L.language.sortDisabled:(a=(s.count+1)%s.order.length,r=s.order[a],n+=L.language[0===r?"nextAsc":1===r?"nextDesc":"nextNone"]),t.attr("aria-label",n),s.sortedBy?t.attr("data-sortedBy",s.sortedBy):t.removeAttr("data-sortedBy")}},updateHeader:function(e){var t,r,o,s,a=e.table,n=e.$headers.length;for(t=0;t<n;t++)o=e.$headers.eq(t),s=L.getColumnData(a,e.headers,t,!0),r="false"===L.getData(o,s,"sorter")||"false"===L.getData(o,s,"parser"),L.setColumnSort(e,o,r)},setColumnSort:function(e,t,r){var o=e.table.id;t[0].sortDisabled=r,t[r?"addClass":"removeClass"]("sorter-false").attr("aria-disabled",""+r),e.tabIndex&&(r?t.removeAttr("tabindex"):t.attr("tabindex","0")),o&&(r?t.removeAttr("aria-controls"):t.attr("aria-controls",o))},updateHeaderSortCount:function(e,t){var r,o,s,a,n,i,d,l,c=t||e.sortList,g=c.length;for(e.sortList=[],a=0;a<g;a++)if(d=c[a],(r=parseInt(d[0],10))<e.columns){switch(e.sortVars[r].order||(l=L.getOrder(e.sortInitialOrder)?e.sortReset?[1,0,2]:[1,0]:e.sortReset?[0,1,2]:[0,1],e.sortVars[r].order=l,e.sortVars[r].count=0),l=e.sortVars[r].order,o=(o=(""+d[1]).match(/^(1|d|s|o|n)/))?o[0]:""){case"1":case"d":o=1;break;case"s":o=n||0;break;case"o":o=0===(i=l[(n||0)%l.length])?1:1===i?0:2;break;case"n":o=l[++e.sortVars[r].count%l.length];break;default:o=0}n=0===a?o:n,s=[r,parseInt(o,10)||0],e.sortList[e.sortList.length]=s,o=A.inArray(s[1],l),e.sortVars[r].count=0<=o?o:s[1]%l.length}},updateAll:function(e,t,r){var o=e.table;o.isUpdating=!0,L.refreshWidgets(o,!0,!0),L.buildHeaders(e),L.bindEvents(o,e.$headers,!0),L.bindMethods(e),L.commonUpdate(e,t,r)},update:function(e,t,r){e.table.isUpdating=!0,L.updateHeader(e),L.commonUpdate(e,t,r)},updateHeaders:function(e,t){e.table.isUpdating=!0,L.buildHeaders(e),L.bindEvents(e.table,e.$headers,!0),L.resortComplete(e,t)},updateCell:function(e,t,r,o){if(A(t).closest("tr").hasClass(e.cssChildRow))console.warn('Tablesorter Warning! "updateCell" for child row content has been disabled, use "update" instead');else{if(L.isEmptyObject(e.cache))return L.updateHeader(e),void L.commonUpdate(e,r,o);e.table.isUpdating=!0,e.$table.find(e.selectorRemove).remove();var s,a,n,i,d,l,c=e.$tbodies,g=A(t),p=c.index(L.getClosest(g,"tbody")),u=e.cache[p],f=L.getClosest(g,"tr");if(t=g[0],c.length&&0<=p){if(n=c.eq(p).find("tr").not("."+e.cssChildRow).index(f),d=u.normalized[n],(l=f[0].cells.length)!==e.columns)for(s=!1,a=i=0;a<l;a++)s||f[0].cells[a]===t?s=!0:i+=f[0].cells[a].colSpan;else i=g.index();s=L.getElementText(e,t,i),d[e.columns].raw[i]=s,s=L.getParsedText(e,t,i,s),d[i]=s,"numeric"===(e.parsers[i].type||"").toLowerCase()&&(u.colMax[i]=Math.max(Math.abs(s)||0,u.colMax[i]||0)),!1!==(s="undefined"!==r?r:e.resort)?L.checkResort(e,s,o):L.resortComplete(e,o)}else L.debug(e,"core")&&console.error("updateCell aborted, tbody missing or not within the indicated table"),e.table.isUpdating=!1}},addRows:function(e,t,r,o){var s,a,n,i,d,l,c,g,p,u,f,h,m,b="string"==typeof t&&1===e.$tbodies.length&&/<tr/.test(t||""),y=e.table;if(b)t=A(t),e.$tbodies.append(t);else if(!(t&&t instanceof A&&L.getClosest(t,"table")[0]===e.table))return L.debug(e,"core")&&console.error("addRows method requires (1) a jQuery selector reference to rows that have already been added to the table, or (2) row HTML string to be added to a table with only one tbody"),!1;if(y.isUpdating=!0,L.isEmptyObject(e.cache))L.updateHeader(e),L.commonUpdate(e,r,o);else{for(d=t.filter("tr").attr("role","row").length,n=e.$tbodies.index(t.parents("tbody").filter(":first")),e.parsers&&e.parsers.length||L.setupParsers(e),i=0;i<d;i++){for(p=0,c=t[i].cells.length,g=e.cache[n].normalized.length,f=[],u={child:[],raw:[],$row:t.eq(i),order:g},l=0;l<c;l++)h=t[i].cells[l],s=L.getElementText(e,h,p),u.raw[p]=s,a=L.getParsedText(e,h,p,s),f[p]=a,"numeric"===(e.parsers[p].type||"").toLowerCase()&&(e.cache[n].colMax[p]=Math.max(Math.abs(a)||0,e.cache[n].colMax[p]||0)),0<(m=h.colSpan-1)&&(p+=m),p++;f[e.columns]=u,e.cache[n].normalized[g]=f}L.checkResort(e,r,o)}},updateCache:function(e,t,r){e.parsers&&e.parsers.length||L.setupParsers(e,r),L.buildCache(e,t,r)},appendCache:function(e,t){var r,o,s,a,n,i,d,l=e.table,c=e.$tbodies,g=[],p=e.cache;if(L.isEmptyObject(p))return e.appender?e.appender(l,g):l.isUpdating?e.$table.triggerHandler("updateComplete",l):"";for(L.debug(e,"core")&&(d=new Date),i=0;i<c.length;i++)if((s=c.eq(i)).length){for(a=L.processTbody(l,s,!0),o=(r=p[i].normalized).length,n=0;n<o;n++)g[g.length]=r[n][e.columns].$row,e.appender&&(!e.pager||e.pager.removeRows||e.pager.ajax)||a.append(r[n][e.columns].$row);L.processTbody(l,a,!1)}e.appender&&e.appender(l,g),L.debug(e,"core")&&console.log("Rebuilt table"+L.benchmark(d)),t||e.appender||L.applyWidget(l),l.isUpdating&&e.$table.triggerHandler("updateComplete",l)},commonUpdate:function(e,t,r){e.$table.find(e.selectorRemove).remove(),L.setupParsers(e),L.buildCache(e),L.checkResort(e,t,r)},initSort:function(t,e,r){if(t.table.isUpdating)return setTimeout(function(){L.initSort(t,e,r)},50);var o,s,a,n,i,d,l,c=!r[t.sortMultiSortKey],g=t.table,p=t.$headers.length,u=L.getClosest(A(e),"th, td"),f=parseInt(u.attr("data-column"),10),h="mouseup"===r.type?"user":r.type,m=t.sortVars[f].order;if(u=u[0],t.$table.triggerHandler("sortStart",g),d=(t.sortVars[f].count+1)%m.length,t.sortVars[f].count=r[t.sortResetKey]?2:d,t.sortRestart)for(a=0;a<p;a++)l=t.$headers.eq(a),f!==(d=parseInt(l.attr("data-column"),10))&&(c||l.hasClass(L.css.sortNone))&&(t.sortVars[d].count=-1);if(c){if(A.each(t.sortVars,function(e){t.sortVars[e].sortedBy=""}),t.sortList=[],t.last.sortList=[],null!==t.sortForce)for(o=t.sortForce,s=0;s<o.length;s++)o[s][0]!==f&&(t.sortList[t.sortList.length]=o[s],t.sortVars[o[s][0]].sortedBy="sortForce");if((n=m[t.sortVars[f].count])<2&&(t.sortList[t.sortList.length]=[f,n],t.sortVars[f].sortedBy=h,1<u.colSpan))for(s=1;s<u.colSpan;s++)t.sortList[t.sortList.length]=[f+s,n],t.sortVars[f+s].count=A.inArray(n,m),t.sortVars[f+s].sortedBy=h}else if(t.sortList=A.extend([],t.last.sortList),0<=L.isValueInArray(f,t.sortList))for(t.sortVars[f].sortedBy=h,s=0;s<t.sortList.length;s++)(d=t.sortList[s])[0]===f&&(d[1]=m[t.sortVars[f].count],2===d[1]&&(t.sortList.splice(s,1),t.sortVars[f].count=-1));else if(n=m[t.sortVars[f].count],t.sortVars[f].sortedBy=h,n<2&&(t.sortList[t.sortList.length]=[f,n],1<u.colSpan))for(s=1;s<u.colSpan;s++)t.sortList[t.sortList.length]=[f+s,n],t.sortVars[f+s].count=A.inArray(n,m),t.sortVars[f+s].sortedBy=h;if(t.last.sortList=A.extend([],t.sortList),t.sortList.length&&t.sortAppend&&(o=A.isArray(t.sortAppend)?t.sortAppend:t.sortAppend[t.sortList[0][0]],!L.isEmptyObject(o)))for(s=0;s<o.length;s++)if(o[s][0]!==f&&L.isValueInArray(o[s][0],t.sortList)<0){if(i=(""+(n=o[s][1])).match(/^(a|d|s|o|n)/))switch(d=t.sortList[0][1],i[0]){case"d":n=1;break;case"s":n=d;break;case"o":n=0===d?1:0;break;case"n":n=(d+1)%m.length;break;default:n=0}t.sortList[t.sortList.length]=[o[s][0],n],t.sortVars[o[s][0]].sortedBy="sortAppend"}t.$table.triggerHandler("sortBegin",g),setTimeout(function(){L.setHeadersCss(t),L.multisort(t),L.appendCache(t),t.$table.triggerHandler("sortBeforeEnd",g),t.$table.triggerHandler("sortEnd",g)},1)},multisort:function(l){var e,t,c,r,g=l.table,p=[],u=0,f=l.textSorter||"",h=l.sortList,m=h.length,o=l.$tbodies.length;if(!l.serverSideSorting&&!L.isEmptyObject(l.cache)){if(L.debug(l,"core")&&(t=new Date),"object"==typeof f)for(c=l.columns;c--;)"function"==typeof(r=L.getColumnData(g,f,c))&&(p[c]=r);for(e=0;e<o;e++)c=l.cache[e].colMax,l.cache[e].normalized.sort(function(e,t){var r,o,s,a,n,i,d;for(r=0;r<m;r++){if(s=h[r][0],a=h[r][1],u=0===a,l.sortStable&&e[s]===t[s]&&1===m)return e[l.columns].order-t[l.columns].order;if(n=(o=/n/i.test(L.getSortType(l.parsers,s)))&&l.strings[s]?(o="boolean"==typeof L.string[l.strings[s]]?(u?1:-1)*(L.string[l.strings[s]]?-1:1):l.strings[s]&&L.string[l.strings[s]]||0,l.numberSorter?l.numberSorter(e[s],t[s],u,c[s],g):L["sortNumeric"+(u?"Asc":"Desc")](e[s],t[s],o,c[s],s,l)):(i=u?e:t,d=u?t:e,"function"==typeof f?f(i[s],d[s],u,s,g):"function"==typeof p[s]?p[s](i[s],d[s],u,s,g):L["sortNatural"+(u?"Asc":"Desc")](e[s]||"",t[s]||"",s,l)))return n}return e[l.columns].order-t[l.columns].order});L.debug(l,"core")&&console.log("Applying sort "+h.toString()+L.benchmark(t))}},resortComplete:function(e,t){e.table.isUpdating&&e.$table.triggerHandler("updateComplete",e.table),A.isFunction(t)&&t(e.table)},checkResort:function(e,t,r){var o=A.isArray(t)?t:e.sortList;!1===(void 0===t?e.resort:t)||e.serverSideSorting||e.table.isProcessing?(L.resortComplete(e,r),L.applyWidget(e.table,!1)):o.length?L.sortOn(e,o,function(){L.resortComplete(e,r)},!0):L.sortReset(e,function(){L.resortComplete(e,r),L.applyWidget(e.table,!1)})},sortOn:function(e,t,r,o){var s,a=e.table;for(e.$table.triggerHandler("sortStart",a),s=0;s<e.columns;s++)e.sortVars[s].sortedBy=-1<L.isValueInArray(s,t)?"sorton":"";L.updateHeaderSortCount(e,t),L.setHeadersCss(e),e.delayInit&&L.isEmptyObject(e.cache)&&L.buildCache(e),e.$table.triggerHandler("sortBegin",a),L.multisort(e),L.appendCache(e,o),e.$table.triggerHandler("sortBeforeEnd",a),e.$table.triggerHandler("sortEnd",a),L.applyWidget(a),A.isFunction(r)&&r(a)},sortReset:function(e,t){var r;for(e.sortList=[],r=0;r<e.columns;r++)e.sortVars[r].count=-1,e.sortVars[r].sortedBy="";L.setHeadersCss(e),L.multisort(e),L.appendCache(e),A.isFunction(t)&&t(e.table)},getSortType:function(e,t){return e&&e[t]&&e[t].type||""},getOrder:function(e){return/^d/i.test(e)||1===e},sortNatural:function(e,t){if(e===t)return 0;e=(e||"").toString(),t=(t||"").toString();var r,o,s,a,n,i,d=L.regex;if(d.hex.test(t)){if((r=parseInt(e.match(d.hex),16))<(o=parseInt(t.match(d.hex),16)))return-1;if(o<r)return 1}for(r=e.replace(d.chunk,"\\0$1\\0").replace(d.chunks,"").split("\\0"),o=t.replace(d.chunk,"\\0$1\\0").replace(d.chunks,"").split("\\0"),i=Math.max(r.length,o.length),n=0;n<i;n++){if(s=isNaN(r[n])?r[n]||0:parseFloat(r[n])||0,a=isNaN(o[n])?o[n]||0:parseFloat(o[n])||0,isNaN(s)!==isNaN(a))return isNaN(s)?1:-1;if(typeof s!=typeof a&&(s+="",a+=""),s<a)return-1;if(a<s)return 1}return 0},sortNaturalAsc:function(e,t,r,o){if(e===t)return 0;var s=L.string[o.empties[r]||o.emptyTo];return""===e&&0!==s?"boolean"==typeof s?s?-1:1:-s||-1:""===t&&0!==s?"boolean"==typeof s?s?1:-1:s||1:L.sortNatural(e,t)},sortNaturalDesc:function(e,t,r,o){if(e===t)return 0;var s=L.string[o.empties[r]||o.emptyTo];return""===e&&0!==s?"boolean"==typeof s?s?-1:1:s||1:""===t&&0!==s?"boolean"==typeof s?s?1:-1:-s||-1:L.sortNatural(t,e)},sortText:function(e,t){return t<e?1:e<t?-1:0},getTextValue:function(e,t,r){if(r){var o,s=e?e.length:0,a=r+t;for(o=0;o<s;o++)a+=e.charCodeAt(o);return t*a}return 0},sortNumericAsc:function(e,t,r,o,s,a){if(e===t)return 0;var n=L.string[a.empties[s]||a.emptyTo];return""===e&&0!==n?"boolean"==typeof n?n?-1:1:-n||-1:""===t&&0!==n?"boolean"==typeof n?n?1:-1:n||1:(isNaN(e)&&(e=L.getTextValue(e,r,o)),isNaN(t)&&(t=L.getTextValue(t,r,o)),e-t)},sortNumericDesc:function(e,t,r,o,s,a){if(e===t)return 0;var n=L.string[a.empties[s]||a.emptyTo];return""===e&&0!==n?"boolean"==typeof n?n?-1:1:n||1:""===t&&0!==n?"boolean"==typeof n?n?1:-1:-n||-1:(isNaN(e)&&(e=L.getTextValue(e,r,o)),isNaN(t)&&(t=L.getTextValue(t,r,o)),t-e)},sortNumeric:function(e,t){return e-t},addWidget:function(e){e.id&&!L.isEmptyObject(L.getWidgetById(e.id))&&console.warn('"'+e.id+'" widget was loaded more than once!'),L.widgets[L.widgets.length]=e},hasWidget:function(e,t){return(e=A(e)).length&&e[0].config&&e[0].config.widgetInit[t]||!1},getWidgetById:function(e){var t,r,o=L.widgets.length;for(t=0;t<o;t++)if((r=L.widgets[t])&&r.id&&r.id.toLowerCase()===e.toLowerCase())return r},applyWidgetOptions:function(e){var t,r,o,s=e.config,a=s.widgets.length;if(a)for(t=0;t<a;t++)(r=L.getWidgetById(s.widgets[t]))&&r.options&&(o=A.extend(!0,{},r.options),s.widgetOptions=A.extend(!0,o,s.widgetOptions),A.extend(!0,L.defaults.widgetOptions,r.options))},addWidgetFromClass:function(e){var t,r,o=e.config,s="^"+o.widgetClass.replace(L.regex.templateName,"(\\S+)+")+"$",a=new RegExp(s,"g"),n=(e.className||"").split(L.regex.spaces);if(n.length)for(t=n.length,r=0;r<t;r++)n[r].match(a)&&(o.widgets[o.widgets.length]=n[r].replace(a,"$1"))},applyWidgetId:function(e,t,r){var o,s,a,n=(e=A(e)[0]).config,i=n.widgetOptions,d=L.debug(n,"core"),l=L.getWidgetById(t);l&&(a=l.id,o=!1,A.inArray(a,n.widgets)<0&&(n.widgets[n.widgets.length]=a),d&&(s=new Date),!r&&n.widgetInit[a]||(n.widgetInit[a]=!0,e.hasInitialized&&L.applyWidgetOptions(e),"function"==typeof l.init&&(o=!0,d&&console[console.group?"group":"log"]("Initializing "+a+" widget"),l.init(e,l,n,i))),r||"function"!=typeof l.format||(o=!0,d&&console[console.group?"group":"log"]("Updating "+a+" widget"),l.format(e,n,i,!1)),d&&o&&(console.log("Completed "+(r?"initializing ":"applying ")+a+" widget"+L.benchmark(s)),console.groupEnd&&console.groupEnd()))},applyWidget:function(e,t,r){var o,s,a,n,i,d=(e=A(e)[0]).config,l=L.debug(d,"core"),c=[];if(!1===t||!e.hasInitialized||!e.isApplyingWidgets&&!e.isUpdating){if(l&&(i=new Date),L.addWidgetFromClass(e),clearTimeout(d.timerReady),d.widgets.length){for(e.isApplyingWidgets=!0,d.widgets=A.grep(d.widgets,function(e,t){return A.inArray(e,d.widgets)===t}),s=(a=d.widgets||[]).length,o=0;o<s;o++)(n=L.getWidgetById(a[o]))&&n.id?(n.priority||(n.priority=10),c[o]=n):l&&console.warn('"'+a[o]+'" was enabled, but the widget code has not been loaded!');for(c.sort(function(e,t){return e.priority<t.priority?-1:e.priority===t.priority?0:1}),s=c.length,l&&console[console.group?"group":"log"]("Start "+(t?"initializing":"applying")+" widgets"),o=0;o<s;o++)(n=c[o])&&n.id&&L.applyWidgetId(e,n.id,t);l&&console.groupEnd&&console.groupEnd()}d.timerReady=setTimeout(function(){e.isApplyingWidgets=!1,A.data(e,"lastWidgetApplication",new Date),d.$table.triggerHandler("tablesorter-ready"),t||"function"!=typeof r||r(e),l&&(n=d.widgets.length,console.log("Completed "+(!0===t?"initializing ":"applying ")+n+" widget"+(1!==n?"s":"")+L.benchmark(i)))},10)}},removeWidget:function(e,t,r){var o,s,a,n,i=(e=A(e)[0]).config;if(!0===t)for(t=[],n=L.widgets.length,a=0;a<n;a++)(s=L.widgets[a])&&s.id&&(t[t.length]=s.id);else t=(A.isArray(t)?t.join(","):t||"").toLowerCase().split(/[\s,]+/);for(n=t.length,o=0;o<n;o++)s=L.getWidgetById(t[o]),0<=(a=A.inArray(t[o],i.widgets))&&!0!==r&&i.widgets.splice(a,1),s&&s.remove&&(L.debug(i,"core")&&console.log((r?"Refreshing":"Removing")+' "'+t[o]+'" widget'),s.remove(e,i,i.widgetOptions,r),i.widgetInit[t[o]]=!1);i.$table.triggerHandler("widgetRemoveEnd",e)},refreshWidgets:function(e,t,r){function o(e){A(e).triggerHandler("refreshComplete")}var s,a,n=(e=A(e)[0]).config.widgets,i=L.widgets,d=i.length,l=[];for(s=0;s<d;s++)(a=i[s])&&a.id&&(t||A.inArray(a.id,n)<0)&&(l[l.length]=a.id);L.removeWidget(e,l.join(","),!0),!0!==r?(L.applyWidget(e,t||!1,o),t&&L.applyWidget(e,!1,o)):o(e)},benchmark:function(e){return" ("+((new Date).getTime()-e.getTime())+" ms)"},log:function(){console.log(arguments)},debug:function(e,t){return e&&(!0===e.debug||"string"==typeof e.debug&&-1<e.debug.indexOf(t))},isEmptyObject:function(e){for(var t in e)return!1;return!0},isValueInArray:function(e,t){var r,o=t&&t.length||0;for(r=0;r<o;r++)if(t[r][0]===e)return r;return-1},formatFloat:function(e,t){return"string"!=typeof e||""===e?e:(e=(t&&t.config?!1!==t.config.usNumberFormat:void 0===t||t)?e.replace(L.regex.comma,""):e.replace(L.regex.digitNonUS,"").replace(L.regex.comma,"."),L.regex.digitNegativeTest.test(e)&&(e=e.replace(L.regex.digitNegativeReplace,"-$1")),r=parseFloat(e),isNaN(r)?A.trim(e):r);var r},isDigit:function(e){return isNaN(e)?L.regex.digitTest.test(e.toString().replace(L.regex.digitReplace,"")):""!==e},computeColumnIndex:function(e,t){var r,o,s,a,n,i,d,l,c,g,p=t&&t.columns||0,u=[],f=new Array(p);for(r=0;r<e.length;r++)for(i=e[r].cells,o=0;o<i.length;o++){for(d=r,l=(n=i[o]).rowSpan||1,c=n.colSpan||1,void 0===u[d]&&(u[d]=[]),s=0;s<u[d].length+1;s++)if(void 0===u[d][s]){g=s;break}for(p&&n.cellIndex===g||(n.setAttribute?n.setAttribute("data-column",g):A(n).attr("data-column",g)),s=d;s<d+l;s++)for(void 0===u[s]&&(u[s]=[]),f=u[s],a=g;a<g+c;a++)f[a]="x"}return L.checkColumnCount(e,u,f.length),f.length},checkColumnCount:function(e,t,r){var o,s,a=!0,n=[];for(o=0;o<t.length;o++)if(t[o]&&(s=t[o].length,t[o].length!==r)){a=!1;break}a||(e.each(function(e,t){var r=t.parentElement.nodeName;n.indexOf(r)<0&&n.push(r)}),console.error("Invalid or incorrect number of columns in the "+n.join(" or ")+"; expected "+r+", but found "+s+" columns"))},fixColumnWidth:function(e){var t,r,o,s,a,n=(e=A(e)[0]).config,i=n.$table.children("colgroup");if(i.length&&i.hasClass(L.css.colgroup)&&i.remove(),n.widthFixed&&0===n.$table.children("colgroup").length){for(i=A('<colgroup class="'+L.css.colgroup+'">'),t=n.$table.width(),s=(o=n.$tbodies.find("tr:first").children(":visible")).length,a=0;a<s;a++)r=parseInt(o.eq(a).width()/t*1e3,10)/10+"%",i.append(A("<col>").css("width",r));n.$table.prepend(i)}},getData:function(e,t,r){var o,s,a="",n=A(e);return n.length?(o=!!A.metadata&&n.metadata(),s=" "+(n.attr("class")||""),void 0!==n.data(r)||void 0!==n.data(r.toLowerCase())?a+=n.data(r)||n.data(r.toLowerCase()):o&&void 0!==o[r]?a+=o[r]:t&&void 0!==t[r]?a+=t[r]:" "!==s&&s.match(" "+r+"-")&&(a=s.match(new RegExp("\\s"+r+"-([\\w-]+)"))[1]||""),A.trim(a)):""},getColumnData:function(e,t,r,o,s){if("object"!=typeof t||null===t)return t;var a,n=(e=A(e)[0]).config,i=s||n.$headers,d=n.$headerIndexed&&n.$headerIndexed[r]||i.find('[data-column="'+r+'"]:last');if(void 0!==t[r])return o?t[r]:t[i.index(d)];for(a in t)if("string"==typeof a&&d.filter(a).add(d.find(a)).length)return t[a]},isProcessing:function(e,t,r){var o=(e=A(e))[0].config,s=r||e.find("."+L.css.header);t?(void 0!==r&&0<o.sortList.length&&(s=s.filter(function(){return!this.sortDisabled&&0<=L.isValueInArray(parseFloat(A(this).attr("data-column")),o.sortList)})),e.add(s).addClass(L.css.processing+" "+o.cssProcessing)):e.add(s).removeClass(L.css.processing+" "+o.cssProcessing)},processTbody:function(e,t,r){if(e=A(e)[0],r)return e.isProcessing=!0,t.before('<colgroup class="tablesorter-savemyplace"/>'),A.fn.detach?t.detach():t.remove();var o=A(e).find("colgroup.tablesorter-savemyplace");t.insertAfter(o),o.remove(),e.isProcessing=!1},clearTableBody:function(e){A(e)[0].config.$tbodies.children().detach()},characterEquivalents:{a:"áàâãäąå",A:"ÁÀÂÃÄĄÅ",c:"çćč",C:"ÇĆČ",e:"éèêëěę",E:"ÉÈÊËĚĘ",i:"íìİîïı",I:"ÍÌİÎÏ",o:"óòôõöō",O:"ÓÒÔÕÖŌ",ss:"ß",SS:"ẞ",u:"úùûüů",U:"ÚÙÛÜŮ"},replaceAccents:function(e){var t,r="[",o=L.characterEquivalents;if(!L.characterRegex){for(t in L.characterRegexArray={},o)"string"==typeof t&&(r+=o[t],L.characterRegexArray[t]=new RegExp("["+o[t]+"]","g"));L.characterRegex=new RegExp(r+"]")}if(L.characterRegex.test(e))for(t in o)"string"==typeof t&&(e=e.replace(L.characterRegexArray[t],t));return e},validateOptions:function(e){var t,r,o,s,a="headers sortForce sortList sortAppend widgets".split(" "),n=e.originalSettings;if(n){for(t in L.debug(e,"core")&&(s=new Date),n)if("undefined"===(o=typeof L.defaults[t]))console.warn('Tablesorter Warning! "table.config.'+t+'" option not recognized');else if("object"===o)for(r in n[t])o=L.defaults[t]&&typeof L.defaults[t][r],A.inArray(t,a)<0&&"undefined"===o&&console.warn('Tablesorter Warning! "table.config.'+t+"."+r+'" option not recognized');L.debug(e,"core")&&console.log("validate options time:"+L.benchmark(s))}},restoreHeaders:function(e){var t,r,o=A(e)[0].config,s=o.$table.find(o.selectorHeaders),a=s.length;for(t=0;t<a;t++)(r=s.eq(t)).find("."+L.css.headerIn).length&&r.html(o.headerContent[t])},destroy:function(e,t,r){if((e=A(e)[0]).hasInitialized){L.removeWidget(e,!0,!1);var o,s=A(e),a=e.config,n=s.find("thead:first"),i=n.find("tr."+L.css.headerRow).removeClass(L.css.headerRow+" "+a.cssHeaderRow),d=s.find("tfoot:first > tr").children("th, td");!1===t&&0<=A.inArray("uitheme",a.widgets)&&(s.triggerHandler("applyWidgetId",["uitheme"]),s.triggerHandler("applyWidgetId",["zebra"])),n.find("tr").not(i).remove(),o="sortReset update updateRows updateAll updateHeaders updateCell addRows updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets removeWidget destroy mouseup mouseleave "+"keypress sortBegin sortEnd resetToLoadState ".split(" ").join(a.namespace+" "),s.removeData("tablesorter").unbind(o.replace(L.regex.spaces," ")),a.$headers.add(d).removeClass([L.css.header,a.cssHeader,a.cssAsc,a.cssDesc,L.css.sortAsc,L.css.sortDesc,L.css.sortNone].join(" ")).removeAttr("data-column").removeAttr("aria-label").attr("aria-disabled","true"),i.find(a.selectorSort).unbind("mousedown mouseup keypress ".split(" ").join(a.namespace+" ").replace(L.regex.spaces," ")),L.restoreHeaders(e),s.toggleClass(L.css.table+" "+a.tableClass+" tablesorter-"+a.theme,!1===t),s.removeClass(a.namespace.slice(1)),e.hasInitialized=!1,delete e.config.cache,"function"==typeof r&&r(e),L.debug(a,"core")&&console.log("tablesorter has been removed")}}};A.fn.tablesorter=function(t){return this.each(function(){var e=A.extend(!0,{},L.defaults,t,L.instanceMethods);e.originalSettings=t,!this.hasInitialized&&L.buildTable&&"TABLE"!==this.nodeName?L.buildTable(this,e):L.setup(this,e)})},window.console&&window.console.log||(L.logs=[],console={},console.log=console.warn=console.error=console.table=function(){var e=1<arguments.length?arguments:arguments[0];L.logs[L.logs.length]={date:Date.now(),log:e}}),L.addParser({id:"no-parser",is:function(){return!1},format:function(){return""},type:"text"}),L.addParser({id:"text",is:function(){return!0},format:function(e,t){var r=t.config;return e&&(e=A.trim(r.ignoreCase?e.toLocaleLowerCase():e),e=r.sortLocaleCompare?L.replaceAccents(e):e),e},type:"text"}),L.regex.nondigit=/[^\w,. \-()]/g,L.addParser({id:"digit",is:function(e){return L.isDigit(e)},format:function(e,t){var r=L.formatFloat((e||"").replace(L.regex.nondigit,""),t);return e&&"number"==typeof r?r:e?A.trim(e&&t.config.ignoreCase?e.toLocaleLowerCase():e):e},type:"numeric"}),L.regex.currencyReplace=/[+\-,. ]/g,L.regex.currencyTest=/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/,L.addParser({id:"currency",is:function(e){return e=(e||"").replace(L.regex.currencyReplace,""),L.regex.currencyTest.test(e)},format:function(e,t){var r=L.formatFloat((e||"").replace(L.regex.nondigit,""),t);return e&&"number"==typeof r?r:e?A.trim(e&&t.config.ignoreCase?e.toLocaleLowerCase():e):e},type:"numeric"}),L.regex.urlProtocolTest=/^(https?|ftp|file):\/\//,L.regex.urlProtocolReplace=/(https?|ftp|file):\/\/(www\.)?/,L.addParser({id:"url",is:function(e){return L.regex.urlProtocolTest.test(e)},format:function(e){return e?A.trim(e.replace(L.regex.urlProtocolReplace,"")):e},type:"text"}),L.regex.dash=/-/g,L.regex.isoDate=/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/,L.addParser({id:"isoDate",is:function(e){return L.regex.isoDate.test(e)},format:function(e){var t=e?new Date(e.replace(L.regex.dash,"/")):e;return t instanceof Date&&isFinite(t)?t.getTime():e},type:"numeric"}),L.regex.percent=/%/g,L.regex.percentTest=/(\d\s*?%|%\s*?\d)/,L.addParser({id:"percent",is:function(e){return L.regex.percentTest.test(e)&&e.length<15},format:function(e,t){return e?L.formatFloat(e.replace(L.regex.percent,""),t):e},type:"numeric"}),L.addParser({id:"image",is:function(e,t,r,o){return 0<o.find("img").length},format:function(e,t,r){return A(r).find("img").attr(t.config.imgAttr||"alt")||e},parsed:!0,type:"text"}),L.regex.dateReplace=/(\S)([AP]M)$/i,L.regex.usLongDateTest1=/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i,L.regex.usLongDateTest2=/^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i,L.addParser({id:"usLongDate",is:function(e){return L.regex.usLongDateTest1.test(e)||L.regex.usLongDateTest2.test(e)},format:function(e){var t=e?new Date(e.replace(L.regex.dateReplace,"$1 $2")):e;return t instanceof Date&&isFinite(t)?t.getTime():e},type:"numeric"}),L.regex.shortDateTest=/(^\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4})|(^\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2})/,L.regex.shortDateReplace=/[\-.,]/g,L.regex.shortDateXXY=/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,L.regex.shortDateYMD=/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/,L.convertFormat=function(e,t){e=(e||"").replace(L.regex.spaces," ").replace(L.regex.shortDateReplace,"/"),"mmddyyyy"===t?e=e.replace(L.regex.shortDateXXY,"$3/$1/$2"):"ddmmyyyy"===t?e=e.replace(L.regex.shortDateXXY,"$3/$2/$1"):"yyyymmdd"===t&&(e=e.replace(L.regex.shortDateYMD,"$1/$2/$3"));var r=new Date(e);return r instanceof Date&&isFinite(r)?r.getTime():""},L.addParser({id:"shortDate",is:function(e){return e=(e||"").replace(L.regex.spaces," ").replace(L.regex.shortDateReplace,"/"),L.regex.shortDateTest.test(e)},format:function(e,t,r,o){if(e){var s=t.config,a=s.$headerIndexed[o],n=a.length&&a.data("dateFormat")||L.getData(a,L.getColumnData(t,s.headers,o),"dateFormat")||s.dateFormat;return a.length&&a.data("dateFormat",n),L.convertFormat(e,n)||e}return e},type:"numeric"}),L.regex.timeTest=/^(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)$|^((?:[01]\d|[2][0-4]):[0-5]\d)$/i,L.regex.timeMatch=/(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)|((?:[01]\d|[2][0-4]):[0-5]\d)/i,L.addParser({id:"time",is:function(e){return L.regex.timeTest.test(e)},format:function(e){var t=(e||"").match(L.regex.timeMatch),r=new Date(e),o=e&&(null!==t?t[0]:"00:00 AM"),s=o?new Date("2000/01/01 "+o.replace(L.regex.dateReplace,"$1 $2")):o;return s instanceof Date&&isFinite(s)?(r instanceof Date&&isFinite(r)?r.getTime():0)?parseFloat(s.getTime()+"."+r.getTime()):s.getTime():e},type:"numeric"}),L.addParser({id:"metadata",is:function(){return!1},format:function(e,t,r){var o=t.config,s=o.parserMetadataName?o.parserMetadataName:"sortValue";return A(r).metadata()[s]},type:"numeric"}),L.addWidget({id:"zebra",priority:90,format:function(e,t,r){var o,s,a,n,i,d,l,c=new RegExp(t.cssChildRow,"i"),g=t.$tbodies.add(A(t.namespace+"_extra_table").children("tbody:not(."+t.cssInfoBlock+")"));for(i=0;i<g.length;i++)for(a=0,l=(o=g.eq(i).children("tr:visible").not(t.selectorRemove)).length,d=0;d<l;d++)s=o.eq(d),c.test(s[0].className)||a++,n=a%2==0,s.removeClass(r.zebra[n?1:0]).addClass(r.zebra[n?0:1])},remove:function(e,t,r,o){if(!o){var s,a,n=t.$tbodies,i=(r.zebra||["even","odd"]).join(" ");for(s=0;s<n.length;s++)(a=L.processTbody(e,n.eq(s),!0)).children().removeClass(i),L.processTbody(e,a,!1)}}})}(e),e.tablesorter});
|
| 1 |
+
!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&"object"==typeof module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(e){return function(A){"use strict";var L=A.tablesorter={version:"2.31.3",parsers:[],widgets:[],defaults:{theme:"default",widthFixed:!1,showProcessing:!1,headerTemplate:"{content}",onRenderTemplate:null,onRenderHeader:null,cancelSelection:!0,tabIndex:!0,dateFormat:"mmddyyyy",sortMultiSortKey:"shiftKey",sortResetKey:"ctrlKey",usNumberFormat:!0,delayInit:!1,serverSideSorting:!1,resort:!0,headers:{},ignoreCase:!0,sortForce:null,sortList:[],sortAppend:null,sortStable:!1,sortInitialOrder:"asc",sortLocaleCompare:!1,sortReset:!1,sortRestart:!1,emptyTo:"bottom",stringTo:"max",duplicateSpan:!0,textExtraction:"basic",textAttribute:"data-text",textSorter:null,numberSorter:null,initWidgets:!0,widgetClass:"widget-{name}",widgets:[],widgetOptions:{zebra:["even","odd"]},initialized:null,tableClass:"",cssAsc:"",cssDesc:"",cssNone:"",cssHeader:"",cssHeaderRow:"",cssProcessing:"",cssChildRow:"tablesorter-childRow",cssInfoBlock:"tablesorter-infoOnly",cssNoSort:"tablesorter-noSort",cssIgnoreRow:"tablesorter-ignoreRow",cssIcon:"tablesorter-icon",cssIconNone:"",cssIconAsc:"",cssIconDesc:"",cssIconDisabled:"",pointerClick:"click",pointerDown:"mousedown",pointerUp:"mouseup",selectorHeaders:"> thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1,headerList:[],empties:{},strings:{},parsers:[],globalize:0,imgAttr:0},css:{table:"tablesorter",cssHasChild:"tablesorter-hasChildRow",childRow:"tablesorter-childRow",colgroup:"tablesorter-colgroup",header:"tablesorter-header",headerRow:"tablesorter-headerRow",headerIn:"tablesorter-header-inner",icon:"tablesorter-icon",processing:"tablesorter-processing",sortAsc:"tablesorter-headerAsc",sortDesc:"tablesorter-headerDesc",sortNone:"tablesorter-headerUnSorted"},language:{sortAsc:"Ascending sort applied, ",sortDesc:"Descending sort applied, ",sortNone:"No sort applied, ",sortDisabled:"sorting is disabled",nextAsc:"activate to apply an ascending sort",nextDesc:"activate to apply a descending sort",nextNone:"activate to remove the sort"},regex:{templateContent:/\{content\}/g,templateIcon:/\{icon\}/g,templateName:/\{name\}/i,spaces:/\s+/g,nonWord:/\W/g,formElements:/(input|select|button|textarea)/i,chunk:/(^([+\-]?(?:\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,chunks:/(^\\0|\\0$)/,hex:/^0x[0-9a-f]+$/i,comma:/,/g,digitNonUS:/[\s|\.]/g,digitNegativeTest:/^\s*\([.\d]+\)/,digitNegativeReplace:/^\s*\(([.\d]+)\)/,digitTest:/^[\-+(]?\d+[)]?$/,digitReplace:/[,.'"\s]/g},string:{max:1,min:-1,emptymin:1,emptymax:-1,zero:0,none:0,"null":0,top:!0,bottom:!1},keyCodes:{enter:13},dates:{},instanceMethods:{},setup:function(t,r){if(t&&t.tHead&&0!==t.tBodies.length&&!0!==t.hasInitialized){var e,o="",s=A(t),a=A.metadata;t.hasInitialized=!1,t.isProcessing=!0,t.config=r,A.data(t,"tablesorter",r),L.debug(r,"core")&&(console[console.group?"group":"log"]("Initializing tablesorter v"+L.version),A.data(t,"startoveralltimer",new Date)),r.supportsDataObject=((e=A.fn.jquery.split("."))[0]=parseInt(e[0],10),1<e[0]||1===e[0]&&4<=parseInt(e[1],10)),r.emptyTo=r.emptyTo.toLowerCase(),r.stringTo=r.stringTo.toLowerCase(),r.last={sortList:[],clickedIndex:-1},/tablesorter\-/.test(s.attr("class"))||(o=""!==r.theme?" tablesorter-"+r.theme:""),r.namespace?r.namespace="."+r.namespace.replace(L.regex.nonWord,""):r.namespace=".tablesorter"+Math.random().toString(16).slice(2),r.table=t,r.$table=s.addClass(L.css.table+" "+r.tableClass+o+" "+r.namespace.slice(1)).attr("role","grid"),r.$headers=s.find(r.selectorHeaders),r.$table.children().children("tr").attr("role","row"),r.$tbodies=s.children("tbody:not(."+r.cssInfoBlock+")").attr({"aria-live":"polite","aria-relevant":"all"}),r.$table.children("caption").length&&((o=r.$table.children("caption")[0]).id||(o.id=r.namespace.slice(1)+"caption"),r.$table.attr("aria-labelledby",o.id)),r.widgetInit={},r.textExtraction=r.$table.attr("data-text-extraction")||r.textExtraction||"basic",L.buildHeaders(r),L.fixColumnWidth(t),L.addWidgetFromClass(t),L.applyWidgetOptions(t),L.setupParsers(r),r.totalRows=0,r.debug&&L.validateOptions(r),r.delayInit||L.buildCache(r),L.bindEvents(t,r.$headers,!0),L.bindMethods(r),r.supportsDataObject&&void 0!==s.data().sortlist?r.sortList=s.data().sortlist:a&&s.metadata()&&s.metadata().sortlist&&(r.sortList=s.metadata().sortlist),L.applyWidget(t,!0),0<r.sortList.length?(r.last.sortList=r.sortList,L.sortOn(r,r.sortList,{},!r.initWidgets)):(L.setHeadersCss(r),r.initWidgets&&L.applyWidget(t,!1)),r.showProcessing&&s.unbind("sortBegin"+r.namespace+" sortEnd"+r.namespace).bind("sortBegin"+r.namespace+" sortEnd"+r.namespace,function(e){clearTimeout(r.timerProcessing),L.isProcessing(t),"sortBegin"===e.type&&(r.timerProcessing=setTimeout(function(){L.isProcessing(t,!0)},500))}),t.hasInitialized=!0,t.isProcessing=!1,L.debug(r,"core")&&(console.log("Overall initialization time:"+L.benchmark(A.data(t,"startoveralltimer"))),L.debug(r,"core")&&console.groupEnd&&console.groupEnd()),s.triggerHandler("tablesorter-initialized",t),"function"==typeof r.initialized&&r.initialized(t)}else L.debug(r,"core")&&(t.hasInitialized?console.warn("Stopping initialization. Tablesorter has already been initialized"):console.error("Stopping initialization! No table, thead or tbody",t))},bindMethods:function(r){var e=r.$table,t=r.namespace,o="sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave ".split(" ").join(t+" ");e.unbind(o.replace(L.regex.spaces," ")).bind("sortReset"+t,function(e,t){e.stopPropagation(),L.sortReset(this.config,function(e){e.isApplyingWidgets?setTimeout(function(){L.applyWidget(e,"",t)},100):L.applyWidget(e,"",t)})}).bind("updateAll"+t,function(e,t,r){e.stopPropagation(),L.updateAll(this.config,t,r)}).bind("update"+t+" updateRows"+t,function(e,t,r){e.stopPropagation(),L.update(this.config,t,r)}).bind("updateHeaders"+t,function(e,t){e.stopPropagation(),L.updateHeaders(this.config,t)}).bind("updateCell"+t,function(e,t,r,o){e.stopPropagation(),L.updateCell(this.config,t,r,o)}).bind("addRows"+t,function(e,t,r,o){e.stopPropagation(),L.addRows(this.config,t,r,o)}).bind("updateComplete"+t,function(){this.isUpdating=!1}).bind("sorton"+t,function(e,t,r,o){e.stopPropagation(),L.sortOn(this.config,t,r,o)}).bind("appendCache"+t,function(e,t,r){e.stopPropagation(),L.appendCache(this.config,r),A.isFunction(t)&&t(this)}).bind("updateCache"+t,function(e,t,r){e.stopPropagation(),L.updateCache(this.config,t,r)}).bind("applyWidgetId"+t,function(e,t){e.stopPropagation(),L.applyWidgetId(this,t)}).bind("applyWidgets"+t,function(e,t){e.stopPropagation(),L.applyWidget(this,!1,t)}).bind("refreshWidgets"+t,function(e,t,r){e.stopPropagation(),L.refreshWidgets(this,t,r)}).bind("removeWidget"+t,function(e,t,r){e.stopPropagation(),L.removeWidget(this,t,r)}).bind("destroy"+t,function(e,t,r){e.stopPropagation(),L.destroy(this,t,r)}).bind("resetToLoadState"+t,function(e){e.stopPropagation(),L.removeWidget(this,!0,!1);var t=A.extend(!0,{},r.originalSettings);(r=A.extend(!0,{},L.defaults,t)).originalSettings=t,this.hasInitialized=!1,L.setup(this,r)})},bindEvents:function(e,t,r){var o,i=(e=A(e)[0]).config,s=i.namespace,d=null;!0!==r&&(t.addClass(s.slice(1)+"_extra_headers"),(o=L.getClosest(t,"table")).length&&"TABLE"===o[0].nodeName&&o[0]!==e&&A(o[0]).addClass(s.slice(1)+"_extra_table")),o=(i.pointerDown+" "+i.pointerUp+" "+i.pointerClick+" sort keyup ").replace(L.regex.spaces," ").split(" ").join(s+" "),t.find(i.selectorSort).add(t.filter(i.selectorSort)).unbind(o).bind(o,function(e,t){var r,o,s,a=A(e.target),n=" "+e.type+" ";if(!(1!==(e.which||e.button)&&!n.match(" "+i.pointerClick+" | sort | keyup ")||" keyup "===n&&e.which!==L.keyCodes.enter||n.match(" "+i.pointerClick+" ")&&void 0!==e.which||n.match(" "+i.pointerUp+" ")&&d!==e.target&&!0!==t)){if(n.match(" "+i.pointerDown+" "))return d=e.target,void("1"===(s=a.jquery.split("."))[0]&&s[1]<4&&e.preventDefault());if(d=null,r=L.getClosest(A(this),"."+L.css.header),L.regex.formElements.test(e.target.nodeName)||a.hasClass(i.cssNoSort)||0<a.parents("."+i.cssNoSort).length||r.hasClass("sorter-false")||0<a.parents("button").length)return!i.cancelSelection;i.delayInit&&L.isEmptyObject(i.cache)&&L.buildCache(i),i.last.clickedIndex=r.attr("data-column")||r.index(),(o=i.$headerIndexed[i.last.clickedIndex][0])&&!o.sortDisabled&&L.initSort(i,o,e)}}),i.cancelSelection&&t.attr("unselectable","on").bind("selectstart",!1).css({"user-select":"none",MozUserSelect:"none"})},buildHeaders:function(d){var e,l,t,r;for(d.headerList=[],d.headerContent=[],d.sortVars=[],L.debug(d,"core")&&(t=new Date),d.columns=L.computeColumnIndex(d.$table.children("thead, tfoot").children("tr")),l=d.cssIcon?'<i class="'+(d.cssIcon===L.css.icon?L.css.icon:d.cssIcon+" "+L.css.icon)+'"></i>':"",d.$headers=A(A.map(d.$table.find(d.selectorHeaders),function(e,t){var r,o,s,a,n,i=A(e);if(!L.getClosest(i,"tr").hasClass(d.cssIgnoreRow))return/(th|td)/i.test(e.nodeName)||(n=L.getClosest(i,"th, td"),i.attr("data-column",n.attr("data-column"))),r=L.getColumnData(d.table,d.headers,t,!0),d.headerContent[t]=i.html(),""===d.headerTemplate||i.find("."+L.css.headerIn).length||(a=d.headerTemplate.replace(L.regex.templateContent,i.html()).replace(L.regex.templateIcon,i.find("."+L.css.icon).length?"":l),d.onRenderTemplate&&(o=d.onRenderTemplate.apply(i,[t,a]))&&"string"==typeof o&&(a=o),i.html('<div class="'+L.css.headerIn+'">'+a+"</div>")),d.onRenderHeader&&d.onRenderHeader.apply(i,[t,d,d.$table]),s=parseInt(i.attr("data-column"),10),e.column=s,n=L.getOrder(L.getData(i,r,"sortInitialOrder")||d.sortInitialOrder),d.sortVars[s]={count:-1,order:n?d.sortReset?[1,0,2]:[1,0]:d.sortReset?[0,1,2]:[0,1],lockedOrder:!1,sortedBy:""},void 0!==(n=L.getData(i,r,"lockedOrder")||!1)&&!1!==n&&(d.sortVars[s].lockedOrder=!0,d.sortVars[s].order=L.getOrder(n)?[1,1]:[0,0]),d.headerList[t]=e,i.addClass(L.css.header+" "+d.cssHeader),L.getClosest(i,"tr").addClass(L.css.headerRow+" "+d.cssHeaderRow).attr("role","row"),d.tabIndex&&i.attr("tabindex",0),e})),d.$headerIndexed=[],r=0;r<d.columns;r++)L.isEmptyObject(d.sortVars[r])&&(d.sortVars[r]={}),e=d.$headers.filter('[data-column="'+r+'"]'),d.$headerIndexed[r]=e.length?e.not(".sorter-false").length?e.not(".sorter-false").filter(":last"):e.filter(":last"):A();d.$table.find(d.selectorHeaders).attr({scope:"col",role:"columnheader"}),L.updateHeader(d),L.debug(d,"core")&&(console.log("Built headers:"+L.benchmark(t)),console.log(d.$headers))},addInstanceMethods:function(e){A.extend(L.instanceMethods,e)},setupParsers:function(e,t){var r,o,s,a,n,i,d,l,c,g,p,u,f,h,m=e.table,b=0,y=L.debug(e,"core"),w={};if(e.$tbodies=e.$table.children("tbody:not(."+e.cssInfoBlock+")"),0===(h=(f=void 0===t?e.$tbodies:t).length))return y?console.warn("Warning: *Empty table!* Not building a parser cache"):"";for(y&&(u=new Date,console[console.group?"group":"log"]("Detecting parsers for each column")),o={extractors:[],parsers:[]};b<h;){if((r=f[b].rows).length)for(n=0,a=e.columns,i=0;i<a;i++){if((d=e.$headerIndexed[n])&&d.length&&(l=L.getColumnData(m,e.headers,n),p=L.getParserById(L.getData(d,l,"extractor")),g=L.getParserById(L.getData(d,l,"sorter")),c="false"===L.getData(d,l,"parser"),e.empties[n]=(L.getData(d,l,"empty")||e.emptyTo||(e.emptyToBottom?"bottom":"top")).toLowerCase(),e.strings[n]=(L.getData(d,l,"string")||e.stringTo||"max").toLowerCase(),c&&(g=L.getParserById("no-parser")),p=p||!1,g=g||L.detectParserForColumn(e,r,-1,n),y&&(w["("+n+") "+d.text()]={parser:g.id,extractor:p?p.id:"none",string:e.strings[n],empty:e.empties[n]}),o.parsers[n]=g,o.extractors[n]=p,0<(s=d[0].colSpan-1)))for(n+=s,a+=s;0<s+1;)o.parsers[n-s]=g,o.extractors[n-s]=p,s--;n++}b+=o.parsers.length?h:1}y&&(L.isEmptyObject(w)?console.warn(" No parsers detected!"):console[console.table?"table":"log"](w),console.log("Completed detecting parsers"+L.benchmark(u)),console.groupEnd&&console.groupEnd()),e.parsers=o.parsers,e.extractors=o.extractors},addParser:function(e){var t,r=L.parsers.length,o=!0;for(t=0;t<r;t++)L.parsers[t].id.toLowerCase()===e.id.toLowerCase()&&(o=!1);o&&(L.parsers[L.parsers.length]=e)},getParserById:function(e){if("false"==e)return!1;var t,r=L.parsers.length;for(t=0;t<r;t++)if(L.parsers[t].id.toLowerCase()===e.toString().toLowerCase())return L.parsers[t];return!1},detectParserForColumn:function(e,t,r,o){for(var s,a,n,i=L.parsers.length,d=!1,l="",c=L.debug(e,"core"),g=!0;""===l&&g;)(n=t[++r])&&r<50?n.className.indexOf(L.cssIgnoreRow)<0&&(d=t[r].cells[o],l=L.getElementText(e,d,o),a=A(d),c&&console.log("Checking if value was empty on row "+r+", column: "+o+': "'+l+'"')):g=!1;for(;0<=--i;)if((s=L.parsers[i])&&"text"!==s.id&&s.is&&s.is(l,e.table,d,a))return s;return L.getParserById("text")},getElementText:function(e,t,r){if(!t)return"";var o,s=e.textExtraction||"",a=t.jquery?t:A(t);return"string"==typeof s?"basic"===s&&void 0!==(o=a.attr(e.textAttribute))?A.trim(o):A.trim(t.textContent||a.text()):"function"==typeof s?A.trim(s(a[0],e.table,r)):"function"==typeof(o=L.getColumnData(e.table,s,r))?A.trim(o(a[0],e.table,r)):A.trim(a[0].textContent||a.text())},getParsedText:function(e,t,r,o){void 0===o&&(o=L.getElementText(e,t,r));var s=""+o,a=e.parsers[r],n=e.extractors[r];return a&&(n&&"function"==typeof n.format&&(o=n.format(o,e.table,t,r)),s="no-parser"===a.id?"":a.format(""+o,e.table,t,r),e.ignoreCase&&"string"==typeof s&&(s=s.toLowerCase())),s},buildCache:function(e,t,r){var o,s,a,n,i,d,l,c,g,p,u,f,h,m,b,y,w,x,v,C,$,I,D=e.table,R=e.parsers,T=L.debug(e,"core");if(e.$tbodies=e.$table.children("tbody:not(."+e.cssInfoBlock+")"),l=void 0===r?e.$tbodies:r,e.cache={},e.totalRows=0,!R)return T?console.warn("Warning: *Empty table!* Not building a cache"):"";for(T&&(f=new Date),e.showProcessing&&L.isProcessing(D,!0),d=0;d<l.length;d++){for(y=[],o=e.cache[d]={normalized:[]},h=l[d]&&l[d].rows.length||0,n=0;n<h;++n)if(m={child:[],raw:[]},g=[],!(c=A(l[d].rows[n])).hasClass(e.selectorRemove.slice(1)))if(c.hasClass(e.cssChildRow)&&0!==n)for($=o.normalized.length-1,(b=o.normalized[$][e.columns]).$row=b.$row.add(c),c.prev().hasClass(e.cssChildRow)||c.prev().addClass(L.css.cssHasChild),p=c.children("th, td"),$=b.child.length,b.child[$]=[],x=0,C=e.columns,i=0;i<C;i++)(u=p[i])&&(b.child[$][i]=L.getParsedText(e,u,i),0<(w=p[i].colSpan-1)&&(x+=w,C+=w)),x++;else{for(m.$row=c,m.order=n,x=0,C=e.columns,i=0;i<C;++i){if((u=c[0].cells[i])&&x<e.columns&&(!(v=void 0!==R[x])&&T&&console.warn("No parser found for row: "+n+", column: "+i+'; cell containing: "'+A(u).text()+'"; does it have a header?'),s=L.getElementText(e,u,x),m.raw[x]=s,a=L.getParsedText(e,u,x,s),g[x]=a,v&&"numeric"===(R[x].type||"").toLowerCase()&&(y[x]=Math.max(Math.abs(a)||0,y[x]||0)),0<(w=u.colSpan-1))){for(I=0;I<=w;)a=e.duplicateSpan||0===I?a:"string"!=typeof e.textExtraction&&L.getElementText(e,u,x+I)||"",m.raw[x+I]=a,g[x+I]=a,I++;x+=w,C+=w}x++}g[e.columns]=m,o.normalized[o.normalized.length]=g}o.colMax=y,e.totalRows+=o.normalized.length}if(e.showProcessing&&L.isProcessing(D),T){for($=Math.min(5,e.cache[0].normalized.length),console[console.group?"group":"log"]("Building cache for "+e.totalRows+" rows (showing "+$+" rows in log) and "+e.columns+" columns"+L.benchmark(f)),s={},i=0;i<e.columns;i++)for(x=0;x<$;x++)s["row: "+x]||(s["row: "+x]={}),s["row: "+x][e.$headerIndexed[i].text()]=e.cache[0].normalized[x][i];console[console.table?"table":"log"](s),console.groupEnd&&console.groupEnd()}A.isFunction(t)&&t(D)},getColumnText:function(e,t,r,o){var s,a,n,i,d,l,c,g,p,u,f="function"==typeof r,h="all"===t,m={raw:[],parsed:[],$cell:[]},b=(e=A(e)[0]).config;if(!L.isEmptyObject(b)){for(d=b.$tbodies.length,s=0;s<d;s++)for(l=(n=b.cache[s].normalized).length,a=0;a<l;a++)i=n[a],o&&!i[b.columns].$row.is(o)||(u=!0,g=h?i.slice(0,b.columns):i[t],i=i[b.columns],c=h?i.raw:i.raw[t],p=h?i.$row.children():i.$row.children().eq(t),f&&(u=r({tbodyIndex:s,rowIndex:a,parsed:g,raw:c,$row:i.$row,$cell:p})),!1!==u&&(m.parsed[m.parsed.length]=g,m.raw[m.raw.length]=c,m.$cell[m.$cell.length]=p));return m}L.debug(b,"core")&&console.warn("No cache found - aborting getColumnText function!")},setHeadersCss:function(a){function e(e,t){e.removeClass(n).addClass(i[t]).attr("aria-sort",l[t]).find("."+L.css.icon).removeClass(d[2]).addClass(d[t])}var t,r,o=a.sortList,s=o.length,n=L.css.sortNone+" "+a.cssNone,i=[L.css.sortAsc+" "+a.cssAsc,L.css.sortDesc+" "+a.cssDesc],d=[a.cssIconAsc,a.cssIconDesc,a.cssIconNone],l=["ascending","descending"],c=a.$table.find("tfoot tr").children("td, th").add(A(a.namespace+"_extra_headers")).removeClass(i.join(" ")),g=a.$headers.add(A("thead "+a.namespace+"_extra_headers")).removeClass(i.join(" ")).addClass(n).attr("aria-sort","none").find("."+L.css.icon).removeClass(d.join(" ")).end();for(g.not(".sorter-false").find("."+L.css.icon).addClass(d[2]),a.cssIconDisabled&&g.filter(".sorter-false").find("."+L.css.icon).addClass(a.cssIconDisabled),t=0;t<s;t++)if(2!==o[t][1]){if((g=(g=a.$headers.filter(function(e){for(var t=!0,r=a.$headers.eq(e),o=parseInt(r.attr("data-column"),10),s=o+L.getClosest(r,"th, td")[0].colSpan;o<s;o++)t=!!t&&(t||-1<L.isValueInArray(o,a.sortList));return t})).not(".sorter-false").filter('[data-column="'+o[t][0]+'"]'+(1===s?":last":""))).length)for(r=0;r<g.length;r++)g[r].sortDisabled||e(g.eq(r),o[t][1]);c.length&&e(c.filter('[data-column="'+o[t][0]+'"]'),o[t][1])}for(s=a.$headers.length,t=0;t<s;t++)L.setColumnAriaLabel(a,a.$headers.eq(t))},getClosest:function(e,t){return A.fn.closest?e.closest(t):e.is(t)?e:e.parents(t).filter(":first")},setColumnAriaLabel:function(e,t,r){if(t.length){var o=parseInt(t.attr("data-column"),10),s=e.sortVars[o],a=t.hasClass(L.css.sortAsc)?"sortAsc":t.hasClass(L.css.sortDesc)?"sortDesc":"sortNone",n=A.trim(t.text())+": "+L.language[a];t.hasClass("sorter-false")||!1===r?n+=L.language.sortDisabled:(a=(s.count+1)%s.order.length,r=s.order[a],n+=L.language[0===r?"nextAsc":1===r?"nextDesc":"nextNone"]),t.attr("aria-label",n),s.sortedBy?t.attr("data-sortedBy",s.sortedBy):t.removeAttr("data-sortedBy")}},updateHeader:function(e){var t,r,o,s,a=e.table,n=e.$headers.length;for(t=0;t<n;t++)o=e.$headers.eq(t),s=L.getColumnData(a,e.headers,t,!0),r="false"===L.getData(o,s,"sorter")||"false"===L.getData(o,s,"parser"),L.setColumnSort(e,o,r)},setColumnSort:function(e,t,r){var o=e.table.id;t[0].sortDisabled=r,t[r?"addClass":"removeClass"]("sorter-false").attr("aria-disabled",""+r),e.tabIndex&&(r?t.removeAttr("tabindex"):t.attr("tabindex","0")),o&&(r?t.removeAttr("aria-controls"):t.attr("aria-controls",o))},updateHeaderSortCount:function(e,t){var r,o,s,a,n,i,d,l,c=t||e.sortList,g=c.length;for(e.sortList=[],a=0;a<g;a++)if(d=c[a],(r=parseInt(d[0],10))<e.columns){switch(e.sortVars[r].order||(l=L.getOrder(e.sortInitialOrder)?e.sortReset?[1,0,2]:[1,0]:e.sortReset?[0,1,2]:[0,1],e.sortVars[r].order=l,e.sortVars[r].count=0),l=e.sortVars[r].order,o=(o=(""+d[1]).match(/^(1|d|s|o|n)/))?o[0]:""){case"1":case"d":o=1;break;case"s":o=n||0;break;case"o":o=0===(i=l[(n||0)%l.length])?1:1===i?0:2;break;case"n":o=l[++e.sortVars[r].count%l.length];break;default:o=0}n=0===a?o:n,s=[r,parseInt(o,10)||0],e.sortList[e.sortList.length]=s,o=A.inArray(s[1],l),e.sortVars[r].count=0<=o?o:s[1]%l.length}},updateAll:function(e,t,r){var o=e.table;o.isUpdating=!0,L.refreshWidgets(o,!0,!0),L.buildHeaders(e),L.bindEvents(o,e.$headers,!0),L.bindMethods(e),L.commonUpdate(e,t,r)},update:function(e,t,r){e.table.isUpdating=!0,L.updateHeader(e),L.commonUpdate(e,t,r)},updateHeaders:function(e,t){e.table.isUpdating=!0,L.buildHeaders(e),L.bindEvents(e.table,e.$headers,!0),L.resortComplete(e,t)},updateCell:function(e,t,r,o){if(A(t).closest("tr").hasClass(e.cssChildRow))console.warn('Tablesorter Warning! "updateCell" for child row content has been disabled, use "update" instead');else{if(L.isEmptyObject(e.cache))return L.updateHeader(e),void L.commonUpdate(e,r,o);e.table.isUpdating=!0,e.$table.find(e.selectorRemove).remove();var s,a,n,i,d,l,c=e.$tbodies,g=A(t),p=c.index(L.getClosest(g,"tbody")),u=e.cache[p],f=L.getClosest(g,"tr");if(t=g[0],c.length&&0<=p){if(n=c.eq(p).find("tr").not("."+e.cssChildRow).index(f),d=u.normalized[n],(l=f[0].cells.length)!==e.columns)for(s=!1,a=i=0;a<l;a++)s||f[0].cells[a]===t?s=!0:i+=f[0].cells[a].colSpan;else i=g.index();s=L.getElementText(e,t,i),d[e.columns].raw[i]=s,s=L.getParsedText(e,t,i,s),d[i]=s,"numeric"===(e.parsers[i].type||"").toLowerCase()&&(u.colMax[i]=Math.max(Math.abs(s)||0,u.colMax[i]||0)),!1!==(s="undefined"!==r?r:e.resort)?L.checkResort(e,s,o):L.resortComplete(e,o)}else L.debug(e,"core")&&console.error("updateCell aborted, tbody missing or not within the indicated table"),e.table.isUpdating=!1}},addRows:function(e,t,r,o){var s,a,n,i,d,l,c,g,p,u,f,h,m,b="string"==typeof t&&1===e.$tbodies.length&&/<tr/.test(t||""),y=e.table;if(b)t=A(t),e.$tbodies.append(t);else if(!(t&&t instanceof A&&L.getClosest(t,"table")[0]===e.table))return L.debug(e,"core")&&console.error("addRows method requires (1) a jQuery selector reference to rows that have already been added to the table, or (2) row HTML string to be added to a table with only one tbody"),!1;if(y.isUpdating=!0,L.isEmptyObject(e.cache))L.updateHeader(e),L.commonUpdate(e,r,o);else{for(d=t.filter("tr").attr("role","row").length,n=e.$tbodies.index(t.parents("tbody").filter(":first")),e.parsers&&e.parsers.length||L.setupParsers(e),i=0;i<d;i++){for(p=0,c=t[i].cells.length,g=e.cache[n].normalized.length,f=[],u={child:[],raw:[],$row:t.eq(i),order:g},l=0;l<c;l++)h=t[i].cells[l],s=L.getElementText(e,h,p),u.raw[p]=s,a=L.getParsedText(e,h,p,s),f[p]=a,"numeric"===(e.parsers[p].type||"").toLowerCase()&&(e.cache[n].colMax[p]=Math.max(Math.abs(a)||0,e.cache[n].colMax[p]||0)),0<(m=h.colSpan-1)&&(p+=m),p++;f[e.columns]=u,e.cache[n].normalized[g]=f}L.checkResort(e,r,o)}},updateCache:function(e,t,r){e.parsers&&e.parsers.length||L.setupParsers(e,r),L.buildCache(e,t,r)},appendCache:function(e,t){var r,o,s,a,n,i,d,l=e.table,c=e.$tbodies,g=[],p=e.cache;if(L.isEmptyObject(p))return e.appender?e.appender(l,g):l.isUpdating?e.$table.triggerHandler("updateComplete",l):"";for(L.debug(e,"core")&&(d=new Date),i=0;i<c.length;i++)if((s=c.eq(i)).length){for(a=L.processTbody(l,s,!0),o=(r=p[i].normalized).length,n=0;n<o;n++)g[g.length]=r[n][e.columns].$row,e.appender&&(!e.pager||e.pager.removeRows||e.pager.ajax)||a.append(r[n][e.columns].$row);L.processTbody(l,a,!1)}e.appender&&e.appender(l,g),L.debug(e,"core")&&console.log("Rebuilt table"+L.benchmark(d)),t||e.appender||L.applyWidget(l),l.isUpdating&&e.$table.triggerHandler("updateComplete",l)},commonUpdate:function(e,t,r){e.$table.find(e.selectorRemove).remove(),L.setupParsers(e),L.buildCache(e),L.checkResort(e,t,r)},initSort:function(t,e,r){if(t.table.isUpdating)return setTimeout(function(){L.initSort(t,e,r)},50);var o,s,a,n,i,d,l,c=!r[t.sortMultiSortKey],g=t.table,p=t.$headers.length,u=L.getClosest(A(e),"th, td"),f=parseInt(u.attr("data-column"),10),h="mouseup"===r.type?"user":r.type,m=t.sortVars[f].order;if(u=u[0],t.$table.triggerHandler("sortStart",g),d=(t.sortVars[f].count+1)%m.length,t.sortVars[f].count=r[t.sortResetKey]?2:d,t.sortRestart)for(a=0;a<p;a++)l=t.$headers.eq(a),f!==(d=parseInt(l.attr("data-column"),10))&&(c||l.hasClass(L.css.sortNone))&&(t.sortVars[d].count=-1);if(c){if(A.each(t.sortVars,function(e){t.sortVars[e].sortedBy=""}),t.sortList=[],t.last.sortList=[],null!==t.sortForce)for(o=t.sortForce,s=0;s<o.length;s++)o[s][0]!==f&&(t.sortList[t.sortList.length]=o[s],t.sortVars[o[s][0]].sortedBy="sortForce");if((n=m[t.sortVars[f].count])<2&&(t.sortList[t.sortList.length]=[f,n],t.sortVars[f].sortedBy=h,1<u.colSpan))for(s=1;s<u.colSpan;s++)t.sortList[t.sortList.length]=[f+s,n],t.sortVars[f+s].count=A.inArray(n,m),t.sortVars[f+s].sortedBy=h}else if(t.sortList=A.extend([],t.last.sortList),0<=L.isValueInArray(f,t.sortList))for(t.sortVars[f].sortedBy=h,s=0;s<t.sortList.length;s++)(d=t.sortList[s])[0]===f&&(d[1]=m[t.sortVars[f].count],2===d[1]&&(t.sortList.splice(s,1),t.sortVars[f].count=-1));else if(n=m[t.sortVars[f].count],t.sortVars[f].sortedBy=h,n<2&&(t.sortList[t.sortList.length]=[f,n],1<u.colSpan))for(s=1;s<u.colSpan;s++)t.sortList[t.sortList.length]=[f+s,n],t.sortVars[f+s].count=A.inArray(n,m),t.sortVars[f+s].sortedBy=h;if(t.last.sortList=A.extend([],t.sortList),t.sortList.length&&t.sortAppend&&(o=A.isArray(t.sortAppend)?t.sortAppend:t.sortAppend[t.sortList[0][0]],!L.isEmptyObject(o)))for(s=0;s<o.length;s++)if(o[s][0]!==f&&L.isValueInArray(o[s][0],t.sortList)<0){if(i=(""+(n=o[s][1])).match(/^(a|d|s|o|n)/))switch(d=t.sortList[0][1],i[0]){case"d":n=1;break;case"s":n=d;break;case"o":n=0===d?1:0;break;case"n":n=(d+1)%m.length;break;default:n=0}t.sortList[t.sortList.length]=[o[s][0],n],t.sortVars[o[s][0]].sortedBy="sortAppend"}t.$table.triggerHandler("sortBegin",g),setTimeout(function(){L.setHeadersCss(t),L.multisort(t),L.appendCache(t),t.$table.triggerHandler("sortBeforeEnd",g),t.$table.triggerHandler("sortEnd",g)},1)},multisort:function(l){var e,t,c,r,g=l.table,p=[],u=0,f=l.textSorter||"",h=l.sortList,m=h.length,o=l.$tbodies.length;if(!l.serverSideSorting&&!L.isEmptyObject(l.cache)){if(L.debug(l,"core")&&(t=new Date),"object"==typeof f)for(c=l.columns;c--;)"function"==typeof(r=L.getColumnData(g,f,c))&&(p[c]=r);for(e=0;e<o;e++)c=l.cache[e].colMax,l.cache[e].normalized.sort(function(e,t){var r,o,s,a,n,i,d;for(r=0;r<m;r++){if(s=h[r][0],a=h[r][1],u=0===a,l.sortStable&&e[s]===t[s]&&1===m)return e[l.columns].order-t[l.columns].order;if(n=(o=/n/i.test(L.getSortType(l.parsers,s)))&&l.strings[s]?(o="boolean"==typeof L.string[l.strings[s]]?(u?1:-1)*(L.string[l.strings[s]]?-1:1):l.strings[s]&&L.string[l.strings[s]]||0,l.numberSorter?l.numberSorter(e[s],t[s],u,c[s],g):L["sortNumeric"+(u?"Asc":"Desc")](e[s],t[s],o,c[s],s,l)):(i=u?e:t,d=u?t:e,"function"==typeof f?f(i[s],d[s],u,s,g):"function"==typeof p[s]?p[s](i[s],d[s],u,s,g):L["sortNatural"+(u?"Asc":"Desc")](e[s]||"",t[s]||"",s,l)))return n}return e[l.columns].order-t[l.columns].order});L.debug(l,"core")&&console.log("Applying sort "+h.toString()+L.benchmark(t))}},resortComplete:function(e,t){e.table.isUpdating&&e.$table.triggerHandler("updateComplete",e.table),A.isFunction(t)&&t(e.table)},checkResort:function(e,t,r){var o=A.isArray(t)?t:e.sortList;!1===(void 0===t?e.resort:t)||e.serverSideSorting||e.table.isProcessing?(L.resortComplete(e,r),L.applyWidget(e.table,!1)):o.length?L.sortOn(e,o,function(){L.resortComplete(e,r)},!0):L.sortReset(e,function(){L.resortComplete(e,r),L.applyWidget(e.table,!1)})},sortOn:function(e,t,r,o){var s,a=e.table;for(e.$table.triggerHandler("sortStart",a),s=0;s<e.columns;s++)e.sortVars[s].sortedBy=-1<L.isValueInArray(s,t)?"sorton":"";L.updateHeaderSortCount(e,t),L.setHeadersCss(e),e.delayInit&&L.isEmptyObject(e.cache)&&L.buildCache(e),e.$table.triggerHandler("sortBegin",a),L.multisort(e),L.appendCache(e,o),e.$table.triggerHandler("sortBeforeEnd",a),e.$table.triggerHandler("sortEnd",a),L.applyWidget(a),A.isFunction(r)&&r(a)},sortReset:function(e,t){var r;for(e.sortList=[],r=0;r<e.columns;r++)e.sortVars[r].count=-1,e.sortVars[r].sortedBy="";L.setHeadersCss(e),L.multisort(e),L.appendCache(e),A.isFunction(t)&&t(e.table)},getSortType:function(e,t){return e&&e[t]&&e[t].type||""},getOrder:function(e){return/^d/i.test(e)||1===e},sortNatural:function(e,t){if(e===t)return 0;e=(e||"").toString(),t=(t||"").toString();var r,o,s,a,n,i,d=L.regex;if(d.hex.test(t)){if((r=parseInt(e.match(d.hex),16))<(o=parseInt(t.match(d.hex),16)))return-1;if(o<r)return 1}for(r=e.replace(d.chunk,"\\0$1\\0").replace(d.chunks,"").split("\\0"),o=t.replace(d.chunk,"\\0$1\\0").replace(d.chunks,"").split("\\0"),i=Math.max(r.length,o.length),n=0;n<i;n++){if(s=isNaN(r[n])?r[n]||0:parseFloat(r[n])||0,a=isNaN(o[n])?o[n]||0:parseFloat(o[n])||0,isNaN(s)!==isNaN(a))return isNaN(s)?1:-1;if(typeof s!=typeof a&&(s+="",a+=""),s<a)return-1;if(a<s)return 1}return 0},sortNaturalAsc:function(e,t,r,o){if(e===t)return 0;var s=L.string[o.empties[r]||o.emptyTo];return""===e&&0!==s?"boolean"==typeof s?s?-1:1:-s||-1:""===t&&0!==s?"boolean"==typeof s?s?1:-1:s||1:L.sortNatural(e,t)},sortNaturalDesc:function(e,t,r,o){if(e===t)return 0;var s=L.string[o.empties[r]||o.emptyTo];return""===e&&0!==s?"boolean"==typeof s?s?-1:1:s||1:""===t&&0!==s?"boolean"==typeof s?s?1:-1:-s||-1:L.sortNatural(t,e)},sortText:function(e,t){return t<e?1:e<t?-1:0},getTextValue:function(e,t,r){if(r){var o,s=e?e.length:0,a=r+t;for(o=0;o<s;o++)a+=e.charCodeAt(o);return t*a}return 0},sortNumericAsc:function(e,t,r,o,s,a){if(e===t)return 0;var n=L.string[a.empties[s]||a.emptyTo];return""===e&&0!==n?"boolean"==typeof n?n?-1:1:-n||-1:""===t&&0!==n?"boolean"==typeof n?n?1:-1:n||1:(isNaN(e)&&(e=L.getTextValue(e,r,o)),isNaN(t)&&(t=L.getTextValue(t,r,o)),e-t)},sortNumericDesc:function(e,t,r,o,s,a){if(e===t)return 0;var n=L.string[a.empties[s]||a.emptyTo];return""===e&&0!==n?"boolean"==typeof n?n?-1:1:n||1:""===t&&0!==n?"boolean"==typeof n?n?1:-1:-n||-1:(isNaN(e)&&(e=L.getTextValue(e,r,o)),isNaN(t)&&(t=L.getTextValue(t,r,o)),t-e)},sortNumeric:function(e,t){return e-t},addWidget:function(e){e.id&&!L.isEmptyObject(L.getWidgetById(e.id))&&console.warn('"'+e.id+'" widget was loaded more than once!'),L.widgets[L.widgets.length]=e},hasWidget:function(e,t){return(e=A(e)).length&&e[0].config&&e[0].config.widgetInit[t]||!1},getWidgetById:function(e){var t,r,o=L.widgets.length;for(t=0;t<o;t++)if((r=L.widgets[t])&&r.id&&r.id.toLowerCase()===e.toLowerCase())return r},applyWidgetOptions:function(e){var t,r,o,s=e.config,a=s.widgets.length;if(a)for(t=0;t<a;t++)(r=L.getWidgetById(s.widgets[t]))&&r.options&&(o=A.extend(!0,{},r.options),s.widgetOptions=A.extend(!0,o,s.widgetOptions),A.extend(!0,L.defaults.widgetOptions,r.options))},addWidgetFromClass:function(e){var t,r,o=e.config,s="^"+o.widgetClass.replace(L.regex.templateName,"(\\S+)+")+"$",a=new RegExp(s,"g"),n=(e.className||"").split(L.regex.spaces);if(n.length)for(t=n.length,r=0;r<t;r++)n[r].match(a)&&(o.widgets[o.widgets.length]=n[r].replace(a,"$1"))},applyWidgetId:function(e,t,r){var o,s,a,n=(e=A(e)[0]).config,i=n.widgetOptions,d=L.debug(n,"core"),l=L.getWidgetById(t);l&&(a=l.id,o=!1,A.inArray(a,n.widgets)<0&&(n.widgets[n.widgets.length]=a),d&&(s=new Date),!r&&n.widgetInit[a]||(n.widgetInit[a]=!0,e.hasInitialized&&L.applyWidgetOptions(e),"function"==typeof l.init&&(o=!0,d&&console[console.group?"group":"log"]("Initializing "+a+" widget"),l.init(e,l,n,i))),r||"function"!=typeof l.format||(o=!0,d&&console[console.group?"group":"log"]("Updating "+a+" widget"),l.format(e,n,i,!1)),d&&o&&(console.log("Completed "+(r?"initializing ":"applying ")+a+" widget"+L.benchmark(s)),console.groupEnd&&console.groupEnd()))},applyWidget:function(e,t,r){var o,s,a,n,i,d=(e=A(e)[0]).config,l=L.debug(d,"core"),c=[];if(!1===t||!e.hasInitialized||!e.isApplyingWidgets&&!e.isUpdating){if(l&&(i=new Date),L.addWidgetFromClass(e),clearTimeout(d.timerReady),d.widgets.length){for(e.isApplyingWidgets=!0,d.widgets=A.grep(d.widgets,function(e,t){return A.inArray(e,d.widgets)===t}),s=(a=d.widgets||[]).length,o=0;o<s;o++)(n=L.getWidgetById(a[o]))&&n.id?(n.priority||(n.priority=10),c[o]=n):l&&console.warn('"'+a[o]+'" was enabled, but the widget code has not been loaded!');for(c.sort(function(e,t){return e.priority<t.priority?-1:e.priority===t.priority?0:1}),s=c.length,l&&console[console.group?"group":"log"]("Start "+(t?"initializing":"applying")+" widgets"),o=0;o<s;o++)(n=c[o])&&n.id&&L.applyWidgetId(e,n.id,t);l&&console.groupEnd&&console.groupEnd()}d.timerReady=setTimeout(function(){e.isApplyingWidgets=!1,A.data(e,"lastWidgetApplication",new Date),d.$table.triggerHandler("tablesorter-ready"),t||"function"!=typeof r||r(e),l&&(n=d.widgets.length,console.log("Completed "+(!0===t?"initializing ":"applying ")+n+" widget"+(1!==n?"s":"")+L.benchmark(i)))},10)}},removeWidget:function(e,t,r){var o,s,a,n,i=(e=A(e)[0]).config;if(!0===t)for(t=[],n=L.widgets.length,a=0;a<n;a++)(s=L.widgets[a])&&s.id&&(t[t.length]=s.id);else t=(A.isArray(t)?t.join(","):t||"").toLowerCase().split(/[\s,]+/);for(n=t.length,o=0;o<n;o++)s=L.getWidgetById(t[o]),0<=(a=A.inArray(t[o],i.widgets))&&!0!==r&&i.widgets.splice(a,1),s&&s.remove&&(L.debug(i,"core")&&console.log((r?"Refreshing":"Removing")+' "'+t[o]+'" widget'),s.remove(e,i,i.widgetOptions,r),i.widgetInit[t[o]]=!1);i.$table.triggerHandler("widgetRemoveEnd",e)},refreshWidgets:function(e,t,r){function o(e){A(e).triggerHandler("refreshComplete")}var s,a,n=(e=A(e)[0]).config.widgets,i=L.widgets,d=i.length,l=[];for(s=0;s<d;s++)(a=i[s])&&a.id&&(t||A.inArray(a.id,n)<0)&&(l[l.length]=a.id);L.removeWidget(e,l.join(","),!0),!0!==r?(L.applyWidget(e,t||!1,o),t&&L.applyWidget(e,!1,o)):o(e)},benchmark:function(e){return" ("+((new Date).getTime()-e.getTime())+" ms)"},log:function(){console.log(arguments)},debug:function(e,t){return e&&(!0===e.debug||"string"==typeof e.debug&&-1<e.debug.indexOf(t))},isEmptyObject:function(e){for(var t in e)return!1;return!0},isValueInArray:function(e,t){var r,o=t&&t.length||0;for(r=0;r<o;r++)if(t[r][0]===e)return r;return-1},formatFloat:function(e,t){return"string"!=typeof e||""===e?e:(e=(t&&t.config?!1!==t.config.usNumberFormat:void 0===t||t)?e.replace(L.regex.comma,""):e.replace(L.regex.digitNonUS,"").replace(L.regex.comma,"."),L.regex.digitNegativeTest.test(e)&&(e=e.replace(L.regex.digitNegativeReplace,"-$1")),r=parseFloat(e),isNaN(r)?A.trim(e):r);var r},isDigit:function(e){return isNaN(e)?L.regex.digitTest.test(e.toString().replace(L.regex.digitReplace,"")):""!==e},computeColumnIndex:function(e,t){var r,o,s,a,n,i,d,l,c,g,p=t&&t.columns||0,u=[],f=new Array(p);for(r=0;r<e.length;r++)for(i=e[r].cells,o=0;o<i.length;o++){for(d=r,l=(n=i[o]).rowSpan||1,c=n.colSpan||1,void 0===u[d]&&(u[d]=[]),s=0;s<u[d].length+1;s++)if(void 0===u[d][s]){g=s;break}for(p&&n.cellIndex===g||(n.setAttribute?n.setAttribute("data-column",g):A(n).attr("data-column",g)),s=d;s<d+l;s++)for(void 0===u[s]&&(u[s]=[]),f=u[s],a=g;a<g+c;a++)f[a]="x"}return L.checkColumnCount(e,u,f.length),f.length},checkColumnCount:function(e,t,r){var o,s,a=!0,n=[];for(o=0;o<t.length;o++)if(t[o]&&(s=t[o].length,t[o].length!==r)){a=!1;break}a||(e.each(function(e,t){var r=t.parentElement.nodeName;n.indexOf(r)<0&&n.push(r)}),console.error("Invalid or incorrect number of columns in the "+n.join(" or ")+"; expected "+r+", but found "+s+" columns"))},fixColumnWidth:function(e){var t,r,o,s,a,n=(e=A(e)[0]).config,i=n.$table.children("colgroup");if(i.length&&i.hasClass(L.css.colgroup)&&i.remove(),n.widthFixed&&0===n.$table.children("colgroup").length){for(i=A('<colgroup class="'+L.css.colgroup+'">'),t=n.$table.width(),s=(o=n.$tbodies.find("tr:first").children(":visible")).length,a=0;a<s;a++)r=parseInt(o.eq(a).width()/t*1e3,10)/10+"%",i.append(A("<col>").css("width",r));n.$table.prepend(i)}},getData:function(e,t,r){var o,s,a="",n=A(e);return n.length?(o=!!A.metadata&&n.metadata(),s=" "+(n.attr("class")||""),void 0!==n.data(r)||void 0!==n.data(r.toLowerCase())?a+=n.data(r)||n.data(r.toLowerCase()):o&&void 0!==o[r]?a+=o[r]:t&&void 0!==t[r]?a+=t[r]:" "!==s&&s.match(" "+r+"-")&&(a=s.match(new RegExp("\\s"+r+"-([\\w-]+)"))[1]||""),A.trim(a)):""},getColumnData:function(e,t,r,o,s){if("object"!=typeof t||null===t)return t;var a,n=(e=A(e)[0]).config,i=s||n.$headers,d=n.$headerIndexed&&n.$headerIndexed[r]||i.find('[data-column="'+r+'"]:last');if(void 0!==t[r])return o?t[r]:t[i.index(d)];for(a in t)if("string"==typeof a&&d.filter(a).add(d.find(a)).length)return t[a]},isProcessing:function(e,t,r){var o=(e=A(e))[0].config,s=r||e.find("."+L.css.header);t?(void 0!==r&&0<o.sortList.length&&(s=s.filter(function(){return!this.sortDisabled&&0<=L.isValueInArray(parseFloat(A(this).attr("data-column")),o.sortList)})),e.add(s).addClass(L.css.processing+" "+o.cssProcessing)):e.add(s).removeClass(L.css.processing+" "+o.cssProcessing)},processTbody:function(e,t,r){if(e=A(e)[0],r)return e.isProcessing=!0,t.before('<colgroup class="tablesorter-savemyplace"/>'),A.fn.detach?t.detach():t.remove();var o=A(e).find("colgroup.tablesorter-savemyplace");t.insertAfter(o),o.remove(),e.isProcessing=!1},clearTableBody:function(e){A(e)[0].config.$tbodies.children().detach()},characterEquivalents:{a:"áàâãäąå",A:"ÁÀÂÃÄĄÅ",c:"çćč",C:"ÇĆČ",e:"éèêëěę",E:"ÉÈÊËĚĘ",i:"íìİîïı",I:"ÍÌİÎÏ",o:"óòôõöō",O:"ÓÒÔÕÖŌ",ss:"ß",SS:"ẞ",u:"úùûüů",U:"ÚÙÛÜŮ"},replaceAccents:function(e){var t,r="[",o=L.characterEquivalents;if(!L.characterRegex){for(t in L.characterRegexArray={},o)"string"==typeof t&&(r+=o[t],L.characterRegexArray[t]=new RegExp("["+o[t]+"]","g"));L.characterRegex=new RegExp(r+"]")}if(L.characterRegex.test(e))for(t in o)"string"==typeof t&&(e=e.replace(L.characterRegexArray[t],t));return e},validateOptions:function(e){var t,r,o,s,a="headers sortForce sortList sortAppend widgets".split(" "),n=e.originalSettings;if(n){for(t in L.debug(e,"core")&&(s=new Date),n)if("undefined"===(o=typeof L.defaults[t]))console.warn('Tablesorter Warning! "table.config.'+t+'" option not recognized');else if("object"===o)for(r in n[t])o=L.defaults[t]&&typeof L.defaults[t][r],A.inArray(t,a)<0&&"undefined"===o&&console.warn('Tablesorter Warning! "table.config.'+t+"."+r+'" option not recognized');L.debug(e,"core")&&console.log("validate options time:"+L.benchmark(s))}},restoreHeaders:function(e){var t,r,o=A(e)[0].config,s=o.$table.find(o.selectorHeaders),a=s.length;for(t=0;t<a;t++)(r=s.eq(t)).find("."+L.css.headerIn).length&&r.html(o.headerContent[t])},destroy:function(e,t,r){if((e=A(e)[0]).hasInitialized){L.removeWidget(e,!0,!1);var o,s=A(e),a=e.config,n=s.find("thead:first"),i=n.find("tr."+L.css.headerRow).removeClass(L.css.headerRow+" "+a.cssHeaderRow),d=s.find("tfoot:first > tr").children("th, td");!1===t&&0<=A.inArray("uitheme",a.widgets)&&(s.triggerHandler("applyWidgetId",["uitheme"]),s.triggerHandler("applyWidgetId",["zebra"])),n.find("tr").not(i).remove(),o="sortReset update updateRows updateAll updateHeaders updateCell addRows updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets removeWidget destroy mouseup mouseleave "+"keypress sortBegin sortEnd resetToLoadState ".split(" ").join(a.namespace+" "),s.removeData("tablesorter").unbind(o.replace(L.regex.spaces," ")),a.$headers.add(d).removeClass([L.css.header,a.cssHeader,a.cssAsc,a.cssDesc,L.css.sortAsc,L.css.sortDesc,L.css.sortNone].join(" ")).removeAttr("data-column").removeAttr("aria-label").attr("aria-disabled","true"),i.find(a.selectorSort).unbind("mousedown mouseup keypress ".split(" ").join(a.namespace+" ").replace(L.regex.spaces," ")),L.restoreHeaders(e),s.toggleClass(L.css.table+" "+a.tableClass+" tablesorter-"+a.theme,!1===t),s.removeClass(a.namespace.slice(1)),e.hasInitialized=!1,delete e.config.cache,"function"==typeof r&&r(e),L.debug(a,"core")&&console.log("tablesorter has been removed")}}};A.fn.tablesorter=function(t){return this.each(function(){var e=A.extend(!0,{},L.defaults,t,L.instanceMethods);e.originalSettings=t,!this.hasInitialized&&L.buildTable&&"TABLE"!==this.nodeName?L.buildTable(this,e):L.setup(this,e)})},window.console&&window.console.log||(L.logs=[],console={},console.log=console.warn=console.error=console.table=function(){var e=1<arguments.length?arguments:arguments[0];L.logs[L.logs.length]={date:Date.now(),log:e}}),L.addParser({id:"no-parser",is:function(){return!1},format:function(){return""},type:"text"}),L.addParser({id:"text",is:function(){return!0},format:function(e,t){var r=t.config;return e&&(e=A.trim(r.ignoreCase?e.toLocaleLowerCase():e),e=r.sortLocaleCompare?L.replaceAccents(e):e),e},type:"text"}),L.regex.nondigit=/[^\w,. \-()]/g,L.addParser({id:"digit",is:function(e){return L.isDigit(e)},format:function(e,t){var r=L.formatFloat((e||"").replace(L.regex.nondigit,""),t);return e&&"number"==typeof r?r:e?A.trim(e&&t.config.ignoreCase?e.toLocaleLowerCase():e):e},type:"numeric"}),L.regex.currencyReplace=/[+\-,. ]/g,L.regex.currencyTest=/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/,L.addParser({id:"currency",is:function(e){return e=(e||"").replace(L.regex.currencyReplace,""),L.regex.currencyTest.test(e)},format:function(e,t){var r=L.formatFloat((e||"").replace(L.regex.nondigit,""),t);return e&&"number"==typeof r?r:e?A.trim(e&&t.config.ignoreCase?e.toLocaleLowerCase():e):e},type:"numeric"}),L.regex.urlProtocolTest=/^(https?|ftp|file):\/\//,L.regex.urlProtocolReplace=/(https?|ftp|file):\/\/(www\.)?/,L.addParser({id:"url",is:function(e){return L.regex.urlProtocolTest.test(e)},format:function(e){return e?A.trim(e.replace(L.regex.urlProtocolReplace,"")):e},type:"text"}),L.regex.dash=/-/g,L.regex.isoDate=/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/,L.addParser({id:"isoDate",is:function(e){return L.regex.isoDate.test(e)},format:function(e){var t=e?new Date(e.replace(L.regex.dash,"/")):e;return t instanceof Date&&isFinite(t)?t.getTime():e},type:"numeric"}),L.regex.percent=/%/g,L.regex.percentTest=/(\d\s*?%|%\s*?\d)/,L.addParser({id:"percent",is:function(e){return L.regex.percentTest.test(e)&&e.length<15},format:function(e,t){return e?L.formatFloat(e.replace(L.regex.percent,""),t):e},type:"numeric"}),L.addParser({id:"image",is:function(e,t,r,o){return 0<o.find("img").length},format:function(e,t,r){return A(r).find("img").attr(t.config.imgAttr||"alt")||e},parsed:!0,type:"text"}),L.regex.dateReplace=/(\S)([AP]M)$/i,L.regex.usLongDateTest1=/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i,L.regex.usLongDateTest2=/^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i,L.addParser({id:"usLongDate",is:function(e){return L.regex.usLongDateTest1.test(e)||L.regex.usLongDateTest2.test(e)},format:function(e){var t=e?new Date(e.replace(L.regex.dateReplace,"$1 $2")):e;return t instanceof Date&&isFinite(t)?t.getTime():e},type:"numeric"}),L.regex.shortDateTest=/(^\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4})|(^\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2})/,L.regex.shortDateReplace=/[\-.,]/g,L.regex.shortDateXXY=/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,L.regex.shortDateYMD=/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/,L.convertFormat=function(e,t){e=(e||"").replace(L.regex.spaces," ").replace(L.regex.shortDateReplace,"/"),"mmddyyyy"===t?e=e.replace(L.regex.shortDateXXY,"$3/$1/$2"):"ddmmyyyy"===t?e=e.replace(L.regex.shortDateXXY,"$3/$2/$1"):"yyyymmdd"===t&&(e=e.replace(L.regex.shortDateYMD,"$1/$2/$3"));var r=new Date(e);return r instanceof Date&&isFinite(r)?r.getTime():""},L.addParser({id:"shortDate",is:function(e){return e=(e||"").replace(L.regex.spaces," ").replace(L.regex.shortDateReplace,"/"),L.regex.shortDateTest.test(e)},format:function(e,t,r,o){if(e){var s=t.config,a=s.$headerIndexed[o],n=a.length&&a.data("dateFormat")||L.getData(a,L.getColumnData(t,s.headers,o),"dateFormat")||s.dateFormat;return a.length&&a.data("dateFormat",n),L.convertFormat(e,n)||e}return e},type:"numeric"}),L.regex.timeTest=/^(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)$|^((?:[01]\d|[2][0-4]):[0-5]\d)$/i,L.regex.timeMatch=/(0?[1-9]|1[0-2]):([0-5]\d)(\s[AP]M)|((?:[01]\d|[2][0-4]):[0-5]\d)/i,L.addParser({id:"time",is:function(e){return L.regex.timeTest.test(e)},format:function(e){var t=(e||"").match(L.regex.timeMatch),r=new Date(e),o=e&&(null!==t?t[0]:"00:00 AM"),s=o?new Date("2000/01/01 "+o.replace(L.regex.dateReplace,"$1 $2")):o;return s instanceof Date&&isFinite(s)?(r instanceof Date&&isFinite(r)?r.getTime():0)?parseFloat(s.getTime()+"."+r.getTime()):s.getTime():e},type:"numeric"}),L.addParser({id:"metadata",is:function(){return!1},format:function(e,t,r){var o=t.config,s=o.parserMetadataName?o.parserMetadataName:"sortValue";return A(r).metadata()[s]},type:"numeric"}),L.addWidget({id:"zebra",priority:90,format:function(e,t,r){var o,s,a,n,i,d,l,c=new RegExp(t.cssChildRow,"i"),g=t.$tbodies.add(A(t.namespace+"_extra_table").children("tbody:not(."+t.cssInfoBlock+")"));for(i=0;i<g.length;i++)for(a=0,l=(o=g.eq(i).children("tr:visible").not(t.selectorRemove)).length,d=0;d<l;d++)s=o.eq(d),c.test(s[0].className)||a++,n=a%2==0,s.removeClass(r.zebra[n?1:0]).addClass(r.zebra[n?0:1])},remove:function(e,t,r,o){if(!o){var s,a,n=t.$tbodies,i=(r.zebra||["even","odd"]).join(" ");for(s=0;s<n.length;s++)(a=L.processTbody(e,n.eq(s),!0)).children().removeClass(i),L.processTbody(e,a,!1)}}})}(e),e.tablesorter});
|
js/tablesorter/jquery.tablesorter.widgets.js
CHANGED
|
@@ -1,397 +1,397 @@
|
|
| 1 |
-
/*! tablesorter (FORK) - updated
|
| 2 |
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
|
| 3 |
(function(factory){if (typeof define === 'function' && define.amd){define(['jquery'], factory);} else if (typeof module === 'object' && typeof module.exports === 'object'){module.exports = factory(require('jquery'));} else {factory(jQuery);}}(function(jQuery) {
|
| 4 |
-
/*! Widget: storage - updated 2018-03-18 (v2.30.0) */
|
| 5 |
-
/*global JSON:false */
|
| 6 |
-
;(function ($, window, document) {
|
| 7 |
-
'use strict';
|
| 8 |
-
|
| 9 |
-
var ts = $.tablesorter || {};
|
| 10 |
-
|
| 11 |
-
// update defaults for validator; these values must be falsy!
|
| 12 |
-
$.extend(true, ts.defaults, {
|
| 13 |
-
fixedUrl: '',
|
| 14 |
-
widgetOptions: {
|
| 15 |
-
storage_fixedUrl: '',
|
| 16 |
-
storage_group: '',
|
| 17 |
-
storage_page: '',
|
| 18 |
-
storage_storageType: '',
|
| 19 |
-
storage_tableId: '',
|
| 20 |
-
storage_useSessionStorage: ''
|
| 21 |
-
}
|
| 22 |
-
});
|
| 23 |
-
|
| 24 |
-
// *** Store data in local storage, with a cookie fallback ***
|
| 25 |
-
/* IE7 needs JSON library for JSON.stringify - (http://caniuse.com/#search=json)
|
| 26 |
-
if you need it, then include https://github.com/douglascrockford/JSON-js
|
| 27 |
-
|
| 28 |
-
$.parseJSON is not available is jQuery versions older than 1.4.1, using older
|
| 29 |
-
versions will only allow storing information for one page at a time
|
| 30 |
-
|
| 31 |
-
// *** Save data (JSON format only) ***
|
| 32 |
-
// val must be valid JSON... use http://jsonlint.com/ to ensure it is valid
|
| 33 |
-
var val = { "mywidget" : "data1" }; // valid JSON uses double quotes
|
| 34 |
-
// $.tablesorter.storage(table, key, val);
|
| 35 |
-
$.tablesorter.storage(table, 'tablesorter-mywidget', val);
|
| 36 |
-
|
| 37 |
-
// *** Get data: $.tablesorter.storage(table, key); ***
|
| 38 |
-
v = $.tablesorter.storage(table, 'tablesorter-mywidget');
|
| 39 |
-
// val may be empty, so also check for your data
|
| 40 |
-
val = (v && v.hasOwnProperty('mywidget')) ? v.mywidget : '';
|
| 41 |
-
alert(val); // 'data1' if saved, or '' if not
|
| 42 |
-
*/
|
| 43 |
-
ts.storage = function(table, key, value, options) {
|
| 44 |
-
table = $(table)[0];
|
| 45 |
-
var cookieIndex, cookies, date,
|
| 46 |
-
hasStorage = false,
|
| 47 |
-
values = {},
|
| 48 |
-
c = table.config,
|
| 49 |
-
wo = c && c.widgetOptions,
|
| 50 |
-
debug = ts.debug(c, 'storage'),
|
| 51 |
-
storageType = (
|
| 52 |
-
( options && options.storageType ) || ( wo && wo.storage_storageType )
|
| 53 |
-
).toString().charAt(0).toLowerCase(),
|
| 54 |
-
// deprecating "useSessionStorage"; any storageType setting overrides it
|
| 55 |
-
session = storageType ? '' :
|
| 56 |
-
( options && options.useSessionStorage ) || ( wo && wo.storage_useSessionStorage ),
|
| 57 |
-
$table = $(table),
|
| 58 |
-
// id from (1) options ID, (2) table 'data-table-group' attribute, (3) widgetOptions.storage_tableId,
|
| 59 |
-
// (4) table ID, then (5) table index
|
| 60 |
-
id = options && options.id ||
|
| 61 |
-
$table.attr( options && options.group || wo && wo.storage_group || 'data-table-group') ||
|
| 62 |
-
wo && wo.storage_tableId || table.id || $('.tablesorter').index( $table ),
|
| 63 |
-
// url from (1) options url, (2) table 'data-table-page' attribute, (3) widgetOptions.storage_fixedUrl,
|
| 64 |
-
// (4) table.config.fixedUrl (deprecated), then (5) window location path
|
| 65 |
-
url = options && options.url ||
|
| 66 |
-
$table.attr(options && options.page || wo && wo.storage_page || 'data-table-page') ||
|
| 67 |
-
wo && wo.storage_fixedUrl || c && c.fixedUrl || window.location.pathname;
|
| 68 |
-
|
| 69 |
-
// skip if using cookies
|
| 70 |
-
if (storageType !== 'c') {
|
| 71 |
-
storageType = (storageType === 's' || session) ? 'sessionStorage' : 'localStorage';
|
| 72 |
-
// https://gist.github.com/paulirish/5558557
|
| 73 |
-
if (storageType in window) {
|
| 74 |
-
try {
|
| 75 |
-
window[storageType].setItem('_tmptest', 'temp');
|
| 76 |
-
hasStorage = true;
|
| 77 |
-
window[storageType].removeItem('_tmptest');
|
| 78 |
-
} catch (error) {
|
| 79 |
-
console.warn( storageType + ' is not supported in this browser' );
|
| 80 |
-
}
|
| 81 |
-
}
|
| 82 |
-
}
|
| 83 |
-
if (debug) {
|
| 84 |
-
console.log('Storage >> Using', hasStorage ? storageType : 'cookies');
|
| 85 |
-
}
|
| 86 |
-
// *** get value ***
|
| 87 |
-
if ($.parseJSON) {
|
| 88 |
-
if (hasStorage) {
|
| 89 |
-
values = $.parseJSON( window[storageType][key] || 'null' ) || {};
|
| 90 |
-
} else {
|
| 91 |
-
// old browser, using cookies
|
| 92 |
-
cookies = document.cookie.split(/[;\s|=]/);
|
| 93 |
-
// add one to get from the key to the value
|
| 94 |
-
cookieIndex = $.inArray(key, cookies) + 1;
|
| 95 |
-
values = (cookieIndex !== 0) ? $.parseJSON(cookies[cookieIndex] || 'null') || {} : {};
|
| 96 |
-
}
|
| 97 |
-
}
|
| 98 |
-
// allow value to be an empty string too
|
| 99 |
-
if (typeof value !== 'undefined' && window.JSON && JSON.hasOwnProperty('stringify')) {
|
| 100 |
-
// add unique identifiers = url pathname > table ID/index on page > data
|
| 101 |
-
if (!values[url]) {
|
| 102 |
-
values[url] = {};
|
| 103 |
-
}
|
| 104 |
-
values[url][id] = value;
|
| 105 |
-
// *** set value ***
|
| 106 |
-
if (hasStorage) {
|
| 107 |
-
window[storageType][key] = JSON.stringify(values);
|
| 108 |
-
} else {
|
| 109 |
-
date = new Date();
|
| 110 |
-
date.setTime(date.getTime() + (31536e+6)); // 365 days
|
| 111 |
-
document.cookie = key + '=' + (JSON.stringify(values)).replace(/\"/g, '\"') + '; expires=' + date.toGMTString() + '; path=/';
|
| 112 |
-
}
|
| 113 |
-
} else {
|
| 114 |
-
return values && values[url] ? values[url][id] : '';
|
| 115 |
-
}
|
| 116 |
-
};
|
| 117 |
-
|
| 118 |
-
})(jQuery, window, document);
|
| 119 |
-
|
| 120 |
-
/*! Widget: uitheme - updated 2018-03-18 (v2.30.0) */
|
| 121 |
-
;(function ($) {
|
| 122 |
-
'use strict';
|
| 123 |
-
var ts = $.tablesorter || {};
|
| 124 |
-
|
| 125 |
-
ts.themes = {
|
| 126 |
-
'bootstrap' : {
|
| 127 |
-
table : 'table table-bordered table-striped',
|
| 128 |
-
caption : 'caption',
|
| 129 |
-
// header class names
|
| 130 |
-
header : 'bootstrap-header', // give the header a gradient background (theme.bootstrap_2.css)
|
| 131 |
-
sortNone : '',
|
| 132 |
-
sortAsc : '',
|
| 133 |
-
sortDesc : '',
|
| 134 |
-
active : '', // applied when column is sorted
|
| 135 |
-
hover : '', // custom css required - a defined bootstrap style may not override other classes
|
| 136 |
-
// icon class names
|
| 137 |
-
icons : '', // add 'bootstrap-icon-white' to make them white; this icon class is added to the <i> in the header
|
| 138 |
-
iconSortNone : 'bootstrap-icon-unsorted', // class name added to icon when column is not sorted
|
| 139 |
-
iconSortAsc : 'glyphicon glyphicon-chevron-up', // class name added to icon when column has ascending sort
|
| 140 |
-
iconSortDesc : 'glyphicon glyphicon-chevron-down', // class name added to icon when column has descending sort
|
| 141 |
-
filterRow : '', // filter row class
|
| 142 |
-
footerRow : '',
|
| 143 |
-
footerCells : '',
|
| 144 |
-
even : '', // even row zebra striping
|
| 145 |
-
odd : '' // odd row zebra striping
|
| 146 |
-
},
|
| 147 |
-
'jui' : {
|
| 148 |
-
table : 'ui-widget ui-widget-content ui-corner-all', // table classes
|
| 149 |
-
caption : 'ui-widget-content',
|
| 150 |
-
// header class names
|
| 151 |
-
header : 'ui-widget-header ui-corner-all ui-state-default', // header classes
|
| 152 |
-
sortNone : '',
|
| 153 |
-
sortAsc : '',
|
| 154 |
-
sortDesc : '',
|
| 155 |
-
active : 'ui-state-active', // applied when column is sorted
|
| 156 |
-
hover : 'ui-state-hover', // hover class
|
| 157 |
-
// icon class names
|
| 158 |
-
icons : 'ui-icon', // icon class added to the <i> in the header
|
| 159 |
-
iconSortNone : 'ui-icon-carat-2-n-s ui-icon-caret-2-n-s', // class name added to icon when column is not sorted
|
| 160 |
-
iconSortAsc : 'ui-icon-carat-1-n ui-icon-caret-1-n', // class name added to icon when column has ascending sort
|
| 161 |
-
iconSortDesc : 'ui-icon-carat-1-s ui-icon-caret-1-s', // class name added to icon when column has descending sort
|
| 162 |
-
filterRow : '',
|
| 163 |
-
footerRow : '',
|
| 164 |
-
footerCells : '',
|
| 165 |
-
even : 'ui-widget-content', // even row zebra striping
|
| 166 |
-
odd : 'ui-state-default' // odd row zebra striping
|
| 167 |
-
}
|
| 168 |
-
};
|
| 169 |
-
|
| 170 |
-
$.extend(ts.css, {
|
| 171 |
-
wrapper : 'tablesorter-wrapper' // ui theme & resizable
|
| 172 |
-
});
|
| 173 |
-
|
| 174 |
-
ts.addWidget({
|
| 175 |
-
id: 'uitheme',
|
| 176 |
-
priority: 10,
|
| 177 |
-
format: function(table, c, wo) {
|
| 178 |
-
var i, tmp, hdr, icon, time, $header, $icon, $tfoot, $h, oldtheme, oldremove, oldIconRmv, hasOldTheme,
|
| 179 |
-
themesAll = ts.themes,
|
| 180 |
-
$table = c.$table.add( $( c.namespace + '_extra_table' ) ),
|
| 181 |
-
$headers = c.$headers.add( $( c.namespace + '_extra_headers' ) ),
|
| 182 |
-
theme = c.theme || 'jui',
|
| 183 |
-
themes = themesAll[theme] || {},
|
| 184 |
-
remove = $.trim( [ themes.sortNone, themes.sortDesc, themes.sortAsc, themes.active ].join( ' ' ) ),
|
| 185 |
-
iconRmv = $.trim( [ themes.iconSortNone, themes.iconSortDesc, themes.iconSortAsc ].join( ' ' ) ),
|
| 186 |
-
debug = ts.debug(c, 'uitheme');
|
| 187 |
-
if (debug) { time = new Date(); }
|
| 188 |
-
// initialization code - run once
|
| 189 |
-
if (!$table.hasClass('tablesorter-' + theme) || c.theme !== c.appliedTheme || !wo.uitheme_applied) {
|
| 190 |
-
wo.uitheme_applied = true;
|
| 191 |
-
oldtheme = themesAll[c.appliedTheme] || {};
|
| 192 |
-
hasOldTheme = !$.isEmptyObject(oldtheme);
|
| 193 |
-
oldremove = hasOldTheme ? [ oldtheme.sortNone, oldtheme.sortDesc, oldtheme.sortAsc, oldtheme.active ].join( ' ' ) : '';
|
| 194 |
-
oldIconRmv = hasOldTheme ? [ oldtheme.iconSortNone, oldtheme.iconSortDesc, oldtheme.iconSortAsc ].join( ' ' ) : '';
|
| 195 |
-
if (hasOldTheme) {
|
| 196 |
-
wo.zebra[0] = $.trim( ' ' + wo.zebra[0].replace(' ' + oldtheme.even, '') );
|
| 197 |
-
wo.zebra[1] = $.trim( ' ' + wo.zebra[1].replace(' ' + oldtheme.odd, '') );
|
| 198 |
-
c.$tbodies.children().removeClass( [ oldtheme.even, oldtheme.odd ].join(' ') );
|
| 199 |
-
}
|
| 200 |
-
// update zebra stripes
|
| 201 |
-
if (themes.even) { wo.zebra[0] += ' ' + themes.even; }
|
| 202 |
-
if (themes.odd) { wo.zebra[1] += ' ' + themes.odd; }
|
| 203 |
-
// add caption style
|
| 204 |
-
$table.children('caption')
|
| 205 |
-
.removeClass(oldtheme.caption || '')
|
| 206 |
-
.addClass(themes.caption);
|
| 207 |
-
// add table/footer class names
|
| 208 |
-
$tfoot = $table
|
| 209 |
-
// remove other selected themes
|
| 210 |
-
.removeClass( (c.appliedTheme ? 'tablesorter-' + (c.appliedTheme || '') : '') + ' ' + (oldtheme.table || '') )
|
| 211 |
-
.addClass('tablesorter-' + theme + ' ' + (themes.table || '')) // add theme widget class name
|
| 212 |
-
.children('tfoot');
|
| 213 |
-
c.appliedTheme = c.theme;
|
| 214 |
-
|
| 215 |
-
if ($tfoot.length) {
|
| 216 |
-
$tfoot
|
| 217 |
-
// if oldtheme.footerRow or oldtheme.footerCells are undefined, all class names are removed
|
| 218 |
-
.children('tr').removeClass(oldtheme.footerRow || '').addClass(themes.footerRow)
|
| 219 |
-
.children('th, td').removeClass(oldtheme.footerCells || '').addClass(themes.footerCells);
|
| 220 |
-
}
|
| 221 |
-
// update header classes
|
| 222 |
-
$headers
|
| 223 |
-
.removeClass( (hasOldTheme ? [ oldtheme.header, oldtheme.hover, oldremove ].join(' ') : '') || '' )
|
| 224 |
-
.addClass(themes.header)
|
| 225 |
-
.not('.sorter-false')
|
| 226 |
-
.unbind('mouseenter.tsuitheme mouseleave.tsuitheme')
|
| 227 |
-
.bind('mouseenter.tsuitheme mouseleave.tsuitheme', function(event) {
|
| 228 |
-
// toggleClass with switch added in jQuery 1.3
|
| 229 |
-
$(this)[ event.type === 'mouseenter' ? 'addClass' : 'removeClass' ](themes.hover || '');
|
| 230 |
-
});
|
| 231 |
-
|
| 232 |
-
$headers.each(function() {
|
| 233 |
-
var $this = $(this);
|
| 234 |
-
if (!$this.find('.' + ts.css.wrapper).length) {
|
| 235 |
-
// Firefox needs this inner div to position the icon & resizer correctly
|
| 236 |
-
$this.wrapInner('<div class="' + ts.css.wrapper + '" style="position:relative;height:100%;width:100%"></div>');
|
| 237 |
-
}
|
| 238 |
-
});
|
| 239 |
-
if (c.cssIcon) {
|
| 240 |
-
// if c.cssIcon is '', then no <i> is added to the header
|
| 241 |
-
$headers
|
| 242 |
-
.find('.' + ts.css.icon)
|
| 243 |
-
.removeClass(hasOldTheme ? [ oldtheme.icons, oldIconRmv ].join(' ') : '')
|
| 244 |
-
.addClass(themes.icons || '');
|
| 245 |
-
}
|
| 246 |
-
// filter widget initializes after uitheme
|
| 247 |
-
if (ts.hasWidget( c.table, 'filter' )) {
|
| 248 |
-
tmp = function() {
|
| 249 |
-
$table.children('thead').children('.' + ts.css.filterRow)
|
| 250 |
-
.removeClass(hasOldTheme ? oldtheme.filterRow || '' : '')
|
| 251 |
-
.addClass(themes.filterRow || '');
|
| 252 |
-
};
|
| 253 |
-
if (wo.filter_initialized) {
|
| 254 |
-
tmp();
|
| 255 |
-
} else {
|
| 256 |
-
$table.one('filterInit', function() {
|
| 257 |
-
tmp();
|
| 258 |
-
});
|
| 259 |
-
}
|
| 260 |
-
}
|
| 261 |
-
}
|
| 262 |
-
for (i = 0; i < c.columns; i++) {
|
| 263 |
-
$header = c.$headers
|
| 264 |
-
.add($(c.namespace + '_extra_headers'))
|
| 265 |
-
.not('.sorter-false')
|
| 266 |
-
.filter('[data-column="' + i + '"]');
|
| 267 |
-
$icon = (ts.css.icon) ? $header.find('.' + ts.css.icon) : $();
|
| 268 |
-
$h = $headers.not('.sorter-false').filter('[data-column="' + i + '"]:last');
|
| 269 |
-
if ($h.length) {
|
| 270 |
-
$header.removeClass(remove);
|
| 271 |
-
$icon.removeClass(iconRmv);
|
| 272 |
-
if ($h[0].sortDisabled) {
|
| 273 |
-
// no sort arrows for disabled columns!
|
| 274 |
-
$icon.removeClass(themes.icons || '');
|
| 275 |
-
} else {
|
| 276 |
-
hdr = themes.sortNone;
|
| 277 |
-
icon = themes.iconSortNone;
|
| 278 |
-
if ($h.hasClass(ts.css.sortAsc)) {
|
| 279 |
-
hdr = [ themes.sortAsc, themes.active ].join(' ');
|
| 280 |
-
icon = themes.iconSortAsc;
|
| 281 |
-
} else if ($h.hasClass(ts.css.sortDesc)) {
|
| 282 |
-
hdr = [ themes.sortDesc, themes.active ].join(' ');
|
| 283 |
-
icon = themes.iconSortDesc;
|
| 284 |
-
}
|
| 285 |
-
$header.addClass(hdr);
|
| 286 |
-
$icon.addClass(icon || '');
|
| 287 |
-
}
|
| 288 |
-
}
|
| 289 |
-
}
|
| 290 |
-
if (debug) {
|
| 291 |
-
console.log('uitheme >> Applied ' + theme + ' theme' + ts.benchmark(time));
|
| 292 |
-
}
|
| 293 |
-
},
|
| 294 |
-
remove: function(table, c, wo, refreshing) {
|
| 295 |
-
if (!wo.uitheme_applied) { return; }
|
| 296 |
-
var $table = c.$table,
|
| 297 |
-
theme = c.appliedTheme || 'jui',
|
| 298 |
-
themes = ts.themes[ theme ] || ts.themes.jui,
|
| 299 |
-
$headers = $table.children('thead').children(),
|
| 300 |
-
remove = themes.sortNone + ' ' + themes.sortDesc + ' ' + themes.sortAsc,
|
| 301 |
-
iconRmv = themes.iconSortNone + ' ' + themes.iconSortDesc + ' ' + themes.iconSortAsc;
|
| 302 |
-
$table.removeClass('tablesorter-' + theme + ' ' + themes.table);
|
| 303 |
-
wo.uitheme_applied = false;
|
| 304 |
-
if (refreshing) { return; }
|
| 305 |
-
$table.find(ts.css.header).removeClass(themes.header);
|
| 306 |
-
$headers
|
| 307 |
-
.unbind('mouseenter.tsuitheme mouseleave.tsuitheme') // remove hover
|
| 308 |
-
.removeClass(themes.hover + ' ' + remove + ' ' + themes.active)
|
| 309 |
-
.filter('.' + ts.css.filterRow)
|
| 310 |
-
.removeClass(themes.filterRow);
|
| 311 |
-
$headers.find('.' + ts.css.icon).removeClass(themes.icons + ' ' + iconRmv);
|
| 312 |
-
}
|
| 313 |
-
});
|
| 314 |
-
|
| 315 |
-
})(jQuery);
|
| 316 |
-
|
| 317 |
-
/*! Widget: columns - updated 5/24/2017 (v2.28.11) */
|
| 318 |
-
;(function ($) {
|
| 319 |
-
'use strict';
|
| 320 |
-
var ts = $.tablesorter || {};
|
| 321 |
-
|
| 322 |
-
ts.addWidget({
|
| 323 |
-
id: 'columns',
|
| 324 |
-
priority: 65,
|
| 325 |
-
options : {
|
| 326 |
-
columns : [ 'primary', 'secondary', 'tertiary' ]
|
| 327 |
-
},
|
| 328 |
-
format: function(table, c, wo) {
|
| 329 |
-
var $tbody, tbodyIndex, $rows, rows, $row, $cells, remove, indx,
|
| 330 |
-
$table = c.$table,
|
| 331 |
-
$tbodies = c.$tbodies,
|
| 332 |
-
sortList = c.sortList,
|
| 333 |
-
len = sortList.length,
|
| 334 |
-
// removed c.widgetColumns support
|
| 335 |
-
css = wo && wo.columns || [ 'primary', 'secondary', 'tertiary' ],
|
| 336 |
-
last = css.length - 1;
|
| 337 |
-
remove = css.join(' ');
|
| 338 |
-
// check if there is a sort (on initialization there may not be one)
|
| 339 |
-
for (tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
|
| 340 |
-
$tbody = ts.processTbody(table, $tbodies.eq(tbodyIndex), true); // detach tbody
|
| 341 |
-
$rows = $tbody.children('tr');
|
| 342 |
-
// loop through the visible rows
|
| 343 |
-
$rows.each(function() {
|
| 344 |
-
$row = $(this);
|
| 345 |
-
if (this.style.display !== 'none') {
|
| 346 |
-
// remove all columns class names
|
| 347 |
-
$cells = $row.children().removeClass(remove);
|
| 348 |
-
// add appropriate column class names
|
| 349 |
-
if (sortList && sortList[0]) {
|
| 350 |
-
// primary sort column class
|
| 351 |
-
$cells.eq(sortList[0][0]).addClass(css[0]);
|
| 352 |
-
if (len > 1) {
|
| 353 |
-
for (indx = 1; indx < len; indx++) {
|
| 354 |
-
// secondary, tertiary, etc sort column classes
|
| 355 |
-
$cells.eq(sortList[indx][0]).addClass( css[indx] || css[last] );
|
| 356 |
-
}
|
| 357 |
-
}
|
| 358 |
-
}
|
| 359 |
-
}
|
| 360 |
-
});
|
| 361 |
-
ts.processTbody(table, $tbody, false);
|
| 362 |
-
}
|
| 363 |
-
// add classes to thead and tfoot
|
| 364 |
-
rows = wo.columns_thead !== false ? [ 'thead tr' ] : [];
|
| 365 |
-
if (wo.columns_tfoot !== false) {
|
| 366 |
-
rows.push('tfoot tr');
|
| 367 |
-
}
|
| 368 |
-
if (rows.length) {
|
| 369 |
-
$rows = $table.find( rows.join(',') ).children().removeClass(remove);
|
| 370 |
-
if (len) {
|
| 371 |
-
for (indx = 0; indx < len; indx++) {
|
| 372 |
-
// add primary. secondary, tertiary, etc sort column classes
|
| 373 |
-
$rows.filter('[data-column="' + sortList[indx][0] + '"]').addClass(css[indx] || css[last]);
|
| 374 |
-
}
|
| 375 |
-
}
|
| 376 |
-
}
|
| 377 |
-
},
|
| 378 |
-
remove: function(table, c, wo) {
|
| 379 |
-
var tbodyIndex, $tbody,
|
| 380 |
-
$tbodies = c.$tbodies,
|
| 381 |
-
remove = (wo.columns || [ 'primary', 'secondary', 'tertiary' ]).join(' ');
|
| 382 |
-
c.$headers.removeClass(remove);
|
| 383 |
-
c.$table.children('tfoot').children('tr').children('th, td').removeClass(remove);
|
| 384 |
-
for (tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
|
| 385 |
-
$tbody = ts.processTbody(table, $tbodies.eq(tbodyIndex), true); // remove tbody
|
| 386 |
-
$tbody.children('tr').each(function() {
|
| 387 |
-
$(this).children().removeClass(remove);
|
| 388 |
-
});
|
| 389 |
-
ts.processTbody(table, $tbody, false); // restore tbody
|
| 390 |
-
}
|
| 391 |
-
}
|
| 392 |
-
});
|
| 393 |
-
|
| 394 |
-
})(jQuery);
|
| 395 |
|
| 396 |
/*! Widget: filter - updated 2018-03-18 (v2.30.0) *//*
|
| 397 |
* Requires tablesorter v2.8+ and jQuery 1.7+
|
|
@@ -2352,827 +2352,827 @@
|
|
| 2352 |
|
| 2353 |
})( jQuery );
|
| 2354 |
|
| 2355 |
-
/*! Widget: stickyHeaders - updated 9/27/2017 (v2.29.0) *//*
|
| 2356 |
-
* Requires tablesorter v2.8+ and jQuery 1.4.3+
|
| 2357 |
-
* by Rob Garrison
|
| 2358 |
-
*/
|
| 2359 |
-
;(function ($, window) {
|
| 2360 |
-
'use strict';
|
| 2361 |
-
var ts = $.tablesorter || {};
|
| 2362 |
-
|
| 2363 |
-
$.extend(ts.css, {
|
| 2364 |
-
sticky : 'tablesorter-stickyHeader', // stickyHeader
|
| 2365 |
-
stickyVis : 'tablesorter-sticky-visible',
|
| 2366 |
-
stickyHide: 'tablesorter-sticky-hidden',
|
| 2367 |
-
stickyWrap: 'tablesorter-sticky-wrapper'
|
| 2368 |
-
});
|
| 2369 |
-
|
| 2370 |
-
// Add a resize event to table headers
|
| 2371 |
-
ts.addHeaderResizeEvent = function(table, disable, settings) {
|
| 2372 |
-
table = $(table)[0]; // make sure we're using a dom element
|
| 2373 |
-
if ( !table.config ) { return; }
|
| 2374 |
-
var defaults = {
|
| 2375 |
-
timer : 250
|
| 2376 |
-
},
|
| 2377 |
-
options = $.extend({}, defaults, settings),
|
| 2378 |
-
c = table.config,
|
| 2379 |
-
wo = c.widgetOptions,
|
| 2380 |
-
checkSizes = function( triggerEvent ) {
|
| 2381 |
-
var index, headers, $header, sizes, width, height,
|
| 2382 |
-
len = c.$headers.length;
|
| 2383 |
-
wo.resize_flag = true;
|
| 2384 |
-
headers = [];
|
| 2385 |
-
for ( index = 0; index < len; index++ ) {
|
| 2386 |
-
$header = c.$headers.eq( index );
|
| 2387 |
-
sizes = $header.data( 'savedSizes' ) || [ 0, 0 ]; // fixes #394
|
| 2388 |
-
width = $header[0].offsetWidth;
|
| 2389 |
-
height = $header[0].offsetHeight;
|
| 2390 |
-
if ( width !== sizes[0] || height !== sizes[1] ) {
|
| 2391 |
-
$header.data( 'savedSizes', [ width, height ] );
|
| 2392 |
-
headers.push( $header[0] );
|
| 2393 |
-
}
|
| 2394 |
-
}
|
| 2395 |
-
if ( headers.length && triggerEvent !== false ) {
|
| 2396 |
-
c.$table.triggerHandler( 'resize', [ headers ] );
|
| 2397 |
-
}
|
| 2398 |
-
wo.resize_flag = false;
|
| 2399 |
-
};
|
| 2400 |
-
clearInterval(wo.resize_timer);
|
| 2401 |
-
if (disable) {
|
| 2402 |
-
wo.resize_flag = false;
|
| 2403 |
-
return false;
|
| 2404 |
-
}
|
| 2405 |
-
checkSizes( false );
|
| 2406 |
-
wo.resize_timer = setInterval(function() {
|
| 2407 |
-
if (wo.resize_flag) { return; }
|
| 2408 |
-
checkSizes();
|
| 2409 |
-
}, options.timer);
|
| 2410 |
-
};
|
| 2411 |
-
|
| 2412 |
-
function getStickyOffset(c, wo) {
|
| 2413 |
-
var $el = isNaN(wo.stickyHeaders_offset) ? $(wo.stickyHeaders_offset) : [];
|
| 2414 |
-
return $el.length ?
|
| 2415 |
-
$el.height() || 0 :
|
| 2416 |
-
parseInt(wo.stickyHeaders_offset, 10) || 0;
|
| 2417 |
-
}
|
| 2418 |
-
|
| 2419 |
-
// Sticky headers based on this awesome article:
|
| 2420 |
-
// http://css-tricks.com/13465-persistent-headers/
|
| 2421 |
-
// and https://github.com/jmosbech/StickyTableHeaders by Jonas Mosbech
|
| 2422 |
-
// **************************
|
| 2423 |
-
ts.addWidget({
|
| 2424 |
-
id: 'stickyHeaders',
|
| 2425 |
-
priority: 54, // sticky widget must be initialized after the filter & before pager widget!
|
| 2426 |
-
options: {
|
| 2427 |
-
stickyHeaders : '', // extra class name added to the sticky header row
|
| 2428 |
-
stickyHeaders_appendTo : null, // jQuery selector or object to phycially attach the sticky headers
|
| 2429 |
-
stickyHeaders_attachTo : null, // jQuery selector or object to attach scroll listener to (overridden by xScroll & yScroll settings)
|
| 2430 |
-
stickyHeaders_xScroll : null, // jQuery selector or object to monitor horizontal scroll position (defaults: xScroll > attachTo > window)
|
| 2431 |
-
stickyHeaders_yScroll : null, // jQuery selector or object to monitor vertical scroll position (defaults: yScroll > attachTo > window)
|
| 2432 |
-
stickyHeaders_offset : 0, // number or jquery selector targeting the position:fixed element
|
| 2433 |
-
stickyHeaders_filteredToTop: true, // scroll table top into view after filtering
|
| 2434 |
-
stickyHeaders_cloneId : '-sticky', // added to table ID, if it exists
|
| 2435 |
-
stickyHeaders_addResizeEvent : true, // trigger 'resize' event on headers
|
| 2436 |
-
stickyHeaders_includeCaption : true, // if false and a caption exist, it won't be included in the sticky header
|
| 2437 |
-
stickyHeaders_zIndex : 2 // The zIndex of the stickyHeaders, allows the user to adjust this to their needs
|
| 2438 |
-
},
|
| 2439 |
-
format: function(table, c, wo) {
|
| 2440 |
-
// filter widget doesn't initialize on an empty table. Fixes #449
|
| 2441 |
-
if ( c.$table.hasClass('hasStickyHeaders') || ($.inArray('filter', c.widgets) >= 0 && !c.$table.hasClass('hasFilters')) ) {
|
| 2442 |
-
return;
|
| 2443 |
-
}
|
| 2444 |
-
var index, len, $t,
|
| 2445 |
-
$table = c.$table,
|
| 2446 |
-
// add position: relative to attach element, hopefully it won't cause trouble.
|
| 2447 |
-
$attach = $(wo.stickyHeaders_attachTo || wo.stickyHeaders_appendTo),
|
| 2448 |
-
namespace = c.namespace + 'stickyheaders ',
|
| 2449 |
-
// element to watch for the scroll event
|
| 2450 |
-
$yScroll = $(wo.stickyHeaders_yScroll || wo.stickyHeaders_attachTo || window),
|
| 2451 |
-
$xScroll = $(wo.stickyHeaders_xScroll || wo.stickyHeaders_attachTo || window),
|
| 2452 |
-
$thead = $table.children('thead:first'),
|
| 2453 |
-
$header = $thead.children('tr').not('.sticky-false').children(),
|
| 2454 |
-
$tfoot = $table.children('tfoot'),
|
| 2455 |
-
stickyOffset = getStickyOffset(c, wo),
|
| 2456 |
-
// is this table nested? If so, find parent sticky header wrapper (div, not table)
|
| 2457 |
-
$nestedSticky = $table.parent().closest('.' + ts.css.table).hasClass('hasStickyHeaders') ?
|
| 2458 |
-
$table.parent().closest('table.tablesorter')[0].config.widgetOptions.$sticky.parent() : [],
|
| 2459 |
-
nestedStickyTop = $nestedSticky.length ? $nestedSticky.height() : 0,
|
| 2460 |
-
// clone table, then wrap to make sticky header
|
| 2461 |
-
$stickyTable = wo.$sticky = $table.clone()
|
| 2462 |
-
.addClass('containsStickyHeaders ' + ts.css.sticky + ' ' + wo.stickyHeaders + ' ' + c.namespace.slice(1) + '_extra_table' )
|
| 2463 |
-
.wrap('<div class="' + ts.css.stickyWrap + '">'),
|
| 2464 |
-
$stickyWrap = $stickyTable.parent()
|
| 2465 |
-
.addClass(ts.css.stickyHide)
|
| 2466 |
-
.css({
|
| 2467 |
-
position : $attach.length ? 'absolute' : 'fixed',
|
| 2468 |
-
padding : parseInt( $stickyTable.parent().parent().css('padding-left'), 10 ),
|
| 2469 |
-
top : stickyOffset + nestedStickyTop,
|
| 2470 |
-
left : 0,
|
| 2471 |
-
visibility : 'hidden',
|
| 2472 |
-
zIndex : wo.stickyHeaders_zIndex || 2
|
| 2473 |
-
}),
|
| 2474 |
-
$stickyThead = $stickyTable.children('thead:first'),
|
| 2475 |
-
$stickyCells,
|
| 2476 |
-
laststate = '',
|
| 2477 |
-
setWidth = function($orig, $clone) {
|
| 2478 |
-
var index, width, border, $cell, $this,
|
| 2479 |
-
$cells = $orig.filter(':visible'),
|
| 2480 |
-
len = $cells.length;
|
| 2481 |
-
for ( index = 0; index < len; index++ ) {
|
| 2482 |
-
$cell = $clone.filter(':visible').eq(index);
|
| 2483 |
-
$this = $cells.eq(index);
|
| 2484 |
-
// code from https://github.com/jmosbech/StickyTableHeaders
|
| 2485 |
-
if ($this.css('box-sizing') === 'border-box') {
|
| 2486 |
-
width = $this.outerWidth();
|
| 2487 |
-
} else {
|
| 2488 |
-
if ($cell.css('border-collapse') === 'collapse') {
|
| 2489 |
-
if (window.getComputedStyle) {
|
| 2490 |
-
width = parseFloat( window.getComputedStyle($this[0], null).width );
|
| 2491 |
-
} else {
|
| 2492 |
-
// ie8 only
|
| 2493 |
-
border = parseFloat( $this.css('border-width') );
|
| 2494 |
-
width = $this.outerWidth() - parseFloat( $this.css('padding-left') ) - parseFloat( $this.css('padding-right') ) - border;
|
| 2495 |
-
}
|
| 2496 |
-
} else {
|
| 2497 |
-
width = $this.width();
|
| 2498 |
-
}
|
| 2499 |
-
}
|
| 2500 |
-
$cell.css({
|
| 2501 |
-
'width': width,
|
| 2502 |
-
'min-width': width,
|
| 2503 |
-
'max-width': width
|
| 2504 |
-
});
|
| 2505 |
-
}
|
| 2506 |
-
},
|
| 2507 |
-
getLeftPosition = function(yWindow) {
|
| 2508 |
-
if (yWindow === false && $nestedSticky.length) {
|
| 2509 |
-
return $table.position().left;
|
| 2510 |
-
}
|
| 2511 |
-
return $attach.length ?
|
| 2512 |
-
parseInt($attach.css('padding-left'), 10) || 0 :
|
| 2513 |
-
$table.offset().left - parseInt($table.css('margin-left'), 10) - $(window).scrollLeft();
|
| 2514 |
-
},
|
| 2515 |
-
resizeHeader = function() {
|
| 2516 |
-
$stickyWrap.css({
|
| 2517 |
-
left : getLeftPosition(),
|
| 2518 |
-
width: $table.outerWidth()
|
| 2519 |
-
});
|
| 2520 |
-
setWidth( $table, $stickyTable );
|
| 2521 |
-
setWidth( $header, $stickyCells );
|
| 2522 |
-
},
|
| 2523 |
-
scrollSticky = function( resizing ) {
|
| 2524 |
-
if (!$table.is(':visible')) { return; } // fixes #278
|
| 2525 |
-
// Detect nested tables - fixes #724
|
| 2526 |
-
nestedStickyTop = $nestedSticky.length ? $nestedSticky.offset().top - $yScroll.scrollTop() + $nestedSticky.height() : 0;
|
| 2527 |
-
var tmp,
|
| 2528 |
-
offset = $table.offset(),
|
| 2529 |
-
stickyOffset = getStickyOffset(c, wo),
|
| 2530 |
-
yWindow = $.isWindow( $yScroll[0] ), // $.isWindow needs jQuery 1.4.3
|
| 2531 |
-
yScroll = yWindow ?
|
| 2532 |
-
$yScroll.scrollTop() :
|
| 2533 |
-
// use parent sticky position if nested AND inside of a scrollable element - see #1512
|
| 2534 |
-
$nestedSticky.length ? parseInt($nestedSticky[0].style.top, 10) : $yScroll.offset().top,
|
| 2535 |
-
attachTop = $attach.length ? yScroll : $yScroll.scrollTop(),
|
| 2536 |
-
captionHeight = wo.stickyHeaders_includeCaption ? 0 : $table.children( 'caption' ).height() || 0,
|
| 2537 |
-
scrollTop = attachTop + stickyOffset + nestedStickyTop - captionHeight,
|
| 2538 |
-
tableHeight = $table.height() - ($stickyWrap.height() + ($tfoot.height() || 0)) - captionHeight,
|
| 2539 |
-
isVisible = ( scrollTop > offset.top ) && ( scrollTop < offset.top + tableHeight ) ? 'visible' : 'hidden',
|
| 2540 |
-
state = isVisible === 'visible' ? ts.css.stickyVis : ts.css.stickyHide,
|
| 2541 |
-
needsUpdating = !$stickyWrap.hasClass( state ),
|
| 2542 |
-
cssSettings = { visibility : isVisible };
|
| 2543 |
-
if ($attach.length) {
|
| 2544 |
-
// attached sticky headers always need updating
|
| 2545 |
-
needsUpdating = true;
|
| 2546 |
-
cssSettings.top = yWindow ? scrollTop - $attach.offset().top : $attach.scrollTop();
|
| 2547 |
-
}
|
| 2548 |
-
// adjust when scrolling horizontally - fixes issue #143
|
| 2549 |
-
tmp = getLeftPosition(yWindow);
|
| 2550 |
-
if (tmp !== parseInt($stickyWrap.css('left'), 10)) {
|
| 2551 |
-
needsUpdating = true;
|
| 2552 |
-
cssSettings.left = tmp;
|
| 2553 |
-
}
|
| 2554 |
-
cssSettings.top = ( cssSettings.top || 0 ) +
|
| 2555 |
-
// If nested AND inside of a scrollable element, only add parent sticky height
|
| 2556 |
-
(!yWindow && $nestedSticky.length ? $nestedSticky.height() : stickyOffset + nestedStickyTop);
|
| 2557 |
-
if (needsUpdating) {
|
| 2558 |
-
$stickyWrap
|
| 2559 |
-
.removeClass( ts.css.stickyVis + ' ' + ts.css.stickyHide )
|
| 2560 |
-
.addClass( state )
|
| 2561 |
-
.css(cssSettings);
|
| 2562 |
-
}
|
| 2563 |
-
if (isVisible !== laststate || resizing) {
|
| 2564 |
-
// make sure the column widths match
|
| 2565 |
-
resizeHeader();
|
| 2566 |
-
laststate = isVisible;
|
| 2567 |
-
}
|
| 2568 |
-
};
|
| 2569 |
-
// only add a position relative if a position isn't already defined
|
| 2570 |
-
if ($attach.length && !$attach.css('position')) {
|
| 2571 |
-
$attach.css('position', 'relative');
|
| 2572 |
-
}
|
| 2573 |
-
// fix clone ID, if it exists - fixes #271
|
| 2574 |
-
if ($stickyTable.attr('id')) { $stickyTable[0].id += wo.stickyHeaders_cloneId; }
|
| 2575 |
-
// clear out cloned table, except for sticky header
|
| 2576 |
-
// include caption &
|
| 2577 |
-
$stickyTable.find('> thead:gt(0), tr.sticky-false').hide();
|
| 2578 |
-
$stickyTable.find('> tbody, > tfoot').remove();
|
| 2579 |
-
$stickyTable.find('caption').toggle(wo.stickyHeaders_includeCaption);
|
| 2580 |
-
// issue #172 - find td/th in sticky header
|
| 2581 |
-
$stickyCells = $stickyThead.children().children();
|
| 2582 |
-
$stickyTable.css({ height:0, width:0, margin: 0 });
|
| 2583 |
-
// remove resizable block
|
| 2584 |
-
$stickyCells.find('.' + ts.css.resizer).remove();
|
| 2585 |
-
// update sticky header class names to match real header after sorting
|
| 2586 |
-
$table
|
| 2587 |
-
.addClass('hasStickyHeaders')
|
| 2588 |
-
.bind('pagerComplete' + namespace, function() {
|
| 2589 |
-
resizeHeader();
|
| 2590 |
-
});
|
| 2591 |
-
|
| 2592 |
-
ts.bindEvents(table, $stickyThead.children().children('.' + ts.css.header));
|
| 2593 |
-
|
| 2594 |
-
if (wo.stickyHeaders_appendTo) {
|
| 2595 |
-
$(wo.stickyHeaders_appendTo).append( $stickyWrap );
|
| 2596 |
-
} else {
|
| 2597 |
-
// add stickyheaders AFTER the table. If the table is selected by ID, the original one (first) will be returned.
|
| 2598 |
-
$table.after( $stickyWrap );
|
| 2599 |
-
}
|
| 2600 |
-
|
| 2601 |
-
// onRenderHeader is defined, we need to do something about it (fixes #641)
|
| 2602 |
-
if (c.onRenderHeader) {
|
| 2603 |
-
$t = $stickyThead.children('tr').children();
|
| 2604 |
-
len = $t.length;
|
| 2605 |
-
for ( index = 0; index < len; index++ ) {
|
| 2606 |
-
// send second parameter
|
| 2607 |
-
c.onRenderHeader.apply( $t.eq( index ), [ index, c, $stickyTable ] );
|
| 2608 |
-
}
|
| 2609 |
-
}
|
| 2610 |
-
// make it sticky!
|
| 2611 |
-
$xScroll.add($yScroll)
|
| 2612 |
-
.unbind( ('scroll resize '.split(' ').join( namespace )).replace(/\s+/g, ' ') )
|
| 2613 |
-
.bind('scroll resize '.split(' ').join( namespace ), function( event ) {
|
| 2614 |
-
scrollSticky( event.type === 'resize' );
|
| 2615 |
-
});
|
| 2616 |
-
c.$table
|
| 2617 |
-
.unbind('stickyHeadersUpdate' + namespace)
|
| 2618 |
-
.bind('stickyHeadersUpdate' + namespace, function() {
|
| 2619 |
-
scrollSticky( true );
|
| 2620 |
-
});
|
| 2621 |
-
|
| 2622 |
-
if (wo.stickyHeaders_addResizeEvent) {
|
| 2623 |
-
ts.addHeaderResizeEvent(table);
|
| 2624 |
-
}
|
| 2625 |
-
|
| 2626 |
-
// look for filter widget
|
| 2627 |
-
if ($table.hasClass('hasFilters') && wo.filter_columnFilters) {
|
| 2628 |
-
// scroll table into view after filtering, if sticky header is active - #482
|
| 2629 |
-
$table.bind('filterEnd' + namespace, function() {
|
| 2630 |
-
// $(':focus') needs jQuery 1.6+
|
| 2631 |
-
var $td = $(document.activeElement).closest('td'),
|
| 2632 |
-
column = $td.parent().children().index($td);
|
| 2633 |
-
// only scroll if sticky header is active
|
| 2634 |
-
if ($stickyWrap.hasClass(ts.css.stickyVis) && wo.stickyHeaders_filteredToTop) {
|
| 2635 |
-
// scroll to original table (not sticky clone)
|
| 2636 |
-
window.scrollTo(0, $table.position().top);
|
| 2637 |
-
// give same input/select focus; check if c.$filters exists; fixes #594
|
| 2638 |
-
if (column >= 0 && c.$filters) {
|
| 2639 |
-
c.$filters.eq(column).find('a, select, input').filter(':visible').focus();
|
| 2640 |
-
}
|
| 2641 |
-
}
|
| 2642 |
-
});
|
| 2643 |
-
ts.filter.bindSearch( $table, $stickyCells.find('.' + ts.css.filter) );
|
| 2644 |
-
// support hideFilters
|
| 2645 |
-
if (wo.filter_hideFilters) {
|
| 2646 |
-
ts.filter.hideFilters(c, $stickyTable);
|
| 2647 |
-
}
|
| 2648 |
-
}
|
| 2649 |
-
|
| 2650 |
-
// resize table (Firefox)
|
| 2651 |
-
if (wo.stickyHeaders_addResizeEvent) {
|
| 2652 |
-
$table.bind('resize' + c.namespace + 'stickyheaders', function() {
|
| 2653 |
-
resizeHeader();
|
| 2654 |
-
});
|
| 2655 |
-
}
|
| 2656 |
-
|
| 2657 |
-
// make sure sticky is visible if page is partially scrolled
|
| 2658 |
-
scrollSticky( true );
|
| 2659 |
-
$table.triggerHandler('stickyHeadersInit');
|
| 2660 |
-
|
| 2661 |
-
},
|
| 2662 |
-
remove: function(table, c, wo) {
|
| 2663 |
-
var namespace = c.namespace + 'stickyheaders ';
|
| 2664 |
-
c.$table
|
| 2665 |
-
.removeClass('hasStickyHeaders')
|
| 2666 |
-
.unbind( ('pagerComplete resize filterEnd stickyHeadersUpdate '.split(' ').join(namespace)).replace(/\s+/g, ' ') )
|
| 2667 |
-
.next('.' + ts.css.stickyWrap).remove();
|
| 2668 |
-
if (wo.$sticky && wo.$sticky.length) { wo.$sticky.remove(); } // remove cloned table
|
| 2669 |
-
$(window)
|
| 2670 |
-
.add(wo.stickyHeaders_xScroll)
|
| 2671 |
-
.add(wo.stickyHeaders_yScroll)
|
| 2672 |
-
.add(wo.stickyHeaders_attachTo)
|
| 2673 |
-
.unbind( ('scroll resize '.split(' ').join(namespace)).replace(/\s+/g, ' ') );
|
| 2674 |
-
ts.addHeaderResizeEvent(table, true);
|
| 2675 |
-
}
|
| 2676 |
-
});
|
| 2677 |
-
|
| 2678 |
-
})(jQuery, window);
|
| 2679 |
-
|
| 2680 |
-
/*! Widget: resizable - updated 2018-03-26 (v2.30.2) */
|
| 2681 |
-
/*jshint browser:true, jquery:true, unused:false */
|
| 2682 |
-
;(function ($, window) {
|
| 2683 |
-
'use strict';
|
| 2684 |
-
var ts = $.tablesorter || {};
|
| 2685 |
-
|
| 2686 |
-
$.extend(ts.css, {
|
| 2687 |
-
resizableContainer : 'tablesorter-resizable-container',
|
| 2688 |
-
resizableHandle : 'tablesorter-resizable-handle',
|
| 2689 |
-
resizableNoSelect : 'tablesorter-disableSelection',
|
| 2690 |
-
resizableStorage : 'tablesorter-resizable'
|
| 2691 |
-
});
|
| 2692 |
-
|
| 2693 |
-
// Add extra scroller css
|
| 2694 |
-
$(function() {
|
| 2695 |
-
var s = '<style>' +
|
| 2696 |
-
'body.' + ts.css.resizableNoSelect + ' { -ms-user-select: none; -moz-user-select: -moz-none;' +
|
| 2697 |
-
'-khtml-user-select: none; -webkit-user-select: none; user-select: none; }' +
|
| 2698 |
-
'.' + ts.css.resizableContainer + ' { position: relative; height: 1px; }' +
|
| 2699 |
-
// make handle z-index > than stickyHeader z-index, so the handle stays above sticky header
|
| 2700 |
-
'.' + ts.css.resizableHandle + ' { position: absolute; display: inline-block; width: 8px;' +
|
| 2701 |
-
'top: 1px; cursor: ew-resize; z-index: 3; user-select: none; -moz-user-select: none; }' +
|
| 2702 |
-
'</style>';
|
| 2703 |
-
$('head').append(s);
|
| 2704 |
-
});
|
| 2705 |
-
|
| 2706 |
-
ts.resizable = {
|
| 2707 |
-
init : function( c, wo ) {
|
| 2708 |
-
if ( c.$table.hasClass( 'hasResizable' ) ) { return; }
|
| 2709 |
-
c.$table.addClass( 'hasResizable' );
|
| 2710 |
-
|
| 2711 |
-
var noResize, $header, column, storedSizes, tmp,
|
| 2712 |
-
$table = c.$table,
|
| 2713 |
-
$parent = $table.parent(),
|
| 2714 |
-
marginTop = parseInt( $table.css( 'margin-top' ), 10 ),
|
| 2715 |
-
|
| 2716 |
-
// internal variables
|
| 2717 |
-
vars = wo.resizable_vars = {
|
| 2718 |
-
useStorage : ts.storage && wo.resizable !== false,
|
| 2719 |
-
$wrap : $parent,
|
| 2720 |
-
mouseXPosition : 0,
|
| 2721 |
-
$target : null,
|
| 2722 |
-
$next : null,
|
| 2723 |
-
overflow : $parent.css('overflow') === 'auto' ||
|
| 2724 |
-
$parent.css('overflow') === 'scroll' ||
|
| 2725 |
-
$parent.css('overflow-x') === 'auto' ||
|
| 2726 |
-
$parent.css('overflow-x') === 'scroll',
|
| 2727 |
-
storedSizes : []
|
| 2728 |
-
};
|
| 2729 |
-
|
| 2730 |
-
// set default widths
|
| 2731 |
-
ts.resizableReset( c.table, true );
|
| 2732 |
-
|
| 2733 |
-
// now get measurements!
|
| 2734 |
-
vars.tableWidth = $table.width();
|
| 2735 |
-
// attempt to autodetect
|
| 2736 |
-
vars.fullWidth = Math.abs( $parent.width() - vars.tableWidth ) < 20;
|
| 2737 |
-
|
| 2738 |
-
/*
|
| 2739 |
-
// Hacky method to determine if table width is set to 'auto'
|
| 2740 |
-
// http://stackoverflow.com/a/20892048/145346
|
| 2741 |
-
if ( !vars.fullWidth ) {
|
| 2742 |
-
tmp = $table.width();
|
| 2743 |
-
$header = $table.wrap('<span>').parent(); // temp variable
|
| 2744 |
-
storedSizes = parseInt( $table.css( 'margin-left' ), 10 ) || 0;
|
| 2745 |
-
$table.css( 'margin-left', storedSizes + 50 );
|
| 2746 |
-
vars.tableWidth = $header.width() > tmp ? 'auto' : tmp;
|
| 2747 |
-
$table.css( 'margin-left', storedSizes ? storedSizes : '' );
|
| 2748 |
-
$header = null;
|
| 2749 |
-
$table.unwrap('<span>');
|
| 2750 |
-
}
|
| 2751 |
-
*/
|
| 2752 |
-
|
| 2753 |
-
if ( vars.useStorage && vars.overflow ) {
|
| 2754 |
-
// save table width
|
| 2755 |
-
ts.storage( c.table, 'tablesorter-table-original-css-width', vars.tableWidth );
|
| 2756 |
-
tmp = ts.storage( c.table, 'tablesorter-table-resized-width' ) || 'auto';
|
| 2757 |
-
ts.resizable.setWidth( $table, tmp, true );
|
| 2758 |
-
}
|
| 2759 |
-
wo.resizable_vars.storedSizes = storedSizes = ( vars.useStorage ?
|
| 2760 |
-
ts.storage( c.table, ts.css.resizableStorage ) :
|
| 2761 |
-
[] ) || [];
|
| 2762 |
-
ts.resizable.setWidths( c, wo, storedSizes );
|
| 2763 |
-
ts.resizable.updateStoredSizes( c, wo );
|
| 2764 |
-
|
| 2765 |
-
wo.$resizable_container = $( '<div class="' + ts.css.resizableContainer + '">' )
|
| 2766 |
-
.css({ top : marginTop })
|
| 2767 |
-
.insertBefore( $table );
|
| 2768 |
-
// add container
|
| 2769 |
-
for ( column = 0; column < c.columns; column++ ) {
|
| 2770 |
-
$header = c.$headerIndexed[ column ];
|
| 2771 |
-
tmp = ts.getColumnData( c.table, c.headers, column );
|
| 2772 |
-
noResize = ts.getData( $header, tmp, 'resizable' ) === 'false';
|
| 2773 |
-
if ( !noResize ) {
|
| 2774 |
-
$( '<div class="' + ts.css.resizableHandle + '">' )
|
| 2775 |
-
.appendTo( wo.$resizable_container )
|
| 2776 |
-
.attr({
|
| 2777 |
-
'data-column' : column,
|
| 2778 |
-
'unselectable' : 'on'
|
| 2779 |
-
})
|
| 2780 |
-
.data( 'header', $header )
|
| 2781 |
-
.bind( 'selectstart', false );
|
| 2782 |
-
}
|
| 2783 |
-
}
|
| 2784 |
-
ts.resizable.bindings( c, wo );
|
| 2785 |
-
},
|
| 2786 |
-
|
| 2787 |
-
updateStoredSizes : function( c, wo ) {
|
| 2788 |
-
var column, $header,
|
| 2789 |
-
len = c.columns,
|
| 2790 |
-
vars = wo.resizable_vars;
|
| 2791 |
-
vars.storedSizes = [];
|
| 2792 |
-
for ( column = 0; column < len; column++ ) {
|
| 2793 |
-
$header = c.$headerIndexed[ column ];
|
| 2794 |
-
vars.storedSizes[ column ] = $header.is(':visible') ? $header.width() : 0;
|
| 2795 |
-
}
|
| 2796 |
-
},
|
| 2797 |
-
|
| 2798 |
-
setWidth : function( $el, width, overflow ) {
|
| 2799 |
-
// overflow tables need min & max width set as well
|
| 2800 |
-
$el.css({
|
| 2801 |
-
'width' : width,
|
| 2802 |
-
'min-width' : overflow ? width : '',
|
| 2803 |
-
'max-width' : overflow ? width : ''
|
| 2804 |
-
});
|
| 2805 |
-
},
|
| 2806 |
-
|
| 2807 |
-
setWidths : function( c, wo, storedSizes ) {
|
| 2808 |
-
var column, $temp,
|
| 2809 |
-
vars = wo.resizable_vars,
|
| 2810 |
-
$extra = $( c.namespace + '_extra_headers' ),
|
| 2811 |
-
$col = c.$table.children( 'colgroup' ).children( 'col' );
|
| 2812 |
-
storedSizes = storedSizes || vars.storedSizes || [];
|
| 2813 |
-
// process only if table ID or url match
|
| 2814 |
-
if ( storedSizes.length ) {
|
| 2815 |
-
for ( column = 0; column < c.columns; column++ ) {
|
| 2816 |
-
// set saved resizable widths
|
| 2817 |
-
ts.resizable.setWidth( c.$headerIndexed[ column ], storedSizes[ column ], vars.overflow );
|
| 2818 |
-
if ( $extra.length ) {
|
| 2819 |
-
// stickyHeaders needs to modify min & max width as well
|
| 2820 |
-
$temp = $extra.eq( column ).add( $col.eq( column ) );
|
| 2821 |
-
ts.resizable.setWidth( $temp, storedSizes[ column ], vars.overflow );
|
| 2822 |
-
}
|
| 2823 |
-
}
|
| 2824 |
-
$temp = $( c.namespace + '_extra_table' );
|
| 2825 |
-
if ( $temp.length && !ts.hasWidget( c.table, 'scroller' ) ) {
|
| 2826 |
-
ts.resizable.setWidth( $temp, c.$table.outerWidth(), vars.overflow );
|
| 2827 |
-
}
|
| 2828 |
-
}
|
| 2829 |
-
},
|
| 2830 |
-
|
| 2831 |
-
setHandlePosition : function( c, wo ) {
|
| 2832 |
-
var startPosition,
|
| 2833 |
-
tableHeight = c.$table.height(),
|
| 2834 |
-
$handles = wo.$resizable_container.children(),
|
| 2835 |
-
handleCenter = Math.floor( $handles.width() / 2 );
|
| 2836 |
-
|
| 2837 |
-
if ( ts.hasWidget( c.table, 'scroller' ) ) {
|
| 2838 |
-
tableHeight = 0;
|
| 2839 |
-
c.$table.closest( '.' + ts.css.scrollerWrap ).children().each(function() {
|
| 2840 |
-
var $this = $(this);
|
| 2841 |
-
// center table has a max-height set
|
| 2842 |
-
tableHeight += $this.filter('[style*="height"]').length ? $this.height() : $this.children('table').height();
|
| 2843 |
-
});
|
| 2844 |
-
}
|
| 2845 |
-
|
| 2846 |
-
if ( !wo.resizable_includeFooter && c.$table.children('tfoot').length ) {
|
| 2847 |
-
tableHeight -= c.$table.children('tfoot').height();
|
| 2848 |
-
}
|
| 2849 |
-
// subtract out table left position from resizable handles. Fixes #864
|
| 2850 |
-
// jQuery v3.3.0+ appears to include the start position with the $header.position().left; see #1544
|
| 2851 |
-
startPosition = parseFloat($.fn.jquery) >= 3.3 ? 0 : c.$table.position().left;
|
| 2852 |
-
$handles.each( function() {
|
| 2853 |
-
var $this = $(this),
|
| 2854 |
-
column = parseInt( $this.attr( 'data-column' ), 10 ),
|
| 2855 |
-
columns = c.columns - 1,
|
| 2856 |
-
$header = $this.data( 'header' );
|
| 2857 |
-
if ( !$header ) { return; } // see #859
|
| 2858 |
-
if (
|
| 2859 |
-
!$header.is(':visible') ||
|
| 2860 |
-
( !wo.resizable_addLastColumn && ts.resizable.checkVisibleColumns(c, column) )
|
| 2861 |
-
) {
|
| 2862 |
-
$this.hide();
|
| 2863 |
-
} else if ( column < columns || column === columns && wo.resizable_addLastColumn ) {
|
| 2864 |
-
$this.css({
|
| 2865 |
-
display: 'inline-block',
|
| 2866 |
-
height : tableHeight,
|
| 2867 |
-
left : $header.position().left - startPosition + $header.outerWidth() - handleCenter
|
| 2868 |
-
});
|
| 2869 |
-
}
|
| 2870 |
-
});
|
| 2871 |
-
},
|
| 2872 |
-
|
| 2873 |
-
// Fixes #1485
|
| 2874 |
-
checkVisibleColumns: function( c, column ) {
|
| 2875 |
-
var i,
|
| 2876 |
-
len = 0;
|
| 2877 |
-
for ( i = column + 1; i < c.columns; i++ ) {
|
| 2878 |
-
len += c.$headerIndexed[i].is( ':visible' ) ? 1 : 0;
|
| 2879 |
-
}
|
| 2880 |
-
return len === 0;
|
| 2881 |
-
},
|
| 2882 |
-
|
| 2883 |
-
// prevent text selection while dragging resize bar
|
| 2884 |
-
toggleTextSelection : function( c, wo, toggle ) {
|
| 2885 |
-
var namespace = c.namespace + 'tsresize';
|
| 2886 |
-
wo.resizable_vars.disabled = toggle;
|
| 2887 |
-
$( 'body' ).toggleClass( ts.css.resizableNoSelect, toggle );
|
| 2888 |
-
if ( toggle ) {
|
| 2889 |
-
$( 'body' )
|
| 2890 |
-
.attr( 'unselectable', 'on' )
|
| 2891 |
-
.bind( 'selectstart' + namespace, false );
|
| 2892 |
-
} else {
|
| 2893 |
-
$( 'body' )
|
| 2894 |
-
.removeAttr( 'unselectable' )
|
| 2895 |
-
.unbind( 'selectstart' + namespace );
|
| 2896 |
-
}
|
| 2897 |
-
},
|
| 2898 |
-
|
| 2899 |
-
bindings : function( c, wo ) {
|
| 2900 |
-
var namespace = c.namespace + 'tsresize';
|
| 2901 |
-
wo.$resizable_container.children().bind( 'mousedown', function( event ) {
|
| 2902 |
-
// save header cell and mouse position
|
| 2903 |
-
var column,
|
| 2904 |
-
vars = wo.resizable_vars,
|
| 2905 |
-
$extras = $( c.namespace + '_extra_headers' ),
|
| 2906 |
-
$header = $( event.target ).data( 'header' );
|
| 2907 |
-
|
| 2908 |
-
column = parseInt( $header.attr( 'data-column' ), 10 );
|
| 2909 |
-
vars.$target = $header = $header.add( $extras.filter('[data-column="' + column + '"]') );
|
| 2910 |
-
vars.target = column;
|
| 2911 |
-
|
| 2912 |
-
// if table is not as wide as it's parent, then resize the table
|
| 2913 |
-
vars.$next = event.shiftKey || wo.resizable_targetLast ?
|
| 2914 |
-
$header.parent().children().not( '.resizable-false' ).filter( ':last' ) :
|
| 2915 |
-
$header.nextAll( ':not(.resizable-false)' ).eq( 0 );
|
| 2916 |
-
|
| 2917 |
-
column = parseInt( vars.$next.attr( 'data-column' ), 10 );
|
| 2918 |
-
vars.$next = vars.$next.add( $extras.filter('[data-column="' + column + '"]') );
|
| 2919 |
-
vars.next = column;
|
| 2920 |
-
|
| 2921 |
-
vars.mouseXPosition = event.pageX;
|
| 2922 |
-
ts.resizable.updateStoredSizes( c, wo );
|
| 2923 |
-
ts.resizable.toggleTextSelection(c, wo, true );
|
| 2924 |
-
});
|
| 2925 |
-
|
| 2926 |
-
$( document )
|
| 2927 |
-
.bind( 'mousemove' + namespace, function( event ) {
|
| 2928 |
-
var vars = wo.resizable_vars;
|
| 2929 |
-
// ignore mousemove if no mousedown
|
| 2930 |
-
if ( !vars.disabled || vars.mouseXPosition === 0 || !vars.$target ) { return; }
|
| 2931 |
-
if ( wo.resizable_throttle ) {
|
| 2932 |
-
clearTimeout( vars.timer );
|
| 2933 |
-
vars.timer = setTimeout( function() {
|
| 2934 |
-
ts.resizable.mouseMove( c, wo, event );
|
| 2935 |
-
}, isNaN( wo.resizable_throttle ) ? 5 : wo.resizable_throttle );
|
| 2936 |
-
} else {
|
| 2937 |
-
ts.resizable.mouseMove( c, wo, event );
|
| 2938 |
-
}
|
| 2939 |
-
})
|
| 2940 |
-
.bind( 'mouseup' + namespace, function() {
|
| 2941 |
-
if (!wo.resizable_vars.disabled) { return; }
|
| 2942 |
-
ts.resizable.toggleTextSelection( c, wo, false );
|
| 2943 |
-
ts.resizable.stopResize( c, wo );
|
| 2944 |
-
ts.resizable.setHandlePosition( c, wo );
|
| 2945 |
-
});
|
| 2946 |
-
|
| 2947 |
-
// resizeEnd event triggered by scroller widget
|
| 2948 |
-
$( window ).bind( 'resize' + namespace + ' resizeEnd' + namespace, function() {
|
| 2949 |
-
ts.resizable.setHandlePosition( c, wo );
|
| 2950 |
-
});
|
| 2951 |
-
|
| 2952 |
-
// right click to reset columns to default widths
|
| 2953 |
-
c.$table
|
| 2954 |
-
.bind( 'columnUpdate pagerComplete resizableUpdate '.split( ' ' ).join( namespace + ' ' ), function() {
|
| 2955 |
-
ts.resizable.setHandlePosition( c, wo );
|
| 2956 |
-
})
|
| 2957 |
-
.bind( 'resizableReset' + namespace, function() {
|
| 2958 |
-
ts.resizableReset( c.table );
|
| 2959 |
-
})
|
| 2960 |
-
.find( 'thead:first' )
|
| 2961 |
-
.add( $( c.namespace + '_extra_table' ).find( 'thead:first' ) )
|
| 2962 |
-
.bind( 'contextmenu' + namespace, function() {
|
| 2963 |
-
// $.isEmptyObject() needs jQuery 1.4+; allow right click if already reset
|
| 2964 |
-
var allowClick = wo.resizable_vars.storedSizes.length === 0;
|
| 2965 |
-
ts.resizableReset( c.table );
|
| 2966 |
-
ts.resizable.setHandlePosition( c, wo );
|
| 2967 |
-
wo.resizable_vars.storedSizes = [];
|
| 2968 |
-
return allowClick;
|
| 2969 |
-
});
|
| 2970 |
-
|
| 2971 |
-
},
|
| 2972 |
-
|
| 2973 |
-
mouseMove : function( c, wo, event ) {
|
| 2974 |
-
if ( wo.resizable_vars.mouseXPosition === 0 || !wo.resizable_vars.$target ) { return; }
|
| 2975 |
-
// resize columns
|
| 2976 |
-
var column,
|
| 2977 |
-
total = 0,
|
| 2978 |
-
vars = wo.resizable_vars,
|
| 2979 |
-
$next = vars.$next,
|
| 2980 |
-
tar = vars.storedSizes[ vars.target ],
|
| 2981 |
-
leftEdge = event.pageX - vars.mouseXPosition;
|
| 2982 |
-
if ( vars.overflow ) {
|
| 2983 |
-
if ( tar + leftEdge > 0 ) {
|
| 2984 |
-
vars.storedSizes[ vars.target ] += leftEdge;
|
| 2985 |
-
ts.resizable.setWidth( vars.$target, vars.storedSizes[ vars.target ], true );
|
| 2986 |
-
// update the entire table width
|
| 2987 |
-
for ( column = 0; column < c.columns; column++ ) {
|
| 2988 |
-
total += vars.storedSizes[ column ];
|
| 2989 |
-
}
|
| 2990 |
-
ts.resizable.setWidth( c.$table.add( $( c.namespace + '_extra_table' ) ), total );
|
| 2991 |
-
}
|
| 2992 |
-
if ( !$next.length ) {
|
| 2993 |
-
// if expanding right-most column, scroll the wrapper
|
| 2994 |
-
vars.$wrap[0].scrollLeft = c.$table.width();
|
| 2995 |
-
}
|
| 2996 |
-
} else if ( vars.fullWidth ) {
|
| 2997 |
-
vars.storedSizes[ vars.target ] += leftEdge;
|
| 2998 |
-
vars.storedSizes[ vars.next ] -= leftEdge;
|
| 2999 |
-
ts.resizable.setWidths( c, wo );
|
| 3000 |
-
} else {
|
| 3001 |
-
vars.storedSizes[ vars.target ] += leftEdge;
|
| 3002 |
-
ts.resizable.setWidths( c, wo );
|
| 3003 |
-
}
|
| 3004 |
-
vars.mouseXPosition = event.pageX;
|
| 3005 |
-
// dynamically update sticky header widths
|
| 3006 |
-
c.$table.triggerHandler('stickyHeadersUpdate');
|
| 3007 |
-
},
|
| 3008 |
-
|
| 3009 |
-
stopResize : function( c, wo ) {
|
| 3010 |
-
var vars = wo.resizable_vars;
|
| 3011 |
-
ts.resizable.updateStoredSizes( c, wo );
|
| 3012 |
-
if ( vars.useStorage ) {
|
| 3013 |
-
// save all column widths
|
| 3014 |
-
ts.storage( c.table, ts.css.resizableStorage, vars.storedSizes );
|
| 3015 |
-
ts.storage( c.table, 'tablesorter-table-resized-width', c.$table.width() );
|
| 3016 |
-
}
|
| 3017 |
-
vars.mouseXPosition = 0;
|
| 3018 |
-
vars.$target = vars.$next = null;
|
| 3019 |
-
// will update stickyHeaders, just in case, see #912
|
| 3020 |
-
c.$table.triggerHandler('stickyHeadersUpdate');
|
| 3021 |
-
c.$table.triggerHandler('resizableComplete');
|
| 3022 |
-
}
|
| 3023 |
-
};
|
| 3024 |
-
|
| 3025 |
-
// this widget saves the column widths if
|
| 3026 |
-
// $.tablesorter.storage function is included
|
| 3027 |
-
// **************************
|
| 3028 |
-
ts.addWidget({
|
| 3029 |
-
id: 'resizable',
|
| 3030 |
-
priority: 40,
|
| 3031 |
-
options: {
|
| 3032 |
-
resizable : true, // save column widths to storage
|
| 3033 |
-
resizable_addLastColumn : false,
|
| 3034 |
-
resizable_includeFooter: true,
|
| 3035 |
-
resizable_widths : [],
|
| 3036 |
-
resizable_throttle : false, // set to true (5ms) or any number 0-10 range
|
| 3037 |
-
resizable_targetLast : false
|
| 3038 |
-
},
|
| 3039 |
-
init: function(table, thisWidget, c, wo) {
|
| 3040 |
-
ts.resizable.init( c, wo );
|
| 3041 |
-
},
|
| 3042 |
-
format: function( table, c, wo ) {
|
| 3043 |
-
ts.resizable.setHandlePosition( c, wo );
|
| 3044 |
-
},
|
| 3045 |
-
remove: function( table, c, wo, refreshing ) {
|
| 3046 |
-
if (wo.$resizable_container) {
|
| 3047 |
-
var namespace = c.namespace + 'tsresize';
|
| 3048 |
-
c.$table.add( $( c.namespace + '_extra_table' ) )
|
| 3049 |
-
.removeClass('hasResizable')
|
| 3050 |
-
.children( 'thead' )
|
| 3051 |
-
.unbind( 'contextmenu' + namespace );
|
| 3052 |
-
|
| 3053 |
-
wo.$resizable_container.remove();
|
| 3054 |
-
ts.resizable.toggleTextSelection( c, wo, false );
|
| 3055 |
-
ts.resizableReset( table, refreshing );
|
| 3056 |
-
$( document ).unbind( 'mousemove' + namespace + ' mouseup' + namespace );
|
| 3057 |
-
}
|
| 3058 |
-
}
|
| 3059 |
-
});
|
| 3060 |
-
|
| 3061 |
-
ts.resizableReset = function( table, refreshing ) {
|
| 3062 |
-
$( table ).each(function() {
|
| 3063 |
-
var index, $t,
|
| 3064 |
-
c = this.config,
|
| 3065 |
-
wo = c && c.widgetOptions,
|
| 3066 |
-
vars = wo.resizable_vars;
|
| 3067 |
-
if ( table && c && c.$headerIndexed.length ) {
|
| 3068 |
-
// restore the initial table width
|
| 3069 |
-
if ( vars.overflow && vars.tableWidth ) {
|
| 3070 |
-
ts.resizable.setWidth( c.$table, vars.tableWidth, true );
|
| 3071 |
-
if ( vars.useStorage ) {
|
| 3072 |
-
ts.storage( table, 'tablesorter-table-resized-width', vars.tableWidth );
|
| 3073 |
-
}
|
| 3074 |
-
}
|
| 3075 |
-
for ( index = 0; index < c.columns; index++ ) {
|
| 3076 |
-
$t = c.$headerIndexed[ index ];
|
| 3077 |
-
if ( wo.resizable_widths && wo.resizable_widths[ index ] ) {
|
| 3078 |
-
ts.resizable.setWidth( $t, wo.resizable_widths[ index ], vars.overflow );
|
| 3079 |
-
} else if ( !$t.hasClass( 'resizable-false' ) ) {
|
| 3080 |
-
// don't clear the width of any column that is not resizable
|
| 3081 |
-
ts.resizable.setWidth( $t, '', vars.overflow );
|
| 3082 |
-
}
|
| 3083 |
-
}
|
| 3084 |
-
|
| 3085 |
-
// reset stickyHeader widths
|
| 3086 |
-
c.$table.triggerHandler( 'stickyHeadersUpdate' );
|
| 3087 |
-
if ( ts.storage && !refreshing ) {
|
| 3088 |
-
ts.storage( this, ts.css.resizableStorage, [] );
|
| 3089 |
-
}
|
| 3090 |
-
}
|
| 3091 |
-
});
|
| 3092 |
-
};
|
| 3093 |
-
|
| 3094 |
-
})( jQuery, window );
|
| 3095 |
-
|
| 3096 |
-
/*! Widget: saveSort - updated 2018-03-19 (v2.30.1) *//*
|
| 3097 |
-
* Requires tablesorter v2.16+
|
| 3098 |
-
* by Rob Garrison
|
| 3099 |
-
*/
|
| 3100 |
-
;(function ($) {
|
| 3101 |
-
'use strict';
|
| 3102 |
-
var ts = $.tablesorter || {};
|
| 3103 |
-
|
| 3104 |
-
function getStoredSortList(c) {
|
| 3105 |
-
var stored = ts.storage( c.table, 'tablesorter-savesort' );
|
| 3106 |
-
return (stored && stored.hasOwnProperty('sortList') && $.isArray(stored.sortList)) ? stored.sortList : [];
|
| 3107 |
-
}
|
| 3108 |
-
|
| 3109 |
-
function sortListChanged(c, sortList) {
|
| 3110 |
-
return (sortList || getStoredSortList(c)).join(',') !== c.sortList.join(',');
|
| 3111 |
-
}
|
| 3112 |
-
|
| 3113 |
-
// this widget saves the last sort only if the
|
| 3114 |
-
// saveSort widget option is true AND the
|
| 3115 |
-
// $.tablesorter.storage function is included
|
| 3116 |
-
// **************************
|
| 3117 |
-
ts.addWidget({
|
| 3118 |
-
id: 'saveSort',
|
| 3119 |
-
priority: 20,
|
| 3120 |
-
options: {
|
| 3121 |
-
saveSort : true
|
| 3122 |
-
},
|
| 3123 |
-
init: function(table, thisWidget, c, wo) {
|
| 3124 |
-
// run widget format before all other widgets are applied to the table
|
| 3125 |
-
thisWidget.format(table, c, wo, true);
|
| 3126 |
-
},
|
| 3127 |
-
format: function(table, c, wo, init) {
|
| 3128 |
-
var time,
|
| 3129 |
-
$table = c.$table,
|
| 3130 |
-
saveSort = wo.saveSort !== false, // make saveSort active/inactive; default to true
|
| 3131 |
-
sortList = { 'sortList' : c.sortList },
|
| 3132 |
-
debug = ts.debug(c, 'saveSort');
|
| 3133 |
-
if (debug) {
|
| 3134 |
-
time = new Date();
|
| 3135 |
-
}
|
| 3136 |
-
if ($table.hasClass('hasSaveSort')) {
|
| 3137 |
-
if (saveSort && table.hasInitialized && ts.storage && sortListChanged(c)) {
|
| 3138 |
-
ts.storage( table, 'tablesorter-savesort', sortList );
|
| 3139 |
-
if (debug) {
|
| 3140 |
-
console.log('saveSort >> Saving last sort: ' + c.sortList + ts.benchmark(time));
|
| 3141 |
-
}
|
| 3142 |
-
}
|
| 3143 |
-
} else {
|
| 3144 |
-
// set table sort on initial run of the widget
|
| 3145 |
-
$table.addClass('hasSaveSort');
|
| 3146 |
-
sortList = '';
|
| 3147 |
-
// get data
|
| 3148 |
-
if (ts.storage) {
|
| 3149 |
-
sortList = getStoredSortList(c);
|
| 3150 |
-
if (debug) {
|
| 3151 |
-
console.log('saveSort >> Last sort loaded: "' + sortList + '"' + ts.benchmark(time));
|
| 3152 |
-
}
|
| 3153 |
-
$table.bind('saveSortReset', function(event) {
|
| 3154 |
-
event.stopPropagation();
|
| 3155 |
-
ts.storage( table, 'tablesorter-savesort', '' );
|
| 3156 |
-
});
|
| 3157 |
-
}
|
| 3158 |
-
// init is true when widget init is run, this will run this widget before all other widgets have initialized
|
| 3159 |
-
// this method allows using this widget in the original tablesorter plugin; but then it will run all widgets twice.
|
| 3160 |
-
if (init && sortList && sortList.length > 0) {
|
| 3161 |
-
c.sortList = sortList;
|
| 3162 |
-
} else if (table.hasInitialized && sortList && sortList.length > 0) {
|
| 3163 |
-
// update sort change
|
| 3164 |
-
if (sortListChanged(c, sortList)) {
|
| 3165 |
-
ts.sortOn(c, sortList);
|
| 3166 |
-
}
|
| 3167 |
-
}
|
| 3168 |
-
}
|
| 3169 |
-
},
|
| 3170 |
-
remove: function(table, c) {
|
| 3171 |
-
c.$table.removeClass('hasSaveSort');
|
| 3172 |
-
// clear storage
|
| 3173 |
-
if (ts.storage) { ts.storage( table, 'tablesorter-savesort', '' ); }
|
| 3174 |
-
}
|
| 3175 |
-
});
|
| 3176 |
-
|
| 3177 |
-
})(jQuery);
|
| 1 |
+
/*! tablesorter (FORK) - updated 2020-03-03 (v2.31.3)*/
|
| 2 |
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
|
| 3 |
(function(factory){if (typeof define === 'function' && define.amd){define(['jquery'], factory);} else if (typeof module === 'object' && typeof module.exports === 'object'){module.exports = factory(require('jquery'));} else {factory(jQuery);}}(function(jQuery) {
|
| 4 |
+
/*! Widget: storage - updated 2018-03-18 (v2.30.0) */
|
| 5 |
+
/*global JSON:false */
|
| 6 |
+
;(function ($, window, document) {
|
| 7 |
+
'use strict';
|
| 8 |
+
|
| 9 |
+
var ts = $.tablesorter || {};
|
| 10 |
+
|
| 11 |
+
// update defaults for validator; these values must be falsy!
|
| 12 |
+
$.extend(true, ts.defaults, {
|
| 13 |
+
fixedUrl: '',
|
| 14 |
+
widgetOptions: {
|
| 15 |
+
storage_fixedUrl: '',
|
| 16 |
+
storage_group: '',
|
| 17 |
+
storage_page: '',
|
| 18 |
+
storage_storageType: '',
|
| 19 |
+
storage_tableId: '',
|
| 20 |
+
storage_useSessionStorage: ''
|
| 21 |
+
}
|
| 22 |
+
});
|
| 23 |
+
|
| 24 |
+
// *** Store data in local storage, with a cookie fallback ***
|
| 25 |
+
/* IE7 needs JSON library for JSON.stringify - (http://caniuse.com/#search=json)
|
| 26 |
+
if you need it, then include https://github.com/douglascrockford/JSON-js
|
| 27 |
+
|
| 28 |
+
$.parseJSON is not available is jQuery versions older than 1.4.1, using older
|
| 29 |
+
versions will only allow storing information for one page at a time
|
| 30 |
+
|
| 31 |
+
// *** Save data (JSON format only) ***
|
| 32 |
+
// val must be valid JSON... use http://jsonlint.com/ to ensure it is valid
|
| 33 |
+
var val = { "mywidget" : "data1" }; // valid JSON uses double quotes
|
| 34 |
+
// $.tablesorter.storage(table, key, val);
|
| 35 |
+
$.tablesorter.storage(table, 'tablesorter-mywidget', val);
|
| 36 |
+
|
| 37 |
+
// *** Get data: $.tablesorter.storage(table, key); ***
|
| 38 |
+
v = $.tablesorter.storage(table, 'tablesorter-mywidget');
|
| 39 |
+
// val may be empty, so also check for your data
|
| 40 |
+
val = (v && v.hasOwnProperty('mywidget')) ? v.mywidget : '';
|
| 41 |
+
alert(val); // 'data1' if saved, or '' if not
|
| 42 |
+
*/
|
| 43 |
+
ts.storage = function(table, key, value, options) {
|
| 44 |
+
table = $(table)[0];
|
| 45 |
+
var cookieIndex, cookies, date,
|
| 46 |
+
hasStorage = false,
|
| 47 |
+
values = {},
|
| 48 |
+
c = table.config,
|
| 49 |
+
wo = c && c.widgetOptions,
|
| 50 |
+
debug = ts.debug(c, 'storage'),
|
| 51 |
+
storageType = (
|
| 52 |
+
( options && options.storageType ) || ( wo && wo.storage_storageType )
|
| 53 |
+
).toString().charAt(0).toLowerCase(),
|
| 54 |
+
// deprecating "useSessionStorage"; any storageType setting overrides it
|
| 55 |
+
session = storageType ? '' :
|
| 56 |
+
( options && options.useSessionStorage ) || ( wo && wo.storage_useSessionStorage ),
|
| 57 |
+
$table = $(table),
|
| 58 |
+
// id from (1) options ID, (2) table 'data-table-group' attribute, (3) widgetOptions.storage_tableId,
|
| 59 |
+
// (4) table ID, then (5) table index
|
| 60 |
+
id = options && options.id ||
|
| 61 |
+
$table.attr( options && options.group || wo && wo.storage_group || 'data-table-group') ||
|
| 62 |
+
wo && wo.storage_tableId || table.id || $('.tablesorter').index( $table ),
|
| 63 |
+
// url from (1) options url, (2) table 'data-table-page' attribute, (3) widgetOptions.storage_fixedUrl,
|
| 64 |
+
// (4) table.config.fixedUrl (deprecated), then (5) window location path
|
| 65 |
+
url = options && options.url ||
|
| 66 |
+
$table.attr(options && options.page || wo && wo.storage_page || 'data-table-page') ||
|
| 67 |
+
wo && wo.storage_fixedUrl || c && c.fixedUrl || window.location.pathname;
|
| 68 |
+
|
| 69 |
+
// skip if using cookies
|
| 70 |
+
if (storageType !== 'c') {
|
| 71 |
+
storageType = (storageType === 's' || session) ? 'sessionStorage' : 'localStorage';
|
| 72 |
+
// https://gist.github.com/paulirish/5558557
|
| 73 |
+
if (storageType in window) {
|
| 74 |
+
try {
|
| 75 |
+
window[storageType].setItem('_tmptest', 'temp');
|
| 76 |
+
hasStorage = true;
|
| 77 |
+
window[storageType].removeItem('_tmptest');
|
| 78 |
+
} catch (error) {
|
| 79 |
+
console.warn( storageType + ' is not supported in this browser' );
|
| 80 |
+
}
|
| 81 |
+
}
|
| 82 |
+
}
|
| 83 |
+
if (debug) {
|
| 84 |
+
console.log('Storage >> Using', hasStorage ? storageType : 'cookies');
|
| 85 |
+
}
|
| 86 |
+
// *** get value ***
|
| 87 |
+
if ($.parseJSON) {
|
| 88 |
+
if (hasStorage) {
|
| 89 |
+
values = $.parseJSON( window[storageType][key] || 'null' ) || {};
|
| 90 |
+
} else {
|
| 91 |
+
// old browser, using cookies
|
| 92 |
+
cookies = document.cookie.split(/[;\s|=]/);
|
| 93 |
+
// add one to get from the key to the value
|
| 94 |
+
cookieIndex = $.inArray(key, cookies) + 1;
|
| 95 |
+
values = (cookieIndex !== 0) ? $.parseJSON(cookies[cookieIndex] || 'null') || {} : {};
|
| 96 |
+
}
|
| 97 |
+
}
|
| 98 |
+
// allow value to be an empty string too
|
| 99 |
+
if (typeof value !== 'undefined' && window.JSON && JSON.hasOwnProperty('stringify')) {
|
| 100 |
+
// add unique identifiers = url pathname > table ID/index on page > data
|
| 101 |
+
if (!values[url]) {
|
| 102 |
+
values[url] = {};
|
| 103 |
+
}
|
| 104 |
+
values[url][id] = value;
|
| 105 |
+
// *** set value ***
|
| 106 |
+
if (hasStorage) {
|
| 107 |
+
window[storageType][key] = JSON.stringify(values);
|
| 108 |
+
} else {
|
| 109 |
+
date = new Date();
|
| 110 |
+
date.setTime(date.getTime() + (31536e+6)); // 365 days
|
| 111 |
+
document.cookie = key + '=' + (JSON.stringify(values)).replace(/\"/g, '\"') + '; expires=' + date.toGMTString() + '; path=/';
|
| 112 |
+
}
|
| 113 |
+
} else {
|
| 114 |
+
return values && values[url] ? values[url][id] : '';
|
| 115 |
+
}
|
| 116 |
+
};
|
| 117 |
+
|
| 118 |
+
})(jQuery, window, document);
|
| 119 |
+
|
| 120 |
+
/*! Widget: uitheme - updated 2018-03-18 (v2.30.0) */
|
| 121 |
+
;(function ($) {
|
| 122 |
+
'use strict';
|
| 123 |
+
var ts = $.tablesorter || {};
|
| 124 |
+
|
| 125 |
+
ts.themes = {
|
| 126 |
+
'bootstrap' : {
|
| 127 |
+
table : 'table table-bordered table-striped',
|
| 128 |
+
caption : 'caption',
|
| 129 |
+
// header class names
|
| 130 |
+
header : 'bootstrap-header', // give the header a gradient background (theme.bootstrap_2.css)
|
| 131 |
+
sortNone : '',
|
| 132 |
+
sortAsc : '',
|
| 133 |
+
sortDesc : '',
|
| 134 |
+
active : '', // applied when column is sorted
|
| 135 |
+
hover : '', // custom css required - a defined bootstrap style may not override other classes
|
| 136 |
+
// icon class names
|
| 137 |
+
icons : '', // add 'bootstrap-icon-white' to make them white; this icon class is added to the <i> in the header
|
| 138 |
+
iconSortNone : 'bootstrap-icon-unsorted', // class name added to icon when column is not sorted
|
| 139 |
+
iconSortAsc : 'glyphicon glyphicon-chevron-up', // class name added to icon when column has ascending sort
|
| 140 |
+
iconSortDesc : 'glyphicon glyphicon-chevron-down', // class name added to icon when column has descending sort
|
| 141 |
+
filterRow : '', // filter row class
|
| 142 |
+
footerRow : '',
|
| 143 |
+
footerCells : '',
|
| 144 |
+
even : '', // even row zebra striping
|
| 145 |
+
odd : '' // odd row zebra striping
|
| 146 |
+
},
|
| 147 |
+
'jui' : {
|
| 148 |
+
table : 'ui-widget ui-widget-content ui-corner-all', // table classes
|
| 149 |
+
caption : 'ui-widget-content',
|
| 150 |
+
// header class names
|
| 151 |
+
header : 'ui-widget-header ui-corner-all ui-state-default', // header classes
|
| 152 |
+
sortNone : '',
|
| 153 |
+
sortAsc : '',
|
| 154 |
+
sortDesc : '',
|
| 155 |
+
active : 'ui-state-active', // applied when column is sorted
|
| 156 |
+
hover : 'ui-state-hover', // hover class
|
| 157 |
+
// icon class names
|
| 158 |
+
icons : 'ui-icon', // icon class added to the <i> in the header
|
| 159 |
+
iconSortNone : 'ui-icon-carat-2-n-s ui-icon-caret-2-n-s', // class name added to icon when column is not sorted
|
| 160 |
+
iconSortAsc : 'ui-icon-carat-1-n ui-icon-caret-1-n', // class name added to icon when column has ascending sort
|
| 161 |
+
iconSortDesc : 'ui-icon-carat-1-s ui-icon-caret-1-s', // class name added to icon when column has descending sort
|
| 162 |
+
filterRow : '',
|
| 163 |
+
footerRow : '',
|
| 164 |
+
footerCells : '',
|
| 165 |
+
even : 'ui-widget-content', // even row zebra striping
|
| 166 |
+
odd : 'ui-state-default' // odd row zebra striping
|
| 167 |
+
}
|
| 168 |
+
};
|
| 169 |
+
|
| 170 |
+
$.extend(ts.css, {
|
| 171 |
+
wrapper : 'tablesorter-wrapper' // ui theme & resizable
|
| 172 |
+
});
|
| 173 |
+
|
| 174 |
+
ts.addWidget({
|
| 175 |
+
id: 'uitheme',
|
| 176 |
+
priority: 10,
|
| 177 |
+
format: function(table, c, wo) {
|
| 178 |
+
var i, tmp, hdr, icon, time, $header, $icon, $tfoot, $h, oldtheme, oldremove, oldIconRmv, hasOldTheme,
|
| 179 |
+
themesAll = ts.themes,
|
| 180 |
+
$table = c.$table.add( $( c.namespace + '_extra_table' ) ),
|
| 181 |
+
$headers = c.$headers.add( $( c.namespace + '_extra_headers' ) ),
|
| 182 |
+
theme = c.theme || 'jui',
|
| 183 |
+
themes = themesAll[theme] || {},
|
| 184 |
+
remove = $.trim( [ themes.sortNone, themes.sortDesc, themes.sortAsc, themes.active ].join( ' ' ) ),
|
| 185 |
+
iconRmv = $.trim( [ themes.iconSortNone, themes.iconSortDesc, themes.iconSortAsc ].join( ' ' ) ),
|
| 186 |
+
debug = ts.debug(c, 'uitheme');
|
| 187 |
+
if (debug) { time = new Date(); }
|
| 188 |
+
// initialization code - run once
|
| 189 |
+
if (!$table.hasClass('tablesorter-' + theme) || c.theme !== c.appliedTheme || !wo.uitheme_applied) {
|
| 190 |
+
wo.uitheme_applied = true;
|
| 191 |
+
oldtheme = themesAll[c.appliedTheme] || {};
|
| 192 |
+
hasOldTheme = !$.isEmptyObject(oldtheme);
|
| 193 |
+
oldremove = hasOldTheme ? [ oldtheme.sortNone, oldtheme.sortDesc, oldtheme.sortAsc, oldtheme.active ].join( ' ' ) : '';
|
| 194 |
+
oldIconRmv = hasOldTheme ? [ oldtheme.iconSortNone, oldtheme.iconSortDesc, oldtheme.iconSortAsc ].join( ' ' ) : '';
|
| 195 |
+
if (hasOldTheme) {
|
| 196 |
+
wo.zebra[0] = $.trim( ' ' + wo.zebra[0].replace(' ' + oldtheme.even, '') );
|
| 197 |
+
wo.zebra[1] = $.trim( ' ' + wo.zebra[1].replace(' ' + oldtheme.odd, '') );
|
| 198 |
+
c.$tbodies.children().removeClass( [ oldtheme.even, oldtheme.odd ].join(' ') );
|
| 199 |
+
}
|
| 200 |
+
// update zebra stripes
|
| 201 |
+
if (themes.even) { wo.zebra[0] += ' ' + themes.even; }
|
| 202 |
+
if (themes.odd) { wo.zebra[1] += ' ' + themes.odd; }
|
| 203 |
+
// add caption style
|
| 204 |
+
$table.children('caption')
|
| 205 |
+
.removeClass(oldtheme.caption || '')
|
| 206 |
+
.addClass(themes.caption);
|
| 207 |
+
// add table/footer class names
|
| 208 |
+
$tfoot = $table
|
| 209 |
+
// remove other selected themes
|
| 210 |
+
.removeClass( (c.appliedTheme ? 'tablesorter-' + (c.appliedTheme || '') : '') + ' ' + (oldtheme.table || '') )
|
| 211 |
+
.addClass('tablesorter-' + theme + ' ' + (themes.table || '')) // add theme widget class name
|
| 212 |
+
.children('tfoot');
|
| 213 |
+
c.appliedTheme = c.theme;
|
| 214 |
+
|
| 215 |
+
if ($tfoot.length) {
|
| 216 |
+
$tfoot
|
| 217 |
+
// if oldtheme.footerRow or oldtheme.footerCells are undefined, all class names are removed
|
| 218 |
+
.children('tr').removeClass(oldtheme.footerRow || '').addClass(themes.footerRow)
|
| 219 |
+
.children('th, td').removeClass(oldtheme.footerCells || '').addClass(themes.footerCells);
|
| 220 |
+
}
|
| 221 |
+
// update header classes
|
| 222 |
+
$headers
|
| 223 |
+
.removeClass( (hasOldTheme ? [ oldtheme.header, oldtheme.hover, oldremove ].join(' ') : '') || '' )
|
| 224 |
+
.addClass(themes.header)
|
| 225 |
+
.not('.sorter-false')
|
| 226 |
+
.unbind('mouseenter.tsuitheme mouseleave.tsuitheme')
|
| 227 |
+
.bind('mouseenter.tsuitheme mouseleave.tsuitheme', function(event) {
|
| 228 |
+
// toggleClass with switch added in jQuery 1.3
|
| 229 |
+
$(this)[ event.type === 'mouseenter' ? 'addClass' : 'removeClass' ](themes.hover || '');
|
| 230 |
+
});
|
| 231 |
+
|
| 232 |
+
$headers.each(function() {
|
| 233 |
+
var $this = $(this);
|
| 234 |
+
if (!$this.find('.' + ts.css.wrapper).length) {
|
| 235 |
+
// Firefox needs this inner div to position the icon & resizer correctly
|
| 236 |
+
$this.wrapInner('<div class="' + ts.css.wrapper + '" style="position:relative;height:100%;width:100%"></div>');
|
| 237 |
+
}
|
| 238 |
+
});
|
| 239 |
+
if (c.cssIcon) {
|
| 240 |
+
// if c.cssIcon is '', then no <i> is added to the header
|
| 241 |
+
$headers
|
| 242 |
+
.find('.' + ts.css.icon)
|
| 243 |
+
.removeClass(hasOldTheme ? [ oldtheme.icons, oldIconRmv ].join(' ') : '')
|
| 244 |
+
.addClass(themes.icons || '');
|
| 245 |
+
}
|
| 246 |
+
// filter widget initializes after uitheme
|
| 247 |
+
if (ts.hasWidget( c.table, 'filter' )) {
|
| 248 |
+
tmp = function() {
|
| 249 |
+
$table.children('thead').children('.' + ts.css.filterRow)
|
| 250 |
+
.removeClass(hasOldTheme ? oldtheme.filterRow || '' : '')
|
| 251 |
+
.addClass(themes.filterRow || '');
|
| 252 |
+
};
|
| 253 |
+
if (wo.filter_initialized) {
|
| 254 |
+
tmp();
|
| 255 |
+
} else {
|
| 256 |
+
$table.one('filterInit', function() {
|
| 257 |
+
tmp();
|
| 258 |
+
});
|
| 259 |
+
}
|
| 260 |
+
}
|
| 261 |
+
}
|
| 262 |
+
for (i = 0; i < c.columns; i++) {
|
| 263 |
+
$header = c.$headers
|
| 264 |
+
.add($(c.namespace + '_extra_headers'))
|
| 265 |
+
.not('.sorter-false')
|
| 266 |
+
.filter('[data-column="' + i + '"]');
|
| 267 |
+
$icon = (ts.css.icon) ? $header.find('.' + ts.css.icon) : $();
|
| 268 |
+
$h = $headers.not('.sorter-false').filter('[data-column="' + i + '"]:last');
|
| 269 |
+
if ($h.length) {
|
| 270 |
+
$header.removeClass(remove);
|
| 271 |
+
$icon.removeClass(iconRmv);
|
| 272 |
+
if ($h[0].sortDisabled) {
|
| 273 |
+
// no sort arrows for disabled columns!
|
| 274 |
+
$icon.removeClass(themes.icons || '');
|
| 275 |
+
} else {
|
| 276 |
+
hdr = themes.sortNone;
|
| 277 |
+
icon = themes.iconSortNone;
|
| 278 |
+
if ($h.hasClass(ts.css.sortAsc)) {
|
| 279 |
+
hdr = [ themes.sortAsc, themes.active ].join(' ');
|
| 280 |
+
icon = themes.iconSortAsc;
|
| 281 |
+
} else if ($h.hasClass(ts.css.sortDesc)) {
|
| 282 |
+
hdr = [ themes.sortDesc, themes.active ].join(' ');
|
| 283 |
+
icon = themes.iconSortDesc;
|
| 284 |
+
}
|
| 285 |
+
$header.addClass(hdr);
|
| 286 |
+
$icon.addClass(icon || '');
|
| 287 |
+
}
|
| 288 |
+
}
|
| 289 |
+
}
|
| 290 |
+
if (debug) {
|
| 291 |
+
console.log('uitheme >> Applied ' + theme + ' theme' + ts.benchmark(time));
|
| 292 |
+
}
|
| 293 |
+
},
|
| 294 |
+
remove: function(table, c, wo, refreshing) {
|
| 295 |
+
if (!wo.uitheme_applied) { return; }
|
| 296 |
+
var $table = c.$table,
|
| 297 |
+
theme = c.appliedTheme || 'jui',
|
| 298 |
+
themes = ts.themes[ theme ] || ts.themes.jui,
|
| 299 |
+
$headers = $table.children('thead').children(),
|
| 300 |
+
remove = themes.sortNone + ' ' + themes.sortDesc + ' ' + themes.sortAsc,
|
| 301 |
+
iconRmv = themes.iconSortNone + ' ' + themes.iconSortDesc + ' ' + themes.iconSortAsc;
|
| 302 |
+
$table.removeClass('tablesorter-' + theme + ' ' + themes.table);
|
| 303 |
+
wo.uitheme_applied = false;
|
| 304 |
+
if (refreshing) { return; }
|
| 305 |
+
$table.find(ts.css.header).removeClass(themes.header);
|
| 306 |
+
$headers
|
| 307 |
+
.unbind('mouseenter.tsuitheme mouseleave.tsuitheme') // remove hover
|
| 308 |
+
.removeClass(themes.hover + ' ' + remove + ' ' + themes.active)
|
| 309 |
+
.filter('.' + ts.css.filterRow)
|
| 310 |
+
.removeClass(themes.filterRow);
|
| 311 |
+
$headers.find('.' + ts.css.icon).removeClass(themes.icons + ' ' + iconRmv);
|
| 312 |
+
}
|
| 313 |
+
});
|
| 314 |
+
|
| 315 |
+
})(jQuery);
|
| 316 |
+
|
| 317 |
+
/*! Widget: columns - updated 5/24/2017 (v2.28.11) */
|
| 318 |
+
;(function ($) {
|
| 319 |
+
'use strict';
|
| 320 |
+
var ts = $.tablesorter || {};
|
| 321 |
+
|
| 322 |
+
ts.addWidget({
|
| 323 |
+
id: 'columns',
|
| 324 |
+
priority: 65,
|
| 325 |
+
options : {
|
| 326 |
+
columns : [ 'primary', 'secondary', 'tertiary' ]
|
| 327 |
+
},
|
| 328 |
+
format: function(table, c, wo) {
|
| 329 |
+
var $tbody, tbodyIndex, $rows, rows, $row, $cells, remove, indx,
|
| 330 |
+
$table = c.$table,
|
| 331 |
+
$tbodies = c.$tbodies,
|
| 332 |
+
sortList = c.sortList,
|
| 333 |
+
len = sortList.length,
|
| 334 |
+
// removed c.widgetColumns support
|
| 335 |
+
css = wo && wo.columns || [ 'primary', 'secondary', 'tertiary' ],
|
| 336 |
+
last = css.length - 1;
|
| 337 |
+
remove = css.join(' ');
|
| 338 |
+
// check if there is a sort (on initialization there may not be one)
|
| 339 |
+
for (tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
|
| 340 |
+
$tbody = ts.processTbody(table, $tbodies.eq(tbodyIndex), true); // detach tbody
|
| 341 |
+
$rows = $tbody.children('tr');
|
| 342 |
+
// loop through the visible rows
|
| 343 |
+
$rows.each(function() {
|
| 344 |
+
$row = $(this);
|
| 345 |
+
if (this.style.display !== 'none') {
|
| 346 |
+
// remove all columns class names
|
| 347 |
+
$cells = $row.children().removeClass(remove);
|
| 348 |
+
// add appropriate column class names
|
| 349 |
+
if (sortList && sortList[0]) {
|
| 350 |
+
// primary sort column class
|
| 351 |
+
$cells.eq(sortList[0][0]).addClass(css[0]);
|
| 352 |
+
if (len > 1) {
|
| 353 |
+
for (indx = 1; indx < len; indx++) {
|
| 354 |
+
// secondary, tertiary, etc sort column classes
|
| 355 |
+
$cells.eq(sortList[indx][0]).addClass( css[indx] || css[last] );
|
| 356 |
+
}
|
| 357 |
+
}
|
| 358 |
+
}
|
| 359 |
+
}
|
| 360 |
+
});
|
| 361 |
+
ts.processTbody(table, $tbody, false);
|
| 362 |
+
}
|
| 363 |
+
// add classes to thead and tfoot
|
| 364 |
+
rows = wo.columns_thead !== false ? [ 'thead tr' ] : [];
|
| 365 |
+
if (wo.columns_tfoot !== false) {
|
| 366 |
+
rows.push('tfoot tr');
|
| 367 |
+
}
|
| 368 |
+
if (rows.length) {
|
| 369 |
+
$rows = $table.find( rows.join(',') ).children().removeClass(remove);
|
| 370 |
+
if (len) {
|
| 371 |
+
for (indx = 0; indx < len; indx++) {
|
| 372 |
+
// add primary. secondary, tertiary, etc sort column classes
|
| 373 |
+
$rows.filter('[data-column="' + sortList[indx][0] + '"]').addClass(css[indx] || css[last]);
|
| 374 |
+
}
|
| 375 |
+
}
|
| 376 |
+
}
|
| 377 |
+
},
|
| 378 |
+
remove: function(table, c, wo) {
|
| 379 |
+
var tbodyIndex, $tbody,
|
| 380 |
+
$tbodies = c.$tbodies,
|
| 381 |
+
remove = (wo.columns || [ 'primary', 'secondary', 'tertiary' ]).join(' ');
|
| 382 |
+
c.$headers.removeClass(remove);
|
| 383 |
+
c.$table.children('tfoot').children('tr').children('th, td').removeClass(remove);
|
| 384 |
+
for (tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
|
| 385 |
+
$tbody = ts.processTbody(table, $tbodies.eq(tbodyIndex), true); // remove tbody
|
| 386 |
+
$tbody.children('tr').each(function() {
|
| 387 |
+
$(this).children().removeClass(remove);
|
| 388 |
+
});
|
| 389 |
+
ts.processTbody(table, $tbody, false); // restore tbody
|
| 390 |
+
}
|
| 391 |
+
}
|
| 392 |
+
});
|
| 393 |
+
|
| 394 |
+
})(jQuery);
|
| 395 |
|
| 396 |
/*! Widget: filter - updated 2018-03-18 (v2.30.0) *//*
|
| 397 |
* Requires tablesorter v2.8+ and jQuery 1.7+
|
| 2352 |
|
| 2353 |
})( jQuery );
|
| 2354 |
|
| 2355 |
+
/*! Widget: stickyHeaders - updated 9/27/2017 (v2.29.0) *//*
|
| 2356 |
+
* Requires tablesorter v2.8+ and jQuery 1.4.3+
|
| 2357 |
+
* by Rob Garrison
|
| 2358 |
+
*/
|
| 2359 |
+
;(function ($, window) {
|
| 2360 |
+
'use strict';
|
| 2361 |
+
var ts = $.tablesorter || {};
|
| 2362 |
+
|
| 2363 |
+
$.extend(ts.css, {
|
| 2364 |
+
sticky : 'tablesorter-stickyHeader', // stickyHeader
|
| 2365 |
+
stickyVis : 'tablesorter-sticky-visible',
|
| 2366 |
+
stickyHide: 'tablesorter-sticky-hidden',
|
| 2367 |
+
stickyWrap: 'tablesorter-sticky-wrapper'
|
| 2368 |
+
});
|
| 2369 |
+
|
| 2370 |
+
// Add a resize event to table headers
|
| 2371 |
+
ts.addHeaderResizeEvent = function(table, disable, settings) {
|
| 2372 |
+
table = $(table)[0]; // make sure we're using a dom element
|
| 2373 |
+
if ( !table.config ) { return; }
|
| 2374 |
+
var defaults = {
|
| 2375 |
+
timer : 250
|
| 2376 |
+
},
|
| 2377 |
+
options = $.extend({}, defaults, settings),
|
| 2378 |
+
c = table.config,
|
| 2379 |
+
wo = c.widgetOptions,
|
| 2380 |
+
checkSizes = function( triggerEvent ) {
|
| 2381 |
+
var index, headers, $header, sizes, width, height,
|
| 2382 |
+
len = c.$headers.length;
|
| 2383 |
+
wo.resize_flag = true;
|
| 2384 |
+
headers = [];
|
| 2385 |
+
for ( index = 0; index < len; index++ ) {
|
| 2386 |
+
$header = c.$headers.eq( index );
|
| 2387 |
+
sizes = $header.data( 'savedSizes' ) || [ 0, 0 ]; // fixes #394
|
| 2388 |
+
width = $header[0].offsetWidth;
|
| 2389 |
+
height = $header[0].offsetHeight;
|
| 2390 |
+
if ( width !== sizes[0] || height !== sizes[1] ) {
|
| 2391 |
+
$header.data( 'savedSizes', [ width, height ] );
|
| 2392 |
+
headers.push( $header[0] );
|
| 2393 |
+
}
|
| 2394 |
+
}
|
| 2395 |
+
if ( headers.length && triggerEvent !== false ) {
|
| 2396 |
+
c.$table.triggerHandler( 'resize', [ headers ] );
|
| 2397 |
+
}
|
| 2398 |
+
wo.resize_flag = false;
|
| 2399 |
+
};
|
| 2400 |
+
clearInterval(wo.resize_timer);
|
| 2401 |
+
if (disable) {
|
| 2402 |
+
wo.resize_flag = false;
|
| 2403 |
+
return false;
|
| 2404 |
+
}
|
| 2405 |
+
checkSizes( false );
|
| 2406 |
+
wo.resize_timer = setInterval(function() {
|
| 2407 |
+
if (wo.resize_flag) { return; }
|
| 2408 |
+
checkSizes();
|
| 2409 |
+
}, options.timer);
|
| 2410 |
+
};
|
| 2411 |
+
|
| 2412 |
+
function getStickyOffset(c, wo) {
|
| 2413 |
+
var $el = isNaN(wo.stickyHeaders_offset) ? $(wo.stickyHeaders_offset) : [];
|
| 2414 |
+
return $el.length ?
|
| 2415 |
+
$el.height() || 0 :
|
| 2416 |
+
parseInt(wo.stickyHeaders_offset, 10) || 0;
|
| 2417 |
+
}
|
| 2418 |
+
|
| 2419 |
+
// Sticky headers based on this awesome article:
|
| 2420 |
+
// http://css-tricks.com/13465-persistent-headers/
|
| 2421 |
+
// and https://github.com/jmosbech/StickyTableHeaders by Jonas Mosbech
|
| 2422 |
+
// **************************
|
| 2423 |
+
ts.addWidget({
|
| 2424 |
+
id: 'stickyHeaders',
|
| 2425 |
+
priority: 54, // sticky widget must be initialized after the filter & before pager widget!
|
| 2426 |
+
options: {
|
| 2427 |
+
stickyHeaders : '', // extra class name added to the sticky header row
|
| 2428 |
+
stickyHeaders_appendTo : null, // jQuery selector or object to phycially attach the sticky headers
|
| 2429 |
+
stickyHeaders_attachTo : null, // jQuery selector or object to attach scroll listener to (overridden by xScroll & yScroll settings)
|
| 2430 |
+
stickyHeaders_xScroll : null, // jQuery selector or object to monitor horizontal scroll position (defaults: xScroll > attachTo > window)
|
| 2431 |
+
stickyHeaders_yScroll : null, // jQuery selector or object to monitor vertical scroll position (defaults: yScroll > attachTo > window)
|
| 2432 |
+
stickyHeaders_offset : 0, // number or jquery selector targeting the position:fixed element
|
| 2433 |
+
stickyHeaders_filteredToTop: true, // scroll table top into view after filtering
|
| 2434 |
+
stickyHeaders_cloneId : '-sticky', // added to table ID, if it exists
|
| 2435 |
+
stickyHeaders_addResizeEvent : true, // trigger 'resize' event on headers
|
| 2436 |
+
stickyHeaders_includeCaption : true, // if false and a caption exist, it won't be included in the sticky header
|
| 2437 |
+
stickyHeaders_zIndex : 2 // The zIndex of the stickyHeaders, allows the user to adjust this to their needs
|
| 2438 |
+
},
|
| 2439 |
+
format: function(table, c, wo) {
|
| 2440 |
+
// filter widget doesn't initialize on an empty table. Fixes #449
|
| 2441 |
+
if ( c.$table.hasClass('hasStickyHeaders') || ($.inArray('filter', c.widgets) >= 0 && !c.$table.hasClass('hasFilters')) ) {
|
| 2442 |
+
return;
|
| 2443 |
+
}
|
| 2444 |
+
var index, len, $t,
|
| 2445 |
+
$table = c.$table,
|
| 2446 |
+
// add position: relative to attach element, hopefully it won't cause trouble.
|
| 2447 |
+
$attach = $(wo.stickyHeaders_attachTo || wo.stickyHeaders_appendTo),
|
| 2448 |
+
namespace = c.namespace + 'stickyheaders ',
|
| 2449 |
+
// element to watch for the scroll event
|
| 2450 |
+
$yScroll = $(wo.stickyHeaders_yScroll || wo.stickyHeaders_attachTo || window),
|
| 2451 |
+
$xScroll = $(wo.stickyHeaders_xScroll || wo.stickyHeaders_attachTo || window),
|
| 2452 |
+
$thead = $table.children('thead:first'),
|
| 2453 |
+
$header = $thead.children('tr').not('.sticky-false').children(),
|
| 2454 |
+
$tfoot = $table.children('tfoot'),
|
| 2455 |
+
stickyOffset = getStickyOffset(c, wo),
|
| 2456 |
+
// is this table nested? If so, find parent sticky header wrapper (div, not table)
|
| 2457 |
+
$nestedSticky = $table.parent().closest('.' + ts.css.table).hasClass('hasStickyHeaders') ?
|
| 2458 |
+
$table.parent().closest('table.tablesorter')[0].config.widgetOptions.$sticky.parent() : [],
|
| 2459 |
+
nestedStickyTop = $nestedSticky.length ? $nestedSticky.height() : 0,
|
| 2460 |
+
// clone table, then wrap to make sticky header
|
| 2461 |
+
$stickyTable = wo.$sticky = $table.clone()
|
| 2462 |
+
.addClass('containsStickyHeaders ' + ts.css.sticky + ' ' + wo.stickyHeaders + ' ' + c.namespace.slice(1) + '_extra_table' )
|
| 2463 |
+
.wrap('<div class="' + ts.css.stickyWrap + '">'),
|
| 2464 |
+
$stickyWrap = $stickyTable.parent()
|
| 2465 |
+
.addClass(ts.css.stickyHide)
|
| 2466 |
+
.css({
|
| 2467 |
+
position : $attach.length ? 'absolute' : 'fixed',
|
| 2468 |
+
padding : parseInt( $stickyTable.parent().parent().css('padding-left'), 10 ),
|
| 2469 |
+
top : stickyOffset + nestedStickyTop,
|
| 2470 |
+
left : 0,
|
| 2471 |
+
visibility : 'hidden',
|
| 2472 |
+
zIndex : wo.stickyHeaders_zIndex || 2
|
| 2473 |
+
}),
|
| 2474 |
+
$stickyThead = $stickyTable.children('thead:first'),
|
| 2475 |
+
$stickyCells,
|
| 2476 |
+
laststate = '',
|
| 2477 |
+
setWidth = function($orig, $clone) {
|
| 2478 |
+
var index, width, border, $cell, $this,
|
| 2479 |
+
$cells = $orig.filter(':visible'),
|
| 2480 |
+
len = $cells.length;
|
| 2481 |
+
for ( index = 0; index < len; index++ ) {
|
| 2482 |
+
$cell = $clone.filter(':visible').eq(index);
|
| 2483 |
+
$this = $cells.eq(index);
|
| 2484 |
+
// code from https://github.com/jmosbech/StickyTableHeaders
|
| 2485 |
+
if ($this.css('box-sizing') === 'border-box') {
|
| 2486 |
+
width = $this.outerWidth();
|
| 2487 |
+
} else {
|
| 2488 |
+
if ($cell.css('border-collapse') === 'collapse') {
|
| 2489 |
+
if (window.getComputedStyle) {
|
| 2490 |
+
width = parseFloat( window.getComputedStyle($this[0], null).width );
|
| 2491 |
+
} else {
|
| 2492 |
+
// ie8 only
|
| 2493 |
+
border = parseFloat( $this.css('border-width') );
|
| 2494 |
+
width = $this.outerWidth() - parseFloat( $this.css('padding-left') ) - parseFloat( $this.css('padding-right') ) - border;
|
| 2495 |
+
}
|
| 2496 |
+
} else {
|
| 2497 |
+
width = $this.width();
|
| 2498 |
+
}
|
| 2499 |
+
}
|
| 2500 |
+
$cell.css({
|
| 2501 |
+
'width': width,
|
| 2502 |
+
'min-width': width,
|
| 2503 |
+
'max-width': width
|
| 2504 |
+
});
|
| 2505 |
+
}
|
| 2506 |
+
},
|
| 2507 |
+
getLeftPosition = function(yWindow) {
|
| 2508 |
+
if (yWindow === false && $nestedSticky.length) {
|
| 2509 |
+
return $table.position().left;
|
| 2510 |
+
}
|
| 2511 |
+
return $attach.length ?
|
| 2512 |
+
parseInt($attach.css('padding-left'), 10) || 0 :
|
| 2513 |
+
$table.offset().left - parseInt($table.css('margin-left'), 10) - $(window).scrollLeft();
|
| 2514 |
+
},
|
| 2515 |
+
resizeHeader = function() {
|
| 2516 |
+
$stickyWrap.css({
|
| 2517 |
+
left : getLeftPosition(),
|
| 2518 |
+
width: $table.outerWidth()
|
| 2519 |
+
});
|
| 2520 |
+
setWidth( $table, $stickyTable );
|
| 2521 |
+
setWidth( $header, $stickyCells );
|
| 2522 |
+
},
|
| 2523 |
+
scrollSticky = function( resizing ) {
|
| 2524 |
+
if (!$table.is(':visible')) { return; } // fixes #278
|
| 2525 |
+
// Detect nested tables - fixes #724
|
| 2526 |
+
nestedStickyTop = $nestedSticky.length ? $nestedSticky.offset().top - $yScroll.scrollTop() + $nestedSticky.height() : 0;
|
| 2527 |
+
var tmp,
|
| 2528 |
+
offset = $table.offset(),
|
| 2529 |
+
stickyOffset = getStickyOffset(c, wo),
|
| 2530 |
+
yWindow = $.isWindow( $yScroll[0] ), // $.isWindow needs jQuery 1.4.3
|
| 2531 |
+
yScroll = yWindow ?
|
| 2532 |
+
$yScroll.scrollTop() :
|
| 2533 |
+
// use parent sticky position if nested AND inside of a scrollable element - see #1512
|
| 2534 |
+
$nestedSticky.length ? parseInt($nestedSticky[0].style.top, 10) : $yScroll.offset().top,
|
| 2535 |
+
attachTop = $attach.length ? yScroll : $yScroll.scrollTop(),
|
| 2536 |
+
captionHeight = wo.stickyHeaders_includeCaption ? 0 : $table.children( 'caption' ).height() || 0,
|
| 2537 |
+
scrollTop = attachTop + stickyOffset + nestedStickyTop - captionHeight,
|
| 2538 |
+
tableHeight = $table.height() - ($stickyWrap.height() + ($tfoot.height() || 0)) - captionHeight,
|
| 2539 |
+
isVisible = ( scrollTop > offset.top ) && ( scrollTop < offset.top + tableHeight ) ? 'visible' : 'hidden',
|
| 2540 |
+
state = isVisible === 'visible' ? ts.css.stickyVis : ts.css.stickyHide,
|
| 2541 |
+
needsUpdating = !$stickyWrap.hasClass( state ),
|
| 2542 |
+
cssSettings = { visibility : isVisible };
|
| 2543 |
+
if ($attach.length) {
|
| 2544 |
+
// attached sticky headers always need updating
|
| 2545 |
+
needsUpdating = true;
|
| 2546 |
+
cssSettings.top = yWindow ? scrollTop - $attach.offset().top : $attach.scrollTop();
|
| 2547 |
+
}
|
| 2548 |
+
// adjust when scrolling horizontally - fixes issue #143
|
| 2549 |
+
tmp = getLeftPosition(yWindow);
|
| 2550 |
+
if (tmp !== parseInt($stickyWrap.css('left'), 10)) {
|
| 2551 |
+
needsUpdating = true;
|
| 2552 |
+
cssSettings.left = tmp;
|
| 2553 |
+
}
|
| 2554 |
+
cssSettings.top = ( cssSettings.top || 0 ) +
|
| 2555 |
+
// If nested AND inside of a scrollable element, only add parent sticky height
|
| 2556 |
+
(!yWindow && $nestedSticky.length ? $nestedSticky.height() : stickyOffset + nestedStickyTop);
|
| 2557 |
+
if (needsUpdating) {
|
| 2558 |
+
$stickyWrap
|
| 2559 |
+
.removeClass( ts.css.stickyVis + ' ' + ts.css.stickyHide )
|
| 2560 |
+
.addClass( state )
|
| 2561 |
+
.css(cssSettings);
|
| 2562 |
+
}
|
| 2563 |
+
if (isVisible !== laststate || resizing) {
|
| 2564 |
+
// make sure the column widths match
|
| 2565 |
+
resizeHeader();
|
| 2566 |
+
laststate = isVisible;
|
| 2567 |
+
}
|
| 2568 |
+
};
|
| 2569 |
+
// only add a position relative if a position isn't already defined
|
| 2570 |
+
if ($attach.length && !$attach.css('position')) {
|
| 2571 |
+
$attach.css('position', 'relative');
|
| 2572 |
+
}
|
| 2573 |
+
// fix clone ID, if it exists - fixes #271
|
| 2574 |
+
if ($stickyTable.attr('id')) { $stickyTable[0].id += wo.stickyHeaders_cloneId; }
|
| 2575 |
+
// clear out cloned table, except for sticky header
|
| 2576 |
+
// include caption & f
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
