Asset CleanUp: Page Speed Booster - Version 1.3.5.8

Version Description

  • Caching: Expired CSS/JS files are cleared differently (in time after visiting various pages) to save resources and errors related to the PHP memory (e.g. shared hosting packages often have limitations in terms of the server's CPU & memory usage)
  • Allow CSS/JS management for privately published pages
  • Strip empty STYLE/SCRIPT tags if, after optimization, their content is empty (e.g. the CSS was minified as it had only comments in it)
  • Show if there are any hardcoded (non-enqueued) LINK/STYLE/SCRIPT tags in the list of CSS/JS list (management of these tags is available in the Pro version)
  • Make sure the combined CSS/JS file is valid before its tag is generated in the HTML output (in rare cases, the cached CSS/JS files get deleted either by mistake when developers are cleaning up the caching directory OR they weren't properly created in the first place)
  • Compatibility fix to avoid PHP warning error when "Smart Slider 3" & "WP Rocket" are used and the CSS/JS assets are fetched
Download this release

Release Info

Developer gabelivan
Plugin Icon 128x128 Asset CleanUp: Page Speed Booster
Version 1.3.5.8
Comparing to
See all releases

Code changes from version 1.3.5.7 to 1.3.5.8

Files changed (80) hide show
  1. assets/script.min.js +1 -1
  2. assets/style.min.css +1 -1
  3. assets/sweetalert/LICENSE.md +22 -0
  4. assets/sweetalert/README.md +220 -0
  5. assets/sweetalert/dist/sweetalert.min.js +1 -0
  6. assets/sweetalert/package.json +138 -0
  7. assets/sweetalert/typings/core.d.ts +13 -0
  8. assets/sweetalert/typings/modules/actions.d.ts +5 -0
  9. assets/sweetalert/typings/modules/class-list/index.d.ts +5 -0
  10. assets/sweetalert/typings/modules/event-listeners.d.ts +3 -0
  11. assets/sweetalert/typings/modules/init/buttons.d.ts +3 -0
  12. assets/sweetalert/typings/modules/init/content.d.ts +3 -0
  13. assets/sweetalert/typings/modules/init/icon.d.ts +2 -0
  14. assets/sweetalert/typings/modules/init/index.d.ts +3 -0
  15. assets/sweetalert/typings/modules/init/modal.d.ts +5 -0
  16. assets/sweetalert/typings/modules/init/overlay.d.ts +2 -0
  17. assets/sweetalert/typings/modules/init/text.d.ts +2 -0
  18. assets/sweetalert/typings/modules/markup/buttons.d.ts +1 -0
  19. assets/sweetalert/typings/modules/markup/content.d.ts +1 -0
  20. assets/sweetalert/typings/modules/markup/icons.d.ts +3 -0
  21. assets/sweetalert/typings/modules/markup/index.d.ts +9 -0
  22. assets/sweetalert/typings/modules/markup/modal.d.ts +2 -0
  23. assets/sweetalert/typings/modules/markup/overlay.d.ts +2 -0
  24. assets/sweetalert/typings/modules/options/buttons.d.ts +14 -0
  25. assets/sweetalert/typings/modules/options/content.d.ts +5 -0
  26. assets/sweetalert/typings/modules/options/deprecations.d.ts +11 -0
  27. assets/sweetalert/typings/modules/options/index.d.ts +16 -0
  28. assets/sweetalert/typings/modules/state.d.ts +27 -0
  29. assets/sweetalert/typings/modules/utils.d.ts +7 -0
  30. assets/sweetalert/typings/sweetalert.d.ts +9 -0
  31. classes/HardcodedAssets.php +530 -0
  32. classes/ImportExport.php +1 -1
  33. classes/Main.php +104 -57
  34. classes/MetaBoxes.php +1 -1
  35. classes/Misc.php +3 -3
  36. classes/OptimiseAssets/CombineCss.php +2 -2
  37. classes/OptimiseAssets/CombineJs.php +3 -3
  38. classes/OptimiseAssets/MinifyCss.php +34 -9
  39. classes/OptimiseAssets/MinifyJs.php +6 -3
  40. classes/OptimiseAssets/OptimizeCommon.php +186 -175
  41. classes/OptimiseAssets/OptimizeCss.php +87 -18
  42. classes/OptimiseAssets/OptimizeJs.php +17 -14
  43. classes/OwnAssets.php +78 -4
  44. classes/Plugin.php +6 -0
  45. classes/PluginTracking.php +1 -1
  46. composer.json +1 -1
  47. composer.lock +15 -15
  48. readme.txt +9 -1
  49. templates/_admin-page-getting-started-areas/_lite-vs-pro.php +5 -0
  50. templates/_top-area.php +1 -1
  51. templates/meta-box-loaded-assets/_assets-hardcoded-list.php +227 -0
  52. templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded.php +100 -0
  53. templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded/_notes.php +12 -0
  54. templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded/_source.php +34 -0
  55. templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded/_unload-per-page.php +30 -0
  56. templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded/_unload-post-type.php +36 -0
  57. templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded/_unload-site-wide.php +19 -0
  58. templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded/_unload-via-regex.php +22 -0
  59. templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded.php +106 -0
  60. templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded/_notes.php +11 -0
  61. templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded/_source.php +33 -0
  62. templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded/_unload-per-page.php +29 -0
  63. templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded/_unload-post-type.php +33 -0
  64. templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded/_unload-site-wide.php +18 -0
  65. templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded/_unload-via-regex.php +22 -0
  66. templates/meta-box-loaded-assets/_inline_js.php +57 -0
  67. templates/meta-box-loaded-assets/view-by-loaded-unloaded.php +7 -0
  68. templates/meta-box-loaded-assets/view-by-location.php +7 -0
  69. templates/meta-box-loaded-assets/view-by-parents.php +8 -0
  70. templates/meta-box-loaded-assets/view-by-position.php +104 -97
  71. templates/meta-box-loaded-assets/view-by-preload.php +7 -0
  72. templates/meta-box-loaded-assets/view-default.php +9 -2
  73. templates/meta-box-loaded.php +2 -1
  74. vendor/composer/installed.json +64 -64
  75. vendor/matthiasmullie/minify/composer.json +5 -0
  76. vendor/matthiasmullie/minify/composer.lock +0 -70
  77. vendor/matthiasmullie/minify/src/CSS.php +3 -2
  78. vendor/matthiasmullie/minify/src/Minify.php +38 -0
  79. vendor/matthiasmullie/path-converter/src/Converter.php +8 -0
  80. wpacu.php +15 -3
assets/script.min.js CHANGED
@@ -1 +1 @@
1
- function wpacuTabOpenSettingsArea(a,b){a.preventDefault();var c,d,e;for(d=document.getElementsByClassName("wpacu-settings-tab-content"),c=0;c<d.length;c++)d[c].style.display="none";for(e=document.getElementsByClassName("wpacu-settings-tab-link"),c=0;c<e.length;c++)e[c].className=e[c].className.replace(" active","");document.getElementById(b).style.display="table-cell",jQuery('a[href="#'+b+'"]').addClass("active"),jQuery("#wpacu-selected-tab-area").val(b)}function wpacuBytesToSize(a){return 0===a?"N/A":(a/1024).toFixed(4)+" KB"}function wpacuAjaxClearCache(){jQuery.post(wpacu_object.ajax_url+"?wpacu_clear_cache",{action:wpacu_object.plugin_id+"_clear_cache",time_r:(new Date).getTime()},function(a){})}jQuery(document).ready(function(a){function b(){if(!a("#wpacu_ajax_fetch_assets_list_dashboard_view").length)return!1;var b,c,d,f,g={};"direct"===wpacu_object.dom_get_type?(g[wpacu_object.plugin_name+"_load"]=1,g[wpacu_object.plugin_name+"_time_r"]=(new Date).getTime(),a.ajax({method:"GET",url:wpacu_object.page_url,data:g,cache:!1,complete:function(b,c){"error"===b.statusText&&(f=wpacu_object.ajax_direct_fetch_error,f=f.replace(/{wpacu_output}/,b.responseText),f=f.replace(/{wpacu_status_code_error}/,b.status),a("#wpacu_meta_box_content").html(f))}}).done(function(g){if(g.lastIndexOf(wpacu_object.start_del_e)<0||g.lastIndexOf(wpacu_object.end_del_e)<0||g.lastIndexOf(wpacu_object.start_del_h)<0||g.lastIndexOf(wpacu_object.end_del_h)<0)return f=wpacu_object.ajax_direct_fetch_error_with_success_response,f=f.replace(/{wpacu_output}/,xhr.responseText.replace(/(<([^>]+)>)/gi,"")),void a("#wpacu_meta_box_content").html(f);c=g.substring(g.lastIndexOf(wpacu_object.start_del_e)+wpacu_object.start_del_e.length,g.lastIndexOf(wpacu_object.end_del_e)),d=g.substring(g.lastIndexOf(wpacu_object.start_del_h)+wpacu_object.start_del_h.length,g.lastIndexOf(wpacu_object.end_del_h)),b={action:wpacu_object.plugin_name+"_get_loaded_assets",wpacu_list_e:c,wpacu_list_h:d,post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,time_r:(new Date).getTime()},a.post(wpacu_object.ajax_url,b,function(b){b&&(a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),setTimeout(function(){e.load(),a(".wpacu_asset_row").removeClass("wpacu-loading"),a("#wpacu-assets-reloading").remove(),e.checkSourcesFor404Errors()},200))})})):"wp_remote_post"===wpacu_object.dom_get_type&&(b={action:wpacu_object.plugin_name+"_get_loaded_assets",post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,time_r:(new Date).getTime()},a.post(wpacu_object.ajax_url,b,function(b){if(!b)return!1;a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),setTimeout(function(){e.load(),setTimeout(function(){e.checkSourcesFor404Errors()},100)},200)}))}a('input[name="wpacu_sub_tab_area"]').click(function(){a(this).prop("checked")&&a("#wpacu-selected-sub-tab-area").val(a(this).val())}),a("#wpacu_minify_css_enable, #wpacu_combine_loaded_css_enable, #wpacu_minify_js_enable, #wpacu_combine_loaded_js_enable, #wpacu_cdn_rewrite_enable, #wpacu_enable_test_mode").click(function(){a(this).prop("checked")?a('[data-linked-to="'+a(this).attr("id")+'"]').find(".wpacu-circle-status").addClass("wpacu-on").removeClass("wpacu-off"):a('[data-linked-to="'+a(this).attr("id")+'"]').find(".wpacu-circle-status").addClass("wpacu-off").removeClass("wpacu-on")}),a("#wpacu-mark-license-valid-button").click(function(){return confirm(wpacu_object.mark_license_valid_confirm)}),a("#wpacu-license-form").submit(function(){a("#edd_license_activate_btn").attr("disabled","disabled"),a("#edd_license_deactivate_btn").attr("disabled","disabled"),a(".wpacu-license-spinner").show()});var c,d;a("#wpacu-reset-drop-down").on("change keyup keydown mouseup mousedown click",function(){""===a(this).val()?(a("#wpacu-warning-read").removeClass("wpacu-visible"),a("#wpacu-reset-submit-btn").attr("disabled","disabled").removeClass("button-primary").addClass("button-secondary")):("reset_everything"===a(this).val()?a("#wpacu-license-data-remove-area").addClass("wpacu-visible"):a("#wpacu-license-data-remove-area").removeClass("wpacu-visible"),a("#wpacu-warning-read").addClass("wpacu-visible"),a("#wpacu-reset-submit-btn").removeAttr("disabled").removeClass("button-secondary").addClass("button-primary")),a(".wpacu-tools-area .wpacu-warning").hide(),c=a(this).find("option:selected"),a("#"+c.attr("data-id")).show()}),a("#wpacu-reset-submit-btn").on("click",function(){if("reset_settings"===a("#wpacu-reset-drop-down").val()?d=wpacu_object.reset_settings_confirm_msg:"reset_everything_except_settings"===a("#wpacu-reset-drop-down").val()?d=wpacu_object.reset_everything_except_settings_confirm_msg:"reset_everything"===a("#wpacu-reset-drop-down").val()&&(d=wpacu_object.reset_everything_confirm_msg),!confirm(d))return!1;a("#wpacu-action-confirmed").val("yes"),setTimeout(function(){"yes"===a("#wpacu-action-confirmed").val()&&a("#wpacu-tools-form").submit()},1e3)}),a("#wpacu-import-form").submit(function(){if(!confirm(wpacu_object.import_confirm_msg))return!1;a(this).find("button").addClass("wpacu-importing").prop("disabled",!0)});var e={load:function(){var b,c,d,f=".input-unload-on-this-page.wpacu-not-locked";a(".input-unload-on-this-page").on("click change",function(){b=a(this).attr("data-handle"),c=a(this).hasClass("wpacu_unload_rule_for_style")?"style":"script",a(this).prop("checked")?(e.uncheckAllOtherBulkUnloadRules(a(this),!1),a("div.wpacu_exception_options_area_wrap[data-"+c+'-handle="'+b+'"]').parent("div").removeClass("wpacu_hide"),a(this).closest("tr").addClass("wpacu_not_load")):(a(this).closest("tr").removeClass("wpacu_not_load"),d=a(this).parents(".wpacu_asset_row"),e.hideLoadExceptionArea(d,b,c))}),a(".wpacu-plugin-check-all").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin");a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]').find(f).prop("checked",!0).closest("tr").addClass("wpacu_not_load")}),a(".wpacu-plugin-uncheck-all").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin");a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]').find(f).prop("checked",!1).closest("tr").removeClass("wpacu_not_load")}),a(".wpacu-plugin-check-load-all").on("click change",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin"),d=a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]');d.find(".wpacu_load_it_option_one.wpacu_load_exception").prop("checked",!0).closest("tr.wpacu_is_bulk_unloaded").removeClass("wpacu_not_load"),d.find(f).prop("checked",!1).trigger("change")}),a(".wpacu-plugin-uncheck-load-all").on("click change",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin"),d=a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]');d.find(".wpacu_load_it_option_one.wpacu_load_exception").prop("checked",!1).closest("tr.wpacu_is_bulk_unloaded").addClass("wpacu_not_load"),d.find(f).prop("checked",!1).trigger("change")}),a(".wpacu_keep_bulk_rule").click(function(){a(this).prop("checked")&&a(this).parents("li").next().removeClass("remove_rule")}),a(".wpacu_remove_bulk_rule").click(function(){a(this).prop("checked")&&a(this).parents("li").addClass("remove_rule")}),a(".wpacu_bulk_unload").on("click change",function(){b=a(this).attr("data-handle"),c=a(this).attr("data-handle-for"),d=a("[data-"+c+'-handle-row="'+b+'"]'),a(this).prop("checked")?(a(this).hasClass("wpacu_unload_it_regex_checkbox")||(a(this).parent("label").addClass("wpacu_input_load_checked"),a(this).closest("tr").addClass("wpacu_not_load")),a("div.wpacu_exception_options_area_wrap[data-"+c+'-handle="'+b+'"]').parent("div").removeClass("wpacu_hide"),a(this).hasClass("wpacu_global_unload")?(e.uncheckAllOtherBulkUnloadRules(a(this),!0),a('.input-unload-on-this-page[data-handle-for="'+c+'"][data-handle="'+b+'"]').prop("checked",!1)):a(this).hasClass("wpacu_post_type_unload")&&(e.uncheckAllOtherBulkUnloadRules(a(this),!1),a('.input-unload-on-this-page[data-handle-for="'+c+'"][data-handle="'+b+'"]').prop("checked",!1))):(a(this).hasClass("wpacu_unload_it_regex_checkbox")||(a(this).parent("label").removeClass("wpacu_input_load_checked"),a(this).closest("tr").removeClass("wpacu_not_load")),e.hideLoadExceptionArea(d,b,c)),d.hasClass("wpacu_is_bulk_unloaded")||a(".wpacu_bulk_unload:not(.wpacu_unload_it_regex_checkbox)").is(":checked")||a(this).closest("tr").removeClass("wpacu_not_load")}),a(".wpacu_load_it_option_one.wpacu_load_exception").on("click change",function(){var b=a(this).attr("data-handle");if(a(this).prop("checked")){a(this).parent("label").addClass("wpacu_global_unload_exception");var c="";a(this).hasClass("wpacu_style")?c="style":a(this).hasClass("wpacu_script")&&(c="script"),a("#"+c+"_"+b).prop("checked",!1).trigger("change")}else a(this).parent("label").removeClass("wpacu_global_unload_exception")}),a(".wpacu_unload_it_regex_checkbox").on("click change",function(){var b=a(this).parents("li");a(this).prop("checked")?(b.find("label").addClass("wpacu_unload_checked"),b.find("textarea").prop("disabled",!1).focus().removeClass("wpacu_disabled"),b.find(".wpacu_handle_unload_regex_input_wrap").removeClass("wpacu_hide")):(b.find("label").removeClass("wpacu_unload_checked"),b.find("textarea").blur().addClass("wpacu_disabled"),""===b.find("textarea").val().trim()&&(b.find("textarea").prop("disabled",!0).val(""),b.find(".wpacu_handle_unload_regex_input_wrap").addClass("wpacu_hide")))}),a(".wpacu_load_it_option_two").on("click change",function(){var b=a(this).parents("li");a(this).prop("checked")?(b.find("label").addClass("wpacu_bold"),b.find("textarea").prop("disabled",!1).focus().removeClass("wpacu_disabled"),b.find(".wpacu_load_regex_input_wrap").removeClass("wpacu_hide")):(b.find("label").removeClass("wpacu_bold"),b.find("textarea").blur().addClass("wpacu_disabled"),""===b.find("textarea").val().trim()&&(b.find("textarea").prop("disabled",!0).val(""),b.find(".wpacu_load_regex_input_wrap").addClass("wpacu_hide")))}),a(".wpacu_script_attr_rule_input").on("click change",function(){a(this).is(":checked")&&(a(this).parents("ul").find(".wpacu_script_attr_rule_input").not(a(this)).prop("checked",!1),a(this).hasClass("wpacu_script_attr_rule_global")&&a(this).parents("ul").find(".wpacu-script-attr-make-exception").removeClass("wpacu_hide")),a(this).parents("ul").find(".wpacu_script_attr_rule_global").is(":checked")||a(this).parents("ul").find(".wpacu-script-attr-make-exception").addClass("wpacu_hide")}),a(".wpacu-add-handle-note").on("click",function(b){b.preventDefault();var c,d,e=a(this).attr("data-handle");a(this).hasClass("wpacu-for-script")?c=a('.wpacu-handle-notes-field[data-script-handle="'+e+'"]'):a(this).hasClass("wpacu-for-style")&&(c=a('.wpacu-handle-notes-field[data-style-handle="'+e+'"]')),c.length<1||(d=c.find(":input"),c.is(":hidden")?(c.show(),d.prop("disabled",!1)):(c.hide(),""===d.val().trim()&&"true"===d.attr("data-wpacu-is-empty-on-page-load")&&d.prop("disabled",!0).val("")))}),a(".wpacu-external-file-size").on("click",function(b){b.preventDefault();var c,d=a(this),e=d.attr("data-src");d.hide(),c=d.next(),c.show(),e.includes("/?")?a.get(e,{},function(a,b,d){if("success"!==b)return"N/A";c.html(wpacuBytesToSize(a.length))}):a.post(wpacu_object.ajax_url,{action:wpacu_object.plugin_id+"_get_external_file_size",wpacu_remote_file:e},function(a){c.html(a)})})},pluginLoadManager:function(){a(".wpacu_plugin_load_it").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")&&(a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),a('.wpacu_plugin_unload_site_wide[data-wpacu-plugin-path="'+b+'"]').parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_radio[data-wpacu-plugin-path="'+b+'"]').parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"))}),a(".wpacu_plugin_unload_site_wide").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")?(a(this).parent("label").addClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_radio[data-wpacu-plugin-path="'+b+'"]').parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide")):(a(this).parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"))}),a(".wpacu_plugin_unload_regex_radio").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")?(a(this).parent("label").addClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide"),a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide"),a('.wpacu_plugin_unload_site_wide[data-wpacu-plugin-path="'+b+'"]').prop("checked",!1).parent("label").removeClass("wpacu_plugin_unload_rule_input_checked")):(a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),a(this).parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"))}),a(".wpacu_plugin_load_exception_regex").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")?a('.wpacu_load_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide"):a('.wpacu_load_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide")})},hideLoadExceptionArea:function(b,c,d){b.hasClass("wpacu_is_bulk_unloaded")||b.find(".wpacu_bulk_unload").is(":checked")||a("div.wpacu_exception_options_area_wrap[data-"+d+'-handle="'+c+'"]').parent("div").addClass("wpacu_hide")},uncheckAllOtherBulkUnloadRules:function(a,b){var c=".wpacu_bulk_unload";!1===b&&(c=".wpacu_bulk_unload:not(.wpacu_unload_it_regex_checkbox)"),a.closest("tr").find(c).not(a).prop("checked",!1).parent("label").removeClass("wpacu_input_load_checked").removeClass("wpacu_unload_checked")},checkSourcesFor404Errors:function(){var b=a("[data-wpacu-external-source]");if(!(b.length<1)){var c=b.length,d="";b.each(function(b){var e=a(this),f=e.attr("data-wpacu-external-source");d+=f+"-at-wpacu-at-",b===c-1&&jQuery.post(wpacu_object.ajax_url+"?wpacu_check_external_url",{action:wpacu_object.plugin_id+"_check_external_urls_for_status_code",wpacu_check_urls:d},function(b){var c=jQuery.parseJSON(b);a.each(c,function(b,c){a('[data-wpacu-external-source="'+c+'"]').css({color:"#cc0000"}).parent("div").find("[data-wpacu-external-source-status]").html('<small>* <em style="font-weight: 600;">'+wpacu_object.source_load_error_msg+"</em></small>")})})})}}};a(window).load(function(){e.checkSourcesFor404Errors()}),a("#wpacu_post_type_select").change(function(){a("#wpacu_post_type_form").submit()}),a("#wpacu_taxonomy_select").change(function(){a("#wpacu_taxonomy_form").submit()}),a("#wpacu_dashboard").click(function(){a(this).prop("checked")?a("#wpacu-settings-assets-retrieval-mode").show():a("#wpacu-settings-assets-retrieval-mode").hide()}),a(".wpacu-dom-get-type-selection").change(function(){a(this).is(":checked")&&(a(".wpacu-dom-get-type-info").hide(),a("#"+a(this).attr("data-target")).fadeIn("fast"))}),a("#wpacu_frontend").click(function(){a(this).prop("checked")?a("#wpacu-settings-frontend-exceptions").show():a("#wpacu-settings-frontend-exceptions").hide()}),a(".google_fonts_combine_type").change(function(){a(".wpacu_google_fonts_combine_type_area").hide(),"async"===a(this).val()?a("#wpacu_google_fonts_combine_type_async_info_area").fadeIn():"async_preload"===a(this).val()?a("#wpacu_google_fonts_combine_type_async_preload_info_area").fadeIn():a("#wpacu_google_fonts_combine_type_rb_info_area").fadeIn()}),a("#wpacu_assets_list_layout").on("click change",function(){"by-location"===a(this).val()?a("#wpacu-assets-list-by-location-selected").fadeIn("fast"):a("#wpacu-assets-list-by-location-selected").fadeOut("fast")}),a("#wpacu_disable_jquery_migrate").on("click",function(){return!a(this).is(":checked")||(!(!a(this).is(":checked")||!confirm(wpacu_object.jquery_migration_disable_confirm_msg))||(a(this).prop("checked",!1),!1))}),a("#wpacu_disable_comment_reply").on("click",function(){return!a(this).is(":checked")||(!(!a(this).is(":checked")||!confirm(wpacu_object.comment_reply_disable_confirm_msg))||(a(this).prop("checked",!1),!1))}),a("[data-target-opacity]").click(function(){a(this).prop("checked")?a("#"+a(this).attr("data-target-opacity")).css({opacity:1}):a("#"+a(this).attr("data-target-opacity")).css({opacity:.4})}),a(".wpacu-combine-loaded-js-level").change(function(){a(this).is(":checked")&&(a(".wpacu_combine_loaded_js_level_area").removeClass("wpacu_active"),a("#"+a(this).attr("data-target")).addClass("wpacu_active"))});var f=a('#wpacu-update-button-area input[type="submit"]');f.parents("form").submit(function(){f.attr("disabled",!0),a("#wpacu-updating-settings").show()});var g=a("#wpacu-update-front-settings-area .wpacu_update_btn");if(g.parents("form").submit(function(){return g.attr("disabled",!0).addClass("wpacu_submitting"),a("#wpacu-updating-front-settings").show(),!0}),a("form#wpacu-settings-form, form#wpacu_home_page_form").submit(function(){return f.attr("disabled",!0),!0}),a(".wpacu_bulk_rule_checkbox, .wpacu_remove_preload").click(function(){var b=a(this).parents(".wpacu_bulk_change_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a(".wpacu_remove_regex").click(function(){var b=a(this).parents(".wpacu_regex_rule_row");a(this).prop("checked")?b.addClass("wpacu_enabled"):b.removeClass("wpacu_enabled")}),a(".wpacu_restore_position").click(function(){var b=a(this).parents(".wpacu_restore_position_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a(".wpacu_remove_global_attr").click(function(){var b=a(this).parents(".wpacu_remove_global_attr_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a("#wpacu_wrap_assets").length>0&&setTimeout(function(){e.load()},200),a("#wpacu-plugins-load-manager-wrap").length>0&&setTimeout(function(){e.pluginLoadManager()},200),"undefined"==typeof wpacu_object||a("#wpacu_meta_box_content").length<1)return!1;("default"===wpacu_object.list_show_status||""===wpacu_object.list_show_status||wpacu_object.override_assets_list_load)&&b(),"fetch_on_click"===wpacu_object.list_show_status&&a("#wpacu_ajax_fetch_on_click_btn").click(function(c){c.preventDefault(),a(this).hide(),a("#wpacu_fetching_assets_list_wrap").show(),b()}),a(document).on("click",".wp-admin.post-php .edit-post-header__settings button.is-primary",function(){var c=function(){if(0===a(".edit-post-header__settings .is-saving").length){if(a("#wpacu_unload_assets_area_loaded").length>0&&a("#wpacu_unload_assets_area_loaded").val()){a("#wpacu-assets-reloading").remove();var c='<span id="wpacu-assets-reloading" class="editor-post-saved-state is-wpacu-reloading">'+wpacu_object.reload_icon+wpacu_object.reload_msg+"</span>";a(".wp-admin.post-php .edit-post-header__settings").prepend(c)}a(".wpacu_asset_row").addClass("wpacu-loading"),b(),wpacuAjaxClearCache(),clearInterval(d)}},d=setInterval(c,900)})}),""!==wpacu_object.clear_cache_on_page_load&&wpacuAjaxClearCache(),jQuery(document).ready(function(a){try{var b;a('input[type="hidden"][name="_wp_http_referer"]').length>0&&(b=a('input[type="hidden"][name="_wp_http_referer"]').val(),b.includes("term.php?taxonomy=")&&b.includes("message=")&&wpacuAjaxClearCache(),b.includes("post.php?post=")&&b.includes("message=")&&wpacuAjaxClearCache())}catch(a){console.log(a)}});
1
+ function wpacuTabOpenSettingsArea(a,b){a.preventDefault();var c,d,e;for(d=document.getElementsByClassName("wpacu-settings-tab-content"),c=0;c<d.length;c++)d[c].style.display="none";for(e=document.getElementsByClassName("wpacu-settings-tab-link"),c=0;c<e.length;c++)e[c].className=e[c].className.replace(" active","");document.getElementById(b).style.display="table-cell",jQuery('a[href="#'+b+'"]').addClass("active"),jQuery("#wpacu-selected-tab-area").val(b)}function wpacuBytesToSize(a){return 0===a?"N/A":(a/1024).toFixed(4)+" KB"}function wpacuAjaxClearCache(){jQuery.post(wpacu_object.ajax_url+"?wpacu_clear_cache",{action:wpacu_object.plugin_id+"_clear_cache",time_r:(new Date).getTime()},function(a){})}jQuery(document).ready(function(a){function b(){if(!a("#wpacu_ajax_fetch_assets_list_dashboard_view").length)return!1;var b,c,d,f,g,h={};"direct"===wpacu_object.dom_get_type?(h[wpacu_object.plugin_name+"_load"]=1,h[wpacu_object.plugin_name+"_time_r"]=(new Date).getTime(),a.ajax({method:"GET",url:wpacu_object.page_url,data:h,cache:!1,complete:function(b,c){if("error"===b.statusText){f=b.responseText.replace(/(<([^>]+)>)/gi,"");try{f=String(f).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}catch(a){console.log(a)}g=wpacu_object.ajax_direct_fetch_error,g=g.replace(/{wpacu_output}/,f),g=g.replace(/{wpacu_status_code_error}/,b.status),a("#wpacu_meta_box_content").html(g)}}}).done(function(f){if(f.lastIndexOf(wpacu_object.start_del_e)<0||f.lastIndexOf(wpacu_object.end_del_e)<0||f.lastIndexOf(wpacu_object.start_del_h)<0||f.lastIndexOf(wpacu_object.end_del_h)<0){g=wpacu_object.ajax_direct_fetch_error_with_success_response,g=g.replace(/{wpacu_output}/,xhr.responseText.replace(/(<([^>]+)>)/gi,""));try{g=String(g).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}catch(a){console.log(a)}return void a("#wpacu_meta_box_content").html(g)}c=f.substring(f.lastIndexOf(wpacu_object.start_del_e)+wpacu_object.start_del_e.length,f.lastIndexOf(wpacu_object.end_del_e)),d=f.substring(f.lastIndexOf(wpacu_object.start_del_h)+wpacu_object.start_del_h.length,f.lastIndexOf(wpacu_object.end_del_h)),b={action:wpacu_object.plugin_name+"_get_loaded_assets",wpacu_list_e:c,wpacu_list_h:d,post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,wpacu_taxonomy:wpacu_object.wpacu_taxonomy,time_r:(new Date).getTime()},a.post(wpacu_object.ajax_url,b,function(b){b&&(a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),setTimeout(function(){e.load(),a(".wpacu_asset_row").removeClass("wpacu-loading"),a("#wpacu-assets-reloading").remove(),e.checkSourcesFor404Errors()},200))})})):"wp_remote_post"===wpacu_object.dom_get_type&&(b={action:wpacu_object.plugin_name+"_get_loaded_assets",post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,wpacu_taxonomy:wpacu_object.wpacu_taxonomy,time_r:(new Date).getTime()},a.post(wpacu_object.ajax_url,b,function(b){if(!b)return!1;a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),setTimeout(function(){e.load(),setTimeout(function(){e.checkSourcesFor404Errors()},100)},200)}))}a('input[name="wpacu_sub_tab_area"]').click(function(){a(this).prop("checked")&&a("#wpacu-selected-sub-tab-area").val(a(this).val())}),a("#wpacu_minify_css_enable, #wpacu_combine_loaded_css_enable, #wpacu_minify_js_enable, #wpacu_combine_loaded_js_enable, #wpacu_cdn_rewrite_enable, #wpacu_enable_test_mode").click(function(){a(this).prop("checked")?a('[data-linked-to="'+a(this).attr("id")+'"]').find(".wpacu-circle-status").addClass("wpacu-on").removeClass("wpacu-off"):a('[data-linked-to="'+a(this).attr("id")+'"]').find(".wpacu-circle-status").addClass("wpacu-off").removeClass("wpacu-on")}),a("#wpacu-mark-license-valid-button").click(function(){return confirm(wpacu_object.mark_license_valid_confirm)}),a("#wpacu-license-form").submit(function(){a("#edd_license_activate_btn").attr("disabled","disabled"),a("#edd_license_deactivate_btn").attr("disabled","disabled"),a(".wpacu-license-spinner").show()});var c,d;a("#wpacu-reset-drop-down").on("change keyup keydown mouseup mousedown click",function(){""===a(this).val()?(a("#wpacu-warning-read").removeClass("wpacu-visible"),a("#wpacu-reset-submit-btn").attr("disabled","disabled").removeClass("button-primary").addClass("button-secondary")):("reset_everything"===a(this).val()?a("#wpacu-license-data-remove-area").addClass("wpacu-visible"):a("#wpacu-license-data-remove-area").removeClass("wpacu-visible"),a("#wpacu-warning-read").addClass("wpacu-visible"),a("#wpacu-reset-submit-btn").removeAttr("disabled").removeClass("button-secondary").addClass("button-primary")),a(".wpacu-tools-area .wpacu-warning").hide(),c=a(this).find("option:selected"),a("#"+c.attr("data-id")).show()}),a("#wpacu-reset-submit-btn").on("click",function(){if("reset_settings"===a("#wpacu-reset-drop-down").val()?d=wpacu_object.reset_settings_confirm_msg:"reset_everything_except_settings"===a("#wpacu-reset-drop-down").val()?d=wpacu_object.reset_everything_except_settings_confirm_msg:"reset_everything"===a("#wpacu-reset-drop-down").val()&&(d=wpacu_object.reset_everything_confirm_msg),!confirm(d))return!1;a("#wpacu-action-confirmed").val("yes"),setTimeout(function(){"yes"===a("#wpacu-action-confirmed").val()&&a("#wpacu-tools-form").submit()},1e3)}),a("#wpacu-import-form").submit(function(){if(!confirm(wpacu_object.import_confirm_msg))return!1;a(this).find("button").addClass("wpacu-importing").prop("disabled",!0)});var e={load:function(){var b,c,d,f=".input-unload-on-this-page.wpacu-not-locked";a(".input-unload-on-this-page").on("click change",function(){b=a(this).attr("data-handle"),c=a(this).hasClass("wpacu_unload_rule_for_style")?"style":"script",a(this).prop("checked")?(e.uncheckAllOtherBulkUnloadRules(a(this),!1),a("div.wpacu_exception_options_area_wrap[data-"+c+'-handle="'+b+'"]').parent("div").removeClass("wpacu_hide"),a(this).closest("tr").addClass("wpacu_not_load")):(a(this).closest("tr").removeClass("wpacu_not_load"),d=a(this).parents(".wpacu_asset_row"),e.hideLoadExceptionArea(d,b,c))}),a(".wpacu-plugin-check-all").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin");a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]').find(f).prop("checked",!0).closest("tr").addClass("wpacu_not_load")}),a(".wpacu-plugin-uncheck-all").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin");a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]').find(f).prop("checked",!1).closest("tr").removeClass("wpacu_not_load")}),a(".wpacu-plugin-check-load-all").on("click change",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin"),d=a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]');d.find(".wpacu_load_it_option_one.wpacu_load_exception").prop("checked",!0).closest("tr.wpacu_is_bulk_unloaded").removeClass("wpacu_not_load"),d.find(f).prop("checked",!1).trigger("change")}),a(".wpacu-plugin-uncheck-load-all").on("click change",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin"),d=a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]');d.find(".wpacu_load_it_option_one.wpacu_load_exception").prop("checked",!1).closest("tr.wpacu_is_bulk_unloaded").addClass("wpacu_not_load"),d.find(f).prop("checked",!1).trigger("change")}),a(".wpacu_keep_bulk_rule").click(function(){a(this).prop("checked")&&a(this).parents("li").next().removeClass("remove_rule")}),a(".wpacu_remove_bulk_rule").click(function(){a(this).prop("checked")&&a(this).parents("li").addClass("remove_rule")}),a(".wpacu_bulk_unload").on("click change",function(){b=a(this).attr("data-handle"),c=a(this).attr("data-handle-for"),d=a("[data-"+c+'-handle-row="'+b+'"]'),a(this).prop("checked")?(a(this).hasClass("wpacu_unload_it_regex_checkbox")||(a(this).parent("label").addClass("wpacu_input_load_checked"),a(this).closest("tr").addClass("wpacu_not_load")),a("div.wpacu_exception_options_area_wrap[data-"+c+'-handle="'+b+'"]').parent("div").removeClass("wpacu_hide"),a(this).hasClass("wpacu_global_unload")?(e.uncheckAllOtherBulkUnloadRules(a(this),!0),a('.input-unload-on-this-page[data-handle-for="'+c+'"][data-handle="'+b+'"]').prop("checked",!1)):a(this).hasClass("wpacu_post_type_unload")&&(e.uncheckAllOtherBulkUnloadRules(a(this),!1),a('.input-unload-on-this-page[data-handle-for="'+c+'"][data-handle="'+b+'"]').prop("checked",!1))):(a(this).hasClass("wpacu_unload_it_regex_checkbox")||(a(this).parent("label").removeClass("wpacu_input_load_checked"),a(this).closest("tr").removeClass("wpacu_not_load")),e.hideLoadExceptionArea(d,b,c)),d.hasClass("wpacu_is_bulk_unloaded")||a(".wpacu_bulk_unload:not(.wpacu_unload_it_regex_checkbox)").is(":checked")||a(this).closest("tr").removeClass("wpacu_not_load")}),a(".wpacu_load_it_option_one.wpacu_load_exception").on("click change",function(){var b=a(this).attr("data-handle");if(a(this).prop("checked")){a(this).parent("label").addClass("wpacu_global_unload_exception");var c="";a(this).hasClass("wpacu_style")?c="style":a(this).hasClass("wpacu_script")&&(c="script"),a("#"+c+"_"+b).prop("checked",!1).trigger("change")}else a(this).parent("label").removeClass("wpacu_global_unload_exception")}),a(".wpacu_unload_it_regex_checkbox").on("click change",function(){var b=a(this).parents("li");a(this).prop("checked")?(b.find("label").addClass("wpacu_unload_checked"),b.find("textarea").prop("disabled",!1).focus().removeClass("wpacu_disabled"),b.find(".wpacu_handle_unload_regex_input_wrap").removeClass("wpacu_hide")):(b.find("label").removeClass("wpacu_unload_checked"),b.find("textarea").blur().addClass("wpacu_disabled"),""===b.find("textarea").val().trim()&&(b.find("textarea").prop("disabled",!0).val(""),b.find(".wpacu_handle_unload_regex_input_wrap").addClass("wpacu_hide")))}),a(".wpacu_load_it_option_two").on("click change",function(){var b=a(this).parents("li");a(this).prop("checked")?(b.find("label").addClass("wpacu_bold"),b.find("textarea").prop("disabled",!1).focus().removeClass("wpacu_disabled"),b.find(".wpacu_load_regex_input_wrap").removeClass("wpacu_hide")):(b.find("label").removeClass("wpacu_bold"),b.find("textarea").blur().addClass("wpacu_disabled"),""===b.find("textarea").val().trim()&&(b.find("textarea").prop("disabled",!0).val(""),b.find(".wpacu_load_regex_input_wrap").addClass("wpacu_hide")))}),a(".wpacu_script_attr_rule_input").on("click change",function(){a(this).is(":checked")&&(a(this).parents("ul").find(".wpacu_script_attr_rule_input").not(a(this)).prop("checked",!1),a(this).hasClass("wpacu_script_attr_rule_global")&&a(this).parents("ul").find(".wpacu-script-attr-make-exception").removeClass("wpacu_hide")),a(this).parents("ul").find(".wpacu_script_attr_rule_global").is(":checked")||a(this).parents("ul").find(".wpacu-script-attr-make-exception").addClass("wpacu_hide")}),a(".wpacu-add-handle-note").on("click",function(b){b.preventDefault();var c,d,e=a(this).attr("data-handle");a(this).hasClass("wpacu-for-script")?c=a('.wpacu-handle-notes-field[data-script-handle="'+e+'"]'):a(this).hasClass("wpacu-for-style")&&(c=a('.wpacu-handle-notes-field[data-style-handle="'+e+'"]')),c.length<1||(d=c.find(":input"),c.is(":hidden")?(c.show(),d.prop("disabled",!1)):(c.hide(),""===d.val().trim()&&"true"===d.attr("data-wpacu-is-empty-on-page-load")&&d.prop("disabled",!0).val("")))}),a(".wpacu-external-file-size").on("click",function(b){b.preventDefault();var c,d=a(this),e=d.attr("data-src");d.hide(),c=d.next(),c.show(),e.includes("/?")?a.get(e,{},function(a,b,d){if("success"!==b)return"N/A";c.html(wpacuBytesToSize(a.length))}):a.post(wpacu_object.ajax_url,{action:wpacu_object.plugin_id+"_get_external_file_size",wpacu_remote_file:e},function(a){c.html(a)})})},pluginLoadManager:function(){a(".wpacu_plugin_load_it").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")&&(a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),a('.wpacu_plugin_unload_site_wide[data-wpacu-plugin-path="'+b+'"]').parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_radio[data-wpacu-plugin-path="'+b+'"]').parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"))}),a(".wpacu_plugin_unload_site_wide").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")?(a(this).parent("label").addClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_radio[data-wpacu-plugin-path="'+b+'"]').parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide")):(a(this).parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"))}),a(".wpacu_plugin_unload_regex_radio").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")?(a(this).parent("label").addClass("wpacu_plugin_unload_rule_input_checked"),a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide"),a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide"),a('.wpacu_plugin_unload_site_wide[data-wpacu-plugin-path="'+b+'"]').prop("checked",!1).parent("label").removeClass("wpacu_plugin_unload_rule_input_checked")):(a('.wpacu_plugin_unload_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"),a(this).parent("label").removeClass("wpacu_plugin_unload_rule_input_checked"),a('.wrap_plugin_load_exception_options[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide"))}),a(".wpacu_plugin_load_exception_regex").on("click",function(){var b=a(this).attr("data-wpacu-plugin-path");a(this).prop("checked")?a('.wpacu_load_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').removeClass("wpacu_hide"):a('.wpacu_load_regex_input_wrap[data-wpacu-plugin-path="'+b+'"]').addClass("wpacu_hide")})},hideLoadExceptionArea:function(b,c,d){b.hasClass("wpacu_is_bulk_unloaded")||b.find(".wpacu_bulk_unload").is(":checked")||a("div.wpacu_exception_options_area_wrap[data-"+d+'-handle="'+c+'"]').parent("div").addClass("wpacu_hide")},uncheckAllOtherBulkUnloadRules:function(a,b){var c=".wpacu_bulk_unload";!1===b&&(c=".wpacu_bulk_unload:not(.wpacu_unload_it_regex_checkbox)"),a.closest("tr").find(c).not(a).prop("checked",!1).parent("label").removeClass("wpacu_input_load_checked").removeClass("wpacu_unload_checked")},checkSourcesFor404Errors:function(){var b=a("[data-wpacu-external-source]");if(!(b.length<1)){var c=b.length,d="";b.each(function(b){var e=a(this),f=e.attr("data-wpacu-external-source");d+=f+"-at-wpacu-at-",b===c-1&&jQuery.post(wpacu_object.ajax_url+"?wpacu_check_external_url",{action:wpacu_object.plugin_id+"_check_external_urls_for_status_code",wpacu_check_urls:d},function(b){var c=jQuery.parseJSON(b);a.each(c,function(b,c){a('[data-wpacu-external-source="'+c+'"]').css({color:"#cc0000"}).parent("div").find("[data-wpacu-external-source-status]").html('<small>* <em style="font-weight: 600;">'+wpacu_object.source_load_error_msg+"</em></small>")})})})}}};a(window).load(function(){e.checkSourcesFor404Errors()}),a("#wpacu_post_type_select").change(function(){a("#wpacu_post_type_form").submit()}),a("#wpacu_taxonomy_select").change(function(){a("#wpacu_taxonomy_form").submit()}),a("#wpacu_dashboard").click(function(){a(this).prop("checked")?a("#wpacu-settings-assets-retrieval-mode").show():a("#wpacu-settings-assets-retrieval-mode").hide()}),a(".wpacu-dom-get-type-selection").change(function(){a(this).is(":checked")&&(a(".wpacu-dom-get-type-info").hide(),a("#"+a(this).attr("data-target")).fadeIn("fast"))}),a("#wpacu_frontend").click(function(){a(this).prop("checked")?a("#wpacu-settings-frontend-exceptions").show():a("#wpacu-settings-frontend-exceptions").hide()}),a(".google_fonts_combine_type").change(function(){a(".wpacu_google_fonts_combine_type_area").hide(),"async"===a(this).val()?a("#wpacu_google_fonts_combine_type_async_info_area").fadeIn():"async_preload"===a(this).val()?a("#wpacu_google_fonts_combine_type_async_preload_info_area").fadeIn():a("#wpacu_google_fonts_combine_type_rb_info_area").fadeIn()}),a("#wpacu_assets_list_layout").on("click change",function(){"by-location"===a(this).val()?a("#wpacu-assets-list-by-location-selected").fadeIn("fast"):a("#wpacu-assets-list-by-location-selected").fadeOut("fast")}),a("#wpacu_disable_jquery_migrate").on("click",function(){return!a(this).is(":checked")||(!(!a(this).is(":checked")||!confirm(wpacu_object.jquery_migration_disable_confirm_msg))||(a(this).prop("checked",!1),!1))}),a("#wpacu_disable_comment_reply").on("click",function(){return!a(this).is(":checked")||(!(!a(this).is(":checked")||!confirm(wpacu_object.comment_reply_disable_confirm_msg))||(a(this).prop("checked",!1),!1))}),a("[data-target-opacity]").click(function(){a(this).prop("checked")?a("#"+a(this).attr("data-target-opacity")).css({opacity:1}):a("#"+a(this).attr("data-target-opacity")).css({opacity:.4})}),a(".wpacu-combine-loaded-js-level").change(function(){a(this).is(":checked")&&(a(".wpacu_combine_loaded_js_level_area").removeClass("wpacu_active"),a("#"+a(this).attr("data-target")).addClass("wpacu_active"))});var f=a('#wpacu-update-button-area input[type="submit"]');f.parents("form").submit(function(){f.attr("disabled",!0),a("#wpacu-updating-settings").show()});var g=a("#wpacu-update-front-settings-area .wpacu_update_btn");if(g.parents("form").submit(function(){return g.attr("disabled",!0).addClass("wpacu_submitting"),a("#wpacu-updating-front-settings").show(),!0}),a("form#wpacu-settings-form, form#wpacu_home_page_form").submit(function(){return f.attr("disabled",!0),!0}),a(".wpacu_bulk_rule_checkbox, .wpacu_remove_preload").click(function(){var b=a(this).parents(".wpacu_bulk_change_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a(".wpacu_remove_regex").click(function(){var b=a(this).parents(".wpacu_regex_rule_row");a(this).prop("checked")?b.addClass("wpacu_enabled"):b.removeClass("wpacu_enabled")}),a(".wpacu_restore_position").click(function(){var b=a(this).parents(".wpacu_restore_position_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a(".wpacu_remove_global_attr").click(function(){var b=a(this).parents(".wpacu_remove_global_attr_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a("#wpacu_wrap_assets").length>0&&setTimeout(function(){e.load()},200),a("#wpacu-plugins-load-manager-wrap").length>0&&setTimeout(function(){e.pluginLoadManager()},200),"undefined"==typeof wpacu_object||a("#wpacu_meta_box_content").length<1)return!1;("default"===wpacu_object.list_show_status||""===wpacu_object.list_show_status||wpacu_object.override_assets_list_load)&&b(),"fetch_on_click"===wpacu_object.list_show_status&&a("#wpacu_ajax_fetch_on_click_btn").click(function(c){c.preventDefault(),a(this).hide(),a("#wpacu_fetching_assets_list_wrap").show(),b()}),a(document).on("click",".wp-admin.post-php .edit-post-header__settings button.is-primary",function(){var c=function(){if(0===a(".edit-post-header__settings .is-saving").length){if(a("#wpacu_unload_assets_area_loaded").length>0&&a("#wpacu_unload_assets_area_loaded").val()){a("#wpacu-assets-reloading").remove();var c='<span id="wpacu-assets-reloading" class="editor-post-saved-state is-wpacu-reloading">'+wpacu_object.reload_icon+wpacu_object.reload_msg+"</span>";a(".wp-admin.post-php .edit-post-header__settings").prepend(c)}a(".wpacu_asset_row").addClass("wpacu-loading"),b(),wpacuAjaxClearCache(),clearInterval(d)}},d=setInterval(c,900)})}),""!==wpacu_object.clear_cache_on_page_load&&wpacuAjaxClearCache(),jQuery(document).ready(function(a){try{var b;a('input[type="hidden"][name="_wp_http_referer"]').length>0&&(b=a('input[type="hidden"][name="_wp_http_referer"]').val(),b.includes("term.php?taxonomy=")&&b.includes("message=")&&wpacuAjaxClearCache(),b.includes("post.php?post=")&&b.includes("message=")&&wpacuAjaxClearCache())}catch(a){console.log(a)}});
assets/style.min.css CHANGED
@@ -1 +1 @@
1
- @charset "UTF-8";#wpacu-pages-info-area{width:98%}#wpacu-top-area{margin:15px 0;padding:0 10px}#wpacu-quick-actions{color:#74777b;float:right;width:auto;margin-right:30px;background:rgba(40,44,42,.05);border-radius:10px;padding:6px 12px}#wpacu-quick-actions .wpacu-actions-title{font-weight:200;letter-spacing:.5px}#wpacu-quick-actions a{color:#004567;text-decoration:none}#wpacu-quick-actions a:hover{color:#0073aa}#wpacu-logo-wrap{width:auto;display:inline-block;position:relative}#wpacu-logo-wrap a{display:block}#wpacu-logo-wrap img{width:352px;height:79px}#wpacu-logo-wrap .wpacu-pro-sign{position:absolute;height:auto;font-family:FiraSans-Medium,proxima-nova-1,Montserrat,Helvetica,sans-serif;font-size:13px;font-weight:600;letter-spacing:1px;padding:5px 11px;border-radius:15px;right:-60px;top:30px;width:auto;display:inline-block;text-align:center}#wpacu-logo-wrap .wpacu-pro-sign.wpacu-lite{color:#74777b;background:rgba(40,44,42,.05)}#wpacu-logo-wrap .wpacu-pro-sign.wpacu-pro{color:#004567;background-color:rgba(40,44,42,.05)}.wpacu-tabs{position:relative;overflow:hidden;margin:0 auto 20px;width:100%;font-weight:300;font-size:20px}.wpacu-tabs nav{text-align:center}.wpacu-tabs nav ul{position:relative;display:-ms-flexbox;display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:flex;padding:0;list-style:none;-ms-box-orient:horizontal;-ms-box-pack:center;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;justify-content:center}.wpacu-tabs nav ul li{position:relative;z-index:1;display:block;margin:0;text-align:center;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1}.wpacu-tabs nav ul li span.extra-info{position:absolute;font-size:12px;left:-50%;right:50%;bottom:12px;-webkit-transform:translate(50%,50%);transform:translate(50%,50%);white-space:nowrap}.wpacu-tabs nav ul li span.extra-info.has-bulk-unloads{right:48%}.wpacu-tabs nav ul li span.extra-info.no-bulk-unloads{left:0;right:2px;bottom:2px;-webkit-transform:inherit;transform:inherit}.wpacu-tabs nav ul li span.extra-info .dashicons{font-size:16px;margin-right:-3px;margin-top:1px}.wpacu-tabs nav ul li span.extra-info.license-status.inactive{color:#c00}.wpacu-tabs nav ul li span.extra-info.license-status.active{color:green}.wpacu-tabs nav ul li span.extra-info.assets-unloaded-false{color:#004567}.wpacu-license-area .notice .dashicons,.wpacu-settings-area .notice .dashicons,.wpacu-tabs nav ul li span.extra-info.assets-unloaded-true,.wpacu-tabs nav ul li span.extra-info.bulk-unloads-true{color:green}.wpacu-tabs nav a{position:relative;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:2.5}.wpacu-tabs nav a span{vertical-align:middle;font-size:14px}.wpacu-tabs nav li.wpacu-tab-current a{color:#74777b}.wpacu-tabs nav a:focus{outline:0}.wpacu-tabs .dashicons{font-size:20px}.no-js .wpacu-content-wrap section{display:block;padding-bottom:2em;border-bottom:1px solid rgba(255,255,255,.6)}.no-flexbox nav ul{display:block}.no-flexbox nav ul li{min-width:15%;display:inline-block}@media screen and (max-width:58em){.wpacu-tabs nav a.icon span{display:none}.wpacu-tabs nav a:before{margin-right:0}}.wpacu-tabs-style-underline nav{background:#fff}.wpacu-tabs-style-underline nav a{color:#74777b;font-size:18px;text-transform:uppercase;text-decoration:none;padding:.25em 0 .5em;border-left:1px solid #e7ecea;-webkit-transition:color .2s;transition:color .2s}.wpacu-tabs-style-underline nav li:last-child a{border-right:1px solid #e7ecea}.wpacu-tabs-style-underline nav li a::after{position:absolute;bottom:0;left:0;width:100%;height:6px;background:#2CC185;content:"";-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translate3d(0,150%,0);transform:translate3d(0,150%,0)}.wpacu-tabs-style-underline nav li.wpacu-tab-current a::after{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.wpacu-tabs-style-underline nav a span{font-weight:700}.wpacu-tabs-style-topline{max-width:1800px;margin:20px auto 22px 0;width:98%;font-weight:300;text-decoration:none}.wpacu-tabs-style-topline nav li{border:1px solid rgba(40,44,42,.1)}.wpacu-tabs-style-topline nav li:not(:last-child){border-right:none}.wpacu-tabs-style-topline nav li.wpacu-tab-current{border-top-color:#008f9c;border-bottom:none}.wpacu-tabs-style-topline nav a{padding:20px 18px;background:rgba(40,44,42,.05);color:#74777b;line-height:1;-webkit-transition:color .2s;transition:color .2s;text-decoration:none}.wpacu-tabs-style-topline nav a:focus,.wpacu-tabs-style-topline nav a:hover{background:0 0;color:#008f9c}.wpacu-tabs-style-topline nav li.wpacu-tab-current a{background:0 0;box-shadow:inset 0 3px 0 #008f9c;color:#008f9c}.wpacu-tabs-style-topline nav li.wpacu-tab-current a span:not(.dashicons){font-weight:600}.wpacu-tabs-style-topline nav a span{text-transform:uppercase;font-weight:400}.wpacu-tab-nav-wrapper{border-bottom:none!important}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active{background:#fff;position:relative}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active:after{content:"";width:100%;bottom:-2px;left:0;position:absolute;border-bottom:2px solid #fff}.wpacu_hide{display:none!important}.wpacu-script-attributes-area{display:block;margin-bottom:12px}.wpacu-script-attributes-area>div:first-of-type{display:inline-block;float:left;margin-right:15px;line-height:30px;vertical-align:middle}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings{display:inline-block;float:left;padding:5px 7px!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings.wpacu-first{margin:0 15px 0 0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings label{margin:0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings li{display:inline-block;margin:0 16px 0 0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings li:last-child{margin:0 2px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings{background:#fff!important;border:1px solid #eee!important;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:5px 10px!important;list-style:none;display:inline-block;margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings input[type=radio]{width:auto;padding:0;margin:0 5px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings:hover{background:#f2faf2}tr.wpacu_location_changed>td{border-left:#004567 4px solid}tr.wpacu_not_load td,tr.wpacu_not_load th{background:#FFE1E1!important}tr.wpacu_not_load td .wpacu-assets-inline-code-wrap,tr.wpacu_not_load td .wpacu-script-attributes-area,tr.wpacu_not_load th .wpacu-assets-inline-code-wrap,tr.wpacu_not_load th .wpacu-script-attributes-area{filter:alpha(opacity=45);opacity:.45}.dashicons-wpacu{width:17px;height:17px;margin:2px 0 0;font-size:16px;text-decoration:none;color:inherit!important}#wpacu_meta_box_content,.wpacu_widefat{width:99%}.wpacu_widefat .check-column.wpacu_check{padding:10px}body[class*=wpassetcleanup] #footer-left{border-left:2px solid green;padding-left:10px}#wpassetcleanup_asset_list small{width:auto;float:none;display:inline}#wpacu_meta_box_content div.select select{max-width:inherit}#wpacu_meta_box_content .emoji{font-size:18px}#wpacu_meta_box_content h3{margin-left:0;padding-left:0}#wpacu_meta_box_content div.wpacu_note{padding:10px;background-color:#f5f5f5}#wpacu_meta_box_content .dashicons.dashicons-warning,#wpacu_meta_box_content .dashicons.dashicons-wordpress-alt{color:#c00}#wpacu_meta_box_content .wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content .wpacu_verified span{color:#0073aa;font-weight:700}#wpacu_meta_box_content div.wpacu_warning{border:1px solid #c00}#wpacu_meta_box_content ul.wpacu_asset_options{margin:0;padding:0}#wpacu_meta_box_content ul.wpacu_asset_options li{list-style:none;display:inline-block}#wpacu_meta_box_content ul.wpacu_asset_options label{font-weight:400;margin-right:5px;margin-top:5px;margin-bottom:5px}.wpacu-updated-frontend{font-weight:400;background-color:#fff;border-left:4px solid #46b450;border-top:1px solid #46b450;border-right:1px solid #46b450;border-bottom:1px solid #46b450;padding:9px 14px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_exception_options_area_wrap label.wpacu_bold span,.wpacu_load_regex_area_wrap label.wpacu_bold span,.wpacu_unload_regex_area_wrap label.wpacu_bold span{font-weight:600!important}.wpacu-updated-frontend span.dashicons-yes{color:#46b450;font-size:26px}#wpacu-update-front-settings-area{margin:10px 0;display:inline-block;position:relative}@media only screen and (min-width:768px){#wpacu-update-front-settings-area{position:-webkit-sticky;position:sticky;bottom:0;display:block;padding:15px 0;z-index:1000000;border-top:1px solid #cdcdcd;background:#fff}}#wpacu-updating-front-settings{display:none;position:absolute;top:20px;left:142px}.wpacu_load_regex_area_wrap label.wpacu_unload_checked span,.wpacu_unload_regex_area_wrap label.wpacu_unload_checked span{color:#d54e21}.wpacu_load_regex_area_wrap .wpacu_handle_unload_regex_input_wrap,.wpacu_unload_regex_area_wrap .wpacu_handle_unload_regex_input_wrap{margin:4px 0 0}.wpacu_load_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text],.wpacu_unload_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text]{line-height:normal;min-height:20px;min-width:300px;max-width:400px;display:inline-block;padding:4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu_load_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text].wpacu_disabled,.wpacu_unload_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text].wpacu_disabled{background:#fbfafa!important;color:inherit}.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap{display:inline-block}.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap .wpacu_area_one,.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap .wpacu_area_two,.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap .wpacu_load_regex_input_wrap{display:block}.wpacu_exception_options_area_wrap{display:table;background:#fff!important}.wpacu_exception_options_area_wrap textarea{line-height:normal;min-height:20px;min-width:300px;max-width:400px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu_exception_options_area_wrap textarea:focus{width:100%}.wpacu_exception_options_area_wrap textarea.wpacu_disabled{background:#fbfafa!important;color:inherit}.wpacu_exception_options_area_wrap p:first-of-type{margin-top:0}.wpacu_exception_options_area_wrap .wpacu_area_one{display:table-cell;vertical-align:top;padding-right:10px}.wpacu_exception_options_area_wrap .wpacu_area_two{display:table-cell}@media only screen and (max-width:1199px){.wpacu_exception_options_area_wrap,.wpacu_exception_options_area_wrap .wpacu_area_one,.wpacu_exception_options_area_wrap .wpacu_area_two{display:block}}#wpacu_meta_box_content .wpacu_widefat{width:100%}#wpacu_meta_box_content .wpacu-assets-collapsible-content{padding:0 10px!important}#wpacu_meta_box_content ul.wpacu_asset_options{vertical-align:middle}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area li{display:inline-block;float:left;margin:1px 25px 1px 0;line-height:20px}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area li:last-of-type{margin:1px 0}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area li input[type=text]{margin-left:5px;border:1px solid #e7e7e7;background:#fff}.wpacu-hardcoded-code-area{margin-bottom:12px}.wpacu-hardcoded-code-area.wpacu-has-view-more{max-height:300px;position:relative;overflow:hidden}.wpacu-hardcoded-code-area.wpacu-has-view-more p.wpacu-view-more-link-area{position:absolute;bottom:0;left:0;width:100%;margin:0;padding:20px 0 15px 15px;background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fbfbfb8c 100%);background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#fbfbfb8c 100%)}.wpacu-hardcoded-code-area pre{margin:0;padding:8px;white-space:pre-wrap;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-hardcoded-code-area code{font-style:italic;margin-left:2px;word-break:break-word}#wpacu_wrap_assets{color:#000!important;text-align:left!important;clear:both!important;width:90%!important;padding:20px!important;margin:30px 0 0 15px!important;border:1px solid #cdcdcd;z-index:10000!important;position:relative!important;background-color:#fff!important}#wpacu_wrap_assets div.wpacu_warning{border:1px solid #c00;padding:5px 10px}#wpacu_wrap_assets small{display:inline!important;margin:0!important;letter-spacing:normal!important}#wpacu_wrap_assets input[type=checkbox]{width:auto!important;margin-right:4px!important}#wpacu_wrap_assets img:not(.wpacu-ajax-loader){display:inline-block!important}#wpacu_wrap_assets p{line-height:22px!important;margin:10px 0!important;text-align:left!important;font-weight:400!important}#wpacu_wrap_assets p:first-child{margin:0 0 10px!important}#wpacu_wrap_assets h1{margin:0 0 20px!important;font-size:160%!important;text-align:left!important}#wpacu_wrap_assets h3{margin:20px 0;font-size:130%}#wpacu_wrap_assets ul.wpacu_asset_options.wpacu_exception_options_area li{display:inline-block;float:left;margin:1px 25px 1px 0;line-height:30px}#wpacu_wrap_assets ul.wpacu_asset_options.wpacu_exception_options_area li:last-of-type{margin:1px 0}.wpacu_verified{margin:0 0 10px!important}.wpacu_asset_row div.select{display:inline-block;width:auto}.wpacu_asset_row:first-child td{border-top:1px solid #cdcdcd}.wpacu_asset_row td{border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:1px solid #cdcdcd}.wpacu_asset_row.wpacu_notice_row td{position:relative;padding:5px;border-bottom:1px solid transparent}.wpacu_asset_row.wpacu_notice_row td div.wpacu-warning{width:auto;margin:5px;font-style:italic}.wpacu_asset_row:not(.wpacu_notice_row) td{padding:18px!important;position:relative}.wpacu_asset_row:not(.wpacu_notice_row) td.wpacu_selected,.wpacu_asset_row:not(.wpacu_notice_row) td:hover{-moz-box-shadow:inset 0 0 12px #cdcdcd;-webkit-box-shadow:inset 0 0 12px #cdcdcd;box-shadow:inset 0 0 12px #cdcdcd}.wpacu_asset_row:not(.wpacu_notice_row) td p{padding:0!important;margin-bottom:8px!important;word-wrap:break-word!important;-ms-word-break:break-all;word-break:break-word}.wpacu_asset_row:not(.wpacu_notice_row) td label{width:auto!important;margin:0!important;cursor:pointer!important;display:inline-block!important;font-size:100%!important;font-weight:400!important}.wpacu_asset_row:not(.wpacu_notice_row) td label span:not(.dashicons){font-size:100%!important}.wpacu_asset_row:not(.wpacu_notice_row) td.wpacu_check{width:50px!important}.asset-table-extra-info td{padding:5px!important}body.wp-admin .wpacu_asset_row td.wpacu_check{width:25px!important}.wpacu_asset_row .dashicons-warning,.wpacu_asset_row .dashicons-wordpress-alt{color:red!important}.wpacu_asset_row .dashicons-wordpress-alt{font-size:17px;vertical-align:middle}label.wpacu_add_global{cursor:pointer!important}label.wpacu_input_load_checked{font-weight:700;color:#d54e21}label.wpacu_global_unload_exception{font-weight:700!important}tr.wpacu_bulk_change_row.wpacu_selected,tr.wpacu_global_rule_row.wpacu_selected,tr.wpacu_remove_preload_row.wpacu_selected{background:#e7e7e7}.nav-tab-wrapper{border-bottom:1px solid #ccc;width:95%}.nav-tab-wrapper.nav-assets-manager .nav-tab{font-size:13px;font-weight:500;padding:6px 10px}.nav-tab-wrapper.nav-assets-manager .nav-tab.for-pro{padding:6px 8px 6px 3px}ul.wpacu_asset_options{margin:0 10px 0 0;padding:0}ul.wpacu_asset_options li{margin:0 10px 0 0;list-style:none;display:inline-block;line-height:normal}ul.wpacu_asset_options li.remove_rule label{font-weight:700}ul.wpacu_asset_options label{margin-right:20px;font-weight:400}ul.wpacu_asset_options label input{margin-right:4px}.wpacu_list_table,.wpacu_list_table div,.wpacu_list_table li,.wpacu_list_table p{font-weight:400}.wpacu_striped>tbody>:nth-child(even),ul.wpacu_striped>:nth-child(even){background-color:#fff!important}.wpacu_striped>tbody>:nth-child(odd),ul.wpacu_striped>:nth-child(odd){background-color:#f9f9f9!important}.wpacu_update_btn{-moz-box-shadow:inset 0 1px 0 0 #54a3f7!important;-webkit-box-shadow:inset 0 1px 0 0 #54a3f7!important;box-shadow:inset 0 1px 0 0 #54a3f7!important;background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#007dc1),color-stop(1,#0061a7))!important;background:-moz-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-webkit-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-o-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-ms-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:linear-gradient(to bottom,#007dc1 5%,#0061a7 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#007dc1", endColorstr="#0061a7", GradientType=0)!important;background-color:#007dc1!important;-moz-border-radius:3px!important;-webkit-border-radius:3px!important;border-radius:3px!important;border:1px solid #124d77!important;display:inline-block!important;cursor:pointer!important;color:#fff!important;font-size:15px!important;padding:10px 24px!important;text-decoration:none!important;text-shadow:0 1px 0 #154682!important;height:auto!important;line-height:normal!important}.wpacu-btns .btn:focus,.wpacu-btns .btn:hover,.wpacu-btns a{text-decoration:none}.wpacu_update_btn.wpacu_submitting,.wpacu_update_btn:hover{background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#0061a7),color-stop(1,#007dc1))!important;background:-moz-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-webkit-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-o-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-ms-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:linear-gradient(to bottom,#0061a7 5%,#007dc1 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#0061a7", endColorstr="#007dc1", GradientType=0)!important;background-color:#0061a7!important}.wpacu_update_btn.wpacu_submitting{cursor:default!important}.wpacu_update_btn:active{position:relative!important;top:1px!important}.wpacu-btns .btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;-webkit-border-radius:.25rem;-moz-border-radius:.25rem;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wpacu-btns .btn.focus,.wpacu-btns .btn:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.25);box-shadow:0 0 0 2px rgba(2,117,216,.25)}.wpacu-btns .btn.disabled,.wpacu-btns .btn:disabled{cursor:not-allowed;opacity:.65}.wpacu-btns .btn.active,.wpacu-btns .btn:active{background-image:none}.wpacu-btns a.btn.disabled,.wpacu-btns fieldset[disabled] a.btn{pointer-events:none}.wpacu-btns .btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.wpacu-btns .btn-primary.focus,.wpacu-btns .btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-primary.disabled,.wpacu-btns .btn-primary:disabled{background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary.active,.wpacu-btns .btn-primary:active,.wpacu-btns .show>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.wpacu-btns .btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary:hover{color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.wpacu-btns .btn-secondary.focus,.wpacu-btns .btn-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-secondary.disabled,.wpacu-btns .btn-secondary:disabled{background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary.active,.wpacu-btns .btn-secondary:active,.wpacu-btns .show>.btn-secondary.dropdown-toggle{color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.wpacu-btns .btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.wpacu-btns .btn-info.focus,.wpacu-btns .btn-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-info.disabled,.wpacu-btns .btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info.active,.wpacu-btns .btn-info:active,.wpacu-btns .show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.wpacu-btns .btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.wpacu-btns .btn-success.focus,.wpacu-btns .btn-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-success.disabled,.wpacu-btns .btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success.active,.wpacu-btns .btn-success:active,.wpacu-btns .show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.wpacu-btns .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.wpacu-btns .btn-warning.focus,.wpacu-btns .btn-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-warning.disabled,.wpacu-btns .btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning.active,.wpacu-btns .btn-warning:active,.wpacu-btns .show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.wpacu-btns .btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.wpacu-btns .btn-danger.focus,.wpacu-btns .btn-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-danger.disabled,.wpacu-btns .btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger.active,.wpacu-btns .btn-danger:active,.wpacu-btns .show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.wpacu-btns .btn-outline-primary{color:#0275d8;background-image:none;background-color:transparent;border-color:#0275d8}.wpacu-btns .btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-primary.focus,.wpacu-btns .btn-outline-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-outline-primary.disabled,.wpacu-btns .btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.wpacu-btns .btn-outline-primary.active,.wpacu-btns .btn-outline-primary:active,.wpacu-btns .show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-secondary{color:#ccc;background-image:none;background-color:transparent;border-color:#ccc}.wpacu-btns .btn-outline-secondary:hover{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-secondary.focus,.wpacu-btns .btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-outline-secondary.disabled,.wpacu-btns .btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.wpacu-btns .btn-outline-secondary.active,.wpacu-btns .btn-outline-secondary:active,.wpacu-btns .show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-info{color:#5bc0de;background-image:none;background-color:transparent;border-color:#5bc0de}.wpacu-btns .btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-info.focus,.wpacu-btns .btn-outline-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-outline-info.disabled,.wpacu-btns .btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.wpacu-btns .btn-outline-info.active,.wpacu-btns .btn-outline-info:active,.wpacu-btns .show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-success{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.wpacu-btns .btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-success.focus,.wpacu-btns .btn-outline-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-outline-success.disabled,.wpacu-btns .btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.wpacu-btns .btn-outline-success.active,.wpacu-btns .btn-outline-success:active,.wpacu-btns .show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-warning{color:#f0ad4e;background-image:none;background-color:transparent;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning.focus,.wpacu-btns .btn-outline-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-outline-warning.disabled,.wpacu-btns .btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.wpacu-btns .btn-outline-warning.active,.wpacu-btns .btn-outline-warning:active,.wpacu-btns .show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-danger{color:#d9534f;background-image:none;background-color:transparent;border-color:#d9534f}.wpacu-btns .btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-outline-danger.focus,.wpacu-btns .btn-outline-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-outline-danger.disabled,.wpacu-btns .btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.wpacu-btns .btn-outline-danger.active,.wpacu-btns .btn-outline-danger:active,.wpacu-btns .show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-link{font-weight:400;color:#0275d8;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.wpacu-btns .btn-link,.wpacu-btns .btn-link.active,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:disabled{background-color:transparent}.wpacu-btns .btn-link,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{border-color:transparent}.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.go-pro-button,.wpacu-btns .btn-link:disabled:focus,.wpacu-btns .btn-link:disabled:hover{text-decoration:none}.wpacu-btns .btn-link:disabled{color:#636c72}.wpacu-btns .btn-group-lg>.btn,.wpacu-btns .btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;-webkit-border-radius:.3rem;-moz-border-radius:.3rem;border-radius:.3rem}.wpacu-btns .btn-group-sm>.btn,.wpacu-btns .btn-sm{padding:.25rem .5rem;font-size:.875rem;-webkit-border-radius:.2rem;-moz-border-radius:.2rem;border-radius:.2rem}.wpacu-btns .btn-block{display:block;width:100%}.wpacu-btns .btn-block+.btn-block{margin-top:.5rem}.wpacu-btns input[type=button].btn-block,.wpacu-btns input[type=reset].btn-block,.wpacu-btns input[type=submit].btn-block{width:100%}.wpacu-btns .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.go-pro-button{background-color:#4CAF50;border:2px solid #4CAF50;color:#fff;padding:12px 18px;text-align:center;display:inline-block;font-size:16px;margin:4px 2px;cursor:pointer;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-transition-duration:.4s;transition-duration:.4s}.go-pro-button:hover{background-color:#fff;color:#000;border:2px solid #4CAF50;text-decoration:none}.go-pro-link-no-style,.wordpress-core-file{display:inline-block;color:inherit;text-decoration:none}.wpacu-restore-pos-btn{font-size:14px!important;line-height:normal!important;height:42px!important;padding:0 18px!important;margin-top:10px!important}body.wp-admin .wpacu_asset_row .go-pro-link-no-style .wpacu-tooltip{padding:8px 2px}body.wp-admin .go-pro-link-no-style .wpacu-tooltip{text-shadow:none;font-weight:400;font-size:12px;line-height:16px;padding:8px 11px}.go-pro-link-no-style .wpacu-tooltip,.wordpress-core-file .wpacu-tooltip{font-size:14px;line-height:18px;visibility:hidden;text-align:center;z-index:1}.go-pro-link-no-style{position:relative}.go-pro-link-no-style:not(.nav-tab){font-style:italic}.go-pro-link-no-style.no-transition .wpacu-tooltip{-webkit-transition:0s all ease;transition:0s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style>img{max-width:20px;max-height:20px}.go-pro-link-no-style .wpacu-tooltip{position:absolute;width:160px;background-color:#00a7a7;color:#fff;padding:8px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-65px;-webkit-transition:.1s all ease;transition:.1s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;left:50%;left:calc(50% - 10px);border-color:#00a7a7 transparent transparent}.go-pro-link-no-style .wpacu-tooltip.wpacu-on-pages-btn{cursor:pointer;margin-left:-77px;width:130px}.go-pro-link-no-style .wpacu-tooltip.wpacu-larger{width:240px}.go-pro-link-no-style:hover .wpacu-tooltip{visibility:visible}.wpacu_list_table tr:first-child .wordpress-core-file .wpacu-tooltip{bottom:-40px;left:120px;margin-left:-86px}.wpacu_list_table tr:first-child .wordpress-core-file .wpacu-tooltip:after{top:41px;left:-20px;border-color:transparent #c00 transparent transparent}.wordpress-core-file{position:relative;font-style:normal}.wordpress-core-file .wpacu-tooltip{position:absolute;width:160px;background-color:#c00;color:#fff;padding:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-86px;-webkit-transition:.1s all ease;transition:.1s all ease;-webkit-transition-delay:0s;transition-delay:0s}.wordpress-core-file .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;left:50%;left:calc(50% - 10px);border-color:#c00 transparent transparent}.wordpress-core-file:hover .wpacu-tooltip{visibility:visible}.ajax-direct-call-error-area{background:#fff;padding:10px;border:1px solid #c00;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.ajax-direct-call-error-area td{padding:6px}.ajax-direct-call-error-area .note{margin-top:0;padding-top:0}.ajax-direct-call-error-area .error-code{color:#c00;font-weight:700}.ajax-wp-remote-post-call-error-area{background:#fff;padding:20px}.ajax-wp-remote-post-call-error-area .table-data{background:0 0;border:1px solid #c66;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.ajax-wp-remote-post-call-error-area .table-data td{padding:10px}.wrap-upgrade-info{background:#fff;padding:0 15px;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-notice{margin:20px 20px 0 0!important}.wpacu-notice p{font-weight:600!important;font-style:italic}.wpacu-notice .dashicons{font-weight:inherit!important;color:#46b450!important;margin-right:4px;vertical-align:text-bottom;font-size:27px}.wpacu-notice-info{padding:12px 12px 12px 16px;background:#fff;border-left:4px solid #008f9c}.wpacu-notice-info p{margin-top:8px}.wpacu-notice-info p:first-child{margin-top:0}.wpacu-notice-info p:last-child{margin-bottom:0}.wpacu-warning{font-size:15px;padding:10px;background:#fffcec;border:1px solid #fdd5c9;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin:0 0 5px;width:100%}.pro-page-unlock-notice{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;padding:10px;background:#f2faf2;border:1px solid #c0e8c0;width:auto;display:block}.wpacu-license-area .notice,.wpacu-settings-area .notice{margin-left:0;padding:10px!important;width:97%;box-sizing:border-box;font-weight:600;font-style:italic}#wpacu-dom-get-type-selections,.wpacu-radio-selections{float:none;clear:both;width:auto;display:inline-block;margin-bottom:0;margin-top:0}#wpacu-dom-get-type-selections.wpacu-vertical,.wpacu-radio-selections.wpacu-vertical{display:block;margin-top:15px;margin-bottom:18px}#wpacu-dom-get-type-selections.wpacu-vertical li,.wpacu-radio-selections.wpacu-vertical li{float:none;margin-bottom:12px}#wpacu-dom-get-type-selections.wpacu-vertical li:last-child,.wpacu-radio-selections.wpacu-vertical li:last-child{margin-bottom:0}#wpacu-dom-get-type-selections li,.wpacu-radio-selections li{margin-right:30px;float:left;margin-bottom:0}#wpacu-dom-get-type-selections li:first-child,.wpacu-radio-selections li:first-child{margin-right:15px}#wpacu-dom-get-type-selections li:last-child,.wpacu-radio-selections li:last-child{margin-right:0}.wpacu_combine_loaded_js_level_area{display:none;background:0 0;border-left:2px solid #008f9c;padding-top:8px;padding-bottom:8px;padding-right:10px;padding-left:10px;margin:20px 0 15px}.wpacu_combine_loaded_js_level_area.wpacu_active{display:block}#wpacu-dom-get-type-infos{margin-bottom:0}#wpacu-dom-get-type-infos li{margin-bottom:0;line-height:20px}.wpacu-wrap li,.wpacu-wrap p,.wpacu-wrap td{font-weight:400}.wpacu-wrap small{width:auto;float:none;display:inline}.wpacu-wrap small code{font-size:inherit!important}.wpacu-wrap.wpacu-settings-show-all .wpacu-settings-tab-content{display:block;width:100%}.wpacu-wrap.wpacu-settings-show-all .wpacu-settings-area-title{color:#004567;padding:16px 15px;background:#f8f8f8;border-left:5px solid #004567b0;border-top:1px solid #e7e7e7;border-right:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;font-size:1.45em;font-weight:500}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round,.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area,.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area .submit{margin:0}.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area .button{padding:11px 28px;height:38px;font-size:18px}.wpacu-wrap.wpacu-settings-show-all #wpacu-updating-settings{margin-left:224px;top:35px;left:3px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch{width:auto;height:auto}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input{display:block}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox],.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox]{margin:0 0 3px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider:before{position:absolute;content:"";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider{background-color:#52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_disabled,.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_locked_for_pro{opacity:.3}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_disabled:before{content:"";font-family:Dashicons,Arial,"Times New Roman","Bitstream Charter",Times,serif;position:absolute;font-size:23px;top:5px;right:2px;z-index:1000}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle{margin-top:4px;line-height:1.4}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em{font-weight:200}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_read_more,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_read_more{margin-top:-10px;font-style:italic;font-size:12px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices{list-style:none;margin:0}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li{float:left;margin-right:30px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li:last-child{margin-right:0}#wpacu-assets-list-by-location-selected{background:0 0;border:1px solid #e7e7e7;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:8px;clear:both}.notice.notice-success+.wpacu-wrap.wpacu-settings-area{margin-top:20px}.wpacu-license-action-btn-area{margin-top:0;position:relative;display:inline-block}.wpacu-license-spinner{display:none;position:absolute;right:-30px;top:4px}.wpacu-license-spinner img{width:20px;height:20px}#wpacu-activation-issues-info{border-radius:10px;width:90%;margin-top:20px;font-size:14px;padding:6px 20px;background:#fff;border:1px solid #e7e7e7}#wpacu-activation-issues-info ol li{font-size:13px;margin-bottom:10px}#wpacu-mark-license-area-wrap{margin:15px 0}.wpacu-form-table.wpacu-license th{width:120px}.wpacu-form-table th{vertical-align:top;text-align:left;padding:5px 20px 20px 0;width:200px;line-height:1.3;font-weight:600}.wpacu-form-table th label{color:#23282d;font-weight:600;font-size:14px;text-shadow:none;vertical-align:middle;cursor:pointer}.wpacu-form-table td{padding-bottom:25px}.wpacu-form-table td:last-child p:last-child{margin:0}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox],.wpacu-form-table label input[type=checkbox]{height:20px;width:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:checked,.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:hover,.wpacu-form-table label input[type=checkbox]:checked,.wpacu-form-table label input[type=checkbox]:hover{border:1px solid green}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:checked:before,.wpacu-form-table label input[type=checkbox]:checked:before{color:#52af00;font:400 24px/1 dashicons}.wpacu-form-table .wpacu-fancy-radio input[type=radio]{-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;position:relative;height:20px;width:20px;margin:2px 0 0}.wpacu-form-table .wpacu-fancy-radio input[type=radio]:checked,.wpacu-form-table .wpacu-fancy-radio input[type=radio]:hover{border:1px solid green}.wpacu-form-table .wpacu-fancy-radio input[type=radio]:checked:before{margin:0;line-height:inherit;text-indent:inherit;content:"";position:absolute;top:4px;left:4px;width:10px;height:10px;border-radius:50%;background:#52af00;color:#52af00;font:400 24px/1 dashicons}#wpacu-settings-vertical-tab-wrap{display:table;width:100%}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text{margin:4px 0 0}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small{font-weight:lighter}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap{position:relative;padding-left:14px}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap span.wpacu-circle-status{position:absolute;left:0;top:2px;height:10px;width:10px;border-radius:50%;display:inline-block;opacity:.75}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap span.wpacu-circle-status.wpacu-on{background:#52af00}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap span.wpacu-circle-status.wpacu-off{background:#ccc}#wpacu-settings-vertical-tab-wrap *{box-sizing:border-box}.wpacu-settings-tab{display:table-cell;width:20%;height:100%;vertical-align:top}.wpacu-settings-tab a{text-decoration:none;border-left:3px solid transparent;display:block;background-color:#f1f1f1;color:#004567;padding:17px 16px;width:100%;outline:0;text-align:left;cursor:pointer;font-size:14px;font-weight:600;border-bottom:1px solid #ccc}.wpacu-settings-tab a:first-child{border-top:1px solid transparent!important}.wpacu-settings-tab a:last-child{border-bottom:1px solid transparent!important}.wpacu-settings-tab a:hover{background-color:#fff;border-left:3px solid #004567;position:relative}.wpacu-settings-tab a.active{color:#004567;background-color:#fff;border-left:3px solid #004567;position:relative;border-bottom:1px solid #ccc}.wpacu-settings-tab a.active:after{content:"";position:absolute;height:100%;width:1px;top:0;right:-1px;background-color:#fff}.wpacu-settings-tab-content{background-color:#fff;display:none;padding:12px 18px;width:79%;border-left:none;height:100%;border-top-right-radius:10px;border-bottom-right-radius:10px}.wpacu-settings-tab-content h2{padding:0 0 15px;border-bottom:1px solid #e7e7e7}.wpacu-settings-tab-content.active{display:table-cell}#wpacu_minify_css_exceptions_area,#wpacu_minify_js_exceptions_area{margin:16px 0 0}@media only screen and (min-width:768px){body.asset-cleanup-pro_page_wpassetcleanup_assets_manager #wpacu-update-button-area,body.asset-cleanup_page_wpassetcleanup_assets_manager #wpacu-update-button-area{position:-webkit-sticky;position:sticky;bottom:0;padding:0;z-index:1000000;border-top:1px solid #cdcdcd;background:#f1f1f1}.wpacu-get-help-wrap .help-content-wrap{-webkit-box-align:start;-ms-flex-align:start;-ms-grid-row-align:flex-start;align-items:flex-start}}body[class*=version-5-3] #wpacu-update-button-area .button{height:auto;padding:4px 18px 6px;font-size:15px}body[class*=version-5-3] #wpacu-updating-settings{margin-left:178px}#wpacu-update-button-area{position:relative;margin-left:20%}#wpacu-update-button-area.no-left-margin{margin-left:0}#wpacu-update-button-area .submit{margin:0;padding:19px 0}#wpacu-update-button-area .button{padding:5px 18px;height:38px;font-size:15px}#wpacu-updating-settings{position:absolute;margin-left:183px;top:28px;display:none}#combine_loaded_js_info_area{position:relative}#combine_loaded_js_info_area.locked-for-pro:before{position:absolute;content:"";height:100%;width:100%;background:#fff;opacity:.5;z-index:10000}.google_fonts_load_types{clear:both;margin:20px 0 15px;display:flex}.google_fonts_load_types>div{text-align:left}.google_fonts_load_types>div input{float:left;margin:0 7px 20px 0!important}.wpacu-sub-tabs-wrap{min-width:320px;margin:0 auto}.wpacu-sub-tabs-wrap input.wpacu-nav-input{display:none}.wpacu-sub-tabs-wrap label.wpacu-nav-label{display:inline-block;margin:0 0 -1px;padding:15px 25px;font-weight:600;text-align:center;color:#74777b;border-left:1px solid transparent;border-right:1px solid transparent;border-top:3px solid transparent;border-bottom:0}.wpacu-sub-tabs-wrap label.wpacu-nav-label:hover{cursor:pointer}.wpacu-sub-tabs-wrap input.wpacu-nav-input:checked+label.wpacu-nav-label{color:#004567;border-left:1px solid #ccc;border-right:1px solid #ccc;border-top:3px solid #004567;border-bottom:1px solid #fff}.wpacu-sub-tabs-wrap section{display:none;padding:20px 0 0;border-top:1px solid #ccc}#wpacu-google-fonts-optimize-tab-item:checked~#wpacu-google-fonts-optimize-tab-item-area,#wpacu-google-fonts-remove-tab-item:checked~#wpacu-google-fonts-remove-tab-item-area{display:block}body.wp-admin .wpacu-handle-notes p{margin-top:0!important}body.wp-admin .wpacu-handle-notes p a{font-size:inherit}body.wp-admin .wpacu-handle-notes p a span.dashicons{font-size:19px;width:19px;height:19px;vertical-align:bottom;text-decoration:none}.wpacu-handle-notes{padding-top:5px;margin-bottom:-10px;border-top:1px solid #e7e7e7}.wpacu-handle-notes .wpacu-handle-notes-field{display:none}.wpacu-handle-notes .wpacu-handle-notes-field>textarea{font-size:85%;padding:6px;width:320px;max-width:100%}.wpacu-handle-notes p{margin:10px 0 0!important}.wpacu-handle-notes p a.wpacu-add-handle-note{text-decoration:none;font-size:80%;display:inline-block;color:inherit}.wpacu-handle-notes p a.wpacu-add-handle-note span.dashicons{font-size:18px;width:18px;height:18px}.wrap_bulk_unload_options{width:auto;display:block;clear:both}.wrap_bulk_unload_options .wpacu_asset_options_wrap{display:inline-block;float:left;margin:5px 10px 14px 0!important;padding:8px 10px 12px!important}.wrap_bulk_unload_options .wpacu_asset_options_wrap .wpacu_slider_text{position:relative!important;vertical-align:top;left:inherit!important;top:inherit!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch{position:relative;display:inline-block;min-width:52px;width:52px;height:29px;margin-right:5px!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input{display:none}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.15s;transition:.15s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider:before{position:absolute;content:"";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.15s;transition:.15s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider{background-color:#C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_slider_text{position:absolute;left:62px;top:3px}.wpacu-wrap{width:98%}.wpacu-wrap tr.wpacu_regex_rule_row{opacity:.45}.wpacu-wrap tr.wpacu_regex_rule_row textarea{line-height:normal;min-height:20px;min-width:400px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu-wrap tr.wpacu_regex_rule_row textarea:focus{width:100%}.wpacu-wrap tr.wpacu_regex_rule_row.wpacu_enabled{opacity:1}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small{position:relative;display:inline-block;min-width:30px;width:30px;height:17px;margin-right:5px!important}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.15s;transition:.15s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider:before{position:absolute;content:"";height:13px;width:13px;left:2px;bottom:2px;background-color:#fff;-webkit-transition:.15s;transition:.15s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input:checked+.wpacu_slider{background-color:#52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input:checked+.wpacu_slider:before{-webkit-transform:translateX(13px);-ms-transform:translateX(13px);transform:translateX(13px)}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider.wpacu_round{border-radius:17px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider.wpacu_round:before{border-radius:50%}.editor-post-saved-state.is-wpacu-reloading{animation:edit-post__loading-fade-animation .5s infinite}body.wp-admin .wpacu_asset_row.wpacu-loading{position:relative}body.wp-admin .wpacu_asset_row.wpacu-loading .wpacu-ajax-loader{display:block!important}body.wp-admin .wpacu_asset_row .wpacu-ajax-loader{display:none;width:58px;height:58px;position:absolute;bottom:0;right:0;opacity:.75}.wpacu_asset_row>td{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all}.wpacu_asset_row input{width:auto;height:auto;min-height:16px}.wpacu_asset_row .tip{background:inherit;border-left:4px solid #e7e7e7;margin:0 0 5px;padding:7px;font-style:italic;font-size:small;line-height:1.4}.wpacu_asset_row td{width:100%;text-align:left}.wpacu_asset_row td p:last-child{margin-bottom:0!important}.wpacu_asset_row td .wpacu_asset_options_wrap{padding:8px 10px;margin:15px 0;background:#fff;border:1px solid #eee;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_asset_row td .wpacu_asset_options_wrap p:first-child{margin-top:0;margin-bottom:8px!important}.wpacu_asset_row p.wpacu_handle{margin-top:0}.wpacu_asset_row li.wpacu_unload_this_page{display:block!important;position:relative}.wpacu-clearfix:after,.wpacu-clearfix:before{display:table;content:""}.wpacu-contract-expand-area{width:100%;margin:20px 0 0}.wpacu-contract-expand-area .col-left{float:left}.wpacu-contract-expand-area .col-left h4{margin-bottom:0}.wpacu-contract-expand-area .col-right{float:right}.wpacu-clearfix{clear:both;height:0}.wpacu-clearfix:after{clear:both}.wpacu-wp-button{color:#555;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;vertical-align:top}body.wp-admin .wpacu-wp-button{font-size:13px;line-height:26px;height:28px}.wpacu-wp-button.wpacu-wp-button-secondary{display:inline-block;text-decoration:none;height:auto;margin:0 5px 0 0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wpacu-wp-button:hover{background:#fafafa;border-color:#999;color:#23282d}.distinguish-asset-list{list-style:none;margin-left:0;margin-bottom:5px;display:inline-block}.distinguish-asset-list li{float:left;margin-right:20px}.distinguish-asset-list li:last-child{margin-right:0}body[class*=asset-cleanup-pro] a.wpacu-plugin-contracted-wrap-link{padding:16px 6px 16px 41px!important}body[class*=asset-cleanup-pro] .wpacu-area-open .wpacu-plugin-toggle-all{font-size:12px!important;width:calc(100% - 26px)!important}body.wp-admin .wpacu-area-expanded .wpacu-plugin-toggle-all{top:5px}body.wp-admin .wpacu-area-expanded .wpacu-plugin-toggle-all ul li{font-size:12px!important}.wpacu-assets-collapsible-wrap{border:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location{margin-bottom:15px}.wpacu-assets-collapsible-wrap.wpacu-wrap-all{margin-top:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-area{margin-top:10px}.wpacu-assets-collapsible-wrap.wpacu-by-location>a.wpacu-assets-collapsible{padding:15px 15px 15px 43px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu_list_table{border-width:0;margin:0;border-spacing:inherit;width:100%;box-shadow:3px 3px 2px #ddd;border-bottom-right-radius:5px;border-top-right-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-name{font-weight:600}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-version{font-weight:200}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area[data-wpacu-plugin=oxygen] .icon-area{border-radius:50%}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all{display:inline-block;padding:0;font-size:13px;width:100%;width:calc(100% + 46px);min-width:250px;position:absolute;left:100%;left:calc(100% + 6px);margin:0;top:4px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all ul{display:inline-block;margin:0;list-style:none;padding-left:13px;padding-top:0}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all ul li{padding:0;margin:0;line-height:normal;font-size:14px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all ul li:first-child{font-style:italic;margin-bottom:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{display:inline;position:relative;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title:after{content:"";position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap{padding:0 0 10px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open.wpacu-plugin-assets-last{margin-bottom:18px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all{display:inline-block;padding:7px 12px 8px;font-size:14px;width:100%;text-align:left;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all+.wpacu-plugin-toggle-all{padding:2px 12px 10px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link{color:inherit;text-decoration:none;font-weight:inherit;font-style:inherit;font-size:105%;line-height:initial;height:auto;margin:14px 0 0;padding:13px 6px 14px 39px;position:relative;display:block}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:after{position:absolute;font-size:18px;font-family:Dashicons;right:12px;top:14px;content:""}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-open:after{content:""}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-closed{border:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:hover{border:1px solid #878787;background:#f9f9f9}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:hover.wpacu-link-closed{box-shadow:3px 3px 2px #ddd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-open{border-top:1px solid #cdcdcd;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:none}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-closed.wpacu-last-wrap-link{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default{top:10px;left:10px;width:30px;height:30px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default .icon-area{width:30px;height:30px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default .icon-area:before{font-size:22px;line-height:22px;top:4px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .wpacu-area-title{position:relative;padding:17px 10px 16px 46px;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .wpacu-area-title:after{content:"";position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-area-last{margin-bottom:18px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-area-open{padding:0;max-height:100%}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-area-closed{padding:0;overflow:hidden;max-height:0}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{margin-top:0;margin-bottom:-1px;padding:14px 10px 16px 12px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title.wpacu-theme-has-icon{padding:18px 10px 16px 58px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area{margin-top:22px;margin-bottom:-1px;font-size:110%;line-height:initial}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area.wpacu-location-child-area-first{margin-top:2px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area.wpacu-area-expanded .wpacu-area-title{display:inline-block;z-index:1;padding:17px 10px 16px 46px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{display:inline;border-top-right-radius:8px;border-top-left-radius:8px;background-color:#f9f9f9;border-left:1px solid #cdcdcd;border-top:1px solid #cdcdcd;border-bottom:1px solid transparent;border-right:1px solid #cdcdcd;position:relative}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon){color:#b4b9be;background-color:#eee;box-shadow:inset 0 0 10px rgba(160,165,170,.15);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon) .icon-area:before{content:"";font-family:Dashicons;position:absolute;font-size:28px;line-height:28px;top:5px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-theme{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-theme .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-wp_core{border:1px solid #c00}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content{padding:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table{width:100%;margin:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td{border-left:hidden;border-right:hidden;border-bottom:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child{margin-bottom:0!important}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child{border-bottom:hidden}a.wpacu-assets-collapsible{color:#000;font-size:20px;text-decoration:none;display:block;position:relative;background-color:#f1f3f8;cursor:pointer;padding:15px 15px 15px 36px;width:auto;border:none;text-align:left;outline:0}a.wpacu-assets-collapsible>span.dashicons{font-size:25px;line-height:normal;position:absolute;top:15px;top:calc(50% - 21px);left:22px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-collapsible:hover{background-color:#f1f3f8;text-decoration:none}a.wpacu-assets-collapsible:after{position:absolute;font-size:22px;font-family:Dashicons;right:14px;top:16px}a.wpacu-assets-collapsible:not(.wpacu-assets-collapsible-active):after{content:""}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active{background-color:#f1f3f8}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active:after{content:""}.wpacu-assets-collapsible-content{padding:0 16px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-collapsible-content .wpacu-assets-note{margin:0;padding:15px 15px 10px}.wpacu-assets-collapsible-content>div:not(.wpacu-assets-table-list-wrap){padding:16px 0 0}.wpacu-assets-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-collapsible-content.wpacu-open{max-height:100%}a.wpacu-assets-inline-code-collapsible{color:inherit;font-size:14px;text-decoration:none;display:inline-block;position:relative;cursor:pointer;width:auto;outline:0;background:#f1f3f8;border:1px solid #cdcdcd;padding:4px 21px 4px 8px;margin:0 0 0 6px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}a.wpacu-assets-inline-code-collapsible:hover{border:1px solid #5c5c5c}a.wpacu-assets-inline-code-collapsible:after{position:absolute;font-size:15px;font-family:Dashicons;right:-3px;top:-1px;width:14px;height:14px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-inline-code-collapsible:not(.wpacu-assets-inline-code-collapsible-active):after{content:""}a.wpacu-assets-inline-code-collapsible.wpacu-assets-inline-code-collapsible-active:after{content:""}.wpacu-assets-inline-code-collapsible-content{font-size:80%;padding:0 8px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-inline-code-collapsible-content>div{padding:7px 8px 0}.wpacu-assets-inline-code-collapsible-content>div>p{line-height:normal!important}.wpacu-assets-inline-code-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-inline-code-collapsible-content.wpacu-open{max-height:100%}.wpacu_asset_row p div.select{display:inline-block}.wpacu-wrap-choose-position{display:inline}.wpacu-wrap-choose-position>div{display:inline-block}.wpacu-wrap-choose-position select{width:auto;font-size:inherit;display:inline;margin-left:6px;margin-right:4px}.wpacu-wrap-choose-position>.select>.select{display:inline}.wpacu-wrap-choose-position>.select>.select select{padding-right:30px}.wpacu-wrap-choose-position>.select>.select:after{right:15px;top:-4px}.wpacu_handle_unload_regex_input_wrap,.wpacu_load_regex_input_wrap{display:block;width:100%}.wpacu_handle_unload_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea,.wpacu_load_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea{line-height:normal;min-height:20px;min-width:300px;max-width:400px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu_handle_unload_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea:focus,.wpacu_load_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea:focus{width:100%}body.logged-in:not(.wp-admin) .wpacu-view-more-code{box-shadow:inset 0 1px 0 0 #fff;background:linear-gradient(to bottom,#f9f9f9 5%,#e9e9e9 100%);background-color:#f9f9f9;border-radius:6px;border:1px solid #dcdcdc;display:inline-block;cursor:pointer;color:#666;font-size:inherit;font-weight:700;padding:6px 24px;text-decoration:none;text-shadow:0 1px 0 #fff}body.logged-in:not(.wp-admin) .wpacu-view-more-code:hover{background:linear-gradient(to bottom,#e9e9e9 5%,#f9f9f9 100%);background-color:#e9e9e9}body.logged-in:not(.wp-admin) .wpacu-view-more-code:active{position:relative;top:1px}.wpacu_table_wrap{margin:20px 0 0}.wpacu_table_wrap>table{border:1px solid #cdcdcd}.wpacu_table_wrap .table{width:100%;max-width:100%;margin-bottom:1rem;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu_table_wrap .table td,.wpacu_table_wrap .table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.wpacu_table_wrap .table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.wpacu_table_wrap .table tbody+tbody{border-top:2px solid #eceeef}.wpacu_table_wrap .table .table{background-color:#fff}.wpacu_table_wrap .table-sm td,.wpacu_table_wrap .table-sm th{padding:.3rem}.wpacu_table_wrap .table-bordered,.wpacu_table_wrap .table-bordered td,.wpacu_table_wrap .table-bordered th{border:1px solid #eceeef}.wpacu_table_wrap .table-bordered thead td,.wpacu_table_wrap .table-bordered thead th{border-bottom-width:2px}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(even){background-color:#f9f9f9}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(odd){background-color:#fff}.wpacu_table_wrap .table-active,.wpacu_table_wrap .table-active>td,.wpacu_table_wrap .table-active>th,.wpacu_table_wrap .table-hover .table-active:hover,.wpacu_table_wrap .table-hover .table-active:hover>td,.wpacu_table_wrap .table-hover .table-active:hover>th,.wpacu_table_wrap .table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.wpacu_table_wrap .table-success,.wpacu_table_wrap .table-success>td,.wpacu_table_wrap .table-success>th{background-color:#dff0d8}.wpacu_table_wrap .table-hover .table-success:hover,.wpacu_table_wrap .table-hover .table-success:hover>td,.wpacu_table_wrap .table-hover .table-success:hover>th{background-color:#d0e9c6}.wpacu_table_wrap .table-info,.wpacu_table_wrap .table-info>td,.wpacu_table_wrap .table-info>th{background-color:#d9edf7}.wpacu_table_wrap .table-hover .table-info:hover,.wpacu_table_wrap .table-hover .table-info:hover>td,.wpacu_table_wrap .table-hover .table-info:hover>th{background-color:#c4e3f3}.wpacu_table_wrap .table-warning,.wpacu_table_wrap .table-warning>td,.wpacu_table_wrap .table-warning>th{background-color:#fcf8e3}.wpacu_table_wrap .table-hover .table-warning:hover,.wpacu_table_wrap .table-hover .table-warning:hover>td,.wpacu_table_wrap .table-hover .table-warning:hover>th{background-color:#faf2cc}.wpacu_table_wrap .table-danger,.wpacu_table_wrap .table-danger>td,.wpacu_table_wrap .table-danger>th{background-color:#f2dede}.wpacu_table_wrap .table-hover .table-danger:hover,.wpacu_table_wrap .table-hover .table-danger:hover>td,.wpacu_table_wrap .table-hover .table-danger:hover>th{background-color:#ebcccc}.wpacu_table_wrap .thead-inverse th{color:#fff;background-color:#292b2c}.wpacu_table_wrap .thead-default th{color:#464a4c;background-color:#eceeef}.wpacu_table_wrap .table-inverse{color:#fff;background-color:#292b2c}.wpacu_table_wrap .table-inverse td,.wpacu_table_wrap .table-inverse th,.wpacu_table_wrap .table-inverse thead th{border-color:#fff}.wpacu_table_wrap .table-inverse.table-bordered,.wpacu_table_wrap .table-responsive.table-bordered{border:0}.wpacu_table_wrap .table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr:not(.wpacu-top):hover td{border-top:1px solid #ccd0d4;border-bottom:1px solid #ccd0d4}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr:not(.wpacu-top):hover td:first-of-type{border-left:1px solid #ccd0d4}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr:not(.wpacu-top):hover td:last-of-type{border-right:1px solid #ccd0d4}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr td{font-size:14px;border-top:1px solid transparent;border-bottom:1px solid transparent}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr td:first-of-type{border-left:1px solid transparent}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr td:last-of-type{border-right:1px solid transparent}body.wp-admin[class*=asset-cleanup] table.wp-list-table:not(.wpacu-overview-list-table) tr:not(:first-of-type):not(.wpacu_selected):hover,body.wp-admin[class*=asset-cleanup] table.wp-list-table:not(.wpacu-overview-list-table).wpacu-list-table tr:not(.wpacu_selected):hover{-moz-box-shadow:inset 0 0 2px 1px #b3b3b3;-webkit-box-shadow:inset 0 0 2px 1px #B3B3B3;box-shadow:inset 0 0 2px 1px #B3B3B3}.wp-list-table .wpacu_remove_global_attr_row.wpacu_selected,.wp-list-table .wpacu_restore_position_row.wpacu_selected{background:#e7e7e7!important}ul.hire-reasons{margin-bottom:20px}ul.hire-reasons li{font-size:14px;line-height:22px;margin-bottom:12px}ul.hire-reasons li .dashicons{font-size:23px;line-height:23px}ul.hire-reasons li .dashicons.dashicons-yes{color:green}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label.wpacu_plugin_unload_rule_input_checked,#wpacu-warning-read span.dashicons-warning,#wpacu-warning-read span.dashicons-wordpress-alt{color:#c00}ol.getting-started li{font-size:14px;line-height:22px;margin-bottom:8px}.wpacu-get-help-wrap p{font-size:14px}.wpacu-get-help-wrap .help-content-wrap{margin:20px 0 25px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-moz-flex;display:-webkit-flex;display:flex;width:100%}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.wpacu-get-help-wrap .help-content-wrap .help-content{padding:15px;background:#fff;border:1px solid #E0E0E0;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;box-shadow:2px 3px 8px 0 #231f2038;flex:1 1 50%;margin-bottom:10px}.wpacu-get-help-wrap .help-content-wrap .help-content .content-title{margin:5px 0 15px}.wpacu-get-help-wrap .help-content-wrap .help-content .cols-wrap{width:100%;margin:0 auto;display:table}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area{margin:5px 0 0;position:relative}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-left{float:left;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-right{float:right;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.activate-plugin img{max-width:280px}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area img{width:99%;margin:8px 0;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{order:2}@media only screen and (min-width:768px){.wpacu-get-help-wrap .help-content-wrap .help-content{margin-right:24px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{margin-right:0}}.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{order:1}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{margin-bottom:30px}}.wpacu-get-help-wrap .help-content-wrap .help-content ul{list-style:none;padding-left:0}.wpacu-get-help-wrap .help-content-wrap .help-content ul li{font-size:14px;line-height:22px;margin-bottom:15px}.wpacu-get-help-wrap .help-content-wrap .help-content p:last-child,.wpacu-get-help-wrap .help-content-wrap .help-content ul li:last-child{margin-bottom:0}#wpacu-license-data-remove-area{display:none;margin:10px 0 25px}#wpacu-license-data-remove-area.wpacu-visible{display:block}span#wpacu-license-data-removed-msg{display:block;padding-left:26px}#wpacu-warning-read{display:none;margin:10px 0}#wpacu-warning-read.wpacu-visible{display:block}#wpacu-reset-submit-area{margin:10px 0;clear:both}#wpacu-reset-submit-btn{margin:10px 0 0}.wpacu-tools-area{margin:10px 20px 0 2px}.wpacu-tools-area .wpacu-tools-container{background:#fff;padding:15px;border:1px solid #cdcdcd;width:96%}.wpacu-tools-area .wpacu-tools-container form>div:first-child{margin:0 0 10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning{display:none;box-sizing:border-box;margin-top:10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p{margin:0 0 10px;line-height:22px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p:only-child{margin:0}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning ul{font-size:13px;list-style-type:disc;padding-left:30px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning.wpacu-visible{display:block}.wpacu-tools-area .wpacu-export-import-area{padding:10px}.wpacu-tools-area .wpacu-export-import-area form>p:first-of-type{margin-top:0}.wpacu-tools-area .wpacu-export-import-area form>p:last-of-type{margin-bottom:0}.wpacu-tools-area .wpacu-export-import-area:hover{background:rgba(40,44,42,.05);box-shadow:inset 0 0 10px rgba(160,165,170,.15)}.wpacu-tools-area .wpacu-export-import-area+hr{display:block;height:1px;border:0;border-top:1px solid #cdcdcd;margin:10px 0;padding:0}#wpacu-import-form button.wpacu-importing img.wpacu-spinner{display:inline-block}#wpacu-import-form button img.wpacu-spinner{display:none;margin:0 0 0 5px;height:16px;width:16px;vertical-align:middle}.wpacu-about-wrap .wpacu-about-text img{width:auto;height:150px;position:absolute;top:20px;right:-20px}@media only screen and (max-width:767px){.wpacu-about-wrap h1{margin:20px}.wpacu-about-wrap .wpacu-about-text img{display:none}.wpacu-about-wrap .wpacu-about-text{margin:20px}}.wpacu-about-wrap .about-wrap-content .area-title{font-size:19px;line-height:19px;margin-bottom:0}.wpacu-about-wrap hr{margin:10px 0}.wpacu-lite-vs-pro-wrap ul{display:flex;top:0;z-index:10;padding-bottom:14px}.wpacu-lite-vs-pro-wrap li{list-style:none;flex:1}.wpacu-lite-vs-pro-wrap li:last-child{border-right:1px solid #DDD}.wpacu-lite-vs-pro-wrap button{width:100%;border:1px solid #DDD;border-right:0;border-top:0;padding:10px;background:#FFF;font-size:14px;font-weight:700;height:60px;color:#999}.wpacu-lite-vs-pro-wrap li.active button{background:#F5F5F5;color:#000}.wpacu-lite-vs-pro-wrap table{border-collapse:collapse;table-layout:fixed;width:100%}.wpacu-lite-vs-pro-wrap th{background:inherit}.wpacu-lite-vs-pro-wrap tr.first{background:inherit;font-size:18px}.wpacu-lite-vs-pro-wrap tr.first .bg-lite{border-top:4px solid #6d6e70;background:#fff;color:#6d6e70}.wpacu-lite-vs-pro-wrap tr.first .bg-pro{border-top:4px solid green;background:#fff;color:green}.wpacu-lite-vs-pro-wrap tr:not(.first){background:#fff}.wpacu-lite-vs-pro-wrap tr:not(:last-child):hover{background:#f8f8f8}.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{height:53px;line-height:22px;border:1px solid #DDD;padding:10px 16px;empty-cells:show;text-align:left}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{font-size:14px}}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{text-align:center;display:none}.wpacu-lite-vs-pro-wrap td.default{display:table-cell}.wpacu-lite-vs-pro-wrap .txt-l{font-size:28px;font-weight:700}.wpacu-lite-vs-pro-wrap .txt-top{position:relative;top:-9px;left:-2px}.wpacu-lite-vs-pro-wrap svg{width:18px;height:18px}.wpacu-lite-vs-pro-wrap svg path{fill:green}.wpacu-lite-vs-pro-wrap .tick{color:#2CA01C}.wpacu-lite-vs-pro-wrap .tick img{fill:#2CA01C}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap .txt-l{font-size:20px}.wpacu-lite-vs-pro-wrap .tick{font-size:15px}}.wpacu-lite-vs-pro-wrap .na{font-size:18px;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.wpacu-lite-vs-pro-wrap .hide{border:0;background:0 0}.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{display:table-cell!important;width:auto}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{width:130px}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap .na{font-size:15px}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{width:42px}}@media only screen and (min-width:768px){.wpacu-lite-vs-pro-wrap td .button{font-size:16px!important}}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap td .button{font-size:14px!important;padding:0 20px!important}.wpacu-lite-vs-pro-wrap td .button.button-primary{margin-top:6px;margin-bottom:14px}}@media only screen and (min-width:768px){.wpacu-lite-vs-pro-wrap{margin-bottom:40px;clear:both}}.wpacu-video-areas>div{padding:20px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-video-areas>div:nth-child(odd){background:#fff}.wpacu-video-areas>div:nth-child(even){background:inherit}@media only screen and (min-width:1200px){.wpacu-video-areas .wpacu-video-area-wrapper{margin:0 0 15px;display:flex}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right{padding:0 20px 0 25px}}@media only screen and (min-width:992px) and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper{margin:0 0 40px}}.wpacu-video-areas .wpacu-video-area-wrapper ol{font-size:14px}.wpacu-video-areas .wpacu-video-area-wrapper ul{font-size:14px;list-style:disc;margin-left:22px}@media only screen and (min-width:1200px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right p:first-child{margin-top:0}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right p:last-child{margin-bottom:0}}@media only screen and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper iframe{width:560px;height:315px}@media only screen and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%}}#wpassetcleanup_asset_list.postbox h2{padding-left:52px!important;position:relative}#wpassetcleanup_asset_list.postbox h2:before{content:"";position:absolute;background-image:url(images/wpacu-logo-transparent-bg-v1.png);background-size:cover;top:6px;left:13px;width:33px;height:26px;opacity:.8;-webkit-filter:grayscale(100%);filter:grayscale(100%)}body.wp-admin .wpacu-modal{display:none;position:fixed;z-index:1000000;padding-top:15%;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4)}body.wp-admin .wpacu-modal-content{background-color:#fefefe;margin:auto;padding:20px;border:1px solid #888;width:80%;max-width:600px;border-radius:10px}body.wp-admin .wpacu-close{color:#aaa;float:right;font-size:28px;font-weight:700}body.wp-admin .wpacu-close:focus,body.wp-admin .wpacu-close:hover{color:#000;text-decoration:none;cursor:pointer}.wpacu-bulk-changes-tabs{display:table;position:relative;overflow:hidden;margin:0;width:100%}.wpacu-bulk-changes-tabs li{border-top:1px solid rgba(40,44,42,.1);border-left:1px solid rgba(40,44,42,.1);border-bottom:1px solid rgba(40,44,42,.1);float:left;line-height:38px;padding:0;position:relative;margin-bottom:12px}.wpacu-bulk-changes-tabs li:last-child{border-right:1px solid rgba(40,44,42,.1)}.wpacu-bulk-changes-tabs a{position:relative;background:rgba(40,44,42,.05);color:#004567;font-size:14px;font-weight:500;display:block;letter-spacing:0;outline:0;padding:6px 20px;text-decoration:none;border-top:3px solid transparent}.wpacu-bulk-changes-tabs a:hover{background:#f1f1f1;border-top:3px solid transparent}.wpacu-bulk-changes-tabs .current a{background:#fff;border-top:3px solid #004567}.wpacu-bulk-changes-tabs .current a:hover{background:#fff}.wpacu-bulk-changes-tabs .current a:after,.wpacu-bulk-changes-tabs .current a:before{top:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.wpacu-bulk-changes-tabs .current a:after{border-color:rgba(136,183,213,0);border-top-color:#fff;border-width:12px;margin-left:-12px}.wpacu-bulk-changes-tabs .current a:before{border-color:rgba(194,225,245,0);border-top-color:rgba(40,44,42,.1);border-width:13px;margin-left:-13px}img.wpacu-emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;box-shadow:none!important}#wpacu-plugins-load-manager-wrap table td{border-bottom:1px solid #e7e7e7}#wpacu-plugins-load-manager-wrap table td.wpacu_plugin_icon{padding:14px 10px}#wpacu-plugins-load-manager-wrap table td.wpacu_plugin_details{vertical-align:middle;padding:10px 0 10px 8px}#wpacu-plugins-load-manager-wrap table td.wpacu_plugin_details .wpacu_plugin_title{font-weight:600}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options{width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap{flex-grow:1;margin:0 16px 0 0!important;padding:8px 10px 6px 0!important}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules{margin:0;vertical-align:middle}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label{vertical-align:top}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label input[type=radio].wpacu_plugin_load_it:before{background-color:green}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label input[type=radio].wpacu_plugin_unload_rule_input:before{background-color:#c00}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options{padding-top:5px;border-top:1px solid #e7e7e7;width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap{flex-grow:1;margin:0 16px 0 0!important;padding:6px 10px 6px 0!important}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules{margin:0;vertical-align:middle}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label{vertical-align:top}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules.wpacu_exception_options_area li{display:inline-block;float:left;margin:1px 25px 1px 0;line-height:20px}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules.wpacu_exception_options_area li:last-of-type{margin:1px 0}.wpacu-list-table.plugins{width:98%;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}#wpacu-plugins-load-manager-wrap .help_link{text-decoration:none;color:inherit;vertical-align:middle}#wpacu-plugins-load-manager-wrap .help_link.unload_it_regex{vertical-align:top}#wpacu-plugins-load-manager-wrap .wpacu_plugin_details .wpacu_plugin_path{font-style:italic;color:grey}#wpacu-plugins-load-manager-wrap .wpacu_plugin_icon>img{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}#wpacu-plugins-load-manager-wrap .wpacu_plugin_icon>div{background:#efefef;border:#cdcdcd;border-radius:3px;width:40px;height:40px;vertical-align:middle;position:relative;text-align:center}#wpacu-plugins-load-manager-wrap .wpacu_plugin_icon>div>span{font-size:30px;color:#b3b3b3;top:50%;vertical-align:middle;left:50%;transform:translate(-50%,-50%);width:30px;height:30px;position:absolute}#wpacu-plugins-load-manager-wrap .wpacu_exception_options_area textarea,#wpacu-plugins-load-manager-wrap textarea:focus{width:100%}#wpacu-plugins-load-manager-wrap .wpacu_plugin_unload_regex_input_wrap{display:block}#wpacu-plugins-load-manager-wrap .wpacu_plugin_unload_regex_input_wrap textarea{margin-top:6px;min-width:400px}#wpacu-plugins-load-manager-wrap textarea{line-height:normal;min-height:20px;min-width:300px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}#wpacu-plugins-load-manager-wrap textarea.wpacu_disabled{background:#fbfafa!important;color:inherit}
1
+ @charset "UTF-8";#wpacu-logo-wrap .wpacu-pro-sign.wpacu-lite,#wpacu-quick-actions{color:#74777b;background:rgba(40,44,42,.05)}#wpacu-pages-info-area{width:98%}#wpacu-top-area{margin:15px 0;padding:0 10px}#wpacu-quick-actions{float:right;width:auto;margin-right:30px;border-radius:10px;padding:6px 12px}#wpacu-quick-actions .wpacu-actions-title{font-weight:200;letter-spacing:.5px}#wpacu-quick-actions a{color:#004567;text-decoration:none}#wpacu-quick-actions a:hover{color:#0073aa}#wpacu-logo-wrap{width:auto;display:inline-block;position:relative}#wpacu-logo-wrap a{display:block}#wpacu-logo-wrap img{width:352px;height:79px}#wpacu-logo-wrap .wpacu-pro-sign{position:absolute;height:auto;font-family:FiraSans-Medium,proxima-nova-1,Montserrat,Helvetica,sans-serif;font-size:13px;font-weight:600;letter-spacing:1px;padding:5px 11px;border-radius:15px;right:-60px;top:30px;width:auto;display:inline-block;text-align:center}#wpacu-logo-wrap .wpacu-pro-sign.wpacu-pro{color:#004567;background-color:rgba(40,44,42,.05)}.wpacu-tabs{position:relative;overflow:hidden;margin:0 auto 20px;width:100%;font-weight:300;font-size:20px}.wpacu-tabs nav{text-align:center}.wpacu-tabs nav ul{position:relative;display:-ms-flexbox;display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:flex;padding:0;list-style:none;-ms-box-orient:horizontal;-ms-box-pack:center;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;justify-content:center}.wpacu-tabs nav ul li{position:relative;z-index:1;display:block;margin:0;text-align:center;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1}.wpacu-tabs nav ul li span.extra-info{position:absolute;font-size:12px;left:-50%;right:50%;bottom:12px;-webkit-transform:translate(50%,50%);transform:translate(50%,50%);white-space:nowrap}.wpacu-tabs nav ul li span.extra-info.has-bulk-unloads{right:48%}.wpacu-tabs nav ul li span.extra-info.no-bulk-unloads{left:0;right:2px;bottom:2px;-webkit-transform:inherit;transform:inherit}.wpacu-tabs nav ul li span.extra-info .dashicons{font-size:16px;margin-right:-3px;margin-top:1px}.wpacu-tabs nav ul li span.extra-info.license-status.inactive{color:#c00}.wpacu-tabs nav ul li span.extra-info.license-status.active{color:green}.wpacu-tabs nav ul li span.extra-info.assets-unloaded-false{color:#004567}.wpacu-tabs nav ul li span.extra-info.assets-unloaded-true,.wpacu-tabs nav ul li span.extra-info.bulk-unloads-true{color:green}.wpacu-tabs nav a{position:relative;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:2.5}.wpacu-tabs nav a span{vertical-align:middle;font-size:14px}.wpacu-tabs nav li.wpacu-tab-current a{color:#74777b}.wpacu-tabs nav a:focus{outline:0}.wpacu-tabs .dashicons{font-size:20px}.no-js .wpacu-content-wrap section{display:block;padding-bottom:2em;border-bottom:1px solid rgba(255,255,255,.6)}.no-flexbox nav ul{display:block}.no-flexbox nav ul li{min-width:15%;display:inline-block}@media screen and (max-width:58em){.wpacu-tabs nav a.icon span{display:none}.wpacu-tabs nav a:before{margin-right:0}}.wpacu-tabs-style-underline nav{background:#fff}.wpacu-tabs-style-underline nav a{color:#74777b;font-size:18px;text-transform:uppercase;text-decoration:none;padding:.25em 0 .5em;border-left:1px solid #e7ecea;-webkit-transition:color .2s;transition:color .2s}.wpacu-tabs-style-underline nav li:last-child a{border-right:1px solid #e7ecea}.wpacu-tabs-style-underline nav li a::after{position:absolute;bottom:0;left:0;width:100%;height:6px;background:#2CC185;content:"";-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translate3d(0,150%,0);transform:translate3d(0,150%,0)}.wpacu-tabs-style-underline nav li.wpacu-tab-current a::after{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.wpacu-tabs-style-underline nav a span{font-weight:700}.wpacu-tabs-style-topline{max-width:1800px;margin:20px auto 22px 0;width:98%;font-weight:300;text-decoration:none}.wpacu-tabs-style-topline nav li{border:1px solid rgba(40,44,42,.1)}.wpacu-tabs-style-topline nav li:not(:last-child){border-right:none}.wpacu-tabs-style-topline nav li.wpacu-tab-current{border-top-color:#008f9c;border-bottom:none}.wpacu-tabs-style-topline nav a{padding:20px 18px;background:rgba(40,44,42,.05);color:#74777b;line-height:1;-webkit-transition:color .2s;transition:color .2s;text-decoration:none}.wpacu-tabs-style-topline nav a:focus,.wpacu-tabs-style-topline nav a:hover{background:0 0;color:#008f9c}.wpacu-tabs-style-topline nav li.wpacu-tab-current a{background:0 0;box-shadow:inset 0 3px 0 #008f9c;color:#008f9c}.wpacu-tabs-style-topline nav li.wpacu-tab-current a span:not(.dashicons){font-weight:600}.wpacu-tabs-style-topline nav a span{text-transform:uppercase;font-weight:400}.wpacu-tab-nav-wrapper{border-bottom:none!important}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active{background:#fff;position:relative}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active:after{content:"";width:100%;bottom:-2px;left:0;position:absolute;border-bottom:2px solid #fff}.wpacu_hide{display:none!important}.wpacu-script-attributes-area{display:block;margin-bottom:12px}.wpacu-script-attributes-area>div:first-of-type{display:inline-block;float:left;margin-right:15px;line-height:30px;vertical-align:middle}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings{display:inline-block;float:left;padding:5px 7px!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings.wpacu-first{margin:0 15px 0 0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings label{margin:0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings li{display:inline-block;margin:0 16px 0 0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area ul.wpacu-script-attributes-settings li:last-child{margin:0 2px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings{background:#fff!important;border:1px solid #eee!important;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:5px 10px!important;list-style:none;display:inline-block;margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings input[type=radio]{width:auto;padding:0;margin:0 5px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings:hover{background:#f2faf2}tr.wpacu_location_changed>td{border-left:#004567 4px solid}tr.wpacu_not_load td,tr.wpacu_not_load th{background:#FFE1E1!important}tr.wpacu_not_load td .wpacu-assets-inline-code-wrap,tr.wpacu_not_load td .wpacu-script-attributes-area,tr.wpacu_not_load th .wpacu-assets-inline-code-wrap,tr.wpacu_not_load th .wpacu-script-attributes-area{filter:alpha(opacity=45);opacity:.45}.dashicons-wpacu{width:17px;height:17px;margin:2px 0 0;font-size:16px;text-decoration:none;color:inherit!important}.wpacu_widefat .check-column.wpacu_check{padding:10px}body[class*=wpassetcleanup] #footer-left{border-left:2px solid green;padding-left:10px}#wpassetcleanup_asset_list small{width:auto;float:none;display:inline}#wpacu_meta_box_content{width:99%}#wpacu_meta_box_content div.select select{max-width:inherit}#wpacu_meta_box_content .emoji{font-size:18px}#wpacu_meta_box_content h3{margin-left:0;padding-left:0}#wpacu_meta_box_content div.wpacu_note{padding:10px;background-color:#f5f5f5}#wpacu_meta_box_content .dashicons.dashicons-warning,#wpacu_meta_box_content .dashicons.dashicons-wordpress-alt{color:#c00}#wpacu_meta_box_content .wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content .wpacu_verified span{color:#0073aa;font-weight:700}#wpacu_meta_box_content div.wpacu_warning{border:1px solid #c00}#wpacu_meta_box_content ul.wpacu_asset_options{margin:0;padding:0}#wpacu_meta_box_content ul.wpacu_asset_options li{list-style:none;display:inline-block}#wpacu_meta_box_content ul.wpacu_asset_options label{font-weight:400;margin-right:5px;margin-top:5px;margin-bottom:5px}.wpacu-updated-frontend{font-weight:400;background-color:#fff;border-left:4px solid #46b450;border-top:1px solid #46b450;border-right:1px solid #46b450;border-bottom:1px solid #46b450;padding:9px 14px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_exception_options_area_wrap label.wpacu_bold span,.wpacu_load_regex_area_wrap label.wpacu_bold span,.wpacu_unload_regex_area_wrap label.wpacu_bold span{font-weight:600!important}.wpacu-updated-frontend span.dashicons-yes{color:#46b450;font-size:26px}#wpacu-update-front-settings-area{margin:10px 0;display:inline-block;position:relative}@media only screen and (min-width:768px){#wpacu-update-front-settings-area{position:-webkit-sticky;position:sticky;bottom:0;display:block;padding:15px 0;z-index:1000000;border-top:1px solid #cdcdcd;background:#fff}}#wpacu-updating-front-settings{display:none;position:absolute;top:20px;left:142px}.wpacu_load_regex_area_wrap label.wpacu_unload_checked span,.wpacu_unload_regex_area_wrap label.wpacu_unload_checked span{color:#d54e21}.wpacu_load_regex_area_wrap .wpacu_handle_unload_regex_input_wrap,.wpacu_unload_regex_area_wrap .wpacu_handle_unload_regex_input_wrap{margin:4px 0 0}.wpacu_load_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text],.wpacu_unload_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text]{line-height:normal;min-height:20px;min-width:300px;max-width:400px;display:inline-block;padding:4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu_load_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text].wpacu_disabled,.wpacu_unload_regex_area_wrap .wpacu_handle_unload_regex_input_wrap input[type=text].wpacu_disabled{background:#fbfafa!important;color:inherit}.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap{display:inline-block}.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap .wpacu_area_one,.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap .wpacu_area_two,.wpacu_is_global_unloaded .wpacu_exception_options_area_wrap .wpacu_load_regex_input_wrap{display:block}.wpacu_exception_options_area_wrap{display:table;background:#fff!important}.wpacu_exception_options_area_wrap textarea{line-height:normal;min-height:20px;min-width:300px;max-width:400px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu_exception_options_area_wrap textarea:focus{width:100%}.wpacu_exception_options_area_wrap textarea.wpacu_disabled{background:#fbfafa!important;color:inherit}.wpacu_exception_options_area_wrap p:first-of-type{margin-top:0}.wpacu_exception_options_area_wrap .wpacu_area_one{display:table-cell;vertical-align:top;padding-right:10px}.wpacu_exception_options_area_wrap .wpacu_area_two{display:table-cell}@media only screen and (max-width:1199px){.wpacu_exception_options_area_wrap,.wpacu_exception_options_area_wrap .wpacu_area_one,.wpacu_exception_options_area_wrap .wpacu_area_two{display:block}}#wpacu_meta_box_content .wpacu_widefat{width:100%}#wpacu_meta_box_content .wpacu-assets-collapsible-content{padding:0 10px!important}#wpacu_meta_box_content ul.wpacu_asset_options{vertical-align:middle}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area li{display:inline-block;float:left;margin:1px 25px 1px 0;line-height:20px}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area li:last-of-type{margin:1px 0}#wpacu_meta_box_content ul.wpacu_asset_options.wpacu_exception_options_area li input[type=text]{margin-left:5px;border:1px solid #e7e7e7;background:#fff}.wpacu-hardcoded-code-area{margin-bottom:8px}.wpacu-hardcoded-code-area.wpacu-has-view-more{max-height:300px;position:relative;overflow:hidden}.wpacu-hardcoded-code-area.wpacu-has-view-more p.wpacu-view-more-link-area{position:absolute;bottom:0;left:0;width:100%;margin:0;padding:20px 0 15px 15px;background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fbfbfb8c 100%);background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#fbfbfb8c 100%)}.wpacu-hardcoded-code-area pre{margin:0;padding:8px 0;white-space:pre-wrap;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-hardcoded-code-area code{font-style:italic;margin-left:2px;word-break:break-word}#wpacu_wrap_assets{color:#000!important;text-align:left!important;clear:both!important;width:90%!important;padding:20px!important;margin:30px 0 0 15px!important;border:1px solid #cdcdcd;z-index:10000!important;position:relative!important;background-color:#fff!important}#wpacu_wrap_assets div.wpacu_warning{border:1px solid #c00;padding:5px 10px}#wpacu_wrap_assets small{display:inline!important;margin:0!important;letter-spacing:normal!important}#wpacu_wrap_assets input[type=checkbox]{width:auto!important;margin-right:4px!important}#wpacu_wrap_assets img:not(.wpacu-ajax-loader){display:inline-block!important}#wpacu_wrap_assets p{line-height:22px!important;margin:10px 0!important;text-align:left!important;font-weight:400!important}#wpacu_wrap_assets p:first-child{margin:0 0 10px!important}#wpacu_wrap_assets h1{margin:0 0 20px!important;font-size:160%!important;text-align:left!important}#wpacu_wrap_assets h3{margin:20px 0;font-size:130%}#wpacu_wrap_assets ul.wpacu_asset_options.wpacu_exception_options_area li{display:inline-block;float:left;margin:1px 25px 1px 0;line-height:30px}#wpacu_wrap_assets ul.wpacu_asset_options.wpacu_exception_options_area li:last-of-type{margin:1px 0}.wpacu_verified{margin:0 0 10px!important}.wpacu_asset_row div.select{display:inline-block;width:auto}.wpacu_asset_row:first-child td{border-top:1px solid #cdcdcd}.wpacu_asset_row td{border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:1px solid #cdcdcd}.wpacu_asset_row.wpacu_notice_row td{position:relative;padding:5px;border-bottom:1px solid transparent}.wpacu_asset_row.wpacu_notice_row td div.wpacu-warning{width:auto;margin:5px;font-style:italic}.wpacu_asset_row:not(.wpacu_notice_row) td{padding:18px!important;position:relative}.wpacu_asset_row:not(.wpacu_notice_row) td.wpacu_selected,.wpacu_asset_row:not(.wpacu_notice_row) td:hover{-moz-box-shadow:inset 0 0 12px #cdcdcd;-webkit-box-shadow:inset 0 0 12px #cdcdcd;box-shadow:inset 0 0 12px #cdcdcd}.wpacu_asset_row:not(.wpacu_notice_row) td p{padding:0!important;margin-bottom:8px!important;word-wrap:break-word!important;-ms-word-break:break-all;word-break:break-word}.wpacu_asset_row:not(.wpacu_notice_row) td label{width:auto!important;margin:0!important;cursor:pointer!important;display:inline-block!important;font-size:100%!important;font-weight:400!important}.wpacu_asset_row:not(.wpacu_notice_row) td label span:not(.dashicons){font-size:100%!important}.wpacu_asset_row:not(.wpacu_notice_row) td.wpacu_check{width:50px!important}.asset-table-extra-info td{padding:5px!important}body.wp-admin .wpacu_asset_row td.wpacu_check{width:25px!important}.wpacu_asset_row .dashicons-warning,.wpacu_asset_row .dashicons-wordpress-alt{color:red!important}.wpacu_asset_row .dashicons-wordpress-alt{font-size:17px;vertical-align:middle}label.wpacu_add_global{cursor:pointer!important}label.wpacu_input_load_checked{font-weight:700;color:#d54e21}label.wpacu_global_unload_exception{font-weight:700!important}tr.wpacu_bulk_change_row.wpacu_selected,tr.wpacu_global_rule_row.wpacu_selected,tr.wpacu_remove_preload_row.wpacu_selected{background:#e7e7e7}.nav-tab-wrapper{border-bottom:1px solid #ccc;width:95%}.nav-tab-wrapper.nav-assets-manager .nav-tab{font-size:13px;font-weight:500;padding:6px 10px}.nav-tab-wrapper.nav-assets-manager .nav-tab.for-pro{padding:6px 8px 6px 3px}ul.wpacu_asset_options{margin:0 10px 0 0;padding:0}ul.wpacu_asset_options li{margin:0 10px 0 0;list-style:none;display:inline-block;line-height:normal}ul.wpacu_asset_options li.remove_rule label{font-weight:700}ul.wpacu_asset_options label{margin-right:20px;font-weight:400}ul.wpacu_asset_options label input{margin-right:4px}.wpacu_list_table{width:100%;font-weight:400}.wpacu_list_table div,.wpacu_list_table li,.wpacu_list_table p{font-weight:400}.wpacu_widefat{width:99%}.wpacu_striped>tbody>:nth-child(even),ul.wpacu_striped>:nth-child(even){background-color:#fff!important}.wpacu_striped>tbody>:nth-child(odd),ul.wpacu_striped>:nth-child(odd){background-color:#f9f9f9!important}.wpacu_update_btn{-moz-box-shadow:inset 0 1px 0 0 #54a3f7!important;-webkit-box-shadow:inset 0 1px 0 0 #54a3f7!important;box-shadow:inset 0 1px 0 0 #54a3f7!important;background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#007dc1),color-stop(1,#0061a7))!important;background:-moz-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-webkit-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-o-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-ms-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:linear-gradient(to bottom,#007dc1 5%,#0061a7 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#007dc1", endColorstr="#0061a7", GradientType=0)!important;background-color:#007dc1!important;-moz-border-radius:3px!important;-webkit-border-radius:3px!important;border-radius:3px!important;border:1px solid #124d77!important;display:inline-block!important;cursor:pointer!important;color:#fff!important;font-size:15px!important;padding:10px 24px!important;text-decoration:none!important;text-shadow:0 1px 0 #154682!important;height:auto!important;line-height:normal!important}.wpacu-btns .btn:focus,.wpacu-btns .btn:hover,.wpacu-btns a{text-decoration:none}.wpacu_update_btn.wpacu_submitting,.wpacu_update_btn:hover{background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#0061a7),color-stop(1,#007dc1))!important;background:-moz-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-webkit-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-o-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-ms-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:linear-gradient(to bottom,#0061a7 5%,#007dc1 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#0061a7", endColorstr="#007dc1", GradientType=0)!important;background-color:#0061a7!important}.wpacu_update_btn.wpacu_submitting{cursor:default!important}.wpacu_update_btn:active{position:relative!important;top:1px!important}.wpacu-btns .btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;-webkit-border-radius:.25rem;-moz-border-radius:.25rem;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wpacu-btns .btn.focus,.wpacu-btns .btn:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.25);box-shadow:0 0 0 2px rgba(2,117,216,.25)}.wpacu-btns .btn.disabled,.wpacu-btns .btn:disabled{cursor:not-allowed;opacity:.65}.wpacu-btns .btn.active,.wpacu-btns .btn:active{background-image:none}.wpacu-btns a.btn.disabled,.wpacu-btns fieldset[disabled] a.btn{pointer-events:none}.wpacu-btns .btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.wpacu-btns .btn-primary.focus,.wpacu-btns .btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-primary.disabled,.wpacu-btns .btn-primary:disabled{background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary.active,.wpacu-btns .btn-primary:active,.wpacu-btns .show>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.wpacu-btns .btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary:hover{color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.wpacu-btns .btn-secondary.focus,.wpacu-btns .btn-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-secondary.disabled,.wpacu-btns .btn-secondary:disabled{background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary.active,.wpacu-btns .btn-secondary:active,.wpacu-btns .show>.btn-secondary.dropdown-toggle{color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.wpacu-btns .btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.wpacu-btns .btn-info.focus,.wpacu-btns .btn-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-info.disabled,.wpacu-btns .btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info.active,.wpacu-btns .btn-info:active,.wpacu-btns .show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.wpacu-btns .btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.wpacu-btns .btn-success.focus,.wpacu-btns .btn-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-success.disabled,.wpacu-btns .btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success.active,.wpacu-btns .btn-success:active,.wpacu-btns .show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.wpacu-btns .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.wpacu-btns .btn-warning.focus,.wpacu-btns .btn-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-warning.disabled,.wpacu-btns .btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning.active,.wpacu-btns .btn-warning:active,.wpacu-btns .show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.wpacu-btns .btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.wpacu-btns .btn-danger.focus,.wpacu-btns .btn-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-danger.disabled,.wpacu-btns .btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger.active,.wpacu-btns .btn-danger:active,.wpacu-btns .show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.wpacu-btns .btn-outline-primary{color:#0275d8;background-image:none;background-color:transparent;border-color:#0275d8}.wpacu-btns .btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-primary.focus,.wpacu-btns .btn-outline-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-outline-primary.disabled,.wpacu-btns .btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.wpacu-btns .btn-outline-primary.active,.wpacu-btns .btn-outline-primary:active,.wpacu-btns .show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-secondary{color:#ccc;background-image:none;background-color:transparent;border-color:#ccc}.wpacu-btns .btn-outline-secondary:hover{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-secondary.focus,.wpacu-btns .btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-outline-secondary.disabled,.wpacu-btns .btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.wpacu-btns .btn-outline-secondary.active,.wpacu-btns .btn-outline-secondary:active,.wpacu-btns .show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-info{color:#5bc0de;background-image:none;background-color:transparent;border-color:#5bc0de}.wpacu-btns .btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-info.focus,.wpacu-btns .btn-outline-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-outline-info.disabled,.wpacu-btns .btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.wpacu-btns .btn-outline-info.active,.wpacu-btns .btn-outline-info:active,.wpacu-btns .show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-success{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.wpacu-btns .btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-success.focus,.wpacu-btns .btn-outline-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-outline-success.disabled,.wpacu-btns .btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.wpacu-btns .btn-outline-success.active,.wpacu-btns .btn-outline-success:active,.wpacu-btns .show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-warning{color:#f0ad4e;background-image:none;background-color:transparent;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning.focus,.wpacu-btns .btn-outline-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-outline-warning.disabled,.wpacu-btns .btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.wpacu-btns .btn-outline-warning.active,.wpacu-btns .btn-outline-warning:active,.wpacu-btns .show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-danger{color:#d9534f;background-image:none;background-color:transparent;border-color:#d9534f}.wpacu-btns .btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-outline-danger.focus,.wpacu-btns .btn-outline-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-outline-danger.disabled,.wpacu-btns .btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.wpacu-btns .btn-outline-danger.active,.wpacu-btns .btn-outline-danger:active,.wpacu-btns .show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-link{font-weight:400;color:#0275d8;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.wpacu-btns .btn-link,.wpacu-btns .btn-link.active,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:disabled{background-color:transparent}.wpacu-btns .btn-link,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{border-color:transparent}.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.go-pro-button,.wpacu-btns .btn-link:disabled:focus,.wpacu-btns .btn-link:disabled:hover{text-decoration:none}.wpacu-btns .btn-link:disabled{color:#636c72}.wpacu-btns .btn-group-lg>.btn,.wpacu-btns .btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;-webkit-border-radius:.3rem;-moz-border-radius:.3rem;border-radius:.3rem}.wpacu-btns .btn-group-sm>.btn,.wpacu-btns .btn-sm{padding:.25rem .5rem;font-size:.875rem;-webkit-border-radius:.2rem;-moz-border-radius:.2rem;border-radius:.2rem}.wpacu-btns .btn-block{display:block;width:100%}.wpacu-btns .btn-block+.btn-block{margin-top:.5rem}.wpacu-btns input[type=button].btn-block,.wpacu-btns input[type=reset].btn-block,.wpacu-btns input[type=submit].btn-block{width:100%}.wpacu-btns .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.go-pro-button{background-color:#4CAF50;border:2px solid #4CAF50;color:#fff;padding:12px 18px;text-align:center;display:inline-block;font-size:16px;margin:4px 2px;cursor:pointer;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-transition-duration:.4s;transition-duration:.4s}.go-pro-button:hover{background-color:#fff;color:#000;border:2px solid #4CAF50;text-decoration:none}.go-pro-link-no-style,.wordpress-core-file{display:inline-block;color:inherit;text-decoration:none}.wpacu-restore-pos-btn{font-size:14px!important;line-height:normal!important;height:42px!important;padding:0 18px!important;margin-top:10px!important}body.wp-admin .wpacu_asset_row .go-pro-link-no-style .wpacu-tooltip{padding:8px 2px}body.wp-admin .go-pro-link-no-style .wpacu-tooltip{text-shadow:none;font-weight:400;font-size:12px;line-height:16px;padding:8px 11px}.go-pro-link-no-style{position:relative}.go-pro-link-no-style:not(.nav-tab){font-style:italic}.go-pro-link-no-style.no-transition .wpacu-tooltip{-webkit-transition:0s all ease;transition:0s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style>img{max-width:20px;max-height:20px}.go-pro-link-no-style .wpacu-tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:160px;background-color:#00a7a7;color:#fff;text-align:center;padding:8px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-65px;-webkit-transition:.1s all ease;transition:.1s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;left:50%;left:calc(50% - 10px);border-color:#00a7a7 transparent transparent}.go-pro-link-no-style .wpacu-tooltip.wpacu-on-pages-btn{cursor:pointer;margin-left:-77px;width:130px}.go-pro-link-no-style .wpacu-tooltip.wpacu-larger{width:240px}.go-pro-link-no-style:hover .wpacu-tooltip{visibility:visible}.wpacu_list_table tr:first-child .wordpress-core-file .wpacu-tooltip{bottom:-40px;left:120px;margin-left:-86px}.wpacu_list_table tr:first-child .wordpress-core-file .wpacu-tooltip:after{top:41px;left:-20px;border-color:transparent #c00 transparent transparent}.wordpress-core-file{position:relative;font-style:normal}.wordpress-core-file .wpacu-tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:160px;background-color:#c00;color:#fff;text-align:center;padding:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-86px;-webkit-transition:.1s all ease;transition:.1s all ease;-webkit-transition-delay:0s;transition-delay:0s}.wordpress-core-file .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;left:50%;left:calc(50% - 10px);border-color:#c00 transparent transparent}.wordpress-core-file:hover .wpacu-tooltip{visibility:visible}.ajax-direct-call-error-area{background:#fff;padding:10px;border:1px solid #c00;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.ajax-direct-call-error-area td{padding:6px}.ajax-direct-call-error-area .note{margin-top:0;padding-top:0}.ajax-direct-call-error-area .error-code{color:#c00;font-weight:700}.ajax-wp-remote-post-call-error-area{background:#fff;padding:20px}.ajax-wp-remote-post-call-error-area .table-data{background:0 0;border:1px solid #c66;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.ajax-wp-remote-post-call-error-area .table-data td{padding:10px}.wrap-upgrade-info{background:#fff;padding:0 15px;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-notice{margin:20px 20px 0 0!important}.wpacu-notice p{font-weight:600!important;font-style:italic}.wpacu-notice .dashicons{font-weight:inherit!important;color:#46b450!important;margin-right:4px;vertical-align:text-bottom;font-size:27px}.wpacu-notice-info{padding:12px 12px 12px 16px;background:#fff;border-left:4px solid #008f9c}.wpacu-notice-info p{margin-top:8px}.wpacu-notice-info p:first-child{margin-top:0}.wpacu-notice-info p:last-child{margin-bottom:0}.wpacu-warning{font-size:15px;padding:10px;background:#fffcec;border:1px solid #fdd5c9;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin:0 0 5px;width:100%}.pro-page-unlock-notice{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;padding:10px;background:#f2faf2;border:1px solid #c0e8c0;width:auto;display:block}.wpacu-license-area .notice,.wpacu-settings-area .notice{margin-left:0;padding:10px!important;width:97%;box-sizing:border-box;font-weight:600;font-style:italic}.wpacu-license-area .notice .dashicons,.wpacu-settings-area .notice .dashicons{color:green}#wpacu-dom-get-type-selections,.wpacu-radio-selections{float:none;clear:both;width:auto;display:inline-block;margin-bottom:0;margin-top:0}#wpacu-dom-get-type-selections.wpacu-vertical,.wpacu-radio-selections.wpacu-vertical{display:block;margin-top:15px;margin-bottom:18px}#wpacu-dom-get-type-selections.wpacu-vertical li,.wpacu-radio-selections.wpacu-vertical li{float:none;margin-bottom:12px}#wpacu-dom-get-type-selections.wpacu-vertical li:last-child,.wpacu-radio-selections.wpacu-vertical li:last-child{margin-bottom:0}#wpacu-dom-get-type-selections li,.wpacu-radio-selections li{margin-right:30px;float:left;margin-bottom:0}#wpacu-dom-get-type-selections li:first-child,.wpacu-radio-selections li:first-child{margin-right:15px}#wpacu-dom-get-type-selections li:last-child,.wpacu-radio-selections li:last-child{margin-right:0}.wpacu_combine_loaded_js_level_area{display:none;background:0 0;border-left:2px solid #008f9c;padding-top:8px;padding-bottom:8px;padding-right:10px;padding-left:10px;margin:20px 0 15px}.wpacu_combine_loaded_js_level_area.wpacu_active{display:block}#wpacu-dom-get-type-infos{margin-bottom:0}#wpacu-dom-get-type-infos li{margin-bottom:0;line-height:20px}.wpacu-wrap li,.wpacu-wrap p,.wpacu-wrap td{font-weight:400}.wpacu-wrap small{width:auto;float:none;display:inline}.wpacu-wrap small code{font-size:inherit!important}.wpacu-wrap.wpacu-settings-show-all .wpacu-settings-tab-content{display:block;width:100%}.wpacu-wrap.wpacu-settings-show-all .wpacu-settings-area-title{color:#004567;padding:16px 15px;background:#f8f8f8;border-left:5px solid #004567b0;border-top:1px solid #e7e7e7;border-right:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;font-size:1.45em;font-weight:500}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round,.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area,.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area .submit{margin:0}.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area .button{padding:11px 28px;height:38px;font-size:18px}.wpacu-wrap.wpacu-settings-show-all #wpacu-updating-settings{margin-left:224px;top:35px;left:3px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch{width:auto;height:auto}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input{display:block}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox],.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox]{margin:0 0 3px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider:before{position:absolute;content:"";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider{background-color:#52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_disabled,.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_locked_for_pro{opacity:.3}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_disabled:before{content:"";font-family:Dashicons,Arial,"Times New Roman","Bitstream Charter",Times,serif;position:absolute;font-size:23px;top:5px;right:2px;z-index:1000}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle{margin-top:4px;line-height:1.4}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em{font-weight:200}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_read_more,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_read_more{margin-top:-10px;font-style:italic;font-size:12px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices{list-style:none;margin:0}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li{float:left;margin-right:30px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li:last-child{margin-right:0}#wpacu-assets-list-by-location-selected{background:0 0;border:1px solid #e7e7e7;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:8px;clear:both}.notice.notice-success+.wpacu-wrap.wpacu-settings-area{margin-top:20px}.wpacu-license-action-btn-area{margin-top:0;position:relative;display:inline-block}.wpacu-license-spinner{display:none;position:absolute;right:-30px;top:4px}.wpacu-license-spinner img{width:20px;height:20px}#wpacu-activation-issues-info{border-radius:10px;width:90%;margin-top:20px;font-size:14px;padding:6px 20px;background:#fff;border:1px solid #e7e7e7}#wpacu-activation-issues-info ol li{font-size:13px;margin-bottom:10px}#wpacu-mark-license-area-wrap{margin:15px 0}.wpacu-form-table.wpacu-license th{width:120px}.wpacu-form-table th{vertical-align:top;text-align:left;padding:5px 20px 20px 0;width:200px;line-height:1.3;font-weight:600}.wpacu-form-table th label{color:#23282d;font-weight:600;font-size:14px;text-shadow:none;vertical-align:middle;cursor:pointer}.wpacu-form-table td{padding-bottom:25px}.wpacu-form-table td:last-child p:last-child{margin:0}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox],.wpacu-form-table label input[type=checkbox]{height:20px;width:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:checked,.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:hover,.wpacu-form-table label input[type=checkbox]:checked,.wpacu-form-table label input[type=checkbox]:hover{border:1px solid green}.wpacu-form-table .wpacu-fancy-checkbox input[type=checkbox]:checked:before,.wpacu-form-table label input[type=checkbox]:checked:before{color:#52af00;font:400 24px/1 dashicons}.wpacu-form-table .wpacu-fancy-radio input[type=radio]{-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;position:relative;height:20px;width:20px;margin:2px 0 0}.wpacu-form-table .wpacu-fancy-radio input[type=radio]:checked,.wpacu-form-table .wpacu-fancy-radio input[type=radio]:hover{border:1px solid green}.wpacu-form-table .wpacu-fancy-radio input[type=radio]:checked:before{margin:0;line-height:inherit;text-indent:inherit;content:"";position:absolute;top:4px;left:4px;width:10px;height:10px;border-radius:50%;background:#52af00;color:#52af00;font:400 24px/1 dashicons}#wpacu-settings-vertical-tab-wrap{display:table;width:100%}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text{margin:4px 0 0}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small{font-weight:lighter}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap{position:relative;padding-left:14px}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap span.wpacu-circle-status{position:absolute;left:0;top:2px;height:10px;width:10px;border-radius:50%;display:inline-block;opacity:.75}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap span.wpacu-circle-status.wpacu-on{background:#52af00}#wpacu-settings-vertical-tab-wrap .wpacu-tab-extra-text small span.wpacu-status-wrap span.wpacu-circle-status.wpacu-off{background:#ccc}#wpacu-settings-vertical-tab-wrap *{box-sizing:border-box}.wpacu-settings-tab{display:table-cell;width:20%;height:100%;vertical-align:top}.wpacu-settings-tab a{text-decoration:none;border-left:3px solid transparent;display:block;background-color:#f1f1f1;color:#004567;padding:17px 16px;width:100%;outline:0;text-align:left;cursor:pointer;font-size:14px;font-weight:600;border-bottom:1px solid #ccc}.wpacu-settings-tab a:first-child{border-top:1px solid transparent!important}.wpacu-settings-tab a:last-child{border-bottom:1px solid transparent!important}.wpacu-settings-tab a:hover{background-color:#fff;border-left:3px solid #004567;position:relative}.wpacu-settings-tab a.active{color:#004567;background-color:#fff;border-left:3px solid #004567;position:relative;border-bottom:1px solid #ccc}.wpacu-settings-tab a.active:after{content:"";position:absolute;height:100%;width:1px;top:0;right:-1px;background-color:#fff}.wpacu-settings-tab-content{background-color:#fff;display:none;padding:12px 18px;width:79%;border-left:none;height:100%;border-top-right-radius:10px;border-bottom-right-radius:10px}.wpacu-settings-tab-content h2{padding:0 0 15px;border-bottom:1px solid #e7e7e7}.wpacu-settings-tab-content.active{display:table-cell}#wpacu_minify_css_exceptions_area,#wpacu_minify_js_exceptions_area{margin:16px 0 0}@media only screen and (min-width:768px){body.asset-cleanup-pro_page_wpassetcleanup_assets_manager #wpacu-update-button-area,body.asset-cleanup_page_wpassetcleanup_assets_manager #wpacu-update-button-area{position:-webkit-sticky;position:sticky;bottom:0;padding:0;z-index:1000000;border-top:1px solid #cdcdcd;background:#f1f1f1}.wpacu-get-help-wrap .help-content-wrap{-webkit-box-align:start;-ms-flex-align:start;-ms-grid-row-align:flex-start;align-items:flex-start}}body[class*=version-5-3] #wpacu-update-button-area .button{height:auto;padding:4px 18px 6px;font-size:15px}body[class*=version-5-3] #wpacu-updating-settings{margin-left:178px}#wpacu-update-button-area{position:relative;margin-left:20%}#wpacu-update-button-area.no-left-margin{margin-left:0}#wpacu-update-button-area .submit{margin:0;padding:19px 0}#wpacu-update-button-area .button{padding:5px 18px;height:38px;font-size:15px}#wpacu-updating-settings{position:absolute;margin-left:183px;top:28px;display:none}#combine_loaded_js_info_area{position:relative}#combine_loaded_js_info_area.locked-for-pro:before{position:absolute;content:"";height:100%;width:100%;background:#fff;opacity:.5;z-index:10000}.google_fonts_load_types{clear:both;margin:20px 0 15px;display:flex}.google_fonts_load_types>div{text-align:left}.google_fonts_load_types>div input{float:left;margin:0 7px 20px 0!important}.wpacu-sub-tabs-wrap{min-width:320px;margin:0 auto}.wpacu-sub-tabs-wrap input.wpacu-nav-input{display:none}.wpacu-sub-tabs-wrap label.wpacu-nav-label{display:inline-block;margin:0 0 -1px;padding:15px 25px;font-weight:600;text-align:center;color:#74777b;border-left:1px solid transparent;border-right:1px solid transparent;border-top:3px solid transparent;border-bottom:0}.wpacu-sub-tabs-wrap label.wpacu-nav-label:hover{cursor:pointer}.wpacu-sub-tabs-wrap input.wpacu-nav-input:checked+label.wpacu-nav-label{color:#004567;border-left:1px solid #ccc;border-right:1px solid #ccc;border-top:3px solid #004567;border-bottom:1px solid #fff}.wpacu-sub-tabs-wrap section{display:none;padding:20px 0 0;border-top:1px solid #ccc}#wpacu-google-fonts-optimize-tab-item:checked~#wpacu-google-fonts-optimize-tab-item-area,#wpacu-google-fonts-remove-tab-item:checked~#wpacu-google-fonts-remove-tab-item-area{display:block}body.wp-admin .wpacu-handle-notes p{margin-top:0!important}body.wp-admin .wpacu-handle-notes p a{font-size:inherit}body.wp-admin .wpacu-handle-notes p a span.dashicons{font-size:19px;width:19px;height:19px;vertical-align:bottom;text-decoration:none}.wpacu-handle-notes{padding-top:5px;margin-bottom:-10px;border-top:1px solid #e7e7e7}.wpacu-handle-notes .wpacu-handle-notes-field{display:none}.wpacu-handle-notes .wpacu-handle-notes-field>textarea{font-size:85%;padding:6px;width:320px;max-width:100%}.wpacu-handle-notes p{margin:10px 0 0!important}.wpacu-handle-notes p a.wpacu-add-handle-note{text-decoration:none;font-size:80%;display:inline-block;color:inherit}.wpacu-handle-notes p a.wpacu-add-handle-note span.dashicons{font-size:18px;width:18px;height:18px}.wrap_bulk_unload_options{width:auto;display:block;clear:both}.wrap_bulk_unload_options .wpacu_asset_options_wrap{display:inline-block;float:left;margin:5px 10px 14px 0!important;padding:8px 10px 12px!important}.wrap_bulk_unload_options .wpacu_asset_options_wrap .wpacu_slider_text{position:relative!important;vertical-align:top;left:inherit!important;top:inherit!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch{position:relative;display:inline-block;min-width:52px;width:52px;height:29px;margin-right:5px!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input{display:none}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.15s;transition:.15s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider:before{position:absolute;content:"";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.15s;transition:.15s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider{background-color:#C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch.wpacu_disabled{opacity:.3}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch.wpacu_disabled:before{content:"";font-family:Dashicons,Arial,"Times New Roman","Bitstream Charter",Times,serif;position:absolute;font-size:23px;top:1px;right:2px;z-index:1000}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_slider_text{position:absolute;left:62px;top:3px}.wpacu-wrap{width:98%}.wpacu-wrap tr.wpacu_regex_rule_row{opacity:.45}.wpacu-wrap tr.wpacu_regex_rule_row textarea{line-height:normal;min-height:20px;min-width:400px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu-wrap tr.wpacu_regex_rule_row textarea:focus{width:100%}.wpacu-wrap tr.wpacu_regex_rule_row.wpacu_enabled{opacity:1}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small{position:relative;display:inline-block;min-width:30px;width:30px;height:17px;margin-right:5px!important}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.15s;transition:.15s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider:before{position:absolute;content:"";height:13px;width:13px;left:2px;bottom:2px;background-color:#fff;-webkit-transition:.15s;transition:.15s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input:checked+.wpacu_slider{background-color:#52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small input:checked+.wpacu_slider:before{-webkit-transform:translateX(13px);-ms-transform:translateX(13px);transform:translateX(13px)}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider.wpacu_round{border-radius:17px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch_small .wpacu_slider.wpacu_round:before{border-radius:50%}.editor-post-saved-state.is-wpacu-reloading{animation:edit-post__loading-fade-animation .5s infinite}body.wp-admin .wpacu_asset_row.wpacu-loading{position:relative}body.wp-admin .wpacu_asset_row.wpacu-loading .wpacu-ajax-loader{display:block!important}body.wp-admin .wpacu_asset_row .wpacu-ajax-loader{display:none;width:58px;height:58px;position:absolute;bottom:0;right:0;opacity:.75}.wpacu_asset_row>td{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all}.wpacu_asset_row input{width:auto;height:auto;min-height:16px}.wpacu_asset_row .tip{background:inherit;border-left:4px solid #e7e7e7;margin:0 0 5px;padding:7px;font-style:italic;font-size:small;line-height:1.4}.wpacu_asset_row td{width:100%;text-align:left}.wpacu_asset_row td p:last-child{margin-bottom:0!important}.wpacu_asset_row td .wpacu_asset_options_wrap{padding:8px 10px;margin:15px 0;background:#fff;border:1px solid #eee;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_asset_row td .wpacu_asset_options_wrap p:first-child{margin-top:0;margin-bottom:8px!important}.wpacu_asset_row p.wpacu_handle{margin-top:0}.wpacu_asset_row li.wpacu_unload_this_page{display:block!important;position:relative}.wpacu-clearfix:after,.wpacu-clearfix:before{display:table;content:""}.wpacu-contract-expand-area{width:100%;margin:20px 0 0}.wpacu-contract-expand-area .col-left{float:left}.wpacu-contract-expand-area .col-left h4{margin-bottom:0}.wpacu-contract-expand-area .col-right{float:right}.wpacu-clearfix{clear:both;height:0}.wpacu-clearfix:after{clear:both}.wpacu-wp-button{color:#555;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;vertical-align:top}body.wp-admin .wpacu-wp-button{font-size:13px;line-height:26px;height:28px}.wpacu-wp-button.wpacu-wp-button-secondary{display:inline-block;text-decoration:none;height:auto;margin:0 5px 0 0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wpacu-wp-button:hover{background:#fafafa;border-color:#999;color:#23282d}.distinguish-asset-list{list-style:none;margin-left:0;margin-bottom:5px;display:inline-block}.distinguish-asset-list li{float:left;margin-right:20px}.distinguish-asset-list li:last-child{margin-right:0}body[class*=asset-cleanup-pro] a.wpacu-plugin-contracted-wrap-link{padding:16px 6px 16px 41px!important}body[class*=asset-cleanup-pro] .wpacu-area-open .wpacu-plugin-toggle-all{font-size:12px!important;width:calc(100% - 26px)!important}body.wp-admin .wpacu-area-expanded .wpacu-plugin-toggle-all{top:5px}body.wp-admin .wpacu-area-expanded .wpacu-plugin-toggle-all ul li{font-size:12px!important}.wpacu-assets-collapsible-wrap{border:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location{margin-bottom:15px}.wpacu-assets-collapsible-wrap.wpacu-wrap-all{margin-top:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-area{margin-top:10px}.wpacu-assets-collapsible-wrap.wpacu-by-location>a.wpacu-assets-collapsible{padding:15px 15px 15px 43px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu_list_table{border-width:0;margin:0;border-spacing:inherit;width:100%;box-shadow:3px 3px 2px #ddd;border-bottom-right-radius:5px;border-top-right-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-name{font-weight:600}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-version{font-weight:200}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area[data-wpacu-plugin=oxygen] .icon-area{border-radius:50%}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all{display:inline-block;padding:0;font-size:13px;width:100%;width:calc(100% + 46px);min-width:250px;position:absolute;left:100%;left:calc(100% + 6px);margin:0;top:4px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all ul{display:inline-block;margin:0;list-style:none;padding-left:13px;padding-top:0}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all ul li{padding:0;margin:0;line-height:normal;font-size:14px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all ul li:first-child{font-style:italic;margin-bottom:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{display:inline;position:relative;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title:after{content:"";position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap{padding:0 0 10px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open.wpacu-plugin-assets-last{margin-bottom:18px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all{display:inline-block;padding:7px 12px 8px;font-size:14px;width:100%;text-align:left;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open .wpacu-plugin-toggle-all-wrap .wpacu-plugin-toggle-all+.wpacu-plugin-toggle-all{padding:2px 12px 10px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link{color:inherit;text-decoration:none;font-weight:inherit;font-style:inherit;font-size:105%;line-height:initial;height:auto;margin:14px 0 0;padding:13px 6px 14px 39px;position:relative;display:block}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:after{position:absolute;font-size:18px;font-family:Dashicons;right:12px;top:14px;content:""}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-open:after{content:""}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-closed{border:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:hover{border:1px solid #878787;background:#f9f9f9}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:hover.wpacu-link-closed{box-shadow:3px 3px 2px #ddd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-open{border-top:1px solid #cdcdcd;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:none}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-closed.wpacu-last-wrap-link{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default{top:10px;left:10px;width:30px;height:30px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default .icon-area{width:30px;height:30px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default .icon-area:before{font-size:22px;line-height:22px;top:4px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .wpacu-area-title{position:relative;padding:17px 10px 16px 46px;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .wpacu-area-title:after{content:"";position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-area-last{margin-bottom:18px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-area-open{padding:0;max-height:100%}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-area-closed{padding:0;overflow:hidden;max-height:0}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{margin-top:0;margin-bottom:-1px;padding:14px 10px 16px 12px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title.wpacu-theme-has-icon{padding:18px 10px 16px 58px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area{margin-top:22px;margin-bottom:-1px;font-size:110%;line-height:initial}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area.wpacu-location-child-area-first{margin-top:2px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area.wpacu-area-expanded .wpacu-area-title{display:inline-block;z-index:1;padding:17px 10px 16px 46px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{display:inline;border-top-right-radius:8px;border-top-left-radius:8px;background-color:#f9f9f9;border-left:1px solid #cdcdcd;border-top:1px solid #cdcdcd;border-bottom:1px solid transparent;border-right:1px solid #cdcdcd;position:relative}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon){color:#b4b9be;background-color:#eee;box-shadow:inset 0 0 10px rgba(160,165,170,.15);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon) .icon-area:before{content:"";font-family:Dashicons;position:absolute;font-size:28px;line-height:28px;top:5px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-theme{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-theme .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-wp_core{border:1px solid #c00}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content{padding:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table{width:100%;margin:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td{border-left:hidden;border-right:hidden;border-bottom:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child{margin-bottom:0!important}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child{border-bottom:hidden}a.wpacu-assets-collapsible{color:#000;font-size:20px;text-decoration:none;display:block;position:relative;background-color:#f1f3f8;cursor:pointer;padding:15px 15px 15px 36px;width:auto;border:none;text-align:left;outline:0}a.wpacu-assets-collapsible>span.dashicons{font-size:25px;line-height:normal;position:absolute;top:15px;top:calc(50% - 21px);left:22px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-collapsible:hover{background-color:#f1f3f8;text-decoration:none}a.wpacu-assets-collapsible:after{position:absolute;font-size:22px;font-family:Dashicons;right:14px;top:16px}a.wpacu-assets-collapsible:not(.wpacu-assets-collapsible-active):after{content:""}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active{background-color:#f1f3f8}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active:after{content:""}.wpacu-assets-collapsible-content{padding:0 16px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-collapsible-content .wpacu-assets-note{margin:0;padding:15px 15px 10px}.wpacu-assets-collapsible-content>div:not(.wpacu-assets-table-list-wrap){padding:16px 0 0}.wpacu-assets-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-collapsible-content.wpacu-open{max-height:100%}a.wpacu-assets-inline-code-collapsible{color:inherit;font-size:14px;text-decoration:none;display:inline-block;position:relative;cursor:pointer;width:auto;outline:0;background:#f1f3f8;border:1px solid #cdcdcd;padding:4px 21px 4px 8px;margin:0 0 0 6px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}a.wpacu-assets-inline-code-collapsible:hover{border:1px solid #5c5c5c}a.wpacu-assets-inline-code-collapsible:after{position:absolute;font-size:15px;font-family:Dashicons;right:-3px;top:-1px;width:14px;height:14px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-inline-code-collapsible:not(.wpacu-assets-inline-code-collapsible-active):after{content:""}a.wpacu-assets-inline-code-collapsible.wpacu-assets-inline-code-collapsible-active:after{content:""}.wpacu-assets-inline-code-collapsible-content{font-size:80%;padding:0 8px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-inline-code-collapsible-content>div{padding:7px 8px 0}.wpacu-assets-inline-code-collapsible-content>div>p{line-height:normal!important}.wpacu-assets-inline-code-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-inline-code-collapsible-content.wpacu-open{max-height:100%}.wpacu_asset_row p div.select{display:inline-block}.wpacu-wrap-choose-position{display:inline}.wpacu-wrap-choose-position>div{display:inline-block}.wpacu-wrap-choose-position select{width:auto;font-size:inherit;display:inline;margin-left:6px;margin-right:4px}.wpacu-wrap-choose-position>.select>.select{display:inline}.wpacu-wrap-choose-position>.select>.select select{padding-right:30px}.wpacu-wrap-choose-position>.select>.select:after{right:15px;top:-4px}.wpacu_handle_unload_regex_input_wrap,.wpacu_load_regex_input_wrap{display:block;width:100%}.wpacu_handle_unload_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea,.wpacu_load_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea{line-height:normal;min-height:20px;min-width:300px;max-width:400px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.wpacu_handle_unload_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea:focus,.wpacu_load_regex_input_wrap .wpacu_regex_rule_area .wpacu_regex_rule_textarea:focus{width:100%}body.logged-in:not(.wp-admin) .wpacu-view-more-code{box-shadow:inset 0 1px 0 0 #fff;background:linear-gradient(to bottom,#f9f9f9 5%,#e9e9e9 100%);background-color:#f9f9f9;border-radius:6px;border:1px solid #dcdcdc;display:inline-block;cursor:pointer;color:#666;font-size:inherit;font-weight:700;padding:6px 24px;text-decoration:none;text-shadow:0 1px 0 #fff}body.logged-in:not(.wp-admin) .wpacu-view-more-code:hover{background:linear-gradient(to bottom,#e9e9e9 5%,#f9f9f9 100%);background-color:#e9e9e9}body.logged-in:not(.wp-admin) .wpacu-view-more-code:active{position:relative;top:1px}.wpacu_table_wrap{margin:20px 0 0}.wpacu_table_wrap>table{border:1px solid #cdcdcd}.wpacu_table_wrap .table{width:100%;max-width:100%;margin-bottom:1rem;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu_table_wrap .table td,.wpacu_table_wrap .table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.wpacu_table_wrap .table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.wpacu_table_wrap .table tbody+tbody{border-top:2px solid #eceeef}.wpacu_table_wrap .table .table{background-color:#fff}.wpacu_table_wrap .table-sm td,.wpacu_table_wrap .table-sm th{padding:.3rem}.wpacu_table_wrap .table-bordered,.wpacu_table_wrap .table-bordered td,.wpacu_table_wrap .table-bordered th{border:1px solid #eceeef}.wpacu_table_wrap .table-bordered thead td,.wpacu_table_wrap .table-bordered thead th{border-bottom-width:2px}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(even){background-color:#f9f9f9}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(odd){background-color:#fff}.wpacu_table_wrap .table-active,.wpacu_table_wrap .table-active>td,.wpacu_table_wrap .table-active>th,.wpacu_table_wrap .table-hover .table-active:hover,.wpacu_table_wrap .table-hover .table-active:hover>td,.wpacu_table_wrap .table-hover .table-active:hover>th,.wpacu_table_wrap .table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.wpacu_table_wrap .table-success,.wpacu_table_wrap .table-success>td,.wpacu_table_wrap .table-success>th{background-color:#dff0d8}.wpacu_table_wrap .table-hover .table-success:hover,.wpacu_table_wrap .table-hover .table-success:hover>td,.wpacu_table_wrap .table-hover .table-success:hover>th{background-color:#d0e9c6}.wpacu_table_wrap .table-info,.wpacu_table_wrap .table-info>td,.wpacu_table_wrap .table-info>th{background-color:#d9edf7}.wpacu_table_wrap .table-hover .table-info:hover,.wpacu_table_wrap .table-hover .table-info:hover>td,.wpacu_table_wrap .table-hover .table-info:hover>th{background-color:#c4e3f3}.wpacu_table_wrap .table-warning,.wpacu_table_wrap .table-warning>td,.wpacu_table_wrap .table-warning>th{background-color:#fcf8e3}.wpacu_table_wrap .table-hover .table-warning:hover,.wpacu_table_wrap .table-hover .table-warning:hover>td,.wpacu_table_wrap .table-hover .table-warning:hover>th{background-color:#faf2cc}.wpacu_table_wrap .table-danger,.wpacu_table_wrap .table-danger>td,.wpacu_table_wrap .table-danger>th{background-color:#f2dede}.wpacu_table_wrap .table-hover .table-danger:hover,.wpacu_table_wrap .table-hover .table-danger:hover>td,.wpacu_table_wrap .table-hover .table-danger:hover>th{background-color:#ebcccc}.wpacu_table_wrap .thead-inverse th{color:#fff;background-color:#292b2c}.wpacu_table_wrap .thead-default th{color:#464a4c;background-color:#eceeef}.wpacu_table_wrap .table-inverse{color:#fff;background-color:#292b2c}.wpacu_table_wrap .table-inverse td,.wpacu_table_wrap .table-inverse th,.wpacu_table_wrap .table-inverse thead th{border-color:#fff}.wpacu_table_wrap .table-inverse.table-bordered,.wpacu_table_wrap .table-responsive.table-bordered{border:0}.wpacu_table_wrap .table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr:not(.wpacu-top):hover td{border-top:1px solid #ccd0d4;border-bottom:1px solid #ccd0d4}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr:not(.wpacu-top):hover td:first-of-type{border-left:1px solid #ccd0d4}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr:not(.wpacu-top):hover td:last-of-type{border-right:1px solid #ccd0d4}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr td{font-size:14px;border-top:1px solid transparent;border-bottom:1px solid transparent}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr td:first-of-type{border-left:1px solid transparent}body.wp-admin[class*=asset-cleanup] .wpacu-overview-wrap .wpacu-overview-list-table tr td:last-of-type{border-right:1px solid transparent}body.wp-admin[class*=asset-cleanup] table.wp-list-table:not(.wpacu-overview-list-table) tr:not(:first-of-type):not(.wpacu_selected):hover,body.wp-admin[class*=asset-cleanup] table.wp-list-table:not(.wpacu-overview-list-table).wpacu-list-table tr:not(.wpacu_selected):hover{-moz-box-shadow:inset 0 0 2px 1px #b3b3b3;-webkit-box-shadow:inset 0 0 2px 1px #B3B3B3;box-shadow:inset 0 0 2px 1px #B3B3B3}.wp-list-table .wpacu_remove_global_attr_row.wpacu_selected,.wp-list-table .wpacu_restore_position_row.wpacu_selected{background:#e7e7e7!important}ul.hire-reasons{margin-bottom:20px}ul.hire-reasons li{font-size:14px;line-height:22px;margin-bottom:12px}ul.hire-reasons li .dashicons{font-size:23px;line-height:23px}ul.hire-reasons li .dashicons.dashicons-yes{color:green}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label.wpacu_plugin_unload_rule_input_checked,#wpacu-warning-read span.dashicons-warning,#wpacu-warning-read span.dashicons-wordpress-alt{color:#c00}ol.getting-started li{font-size:14px;line-height:22px;margin-bottom:8px}.wpacu-get-help-wrap p{font-size:14px}.wpacu-get-help-wrap .help-content-wrap{margin:20px 0 25px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-moz-flex;display:-webkit-flex;display:flex;width:100%}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.wpacu-get-help-wrap .help-content-wrap .help-content{padding:15px;background:#fff;border:1px solid #E0E0E0;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;box-shadow:2px 3px 8px 0 #231f2038;flex:1 1 50%;margin-bottom:10px}.wpacu-get-help-wrap .help-content-wrap .help-content .content-title{margin:5px 0 15px}.wpacu-get-help-wrap .help-content-wrap .help-content .cols-wrap{width:100%;margin:0 auto;display:table}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area{margin:5px 0 0;position:relative}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-left{float:left;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-right{float:right;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.activate-plugin img{max-width:280px}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area img{width:99%;margin:8px 0;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{order:2}@media only screen and (min-width:768px){.wpacu-get-help-wrap .help-content-wrap .help-content{margin-right:24px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{margin-right:0}}.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{order:1}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{margin-bottom:30px}}.wpacu-get-help-wrap .help-content-wrap .help-content ul{list-style:none;padding-left:0}.wpacu-get-help-wrap .help-content-wrap .help-content ul li{font-size:14px;line-height:22px;margin-bottom:15px}.wpacu-get-help-wrap .help-content-wrap .help-content p:last-child,.wpacu-get-help-wrap .help-content-wrap .help-content ul li:last-child{margin-bottom:0}#wpacu-license-data-remove-area{display:none;margin:10px 0 25px}#wpacu-license-data-remove-area.wpacu-visible{display:block}span#wpacu-license-data-removed-msg{display:block;padding-left:26px}#wpacu-warning-read{display:none;margin:10px 0}#wpacu-warning-read.wpacu-visible{display:block}#wpacu-reset-submit-area{margin:10px 0;clear:both}#wpacu-reset-submit-btn{margin:10px 0 0}.wpacu-tools-area{margin:10px 20px 0 2px}.wpacu-tools-area .wpacu-tools-container{background:#fff;padding:15px;border:1px solid #cdcdcd;width:96%}.wpacu-tools-area .wpacu-tools-container form>div:first-child{margin:0 0 10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning{display:none;box-sizing:border-box;margin-top:10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p{margin:0 0 10px;line-height:22px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p:only-child{margin:0}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning ul{font-size:13px;list-style-type:disc;padding-left:30px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning.wpacu-visible{display:block}.wpacu-tools-area .wpacu-export-import-area{padding:10px}.wpacu-tools-area .wpacu-export-import-area form>p:first-of-type{margin-top:0}.wpacu-tools-area .wpacu-export-import-area form>p:last-of-type{margin-bottom:0}.wpacu-tools-area .wpacu-export-import-area:hover{background:rgba(40,44,42,.05);box-shadow:inset 0 0 10px rgba(160,165,170,.15)}.wpacu-tools-area .wpacu-export-import-area+hr{display:block;height:1px;border:0;border-top:1px solid #cdcdcd;margin:10px 0;padding:0}#wpacu-import-form button.wpacu-importing img.wpacu-spinner{display:inline-block}#wpacu-import-form button img.wpacu-spinner{display:none;margin:0 0 0 5px;height:16px;width:16px;vertical-align:middle}.wpacu-about-wrap .wpacu-about-text img{width:auto;height:150px;position:absolute;top:20px;right:-20px}@media only screen and (max-width:767px){.wpacu-about-wrap h1{margin:20px}.wpacu-about-wrap .wpacu-about-text img{display:none}.wpacu-about-wrap .wpacu-about-text{margin:20px}}.wpacu-about-wrap .about-wrap-content .area-title{font-size:19px;line-height:19px;margin-bottom:0}.wpacu-about-wrap hr{margin:10px 0}.wpacu-lite-vs-pro-wrap ul{display:flex;top:0;z-index:10;padding-bottom:14px}.wpacu-lite-vs-pro-wrap li{list-style:none;flex:1}.wpacu-lite-vs-pro-wrap li:last-child{border-right:1px solid #DDD}.wpacu-lite-vs-pro-wrap button{width:100%;border:1px solid #DDD;border-right:0;border-top:0;padding:10px;background:#FFF;font-size:14px;font-weight:700;height:60px;color:#999}.wpacu-lite-vs-pro-wrap li.active button{background:#F5F5F5;color:#000}.wpacu-lite-vs-pro-wrap table{border-collapse:collapse;table-layout:fixed;width:100%}.wpacu-lite-vs-pro-wrap th{background:inherit}.wpacu-lite-vs-pro-wrap tr.first{background:inherit;font-size:18px}.wpacu-lite-vs-pro-wrap tr.first .bg-lite{border-top:4px solid #6d6e70;background:#fff;color:#6d6e70}.wpacu-lite-vs-pro-wrap tr.first .bg-pro{border-top:4px solid green;background:#fff;color:green}.wpacu-lite-vs-pro-wrap tr:not(.first){background:#fff}.wpacu-lite-vs-pro-wrap tr:not(:last-child):hover{background:#f8f8f8}.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{height:53px;line-height:22px;border:1px solid #DDD;padding:10px 16px;empty-cells:show;text-align:left}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{font-size:14px}}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{text-align:center;display:none}.wpacu-lite-vs-pro-wrap td.default{display:table-cell}.wpacu-lite-vs-pro-wrap .txt-l{font-size:28px;font-weight:700}.wpacu-lite-vs-pro-wrap .txt-top{position:relative;top:-9px;left:-2px}.wpacu-lite-vs-pro-wrap svg{width:18px;height:18px}.wpacu-lite-vs-pro-wrap svg path{fill:green}.wpacu-lite-vs-pro-wrap .tick{color:#2CA01C}.wpacu-lite-vs-pro-wrap .tick img{fill:#2CA01C}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap .txt-l{font-size:20px}.wpacu-lite-vs-pro-wrap .tick{font-size:15px}}.wpacu-lite-vs-pro-wrap .na{font-size:18px;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.wpacu-lite-vs-pro-wrap .hide{border:0;background:0 0}.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{display:table-cell!important;width:auto}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{width:130px}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap .na{font-size:15px}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{width:42px}}@media only screen and (min-width:768px){.wpacu-lite-vs-pro-wrap td .button{font-size:16px!important}}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap td .button{font-size:14px!important;padding:0 20px!important}.wpacu-lite-vs-pro-wrap td .button.button-primary{margin-top:6px;margin-bottom:14px}}@media only screen and (min-width:768px){.wpacu-lite-vs-pro-wrap{margin-bottom:40px;clear:both}}.wpacu-video-areas>div{padding:20px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-video-areas>div:nth-child(odd){background:#fff}.wpacu-video-areas>div:nth-child(even){background:inherit}@media only screen and (min-width:1200px){.wpacu-video-areas .wpacu-video-area-wrapper{margin:0 0 15px;display:flex}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right{padding:0 20px 0 25px}}@media only screen and (min-width:992px) and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper{margin:0 0 40px}}.wpacu-video-areas .wpacu-video-area-wrapper ol{font-size:14px}.wpacu-video-areas .wpacu-video-area-wrapper ul{font-size:14px;list-style:disc;margin-left:22px}@media only screen and (min-width:1200px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right p:first-child{margin-top:0}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right p:last-child{margin-bottom:0}}@media only screen and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper iframe{width:560px;height:315px}@media only screen and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%}}#wpassetcleanup_asset_list.postbox h2{padding-left:52px!important;position:relative}#wpassetcleanup_asset_list.postbox h2:before{content:"";position:absolute;background-image:url(images/wpacu-logo-transparent-bg-v1.png);background-size:cover;top:6px;left:13px;width:33px;height:26px;opacity:.8;-webkit-filter:grayscale(100%);filter:grayscale(100%)}body.wp-admin .wpacu-modal{display:none;position:fixed;z-index:1000000;padding-top:15%;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4)}body.wp-admin .wpacu-modal-content{background-color:#fefefe;margin:auto;padding:20px;border:1px solid #888;width:80%;max-width:600px;border-radius:10px}body.wp-admin .wpacu-close{color:#aaa;float:right;font-size:28px;font-weight:700}body.wp-admin .wpacu-close:focus,body.wp-admin .wpacu-close:hover{color:#000;text-decoration:none;cursor:pointer}.wpacu-bulk-changes-tabs{display:table;position:relative;overflow:hidden;margin:0;width:100%}.wpacu-bulk-changes-tabs li{border-top:1px solid rgba(40,44,42,.1);border-left:1px solid rgba(40,44,42,.1);border-bottom:1px solid rgba(40,44,42,.1);float:left;line-height:38px;padding:0;position:relative;margin-bottom:12px}.wpacu-bulk-changes-tabs li:last-child{border-right:1px solid rgba(40,44,42,.1)}.wpacu-bulk-changes-tabs a{position:relative;background:rgba(40,44,42,.05);color:#004567;font-size:14px;font-weight:500;display:block;letter-spacing:0;outline:0;padding:6px 20px;text-decoration:none;border-top:3px solid transparent}.wpacu-bulk-changes-tabs a:hover{background:#f1f1f1;border-top:3px solid transparent}.wpacu-bulk-changes-tabs .current a{background:#fff;border-top:3px solid #004567}.wpacu-bulk-changes-tabs .current a:hover{background:#fff}.wpacu-bulk-changes-tabs .current a:after,.wpacu-bulk-changes-tabs .current a:before{top:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.wpacu-bulk-changes-tabs .current a:after{border-color:rgba(136,183,213,0);border-top-color:#fff;border-width:12px;margin-left:-12px}.wpacu-bulk-changes-tabs .current a:before{border-color:rgba(194,225,245,0);border-top-color:rgba(40,44,42,.1);border-width:13px;margin-left:-13px}img.wpacu-emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;box-shadow:none!important}#wpacu-plugins-load-manager-wrap table td{border-bottom:1px solid #e7e7e7}#wpacu-plugins-load-manager-wrap table td.wpacu_plugin_icon{padding:14px 10px}#wpacu-plugins-load-manager-wrap table td.wpacu_plugin_details{vertical-align:middle;padding:10px 0 10px 8px}#wpacu-plugins-load-manager-wrap table td.wpacu_plugin_details .wpacu_plugin_title{font-weight:600}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options{width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap{flex-grow:1;margin:0 16px 0 0!important;padding:8px 10px 6px 0!important}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules{margin:0;vertical-align:middle}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label{vertical-align:top}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label input[type=radio].wpacu_plugin_load_it:before{background-color:green}#wpacu-plugins-load-manager-wrap .wrap_plugin_unload_rules_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label input[type=radio].wpacu_plugin_unload_rule_input:before{background-color:#c00}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options{padding-top:5px;border-top:1px solid #e7e7e7;width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap{flex-grow:1;margin:0 16px 0 0!important;padding:6px 10px 6px 0!important}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules{margin:0;vertical-align:middle}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules label{vertical-align:top}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules.wpacu_exception_options_area li{display:inline-block;float:left;margin:1px 25px 1px 0;line-height:20px}#wpacu-plugins-load-manager-wrap .wrap_plugin_load_exception_options .wpacu_plugin_rules_wrap ul.wpacu_plugin_rules.wpacu_exception_options_area li:last-of-type{margin:1px 0}.wpacu-list-table.plugins{width:98%;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}#wpacu-plugins-load-manager-wrap .help_link{text-decoration:none;color:inherit;vertical-align:middle}#wpacu-plugins-load-manager-wrap .help_link.unload_it_regex{vertical-align:top}#wpacu-plugins-load-manager-wrap .wpacu_plugin_details .wpacu_plugin_path{font-style:italic;color:grey}#wpacu-plugins-load-manager-wrap .wpacu_plugin_icon>img{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}#wpacu-plugins-load-manager-wrap .wpacu_plugin_icon>div{background:#efefef;border:#cdcdcd;border-radius:3px;width:40px;height:40px;vertical-align:middle;position:relative;text-align:center}#wpacu-plugins-load-manager-wrap .wpacu_plugin_icon>div>span{font-size:30px;color:#b3b3b3;top:50%;vertical-align:middle;left:50%;transform:translate(-50%,-50%);width:30px;height:30px;position:absolute}#wpacu-plugins-load-manager-wrap .wpacu_exception_options_area textarea,#wpacu-plugins-load-manager-wrap textarea:focus{width:100%}#wpacu-plugins-load-manager-wrap .wpacu_plugin_unload_regex_input_wrap{display:block}#wpacu-plugins-load-manager-wrap .wpacu_plugin_unload_regex_input_wrap textarea{margin-top:6px;min-width:400px}#wpacu-plugins-load-manager-wrap textarea{line-height:normal;min-height:20px;min-width:300px;display:inline-block;padding:2px 4px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}#wpacu-plugins-load-manager-wrap textarea.wpacu_disabled{background:#fbfafa!important;color:inherit}
assets/sweetalert/LICENSE.md ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014-present Tristan Edwards
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
assets/sweetalert/README.md ADDED
@@ -0,0 +1,220 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <p align="center">
2
+ <a href="http://sweetalert.js.org">
3
+ <img alt="SweetAlert" src="https://raw.githubusercontent.com/t4t5/sweetalert/e3c2085473a0eb5a6b022e43eb22e746380bb955/assets/logotype.png" width="300">
4
+ </a>
5
+ </p>
6
+
7
+ <p align="center">
8
+ A beautiful replacement for JavaScript's "alert"
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://badge.fury.io/js/sweetalert"><img src="https://badge.fury.io/js/sweetalert.svg" alt="npm version" height="18"></a>
13
+ <a href="https://travis-ci.org/t4t5/sweetalert"><img src="https://travis-ci.org/t4t5/sweetalert.svg" alt="Build status" /></a>
14
+ <a href="https://www.npmjs.com/package/sweetalert">
15
+ <img src="https://img.shields.io/npm/dm/sweetalert.svg" />
16
+ </a>
17
+ <a href="https://github.com/t4t5/sweetalert/blob/master/LICENSE">
18
+ <img src="https://img.shields.io/github/license/t4t5/sweetalert.svg" />
19
+ </a>
20
+ <a href="#backers" alt="sponsors on Open Collective"><img src="https://opencollective.com/SweetAlert/backers/badge.svg" /></a> <a href="#sponsors" alt="Sponsors on Open Collective"><img src="https://opencollective.com/SweetAlert/sponsors/badge.svg" /></a>
21
+ </p>
22
+
23
+ <p align="center">
24
+ <img alt="A success modal" src="https://raw.githubusercontent.com/t4t5/sweetalert/e3c2085473a0eb5a6b022e43eb22e746380bb955/assets/swal.gif">
25
+ </p>
26
+
27
+
28
+ ## Installation
29
+
30
+ ```bash
31
+ $ npm install --save sweetalert
32
+ ```
33
+
34
+ ## Usage
35
+
36
+ ```javascript
37
+ import swal from 'sweetalert';
38
+
39
+ swal("Hello world!");
40
+ ```
41
+
42
+ ## Upgrading from 1.X
43
+
44
+ Many improvements and breaking changes have been introduced in the 2.0 release. Make sure you read the [upgrade guide](https://sweetalert.js.org/guides/#upgrading-from-1x) to avoid nasty suprises!
45
+
46
+ ## Guides
47
+
48
+ - [Installation](https://sweetalert.js.org/guides/#installation)
49
+ - [Getting started](https://sweetalert.js.org/guides/#getting-started)
50
+ - [Advanced examples](https://sweetalert.js.org/guides/#advanced-examples)
51
+ - [Using with libraries](https://sweetalert.js.org/guides/#using-with-libraries)
52
+ - [Upgrading from 1.X](https://sweetalert.js.org/guides/#upgrading-from-1x)
53
+
54
+ ## Documentation
55
+
56
+ - [Configuration](https://sweetalert.js.org/docs/#configuration)
57
+ - [Methods](https://sweetalert.js.org/docs/#methods)
58
+ - [Theming](https://sweetalert.js.org/docs/#theming)
59
+
60
+ ## Examples
61
+
62
+ ### An error message:
63
+ ```javascript
64
+ swal("Oops!", "Something went wrong!", "error");
65
+ ```
66
+
67
+ ### A warning message, with a function attached to the confirm message:
68
+ - Using promises:
69
+ ```javascript
70
+ swal({
71
+ title: "Are you sure?",
72
+ text: "Are you sure that you want to leave this page?",
73
+ icon: "warning",
74
+ dangerMode: true,
75
+ })
76
+ .then(willDelete => {
77
+ if (willDelete) {
78
+ swal("Deleted!", "Your imaginary file has been deleted!", "success");
79
+ }
80
+ });
81
+ ```
82
+ - Using async/await:
83
+ ```javascript
84
+ const willDelete = await swal({
85
+ title: "Are you sure?",
86
+ text: "Are you sure that you want to delete this file?",
87
+ icon: "warning",
88
+ dangerMode: true,
89
+ });
90
+
91
+ if (willDelete) {
92
+ swal("Deleted!", "Your imaginary file has been deleted!", "success");
93
+ }
94
+ ```
95
+
96
+ ### A prompt modal, where the user's input is logged:
97
+ - Using promises:
98
+ ```javascript
99
+ swal("Type something:", {
100
+ content: "input",
101
+ })
102
+ .then((value) => {
103
+ swal(`You typed: ${value}`);
104
+ });
105
+ ```
106
+ - Using async/await:
107
+ ```javascript
108
+ const value = await swal("Type something:", {
109
+ content: "input",
110
+ });
111
+
112
+ swal(`You typed: ${value}`);
113
+ ```
114
+
115
+ ### In combination with Fetch:
116
+ - Using promises:
117
+ ```javascript
118
+ swal({
119
+ text: "Wanna log some information about Bulbasaur?",
120
+ button: {
121
+ text: "Search!",
122
+ closeModal: false,
123
+ },
124
+ })
125
+ .then(willSearch => {
126
+ if (willSearch) {
127
+ return fetch("http://pokeapi.co/api/v2/pokemon/1");
128
+ }
129
+ })
130
+ .then(result => result.json())
131
+ .then(json => console.log(json))
132
+ .catch(err => {
133
+ swal("Oops!", "Seems like we couldn't fetch the info", "error");
134
+ });
135
+ ```
136
+ - Using async/await:
137
+ ```javascript
138
+ const willSearch = await swal({
139
+ text: "Wanna log some information about Bulbasaur?",
140
+ button: {
141
+ text: "Search!",
142
+ closeModal: false,
143
+ },
144
+ });
145
+
146
+ if (willSearch) {
147
+ try {
148
+ const result = await fetch("http://pokeapi.co/api/v2/pokemon/1");
149
+ const json = await result.json();
150
+ console.log(json);
151
+ } catch (err) {
152
+ swal("Oops!", "Seems like we couldn't fetch the info", "error");
153
+ }
154
+ }
155
+ ```
156
+
157
+ ## Using with React
158
+
159
+ SweetAlert has tools for [integrating with your favourite rendering library](https://sweetalert.js.org/guides/#using-with-libraries).
160
+
161
+ If you're using React, you can install [SweetAlert with React](https://www.npmjs.com/package/@sweetalert/with-react) in addition to the main library, and easily add React components to your alerts like this:
162
+
163
+ ```javascript
164
+ import React from 'react'
165
+ import swal from '@sweetalert/with-react'
166
+
167
+ swal(
168
+ <div>
169
+ <h1>Hello world!</h1>
170
+ <p>
171
+ This is now rendered with JSX!
172
+ </p>
173
+ </div>
174
+ )
175
+ ```
176
+
177
+ [Read more about integrating with React](http://localhost:3000/guides#using-react)
178
+
179
+ ## Contributing
180
+
181
+ ### If you're changing the core library:
182
+ 1. Make changes in the `src` folder.
183
+ 2. Preview changes by running `npm run docs`
184
+ 3. Submit pull request
185
+
186
+ ### If you're changing the documentation:
187
+ 1. Make changes in the `docs-src` folder.
188
+ 2. Preview changes by running `npm run docs`
189
+ 3. Run `npm run builddocs` to compile the changes to the `docs` folder
190
+ 4. Submit pull request
191
+
192
+ ## Contributors
193
+
194
+ This project exists thanks to all the people who contribute. [[Contribute](https://github.com/t4t5/sweetalert#contributing)].
195
+ <a href="https://github.com/t4t5/sweetalert/graphs/contributors"><img src="https://opencollective.com/SweetAlert/contributors.svg?width=890&button=false" /></a>
196
+
197
+
198
+ ## Backers
199
+
200
+ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/SweetAlert#backer)]
201
+
202
+ <a href="https://opencollective.com/SweetAlert#backers" target="_blank"><img src="https://opencollective.com/SweetAlert/backers.svg?width=890"></a>
203
+
204
+
205
+ ## Sponsors
206
+
207
+ Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/SweetAlert#sponsor)]
208
+
209
+ <a href="https://opencollective.com/SweetAlert/sponsor/0/website" target="_blank"><img src="https://opencollective.com/SweetAlert/sponsor/0/avatar.svg"></a>
210
+ <a href="https://opencollective.com/SweetAlert/sponsor/1/website" target="_blank"><img src="https://opencollective.com/SweetAlert/sponsor/1/avatar.svg"></a>
211
+ <a href="https://opencollective.com/SweetAlert/sponsor/2/website" target="_blank"><img src="https://opencollective.com/SweetAlert/sponsor/2/avatar.svg"></a>
212
+ <a href="https://opencollective.com/SweetAlert/sponsor/3/website" target="_blank"><img src="https://opencollective.com/SweetAlert/sponsor/3/avatar.svg"></a>
213
+ <a href="https://opencollective.com/SweetAlert/sponsor/4/website" target="_blank"><img src="https://opencollective.com/SweetAlert/sponsor/4/avatar.svg"></a>
214
+ <a href="https://opencollective.com/SweetAlert/sponsor/5/website" target="_blank"><img src="https://opencollective.com/SweetAlert/sponsor/5/avatar.svg"></a>
215
+ <a href="https://opencollective.com/SweetAlert/sponsor/6/website" target="_blank"><img src="https://opencollective.com/SweetAlert/sponsor/6/avatar.svg"></a>
216
+ <a href="https://opencollective.com/SweetAlert/sponsor/7/website" target="_blank"><img src="https://opencollective.com/SweetAlert/sponsor/7/avatar.svg"></a>
217
+ <a href="https://opencollective.com/SweetAlert/sponsor/8/website" target="_blank"><img src="https://opencollective.com/SweetAlert/sponsor/8/avatar.svg"></a>
218
+ <a href="https://opencollective.com/SweetAlert/sponsor/9/website" target="_blank"><img src="https://opencollective.com/SweetAlert/sponsor/9/avatar.svg"></a>
219
+
220
+
assets/sweetalert/dist/sweetalert.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.swal=e():t.swal=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=8)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o="swal-button";e.CLASS_NAMES={MODAL:"swal-modal",OVERLAY:"swal-overlay",SHOW_MODAL:"swal-overlay--show-modal",MODAL_TITLE:"swal-title",MODAL_TEXT:"swal-text",ICON:"swal-icon",ICON_CUSTOM:"swal-icon--custom",CONTENT:"swal-content",FOOTER:"swal-footer",BUTTON_CONTAINER:"swal-button-container",BUTTON:o,CONFIRM_BUTTON:o+"--confirm",CANCEL_BUTTON:o+"--cancel",DANGER_BUTTON:o+"--danger",BUTTON_LOADING:o+"--loading",BUTTON_LOADER:o+"__loader"},e.default=e.CLASS_NAMES},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getNode=function(t){var e="."+t;return document.querySelector(e)},e.stringToNode=function(t){var e=document.createElement("div");return e.innerHTML=t.trim(),e.firstChild},e.insertAfter=function(t,e){var n=e.nextSibling;e.parentNode.insertBefore(t,n)},e.removeNode=function(t){t.parentElement.removeChild(t)},e.throwErr=function(t){throw t=t.replace(/ +(?= )/g,""),"SweetAlert: "+(t=t.trim())},e.isPlainObject=function(t){if("[object Object]"!==Object.prototype.toString.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype},e.ordinalSuffixOf=function(t){var e=t%10,n=t%100;return 1===e&&11!==n?t+"st":2===e&&12!==n?t+"nd":3===e&&13!==n?t+"rd":t+"th"}},function(t,e,n){"use strict";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),o(n(25));var r=n(26);e.overlayMarkup=r.default,o(n(27)),o(n(28)),o(n(29));var i=n(0),a=i.default.MODAL_TITLE,s=i.default.MODAL_TEXT,c=i.default.ICON,l=i.default.FOOTER;e.iconMarkup='\n <div class="'+c+'"></div>',e.titleMarkup='\n <div class="'+a+'"></div>\n',e.textMarkup='\n <div class="'+s+'"></div>',e.footerMarkup='\n <div class="'+l+'"></div>\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1);e.CONFIRM_KEY="confirm",e.CANCEL_KEY="cancel";var r={visible:!0,text:null,value:null,className:"",closeModal:!0},i=Object.assign({},r,{visible:!1,text:"Cancel",value:null}),a=Object.assign({},r,{text:"OK",value:!0});e.defaultButtonList={cancel:i,confirm:a};var s=function(t){switch(t){case e.CONFIRM_KEY:return a;case e.CANCEL_KEY:return i;default:var n=t.charAt(0).toUpperCase()+t.slice(1);return Object.assign({},r,{text:n,value:t})}},c=function(t,e){var n=s(t);return!0===e?Object.assign({},n,{visible:!0}):"string"==typeof e?Object.assign({},n,{visible:!0,text:e}):o.isPlainObject(e)?Object.assign({visible:!0},n,e):Object.assign({},n,{visible:!1})},l=function(t){for(var e={},n=0,o=Object.keys(t);n<o.length;n++){var r=o[n],a=t[r],s=c(r,a);e[r]=s}return e.cancel||(e.cancel=i),e},u=function(t){var n={};switch(t.length){case 1:n[e.CANCEL_KEY]=Object.assign({},i,{visible:!1});break;case 2:n[e.CANCEL_KEY]=c(e.CANCEL_KEY,t[0]),n[e.CONFIRM_KEY]=c(e.CONFIRM_KEY,t[1]);break;default:o.throwErr("Invalid number of 'buttons' in array ("+t.length+").\n If you want more than 2 buttons, you need to use an object!")}return n};e.getButtonListOpts=function(t){var n=e.defaultButtonList;return"string"==typeof t?n[e.CONFIRM_KEY]=c(e.CONFIRM_KEY,t):Array.isArray(t)?n=u(t):o.isPlainObject(t)?n=l(t):!0===t?n=u([!0,!0]):!1===t?n=u([!1,!1]):void 0===t&&(n=e.defaultButtonList),n}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(2),i=n(0),a=i.default.MODAL,s=i.default.OVERLAY,c=n(30),l=n(31),u=n(32),f=n(33);e.injectElIntoModal=function(t){var e=o.getNode(a),n=o.stringToNode(t);return e.appendChild(n),n};var d=function(t){t.className=a,t.textContent=""},p=function(t,e){d(t);var n=e.className;n&&t.classList.add(n)};e.initModalContent=function(t){var e=o.getNode(a);p(e,t),c.default(t.icon),l.initTitle(t.title),l.initText(t.text),f.default(t.content),u.default(t.buttons,t.dangerMode)};var m=function(){var t=o.getNode(s),e=o.stringToNode(r.modalMarkup);t.appendChild(e)};e.default=m},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r={isOpen:!1,promise:null,actions:{},timer:null},i=Object.assign({},r);e.resetState=function(){i=Object.assign({},r)},e.setActionValue=function(t){if("string"==typeof t)return a(o.CONFIRM_KEY,t);for(var e in t)a(e,t[e])};var a=function(t,e){i.actions[t]||(i.actions[t]={}),Object.assign(i.actions[t],{value:e})};e.setActionOptionsFor=function(t,e){var n=(void 0===e?{}:e).closeModal,o=void 0===n||n;Object.assign(i.actions[t],{closeModal:o})},e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(3),i=n(0),a=i.default.OVERLAY,s=i.default.SHOW_MODAL,c=i.default.BUTTON,l=i.default.BUTTON_LOADING,u=n(5);e.openModal=function(){o.getNode(a).classList.add(s),u.default.isOpen=!0};var f=function(){o.getNode(a).classList.remove(s),u.default.isOpen=!1};e.onAction=function(t){void 0===t&&(t=r.CANCEL_KEY);var e=u.default.actions[t],n=e.value;if(!1===e.closeModal){var i=c+"--"+t;o.getNode(i).classList.add(l)}else f();u.default.promise.resolve(n)},e.getState=function(){var t=Object.assign({},u.default);return delete t.promise,delete t.timer,t},e.stopLoading=function(){for(var t=document.querySelectorAll("."+c),e=0;e<t.length;e++){t[e].classList.remove(l)}}},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){(function(e){t.exports=e.sweetAlert=n(9)}).call(e,n(7))},function(t,e,n){(function(e){t.exports=e.swal=n(10)}).call(e,n(7))},function(t,e,n){"undefined"!=typeof window&&n(11),n(16);var o=n(23).default;t.exports=o},function(t,e,n){var o=n(12);"string"==typeof o&&(o=[[t.i,o,""]]);var r={insertAt:"top"};r.transform=void 0;n(14)(o,r);o.locals&&(t.exports=o.locals)},function(t,e,n){e=t.exports=n(13)(void 0),e.push([t.i,'.swal-icon--error{border-color:#f27474;-webkit-animation:animateErrorIcon .5s;animation:animateErrorIcon .5s}.swal-icon--error__x-mark{position:relative;display:block;-webkit-animation:animateXMark .5s;animation:animateXMark .5s}.swal-icon--error__line{position:absolute;height:5px;width:47px;background-color:#f27474;display:block;top:37px;border-radius:2px}.swal-icon--error__line--left{-webkit-transform:rotate(45deg);transform:rotate(45deg);left:17px}.swal-icon--error__line--right{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}@-webkit-keyframes animateErrorIcon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}to{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}}@keyframes animateErrorIcon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}to{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}}@-webkit-keyframes animateXMark{0%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}to{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}@keyframes animateXMark{0%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}to{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}.swal-icon--warning{border-color:#f8bb86;-webkit-animation:pulseWarning .75s infinite alternate;animation:pulseWarning .75s infinite alternate}.swal-icon--warning__body{width:5px;height:47px;top:10px;border-radius:2px;margin-left:-2px}.swal-icon--warning__body,.swal-icon--warning__dot{position:absolute;left:50%;background-color:#f8bb86}.swal-icon--warning__dot{width:7px;height:7px;border-radius:50%;margin-left:-4px;bottom:-11px}@-webkit-keyframes pulseWarning{0%{border-color:#f8d486}to{border-color:#f8bb86}}@keyframes pulseWarning{0%{border-color:#f8d486}to{border-color:#f8bb86}}.swal-icon--success{border-color:#a5dc86}.swal-icon--success:after,.swal-icon--success:before{content:"";border-radius:50%;position:absolute;width:60px;height:120px;background:#fff;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal-icon--success:before{border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;transform-origin:60px 60px}.swal-icon--success:after{border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 60px;transform-origin:0 60px;-webkit-animation:rotatePlaceholder 4.25s ease-in;animation:rotatePlaceholder 4.25s ease-in}.swal-icon--success__ring{width:80px;height:80px;border:4px solid hsla(98,55%,69%,.2);border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.swal-icon--success__hide-corners{width:5px;height:90px;background-color:#fff;padding:1px;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal-icon--success__line{height:5px;background-color:#a5dc86;display:block;border-radius:2px;position:absolute;z-index:2}.swal-icon--success__line--tip{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation:animateSuccessTip .75s;animation:animateSuccessTip .75s}.swal-icon--success__line--long{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-animation:animateSuccessLong .75s;animation:animateSuccessLong .75s}@-webkit-keyframes rotatePlaceholder{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}to{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes rotatePlaceholder{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}to{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@-webkit-keyframes animateSuccessTip{0%{width:0;left:1px;top:19px}54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}to{width:25px;left:14px;top:45px}}@keyframes animateSuccessTip{0%{width:0;left:1px;top:19px}54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}to{width:25px;left:14px;top:45px}}@-webkit-keyframes animateSuccessLong{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}to{width:47px;right:8px;top:38px}}@keyframes animateSuccessLong{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}to{width:47px;right:8px;top:38px}}.swal-icon--info{border-color:#c9dae1}.swal-icon--info:before{width:5px;height:29px;bottom:17px;border-radius:2px;margin-left:-2px}.swal-icon--info:after,.swal-icon--info:before{content:"";position:absolute;left:50%;background-color:#c9dae1}.swal-icon--info:after{width:7px;height:7px;border-radius:50%;margin-left:-3px;top:19px}.swal-icon{width:80px;height:80px;border-width:4px;border-style:solid;border-radius:50%;padding:0;position:relative;box-sizing:content-box;margin:20px auto}.swal-icon:first-child{margin-top:32px}.swal-icon--custom{width:auto;height:auto;max-width:100%;border:none;border-radius:0}.swal-icon img{max-width:100%;max-height:100%}.swal-title{color:rgba(0,0,0,.65);font-weight:600;text-transform:none;position:relative;display:block;padding:13px 16px;font-size:27px;line-height:normal;text-align:center;margin-bottom:0}.swal-title:first-child{margin-top:26px}.swal-title:not(:first-child){padding-bottom:0}.swal-title:not(:last-child){margin-bottom:13px}.swal-text{font-size:16px;position:relative;float:none;line-height:normal;vertical-align:top;text-align:left;display:inline-block;margin:0;padding:0 10px;font-weight:400;color:rgba(0,0,0,.64);max-width:calc(100% - 20px);overflow-wrap:break-word;box-sizing:border-box}.swal-text:first-child{margin-top:45px}.swal-text:last-child{margin-bottom:45px}.swal-footer{text-align:right;padding-top:13px;margin-top:13px;padding:13px 16px;border-radius:inherit;border-top-left-radius:0;border-top-right-radius:0}.swal-button-container{margin:5px;display:inline-block;position:relative}.swal-button{background-color:#7cd1f9;color:#fff;border:none;box-shadow:none;border-radius:5px;font-weight:600;font-size:14px;padding:10px 24px;margin:0;cursor:pointer}.swal-button:not([disabled]):hover{background-color:#78cbf2}.swal-button:active{background-color:#70bce0}.swal-button:focus{outline:none;box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(43,114,165,.29)}.swal-button[disabled]{opacity:.5;cursor:default}.swal-button::-moz-focus-inner{border:0}.swal-button--cancel{color:#555;background-color:#efefef}.swal-button--cancel:not([disabled]):hover{background-color:#e8e8e8}.swal-button--cancel:active{background-color:#d7d7d7}.swal-button--cancel:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(116,136,150,.29)}.swal-button--danger{background-color:#e64942}.swal-button--danger:not([disabled]):hover{background-color:#df4740}.swal-button--danger:active{background-color:#cf423b}.swal-button--danger:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(165,43,43,.29)}.swal-content{padding:0 20px;margin-top:20px;font-size:medium}.swal-content:last-child{margin-bottom:20px}.swal-content__input,.swal-content__textarea{-webkit-appearance:none;background-color:#fff;border:none;font-size:14px;display:block;box-sizing:border-box;width:100%;border:1px solid rgba(0,0,0,.14);padding:10px 13px;border-radius:2px;transition:border-color .2s}.swal-content__input:focus,.swal-content__textarea:focus{outline:none;border-color:#6db8ff}.swal-content__textarea{resize:vertical}.swal-button--loading{color:transparent}.swal-button--loading~.swal-button__loader{opacity:1}.swal-button__loader{position:absolute;height:auto;width:43px;z-index:2;left:50%;top:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);text-align:center;pointer-events:none;opacity:0}.swal-button__loader div{display:inline-block;float:none;vertical-align:baseline;width:9px;height:9px;padding:0;border:none;margin:2px;opacity:.4;border-radius:7px;background-color:hsla(0,0%,100%,.9);transition:background .2s;-webkit-animation:swal-loading-anim 1s infinite;animation:swal-loading-anim 1s infinite}.swal-button__loader div:nth-child(3n+2){-webkit-animation-delay:.15s;animation-delay:.15s}.swal-button__loader div:nth-child(3n+3){-webkit-animation-delay:.3s;animation-delay:.3s}@-webkit-keyframes swal-loading-anim{0%{opacity:.4}20%{opacity:.4}50%{opacity:1}to{opacity:.4}}@keyframes swal-loading-anim{0%{opacity:.4}20%{opacity:.4}50%{opacity:1}to{opacity:.4}}.swal-overlay{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center;font-size:0;overflow-y:auto;background-color:rgba(0,0,0,.4);z-index:10000;pointer-events:none;opacity:0;transition:opacity .3s}.swal-overlay:before{content:" ";display:inline-block;vertical-align:middle;height:100%}.swal-overlay--show-modal{opacity:1;pointer-events:auto}.swal-overlay--show-modal .swal-modal{opacity:1;pointer-events:auto;box-sizing:border-box;-webkit-animation:showSweetAlert .3s;animation:showSweetAlert .3s;will-change:transform}.swal-modal{width:478px;opacity:0;pointer-events:none;background-color:#fff;text-align:center;border-radius:5px;position:static;margin:20px auto;display:inline-block;vertical-align:middle;-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;z-index:10001;transition:opacity .2s,-webkit-transform .3s;transition:transform .3s,opacity .2s;transition:transform .3s,opacity .2s,-webkit-transform .3s}@media (max-width:500px){.swal-modal{width:calc(100% - 20px)}}@-webkit-keyframes showSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1)}1%{-webkit-transform:scale(.5);transform:scale(.5)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes showSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1)}1%{-webkit-transform:scale(.5);transform:scale(.5)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}to{-webkit-transform:scale(1);transform:scale(1)}}',""])},function(t,e){function n(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var i=o(r);return[n].concat(r.sources.map(function(t){return"/*# sourceURL="+r.sourceRoot+t+" */"})).concat([i]).join("\n")}return[n].join("\n")}function o(t){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+" */"}t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var o=n(e,t);return e[2]?"@media "+e[2]+"{"+o+"}":o}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var o={},r=0;r<this.length;r++){var i=this[r][0];"number"==typeof i&&(o[i]=!0)}for(r=0;r<t.length;r++){var a=t[r];"number"==typeof a[0]&&o[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),e.push(a))}},e}},function(t,e,n){function o(t,e){for(var n=0;n<t.length;n++){var o=t[n],r=m[o.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](o.parts[i]);for(;i<o.parts.length;i++)r.parts.push(u(o.parts[i],e))}else{for(var a=[],i=0;i<o.parts.length;i++)a.push(u(o.parts[i],e));m[o.id]={id:o.id,refs:1,parts:a}}}}function r(t,e){for(var n=[],o={},r=0;r<t.length;r++){var i=t[r],a=e.base?i[0]+e.base:i[0],s=i[1],c=i[2],l=i[3],u={css:s,media:c,sourceMap:l};o[a]?o[a].parts.push(u):n.push(o[a]={id:a,parts:[u]})}return n}function i(t,e){var n=v(t.insertInto);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");var o=w[w.length-1];if("top"===t.insertAt)o?o.nextSibling?n.insertBefore(e,o.nextSibling):n.appendChild(e):n.insertBefore(e,n.firstChild),w.push(e);else{if("bottom"!==t.insertAt)throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");n.appendChild(e)}}function a(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t);var e=w.indexOf(t);e>=0&&w.splice(e,1)}function s(t){var e=document.createElement("style");return t.attrs.type="text/css",l(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement("link");return t.attrs.type="text/css",t.attrs.rel="stylesheet",l(e,t.attrs),i(t,e),e}function l(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function u(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var l=h++;n=g||(g=s(e)),o=f.bind(null,n,l,!1),r=f.bind(null,n,l,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=c(e),o=p.bind(null,n,e),r=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),o=d.bind(null,n),r=function(){a(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?"":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function d(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute("media",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=y(o)),r&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([o],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var m={},b=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),v=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),g=null,h=0,w=[],y=n(15);t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");e=e||{},e.attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=b()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=r(t,e);return o(n,e),function(t){for(var i=[],a=0;a<n.length;a++){var s=n[a],c=m[s.id];c.refs--,i.push(c)}if(t){o(r(t,e),e)}for(var a=0;a<i.length;a++){var c=i[a];if(0===c.refs){for(var l=0;l<c.parts.length;l++)c.parts[l]();delete m[c.id]}}}};var x=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join("\n")}}()},function(t,e){t.exports=function(t){var e="undefined"!=typeof window&&window.location;if(!e)throw new Error("fixUrls requires window.location");if(!t||"string"!=typeof t)return t;var n=e.protocol+"//"+e.host,o=n+e.pathname.replace(/\/[^\/]*$/,"/");return t.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(t,e){var r=e.trim().replace(/^"(.*)"$/,function(t,e){return e}).replace(/^'(.*)'$/,function(t,e){return e});if(/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(r))return t;var i;return i=0===r.indexOf("//")?r:0===r.indexOf("/")?n+r:o+r.replace(/^\.\//,""),"url("+JSON.stringify(i)+")"})}},function(t,e,n){var o=n(17);"undefined"==typeof window||window.Promise||(window.Promise=o),n(21),String.prototype.includes||(String.prototype.includes=function(t,e){"use strict";return"number"!=typeof e&&(e=0),!(e+t.length>this.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var r=0|e,i=Math.max(r>=0?r:o-Math.abs(r),0);i<o;){if(function(t,e){return t===e||"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}(n[i],t))return!0;i++}return!1}}),"undefined"!=typeof window&&function(t){t.forEach(function(t){t.hasOwnProperty("remove")||Object.defineProperty(t,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype])},function(t,e,n){(function(e){!function(n){function o(){}function r(t,e){return function(){t.apply(e,arguments)}}function i(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],f(t,this)}function a(t,e){for(;3===t._state;)t=t._value;if(0===t._state)return void t._deferreds.push(e);t._handled=!0,i._immediateFn(function(){var n=1===t._state?e.onFulfilled:e.onRejected;if(null===n)return void(1===t._state?s:c)(e.promise,t._value);var o;try{o=n(t._value)}catch(t){return void c(e.promise,t)}s(e.promise,o)})}function s(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof i)return t._state=3,t._value=e,void l(t);if("function"==typeof n)return void f(r(n,e),t)}t._state=1,t._value=e,l(t)}catch(e){c(t,e)}}function c(t,e){t._state=2,t._value=e,l(t)}function l(t){2===t._state&&0===t._deferreds.length&&i._immediateFn(function(){t._handled||i._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)a(t,t._deferreds[e]);t._deferreds=null}function u(t,e,n){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=n}function f(t,e){var n=!1;try{t(function(t){n||(n=!0,s(e,t))},function(t){n||(n=!0,c(e,t))})}catch(t){if(n)return;n=!0,c(e,t)}}var d=setTimeout;i.prototype.catch=function(t){return this.then(null,t)},i.prototype.then=function(t,e){var n=new this.constructor(o);return a(this,new u(t,e,n)),n},i.all=function(t){var e=Array.prototype.slice.call(t);return new i(function(t,n){function o(i,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(t){o(i,t)},n)}e[i]=a,0==--r&&t(e)}catch(t){n(t)}}if(0===e.length)return t([]);for(var r=e.length,i=0;i<e.length;i++)o(i,e[i])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(t){return new i(function(e,n){n(t)})},i.race=function(t){return new i(function(e,n){for(var o=0,r=t.length;o<r;o++)t[o].then(e,n)})},i._immediateFn="function"==typeof e&&function(t){e(t)}||function(t){d(t,0)},i._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},i._setImmediateFn=function(t){i._immediateFn=t},i._setUnhandledRejectionFn=function(t){i._unhandledRejectionFn=t},void 0!==t&&t.exports?t.exports=i:n.Promise||(n.Promise=i)}(this)}).call(e,n(18).setImmediate)},function(t,e,n){function o(t,e){this._id=t,this._clearFn=e}var r=Function.prototype.apply;e.setTimeout=function(){return new o(r.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new o(r.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(19),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function o(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var o={callback:t,args:e};return l[c]=o,s(c),c++}function r(t){delete l[t]}function i(t){var e=t.callback,o=t.args;switch(o.length){case 0:e();break;case 1:e(o[0]);break;case 2:e(o[0],o[1]);break;case 3:e(o[0],o[1],o[2]);break;default:e.apply(n,o)}}function a(t){if(u)setTimeout(a,0,t);else{var e=l[t];if(e){u=!0;try{i(e)}finally{r(t),u=!1}}}}if(!t.setImmediate){var s,c=1,l={},u=!1,f=t.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(t);d=d&&d.setTimeout?d:t,"[object process]"==={}.toString.call(t.process)?function(){s=function(t){e.nextTick(function(){a(t)})}}():function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(e)&&a(+n.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),s=function(n){t.postMessage(e+n,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){a(t.data)},s=function(e){t.port2.postMessage(e)}}():f&&"onreadystatechange"in f.createElement("script")?function(){var t=f.documentElement;s=function(e){var n=f.createElement("script");n.onreadystatechange=function(){a(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():function(){s=function(t){setTimeout(a,0,t)}}(),d.setImmediate=o,d.clearImmediate=r}}("undefined"==typeof self?void 0===t?this:t:self)}).call(e,n(7),n(20))},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function r(t){if(u===setTimeout)return setTimeout(t,0);if((u===n||!u)&&setTimeout)return u=setTimeout,setTimeout(t,0);try{return u(t,0)}catch(e){try{return u.call(null,t,0)}catch(e){return u.call(this,t,0)}}}function i(t){if(f===clearTimeout)return clearTimeout(t);if((f===o||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(t);try{return f(t)}catch(e){try{return f.call(null,t)}catch(e){return f.call(this,t)}}}function a(){b&&p&&(b=!1,p.length?m=p.concat(m):v=-1,m.length&&s())}function s(){if(!b){var t=r(a);b=!0;for(var e=m.length;e;){for(p=m,m=[];++v<e;)p&&p[v].run();v=-1,e=m.length}p=null,b=!1,i(t)}}function c(t,e){this.fun=t,this.array=e}function l(){}var u,f,d=t.exports={};!function(){try{u="function"==typeof setTimeout?setTimeout:n}catch(t){u=n}try{f="function"==typeof clearTimeout?clearTimeout:o}catch(t){f=o}}();var p,m=[],b=!1,v=-1;d.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];m.push(new c(t,e)),1!==m.length||b||r(s)},c.prototype.run=function(){this.fun.apply(null,this.array)},d.title="browser",d.browser=!0,d.env={},d.argv=[],d.version="",d.versions={},d.on=l,d.addListener=l,d.once=l,d.off=l,d.removeListener=l,d.removeAllListeners=l,d.emit=l,d.prependListener=l,d.prependOnceListener=l,d.listeners=function(t){return[]},d.binding=function(t){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(t){throw new Error("process.chdir is not supported")},d.umask=function(){return 0}},function(t,e,n){"use strict";n(22).polyfill()},function(t,e,n){"use strict";function o(t,e){if(void 0===t||null===t)throw new TypeError("Cannot convert first argument to object");for(var n=Object(t),o=1;o<arguments.length;o++){var r=arguments[o];if(void 0!==r&&null!==r)for(var i=Object.keys(Object(r)),a=0,s=i.length;a<s;a++){var c=i[a],l=Object.getOwnPropertyDescriptor(r,c);void 0!==l&&l.enumerable&&(n[c]=r[c])}}return n}function r(){Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:o})}t.exports={assign:o,polyfill:r}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(24),r=n(6),i=n(5),a=n(36),s=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if("undefined"!=typeof window){var n=a.getOpts.apply(void 0,t);return new Promise(function(t,e){i.default.promise={resolve:t,reject:e},o.default(n),setTimeout(function(){r.openModal()})})}};s.close=r.onAction,s.getState=r.getState,s.setActionValue=i.setActionValue,s.stopLoading=r.stopLoading,s.setDefaults=a.setDefaults,e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(0),i=r.default.MODAL,a=n(4),s=n(34),c=n(35),l=n(1);e.init=function(t){o.getNode(i)||(document.body||l.throwErr("You can only use SweetAlert AFTER the DOM has loaded!"),s.default(),a.default()),a.initModalContent(t),c.default(t)},e.default=e.init},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.MODAL;e.modalMarkup='\n <div class="'+r+'" role="dialog" aria-modal="true"></div>',e.default=e.modalMarkup},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.OVERLAY,i='<div \n class="'+r+'"\n tabIndex="-1">\n </div>';e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.ICON;e.errorIconMarkup=function(){var t=r+"--error",e=t+"__line";return'\n <div class="'+t+'__x-mark">\n <span class="'+e+" "+e+'--left"></span>\n <span class="'+e+" "+e+'--right"></span>\n </div>\n '},e.warningIconMarkup=function(){var t=r+"--warning";return'\n <span class="'+t+'__body">\n <span class="'+t+'__dot"></span>\n </span>\n '},e.successIconMarkup=function(){var t=r+"--success";return'\n <span class="'+t+"__line "+t+'__line--long"></span>\n <span class="'+t+"__line "+t+'__line--tip"></span>\n\n <div class="'+t+'__ring"></div>\n <div class="'+t+'__hide-corners"></div>\n '}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.CONTENT;e.contentMarkup='\n <div class="'+r+'">\n\n </div>\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.BUTTON_CONTAINER,i=o.default.BUTTON,a=o.default.BUTTON_LOADER;e.buttonMarkup='\n <div class="'+r+'">\n\n <button\n class="'+i+'"\n ></button>\n\n <div class="'+a+'">\n <div></div>\n <div></div>\n <div></div>\n </div>\n\n </div>\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(4),r=n(2),i=n(0),a=i.default.ICON,s=i.default.ICON_CUSTOM,c=["error","warning","success","info"],l={error:r.errorIconMarkup(),warning:r.warningIconMarkup(),success:r.successIconMarkup()},u=function(t,e){var n=a+"--"+t;e.classList.add(n);var o=l[t];o&&(e.innerHTML=o)},f=function(t,e){e.classList.add(s);var n=document.createElement("img");n.src=t,e.appendChild(n)},d=function(t){if(t){var e=o.injectElIntoModal(r.iconMarkup);c.includes(t)?u(t,e):f(t,e)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),r=n(4),i=function(t){navigator.userAgent.includes("AppleWebKit")&&(t.style.display="none",t.offsetHeight,t.style.display="")};e.initTitle=function(t){if(t){var e=r.injectElIntoModal(o.titleMarkup);e.textContent=t,i(e)}},e.initText=function(t){if(t){var e=document.createDocumentFragment();t.split("\n").forEach(function(t,n,o){e.appendChild(document.createTextNode(t)),n<o.length-1&&e.appendChild(document.createElement("br"))});var n=r.injectElIntoModal(o.textMarkup);n.appendChild(e),i(n)}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(4),i=n(0),a=i.default.BUTTON,s=i.default.DANGER_BUTTON,c=n(3),l=n(2),u=n(6),f=n(5),d=function(t,e,n){var r=e.text,i=e.value,d=e.className,p=e.closeModal,m=o.stringToNode(l.buttonMarkup),b=m.querySelector("."+a),v=a+"--"+t;if(b.classList.add(v),d){(Array.isArray(d)?d:d.split(" ")).filter(function(t){return t.length>0}).forEach(function(t){b.classList.add(t)})}n&&t===c.CONFIRM_KEY&&b.classList.add(s),b.textContent=r;var g={};return g[t]=i,f.setActionValue(g),f.setActionOptionsFor(t,{closeModal:p}),b.addEventListener("click",function(){return u.onAction(t)}),m},p=function(t,e){var n=r.injectElIntoModal(l.footerMarkup);for(var o in t){var i=t[o],a=d(o,i,e);i.visible&&n.appendChild(a)}0===n.children.length&&n.remove()};e.default=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=n(4),i=n(2),a=n(5),s=n(6),c=n(0),l=c.default.CONTENT,u=function(t){t.addEventListener("input",function(t){var e=t.target,n=e.value;a.setActionValue(n)}),t.addEventListener("keyup",function(t){if("Enter"===t.key)return s.onAction(o.CONFIRM_KEY)}),setTimeout(function(){t.focus(),a.setActionValue("")},0)},f=function(t,e,n){var o=document.createElement(e),r=l+"__"+e;o.classList.add(r);for(var i in n){var a=n[i];o[i]=a}"input"===e&&u(o),t.appendChild(o)},d=function(t){if(t){var e=r.injectElIntoModal(i.contentMarkup),n=t.element,o=t.attributes;"string"==typeof n?f(e,n,o):e.appendChild(n)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(2),i=function(){var t=o.stringToNode(r.overlayMarkup);document.body.appendChild(t)};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),r=n(6),i=n(1),a=n(3),s=n(0),c=s.default.MODAL,l=s.default.BUTTON,u=s.default.OVERLAY,f=function(t){t.preventDefault(),v()},d=function(t){t.preventDefault(),g()},p=function(t){if(o.default.isOpen)switch(t.key){case"Escape":return r.onAction(a.CANCEL_KEY)}},m=function(t){if(o.default.isOpen)switch(t.key){case"Tab":return f(t)}},b=function(t){if(o.default.isOpen)return"Tab"===t.key&&t.shiftKey?d(t):void 0},v=function(){var t=i.getNode(l);t&&(t.tabIndex=0,t.focus())},g=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l),n=e.length-1,o=e[n];o&&o.focus()},h=function(t){t[t.length-1].addEventListener("keydown",m)},w=function(t){t[0].addEventListener("keydown",b)},y=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l);e.length&&(h(e),w(e))},x=function(t){if(i.getNode(u)===t.target)return r.onAction(a.CANCEL_KEY)},_=function(t){var e=i.getNode(u);e.removeEventListener("click",x),t&&e.addEventListener("click",x)},k=function(t){o.default.timer&&clearTimeout(o.default.timer),t&&(o.default.timer=window.setTimeout(function(){return r.onAction(a.CANCEL_KEY)},t))},O=function(t){t.closeOnEsc?document.addEventListener("keyup",p):document.removeEventListener("keyup",p),t.dangerMode?v():g(),y(),_(t.closeOnClickOutside),k(t.timer)};e.default=O},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(3),i=n(37),a=n(38),s={title:null,text:null,icon:null,buttons:r.defaultButtonList,content:null,className:null,closeOnClickOutside:!0,closeOnEsc:!0,dangerMode:!1,timer:null},c=Object.assign({},s);e.setDefaults=function(t){c=Object.assign({},s,t)};var l=function(t){var e=t&&t.button,n=t&&t.buttons;return void 0!==e&&void 0!==n&&o.throwErr("Cannot set both 'button' and 'buttons' options!"),void 0!==e?{confirm:e}:n},u=function(t){return o.ordinalSuffixOf(t+1)},f=function(t,e){o.throwErr(u(e)+" argument ('"+t+"') is invalid")},d=function(t,e){var n=t+1,r=e[n];o.isPlainObject(r)||void 0===r||o.throwErr("Expected "+u(n)+" argument ('"+r+"') to be a plain object")},p=function(t,e){var n=t+1,r=e[n];void 0!==r&&o.throwErr("Unexpected "+u(n)+" argument ("+r+")")},m=function(t,e,n,r){var i=typeof e,a="string"===i,s=e instanceof Element;if(a){if(0===n)return{text:e};if(1===n)return{text:e,title:r[0]};if(2===n)return d(n,r),{icon:e};f(e,n)}else{if(s&&0===n)return d(n,r),{content:e};if(o.isPlainObject(e))return p(n,r),e;f(e,n)}};e.getOpts=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n={};t.forEach(function(e,o){var r=m(0,e,o,t);Object.assign(n,r)});var o=l(n);n.buttons=r.getButtonListOpts(o),delete n.button,n.content=i.getContentOpts(n.content);var u=Object.assign({},s,c,n);return Object.keys(u).forEach(function(t){a.DEPRECATED_OPTS[t]&&a.logDeprecation(t)}),u}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r={element:"input",attributes:{placeholder:""}};e.getContentOpts=function(t){var e={};return o.isPlainObject(t)?Object.assign(e,t):t instanceof Element?{element:t}:"input"===t?r:null}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.logDeprecation=function(t){var n=e.DEPRECATED_OPTS[t],o=n.onlyRename,r=n.replacement,i=n.subOption,a=n.link,s=o?"renamed":"deprecated",c='SweetAlert warning: "'+t+'" option has been '+s+".";if(r){c+=" Please use"+(i?' "'+i+'" in ':" ")+'"'+r+'" instead.'}var l="https://sweetalert.js.org";c+=a?" More details: "+l+a:" More details: "+l+"/guides/#upgrading-from-1x",console.warn(c)},e.DEPRECATED_OPTS={type:{replacement:"icon",link:"/docs/#icon"},imageUrl:{replacement:"icon",link:"/docs/#icon"},customClass:{replacement:"className",onlyRename:!0,link:"/docs/#classname"},imageSize:{},showCancelButton:{replacement:"buttons",link:"/docs/#buttons"},showConfirmButton:{replacement:"button",link:"/docs/#button"},confirmButtonText:{replacement:"button",link:"/docs/#button"},confirmButtonColor:{},cancelButtonText:{replacement:"buttons",link:"/docs/#buttons"},closeOnConfirm:{replacement:"button",subOption:"closeModal",link:"/docs/#button"},closeOnCancel:{replacement:"buttons",subOption:"closeModal",link:"/docs/#buttons"},showLoaderOnConfirm:{replacement:"buttons"},animation:{},inputType:{replacement:"content",link:"/docs/#content"},inputValue:{replacement:"content",link:"/docs/#content"},inputPlaceholder:{replacement:"content",link:"/docs/#content"},html:{replacement:"content",link:"/docs/#content"},allowEscapeKey:{replacement:"closeOnEsc",onlyRename:!0,link:"/docs/#closeonesc"},allowClickOutside:{replacement:"closeOnClickOutside",onlyRename:!0,link:"/docs/#closeonclickoutside"}}}])});
assets/sweetalert/package.json ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_from": "sweetalert@^2.1.2",
3
+ "_id": "sweetalert@2.1.2",
4
+ "_inBundle": false,
5
+ "_integrity": "sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==",
6
+ "_location": "/sweetalert",
7
+ "_phantomChildren": {},
8
+ "_requested": {
9
+ "type": "range",
10
+ "registry": true,
11
+ "raw": "sweetalert@^2.1.2",
12
+ "name": "sweetalert",
13
+ "escapedName": "sweetalert",
14
+ "rawSpec": "^2.1.2",
15
+ "saveSpec": null,
16
+ "fetchSpec": "^2.1.2"
17
+ },
18
+ "_requiredBy": [
19
+ "#USER",
20
+ "/"
21
+ ],
22
+ "_resolved": "https://registry.npmjs.org/sweetalert/-/sweetalert-2.1.2.tgz",
23
+ "_shasum": "010baaa80d0dbdc86f96bfcaa96b490728594b79",
24
+ "_spec": "sweetalert@^2.1.2",
25
+ "_where": "/Applications/MAMP/htdocs/asset-optimizer",
26
+ "author": {
27
+ "name": "Tristan Edwards",
28
+ "email": "tristan.edwards@me.com",
29
+ "url": "https://tristanedwards.me"
30
+ },
31
+ "bugs": {
32
+ "url": "https://github.com/t4t5/sweetalert/issues"
33
+ },
34
+ "bundleDependencies": false,
35
+ "collective": {
36
+ "type": "opencollective",
37
+ "url": "https://opencollective.com/SweetAlert"
38
+ },
39
+ "dependencies": {
40
+ "es6-object-assign": "^1.1.0",
41
+ "promise-polyfill": "^6.0.2"
42
+ },
43
+ "deprecated": false,
44
+ "description": "A beautiful replacement for JavaScript's \"alert\"",
45
+ "devDependencies": {
46
+ "@sweetalert/with-react": "^0.1.1",
47
+ "@types/jest": "19.2.3",
48
+ "autoprefixer": "6.7.7",
49
+ "babel-core": "6.24.1",
50
+ "babel-loader": "6.4.1",
51
+ "babel-plugin-transform-es2015-modules-commonjs": "6.24.1",
52
+ "babel-plugin-transform-runtime": "6.23.0",
53
+ "babel-preset-env": "1.4.0",
54
+ "babel-preset-es2015": "6.24.1",
55
+ "babel-preset-react": "6.24.1",
56
+ "babel-standalone": "^6.26.0",
57
+ "babelify": "^6.0.2",
58
+ "browserify": "^9.0.8",
59
+ "copy-webpack-plugin": "^4.0.1",
60
+ "css-loader": "0.28.7",
61
+ "dts-bundle": "0.7.3",
62
+ "exports-loader": "0.6.4",
63
+ "expose-loader": "0.7.3",
64
+ "glob": "^5.0.3",
65
+ "jest": "19.0.2",
66
+ "jquery": "3.2.1",
67
+ "jus": "0.24.1",
68
+ "nodelist-foreach-polyfill": "^1.2.0",
69
+ "opencollective": "^1.0.3",
70
+ "path": "^0.11.14",
71
+ "postcss-color-function": "3.0.0",
72
+ "postcss-custom-properties": "5.0.2",
73
+ "postcss-easy-import": "2.0.0",
74
+ "postcss-loader": "1.3.3",
75
+ "postcss-nesting": "2.3.1",
76
+ "react": "15.5.4",
77
+ "react-dom": "15.5.4",
78
+ "source-map-loader": "0.2.1",
79
+ "style-loader": "0.18.2",
80
+ "sweetalert": "file:./",
81
+ "ts-jest": "19.0.14",
82
+ "ts-loader": "2.0.3",
83
+ "tslint": "5.1.0",
84
+ "tslint-loader": "3.5.2",
85
+ "typescript": "2.2.2",
86
+ "vinyl-buffer": "^1.0.0",
87
+ "vinyl-source-stream": "^1.1.0",
88
+ "webpack": "3.5.5",
89
+ "webpack-bundle-analyzer": "2.9.0",
90
+ "webpack-dev-server": "2.4.2",
91
+ "webpack-merge": "4.1.0",
92
+ "whatwg-fetch": "^2.0.3"
93
+ },
94
+ "files": [
95
+ "dist",
96
+ "LICENSE.md",
97
+ "README.md",
98
+ "typings"
99
+ ],
100
+ "homepage": "https://sweetalert.js.org/",
101
+ "jest": {
102
+ "verbose": true,
103
+ "transform": {
104
+ "^.+\\.tsx?$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
105
+ },
106
+ "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
107
+ "moduleFileExtensions": [
108
+ "ts",
109
+ "tsx",
110
+ "js",
111
+ "json"
112
+ ]
113
+ },
114
+ "keywords": [
115
+ "sweetalert",
116
+ "alert",
117
+ "modal",
118
+ "popup"
119
+ ],
120
+ "license": "MIT",
121
+ "main": "dist/sweetalert.min.js",
122
+ "name": "sweetalert",
123
+ "repository": {
124
+ "type": "git",
125
+ "url": "git+https://github.com/t4t5/sweetalert.git"
126
+ },
127
+ "scripts": {
128
+ "build": "webpack -p",
129
+ "builddocs": "node_modules/jus/cli.js build docs-src docs",
130
+ "buildtest": "npm run build && jest",
131
+ "docs": "npm run build && node_modules/jus/cli.js serve docs-src",
132
+ "prepare": "npm run build && npm run builddocs",
133
+ "prepublishOnly": "npm run build",
134
+ "test": "jest"
135
+ },
136
+ "types": "typings/sweetalert.d.ts",
137
+ "version": "2.1.2"
138
+ }
assets/sweetalert/typings/core.d.ts ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { ActionOptions, SwalState } from './modules/state';
2
+ import { SwalOptions } from './modules/options';
3
+ export declare type SwalParams = (string | Partial<SwalOptions>)[];
4
+ export interface SweetAlert {
5
+ (...params: SwalParams): Promise<any>;
6
+ close?(namespace?: string): void;
7
+ getState?(): SwalState;
8
+ setActionValue?(opts: string | ActionOptions): void;
9
+ stopLoading?(): void;
10
+ setDefaults?(opts: object): void;
11
+ }
12
+ declare const swal: SweetAlert;
13
+ export default swal;
assets/sweetalert/typings/modules/actions.d.ts ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ import { SwalState } from './state';
2
+ export declare const openModal: () => void;
3
+ export declare const onAction: (namespace?: string) => void;
4
+ export declare const getState: () => SwalState;
5
+ export declare const stopLoading: () => void;
assets/sweetalert/typings/modules/class-list/index.d.ts ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ export interface ClassNameList {
2
+ [key: string]: string;
3
+ }
4
+ export declare const CLASS_NAMES: ClassNameList;
5
+ export default CLASS_NAMES;
assets/sweetalert/typings/modules/event-listeners.d.ts ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ import { SwalOptions } from './options';
2
+ declare const addEventListeners: (opts: SwalOptions) => void;
3
+ export default addEventListeners;
assets/sweetalert/typings/modules/init/buttons.d.ts ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ import { ButtonList } from '../options/buttons';
2
+ declare const initButtons: (buttons: ButtonList, dangerMode: boolean) => void;
3
+ export default initButtons;
assets/sweetalert/typings/modules/init/content.d.ts ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ import { ContentOptions } from '../options/content';
2
+ declare const initContent: (opts: ContentOptions) => void;
3
+ export default initContent;
assets/sweetalert/typings/modules/init/icon.d.ts ADDED
@@ -0,0 +1,2 @@
 
 
1
+ declare const initIcon: (str: string) => void;
2
+ export default initIcon;
assets/sweetalert/typings/modules/init/index.d.ts ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ import { SwalOptions } from '../options';
2
+ export declare const init: (opts: SwalOptions) => void;
3
+ export default init;
assets/sweetalert/typings/modules/init/modal.d.ts ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ import { SwalOptions } from '../options';
2
+ export declare const injectElIntoModal: (markup: string) => HTMLElement;
3
+ export declare const initModalContent: (opts: SwalOptions) => void;
4
+ declare const initModalOnce: () => void;
5
+ export default initModalOnce;
assets/sweetalert/typings/modules/init/overlay.d.ts ADDED
@@ -0,0 +1,2 @@
 
 
1
+ declare const initOverlayOnce: () => void;
2
+ export default initOverlayOnce;
assets/sweetalert/typings/modules/init/text.d.ts ADDED
@@ -0,0 +1,2 @@
 
 
1
+ export declare const initTitle: (title: string) => void;
2
+ export declare const initText: (text: string) => void;
assets/sweetalert/typings/modules/markup/buttons.d.ts ADDED
@@ -0,0 +1 @@
 
1
+ export declare const buttonMarkup: string;
assets/sweetalert/typings/modules/markup/content.d.ts ADDED
@@ -0,0 +1 @@
 
1
+ export declare const contentMarkup: string;
assets/sweetalert/typings/modules/markup/icons.d.ts ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ export declare const errorIconMarkup: () => string;
2
+ export declare const warningIconMarkup: () => string;
3
+ export declare const successIconMarkup: () => string;
assets/sweetalert/typings/modules/markup/index.d.ts ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ export * from './modal';
2
+ export { default as overlayMarkup } from './overlay';
3
+ export * from './icons';
4
+ export * from './content';
5
+ export * from './buttons';
6
+ export declare const iconMarkup: string;
7
+ export declare const titleMarkup: string;
8
+ export declare const textMarkup: string;
9
+ export declare const footerMarkup: string;
assets/sweetalert/typings/modules/markup/modal.d.ts ADDED
@@ -0,0 +1,2 @@
 
 
1
+ export declare const modalMarkup: string;
2
+ export default modalMarkup;
assets/sweetalert/typings/modules/markup/overlay.d.ts ADDED
@@ -0,0 +1,2 @@
 
 
1
+ declare const overlay: string;
2
+ export default overlay;
assets/sweetalert/typings/modules/options/buttons.d.ts ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ export interface ButtonOptions {
2
+ visible?: boolean;
3
+ text?: string;
4
+ value?: any;
5
+ className?: string | Array<string>;
6
+ closeModal?: boolean;
7
+ }
8
+ export interface ButtonList {
9
+ [buttonNamespace: string]: ButtonOptions | boolean;
10
+ }
11
+ export declare const CONFIRM_KEY = "confirm";
12
+ export declare const CANCEL_KEY = "cancel";
13
+ export declare const defaultButtonList: ButtonList;
14
+ export declare const getButtonListOpts: (opts: string | boolean | object) => ButtonList;
assets/sweetalert/typings/modules/options/content.d.ts ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ export interface ContentOptions {
2
+ element: string | Node;
3
+ attributes?: object;
4
+ }
5
+ export declare const getContentOpts: (contentParam: string | object) => ContentOptions;
assets/sweetalert/typings/modules/options/deprecations.d.ts ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ export declare const logDeprecation: (name: string) => void;
2
+ export interface OptionReplacement {
3
+ replacement?: string;
4
+ onlyRename?: boolean;
5
+ subOption?: string;
6
+ link?: string;
7
+ }
8
+ export interface OptionReplacementsList {
9
+ [name: string]: OptionReplacement;
10
+ }
11
+ export declare const DEPRECATED_OPTS: OptionReplacementsList;
assets/sweetalert/typings/modules/options/index.d.ts ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { ButtonList } from './buttons';
2
+ import { ContentOptions } from './content';
3
+ export interface SwalOptions {
4
+ title: string;
5
+ text: string;
6
+ icon: string;
7
+ buttons: ButtonList | Array<string | boolean>;
8
+ content: ContentOptions;
9
+ className: string;
10
+ closeOnClickOutside: boolean;
11
+ closeOnEsc: boolean;
12
+ dangerMode: boolean;
13
+ timer: number;
14
+ }
15
+ export declare const setDefaults: (opts: object) => void;
16
+ export declare const getOpts: (...params: (string | Partial<SwalOptions>)[]) => SwalOptions;
assets/sweetalert/typings/modules/state.d.ts ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ export interface SwalState {
2
+ isOpen: boolean;
3
+ promise: {
4
+ resolve?(value: string): void;
5
+ reject?(): void;
6
+ };
7
+ actions: {
8
+ [namespace: string]: {
9
+ value?: string | any;
10
+ closeModal?: boolean;
11
+ };
12
+ };
13
+ timer: number;
14
+ }
15
+ export interface ActionOptions {
16
+ [buttonNamespace: string]: {
17
+ value?: string;
18
+ closeModal?: boolean;
19
+ };
20
+ }
21
+ declare let state: SwalState;
22
+ export declare const resetState: () => void;
23
+ export declare const setActionValue: (opts: string | ActionOptions) => void;
24
+ export declare const setActionOptionsFor: (buttonKey: string, {closeModal}?: {
25
+ closeModal?: boolean;
26
+ }) => void;
27
+ export default state;
assets/sweetalert/typings/modules/utils.d.ts ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ export declare const getNode: (className: string) => HTMLElement;
2
+ export declare const stringToNode: (html: string) => HTMLElement;
3
+ export declare const insertAfter: (newNode: Node, referenceNode: Node) => void;
4
+ export declare const removeNode: (node: Node) => void;
5
+ export declare const throwErr: (message: string) => never;
6
+ export declare const isPlainObject: (value: any) => boolean;
7
+ export declare const ordinalSuffixOf: (num: number) => string;
assets/sweetalert/typings/sweetalert.d.ts ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ import swal, { SweetAlert } from "./core";
2
+
3
+ declare global {
4
+ const swal: SweetAlert;
5
+ const sweetAlert: SweetAlert;
6
+ }
7
+
8
+ export default swal;
9
+ export as namespace swal;
classes/HardcodedAssets.php ADDED
@@ -0,0 +1,530 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace WpAssetCleanUp;
3
+
4
+ use WpAssetCleanUp\OptimiseAssets\MinifyJs;
5
+ use WpAssetCleanUp\OptimiseAssets\OptimizeCommon;
6
+ use WpAssetCleanUp\OptimiseAssets\OptimizeJs;
7
+
8
+ /**
9
+ * Class HardcodedAssets
10
+ * @package WpAssetCleanUp
11
+ */
12
+ class HardcodedAssets
13
+ {
14
+ /**
15
+ *
16
+ */
17
+ public static function init()
18
+ {
19
+ add_action( 'init', static function() {
20
+ if (Main::instance()->isGetAssetsCall) {
21
+ // Case 1: An AJAX call is made from the Dashboard
22
+ self::initBufferingForAjaxCallFromTheDashboard();
23
+ } elseif (self::useBufferingForEditFrontEndView()) {
24
+ // Case 2: The logged-in admin manages the assets from the front-end view
25
+ self::initBufferingForFrontendManagement();
26
+ }
27
+ });
28
+ }
29
+
30
+ /**
31
+ *
32
+ */
33
+ public static function initBufferingForAjaxCallFromTheDashboard()
34
+ {
35
+ ob_start();
36
+
37
+ add_action('shutdown', static function() {
38
+ $htmlSource = '';
39
+
40
+ // We'll need to get the number of ob levels we're in, so that we can iterate over each, collecting
41
+ // that buffer's output into the final output.
42
+ $htmlSourceLevel = ob_get_level();
43
+
44
+ for ($wpacuI = 0; $wpacuI < $htmlSourceLevel; $wpacuI++) {
45
+ $htmlSource .= ob_get_clean();
46
+ }
47
+
48
+ $anyHardCodedAssets = HardcodedAssets::getAll($htmlSource); // Fetch all for this type of request
49
+
50
+ $htmlSource = str_replace('{wpacu_hardcoded_assets}', $anyHardCodedAssets, $htmlSource);
51
+
52
+ echo $htmlSource;
53
+ }, 0);
54
+ }
55
+
56
+ /**
57
+ *
58
+ */
59
+ public static function initBufferingForFrontendManagement()
60
+ {
61
+ // Used to print the hardcoded CSS/JS
62
+ ob_start();
63
+
64
+ add_action('shutdown', static function() {
65
+ $htmlSource = '';
66
+
67
+ // We'll need to get the number of ob levels we're in, so that we can iterate over each, collecting
68
+ // that buffer's output into the final output.
69
+ $htmlSourceLevel = ob_get_level();
70
+
71
+ for ($wpacuI = 0; $wpacuI < $htmlSourceLevel; $wpacuI++) {
72
+ $htmlSource .= ob_get_clean();
73
+ }
74
+
75
+ echo self::addHardcodedAssetsForEditFrontEndView(OptimizeCommon::alterHtmlSource($htmlSource));
76
+ }, 0);
77
+ }
78
+
79
+ /**
80
+ * @param $htmlSource
81
+ *
82
+ * @return string|string[]
83
+ */
84
+ public static function addHardcodedAssetsForEditFrontEndView($htmlSource)
85
+ {
86
+ if ( ! ($anyHardCodedAssets = wp_cache_get('wpacu_hardcoded_assets_encoded')) ) {
87
+ $htmlSource = str_replace( '{wpacu_assets_collapsible_wrap_hardcoded_list}', '', $htmlSource);
88
+ return $htmlSource;
89
+ }
90
+
91
+ $jsonH = base64_decode($anyHardCodedAssets);
92
+
93
+ $wpacuPrintHardcodedManagementList = static function($jsonH) {
94
+ $data = wp_cache_get('wpacu_settings_frontend_data') ?: array();
95
+ $data['do_not_print_list'] = true;
96
+ $data['all']['hardcoded'] = (array)json_decode($jsonH, ARRAY_A);
97
+ ob_start();
98
+ include_once WPACU_PLUGIN_DIR.'/templates/meta-box-loaded-assets/_assets-hardcoded-list.php'; // generate $hardcodedTagsOutput
99
+ return ob_get_clean();
100
+ };
101
+
102
+ $htmlSource = str_replace(
103
+ '{wpacu_assets_collapsible_wrap_hardcoded_list}',
104
+ $wpacuPrintHardcodedManagementList($jsonH), // call the function to return the HTML output
105
+ $htmlSource
106
+ );
107
+
108
+ return $htmlSource;
109
+ }
110
+
111
+ /**
112
+ * @return bool
113
+ */
114
+ public static function useBufferingForEditFrontEndView()
115
+ {
116
+ // The logged-in admin needs to be outside the Dashboard (in the front-end view)
117
+ // "Manage in the Front-end" is enabled in "Settings" -> "Plugin Usage Preferences"
118
+ return (Main::instance()->frontendShow() && ! is_admin() && Menu::userCanManageAssets() && ! Main::instance()->isGetAssetsCall);
119
+ }
120
+
121
+ /**
122
+ * @param $htmlSource
123
+ * @param bool $encodeIt - if set to "false", it's mostly for testing purposes
124
+ *
125
+ * @return string|array
126
+ */
127
+ public static function getAll($htmlSource, $encodeIt = true)
128
+ {
129
+ $htmlSourceAlt = self::removeHtmlCommentsExceptMSIE($htmlSource);
130
+
131
+ $collectLinkStyles = true; // default
132
+ $collectScripts = true; // default
133
+
134
+ $hardCodedAssets = array(
135
+ 'link_and_style_tags' => array(), // LINK (rel="stylesheet") & STYLE (inline)
136
+ 'script_src_and_inline_tags' => array(), // SCRIPT (with "src" attribute) & SCRIPT (inline)
137
+ );
138
+
139
+ if ($collectLinkStyles) {
140
+ /*
141
+ * [START] Collect Hardcoded LINK (stylesheet) & STYLE tags
142
+ */
143
+ // Extract all the LINK tag that do not have "data-wpacu-debug-style-handle="
144
+ preg_match_all( '#(?=(?P<link_tag><link[^>]*stylesheet[^>]*(>)))|(?=(?P<style_tag><style[^>]*?>.*</style>))#Umsi',
145
+ $htmlSourceAlt, $matchesSourcesFromTags, PREG_SET_ORDER );
146
+
147
+ if ( ! empty( $matchesSourcesFromTags ) ) {
148
+ // Only the hashes are set
149
+ // For instance, 'd1eae32c4e99d24573042dfbb71f5258a86e2a8e' is the hash for the following script:
150
+ /*
151
+ * <style media="print">#wpadminbar { display:none; }</style>
152
+ */
153
+ $stripsSpecificStylesHashes = array(
154
+ '5ead5f033961f3b8db362d2ede500051f659dd6d',
155
+ '25bd090513716c34b48b0495c834d2070088ad24'
156
+ );
157
+
158
+ // Sometimes, the hash checking might failed (if there's a small change to the JS content)
159
+ // Consider using a fallback verification by checking the actual content
160
+ $stripsSpecificStylesContaining = array(
161
+ '<style media="print">#wpadminbar { display:none; }</style>'
162
+ );
163
+
164
+ foreach ( $matchesSourcesFromTags as $matchedTagIndex => $matchedTag ) {
165
+ // LINK "stylesheet" tags (if any)
166
+ if ( isset( $matchedTag['link_tag'] ) && trim( $matchedTag['link_tag'] ) !== '' && ( trim( strip_tags( $matchedTag['link_tag'] ) ) === '' ) ) {
167
+ $matchedTagOutput = trim( $matchedTag['link_tag'] );
168
+
169
+ if ( strpos( $matchedTagOutput, 'data-wpacu-style-handle=' ) !== false ) {
170
+ // Skip the LINK with src that was enqueued properly and keep the hardcoded ones
171
+ continue;
172
+ }
173
+
174
+ $hardCodedAssets['link_and_style_tags'][] = $matchedTagOutput;
175
+ }
176
+
177
+ // STYLE inline tags (if any)
178
+ if ( isset( $matchedTag['style_tag'] ) && trim( $matchedTag['style_tag'] ) !== '' ) {
179
+ $matchedTagOutput = trim( $matchedTag['style_tag'] );
180
+
181
+ /*
182
+ * Strip certain STYLE tags irrelevant for the list (e.g. related to the WordPress Admin Bar, etc.)
183
+ */
184
+ if ( in_array( sha1( $matchedTagOutput ), $stripsSpecificStylesHashes ) ) {
185
+ continue;
186
+ }
187
+
188
+ foreach ( $stripsSpecificStylesContaining as $cssContentTargeted ) {
189
+ if ( strpos( $matchedTagOutput, $cssContentTargeted ) !== false ) {
190
+ continue;
191
+ }
192
+ }
193
+
194
+ // Do not add to the list elements such as Emojis (not relevant for hard-coded tags)
195
+ if ( strpos( $matchedTagOutput, 'img.wp-smiley' ) !== false
196
+ && strpos( $matchedTagOutput, 'img.emoji' ) !== false
197
+ && strpos( $matchedTagOutput, '!important;' ) !== false ) {
198
+ continue;
199
+ }
200
+
201
+ if ( strpos( $matchedTagOutput, 'data-wpacu-own-inline-style=' ) !== false ) {
202
+ // remove plugin's own STYLE tags as they are not relevant in this context
203
+ continue;
204
+ }
205
+
206
+ foreach ( wp_styles()->done as $cssHandle ) {
207
+ if ( strpos( $matchedTagOutput,
208
+ '<style id=\'' . trim( $cssHandle ) . '-inline-css\'' ) !== false ) {
209
+ // Do not consider the STYLE added via WordPress with wp_add_inline_style() as it's not hardcoded
210
+ continue 2;
211
+ }
212
+ }
213
+
214
+ $hardCodedAssets['link_and_style_tags'][] = $matchedTagOutput;
215
+ }
216
+ }
217
+ }
218
+ /*
219
+ * [END] Collect Hardcoded LINK (stylesheet) & STYLE tags
220
+ */
221
+ }
222
+
223
+ if ($collectScripts) {
224
+ /*
225
+ * [START] Collect Hardcoded SCRIPT (src/inline)
226
+ */
227
+ preg_match_all( '@<script[^>]*?>.*?</script>@si', $htmlSourceAlt, $matchesScriptTags, PREG_SET_ORDER );
228
+
229
+ if ( isset( wp_scripts()->done ) && ! empty( wp_scripts()->done ) ) {
230
+ foreach ( wp_scripts()->done as $assetHandle ) {
231
+ // Go through the STYLE list
232
+ foreach ( $matchesScriptTags as $matchedTagIndex => $matchedTag ) {
233
+ if ( isset( $matchedTag[0] ) ) {
234
+ $matchedTagOutput = trim( $matchedTag[0] );
235
+
236
+ if ( strpos( $matchedTagOutput, 'window._wpemojiSettings' ) !== false
237
+ && strpos( $matchedTagOutput, 'twemoji' ) !== false ) {
238
+ unset( $matchesScriptTags[ $matchedTagIndex ] );
239
+ continue;
240
+ }
241
+
242
+ // Check the type and only allow SCRIPT tags with type='text/javascript' or no type at all (it default to 'text/javascript')
243
+ $matchedTagInner = strip_tags( $matchedTagOutput );
244
+ $matchedTagOnlyTags = str_replace( $matchedTagInner, '', $matchedTagOutput );
245
+ preg_match_all( '#type=(["\'])' . '(.*)' . '(["\'])#Usmi', $matchedTagOnlyTags,
246
+ $outputMatches );
247
+ $scriptType = isset( $outputMatches[2][0] ) ? trim( $outputMatches[2][0],
248
+ '"\'' ) : 'text/javascript';
249
+
250
+ if ( strpos( $scriptType, 'text/javascript' ) === false ) {
251
+ unset( $matchesScriptTags[ $matchedTagIndex ] );
252
+ continue;
253
+ }
254
+
255
+ if ( strpos( $matchedTagOutput, 'data-wpacu-script-handle=' ) !== false ) {
256
+ unset( $matchesScriptTags[ $matchedTagIndex ] ); // remove the SCRIPT with src that was enqueued properly and keep the hardcoded ones
257
+ continue;
258
+ }
259
+
260
+ if ( strpos( $matchedTagOutput, 'data-wpacu-own-inline-script=' ) !== false ) {
261
+ unset( $matchesScriptTags[ $matchedTagIndex ] ); // remove plugin's own SCRIPT tags as they are not relevant in this context
262
+ continue;
263
+ }
264
+
265
+ if ( strpos( $matchedTagOutput, 'wpacu-preload-async-css-fallback' ) !== false ) {
266
+ unset( $matchesScriptTags[ $matchedTagIndex ] ); // remove plugin's own SCRIPT tags as they are not relevant in this context
267
+ continue;
268
+ }
269
+
270
+ // Now, go through the list of inline SCRIPTs associated with an enqueued SCRIPT (with "src" attribute)
271
+ $anyInlineAssocWithJsHandle = OptimizeJs::getInlineAssociatedWithScriptHandle( $assetHandle,
272
+ wp_scripts()->registered, 'handle', false );
273
+ if ( ! empty( $anyInlineAssocWithJsHandle ) ) {
274
+ foreach ( $anyInlineAssocWithJsHandle as $jsInlineTagContent ) {
275
+ if ( trim( $jsInlineTagContent ) === '' ) {
276
+ continue;
277
+ }
278
+
279
+ $jsInlineTagContentMin = MinifyJs::applyMinification( $jsInlineTagContent );
280
+ $matchedTagOutputMin = MinifyJs::applyMinification( $matchedTagOutput );
281
+
282
+ if ( strpos( $matchedTagOutputMin, $jsInlineTagContentMin ) !== false ) {
283
+ unset( $matchesScriptTags[ $matchedTagIndex ] );
284
+ }
285
+ }
286
+ }
287
+ }
288
+ }
289
+ }
290
+ }
291
+
292
+
293
+ // Go through the remaining hardcoded (SCRIPT) ones (if any)
294
+ if ( isset( $matchesScriptTags ) && ! empty( $matchesScriptTags ) ) {
295
+ // Only the hashes are set
296
+ // For instance, 'd1eae32c4e99d24573042dfbb71f5258a86e2a8e' is the hash for the following script:
297
+ /*
298
+ * <script>
299
+ (function() {
300
+ var request, b = document.body, c = 'className', cs = 'customize-support', rcs = new RegExp('(^|\\s+)(no-)?'+cs+'(\\s+|$)');
301
+ request = true;
302
+ b[c] = b[c].replace( rcs, ' ' );
303
+ // The customizer requires postMessage and CORS (if the site is cross domain)
304
+ b[c] += ( window.postMessage && request ? ' ' : ' no-' ) + cs;
305
+ }());
306
+ </script>
307
+ */
308
+ $stripsSpecificScriptsHashes = array(
309
+ 'd1eae32c4e99d24573042dfbb71f5258a86e2a8e',
310
+ '1a8f46f9f33e5d95919620df54781acbfa9efff7'
311
+ );
312
+
313
+ // Sometimes, the hash checking might failed (if there's a small change to the JS content)
314
+ // Consider using a fallback verification by checking the actual content
315
+ $stripsSpecificScriptsContaining = array(
316
+ '// The customizer requires postMessage and CORS (if the site is cross domain)',
317
+ 'b[c] += ( window.postMessage && request ? \' \' : \' no-\' ) + cs;',
318
+ "(function(){var request,b=document.body,c='className',cs='customize-support',rcs=new RegExp('(^|\\s+)(no-)?'+cs+'(\\s+|$)');request=!0;b[c]=b[c].replace(rcs,' ');b[c]+=(window.postMessage&&request?' ':' no-')+cs}())",
319
+ 'document.body.className = document.body.className.replace( /(^|\s)(no-)?customize-support(?=\s|$)/, \'\' ) + \' no-customize-support\''
320
+ );
321
+
322
+ foreach ( $matchesScriptTags as $matchedTag ) {
323
+ if ( isset( $matchedTag[0] ) && $matchedTag[0] && strpos( $matchedTag[0], '<script' ) === 0 ) {
324
+ /*
325
+ * Strip certain SCRIPT tags irrelevant for the list (e.g. related to WordPress Customiser, Admin Bar, etc.)
326
+ */
327
+ if ( in_array( sha1( $matchedTag[0] ), $stripsSpecificScriptsHashes ) ) {
328
+ continue;
329
+ }
330
+
331
+ foreach ( $stripsSpecificScriptsContaining as $jsContentTargeted ) {
332
+ if ( strpos( $matchedTag[0], $jsContentTargeted ) !== false ) {
333
+ continue;
334
+ }
335
+ }
336
+
337
+ $hardCodedAssets['script_src_and_inline_tags'][] = trim( $matchedTag[0] );
338
+ }
339
+ }
340
+ }
341
+ /*
342
+ * [END] Collect Hardcoded SCRIPT (src/inline)
343
+ */
344
+ }
345
+
346
+ $tagsWithinConditionalComments = self::extractHtmlFromConditionalComments( $htmlSourceAlt );
347
+
348
+ if (self::useBufferingForEditFrontEndView()) {
349
+ // Triggered within the front-end view (when admin is logged-in and manages the assets)
350
+ wp_cache_set( 'wpacu_hardcoded_content_within_conditional_comments', $tagsWithinConditionalComments );
351
+ } elseif (Main::instance()->isGetAssetsCall) {
352
+ // AJAX call within the Dashboard
353
+ $hardCodedAssets['within_conditional_comments'] = $tagsWithinConditionalComments;
354
+ }
355
+
356
+ if ($encodeIt) {
357
+ return base64_encode( json_encode( $hardCodedAssets ) );
358
+ }
359
+
360
+ return $hardCodedAssets;
361
+ }
362
+
363
+ /**
364
+ * @param $htmlSource
365
+ *
366
+ * @return mixed
367
+ */
368
+ public static function removeHtmlCommentsExceptMSIE($htmlSource)
369
+ {
370
+ // No comments? Do not continue
371
+ if (strpos($htmlSource, '<!--') === false) {
372
+ return $htmlSource;
373
+ }
374
+
375
+ if (! (function_exists('libxml_use_internal_errors')
376
+ && function_exists('libxml_clear_errors')
377
+ && class_exists('DOMDocument')))
378
+ {
379
+ return $htmlSource;
380
+ }
381
+
382
+ $domComments = new \DOMDocument();
383
+ libxml_use_internal_errors(true);
384
+
385
+ preg_match_all('#<!--\[if(.*?)]>(<!-->|-->|\s|)(.*?)(<!--<!|<!)\[endif]-->#si', $htmlSource, $matchedMSIEComments);
386
+
387
+ $htmlSourceAlt = $htmlSource;
388
+
389
+ if (isset($matchedMSIEComments[0]) && ! empty($matchedMSIEComments[0])) {
390
+ foreach ($matchedMSIEComments[0] as $matchedMSIEComment) {
391
+ $htmlSourceAlt = str_replace($matchedMSIEComment, '', $htmlSourceAlt);
392
+ }
393
+ }
394
+
395
+ $domComments->loadHTML($htmlSourceAlt); // fetch from the altered HTML (without the MSIE comments)
396
+
397
+ $xpathComments = new \DOMXPath($domComments);
398
+ $comments = $xpathComments->query('//comment()');
399
+
400
+ libxml_clear_errors();
401
+
402
+ if ($comments === null) {
403
+ return $htmlSource;
404
+ }
405
+
406
+ preg_match_all('#<!--(.*?)-->#s', $htmlSource, $matchesRegExpComments);
407
+
408
+ // "comments" within tag attributes or script tags?
409
+ // e.g. <script>var type='<!-- A comment here -->';</script>
410
+ // e.g. <div data-info="This is just a <!-- comment --> text">Content here</div>
411
+ $commentsWithinQuotes = array();
412
+
413
+ if (isset($matchesRegExpComments[1]) && count($matchesRegExpComments[1]) !== count($comments)) {
414
+ preg_match_all('#=(|\s+)([\'"])(|\s+)<!--(.*?)-->(|\s+)([\'"])#s', $htmlSource, $matchesCommentsWithinQuotes);
415
+
416
+ if (isset($matchesCommentsWithinQuotes[0]) && ! empty($matchesCommentsWithinQuotes[0])) {
417
+ foreach ($matchesCommentsWithinQuotes[0] as $matchedDataOriginal) {
418
+ $matchedDataUpdated = str_replace(
419
+ array('', '<!--', '-->'),
420
+ array('--wpacu-space-del--', '--wpacu-start-comm--', '--wpacu-end-comm--'),
421
+ $matchedDataOriginal
422
+ );
423
+
424
+ $htmlSource = str_replace($matchedDataOriginal, $matchedDataUpdated, $htmlSource);
425
+
426
+ $commentsWithinQuotes[] = array(
427
+ 'original' => $matchedDataOriginal,
428
+ 'updated' => $matchedDataUpdated
429
+ );
430
+ }
431
+ }
432
+ }
433
+
434
+ foreach ($comments as $comment) {
435
+ $entireComment = CleanUp::getOuterHTML($comment);
436
+
437
+ $htmlSource = str_replace(
438
+ array(
439
+ $entireComment,
440
+ '<!--' . $comment->nodeValue . '-->'
441
+ ),
442
+ '',
443
+ $htmlSource
444
+ );
445
+ }
446
+
447
+ if (! empty($commentsWithinQuotes)) {
448
+ foreach ($commentsWithinQuotes as $commentQuote) {
449
+ $htmlSource = str_replace($commentQuote['updated'], $commentQuote['original'], $htmlSource);
450
+ }
451
+ }
452
+
453
+ return $htmlSource;
454
+ }
455
+
456
+ /**
457
+ * @param $htmlSource
458
+ *
459
+ * @return array
460
+ */
461
+ public static function extractHtmlFromConditionalComments($htmlSource)
462
+ {
463
+ preg_match_all('#<!--\[if(.*?)]>(<!-->|-->|\s|)(.*?)(<!--<!|<!)\[endif]-->#si', $htmlSource, $matchedContent);
464
+
465
+ if (isset($matchedContent[1], $matchedContent[3]) && ! empty($matchedContent[1]) && ! empty($matchedContent[3])) {
466
+ $conditions = array_map('trim', $matchedContent[1]);
467
+ $tags = array_map('trim', $matchedContent[3]);
468
+
469
+ return array(
470
+ 'conditions' => $conditions,
471
+ 'tags' => $tags,
472
+ );
473
+ }
474
+
475
+ return array();
476
+ }
477
+
478
+ /**
479
+ * @param $targetedTag
480
+ * @param $contentWithinConditionalComments
481
+ *
482
+ * @return bool
483
+ */
484
+ public static function isWithinConditionalComment($targetedTag, $contentWithinConditionalComments)
485
+ {
486
+ if (empty($contentWithinConditionalComments)) {
487
+ return false;
488
+ }
489
+
490
+ $targetedTag = trim($targetedTag);
491
+
492
+ foreach ($contentWithinConditionalComments['tags'] as $tagIndex => $tagFromList) {
493
+ $tagFromList = trim($tagFromList);
494
+
495
+ if ($targetedTag === $tagFromList || strpos($targetedTag, $tagFromList) !== false) {
496
+ return $contentWithinConditionalComments['conditions'][$tagIndex]; // Stops here and returns the condition
497
+ break;
498
+ }
499
+ }
500
+
501
+ return false; // Not within a conditional comment (most cases)
502
+ }
503
+
504
+ /**
505
+ * @param $htmlTag
506
+ *
507
+ * @return bool|string
508
+ */
509
+ public static function belongsTo($htmlTag)
510
+ {
511
+ $belongList = array(
512
+ 'wpcf7recaptcha.' => '"Contact Form 7" plugin',
513
+ 'c = c.replace(/woocommerce-no-js/, \'woocommerce-js\');' => '"WooCommerce" plugin',
514
+ '.woocommerce-product-gallery{ opacity: 1 !important; }' => '"WooCommerce" plugin',
515
+ '-ss-slider-3' => '"Smart Slider 3" plugin',
516
+ 'N2R(["nextend-frontend","smartslider-frontend","smartslider-simple-type-frontend"]' => '"Smart Slider 3" plugin',
517
+ 'function setREVStartSize' => '"Slider Revolution" plugin',
518
+ 'jQuery(\'.rev_slider_wrapper\')' => '"Slider Revolution" plugin',
519
+ 'jQuery(\'#wp-admin-bar-revslider-default' => '"Slider Revolution" plugin'
520
+ );
521
+
522
+ foreach ($belongList as $ifContains => $isFromSource) {
523
+ if ( strpos( $htmlTag, $ifContains) !== false ) {
524
+ return $isFromSource;
525
+ }
526
+ }
527
+
528
+ return false;
529
+ }
530
+ }
classes/ImportExport.php CHANGED
@@ -156,7 +156,7 @@ SQL;
156
  // Last important check
157
  \check_admin_referer('wpacu_do_import', 'wpacu_do_import_nonce');
158
 
159
- if (! file_exists($jsonTmpName)) {
160
  return;
161
  }
162
 
156
  // Last important check
157
  \check_admin_referer('wpacu_do_import', 'wpacu_do_import_nonce');
158
 
159
+ if (! is_file($jsonTmpName)) {
160
  return;
161
  }
162
 
classes/Main.php CHANGED
@@ -228,7 +228,20 @@ class Main
228
  }, 10, 1);
229
  }
230
 
231
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
232
 
233
  // Early Triggers
234
  add_action('wp', array($this, 'setVarsBeforeUpdate'), 8);
@@ -526,7 +539,7 @@ SQL;
526
  }
527
  }
528
 
529
- /* [START] Styles Dequeue */
530
  /**
531
  * See if there is any list with styles to be removed in JSON format
532
  * Only the handles (the ID of the styles) is stored
@@ -681,6 +694,15 @@ SQL;
681
 
682
  $handle = trim($handle);
683
 
 
 
 
 
 
 
 
 
 
684
  wp_deregister_style($handle);
685
  wp_dequeue_style($handle);
686
  }
@@ -938,6 +960,15 @@ SQL;
938
  continue;
939
  }
940
 
 
 
 
 
 
 
 
 
 
941
  wp_deregister_script($handle);
942
  wp_dequeue_script($handle);
943
  }
@@ -1642,10 +1673,11 @@ SQL;
1642
  $wpacuSettings = new Settings();
1643
 
1644
  $data = array(
1645
- 'is_updateable' => true,
1646
- 'post_type' => '',
1647
- 'bulk_unloaded' => array('post_type' => array()),
1648
- 'plugin_settings' => $wpacuSettings->getAll()
 
1649
  );
1650
 
1651
  $data['wpacu_page_just_updated'] = false;
@@ -1659,7 +1691,7 @@ SQL;
1659
  if ($this->isUpdateable) {
1660
  // [/wpacu_lite]
1661
  $data['current'] = $currentUnloaded;
1662
- $data['all']['scripts'] = $list['scripts'];
1663
  $data['all']['styles'] = $list['styles'];
1664
 
1665
  if ($data['plugin_settings']['assets_list_layout'] === 'by-location') {
@@ -1736,7 +1768,8 @@ SQL;
1736
 
1737
  $data['ignore_child'] = $this->getIgnoreChildren();
1738
 
1739
- $this->parseTemplate('settings-frontend', $data, true);
 
1740
  } elseif ($isDashboardEditView) {
1741
  // AJAX call (not the classic WP one) from the WP Dashboard
1742
  // Send the altered value that has the initial position too
@@ -1758,9 +1791,11 @@ SQL;
1758
  echo self::START_DEL_ENQUEUED . base64_encode(json_encode($list)) . self::END_DEL_ENQUEUED; // Loaded via wp_enqueue_scripts()
1759
  echo self::START_DEL_HARDCODED . '{wpacu_hardcoded_assets}' . self::END_DEL_HARDCODED; // Make the user aware of any hardcoded CSS/JS (if any)
1760
 
1761
- // Do not allow further processes as cache plugins such as W3 Total Cache could alter the source code
1762
- // and we need the non-minified version of the DOM (e.g. to determine the position of the elements)
1763
- exit();
 
 
1764
  }
1765
  }
1766
 
@@ -1778,7 +1813,7 @@ SQL;
1778
  $name // extra argument
1779
  );
1780
 
1781
- if (! file_exists($templateFile)) {
1782
  return 'Template '.$templateFile.' not found.';
1783
  }
1784
 
@@ -1802,9 +1837,11 @@ SQL;
1802
  $postId = (int)Misc::getVar('post', 'post_id'); // if any (could be home page for instance)
1803
  $pageUrl = Misc::getVar('post', 'page_url'); // post, page, custom post type, home page etc.
1804
 
 
 
1805
  // Not homepage, but a post/page? Check if it's published in case AJAX call
1806
  // wasn't stopped due to JS errors or other reasons
1807
- if ($postId > 0 && get_post_status($postId) !== 'publish') {
1808
  exit(__('The CSS/JS files will be available to manage once the post/page is published.', 'wp-asset-clean-up'));
1809
  }
1810
 
@@ -1812,7 +1849,9 @@ SQL;
1812
 
1813
  $settings = new Settings();
1814
 
1815
- if (self::$domGetType === 'direct') {
 
 
1816
  $wpacuListE = Misc::getVar('post', 'wpacu_list_e');
1817
  $wpacuListH = Misc::getVar('post', 'wpacu_list_h');
1818
  } elseif (self::$domGetType === 'wp_remote_post') {
@@ -1852,6 +1891,10 @@ SQL;
1852
  // EITHER the enqueued or hardcoded list of assets HAS TO BE RETRIEVED
1853
  // Print out the 'error' response to make the user aware about it
1854
  if ( ! ($wpacuListE || $wpacuListH) ) {
 
 
 
 
1855
  $data = array(
1856
  'is_dashboard_view' => true,
1857
  'plugin_settings' => $settings->getAll(),
@@ -1863,12 +1906,10 @@ SQL;
1863
  }
1864
  }
1865
 
1866
- // Enqueued CSS/JS (most of them or all)
1867
- $jsonE = base64_decode($wpacuListE);
1868
-
1869
  $data = array(
1870
- 'post_id' => $postId,
1871
- 'plugin_settings' => $settings->getAll()
 
1872
  );
1873
 
1874
  // [START] Enqueued CSS/JS (most of them or all)
@@ -1891,6 +1932,10 @@ SQL;
1891
  // Only set the following variables if there is at least one hardcoded LINK/STYLE/SCRIPT
1892
  $jsonH = base64_decode( $wpacuListH );
1893
  $data['all']['hardcoded'] = (array) json_decode( $jsonH, ARRAY_A );
 
 
 
 
1894
  }
1895
  // [END] Hardcoded (if any)
1896
 
@@ -1906,10 +1951,10 @@ SQL;
1906
  $data['all'] = Sorting::sortListByAlpha($data['all']);
1907
  }
1908
 
1909
- // This value is needed to determine the location of an asset (HEAD OR BODY)
1910
- // Check any existing results
1911
  $data['current'] = (array)json_decode($this->getAssetsUnloaded($postId));
1912
- // Set to empty if not set to avoid any errors
 
1913
  if (! isset($data['current']['styles']) || !is_array($data['current']['styles'])) {
1914
  $data['current']['styles'] = array();
1915
  }
@@ -1920,7 +1965,9 @@ SQL;
1920
 
1921
  $data['fetch_url'] = $pageUrl;
1922
  $data['global_unload'] = $this->getGlobalUnload();
1923
- $data['is_bulk_unloadable'] = $data['bulk_unloaded_type'] = false;
 
 
1924
 
1925
  // Post Information
1926
  if ($postId > 0) {
@@ -1935,7 +1982,7 @@ SQL;
1935
  $data['bulk_unloaded']['post_type'] = $this->getBulkUnload('post_type', $data['post_type']);
1936
  $data['bulk_unloaded_type'] = 'post_type';
1937
  $data['is_bulk_unloadable'] = true;
1938
- }
1939
  }
1940
 
1941
  if ($postId > 0) {
@@ -1948,7 +1995,8 @@ SQL;
1948
  $data['wpacu_type'] = $type;
1949
 
1950
  $data['load_exceptions'] = $this->getLoadExceptions($type, $postId);
1951
- $data['total_styles'] = ! empty($data['all']['styles']) ? count($data['all']['styles']) : 0;
 
1952
  $data['total_scripts'] = ! empty($data['all']['scripts']) ? count($data['all']['scripts']) : 0;
1953
 
1954
  $data['all_deps'] = $this->getAllDeps($data['all']);
@@ -1956,7 +2004,6 @@ SQL;
1956
  $data['preloads'] = Preloads::instance()->getPreloads();
1957
 
1958
  $data['handle_load_logged_in'] = $this->getHandleLoadLoggedIn();
1959
-
1960
  $data['handle_notes'] = $this->getHandleNotes();
1961
 
1962
  $data['ignore_child'] = $this->getIgnoreChildren();
@@ -2160,7 +2207,7 @@ SQL;
2160
  // Loaded from WordPress directories (Core)
2161
  if (in_array($parentDir, array('wp-includes', 'wp-admin')) || strpos($obj->src, '/plugins/jquery-updater/js/jquery-') !== false) {
2162
  $data['all']['scripts'][$key]->wp = true;
2163
- $data['core_scripts_loaded'] = true;
2164
  }
2165
 
2166
  // Determine source href
@@ -2173,7 +2220,7 @@ SQL;
2173
 
2174
  if (in_array($obj->handle, array('jquery', 'jquery-core', 'jquery-migrate'))) {
2175
  $data['all']['scripts'][$key]->wp = true;
2176
- $data['core_scripts_loaded'] = true;
2177
  }
2178
  }
2179
  }
@@ -2199,44 +2246,44 @@ SQL;
2199
  $isInAdminPageViaAjax = (is_admin() && defined('DOING_AJAX') && DOING_AJAX);
2200
 
2201
  if (empty($this->assetsRemoved)) {
2202
- // For Home Page (latest blog posts)
2203
- if ($postId < 1 && ($isInAdminPageViaAjax || Misc::isHomePage())) {
2204
- $this->assetsRemoved = get_option( WPACU_PLUGIN_ID . '_front_page_no_load');
2205
- } elseif ($postId > 0) {
2206
- $this->assetsRemoved = get_post_meta($postId, '_' . WPACU_PLUGIN_ID . '_no_load', true);
2207
- }
2208
 
2209
- @json_decode($this->assetsRemoved);
2210
 
2211
- if (! (Misc::jsonLastError() === JSON_ERROR_NONE) || empty($this->assetsRemoved)) {
2212
- // Reset value to a JSON formatted one
2213
- $this->assetsRemoved = json_encode(array('styles' => array(), 'scripts' => array()));
2214
  }
2215
- }
2216
 
2217
- $assetsRemovedDecoded = json_decode($this->assetsRemoved, ARRAY_A);
2218
 
2219
- if (Misc::getVar('get', 'wpacu_unload_css')) {
2220
- $cssOnTheFlyList = $this->unloadAssetOnTheFly('css');
2221
 
2222
- if (! empty($cssOnTheFlyList)) {
2223
- foreach ($cssOnTheFlyList as $cssHandle) {
2224
- $assetsRemovedDecoded['styles'][] = $cssHandle;
2225
- }
2226
- }
2227
- }
2228
 
2229
- if (Misc::getVar('get', 'wpacu_unload_js')) {
2230
- $jsOnTheFlyList = $this->unloadAssetOnTheFly('js');
2231
 
2232
- if (! empty($jsOnTheFlyList)) {
2233
- foreach ($jsOnTheFlyList as $jsHandle) {
2234
- $assetsRemovedDecoded['scripts'][] = $jsHandle;
2235
- }
2236
- }
2237
- }
2238
 
2239
- $this->assetsRemoved = json_encode($assetsRemovedDecoded);
 
2240
 
2241
  return $this->assetsRemoved;
2242
  }
228
  }, 10, 1);
229
  }
230
 
231
+ add_filter('style_loader_tag', static function($styleTag, $tagHandle) {
232
+ // This is used to determine if the LINK is enqueued later on
233
+ // If the handle name is not showing up, then the LINK stylesheet has been hardcoded (not enqueued the WordPress way)
234
+ return str_replace('<link ', '<link data-wpacu-style-handle=\'' . $tagHandle . '\' ', $styleTag);
235
+ }, 10, 2);
236
+
237
+ add_filter('script_loader_tag', static function($scriptTag, $tagHandle) {
238
+ // This is used to determine if the SCRIPT is enqueued later on
239
+ // If the handle name is not showing up, then the SCRIPT has been hardcoded (not enqueued the WordPress way)
240
+ $reps = array('<script ' => '<script data-wpacu-script-handle=\'' . $tagHandle . '\' ');
241
+
242
+ return str_replace(array_keys($reps), array_values($reps), $scriptTag);
243
+ }, 10, 2);
244
+ }
245
 
246
  // Early Triggers
247
  add_action('wp', array($this, 'setVarsBeforeUpdate'), 8);
539
  }
540
  }
541
 
542
+ /* [START] Styles Dequeue */
543
  /**
544
  * See if there is any list with styles to be removed in JSON format
545
  * Only the handles (the ID of the styles) is stored
694
 
695
  $handle = trim($handle);
696
 
697
+ // Ignore auto generated handles for the hardcoded CSS as they were added for reference purposes
698
+ if (strpos($handle, 'wpacu_hardcoded_link_') === 0) {
699
+ continue;
700
+ }
701
+
702
+ if (strpos($handle, 'wpacu_hardcoded_style_') === 0) {
703
+ continue;
704
+ }
705
+
706
  wp_deregister_style($handle);
707
  wp_dequeue_style($handle);
708
  }
960
  continue;
961
  }
962
 
963
+ // Ignore auto generated handles for the hardcoded CSS as they were added for reference purposes
964
+ if (strpos($handle, 'wpacu_hardcoded_script_src_') === 0) {
965
+ continue;
966
+ }
967
+
968
+ if (strpos($handle, 'wpacu_hardcoded_script_inline_') === 0) {
969
+ continue;
970
+ }
971
+
972
  wp_deregister_script($handle);
973
  wp_dequeue_script($handle);
974
  }
1673
  $wpacuSettings = new Settings();
1674
 
1675
  $data = array(
1676
+ 'is_frontend_view' => true,
1677
+ 'is_updateable' => true,
1678
+ 'post_type' => '',
1679
+ 'bulk_unloaded' => array('post_type' => array()),
1680
+ 'plugin_settings' => $wpacuSettings->getAll()
1681
  );
1682
 
1683
  $data['wpacu_page_just_updated'] = false;
1691
  if ($this->isUpdateable) {
1692
  // [/wpacu_lite]
1693
  $data['current'] = $currentUnloaded;
1694
+ $data['all']['scripts'] = $list['scripts'];
1695
  $data['all']['styles'] = $list['styles'];
1696
 
1697
  if ($data['plugin_settings']['assets_list_layout'] === 'by-location') {
1768
 
1769
  $data['ignore_child'] = $this->getIgnoreChildren();
1770
 
1771
+ wp_cache_set('wpacu_settings_frontend_data', $data);
1772
+ $this->parseTemplate('settings-frontend', $data, true);
1773
  } elseif ($isDashboardEditView) {
1774
  // AJAX call (not the classic WP one) from the WP Dashboard
1775
  // Send the altered value that has the initial position too
1791
  echo self::START_DEL_ENQUEUED . base64_encode(json_encode($list)) . self::END_DEL_ENQUEUED; // Loaded via wp_enqueue_scripts()
1792
  echo self::START_DEL_HARDCODED . '{wpacu_hardcoded_assets}' . self::END_DEL_HARDCODED; // Make the user aware of any hardcoded CSS/JS (if any)
1793
 
1794
+ add_action('shutdown', static function() {
1795
+ // Do not allow further processes as cache plugins such as W3 Total Cache could alter the source code
1796
+ // and we need the non-minified version of the DOM (e.g. to determine the position of the elements)
1797
+ exit();
1798
+ });
1799
  }
1800
  }
1801
 
1813
  $name // extra argument
1814
  );
1815
 
1816
+ if (! is_file($templateFile)) {
1817
  return 'Template '.$templateFile.' not found.';
1818
  }
1819
 
1837
  $postId = (int)Misc::getVar('post', 'post_id'); // if any (could be home page for instance)
1838
  $pageUrl = Misc::getVar('post', 'page_url'); // post, page, custom post type, home page etc.
1839
 
1840
+ $postStatus = $postId > 0 ? get_post_status($postId) : false;
1841
+
1842
  // Not homepage, but a post/page? Check if it's published in case AJAX call
1843
  // wasn't stopped due to JS errors or other reasons
1844
+ if ($postId > 0 && ! in_array($postStatus, array('publish', 'private'))) {
1845
  exit(__('The CSS/JS files will be available to manage once the post/page is published.', 'wp-asset-clean-up'));
1846
  }
1847
 
1849
 
1850
  $settings = new Settings();
1851
 
1852
+ // If the post status is 'private' only direct method can be used to fetch the assets
1853
+ // as the remote post one will return a 404 error since the page is accessed as a guest visitor
1854
+ if (self::$domGetType === 'direct' || $postStatus === 'private') {
1855
  $wpacuListE = Misc::getVar('post', 'wpacu_list_e');
1856
  $wpacuListH = Misc::getVar('post', 'wpacu_list_h');
1857
  } elseif (self::$domGetType === 'wp_remote_post') {
1891
  // EITHER the enqueued or hardcoded list of assets HAS TO BE RETRIEVED
1892
  // Print out the 'error' response to make the user aware about it
1893
  if ( ! ($wpacuListE || $wpacuListH) ) {
1894
+ if (isset($wpRemotePost['body']) && $wpRemotePost['body']) {
1895
+ $wpRemotePost['body'] = strip_tags($wpRemotePost['body'], '<p><a><strong><b><em><i>');
1896
+ }
1897
+
1898
  $data = array(
1899
  'is_dashboard_view' => true,
1900
  'plugin_settings' => $settings->getAll(),
1906
  }
1907
  }
1908
 
 
 
 
1909
  $data = array(
1910
+ 'is_dashboard_view' => true,
1911
+ 'post_id' => $postId,
1912
+ 'plugin_settings' => $settings->getAll()
1913
  );
1914
 
1915
  // [START] Enqueued CSS/JS (most of them or all)
1932
  // Only set the following variables if there is at least one hardcoded LINK/STYLE/SCRIPT
1933
  $jsonH = base64_decode( $wpacuListH );
1934
  $data['all']['hardcoded'] = (array) json_decode( $jsonH, ARRAY_A );
1935
+
1936
+ if (isset($data['all']['hardcoded']['within_conditional_comments']) && ! empty($data['all']['hardcoded']['within_conditional_comments'])) {
1937
+ wp_cache_set( 'wpacu_hardcoded_content_within_conditional_comments', $data['all']['hardcoded']['within_conditional_comments'] );
1938
+ }
1939
  }
1940
  // [END] Hardcoded (if any)
1941
 
1951
  $data['all'] = Sorting::sortListByAlpha($data['all']);
1952
  }
1953
 
1954
+ // Check any existing results
 
1955
  $data['current'] = (array)json_decode($this->getAssetsUnloaded($postId));
1956
+
1957
+ // Set to empty if not set to avoid any errors
1958
  if (! isset($data['current']['styles']) || !is_array($data['current']['styles'])) {
1959
  $data['current']['styles'] = array();
1960
  }
1965
 
1966
  $data['fetch_url'] = $pageUrl;
1967
  $data['global_unload'] = $this->getGlobalUnload();
1968
+ $data['is_bulk_unloadable'] = $data['bulk_unloaded_type'] = false;
1969
+
1970
+ $data['bulk_unloaded']['post_type'] = array('styles' => array(), 'scripts' => array());
1971
 
1972
  // Post Information
1973
  if ($postId > 0) {
1982
  $data['bulk_unloaded']['post_type'] = $this->getBulkUnload('post_type', $data['post_type']);
1983
  $data['bulk_unloaded_type'] = 'post_type';
1984
  $data['is_bulk_unloadable'] = true;
1985
+ }
1986
  }
1987
 
1988
  if ($postId > 0) {
1995
  $data['wpacu_type'] = $type;
1996
 
1997
  $data['load_exceptions'] = $this->getLoadExceptions($type, $postId);
1998
+
1999
+ $data['total_styles'] = ! empty($data['all']['styles']) ? count($data['all']['styles']) : 0;
2000
  $data['total_scripts'] = ! empty($data['all']['scripts']) ? count($data['all']['scripts']) : 0;
2001
 
2002
  $data['all_deps'] = $this->getAllDeps($data['all']);
2004
  $data['preloads'] = Preloads::instance()->getPreloads();
2005
 
2006
  $data['handle_load_logged_in'] = $this->getHandleLoadLoggedIn();
 
2007
  $data['handle_notes'] = $this->getHandleNotes();
2008
 
2009
  $data['ignore_child'] = $this->getIgnoreChildren();
2207
  // Loaded from WordPress directories (Core)
2208
  if (in_array($parentDir, array('wp-includes', 'wp-admin')) || strpos($obj->src, '/plugins/jquery-updater/js/jquery-') !== false) {
2209
  $data['all']['scripts'][$key]->wp = true;
2210
+ $data['core_scripts_loaded'] = true;
2211
  }
2212
 
2213
  // Determine source href
2220
 
2221
  if (in_array($obj->handle, array('jquery', 'jquery-core', 'jquery-migrate'))) {
2222
  $data['all']['scripts'][$key]->wp = true;
2223
+ $data['core_scripts_loaded'] = true;
2224
  }
2225
  }
2226
  }
2246
  $isInAdminPageViaAjax = (is_admin() && defined('DOING_AJAX') && DOING_AJAX);
2247
 
2248
  if (empty($this->assetsRemoved)) {
2249
+ // For Home Page (latest blog posts)
2250
+ if ( $postId < 1 && ( $isInAdminPageViaAjax || Misc::isHomePage() ) ) {
2251
+ $this->assetsRemoved = get_option( WPACU_PLUGIN_ID . '_front_page_no_load' );
2252
+ } elseif ( $postId > 0 ) {
2253
+ $this->assetsRemoved = get_post_meta( $postId, '_' . WPACU_PLUGIN_ID . '_no_load', true );
2254
+ }
2255
 
2256
+ @json_decode( $this->assetsRemoved );
2257
 
2258
+ if ( ! ( Misc::jsonLastError() === JSON_ERROR_NONE ) || empty( $this->assetsRemoved ) ) {
2259
+ // Reset value to a JSON formatted one
2260
+ $this->assetsRemoved = json_encode( array( 'styles' => array(), 'scripts' => array() ) );
2261
  }
 
2262
 
2263
+ $assetsRemovedDecoded = json_decode( $this->assetsRemoved, ARRAY_A );
2264
 
2265
+ if ( Misc::getVar( 'get', 'wpacu_unload_css' ) ) {
2266
+ $cssOnTheFlyList = $this->unloadAssetOnTheFly( 'css' );
2267
 
2268
+ if ( ! empty( $cssOnTheFlyList ) ) {
2269
+ foreach ( $cssOnTheFlyList as $cssHandle ) {
2270
+ $assetsRemovedDecoded['styles'][] = $cssHandle;
2271
+ }
2272
+ }
2273
+ }
2274
 
2275
+ if ( Misc::getVar( 'get', 'wpacu_unload_js' ) ) {
2276
+ $jsOnTheFlyList = $this->unloadAssetOnTheFly( 'js' );
2277
 
2278
+ if ( ! empty( $jsOnTheFlyList ) ) {
2279
+ foreach ( $jsOnTheFlyList as $jsHandle ) {
2280
+ $assetsRemovedDecoded['scripts'][] = $jsHandle;
2281
+ }
2282
+ }
2283
+ }
2284
 
2285
+ $this->assetsRemoved = json_encode( $assetsRemovedDecoded );
2286
+ }
2287
 
2288
  return $this->assetsRemoved;
2289
  }
classes/MetaBoxes.php CHANGED
@@ -106,7 +106,7 @@ class MetaBoxes
106
  if (! Main::instance()->settings['dashboard_show']) {
107
  $isListFetchable = false;
108
  $data['status'] = 2; // "Manage within Dashboard" is disabled in plugin's settings
109
- } elseif ($postId < 1 || get_post_status($postId) !== 'publish') {
110
  $data['status'] = 3; // "draft", "auto-draft" post (it has to be published)
111
  $isListFetchable = false;
112
  }
106
  if (! Main::instance()->settings['dashboard_show']) {
107
  $isListFetchable = false;
108
  $data['status'] = 2; // "Manage within Dashboard" is disabled in plugin's settings
109
+ } elseif ($postId < 1 || ! in_array(get_post_status($postId), array('publish', 'private'))) {
110
  $data['status'] = 3; // "draft", "auto-draft" post (it has to be published)
111
  $isListFetchable = false;
112
  }
classes/Misc.php CHANGED
@@ -327,7 +327,7 @@ class Misc
327
 
328
  $localPathToFile = ABSPATH . $path . $relSrc;
329
 
330
- if (file_exists($localPathToFile)) {
331
  return array('base_url' => $baseUrl, 'rel_src' => $path . $relSrc, 'file_exists' => 1);
332
  }
333
  }
@@ -598,7 +598,7 @@ HTML;
598
  $sqlQuery = <<<SQL
599
  SELECT pm.meta_value FROM `{$wpdb->prefix}postmeta` pm
600
  LEFT JOIN `{$wpdb->prefix}posts` p ON (p.ID = pm.post_id)
601
- WHERE p.post_status='publish' AND pm.meta_key='{$sqlPart}'
602
  SQL;
603
 
604
  $sqlResults = $wpdb->get_results($sqlQuery, ARRAY_A);
@@ -735,7 +735,7 @@ SQL;
735
  }
736
 
737
  // no readme.txt file in the plugin's root folder? skip it
738
- if (! file_exists(WP_PLUGIN_DIR.'/'.$pluginSlug.'/readme.txt')) {
739
  continue;
740
  }
741
 
327
 
328
  $localPathToFile = ABSPATH . $path . $relSrc;
329
 
330
+ if (is_file($localPathToFile)) {
331
  return array('base_url' => $baseUrl, 'rel_src' => $path . $relSrc, 'file_exists' => 1);
332
  }
333
  }
598
  $sqlQuery = <<<SQL
599
  SELECT pm.meta_value FROM `{$wpdb->prefix}postmeta` pm
600
  LEFT JOIN `{$wpdb->prefix}posts` p ON (p.ID = pm.post_id)
601
+ WHERE (p.post_status='publish' OR p.post_status='private') AND pm.meta_key='{$sqlPart}'
602
  SQL;
603
 
604
  $sqlResults = $wpdb->get_results($sqlQuery, ARRAY_A);
735
  }
736
 
737
  // no readme.txt file in the plugin's root folder? skip it
738
+ if (! is_file(WP_PLUGIN_DIR.'/'.$pluginSlug.'/readme.txt')) {
739
  continue;
740
  }
741
 
classes/OptimiseAssets/CombineCss.php CHANGED
@@ -132,7 +132,7 @@ class CombineCss
132
  // Any link hrefs removed perhaps if the file wasn't combined?
133
  $linkHrefs = $maybeDoCssCombine['link_hrefs'];
134
 
135
- if (file_exists($localFinalCssFile)) {
136
  $storageJsonContents[$docLocationTag][$mediaValue] = array(
137
  'uri_to_final_css_file' => $uriToFinalCssFile,
138
  'link_hrefs' => array_map(static function($href) {
@@ -327,7 +327,7 @@ HTML;
327
 
328
  $skipIfFileExists = true;
329
 
330
- if ($skipIfFileExists || ! file_exists($localFinalCssFile)) {
331
  // Change $finalCombinedCssContent as paths to fonts and images that are relative (e.g. ../, ../../) have to be updated + other optimization changes
332
  $finalCombinedCssContent = '';
333
 
132
  // Any link hrefs removed perhaps if the file wasn't combined?
133
  $linkHrefs = $maybeDoCssCombine['link_hrefs'];
134
 
135
+ if (is_file($localFinalCssFile)) {
136
  $storageJsonContents[$docLocationTag][$mediaValue] = array(
137
  'uri_to_final_css_file' => $uriToFinalCssFile,
138
  'link_hrefs' => array_map(static function($href) {
327
 
328
  $skipIfFileExists = true;
329
 
330
+ if ($skipIfFileExists || ! is_file($localFinalCssFile)) {
331
  // Change $finalCombinedCssContent as paths to fonts and images that are relative (e.g. ../, ../../) have to be updated + other optimization changes
332
  $finalCombinedCssContent = '';
333
 
classes/OptimiseAssets/CombineJs.php CHANGED
@@ -228,12 +228,12 @@ class CombineJs
228
  // URI (e.g. /wp-content/cache/asset-cleanup/[file-name-here.js]) to the combined JS file
229
  $uriToFinalJsFile = $maybeDoJsCombine['uri_final_js_file'];
230
 
231
- if (! file_exists($localFinalJsFile)) {
232
  return $htmlSource; // something is not right as the file wasn't created, we will return the original HTML source
233
  }
234
 
235
  $groupScriptSrcsFilter = array_map(static function($src) {
236
- return str_replace(site_url(), '{site_url}', $src);
237
  }, $groupScriptSrcs);
238
 
239
  $finalCacheList[$docLocationScript][$groupNo] = array(
@@ -445,7 +445,7 @@ HTML;
445
 
446
  $skipIfFileExists = true;
447
 
448
- if ($skipIfFileExists || ! file_exists($localFinalJsFile)) {
449
  // Change $assetsContents as paths to fonts and images that are relative (e.g. ../, ../../) have to be updated
450
  $finalJsContents = '';
451
 
228
  // URI (e.g. /wp-content/cache/asset-cleanup/[file-name-here.js]) to the combined JS file
229
  $uriToFinalJsFile = $maybeDoJsCombine['uri_final_js_file'];
230
 
231
+ if (! is_file($localFinalJsFile)) {
232
  return $htmlSource; // something is not right as the file wasn't created, we will return the original HTML source
233
  }
234
 
235
  $groupScriptSrcsFilter = array_map(static function($src) {
236
+ return str_replace(site_url(), '', $src);
237
  }, $groupScriptSrcs);
238
 
239
  $finalCacheList[$docLocationScript][$groupNo] = array(
445
 
446
  $skipIfFileExists = true;
447
 
448
+ if ($skipIfFileExists || ! is_file($localFinalJsFile)) {
449
  // Change $assetsContents as paths to fonts and images that are relative (e.g. ../, ../../) have to be updated
450
  $finalJsContents = '';
451
 
classes/OptimiseAssets/MinifyCss.php CHANGED
@@ -5,7 +5,6 @@ use WpAssetCleanUp\CleanUp;
5
  use WpAssetCleanUp\Main;
6
  use WpAssetCleanUp\Menu;
7
  use WpAssetCleanUp\MetaBoxes;
8
- use MatthiasMullie\Minify;
9
 
10
  /**
11
  * Class MinifyCss
@@ -15,13 +14,26 @@ class MinifyCss
15
  {
16
  /**
17
  * @param $cssContent
 
18
  *
19
- * @return string|string[]|null
20
  */
21
- public static function applyMinification($cssContent)
22
  {
23
- $minifier = new Minify\CSS($cssContent);
24
- return trim($minifier->minify());
 
 
 
 
 
 
 
 
 
 
 
 
25
  }
26
 
27
  /**
@@ -128,10 +140,23 @@ class MinifyCss
128
  $originalTagContents = (isset($styleTagObj->nodeValue) && trim($styleTagObj->nodeValue) !== '') ? $styleTagObj->nodeValue : false;
129
 
130
  if ($originalTagContents) {
131
- $newTagContents = self::applyMinification($originalTagContents);
132
-
133
- $htmlSource = str_ireplace('>'.$originalTagContents.'</style', '>'.$newTagContents.'</style', $htmlSource);
134
-
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  libxml_clear_errors();
136
  }
137
  }
5
  use WpAssetCleanUp\Main;
6
  use WpAssetCleanUp\Menu;
7
  use WpAssetCleanUp\MetaBoxes;
 
8
 
9
  /**
10
  * Class MinifyCss
14
  {
15
  /**
16
  * @param $cssContent
17
+ * @param bool $forInlineStyle
18
  *
19
+ * @return string
20
  */
21
+ public static function applyMinification($cssContent, $forInlineStyle = false)
22
  {
23
+ if (class_exists('\MatthiasMullie\Minify\CSS')) {
24
+ $minifier = new \MatthiasMullie\Minify\CSS( $cssContent );
25
+
26
+ if ( $forInlineStyle ) {
27
+ // If the minification is applied for inlined CSS (within STYLE)
28
+ // Leave the background URLs unchanged as it sometimes lead to issues
29
+ $minifier->setImportExtensions( array() );
30
+ }
31
+
32
+ return trim( $minifier->minify() );
33
+ }
34
+
35
+ return $cssContent;
36
+
37
  }
38
 
39
  /**
140
  $originalTagContents = (isset($styleTagObj->nodeValue) && trim($styleTagObj->nodeValue) !== '') ? $styleTagObj->nodeValue : false;
141
 
142
  if ($originalTagContents) {
143
+ $newTagContents = OptimizeCss::maybeAlterCssContent($originalTagContents, true, true, array('just_minify'));
144
+
145
+ // Only comments or no content added to the inline STYLE tag? Strip it completely to reduce the number of DOM elements
146
+ if ($newTagContents === '/**/' || ! $newTagContents) {
147
+ $htmlSource = str_ireplace('>'.$originalTagContents.'</style', '></style', $htmlSource);
148
+
149
+ preg_match_all('#<style.*?>#si', $originalTag, $matchesFromStyle);
150
+
151
+ if (isset($matchesFromStyle[0][0]) && $styleTagWithoutContent = $matchesFromStyle[0][0]) {
152
+ $styleTagWithoutContentAlt = str_replace('"', '\'', $styleTagWithoutContent);
153
+ $htmlSource = str_ireplace(array($styleTagWithoutContent.'</style>', $styleTagWithoutContentAlt.'</style>'), '', $htmlSource);
154
+ }
155
+ } else {
156
+ // It has content; do the replacement
157
+ $htmlSource = str_ireplace( '>' . $originalTagContents . '</style',
158
+ '>' . $newTagContents . '</style', $htmlSource );
159
+ }
160
  libxml_clear_errors();
161
  }
162
  }
classes/OptimiseAssets/MinifyJs.php CHANGED
@@ -4,7 +4,6 @@ namespace WpAssetCleanUp\OptimiseAssets;
4
  use WpAssetCleanUp\Main;
5
  use WpAssetCleanUp\Menu;
6
  use WpAssetCleanUp\MetaBoxes;
7
- use MatthiasMullie\Minify;
8
 
9
  /**
10
  * Class MinifyJs
@@ -19,10 +18,14 @@ class MinifyJs
19
  */
20
  public static function applyMinification($jsContent)
21
  {
22
- $minifier = new Minify\JS($jsContent);
23
- return trim($minifier->minify());
 
24
  }
25
 
 
 
 
26
  /**
27
  * @param $src
28
  * @param string $handle
4
  use WpAssetCleanUp\Main;
5
  use WpAssetCleanUp\Menu;
6
  use WpAssetCleanUp\MetaBoxes;
 
7
 
8
  /**
9
  * Class MinifyJs
18
  */
19
  public static function applyMinification($jsContent)
20
  {
21
+ if (class_exists('\MatthiasMullie\Minify\JS')) {
22
+ $minifier = new \MatthiasMullie\Minify\JS($jsContent);
23
+ return trim($minifier->minify());
24
  }
25
 
26
+ return $jsContent;
27
+ }
28
+
29
  /**
30
  * @param $src
31
  * @param string $handle
classes/OptimiseAssets/OptimizeCommon.php CHANGED
@@ -3,6 +3,7 @@ namespace WpAssetCleanUp\OptimiseAssets;
3
 
4
  use WpAssetCleanUp\CleanUp;
5
  use WpAssetCleanUp\FileSystem;
 
6
  use WpAssetCleanUp\Main;
7
  use WpAssetCleanUp\Menu;
8
  use WpAssetCleanUp\Misc;
@@ -40,7 +41,7 @@ class OptimizeCommon
40
  */
41
  public function init()
42
  {
43
- add_action('switch_theme', array($this, 'clearAllCache'));
44
  add_action('after_switch_theme', array($this, 'clearAllCache'));
45
 
46
  // Is WP Rocket's page cache cleared? Clear Asset CleanUp's CSS cache files too
@@ -55,6 +56,30 @@ class OptimizeCommon
55
  self::clearAllCache(true);
56
  });
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  // Make sure HTML changes are applied to cached pages from "Cache Enabler" plugin
59
  add_filter('cache_enabler_before_store', static function($htmlSource) {
60
  return self::alterHtmlSource($htmlSource);
@@ -73,6 +98,8 @@ class OptimizeCommon
73
  }, PHP_INT_MAX);
74
 
75
  add_action('wp_loaded', array($this, 'maybeAlterHtmlSource'), 1);
 
 
76
  }
77
 
78
  /**
@@ -80,10 +107,23 @@ class OptimizeCommon
80
  */
81
  public function maybeAlterHtmlSource()
82
  {
83
- if (is_admin()) { // don't apply any changes if not in the front-end view (e.g. Dashboard view)
 
 
 
 
 
 
 
 
 
 
84
  return;
85
  }
86
 
 
 
 
87
  ob_start(static function($htmlSource) {
88
  // Do not do any optimization if "Test Mode" is Enabled
89
  if (! Menu::userCanManageAssets() && Main::instance()->settings['test_mode']) {
@@ -102,9 +142,10 @@ class OptimizeCommon
102
  public static function alterHtmlSource($htmlSource)
103
  {
104
  // Dashboard View
 
 
105
  if (Main::instance()->isGetAssetsCall) {
106
- $anyHardCodedAssets = self::getHardcodedAssets($htmlSource);
107
- $htmlSource = str_replace('{wpacu_hardcoded_assets}', $anyHardCodedAssets, $htmlSource);
108
  }
109
 
110
  // This is useful to avoid changing the DOM via wp_loaded action hook
@@ -121,8 +162,15 @@ class OptimizeCommon
121
 
122
  $htmlSource = apply_filters( 'wpacu_html_source_before_optimization', $htmlSource );
123
 
124
- $htmlSource = OptimizeCss::alterHtmlSource( $htmlSource );
 
 
 
 
 
 
125
 
 
126
  $htmlSource = OptimizeJs::alterHtmlSource( $htmlSource );
127
 
128
  $htmlSource = Main::instance()->settings['remove_generator_tag'] ? CleanUp::removeMetaGenerators( $htmlSource ) : $htmlSource;
@@ -178,134 +226,6 @@ class OptimizeCommon
178
  return apply_filters( 'wpacu_html_source_after_optimization', $htmlSource );
179
  }
180
 
181
- /**
182
- * @param $htmlSource
183
- *
184
- * @return string
185
- */
186
- public static function getHardcodedAssets($htmlSource)
187
- {
188
- $htmlSourceAlt = self::cleanerHtmlSource($htmlSource);
189
-
190
- $hardCodedAssets = array(
191
- 'link_and_style_tags' => array(), // LINK (rel="stylesheet") & STYLE (inline)
192
- 'script_tags_src_and_inline' => array(), // SCRIPT (with "src" attribute) & SCRIPT (inline)
193
- );
194
-
195
- /*
196
- * [START] Collect Hardcoded LINK (stylesheet) & STYLE tags
197
- */
198
- // Extract all the LINK tag that do not have "data-wpacu-debug-style-handle="
199
- preg_match_all('#(?=(?P<link_tag><link[^>]*stylesheet[^>]*(>)))|(?=(?P<style_tag><style[^>]*?>.*</style>))#Umsi', $htmlSourceAlt, $matchesSourcesFromTags, PREG_SET_ORDER);
200
-
201
- if (! empty($matchesSourcesFromTags)) {
202
- foreach ($matchesSourcesFromTags as $matchedTagIndex => $matchedTag) {
203
- // LINK "stylesheet" tags (if any)
204
- if (isset($matchedTag['link_tag']) && trim($matchedTag['link_tag']) !== '' && (trim(strip_tags($matchedTag['link_tag'])) === '')) {
205
- $matchedTagOutput = trim($matchedTag['link_tag']);
206
-
207
- if ( strpos( $matchedTagOutput, 'data-wpacu-style-handle=' ) !== false ) {
208
- // Skip the LINK with src that was enqueued properly and keep the hardcoded ones
209
- continue;
210
- }
211
-
212
- $hardCodedAssets['link_and_style_tags'][] = $matchedTagOutput;
213
- }
214
-
215
- // STYLE inline tags (if any)
216
- if (isset($matchedTag['style_tag']) && trim($matchedTag['style_tag']) !== '') {
217
- $matchedTagOutput = trim($matchedTag['style_tag']);
218
-
219
- // Do not add to the list elements such as Emojis (not relevant for hard-coded tags)
220
- if (strpos($matchedTagOutput, 'img.wp-smiley') !== false
221
- && strpos($matchedTagOutput, 'img.emoji') !== false
222
- && strpos($matchedTagOutput, '!important;') !== false) {
223
- continue;
224
- }
225
-
226
- foreach ( wp_styles()->done as $cssHandle ) {
227
- if ( strpos( $matchedTagOutput, '<style id=\'' . trim( $cssHandle ) . '-inline-css\'' ) !== false ) {
228
- // Do not consider the STYLE added via WordPress with wp_add_inline_style() as it's not hardcoded
229
- continue 2;
230
- }
231
- }
232
-
233
- $hardCodedAssets['link_and_style_tags'][] = $matchedTagOutput;
234
- }
235
- }
236
- }
237
- /*
238
- * [END] Collect Hardcoded LINK (stylesheet) & STYLE tags
239
- */
240
-
241
- /*
242
- * [START] Collect Hardcoded SCRIPT (src/inline)
243
- */
244
- preg_match_all('@<script[^>]*?>.*?</script>@si', $htmlSourceAlt, $matchesScriptTags, PREG_SET_ORDER);
245
-
246
- if ( isset(wp_scripts()->done) && ! empty(wp_scripts()->done) ) {
247
- foreach ( wp_scripts()->done as $assetHandle ) {
248
- // Go through the STYLE list
249
- foreach ( $matchesScriptTags as $matchedTagIndex => $matchedTag ) {
250
- if ( isset( $matchedTag[0] ) ) {
251
- $matchedTagOutput = trim( $matchedTag[0] );
252
-
253
- if (strpos($matchedTagOutput, 'window._wpemojiSettings') !== false
254
- && strpos($matchedTagOutput, 'twemoji') !== false) {
255
- unset( $matchesScriptTags[ $matchedTagIndex ] );
256
- continue;
257
- }
258
-
259
- // Check the type and only allow SCRIPT tags with type='text/javascript' or no type at all (it default to 'text/javascript')
260
- $matchedTagInner = strip_tags($matchedTagOutput);
261
- $matchedTagOnlyTags = str_replace($matchedTagInner, '', $matchedTagOutput);
262
- preg_match_all('#type=(["\'])' . '(.*)' . '(["\'])#Usmi', $matchedTagOnlyTags, $outputMatches);
263
- $scriptType = isset($outputMatches[2][0]) ? trim($outputMatches[2][0], '"\'') : 'text/javascript';
264
-
265
- if (strpos($scriptType, 'text/javascript') === false) {
266
- unset( $matchesScriptTags[ $matchedTagIndex ] );
267
- }
268
-
269
- if ( strpos( $matchedTagOutput, 'data-wpacu-script-handle=' ) !== false ) {
270
- unset( $matchesScriptTags[ $matchedTagIndex ] ); // remove the SCRIPT with src that was enqueued properly and keep the hardcoded ones
271
- continue;
272
- }
273
-
274
- if ( strpos( $matchedTagOutput, 'data-wpacu-own-inline-script=') !== false ) {
275
- unset( $matchesScriptTags[ $matchedTagIndex ] ); // remove plugin's own SCRIPT tags as they are not relevant in this context
276
- continue;
277
- }
278
-
279
- // Now, go through the list of inline SCRIPTs associated with an enqueued SCRIPT (with "src" attribute)
280
- $anyInlineAssocWithJsHandle = OptimizeJs::getInlineAssociatedWithScriptHandle($assetHandle, wp_scripts()->registered, 'handle', false);
281
-
282
- if (! empty($anyInlineAssocWithJsHandle)) {
283
- foreach ($anyInlineAssocWithJsHandle as $jsInlineTagContent) {
284
- if (trim($jsInlineTagContent) !== '' && strpos($matchedTagOutput, $jsInlineTagContent)) {
285
- unset( $matchesScriptTags[ $matchedTagIndex ] );
286
- }
287
- }
288
- }
289
- }
290
- }
291
- }
292
- }
293
-
294
- // Go through the remaining hardcoded (SCRIPT) ones (if any)
295
- if (isset($matchesScriptTags) && ! empty($matchesScriptTags)) {
296
- foreach ($matchesScriptTags as $matchedTag) {
297
- if (isset($matchedTag[0]) && $matchedTag[0] && strpos($matchedTag[0], '<script') === 0) {
298
- $hardCodedAssets['script_src_and_inline_tags'][] = trim( $matchedTag[0] );
299
- }
300
- }
301
- }
302
- /*
303
- * [END] Collect Hardcoded SCRIPT (src/inline)
304
- */
305
-
306
- return base64_encode(json_encode($hardCodedAssets));
307
- }
308
-
309
  /**
310
  * @return string
311
  */
@@ -320,20 +240,33 @@ class OptimizeCommon
320
  }
321
 
322
  /**
323
- * Removes HTML comments including MSIE conditional ones as they are left intact
324
  * and not combined with other JavaScript files in case the method is called from CombineJs.php
325
  *
326
  * The following output is used only for fetching purposes
327
  * It will not be part of the final output
328
  *
329
  * @param $htmlSource
 
330
  *
331
  * @return string|string[]|null
332
  */
333
- public static function cleanerHtmlSource($htmlSource)
334
  {
335
  $htmlSourceBeforeAlt = $htmlSource;
336
 
 
 
 
 
 
 
 
 
 
 
 
 
337
  $sourceHasComments = strpos($htmlSource, '<!--') !== false && strpos($htmlSource, '-->') !== false;
338
 
339
  if (! $sourceHasComments) {
@@ -443,7 +376,7 @@ class OptimizeCommon
443
  $localAssetPath = $localAssetPathAlt . '.' . $assetType;
444
  }
445
 
446
- if (strrchr($localAssetPath, '.') === '.' . $assetType && file_exists($localAssetPath)) {
447
  return $localAssetPath;
448
  }
449
 
@@ -509,7 +442,7 @@ class OptimizeCommon
509
  }
510
 
511
  // Perhaps the URL starts with / (not //) and site_url() was not used
512
- if (strpos($sourceFromTag, '/') === 0 && strpos($sourceFromTag, '//') !== 0 && file_exists(ABSPATH . $sourceFromTag)) {
513
  $isRelPath = true;
514
  }
515
 
@@ -699,14 +632,15 @@ class OptimizeCommon
699
  $requestUriPart = $requestUri;
700
 
701
  // Same results for Homepage (any pagination), 404 Not Found & Date archive pages
 
702
  if ($requestUri === '/' || is_404() || is_date() || Misc::isHomePage()) {
703
  $requestUriPart = '';
704
  }
705
 
706
  // Treat the pagination pages the same as the main page (same it's done for the unloading rules)
707
- if (($currentPage = get_query_var('paged')) && (is_archive() || is_singular())) {
708
  $paginationBase = isset($GLOBALS['wp_rewrite']->pagination_base) ? $GLOBALS['wp_rewrite']->pagination_base : 'page';
709
- $requestUriPart = str_replace('/'.$paginationBase.'/'.$currentPage.'/', '', $requestUriPart);
710
  }
711
 
712
  $dirToFilename = WP_CONTENT_DIR . dirname($relPathAssetCacheDir) . '/_storage/'
@@ -721,7 +655,7 @@ class OptimizeCommon
721
  $assetsFile = $dirToFilename . $jsonStorageFile;
722
  }
723
 
724
- if (! file_exists($assetsFile)) {
725
  return array();
726
  }
727
 
@@ -745,26 +679,25 @@ class OptimizeCommon
745
  $optionValueArray = @json_decode($optionValue, ARRAY_A);
746
 
747
  if ($forType === 'combine') {
748
- $isValidJsonCombinedData = false;
749
-
750
  if (! empty($optionValueArray)) {
751
  foreach ($optionValueArray as $assetsPosition => $assetsValues) {
752
  foreach ($assetsValues as $finalValues) {
753
- if ( isset( $finalValues['link_hrefs'] ) ) {
754
- $isValidJsonCombinedData = true;
755
- break 2;
 
 
 
 
 
 
 
 
 
756
  }
757
  }
758
  }
759
  }
760
-
761
- if ($assetType === 'css' && $isValidJsonCombinedData) {
762
- return $optionValueArray;
763
- }
764
-
765
- if ($assetType === 'js' && ! empty($optionValueArray)) {
766
- return $optionValueArray;
767
- }
768
  } elseif ($forType === 'item') {
769
  return $optionValueArray;
770
  }
@@ -894,7 +827,7 @@ class OptimizeCommon
894
  $assetsFile = $dirToFilename . $jsonStorageFile;
895
  }
896
 
897
- if (file_exists($assetsFile)) { // avoid E_WARNING errors | check if it exists first
898
  @unlink($assetsFile);
899
  }
900
  }
@@ -924,35 +857,59 @@ class OptimizeCommon
924
  $assetCleanUpCacheDir = WP_CONTENT_DIR . self::getRelPathPluginCacheDir();
925
  $storageDir = $assetCleanUpCacheDir . '_storage';
926
 
 
 
 
 
 
 
 
 
 
 
 
927
  $userIdDirs = array();
928
 
929
  if (is_dir($assetCleanUpCacheDir)) {
930
  $storageEmptyDirs = $allJsons = $allAssets = $allAssetsToKeep = array();
931
 
932
- $dirItems = new \RecursiveDirectoryIterator($assetCleanUpCacheDir, \RecursiveDirectoryIterator::SKIP_DOTS);
933
-
934
- foreach (new \RecursiveIteratorIterator($dirItems, \RecursiveIteratorIterator::SELF_FIRST, \RecursiveIteratorIterator::CATCH_GET_CHILD) as $item) {
935
- $fileBaseName = trim(strrchr($item, '/'), '/');
936
- $fileExt = strrchr($fileBaseName, '.');
937
-
938
- if (is_file($item) && in_array($fileExt, $fileExtToRemove) && (! in_array($fileBaseName, $skipFiles))) {
939
- $isJsonFile = ($fileExt === '.json');
940
- $isAssetFile = in_array($fileExt, array('.css', '.js'));
941
 
942
- // Remove all JSONs and .css & .js ONLY if they are older than $clearFilesOlderThan
943
- if ($isJsonFile || ($isAssetFile && (strtotime('-' . $clearFilesOlderThan . ' days') > $item->getCTime()))) {
944
- if ($isJsonFile) {
945
- $allJsons[] = $item;
946
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
947
 
948
- if ($isAssetFile) {
949
- $allAssets[] = $item;
 
950
  }
 
 
 
 
 
951
  }
952
- } elseif (is_dir($item) && (strpos($item, '/css/logged-in/') !== false || strpos($item, '/js/logged-in/') !== false)) {
953
- $userIdDirs[] = $item;
954
- } elseif ($item != $storageDir && strpos($item, $storageDir) !== false) {
955
- $storageEmptyDirs[] = $item;
956
  }
957
  }
958
 
@@ -1275,7 +1232,7 @@ SQL;
1275
  $dirToFilename = WP_CONTENT_DIR . self::getRelPathPluginCacheDir() . '_storage/'.self::$optimizedSingleFilesDir.'/';
1276
  $assetsFile = $dirToFilename . $transient.'.json';
1277
 
1278
- if (file_exists($assetsFile)) {
1279
  $contents = trim(FileSystem::file_get_contents($assetsFile));
1280
 
1281
  if (! $contents) {
@@ -1389,4 +1346,58 @@ SQL;
1389
 
1390
  return $cdnUrlFinal;
1391
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1392
  }
3
 
4
  use WpAssetCleanUp\CleanUp;
5
  use WpAssetCleanUp\FileSystem;
6
+ use WpAssetCleanUp\HardcodedAssets;
7
  use WpAssetCleanUp\Main;
8
  use WpAssetCleanUp\Menu;
9
  use WpAssetCleanUp\Misc;
41
  */
42
  public function init()
43
  {
44
+ add_action('switch_theme', array($this, 'clearAllCache'));
45
  add_action('after_switch_theme', array($this, 'clearAllCache'));
46
 
47
  // Is WP Rocket's page cache cleared? Clear Asset CleanUp's CSS cache files too
56
  self::clearAllCache(true);
57
  });
58
 
59
+ // When a post is moved to the trash / deleted
60
+ // clear its cache as its useless and there's no point in having extra files/directories in the caching directory
61
+ add_action('wp_trash_post', array($this, 'clearJsonStorageForPost')); // $postId is passed as a parameter
62
+ add_action('delete_post', array($this, 'clearJsonStorageForPost')); // $postId is passed as a parameter
63
+
64
+ // When a post is edited are within the Dashboard
65
+ add_action('admin_init', static function() {
66
+ if (($postId = Misc::getVar('get', 'post')) && Misc::getVar('get', 'action') === 'edit') {
67
+ self::clearJsonStorageForPost($postId, true);
68
+ }
69
+ });
70
+
71
+ // Keep used resources to the minimum and trigger any clearing of the page's CSS/JS caching
72
+ // for the admin while he has the right privileges and a single post page is visited
73
+ add_action('wp', static function() {
74
+ if (! is_admin() && Menu::userCanManageAssets() && is_singular()) {
75
+ global $post;
76
+
77
+ if (isset($post->ID) && $post->ID) {
78
+ self::clearJsonStorageForPost($post->ID, true);
79
+ }
80
+ }
81
+ });
82
+
83
  // Make sure HTML changes are applied to cached pages from "Cache Enabler" plugin
84
  add_filter('cache_enabler_before_store', static function($htmlSource) {
85
  return self::alterHtmlSource($htmlSource);
98
  }, PHP_INT_MAX);
99
 
100
  add_action('wp_loaded', array($this, 'maybeAlterHtmlSource'), 1);
101
+
102
+ HardcodedAssets::init();
103
  }
104
 
105
  /**
107
  */
108
  public function maybeAlterHtmlSource()
109
  {
110
+ if (is_admin()) {
111
+ // Don't apply any changes if not in the front-end view (e.g. Dashboard view)
112
+ return;
113
+ }
114
+
115
+ /*
116
+ * CASE 1: The admin is logged-in and manages the assets in the front-end view
117
+ * */
118
+ if (HardcodedAssets::useBufferingForEditFrontEndView()) {
119
+ // Alter the HTML via "shutdown" action hook to catch hardcoded CSS/JS that is added via output buffering such as the ones in "Smart Slider 3"
120
+ // via HardcodedAssets.php
121
  return;
122
  }
123
 
124
+ /*
125
+ * CASE 2 (most common): The admin is logged-in, but "Manage in the front-end" is deactivated OR the visitor is just a guest
126
+ * */
127
  ob_start(static function($htmlSource) {
128
  // Do not do any optimization if "Test Mode" is Enabled
129
  if (! Menu::userCanManageAssets() && Main::instance()->settings['test_mode']) {
142
  public static function alterHtmlSource($htmlSource)
143
  {
144
  // Dashboard View
145
+ // Return the HTML as it is without performing any optimisations to save resources
146
+ // Since the page has to be as clean as possible when fetching the assets
147
  if (Main::instance()->isGetAssetsCall) {
148
+ return $htmlSource;
 
149
  }
150
 
151
  // This is useful to avoid changing the DOM via wp_loaded action hook
162
 
163
  $htmlSource = apply_filters( 'wpacu_html_source_before_optimization', $htmlSource );
164
 
165
+ // For the admin
166
+ $anyHardCodedAssetsList = HardcodedAssets::getAll( $htmlSource, false );
167
+
168
+ // The admin is editing the CSS/JS list within the front-end view
169
+ if (HardcodedAssets::useBufferingForEditFrontEndView()) {
170
+ wp_cache_set('wpacu_hardcoded_assets_encoded', base64_encode( json_encode($anyHardCodedAssetsList) ));
171
+ }
172
 
173
+ $htmlSource = OptimizeCss::alterHtmlSource( $htmlSource );
174
  $htmlSource = OptimizeJs::alterHtmlSource( $htmlSource );
175
 
176
  $htmlSource = Main::instance()->settings['remove_generator_tag'] ? CleanUp::removeMetaGenerators( $htmlSource ) : $htmlSource;
226
  return apply_filters( 'wpacu_html_source_after_optimization', $htmlSource );
227
  }
228
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  /**
230
  * @return string
231
  */
240
  }
241
 
242
  /**
243
+ * Removes HTML comments
244
  * and not combined with other JavaScript files in case the method is called from CombineJs.php
245
  *
246
  * The following output is used only for fetching purposes
247
  * It will not be part of the final output
248
  *
249
  * @param $htmlSource
250
+ * @param $params
251
  *
252
  * @return string|string[]|null
253
  */
254
+ public static function cleanerHtmlSource($htmlSource, $params = array())
255
  {
256
  $htmlSourceBeforeAlt = $htmlSource;
257
 
258
+ // Case: Return the HTML source without any conditional comments and the content within them
259
+ if (in_array('strip_content_between_conditional_comments', $params)) {
260
+ preg_match_all('#<!--\[if(.*?)]>(<!-->|-->|\s|)(.*?)(<!--<!|<!)\[endif]-->#si', $htmlSource, $matchedContent);
261
+
262
+ if (isset($matchedContent[0]) && ! empty($matchedContent[0])) {
263
+ foreach ($matchedContent[0] as $conditionalHtmlContent) {
264
+ $htmlSourceBeforeAlt = str_replace($conditionalHtmlContent, '', $htmlSourceBeforeAlt);
265
+ }
266
+ return $htmlSourceBeforeAlt;
267
+ }
268
+ }
269
+
270
  $sourceHasComments = strpos($htmlSource, '<!--') !== false && strpos($htmlSource, '-->') !== false;
271
 
272
  if (! $sourceHasComments) {
376
  $localAssetPath = $localAssetPathAlt . '.' . $assetType;
377
  }
378
 
379
+ if (strrchr($localAssetPath, '.') === '.' . $assetType && is_file($localAssetPath)) {
380
  return $localAssetPath;
381
  }
382
 
442
  }
443
 
444
  // Perhaps the URL starts with / (not //) and site_url() was not used
445
+ if (strpos($sourceFromTag, '/') === 0 && strpos($sourceFromTag, '//') !== 0 && is_file(ABSPATH . $sourceFromTag)) {
446
  $isRelPath = true;
447
  }
448
 
632
  $requestUriPart = $requestUri;
633
 
634
  // Same results for Homepage (any pagination), 404 Not Found & Date archive pages
635
+ // The JSON files will get stored in the root directory of the targeted website
636
  if ($requestUri === '/' || is_404() || is_date() || Misc::isHomePage()) {
637
  $requestUriPart = '';
638
  }
639
 
640
  // Treat the pagination pages the same as the main page (same it's done for the unloading rules)
641
+ if (($currentPageNo = get_query_var('paged')) && (is_archive() || is_singular())) {
642
  $paginationBase = isset($GLOBALS['wp_rewrite']->pagination_base) ? $GLOBALS['wp_rewrite']->pagination_base : 'page';
643
+ $requestUriPart = str_replace('/'.$paginationBase.'/'.$currentPageNo.'/', '', $requestUriPart);
644
  }
645
 
646
  $dirToFilename = WP_CONTENT_DIR . dirname($relPathAssetCacheDir) . '/_storage/'
655
  $assetsFile = $dirToFilename . $jsonStorageFile;
656
  }
657
 
658
+ if (! is_file($assetsFile)) {
659
  return array();
660
  }
661
 
679
  $optionValueArray = @json_decode($optionValue, ARRAY_A);
680
 
681
  if ($forType === 'combine') {
 
 
682
  if (! empty($optionValueArray)) {
683
  foreach ($optionValueArray as $assetsPosition => $assetsValues) {
684
  foreach ($assetsValues as $finalValues) {
685
+ // Check if the combined CSS file exists (e.g. maybe it was removed by mistake from the caching directory
686
+ // Or it wasn't created in the first place due to an error
687
+ if ($assetType === 'css' && isset($finalValues['uri_to_final_css_file'], $finalValues['link_hrefs'])
688
+ && is_file(WP_CONTENT_DIR . OptimizeCss::getRelPathCssCacheDir() . $finalValues['uri_to_final_css_file'])) {
689
+ return $optionValueArray;
690
+ }
691
+
692
+ // Check if the combined JS file exists (e.g. maybe it was removed by mistake from the caching directory
693
+ // Or it wasn't created in the first place due to an error
694
+ if ($assetType === 'js' && isset($finalValues['uri_to_final_js_file'], $finalValues['script_srcs'])
695
+ && is_file(WP_CONTENT_DIR . OptimizeJs::getRelPathJsCacheDir() . $finalValues['uri_to_final_js_file'])) {
696
+ return $optionValueArray;
697
  }
698
  }
699
  }
700
  }
 
 
 
 
 
 
 
 
701
  } elseif ($forType === 'item') {
702
  return $optionValueArray;
703
  }
827
  $assetsFile = $dirToFilename . $jsonStorageFile;
828
  }
829
 
830
+ if (is_file($assetsFile)) { // avoid E_WARNING errors | check if it exists first
831
  @unlink($assetsFile);
832
  }
833
  }
857
  $assetCleanUpCacheDir = WP_CONTENT_DIR . self::getRelPathPluginCacheDir();
858
  $storageDir = $assetCleanUpCacheDir . '_storage';
859
 
860
+ /*
861
+ * Targeted directories:
862
+ *
863
+ * $storageDir.'/item/'
864
+ * $assetCleanUpCacheDir.'/css/'
865
+ * $assetCleanUpCacheDir.'/js/'
866
+ *
867
+ * SKIP anything else from $storageDir apart from "item"
868
+ * If a lot of posts are on the website and combine CSS/JS it could lead to memory errors (to be cleared later on)
869
+ */
870
+
871
  $userIdDirs = array();
872
 
873
  if (is_dir($assetCleanUpCacheDir)) {
874
  $storageEmptyDirs = $allJsons = $allAssets = $allAssetsToKeep = array();
875
 
876
+ $targetedDirs = array(
877
+ $storageDir.'/item/',
878
+ $assetCleanUpCacheDir.'/css/',
879
+ $assetCleanUpCacheDir.'/js/'
880
+ );
 
 
 
 
881
 
882
+ foreach ( $targetedDirs as $targetedDir ) {
883
+ $dirItems = new \RecursiveDirectoryIterator( $targetedDir, \RecursiveDirectoryIterator::SKIP_DOTS );
884
+
885
+ foreach (
886
+ new \RecursiveIteratorIterator( $dirItems, \RecursiveIteratorIterator::SELF_FIRST,
887
+ \RecursiveIteratorIterator::CATCH_GET_CHILD ) as $item
888
+ ) {
889
+ $fileBaseName = trim( strrchr( $item, '/' ), '/' );
890
+ $fileExt = strrchr( $fileBaseName, '.' );
891
+
892
+ if ( is_file( $item ) && in_array( $fileExt, $fileExtToRemove ) && ( ! in_array( $fileBaseName,
893
+ $skipFiles ) ) ) {
894
+ $isJsonFile = ( $fileExt === '.json' );
895
+ $isAssetFile = in_array( $fileExt, array( '.css', '.js' ) );
896
+
897
+ // Remove all JSONs and .css & .js ONLY if they are older than $clearFilesOlderThan
898
+ if ( $isJsonFile || ( $isAssetFile && ( strtotime( '-' . $clearFilesOlderThan . ' days' ) > $item->getCTime() ) ) ) {
899
+ if ( $isJsonFile ) {
900
+ $allJsons[] = $item;
901
+ }
902
 
903
+ if ( $isAssetFile ) {
904
+ $allAssets[] = $item;
905
+ }
906
  }
907
+ } elseif ( is_dir( $item ) && ( strpos( $item, '/css/logged-in/' ) !== false || strpos( $item,
908
+ '/js/logged-in/' ) !== false ) ) {
909
+ $userIdDirs[] = $item;
910
+ } elseif ( $item != $storageDir && strpos( $item, $storageDir ) !== false ) {
911
+ $storageEmptyDirs[] = $item;
912
  }
 
 
 
 
913
  }
914
  }
915
 
1232
  $dirToFilename = WP_CONTENT_DIR . self::getRelPathPluginCacheDir() . '_storage/'.self::$optimizedSingleFilesDir.'/';
1233
  $assetsFile = $dirToFilename . $transient.'.json';
1234
 
1235
+ if (is_file($assetsFile)) {
1236
  $contents = trim(FileSystem::file_get_contents($assetsFile));
1237
 
1238
  if (! $contents) {
1346
 
1347
  return $cdnUrlFinal;
1348
  }
1349
+
1350
+ /**
1351
+ * This is related to the cached CSS/JS combined files from _storage directory located within getRelPathPluginCacheDir() caching directory
1352
+ *
1353
+ * @param $postId
1354
+ * @param bool $checkTiming | if set to "true" it will check if the caching timing expires and if it did, then delete the file
1355
+ */
1356
+ public static function clearJsonStorageForPost($postId, $checkTiming = false)
1357
+ {
1358
+ $postPermalink = get_permalink($postId);
1359
+ $requestUriPath = parse_url($postPermalink, PHP_URL_PATH);
1360
+
1361
+ $dirToFilename = WP_CONTENT_DIR . self::getRelPathPluginCacheDir() . '/_storage/'
1362
+ . parse_url(site_url(), PHP_URL_HOST) . '/'. $requestUriPath;
1363
+
1364
+ $dirToFilename = str_replace('//', '/', $dirToFilename);
1365
+
1366
+ if (is_dir($dirToFilename)) {
1367
+ $filesInDir = scandir($dirToFilename);
1368
+
1369
+ if (! empty($filesInDir)) {
1370
+ foreach ($filesInDir as $wpacuFile) {
1371
+ if ( $wpacuFile === '.' || $wpacuFile === '..' ) {
1372
+ continue;
1373
+ }
1374
+
1375
+ $pathToFile = $dirToFilename . $wpacuFile;
1376
+
1377
+ if (strrchr($wpacuFile, '.') === '.json' && is_file($pathToFile)) {
1378
+ if ($checkTiming) {
1379
+ $cachedAssetsFileExpiresIn = false;
1380
+
1381
+ if (strpos($wpacuFile, 'css') === 0) {
1382
+ $cachedAssetsFileExpiresIn = OptimizeCss::$cachedCssAssetsFileExpiresIn;
1383
+ } elseif (strpos($wpacuFile, 'js') === 0) {
1384
+ $cachedAssetsFileExpiresIn = OptimizeJs::$cachedJsAssetsFileExpiresIn;
1385
+ }
1386
+
1387
+ $isExpired = (filemtime($pathToFile) < (time() - 1 * $cachedAssetsFileExpiresIn));
1388
+
1389
+ if ($cachedAssetsFileExpiresIn && ! $isExpired) {
1390
+ // Not expired yet, do not remove it by skipping this loop
1391
+ continue;
1392
+ }
1393
+ }
1394
+
1395
+ @unlink($dirToFilename . $wpacuFile);
1396
+ }
1397
+ }
1398
+
1399
+ @rmdir($dirToFilename);
1400
+ }
1401
+ }
1402
+ }
1403
  }
classes/OptimiseAssets/OptimizeCss.php CHANGED
@@ -124,7 +124,7 @@ class OptimizeCss
124
  if (isset(Main::instance()->wpAllStyles['registered'][$styleHandle]->src) && ($src = Main::instance()->wpAllStyles['registered'][$styleHandle]->src)) {
125
  $localAssetPath = OptimizeCommon::getLocalAssetPath($src, 'css');
126
 
127
- if (! $localAssetPath || ! file_exists($localAssetPath)) {
128
  continue; // not a local file
129
  }
130
 
@@ -150,7 +150,7 @@ class OptimizeCss
150
  $value = $wpStylesRegistered[$handle];
151
 
152
  $localAssetPath = OptimizeCommon::getLocalAssetPath($value->src, 'css');
153
- if (! $localAssetPath || ! file_exists($localAssetPath)) {
154
  continue; // not a local file
155
  }
156
 
@@ -220,7 +220,7 @@ class OptimizeCss
220
  $localPathToCssOptimized = str_replace( '//', '/', ABSPATH . $savedValuesArray['optimize_uri'] );
221
 
222
  // Read the file from its caching (that makes the processing faster)
223
- if ( isset( $savedValuesArray['source_uri'] ) && file_exists( $localPathToCssOptimized ) ) {
224
  if (Main::instance()->settings['fetch_cached_files_details_from'] === 'db_disk') {
225
  $GLOBALS['wpacu_from_location_inc']++;
226
  }
@@ -277,7 +277,7 @@ class OptimizeCss
277
  */
278
  $localAssetPath = OptimizeCommon::getLocalAssetPath($src, 'css');
279
 
280
- if (! file_exists($localAssetPath)) {
281
  return array();
282
  }
283
 
@@ -415,7 +415,7 @@ class OptimizeCss
415
  // Are there any dynamic loaded CSS that were optimized? Check them too
416
  if (self::isInlineCssEnabled() && Main::instance()->settings['cache_dynamic_loaded_css']) {
417
  /* [wpacu_timing] */ $wpacuTimingName = 'alter_html_source_for_dynamic_loaded_css'; Misc::scriptExecTimer($wpacuTimingName); /* [/wpacu_timing] */
418
- $htmlSource = self::doInline($htmlSource, 'cached');
419
  /* [wpacu_timing] */ Misc::scriptExecTimer($wpacuTimingName, 'end'); /* [/wpacu_timing] */
420
  }
421
  }
@@ -649,7 +649,7 @@ class OptimizeCss
649
 
650
  // If the minified files are deleted (e.g. /wp-content/cache/ is cleared)
651
  // do not replace the CSS file path to avoid breaking the website
652
- if (! file_exists(rtrim(ABSPATH, '/') . $listValues[1])) {
653
  continue;
654
  }
655
 
@@ -739,7 +739,7 @@ class OptimizeCss
739
 
740
  /**
741
  * @param $htmlSource
742
- * @param $fetch
743
  *
744
  * @return mixed
745
  */
@@ -748,10 +748,11 @@ class OptimizeCss
748
  $minifyInlineTags = (! Main::instance()->preventAssetsSettings() && Main::instance()->settings['minify_loaded_css'] && Main::instance()->settings['minify_loaded_css_inline']);
749
  $allPatterns = self::getAllInlineChosenPatterns();
750
 
 
751
  if ($fetch === 'all') {
752
- preg_match_all('#<link[^>]*stylesheet[^>]*(>)#Umi', $htmlSource, $matchesSourcesFromTags, PREG_SET_ORDER);
753
- } elseif ($fetch === 'cached') {
754
- preg_match_all('#<link[^>]*stylesheet[^>]*('.OptimizeCommon::getRelPathPluginCacheDir().').*(>)#Usmi', $htmlSource, $matchesSourcesFromTags, PREG_SET_ORDER);
755
  }
756
 
757
  // In case automatic inlining is used
@@ -811,22 +812,90 @@ class OptimizeCss
811
  $appendBeforeAnyRelPath . OptimizeCommon::getPathToAssetDir($linkHrefOriginal) . '/'
812
  );
813
 
814
- // Move any @imports to top; This also strips any @imports to Google Fonts if the option is chosen
815
- $cssContent = self::importsUpdate($cssContent);
816
 
817
- if ($minifyInlineTags) {
818
- $cssContent = MinifyCss::applyMinification($cssContent);
 
 
 
 
 
 
 
 
819
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
820
 
821
- if (Main::instance()->settings['google_fonts_remove']) {
822
- $cssContent = FontsGoogleRemove::cleanFontFaceReferences($cssContent);
 
 
 
 
 
 
 
 
823
  }
 
 
 
 
 
 
 
 
824
 
825
- $htmlSource = str_replace($matchedTag, '<style type=\'text/css\' '.$mediaAttr.' data-wpacu-inline-css-file=\'1\'>'."\n".$cssContent."\n".'</style>', $htmlSource);
 
 
 
 
 
826
  }
827
  }
828
 
829
- return $htmlSource;
 
 
 
 
 
 
 
 
 
830
  }
831
 
832
  /**
124
  if (isset(Main::instance()->wpAllStyles['registered'][$styleHandle]->src) && ($src = Main::instance()->wpAllStyles['registered'][$styleHandle]->src)) {
125
  $localAssetPath = OptimizeCommon::getLocalAssetPath($src, 'css');
126
 
127
+ if (! $localAssetPath || ! is_file($localAssetPath)) {
128
  continue; // not a local file
129
  }
130
 
150
  $value = $wpStylesRegistered[$handle];
151
 
152
  $localAssetPath = OptimizeCommon::getLocalAssetPath($value->src, 'css');
153
+ if (! $localAssetPath || ! is_file($localAssetPath)) {
154
  continue; // not a local file
155
  }
156
 
220
  $localPathToCssOptimized = str_replace( '//', '/', ABSPATH . $savedValuesArray['optimize_uri'] );
221
 
222
  // Read the file from its caching (that makes the processing faster)
223
+ if ( isset( $savedValuesArray['source_uri'] ) && is_file( $localPathToCssOptimized ) ) {
224
  if (Main::instance()->settings['fetch_cached_files_details_from'] === 'db_disk') {
225
  $GLOBALS['wpacu_from_location_inc']++;
226
  }
277
  */
278
  $localAssetPath = OptimizeCommon::getLocalAssetPath($src, 'css');
279
 
280
+ if (! is_file($localAssetPath)) {
281
  return array();
282
  }
283
 
415
  // Are there any dynamic loaded CSS that were optimized? Check them too
416
  if (self::isInlineCssEnabled() && Main::instance()->settings['cache_dynamic_loaded_css']) {
417
  /* [wpacu_timing] */ $wpacuTimingName = 'alter_html_source_for_dynamic_loaded_css'; Misc::scriptExecTimer($wpacuTimingName); /* [/wpacu_timing] */
418
+ $htmlSource = self::doInline($htmlSource, 'from_cache_for_dynamic_loaded_css');
419
  /* [wpacu_timing] */ Misc::scriptExecTimer($wpacuTimingName, 'end'); /* [/wpacu_timing] */
420
  }
421
  }
649
 
650
  // If the minified files are deleted (e.g. /wp-content/cache/ is cleared)
651
  // do not replace the CSS file path to avoid breaking the website
652
+ if (! is_file(rtrim(ABSPATH, '/') . $listValues[1])) {
653
  continue;
654
  }
655
 
739
 
740
  /**
741
  * @param $htmlSource
742
+ * @param $fetch - 'all', 'from_cache_for_dynamic_loaded_css' (if "Cache Dynamic Loaded CSS" is enabled in "Settings" -> "Optimize CSS")
743
  *
744
  * @return mixed
745
  */
748
  $minifyInlineTags = (! Main::instance()->preventAssetsSettings() && Main::instance()->settings['minify_loaded_css'] && Main::instance()->settings['minify_loaded_css_inline']);
749
  $allPatterns = self::getAllInlineChosenPatterns();
750
 
751
+ // Skip any LINK tags within conditional comments (e.g. Internet Explorer ones)
752
  if ($fetch === 'all') {
753
+ preg_match_all('#<link[^>]*stylesheet[^>]*(>)#Umi', OptimizeCommon::cleanerHtmlSource($htmlSource, array('strip_content_between_conditional_comments')), $matchesSourcesFromTags, PREG_SET_ORDER);
754
+ } elseif ($fetch === 'from_cache_for_dynamic_loaded_css') {
755
+ preg_match_all('#<link[^>]*stylesheet[^>]*('.OptimizeCommon::getRelPathPluginCacheDir().').*(>)#Usmi', OptimizeCommon::cleanerHtmlSource($htmlSource, array('strip_content_between_conditional_comments')), $matchesSourcesFromTags, PREG_SET_ORDER);
756
  }
757
 
758
  // In case automatic inlining is used
812
  $appendBeforeAnyRelPath . OptimizeCommon::getPathToAssetDir($linkHrefOriginal) . '/'
813
  );
814
 
815
+ $cssContent = self::maybeAlterCssContent($cssContent, $minifyInlineTags, true);
 
816
 
817
+ if ($cssContent && $cssContent !== '/**/') {
818
+ $htmlSource = str_replace(
819
+ $matchedTag,
820
+ '<style type=\'text/css\' '.$mediaAttr.' data-wpacu-inline-css-file=\'1\'>'."\n".$cssContent."\n".'</style>',
821
+ $htmlSource
822
+ );
823
+ } else {
824
+ // After CSS alteration (e.g. minify), there's no content left, most likely the CSS file contained only comments, elements without any syntax or empty spaces
825
+ // Strip the tag completely as there's no reason to print an empty SCRIPT tag to further add to the total DOM elements
826
+ $htmlSource = str_replace($matchedTag, '', $htmlSource);
827
  }
828
+ }
829
+ }
830
+
831
+ return $htmlSource;
832
+ }
833
+
834
+ /**
835
+ * This applies to both inline and static JS files contents
836
+ *
837
+ * @param $cssContent
838
+ * @param bool $doCssMinify (false by default as it could be already minified or non-minify type)
839
+ * @param bool $useCache - (false by default - this param is relevant only for inline tags that are altered on the fly as existing CSS static enqueued files already have their own caching)
840
+ * @param array $extraParams
841
+ * @return mixed|string|string[]|null
842
+ */
843
+ public static function maybeAlterCssContent($cssContent, $doCssMinify = false, $useCache = false, $extraParams = array())
844
+ {
845
+ if (! trim($cssContent)) {
846
+ return $cssContent;
847
+ }
848
+
849
+ if ($useCache) {
850
+ // Anything in the cache? Take it from there and don't spend resources with the minification
851
+ // (which in some environments uses the CPU, depending on the complexity of the JavaScript code) and any other alteration
852
+ $cssContentBeforeHash = sha1( $cssContent );
853
+
854
+ $pathToInlineCssOptimizedItem = WP_CONTENT_DIR . self::getRelPathCssCacheDir() . '/item/inline/' . $cssContentBeforeHash . '.css';
855
+
856
+ // Check if the file exists before moving forward
857
+ if ( is_file( $pathToInlineCssOptimizedItem ) ) {
858
+ $cachedCssFileExpiresIn = self::$cachedCssAssetsFileExpiresIn;
859
 
860
+ if ( filemtime( $pathToInlineCssOptimizedItem ) < ( time() - 1 * $cachedCssFileExpiresIn ) ) {
861
+ // Has the caching period expired? Remove the file as a new one has to be generated
862
+ @unlink( $pathToInlineCssOptimizedItem );
863
+ } else {
864
+ // Not expired / Return its content from the cache in a faster way
865
+ $inlineCssStorageItemJsonContent = trim( FileSystem::file_get_contents( $pathToInlineCssOptimizedItem ) );
866
+
867
+ if ( $inlineCssStorageItemJsonContent !== '' ) {
868
+ return $inlineCssStorageItemJsonContent;
869
+ }
870
  }
871
+ }
872
+ }
873
+
874
+ if ( $doCssMinify && in_array('just_minify', $extraParams) ) {
875
+ $cssContent = MinifyCss::applyMinification( $cssContent, $useCache );
876
+ } else {
877
+ // Move any @imports to top; This also strips any @imports to Google Fonts if the option is chosen
878
+ $cssContent = self::importsUpdate( $cssContent );
879
 
880
+ if ( $doCssMinify ) {
881
+ $cssContent = MinifyCss::applyMinification( $cssContent, $useCache );
882
+ }
883
+
884
+ if ( Main::instance()->settings['google_fonts_remove'] ) {
885
+ $cssContent = FontsGoogleRemove::cleanFontFaceReferences( $cssContent );
886
  }
887
  }
888
 
889
+ if ($useCache && isset($pathToInlineCssOptimizedItem)) {
890
+ // Store the optimized content to the cached CSS file which would be read quicker
891
+ if ($cssContent === '') {
892
+ $cssContent = '/**/'; // dummy content to make it not empty (will checked and stripped later on)
893
+ }
894
+
895
+ FileSystem::file_put_contents( $pathToInlineCssOptimizedItem, $cssContent );
896
+ }
897
+
898
+ return $cssContent;
899
  }
900
 
901
  /**
classes/OptimiseAssets/OptimizeJs.php CHANGED
@@ -50,7 +50,7 @@ class OptimizeJs
50
  if (isset(Main::instance()->wpAllScripts['registered'][$scriptHandle]->src) && ($src = Main::instance()->wpAllScripts['registered'][$scriptHandle]->src)) {
51
  $localAssetPath = OptimizeCommon::getLocalAssetPath($src, 'js');
52
 
53
- if (! $localAssetPath || ! file_exists($localAssetPath)) {
54
  continue; // not a local file
55
  }
56
 
@@ -73,7 +73,7 @@ class OptimizeJs
73
  $value = $wp_scripts->registered[$handle];
74
 
75
  $localAssetPath = OptimizeCommon::getLocalAssetPath($value->src, 'js');
76
- if (! $localAssetPath || ! file_exists($localAssetPath)) {
77
  continue; // not a local file
78
  }
79
 
@@ -140,7 +140,7 @@ class OptimizeJs
140
 
141
  // Do not load any minified JS file (from the database transient cache) if it doesn't exist
142
  // It will fallback to the original JS file
143
- if ( isset( $savedValuesArray['source_uri'] ) && file_exists( $localPathToJsOptimized ) ) {
144
  if (Main::instance()->settings['fetch_cached_files_details_from'] === 'db_disk') {
145
  $GLOBALS['wpacu_from_location_inc']++;
146
  }
@@ -183,7 +183,7 @@ class OptimizeJs
183
  } else {
184
  $localAssetPath = OptimizeCommon::getLocalAssetPath($src, 'js');
185
 
186
- if (! file_exists($localAssetPath)) {
187
  return array();
188
  }
189
 
@@ -349,7 +349,7 @@ class OptimizeJs
349
 
350
  // If the minified files are deleted (e.g. /wp-content/cache/ is cleared)
351
  // do not replace the JS file path to avoid breaking the website
352
- if (! file_exists(rtrim(ABSPATH, '/') . $listValues[1])) {
353
  continue;
354
  }
355
 
@@ -557,6 +557,12 @@ class OptimizeJs
557
  if ($attrObj->nodeName === 'src') {
558
  continue 2;
559
  }
 
 
 
 
 
 
560
  }
561
  }
562
 
@@ -894,7 +900,7 @@ class OptimizeJs
894
 
895
  if (isset($ignoreChild['scripts']) && ! empty($ignoreChild['scripts'])) {
896
  foreach (array_keys($ignoreChild['scripts']) as $scriptHandle) {
897
- if (isset(Main::instance()->wpAllScripts['registered'][$scriptHandle]->src, Main::instance()->ignoreChildren['scripts'][$scriptHandle.'_has_unload_rule']) && Main::instance()->wpAllScripts['registered'][$scriptHandle]->src && Main::instance()->ignoreChildren['scripts'][$scriptHandle.'_has_unload_rule']) {
898
  $inlineAssociatedWithHandle = self::getInlineAssociatedWithScriptHandle($scriptHandle, Main::instance()->wpAllScripts['registered'], 'handle');
899
 
900
  $toReplaceTagList = '';
@@ -914,17 +920,14 @@ class OptimizeJs
914
  }
915
 
916
  $htmlSource = str_replace($toReplaceTagList, '', $htmlSource);
917
- }
918
 
919
- // Extra, in case the previous replace didn't go through
920
- $listWithMatches = array();
921
- $listWithMatches[] = 'data-wpacu-script-handle=[\'"]'.$scriptHandle.'[\'"]';
922
-
923
- if (isset(Main::instance()->wpAllScripts['registered'][$scriptHandle]->src) && ($scriptSrc = Main::instance()->wpAllScripts['registered'][$scriptHandle]->src)) {
924
  $listWithMatches[] = preg_quote(OptimizeCommon::getSourceRelPath($scriptSrc), '/');
925
- }
926
 
927
- $htmlSource = CleanUp::cleanScriptTagFromHtmlSource($listWithMatches, $htmlSource);
 
928
  }
929
  }
930
 
50
  if (isset(Main::instance()->wpAllScripts['registered'][$scriptHandle]->src) && ($src = Main::instance()->wpAllScripts['registered'][$scriptHandle]->src)) {
51
  $localAssetPath = OptimizeCommon::getLocalAssetPath($src, 'js');
52
 
53
+ if (! $localAssetPath || ! is_file($localAssetPath)) {
54
  continue; // not a local file
55
  }
56
 
73
  $value = $wp_scripts->registered[$handle];
74
 
75
  $localAssetPath = OptimizeCommon::getLocalAssetPath($value->src, 'js');
76
+ if (! $localAssetPath || ! is_file($localAssetPath)) {
77
  continue; // not a local file
78
  }
79
 
140
 
141
  // Do not load any minified JS file (from the database transient cache) if it doesn't exist
142
  // It will fallback to the original JS file
143
+ if ( isset( $savedValuesArray['source_uri'] ) && is_file( $localPathToJsOptimized ) ) {
144
  if (Main::instance()->settings['fetch_cached_files_details_from'] === 'db_disk') {
145
  $GLOBALS['wpacu_from_location_inc']++;
146
  }
183
  } else {
184
  $localAssetPath = OptimizeCommon::getLocalAssetPath($src, 'js');
185
 
186
+ if (! is_file($localAssetPath)) {
187
  return array();
188
  }
189
 
349
 
350
  // If the minified files are deleted (e.g. /wp-content/cache/ is cleared)
351
  // do not replace the JS file path to avoid breaking the website
352
+ if (! is_file(rtrim(ABSPATH, '/') . $listValues[1])) {
353
  continue;
354
  }
355
 
557
  if ($attrObj->nodeName === 'src') {
558
  continue 2;
559
  }
560
+
561
+ if ($attrObj->nodeName === 'type' && $attrObj->nodeValue !== 'text/javascript') {
562
+ // If a "type" parameter exists (otherwise it defaults to "text/javascript"
563
+ // and the value of "type" is not "text/javascript", do not proceed with any optimization (including minification)
564
+ continue 2;
565
+ }
566
  }
567
  }
568
 
900
 
901
  if (isset($ignoreChild['scripts']) && ! empty($ignoreChild['scripts'])) {
902
  foreach (array_keys($ignoreChild['scripts']) as $scriptHandle) {
903
+ if (isset(Main::instance()->wpAllScripts['registered'][$scriptHandle]->src, Main::instance()->ignoreChildren['scripts'][$scriptHandle.'_has_unload_rule']) && ($scriptSrc = Main::instance()->wpAllScripts['registered'][$scriptHandle]->src) && Main::instance()->ignoreChildren['scripts'][$scriptHandle.'_has_unload_rule']) {
904
  $inlineAssociatedWithHandle = self::getInlineAssociatedWithScriptHandle($scriptHandle, Main::instance()->wpAllScripts['registered'], 'handle');
905
 
906
  $toReplaceTagList = '';
920
  }
921
 
922
  $htmlSource = str_replace($toReplaceTagList, '', $htmlSource);
 
923
 
924
+ // Extra, in case the previous replace didn't go through
925
+ $listWithMatches = array();
926
+ $listWithMatches[] = 'data-wpacu-script-handle=[\'"]'.$scriptHandle.'[\'"]';
 
 
927
  $listWithMatches[] = preg_quote(OptimizeCommon::getSourceRelPath($scriptSrc), '/');
 
928
 
929
+ $htmlSource = CleanUp::cleanScriptTagFromHtmlSource($listWithMatches, $htmlSource);
930
+ }
931
  }
932
  }
933
 
classes/OwnAssets.php CHANGED
@@ -64,7 +64,7 @@ class OwnAssets
64
  {
65
  if (is_admin_bar_showing()) {
66
  ?>
67
- <style type="text/css">
68
  #wp-admin-bar-assetcleanup-parent span.dashicons {
69
  width: 15px;
70
  height: 15px;
@@ -106,7 +106,7 @@ class OwnAssets
106
  public function inlineAdminCode()
107
  {
108
  ?>
109
- <style type="text/css">
110
  .menu-top.toplevel_page_wpassetcleanup_getting_started .wp-menu-image > img { width: 26px; position: absolute; left: 8px; top: -4px; }
111
  </style>
112
  <?php
@@ -245,13 +245,18 @@ class OwnAssets
245
  <svg aria-hidden="true" role="img" focusable="false" class="dashicon dashicons-cloud" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><path d="M14.9 9c1.8.2 3.1 1.7 3.1 3.5 0 1.9-1.6 3.5-3.5 3.5h-10C2.6 16 1 14.4 1 12.5 1 10.7 2.3 9.3 4.1 9 4 8.9 4 8.7 4 8.5 4 7.1 5.1 6 6.5 6c.3 0 .7.1.9.2C8.1 4.9 9.4 4 11 4c2.2 0 4 1.8 4 4 0 .4-.1.7-.1 1z"></path></svg>
246
  HTML;
247
 
 
 
 
 
 
248
  $wpacuObjectData = array(
249
  'plugin_name' => WPACU_PLUGIN_ID,
250
  'plugin_id' => WPACU_PLUGIN_ID,
251
 
252
  'reload_icon' => $svgReloadIcon,
253
  'reload_msg' => sprintf(__('Reloading %s CSS &amp; JS list', 'wp-asset-clean-up'), '<strong style="margin: 0 4px;">' . WPACU_PLUGIN_TITLE . '</strong>'),
254
- 'dom_get_type' => Main::$domGetType,
255
  'list_show_status' => Main::instance()->settings['assets_list_show_status'],
256
 
257
  'start_del_e' => Main::START_DEL_ENQUEUED,
@@ -288,7 +293,7 @@ HTML;
288
  <td><span class="error-code">{wpacu_status_code_error}</span> * for more information about client and server errors, <a target="_blank" href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes">check this link</a></td>
289
  </tr>
290
  <tr>
291
- <td valign="top"><strong>Suggestion:</strong></td>
292
  <td>Select "WP Remote Post" as a method of retrieving the assets from the "Settings" page. If that doesn't fix the issue, just use "Manage in Front-end" option which should always work and <a target="_blank" href="{$submitTicketLink}">submit a ticket</a> about your problem.</td>
293
  </tr>
294
  <tr>
@@ -397,6 +402,75 @@ JS;
397
  // [End] Chosen Script
398
  }
399
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
400
  if (in_array($page, array(WPACU_PLUGIN_ID . '_overview', WPACU_PLUGIN_ID . '_bulk_unloads'))) {
401
  // [Start] Tooltipster Style
402
  wp_enqueue_style(
64
  {
65
  if (is_admin_bar_showing()) {
66
  ?>
67
+ <style type="text/css" data-wpacu-own-inline-style="true">
68
  #wp-admin-bar-assetcleanup-parent span.dashicons {
69
  width: 15px;
70
  height: 15px;
106
  public function inlineAdminCode()
107
  {
108
  ?>
109
+ <style type="text/css" data-wpacu-own-inline-style="true">
110
  .menu-top.toplevel_page_wpassetcleanup_getting_started .wp-menu-image > img { width: 26px; position: absolute; left: 8px; top: -4px; }
111
  </style>
112
  <?php
245
  <svg aria-hidden="true" role="img" focusable="false" class="dashicon dashicons-cloud" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><path d="M14.9 9c1.8.2 3.1 1.7 3.1 3.5 0 1.9-1.6 3.5-3.5 3.5h-10C2.6 16 1 14.4 1 12.5 1 10.7 2.3 9.3 4.1 9 4 8.9 4 8.7 4 8.5 4 7.1 5.1 6 6.5 6c.3 0 .7.1.9.2C8.1 4.9 9.4 4 11 4c2.2 0 4 1.8 4 4 0 .4-.1.7-.1 1z"></path></svg>
246
  HTML;
247
 
248
+ // If the post status is 'private' only direct method can be used to fetch the assets
249
+ // as the remote post one will return a 404 error since the page is accessed as a guest visitor
250
+ $postStatus = $postId > 0 ? get_post_status($postId) : false;
251
+ $wpacuDomGetType = ($postStatus === 'private') ? 'direct' : Main::$domGetType;
252
+
253
  $wpacuObjectData = array(
254
  'plugin_name' => WPACU_PLUGIN_ID,
255
  'plugin_id' => WPACU_PLUGIN_ID,
256
 
257
  'reload_icon' => $svgReloadIcon,
258
  'reload_msg' => sprintf(__('Reloading %s CSS &amp; JS list', 'wp-asset-clean-up'), '<strong style="margin: 0 4px;">' . WPACU_PLUGIN_TITLE . '</strong>'),
259
+ 'dom_get_type' => $wpacuDomGetType,
260
  'list_show_status' => Main::instance()->settings['assets_list_show_status'],
261
 
262
  'start_del_e' => Main::START_DEL_ENQUEUED,
293
  <td><span class="error-code">{wpacu_status_code_error}</span> * for more information about client and server errors, <a target="_blank" href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes">check this link</a></td>
294
  </tr>
295
  <tr>
296
+ <td valign="top"><span class="dashicons dashicons-lightbulb" style="color: orange;"></span> <strong>Suggestion:</strong></td>
297
  <td>Select "WP Remote Post" as a method of retrieving the assets from the "Settings" page. If that doesn't fix the issue, just use "Manage in Front-end" option which should always work and <a target="_blank" href="{$submitTicketLink}">submit a ticket</a> about your problem.</td>
298
  </tr>
299
  <tr>
402
  // [End] Chosen Script
403
  }
404
 
405
+ if ($page === WPACU_PLUGIN_ID . '_assets_manager' || (Misc::getVar('get', 'post') && Misc::getVar('get', 'action') === 'edit')) {
406
+ // [Start] SweetAlert
407
+ wp_enqueue_style(
408
+ WPACU_PLUGIN_ID . '-sweetalert-css',
409
+ plugins_url('/assets/sweetalert/sweetalert.css', WPACU_PLUGIN_FILE),
410
+ array(),
411
+ 1
412
+ );
413
+ $sweetAlertStyleInline = <<<CSS
414
+ .swal-overlay {
415
+ z-index: 10000000;
416
+ }
417
+
418
+ .swal-text {
419
+ line-height: 24px;
420
+ }
421
+
422
+ .swal-footer {
423
+ text-align: center;
424
+ padding: 13px 16px 20px;
425
+ }
426
+
427
+ .swal-button.swal-button--confirm {
428
+ background-color: #008f9c;
429
+ }
430
+
431
+ .swal-button.swal-button--confirm:hover {
432
+ background-color: #006e78;
433
+ }
434
+ CSS;
435
+ wp_add_inline_style(WPACU_PLUGIN_ID . '-sweetalert-css', $sweetAlertStyleInline);
436
+
437
+ wp_enqueue_script(
438
+ WPACU_PLUGIN_ID . '-sweetalert-js',
439
+ plugins_url('/assets/sweetalert/dist/sweetalert.min.js', WPACU_PLUGIN_FILE),
440
+ array('jquery'),
441
+ 1
442
+ );
443
+
444
+ $upgradeToProLink = WPACU_PLUGIN_GO_PRO_URL.'?utm_source=manage_hardcoded_assets&utm_medium=go_pro_modal';
445
+
446
+ $sweetAlertScriptInline = <<<JS
447
+ jQuery(document).ready(function($) {
448
+ $(document).on('click', '.wpacu-manage-hardcoded-assets-requires-pro-popup', function(e) {
449
+ e.preventDefault();
450
+ wpacuTriggerGoProHardcodedModal();
451
+ });
452
+ });
453
+
454
+ function wpacuTriggerGoProHardcodedModal()
455
+ {
456
+ swal({
457
+ text: "Managing hardcoded (non-enqueued) LINK/STYLE/SCRIPT tags is a feature available for Pro users.",
458
+ icon: "info",
459
+ buttons: {
460
+ confirm: "Upgrade to the Pro version",
461
+ cancel: "Maybe later",
462
+ }
463
+ }).then((value) => {
464
+ if (value) {
465
+ window.location.replace("{$upgradeToProLink}");
466
+ }
467
+ });
468
+ }
469
+ JS;
470
+ wp_add_inline_script(WPACU_PLUGIN_ID . '-sweetalert-js', $sweetAlertScriptInline);
471
+ // [ENd] SweetAlert
472
+ }
473
+
474
  if (in_array($page, array(WPACU_PLUGIN_ID . '_overview', WPACU_PLUGIN_ID . '_bulk_unloads'))) {
475
  // [Start] Tooltipster Style
476
  wp_enqueue_style(
classes/Plugin.php CHANGED
@@ -105,12 +105,14 @@ class Plugin
105
  *
106
  * /wp-content/cache/asset-cleanup/css/
107
  * /wp-content/cache/asset-cleanup/css/item/
 
108
  * /wp-content/cache/asset-cleanup/css/index.php
109
  * /wp-content/cache/asset-cleanup/css/logged-in/
110
  * /wp-content/cache/asset-cleanup/css/logged-in/index.php
111
  *
112
  * /wp-content/cache/asset-cleanup/js/
113
  * /wp-content/cache/asset-cleanup/js/item/
 
114
  * /wp-content/cache/asset-cleanup/js/index.php
115
  * /wp-content/cache/asset-cleanup/js/logged-in/
116
  * /wp-content/cache/asset-cleanup/js/logged-in/index.php
@@ -176,6 +178,10 @@ HTACCESS;
176
  @mkdir( $cacheDir . OptimizeCommon::$optimizedSingleFilesDir, 0755 );
177
  }
178
 
 
 
 
 
179
  if ( ! is_file( $cacheDir . 'logged-in/index.php' ) ) {
180
  // /wp-content/cache/asset-cleanup/cache/{$assetType}/logged-in/index.html
181
  FileSystem::file_put_contents( $cacheDir . 'logged-in/index.php', $emptyPhpFileContents );
105
  *
106
  * /wp-content/cache/asset-cleanup/css/
107
  * /wp-content/cache/asset-cleanup/css/item/
108
+ * /wp-content/cache/asset-cleanup/css/item/inline/
109
  * /wp-content/cache/asset-cleanup/css/index.php
110
  * /wp-content/cache/asset-cleanup/css/logged-in/
111
  * /wp-content/cache/asset-cleanup/css/logged-in/index.php
112
  *
113
  * /wp-content/cache/asset-cleanup/js/
114
  * /wp-content/cache/asset-cleanup/js/item/
115
+ * /wp-content/cache/asset-cleanup/js/item/inline/ (Pro)
116
  * /wp-content/cache/asset-cleanup/js/index.php
117
  * /wp-content/cache/asset-cleanup/js/logged-in/
118
  * /wp-content/cache/asset-cleanup/js/logged-in/index.php
178
  @mkdir( $cacheDir . OptimizeCommon::$optimizedSingleFilesDir, 0755 );
179
  }
180
 
181
+ if ( ! is_dir( $cacheDir . OptimizeCommon::$optimizedSingleFilesDir.'/inline' ) ) {
182
+ @mkdir( $cacheDir . OptimizeCommon::$optimizedSingleFilesDir.'/inline', 0755 );
183
+ }
184
+
185
  if ( ! is_file( $cacheDir . 'logged-in/index.php' ) ) {
186
  // /wp-content/cache/asset-cleanup/cache/{$assetType}/logged-in/index.html
187
  FileSystem::file_put_contents( $cacheDir . 'logged-in/index.php', $emptyPhpFileContents );
classes/PluginTracking.php CHANGED
@@ -160,7 +160,7 @@ class PluginTracking
160
 
161
  // Retrieve current plugin information
162
  $adminPluginFile = ABSPATH . '/wp-admin/includes/plugin.php';
163
- if (! function_exists( 'get_plugins') && file_exists($adminPluginFile)) {
164
  include $adminPluginFile;
165
  }
166
 
160
 
161
  // Retrieve current plugin information
162
  $adminPluginFile = ABSPATH . '/wp-admin/includes/plugin.php';
163
+ if (! function_exists( 'get_plugins') && is_file($adminPluginFile)) {
164
  include $adminPluginFile;
165
  }
166
 
composer.json CHANGED
@@ -16,7 +16,7 @@
16
  "php": ">=5.4.0",
17
  "ext-pcre": "*",
18
  "psr/cache": "*",
19
- "matthiasmullie/minify": "^1.3"
20
  },
21
  "suggest": {
22
  "psr/cache-implementation": "Cache implementation to use with Minify::cache"
16
  "php": ">=5.4.0",
17
  "ext-pcre": "*",
18
  "psr/cache": "*",
19
+ "matthiasmullie/minify": "^1.3.63"
20
  },
21
  "suggest": {
22
  "psr/cache-implementation": "Cache implementation to use with Minify::cache"
composer.lock CHANGED
@@ -4,20 +4,20 @@
4
  "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
  "This file is @generated automatically"
6
  ],
7
- "content-hash": "050322f72136b2be9f6dfed6a8a90f11",
8
  "packages": [
9
  {
10
  "name": "matthiasmullie/minify",
11
- "version": "1.3.61",
12
  "source": {
13
  "type": "git",
14
  "url": "https://github.com/matthiasmullie/minify.git",
15
- "reference": "d5acb8ce5b6acb7d11bafe97cecc533f6e4fd751"
16
  },
17
  "dist": {
18
  "type": "zip",
19
- "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/d5acb8ce5b6acb7d11bafe97cecc533f6e4fd751",
20
- "reference": "d5acb8ce5b6acb7d11bafe97cecc533f6e4fd751",
21
  "shasum": ""
22
  },
23
  "require": {
@@ -50,9 +50,9 @@
50
  "authors": [
51
  {
52
  "name": "Matthias Mullie",
53
- "role": "Developer",
54
  "email": "minify@mullie.eu",
55
- "homepage": "http://www.mullie.eu"
 
56
  }
57
  ],
58
  "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.",
@@ -64,20 +64,20 @@
64
  "minifier",
65
  "minify"
66
  ],
67
- "time": "2018-11-26T23:10:39+00:00"
68
  },
69
  {
70
  "name": "matthiasmullie/path-converter",
71
- "version": "1.1.2",
72
  "source": {
73
  "type": "git",
74
  "url": "https://github.com/matthiasmullie/path-converter.git",
75
- "reference": "5e4b121c8b9f97c80835c1d878b0812ba1d607c9"
76
  },
77
  "dist": {
78
  "type": "zip",
79
- "url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/5e4b121c8b9f97c80835c1d878b0812ba1d607c9",
80
- "reference": "5e4b121c8b9f97c80835c1d878b0812ba1d607c9",
81
  "shasum": ""
82
  },
83
  "require": {
@@ -100,9 +100,9 @@
100
  "authors": [
101
  {
102
  "name": "Matthias Mullie",
103
- "role": "Developer",
104
  "email": "pathconverter@mullie.eu",
105
- "homepage": "http://www.mullie.eu"
 
106
  }
107
  ],
108
  "description": "Relative path converter",
@@ -113,7 +113,7 @@
113
  "paths",
114
  "relative"
115
  ],
116
- "time": "2018-10-25T15:19:41+00:00"
117
  },
118
  {
119
  "name": "psr/cache",
4
  "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
  "This file is @generated automatically"
6
  ],
7
+ "content-hash": "cbb4c81282c6359a3b371f733096582c",
8
  "packages": [
9
  {
10
  "name": "matthiasmullie/minify",
11
+ "version": "1.3.63",
12
  "source": {
13
  "type": "git",
14
  "url": "https://github.com/matthiasmullie/minify.git",
15
+ "reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117"
16
  },
17
  "dist": {
18
  "type": "zip",
19
+ "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/9ba1b459828adc13430f4dd6c49dae4950dc4117",
20
+ "reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117",
21
  "shasum": ""
22
  },
23
  "require": {
50
  "authors": [
51
  {
52
  "name": "Matthias Mullie",
 
53
  "email": "minify@mullie.eu",
54
+ "homepage": "http://www.mullie.eu",
55
+ "role": "Developer"
56
  }
57
  ],
58
  "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.",
64
  "minifier",
65
  "minify"
66
  ],
67
+ "time": "2020-01-21T20:21:08+00:00"
68
  },
69
  {
70
  "name": "matthiasmullie/path-converter",
71
+ "version": "1.1.3",
72
  "source": {
73
  "type": "git",
74
  "url": "https://github.com/matthiasmullie/path-converter.git",
75
+ "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9"
76
  },
77
  "dist": {
78
  "type": "zip",
79
+ "url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/e7d13b2c7e2f2268e1424aaed02085518afa02d9",
80
+ "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9",
81
  "shasum": ""
82
  },
83
  "require": {
100
  "authors": [
101
  {
102
  "name": "Matthias Mullie",
 
103
  "email": "pathconverter@mullie.eu",
104
+ "homepage": "http://www.mullie.eu",
105
+ "role": "Developer"
106
  }
107
  ],
108
  "description": "Relative path converter",
113
  "paths",
114
  "relative"
115
  ],
116
+ "time": "2019-02-05T23:41:09+00:00"
117
  },
118
  {
119
  "name": "psr/cache",
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: minify css, minify javascript, defer css javascript, page speed, dequeue,
4
  Donate link: https://www.gabelivan.com/items/wp-asset-cleanup-pro/?utm_source=wp_org_lite&utm_medium=donate
5
  Requires at least: 4.5
6
  Tested up to: 5.3.2
7
- Stable tag: 1.3.5.7
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl.html
10
 
@@ -179,6 +179,14 @@ With the recently released "Test Mode" feature, you can safely unload assets on
179
  4. Homepage CSS & JS Management (List sorted by location)
180
 
181
  == Changelog ==
 
 
 
 
 
 
 
 
182
  = 1.3.5.7 =
183
  * Make the admin aware in case a certain CSS/JS asset is loaded within Internet Explorer conditional comments (Read more: https://www.sitepoint.com/internet-explorer-conditional-comments/)
184
  * From now on, "disk" is the default method for storing the cached information of the assets
4
  Donate link: https://www.gabelivan.com/items/wp-asset-cleanup-pro/?utm_source=wp_org_lite&utm_medium=donate
5
  Requires at least: 4.5
6
  Tested up to: 5.3.2
7
+ Stable tag: 1.3.5.8
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl.html
10
 
179
  4. Homepage CSS & JS Management (List sorted by location)
180
 
181
  == Changelog ==
182
+ = 1.3.5.8 =
183
+ * Caching: Expired CSS/JS files are cleared differently (in time after visiting various pages) to save resources and errors related to the PHP memory (e.g. shared hosting packages often have limitations in terms of the server's CPU & memory usage)
184
+ * Allow CSS/JS management for privately published pages
185
+ * Strip empty STYLE/SCRIPT tags if, after optimization, their content is empty (e.g. the CSS was minified as it had only comments in it)
186
+ * Show if there are any hardcoded (non-enqueued) LINK/STYLE/SCRIPT tags in the list of CSS/JS list (management of these tags is available in the Pro version)
187
+ * Make sure the combined CSS/JS file is valid before its tag is generated in the HTML output (in rare cases, the cached CSS/JS files get deleted either by mistake when developers are cleaning up the caching directory OR they weren't properly created in the first place)
188
+ * Compatibility fix to avoid PHP warning error when "Smart Slider 3" & "WP Rocket" are used and the CSS/JS assets are fetched
189
+
190
  = 1.3.5.7 =
191
  * Make the admin aware in case a certain CSS/JS asset is loaded within Internet Explorer conditional comments (Read more: https://www.sitepoint.com/internet-explorer-conditional-comments/)
192
  * From now on, "disk" is the default method for storing the cached information of the assets
templates/_admin-page-getting-started-areas/_lite-vs-pro.php CHANGED
@@ -118,6 +118,11 @@ HTML;
118
  <td><span class="na">❌</span></td>
119
  <td><?php echo $svgTick; ?></td>
120
  </tr>
 
 
 
 
 
121
  <tr>
122
  <td><?php _e('Move CSS &amp; JavaScript files from <code>&lt;HEAD&gt;</code> to <code>&lt;BODY&gt;</code> (to reduce render-blocking) or vice-versa (for very early triggering)', 'wp-asset-clean-up'); ?></td>
123
  <td><span class="na">❌</span></td>
118
  <td><span class="na">❌</span></td>
119
  <td><?php echo $svgTick; ?></td>
120
  </tr>
121
+ <tr>
122
+ <td><?php _e('Manage hardcoded (non-enqueued) CSS &amp; JavaScript files', 'wp-asset-clean-up'); ?></td>
123
+ <td><span class="na">❌</span></td>
124
+ <td><?php echo $svgTick; ?></td>
125
+ </tr>
126
  <tr>
127
  <td><?php _e('Move CSS &amp; JavaScript files from <code>&lt;HEAD&gt;</code> to <code>&lt;BODY&gt;</code> (to reduce render-blocking) or vice-versa (for very early triggering)', 'wp-asset-clean-up'); ?></td>
128
  <td><span class="na">❌</span></td>
templates/_top-area.php CHANGED
@@ -129,7 +129,7 @@ $goBackToCurrentUrl = '&_wp_http_referer=' . urlencode( wp_unslash( $_SERVER['RE
129
  // [wpacu_lite]
130
  if ($wpacuIsPluginsManagerPageLink) {
131
  ?>
132
- <span class="extra-info assets-unloaded-false"><span class="dashicons dashicons-lock"></span> New Premium Feature</span>
133
  <?php
134
  }
135
  // [/wpacu_lite]
129
  // [wpacu_lite]
130
  if ($wpacuIsPluginsManagerPageLink) {
131
  ?>
132
+ <span class="extra-info assets-unloaded-false"><span class="dashicons dashicons-lock"></span> Premium Feature</span>
133
  <?php
134
  }
135
  // [/wpacu_lite]
templates/meta-box-loaded-assets/_assets-hardcoded-list.php ADDED
@@ -0,0 +1,227 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if (! isset($data)) {
3
+ exit; // no direct access
4
+ }
5
+
6
+ $totalHardcodedTags = 0;
7
+ $hardcodedTags = $data['all']['hardcoded'];
8
+
9
+ // Use the WordPress cache mostly for retrieval of the values if the Dashboard retrieval was used
10
+ // Otherwise, default to $data if no valid value was set for the cache
11
+ $dataKeys = array(
12
+ 'page_unload_text'
13
+ );
14
+
15
+ foreach ($dataKeys as $dataKey) {
16
+ if ( ! ( $dataValue = wp_cache_get( 'wpacu_data_' . $dataKey ) ) ) {
17
+ $dataValue = isset( $data[ $dataKey ] ) ? $data[ $dataKey ] : '';
18
+ }
19
+
20
+ $data[$dataKey] = $dataValue;
21
+ }
22
+
23
+ $contentWithinConditionalComments = wp_cache_get('wpacu_hardcoded_content_within_conditional_comments');
24
+
25
+ $totalHardcodedTags = isset($hardcodedTags['link_and_style_tags']) ? count($hardcodedTags['link_and_style_tags']) : 0;
26
+ $totalHardcodedTags += isset($hardcodedTags['script_src_and_inline_tags']) ? count($hardcodedTags['script_src_and_inline_tags']) : 0;
27
+
28
+ if ($totalHardcodedTags === 0) {
29
+ return; // Don't print anything if there are no hardcoded tags available
30
+ }
31
+ ?>
32
+ <div class="wpacu-assets-collapsible-wrap wpacu-wrap-area wpacu-hardcoded">
33
+ <a class="wpacu-assets-collapsible wpacu-assets-collapsible-active" href="#" style="padding: 15px 15px 15px 44px;">
34
+ <span class="dashicons dashicons-code-standards"></span> Hardcoded (non-enqueued) Styles &amp;
35
+ Scripts &#10141; Total: <?php echo $totalHardcodedTags; ?>
36
+ </a>
37
+ <div class="wpacu-assets-collapsible-content" style="max-height: inherit;">
38
+ <div style="padding: 0;">
39
+ <div style="margin: 15px 0 0;">
40
+ <p><span style="color: #0073aa;" class="dashicons dashicons-info"></span> The following tags are NOT LOADED via the recommended <a target="_blank"
41
+ href="https://developer.wordpress.org/reference/hooks/wp_enqueue_scripts/"><code>wp_enqueue_scripts()</code></a>
42
+ action hook (despite the name, it is used for enqueuing both scripts and styles) which is the proper one to use when enqueuing scripts and styles that are meant to appear on
43
+ the front end. The standard functions that are used inside the hook to do an enqueuing are: <a target="_blank"
44
+ href="https://developer.wordpress.org/reference/functions/wp_enqueue_style/">wp_enqueue_style()</a>,
45
+ <a target="_blank" href="https://codex.wordpress.org/Function_Reference/wp_add_inline_style">wp_add_inline_style()</a>
46
+ <a target="_blank" href="https://developer.wordpress.org/reference/functions/wp_enqueue_script/">wp_enqueue_script()</a>
47
+ &amp; <a target="_blank"
48
+ href="https://developer.wordpress.org/reference/functions/wp_add_inline_script/">wp_add_inline_script()</a>. The tags could have been added via editing the PHP code (not using the right standard functions), directly inside posts content, widgets or via plugins such as "Insert Headers and Footers", "Head, Footer and Post Injections", etc. Be careful when unloading any of these tags as they might be related to Google Analytics/AdWords, StatCounter, Facebook Pixel, etc.
49
+ </p>
50
+ <div style="margin: 20px 0; border-left: solid 4px green; background: #f2faf2; padding: 10px;"><img width="20" height="20" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-lock.svg" valign="top" alt="" /> &nbsp;Managing hardcoded LINK/STYLE/SCRIPT tags is an option <a target="_blank" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>?utm_source=manage_hardcoded_assets&utm_medium=top_notice">available in the Pro version</a>.</div>
51
+ </div>
52
+ <?php
53
+ foreach (array('link_and_style_tags', 'script_src_and_inline_tags') as $targetKey) {
54
+ if ( ! empty( $hardcodedTags[ $targetKey ] ) ) {
55
+ $totalTagsForTarget = count( $hardcodedTags[ $targetKey ] );
56
+ $totalHardcodedTags += $totalTagsForTarget;
57
+ ?>
58
+ <div>
59
+ <div class="wpacu-content-title">
60
+ <h3>
61
+ <?php if ($targetKey === 'link_and_style_tags') { ?>Hardcoded LINK (stylesheet) &amp; STYLE tags<?php } ?>
62
+ <?php if ($targetKey === 'script_src_and_inline_tags') { ?>Hardcoded SCRIPT (with "src" attribute &amp; inline) tags<?php } ?>
63
+ </h3>
64
+ </div>
65
+ <table class="wpacu_list_table wpacu_striped">
66
+ <tbody>
67
+ <?php
68
+ $hardcodedTagsOutput = '';
69
+
70
+ foreach ( $hardcodedTags[ $targetKey ] as $indexNo => $tagOutput ) {
71
+ $contentUniqueStr = sha1( $tagOutput );
72
+ /*
73
+ * 1) Hardcoded LINK (stylesheet) &amp; STYLE tags
74
+ */
75
+ if ($targetKey === 'link_and_style_tags') {
76
+ // For LINK ("stylesheet")
77
+ if ( stripos( $tagOutput, '<link ' ) === 0 ) {
78
+ $generatedHandle = 'wpacu_hardcoded_link_' . $contentUniqueStr;
79
+
80
+ preg_match_all( '#href=(["\'])' . '(.*)' . '(["\'])#Usmi', $tagOutput,
81
+ $outputMatches );
82
+ $linkHrefOriginal = trim( $outputMatches[2][0], '"\'' );
83
+
84
+ $dataRowObj = (object) array(
85
+ 'handle' => $generatedHandle,
86
+ 'src' => $linkHrefOriginal,
87
+ 'tag_output' => $tagOutput
88
+ );
89
+
90
+ $dataRowObj->inside_conditional_comment = \WpAssetCleanUp\HardcodedAssets::isWithinConditionalComment($tagOutput, $contentWithinConditionalComments);
91
+
92
+ // Determine source href (starting with '/' but not starting with '//')
93
+ if (strpos($linkHrefOriginal, '/') === 0 && strpos($linkHrefOriginal, '//') !== 0) {
94
+ $dataRowObj->srcHref = get_site_url() . $linkHrefOriginal;
95
+ } else {
96
+ $dataRowObj->srcHref = $linkHrefOriginal;
97
+ }
98
+
99
+ $dataHH = $data;
100
+ $dataHH['row'] = array();
101
+ $dataHH['row']['obj'] = $dataRowObj;
102
+
103
+ $templateRowOutput = \WpAssetCleanUp\Main::instance()->parseTemplate(
104
+ '/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded',
105
+ $dataHH
106
+ );
107
+
108
+ $hardcodedTagsOutput .= $templateRowOutput;
109
+ }
110
+
111
+ // For STYLE (inline)
112
+ if ( stripos( $tagOutput, '<style' ) === 0 ) {
113
+ $generatedHandle = 'wpacu_hardcoded_style_' . $contentUniqueStr;
114
+
115
+ $dataRowObj = (object) array(
116
+ 'handle' => $generatedHandle,
117
+ 'src' => false,
118
+ 'tag_output' => $tagOutput
119
+ );
120
+
121
+ $dataRowObj->inside_conditional_comment = \WpAssetCleanUp\HardcodedAssets::isWithinConditionalComment($tagOutput, $contentWithinConditionalComments);
122
+
123
+ $dataHH = $data;
124
+ $dataHH['row'] = array();
125
+ $dataHH['row']['obj'] = $dataRowObj;
126
+
127
+ $templateRowOutput = \WpAssetCleanUp\Main::instance()->parseTemplate(
128
+ '/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded',
129
+ $dataHH
130
+ );
131
+
132
+ $hardcodedTagsOutput .= $templateRowOutput;
133
+ }
134
+ } elseif ($targetKey === 'script_src_and_inline_tags') {
135
+ /*
136
+ * 2) Hardcoded SCRIPT (with "src" attribute & inline) tags
137
+ */
138
+ $generatedHandle = false;
139
+ $srcHrefOriginal = false;
140
+ $isScriptInline = false;
141
+
142
+ if (stripos($tagOutput, 'src') !== false) {
143
+ $srcHrefOriginal = false;
144
+
145
+ if (function_exists('libxml_use_internal_errors') && function_exists('libxml_clear_errors') && class_exists('DOMDocument')) {
146
+ $domForTag = new \DOMDocument();
147
+ libxml_use_internal_errors( true );
148
+
149
+ $domForTag->loadHTML( $tagOutput );
150
+
151
+ $scriptTagObj = $domForTag->getElementsByTagName( 'script' )->item( 0 );
152
+
153
+ $scriptAttributes = array();
154
+
155
+ foreach ( $scriptTagObj->attributes as $attrObj ) {
156
+ if ( $attrObj->nodeName === 'src' ) {
157
+ $srcHrefOriginal = trim( $attrObj->nodeValue );
158
+ break;
159
+ }
160
+ }
161
+ } else { // Fallback in case DOMDocument is not active for any reason
162
+ // only look from <script to >
163
+ preg_match_all( '#<script(.*?)src=(["\'])' . '(.*)' . '(["\'])(>)#Usmi',
164
+ $tagOutput, $outputMatches );
165
+
166
+ if ( isset( $outputMatches[3][0] ) ) {
167
+ $srcHrefOriginal = trim( $outputMatches[3][0], '"\'' );
168
+ }
169
+ }
170
+ }
171
+
172
+ if ($srcHrefOriginal) {
173
+ $generatedHandle = 'wpacu_hardcoded_script_src_' . $contentUniqueStr;
174
+ }
175
+
176
+ // It it a SCRIPT without "src" attribute? Then it's an inline one
177
+ if (! $generatedHandle) {
178
+ $generatedHandle = 'wpacu_hardcoded_script_inline_' . $contentUniqueStr;
179
+ }
180
+
181
+ $dataRowObj = (object)array(
182
+ 'handle' => $generatedHandle,
183
+ 'tag_output' => $tagOutput
184
+ );
185
+
186
+ if ($srcHrefOriginal) {
187
+ $dataRowObj->src = $srcHrefOriginal;
188
+ }
189
+
190
+ $dataRowObj->inside_conditional_comment = \WpAssetCleanUp\HardcodedAssets::isWithinConditionalComment($tagOutput, $contentWithinConditionalComments);
191
+
192
+ // Determine source href (starting with '/' but not starting with '//')
193
+ if ($srcHrefOriginal) {
194
+ if ( strpos( $srcHrefOriginal, '/' ) === 0 && strpos( $srcHrefOriginal, '//' ) !== 0 ) {
195
+ $dataRowObj->srcHref = get_site_url() . $srcHrefOriginal;
196
+ } else {
197
+ $dataRowObj->srcHref = $srcHrefOriginal;
198
+ }
199
+ }
200
+
201
+ $dataHH = $data;
202
+ $dataHH['row'] = array();
203
+ $dataHH['row']['obj'] = $dataRowObj;
204
+
205
+ $templateRowOutput = \WpAssetCleanUp\Main::instance()->parseTemplate(
206
+ '/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded',
207
+ $dataHH
208
+ );
209
+
210
+ $hardcodedTagsOutput .= $templateRowOutput;
211
+ }
212
+ }
213
+
214
+ echo $hardcodedTagsOutput;
215
+ ?>
216
+ </tbody>
217
+ </table>
218
+ </div>
219
+ <?php
220
+ }
221
+ }
222
+ ?>
223
+ </div>
224
+ </div>
225
+ </div>
226
+ <?php
227
+
templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded.php ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from _assets-hardcoded-list.php and it's relevant only for the hardcoded scripts (non-enqueued)
4
+ */
5
+ if (! isset($data)) {
6
+ exit; // no direct access
7
+ }
8
+ ?>
9
+ <tr data-script-handle-row="<?php echo $data['row']['obj']->handle; ?>"
10
+ class="wpacu_asset_row">
11
+ <td>
12
+ <?php if (isset($data['row']['obj']->src) && $data['row']['obj']->src) { ?>
13
+ <?php
14
+ // Source
15
+ include '_asset-script-single-row-hardcoded/_source.php';
16
+ ?>
17
+ <div style="margin: 10px 0;">File Size: Pro version</div>
18
+ <?php
19
+ if ($data['row']['obj']->inside_conditional_comment) {
20
+ echo '<span><img style="vertical-align: middle;" width="25" height="25" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-ie.svg" alt="" title="Microsoft / Public domain" />&nbsp;<span style="font-weight: 400; color: #1C87CF;">Loads only in Internet Explorer based on the following condition:</span> <em>if '.$data['row']['obj']->inside_conditional_comment.'</em></span>';
21
+ }
22
+ ?>
23
+ <div style="margin: 10px 0;" class="wpacu-hardcoded-code-area">
24
+ HTML Output: <code><?php echo htmlentities( $data['row']['obj']->tag_output ); ?></code>
25
+ </div>
26
+ <?php
27
+ } else {
28
+ // SCRIPT inline tag
29
+ $tagOutput = trim($data['row']['obj']->tag_output);
30
+
31
+ // default values (could be changed below)
32
+ $totalCodeLines = 1;
33
+ $enableViewMore = false;
34
+
35
+ if (strpos($tagOutput, "\n") !== false) {
36
+ $totalCodeLines = count(explode("\n", $tagOutput));
37
+
38
+ if ($totalCodeLines > 18) {
39
+ $enableViewMore = true;
40
+ }
41
+ }
42
+
43
+ if (strlen($tagOutput) > 600) {
44
+ $enableViewMore = true;
45
+ }
46
+ ?>
47
+ <div class="wpacu-hardcoded-code-area <?php if ($enableViewMore) { ?>wpacu-has-view-more<?php } ?>">
48
+ <?php
49
+ if ($tagBelongsTo = \WpAssetCleanUp\HardcodedAssets::belongsTo($data['row']['obj']->tag_output)) {
50
+ echo '<div style="margin-bottom: 10px;">'.__('Belongs to', 'wp-asset-clean-up').': <strong>'.$tagBelongsTo . '</strong></div>';
51
+ }
52
+
53
+ if ($data['row']['obj']->inside_conditional_comment) {
54
+ echo '<span><img style="vertical-align: middle;" width="25" height="25" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-ie.svg" alt="" title="Microsoft / Public domain" />&nbsp;<span style="font-weight: 400; color: #1C87CF;">Loads only in Internet Explorer based on the following condition:</span> <em>if '.$data['row']['obj']->inside_conditional_comment.'</em></span>';
55
+ }
56
+ ?>
57
+ <div>
58
+ <pre><code><?php echo htmlentities( $data['row']['obj']->tag_output ); ?></code></pre>
59
+ </div>
60
+ <?php if ($enableViewMore) {
61
+ $wpacuViewMoreCodeBtnClass = ! is_admin() ? 'wpacu-view-more-code' : 'button';
62
+ ?>
63
+ <p class="wpacu-view-more-link-area" style="margin: 0 !important; padding: 15px !important;"><a href="#" class="<?php echo $wpacuViewMoreCodeBtnClass; ?>"><?php _e('View more', 'wp-asset-clean-up'); ?></a></p>
64
+ <?php } ?>
65
+ </div>
66
+ <?php
67
+ }
68
+ ?>
69
+ <div class="wrap_bulk_unload_options">
70
+ <?php
71
+ // Unload on this page
72
+ include '_asset-script-single-row-hardcoded/_unload-per-page.php';
73
+
74
+ // Unload site-wide (everywhere)
75
+ include '_asset-script-single-row-hardcoded/_unload-site-wide.php';
76
+
77
+ // Unload on all pages of [post] post type (if applicable)
78
+ include '_asset-script-single-row-hardcoded/_unload-post-type.php';
79
+
80
+ // Unload via RegEx (if site-wide is not already chosen)
81
+ include '_asset-script-single-row-hardcoded/_unload-via-regex.php';
82
+
83
+ do_action('wpacu_pro_bulk_unload_output', $data, $data['row']['obj'], 'js');
84
+ ?>
85
+ <div class="wpacu-clearfix"></div>
86
+ </div>
87
+ <?php
88
+ // Handle Note
89
+ include '_asset-script-single-row-hardcoded/_notes.php';
90
+
91
+ // Preloads (none for the hardcoded scripts)
92
+ ?>
93
+ <input type="hidden"
94
+ name="wpacu_preloads[scripts][<?php echo $data['row']['obj']->handle; ?>]"
95
+ value="" />
96
+ <img style="display: none;"
97
+ class="wpacu-ajax-loader"
98
+ src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-ajax-loading-spinner.svg" alt="" />
99
+ </td>
100
+ </tr>
templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded/_notes.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from /templates/meta-box-loaded-assets/_asset-script-single-row.php
4
+ */
5
+
6
+ if (! isset($data)) {
7
+ exit; // no direct access
8
+ }
9
+ ?>
10
+ <div class="wpacu-handle-notes">
11
+ <p><small>No notes have been added about this JavaScript file (e.g. why you unloaded it or decided to keep it loaded) &#10230; <a data-handle="<?php echo $data['row']['obj']->handle; ?>" href="#" class="wpacu-manage-hardcoded-assets-requires-pro-popup wpacu-add-handle-note wpacu-for-script"><span class="dashicons dashicons-welcome-write-blog"></span> <label for="wpacu_handle_note_<?php echo $data['row']['obj']->handle; ?>">Add Note</label></a></small></p>
12
+ </div>
templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded/_source.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from /templates/meta-box-loaded-assets/_asset-script-single-row.php
4
+ */
5
+
6
+ if ( ! isset($data) ) {
7
+ exit; // no direct access
8
+ }
9
+
10
+ if (isset($data['row']['obj']->src, $data['row']['obj']->srcHref) && $data['row']['obj']->src !== '' && $data['row']['obj']->srcHref) {
11
+ $isExternalSrc = true;
12
+
13
+ if (\WpAssetCleanUp\Misc::getLocalSrc($data['row']['obj']->src)
14
+ || strpos($data['row']['obj']->src, '/?') !== false // Dynamic Local URL
15
+ || strpos(str_replace(site_url(), '', $data['row']['obj']->src), '?') === 0 // Starts with ? right after the site url (it's a local URL)
16
+ ) {
17
+ $isExternalSrc = false;
18
+ }
19
+
20
+ $relSrc = str_replace(site_url(), '', $data['row']['obj']->src);
21
+
22
+ if (isset($data['row']['obj']->baseUrl)) {
23
+ $relSrc = str_replace($data['row']['obj']->baseUrl, '/', $relSrc);
24
+ }
25
+ ?>
26
+ <div class="wpacu-source-row">
27
+ <?php _e( 'Source:', 'wp-asset-clean-up' ); ?>
28
+ <a target="_blank"
29
+ style="color: green;" <?php if ( $isExternalSrc ) { ?> data-wpacu-external-source="<?php echo $data['row']['obj']->srcHref; ?>" <?php } ?>
30
+ href="<?php echo $data['row']['obj']->src; ?>"><?php echo $relSrc; ?></a>
31
+ <?php if ( $isExternalSrc ) { ?><span data-wpacu-external-source-status></span><?php } ?>
32
+ </div>
33
+ <?php
34
+ }
templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded/_unload-per-page.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from /templates/meta-box-loaded-assets/_asset-script-single-row.php
4
+ */
5
+
6
+ if (! isset($data)) {
7
+ exit; // no direct access
8
+ }
9
+ ?>
10
+ <div class="wpacu_asset_options_wrap"
11
+ style="padding: 8px 10px 6px !important;">
12
+ <ul class="wpacu_asset_options">
13
+ <li class="wpacu_unload_this_page">
14
+ <label class="wpacu_switch wpacu_disabled wpacu-manage-hardcoded-assets-requires-pro-popup">
15
+ <input data-handle="<?php echo $data['row']['obj']->handle; ?>"
16
+ data-handle-for="script"
17
+ class="input-unload-on-this-page wpacu-not-locked wpacu_unload_rule_input wpacu_unload_rule_for_script"
18
+ id="script_<?php echo $data['row']['obj']->handle; ?>"
19
+ disabled="disabled"
20
+ name="<?php echo WPACU_PLUGIN_ID; ?>[scripts][]"
21
+ type="checkbox"
22
+ value="<?php echo $data['row']['obj']->handle; ?>" />
23
+ <span class="wpacu_slider wpacu_round"></span>
24
+ </label>
25
+ <label class="wpacu_slider_text wpacu-manage-hardcoded-assets-requires-pro-popup" for="script_<?php echo $data['row']['obj']->handle; ?>">
26
+ <?php echo $data['page_unload_text']; ?>
27
+ </label>
28
+ </li>
29
+ </ul>
30
+ </div>
templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded/_unload-post-type.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from /templates/meta-box-loaded-assets/_asset-script-single-row.php
4
+ */
5
+
6
+ if (! isset($data)) {
7
+ exit; // no direct access
8
+ }
9
+
10
+ if ($data['bulk_unloaded_type'] === 'post_type') {
11
+ ?>
12
+ <div class="wpacu_asset_options_wrap">
13
+ <?php
14
+ ?>
15
+ <ul class="wpacu_asset_options">
16
+ <?php
17
+ switch ($data['post_type']) {
18
+ case 'product':
19
+ $unloadBulkText = __('Unload JS on all WooCommerce "Product" pages', 'wp-asset-clean-up');
20
+ break;
21
+ case 'download':
22
+ $unloadBulkText = __('Unload JS on all Easy Digital Downloads "Download" pages', 'wp-asset-clean-up');
23
+ break;
24
+ default:
25
+ $unloadBulkText = sprintf(__('Unload on All Pages of "<strong>%s</strong>" post type', 'wp-asset-clean-up'), $data['post_type']);
26
+ }
27
+ ?>
28
+ <li>
29
+ <label class="wpacu-manage-hardcoded-assets-requires-pro-popup">
30
+ <span style="color: #ccc;" class="wpacu-manage-hardcoded-assets-requires-pro-popup dashicons dashicons-lock"></span>
31
+ <?php echo $unloadBulkText; ?></label>
32
+ </li>
33
+ </ul>
34
+ </div>
35
+ <?php
36
+ }
templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded/_unload-site-wide.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from /templates/meta-box-loaded-assets/_asset-script-single-row.php
4
+ */
5
+
6
+ if (! isset($data)) {
7
+ exit; // no direct access
8
+ }
9
+ ?>
10
+ <div class="wpacu_asset_options_wrap">
11
+ <ul class="wpacu_asset_options">
12
+ <li>
13
+ <label class="wpacu-manage-hardcoded-assets-requires-pro-popup">
14
+ <span style="color: #ccc;" class="wpacu-manage-hardcoded-assets-requires-pro-popup dashicons dashicons-lock"></span>
15
+ <?php _e('Unload site-wide', 'wp-asset-clean-up'); ?> <small>* <?php _e('everywhere', 'wp-asset-clean-up'); ?></small>
16
+ </label>
17
+ </li>
18
+ </ul>
19
+ </div>
templates/meta-box-loaded-assets/_hardcoded/_asset-script-single-row-hardcoded/_unload-via-regex.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from /templates/meta-box-loaded-assets/_asset-script-single-row.php
4
+ */
5
+
6
+ if (! isset($data)) {
7
+ exit; // no direct access
8
+ }
9
+ ?>
10
+ <div data-script-handle="<?php echo $data['row']['obj']->handle; ?>" class="wpacu_asset_options_wrap wpacu_unload_regex_area_wrap">
11
+ <ul class="wpacu_asset_options">
12
+ <li>
13
+ <label class="wpacu-manage-hardcoded-assets-requires-pro-popup"
14
+ for="wpacu_unload_it_regex_option_script_<?php echo $data['row']['obj']->handle; ?>">
15
+ <span style="color: #ccc;" class="wpacu-manage-hardcoded-assets-requires-pro-popup dashicons dashicons-lock"></span>&nbsp;Unload it for URLs with request URI matching this RegEx(es):
16
+ </label>
17
+ <a style="text-decoration: none; color: inherit; vertical-align: middle;" target="_blank"
18
+ href="https://assetcleanup.com/docs/?p=313#wpacu-unload-by-regex"><span
19
+ class="dashicons dashicons-editor-help"></span></a>
20
+ </li>
21
+ </ul>
22
+ </div>
templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded.php ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from _assets-hardcoded-list.php and it's relevant only for the hardcoded styles (non-enqueued)
4
+ */
5
+ if (! isset($data)) {
6
+ exit; // no direct access
7
+ }
8
+ ?>
9
+ <tr data-style-handle-row="<?php echo $data['row']['obj']->handle; ?>"
10
+ class="wpacu_asset_row">
11
+ <td>
12
+ <?php if (isset($data['row']['obj']->src) && $data['row']['obj']->src) { ?>
13
+ <?php
14
+ // Source
15
+ include '_asset-style-single-row-hardcoded/_source.php';
16
+ ?>
17
+ <div style="margin: 10px 0;">File Size: Pro version</div>
18
+ <?php
19
+ if ($data['row']['obj']->inside_conditional_comment) {
20
+ echo '<span><img style="vertical-align: middle;" width="25" height="25" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-ie.svg" alt="" title="Microsoft / Public domain" />&nbsp;<span style="font-weight: 400; color: #1C87CF;">Loads only in Internet Explorer based on the following condition:</span> <em>if '.$data['row']['obj']->inside_conditional_comment.'</em></span>';
21
+ }
22
+ ?>
23
+ <div style="margin: 10px 0;" class="wpacu-hardcoded-code-area">
24
+ HTML Output: <code><?php echo htmlentities( $data['row']['obj']->tag_output ); ?></code>
25
+ </div>
26
+ <?php
27
+ } else {
28
+ // STYLE inline tag
29
+ $tagOutput = trim($data['row']['obj']->tag_output);
30
+
31
+ // default values (could be changed below)
32
+ $totalCodeLines = 1;
33
+ $enableViewMore = false;
34
+
35
+ if (strpos($tagOutput, "\n") !== false) {
36
+ $totalCodeLines = count(explode("\n", $tagOutput));
37
+
38
+ if ($totalCodeLines > 18) {
39
+ $enableViewMore = true;
40
+ }
41
+ }
42
+
43
+ if (strlen($tagOutput) > 600) {
44
+ $enableViewMore = true;
45
+ }
46
+ ?>
47
+ <div class="wpacu-hardcoded-code-area <?php if ($enableViewMore) { ?>wpacu-has-view-more<?php } ?>">
48
+ <?php
49
+ if ($tagBelongsTo = \WpAssetCleanUp\HardcodedAssets::belongsTo($data['row']['obj']->tag_output)) {
50
+ echo '<div style="margin-bottom: 10px;">'.__('Belongs to', 'wp-asset-clean-up').': <strong>'.$tagBelongsTo . '</strong></div>';
51
+ }
52
+
53
+ if ($data['row']['obj']->inside_conditional_comment) {
54
+ echo '<span><img style="vertical-align: middle;" width="25" height="25" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-ie.svg" alt="" title="Microsoft / Public domain" />&nbsp;<span style="font-weight: 400; color: #1C87CF;">Loads only in Internet Explorer based on the following condition:</span> <em>if '.$data['row']['obj']->inside_conditional_comment.'</em></span>';
55
+ }
56
+ ?>
57
+ <div>
58
+ <pre><code><?php echo htmlentities( $data['row']['obj']->tag_output ); ?></code></pre>
59
+ </div>
60
+ <?php if ($enableViewMore) {
61
+ $wpacuViewMoreCodeBtnClass = ! is_admin() ? 'wpacu-view-more-code' : 'button';
62
+ ?>
63
+ <p class="wpacu-view-more-link-area" style="margin: 0 !important; padding: 15px !important;"><a href="#" class="<?php echo $wpacuViewMoreCodeBtnClass; ?>"><?php _e('View more', 'wp-asset-clean-up'); ?></a></p>
64
+ <?php } ?>
65
+ </div>
66
+ <?php
67
+ }
68
+ ?>
69
+ <div class="wrap_bulk_unload_options">
70
+ <?php
71
+ $tagType = '';
72
+
73
+ if (isset($data['row']['obj']->tag_output)) {
74
+ $tagType = ( strpos( $data['row']['obj']->tag_output, '<link' ) !== false ) ? 'LINK' : 'STYLE';
75
+ }
76
+
77
+ // Unload on this page
78
+ include '_asset-style-single-row-hardcoded/_unload-per-page.php';
79
+
80
+ // Unload site-wide (everywhere)
81
+ include '_asset-style-single-row-hardcoded/_unload-site-wide.php';
82
+
83
+ // Unload on all pages of [post] post type (if applicable)
84
+ include '_asset-style-single-row-hardcoded/_unload-post-type.php';
85
+
86
+ // Unload via RegEx (if site-wide is not already chosen)
87
+ include '_asset-style-single-row-hardcoded/_unload-via-regex.php';
88
+
89
+ do_action('wpacu_pro_bulk_unload_output', $data, $data['row']['obj'], 'css');
90
+ ?>
91
+ <div class="wpacu-clearfix"></div>
92
+ </div>
93
+ <?php
94
+ // Handle Note
95
+ include '_asset-style-single-row-hardcoded/_notes.php';
96
+
97
+ // Preloads (none for the hardcoded styles)
98
+ ?>
99
+ <input type="hidden"
100
+ name="wpacu_preloads[styles][<?php echo $data['row']['obj']->handle; ?>]"
101
+ value="" />
102
+ <img style="display: none;"
103
+ class="wpacu-ajax-loader"
104
+ src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-ajax-loading-spinner.svg" alt="" />
105
+ </td>
106
+ </tr>
templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded/_notes.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from /templates/meta-box-loaded-assets/_asset-style-single-row.php
4
+ */
5
+ if (! isset($data, $tagType)) {
6
+ exit; // no direct access
7
+ }
8
+ ?>
9
+ <div class="wpacu-handle-notes">
10
+ <p><small>No notes have been added about this hardcoded <?php echo $tagType; ?> tag (e.g. why you unloaded it or decided to keep it loaded) &#10230; <a data-handle="<?php echo $data['row']['obj']->handle; ?>" href="#" class="wpacu-manage-hardcoded-assets-requires-pro-popup wpacu-add-handle-note wpacu-for-style"><span class="dashicons dashicons-welcome-write-blog"></span> <label for="wpacu_handle_note_<?php echo $data['row']['obj']->handle; ?>">Add Note</label></a></small></p>
11
+ </div>
templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded/_source.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from /templates/meta-box-loaded-assets/_asset-script-single-row.php
4
+ */
5
+ if ( ! isset($data) ) {
6
+ exit; // no direct access
7
+ }
8
+
9
+ if (isset($data['row']['obj']->src, $data['row']['obj']->srcHref) && $data['row']['obj']->src !== '' && $data['row']['obj']->srcHref) {
10
+ $isExternalSrc = true;
11
+
12
+ if (\WpAssetCleanUp\Misc::getLocalSrc($data['row']['obj']->src)
13
+ || strpos($data['row']['obj']->src, '/?') !== false // Dynamic Local URL
14
+ || strpos(str_replace(site_url(), '', $data['row']['obj']->src), '?') === 0 // Starts with ? right after the site url (it's a local URL)
15
+ ) {
16
+ $isExternalSrc = false;
17
+ }
18
+
19
+ $relSrc = str_replace(site_url(), '', $data['row']['obj']->src);
20
+
21
+ if (isset($data['row']['obj']->baseUrl)) {
22
+ $relSrc = str_replace($data['row']['obj']->baseUrl, '/', $relSrc);
23
+ }
24
+ ?>
25
+ <div class="wpacu-source-row">
26
+ <?php _e( 'Source:', 'wp-asset-clean-up' ); ?>
27
+ <a target="_blank"
28
+ style="color: green;" <?php if ( $isExternalSrc ) { ?> data-wpacu-external-source="<?php echo $data['row']['obj']->srcHref; ?>" <?php } ?>
29
+ href="<?php echo $data['row']['obj']->src; ?>"><?php echo $relSrc; ?></a>
30
+ <?php if ( $isExternalSrc ) { ?><span data-wpacu-external-source-status></span><?php } ?>
31
+ </div>
32
+ <?php
33
+ }
templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded/_unload-per-page.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from /templates/meta-box-loaded-assets/_asset-script-single-row.php
4
+ */
5
+ if (! isset($data)) {
6
+ exit; // no direct access
7
+ }
8
+ ?>
9
+ <div class="wpacu_asset_options_wrap"
10
+ style="padding: 6px 10px 5px !important;">
11
+ <ul class="wpacu_asset_options">
12
+ <li class="wpacu_unload_this_page">
13
+ <label class="wpacu-manage-hardcoded-assets-requires-pro-popup wpacu_switch wpacu_disabled">
14
+ <input data-handle="<?php echo $data['row']['obj']->handle; ?>"
15
+ data-handle-for="style"
16
+ class="input-unload-on-this-page wpacu-not-locked wpacu_unload_rule_input wpacu_unload_rule_for_style"
17
+ id="style_<?php echo $data['row']['obj']->handle; ?>"
18
+ disabled="disabled"
19
+ name="<?php echo WPACU_PLUGIN_ID; ?>[styles][]"
20
+ type="checkbox"
21
+ value="<?php echo $data['row']['obj']->handle; ?>" />
22
+ <span class="wpacu_slider wpacu_round"></span>
23
+ </label>
24
+ <label class="wpacu-manage-hardcoded-assets-requires-pro-popup wpacu_slider_text" for="style_<?php echo $data['row']['obj']->handle; ?>">
25
+ <?php echo $data['page_unload_text']; ?>
26
+ </label>
27
+ </li>
28
+ </ul>
29
+ </div>
templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded/_unload-post-type.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from /templates/meta-box-loaded-assets/_asset-style-single-row.php
4
+ */
5
+ if (! isset($data, $tagType)) {
6
+ exit; // no direct access
7
+ }
8
+
9
+ if ($data['bulk_unloaded_type'] === 'post_type') {
10
+ ?>
11
+ <div class="wpacu_asset_options_wrap">
12
+ <ul class="wpacu_asset_options">
13
+ <?php
14
+ switch ($data['post_type']) {
15
+ case 'product':
16
+ $unloadBulkText = __('Unload CSS on all WooCommerce "Product" pages', 'wp-asset-clean-up');
17
+ break;
18
+ case 'download':
19
+ $unloadBulkText = __('Unload CSS on all Easy Digital Downloads "Download" pages', 'wp-asset-clean-up');
20
+ break;
21
+ default:
22
+ $unloadBulkText = sprintf(__('Unload on All Pages of "<strong>%s</strong>" post type', 'wp-asset-clean-up'), $data['post_type']);
23
+ }
24
+ ?>
25
+ <li>
26
+ <label class="wpacu-manage-hardcoded-assets-requires-pro-popup">
27
+ <span style="color: #ccc;" class="wpacu-manage-hardcoded-assets-requires-pro-popup dashicons dashicons-lock"></span>
28
+ <?php echo $unloadBulkText; ?></label>
29
+ </li>
30
+ </ul>
31
+ </div>
32
+ <?php
33
+ }
templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded/_unload-site-wide.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from /templates/meta-box-loaded-assets/_asset-style-single-row.php
4
+ */
5
+ if (! isset($data, $tagType)) {
6
+ exit; // no direct access
7
+ }
8
+ ?>
9
+ <div class="wpacu_asset_options_wrap">
10
+ <ul class="wpacu_asset_options">
11
+ <li>
12
+ <label class="wpacu-manage-hardcoded-assets-requires-pro-popup">
13
+ <span style="color: #ccc;" class="wpacu-manage-hardcoded-assets-requires-pro-popup dashicons dashicons-lock"></span>
14
+ <?php _e('Unload site-wide', 'wp-asset-clean-up'); ?> <small>* <?php _e('everywhere', 'wp-asset-clean-up'); ?></small>
15
+ </label>
16
+ </li>
17
+ </ul>
18
+ </div>
templates/meta-box-loaded-assets/_hardcoded/_asset-style-single-row-hardcoded/_unload-via-regex.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * The file is included from /templates/meta-box-loaded-assets/_asset-style-single-row.php
4
+ */
5
+ if (! isset($data)) {
6
+ exit; // no direct access
7
+ }
8
+ ?>
9
+ <div class="wpacu_asset_options_wrap wpacu_unload_regex_area_wrap">
10
+ <ul class="wpacu_asset_options">
11
+ <li>
12
+ <label class="wpacu-manage-hardcoded-assets-requires-pro-popup"
13
+ for="wpacu_unload_it_regex_option_style_<?php echo $data['row']['obj']->handle; ?>">
14
+ <span style="color: #ccc;" class="wpacu-manage-hardcoded-assets-requires-pro-popup dashicons dashicons-lock"></span>
15
+ Unload it for URLs with request URI matching this RegEx(es):
16
+ </label>
17
+ <a style="text-decoration: none; color: inherit; vertical-align: middle;" target="_blank"
18
+ href="https://assetcleanup.com/docs/?p=313#wpacu-unload-by-regex"><span
19
+ class="dashicons dashicons-editor-help"></span></a>
20
+ </li>
21
+ </ul>
22
+ </div>
templates/meta-box-loaded-assets/_inline_js.php CHANGED
@@ -161,4 +161,61 @@ if (! isset($data)) {
161
  wpacuAdjustTextareaHeight(el, minHeight);
162
  });
163
  }());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  </script>
161
  wpacuAdjustTextareaHeight(el, minHeight);
162
  });
163
  }());
164
+
165
+ /* For Hardcoded Assets List */
166
+ jQuery(document).ready(function($) {
167
+ var $wpacuEl, $wpacuP, $wpacuUp, $wpacuPs, wpacuTotalHeight;
168
+
169
+ $(document).on('click', '.wpacu-has-view-more > p.wpacu-view-more-link-area > a', function (e) {
170
+ e.preventDefault();
171
+ //console.log('View more click...');
172
+
173
+ wpacuTotalHeight = 0;
174
+
175
+ $wpacuEl = $(this);
176
+ $wpacuP = $wpacuEl.parent();
177
+ $wpacuUp = $wpacuP.parent();
178
+ $wpacuPs = $wpacuUp.find('div');
179
+
180
+ // Measure how tall inside should be by adding together heights of all inside elements (except read-more)
181
+ $wpacuPs.each(function () {
182
+ wpacuTotalHeight += jQuery(this).outerHeight();
183
+ });
184
+
185
+ $wpacuUp.css({
186
+ // Set height to prevent instant jumpdown when max height is removed
187
+ 'height': $wpacuUp.height(),
188
+ 'max-height': 9999
189
+ }).animate({
190
+ 'height': wpacuTotalHeight
191
+ }, function () {
192
+ $wpacuUp.css({'height': 'auto'});
193
+ });
194
+
195
+ // Fade out read-more
196
+ $wpacuP.fadeOut();
197
+
198
+ // Prevent jump-down
199
+ return false;
200
+ });
201
+ });
202
+
203
+ <?php
204
+ // [wpacu_lite]
205
+ if (! is_admin()) {
206
+ // Admin manages the list in the front-end view
207
+ $upgradeToProLink = WPACU_PLUGIN_GO_PRO_URL.'?utm_source=manage_hardcoded_assets&utm_medium=go_pro_frontend';
208
+ ?>
209
+ var wpacuElGoPro = document.getElementsByClassName('wpacu-manage-hardcoded-assets-requires-pro-popup');
210
+
211
+ for (var wpacuII = 0; wpacuII < wpacuElGoPro.length; wpacuII++) {
212
+ // Here we have the same onclick
213
+ wpacuElGoPro.item(wpacuII).onclick = function() {
214
+ window.location.replace('<?php echo $upgradeToProLink; ?>');
215
+ };
216
+ }
217
+ <?php
218
+ }
219
+ // [/wpacu_lite]
220
+ ?>
221
  </script>
templates/meta-box-loaded-assets/view-by-loaded-unloaded.php CHANGED
@@ -134,6 +134,13 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
134
  }
135
  }
136
  }
 
 
 
 
 
 
 
137
  /*
138
  * ----------------------------
139
  * [END] BY Loaded or Unloaded
134
  }
135
  }
136
  }
137
+
138
+ if ( isset( $data['all']['hardcoded'] ) && ! empty( $data['all']['hardcoded'] ) ) {
139
+ include_once __DIR__ . '/_assets-hardcoded-list.php';
140
+ } elseif ($data['is_frontend_view']) {
141
+ // The following string will be replaced within a "wp_loaded" action hook
142
+ echo '{wpacu_assets_collapsible_wrap_hardcoded_list}';
143
+ }
144
  /*
145
  * ----------------------------
146
  * [END] BY Loaded or Unloaded
templates/meta-box-loaded-assets/view-by-location.php CHANGED
@@ -272,6 +272,13 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
272
  echo $locationMainOutput;
273
  }
274
  }
 
 
 
 
 
 
 
275
  }
276
  /*
277
  * -----------------------
272
  echo $locationMainOutput;
273
  }
274
  }
275
+
276
+ if ( isset( $data['all']['hardcoded'] ) && ! empty( $data['all']['hardcoded'] ) ) {
277
+ include_once __DIR__ . '/_assets-hardcoded-list.php';
278
+ } elseif ($data['is_frontend_view']) {
279
+ // The following string will be replaced within a "wp_loaded" action hook
280
+ echo '{wpacu_assets_collapsible_wrap_hardcoded_list}';
281
+ }
282
  }
283
  /*
284
  * -----------------------
templates/meta-box-loaded-assets/view-by-parents.php CHANGED
@@ -127,6 +127,14 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
127
  }
128
  }
129
  }
 
 
 
 
 
 
 
 
130
  /*
131
  * --------------------------------------------
132
  * [END] BY EACH HANDLE STATUS (Parent or Not)
127
  }
128
  }
129
  }
130
+
131
+ if ( isset( $data['all']['hardcoded'] ) && ! empty( $data['all']['hardcoded'] ) ) {
132
+ include_once __DIR__ . '/_assets-hardcoded-list.php';
133
+ } elseif ($data['is_frontend_view']) {
134
+ // The following string will be replaced within a "wp_loaded" action hook
135
+ echo '{wpacu_assets_collapsible_wrap_hardcoded_list}';
136
+ }
137
+
138
  /*
139
  * --------------------------------------------
140
  * [END] BY EACH HANDLE STATUS (Parent or Not)
templates/meta-box-loaded-assets/view-by-position.php CHANGED
@@ -13,115 +13,122 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
13
  */
14
  ?>
15
  <div>
16
- <?php
17
- if (! empty($data['all']['styles']) || ! empty($data['all']['scripts'])) {
 
 
 
 
 
18
  ?>
19
- <p><?php echo sprintf(__('The following styles &amp; scripts are loading on this page. Please select the ones that are %sNOT NEEDED%s. If you are not sure which ones to unload, it is better to enable "Test Mode" (to make the changes apply only to you), while you are going through the trial &amp; error process.', 'wp-asset-clean-up'), '<span style="color: #CC0000;"><strong>', '</strong></span>'); ?></p>
20
- <p><?php echo __('"Load in on this page (make an exception)" will take effect when a bulk unload rule is used. Otherwise, the asset will load anyway unless you select it for unload.', 'wp-asset-clean-up'); ?></p>
21
  <?php
22
- if ($data['plugin_settings']['hide_core_files']) {
23
- ?>
24
- <div class="wpacu_note"><span class="dashicons dashicons-info"></span> WordPress CSS &amp; JavaScript core files are hidden as requested in the plugin's settings. They are meant to be managed by experienced developers in special situations.</div>
25
- <div class="wpacu-clearfix" style="margin-top: 10px;"></div>
26
- <?php
27
- }
28
 
29
- if ( ( (isset($data['core_styles_loaded']) && $data['core_styles_loaded']) || (isset($data['core_scripts_loaded']) && $data['core_scripts_loaded']) ) && ! $data['plugin_settings']['hide_core_files']) {
30
- ?>
31
- <div class="wpacu_note wpacu_warning"><em><?php
32
- echo sprintf(
33
- __('Assets that are marked with %s are part of WordPress core files. Be careful if you decide to unload them! If you are not sure what to do, just leave them loaded by default and consult with a developer.', 'wp-asset-clean-up'),
34
- '<span class="dashicons dashicons-warning"></span>'
35
- );
36
- ?>
37
- </em></div>
38
- <?php
39
- }
40
  ?>
 
 
 
 
 
 
 
 
 
 
41
  </div>
42
 
43
- <div style="margin: 10px 0;">
44
- <?php
45
- echo $data['assets_list_layout_output'];
46
- ?>
47
- </div>
48
 
49
- <div style="margin-bottom: 20px;" class="wpacu-contract-expand-area">
50
- <div class="col-left">
51
- <strong>&#10141; Total enqueued files (including core files): <?php echo (int)$data['total_styles'] + (int)$data['total_scripts']; ?></strong>
52
- </div>
53
- <div class="col-right">
54
- <a href="#" id="wpacu-assets-contract-all" class="wpacu-wp-button wpacu-wp-button-secondary">Contract Both Areas</a>&nbsp;
55
- <a href="#" id="wpacu-assets-expand-all" class="wpacu-wp-button wpacu-wp-button-secondary">Expand Both Areas</a>
56
- </div>
57
- <div class="wpacu-clearfix"></div>
58
  </div>
 
 
 
 
 
 
59
 
60
- <?php
61
- $data['view_by_position'] =
62
- $data['rows_build_array'] =
63
- $data['rows_by_position'] = true;
64
-
65
- $data['rows_assets'] = array();
66
-
67
- require_once __DIR__.'/_asset-style-rows.php';
68
- require_once __DIR__.'/_asset-script-rows.php';
69
-
70
- $positionsText = array(
71
- 'head' => '<span class="dashicons dashicons-editor-code"></span>&nbsp; HEAD tag (.css &amp; .js)',
72
- 'body' => '<span class="dashicons dashicons-editor-code"></span>&nbsp; BODY tag (.css &amp; .js)'
73
- );
74
-
75
- if (! empty($data['rows_assets'])) {
76
- // Sorting: head and body
77
- $rowsAssets = array('head' => array(), 'body' => array());
78
-
79
- foreach ($data['rows_assets'] as $positionMain => $values) {
80
- $rowsAssets[$positionMain] = $values;
81
- }
82
-
83
- foreach ($rowsAssets as $positionMain => $values) {
84
- ksort($values);
85
-
86
- $assetRowsOutput = '';
87
-
88
- $totalFiles = 0;
89
- $assetRowIndex = 1;
90
-
91
- foreach ($values as $assetType => $assetRows) {
92
- foreach ($assetRows as $assetRow) {
93
- $assetRowsOutput .= $assetRow . "\n";
94
- $totalFiles++;
95
- }
96
- }
97
- ?>
98
- <div class="wpacu-assets-collapsible-wrap wpacu-by-position wpacu-wrap-area wpacu-<?php echo $positionMain; ?>">
99
- <a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-collapsible-content-<?php echo $positionMain; ?>">
100
- <?php echo $positionsText[$positionMain]; ?> &#10141; Total files: <?php echo $totalFiles; ?>
101
- </a>
102
-
103
- <div class="wpacu-assets-collapsible-content <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-open<?php } ?>">
104
- <?php if ($positionMain === 'head') { ?>
105
- <p class="wpacu-assets-note">The files below (if any) are loaded within <code>&lt;head&gt;</code> and <code>&lt;/head&gt;</code> tags. The output is done through <code>wp_head()</code> WordPress function which should be located before the closing <code>&lt;/head&gt;</code> tag of your theme.</p>
106
- <?php } elseif ($positionMain === 'body') { ?>
107
- <p class="wpacu-assets-note">The files below (if any) are loaded within <code>&lt;body&gt;</code> and <code>&lt;/body&gt;</code> tags. The output is done through <code>wp_footer()</code> WordPress function which should be located before the closing <code>&lt;/body&gt;</code> tag of your theme.</p>
108
- <?php } ?>
109
-
110
- <?php if (count($values) > 0) { ?>
111
- <table class="wpacu_list_table wpacu_list_by_position wpacu_widefat wpacu_striped">
112
- <tbody>
113
- <?php
114
- echo $assetRowsOutput;
115
- ?>
116
- </tbody>
117
- </table>
118
- <?php } ?>
119
- </div>
120
- </div>
121
- <?php
122
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  }
124
  }
 
 
 
 
 
 
 
 
125
  /*
126
  * -----------------------
127
  * [END] BY EACH POSITION
13
  */
14
  ?>
15
  <div>
16
+ <?php
17
+ if (! empty($data['all']['styles']) || ! empty($data['all']['scripts'])) {
18
+ ?>
19
+ <p><?php echo sprintf(__('The following styles &amp; scripts are loading on this page. Please select the ones that are %sNOT NEEDED%s. If you are not sure which ones to unload, it is better to enable "Test Mode" (to make the changes apply only to you), while you are going through the trial &amp; error process.', 'wp-asset-clean-up'), '<span style="color: #CC0000;"><strong>', '</strong></span>'); ?></p>
20
+ <p><?php echo __('"Load in on this page (make an exception)" will take effect when a bulk unload rule is used. Otherwise, the asset will load anyway unless you select it for unload.', 'wp-asset-clean-up'); ?></p>
21
+ <?php
22
+ if ($data['plugin_settings']['hide_core_files']) {
23
  ?>
24
+ <div class="wpacu_note"><span class="dashicons dashicons-info"></span> WordPress CSS &amp; JavaScript core files are hidden as requested in the plugin's settings. They are meant to be managed by experienced developers in special situations.</div>
25
+ <div class="wpacu-clearfix" style="margin-top: 10px;"></div>
26
  <?php
27
+ }
 
 
 
 
 
28
 
29
+ if ( ( (isset($data['core_styles_loaded']) && $data['core_styles_loaded']) || (isset($data['core_scripts_loaded']) && $data['core_scripts_loaded']) ) && ! $data['plugin_settings']['hide_core_files']) {
 
 
 
 
 
 
 
 
 
 
30
  ?>
31
+ <div class="wpacu_note wpacu_warning"><em><?php
32
+ echo sprintf(
33
+ __('Assets that are marked with %s are part of WordPress core files. Be careful if you decide to unload them! If you are not sure what to do, just leave them loaded by default and consult with a developer.', 'wp-asset-clean-up'),
34
+ '<span class="dashicons dashicons-warning"></span>'
35
+ );
36
+ ?>
37
+ </em></div>
38
+ <?php
39
+ }
40
+ ?>
41
  </div>
42
 
43
+ <div style="margin: 10px 0;">
44
+ <?php
45
+ echo $data['assets_list_layout_output'];
46
+ ?>
47
+ </div>
48
 
49
+ <div style="margin-bottom: 20px;" class="wpacu-contract-expand-area">
50
+ <div class="col-left">
51
+ <strong>&#10141; Total enqueued files (including core files): <?php echo (int)$data['total_styles'] + (int)$data['total_scripts']; ?></strong>
 
 
 
 
 
 
52
  </div>
53
+ <div class="col-right">
54
+ <a href="#" id="wpacu-assets-contract-all" class="wpacu-wp-button wpacu-wp-button-secondary">Contract Both Areas</a>&nbsp;
55
+ <a href="#" id="wpacu-assets-expand-all" class="wpacu-wp-button wpacu-wp-button-secondary">Expand Both Areas</a>
56
+ </div>
57
+ <div class="wpacu-clearfix"></div>
58
+ </div>
59
 
60
+ <?php
61
+ $data['view_by_position'] =
62
+ $data['rows_build_array'] =
63
+ $data['rows_by_position'] = true;
64
+
65
+ $data['rows_assets'] = array();
66
+
67
+ require_once __DIR__.'/_asset-style-rows.php';
68
+ require_once __DIR__.'/_asset-script-rows.php';
69
+
70
+ $positionsText = array(
71
+ 'head' => '<span class="dashicons dashicons-editor-code"></span>&nbsp; HEAD tag (.css &amp; .js)',
72
+ 'body' => '<span class="dashicons dashicons-editor-code"></span>&nbsp; BODY tag (.css &amp; .js)'
73
+ );
74
+
75
+ if (! empty($data['rows_assets'])) {
76
+ // Sorting: head and body
77
+ $rowsAssets = array('head' => array(), 'body' => array());
78
+
79
+ foreach ($data['rows_assets'] as $positionMain => $values) {
80
+ $rowsAssets[$positionMain] = $values;
81
+ }
82
+
83
+ foreach ($rowsAssets as $positionMain => $values) {
84
+ ksort($values);
85
+
86
+ $assetRowsOutput = '';
87
+
88
+ $totalFiles = 0;
89
+ $assetRowIndex = 1;
90
+
91
+ foreach ($values as $assetType => $assetRows) {
92
+ foreach ($assetRows as $assetRow) {
93
+ $assetRowsOutput .= $assetRow . "\n";
94
+ $totalFiles++;
95
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  }
97
+ ?>
98
+ <div class="wpacu-assets-collapsible-wrap wpacu-by-position wpacu-wrap-area wpacu-<?php echo $positionMain; ?>">
99
+ <a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-collapsible-content-<?php echo $positionMain; ?>">
100
+ <?php echo $positionsText[$positionMain]; ?> &#10141; Total files: <?php echo $totalFiles; ?>
101
+ </a>
102
+
103
+ <div class="wpacu-assets-collapsible-content <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-open<?php } ?>">
104
+ <?php if ($positionMain === 'head') { ?>
105
+ <p class="wpacu-assets-note">The files below (if any) are loaded within <code>&lt;head&gt;</code> and <code>&lt;/head&gt;</code> tags. The output is done through <code>wp_head()</code> WordPress function which should be located before the closing <code>&lt;/head&gt;</code> tag of your theme.</p>
106
+ <?php } elseif ($positionMain === 'body') { ?>
107
+ <p class="wpacu-assets-note">The files below (if any) are loaded within <code>&lt;body&gt;</code> and <code>&lt;/body&gt;</code> tags. The output is done through <code>wp_footer()</code> WordPress function which should be located before the closing <code>&lt;/body&gt;</code> tag of your theme.</p>
108
+ <?php } ?>
109
+
110
+ <?php if (count($values) > 0) { ?>
111
+ <table class="wpacu_list_table wpacu_list_by_position wpacu_widefat wpacu_striped">
112
+ <tbody>
113
+ <?php
114
+ echo $assetRowsOutput;
115
+ ?>
116
+ </tbody>
117
+ </table>
118
+ <?php } ?>
119
+ </div>
120
+ </div>
121
+ <?php
122
  }
123
  }
124
+ }
125
+
126
+ if ( isset( $data['all']['hardcoded'] ) && ! empty( $data['all']['hardcoded'] ) ) {
127
+ include_once __DIR__ . '/_assets-hardcoded-list.php';
128
+ } elseif ($data['is_frontend_view']) {
129
+ // The following string will be replaced within a "wp_loaded" action hook
130
+ echo '{wpacu_assets_collapsible_wrap_hardcoded_list}';
131
+ }
132
  /*
133
  * -----------------------
134
  * [END] BY EACH POSITION
templates/meta-box-loaded-assets/view-by-preload.php CHANGED
@@ -127,6 +127,13 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
127
  }
128
  }
129
  }
 
 
 
 
 
 
 
130
  /*
131
  * ------------------------------------
132
  * [END] BY PRELOAD STATUS (yes or no)
127
  }
128
  }
129
  }
130
+
131
+ if ( isset( $data['all']['hardcoded'] ) && ! empty( $data['all']['hardcoded'] ) ) {
132
+ include_once __DIR__ . '/_assets-hardcoded-list.php';
133
+ } elseif ($data['is_frontend_view']) {
134
+ // The following string will be replaced within a "wp_loaded" action hook
135
+ echo '{wpacu_assets_collapsible_wrap_hardcoded_list}';
136
+ }
137
  /*
138
  * ------------------------------------
139
  * [END] BY PRELOAD STATUS (yes or no)
templates/meta-box-loaded-assets/view-default.php CHANGED
@@ -31,7 +31,7 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
31
 
32
  <div class="wpacu-assets-collapsible-wrap wpacu-wrap-area">
33
  <a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-styles-collapsible-content">
34
- <span class="dashicons dashicons-admin-appearance"></span> &nbsp; <?php _e('Styles (.css files)', 'wp-asset-clean-up'); ?> &#10141; Total (+ core files): <?php echo $data['total_styles']; ?>
35
  </a>
36
 
37
  <div id="wpacu-assets-styles-collapsible-content"
@@ -93,7 +93,7 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
93
 
94
  <div class="wpacu-assets-collapsible-wrap wpacu-wrap-area">
95
  <a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-scripts-collapsible-content">
96
- <span class="dashicons dashicons-media-code"></span> &nbsp; <?php _e('Scripts (.js files)', 'wp-asset-clean-up'); ?> &#10141; Total (+ core files): <?php echo $data['total_scripts']; ?>
97
  </a>
98
 
99
  <div id="wpacu-assets-scripts-collapsible-content"
@@ -141,6 +141,13 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
141
  </div>
142
  </div>
143
  <?php
 
 
 
 
 
 
 
144
  include '_inline_js.php';
145
  /*
146
  * -------------------
31
 
32
  <div class="wpacu-assets-collapsible-wrap wpacu-wrap-area">
33
  <a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-styles-collapsible-content">
34
+ <span class="dashicons dashicons-admin-appearance"></span> &nbsp; <?php _e('Styles (.css files)', 'wp-asset-clean-up'); ?> &#10141; Total enqueued (+ core files): <?php echo $data['total_styles']; ?>
35
  </a>
36
 
37
  <div id="wpacu-assets-styles-collapsible-content"
93
 
94
  <div class="wpacu-assets-collapsible-wrap wpacu-wrap-area">
95
  <a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-scripts-collapsible-content">
96
+ <span class="dashicons dashicons-media-code"></span> &nbsp; <?php _e('Scripts (.js files)', 'wp-asset-clean-up'); ?> &#10141; Total enqueued (+ core files): <?php echo $data['total_scripts']; ?>
97
  </a>
98
 
99
  <div id="wpacu-assets-scripts-collapsible-content"
141
  </div>
142
  </div>
143
  <?php
144
+ if ( isset( $data['all']['hardcoded'] ) && ! empty( $data['all']['hardcoded'] ) ) {
145
+ include_once __DIR__ . '/_assets-hardcoded-list.php';
146
+ } elseif ($data['is_frontend_view']) {
147
+ // The following string will be replaced within a "wp_loaded" action hook
148
+ echo '{wpacu_assets_collapsible_wrap_hardcoded_list}';
149
+ }
150
+
151
  include '_inline_js.php';
152
  /*
153
  * -------------------
templates/meta-box-loaded.php CHANGED
@@ -31,7 +31,7 @@ if (! $metaBoxLoadedFine) {
31
  <td><?php echo $data['wp_remote_post']['response']['message']; ?></td>
32
  </tr>
33
  <tr>
34
- <td><strong><?php _e('OUTPUT', 'wp-asset-clean-up'); ?>:</strong></td>
35
  <td><?php echo $data['wp_remote_post']['body']; ?></td>
36
  </tr>
37
  </table>
@@ -146,6 +146,7 @@ if ($data['plugin_settings']['assets_list_layout'] === 'by-loaded-unloaded') {
146
  }
147
 
148
  $data['page_unload_text'] = __('Unload on this page', 'wp-asset-clean-up');
 
149
 
150
  // Assets List Layout - added here to convenience - to avoid going to "Settings"
151
  // it could make debugging faster
31
  <td><?php echo $data['wp_remote_post']['response']['message']; ?></td>
32
  </tr>
33
  <tr>
34
+ <td valign="top"><strong><?php _e('OUTPUT', 'wp-asset-clean-up'); ?>:</strong></td>
35
  <td><?php echo $data['wp_remote_post']['body']; ?></td>
36
  </tr>
37
  </table>
146
  }
147
 
148
  $data['page_unload_text'] = __('Unload on this page', 'wp-asset-clean-up');
149
+ wp_cache_set('wpacu_data_page_unload_text', $data['page_unload_text']);
150
 
151
  // Assets List Layout - added here to convenience - to avoid going to "Settings"
152
  // it could make debugging faster
vendor/composer/installed.json CHANGED
@@ -1,17 +1,65 @@
1
  [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  {
3
  "name": "matthiasmullie/path-converter",
4
- "version": "1.1.2",
5
- "version_normalized": "1.1.2.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/matthiasmullie/path-converter.git",
9
- "reference": "5e4b121c8b9f97c80835c1d878b0812ba1d607c9"
10
  },
11
  "dist": {
12
  "type": "zip",
13
- "url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/5e4b121c8b9f97c80835c1d878b0812ba1d607c9",
14
- "reference": "5e4b121c8b9f97c80835c1d878b0812ba1d607c9",
15
  "shasum": ""
16
  },
17
  "require": {
@@ -21,7 +69,7 @@
21
  "require-dev": {
22
  "phpunit/phpunit": "~4.8"
23
  },
24
- "time": "2018-10-25T15:19:41+00:00",
25
  "type": "library",
26
  "installation-source": "dist",
27
  "autoload": {
@@ -36,9 +84,9 @@
36
  "authors": [
37
  {
38
  "name": "Matthias Mullie",
39
- "role": "Developer",
40
  "email": "pathconverter@mullie.eu",
41
- "homepage": "http://www.mullie.eu"
 
42
  }
43
  ],
44
  "description": "Relative path converter",
@@ -52,17 +100,17 @@
52
  },
53
  {
54
  "name": "matthiasmullie/minify",
55
- "version": "1.3.61",
56
- "version_normalized": "1.3.61.0",
57
  "source": {
58
  "type": "git",
59
  "url": "https://github.com/matthiasmullie/minify.git",
60
- "reference": "d5acb8ce5b6acb7d11bafe97cecc533f6e4fd751"
61
  },
62
  "dist": {
63
  "type": "zip",
64
- "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/d5acb8ce5b6acb7d11bafe97cecc533f6e4fd751",
65
- "reference": "d5acb8ce5b6acb7d11bafe97cecc533f6e4fd751",
66
  "shasum": ""
67
  },
68
  "require": {
@@ -78,7 +126,7 @@
78
  "suggest": {
79
  "psr/cache-implementation": "Cache implementation to use with Minify::cache"
80
  },
81
- "time": "2018-11-26T23:10:39+00:00",
82
  "bin": [
83
  "bin/minifycss",
84
  "bin/minifyjs"
@@ -97,9 +145,9 @@
97
  "authors": [
98
  {
99
  "name": "Matthias Mullie",
100
- "role": "Developer",
101
  "email": "minify@mullie.eu",
102
- "homepage": "http://www.mullie.eu"
 
103
  }
104
  ],
105
  "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.",
@@ -111,53 +159,5 @@
111
  "minifier",
112
  "minify"
113
  ]
114
- },
115
- {
116
- "name": "psr/cache",
117
- "version": "1.0.1",
118
- "version_normalized": "1.0.1.0",
119
- "source": {
120
- "type": "git",
121
- "url": "https://github.com/php-fig/cache.git",
122
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
123
- },
124
- "dist": {
125
- "type": "zip",
126
- "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
127
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
128
- "shasum": ""
129
- },
130
- "require": {
131
- "php": ">=5.3.0"
132
- },
133
- "time": "2016-08-06T20:24:11+00:00",
134
- "type": "library",
135
- "extra": {
136
- "branch-alias": {
137
- "dev-master": "1.0.x-dev"
138
- }
139
- },
140
- "installation-source": "dist",
141
- "autoload": {
142
- "psr-4": {
143
- "Psr\\Cache\\": "src/"
144
- }
145
- },
146
- "notification-url": "https://packagist.org/downloads/",
147
- "license": [
148
- "MIT"
149
- ],
150
- "authors": [
151
- {
152
- "name": "PHP-FIG",
153
- "homepage": "http://www.php-fig.org/"
154
- }
155
- ],
156
- "description": "Common interface for caching libraries",
157
- "keywords": [
158
- "cache",
159
- "psr",
160
- "psr-6"
161
- ]
162
  }
163
  ]
1
  [
2
+ {
3
+ "name": "psr/cache",
4
+ "version": "1.0.1",
5
+ "version_normalized": "1.0.1.0",
6
+ "source": {
7
+ "type": "git",
8
+ "url": "https://github.com/php-fig/cache.git",
9
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
10
+ },
11
+ "dist": {
12
+ "type": "zip",
13
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
14
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
15
+ "shasum": ""
16
+ },
17
+ "require": {
18
+ "php": ">=5.3.0"
19
+ },
20
+ "time": "2016-08-06T20:24:11+00:00",
21
+ "type": "library",
22
+ "extra": {
23
+ "branch-alias": {
24
+ "dev-master": "1.0.x-dev"
25
+ }
26
+ },
27
+ "installation-source": "dist",
28
+ "autoload": {
29
+ "psr-4": {
30
+ "Psr\\Cache\\": "src/"
31
+ }
32
+ },
33
+ "notification-url": "https://packagist.org/downloads/",
34
+ "license": [
35
+ "MIT"
36
+ ],
37
+ "authors": [
38
+ {
39
+ "name": "PHP-FIG",
40
+ "homepage": "http://www.php-fig.org/"
41
+ }
42
+ ],
43
+ "description": "Common interface for caching libraries",
44
+ "keywords": [
45
+ "cache",
46
+ "psr",
47
+ "psr-6"
48
+ ]
49
+ },
50
  {
51
  "name": "matthiasmullie/path-converter",
52
+ "version": "1.1.3",
53
+ "version_normalized": "1.1.3.0",
54
  "source": {
55
  "type": "git",
56
  "url": "https://github.com/matthiasmullie/path-converter.git",
57
+ "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9"
58
  },
59
  "dist": {
60
  "type": "zip",
61
+ "url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/e7d13b2c7e2f2268e1424aaed02085518afa02d9",
62
+ "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9",
63
  "shasum": ""
64
  },
65
  "require": {
69
  "require-dev": {
70
  "phpunit/phpunit": "~4.8"
71
  },
72
+ "time": "2019-02-05T23:41:09+00:00",
73
  "type": "library",
74
  "installation-source": "dist",
75
  "autoload": {
84
  "authors": [
85
  {
86
  "name": "Matthias Mullie",
 
87
  "email": "pathconverter@mullie.eu",
88
+ "homepage": "http://www.mullie.eu",
89
+ "role": "Developer"
90
  }
91
  ],
92
  "description": "Relative path converter",
100
  },
101
  {
102
  "name": "matthiasmullie/minify",
103
+ "version": "1.3.63",
104
+ "version_normalized": "1.3.63.0",
105
  "source": {
106
  "type": "git",
107
  "url": "https://github.com/matthiasmullie/minify.git",
108
+ "reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117"
109
  },
110
  "dist": {
111
  "type": "zip",
112
+ "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/9ba1b459828adc13430f4dd6c49dae4950dc4117",
113
+ "reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117",
114
  "shasum": ""
115
  },
116
  "require": {
126
  "suggest": {
127
  "psr/cache-implementation": "Cache implementation to use with Minify::cache"
128
  },
129
+ "time": "2020-01-21T20:21:08+00:00",
130
  "bin": [
131
  "bin/minifycss",
132
  "bin/minifyjs"
145
  "authors": [
146
  {
147
  "name": "Matthias Mullie",
 
148
  "email": "minify@mullie.eu",
149
+ "homepage": "http://www.mullie.eu",
150
+ "role": "Developer"
151
  }
152
  ],
153
  "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.",
159
  "minifier",
160
  "minify"
161
  ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  }
163
  ]
vendor/matthiasmullie/minify/composer.json CHANGED
@@ -18,6 +18,11 @@
18
  "ext-pcre": "*",
19
  "matthiasmullie/path-converter": "~1.1"
20
  },
 
 
 
 
 
21
  "suggest": {
22
  "psr/cache-implementation": "Cache implementation to use with Minify::cache"
23
  },
18
  "ext-pcre": "*",
19
  "matthiasmullie/path-converter": "~1.1"
20
  },
21
+ "require-dev": {
22
+ "matthiasmullie/scrapbook": "~1.0",
23
+ "phpunit/phpunit": "~4.8",
24
+ "friendsofphp/php-cs-fixer": "~2.0"
25
+ },
26
  "suggest": {
27
  "psr/cache-implementation": "Cache implementation to use with Minify::cache"
28
  },
vendor/matthiasmullie/minify/composer.lock DELETED
@@ -1,70 +0,0 @@
1
- {
2
- "_readme": [
3
- "This file locks the dependencies of your project to a known state",
4
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
- "This file is @generated automatically"
6
- ],
7
- "content-hash": "42094b60a2132ae1407aec2b36c9e75a",
8
- "packages": [
9
- {
10
- "name": "matthiasmullie/path-converter",
11
- "version": "1.1.3",
12
- "source": {
13
- "type": "git",
14
- "url": "https://github.com/matthiasmullie/path-converter.git",
15
- "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9"
16
- },
17
- "dist": {
18
- "type": "zip",
19
- "url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/e7d13b2c7e2f2268e1424aaed02085518afa02d9",
20
- "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9",
21
- "shasum": ""
22
- },
23
- "require": {
24
- "ext-pcre": "*",
25
- "php": ">=5.3.0"
26
- },
27
- "require-dev": {
28
- "phpunit/phpunit": "~4.8"
29
- },
30
- "type": "library",
31
- "autoload": {
32
- "psr-4": {
33
- "MatthiasMullie\\PathConverter\\": "src/"
34
- }
35
- },
36
- "notification-url": "https://packagist.org/downloads/",
37
- "license": [
38
- "MIT"
39
- ],
40
- "authors": [
41
- {
42
- "name": "Matthias Mullie",
43
- "email": "pathconverter@mullie.eu",
44
- "homepage": "http://www.mullie.eu",
45
- "role": "Developer"
46
- }
47
- ],
48
- "description": "Relative path converter",
49
- "homepage": "http://github.com/matthiasmullie/path-converter",
50
- "keywords": [
51
- "converter",
52
- "path",
53
- "paths",
54
- "relative"
55
- ],
56
- "time": "2019-02-05T23:41:09+00:00"
57
- }
58
- ],
59
- "packages-dev": [],
60
- "aliases": [],
61
- "minimum-stability": "stable",
62
- "stability-flags": [],
63
- "prefer-stable": false,
64
- "prefer-lowest": false,
65
- "platform": {
66
- "php": ">=5.3.0",
67
- "ext-pcre": "*"
68
- },
69
- "platform-dev": []
70
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/matthiasmullie/minify/src/CSS.php CHANGED
@@ -525,7 +525,7 @@ class CSS extends Minify
525
  );
526
 
527
  return preg_replace_callback(
528
- '/(?<=[: ])('.implode(array_keys($colors), '|').')(?=[; }])/i',
529
  function ($match) use ($colors) {
530
  return $colors[strtoupper($match[0])];
531
  },
@@ -708,7 +708,8 @@ class CSS extends Minify
708
  return $placeholder.$rest;
709
  };
710
 
711
- $this->registerPattern('/calc(\(.+?)(?=$|;|calc\()/', $callback);
 
712
  }
713
 
714
  /**
525
  );
526
 
527
  return preg_replace_callback(
528
+ '/(?<=[: ])('.implode('|', array_keys($colors)).')(?=[; }])/i',
529
  function ($match) use ($colors) {
530
  return $colors[strtoupper($match[0])];
531
  },
708
  return $placeholder.$rest;
709
  };
710
 
711
+ $this->registerPattern('/calc(\(.+?)(?=$|;|}|calc\()/', $callback);
712
+ $this->registerPattern('/calc(\(.+?)(?=$|;|}|calc\()/m', $callback);
713
  }
714
 
715
  /**
vendor/matthiasmullie/minify/src/Minify.php CHANGED
@@ -99,6 +99,44 @@ abstract class Minify
99
  return $this;
100
  }
101
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  /**
103
  * Minify the data & (optionally) saves it to a file.
104
  *
99
  return $this;
100
  }
101
 
102
+ /**
103
+ * Add a file to be minified.
104
+ *
105
+ * @param string|string[] $data
106
+ *
107
+ * @return static
108
+ *
109
+ * @throws IOException
110
+ */
111
+ public function addFile($data /* $data = null, ... */)
112
+ {
113
+ // bogus "usage" of parameter $data: scrutinizer warns this variable is
114
+ // not used (we're using func_get_args instead to support overloading),
115
+ // but it still needs to be defined because it makes no sense to have
116
+ // this function without argument :)
117
+ $args = array($data) + func_get_args();
118
+
119
+ // this method can be overloaded
120
+ foreach ($args as $path) {
121
+ if (is_array($path)) {
122
+ call_user_func_array(array($this, 'addFile'), $path);
123
+ continue;
124
+ }
125
+
126
+ // redefine var
127
+ $path = (string) $path;
128
+
129
+ // check if we can read the file
130
+ if (!$this->canImportFile($path)) {
131
+ throw new IOException('The file "'.$path.'" could not be opened for reading. Check if PHP has enough permissions.');
132
+ }
133
+
134
+ $this->add($path);
135
+ }
136
+
137
+ return $this;
138
+ }
139
+
140
  /**
141
  * Minify the data & (optionally) saves it to a file.
142
  *
vendor/matthiasmullie/path-converter/src/Converter.php CHANGED
@@ -71,6 +71,14 @@ class Converter implements ConverterInterface
71
  // deal with different operating systems' directory structure
72
  $path = rtrim(str_replace(DIRECTORY_SEPARATOR, '/', $path), '/');
73
 
 
 
 
 
 
 
 
 
74
  /*
75
  * Example:
76
  * /home/forkcms/frontend/cache/compiled_templates/../../core/layout/css/../images/img.gif
71
  // deal with different operating systems' directory structure
72
  $path = rtrim(str_replace(DIRECTORY_SEPARATOR, '/', $path), '/');
73
 
74
+ // remove leading current directory.
75
+ if (substr($path, 0, 2) === './') {
76
+ $path = substr($path, 2);
77
+ }
78
+
79
+ // remove references to current directory in the path.
80
+ $path = str_replace('/./', '/', $path);
81
+
82
  /*
83
  * Example:
84
  * /home/forkcms/frontend/cache/compiled_templates/../../core/layout/css/../images/img.gif
wpacu.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  * Plugin Name: Asset CleanUp: Page Speed Booster
4
  * Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
5
- * Version: 1.3.5.7
6
  * Description: Unload Chosen Scripts & Styles from Posts/Pages to reduce HTTP Requests, Combine/Minify CSS/JS files
7
  * Author: Gabriel Livan
8
  * Author URI: http://gabelivan.com/
@@ -12,7 +12,7 @@
12
 
13
  // Is the Pro version triggered before the Lite one and are both plugins active?
14
  if (! defined('WPACU_PLUGIN_VERSION')) {
15
- define('WPACU_PLUGIN_VERSION', '1.3.5.7');
16
  }
17
 
18
  // Exit if accessed directly
@@ -109,7 +109,19 @@ define('WPACU_LOAD_ASSETS_REQ_KEY', WPACU_PLUGIN_ID . '_load');
109
 
110
  require_once WPACU_PLUGIN_DIR.'/wpacu-load.php';
111
 
112
- if (! is_admin()) {
 
 
 
 
 
 
 
 
 
 
 
 
113
  add_action('parse_query', static function() { // very early triggering to set WPACU_ALL_ACTIVE_PLUGINS_LOADED
114
  if (defined('WPACU_ALL_ACTIVE_PLUGINS_LOADED')) { return; } // only trigger it once in this action
115
  define('WPACU_ALL_ACTIVE_PLUGINS_LOADED', true);
2
  /*
3
  * Plugin Name: Asset CleanUp: Page Speed Booster
4
  * Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
5
+ * Version: 1.3.5.8
6
  * Description: Unload Chosen Scripts & Styles from Posts/Pages to reduce HTTP Requests, Combine/Minify CSS/JS files
7
  * Author: Gabriel Livan
8
  * Author URI: http://gabelivan.com/
12
 
13
  // Is the Pro version triggered before the Lite one and are both plugins active?
14
  if (! defined('WPACU_PLUGIN_VERSION')) {
15
+ define('WPACU_PLUGIN_VERSION', '1.3.5.8');
16
  }
17
 
18
  // Exit if accessed directly
109
 
110
  require_once WPACU_PLUGIN_DIR.'/wpacu-load.php';
111
 
112
+ $wpacuGetLoadedAssetsAction = ((isset($_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY]) && $_REQUEST[WPACU_LOAD_ASSETS_REQ_KEY])
113
+ || (isset($_REQUEST['action']) && $_REQUEST['action'] === WPACU_PLUGIN_ID.'_get_loaded_assets'));
114
+
115
+ define('WPACU_GET_LOADED_ASSETS_ACTION', $wpacuGetLoadedAssetsAction);
116
+
117
+ if (WPACU_GET_LOADED_ASSETS_ACTION === true || ! is_admin()) {
118
+ add_action('init', static function() {
119
+ // "Smart Slider 3" & "WP Rocket" compatibility fix | triggered ONLY when the assets are fetched
120
+ if ( ! function_exists('get_rocket_option') && class_exists( 'NextendSmartSliderWPRocket' ) ) {
121
+ function get_rocket_option($option) { return ''; }
122
+ }
123
+ });
124
+
125
  add_action('parse_query', static function() { // very early triggering to set WPACU_ALL_ACTIVE_PLUGINS_LOADED
126
  if (defined('WPACU_ALL_ACTIVE_PLUGINS_LOADED')) { return; } // only trigger it once in this action
127
  define('WPACU_ALL_ACTIVE_PLUGINS_LOADED', true);