Imagify Image Optimizer - Version 2.0

Version Description

  • Enhancement: Add compatibility with our new smart compression system (#663)
  • Enhancement: Optimize initialization of some of the code (#473)
  • Enhancement: Add new filter imagify_process_webp_content (#653)
  • Bugfix: Prevent PHP warning when displaying the pricing modal (#666)
  • 3rd party compatibility: Pass missing parameter to the http_headers_useragent filter (#612)
  • 3rd party compatibility: Prevent conflict with WP Cloudflare super page cache (#609)
  • Bugfix: Fix various UI issues (#604, #586, #592, #594)
  • i18n: Fix typos & improve strings (#621)
Download this release

Release Info

Developer wp_media
Plugin Icon 128x128 Imagify Image Optimizer
Version 2.0
Comparing to
See all releases

Code changes from version 1.10 to 2.0

Files changed (54) hide show
  1. assets/css/admin-bar.min.css +1 -1
  2. assets/css/admin.min.css +1 -1
  3. assets/css/bulk.css +8 -9
  4. assets/css/bulk.min.css +1 -1
  5. assets/css/files-list.css +12 -3
  6. assets/css/files-list.min.css +1 -1
  7. assets/css/notices.min.css +1 -1
  8. assets/css/options.min.css +1 -1
  9. assets/css/pricing-modal.min.css +1 -1
  10. assets/css/sweetalert-custom.css +3 -0
  11. assets/css/sweetalert-custom.min.css +1 -1
  12. assets/css/sweetalert2.min.css +1 -1
  13. assets/css/twentytwenty.min.css +1 -1
  14. assets/js/pricing-modal.js +1 -1
  15. classes/Context/AbstractContext.php +0 -39
  16. classes/Context/ContextInterface.php +0 -24
  17. classes/Context/CustomFolders.php +2 -26
  18. classes/Context/Noop.php +7 -17
  19. classes/Context/WP.php +0 -27
  20. classes/Optimization/File.php +1 -32
  21. classes/Optimization/Process/AbstractProcess.php +3 -68
  22. classes/Webp/Picture/Display.php +3 -1
  23. imagify.php +12 -10
  24. inc/3rd-party/3rd-party.php +1 -0
  25. inc/3rd-party/nextgen-gallery/classes/Context/NGG.php +4 -19
  26. inc/3rd-party/wp-cloudflare-super-page-cache.php +25 -0
  27. inc/admin/upgrader.php +6 -86
  28. inc/classes/class-imagify-admin-ajax-post.php +17 -63
  29. inc/classes/class-imagify-files-list-table.php +12 -46
  30. inc/classes/class-imagify-notices.php +3 -1
  31. inc/classes/class-imagify-options.php +2 -13
  32. inc/classes/class-imagify.php +5 -38
  33. inc/deprecated/deprecated.php +89 -0
  34. inc/functions/admin-ui.php +12 -14
  35. inc/functions/api.php +1 -13
  36. inc/functions/common.php +4 -12
  37. inc/functions/i18n.php +1 -1
  38. readme.txt +26 -22
  39. vendor/autoload.php +1 -1
  40. vendor/composer/autoload_real.php +4 -4
  41. vendor/composer/autoload_static.php +4 -4
  42. vendor/composer/installed.json +7 -6
  43. vendor/composer/installers/.github/workflows/continuous-integration.yml +6 -0
  44. vendor/composer/installers/composer.json +1 -0
  45. vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php +1 -0
  46. vendor/composer/installers/src/Composer/Installers/Installer.php +1 -0
  47. vendor/composer/installers/src/Composer/Installers/PantheonInstaller.php +12 -0
  48. views/button/re-optimize.php +4 -4
  49. views/modal-payment.php +3 -3
  50. views/page-settings.php +2 -54
  51. views/part-bulk-optimization-overquota-alert.php +1 -1
  52. views/part-bulk-optimization-table-row-folder-type.php +0 -16
  53. views/part-bulk-optimization-table.php +0 -1
  54. views/part-rocket-ad.php +5 -3
assets/css/admin-bar.min.css CHANGED
@@ -1 +1 @@
1
- #wp-admin-bar-imagify .button-text,.imagify-meteo-icon{display:inline-block;vertical-align:middle}.imagify-account,.imagify-account-link{padding-right:15px}.imagify-meteo-icon{height:38px;margin-right:10px}.imagify-user-plan{color:#40b1d0}.imagify-meteo-title.imagify-meteo-title{color:#FFF;font-size:17px}.imagify-space-left>p{color:#FFF}#wp-admin-bar-imagify-profile [class^=imagify-bar-]{position:relative;height:1.5em;width:100%;background:#60758D;color:#FFF;font-size:10px}#wp-admin-bar-imagify-profile .imagify-progress{height:1.5em;font-size:1em}.imagify-progress{-webkit-transition:width .3s;-o-transition:width .3s;transition:width .3s}.imagify-bar-positive .imagify-progress{background:#8CC152}.imagify-bar-positive .imagify-barnb{color:#8CC152}.imagify-bar-negative .imagify-progress{background:#73818C}.imagify-bar-negative .imagify-barnb{color:#73818C}.imagify-bar-neutral .imagify-progress{background:#F5A623}.imagify-space-left .imagify-bar-negative .imagify-progress{background:#D0021B}#wpadminbar #wp-admin-bar-imagify-profile *{line-height:1.5;white-space:initial}#wpadminbar #wp-admin-bar-imagify .ab-submenu{padding-bottom:0}#wpadminbar #wp-admin-bar-imagify-profile .ab-item{height:auto;padding:0 13px}#wpadminbar #wp-admin-bar-imagify-profile{min-width:200px;padding:15px 0 10px;margin-top:.7em;background:#222}#wp-admin-bar-imagify .dashicons{font-family:dashicons;font-size:18px;vertical-align:middle;margin:0 5px 0 0}#wp-admin-bar-imagify .imagify-abq-row{display:table;width:100%}#wp-admin-bar-imagify .imagify-abq-row+.imagify-abq-row{margin-top:.75em}#wp-admin-bar-imagify .imagify-abq-row>*{display:table-cell}#wp-admin-bar-imagify-profile .imagify-meteo-icon{padding-right:7px}#wp-admin-bar-imagify-profile .imagify-meteo-icon img{width:37px}#wp-admin-bar-imagify-profile .imagify-meteo-title{font-size:17px}#wp-admin-bar-imagify-profile .imagify-meteo-subs{color:#72889F}#wpadminbar #wp-admin-bar-imagify-profile strong{font-weight:700}#wpadminbar #wp-admin-bar-imagify-profile .imagify-user-plan,#wpadminbar #wp-admin-bar-imagify-profile a{padding:0;color:#40B1D0}#wpadminbar #wp-admin-bar-imagify-profile .imagify-account-link{display:table}#wpadminbar #wp-admin-bar-imagify-profile .imagify-account-link>*{display:table-cell}#wpadminbar #wp-admin-bar-imagify-profile .imagify-space-left{max-width:210px;min-width:210px;width:210px}#wpadminbar #wp-admin-bar-imagify-profile .imagify-space-left p{font-size:12px}#wp-admin-bar-imagify-profile .imagify-error,#wp-admin-bar-imagify-profile .imagify-warning{padding:10px;margin:0 -13px -13px}#wp-admin-bar-imagify-profile .imagify-error p+p,#wp-admin-bar-imagify-profile .imagify-warning p+p{margin-top:.5em}#wp-admin-bar-imagify-profile .imagify-error p+p+p,#wp-admin-bar-imagify-profile .imagify-warning p+p+p{margin-top:1em}#wpadminbar #wp-admin-bar-imagify-profile .imagify-btn-ghost{display:inline-block;height:auto;padding:7px 10px;border:1px solid #FFF;text-align:center;background:0 0;color:#FFF;border-radius:3px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}#wpadminbar #wp-admin-bar-imagify-profile .imagify-btn-ghost:focus,#wpadminbar #wp-admin-bar-imagify-profile .imagify-btn-ghost:hover{background:#FFF;color:#888}#wpadminbar .imagify-warning *{background:#f5a623;color:#FFF;text-shadow:0 0 2px rgba(0,0,0,.2)}
1
+ .imagify-account,.imagify-account-link{padding-right:15px}.imagify-meteo-icon{display:inline-block;height:38px;vertical-align:middle;margin-right:10px}.imagify-user-plan{color:#40b1d0}.imagify-meteo-title.imagify-meteo-title{color:#fff;font-size:17px}.imagify-space-left>p{color:#fff}#wp-admin-bar-imagify-profile [class^=imagify-bar-]{position:relative;height:1.5em;width:100%;background:#60758d;color:#fff;font-size:10px}#wp-admin-bar-imagify-profile .imagify-progress{height:1.5em;font-size:1em}.imagify-progress{-webkit-transition:width .3s;-o-transition:width .3s;transition:width .3s}.imagify-bar-positive .imagify-progress{background:#8cc152}.imagify-bar-positive .imagify-barnb{color:#8cc152}.imagify-bar-negative .imagify-progress{background:#73818c}.imagify-bar-negative .imagify-barnb{color:#73818c}.imagify-bar-neutral .imagify-progress{background:#f5a623}.imagify-space-left .imagify-bar-negative .imagify-progress{background:#d0021b}#wpadminbar #wp-admin-bar-imagify-profile *{line-height:1.5;white-space:initial}#wpadminbar #wp-admin-bar-imagify .ab-submenu{padding-bottom:0}#wpadminbar #wp-admin-bar-imagify-profile .ab-item{height:auto;padding:0 13px}#wpadminbar #wp-admin-bar-imagify-profile{min-width:200px;padding:15px 0 10px;margin-top:.7em;background:#222}#wp-admin-bar-imagify .dashicons{font-family:dashicons;font-size:18px;vertical-align:middle;margin:0 5px 0 0}#wp-admin-bar-imagify .button-text{display:inline-block;vertical-align:middle}#wp-admin-bar-imagify .imagify-abq-row{display:table;width:100%}#wp-admin-bar-imagify .imagify-abq-row+.imagify-abq-row{margin-top:.75em}#wp-admin-bar-imagify .imagify-abq-row>*{display:table-cell}#wp-admin-bar-imagify-profile .imagify-meteo-icon{padding-right:7px}#wp-admin-bar-imagify-profile .imagify-meteo-icon img{width:37px}#wp-admin-bar-imagify-profile .imagify-meteo-title{font-size:17px}#wp-admin-bar-imagify-profile .imagify-meteo-subs{color:#72889f}#wpadminbar #wp-admin-bar-imagify-profile strong{font-weight:700}#wpadminbar #wp-admin-bar-imagify-profile .imagify-user-plan,#wpadminbar #wp-admin-bar-imagify-profile a{padding:0;color:#40b1d0}#wpadminbar #wp-admin-bar-imagify-profile .imagify-account-link{display:table}#wpadminbar #wp-admin-bar-imagify-profile .imagify-account-link>*{display:table-cell}#wpadminbar #wp-admin-bar-imagify-profile .imagify-space-left{max-width:210px;min-width:210px;width:210px}#wpadminbar #wp-admin-bar-imagify-profile .imagify-space-left p{font-size:12px}#wp-admin-bar-imagify-profile .imagify-error,#wp-admin-bar-imagify-profile .imagify-warning{padding:10px;margin:0 -13px -13px}#wp-admin-bar-imagify-profile .imagify-error p+p,#wp-admin-bar-imagify-profile .imagify-warning p+p{margin-top:.5em}#wp-admin-bar-imagify-profile .imagify-error p+p+p,#wp-admin-bar-imagify-profile .imagify-warning p+p+p{margin-top:1em}#wpadminbar #wp-admin-bar-imagify-profile .imagify-btn-ghost{display:inline-block;height:auto;padding:7px 10px;border:1px solid #fff;text-align:center;background:0 0;color:#fff;border-radius:3px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}#wpadminbar #wp-admin-bar-imagify-profile .imagify-btn-ghost:focus,#wpadminbar #wp-admin-bar-imagify-profile .imagify-btn-ghost:hover{background:#fff;color:#888}#wpadminbar .imagify-warning *{background:#f5a623;color:#fff;text-shadow:0 0 2px rgba(0,0,0,.2)}
assets/css/admin.min.css CHANGED
@@ -1 +1 @@
1
- .imagify-start,.wp_attachment_image .imagify-button-primary{float:left}.imagify-mt0.imagify-mt0,.imagify-section p:first-child{margin-top:0}.imagify-columns,.imagify-data-item,.imagify-datas-actions-links,.imagify-oh,body.imagify-modal-is-open{overflow:hidden}.imagify-flex{display:-webkit-box;display:-ms-flexbox;display:flex}.imagify-vcenter{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-noshrink{-ms-flex-negative:0;flex-shrink:0}.imagify-nogrow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.imagify-wauto{width:auto}.imagify-hauto{height:auto}.imagify-full-width{width:100%}.imagify-end{float:right}.imagify-txt-start.imagify-txt-start.imagify-txt-start{text-align:left}.imagify-txt-center.imagify-txt-center.imagify-txt-center{text-align:center}.imagify-txt-end.imagify-txt-end.imagify-txt-end{text-align:right}.imagify-mt1.imagify-mt1{margin-top:1em}.imagify-mt2.imagify-mt2{margin-top:2em}.imagify-mt3.imagify-mt3{margin-top:3em}.imagify-mb0.imagify-mb0{margin-bottom:0}.imagify-mb1.imagify-mb1{margin-bottom:1em}.imagify-mr1.imagify-mr1{margin-right:1em}.imagify-ml2.imagify-ml2{margin-left:2em}.imagify-mr2.imagify-mr2{margin-right:2em}.imagify-pl0.imagify-pl0.imagify-pl0{padding-left:0}.imagify-pb0.imagify-pb0{padding-bottom:0}.imagify-pr1.imagify-pr1{padding-right:1em}.imagify-pr2.imagify-pr2{padding-right:2em}.imagify-clear{clear:both}.imagify-clearfix:after,.imagify-inline-options:after,.imagify-settings-main-content:after,.imagify-settings-section:after{content:"";display:table;width:100%;clear:both}.imagify-setting-optim-level .imagify-inline-options:after{display:none}.imagify-divider{height:1px;margin:20px 0;background:#D2D3D6}.imagify-pipe{display:inline-block;margin:0 .75em;vertical-align:middle;height:15px;width:1px;background:#979797}.imagify-h3-like.imagify-h3-like.imagify-h3-like{margin-bottom:0;font-size:19px;font-weight:500;color:#1F2332}.imagify-h4-like.imagify-h4-like.imagify-h4-like{font-size:14px;font-weight:700;color:#2E3243}.imagify-count.imagify-count{counter-reset:num}.imagify-count .imagify-count-title{font-weight:700}.imagify-default-settings{color:#73818c;font-weight:400}.imagify-count .imagify-count-title:before{counter-increment:num 1;content:counter(num) ". "}.imagify-count-list{counter-reset:listcount}.imagify-count-list li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-count-list li+li{margin-top:.5em}.imagify-count-list li:before{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:16px;border:2px solid #40b1d0;width:24px;height:24px;counter-increment:listcount 1;content:counter(listcount);color:#40b1d0;border-radius:50%}.imagify-table{display:table;width:100%}.imagify-cell{display:table-cell;padding:10px;vertical-align:top}.imagify-cell.va-top,.va-top .imagify-cell{vertical-align:top}.imagify-bulk-submit .imagify-cell{padding-top:0}.imagify-spinner{display:inline-block;width:20px;height:20px;margin-right:5px;vertical-align:middle;background:url(../images/spinner.gif) 0 0/20px 20px no-repeat rgba(0,0,0,0);opacity:.7}.spinner.imagify-hidden{width:0;margin:4px 0 0}.imagify-primary.imagify-primary.imagify-primary{color:#40b1d0}.imagify-secondary.imagify-secondary.imagify-secondary,.imagify-valid{color:#8BC34A}.misc-pub-section.misc-pub-imagify h4{font-size:14px;margin-top:5px;margin-bottom:0}.imagify-chart{position:relative;top:1px;display:inline-block;vertical-align:middle}.imagify-chart-container{position:relative;display:inline-block;margin-right:5px}.imagify-chart-container canvas{display:block}.imagify-settings .button,.imagify-settings a,.imagify-settings input,.imagify-welcome .button,.imagify-welcome a,.imagify-weolcome input{-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-settings a{color:#40b1d0}.imagify-settings,.imagify-settings p,.imagify-settings th{color:#5F758E}.imagify-button-primary.imagify-button-primary,.imagify-button-secondary.imagify-button-secondary,.imagify-button.imagify-button,.imagify-main-content .button,.imagify-notice .button,.imagify-settings-section .button,.imagify-welcome .button{height:auto;padding:11px 22px;border:0;font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.01em;word-spacing:.01em;-webkit-box-shadow:0 3px 0 rgba(0,0,0,.15);box-shadow:0 3px 0 rgba(0,0,0,.15);border-radius:3px;cursor:pointer;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.button-primary.button-mini{padding:2px 10px}.imagify-settings .button.button-mini-flat{padding:3px 6px 5px;font-size:12px;-webkit-box-shadow:none!important;box-shadow:none!important;line-height:1.2}.imagify-settings .button.button-mini-flat:focus,.imagify-settings .button.button-mini-flat:hover{-webkit-box-shadow:none!important;box-shadow:none!important}.imagify-button-ghost.imagify-button-ghost,.imagify-title .button-ghost.button-ghost{padding:2px 9px;border:1px solid #40B1D0;font-size:12px;font-weight:400;color:#40B1D0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.imagify-button-ghost.imagify-button-ghost:focus,.imagify-button-ghost.imagify-button-ghost:hover,.imagify-title .button-ghost.button-ghost:focus,.imagify-title .button-ghost.button-ghost:hover{border-color:transparent;color:#000;background:#40B1D0}.imagify-button-ghost.imagify-button-ghost:focus,.imagify-button-ghost.imagify-button-ghost:hover{color:#FFF}.imagify-button-medium.imagify-button-medium{text-transform:uppercase;letter-spacing:.1em;padding:3px 10px;font-weight:700}.imagify-button-medium.imagify-button-ghost{border-width:2px}[class*=imagify-] .button .dashicons{margin-right:5px;vertical-align:middle}.imagify-button-primary.imagify-button-primary,.imagify-settings .button-primary.button-primary,.imagify-welcome .button-primary.button-primary{background:#40B1D0;color:#FFF;-webkit-box-shadow:0 3px 0 rgba(51,142,166,1);box-shadow:0 3px 0 rgba(51,142,166,1);text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799!important}.imagify-button-secondary.imagify-button-secondary{background:#8BC34A;color:#FFF;-webkit-box-shadow:0 3px 0 #6F9C3B;box-shadow:0 3px 0 #6F9C3B;text-shadow:0 -1px 1px #6F9C3B,1px 0 1px #6F9C3B,0 1px 1px #6F9C3B!important}.imagify-button-primary.imagify-button-primary:focus,.imagify-button-primary.imagify-button-primary:hover,.imagify-settings .button-primary:focus,.imagify-settings .button-primary:hover,.imagify-welcome .button-primary:focus,.imagify-welcome .button-primary:hover{background:#338ea6;-webkit-box-shadow:0 3px 0 #1f7a92;box-shadow:0 3px 0 #1f7a92}.imagify-button-secondary.imagify-button-secondary:focus,.imagify-button-secondary.imagify-button-secondary:hover{background:#6F9C3B;color:#FFF}.imagify-button-light.imagify-button-light{background:#FFF;color:#4a4a4a;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.2);box-shadow:0 2px 0 rgba(0,0,0,.2)}.imagify-block-secondary .imagify-button-light.imagify-button-light{color:#6F9C3B}.imagify-button-light.imagify-button-light:focus,.imagify-button-light.imagify-button-light:hover{color:#FFF;background:rgba(0,0,0,.2)}.button.imagify-button-clean,.imagify-button-clean{padding:0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.imagify-button-clean .dashicons-plus{width:32px;height:25px}.imagify-button-clean .dashicons-plus:before{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:25px;height:22px;margin-left:2px;padding-top:3px;font-size:17px;background:#40B1D0;color:#FFF;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.button.imagify-button-clean:active,.button.imagify-button-clean:focus,.button.imagify-button-clean:hover,.button.imagify-button-clean[disabled]{background:0 0!important;color:#343A49;-webkit-box-shadow:none;box-shadow:none}.button.imagify-button-clean:focus .dashicons-plus:before,.button.imagify-button-clean:hover .dashicons-plus:before{background:#343A49}button.imagify-link-like{border:0;padding:0;color:inherit;text-decoration:underline;font-size:13px;-webkit-box-shadow:none;box-shadow:none;background:0 0;cursor:pointer}.imagify-section-positive .imagify-button-light{color:#709A41}.imagify-button.imagify-button-big{font-size:15px;padding:11px 30px}.imagify-button-big .dashicons{font-size:1.45em;margin-right:6px;margin-left:-4px}.imagify-button-primary.imagify-button-primary .dashicons,.imagify-button-secondary.imagify-button-secondary .dashicons,.imagify-button.imagify-button .dashicons,.imagify-notice .button .dashicons,.imagify-settings .button .dashicons,.imagify-welcome .button .dashicons{vertical-align:middle}[class*=imagify-] .button-text{display:inline-block;vertical-align:middle}.media-frame-content .imagify-button-primary,.wp_attachment_image .imagify-button-primary{padding:0 10px 1px;margin:0 5px 2px 0;font-size:13px;line-height:26px;-webkit-box-shadow:0 3px 0 rgba(51,142,166,1);box-shadow:0 3px 0 rgba(51,142,166,1)}.imagify-title.imagify-title{position:relative;padding:10px 30px;font-size:23px;background:#1F2332;color:#FFF}.imagify-welcome .imagify-logo{opacity:1}.imagify-welcome .imagify-title{display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px 30px}.imagify-settings .imagify-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-settings .imagify-logo-block{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;margin-right:35px;color:inherit}.imagify-logo-block sup{color:#1F2332}.imagify-settings .imagify-title+.imagify-notice{margin:0;border-right:1px solid #D9D9D9;padding-top:15px;padding-bottom:15px}.imagify-title .title-text{font-size:28px;font-weight:700;color:#FFF}.imagify-lb-icon{padding-right:18px}.imagify-lb-text img{margin-bottom:.15em}.imagify-lb-text{font-size:23px;font-weight:700;color:#FFF}.imagify-logo{display:block;vertical-align:top;opacity:.4}.imagify-section,.imagify-settings div.submit,.imagify-sub-header,.imagify-sub-title.imagify-sub-title{margin:0;padding:20px;background:#F2F5F7}.imagify-section-positive,.imagify-sub-title.imagify-sub-title{padding-left:40px}.imagify-section-positive{background:#8cc152;color:#FFF}.imagify-section-positive p{color:#FFF}.imagify-section-gray{background:#D9E4EB}.imagify-section-gray .imagify-count-title{color:#4a4a4a}.imagify-section p:last-child{margin-bottom:0}.imagify-settings .imagify-documentation-link-box{display:-webkit-box;display:-ms-flexbox;display:flex;padding:12px 13px 14px;border:1px solid #40b1d0;color:#E5EBEF;border-radius:3px}.imagify-documentation-link-icon{width:23px;height:31px;font-size:2.6em;margin-right:15px;line-height:1.3}.imagify-documentation-link-box span{font-size:12px}.imagify-documentation-link-box a{font-weight:700}@media (max-width:1120px){.imagify-settings .imagify-title{-ms-flex-wrap:wrap;flex-wrap:wrap}}.imagify-settings-section{padding:10px 20px}.imagify-account-info-col .imagify-settings-section{padding-right:0}.imagify-settings-main-content,.imagify-welcome .imagify-settings-section{border:1px solid #D9D9D9;border-top-width:0;background:#FFF}.imagify-settings-main-content{padding-bottom:20px}.imagify-settings-main-content .imagify-setting-line,.imagify-settings-main-content p{font-size:14px;line-height:1.5}.imagify-settings-main-content .code{max-height:10em;padding:3px 5px 2px;overflow:auto;background:#EAEAEA;background:rgba(0,0,0,.07)}.imagify-settings-main-content+.imagify-settings-main-content{margin-top:20px;border-top-width:1px}.imagify-br{line-height:2}p.imagify-section-title.imagify-section-title{font-size:20px;margin-top:-.3em;margin-bottom:-.6em}.imagify-rate-us.imagify-rate-us{text-align:right;margin:-1em -2.4em -1em 0;color:#FFF}.imagify-rate-us a{color:#40B1D0}.imagify-rate-us .stars{display:inline-block;margin:2px 0 0 10px;text-decoration:none;letter-spacing:.2em;vertical-align:-1px}.imagify-rate-us .stars .dashicons:before{font-size:18px}.imagify-rate-us a:focus,.imagify-rate-us a:hover{color:#FEE102}@media (max-width:1220px){.imagify-rate-us.imagify-rate-us{position:static;margin-bottom:0;text-align:left}.imagify-rate-us.imagify-rate-us br{display:none}.imagify-rate-us .stars{display:block;margin-left:0}}.imagify-important{color:#F5A623}.imagify-settings .imagify-success,.imagify-success{color:#8BC34A}.imagify-info,.imagify-info a{color:#7A8996;font-size:12px}.imagify-info{position:relative;display:inline-block;padding-left:25px}.imagify-info .dashicons{position:absolute;left:0;top:0;color:#40B1D0}.imagify-checkbox.imagify-checkbox:checked,.imagify-checkbox.imagify-checkbox:not(:checked),.imagify-settings.imagify-settings [type=checkbox]:checked,.imagify-settings.imagify-settings [type=checkbox]:not(:checked){position:absolute;opacity:.01}.imagify-checkbox.imagify-checkbox:checked:focus,.imagify-checkbox.imagify-checkbox:not(:checked):focus,.imagify-settings.imagify-settings [type=checkbox]:checked:focus,.imagify-settings.imagify-settings [type=checkbox]:not(:checked):focus{-webkit-box-shadow:none!important;box-shadow:none!important;outline:0!important;border:0!important}.imagify-checkbox.imagify-checkbox:checked+label,.imagify-checkbox.imagify-checkbox:not(:checked)+label,.imagify-settings [type=checkbox]:checked+label,.imagify-settings [type=checkbox]:not(:checked)+label{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:24px;padding-left:40px;cursor:pointer;font-size:14px;font-weight:700;color:#2E3243}.imagify-checkbox.imagify-checkbox:checked+label:before,.imagify-checkbox.imagify-checkbox:not(:checked)+label:before,.imagify-settings [type=checkbox]:checked+label:before,.imagify-settings [type=checkbox]:not(:checked)+label:before{content:'';position:absolute;left:0;top:0;width:22px;height:22px;border:2px solid #8BA6B4;background:#FFF;border-radius:3px}.imagify-checkbox.imagify-checkbox:checked+label:after,.imagify-checkbox.imagify-checkbox:not(:checked)+label:after,.imagify-settings [type=checkbox]:checked+label:after,.imagify-settings [type=checkbox]:not(:checked)+label:after{content:"✓";position:absolute;font-size:1.4em;top:-2px;left:4.5px;color:#8BA6B4;font-weight:400;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.imagify-checkbox.imagify-checkbox[disabled]:checked+label:before,.imagify-checkbox.imagify-checkbox[disabled]:not(:checked)+label:before,.imagify-settings [type=checkbox][disabled]:checked+label:before,.imagify-settings [type=checkbox][disabled]:not(:checked)+label:before{border-color:#ccc;background:#ddd}.imagify-checkbox.imagify-checkbox:not(:checked)+label:after,.imagify-settings [type=checkbox]:not(:checked)+label:after{opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.imagify-checkbox.imagify-checkbox:checked+label:after,.imagify-settings [type=checkbox]:checked+label:after{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.medium.imagify-checkbox:checked+label:before,.medium.imagify-checkbox:not(:checked)+label:before{width:22px;height:22px;border-width:1.5px;border-radius:2px;margin-top:0}.medium.imagify-checkbox:checked+label:after,.medium.imagify-checkbox:not(:checked)+label:after{font-size:1.1em;left:-17px;top:3px}.imagify-settings .mini[type=checkbox]:checked+label:before,.imagify-settings .mini[type=checkbox]:not(:checked)+label:before,.mini.imagify-checkbox:checked+label:before,.mini.imagify-checkbox:not(:checked)+label:before{width:15px;height:15px;border-width:1px;border-radius:2px;margin-top:0}.imagify-settings .mini[type=checkbox]:checked+label:after,.imagify-settings .mini[type=checkbox]:not(:checked)+label:after,.mini.imagify-checkbox:checked+label:after,.mini.imagify-checkbox:not(:checked)+label:after{font-size:.9em;left:-21px;top:-.5px}.imagify-checkbox.imagify-checkbox:checked:focus+label:before,.imagify-checkbox.imagify-checkbox:not(:checked):focus+label:before,.imagify-settings [type=checkbox]:checked:focus+label:before,.imagify-settings [type=checkbox]:not(:checked):focus+label:before{border-style:dotted;border-color:#40b1d0}.imagify-check-group{padding-left:2px;margin-bottom:0}.imagify-check-group.imagify-is-scrollable{height:15em;overflow-y:auto;padding:8px;margin:1.5em 0 0 -8px;background:#F4F7F9;border:1px solid #D2D3D6;border-radius:3px}.imagify-is-scrollable legend+p{margin-top:0}.imagify-is-scrollable [type=checkbox]:checked+label:before,.imagify-is-scrollable [type=checkbox]:not(:checked)+label:before{background:#F4F7F9}.imagify-settings .imagify-check-group.imagify-check-group label{color:#338EA6;font-weight:500}.imagify-inline-options{position:relative;display:table;width:100%;max-width:600px;border-collapse:collapse}.imagify-inline-options input[type=radio]:checked,.imagify-inline-options input[type=radio]:not(:checked){position:absolute;left:5px;top:5px;display:none}.imagify-inline-options input[type=radio]:checked+label,.imagify-inline-options input[type=radio]:not(:checked)+label{position:relative;display:table-cell;padding:13px 10px;text-align:center;font-weight:600;font-size:16px;text-transform:uppercase;letter-spacing:.1em;color:#FFF;background:#2E3243;-webkit-box-shadow:0 -3px 0 rgba(0,0,0,.1) inset;box-shadow:0 -3px 0 rgba(0,0,0,.1) inset;z-index:2;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-inline-options input[type=radio]:checked+label:first-of-type,.imagify-inline-options input[type=radio]:not(:checked)+label:first-of-type{border-radius:3px 0 0 3px}.imagify-inline-options input[type=radio]:checked+label:last-of-type,.imagify-inline-options input[type=radio]:not(:checked)+label:last-of-type{border-radius:0 3px 3px 0}.imagify-inline-options input[type=radio]:checked+label{background:#8BC34A}.imagify-inline-options .imagify-info{margin-top:15px}.imagify-account-info-col,.imagify-col.imagify-col.imagify-account-info-col{width:380px;max-width:100%;padding:0 20px 0 0}.imagify-col.imagify-col.imagify-shared-with-account-col,.imagify-shared-with-account-col{width:calc(100% - 380px);padding:0}.imagify-account-info-col .imagify-options-title{padding:24px 26px;color:#FFF;background:#1F2332}.imagify-block-secondary{padding:26px 26px 35px;border:1px solid #75A345;background:#8BC34A;border-radius:3px;color:#FFF}.imagify-account-info-col .imagify-block-secondary.imagify-block-secondary h3,.imagify-block-secondary.imagify-block-secondary p{color:inherit}.imagify-account-info-col .imagify-col-content h3:first-child{margin-top:0}.imagify-account-info-col .imagify-col-content h3{font-size:19px}.imagify-account-info-col .imagify-col-content p{margin:1.5em 0}.imagify-account-info-col .imagify-col-content p:first-child{margin-top:0}.imagify-user-plan-label{float:right;margin-top:-4px;padding:2px 10px;border:2px solid #40B1D0;font-size:14px;text-transform:uppercase;letter-spacing:.02em;color:#40B1D0;border-radius:3px}.imagify-user-plan-label:empty{display:none}.imagify-columns{padding:15px 0;counter-reset:cols}.imagify-columns [class^=col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.imagify-columns .col-1-3{width:33.333%;padding-left:28px}.imagify-columns .col-2-3{width:66.666%;padding-left:28px}.imagify-columns .col-1-2{width:50%;padding:0 20px}@media (max-width:830px){.imagify-columns [class^=col-]{float:none;margin-bottom:1.5em}.imagify-columns .col-1-2,.imagify-columns .col-1-3{width:auto;padding:0 28px;clear:both;padding-top:1em}}.column-imagify_optimized_file.column-imagify_optimized_file{width:300px;text-align:center;vertical-align:middle}.column-imagify_optimized_file>*{max-width:21em;margin:0 auto}@media (min-width:1151px) and (max-width:1800px){.column-imagify_optimized_file.column-imagify_optimized_file{width:21em}}@media (min-width:783px) and (max-width:1150px){.column-imagify_optimized_file.column-imagify_optimized_file{width:13em}table.media .column-title .has-media-icon~.row-actions.row-actions{margin-left:0}}@media (max-width:782px){table.media .column-imagify_optimized_file.column-imagify_optimized_file{text-align:left}table.media .imagify-datas-actions-links,table.media .imagify-datas-more-action{text-align:center}table.media .column-imagify_optimized_file .imagify-datas-actions-links a,table.media .column-imagify_optimized_file>*{max-width:100%;margin-left:0}}@media (min-width:783px) and (max-width:1150px),(max-width:360px){table.media .imagify-hide-if-small{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal!important}}.compat-field-imagify .label{vertical-align:top}.compat-field-imagify ul.imagify-datas-list{margin-top:7px;font-size:11px}ul.imagify-datas-list.imagify-datas-list{margin:0 auto;color:#555}ul.imagify-datas-list .big{font-size:12px;color:#40B1D0}li.imagify-data-item{clear:both;margin-bottom:2px}ul.imagify-datas-list .imagify-data-item span.data,ul.imagify-datas-list .imagify-data-item strong{float:left;width:38%;-webkit-box-sizing:border-box;box-sizing:border-box}ul.imagify-datas-list .imagify-data-item span.data{width:62%;padding-right:5px;text-align:left}.compat-field-imagify .imagify-datas-list .imagify-data-item .data{width:130px;text-align:left;font-weight:700}ul.imagify-datas-list .imagify-data-item strong{text-align:left;padding-left:5px}.media-sidebar .imagify-datas-list .imagify-data-item .data{width:auto;float:none}.media-sidebar .imagify-datas-list .imagify-data-item strong{display:inline-block;width:auto;float:none}.media-sidebar .imagify-datas-list .imagify-data-item .imagify-chart{float:left}.imagify-datas-more-action.imagify-datas-more-action{margin:.4em auto;background:-webkit-gradient(linear,left top,left bottom,from(transparent),color-stop(49%,transparent),color-stop(50%,rgba(0,0,0,.075)),color-stop(58%,rgba(0,0,0,.075)),color-stop(58%,transparent),to(transparent));background:-o-linear-gradient(top,transparent,transparent 49%,rgba(0,0,0,.075) 50%,rgba(0,0,0,.075) 58%,transparent 58%,transparent);background:linear-gradient(to bottom,transparent,transparent 49%,rgba(0,0,0,.075) 50%,rgba(0,0,0,.075) 58%,transparent 58%,transparent)}.imagify-datas-more-action a{display:inline-block;padding:0 5px;background:#40B1D0;color:#FFF;text-transform:uppercase;font-size:9px;font-weight:700;line-height:1.9;text-decoration:none}.imagify-datas-more-action a.is-open{background:#555}.imagify-datas-more-action a.is-open .dashicons{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.imagify-datas-more-action a .dashicons{font-size:14px;vertical-align:middle;line-height:.8}.imagify-datas-more-action a .dashicons:before{vertical-align:middle;line-height:20px}.imagify-datas-more-action .the-text{display:inline-block;vertical-align:middle;height:auto;line-height:inherit}ul.imagify-datas-details.imagify-datas-details{margin:.7em auto}.imagify-datas-details strong{color:#40B1D0}.imagify-datas-details .original{color:#555}.imagify-datas-actions-links{border-top:2px solid transparent;padding-top:5px;font-size:11px}.nggform .imagify-datas-actions-links{position:relative;z-index:2}.nggform .row-actions{z-index:1}.imagify-datas-actions-links a{position:relative;display:inline-block;padding-left:17px;text-decoration:none;font-weight:600}.compat-field-imagify .imagify-datas-actions-links{max-width:300px}.misc-pub-imagify .imagify-datas-actions-links{border-top:2px solid #f2f2f2;padding-bottom:5px}.column-imagify_optimized_file .imagify-datas-actions-links a{margin:0 .7em;padding-left:15px}.compat-field-imagify .imagify-datas-actions-links a,.misc-pub-imagify .imagify-datas-actions-links a{float:left;width:50%}.media-sidebar .compat-field-imagify .imagify-datas-actions-links a,.submitbox .misc-pub-imagify .imagify-datas-actions-links a{display:block;width:auto;float:none}.media-sidebar .compat-field-imagify .imagify-datas-actions-links br,.submitbox .misc-pub-imagify .imagify-datas-actions-links br{display:none}.imagify-datas-actions-links a:only-child{float:none;width:auto}.imagify-datas-details.is-open+.imagify-datas-actions-links{border-top-color:rgba(0,0,0,.075)}.imagify-datas-actions-links .dashicons{position:absolute;left:0;top:4px;width:12px;margin-right:2px;font-size:11px}.imagify-account,.imagify-account-link{padding-right:15px}.imagify-meteo-icon{display:inline-block;height:38px;vertical-align:middle;margin-right:10px}.imagify-user-plan{color:#40b1d0}.imagify-meteo-title.imagify-meteo-title{color:#FFF;font-size:17px}.imagify-space-left>p{color:#FFF}[class^=imagify-bar-]{position:relative;height:8px;width:100%;background:#60758D;color:#FFF;font-size:10px}.imagify-progress{height:8px;-webkit-transition:width .3s;-o-transition:width .3s;transition:width .3s}.imagify-bar-positive .imagify-progress{background:#8CC152}.imagify-bar-positive .imagify-barnb{color:#8CC152}.imagify-bar-primary .imagify-progress{background:#40B1D0}.imagify-bar-primary .imagify-barnb{color:#40B1D0}.imagify-bar-negative .imagify-progress{background:#D2D3D6}.imagify-bar-negative .imagify-barnb{color:#7A8996}.imagify-bar-neutral .imagify-progress{background:#F5A623}.imagify-space-left .imagify-bar-negative .imagify-progress{background:#C51162}.imagify-btn-ghost{display:inline-block;height:auto;padding:7px 10px;border:1px solid #FFF;text-align:center;background:0 0;color:#FFF;border-radius:3px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-btn-ghost:focus,.imagify-btn-ghost:hover{background:#FFF;color:#888}.imagify-error{background:#D0021B;color:#FFF}.imagify-settings-section .imagify-error{display:inline-block;padding:7px 10px;margin:10px 0 0 45px;border-radius:3px}.imagify-settings-section .imagify-error code{font-weight:400}.imagify-settings-section .imagify-error.hidden{display:none}.imagify-warning{background:#f5a623;color:#FFF;text-shadow:0 0 2px rgba(0,0,0,.2)}.imagify-modal{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.js .imagify-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background-color:#1F2332;background-color:rgba(31,35,50,.95);z-index:99999}.imagify-modal-content{-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;width:800px;max-width:95%;max-height:90vw;overflow:auto;padding:20px 25px;margin:1em auto;background:#FFF;-webkit-box-shadow:1px 1px 4px rgba(0,0,0,.7);box-shadow:1px 1px 4px rgba(0,0,0,.7);border-radius:3px}.imagify-modal-loading .imagify-modal-content{overflow:hidden}#imagify-visual-comparison .imagify-modal-content,.imagify-visual-comparison .imagify-modal-content{max-width:1400px;background:0 0;padding:5px;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.imagify-modal .h2{margin:.5em 0;color:#8ba6b4;font-weight:400;font-size:24px;letter-spacing:.075em;text-align:center}.imagify-modal .h3{color:#40b1d0;font-weight:400;font-size:18px;letter-spacing:.075em;text-align:center}.imagify-modal .close-btn{display:none;visibility:hidden;position:absolute;right:20px;top:20px;font-size:1.2em;border:0;background:0 0;border-radius:0;cursor:pointer}.imagify-modal .close-btn i{margin-left:-2px}.imagify-modal .close-btn:focus,.imagify-modal .close-btn:hover{color:#40b1d0}.js .imagify-modal .close-btn{display:block;visibility:visible;z-index:12}.imagify-visual-comparison .close-btn,.wp_attachment_image #imagify-visual-comparison .close-btn{top:0}.imagify-visual-comparison .imagify-modal-content,.wp_attachment_image #imagify-visual-comparison .imagify-modal-content{padding-top:40px}.imagify-col{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-preferred-size:50%;flex-basis:50%;padding-right:20px}.imagify-col+.imagify-col{padding-right:0;padding-left:20px}.imagify-col:target{-webkit-animation:hello 1s 3 linear backwards;animation:hello 1s 3 linear backwards}@-webkit-keyframes hello{0%,100%{background:#FFF}50%{background:#F4F7F9}}@keyframes hello{0%,100%{background:#FFF}50%{background:#F4F7F9}}@media (max-width:730px){.imagify-settings .imagify-documentation-link-box{margin-top:2em}}@media (max-width:782px){input[type=checkbox],input[type=radio]{height:1.5625rem;width:1.5625rem;margin:1px}[class*=imagify-] .button-text{font-size:13px}.imagify-account-info-col .imagify-settings-section{padding:0 10px}.imagify-settings-section{padding:10px}.imagify-check-group.imagify-is-scrollable{margin:auto}.imagify-col.imagify-col.imagify-shared-with-account-col,.imagify-custom-folders-section .imagify-col,.imagify-media-lib-section .imagify-col,.imagify-settings-section .imagify-col,.imagify-shared-with-account-col{width:100%;float:none;padding-right:0}.imagify-account-info-col,.imagify-col.imagify-col.imagify-account-info-col,.imagify-custom-folders-section .imagify-account-info-col,.imagify-media-lib-section .imagify-account-info-col{width:100%;float:none;padding-left:0;padding-right:0}.imagify-lb-text{font-size:20px}.imagify-vcenter{-ms-flex-direction:column;flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-pr2.imagify-pr2{padding-right:0}}
1
+ .imagify-flex{display:-webkit-box;display:-ms-flexbox;display:flex}.imagify-vcenter{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-noshrink{-ms-flex-negative:0;flex-shrink:0}.imagify-nogrow{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.imagify-wauto{width:auto}.imagify-hauto{height:auto}.imagify-full-width{width:100%}.imagify-start{float:left}.imagify-end{float:right}.imagify-txt-start.imagify-txt-start.imagify-txt-start{text-align:left}.imagify-txt-center.imagify-txt-center.imagify-txt-center{text-align:center}.imagify-txt-end.imagify-txt-end.imagify-txt-end{text-align:right}.imagify-mt0.imagify-mt0{margin-top:0}.imagify-mt1.imagify-mt1{margin-top:1em}.imagify-mt2.imagify-mt2{margin-top:2em}.imagify-mt3.imagify-mt3{margin-top:3em}.imagify-mb0.imagify-mb0{margin-bottom:0}.imagify-mb1.imagify-mb1{margin-bottom:1em}.imagify-mr1.imagify-mr1{margin-right:1em}.imagify-ml2.imagify-ml2{margin-left:2em}.imagify-mr2.imagify-mr2{margin-right:2em}.imagify-pl0.imagify-pl0.imagify-pl0{padding-left:0}.imagify-pb0.imagify-pb0{padding-bottom:0}.imagify-pr1.imagify-pr1{padding-right:1em}.imagify-pr2.imagify-pr2{padding-right:2em}.imagify-oh{overflow:hidden}.imagify-clear{clear:both}.imagify-clearfix:after,.imagify-inline-options:after,.imagify-settings-main-content:after,.imagify-settings-section:after{content:"";display:table;width:100%;clear:both}.imagify-setting-optim-level .imagify-inline-options:after{display:none}.imagify-divider{height:1px;margin:20px 0;background:#d2d3d6}.imagify-pipe{display:inline-block;margin:0 .75em;vertical-align:middle;height:15px;width:1px;background:#979797}.imagify-h3-like.imagify-h3-like.imagify-h3-like{margin-bottom:0;font-size:19px;font-weight:500;color:#1f2332}.imagify-h4-like.imagify-h4-like.imagify-h4-like{font-size:14px;font-weight:700;color:#2e3243}.imagify-count.imagify-count{counter-reset:num}.imagify-count .imagify-count-title{font-weight:700}.imagify-default-settings{color:#73818c;font-weight:400}.imagify-count .imagify-count-title:before{counter-increment:num 1;content:counter(num) ". "}.imagify-count-list{counter-reset:listcount}.imagify-count-list li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-count-list li+li{margin-top:.5em}.imagify-count-list li:before{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:16px;border:2px solid #40b1d0;width:24px;height:24px;counter-increment:listcount 1;content:counter(listcount);color:#40b1d0;border-radius:50%}.imagify-table{display:table;width:100%}.imagify-cell{display:table-cell;padding:10px;vertical-align:top}.imagify-cell.va-top,.va-top .imagify-cell{vertical-align:top}.imagify-bulk-submit .imagify-cell{padding-top:0}body.imagify-modal-is-open{overflow:hidden}.imagify-spinner{display:inline-block;width:20px;height:20px;margin-right:5px;vertical-align:middle;background:rgba(0,0,0,0) url("../images/spinner.gif") no-repeat scroll 0 0/20px 20px;opacity:.7}.spinner.imagify-hidden{width:0;margin:4px 0 0 0}.imagify-primary.imagify-primary.imagify-primary{color:#40b1d0}.imagify-secondary.imagify-secondary.imagify-secondary,.imagify-valid{color:#8bc34a}.misc-pub-section.misc-pub-imagify h4{font-size:14px;margin-top:5px;margin-bottom:0}.imagify-chart{position:relative;top:1px;display:inline-block;vertical-align:middle}.imagify-chart-container{position:relative;display:inline-block;margin-right:5px}.imagify-chart-container canvas{display:block}.imagify-settings .button,.imagify-settings a,.imagify-settings input,.imagify-welcome .button,.imagify-welcome a,.imagify-weolcome input{-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-settings a{color:#40b1d0}.imagify-settings,.imagify-settings p,.imagify-settings th{color:#5f758e}.imagify-button-primary.imagify-button-primary,.imagify-button-secondary.imagify-button-secondary,.imagify-button.imagify-button,.imagify-main-content .button,.imagify-notice .button,.imagify-settings-section .button,.imagify-welcome .button{height:auto;padding:11px 22px;border:0 none;font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.01em;word-spacing:0.01em;-webkit-box-shadow:0 3px 0 rgba(0,0,0,.15);box-shadow:0 3px 0 rgba(0,0,0,.15);border-radius:3px;cursor:pointer;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.button-primary.button-mini{padding:2px 10px}.imagify-settings .button.button-mini-flat{padding:3px 6px 5px;font-size:12px;-webkit-box-shadow:none!important;box-shadow:none!important;line-height:1.2}.imagify-settings .button.button-mini-flat:focus,.imagify-settings .button.button-mini-flat:hover{-webkit-box-shadow:none!important;box-shadow:none!important}.imagify-button-ghost.imagify-button-ghost,.imagify-title .button-ghost.button-ghost{padding:2px 9px;border:1px solid #40b1d0;font-size:12px;font-weight:400;color:#40b1d0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.imagify-button-ghost.imagify-button-ghost:focus,.imagify-button-ghost.imagify-button-ghost:hover,.imagify-title .button-ghost.button-ghost:focus,.imagify-title .button-ghost.button-ghost:hover{border-color:transparent;color:#000;background:#40b1d0}.imagify-button-ghost.imagify-button-ghost:focus,.imagify-button-ghost.imagify-button-ghost:hover{color:#fff}.imagify-button-medium.imagify-button-medium{text-transform:uppercase;letter-spacing:.1em;padding:3px 10px;font-weight:700}.imagify-button-medium.imagify-button-ghost{border-width:2px}[class*=imagify-] .button .dashicons{margin-right:5px;vertical-align:middle}.imagify-button-primary.imagify-button-primary,.imagify-settings .button-primary.button-primary,.imagify-welcome .button-primary.button-primary{background:#40b1d0;color:#fff;-webkit-box-shadow:0 3px 0 #338ea6;box-shadow:0 3px 0 #338ea6;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799!important}.imagify-button-secondary.imagify-button-secondary{background:#8bc34a;color:#fff;-webkit-box-shadow:0 3px 0 #6f9c3b;box-shadow:0 3px 0 #6f9c3b;text-shadow:0 -1px 1px #6f9c3b,1px 0 1px #6f9c3b,0 1px 1px #6f9c3b!important}.imagify-button-primary.imagify-button-primary:focus,.imagify-button-primary.imagify-button-primary:hover,.imagify-settings .button-primary:focus,.imagify-settings .button-primary:hover,.imagify-welcome .button-primary:focus,.imagify-welcome .button-primary:hover{background:#338ea6;-webkit-box-shadow:0 3px 0 #1f7a92;box-shadow:0 3px 0 #1f7a92}.imagify-button-secondary.imagify-button-secondary:focus,.imagify-button-secondary.imagify-button-secondary:hover{background:#6f9c3b;color:#fff}.imagify-button-light.imagify-button-light{background:#fff;color:#4a4a4a;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.2);box-shadow:0 2px 0 rgba(0,0,0,.2)}.imagify-block-secondary .imagify-button-light.imagify-button-light{color:#6f9c3b}.imagify-button-light.imagify-button-light:focus,.imagify-button-light.imagify-button-light:hover{color:#fff;background:rgba(0,0,0,.2)}.button.imagify-button-clean,.imagify-button-clean{padding:0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.imagify-button-clean .dashicons-plus{width:32px;height:25px}.imagify-button-clean .dashicons-plus:before{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:25px;height:22px;margin-left:2px;padding-top:3px;font-size:17px;background:#40b1d0;color:#fff;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.button.imagify-button-clean:active,.button.imagify-button-clean:focus,.button.imagify-button-clean:hover,.button.imagify-button-clean[disabled]{background:0 0!important;color:#343a49;-webkit-box-shadow:none;box-shadow:none}.button.imagify-button-clean:focus .dashicons-plus:before,.button.imagify-button-clean:hover .dashicons-plus:before{background:#343a49}button.imagify-link-like{border:0;padding:0;color:inherit;text-decoration:underline;font-size:13px;-webkit-box-shadow:none;box-shadow:none;background:0 0;cursor:pointer}.imagify-section-positive .imagify-button-light{color:#709a41}.imagify-button.imagify-button-big{font-size:15px;padding:11px 30px}.imagify-button-big .dashicons{font-size:1.45em;margin-right:6px;margin-left:-4px}.imagify-button-primary.imagify-button-primary .dashicons,.imagify-button-secondary.imagify-button-secondary .dashicons,.imagify-button.imagify-button .dashicons,.imagify-notice .button .dashicons,.imagify-settings .button .dashicons,.imagify-welcome .button .dashicons{vertical-align:middle}[class*=imagify-] .button-text{display:inline-block;vertical-align:middle}.media-frame-content .imagify-button-primary,.wp_attachment_image .imagify-button-primary{padding:0 10px 1px;margin:0 5px 2px 0;font-size:13px;line-height:26px;-webkit-box-shadow:0 3px 0 #338ea6;box-shadow:0 3px 0 #338ea6}.wp_attachment_image .imagify-button-primary{float:left}.imagify-title.imagify-title{position:relative;padding:10px 30px;font-size:23px;background:#1f2332;color:#fff}.imagify-welcome .imagify-logo{opacity:1}.imagify-welcome .imagify-title{display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px 30px}.imagify-settings .imagify-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-settings .imagify-logo-block{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;margin-right:35px;color:inherit}.imagify-logo-block sup{color:#1f2332}.imagify-settings .imagify-title+.imagify-notice{margin:0;border-right:1px solid #d9d9d9;padding-top:15px;padding-bottom:15px}.imagify-title .title-text{font-size:28px;font-weight:700;color:#fff}.imagify-lb-icon{padding-right:18px}.imagify-lb-text img{margin-bottom:.15em}.imagify-lb-text{font-size:23px;font-weight:700;color:#fff}.imagify-logo{display:block;vertical-align:top;opacity:.4}.imagify-section,.imagify-settings div.submit,.imagify-sub-header,.imagify-sub-title.imagify-sub-title{margin:0;padding:20px;background:#f2f5f7}.imagify-section-positive,.imagify-sub-title.imagify-sub-title{padding-left:40px}.imagify-section-positive{background:#8cc152;color:#fff}.imagify-section-positive p{color:#fff}.imagify-section-gray{background:#d9e4eb}.imagify-section-gray .imagify-count-title{color:#4a4a4a}.imagify-section p:first-child{margin-top:0}.imagify-section p:last-child{margin-bottom:0}.imagify-settings .imagify-documentation-link-box{display:-webkit-box;display:-ms-flexbox;display:flex;padding:12px 13px 14px;border:1px solid #40b1d0;color:#e5ebef;border-radius:3px}.imagify-documentation-link-icon{width:23px;height:31px;font-size:2.6em;margin-right:15px;line-height:1.3}.imagify-documentation-link-box span{font-size:12px}.imagify-documentation-link-box a{font-weight:700}@media (max-width:1120px){.imagify-settings .imagify-title{-ms-flex-wrap:wrap;flex-wrap:wrap}}.imagify-settings-section{padding:10px 20px}.imagify-account-info-col .imagify-settings-section{padding-right:0}.imagify-settings-main-content,.imagify-welcome .imagify-settings-section{border:1px solid #d9d9d9;border-top-width:0;background:#fff}.imagify-settings-main-content{padding-bottom:20px}.imagify-settings-main-content .imagify-setting-line,.imagify-settings-main-content p{font-size:14px;line-height:1.5}.imagify-settings-main-content .code{max-height:10em;padding:3px 5px 2px 5px;overflow:auto;background:#eaeaea;background:rgba(0,0,0,.07)}.imagify-settings-main-content+.imagify-settings-main-content{margin-top:20px;border-top-width:1px}.imagify-br{line-height:2}p.imagify-section-title.imagify-section-title{font-size:20px;margin-top:-.3em;margin-bottom:-.6em}.imagify-rate-us.imagify-rate-us{text-align:right;margin:-1em -2.4em -1em 0;color:#fff}.imagify-rate-us a{color:#40b1d0}.imagify-rate-us .stars{display:inline-block;margin:2px 0 0 10px;text-decoration:none;letter-spacing:.2em;vertical-align:-1px}.imagify-rate-us .stars .dashicons:before{font-size:18px}.imagify-rate-us a:focus,.imagify-rate-us a:hover{color:#fee102}@media (max-width:1220px){.imagify-rate-us.imagify-rate-us{position:static;margin-bottom:0;text-align:left}.imagify-rate-us.imagify-rate-us br{display:none}.imagify-rate-us .stars{display:block;margin-left:0}}.imagify-important{color:#f5a623}.imagify-settings .imagify-success,.imagify-success{color:#8bc34a}.imagify-info,.imagify-info a{color:#7a8996;font-size:12px}.imagify-info{position:relative;display:inline-block;padding-left:25px}.imagify-info .dashicons{position:absolute;left:0;top:0;color:#40b1d0}.imagify-checkbox.imagify-checkbox:checked,.imagify-checkbox.imagify-checkbox:not(:checked),.imagify-settings.imagify-settings [type=checkbox]:checked,.imagify-settings.imagify-settings [type=checkbox]:not(:checked){position:absolute;opacity:.01}.imagify-checkbox.imagify-checkbox:checked:focus,.imagify-checkbox.imagify-checkbox:not(:checked):focus,.imagify-settings.imagify-settings [type=checkbox]:checked:focus,.imagify-settings.imagify-settings [type=checkbox]:not(:checked):focus{-webkit-box-shadow:none!important;box-shadow:none!important;outline:0!important;border:0 none!important}.imagify-checkbox.imagify-checkbox:checked+label,.imagify-checkbox.imagify-checkbox:not(:checked)+label,.imagify-settings [type=checkbox]:checked+label,.imagify-settings [type=checkbox]:not(:checked)+label{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:24px;padding-left:40px;cursor:pointer;font-size:14px;font-weight:700;color:#2e3243}.imagify-checkbox.imagify-checkbox:checked+label:before,.imagify-checkbox.imagify-checkbox:not(:checked)+label:before,.imagify-settings [type=checkbox]:checked+label:before,.imagify-settings [type=checkbox]:not(:checked)+label:before{content:'';position:absolute;left:0;top:0;width:22px;height:22px;border:2px solid #8ba6b4;background:#fff;border-radius:3px}.imagify-checkbox.imagify-checkbox:checked+label:after,.imagify-checkbox.imagify-checkbox:not(:checked)+label:after,.imagify-settings [type=checkbox]:checked+label:after,.imagify-settings [type=checkbox]:not(:checked)+label:after{content:"✓";position:absolute;font-size:1.4em;top:-2px;left:4.5px;color:#8ba6b4;font-weight:400;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.imagify-checkbox.imagify-checkbox[disabled]:checked+label:before,.imagify-checkbox.imagify-checkbox[disabled]:not(:checked)+label:before,.imagify-settings [type=checkbox][disabled]:checked+label:before,.imagify-settings [type=checkbox][disabled]:not(:checked)+label:before{border-color:#ccc;background:#ddd}.imagify-checkbox.imagify-checkbox:not(:checked)+label:after,.imagify-settings [type=checkbox]:not(:checked)+label:after{opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.imagify-checkbox.imagify-checkbox:checked+label:after,.imagify-settings [type=checkbox]:checked+label:after{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.medium.imagify-checkbox:checked+label:before,.medium.imagify-checkbox:not(:checked)+label:before{width:22px;height:22px;border-width:1.5px;border-radius:2px;margin-top:0}.medium.imagify-checkbox:checked+label:after,.medium.imagify-checkbox:not(:checked)+label:after{font-size:1.1em;left:-17px;top:3px}.imagify-settings .mini[type=checkbox]:checked+label:before,.imagify-settings .mini[type=checkbox]:not(:checked)+label:before,.mini.imagify-checkbox:checked+label:before,.mini.imagify-checkbox:not(:checked)+label:before{width:15px;height:15px;border-width:1px;border-radius:2px;margin-top:0}.imagify-settings .mini[type=checkbox]:checked+label:after,.imagify-settings .mini[type=checkbox]:not(:checked)+label:after,.mini.imagify-checkbox:checked+label:after,.mini.imagify-checkbox:not(:checked)+label:after{font-size:.9em;left:-21px;top:-.5px}.imagify-checkbox.imagify-checkbox:checked:focus+label:before,.imagify-checkbox.imagify-checkbox:not(:checked):focus+label:before,.imagify-settings [type=checkbox]:checked:focus+label:before,.imagify-settings [type=checkbox]:not(:checked):focus+label:before{border-style:dotted;border-color:#40b1d0}.imagify-check-group{padding-left:2px;margin-bottom:0}.imagify-check-group.imagify-is-scrollable{height:15em;overflow-y:auto;padding:8px;margin:1.5em 0 0 -8px;background:#f4f7f9;border:1px solid #d2d3d6;border-radius:3px}.imagify-is-scrollable legend+p{margin-top:0}.imagify-is-scrollable [type=checkbox]:checked+label:before,.imagify-is-scrollable [type=checkbox]:not(:checked)+label:before{background:#f4f7f9}.imagify-settings .imagify-check-group.imagify-check-group label{color:#338ea6;font-weight:500}.imagify-inline-options{position:relative;display:table;width:100%;max-width:600px;border-collapse:collapse}.imagify-inline-options input[type=radio]:checked,.imagify-inline-options input[type=radio]:not(:checked){position:absolute;left:5px;top:5px;display:none}.imagify-inline-options input[type=radio]:checked+label,.imagify-inline-options input[type=radio]:not(:checked)+label{position:relative;display:table-cell;padding:13px 10px;text-align:center;font-weight:600;font-size:16px;text-transform:uppercase;letter-spacing:.1em;color:#fff;background:#2e3243;-webkit-box-shadow:0 -3px 0 rgba(0,0,0,.1) inset;box-shadow:0 -3px 0 rgba(0,0,0,.1) inset;z-index:2;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-inline-options input[type=radio]:checked+label:first-of-type,.imagify-inline-options input[type=radio]:not(:checked)+label:first-of-type{border-radius:3px 0 0 3px}.imagify-inline-options input[type=radio]:checked+label:last-of-type,.imagify-inline-options input[type=radio]:not(:checked)+label:last-of-type{border-radius:0 3px 3px 0}.imagify-inline-options input[type=radio]:checked+label{background:#8bc34a}.imagify-inline-options .imagify-info{margin-top:15px}.imagify-account-info-col,.imagify-col.imagify-col.imagify-account-info-col{width:380px;max-width:100%;padding:0 20px 0 0}.imagify-col.imagify-col.imagify-shared-with-account-col,.imagify-shared-with-account-col{width:calc(100% - 380px);padding:0}.imagify-account-info-col .imagify-options-title{padding:24px 26px;color:#fff;background:#1f2332}.imagify-block-secondary{padding:26px 26px 35px;border:1px solid #75a345;background:#8bc34a;border-radius:3px;color:#fff}.imagify-account-info-col .imagify-block-secondary.imagify-block-secondary h3,.imagify-block-secondary.imagify-block-secondary p{color:inherit}.imagify-account-info-col .imagify-col-content h3:first-child{margin-top:0}.imagify-account-info-col .imagify-col-content h3{font-size:19px}.imagify-account-info-col .imagify-col-content p{margin:1.5em 0}.imagify-account-info-col .imagify-col-content p:first-child{margin-top:0}.imagify-user-plan-label{float:right;margin-top:-4px;padding:2px 10px;border:2px solid #40b1d0;font-size:14px;text-transform:uppercase;letter-spacing:.02em;color:#40b1d0;border-radius:3px}.imagify-user-plan-label:empty{display:none}.imagify-columns{overflow:hidden;padding:15px 0;counter-reset:cols}.imagify-columns [class^=col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.imagify-columns .col-1-3{width:33.333%;padding-left:28px}.imagify-columns .col-2-3{width:66.666%;padding-left:28px}.imagify-columns .col-1-2{width:50%;padding:0 20px}@media (max-width:830px){.imagify-columns [class^=col-]{float:none;margin-bottom:1.5em}.imagify-columns .col-1-2,.imagify-columns .col-1-3{width:auto;padding:0 28px;clear:both;padding-top:1em}}.column-imagify_optimized_file.column-imagify_optimized_file{width:300px;text-align:center;vertical-align:middle}.column-imagify_optimized_file>*{max-width:21em;margin:0 auto}@media (min-width:1151px) and (max-width:1800px){.column-imagify_optimized_file.column-imagify_optimized_file{width:21em}}@media (min-width:783px) and (max-width:1150px){.column-imagify_optimized_file.column-imagify_optimized_file{width:13em}table.media .column-title .has-media-icon~.row-actions.row-actions{margin-left:0}}@media (max-width:782px){table.media .column-imagify_optimized_file.column-imagify_optimized_file{text-align:left}table.media .imagify-datas-actions-links,table.media .imagify-datas-more-action{text-align:center}table.media .column-imagify_optimized_file .imagify-datas-actions-links a,table.media .column-imagify_optimized_file>*{max-width:100%;margin-left:0}}@media (min-width:783px) and (max-width:1150px),(max-width:360px){table.media .imagify-hide-if-small{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal!important}}.compat-field-imagify .label{vertical-align:top}.compat-field-imagify ul.imagify-datas-list{margin-top:7px;font-size:11px}ul.imagify-datas-list.imagify-datas-list{margin:0 auto;color:#555}ul.imagify-datas-list .big{font-size:12px;color:#40b1d0}.imagify-data-item{overflow:hidden}li.imagify-data-item{clear:both;margin-bottom:2px}ul.imagify-datas-list .imagify-data-item span.data,ul.imagify-datas-list .imagify-data-item strong{float:left;width:38%;-webkit-box-sizing:border-box;box-sizing:border-box}ul.imagify-datas-list .imagify-data-item span.data{width:62%;padding-right:5px;text-align:left}.compat-field-imagify .imagify-datas-list .imagify-data-item .data{width:130px;text-align:left;font-weight:700}ul.imagify-datas-list .imagify-data-item strong{text-align:left;padding-left:5px}.media-sidebar .imagify-datas-list .imagify-data-item .data{width:auto;float:none}.media-sidebar .imagify-datas-list .imagify-data-item strong{display:inline-block;width:auto;float:none}.media-sidebar .imagify-datas-list .imagify-data-item .imagify-chart{float:left}.imagify-datas-more-action.imagify-datas-more-action{margin:.4em auto;background:-webkit-gradient(linear,left top,left bottom,from(transparent),color-stop(49%,transparent),color-stop(50%,rgba(0,0,0,.075)),color-stop(58%,rgba(0,0,0,.075)),color-stop(58%,transparent),to(transparent));background:-o-linear-gradient(top,transparent,transparent 49%,rgba(0,0,0,.075) 50%,rgba(0,0,0,.075) 58%,transparent 58%,transparent);background:linear-gradient(to bottom,transparent,transparent 49%,rgba(0,0,0,.075) 50%,rgba(0,0,0,.075) 58%,transparent 58%,transparent)}.imagify-datas-more-action a{display:inline-block;padding:0 5px;background:#40b1d0;color:#fff;text-transform:uppercase;font-size:9px;font-weight:700;line-height:1.9;text-decoration:none}.imagify-datas-more-action a.is-open{background:#555}.imagify-datas-more-action a.is-open .dashicons{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.imagify-datas-more-action a .dashicons{font-size:14px;vertical-align:middle;line-height:.8}.imagify-datas-more-action a .dashicons:before{vertical-align:middle;line-height:20px}.imagify-datas-more-action .the-text{display:inline-block;vertical-align:middle;height:auto;line-height:inherit}ul.imagify-datas-details.imagify-datas-details{margin:.7em auto}.imagify-datas-details strong{color:#40b1d0}.imagify-datas-details .original{color:#555}.imagify-datas-actions-links{overflow:hidden;border-top:2px solid transparent;padding-top:5px;font-size:11px}.nggform .imagify-datas-actions-links{position:relative;z-index:2}.nggform .row-actions{z-index:1}.imagify-datas-actions-links a{position:relative;display:inline-block;padding-left:17px;text-decoration:none;font-weight:600}.compat-field-imagify .imagify-datas-actions-links{max-width:300px}.misc-pub-imagify .imagify-datas-actions-links{border-top:2px solid #f2f2f2;padding-bottom:5px}.column-imagify_optimized_file .imagify-datas-actions-links a{margin:0 .7em;padding-left:15px}.compat-field-imagify .imagify-datas-actions-links a,.misc-pub-imagify .imagify-datas-actions-links a{float:left;width:50%}.media-sidebar .compat-field-imagify .imagify-datas-actions-links a,.submitbox .misc-pub-imagify .imagify-datas-actions-links a{display:block;width:auto;float:none}.media-sidebar .compat-field-imagify .imagify-datas-actions-links br,.submitbox .misc-pub-imagify .imagify-datas-actions-links br{display:none}.imagify-datas-actions-links a:only-child{float:none;width:auto}.imagify-datas-details.is-open+.imagify-datas-actions-links{border-top-color:rgba(0,0,0,.075)}.imagify-datas-actions-links .dashicons{position:absolute;left:0;top:4px;width:12px;margin-right:2px;font-size:11px}.imagify-account,.imagify-account-link{padding-right:15px}.imagify-meteo-icon{display:inline-block;height:38px;vertical-align:middle;margin-right:10px}.imagify-user-plan{color:#40b1d0}.imagify-meteo-title.imagify-meteo-title{color:#fff;font-size:17px}.imagify-space-left>p{color:#fff}[class^=imagify-bar-]{position:relative;height:8px;width:100%;background:#60758d;color:#fff;font-size:10px}.imagify-progress{height:8px}.imagify-progress{-webkit-transition:width .3s;-o-transition:width .3s;transition:width .3s}.imagify-bar-positive .imagify-progress{background:#8cc152}.imagify-bar-positive .imagify-barnb{color:#8cc152}.imagify-bar-primary .imagify-progress{background:#40b1d0}.imagify-bar-primary .imagify-barnb{color:#40b1d0}.imagify-bar-negative .imagify-progress{background:#d2d3d6}.imagify-bar-negative .imagify-barnb{color:#7a8996}.imagify-bar-neutral .imagify-progress{background:#f5a623}.imagify-space-left .imagify-bar-negative .imagify-progress{background:#c51162}.imagify-btn-ghost{display:inline-block;height:auto;padding:7px 10px;border:1px solid #fff;text-align:center;background:0 0;color:#fff;border-radius:3px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-btn-ghost:focus,.imagify-btn-ghost:hover{background:#fff;color:#888}.imagify-error{background:#d0021b;color:#fff}.imagify-settings-section .imagify-error{display:inline-block;padding:7px 10px;margin:10px 0 0 45px;border-radius:3px}.imagify-settings-section .imagify-error code{font-weight:400}.imagify-settings-section .imagify-error.hidden{display:none}.imagify-warning{background:#f5a623;color:#fff;text-shadow:0 0 2px rgba(0,0,0,.2)}.imagify-modal{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.js .imagify-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background-color:#1f2332;background-color:rgba(31,35,50,.95);z-index:99999}.imagify-modal-content{-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;width:800px;max-width:95%;max-height:90vw;overflow:auto;padding:20px 25px;margin:1em auto;background:#fff;-webkit-box-shadow:1px 1px 4px rgba(0,0,0,.7);box-shadow:1px 1px 4px rgba(0,0,0,.7);border-radius:3px}.imagify-modal-loading .imagify-modal-content{overflow:hidden}#imagify-visual-comparison .imagify-modal-content,.imagify-visual-comparison .imagify-modal-content{max-width:1400px;background:0 0;padding:5px;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.imagify-modal .h2{margin:.5em 0;color:#8ba6b4;font-weight:400;font-size:24px;letter-spacing:.075em;text-align:center}.imagify-modal .h3{color:#40b1d0;font-weight:400;font-size:18px;letter-spacing:.075em;text-align:center}.imagify-modal .close-btn{display:none;visibility:hidden;position:absolute;right:20px;top:20px;font-size:1.2em;border:0;background:transparent none;border-radius:0;cursor:pointer}.imagify-modal .close-btn i{margin-left:-2px}.imagify-modal .close-btn:focus,.imagify-modal .close-btn:hover{color:#40b1d0}.js .imagify-modal .close-btn{display:block;visibility:visible;z-index:12}.imagify-visual-comparison .close-btn,.wp_attachment_image #imagify-visual-comparison .close-btn{top:0}.imagify-visual-comparison .imagify-modal-content,.wp_attachment_image #imagify-visual-comparison .imagify-modal-content{padding-top:40px}.imagify-col{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-preferred-size:50%;flex-basis:50%}.imagify-col{padding-right:20px}.imagify-col+.imagify-col{padding-right:0;padding-left:20px}.imagify-col:target{-webkit-animation:hello 1s 3 linear backwards;animation:hello 1s 3 linear backwards}@-webkit-keyframes hello{0%,100%{background:#fff}50%{background:#f4f7f9}}@keyframes hello{0%,100%{background:#fff}50%{background:#f4f7f9}}@media (max-width:730px){.imagify-settings .imagify-documentation-link-box{margin-top:2em}}@media (max-width:782px){input[type=checkbox],input[type=radio]{height:1.5625rem;width:1.5625rem;margin:1px}[class*=imagify-] .button-text{font-size:13px}.imagify-account-info-col .imagify-settings-section{padding:0 10px}.imagify-settings-section{padding:10px}.imagify-check-group.imagify-is-scrollable{margin:auto}.imagify-col.imagify-col.imagify-shared-with-account-col,.imagify-custom-folders-section .imagify-col,.imagify-media-lib-section .imagify-col,.imagify-settings-section .imagify-col,.imagify-shared-with-account-col{width:100%;float:none;padding-right:0}.imagify-account-info-col,.imagify-col.imagify-col.imagify-account-info-col,.imagify-custom-folders-section .imagify-account-info-col,.imagify-media-lib-section .imagify-account-info-col{width:100%;float:none;padding-left:0;padding-right:0}.imagify-lb-text{font-size:20px}.imagify-vcenter{-ms-flex-direction:column;flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-pr2.imagify-pr2{padding-right:0}}
assets/css/bulk.css CHANGED
@@ -88,7 +88,7 @@ body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress {
88
  body[class*="_imagify-ngg-bulk-optimization"] .media-item .percent {
89
  position: absolute;
90
  top: 6px;
91
- right: 0;
92
  text-shadow: none;
93
  width: auto;
94
  padding: 0 5px;
@@ -312,12 +312,6 @@ body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress .bar {
312
  color: #40B1D0;
313
  }
314
 
315
- .imagify-col-content {
316
- background: #F4F7F9;
317
- border-left: 1px solid #ddd;
318
- border-right: 1px solid #ddd;
319
- }
320
-
321
  .imagify-col-content .imagify-block-secondary {
322
  margin-left: -1px;
323
  margin-right: -1px;
@@ -669,11 +663,16 @@ body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress .bar {
669
  background: #FFF;
670
  }
671
 
672
- .imagify-bulk-table .imagify-row-progress {
673
- display: none;
 
 
 
 
674
  }
675
 
676
  .imagify-bulk-table .imagify-row-progress {
 
677
  height: 8px;
678
  padding: 0;
679
  }
88
  body[class*="_imagify-ngg-bulk-optimization"] .media-item .percent {
89
  position: absolute;
90
  top: 6px;
91
+ right: -28px;
92
  text-shadow: none;
93
  width: auto;
94
  padding: 0 5px;
312
  color: #40B1D0;
313
  }
314
 
 
 
 
 
 
 
315
  .imagify-col-content .imagify-block-secondary {
316
  margin-left: -1px;
317
  margin-right: -1px;
663
  background: #FFF;
664
  }
665
 
666
+ @media (max-width: 782px) {
667
+ .imagify-row-folder-type,
668
+ tr.imagify-row-working,
669
+ tr.imagify-row-waiting {
670
+ padding-top: 20px;
671
+ }
672
  }
673
 
674
  .imagify-bulk-table .imagify-row-progress {
675
+ display: none;
676
  height: 8px;
677
  padding: 0;
678
  }
assets/css/bulk.min.css CHANGED
@@ -1 +1 @@
1
- #imagify-overview-chart-legend{overflow:hidden}.imagify-doughnut-legend{margin-top:38px;list-style:none}.imagify-doughnut-legend li{display:block;padding-left:30px;position:relative;margin-bottom:15px;border-radius:5px;padding:3px 8px 2px 31px;font-size:13px;cursor:default;-webkit-transition:background-color .2s ease-in-out;-o-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.imagify-doughnut-legend li span{display:block;position:absolute;left:0;top:0;width:25px;height:25px;border-radius:50%}.imagify-global-optim-phrase{width:180px;padding-top:20px;font-size:14px;text-align:center}.imagify-total-percent{color:#46b1ce}.imagify-overview-chart-container{float:left;margin-right:20px}.imagify-chart-percent{position:absolute;left:0;right:0;top:50%;margin-top:-.5em;line-height:1;text-align:center;font-size:55px;font-weight:700;color:#46B1CE}.imagify-chart-percent span{font-size:20px;vertical-align:super}.media_page_imagify-bulk-optimization .media-item,body[class*="_imagify-ngg-bulk-optimization"] .media-item{margin:0}.media_page_imagify-bulk-optimization .media-item .progress,body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress{float:none;width:100%;height:8px;margin:0;overflow:visible;background:#1F2331;-webkit-box-shadow:0;box-shadow:0;border-radius:0}.media_page_imagify-bulk-optimization .media-item .percent,body[class*="_imagify-ngg-bulk-optimization"] .media-item .percent{position:absolute;top:6px;right:0;text-shadow:none;width:auto;padding:0 5px;line-height:1.85;font-size:14px;font-weight:700;color:#40B1D0}.media_page_imagify-bulk-optimization .media-item .percent,.media_page_imagify-bulk-optimization .media-item .progress,body[class*="_imagify-ngg-bulk-optimization"] .media-item .percent,body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress{text-align:right}.media_page_imagify-bulk-optimization .media-item .progress .bar,body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress .bar{position:relative;width:1px;height:8px;margin-top:0;background:#46B1CE;border-radius:0;-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}#imagify-bulk-action{padding:11px 20px}.imagify-columns .col-overview.col-overview{width:calc(100% - 465px);padding-left:20px}.imagify-columns .col-statistics.col-statistics{width:60%}.imagify-columns .col-chart.col-chart{width:40%}@media (max-width:1520px) and (min-width:1381px),(max-width:1086px){.imagify-columns .col-chart.col-chart,.imagify-columns .col-statistics.col-statistics{width:50%}}@media (max-width:1380px) and (min-width:1246px),(max-width:380px){.imagify-overview-chart-container{float:none;margin-right:0}.imagify-doughnut-legend{margin-top:18px}.imagify-global-optim-phrase{padding-top:0;width:auto}}@media (max-width:808px){.imagify-columns .col-chart.col-chart,.imagify-columns .col-statistics.col-statistics{width:auto;float:none;padding:0}.imagify-columns .col-chart.col-chart{margin-top:3em}}.imagify-sep-v{width:1px;background:rgba(255,255,255,.2)}.base-transparent{background:0 0}[class^=imagify-bar-].right-outside-number{-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:4.5em}.right-outside-number .imagify-barnb{display:block;margin-right:-5.25em;text-align:right;font-weight:700;line-height:.8}.imagify-h2-like{margin:0 0 .5em;padding-bottom:.5em;border-bottom:1px solid #E9EFF2;font-size:24px;color:#000;font-weight:700}.imagify-h2-like .dashicons,.imagify-h2-like .dashicons:before{font-size:38px;height:38px;width:38px;margin-right:12px;vertical-align:-5px;color:#40B1D0}.imagify-info-block{position:relative;padding:10px;padding-left:42px;background:#D9E4EB;border-radius:4px;line-height:1.6}.imagify-list-infos{margin:0;padding:0}.imagify-list-infos li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:15px 5px;text-align:left;font-size:14px;line-height:1.5;color:#626E7B}.imagify-list-infos li:first-child{padding-top:5px}.imagify-list-infos li:last-child{padding-bottom:5px}.imagify-list-infos li+li{border-top:1px solid #E9EFF2}.imagify-info-icon{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:50px;flex-basis:50px}.imagify-info-icon+span{padding-left:20px}.imagify-list-infos a:before{content:'';display:block}.imagify-bulk .imagify-settings-section{border:1px solid #D9D9D9;border-top:0;background:#FFF;color:#4A4A4A}.imagify-bulk h3,.imagify-bulk li,.imagify-bulk p{color:#4A4A4A}.imagify-bulk .imagify-settings-section h3{margin-bottom:2em}.imagify-account-info-col .imagify-options-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-account-info-col p.imagify-meteo-title{margin:0;font-size:24px;font-weight:700;color:#FFF}.imagify-account-info-col .imagify-options-title>a{-ms-flex-preferred-size:100px;flex-basis:100px;margin-left:auto;margin-right:10px;text-decoration:underline;font-size:12px}.imagify-account-info-col .imagify-meteo-title .dashicons,.imagify-account-info-col .imagify-meteo-title .dashicons:before{font-size:38px;width:38px;height:38px;margin-right:4px;color:#40B1D0}.imagify-col-content{background:#F4F7F9;border-left:1px solid #ddd;border-right:1px solid #ddd}.imagify-col-content .imagify-block-secondary{margin-left:-1px;margin-right:-1px}.imagify-col-content .imagify-space-left{margin:15px 30px 15px 0}.imagify-col-content .imagify-space-left p{margin:0 0 10px;font-size:19px;font-weight:500;color:#343A49}.imagify-col-content .imagify-meteo-icon{height:64px;margin:15px 15px 15px 20px}.imagify-col-content .imagify-section-title+p{margin-top:10px}.imagify-account-info-col .imagify-h3-like.imagify-h3-like{color:inherit}.imagify-title .imagify-tooltips{position:absolute;top:100%;left:0}.imagify-tooltips .icon-round{float:left;display:inline-block;width:28px;height:28px;border:1px solid #FFF;margin-right:8px;margin-bottom:8px;font-size:17px;font-style:italic;line-height:29px;font-weight:700;text-align:center;border-radius:50%}.imagify-tooltips .tooltip-content{display:block;position:relative;max-width:250px;padding:7px 15px 8px;background:#2e3242;color:#FFF;font-size:10px;border-radius:3px}.imagify-tooltips.right .tooltip-content{margin-left:12px}.imagify-tooltips.bottom .tooltip-content{margin-top:4px}.imagify-inline-options label .tooltip-content{position:absolute;left:0;right:0;top:100%;text-transform:none;font-size:10px;letter-spacing:0;text-align:center}.imagify-tooltips .tooltip-content:after{content:"";position:absolute}.imagify-tooltips.right .tooltip-content:after{top:16px;left:-6px;border-right:8px solid #2e3242;border-top:6px solid transparent;border-bottom:6px solid transparent}.imagify-tooltips.bottom .tooltip-content:after{top:-5px;left:50%;margin-left:-3px;border-bottom:6px solid #2e3242;border-left:6px solid transparent;border-right:6px solid transparent}.imagify-space-tooltips .tooltip-content{max-width:280px;margin-top:20px;margin-left:0;padding:5px 15px;font-size:13px;background:#40B1D0;-webkit-box-shadow:0 3px 0 #338EA6;box-shadow:0 3px 0 #338EA6}.imagify-space-tooltips .tooltip-content:after{top:-14px;left:50%;margin-left:-7px;border:0;border-bottom:15px solid #40B1D0;border-left:15px solid transparent;border-right:15px solid transparent}.tooltip-content.tooltip-table{display:table;width:100%}.tooltip-content.tooltip-table>*{display:table-cell;vertical-align:middle}.tooltip-content .cell-icon{width:28px}.tooltip-content .cell-icon .icon{margin-bottom:0}.tooltip-content .cell-text{padding:5px 10px 5px 0;line-height:1.3}.tooltip-content .cell-sep{width:1px;background:rgba(255,255,255,.4)}.tooltip-content .cell-cta{padding-left:10px}.tooltip-content .cell-cta a{display:block;color:#FFF;width:100%;height:100%;white-space:nowrap}.imagify-number-you-optimized{margin-bottom:1.35em;overflow:hidden}.imagify-number-you-optimized .number{display:table-cell;padding-right:15px;font-size:48px;font-weight:700;line-height:1;vertical-align:middle;white-space:nowrap;color:#000}.imagify-number-you-optimized [id=imagify-total-optimized-attachments-pct]{color:#40B1D0}.imagify-number-you-optimized .text{display:table-cell;vertical-align:middle;overflow:hidden;font-size:12px;color:#626E7B}.imagify-number-you-optimized>p{display:table}.imagify-bars{padding-right:15px}.imagify-bars p{font-size:12px;margin-bottom:5px}.imagify-bars+.imagify-number-you-optimized{border-bottom:0;padding-top:.85em}.imagify-bars+.imagify-number-you-optimized p{color:#46b1ce}.imagify-bulk-table{margin-top:2em}.imagify-table-header{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:15px 25px;background:#343A49;color:#FFF}.imagify-newbie{margin-top:4em;position:relative;overflow:visible}.imagify-newbie .imagify-new-feature.imagify-new-feature{position:absolute;top:0;left:25px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);margin:0;padding:8px 20px;font-size:14px;letter-spacing:.02em;text-transform:uppercase;font-weight:700;color:#FFF;background:#8BC34A}.imagify-newbie .imagify-table-header{padding:30px 25px;border:2px solid #8BC34A;background:#F3F9EC}.imagify-th-titles .dashicons,.imagify-th-titles .dashicons:before{width:38px;height:38px;margin-right:20px;font-size:38px;color:#40B1D0}.imagify-newbie .imagify-th-titles .dashicons:before{color:#8BC34A}.imagify-th-title.imagify-th-title.imagify-th-title{margin:0;font-size:24px;font-weight:500;color:#FFF}.imagify-newbie .imagify-th-title.imagify-th-title{color:#343A49}.imagify-th-subtitle.imagify-th-subtitle.imagify-th-subtitle{margin:0 0 5px;font-size:14px;color:#7A8996;font-weight:500}.imagify-th-action .imagify-button-clean{font-size:12px;color:#7A8996}.imagify-th-action .button:focus,.imagify-th-action .button:hover,.imagify-th-action .imagify-is-active{color:#FFF}.imagify-bulk-table table{width:100%;border-spacing:0;border-collapse:collapse}.imagify-bulk-table td{padding:20px}.imagify-bulk-table-details{border-bottom:2px solid #E5EBEF}.imagify-bulk-table-details thead th,.imagify-bulk-table-details thead tr{background:#4A5362}.imagify-bulk-table-details thead th{padding:12px 20px;text-align:left;font-weight:700;color:#E5EBEF;font-size:12px}.imagify-bulk-table-details tbody tr:nth-child(odd) td{background:#F2F5F7}.imagify-bulk-table-content{border:1px solid #D3D3D3;border-top:0}.imagify-bulk-table-footer{padding:20px;color:#626E7B;background:#F2F5F7}.imagify-bulk-table tbody tr+tr{border-top:3px solid #F2F5F7}.imagify-bulk-table tbody td,.imagify-bulk-table tbody tr{background:#FFF}.imagify-bulk-table .imagify-row-progress{display:none;height:8px;padding:0}.imagify-bulk-table .imagify-no-uploaded-yet td{height:200px;font-size:17px;letter-spacing:.1em;word-spacing:.12em;vertical-align:middle;text-transform:uppercase;font-weight:700;text-align:center;color:#999;background-color:#FFF}.imagify-selector{position:relative}.imagify-selector-list{background:#FFF;border:1px solid #F4F7F9;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.1);box-shadow:0 6px 12px rgba(0,0,0,.1);border-radius:3px;font-weight:700;text-transform:uppercase;letter-spacing:.02em}.imagify-selector-list li:first-child label{border-radius:3px 3px 0 0}.imagify-selector-list li:last-child label{border-radius:0 0 3px 3px}.imagify-selector-list li{margin:0}.imagify-selector-list li+li{border-top:1px solid #F4F7F9}.imagify-selector-list svg{margin-right:5px}.imagify-selector-list .imagify-selector-current-value label,.imagify-selector-list input:checked+label{background:#343A49;color:#FFF}.imagify-selector-list .imagify-selector-current-value input:focus+label,.imagify-selector-list .imagify-selector-current-value label:hover,.imagify-selector-list input:checked+label:hover,.imagify-selector-list input:focus+label,.imagify-selector-list label:hover{background:#40B1D0;color:#F4F7F9}.imagify-selector-list .imagify-selector-current-value input:focus+label polygon,.imagify-selector-list .imagify-selector-current-value label:hover polygon,.imagify-selector-list input:checked+label:hover polygon,.imagify-selector-list input:focus+label polygon,.imagify-selector-list label:hover polygon{fill:#FFF}.imagify-selector-list .imagify-selector-current-value input:focus+label polygon[fill="#CCD1D6"],.imagify-selector-list .imagify-selector-current-value label:hover polygon[fill="#CCD1D6"],.imagify-selector-list input:checked+label:hover polygon[fill="#CCD1D6"],.imagify-selector-list input:focus+label polygon[fill="#CCD1D6"],.imagify-selector-list label:hover polygon[fill="#CCD1D6"]{fill:#3694AE}.imagify-selector-list li label{display:block;padding:10px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-selector-list polygon{-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-selector-list{position:absolute;top:0;left:0;right:0;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.imagify-selector-list[aria-hidden=true]{opacity:0;visibility:hidden;-webkit-transform:translateY(-50%) scale(0);-ms-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0)}.imagify-selector-list[aria-hidden=false]{opacity:1;visibility:visible;-webkit-transform:translateY(-50%) scale(1);-ms-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1)}.button .imagify-selector-current-value-info{position:relative;padding-right:20px}.button .imagify-selector-current-value-info:after{content:'';position:absolute;right:0;top:50%;margin-top:-3px;border-top:6px solid #7A8996;border-left:6px solid transparent;border-right:6px solid transparent}.imagify-row-complete{padding:35px 20px;margin-top:2em;background:#8BC34A;color:#FFF;text-shadow:0 0 2px rgba(0,0,0,.1)}.imagify-row-complete .imagify-ac-chart{margin-top:3px}.imagify-row-complete.imagify-row-complete p{color:#FFF;margin:0}@-webkit-keyframes congrate{0%{opacity:0;-webkit-transform:scale(1)}50%{-webkit-transform:scale(1.05);opacity:1}100%{-webkit-transform:scale(1);opacity:1}}@keyframes congrate{0%{opacity:0;-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.05);transform:scale(1.05);opacity:1}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.imagify-row-complete.done{-webkit-animation:congrate .5s ease-in-out;animation:congrate .5s ease-in-out}.imagify-all-complete{margin:1.5em 0}.imagify-all-complete>div{display:inline-block;vertical-align:middle}.imagify-ac-report{min-width:310px;margin-right:20px}.imagify-ac-chart{width:46px;height:46px;float:left;margin:0 20px 0 10px}.imagify-ac-report-text{overflow:hidden}.imagify-ac-report-text p{line-height:1.3}.imagify-ac-rt-big{font-weight:700;font-size:24px;letter-spacing:.15em;word-spacing:.15em;text-transform:uppercase}.imagify-ac-share{text-align:right}.imagify-ac-share-content{display:inline-block;padding:10px 15px;background:rgba(255,255,255,.2)}.imagify-ac-share-content>*{display:inline-block;vertical-align:middle}.imagify-bulk-table .imagify-ac-share-content p{margin-right:5px}.imagify-share-networks,.imagify-share-networks li{margin:0}.imagify-share-networks li{display:inline-block}.imagify-share-networks a{display:inline-block;vertical-align:-7px;margin:0 5px;text-decoration:none;color:#FFF}.imagify-cell-checkbox{width:35px}.imagify-cell-checkbox p{margin:0}.imagify-cell-checkbox-loader{display:block;width:27px;height:28px;line-height:0;-webkit-animation:loading 4s infinite linear;animation:loading 4s infinite linear}@-webkit-keyframes loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.imagify-cell-checkbox-loader.hidden{display:none;-webkit-animation:none;animation:none}.imagify-cell-label,.imagify-cell-title label{font-size:14px;text-transform:uppercase;letter-spacing:.02em;font-weight:700}.imagify-cell-label{margin-right:10px}.imagify-cell-value{font-size:12px;font-weight:500;color:#7A8996}td.imagify-cell-title{padding-left:0}.imagify-cell-original-size .imagify-cell-label,.imagify-cell-title label{color:#1F2332}.imagify-cell-optimized-size,.imagify-cell-original-size{font-weight:500;color:#7A8996;font-size:12px}.imagify-cell-optimized-size .imagify-cell-label{color:#338EA6}.imagify-cell-count-optimized{font-size:14px;font-weight:700;color:#338EA6}.imagify-cell-count-errors{color:#C51162;font-weight:700;font-size:14px}.imagify-cell-count-errors a{margin-left:5px;color:#7A8996;font-weight:400;font-size:12px}.imagify-cell-filename{max-width:200px}.imagify-cell-status{max-width:145px}.imagify-cell-status .dashicons-warning{margin-right:2px}.imagistatus .dashicons,.imagiuploaded{margin-right:5px}.imagify-cell-thumbnails{max-width:120px}td.imagify-cell-filename{-o-text-overflow:clip;text-overflow:clip;white-space:nowrap;overflow:hidden}.imagify-bulk-table .imagify-cell-thumbnails{text-align:center}.imagify-cell-percentage,.imagify-cell-savings{color:#46B1CE;font-weight:700}.imagify-bulk-table td.imagify-cell-totaloriginal{padding-right:78px}.imagify-cell-totaloriginal{text-align:right}.imagify-cell-level{width:145px}.imagify-selector-button.imagify-selector-button{border:1px solid #FFF;padding:2px 10px}.imagify-selector-button.imagify-selector-button:focus,.imagify-selector-button.imagify-selector-button:hover{border-color:#EEE;-webkit-box-shadow:0 4px 8px rgba(0,0,0,.1);box-shadow:0 4px 8px rgba(0,0,0,.1)}.imagifilename,.imagiuploaded{display:inline-block;vertical-align:middle;margin-left:5px;color:#626E7B;font-weight:500}.imagifilename{font-size:12px}.imagiuploaded{width:33px;height:33px;margin-left:-8px;overflow:hidden;background:url(../images/upload-image.png) no-repeat;background-size:cover}.imagiuploaded img{max-width:100%;height:auto}.imagistatus{color:#8CA6B3;text-transform:uppercase;font-weight:700}.status-compressing{color:#46B1CE}.status-error{color:#CE0B24}.status-warning{color:#f5a623}.status-complete{color:#8CC152}.imagify-bulk-submit{padding:15px 0 8px}.imagify-settings .button-primary.button-primary[disabled]{color:#4A4A4A!important;background:#D9E4EB!important;text-shadow:none!important;cursor:not-allowed}.dashicons.rotate{-webkit-animation:icon-rotate 2.6s infinite linear;animation:icon-rotate 2.6s infinite linear}.imagify-cell-status .dashicons-admin-generic{-webkit-transform-origin:48.75% 51.75%;-ms-transform-origin:48.75% 51.75%;transform-origin:48.75% 51.75%}@-webkit-keyframes icon-rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes icon-rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.imagify-col.imagify-col.imagify-account-info-col{width:465px}@media (max-width:1245px){.imagify-col.imagify-col.imagify-account-info-col{width:auto;max-width:none;float:none}.imagify-columns .col-overview.col-overview{float:none;width:auto;padding-left:0;padding-right:0}}@media (max-width:1200px){.imagify-settings .imagify-title .imagify-logo{display:none}}@media (max-width:940px){.imagify-bulk-table-container tbody,.imagify-bulk-table-container tr{text-align:left}.imagify-bulk-table-container tbody,.imagify-bulk-table-container tbody td,.imagify-bulk-table-container tbody tr{display:block}.imagify-bulk-table-container tbody td{padding:20px}.imagify-cell-checkbox,.imagify-cell-title{float:left}.imagify-cell-checkbox{width:26px}.imagify-bulk-table-container .imagify-cell-title{padding-left:10px;width:calc(100% - 96px)}.imagify-cell-count-optimized:before,.imagify-cell-title:after{content:'';display:table;clear:both;width:100%}.imagify-cell-count-optimized{clear:both}.imagify-bulk-table-container .imagify-cell-title~td{display:inline-block}.imagify-bulk-table-container td.imagify-cell-level{display:block}}@media (max-width:918px){.imagify-settings .imagify-title{display:block}.imagify-settings .imagify-documentation-link-box{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}}.hidden{display:none}@media (max-width:782px){.imagify-account-info-col .imagify-options-title,.imagify-newbie .imagify-table-header,.imagify-table-header{-ms-flex-direction:column;flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-newbie .imagify-th-titles{width:100%}.imagify-newbie .imagify-th-title.imagify-th-title{color:#343A49;font-size:16px;padding-bottom:20px}.imagify-newbie .imagify-th-titles .dashicons,.imagify-newbie .imagify-th-titles .dashicons:before{margin:0}.imagify-newbie .imagify-th-action{display:-webkit-box;display:-ms-flexbox;display:flex;max-width:100%}.imagify-newbie .imagify-th-action a{max-width:100%;font-size:11px;padding:11px 12px}.imagify-columns .col-chart.col-chart{text-align:center}.imagify-doughnut-legend{margin-top:18px;width:60%;margin:10px auto}.imagify-account-info-col .imagify-options-title>a{-ms-flex-preferred-size:unset;flex-basis:unset;margin:auto}.imagify-account-info-col p.imagify-meteo-title,.imagify-th-title.imagify-th-title.imagify-th-title{font-size:20px}.imagify-bulk-table-container tbody td{padding:10px}.imagify-col-content .imagify-space-left{width:auto;margin:0 0 15px}}
1
+ #imagify-overview-chart-legend{overflow:hidden}.imagify-doughnut-legend{margin-top:38px;list-style:none}.imagify-doughnut-legend li{display:block;padding-left:30px;position:relative;margin-bottom:15px;border-radius:5px;padding:3px 8px 2px 31px;font-size:13px;cursor:default;-webkit-transition:background-color .2s ease-in-out;-o-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.imagify-doughnut-legend li span{display:block;position:absolute;left:0;top:0;width:25px;height:25px;border-radius:50%}.imagify-global-optim-phrase{width:180px;padding-top:20px;font-size:14px;text-align:center}.imagify-total-percent{color:#46b1ce}.imagify-overview-chart-container{float:left;margin-right:20px}.imagify-chart-percent{position:absolute;left:0;right:0;top:50%;margin-top:-.5em;line-height:1;text-align:center;font-size:55px;font-weight:700;color:#46b1ce}.imagify-chart-percent span{font-size:20px;vertical-align:super}.media_page_imagify-bulk-optimization .media-item,body[class*="_imagify-ngg-bulk-optimization"] .media-item{margin:0}.media_page_imagify-bulk-optimization .media-item .progress,body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress{float:none;width:100%;height:8px;margin:0;overflow:visible;background:#1f2331;-webkit-box-shadow:0;box-shadow:0;border-radius:0}.media_page_imagify-bulk-optimization .media-item .percent,body[class*="_imagify-ngg-bulk-optimization"] .media-item .percent{position:absolute;top:6px;right:-28px;text-shadow:none;width:auto;padding:0 5px;line-height:1.85;font-size:14px;font-weight:700;color:#40b1d0}.media_page_imagify-bulk-optimization .media-item .percent,.media_page_imagify-bulk-optimization .media-item .progress,body[class*="_imagify-ngg-bulk-optimization"] .media-item .percent,body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress{text-align:right}.media_page_imagify-bulk-optimization .media-item .progress .bar,body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress .bar{position:relative;width:1px;height:8px;margin-top:0;background:#46b1ce;border-radius:0;-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}#imagify-bulk-action{padding:11px 20px}.imagify-columns .col-overview.col-overview{width:calc(100% - 465px);padding-left:20px}.imagify-columns .col-statistics.col-statistics{width:60%}.imagify-columns .col-chart.col-chart{width:40%}@media (max-width:1520px) and (min-width:1381px),(max-width:1086px){.imagify-columns .col-chart.col-chart,.imagify-columns .col-statistics.col-statistics{width:50%}}@media (max-width:1380px) and (min-width:1246px),(max-width:380px){.imagify-overview-chart-container{float:none;margin-right:0}.imagify-doughnut-legend{margin-top:18px}.imagify-global-optim-phrase{padding-top:0;width:auto}}@media (max-width:808px){.imagify-columns .col-chart.col-chart,.imagify-columns .col-statistics.col-statistics{width:auto;float:none;padding:0}.imagify-columns .col-chart.col-chart{margin-top:3em}}.imagify-sep-v{width:1px;background:rgba(255,255,255,.2)}.base-transparent{background:0 0}[class^=imagify-bar-].right-outside-number{-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:4.5em}.right-outside-number .imagify-barnb{display:block;margin-right:-5.25em;text-align:right;font-weight:700;line-height:.8}.imagify-h2-like{margin:0 0 .5em 0;padding-bottom:.5em;border-bottom:1px solid #e9eff2;font-size:24px;color:#000;font-weight:700}.imagify-h2-like .dashicons,.imagify-h2-like .dashicons:before{font-size:38px;height:38px;width:38px;margin-right:12px;vertical-align:-5px;color:#40b1d0}.imagify-info-block{position:relative;padding:10px;padding-left:42px;background:#d9e4eb;border-radius:4px;line-height:1.6}.imagify-list-infos{margin:0;padding:0}.imagify-list-infos li{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:15px 5px;text-align:left;font-size:14px;line-height:1.5;color:#626e7b}.imagify-list-infos li:first-child{padding-top:5px}.imagify-list-infos li:last-child{padding-bottom:5px}.imagify-list-infos li+li{border-top:1px solid #e9eff2}.imagify-info-icon{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:50px;flex-basis:50px}.imagify-info-icon+span{padding-left:20px}.imagify-list-infos a:before{content:'';display:block}.imagify-bulk .imagify-settings-section{border:1px solid #d9d9d9;border-top:0;background:#fff;color:#4a4a4a}.imagify-bulk h3,.imagify-bulk li,.imagify-bulk p{color:#4a4a4a}.imagify-bulk .imagify-settings-section h3{margin-bottom:2em}.imagify-account-info-col .imagify-options-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-account-info-col p.imagify-meteo-title{margin:0;font-size:24px;font-weight:700;color:#fff}.imagify-account-info-col .imagify-options-title>a{-ms-flex-preferred-size:100px;flex-basis:100px;margin-left:auto;margin-right:10px;text-decoration:underline;font-size:12px}.imagify-account-info-col .imagify-meteo-title .dashicons,.imagify-account-info-col .imagify-meteo-title .dashicons:before{font-size:38px;width:38px;height:38px;margin-right:4px;color:#40b1d0}.imagify-col-content .imagify-block-secondary{margin-left:-1px;margin-right:-1px}.imagify-col-content .imagify-space-left{margin:15px 30px 15px 0}.imagify-col-content .imagify-space-left p{margin:0 0 10px 0;font-size:19px;font-weight:500;color:#343a49}.imagify-col-content .imagify-meteo-icon{height:64px;margin:15px 15px 15px 20px}.imagify-col-content .imagify-section-title+p{margin-top:10px}.imagify-account-info-col .imagify-h3-like.imagify-h3-like{color:inherit}.imagify-title .imagify-tooltips{position:absolute;top:100%;left:0}.imagify-tooltips .icon-round{float:left;display:inline-block;width:28px;height:28px;border:1px solid #fff;margin-right:8px;margin-bottom:8px;font-size:17px;font-style:italic;line-height:29px;font-weight:700;text-align:center;border-radius:50%}.imagify-tooltips .tooltip-content{display:block;position:relative;max-width:250px;padding:7px 15px 8px;background:#2e3242;color:#fff;font-size:10px;border-radius:3px}.imagify-tooltips.right .tooltip-content{margin-left:12px}.imagify-tooltips.bottom .tooltip-content{margin-top:4px}.imagify-inline-options label .tooltip-content{position:absolute;left:0;right:0;top:100%;text-transform:none;font-size:10px;letter-spacing:0;text-align:center}.imagify-tooltips .tooltip-content:after{content:"";position:absolute}.imagify-tooltips.right .tooltip-content:after{top:16px;left:-6px;border-right:8px solid #2e3242;border-top:6px solid transparent;border-bottom:6px solid transparent}.imagify-tooltips.bottom .tooltip-content:after{top:-5px;left:50%;margin-left:-3px;border-bottom:6px solid #2e3242;border-left:6px solid transparent;border-right:6px solid transparent}.imagify-space-tooltips .tooltip-content{max-width:280px;margin-top:20px;margin-left:0;padding:5px 15px 5px;font-size:13px;background:#40b1d0;-webkit-box-shadow:0 3px 0 #338ea6;box-shadow:0 3px 0 #338ea6}.imagify-space-tooltips .tooltip-content:after{top:-14px;left:50%;margin-left:-7px;border:0 none;border-bottom:15px solid #40b1d0;border-left:15px solid transparent;border-right:15px solid transparent}.tooltip-content.tooltip-table{display:table;width:100%}.tooltip-content.tooltip-table>*{display:table-cell;vertical-align:middle}.tooltip-content .cell-icon{width:28px}.tooltip-content .cell-icon .icon{margin-bottom:0}.tooltip-content .cell-text{padding:5px 10px 5px 0;line-height:1.3}.tooltip-content .cell-sep{width:1px;background:rgba(255,255,255,.4)}.tooltip-content .cell-cta{padding-left:10px}.tooltip-content .cell-cta a{display:block;color:#fff;width:100%;height:100%;white-space:nowrap}.imagify-number-you-optimized{margin-bottom:1.35em;overflow:hidden}.imagify-number-you-optimized .number{display:table-cell;padding-right:15px;font-size:48px;font-weight:700;line-height:1;vertical-align:middle;white-space:nowrap;color:#000}.imagify-number-you-optimized [id=imagify-total-optimized-attachments-pct]{color:#40b1d0}.imagify-number-you-optimized .text{display:table-cell;vertical-align:middle;overflow:hidden;font-size:12px;color:#626e7b}.imagify-number-you-optimized>p{display:table}.imagify-bars{padding-right:15px}.imagify-bars p{font-size:12px;margin-bottom:5px}.imagify-bars+.imagify-number-you-optimized{border-bottom:0;padding-top:.85em}.imagify-bars+.imagify-number-you-optimized p{color:#46b1ce}.imagify-bulk-table{margin-top:2em}.imagify-table-header{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:15px 25px;background:#343a49;color:#fff}.imagify-newbie{margin-top:4em;position:relative;overflow:visible}.imagify-newbie .imagify-new-feature.imagify-new-feature{position:absolute;top:0;left:25px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);margin:0;padding:8px 20px;font-size:14px;letter-spacing:.02em;text-transform:uppercase;font-weight:700;color:#fff;background:#8bc34a}.imagify-newbie .imagify-table-header{padding:30px 25px;border:2px solid #8bc34a;background:#f3f9ec}.imagify-th-titles .dashicons,.imagify-th-titles .dashicons:before{width:38px;height:38px;margin-right:20px;font-size:38px;color:#40b1d0}.imagify-newbie .imagify-th-titles .dashicons:before{color:#8bc34a}.imagify-th-title.imagify-th-title.imagify-th-title{margin:0;font-size:24px;font-weight:500;color:#fff}.imagify-newbie .imagify-th-title.imagify-th-title{color:#343a49}.imagify-th-subtitle.imagify-th-subtitle.imagify-th-subtitle{margin:0 0 5px;font-size:14px;color:#7a8996;font-weight:500}.imagify-th-action .imagify-button-clean{font-size:12px;color:#7a8996}.imagify-th-action .imagify-is-active{color:#fff}.imagify-th-action .button:focus,.imagify-th-action .button:hover{color:#fff}.imagify-bulk-table table{width:100%;border-spacing:0;border-collapse:collapse}.imagify-bulk-table td{padding:20px}.imagify-bulk-table-details{border-bottom:2px solid #e5ebef}.imagify-bulk-table-details thead th,.imagify-bulk-table-details thead tr{background:#4a5362}.imagify-bulk-table-details thead th{padding:12px 20px;text-align:left;font-weight:700;color:#e5ebef;font-size:12px}.imagify-bulk-table-details tbody tr:nth-child(odd) td{background:#f2f5f7}.imagify-bulk-table-content{border:1px solid #d3d3d3;border-top:0}.imagify-bulk-table-footer{padding:20px;color:#626e7b;background:#f2f5f7}.imagify-bulk-table tbody tr+tr{border-top:3px solid #f2f5f7}.imagify-bulk-table tbody td,.imagify-bulk-table tbody tr{background:#fff}@media (max-width:782px){.imagify-row-folder-type,tr.imagify-row-waiting,tr.imagify-row-working{padding-top:20px}}.imagify-bulk-table .imagify-row-progress{display:none;height:8px;padding:0}.imagify-bulk-table .imagify-no-uploaded-yet td{height:200px;font-size:17px;letter-spacing:.1em;word-spacing:.12em;vertical-align:middle;text-transform:uppercase;font-weight:700;text-align:center;color:#999;background-color:#fff}.imagify-selector{position:relative}.imagify-selector-list{background:#fff;border:1px solid #f4f7f9;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.1);box-shadow:0 6px 12px rgba(0,0,0,.1);border-radius:3px;font-weight:700;text-transform:uppercase;letter-spacing:.02em}.imagify-selector-list li:first-child label{border-radius:3px 3px 0 0}.imagify-selector-list li:last-child label{border-radius:0 0 3px 3px}.imagify-selector-list li{margin:0}.imagify-selector-list li+li{border-top:1px solid #f4f7f9}.imagify-selector-list svg{margin-right:5px}.imagify-selector-list .imagify-selector-current-value label,.imagify-selector-list input:checked+label{background:#343a49;color:#fff}.imagify-selector-list .imagify-selector-current-value input:focus+label,.imagify-selector-list .imagify-selector-current-value label:hover,.imagify-selector-list input:checked+label:hover,.imagify-selector-list input:focus+label,.imagify-selector-list label:hover{background:#40b1d0;color:#f4f7f9}.imagify-selector-list .imagify-selector-current-value input:focus+label polygon,.imagify-selector-list .imagify-selector-current-value label:hover polygon,.imagify-selector-list input:checked+label:hover polygon,.imagify-selector-list input:focus+label polygon,.imagify-selector-list label:hover polygon{fill:#FFF}.imagify-selector-list .imagify-selector-current-value input:focus+label polygon[fill="#CCD1D6"],.imagify-selector-list .imagify-selector-current-value label:hover polygon[fill="#CCD1D6"],.imagify-selector-list input:checked+label:hover polygon[fill="#CCD1D6"],.imagify-selector-list input:focus+label polygon[fill="#CCD1D6"],.imagify-selector-list label:hover polygon[fill="#CCD1D6"]{fill:#3694AE}.imagify-selector-list li label{display:block;padding:10px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-selector-list polygon{-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-selector-list{position:absolute;top:0;left:0;right:0;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.imagify-selector-list[aria-hidden=true]{opacity:0;visibility:hidden;-webkit-transform:translateY(-50%) scale(0);-ms-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0)}.imagify-selector-list[aria-hidden=false]{opacity:1;visibility:visible;-webkit-transform:translateY(-50%) scale(1);-ms-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1)}.button .imagify-selector-current-value-info{position:relative;padding-right:20px}.button .imagify-selector-current-value-info:after{content:'';position:absolute;right:0;top:50%;margin-top:-3px;border-top:6px solid #7a8996;border-left:6px solid transparent;border-right:6px solid transparent}.imagify-row-complete{padding:35px 20px;margin-top:2em;background:#8bc34a;color:#fff;text-shadow:0 0 2px rgba(0,0,0,.1)}.imagify-row-complete .imagify-ac-chart{margin-top:3px}.imagify-row-complete.imagify-row-complete p{color:#fff;margin:0}@-webkit-keyframes congrate{0%{opacity:0;-webkit-transform:scale(1)}50%{-webkit-transform:scale(1.05);opacity:1}100%{-webkit-transform:scale(1);opacity:1}}@keyframes congrate{0%{opacity:0;-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.05);transform:scale(1.05);opacity:1}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.imagify-row-complete.done{-webkit-animation:congrate .5s ease-in-out;animation:congrate .5s ease-in-out}.imagify-all-complete{margin:1.5em 0}.imagify-all-complete>div{display:inline-block;vertical-align:middle}.imagify-ac-report{min-width:310px;margin-right:20px}.imagify-ac-chart{width:46px;height:46px;float:left;margin:0 20px 0 10px}.imagify-ac-report-text{overflow:hidden}.imagify-ac-report-text p{line-height:1.3}.imagify-ac-rt-big{font-weight:700;font-size:24px;letter-spacing:.15em;word-spacing:0.15em;text-transform:uppercase}.imagify-ac-share{text-align:right}.imagify-ac-share-content{display:inline-block;padding:10px 15px;background:rgba(255,255,255,.2)}.imagify-ac-share-content>*{display:inline-block;vertical-align:middle}.imagify-bulk-table .imagify-ac-share-content p{margin-right:5px}.imagify-share-networks,.imagify-share-networks li{margin:0}.imagify-share-networks li{display:inline-block}.imagify-share-networks a{display:inline-block;vertical-align:-7px;margin:0 5px;text-decoration:none;color:#fff}.imagify-cell-checkbox{width:35px}.imagify-cell-checkbox p{margin:0}.imagify-cell-checkbox-loader{display:block;width:27px;height:28px;line-height:0;-webkit-animation:loading 4s infinite linear;animation:loading 4s infinite linear}@-webkit-keyframes loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.imagify-cell-checkbox-loader.hidden{display:none;-webkit-animation:none;animation:none}.imagify-cell-label,.imagify-cell-title label{font-size:14px;text-transform:uppercase;letter-spacing:.02em;font-weight:700}.imagify-cell-label{margin-right:10px}.imagify-cell-value{font-size:12px;font-weight:500;color:#7a8996}td.imagify-cell-title{padding-left:0}.imagify-cell-original-size .imagify-cell-label,.imagify-cell-title label{color:#1f2332}.imagify-cell-optimized-size,.imagify-cell-original-size{font-weight:500;color:#7a8996;font-size:12px}.imagify-cell-optimized-size .imagify-cell-label{color:#338ea6}.imagify-cell-count-optimized{font-size:14px;font-weight:700;color:#338ea6}.imagify-cell-count-errors{color:#c51162;font-weight:700;font-size:14px}.imagify-cell-count-errors a{margin-left:5px;color:#7a8996;font-weight:400;font-size:12px}.imagify-cell-filename{max-width:200px}.imagify-cell-status{max-width:145px}.imagify-cell-status .dashicons-warning{margin-right:2px}.imagify-cell-thumbnails{max-width:120px}td.imagify-cell-filename{-o-text-overflow:clip;text-overflow:clip;white-space:nowrap;overflow:hidden}.imagify-bulk-table .imagify-cell-thumbnails{text-align:center}.imagify-cell-percentage,.imagify-cell-savings{color:#46b1ce;font-weight:700}.imagify-bulk-table td.imagify-cell-totaloriginal{padding-right:78px}.imagify-cell-totaloriginal{text-align:right}.imagify-cell-level{width:145px}.imagify-selector-button.imagify-selector-button{border:1px solid #fff;padding:2px 10px}.imagify-selector-button.imagify-selector-button:focus,.imagify-selector-button.imagify-selector-button:hover{border-color:#eee;-webkit-box-shadow:0 4px 8px rgba(0,0,0,.1);box-shadow:0 4px 8px rgba(0,0,0,.1)}.imagifilename,.imagiuploaded{display:inline-block;vertical-align:middle;margin-left:5px;color:#626e7b;font-weight:500}.imagifilename{font-size:12px}.imagiuploaded{width:33px;height:33px;margin-right:5px;margin-left:-8px;overflow:hidden;background:url(../images/upload-image.png) 0 0 no-repeat;background-size:cover}.imagiuploaded img{max-width:100%;height:auto}.imagistatus{color:#8ca6b3;text-transform:uppercase;font-weight:700}.imagistatus .dashicons{margin-right:5px}.status-compressing{color:#46b1ce}.status-error{color:#ce0b24}.status-warning{color:#f5a623}.status-complete{color:#8cc152}.imagify-bulk-submit{padding:15px 0 8px 0}.imagify-settings .button-primary.button-primary[disabled]{color:#4a4a4a!important;background:#d9e4eb!important;text-shadow:none!important;cursor:not-allowed}.dashicons.rotate{-webkit-animation:icon-rotate 2.6s infinite linear;animation:icon-rotate 2.6s infinite linear}.imagify-cell-status .dashicons-admin-generic{-webkit-transform-origin:48.75% 51.75%;-ms-transform-origin:48.75% 51.75%;transform-origin:48.75% 51.75%}@-webkit-keyframes icon-rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes icon-rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.imagify-col.imagify-col.imagify-account-info-col{width:465px}@media (max-width:1245px){.imagify-col.imagify-col.imagify-account-info-col{width:auto;max-width:none;float:none}.imagify-columns .col-overview.col-overview{float:none;width:auto;padding-left:0;padding-right:0}}@media (max-width:1200px){.imagify-settings .imagify-title .imagify-logo{display:none}}@media (max-width:940px){.imagify-bulk-table-container tbody,.imagify-bulk-table-container tr{text-align:left}.imagify-bulk-table-container tbody,.imagify-bulk-table-container tbody td,.imagify-bulk-table-container tbody tr{display:block}.imagify-bulk-table-container tbody td{padding:20px}.imagify-cell-checkbox,.imagify-cell-title{float:left}.imagify-cell-checkbox{width:26px}.imagify-bulk-table-container .imagify-cell-title{padding-left:10px;width:calc(100% - 96px)}.imagify-cell-count-optimized:before,.imagify-cell-title:after{content:'';display:table;clear:both;width:100%}.imagify-cell-count-optimized{clear:both}.imagify-bulk-table-container .imagify-cell-title~td{display:inline-block}.imagify-bulk-table-container td.imagify-cell-level{display:block}}@media (max-width:918px){.imagify-settings .imagify-title{display:block}.imagify-settings .imagify-documentation-link-box{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}}.hidden{display:none}@media (max-width:782px){.imagify-account-info-col .imagify-options-title,.imagify-newbie .imagify-table-header,.imagify-table-header{-ms-flex-direction:column;flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-newbie .imagify-th-titles{width:100%}.imagify-newbie .imagify-th-title.imagify-th-title{color:#343a49;font-size:16px;padding-bottom:20px}.imagify-newbie .imagify-th-titles .dashicons,.imagify-newbie .imagify-th-titles .dashicons:before{margin:0}.imagify-newbie .imagify-th-action{display:-webkit-box;display:-ms-flexbox;display:flex;max-width:100%}.imagify-newbie .imagify-th-action a{max-width:100%;font-size:11px;padding:11px 12px}.imagify-columns .col-chart.col-chart{text-align:center}.imagify-doughnut-legend{margin-top:18px;width:60%;margin:10px auto}.imagify-account-info-col .imagify-options-title>a{-ms-flex-preferred-size:unset;flex-basis:unset;margin:auto}.imagify-th-title.imagify-th-title.imagify-th-title{font-size:20px}.imagify-account-info-col p.imagify-meteo-title{font-size:20px}.imagify-bulk-table-container tbody td{padding:10px}.imagify-col-content .imagify-space-left{width:auto;margin:0 0 15px 0}}
assets/css/files-list.css CHANGED
@@ -1,15 +1,24 @@
1
  /* Filter block */
2
  .imagify-files-list .wp-filter {
3
- padding: 15px 20px;
4
  }
5
  .imagify-files-list .filter-items select {
6
  height: auto;
7
- padding: 6px;
8
- margin-right: 12px;
 
9
  }
10
  .imagify-files-list .filter-items .button {
11
  height: auto;
12
  padding: 2px 12px 3px;
 
 
 
 
 
 
 
 
13
  }
14
 
15
  /* Empty table */
1
  /* Filter block */
2
  .imagify-files-list .wp-filter {
3
+ padding: 0 20px 15px;
4
  }
5
  .imagify-files-list .filter-items select {
6
  height: auto;
7
+ padding: 2px 20px 3px 6px;
8
+ margin: 15px 12px 0 0;
9
+ max-width: 100%;
10
  }
11
  .imagify-files-list .filter-items .button {
12
  height: auto;
13
  padding: 2px 12px 3px;
14
+ margin-top: 15px;
15
+ }
16
+ @media screen and (max-width: 782px) {
17
+ .imagify-files-list .filter-items .button {
18
+ margin-bottom: 0;
19
+ line-height: 2.15384615;
20
+ padding: 0 12px;
21
+ }
22
  }
23
 
24
  /* Empty table */
assets/css/files-list.min.css CHANGED
@@ -1 +1 @@
1
- .imagify-files-list .wp-filter{padding:15px 20px}.imagify-files-list .filter-items select{height:auto;padding:6px;margin-right:12px}.imagify-files-list .filter-items .button{height:auto;padding:2px 12px 3px}.imagify-files-list .no-items td{padding:35px;text-align:center;font-size:18px}.imagify-files-list .no-items td a{text-decoration:underline}.imagify-files-list .sortable a{color:#000}.imagify-files-list a{color:#3694AE}.imagify-files-list tbody td,.imagify-files-list tbody th,.imagify-files-list.imagify-files-list tbody .check-column{vertical-align:middle;padding-top:20px;padding-bottom:20px;color:#626E7B}.imagify-files-list .column-title strong{font-weight:400;font-size:14px}.imagify-files-list .column-title strong a{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;word-break:break-all;word-wrap:break-word;font-weight:400}.imagify-files-list .filename{font-size:12px;font-weight:700}.imagify-files-list .media-icon{position:relative;width:60px;overflow:hidden;-ms-flex-negative:0;flex-shrink:0}.media-icon .centered{position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:translate(50%,50%);-ms-transform:translate(50%,50%);transform:translate(50%,50%)}.media-icon .centered img{position:absolute;left:0;top:0;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}table.media .column-title .media-icon.landscape img{max-width:none;width:auto;height:60px}table.media .column-title .media-icon.portrait img{width:60px}.imagify-files-list ul.imagify-datas-list{font-size:11px}.imagify-files-list ul.imagify-datas-list .big{font-size:13px}.imagify-files-list ul.imagify-datas-list span.imagify-chart-value{font-size:12px}.imagify-files-list ul.imagify-datas-list .imagify-chart-container{margin-right:2px}.imagify-files-list ul.imagify-datas-list canvas{width:18px!important;height:18px!important}.imagify-files-list .optimization_level{text-align:center;font-weight:700;font-size:14px;text-transform:uppercase;letter-spacing:.02em}.imagify-files-list .column-optimization_level,.imagify-files-list .column-optimization_level a{text-align:center}.imagify-files-list .column-optimization_level a span{float:none;display:inline-block;vertical-align:middle}.imagify-files-list .column-optimization_level .sorting-indicator{vertical-align:-10px}.imagify-files-list .column-actions .button,.imagify-files-list .column-actions .button-primary{padding:5px 20px;font-size:14px;height:auto}.imagify-files-list .column-actions .button-primary{background:#3694AE;color:#FFF;border:0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none}.imagify-files-list .column-actions a,.status a.button-imagify-refresh-status{display:inline-block;margin:.3em 0;font-size:12px;font-weight:700}.imagify-files-list .imagify-status-already_optimized{font-weight:700;color:#8BC34A}.imagify-files-list .column-actions a .dashicons,.imagify-files-list .column-actions a .dashicons:before,.status a.button-imagify-refresh-status .dashicons,.status a.button-imagify-refresh-status .dashicons:before{margin-right:2px;font-size:17px;height:17px;width:17px}
1
+ .imagify-files-list .wp-filter{padding:0 20px 15px}.imagify-files-list .filter-items select{height:auto;padding:2px 20px 3px 6px;margin:15px 12px 0 0;max-width:100%}.imagify-files-list .filter-items .button{height:auto;padding:2px 12px 3px;margin-top:15px}@media screen and (max-width:782px){.imagify-files-list .filter-items .button{margin-bottom:0;line-height:2.15384615;padding:0 12px}}.imagify-files-list .no-items td{padding:35px;text-align:center;font-size:18px}.imagify-files-list .no-items td a{text-decoration:underline}.imagify-files-list .sortable a{color:#000}.imagify-files-list a{color:#3694ae}.imagify-files-list tbody td,.imagify-files-list tbody th,.imagify-files-list.imagify-files-list tbody .check-column{vertical-align:middle;padding-top:20px;padding-bottom:20px;color:#626e7b}.imagify-files-list .column-title strong{font-weight:400;font-size:14px}.imagify-files-list .column-title strong a{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;word-break:break-all;word-wrap:break-word;font-weight:400}.imagify-files-list .filename{font-size:12px;font-weight:700}.imagify-files-list .media-icon{position:relative;width:60px;overflow:hidden;-ms-flex-negative:0;flex-shrink:0}.media-icon .centered{position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:translate(50%,50%);-ms-transform:translate(50%,50%);transform:translate(50%,50%)}.media-icon .centered img{position:absolute;left:0;top:0;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}table.media .column-title .media-icon.landscape img{max-width:none;width:auto;height:60px}table.media .column-title .media-icon.portrait img{width:60px}.imagify-files-list ul.imagify-datas-list{font-size:11px}.imagify-files-list ul.imagify-datas-list .big{font-size:13px}.imagify-files-list ul.imagify-datas-list span.imagify-chart-value{font-size:12px}.imagify-files-list ul.imagify-datas-list .imagify-chart-container{margin-right:2px}.imagify-files-list ul.imagify-datas-list canvas{width:18px!important;height:18px!important}.imagify-files-list .optimization_level{text-align:center;font-weight:700;font-size:14px;text-transform:uppercase;letter-spacing:.02em}.imagify-files-list .column-optimization_level,.imagify-files-list .column-optimization_level a{text-align:center}.imagify-files-list .column-optimization_level a span{float:none;display:inline-block;vertical-align:middle}.imagify-files-list .column-optimization_level .sorting-indicator{vertical-align:-10px}.imagify-files-list .column-actions .button,.imagify-files-list .column-actions .button-primary{padding:5px 20px;font-size:14px;height:auto}.imagify-files-list .column-actions .button-primary{background:#3694ae;color:#fff;border:0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none}.imagify-files-list .column-actions a,.status a.button-imagify-refresh-status{display:inline-block;margin:.3em 0;font-size:12px;font-weight:700}.imagify-files-list .imagify-status-already_optimized{font-weight:700;color:#8bc34a}.imagify-files-list .column-actions a .dashicons,.imagify-files-list .column-actions a .dashicons:before,.status a.button-imagify-refresh-status .dashicons,.status a.button-imagify-refresh-status .dashicons:before{margin-right:2px;font-size:17px;height:17px;width:17px}
assets/css/notices.min.css CHANGED
@@ -1 +1 @@
1
- .imagify-plugins-error{overflow:hidden;padding-left:20px;list-style-type:disc}.imagify-plugins-error li{width:300px;line-height:30px}@media (max-width:570px){.imagify-plugins-error li{width:auto}}.imagify-notice-dismiss.notice-dismiss{text-decoration:none}.media_page_imagify-bulk-optimization .notice,.settings_page_imagify .notice,body[class*="_imagify-ngg-bulk-optimization"] .notice{margin-right:20px;margin-left:2px}.imagify-notice .button-mini{padding:2px 10px;font-size:13px}.imagify-notice.imagify-notice{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;padding:0;margin:10px 20px 10px 2px;border:0;background:#4A5362;-webkit-box-shadow:none;box-shadow:none;color:#FFF}@media (max-width:782px){.imagify-notice.imagify-notice,.imagify-welcome{margin-right:12px}}@media (max-width:450px){.imagify-notice.imagify-notice{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.wrap .imagify-notice{margin:5px 15px 2px;position:relative}.imagify-notice-logo{padding:18px 23px;background:#40B1D0}.imagify-notice-logo .imagify-logo{opacity:1}.imagify-flex-notice-content .imagify-notice-logo{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.updated .imagify-notice-logo{background:#8BC34A}.error .imagify-notice-logo{background:#C51162}.imagify-notice-title{font-size:15px}.imagify-notice-content{padding:5px 23px}.imagify-notice-content.imagify-notice-content p{margin:.65em 0}.imagify-flex-notice-content .imagify-notice-content{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.imagify-flex-notice-content .imagify-notice-content>*{padding:10px 20px}.imagify-flex-notice-content .imagify-meteo-icon img{height:100%;margin-top:6px}.imagify-notice .imagify-rate-us .stars,.imagify-notice-quota .imagify-space-left p{margin:0}.imagify-notice-quota [class^=imagify-bar-]{background:#1F2332}.imagify-flex-notice-content .imagify-notice-content .imagify-notice-quota{padding-right:24px;padding-left:8px;background:#343A49}.imagify-notice a{color:#40B1D0}.imagify-notice a:focus,.imagify-notice a:hover{color:#FEE102}.imagify-notice code{background:rgba(0,0,0,.4)}.imagify-notice .imagify-rate-us.imagify-rate-us{text-align:left}.imagify-welcome{margin:30px 20px 0 0}.imagify-welcome .baseline{display:inline-block;margin:.2em 0 0 2em;font-size:17px}.imagify-welcome .imagify-logo{vertical-align:middle}.imagify-welcome-remove{position:absolute;top:50%;right:15px;margin-top:-8px;color:#FFF;text-decoration:none}.imagify-columns [class^=col-] img{float:left;margin-right:18px}.imagify-col-content{overflow:hidden}.imagify-col-title{margin:0 0 15px;font-size:23px}.counter .imagify-col-title:before{counter-increment:cols;content:counter(cols) ". ";color:#40B1D0}.imagify-col-desc{color:#5F758E;margin-bottom:2em}.imagify-rkt-notice.imagify-rkt-notice{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center;padding:10px 45px 10px 0;border:0;-webkit-box-shadow:none;box-shadow:none;color:#FFF;background:#1F2332}.media_page_imagify-bulk-optimization .imagify-rkt-notice{margin-left:2px;margin-right:20px}.imagify-rkt-notice .imagify-cross{position:absolute;right:8px;top:50%;width:22px;height:22px;padding:0;margin-top:-11px;background:0 0;color:rgba(255,255,255,.5);text-decoration:none;border-radius:50%;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-rkt-notice .imagify-cross .dashicons{position:relative;top:2px;left:1px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-rkt-notice .imagify-cross:hover{background:#FFF}.imagify-rkt-notice .imagify-cross:hover .dashicons{color:#412355}.imagify-rkt-notice .imagify-rkt-coupon,.imagify-rkt-notice .imagify-rkt-cta,.imagify-rkt-notice .imagify-rkt-logo{-ms-flex-negative:0;flex-shrink:0}.imagify-rkt-notice .imagify-rkt-logo{width:150px!important;text-align:center;padding:0 25px 0 30px;line-height:.8}.imagify-rkt-notice .imagify-rkt-msg{width:100%!important;color:#FFF;padding:0 15px;font-size:14px;line-height:1.6}.imagify-rkt-notice .imagify-rkt-coupon{width:150px!important;padding:0 15px}.imagify-rkt-notice .imagify-rkt-coupon-code{padding:5px 10px;font-size:23px;font-weight:700;border:1px dashed #F56640;color:#F56640}.imagify-rkt-notice .imagify-rkt-cta{width:250px!important;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:200px;flex-basis:200px}.imagify-rkt-notice .button.button{position:relative;top:-1px;height:auto;font-weight:600;font-size:14px;border:0;padding:9px 18px;background:#F56640;-webkit-box-shadow:none;box-shadow:none;text-shadow:none!important}@media (max-width:880px){.imagify-rkt-notice{-ms-flex-wrap:wrap;flex-wrap:wrap}.imagify-rkt-notice .imagify-rkt-cta,.imagify-rkt-notice .imagify-rkt-logo,.imagify-rkt-notice .imagify-rkt-msg{text-align:left;padding:5px 15px}.imagify-cross.imagify-cross{top:8px;margin-top:0}.imagify-rkt-notice .imagify-cross .dashicons{top:1px}}@media (max-width:782px){.media_page_imagify-bulk-optimization .imagify-rkt-notice{margin-left:0;margin-right:12px}.imagify-flex-notice-content .imagify-notice-content .imagify-notice-quota{width:100%}.imagify-notice-quota-btn-container{text-align:center;width:100%}.imagify-notice-quota-btn-container .imagify-button{display:inline-block}}
1
+ .imagify-plugins-error{overflow:hidden;padding-left:20px;list-style-type:disc}.imagify-plugins-error li{width:300px;line-height:30px}@media (max-width:570px){.imagify-plugins-error li{width:auto}}.imagify-notice-dismiss.notice-dismiss{text-decoration:none}.media_page_imagify-bulk-optimization .notice,.settings_page_imagify .notice,body[class*="_imagify-ngg-bulk-optimization"] .notice{margin-right:20px;margin-left:2px}.imagify-notice .button-mini{padding:2px 10px;font-size:13px}.imagify-notice.imagify-notice{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;padding:0;margin:10px 20px 10px 2px;border:0 none;background:#4a5362;-webkit-box-shadow:none;box-shadow:none;color:#fff}@media (max-width:782px){.imagify-notice.imagify-notice,.imagify-welcome{margin-right:12px}}@media (max-width:450px){.imagify-notice.imagify-notice{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.wrap .imagify-notice{margin:5px 15px 2px;position:relative}.imagify-notice-logo{padding:18px 23px;background:#40b1d0}.imagify-notice-logo .imagify-logo{opacity:1}.imagify-flex-notice-content .imagify-notice-logo{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.updated .imagify-notice-logo{background:#8bc34a}.error .imagify-notice-logo{background:#c51162}.imagify-notice-title{font-size:15px}.imagify-notice-content{padding:5px 23px}.imagify-notice-content.imagify-notice-content p{margin:.65em 0}.imagify-flex-notice-content .imagify-notice-content{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.imagify-flex-notice-content .imagify-notice-content>*{padding:10px 20px}.imagify-flex-notice-content .imagify-meteo-icon img{height:100%;margin-top:6px}.imagify-notice-quota [class^=imagify-bar-]{background:#1f2332}.imagify-notice-quota .imagify-space-left p{margin:0}.imagify-flex-notice-content .imagify-notice-content .imagify-notice-quota{padding-right:24px;padding-left:8px;background:#343a49}.imagify-notice a{color:#40b1d0}.imagify-notice a:focus,.imagify-notice a:hover{color:#fee102}.imagify-notice code{background:rgba(0,0,0,.4) none repeat scroll 0 0}.imagify-notice .imagify-rate-us.imagify-rate-us{text-align:left}.imagify-notice .imagify-rate-us .stars{margin:0}.imagify-welcome{margin:30px 20px 0 0}.imagify-welcome .baseline{display:inline-block;margin:.2em 0 0 2em;font-size:17px}.imagify-welcome .imagify-logo{vertical-align:middle}.imagify-welcome-remove{position:absolute;top:50%;right:15px;margin-top:-8px;color:#fff;text-decoration:none}.imagify-columns [class^=col-] img{float:left;margin-right:18px}.imagify-col-content{overflow:hidden}.imagify-col-title{margin:0 0 15px 0;font-size:23px}.counter .imagify-col-title:before{counter-increment:cols;content:counter(cols) ". ";color:#40b1d0}.imagify-col-desc{color:#5f758e;margin-bottom:2em}.imagify-rkt-notice.imagify-rkt-notice{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center;padding:10px 45px 10px 0;border:0 none;-webkit-box-shadow:none;box-shadow:none;color:#fff;background:#1f2332}.media_page_imagify-bulk-optimization .imagify-rkt-notice{margin-left:2px;margin-right:20px}@media (max-width:782px){.media_page_imagify-bulk-optimization .imagify-rkt-notice{margin-left:0;margin-right:12px}}.imagify-rkt-notice .imagify-cross{position:absolute;right:8px;top:50%;width:22px;height:22px;padding:0;margin-top:-11px;background:0 0;color:rgba(255,255,255,.5);text-decoration:none;border-radius:50%;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-rkt-notice .imagify-cross .dashicons{position:relative;top:2px;left:1px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-rkt-notice .imagify-cross:hover{background:#fff}.imagify-rkt-notice .imagify-cross:hover .dashicons{color:#412355}.imagify-rkt-notice .imagify-rkt-coupon,.imagify-rkt-notice .imagify-rkt-cta,.imagify-rkt-notice .imagify-rkt-logo{-ms-flex-negative:0;flex-shrink:0}.imagify-rkt-notice .imagify-rkt-logo{width:150px!important;text-align:center;padding:0 25px 0 30px;line-height:.8}.imagify-rkt-notice .imagify-rkt-msg{width:100%!important;color:#fff;padding:0 15px;font-size:14px;line-height:1.6}.imagify-rkt-notice .imagify-rkt-coupon{width:150px!important;padding:0 15px}.imagify-rkt-notice .imagify-rkt-coupon-code{padding:5px 10px;font-size:23px;font-weight:700;border:1px dashed #f56640;color:#f56640}.imagify-rkt-notice .imagify-rkt-cta{width:250px!important;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:200px;flex-basis:200px}.imagify-rkt-notice .button.button{position:relative;top:-1px;height:auto;font-weight:600;font-size:14px;border:0 none;padding:9px 18px 9px;background:#f56640;-webkit-box-shadow:none;box-shadow:none;text-shadow:none!important}@media (max-width:880px){.imagify-rkt-notice{-ms-flex-wrap:wrap;flex-wrap:wrap}.imagify-rkt-notice .imagify-rkt-cta,.imagify-rkt-notice .imagify-rkt-logo,.imagify-rkt-notice .imagify-rkt-msg{text-align:left;padding:5px 15px}.imagify-cross.imagify-cross{top:8px;margin-top:0}.imagify-rkt-notice .imagify-cross .dashicons{top:1px}}@media (max-width:782px){.imagify-flex-notice-content .imagify-notice-content .imagify-notice-quota{width:100%}.imagify-notice-quota-btn-container{text-align:center;width:100%}.imagify-notice-quota-btn-container .imagify-button{display:inline-block}}
assets/css/options.min.css CHANGED
@@ -1 +1 @@
1
- .wrap.imagify-settings{margin-right:0}.imagify-settings.imagify-have-rocket{margin-right:20px}#imagify-check-api-container{display:block;margin-top:6px;font-weight:700}#imagify-check-api-container .dashicons{font-size:25px}#imagify-check-api-container .dashicons-no:before{color:#f06e57;vertical-align:-1px}#imagify-check-api-container .imagify-icon{font-size:1.8em;margin-right:3px;margin-left:1px;color:#8BC34A;vertical-align:-2px}.imagify-account-info-col .imagify-api-line{padding:22px 26px;background:#343A49}.imagify-api-line label,p.imagify-api-key-invite-title{display:block;margin-bottom:6px;font-size:14px;text-transform:uppercase;letter-spacing:.02em;font-weight:700;color:#343A49}.imagify-account-info-col .imagify-api-line label{color:#E5EBEF;display:inline-block}.imagify-api-line.imagify-api-line input[type=text]{width:100%;padding:6px 10px;border:1px solid #40B1D0;font-family:"PT Mono",Consolas,monospace;font-size:14px;letter-spacing:.01em;font-weight:700;color:#40B1D0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.imagify-no-api-key .imagify-api-line{margin:3em 0 0;padding:2em 0 0}.imagify-no-api-key .imagify-api-line input[type=text]{margin-top:5px;width:400px;max-width:100%}.imagify-settings .imagify-no-api-key div.submit.submit{border:0;padding:0 16px;margin-top:0;background:#FFF}.imagify-settings .imagify-no-api-key div.submit.submit p{padding-bottom:0}.imagify-options-title{margin:.75em 0 0;font-size:24px;letter-spacing:.02em;font-weight:700;color:#343A49}.imagify-options-subtitle{padding-bottom:.3em;margin-bottom:20px;border-bottom:1px solid #D2D3D6;font-size:14px;letter-spacing:.01em;font-weight:700;text-transform:uppercase;color:#626E7B}.imagify-options-subtitle a{font-size:12px;color:#338EA6;text-transform:none;letter-spacing:0}.imagify-options-subtitle .imagify-info{margin-left:15px}.imagify-setting-line{border-top:1px solid #D2D3D6;padding:25px 0 13px;margin:1em 0}.imagify-options-subtitle+.imagify-setting-line{border-top:0;padding-top:8px}.imagify-setting-optim-level{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 0 18px}.imagify-setting-optim-level>p{margin:0}.imagify-setting-optim-level .imagify-inline-options{-ms-flex-preferred-size:60%;flex-basis:60%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;background:#2E3243;border-radius:3px}.imagify-setting-optim-level .imagify-inline-options label{display:block!important;width:100%;font-size:14px!important;border-radius:3px!important}.imagify-setting-optim-level .imagify-visual-comparison-text{-ms-flex-preferred-size:40%;flex-basis:40%;-ms-flex-negative:1;flex-shrink:1;padding-left:20px;margin-top:20px;color:#626E7B;-webkit-box-sizing:border-box;box-sizing:border-box}.imagify-setting-optim-level.imagify-setting-optim-level .imagify-visual-comparison-btn{padding-top:5px;margin-top:2px;border-radius:2px;text-transform:none;letter-spacing:0;text-shadow:none!important}@media (max-width:782px){.imagify-settings .form-table th{padding-top:2em;padding-bottom:.5em}}.imagify-settings .form-table td{vertical-align:top}.imagify-settings .form-table th span{cursor:pointer}.imagify-middle th{padding-top:35px}.imagify-settings div.submit.submit{border-top:1px solid #D9D9D9;margin-top:2em;padding:18px 0 7px 30px}.imagify-settings .hidden+div.submit.submit{margin-top:-1px}.imagify-settings p.submit{float:left;margin-top:0}.imagify-settings p.submit .button{margin:0 5px}.imagify-sub-header th{text-align:right}.imagify-sub-header .form-table{margin:0}.imagify-sub-header td,.imagify-sub-header th{padding-top:0;padding-bottom:0}.imagify-sub-header [for=api_key]{padding-top:5px}@media (max-width:1120px){.imagify-settings .imagify-logo-block{margin-right:0}.imagify-settings .imagify-rate-us.imagify-rate-us{margin:1em 0 -1em}}.imagify-settings .imagify-rate-us{margin-right:25px;margin-left:auto}.imagify-visual-label,label+.imagify-info{display:inline-block;width:550px;max-width:calc(100% - 38px);margin-left:38px;padding-right:25px}.imagify-options-line{-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}label~.imagify-options-line{display:block;margin:8px 0 20px 40px;font-size:14px}.imagify-options-line+.imagify-info{margin-left:38px}label+.imagify-info{margin-top:10px}.imagify-options-line+.imagify-info+.imagify-options-line{margin-top:20px}.imagify-visual-label{vertical-align:-5px}label[for=imagify_sizes_full]+.imagify-info{vertical-align:middle}.imagify-settings.imagify-settings [type=checkbox]:not(:checked)+label .imagify-visual-label,.imagify-settings.imagify-settings [type=checkbox]:not(:checked)+label~.imagify-options-line,:checked+label~.imagify-options-line :checked+label~.imagify-options-line .imagify-faded{opacity:.5}.imagify-settings.imagify-settings :not(:checked)+label~.imagify-options-line :not(:checked)+label~.imagify-options-line,.imagify-settings.imagify-settings [type=checkbox]:checked+label .imagify-visual-label,.imagify-settings.imagify-settings [type=checkbox]:checked+label~.imagify-options-line{opacity:1}.imagify-radio-group+.imagify-options-line{display:block;margin:0 0 0 1.7em;font-size:14px}.imagify-checkbox-marged{max-width:500px;margin-left:45px}.imagify-settings [type=text],.imagify-settings [type=number]{width:20em;max-width:100%;height:auto;padding:6px;margin:0 6px;border:1px solid #8BA6B4;-webkit-box-shadow:none;box-shadow:none;border-radius:2px;color:#338EA6;font-weight:700}.imagify-settings [type=number]{width:5em}.imagify-settings ::-webkit-input-placeholder{color:#B1B1B1;font-weight:400}.imagify-settings ::-moz-placeholder{color:#B1B1B1;font-weight:400;opacity:1}.imagify-settings :-ms-input-placeholder{color:#B1B1B1;font-weight:400}.imagify-settings :-moz-placeholder{color:#B1B1B1;font-weight:400;opacity:1}.imagify-settings ::-ms-input-placeholder{color:#B1B1B1;font-weight:400}.imagify-settings ::placeholder{color:#B1B1B1;font-weight:400}.imagify-menu-bar-img{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:100%;width:350px;height:auto;margin-top:0;border:1px solid #8BA6B4}.imagify-col.imagify-main{float:left;width:calc(100% - 320px);padding-left:0;padding-right:0}.imagify-have-rocket .imagify-main{float:none;width:1265px;max-width:100%}.imagify-sidebar{float:left;width:300px;max-width:100%}.imagify-sidebar-section{border:1px solid #BBB;background:#1F2332;position:relative;padding:10px 20px;text-align:center;color:#F2F2F2}.imagify-sidebar-section+.imagify-sidebar-section{margin-top:2em}@media (max-width:820px){.imagify-main,.imagify-sidebar{float:none;width:auto}.imagify-settings{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.imagify-sidebar{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;max-width:none;margin-left:0;margin-top:25px}.wp-media-products{text-align:center}.wp-media-products li{display:inline-block;width:100%;max-width:276px}}@media (min-width:1400px){.imagify-main{width:74%}}.imagify-sidebar-close{position:absolute;top:8px;right:12px;text-decoration:none}.imagify-sidebar-close i{font-size:2em;color:rgba(255,255,255,.5)}p.imagify-sidebar-title{margin:1.2em 0 1.5em;text-align:left;color:#F56640;text-transform:uppercase;letter-spacing:.015em;word-spacing:.015em;font-weight:700}p.imagify-sidebar-description{margin:1.5em 0;text-align:left;font-weight:500;color:#F2F2F2}.imagify-sidebar-description strong{color:#39CE9A}.imagify-rocket-cta-promo{display:block;padding:8px 10px;margin:1.3em 0 .5em;border:2px dashed #F56640;border-radius:3px;font-size:18px;font-weight:700;color:#F56640}.imagify-rocket-cta-promo strong,a.btn-rocket{color:#F2F2F2}a.btn-rocket{display:block;font-size:15px;padding:10px 12px;margin:0 0 1.5em;background:#F56640;border-radius:3px;text-transform:uppercase;font-weight:700;text-decoration:none}a.btn-rocket:focus,a.btn-rocket:hover{background:#AC2B15}.imagify-sidebar-section ul{margin-top:20px}.imagify-sidebar-section li{position:relative;margin:1.2em 0;padding-left:25px;text-align:left}.imagify-sidebar-section li:before{content:"✓";position:absolute;left:0;top:0;color:#39CE9A;font-size:18px}label[for=imagify_admin_bar_menu],label[for=imagify_partner_links]{font-weight:400!important;color:#626E7B!important}.imagify-select-all-buttons{margin-top:8px}.imagify-link-like.imagify-select-all{font-weight:700;font-size:12px;color:#3694AE}.imagify-select-all.imagify-is-inactive{color:inherit;text-decoration:none;cursor:default}.imagify-fts-header{padding:10px 16px;background:#343A49;color:#FFF}.imagify-fts-header i{font-size:1.8em;margin-right:12px}.imagify-fts-header p{margin:0;color:#FFF}#imagify-add-themes-to-custom-folder strong,.imagify-fts-header strong{color:#40B1D0;font-weight:700}.imagify-fts-content{padding:16px;background:#F4F7F9;border:1px solid #CDD0D4;border-top:0}.imagify-fts-content p{margin-top:0}.imagify-kindof-title{margin-top:2em;padding:0 0 10px;border-bottom:1px solid #D2D3D6;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-weight:700}.imagify-settings .imagify-button-mini{padding:4px 13px 4px 10px}.imagify-settings .imagify-button-mini .dashicons-plus{vertical-align:-7.5px}.imagify-settings .imagify-button-mini.imagify-button-primary:focus,.imagify-settings .imagify-button-mini.imagify-button-primary:hover{color:#FFF}p.imagify-custom-folder-line{position:relative;margin:0;padding:12px 15px;color:#4A5362;font-weight:500;-webkit-transition:all .75s;-o-transition:all .75s;transition:all .75s}.imagify-custom-folder-line:first-child,.imagify-empty-folder{margin-top:-.5em}.imagify-custom-folder-line.imagify-will-remove{background:#C51162;color:#FFF;-webkit-transform:translateX(-120px);-ms-transform:translateX(-120px);transform:translateX(-120px);opacity:0}.imagify-custom-folder-line+.imagify-custom-folder-line{border-top:1px solid #E9EFF2}.imagify-custom-folders-remove{position:absolute;right:0;top:6px;border:0;padding:5px 10px 4px;-webkit-box-shadow:none;box-shadow:none;color:#7A8996;border-radius:16px;font-size:13px;line-height:18px;background:#FFF;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s;cursor:pointer}.imagify-custom-folders-remove-text{max-width:0;overflow:hidden;white-space:nowrap;display:inline-block;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-custom-folders-remove:focus,.imagify-custom-folders-remove:hover{background:#D9EFF6;color:#225E6E}.imagify-custom-folders-remove:focus .imagify-custom-folders-remove-text,.imagify-custom-folders-remove:hover .imagify-custom-folders-remove-text{max-width:6em;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.imagify-settings .progress{height:8px;margin-top:1em;background:#343A49}.imagify-settings .bar{position:relative;width:1px;height:8px;background:#46B1CE;-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}.imagify-settings .percent{position:absolute;top:6px;right:0;padding:0 5px;line-height:1.85;font-size:14px;font-weight:700;color:#40B1D0}.dashicons.rotate{-webkit-animation:icon-rotate 2.6s infinite linear;animation:icon-rotate 2.6s infinite linear}@-webkit-keyframes icon-rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes icon-rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.imagify-add-custom-folder+.imagify-loader{display:none;vertical-align:middle}.imagify-add-custom-folder[disabled]+.imagify-loader{display:inline-block}.imagify-folders-information{position:relative;margin:-5px 0 20px;padding:10px 10px 10px 40px;text-align:left;background:#F2F2F2}.imagify-folders-information i{position:absolute;left:10px;top:50%;margin-top:-10px}.imagify-folders-tree{margin:0;text-align:left}.imagify-folders-tree li{clear:left}.imagify-folders-tree .imagify-folder{-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;width:48px;z-index:2;float:left;margin-top:-3px;padding:0 8px 0 0;border:0;background:0 0!important;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-folders-tree span.imagify-folder{padding-left:1.5px}.imagify-folders-tree .imagify-folder:before{content:"+";display:inline-block;width:13px;height:21px;font-size:1.5em;vertical-align:.15em}.imagify-folders-tree span.imagify-folder:before{content:''}.imagify-folders-tree .imagify-folder-icon path{-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-folders-tree .imagify-is-open .imagify-folder-icon path{stroke:#7A8996}.imagify-folders-tree .imagify-is-open.imagify-folder:before{content:"-";color:#7A8996}.imagify-folders-tree .imagify-is-open~label{color:#7A8996}.imagify-folders-tree .imagify-folder .imagify-loader,.imagify-folders-tree .imagify-folder.imagify-loading:before{display:none}.imagify-folders-tree .imagify-folder.imagify-loading .imagify-loader{display:inline-block;width:13px;height:21px;font-size:1.5em;vertical-align:.15em}.imagify-folders-tree .imagify-folder.imagify-loading .imagify-loader img{display:inline-block;width:100%;height:auto;vertical-align:middle}.imagify-folders-tree button.imagify-folder:focus,.imagify-folders-tree button.imagify-folder:focus path,.imagify-folders-tree button.imagify-folder:hover,.imagify-folders-tree button.imagify-folder:hover path{color:#3694AE;stroke:#3694AE}.imagify-folders-tree .imagify-folder.disabled,.imagify-folders-tree .imagify-folder:disabled{color:#7f7f7f}.imagify-swal-content .imagify-folders-tree label{position:relative;display:block;width:100%;padding:3px 0;font-size:15px;font-weight:500;vertical-align:top;-webkit-transition:all .475s;-o-transition:all .475s;transition:all .475s}.imagify-folders-tree input:focus+label,.imagify-swal-content .imagify-folders-tree label:hover{background:#F4F7F9}.imagify-folders-tree .imagify-folder-already-selected input:focus+label,.imagify-folders-tree .imagify-folder-already-selected label,.imagify-folders-tree .imagify-folder-already-selected label:hover{background:#40B1D0;color:#FFF;border-radius:3px;cursor:default}.imagify-folders-tree .imagify-folder-already-selected button,.imagify-folders-tree .imagify-folder-already-selected button path{color:#FFF;stroke:#FFF;cursor:default}.imagify-folders-tree .imagify-folder-already-selected button:focus path,.imagify-folders-tree .imagify-folder-already-selected button:hover path{stroke:#FFF}.imagify-folders-tree .imagify-folder-already-selected button:before{content:''}.imagify-add-ed-folder{position:absolute;top:0;bottom:0;right:0;font-size:11px;text-transform:uppercase;letter-spacing:.02em;word-spacing:.02em;color:#3694AE;background:#F4F7F9;opacity:0;-webkit-transform:translateX(15px);-ms-transform:translateX(15px);transform:translateX(15px);-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-folder-already-selected .imagify-add-ed-folder,input:checked+label .imagify-add-ed-folder,input:focus+label .imagify-add-ed-folder,label:hover .imagify-add-ed-folder{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}input:checked+label .imagify-add-ed-folder{background:#FFF}input:checked+label:hover .imagify-add-ed-folder,input:checked:focus+label .imagify-add-ed-folder{background:#F4F7F9}.imagify-folder-already-selected .imagify-add-ed-folder{background:#40B1D0;color:#FFF}.imagify-fake-checkbox{position:relative;display:inline-block;width:14px;height:14px;margin:3.5px 15px 0 5px;border:1.5px solid #3694AE;border-radius:3px;vertical-align:-4px}.imagify-fake-checkbox:after{position:absolute;left:1px;top:0;content:"✓";color:#3694AE;font-size:14px;line-height:.9;font-style:normal;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:all .475s;-o-transition:all .475s;transition:all .475s}.imagify-folder-already-selected .imagify-fake-checkbox:after,input:checked+label .imagify-fake-checkbox:after{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.imagify-folder-already-selected .imagify-fake-checkbox{border-color:#40B1D0}.imagify-folder-already-selected .imagify-fake-checkbox:after{color:#FFF}.imagify-folders-sub-tree{position:relative;margin-left:.75em;padding-top:.6em;padding-left:1em;border-left:1px dotted rgba(98,110,123,.3)}.imagify-folders-sub-tree li{position:relative;margin-bottom:4px}.imagify-folders-sub-tree li:before{content:"";position:absolute;top:12px;left:-1em;height:1px;width:.9em;border-top:1px dotted rgba(98,110,123,.3)}.imagify-folders-sub-tree li:last-child:after{content:"";position:absolute;left:-1.1em;bottom:0;height:11px;width:3px;background:#FFF}.imagify-empty-folder em{font-size:12px;font-weight:500;color:#A2AFBC}@media (max-width:782px){.imagify-settings.imagify-have-rocket{margin-right:10px}.imagify-visual-label,label+.imagify-info{max-width:calc(100% - 65px);padding-right:0}.imagify-options-title{font-size:22px}.imagify-user-plan-label{margin-right:-5px}.imagify-col.imagify-main{width:100%;padding-right:10px}.imagify-col+.imagify-col{padding:0 10px 0 0}.imagify-no-api-key .imagify-api-line input[type=text]{margin-left:0}}@media (max-width:513px){.imagify-setting-optim-level .imagify-visual-comparison-text{margin-top:20px}}
1
+ .wrap.imagify-settings{margin-right:0}.imagify-settings.imagify-have-rocket{margin-right:20px}#imagify-check-api-container{display:block;margin-top:6px;font-weight:700}#imagify-check-api-container .dashicons{font-size:25px}#imagify-check-api-container .dashicons-no:before{color:#f06e57;vertical-align:-1px}#imagify-check-api-container .imagify-icon{font-size:1.8em;margin-right:3px;margin-left:1px;color:#8bc34a;vertical-align:-2px}.imagify-account-info-col .imagify-api-line{padding:22px 26px;background:#343a49}.imagify-api-line label,p.imagify-api-key-invite-title{display:block;margin-bottom:6px;font-size:14px;text-transform:uppercase;letter-spacing:.02em;font-weight:700;color:#343a49}.imagify-account-info-col .imagify-api-line label{color:#e5ebef;display:inline-block}.imagify-api-line.imagify-api-line input[type=text]{width:100%;padding:6px 10px;border:1px solid #40b1d0;font-family:"PT Mono",Consolas,monospace;font-size:14px;letter-spacing:.01em;font-weight:700;color:#40b1d0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.imagify-no-api-key .imagify-api-line{margin:3em 0 0 0;padding:2em 0 0}.imagify-no-api-key .imagify-api-line input[type=text]{margin-top:5px;width:400px;max-width:100%}.imagify-settings .imagify-no-api-key div.submit.submit{border:0;padding:0 16px;margin-top:0;background:#fff}.imagify-settings .imagify-no-api-key div.submit.submit p{padding-bottom:0}.imagify-options-title{margin:.75em 0 0 0;font-size:24px;letter-spacing:.02em;font-weight:700;color:#343a49}.imagify-options-subtitle{padding-bottom:.3em;margin-bottom:20px;border-bottom:1px solid #d2d3d6;font-size:14px;letter-spacing:.01em;font-weight:700;text-transform:uppercase;color:#626e7b}.imagify-options-subtitle a{font-size:12px;color:#338ea6;text-transform:none;letter-spacing:0}.imagify-options-subtitle .imagify-info{margin-left:15px}.imagify-setting-line{border-top:1px solid #d2d3d6;padding:25px 0 13px;margin:1em 0}.imagify-options-subtitle+.imagify-setting-line{border-top:0;padding-top:8px}.imagify-setting-optim-level{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-setting-optim-level{padding:8px 0 18px}.imagify-setting-optim-level>p{margin:0}.imagify-setting-optim-level .imagify-inline-options{-ms-flex-preferred-size:60%;flex-basis:60%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;background:#2e3243;border-radius:3px}.imagify-setting-optim-level .imagify-inline-options label{display:block!important;width:100%;font-size:14px!important;border-radius:3px!important}.imagify-setting-optim-level .imagify-visual-comparison-text{-ms-flex-preferred-size:40%;flex-basis:40%;-ms-flex-negative:1;flex-shrink:1;padding-left:20px;margin-top:20px;color:#626e7b;-webkit-box-sizing:border-box;box-sizing:border-box}.imagify-setting-optim-level.imagify-setting-optim-level .imagify-visual-comparison-btn{padding-top:5px;margin-top:2px;border-radius:2px;text-transform:none;letter-spacing:0;text-shadow:none!important}@media (max-width:782px){.imagify-settings .form-table th{padding-top:2em;padding-bottom:.5em}}.imagify-settings .form-table td{vertical-align:top}.imagify-settings .form-table th span{cursor:pointer}.imagify-middle th{padding-top:35px}.imagify-settings div.submit.submit{border-top:1px solid #d9d9d9;margin-top:2em;padding:18px 0 7px 30px}.imagify-settings .hidden+div.submit.submit{margin-top:-1px}.imagify-settings p.submit{float:left;margin-top:0}.imagify-settings p.submit .button{margin:0 5px}.imagify-sub-header th{text-align:right}.imagify-sub-header .form-table{margin:0}.imagify-sub-header td,.imagify-sub-header th{padding-top:0;padding-bottom:0}.imagify-sub-header [for=api_key]{padding-top:5px}@media (max-width:1120px){.imagify-settings .imagify-logo-block{margin-right:0}.imagify-settings .imagify-rate-us.imagify-rate-us{margin:1em 0 -1em}}.imagify-settings .imagify-rate-us{margin-right:25px;margin-left:auto}.imagify-visual-label,label+.imagify-info{display:inline-block;width:550px;max-width:calc(100% - 38px);margin-left:38px;padding-right:25px}.imagify-options-line{-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}label~.imagify-options-line{display:block;margin:8px 0 20px 40px;font-size:14px}.imagify-options-line+.imagify-info{margin-left:38px}label+.imagify-info{margin-top:10px}.imagify-options-line+.imagify-info+.imagify-options-line{margin-top:20px}.imagify-visual-label{vertical-align:-5px}label[for=imagify_sizes_full]+.imagify-info{vertical-align:middle}.imagify-settings.imagify-settings [type=checkbox]:not(:checked)+label .imagify-visual-label,.imagify-settings.imagify-settings [type=checkbox]:not(:checked)+label~.imagify-options-line,:checked+label~.imagify-options-line :checked+label~.imagify-options-line .imagify-faded{opacity:.5}.imagify-settings.imagify-settings :not(:checked)+label~.imagify-options-line :not(:checked)+label~.imagify-options-line,.imagify-settings.imagify-settings [type=checkbox]:checked+label .imagify-visual-label,.imagify-settings.imagify-settings [type=checkbox]:checked+label~.imagify-options-line{opacity:1}.imagify-radio-group+.imagify-options-line{display:block;margin:0 0 0 1.7em;font-size:14px}.imagify-checkbox-marged{max-width:500px;margin-left:45px}.imagify-settings [type=number],.imagify-settings [type=text]{width:20em;max-width:100%;height:auto;padding:6px;margin:0 6px;border:1px solid #8ba6b4;-webkit-box-shadow:none;box-shadow:none;border-radius:2px;color:#338ea6;font-weight:700}.imagify-settings [type=number]{width:5em}.imagify-settings ::-webkit-input-placeholder{color:#b1b1b1;font-weight:400}.imagify-settings ::-moz-placeholder{color:#b1b1b1;font-weight:400;opacity:1}.imagify-settings :-ms-input-placeholder{color:#b1b1b1;font-weight:400}.imagify-settings :-moz-placeholder{color:#b1b1b1;font-weight:400;opacity:1}.imagify-settings ::-ms-input-placeholder{color:#b1b1b1;font-weight:400}.imagify-settings ::placeholder{color:#b1b1b1;font-weight:400}.imagify-menu-bar-img{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:100%;width:350px;height:auto;margin-top:0;border:1px solid #8ba6b4}.imagify-col.imagify-main{float:left;width:calc(100% - 320px);padding-left:0;padding-right:0}.imagify-have-rocket .imagify-main{float:none;width:1265px;max-width:100%}.imagify-sidebar{float:left;width:300px;max-width:100%}.imagify-sidebar-section{border:1px solid #bbb;background:#1f2332}.imagify-sidebar-section+.imagify-sidebar-section{margin-top:2em}@media (max-width:820px){.imagify-settings{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.imagify-main{width:auto;float:none}.imagify-sidebar{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;float:none;width:auto;max-width:none;margin-left:0;margin-top:25px}.wp-media-products{text-align:center}.wp-media-products li{display:inline-block;width:100%;max-width:276px}}@media (min-width:1400px){.imagify-main{width:74%}}.imagify-sidebar-section{position:relative;padding:10px 20px;text-align:center;color:#f2f2f2}.imagify-sidebar-close{position:absolute;top:8px;right:12px;text-decoration:none}.imagify-sidebar-close i{font-size:2em;color:rgba(255,255,255,.5)}p.imagify-sidebar-title{margin:1.2em 0 1.5em;text-align:left;color:#f56640;text-transform:uppercase;letter-spacing:.015em;word-spacing:0.015em;font-weight:700}p.imagify-sidebar-description{margin:1.5em 0;text-align:left;font-weight:500;color:#f2f2f2}.imagify-sidebar-description strong{color:#39ce9a}.imagify-rocket-cta-promo{display:block;padding:8px 10px;margin:1.3em 0 .5em 0;border:2px dashed #f56640;border-radius:3px;font-size:18px;font-weight:700;color:#f56640}.imagify-rocket-cta-promo strong{color:#f2f2f2}a.btn-rocket{display:block;font-size:15px;padding:10px 12px;margin:0 0 1.5em;background:#f56640;border-radius:3px;color:#f2f2f2;text-transform:uppercase;font-weight:700;text-decoration:none}a.btn-rocket:focus,a.btn-rocket:hover{background:#ac2b15}.imagify-sidebar-section ul{margin-top:20px}.imagify-sidebar-section li{position:relative;margin:1.2em 0;padding-left:25px;text-align:left}.imagify-sidebar-section li:before{content:"✓";position:absolute;left:0;top:0;color:#39ce9a;font-size:18px}label[for=imagify_admin_bar_menu],label[for=imagify_partner_links]{font-weight:400!important;color:#626e7b!important}.imagify-select-all-buttons{margin-top:8px}.imagify-link-like.imagify-select-all{font-weight:700;font-size:12px;color:#3694ae}.imagify-select-all.imagify-is-inactive{color:inherit;text-decoration:none;cursor:default}.imagify-fts-header{padding:10px 16px;background:#343a49;color:#fff}.imagify-fts-header i{font-size:1.8em;margin-right:12px}.imagify-fts-header p{margin:0;color:#fff}#imagify-add-themes-to-custom-folder strong,.imagify-fts-header strong{color:#40b1d0;font-weight:700}.imagify-fts-content{padding:16px;background:#f4f7f9;border:1px solid #cdd0d4;border-top:0}.imagify-fts-content p{margin-top:0}.imagify-kindof-title{margin-top:2em;padding:0 0 10px 0;border-bottom:1px solid #d2d3d6;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-weight:700}.imagify-settings .imagify-button-mini{padding:4px 13px 4px 10px}.imagify-settings .imagify-button-mini .dashicons-plus{vertical-align:-7.5px}.imagify-settings .imagify-button-mini.imagify-button-primary:focus,.imagify-settings .imagify-button-mini.imagify-button-primary:hover{color:#fff}p.imagify-custom-folder-line{position:relative;margin:0;padding:12px 15px;color:#4a5362;font-weight:500;-webkit-transition:all .75s;-o-transition:all .75s;transition:all .75s}.imagify-custom-folder-line.imagify-will-remove{background:#c51162;color:#fff;-webkit-transform:translateX(-120px);-ms-transform:translateX(-120px);transform:translateX(-120px);opacity:0}.imagify-custom-folder-line:first-child{margin-top:-.5em}.imagify-custom-folder-line+.imagify-custom-folder-line{border-top:1px solid #e9eff2}.imagify-custom-folders-remove{position:absolute;right:0;top:6px;border:0;padding:5px 10px 4px;-webkit-box-shadow:none;box-shadow:none;color:#7a8996;border-radius:16px;font-size:13px;line-height:18px;background:#fff;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s;cursor:pointer}.imagify-custom-folders-remove-text{max-width:0;overflow:hidden;white-space:nowrap;display:inline-block;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-custom-folders-remove:focus,.imagify-custom-folders-remove:hover{background:#d9eff6;color:#225e6e}.imagify-custom-folders-remove:focus .imagify-custom-folders-remove-text,.imagify-custom-folders-remove:hover .imagify-custom-folders-remove-text{max-width:6em;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.imagify-settings .progress{height:8px;margin-top:1em;background:#343a49}.imagify-settings .bar{position:relative;width:1px;height:8px;background:#46b1ce;-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}.imagify-settings .percent{position:absolute;top:6px;right:0;padding:0 5px;line-height:1.85;font-size:14px;font-weight:700;color:#40b1d0}.dashicons.rotate{-webkit-animation:icon-rotate 2.6s infinite linear;animation:icon-rotate 2.6s infinite linear}@-webkit-keyframes icon-rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes icon-rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.imagify-add-custom-folder+.imagify-loader{display:none;vertical-align:middle}.imagify-add-custom-folder[disabled]+.imagify-loader{display:inline-block}.imagify-folders-information{position:relative;margin:-5px 0 20px 0;padding:10px 10px 10px 40px;text-align:left;background:#f2f2f2}.imagify-folders-information i{position:absolute;left:10px;top:50%;margin-top:-10px}.imagify-folders-tree{margin:0;text-align:left}.imagify-folders-tree li{clear:left}.imagify-folders-tree .imagify-folder{-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;width:48px;z-index:2;float:left;margin-top:-3px;padding:0 8px 0 0;border:0;background:0 0!important;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-folders-tree span.imagify-folder{padding-left:1.5px}.imagify-folders-tree .imagify-folder:before{content:"+";display:inline-block;width:13px;height:21px;font-size:1.5em;vertical-align:.15em}.imagify-folders-tree span.imagify-folder:before{content:''}.imagify-folders-tree .imagify-folder-icon path{-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-folders-tree .imagify-is-open .imagify-folder-icon path{stroke:#7A8996}.imagify-folders-tree .imagify-is-open.imagify-folder:before{content:"-";color:#7a8996}.imagify-folders-tree .imagify-is-open~label{color:#7a8996}.imagify-folders-tree .imagify-folder .imagify-loader,.imagify-folders-tree .imagify-folder.imagify-loading:before{display:none}.imagify-folders-tree .imagify-folder.imagify-loading .imagify-loader{display:inline-block;width:13px;height:21px;font-size:1.5em;vertical-align:.15em}.imagify-folders-tree .imagify-folder.imagify-loading .imagify-loader img{display:inline-block;width:100%;height:auto;vertical-align:middle}.imagify-folders-tree button.imagify-folder:focus,.imagify-folders-tree button.imagify-folder:focus path,.imagify-folders-tree button.imagify-folder:hover,.imagify-folders-tree button.imagify-folder:hover path{color:#3694ae;stroke:#3694AE}.imagify-folders-tree .imagify-folder.disabled,.imagify-folders-tree .imagify-folder:disabled{color:#7f7f7f}.imagify-swal-content .imagify-folders-tree label{position:relative;display:block;width:100%;padding:3px 0;font-size:15px;font-weight:500;vertical-align:top;-webkit-transition:all .475s;-o-transition:all .475s;transition:all .475s}.imagify-folders-tree input:focus+label,.imagify-swal-content .imagify-folders-tree label:hover{background:#f4f7f9}.imagify-folders-tree .imagify-folder-already-selected input:focus+label,.imagify-folders-tree .imagify-folder-already-selected label,.imagify-folders-tree .imagify-folder-already-selected label:hover{background:#40b1d0;color:#fff;border-radius:3px;cursor:default}.imagify-folders-tree .imagify-folder-already-selected button,.imagify-folders-tree .imagify-folder-already-selected button path{color:#fff;stroke:#FFF;cursor:default}.imagify-folders-tree .imagify-folder-already-selected button:focus path,.imagify-folders-tree .imagify-folder-already-selected button:hover path{stroke:#FFF}.imagify-folders-tree .imagify-folder-already-selected button:before{content:''}.imagify-add-ed-folder{position:absolute;top:0;bottom:0;right:0;font-size:11px;text-transform:uppercase;letter-spacing:.02em;word-spacing:0.02em;color:#3694ae;background:#f4f7f9;opacity:0;-webkit-transform:translateX(15px);-ms-transform:translateX(15px);transform:translateX(15px);-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-folder-already-selected .imagify-add-ed-folder,input:checked+label .imagify-add-ed-folder,input:focus+label .imagify-add-ed-folder,label:hover .imagify-add-ed-folder{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}input:checked+label .imagify-add-ed-folder{background:#fff}input:checked+label:hover .imagify-add-ed-folder,input:checked:focus+label .imagify-add-ed-folder{background:#f4f7f9}.imagify-folder-already-selected .imagify-add-ed-folder{background:#40b1d0;color:#fff}.imagify-fake-checkbox{position:relative;display:inline-block;width:14px;height:14px;margin:3.5px 15px 0 5px;border:1.5px solid #3694ae;border-radius:3px;vertical-align:-4px}.imagify-fake-checkbox:after{position:absolute;left:1px;top:0;content:"✓";color:#3694ae;font-size:14px;line-height:.9;font-style:normal;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:all .475s;-o-transition:all .475s;transition:all .475s}.imagify-folder-already-selected .imagify-fake-checkbox:after,input:checked+label .imagify-fake-checkbox:after{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.imagify-folder-already-selected .imagify-fake-checkbox{border-color:#40b1d0}.imagify-folder-already-selected .imagify-fake-checkbox:after{color:#fff}.imagify-folders-sub-tree{position:relative;margin-left:.75em;padding-top:.6em;padding-left:1em;border-left:1px dotted rgba(98,110,123,.3)}.imagify-folders-sub-tree li{position:relative;margin-bottom:4px}.imagify-folders-sub-tree li:before{content:"";position:absolute;top:12px;left:-1em;height:1px;width:.9em;border-top:1px dotted rgba(98,110,123,.3)}.imagify-folders-sub-tree li:last-child:after{content:"";position:absolute;left:-1.1em;bottom:0;height:11px;width:3px;background:#fff}.imagify-empty-folder{margin-top:-.5em}.imagify-empty-folder em{font-size:12px;font-weight:500;color:#a2afbc}@media (max-width:782px){.imagify-settings.imagify-have-rocket{margin-right:10px}.imagify-visual-label,label+.imagify-info{max-width:calc(100% - 65px);padding-right:0}.imagify-options-title{font-size:22px}.imagify-user-plan-label{margin-right:-5px}.imagify-col.imagify-main{width:100%;padding-right:10px}.imagify-col+.imagify-col{padding:0 10px 0 0}.imagify-no-api-key .imagify-api-line input[type=text]{margin-left:0}}@media (max-width:513px){.imagify-setting-optim-level .imagify-visual-comparison-text{margin-top:20px}}
assets/css/pricing-modal.min.css CHANGED
@@ -1 +1 @@
1
- .imagify-border-styled,.imagify-flex-table,.imagify-modal-cols,.imagify-offer-header,.imagify-payment-modal .imagify-modal-content,.imagify-tabs{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.imagify-border-styled,.imagify-modal-cols{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-payment-modal{text-align:center;color:#7A8996}.imagify-payment-modal *{-webkit-box-sizing:border-box;box-sizing:border-box}.imagify-modal-loader{position:absolute;top:0;left:0;right:0;bottom:0;background:url(../images/loader-balls.svg) center no-repeat #fff;z-index:10}.imagify-payment-modal .imagify-modal-content{width:980px;max-width:100%;min-width:925px;padding:0}.imagify-modal-content.imagify-iframe-viewing{width:980px;height:672px;overflow:hidden}.imagify-iframe-viewing #imagify-payment-process-view{width:980px;height:668px}.imagify-payment-modal .imagify-modal-main{width:70%}.imagify-iframe-viewing .imagify-modal-main{width:auto}.imagify-payment-modal .imagify-modal-content.imagify-success-viewing{min-width:auto;width:450px;min-height:300px}.imagify-success-viewing .imagify-modal-main{width:100%}.imagify-payment-modal .imagify-modal-sidebar{width:30%;padding:15px 20px;background:#1F2332;color:#FFF}.imagify-modal-content.imagify-iframe-viewing .imagify-modal-sidebar,.imagify-modal-content.imagify-success-viewing .imagify-modal-sidebar{display:none}.imagify-modal-section{padding:0 25px}.imagify-modal-section.section-gray{margin:0 0 1em;padding:10px 25px 15px;background:#F6F7FB}.imagify-tabs-contents .section-gray{padding:8px 25px 10px}.imagify-modal-section .imagify-modal-title:first-child{margin-top:1em;margin-bottom:1.5em}.imagify-modal-section.section-gray .imagify-modal-title{margin-top:.5em;margin-bottom:.5em}.imagify-modal-title{font-size:1.8em}.imagify-modal-title .imagify-inner-sub-title{display:block;font-size:.56em}.imagify-analyzing .imagify-numbers-calc,.imagify-modal-section .imagify-loader,.imagify-modal-section.imagify-analyzing .imagify-modal-cols,.imagify-numbers-notcalc{display:none}.imagify-analyzing .imagify-numbers-notcalc,.imagify-modal-section.imagify-analyzing .imagify-loader{display:block}.imagify-modal-section .imagify-loader{margin:2em auto}.imagify-border-styled{width:200px;margin:0 auto;color:#8BC34A;font-weight:700;font-size:.925em}.imagify-big-number,.imagify-payment-modal strong{font-weight:700;color:#4A4A4A}.imagify-border-styled:after,.imagify-border-styled:before{content:"";height:1px;background:rgba(0,0,0,.1);-ms-flex-preferred-size:40px;flex-basis:40px}.imagify-border-styled:before{margin-right:5px}.imagify-border-styled:after{margin-left:5px}.imagify-big-number{font-size:3.7em;margin:-3px 0;line-height:1}.imagify-popin-message{padding:5px 15px;text-align:left}.imagify-popin-message.imagify-error p{color:#FFF}.imagify-small-options{width:300px;margin:1em auto .5em;background:#338EA6;border-radius:4px}.imagify-small-options input[type=radio]:checked+label,.imagify-small-options input[type=radio]:not(:checked)+label{padding:8px 10px;font-size:13px;color:#FFF;-webkit-box-shadow:none;box-shadow:none;border-left:0}.imagify-small-options input[type=radio]:not(:checked)+label{background:#338EA6;color:rgba(255,255,255,.4)}.imagify-small-options input[type=radio]:checked+label{background:#40B1D0}.imagify-cols:after{content:"";display:table;clear:both}.js .imagify-iframe-viewing .close-btn{display:none}.imagify-modal .imagify-cols{padding:0 20px}.imagify-payment-modal .imagify-iconed{margin:1.5em 5em 1.5em 0}.imagify-iconed{position:relative;text-align:left;padding-left:42px;margin-right:15px;font-weight:500}.imagify-iconed .dashicons,.imagify-iconed .icon{position:absolute;font-size:2em;left:0;top:2px;color:#40B1D0}.imagify-payment-modal .close-btn{top:10px;right:10px;width:24px;height:24px;padding:2px 0 0 4.5px;color:#FFF;background:#40B1D0;border-radius:50%;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-payment-modal .close-btn i{margin-left:-3.5px;margin-top:-.5px}.imagify-payment-modal .close-btn:hover{background:#F6F7FB}.imagify-offer-line{margin-top:1.5em}.imagify-offer-line+.imagify-offer-line{margin-top:.75em}.imagify-offer-header{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 0 0 15px;border-radius:4px 4px 0 0;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-offer-header.imagify-offer-header.imagify-offer-header .imagify-inline-options label:last-child{border-radius:0 4px 0 0}.imagify-offer-header .imagify-inline-options{width:auto}.imagify-offer-title{font-weight:700;margin:0}.imagify-offer-header,.imagify-offer-header .imagify-inline-options input[type=radio]:not(:checked)+label{background:#E5EBEF}.imagify-offer-onetime .imagify-offer-header{padding-top:8px;padding-bottom:8px}.imagify-offer-onetimes>div{padding-top:15px;padding-bottom:15px}.imagify-offer-header .imagify-inline-options input[type=radio]:checked+label,.imagify-offer-header .imagify-inline-options input[type=radio]:not(:checked)+label{position:relative;padding:7px 30px;font-size:1em;letter-spacing:.05em;color:inherit;-webkit-box-shadow:0 0 0;box-shadow:0 0 0;border-radius:0}.imagify-offer-header .imagify-inline-options input[type=radio]:checked+label{background:#F6F7FB}.imagify-2-free{position:absolute;bottom:100%;left:0;right:0;padding:2px 10px;margin-bottom:8px;font-size:.8em;letter-spacing:0;text-transform:none;text-align:center;color:#FFF;background:#10121A;border-radius:2px}.imagify-2-free:after{content:"";position:absolute;left:50%;bottom:-3px;margin-left:-3px;border-top:3px solid #10121A;border-left:3px solid transparent;border-right:3px solid transparent}.imagify-2-free.imagify-b-right{bottom:auto;left:100%;right:-100%;margin-bottom:0;margin-left:8px}.imagify-2-free.imagify-b-right:after{left:-3px;bottom:auto;top:50%;margin-top:-3px;margin-left:0;border-right:3px solid #10121A;border-top:3px solid transparent;border-bottom:3px solid transparent;border-left:0}.imagify-2-free.imagify-b-bottom{bottom:-100%;left:0;right:0;margin-top:8px}.imagify-2-free.imagify-b-bottom:after{top:-3px;bottom:auto;border-bottom:3px solid #10121A;border-left:3px solid transparent;border-right:3px solid transparent;border-top:0}.imagify-offer-content{text-align:left;background:#F6F7FB;border-radius:0 0 4px 4px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-offer-onetime .imagify-offer-content{padding:10px 0}div.imagify-col-checkbox{position:relative;width:25.5%;padding-top:10px;padding-bottom:7px}.imagify-col-checkbox label{display:block;padding-left:55px!important}.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked,.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked){position:absolute;top:50%;left:6px;margin:-8px 0 0}.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked+label:before,.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked)+label:before{margin:0;top:-2px;left:6px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-offer-by,.imagify-offer-size{-webkit-transition:all .275s;-o-transition:all .275s}.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked+label:after,.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked)+label:after{top:1px;left:13px}.imagify-offer-size{font-size:30px;color:#2E3243;font-weight:700;transition:all .275s}.imagify-offer-by{font-size:10px;transition:all .275s}.imagify-approx{display:none;font-size:11px;line-height:1.2;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}div.imagify-col-price{width:35%}.imagify-flex-table .imagify-price-block{padding-left:0;padding-right:0}.imagify-offer-monthlies .imagify-price-block,.imagify-offer-monthly .imagify-flex-table .imagify-price-block{padding-top:0}.imagify-flex-table .imagify-price-complement{padding-right:0;font-size:10px;font-weight:700}.imagify-price-block,.imagify-price-discount{white-space:nowrap}.imagify-price-block span,.imagify-price-discount span{display:inline-block;vertical-align:middle}.imagify-price-discount.imagify-price-discount{position:relative;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding-top:15px;font-weight:700;width:70px}.imagify-price-discount:before{content:"";position:absolute;top:25px;width:62%;height:2px;background:#2E3243;-webkit-transform:rotate(-15deg);-ms-transform:rotate(-15deg);transform:rotate(-15deg)}.imagify-offer-onetimes .imagify-price-discount:before{width:100%}.imagify-price-discount-dollar{color:#2E3243}.imagify-price-discount-number{color:#8BA6B4}.imagify-offer-selected .imagify-price-discount-number{color:#FFF}span.imagify-dollars{color:#1F2332;font-size:18px;font-weight:700;vertical-align:-2px}.imagify-offer-onetime .imagify-col-price{padding-top:0}.imagify-offer-onetime .imagify-dollars{vertical-align:-1px}.imagify-price-big,.imagify-price-mini{color:#40B1D0;font-weight:700}.imagify-price-big{font-size:36px}span.imagify-price-mini{font-size:18px;vertical-align:2px}span.imagify-price-by{font-size:10px;color:#1F2332;vertical-align:-13px;text-indent:-27px}.imagify-offer-selected,.imagify-offer-selected .imagify-checkbox.imagify-checkbox:checked+label:after,.imagify-offer-selected .imagify-checkbox.imagify-checkbox:not(:checked)+label:after,.imagify-offer-selected .imagify-col-other-actions a,.imagify-offer-selected .imagify-offer-size,.imagify-offer-selected .imagify-offer-title,.imagify-offer-selected .imagify-price-big,.imagify-offer-selected .imagify-price-complement,.imagify-offer-selected .imagify-price-mini{color:#FFF}.imagify-col-other-actions{width:18.5%;text-align:right}.imagify-col-other-actions a{font-size:11px}.imagify-offer-selected .imagify-offer-header,.imagify-offer-selected .imagify-offer-header .imagify-inline-options input[type=radio]:not(:checked)+label{background:#338EA6}.imagify-offer-selected .imagify-offer-content,.imagify-offer-selected .imagify-offer-header .imagify-inline-options input[type=radio]:checked+label{background:#40B1D0}.imagify-offer-selected .imagify-checkbox.imagify-checkbox:checked+label:before,.imagify-offer-selected .imagify-checkbox.imagify-checkbox:not(:checked)+label:before{border-color:#FFF;background:#40B1D0}.imagify-offer-selected .imagify-offer-by{color:#2E3243}.imagify-enough-free .imagify-not-enough-title,.imagify-enough-title{display:none}.imagify-enough-free .imagify-enough-title{display:block}.imagify-submit-line{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:2em 0;text-align:left}.imagify-coupon-section{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-coupon-section p{margin:0;line-height:1.3}.imagify-coupon-text{width:200px;max-width:100%;padding-right:15px}.imagify-coupon-loader{display:none}.imagify-coupon-text.checking{text-align:right}.imagify-coupon-text.checking .imagify-coupon-loader{display:inline}.imagify-coupon-text.checking label{display:none}.imagify-coupon-input{position:relative}.imagify-coupon-input input{position:relative;z-index:1}[id=imagify-coupon-validate].button-secondary{position:absolute;top:1px;right:3px;bottom:2px;-webkit-box-shadow:none;box-shadow:none;padding:4px 10px;z-index:0;-webkit-transition:-webkit-transform .275s;-o-transition:transform .275s;transition:transform .275s;transition:transform .275s,-webkit-transform .275s}.imagify-canbe-validate [id=imagify-coupon-validate]{-webkit-transform:translateX(45px);-ms-transform:translateX(45px);transform:translateX(45px)}.imagify-modal-section+.imagify-modal-promotion{margin-top:-1em}.imagify-modal-promotion{position:relative;overflow:hidden;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:15px 25px;background:#604D90;text-shadow:0 0 3px rgba(0,0,0,.3)}.imagify-modal-promotion.active{display:-webkit-box;display:-ms-flexbox;display:flex}[id=imagify-pricing-tab-onetime] .imagify-modal-promotion{margin-bottom:4em}.imagify-modal-promotion:before{content:"\f488";position:absolute;top:28px;left:8%;font-family:dashicons;font-size:90px;color:#8476A9;text-shadow:none}.imagify-modal-promotion p{position:relative;margin:.2em 0;color:#FFF}.imagify-promo-title{-ms-flex-preferred-size:100%;flex-basis:100%;text-transform:uppercase;font-size:20px;font-weight:700;letter-spacing:.125em}.imagify-until-date{-ms-flex-preferred-size:200px;flex-basis:200px;text-align:right}.imagify-until-date strong{color:#FFF}.imagify-submit-line button{font-size:16px}input.imagify-coupon-code{padding:10px;border:2px solid #7A8996;font-size:.875em;font-weight:700;border-radius:3px}.validated.imagify-coupon-section .imagify-coupon-text,.validated.imagify-coupon-section strong{color:#8BC34A}.validated.imagify-coupon-section .imagify-coupon-code{color:#8BC34A;border-color:#8BC34A}.invalid.imagify-coupon-section .imagify-coupon-text,.invalid.imagify-coupon-section strong{color:#d0021b}.invalid.imagify-coupon-section .imagify-coupon-code{color:#d0021b;border-color:#d0021b}.imagify-footer-lines{width:500px;max-width:100%;margin:2em auto 2.5em;font-size:.85em;line-height:1.5}.imagify-year-selected .imagify-switch-my .imagify-yearly{display:block}.imagify-month-selected .imagify-switch-my .imagify-yearly,.imagify-year-selected .imagify-switch-my .imagify-monthly{display:none}.imagify-month-selected .imagify-switch-my .imagify-monthly{display:block}.imagify-flex-table{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-flex-table>*{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding:7px 15px}div.imagify-col-details{width:22%;padding-left:25px}.imagify-col-details p{margin:0}.imagify-pricing-table{margin:0 20px}.imagify-pricing-table .imagify-offer-line{padding:.6em 0;border:2px solid #E8EEF0;text-align:left;border-radius:3px}.imagify-pricing-table .imagify-offer-line:first-child{margin-top:.75em}.imagify-pricing-table .imagify-offer-line.imagify-offer-selected:first-child{margin-top:1.75em}.imagify-pricing-table .imagify-offer-line+.imagify-offer-line{margin-top:-2px}.imagify-pricing-table .imagify-col-other-actions{width:20.5%}.imagify-pricing-table .imagify-approx{margin-left:0;line-height:.5;margin-bottom:1em}.imagify-pricing-table .imagify-offer-selected{-webkit-transform:scale(1.03);-ms-transform:scale(1.03);transform:scale(1.03);background:#40B1D0;border-width:0}.imagify-pricing-table .imagify-offer-selected .imagify-approx{color:#FFF}.imagify-pricing-table .imagify-button-secondary{padding:3px 20px;-webkit-box-shadow:none;box-shadow:none;text-transform:uppercase;font-size:12px;letter-spacing:.025em}.imagify-offer-selected.imagify-offer-selected .imagify-button-secondary{border:2px solid #FFF;background:#40B1D0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none!important}.imagify-offer-selected.imagify-offer-selected .imagify-button-secondary:focus,.imagify-offer-selected.imagify-offer-selected .imagify-button-secondary:hover{background:#FFF;color:#40B1D0}.imagify-col .imagify-special-needs{margin-left:25px}.imagify-special-needs strong{font-size:25px;font-weight:700;color:#40B1D0}.imagify-special-needs span{display:block;font-size:12px;margin-top:-.5em}div.imagify-col-price{position:relative}.imagify-recommend{display:none;position:absolute;left:-20px;bottom:100%;padding:0;margin-bottom:8px;color:#1F2332;font-weight:700;font-style:italic}.imagify-offer-selected .imagify-recommend,.imagify-tab a,.imagify-tab-content.imagify-current{display:block}[class*=imagify-onetime-] .imagify-recommend{left:65px;margin-bottom:20px}.imagify-recommend:before{content:"";position:absolute;top:7px;left:-35px;width:29px;height:30px;background:url(../images/icon-arrow-choice.png) 0 no-repeat;background-size:contain}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.imagify-recommend:before{background-image:url(../images/icon-arrow-choice.svg)}}.imagify-offer-line[class*=imagify-onetime-]{padding:0;margin:.3em 0 0}.imagify-offer-line.imagify-offer-line[class*=imagify-onetime-]:first-child{margin-top:2em}.imagify-offer-line[class*=imagify-onetime-]+.imagify-offer-line{margin-top:.5em}.imagify-offer-selected.imagify-offer-line[class*=imagify-onetime-]{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);border-width:2px}.imagify-offer-line[class*=imagify-onetime-] .imagify-col-details{position:relative;overflow:hidden;width:21%;background:#1F2332;color:#FFF}.imagify-offer-selected.imagify-offer-line[class*=imagify-onetime-] .imagify-col-details{background:#338EA6}.imagify-offer-line[class*=imagify-onetime-] .imagify-col-details:before{content:"";position:absolute;bottom:0;right:25px;width:75px;height:54px;background:url(../images/icon-pack.png)}.imagify-offer-line[class*=imagify-onetime-] .imagify-col-other-actions{width:30%}.imagify-offer-line[class*=imagify-onetime-] .imagify-approx,.imagify-offer-line[class*=imagify-onetime-] .imagify-offer-size{color:#FFF}.imagify-offer-line[class*=imagify-onetime-] .imagify-offer-size{font-size:24px}.imagify-offer-line[class*=imagify-onetime-] .imagify-approx{font-size:12px}.imagify-offer-line[class*=imagify-onetime-] .imagify-price-block{padding-left:10px}.imagify-offer-line[class*=imagify-onetime-] .imagify-dollars{vertical-align:middle}.imagify-offer-line[class*=imagify-onetime-] .imagify-price-big{vertical-align:-5px}.imagify-offer-line[class*=imagify-onetime-] .imagify-price-mini{vertical-align:7px}.imagify-tabs{margin-bottom:0;list-style:none;background:#E5EBEF}.imagify-modal-content .imagify-tabs{margin:1em 0 0}.imagify-tab{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:50%;margin:0;font-size:23px}.imagify-tab a{padding:15px 10px;color:inherit;text-decoration:none}.imagify-tab a:focus{-webkit-box-shadow:none;box-shadow:none;outline:0;color:#40B1D8}.imagify-tab.imagify-current a{background:#F6F7FB}.imagify-tab-content{display:none}.imagify-tab-content .imagify-modal-section:first-child{margin-top:0}.imagify-modal-sidebar-content,.imagify-payment-modal .imagify-modal-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.imagify-modal-sidebar-content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}p.imagify-modal-sidebar-title.imagify-modal-sidebar-title{margin-top:5px;padding-right:40px;font-size:18px;color:#FFF}.imagify-modal-testimony{margin-top:1em}.imagify-modal-testimony+.imagify-modal-testimony{margin-top:2em}@media (max-height:620px){.imagify-modal-testimony+.imagify-modal-testimony{display:none}}.imagify-modal-testimony-person{display:table;width:100%}.imagify-modal-testimony-person>*{display:table-cell;vertical-align:middle}.imagify-modal-avatar{width:114px;line-height:0}.imagify-modal-avatar img{border:2px solid #FFF;border-radius:50%;width:96px;height:96px}.imagify-modal-identity a{text-decoration:none;font-weight:700}.imagify-modal-identity a:first-child{font-size:13px}.imagify-modal-identity a:first-child+a{display:block;font-size:10px;color:#7A8996}.imagify-modal-testimony-content.imagify-modal-testimony-content p{font-size:13px;font-style:italic;line-height:1.7;color:#7A8996}.imagify-modal-sidebar-trust{margin-top:auto;padding-top:1.5em}.imagify-modal-sidebar-trust p{margin:0;font-weight:700;font-size:12px;line-height:1.7}.imagify-modal-sidebar-trust p img{margin-right:3px;vertical-align:-2px}.imagify-modal-sidebar-trust p+p{font-size:11px}.imagify-cart{text-align:left}.imagify-cart .imagify-cart-list{border-top:1px solid rgba(122,137,150,.2);border-bottom:1px solid rgba(122,137,150,.2)}.imagify-cart .imagify-cart-label{margin-bottom:.5em;font-size:10px;color:#2E3243}.imagify-cart-list p{margin:0;font-weight:700}.imagify-cart-item{margin:.4em 0}.imagify-cart .imagify-cart-suggestion{margin-top:-.3em}.imagify-cart-suggestion a,.imagify-cl-description p{font-size:10px}.imagify-remove-from-cart{border:0;padding:0;width:14px;height:14px;line-height:13px;border-radius:50%;background:#40B1D0;cursor:pointer;-webkit-transition:background .3s;-o-transition:background .3s;transition:background .3s}.imagify-remove-from-cart i:before{position:relative;top:-6px;left:-3px;font-size:13px;color:#FFF}.imagify-remove-from-cart:focus,.imagify-remove-from-cart:hover{background:#D0021B}.imagify-cart .imagify-cl-remove{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:45px}.imagify-cart .imagify-cl-name{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:200px}.imagify-cart .imagify-cl-description{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start;padding-top:10px}.imagify-cart .imagify-cl-price{text-align:right}#imagify-payment-iframe{width:980px;height:672px;background:url(../images/loader-balls.svg) 50% 50% no-repeat #f6f7fb}.imagify-success-view{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%}.imagify-success-view p{font-weight:700;font-size:16px}.imagify-cart-emptied-item{margin:.3em auto;padding:6px 20px;background:#E6EBEF;border-radius:20px}.imagify-cart-emptied-item.imagify-cart-emptied-item p{font-weight:700}.imagify-cart-emptied-item a{color:#40b1d0;float:right;font-weight:700}@media (max-width:782px){.imagify-payment-modal .imagify-modal-content,.imagify-submit-line{-ms-flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical}.imagify-payment-modal .imagify-modal-content{width:90%;min-width:auto;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-payment-modal .imagify-modal-main,.imagify-payment-modal .imagify-modal-sidebar{width:100%}.imagify-modal-section.section-gray{padding:10px 10px 15px}.imagify-modal-section{padding:0 10px}.imagify-submit-line{flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-coupon-section,.imagify-modal-cols{-ms-flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical}.imagify-coupon-section{flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.imagify-coupon-section .imagify-coupon-text{text-align:center;width:100%;padding:0;margin-bottom:20px}.imagify-modal-cols{flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-col{padding:0;float:none;width:100%}.imagify-payment-modal .imagify-iconed{margin:1.5em auto;max-width:260px}.imagify-offer-header{padding:0}.imagify-offer-header .imagify-inline-options input[type=radio]:checked+label,.imagify-offer-header .imagify-inline-options input[type=radio]:not(:checked)+label{padding:7px 15px}.imagify-offer-header .imagify-offer-title.imagify-switch-my .imagify-monthly,.imagify-offer-header .imagify-offer-title.imagify-switch-my .imagify-yearly{padding:10px 5px;font-size:12px}.imagify-offer-size{font-size:18px}.imagify-col-other-actions{padding:10px;text-align:center}.imagify-2-free{padding:2px 5px}.imagify-2-free.imagify-b-right{position:absolute;bottom:100%;left:0;right:0;padding:2px 5px;margin-bottom:0;margin-left:0;font-size:.8em;letter-spacing:0;text-transform:none;text-align:center;color:#FFF;background:#10121A;border-radius:2px}.imagify-2-free.imagify-b-right:after{content:"";position:absolute;left:50%;top:unset;bottom:-6px;margin-left:-3px;border-top:3px solid #10121A;border-left:3px solid transparent;border-right:3px solid transparent}div.imagify-col-price{-ms-flex-direction:column;flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-flex-table .imagify-price-complement{padding:5px 0 0;margin:0;text-align:center}div.imagify-col-details{padding:10px 0 10px 10px}.imagify-pricing-table .imagify-col-other-actions{padding:0 10px 0 0}.imagify-pricing-table .imagify-button-secondary{font-size:12px;white-space:normal;line-height:14px;padding:10px}.imagify-price-big{font-size:24px}span.imagify-price-mini{font-size:12px}.imagify-col-checkbox label{padding-left:30px!important}.medium.imagify-checkbox:checked+label:before,.medium.imagify-checkbox:not(:checked)+label:before{width:15px;height:15px}.imagify-offer-monthlies .imagify-price-block,.imagify-offer-monthly .imagify-flex-table .imagify-price-block,div.imagify-col-checkbox{padding:0}.imagify-pricing-table{margin:0 .5em}.imagify-payment-modal .close-btn{top:5px;right:5px}.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked+label:after,.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked)+label:after{top:-1px;left:10px}}
1
+ .imagify-border-styled,.imagify-flex-table,.imagify-modal-cols,.imagify-offer-header,.imagify-payment-modal .imagify-modal-content,.imagify-tabs{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.imagify-border-styled,.imagify-modal-cols{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-payment-modal{text-align:center;color:#7a8996}.imagify-payment-modal *{-webkit-box-sizing:border-box;box-sizing:border-box}.imagify-modal-loader{position:absolute;top:0;left:0;right:0;bottom:0;background:#fff url('../images/loader-balls.svg') center no-repeat;z-index:10}.imagify-payment-modal .imagify-modal-content{width:980px;max-width:100%;min-width:925px;padding:0}.imagify-modal-content.imagify-iframe-viewing{width:980px;height:672px;overflow:hidden}.imagify-iframe-viewing #imagify-payment-process-view{width:980px;height:668px}.imagify-payment-modal .imagify-modal-main{width:70%}.imagify-iframe-viewing .imagify-modal-main{width:auto}.imagify-payment-modal .imagify-modal-content.imagify-success-viewing{min-width:auto;width:450px;min-height:300px}.imagify-success-viewing .imagify-modal-main{width:100%}.imagify-payment-modal .imagify-modal-sidebar{width:30%;padding:15px 20px;background:#1f2332;color:#fff}.imagify-modal-content.imagify-iframe-viewing .imagify-modal-sidebar,.imagify-modal-content.imagify-success-viewing .imagify-modal-sidebar{display:none}.imagify-modal-section{padding:0 25px}.imagify-modal-section.section-gray{margin:0 0 1em;padding:10px 25px 15px;background:#f6f7fb}.imagify-tabs-contents .section-gray{padding:8px 25px 10px}.imagify-modal-section .imagify-modal-title:first-child{margin-top:1em;margin-bottom:1.5em}.imagify-modal-section.section-gray .imagify-modal-title{margin-top:.5em;margin-bottom:.5em}.imagify-modal-title{font-size:1.8em}.imagify-modal-title .imagify-inner-sub-title{display:block;font-size:.56em}.imagify-analyzing .imagify-numbers-calc,.imagify-modal-section .imagify-loader,.imagify-modal-section.imagify-analyzing .imagify-modal-cols,.imagify-numbers-notcalc{display:none}.imagify-analyzing .imagify-numbers-notcalc,.imagify-modal-section.imagify-analyzing .imagify-loader{display:block}.imagify-modal-section .imagify-loader{margin:2em auto}.imagify-border-styled{width:200px;margin:0 auto;color:#8bc34a;font-weight:700;font-size:.925em}.imagify-border-styled:after,.imagify-border-styled:before{content:"";height:1px;background:rgba(0,0,0,.1);-ms-flex-preferred-size:40px;flex-basis:40px}.imagify-border-styled:before{margin-right:5px}.imagify-border-styled:after{margin-left:5px}.imagify-big-number{font-size:3.7em;font-weight:700;margin:-3px 0;color:#4a4a4a;line-height:1}.imagify-payment-modal strong{font-weight:700;color:#4a4a4a}.imagify-popin-message{padding:5px 15px;text-align:left}.imagify-popin-message.imagify-error p{color:#fff}.imagify-small-options{width:300px;margin:1em auto .5em;background:#338ea6;border-radius:4px}.imagify-small-options input[type=radio]:checked+label,.imagify-small-options input[type=radio]:not(:checked)+label{padding:8px 10px;font-size:13px;color:#fff;-webkit-box-shadow:none;box-shadow:none;border-left:0}.imagify-small-options input[type=radio]:not(:checked)+label{background:#338ea6;color:rgba(255,255,255,.4)}.imagify-small-options input[type=radio]:checked+label{background:#40b1d0}.imagify-cols:after{content:"";display:table;clear:both}.js .imagify-iframe-viewing .close-btn{display:none}.imagify-modal .imagify-cols{padding:0 20px}.imagify-payment-modal .imagify-iconed{margin:1.5em 5em 1.5em 0}.imagify-iconed{position:relative;text-align:left;padding-left:42px;margin-right:15px;font-weight:500}.imagify-iconed .dashicons,.imagify-iconed .icon{position:absolute;font-size:2em;left:0;top:2px;color:#40b1d0}.imagify-payment-modal .close-btn{top:10px;right:10px;width:24px;height:24px;padding:2px 0 0 4.5px;color:#fff;background:#40b1d0;border-radius:50%;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-payment-modal .close-btn i{margin-left:-3.5px;margin-top:-.5px}.imagify-payment-modal .close-btn:hover{background:#f6f7fb}.imagify-offer-line{margin-top:1.5em}.imagify-offer-line+.imagify-offer-line{margin-top:.75em}.imagify-offer-header{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 0 0 15px;border-radius:4px 4px 0 0;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-offer-header.imagify-offer-header.imagify-offer-header .imagify-inline-options label:last-child{border-radius:0 4px 0 0}.imagify-offer-header .imagify-inline-options{width:auto}.imagify-offer-title{font-weight:700;margin:0}.imagify-offer-header,.imagify-offer-header .imagify-inline-options input[type=radio]:not(:checked)+label{background:#e5ebef}.imagify-offer-onetime .imagify-offer-header{padding-top:8px;padding-bottom:8px}.imagify-offer-onetimes>div{padding-top:15px;padding-bottom:15px}.imagify-offer-header .imagify-inline-options input[type=radio]:checked+label,.imagify-offer-header .imagify-inline-options input[type=radio]:not(:checked)+label{position:relative;padding:7px 30px;font-size:1em;letter-spacing:.05em;color:inherit;-webkit-box-shadow:0 0 0;box-shadow:0 0 0;border-radius:0}.imagify-offer-header .imagify-inline-options input[type=radio]:checked+label{background:#f6f7fb}.imagify-2-free{position:absolute;bottom:100%;left:0;right:0;padding:2px 10px;margin-bottom:8px;font-size:.8em;letter-spacing:0;text-transform:none;text-align:center;color:#fff;background:#10121a;border-radius:2px}.imagify-2-free:after{content:"";position:absolute;left:50%;bottom:-3px;margin-left:-3px;border-top:3px solid #10121a;border-left:3px solid transparent;border-right:3px solid transparent}.imagify-2-free.imagify-b-right{bottom:auto;left:100%;right:-100%;margin-bottom:0;margin-left:8px}.imagify-2-free.imagify-b-right:after{left:-3px;bottom:auto;top:50%;margin-top:-3px;margin-left:0;border-right:3px solid #10121a;border-top:3px solid transparent;border-bottom:3px solid transparent;border-left:0}.imagify-2-free.imagify-b-bottom{bottom:-100%;left:0;right:0;margin-top:8px}.imagify-2-free.imagify-b-bottom:after{top:-3px;bottom:auto;border-bottom:3px solid #10121a;border-left:3px solid transparent;border-right:3px solid transparent;border-top:0}.imagify-offer-content{text-align:left;background:#f6f7fb;border-radius:0 0 4px 4px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-offer-onetime .imagify-offer-content{padding:10px 0}div.imagify-col-checkbox{position:relative;width:25.5%;padding-top:10px;padding-bottom:7px}.imagify-col-checkbox label{display:block}.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked,.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked){position:absolute;top:50%;left:6px;margin:-8px 0 0 0}.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked+label:before,.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked)+label:before{margin:0;top:-2px;left:6px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked+label:after,.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked)+label:after{top:1px;left:13px}.imagify-col-checkbox label{padding-left:55px!important}.imagify-offer-size{font-size:30px;color:#2e3243;font-weight:700;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-offer-by{font-size:10px;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}.imagify-approx{display:none;font-size:11px;line-height:1.2;-webkit-transition:all .275s;-o-transition:all .275s;transition:all .275s}div.imagify-col-price{width:35%}.imagify-flex-table .imagify-price-block{padding-left:0;padding-right:0}.imagify-offer-monthlies .imagify-price-block,.imagify-offer-monthly .imagify-flex-table .imagify-price-block{padding-top:0}.imagify-flex-table .imagify-price-complement{padding-right:0;font-size:10px;font-weight:700}.imagify-price-block,.imagify-price-discount{white-space:nowrap}.imagify-price-block span,.imagify-price-discount span{display:inline-block;vertical-align:middle}.imagify-price-discount.imagify-price-discount{position:relative;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding-top:15px;font-weight:700;width:70px}.imagify-price-discount:before{content:"";position:absolute;top:25px;width:62%;height:2px;background:#2e3243;-webkit-transform:rotate(-15deg);-ms-transform:rotate(-15deg);transform:rotate(-15deg)}.imagify-offer-onetimes .imagify-price-discount:before{width:100%}.imagify-price-discount-dollar{color:#2e3243}.imagify-price-discount-number{color:#8ba6b4}.imagify-offer-selected .imagify-price-discount-number{color:#fff}span.imagify-dollars{color:#1f2332;font-size:18px;font-weight:700;vertical-align:-2px}.imagify-offer-onetime .imagify-col-price{padding-top:0}.imagify-offer-onetime .imagify-dollars{vertical-align:-1px}.imagify-price-big,.imagify-price-mini{color:#40b1d0;font-weight:700}.imagify-price-big{font-size:36px}span.imagify-price-mini{font-size:18px;vertical-align:2px}span.imagify-price-by{font-size:10px;color:#1f2332;vertical-align:-13px;text-indent:-27px}.imagify-col-other-actions{width:18.5%;text-align:right}.imagify-col-other-actions a{font-size:11px}.imagify-offer-selected,.imagify-offer-selected .imagify-col-other-actions a,.imagify-offer-selected .imagify-offer-size,.imagify-offer-selected .imagify-offer-title,.imagify-offer-selected .imagify-price-big,.imagify-offer-selected .imagify-price-complement,.imagify-offer-selected .imagify-price-mini{color:#fff}.imagify-offer-selected .imagify-offer-header,.imagify-offer-selected .imagify-offer-header .imagify-inline-options input[type=radio]:not(:checked)+label{background:#338ea6}.imagify-offer-selected .imagify-offer-header .imagify-inline-options input[type=radio]:checked+label{background:#40b1d0}.imagify-offer-selected .imagify-offer-content{background:#40b1d0}.imagify-offer-selected .imagify-checkbox.imagify-checkbox:checked+label:before,.imagify-offer-selected .imagify-checkbox.imagify-checkbox:not(:checked)+label:before{border-color:#fff;background:#40b1d0}.imagify-offer-selected .imagify-checkbox.imagify-checkbox:checked+label:after,.imagify-offer-selected .imagify-checkbox.imagify-checkbox:not(:checked)+label:after{color:#fff}.imagify-offer-selected .imagify-offer-by{color:#2e3243}.imagify-enough-title{display:none}.imagify-enough-free .imagify-not-enough-title{display:none}.imagify-enough-free .imagify-enough-title{display:block}.imagify-submit-line{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:2em 0;text-align:left}.imagify-coupon-section{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-coupon-section p{margin:0;line-height:1.3}.imagify-coupon-text{width:200px;max-width:100%;padding-right:15px}.imagify-coupon-loader{display:none}.imagify-coupon-text.checking{text-align:right}.imagify-coupon-text.checking .imagify-coupon-loader{display:inline}.imagify-coupon-text.checking label{display:none}.imagify-coupon-input{position:relative}.imagify-coupon-input input{position:relative;z-index:1}[id=imagify-coupon-validate].button-secondary{position:absolute;top:1px;right:3px;bottom:2px;-webkit-box-shadow:none;box-shadow:none;padding:4px 10px;z-index:0;-webkit-transition:-webkit-transform .275s;transition:-webkit-transform .275s;-o-transition:transform .275s;transition:transform .275s;transition:transform .275s,-webkit-transform .275s}.imagify-canbe-validate [id=imagify-coupon-validate]{-webkit-transform:translateX(45px);-ms-transform:translateX(45px);transform:translateX(45px)}.imagify-modal-section+.imagify-modal-promotion{margin-top:-1em}.imagify-modal-promotion{position:relative;overflow:hidden;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:15px 25px;background:#604d90;text-shadow:0 0 3px rgba(0,0,0,.3)}.imagify-modal-promotion.active{display:-webkit-box;display:-ms-flexbox;display:flex}[id=imagify-pricing-tab-onetime] .imagify-modal-promotion{margin-bottom:4em}.imagify-modal-promotion:before{content:"\f488";position:absolute;top:28px;left:8%;font-family:dashicons;font-size:90px;color:#8476a9;text-shadow:none}.imagify-modal-promotion p{position:relative;margin:.2em 0;color:#fff}.imagify-promo-title{-ms-flex-preferred-size:100%;flex-basis:100%;text-transform:uppercase;font-size:20px;font-weight:700;letter-spacing:.125em}.imagify-until-date{-ms-flex-preferred-size:200px;flex-basis:200px;text-align:right}.imagify-until-date strong{color:#fff}.imagify-submit-line button{font-size:16px}input.imagify-coupon-code{padding:10px;border:2px solid #7a8996;font-size:.875em;font-weight:700;border-radius:3px}.validated.imagify-coupon-section .imagify-coupon-text,.validated.imagify-coupon-section strong{color:#8bc34a}.validated.imagify-coupon-section .imagify-coupon-code{color:#8bc34a;border-color:#8bc34a}.invalid.imagify-coupon-section .imagify-coupon-text,.invalid.imagify-coupon-section strong{color:#d0021b}.invalid.imagify-coupon-section .imagify-coupon-code{color:#d0021b;border-color:#d0021b}.imagify-footer-lines{width:500px;max-width:100%;margin:2em auto 2.5em;font-size:.85em;line-height:1.5}.imagify-year-selected .imagify-switch-my .imagify-yearly{display:block}.imagify-year-selected .imagify-switch-my .imagify-monthly{display:none}.imagify-month-selected .imagify-switch-my .imagify-yearly{display:none}.imagify-month-selected .imagify-switch-my .imagify-monthly{display:block}.imagify-flex-table{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-flex-table>*{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding:7px 15px}div.imagify-col-details{width:22%;padding-left:25px}.imagify-col-details p{margin:0}.imagify-pricing-table{margin:0 20px}.imagify-pricing-table .imagify-offer-line{padding:.6em 0;border:2px solid #e8eef0;text-align:left;border-radius:3px}.imagify-pricing-table .imagify-offer-line:first-child{margin-top:.75em}.imagify-pricing-table .imagify-offer-line.imagify-offer-selected:first-child{margin-top:1.75em}.imagify-pricing-table .imagify-offer-line+.imagify-offer-line{margin-top:-2px}.imagify-pricing-table .imagify-col-other-actions{width:20.5%}.imagify-pricing-table .imagify-approx{margin-left:0;line-height:.5;margin-bottom:1em}.imagify-pricing-table .imagify-offer-selected{-webkit-transform:scale(1.03);-ms-transform:scale(1.03);transform:scale(1.03);background:#40b1d0;border-width:0}.imagify-pricing-table .imagify-offer-selected .imagify-approx{color:#fff}.imagify-pricing-table .imagify-button-secondary{padding:3px 20px;-webkit-box-shadow:none;box-shadow:none;text-transform:uppercase;font-size:12px;letter-spacing:.025em}.imagify-offer-selected.imagify-offer-selected .imagify-button-secondary{border:2px solid #fff;background:#40b1d0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none!important}.imagify-offer-selected.imagify-offer-selected .imagify-button-secondary:focus,.imagify-offer-selected.imagify-offer-selected .imagify-button-secondary:hover{background:#fff;color:#40b1d0}.imagify-col .imagify-special-needs{margin-left:25px}.imagify-special-needs strong{font-size:25px;font-weight:700;color:#40b1d0}.imagify-special-needs span{display:block;font-size:12px;margin-top:-.5em}div.imagify-col-price{position:relative}.imagify-recommend{display:none;position:absolute;left:-20px;bottom:100%;padding:0;margin-bottom:8px;color:#1f2332;font-weight:700;font-style:italic}.imagify-offer-selected .imagify-recommend{display:block}[class*=imagify-onetime-] .imagify-recommend{left:65px;margin-bottom:20px}.imagify-recommend:before{content:"";position:absolute;top:7px;left:-35px;width:29px;height:30px;background:url("../images/icon-arrow-choice.png") scroll 0 no-repeat;background-size:contain}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.imagify-recommend:before{background-image:url("../images/icon-arrow-choice.svg")}}.imagify-offer-line[class*=imagify-onetime-]{padding:0;margin:.3em 0 0}.imagify-offer-line.imagify-offer-line[class*=imagify-onetime-]:first-child{margin-top:2em}.imagify-offer-line[class*=imagify-onetime-]+.imagify-offer-line{margin-top:.5em}.imagify-offer-selected.imagify-offer-line[class*=imagify-onetime-]{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);border-width:2px}.imagify-offer-line[class*=imagify-onetime-] .imagify-col-details{position:relative;overflow:hidden;width:21%;background:#1f2332;color:#fff}.imagify-offer-selected.imagify-offer-line[class*=imagify-onetime-] .imagify-col-details{background:#338ea6}.imagify-offer-line[class*=imagify-onetime-] .imagify-col-details:before{content:"";position:absolute;bottom:0;right:25px;width:75px;height:54px;background:url("../images/icon-pack.png")}.imagify-offer-line[class*=imagify-onetime-] .imagify-col-other-actions{width:30%}.imagify-offer-line[class*=imagify-onetime-] .imagify-approx,.imagify-offer-line[class*=imagify-onetime-] .imagify-offer-size{color:#fff}.imagify-offer-line[class*=imagify-onetime-] .imagify-offer-size{font-size:24px}.imagify-offer-line[class*=imagify-onetime-] .imagify-approx{font-size:12px}.imagify-offer-line[class*=imagify-onetime-] .imagify-price-block{padding-left:10px}.imagify-offer-line[class*=imagify-onetime-] .imagify-dollars{vertical-align:middle}.imagify-offer-line[class*=imagify-onetime-] .imagify-price-big{vertical-align:-5px}.imagify-offer-line[class*=imagify-onetime-] .imagify-price-mini{vertical-align:7px}.imagify-tabs{margin-bottom:0;list-style:none;background:#e5ebef}.imagify-modal-content .imagify-tabs{margin:1em 0 0}.imagify-tab{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:50%;margin:0;font-size:23px}.imagify-tab a{display:block;padding:15px 10px;color:inherit;text-decoration:none}.imagify-tab a:focus{-webkit-box-shadow:none;box-shadow:none;outline:0;color:#40b1d8}.imagify-tab.imagify-current a{background:#f6f7fb}.imagify-tab-content.imagify-current{display:block}.imagify-tab-content{display:none}.imagify-tab-content .imagify-modal-section:first-child{margin-top:0}.imagify-modal-sidebar-content,.imagify-payment-modal .imagify-modal-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.imagify-modal-sidebar-content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}p.imagify-modal-sidebar-title.imagify-modal-sidebar-title{margin-top:5px;padding-right:40px;font-size:18px;color:#fff}.imagify-modal-testimony{margin-top:1em}.imagify-modal-testimony+.imagify-modal-testimony{margin-top:2em}@media (max-height:620px){.imagify-modal-testimony+.imagify-modal-testimony{display:none}}.imagify-modal-testimony-person{display:table;width:100%}.imagify-modal-testimony-person>*{display:table-cell;vertical-align:middle}.imagify-modal-avatar{width:114px;line-height:0}.imagify-modal-avatar img{border:2px solid #fff;border-radius:50%;width:96px;height:96px}.imagify-modal-identity a{text-decoration:none;font-weight:700}.imagify-modal-identity a:first-child{font-size:13px}.imagify-modal-identity a:first-child+a{display:block;font-size:10px;color:#7a8996}.imagify-modal-testimony-content.imagify-modal-testimony-content p{font-size:13px;font-style:italic;line-height:1.7;color:#7a8996}.imagify-modal-sidebar-trust{margin-top:auto;padding-top:1.5em}.imagify-modal-sidebar-trust p{margin:0;font-weight:700;font-size:12px;line-height:1.7}.imagify-modal-sidebar-trust p img{margin-right:3px;vertical-align:-2px}.imagify-modal-sidebar-trust p+p{font-size:11px}.imagify-cart{text-align:left}.imagify-cart .imagify-cart-list{border-top:1px solid rgba(122,137,150,.2);border-bottom:1px solid rgba(122,137,150,.2)}.imagify-cart .imagify-cart-label{margin-bottom:.5em;font-size:10px;color:#2e3243}.imagify-cart-list p{margin:0;font-weight:700}.imagify-cart-item{margin:.4em 0}.imagify-cart .imagify-cart-suggestion{margin-top:-.3em}.imagify-cart-suggestion a,.imagify-cl-description p{font-size:10px}.imagify-remove-from-cart{border:0;padding:0;width:14px;height:14px;line-height:13px;border-radius:50%;background:#40b1d0;cursor:pointer;-webkit-transition:background .3s;-o-transition:background .3s;transition:background .3s}.imagify-remove-from-cart i:before{position:relative;top:-6px;left:-3px;font-size:13px;color:#fff}.imagify-remove-from-cart:focus,.imagify-remove-from-cart:hover{background:#d0021b}.imagify-cart .imagify-cl-remove{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:45px}.imagify-cart .imagify-cl-name{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:200px}.imagify-cart .imagify-cl-description{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start;padding-top:10px}.imagify-cart .imagify-cl-price{text-align:right}#imagify-payment-iframe{width:980px;height:672px;background:#f6f7fb url(../images/loader-balls.svg) 50% 50% no-repeat}.imagify-success-view{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%}.imagify-success-view p{font-weight:700;font-size:16px}.imagify-cart-emptied-item{margin:.3em auto;padding:6px 20px;background:#e6ebef;border-radius:20px}.imagify-cart-emptied-item.imagify-cart-emptied-item p{font-weight:700}.imagify-cart-emptied-item a{color:#40b1d0;float:right;font-weight:700}@media (max-width:782px){.imagify-payment-modal .imagify-modal-content{width:90%;min-width:auto;-ms-flex-direction:column;flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-payment-modal .imagify-modal-main{width:100%}.imagify-payment-modal .imagify-modal-sidebar{width:100%}.imagify-modal-section.section-gray{padding:10px 10px 15px}.imagify-modal-section{padding:0 10px}.imagify-submit-line{-ms-flex-direction:column;flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-coupon-section{-ms-flex-direction:column;flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.imagify-coupon-section .imagify-coupon-text{text-align:center;width:100%;padding:0;margin-bottom:20px}.imagify-modal-cols{-ms-flex-direction:column;flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-col{padding:0;float:none;width:100%}.imagify-payment-modal .imagify-iconed{margin:1.5em auto;max-width:260px}.imagify-offer-header{padding:0}.imagify-offer-header .imagify-inline-options input[type=radio]:checked+label,.imagify-offer-header .imagify-inline-options input[type=radio]:not(:checked)+label{padding:7px 15px}.imagify-offer-header .imagify-inline-options input[type=radio]:checked+label{padding:7px 15px}.imagify-offer-header .imagify-offer-title.imagify-switch-my .imagify-monthly,.imagify-offer-header .imagify-offer-title.imagify-switch-my .imagify-yearly{padding:10px 5px;font-size:12px}.imagify-offer-size{font-size:18px}.imagify-col-other-actions{padding:10px;text-align:center}.imagify-2-free{padding:2px 5px}.imagify-2-free.imagify-b-right{position:absolute;bottom:100%;left:0;right:0;padding:2px 5px;margin-bottom:0;margin-left:0;font-size:.8em;letter-spacing:0;text-transform:none;text-align:center;color:#fff;background:#10121a;border-radius:2px}.imagify-2-free.imagify-b-right:after{content:"";position:absolute;left:50%;top:unset;bottom:-6px;margin-left:-3px;border-top:3px solid #10121a;border-left:3px solid transparent;border-right:3px solid transparent}div.imagify-col-price{-ms-flex-direction:column;flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.imagify-flex-table .imagify-price-complement{padding:5px 0 0 0;margin:0;text-align:center}div.imagify-col-details{padding:10px 0 10px 10px}.imagify-pricing-table .imagify-col-other-actions{padding:0 10px 0 0}.imagify-pricing-table .imagify-button-secondary{font-size:12px;white-space:normal;line-height:14px;padding:10px}.imagify-price-big{font-size:24px}span.imagify-price-mini{font-size:12px}.imagify-col-checkbox label{padding-left:30px!important}.medium.imagify-checkbox:checked+label:before,.medium.imagify-checkbox:not(:checked)+label:before{width:15px;height:15px}div.imagify-col-checkbox{padding:0}.imagify-offer-monthlies .imagify-price-block,.imagify-offer-monthly .imagify-flex-table .imagify-price-block{padding:0}.imagify-pricing-table{margin:0 .5em}.imagify-payment-modal .close-btn{top:5px;right:5px}.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked+label:after,.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked)+label:after{top:-1px;left:10px}}
assets/css/sweetalert-custom.css CHANGED
@@ -42,6 +42,7 @@ body[class*="_imagify"] .swal2-container.swal2-shown {
42
  .imagify-swal-error-header .swal2-title {
43
  background: #C51162;
44
  text-align: center;
 
45
  }
46
  .imagify-sweet-alert .imagify-swal-subtitle {
47
  padding: 0 32px 28px;
@@ -77,6 +78,8 @@ body[class*="_imagify"] .swal2-container.swal2-shown {
77
  background-color: #40b1d0 !important;
78
  text-shadow: none!important;
79
  box-shadow: 0 3px 0 #338ea6;
 
 
80
  }
81
  .imagify-swal-buttonswrapper a.button.imagify-button-primary:focus,
82
  .imagify-swal-buttonswrapper a.button.imagify-button-primary:hover {
42
  .imagify-swal-error-header .swal2-title {
43
  background: #C51162;
44
  text-align: center;
45
+ line-height: 1.15;
46
  }
47
  .imagify-sweet-alert .imagify-swal-subtitle {
48
  padding: 0 32px 28px;
78
  background-color: #40b1d0 !important;
79
  text-shadow: none!important;
80
  box-shadow: 0 3px 0 #338ea6;
81
+ white-space: normal;
82
+ line-height: 1.5;
83
  }
84
  .imagify-swal-buttonswrapper a.button.imagify-button-primary:focus,
85
  .imagify-swal-buttonswrapper a.button.imagify-button-primary:hover {
assets/css/sweetalert-custom.min.css CHANGED
@@ -1 +1 @@
1
- body[class*="_imagify"] .swal2-container.swal2-shown{background:rgb(31,35 ,50);background:rgba(31,35 ,50,.9);z-index:100000}.imagify-sweet-alert .swal2-modal{border-radius:2px}.imagify-sweet-alert{background:#1F2332!important}.imagify-sweet-alert .swal2-icon{margin-bottom:5px}.imagify-swal-error-header{background:#C51162!important}.imagify-swal-error-header .swal2-icon{border-color:#FFF;color:#FFF}.imagify-sweet-alert .swal2-title{margin:0;padding:28px 32px;font-size:24px;text-align:center;color:#FFF;background:#1F2332}.imagify-swal-has-subtitle .swal2-title{text-align:left}.imagify-swal-error-header .swal2-title{background:#C51162;text-align:center}.imagify-sweet-alert .imagify-swal-subtitle{padding:0 32px 28px;margin-top:-16px;font-weight:500;font-size:14px;text-align:left;color:#7A8996;background:#1F2332}.imagify-swal-error-header .imagify-swal-subtitle{color:#FFF;background:#C51162;text-align:center}.imagify-swal-buttonswrapper,.imagify-sweet-alert .swal2-buttonswrapper{margin-top:0;padding:22px;background:#F4F7F9}.imagify-swal-buttonswrapper a.button.imagify-button-primary,.imagify-sweet-alert button.swal2-styled{height:auto;padding:12px 32px;margin:10px;font-size:14px;letter-spacing:1px;text-transform:uppercase;border-radius:3px;background-color:#40b1d0!important;text-shadow:none!important;-webkit-box-shadow:0 3px 0 #338ea6;box-shadow:0 3px 0 #338ea6}.imagify-swal-buttonswrapper a.button.imagify-button-primary:focus,.imagify-swal-buttonswrapper a.button.imagify-button-primary:hover{text-shadow:none;color:#FFF}.imagify-swal-buttonswrapper a.button svg{margin-right:12px;vertical-align:-2px}.imagify-sweet-alert button.loading{border-radius:100%!important;height:40px!important;padding:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.imagify-sweet-alert button.swal2-cancel{color:#7A8996;background:#E9EFF2!important;-webkit-box-shadow:0 3px 0 rgba(31,35,50,.2);box-shadow:0 3px 0 rgba(31,35,50,.2)}.imagify-sweet-alert-signup.imagify-sweet-alert{background:#FFF!important}.imagify-sweet-alert-signup .swal2-buttonswrapper{padding:12px 22px}.swal2-success-circular-line-left,.swal2-success-circular-line-right,.swal2-success-fix{background:#1F2332!important}.imagify-sweet-alert-signup .sa-confirm-button-container{width:40%}.imagify-sweet-alert-signup .swal2-input{margin-top:0;margin-left:40px;margin-right:40px;width:calc(100% - 80px)}.imagify-sweet-alert .la-ball-fall,.imagify-sweet-alert .sa-input-error:after,.imagify-sweet-alert .sa-input-error:before{top:25%!important}.imagify-sweet-alert .swal2-buttonswrapper.swal2-loading .swal2-confirm.swal2-confirm{height:40px!important;border-radius:100%!important;border-left-width:0!important;border-right-width:0!important}.imagify-sweet-alert .swal2-content{padding:28px 32px;background:#FFF}.imagify-swal-has-subtitle .swal2-content{padding:0}.imagify-swal-content{font-size:14px;padding:28px 32px}.imagify-swal-quota .imagify-space-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:4px 32px;text-align:left;font-weight:700;color:#FFF;background:#343A49}.imagify-swal-quota .imagify-space-left p{font-size:14px}.imagify-swal-quota .imagify-space-left [class^=imagify-bar-]{width:auto;-ms-flex-preferred-size:269px;flex-basis:269px}.imagify-sweet-alert .swal2-close{color:rgba(255,255,255,.5)}
1
+ body[class*="_imagify"] .swal2-container.swal2-shown{background:rgb(31,35 ,50);background:rgba(31,35 ,50,.9);z-index:100000}.imagify-sweet-alert .swal2-modal{border-radius:2px}.imagify-sweet-alert{background:#1f2332!important}.imagify-sweet-alert .swal2-icon{margin-bottom:5px}.imagify-swal-error-header{background:#c51162!important}.imagify-swal-error-header .swal2-icon{border-color:#fff;color:#fff}.imagify-sweet-alert .swal2-title{margin:0;padding:28px 32px;font-size:24px;text-align:center;color:#fff;background:#1f2332}.imagify-swal-has-subtitle .swal2-title{text-align:left}.imagify-swal-error-header .swal2-title{background:#c51162;text-align:center;line-height:1.15}.imagify-sweet-alert .imagify-swal-subtitle{padding:0 32px 28px;margin-top:-16px;font-weight:500;font-size:14px;text-align:left;color:#7a8996;background:#1f2332}.imagify-swal-error-header .imagify-swal-subtitle{color:#fff;background:#c51162;text-align:center}.imagify-swal-buttonswrapper,.imagify-sweet-alert .swal2-buttonswrapper{margin-top:0;padding:22px;background:#f4f7f9}.imagify-swal-buttonswrapper a.button.imagify-button-primary,.imagify-sweet-alert button.swal2-styled{height:auto;padding:12px 32px;margin:10px;font-size:14px;letter-spacing:1px;text-transform:uppercase;border-radius:3px;background-color:#40b1d0!important;text-shadow:none!important;-webkit-box-shadow:0 3px 0 #338ea6;box-shadow:0 3px 0 #338ea6;white-space:normal;line-height:1.5}.imagify-swal-buttonswrapper a.button.imagify-button-primary:focus,.imagify-swal-buttonswrapper a.button.imagify-button-primary:hover{text-shadow:none;color:#fff}.imagify-swal-buttonswrapper a.button svg{margin-right:12px;vertical-align:-2px}.imagify-sweet-alert button.loading{border-radius:100%!important;height:40px!important;padding:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.imagify-sweet-alert button.swal2-cancel{color:#7a8996;background:#e9eff2!important;-webkit-box-shadow:0 3px 0 rgba(31,35,50,.2);box-shadow:0 3px 0 rgba(31,35,50,.2)}.imagify-sweet-alert-signup.imagify-sweet-alert{background:#fff!important}.imagify-sweet-alert-signup .swal2-buttonswrapper{padding:12px 22px}.swal2-success-circular-line-left,.swal2-success-circular-line-right,.swal2-success-fix{background:#1f2332!important}.imagify-sweet-alert-signup .sa-confirm-button-container{width:40%}.imagify-sweet-alert-signup .swal2-input{margin-top:0;margin-left:40px;margin-right:40px;width:calc(100% - 80px)}.imagify-sweet-alert .la-ball-fall,.imagify-sweet-alert .sa-input-error:after,.imagify-sweet-alert .sa-input-error:before{top:25%!important}.imagify-sweet-alert .swal2-buttonswrapper.swal2-loading .swal2-confirm.swal2-confirm{height:40px!important;border-radius:100%!important;border-left-width:0!important;border-right-width:0!important}.imagify-sweet-alert .swal2-content{padding:28px 32px;background:#fff}.imagify-swal-has-subtitle .swal2-content{padding:0}.imagify-swal-content{font-size:14px;padding:28px 32px}.imagify-swal-quota .imagify-space-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:4px 32px;text-align:left;font-weight:700;color:#fff;background:#343a49}.imagify-swal-quota .imagify-space-left p{font-size:14px}.imagify-swal-quota .imagify-space-left [class^=imagify-bar-]{width:auto;-ms-flex-preferred-size:269px;flex-basis:269px}.imagify-sweet-alert .swal2-close{color:rgba(255,255,255,.5)}
assets/css/sweetalert2.min.css CHANGED
@@ -1 +1 @@
1
- body.swal2-shown{overflow-y:hidden}body.swal2-iosfix{position:fixed;left:0;right:0}.swal2-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;top:0;left:0;bottom:0;right:0;padding:10px;background-color:transparent;z-index:1060}.swal2-container.swal2-fade{-webkit-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s}.swal2-container.swal2-shown{background-color:rgba(0,0,0,.4)}.swal2-modal{background-color:#fff;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;border-radius:5px;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;margin:auto;overflow-x:hidden;overflow-y:auto;display:none;position:relative;max-width:100%}.swal2-modal:focus{outline:0}.swal2-modal.swal2-loading{overflow-y:hidden}.swal2-modal .swal2-title{color:#595959;font-size:30px;text-align:center;font-weight:600;text-transform:none;position:relative;margin:0 0 .4em;padding:0;display:block;word-wrap:break-word}.swal2-modal .swal2-buttonswrapper{margin-top:15px}.swal2-modal .swal2-buttonswrapper:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4;cursor:no-drop}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-confirm{-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid transparent;border-color:transparent;width:40px;height:40px;padding:0;margin:7.5px;vertical-align:top;background-color:transparent!important;color:transparent;cursor:default;border-radius:100%;-webkit-animation:rotate-loading 1.5s linear 0s infinite normal;animation:rotate-loading 1.5s linear 0s infinite normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-cancel{margin-left:30px;margin-right:30px}.swal2-modal .swal2-buttonswrapper.swal2-loading :not(.swal2-styled).swal2-confirm::after{display:inline-block;content:'';margin-left:5px 0 15px;vertical-align:-1px;height:15px;width:15px;border:3px solid #999;-webkit-box-shadow:1px 1px 1px #fff;box-shadow:1px 1px 1px #fff;border-right-color:transparent;border-radius:50%;-webkit-animation:rotate-loading 1.5s linear 0s infinite normal;animation:rotate-loading 1.5s linear 0s infinite normal}.swal2-modal .swal2-styled{border:0;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#fff;cursor:pointer;font-size:17px;font-weight:500;margin:15px 5px 0;padding:10px 32px}.swal2-modal .swal2-image{margin:20px auto;max-width:100%}.swal2-modal .swal2-close{background:0 0;border:0;margin:0;padding:0;width:38px;height:40px;font-size:36px;line-height:40px;font-family:serif;position:absolute;top:5px;right:8px;cursor:pointer;color:#ccc;-webkit-transition:color .1s ease;-o-transition:color .1s ease;transition:color .1s ease}.swal2-modal .swal2-close:hover{color:#d55}.swal2-modal>.swal2-checkbox,.swal2-modal>.swal2-file,.swal2-modal>.swal2-input,.swal2-modal>.swal2-radio,.swal2-modal>.swal2-select,.swal2-modal>.swal2-textarea{display:none}.swal2-modal .swal2-content{font-size:18px;text-align:center;font-weight:300;position:relative;float:none;margin:0;padding:0;line-height:normal;color:#545454;word-wrap:break-word}.swal2-modal .swal2-checkbox,.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-radio,.swal2-modal .swal2-select,.swal2-modal .swal2-textarea{margin:20px auto}.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-textarea{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:18px;border-radius:3px;border:1px solid #d9d9d9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.06);box-shadow:inset 0 1px 1px rgba(0,0,0,.06);-webkit-transition:border-color box-shadow .3s;-o-transition:border-color box-shadow .3s;transition:border-color box-shadow .3s}.swal2-modal .swal2-file.swal2-inputerror,.swal2-modal .swal2-input.swal2-inputerror,.swal2-modal .swal2-textarea.swal2-inputerror{border-color:#f27474!important;-webkit-box-shadow:0 0 2px #f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-modal .swal2-file:focus,.swal2-modal .swal2-input:focus,.swal2-modal .swal2-textarea:focus{outline:0;border:1px solid #b4dbed;-webkit-box-shadow:0 0 3px #c4e6f5;box-shadow:0 0 3px #c4e6f5}.swal2-modal .swal2-file:focus::-webkit-input-placeholder,.swal2-modal .swal2-input:focus::-webkit-input-placeholder,.swal2-modal .swal2-textarea:focus::-webkit-input-placeholder{-webkit-transition:opacity .3s .03s ease;-o-transition:opacity .3s .03s ease;transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file:focus:-ms-input-placeholder,.swal2-modal .swal2-input:focus:-ms-input-placeholder,.swal2-modal .swal2-textarea:focus:-ms-input-placeholder{-webkit-transition:opacity .3s .03s ease;-o-transition:opacity .3s .03s ease;transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file:focus::-moz-placeholder,.swal2-modal .swal2-input:focus::-moz-placeholder,.swal2-modal .swal2-textarea:focus::-moz-placeholder{-webkit-transition:opacity .3s .03s ease;-o-transition:opacity .3s .03s ease;transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file:focus::-ms-input-placeholder,.swal2-modal .swal2-input:focus::-ms-input-placeholder,.swal2-modal .swal2-textarea:focus::-ms-input-placeholder{-webkit-transition:opacity .3s .03s ease;-o-transition:opacity .3s .03s ease;transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file:focus::placeholder,.swal2-modal .swal2-input:focus::placeholder,.swal2-modal .swal2-textarea:focus::placeholder{-webkit-transition:opacity .3s .03s ease;-o-transition:opacity .3s .03s ease;transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file::-webkit-input-placeholder,.swal2-modal .swal2-input::-webkit-input-placeholder,.swal2-modal .swal2-textarea::-webkit-input-placeholder{color:#e6e6e6}.swal2-modal .swal2-file:-ms-input-placeholder,.swal2-modal .swal2-input:-ms-input-placeholder,.swal2-modal .swal2-textarea:-ms-input-placeholder{color:#e6e6e6}.swal2-modal .swal2-file::-moz-placeholder,.swal2-modal .swal2-input::-moz-placeholder,.swal2-modal .swal2-textarea::-moz-placeholder{color:#e6e6e6}.swal2-modal .swal2-file::-ms-input-placeholder,.swal2-modal .swal2-input::-ms-input-placeholder,.swal2-modal .swal2-textarea::-ms-input-placeholder{color:#e6e6e6}.swal2-modal .swal2-file::placeholder,.swal2-modal .swal2-input::placeholder,.swal2-modal .swal2-textarea::placeholder{color:#e6e6e6}.swal2-modal .swal2-range input{float:left;width:80%}.swal2-modal .swal2-range output{float:right;width:20%;font-size:20px;font-weight:600;text-align:center}.swal2-modal .swal2-range input,.swal2-modal .swal2-range output{height:43px;line-height:43px;vertical-align:middle;margin:20px auto;padding:0}.swal2-modal .swal2-input{height:43px;padding:0 12px}.swal2-modal .swal2-input[type=number]{max-width:150px}.swal2-modal .swal2-file{font-size:20px}.swal2-modal .swal2-textarea{height:108px;padding:12px}.swal2-modal .swal2-select{color:#545454;font-size:inherit;padding:5px 10px;min-width:40%;max-width:100%}.swal2-modal .swal2-radio{border:0}.swal2-modal .swal2-radio label:not(:first-child){margin-left:20px}.swal2-modal .swal2-radio input,.swal2-modal .swal2-radio span{vertical-align:middle}.swal2-modal .swal2-radio input{margin:0 3px 0 0}.swal2-modal .swal2-checkbox{color:#545454}.swal2-modal .swal2-checkbox input,.swal2-modal .swal2-checkbox span{vertical-align:middle}.swal2-modal .swal2-validationerror{background-color:#f0f0f0;margin:0 -20px;overflow:hidden;padding:10px;color:gray;font-size:16px;font-weight:300;display:none}.swal2-modal .swal2-validationerror::before{content:'!';display:inline-block;width:24px;height:24px;border-radius:50%;background-color:#ea7d7d;color:#fff;line-height:24px;text-align:center;margin-right:10px}.swal2-icon.swal2-info,.swal2-icon.swal2-question,.swal2-icon.swal2-warning{font-size:60px;line-height:80px;text-align:center}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}.swal2-icon{width:80px;height:80px;border:4px solid transparent;border-radius:50%;margin:20px auto 30px;padding:0;position:relative;-webkit-box-sizing:content-box;box-sizing:content-box;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon.swal2-error{border-color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;display:block}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{position:absolute;height:5px;width:47px;background-color:#f27474;display:block;top:37px;border-radius:2px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);left:17px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}.swal2-icon.swal2-warning{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#f8bb86;border-color:#facea8}.swal2-icon.swal2-info{font-family:'Open Sans',sans-serif;color:#3fc3ee;border-color:#9de0f6}.swal2-icon.swal2-question{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#87adbd;border-color:#c9dae1}.swal2-icon.swal2-success{border-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{border-radius:50%;position:absolute;width:60px;height:120px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;-ms-transform-origin:60px 60px;transform-origin:60px 60px}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 60px;-ms-transform-origin:0 60px;transform-origin:0 60px}.swal2-icon.swal2-success .swal2-success-ring{width:80px;height:80px;border:4px solid rgba(165,220,134,.2);border-radius:50%;-webkit-box-sizing:content-box;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.swal2-icon.swal2-success .swal2-success-fix{width:7px;height:90px;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{height:5px;background-color:#a5dc86;display:block;border-radius:2px;position:absolute;z-index:2}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-progresssteps{font-weight:600;margin:0 0 20px;padding:0}.swal2-progresssteps li{display:inline-block;position:relative}.swal2-progresssteps .swal2-progresscircle{background:#3085d6;border-radius:2em;color:#fff;height:2em;line-height:2em;text-align:center;width:2em;z-index:20}.swal2-progresssteps .swal2-progresscircle:first-child{margin-left:0}.swal2-progresssteps .swal2-progresscircle:last-child{margin-right:0}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep{background:#3085d6}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progresscircle,.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progressline{background:#add8e6}.swal2-progresssteps .swal2-progressline{background:#3085d6;height:.4em;margin:0 -1px;z-index:10}[class^=swal2]{-webkit-tap-highlight-color:transparent}@-webkit-keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}.swal2-show{-webkit-animation:showSweetAlert .3s;animation:showSweetAlert .3s}.swal2-show.swal2-noanimation{-webkit-animation:none;animation:none}.swal2-hide{-webkit-animation:hideSweetAlert .15s forwards;animation:hideSweetAlert .15s forwards}.swal2-hide.swal2-noanimation{-webkit-animation:none;animation:none}@-webkit-keyframes animate-success-tip{0%,54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@keyframes animate-success-tip{0%,54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@-webkit-keyframes animate-success-long{0%,65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@keyframes animate-success-long{0%,65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@-webkit-keyframes rotatePlaceholder{0%,5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}100%,12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes rotatePlaceholder{0%,5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}100%,12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}.swal2-animate-success-line-tip{-webkit-animation:animate-success-tip .75s;animation:animate-success-tip .75s}.swal2-animate-success-line-long{-webkit-animation:animate-success-long .75s;animation:animate-success-long .75s}.swal2-success.swal2-animate-success-icon .swal2-success-circular-line-right{-webkit-animation:rotatePlaceholder 4.25s ease-in;animation:rotatePlaceholder 4.25s ease-in}@-webkit-keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}.swal2-animate-error-icon{-webkit-animation:animate-error-icon .5s;animation:animate-error-icon .5s}@-webkit-keyframes animate-x-mark{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}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}@keyframes animate-x-mark{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}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}.swal2-animate-x-mark{-webkit-animation:animate-x-mark .5s;animation:animate-x-mark .5s}@-webkit-keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}
1
+ body.swal2-shown{overflow-y:hidden}body.swal2-iosfix{position:fixed;left:0;right:0}.swal2-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;top:0;left:0;bottom:0;right:0;padding:10px;background-color:transparent;z-index:1060}.swal2-container.swal2-fade{-webkit-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s}.swal2-container.swal2-shown{background-color:rgba(0,0,0,.4)}.swal2-modal{background-color:#fff;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;border-radius:5px;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;margin:auto;overflow-x:hidden;overflow-y:auto;display:none;position:relative;max-width:100%}.swal2-modal:focus{outline:0}.swal2-modal.swal2-loading{overflow-y:hidden}.swal2-modal .swal2-title{color:#595959;font-size:30px;text-align:center;font-weight:600;text-transform:none;position:relative;margin:0 0 .4em;padding:0;display:block;word-wrap:break-word}.swal2-modal .swal2-buttonswrapper{margin-top:15px}.swal2-modal .swal2-buttonswrapper:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4;cursor:no-drop}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-confirm{-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid transparent;border-color:transparent;width:40px;height:40px;padding:0;margin:7.5px;vertical-align:top;background-color:transparent!important;color:transparent;cursor:default;border-radius:100%;-webkit-animation:rotate-loading 1.5s linear 0s infinite normal;animation:rotate-loading 1.5s linear 0s infinite normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-cancel{margin-left:30px;margin-right:30px}.swal2-modal .swal2-buttonswrapper.swal2-loading :not(.swal2-styled).swal2-confirm::after{display:inline-block;content:'';margin-left:5px 0 15px;vertical-align:-1px;height:15px;width:15px;border:3px solid #999;-webkit-box-shadow:1px 1px 1px #fff;box-shadow:1px 1px 1px #fff;border-right-color:transparent;border-radius:50%;-webkit-animation:rotate-loading 1.5s linear 0s infinite normal;animation:rotate-loading 1.5s linear 0s infinite normal}.swal2-modal .swal2-styled{border:0;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#fff;cursor:pointer;font-size:17px;font-weight:500;margin:15px 5px 0;padding:10px 32px}.swal2-modal .swal2-image{margin:20px auto;max-width:100%}.swal2-modal .swal2-close{background:0 0;border:0;margin:0;padding:0;width:38px;height:40px;font-size:36px;line-height:40px;font-family:serif;position:absolute;top:5px;right:8px;cursor:pointer;color:#ccc;-webkit-transition:color .1s ease;-o-transition:color .1s ease;transition:color .1s ease}.swal2-modal .swal2-close:hover{color:#d55}.swal2-modal>.swal2-checkbox,.swal2-modal>.swal2-file,.swal2-modal>.swal2-input,.swal2-modal>.swal2-radio,.swal2-modal>.swal2-select,.swal2-modal>.swal2-textarea{display:none}.swal2-modal .swal2-content{font-size:18px;text-align:center;font-weight:300;position:relative;float:none;margin:0;padding:0;line-height:normal;color:#545454;word-wrap:break-word}.swal2-modal .swal2-checkbox,.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-radio,.swal2-modal .swal2-select,.swal2-modal .swal2-textarea{margin:20px auto}.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-textarea{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:18px;border-radius:3px;border:1px solid #d9d9d9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.06);box-shadow:inset 0 1px 1px rgba(0,0,0,.06);-webkit-transition:border-color box-shadow .3s;-o-transition:border-color box-shadow .3s;transition:border-color box-shadow .3s}.swal2-modal .swal2-file.swal2-inputerror,.swal2-modal .swal2-input.swal2-inputerror,.swal2-modal .swal2-textarea.swal2-inputerror{border-color:#f27474!important;-webkit-box-shadow:0 0 2px #f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-modal .swal2-file:focus,.swal2-modal .swal2-input:focus,.swal2-modal .swal2-textarea:focus{outline:0;border:1px solid #b4dbed;-webkit-box-shadow:0 0 3px #c4e6f5;box-shadow:0 0 3px #c4e6f5}.swal2-modal .swal2-file:focus::-webkit-input-placeholder,.swal2-modal .swal2-input:focus::-webkit-input-placeholder,.swal2-modal .swal2-textarea:focus::-webkit-input-placeholder{-webkit-transition:opacity .3s .03s ease;-o-transition:opacity .3s .03s ease;transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file:focus:-ms-input-placeholder,.swal2-modal .swal2-input:focus:-ms-input-placeholder,.swal2-modal .swal2-textarea:focus:-ms-input-placeholder{-webkit-transition:opacity .3s .03s ease;-o-transition:opacity .3s .03s ease;transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file:focus::-moz-placeholder,.swal2-modal .swal2-input:focus::-moz-placeholder,.swal2-modal .swal2-textarea:focus::-moz-placeholder{-webkit-transition:opacity .3s .03s ease;-o-transition:opacity .3s .03s ease;transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file:focus::-ms-input-placeholder,.swal2-modal .swal2-input:focus::-ms-input-placeholder,.swal2-modal .swal2-textarea:focus::-ms-input-placeholder{-webkit-transition:opacity .3s .03s ease;-o-transition:opacity .3s .03s ease;transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file:focus::placeholder,.swal2-modal .swal2-input:focus::placeholder,.swal2-modal .swal2-textarea:focus::placeholder{-webkit-transition:opacity .3s .03s ease;-o-transition:opacity .3s .03s ease;transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file::-webkit-input-placeholder,.swal2-modal .swal2-input::-webkit-input-placeholder,.swal2-modal .swal2-textarea::-webkit-input-placeholder{color:#e6e6e6}.swal2-modal .swal2-file:-ms-input-placeholder,.swal2-modal .swal2-input:-ms-input-placeholder,.swal2-modal .swal2-textarea:-ms-input-placeholder{color:#e6e6e6}.swal2-modal .swal2-file::-moz-placeholder,.swal2-modal .swal2-input::-moz-placeholder,.swal2-modal .swal2-textarea::-moz-placeholder{color:#e6e6e6}.swal2-modal .swal2-file::-ms-input-placeholder,.swal2-modal .swal2-input::-ms-input-placeholder,.swal2-modal .swal2-textarea::-ms-input-placeholder{color:#e6e6e6}.swal2-modal .swal2-file::placeholder,.swal2-modal .swal2-input::placeholder,.swal2-modal .swal2-textarea::placeholder{color:#e6e6e6}.swal2-modal .swal2-range input{float:left;width:80%}.swal2-modal .swal2-range output{float:right;width:20%;font-size:20px;font-weight:600;text-align:center}.swal2-modal .swal2-range input,.swal2-modal .swal2-range output{height:43px;line-height:43px;vertical-align:middle;margin:20px auto;padding:0}.swal2-modal .swal2-input{height:43px;padding:0 12px}.swal2-modal .swal2-input[type=number]{max-width:150px}.swal2-modal .swal2-file{font-size:20px}.swal2-modal .swal2-textarea{height:108px;padding:12px}.swal2-modal .swal2-select{color:#545454;font-size:inherit;padding:5px 10px;min-width:40%;max-width:100%}.swal2-modal .swal2-radio{border:0}.swal2-modal .swal2-radio label:not(:first-child){margin-left:20px}.swal2-modal .swal2-radio input,.swal2-modal .swal2-radio span{vertical-align:middle}.swal2-modal .swal2-radio input{margin:0 3px 0 0}.swal2-modal .swal2-checkbox{color:#545454}.swal2-modal .swal2-checkbox input,.swal2-modal .swal2-checkbox span{vertical-align:middle}.swal2-modal .swal2-validationerror{background-color:#f0f0f0;margin:0 -20px;overflow:hidden;padding:10px;color:gray;font-size:16px;font-weight:300;display:none}.swal2-modal .swal2-validationerror::before{content:'!';display:inline-block;width:24px;height:24px;border-radius:50%;background-color:#ea7d7d;color:#fff;line-height:24px;text-align:center;margin-right:10px}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}.swal2-icon{width:80px;height:80px;border:4px solid transparent;border-radius:50%;margin:20px auto 30px;padding:0;position:relative;-webkit-box-sizing:content-box;box-sizing:content-box;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon.swal2-error{border-color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;display:block}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{position:absolute;height:5px;width:47px;background-color:#f27474;display:block;top:37px;border-radius:2px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);left:17px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}.swal2-icon.swal2-warning{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#f8bb86;border-color:#facea8;font-size:60px;line-height:80px;text-align:center}.swal2-icon.swal2-info{font-family:'Open Sans',sans-serif;color:#3fc3ee;border-color:#9de0f6;font-size:60px;line-height:80px;text-align:center}.swal2-icon.swal2-question{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#87adbd;border-color:#c9dae1;font-size:60px;line-height:80px;text-align:center}.swal2-icon.swal2-success{border-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{border-radius:50%;position:absolute;width:60px;height:120px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;-ms-transform-origin:60px 60px;transform-origin:60px 60px}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 60px;-ms-transform-origin:0 60px;transform-origin:0 60px}.swal2-icon.swal2-success .swal2-success-ring{width:80px;height:80px;border:4px solid rgba(165,220,134,.2);border-radius:50%;-webkit-box-sizing:content-box;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.swal2-icon.swal2-success .swal2-success-fix{width:7px;height:90px;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{height:5px;background-color:#a5dc86;display:block;border-radius:2px;position:absolute;z-index:2}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-progresssteps{font-weight:600;margin:0 0 20px;padding:0}.swal2-progresssteps li{display:inline-block;position:relative}.swal2-progresssteps .swal2-progresscircle{background:#3085d6;border-radius:2em;color:#fff;height:2em;line-height:2em;text-align:center;width:2em;z-index:20}.swal2-progresssteps .swal2-progresscircle:first-child{margin-left:0}.swal2-progresssteps .swal2-progresscircle:last-child{margin-right:0}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep{background:#3085d6}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progresscircle{background:#add8e6}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progressline{background:#add8e6}.swal2-progresssteps .swal2-progressline{background:#3085d6;height:.4em;margin:0 -1px;z-index:10}[class^=swal2]{-webkit-tap-highlight-color:transparent}@-webkit-keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}.swal2-show{-webkit-animation:showSweetAlert .3s;animation:showSweetAlert .3s}.swal2-show.swal2-noanimation{-webkit-animation:none;animation:none}.swal2-hide{-webkit-animation:hideSweetAlert .15s forwards;animation:hideSweetAlert .15s forwards}.swal2-hide.swal2-noanimation{-webkit-animation:none;animation:none}@-webkit-keyframes animate-success-tip{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}100%{width:25px;left:14px;top:45px}}@keyframes animate-success-tip{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}100%{width:25px;left:14px;top:45px}}@-webkit-keyframes animate-success-long{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@keyframes animate-success-long{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@-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)}100%{-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)}100%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}.swal2-animate-success-line-tip{-webkit-animation:animate-success-tip .75s;animation:animate-success-tip .75s}.swal2-animate-success-line-long{-webkit-animation:animate-success-long .75s;animation:animate-success-long .75s}.swal2-success.swal2-animate-success-icon .swal2-success-circular-line-right{-webkit-animation:rotatePlaceholder 4.25s ease-in;animation:rotatePlaceholder 4.25s ease-in}@-webkit-keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}.swal2-animate-error-icon{-webkit-animation:animate-error-icon .5s;animation:animate-error-icon .5s}@-webkit-keyframes animate-x-mark{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}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}@keyframes animate-x-mark{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}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}.swal2-animate-x-mark{-webkit-animation:animate-x-mark .5s;animation:animate-x-mark .5s}@-webkit-keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}
assets/css/twentytwenty.min.css CHANGED
@@ -1 +1 @@
1
- .twentytwenty-handle{z-index:40;position:absolute;left:50%;top:50%;height:64px;width:64px;margin-left:-32px;margin-top:-32px;border-radius:50%;-webkit-box-shadow:0 3px 0 #338EA6;box-shadow:0 3px 0 #338EA6;background:#40B1D0;cursor:pointer}.twentytwenty-horizontal .twentytwenty-handle:after,.twentytwenty-horizontal .twentytwenty-handle:before{left:50%;width:2px;height:9999px;margin-left:-1px;content:"";position:absolute;z-index:30;display:block;background:#F2F5F7;-webkit-box-shadow:0 0 12px rgba(51,51,51,.5);box-shadow:0 0 12px rgba(51,51,51,.5)}.twentytwenty-horizontal .twentytwenty-handle:before{bottom:50%;margin-bottom:32px}.twentytwenty-horizontal .twentytwenty-handle:after{top:50%;margin-top:34px}.twentytwenty-labels,.twentytwenty-overlay{position:absolute;top:0;width:100%;height:100%;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s}.twentytwenty-labels{opacity:1;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.twentytwenty-labels .twentytwenty-label-content{position:absolute;padding:0 12px;font-size:13px;letter-spacing:.1em;line-height:38px;color:#fff;background:#1F2332;border-radius:2px}.twentytwenty-horizontal .twentytwenty-labels .twentytwenty-label-content{bottom:15px}.twentytwenty-after-label .twentytwenty-label-content{background:#40B1D0}.twentytwenty-left-arrow,.twentytwenty-right-arrow{position:absolute;width:0;height:0;border:8px inset transparent;top:50%;margin-top:-8px}.twentytwenty-container{-webkit-box-sizing:content-box;box-sizing:content-box;position:relative;z-index:0;overflow:hidden;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.15);box-shadow:0 5px 10px rgba(0,0,0,.15);opacity:0;-webkit-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s;-webkit-user-select:none;-moz-user-select:none}.twentytwenty-container *{-webkit-box-sizing:content-box;box-sizing:content-box}.twentytwenty-container img{position:absolute;top:0;display:block;width:100%;height:auto}.loaded .twentytwenty-container{opacity:1}.twentytwenty-container.active .twentytwenty-overlay .twentytwenty-labels,.twentytwenty-container.active .twentytwenty-overlay:hover .twentytwenty-labels{opacity:0}.twentytwenty-horizontal .twentytwenty-before-label .twentytwenty-label-content{left:15px}.twentytwenty-horizontal .twentytwenty-after-label .twentytwenty-label-content{right:15px}.twentytwenty-overlay{z-index:25}.twentytwenty-before{z-index:20}.twentytwenty-after{z-index:10}.twentytwenty-duo-buttons{position:absolute;top:10px;z-index:30;overflow:hidden}.twentytwenty-duo-buttons button{float:left;padding:2px 6px;font-size:11px;text-transform:uppercase;letter-spacing:.125em;font-weight:700;border:0;background:#1f2332;color:#FFF;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;cursor:pointer}.twentytwenty-duo-buttons button:focus,.twentytwenty-duo-buttons button:hover{background:#444}.twentytwenty-duo-buttons button:first-child{border-radius:3px 0 0 3px}.twentytwenty-duo-buttons button:last-child{border-radius:0 3px 3px 0}.twentytwenty-duo-buttons button.selected{background:#8bc34a;text-shadow:0 0 1px rgba(0,0,0,.2);cursor:default}.twentytwenty-duo-left{left:10px}.twentytwenty-duo-right{right:10px}.twentytwenty-left-arrow{left:50%;margin-left:-22px;border-right:8px solid #fff}.twentytwenty-right-arrow{right:50%;margin-right:-22px;border-left:8px solid #fff}#imagify-visual-comparison .close-btn,.imagify-visual-comparison .close-btn{top:50px;right:5px;width:33px;height:33px;padding:1px 0 0 2px;border:1px solid #F2F2F2;color:#F2F2F2;line-height:19px;text-align:center;border-radius:50%}.imagify-modal .imagify-comparison-title{font-size:28px;margin-bottom:1em;color:#F2F2F2;text-align:left}.imagify-modal .imagify-comparison-title .twentytwenty-duo-buttons{position:static;margin:0 10px 0 15px}.imagify-comparison-title .twentytwenty-duo-buttons button{float:none;padding:6px 12px;font-size:16px;text-transform:none;border:1px solid #40B1D0;color:#889;letter-spacing:0}.imagify-comparison-title .twentytwenty-duo-buttons button:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}.imagify-comparison-title .twentytwenty-duo-buttons .selected{border:1px solid #40B1D0;color:#FFF;background:#40B1D0}.imagify-comparison-levels{margin:15px 0;overflow:hidden}.imagify-comparison-levels .imagify-c-level{display:none;min-width:175px;font-size:11px}.imagify-c-level.go-left{float:left}.imagify-c-level.go-right{float:right}.imagify-c-level.go-left,.imagify-c-level.go-right{display:table}.imagify-c-level .imagify-c-level-row{display:table-row;margin:0;color:#FFF}.imagify-c-level-row>span{display:table-cell;padding:2px 0}.imagify-c-level-row .value{text-align:right;padding-left:5px}.imagify-c-level-row .value.level{color:#40b1d0}.imagify-c-level-row .value.size{color:#8bc34a;font-weight:700}.imagify-modal .loader{position:absolute;top:50%;left:50%;margin:-32px 0 0 -32px;opacity:0;visibility:hidden;-webkit-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.imagify-modal .loading .loader{visibility:visible;opacity:1}.modal-is-too-high .imagify-comparison-levels{position:absolute;padding:15px 20px;background:rgba(31,35,50,.95);bottom:0;left:0;right:0;margin-bottom:0}
1
+ .twentytwenty-handle{z-index:40;position:absolute;left:50%;top:50%;height:64px;width:64px;margin-left:-32px;margin-top:-32px;border-radius:50%;-webkit-box-shadow:0 3px 0 #338ea6;box-shadow:0 3px 0 #338ea6;background:#40b1d0;cursor:pointer}.twentytwenty-horizontal .twentytwenty-handle:after,.twentytwenty-horizontal .twentytwenty-handle:before{left:50%;width:2px;height:9999px;margin-left:-1px}.twentytwenty-horizontal .twentytwenty-handle:before{bottom:50%;margin-bottom:32px;-webkit-box-shadow:0 3px 0 #fff,0 0 12px rgba(51,51,51,.5);box-shadow:0 3px 0 #fff,0 0 12px rgba(51,51,51,.5)}.twentytwenty-horizontal .twentytwenty-handle:after{top:50%;margin-top:34px;-webkit-box-shadow:0 -3px 0 #fff,0 0 12px rgba(51,51,51,.5);box-shadow:0 -3px 0 #fff,0 0 12px rgba(51,51,51,.5)}.twentytwenty-horizontal .twentytwenty-handle:after,.twentytwenty-horizontal .twentytwenty-handle:before{content:"";position:absolute;z-index:30;display:block;background:#f2f5f7;-webkit-box-shadow:0 0 12px rgba(51,51,51,.5);box-shadow:0 0 12px rgba(51,51,51,.5)}.twentytwenty-labels,.twentytwenty-overlay{position:absolute;top:0;width:100%;height:100%;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s}.twentytwenty-labels{opacity:1;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.twentytwenty-labels .twentytwenty-label-content{position:absolute;padding:0 12px;font-size:13px;letter-spacing:.1em;line-height:38px;color:#fff;background:#1f2332;border-radius:2px}.twentytwenty-horizontal .twentytwenty-labels .twentytwenty-label-content{bottom:15px}.twentytwenty-after-label .twentytwenty-label-content{background:#40b1d0}.twentytwenty-left-arrow,.twentytwenty-right-arrow{position:absolute;width:0;height:0;border:8px inset transparent}.twentytwenty-left-arrow,.twentytwenty-right-arrow{top:50%;margin-top:-8px}.twentytwenty-container{-webkit-box-sizing:content-box;box-sizing:content-box;position:relative;z-index:0;overflow:hidden;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.15);box-shadow:0 5px 10px rgba(0,0,0,.15);opacity:0;-webkit-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s;-webkit-user-select:none;-moz-user-select:none}.twentytwenty-container *{-webkit-box-sizing:content-box;box-sizing:content-box}.twentytwenty-container img{position:absolute;top:0;display:block;width:100%;height:auto}.loaded .twentytwenty-container{opacity:1}.twentytwenty-container.active .twentytwenty-overlay .twentytwenty-labels,.twentytwenty-container.active .twentytwenty-overlay:hover .twentytwenty-labels{opacity:0}.twentytwenty-horizontal .twentytwenty-before-label .twentytwenty-label-content{left:15px}.twentytwenty-horizontal .twentytwenty-after-label .twentytwenty-label-content{right:15px}.twentytwenty-overlay{z-index:25}.twentytwenty-before{z-index:20}.twentytwenty-after{z-index:10}.twentytwenty-duo-buttons{position:absolute;top:10px;z-index:30;overflow:hidden}.twentytwenty-duo-buttons button{float:left;padding:2px 6px;font-size:11px;text-transform:uppercase;letter-spacing:.125em;font-weight:700;border:0;background:#1f2332;color:#fff;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;cursor:pointer}.twentytwenty-duo-buttons button:focus,.twentytwenty-duo-buttons button:hover{background:#444}.twentytwenty-duo-buttons button:first-child{border-radius:3px 0 0 3px}.twentytwenty-duo-buttons button:last-child{border-radius:0 3px 3px 0}.twentytwenty-duo-buttons button.selected{background:#8bc34a;text-shadow:0 0 1px rgba(0,0,0,.2);cursor:default}.twentytwenty-duo-left{left:10px}.twentytwenty-duo-right{right:10px}.twentytwenty-left-arrow{left:50%;margin-left:-22px;border-right:8px solid #fff}.twentytwenty-right-arrow{right:50%;margin-right:-22px;border-left:8px solid #fff}#imagify-visual-comparison .close-btn,.imagify-visual-comparison .close-btn{top:50px;right:5px;width:33px;height:33px;padding:1px 0 0 2px;border:1px solid #f2f2f2;color:#f2f2f2;line-height:19px;text-align:center;border-radius:50%}.imagify-modal .imagify-comparison-title{font-size:28px;margin-bottom:1em;color:#f2f2f2;text-align:left}.imagify-modal .imagify-comparison-title .twentytwenty-duo-buttons{position:static;margin:0 10px 0 15px}.imagify-comparison-title .twentytwenty-duo-buttons button{float:none;padding:6px 12px;font-size:16px;text-transform:none;border:1px solid #40b1d0;color:#889;letter-spacing:0}.imagify-comparison-title .twentytwenty-duo-buttons button:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}.imagify-comparison-title .twentytwenty-duo-buttons .selected{border:1px solid #40b1d0;color:#fff;background:#40b1d0}.imagify-comparison-levels{margin:15px 0;overflow:hidden}.imagify-comparison-levels .imagify-c-level{display:none;min-width:175px;font-size:11px}.imagify-c-level.go-left{float:left}.imagify-c-level.go-right{float:right}.imagify-c-level.go-left,.imagify-c-level.go-right{display:table}.imagify-c-level .imagify-c-level-row{display:table-row;margin:0;color:#fff}.imagify-c-level-row>span{display:table-cell;padding:2px 0}.imagify-c-level-row .value{text-align:right;padding-left:5px}.imagify-c-level-row .value.level{color:#40b1d0}.imagify-c-level-row .value.size{color:#8bc34a;font-weight:700}.imagify-modal .loader{position:absolute;top:50%;left:50%;margin:-32px 0 0 -32px;opacity:0;visibility:hidden;-webkit-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.imagify-modal .loading .loader{visibility:visible;opacity:1}.modal-is-too-high .imagify-comparison-levels{position:absolute;padding:15px 20px;background:rgba(31,35,50,.95);bottom:0;left:0;right:0;margin-bottom:0}
assets/js/pricing-modal.js CHANGED
@@ -199,7 +199,7 @@
199
  $offer.find('.imagify-approx-nb').text(quo * 5);
200
 
201
  if ('monthly' === type) {
202
- // Additionnal price.
203
  $offer.find('.imagify-price-add-data').text('$' + add);
204
  }
205
 
199
  $offer.find('.imagify-approx-nb').text(quo * 5);
200
 
201
  if ('monthly' === type) {
202
+ // Additional price.
203
  $offer.find('.imagify-price-add-data').text('$' + add);
204
  }
205
 
classes/Context/AbstractContext.php CHANGED
@@ -1,8 +1,6 @@
1
  <?php
2
  namespace Imagify\Context;
3
 
4
- defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
5
-
6
  /**
7
  * Abstract used for contexts.
8
  *
@@ -16,7 +14,6 @@ abstract class AbstractContext implements ContextInterface {
16
  *
17
  * @var string
18
  * @since 1.9
19
- * @access protected
20
  * @author Grégory Viguier
21
  */
22
  protected $context;
@@ -26,7 +23,6 @@ abstract class AbstractContext implements ContextInterface {
26
  *
27
  * @var bool
28
  * @since 1.9
29
- * @access protected
30
  * @author Grégory Viguier
31
  */
32
  protected $is_network_wide = false;
@@ -39,7 +35,6 @@ abstract class AbstractContext implements ContextInterface {
39
  * - 'image' to allow only images.
40
  * - 'not-image' to allow only pdf files.
41
  * @since 1.9
42
- * @access protected
43
  * @see imagify_get_mime_types()
44
  * @author Grégory Viguier
45
  */
@@ -58,7 +53,6 @@ abstract class AbstractContext implements ContextInterface {
58
  * @type string $name The size name.
59
  * }
60
  * @since 1.9
61
- * @access protected
62
  * @author Grégory Viguier
63
  */
64
  protected $thumbnail_sizes;
@@ -68,26 +62,14 @@ abstract class AbstractContext implements ContextInterface {
68
  *
69
  * @var bool
70
  * @since 1.9
71
- * @access protected
72
  * @author Grégory Viguier
73
  */
74
  protected $can_backup;
75
 
76
- /**
77
- * Tell if the optimization process is allowed to keep exif in this context.
78
- *
79
- * @var bool
80
- * @since 1.9
81
- * @access protected
82
- * @author Grégory Viguier
83
- */
84
- protected $can_keep_exif;
85
-
86
  /**
87
  * Get the context "short name".
88
  *
89
  * @since 1.9
90
- * @access public
91
  * @author Grégory Viguier
92
  *
93
  * @return string
@@ -100,7 +82,6 @@ abstract class AbstractContext implements ContextInterface {
100
  * Tell if the context is network-wide.
101
  *
102
  * @since 1.9
103
- * @access public
104
  * @author Grégory Viguier
105
  *
106
  * @return bool
@@ -113,7 +94,6 @@ abstract class AbstractContext implements ContextInterface {
113
  * Get the type of files this context allows.
114
  *
115
  * @since 1.9
116
- * @access protected
117
  * @see imagify_get_mime_types()
118
  * @author Grégory Viguier
119
  *
@@ -130,7 +110,6 @@ abstract class AbstractContext implements ContextInterface {
130
  * Get the thumbnail sizes for this context, except the full size.
131
  *
132
  * @since 1.9
133
- * @access public
134
  * @author Grégory Viguier
135
  *
136
  * @return array {
@@ -151,7 +130,6 @@ abstract class AbstractContext implements ContextInterface {
151
  * Tell if the optimization process is allowed resize in this context.
152
  *
153
  * @since 1.9
154
- * @access public
155
  * @author Grégory Viguier
156
  *
157
  * @return bool
@@ -164,7 +142,6 @@ abstract class AbstractContext implements ContextInterface {
164
  * Tell if the optimization process is allowed to backup in this context.
165
  *
166
  * @since 1.9
167
- * @access public
168
  * @author Grégory Viguier
169
  *
170
  * @return bool
@@ -173,24 +150,10 @@ abstract class AbstractContext implements ContextInterface {
173
  return $this->can_backup;
174
  }
175
 
176
- /**
177
- * Tell if the optimization process is allowed to keep exif in this context.
178
- *
179
- * @since 1.9
180
- * @access public
181
- * @author Grégory Viguier
182
- *
183
- * @return bool
184
- */
185
- public function can_keep_exif() {
186
- return $this->can_keep_exif;
187
- }
188
-
189
  /**
190
  * Tell if the current user is allowed to operate Imagify in this context.
191
  *
192
  * @since 1.9
193
- * @access public
194
  * @author Grégory Viguier
195
  *
196
  * @param string $describer Capacity describer. See $this->get_capacity() for possible values. Can also be a "real" user capacity.
@@ -205,7 +168,6 @@ abstract class AbstractContext implements ContextInterface {
205
  * Tell if a user is allowed to operate Imagify in this context.
206
  *
207
  * @since 1.9
208
- * @access public
209
  * @author Grégory Viguier
210
  *
211
  * @param int|\WP_User $user_id A user ID or \WP_User object. Fallback to the current user ID.
@@ -276,7 +238,6 @@ abstract class AbstractContext implements ContextInterface {
276
  * Filter a user capacity used to operate Imagify in this context.
277
  *
278
  * @since 1.9
279
- * @access protected
280
  * @author Grégory Viguier
281
  *
282
  * @param string $capacity The user capacity.
1
  <?php
2
  namespace Imagify\Context;
3
 
 
 
4
  /**
5
  * Abstract used for contexts.
6
  *
14
  *
15
  * @var string
16
  * @since 1.9
 
17
  * @author Grégory Viguier
18
  */
19
  protected $context;
23
  *
24
  * @var bool
25
  * @since 1.9
 
26
  * @author Grégory Viguier
27
  */
28
  protected $is_network_wide = false;
35
  * - 'image' to allow only images.
36
  * - 'not-image' to allow only pdf files.
37
  * @since 1.9
 
38
  * @see imagify_get_mime_types()
39
  * @author Grégory Viguier
40
  */
53
  * @type string $name The size name.
54
  * }
55
  * @since 1.9
 
56
  * @author Grégory Viguier
57
  */
58
  protected $thumbnail_sizes;
62
  *
63
  * @var bool
64
  * @since 1.9
 
65
  * @author Grégory Viguier
66
  */
67
  protected $can_backup;
68
 
 
 
 
 
 
 
 
 
 
 
69
  /**
70
  * Get the context "short name".
71
  *
72
  * @since 1.9
 
73
  * @author Grégory Viguier
74
  *
75
  * @return string
82
  * Tell if the context is network-wide.
83
  *
84
  * @since 1.9
 
85
  * @author Grégory Viguier
86
  *
87
  * @return bool
94
  * Get the type of files this context allows.
95
  *
96
  * @since 1.9
 
97
  * @see imagify_get_mime_types()
98
  * @author Grégory Viguier
99
  *
110
  * Get the thumbnail sizes for this context, except the full size.
111
  *
112
  * @since 1.9
 
113
  * @author Grégory Viguier
114
  *
115
  * @return array {
130
  * Tell if the optimization process is allowed resize in this context.
131
  *
132
  * @since 1.9
 
133
  * @author Grégory Viguier
134
  *
135
  * @return bool
142
  * Tell if the optimization process is allowed to backup in this context.
143
  *
144
  * @since 1.9
 
145
  * @author Grégory Viguier
146
  *
147
  * @return bool
150
  return $this->can_backup;
151
  }
152
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  /**
154
  * Tell if the current user is allowed to operate Imagify in this context.
155
  *
156
  * @since 1.9
 
157
  * @author Grégory Viguier
158
  *
159
  * @param string $describer Capacity describer. See $this->get_capacity() for possible values. Can also be a "real" user capacity.
168
  * Tell if a user is allowed to operate Imagify in this context.
169
  *
170
  * @since 1.9
 
171
  * @author Grégory Viguier
172
  *
173
  * @param int|\WP_User $user_id A user ID or \WP_User object. Fallback to the current user ID.
238
  * Filter a user capacity used to operate Imagify in this context.
239
  *
240
  * @since 1.9
 
241
  * @author Grégory Viguier
242
  *
243
  * @param string $capacity The user capacity.
classes/Context/ContextInterface.php CHANGED
@@ -1,8 +1,6 @@
1
  <?php
2
  namespace Imagify\Context;
3
 
4
- defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
5
-
6
  /**
7
  * Interface to use for contexts.
8
  *
@@ -15,7 +13,6 @@ interface ContextInterface {
15
  * Get the main Instance.
16
  *
17
  * @since 1.9
18
- * @access protected
19
  * @author Grégory Viguier
20
  *
21
  * @return object Main instance.
@@ -26,7 +23,6 @@ interface ContextInterface {
26
  * Get the context "short name".
27
  *
28
  * @since 1.9
29
- * @access public
30
  * @author Grégory Viguier
31
  *
32
  * @return string
@@ -37,7 +33,6 @@ interface ContextInterface {
37
  * Tell if the context is network-wide.
38
  *
39
  * @since 1.9
40
- * @access public
41
  * @author Grégory Viguier
42
  *
43
  * @return bool
@@ -48,7 +43,6 @@ interface ContextInterface {
48
  * Get the type of files this context allows.
49
  *
50
  * @since 1.9
51
- * @access protected
52
  * @see imagify_get_mime_types()
53
  * @author Grégory Viguier
54
  *
@@ -63,7 +57,6 @@ interface ContextInterface {
63
  * Get the thumbnail sizes for this context, except the full size.
64
  *
65
  * @since 1.9
66
- * @access public
67
  * @author Grégory Viguier
68
  *
69
  * @return array {
@@ -83,7 +76,6 @@ interface ContextInterface {
83
  * 0 means to not resize.
84
  *
85
  * @since 1.9.8
86
- * @access public
87
  * @author Grégory Viguier
88
  *
89
  * @return int
@@ -94,7 +86,6 @@ interface ContextInterface {
94
  * Tell if the optimization process is allowed resize in this context.
95
  *
96
  * @since 1.9
97
- * @access public
98
  * @author Grégory Viguier
99
  *
100
  * @return bool
@@ -105,29 +96,16 @@ interface ContextInterface {
105
  * Tell if the optimization process is allowed to backup in this context.
106
  *
107
  * @since 1.9
108
- * @access public
109
  * @author Grégory Viguier
110
  *
111
  * @return bool
112
  */
113
  public function can_backup();
114
 
115
- /**
116
- * Tell if the optimization process is allowed to keep exif in this context.
117
- *
118
- * @since 1.9
119
- * @access public
120
- * @author Grégory Viguier
121
- *
122
- * @return bool
123
- */
124
- public function can_keep_exif();
125
-
126
  /**
127
  * Tell if the current user is allowed to operate Imagify in this context.
128
  *
129
  * @since 1.9
130
- * @access public
131
  * @author Grégory Viguier
132
  *
133
  * @param string $describer Capacity describer. See $this->get_capacity() for possible values. Can also be a "real" user capacity.
@@ -140,7 +118,6 @@ interface ContextInterface {
140
  * Tell if a user is allowed to operate Imagify in this context.
141
  *
142
  * @since 1.9
143
- * @access public
144
  * @author Grégory Viguier
145
  *
146
  * @param int $user_id A user ID.
@@ -155,7 +132,6 @@ interface ContextInterface {
155
  *
156
  * @since 1.9
157
  * @since 1.9 The describer 'auto-optimize' is not used anymore.
158
- * @access public
159
  * @author Grégory Viguier
160
  *
161
  * @param string $describer Capacity describer. Possible values are like 'manage', 'bulk-optimize', 'manual-optimize', 'auto-optimize'.
1
  <?php
2
  namespace Imagify\Context;
3
 
 
 
4
  /**
5
  * Interface to use for contexts.
6
  *
13
  * Get the main Instance.
14
  *
15
  * @since 1.9
 
16
  * @author Grégory Viguier
17
  *
18
  * @return object Main instance.
23
  * Get the context "short name".
24
  *
25
  * @since 1.9
 
26
  * @author Grégory Viguier
27
  *
28
  * @return string
33
  * Tell if the context is network-wide.
34
  *
35
  * @since 1.9
 
36
  * @author Grégory Viguier
37
  *
38
  * @return bool
43
  * Get the type of files this context allows.
44
  *
45
  * @since 1.9
 
46
  * @see imagify_get_mime_types()
47
  * @author Grégory Viguier
48
  *
57
  * Get the thumbnail sizes for this context, except the full size.
58
  *
59
  * @since 1.9
 
60
  * @author Grégory Viguier
61
  *
62
  * @return array {
76
  * 0 means to not resize.
77
  *
78
  * @since 1.9.8
 
79
  * @author Grégory Viguier
80
  *
81
  * @return int
86
  * Tell if the optimization process is allowed resize in this context.
87
  *
88
  * @since 1.9
 
89
  * @author Grégory Viguier
90
  *
91
  * @return bool
96
  * Tell if the optimization process is allowed to backup in this context.
97
  *
98
  * @since 1.9
 
99
  * @author Grégory Viguier
100
  *
101
  * @return bool
102
  */
103
  public function can_backup();
104
 
 
 
 
 
 
 
 
 
 
 
 
105
  /**
106
  * Tell if the current user is allowed to operate Imagify in this context.
107
  *
108
  * @since 1.9
 
109
  * @author Grégory Viguier
110
  *
111
  * @param string $describer Capacity describer. See $this->get_capacity() for possible values. Can also be a "real" user capacity.
118
  * Tell if a user is allowed to operate Imagify in this context.
119
  *
120
  * @since 1.9
 
121
  * @author Grégory Viguier
122
  *
123
  * @param int $user_id A user ID.
132
  *
133
  * @since 1.9
134
  * @since 1.9 The describer 'auto-optimize' is not used anymore.
 
135
  * @author Grégory Viguier
136
  *
137
  * @param string $describer Capacity describer. Possible values are like 'manage', 'bulk-optimize', 'manual-optimize', 'auto-optimize'.
classes/Context/CustomFolders.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  namespace Imagify\Context;
3
 
4
- defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
5
 
6
  /**
7
  * Context class used for the custom folders.
@@ -10,14 +10,13 @@ defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
10
  * @author Grégory Viguier
11
  */
12
  class CustomFolders extends AbstractContext {
13
- use \Imagify\Traits\InstanceGetterTrait;
14
 
15
  /**
16
  * Context "short name".
17
  *
18
  * @var string
19
  * @since 1.9
20
- * @access protected
21
  * @author Grégory Viguier
22
  */
23
  protected $context = 'custom-folders';
@@ -35,7 +34,6 @@ class CustomFolders extends AbstractContext {
35
  * @type string $name The size name.
36
  * }
37
  * @since 1.9
38
- * @access public
39
  * @author Grégory Viguier
40
  */
41
  protected $thumbnail_sizes = [];
@@ -45,7 +43,6 @@ class CustomFolders extends AbstractContext {
45
  * 0 means to not resize.
46
  *
47
  * @since 1.9.8
48
- * @access public
49
  * @author Grégory Viguier
50
  *
51
  * @return int
@@ -58,7 +55,6 @@ class CustomFolders extends AbstractContext {
58
  * Tell if the optimization process is allowed to backup in this context.
59
  *
60
  * @since 1.9
61
- * @access public
62
  * @author Grégory Viguier
63
  *
64
  * @return bool
@@ -73,30 +69,10 @@ class CustomFolders extends AbstractContext {
73
  return $this->can_backup;
74
  }
75
 
76
- /**
77
- * Tell if the optimization process is allowed to keep exif in this context.
78
- *
79
- * @since 1.9
80
- * @access public
81
- * @author Grégory Viguier
82
- *
83
- * @return bool
84
- */
85
- public function can_keep_exif() {
86
- if ( isset( $this->can_keep_exif ) ) {
87
- return $this->can_keep_exif;
88
- }
89
-
90
- $this->can_keep_exif = get_imagify_option( 'exif' );
91
-
92
- return $this->can_keep_exif;
93
- }
94
-
95
  /**
96
  * Get user capacity to operate Imagify in this context.
97
  *
98
  * @since 1.9
99
- * @access public
100
  * @author Grégory Viguier
101
  *
102
  * @param string $describer Capacity describer. Possible values are like 'manage', 'bulk-optimize', 'manual-optimize', 'auto-optimize'.
1
  <?php
2
  namespace Imagify\Context;
3
 
4
+ use \Imagify\Traits\InstanceGetterTrait;
5
 
6
  /**
7
  * Context class used for the custom folders.
10
  * @author Grégory Viguier
11
  */
12
  class CustomFolders extends AbstractContext {
13
+ use InstanceGetterTrait;
14
 
15
  /**
16
  * Context "short name".
17
  *
18
  * @var string
19
  * @since 1.9
 
20
  * @author Grégory Viguier
21
  */
22
  protected $context = 'custom-folders';
34
  * @type string $name The size name.
35
  * }
36
  * @since 1.9
 
37
  * @author Grégory Viguier
38
  */
39
  protected $thumbnail_sizes = [];
43
  * 0 means to not resize.
44
  *
45
  * @since 1.9.8
 
46
  * @author Grégory Viguier
47
  *
48
  * @return int
55
  * Tell if the optimization process is allowed to backup in this context.
56
  *
57
  * @since 1.9
 
58
  * @author Grégory Viguier
59
  *
60
  * @return bool
69
  return $this->can_backup;
70
  }
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  /**
73
  * Get user capacity to operate Imagify in this context.
74
  *
75
  * @since 1.9
 
76
  * @author Grégory Viguier
77
  *
78
  * @param string $describer Capacity describer. Possible values are like 'manage', 'bulk-optimize', 'manual-optimize', 'auto-optimize'.
classes/Context/Noop.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  namespace Imagify\Context;
3
 
4
- defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
5
 
6
  /**
7
  * Fallback class for contexts.
@@ -10,13 +10,12 @@ defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
10
  * @author Grégory Viguier
11
  */
12
  class Noop implements ContextInterface {
13
- use \Imagify\Traits\InstanceGetterTrait;
14
 
15
  /**
16
  * Get the context "short name".
17
  *
18
  * @since 1.9
19
- * @access public
20
  * @author Grégory Viguier
21
  *
22
  * @return string
@@ -29,7 +28,6 @@ class Noop implements ContextInterface {
29
  * Tell if the context is network-wide.
30
  *
31
  * @since 1.9
32
- * @access public
33
  * @author Grégory Viguier
34
  *
35
  * @return bool
@@ -42,7 +40,6 @@ class Noop implements ContextInterface {
42
  * Get the type of files this context allows.
43
  *
44
  * @since 1.9
45
- * @access protected
46
  * @see imagify_get_mime_types()
47
  * @author Grégory Viguier
48
  *
@@ -59,7 +56,6 @@ class Noop implements ContextInterface {
59
  * Get the thumbnail sizes for this context, except the full size.
60
  *
61
  * @since 1.9
62
- * @access public
63
  * @author Grégory Viguier
64
  *
65
  * @return array {
@@ -81,7 +77,6 @@ class Noop implements ContextInterface {
81
  * 0 means to not resize.
82
  *
83
  * @since 1.9.8
84
- * @access public
85
  * @author Grégory Viguier
86
  *
87
  * @return int
@@ -91,36 +86,33 @@ class Noop implements ContextInterface {
91
  }
92
 
93
  /**
94
- * Tell if the optimization process is allowed to backup in this context.
95
  *
96
  * @since 1.9
97
- * @access public
98
  * @author Grégory Viguier
99
  *
100
  * @return bool
101
  */
102
- public function can_backup() {
103
  return false;
104
  }
105
 
106
  /**
107
- * Tell if the optimization process is allowed to keep exif in this context.
108
  *
109
  * @since 1.9
110
- * @access public
111
  * @author Grégory Viguier
112
  *
113
  * @return bool
114
  */
115
- public function can_keep_exif() {
116
- return true;
117
  }
118
 
119
  /**
120
  * Tell if the current user is allowed to operate Imagify in this context.
121
  *
122
  * @since 1.9
123
- * @access public
124
  * @author Grégory Viguier
125
  *
126
  * @param string $describer Capacity describer. See $this->get_capacity() for possible values. Can also be a "real" user capacity.
@@ -135,7 +127,6 @@ class Noop implements ContextInterface {
135
  * Tell if a user is allowed to operate Imagify in this context.
136
  *
137
  * @since 1.9
138
- * @access public
139
  * @author Grégory Viguier
140
  *
141
  * @param int $user_id A user ID.
@@ -151,7 +142,6 @@ class Noop implements ContextInterface {
151
  * Get user capacity to operate Imagify in this context.
152
  *
153
  * @since 1.9
154
- * @access public
155
  * @author Grégory Viguier
156
  *
157
  * @param string $describer Capacity describer. Possible values are like 'manage', 'bulk-optimize', 'manual-optimize', 'auto-optimize'.
1
  <?php
2
  namespace Imagify\Context;
3
 
4
+ use \Imagify\Traits\InstanceGetterTrait;
5
 
6
  /**
7
  * Fallback class for contexts.
10
  * @author Grégory Viguier
11
  */
12
  class Noop implements ContextInterface {
13
+ use InstanceGetterTrait;
14
 
15
  /**
16
  * Get the context "short name".
17
  *
18
  * @since 1.9
 
19
  * @author Grégory Viguier
20
  *
21
  * @return string
28
  * Tell if the context is network-wide.
29
  *
30
  * @since 1.9
 
31
  * @author Grégory Viguier
32
  *
33
  * @return bool
40
  * Get the type of files this context allows.
41
  *
42
  * @since 1.9
 
43
  * @see imagify_get_mime_types()
44
  * @author Grégory Viguier
45
  *
56
  * Get the thumbnail sizes for this context, except the full size.
57
  *
58
  * @since 1.9
 
59
  * @author Grégory Viguier
60
  *
61
  * @return array {
77
  * 0 means to not resize.
78
  *
79
  * @since 1.9.8
 
80
  * @author Grégory Viguier
81
  *
82
  * @return int
86
  }
87
 
88
  /**
89
+ * Tell if the optimization process is allowed resize in this context.
90
  *
91
  * @since 1.9
 
92
  * @author Grégory Viguier
93
  *
94
  * @return bool
95
  */
96
+ public function can_resize() {
97
  return false;
98
  }
99
 
100
  /**
101
+ * Tell if the optimization process is allowed to backup in this context.
102
  *
103
  * @since 1.9
 
104
  * @author Grégory Viguier
105
  *
106
  * @return bool
107
  */
108
+ public function can_backup() {
109
+ return false;
110
  }
111
 
112
  /**
113
  * Tell if the current user is allowed to operate Imagify in this context.
114
  *
115
  * @since 1.9
 
116
  * @author Grégory Viguier
117
  *
118
  * @param string $describer Capacity describer. See $this->get_capacity() for possible values. Can also be a "real" user capacity.
127
  * Tell if a user is allowed to operate Imagify in this context.
128
  *
129
  * @since 1.9
 
130
  * @author Grégory Viguier
131
  *
132
  * @param int $user_id A user ID.
142
  * Get user capacity to operate Imagify in this context.
143
  *
144
  * @since 1.9
 
145
  * @author Grégory Viguier
146
  *
147
  * @param string $describer Capacity describer. Possible values are like 'manage', 'bulk-optimize', 'manual-optimize', 'auto-optimize'.
classes/Context/WP.php CHANGED
@@ -1,8 +1,6 @@
1
  <?php
2
  namespace Imagify\Context;
3
 
4
- defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
5
-
6
  /**
7
  * Context class used for the WP media library.
8
  *
@@ -17,7 +15,6 @@ class WP extends AbstractContext {
17
  *
18
  * @var string
19
  * @since 1.9
20
- * @access protected
21
  * @author Grégory Viguier
22
  */
23
  protected $context = 'wp';
@@ -27,7 +24,6 @@ class WP extends AbstractContext {
27
  *
28
  * @var int
29
  * @since 1.9.8
30
- * @access protected
31
  * @author Grégory Viguier
32
  */
33
  protected $resizing_threshold;
@@ -36,7 +32,6 @@ class WP extends AbstractContext {
36
  * Get the thumbnail sizes for this context, except the full size.
37
  *
38
  * @since 1.9
39
- * @access public
40
  * @author Grégory Viguier
41
  *
42
  * @return array {
@@ -64,7 +59,6 @@ class WP extends AbstractContext {
64
  * 0 means to not resize.
65
  *
66
  * @since 1.9.8
67
- * @access public
68
  * @author Grégory Viguier
69
  *
70
  * @return int
@@ -87,7 +81,6 @@ class WP extends AbstractContext {
87
  * Tell if the optimization process is allowed to backup in this context.
88
  *
89
  * @since 1.9
90
- * @access public
91
  * @author Grégory Viguier
92
  *
93
  * @return bool
@@ -102,30 +95,10 @@ class WP extends AbstractContext {
102
  return $this->can_backup;
103
  }
104
 
105
- /**
106
- * Tell if the optimization process is allowed to keep exif in this context.
107
- *
108
- * @since 1.9
109
- * @access public
110
- * @author Grégory Viguier
111
- *
112
- * @return bool
113
- */
114
- public function can_keep_exif() {
115
- if ( isset( $this->can_keep_exif ) ) {
116
- return $this->can_keep_exif;
117
- }
118
-
119
- $this->can_keep_exif = get_imagify_option( 'exif' );
120
-
121
- return $this->can_keep_exif;
122
- }
123
-
124
  /**
125
  * Get user capacity to operate Imagify in this context.
126
  *
127
  * @since 1.9
128
- * @access public
129
  * @author Grégory Viguier
130
  *
131
  * @param string $describer Capacity describer. Possible values are like 'manage', 'bulk-optimize', 'manual-optimize', 'auto-optimize'.
1
  <?php
2
  namespace Imagify\Context;
3
 
 
 
4
  /**
5
  * Context class used for the WP media library.
6
  *
15
  *
16
  * @var string
17
  * @since 1.9
 
18
  * @author Grégory Viguier
19
  */
20
  protected $context = 'wp';
24
  *
25
  * @var int
26
  * @since 1.9.8
 
27
  * @author Grégory Viguier
28
  */
29
  protected $resizing_threshold;
32
  * Get the thumbnail sizes for this context, except the full size.
33
  *
34
  * @since 1.9
 
35
  * @author Grégory Viguier
36
  *
37
  * @return array {
59
  * 0 means to not resize.
60
  *
61
  * @since 1.9.8
 
62
  * @author Grégory Viguier
63
  *
64
  * @return int
81
  * Tell if the optimization process is allowed to backup in this context.
82
  *
83
  * @since 1.9
 
84
  * @author Grégory Viguier
85
  *
86
  * @return bool
95
  return $this->can_backup;
96
  }
97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  /**
99
  * Get user capacity to operate Imagify in this context.
100
  *
101
  * @since 1.9
 
102
  * @author Grégory Viguier
103
  *
104
  * @param string $describer Capacity describer. Possible values are like 'manage', 'bulk-optimize', 'manual-optimize', 'auto-optimize'.
classes/Optimization/File.php CHANGED
@@ -3,8 +3,6 @@ namespace Imagify\Optimization;
3
 
4
  use Imagify_Requirements;
5
 
6
- defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
7
-
8
  /**
9
  * A generic optimization class focussed on the file itself.
10
  *
@@ -18,7 +16,6 @@ class File {
18
  *
19
  * @var string
20
  * @since 1.9
21
- * @access protected
22
  * @author Grégory Viguier
23
  */
24
  protected $path;
@@ -28,7 +25,6 @@ class File {
28
  *
29
  * @var bool
30
  * @since 1.9
31
- * @access protected
32
  * @see $this->is_image()
33
  * @author Grégory Viguier
34
  */
@@ -39,7 +35,6 @@ class File {
39
  *
40
  * @var array
41
  * @since 1.9
42
- * @access protected
43
  * @see $this->get_file_type()
44
  * @author Grégory Viguier
45
  */
@@ -50,7 +45,6 @@ class File {
50
  *
51
  * @var \Imagify_Filesystem
52
  * @since 1.9
53
- * @access protected
54
  * @author Grégory Viguier
55
  */
56
  protected $filesystem;
@@ -60,7 +54,6 @@ class File {
60
  *
61
  * @var \WP_Image_Editor_Imagick|\WP_Image_Editor_GD|WP_Error.
62
  * @since 1.9
63
- * @access protected
64
  * @author Grégory Viguier
65
  */
66
  protected $editor;
@@ -70,7 +63,6 @@ class File {
70
  *
71
  * @var array
72
  * @since 1.9
73
- * @access protected
74
  * @author Grégory Viguier
75
  */
76
  protected $options = [];
@@ -79,7 +71,6 @@ class File {
79
  * The constructor.
80
  *
81
  * @since 1.9
82
- * @access public
83
  * @author Grégory Viguier
84
  *
85
  * @param string $file_path Absolute path to the file.
@@ -93,7 +84,6 @@ class File {
93
  * Tell if the file is valid.
94
  *
95
  * @since 1.9
96
- * @access public
97
  * @author Grégory Viguier
98
  *
99
  * @return bool
@@ -106,7 +96,6 @@ class File {
106
  * Tell if the file can be processed.
107
  *
108
  * @since 1.9
109
- * @access public
110
  * @author Grégory Viguier
111
  *
112
  * @return bool|WP_Error
@@ -178,7 +167,6 @@ class File {
178
  * Resize (and rotate) an image if it is bigger than the maximum width provided.
179
  *
180
  * @since 1.9
181
- * @access public
182
  * @author Grégory Viguier
183
  * @author Remy Perona
184
  *
@@ -301,7 +289,6 @@ class File {
301
  * Warning: If the destination file already exists, it will be overwritten.
302
  *
303
  * @since 1.9
304
- * @access protected
305
  * @author Grégory Viguier
306
  *
307
  * @param array $destination {
@@ -386,7 +373,6 @@ class File {
386
  *
387
  * @since 1.9
388
  * @since 1.9.8 Added $backup_source argument.
389
- * @access public
390
  * @author Grégory Viguier
391
  *
392
  * @param string $backup_path The backup path.
@@ -444,7 +430,6 @@ class File {
444
  * Optimize a file with Imagify.
445
  *
446
  * @since 1.9
447
- * @access public
448
  * @author Grégory Viguier
449
  *
450
  * @param array $args {
@@ -453,7 +438,6 @@ class File {
453
  * @type bool $backup False to prevent backup. True to follow the user's setting. A backup can't be forced.
454
  * @type string $backup_path If a backup must be done, this is the path to use. Default is the backup path used for the WP Media Library.
455
  * @type int $optimization_level The optimization level (2=ultra, 1=aggressive, 0=normal).
456
- * @type bool $keep_exif To keep exif data or not.
457
  * @type string $convert Set to 'webp' to convert the image to WebP.
458
  * @type string $context The context.
459
  * @type int $original_size The file size, sent to the API.
@@ -466,7 +450,6 @@ class File {
466
  'backup_path' => null,
467
  'backup_source' => null,
468
  'optimization_level' => 0,
469
- 'keep_exif' => true,
470
  'convert' => '',
471
  'context' => 'wp',
472
  'original_size' => 0,
@@ -519,7 +502,7 @@ class File {
519
  'normal' => 0 === $args['optimization_level'],
520
  'aggressive' => 1 === $args['optimization_level'],
521
  'ultra' => 2 === $args['optimization_level'],
522
- 'keep_exif' => $args['keep_exif'],
523
  'original_size' => $args['original_size'],
524
  'context' => $args['context'],
525
  ];
@@ -596,7 +579,6 @@ class File {
596
  * Get an image editor instance (WP_Image_Editor_Imagick, WP_Image_Editor_GD).
597
  *
598
  * @since 1.9
599
- * @access protected
600
  * @author Grégory Viguier
601
  *
602
  * @return WP_Image_Editor_Imagick|WP_Image_Editor_GD|WP_Error
@@ -631,7 +613,6 @@ class File {
631
  * Get the image editor methods we will use.
632
  *
633
  * @since 1.9
634
- * @access protected
635
  * @author Grégory Viguier
636
  *
637
  * @return array
@@ -666,7 +647,6 @@ class File {
666
  * Check if a file exceeds the weight limit (> 5mo).
667
  *
668
  * @since 1.9
669
- * @access public
670
  * @author Grégory Viguier
671
  *
672
  * @return bool
@@ -685,7 +665,6 @@ class File {
685
  * Tell if the current file is supported for a given context.
686
  *
687
  * @since 1.9
688
- * @access public
689
  * @see imagify_get_mime_types()
690
  * @author Grégory Viguier
691
  *
@@ -700,7 +679,6 @@ class File {
700
  * Tell if the file is an image.
701
  *
702
  * @since 1.9
703
- * @access public
704
  * @author Grégory Viguier
705
  *
706
  * @return bool
@@ -719,7 +697,6 @@ class File {
719
  * Tell if the file is a pdf.
720
  *
721
  * @since 1.9
722
- * @access public
723
  * @author Grégory Viguier
724
  *
725
  * @return bool
@@ -732,7 +709,6 @@ class File {
732
  * Get the file mime type.
733
  *
734
  * @since 1.9
735
- * @access public
736
  * @author Grégory Viguier
737
  *
738
  * @return string
@@ -745,7 +721,6 @@ class File {
745
  * Get the file extension.
746
  *
747
  * @since 1.9
748
- * @access public
749
  * @author Grégory Viguier
750
  *
751
  * @return string|null
@@ -758,7 +733,6 @@ class File {
758
  * Get the file path.
759
  *
760
  * @since 1.9
761
- * @access public
762
  * @author Grégory Viguier
763
  *
764
  * @return string
@@ -771,7 +745,6 @@ class File {
771
  * Replace the file extension by WebP.
772
  *
773
  * @since 1.9
774
- * @access public
775
  * @author Grégory Viguier
776
  *
777
  * @return string|bool The file path on success. False if not an image or on failure.
@@ -793,7 +766,6 @@ class File {
793
  * Rejects "path/to/.webp" files.
794
  *
795
  * @since 1.9
796
- * @access public
797
  * @author Grégory Viguier
798
  *
799
  * @return bool
@@ -806,7 +778,6 @@ class File {
806
  * Get the file mime type + file extension.
807
  *
808
  * @since 1.9
809
- * @access protected
810
  * @see wp_check_filetype()
811
  * @author Grégory Viguier
812
  *
@@ -838,7 +809,6 @@ class File {
838
  * If the media is an image, get its width and height.
839
  *
840
  * @since 1.9
841
- * @access public
842
  * @author Grégory Viguier
843
  *
844
  * @return array
@@ -863,7 +833,6 @@ class File {
863
  * Get a plugin’s option.
864
  *
865
  * @since 1.9
866
- * @access protected
867
  * @author Grégory Viguier
868
  *
869
  * @param string $option_name The option nme.
3
 
4
  use Imagify_Requirements;
5
 
 
 
6
  /**
7
  * A generic optimization class focussed on the file itself.
8
  *
16
  *
17
  * @var string
18
  * @since 1.9
 
19
  * @author Grégory Viguier
20
  */
21
  protected $path;
25
  *
26
  * @var bool
27
  * @since 1.9
 
28
  * @see $this->is_image()
29
  * @author Grégory Viguier
30
  */
35
  *
36
  * @var array
37
  * @since 1.9
 
38
  * @see $this->get_file_type()
39
  * @author Grégory Viguier
40
  */
45
  *
46
  * @var \Imagify_Filesystem
47
  * @since 1.9
 
48
  * @author Grégory Viguier
49
  */
50
  protected $filesystem;
54
  *
55
  * @var \WP_Image_Editor_Imagick|\WP_Image_Editor_GD|WP_Error.
56
  * @since 1.9
 
57
  * @author Grégory Viguier
58
  */
59
  protected $editor;
63
  *
64
  * @var array
65
  * @since 1.9
 
66
  * @author Grégory Viguier
67
  */
68
  protected $options = [];
71
  * The constructor.
72
  *
73
  * @since 1.9
 
74
  * @author Grégory Viguier
75
  *
76
  * @param string $file_path Absolute path to the file.
84
  * Tell if the file is valid.
85
  *
86
  * @since 1.9
 
87
  * @author Grégory Viguier
88
  *
89
  * @return bool
96
  * Tell if the file can be processed.
97
  *
98
  * @since 1.9
 
99
  * @author Grégory Viguier
100
  *
101
  * @return bool|WP_Error
167
  * Resize (and rotate) an image if it is bigger than the maximum width provided.
168
  *
169
  * @since 1.9
 
170
  * @author Grégory Viguier
171
  * @author Remy Perona
172
  *
289
  * Warning: If the destination file already exists, it will be overwritten.
290
  *
291
  * @since 1.9
 
292
  * @author Grégory Viguier
293
  *
294
  * @param array $destination {
373
  *
374
  * @since 1.9
375
  * @since 1.9.8 Added $backup_source argument.
 
376
  * @author Grégory Viguier
377
  *
378
  * @param string $backup_path The backup path.
430
  * Optimize a file with Imagify.
431
  *
432
  * @since 1.9
 
433
  * @author Grégory Viguier
434
  *
435
  * @param array $args {
438
  * @type bool $backup False to prevent backup. True to follow the user's setting. A backup can't be forced.
439
  * @type string $backup_path If a backup must be done, this is the path to use. Default is the backup path used for the WP Media Library.
440
  * @type int $optimization_level The optimization level (2=ultra, 1=aggressive, 0=normal).
 
441
  * @type string $convert Set to 'webp' to convert the image to WebP.
442
  * @type string $context The context.
443
  * @type int $original_size The file size, sent to the API.
450
  'backup_path' => null,
451
  'backup_source' => null,
452
  'optimization_level' => 0,
 
453
  'convert' => '',
454
  'context' => 'wp',
455
  'original_size' => 0,
502
  'normal' => 0 === $args['optimization_level'],
503
  'aggressive' => 1 === $args['optimization_level'],
504
  'ultra' => 2 === $args['optimization_level'],
505
+ 'keep_exif' => true,
506
  'original_size' => $args['original_size'],
507
  'context' => $args['context'],
508
  ];
579
  * Get an image editor instance (WP_Image_Editor_Imagick, WP_Image_Editor_GD).
580
  *
581
  * @since 1.9
 
582
  * @author Grégory Viguier
583
  *
584
  * @return WP_Image_Editor_Imagick|WP_Image_Editor_GD|WP_Error
613
  * Get the image editor methods we will use.
614
  *
615
  * @since 1.9
 
616
  * @author Grégory Viguier
617
  *
618
  * @return array
647
  * Check if a file exceeds the weight limit (> 5mo).
648
  *
649
  * @since 1.9
 
650
  * @author Grégory Viguier
651
  *
652
  * @return bool
665
  * Tell if the current file is supported for a given context.
666
  *
667
  * @since 1.9
 
668
  * @see imagify_get_mime_types()
669
  * @author Grégory Viguier
670
  *
679
  * Tell if the file is an image.
680
  *
681
  * @since 1.9
 
682
  * @author Grégory Viguier
683
  *
684
  * @return bool
697
  * Tell if the file is a pdf.
698
  *
699
  * @since 1.9
 
700
  * @author Grégory Viguier
701
  *
702
  * @return bool
709
  * Get the file mime type.
710
  *
711
  * @since 1.9
 
712
  * @author Grégory Viguier
713
  *
714
  * @return string
721
  * Get the file extension.
722
  *
723
  * @since 1.9
 
724
  * @author Grégory Viguier
725
  *
726
  * @return string|null
733
  * Get the file path.
734
  *
735
  * @since 1.9
 
736
  * @author Grégory Viguier
737
  *
738
  * @return string
745
  * Replace the file extension by WebP.
746
  *
747
  * @since 1.9
 
748
  * @author Grégory Viguier
749
  *
750
  * @return string|bool The file path on success. False if not an image or on failure.
766
  * Rejects "path/to/.webp" files.
767
  *
768
  * @since 1.9
 
769
  * @author Grégory Viguier
770
  *
771
  * @return bool
778
  * Get the file mime type + file extension.
779
  *
780
  * @since 1.9
 
781
  * @see wp_check_filetype()
782
  * @author Grégory Viguier
783
  *
809
  * If the media is an image, get its width and height.
810
  *
811
  * @since 1.9
 
812
  * @author Grégory Viguier
813
  *
814
  * @return array
833
  * Get a plugin’s option.
834
  *
835
  * @since 1.9
 
836
  * @author Grégory Viguier
837
  *
838
  * @param string $option_name The option nme.
classes/Optimization/Process/AbstractProcess.php CHANGED
@@ -1,12 +1,11 @@
1
  <?php
2
  namespace Imagify\Optimization\Process;
3
 
 
4
  use Imagify\Job\MediaOptimization;
5
  use Imagify\Optimization\Data\DataInterface;
6
  use Imagify\Optimization\File;
7
 
8
- defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
9
-
10
  /**
11
  * Abstract class used to optimize medias.
12
  *
@@ -14,7 +13,7 @@ defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
14
  * @author Grégory Viguier
15
  */
16
  abstract class AbstractProcess implements ProcessInterface {
17
- use \Imagify\Deprecated\Traits\Optimization\Process\AbstractProcessDeprecatedTrait;
18
 
19
  /**
20
  * The suffix used in the thumbnail size name.
@@ -49,7 +48,6 @@ abstract class AbstractProcess implements ProcessInterface {
49
  *
50
  * @var DataInterface
51
  * @since 1.9
52
- * @access protected
53
  * @author Grégory Viguier
54
  */
55
  protected $data;
@@ -59,7 +57,6 @@ abstract class AbstractProcess implements ProcessInterface {
59
  *
60
  * @var array
61
  * @since 1.9
62
- * @access protected
63
  * @author Grégory Viguier
64
  */
65
  protected $data_format = [
@@ -76,7 +73,6 @@ abstract class AbstractProcess implements ProcessInterface {
76
  *
77
  * @var File
78
  * @since 1.9
79
- * @access protected
80
  * @author Grégory Viguier
81
  */
82
  protected $file;
@@ -86,7 +82,6 @@ abstract class AbstractProcess implements ProcessInterface {
86
  *
87
  * @var Imagify_Filesystem
88
  * @since 1.9
89
- * @access protected
90
  * @author Grégory Viguier
91
  */
92
  protected $filesystem;
@@ -96,7 +91,6 @@ abstract class AbstractProcess implements ProcessInterface {
96
  *
97
  * @var array
98
  * @since 1.9
99
- * @access protected
100
  * @author Grégory Viguier
101
  */
102
  protected $options = [];
@@ -105,7 +99,6 @@ abstract class AbstractProcess implements ProcessInterface {
105
  * The constructor.
106
  *
107
  * @since 1.9
108
- * @access public
109
  * @see self::constructor_accepts()
110
  * @author Grégory Viguier
111
  *
@@ -129,7 +122,6 @@ abstract class AbstractProcess implements ProcessInterface {
129
  * Tell if the given entry can be accepted in the constructor.
130
  *
131
  * @since 1.9
132
- * @access public
133
  * @author Grégory Viguier
134
  *
135
  * @param mixed $id Whatever.
@@ -150,7 +142,6 @@ abstract class AbstractProcess implements ProcessInterface {
150
  * Get the data instance.
151
  *
152
  * @since 1.9
153
- * @access public
154
  * @author Grégory Viguier
155
  *
156
  * @return DataInterface|false
@@ -163,7 +154,6 @@ abstract class AbstractProcess implements ProcessInterface {
163
  * Get the media instance.
164
  *
165
  * @since 1.9
166
- * @access public
167
  * @author Grégory Viguier
168
  *
169
  * @return MediaInterface|false
@@ -180,7 +170,6 @@ abstract class AbstractProcess implements ProcessInterface {
180
  * Get the File instance of the original file.
181
  *
182
  * @since 1.9.8
183
- * @access public
184
  * @author Grégory Viguier
185
  *
186
  * @return File|false
@@ -203,7 +192,6 @@ abstract class AbstractProcess implements ProcessInterface {
203
  * Get the File instance of the full size file.
204
  *
205
  * @since 1.9.8
206
- * @access public
207
  * @author Grégory Viguier
208
  *
209
  * @return File|false
@@ -226,7 +214,6 @@ abstract class AbstractProcess implements ProcessInterface {
226
  * Tell if the current media is valid.
227
  *
228
  * @since 1.9
229
- * @access public
230
  * @author Grégory Viguier
231
  *
232
  * @return bool
@@ -239,7 +226,6 @@ abstract class AbstractProcess implements ProcessInterface {
239
  * Tell if the current user is allowed to operate Imagify in this context.
240
  *
241
  * @since 1.9
242
- * @access public
243
  * @author Grégory Viguier
244
  *
245
  * @param string $describer Capacity describer. See \Imagify\Context\ContextInterface->get_capacity() for possible values. Can also be a "real" user capacity.
@@ -264,7 +250,6 @@ abstract class AbstractProcess implements ProcessInterface {
264
  * Optimize a media files.
265
  *
266
  * @since 1.9
267
- * @access public
268
  * @author Grégory Viguier
269
  *
270
  * @param int $optimization_level The optimization level (0=normal, 1=aggressive, 2=ultra).
@@ -311,7 +296,6 @@ abstract class AbstractProcess implements ProcessInterface {
311
  * Re-optimize a media files with a different level.
312
  *
313
  * @since 1.9
314
- * @access public
315
  * @author Grégory Viguier
316
  *
317
  * @param int $optimization_level The optimization level (0=normal, 1=aggressive, 2=ultra).
@@ -356,7 +340,6 @@ abstract class AbstractProcess implements ProcessInterface {
356
  * Optimize several file sizes by pushing tasks into the queue.
357
  *
358
  * @since 1.9
359
- * @access public
360
  * @see MediaOptimization->task_before()
361
  * @see MediaOptimization->task_after()
362
  * @author Grégory Viguier
@@ -479,7 +462,6 @@ abstract class AbstractProcess implements ProcessInterface {
479
  * Optimize one file with Imagify directly.
480
  *
481
  * @since 1.9
482
- * @access public
483
  * @author Grégory Viguier
484
  *
485
  * @param string $size The media size.
@@ -683,7 +665,7 @@ abstract class AbstractProcess implements ProcessInterface {
683
  'backup_source' => 'full' === $thumb_size ? $media->get_original_path() : null,
684
  'optimization_level' => $optimization_level,
685
  'convert' => $webp ? 'webp' : '',
686
- 'keep_exif' => $this->can_keep_exif( $size ),
687
  'context' => $media->get_context(),
688
  'original_size' => $response['file_size'],
689
  ] );
@@ -740,7 +722,6 @@ abstract class AbstractProcess implements ProcessInterface {
740
  * Compare the file size of a file and its WebP version: if the WebP version is heavier than the non-WebP file, delete it.
741
  *
742
  * @since 1.9.4
743
- * @access protected
744
  * @author Grégory Viguier
745
  *
746
  * @param array $args {
@@ -850,7 +831,6 @@ abstract class AbstractProcess implements ProcessInterface {
850
  * Restore the media files from the backup file.
851
  *
852
  * @since 1.9
853
- * @access public
854
  * @author Grégory Viguier
855
  *
856
  * @return bool|WP_Error True on success. A \WP_Error instance on failure.
@@ -963,7 +943,6 @@ abstract class AbstractProcess implements ProcessInterface {
963
  * Restore the thumbnails.
964
  *
965
  * @since 1.9
966
- * @access protected
967
  * @author Grégory Viguier
968
  *
969
  * @return bool|WP_Error True on success. A \WP_Error instance on failure.
@@ -992,7 +971,6 @@ abstract class AbstractProcess implements ProcessInterface {
992
  * Delete the backup file.
993
  *
994
  * @since 1.9
995
- * @access public
996
  * @author Grégory Viguier
997
  */
998
  public function delete_backup() {
@@ -1022,7 +1000,6 @@ abstract class AbstractProcess implements ProcessInterface {
1022
  * Create a temporary copy of a size file.
1023
  *
1024
  * @since 1.9
1025
- * @access protected
1026
  * @author Grégory Viguier
1027
  *
1028
  * @param string $size The image size name.
@@ -1172,7 +1149,6 @@ abstract class AbstractProcess implements ProcessInterface {
1172
  * Get the path to a temporary copy of a size file.
1173
  *
1174
  * @since 1.9
1175
- * @access protected
1176
  * @author Grégory Viguier
1177
  *
1178
  * @param string $size The image size name.
@@ -1212,7 +1188,6 @@ abstract class AbstractProcess implements ProcessInterface {
1212
  * Maybe resize an image.
1213
  *
1214
  * @since 1.9
1215
- * @access public
1216
  * @author Grégory Viguier
1217
  *
1218
  * @param string $size The size name.
@@ -1322,7 +1297,6 @@ abstract class AbstractProcess implements ProcessInterface {
1322
  * Tell if a size should be resized.
1323
  *
1324
  * @since 1.9
1325
- * @access protected
1326
  * @author Grégory Viguier
1327
  *
1328
  * @param string $size The size name.
@@ -1350,7 +1324,6 @@ abstract class AbstractProcess implements ProcessInterface {
1350
  * Tell if a size should be backuped.
1351
  *
1352
  * @since 1.9
1353
- * @access protected
1354
  * @author Grégory Viguier
1355
  *
1356
  * @param string $size The size name.
@@ -1369,29 +1342,6 @@ abstract class AbstractProcess implements ProcessInterface {
1369
  return $this->get_media()->get_context_instance()->can_backup();
1370
  }
1371
 
1372
- /**
1373
- * Tell if a size should keep exif.
1374
- *
1375
- * @since 1.9
1376
- * @access protected
1377
- * @author Grégory Viguier
1378
- *
1379
- * @param string $size The size name.
1380
- * @return bool
1381
- */
1382
- protected function can_keep_exif( $size ) {
1383
- if ( ! $this->is_valid() ) {
1384
- return false;
1385
- }
1386
-
1387
- if ( 'full' !== $size && 'full' . static::WEBP_SUFFIX !== $size ) {
1388
- // We keep exif only on the main file and its WebP version.
1389
- return false;
1390
- }
1391
-
1392
- return $this->get_media()->get_context_instance()->can_keep_exif();
1393
- }
1394
-
1395
 
1396
  /** ----------------------------------------------------------------------------------------- */
1397
  /** WEBP ==================================================================================== */
@@ -1401,7 +1351,6 @@ abstract class AbstractProcess implements ProcessInterface {
1401
  * Generate WebP images if they are missing.
1402
  *
1403
  * @since 1.9
1404
- * @access public
1405
  * @author Grégory Viguier
1406
  *
1407
  * @return bool|WP_Error True if successfully launched. A \WP_Error instance on failure.
@@ -1459,7 +1408,6 @@ abstract class AbstractProcess implements ProcessInterface {
1459
  *
1460
  * @since 1.9
1461
  * @since 1.9.6 Return WP_Error or true.
1462
- * @access public
1463
  * @author Grégory Viguier
1464
  *
1465
  * @param bool $keep_full Set to true to keep the full size.
@@ -1518,7 +1466,6 @@ abstract class AbstractProcess implements ProcessInterface {
1518
  *
1519
  * @since 1.9
1520
  * @since 1.9.6 Return WP_Error or true.
1521
- * @access protected
1522
  * @author Grégory Viguier
1523
  *
1524
  * @param string $file_path Path to the non-WebP file.
@@ -1582,7 +1529,6 @@ abstract class AbstractProcess implements ProcessInterface {
1582
  * Tell if a thumbnail size is an "Imagify WebP" size.
1583
  *
1584
  * @since 1.9
1585
- * @access public
1586
  * @author Grégory Viguier
1587
  *
1588
  * @param string $size_name The size name.
@@ -1606,7 +1552,6 @@ abstract class AbstractProcess implements ProcessInterface {
1606
  * Tell if the media has WebP versions.
1607
  *
1608
  * @since 1.9
1609
- * @access public
1610
  * @author Grégory Viguier
1611
  *
1612
  * @return bool
@@ -1637,7 +1582,6 @@ abstract class AbstractProcess implements ProcessInterface {
1637
  * Make sure the file is an image before using this method.
1638
  *
1639
  * @since 1.9.5
1640
- * @access public
1641
  * @author Grégory Viguier
1642
  *
1643
  * @param string $file_path Path to the file.
@@ -1684,7 +1628,6 @@ abstract class AbstractProcess implements ProcessInterface {
1684
  * Tell if a process is running for this media.
1685
  *
1686
  * @since 1.9
1687
- * @access public
1688
  * @author Grégory Viguier
1689
  *
1690
  * @return string|bool The action if locked ('optimizing' or 'restoring'). False if not locked.
@@ -1710,7 +1653,6 @@ abstract class AbstractProcess implements ProcessInterface {
1710
  * Set the running status to "running" for 10 minutes.
1711
  *
1712
  * @since 1.9
1713
- * @access public
1714
  * @author Grégory Viguier
1715
  *
1716
  * @param string $action The action performed behind this lock: 'optimizing' or 'restoring'.
@@ -1733,7 +1675,6 @@ abstract class AbstractProcess implements ProcessInterface {
1733
  * Unset the running status.
1734
  *
1735
  * @since 1.9
1736
- * @access public
1737
  * @author Grégory Viguier
1738
  */
1739
  public function unlock() {
@@ -1752,7 +1693,6 @@ abstract class AbstractProcess implements ProcessInterface {
1752
  * Get the name of the transient that stores the lock status.
1753
  *
1754
  * @since 1.9
1755
- * @access protected
1756
  * @author Grégory Viguier
1757
  *
1758
  * @return string|bool The name on success. False on failure.
@@ -1775,7 +1715,6 @@ abstract class AbstractProcess implements ProcessInterface {
1775
  * Validate the lock action.
1776
  *
1777
  * @since 1.9
1778
- * @access protected
1779
  * @author Grégory Viguier
1780
  *
1781
  * @param string $action The action performed behind this lock: 'optimizing' or 'restoring'.
@@ -1804,7 +1743,6 @@ abstract class AbstractProcess implements ProcessInterface {
1804
  * Tell if a size already has optimization data.
1805
  *
1806
  * @since 1.9
1807
- * @access public
1808
  * @author Grégory Viguier
1809
  *
1810
  * @param string $size The size name.
@@ -1820,7 +1758,6 @@ abstract class AbstractProcess implements ProcessInterface {
1820
  * Update the optimization data for a size.
1821
  *
1822
  * @since 1.9
1823
- * @access public
1824
  * @author Grégory Viguier
1825
  *
1826
  * @param object $response The API response.
@@ -1919,7 +1856,6 @@ abstract class AbstractProcess implements ProcessInterface {
1919
  * Get a plugin’s option.
1920
  *
1921
  * @since 1.9
1922
- * @access protected
1923
  * @author Grégory Viguier
1924
  *
1925
  * @param string $option_name The option nme.
@@ -1940,7 +1876,6 @@ abstract class AbstractProcess implements ProcessInterface {
1940
  * If not provided (false, null), fallback to the level set in the plugin's settings.
1941
  *
1942
  * @since 1.9
1943
- * @access protected
1944
  * @author Grégory Viguier
1945
  *
1946
  * @param mixed $optimization_level The optimization level.
1
  <?php
2
  namespace Imagify\Optimization\Process;
3
 
4
+ use Imagify\Deprecated\Traits\Optimization\Process\AbstractProcessDeprecatedTrait;
5
  use Imagify\Job\MediaOptimization;
6
  use Imagify\Optimization\Data\DataInterface;
7
  use Imagify\Optimization\File;
8
 
 
 
9
  /**
10
  * Abstract class used to optimize medias.
11
  *
13
  * @author Grégory Viguier
14
  */
15
  abstract class AbstractProcess implements ProcessInterface {
16
+ use AbstractProcessDeprecatedTrait;
17
 
18
  /**
19
  * The suffix used in the thumbnail size name.
48
  *
49
  * @var DataInterface
50
  * @since 1.9
 
51
  * @author Grégory Viguier
52
  */
53
  protected $data;
57
  *
58
  * @var array
59
  * @since 1.9
 
60
  * @author Grégory Viguier
61
  */
62
  protected $data_format = [
73
  *
74
  * @var File
75
  * @since 1.9
 
76
  * @author Grégory Viguier
77
  */
78
  protected $file;
82
  *
83
  * @var Imagify_Filesystem
84
  * @since 1.9
 
85
  * @author Grégory Viguier
86
  */
87
  protected $filesystem;
91
  *
92
  * @var array
93
  * @since 1.9
 
94
  * @author Grégory Viguier
95
  */
96
  protected $options = [];
99
  * The constructor.
100
  *
101
  * @since 1.9
 
102
  * @see self::constructor_accepts()
103
  * @author Grégory Viguier
104
  *
122
  * Tell if the given entry can be accepted in the constructor.
123
  *
124
  * @since 1.9
 
125
  * @author Grégory Viguier
126
  *
127
  * @param mixed $id Whatever.
142
  * Get the data instance.
143
  *
144
  * @since 1.9
 
145
  * @author Grégory Viguier
146
  *
147
  * @return DataInterface|false
154
  * Get the media instance.
155
  *
156
  * @since 1.9
 
157
  * @author Grégory Viguier
158
  *
159
  * @return MediaInterface|false
170
  * Get the File instance of the original file.
171
  *
172
  * @since 1.9.8
 
173
  * @author Grégory Viguier
174
  *
175
  * @return File|false
192
  * Get the File instance of the full size file.
193
  *
194
  * @since 1.9.8
 
195
  * @author Grégory Viguier
196
  *
197
  * @return File|false
214
  * Tell if the current media is valid.
215
  *
216
  * @since 1.9
 
217
  * @author Grégory Viguier
218
  *
219
  * @return bool
226
  * Tell if the current user is allowed to operate Imagify in this context.
227
  *
228
  * @since 1.9
 
229
  * @author Grégory Viguier
230
  *
231
  * @param string $describer Capacity describer. See \Imagify\Context\ContextInterface->get_capacity() for possible values. Can also be a "real" user capacity.
250
  * Optimize a media files.
251
  *
252
  * @since 1.9
 
253
  * @author Grégory Viguier
254
  *
255
  * @param int $optimization_level The optimization level (0=normal, 1=aggressive, 2=ultra).
296
  * Re-optimize a media files with a different level.
297
  *
298
  * @since 1.9
 
299
  * @author Grégory Viguier
300
  *
301
  * @param int $optimization_level The optimization level (0=normal, 1=aggressive, 2=ultra).
340
  * Optimize several file sizes by pushing tasks into the queue.
341
  *
342
  * @since 1.9
 
343
  * @see MediaOptimization->task_before()
344
  * @see MediaOptimization->task_after()
345
  * @author Grégory Viguier
462
  * Optimize one file with Imagify directly.
463
  *
464
  * @since 1.9
 
465
  * @author Grégory Viguier
466
  *
467
  * @param string $size The media size.
665
  'backup_source' => 'full' === $thumb_size ? $media->get_original_path() : null,
666
  'optimization_level' => $optimization_level,
667
  'convert' => $webp ? 'webp' : '',
668
+ 'keep_exif' => true,
669
  'context' => $media->get_context(),
670
  'original_size' => $response['file_size'],
671
  ] );
722
  * Compare the file size of a file and its WebP version: if the WebP version is heavier than the non-WebP file, delete it.
723
  *
724
  * @since 1.9.4
 
725
  * @author Grégory Viguier
726
  *
727
  * @param array $args {
831
  * Restore the media files from the backup file.
832
  *
833
  * @since 1.9
 
834
  * @author Grégory Viguier
835
  *
836
  * @return bool|WP_Error True on success. A \WP_Error instance on failure.
943
  * Restore the thumbnails.
944
  *
945
  * @since 1.9
 
946
  * @author Grégory Viguier
947
  *
948
  * @return bool|WP_Error True on success. A \WP_Error instance on failure.
971
  * Delete the backup file.
972
  *
973
  * @since 1.9
 
974
  * @author Grégory Viguier
975
  */
976
  public function delete_backup() {
1000
  * Create a temporary copy of a size file.
1001
  *
1002
  * @since 1.9
 
1003
  * @author Grégory Viguier
1004
  *
1005
  * @param string $size The image size name.
1149
  * Get the path to a temporary copy of a size file.
1150
  *
1151
  * @since 1.9
 
1152
  * @author Grégory Viguier
1153
  *
1154
  * @param string $size The image size name.
1188
  * Maybe resize an image.
1189
  *
1190
  * @since 1.9
 
1191
  * @author Grégory Viguier
1192
  *
1193
  * @param string $size The size name.
1297
  * Tell if a size should be resized.
1298
  *
1299
  * @since 1.9
 
1300
  * @author Grégory Viguier
1301
  *
1302
  * @param string $size The size name.
1324
  * Tell if a size should be backuped.
1325
  *
1326
  * @since 1.9
 
1327
  * @author Grégory Viguier
1328
  *
1329
  * @param string $size The size name.
1342
  return $this->get_media()->get_context_instance()->can_backup();
1343
  }
1344
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1345
 
1346
  /** ----------------------------------------------------------------------------------------- */
1347
  /** WEBP ==================================================================================== */
1351
  * Generate WebP images if they are missing.
1352
  *
1353
  * @since 1.9
 
1354
  * @author Grégory Viguier
1355
  *
1356
  * @return bool|WP_Error True if successfully launched. A \WP_Error instance on failure.
1408
  *
1409
  * @since 1.9
1410
  * @since 1.9.6 Return WP_Error or true.
 
1411
  * @author Grégory Viguier
1412
  *
1413
  * @param bool $keep_full Set to true to keep the full size.
1466
  *
1467
  * @since 1.9
1468
  * @since 1.9.6 Return WP_Error or true.
 
1469
  * @author Grégory Viguier
1470
  *
1471
  * @param string $file_path Path to the non-WebP file.
1529
  * Tell if a thumbnail size is an "Imagify WebP" size.
1530
  *
1531
  * @since 1.9
 
1532
  * @author Grégory Viguier
1533
  *
1534
  * @param string $size_name The size name.
1552
  * Tell if the media has WebP versions.
1553
  *
1554
  * @since 1.9
 
1555
  * @author Grégory Viguier
1556
  *
1557
  * @return bool
1582
  * Make sure the file is an image before using this method.
1583
  *
1584
  * @since 1.9.5
 
1585
  * @author Grégory Viguier
1586
  *
1587
  * @param string $file_path Path to the file.
1628
  * Tell if a process is running for this media.
1629
  *
1630
  * @since 1.9
 
1631
  * @author Grégory Viguier
1632
  *
1633
  * @return string|bool The action if locked ('optimizing' or 'restoring'). False if not locked.
1653
  * Set the running status to "running" for 10 minutes.
1654
  *
1655
  * @since 1.9
 
1656
  * @author Grégory Viguier
1657
  *
1658
  * @param string $action The action performed behind this lock: 'optimizing' or 'restoring'.
1675
  * Unset the running status.
1676
  *
1677
  * @since 1.9
 
1678
  * @author Grégory Viguier
1679
  */
1680
  public function unlock() {
1693
  * Get the name of the transient that stores the lock status.
1694
  *
1695
  * @since 1.9
 
1696
  * @author Grégory Viguier
1697
  *
1698
  * @return string|bool The name on success. False on failure.
1715
  * Validate the lock action.
1716
  *
1717
  * @since 1.9
 
1718
  * @author Grégory Viguier
1719
  *
1720
  * @param string $action The action performed behind this lock: 'optimizing' or 'restoring'.
1743
  * Tell if a size already has optimization data.
1744
  *
1745
  * @since 1.9
 
1746
  * @author Grégory Viguier
1747
  *
1748
  * @param string $size The size name.
1758
  * Update the optimization data for a size.
1759
  *
1760
  * @since 1.9
 
1761
  * @author Grégory Viguier
1762
  *
1763
  * @param object $response The API response.
1856
  * Get a plugin’s option.
1857
  *
1858
  * @since 1.9
 
1859
  * @author Grégory Viguier
1860
  *
1861
  * @param string $option_name The option nme.
1876
  * If not provided (false, null), fallback to the level set in the plugin's settings.
1877
  *
1878
  * @since 1.9
 
1879
  * @author Grégory Viguier
1880
  *
1881
  * @param mixed $optimization_level The optimization level.
classes/Webp/Picture/Display.php CHANGED
@@ -51,6 +51,7 @@ class Display {
51
  */
52
  public function init() {
53
  add_action( 'template_redirect', [ $this, 'start_content_process' ], -1000 );
 
54
  }
55
 
56
  /** ----------------------------------------------------------------------------------------- */
@@ -148,7 +149,8 @@ class Display {
148
  $content = str_replace( $image['tag'], $tag, $content );
149
  }
150
 
151
- return $content; }
 
152
 
153
  /**
154
  * Remove pre-existing <picture> tags.
51
  */
52
  public function init() {
53
  add_action( 'template_redirect', [ $this, 'start_content_process' ], -1000 );
54
+ add_filter( 'imagify_process_webp_content', [ $this, 'process_content' ] );
55
  }
56
 
57
  /** ----------------------------------------------------------------------------------------- */
149
  $content = str_replace( $image['tag'], $tag, $content );
150
  }
151
 
152
+ return $content;
153
+ }
154
 
155
  /**
156
  * Remove pre-existing <picture> tags.
imagify.php CHANGED
@@ -3,25 +3,23 @@
3
  * Plugin Name: Imagify
4
  * Plugin URI: https://wordpress.org/plugins/imagify/
5
  * Description: Dramatically reduce image file sizes without losing quality, make your website load faster, boost your SEO and save money on your bandwidth using Imagify, the new most advanced image optimization tool.
6
- * Version: 1.10
7
  * Requires at least: 5.3
8
  * Requires PHP: 7.0
9
- * Author: WP Media
10
- * Author URI: https://wp-media.me/
11
  * Licence: GPLv2
12
  *
13
  * Text Domain: imagify
14
  * Domain Path: languages
15
  *
16
- * Copyright 2019 WP Media
17
- *
18
- * @package WP-Media\Imagify\WordPress-Plugin
19
  */
20
 
21
  defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
22
 
23
  // Imagify defines.
24
- define( 'IMAGIFY_VERSION', '1.10' );
25
  define( 'IMAGIFY_SLUG', 'imagify' );
26
  define( 'IMAGIFY_FILE', __FILE__ );
27
  define( 'IMAGIFY_PATH', realpath( plugin_dir_path( IMAGIFY_FILE ) ) . '/' );
@@ -29,12 +27,14 @@ define( 'IMAGIFY_URL', plugin_dir_url( IMAGIFY_FILE ) );
29
  define( 'IMAGIFY_ASSETS_IMG_URL', IMAGIFY_URL . 'assets/images/' );
30
  define( 'IMAGIFY_MAX_BYTES', 5242880 );
31
  define( 'IMAGIFY_INT_MAX', PHP_INT_MAX - 30 );
 
 
 
32
  if ( ! defined( 'IMAGIFY_APP_DOMAIN' ) ) {
33
  define( 'IMAGIFY_APP_DOMAIN', 'https://app.imagify.io' );
34
  }
35
  define( 'IMAGIFY_APP_API_URL', IMAGIFY_APP_DOMAIN . '/api/' );
36
 
37
- add_action( 'plugins_loaded', '_imagify_init' );
38
  /**
39
  * Plugin init.
40
  *
@@ -62,6 +62,7 @@ function _imagify_init() {
62
 
63
  $plugin->init();
64
  }
 
65
 
66
  /**
67
  * Check if Imagify is activated on the network.
@@ -141,7 +142,6 @@ function imagify_load_translations() {
141
  load_plugin_textdomain( 'imagify', false, dirname( plugin_basename( IMAGIFY_FILE ) ) . '/languages/' );
142
  }
143
 
144
- register_activation_hook( IMAGIFY_FILE, 'imagify_set_activation' );
145
  /**
146
  * Set a transient on plugin activation, it will be used later to trigger activation hooks after the plugin is loaded.
147
  * The transient contains the ID of the user that activated the plugin.
@@ -161,8 +161,8 @@ function imagify_set_activation() {
161
  set_transient( 'imagify_activation', get_current_user_id(), 30 );
162
  }
163
  }
 
164
 
165
- register_deactivation_hook( IMAGIFY_FILE, 'imagify_deactivation' );
166
  /**
167
  * Trigger a hook on plugin deactivation.
168
  *
@@ -182,3 +182,5 @@ function imagify_deactivation() {
182
  */
183
  do_action( 'imagify_deactivation' );
184
  }
 
 
3
  * Plugin Name: Imagify
4
  * Plugin URI: https://wordpress.org/plugins/imagify/
5
  * Description: Dramatically reduce image file sizes without losing quality, make your website load faster, boost your SEO and save money on your bandwidth using Imagify, the new most advanced image optimization tool.
6
+ * Version: 2.0
7
  * Requires at least: 5.3
8
  * Requires PHP: 7.0
9
+ * Author: Imagify - Optimize Images & Convert WebP
10
+ * Author URI: https://imagify.io
11
  * Licence: GPLv2
12
  *
13
  * Text Domain: imagify
14
  * Domain Path: languages
15
  *
16
+ * Copyright 2022 WP Media
 
 
17
  */
18
 
19
  defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
20
 
21
  // Imagify defines.
22
+ define( 'IMAGIFY_VERSION', '2.0' );
23
  define( 'IMAGIFY_SLUG', 'imagify' );
24
  define( 'IMAGIFY_FILE', __FILE__ );
25
  define( 'IMAGIFY_PATH', realpath( plugin_dir_path( IMAGIFY_FILE ) ) . '/' );
27
  define( 'IMAGIFY_ASSETS_IMG_URL', IMAGIFY_URL . 'assets/images/' );
28
  define( 'IMAGIFY_MAX_BYTES', 5242880 );
29
  define( 'IMAGIFY_INT_MAX', PHP_INT_MAX - 30 );
30
+ if ( ! defined( 'IMAGIFY_SITE_DOMAIN' ) ) {
31
+ define( 'IMAGIFY_SITE_DOMAIN', 'https://imagify.io' );
32
+ }
33
  if ( ! defined( 'IMAGIFY_APP_DOMAIN' ) ) {
34
  define( 'IMAGIFY_APP_DOMAIN', 'https://app.imagify.io' );
35
  }
36
  define( 'IMAGIFY_APP_API_URL', IMAGIFY_APP_DOMAIN . '/api/' );
37
 
 
38
  /**
39
  * Plugin init.
40
  *
62
 
63
  $plugin->init();
64
  }
65
+ add_action( 'plugins_loaded', '_imagify_init' );
66
 
67
  /**
68
  * Check if Imagify is activated on the network.
142
  load_plugin_textdomain( 'imagify', false, dirname( plugin_basename( IMAGIFY_FILE ) ) . '/languages/' );
143
  }
144
 
 
145
  /**
146
  * Set a transient on plugin activation, it will be used later to trigger activation hooks after the plugin is loaded.
147
  * The transient contains the ID of the user that activated the plugin.
161
  set_transient( 'imagify_activation', get_current_user_id(), 30 );
162
  }
163
  }
164
+ register_activation_hook( IMAGIFY_FILE, 'imagify_set_activation' );
165
 
 
166
  /**
167
  * Trigger a hook on plugin deactivation.
168
  *
182
  */
183
  do_action( 'imagify_deactivation' );
184
  }
185
+ register_deactivation_hook( IMAGIFY_FILE, 'imagify_deactivation' );
186
+
inc/3rd-party/3rd-party.php CHANGED
@@ -12,6 +12,7 @@ require IMAGIFY_PATH . 'inc/3rd-party/nextgen-gallery/nextgen-gallery.php';
12
  require IMAGIFY_PATH . 'inc/3rd-party/regenerate-thumbnails/regenerate-thumbnails.php';
13
  require IMAGIFY_PATH . 'inc/3rd-party/screets-lc.php';
14
  require IMAGIFY_PATH . 'inc/3rd-party/wp-real-media-library.php';
 
15
  require IMAGIFY_PATH . 'inc/3rd-party/wp-rocket/wp-rocket.php';
16
  require IMAGIFY_PATH . 'inc/3rd-party/yoast-seo.php';
17
  require IMAGIFY_PATH . 'inc/3rd-party/WooCommerce/class-woocommerce.php';
12
  require IMAGIFY_PATH . 'inc/3rd-party/regenerate-thumbnails/regenerate-thumbnails.php';
13
  require IMAGIFY_PATH . 'inc/3rd-party/screets-lc.php';
14
  require IMAGIFY_PATH . 'inc/3rd-party/wp-real-media-library.php';
15
+ require IMAGIFY_PATH . 'inc/3rd-party/wp-cloudflare-super-page-cache.php';
16
  require IMAGIFY_PATH . 'inc/3rd-party/wp-rocket/wp-rocket.php';
17
  require IMAGIFY_PATH . 'inc/3rd-party/yoast-seo.php';
18
  require IMAGIFY_PATH . 'inc/3rd-party/WooCommerce/class-woocommerce.php';
inc/3rd-party/nextgen-gallery/classes/Context/NGG.php CHANGED
@@ -1,7 +1,8 @@
1
  <?php
2
  namespace Imagify\ThirdParty\NGG\Context;
3
 
4
- defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
 
5
 
6
  /**
7
  * Context class used for the WP media library.
@@ -9,15 +10,14 @@ defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
9
  * @since 1.9
10
  * @author Grégory Viguier
11
  */
12
- class NGG extends \Imagify\Context\AbstractContext {
13
- use \Imagify\Traits\InstanceGetterTrait;
14
 
15
  /**
16
  * Context "short name".
17
  *
18
  * @var string
19
  * @since 1.9
20
- * @access protected
21
  * @author Grégory Viguier
22
  */
23
  protected $context = 'ngg';
@@ -30,7 +30,6 @@ class NGG extends \Imagify\Context\AbstractContext {
30
  * - 'image' to allow only images.
31
  * - 'not-image' to allow only pdf files.
32
  * @since 1.9
33
- * @access protected
34
  * @see imagify_get_mime_types()
35
  * @author Grégory Viguier
36
  */
@@ -49,7 +48,6 @@ class NGG extends \Imagify\Context\AbstractContext {
49
  * @type string $name The size name.
50
  * }
51
  * @since 1.9
52
- * @access public
53
  * @author Grégory Viguier
54
  */
55
  protected $thumbnail_sizes = [];
@@ -59,27 +57,15 @@ class NGG extends \Imagify\Context\AbstractContext {
59
  *
60
  * @var bool
61
  * @since 1.9
62
- * @access protected
63
  * @author Grégory Viguier
64
  */
65
  protected $can_backup = true;
66
 
67
- /**
68
- * Tell if the optimization process is allowed to keep exif in this context.
69
- *
70
- * @var bool
71
- * @since 1.9
72
- * @access protected
73
- * @author Grégory Viguier
74
- */
75
- protected $can_keep_exif = true;
76
-
77
  /**
78
  * Get images max width for this context. This is used when resizing.
79
  * 0 means to not resize.
80
  *
81
  * @since 1.9.8
82
- * @access public
83
  * @author Grégory Viguier
84
  *
85
  * @return int
@@ -92,7 +78,6 @@ class NGG extends \Imagify\Context\AbstractContext {
92
  * Get user capacity to operate Imagify in this context.
93
  *
94
  * @since 1.9
95
- * @access public
96
  * @author Grégory Viguier
97
  *
98
  * @param string $describer Capacity describer. Possible values are like 'manage', 'bulk-optimize', 'manual-optimize', 'auto-optimize'.
1
  <?php
2
  namespace Imagify\ThirdParty\NGG\Context;
3
 
4
+ use Imagify\Context\AbstractContext;
5
+ use Imagify\Traits\InstanceGetterTrait;
6
 
7
  /**
8
  * Context class used for the WP media library.
10
  * @since 1.9
11
  * @author Grégory Viguier
12
  */
13
+ class NGG extends AbstractContext {
14
+ use InstanceGetterTrait;
15
 
16
  /**
17
  * Context "short name".
18
  *
19
  * @var string
20
  * @since 1.9
 
21
  * @author Grégory Viguier
22
  */
23
  protected $context = 'ngg';
30
  * - 'image' to allow only images.
31
  * - 'not-image' to allow only pdf files.
32
  * @since 1.9
 
33
  * @see imagify_get_mime_types()
34
  * @author Grégory Viguier
35
  */
48
  * @type string $name The size name.
49
  * }
50
  * @since 1.9
 
51
  * @author Grégory Viguier
52
  */
53
  protected $thumbnail_sizes = [];
57
  *
58
  * @var bool
59
  * @since 1.9
 
60
  * @author Grégory Viguier
61
  */
62
  protected $can_backup = true;
63
 
 
 
 
 
 
 
 
 
 
 
64
  /**
65
  * Get images max width for this context. This is used when resizing.
66
  * 0 means to not resize.
67
  *
68
  * @since 1.9.8
 
69
  * @author Grégory Viguier
70
  *
71
  * @return int
78
  * Get user capacity to operate Imagify in this context.
79
  *
80
  * @since 1.9
 
81
  * @author Grégory Viguier
82
  *
83
  * @param string $describer Capacity describer. Possible values are like 'manage', 'bulk-optimize', 'manual-optimize', 'auto-optimize'.
inc/3rd-party/wp-cloudflare-super-page-cache.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) || die( 'Cheatin uh?' );
3
+
4
+ add_action( 'admin_enqueue_scripts', function( $hook_suffix ) {
5
+
6
+ $imagify_admin_pages = array(
7
+ 'media_page_imagify-bulk-optimization',
8
+ 'settings_page_imagify',
9
+ 'media_page_imagify-files',
10
+ 'nextgen-gallery_page_imagify-ngg-bulk-optimization',
11
+ );
12
+
13
+ if (
14
+ ! is_admin()
15
+ ||
16
+ ! class_exists( 'SWCFPC_Backend' )
17
+ ||
18
+ ! in_array( $hook_suffix, $imagify_admin_pages, true )
19
+ ) {
20
+ return;
21
+ }
22
+
23
+ wp_deregister_script( 'swcfpc_sweetalert_js' );
24
+
25
+ }, 100 );
inc/admin/upgrader.php CHANGED
@@ -1,7 +1,6 @@
1
  <?php
2
  defined( 'ABSPATH' ) || die( 'Cheatin&#8217; uh?' );
3
 
4
- add_action( 'admin_init', '_imagify_upgrader' );
5
  /**
6
  * Tell WP what to do when admin is loaded aka upgrader.
7
  *
@@ -75,6 +74,7 @@ function _imagify_upgrader() {
75
  Imagify_Data::get_instance()->set( 'version', IMAGIFY_VERSION );
76
  }
77
  }
 
78
 
79
  /**
80
  * Upgrade the upgrader:
@@ -160,7 +160,6 @@ function imagify_upgrader_upgrade() {
160
  Imagify_Data::get_instance()->set( 'version', $network_version );
161
  }
162
 
163
- add_action( 'imagify_first_network_install', '_imagify_first_install' );
164
  /**
165
  * Keeps this function up to date at each version.
166
  *
@@ -170,8 +169,8 @@ function _imagify_first_install() {
170
  // Set a transient to know when we will have to display a notice to ask the user to rate the plugin.
171
  set_site_transient( 'imagify_seen_rating_notice', true, DAY_IN_SECONDS * 3 );
172
  }
 
173
 
174
- add_action( 'imagify_upgrade', '_imagify_new_upgrade', 10, 2 );
175
  /**
176
  * What to do when Imagify is updated, depending on versions.
177
  *
@@ -304,93 +303,13 @@ function _imagify_new_upgrade( $network_version, $site_version ) {
304
  if ( version_compare( $site_version, '1.9.11' ) < 0 ) {
305
  imagify_secure_custom_directories();
306
  }
307
- }
308
-
309
- add_action( 'upgrader_process_complete', 'imagify_maybe_reset_opcache', 20, 2 );
310
- /**
311
- * Maybe reset opcache after Imagify update.
312
- *
313
- * @since 1.7.1.2
314
- * @author Grégory Viguier
315
- *
316
- * @param object $wp_upgrader Plugin_Upgrader instance.
317
- * @param array $hook_extra {
318
- * Array of bulk item update data.
319
- *
320
- * @type string $action Type of action. Default 'update'.
321
- * @type string $type Type of update process. Accepts 'plugin', 'theme', 'translation', or 'core'.
322
- * @type bool $bulk Whether the update process is a bulk update. Default true.
323
- * @type array $plugins Array of the basename paths of the plugins' main files.
324
- * }
325
- */
326
- function imagify_maybe_reset_opcache( $wp_upgrader, $hook_extra ) {
327
- static $imagify_path;
328
-
329
- if ( ! isset( $hook_extra['action'], $hook_extra['type'], $hook_extra['plugins'] ) ) {
330
- return;
331
- }
332
-
333
- if ( 'update' !== $hook_extra['action'] || 'plugin' !== $hook_extra['type'] || ! is_array( $hook_extra['plugins'] ) ) {
334
- return;
335
- }
336
-
337
- $plugins = array_flip( $hook_extra['plugins'] );
338
-
339
- if ( ! isset( $imagify_path ) ) {
340
- $imagify_path = plugin_basename( IMAGIFY_FILE );
341
- }
342
 
343
- if ( ! isset( $plugins[ $imagify_path ] ) ) {
344
- return;
345
  }
346
-
347
- imagify_reset_opcache();
348
- }
349
-
350
- /**
351
- * Reset PHP opcache.
352
- *
353
- * @since 1.8.1
354
- * @since 1.9.9 Added $reset_function_cache parameter and return boolean.
355
- * @author Grégory Viguier
356
- *
357
- * @param bool $reset_function_cache Set to true to bypass the cache.
358
- * @return bool Return true if the opcode cache was reset (or reset in a previous call), or false if the opcode cache is disabled.
359
- */
360
- function imagify_reset_opcache( $reset_function_cache = false ) {
361
- static $can_reset;
362
-
363
- if ( $reset_function_cache || ! isset( $can_reset ) ) {
364
- if ( ! function_exists( 'opcache_reset' ) ) {
365
- $can_reset = false;
366
- return false;
367
- }
368
-
369
- $opcache_enabled = filter_var( ini_get( 'opcache.enable' ), FILTER_VALIDATE_BOOLEAN ); // phpcs:ignore PHPCompatibility.IniDirectives.NewIniDirectives.opcache_enableFound
370
-
371
- if ( ! $opcache_enabled ) {
372
- $can_reset = false;
373
- return false;
374
- }
375
-
376
- $restrict_api = ini_get( 'opcache.restrict_api' ); // phpcs:ignore PHPCompatibility.IniDirectives.NewIniDirectives.opcache_restrict_apiFound
377
-
378
- if ( $restrict_api && strpos( __FILE__, $restrict_api ) !== 0 ) {
379
- $can_reset = false;
380
- return false;
381
- }
382
-
383
- $can_reset = true;
384
- }
385
-
386
- if ( ! $can_reset ) {
387
- return false;
388
- }
389
-
390
- return opcache_reset(); // phpcs:ignore PHPCompatibility.FunctionUse.NewFunctions.opcache_resetFound
391
  }
 
392
 
393
- add_action( 'imagify_activation', 'imagify_secure_custom_directories' );
394
  /**
395
  * Scan imagify directories and add `index.php` files where missing.
396
  *
@@ -409,3 +328,4 @@ function imagify_secure_custom_directories() {
409
  $backup_dir = get_imagify_backup_dir_path();
410
  Imagify_Custom_Folders::add_indexes( $backup_dir );
411
  }
 
1
  <?php
2
  defined( 'ABSPATH' ) || die( 'Cheatin&#8217; uh?' );
3
 
 
4
  /**
5
  * Tell WP what to do when admin is loaded aka upgrader.
6
  *
74
  Imagify_Data::get_instance()->set( 'version', IMAGIFY_VERSION );
75
  }
76
  }
77
+ add_action( 'admin_init', '_imagify_upgrader' );
78
 
79
  /**
80
  * Upgrade the upgrader:
160
  Imagify_Data::get_instance()->set( 'version', $network_version );
161
  }
162
 
 
163
  /**
164
  * Keeps this function up to date at each version.
165
  *
169
  // Set a transient to know when we will have to display a notice to ask the user to rate the plugin.
170
  set_site_transient( 'imagify_seen_rating_notice', true, DAY_IN_SECONDS * 3 );
171
  }
172
+ add_action( 'imagify_first_network_install', '_imagify_first_install' );
173
 
 
174
  /**
175
  * What to do when Imagify is updated, depending on versions.
176
  *
303
  if ( version_compare( $site_version, '1.9.11' ) < 0 ) {
304
  imagify_secure_custom_directories();
305
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
306
 
307
+ if ( version_compare( $site_version, '2.0' ) < 0 ) {
308
+ Imagify_Options::get_instance()->set( 'optimization_level', 2 );
309
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  }
311
+ add_action( 'imagify_upgrade', '_imagify_new_upgrade', 10, 2 );
312
 
 
313
  /**
314
  * Scan imagify directories and add `index.php` files where missing.
315
  *
328
  $backup_dir = get_imagify_backup_dir_path();
329
  Imagify_Custom_Folders::add_indexes( $backup_dir );
330
  }
331
+ add_action( 'imagify_activation', 'imagify_secure_custom_directories' );
inc/classes/class-imagify-admin-ajax-post.php CHANGED
@@ -1,5 +1,6 @@
1
  <?php
2
- defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
 
3
 
4
  /**
5
  * Class that handles admin ajax/post callbacks.
@@ -8,7 +9,7 @@ defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
8
  * @author Grégory Viguier
9
  */
10
  class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
11
- use \Imagify\Traits\InstanceGetterTrait;
12
 
13
  /**
14
  * Class version.
@@ -24,7 +25,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
24
  *
25
  * @var array
26
  * @since 1.6.11
27
- * @access protected
28
  * @author Grégory Viguier
29
  */
30
  protected $ajax_post_actions = [
@@ -47,7 +47,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
47
  *
48
  * @var array
49
  * @since 1.6.11
50
- * @access protected
51
  * @author Grégory Viguier
52
  */
53
  protected $ajax_only_actions = [
@@ -80,7 +79,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
80
  *
81
  * @var array
82
  * @since 1.6.11
83
- * @access protected
84
  * @author Grégory Viguier
85
  */
86
  protected $post_only_actions = [
@@ -95,7 +93,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
95
  *
96
  * @var object Imagify_Filesystem
97
  * @since 1.7.1
98
- * @access protected
99
  * @author Grégory Viguier
100
  */
101
  protected $filesystem;
@@ -110,7 +107,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
110
  *
111
  * @since 1.6.11
112
  * @since 1.9 Visibility set to public.
113
- * @access public
114
  * @author Grégory Viguier
115
  */
116
  public function __construct() {
@@ -121,23 +117,28 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
121
  * Launch the hooks.
122
  *
123
  * @since 1.6.11
124
- * @access public
125
  * @author Grégory Viguier
126
  */
127
  public function init() {
128
- if ( wp_doing_ajax() ) {
129
- // Actions triggered only on admin ajax.
130
- $actions = array_merge( $this->ajax_post_actions, $this->ajax_only_actions );
131
 
132
- foreach ( $actions as $action ) {
133
- add_action( 'wp_ajax_' . $action, array( $this, $action . '_callback' ) );
 
 
134
  }
 
135
  }
136
 
137
- // Actions triggered on both admin ajax and admin post.
138
- $actions = array_merge( $this->ajax_post_actions, $this->post_only_actions );
 
 
 
 
139
 
140
- foreach ( $actions as $action ) {
 
141
  add_action( 'admin_post_' . $action, array( $this, $action . '_callback' ) );
142
  }
143
  }
@@ -151,7 +152,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
151
  * Optimize one media.
152
  *
153
  * @since 1.9
154
- * @access protected
155
  * @author Grégory Viguier
156
  *
157
  * @param int $media_id The media ID.
@@ -166,7 +166,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
166
  * Re-optimize a media to a different optimization level.
167
  *
168
  * @since 1.9
169
- * @access protected
170
  * @author Grégory Viguier
171
  *
172
  * @param int $media_id The media ID.
@@ -183,7 +182,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
183
  * This is used by the bulk optimization page.
184
  *
185
  * @since 1.9
186
- * @access protected
187
  * @author Grégory Viguier
188
  *
189
  * @param int $media_id The media ID.
@@ -212,7 +210,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
212
  * Optimize one or some thumbnails that are not optimized yet.
213
  *
214
  * @since 1.9
215
- * @access protected
216
  * @author Grégory Viguier
217
  *
218
  * @param int $media_id The media ID.
@@ -227,7 +224,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
227
  * Generate WebP images if they are missing.
228
  *
229
  * @since 1.9
230
- * @access protected
231
  * @author Grégory Viguier
232
  *
233
  * @param int $media_id The media ID.
@@ -242,7 +238,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
242
  * Delete WebP images for media that are "already_optimize".
243
  *
244
  * @since 1.9.6
245
- * @access protected
246
  * @author Grégory Viguier
247
  *
248
  * @param int $media_id The media ID.
@@ -280,7 +275,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
280
  * Restore a media.
281
  *
282
  * @since 1.9
283
- * @access protected
284
  * @author Grégory Viguier
285
  *
286
  * @param int $media_id The media ID.
@@ -300,7 +294,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
300
  * Get media ids for the requested imagify bulk action.
301
  *
302
  * @since 1.9
303
- * @access public
304
  * @author Grégory Viguier
305
  */
306
  public function imagify_get_media_ids_callback() {
@@ -355,7 +348,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
355
  * Process a media with the requested imagify bulk action.
356
  *
357
  * @since 1.6.11
358
- * @access public
359
  * @author Jonathan Buttigieg
360
  */
361
  public function imagify_bulk_optimize_callback() {
@@ -397,7 +389,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
397
  * Get stats data for a specific folder type.
398
  *
399
  * @since 1.7
400
- * @access public
401
  * @author Grégory Viguier
402
  */
403
  public function imagify_get_folder_type_data_callback() {
@@ -422,7 +413,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
422
  * Set the "bulk info" popup state as "seen".
423
  *
424
  * @since 1.7
425
- * @access public
426
  * @author Grégory Viguier
427
  */
428
  public function imagify_bulk_info_seen_callback() {
@@ -447,7 +437,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
447
  * Get generic stats to display in the bulk page.
448
  *
449
  * @since 1.7.1
450
- * @access public
451
  * @author Grégory Viguier
452
  */
453
  public function imagify_bulk_get_stats_callback() {
@@ -480,7 +469,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
480
  * Optimize all thumbnails of a specific image with the manual method.
481
  *
482
  * @since 1.6.11
483
- * @access public
484
  * @author Jonathan Buttigieg
485
  */
486
  public function imagify_manual_optimize_callback() {
@@ -515,7 +503,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
515
  * Optimize all thumbnails of a specific image with a different optimization level.
516
  *
517
  * @since 1.6.11
518
- * @access public
519
  * @author Jonathan Buttigieg
520
  */
521
  public function imagify_manual_reoptimize_callback() {
@@ -550,7 +537,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
550
  * Optimize one or some thumbnails that are not optimized yet.
551
  *
552
  * @since 1.6.11
553
- * @access public
554
  * @author Grégory Viguier
555
  */
556
  public function imagify_optimize_missing_sizes_callback() {
@@ -585,7 +571,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
585
  * Generate WebP images if they are missing.
586
  *
587
  * @since 1.9
588
- * @access public
589
  * @author Grégory Viguier
590
  */
591
  public function imagify_generate_webp_versions_callback() {
@@ -620,7 +605,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
620
  * Generate WebP images if they are missing.
621
  *
622
  * @since 1.9.6
623
- * @access public
624
  * @author Grégory Viguier
625
  */
626
  public function imagify_delete_webp_versions_callback() {
@@ -655,7 +639,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
655
  * Process a restoration to the original attachment.
656
  *
657
  * @since 1.6.11
658
- * @access public
659
  * @author Jonathan Buttigieg
660
  */
661
  public function imagify_restore_callback() {
@@ -703,7 +686,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
703
  * Optimize a file.
704
  *
705
  * @since 1.7
706
- * @access public
707
  * @author Grégory Viguier
708
  */
709
  public function imagify_optimize_file_callback() {
@@ -735,7 +717,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
735
  * Re-optimize a file.
736
  *
737
  * @since 1.7
738
- * @access public
739
  * @author Grégory Viguier
740
  */
741
  public function imagify_reoptimize_file_callback() {
@@ -769,7 +750,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
769
  * Restore a file.
770
  *
771
  * @since 1.7
772
- * @access public
773
  * @author Grégory Viguier
774
  */
775
  public function imagify_restore_file_callback() {
@@ -802,7 +782,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
802
  * Check if a file has been modified, and update the database accordingly.
803
  *
804
  * @since 1.7
805
- * @access public
806
  * @author Grégory Viguier
807
  */
808
  public function imagify_refresh_file_modified_callback() {
@@ -842,7 +821,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
842
  * Look for new files in custom folders.
843
  *
844
  * @since 1.7
845
- * @access public
846
  * @author Grégory Viguier
847
  */
848
  public function imagify_scan_custom_folders_callback() {
@@ -897,7 +875,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
897
  * This is used to display an error message in the plugin's settings page.
898
  *
899
  * @since 1.6.11
900
- * @access public
901
  * @author Grégory Viguier
902
  */
903
  public function imagify_check_backup_dir_is_writable_callback() {
@@ -916,7 +893,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
916
  * Get files and folders that are direct children of a given folder.
917
  *
918
  * @since 1.7
919
- * @access public
920
  * @author Grégory Viguier
921
  */
922
  public function imagify_get_files_tree_callback() {
@@ -1010,7 +986,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1010
  * Create a new Imagify account.
1011
  *
1012
  * @since 1.6.11
1013
- * @access public
1014
  * @author Jonathan Buttigieg
1015
  */
1016
  public function imagify_signup_callback() {
@@ -1049,7 +1024,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1049
  * Check the API key validity.
1050
  *
1051
  * @since 1.6.11
1052
- * @access public
1053
  * @author Jonathan Buttigieg
1054
  */
1055
  public function imagify_check_api_key_validity_callback() {
@@ -1079,7 +1053,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1079
  * Get admin bar profile output.
1080
  *
1081
  * @since 1.6.11
1082
- * @access public
1083
  * @author Jonathan Buttigieg
1084
  */
1085
  public function imagify_get_admin_bar_profile_callback() {
@@ -1158,7 +1131,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1158
  * Get pricings from API for Onetime and Plans at the same time.
1159
  *
1160
  * @since 1.6.11
1161
- * @access public
1162
  * @author Geoffrey Crofte
1163
  */
1164
  public function imagify_get_prices_callback() {
@@ -1179,7 +1151,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1179
  }
1180
 
1181
  wp_send_json_success( array(
1182
- 'onetimes' => $prices_all->Packs,
1183
  'monthlies' => $prices_all->Plans,
1184
  ) );
1185
  }
@@ -1188,7 +1159,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1188
  * Check Coupon code on modal popin.
1189
  *
1190
  * @since 1.6.11
1191
- * @access public
1192
  * @author Geoffrey Crofte
1193
  */
1194
  public function imagify_check_coupon_callback() {
@@ -1235,7 +1205,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1235
  * Get estimated sizes from the WordPress library.
1236
  *
1237
  * @since 1.6.11
1238
- * @access public
1239
  * @author Geoffrey Crofte
1240
  */
1241
  public function imagify_get_images_counts_callback() {
@@ -1269,7 +1238,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1269
  * Estimate sizes and update the options values for them.
1270
  *
1271
  * @since 1.6.11
1272
- * @access public
1273
  * @author Remy Perona
1274
  */
1275
  public function imagify_update_estimate_sizes_callback() {
@@ -1294,7 +1262,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1294
  * Get the Imagify User data.
1295
  *
1296
  * @since 1.7
1297
- * @access public
1298
  * @author Grégory Viguier
1299
  */
1300
  public function imagify_get_user_data_callback() {
@@ -1328,7 +1295,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1328
  * Delete the Imagify User data cache.
1329
  *
1330
  * @since 1.9.5
1331
- * @access public
1332
  * @author Grégory Viguier
1333
  */
1334
  public function imagify_delete_user_data_cache_callback() {
@@ -1353,7 +1319,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1353
  * When XML-RPC is used, a current user is set, but no cookies are set, so they cannot be sent with the request. Instead we stored the user ID in a transient.
1354
  *
1355
  * @since 1.6.11
1356
- * @access public
1357
  * @author Grégory Viguier
1358
  * @see imagify_do_async_job()
1359
  */
@@ -1404,7 +1369,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1404
  * Store the "closed" status of the ads.
1405
  *
1406
  * @since 1.7
1407
- * @access public
1408
  * @author Grégory Viguier
1409
  */
1410
  public function imagify_dismiss_ad_callback() {
@@ -1451,7 +1415,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1451
  *
1452
  * @since 1.7
1453
  * @since 1.9 Added $method and $parameter parameters.
1454
- * @access public
1455
  * @author Grégory Viguier
1456
  *
1457
  * @param string $method The method used: 'GET' (default), or 'POST'.
@@ -1473,7 +1436,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1473
  * Get the submitted context.
1474
  *
1475
  * @since 1.9
1476
- * @access public
1477
  * @author Grégory Viguier
1478
  *
1479
  * @param string $method The method used: 'GET' (default), or 'POST'.
@@ -1491,7 +1453,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1491
  * Get the submitted media ID.
1492
  *
1493
  * @since 1.9
1494
- * @access public
1495
  * @author Grégory Viguier
1496
  *
1497
  * @param string $method The method used: 'GET' (default), or 'POST'.
@@ -1513,7 +1474,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1513
  * Get the submitted folder_type.
1514
  *
1515
  * @since 1.9
1516
- * @access public
1517
  * @author Grégory Viguier
1518
  *
1519
  * @param string $method The method used: 'GET' (default), or 'POST'.
@@ -1530,7 +1490,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1530
  * Get the submitted imagify action.
1531
  *
1532
  * @since 1.9
1533
- * @access public
1534
  * @author Grégory Viguier
1535
  *
1536
  * @param string $method The method used: 'GET' (default), or 'POST'.
@@ -1548,7 +1507,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1548
  * Get the Bulk class name depending on a context.
1549
  *
1550
  * @since 1.9
1551
- * @access public
1552
  * @author Grégory Viguier
1553
  *
1554
  * @param string $context The context name. Default values are 'wp' and 'custom-folders'.
@@ -1586,7 +1544,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1586
  * Get the Bulk instance depending on a context.
1587
  *
1588
  * @since 1.9
1589
- * @access public
1590
  * @author Grégory Viguier
1591
  *
1592
  * @param string $context The context name. Default values are 'wp' and 'custom-folders'.
@@ -1601,7 +1558,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1601
  * Check if the user has a valid account and has quota. Die on failure.
1602
  *
1603
  * @since 1.7
1604
- * @access public
1605
  * @author Grégory Viguier
1606
  */
1607
  public function check_can_optimize() {
@@ -1626,7 +1582,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1626
  * Get a media columns for the "Other Media" page.
1627
  *
1628
  * @since 1.9
1629
- * @access public
1630
  * @author Grégory Viguier
1631
  *
1632
  * @param object $process A \Imagify\Optimization\Process\CustomFolders object.
@@ -1652,7 +1607,6 @@ class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
1652
  * @since 1.7
1653
  * @since 1.9 Removed parameter $result.
1654
  * @since 1.9 Added $folder in the returned JSON.
1655
- * @access protected
1656
  * @author Grégory Viguier
1657
  *
1658
  * @param object $process A \Imagify\Optimization\Process\CustomFolders object.
1
  <?php
2
+
3
+ use Imagify\Traits\InstanceGetterTrait;
4
 
5
  /**
6
  * Class that handles admin ajax/post callbacks.
9
  * @author Grégory Viguier
10
  */
11
  class Imagify_Admin_Ajax_Post extends Imagify_Admin_Ajax_Post_Deprecated {
12
+ use InstanceGetterTrait;
13
 
14
  /**
15
  * Class version.
25
  *
26
  * @var array
27
  * @since 1.6.11
 
28
  * @author Grégory Viguier
29
  */
30
  protected $ajax_post_actions = [
47
  *
48
  * @var array
49
  * @since 1.6.11
 
50
  * @author Grégory Viguier
51
  */
52
  protected $ajax_only_actions = [
79
  *
80
  * @var array
81
  * @since 1.6.11
 
82
  * @author Grégory Viguier
83
  */
84
  protected $post_only_actions = [
93
  *
94
  * @var object Imagify_Filesystem
95
  * @since 1.7.1
 
96
  * @author Grégory Viguier
97
  */
98
  protected $filesystem;
107
  *
108
  * @since 1.6.11
109
  * @since 1.9 Visibility set to public.
 
110
  * @author Grégory Viguier
111
  */
112
  public function __construct() {
117
  * Launch the hooks.
118
  *
119
  * @since 1.6.11
 
120
  * @author Grégory Viguier
121
  */
122
  public function init() {
123
+ $doing_ajax = wp_doing_ajax();
 
 
124
 
125
+ foreach ( $this->ajax_post_actions as $action ) {
126
+ $action_callback = "{$action}_callback";
127
+ if ( $doing_ajax ) {
128
+ add_action( 'wp_ajax_' . $action, array( $this, $action_callback ) );
129
  }
130
+ add_action( 'admin_post_' . $action, array( $this, $action_callback ) );
131
  }
132
 
133
+ // Actions triggered only on admin ajax.
134
+ if ( $doing_ajax ) {
135
+ foreach ( $this->ajax_only_actions as $action ) {
136
+ add_action( 'wp_ajax_' . $action, array( $this, $action . '_callback' ) );
137
+ }
138
+ }
139
 
140
+ // Actions triggered on admin post.
141
+ foreach ( $this->post_only_actions as $action ) {
142
  add_action( 'admin_post_' . $action, array( $this, $action . '_callback' ) );
143
  }
144
  }
152
  * Optimize one media.
153
  *
154
  * @since 1.9
 
155
  * @author Grégory Viguier
156
  *
157
  * @param int $media_id The media ID.
166
  * Re-optimize a media to a different optimization level.
167
  *
168
  * @since 1.9
 
169
  * @author Grégory Viguier
170
  *
171
  * @param int $media_id The media ID.
182
  * This is used by the bulk optimization page.
183
  *
184
  * @since 1.9
 
185
  * @author Grégory Viguier
186
  *
187
  * @param int $media_id The media ID.
210
  * Optimize one or some thumbnails that are not optimized yet.
211
  *
212
  * @since 1.9
 
213
  * @author Grégory Viguier
214
  *
215
  * @param int $media_id The media ID.
224
  * Generate WebP images if they are missing.
225
  *
226
  * @since 1.9
 
227
  * @author Grégory Viguier
228
  *
229
  * @param int $media_id The media ID.
238
  * Delete WebP images for media that are "already_optimize".
239
  *
240
  * @since 1.9.6
 
241
  * @author Grégory Viguier
242
  *
243
  * @param int $media_id The media ID.
275
  * Restore a media.
276
  *
277
  * @since 1.9
 
278
  * @author Grégory Viguier
279
  *
280
  * @param int $media_id The media ID.
294
  * Get media ids for the requested imagify bulk action.
295
  *
296
  * @since 1.9
 
297
  * @author Grégory Viguier
298
  */
299
  public function imagify_get_media_ids_callback() {
348
  * Process a media with the requested imagify bulk action.
349
  *
350
  * @since 1.6.11
 
351
  * @author Jonathan Buttigieg
352
  */
353
  public function imagify_bulk_optimize_callback() {
389
  * Get stats data for a specific folder type.
390
  *
391
  * @since 1.7
 
392
  * @author Grégory Viguier
393
  */
394
  public function imagify_get_folder_type_data_callback() {
413
  * Set the "bulk info" popup state as "seen".
414
  *
415
  * @since 1.7
 
416
  * @author Grégory Viguier
417
  */
418
  public function imagify_bulk_info_seen_callback() {
437
  * Get generic stats to display in the bulk page.
438
  *
439
  * @since 1.7.1
 
440
  * @author Grégory Viguier
441
  */
442
  public function imagify_bulk_get_stats_callback() {
469
  * Optimize all thumbnails of a specific image with the manual method.
470
  *
471
  * @since 1.6.11
 
472
  * @author Jonathan Buttigieg
473
  */
474
  public function imagify_manual_optimize_callback() {
503
  * Optimize all thumbnails of a specific image with a different optimization level.
504
  *
505
  * @since 1.6.11
 
506
  * @author Jonathan Buttigieg
507
  */
508
  public function imagify_manual_reoptimize_callback() {
537
  * Optimize one or some thumbnails that are not optimized yet.
538
  *
539
  * @since 1.6.11
 
540
  * @author Grégory Viguier
541
  */
542
  public function imagify_optimize_missing_sizes_callback() {
571
  * Generate WebP images if they are missing.
572
  *
573
  * @since 1.9
 
574
  * @author Grégory Viguier
575
  */
576
  public function imagify_generate_webp_versions_callback() {
605
  * Generate WebP images if they are missing.
606
  *
607
  * @since 1.9.6
 
608
  * @author Grégory Viguier
609
  */
610
  public function imagify_delete_webp_versions_callback() {
639
  * Process a restoration to the original attachment.
640
  *
641
  * @since 1.6.11
 
642
  * @author Jonathan Buttigieg
643
  */
644
  public function imagify_restore_callback() {
686
  * Optimize a file.
687
  *
688
  * @since 1.7
 
689
  * @author Grégory Viguier
690
  */
691
  public function imagify_optimize_file_callback() {
717
  * Re-optimize a file.
718
  *
719
  * @since 1.7
 
720
  * @author Grégory Viguier
721
  */
722
  public function imagify_reoptimize_file_callback() {
750
  * Restore a file.
751
  *
752
  * @since 1.7
 
753
  * @author Grégory Viguier
754
  */
755
  public function imagify_restore_file_callback() {
782
  * Check if a file has been modified, and update the database accordingly.
783
  *
784
  * @since 1.7
 
785
  * @author Grégory Viguier
786
  */
787
  public function imagify_refresh_file_modified_callback() {
821
  * Look for new files in custom folders.
822
  *
823
  * @since 1.7
 
824
  * @author Grégory Viguier
825
  */
826
  public function imagify_scan_custom_folders_callback() {
875
  * This is used to display an error message in the plugin's settings page.
876
  *
877
  * @since 1.6.11
 
878
  * @author Grégory Viguier
879
  */
880
  public function imagify_check_backup_dir_is_writable_callback() {
893
  * Get files and folders that are direct children of a given folder.
894
  *
895
  * @since 1.7
 
896
  * @author Grégory Viguier
897
  */
898
  public function imagify_get_files_tree_callback() {
986
  * Create a new Imagify account.
987
  *
988
  * @since 1.6.11
 
989
  * @author Jonathan Buttigieg
990
  */
991
  public function imagify_signup_callback() {
1024
  * Check the API key validity.
1025
  *
1026
  * @since 1.6.11
 
1027
  * @author Jonathan Buttigieg
1028
  */
1029
  public function imagify_check_api_key_validity_callback() {
1053
  * Get admin bar profile output.
1054
  *
1055
  * @since 1.6.11
 
1056
  * @author Jonathan Buttigieg
1057
  */
1058
  public function imagify_get_admin_bar_profile_callback() {
1131
  * Get pricings from API for Onetime and Plans at the same time.
1132
  *
1133
  * @since 1.6.11
 
1134
  * @author Geoffrey Crofte
1135
  */
1136
  public function imagify_get_prices_callback() {
1151
  }
1152
 
1153
  wp_send_json_success( array(
 
1154
  'monthlies' => $prices_all->Plans,
1155
  ) );
1156
  }
1159
  * Check Coupon code on modal popin.
1160
  *
1161
  * @since 1.6.11
 
1162
  * @author Geoffrey Crofte
1163
  */
1164
  public function imagify_check_coupon_callback() {
1205
  * Get estimated sizes from the WordPress library.
1206
  *
1207
  * @since 1.6.11
 
1208
  * @author Geoffrey Crofte
1209
  */
1210
  public function imagify_get_images_counts_callback() {
1238
  * Estimate sizes and update the options values for them.
1239
  *
1240
  * @since 1.6.11
 
1241
  * @author Remy Perona
1242
  */
1243
  public function imagify_update_estimate_sizes_callback() {
1262
  * Get the Imagify User data.
1263
  *
1264
  * @since 1.7
 
1265
  * @author Grégory Viguier
1266
  */
1267
  public function imagify_get_user_data_callback() {
1295
  * Delete the Imagify User data cache.
1296
  *
1297
  * @since 1.9.5
 
1298
  * @author Grégory Viguier
1299
  */
1300
  public function imagify_delete_user_data_cache_callback() {
1319
  * When XML-RPC is used, a current user is set, but no cookies are set, so they cannot be sent with the request. Instead we stored the user ID in a transient.
1320
  *
1321
  * @since 1.6.11
 
1322
  * @author Grégory Viguier
1323
  * @see imagify_do_async_job()
1324
  */
1369
  * Store the "closed" status of the ads.
1370
  *
1371
  * @since 1.7
 
1372
  * @author Grégory Viguier
1373
  */
1374
  public function imagify_dismiss_ad_callback() {
1415
  *
1416
  * @since 1.7
1417
  * @since 1.9 Added $method and $parameter parameters.
 
1418
  * @author Grégory Viguier
1419
  *
1420
  * @param string $method The method used: 'GET' (default), or 'POST'.
1436
  * Get the submitted context.
1437
  *
1438
  * @since 1.9
 
1439
  * @author Grégory Viguier
1440
  *
1441
  * @param string $method The method used: 'GET' (default), or 'POST'.
1453
  * Get the submitted media ID.
1454
  *
1455
  * @since 1.9
 
1456
  * @author Grégory Viguier
1457
  *
1458
  * @param string $method The method used: 'GET' (default), or 'POST'.
1474
  * Get the submitted folder_type.
1475
  *
1476
  * @since 1.9
 
1477
  * @author Grégory Viguier
1478
  *
1479
  * @param string $method The method used: 'GET' (default), or 'POST'.
1490
  * Get the submitted imagify action.
1491
  *
1492
  * @since 1.9
 
1493
  * @author Grégory Viguier
1494
  *
1495
  * @param string $method The method used: 'GET' (default), or 'POST'.
1507
  * Get the Bulk class name depending on a context.
1508
  *
1509
  * @since 1.9
 
1510
  * @author Grégory Viguier
1511
  *
1512
  * @param string $context The context name. Default values are 'wp' and 'custom-folders'.
1544
  * Get the Bulk instance depending on a context.
1545
  *
1546
  * @since 1.9
 
1547
  * @author Grégory Viguier
1548
  *
1549
  * @param string $context The context name. Default values are 'wp' and 'custom-folders'.
1558
  * Check if the user has a valid account and has quota. Die on failure.
1559
  *
1560
  * @since 1.7
 
1561
  * @author Grégory Viguier
1562
  */
1563
  public function check_can_optimize() {
1582
  * Get a media columns for the "Other Media" page.
1583
  *
1584
  * @since 1.9
 
1585
  * @author Grégory Viguier
1586
  *
1587
  * @param object $process A \Imagify\Optimization\Process\CustomFolders object.
1607
  * @since 1.7
1608
  * @since 1.9 Removed parameter $result.
1609
  * @since 1.9 Added $folder in the returned JSON.
 
1610
  * @author Grégory Viguier
1611
  *
1612
  * @param object $process A \Imagify\Optimization\Process\CustomFolders object.
inc/classes/class-imagify-files-list-table.php CHANGED
@@ -33,7 +33,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
33
  *
34
  * @var array
35
  * @since 1.7
36
- * @access protected
37
  * @author Grégory Viguier
38
  */
39
  protected $folders = array();
@@ -43,7 +42,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
43
  *
44
  * @var object Imagify_Filesystem
45
  * @since 1.7.1
46
- * @access protected
47
  * @author Grégory Viguier
48
  */
49
  protected $filesystem;
@@ -53,7 +51,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
53
  *
54
  * @var object Imagify_Views
55
  * @since 1.9
56
- * @access protected
57
  * @author Grégory Viguier
58
  */
59
  protected $views;
@@ -62,7 +59,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
62
  * Constructor.
63
  *
64
  * @since 1.7
65
- * @access public
66
  * @author Grégory Viguier
67
  *
68
  * @param array $args An associative array of arguments.
@@ -85,7 +81,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
85
  * Prepares the list of items for displaying.
86
  *
87
  * @since 1.7
88
- * @access public
89
  * @author Grégory Viguier
90
  */
91
  public function prepare_items() {
@@ -233,7 +228,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
233
  * Message to be displayed when there are no items.
234
  *
235
  * @since 1.7
236
- * @access public
237
  * @author Grégory Viguier
238
  */
239
  public function no_items() {
@@ -302,7 +296,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
302
  * Display views.
303
  *
304
  * @since 1.7
305
- * @access public
306
  * @author Grégory Viguier
307
  */
308
  public function views() {
@@ -420,7 +413,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
420
  * Get an associative array ( option_name => option_title ) with the list of bulk actions available on this table.
421
  *
422
  * @since 1.7
423
- * @access public
424
  * @author Grégory Viguier
425
  *
426
  * @return array
@@ -436,7 +428,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
436
  * 'internal-name' => 'Title'
437
  *
438
  * @since 1.7
439
- * @access public
440
  * @author Grégory Viguier
441
  *
442
  * @return array
@@ -462,7 +453,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
462
  * The second format will make the initial sorting order be descending.
463
  *
464
  * @since 1.7
465
- * @access public
466
  * @author Grégory Viguier
467
  *
468
  * @return array
@@ -480,7 +470,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
480
  * Get a column contents.
481
  *
482
  * @since 1.7
483
- * @access public
484
  * @author Grégory Viguier
485
  *
486
  * @param string $column The column "name": "cb", "title", "optimization_level", etc.
@@ -501,7 +490,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
501
  * Handles the checkbox column output.
502
  *
503
  * @since 1.7
504
- * @access public
505
  * @author Grégory Viguier
506
  *
507
  * @param object $item The current item. It must contain at least a $process property.
@@ -518,7 +506,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
518
  * Handles the title column output.
519
  *
520
  * @since 1.7
521
- * @access public
522
  * @author Grégory Viguier
523
  *
524
  * @param object $item The current item. It must contain at least a $process property.
@@ -569,7 +556,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
569
  * Handles the parent folder column output.
570
  *
571
  * @since 1.7
572
- * @access public
573
  * @author Grégory Viguier
574
  *
575
  * @param object $item The current item. It must contain at least a $process property.
@@ -605,7 +591,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
605
  * Handles the optimization data column output.
606
  *
607
  * @since 1.7
608
- * @access public
609
  * @author Grégory Viguier
610
  *
611
  * @param object $item The current item. It must contain at least a $process property.
@@ -658,7 +643,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
658
  * Handles the status column output.
659
  *
660
  * @since 1.7
661
- * @access public
662
  * @author Grégory Viguier
663
  *
664
  * @param object $item The current item. It must contain at least a $process property.
@@ -694,7 +678,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
694
  * Handles the optimization level column output.
695
  *
696
  * @since 1.7
697
- * @access public
698
  * @author Grégory Viguier
699
  *
700
  * @param object $item The current item. It must contain at least a $process property.
@@ -711,7 +694,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
711
  * Handles the actions column output.
712
  *
713
  * @since 1.7
714
- * @access public
715
  * @author Grégory Viguier
716
  *
717
  * @param object $item The current item. It must contain at least a $process property.
@@ -749,7 +731,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
749
  * Prints a button to optimize the file.
750
  *
751
  * @since 1.7
752
- * @access protected
753
  * @author Grégory Viguier
754
  *
755
  * @param object $item The current item. It must contain at least a $process property.
@@ -778,7 +759,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
778
  * Prints a button to retry to optimize the file.
779
  *
780
  * @since 1.7
781
- * @access protected
782
  * @author Grégory Viguier
783
  *
784
  * @param object $item The current item. It must contain at least a $process property.
@@ -810,7 +790,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
810
  * Prints buttons to re-optimize the file to other levels.
811
  *
812
  * @since 1.7
813
- * @access protected
814
  * @author Grégory Viguier
815
  *
816
  * @param object $item The current item. It must contain at least a $process property.
@@ -836,20 +815,18 @@ class Imagify_Files_List_Table extends WP_List_Table {
836
  $data = [];
837
  $url_args = [ 'attachment_id' => $media->get_id() ];
838
 
839
- foreach ( [ 2, 1, 0 ] as $level ) {
840
- /**
841
- * Display a link if:
842
- * - the level is lower than the one used to optimize the media,
843
- * - or, the level is higher and the media is not already optimized.
844
- */
845
- if ( $media_level < $level || ( $media_level > $level && ! $is_already_optimized ) ) {
846
- $url_args['optimization_level'] = $level;
847
- $data['optimization_level'] = $level;
848
- $data['url'] = get_imagify_admin_url( 'reoptimize-file', $url_args );
849
-
850
- echo $this->views->get_template( 'button/re-optimize', $data );
851
- echo '<br/>';
852
- }
853
  }
854
  }
855
 
@@ -857,7 +834,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
857
  * Prints a button to generate WebP versions if they are missing.
858
  *
859
  * @since 1.7
860
- * @access protected
861
  * @author Grégory Viguier
862
  *
863
  * @param object $item The current item. It must contain at least a $process property.
@@ -874,7 +850,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
874
  * Prints a button to delete WebP versions when the status is "already_optimized".
875
  *
876
  * @since 1.9.6
877
- * @access protected
878
  * @author Grégory Viguier
879
  *
880
  * @param object $item The current item. It must contain at least a $process property.
@@ -891,7 +866,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
891
  * Prints a button to restore the file.
892
  *
893
  * @since 1.7
894
- * @access protected
895
  * @author Grégory Viguier
896
  *
897
  * @param object $item The current item. It must contain at least a $process property.
@@ -915,7 +889,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
915
  * Prints a button to check if the file has been modified or not.
916
  *
917
  * @since 1.7
918
- * @access protected
919
  * @author Grégory Viguier
920
  *
921
  * @param object $item The current item. It must contain at least a $process property.
@@ -933,7 +906,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
933
  * Prints a button for the comparison tool (before / after optimization).
934
  *
935
  * @since 1.7
936
- * @access protected
937
  * @author Grégory Viguier
938
  *
939
  * @param object $item The current item. It must contain at least a $process property.
@@ -981,7 +953,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
981
  * It may happen if the $item doesn't come from the prepare() method.
982
  *
983
  * @since 1.7
984
- * @access protected
985
  * @author Grégory Viguier
986
  *
987
  * @param object $item The current item. It must contain at least a $process property.
@@ -1018,7 +989,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
1018
  * Get the name of the default primary column.
1019
  *
1020
  * @since 1.7
1021
- * @access protected
1022
  * @author Grégory Viguier
1023
  *
1024
  * @return string Name of the default primary column, in this case, 'title'.
@@ -1031,7 +1001,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
1031
  * Get a list of CSS classes for the WP_List_Table table tag.
1032
  *
1033
  * @since 1.7
1034
- * @access protected
1035
  * @author Grégory Viguier
1036
  *
1037
  * @return array List of CSS classes for the table tag.
@@ -1044,7 +1013,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
1044
  * Allow to save the screen options when submitted by the user.
1045
  *
1046
  * @since 1.7
1047
- * @access public
1048
  * @author Grégory Viguier
1049
  *
1050
  * @param bool|int $status Screen option value. Default false to skip.
@@ -1064,7 +1032,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
1064
  * Get the requested folder filter.
1065
  *
1066
  * @since 1.7
1067
- * @access public
1068
  * @author Grégory Viguier
1069
  *
1070
  * @return string
@@ -1084,7 +1051,6 @@ class Imagify_Files_List_Table extends WP_List_Table {
1084
  * Get the requested status filter.
1085
  *
1086
  * @since 1.7
1087
- * @access public
1088
  * @author Grégory Viguier
1089
  *
1090
  * @return string
33
  *
34
  * @var array
35
  * @since 1.7
 
36
  * @author Grégory Viguier
37
  */
38
  protected $folders = array();
42
  *
43
  * @var object Imagify_Filesystem
44
  * @since 1.7.1
 
45
  * @author Grégory Viguier
46
  */
47
  protected $filesystem;
51
  *
52
  * @var object Imagify_Views
53
  * @since 1.9
 
54
  * @author Grégory Viguier
55
  */
56
  protected $views;
59
  * Constructor.
60
  *
61
  * @since 1.7
 
62
  * @author Grégory Viguier
63
  *
64
  * @param array $args An associative array of arguments.
81
  * Prepares the list of items for displaying.
82
  *
83
  * @since 1.7
 
84
  * @author Grégory Viguier
85
  */
86
  public function prepare_items() {
228
  * Message to be displayed when there are no items.
229
  *
230
  * @since 1.7
 
231
  * @author Grégory Viguier
232
  */
233
  public function no_items() {
296
  * Display views.
297
  *
298
  * @since 1.7
 
299
  * @author Grégory Viguier
300
  */
301
  public function views() {
413
  * Get an associative array ( option_name => option_title ) with the list of bulk actions available on this table.
414
  *
415
  * @since 1.7
 
416
  * @author Grégory Viguier
417
  *
418
  * @return array
428
  * 'internal-name' => 'Title'
429
  *
430
  * @since 1.7
 
431
  * @author Grégory Viguier
432
  *
433
  * @return array
453
  * The second format will make the initial sorting order be descending.
454
  *
455
  * @since 1.7
 
456
  * @author Grégory Viguier
457
  *
458
  * @return array
470
  * Get a column contents.
471
  *
472
  * @since 1.7
 
473
  * @author Grégory Viguier
474
  *
475
  * @param string $column The column "name": "cb", "title", "optimization_level", etc.
490
  * Handles the checkbox column output.
491
  *
492
  * @since 1.7
 
493
  * @author Grégory Viguier
494
  *
495
  * @param object $item The current item. It must contain at least a $process property.
506
  * Handles the title column output.
507
  *
508
  * @since 1.7
 
509
  * @author Grégory Viguier
510
  *
511
  * @param object $item The current item. It must contain at least a $process property.
556
  * Handles the parent folder column output.
557
  *
558
  * @since 1.7
 
559
  * @author Grégory Viguier
560
  *
561
  * @param object $item The current item. It must contain at least a $process property.
591
  * Handles the optimization data column output.
592
  *
593
  * @since 1.7
 
594
  * @author Grégory Viguier
595
  *
596
  * @param object $item The current item. It must contain at least a $process property.
643
  * Handles the status column output.
644
  *
645
  * @since 1.7
 
646
  * @author Grégory Viguier
647
  *
648
  * @param object $item The current item. It must contain at least a $process property.
678
  * Handles the optimization level column output.
679
  *
680
  * @since 1.7
 
681
  * @author Grégory Viguier
682
  *
683
  * @param object $item The current item. It must contain at least a $process property.
694
  * Handles the actions column output.
695
  *
696
  * @since 1.7
 
697
  * @author Grégory Viguier
698
  *
699
  * @param object $item The current item. It must contain at least a $process property.
731
  * Prints a button to optimize the file.
732
  *
733
  * @since 1.7
 
734
  * @author Grégory Viguier
735
  *
736
  * @param object $item The current item. It must contain at least a $process property.
759
  * Prints a button to retry to optimize the file.
760
  *
761
  * @since 1.7
 
762
  * @author Grégory Viguier
763
  *
764
  * @param object $item The current item. It must contain at least a $process property.
790
  * Prints buttons to re-optimize the file to other levels.
791
  *
792
  * @since 1.7
 
793
  * @author Grégory Viguier
794
  *
795
  * @param object $item The current item. It must contain at least a $process property.
815
  $data = [];
816
  $url_args = [ 'attachment_id' => $media->get_id() ];
817
 
818
+ if ( $media_level < 1 ) {
819
+ $url_args['optimization_level'] = 2;
820
+ $data['optimization_level'] = 2;
821
+ $data['url'] = get_imagify_admin_url( 'reoptimize-file', $url_args );
822
+
823
+ echo $this->views->get_template( 'button/re-optimize', $data );
824
+ } elseif ( $media_level > 0 ) {
825
+ $url_args['optimization_level'] = 0;
826
+ $data['optimization_level'] = 0;
827
+ $data['url'] = get_imagify_admin_url( 'reoptimize-file', $url_args );
828
+
829
+ echo $this->views->get_template( 'button/re-optimize', $data );
 
 
830
  }
831
  }
832
 
834
  * Prints a button to generate WebP versions if they are missing.
835
  *
836
  * @since 1.7
 
837
  * @author Grégory Viguier
838
  *
839
  * @param object $item The current item. It must contain at least a $process property.
850
  * Prints a button to delete WebP versions when the status is "already_optimized".
851
  *
852
  * @since 1.9.6
 
853
  * @author Grégory Viguier
854
  *
855
  * @param object $item The current item. It must contain at least a $process property.
866
  * Prints a button to restore the file.
867
  *
868
  * @since 1.7
 
869
  * @author Grégory Viguier
870
  *
871
  * @param object $item The current item. It must contain at least a $process property.
889
  * Prints a button to check if the file has been modified or not.
890
  *
891
  * @since 1.7
 
892
  * @author Grégory Viguier
893
  *
894
  * @param object $item The current item. It must contain at least a $process property.
906
  * Prints a button for the comparison tool (before / after optimization).
907
  *
908
  * @since 1.7
 
909
  * @author Grégory Viguier
910
  *
911
  * @param object $item The current item. It must contain at least a $process property.
953
  * It may happen if the $item doesn't come from the prepare() method.
954
  *
955
  * @since 1.7
 
956
  * @author Grégory Viguier
957
  *
958
  * @param object $item The current item. It must contain at least a $process property.
989
  * Get the name of the default primary column.
990
  *
991
  * @since 1.7
 
992
  * @author Grégory Viguier
993
  *
994
  * @return string Name of the default primary column, in this case, 'title'.
1001
  * Get a list of CSS classes for the WP_List_Table table tag.
1002
  *
1003
  * @since 1.7
 
1004
  * @author Grégory Viguier
1005
  *
1006
  * @return array List of CSS classes for the table tag.
1013
  * Allow to save the screen options when submitted by the user.
1014
  *
1015
  * @since 1.7
 
1016
  * @author Grégory Viguier
1017
  *
1018
  * @param bool|int $status Screen option value. Default false to skip.
1032
  * Get the requested folder filter.
1033
  *
1034
  * @since 1.7
 
1035
  * @author Grégory Viguier
1036
  *
1037
  * @return string
1051
  * Get the requested status filter.
1052
  *
1053
  * @since 1.7
 
1054
  * @author Grégory Viguier
1055
  *
1056
  * @return string
inc/classes/class-imagify-notices.php CHANGED
@@ -608,7 +608,9 @@ class Imagify_Notices extends Imagify_Notices_Deprecated {
608
  return $display;
609
  }
610
 
611
- if ( defined( 'WP_ROCKET_VERSION' ) || self::notice_is_dismissed( 'wp-rocket' ) ) {
 
 
612
  return $display;
613
  }
614
 
608
  return $display;
609
  }
610
 
611
+ $plugins = get_plugins();
612
+
613
+ if ( isset( $plugins['wp-rocket/wp-rocket.php'] ) || self::notice_is_dismissed( 'wp-rocket' ) ) {
614
  return $display;
615
  }
616
 
inc/classes/class-imagify-options.php CHANGED
@@ -1,5 +1,4 @@
1
  <?php
2
- defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
3
 
4
  /**
5
  * Class that handles the plugin options.
@@ -21,7 +20,6 @@ class Imagify_Options extends Imagify_Abstract_Options {
21
  *
22
  * @var string
23
  * @since 1.7
24
- * @access protected
25
  */
26
  protected $identifier = 'settings';
27
 
@@ -32,11 +30,10 @@ class Imagify_Options extends Imagify_Abstract_Options {
32
  *
33
  * @var array
34
  * @since 1.7
35
- * @access protected
36
  */
37
  protected $default_values = array(
38
  'api_key' => '',
39
- 'optimization_level' => 0,
40
  'auto_optimize' => 0,
41
  'backup' => 0,
42
  'resize_larger' => 0,
@@ -45,7 +42,6 @@ class Imagify_Options extends Imagify_Abstract_Options {
45
  'display_webp' => 0,
46
  'display_webp_method' => 'picture',
47
  'cdn_url' => '',
48
- 'exif' => 0,
49
  'disallowed-sizes' => array(),
50
  'admin_bar_menu' => 0,
51
  'partner_links' => 0,
@@ -57,10 +53,9 @@ class Imagify_Options extends Imagify_Abstract_Options {
57
  *
58
  * @var array
59
  * @since 1.7
60
- * @access protected
61
  */
62
  protected $reset_values = array(
63
- 'optimization_level' => 1,
64
  'auto_optimize' => 1,
65
  'backup' => 1,
66
  'convert_to_webp' => 1,
@@ -73,7 +68,6 @@ class Imagify_Options extends Imagify_Abstract_Options {
73
  *
74
  * @var object
75
  * @since 1.7
76
- * @access protected
77
  */
78
  protected static $_instance;
79
 
@@ -83,7 +77,6 @@ class Imagify_Options extends Imagify_Abstract_Options {
83
  *
84
  * @since 1.7
85
  * @author Grégory Viguier
86
- * @access protected
87
  */
88
  protected function __construct() {
89
  if ( defined( 'IMAGIFY_API_KEY' ) && IMAGIFY_API_KEY ) {
@@ -119,7 +112,6 @@ class Imagify_Options extends Imagify_Abstract_Options {
119
  *
120
  * @since 1.7
121
  * @author Grégory Viguier
122
- * @access public
123
  *
124
  * @return object Main instance.
125
  */
@@ -141,7 +133,6 @@ class Imagify_Options extends Imagify_Abstract_Options {
141
  *
142
  * @since 1.7
143
  * @author Grégory Viguier
144
- * @access public
145
  *
146
  * @param string $key The option key.
147
  * @param mixed $value The value.
@@ -171,7 +162,6 @@ class Imagify_Options extends Imagify_Abstract_Options {
171
  case 'resize_larger':
172
  case 'convert_to_webp':
173
  case 'display_webp':
174
- case 'exif':
175
  case 'admin_bar_menu':
176
  case 'partner_links':
177
  return 1;
@@ -233,7 +223,6 @@ class Imagify_Options extends Imagify_Abstract_Options {
233
  *
234
  * @since 1.7
235
  * @author Grégory Viguier
236
- * @access public
237
  *
238
  * @param string $values The option value.
239
  * @return array
1
  <?php
 
2
 
3
  /**
4
  * Class that handles the plugin options.
20
  *
21
  * @var string
22
  * @since 1.7
 
23
  */
24
  protected $identifier = 'settings';
25
 
30
  *
31
  * @var array
32
  * @since 1.7
 
33
  */
34
  protected $default_values = array(
35
  'api_key' => '',
36
+ 'optimization_level' => 2,
37
  'auto_optimize' => 0,
38
  'backup' => 0,
39
  'resize_larger' => 0,
42
  'display_webp' => 0,
43
  'display_webp_method' => 'picture',
44
  'cdn_url' => '',
 
45
  'disallowed-sizes' => array(),
46
  'admin_bar_menu' => 0,
47
  'partner_links' => 0,
53
  *
54
  * @var array
55
  * @since 1.7
 
56
  */
57
  protected $reset_values = array(
58
+ 'optimization_level' => 2,
59
  'auto_optimize' => 1,
60
  'backup' => 1,
61
  'convert_to_webp' => 1,
68
  *
69
  * @var object
70
  * @since 1.7
 
71
  */
72
  protected static $_instance;
73
 
77
  *
78
  * @since 1.7
79
  * @author Grégory Viguier
 
80
  */
81
  protected function __construct() {
82
  if ( defined( 'IMAGIFY_API_KEY' ) && IMAGIFY_API_KEY ) {
112
  *
113
  * @since 1.7
114
  * @author Grégory Viguier
 
115
  *
116
  * @return object Main instance.
117
  */
133
  *
134
  * @since 1.7
135
  * @author Grégory Viguier
 
136
  *
137
  * @param string $key The option key.
138
  * @param mixed $value The value.
162
  case 'resize_larger':
163
  case 'convert_to_webp':
164
  case 'display_webp':
 
165
  case 'admin_bar_menu':
166
  case 'partner_links':
167
  return 1;
223
  *
224
  * @since 1.7
225
  * @author Grégory Viguier
 
226
  *
227
  * @param string $values The option value.
228
  * @return array
inc/classes/class-imagify.php CHANGED
@@ -1,11 +1,11 @@
1
  <?php
2
- defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
3
 
4
  /**
5
  * Imagify.io API for WordPress.
6
  */
7
  class Imagify {
8
- use \Imagify\Traits\InstanceGetterTrait;
9
 
10
  /**
11
  * The Imagify API endpoint.
@@ -47,7 +47,6 @@ class Imagify {
47
  *
48
  * @var object Imagify_Filesystem
49
  * @since 1.7.1
50
- * @access protected
51
  * @author Grégory Viguier
52
  */
53
  protected $filesystem;
@@ -57,7 +56,6 @@ class Imagify {
57
  *
58
  * @var \stdClass|\WP_Error
59
  * @since 1.9.9
60
- * @access protected
61
  * @author Grégory Viguier
62
  */
63
  protected static $user;
@@ -83,7 +81,6 @@ class Imagify {
83
  /**
84
  * Get your Imagify account infos.
85
  *
86
- * @access public
87
  * @since 1.6.5
88
  *
89
  * @return object
@@ -128,7 +125,6 @@ class Imagify {
128
  /**
129
  * Create a user on your Imagify account.
130
  *
131
- * @access public
132
  * @since 1.6.5
133
  *
134
  * @param array $data All user data.
@@ -166,7 +162,6 @@ class Imagify {
166
  /**
167
  * Update an existing user on your Imagify account.
168
  *
169
- * @access public
170
  * @since 1.6.5
171
  *
172
  * @param string $data All user data.
@@ -188,7 +183,6 @@ class Imagify {
188
  /**
189
  * Check your Imagify API key status.
190
  *
191
- * @access public
192
  * @since 1.6.5
193
  *
194
  * @param string $data The license key.
@@ -220,7 +214,6 @@ class Imagify {
220
  /**
221
  * Get the Imagify API version.
222
  *
223
- * @access public
224
  * @since 1.6.5
225
  *
226
  * @return object
@@ -242,7 +235,6 @@ class Imagify {
242
  /**
243
  * Get Public Info.
244
  *
245
- * @access public
246
  * @since 1.6.5
247
  *
248
  * @return object
@@ -256,7 +248,6 @@ class Imagify {
256
  /**
257
  * Optimize an image from its binary content.
258
  *
259
- * @access public
260
  * @since 1.6.5
261
  * @since 1.6.7 $data['image'] can contain the file path (prefered) or the result of `curl_file_create()`.
262
  *
@@ -280,7 +271,6 @@ class Imagify {
280
  /**
281
  * Optimize an image from its URL.
282
  *
283
- * @access public
284
  * @since 1.6.5
285
  *
286
  * @param string $data All options. Details here: --.
@@ -301,7 +291,6 @@ class Imagify {
301
  /**
302
  * Get prices for plans.
303
  *
304
- * @access public
305
  * @since 1.6.5
306
  *
307
  * @return object
@@ -313,23 +302,8 @@ class Imagify {
313
  }
314
 
315
  /**
316
- * Get prices for packs (One Time).
317
  *
318
- * @access public
319
- * @since 1.6.5
320
- *
321
- * @return object
322
- */
323
- public function get_packs_prices() {
324
- $this->headers = $this->all_headers;
325
-
326
- return $this->http_call( 'pricing/pack/' );
327
- }
328
-
329
- /**
330
- * Get all prices (packs & plans included).
331
- *
332
- * @access public
333
  * @since 1.6.5
334
  *
335
  * @return object
@@ -341,9 +315,8 @@ class Imagify {
341
  }
342
 
343
  /**
344
- * Get all prices (packs & plans included).
345
  *
346
- * @access public
347
  * @since 1.6.5
348
  *
349
  * @param string $coupon A coupon code.
@@ -358,7 +331,6 @@ class Imagify {
358
  /**
359
  * Get information about current discount.
360
  *
361
- * @access public
362
  * @since 1.6.5
363
  *
364
  * @return object
@@ -372,7 +344,6 @@ class Imagify {
372
  /**
373
  * Make an HTTP call using curl.
374
  *
375
- * @access private
376
  * @since 1.6.5
377
  * @since 1.6.7 Use `wp_remote_request()` when possible (when we don't need to send an image).
378
  *
@@ -451,7 +422,6 @@ class Imagify {
451
  /**
452
  * Make an HTTP call using curl.
453
  *
454
- * @access private
455
  * @since 1.6.7
456
  * @throws Exception When curl_init() fails.
457
  * @author Grégory Viguier
@@ -504,7 +474,7 @@ class Imagify {
504
  curl_setopt( $ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS );
505
  }
506
 
507
- $user_agent = apply_filters( 'http_headers_useragent', 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' ) );
508
 
509
  curl_setopt( $ch, CURLOPT_URL, $url );
510
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
@@ -580,7 +550,6 @@ class Imagify {
580
  /**
581
  * Handle the request response and maybe trigger an error.
582
  *
583
- * @access private
584
  * @since 1.6.7
585
  * @author Grégory Viguier
586
  *
@@ -629,7 +598,6 @@ class Imagify {
629
  * Generate a random key.
630
  * Similar to wp_generate_password() but without filter.
631
  *
632
- * @access private
633
  * @since 1.8.4
634
  * @see wp_generate_password()
635
  * @author Grégory Viguier
@@ -651,7 +619,6 @@ class Imagify {
651
  /**
652
  * Filter the arguments used in an HTTP request, to make sure our API key has not been overwritten by some other plugin.
653
  *
654
- * @access public
655
  * @since 1.8.4
656
  * @author Grégory Viguier
657
  *
1
  <?php
2
+ use Imagify\Traits\InstanceGetterTrait;
3
 
4
  /**
5
  * Imagify.io API for WordPress.
6
  */
7
  class Imagify {
8
+ use InstanceGetterTrait;
9
 
10
  /**
11
  * The Imagify API endpoint.
47
  *
48
  * @var object Imagify_Filesystem
49
  * @since 1.7.1
 
50
  * @author Grégory Viguier
51
  */
52
  protected $filesystem;
56
  *
57
  * @var \stdClass|\WP_Error
58
  * @since 1.9.9
 
59
  * @author Grégory Viguier
60
  */
61
  protected static $user;
81
  /**
82
  * Get your Imagify account infos.
83
  *
 
84
  * @since 1.6.5
85
  *
86
  * @return object
125
  /**
126
  * Create a user on your Imagify account.
127
  *
 
128
  * @since 1.6.5
129
  *
130
  * @param array $data All user data.
162
  /**
163
  * Update an existing user on your Imagify account.
164
  *
 
165
  * @since 1.6.5
166
  *
167
  * @param string $data All user data.
183
  /**
184
  * Check your Imagify API key status.
185
  *
 
186
  * @since 1.6.5
187
  *
188
  * @param string $data The license key.
214
  /**
215
  * Get the Imagify API version.
216
  *
 
217
  * @since 1.6.5
218
  *
219
  * @return object
235
  /**
236
  * Get Public Info.
237
  *
 
238
  * @since 1.6.5
239
  *
240
  * @return object
248
  /**
249
  * Optimize an image from its binary content.
250
  *
 
251
  * @since 1.6.5
252
  * @since 1.6.7 $data['image'] can contain the file path (prefered) or the result of `curl_file_create()`.
253
  *
271
  /**
272
  * Optimize an image from its URL.
273
  *
 
274
  * @since 1.6.5
275
  *
276
  * @param string $data All options. Details here: --.
291
  /**
292
  * Get prices for plans.
293
  *
 
294
  * @since 1.6.5
295
  *
296
  * @return object
302
  }
303
 
304
  /**
305
+ * Get all prices (Plans included).
306
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
307
  * @since 1.6.5
308
  *
309
  * @return object
315
  }
316
 
317
  /**
318
+ * Get coupon code data.
319
  *
 
320
  * @since 1.6.5
321
  *
322
  * @param string $coupon A coupon code.
331
  /**
332
  * Get information about current discount.
333
  *
 
334
  * @since 1.6.5
335
  *
336
  * @return object
344
  /**
345
  * Make an HTTP call using curl.
346
  *
 
347
  * @since 1.6.5
348
  * @since 1.6.7 Use `wp_remote_request()` when possible (when we don't need to send an image).
349
  *
422
  /**
423
  * Make an HTTP call using curl.
424
  *
 
425
  * @since 1.6.7
426
  * @throws Exception When curl_init() fails.
427
  * @author Grégory Viguier
474
  curl_setopt( $ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS );
475
  }
476
 
477
+ $user_agent = apply_filters( 'http_headers_useragent', 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' ), $url );
478
 
479
  curl_setopt( $ch, CURLOPT_URL, $url );
480
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
550
  /**
551
  * Handle the request response and maybe trigger an error.
552
  *
 
553
  * @since 1.6.7
554
  * @author Grégory Viguier
555
  *
598
  * Generate a random key.
599
  * Similar to wp_generate_password() but without filter.
600
  *
 
601
  * @since 1.8.4
602
  * @see wp_generate_password()
603
  * @author Grégory Viguier
619
  /**
620
  * Filter the arguments used in an HTTP request, to make sure our API key has not been overwritten by some other plugin.
621
  *
 
622
  * @since 1.8.4
623
  * @author Grégory Viguier
624
  *
inc/deprecated/deprecated.php CHANGED
@@ -1663,3 +1663,92 @@ if ( is_admin() ) :
1663
  }
1664
 
1665
  endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1663
  }
1664
 
1665
  endif;
1666
+
1667
+ /**
1668
+ * Maybe reset opcache after Imagify update.
1669
+ *
1670
+ * @since 1.7.1.2
1671
+ * @since 2.0
1672
+ * @author Grégory Viguier
1673
+ *
1674
+ * @param object $wp_upgrader Plugin_Upgrader instance.
1675
+ * @param array $hook_extra {
1676
+ * Array of bulk item update data.
1677
+ *
1678
+ * @type string $action Type of action. Default 'update'.
1679
+ * @type string $type Type of update process. Accepts 'plugin', 'theme', 'translation', or 'core'.
1680
+ * @type bool $bulk Whether the update process is a bulk update. Default true.
1681
+ * @type array $plugins Array of the basename paths of the plugins' main files.
1682
+ * }
1683
+ */
1684
+ function imagify_maybe_reset_opcache( $wp_upgrader, $hook_extra ) {
1685
+ _deprecated_function( __FUNCTION__ . '()', '2.0' );
1686
+
1687
+ static $imagify_path;
1688
+
1689
+ if ( ! isset( $hook_extra['action'], $hook_extra['type'], $hook_extra['plugins'] ) ) {
1690
+ return;
1691
+ }
1692
+
1693
+ if ( 'update' !== $hook_extra['action'] || 'plugin' !== $hook_extra['type'] || ! is_array( $hook_extra['plugins'] ) ) {
1694
+ return;
1695
+ }
1696
+
1697
+ $plugins = array_flip( $hook_extra['plugins'] );
1698
+
1699
+ if ( ! isset( $imagify_path ) ) {
1700
+ $imagify_path = plugin_basename( IMAGIFY_FILE );
1701
+ }
1702
+
1703
+ if ( ! isset( $plugins[ $imagify_path ] ) ) {
1704
+ return;
1705
+ }
1706
+
1707
+ imagify_reset_opcache();
1708
+ }
1709
+
1710
+ /**
1711
+ * Reset PHP opcache.
1712
+ *
1713
+ * @since 1.8.1
1714
+ * @since 1.9.9 Added $reset_function_cache parameter and return boolean.
1715
+ * @since 2.0 deprecated
1716
+ * @author Grégory Viguier
1717
+ *
1718
+ * @param bool $reset_function_cache Set to true to bypass the cache.
1719
+ * @return bool Return true if the opcode cache was reset (or reset in a previous call), or false if the opcode cache is disabled.
1720
+ */
1721
+ function imagify_reset_opcache( $reset_function_cache = false ) {
1722
+ _deprecated_function( __FUNCTION__ . '()', '2.0' );
1723
+
1724
+ static $can_reset;
1725
+
1726
+ if ( $reset_function_cache || ! isset( $can_reset ) ) {
1727
+ if ( ! function_exists( 'opcache_reset' ) ) {
1728
+ $can_reset = false;
1729
+ return false;
1730
+ }
1731
+
1732
+ $opcache_enabled = filter_var( ini_get( 'opcache.enable' ), FILTER_VALIDATE_BOOLEAN ); // phpcs:ignore PHPCompatibility.IniDirectives.NewIniDirectives.opcache_enableFound
1733
+
1734
+ if ( ! $opcache_enabled ) {
1735
+ $can_reset = false;
1736
+ return false;
1737
+ }
1738
+
1739
+ $restrict_api = ini_get( 'opcache.restrict_api' ); // phpcs:ignore PHPCompatibility.IniDirectives.NewIniDirectives.opcache_restrict_apiFound
1740
+
1741
+ if ( $restrict_api && strpos( __FILE__, $restrict_api ) !== 0 ) {
1742
+ $can_reset = false;
1743
+ return false;
1744
+ }
1745
+
1746
+ $can_reset = true;
1747
+ }
1748
+
1749
+ if ( ! $can_reset ) {
1750
+ return false;
1751
+ }
1752
+
1753
+ return opcache_reset(); // phpcs:ignore PHPCompatibility.FunctionUse.NewFunctions.opcache_resetFound
1754
+ }
inc/functions/admin-ui.php CHANGED
@@ -232,20 +232,18 @@ function get_imagify_attachment_reoptimize_link( $process ) {
232
  ];
233
  }
234
 
235
- foreach ( [ 2, 1, 0 ] as $level ) {
236
- /**
237
- * Display a link if:
238
- * - the level is lower than the one used to optimize the media,
239
- * - or, the level is higher and the media is not already optimized.
240
- */
241
- if ( $media_level < $level || ( $media_level > $level && ! $is_already_optimized ) ) {
242
- $url_args['optimization_level'] = $level;
243
- $data['optimization_level'] = $level;
244
- $data['url'] = get_imagify_admin_url( 'manual-reoptimize', $url_args );
245
-
246
- $output .= $views->get_template( 'button/re-optimize', $data );
247
- $output .= '<br/>';
248
- }
249
  }
250
 
251
  return $output;
232
  ];
233
  }
234
 
235
+ if ( $media_level < 1 ) {
236
+ $url_args['optimization_level'] = 2;
237
+ $data['optimization_level'] = 2;
238
+ $data['url'] = get_imagify_admin_url( 'manual-reoptimize', $url_args );
239
+
240
+ $output .= $views->get_template( 'button/re-optimize', $data );
241
+ } elseif ( $media_level > 0 ) {
242
+ $url_args['optimization_level'] = 0;
243
+ $data['optimization_level'] = 0;
244
+ $data['url'] = get_imagify_admin_url( 'manual-reoptimize', $url_args );
245
+
246
+ $output .= $views->get_template( 'button/re-optimize', $data );
 
 
247
  }
248
 
249
  return $output;
inc/functions/api.php CHANGED
@@ -96,19 +96,7 @@ function get_imagify_plans_prices() {
96
  }
97
 
98
  /**
99
- * Get Imagify Plans Prices.
100
- *
101
- * @since 1.5
102
- * @author Geoffrey Crofte
103
- *
104
- * @return object
105
- */
106
- function get_imagify_packs_prices() {
107
- return imagify()->get_packs_prices();
108
- }
109
-
110
- /**
111
- * Get Imagify All Prices (plan & packs).
112
  *
113
  * @since 1.5.4
114
  * @author Geoffrey Crofte
96
  }
97
 
98
  /**
99
+ * Get Imagify All Prices (plans).
 
 
 
 
 
 
 
 
 
 
 
 
100
  *
101
  * @since 1.5.4
102
  * @author Geoffrey Crofte
inc/functions/common.php CHANGED
@@ -223,7 +223,7 @@ function imagify_can_optimize_custom_folders() {
223
  * @return string The URL.
224
  */
225
  function imagify_get_external_url( $target, $query_args = array() ) {
226
- $site_url = IMAGIFY_APP_DOMAIN . '/';
227
  $app_url = IMAGIFY_APP_DOMAIN . '/#/';
228
 
229
  switch ( $target ) {
@@ -246,11 +246,6 @@ function imagify_get_external_url( $target, $query_args = array() ) {
246
  $url = 'https://www.facebook.com/sharer/sharer.php?u=' . $url;
247
  break;
248
 
249
- case 'exif':
250
- /* translators: URL to a Wikipedia page explaining what EXIF means. */
251
- $url = __( 'https://en.wikipedia.org/wiki/Exchangeable_image_file_format', 'imagify' );
252
- break;
253
-
254
  case 'contact':
255
  $lang = imagify_get_current_lang_in( 'fr' );
256
  $paths = array(
@@ -370,10 +365,8 @@ function imagify_get_optimization_level_label( $level, $format = '%s' ) {
370
 
371
  switch ( $level ) {
372
  case 2:
373
- $icon .= '<polygon points="11.6054688 11.6054688 8.7890625 11.6054688 8.7890625 0.39453125 11.6054688 0.39453125"/><polygon points="7.39453125 11.6054688 4.60546875 11.6054688 4.60546875 3.89453125 7.39453125 3.89453125"/><polygon points="3.2109375 11.6054688 0.39453125 11.6054688 0.39453125 6 3.2109375 6"/>';
374
- break;
375
  case 1:
376
- $icon .= '<polygon fill="#CCD1D6" points="11.6054688 11.6054688 8.7890625 11.6054688 8.7890625 0.39453125 11.6054688 0.39453125"/><polygon points="7.39453125 11.6054688 4.60546875 11.6054688 4.60546875 3.89453125 7.39453125 3.89453125"/><polygon points="3.2109375 11.6054688 0.39453125 11.6054688 0.39453125 6 3.2109375 6"/>';
377
  break;
378
  case 0:
379
  $icon .= '<polygon fill="#CCD1D6" points="11.6054688 11.6054688 8.7890625 11.6054688 8.7890625 0.39453125 11.6054688 0.39453125"/><polygon fill="#CCD1D6" points="7.39453125 11.6054688 4.60546875 11.6054688 4.60546875 3.89453125 7.39453125 3.89453125"/><polygon points="3.2109375 11.6054688 0.39453125 11.6054688 0.39453125 6 3.2109375 6"/>';
@@ -386,11 +379,10 @@ function imagify_get_optimization_level_label( $level, $format = '%s' ) {
386
 
387
  switch ( $level ) {
388
  case 2:
389
- return sprintf( $format, __( 'Ultra', 'imagify' ) );
390
  case 1:
391
- return sprintf( $format, __( 'Aggressive', 'imagify' ) );
392
  case 0:
393
- return sprintf( $format, __( 'Normal', 'imagify' ) );
394
  }
395
 
396
  return '';
223
  * @return string The URL.
224
  */
225
  function imagify_get_external_url( $target, $query_args = array() ) {
226
+ $site_url = IMAGIFY_SITE_DOMAIN . '/';
227
  $app_url = IMAGIFY_APP_DOMAIN . '/#/';
228
 
229
  switch ( $target ) {
246
  $url = 'https://www.facebook.com/sharer/sharer.php?u=' . $url;
247
  break;
248
 
 
 
 
 
 
249
  case 'contact':
250
  $lang = imagify_get_current_lang_in( 'fr' );
251
  $paths = array(
365
 
366
  switch ( $level ) {
367
  case 2:
 
 
368
  case 1:
369
+ $icon .= '<polygon points="11.6054688 11.6054688 8.7890625 11.6054688 8.7890625 0.39453125 11.6054688 0.39453125"/><polygon points="7.39453125 11.6054688 4.60546875 11.6054688 4.60546875 3.89453125 7.39453125 3.89453125"/><polygon points="3.2109375 11.6054688 0.39453125 11.6054688 0.39453125 6 3.2109375 6"/>';
370
  break;
371
  case 0:
372
  $icon .= '<polygon fill="#CCD1D6" points="11.6054688 11.6054688 8.7890625 11.6054688 8.7890625 0.39453125 11.6054688 0.39453125"/><polygon fill="#CCD1D6" points="7.39453125 11.6054688 4.60546875 11.6054688 4.60546875 3.89453125 7.39453125 3.89453125"/><polygon points="3.2109375 11.6054688 0.39453125 11.6054688 0.39453125 6 3.2109375 6"/>';
379
 
380
  switch ( $level ) {
381
  case 2:
 
382
  case 1:
383
+ return sprintf( $format, __( 'Smart', 'imagify' ) );
384
  case 0:
385
+ return sprintf( $format, __( 'Lossless', 'imagify' ) );
386
  }
387
 
388
  return '';
inc/functions/i18n.php CHANGED
@@ -40,7 +40,7 @@ function get_imagify_localize_script_translations( $context ) {
40
  'saveApiKeyTitle' => __( 'Connect to Imagify!', 'imagify' ),
41
  'saveApiKeyText' => __( 'Paste your API key below:', 'imagify' ),
42
  'saveApiKeyConfirmButtonText' => __( 'Connect me', 'imagify' ),
43
- 'ApiKeyErrorEmpty' => __( 'You need to specify your api key!', 'imagify' ),
44
  'ApiKeyCheckSuccessTitle' => __( 'Congratulations!', 'imagify' ),
45
  'ApiKeyCheckSuccessText' => __( 'Your API key is valid. You can now configure the Imagify settings to optimize your images.', 'imagify' ),
46
  ],
40
  'saveApiKeyTitle' => __( 'Connect to Imagify!', 'imagify' ),
41
  'saveApiKeyText' => __( 'Paste your API key below:', 'imagify' ),
42
  'saveApiKeyConfirmButtonText' => __( 'Connect me', 'imagify' ),
43
+ 'ApiKeyErrorEmpty' => __( 'You need to specify your API key!', 'imagify' ),
44
  'ApiKeyCheckSuccessTitle' => __( 'Congratulations!', 'imagify' ),
45
  'ApiKeyCheckSuccessText' => __( 'Your API key is valid. You can now configure the Imagify settings to optimize your images.', 'imagify' ),
46
  ],
readme.txt CHANGED
@@ -1,8 +1,10 @@
1
- === Imagify – Optimize Images & Convert WebP ===
2
- Contributors: wp_rocket
3
- Tags: optimize images, convert webp, webp converter, image optimization, compress images, image compressor, resize images, reduce image size, performance, image optimizer, core web vitals, best image optimization plugin
4
- Tested up to: 6.0
5
- Stable tag: 1.10
 
 
6
 
7
  Compress images & convert WebP with the best WordPress image optimization plugin. Optimize images in 1-click & resize images with our image optimizer!
8
 
@@ -12,7 +14,7 @@ Compress images & convert WebP with the best WordPress image optimization plugin
12
 
13
  [Imagify](https://imagify.io/) is the most advanced image optimization plugin to help you resize and compress images. You can now use its power directly in WordPress to optimize images and reduce the weight of the photos you want to add to your site – all in just one click and without sacrificing their quality.
14
 
15
- Imagify is the best WordPress image optimizer. The plugin lets you optimize images in one go with its bulk optimization option. You can resize your images on the fly and, with 3 compression levels to choose from, your images are automatically optimized in the selected compression level. If needed, you can always restore your images to their original versions.
16
 
17
  On top of optimizing images, you’ll choose the best WebP plugin for WordPress. Imagify also converts your images to WebP, a next-gen format for lighter images that will speed up your WordPress site, improve user experience, and even SEO. Convert WebP will make a difference in images optimization, you’ll see that from yourself.
18
 
@@ -24,11 +26,11 @@ Imagify is a great image compressor and the ultimate solution to optimize images
24
 
25
  Many of your high-quality images may be in sizes that are much too large. To reduce image size and compress large images, Imagify has a setting that allows you to choose a maximum width for all of your images, and if you upload images that are larger than that size, it will resize large images for you during optimization. Imagify will resize images proportionally without cropping them.
26
 
27
- With such a great image optimizer like Imagify, you can choose between two types of image compression: [lossy compression and lossless compression](https://imagify.io/blog/lossless-vs-lossy-image-compression/). The Normal image compression level uses lossless compression, meaning there should be no difference in image quality after image optimization. The Aggressive and Ultra levels both use lossy compression, meaning you could notice some slight differences in image quality, but you will reduce image size even more!
28
 
29
  When using our image compression tool, Imagify, you will enjoy smaller file sizes and faster loading times. But the best part is that you will optimize images and reduce their weight without losing quality: why should you have to choose between beauty and speed? If you want to compress images, it’s now easier than ever with Imagify!
30
 
31
- = Convert Images to the WebP Format =
32
 
33
  Thanks to Imagify, you can take a step further in your image optimization process. You can also convert all your images to next-gen image formats such as WebP. WebP format offers superior image compression and quality and is a way to optimize images and speed up their loading times on websites. To convert images to next-gen format, using the Imagify plugin will save you a precious amount of time.
34
 
@@ -50,7 +52,7 @@ Even Google tells you to take care of your images! If you have ever run a perfor
50
 
51
  Here’s what our users have to say about us after optimizing their images with Imagify:
52
 
53
- >"Images are other media are the largest parts on your web pages (most likely). Therefore don't forget to optimise images for the web before adding to your site. For WordPress there are many optimisation plugins available. My favourite is Imagify" — [Mark Wilkinson](https://twitter.com/wpmark/status/1479128422395830273)
54
  >
55
 
56
  >”To give your images a slimming treatment, without altering them aesthetically, there is a great plugin on WordPress: Imagify. Simple, efficient and functional, it’s really worth a look.”— [WP Marmite](https://twitter.com/wpmarmite_en/status/1383072818649255937)
@@ -103,7 +105,7 @@ Our mission is to improve the web, we are making it faster with [WP Rocket](http
103
 
104
  = Related Plugins =
105
  * [WP Rocket](https://wp-rocket.me/): Best caching plugin to speed-up your WordPress website.
106
- * [Lazy Load](https://wordpress.org/plugins/rocket-lazy-load/): Best Lazy Load script to reduce the number of HTTP requests and improves the website's loading time.
107
 
108
  License: GPLv2 or later
109
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -162,15 +164,7 @@ When you optimize JPG, PNG, and GIF files, Imagify will also create WebP version
162
 
163
  = How should I know which image compression level is best for me? =
164
 
165
- There are three image compression levels available - Normal, Aggressive and Ultra.
166
-
167
- Normal compression is a "lossless" image optimization. This means there is no loss of image quality after compression.
168
-
169
- Aggressive and Ultra compression are more powerful, so the picture quality will be somewhat reduced. The weight of the compressed image will be much less.
170
-
171
- We recommend Aggressive as the best balanced level that reduces the size of the image but does not affect the quality.
172
-
173
- It would be best, however, to test the 3 levels of compression on a smaller amount of images and see how it affects the quality of your image. Once you see which compression level suits your needs, you can easily run the others via Bulk optimization or Media Library page.
174
 
175
  =How does the optimization process work?=
176
 
@@ -178,7 +172,7 @@ The image optimization process is performed on our servers. Once done, Imagify r
178
 
179
  =How long are images stored by Imagify?=
180
 
181
- Once your images have been optimized via the WP plugin, compressed images stay on your end forever (even if you delete the Imagify account).
182
 
183
  During the optimization process, compressed images sent via the API or WordPress plugin are stored for one hour on our server (they are already sent back to your site and stay there safely).
184
 
@@ -198,7 +192,7 @@ Do not waste your time resizing and optimizing your images in Photoshop. Imagify
198
 
199
  =Is the EXIF data of images removed?=
200
 
201
- By default EXIF data is removed. It is possible to keep it with the WordPress plugin by enabling the option in the Imagify Settings page.
202
 
203
  =I used Kraken, Optimus, EWWW or WP Smush, will Imagify further optimize my images?=
204
 
@@ -210,7 +204,7 @@ No. Imagify automatically replaces the original images with an optimized image.
210
 
211
  = Is it possible to re-optimize images with a different level? =
212
 
213
- Yes. By activating the backup option in the plugin, you can re-optimize each compressed image with a different image compression level.
214
 
215
  = What happens when the plugin is disabled? =
216
 
@@ -255,6 +249,16 @@ No. However, you get 20MB of quota per month for free to optimize your images (a
255
  4. Other Media Page
256
 
257
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
258
  = 1.10 - 2021/07/15 =
259
  * The plugin minimum compatible versions are now PHP 7.0 and WordPress 5.3
260
  * Enhancement: Correctly display WordPress cover blocks when WebP and picture tag replacement is enabled (#546)
1
+ === Imagify – Optimize Images & Convert WebP | Compress Images Easily ===
2
+ Contributors: wp_rocket, imagify
3
+ Tags: optimize images, convert webp, webp, image optimization, compress images, image compressor, resize images, reduce image size, performance, image optimizer, core web vitals, best image optimization plugin
4
+ Tested up to: 6.1
5
+ Stable tag: 2.0
6
+ License: GPLv2 or later
7
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
8
 
9
  Compress images & convert WebP with the best WordPress image optimization plugin. Optimize images in 1-click & resize images with our image optimizer!
10
 
14
 
15
  [Imagify](https://imagify.io/) is the most advanced image optimization plugin to help you resize and compress images. You can now use its power directly in WordPress to optimize images and reduce the weight of the photos you want to add to your site – all in just one click and without sacrificing their quality.
16
 
17
+ Imagify is the best WordPress image optimizer. The plugin lets you optimize images in one go with its bulk optimization option. You can resize your images on the fly they will be automatically optimized at the best compression level. If needed, you can always restore your images to their original versions.
18
 
19
  On top of optimizing images, you’ll choose the best WebP plugin for WordPress. Imagify also converts your images to WebP, a next-gen format for lighter images that will speed up your WordPress site, improve user experience, and even SEO. Convert WebP will make a difference in images optimization, you’ll see that from yourself.
20
 
26
 
27
  Many of your high-quality images may be in sizes that are much too large. To reduce image size and compress large images, Imagify has a setting that allows you to choose a maximum width for all of your images, and if you upload images that are larger than that size, it will resize large images for you during optimization. Imagify will resize images proportionally without cropping them.
28
 
29
+ With such a great image optimizer like Imagify, you’ll get your images automatically optimized at the best compression level and quality thanks to the Smart Compression Mode.
30
 
31
  When using our image compression tool, Imagify, you will enjoy smaller file sizes and faster loading times. But the best part is that you will optimize images and reduce their weight without losing quality: why should you have to choose between beauty and speed? If you want to compress images, it’s now easier than ever with Imagify!
32
 
33
+ = Convert WebP for Superior Image Compression =
34
 
35
  Thanks to Imagify, you can take a step further in your image optimization process. You can also convert all your images to next-gen image formats such as WebP. WebP format offers superior image compression and quality and is a way to optimize images and speed up their loading times on websites. To convert images to next-gen format, using the Imagify plugin will save you a precious amount of time.
36
 
52
 
53
  Here’s what our users have to say about us after optimizing their images with Imagify:
54
 
55
+ >"Images and other media are the largest parts on your web pages (most likely). Therefore don't forget to optimize images for the web before adding to your site. For WordPress there are many optimisation plugins available. My favourite is Imagify" — [Mark Wilkinson](https://twitter.com/wpmark/status/1479128422395830273)
56
  >
57
 
58
  >”To give your images a slimming treatment, without altering them aesthetically, there is a great plugin on WordPress: Imagify. Simple, efficient and functional, it’s really worth a look.”— [WP Marmite](https://twitter.com/wpmarmite_en/status/1383072818649255937)
105
 
106
  = Related Plugins =
107
  * [WP Rocket](https://wp-rocket.me/): Best caching plugin to speed-up your WordPress website.
108
+ * [Lazy Load](https://wordpress.org/plugins/rocket-lazy-load/): Best Lazy Load script to reduce the number of HTTP requests and improve the website's loading time.
109
 
110
  License: GPLv2 or later
111
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
164
 
165
  = How should I know which image compression level is best for me? =
166
 
167
+ Don’t worry! Imagify comes with the Smart Compression Mode. It means that your images will be automatically optimized for the best possible compression ratio and quality. There’s nothing else to do – just enjoy your lighter and faster images.
 
 
 
 
 
 
 
 
168
 
169
  =How does the optimization process work?=
170
 
172
 
173
  =How long are images stored by Imagify?=
174
 
175
+ Once your images have been optimized via the WP plugin, the compressed images stay on your end forever (even if you delete the Imagify account).
176
 
177
  During the optimization process, compressed images sent via the API or WordPress plugin are stored for one hour on our server (they are already sent back to your site and stay there safely).
178
 
192
 
193
  =Is the EXIF data of images removed?=
194
 
195
+ EXIF data is not removed.
196
 
197
  =I used Kraken, Optimus, EWWW or WP Smush, will Imagify further optimize my images?=
198
 
204
 
205
  = Is it possible to re-optimize images with a different level? =
206
 
207
+ Yes. By activating the backup option in the plugin, you can re-optimize each image to lossless compression with a single click.
208
 
209
  = What happens when the plugin is disabled? =
210
 
249
  4. Other Media Page
250
 
251
  == Changelog ==
252
+ = 2.0 =
253
+ - Enhancement: Add compatibility with our new smart compression system (#663)
254
+ - Enhancement: Optimize initialization of some of the code (#473)
255
+ - Enhancement: Add new filter `imagify_process_webp_content` (#653)
256
+ - Bugfix: Prevent PHP warning when displaying the pricing modal (#666)
257
+ - 3rd party compatibility: Pass missing parameter to the `http_headers_useragent` filter (#612)
258
+ - 3rd party compatibility: Prevent conflict with WP Cloudflare super page cache (#609)
259
+ - Bugfix: Fix various UI issues (#604, #586, #592, #594)
260
+ - i18n: Fix typos & improve strings (#621)
261
+
262
  = 1.10 - 2021/07/15 =
263
  * The plugin minimum compatible versions are now PHP 7.0 and WordPress 5.3
264
  * Enhancement: Correctly display WordPress cover blocks when WebP and picture tag replacement is enabled (#546)
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit27c2f21fb0be1f8c2ef63f80977ab942::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit5c91431b47976e7eff13ffd9e4a50932::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit27c2f21fb0be1f8c2ef63f80977ab942
6
  {
7
  private static $loader;
8
 
@@ -22,15 +22,15 @@ class ComposerAutoloaderInit27c2f21fb0be1f8c2ef63f80977ab942
22
  return self::$loader;
23
  }
24
 
25
- spl_autoload_register(array('ComposerAutoloaderInit27c2f21fb0be1f8c2ef63f80977ab942', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\AutoloadWPMediaImagifyWordPressPlugin\ClassLoader();
27
- spl_autoload_unregister(array('ComposerAutoloaderInit27c2f21fb0be1f8c2ef63f80977ab942', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
- call_user_func(\Composer\Autoload\ComposerStaticInit27c2f21fb0be1f8c2ef63f80977ab942::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit5c91431b47976e7eff13ffd9e4a50932
6
  {
7
  private static $loader;
8
 
22
  return self::$loader;
23
  }
24
 
25
+ spl_autoload_register(array('ComposerAutoloaderInit5c91431b47976e7eff13ffd9e4a50932', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\AutoloadWPMediaImagifyWordPressPlugin\ClassLoader();
27
+ spl_autoload_unregister(array('ComposerAutoloaderInit5c91431b47976e7eff13ffd9e4a50932', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
+ call_user_func(\Composer\Autoload\ComposerStaticInit5c91431b47976e7eff13ffd9e4a50932::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
vendor/composer/autoload_static.php CHANGED
@@ -7,7 +7,7 @@ namespace Composer\Autoload;
7
  use Composer\AutoloadWPMediaImagifyWordPressPlugin\ClassLoader as ClassLoaderWPMediaImagifyWordPressPlugin;
8
 
9
 
10
- class ComposerStaticInit27c2f21fb0be1f8c2ef63f80977ab942
11
  {
12
  public static $prefixLengthsPsr4 = array (
13
  'I' =>
@@ -129,9 +129,9 @@ class ComposerStaticInit27c2f21fb0be1f8c2ef63f80977ab942
129
  public static function getInitializer(ClassLoaderWPMediaImagifyWordPressPlugin $loader)
130
  {
131
  return \Closure::bind(function () use ($loader) {
132
- $loader->prefixLengthsPsr4 = ComposerStaticInit27c2f21fb0be1f8c2ef63f80977ab942::$prefixLengthsPsr4;
133
- $loader->prefixDirsPsr4 = ComposerStaticInit27c2f21fb0be1f8c2ef63f80977ab942::$prefixDirsPsr4;
134
- $loader->classMap = ComposerStaticInit27c2f21fb0be1f8c2ef63f80977ab942::$classMap;
135
 
136
  }, null, ClassLoaderWPMediaImagifyWordPressPlugin::class);
137
  }
7
  use Composer\AutoloadWPMediaImagifyWordPressPlugin\ClassLoader as ClassLoaderWPMediaImagifyWordPressPlugin;
8
 
9
 
10
+ class ComposerStaticInit5c91431b47976e7eff13ffd9e4a50932
11
  {
12
  public static $prefixLengthsPsr4 = array (
13
  'I' =>
129
  public static function getInitializer(ClassLoaderWPMediaImagifyWordPressPlugin $loader)
130
  {
131
  return \Closure::bind(function () use ($loader) {
132
+ $loader->prefixLengthsPsr4 = ComposerStaticInit5c91431b47976e7eff13ffd9e4a50932::$prefixLengthsPsr4;
133
+ $loader->prefixDirsPsr4 = ComposerStaticInit5c91431b47976e7eff13ffd9e4a50932::$prefixDirsPsr4;
134
+ $loader->classMap = ComposerStaticInit5c91431b47976e7eff13ffd9e4a50932::$classMap;
135
 
136
  }, null, ClassLoaderWPMediaImagifyWordPressPlugin::class);
137
  }
vendor/composer/installed.json CHANGED
@@ -1,17 +1,17 @@
1
  [
2
  {
3
  "name": "composer/installers",
4
- "version": "v1.11.0",
5
- "version_normalized": "1.11.0.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/composer/installers.git",
9
- "reference": "ae03311f45dfe194412081526be2e003960df74b"
10
  },
11
  "dist": {
12
  "type": "zip",
13
- "url": "https://api.github.com/repos/composer/installers/zipball/ae03311f45dfe194412081526be2e003960df74b",
14
- "reference": "ae03311f45dfe194412081526be2e003960df74b",
15
  "shasum": ""
16
  },
17
  "require": {
@@ -29,7 +29,7 @@
29
  "symfony/phpunit-bridge": "^4.2 || ^5",
30
  "symfony/process": "^2.3"
31
  },
32
- "time": "2021-04-28T06:42:17+00:00",
33
  "type": "composer-plugin",
34
  "extra": {
35
  "class": "Composer\\Installers\\Plugin",
@@ -112,6 +112,7 @@
112
  "modx",
113
  "moodle",
114
  "osclass",
 
115
  "phpbb",
116
  "piwik",
117
  "ppi",
1
  [
2
  {
3
  "name": "composer/installers",
4
+ "version": "v1.12.0",
5
+ "version_normalized": "1.12.0.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/composer/installers.git",
9
+ "reference": "d20a64ed3c94748397ff5973488761b22f6d3f19"
10
  },
11
  "dist": {
12
  "type": "zip",
13
+ "url": "https://api.github.com/repos/composer/installers/zipball/d20a64ed3c94748397ff5973488761b22f6d3f19",
14
+ "reference": "d20a64ed3c94748397ff5973488761b22f6d3f19",
15
  "shasum": ""
16
  },
17
  "require": {
29
  "symfony/phpunit-bridge": "^4.2 || ^5",
30
  "symfony/process": "^2.3"
31
  },
32
+ "time": "2021-09-13T08:19:44+00:00",
33
  "type": "composer-plugin",
34
  "extra": {
35
  "class": "Composer\\Installers\\Plugin",
112
  "modx",
113
  "moodle",
114
  "osclass",
115
+ "pantheon",
116
  "phpbb",
117
  "piwik",
118
  "ppi",
vendor/composer/installers/.github/workflows/continuous-integration.yml CHANGED
@@ -44,6 +44,7 @@ jobs:
44
  with:
45
  coverage: "none"
46
  php-version: "${{ matrix.php-version }}"
 
47
 
48
  - name: Get composer cache directory
49
  id: composercache
@@ -60,6 +61,11 @@ jobs:
60
  if: "contains(matrix.dependencies, 'lowest')"
61
  run: "echo \"COMPOSER_FLAGS=$COMPOSER_FLAGS --prefer-lowest\" >> $GITHUB_ENV"
62
 
 
 
 
 
 
63
  - name: "Install latest dependencies"
64
  run: |
65
  # Remove PHPStan as it requires a newer PHP
44
  with:
45
  coverage: "none"
46
  php-version: "${{ matrix.php-version }}"
47
+ tools: composer:snapshot
48
 
49
  - name: Get composer cache directory
50
  id: composercache
61
  if: "contains(matrix.dependencies, 'lowest')"
62
  run: "echo \"COMPOSER_FLAGS=$COMPOSER_FLAGS --prefer-lowest\" >> $GITHUB_ENV"
63
 
64
+ - name: "Upgrade phpunit-bridge if needed for php 8 lowest build"
65
+ if: "contains(matrix.php-version, '8.')"
66
+ run: |
67
+ composer require symfony/phpunit-bridge:^5.3.3 --dev --no-update
68
+
69
  - name: "Install latest dependencies"
70
  run: |
71
  # Remove PHPStan as it requires a newer PHP
vendor/composer/installers/composer.json CHANGED
@@ -51,6 +51,7 @@
51
  "osclass",
52
  "MODULEWork",
53
  "Moodle",
 
54
  "Piwik",
55
  "pxcms",
56
  "phpBB",
51
  "osclass",
52
  "MODULEWork",
53
  "Moodle",
54
+ "Pantheon",
55
  "Piwik",
56
  "pxcms",
57
  "phpBB",
vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php CHANGED
@@ -47,6 +47,7 @@ class CakePHPInstaller extends BaseInstaller
47
  * @param string $matcher
48
  * @param string $version
49
  * @return bool
 
50
  */
51
  protected function matchesCakeVersion($matcher, $version)
52
  {
47
  * @param string $matcher
48
  * @param string $version
49
  * @return bool
50
+ * @phpstan-param Constraint::STR_OP_* $matcher
51
  */
52
  protected function matchesCakeVersion($matcher, $version)
53
  {
vendor/composer/installers/src/Composer/Installers/Installer.php CHANGED
@@ -91,6 +91,7 @@ class Installer extends LibraryInstaller
91
  'phifty' => 'PhiftyInstaller',
92
  'porto' => 'PortoInstaller',
93
  'processwire' => 'ProcessWireInstaller',
 
94
  'redaxo' => 'RedaxoInstaller',
95
  'redaxo5' => 'Redaxo5Installer',
96
  'reindex' => 'ReIndexInstaller',
91
  'phifty' => 'PhiftyInstaller',
92
  'porto' => 'PortoInstaller',
93
  'processwire' => 'ProcessWireInstaller',
94
+ 'quicksilver' => 'PantheonInstaller',
95
  'redaxo' => 'RedaxoInstaller',
96
  'redaxo5' => 'Redaxo5Installer',
97
  'reindex' => 'ReIndexInstaller',
vendor/composer/installers/src/Composer/Installers/PantheonInstaller.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ class PantheonInstaller extends BaseInstaller
6
+ {
7
+ /** @var array<string, string> */
8
+ protected $locations = array(
9
+ 'script' => 'web/private/scripts/quicksilver/{$name}',
10
+ 'module' => 'web/private/scripts/quicksilver/{$name}',
11
+ );
12
+ }
views/button/re-optimize.php CHANGED
@@ -18,9 +18,9 @@ if ( ! isset( $data['atts']['data-processing-label'] ) ) {
18
  }
19
 
20
  $level_labels = [
21
- __( 'Normal', 'imagify' ),
22
- __( 'Aggressive', 'imagify' ),
23
- __( 'Ultra', 'imagify' ),
24
  ];
25
  $level_label = $level_labels[ $data['optimization_level'] ];
26
 
@@ -33,7 +33,7 @@ $html_atts = $this->build_attributes( $data['atts'] );
33
  <?php
34
  printf(
35
  /* translators: %s is an optimization level. */
36
- esc_html__( 'Re-Optimize to %s', 'imagify' ),
37
  '</span>' . esc_html( $level_label ) . '<span class="imagify-hide-if-small">'
38
  );
39
  ?>
18
  }
19
 
20
  $level_labels = [
21
+ 0 => __( 'Lossless', 'imagify' ),
22
+ 1 => __( 'Smart', 'imagify' ),
23
+ 2 => __( 'Smart', 'imagify' ),
24
  ];
25
  $level_label = $level_labels[ $data['optimization_level'] ];
26
 
33
  <?php
34
  printf(
35
  /* translators: %s is an optimization level. */
36
+ esc_html__( 'Re-Optimize with %s compression', 'imagify' ),
37
  '</span>' . esc_html( $level_label ) . '<span class="imagify-hide-if-small">'
38
  );
39
  ?>
views/modal-payment.php CHANGED
@@ -281,13 +281,13 @@ defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
281
  </span>
282
  </span>
283
 
284
- <span class="imagify-recommend" aria-hidden="true"><?php esc_html_e( 'we recommend for you', 'imagify' ); ?></span>
285
 
286
  <p class="imagify-price-complement">
287
  <?php
288
  printf(
289
  /* translators: %s is a formatted price. */
290
- __( '%s per<br>additionnal Gb', 'imagify' ),
291
  '<span class="imagify-price-add-data"></span>'
292
  );
293
  ?>
@@ -342,7 +342,7 @@ defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
342
  <span class="imagify-dollars">$</span>
343
  <span class="imagify-number-block"></span>
344
  </span>
345
- <span class="imagify-recommend"><?php esc_html_e( 'we recommend for you', 'imagify' ); ?></span>
346
  </div><!-- .imagify-col-price -->
347
 
348
  <div class="imagify-col-other-actions">
281
  </span>
282
  </span>
283
 
284
+ <span class="imagify-recommend" aria-hidden="true"><?php esc_html_e( 'We recommend for you', 'imagify' ); ?></span>
285
 
286
  <p class="imagify-price-complement">
287
  <?php
288
  printf(
289
  /* translators: %s is a formatted price. */
290
+ __( '%s per<br>additional Gb', 'imagify' ),
291
  '<span class="imagify-price-add-data"></span>'
292
  );
293
  ?>
342
  <span class="imagify-dollars">$</span>
343
  <span class="imagify-number-block"></span>
344
  </span>
345
+ <span class="imagify-recommend"><?php esc_html_e( 'We recommend for you', 'imagify' ); ?></span>
346
  </div><!-- .imagify-col-price -->
347
 
348
  <div class="imagify-col-other-actions">
views/page-settings.php CHANGED
@@ -8,11 +8,12 @@ $hidden_class = Imagify_Requirements::is_api_key_valid() ? '' : ' hidden';
8
  $lang = imagify_get_current_lang_in( array( 'de', 'es', 'fr', 'it' ) );
9
 
10
  /* Ads notice */
 
11
  $notice = 'wp-rocket';
12
  $user_id = get_current_user_id();
13
  $notices = get_user_meta( $user_id, '_imagify_ignore_ads', true );
14
  $notices = $notices && is_array( $notices ) ? array_flip( $notices ) : array();
15
- $wrapper_class = isset( $notices[ $notice ] ) || defined( 'WP_ROCKET_VERSION' ) ? 'imagify-have-rocket' : 'imagify-dont-have-rocket';
16
  ?>
17
  <div class="wrap imagify-settings <?php echo $wrapper_class; ?> imagify-clearfix">
18
 
@@ -40,45 +41,6 @@ $wrapper_class = isset( $notices[ $notice ] ) || defined( 'WP_ROCKET_VERSION' )
40
 
41
  <h2 class="imagify-options-title"><?php _e( 'General Settings', 'imagify' ); ?></h2>
42
 
43
- <p class="imagify-options-subtitle" id="imagify-optimization-level-label">
44
- <?php _e( 'Optimization Level', 'imagify' ); ?>
45
-
46
- <span class="imagify-info">
47
- <span class="dashicons dashicons-info"></span>
48
- <a href="#imagify-more-info" class="imagify-modal-trigger"><?php _e( 'More info?', 'imagify' ); ?></a>
49
- </span>
50
- </p>
51
-
52
- <div class="imagify-setting-optim-level">
53
- <p class="imagify-inline-options">
54
- <input type="radio" id="imagify-optimization_level_normal" name="<?php echo $option_name; ?>[optimization_level]" value="0" <?php checked( $options->get( 'optimization_level' ), 0 ); ?> aria-describedby="imagify-optimization-level-label">
55
- <label for="imagify-optimization_level_normal">
56
- <?php _e( 'Normal', 'imagify' ); ?>
57
- </label>
58
-
59
- <input type="radio" id="imagify-optimization_level_aggro" name="<?php echo $option_name; ?>[optimization_level]" value="1" <?php checked( $options->get( 'optimization_level' ), 1 ); ?> aria-describedby="imagify-optimization-level-label">
60
- <label for="imagify-optimization_level_aggro">
61
- <?php _e( 'Aggressive', 'imagify' ); ?>
62
- </label>
63
-
64
- <input type="radio" id="imagify-optimization_level_ultra" name="<?php echo $option_name; ?>[optimization_level]" value="2" <?php checked( $options->get( 'optimization_level' ), 2 ); ?> aria-describedby="imagify-optimization-level-label">
65
- <label for="imagify-optimization_level_ultra">
66
- <?php _e( 'Ultra', 'imagify' ); ?>
67
- </label>
68
- </p>
69
-
70
- <p class="imagify-visual-comparison-text">
71
- <?php
72
- printf(
73
- /* translators: 1 is a button tag start, 2 is the button tag end. */
74
- __( 'Need help to choose? %1$sTry the Visual Comparison%2$s', 'imagify' ),
75
- '<button type="button" class="button button-primary button-mini-flat imagify-visual-comparison-btn imagify-modal-trigger" data-target="#imagify-visual-comparison">',
76
- '</button>'
77
- );
78
- ?>
79
- </p>
80
- </div>
81
-
82
  <p class="imagify-setting-line">
83
  <?php
84
  $settings->field_checkbox( array(
@@ -107,20 +69,6 @@ $wrapper_class = isset( $notices[ $notice ] ) || defined( 'WP_ROCKET_VERSION' )
107
  ?>
108
  </strong>
109
  </p>
110
-
111
- <p class="imagify-setting-line">
112
- <?php
113
- $info = __( 'EXIF data is information stored in your pictures like shutter speed, exposure compensation, ISO, etc...', 'imagify' );
114
- $info .= ' <a href="' . esc_url( imagify_get_external_url( 'exif' ) ) . '" target="_blank">' . __( 'Learn more', 'imagify' ) . '</a><br/><br/>';
115
- $info .= __( 'If you are a photographer, you may be interested in this option if you are displaying info like the model of your camera on your pages. Also, keeping EXIF data can fix some colorimetric problems.', 'imagify' );
116
-
117
- $settings->field_checkbox( array(
118
- 'option_name' => 'exif',
119
- 'label' => __( 'Keep all EXIF data from your images', 'imagify' ),
120
- 'info' => $info,
121
- ) );
122
- ?>
123
- </p>
124
  </div>
125
  </div>
126
 
8
  $lang = imagify_get_current_lang_in( array( 'de', 'es', 'fr', 'it' ) );
9
 
10
  /* Ads notice */
11
+ $plugins = get_plugins();
12
  $notice = 'wp-rocket';
13
  $user_id = get_current_user_id();
14
  $notices = get_user_meta( $user_id, '_imagify_ignore_ads', true );
15
  $notices = $notices && is_array( $notices ) ? array_flip( $notices ) : array();
16
+ $wrapper_class = isset( $notices[ $notice ] ) || isset( $plugins['wp-rocket/wp-rocket.php'] ) ? 'imagify-have-rocket' : 'imagify-dont-have-rocket';
17
  ?>
18
  <div class="wrap imagify-settings <?php echo $wrapper_class; ?> imagify-clearfix">
19
 
41
 
42
  <h2 class="imagify-options-title"><?php _e( 'General Settings', 'imagify' ); ?></h2>
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  <p class="imagify-setting-line">
45
  <?php
46
  $settings->field_checkbox( array(
69
  ?>
70
  </strong>
71
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  </div>
73
  </div>
74
 
views/part-bulk-optimization-overquota-alert.php CHANGED
@@ -16,6 +16,6 @@ $overquota_url = imagify_get_external_url( 'subscription', array(
16
  <div class="imagify-swal-buttonswrapper">
17
  <a href="<?php echo esc_url( $overquota_url ); ?>" target="_blank" class="imagify-button imagify-button-primary button">
18
  <svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill="#000" fill-rule="nonzero" transform="translate(1 1)" stroke="#fff"><polygon points="8.75 0 8.75 0.7 12.8065 0.7 5.0015 8.5015 5.4985 8.9985 13.3 1.1935 13.3 5.25 14 5.25 14 0"/><polygon points="11.9 13.3 0.7 13.3 0.7 2.1 6.3 2.1 6.3 1.4 0 1.4 0 14 12.6 14 12.6 7.7 11.9 7.7"/></g></svg>
19
- <?php esc_html_e( 'See our plans on the Imagify’s website', 'imagify' ); ?>
20
  </a>
21
  </div>
16
  <div class="imagify-swal-buttonswrapper">
17
  <a href="<?php echo esc_url( $overquota_url ); ?>" target="_blank" class="imagify-button imagify-button-primary button">
18
  <svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill="#000" fill-rule="nonzero" transform="translate(1 1)" stroke="#fff"><polygon points="8.75 0 8.75 0.7 12.8065 0.7 5.0015 8.5015 5.4985 8.9985 13.3 1.1935 13.3 5.25 14 5.25 14 0"/><polygon points="11.9 13.3 0.7 13.3 0.7 2.1 6.3 2.1 6.3 1.4 0 1.4 0 14 12.6 14 12.6 7.7 11.9 7.7"/></g></svg>
19
+ <?php esc_html_e( 'See our plans on the Imagify website', 'imagify' ); ?>
20
  </a>
21
  </div>
views/part-bulk-optimization-table-row-folder-type.php CHANGED
@@ -1,7 +1,5 @@
1
  <?php
2
  defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
3
-
4
- $default_level = Imagify_Options::get_instance()->get( 'optimization_level' );
5
  ?>
6
  <tr class="imagify-row-folder-type" data-group-id="<?php echo $data['group_id']; ?>" data-context="<?php echo $data['context']; ?>">
7
  <td class="imagify-cell-checkbox">
@@ -27,20 +25,6 @@ $default_level = Imagify_Options::get_instance()->get( 'optimization_level' );
27
  <td class="imagify-cell-original-size-size">
28
  <?php echo $data['original-size']; ?>
29
  </td>
30
- <td class="imagify-cell-level">
31
- <?php
32
- $this->print_template( 'input/selector', [
33
- 'current_label' => __( 'Current level:', 'imagify' ),
34
- 'name' => 'level[' . $data['group_id'] . ']',
35
- 'value' => $default_level,
36
- 'values' => [
37
- 0 => imagify_get_optimization_level_label( 0, '%ICON% %s' ),
38
- 1 => imagify_get_optimization_level_label( 1, '%ICON% %s' ),
39
- 2 => imagify_get_optimization_level_label( 2, '%ICON% %s' ),
40
- ],
41
- ] );
42
- ?>
43
- </td>
44
  </tr>
45
 
46
  <tr>
1
  <?php
2
  defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
 
 
3
  ?>
4
  <tr class="imagify-row-folder-type" data-group-id="<?php echo $data['group_id']; ?>" data-context="<?php echo $data['context']; ?>">
5
  <td class="imagify-cell-checkbox">
25
  <td class="imagify-cell-original-size-size">
26
  <?php echo $data['original-size']; ?>
27
  </td>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  </tr>
29
 
30
  <tr>
views/part-bulk-optimization-table.php CHANGED
@@ -45,7 +45,6 @@ defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
45
  <th class="imagify-cell-count-errors"><?php esc_html_e( 'Errors', 'imagify' ); ?></th>
46
  <th class="imagify-cell-optimized-size-size"><?php esc_html_e( 'Optimized Size', 'imagify' ); ?></th>
47
  <th class="imagify-cell-original-size-size"><?php esc_html_e( 'Original Size', 'imagify' ); ?></th>
48
- <th class="imagify-cell-level"><?php esc_html_e( 'Level Selection', 'imagify' ); ?></th>
49
  </tr>
50
  </thead>
51
  <tbody>
45
  <th class="imagify-cell-count-errors"><?php esc_html_e( 'Errors', 'imagify' ); ?></th>
46
  <th class="imagify-cell-optimized-size-size"><?php esc_html_e( 'Optimized Size', 'imagify' ); ?></th>
47
  <th class="imagify-cell-original-size-size"><?php esc_html_e( 'Original Size', 'imagify' ); ?></th>
 
48
  </tr>
49
  </thead>
50
  <tbody>
views/part-rocket-ad.php CHANGED
@@ -1,7 +1,9 @@
1
  <?php
2
  defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
3
 
4
- if ( defined( 'WP_ROCKET_VERSION' ) ) {
 
 
5
  return '';
6
  }
7
 
@@ -28,8 +30,8 @@ $dismiss_url = wp_nonce_url( admin_url( 'admin-post.php?action=imagify_dism
28
 
29
  <p class="imagify-sidebar-description">
30
  <?php
31
- /* translators: 1 is a "bold" tag opening, 2 is the "bold" tag closing. Please use a non-breaking space for WP Rocket. */
32
- printf( __( 'WP Rocket is a %1$sspeed optimization plugin for WordPress%2$s helping you to implement a variety of speed-boosting features to your WordPress site.', 'imagify' ), '<strong>', '</strong>' );
33
  ?>
34
  </p>
35
 
1
  <?php
2
  defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
3
 
4
+ $plugins = get_plugins();
5
+
6
+ if ( isset( $plugins['wp-rocket/wp-rocket.php'] ) ) {
7
  return '';
8
  }
9
 
30
 
31
  <p class="imagify-sidebar-description">
32
  <?php
33
+ /* translators: 1 is a "bold" tag opening, 2 is the "bold" tag closing. Please use a non-breaking space for WP Rocket. */
34
+ printf( __( 'WP Rocket is a %1$sspeed optimization plugin for WordPress%2$s helping you to implement a variety of speed-boosting features to your WordPress site.', 'imagify' ), '<strong>', '</strong>' );
35
  ?>
36
  </p>
37