Version Description
Download this release
Release Info
Developer | leap13 |
Plugin | Premium Addons for Elementor |
Version | 1.0 |
Comparing to | |
See all releases |
Version 1.0
- admin/activation/class-tgm-plugin-activation.php +3853 -0
- admin/activation/elementor-activation.php +93 -0
- admin/assets/admin.css +130 -0
- admin/assets/admin.js +45 -0
- admin/assets/js/sweetalert2/css/sweetalert2.min.css +1 -0
- admin/assets/js/sweetalert2/js/core.js +7613 -0
- admin/assets/js/sweetalert2/js/sweetalert2.min.js +1 -0
- admin/assets/pa-elements-font/css/pa-elements.css +77 -0
- admin/assets/pa-elements-font/fonts/pa-elements.eot +0 -0
- admin/assets/pa-elements-font/fonts/pa-elements.svg +27 -0
- admin/assets/pa-elements-font/fonts/pa-elements.ttf +0 -0
- admin/assets/pa-elements-font/fonts/pa-elements.woff +0 -0
- admin/settings-page.php +266 -0
- assets/css/ajax-loader.gif +0 -0
- assets/css/animate.css +1579 -0
- assets/css/elementor-preview-style.css +11 -0
- assets/css/fonts/slick.eot +0 -0
- assets/css/fonts/slick.svg +14 -0
- assets/css/fonts/slick.ttf +0 -0
- assets/css/fonts/slick.woff +0 -0
- assets/css/premium-addons.css +1497 -0
- assets/css/slick-theme.css +204 -0
- assets/css/slick.css +117 -0
- assets/js/lib/Vticker.js +10 -0
- assets/js/lib/countUpmin.js +1 -0
- assets/js/lib/gomap.js +11 -0
- assets/js/lib/jquerycountdown.js +816 -0
- assets/js/lib/slickmin.js +18 -0
- assets/js/lib/typedmin.js +3 -0
- assets/js/premium-addons.js +25 -0
- elementor-helper.php +84 -0
- index.php +9 -0
- premium-addons.php +219 -0
- queries.php +60 -0
- readme.txt +68 -0
- widgets/premium-banner.php +448 -0
- widgets/premium-blog.php +500 -0
- widgets/premium-carousel.php +1055 -0
- widgets/premium-countdown.php +615 -0
- widgets/premium-counter.php +639 -0
- widgets/premium-dual-header.php +392 -0
- widgets/premium-fancytext.php +424 -0
- widgets/premium-imageseparator.php +137 -0
- widgets/premium-maps.php +350 -0
- widgets/premium-modalbox.php +702 -0
- widgets/premium-person.php +477 -0
- widgets/premium-progressbar.php +261 -0
- widgets/premium-testimonials.php +619 -0
- widgets/premium-title.php +494 -0
- widgets/premium-videobox.php +353 -0
admin/activation/class-tgm-plugin-activation.php
ADDED
@@ -0,0 +1,3853 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Plugin installation and activation for WordPress themes.
|
4 |
+
*
|
5 |
+
* Please note that this is a drop-in library for a theme or plugin.
|
6 |
+
* The authors of this library (Thomas, Gary and Juliette) are NOT responsible
|
7 |
+
* for the support of your plugin or theme. Please contact the plugin
|
8 |
+
* or theme author for support.
|
9 |
+
*
|
10 |
+
* @package TGM-Plugin-Activation
|
11 |
+
* @version 2.6.0
|
12 |
+
* @link http://tgmpluginactivation.com/
|
13 |
+
* @author Thomas Griffin, Gary Jones, Juliette Reinders Folmer
|
14 |
+
* @copyright Copyright (c) 2011, Thomas Griffin
|
15 |
+
* @license GPL-2.0+
|
16 |
+
*/
|
17 |
+
|
18 |
+
/*
|
19 |
+
Copyright 2011 Thomas Griffin (thomasgriffinmedia.com)
|
20 |
+
|
21 |
+
This program is free software; you can redistribute it and/or modify
|
22 |
+
it under the terms of the GNU General Public License, version 2, as
|
23 |
+
published by the Free Software Foundation.
|
24 |
+
|
25 |
+
This program is distributed in the hope that it will be useful,
|
26 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
27 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
28 |
+
GNU General Public License for more details.
|
29 |
+
|
30 |
+
You should have received a copy of the GNU General Public License
|
31 |
+
along with this program; if not, write to the Free Software
|
32 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
33 |
+
*/
|
34 |
+
|
35 |
+
if ( ! class_exists( 'TGM_Plugin_Activation' ) ) {
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Automatic plugin installation and activation library.
|
39 |
+
*
|
40 |
+
* Creates a way to automatically install and activate plugins from within themes.
|
41 |
+
* The plugins can be either bundled, downloaded from the WordPress
|
42 |
+
* Plugin Repository or downloaded from another external source.
|
43 |
+
*
|
44 |
+
* @since 1.0.0
|
45 |
+
*
|
46 |
+
* @package TGM-Plugin-Activation
|
47 |
+
* @author Thomas Griffin
|
48 |
+
* @author Gary Jones
|
49 |
+
*/
|
50 |
+
class TGM_Plugin_Activation {
|
51 |
+
/**
|
52 |
+
* TGMPA version number.
|
53 |
+
*
|
54 |
+
* @since 2.5.0
|
55 |
+
*
|
56 |
+
* @const string Version number.
|
57 |
+
*/
|
58 |
+
const TGMPA_VERSION = '2.6.0';
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Regular expression to test if a URL is a WP plugin repo URL.
|
62 |
+
*
|
63 |
+
* @const string Regex.
|
64 |
+
*
|
65 |
+
* @since 2.5.0
|
66 |
+
*/
|
67 |
+
const WP_REPO_REGEX = '|^http[s]?://wordpress\.org/(?:extend/)?plugins/|';
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Arbitrary regular expression to test if a string starts with a URL.
|
71 |
+
*
|
72 |
+
* @const string Regex.
|
73 |
+
*
|
74 |
+
* @since 2.5.0
|
75 |
+
*/
|
76 |
+
const IS_URL_REGEX = '|^http[s]?://|';
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Holds a copy of itself, so it can be referenced by the class name.
|
80 |
+
*
|
81 |
+
* @since 1.0.0
|
82 |
+
*
|
83 |
+
* @var TGM_Plugin_Activation
|
84 |
+
*/
|
85 |
+
public static $instance;
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Holds arrays of plugin details.
|
89 |
+
*
|
90 |
+
* @since 1.0.0
|
91 |
+
* @since 2.5.0 the array has the plugin slug as an associative key.
|
92 |
+
*
|
93 |
+
* @var array
|
94 |
+
*/
|
95 |
+
public $plugins = array();
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Holds arrays of plugin names to use to sort the plugins array.
|
99 |
+
*
|
100 |
+
* @since 2.5.0
|
101 |
+
*
|
102 |
+
* @var array
|
103 |
+
*/
|
104 |
+
protected $sort_order = array();
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Whether any plugins have the 'force_activation' setting set to true.
|
108 |
+
*
|
109 |
+
* @since 2.5.0
|
110 |
+
*
|
111 |
+
* @var bool
|
112 |
+
*/
|
113 |
+
protected $has_forced_activation = false;
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Whether any plugins have the 'force_deactivation' setting set to true.
|
117 |
+
*
|
118 |
+
* @since 2.5.0
|
119 |
+
*
|
120 |
+
* @var bool
|
121 |
+
*/
|
122 |
+
protected $has_forced_deactivation = false;
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Name of the unique ID to hash notices.
|
126 |
+
*
|
127 |
+
* @since 2.4.0
|
128 |
+
*
|
129 |
+
* @var string
|
130 |
+
*/
|
131 |
+
public $id = 'tgmpa';
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Name of the query-string argument for the admin page.
|
135 |
+
*
|
136 |
+
* @since 1.0.0
|
137 |
+
*
|
138 |
+
* @var string
|
139 |
+
*/
|
140 |
+
protected $menu = 'tgmpa-install-plugins';
|
141 |
+
|
142 |
+
/**
|
143 |
+
* Parent menu file slug.
|
144 |
+
*
|
145 |
+
* @since 2.5.0
|
146 |
+
*
|
147 |
+
* @var string
|
148 |
+
*/
|
149 |
+
public $parent_slug = 'themes.php';
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Capability needed to view the plugin installation menu item.
|
153 |
+
*
|
154 |
+
* @since 2.5.0
|
155 |
+
*
|
156 |
+
* @var string
|
157 |
+
*/
|
158 |
+
public $capability = 'edit_theme_options';
|
159 |
+
|
160 |
+
/**
|
161 |
+
* Default absolute path to folder containing bundled plugin zip files.
|
162 |
+
*
|
163 |
+
* @since 2.0.0
|
164 |
+
*
|
165 |
+
* @var string Absolute path prefix to zip file location for bundled plugins. Default is empty string.
|
166 |
+
*/
|
167 |
+
public $default_path = '';
|
168 |
+
|
169 |
+
/**
|
170 |
+
* Flag to show admin notices or not.
|
171 |
+
*
|
172 |
+
* @since 2.1.0
|
173 |
+
*
|
174 |
+
* @var boolean
|
175 |
+
*/
|
176 |
+
public $has_notices = true;
|
177 |
+
|
178 |
+
/**
|
179 |
+
* Flag to determine if the user can dismiss the notice nag.
|
180 |
+
*
|
181 |
+
* @since 2.4.0
|
182 |
+
*
|
183 |
+
* @var boolean
|
184 |
+
*/
|
185 |
+
public $dismissable = true;
|
186 |
+
|
187 |
+
/**
|
188 |
+
* Message to be output above nag notice if dismissable is false.
|
189 |
+
*
|
190 |
+
* @since 2.4.0
|
191 |
+
*
|
192 |
+
* @var string
|
193 |
+
*/
|
194 |
+
public $dismiss_msg = '';
|
195 |
+
|
196 |
+
/**
|
197 |
+
* Flag to set automatic activation of plugins. Off by default.
|
198 |
+
*
|
199 |
+
* @since 2.2.0
|
200 |
+
*
|
201 |
+
* @var boolean
|
202 |
+
*/
|
203 |
+
public $is_automatic = false;
|
204 |
+
|
205 |
+
/**
|
206 |
+
* Optional message to display before the plugins table.
|
207 |
+
*
|
208 |
+
* @since 2.2.0
|
209 |
+
*
|
210 |
+
* @var string Message filtered by wp_kses_post(). Default is empty string.
|
211 |
+
*/
|
212 |
+
public $message = '';
|
213 |
+
|
214 |
+
/**
|
215 |
+
* Holds configurable array of strings.
|
216 |
+
*
|
217 |
+
* Default values are added in the constructor.
|
218 |
+
*
|
219 |
+
* @since 2.0.0
|
220 |
+
*
|
221 |
+
* @var array
|
222 |
+
*/
|
223 |
+
public $strings = array();
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Holds the version of WordPress.
|
227 |
+
*
|
228 |
+
* @since 2.4.0
|
229 |
+
*
|
230 |
+
* @var int
|
231 |
+
*/
|
232 |
+
public $wp_version;
|
233 |
+
|
234 |
+
/**
|
235 |
+
* Holds the hook name for the admin page.
|
236 |
+
*
|
237 |
+
* @since 2.5.0
|
238 |
+
*
|
239 |
+
* @var string
|
240 |
+
*/
|
241 |
+
public $page_hook;
|
242 |
+
|
243 |
+
/**
|
244 |
+
* Adds a reference of this object to $instance, populates default strings,
|
245 |
+
* does the tgmpa_init action hook, and hooks in the interactions to init.
|
246 |
+
*
|
247 |
+
* {@internal This method should be `protected`, but as too many TGMPA implementations
|
248 |
+
* haven't upgraded beyond v2.3.6 yet, this gives backward compatibility issues.
|
249 |
+
* Reverted back to public for the time being.}}
|
250 |
+
*
|
251 |
+
* @since 1.0.0
|
252 |
+
*
|
253 |
+
* @see TGM_Plugin_Activation::init()
|
254 |
+
*/
|
255 |
+
public function __construct() {
|
256 |
+
// Set the current WordPress version.
|
257 |
+
$this->wp_version = $GLOBALS['wp_version'];
|
258 |
+
|
259 |
+
// Announce that the class is ready, and pass the object (for advanced use).
|
260 |
+
do_action_ref_array( 'tgmpa_init', array( $this ) );
|
261 |
+
|
262 |
+
/*
|
263 |
+
* Load our text domain and allow for overloading the fall-back file.
|
264 |
+
*
|
265 |
+
* {@internal IMPORTANT! If this code changes, review the regex in the custom TGMPA
|
266 |
+
* generator on the website.}}
|
267 |
+
*/
|
268 |
+
add_action( 'init', array( $this, 'load_textdomain' ), 5 );
|
269 |
+
add_filter( 'load_textdomain_mofile', array( $this, 'overload_textdomain_mofile' ), 10, 2 );
|
270 |
+
|
271 |
+
// When the rest of WP has loaded, kick-start the rest of the class.
|
272 |
+
add_action( 'init', array( $this, 'init' ) );
|
273 |
+
}
|
274 |
+
|
275 |
+
/**
|
276 |
+
* Magic method to (not) set protected properties from outside of this class.
|
277 |
+
*
|
278 |
+
* {@internal hackedihack... There is a serious bug in v2.3.2 - 2.3.6 where the `menu` property
|
279 |
+
* is being assigned rather than tested in a conditional, effectively rendering it useless.
|
280 |
+
* This 'hack' prevents this from happening.}}
|
281 |
+
*
|
282 |
+
* @see https://github.com/TGMPA/TGM-Plugin-Activation/blob/2.3.6/tgm-plugin-activation/class-tgm-plugin-activation.php#L1593
|
283 |
+
*
|
284 |
+
* @since 2.5.2
|
285 |
+
*
|
286 |
+
* @param string $name Name of an inaccessible property.
|
287 |
+
* @param mixed $value Value to assign to the property.
|
288 |
+
* @return void Silently fail to set the property when this is tried from outside of this class context.
|
289 |
+
* (Inside this class context, the __set() method if not used as there is direct access.)
|
290 |
+
*/
|
291 |
+
public function __set( $name, $value ) {
|
292 |
+
return;
|
293 |
+
}
|
294 |
+
|
295 |
+
/**
|
296 |
+
* Magic method to get the value of a protected property outside of this class context.
|
297 |
+
*
|
298 |
+
* @since 2.5.2
|
299 |
+
*
|
300 |
+
* @param string $name Name of an inaccessible property.
|
301 |
+
* @return mixed The property value.
|
302 |
+
*/
|
303 |
+
public function __get( $name ) {
|
304 |
+
return $this->{$name};
|
305 |
+
}
|
306 |
+
|
307 |
+
/**
|
308 |
+
* Initialise the interactions between this class and WordPress.
|
309 |
+
*
|
310 |
+
* Hooks in three new methods for the class: admin_menu, notices and styles.
|
311 |
+
*
|
312 |
+
* @since 2.0.0
|
313 |
+
*
|
314 |
+
* @see TGM_Plugin_Activation::admin_menu()
|
315 |
+
* @see TGM_Plugin_Activation::notices()
|
316 |
+
* @see TGM_Plugin_Activation::styles()
|
317 |
+
*/
|
318 |
+
public function init() {
|
319 |
+
/**
|
320 |
+
* By default TGMPA only loads on the WP back-end and not in an Ajax call. Using this filter
|
321 |
+
* you can overrule that behaviour.
|
322 |
+
*
|
323 |
+
* @since 2.5.0
|
324 |
+
*
|
325 |
+
* @param bool $load Whether or not TGMPA should load.
|
326 |
+
* Defaults to the return of `is_admin() && ! defined( 'DOING_AJAX' )`.
|
327 |
+
*/
|
328 |
+
if ( true !== apply_filters( 'tgmpa_load', ( is_admin() && ! defined( 'DOING_AJAX' ) ) ) ) {
|
329 |
+
return;
|
330 |
+
}
|
331 |
+
|
332 |
+
// Load class strings.
|
333 |
+
$this->strings = array(
|
334 |
+
'page_title' => __( 'Install Required Plugins', 'tgmpa' ),
|
335 |
+
'menu_title' => __( 'Install Plugins', 'tgmpa' ),
|
336 |
+
/* translators: %s: plugin name. */
|
337 |
+
'installing' => __( 'Installing Plugin: %s', 'tgmpa' ),
|
338 |
+
/* translators: %s: plugin name. */
|
339 |
+
'updating' => __( 'Updating Plugin: %s', 'tgmpa' ),
|
340 |
+
'oops' => __( 'Something went wrong with the plugin API.', 'tgmpa' ),
|
341 |
+
'notice_can_install_required' => _n_noop(
|
342 |
+
/* translators: 1: plugin name(s). */
|
343 |
+
'This theme requires the following plugin: %1$s.',
|
344 |
+
'This theme requires the following plugins: %1$s.',
|
345 |
+
'tgmpa'
|
346 |
+
),
|
347 |
+
'notice_can_install_recommended' => _n_noop(
|
348 |
+
/* translators: 1: plugin name(s). */
|
349 |
+
'This theme recommends the following plugin: %1$s.',
|
350 |
+
'This theme recommends the following plugins: %1$s.',
|
351 |
+
'tgmpa'
|
352 |
+
),
|
353 |
+
'notice_ask_to_update' => _n_noop(
|
354 |
+
/* translators: 1: plugin name(s). */
|
355 |
+
'The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.',
|
356 |
+
'The following plugins need to be updated to their latest version to ensure maximum compatibility with this theme: %1$s.',
|
357 |
+
'tgmpa'
|
358 |
+
),
|
359 |
+
'notice_ask_to_update_maybe' => _n_noop(
|
360 |
+
/* translators: 1: plugin name(s). */
|
361 |
+
'There is an update available for: %1$s.',
|
362 |
+
'There are updates available for the following plugins: %1$s.',
|
363 |
+
'tgmpa'
|
364 |
+
),
|
365 |
+
'notice_can_activate_required' => _n_noop(
|
366 |
+
/* translators: 1: plugin name(s). */
|
367 |
+
'The following required plugin is currently inactive: %1$s.',
|
368 |
+
'The following required plugins are currently inactive: %1$s.',
|
369 |
+
'tgmpa'
|
370 |
+
),
|
371 |
+
'notice_can_activate_recommended' => _n_noop(
|
372 |
+
/* translators: 1: plugin name(s). */
|
373 |
+
'The following recommended plugin is currently inactive: %1$s.',
|
374 |
+
'The following recommended plugins are currently inactive: %1$s.',
|
375 |
+
'tgmpa'
|
376 |
+
),
|
377 |
+
'install_link' => _n_noop(
|
378 |
+
'Begin installing plugin',
|
379 |
+
'Begin installing plugins',
|
380 |
+
'tgmpa'
|
381 |
+
),
|
382 |
+
'update_link' => _n_noop(
|
383 |
+
'Begin updating plugin',
|
384 |
+
'Begin updating plugins',
|
385 |
+
'tgmpa'
|
386 |
+
),
|
387 |
+
'activate_link' => _n_noop(
|
388 |
+
'Begin activating plugin',
|
389 |
+
'Begin activating plugins',
|
390 |
+
'tgmpa'
|
391 |
+
),
|
392 |
+
'return' => __( 'Return to Required Plugins Installer', 'tgmpa' ),
|
393 |
+
'dashboard' => __( 'Return to the Dashboard', 'tgmpa' ),
|
394 |
+
'plugin_activated' => __( 'Plugin activated successfully.', 'tgmpa' ),
|
395 |
+
'activated_successfully' => __( 'The following plugin was activated successfully:', 'tgmpa' ),
|
396 |
+
/* translators: 1: plugin name. */
|
397 |
+
'plugin_already_active' => __( 'No action taken. Plugin %1$s was already active.', 'tgmpa' ),
|
398 |
+
/* translators: 1: plugin name. */
|
399 |
+
'plugin_needs_higher_version' => __( 'Plugin not activated. A higher version of %s is needed for this theme. Please update the plugin.', 'tgmpa' ),
|
400 |
+
/* translators: 1: dashboard link. */
|
401 |
+
'complete' => __( 'All plugins installed and activated successfully. %1$s', 'tgmpa' ),
|
402 |
+
'dismiss' => __( 'Dismiss this notice', 'tgmpa' ),
|
403 |
+
'notice_cannot_install_activate' => __( 'There are one or more required or recommended plugins to install, update or activate.', 'tgmpa' ),
|
404 |
+
'contact_admin' => __( 'Please contact the administrator of this site for help.', 'tgmpa' ),
|
405 |
+
);
|
406 |
+
|
407 |
+
do_action( 'tgmpa_register' );
|
408 |
+
|
409 |
+
/* After this point, the plugins should be registered and the configuration set. */
|
410 |
+
|
411 |
+
// Proceed only if we have plugins to handle.
|
412 |
+
if ( empty( $this->plugins ) || ! is_array( $this->plugins ) ) {
|
413 |
+
return;
|
414 |
+
}
|
415 |
+
|
416 |
+
// Set up the menu and notices if we still have outstanding actions.
|
417 |
+
if ( true !== $this->is_tgmpa_complete() ) {
|
418 |
+
// Sort the plugins.
|
419 |
+
array_multisort( $this->sort_order, SORT_ASC, $this->plugins );
|
420 |
+
|
421 |
+
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
|
422 |
+
add_action( 'admin_head', array( $this, 'dismiss' ) );
|
423 |
+
|
424 |
+
// Prevent the normal links from showing underneath a single install/update page.
|
425 |
+
add_filter( 'install_plugin_complete_actions', array( $this, 'actions' ) );
|
426 |
+
add_filter( 'update_plugin_complete_actions', array( $this, 'actions' ) );
|
427 |
+
|
428 |
+
if ( $this->has_notices ) {
|
429 |
+
add_action( 'admin_notices', array( $this, 'notices' ) );
|
430 |
+
add_action( 'admin_init', array( $this, 'admin_init' ), 1 );
|
431 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'thickbox' ) );
|
432 |
+
}
|
433 |
+
}
|
434 |
+
|
435 |
+
// If needed, filter plugin action links.
|
436 |
+
add_action( 'load-plugins.php', array( $this, 'add_plugin_action_link_filters' ), 1 );
|
437 |
+
|
438 |
+
// Make sure things get reset on switch theme.
|
439 |
+
add_action( 'switch_theme', array( $this, 'flush_plugins_cache' ) );
|
440 |
+
|
441 |
+
if ( $this->has_notices ) {
|
442 |
+
add_action( 'switch_theme', array( $this, 'update_dismiss' ) );
|
443 |
+
}
|
444 |
+
|
445 |
+
// Setup the force activation hook.
|
446 |
+
if ( true === $this->has_forced_activation ) {
|
447 |
+
add_action( 'admin_init', array( $this, 'force_activation' ) );
|
448 |
+
}
|
449 |
+
|
450 |
+
// Setup the force deactivation hook.
|
451 |
+
if ( true === $this->has_forced_deactivation ) {
|
452 |
+
add_action( 'switch_theme', array( $this, 'force_deactivation' ) );
|
453 |
+
}
|
454 |
+
}
|
455 |
+
|
456 |
+
/**
|
457 |
+
* Load translations.
|
458 |
+
*
|
459 |
+
* @since 2.6.0
|
460 |
+
*
|
461 |
+
* (@internal Uses `load_theme_textdomain()` rather than `load_plugin_textdomain()` to
|
462 |
+
* get round the different ways of handling the path and deprecated notices being thrown
|
463 |
+
* and such. For plugins, the actual file name will be corrected by a filter.}}
|
464 |
+
*
|
465 |
+
* {@internal IMPORTANT! If this function changes, review the regex in the custom TGMPA
|
466 |
+
* generator on the website.}}
|
467 |
+
*/
|
468 |
+
public function load_textdomain() {
|
469 |
+
if ( is_textdomain_loaded( 'tgmpa' ) ) {
|
470 |
+
return;
|
471 |
+
}
|
472 |
+
|
473 |
+
if ( false !== strpos( __FILE__, WP_PLUGIN_DIR ) || false !== strpos( __FILE__, WPMU_PLUGIN_DIR ) ) {
|
474 |
+
// Plugin, we'll need to adjust the file name.
|
475 |
+
add_action( 'load_textdomain_mofile', array( $this, 'correct_plugin_mofile' ), 10, 2 );
|
476 |
+
load_theme_textdomain( 'tgmpa', dirname( __FILE__ ) . '/languages' );
|
477 |
+
remove_action( 'load_textdomain_mofile', array( $this, 'correct_plugin_mofile' ), 10 );
|
478 |
+
} else {
|
479 |
+
load_theme_textdomain( 'tgmpa', dirname( __FILE__ ) . '/languages' );
|
480 |
+
}
|
481 |
+
}
|
482 |
+
|
483 |
+
/**
|
484 |
+
* Correct the .mo file name for (must-use) plugins.
|
485 |
+
*
|
486 |
+
* Themese use `/path/{locale}.mo` while plugins use `/path/{text-domain}-{locale}.mo`.
|
487 |
+
*
|
488 |
+
* {@internal IMPORTANT! If this function changes, review the regex in the custom TGMPA
|
489 |
+
* generator on the website.}}
|
490 |
+
*
|
491 |
+
* @since 2.6.0
|
492 |
+
*
|
493 |
+
* @param string $mofile Full path to the target mofile.
|
494 |
+
* @param string $domain The domain for which a language file is being loaded.
|
495 |
+
* @return string $mofile
|
496 |
+
*/
|
497 |
+
public function correct_plugin_mofile( $mofile, $domain ) {
|
498 |
+
// Exit early if not our domain (just in case).
|
499 |
+
if ( 'tgmpa' !== $domain ) {
|
500 |
+
return $mofile;
|
501 |
+
}
|
502 |
+
return preg_replace( '`/([a-z]{2}_[A-Z]{2}.mo)$`', '/tgmpa-$1', $mofile );
|
503 |
+
}
|
504 |
+
|
505 |
+
/**
|
506 |
+
* Potentially overload the fall-back translation file for the current language.
|
507 |
+
*
|
508 |
+
* WP, by default since WP 3.7, will load a local translation first and if none
|
509 |
+
* can be found, will try and find a translation in the /wp-content/languages/ directory.
|
510 |
+
* As this library is theme/plugin agnostic, translation files for TGMPA can exist both
|
511 |
+
* in the WP_LANG_DIR /plugins/ subdirectory as well as in the /themes/ subdirectory.
|
512 |
+
*
|
513 |
+
* This method makes sure both directories are checked.
|
514 |
+
*
|
515 |
+
* {@internal IMPORTANT! If this function changes, review the regex in the custom TGMPA
|
516 |
+
* generator on the website.}}
|
517 |
+
*
|
518 |
+
* @since 2.6.0
|
519 |
+
*
|
520 |
+
* @param string $mofile Full path to the target mofile.
|
521 |
+
* @param string $domain The domain for which a language file is being loaded.
|
522 |
+
* @return string $mofile
|
523 |
+
*/
|
524 |
+
public function overload_textdomain_mofile( $mofile, $domain ) {
|
525 |
+
// Exit early if not our domain, not a WP_LANG_DIR load or if the file exists and is readable.
|
526 |
+
if ( 'tgmpa' !== $domain || false === strpos( $mofile, WP_LANG_DIR ) || @is_readable( $mofile ) ) {
|
527 |
+
return $mofile;
|
528 |
+
}
|
529 |
+
|
530 |
+
// Current fallback file is not valid, let's try the alternative option.
|
531 |
+
if ( false !== strpos( $mofile, '/themes/' ) ) {
|
532 |
+
return str_replace( '/themes/', '/plugins/', $mofile );
|
533 |
+
} elseif ( false !== strpos( $mofile, '/plugins/' ) ) {
|
534 |
+
return str_replace( '/plugins/', '/themes/', $mofile );
|
535 |
+
} else {
|
536 |
+
return $mofile;
|
537 |
+
}
|
538 |
+
}
|
539 |
+
|
540 |
+
/**
|
541 |
+
* Hook in plugin action link filters for the WP native plugins page.
|
542 |
+
*
|
543 |
+
* - Prevent activation of plugins which don't meet the minimum version requirements.
|
544 |
+
* - Prevent deactivation of force-activated plugins.
|
545 |
+
* - Add update notice if update available.
|
546 |
+
*
|
547 |
+
* @since 2.5.0
|
548 |
+
*/
|
549 |
+
public function add_plugin_action_link_filters() {
|
550 |
+
foreach ( $this->plugins as $slug => $plugin ) {
|
551 |
+
if ( false === $this->can_plugin_activate( $slug ) ) {
|
552 |
+
add_filter( 'plugin_action_links_' . $plugin['file_path'], array( $this, 'filter_plugin_action_links_activate' ), 20 );
|
553 |
+
}
|
554 |
+
|
555 |
+
if ( true === $plugin['force_activation'] ) {
|
556 |
+
add_filter( 'plugin_action_links_' . $plugin['file_path'], array( $this, 'filter_plugin_action_links_deactivate' ), 20 );
|
557 |
+
}
|
558 |
+
|
559 |
+
if ( false !== $this->does_plugin_require_update( $slug ) ) {
|
560 |
+
add_filter( 'plugin_action_links_' . $plugin['file_path'], array( $this, 'filter_plugin_action_links_update' ), 20 );
|
561 |
+
}
|
562 |
+
}
|
563 |
+
}
|
564 |
+
|
565 |
+
/**
|
566 |
+
* Remove the 'Activate' link on the WP native plugins page if the plugin does not meet the
|
567 |
+
* minimum version requirements.
|
568 |
+
*
|
569 |
+
* @since 2.5.0
|
570 |
+
*
|
571 |
+
* @param array $actions Action links.
|
572 |
+
* @return array
|
573 |
+
*/
|
574 |
+
public function filter_plugin_action_links_activate( $actions ) {
|
575 |
+
unset( $actions['activate'] );
|
576 |
+
|
577 |
+
return $actions;
|
578 |
+
}
|
579 |
+
|
580 |
+
/**
|
581 |
+
* Remove the 'Deactivate' link on the WP native plugins page if the plugin has been set to force activate.
|
582 |
+
*
|
583 |
+
* @since 2.5.0
|
584 |
+
*
|
585 |
+
* @param array $actions Action links.
|
586 |
+
* @return array
|
587 |
+
*/
|
588 |
+
public function filter_plugin_action_links_deactivate( $actions ) {
|
589 |
+
unset( $actions['deactivate'] );
|
590 |
+
|
591 |
+
return $actions;
|
592 |
+
}
|
593 |
+
|
594 |
+
/**
|
595 |
+
* Add a 'Requires update' link on the WP native plugins page if the plugin does not meet the
|
596 |
+
* minimum version requirements.
|
597 |
+
*
|
598 |
+
* @since 2.5.0
|
599 |
+
*
|
600 |
+
* @param array $actions Action links.
|
601 |
+
* @return array
|
602 |
+
*/
|
603 |
+
public function filter_plugin_action_links_update( $actions ) {
|
604 |
+
$actions['update'] = sprintf(
|
605 |
+
'<a href="%1$s" title="%2$s" class="edit">%3$s</a>',
|
606 |
+
esc_url( $this->get_tgmpa_status_url( 'update' ) ),
|
607 |
+
esc_attr__( 'This plugin needs to be updated to be compatible with your theme.', 'tgmpa' ),
|
608 |
+
esc_html__( 'Update Required', 'tgmpa' )
|
609 |
+
);
|
610 |
+
|
611 |
+
return $actions;
|
612 |
+
}
|
613 |
+
|
614 |
+
/**
|
615 |
+
* Handles calls to show plugin information via links in the notices.
|
616 |
+
*
|
617 |
+
* We get the links in the admin notices to point to the TGMPA page, rather
|
618 |
+
* than the typical plugin-install.php file, so we can prepare everything
|
619 |
+
* beforehand.
|
620 |
+
*
|
621 |
+
* WP does not make it easy to show the plugin information in the thickbox -
|
622 |
+
* here we have to require a file that includes a function that does the
|
623 |
+
* main work of displaying it, enqueue some styles, set up some globals and
|
624 |
+
* finally call that function before exiting.
|
625 |
+
*
|
626 |
+
* Down right easy once you know how...
|
627 |
+
*
|
628 |
+
* Returns early if not the TGMPA page.
|
629 |
+
*
|
630 |
+
* @since 2.1.0
|
631 |
+
*
|
632 |
+
* @global string $tab Used as iframe div class names, helps with styling
|
633 |
+
* @global string $body_id Used as the iframe body ID, helps with styling
|
634 |
+
*
|
635 |
+
* @return null Returns early if not the TGMPA page.
|
636 |
+
*/
|
637 |
+
public function admin_init() {
|
638 |
+
if ( ! $this->is_tgmpa_page() ) {
|
639 |
+
return;
|
640 |
+
}
|
641 |
+
|
642 |
+
if ( isset( $_REQUEST['tab'] ) && 'plugin-information' === $_REQUEST['tab'] ) {
|
643 |
+
// Needed for install_plugin_information().
|
644 |
+
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
|
645 |
+
|
646 |
+
wp_enqueue_style( 'plugin-install' );
|
647 |
+
|
648 |
+
global $tab, $body_id;
|
649 |
+
$body_id = 'plugin-information';
|
650 |
+
// @codingStandardsIgnoreStart
|
651 |
+
$tab = 'plugin-information';
|
652 |
+
// @codingStandardsIgnoreEnd
|
653 |
+
|
654 |
+
install_plugin_information();
|
655 |
+
|
656 |
+
exit;
|
657 |
+
}
|
658 |
+
}
|
659 |
+
|
660 |
+
/**
|
661 |
+
* Enqueue thickbox scripts/styles for plugin info.
|
662 |
+
*
|
663 |
+
* Thickbox is not automatically included on all admin pages, so we must
|
664 |
+
* manually enqueue it for those pages.
|
665 |
+
*
|
666 |
+
* Thickbox is only loaded if the user has not dismissed the admin
|
667 |
+
* notice or if there are any plugins left to install and activate.
|
668 |
+
*
|
669 |
+
* @since 2.1.0
|
670 |
+
*/
|
671 |
+
public function thickbox() {
|
672 |
+
if ( ! get_user_meta( get_current_user_id(), 'tgmpa_dismissed_notice_' . $this->id, true ) ) {
|
673 |
+
add_thickbox();
|
674 |
+
}
|
675 |
+
}
|
676 |
+
|
677 |
+
/**
|
678 |
+
* Adds submenu page if there are plugin actions to take.
|
679 |
+
*
|
680 |
+
* This method adds the submenu page letting users know that a required
|
681 |
+
* plugin needs to be installed.
|
682 |
+
*
|
683 |
+
* This page disappears once the plugin has been installed and activated.
|
684 |
+
*
|
685 |
+
* @since 1.0.0
|
686 |
+
*
|
687 |
+
* @see TGM_Plugin_Activation::init()
|
688 |
+
* @see TGM_Plugin_Activation::install_plugins_page()
|
689 |
+
*
|
690 |
+
* @return null Return early if user lacks capability to install a plugin.
|
691 |
+
*/
|
692 |
+
public function admin_menu() {
|
693 |
+
// Make sure privileges are correct to see the page.
|
694 |
+
if ( ! current_user_can( 'install_plugins' ) ) {
|
695 |
+
return;
|
696 |
+
}
|
697 |
+
|
698 |
+
$args = apply_filters(
|
699 |
+
'tgmpa_admin_menu_args',
|
700 |
+
array(
|
701 |
+
'parent_slug' => $this->parent_slug, // Parent Menu slug.
|
702 |
+
'page_title' => $this->strings['page_title'], // Page title.
|
703 |
+
'menu_title' => $this->strings['menu_title'], // Menu title.
|
704 |
+
'capability' => $this->capability, // Capability.
|
705 |
+
'menu_slug' => $this->menu, // Menu slug.
|
706 |
+
'function' => array( $this, 'install_plugins_page' ), // Callback.
|
707 |
+
)
|
708 |
+
);
|
709 |
+
|
710 |
+
$this->add_admin_menu( $args );
|
711 |
+
}
|
712 |
+
|
713 |
+
/**
|
714 |
+
* Add the menu item.
|
715 |
+
*
|
716 |
+
* {@internal IMPORTANT! If this function changes, review the regex in the custom TGMPA
|
717 |
+
* generator on the website.}}
|
718 |
+
*
|
719 |
+
* @since 2.5.0
|
720 |
+
*
|
721 |
+
* @param array $args Menu item configuration.
|
722 |
+
*/
|
723 |
+
protected function add_admin_menu( array $args ) {
|
724 |
+
if ( has_filter( 'tgmpa_admin_menu_use_add_theme_page' ) ) {
|
725 |
+
_deprecated_function( 'The "tgmpa_admin_menu_use_add_theme_page" filter', '2.5.0', esc_html__( 'Set the parent_slug config variable instead.', 'tgmpa' ) );
|
726 |
+
}
|
727 |
+
|
728 |
+
if ( 'themes.php' === $this->parent_slug ) {
|
729 |
+
$this->page_hook = call_user_func( 'add_theme_page', $args['page_title'], $args['menu_title'], $args['capability'], $args['menu_slug'], $args['function'] );
|
730 |
+
} else {
|
731 |
+
$this->page_hook = call_user_func( 'add_submenu_page', $args['parent_slug'], $args['page_title'], $args['menu_title'], $args['capability'], $args['menu_slug'], $args['function'] );
|
732 |
+
}
|
733 |
+
}
|
734 |
+
|
735 |
+
/**
|
736 |
+
* Echoes plugin installation form.
|
737 |
+
*
|
738 |
+
* This method is the callback for the admin_menu method function.
|
739 |
+
* This displays the admin page and form area where the user can select to install and activate the plugin.
|
740 |
+
* Aborts early if we're processing a plugin installation action.
|
741 |
+
*
|
742 |
+
* @since 1.0.0
|
743 |
+
*
|
744 |
+
* @return null Aborts early if we're processing a plugin installation action.
|
745 |
+
*/
|
746 |
+
public function install_plugins_page() {
|
747 |
+
// Store new instance of plugin table in object.
|
748 |
+
$plugin_table = new TGMPA_List_Table;
|
749 |
+
|
750 |
+
// Return early if processing a plugin installation action.
|
751 |
+
if ( ( ( 'tgmpa-bulk-install' === $plugin_table->current_action() || 'tgmpa-bulk-update' === $plugin_table->current_action() ) && $plugin_table->process_bulk_actions() ) || $this->do_plugin_install() ) {
|
752 |
+
return;
|
753 |
+
}
|
754 |
+
|
755 |
+
// Force refresh of available plugin information so we'll know about manual updates/deletes.
|
756 |
+
wp_clean_plugins_cache( false );
|
757 |
+
|
758 |
+
?>
|
759 |
+
<div class="tgmpa wrap">
|
760 |
+
<h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
|
761 |
+
<?php $plugin_table->prepare_items(); ?>
|
762 |
+
|
763 |
+
<?php
|
764 |
+
if ( ! empty( $this->message ) && is_string( $this->message ) ) {
|
765 |
+
echo wp_kses_post( $this->message );
|
766 |
+
}
|
767 |
+
?>
|
768 |
+
<?php $plugin_table->views(); ?>
|
769 |
+
|
770 |
+
<form id="tgmpa-plugins" action="" method="post">
|
771 |
+
<input type="hidden" name="tgmpa-page" value="<?php echo esc_attr( $this->menu ); ?>" />
|
772 |
+
<input type="hidden" name="plugin_status" value="<?php echo esc_attr( $plugin_table->view_context ); ?>" />
|
773 |
+
<?php $plugin_table->display(); ?>
|
774 |
+
</form>
|
775 |
+
</div>
|
776 |
+
<?php
|
777 |
+
}
|
778 |
+
|
779 |
+
/**
|
780 |
+
* Installs, updates or activates a plugin depending on the action link clicked by the user.
|
781 |
+
*
|
782 |
+
* Checks the $_GET variable to see which actions have been
|
783 |
+
* passed and responds with the appropriate method.
|
784 |
+
*
|
785 |
+
* Uses WP_Filesystem to process and handle the plugin installation
|
786 |
+
* method.
|
787 |
+
*
|
788 |
+
* @since 1.0.0
|
789 |
+
*
|
790 |
+
* @uses WP_Filesystem
|
791 |
+
* @uses WP_Error
|
792 |
+
* @uses WP_Upgrader
|
793 |
+
* @uses Plugin_Upgrader
|
794 |
+
* @uses Plugin_Installer_Skin
|
795 |
+
* @uses Plugin_Upgrader_Skin
|
796 |
+
*
|
797 |
+
* @return boolean True on success, false on failure.
|
798 |
+
*/
|
799 |
+
protected function do_plugin_install() {
|
800 |
+
if ( empty( $_GET['plugin'] ) ) {
|
801 |
+
return false;
|
802 |
+
}
|
803 |
+
|
804 |
+
// All plugin information will be stored in an array for processing.
|
805 |
+
$slug = $this->sanitize_key( urldecode( $_GET['plugin'] ) );
|
806 |
+
|
807 |
+
if ( ! isset( $this->plugins[ $slug ] ) ) {
|
808 |
+
return false;
|
809 |
+
}
|
810 |
+
|
811 |
+
// Was an install or upgrade action link clicked?
|
812 |
+
if ( ( isset( $_GET['tgmpa-install'] ) && 'install-plugin' === $_GET['tgmpa-install'] ) || ( isset( $_GET['tgmpa-update'] ) && 'update-plugin' === $_GET['tgmpa-update'] ) ) {
|
813 |
+
|
814 |
+
$install_type = 'install';
|
815 |
+
if ( isset( $_GET['tgmpa-update'] ) && 'update-plugin' === $_GET['tgmpa-update'] ) {
|
816 |
+
$install_type = 'update';
|
817 |
+
}
|
818 |
+
|
819 |
+
check_admin_referer( 'tgmpa-' . $install_type, 'tgmpa-nonce' );
|
820 |
+
|
821 |
+
// Pass necessary information via URL if WP_Filesystem is needed.
|
822 |
+
$url = wp_nonce_url(
|
823 |
+
add_query_arg(
|
824 |
+
array(
|
825 |
+
'plugin' => urlencode( $slug ),
|
826 |
+
'tgmpa-' . $install_type => $install_type . '-plugin',
|
827 |
+
),
|
828 |
+
$this->get_tgmpa_url()
|
829 |
+
),
|
830 |
+
'tgmpa-' . $install_type,
|
831 |
+
'tgmpa-nonce'
|
832 |
+
);
|
833 |
+
|
834 |
+
$method = ''; // Leave blank so WP_Filesystem can populate it as necessary.
|
835 |
+
|
836 |
+
if ( false === ( $creds = request_filesystem_credentials( esc_url_raw( $url ), $method, false, false, array() ) ) ) {
|
837 |
+
return true;
|
838 |
+
}
|
839 |
+
|
840 |
+
if ( ! WP_Filesystem( $creds ) ) {
|
841 |
+
request_filesystem_credentials( esc_url_raw( $url ), $method, true, false, array() ); // Setup WP_Filesystem.
|
842 |
+
return true;
|
843 |
+
}
|
844 |
+
|
845 |
+
/* If we arrive here, we have the filesystem. */
|
846 |
+
|
847 |
+
// Prep variables for Plugin_Installer_Skin class.
|
848 |
+
$extra = array();
|
849 |
+
$extra['slug'] = $slug; // Needed for potentially renaming of directory name.
|
850 |
+
$source = $this->get_download_url( $slug );
|
851 |
+
$api = ( 'repo' === $this->plugins[ $slug ]['source_type'] ) ? $this->get_plugins_api( $slug ) : null;
|
852 |
+
$api = ( false !== $api ) ? $api : null;
|
853 |
+
|
854 |
+
$url = add_query_arg(
|
855 |
+
array(
|
856 |
+
'action' => $install_type . '-plugin',
|
857 |
+
'plugin' => urlencode( $slug ),
|
858 |
+
),
|
859 |
+
'update.php'
|
860 |
+
);
|
861 |
+
|
862 |
+
if ( ! class_exists( 'Plugin_Upgrader', false ) ) {
|
863 |
+
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
|
864 |
+
}
|
865 |
+
|
866 |
+
$title = ( 'update' === $install_type ) ? $this->strings['updating'] : $this->strings['installing'];
|
867 |
+
$skin_args = array(
|
868 |
+
'type' => ( 'bundled' !== $this->plugins[ $slug ]['source_type'] ) ? 'web' : 'upload',
|
869 |
+
'title' => sprintf( $title, $this->plugins[ $slug ]['name'] ),
|
870 |
+
'url' => esc_url_raw( $url ),
|
871 |
+
'nonce' => $install_type . '-plugin_' . $slug,
|
872 |
+
'plugin' => '',
|
873 |
+
'api' => $api,
|
874 |
+
'extra' => $extra,
|
875 |
+
);
|
876 |
+
unset( $title );
|
877 |
+
|
878 |
+
if ( 'update' === $install_type ) {
|
879 |
+
$skin_args['plugin'] = $this->plugins[ $slug ]['file_path'];
|
880 |
+
$skin = new Plugin_Upgrader_Skin( $skin_args );
|
881 |
+
} else {
|
882 |
+
$skin = new Plugin_Installer_Skin( $skin_args );
|
883 |
+
}
|
884 |
+
|
885 |
+
// Create a new instance of Plugin_Upgrader.
|
886 |
+
$upgrader = new Plugin_Upgrader( $skin );
|
887 |
+
|
888 |
+
// Perform the action and install the plugin from the $source urldecode().
|
889 |
+
add_filter( 'upgrader_source_selection', array( $this, 'maybe_adjust_source_dir' ), 1, 3 );
|
890 |
+
|
891 |
+
if ( 'update' === $install_type ) {
|
892 |
+
// Inject our info into the update transient.
|
893 |
+
$to_inject = array( $slug => $this->plugins[ $slug ] );
|
894 |
+
$to_inject[ $slug ]['source'] = $source;
|
895 |
+
$this->inject_update_info( $to_inject );
|
896 |
+
|
897 |
+
$upgrader->upgrade( $this->plugins[ $slug ]['file_path'] );
|
898 |
+
} else {
|
899 |
+
$upgrader->install( $source );
|
900 |
+
}
|
901 |
+
|
902 |
+
remove_filter( 'upgrader_source_selection', array( $this, 'maybe_adjust_source_dir' ), 1 );
|
903 |
+
|
904 |
+
// Make sure we have the correct file path now the plugin is installed/updated.
|
905 |
+
$this->populate_file_path( $slug );
|
906 |
+
|
907 |
+
// Only activate plugins if the config option is set to true and the plugin isn't
|
908 |
+
// already active (upgrade).
|
909 |
+
if ( $this->is_automatic && ! $this->is_plugin_active( $slug ) ) {
|
910 |
+
$plugin_activate = $upgrader->plugin_info(); // Grab the plugin info from the Plugin_Upgrader method.
|
911 |
+
if ( false === $this->activate_single_plugin( $plugin_activate, $slug, true ) ) {
|
912 |
+
return true; // Finish execution of the function early as we encountered an error.
|
913 |
+
}
|
914 |
+
}
|
915 |
+
|
916 |
+
$this->show_tgmpa_version();
|
917 |
+
|
918 |
+
// Display message based on if all plugins are now active or not.
|
919 |
+
if ( $this->is_tgmpa_complete() ) {
|
920 |
+
echo '<p>', sprintf( esc_html( $this->strings['complete'] ), '<a href="' . esc_url( self_admin_url() ) . '">' . esc_html__( 'Return to the Dashboard', 'tgmpa' ) . '</a>' ), '</p>';
|
921 |
+
echo '<style type="text/css">#adminmenu .wp-submenu li.current { display: none !important; }</style>';
|
922 |
+
} else {
|
923 |
+
echo '<p><a href="', esc_url( $this->get_tgmpa_url() ), '" target="_parent">', esc_html( $this->strings['return'] ), '</a></p>';
|
924 |
+
}
|
925 |
+
|
926 |
+
return true;
|
927 |
+
} elseif ( isset( $this->plugins[ $slug ]['file_path'], $_GET['tgmpa-activate'] ) && 'activate-plugin' === $_GET['tgmpa-activate'] ) {
|
928 |
+
// Activate action link was clicked.
|
929 |
+
check_admin_referer( 'tgmpa-activate', 'tgmpa-nonce' );
|
930 |
+
|
931 |
+
if ( false === $this->activate_single_plugin( $this->plugins[ $slug ]['file_path'], $slug ) ) {
|
932 |
+
return true; // Finish execution of the function early as we encountered an error.
|
933 |
+
}
|
934 |
+
}
|
935 |
+
|
936 |
+
return false;
|
937 |
+
}
|
938 |
+
|
939 |
+
/**
|
940 |
+
* Inject information into the 'update_plugins' site transient as WP checks that before running an update.
|
941 |
+
*
|
942 |
+
* @since 2.5.0
|
943 |
+
*
|
944 |
+
* @param array $plugins The plugin information for the plugins which are to be updated.
|
945 |
+
*/
|
946 |
+
public function inject_update_info( $plugins ) {
|
947 |
+
$repo_updates = get_site_transient( 'update_plugins' );
|
948 |
+
|
949 |
+
if ( ! is_object( $repo_updates ) ) {
|
950 |
+
$repo_updates = new stdClass;
|
951 |
+
}
|
952 |
+
|
953 |
+
foreach ( $plugins as $slug => $plugin ) {
|
954 |
+
$file_path = $plugin['file_path'];
|
955 |
+
|
956 |
+
if ( empty( $repo_updates->response[ $file_path ] ) ) {
|
957 |
+
$repo_updates->response[ $file_path ] = new stdClass;
|
958 |
+
}
|
959 |
+
|
960 |
+
// We only really need to set package, but let's do all we can in case WP changes something.
|
961 |
+
$repo_updates->response[ $file_path ]->slug = $slug;
|
962 |
+
$repo_updates->response[ $file_path ]->plugin = $file_path;
|
963 |
+
$repo_updates->response[ $file_path ]->new_version = $plugin['version'];
|
964 |
+
$repo_updates->response[ $file_path ]->package = $plugin['source'];
|
965 |
+
if ( empty( $repo_updates->response[ $file_path ]->url ) && ! empty( $plugin['external_url'] ) ) {
|
966 |
+
$repo_updates->response[ $file_path ]->url = $plugin['external_url'];
|
967 |
+
}
|
968 |
+
}
|
969 |
+
|
970 |
+
set_site_transient( 'update_plugins', $repo_updates );
|
971 |
+
}
|
972 |
+
|
973 |
+
/**
|
974 |
+
* Adjust the plugin directory name if necessary.
|
975 |
+
*
|
976 |
+
* The final destination directory of a plugin is based on the subdirectory name found in the
|
977 |
+
* (un)zipped source. In some cases - most notably GitHub repository plugin downloads -, this
|
978 |
+
* subdirectory name is not the same as the expected slug and the plugin will not be recognized
|
979 |
+
* as installed. This is fixed by adjusting the temporary unzipped source subdirectory name to
|
980 |
+
* the expected plugin slug.
|
981 |
+
*
|
982 |
+
* @since 2.5.0
|
983 |
+
*
|
984 |
+
* @param string $source Path to upgrade/zip-file-name.tmp/subdirectory/.
|
985 |
+
* @param string $remote_source Path to upgrade/zip-file-name.tmp.
|
986 |
+
* @param \WP_Upgrader $upgrader Instance of the upgrader which installs the plugin.
|
987 |
+
* @return string $source
|
988 |
+
*/
|
989 |
+
public function maybe_adjust_source_dir( $source, $remote_source, $upgrader ) {
|
990 |
+
if ( ! $this->is_tgmpa_page() || ! is_object( $GLOBALS['wp_filesystem'] ) ) {
|
991 |
+
return $source;
|
992 |
+
}
|
993 |
+
|
994 |
+
// Check for single file plugins.
|
995 |
+
$source_files = array_keys( $GLOBALS['wp_filesystem']->dirlist( $remote_source ) );
|
996 |
+
if ( 1 === count( $source_files ) && false === $GLOBALS['wp_filesystem']->is_dir( $source ) ) {
|
997 |
+
return $source;
|
998 |
+
}
|
999 |
+
|
1000 |
+
// Multi-file plugin, let's see if the directory is correctly named.
|
1001 |
+
$desired_slug = '';
|
1002 |
+
|
1003 |
+
// Figure out what the slug is supposed to be.
|
1004 |
+
if ( false === $upgrader->bulk && ! empty( $upgrader->skin->options['extra']['slug'] ) ) {
|
1005 |
+
$desired_slug = $upgrader->skin->options['extra']['slug'];
|
1006 |
+
} else {
|
1007 |
+
// Bulk installer contains less info, so fall back on the info registered here.
|
1008 |
+
foreach ( $this->plugins as $slug => $plugin ) {
|
1009 |
+
if ( ! empty( $upgrader->skin->plugin_names[ $upgrader->skin->i ] ) && $plugin['name'] === $upgrader->skin->plugin_names[ $upgrader->skin->i ] ) {
|
1010 |
+
$desired_slug = $slug;
|
1011 |
+
break;
|
1012 |
+
}
|
1013 |
+
}
|
1014 |
+
unset( $slug, $plugin );
|
1015 |
+
}
|
1016 |
+
|
1017 |
+
if ( ! empty( $desired_slug ) ) {
|
1018 |
+
$subdir_name = untrailingslashit( str_replace( trailingslashit( $remote_source ), '', $source ) );
|
1019 |
+
|
1020 |
+
if ( ! empty( $subdir_name ) && $subdir_name !== $desired_slug ) {
|
1021 |
+
$from_path = untrailingslashit( $source );
|
1022 |
+
$to_path = trailingslashit( $remote_source ) . $desired_slug;
|
1023 |
+
|
1024 |
+
if ( true === $GLOBALS['wp_filesystem']->move( $from_path, $to_path ) ) {
|
1025 |
+
return trailingslashit( $to_path );
|
1026 |
+
} else {
|
1027 |
+
return new WP_Error( 'rename_failed', esc_html__( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.', 'tgmpa' ) . ' ' . esc_html__( 'Please contact the plugin provider and ask them to package their plugin according to the WordPress guidelines.', 'tgmpa' ), array( 'found' => $subdir_name, 'expected' => $desired_slug ) );
|
1028 |
+
}
|
1029 |
+
} elseif ( empty( $subdir_name ) ) {
|
1030 |
+
return new WP_Error( 'packaged_wrong', esc_html__( 'The remote plugin package consists of more than one file, but the files are not packaged in a folder.', 'tgmpa' ) . ' ' . esc_html__( 'Please contact the plugin provider and ask them to package their plugin according to the WordPress guidelines.', 'tgmpa' ), array( 'found' => $subdir_name, 'expected' => $desired_slug ) );
|
1031 |
+
}
|
1032 |
+
}
|
1033 |
+
|
1034 |
+
return $source;
|
1035 |
+
}
|
1036 |
+
|
1037 |
+
/**
|
1038 |
+
* Activate a single plugin and send feedback about the result to the screen.
|
1039 |
+
*
|
1040 |
+
* @since 2.5.0
|
1041 |
+
*
|
1042 |
+
* @param string $file_path Path within wp-plugins/ to main plugin file.
|
1043 |
+
* @param string $slug Plugin slug.
|
1044 |
+
* @param bool $automatic Whether this is an automatic activation after an install. Defaults to false.
|
1045 |
+
* This determines the styling of the output messages.
|
1046 |
+
* @return bool False if an error was encountered, true otherwise.
|
1047 |
+
*/
|
1048 |
+
protected function activate_single_plugin( $file_path, $slug, $automatic = false ) {
|
1049 |
+
if ( $this->can_plugin_activate( $slug ) ) {
|
1050 |
+
$activate = activate_plugin( $file_path );
|
1051 |
+
|
1052 |
+
if ( is_wp_error( $activate ) ) {
|
1053 |
+
echo '<div id="message" class="error"><p>', wp_kses_post( $activate->get_error_message() ), '</p></div>',
|
1054 |
+
'<p><a href="', esc_url( $this->get_tgmpa_url() ), '" target="_parent">', esc_html( $this->strings['return'] ), '</a></p>';
|
1055 |
+
|
1056 |
+
return false; // End it here if there is an error with activation.
|
1057 |
+
} else {
|
1058 |
+
if ( ! $automatic ) {
|
1059 |
+
// Make sure message doesn't display again if bulk activation is performed
|
1060 |
+
// immediately after a single activation.
|
1061 |
+
if ( ! isset( $_POST['action'] ) ) { // WPCS: CSRF OK.
|
1062 |
+
echo '<div id="message" class="updated"><p>', esc_html( $this->strings['activated_successfully'] ), ' <strong>', esc_html( $this->plugins[ $slug ]['name'] ), '.</strong></p></div>';
|
1063 |
+
}
|
1064 |
+
} else {
|
1065 |
+
// Simpler message layout for use on the plugin install page.
|
1066 |
+
echo '<p>', esc_html( $this->strings['plugin_activated'] ), '</p>';
|
1067 |
+
}
|
1068 |
+
}
|
1069 |
+
} elseif ( $this->is_plugin_active( $slug ) ) {
|
1070 |
+
// No simpler message format provided as this message should never be encountered
|
1071 |
+
// on the plugin install page.
|
1072 |
+
echo '<div id="message" class="error"><p>',
|
1073 |
+
sprintf(
|
1074 |
+
esc_html( $this->strings['plugin_already_active'] ),
|
1075 |
+
'<strong>' . esc_html( $this->plugins[ $slug ]['name'] ) . '</strong>'
|
1076 |
+
),
|
1077 |
+
'</p></div>';
|
1078 |
+
} elseif ( $this->does_plugin_require_update( $slug ) ) {
|
1079 |
+
if ( ! $automatic ) {
|
1080 |
+
// Make sure message doesn't display again if bulk activation is performed
|
1081 |
+
// immediately after a single activation.
|
1082 |
+
if ( ! isset( $_POST['action'] ) ) { // WPCS: CSRF OK.
|
1083 |
+
echo '<div id="message" class="error"><p>',
|
1084 |
+
sprintf(
|
1085 |
+
esc_html( $this->strings['plugin_needs_higher_version'] ),
|
1086 |
+
'<strong>' . esc_html( $this->plugins[ $slug ]['name'] ) . '</strong>'
|
1087 |
+
),
|
1088 |
+
'</p></div>';
|
1089 |
+
}
|
1090 |
+
} else {
|
1091 |
+
// Simpler message layout for use on the plugin install page.
|
1092 |
+
echo '<p>', sprintf( esc_html( $this->strings['plugin_needs_higher_version'] ), esc_html( $this->plugins[ $slug ]['name'] ) ), '</p>';
|
1093 |
+
}
|
1094 |
+
}
|
1095 |
+
|
1096 |
+
return true;
|
1097 |
+
}
|
1098 |
+
|
1099 |
+
/**
|
1100 |
+
* Echoes required plugin notice.
|
1101 |
+
*
|
1102 |
+
* Outputs a message telling users that a specific plugin is required for
|
1103 |
+
* their theme. If appropriate, it includes a link to the form page where
|
1104 |
+
* users can install and activate the plugin.
|
1105 |
+
*
|
1106 |
+
* Returns early if we're on the Install page.
|
1107 |
+
*
|
1108 |
+
* @since 1.0.0
|
1109 |
+
*
|
1110 |
+
* @global object $current_screen
|
1111 |
+
*
|
1112 |
+
* @return null Returns early if we're on the Install page.
|
1113 |
+
*/
|
1114 |
+
public function notices() {
|
1115 |
+
// Remove nag on the install page / Return early if the nag message has been dismissed or user < author.
|
1116 |
+
if ( ( $this->is_tgmpa_page() || $this->is_core_update_page() ) || get_user_meta( get_current_user_id(), 'tgmpa_dismissed_notice_' . $this->id, true ) || ! current_user_can( apply_filters( 'tgmpa_show_admin_notice_capability', 'publish_posts' ) ) ) {
|
1117 |
+
return;
|
1118 |
+
}
|
1119 |
+
|
1120 |
+
// Store for the plugin slugs by message type.
|
1121 |
+
$message = array();
|
1122 |
+
|
1123 |
+
// Initialize counters used to determine plurality of action link texts.
|
1124 |
+
$install_link_count = 0;
|
1125 |
+
$update_link_count = 0;
|
1126 |
+
$activate_link_count = 0;
|
1127 |
+
$total_required_action_count = 0;
|
1128 |
+
|
1129 |
+
foreach ( $this->plugins as $slug => $plugin ) {
|
1130 |
+
if ( $this->is_plugin_active( $slug ) && false === $this->does_plugin_have_update( $slug ) ) {
|
1131 |
+
continue;
|
1132 |
+
}
|
1133 |
+
|
1134 |
+
if ( ! $this->is_plugin_installed( $slug ) ) {
|
1135 |
+
if ( current_user_can( 'install_plugins' ) ) {
|
1136 |
+
$install_link_count++;
|
1137 |
+
|
1138 |
+
if ( true === $plugin['required'] ) {
|
1139 |
+
$message['notice_can_install_required'][] = $slug;
|
1140 |
+
} else {
|
1141 |
+
$message['notice_can_install_recommended'][] = $slug;
|
1142 |
+
}
|
1143 |
+
}
|
1144 |
+
if ( true === $plugin['required'] ) {
|
1145 |
+
$total_required_action_count++;
|
1146 |
+
}
|
1147 |
+
} else {
|
1148 |
+
if ( ! $this->is_plugin_active( $slug ) && $this->can_plugin_activate( $slug ) ) {
|
1149 |
+
if ( current_user_can( 'activate_plugins' ) ) {
|
1150 |
+
$activate_link_count++;
|
1151 |
+
|
1152 |
+
if ( true === $plugin['required'] ) {
|
1153 |
+
$message['notice_can_activate_required'][] = $slug;
|
1154 |
+
} else {
|
1155 |
+
$message['notice_can_activate_recommended'][] = $slug;
|
1156 |
+
}
|
1157 |
+
}
|
1158 |
+
if ( true === $plugin['required'] ) {
|
1159 |
+
$total_required_action_count++;
|
1160 |
+
}
|
1161 |
+
}
|
1162 |
+
|
1163 |
+
if ( $this->does_plugin_require_update( $slug ) || false !== $this->does_plugin_have_update( $slug ) ) {
|
1164 |
+
|
1165 |
+
if ( current_user_can( 'update_plugins' ) ) {
|
1166 |
+
$update_link_count++;
|
1167 |
+
|
1168 |
+
if ( $this->does_plugin_require_update( $slug ) ) {
|
1169 |
+
$message['notice_ask_to_update'][] = $slug;
|
1170 |
+
} elseif ( false !== $this->does_plugin_have_update( $slug ) ) {
|
1171 |
+
$message['notice_ask_to_update_maybe'][] = $slug;
|
1172 |
+
}
|
1173 |
+
}
|
1174 |
+
if ( true === $plugin['required'] ) {
|
1175 |
+
$total_required_action_count++;
|
1176 |
+
}
|
1177 |
+
}
|
1178 |
+
}
|
1179 |
+
}
|
1180 |
+
unset( $slug, $plugin );
|
1181 |
+
|
1182 |
+
// If we have notices to display, we move forward.
|
1183 |
+
if ( ! empty( $message ) || $total_required_action_count > 0 ) {
|
1184 |
+
krsort( $message ); // Sort messages.
|
1185 |
+
$rendered = '';
|
1186 |
+
|
1187 |
+
// As add_settings_error() wraps the final message in a <p> and as the final message can't be
|
1188 |
+
// filtered, using <p>'s in our html would render invalid html output.
|
1189 |
+
$line_template = '<span style="display: block; margin: 0.5em 0.5em 0 0; clear: both;">%s</span>' . "\n";
|
1190 |
+
|
1191 |
+
if ( ! current_user_can( 'activate_plugins' ) && ! current_user_can( 'install_plugins' ) && ! current_user_can( 'update_plugins' ) ) {
|
1192 |
+
$rendered = esc_html( $this->strings['notice_cannot_install_activate'] ) . ' ' . esc_html( $this->strings['contact_admin'] );
|
1193 |
+
$rendered .= $this->create_user_action_links_for_notice( 0, 0, 0, $line_template );
|
1194 |
+
} else {
|
1195 |
+
|
1196 |
+
// If dismissable is false and a message is set, output it now.
|
1197 |
+
if ( ! $this->dismissable && ! empty( $this->dismiss_msg ) ) {
|
1198 |
+
$rendered .= sprintf( $line_template, wp_kses_post( $this->dismiss_msg ) );
|
1199 |
+
}
|
1200 |
+
|
1201 |
+
// Render the individual message lines for the notice.
|
1202 |
+
foreach ( $message as $type => $plugin_group ) {
|
1203 |
+
$linked_plugins = array();
|
1204 |
+
|
1205 |
+
// Get the external info link for a plugin if one is available.
|
1206 |
+
foreach ( $plugin_group as $plugin_slug ) {
|
1207 |
+
$linked_plugins[] = $this->get_info_link( $plugin_slug );
|
1208 |
+
}
|
1209 |
+
unset( $plugin_slug );
|
1210 |
+
|
1211 |
+
$count = count( $plugin_group );
|
1212 |
+
$linked_plugins = array_map( array( 'TGMPA_Utils', 'wrap_in_em' ), $linked_plugins );
|
1213 |
+
$last_plugin = array_pop( $linked_plugins ); // Pop off last name to prep for readability.
|
1214 |
+
$imploded = empty( $linked_plugins ) ? $last_plugin : ( implode( ', ', $linked_plugins ) . ' ' . esc_html_x( 'and', 'plugin A *and* plugin B', 'tgmpa' ) . ' ' . $last_plugin );
|
1215 |
+
|
1216 |
+
$rendered .= sprintf(
|
1217 |
+
$line_template,
|
1218 |
+
sprintf(
|
1219 |
+
translate_nooped_plural( $this->strings[ $type ], $count, 'tgmpa' ),
|
1220 |
+
$imploded,
|
1221 |
+
$count
|
1222 |
+
)
|
1223 |
+
);
|
1224 |
+
|
1225 |
+
}
|
1226 |
+
unset( $type, $plugin_group, $linked_plugins, $count, $last_plugin, $imploded );
|
1227 |
+
|
1228 |
+
$rendered .= $this->create_user_action_links_for_notice( $install_link_count, $update_link_count, $activate_link_count, $line_template );
|
1229 |
+
}
|
1230 |
+
|
1231 |
+
// Register the nag messages and prepare them to be processed.
|
1232 |
+
add_settings_error( 'tgmpa', 'tgmpa', $rendered, $this->get_admin_notice_class() );
|
1233 |
+
}
|
1234 |
+
|
1235 |
+
// Admin options pages already output settings_errors, so this is to avoid duplication.
|
1236 |
+
if ( 'options-general' !== $GLOBALS['current_screen']->parent_base ) {
|
1237 |
+
$this->display_settings_errors();
|
1238 |
+
}
|
1239 |
+
}
|
1240 |
+
|
1241 |
+
/**
|
1242 |
+
* Generate the user action links for the admin notice.
|
1243 |
+
*
|
1244 |
+
* @since 2.6.0
|
1245 |
+
*
|
1246 |
+
* @param int $install_count Number of plugins to install.
|
1247 |
+
* @param int $update_count Number of plugins to update.
|
1248 |
+
* @param int $activate_count Number of plugins to activate.
|
1249 |
+
* @param int $line_template Template for the HTML tag to output a line.
|
1250 |
+
* @return string Action links.
|
1251 |
+
*/
|
1252 |
+
protected function create_user_action_links_for_notice( $install_count, $update_count, $activate_count, $line_template ) {
|
1253 |
+
// Setup action links.
|
1254 |
+
$action_links = array(
|
1255 |
+
'install' => '',
|
1256 |
+
'update' => '',
|
1257 |
+
'activate' => '',
|
1258 |
+
'dismiss' => $this->dismissable ? '<a href="' . esc_url( wp_nonce_url( add_query_arg( 'tgmpa-dismiss', 'dismiss_admin_notices' ), 'tgmpa-dismiss-' . get_current_user_id() ) ) . '" class="dismiss-notice" target="_parent">' . esc_html( $this->strings['dismiss'] ) . '</a>' : '',
|
1259 |
+
);
|
1260 |
+
|
1261 |
+
$link_template = '<a href="%2$s">%1$s</a>';
|
1262 |
+
|
1263 |
+
if ( current_user_can( 'install_plugins' ) ) {
|
1264 |
+
if ( $install_count > 0 ) {
|
1265 |
+
$action_links['install'] = sprintf(
|
1266 |
+
$link_template,
|
1267 |
+
translate_nooped_plural( $this->strings['install_link'], $install_count, 'tgmpa' ),
|
1268 |
+
esc_url( $this->get_tgmpa_status_url( 'install' ) )
|
1269 |
+
);
|
1270 |
+
}
|
1271 |
+
if ( $update_count > 0 ) {
|
1272 |
+
$action_links['update'] = sprintf(
|
1273 |
+
$link_template,
|
1274 |
+
translate_nooped_plural( $this->strings['update_link'], $update_count, 'tgmpa' ),
|
1275 |
+
esc_url( $this->get_tgmpa_status_url( 'update' ) )
|
1276 |
+
);
|
1277 |
+
}
|
1278 |
+
}
|
1279 |
+
|
1280 |
+
if ( current_user_can( 'activate_plugins' ) && $activate_count > 0 ) {
|
1281 |
+
$action_links['activate'] = sprintf(
|
1282 |
+
$link_template,
|
1283 |
+
translate_nooped_plural( $this->strings['activate_link'], $activate_count, 'tgmpa' ),
|
1284 |
+
esc_url( $this->get_tgmpa_status_url( 'activate' ) )
|
1285 |
+
);
|
1286 |
+
}
|
1287 |
+
|
1288 |
+
$action_links = apply_filters( 'tgmpa_notice_action_links', $action_links );
|
1289 |
+
|
1290 |
+
$action_links = array_filter( (array) $action_links ); // Remove any empty array items.
|
1291 |
+
|
1292 |
+
if ( ! empty( $action_links ) ) {
|
1293 |
+
$action_links = sprintf( $line_template, implode( ' | ', $action_links ) );
|
1294 |
+
return apply_filters( 'tgmpa_notice_rendered_action_links', $action_links );
|
1295 |
+
} else {
|
1296 |
+
return '';
|
1297 |
+
}
|
1298 |
+
}
|
1299 |
+
|
1300 |
+
/**
|
1301 |
+
* Get admin notice class.
|
1302 |
+
*
|
1303 |
+
* Work around all the changes to the various admin notice classes between WP 4.4 and 3.7
|
1304 |
+
* (lowest supported version by TGMPA).
|
1305 |
+
*
|
1306 |
+
* @since 2.6.0
|
1307 |
+
*
|
1308 |
+
* @return string
|
1309 |
+
*/
|
1310 |
+
protected function get_admin_notice_class() {
|
1311 |
+
if ( ! empty( $this->strings['nag_type'] ) ) {
|
1312 |
+
return sanitize_html_class( strtolower( $this->strings['nag_type'] ) );
|
1313 |
+
} else {
|
1314 |
+
if ( version_compare( $this->wp_version, '4.2', '>=' ) ) {
|
1315 |
+
return 'notice-warning';
|
1316 |
+
} elseif ( version_compare( $this->wp_version, '4.1', '>=' ) ) {
|
1317 |
+
return 'notice';
|
1318 |
+
} else {
|
1319 |
+
return 'updated';
|
1320 |
+
}
|
1321 |
+
}
|
1322 |
+
}
|
1323 |
+
|
1324 |
+
/**
|
1325 |
+
* Display settings errors and remove those which have been displayed to avoid duplicate messages showing
|
1326 |
+
*
|
1327 |
+
* @since 2.5.0
|
1328 |
+
*/
|
1329 |
+
protected function display_settings_errors() {
|
1330 |
+
global $wp_settings_errors;
|
1331 |
+
|
1332 |
+
settings_errors( 'tgmpa' );
|
1333 |
+
|
1334 |
+
foreach ( (array) $wp_settings_errors as $key => $details ) {
|
1335 |
+
if ( 'tgmpa' === $details['setting'] ) {
|
1336 |
+
unset( $wp_settings_errors[ $key ] );
|
1337 |
+
break;
|
1338 |
+
}
|
1339 |
+
}
|
1340 |
+
}
|
1341 |
+
|
1342 |
+
/**
|
1343 |
+
* Register dismissal of admin notices.
|
1344 |
+
*
|
1345 |
+
* Acts on the dismiss link in the admin nag messages.
|
1346 |
+
* If clicked, the admin notice disappears and will no longer be visible to this user.
|
1347 |
+
*
|
1348 |
+
* @since 2.1.0
|
1349 |
+
*/
|
1350 |
+
public function dismiss() {
|
1351 |
+
if ( isset( $_GET['tgmpa-dismiss'] ) && check_admin_referer( 'tgmpa-dismiss-' . get_current_user_id() ) ) {
|
1352 |
+
update_user_meta( get_current_user_id(), 'tgmpa_dismissed_notice_' . $this->id, 1 );
|
1353 |
+
}
|
1354 |
+
}
|
1355 |
+
|
1356 |
+
/**
|
1357 |
+
* Add individual plugin to our collection of plugins.
|
1358 |
+
*
|
1359 |
+
* If the required keys are not set or the plugin has already
|
1360 |
+
* been registered, the plugin is not added.
|
1361 |
+
*
|
1362 |
+
* @since 2.0.0
|
1363 |
+
*
|
1364 |
+
* @param array|null $plugin Array of plugin arguments or null if invalid argument.
|
1365 |
+
* @return null Return early if incorrect argument.
|
1366 |
+
*/
|
1367 |
+
public function register( $plugin ) {
|
1368 |
+
if ( empty( $plugin['slug'] ) || empty( $plugin['name'] ) ) {
|
1369 |
+
return;
|
1370 |
+
}
|
1371 |
+
|
1372 |
+
if ( empty( $plugin['slug'] ) || ! is_string( $plugin['slug'] ) || isset( $this->plugins[ $plugin['slug'] ] ) ) {
|
1373 |
+
return;
|
1374 |
+
}
|
1375 |
+
|
1376 |
+
$defaults = array(
|
1377 |
+
'name' => '', // String
|
1378 |
+
'slug' => '', // String
|
1379 |
+
'source' => 'repo', // String
|
1380 |
+
'required' => false, // Boolean
|
1381 |
+
'version' => '', // String
|
1382 |
+
'force_activation' => false, // Boolean
|
1383 |
+
'force_deactivation' => false, // Boolean
|
1384 |
+
'external_url' => '', // String
|
1385 |
+
'is_callable' => '', // String|Array.
|
1386 |
+
);
|
1387 |
+
|
1388 |
+
// Prepare the received data.
|
1389 |
+
$plugin = wp_parse_args( $plugin, $defaults );
|
1390 |
+
|
1391 |
+
// Standardize the received slug.
|
1392 |
+
$plugin['slug'] = $this->sanitize_key( $plugin['slug'] );
|
1393 |
+
|
1394 |
+
// Forgive users for using string versions of booleans or floats for version number.
|
1395 |
+
$plugin['version'] = (string) $plugin['version'];
|
1396 |
+
$plugin['source'] = empty( $plugin['source'] ) ? 'repo' : $plugin['source'];
|
1397 |
+
$plugin['required'] = TGMPA_Utils::validate_bool( $plugin['required'] );
|
1398 |
+
$plugin['force_activation'] = TGMPA_Utils::validate_bool( $plugin['force_activation'] );
|
1399 |
+
$plugin['force_deactivation'] = TGMPA_Utils::validate_bool( $plugin['force_deactivation'] );
|
1400 |
+
|
1401 |
+
// Enrich the received data.
|
1402 |
+
$plugin['file_path'] = $this->_get_plugin_basename_from_slug( $plugin['slug'] );
|
1403 |
+
$plugin['source_type'] = $this->get_plugin_source_type( $plugin['source'] );
|
1404 |
+
|
1405 |
+
// Set the class properties.
|
1406 |
+
$this->plugins[ $plugin['slug'] ] = $plugin;
|
1407 |
+
$this->sort_order[ $plugin['slug'] ] = $plugin['name'];
|
1408 |
+
|
1409 |
+
// Should we add the force activation hook ?
|
1410 |
+
if ( true === $plugin['force_activation'] ) {
|
1411 |
+
$this->has_forced_activation = true;
|
1412 |
+
}
|
1413 |
+
|
1414 |
+
// Should we add the force deactivation hook ?
|
1415 |
+
if ( true === $plugin['force_deactivation'] ) {
|
1416 |
+
$this->has_forced_deactivation = true;
|
1417 |
+
}
|
1418 |
+
}
|
1419 |
+
|
1420 |
+
/**
|
1421 |
+
* Determine what type of source the plugin comes from.
|
1422 |
+
*
|
1423 |
+
* @since 2.5.0
|
1424 |
+
*
|
1425 |
+
* @param string $source The source of the plugin as provided, either empty (= WP repo), a file path
|
1426 |
+
* (= bundled) or an external URL.
|
1427 |
+
* @return string 'repo', 'external', or 'bundled'
|
1428 |
+
*/
|
1429 |
+
protected function get_plugin_source_type( $source ) {
|
1430 |
+
if ( 'repo' === $source || preg_match( self::WP_REPO_REGEX, $source ) ) {
|
1431 |
+
return 'repo';
|
1432 |
+
} elseif ( preg_match( self::IS_URL_REGEX, $source ) ) {
|
1433 |
+
return 'external';
|
1434 |
+
} else {
|
1435 |
+
return 'bundled';
|
1436 |
+
}
|
1437 |
+
}
|
1438 |
+
|
1439 |
+
/**
|
1440 |
+
* Sanitizes a string key.
|
1441 |
+
*
|
1442 |
+
* Near duplicate of WP Core `sanitize_key()`. The difference is that uppercase characters *are*
|
1443 |
+
* allowed, so as not to break upgrade paths from non-standard bundled plugins using uppercase
|
1444 |
+
* characters in the plugin directory path/slug. Silly them.
|
1445 |
+
*
|
1446 |
+
* @see https://developer.wordpress.org/reference/hooks/sanitize_key/
|
1447 |
+
*
|
1448 |
+
* @since 2.5.0
|
1449 |
+
*
|
1450 |
+
* @param string $key String key.
|
1451 |
+
* @return string Sanitized key
|
1452 |
+
*/
|
1453 |
+
public function sanitize_key( $key ) {
|
1454 |
+
$raw_key = $key;
|
1455 |
+
$key = preg_replace( '`[^A-Za-z0-9_-]`', '', $key );
|
1456 |
+
|
1457 |
+
/**
|
1458 |
+
* Filter a sanitized key string.
|
1459 |
+
*
|
1460 |
+
* @since 2.5.0
|
1461 |
+
*
|
1462 |
+
* @param string $key Sanitized key.
|
1463 |
+
* @param string $raw_key The key prior to sanitization.
|
1464 |
+
*/
|
1465 |
+
return apply_filters( 'tgmpa_sanitize_key', $key, $raw_key );
|
1466 |
+
}
|
1467 |
+
|
1468 |
+
/**
|
1469 |
+
* Amend default configuration settings.
|
1470 |
+
*
|
1471 |
+
* @since 2.0.0
|
1472 |
+
*
|
1473 |
+
* @param array $config Array of config options to pass as class properties.
|
1474 |
+
*/
|
1475 |
+
public function config( $config ) {
|
1476 |
+
$keys = array(
|
1477 |
+
'id',
|
1478 |
+
'default_path',
|
1479 |
+
'has_notices',
|
1480 |
+
'dismissable',
|
1481 |
+
'dismiss_msg',
|
1482 |
+
'menu',
|
1483 |
+
'parent_slug',
|
1484 |
+
'capability',
|
1485 |
+
'is_automatic',
|
1486 |
+
'message',
|
1487 |
+
'strings',
|
1488 |
+
);
|
1489 |
+
|
1490 |
+
foreach ( $keys as $key ) {
|
1491 |
+
if ( isset( $config[ $key ] ) ) {
|
1492 |
+
if ( is_array( $config[ $key ] ) ) {
|
1493 |
+
$this->$key = array_merge( $this->$key, $config[ $key ] );
|
1494 |
+
} else {
|
1495 |
+
$this->$key = $config[ $key ];
|
1496 |
+
}
|
1497 |
+
}
|
1498 |
+
}
|
1499 |
+
}
|
1500 |
+
|
1501 |
+
/**
|
1502 |
+
* Amend action link after plugin installation.
|
1503 |
+
*
|
1504 |
+
* @since 2.0.0
|
1505 |
+
*
|
1506 |
+
* @param array $install_actions Existing array of actions.
|
1507 |
+
* @return false|array Amended array of actions.
|
1508 |
+
*/
|
1509 |
+
public function actions( $install_actions ) {
|
1510 |
+
// Remove action links on the TGMPA install page.
|
1511 |
+
if ( $this->is_tgmpa_page() ) {
|
1512 |
+
return false;
|
1513 |
+
}
|
1514 |
+
|
1515 |
+
return $install_actions;
|
1516 |
+
}
|
1517 |
+
|
1518 |
+
/**
|
1519 |
+
* Flushes the plugins cache on theme switch to prevent stale entries
|
1520 |
+
* from remaining in the plugin table.
|
1521 |
+
*
|
1522 |
+
* @since 2.4.0
|
1523 |
+
*
|
1524 |
+
* @param bool $clear_update_cache Optional. Whether to clear the Plugin updates cache.
|
1525 |
+
* Parameter added in v2.5.0.
|
1526 |
+
*/
|
1527 |
+
public function flush_plugins_cache( $clear_update_cache = true ) {
|
1528 |
+
wp_clean_plugins_cache( $clear_update_cache );
|
1529 |
+
}
|
1530 |
+
|
1531 |
+
/**
|
1532 |
+
* Set file_path key for each installed plugin.
|
1533 |
+
*
|
1534 |
+
* @since 2.1.0
|
1535 |
+
*
|
1536 |
+
* @param string $plugin_slug Optional. If set, only (re-)populates the file path for that specific plugin.
|
1537 |
+
* Parameter added in v2.5.0.
|
1538 |
+
*/
|
1539 |
+
public function populate_file_path( $plugin_slug = '' ) {
|
1540 |
+
if ( ! empty( $plugin_slug ) && is_string( $plugin_slug ) && isset( $this->plugins[ $plugin_slug ] ) ) {
|
1541 |
+
$this->plugins[ $plugin_slug ]['file_path'] = $this->_get_plugin_basename_from_slug( $plugin_slug );
|
1542 |
+
} else {
|
1543 |
+
// Add file_path key for all plugins.
|
1544 |
+
foreach ( $this->plugins as $slug => $values ) {
|
1545 |
+
$this->plugins[ $slug ]['file_path'] = $this->_get_plugin_basename_from_slug( $slug );
|
1546 |
+
}
|
1547 |
+
}
|
1548 |
+
}
|
1549 |
+
|
1550 |
+
/**
|
1551 |
+
* Helper function to extract the file path of the plugin file from the
|
1552 |
+
* plugin slug, if the plugin is installed.
|
1553 |
+
*
|
1554 |
+
* @since 2.0.0
|
1555 |
+
*
|
1556 |
+
* @param string $slug Plugin slug (typically folder name) as provided by the developer.
|
1557 |
+
* @return string Either file path for plugin if installed, or just the plugin slug.
|
1558 |
+
*/
|
1559 |
+
protected function _get_plugin_basename_from_slug( $slug ) {
|
1560 |
+
$keys = array_keys( $this->get_plugins() );
|
1561 |
+
|
1562 |
+
foreach ( $keys as $key ) {
|
1563 |
+
if ( preg_match( '|^' . $slug . '/|', $key ) ) {
|
1564 |
+
return $key;
|
1565 |
+
}
|
1566 |
+
}
|
1567 |
+
|
1568 |
+
return $slug;
|
1569 |
+
}
|
1570 |
+
|
1571 |
+
/**
|
1572 |
+
* Retrieve plugin data, given the plugin name.
|
1573 |
+
*
|
1574 |
+
* Loops through the registered plugins looking for $name. If it finds it,
|
1575 |
+
* it returns the $data from that plugin. Otherwise, returns false.
|
1576 |
+
*
|
1577 |
+
* @since 2.1.0
|
1578 |
+
*
|
1579 |
+
* @param string $name Name of the plugin, as it was registered.
|
1580 |
+
* @param string $data Optional. Array key of plugin data to return. Default is slug.
|
1581 |
+
* @return string|boolean Plugin slug if found, false otherwise.
|
1582 |
+
*/
|
1583 |
+
public function _get_plugin_data_from_name( $name, $data = 'slug' ) {
|
1584 |
+
foreach ( $this->plugins as $values ) {
|
1585 |
+
if ( $name === $values['name'] && isset( $values[ $data ] ) ) {
|
1586 |
+
return $values[ $data ];
|
1587 |
+
}
|
1588 |
+
}
|
1589 |
+
|
1590 |
+
return false;
|
1591 |
+
}
|
1592 |
+
|
1593 |
+
/**
|
1594 |
+
* Retrieve the download URL for a package.
|
1595 |
+
*
|
1596 |
+
* @since 2.5.0
|
1597 |
+
*
|
1598 |
+
* @param string $slug Plugin slug.
|
1599 |
+
* @return string Plugin download URL or path to local file or empty string if undetermined.
|
1600 |
+
*/
|
1601 |
+
public function get_download_url( $slug ) {
|
1602 |
+
$dl_source = '';
|
1603 |
+
|
1604 |
+
switch ( $this->plugins[ $slug ]['source_type'] ) {
|
1605 |
+
case 'repo':
|
1606 |
+
return $this->get_wp_repo_download_url( $slug );
|
1607 |
+
case 'external':
|
1608 |
+
return $this->plugins[ $slug ]['source'];
|
1609 |
+
case 'bundled':
|
1610 |
+
return $this->default_path . $this->plugins[ $slug ]['source'];
|
1611 |
+
}
|
1612 |
+
|
1613 |
+
return $dl_source; // Should never happen.
|
1614 |
+
}
|
1615 |
+
|
1616 |
+
/**
|
1617 |
+
* Retrieve the download URL for a WP repo package.
|
1618 |
+
*
|
1619 |
+
* @since 2.5.0
|
1620 |
+
*
|
1621 |
+
* @param string $slug Plugin slug.
|
1622 |
+
* @return string Plugin download URL.
|
1623 |
+
*/
|
1624 |
+
protected function get_wp_repo_download_url( $slug ) {
|
1625 |
+
$source = '';
|
1626 |
+
$api = $this->get_plugins_api( $slug );
|
1627 |
+
|
1628 |
+
if ( false !== $api && isset( $api->download_link ) ) {
|
1629 |
+
$source = $api->download_link;
|
1630 |
+
}
|
1631 |
+
|
1632 |
+
return $source;
|
1633 |
+
}
|
1634 |
+
|
1635 |
+
/**
|
1636 |
+
* Try to grab information from WordPress API.
|
1637 |
+
*
|
1638 |
+
* @since 2.5.0
|
1639 |
+
*
|
1640 |
+
* @param string $slug Plugin slug.
|
1641 |
+
* @return object Plugins_api response object on success, WP_Error on failure.
|
1642 |
+
*/
|
1643 |
+
protected function get_plugins_api( $slug ) {
|
1644 |
+
static $api = array(); // Cache received responses.
|
1645 |
+
|
1646 |
+
if ( ! isset( $api[ $slug ] ) ) {
|
1647 |
+
if ( ! function_exists( 'plugins_api' ) ) {
|
1648 |
+
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
|
1649 |
+
}
|
1650 |
+
|
1651 |
+
$response = plugins_api( 'plugin_information', array( 'slug' => $slug, 'fields' => array( 'sections' => false ) ) );
|
1652 |
+
|
1653 |
+
$api[ $slug ] = false;
|
1654 |
+
|
1655 |
+
if ( is_wp_error( $response ) ) {
|
1656 |
+
wp_die( esc_html( $this->strings['oops'] ) );
|
1657 |
+
} else {
|
1658 |
+
$api[ $slug ] = $response;
|
1659 |
+
}
|
1660 |
+
}
|
1661 |
+
|
1662 |
+
return $api[ $slug ];
|
1663 |
+
}
|
1664 |
+
|
1665 |
+
/**
|
1666 |
+
* Retrieve a link to a plugin information page.
|
1667 |
+
*
|
1668 |
+
* @since 2.5.0
|
1669 |
+
*
|
1670 |
+
* @param string $slug Plugin slug.
|
1671 |
+
* @return string Fully formed html link to a plugin information page if available
|
1672 |
+
* or the plugin name if not.
|
1673 |
+
*/
|
1674 |
+
public function get_info_link( $slug ) {
|
1675 |
+
if ( ! empty( $this->plugins[ $slug ]['external_url'] ) && preg_match( self::IS_URL_REGEX, $this->plugins[ $slug ]['external_url'] ) ) {
|
1676 |
+
$link = sprintf(
|
1677 |
+
'<a href="%1$s" target="_blank">%2$s</a>',
|
1678 |
+
esc_url( $this->plugins[ $slug ]['external_url'] ),
|
1679 |
+
esc_html( $this->plugins[ $slug ]['name'] )
|
1680 |
+
);
|
1681 |
+
} elseif ( 'repo' === $this->plugins[ $slug ]['source_type'] ) {
|
1682 |
+
$url = add_query_arg(
|
1683 |
+
array(
|
1684 |
+
'tab' => 'plugin-information',
|
1685 |
+
'plugin' => urlencode( $slug ),
|
1686 |
+
'TB_iframe' => 'true',
|
1687 |
+
'width' => '640',
|
1688 |
+
'height' => '500',
|
1689 |
+
),
|
1690 |
+
self_admin_url( 'plugin-install.php' )
|
1691 |
+
);
|
1692 |
+
|
1693 |
+
$link = sprintf(
|
1694 |
+
'<a href="%1$s" class="thickbox">%2$s</a>',
|
1695 |
+
esc_url( $url ),
|
1696 |
+
esc_html( $this->plugins[ $slug ]['name'] )
|
1697 |
+
);
|
1698 |
+
} else {
|
1699 |
+
$link = esc_html( $this->plugins[ $slug ]['name'] ); // No hyperlink.
|
1700 |
+
}
|
1701 |
+
|
1702 |
+
return $link;
|
1703 |
+
}
|
1704 |
+
|
1705 |
+
/**
|
1706 |
+
* Determine if we're on the TGMPA Install page.
|
1707 |
+
*
|
1708 |
+
* @since 2.1.0
|
1709 |
+
*
|
1710 |
+
* @return boolean True when on the TGMPA page, false otherwise.
|
1711 |
+
*/
|
1712 |
+
protected function is_tgmpa_page() {
|
1713 |
+
return isset( $_GET['page'] ) && $this->menu === $_GET['page'];
|
1714 |
+
}
|
1715 |
+
|
1716 |
+
/**
|
1717 |
+
* Determine if we're on a WP Core installation/upgrade page.
|
1718 |
+
*
|
1719 |
+
* @since 2.6.0
|
1720 |
+
*
|
1721 |
+
* @return boolean True when on a WP Core installation/upgrade page, false otherwise.
|
1722 |
+
*/
|
1723 |
+
protected function is_core_update_page() {
|
1724 |
+
// Current screen is not always available, most notably on the customizer screen.
|
1725 |
+
if ( ! function_exists( 'get_current_screen' ) ) {
|
1726 |
+
return false;
|
1727 |
+
}
|
1728 |
+
|
1729 |
+
$screen = get_current_screen();
|
1730 |
+
|
1731 |
+
if ( 'update-core' === $screen->base ) {
|
1732 |
+
// Core update screen.
|
1733 |
+
return true;
|
1734 |
+
} elseif ( 'plugins' === $screen->base && ! empty( $_POST['action'] ) ) { // WPCS: CSRF ok.
|
1735 |
+
// Plugins bulk update screen.
|
1736 |
+
return true;
|
1737 |
+
} elseif ( 'update' === $screen->base && ! empty( $_POST['action'] ) ) { // WPCS: CSRF ok.
|
1738 |
+
// Individual updates (ajax call).
|
1739 |
+
return true;
|
1740 |
+
}
|
1741 |
+
|
1742 |
+
return false;
|
1743 |
+
}
|
1744 |
+
|
1745 |
+
/**
|
1746 |
+
* Retrieve the URL to the TGMPA Install page.
|
1747 |
+
*
|
1748 |
+
* I.e. depending on the config settings passed something along the lines of:
|
1749 |
+
* http://example.com/wp-admin/themes.php?page=tgmpa-install-plugins
|
1750 |
+
*
|
1751 |
+
* @since 2.5.0
|
1752 |
+
*
|
1753 |
+
* @return string Properly encoded URL (not escaped).
|
1754 |
+
*/
|
1755 |
+
public function get_tgmpa_url() {
|
1756 |
+
static $url;
|
1757 |
+
|
1758 |
+
if ( ! isset( $url ) ) {
|
1759 |
+
$parent = $this->parent_slug;
|
1760 |
+
if ( false === strpos( $parent, '.php' ) ) {
|
1761 |
+
$parent = 'admin.php';
|
1762 |
+
}
|
1763 |
+
$url = add_query_arg(
|
1764 |
+
array(
|
1765 |
+
'page' => urlencode( $this->menu ),
|
1766 |
+
),
|
1767 |
+
self_admin_url( $parent )
|
1768 |
+
);
|
1769 |
+
}
|
1770 |
+
|
1771 |
+
return $url;
|
1772 |
+
}
|
1773 |
+
|
1774 |
+
/**
|
1775 |
+
* Retrieve the URL to the TGMPA Install page for a specific plugin status (view).
|
1776 |
+
*
|
1777 |
+
* I.e. depending on the config settings passed something along the lines of:
|
1778 |
+
* http://example.com/wp-admin/themes.php?page=tgmpa-install-plugins&plugin_status=install
|
1779 |
+
*
|
1780 |
+
* @since 2.5.0
|
1781 |
+
*
|
1782 |
+
* @param string $status Plugin status - either 'install', 'update' or 'activate'.
|
1783 |
+
* @return string Properly encoded URL (not escaped).
|
1784 |
+
*/
|
1785 |
+
public function get_tgmpa_status_url( $status ) {
|
1786 |
+
return add_query_arg(
|
1787 |
+
array(
|
1788 |
+
'plugin_status' => urlencode( $status ),
|
1789 |
+
),
|
1790 |
+
$this->get_tgmpa_url()
|
1791 |
+
);
|
1792 |
+
}
|
1793 |
+
|
1794 |
+
/**
|
1795 |
+
* Determine whether there are open actions for plugins registered with TGMPA.
|
1796 |
+
*
|
1797 |
+
* @since 2.5.0
|
1798 |
+
*
|
1799 |
+
* @return bool True if complete, i.e. no outstanding actions. False otherwise.
|
1800 |
+
*/
|
1801 |
+
public function is_tgmpa_complete() {
|
1802 |
+
$complete = true;
|
1803 |
+
foreach ( $this->plugins as $slug => $plugin ) {
|
1804 |
+
if ( ! $this->is_plugin_active( $slug ) || false !== $this->does_plugin_have_update( $slug ) ) {
|
1805 |
+
$complete = false;
|
1806 |
+
break;
|
1807 |
+
}
|
1808 |
+
}
|
1809 |
+
|
1810 |
+
return $complete;
|
1811 |
+
}
|
1812 |
+
|
1813 |
+
/**
|
1814 |
+
* Check if a plugin is installed. Does not take must-use plugins into account.
|
1815 |
+
*
|
1816 |
+
* @since 2.5.0
|
1817 |
+
*
|
1818 |
+
* @param string $slug Plugin slug.
|
1819 |
+
* @return bool True if installed, false otherwise.
|
1820 |
+
*/
|
1821 |
+
public function is_plugin_installed( $slug ) {
|
1822 |
+
$installed_plugins = $this->get_plugins(); // Retrieve a list of all installed plugins (WP cached).
|
1823 |
+
|
1824 |
+
return ( ! empty( $installed_plugins[ $this->plugins[ $slug ]['file_path'] ] ) );
|
1825 |
+
}
|
1826 |
+
|
1827 |
+
/**
|
1828 |
+
* Check if a plugin is active.
|
1829 |
+
*
|
1830 |
+
* @since 2.5.0
|
1831 |
+
*
|
1832 |
+
* @param string $slug Plugin slug.
|
1833 |
+
* @return bool True if active, false otherwise.
|
1834 |
+
*/
|
1835 |
+
public function is_plugin_active( $slug ) {
|
1836 |
+
return ( ( ! empty( $this->plugins[ $slug ]['is_callable'] ) && is_callable( $this->plugins[ $slug ]['is_callable'] ) ) || is_plugin_active( $this->plugins[ $slug ]['file_path'] ) );
|
1837 |
+
}
|
1838 |
+
|
1839 |
+
/**
|
1840 |
+
* Check if a plugin can be updated, i.e. if we have information on the minimum WP version required
|
1841 |
+
* available, check whether the current install meets them.
|
1842 |
+
*
|
1843 |
+
* @since 2.5.0
|
1844 |
+
*
|
1845 |
+
* @param string $slug Plugin slug.
|
1846 |
+
* @return bool True if OK to update, false otherwise.
|
1847 |
+
*/
|
1848 |
+
public function can_plugin_update( $slug ) {
|
1849 |
+
// We currently can't get reliable info on non-WP-repo plugins - issue #380.
|
1850 |
+
if ( 'repo' !== $this->plugins[ $slug ]['source_type'] ) {
|
1851 |
+
return true;
|
1852 |
+
}
|
1853 |
+
|
1854 |
+
$api = $this->get_plugins_api( $slug );
|
1855 |
+
|
1856 |
+
if ( false !== $api && isset( $api->requires ) ) {
|
1857 |
+
return version_compare( $this->wp_version, $api->requires, '>=' );
|
1858 |
+
}
|
1859 |
+
|
1860 |
+
// No usable info received from the plugins API, presume we can update.
|
1861 |
+
return true;
|
1862 |
+
}
|
1863 |
+
|
1864 |
+
/**
|
1865 |
+
* Check to see if the plugin is 'updatetable', i.e. installed, with an update available
|
1866 |
+
* and no WP version requirements blocking it.
|
1867 |
+
*
|
1868 |
+
* @since 2.6.0
|
1869 |
+
*
|
1870 |
+
* @param string $slug Plugin slug.
|
1871 |
+
* @return bool True if OK to proceed with update, false otherwise.
|
1872 |
+
*/
|
1873 |
+
public function is_plugin_updatetable( $slug ) {
|
1874 |
+
if ( ! $this->is_plugin_installed( $slug ) ) {
|
1875 |
+
return false;
|
1876 |
+
} else {
|
1877 |
+
return ( false !== $this->does_plugin_have_update( $slug ) && $this->can_plugin_update( $slug ) );
|
1878 |
+
}
|
1879 |
+
}
|
1880 |
+
|
1881 |
+
/**
|
1882 |
+
* Check if a plugin can be activated, i.e. is not currently active and meets the minimum
|
1883 |
+
* plugin version requirements set in TGMPA (if any).
|
1884 |
+
*
|
1885 |
+
* @since 2.5.0
|
1886 |
+
*
|
1887 |
+
* @param string $slug Plugin slug.
|
1888 |
+
* @return bool True if OK to activate, false otherwise.
|
1889 |
+
*/
|
1890 |
+
public function can_plugin_activate( $slug ) {
|
1891 |
+
return ( ! $this->is_plugin_active( $slug ) && ! $this->does_plugin_require_update( $slug ) );
|
1892 |
+
}
|
1893 |
+
|
1894 |
+
/**
|
1895 |
+
* Retrieve the version number of an installed plugin.
|
1896 |
+
*
|
1897 |
+
* @since 2.5.0
|
1898 |
+
*
|
1899 |
+
* @param string $slug Plugin slug.
|
1900 |
+
* @return string Version number as string or an empty string if the plugin is not installed
|
1901 |
+
* or version unknown (plugins which don't comply with the plugin header standard).
|
1902 |
+
*/
|
1903 |
+
public function get_installed_version( $slug ) {
|
1904 |
+
$installed_plugins = $this->get_plugins(); // Retrieve a list of all installed plugins (WP cached).
|
1905 |
+
|
1906 |
+
if ( ! empty( $installed_plugins[ $this->plugins[ $slug ]['file_path'] ]['Version'] ) ) {
|
1907 |
+
return $installed_plugins[ $this->plugins[ $slug ]['file_path'] ]['Version'];
|
1908 |
+
}
|
1909 |
+
|
1910 |
+
return '';
|
1911 |
+
}
|
1912 |
+
|
1913 |
+
/**
|
1914 |
+
* Check whether a plugin complies with the minimum version requirements.
|
1915 |
+
*
|
1916 |
+
* @since 2.5.0
|
1917 |
+
*
|
1918 |
+
* @param string $slug Plugin slug.
|
1919 |
+
* @return bool True when a plugin needs to be updated, otherwise false.
|
1920 |
+
*/
|
1921 |
+
public function does_plugin_require_update( $slug ) {
|
1922 |
+
$installed_version = $this->get_installed_version( $slug );
|
1923 |
+
$minimum_version = $this->plugins[ $slug ]['version'];
|
1924 |
+
|
1925 |
+
return version_compare( $minimum_version, $installed_version, '>' );
|
1926 |
+
}
|
1927 |
+
|
1928 |
+
/**
|
1929 |
+
* Check whether there is an update available for a plugin.
|
1930 |
+
*
|
1931 |
+
* @since 2.5.0
|
1932 |
+
*
|
1933 |
+
* @param string $slug Plugin slug.
|
1934 |
+
* @return false|string Version number string of the available update or false if no update available.
|
1935 |
+
*/
|
1936 |
+
public function does_plugin_have_update( $slug ) {
|
1937 |
+
// Presume bundled and external plugins will point to a package which meets the minimum required version.
|
1938 |
+
if ( 'repo' !== $this->plugins[ $slug ]['source_type'] ) {
|
1939 |
+
if ( $this->does_plugin_require_update( $slug ) ) {
|
1940 |
+
return $this->plugins[ $slug ]['version'];
|
1941 |
+
}
|
1942 |
+
|
1943 |
+
return false;
|
1944 |
+
}
|
1945 |
+
|
1946 |
+
$repo_updates = get_site_transient( 'update_plugins' );
|
1947 |
+
|
1948 |
+
if ( isset( $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->new_version ) ) {
|
1949 |
+
return $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->new_version;
|
1950 |
+
}
|
1951 |
+
|
1952 |
+
return false;
|
1953 |
+
}
|
1954 |
+
|
1955 |
+
/**
|
1956 |
+
* Retrieve potential upgrade notice for a plugin.
|
1957 |
+
*
|
1958 |
+
* @since 2.5.0
|
1959 |
+
*
|
1960 |
+
* @param string $slug Plugin slug.
|
1961 |
+
* @return string The upgrade notice or an empty string if no message was available or provided.
|
1962 |
+
*/
|
1963 |
+
public function get_upgrade_notice( $slug ) {
|
1964 |
+
// We currently can't get reliable info on non-WP-repo plugins - issue #380.
|
1965 |
+
if ( 'repo' !== $this->plugins[ $slug ]['source_type'] ) {
|
1966 |
+
return '';
|
1967 |
+
}
|
1968 |
+
|
1969 |
+
$repo_updates = get_site_transient( 'update_plugins' );
|
1970 |
+
|
1971 |
+
if ( ! empty( $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->upgrade_notice ) ) {
|
1972 |
+
return $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->upgrade_notice;
|
1973 |
+
}
|
1974 |
+
|
1975 |
+
return '';
|
1976 |
+
}
|
1977 |
+
|
1978 |
+
/**
|
1979 |
+
* Wrapper around the core WP get_plugins function, making sure it's actually available.
|
1980 |
+
*
|
1981 |
+
* @since 2.5.0
|
1982 |
+
*
|
1983 |
+
* @param string $plugin_folder Optional. Relative path to single plugin folder.
|
1984 |
+
* @return array Array of installed plugins with plugin information.
|
1985 |
+
*/
|
1986 |
+
public function get_plugins( $plugin_folder = '' ) {
|
1987 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
1988 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
1989 |
+
}
|
1990 |
+
|
1991 |
+
return get_plugins( $plugin_folder );
|
1992 |
+
}
|
1993 |
+
|
1994 |
+
/**
|
1995 |
+
* Delete dismissable nag option when theme is switched.
|
1996 |
+
*
|
1997 |
+
* This ensures that the user(s) is/are again reminded via nag of required
|
1998 |
+
* and/or recommended plugins if they re-activate the theme.
|
1999 |
+
*
|
2000 |
+
* @since 2.1.1
|
2001 |
+
*/
|
2002 |
+
public function update_dismiss() {
|
2003 |
+
delete_metadata( 'user', null, 'tgmpa_dismissed_notice_' . $this->id, null, true );
|
2004 |
+
}
|
2005 |
+
|
2006 |
+
/**
|
2007 |
+
* Forces plugin activation if the parameter 'force_activation' is
|
2008 |
+
* set to true.
|
2009 |
+
*
|
2010 |
+
* This allows theme authors to specify certain plugins that must be
|
2011 |
+
* active at all times while using the current theme.
|
2012 |
+
*
|
2013 |
+
* Please take special care when using this parameter as it has the
|
2014 |
+
* potential to be harmful if not used correctly. Setting this parameter
|
2015 |
+
* to true will not allow the specified plugin to be deactivated unless
|
2016 |
+
* the user switches themes.
|
2017 |
+
*
|
2018 |
+
* @since 2.2.0
|
2019 |
+
*/
|
2020 |
+
public function force_activation() {
|
2021 |
+
foreach ( $this->plugins as $slug => $plugin ) {
|
2022 |
+
if ( true === $plugin['force_activation'] ) {
|
2023 |
+
if ( ! $this->is_plugin_installed( $slug ) ) {
|
2024 |
+
// Oops, plugin isn't there so iterate to next condition.
|
2025 |
+
continue;
|
2026 |
+
} elseif ( $this->can_plugin_activate( $slug ) ) {
|
2027 |
+
// There we go, activate the plugin.
|
2028 |
+
activate_plugin( $plugin['file_path'] );
|
2029 |
+
}
|
2030 |
+
}
|
2031 |
+
}
|
2032 |
+
}
|
2033 |
+
|
2034 |
+
/**
|
2035 |
+
* Forces plugin deactivation if the parameter 'force_deactivation'
|
2036 |
+
* is set to true and adds the plugin to the 'recently active' plugins list.
|
2037 |
+
*
|
2038 |
+
* This allows theme authors to specify certain plugins that must be
|
2039 |
+
* deactivated upon switching from the current theme to another.
|
2040 |
+
*
|
2041 |
+
* Please take special care when using this parameter as it has the
|
2042 |
+
* potential to be harmful if not used correctly.
|
2043 |
+
*
|
2044 |
+
* @since 2.2.0
|
2045 |
+
*/
|
2046 |
+
public function force_deactivation() {
|
2047 |
+
$deactivated = array();
|
2048 |
+
|
2049 |
+
foreach ( $this->plugins as $slug => $plugin ) {
|
2050 |
+
/*
|
2051 |
+
* Only proceed forward if the parameter is set to true and plugin is active
|
2052 |
+
* as a 'normal' (not must-use) plugin.
|
2053 |
+
*/
|
2054 |
+
if ( true === $plugin['force_deactivation'] && is_plugin_active( $plugin['file_path'] ) ) {
|
2055 |
+
deactivate_plugins( $plugin['file_path'] );
|
2056 |
+
$deactivated[ $plugin['file_path'] ] = time();
|
2057 |
+
}
|
2058 |
+
}
|
2059 |
+
|
2060 |
+
if ( ! empty( $deactivated ) ) {
|
2061 |
+
update_option( 'recently_activated', $deactivated + (array) get_option( 'recently_activated' ) );
|
2062 |
+
}
|
2063 |
+
}
|
2064 |
+
|
2065 |
+
/**
|
2066 |
+
* Echo the current TGMPA version number to the page.
|
2067 |
+
*
|
2068 |
+
* @since 2.5.0
|
2069 |
+
*/
|
2070 |
+
public function show_tgmpa_version() {
|
2071 |
+
echo '<p style="float: right; padding: 0em 1.5em 0.5em 0;"><strong><small>',
|
2072 |
+
esc_html(
|
2073 |
+
sprintf(
|
2074 |
+
/* translators: %s: version number */
|
2075 |
+
__( 'TGMPA v%s', 'tgmpa' ),
|
2076 |
+
self::TGMPA_VERSION
|
2077 |
+
)
|
2078 |
+
),
|
2079 |
+
'</small></strong></p>';
|
2080 |
+
}
|
2081 |
+
|
2082 |
+
/**
|
2083 |
+
* Returns the singleton instance of the class.
|
2084 |
+
*
|
2085 |
+
* @since 2.4.0
|
2086 |
+
*
|
2087 |
+
* @return \TGM_Plugin_Activation The TGM_Plugin_Activation object.
|
2088 |
+
*/
|
2089 |
+
public static function get_instance() {
|
2090 |
+
if ( ! isset( self::$instance ) && ! ( self::$instance instanceof self ) ) {
|
2091 |
+
self::$instance = new self();
|
2092 |
+
}
|
2093 |
+
|
2094 |
+
return self::$instance;
|
2095 |
+
}
|
2096 |
+
}
|
2097 |
+
|
2098 |
+
if ( ! function_exists( 'load_tgm_plugin_activation' ) ) {
|
2099 |
+
/**
|
2100 |
+
* Ensure only one instance of the class is ever invoked.
|
2101 |
+
*
|
2102 |
+
* @since 2.5.0
|
2103 |
+
*/
|
2104 |
+
function load_tgm_plugin_activation() {
|
2105 |
+
$GLOBALS['tgmpa'] = TGM_Plugin_Activation::get_instance();
|
2106 |
+
}
|
2107 |
+
}
|
2108 |
+
|
2109 |
+
if ( did_action( 'plugins_loaded' ) ) {
|
2110 |
+
load_tgm_plugin_activation();
|
2111 |
+
} else {
|
2112 |
+
add_action( 'plugins_loaded', 'load_tgm_plugin_activation' );
|
2113 |
+
}
|
2114 |
+
}
|
2115 |
+
|
2116 |
+
if ( ! function_exists( 'tgmpa' ) ) {
|
2117 |
+
/**
|
2118 |
+
* Helper function to register a collection of required plugins.
|
2119 |
+
*
|
2120 |
+
* @since 2.0.0
|
2121 |
+
* @api
|
2122 |
+
*
|
2123 |
+
* @param array $plugins An array of plugin arrays.
|
2124 |
+
* @param array $config Optional. An array of configuration values.
|
2125 |
+
*/
|
2126 |
+
function tgmpa( $plugins, $config = array() ) {
|
2127 |
+
$instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) );
|
2128 |
+
|
2129 |
+
foreach ( $plugins as $plugin ) {
|
2130 |
+
call_user_func( array( $instance, 'register' ), $plugin );
|
2131 |
+
}
|
2132 |
+
|
2133 |
+
if ( ! empty( $config ) && is_array( $config ) ) {
|
2134 |
+
// Send out notices for deprecated arguments passed.
|
2135 |
+
if ( isset( $config['notices'] ) ) {
|
2136 |
+
_deprecated_argument( __FUNCTION__, '2.2.0', 'The `notices` config parameter was renamed to `has_notices` in TGMPA 2.2.0. Please adjust your configuration.' );
|
2137 |
+
if ( ! isset( $config['has_notices'] ) ) {
|
2138 |
+
$config['has_notices'] = $config['notices'];
|
2139 |
+
}
|
2140 |
+
}
|
2141 |
+
|
2142 |
+
if ( isset( $config['parent_menu_slug'] ) ) {
|
2143 |
+
_deprecated_argument( __FUNCTION__, '2.4.0', 'The `parent_menu_slug` config parameter was removed in TGMPA 2.4.0. In TGMPA 2.5.0 an alternative was (re-)introduced. Please adjust your configuration. For more information visit the website: http://tgmpluginactivation.com/configuration/#h-configuration-options.' );
|
2144 |
+
}
|
2145 |
+
if ( isset( $config['parent_url_slug'] ) ) {
|
2146 |
+
_deprecated_argument( __FUNCTION__, '2.4.0', 'The `parent_url_slug` config parameter was removed in TGMPA 2.4.0. In TGMPA 2.5.0 an alternative was (re-)introduced. Please adjust your configuration. For more information visit the website: http://tgmpluginactivation.com/configuration/#h-configuration-options.' );
|
2147 |
+
}
|
2148 |
+
|
2149 |
+
call_user_func( array( $instance, 'config' ), $config );
|
2150 |
+
}
|
2151 |
+
}
|
2152 |
+
}
|
2153 |
+
|
2154 |
+
/**
|
2155 |
+
* WP_List_Table isn't always available. If it isn't available,
|
2156 |
+
* we load it here.
|
2157 |
+
*
|
2158 |
+
* @since 2.2.0
|
2159 |
+
*/
|
2160 |
+
if ( ! class_exists( 'WP_List_Table' ) ) {
|
2161 |
+
require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
|
2162 |
+
}
|
2163 |
+
|
2164 |
+
if ( ! class_exists( 'TGMPA_List_Table' ) ) {
|
2165 |
+
|
2166 |
+
/**
|
2167 |
+
* List table class for handling plugins.
|
2168 |
+
*
|
2169 |
+
* Extends the WP_List_Table class to provide a future-compatible
|
2170 |
+
* way of listing out all required/recommended plugins.
|
2171 |
+
*
|
2172 |
+
* Gives users an interface similar to the Plugin Administration
|
2173 |
+
* area with similar (albeit stripped down) capabilities.
|
2174 |
+
*
|
2175 |
+
* This class also allows for the bulk install of plugins.
|
2176 |
+
*
|
2177 |
+
* @since 2.2.0
|
2178 |
+
*
|
2179 |
+
* @package TGM-Plugin-Activation
|
2180 |
+
* @author Thomas Griffin
|
2181 |
+
* @author Gary Jones
|
2182 |
+
*/
|
2183 |
+
class TGMPA_List_Table extends WP_List_Table {
|
2184 |
+
/**
|
2185 |
+
* TGMPA instance.
|
2186 |
+
*
|
2187 |
+
* @since 2.5.0
|
2188 |
+
*
|
2189 |
+
* @var object
|
2190 |
+
*/
|
2191 |
+
protected $tgmpa;
|
2192 |
+
|
2193 |
+
/**
|
2194 |
+
* The currently chosen view.
|
2195 |
+
*
|
2196 |
+
* @since 2.5.0
|
2197 |
+
*
|
2198 |
+
* @var string One of: 'all', 'install', 'update', 'activate'
|
2199 |
+
*/
|
2200 |
+
public $view_context = 'all';
|
2201 |
+
|
2202 |
+
/**
|
2203 |
+
* The plugin counts for the various views.
|
2204 |
+
*
|
2205 |
+
* @since 2.5.0
|
2206 |
+
*
|
2207 |
+
* @var array
|
2208 |
+
*/
|
2209 |
+
protected $view_totals = array(
|
2210 |
+
'all' => 0,
|
2211 |
+
'install' => 0,
|
2212 |
+
'update' => 0,
|
2213 |
+
'activate' => 0,
|
2214 |
+
);
|
2215 |
+
|
2216 |
+
/**
|
2217 |
+
* References parent constructor and sets defaults for class.
|
2218 |
+
*
|
2219 |
+
* @since 2.2.0
|
2220 |
+
*/
|
2221 |
+
public function __construct() {
|
2222 |
+
$this->tgmpa = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) );
|
2223 |
+
|
2224 |
+
parent::__construct(
|
2225 |
+
array(
|
2226 |
+
'singular' => 'plugin',
|
2227 |
+
'plural' => 'plugins',
|
2228 |
+
'ajax' => false,
|
2229 |
+
)
|
2230 |
+
);
|
2231 |
+
|
2232 |
+
if ( isset( $_REQUEST['plugin_status'] ) && in_array( $_REQUEST['plugin_status'], array( 'install', 'update', 'activate' ), true ) ) {
|
2233 |
+
$this->view_context = sanitize_key( $_REQUEST['plugin_status'] );
|
2234 |
+
}
|
2235 |
+
|
2236 |
+
add_filter( 'tgmpa_table_data_items', array( $this, 'sort_table_items' ) );
|
2237 |
+
}
|
2238 |
+
|
2239 |
+
/**
|
2240 |
+
* Get a list of CSS classes for the <table> tag.
|
2241 |
+
*
|
2242 |
+
* Overruled to prevent the 'plural' argument from being added.
|
2243 |
+
*
|
2244 |
+
* @since 2.5.0
|
2245 |
+
*
|
2246 |
+
* @return array CSS classnames.
|
2247 |
+
*/
|
2248 |
+
public function get_table_classes() {
|
2249 |
+
return array( 'widefat', 'fixed' );
|
2250 |
+
}
|
2251 |
+
|
2252 |
+
/**
|
2253 |
+
* Gathers and renames all of our plugin information to be used by WP_List_Table to create our table.
|
2254 |
+
*
|
2255 |
+
* @since 2.2.0
|
2256 |
+
*
|
2257 |
+
* @return array $table_data Information for use in table.
|
2258 |
+
*/
|
2259 |
+
protected function _gather_plugin_data() {
|
2260 |
+
// Load thickbox for plugin links.
|
2261 |
+
$this->tgmpa->admin_init();
|
2262 |
+
$this->tgmpa->thickbox();
|
2263 |
+
|
2264 |
+
// Categorize the plugins which have open actions.
|
2265 |
+
$plugins = $this->categorize_plugins_to_views();
|
2266 |
+
|
2267 |
+
// Set the counts for the view links.
|
2268 |
+
$this->set_view_totals( $plugins );
|
2269 |
+
|
2270 |
+
// Prep variables for use and grab list of all installed plugins.
|
2271 |
+
$table_data = array();
|
2272 |
+
$i = 0;
|
2273 |
+
|
2274 |
+
// Redirect to the 'all' view if no plugins were found for the selected view context.
|
2275 |
+
if ( empty( $plugins[ $this->view_context ] ) ) {
|
2276 |
+
$this->view_context = 'all';
|
2277 |
+
}
|
2278 |
+
|
2279 |
+
foreach ( $plugins[ $this->view_context ] as $slug => $plugin ) {
|
2280 |
+
$table_data[ $i ]['sanitized_plugin'] = $plugin['name'];
|
2281 |
+
$table_data[ $i ]['slug'] = $slug;
|
2282 |
+
$table_data[ $i ]['plugin'] = '<strong>' . $this->tgmpa->get_info_link( $slug ) . '</strong>';
|
2283 |
+
$table_data[ $i ]['source'] = $this->get_plugin_source_type_text( $plugin['source_type'] );
|
2284 |
+
$table_data[ $i ]['type'] = $this->get_plugin_advise_type_text( $plugin['required'] );
|
2285 |
+
$table_data[ $i ]['status'] = $this->get_plugin_status_text( $slug );
|
2286 |
+
$table_data[ $i ]['installed_version'] = $this->tgmpa->get_installed_version( $slug );
|
2287 |
+
$table_data[ $i ]['minimum_version'] = $plugin['version'];
|
2288 |
+
$table_data[ $i ]['available_version'] = $this->tgmpa->does_plugin_have_update( $slug );
|
2289 |
+
|
2290 |
+
// Prep the upgrade notice info.
|
2291 |
+
$upgrade_notice = $this->tgmpa->get_upgrade_notice( $slug );
|
2292 |
+
if ( ! empty( $upgrade_notice ) ) {
|
2293 |
+
$table_data[ $i ]['upgrade_notice'] = $upgrade_notice;
|
2294 |
+
|
2295 |
+
add_action( "tgmpa_after_plugin_row_{$slug}", array( $this, 'wp_plugin_update_row' ), 10, 2 );
|
2296 |
+
}
|
2297 |
+
|
2298 |
+
$table_data[ $i ] = apply_filters( 'tgmpa_table_data_item', $table_data[ $i ], $plugin );
|
2299 |
+
|
2300 |
+
$i++;
|
2301 |
+
}
|
2302 |
+
|
2303 |
+
return $table_data;
|
2304 |
+
}
|
2305 |
+
|
2306 |
+
/**
|
2307 |
+
* Categorize the plugins which have open actions into views for the TGMPA page.
|
2308 |
+
*
|
2309 |
+
* @since 2.5.0
|
2310 |
+
*/
|
2311 |
+
protected function categorize_plugins_to_views() {
|
2312 |
+
$plugins = array(
|
2313 |
+
'all' => array(), // Meaning: all plugins which still have open actions.
|
2314 |
+
'install' => array(),
|
2315 |
+
'update' => array(),
|
2316 |
+
'activate' => array(),
|
2317 |
+
);
|
2318 |
+
|
2319 |
+
foreach ( $this->tgmpa->plugins as $slug => $plugin ) {
|
2320 |
+
if ( $this->tgmpa->is_plugin_active( $slug ) && false === $this->tgmpa->does_plugin_have_update( $slug ) ) {
|
2321 |
+
// No need to display plugins if they are installed, up-to-date and active.
|
2322 |
+
continue;
|
2323 |
+
} else {
|
2324 |
+
$plugins['all'][ $slug ] = $plugin;
|
2325 |
+
|
2326 |
+
if ( ! $this->tgmpa->is_plugin_installed( $slug ) ) {
|
2327 |
+
$plugins['install'][ $slug ] = $plugin;
|
2328 |
+
} else {
|
2329 |
+
if ( false !== $this->tgmpa->does_plugin_have_update( $slug ) ) {
|
2330 |
+
$plugins['update'][ $slug ] = $plugin;
|
2331 |
+
}
|
2332 |
+
|
2333 |
+
if ( $this->tgmpa->can_plugin_activate( $slug ) ) {
|
2334 |
+
$plugins['activate'][ $slug ] = $plugin;
|
2335 |
+
}
|
2336 |
+
}
|
2337 |
+
}
|
2338 |
+
}
|
2339 |
+
|
2340 |
+
return $plugins;
|
2341 |
+
}
|
2342 |
+
|
2343 |
+
/**
|
2344 |
+
* Set the counts for the view links.
|
2345 |
+
*
|
2346 |
+
* @since 2.5.0
|
2347 |
+
*
|
2348 |
+
* @param array $plugins Plugins order by view.
|
2349 |
+
*/
|
2350 |
+
protected function set_view_totals( $plugins ) {
|
2351 |
+
foreach ( $plugins as $type => $list ) {
|
2352 |
+
$this->view_totals[ $type ] = count( $list );
|
2353 |
+
}
|
2354 |
+
}
|
2355 |
+
|
2356 |
+
/**
|
2357 |
+
* Get the plugin required/recommended text string.
|
2358 |
+
*
|
2359 |
+
* @since 2.5.0
|
2360 |
+
*
|
2361 |
+
* @param string $required Plugin required setting.
|
2362 |
+
* @return string
|
2363 |
+
*/
|
2364 |
+
protected function get_plugin_advise_type_text( $required ) {
|
2365 |
+
if ( true === $required ) {
|
2366 |
+
return __( 'Required', 'tgmpa' );
|
2367 |
+
}
|
2368 |
+
|
2369 |
+
return __( 'Recommended', 'tgmpa' );
|
2370 |
+
}
|
2371 |
+
|
2372 |
+
/**
|
2373 |
+
* Get the plugin source type text string.
|
2374 |
+
*
|
2375 |
+
* @since 2.5.0
|
2376 |
+
*
|
2377 |
+
* @param string $type Plugin type.
|
2378 |
+
* @return string
|
2379 |
+
*/
|
2380 |
+
protected function get_plugin_source_type_text( $type ) {
|
2381 |
+
$string = '';
|
2382 |
+
|
2383 |
+
switch ( $type ) {
|
2384 |
+
case 'repo':
|
2385 |
+
$string = __( 'WordPress Repository', 'tgmpa' );
|
2386 |
+
break;
|
2387 |
+
case 'external':
|
2388 |
+
$string = __( 'External Source', 'tgmpa' );
|
2389 |
+
break;
|
2390 |
+
case 'bundled':
|
2391 |
+
$string = __( 'Pre-Packaged', 'tgmpa' );
|
2392 |
+
break;
|
2393 |
+
}
|
2394 |
+
|
2395 |
+
return $string;
|
2396 |
+
}
|
2397 |
+
|
2398 |
+
/**
|
2399 |
+
* Determine the plugin status message.
|
2400 |
+
*
|
2401 |
+
* @since 2.5.0
|
2402 |
+
*
|
2403 |
+
* @param string $slug Plugin slug.
|
2404 |
+
* @return string
|
2405 |
+
*/
|
2406 |
+
protected function get_plugin_status_text( $slug ) {
|
2407 |
+
if ( ! $this->tgmpa->is_plugin_installed( $slug ) ) {
|
2408 |
+
return __( 'Not Installed', 'tgmpa' );
|
2409 |
+
}
|
2410 |
+
|
2411 |
+
if ( ! $this->tgmpa->is_plugin_active( $slug ) ) {
|
2412 |
+
$install_status = __( 'Installed But Not Activated', 'tgmpa' );
|
2413 |
+
} else {
|
2414 |
+
$install_status = __( 'Active', 'tgmpa' );
|
2415 |
+
}
|
2416 |
+
|
2417 |
+
$update_status = '';
|
2418 |
+
|
2419 |
+
if ( $this->tgmpa->does_plugin_require_update( $slug ) && false === $this->tgmpa->does_plugin_have_update( $slug ) ) {
|
2420 |
+
$update_status = __( 'Required Update not Available', 'tgmpa' );
|
2421 |
+
|
2422 |
+
} elseif ( $this->tgmpa->does_plugin_require_update( $slug ) ) {
|
2423 |
+
$update_status = __( 'Requires Update', 'tgmpa' );
|
2424 |
+
|
2425 |
+
} elseif ( false !== $this->tgmpa->does_plugin_have_update( $slug ) ) {
|
2426 |
+
$update_status = __( 'Update recommended', 'tgmpa' );
|
2427 |
+
}
|
2428 |
+
|
2429 |
+
if ( '' === $update_status ) {
|
2430 |
+
return $install_status;
|
2431 |
+
}
|
2432 |
+
|
2433 |
+
return sprintf(
|
2434 |
+
/* translators: 1: install status, 2: update status */
|
2435 |
+
_x( '%1$s, %2$s', 'Install/Update Status', 'tgmpa' ),
|
2436 |
+
$install_status,
|
2437 |
+
$update_status
|
2438 |
+
);
|
2439 |
+
}
|
2440 |
+
|
2441 |
+
/**
|
2442 |
+
* Sort plugins by Required/Recommended type and by alphabetical plugin name within each type.
|
2443 |
+
*
|
2444 |
+
* @since 2.5.0
|
2445 |
+
*
|
2446 |
+
* @param array $items Prepared table items.
|
2447 |
+
* @return array Sorted table items.
|
2448 |
+
*/
|
2449 |
+
public function sort_table_items( $items ) {
|
2450 |
+
$type = array();
|
2451 |
+
$name = array();
|
2452 |
+
|
2453 |
+
foreach ( $items as $i => $plugin ) {
|
2454 |
+
$type[ $i ] = $plugin['type']; // Required / recommended.
|
2455 |
+
$name[ $i ] = $plugin['sanitized_plugin'];
|
2456 |
+
}
|
2457 |
+
|
2458 |
+
array_multisort( $type, SORT_DESC, $name, SORT_ASC, $items );
|
2459 |
+
|
2460 |
+
return $items;
|
2461 |
+
}
|
2462 |
+
|
2463 |
+
/**
|
2464 |
+
* Get an associative array ( id => link ) of the views available on this table.
|
2465 |
+
*
|
2466 |
+
* @since 2.5.0
|
2467 |
+
*
|
2468 |
+
* @return array
|
2469 |
+
*/
|
2470 |
+
public function get_views() {
|
2471 |
+
$status_links = array();
|
2472 |
+
|
2473 |
+
foreach ( $this->view_totals as $type => $count ) {
|
2474 |
+
if ( $count < 1 ) {
|
2475 |
+
continue;
|
2476 |
+
}
|
2477 |
+
|
2478 |
+
switch ( $type ) {
|
2479 |
+
case 'all':
|
2480 |
+
/* translators: 1: number of plugins. */
|
2481 |
+
$text = _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $count, 'plugins', 'tgmpa' );
|
2482 |
+
break;
|
2483 |
+
case 'install':
|
2484 |
+
/* translators: 1: number of plugins. */
|
2485 |
+
$text = _n( 'To Install <span class="count">(%s)</span>', 'To Install <span class="count">(%s)</span>', $count, 'tgmpa' );
|
2486 |
+
break;
|
2487 |
+
case 'update':
|
2488 |
+
/* translators: 1: number of plugins. */
|
2489 |
+
$text = _n( 'Update Available <span class="count">(%s)</span>', 'Update Available <span class="count">(%s)</span>', $count, 'tgmpa' );
|
2490 |
+
break;
|
2491 |
+
case 'activate':
|
2492 |
+
/* translators: 1: number of plugins. */
|
2493 |
+
$text = _n( 'To Activate <span class="count">(%s)</span>', 'To Activate <span class="count">(%s)</span>', $count, 'tgmpa' );
|
2494 |
+
break;
|
2495 |
+
default:
|
2496 |
+
$text = '';
|
2497 |
+
break;
|
2498 |
+
}
|
2499 |
+
|
2500 |
+
if ( ! empty( $text ) ) {
|
2501 |
+
|
2502 |
+
$status_links[ $type ] = sprintf(
|
2503 |
+
'<a href="%s"%s>%s</a>',
|
2504 |
+
esc_url( $this->tgmpa->get_tgmpa_status_url( $type ) ),
|
2505 |
+
( $type === $this->view_context ) ? ' class="current"' : '',
|
2506 |
+
sprintf( $text, number_format_i18n( $count ) )
|
2507 |
+
);
|
2508 |
+
}
|
2509 |
+
}
|
2510 |
+
|
2511 |
+
return $status_links;
|
2512 |
+
}
|
2513 |
+
|
2514 |
+
/**
|
2515 |
+
* Create default columns to display important plugin information
|
2516 |
+
* like type, action and status.
|
2517 |
+
*
|
2518 |
+
* @since 2.2.0
|
2519 |
+
*
|
2520 |
+
* @param array $item Array of item data.
|
2521 |
+
* @param string $column_name The name of the column.
|
2522 |
+
* @return string
|
2523 |
+
*/
|
2524 |
+
public function column_default( $item, $column_name ) {
|
2525 |
+
return $item[ $column_name ];
|
2526 |
+
}
|
2527 |
+
|
2528 |
+
/**
|
2529 |
+
* Required for bulk installing.
|
2530 |
+
*
|
2531 |
+
* Adds a checkbox for each plugin.
|
2532 |
+
*
|
2533 |
+
* @since 2.2.0
|
2534 |
+
*
|
2535 |
+
* @param array $item Array of item data.
|
2536 |
+
* @return string The input checkbox with all necessary info.
|
2537 |
+
*/
|
2538 |
+
public function column_cb( $item ) {
|
2539 |
+
return sprintf(
|
2540 |
+
'<input type="checkbox" name="%1$s[]" value="%2$s" id="%3$s" />',
|
2541 |
+
esc_attr( $this->_args['singular'] ),
|
2542 |
+
esc_attr( $item['slug'] ),
|
2543 |
+
esc_attr( $item['sanitized_plugin'] )
|
2544 |
+
);
|
2545 |
+
}
|
2546 |
+
|
2547 |
+
/**
|
2548 |
+
* Create default title column along with the action links.
|
2549 |
+
*
|
2550 |
+
* @since 2.2.0
|
2551 |
+
*
|
2552 |
+
* @param array $item Array of item data.
|
2553 |
+
* @return string The plugin name and action links.
|
2554 |
+
*/
|
2555 |
+
public function column_plugin( $item ) {
|
2556 |
+
return sprintf(
|
2557 |
+
'%1$s %2$s',
|
2558 |
+
$item['plugin'],
|
2559 |
+
$this->row_actions( $this->get_row_actions( $item ), true )
|
2560 |
+
);
|
2561 |
+
}
|
2562 |
+
|
2563 |
+
/**
|
2564 |
+
* Create version information column.
|
2565 |
+
*
|
2566 |
+
* @since 2.5.0
|
2567 |
+
*
|
2568 |
+
* @param array $item Array of item data.
|
2569 |
+
* @return string HTML-formatted version information.
|
2570 |
+
*/
|
2571 |
+
public function column_version( $item ) {
|
2572 |
+
$output = array();
|
2573 |
+
|
2574 |
+
if ( $this->tgmpa->is_plugin_installed( $item['slug'] ) ) {
|
2575 |
+
$installed = ! empty( $item['installed_version'] ) ? $item['installed_version'] : _x( 'unknown', 'as in: "version nr unknown"', 'tgmpa' );
|
2576 |
+
|
2577 |
+
$color = '';
|
2578 |
+
if ( ! empty( $item['minimum_version'] ) && $this->tgmpa->does_plugin_require_update( $item['slug'] ) ) {
|
2579 |
+
$color = ' color: #ff0000; font-weight: bold;';
|
2580 |
+
}
|
2581 |
+
|
2582 |
+
$output[] = sprintf(
|
2583 |
+
'<p><span style="min-width: 32px; text-align: right; float: right;%1$s">%2$s</span>' . __( 'Installed version:', 'tgmpa' ) . '</p>',
|
2584 |
+
$color,
|
2585 |
+
$installed
|
2586 |
+
);
|
2587 |
+
}
|
2588 |
+
|
2589 |
+
if ( ! empty( $item['minimum_version'] ) ) {
|
2590 |
+
$output[] = sprintf(
|
2591 |
+
'<p><span style="min-width: 32px; text-align: right; float: right;">%1$s</span>' . __( 'Minimum required version:', 'tgmpa' ) . '</p>',
|
2592 |
+
$item['minimum_version']
|
2593 |
+
);
|
2594 |
+
}
|
2595 |
+
|
2596 |
+
if ( ! empty( $item['available_version'] ) ) {
|
2597 |
+
$color = '';
|
2598 |
+
if ( ! empty( $item['minimum_version'] ) && version_compare( $item['available_version'], $item['minimum_version'], '>=' ) ) {
|
2599 |
+
$color = ' color: #71C671; font-weight: bold;';
|
2600 |
+
}
|
2601 |
+
|
2602 |
+
$output[] = sprintf(
|
2603 |
+
'<p><span style="min-width: 32px; text-align: right; float: right;%1$s">%2$s</span>' . __( 'Available version:', 'tgmpa' ) . '</p>',
|
2604 |
+
$color,
|
2605 |
+
$item['available_version']
|
2606 |
+
);
|
2607 |
+
}
|
2608 |
+
|
2609 |
+
if ( empty( $output ) ) {
|
2610 |
+
return ' '; // Let's not break the table layout.
|
2611 |
+
} else {
|
2612 |
+
return implode( "\n", $output );
|
2613 |
+
}
|
2614 |
+
}
|
2615 |
+
|
2616 |
+
/**
|
2617 |
+
* Sets default message within the plugins table if no plugins
|
2618 |
+
* are left for interaction.
|
2619 |
+
*
|
2620 |
+
* Hides the menu item to prevent the user from clicking and
|
2621 |
+
* getting a permissions error.
|
2622 |
+
*
|
2623 |
+
* @since 2.2.0
|
2624 |
+
*/
|
2625 |
+
public function no_items() {
|
2626 |
+
echo esc_html__( 'No plugins to install, update or activate.', 'tgmpa' ) . ' <a href="' . esc_url( self_admin_url() ) . '"> ' . esc_html__( 'Return to the Dashboard', 'tgmpa' ) . '</a>';
|
2627 |
+
echo '<style type="text/css">#adminmenu .wp-submenu li.current { display: none !important; }</style>';
|
2628 |
+
}
|
2629 |
+
|
2630 |
+
/**
|
2631 |
+
* Output all the column information within the table.
|
2632 |
+
*
|
2633 |
+
* @since 2.2.0
|
2634 |
+
*
|
2635 |
+
* @return array $columns The column names.
|
2636 |
+
*/
|
2637 |
+
public function get_columns() {
|
2638 |
+
$columns = array(
|
2639 |
+
'cb' => '<input type="checkbox" />',
|
2640 |
+
'plugin' => __( 'Plugin', 'tgmpa' ),
|
2641 |
+
'source' => __( 'Source', 'tgmpa' ),
|
2642 |
+
'type' => __( 'Type', 'tgmpa' ),
|
2643 |
+
);
|
2644 |
+
|
2645 |
+
if ( 'all' === $this->view_context || 'update' === $this->view_context ) {
|
2646 |
+
$columns['version'] = __( 'Version', 'tgmpa' );
|
2647 |
+
$columns['status'] = __( 'Status', 'tgmpa' );
|
2648 |
+
}
|
2649 |
+
|
2650 |
+
return apply_filters( 'tgmpa_table_columns', $columns );
|
2651 |
+
}
|
2652 |
+
|
2653 |
+
/**
|
2654 |
+
* Get name of default primary column
|
2655 |
+
*
|
2656 |
+
* @since 2.5.0 / WP 4.3+ compatibility
|
2657 |
+
* @access protected
|
2658 |
+
*
|
2659 |
+
* @return string
|
2660 |
+
*/
|
2661 |
+
protected function get_default_primary_column_name() {
|
2662 |
+
return 'plugin';
|
2663 |
+
}
|
2664 |
+
|
2665 |
+
/**
|
2666 |
+
* Get the name of the primary column.
|
2667 |
+
*
|
2668 |
+
* @since 2.5.0 / WP 4.3+ compatibility
|
2669 |
+
* @access protected
|
2670 |
+
*
|
2671 |
+
* @return string The name of the primary column.
|
2672 |
+
*/
|
2673 |
+
protected function get_primary_column_name() {
|
2674 |
+
if ( method_exists( 'WP_List_Table', 'get_primary_column_name' ) ) {
|
2675 |
+
return parent::get_primary_column_name();
|
2676 |
+
} else {
|
2677 |
+
return $this->get_default_primary_column_name();
|
2678 |
+
}
|
2679 |
+
}
|
2680 |
+
|
2681 |
+
/**
|
2682 |
+
* Get the actions which are relevant for a specific plugin row.
|
2683 |
+
*
|
2684 |
+
* @since 2.5.0
|
2685 |
+
*
|
2686 |
+
* @param array $item Array of item data.
|
2687 |
+
* @return array Array with relevant action links.
|
2688 |
+
*/
|
2689 |
+
protected function get_row_actions( $item ) {
|
2690 |
+
$actions = array();
|
2691 |
+
$action_links = array();
|
2692 |
+
|
2693 |
+
// Display the 'Install' action link if the plugin is not yet available.
|
2694 |
+
if ( ! $this->tgmpa->is_plugin_installed( $item['slug'] ) ) {
|
2695 |
+
/* translators: %s: plugin name in screen reader markup */
|
2696 |
+
$actions['install'] = __( 'Install %s', 'tgmpa' );
|
2697 |
+
} else {
|
2698 |
+
// Display the 'Update' action link if an update is available and WP complies with plugin minimum.
|
2699 |
+
if ( false !== $this->tgmpa->does_plugin_have_update( $item['slug'] ) && $this->tgmpa->can_plugin_update( $item['slug'] ) ) {
|
2700 |
+
/* translators: %s: plugin name in screen reader markup */
|
2701 |
+
$actions['update'] = __( 'Update %s', 'tgmpa' );
|
2702 |
+
}
|
2703 |
+
|
2704 |
+
// Display the 'Activate' action link, but only if the plugin meets the minimum version.
|
2705 |
+
if ( $this->tgmpa->can_plugin_activate( $item['slug'] ) ) {
|
2706 |
+
/* translators: %s: plugin name in screen reader markup */
|
2707 |
+
$actions['activate'] = __( 'Activate %s', 'tgmpa' );
|
2708 |
+
}
|
2709 |
+
}
|
2710 |
+
|
2711 |
+
// Create the actual links.
|
2712 |
+
foreach ( $actions as $action => $text ) {
|
2713 |
+
$nonce_url = wp_nonce_url(
|
2714 |
+
add_query_arg(
|
2715 |
+
array(
|
2716 |
+
'plugin' => urlencode( $item['slug'] ),
|
2717 |
+
'tgmpa-' . $action => $action . '-plugin',
|
2718 |
+
),
|
2719 |
+
$this->tgmpa->get_tgmpa_url()
|
2720 |
+
),
|
2721 |
+
'tgmpa-' . $action,
|
2722 |
+
'tgmpa-nonce'
|
2723 |
+
);
|
2724 |
+
|
2725 |
+
$action_links[ $action ] = sprintf(
|
2726 |
+
'<a href="%1$s">' . esc_html( $text ) . '</a>',
|
2727 |
+
esc_url( $nonce_url ),
|
2728 |
+
'<span class="screen-reader-text">' . esc_html( $item['sanitized_plugin'] ) . '</span>'
|
2729 |
+
);
|
2730 |
+
}
|
2731 |
+
|
2732 |
+
$prefix = ( defined( 'WP_NETWORK_ADMIN' ) && WP_NETWORK_ADMIN ) ? 'network_admin_' : '';
|
2733 |
+
return apply_filters( "tgmpa_{$prefix}plugin_action_links", array_filter( $action_links ), $item['slug'], $item, $this->view_context );
|
2734 |
+
}
|
2735 |
+
|
2736 |
+
/**
|
2737 |
+
* Generates content for a single row of the table.
|
2738 |
+
*
|
2739 |
+
* @since 2.5.0
|
2740 |
+
*
|
2741 |
+
* @param object $item The current item.
|
2742 |
+
*/
|
2743 |
+
public function single_row( $item ) {
|
2744 |
+
parent::single_row( $item );
|
2745 |
+
|
2746 |
+
/**
|
2747 |
+
* Fires after each specific row in the TGMPA Plugins list table.
|
2748 |
+
*
|
2749 |
+
* The dynamic portion of the hook name, `$item['slug']`, refers to the slug
|
2750 |
+
* for the plugin.
|
2751 |
+
*
|
2752 |
+
* @since 2.5.0
|
2753 |
+
*/
|
2754 |
+
do_action( "tgmpa_after_plugin_row_{$item['slug']}", $item['slug'], $item, $this->view_context );
|
2755 |
+
}
|
2756 |
+
|
2757 |
+
/**
|
2758 |
+
* Show the upgrade notice below a plugin row if there is one.
|
2759 |
+
*
|
2760 |
+
* @since 2.5.0
|
2761 |
+
*
|
2762 |
+
* @see /wp-admin/includes/update.php
|
2763 |
+
*
|
2764 |
+
* @param string $slug Plugin slug.
|
2765 |
+
* @param array $item The information available in this table row.
|
2766 |
+
* @return null Return early if upgrade notice is empty.
|
2767 |
+
*/
|
2768 |
+
public function wp_plugin_update_row( $slug, $item ) {
|
2769 |
+
if ( empty( $item['upgrade_notice'] ) ) {
|
2770 |
+
return;
|
2771 |
+
}
|
2772 |
+
|
2773 |
+
echo '
|
2774 |
+
<tr class="plugin-update-tr">
|
2775 |
+
<td colspan="', absint( $this->get_column_count() ), '" class="plugin-update colspanchange">
|
2776 |
+
<div class="update-message">',
|
2777 |
+
esc_html__( 'Upgrade message from the plugin author:', 'tgmpa' ),
|
2778 |
+
' <strong>', wp_kses_data( $item['upgrade_notice'] ), '</strong>
|
2779 |
+
</div>
|
2780 |
+
</td>
|
2781 |
+
</tr>';
|
2782 |
+
}
|
2783 |
+
|
2784 |
+
/**
|
2785 |
+
* Extra controls to be displayed between bulk actions and pagination.
|
2786 |
+
*
|
2787 |
+
* @since 2.5.0
|
2788 |
+
*
|
2789 |
+
* @param string $which 'top' or 'bottom' table navigation.
|
2790 |
+
*/
|
2791 |
+
public function extra_tablenav( $which ) {
|
2792 |
+
if ( 'bottom' === $which ) {
|
2793 |
+
$this->tgmpa->show_tgmpa_version();
|
2794 |
+
}
|
2795 |
+
}
|
2796 |
+
|
2797 |
+
/**
|
2798 |
+
* Defines the bulk actions for handling registered plugins.
|
2799 |
+
*
|
2800 |
+
* @since 2.2.0
|
2801 |
+
*
|
2802 |
+
* @return array $actions The bulk actions for the plugin install table.
|
2803 |
+
*/
|
2804 |
+
public function get_bulk_actions() {
|
2805 |
+
|
2806 |
+
$actions = array();
|
2807 |
+
|
2808 |
+
if ( 'update' !== $this->view_context && 'activate' !== $this->view_context ) {
|
2809 |
+
if ( current_user_can( 'install_plugins' ) ) {
|
2810 |
+
$actions['tgmpa-bulk-install'] = __( 'Install', 'tgmpa' );
|
2811 |
+
}
|
2812 |
+
}
|
2813 |
+
|
2814 |
+
if ( 'install' !== $this->view_context ) {
|
2815 |
+
if ( current_user_can( 'update_plugins' ) ) {
|
2816 |
+
$actions['tgmpa-bulk-update'] = __( 'Update', 'tgmpa' );
|
2817 |
+
}
|
2818 |
+
if ( current_user_can( 'activate_plugins' ) ) {
|
2819 |
+
$actions['tgmpa-bulk-activate'] = __( 'Activate', 'tgmpa' );
|
2820 |
+
}
|
2821 |
+
}
|
2822 |
+
|
2823 |
+
return $actions;
|
2824 |
+
}
|
2825 |
+
|
2826 |
+
/**
|
2827 |
+
* Processes bulk installation and activation actions.
|
2828 |
+
*
|
2829 |
+
* The bulk installation process looks for the $_POST information and passes that
|
2830 |
+
* through if a user has to use WP_Filesystem to enter their credentials.
|
2831 |
+
*
|
2832 |
+
* @since 2.2.0
|
2833 |
+
*/
|
2834 |
+
public function process_bulk_actions() {
|
2835 |
+
// Bulk installation process.
|
2836 |
+
if ( 'tgmpa-bulk-install' === $this->current_action() || 'tgmpa-bulk-update' === $this->current_action() ) {
|
2837 |
+
|
2838 |
+
check_admin_referer( 'bulk-' . $this->_args['plural'] );
|
2839 |
+
|
2840 |
+
$install_type = 'install';
|
2841 |
+
if ( 'tgmpa-bulk-update' === $this->current_action() ) {
|
2842 |
+
$install_type = 'update';
|
2843 |
+
}
|
2844 |
+
|
2845 |
+
$plugins_to_install = array();
|
2846 |
+
|
2847 |
+
// Did user actually select any plugins to install/update ?
|
2848 |
+
if ( empty( $_POST['plugin'] ) ) {
|
2849 |
+
if ( 'install' === $install_type ) {
|
2850 |
+
$message = __( 'No plugins were selected to be installed. No action taken.', 'tgmpa' );
|
2851 |
+
} else {
|
2852 |
+
$message = __( 'No plugins were selected to be updated. No action taken.', 'tgmpa' );
|
2853 |
+
}
|
2854 |
+
|
2855 |
+
echo '<div id="message" class="error"><p>', esc_html( $message ), '</p></div>';
|
2856 |
+
|
2857 |
+
return false;
|
2858 |
+
}
|
2859 |
+
|
2860 |
+
if ( is_array( $_POST['plugin'] ) ) {
|
2861 |
+
$plugins_to_install = (array) $_POST['plugin'];
|
2862 |
+
} elseif ( is_string( $_POST['plugin'] ) ) {
|
2863 |
+
// Received via Filesystem page - un-flatten array (WP bug #19643).
|
2864 |
+
$plugins_to_install = explode( ',', $_POST['plugin'] );
|
2865 |
+
}
|
2866 |
+
|
2867 |
+
// Sanitize the received input.
|
2868 |
+
$plugins_to_install = array_map( 'urldecode', $plugins_to_install );
|
2869 |
+
$plugins_to_install = array_map( array( $this->tgmpa, 'sanitize_key' ), $plugins_to_install );
|
2870 |
+
|
2871 |
+
// Validate the received input.
|
2872 |
+
foreach ( $plugins_to_install as $key => $slug ) {
|
2873 |
+
// Check if the plugin was registered with TGMPA and remove if not.
|
2874 |
+
if ( ! isset( $this->tgmpa->plugins[ $slug ] ) ) {
|
2875 |
+
unset( $plugins_to_install[ $key ] );
|
2876 |
+
continue;
|
2877 |
+
}
|
2878 |
+
|
2879 |
+
// For install: make sure this is a plugin we *can* install and not one already installed.
|
2880 |
+
if ( 'install' === $install_type && true === $this->tgmpa->is_plugin_installed( $slug ) ) {
|
2881 |
+
unset( $plugins_to_install[ $key ] );
|
2882 |
+
}
|
2883 |
+
|
2884 |
+
// For updates: make sure this is a plugin we *can* update (update available and WP version ok).
|
2885 |
+
if ( 'update' === $install_type && false === $this->tgmpa->is_plugin_updatetable( $slug ) ) {
|
2886 |
+
unset( $plugins_to_install[ $key ] );
|
2887 |
+
}
|
2888 |
+
}
|
2889 |
+
|
2890 |
+
// No need to proceed further if we have no plugins to handle.
|
2891 |
+
if ( empty( $plugins_to_install ) ) {
|
2892 |
+
if ( 'install' === $install_type ) {
|
2893 |
+
$message = __( 'No plugins are available to be installed at this time.', 'tgmpa' );
|
2894 |
+
} else {
|
2895 |
+
$message = __( 'No plugins are available to be updated at this time.', 'tgmpa' );
|
2896 |
+
}
|
2897 |
+
|
2898 |
+
echo '<div id="message" class="error"><p>', esc_html( $message ), '</p></div>';
|
2899 |
+
|
2900 |
+
return false;
|
2901 |
+
}
|
2902 |
+
|
2903 |
+
// Pass all necessary information if WP_Filesystem is needed.
|
2904 |
+
$url = wp_nonce_url(
|
2905 |
+
$this->tgmpa->get_tgmpa_url(),
|
2906 |
+
'bulk-' . $this->_args['plural']
|
2907 |
+
);
|
2908 |
+
|
2909 |
+
// Give validated data back to $_POST which is the only place the filesystem looks for extra fields.
|
2910 |
+
$_POST['plugin'] = implode( ',', $plugins_to_install ); // Work around for WP bug #19643.
|
2911 |
+
|
2912 |
+
$method = ''; // Leave blank so WP_Filesystem can populate it as necessary.
|
2913 |
+
$fields = array_keys( $_POST ); // Extra fields to pass to WP_Filesystem.
|
2914 |
+
|
2915 |
+
if ( false === ( $creds = request_filesystem_credentials( esc_url_raw( $url ), $method, false, false, $fields ) ) ) {
|
2916 |
+
return true; // Stop the normal page form from displaying, credential request form will be shown.
|
2917 |
+
}
|
2918 |
+
|
2919 |
+
// Now we have some credentials, setup WP_Filesystem.
|
2920 |
+
if ( ! WP_Filesystem( $creds ) ) {
|
2921 |
+
// Our credentials were no good, ask the user for them again.
|
2922 |
+
request_filesystem_credentials( esc_url_raw( $url ), $method, true, false, $fields );
|
2923 |
+
|
2924 |
+
return true;
|
2925 |
+
}
|
2926 |
+
|
2927 |
+
/* If we arrive here, we have the filesystem */
|
2928 |
+
|
2929 |
+
// Store all information in arrays since we are processing a bulk installation.
|
2930 |
+
$names = array();
|
2931 |
+
$sources = array(); // Needed for installs.
|
2932 |
+
$file_paths = array(); // Needed for upgrades.
|
2933 |
+
$to_inject = array(); // Information to inject into the update_plugins transient.
|
2934 |
+
|
2935 |
+
// Prepare the data for validated plugins for the install/upgrade.
|
2936 |
+
foreach ( $plugins_to_install as $slug ) {
|
2937 |
+
$name = $this->tgmpa->plugins[ $slug ]['name'];
|
2938 |
+
$source = $this->tgmpa->get_download_url( $slug );
|
2939 |
+
|
2940 |
+
if ( ! empty( $name ) && ! empty( $source ) ) {
|
2941 |
+
$names[] = $name;
|
2942 |
+
|
2943 |
+
switch ( $install_type ) {
|
2944 |
+
|
2945 |
+
case 'install':
|
2946 |
+
$sources[] = $source;
|
2947 |
+
break;
|
2948 |
+
|
2949 |
+
case 'update':
|
2950 |
+
$file_paths[] = $this->tgmpa->plugins[ $slug ]['file_path'];
|
2951 |
+
$to_inject[ $slug ] = $this->tgmpa->plugins[ $slug ];
|
2952 |
+
$to_inject[ $slug ]['source'] = $source;
|
2953 |
+
break;
|
2954 |
+
}
|
2955 |
+
}
|
2956 |
+
}
|
2957 |
+
unset( $slug, $name, $source );
|
2958 |
+
|
2959 |
+
// Create a new instance of TGMPA_Bulk_Installer.
|
2960 |
+
$installer = new TGMPA_Bulk_Installer(
|
2961 |
+
new TGMPA_Bulk_Installer_Skin(
|
2962 |
+
array(
|
2963 |
+
'url' => esc_url_raw( $this->tgmpa->get_tgmpa_url() ),
|
2964 |
+
'nonce' => 'bulk-' . $this->_args['plural'],
|
2965 |
+
'names' => $names,
|
2966 |
+
'install_type' => $install_type,
|
2967 |
+
)
|
2968 |
+
)
|
2969 |
+
);
|
2970 |
+
|
2971 |
+
// Wrap the install process with the appropriate HTML.
|
2972 |
+
echo '<div class="tgmpa">',
|
2973 |
+
'<h2 style="font-size: 23px; font-weight: 400; line-height: 29px; margin: 0; padding: 9px 15px 4px 0;">', esc_html( get_admin_page_title() ), '</h2>
|
2974 |
+
<div class="update-php" style="width: 100%; height: 98%; min-height: 850px; padding-top: 1px;">';
|
2975 |
+
|
2976 |
+
// Process the bulk installation submissions.
|
2977 |
+
add_filter( 'upgrader_source_selection', array( $this->tgmpa, 'maybe_adjust_source_dir' ), 1, 3 );
|
2978 |
+
|
2979 |
+
if ( 'tgmpa-bulk-update' === $this->current_action() ) {
|
2980 |
+
// Inject our info into the update transient.
|
2981 |
+
$this->tgmpa->inject_update_info( $to_inject );
|
2982 |
+
|
2983 |
+
$installer->bulk_upgrade( $file_paths );
|
2984 |
+
} else {
|
2985 |
+
$installer->bulk_install( $sources );
|
2986 |
+
}
|
2987 |
+
|
2988 |
+
remove_filter( 'upgrader_source_selection', array( $this->tgmpa, 'maybe_adjust_source_dir' ), 1 );
|
2989 |
+
|
2990 |
+
echo '</div></div>';
|
2991 |
+
|
2992 |
+
return true;
|
2993 |
+
}
|
2994 |
+
|
2995 |
+
// Bulk activation process.
|
2996 |
+
if ( 'tgmpa-bulk-activate' === $this->current_action() ) {
|
2997 |
+
check_admin_referer( 'bulk-' . $this->_args['plural'] );
|
2998 |
+
|
2999 |
+
// Did user actually select any plugins to activate ?
|
3000 |
+
if ( empty( $_POST['plugin'] ) ) {
|
3001 |
+
echo '<div id="message" class="error"><p>', esc_html__( 'No plugins were selected to be activated. No action taken.', 'tgmpa' ), '</p></div>';
|
3002 |
+
|
3003 |
+
return false;
|
3004 |
+
}
|
3005 |
+
|
3006 |
+
// Grab plugin data from $_POST.
|
3007 |
+
$plugins = array();
|
3008 |
+
if ( isset( $_POST['plugin'] ) ) {
|
3009 |
+
$plugins = array_map( 'urldecode', (array) $_POST['plugin'] );
|
3010 |
+
$plugins = array_map( array( $this->tgmpa, 'sanitize_key' ), $plugins );
|
3011 |
+
}
|
3012 |
+
|
3013 |
+
$plugins_to_activate = array();
|
3014 |
+
$plugin_names = array();
|
3015 |
+
|
3016 |
+
// Grab the file paths for the selected & inactive plugins from the registration array.
|
3017 |
+
foreach ( $plugins as $slug ) {
|
3018 |
+
if ( $this->tgmpa->can_plugin_activate( $slug ) ) {
|
3019 |
+
$plugins_to_activate[] = $this->tgmpa->plugins[ $slug ]['file_path'];
|
3020 |
+
$plugin_names[] = $this->tgmpa->plugins[ $slug ]['name'];
|
3021 |
+
}
|
3022 |
+
}
|
3023 |
+
unset( $slug );
|
3024 |
+
|
3025 |
+
// Return early if there are no plugins to activate.
|
3026 |
+
if ( empty( $plugins_to_activate ) ) {
|
3027 |
+
echo '<div id="message" class="error"><p>', esc_html__( 'No plugins are available to be activated at this time.', 'tgmpa' ), '</p></div>';
|
3028 |
+
|
3029 |
+
return false;
|
3030 |
+
}
|
3031 |
+
|
3032 |
+
// Now we are good to go - let's start activating plugins.
|
3033 |
+
$activate = activate_plugins( $plugins_to_activate );
|
3034 |
+
|
3035 |
+
if ( is_wp_error( $activate ) ) {
|
3036 |
+
echo '<div id="message" class="error"><p>', wp_kses_post( $activate->get_error_message() ), '</p></div>';
|
3037 |
+
} else {
|
3038 |
+
$count = count( $plugin_names ); // Count so we can use _n function.
|
3039 |
+
$plugin_names = array_map( array( 'TGMPA_Utils', 'wrap_in_strong' ), $plugin_names );
|
3040 |
+
$last_plugin = array_pop( $plugin_names ); // Pop off last name to prep for readability.
|
3041 |
+
$imploded = empty( $plugin_names ) ? $last_plugin : ( implode( ', ', $plugin_names ) . ' ' . esc_html_x( 'and', 'plugin A *and* plugin B', 'tgmpa' ) . ' ' . $last_plugin );
|
3042 |
+
|
3043 |
+
printf( // WPCS: xss ok.
|
3044 |
+
'<div id="message" class="updated"><p>%1$s %2$s.</p></div>',
|
3045 |
+
esc_html( _n( 'The following plugin was activated successfully:', 'The following plugins were activated successfully:', $count, 'tgmpa' ) ),
|
3046 |
+
$imploded
|
3047 |
+
);
|
3048 |
+
|
3049 |
+
// Update recently activated plugins option.
|
3050 |
+
$recent = (array) get_option( 'recently_activated' );
|
3051 |
+
foreach ( $plugins_to_activate as $plugin => $time ) {
|
3052 |
+
if ( isset( $recent[ $plugin ] ) ) {
|
3053 |
+
unset( $recent[ $plugin ] );
|
3054 |
+
}
|
3055 |
+
}
|
3056 |
+
update_option( 'recently_activated', $recent );
|
3057 |
+
}
|
3058 |
+
|
3059 |
+
unset( $_POST ); // Reset the $_POST variable in case user wants to perform one action after another.
|
3060 |
+
|
3061 |
+
return true;
|
3062 |
+
}
|
3063 |
+
|
3064 |
+
return false;
|
3065 |
+
}
|
3066 |
+
|
3067 |
+
/**
|
3068 |
+
* Prepares all of our information to be outputted into a usable table.
|
3069 |
+
*
|
3070 |
+
* @since 2.2.0
|
3071 |
+
*/
|
3072 |
+
public function prepare_items() {
|
3073 |
+
$columns = $this->get_columns(); // Get all necessary column information.
|
3074 |
+
$hidden = array(); // No columns to hide, but we must set as an array.
|
3075 |
+
$sortable = array(); // No reason to make sortable columns.
|
3076 |
+
$primary = $this->get_primary_column_name(); // Column which has the row actions.
|
3077 |
+
$this->_column_headers = array( $columns, $hidden, $sortable, $primary ); // Get all necessary column headers.
|
3078 |
+
|
3079 |
+
// Process our bulk activations here.
|
3080 |
+
if ( 'tgmpa-bulk-activate' === $this->current_action() ) {
|
3081 |
+
$this->process_bulk_actions();
|
3082 |
+
}
|
3083 |
+
|
3084 |
+
// Store all of our plugin data into $items array so WP_List_Table can use it.
|
3085 |
+
$this->items = apply_filters( 'tgmpa_table_data_items', $this->_gather_plugin_data() );
|
3086 |
+
}
|
3087 |
+
|
3088 |
+
/* *********** DEPRECATED METHODS *********** */
|
3089 |
+
|
3090 |
+
/**
|
3091 |
+
* Retrieve plugin data, given the plugin name.
|
3092 |
+
*
|
3093 |
+
* @since 2.2.0
|
3094 |
+
* @deprecated 2.5.0 use {@see TGM_Plugin_Activation::_get_plugin_data_from_name()} instead.
|
3095 |
+
* @see TGM_Plugin_Activation::_get_plugin_data_from_name()
|
3096 |
+
*
|
3097 |
+
* @param string $name Name of the plugin, as it was registered.
|
3098 |
+
* @param string $data Optional. Array key of plugin data to return. Default is slug.
|
3099 |
+
* @return string|boolean Plugin slug if found, false otherwise.
|
3100 |
+
*/
|
3101 |
+
protected function _get_plugin_data_from_name( $name, $data = 'slug' ) {
|
3102 |
+
_deprecated_function( __FUNCTION__, 'TGMPA 2.5.0', 'TGM_Plugin_Activation::_get_plugin_data_from_name()' );
|
3103 |
+
|
3104 |
+
return $this->tgmpa->_get_plugin_data_from_name( $name, $data );
|
3105 |
+
}
|
3106 |
+
}
|
3107 |
+
}
|
3108 |
+
|
3109 |
+
|
3110 |
+
if ( ! class_exists( 'TGM_Bulk_Installer' ) ) {
|
3111 |
+
|
3112 |
+
/**
|
3113 |
+
* Hack: Prevent TGMPA v2.4.1- bulk installer class from being loaded if 2.4.1- is loaded after 2.5+.
|
3114 |
+
*
|
3115 |
+
* @since 2.5.2
|
3116 |
+
*
|
3117 |
+
* {@internal The TGMPA_Bulk_Installer class was originally called TGM_Bulk_Installer.
|
3118 |
+
* For more information, see that class.}}
|
3119 |
+
*/
|
3120 |
+
class TGM_Bulk_Installer {
|
3121 |
+
}
|
3122 |
+
}
|
3123 |
+
if ( ! class_exists( 'TGM_Bulk_Installer_Skin' ) ) {
|
3124 |
+
|
3125 |
+
/**
|
3126 |
+
* Hack: Prevent TGMPA v2.4.1- bulk installer skin class from being loaded if 2.4.1- is loaded after 2.5+.
|
3127 |
+
*
|
3128 |
+
* @since 2.5.2
|
3129 |
+
*
|
3130 |
+
* {@internal The TGMPA_Bulk_Installer_Skin class was originally called TGM_Bulk_Installer_Skin.
|
3131 |
+
* For more information, see that class.}}
|
3132 |
+
*/
|
3133 |
+
class TGM_Bulk_Installer_Skin {
|
3134 |
+
}
|
3135 |
+
}
|
3136 |
+
|
3137 |
+
/**
|
3138 |
+
* The WP_Upgrader file isn't always available. If it isn't available,
|
3139 |
+
* we load it here.
|
3140 |
+
*
|
3141 |
+
* We check to make sure no action or activation keys are set so that WordPress
|
3142 |
+
* does not try to re-include the class when processing upgrades or installs outside
|
3143 |
+
* of the class.
|
3144 |
+
*
|
3145 |
+
* @since 2.2.0
|
3146 |
+
*/
|
3147 |
+
add_action( 'admin_init', 'tgmpa_load_bulk_installer' );
|
3148 |
+
if ( ! function_exists( 'tgmpa_load_bulk_installer' ) ) {
|
3149 |
+
/**
|
3150 |
+
* Load bulk installer
|
3151 |
+
*/
|
3152 |
+
function tgmpa_load_bulk_installer() {
|
3153 |
+
// Silently fail if 2.5+ is loaded *after* an older version.
|
3154 |
+
if ( ! isset( $GLOBALS['tgmpa'] ) ) {
|
3155 |
+
return;
|
3156 |
+
}
|
3157 |
+
|
3158 |
+
// Get TGMPA class instance.
|
3159 |
+
$tgmpa_instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) );
|
3160 |
+
|
3161 |
+
if ( isset( $_GET['page'] ) && $tgmpa_instance->menu === $_GET['page'] ) {
|
3162 |
+
if ( ! class_exists( 'Plugin_Upgrader', false ) ) {
|
3163 |
+
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
|
3164 |
+
}
|
3165 |
+
|
3166 |
+
if ( ! class_exists( 'TGMPA_Bulk_Installer' ) ) {
|
3167 |
+
|
3168 |
+
/**
|
3169 |
+
* Installer class to handle bulk plugin installations.
|
3170 |
+
*
|
3171 |
+
* Extends WP_Upgrader and customizes to suit the installation of multiple
|
3172 |
+
* plugins.
|
3173 |
+
*
|
3174 |
+
* @since 2.2.0
|
3175 |
+
*
|
3176 |
+
* {@internal Since 2.5.0 the class is an extension of Plugin_Upgrader rather than WP_Upgrader.}}
|
3177 |
+
* {@internal Since 2.5.2 the class has been renamed from TGM_Bulk_Installer to TGMPA_Bulk_Installer.
|
3178 |
+
* This was done to prevent backward compatibility issues with v2.3.6.}}
|
3179 |
+
*
|
3180 |
+
* @package TGM-Plugin-Activation
|
3181 |
+
* @author Thomas Griffin
|
3182 |
+
* @author Gary Jones
|
3183 |
+
*/
|
3184 |
+
class TGMPA_Bulk_Installer extends Plugin_Upgrader {
|
3185 |
+
/**
|
3186 |
+
* Holds result of bulk plugin installation.
|
3187 |
+
*
|
3188 |
+
* @since 2.2.0
|
3189 |
+
*
|
3190 |
+
* @var string
|
3191 |
+
*/
|
3192 |
+
public $result;
|
3193 |
+
|
3194 |
+
/**
|
3195 |
+
* Flag to check if bulk installation is occurring or not.
|
3196 |
+
*
|
3197 |
+
* @since 2.2.0
|
3198 |
+
*
|
3199 |
+
* @var boolean
|
3200 |
+
*/
|
3201 |
+
public $bulk = false;
|
3202 |
+
|
3203 |
+
/**
|
3204 |
+
* TGMPA instance
|
3205 |
+
*
|
3206 |
+
* @since 2.5.0
|
3207 |
+
*
|
3208 |
+
* @var object
|
3209 |
+
*/
|
3210 |
+
protected $tgmpa;
|
3211 |
+
|
3212 |
+
/**
|
3213 |
+
* Whether or not the destination directory needs to be cleared ( = on update).
|
3214 |
+
*
|
3215 |
+
* @since 2.5.0
|
3216 |
+
*
|
3217 |
+
* @var bool
|
3218 |
+
*/
|
3219 |
+
protected $clear_destination = false;
|
3220 |
+
|
3221 |
+
/**
|
3222 |
+
* References parent constructor and sets defaults for class.
|
3223 |
+
*
|
3224 |
+
* @since 2.2.0
|
3225 |
+
*
|
3226 |
+
* @param \Bulk_Upgrader_Skin|null $skin Installer skin.
|
3227 |
+
*/
|
3228 |
+
public function __construct( $skin = null ) {
|
3229 |
+
// Get TGMPA class instance.
|
3230 |
+
$this->tgmpa = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) );
|
3231 |
+
|
3232 |
+
parent::__construct( $skin );
|
3233 |
+
|
3234 |
+
if ( isset( $this->skin->options['install_type'] ) && 'update' === $this->skin->options['install_type'] ) {
|
3235 |
+
$this->clear_destination = true;
|
3236 |
+
}
|
3237 |
+
|
3238 |
+
if ( $this->tgmpa->is_automatic ) {
|
3239 |
+
$this->activate_strings();
|
3240 |
+
}
|
3241 |
+
|
3242 |
+
add_action( 'upgrader_process_complete', array( $this->tgmpa, 'populate_file_path' ) );
|
3243 |
+
}
|
3244 |
+
|
3245 |
+
/**
|
3246 |
+
* Sets the correct activation strings for the installer skin to use.
|
3247 |
+
*
|
3248 |
+
* @since 2.2.0
|
3249 |
+
*/
|
3250 |
+
public function activate_strings() {
|
3251 |
+
$this->strings['activation_failed'] = __( 'Plugin activation failed.', 'tgmpa' );
|
3252 |
+
$this->strings['activation_success'] = __( 'Plugin activated successfully.', 'tgmpa' );
|
3253 |
+
}
|
3254 |
+
|
3255 |
+
/**
|
3256 |
+
* Performs the actual installation of each plugin.
|
3257 |
+
*
|
3258 |
+
* @since 2.2.0
|
3259 |
+
*
|
3260 |
+
* @see WP_Upgrader::run()
|
3261 |
+
*
|
3262 |
+
* @param array $options The installation config options.
|
3263 |
+
* @return null|array Return early if error, array of installation data on success.
|
3264 |
+
*/
|
3265 |
+
public function run( $options ) {
|
3266 |
+
$result = parent::run( $options );
|
3267 |
+
|
3268 |
+
// Reset the strings in case we changed one during automatic activation.
|
3269 |
+
if ( $this->tgmpa->is_automatic ) {
|
3270 |
+
if ( 'update' === $this->skin->options['install_type'] ) {
|
3271 |
+
$this->upgrade_strings();
|
3272 |
+
} else {
|
3273 |
+
$this->install_strings();
|
3274 |
+
}
|
3275 |
+
}
|
3276 |
+
|
3277 |
+
return $result;
|
3278 |
+
}
|
3279 |
+
|
3280 |
+
/**
|
3281 |
+
* Processes the bulk installation of plugins.
|
3282 |
+
*
|
3283 |
+
* @since 2.2.0
|
3284 |
+
*
|
3285 |
+
* {@internal This is basically a near identical copy of the WP Core
|
3286 |
+
* Plugin_Upgrader::bulk_upgrade() method, with minor adjustments to deal with
|
3287 |
+
* new installs instead of upgrades.
|
3288 |
+
* For ease of future synchronizations, the adjustments are clearly commented, but no other
|
3289 |
+
* comments are added. Code style has been made to comply.}}
|
3290 |
+
*
|
3291 |
+
* @see Plugin_Upgrader::bulk_upgrade()
|
3292 |
+
* @see https://core.trac.wordpress.org/browser/tags/4.2.1/src/wp-admin/includes/class-wp-upgrader.php#L838
|
3293 |
+
* (@internal Last synced: Dec 31st 2015 against https://core.trac.wordpress.org/browser/trunk?rev=36134}}
|
3294 |
+
*
|
3295 |
+
* @param array $plugins The plugin sources needed for installation.
|
3296 |
+
* @param array $args Arbitrary passed extra arguments.
|
3297 |
+
* @return array|false Install confirmation messages on success, false on failure.
|
3298 |
+
*/
|
3299 |
+
public function bulk_install( $plugins, $args = array() ) {
|
3300 |
+
// [TGMPA + ] Hook auto-activation in.
|
3301 |
+
add_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 );
|
3302 |
+
|
3303 |
+
$defaults = array(
|
3304 |
+
'clear_update_cache' => true,
|
3305 |
+
);
|
3306 |
+
$parsed_args = wp_parse_args( $args, $defaults );
|
3307 |
+
|
3308 |
+
$this->init();
|
3309 |
+
$this->bulk = true;
|
3310 |
+
|
3311 |
+
$this->install_strings(); // [TGMPA + ] adjusted.
|
3312 |
+
|
3313 |
+
/* [TGMPA - ] $current = get_site_transient( 'update_plugins' ); */
|
3314 |
+
|
3315 |
+
/* [TGMPA - ] add_filter('upgrader_clear_destination', array($this, 'delete_old_plugin'), 10, 4); */
|
3316 |
+
|
3317 |
+
$this->skin->header();
|
3318 |
+
|
3319 |
+
// Connect to the Filesystem first.
|
3320 |
+
$res = $this->fs_connect( array( WP_CONTENT_DIR, WP_PLUGIN_DIR ) );
|
3321 |
+
if ( ! $res ) {
|
3322 |
+
$this->skin->footer();
|
3323 |
+
return false;
|
3324 |
+
}
|
3325 |
+
|
3326 |
+
$this->skin->bulk_header();
|
3327 |
+
|
3328 |
+
/*
|
3329 |
+
* Only start maintenance mode if:
|
3330 |
+
* - running Multisite and there are one or more plugins specified, OR
|
3331 |
+
* - a plugin with an update available is currently active.
|
3332 |
+
* @TODO: For multisite, maintenance mode should only kick in for individual sites if at all possible.
|
3333 |
+
*/
|
3334 |
+
$maintenance = ( is_multisite() && ! empty( $plugins ) );
|
3335 |
+
|
3336 |
+
/*
|
3337 |
+
[TGMPA - ]
|
3338 |
+
foreach ( $plugins as $plugin )
|
3339 |
+
$maintenance = $maintenance || ( is_plugin_active( $plugin ) && isset( $current->response[ $plugin] ) );
|
3340 |
+
*/
|
3341 |
+
if ( $maintenance ) {
|
3342 |
+
$this->maintenance_mode( true );
|
3343 |
+
}
|
3344 |
+
|
3345 |
+
$results = array();
|
3346 |
+
|
3347 |
+
$this->update_count = count( $plugins );
|
3348 |
+
$this->update_current = 0;
|
3349 |
+
foreach ( $plugins as $plugin ) {
|
3350 |
+
$this->update_current++;
|
3351 |
+
|
3352 |
+
/*
|
3353 |
+
[TGMPA - ]
|
3354 |
+
$this->skin->plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin, false, true);
|
3355 |
+
|
3356 |
+
if ( !isset( $current->response[ $plugin ] ) ) {
|
3357 |
+
$this->skin->set_result('up_to_date');
|
3358 |
+
$this->skin->before();
|
3359 |
+
$this->skin->feedback('up_to_date');
|
3360 |
+
$this->skin->after();
|
3361 |
+
$results[$plugin] = true;
|
3362 |
+
continue;
|
3363 |
+
}
|
3364 |
+
|
3365 |
+
// Get the URL to the zip file.
|
3366 |
+
$r = $current->response[ $plugin ];
|
3367 |
+
|
3368 |
+
$this->skin->plugin_active = is_plugin_active($plugin);
|
3369 |
+
*/
|
3370 |
+
|
3371 |
+
$result = $this->run(
|
3372 |
+
array(
|
3373 |
+
'package' => $plugin, // [TGMPA + ] adjusted.
|
3374 |
+
'destination' => WP_PLUGIN_DIR,
|
3375 |
+
'clear_destination' => false, // [TGMPA + ] adjusted.
|
3376 |
+
'clear_working' => true,
|
3377 |
+
'is_multi' => true,
|
3378 |
+
'hook_extra' => array(
|
3379 |
+
'plugin' => $plugin,
|
3380 |
+
),
|
3381 |
+
)
|
3382 |
+
);
|
3383 |
+
|
3384 |
+
$results[ $plugin ] = $this->result;
|
3385 |
+
|
3386 |
+
// Prevent credentials auth screen from displaying multiple times.
|
3387 |
+
if ( false === $result ) {
|
3388 |
+
break;
|
3389 |
+
}
|
3390 |
+
} //end foreach $plugins
|
3391 |
+
|
3392 |
+
$this->maintenance_mode( false );
|
3393 |
+
|
3394 |
+
/**
|
3395 |
+
* Fires when the bulk upgrader process is complete.
|
3396 |
+
*
|
3397 |
+
* @since WP 3.6.0 / TGMPA 2.5.0
|
3398 |
+
*
|
3399 |
+
* @param Plugin_Upgrader $this Plugin_Upgrader instance. In other contexts, $this, might
|
3400 |
+
* be a Theme_Upgrader or Core_Upgrade instance.
|
3401 |
+
* @param array $data {
|
3402 |
+
* Array of bulk item update data.
|
3403 |
+
*
|
3404 |
+
* @type string $action Type of action. Default 'update'.
|
3405 |
+
* @type string $type Type of update process. Accepts 'plugin', 'theme', or 'core'.
|
3406 |
+
* @type bool $bulk Whether the update process is a bulk update. Default true.
|
3407 |
+
* @type array $packages Array of plugin, theme, or core packages to update.
|
3408 |
+
* }
|
3409 |
+
*/
|
3410 |
+
do_action( 'upgrader_process_complete', $this, array(
|
3411 |
+
'action' => 'install', // [TGMPA + ] adjusted.
|
3412 |
+
'type' => 'plugin',
|
3413 |
+
'bulk' => true,
|
3414 |
+
'plugins' => $plugins,
|
3415 |
+
) );
|
3416 |
+
|
3417 |
+
$this->skin->bulk_footer();
|
3418 |
+
|
3419 |
+
$this->skin->footer();
|
3420 |
+
|
3421 |
+
// Cleanup our hooks, in case something else does a upgrade on this connection.
|
3422 |
+
/* [TGMPA - ] remove_filter('upgrader_clear_destination', array($this, 'delete_old_plugin')); */
|
3423 |
+
|
3424 |
+
// [TGMPA + ] Remove our auto-activation hook.
|
3425 |
+
remove_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 );
|
3426 |
+
|
3427 |
+
// Force refresh of plugin update information.
|
3428 |
+
wp_clean_plugins_cache( $parsed_args['clear_update_cache'] );
|
3429 |
+
|
3430 |
+
return $results;
|
3431 |
+
}
|
3432 |
+
|
3433 |
+
/**
|
3434 |
+
* Handle a bulk upgrade request.
|
3435 |
+
*
|
3436 |
+
* @since 2.5.0
|
3437 |
+
*
|
3438 |
+
* @see Plugin_Upgrader::bulk_upgrade()
|
3439 |
+
*
|
3440 |
+
* @param array $plugins The local WP file_path's of the plugins which should be upgraded.
|
3441 |
+
* @param array $args Arbitrary passed extra arguments.
|
3442 |
+
* @return string|bool Install confirmation messages on success, false on failure.
|
3443 |
+
*/
|
3444 |
+
public function bulk_upgrade( $plugins, $args = array() ) {
|
3445 |
+
|
3446 |
+
add_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 );
|
3447 |
+
|
3448 |
+
$result = parent::bulk_upgrade( $plugins, $args );
|
3449 |
+
|
3450 |
+
remove_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 );
|
3451 |
+
|
3452 |
+
return $result;
|
3453 |
+
}
|
3454 |
+
|
3455 |
+
/**
|
3456 |
+
* Abuse a filter to auto-activate plugins after installation.
|
3457 |
+
*
|
3458 |
+
* Hooked into the 'upgrader_post_install' filter hook.
|
3459 |
+
*
|
3460 |
+
* @since 2.5.0
|
3461 |
+
*
|
3462 |
+
* @param bool $bool The value we need to give back (true).
|
3463 |
+
* @return bool
|
3464 |
+
*/
|
3465 |
+
public function auto_activate( $bool ) {
|
3466 |
+
// Only process the activation of installed plugins if the automatic flag is set to true.
|
3467 |
+
if ( $this->tgmpa->is_automatic ) {
|
3468 |
+
// Flush plugins cache so the headers of the newly installed plugins will be read correctly.
|
3469 |
+
wp_clean_plugins_cache();
|
3470 |
+
|
3471 |
+
// Get the installed plugin file.
|
3472 |
+
$plugin_info = $this->plugin_info();
|
3473 |
+
|
3474 |
+
// Don't try to activate on upgrade of active plugin as WP will do this already.
|
3475 |
+
if ( ! is_plugin_active( $plugin_info ) ) {
|
3476 |
+
$activate = activate_plugin( $plugin_info );
|
3477 |
+
|
3478 |
+
// Adjust the success string based on the activation result.
|
3479 |
+
$this->strings['process_success'] = $this->strings['process_success'] . "<br />\n";
|
3480 |
+
|
3481 |
+
if ( is_wp_error( $activate ) ) {
|
3482 |
+
$this->skin->error( $activate );
|
3483 |
+
$this->strings['process_success'] .= $this->strings['activation_failed'];
|
3484 |
+
} else {
|
3485 |
+
$this->strings['process_success'] .= $this->strings['activation_success'];
|
3486 |
+
}
|
3487 |
+
}
|
3488 |
+
}
|
3489 |
+
|
3490 |
+
return $bool;
|
3491 |
+
}
|
3492 |
+
}
|
3493 |
+
}
|
3494 |
+
|
3495 |
+
if ( ! class_exists( 'TGMPA_Bulk_Installer_Skin' ) ) {
|
3496 |
+
|
3497 |
+
/**
|
3498 |
+
* Installer skin to set strings for the bulk plugin installations..
|
3499 |
+
*
|
3500 |
+
* Extends Bulk_Upgrader_Skin and customizes to suit the installation of multiple
|
3501 |
+
* plugins.
|
3502 |
+
*
|
3503 |
+
* @since 2.2.0
|
3504 |
+
*
|
3505 |
+
* {@internal Since 2.5.2 the class has been renamed from TGM_Bulk_Installer_Skin to
|
3506 |
+
* TGMPA_Bulk_Installer_Skin.
|
3507 |
+
* This was done to prevent backward compatibility issues with v2.3.6.}}
|
3508 |
+
*
|
3509 |
+
* @see https://core.trac.wordpress.org/browser/trunk/src/wp-admin/includes/class-wp-upgrader-skins.php
|
3510 |
+
*
|
3511 |
+
* @package TGM-Plugin-Activation
|
3512 |
+
* @author Thomas Griffin
|
3513 |
+
* @author Gary Jones
|
3514 |
+
*/
|
3515 |
+
class TGMPA_Bulk_Installer_Skin extends Bulk_Upgrader_Skin {
|
3516 |
+
/**
|
3517 |
+
* Holds plugin info for each individual plugin installation.
|
3518 |
+
*
|
3519 |
+
* @since 2.2.0
|
3520 |
+
*
|
3521 |
+
* @var array
|
3522 |
+
*/
|
3523 |
+
public $plugin_info = array();
|
3524 |
+
|
3525 |
+
/**
|
3526 |
+
* Holds names of plugins that are undergoing bulk installations.
|
3527 |
+
*
|
3528 |
+
* @since 2.2.0
|
3529 |
+
*
|
3530 |
+
* @var array
|
3531 |
+
*/
|
3532 |
+
public $plugin_names = array();
|
3533 |
+
|
3534 |
+
/**
|
3535 |
+
* Integer to use for iteration through each plugin installation.
|
3536 |
+
*
|
3537 |
+
* @since 2.2.0
|
3538 |
+
*
|
3539 |
+
* @var integer
|
3540 |
+
*/
|
3541 |
+
public $i = 0;
|
3542 |
+
|
3543 |
+
/**
|
3544 |
+
* TGMPA instance
|
3545 |
+
*
|
3546 |
+
* @since 2.5.0
|
3547 |
+
*
|
3548 |
+
* @var object
|
3549 |
+
*/
|
3550 |
+
protected $tgmpa;
|
3551 |
+
|
3552 |
+
/**
|
3553 |
+
* Constructor. Parses default args with new ones and extracts them for use.
|
3554 |
+
*
|
3555 |
+
* @since 2.2.0
|
3556 |
+
*
|
3557 |
+
* @param array $args Arguments to pass for use within the class.
|
3558 |
+
*/
|
3559 |
+
public function __construct( $args = array() ) {
|
3560 |
+
// Get TGMPA class instance.
|
3561 |
+
$this->tgmpa = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) );
|
3562 |
+
|
3563 |
+
// Parse default and new args.
|
3564 |
+
$defaults = array(
|
3565 |
+
'url' => '',
|
3566 |
+
'nonce' => '',
|
3567 |
+
'names' => array(),
|
3568 |
+
'install_type' => 'install',
|
3569 |
+
);
|
3570 |
+
$args = wp_parse_args( $args, $defaults );
|
3571 |
+
|
3572 |
+
// Set plugin names to $this->plugin_names property.
|
3573 |
+
$this->plugin_names = $args['names'];
|
3574 |
+
|
3575 |
+
// Extract the new args.
|
3576 |
+
parent::__construct( $args );
|
3577 |
+
}
|
3578 |
+
|
3579 |
+
/**
|
3580 |
+
* Sets install skin strings for each individual plugin.
|
3581 |
+
*
|
3582 |
+
* Checks to see if the automatic activation flag is set and uses the
|
3583 |
+
* the proper strings accordingly.
|
3584 |
+
*
|
3585 |
+
* @since 2.2.0
|
3586 |
+
*/
|
3587 |
+
public function add_strings() {
|
3588 |
+
if ( 'update' === $this->options['install_type'] ) {
|
3589 |
+
parent::add_strings();
|
3590 |
+
/* translators: 1: plugin name, 2: action number 3: total number of actions. */
|
3591 |
+
$this->upgrader->strings['skin_before_update_header'] = __( 'Updating Plugin %1$s (%2$d/%3$d)', 'tgmpa' );
|
3592 |
+
} else {
|
3593 |
+
/* translators: 1: plugin name, 2: error message. */
|
3594 |
+
$this->upgrader->strings['skin_update_failed_error'] = __( 'An error occurred while installing %1$s: <strong>%2$s</strong>.', 'tgmpa' );
|
3595 |
+
/* translators: 1: plugin name. */
|
3596 |
+
$this->upgrader->strings['skin_update_failed'] = __( 'The installation of %1$s failed.', 'tgmpa' );
|
3597 |
+
|
3598 |
+
if ( $this->tgmpa->is_automatic ) {
|
3599 |
+
// Automatic activation strings.
|
3600 |
+
$this->upgrader->strings['skin_upgrade_start'] = __( 'The installation and activation process is starting. This process may take a while on some hosts, so please be patient.', 'tgmpa' );
|
3601 |
+
/* translators: 1: plugin name. */
|
3602 |
+
$this->upgrader->strings['skin_update_successful'] = __( '%1$s installed and activated successfully.', 'tgmpa' ) . ' <a href="#" class="hide-if-no-js" onclick="%2$s"><span>' . esc_html__( 'Show Details', 'tgmpa' ) . '</span><span class="hidden">' . esc_html__( 'Hide Details', 'tgmpa' ) . '</span>.</a>';
|
3603 |
+
$this->upgrader->strings['skin_upgrade_end'] = __( 'All installations and activations have been completed.', 'tgmpa' );
|
3604 |
+
/* translators: 1: plugin name, 2: action number 3: total number of actions. */
|
3605 |
+
$this->upgrader->strings['skin_before_update_header'] = __( 'Installing and Activating Plugin %1$s (%2$d/%3$d)', 'tgmpa' );
|
3606 |
+
} else {
|
3607 |
+
// Default installation strings.
|
3608 |
+
$this->upgrader->strings['skin_upgrade_start'] = __( 'The installation process is starting. This process may take a while on some hosts, so please be patient.', 'tgmpa' );
|
3609 |
+
/* translators: 1: plugin name. */
|
3610 |
+
$this->upgrader->strings['skin_update_successful'] = esc_html__( '%1$s installed successfully.', 'tgmpa' ) . ' <a href="#" class="hide-if-no-js" onclick="%2$s"><span>' . esc_html__( 'Show Details', 'tgmpa' ) . '</span><span class="hidden">' . esc_html__( 'Hide Details', 'tgmpa' ) . '</span>.</a>';
|
3611 |
+
$this->upgrader->strings['skin_upgrade_end'] = __( 'All installations have been completed.', 'tgmpa' );
|
3612 |
+
/* translators: 1: plugin name, 2: action number 3: total number of actions. */
|
3613 |
+
$this->upgrader->strings['skin_before_update_header'] = __( 'Installing Plugin %1$s (%2$d/%3$d)', 'tgmpa' );
|
3614 |
+
}
|
3615 |
+
}
|
3616 |
+
}
|
3617 |
+
|
3618 |
+
/**
|
3619 |
+
* Outputs the header strings and necessary JS before each plugin installation.
|
3620 |
+
*
|
3621 |
+
* @since 2.2.0
|
3622 |
+
*
|
3623 |
+
* @param string $title Unused in this implementation.
|
3624 |
+
*/
|
3625 |
+
public function before( $title = '' ) {
|
3626 |
+
if ( empty( $title ) ) {
|
3627 |
+
$title = esc_html( $this->plugin_names[ $this->i ] );
|
3628 |
+
}
|
3629 |
+
parent::before( $title );
|
3630 |
+
}
|
3631 |
+
|
3632 |
+
/**
|
3633 |
+
* Outputs the footer strings and necessary JS after each plugin installation.
|
3634 |
+
*
|
3635 |
+
* Checks for any errors and outputs them if they exist, else output
|
3636 |
+
* success strings.
|
3637 |
+
*
|
3638 |
+
* @since 2.2.0
|
3639 |
+
*
|
3640 |
+
* @param string $title Unused in this implementation.
|
3641 |
+
*/
|
3642 |
+
public function after( $title = '' ) {
|
3643 |
+
if ( empty( $title ) ) {
|
3644 |
+
$title = esc_html( $this->plugin_names[ $this->i ] );
|
3645 |
+
}
|
3646 |
+
parent::after( $title );
|
3647 |
+
|
3648 |
+
$this->i++;
|
3649 |
+
}
|
3650 |
+
|
3651 |
+
/**
|
3652 |
+
* Outputs links after bulk plugin installation is complete.
|
3653 |
+
*
|
3654 |
+
* @since 2.2.0
|
3655 |
+
*/
|
3656 |
+
public function bulk_footer() {
|
3657 |
+
// Serve up the string to say installations (and possibly activations) are complete.
|
3658 |
+
parent::bulk_footer();
|
3659 |
+
|
3660 |
+
// Flush plugins cache so we can make sure that the installed plugins list is always up to date.
|
3661 |
+
wp_clean_plugins_cache();
|
3662 |
+
|
3663 |
+
$this->tgmpa->show_tgmpa_version();
|
3664 |
+
|
3665 |
+
// Display message based on if all plugins are now active or not.
|
3666 |
+
$update_actions = array();
|
3667 |
+
|
3668 |
+
if ( $this->tgmpa->is_tgmpa_complete() ) {
|
3669 |
+
// All plugins are active, so we display the complete string and hide the menu to protect users.
|
3670 |
+
echo '<style type="text/css">#adminmenu .wp-submenu li.current { display: none !important; }</style>';
|
3671 |
+
$update_actions['dashboard'] = sprintf(
|
3672 |
+
esc_html( $this->tgmpa->strings['complete'] ),
|
3673 |
+
'<a href="' . esc_url( self_admin_url() ) . '">' . esc_html__( 'Return to the Dashboard', 'tgmpa' ) . '</a>'
|
3674 |
+
);
|
3675 |
+
} else {
|
3676 |
+
$update_actions['tgmpa_page'] = '<a href="' . esc_url( $this->tgmpa->get_tgmpa_url() ) . '" target="_parent">' . esc_html( $this->tgmpa->strings['return'] ) . '</a>';
|
3677 |
+
}
|
3678 |
+
|
3679 |
+
/**
|
3680 |
+
* Filter the list of action links available following bulk plugin installs/updates.
|
3681 |
+
*
|
3682 |
+
* @since 2.5.0
|
3683 |
+
*
|
3684 |
+
* @param array $update_actions Array of plugin action links.
|
3685 |
+
* @param array $plugin_info Array of information for the last-handled plugin.
|
3686 |
+
*/
|
3687 |
+
$update_actions = apply_filters( 'tgmpa_update_bulk_plugins_complete_actions', $update_actions, $this->plugin_info );
|
3688 |
+
|
3689 |
+
if ( ! empty( $update_actions ) ) {
|
3690 |
+
$this->feedback( implode( ' | ', (array) $update_actions ) );
|
3691 |
+
}
|
3692 |
+
}
|
3693 |
+
|
3694 |
+
/* *********** DEPRECATED METHODS *********** */
|
3695 |
+
|
3696 |
+
/**
|
3697 |
+
* Flush header output buffer.
|
3698 |
+
*
|
3699 |
+
* @since 2.2.0
|
3700 |
+
* @deprecated 2.5.0 use {@see Bulk_Upgrader_Skin::flush_output()} instead
|
3701 |
+
* @see Bulk_Upgrader_Skin::flush_output()
|
3702 |
+
*/
|
3703 |
+
public function before_flush_output() {
|
3704 |
+
_deprecated_function( __FUNCTION__, 'TGMPA 2.5.0', 'Bulk_Upgrader_Skin::flush_output()' );
|
3705 |
+
$this->flush_output();
|
3706 |
+
}
|
3707 |
+
|
3708 |
+
/**
|
3709 |
+
* Flush footer output buffer and iterate $this->i to make sure the
|
3710 |
+
* installation strings reference the correct plugin.
|
3711 |
+
*
|
3712 |
+
* @since 2.2.0
|
3713 |
+
* @deprecated 2.5.0 use {@see Bulk_Upgrader_Skin::flush_output()} instead
|
3714 |
+
* @see Bulk_Upgrader_Skin::flush_output()
|
3715 |
+
*/
|
3716 |
+
public function after_flush_output() {
|
3717 |
+
_deprecated_function( __FUNCTION__, 'TGMPA 2.5.0', 'Bulk_Upgrader_Skin::flush_output()' );
|
3718 |
+
$this->flush_output();
|
3719 |
+
$this->i++;
|
3720 |
+
}
|
3721 |
+
}
|
3722 |
+
}
|
3723 |
+
}
|
3724 |
+
}
|
3725 |
+
}
|
3726 |
+
|
3727 |
+
if ( ! class_exists( 'TGMPA_Utils' ) ) {
|
3728 |
+
|
3729 |
+
/**
|
3730 |
+
* Generic utilities for TGMPA.
|
3731 |
+
*
|
3732 |
+
* All methods are static, poor-dev name-spacing class wrapper.
|
3733 |
+
*
|
3734 |
+
* Class was called TGM_Utils in 2.5.0 but renamed TGMPA_Utils in 2.5.1 as this was conflicting with Soliloquy.
|
3735 |
+
*
|
3736 |
+
* @since 2.5.0
|
3737 |
+
*
|
3738 |
+
* @package TGM-Plugin-Activation
|
3739 |
+
* @author Juliette Reinders Folmer
|
3740 |
+
*/
|
3741 |
+
class TGMPA_Utils {
|
3742 |
+
/**
|
3743 |
+
* Whether the PHP filter extension is enabled.
|
3744 |
+
*
|
3745 |
+
* @see http://php.net/book.filter
|
3746 |
+
*
|
3747 |
+
* @since 2.5.0
|
3748 |
+
*
|
3749 |
+
* @static
|
3750 |
+
*
|
3751 |
+
* @var bool $has_filters True is the extension is enabled.
|
3752 |
+
*/
|
3753 |
+
public static $has_filters;
|
3754 |
+
|
3755 |
+
/**
|
3756 |
+
* Wrap an arbitrary string in <em> tags. Meant to be used in combination with array_map().
|
3757 |
+
*
|
3758 |
+
* @since 2.5.0
|
3759 |
+
*
|
3760 |
+
* @static
|
3761 |
+
*
|
3762 |
+
* @param string $string Text to be wrapped.
|
3763 |
+
* @return string
|
3764 |
+
*/
|
3765 |
+
public static function wrap_in_em( $string ) {
|
3766 |
+
return '<em>' . wp_kses_post( $string ) . '</em>';
|
3767 |
+
}
|
3768 |
+
|
3769 |
+
/**
|
3770 |
+
* Wrap an arbitrary string in <strong> tags. Meant to be used in combination with array_map().
|
3771 |
+
*
|
3772 |
+
* @since 2.5.0
|
3773 |
+
*
|
3774 |
+
* @static
|
3775 |
+
*
|
3776 |
+
* @param string $string Text to be wrapped.
|
3777 |
+
* @return string
|
3778 |
+
*/
|
3779 |
+
public static function wrap_in_strong( $string ) {
|
3780 |
+
return '<strong>' . wp_kses_post( $string ) . '</strong>';
|
3781 |
+
}
|
3782 |
+
|
3783 |
+
/**
|
3784 |
+
* Helper function: Validate a value as boolean
|
3785 |
+
*
|
3786 |
+
* @since 2.5.0
|
3787 |
+
*
|
3788 |
+
* @static
|
3789 |
+
*
|
3790 |
+
* @param mixed $value Arbitrary value.
|
3791 |
+
* @return bool
|
3792 |
+
*/
|
3793 |
+
public static function validate_bool( $value ) {
|
3794 |
+
if ( ! isset( self::$has_filters ) ) {
|
3795 |
+
self::$has_filters = extension_loaded( 'filter' );
|
3796 |
+
}
|
3797 |
+
|
3798 |
+
if ( self::$has_filters ) {
|
3799 |
+
return filter_var( $value, FILTER_VALIDATE_BOOLEAN );
|
3800 |
+
} else {
|
3801 |
+
return self::emulate_filter_bool( $value );
|
3802 |
+
}
|
3803 |
+
}
|
3804 |
+
|
3805 |
+
/**
|
3806 |
+
* Helper function: Cast a value to bool
|
3807 |
+
*
|
3808 |
+
* @since 2.5.0
|
3809 |
+
*
|
3810 |
+
* @static
|
3811 |
+
*
|
3812 |
+
* @param mixed $value Value to cast.
|
3813 |
+
* @return bool
|
3814 |
+
*/
|
3815 |
+
protected static function emulate_filter_bool( $value ) {
|
3816 |
+
// @codingStandardsIgnoreStart
|
3817 |
+
static $true = array(
|
3818 |
+
'1',
|
3819 |
+
'true', 'True', 'TRUE',
|
3820 |
+
'y', 'Y',
|
3821 |
+
'yes', 'Yes', 'YES',
|
3822 |
+
'on', 'On', 'ON',
|
3823 |
+
);
|
3824 |
+
static $false = array(
|
3825 |
+
'0',
|
3826 |
+
'false', 'False', 'FALSE',
|
3827 |
+
'n', 'N',
|
3828 |
+
'no', 'No', 'NO',
|
3829 |
+
'off', 'Off', 'OFF',
|
3830 |
+
);
|
3831 |
+
// @codingStandardsIgnoreEnd
|
3832 |
+
|
3833 |
+
if ( is_bool( $value ) ) {
|
3834 |
+
return $value;
|
3835 |
+
} elseif ( is_int( $value ) && ( 0 === $value || 1 === $value ) ) {
|
3836 |
+
return (bool) $value;
|
3837 |
+
} elseif ( ( is_float( $value ) && ! is_nan( $value ) ) && ( (float) 0 === $value || (float) 1 === $value ) ) {
|
3838 |
+
return (bool) $value;
|
3839 |
+
} elseif ( is_string( $value ) ) {
|
3840 |
+
$value = trim( $value );
|
3841 |
+
if ( in_array( $value, $true, true ) ) {
|
3842 |
+
return true;
|
3843 |
+
} elseif ( in_array( $value, $false, true ) ) {
|
3844 |
+
return false;
|
3845 |
+
} else {
|
3846 |
+
return false;
|
3847 |
+
}
|
3848 |
+
}
|
3849 |
+
|
3850 |
+
return false;
|
3851 |
+
}
|
3852 |
+
} // End of class TGMPA_Utils
|
3853 |
+
} // End of class_exists wrapper
|
admin/activation/elementor-activation.php
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This file represents an example of the code that themes would use to register
|
4 |
+
* the required plugins.
|
5 |
+
*
|
6 |
+
* It is expected that theme authors would copy and paste this code into their
|
7 |
+
* functions.php file, and amend to suit.
|
8 |
+
*
|
9 |
+
* @see http://tgmpluginactivation.com/configuration/ for detailed documentation.
|
10 |
+
*
|
11 |
+
* @package TGM-Plugin-Activation
|
12 |
+
* @subpackage Example
|
13 |
+
* @version 2.6.0
|
14 |
+
* @author Thomas Griffin, Gary Jones, Juliette Reinders Folmer
|
15 |
+
* @copyright Copyright (c) 2011, Thomas Griffin
|
16 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GPL v2 or later
|
17 |
+
* @link https://github.com/TGMPA/TGM-Plugin-Activation
|
18 |
+
*/
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Include the TGM_Plugin_Activation class.
|
22 |
+
*
|
23 |
+
* Depending on your implementation, you may want to change the include call:
|
24 |
+
*
|
25 |
+
* Parent Theme:
|
26 |
+
* require_once get_template_directory() . '/path/to/class-tgm-plugin-activation.php';
|
27 |
+
*
|
28 |
+
* Child Theme:
|
29 |
+
* require_once get_stylesheet_directory() . '/path/to/class-tgm-plugin-activation.php';
|
30 |
+
*
|
31 |
+
* Plugin:
|
32 |
+
* require_once dirname( __FILE__ ) . '/path/to/class-tgm-plugin-activation.php';
|
33 |
+
*/
|
34 |
+
require_once dirname( __FILE__ ) . '/class-tgm-plugin-activation.php';
|
35 |
+
|
36 |
+
add_action( 'tgmpa_register', 'premium_addons_required_plugins' );
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Register the required plugins for this theme.
|
40 |
+
*
|
41 |
+
* In this example, we register five plugins:
|
42 |
+
* - one included with the TGMPA library
|
43 |
+
* - two from an external source, one from an arbitrary source, one from a GitHub repository
|
44 |
+
* - two from the .org repo, where one demonstrates the use of the `is_callable` argument
|
45 |
+
*
|
46 |
+
* The variables passed to the `tgmpa()` function should be:
|
47 |
+
* - an array of plugin arrays;
|
48 |
+
* - optionally a configuration array.
|
49 |
+
* If you are not changing anything in the configuration array, you can remove the array and remove the
|
50 |
+
* variable from the function call: `tgmpa( $plugins );`.
|
51 |
+
* In that case, the TGMPA default settings will be used.
|
52 |
+
*
|
53 |
+
* This function is hooked into `tgmpa_register`, which is fired on the WP `init` action on priority 10.
|
54 |
+
*/
|
55 |
+
function premium_addons_required_plugins() {
|
56 |
+
/*
|
57 |
+
* Array of plugin arrays. Required keys are name and slug.
|
58 |
+
* If the source is NOT from the .org repo, then source is also required.
|
59 |
+
*/
|
60 |
+
$plugins = array(
|
61 |
+
array(
|
62 |
+
'name' => __( 'Elementor Page Builder', 'premium_elementor' ),
|
63 |
+
'slug' => 'elementor',
|
64 |
+
'required' => true
|
65 |
+
),
|
66 |
+
|
67 |
+
);
|
68 |
+
|
69 |
+
/*
|
70 |
+
* Array of configuration settings. Amend each line as needed.
|
71 |
+
*
|
72 |
+
* TGMPA will start providing localized text strings soon. If you already have translations of our standard
|
73 |
+
* strings available, please help us make TGMPA even better by giving us access to these translations or by
|
74 |
+
* sending in a pull-request with .po file(s) with the translations.
|
75 |
+
*
|
76 |
+
* Only uncomment the strings in the config array if you want to customize the strings.
|
77 |
+
*/
|
78 |
+
$config = array(
|
79 |
+
'id' => 'premium-addons-elementor', // Unique ID for hashing notices for multiple instances of TGMPA.
|
80 |
+
'default_path' => '', // Default absolute path to bundled plugins.
|
81 |
+
'menu' => 'tgmpa-install-plugins', // Menu slug.
|
82 |
+
'parent_slug' => 'themes.php', // Parent menu slug.
|
83 |
+
'capability' => 'manage_options', // Capability needed to view plugin install page, should be a capability associated with the parent menu used.
|
84 |
+
'has_notices' => true, // Show admin notices or not.
|
85 |
+
'dismissable' => true, // If false, a user cannot dismiss the nag message.
|
86 |
+
'dismiss_msg' => '', // If 'dismissable' is false, this message will be output at top of nag.
|
87 |
+
'is_automatic' => false, // Automatically activate plugins after installation or not.
|
88 |
+
'message' => '', // Message to output right before the plugins table.
|
89 |
+
|
90 |
+
);
|
91 |
+
|
92 |
+
tgmpa( $plugins, $config );
|
93 |
+
}
|
admin/assets/admin.css
ADDED
@@ -0,0 +1,130 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.pa-header-wrapper {
|
2 |
+
background: #eee;
|
3 |
+
padding: 20px;
|
4 |
+
border: 1px solid #ccc;
|
5 |
+
margin-bottom: 40px;
|
6 |
+
overflow: hidden;
|
7 |
+
}
|
8 |
+
.pa-title-left {
|
9 |
+
float: left;
|
10 |
+
}
|
11 |
+
h1.pa-title {
|
12 |
+
padding: 0;
|
13 |
+
font-weight: bold;
|
14 |
+
font-size: 32px;
|
15 |
+
margin-top: 5px;
|
16 |
+
}
|
17 |
+
.pa-title-right{
|
18 |
+
float: right;
|
19 |
+
}
|
20 |
+
.button.pa-btn {
|
21 |
+
border: none;
|
22 |
+
color: #fff;
|
23 |
+
text-align: center;
|
24 |
+
padding: 10px 20px;
|
25 |
+
max-width: 250px;
|
26 |
+
height: auto;
|
27 |
+
margin-bottom: 15px;
|
28 |
+
font-size: 15px;
|
29 |
+
display: block;
|
30 |
+
font-weight: bold;
|
31 |
+
text-transform: uppercase;
|
32 |
+
box-shadow: none;
|
33 |
+
-webkit-transition: all 0.3s ease-in-out;
|
34 |
+
transition: all 0.3s ease-in-out;
|
35 |
+
}
|
36 |
+
.pa-btn.pa-save-button {
|
37 |
+
background-color: #1A7FC2;
|
38 |
+
margin-bottom: 0;
|
39 |
+
}
|
40 |
+
.pa-settings > h1 {
|
41 |
+
text-align: center;
|
42 |
+
font-size: 35px;
|
43 |
+
font-weight: 600;
|
44 |
+
color: #0073aa;
|
45 |
+
}
|
46 |
+
/*ELements Settings Tab*/
|
47 |
+
.pa-elements-notice {
|
48 |
+
text-align: center;
|
49 |
+
padding: 0.8em;
|
50 |
+
font-size: 1.4em;
|
51 |
+
font-weight: bold;
|
52 |
+
color: #fff;
|
53 |
+
border: 1px solid #ddd;
|
54 |
+
background-color: #0073aa;
|
55 |
+
}
|
56 |
+
.pa-element-name {
|
57 |
+
font-size: 14px;
|
58 |
+
font-weight: bold;
|
59 |
+
}
|
60 |
+
.pa-elements-table td {
|
61 |
+
width: 21%;
|
62 |
+
margin-right: 50px;
|
63 |
+
}
|
64 |
+
.pa-elements-table .pa-element-desc {
|
65 |
+
font-weight: 300;
|
66 |
+
padding-bottom: 1.5em;
|
67 |
+
border-bottom: 1px solid #ddd;
|
68 |
+
}
|
69 |
+
/* The switch - the box around the slider */
|
70 |
+
.switch {
|
71 |
+
position: relative;
|
72 |
+
display: inline-block;
|
73 |
+
width: 60px;
|
74 |
+
height: 33px;
|
75 |
+
}
|
76 |
+
/* Hide default HTML checkbox */
|
77 |
+
.switch input {
|
78 |
+
display:none;
|
79 |
+
}
|
80 |
+
|
81 |
+
/* The slider */
|
82 |
+
.slider {
|
83 |
+
position: absolute;
|
84 |
+
cursor: pointer;
|
85 |
+
top: 0;
|
86 |
+
left: 0;
|
87 |
+
right: 0;
|
88 |
+
bottom: 0;
|
89 |
+
background-color: #ccc;
|
90 |
+
-webkit-transition: .4s;
|
91 |
+
transition: .4s;
|
92 |
+
}
|
93 |
+
|
94 |
+
.slider:before {
|
95 |
+
position: absolute;
|
96 |
+
content: "";
|
97 |
+
height: 23px;
|
98 |
+
width: 23px;
|
99 |
+
left: 6px;
|
100 |
+
bottom: 5.5px;
|
101 |
+
box-shadow: 0 0 0 5px #70C1B3 inset;
|
102 |
+
background-color: white;
|
103 |
+
-webkit-transition: .4s;
|
104 |
+
transition: .4s;
|
105 |
+
}
|
106 |
+
|
107 |
+
input:checked + .slider {
|
108 |
+
background-color: #0073aa;
|
109 |
+
}
|
110 |
+
|
111 |
+
input:focus + .slider {
|
112 |
+
box-shadow: 0 0 10px #0073aa;
|
113 |
+
}
|
114 |
+
|
115 |
+
input:checked + .slider:before {
|
116 |
+
-webkit-transform: translateX(25px);
|
117 |
+
-ms-transform: translateX(25px);
|
118 |
+
transform: translateX(25px);
|
119 |
+
}
|
120 |
+
|
121 |
+
/* Rounded sliders */
|
122 |
+
.slider.round {
|
123 |
+
border-radius: 34px;
|
124 |
+
}
|
125 |
+
.slider.round:before {
|
126 |
+
border-radius: 50%;
|
127 |
+
}
|
128 |
+
#elements .pa-btn {
|
129 |
+
margin-top: 20px;
|
130 |
+
}
|
admin/assets/admin.js
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
//Go Between the Tabs
|
2 |
+
( function ( $ ){
|
3 |
+
"use strict";
|
4 |
+
$(".pa-settings-tabs").tabs();
|
5 |
+
|
6 |
+
|
7 |
+
$("a.pa-tab-list-item").on("click", function () {
|
8 |
+
var tabHref = $(this).attr('href');
|
9 |
+
window.location.hash = tabHref;
|
10 |
+
$("html , body").scrollTop(tabHref);
|
11 |
+
});
|
12 |
+
|
13 |
+
|
14 |
+
$(".pa-elements-table input[type='checkbox']").on("click", function(){
|
15 |
+
$(".pa-save-button").addClass("pa-save-now");
|
16 |
+
});
|
17 |
+
|
18 |
+
|
19 |
+
$( 'form#pa-settings' ).on( 'submit', function(e) {
|
20 |
+
e.preventDefault();
|
21 |
+
$.ajax( {
|
22 |
+
url: settings.ajaxurl,
|
23 |
+
type: 'post',
|
24 |
+
data: {
|
25 |
+
action: 'save_settings_with_ajax',
|
26 |
+
fields: $( 'form#pa-settings' ).serialize(),
|
27 |
+
},
|
28 |
+
success: function( response ) {
|
29 |
+
swal(
|
30 |
+
'Settings Saved!',
|
31 |
+
'Click OK to continue',
|
32 |
+
'success'
|
33 |
+
);
|
34 |
+
},
|
35 |
+
error: function() {
|
36 |
+
swal(
|
37 |
+
'Oops...',
|
38 |
+
'Something Wrong!',
|
39 |
+
);
|
40 |
+
}
|
41 |
+
} );
|
42 |
+
|
43 |
+
} );
|
44 |
+
|
45 |
+
} )(jQuery);
|
admin/assets/js/sweetalert2/css/sweetalert2.min.css
ADDED
@@ -0,0 +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;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;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-styled:focus{outline:0;-webkit-box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(50,100,150,.4);box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(50,100,150,.4)}.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;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 .3s,-webkit-box-shadow .3s;transition:border-color .3s,-webkit-box-shadow .3s;transition:border-color .3s,box-shadow .3s;transition:border-color .3s,box-shadow .3s,-webkit-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::-webkit-input-placeholder,.swal2-modal .swal2-input::-webkit-input-placeholder,.swal2-modal .swal2-textarea::-webkit-input-placeholder{color:#ccc}.swal2-modal .swal2-file:-ms-input-placeholder,.swal2-modal .swal2-input:-ms-input-placeholder,.swal2-modal .swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-modal .swal2-file::placeholder,.swal2-modal .swal2-input::placeholder,.swal2-modal .swal2-textarea::placeholder{color:#ccc}.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);transform:rotate(45deg);left:17px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{-webkit-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);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);transform:rotate(-45deg);-webkit-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);transform:rotate(-45deg);-webkit-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);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);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{width:47px;right:8px;top:38px;-webkit-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)}}
|
admin/assets/js/sweetalert2/js/core.js
ADDED
@@ -0,0 +1,7613 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* core-js 2.4.1
|
3 |
+
* https://github.com/zloirock/core-js
|
4 |
+
* License: http://rock.mit-license.org
|
5 |
+
* © 2016 Denis Pushkarev
|
6 |
+
*/
|
7 |
+
!function(__e, __g, undefined){
|
8 |
+
'use strict';
|
9 |
+
/******/ (function(modules) { // webpackBootstrap
|
10 |
+
/******/ // The module cache
|
11 |
+
/******/ var installedModules = {};
|
12 |
+
|
13 |
+
/******/ // The require function
|
14 |
+
/******/ function __webpack_require__(moduleId) {
|
15 |
+
|
16 |
+
/******/ // Check if module is in cache
|
17 |
+
/******/ if(installedModules[moduleId])
|
18 |
+
/******/ return installedModules[moduleId].exports;
|
19 |
+
|
20 |
+
/******/ // Create a new module (and put it into the cache)
|
21 |
+
/******/ var module = installedModules[moduleId] = {
|
22 |
+
/******/ exports: {},
|
23 |
+
/******/ id: moduleId,
|
24 |
+
/******/ loaded: false
|
25 |
+
/******/ };
|
26 |
+
|
27 |
+
/******/ // Execute the module function
|
28 |
+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
29 |
+
|
30 |
+
/******/ // Flag the module as loaded
|
31 |
+
/******/ module.loaded = true;
|
32 |
+
|
33 |
+
/******/ // Return the exports of the module
|
34 |
+
/******/ return module.exports;
|
35 |
+
/******/ }
|
36 |
+
|
37 |
+
|
38 |
+
/******/ // expose the modules object (__webpack_modules__)
|
39 |
+
/******/ __webpack_require__.m = modules;
|
40 |
+
|
41 |
+
/******/ // expose the module cache
|
42 |
+
/******/ __webpack_require__.c = installedModules;
|
43 |
+
|
44 |
+
/******/ // __webpack_public_path__
|
45 |
+
/******/ __webpack_require__.p = "";
|
46 |
+
|
47 |
+
/******/ // Load entry module and return exports
|
48 |
+
/******/ return __webpack_require__(0);
|
49 |
+
/******/ })
|
50 |
+
/************************************************************************/
|
51 |
+
/******/ ([
|
52 |
+
/* 0 */
|
53 |
+
/***/ function(module, exports, __webpack_require__) {
|
54 |
+
|
55 |
+
__webpack_require__(1);
|
56 |
+
__webpack_require__(50);
|
57 |
+
__webpack_require__(51);
|
58 |
+
__webpack_require__(52);
|
59 |
+
__webpack_require__(54);
|
60 |
+
__webpack_require__(55);
|
61 |
+
__webpack_require__(58);
|
62 |
+
__webpack_require__(59);
|
63 |
+
__webpack_require__(60);
|
64 |
+
__webpack_require__(61);
|
65 |
+
__webpack_require__(62);
|
66 |
+
__webpack_require__(63);
|
67 |
+
__webpack_require__(64);
|
68 |
+
__webpack_require__(65);
|
69 |
+
__webpack_require__(66);
|
70 |
+
__webpack_require__(68);
|
71 |
+
__webpack_require__(70);
|
72 |
+
__webpack_require__(72);
|
73 |
+
__webpack_require__(74);
|
74 |
+
__webpack_require__(77);
|
75 |
+
__webpack_require__(78);
|
76 |
+
__webpack_require__(79);
|
77 |
+
__webpack_require__(83);
|
78 |
+
__webpack_require__(86);
|
79 |
+
__webpack_require__(87);
|
80 |
+
__webpack_require__(88);
|
81 |
+
__webpack_require__(89);
|
82 |
+
__webpack_require__(91);
|
83 |
+
__webpack_require__(92);
|
84 |
+
__webpack_require__(93);
|
85 |
+
__webpack_require__(94);
|
86 |
+
__webpack_require__(95);
|
87 |
+
__webpack_require__(97);
|
88 |
+
__webpack_require__(99);
|
89 |
+
__webpack_require__(100);
|
90 |
+
__webpack_require__(101);
|
91 |
+
__webpack_require__(103);
|
92 |
+
__webpack_require__(104);
|
93 |
+
__webpack_require__(105);
|
94 |
+
__webpack_require__(107);
|
95 |
+
__webpack_require__(108);
|
96 |
+
__webpack_require__(109);
|
97 |
+
__webpack_require__(111);
|
98 |
+
__webpack_require__(112);
|
99 |
+
__webpack_require__(113);
|
100 |
+
__webpack_require__(114);
|
101 |
+
__webpack_require__(115);
|
102 |
+
__webpack_require__(116);
|
103 |
+
__webpack_require__(117);
|
104 |
+
__webpack_require__(118);
|
105 |
+
__webpack_require__(119);
|
106 |
+
__webpack_require__(120);
|
107 |
+
__webpack_require__(121);
|
108 |
+
__webpack_require__(122);
|
109 |
+
__webpack_require__(123);
|
110 |
+
__webpack_require__(124);
|
111 |
+
__webpack_require__(126);
|
112 |
+
__webpack_require__(130);
|
113 |
+
__webpack_require__(131);
|
114 |
+
__webpack_require__(132);
|
115 |
+
__webpack_require__(133);
|
116 |
+
__webpack_require__(137);
|
117 |
+
__webpack_require__(139);
|
118 |
+
__webpack_require__(140);
|
119 |
+
__webpack_require__(141);
|
120 |
+
__webpack_require__(142);
|
121 |
+
__webpack_require__(143);
|
122 |
+
__webpack_require__(144);
|
123 |
+
__webpack_require__(145);
|
124 |
+
__webpack_require__(146);
|
125 |
+
__webpack_require__(147);
|
126 |
+
__webpack_require__(148);
|
127 |
+
__webpack_require__(149);
|
128 |
+
__webpack_require__(150);
|
129 |
+
__webpack_require__(151);
|
130 |
+
__webpack_require__(152);
|
131 |
+
__webpack_require__(158);
|
132 |
+
__webpack_require__(159);
|
133 |
+
__webpack_require__(161);
|
134 |
+
__webpack_require__(162);
|
135 |
+
__webpack_require__(163);
|
136 |
+
__webpack_require__(167);
|
137 |
+
__webpack_require__(168);
|
138 |
+
__webpack_require__(169);
|
139 |
+
__webpack_require__(170);
|
140 |
+
__webpack_require__(171);
|
141 |
+
__webpack_require__(173);
|
142 |
+
__webpack_require__(174);
|
143 |
+
__webpack_require__(175);
|
144 |
+
__webpack_require__(176);
|
145 |
+
__webpack_require__(179);
|
146 |
+
__webpack_require__(181);
|
147 |
+
__webpack_require__(182);
|
148 |
+
__webpack_require__(183);
|
149 |
+
__webpack_require__(185);
|
150 |
+
__webpack_require__(187);
|
151 |
+
__webpack_require__(189);
|
152 |
+
__webpack_require__(190);
|
153 |
+
__webpack_require__(191);
|
154 |
+
__webpack_require__(193);
|
155 |
+
__webpack_require__(194);
|
156 |
+
__webpack_require__(195);
|
157 |
+
__webpack_require__(196);
|
158 |
+
__webpack_require__(203);
|
159 |
+
__webpack_require__(206);
|
160 |
+
__webpack_require__(207);
|
161 |
+
__webpack_require__(209);
|
162 |
+
__webpack_require__(210);
|
163 |
+
__webpack_require__(211);
|
164 |
+
__webpack_require__(212);
|
165 |
+
__webpack_require__(213);
|
166 |
+
__webpack_require__(214);
|
167 |
+
__webpack_require__(215);
|
168 |
+
__webpack_require__(216);
|
169 |
+
__webpack_require__(217);
|
170 |
+
__webpack_require__(218);
|
171 |
+
__webpack_require__(219);
|
172 |
+
__webpack_require__(220);
|
173 |
+
__webpack_require__(222);
|
174 |
+
__webpack_require__(223);
|
175 |
+
__webpack_require__(224);
|
176 |
+
__webpack_require__(225);
|
177 |
+
__webpack_require__(226);
|
178 |
+
__webpack_require__(227);
|
179 |
+
__webpack_require__(228);
|
180 |
+
__webpack_require__(229);
|
181 |
+
__webpack_require__(231);
|
182 |
+
__webpack_require__(234);
|
183 |
+
__webpack_require__(235);
|
184 |
+
__webpack_require__(237);
|
185 |
+
__webpack_require__(238);
|
186 |
+
__webpack_require__(239);
|
187 |
+
__webpack_require__(240);
|
188 |
+
__webpack_require__(241);
|
189 |
+
__webpack_require__(242);
|
190 |
+
__webpack_require__(243);
|
191 |
+
__webpack_require__(244);
|
192 |
+
__webpack_require__(245);
|
193 |
+
__webpack_require__(246);
|
194 |
+
__webpack_require__(247);
|
195 |
+
__webpack_require__(249);
|
196 |
+
__webpack_require__(250);
|
197 |
+
__webpack_require__(251);
|
198 |
+
__webpack_require__(252);
|
199 |
+
__webpack_require__(253);
|
200 |
+
__webpack_require__(254);
|
201 |
+
__webpack_require__(255);
|
202 |
+
__webpack_require__(256);
|
203 |
+
__webpack_require__(258);
|
204 |
+
__webpack_require__(259);
|
205 |
+
__webpack_require__(261);
|
206 |
+
__webpack_require__(262);
|
207 |
+
__webpack_require__(263);
|
208 |
+
__webpack_require__(264);
|
209 |
+
__webpack_require__(267);
|
210 |
+
__webpack_require__(268);
|
211 |
+
__webpack_require__(269);
|
212 |
+
__webpack_require__(270);
|
213 |
+
__webpack_require__(271);
|
214 |
+
__webpack_require__(272);
|
215 |
+
__webpack_require__(273);
|
216 |
+
__webpack_require__(274);
|
217 |
+
__webpack_require__(276);
|
218 |
+
__webpack_require__(277);
|
219 |
+
__webpack_require__(278);
|
220 |
+
__webpack_require__(279);
|
221 |
+
__webpack_require__(280);
|
222 |
+
__webpack_require__(281);
|
223 |
+
__webpack_require__(282);
|
224 |
+
__webpack_require__(283);
|
225 |
+
__webpack_require__(284);
|
226 |
+
__webpack_require__(285);
|
227 |
+
__webpack_require__(286);
|
228 |
+
__webpack_require__(287);
|
229 |
+
__webpack_require__(288);
|
230 |
+
__webpack_require__(291);
|
231 |
+
__webpack_require__(156);
|
232 |
+
__webpack_require__(293);
|
233 |
+
__webpack_require__(292);
|
234 |
+
__webpack_require__(294);
|
235 |
+
__webpack_require__(295);
|
236 |
+
__webpack_require__(296);
|
237 |
+
__webpack_require__(297);
|
238 |
+
__webpack_require__(298);
|
239 |
+
__webpack_require__(300);
|
240 |
+
__webpack_require__(301);
|
241 |
+
__webpack_require__(302);
|
242 |
+
__webpack_require__(304);
|
243 |
+
module.exports = __webpack_require__(305);
|
244 |
+
|
245 |
+
|
246 |
+
/***/ },
|
247 |
+
/* 1 */
|
248 |
+
/***/ function(module, exports, __webpack_require__) {
|
249 |
+
|
250 |
+
'use strict';
|
251 |
+
// ECMAScript 6 symbols shim
|
252 |
+
var global = __webpack_require__(2)
|
253 |
+
, has = __webpack_require__(3)
|
254 |
+
, DESCRIPTORS = __webpack_require__(4)
|
255 |
+
, $export = __webpack_require__(6)
|
256 |
+
, redefine = __webpack_require__(16)
|
257 |
+
, META = __webpack_require__(20).KEY
|
258 |
+
, $fails = __webpack_require__(5)
|
259 |
+
, shared = __webpack_require__(21)
|
260 |
+
, setToStringTag = __webpack_require__(22)
|
261 |
+
, uid = __webpack_require__(17)
|
262 |
+
, wks = __webpack_require__(23)
|
263 |
+
, wksExt = __webpack_require__(24)
|
264 |
+
, wksDefine = __webpack_require__(25)
|
265 |
+
, keyOf = __webpack_require__(27)
|
266 |
+
, enumKeys = __webpack_require__(40)
|
267 |
+
, isArray = __webpack_require__(43)
|
268 |
+
, anObject = __webpack_require__(10)
|
269 |
+
, toIObject = __webpack_require__(30)
|
270 |
+
, toPrimitive = __webpack_require__(14)
|
271 |
+
, createDesc = __webpack_require__(15)
|
272 |
+
, _create = __webpack_require__(44)
|
273 |
+
, gOPNExt = __webpack_require__(47)
|
274 |
+
, $GOPD = __webpack_require__(49)
|
275 |
+
, $DP = __webpack_require__(9)
|
276 |
+
, $keys = __webpack_require__(28)
|
277 |
+
, gOPD = $GOPD.f
|
278 |
+
, dP = $DP.f
|
279 |
+
, gOPN = gOPNExt.f
|
280 |
+
, $Symbol = global.Symbol
|
281 |
+
, $JSON = global.JSON
|
282 |
+
, _stringify = $JSON && $JSON.stringify
|
283 |
+
, PROTOTYPE = 'prototype'
|
284 |
+
, HIDDEN = wks('_hidden')
|
285 |
+
, TO_PRIMITIVE = wks('toPrimitive')
|
286 |
+
, isEnum = {}.propertyIsEnumerable
|
287 |
+
, SymbolRegistry = shared('symbol-registry')
|
288 |
+
, AllSymbols = shared('symbols')
|
289 |
+
, OPSymbols = shared('op-symbols')
|
290 |
+
, ObjectProto = Object[PROTOTYPE]
|
291 |
+
, USE_NATIVE = typeof $Symbol == 'function'
|
292 |
+
, QObject = global.QObject;
|
293 |
+
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
|
294 |
+
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
|
295 |
+
|
296 |
+
// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
|
297 |
+
var setSymbolDesc = DESCRIPTORS && $fails(function(){
|
298 |
+
return _create(dP({}, 'a', {
|
299 |
+
get: function(){ return dP(this, 'a', {value: 7}).a; }
|
300 |
+
})).a != 7;
|
301 |
+
}) ? function(it, key, D){
|
302 |
+
var protoDesc = gOPD(ObjectProto, key);
|
303 |
+
if(protoDesc)delete ObjectProto[key];
|
304 |
+
dP(it, key, D);
|
305 |
+
if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);
|
306 |
+
} : dP;
|
307 |
+
|
308 |
+
var wrap = function(tag){
|
309 |
+
var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
|
310 |
+
sym._k = tag;
|
311 |
+
return sym;
|
312 |
+
};
|
313 |
+
|
314 |
+
var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){
|
315 |
+
return typeof it == 'symbol';
|
316 |
+
} : function(it){
|
317 |
+
return it instanceof $Symbol;
|
318 |
+
};
|
319 |
+
|
320 |
+
var $defineProperty = function defineProperty(it, key, D){
|
321 |
+
if(it === ObjectProto)$defineProperty(OPSymbols, key, D);
|
322 |
+
anObject(it);
|
323 |
+
key = toPrimitive(key, true);
|
324 |
+
anObject(D);
|
325 |
+
if(has(AllSymbols, key)){
|
326 |
+
if(!D.enumerable){
|
327 |
+
if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));
|
328 |
+
it[HIDDEN][key] = true;
|
329 |
+
} else {
|
330 |
+
if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
|
331 |
+
D = _create(D, {enumerable: createDesc(0, false)});
|
332 |
+
} return setSymbolDesc(it, key, D);
|
333 |
+
} return dP(it, key, D);
|
334 |
+
};
|
335 |
+
var $defineProperties = function defineProperties(it, P){
|
336 |
+
anObject(it);
|
337 |
+
var keys = enumKeys(P = toIObject(P))
|
338 |
+
, i = 0
|
339 |
+
, l = keys.length
|
340 |
+
, key;
|
341 |
+
while(l > i)$defineProperty(it, key = keys[i++], P[key]);
|
342 |
+
return it;
|
343 |
+
};
|
344 |
+
var $create = function create(it, P){
|
345 |
+
return P === undefined ? _create(it) : $defineProperties(_create(it), P);
|
346 |
+
};
|
347 |
+
var $propertyIsEnumerable = function propertyIsEnumerable(key){
|
348 |
+
var E = isEnum.call(this, key = toPrimitive(key, true));
|
349 |
+
if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;
|
350 |
+
return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
|
351 |
+
};
|
352 |
+
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
|
353 |
+
it = toIObject(it);
|
354 |
+
key = toPrimitive(key, true);
|
355 |
+
if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;
|
356 |
+
var D = gOPD(it, key);
|
357 |
+
if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
|
358 |
+
return D;
|
359 |
+
};
|
360 |
+
var $getOwnPropertyNames = function getOwnPropertyNames(it){
|
361 |
+
var names = gOPN(toIObject(it))
|
362 |
+
, result = []
|
363 |
+
, i = 0
|
364 |
+
, key;
|
365 |
+
while(names.length > i){
|
366 |
+
if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);
|
367 |
+
} return result;
|
368 |
+
};
|
369 |
+
var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
|
370 |
+
var IS_OP = it === ObjectProto
|
371 |
+
, names = gOPN(IS_OP ? OPSymbols : toIObject(it))
|
372 |
+
, result = []
|
373 |
+
, i = 0
|
374 |
+
, key;
|
375 |
+
while(names.length > i){
|
376 |
+
if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);
|
377 |
+
} return result;
|
378 |
+
};
|
379 |
+
|
380 |
+
// 19.4.1.1 Symbol([description])
|
381 |
+
if(!USE_NATIVE){
|
382 |
+
$Symbol = function Symbol(){
|
383 |
+
if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');
|
384 |
+
var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
|
385 |
+
var $set = function(value){
|
386 |
+
if(this === ObjectProto)$set.call(OPSymbols, value);
|
387 |
+
if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
|
388 |
+
setSymbolDesc(this, tag, createDesc(1, value));
|
389 |
+
};
|
390 |
+
if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});
|
391 |
+
return wrap(tag);
|
392 |
+
};
|
393 |
+
redefine($Symbol[PROTOTYPE], 'toString', function toString(){
|
394 |
+
return this._k;
|
395 |
+
});
|
396 |
+
|
397 |
+
$GOPD.f = $getOwnPropertyDescriptor;
|
398 |
+
$DP.f = $defineProperty;
|
399 |
+
__webpack_require__(48).f = gOPNExt.f = $getOwnPropertyNames;
|
400 |
+
__webpack_require__(42).f = $propertyIsEnumerable;
|
401 |
+
__webpack_require__(41).f = $getOwnPropertySymbols;
|
402 |
+
|
403 |
+
if(DESCRIPTORS && !__webpack_require__(26)){
|
404 |
+
redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
|
405 |
+
}
|
406 |
+
|
407 |
+
wksExt.f = function(name){
|
408 |
+
return wrap(wks(name));
|
409 |
+
}
|
410 |
+
}
|
411 |
+
|
412 |
+
$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});
|
413 |
+
|
414 |
+
for(var symbols = (
|
415 |
+
// 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
|
416 |
+
'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
|
417 |
+
).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);
|
418 |
+
|
419 |
+
for(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);
|
420 |
+
|
421 |
+
$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
|
422 |
+
// 19.4.2.1 Symbol.for(key)
|
423 |
+
'for': function(key){
|
424 |
+
return has(SymbolRegistry, key += '')
|
425 |
+
? SymbolRegistry[key]
|
426 |
+
: SymbolRegistry[key] = $Symbol(key);
|
427 |
+
},
|
428 |
+
// 19.4.2.5 Symbol.keyFor(sym)
|
429 |
+
keyFor: function keyFor(key){
|
430 |
+
if(isSymbol(key))return keyOf(SymbolRegistry, key);
|
431 |
+
throw TypeError(key + ' is not a symbol!');
|
432 |
+
},
|
433 |
+
useSetter: function(){ setter = true; },
|
434 |
+
useSimple: function(){ setter = false; }
|
435 |
+
});
|
436 |
+
|
437 |
+
$export($export.S + $export.F * !USE_NATIVE, 'Object', {
|
438 |
+
// 19.1.2.2 Object.create(O [, Properties])
|
439 |
+
create: $create,
|
440 |
+
// 19.1.2.4 Object.defineProperty(O, P, Attributes)
|
441 |
+
defineProperty: $defineProperty,
|
442 |
+
// 19.1.2.3 Object.defineProperties(O, Properties)
|
443 |
+
defineProperties: $defineProperties,
|
444 |
+
// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
|
445 |
+
getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
|
446 |
+
// 19.1.2.7 Object.getOwnPropertyNames(O)
|
447 |
+
getOwnPropertyNames: $getOwnPropertyNames,
|
448 |
+
// 19.1.2.8 Object.getOwnPropertySymbols(O)
|
449 |
+
getOwnPropertySymbols: $getOwnPropertySymbols
|
450 |
+
});
|
451 |
+
|
452 |
+
// 24.3.2 JSON.stringify(value [, replacer [, space]])
|
453 |
+
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){
|
454 |
+
var S = $Symbol();
|
455 |
+
// MS Edge converts symbol values to JSON as {}
|
456 |
+
// WebKit converts symbol values to JSON as null
|
457 |
+
// V8 throws on boxed symbols
|
458 |
+
return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
|
459 |
+
})), 'JSON', {
|
460 |
+
stringify: function stringify(it){
|
461 |
+
if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
|
462 |
+
var args = [it]
|
463 |
+
, i = 1
|
464 |
+
, replacer, $replacer;
|
465 |
+
while(arguments.length > i)args.push(arguments[i++]);
|
466 |
+
replacer = args[1];
|
467 |
+
if(typeof replacer == 'function')$replacer = replacer;
|
468 |
+
if($replacer || !isArray(replacer))replacer = function(key, value){
|
469 |
+
if($replacer)value = $replacer.call(this, key, value);
|
470 |
+
if(!isSymbol(value))return value;
|
471 |
+
};
|
472 |
+
args[1] = replacer;
|
473 |
+
return _stringify.apply($JSON, args);
|
474 |
+
}
|
475 |
+
});
|
476 |
+
|
477 |
+
// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
|
478 |
+
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(8)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
|
479 |
+
// 19.4.3.5 Symbol.prototype[@@toStringTag]
|
480 |
+
setToStringTag($Symbol, 'Symbol');
|
481 |
+
// 20.2.1.9 Math[@@toStringTag]
|
482 |
+
setToStringTag(Math, 'Math', true);
|
483 |
+
// 24.3.3 JSON[@@toStringTag]
|
484 |
+
setToStringTag(global.JSON, 'JSON', true);
|
485 |
+
|
486 |
+
/***/ },
|
487 |
+
/* 2 */
|
488 |
+
/***/ function(module, exports) {
|
489 |
+
|
490 |
+
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
|
491 |
+
var global = module.exports = typeof window != 'undefined' && window.Math == Math
|
492 |
+
? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
|
493 |
+
if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
|
494 |
+
|
495 |
+
/***/ },
|
496 |
+
/* 3 */
|
497 |
+
/***/ function(module, exports) {
|
498 |
+
|
499 |
+
var hasOwnProperty = {}.hasOwnProperty;
|
500 |
+
module.exports = function(it, key){
|
501 |
+
return hasOwnProperty.call(it, key);
|
502 |
+
};
|
503 |
+
|
504 |
+
/***/ },
|
505 |
+
/* 4 */
|
506 |
+
/***/ function(module, exports, __webpack_require__) {
|
507 |
+
|
508 |
+
// Thank's IE8 for his funny defineProperty
|
509 |
+
module.exports = !__webpack_require__(5)(function(){
|
510 |
+
return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
|
511 |
+
});
|
512 |
+
|
513 |
+
/***/ },
|
514 |
+
/* 5 */
|
515 |
+
/***/ function(module, exports) {
|
516 |
+
|
517 |
+
module.exports = function(exec){
|
518 |
+
try {
|
519 |
+
return !!exec();
|
520 |
+
} catch(e){
|
521 |
+
return true;
|
522 |
+
}
|
523 |
+
};
|
524 |
+
|
525 |
+
/***/ },
|
526 |
+
/* 6 */
|
527 |
+
/***/ function(module, exports, __webpack_require__) {
|
528 |
+
|
529 |
+
var global = __webpack_require__(2)
|
530 |
+
, core = __webpack_require__(7)
|
531 |
+
, hide = __webpack_require__(8)
|
532 |
+
, redefine = __webpack_require__(16)
|
533 |
+
, ctx = __webpack_require__(18)
|
534 |
+
, PROTOTYPE = 'prototype';
|
535 |
+
|
536 |
+
var $export = function(type, name, source){
|
537 |
+
var IS_FORCED = type & $export.F
|
538 |
+
, IS_GLOBAL = type & $export.G
|
539 |
+
, IS_STATIC = type & $export.S
|
540 |
+
, IS_PROTO = type & $export.P
|
541 |
+
, IS_BIND = type & $export.B
|
542 |
+
, target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]
|
543 |
+
, exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
|
544 |
+
, expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {})
|
545 |
+
, key, own, out, exp;
|
546 |
+
if(IS_GLOBAL)source = name;
|
547 |
+
for(key in source){
|
548 |
+
// contains in native
|
549 |
+
own = !IS_FORCED && target && target[key] !== undefined;
|
550 |
+
// export native or passed
|
551 |
+
out = (own ? target : source)[key];
|
552 |
+
// bind timers to global for call from export context
|
553 |
+
exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
|
554 |
+
// extend global
|
555 |
+
if(target)redefine(target, key, out, type & $export.U);
|
556 |
+
// export
|
557 |
+
if(exports[key] != out)hide(exports, key, exp);
|
558 |
+
if(IS_PROTO && expProto[key] != out)expProto[key] = out;
|
559 |
+
}
|
560 |
+
};
|
561 |
+
global.core = core;
|
562 |
+
// type bitmap
|
563 |
+
$export.F = 1; // forced
|
564 |
+
$export.G = 2; // global
|
565 |
+
$export.S = 4; // static
|
566 |
+
$export.P = 8; // proto
|
567 |
+
$export.B = 16; // bind
|
568 |
+
$export.W = 32; // wrap
|
569 |
+
$export.U = 64; // safe
|
570 |
+
$export.R = 128; // real proto method for `library`
|
571 |
+
module.exports = $export;
|
572 |
+
|
573 |
+
/***/ },
|
574 |
+
/* 7 */
|
575 |
+
/***/ function(module, exports) {
|
576 |
+
|
577 |
+
var core = module.exports = {version: '2.4.0'};
|
578 |
+
if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
|
579 |
+
|
580 |
+
/***/ },
|
581 |
+
/* 8 */
|
582 |
+
/***/ function(module, exports, __webpack_require__) {
|
583 |
+
|
584 |
+
var dP = __webpack_require__(9)
|
585 |
+
, createDesc = __webpack_require__(15);
|
586 |
+
module.exports = __webpack_require__(4) ? function(object, key, value){
|
587 |
+
return dP.f(object, key, createDesc(1, value));
|
588 |
+
} : function(object, key, value){
|
589 |
+
object[key] = value;
|
590 |
+
return object;
|
591 |
+
};
|
592 |
+
|
593 |
+
/***/ },
|
594 |
+
/* 9 */
|
595 |
+
/***/ function(module, exports, __webpack_require__) {
|
596 |
+
|
597 |
+
var anObject = __webpack_require__(10)
|
598 |
+
, IE8_DOM_DEFINE = __webpack_require__(12)
|
599 |
+
, toPrimitive = __webpack_require__(14)
|
600 |
+
, dP = Object.defineProperty;
|
601 |
+
|
602 |
+
exports.f = __webpack_require__(4) ? Object.defineProperty : function defineProperty(O, P, Attributes){
|
603 |
+
anObject(O);
|
604 |
+
P = toPrimitive(P, true);
|
605 |
+
anObject(Attributes);
|
606 |
+
if(IE8_DOM_DEFINE)try {
|
607 |
+
return dP(O, P, Attributes);
|
608 |
+
} catch(e){ /* empty */ }
|
609 |
+
if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
|
610 |
+
if('value' in Attributes)O[P] = Attributes.value;
|
611 |
+
return O;
|
612 |
+
};
|
613 |
+
|
614 |
+
/***/ },
|
615 |
+
/* 10 */
|
616 |
+
/***/ function(module, exports, __webpack_require__) {
|
617 |
+
|
618 |
+
var isObject = __webpack_require__(11);
|
619 |
+
module.exports = function(it){
|
620 |
+
if(!isObject(it))throw TypeError(it + ' is not an object!');
|
621 |
+
return it;
|
622 |
+
};
|
623 |
+
|
624 |
+
/***/ },
|
625 |
+
/* 11 */
|
626 |
+
/***/ function(module, exports) {
|
627 |
+
|
628 |
+
module.exports = function(it){
|
629 |
+
return typeof it === 'object' ? it !== null : typeof it === 'function';
|
630 |
+
};
|
631 |
+
|
632 |
+
/***/ },
|
633 |
+
/* 12 */
|
634 |
+
/***/ function(module, exports, __webpack_require__) {
|
635 |
+
|
636 |
+
module.exports = !__webpack_require__(4) && !__webpack_require__(5)(function(){
|
637 |
+
return Object.defineProperty(__webpack_require__(13)('div'), 'a', {get: function(){ return 7; }}).a != 7;
|
638 |
+
});
|
639 |
+
|
640 |
+
/***/ },
|
641 |
+
/* 13 */
|
642 |
+
/***/ function(module, exports, __webpack_require__) {
|
643 |
+
|
644 |
+
var isObject = __webpack_require__(11)
|
645 |
+
, document = __webpack_require__(2).document
|
646 |
+
// in old IE typeof document.createElement is 'object'
|
647 |
+
, is = isObject(document) && isObject(document.createElement);
|
648 |
+
module.exports = function(it){
|
649 |
+
return is ? document.createElement(it) : {};
|
650 |
+
};
|
651 |
+
|
652 |
+
/***/ },
|
653 |
+
/* 14 */
|
654 |
+
/***/ function(module, exports, __webpack_require__) {
|
655 |
+
|
656 |
+
// 7.1.1 ToPrimitive(input [, PreferredType])
|
657 |
+
var isObject = __webpack_require__(11);
|
658 |
+
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
|
659 |
+
// and the second argument - flag - preferred type is a string
|
660 |
+
module.exports = function(it, S){
|
661 |
+
if(!isObject(it))return it;
|
662 |
+
var fn, val;
|
663 |
+
if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
|
664 |
+
if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
|
665 |
+
if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
|
666 |
+
throw TypeError("Can't convert object to primitive value");
|
667 |
+
};
|
668 |
+
|
669 |
+
/***/ },
|
670 |
+
/* 15 */
|
671 |
+
/***/ function(module, exports) {
|
672 |
+
|
673 |
+
module.exports = function(bitmap, value){
|
674 |
+
return {
|
675 |
+
enumerable : !(bitmap & 1),
|
676 |
+
configurable: !(bitmap & 2),
|
677 |
+
writable : !(bitmap & 4),
|
678 |
+
value : value
|
679 |
+
};
|
680 |
+
};
|
681 |
+
|
682 |
+
/***/ },
|
683 |
+
/* 16 */
|
684 |
+
/***/ function(module, exports, __webpack_require__) {
|
685 |
+
|
686 |
+
var global = __webpack_require__(2)
|
687 |
+
, hide = __webpack_require__(8)
|
688 |
+
, has = __webpack_require__(3)
|
689 |
+
, SRC = __webpack_require__(17)('src')
|
690 |
+
, TO_STRING = 'toString'
|
691 |
+
, $toString = Function[TO_STRING]
|
692 |
+
, TPL = ('' + $toString).split(TO_STRING);
|
693 |
+
|
694 |
+
__webpack_require__(7).inspectSource = function(it){
|
695 |
+
return $toString.call(it);
|
696 |
+
};
|
697 |
+
|
698 |
+
(module.exports = function(O, key, val, safe){
|
699 |
+
var isFunction = typeof val == 'function';
|
700 |
+
if(isFunction)has(val, 'name') || hide(val, 'name', key);
|
701 |
+
if(O[key] === val)return;
|
702 |
+
if(isFunction)has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
|
703 |
+
if(O === global){
|
704 |
+
O[key] = val;
|
705 |
+
} else {
|
706 |
+
if(!safe){
|
707 |
+
delete O[key];
|
708 |
+
hide(O, key, val);
|
709 |
+
} else {
|
710 |
+
if(O[key])O[key] = val;
|
711 |
+
else hide(O, key, val);
|
712 |
+
}
|
713 |
+
}
|
714 |
+
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
|
715 |
+
})(Function.prototype, TO_STRING, function toString(){
|
716 |
+
return typeof this == 'function' && this[SRC] || $toString.call(this);
|
717 |
+
});
|
718 |
+
|
719 |
+
/***/ },
|
720 |
+
/* 17 */
|
721 |
+
/***/ function(module, exports) {
|
722 |
+
|
723 |
+
var id = 0
|
724 |
+
, px = Math.random();
|
725 |
+
module.exports = function(key){
|
726 |
+
return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
|
727 |
+
};
|
728 |
+
|
729 |
+
/***/ },
|
730 |
+
/* 18 */
|
731 |
+
/***/ function(module, exports, __webpack_require__) {
|
732 |
+
|
733 |
+
// optional / simple context binding
|
734 |
+
var aFunction = __webpack_require__(19);
|
735 |
+
module.exports = function(fn, that, length){
|
736 |
+
aFunction(fn);
|
737 |
+
if(that === undefined)return fn;
|
738 |
+
switch(length){
|
739 |
+
case 1: return function(a){
|
740 |
+
return fn.call(that, a);
|
741 |
+
};
|
742 |
+
case 2: return function(a, b){
|
743 |
+
return fn.call(that, a, b);
|
744 |
+
};
|
745 |
+
case 3: return function(a, b, c){
|
746 |
+
return fn.call(that, a, b, c);
|
747 |
+
};
|
748 |
+
}
|
749 |
+
return function(/* ...args */){
|
750 |
+
return fn.apply(that, arguments);
|
751 |
+
};
|
752 |
+
};
|
753 |
+
|
754 |
+
/***/ },
|
755 |
+
/* 19 */
|
756 |
+
/***/ function(module, exports) {
|
757 |
+
|
758 |
+
module.exports = function(it){
|
759 |
+
if(typeof it != 'function')throw TypeError(it + ' is not a function!');
|
760 |
+
return it;
|
761 |
+
};
|
762 |
+
|
763 |
+
/***/ },
|
764 |
+
/* 20 */
|
765 |
+
/***/ function(module, exports, __webpack_require__) {
|
766 |
+
|
767 |
+
var META = __webpack_require__(17)('meta')
|
768 |
+
, isObject = __webpack_require__(11)
|
769 |
+
, has = __webpack_require__(3)
|
770 |
+
, setDesc = __webpack_require__(9).f
|
771 |
+
, id = 0;
|
772 |
+
var isExtensible = Object.isExtensible || function(){
|
773 |
+
return true;
|
774 |
+
};
|
775 |
+
var FREEZE = !__webpack_require__(5)(function(){
|
776 |
+
return isExtensible(Object.preventExtensions({}));
|
777 |
+
});
|
778 |
+
var setMeta = function(it){
|
779 |
+
setDesc(it, META, {value: {
|
780 |
+
i: 'O' + ++id, // object ID
|
781 |
+
w: {} // weak collections IDs
|
782 |
+
}});
|
783 |
+
};
|
784 |
+
var fastKey = function(it, create){
|
785 |
+
// return primitive with prefix
|
786 |
+
if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
|
787 |
+
if(!has(it, META)){
|
788 |
+
// can't set metadata to uncaught frozen object
|
789 |
+
if(!isExtensible(it))return 'F';
|
790 |
+
// not necessary to add metadata
|
791 |
+
if(!create)return 'E';
|
792 |
+
// add missing metadata
|
793 |
+
setMeta(it);
|
794 |
+
// return object ID
|
795 |
+
} return it[META].i;
|
796 |
+
};
|
797 |
+
var getWeak = function(it, create){
|
798 |
+
if(!has(it, META)){
|
799 |
+
// can't set metadata to uncaught frozen object
|
800 |
+
if(!isExtensible(it))return true;
|
801 |
+
// not necessary to add metadata
|
802 |
+
if(!create)return false;
|
803 |
+
// add missing metadata
|
804 |
+
setMeta(it);
|
805 |
+
// return hash weak collections IDs
|
806 |
+
} return it[META].w;
|
807 |
+
};
|
808 |
+
// add metadata on freeze-family methods calling
|
809 |
+
var onFreeze = function(it){
|
810 |
+
if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);
|
811 |
+
return it;
|
812 |
+
};
|
813 |
+
var meta = module.exports = {
|
814 |
+
KEY: META,
|
815 |
+
NEED: false,
|
816 |
+
fastKey: fastKey,
|
817 |
+
getWeak: getWeak,
|
818 |
+
onFreeze: onFreeze
|
819 |
+
};
|
820 |
+
|
821 |
+
/***/ },
|
822 |
+
/* 21 */
|
823 |
+
/***/ function(module, exports, __webpack_require__) {
|
824 |
+
|
825 |
+
var global = __webpack_require__(2)
|
826 |
+
, SHARED = '__core-js_shared__'
|
827 |
+
, store = global[SHARED] || (global[SHARED] = {});
|
828 |
+
module.exports = function(key){
|
829 |
+
return store[key] || (store[key] = {});
|
830 |
+
};
|
831 |
+
|
832 |
+
/***/ },
|
833 |
+
/* 22 */
|
834 |
+
/***/ function(module, exports, __webpack_require__) {
|
835 |
+
|
836 |
+
var def = __webpack_require__(9).f
|
837 |
+
, has = __webpack_require__(3)
|
838 |
+
, TAG = __webpack_require__(23)('toStringTag');
|
839 |
+
|
840 |
+
module.exports = function(it, tag, stat){
|
841 |
+
if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
|
842 |
+
};
|
843 |
+
|
844 |
+
/***/ },
|
845 |
+
/* 23 */
|
846 |
+
/***/ function(module, exports, __webpack_require__) {
|
847 |
+
|
848 |
+
var store = __webpack_require__(21)('wks')
|
849 |
+
, uid = __webpack_require__(17)
|
850 |
+
, Symbol = __webpack_require__(2).Symbol
|
851 |
+
, USE_SYMBOL = typeof Symbol == 'function';
|
852 |
+
|
853 |
+
var $exports = module.exports = function(name){
|
854 |
+
return store[name] || (store[name] =
|
855 |
+
USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
|
856 |
+
};
|
857 |
+
|
858 |
+
$exports.store = store;
|
859 |
+
|
860 |
+
/***/ },
|
861 |
+
/* 24 */
|
862 |
+
/***/ function(module, exports, __webpack_require__) {
|
863 |
+
|
864 |
+
exports.f = __webpack_require__(23);
|
865 |
+
|
866 |
+
/***/ },
|
867 |
+
/* 25 */
|
868 |
+
/***/ function(module, exports, __webpack_require__) {
|
869 |
+
|
870 |
+
var global = __webpack_require__(2)
|
871 |
+
, core = __webpack_require__(7)
|
872 |
+
, LIBRARY = __webpack_require__(26)
|
873 |
+
, wksExt = __webpack_require__(24)
|
874 |
+
, defineProperty = __webpack_require__(9).f;
|
875 |
+
module.exports = function(name){
|
876 |
+
var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
|
877 |
+
if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});
|
878 |
+
};
|
879 |
+
|
880 |
+
/***/ },
|
881 |
+
/* 26 */
|
882 |
+
/***/ function(module, exports) {
|
883 |
+
|
884 |
+
module.exports = false;
|
885 |
+
|
886 |
+
/***/ },
|
887 |
+
/* 27 */
|
888 |
+
/***/ function(module, exports, __webpack_require__) {
|
889 |
+
|
890 |
+
var getKeys = __webpack_require__(28)
|
891 |
+
, toIObject = __webpack_require__(30);
|
892 |
+
module.exports = function(object, el){
|
893 |
+
var O = toIObject(object)
|
894 |
+
, keys = getKeys(O)
|
895 |
+
, length = keys.length
|
896 |
+
, index = 0
|
897 |
+
, key;
|
898 |
+
while(length > index)if(O[key = keys[index++]] === el)return key;
|
899 |
+
};
|
900 |
+
|
901 |
+
/***/ },
|
902 |
+
/* 28 */
|
903 |
+
/***/ function(module, exports, __webpack_require__) {
|
904 |
+
|
905 |
+
// 19.1.2.14 / 15.2.3.14 Object.keys(O)
|
906 |
+
var $keys = __webpack_require__(29)
|
907 |
+
, enumBugKeys = __webpack_require__(39);
|
908 |
+
|
909 |
+
module.exports = Object.keys || function keys(O){
|
910 |
+
return $keys(O, enumBugKeys);
|
911 |
+
};
|
912 |
+
|
913 |
+
/***/ },
|
914 |
+
/* 29 */
|
915 |
+
/***/ function(module, exports, __webpack_require__) {
|
916 |
+
|
917 |
+
var has = __webpack_require__(3)
|
918 |
+
, toIObject = __webpack_require__(30)
|
919 |
+
, arrayIndexOf = __webpack_require__(34)(false)
|
920 |
+
, IE_PROTO = __webpack_require__(38)('IE_PROTO');
|
921 |
+
|
922 |
+
module.exports = function(object, names){
|
923 |
+
var O = toIObject(object)
|
924 |
+
, i = 0
|
925 |
+
, result = []
|
926 |
+
, key;
|
927 |
+
for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
|
928 |
+
// Don't enum bug & hidden keys
|
929 |
+
while(names.length > i)if(has(O, key = names[i++])){
|
930 |
+
~arrayIndexOf(result, key) || result.push(key);
|
931 |
+
}
|
932 |
+
return result;
|
933 |
+
};
|
934 |
+
|
935 |
+
/***/ },
|
936 |
+
/* 30 */
|
937 |
+
/***/ function(module, exports, __webpack_require__) {
|
938 |
+
|
939 |
+
// to indexed object, toObject with fallback for non-array-like ES3 strings
|
940 |
+
var IObject = __webpack_require__(31)
|
941 |
+
, defined = __webpack_require__(33);
|
942 |
+
module.exports = function(it){
|
943 |
+
return IObject(defined(it));
|
944 |
+
};
|
945 |
+
|
946 |
+
/***/ },
|
947 |
+
/* 31 */
|
948 |
+
/***/ function(module, exports, __webpack_require__) {
|
949 |
+
|
950 |
+
// fallback for non-array-like ES3 and non-enumerable old V8 strings
|
951 |
+
var cof = __webpack_require__(32);
|
952 |
+
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
|
953 |
+
return cof(it) == 'String' ? it.split('') : Object(it);
|
954 |
+
};
|
955 |
+
|
956 |
+
/***/ },
|
957 |
+
/* 32 */
|
958 |
+
/***/ function(module, exports) {
|
959 |
+
|
960 |
+
var toString = {}.toString;
|
961 |
+
|
962 |
+
module.exports = function(it){
|
963 |
+
return toString.call(it).slice(8, -1);
|
964 |
+
};
|
965 |
+
|
966 |
+
/***/ },
|
967 |
+
/* 33 */
|
968 |
+
/***/ function(module, exports) {
|
969 |
+
|
970 |
+
// 7.2.1 RequireObjectCoercible(argument)
|
971 |
+
module.exports = function(it){
|
972 |
+
if(it == undefined)throw TypeError("Can't call method on " + it);
|
973 |
+
return it;
|
974 |
+
};
|
975 |
+
|
976 |
+
/***/ },
|
977 |
+
/* 34 */
|
978 |
+
/***/ function(module, exports, __webpack_require__) {
|
979 |
+
|
980 |
+
// false -> Array#indexOf
|
981 |
+
// true -> Array#includes
|
982 |
+
var toIObject = __webpack_require__(30)
|
983 |
+
, toLength = __webpack_require__(35)
|
984 |
+
, toIndex = __webpack_require__(37);
|
985 |
+
module.exports = function(IS_INCLUDES){
|
986 |
+
return function($this, el, fromIndex){
|
987 |
+
var O = toIObject($this)
|
988 |
+
, length = toLength(O.length)
|
989 |
+
, index = toIndex(fromIndex, length)
|
990 |
+
, value;
|
991 |
+
// Array#includes uses SameValueZero equality algorithm
|
992 |
+
if(IS_INCLUDES && el != el)while(length > index){
|
993 |
+
value = O[index++];
|
994 |
+
if(value != value)return true;
|
995 |
+
// Array#toIndex ignores holes, Array#includes - not
|
996 |
+
} else for(;length > index; index++)if(IS_INCLUDES || index in O){
|
997 |
+
if(O[index] === el)return IS_INCLUDES || index || 0;
|
998 |
+
} return !IS_INCLUDES && -1;
|
999 |
+
};
|
1000 |
+
};
|
1001 |
+
|
1002 |
+
/***/ },
|
1003 |
+
/* 35 */
|
1004 |
+
/***/ function(module, exports, __webpack_require__) {
|
1005 |
+
|
1006 |
+
// 7.1.15 ToLength
|
1007 |
+
var toInteger = __webpack_require__(36)
|
1008 |
+
, min = Math.min;
|
1009 |
+
module.exports = function(it){
|
1010 |
+
return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
|
1011 |
+
};
|
1012 |
+
|
1013 |
+
/***/ },
|
1014 |
+
/* 36 */
|
1015 |
+
/***/ function(module, exports) {
|
1016 |
+
|
1017 |
+
// 7.1.4 ToInteger
|
1018 |
+
var ceil = Math.ceil
|
1019 |
+
, floor = Math.floor;
|
1020 |
+
module.exports = function(it){
|
1021 |
+
return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
|
1022 |
+
};
|
1023 |
+
|
1024 |
+
/***/ },
|
1025 |
+
/* 37 */
|
1026 |
+
/***/ function(module, exports, __webpack_require__) {
|
1027 |
+
|
1028 |
+
var toInteger = __webpack_require__(36)
|
1029 |
+
, max = Math.max
|
1030 |
+
, min = Math.min;
|
1031 |
+
module.exports = function(index, length){
|
1032 |
+
index = toInteger(index);
|
1033 |
+
return index < 0 ? max(index + length, 0) : min(index, length);
|
1034 |
+
};
|
1035 |
+
|
1036 |
+
/***/ },
|
1037 |
+
/* 38 */
|
1038 |
+
/***/ function(module, exports, __webpack_require__) {
|
1039 |
+
|
1040 |
+
var shared = __webpack_require__(21)('keys')
|
1041 |
+
, uid = __webpack_require__(17);
|
1042 |
+
module.exports = function(key){
|
1043 |
+
return shared[key] || (shared[key] = uid(key));
|
1044 |
+
};
|
1045 |
+
|
1046 |
+
/***/ },
|
1047 |
+
/* 39 */
|
1048 |
+
/***/ function(module, exports) {
|
1049 |
+
|
1050 |
+
// IE 8- don't enum bug keys
|
1051 |
+
module.exports = (
|
1052 |
+
'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
|
1053 |
+
).split(',');
|
1054 |
+
|
1055 |
+
/***/ },
|
1056 |
+
/* 40 */
|
1057 |
+
/***/ function(module, exports, __webpack_require__) {
|
1058 |
+
|
1059 |
+
// all enumerable object keys, includes symbols
|
1060 |
+
var getKeys = __webpack_require__(28)
|
1061 |
+
, gOPS = __webpack_require__(41)
|
1062 |
+
, pIE = __webpack_require__(42);
|
1063 |
+
module.exports = function(it){
|
1064 |
+
var result = getKeys(it)
|
1065 |
+
, getSymbols = gOPS.f;
|
1066 |
+
if(getSymbols){
|
1067 |
+
var symbols = getSymbols(it)
|
1068 |
+
, isEnum = pIE.f
|
1069 |
+
, i = 0
|
1070 |
+
, key;
|
1071 |
+
while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);
|
1072 |
+
} return result;
|
1073 |
+
};
|
1074 |
+
|
1075 |
+
/***/ },
|
1076 |
+
/* 41 */
|
1077 |
+
/***/ function(module, exports) {
|
1078 |
+
|
1079 |
+
exports.f = Object.getOwnPropertySymbols;
|
1080 |
+
|
1081 |
+
/***/ },
|
1082 |
+
/* 42 */
|
1083 |
+
/***/ function(module, exports) {
|
1084 |
+
|
1085 |
+
exports.f = {}.propertyIsEnumerable;
|
1086 |
+
|
1087 |
+
/***/ },
|
1088 |
+
/* 43 */
|
1089 |
+
/***/ function(module, exports, __webpack_require__) {
|
1090 |
+
|
1091 |
+
// 7.2.2 IsArray(argument)
|
1092 |
+
var cof = __webpack_require__(32);
|
1093 |
+
module.exports = Array.isArray || function isArray(arg){
|
1094 |
+
return cof(arg) == 'Array';
|
1095 |
+
};
|
1096 |
+
|
1097 |
+
/***/ },
|
1098 |
+
/* 44 */
|
1099 |
+
/***/ function(module, exports, __webpack_require__) {
|
1100 |
+
|
1101 |
+
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
|
1102 |
+
var anObject = __webpack_require__(10)
|
1103 |
+
, dPs = __webpack_require__(45)
|
1104 |
+
, enumBugKeys = __webpack_require__(39)
|
1105 |
+
, IE_PROTO = __webpack_require__(38)('IE_PROTO')
|
1106 |
+
, Empty = function(){ /* empty */ }
|
1107 |
+
, PROTOTYPE = 'prototype';
|
1108 |
+
|
1109 |
+
// Create object with fake `null` prototype: use iframe Object with cleared prototype
|
1110 |
+
var createDict = function(){
|
1111 |
+
// Thrash, waste and sodomy: IE GC bug
|
1112 |
+
var iframe = __webpack_require__(13)('iframe')
|
1113 |
+
, i = enumBugKeys.length
|
1114 |
+
, lt = '<'
|
1115 |
+
, gt = '>'
|
1116 |
+
, iframeDocument;
|
1117 |
+
iframe.style.display = 'none';
|
1118 |
+
__webpack_require__(46).appendChild(iframe);
|
1119 |
+
iframe.src = 'javascript:'; // eslint-disable-line no-script-url
|
1120 |
+
// createDict = iframe.contentWindow.Object;
|
1121 |
+
// html.removeChild(iframe);
|
1122 |
+
iframeDocument = iframe.contentWindow.document;
|
1123 |
+
iframeDocument.open();
|
1124 |
+
iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
|
1125 |
+
iframeDocument.close();
|
1126 |
+
createDict = iframeDocument.F;
|
1127 |
+
while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];
|
1128 |
+
return createDict();
|
1129 |
+
};
|
1130 |
+
|
1131 |
+
module.exports = Object.create || function create(O, Properties){
|
1132 |
+
var result;
|
1133 |
+
if(O !== null){
|
1134 |
+
Empty[PROTOTYPE] = anObject(O);
|
1135 |
+
result = new Empty;
|
1136 |
+
Empty[PROTOTYPE] = null;
|
1137 |
+
// add "__proto__" for Object.getPrototypeOf polyfill
|
1138 |
+
result[IE_PROTO] = O;
|
1139 |
+
} else result = createDict();
|
1140 |
+
return Properties === undefined ? result : dPs(result, Properties);
|
1141 |
+
};
|
1142 |
+
|
1143 |
+
|
1144 |
+
/***/ },
|
1145 |
+
/* 45 */
|
1146 |
+
/***/ function(module, exports, __webpack_require__) {
|
1147 |
+
|
1148 |
+
var dP = __webpack_require__(9)
|
1149 |
+
, anObject = __webpack_require__(10)
|
1150 |
+
, getKeys = __webpack_require__(28);
|
1151 |
+
|
1152 |
+
module.exports = __webpack_require__(4) ? Object.defineProperties : function defineProperties(O, Properties){
|
1153 |
+
anObject(O);
|
1154 |
+
var keys = getKeys(Properties)
|
1155 |
+
, length = keys.length
|
1156 |
+
, i = 0
|
1157 |
+
, P;
|
1158 |
+
while(length > i)dP.f(O, P = keys[i++], Properties[P]);
|
1159 |
+
return O;
|
1160 |
+
};
|
1161 |
+
|
1162 |
+
/***/ },
|
1163 |
+
/* 46 */
|
1164 |
+
/***/ function(module, exports, __webpack_require__) {
|
1165 |
+
|
1166 |
+
module.exports = __webpack_require__(2).document && document.documentElement;
|
1167 |
+
|
1168 |
+
/***/ },
|
1169 |
+
/* 47 */
|
1170 |
+
/***/ function(module, exports, __webpack_require__) {
|
1171 |
+
|
1172 |
+
// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
|
1173 |
+
var toIObject = __webpack_require__(30)
|
1174 |
+
, gOPN = __webpack_require__(48).f
|
1175 |
+
, toString = {}.toString;
|
1176 |
+
|
1177 |
+
var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
|
1178 |
+
? Object.getOwnPropertyNames(window) : [];
|
1179 |
+
|
1180 |
+
var getWindowNames = function(it){
|
1181 |
+
try {
|
1182 |
+
return gOPN(it);
|
1183 |
+
} catch(e){
|
1184 |
+
return windowNames.slice();
|
1185 |
+
}
|
1186 |
+
};
|
1187 |
+
|
1188 |
+
module.exports.f = function getOwnPropertyNames(it){
|
1189 |
+
return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
|
1190 |
+
};
|
1191 |
+
|
1192 |
+
|
1193 |
+
/***/ },
|
1194 |
+
/* 48 */
|
1195 |
+
/***/ function(module, exports, __webpack_require__) {
|
1196 |
+
|
1197 |
+
// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
|
1198 |
+
var $keys = __webpack_require__(29)
|
1199 |
+
, hiddenKeys = __webpack_require__(39).concat('length', 'prototype');
|
1200 |
+
|
1201 |
+
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){
|
1202 |
+
return $keys(O, hiddenKeys);
|
1203 |
+
};
|
1204 |
+
|
1205 |
+
/***/ },
|
1206 |
+
/* 49 */
|
1207 |
+
/***/ function(module, exports, __webpack_require__) {
|
1208 |
+
|
1209 |
+
var pIE = __webpack_require__(42)
|
1210 |
+
, createDesc = __webpack_require__(15)
|
1211 |
+
, toIObject = __webpack_require__(30)
|
1212 |
+
, toPrimitive = __webpack_require__(14)
|
1213 |
+
, has = __webpack_require__(3)
|
1214 |
+
, IE8_DOM_DEFINE = __webpack_require__(12)
|
1215 |
+
, gOPD = Object.getOwnPropertyDescriptor;
|
1216 |
+
|
1217 |
+
exports.f = __webpack_require__(4) ? gOPD : function getOwnPropertyDescriptor(O, P){
|
1218 |
+
O = toIObject(O);
|
1219 |
+
P = toPrimitive(P, true);
|
1220 |
+
if(IE8_DOM_DEFINE)try {
|
1221 |
+
return gOPD(O, P);
|
1222 |
+
} catch(e){ /* empty */ }
|
1223 |
+
if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);
|
1224 |
+
};
|
1225 |
+
|
1226 |
+
/***/ },
|
1227 |
+
/* 50 */
|
1228 |
+
/***/ function(module, exports, __webpack_require__) {
|
1229 |
+
|
1230 |
+
var $export = __webpack_require__(6);
|
1231 |
+
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
|
1232 |
+
$export($export.S + $export.F * !__webpack_require__(4), 'Object', {defineProperty: __webpack_require__(9).f});
|
1233 |
+
|
1234 |
+
/***/ },
|
1235 |
+
/* 51 */
|
1236 |
+
/***/ function(module, exports, __webpack_require__) {
|
1237 |
+
|
1238 |
+
var $export = __webpack_require__(6);
|
1239 |
+
// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
|
1240 |
+
$export($export.S + $export.F * !__webpack_require__(4), 'Object', {defineProperties: __webpack_require__(45)});
|
1241 |
+
|
1242 |
+
/***/ },
|
1243 |
+
/* 52 */
|
1244 |
+
/***/ function(module, exports, __webpack_require__) {
|
1245 |
+
|
1246 |
+
// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
|
1247 |
+
var toIObject = __webpack_require__(30)
|
1248 |
+
, $getOwnPropertyDescriptor = __webpack_require__(49).f;
|
1249 |
+
|
1250 |
+
__webpack_require__(53)('getOwnPropertyDescriptor', function(){
|
1251 |
+
return function getOwnPropertyDescriptor(it, key){
|
1252 |
+
return $getOwnPropertyDescriptor(toIObject(it), key);
|
1253 |
+
};
|
1254 |
+
});
|
1255 |
+
|
1256 |
+
/***/ },
|
1257 |
+
/* 53 */
|
1258 |
+
/***/ function(module, exports, __webpack_require__) {
|
1259 |
+
|
1260 |
+
// most Object methods by ES6 should accept primitives
|
1261 |
+
var $export = __webpack_require__(6)
|
1262 |
+
, core = __webpack_require__(7)
|
1263 |
+
, fails = __webpack_require__(5);
|
1264 |
+
module.exports = function(KEY, exec){
|
1265 |
+
var fn = (core.Object || {})[KEY] || Object[KEY]
|
1266 |
+
, exp = {};
|
1267 |
+
exp[KEY] = exec(fn);
|
1268 |
+
$export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
|
1269 |
+
};
|
1270 |
+
|
1271 |
+
/***/ },
|
1272 |
+
/* 54 */
|
1273 |
+
/***/ function(module, exports, __webpack_require__) {
|
1274 |
+
|
1275 |
+
var $export = __webpack_require__(6)
|
1276 |
+
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
|
1277 |
+
$export($export.S, 'Object', {create: __webpack_require__(44)});
|
1278 |
+
|
1279 |
+
/***/ },
|
1280 |
+
/* 55 */
|
1281 |
+
/***/ function(module, exports, __webpack_require__) {
|
1282 |
+
|
1283 |
+
// 19.1.2.9 Object.getPrototypeOf(O)
|
1284 |
+
var toObject = __webpack_require__(56)
|
1285 |
+
, $getPrototypeOf = __webpack_require__(57);
|
1286 |
+
|
1287 |
+
__webpack_require__(53)('getPrototypeOf', function(){
|
1288 |
+
return function getPrototypeOf(it){
|
1289 |
+
return $getPrototypeOf(toObject(it));
|
1290 |
+
};
|
1291 |
+
});
|
1292 |
+
|
1293 |
+
/***/ },
|
1294 |
+
/* 56 */
|
1295 |
+
/***/ function(module, exports, __webpack_require__) {
|
1296 |
+
|
1297 |
+
// 7.1.13 ToObject(argument)
|
1298 |
+
var defined = __webpack_require__(33);
|
1299 |
+
module.exports = function(it){
|
1300 |
+
return Object(defined(it));
|
1301 |
+
};
|
1302 |
+
|
1303 |
+
/***/ },
|
1304 |
+
/* 57 */
|
1305 |
+
/***/ function(module, exports, __webpack_require__) {
|
1306 |
+
|
1307 |
+
// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
|
1308 |
+
var has = __webpack_require__(3)
|
1309 |
+
, toObject = __webpack_require__(56)
|
1310 |
+
, IE_PROTO = __webpack_require__(38)('IE_PROTO')
|
1311 |
+
, ObjectProto = Object.prototype;
|
1312 |
+
|
1313 |
+
module.exports = Object.getPrototypeOf || function(O){
|
1314 |
+
O = toObject(O);
|
1315 |
+
if(has(O, IE_PROTO))return O[IE_PROTO];
|
1316 |
+
if(typeof O.constructor == 'function' && O instanceof O.constructor){
|
1317 |
+
return O.constructor.prototype;
|
1318 |
+
} return O instanceof Object ? ObjectProto : null;
|
1319 |
+
};
|
1320 |
+
|
1321 |
+
/***/ },
|
1322 |
+
/* 58 */
|
1323 |
+
/***/ function(module, exports, __webpack_require__) {
|
1324 |
+
|
1325 |
+
// 19.1.2.14 Object.keys(O)
|
1326 |
+
var toObject = __webpack_require__(56)
|
1327 |
+
, $keys = __webpack_require__(28);
|
1328 |
+
|
1329 |
+
__webpack_require__(53)('keys', function(){
|
1330 |
+
return function keys(it){
|
1331 |
+
return $keys(toObject(it));
|
1332 |
+
};
|
1333 |
+
});
|
1334 |
+
|
1335 |
+
/***/ },
|
1336 |
+
/* 59 */
|
1337 |
+
/***/ function(module, exports, __webpack_require__) {
|
1338 |
+
|
1339 |
+
// 19.1.2.7 Object.getOwnPropertyNames(O)
|
1340 |
+
__webpack_require__(53)('getOwnPropertyNames', function(){
|
1341 |
+
return __webpack_require__(47).f;
|
1342 |
+
});
|
1343 |
+
|
1344 |
+
/***/ },
|
1345 |
+
/* 60 */
|
1346 |
+
/***/ function(module, exports, __webpack_require__) {
|
1347 |
+
|
1348 |
+
// 19.1.2.5 Object.freeze(O)
|
1349 |
+
var isObject = __webpack_require__(11)
|
1350 |
+
, meta = __webpack_require__(20).onFreeze;
|
1351 |
+
|
1352 |
+
__webpack_require__(53)('freeze', function($freeze){
|
1353 |
+
return function freeze(it){
|
1354 |
+
return $freeze && isObject(it) ? $freeze(meta(it)) : it;
|
1355 |
+
};
|
1356 |
+
});
|
1357 |
+
|
1358 |
+
/***/ },
|
1359 |
+
/* 61 */
|
1360 |
+
/***/ function(module, exports, __webpack_require__) {
|
1361 |
+
|
1362 |
+
// 19.1.2.17 Object.seal(O)
|
1363 |
+
var isObject = __webpack_require__(11)
|
1364 |
+
, meta = __webpack_require__(20).onFreeze;
|
1365 |
+
|
1366 |
+
__webpack_require__(53)('seal', function($seal){
|
1367 |
+
return function seal(it){
|
1368 |
+
return $seal && isObject(it) ? $seal(meta(it)) : it;
|
1369 |
+
};
|
1370 |
+
});
|
1371 |
+
|
1372 |
+
/***/ },
|
1373 |
+
/* 62 */
|
1374 |
+
/***/ function(module, exports, __webpack_require__) {
|
1375 |
+
|
1376 |
+
// 19.1.2.15 Object.preventExtensions(O)
|
1377 |
+
var isObject = __webpack_require__(11)
|
1378 |
+
, meta = __webpack_require__(20).onFreeze;
|
1379 |
+
|
1380 |
+
__webpack_require__(53)('preventExtensions', function($preventExtensions){
|
1381 |
+
return function preventExtensions(it){
|
1382 |
+
return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
|
1383 |
+
};
|
1384 |
+
});
|
1385 |
+
|
1386 |
+
/***/ },
|
1387 |
+
/* 63 */
|
1388 |
+
/***/ function(module, exports, __webpack_require__) {
|
1389 |
+
|
1390 |
+
// 19.1.2.12 Object.isFrozen(O)
|
1391 |
+
var isObject = __webpack_require__(11);
|
1392 |
+
|
1393 |
+
__webpack_require__(53)('isFrozen', function($isFrozen){
|
1394 |
+
return function isFrozen(it){
|
1395 |
+
return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
|
1396 |
+
};
|
1397 |
+
});
|
1398 |
+
|
1399 |
+
/***/ },
|
1400 |
+
/* 64 */
|
1401 |
+
/***/ function(module, exports, __webpack_require__) {
|
1402 |
+
|
1403 |
+
// 19.1.2.13 Object.isSealed(O)
|
1404 |
+
var isObject = __webpack_require__(11);
|
1405 |
+
|
1406 |
+
__webpack_require__(53)('isSealed', function($isSealed){
|
1407 |
+
return function isSealed(it){
|
1408 |
+
return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
|
1409 |
+
};
|
1410 |
+
});
|
1411 |
+
|
1412 |
+
/***/ },
|
1413 |
+
/* 65 */
|
1414 |
+
/***/ function(module, exports, __webpack_require__) {
|
1415 |
+
|
1416 |
+
// 19.1.2.11 Object.isExtensible(O)
|
1417 |
+
var isObject = __webpack_require__(11);
|
1418 |
+
|
1419 |
+
__webpack_require__(53)('isExtensible', function($isExtensible){
|
1420 |
+
return function isExtensible(it){
|
1421 |
+
return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
|
1422 |
+
};
|
1423 |
+
});
|
1424 |
+
|
1425 |
+
/***/ },
|
1426 |
+
/* 66 */
|
1427 |
+
/***/ function(module, exports, __webpack_require__) {
|
1428 |
+
|
1429 |
+
// 19.1.3.1 Object.assign(target, source)
|
1430 |
+
var $export = __webpack_require__(6);
|
1431 |
+
|
1432 |
+
$export($export.S + $export.F, 'Object', {assign: __webpack_require__(67)});
|
1433 |
+
|
1434 |
+
/***/ },
|
1435 |
+
/* 67 */
|
1436 |
+
/***/ function(module, exports, __webpack_require__) {
|
1437 |
+
|
1438 |
+
'use strict';
|
1439 |
+
// 19.1.2.1 Object.assign(target, source, ...)
|
1440 |
+
var getKeys = __webpack_require__(28)
|
1441 |
+
, gOPS = __webpack_require__(41)
|
1442 |
+
, pIE = __webpack_require__(42)
|
1443 |
+
, toObject = __webpack_require__(56)
|
1444 |
+
, IObject = __webpack_require__(31)
|
1445 |
+
, $assign = Object.assign;
|
1446 |
+
|
1447 |
+
// should work with symbols and should have deterministic property order (V8 bug)
|
1448 |
+
module.exports = !$assign || __webpack_require__(5)(function(){
|
1449 |
+
var A = {}
|
1450 |
+
, B = {}
|
1451 |
+
, S = Symbol()
|
1452 |
+
, K = 'abcdefghijklmnopqrst';
|
1453 |
+
A[S] = 7;
|
1454 |
+
K.split('').forEach(function(k){ B[k] = k; });
|
1455 |
+
return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
|
1456 |
+
}) ? function assign(target, source){ // eslint-disable-line no-unused-vars
|
1457 |
+
var T = toObject(target)
|
1458 |
+
, aLen = arguments.length
|
1459 |
+
, index = 1
|
1460 |
+
, getSymbols = gOPS.f
|
1461 |
+
, isEnum = pIE.f;
|
1462 |
+
while(aLen > index){
|
1463 |
+
var S = IObject(arguments[index++])
|
1464 |
+
, keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
|
1465 |
+
, length = keys.length
|
1466 |
+
, j = 0
|
1467 |
+
, key;
|
1468 |
+
while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
|
1469 |
+
} return T;
|
1470 |
+
} : $assign;
|
1471 |
+
|
1472 |
+
/***/ },
|
1473 |
+
/* 68 */
|
1474 |
+
/***/ function(module, exports, __webpack_require__) {
|
1475 |
+
|
1476 |
+
// 19.1.3.10 Object.is(value1, value2)
|
1477 |
+
var $export = __webpack_require__(6);
|
1478 |
+
$export($export.S, 'Object', {is: __webpack_require__(69)});
|
1479 |
+
|
1480 |
+
/***/ },
|
1481 |
+
/* 69 */
|
1482 |
+
/***/ function(module, exports) {
|
1483 |
+
|
1484 |
+
// 7.2.9 SameValue(x, y)
|
1485 |
+
module.exports = Object.is || function is(x, y){
|
1486 |
+
return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
|
1487 |
+
};
|
1488 |
+
|
1489 |
+
/***/ },
|
1490 |
+
/* 70 */
|
1491 |
+
/***/ function(module, exports, __webpack_require__) {
|
1492 |
+
|
1493 |
+
// 19.1.3.19 Object.setPrototypeOf(O, proto)
|
1494 |
+
var $export = __webpack_require__(6);
|
1495 |
+
$export($export.S, 'Object', {setPrototypeOf: __webpack_require__(71).set});
|
1496 |
+
|
1497 |
+
/***/ },
|
1498 |
+
/* 71 */
|
1499 |
+
/***/ function(module, exports, __webpack_require__) {
|
1500 |
+
|
1501 |
+
// Works with __proto__ only. Old v8 can't work with null proto objects.
|
1502 |
+
/* eslint-disable no-proto */
|
1503 |
+
var isObject = __webpack_require__(11)
|
1504 |
+
, anObject = __webpack_require__(10);
|
1505 |
+
var check = function(O, proto){
|
1506 |
+
anObject(O);
|
1507 |
+
if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!");
|
1508 |
+
};
|
1509 |
+
module.exports = {
|
1510 |
+
set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
|
1511 |
+
function(test, buggy, set){
|
1512 |
+
try {
|
1513 |
+
set = __webpack_require__(18)(Function.call, __webpack_require__(49).f(Object.prototype, '__proto__').set, 2);
|
1514 |
+
set(test, []);
|
1515 |
+
buggy = !(test instanceof Array);
|
1516 |
+
} catch(e){ buggy = true; }
|
1517 |
+
return function setPrototypeOf(O, proto){
|
1518 |
+
check(O, proto);
|
1519 |
+
if(buggy)O.__proto__ = proto;
|
1520 |
+
else set(O, proto);
|
1521 |
+
return O;
|
1522 |
+
};
|
1523 |
+
}({}, false) : undefined),
|
1524 |
+
check: check
|
1525 |
+
};
|
1526 |
+
|
1527 |
+
/***/ },
|
1528 |
+
/* 72 */
|
1529 |
+
/***/ function(module, exports, __webpack_require__) {
|
1530 |
+
|
1531 |
+
'use strict';
|
1532 |
+
// 19.1.3.6 Object.prototype.toString()
|
1533 |
+
var classof = __webpack_require__(73)
|
1534 |
+
, test = {};
|
1535 |
+
test[__webpack_require__(23)('toStringTag')] = 'z';
|
1536 |
+
if(test + '' != '[object z]'){
|
1537 |
+
__webpack_require__(16)(Object.prototype, 'toString', function toString(){
|
1538 |
+
return '[object ' + classof(this) + ']';
|
1539 |
+
}, true);
|
1540 |
+
}
|
1541 |
+
|
1542 |
+
/***/ },
|
1543 |
+
/* 73 */
|
1544 |
+
/***/ function(module, exports, __webpack_require__) {
|
1545 |
+
|
1546 |
+
// getting tag from 19.1.3.6 Object.prototype.toString()
|
1547 |
+
var cof = __webpack_require__(32)
|
1548 |
+
, TAG = __webpack_require__(23)('toStringTag')
|
1549 |
+
// ES3 wrong here
|
1550 |
+
, ARG = cof(function(){ return arguments; }()) == 'Arguments';
|
1551 |
+
|
1552 |
+
// fallback for IE11 Script Access Denied error
|
1553 |
+
var tryGet = function(it, key){
|
1554 |
+
try {
|
1555 |
+
return it[key];
|
1556 |
+
} catch(e){ /* empty */ }
|
1557 |
+
};
|
1558 |
+
|
1559 |
+
module.exports = function(it){
|
1560 |
+
var O, T, B;
|
1561 |
+
return it === undefined ? 'Undefined' : it === null ? 'Null'
|
1562 |
+
// @@toStringTag case
|
1563 |
+
: typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
|
1564 |
+
// builtinTag case
|
1565 |
+
: ARG ? cof(O)
|
1566 |
+
// ES3 arguments fallback
|
1567 |
+
: (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
|
1568 |
+
};
|
1569 |
+
|
1570 |
+
/***/ },
|
1571 |
+
/* 74 */
|
1572 |
+
/***/ function(module, exports, __webpack_require__) {
|
1573 |
+
|
1574 |
+
// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
|
1575 |
+
var $export = __webpack_require__(6);
|
1576 |
+
|
1577 |
+
$export($export.P, 'Function', {bind: __webpack_require__(75)});
|
1578 |
+
|
1579 |
+
/***/ },
|
1580 |
+
/* 75 */
|
1581 |
+
/***/ function(module, exports, __webpack_require__) {
|
1582 |
+
|
1583 |
+
'use strict';
|
1584 |
+
var aFunction = __webpack_require__(19)
|
1585 |
+
, isObject = __webpack_require__(11)
|
1586 |
+
, invoke = __webpack_require__(76)
|
1587 |
+
, arraySlice = [].slice
|
1588 |
+
, factories = {};
|
1589 |
+
|
1590 |
+
var construct = function(F, len, args){
|
1591 |
+
if(!(len in factories)){
|
1592 |
+
for(var n = [], i = 0; i < len; i++)n[i] = 'a[' + i + ']';
|
1593 |
+
factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
|
1594 |
+
} return factories[len](F, args);
|
1595 |
+
};
|
1596 |
+
|
1597 |
+
module.exports = Function.bind || function bind(that /*, args... */){
|
1598 |
+
var fn = aFunction(this)
|
1599 |
+
, partArgs = arraySlice.call(arguments, 1);
|
1600 |
+
var bound = function(/* args... */){
|
1601 |
+
var args = partArgs.concat(arraySlice.call(arguments));
|
1602 |
+
return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
|
1603 |
+
};
|
1604 |
+
if(isObject(fn.prototype))bound.prototype = fn.prototype;
|
1605 |
+
return bound;
|
1606 |
+
};
|
1607 |
+
|
1608 |
+
/***/ },
|
1609 |
+
/* 76 */
|
1610 |
+
/***/ function(module, exports) {
|
1611 |
+
|
1612 |
+
// fast apply, http://jsperf.lnkit.com/fast-apply/5
|
1613 |
+
module.exports = function(fn, args, that){
|
1614 |
+
var un = that === undefined;
|
1615 |
+
switch(args.length){
|
1616 |
+
case 0: return un ? fn()
|
1617 |
+
: fn.call(that);
|
1618 |
+
case 1: return un ? fn(args[0])
|
1619 |
+
: fn.call(that, args[0]);
|
1620 |
+
case 2: return un ? fn(args[0], args[1])
|
1621 |
+
: fn.call(that, args[0], args[1]);
|
1622 |
+
case 3: return un ? fn(args[0], args[1], args[2])
|
1623 |
+
: fn.call(that, args[0], args[1], args[2]);
|
1624 |
+
case 4: return un ? fn(args[0], args[1], args[2], args[3])
|
1625 |
+
: fn.call(that, args[0], args[1], args[2], args[3]);
|
1626 |
+
} return fn.apply(that, args);
|
1627 |
+
};
|
1628 |
+
|
1629 |
+
/***/ },
|
1630 |
+
/* 77 */
|
1631 |
+
/***/ function(module, exports, __webpack_require__) {
|
1632 |
+
|
1633 |
+
var dP = __webpack_require__(9).f
|
1634 |
+
, createDesc = __webpack_require__(15)
|
1635 |
+
, has = __webpack_require__(3)
|
1636 |
+
, FProto = Function.prototype
|
1637 |
+
, nameRE = /^\s*function ([^ (]*)/
|
1638 |
+
, NAME = 'name';
|
1639 |
+
|
1640 |
+
var isExtensible = Object.isExtensible || function(){
|
1641 |
+
return true;
|
1642 |
+
};
|
1643 |
+
|
1644 |
+
// 19.2.4.2 name
|
1645 |
+
NAME in FProto || __webpack_require__(4) && dP(FProto, NAME, {
|
1646 |
+
configurable: true,
|
1647 |
+
get: function(){
|
1648 |
+
try {
|
1649 |
+
var that = this
|
1650 |
+
, name = ('' + that).match(nameRE)[1];
|
1651 |
+
has(that, NAME) || !isExtensible(that) || dP(that, NAME, createDesc(5, name));
|
1652 |
+
return name;
|
1653 |
+
} catch(e){
|
1654 |
+
return '';
|
1655 |
+
}
|
1656 |
+
}
|
1657 |
+
});
|
1658 |
+
|
1659 |
+
/***/ },
|
1660 |
+
/* 78 */
|
1661 |
+
/***/ function(module, exports, __webpack_require__) {
|
1662 |
+
|
1663 |
+
'use strict';
|
1664 |
+
var isObject = __webpack_require__(11)
|
1665 |
+
, getPrototypeOf = __webpack_require__(57)
|
1666 |
+
, HAS_INSTANCE = __webpack_require__(23)('hasInstance')
|
1667 |
+
, FunctionProto = Function.prototype;
|
1668 |
+
// 19.2.3.6 Function.prototype[@@hasInstance](V)
|
1669 |
+
if(!(HAS_INSTANCE in FunctionProto))__webpack_require__(9).f(FunctionProto, HAS_INSTANCE, {value: function(O){
|
1670 |
+
if(typeof this != 'function' || !isObject(O))return false;
|
1671 |
+
if(!isObject(this.prototype))return O instanceof this;
|
1672 |
+
// for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
|
1673 |
+
while(O = getPrototypeOf(O))if(this.prototype === O)return true;
|
1674 |
+
return false;
|
1675 |
+
}});
|
1676 |
+
|
1677 |
+
/***/ },
|
1678 |
+
/* 79 */
|
1679 |
+
/***/ function(module, exports, __webpack_require__) {
|
1680 |
+
|
1681 |
+
'use strict';
|
1682 |
+
var global = __webpack_require__(2)
|
1683 |
+
, has = __webpack_require__(3)
|
1684 |
+
, cof = __webpack_require__(32)
|
1685 |
+
, inheritIfRequired = __webpack_require__(80)
|
1686 |
+
, toPrimitive = __webpack_require__(14)
|
1687 |
+
, fails = __webpack_require__(5)
|
1688 |
+
, gOPN = __webpack_require__(48).f
|
1689 |
+
, gOPD = __webpack_require__(49).f
|
1690 |
+
, dP = __webpack_require__(9).f
|
1691 |
+
, $trim = __webpack_require__(81).trim
|
1692 |
+
, NUMBER = 'Number'
|
1693 |
+
, $Number = global[NUMBER]
|
1694 |
+
, Base = $Number
|
1695 |
+
, proto = $Number.prototype
|
1696 |
+
// Opera ~12 has broken Object#toString
|
1697 |
+
, BROKEN_COF = cof(__webpack_require__(44)(proto)) == NUMBER
|
1698 |
+
, TRIM = 'trim' in String.prototype;
|
1699 |
+
|
1700 |
+
// 7.1.3 ToNumber(argument)
|
1701 |
+
var toNumber = function(argument){
|
1702 |
+
var it = toPrimitive(argument, false);
|
1703 |
+
if(typeof it == 'string' && it.length > 2){
|
1704 |
+
it = TRIM ? it.trim() : $trim(it, 3);
|
1705 |
+
var first = it.charCodeAt(0)
|
1706 |
+
, third, radix, maxCode;
|
1707 |
+
if(first === 43 || first === 45){
|
1708 |
+
third = it.charCodeAt(2);
|
1709 |
+
if(third === 88 || third === 120)return NaN; // Number('+0x1') should be NaN, old V8 fix
|
1710 |
+
} else if(first === 48){
|
1711 |
+
switch(it.charCodeAt(1)){
|
1712 |
+
case 66 : case 98 : radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
|
1713 |
+
case 79 : case 111 : radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
|
1714 |
+
default : return +it;
|
1715 |
+
}
|
1716 |
+
for(var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++){
|
1717 |
+
code = digits.charCodeAt(i);
|
1718 |
+
// parseInt parses a string to a first unavailable symbol
|
1719 |
+
// but ToNumber should return NaN if a string contains unavailable symbols
|
1720 |
+
if(code < 48 || code > maxCode)return NaN;
|
1721 |
+
} return parseInt(digits, radix);
|
1722 |
+
}
|
1723 |
+
} return +it;
|
1724 |
+
};
|
1725 |
+
|
1726 |
+
if(!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')){
|
1727 |
+
$Number = function Number(value){
|
1728 |
+
var it = arguments.length < 1 ? 0 : value
|
1729 |
+
, that = this;
|
1730 |
+
return that instanceof $Number
|
1731 |
+
// check on 1..constructor(foo) case
|
1732 |
+
&& (BROKEN_COF ? fails(function(){ proto.valueOf.call(that); }) : cof(that) != NUMBER)
|
1733 |
+
? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
|
1734 |
+
};
|
1735 |
+
for(var keys = __webpack_require__(4) ? gOPN(Base) : (
|
1736 |
+
// ES3:
|
1737 |
+
'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
|
1738 |
+
// ES6 (in case, if modules with ES6 Number statics required before):
|
1739 |
+
'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
|
1740 |
+
'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
|
1741 |
+
).split(','), j = 0, key; keys.length > j; j++){
|
1742 |
+
if(has(Base, key = keys[j]) && !has($Number, key)){
|
1743 |
+
dP($Number, key, gOPD(Base, key));
|
1744 |
+
}
|
1745 |
+
}
|
1746 |
+
$Number.prototype = proto;
|
1747 |
+
proto.constructor = $Number;
|
1748 |
+
__webpack_require__(16)(global, NUMBER, $Number);
|
1749 |
+
}
|
1750 |
+
|
1751 |
+
/***/ },
|
1752 |
+
/* 80 */
|
1753 |
+
/***/ function(module, exports, __webpack_require__) {
|
1754 |
+
|
1755 |
+
var isObject = __webpack_require__(11)
|
1756 |
+
, setPrototypeOf = __webpack_require__(71).set;
|
1757 |
+
module.exports = function(that, target, C){
|
1758 |
+
var P, S = target.constructor;
|
1759 |
+
if(S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf){
|
1760 |
+
setPrototypeOf(that, P);
|
1761 |
+
} return that;
|
1762 |
+
};
|
1763 |
+
|
1764 |
+
/***/ },
|
1765 |
+
/* 81 */
|
1766 |
+
/***/ function(module, exports, __webpack_require__) {
|
1767 |
+
|
1768 |
+
var $export = __webpack_require__(6)
|
1769 |
+
, defined = __webpack_require__(33)
|
1770 |
+
, fails = __webpack_require__(5)
|
1771 |
+
, spaces = __webpack_require__(82)
|
1772 |
+
, space = '[' + spaces + ']'
|
1773 |
+
, non = '\u200b\u0085'
|
1774 |
+
, ltrim = RegExp('^' + space + space + '*')
|
1775 |
+
, rtrim = RegExp(space + space + '*$');
|
1776 |
+
|
1777 |
+
var exporter = function(KEY, exec, ALIAS){
|
1778 |
+
var exp = {};
|
1779 |
+
var FORCE = fails(function(){
|
1780 |
+
return !!spaces[KEY]() || non[KEY]() != non;
|
1781 |
+
});
|
1782 |
+
var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
|
1783 |
+
if(ALIAS)exp[ALIAS] = fn;
|
1784 |
+
$export($export.P + $export.F * FORCE, 'String', exp);
|
1785 |
+
};
|
1786 |
+
|
1787 |
+
// 1 -> String#trimLeft
|
1788 |
+
// 2 -> String#trimRight
|
1789 |
+
// 3 -> String#trim
|
1790 |
+
var trim = exporter.trim = function(string, TYPE){
|
1791 |
+
string = String(defined(string));
|
1792 |
+
if(TYPE & 1)string = string.replace(ltrim, '');
|
1793 |
+
if(TYPE & 2)string = string.replace(rtrim, '');
|
1794 |
+
return string;
|
1795 |
+
};
|
1796 |
+
|
1797 |
+
module.exports = exporter;
|
1798 |
+
|
1799 |
+
/***/ },
|
1800 |
+
/* 82 */
|
1801 |
+
/***/ function(module, exports) {
|
1802 |
+
|
1803 |
+
module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
|
1804 |
+
'\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
|
1805 |
+
|
1806 |
+
/***/ },
|
1807 |
+
/* 83 */
|
1808 |
+
/***/ function(module, exports, __webpack_require__) {
|
1809 |
+
|
1810 |
+
'use strict';
|
1811 |
+
var $export = __webpack_require__(6)
|
1812 |
+
, toInteger = __webpack_require__(36)
|
1813 |
+
, aNumberValue = __webpack_require__(84)
|
1814 |
+
, repeat = __webpack_require__(85)
|
1815 |
+
, $toFixed = 1..toFixed
|
1816 |
+
, floor = Math.floor
|
1817 |
+
, data = [0, 0, 0, 0, 0, 0]
|
1818 |
+
, ERROR = 'Number.toFixed: incorrect invocation!'
|
1819 |
+
, ZERO = '0';
|
1820 |
+
|
1821 |
+
var multiply = function(n, c){
|
1822 |
+
var i = -1
|
1823 |
+
, c2 = c;
|
1824 |
+
while(++i < 6){
|
1825 |
+
c2 += n * data[i];
|
1826 |
+
data[i] = c2 % 1e7;
|
1827 |
+
c2 = floor(c2 / 1e7);
|
1828 |
+
}
|
1829 |
+
};
|
1830 |
+
var divide = function(n){
|
1831 |
+
var i = 6
|
1832 |
+
, c = 0;
|
1833 |
+
while(--i >= 0){
|
1834 |
+
c += data[i];
|
1835 |
+
data[i] = floor(c / n);
|
1836 |
+
c = (c % n) * 1e7;
|
1837 |
+
}
|
1838 |
+
};
|
1839 |
+
var numToString = function(){
|
1840 |
+
var i = 6
|
1841 |
+
, s = '';
|
1842 |
+
while(--i >= 0){
|
1843 |
+
if(s !== '' || i === 0 || data[i] !== 0){
|
1844 |
+
var t = String(data[i]);
|
1845 |
+
s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;
|
1846 |
+
}
|
1847 |
+
} return s;
|
1848 |
+
};
|
1849 |
+
var pow = function(x, n, acc){
|
1850 |
+
return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
|
1851 |
+
};
|
1852 |
+
var log = function(x){
|
1853 |
+
var n = 0
|
1854 |
+
, x2 = x;
|
1855 |
+
while(x2 >= 4096){
|
1856 |
+
n += 12;
|
1857 |
+
x2 /= 4096;
|
1858 |
+
}
|
1859 |
+
while(x2 >= 2){
|
1860 |
+
n += 1;
|
1861 |
+
x2 /= 2;
|
1862 |
+
} return n;
|
1863 |
+
};
|
1864 |
+
|
1865 |
+
$export($export.P + $export.F * (!!$toFixed && (
|
1866 |
+
0.00008.toFixed(3) !== '0.000' ||
|
1867 |
+
0.9.toFixed(0) !== '1' ||
|
1868 |
+
1.255.toFixed(2) !== '1.25' ||
|
1869 |
+
1000000000000000128..toFixed(0) !== '1000000000000000128'
|
1870 |
+
) || !__webpack_require__(5)(function(){
|
1871 |
+
// V8 ~ Android 4.3-
|
1872 |
+
$toFixed.call({});
|
1873 |
+
})), 'Number', {
|
1874 |
+
toFixed: function toFixed(fractionDigits){
|
1875 |
+
var x = aNumberValue(this, ERROR)
|
1876 |
+
, f = toInteger(fractionDigits)
|
1877 |
+
, s = ''
|
1878 |
+
, m = ZERO
|
1879 |
+
, e, z, j, k;
|
1880 |
+
if(f < 0 || f > 20)throw RangeError(ERROR);
|
1881 |
+
if(x != x)return 'NaN';
|
1882 |
+
if(x <= -1e21 || x >= 1e21)return String(x);
|
1883 |
+
if(x < 0){
|
1884 |
+
s = '-';
|
1885 |
+
x = -x;
|
1886 |
+
}
|
1887 |
+
if(x > 1e-21){
|
1888 |
+
e = log(x * pow(2, 69, 1)) - 69;
|
1889 |
+
z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
|
1890 |
+
z *= 0x10000000000000;
|
1891 |
+
e = 52 - e;
|
1892 |
+
if(e > 0){
|
1893 |
+
multiply(0, z);
|
1894 |
+
j = f;
|
1895 |
+
while(j >= 7){
|
1896 |
+
multiply(1e7, 0);
|
1897 |
+
j -= 7;
|
1898 |
+
}
|
1899 |
+
multiply(pow(10, j, 1), 0);
|
1900 |
+
j = e - 1;
|
1901 |
+
while(j >= 23){
|
1902 |
+
divide(1 << 23);
|
1903 |
+
j -= 23;
|
1904 |
+
}
|
1905 |
+
divide(1 << j);
|
1906 |
+
multiply(1, 1);
|
1907 |
+
divide(2);
|
1908 |
+
m = numToString();
|
1909 |
+
} else {
|
1910 |
+
multiply(0, z);
|
1911 |
+
multiply(1 << -e, 0);
|
1912 |
+
m = numToString() + repeat.call(ZERO, f);
|
1913 |
+
}
|
1914 |
+
}
|
1915 |
+
if(f > 0){
|
1916 |
+
k = m.length;
|
1917 |
+
m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));
|
1918 |
+
} else {
|
1919 |
+
m = s + m;
|
1920 |
+
} return m;
|
1921 |
+
}
|
1922 |
+
});
|
1923 |
+
|
1924 |
+
/***/ },
|
1925 |
+
/* 84 */
|
1926 |
+
/***/ function(module, exports, __webpack_require__) {
|
1927 |
+
|
1928 |
+
var cof = __webpack_require__(32);
|
1929 |
+
module.exports = function(it, msg){
|
1930 |
+
if(typeof it != 'number' && cof(it) != 'Number')throw TypeError(msg);
|
1931 |
+
return +it;
|
1932 |
+
};
|
1933 |
+
|
1934 |
+
/***/ },
|
1935 |
+
/* 85 */
|
1936 |
+
/***/ function(module, exports, __webpack_require__) {
|
1937 |
+
|
1938 |
+
'use strict';
|
1939 |
+
var toInteger = __webpack_require__(36)
|
1940 |
+
, defined = __webpack_require__(33);
|
1941 |
+
|
1942 |
+
module.exports = function repeat(count){
|
1943 |
+
var str = String(defined(this))
|
1944 |
+
, res = ''
|
1945 |
+
, n = toInteger(count);
|
1946 |
+
if(n < 0 || n == Infinity)throw RangeError("Count can't be negative");
|
1947 |
+
for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str;
|
1948 |
+
return res;
|
1949 |
+
};
|
1950 |
+
|
1951 |
+
/***/ },
|
1952 |
+
/* 86 */
|
1953 |
+
/***/ function(module, exports, __webpack_require__) {
|
1954 |
+
|
1955 |
+
'use strict';
|
1956 |
+
var $export = __webpack_require__(6)
|
1957 |
+
, $fails = __webpack_require__(5)
|
1958 |
+
, aNumberValue = __webpack_require__(84)
|
1959 |
+
, $toPrecision = 1..toPrecision;
|
1960 |
+
|
1961 |
+
$export($export.P + $export.F * ($fails(function(){
|
1962 |
+
// IE7-
|
1963 |
+
return $toPrecision.call(1, undefined) !== '1';
|
1964 |
+
}) || !$fails(function(){
|
1965 |
+
// V8 ~ Android 4.3-
|
1966 |
+
$toPrecision.call({});
|
1967 |
+
})), 'Number', {
|
1968 |
+
toPrecision: function toPrecision(precision){
|
1969 |
+
var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
|
1970 |
+
return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
|
1971 |
+
}
|
1972 |
+
});
|
1973 |
+
|
1974 |
+
/***/ },
|
1975 |
+
/* 87 */
|
1976 |
+
/***/ function(module, exports, __webpack_require__) {
|
1977 |
+
|
1978 |
+
// 20.1.2.1 Number.EPSILON
|
1979 |
+
var $export = __webpack_require__(6);
|
1980 |
+
|
1981 |
+
$export($export.S, 'Number', {EPSILON: Math.pow(2, -52)});
|
1982 |
+
|
1983 |
+
/***/ },
|
1984 |
+
/* 88 */
|
1985 |
+
/***/ function(module, exports, __webpack_require__) {
|
1986 |
+
|
1987 |
+
// 20.1.2.2 Number.isFinite(number)
|
1988 |
+
var $export = __webpack_require__(6)
|
1989 |
+
, _isFinite = __webpack_require__(2).isFinite;
|
1990 |
+
|
1991 |
+
$export($export.S, 'Number', {
|
1992 |
+
isFinite: function isFinite(it){
|
1993 |
+
return typeof it == 'number' && _isFinite(it);
|
1994 |
+
}
|
1995 |
+
});
|
1996 |
+
|
1997 |
+
/***/ },
|
1998 |
+
/* 89 */
|
1999 |
+
/***/ function(module, exports, __webpack_require__) {
|
2000 |
+
|
2001 |
+
// 20.1.2.3 Number.isInteger(number)
|
2002 |
+
var $export = __webpack_require__(6);
|
2003 |
+
|
2004 |
+
$export($export.S, 'Number', {isInteger: __webpack_require__(90)});
|
2005 |
+
|
2006 |
+
/***/ },
|
2007 |
+
/* 90 */
|
2008 |
+
/***/ function(module, exports, __webpack_require__) {
|
2009 |
+
|
2010 |
+
// 20.1.2.3 Number.isInteger(number)
|
2011 |
+
var isObject = __webpack_require__(11)
|
2012 |
+
, floor = Math.floor;
|
2013 |
+
module.exports = function isInteger(it){
|
2014 |
+
return !isObject(it) && isFinite(it) && floor(it) === it;
|
2015 |
+
};
|
2016 |
+
|
2017 |
+
/***/ },
|
2018 |
+
/* 91 */
|
2019 |
+
/***/ function(module, exports, __webpack_require__) {
|
2020 |
+
|
2021 |
+
// 20.1.2.4 Number.isNaN(number)
|
2022 |
+
var $export = __webpack_require__(6);
|
2023 |
+
|
2024 |
+
$export($export.S, 'Number', {
|
2025 |
+
isNaN: function isNaN(number){
|
2026 |
+
return number != number;
|
2027 |
+
}
|
2028 |
+
});
|
2029 |
+
|
2030 |
+
/***/ },
|
2031 |
+
/* 92 */
|
2032 |
+
/***/ function(module, exports, __webpack_require__) {
|
2033 |
+
|
2034 |
+
// 20.1.2.5 Number.isSafeInteger(number)
|
2035 |
+
var $export = __webpack_require__(6)
|
2036 |
+
, isInteger = __webpack_require__(90)
|
2037 |
+
, abs = Math.abs;
|
2038 |
+
|
2039 |
+
$export($export.S, 'Number', {
|
2040 |
+
isSafeInteger: function isSafeInteger(number){
|
2041 |
+
return isInteger(number) && abs(number) <= 0x1fffffffffffff;
|
2042 |
+
}
|
2043 |
+
});
|
2044 |
+
|
2045 |
+
/***/ },
|
2046 |
+
/* 93 */
|
2047 |
+
/***/ function(module, exports, __webpack_require__) {
|
2048 |
+
|
2049 |
+
// 20.1.2.6 Number.MAX_SAFE_INTEGER
|
2050 |
+
var $export = __webpack_require__(6);
|
2051 |
+
|
2052 |
+
$export($export.S, 'Number', {MAX_SAFE_INTEGER: 0x1fffffffffffff});
|
2053 |
+
|
2054 |
+
/***/ },
|
2055 |
+
/* 94 */
|
2056 |
+
/***/ function(module, exports, __webpack_require__) {
|
2057 |
+
|
2058 |
+
// 20.1.2.10 Number.MIN_SAFE_INTEGER
|
2059 |
+
var $export = __webpack_require__(6);
|
2060 |
+
|
2061 |
+
$export($export.S, 'Number', {MIN_SAFE_INTEGER: -0x1fffffffffffff});
|
2062 |
+
|
2063 |
+
/***/ },
|
2064 |
+
/* 95 */
|
2065 |
+
/***/ function(module, exports, __webpack_require__) {
|
2066 |
+
|
2067 |
+
var $export = __webpack_require__(6)
|
2068 |
+
, $parseFloat = __webpack_require__(96);
|
2069 |
+
// 20.1.2.12 Number.parseFloat(string)
|
2070 |
+
$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', {parseFloat: $parseFloat});
|
2071 |
+
|
2072 |
+
/***/ },
|
2073 |
+
/* 96 */
|
2074 |
+
/***/ function(module, exports, __webpack_require__) {
|
2075 |
+
|
2076 |
+
var $parseFloat = __webpack_require__(2).parseFloat
|
2077 |
+
, $trim = __webpack_require__(81).trim;
|
2078 |
+
|
2079 |
+
module.exports = 1 / $parseFloat(__webpack_require__(82) + '-0') !== -Infinity ? function parseFloat(str){
|
2080 |
+
var string = $trim(String(str), 3)
|
2081 |
+
, result = $parseFloat(string);
|
2082 |
+
return result === 0 && string.charAt(0) == '-' ? -0 : result;
|
2083 |
+
} : $parseFloat;
|
2084 |
+
|
2085 |
+
/***/ },
|
2086 |
+
/* 97 */
|
2087 |
+
/***/ function(module, exports, __webpack_require__) {
|
2088 |
+
|
2089 |
+
var $export = __webpack_require__(6)
|
2090 |
+
, $parseInt = __webpack_require__(98);
|
2091 |
+
// 20.1.2.13 Number.parseInt(string, radix)
|
2092 |
+
$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', {parseInt: $parseInt});
|
2093 |
+
|
2094 |
+
/***/ },
|
2095 |
+
/* 98 */
|
2096 |
+
/***/ function(module, exports, __webpack_require__) {
|
2097 |
+
|
2098 |
+
var $parseInt = __webpack_require__(2).parseInt
|
2099 |
+
, $trim = __webpack_require__(81).trim
|
2100 |
+
, ws = __webpack_require__(82)
|
2101 |
+
, hex = /^[\-+]?0[xX]/;
|
2102 |
+
|
2103 |
+
module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix){
|
2104 |
+
var string = $trim(String(str), 3);
|
2105 |
+
return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
|
2106 |
+
} : $parseInt;
|
2107 |
+
|
2108 |
+
/***/ },
|
2109 |
+
/* 99 */
|
2110 |
+
/***/ function(module, exports, __webpack_require__) {
|
2111 |
+
|
2112 |
+
var $export = __webpack_require__(6)
|
2113 |
+
, $parseInt = __webpack_require__(98);
|
2114 |
+
// 18.2.5 parseInt(string, radix)
|
2115 |
+
$export($export.G + $export.F * (parseInt != $parseInt), {parseInt: $parseInt});
|
2116 |
+
|
2117 |
+
/***/ },
|
2118 |
+
/* 100 */
|
2119 |
+
/***/ function(module, exports, __webpack_require__) {
|
2120 |
+
|
2121 |
+
var $export = __webpack_require__(6)
|
2122 |
+
, $parseFloat = __webpack_require__(96);
|
2123 |
+
// 18.2.4 parseFloat(string)
|
2124 |
+
$export($export.G + $export.F * (parseFloat != $parseFloat), {parseFloat: $parseFloat});
|
2125 |
+
|
2126 |
+
/***/ },
|
2127 |
+
/* 101 */
|
2128 |
+
/***/ function(module, exports, __webpack_require__) {
|
2129 |
+
|
2130 |
+
// 20.2.2.3 Math.acosh(x)
|
2131 |
+
var $export = __webpack_require__(6)
|
2132 |
+
, log1p = __webpack_require__(102)
|
2133 |
+
, sqrt = Math.sqrt
|
2134 |
+
, $acosh = Math.acosh;
|
2135 |
+
|
2136 |
+
$export($export.S + $export.F * !($acosh
|
2137 |
+
// V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
|
2138 |
+
&& Math.floor($acosh(Number.MAX_VALUE)) == 710
|
2139 |
+
// Tor Browser bug: Math.acosh(Infinity) -> NaN
|
2140 |
+
&& $acosh(Infinity) == Infinity
|
2141 |
+
), 'Math', {
|
2142 |
+
acosh: function acosh(x){
|
2143 |
+
return (x = +x) < 1 ? NaN : x > 94906265.62425156
|
2144 |
+
? Math.log(x) + Math.LN2
|
2145 |
+
: log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
|
2146 |
+
}
|
2147 |
+
});
|
2148 |
+
|
2149 |
+
/***/ },
|
2150 |
+
/* 102 */
|
2151 |
+
/***/ function(module, exports) {
|
2152 |
+
|
2153 |
+
// 20.2.2.20 Math.log1p(x)
|
2154 |
+
module.exports = Math.log1p || function log1p(x){
|
2155 |
+
return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
|
2156 |
+
};
|
2157 |
+
|
2158 |
+
/***/ },
|
2159 |
+
/* 103 */
|
2160 |
+
/***/ function(module, exports, __webpack_require__) {
|
2161 |
+
|
2162 |
+
// 20.2.2.5 Math.asinh(x)
|
2163 |
+
var $export = __webpack_require__(6)
|
2164 |
+
, $asinh = Math.asinh;
|
2165 |
+
|
2166 |
+
function asinh(x){
|
2167 |
+
return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
|
2168 |
+
}
|
2169 |
+
|
2170 |
+
// Tor Browser bug: Math.asinh(0) -> -0
|
2171 |
+
$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', {asinh: asinh});
|
2172 |
+
|
2173 |
+
/***/ },
|
2174 |
+
/* 104 */
|
2175 |
+
/***/ function(module, exports, __webpack_require__) {
|
2176 |
+
|
2177 |
+
// 20.2.2.7 Math.atanh(x)
|
2178 |
+
var $export = __webpack_require__(6)
|
2179 |
+
, $atanh = Math.atanh;
|
2180 |
+
|
2181 |
+
// Tor Browser bug: Math.atanh(-0) -> 0
|
2182 |
+
$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {
|
2183 |
+
atanh: function atanh(x){
|
2184 |
+
return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
|
2185 |
+
}
|
2186 |
+
});
|
2187 |
+
|
2188 |
+
/***/ },
|
2189 |
+
/* 105 */
|
2190 |
+
/***/ function(module, exports, __webpack_require__) {
|
2191 |
+
|
2192 |
+
// 20.2.2.9 Math.cbrt(x)
|
2193 |
+
var $export = __webpack_require__(6)
|
2194 |
+
, sign = __webpack_require__(106);
|
2195 |
+
|
2196 |
+
$export($export.S, 'Math', {
|
2197 |
+
cbrt: function cbrt(x){
|
2198 |
+
return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
|
2199 |
+
}
|
2200 |
+
});
|
2201 |
+
|
2202 |
+
/***/ },
|
2203 |
+
/* 106 */
|
2204 |
+
/***/ function(module, exports) {
|
2205 |
+
|
2206 |
+
// 20.2.2.28 Math.sign(x)
|
2207 |
+
module.exports = Math.sign || function sign(x){
|
2208 |
+
return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
|
2209 |
+
};
|
2210 |
+
|
2211 |
+
/***/ },
|
2212 |
+
/* 107 */
|
2213 |
+
/***/ function(module, exports, __webpack_require__) {
|
2214 |
+
|
2215 |
+
// 20.2.2.11 Math.clz32(x)
|
2216 |
+
var $export = __webpack_require__(6);
|
2217 |
+
|
2218 |
+
$export($export.S, 'Math', {
|
2219 |
+
clz32: function clz32(x){
|
2220 |
+
return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
|
2221 |
+
}
|
2222 |
+
});
|
2223 |
+
|
2224 |
+
/***/ },
|
2225 |
+
/* 108 */
|
2226 |
+
/***/ function(module, exports, __webpack_require__) {
|
2227 |
+
|
2228 |
+
// 20.2.2.12 Math.cosh(x)
|
2229 |
+
var $export = __webpack_require__(6)
|
2230 |
+
, exp = Math.exp;
|
2231 |
+
|
2232 |
+
$export($export.S, 'Math', {
|
2233 |
+
cosh: function cosh(x){
|
2234 |
+
return (exp(x = +x) + exp(-x)) / 2;
|
2235 |
+
}
|
2236 |
+
});
|
2237 |
+
|
2238 |
+
/***/ },
|
2239 |
+
/* 109 */
|
2240 |
+
/***/ function(module, exports, __webpack_require__) {
|
2241 |
+
|
2242 |
+
// 20.2.2.14 Math.expm1(x)
|
2243 |
+
var $export = __webpack_require__(6)
|
2244 |
+
, $expm1 = __webpack_require__(110);
|
2245 |
+
|
2246 |
+
$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', {expm1: $expm1});
|
2247 |
+
|
2248 |
+
/***/ },
|
2249 |
+
/* 110 */
|
2250 |
+
/***/ function(module, exports) {
|
2251 |
+
|
2252 |
+
// 20.2.2.14 Math.expm1(x)
|
2253 |
+
var $expm1 = Math.expm1;
|
2254 |
+
module.exports = (!$expm1
|
2255 |
+
// Old FF bug
|
2256 |
+
|| $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168
|
2257 |
+
// Tor Browser bug
|
2258 |
+
|| $expm1(-2e-17) != -2e-17
|
2259 |
+
) ? function expm1(x){
|
2260 |
+
return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
|
2261 |
+
} : $expm1;
|
2262 |
+
|
2263 |
+
/***/ },
|
2264 |
+
/* 111 */
|
2265 |
+
/***/ function(module, exports, __webpack_require__) {
|
2266 |
+
|
2267 |
+
// 20.2.2.16 Math.fround(x)
|
2268 |
+
var $export = __webpack_require__(6)
|
2269 |
+
, sign = __webpack_require__(106)
|
2270 |
+
, pow = Math.pow
|
2271 |
+
, EPSILON = pow(2, -52)
|
2272 |
+
, EPSILON32 = pow(2, -23)
|
2273 |
+
, MAX32 = pow(2, 127) * (2 - EPSILON32)
|
2274 |
+
, MIN32 = pow(2, -126);
|
2275 |
+
|
2276 |
+
var roundTiesToEven = function(n){
|
2277 |
+
return n + 1 / EPSILON - 1 / EPSILON;
|
2278 |
+
};
|
2279 |
+
|
2280 |
+
|
2281 |
+
$export($export.S, 'Math', {
|
2282 |
+
fround: function fround(x){
|
2283 |
+
var $abs = Math.abs(x)
|
2284 |
+
, $sign = sign(x)
|
2285 |
+
, a, result;
|
2286 |
+
if($abs < MIN32)return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
|
2287 |
+
a = (1 + EPSILON32 / EPSILON) * $abs;
|
2288 |
+
result = a - (a - $abs);
|
2289 |
+
if(result > MAX32 || result != result)return $sign * Infinity;
|
2290 |
+
return $sign * result;
|
2291 |
+
}
|
2292 |
+
});
|
2293 |
+
|
2294 |
+
/***/ },
|
2295 |
+
/* 112 */
|
2296 |
+
/***/ function(module, exports, __webpack_require__) {
|
2297 |
+
|
2298 |
+
// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
|
2299 |
+
var $export = __webpack_require__(6)
|
2300 |
+
, abs = Math.abs;
|
2301 |
+
|
2302 |
+
$export($export.S, 'Math', {
|
2303 |
+
hypot: function hypot(value1, value2){ // eslint-disable-line no-unused-vars
|
2304 |
+
var sum = 0
|
2305 |
+
, i = 0
|
2306 |
+
, aLen = arguments.length
|
2307 |
+
, larg = 0
|
2308 |
+
, arg, div;
|
2309 |
+
while(i < aLen){
|
2310 |
+
arg = abs(arguments[i++]);
|
2311 |
+
if(larg < arg){
|
2312 |
+
div = larg / arg;
|
2313 |
+
sum = sum * div * div + 1;
|
2314 |
+
larg = arg;
|
2315 |
+
} else if(arg > 0){
|
2316 |
+
div = arg / larg;
|
2317 |
+
sum += div * div;
|
2318 |
+
} else sum += arg;
|
2319 |
+
}
|
2320 |
+
return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
|
2321 |
+
}
|
2322 |
+
});
|
2323 |
+
|
2324 |
+
/***/ },
|
2325 |
+
/* 113 */
|
2326 |
+
/***/ function(module, exports, __webpack_require__) {
|
2327 |
+
|
2328 |
+
// 20.2.2.18 Math.imul(x, y)
|
2329 |
+
var $export = __webpack_require__(6)
|
2330 |
+
, $imul = Math.imul;
|
2331 |
+
|
2332 |
+
// some WebKit versions fails with big numbers, some has wrong arity
|
2333 |
+
$export($export.S + $export.F * __webpack_require__(5)(function(){
|
2334 |
+
return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
|
2335 |
+
}), 'Math', {
|
2336 |
+
imul: function imul(x, y){
|
2337 |
+
var UINT16 = 0xffff
|
2338 |
+
, xn = +x
|
2339 |
+
, yn = +y
|
2340 |
+
, xl = UINT16 & xn
|
2341 |
+
, yl = UINT16 & yn;
|
2342 |
+
return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
|
2343 |
+
}
|
2344 |
+
});
|
2345 |
+
|
2346 |
+
/***/ },
|
2347 |
+
/* 114 */
|
2348 |
+
/***/ function(module, exports, __webpack_require__) {
|
2349 |
+
|
2350 |
+
// 20.2.2.21 Math.log10(x)
|
2351 |
+
var $export = __webpack_require__(6);
|
2352 |
+
|
2353 |
+
$export($export.S, 'Math', {
|
2354 |
+
log10: function log10(x){
|
2355 |
+
return Math.log(x) / Math.LN10;
|
2356 |
+
}
|
2357 |
+
});
|
2358 |
+
|
2359 |
+
/***/ },
|
2360 |
+
/* 115 */
|
2361 |
+
/***/ function(module, exports, __webpack_require__) {
|
2362 |
+
|
2363 |
+
// 20.2.2.20 Math.log1p(x)
|
2364 |
+
var $export = __webpack_require__(6);
|
2365 |
+
|
2366 |
+
$export($export.S, 'Math', {log1p: __webpack_require__(102)});
|
2367 |
+
|
2368 |
+
/***/ },
|
2369 |
+
/* 116 */
|
2370 |
+
/***/ function(module, exports, __webpack_require__) {
|
2371 |
+
|
2372 |
+
// 20.2.2.22 Math.log2(x)
|
2373 |
+
var $export = __webpack_require__(6);
|
2374 |
+
|
2375 |
+
$export($export.S, 'Math', {
|
2376 |
+
log2: function log2(x){
|
2377 |
+
return Math.log(x) / Math.LN2;
|
2378 |
+
}
|
2379 |
+
});
|
2380 |
+
|
2381 |
+
/***/ },
|
2382 |
+
/* 117 */
|
2383 |
+
/***/ function(module, exports, __webpack_require__) {
|
2384 |
+
|
2385 |
+
// 20.2.2.28 Math.sign(x)
|
2386 |
+
var $export = __webpack_require__(6);
|
2387 |
+
|
2388 |
+
$export($export.S, 'Math', {sign: __webpack_require__(106)});
|
2389 |
+
|
2390 |
+
/***/ },
|
2391 |
+
/* 118 */
|
2392 |
+
/***/ function(module, exports, __webpack_require__) {
|
2393 |
+
|
2394 |
+
// 20.2.2.30 Math.sinh(x)
|
2395 |
+
var $export = __webpack_require__(6)
|
2396 |
+
, expm1 = __webpack_require__(110)
|
2397 |
+
, exp = Math.exp;
|
2398 |
+
|
2399 |
+
// V8 near Chromium 38 has a problem with very small numbers
|
2400 |
+
$export($export.S + $export.F * __webpack_require__(5)(function(){
|
2401 |
+
return !Math.sinh(-2e-17) != -2e-17;
|
2402 |
+
}), 'Math', {
|
2403 |
+
sinh: function sinh(x){
|
2404 |
+
return Math.abs(x = +x) < 1
|
2405 |
+
? (expm1(x) - expm1(-x)) / 2
|
2406 |
+
: (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
|
2407 |
+
}
|
2408 |
+
});
|
2409 |
+
|
2410 |
+
/***/ },
|
2411 |
+
/* 119 */
|
2412 |
+
/***/ function(module, exports, __webpack_require__) {
|
2413 |
+
|
2414 |
+
// 20.2.2.33 Math.tanh(x)
|
2415 |
+
var $export = __webpack_require__(6)
|
2416 |
+
, expm1 = __webpack_require__(110)
|
2417 |
+
, exp = Math.exp;
|
2418 |
+
|
2419 |
+
$export($export.S, 'Math', {
|
2420 |
+
tanh: function tanh(x){
|
2421 |
+
var a = expm1(x = +x)
|
2422 |
+
, b = expm1(-x);
|
2423 |
+
return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
|
2424 |
+
}
|
2425 |
+
});
|
2426 |
+
|
2427 |
+
/***/ },
|
2428 |
+
/* 120 */
|
2429 |
+
/***/ function(module, exports, __webpack_require__) {
|
2430 |
+
|
2431 |
+
// 20.2.2.34 Math.trunc(x)
|
2432 |
+
var $export = __webpack_require__(6);
|
2433 |
+
|
2434 |
+
$export($export.S, 'Math', {
|
2435 |
+
trunc: function trunc(it){
|
2436 |
+
return (it > 0 ? Math.floor : Math.ceil)(it);
|
2437 |
+
}
|
2438 |
+
});
|
2439 |
+
|
2440 |
+
/***/ },
|
2441 |
+
/* 121 */
|
2442 |
+
/***/ function(module, exports, __webpack_require__) {
|
2443 |
+
|
2444 |
+
var $export = __webpack_require__(6)
|
2445 |
+
, toIndex = __webpack_require__(37)
|
2446 |
+
, fromCharCode = String.fromCharCode
|
2447 |
+
, $fromCodePoint = String.fromCodePoint;
|
2448 |
+
|
2449 |
+
// length should be 1, old FF problem
|
2450 |
+
$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
|
2451 |
+
// 21.1.2.2 String.fromCodePoint(...codePoints)
|
2452 |
+
fromCodePoint: function fromCodePoint(x){ // eslint-disable-line no-unused-vars
|
2453 |
+
var res = []
|
2454 |
+
, aLen = arguments.length
|
2455 |
+
, i = 0
|
2456 |
+
, code;
|
2457 |
+
while(aLen > i){
|
2458 |
+
code = +arguments[i++];
|
2459 |
+
if(toIndex(code, 0x10ffff) !== code)throw RangeError(code + ' is not a valid code point');
|
2460 |
+
res.push(code < 0x10000
|
2461 |
+
? fromCharCode(code)
|
2462 |
+
: fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
|
2463 |
+
);
|
2464 |
+
} return res.join('');
|
2465 |
+
}
|
2466 |
+
});
|
2467 |
+
|
2468 |
+
/***/ },
|
2469 |
+
/* 122 */
|
2470 |
+
/***/ function(module, exports, __webpack_require__) {
|
2471 |
+
|
2472 |
+
var $export = __webpack_require__(6)
|
2473 |
+
, toIObject = __webpack_require__(30)
|
2474 |
+
, toLength = __webpack_require__(35);
|
2475 |
+
|
2476 |
+
$export($export.S, 'String', {
|
2477 |
+
// 21.1.2.4 String.raw(callSite, ...substitutions)
|
2478 |
+
raw: function raw(callSite){
|
2479 |
+
var tpl = toIObject(callSite.raw)
|
2480 |
+
, len = toLength(tpl.length)
|
2481 |
+
, aLen = arguments.length
|
2482 |
+
, res = []
|
2483 |
+
, i = 0;
|
2484 |
+
while(len > i){
|
2485 |
+
res.push(String(tpl[i++]));
|
2486 |
+
if(i < aLen)res.push(String(arguments[i]));
|
2487 |
+
} return res.join('');
|
2488 |
+
}
|
2489 |
+
});
|
2490 |
+
|
2491 |
+
/***/ },
|
2492 |
+
/* 123 */
|
2493 |
+
/***/ function(module, exports, __webpack_require__) {
|
2494 |
+
|
2495 |
+
'use strict';
|
2496 |
+
// 21.1.3.25 String.prototype.trim()
|
2497 |
+
__webpack_require__(81)('trim', function($trim){
|
2498 |
+
return function trim(){
|
2499 |
+
return $trim(this, 3);
|
2500 |
+
};
|
2501 |
+
});
|
2502 |
+
|
2503 |
+
/***/ },
|
2504 |
+
/* 124 */
|
2505 |
+
/***/ function(module, exports, __webpack_require__) {
|
2506 |
+
|
2507 |
+
'use strict';
|
2508 |
+
var $export = __webpack_require__(6)
|
2509 |
+
, $at = __webpack_require__(125)(false);
|
2510 |
+
$export($export.P, 'String', {
|
2511 |
+
// 21.1.3.3 String.prototype.codePointAt(pos)
|
2512 |
+
codePointAt: function codePointAt(pos){
|
2513 |
+
return $at(this, pos);
|
2514 |
+
}
|
2515 |
+
});
|
2516 |
+
|
2517 |
+
/***/ },
|
2518 |
+
/* 125 */
|
2519 |
+
/***/ function(module, exports, __webpack_require__) {
|
2520 |
+
|
2521 |
+
var toInteger = __webpack_require__(36)
|
2522 |
+
, defined = __webpack_require__(33);
|
2523 |
+
// true -> String#at
|
2524 |
+
// false -> String#codePointAt
|
2525 |
+
module.exports = function(TO_STRING){
|
2526 |
+
return function(that, pos){
|
2527 |
+
var s = String(defined(that))
|
2528 |
+
, i = toInteger(pos)
|
2529 |
+
, l = s.length
|
2530 |
+
, a, b;
|
2531 |
+
if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
|
2532 |
+
a = s.charCodeAt(i);
|
2533 |
+
return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
|
2534 |
+
? TO_STRING ? s.charAt(i) : a
|
2535 |
+
: TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
|
2536 |
+
};
|
2537 |
+
};
|
2538 |
+
|
2539 |
+
/***/ },
|
2540 |
+
/* 126 */
|
2541 |
+
/***/ function(module, exports, __webpack_require__) {
|
2542 |
+
|
2543 |
+
// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
|
2544 |
+
'use strict';
|
2545 |
+
var $export = __webpack_require__(6)
|
2546 |
+
, toLength = __webpack_require__(35)
|
2547 |
+
, context = __webpack_require__(127)
|
2548 |
+
, ENDS_WITH = 'endsWith'
|
2549 |
+
, $endsWith = ''[ENDS_WITH];
|
2550 |
+
|
2551 |
+
$export($export.P + $export.F * __webpack_require__(129)(ENDS_WITH), 'String', {
|
2552 |
+
endsWith: function endsWith(searchString /*, endPosition = @length */){
|
2553 |
+
var that = context(this, searchString, ENDS_WITH)
|
2554 |
+
, endPosition = arguments.length > 1 ? arguments[1] : undefined
|
2555 |
+
, len = toLength(that.length)
|
2556 |
+
, end = endPosition === undefined ? len : Math.min(toLength(endPosition), len)
|
2557 |
+
, search = String(searchString);
|
2558 |
+
return $endsWith
|
2559 |
+
? $endsWith.call(that, search, end)
|
2560 |
+
: that.slice(end - search.length, end) === search;
|
2561 |
+
}
|
2562 |
+
});
|
2563 |
+
|
2564 |
+
/***/ },
|
2565 |
+
/* 127 */
|
2566 |
+
/***/ function(module, exports, __webpack_require__) {
|
2567 |
+
|
2568 |
+
// helper for String#{startsWith, endsWith, includes}
|
2569 |
+
var isRegExp = __webpack_require__(128)
|
2570 |
+
, defined = __webpack_require__(33);
|
2571 |
+
|
2572 |
+
module.exports = function(that, searchString, NAME){
|
2573 |
+
if(isRegExp(searchString))throw TypeError('String#' + NAME + " doesn't accept regex!");
|
2574 |
+
return String(defined(that));
|
2575 |
+
};
|
2576 |
+
|
2577 |
+
/***/ },
|
2578 |
+
/* 128 */
|
2579 |
+
/***/ function(module, exports, __webpack_require__) {
|
2580 |
+
|
2581 |
+
// 7.2.8 IsRegExp(argument)
|
2582 |
+
var isObject = __webpack_require__(11)
|
2583 |
+
, cof = __webpack_require__(32)
|
2584 |
+
, MATCH = __webpack_require__(23)('match');
|
2585 |
+
module.exports = function(it){
|
2586 |
+
var isRegExp;
|
2587 |
+
return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
|
2588 |
+
};
|
2589 |
+
|
2590 |
+
/***/ },
|
2591 |
+
/* 129 */
|
2592 |
+
/***/ function(module, exports, __webpack_require__) {
|
2593 |
+
|
2594 |
+
var MATCH = __webpack_require__(23)('match');
|
2595 |
+
module.exports = function(KEY){
|
2596 |
+
var re = /./;
|
2597 |
+
try {
|
2598 |
+
'/./'[KEY](re);
|
2599 |
+
} catch(e){
|
2600 |
+
try {
|
2601 |
+
re[MATCH] = false;
|
2602 |
+
return !'/./'[KEY](re);
|
2603 |
+
} catch(f){ /* empty */ }
|
2604 |
+
} return true;
|
2605 |
+
};
|
2606 |
+
|
2607 |
+
/***/ },
|
2608 |
+
/* 130 */
|
2609 |
+
/***/ function(module, exports, __webpack_require__) {
|
2610 |
+
|
2611 |
+
// 21.1.3.7 String.prototype.includes(searchString, position = 0)
|
2612 |
+
'use strict';
|
2613 |
+
var $export = __webpack_require__(6)
|
2614 |
+
, context = __webpack_require__(127)
|
2615 |
+
, INCLUDES = 'includes';
|
2616 |
+
|
2617 |
+
$export($export.P + $export.F * __webpack_require__(129)(INCLUDES), 'String', {
|
2618 |
+
includes: function includes(searchString /*, position = 0 */){
|
2619 |
+
return !!~context(this, searchString, INCLUDES)
|
2620 |
+
.indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
|
2621 |
+
}
|
2622 |
+
});
|
2623 |
+
|
2624 |
+
/***/ },
|
2625 |
+
/* 131 */
|
2626 |
+
/***/ function(module, exports, __webpack_require__) {
|
2627 |
+
|
2628 |
+
var $export = __webpack_require__(6);
|
2629 |
+
|
2630 |
+
$export($export.P, 'String', {
|
2631 |
+
// 21.1.3.13 String.prototype.repeat(count)
|
2632 |
+
repeat: __webpack_require__(85)
|
2633 |
+
});
|
2634 |
+
|
2635 |
+
/***/ },
|
2636 |
+
/* 132 */
|
2637 |
+
/***/ function(module, exports, __webpack_require__) {
|
2638 |
+
|
2639 |
+
// 21.1.3.18 String.prototype.startsWith(searchString [, position ])
|
2640 |
+
'use strict';
|
2641 |
+
var $export = __webpack_require__(6)
|
2642 |
+
, toLength = __webpack_require__(35)
|
2643 |
+
, context = __webpack_require__(127)
|
2644 |
+
, STARTS_WITH = 'startsWith'
|
2645 |
+
, $startsWith = ''[STARTS_WITH];
|
2646 |
+
|
2647 |
+
$export($export.P + $export.F * __webpack_require__(129)(STARTS_WITH), 'String', {
|
2648 |
+
startsWith: function startsWith(searchString /*, position = 0 */){
|
2649 |
+
var that = context(this, searchString, STARTS_WITH)
|
2650 |
+
, index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length))
|
2651 |
+
, search = String(searchString);
|
2652 |
+
return $startsWith
|
2653 |
+
? $startsWith.call(that, search, index)
|
2654 |
+
: that.slice(index, index + search.length) === search;
|
2655 |
+
}
|
2656 |
+
});
|
2657 |
+
|
2658 |
+
/***/ },
|
2659 |
+
/* 133 */
|
2660 |
+
/***/ function(module, exports, __webpack_require__) {
|
2661 |
+
|
2662 |
+
'use strict';
|
2663 |
+
var $at = __webpack_require__(125)(true);
|
2664 |
+
|
2665 |
+
// 21.1.3.27 String.prototype[@@iterator]()
|
2666 |
+
__webpack_require__(134)(String, 'String', function(iterated){
|
2667 |
+
this._t = String(iterated); // target
|
2668 |
+
this._i = 0; // next index
|
2669 |
+
// 21.1.5.2.1 %StringIteratorPrototype%.next()
|
2670 |
+
}, function(){
|
2671 |
+
var O = this._t
|
2672 |
+
, index = this._i
|
2673 |
+
, point;
|
2674 |
+
if(index >= O.length)return {value: undefined, done: true};
|
2675 |
+
point = $at(O, index);
|
2676 |
+
this._i += point.length;
|
2677 |
+
return {value: point, done: false};
|
2678 |
+
});
|
2679 |
+
|
2680 |
+
/***/ },
|
2681 |
+
/* 134 */
|
2682 |
+
/***/ function(module, exports, __webpack_require__) {
|
2683 |
+
|
2684 |
+
'use strict';
|
2685 |
+
var LIBRARY = __webpack_require__(26)
|
2686 |
+
, $export = __webpack_require__(6)
|
2687 |
+
, redefine = __webpack_require__(16)
|
2688 |
+
, hide = __webpack_require__(8)
|
2689 |
+
, has = __webpack_require__(3)
|
2690 |
+
, Iterators = __webpack_require__(135)
|
2691 |
+
, $iterCreate = __webpack_require__(136)
|
2692 |
+
, setToStringTag = __webpack_require__(22)
|
2693 |
+
, getPrototypeOf = __webpack_require__(57)
|
2694 |
+
, ITERATOR = __webpack_require__(23)('iterator')
|
2695 |
+
, BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
|
2696 |
+
, FF_ITERATOR = '@@iterator'
|
2697 |
+
, KEYS = 'keys'
|
2698 |
+
, VALUES = 'values';
|
2699 |
+
|
2700 |
+
var returnThis = function(){ return this; };
|
2701 |
+
|
2702 |
+
module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){
|
2703 |
+
$iterCreate(Constructor, NAME, next);
|
2704 |
+
var getMethod = function(kind){
|
2705 |
+
if(!BUGGY && kind in proto)return proto[kind];
|
2706 |
+
switch(kind){
|
2707 |
+
case KEYS: return function keys(){ return new Constructor(this, kind); };
|
2708 |
+
case VALUES: return function values(){ return new Constructor(this, kind); };
|
2709 |
+
} return function entries(){ return new Constructor(this, kind); };
|
2710 |
+
};
|
2711 |
+
var TAG = NAME + ' Iterator'
|
2712 |
+
, DEF_VALUES = DEFAULT == VALUES
|
2713 |
+
, VALUES_BUG = false
|
2714 |
+
, proto = Base.prototype
|
2715 |
+
, $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
|
2716 |
+
, $default = $native || getMethod(DEFAULT)
|
2717 |
+
, $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined
|
2718 |
+
, $anyNative = NAME == 'Array' ? proto.entries || $native : $native
|
2719 |
+
, methods, key, IteratorPrototype;
|
2720 |
+
// Fix native
|
2721 |
+
if($anyNative){
|
2722 |
+
IteratorPrototype = getPrototypeOf($anyNative.call(new Base));
|
2723 |
+
if(IteratorPrototype !== Object.prototype){
|
2724 |
+
// Set @@toStringTag to native iterators
|
2725 |
+
setToStringTag(IteratorPrototype, TAG, true);
|
2726 |
+
// fix for some old engines
|
2727 |
+
if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);
|
2728 |
+
}
|
2729 |
+
}
|
2730 |
+
// fix Array#{values, @@iterator}.name in V8 / FF
|
2731 |
+
if(DEF_VALUES && $native && $native.name !== VALUES){
|
2732 |
+
VALUES_BUG = true;
|
2733 |
+
$default = function values(){ return $native.call(this); };
|
2734 |
+
}
|
2735 |
+
// Define iterator
|
2736 |
+
if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
|
2737 |
+
hide(proto, ITERATOR, $default);
|
2738 |
+
}
|
2739 |
+
// Plug for library
|
2740 |
+
Iterators[NAME] = $default;
|
2741 |
+
Iterators[TAG] = returnThis;
|
2742 |
+
if(DEFAULT){
|
2743 |
+
methods = {
|
2744 |
+
values: DEF_VALUES ? $default : getMethod(VALUES),
|
2745 |
+
keys: IS_SET ? $default : getMethod(KEYS),
|
2746 |
+
entries: $entries
|
2747 |
+
};
|
2748 |
+
if(FORCED)for(key in methods){
|
2749 |
+
if(!(key in proto))redefine(proto, key, methods[key]);
|
2750 |
+
} else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
|
2751 |
+
}
|
2752 |
+
return methods;
|
2753 |
+
};
|
2754 |
+
|
2755 |
+
/***/ },
|
2756 |
+
/* 135 */
|
2757 |
+
/***/ function(module, exports) {
|
2758 |
+
|
2759 |
+
module.exports = {};
|
2760 |
+
|
2761 |
+
/***/ },
|
2762 |
+
/* 136 */
|
2763 |
+
/***/ function(module, exports, __webpack_require__) {
|
2764 |
+
|
2765 |
+
'use strict';
|
2766 |
+
var create = __webpack_require__(44)
|
2767 |
+
, descriptor = __webpack_require__(15)
|
2768 |
+
, setToStringTag = __webpack_require__(22)
|
2769 |
+
, IteratorPrototype = {};
|
2770 |
+
|
2771 |
+
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
|
2772 |
+
__webpack_require__(8)(IteratorPrototype, __webpack_require__(23)('iterator'), function(){ return this; });
|
2773 |
+
|
2774 |
+
module.exports = function(Constructor, NAME, next){
|
2775 |
+
Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});
|
2776 |
+
setToStringTag(Constructor, NAME + ' Iterator');
|
2777 |
+
};
|
2778 |
+
|
2779 |
+
/***/ },
|
2780 |
+
/* 137 */
|
2781 |
+
/***/ function(module, exports, __webpack_require__) {
|
2782 |
+
|
2783 |
+
'use strict';
|
2784 |
+
// B.2.3.2 String.prototype.anchor(name)
|
2785 |
+
__webpack_require__(138)('anchor', function(createHTML){
|
2786 |
+
return function anchor(name){
|
2787 |
+
return createHTML(this, 'a', 'name', name);
|
2788 |
+
}
|
2789 |
+
});
|
2790 |
+
|
2791 |
+
/***/ },
|
2792 |
+
/* 138 */
|
2793 |
+
/***/ function(module, exports, __webpack_require__) {
|
2794 |
+
|
2795 |
+
var $export = __webpack_require__(6)
|
2796 |
+
, fails = __webpack_require__(5)
|
2797 |
+
, defined = __webpack_require__(33)
|
2798 |
+
, quot = /"/g;
|
2799 |
+
// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
|
2800 |
+
var createHTML = function(string, tag, attribute, value) {
|
2801 |
+
var S = String(defined(string))
|
2802 |
+
, p1 = '<' + tag;
|
2803 |
+
if(attribute !== '')p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"';
|
2804 |
+
return p1 + '>' + S + '</' + tag + '>';
|
2805 |
+
};
|
2806 |
+
module.exports = function(NAME, exec){
|
2807 |
+
var O = {};
|
2808 |
+
O[NAME] = exec(createHTML);
|
2809 |
+
$export($export.P + $export.F * fails(function(){
|
2810 |
+
var test = ''[NAME]('"');
|
2811 |
+
return test !== test.toLowerCase() || test.split('"').length > 3;
|
2812 |
+
}), 'String', O);
|
2813 |
+
};
|
2814 |
+
|
2815 |
+
/***/ },
|
2816 |
+
/* 139 */
|
2817 |
+
/***/ function(module, exports, __webpack_require__) {
|
2818 |
+
|
2819 |
+
'use strict';
|
2820 |
+
// B.2.3.3 String.prototype.big()
|
2821 |
+
__webpack_require__(138)('big', function(createHTML){
|
2822 |
+
return function big(){
|
2823 |
+
return createHTML(this, 'big', '', '');
|
2824 |
+
}
|
2825 |
+
});
|
2826 |
+
|
2827 |
+
/***/ },
|
2828 |
+
/* 140 */
|
2829 |
+
/***/ function(module, exports, __webpack_require__) {
|
2830 |
+
|
2831 |
+
'use strict';
|
2832 |
+
// B.2.3.4 String.prototype.blink()
|
2833 |
+
__webpack_require__(138)('blink', function(createHTML){
|
2834 |
+
return function blink(){
|
2835 |
+
return createHTML(this, 'blink', '', '');
|
2836 |
+
}
|
2837 |
+
});
|
2838 |
+
|
2839 |
+
/***/ },
|
2840 |
+
/* 141 */
|
2841 |
+
/***/ function(module, exports, __webpack_require__) {
|
2842 |
+
|
2843 |
+
'use strict';
|
2844 |
+
// B.2.3.5 String.prototype.bold()
|
2845 |
+
__webpack_require__(138)('bold', function(createHTML){
|
2846 |
+
return function bold(){
|
2847 |
+
return createHTML(this, 'b', '', '');
|
2848 |
+
}
|
2849 |
+
});
|
2850 |
+
|
2851 |
+
/***/ },
|
2852 |
+
/* 142 */
|
2853 |
+
/***/ function(module, exports, __webpack_require__) {
|
2854 |
+
|
2855 |
+
'use strict';
|
2856 |
+
// B.2.3.6 String.prototype.fixed()
|
2857 |
+
__webpack_require__(138)('fixed', function(createHTML){
|
2858 |
+
return function fixed(){
|
2859 |
+
return createHTML(this, 'tt', '', '');
|
2860 |
+
}
|
2861 |
+
});
|
2862 |
+
|
2863 |
+
/***/ },
|
2864 |
+
/* 143 */
|
2865 |
+
/***/ function(module, exports, __webpack_require__) {
|
2866 |
+
|
2867 |
+
'use strict';
|
2868 |
+
// B.2.3.7 String.prototype.fontcolor(color)
|
2869 |
+
__webpack_require__(138)('fontcolor', function(createHTML){
|
2870 |
+
return function fontcolor(color){
|
2871 |
+
return createHTML(this, 'font', 'color', color);
|
2872 |
+
}
|
2873 |
+
});
|
2874 |
+
|
2875 |
+
/***/ },
|
2876 |
+
/* 144 */
|
2877 |
+
/***/ function(module, exports, __webpack_require__) {
|
2878 |
+
|
2879 |
+
'use strict';
|
2880 |
+
// B.2.3.8 String.prototype.fontsize(size)
|
2881 |
+
__webpack_require__(138)('fontsize', function(createHTML){
|
2882 |
+
return function fontsize(size){
|
2883 |
+
return createHTML(this, 'font', 'size', size);
|
2884 |
+
}
|
2885 |
+
});
|
2886 |
+
|
2887 |
+
/***/ },
|
2888 |
+
/* 145 */
|
2889 |
+
/***/ function(module, exports, __webpack_require__) {
|
2890 |
+
|
2891 |
+
'use strict';
|
2892 |
+
// B.2.3.9 String.prototype.italics()
|
2893 |
+
__webpack_require__(138)('italics', function(createHTML){
|
2894 |
+
return function italics(){
|
2895 |
+
return createHTML(this, 'i', '', '');
|
2896 |
+
}
|
2897 |
+
});
|
2898 |
+
|
2899 |
+
/***/ },
|
2900 |
+
/* 146 */
|
2901 |
+
/***/ function(module, exports, __webpack_require__) {
|
2902 |
+
|
2903 |
+
'use strict';
|
2904 |
+
// B.2.3.10 String.prototype.link(url)
|
2905 |
+
__webpack_require__(138)('link', function(createHTML){
|
2906 |
+
return function link(url){
|
2907 |
+
return createHTML(this, 'a', 'href', url);
|
2908 |
+
}
|
2909 |
+
});
|
2910 |
+
|
2911 |
+
/***/ },
|
2912 |
+
/* 147 */
|
2913 |
+
/***/ function(module, exports, __webpack_require__) {
|
2914 |
+
|
2915 |
+
'use strict';
|
2916 |
+
// B.2.3.11 String.prototype.small()
|
2917 |
+
__webpack_require__(138)('small', function(createHTML){
|
2918 |
+
return function small(){
|
2919 |
+
return createHTML(this, 'small', '', '');
|
2920 |
+
}
|
2921 |
+
});
|
2922 |
+
|
2923 |
+
/***/ },
|
2924 |
+
/* 148 */
|
2925 |
+
/***/ function(module, exports, __webpack_require__) {
|
2926 |
+
|
2927 |
+
'use strict';
|
2928 |
+
// B.2.3.12 String.prototype.strike()
|
2929 |
+
__webpack_require__(138)('strike', function(createHTML){
|
2930 |
+
return function strike(){
|
2931 |
+
return createHTML(this, 'strike', '', '');
|
2932 |
+
}
|
2933 |
+
});
|
2934 |
+
|
2935 |
+
/***/ },
|
2936 |
+
/* 149 */
|
2937 |
+
/***/ function(module, exports, __webpack_require__) {
|
2938 |
+
|
2939 |
+
'use strict';
|
2940 |
+
// B.2.3.13 String.prototype.sub()
|
2941 |
+
__webpack_require__(138)('sub', function(createHTML){
|
2942 |
+
return function sub(){
|
2943 |
+
return createHTML(this, 'sub', '', '');
|
2944 |
+
}
|
2945 |
+
});
|
2946 |
+
|
2947 |
+
/***/ },
|
2948 |
+
/* 150 */
|
2949 |
+
/***/ function(module, exports, __webpack_require__) {
|
2950 |
+
|
2951 |
+
'use strict';
|
2952 |
+
// B.2.3.14 String.prototype.sup()
|
2953 |
+
__webpack_require__(138)('sup', function(createHTML){
|
2954 |
+
return function sup(){
|
2955 |
+
return createHTML(this, 'sup', '', '');
|
2956 |
+
}
|
2957 |
+
});
|
2958 |
+
|
2959 |
+
/***/ },
|
2960 |
+
/* 151 */
|
2961 |
+
/***/ function(module, exports, __webpack_require__) {
|
2962 |
+
|
2963 |
+
// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
|
2964 |
+
var $export = __webpack_require__(6);
|
2965 |
+
|
2966 |
+
$export($export.S, 'Array', {isArray: __webpack_require__(43)});
|
2967 |
+
|
2968 |
+
/***/ },
|
2969 |
+
/* 152 */
|
2970 |
+
/***/ function(module, exports, __webpack_require__) {
|
2971 |
+
|
2972 |
+
'use strict';
|
2973 |
+
var ctx = __webpack_require__(18)
|
2974 |
+
, $export = __webpack_require__(6)
|
2975 |
+
, toObject = __webpack_require__(56)
|
2976 |
+
, call = __webpack_require__(153)
|
2977 |
+
, isArrayIter = __webpack_require__(154)
|
2978 |
+
, toLength = __webpack_require__(35)
|
2979 |
+
, createProperty = __webpack_require__(155)
|
2980 |
+
, getIterFn = __webpack_require__(156);
|
2981 |
+
|
2982 |
+
$export($export.S + $export.F * !__webpack_require__(157)(function(iter){ Array.from(iter); }), 'Array', {
|
2983 |
+
// 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
|
2984 |
+
from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
|
2985 |
+
var O = toObject(arrayLike)
|
2986 |
+
, C = typeof this == 'function' ? this : Array
|
2987 |
+
, aLen = arguments.length
|
2988 |
+
, mapfn = aLen > 1 ? arguments[1] : undefined
|
2989 |
+
, mapping = mapfn !== undefined
|
2990 |
+
, index = 0
|
2991 |
+
, iterFn = getIterFn(O)
|
2992 |
+
, length, result, step, iterator;
|
2993 |
+
if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
|
2994 |
+
// if object isn't iterable or it's array with default iterator - use simple case
|
2995 |
+
if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){
|
2996 |
+
for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){
|
2997 |
+
createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
|
2998 |
+
}
|
2999 |
+
} else {
|
3000 |
+
length = toLength(O.length);
|
3001 |
+
for(result = new C(length); length > index; index++){
|
3002 |
+
createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
|
3003 |
+
}
|
3004 |
+
}
|
3005 |
+
result.length = index;
|
3006 |
+
return result;
|
3007 |
+
}
|
3008 |
+
});
|
3009 |
+
|
3010 |
+
|
3011 |
+
/***/ },
|
3012 |
+
/* 153 */
|
3013 |
+
/***/ function(module, exports, __webpack_require__) {
|
3014 |
+
|
3015 |
+
// call something on iterator step with safe closing on error
|
3016 |
+
var anObject = __webpack_require__(10);
|
3017 |
+
module.exports = function(iterator, fn, value, entries){
|
3018 |
+
try {
|
3019 |
+
return entries ? fn(anObject(value)[0], value[1]) : fn(value);
|
3020 |
+
// 7.4.6 IteratorClose(iterator, completion)
|
3021 |
+
} catch(e){
|
3022 |
+
var ret = iterator['return'];
|
3023 |
+
if(ret !== undefined)anObject(ret.call(iterator));
|
3024 |
+
throw e;
|
3025 |
+
}
|
3026 |
+
};
|
3027 |
+
|
3028 |
+
/***/ },
|
3029 |
+
/* 154 */
|
3030 |
+
/***/ function(module, exports, __webpack_require__) {
|
3031 |
+
|
3032 |
+
// check on default Array iterator
|
3033 |
+
var Iterators = __webpack_require__(135)
|
3034 |
+
, ITERATOR = __webpack_require__(23)('iterator')
|
3035 |
+
, ArrayProto = Array.prototype;
|
3036 |
+
|
3037 |
+
module.exports = function(it){
|
3038 |
+
return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
|
3039 |
+
};
|
3040 |
+
|
3041 |
+
/***/ },
|
3042 |
+
/* 155 */
|
3043 |
+
/***/ function(module, exports, __webpack_require__) {
|
3044 |
+
|
3045 |
+
'use strict';
|
3046 |
+
var $defineProperty = __webpack_require__(9)
|
3047 |
+
, createDesc = __webpack_require__(15);
|
3048 |
+
|
3049 |
+
module.exports = function(object, index, value){
|
3050 |
+
if(index in object)$defineProperty.f(object, index, createDesc(0, value));
|
3051 |
+
else object[index] = value;
|
3052 |
+
};
|
3053 |
+
|
3054 |
+
/***/ },
|
3055 |
+
/* 156 */
|
3056 |
+
/***/ function(module, exports, __webpack_require__) {
|
3057 |
+
|
3058 |
+
var classof = __webpack_require__(73)
|
3059 |
+
, ITERATOR = __webpack_require__(23)('iterator')
|
3060 |
+
, Iterators = __webpack_require__(135);
|
3061 |
+
module.exports = __webpack_require__(7).getIteratorMethod = function(it){
|
3062 |
+
if(it != undefined)return it[ITERATOR]
|
3063 |
+
|| it['@@iterator']
|
3064 |
+
|| Iterators[classof(it)];
|
3065 |
+
};
|
3066 |
+
|
3067 |
+
/***/ },
|
3068 |
+
/* 157 */
|
3069 |
+
/***/ function(module, exports, __webpack_require__) {
|
3070 |
+
|
3071 |
+
var ITERATOR = __webpack_require__(23)('iterator')
|
3072 |
+
, SAFE_CLOSING = false;
|
3073 |
+
|
3074 |
+
try {
|
3075 |
+
var riter = [7][ITERATOR]();
|
3076 |
+
riter['return'] = function(){ SAFE_CLOSING = true; };
|
3077 |
+
Array.from(riter, function(){ throw 2; });
|
3078 |
+
} catch(e){ /* empty */ }
|
3079 |
+
|
3080 |
+
module.exports = function(exec, skipClosing){
|
3081 |
+
if(!skipClosing && !SAFE_CLOSING)return false;
|
3082 |
+
var safe = false;
|
3083 |
+
try {
|
3084 |
+
var arr = [7]
|
3085 |
+
, iter = arr[ITERATOR]();
|
3086 |
+
iter.next = function(){ return {done: safe = true}; };
|
3087 |
+
arr[ITERATOR] = function(){ return iter; };
|
3088 |
+
exec(arr);
|
3089 |
+
} catch(e){ /* empty */ }
|
3090 |
+
return safe;
|
3091 |
+
};
|
3092 |
+
|
3093 |
+
/***/ },
|
3094 |
+
/* 158 */
|
3095 |
+
/***/ function(module, exports, __webpack_require__) {
|
3096 |
+
|
3097 |
+
'use strict';
|
3098 |
+
var $export = __webpack_require__(6)
|
3099 |
+
, createProperty = __webpack_require__(155);
|
3100 |
+
|
3101 |
+
// WebKit Array.of isn't generic
|
3102 |
+
$export($export.S + $export.F * __webpack_require__(5)(function(){
|
3103 |
+
function F(){}
|
3104 |
+
return !(Array.of.call(F) instanceof F);
|
3105 |
+
}), 'Array', {
|
3106 |
+
// 22.1.2.3 Array.of( ...items)
|
3107 |
+
of: function of(/* ...args */){
|
3108 |
+
var index = 0
|
3109 |
+
, aLen = arguments.length
|
3110 |
+
, result = new (typeof this == 'function' ? this : Array)(aLen);
|
3111 |
+
while(aLen > index)createProperty(result, index, arguments[index++]);
|
3112 |
+
result.length = aLen;
|
3113 |
+
return result;
|
3114 |
+
}
|
3115 |
+
});
|
3116 |
+
|
3117 |
+
/***/ },
|
3118 |
+
/* 159 */
|
3119 |
+
/***/ function(module, exports, __webpack_require__) {
|
3120 |
+
|
3121 |
+
'use strict';
|
3122 |
+
// 22.1.3.13 Array.prototype.join(separator)
|
3123 |
+
var $export = __webpack_require__(6)
|
3124 |
+
, toIObject = __webpack_require__(30)
|
3125 |
+
, arrayJoin = [].join;
|
3126 |
+
|
3127 |
+
// fallback for not array-like strings
|
3128 |
+
$export($export.P + $export.F * (__webpack_require__(31) != Object || !__webpack_require__(160)(arrayJoin)), 'Array', {
|
3129 |
+
join: function join(separator){
|
3130 |
+
return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);
|
3131 |
+
}
|
3132 |
+
});
|
3133 |
+
|
3134 |
+
/***/ },
|
3135 |
+
/* 160 */
|
3136 |
+
/***/ function(module, exports, __webpack_require__) {
|
3137 |
+
|
3138 |
+
var fails = __webpack_require__(5);
|
3139 |
+
|
3140 |
+
module.exports = function(method, arg){
|
3141 |
+
return !!method && fails(function(){
|
3142 |
+
arg ? method.call(null, function(){}, 1) : method.call(null);
|
3143 |
+
});
|
3144 |
+
};
|
3145 |
+
|
3146 |
+
/***/ },
|
3147 |
+
/* 161 */
|
3148 |
+
/***/ function(module, exports, __webpack_require__) {
|
3149 |
+
|
3150 |
+
'use strict';
|
3151 |
+
var $export = __webpack_require__(6)
|
3152 |
+
, html = __webpack_require__(46)
|
3153 |
+
, cof = __webpack_require__(32)
|
3154 |
+
, toIndex = __webpack_require__(37)
|
3155 |
+
, toLength = __webpack_require__(35)
|
3156 |
+
, arraySlice = [].slice;
|
3157 |
+
|
3158 |
+
// fallback for not array-like ES3 strings and DOM objects
|
3159 |
+
$export($export.P + $export.F * __webpack_require__(5)(function(){
|
3160 |
+
if(html)arraySlice.call(html);
|
3161 |
+
}), 'Array', {
|
3162 |
+
slice: function slice(begin, end){
|
3163 |
+
var len = toLength(this.length)
|
3164 |
+
, klass = cof(this);
|
3165 |
+
end = end === undefined ? len : end;
|
3166 |
+
if(klass == 'Array')return arraySlice.call(this, begin, end);
|
3167 |
+
var start = toIndex(begin, len)
|
3168 |
+
, upTo = toIndex(end, len)
|
3169 |
+
, size = toLength(upTo - start)
|
3170 |
+
, cloned = Array(size)
|
3171 |
+
, i = 0;
|
3172 |
+
for(; i < size; i++)cloned[i] = klass == 'String'
|
3173 |
+
? this.charAt(start + i)
|
3174 |
+
: this[start + i];
|
3175 |
+
return cloned;
|
3176 |
+
}
|
3177 |
+
});
|
3178 |
+
|
3179 |
+
/***/ },
|
3180 |
+
/* 162 */
|
3181 |
+
/***/ function(module, exports, __webpack_require__) {
|
3182 |
+
|
3183 |
+
'use strict';
|
3184 |
+
var $export = __webpack_require__(6)
|
3185 |
+
, aFunction = __webpack_require__(19)
|
3186 |
+
, toObject = __webpack_require__(56)
|
3187 |
+
, fails = __webpack_require__(5)
|
3188 |
+
, $sort = [].sort
|
3189 |
+
, test = [1, 2, 3];
|
3190 |
+
|
3191 |
+
$export($export.P + $export.F * (fails(function(){
|
3192 |
+
// IE8-
|
3193 |
+
test.sort(undefined);
|
3194 |
+
}) || !fails(function(){
|
3195 |
+
// V8 bug
|
3196 |
+
test.sort(null);
|
3197 |
+
// Old WebKit
|
3198 |
+
}) || !__webpack_require__(160)($sort)), 'Array', {
|
3199 |
+
// 22.1.3.25 Array.prototype.sort(comparefn)
|
3200 |
+
sort: function sort(comparefn){
|
3201 |
+
return comparefn === undefined
|
3202 |
+
? $sort.call(toObject(this))
|
3203 |
+
: $sort.call(toObject(this), aFunction(comparefn));
|
3204 |
+
}
|
3205 |
+
});
|
3206 |
+
|
3207 |
+
/***/ },
|
3208 |
+
/* 163 */
|
3209 |
+
/***/ function(module, exports, __webpack_require__) {
|
3210 |
+
|
3211 |
+
'use strict';
|
3212 |
+
var $export = __webpack_require__(6)
|
3213 |
+
, $forEach = __webpack_require__(164)(0)
|
3214 |
+
, STRICT = __webpack_require__(160)([].forEach, true);
|
3215 |
+
|
3216 |
+
$export($export.P + $export.F * !STRICT, 'Array', {
|
3217 |
+
// 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
|
3218 |
+
forEach: function forEach(callbackfn /* , thisArg */){
|
3219 |
+
return $forEach(this, callbackfn, arguments[1]);
|
3220 |
+
}
|
3221 |
+
});
|
3222 |
+
|
3223 |
+
/***/ },
|
3224 |
+
/* 164 */
|
3225 |
+
/***/ function(module, exports, __webpack_require__) {
|
3226 |
+
|
3227 |
+
// 0 -> Array#forEach
|
3228 |
+
// 1 -> Array#map
|
3229 |
+
// 2 -> Array#filter
|
3230 |
+
// 3 -> Array#some
|
3231 |
+
// 4 -> Array#every
|
3232 |
+
// 5 -> Array#find
|
3233 |
+
// 6 -> Array#findIndex
|
3234 |
+
var ctx = __webpack_require__(18)
|
3235 |
+
, IObject = __webpack_require__(31)
|
3236 |
+
, toObject = __webpack_require__(56)
|
3237 |
+
, toLength = __webpack_require__(35)
|
3238 |
+
, asc = __webpack_require__(165);
|
3239 |
+
module.exports = function(TYPE, $create){
|
3240 |
+
var IS_MAP = TYPE == 1
|
3241 |
+
, IS_FILTER = TYPE == 2
|
3242 |
+
, IS_SOME = TYPE == 3
|
3243 |
+
, IS_EVERY = TYPE == 4
|
3244 |
+
, IS_FIND_INDEX = TYPE == 6
|
3245 |
+
, NO_HOLES = TYPE == 5 || IS_FIND_INDEX
|
3246 |
+
, create = $create || asc;
|
3247 |
+
return function($this, callbackfn, that){
|
3248 |
+
var O = toObject($this)
|
3249 |
+
, self = IObject(O)
|
3250 |
+
, f = ctx(callbackfn, that, 3)
|
3251 |
+
, length = toLength(self.length)
|
3252 |
+
, index = 0
|
3253 |
+
, result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined
|
3254 |
+
, val, res;
|
3255 |
+
for(;length > index; index++)if(NO_HOLES || index in self){
|
3256 |
+
val = self[index];
|
3257 |
+
res = f(val, index, O);
|
3258 |
+
if(TYPE){
|
3259 |
+
if(IS_MAP)result[index] = res; // map
|
3260 |
+
else if(res)switch(TYPE){
|
3261 |
+
case 3: return true; // some
|
3262 |
+
case 5: return val; // find
|
3263 |
+
case 6: return index; // findIndex
|
3264 |
+
case 2: result.push(val); // filter
|
3265 |
+
} else if(IS_EVERY)return false; // every
|
3266 |
+
}
|
3267 |
+
}
|
3268 |
+
return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
|
3269 |
+
};
|
3270 |
+
};
|
3271 |
+
|
3272 |
+
/***/ },
|
3273 |
+
/* 165 */
|
3274 |
+
/***/ function(module, exports, __webpack_require__) {
|
3275 |
+
|
3276 |
+
// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
|
3277 |
+
var speciesConstructor = __webpack_require__(166);
|
3278 |
+
|
3279 |
+
module.exports = function(original, length){
|
3280 |
+
return new (speciesConstructor(original))(length);
|
3281 |
+
};
|
3282 |
+
|
3283 |
+
/***/ },
|
3284 |
+
/* 166 */
|
3285 |
+
/***/ function(module, exports, __webpack_require__) {
|
3286 |
+
|
3287 |
+
var isObject = __webpack_require__(11)
|
3288 |
+
, isArray = __webpack_require__(43)
|
3289 |
+
, SPECIES = __webpack_require__(23)('species');
|
3290 |
+
|
3291 |
+
module.exports = function(original){
|
3292 |
+
var C;
|
3293 |
+
if(isArray(original)){
|
3294 |
+
C = original.constructor;
|
3295 |
+
// cross-realm fallback
|
3296 |
+
if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;
|
3297 |
+
if(isObject(C)){
|
3298 |
+
C = C[SPECIES];
|
3299 |
+
if(C === null)C = undefined;
|
3300 |
+
}
|
3301 |
+
} return C === undefined ? Array : C;
|
3302 |
+
};
|
3303 |
+
|
3304 |
+
/***/ },
|
3305 |
+
/* 167 */
|
3306 |
+
/***/ function(module, exports, __webpack_require__) {
|
3307 |
+
|
3308 |
+
'use strict';
|
3309 |
+
var $export = __webpack_require__(6)
|
3310 |
+
, $map = __webpack_require__(164)(1);
|
3311 |
+
|
3312 |
+
$export($export.P + $export.F * !__webpack_require__(160)([].map, true), 'Array', {
|
3313 |
+
// 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
|
3314 |
+
map: function map(callbackfn /* , thisArg */){
|
3315 |
+
return $map(this, callbackfn, arguments[1]);
|
3316 |
+
}
|
3317 |
+
});
|
3318 |
+
|
3319 |
+
/***/ },
|
3320 |
+
/* 168 */
|
3321 |
+
/***/ function(module, exports, __webpack_require__) {
|
3322 |
+
|
3323 |
+
'use strict';
|
3324 |
+
var $export = __webpack_require__(6)
|
3325 |
+
, $filter = __webpack_require__(164)(2);
|
3326 |
+
|
3327 |
+
$export($export.P + $export.F * !__webpack_require__(160)([].filter, true), 'Array', {
|
3328 |
+
// 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
|
3329 |
+
filter: function filter(callbackfn /* , thisArg */){
|
3330 |
+
return $filter(this, callbackfn, arguments[1]);
|
3331 |
+
}
|
3332 |
+
});
|
3333 |
+
|
3334 |
+
/***/ },
|
3335 |
+
/* 169 */
|
3336 |
+
/***/ function(module, exports, __webpack_require__) {
|
3337 |
+
|
3338 |
+
'use strict';
|
3339 |
+
var $export = __webpack_require__(6)
|
3340 |
+
, $some = __webpack_require__(164)(3);
|
3341 |
+
|
3342 |
+
$export($export.P + $export.F * !__webpack_require__(160)([].some, true), 'Array', {
|
3343 |
+
// 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
|
3344 |
+
some: function some(callbackfn /* , thisArg */){
|
3345 |
+
return $some(this, callbackfn, arguments[1]);
|
3346 |
+
}
|
3347 |
+
});
|
3348 |
+
|
3349 |
+
/***/ },
|
3350 |
+
/* 170 */
|
3351 |
+
/***/ function(module, exports, __webpack_require__) {
|
3352 |
+
|
3353 |
+
'use strict';
|
3354 |
+
var $export = __webpack_require__(6)
|
3355 |
+
, $every = __webpack_require__(164)(4);
|
3356 |
+
|
3357 |
+
$export($export.P + $export.F * !__webpack_require__(160)([].every, true), 'Array', {
|
3358 |
+
// 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
|
3359 |
+
every: function every(callbackfn /* , thisArg */){
|
3360 |
+
return $every(this, callbackfn, arguments[1]);
|
3361 |
+
}
|
3362 |
+
});
|
3363 |
+
|
3364 |
+
/***/ },
|
3365 |
+
/* 171 */
|
3366 |
+
/***/ function(module, exports, __webpack_require__) {
|
3367 |
+
|
3368 |
+
'use strict';
|
3369 |
+
var $export = __webpack_require__(6)
|
3370 |
+
, $reduce = __webpack_require__(172);
|
3371 |
+
|
3372 |
+
$export($export.P + $export.F * !__webpack_require__(160)([].reduce, true), 'Array', {
|
3373 |
+
// 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
|
3374 |
+
reduce: function reduce(callbackfn /* , initialValue */){
|
3375 |
+
return $reduce(this, callbackfn, arguments.length, arguments[1], false);
|
3376 |
+
}
|
3377 |
+
});
|
3378 |
+
|
3379 |
+
/***/ },
|
3380 |
+
/* 172 */
|
3381 |
+
/***/ function(module, exports, __webpack_require__) {
|
3382 |
+
|
3383 |
+
var aFunction = __webpack_require__(19)
|
3384 |
+
, toObject = __webpack_require__(56)
|
3385 |
+
, IObject = __webpack_require__(31)
|
3386 |
+
, toLength = __webpack_require__(35);
|
3387 |
+
|
3388 |
+
module.exports = function(that, callbackfn, aLen, memo, isRight){
|
3389 |
+
aFunction(callbackfn);
|
3390 |
+
var O = toObject(that)
|
3391 |
+
, self = IObject(O)
|
3392 |
+
, length = toLength(O.length)
|
3393 |
+
, index = isRight ? length - 1 : 0
|
3394 |
+
, i = isRight ? -1 : 1;
|
3395 |
+
if(aLen < 2)for(;;){
|
3396 |
+
if(index in self){
|
3397 |
+
memo = self[index];
|
3398 |
+
index += i;
|
3399 |
+
break;
|
3400 |
+
}
|
3401 |
+
index += i;
|
3402 |
+
if(isRight ? index < 0 : length <= index){
|
3403 |
+
throw TypeError('Reduce of empty array with no initial value');
|
3404 |
+
}
|
3405 |
+
}
|
3406 |
+
for(;isRight ? index >= 0 : length > index; index += i)if(index in self){
|
3407 |
+
memo = callbackfn(memo, self[index], index, O);
|
3408 |
+
}
|
3409 |
+
return memo;
|
3410 |
+
};
|
3411 |
+
|
3412 |
+
/***/ },
|
3413 |
+
/* 173 */
|
3414 |
+
/***/ function(module, exports, __webpack_require__) {
|
3415 |
+
|
3416 |
+
'use strict';
|
3417 |
+
var $export = __webpack_require__(6)
|
3418 |
+
, $reduce = __webpack_require__(172);
|
3419 |
+
|
3420 |
+
$export($export.P + $export.F * !__webpack_require__(160)([].reduceRight, true), 'Array', {
|
3421 |
+
// 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
|
3422 |
+
reduceRight: function reduceRight(callbackfn /* , initialValue */){
|
3423 |
+
return $reduce(this, callbackfn, arguments.length, arguments[1], true);
|
3424 |
+
}
|
3425 |
+
});
|
3426 |
+
|
3427 |
+
/***/ },
|
3428 |
+
/* 174 */
|
3429 |
+
/***/ function(module, exports, __webpack_require__) {
|
3430 |
+
|
3431 |
+
'use strict';
|
3432 |
+
var $export = __webpack_require__(6)
|
3433 |
+
, $indexOf = __webpack_require__(34)(false)
|
3434 |
+
, $native = [].indexOf
|
3435 |
+
, NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;
|
3436 |
+
|
3437 |
+
$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(160)($native)), 'Array', {
|
3438 |
+
// 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
|
3439 |
+
indexOf: function indexOf(searchElement /*, fromIndex = 0 */){
|
3440 |
+
return NEGATIVE_ZERO
|
3441 |
+
// convert -0 to +0
|
3442 |
+
? $native.apply(this, arguments) || 0
|
3443 |
+
: $indexOf(this, searchElement, arguments[1]);
|
3444 |
+
}
|
3445 |
+
});
|
3446 |
+
|
3447 |
+
/***/ },
|
3448 |
+
/* 175 */
|
3449 |
+
/***/ function(module, exports, __webpack_require__) {
|
3450 |
+
|
3451 |
+
'use strict';
|
3452 |
+
var $export = __webpack_require__(6)
|
3453 |
+
, toIObject = __webpack_require__(30)
|
3454 |
+
, toInteger = __webpack_require__(36)
|
3455 |
+
, toLength = __webpack_require__(35)
|
3456 |
+
, $native = [].lastIndexOf
|
3457 |
+
, NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;
|
3458 |
+
|
3459 |
+
$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(160)($native)), 'Array', {
|
3460 |
+
// 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
|
3461 |
+
lastIndexOf: function lastIndexOf(searchElement /*, fromIndex = @[*-1] */){
|
3462 |
+
// convert -0 to +0
|
3463 |
+
if(NEGATIVE_ZERO)return $native.apply(this, arguments) || 0;
|
3464 |
+
var O = toIObject(this)
|
3465 |
+
, length = toLength(O.length)
|
3466 |
+
, index = length - 1;
|
3467 |
+
if(arguments.length > 1)index = Math.min(index, toInteger(arguments[1]));
|
3468 |
+
if(index < 0)index = length + index;
|
3469 |
+
for(;index >= 0; index--)if(index in O)if(O[index] === searchElement)return index || 0;
|
3470 |
+
return -1;
|
3471 |
+
}
|
3472 |
+
});
|
3473 |
+
|
3474 |
+
/***/ },
|
3475 |
+
/* 176 */
|
3476 |
+
/***/ function(module, exports, __webpack_require__) {
|
3477 |
+
|
3478 |
+
// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
|
3479 |
+
var $export = __webpack_require__(6);
|
3480 |
+
|
3481 |
+
$export($export.P, 'Array', {copyWithin: __webpack_require__(177)});
|
3482 |
+
|
3483 |
+
__webpack_require__(178)('copyWithin');
|
3484 |
+
|
3485 |
+
/***/ },
|
3486 |
+
/* 177 */
|
3487 |
+
/***/ function(module, exports, __webpack_require__) {
|
3488 |
+
|
3489 |
+
// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
|
3490 |
+
'use strict';
|
3491 |
+
var toObject = __webpack_require__(56)
|
3492 |
+
, toIndex = __webpack_require__(37)
|
3493 |
+
, toLength = __webpack_require__(35);
|
3494 |
+
|
3495 |
+
module.exports = [].copyWithin || function copyWithin(target/*= 0*/, start/*= 0, end = @length*/){
|
3496 |
+
var O = toObject(this)
|
3497 |
+
, len = toLength(O.length)
|
3498 |
+
, to = toIndex(target, len)
|
3499 |
+
, from = toIndex(start, len)
|
3500 |
+
, end = arguments.length > 2 ? arguments[2] : undefined
|
3501 |
+
, count = Math.min((end === undefined ? len : toIndex(end, len)) - from, len - to)
|
3502 |
+
, inc = 1;
|
3503 |
+
if(from < to && to < from + count){
|
3504 |
+
inc = -1;
|
3505 |
+
from += count - 1;
|
3506 |
+
to += count - 1;
|
3507 |
+
}
|
3508 |
+
while(count-- > 0){
|
3509 |
+
if(from in O)O[to] = O[from];
|
3510 |
+
else delete O[to];
|
3511 |
+
to += inc;
|
3512 |
+
from += inc;
|
3513 |
+
} return O;
|
3514 |
+
};
|
3515 |
+
|
3516 |
+
/***/ },
|
3517 |
+
/* 178 */
|
3518 |
+
/***/ function(module, exports, __webpack_require__) {
|
3519 |
+
|
3520 |
+
// 22.1.3.31 Array.prototype[@@unscopables]
|
3521 |
+
var UNSCOPABLES = __webpack_require__(23)('unscopables')
|
3522 |
+
, ArrayProto = Array.prototype;
|
3523 |
+
if(ArrayProto[UNSCOPABLES] == undefined)__webpack_require__(8)(ArrayProto, UNSCOPABLES, {});
|
3524 |
+
module.exports = function(key){
|
3525 |
+
ArrayProto[UNSCOPABLES][key] = true;
|
3526 |
+
};
|
3527 |
+
|
3528 |
+
/***/ },
|
3529 |
+
/* 179 */
|
3530 |
+
/***/ function(module, exports, __webpack_require__) {
|
3531 |
+
|
3532 |
+
// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
|
3533 |
+
var $export = __webpack_require__(6);
|
3534 |
+
|
3535 |
+
$export($export.P, 'Array', {fill: __webpack_require__(180)});
|
3536 |
+
|
3537 |
+
__webpack_require__(178)('fill');
|
3538 |
+
|
3539 |
+
/***/ },
|
3540 |
+
/* 180 */
|
3541 |
+
/***/ function(module, exports, __webpack_require__) {
|
3542 |
+
|
3543 |
+
// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
|
3544 |
+
'use strict';
|
3545 |
+
var toObject = __webpack_require__(56)
|
3546 |
+
, toIndex = __webpack_require__(37)
|
3547 |
+
, toLength = __webpack_require__(35);
|
3548 |
+
module.exports = function fill(value /*, start = 0, end = @length */){
|
3549 |
+
var O = toObject(this)
|
3550 |
+
, length = toLength(O.length)
|
3551 |
+
, aLen = arguments.length
|
3552 |
+
, index = toIndex(aLen > 1 ? arguments[1] : undefined, length)
|
3553 |
+
, end = aLen > 2 ? arguments[2] : undefined
|
3554 |
+
, endPos = end === undefined ? length : toIndex(end, length);
|
3555 |
+
while(endPos > index)O[index++] = value;
|
3556 |
+
return O;
|
3557 |
+
};
|
3558 |
+
|
3559 |
+
/***/ },
|
3560 |
+
/* 181 */
|
3561 |
+
/***/ function(module, exports, __webpack_require__) {
|
3562 |
+
|
3563 |
+
'use strict';
|
3564 |
+
// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
|
3565 |
+
var $export = __webpack_require__(6)
|
3566 |
+
, $find = __webpack_require__(164)(5)
|
3567 |
+
, KEY = 'find'
|
3568 |
+
, forced = true;
|
3569 |
+
// Shouldn't skip holes
|
3570 |
+
if(KEY in [])Array(1)[KEY](function(){ forced = false; });
|
3571 |
+
$export($export.P + $export.F * forced, 'Array', {
|
3572 |
+
find: function find(callbackfn/*, that = undefined */){
|
3573 |
+
return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
|
3574 |
+
}
|
3575 |
+
});
|
3576 |
+
__webpack_require__(178)(KEY);
|
3577 |
+
|
3578 |
+
/***/ },
|
3579 |
+
/* 182 */
|
3580 |
+
/***/ function(module, exports, __webpack_require__) {
|
3581 |
+
|
3582 |
+
'use strict';
|
3583 |
+
// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
|
3584 |
+
var $export = __webpack_require__(6)
|
3585 |
+
, $find = __webpack_require__(164)(6)
|
3586 |
+
, KEY = 'findIndex'
|
3587 |
+
, forced = true;
|
3588 |
+
// Shouldn't skip holes
|
3589 |
+
if(KEY in [])Array(1)[KEY](function(){ forced = false; });
|
3590 |
+
$export($export.P + $export.F * forced, 'Array', {
|
3591 |
+
findIndex: function findIndex(callbackfn/*, that = undefined */){
|
3592 |
+
return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
|
3593 |
+
}
|
3594 |
+
});
|
3595 |
+
__webpack_require__(178)(KEY);
|
3596 |
+
|
3597 |
+
/***/ },
|
3598 |
+
/* 183 */
|
3599 |
+
/***/ function(module, exports, __webpack_require__) {
|
3600 |
+
|
3601 |
+
'use strict';
|
3602 |
+
var addToUnscopables = __webpack_require__(178)
|
3603 |
+
, step = __webpack_require__(184)
|
3604 |
+
, Iterators = __webpack_require__(135)
|
3605 |
+
, toIObject = __webpack_require__(30);
|
3606 |
+
|
3607 |
+
// 22.1.3.4 Array.prototype.entries()
|
3608 |
+
// 22.1.3.13 Array.prototype.keys()
|
3609 |
+
// 22.1.3.29 Array.prototype.values()
|
3610 |
+
// 22.1.3.30 Array.prototype[@@iterator]()
|
3611 |
+
module.exports = __webpack_require__(134)(Array, 'Array', function(iterated, kind){
|
3612 |
+
this._t = toIObject(iterated); // target
|
3613 |
+
this._i = 0; // next index
|
3614 |
+
this._k = kind; // kind
|
3615 |
+
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
|
3616 |
+
}, function(){
|
3617 |
+
var O = this._t
|
3618 |
+
, kind = this._k
|
3619 |
+
, index = this._i++;
|
3620 |
+
if(!O || index >= O.length){
|
3621 |
+
this._t = undefined;
|
3622 |
+
return step(1);
|
3623 |
+
}
|
3624 |
+
if(kind == 'keys' )return step(0, index);
|
3625 |
+
if(kind == 'values')return step(0, O[index]);
|
3626 |
+
return step(0, [index, O[index]]);
|
3627 |
+
}, 'values');
|
3628 |
+
|
3629 |
+
// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
|
3630 |
+
Iterators.Arguments = Iterators.Array;
|
3631 |
+
|
3632 |
+
addToUnscopables('keys');
|
3633 |
+
addToUnscopables('values');
|
3634 |
+
addToUnscopables('entries');
|
3635 |
+
|
3636 |
+
/***/ },
|
3637 |
+
/* 184 */
|
3638 |
+
/***/ function(module, exports) {
|
3639 |
+
|
3640 |
+
module.exports = function(done, value){
|
3641 |
+
return {value: value, done: !!done};
|
3642 |
+
};
|
3643 |
+
|
3644 |
+
/***/ },
|
3645 |
+
/* 185 */
|
3646 |
+
/***/ function(module, exports, __webpack_require__) {
|
3647 |
+
|
3648 |
+
__webpack_require__(186)('Array');
|
3649 |
+
|
3650 |
+
/***/ },
|
3651 |
+
/* 186 */
|
3652 |
+
/***/ function(module, exports, __webpack_require__) {
|
3653 |
+
|
3654 |
+
'use strict';
|
3655 |
+
var global = __webpack_require__(2)
|
3656 |
+
, dP = __webpack_require__(9)
|
3657 |
+
, DESCRIPTORS = __webpack_require__(4)
|
3658 |
+
, SPECIES = __webpack_require__(23)('species');
|
3659 |
+
|
3660 |
+
module.exports = function(KEY){
|
3661 |
+
var C = global[KEY];
|
3662 |
+
if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {
|
3663 |
+
configurable: true,
|
3664 |
+
get: function(){ return this; }
|
3665 |
+
});
|
3666 |
+
};
|
3667 |
+
|
3668 |
+
/***/ },
|
3669 |
+
/* 187 */
|
3670 |
+
/***/ function(module, exports, __webpack_require__) {
|
3671 |
+
|
3672 |
+
var global = __webpack_require__(2)
|
3673 |
+
, inheritIfRequired = __webpack_require__(80)
|
3674 |
+
, dP = __webpack_require__(9).f
|
3675 |
+
, gOPN = __webpack_require__(48).f
|
3676 |
+
, isRegExp = __webpack_require__(128)
|
3677 |
+
, $flags = __webpack_require__(188)
|
3678 |
+
, $RegExp = global.RegExp
|
3679 |
+
, Base = $RegExp
|
3680 |
+
, proto = $RegExp.prototype
|
3681 |
+
, re1 = /a/g
|
3682 |
+
, re2 = /a/g
|
3683 |
+
// "new" creates a new object, old webkit buggy here
|
3684 |
+
, CORRECT_NEW = new $RegExp(re1) !== re1;
|
3685 |
+
|
3686 |
+
if(__webpack_require__(4) && (!CORRECT_NEW || __webpack_require__(5)(function(){
|
3687 |
+
re2[__webpack_require__(23)('match')] = false;
|
3688 |
+
// RegExp constructor can alter flags and IsRegExp works correct with @@match
|
3689 |
+
return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
|
3690 |
+
}))){
|
3691 |
+
$RegExp = function RegExp(p, f){
|
3692 |
+
var tiRE = this instanceof $RegExp
|
3693 |
+
, piRE = isRegExp(p)
|
3694 |
+
, fiU = f === undefined;
|
3695 |
+
return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
|
3696 |
+
: inheritIfRequired(CORRECT_NEW
|
3697 |
+
? new Base(piRE && !fiU ? p.source : p, f)
|
3698 |
+
: Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
|
3699 |
+
, tiRE ? this : proto, $RegExp);
|
3700 |
+
};
|
3701 |
+
var proxy = function(key){
|
3702 |
+
key in $RegExp || dP($RegExp, key, {
|
3703 |
+
configurable: true,
|
3704 |
+
get: function(){ return Base[key]; },
|
3705 |
+
set: function(it){ Base[key] = it; }
|
3706 |
+
});
|
3707 |
+
};
|
3708 |
+
for(var keys = gOPN(Base), i = 0; keys.length > i; )proxy(keys[i++]);
|
3709 |
+
proto.constructor = $RegExp;
|
3710 |
+
$RegExp.prototype = proto;
|
3711 |
+
__webpack_require__(16)(global, 'RegExp', $RegExp);
|
3712 |
+
}
|
3713 |
+
|
3714 |
+
__webpack_require__(186)('RegExp');
|
3715 |
+
|
3716 |
+
/***/ },
|
3717 |
+
/* 188 */
|
3718 |
+
/***/ function(module, exports, __webpack_require__) {
|
3719 |
+
|
3720 |
+
'use strict';
|
3721 |
+
// 21.2.5.3 get RegExp.prototype.flags
|
3722 |
+
var anObject = __webpack_require__(10);
|
3723 |
+
module.exports = function(){
|
3724 |
+
var that = anObject(this)
|
3725 |
+
, result = '';
|
3726 |
+
if(that.global) result += 'g';
|
3727 |
+
if(that.ignoreCase) result += 'i';
|
3728 |
+
if(that.multiline) result += 'm';
|
3729 |
+
if(that.unicode) result += 'u';
|
3730 |
+
if(that.sticky) result += 'y';
|
3731 |
+
return result;
|
3732 |
+
};
|
3733 |
+
|
3734 |
+
/***/ },
|
3735 |
+
/* 189 */
|
3736 |
+
/***/ function(module, exports, __webpack_require__) {
|
3737 |
+
|
3738 |
+
'use strict';
|
3739 |
+
__webpack_require__(190);
|
3740 |
+
var anObject = __webpack_require__(10)
|
3741 |
+
, $flags = __webpack_require__(188)
|
3742 |
+
, DESCRIPTORS = __webpack_require__(4)
|
3743 |
+
, TO_STRING = 'toString'
|
3744 |
+
, $toString = /./[TO_STRING];
|
3745 |
+
|
3746 |
+
var define = function(fn){
|
3747 |
+
__webpack_require__(16)(RegExp.prototype, TO_STRING, fn, true);
|
3748 |
+
};
|
3749 |
+
|
3750 |
+
// 21.2.5.14 RegExp.prototype.toString()
|
3751 |
+
if(__webpack_require__(5)(function(){ return $toString.call({source: 'a', flags: 'b'}) != '/a/b'; })){
|
3752 |
+
define(function toString(){
|
3753 |
+
var R = anObject(this);
|
3754 |
+
return '/'.concat(R.source, '/',
|
3755 |
+
'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
|
3756 |
+
});
|
3757 |
+
// FF44- RegExp#toString has a wrong name
|
3758 |
+
} else if($toString.name != TO_STRING){
|
3759 |
+
define(function toString(){
|
3760 |
+
return $toString.call(this);
|
3761 |
+
});
|
3762 |
+
}
|
3763 |
+
|
3764 |
+
/***/ },
|
3765 |
+
/* 190 */
|
3766 |
+
/***/ function(module, exports, __webpack_require__) {
|
3767 |
+
|
3768 |
+
// 21.2.5.3 get RegExp.prototype.flags()
|
3769 |
+
if(__webpack_require__(4) && /./g.flags != 'g')__webpack_require__(9).f(RegExp.prototype, 'flags', {
|
3770 |
+
configurable: true,
|
3771 |
+
get: __webpack_require__(188)
|
3772 |
+
});
|
3773 |
+
|
3774 |
+
/***/ },
|
3775 |
+
/* 191 */
|
3776 |
+
/***/ function(module, exports, __webpack_require__) {
|
3777 |
+
|
3778 |
+
// @@match logic
|
3779 |
+
__webpack_require__(192)('match', 1, function(defined, MATCH, $match){
|
3780 |
+
// 21.1.3.11 String.prototype.match(regexp)
|
3781 |
+
return [function match(regexp){
|
3782 |
+
'use strict';
|
3783 |
+
var O = defined(this)
|
3784 |
+
, fn = regexp == undefined ? undefined : regexp[MATCH];
|
3785 |
+
return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
|
3786 |
+
}, $match];
|
3787 |
+
});
|
3788 |
+
|
3789 |
+
/***/ },
|
3790 |
+
/* 192 */
|
3791 |
+
/***/ function(module, exports, __webpack_require__) {
|
3792 |
+
|
3793 |
+
'use strict';
|
3794 |
+
var hide = __webpack_require__(8)
|
3795 |
+
, redefine = __webpack_require__(16)
|
3796 |
+
, fails = __webpack_require__(5)
|
3797 |
+
, defined = __webpack_require__(33)
|
3798 |
+
, wks = __webpack_require__(23);
|
3799 |
+
|
3800 |
+
module.exports = function(KEY, length, exec){
|
3801 |
+
var SYMBOL = wks(KEY)
|
3802 |
+
, fns = exec(defined, SYMBOL, ''[KEY])
|
3803 |
+
, strfn = fns[0]
|
3804 |
+
, rxfn = fns[1];
|
3805 |
+
if(fails(function(){
|
3806 |
+
var O = {};
|
3807 |
+
O[SYMBOL] = function(){ return 7; };
|
3808 |
+
return ''[KEY](O) != 7;
|
3809 |
+
})){
|
3810 |
+
redefine(String.prototype, KEY, strfn);
|
3811 |
+
hide(RegExp.prototype, SYMBOL, length == 2
|
3812 |
+
// 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
|
3813 |
+
// 21.2.5.11 RegExp.prototype[@@split](string, limit)
|
3814 |
+
? function(string, arg){ return rxfn.call(string, this, arg); }
|
3815 |
+
// 21.2.5.6 RegExp.prototype[@@match](string)
|
3816 |
+
// 21.2.5.9 RegExp.prototype[@@search](string)
|
3817 |
+
: function(string){ return rxfn.call(string, this); }
|
3818 |
+
);
|
3819 |
+
}
|
3820 |
+
};
|
3821 |
+
|
3822 |
+
/***/ },
|
3823 |
+
/* 193 */
|
3824 |
+
/***/ function(module, exports, __webpack_require__) {
|
3825 |
+
|
3826 |
+
// @@replace logic
|
3827 |
+
__webpack_require__(192)('replace', 2, function(defined, REPLACE, $replace){
|
3828 |
+
// 21.1.3.14 String.prototype.replace(searchValue, replaceValue)
|
3829 |
+
return [function replace(searchValue, replaceValue){
|
3830 |
+
'use strict';
|
3831 |
+
var O = defined(this)
|
3832 |
+
, fn = searchValue == undefined ? undefined : searchValue[REPLACE];
|
3833 |
+
return fn !== undefined
|
3834 |
+
? fn.call(searchValue, O, replaceValue)
|
3835 |
+
: $replace.call(String(O), searchValue, replaceValue);
|
3836 |
+
}, $replace];
|
3837 |
+
});
|
3838 |
+
|
3839 |
+
/***/ },
|
3840 |
+
/* 194 */
|
3841 |
+
/***/ function(module, exports, __webpack_require__) {
|
3842 |
+
|
3843 |
+
// @@search logic
|
3844 |
+
__webpack_require__(192)('search', 1, function(defined, SEARCH, $search){
|
3845 |
+
// 21.1.3.15 String.prototype.search(regexp)
|
3846 |
+
return [function search(regexp){
|
3847 |
+
'use strict';
|
3848 |
+
var O = defined(this)
|
3849 |
+
, fn = regexp == undefined ? undefined : regexp[SEARCH];
|
3850 |
+
return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
|
3851 |
+
}, $search];
|
3852 |
+
});
|
3853 |
+
|
3854 |
+
/***/ },
|
3855 |
+
/* 195 */
|
3856 |
+
/***/ function(module, exports, __webpack_require__) {
|
3857 |
+
|
3858 |
+
// @@split logic
|
3859 |
+
__webpack_require__(192)('split', 2, function(defined, SPLIT, $split){
|
3860 |
+
'use strict';
|
3861 |
+
var isRegExp = __webpack_require__(128)
|
3862 |
+
, _split = $split
|
3863 |
+
, $push = [].push
|
3864 |
+
, $SPLIT = 'split'
|
3865 |
+
, LENGTH = 'length'
|
3866 |
+
, LAST_INDEX = 'lastIndex';
|
3867 |
+
if(
|
3868 |
+
'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
|
3869 |
+
'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
|
3870 |
+
'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
|
3871 |
+
'.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
|
3872 |
+
'.'[$SPLIT](/()()/)[LENGTH] > 1 ||
|
3873 |
+
''[$SPLIT](/.?/)[LENGTH]
|
3874 |
+
){
|
3875 |
+
var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group
|
3876 |
+
// based on es5-shim implementation, need to rework it
|
3877 |
+
$split = function(separator, limit){
|
3878 |
+
var string = String(this);
|
3879 |
+
if(separator === undefined && limit === 0)return [];
|
3880 |
+
// If `separator` is not a regex, use native split
|
3881 |
+
if(!isRegExp(separator))return _split.call(string, separator, limit);
|
3882 |
+
var output = [];
|
3883 |
+
var flags = (separator.ignoreCase ? 'i' : '') +
|
3884 |
+
(separator.multiline ? 'm' : '') +
|
3885 |
+
(separator.unicode ? 'u' : '') +
|
3886 |
+
(separator.sticky ? 'y' : '');
|
3887 |
+
var lastLastIndex = 0;
|
3888 |
+
var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;
|
3889 |
+
// Make `global` and avoid `lastIndex` issues by working with a copy
|
3890 |
+
var separatorCopy = new RegExp(separator.source, flags + 'g');
|
3891 |
+
var separator2, match, lastIndex, lastLength, i;
|
3892 |
+
// Doesn't need flags gy, but they don't hurt
|
3893 |
+
if(!NPCG)separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags);
|
3894 |
+
while(match = separatorCopy.exec(string)){
|
3895 |
+
// `separatorCopy.lastIndex` is not reliable cross-browser
|
3896 |
+
lastIndex = match.index + match[0][LENGTH];
|
3897 |
+
if(lastIndex > lastLastIndex){
|
3898 |
+
output.push(string.slice(lastLastIndex, match.index));
|
3899 |
+
// Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG
|
3900 |
+
if(!NPCG && match[LENGTH] > 1)match[0].replace(separator2, function(){
|
3901 |
+
for(i = 1; i < arguments[LENGTH] - 2; i++)if(arguments[i] === undefined)match[i] = undefined;
|
3902 |
+
});
|
3903 |
+
if(match[LENGTH] > 1 && match.index < string[LENGTH])$push.apply(output, match.slice(1));
|
3904 |
+
lastLength = match[0][LENGTH];
|
3905 |
+
lastLastIndex = lastIndex;
|
3906 |
+
if(output[LENGTH] >= splitLimit)break;
|
3907 |
+
}
|
3908 |
+
if(separatorCopy[LAST_INDEX] === match.index)separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
|
3909 |
+
}
|
3910 |
+
if(lastLastIndex === string[LENGTH]){
|
3911 |
+
if(lastLength || !separatorCopy.test(''))output.push('');
|
3912 |
+
} else output.push(string.slice(lastLastIndex));
|
3913 |
+
return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
|
3914 |
+
};
|
3915 |
+
// Chakra, V8
|
3916 |
+
} else if('0'[$SPLIT](undefined, 0)[LENGTH]){
|
3917 |
+
$split = function(separator, limit){
|
3918 |
+
return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);
|
3919 |
+
};
|
3920 |
+
}
|
3921 |
+
// 21.1.3.17 String.prototype.split(separator, limit)
|
3922 |
+
return [function split(separator, limit){
|
3923 |
+
var O = defined(this)
|
3924 |
+
, fn = separator == undefined ? undefined : separator[SPLIT];
|
3925 |
+
return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);
|
3926 |
+
}, $split];
|
3927 |
+
});
|
3928 |
+
|
3929 |
+
/***/ },
|
3930 |
+
/* 196 */
|
3931 |
+
/***/ function(module, exports, __webpack_require__) {
|
3932 |
+
|
3933 |
+
'use strict';
|
3934 |
+
var LIBRARY = __webpack_require__(26)
|
3935 |
+
, global = __webpack_require__(2)
|
3936 |
+
, ctx = __webpack_require__(18)
|
3937 |
+
, classof = __webpack_require__(73)
|
3938 |
+
, $export = __webpack_require__(6)
|
3939 |
+
, isObject = __webpack_require__(11)
|
3940 |
+
, aFunction = __webpack_require__(19)
|
3941 |
+
, anInstance = __webpack_require__(197)
|
3942 |
+
, forOf = __webpack_require__(198)
|
3943 |
+
, speciesConstructor = __webpack_require__(199)
|
3944 |
+
, task = __webpack_require__(200).set
|
3945 |
+
, microtask = __webpack_require__(201)()
|
3946 |
+
, PROMISE = 'Promise'
|
3947 |
+
, TypeError = global.TypeError
|
3948 |
+
, process = global.process
|
3949 |
+
, $Promise = global[PROMISE]
|
3950 |
+
, process = global.process
|
3951 |
+
, isNode = classof(process) == 'process'
|
3952 |
+
, empty = function(){ /* empty */ }
|
3953 |
+
, Internal, GenericPromiseCapability, Wrapper;
|
3954 |
+
|
3955 |
+
var USE_NATIVE = !!function(){
|
3956 |
+
try {
|
3957 |
+
// correct subclassing with @@species support
|
3958 |
+
var promise = $Promise.resolve(1)
|
3959 |
+
, FakePromise = (promise.constructor = {})[__webpack_require__(23)('species')] = function(exec){ exec(empty, empty); };
|
3960 |
+
// unhandled rejections tracking support, NodeJS Promise without it fails @@species test
|
3961 |
+
return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;
|
3962 |
+
} catch(e){ /* empty */ }
|
3963 |
+
}();
|
3964 |
+
|
3965 |
+
// helpers
|
3966 |
+
var sameConstructor = function(a, b){
|
3967 |
+
// with library wrapper special case
|
3968 |
+
return a === b || a === $Promise && b === Wrapper;
|
3969 |
+
};
|
3970 |
+
var isThenable = function(it){
|
3971 |
+
var then;
|
3972 |
+
return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
|
3973 |
+
};
|
3974 |
+
var newPromiseCapability = function(C){
|
3975 |
+
return sameConstructor($Promise, C)
|
3976 |
+
? new PromiseCapability(C)
|
3977 |
+
: new GenericPromiseCapability(C);
|
3978 |
+
};
|
3979 |
+
var PromiseCapability = GenericPromiseCapability = function(C){
|
3980 |
+
var resolve, reject;
|
3981 |
+
this.promise = new C(function($$resolve, $$reject){
|
3982 |
+
if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');
|
3983 |
+
resolve = $$resolve;
|
3984 |
+
reject = $$reject;
|
3985 |
+
});
|
3986 |
+
this.resolve = aFunction(resolve);
|
3987 |
+
this.reject = aFunction(reject);
|
3988 |
+
};
|
3989 |
+
var perform = function(exec){
|
3990 |
+
try {
|
3991 |
+
exec();
|
3992 |
+
} catch(e){
|
3993 |
+
return {error: e};
|
3994 |
+
}
|
3995 |
+
};
|
3996 |
+
var notify = function(promise, isReject){
|
3997 |
+
if(promise._n)return;
|
3998 |
+
promise._n = true;
|
3999 |
+
var chain = promise._c;
|
4000 |
+
microtask(function(){
|
4001 |
+
var value = promise._v
|
4002 |
+
, ok = promise._s == 1
|
4003 |
+
, i = 0;
|
4004 |
+
var run = function(reaction){
|
4005 |
+
var handler = ok ? reaction.ok : reaction.fail
|
4006 |
+
, resolve = reaction.resolve
|
4007 |
+
, reject = reaction.reject
|
4008 |
+
, domain = reaction.domain
|
4009 |
+
, result, then;
|
4010 |
+
try {
|
4011 |
+
if(handler){
|
4012 |
+
if(!ok){
|
4013 |
+
if(promise._h == 2)onHandleUnhandled(promise);
|
4014 |
+
promise._h = 1;
|
4015 |
+
}
|
4016 |
+
if(handler === true)result = value;
|
4017 |
+
else {
|
4018 |
+
if(domain)domain.enter();
|
4019 |
+
result = handler(value);
|
4020 |
+
if(domain)domain.exit();
|
4021 |
+
}
|
4022 |
+
if(result === reaction.promise){
|
4023 |
+
reject(TypeError('Promise-chain cycle'));
|
4024 |
+
} else if(then = isThenable(result)){
|
4025 |
+
then.call(result, resolve, reject);
|
4026 |
+
} else resolve(result);
|
4027 |
+
} else reject(value);
|
4028 |
+
} catch(e){
|
4029 |
+
reject(e);
|
4030 |
+
}
|
4031 |
+
};
|
4032 |
+
while(chain.length > i)run(chain[i++]); // variable length - can't use forEach
|
4033 |
+
promise._c = [];
|
4034 |
+
promise._n = false;
|
4035 |
+
if(isReject && !promise._h)onUnhandled(promise);
|
4036 |
+
});
|
4037 |
+
};
|
4038 |
+
var onUnhandled = function(promise){
|
4039 |
+
task.call(global, function(){
|
4040 |
+
var value = promise._v
|
4041 |
+
, abrupt, handler, console;
|
4042 |
+
if(isUnhandled(promise)){
|
4043 |
+
abrupt = perform(function(){
|
4044 |
+
if(isNode){
|
4045 |
+
process.emit('unhandledRejection', value, promise);
|
4046 |
+
} else if(handler = global.onunhandledrejection){
|
4047 |
+
handler({promise: promise, reason: value});
|
4048 |
+
} else if((console = global.console) && console.error){
|
4049 |
+
console.error('Unhandled promise rejection', value);
|
4050 |
+
}
|
4051 |
+
});
|
4052 |
+
// Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
|
4053 |
+
promise._h = isNode || isUnhandled(promise) ? 2 : 1;
|
4054 |
+
} promise._a = undefined;
|
4055 |
+
if(abrupt)throw abrupt.error;
|
4056 |
+
});
|
4057 |
+
};
|
4058 |
+
var isUnhandled = function(promise){
|
4059 |
+
if(promise._h == 1)return false;
|
4060 |
+
var chain = promise._a || promise._c
|
4061 |
+
, i = 0
|
4062 |
+
, reaction;
|
4063 |
+
while(chain.length > i){
|
4064 |
+
reaction = chain[i++];
|
4065 |
+
if(reaction.fail || !isUnhandled(reaction.promise))return false;
|
4066 |
+
} return true;
|
4067 |
+
};
|
4068 |
+
var onHandleUnhandled = function(promise){
|
4069 |
+
task.call(global, function(){
|
4070 |
+
var handler;
|
4071 |
+
if(isNode){
|
4072 |
+
process.emit('rejectionHandled', promise);
|
4073 |
+
} else if(handler = global.onrejectionhandled){
|
4074 |
+
handler({promise: promise, reason: promise._v});
|
4075 |
+
}
|
4076 |
+
});
|
4077 |
+
};
|
4078 |
+
var $reject = function(value){
|
4079 |
+
var promise = this;
|
4080 |
+
if(promise._d)return;
|
4081 |
+
promise._d = true;
|
4082 |
+
promise = promise._w || promise; // unwrap
|
4083 |
+
promise._v = value;
|
4084 |
+
promise._s = 2;
|
4085 |
+
if(!promise._a)promise._a = promise._c.slice();
|
4086 |
+
notify(promise, true);
|
4087 |
+
};
|
4088 |
+
var $resolve = function(value){
|
4089 |
+
var promise = this
|
4090 |
+
, then;
|
4091 |
+
if(promise._d)return;
|
4092 |
+
promise._d = true;
|
4093 |
+
promise = promise._w || promise; // unwrap
|
4094 |
+
try {
|
4095 |
+
if(promise === value)throw TypeError("Promise can't be resolved itself");
|
4096 |
+
if(then = isThenable(value)){
|
4097 |
+
microtask(function(){
|
4098 |
+
var wrapper = {_w: promise, _d: false}; // wrap
|
4099 |
+
try {
|
4100 |
+
then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
|
4101 |
+
} catch(e){
|
4102 |
+
$reject.call(wrapper, e);
|
4103 |
+
}
|
4104 |
+
});
|
4105 |
+
} else {
|
4106 |
+
promise._v = value;
|
4107 |
+
promise._s = 1;
|
4108 |
+
notify(promise, false);
|
4109 |
+
}
|
4110 |
+
} catch(e){
|
4111 |
+
$reject.call({_w: promise, _d: false}, e); // wrap
|
4112 |
+
}
|
4113 |
+
};
|
4114 |
+
|
4115 |
+
// constructor polyfill
|
4116 |
+
if(!USE_NATIVE){
|
4117 |
+
// 25.4.3.1 Promise(executor)
|
4118 |
+
$Promise = function Promise(executor){
|
4119 |
+
anInstance(this, $Promise, PROMISE, '_h');
|
4120 |
+
aFunction(executor);
|
4121 |
+
Internal.call(this);
|
4122 |
+
try {
|
4123 |
+
executor(ctx($resolve, this, 1), ctx($reject, this, 1));
|
4124 |
+
} catch(err){
|
4125 |
+
$reject.call(this, err);
|
4126 |
+
}
|
4127 |
+
};
|
4128 |
+
Internal = function Promise(executor){
|
4129 |
+
this._c = []; // <- awaiting reactions
|
4130 |
+
this._a = undefined; // <- checked in isUnhandled reactions
|
4131 |
+
this._s = 0; // <- state
|
4132 |
+
this._d = false; // <- done
|
4133 |
+
this._v = undefined; // <- value
|
4134 |
+
this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
|
4135 |
+
this._n = false; // <- notify
|
4136 |
+
};
|
4137 |
+
Internal.prototype = __webpack_require__(202)($Promise.prototype, {
|
4138 |
+
// 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
|
4139 |
+
then: function then(onFulfilled, onRejected){
|
4140 |
+
var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
|
4141 |
+
reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
|
4142 |
+
reaction.fail = typeof onRejected == 'function' && onRejected;
|
4143 |
+
reaction.domain = isNode ? process.domain : undefined;
|
4144 |
+
this._c.push(reaction);
|
4145 |
+
if(this._a)this._a.push(reaction);
|
4146 |
+
if(this._s)notify(this, false);
|
4147 |
+
return reaction.promise;
|
4148 |
+
},
|
4149 |
+
// 25.4.5.1 Promise.prototype.catch(onRejected)
|
4150 |
+
'catch': function(onRejected){
|
4151 |
+
return this.then(undefined, onRejected);
|
4152 |
+
}
|
4153 |
+
});
|
4154 |
+
PromiseCapability = function(){
|
4155 |
+
var promise = new Internal;
|
4156 |
+
this.promise = promise;
|
4157 |
+
this.resolve = ctx($resolve, promise, 1);
|
4158 |
+
this.reject = ctx($reject, promise, 1);
|
4159 |
+
};
|
4160 |
+
}
|
4161 |
+
|
4162 |
+
$export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise});
|
4163 |
+
__webpack_require__(22)($Promise, PROMISE);
|
4164 |
+
__webpack_require__(186)(PROMISE);
|
4165 |
+
Wrapper = __webpack_require__(7)[PROMISE];
|
4166 |
+
|
4167 |
+
// statics
|
4168 |
+
$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
|
4169 |
+
// 25.4.4.5 Promise.reject(r)
|
4170 |
+
reject: function reject(r){
|
4171 |
+
var capability = newPromiseCapability(this)
|
4172 |
+
, $$reject = capability.reject;
|
4173 |
+
$$reject(r);
|
4174 |
+
return capability.promise;
|
4175 |
+
}
|
4176 |
+
});
|
4177 |
+
$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
|
4178 |
+
// 25.4.4.6 Promise.resolve(x)
|
4179 |
+
resolve: function resolve(x){
|
4180 |
+
// instanceof instead of internal slot check because we should fix it without replacement native Promise core
|
4181 |
+
if(x instanceof $Promise && sameConstructor(x.constructor, this))return x;
|
4182 |
+
var capability = newPromiseCapability(this)
|
4183 |
+
, $$resolve = capability.resolve;
|
4184 |
+
$$resolve(x);
|
4185 |
+
return capability.promise;
|
4186 |
+
}
|
4187 |
+
});
|
4188 |
+
$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(157)(function(iter){
|
4189 |
+
$Promise.all(iter)['catch'](empty);
|
4190 |
+
})), PROMISE, {
|
4191 |
+
// 25.4.4.1 Promise.all(iterable)
|
4192 |
+
all: function all(iterable){
|
4193 |
+
var C = this
|
4194 |
+
, capability = newPromiseCapability(C)
|
4195 |
+
, resolve = capability.resolve
|
4196 |
+
, reject = capability.reject;
|
4197 |
+
var abrupt = perform(function(){
|
4198 |
+
var values = []
|
4199 |
+
, index = 0
|
4200 |
+
, remaining = 1;
|
4201 |
+
forOf(iterable, false, function(promise){
|
4202 |
+
var $index = index++
|
4203 |
+
, alreadyCalled = false;
|
4204 |
+
values.push(undefined);
|
4205 |
+
remaining++;
|
4206 |
+
C.resolve(promise).then(function(value){
|
4207 |
+
if(alreadyCalled)return;
|
4208 |
+
alreadyCalled = true;
|
4209 |
+
values[$index] = value;
|
4210 |
+
--remaining || resolve(values);
|
4211 |
+
}, reject);
|
4212 |
+
});
|
4213 |
+
--remaining || resolve(values);
|
4214 |
+
});
|
4215 |
+
if(abrupt)reject(abrupt.error);
|
4216 |
+
return capability.promise;
|
4217 |
+
},
|
4218 |
+
// 25.4.4.4 Promise.race(iterable)
|
4219 |
+
race: function race(iterable){
|
4220 |
+
var C = this
|
4221 |
+
, capability = newPromiseCapability(C)
|
4222 |
+
, reject = capability.reject;
|
4223 |
+
var abrupt = perform(function(){
|
4224 |
+
forOf(iterable, false, function(promise){
|
4225 |
+
C.resolve(promise).then(capability.resolve, reject);
|
4226 |
+
});
|
4227 |
+
});
|
4228 |
+
if(abrupt)reject(abrupt.error);
|
4229 |
+
return capability.promise;
|
4230 |
+
}
|
4231 |
+
});
|
4232 |
+
|
4233 |
+
/***/ },
|
4234 |
+
/* 197 */
|
4235 |
+
/***/ function(module, exports) {
|
4236 |
+
|
4237 |
+
module.exports = function(it, Constructor, name, forbiddenField){
|
4238 |
+
if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){
|
4239 |
+
throw TypeError(name + ': incorrect invocation!');
|
4240 |
+
} return it;
|
4241 |
+
};
|
4242 |
+
|
4243 |
+
/***/ },
|
4244 |
+
/* 198 */
|
4245 |
+
/***/ function(module, exports, __webpack_require__) {
|
4246 |
+
|
4247 |
+
var ctx = __webpack_require__(18)
|
4248 |
+
, call = __webpack_require__(153)
|
4249 |
+
, isArrayIter = __webpack_require__(154)
|
4250 |
+
, anObject = __webpack_require__(10)
|
4251 |
+
, toLength = __webpack_require__(35)
|
4252 |
+
, getIterFn = __webpack_require__(156)
|
4253 |
+
, BREAK = {}
|
4254 |
+
, RETURN = {};
|
4255 |
+
var exports = module.exports = function(iterable, entries, fn, that, ITERATOR){
|
4256 |
+
var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)
|
4257 |
+
, f = ctx(fn, that, entries ? 2 : 1)
|
4258 |
+
, index = 0
|
4259 |
+
, length, step, iterator, result;
|
4260 |
+
if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
|
4261 |
+
// fast case for arrays with default iterator
|
4262 |
+
if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
|
4263 |
+
result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
|
4264 |
+
if(result === BREAK || result === RETURN)return result;
|
4265 |
+
} else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
|
4266 |
+
result = call(iterator, f, step.value, entries);
|
4267 |
+
if(result === BREAK || result === RETURN)return result;
|
4268 |
+
}
|
4269 |
+
};
|
4270 |
+
exports.BREAK = BREAK;
|
4271 |
+
exports.RETURN = RETURN;
|
4272 |
+
|
4273 |
+
/***/ },
|
4274 |
+
/* 199 */
|
4275 |
+
/***/ function(module, exports, __webpack_require__) {
|
4276 |
+
|
4277 |
+
// 7.3.20 SpeciesConstructor(O, defaultConstructor)
|
4278 |
+
var anObject = __webpack_require__(10)
|
4279 |
+
, aFunction = __webpack_require__(19)
|
4280 |
+
, SPECIES = __webpack_require__(23)('species');
|
4281 |
+
module.exports = function(O, D){
|
4282 |
+
var C = anObject(O).constructor, S;
|
4283 |
+
return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
|
4284 |
+
};
|
4285 |
+
|
4286 |
+
/***/ },
|
4287 |
+
/* 200 */
|
4288 |
+
/***/ function(module, exports, __webpack_require__) {
|
4289 |
+
|
4290 |
+
var ctx = __webpack_require__(18)
|
4291 |
+
, invoke = __webpack_require__(76)
|
4292 |
+
, html = __webpack_require__(46)
|
4293 |
+
, cel = __webpack_require__(13)
|
4294 |
+
, global = __webpack_require__(2)
|
4295 |
+
, process = global.process
|
4296 |
+
, setTask = global.setImmediate
|
4297 |
+
, clearTask = global.clearImmediate
|
4298 |
+
, MessageChannel = global.MessageChannel
|
4299 |
+
, counter = 0
|
4300 |
+
, queue = {}
|
4301 |
+
, ONREADYSTATECHANGE = 'onreadystatechange'
|
4302 |
+
, defer, channel, port;
|
4303 |
+
var run = function(){
|
4304 |
+
var id = +this;
|
4305 |
+
if(queue.hasOwnProperty(id)){
|
4306 |
+
var fn = queue[id];
|
4307 |
+
delete queue[id];
|
4308 |
+
fn();
|
4309 |
+
}
|
4310 |
+
};
|
4311 |
+
var listener = function(event){
|
4312 |
+
run.call(event.data);
|
4313 |
+
};
|
4314 |
+
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
|
4315 |
+
if(!setTask || !clearTask){
|
4316 |
+
setTask = function setImmediate(fn){
|
4317 |
+
var args = [], i = 1;
|
4318 |
+
while(arguments.length > i)args.push(arguments[i++]);
|
4319 |
+
queue[++counter] = function(){
|
4320 |
+
invoke(typeof fn == 'function' ? fn : Function(fn), args);
|
4321 |
+
};
|
4322 |
+
defer(counter);
|
4323 |
+
return counter;
|
4324 |
+
};
|
4325 |
+
clearTask = function clearImmediate(id){
|
4326 |
+
delete queue[id];
|
4327 |
+
};
|
4328 |
+
// Node.js 0.8-
|
4329 |
+
if(__webpack_require__(32)(process) == 'process'){
|
4330 |
+
defer = function(id){
|
4331 |
+
process.nextTick(ctx(run, id, 1));
|
4332 |
+
};
|
4333 |
+
// Browsers with MessageChannel, includes WebWorkers
|
4334 |
+
} else if(MessageChannel){
|
4335 |
+
channel = new MessageChannel;
|
4336 |
+
port = channel.port2;
|
4337 |
+
channel.port1.onmessage = listener;
|
4338 |
+
defer = ctx(port.postMessage, port, 1);
|
4339 |
+
// Browsers with postMessage, skip WebWorkers
|
4340 |
+
// IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
|
4341 |
+
} else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){
|
4342 |
+
defer = function(id){
|
4343 |
+
global.postMessage(id + '', '*');
|
4344 |
+
};
|
4345 |
+
global.addEventListener('message', listener, false);
|
4346 |
+
// IE8-
|
4347 |
+
} else if(ONREADYSTATECHANGE in cel('script')){
|
4348 |
+
defer = function(id){
|
4349 |
+
html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){
|
4350 |
+
html.removeChild(this);
|
4351 |
+
run.call(id);
|
4352 |
+
};
|
4353 |
+
};
|
4354 |
+
// Rest old browsers
|
4355 |
+
} else {
|
4356 |
+
defer = function(id){
|
4357 |
+
setTimeout(ctx(run, id, 1), 0);
|
4358 |
+
};
|
4359 |
+
}
|
4360 |
+
}
|
4361 |
+
module.exports = {
|
4362 |
+
set: setTask,
|
4363 |
+
clear: clearTask
|
4364 |
+
};
|
4365 |
+
|
4366 |
+
/***/ },
|
4367 |
+
/* 201 */
|
4368 |
+
/***/ function(module, exports, __webpack_require__) {
|
4369 |
+
|
4370 |
+
var global = __webpack_require__(2)
|
4371 |
+
, macrotask = __webpack_require__(200).set
|
4372 |
+
, Observer = global.MutationObserver || global.WebKitMutationObserver
|
4373 |
+
, process = global.process
|
4374 |
+
, Promise = global.Promise
|
4375 |
+
, isNode = __webpack_require__(32)(process) == 'process';
|
4376 |
+
|
4377 |
+
module.exports = function(){
|
4378 |
+
var head, last, notify;
|
4379 |
+
|
4380 |
+
var flush = function(){
|
4381 |
+
var parent, fn;
|
4382 |
+
if(isNode && (parent = process.domain))parent.exit();
|
4383 |
+
while(head){
|
4384 |
+
fn = head.fn;
|
4385 |
+
head = head.next;
|
4386 |
+
try {
|
4387 |
+
fn();
|
4388 |
+
} catch(e){
|
4389 |
+
if(head)notify();
|
4390 |
+
else last = undefined;
|
4391 |
+
throw e;
|
4392 |
+
}
|
4393 |
+
} last = undefined;
|
4394 |
+
if(parent)parent.enter();
|
4395 |
+
};
|
4396 |
+
|
4397 |
+
// Node.js
|
4398 |
+
if(isNode){
|
4399 |
+
notify = function(){
|
4400 |
+
process.nextTick(flush);
|
4401 |
+
};
|
4402 |
+
// browsers with MutationObserver
|
4403 |
+
} else if(Observer){
|
4404 |
+
var toggle = true
|
4405 |
+
, node = document.createTextNode('');
|
4406 |
+
new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new
|
4407 |
+
notify = function(){
|
4408 |
+
node.data = toggle = !toggle;
|
4409 |
+
};
|
4410 |
+
// environments with maybe non-completely correct, but existent Promise
|
4411 |
+
} else if(Promise && Promise.resolve){
|
4412 |
+
var promise = Promise.resolve();
|
4413 |
+
notify = function(){
|
4414 |
+
promise.then(flush);
|
4415 |
+
};
|
4416 |
+
// for other environments - macrotask based on:
|
4417 |
+
// - setImmediate
|
4418 |
+
// - MessageChannel
|
4419 |
+
// - window.postMessag
|
4420 |
+
// - onreadystatechange
|
4421 |
+
// - setTimeout
|
4422 |
+
} else {
|
4423 |
+
notify = function(){
|
4424 |
+
// strange IE + webpack dev server bug - use .call(global)
|
4425 |
+
macrotask.call(global, flush);
|
4426 |
+
};
|
4427 |
+
}
|
4428 |
+
|
4429 |
+
return function(fn){
|
4430 |
+
var task = {fn: fn, next: undefined};
|
4431 |
+
if(last)last.next = task;
|
4432 |
+
if(!head){
|
4433 |
+
head = task;
|
4434 |
+
notify();
|
4435 |
+
} last = task;
|
4436 |
+
};
|
4437 |
+
};
|
4438 |
+
|
4439 |
+
/***/ },
|
4440 |
+
/* 202 */
|
4441 |
+
/***/ function(module, exports, __webpack_require__) {
|
4442 |
+
|
4443 |
+
var redefine = __webpack_require__(16);
|
4444 |
+
module.exports = function(target, src, safe){
|
4445 |
+
for(var key in src)redefine(target, key, src[key], safe);
|
4446 |
+
return target;
|
4447 |
+
};
|
4448 |
+
|
4449 |
+
/***/ },
|
4450 |
+
/* 203 */
|
4451 |
+
/***/ function(module, exports, __webpack_require__) {
|
4452 |
+
|
4453 |
+
'use strict';
|
4454 |
+
var strong = __webpack_require__(204);
|
4455 |
+
|
4456 |
+
// 23.1 Map Objects
|
4457 |
+
module.exports = __webpack_require__(205)('Map', function(get){
|
4458 |
+
return function Map(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
|
4459 |
+
}, {
|
4460 |
+
// 23.1.3.6 Map.prototype.get(key)
|
4461 |
+
get: function get(key){
|
4462 |
+
var entry = strong.getEntry(this, key);
|
4463 |
+
return entry && entry.v;
|
4464 |
+
},
|
4465 |
+
// 23.1.3.9 Map.prototype.set(key, value)
|
4466 |
+
set: function set(key, value){
|
4467 |
+
return strong.def(this, key === 0 ? 0 : key, value);
|
4468 |
+
}
|
4469 |
+
}, strong, true);
|
4470 |
+
|
4471 |
+
/***/ },
|
4472 |
+
/* 204 */
|
4473 |
+
/***/ function(module, exports, __webpack_require__) {
|
4474 |
+
|
4475 |
+
'use strict';
|
4476 |
+
var dP = __webpack_require__(9).f
|
4477 |
+
, create = __webpack_require__(44)
|
4478 |
+
, redefineAll = __webpack_require__(202)
|
4479 |
+
, ctx = __webpack_require__(18)
|
4480 |
+
, anInstance = __webpack_require__(197)
|
4481 |
+
, defined = __webpack_require__(33)
|
4482 |
+
, forOf = __webpack_require__(198)
|
4483 |
+
, $iterDefine = __webpack_require__(134)
|
4484 |
+
, step = __webpack_require__(184)
|
4485 |
+
, setSpecies = __webpack_require__(186)
|
4486 |
+
, DESCRIPTORS = __webpack_require__(4)
|
4487 |
+
, fastKey = __webpack_require__(20).fastKey
|
4488 |
+
, SIZE = DESCRIPTORS ? '_s' : 'size';
|
4489 |
+
|
4490 |
+
var getEntry = function(that, key){
|
4491 |
+
// fast case
|
4492 |
+
var index = fastKey(key), entry;
|
4493 |
+
if(index !== 'F')return that._i[index];
|
4494 |
+
// frozen object case
|
4495 |
+
for(entry = that._f; entry; entry = entry.n){
|
4496 |
+
if(entry.k == key)return entry;
|
4497 |
+
}
|
4498 |
+
};
|
4499 |
+
|
4500 |
+
module.exports = {
|
4501 |
+
getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
|
4502 |
+
var C = wrapper(function(that, iterable){
|
4503 |
+
anInstance(that, C, NAME, '_i');
|
4504 |
+
that._i = create(null); // index
|
4505 |
+
that._f = undefined; // first entry
|
4506 |
+
that._l = undefined; // last entry
|
4507 |
+
that[SIZE] = 0; // size
|
4508 |
+
if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
|
4509 |
+
});
|
4510 |
+
redefineAll(C.prototype, {
|
4511 |
+
// 23.1.3.1 Map.prototype.clear()
|
4512 |
+
// 23.2.3.2 Set.prototype.clear()
|
4513 |
+
clear: function clear(){
|
4514 |
+
for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){
|
4515 |
+
entry.r = true;
|
4516 |
+
if(entry.p)entry.p = entry.p.n = undefined;
|
4517 |
+
delete data[entry.i];
|
4518 |
+
}
|
4519 |
+
that._f = that._l = undefined;
|
4520 |
+
that[SIZE] = 0;
|
4521 |
+
},
|
4522 |
+
// 23.1.3.3 Map.prototype.delete(key)
|
4523 |
+
// 23.2.3.4 Set.prototype.delete(value)
|
4524 |
+
'delete': function(key){
|
4525 |
+
var that = this
|
4526 |
+
, entry = getEntry(that, key);
|
4527 |
+
if(entry){
|
4528 |
+
var next = entry.n
|
4529 |
+
, prev = entry.p;
|
4530 |
+
delete that._i[entry.i];
|
4531 |
+
entry.r = true;
|
4532 |
+
if(prev)prev.n = next;
|
4533 |
+
if(next)next.p = prev;
|
4534 |
+
if(that._f == entry)that._f = next;
|
4535 |
+
if(that._l == entry)that._l = prev;
|
4536 |
+
that[SIZE]--;
|
4537 |
+
} return !!entry;
|
4538 |
+
},
|
4539 |
+
// 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
|
4540 |
+
// 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
|
4541 |
+
forEach: function forEach(callbackfn /*, that = undefined */){
|
4542 |
+
anInstance(this, C, 'forEach');
|
4543 |
+
var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3)
|
4544 |
+
, entry;
|
4545 |
+
while(entry = entry ? entry.n : this._f){
|
4546 |
+
f(entry.v, entry.k, this);
|
4547 |
+
// revert to the last existing entry
|
4548 |
+
while(entry && entry.r)entry = entry.p;
|
4549 |
+
}
|
4550 |
+
},
|
4551 |
+
// 23.1.3.7 Map.prototype.has(key)
|
4552 |
+
// 23.2.3.7 Set.prototype.has(value)
|
4553 |
+
has: function has(key){
|
4554 |
+
return !!getEntry(this, key);
|
4555 |
+
}
|
4556 |
+
});
|
4557 |
+
if(DESCRIPTORS)dP(C.prototype, 'size', {
|
4558 |
+
get: function(){
|
4559 |
+
return defined(this[SIZE]);
|
4560 |
+
}
|
4561 |
+
});
|
4562 |
+
return C;
|
4563 |
+
},
|
4564 |
+
def: function(that, key, value){
|
4565 |
+
var entry = getEntry(that, key)
|
4566 |
+
, prev, index;
|
4567 |
+
// change existing entry
|
4568 |
+
if(entry){
|
4569 |
+
entry.v = value;
|
4570 |
+
// create new entry
|
4571 |
+
} else {
|
4572 |
+
that._l = entry = {
|
4573 |
+
i: index = fastKey(key, true), // <- index
|
4574 |
+
k: key, // <- key
|
4575 |
+
v: value, // <- value
|
4576 |
+
p: prev = that._l, // <- previous entry
|
4577 |
+
n: undefined, // <- next entry
|
4578 |
+
r: false // <- removed
|
4579 |
+
};
|
4580 |
+
if(!that._f)that._f = entry;
|
4581 |
+
if(prev)prev.n = entry;
|
4582 |
+
that[SIZE]++;
|
4583 |
+
// add to index
|
4584 |
+
if(index !== 'F')that._i[index] = entry;
|
4585 |
+
} return that;
|
4586 |
+
},
|
4587 |
+
getEntry: getEntry,
|
4588 |
+
setStrong: function(C, NAME, IS_MAP){
|
4589 |
+
// add .keys, .values, .entries, [@@iterator]
|
4590 |
+
// 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
|
4591 |
+
$iterDefine(C, NAME, function(iterated, kind){
|
4592 |
+
this._t = iterated; // target
|
4593 |
+
this._k = kind; // kind
|
4594 |
+
this._l = undefined; // previous
|
4595 |
+
}, function(){
|
4596 |
+
var that = this
|
4597 |
+
, kind = that._k
|
4598 |
+
, entry = that._l;
|
4599 |
+
// revert to the last existing entry
|
4600 |
+
while(entry && entry.r)entry = entry.p;
|
4601 |
+
// get next entry
|
4602 |
+
if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){
|
4603 |
+
// or finish the iteration
|
4604 |
+
that._t = undefined;
|
4605 |
+
return step(1);
|
4606 |
+
}
|
4607 |
+
// return step by kind
|
4608 |
+
if(kind == 'keys' )return step(0, entry.k);
|
4609 |
+
if(kind == 'values')return step(0, entry.v);
|
4610 |
+
return step(0, [entry.k, entry.v]);
|
4611 |
+
}, IS_MAP ? 'entries' : 'values' , !IS_MAP, true);
|
4612 |
+
|
4613 |
+
// add [@@species], 23.1.2.2, 23.2.2.2
|
4614 |
+
setSpecies(NAME);
|
4615 |
+
}
|
4616 |
+
};
|
4617 |
+
|
4618 |
+
/***/ },
|
4619 |
+
/* 205 */
|
4620 |
+
/***/ function(module, exports, __webpack_require__) {
|
4621 |
+
|
4622 |
+
'use strict';
|
4623 |
+
var global = __webpack_require__(2)
|
4624 |
+
, $export = __webpack_require__(6)
|
4625 |
+
, redefine = __webpack_require__(16)
|
4626 |
+
, redefineAll = __webpack_require__(202)
|
4627 |
+
, meta = __webpack_require__(20)
|
4628 |
+
, forOf = __webpack_require__(198)
|
4629 |
+
, anInstance = __webpack_require__(197)
|
4630 |
+
, isObject = __webpack_require__(11)
|
4631 |
+
, fails = __webpack_require__(5)
|
4632 |
+
, $iterDetect = __webpack_require__(157)
|
4633 |
+
, setToStringTag = __webpack_require__(22)
|
4634 |
+
, inheritIfRequired = __webpack_require__(80);
|
4635 |
+
|
4636 |
+
module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){
|
4637 |
+
var Base = global[NAME]
|
4638 |
+
, C = Base
|
4639 |
+
, ADDER = IS_MAP ? 'set' : 'add'
|
4640 |
+
, proto = C && C.prototype
|
4641 |
+
, O = {};
|
4642 |
+
var fixMethod = function(KEY){
|
4643 |
+
var fn = proto[KEY];
|
4644 |
+
redefine(proto, KEY,
|
4645 |
+
KEY == 'delete' ? function(a){
|
4646 |
+
return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
|
4647 |
+
} : KEY == 'has' ? function has(a){
|
4648 |
+
return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
|
4649 |
+
} : KEY == 'get' ? function get(a){
|
4650 |
+
return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
|
4651 |
+
} : KEY == 'add' ? function add(a){ fn.call(this, a === 0 ? 0 : a); return this; }
|
4652 |
+
: function set(a, b){ fn.call(this, a === 0 ? 0 : a, b); return this; }
|
4653 |
+
);
|
4654 |
+
};
|
4655 |
+
if(typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){
|
4656 |
+
new C().entries().next();
|
4657 |
+
}))){
|
4658 |
+
// create collection constructor
|
4659 |
+
C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
|
4660 |
+
redefineAll(C.prototype, methods);
|
4661 |
+
meta.NEED = true;
|
4662 |
+
} else {
|
4663 |
+
var instance = new C
|
4664 |
+
// early implementations not supports chaining
|
4665 |
+
, HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance
|
4666 |
+
// V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
|
4667 |
+
, THROWS_ON_PRIMITIVES = fails(function(){ instance.has(1); })
|
4668 |
+
// most early implementations doesn't supports iterables, most modern - not close it correctly
|
4669 |
+
, ACCEPT_ITERABLES = $iterDetect(function(iter){ new C(iter); }) // eslint-disable-line no-new
|
4670 |
+
// for early implementations -0 and +0 not the same
|
4671 |
+
, BUGGY_ZERO = !IS_WEAK && fails(function(){
|
4672 |
+
// V8 ~ Chromium 42- fails only with 5+ elements
|
4673 |
+
var $instance = new C()
|
4674 |
+
, index = 5;
|
4675 |
+
while(index--)$instance[ADDER](index, index);
|
4676 |
+
return !$instance.has(-0);
|
4677 |
+
});
|
4678 |
+
if(!ACCEPT_ITERABLES){
|
4679 |
+
C = wrapper(function(target, iterable){
|
4680 |
+
anInstance(target, C, NAME);
|
4681 |
+
var that = inheritIfRequired(new Base, target, C);
|
4682 |
+
if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
|
4683 |
+
return that;
|
4684 |
+
});
|
4685 |
+
C.prototype = proto;
|
4686 |
+
proto.constructor = C;
|
4687 |
+
}
|
4688 |
+
if(THROWS_ON_PRIMITIVES || BUGGY_ZERO){
|
4689 |
+
fixMethod('delete');
|
4690 |
+
fixMethod('has');
|
4691 |
+
IS_MAP && fixMethod('get');
|
4692 |
+
}
|
4693 |
+
if(BUGGY_ZERO || HASNT_CHAINING)fixMethod(ADDER);
|
4694 |
+
// weak collections should not contains .clear method
|
4695 |
+
if(IS_WEAK && proto.clear)delete proto.clear;
|
4696 |
+
}
|
4697 |
+
|
4698 |
+
setToStringTag(C, NAME);
|
4699 |
+
|
4700 |
+
O[NAME] = C;
|
4701 |
+
$export($export.G + $export.W + $export.F * (C != Base), O);
|
4702 |
+
|
4703 |
+
if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP);
|
4704 |
+
|
4705 |
+
return C;
|
4706 |
+
};
|
4707 |
+
|
4708 |
+
/***/ },
|
4709 |
+
/* 206 */
|
4710 |
+
/***/ function(module, exports, __webpack_require__) {
|
4711 |
+
|
4712 |
+
'use strict';
|
4713 |
+
var strong = __webpack_require__(204);
|
4714 |
+
|
4715 |
+
// 23.2 Set Objects
|
4716 |
+
module.exports = __webpack_require__(205)('Set', function(get){
|
4717 |
+
return function Set(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
|
4718 |
+
}, {
|
4719 |
+
// 23.2.3.1 Set.prototype.add(value)
|
4720 |
+
add: function add(value){
|
4721 |
+
return strong.def(this, value = value === 0 ? 0 : value, value);
|
4722 |
+
}
|
4723 |
+
}, strong);
|
4724 |
+
|
4725 |
+
/***/ },
|
4726 |
+
/* 207 */
|
4727 |
+
/***/ function(module, exports, __webpack_require__) {
|
4728 |
+
|
4729 |
+
'use strict';
|
4730 |
+
var each = __webpack_require__(164)(0)
|
4731 |
+
, redefine = __webpack_require__(16)
|
4732 |
+
, meta = __webpack_require__(20)
|
4733 |
+
, assign = __webpack_require__(67)
|
4734 |
+
, weak = __webpack_require__(208)
|
4735 |
+
, isObject = __webpack_require__(11)
|
4736 |
+
, getWeak = meta.getWeak
|
4737 |
+
, isExtensible = Object.isExtensible
|
4738 |
+
, uncaughtFrozenStore = weak.ufstore
|
4739 |
+
, tmp = {}
|
4740 |
+
, InternalMap;
|
4741 |
+
|
4742 |
+
var wrapper = function(get){
|
4743 |
+
return function WeakMap(){
|
4744 |
+
return get(this, arguments.length > 0 ? arguments[0] : undefined);
|
4745 |
+
};
|
4746 |
+
};
|
4747 |
+
|
4748 |
+
var methods = {
|
4749 |
+
// 23.3.3.3 WeakMap.prototype.get(key)
|
4750 |
+
get: function get(key){
|
4751 |
+
if(isObject(key)){
|
4752 |
+
var data = getWeak(key);
|
4753 |
+
if(data === true)return uncaughtFrozenStore(this).get(key);
|
4754 |
+
return data ? data[this._i] : undefined;
|
4755 |
+
}
|
4756 |
+
},
|
4757 |
+
// 23.3.3.5 WeakMap.prototype.set(key, value)
|
4758 |
+
set: function set(key, value){
|
4759 |
+
return weak.def(this, key, value);
|
4760 |
+
}
|
4761 |
+
};
|
4762 |
+
|
4763 |
+
// 23.3 WeakMap Objects
|
4764 |
+
var $WeakMap = module.exports = __webpack_require__(205)('WeakMap', wrapper, methods, weak, true, true);
|
4765 |
+
|
4766 |
+
// IE11 WeakMap frozen keys fix
|
4767 |
+
if(new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7){
|
4768 |
+
InternalMap = weak.getConstructor(wrapper);
|
4769 |
+
assign(InternalMap.prototype, methods);
|
4770 |
+
meta.NEED = true;
|
4771 |
+
each(['delete', 'has', 'get', 'set'], function(key){
|
4772 |
+
var proto = $WeakMap.prototype
|
4773 |
+
, method = proto[key];
|
4774 |
+
redefine(proto, key, function(a, b){
|
4775 |
+
// store frozen objects on internal weakmap shim
|
4776 |
+
if(isObject(a) && !isExtensible(a)){
|
4777 |
+
if(!this._f)this._f = new InternalMap;
|
4778 |
+
var result = this._f[key](a, b);
|
4779 |
+
return key == 'set' ? this : result;
|
4780 |
+
// store all the rest on native weakmap
|
4781 |
+
} return method.call(this, a, b);
|
4782 |
+
});
|
4783 |
+
});
|
4784 |
+
}
|
4785 |
+
|
4786 |
+
/***/ },
|
4787 |
+
/* 208 */
|
4788 |
+
/***/ function(module, exports, __webpack_require__) {
|
4789 |
+
|
4790 |
+
'use strict';
|
4791 |
+
var redefineAll = __webpack_require__(202)
|
4792 |
+
, getWeak = __webpack_require__(20).getWeak
|
4793 |
+
, anObject = __webpack_require__(10)
|
4794 |
+
, isObject = __webpack_require__(11)
|
4795 |
+
, anInstance = __webpack_require__(197)
|
4796 |
+
, forOf = __webpack_require__(198)
|
4797 |
+
, createArrayMethod = __webpack_require__(164)
|
4798 |
+
, $has = __webpack_require__(3)
|
4799 |
+
, arrayFind = createArrayMethod(5)
|
4800 |
+
, arrayFindIndex = createArrayMethod(6)
|
4801 |
+
, id = 0;
|
4802 |
+
|
4803 |
+
// fallback for uncaught frozen keys
|
4804 |
+
var uncaughtFrozenStore = function(that){
|
4805 |
+
return that._l || (that._l = new UncaughtFrozenStore);
|
4806 |
+
};
|
4807 |
+
var UncaughtFrozenStore = function(){
|
4808 |
+
this.a = [];
|
4809 |
+
};
|
4810 |
+
var findUncaughtFrozen = function(store, key){
|
4811 |
+
return arrayFind(store.a, function(it){
|
4812 |
+
return it[0] === key;
|
4813 |
+
});
|
4814 |
+
};
|
4815 |
+
UncaughtFrozenStore.prototype = {
|
4816 |
+
get: function(key){
|
4817 |
+
var entry = findUncaughtFrozen(this, key);
|
4818 |
+
if(entry)return entry[1];
|
4819 |
+
},
|
4820 |
+
has: function(key){
|
4821 |
+
return !!findUncaughtFrozen(this, key);
|
4822 |
+
},
|
4823 |
+
set: function(key, value){
|
4824 |
+
var entry = findUncaughtFrozen(this, key);
|
4825 |
+
if(entry)entry[1] = value;
|
4826 |
+
else this.a.push([key, value]);
|
4827 |
+
},
|
4828 |
+
'delete': function(key){
|
4829 |
+
var index = arrayFindIndex(this.a, function(it){
|
4830 |
+
return it[0] === key;
|
4831 |
+
});
|
4832 |
+
if(~index)this.a.splice(index, 1);
|
4833 |
+
return !!~index;
|
4834 |
+
}
|
4835 |
+
};
|
4836 |
+
|
4837 |
+
module.exports = {
|
4838 |
+
getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
|
4839 |
+
var C = wrapper(function(that, iterable){
|
4840 |
+
anInstance(that, C, NAME, '_i');
|
4841 |
+
that._i = id++; // collection id
|
4842 |
+
that._l = undefined; // leak store for uncaught frozen objects
|
4843 |
+
if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
|
4844 |
+
});
|
4845 |
+
redefineAll(C.prototype, {
|
4846 |
+
// 23.3.3.2 WeakMap.prototype.delete(key)
|
4847 |
+
// 23.4.3.3 WeakSet.prototype.delete(value)
|
4848 |
+
'delete': function(key){
|
4849 |
+
if(!isObject(key))return false;
|
4850 |
+
var data = getWeak(key);
|
4851 |
+
if(data === true)return uncaughtFrozenStore(this)['delete'](key);
|
4852 |
+
return data && $has(data, this._i) && delete data[this._i];
|
4853 |
+
},
|
4854 |
+
// 23.3.3.4 WeakMap.prototype.has(key)
|
4855 |
+
// 23.4.3.4 WeakSet.prototype.has(value)
|
4856 |
+
has: function has(key){
|
4857 |
+
if(!isObject(key))return false;
|
4858 |
+
var data = getWeak(key);
|
4859 |
+
if(data === true)return uncaughtFrozenStore(this).has(key);
|
4860 |
+
return data && $has(data, this._i);
|
4861 |
+
}
|
4862 |
+
});
|
4863 |
+
return C;
|
4864 |
+
},
|
4865 |
+
def: function(that, key, value){
|
4866 |
+
var data = getWeak(anObject(key), true);
|
4867 |
+
if(data === true)uncaughtFrozenStore(that).set(key, value);
|
4868 |
+
else data[that._i] = value;
|
4869 |
+
return that;
|
4870 |
+
},
|
4871 |
+
ufstore: uncaughtFrozenStore
|
4872 |
+
};
|
4873 |
+
|
4874 |
+
/***/ },
|
4875 |
+
/* 209 */
|
4876 |
+
/***/ function(module, exports, __webpack_require__) {
|
4877 |
+
|
4878 |
+
'use strict';
|
4879 |
+
var weak = __webpack_require__(208);
|
4880 |
+
|
4881 |
+
// 23.4 WeakSet Objects
|
4882 |
+
__webpack_require__(205)('WeakSet', function(get){
|
4883 |
+
return function WeakSet(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
|
4884 |
+
}, {
|
4885 |
+
// 23.4.3.1 WeakSet.prototype.add(value)
|
4886 |
+
add: function add(value){
|
4887 |
+
return weak.def(this, value, true);
|
4888 |
+
}
|
4889 |
+
}, weak, false, true);
|
4890 |
+
|
4891 |
+
/***/ },
|
4892 |
+
/* 210 */
|
4893 |
+
/***/ function(module, exports, __webpack_require__) {
|
4894 |
+
|
4895 |
+
// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
|
4896 |
+
var $export = __webpack_require__(6)
|
4897 |
+
, aFunction = __webpack_require__(19)
|
4898 |
+
, anObject = __webpack_require__(10)
|
4899 |
+
, rApply = (__webpack_require__(2).Reflect || {}).apply
|
4900 |
+
, fApply = Function.apply;
|
4901 |
+
// MS Edge argumentsList argument is optional
|
4902 |
+
$export($export.S + $export.F * !__webpack_require__(5)(function(){
|
4903 |
+
rApply(function(){});
|
4904 |
+
}), 'Reflect', {
|
4905 |
+
apply: function apply(target, thisArgument, argumentsList){
|
4906 |
+
var T = aFunction(target)
|
4907 |
+
, L = anObject(argumentsList);
|
4908 |
+
return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);
|
4909 |
+
}
|
4910 |
+
});
|
4911 |
+
|
4912 |
+
/***/ },
|
4913 |
+
/* 211 */
|
4914 |
+
/***/ function(module, exports, __webpack_require__) {
|
4915 |
+
|
4916 |
+
// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
|
4917 |
+
var $export = __webpack_require__(6)
|
4918 |
+
, create = __webpack_require__(44)
|
4919 |
+
, aFunction = __webpack_require__(19)
|
4920 |
+
, anObject = __webpack_require__(10)
|
4921 |
+
, isObject = __webpack_require__(11)
|
4922 |
+
, fails = __webpack_require__(5)
|
4923 |
+
, bind = __webpack_require__(75)
|
4924 |
+
, rConstruct = (__webpack_require__(2).Reflect || {}).construct;
|
4925 |
+
|
4926 |
+
// MS Edge supports only 2 arguments and argumentsList argument is optional
|
4927 |
+
// FF Nightly sets third argument as `new.target`, but does not create `this` from it
|
4928 |
+
var NEW_TARGET_BUG = fails(function(){
|
4929 |
+
function F(){}
|
4930 |
+
return !(rConstruct(function(){}, [], F) instanceof F);
|
4931 |
+
});
|
4932 |
+
var ARGS_BUG = !fails(function(){
|
4933 |
+
rConstruct(function(){});
|
4934 |
+
});
|
4935 |
+
|
4936 |
+
$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
|
4937 |
+
construct: function construct(Target, args /*, newTarget*/){
|
4938 |
+
aFunction(Target);
|
4939 |
+
anObject(args);
|
4940 |
+
var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
|
4941 |
+
if(ARGS_BUG && !NEW_TARGET_BUG)return rConstruct(Target, args, newTarget);
|
4942 |
+
if(Target == newTarget){
|
4943 |
+
// w/o altered newTarget, optimization for 0-4 arguments
|
4944 |
+
switch(args.length){
|
4945 |
+
case 0: return new Target;
|
4946 |
+
case 1: return new Target(args[0]);
|
4947 |
+
case 2: return new Target(args[0], args[1]);
|
4948 |
+
case 3: return new Target(args[0], args[1], args[2]);
|
4949 |
+
case 4: return new Target(args[0], args[1], args[2], args[3]);
|
4950 |
+
}
|
4951 |
+
// w/o altered newTarget, lot of arguments case
|
4952 |
+
var $args = [null];
|
4953 |
+
$args.push.apply($args, args);
|
4954 |
+
return new (bind.apply(Target, $args));
|
4955 |
+
}
|
4956 |
+
// with altered newTarget, not support built-in constructors
|
4957 |
+
var proto = newTarget.prototype
|
4958 |
+
, instance = create(isObject(proto) ? proto : Object.prototype)
|
4959 |
+
, result = Function.apply.call(Target, instance, args);
|
4960 |
+
return isObject(result) ? result : instance;
|
4961 |
+
}
|
4962 |
+
});
|
4963 |
+
|
4964 |
+
/***/ },
|
4965 |
+
/* 212 */
|
4966 |
+
/***/ function(module, exports, __webpack_require__) {
|
4967 |
+
|
4968 |
+
// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
|
4969 |
+
var dP = __webpack_require__(9)
|
4970 |
+
, $export = __webpack_require__(6)
|
4971 |
+
, anObject = __webpack_require__(10)
|
4972 |
+
, toPrimitive = __webpack_require__(14);
|
4973 |
+
|
4974 |
+
// MS Edge has broken Reflect.defineProperty - throwing instead of returning false
|
4975 |
+
$export($export.S + $export.F * __webpack_require__(5)(function(){
|
4976 |
+
Reflect.defineProperty(dP.f({}, 1, {value: 1}), 1, {value: 2});
|
4977 |
+
}), 'Reflect', {
|
4978 |
+
defineProperty: function defineProperty(target, propertyKey, attributes){
|
4979 |
+
anObject(target);
|
4980 |
+
propertyKey = toPrimitive(propertyKey, true);
|
4981 |
+
anObject(attributes);
|
4982 |
+
try {
|
4983 |
+
dP.f(target, propertyKey, attributes);
|
4984 |
+
return true;
|
4985 |
+
} catch(e){
|
4986 |
+
return false;
|
4987 |
+
}
|
4988 |
+
}
|
4989 |
+
});
|
4990 |
+
|
4991 |
+
/***/ },
|
4992 |
+
/* 213 */
|
4993 |
+
/***/ function(module, exports, __webpack_require__) {
|
4994 |
+
|
4995 |
+
// 26.1.4 Reflect.deleteProperty(target, propertyKey)
|
4996 |
+
var $export = __webpack_require__(6)
|
4997 |
+
, gOPD = __webpack_require__(49).f
|
4998 |
+
, anObject = __webpack_require__(10);
|
4999 |
+
|
5000 |
+
$export($export.S, 'Reflect', {
|
5001 |
+
deleteProperty: function deleteProperty(target, propertyKey){
|
5002 |
+
var desc = gOPD(anObject(target), propertyKey);
|
5003 |
+
return desc && !desc.configurable ? false : delete target[propertyKey];
|
5004 |
+
}
|
5005 |
+
});
|
5006 |
+
|
5007 |
+
/***/ },
|
5008 |
+
/* 214 */
|
5009 |
+
/***/ function(module, exports, __webpack_require__) {
|
5010 |
+
|
5011 |
+
'use strict';
|
5012 |
+
// 26.1.5 Reflect.enumerate(target)
|
5013 |
+
var $export = __webpack_require__(6)
|
5014 |
+
, anObject = __webpack_require__(10);
|
5015 |
+
var Enumerate = function(iterated){
|
5016 |
+
this._t = anObject(iterated); // target
|
5017 |
+
this._i = 0; // next index
|
5018 |
+
var keys = this._k = [] // keys
|
5019 |
+
, key;
|
5020 |
+
for(key in iterated)keys.push(key);
|
5021 |
+
};
|
5022 |
+
__webpack_require__(136)(Enumerate, 'Object', function(){
|
5023 |
+
var that = this
|
5024 |
+
, keys = that._k
|
5025 |
+
, key;
|
5026 |
+
do {
|
5027 |
+
if(that._i >= keys.length)return {value: undefined, done: true};
|
5028 |
+
} while(!((key = keys[that._i++]) in that._t));
|
5029 |
+
return {value: key, done: false};
|
5030 |
+
});
|
5031 |
+
|
5032 |
+
$export($export.S, 'Reflect', {
|
5033 |
+
enumerate: function enumerate(target){
|
5034 |
+
return new Enumerate(target);
|
5035 |
+
}
|
5036 |
+
});
|
5037 |
+
|
5038 |
+
/***/ },
|
5039 |
+
/* 215 */
|
5040 |
+
/***/ function(module, exports, __webpack_require__) {
|
5041 |
+
|
5042 |
+
// 26.1.6 Reflect.get(target, propertyKey [, receiver])
|
5043 |
+
var gOPD = __webpack_require__(49)
|
5044 |
+
, getPrototypeOf = __webpack_require__(57)
|
5045 |
+
, has = __webpack_require__(3)
|
5046 |
+
, $export = __webpack_require__(6)
|
5047 |
+
, isObject = __webpack_require__(11)
|
5048 |
+
, anObject = __webpack_require__(10);
|
5049 |
+
|
5050 |
+
function get(target, propertyKey/*, receiver*/){
|
5051 |
+
var receiver = arguments.length < 3 ? target : arguments[2]
|
5052 |
+
, desc, proto;
|
5053 |
+
if(anObject(target) === receiver)return target[propertyKey];
|
5054 |
+
if(desc = gOPD.f(target, propertyKey))return has(desc, 'value')
|
5055 |
+
? desc.value
|
5056 |
+
: desc.get !== undefined
|
5057 |
+
? desc.get.call(receiver)
|
5058 |
+
: undefined;
|
5059 |
+
if(isObject(proto = getPrototypeOf(target)))return get(proto, propertyKey, receiver);
|
5060 |
+
}
|
5061 |
+
|
5062 |
+
$export($export.S, 'Reflect', {get: get});
|
5063 |
+
|
5064 |
+
/***/ },
|
5065 |
+
/* 216 */
|
5066 |
+
/***/ function(module, exports, __webpack_require__) {
|
5067 |
+
|
5068 |
+
// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
|
5069 |
+
var gOPD = __webpack_require__(49)
|
5070 |
+
, $export = __webpack_require__(6)
|
5071 |
+
, anObject = __webpack_require__(10);
|
5072 |
+
|
5073 |
+
$export($export.S, 'Reflect', {
|
5074 |
+
getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey){
|
5075 |
+
return gOPD.f(anObject(target), propertyKey);
|
5076 |
+
}
|
5077 |
+
});
|
5078 |
+
|
5079 |
+
/***/ },
|
5080 |
+
/* 217 */
|
5081 |
+
/***/ function(module, exports, __webpack_require__) {
|
5082 |
+
|
5083 |
+
// 26.1.8 Reflect.getPrototypeOf(target)
|
5084 |
+
var $export = __webpack_require__(6)
|
5085 |
+
, getProto = __webpack_require__(57)
|
5086 |
+
, anObject = __webpack_require__(10);
|
5087 |
+
|
5088 |
+
$export($export.S, 'Reflect', {
|
5089 |
+
getPrototypeOf: function getPrototypeOf(target){
|
5090 |
+
return getProto(anObject(target));
|
5091 |
+
}
|
5092 |
+
});
|
5093 |
+
|
5094 |
+
/***/ },
|
5095 |
+
/* 218 */
|
5096 |
+
/***/ function(module, exports, __webpack_require__) {
|
5097 |
+
|
5098 |
+
// 26.1.9 Reflect.has(target, propertyKey)
|
5099 |
+
var $export = __webpack_require__(6);
|
5100 |
+
|
5101 |
+
$export($export.S, 'Reflect', {
|
5102 |
+
has: function has(target, propertyKey){
|
5103 |
+
return propertyKey in target;
|
5104 |
+
}
|
5105 |
+
});
|
5106 |
+
|
5107 |
+
/***/ },
|
5108 |
+
/* 219 */
|
5109 |
+
/***/ function(module, exports, __webpack_require__) {
|
5110 |
+
|
5111 |
+
// 26.1.10 Reflect.isExtensible(target)
|
5112 |
+
var $export = __webpack_require__(6)
|
5113 |
+
, anObject = __webpack_require__(10)
|
5114 |
+
, $isExtensible = Object.isExtensible;
|
5115 |
+
|
5116 |
+
$export($export.S, 'Reflect', {
|
5117 |
+
isExtensible: function isExtensible(target){
|
5118 |
+
anObject(target);
|
5119 |
+
return $isExtensible ? $isExtensible(target) : true;
|
5120 |
+
}
|
5121 |
+
});
|
5122 |
+
|
5123 |
+
/***/ },
|
5124 |
+
/* 220 */
|
5125 |
+
/***/ function(module, exports, __webpack_require__) {
|
5126 |
+
|
5127 |
+
// 26.1.11 Reflect.ownKeys(target)
|
5128 |
+
var $export = __webpack_require__(6);
|
5129 |
+
|
5130 |
+
$export($export.S, 'Reflect', {ownKeys: __webpack_require__(221)});
|
5131 |
+
|
5132 |
+
/***/ },
|
5133 |
+
/* 221 */
|
5134 |
+
/***/ function(module, exports, __webpack_require__) {
|
5135 |
+
|
5136 |
+
// all object keys, includes non-enumerable and symbols
|
5137 |
+
var gOPN = __webpack_require__(48)
|
5138 |
+
, gOPS = __webpack_require__(41)
|
5139 |
+
, anObject = __webpack_require__(10)
|
5140 |
+
, Reflect = __webpack_require__(2).Reflect;
|
5141 |
+
module.exports = Reflect && Reflect.ownKeys || function ownKeys(it){
|
5142 |
+
var keys = gOPN.f(anObject(it))
|
5143 |
+
, getSymbols = gOPS.f;
|
5144 |
+
return getSymbols ? keys.concat(getSymbols(it)) : keys;
|
5145 |
+
};
|
5146 |
+
|
5147 |
+
/***/ },
|
5148 |
+
/* 222 */
|
5149 |
+
/***/ function(module, exports, __webpack_require__) {
|
5150 |
+
|
5151 |
+
// 26.1.12 Reflect.preventExtensions(target)
|
5152 |
+
var $export = __webpack_require__(6)
|
5153 |
+
, anObject = __webpack_require__(10)
|
5154 |
+
, $preventExtensions = Object.preventExtensions;
|
5155 |
+
|
5156 |
+
$export($export.S, 'Reflect', {
|
5157 |
+
preventExtensions: function preventExtensions(target){
|
5158 |
+
anObject(target);
|
5159 |
+
try {
|
5160 |
+
if($preventExtensions)$preventExtensions(target);
|
5161 |
+
return true;
|
5162 |
+
} catch(e){
|
5163 |
+
return false;
|
5164 |
+
}
|
5165 |
+
}
|
5166 |
+
});
|
5167 |
+
|
5168 |
+
/***/ },
|
5169 |
+
/* 223 */
|
5170 |
+
/***/ function(module, exports, __webpack_require__) {
|
5171 |
+
|
5172 |
+
// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
|
5173 |
+
var dP = __webpack_require__(9)
|
5174 |
+
, gOPD = __webpack_require__(49)
|
5175 |
+
, getPrototypeOf = __webpack_require__(57)
|
5176 |
+
, has = __webpack_require__(3)
|
5177 |
+
, $export = __webpack_require__(6)
|
5178 |
+
, createDesc = __webpack_require__(15)
|
5179 |
+
, anObject = __webpack_require__(10)
|
5180 |
+
, isObject = __webpack_require__(11);
|
5181 |
+
|
5182 |
+
function set(target, propertyKey, V/*, receiver*/){
|
5183 |
+
var receiver = arguments.length < 4 ? target : arguments[3]
|
5184 |
+
, ownDesc = gOPD.f(anObject(target), propertyKey)
|
5185 |
+
, existingDescriptor, proto;
|
5186 |
+
if(!ownDesc){
|
5187 |
+
if(isObject(proto = getPrototypeOf(target))){
|
5188 |
+
return set(proto, propertyKey, V, receiver);
|
5189 |
+
}
|
5190 |
+
ownDesc = createDesc(0);
|
5191 |
+
}
|
5192 |
+
if(has(ownDesc, 'value')){
|
5193 |
+
if(ownDesc.writable === false || !isObject(receiver))return false;
|
5194 |
+
existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);
|
5195 |
+
existingDescriptor.value = V;
|
5196 |
+
dP.f(receiver, propertyKey, existingDescriptor);
|
5197 |
+
return true;
|
5198 |
+
}
|
5199 |
+
return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
|
5200 |
+
}
|
5201 |
+
|
5202 |
+
$export($export.S, 'Reflect', {set: set});
|
5203 |
+
|
5204 |
+
/***/ },
|
5205 |
+
/* 224 */
|
5206 |
+
/***/ function(module, exports, __webpack_require__) {
|
5207 |
+
|
5208 |
+
// 26.1.14 Reflect.setPrototypeOf(target, proto)
|
5209 |
+
var $export = __webpack_require__(6)
|
5210 |
+
, setProto = __webpack_require__(71);
|
5211 |
+
|
5212 |
+
if(setProto)$export($export.S, 'Reflect', {
|
5213 |
+
setPrototypeOf: function setPrototypeOf(target, proto){
|
5214 |
+
setProto.check(target, proto);
|
5215 |
+
try {
|
5216 |
+
setProto.set(target, proto);
|
5217 |
+
return true;
|
5218 |
+
} catch(e){
|
5219 |
+
return false;
|
5220 |
+
}
|
5221 |
+
}
|
5222 |
+
});
|
5223 |
+
|
5224 |
+
/***/ },
|
5225 |
+
/* 225 */
|
5226 |
+
/***/ function(module, exports, __webpack_require__) {
|
5227 |
+
|
5228 |
+
// 20.3.3.1 / 15.9.4.4 Date.now()
|
5229 |
+
var $export = __webpack_require__(6);
|
5230 |
+
|
5231 |
+
$export($export.S, 'Date', {now: function(){ return new Date().getTime(); }});
|
5232 |
+
|
5233 |
+
/***/ },
|
5234 |
+
/* 226 */
|
5235 |
+
/***/ function(module, exports, __webpack_require__) {
|
5236 |
+
|
5237 |
+
'use strict';
|
5238 |
+
var $export = __webpack_require__(6)
|
5239 |
+
, toObject = __webpack_require__(56)
|
5240 |
+
, toPrimitive = __webpack_require__(14);
|
5241 |
+
|
5242 |
+
$export($export.P + $export.F * __webpack_require__(5)(function(){
|
5243 |
+
return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({toISOString: function(){ return 1; }}) !== 1;
|
5244 |
+
}), 'Date', {
|
5245 |
+
toJSON: function toJSON(key){
|
5246 |
+
var O = toObject(this)
|
5247 |
+
, pv = toPrimitive(O);
|
5248 |
+
return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
|
5249 |
+
}
|
5250 |
+
});
|
5251 |
+
|
5252 |
+
/***/ },
|
5253 |
+
/* 227 */
|
5254 |
+
/***/ function(module, exports, __webpack_require__) {
|
5255 |
+
|
5256 |
+
'use strict';
|
5257 |
+
// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
|
5258 |
+
var $export = __webpack_require__(6)
|
5259 |
+
, fails = __webpack_require__(5)
|
5260 |
+
, getTime = Date.prototype.getTime;
|
5261 |
+
|
5262 |
+
var lz = function(num){
|
5263 |
+
return num > 9 ? num : '0' + num;
|
5264 |
+
};
|
5265 |
+
|
5266 |
+
// PhantomJS / old WebKit has a broken implementations
|
5267 |
+
$export($export.P + $export.F * (fails(function(){
|
5268 |
+
return new Date(-5e13 - 1).toISOString() != '0385-07-25T07:06:39.999Z';
|
5269 |
+
}) || !fails(function(){
|
5270 |
+
new Date(NaN).toISOString();
|
5271 |
+
})), 'Date', {
|
5272 |
+
toISOString: function toISOString(){
|
5273 |
+
if(!isFinite(getTime.call(this)))throw RangeError('Invalid time value');
|
5274 |
+
var d = this
|
5275 |
+
, y = d.getUTCFullYear()
|
5276 |
+
, m = d.getUTCMilliseconds()
|
5277 |
+
, s = y < 0 ? '-' : y > 9999 ? '+' : '';
|
5278 |
+
return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
|
5279 |
+
'-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
|
5280 |
+
'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
|
5281 |
+
':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
|
5282 |
+
}
|
5283 |
+
});
|
5284 |
+
|
5285 |
+
/***/ },
|
5286 |
+
/* 228 */
|
5287 |
+
/***/ function(module, exports, __webpack_require__) {
|
5288 |
+
|
5289 |
+
var DateProto = Date.prototype
|
5290 |
+
, INVALID_DATE = 'Invalid Date'
|
5291 |
+
, TO_STRING = 'toString'
|
5292 |
+
, $toString = DateProto[TO_STRING]
|
5293 |
+
, getTime = DateProto.getTime;
|
5294 |
+
if(new Date(NaN) + '' != INVALID_DATE){
|
5295 |
+
__webpack_require__(16)(DateProto, TO_STRING, function toString(){
|
5296 |
+
var value = getTime.call(this);
|
5297 |
+
return value === value ? $toString.call(this) : INVALID_DATE;
|
5298 |
+
});
|
5299 |
+
}
|
5300 |
+
|
5301 |
+
/***/ },
|
5302 |
+
/* 229 */
|
5303 |
+
/***/ function(module, exports, __webpack_require__) {
|
5304 |
+
|
5305 |
+
var TO_PRIMITIVE = __webpack_require__(23)('toPrimitive')
|
5306 |
+
, proto = Date.prototype;
|
5307 |
+
|
5308 |
+
if(!(TO_PRIMITIVE in proto))__webpack_require__(8)(proto, TO_PRIMITIVE, __webpack_require__(230));
|
5309 |
+
|
5310 |
+
/***/ },
|
5311 |
+
/* 230 */
|
5312 |
+
/***/ function(module, exports, __webpack_require__) {
|
5313 |
+
|
5314 |
+
'use strict';
|
5315 |
+
var anObject = __webpack_require__(10)
|
5316 |
+
, toPrimitive = __webpack_require__(14)
|
5317 |
+
, NUMBER = 'number';
|
5318 |
+
|
5319 |
+
module.exports = function(hint){
|
5320 |
+
if(hint !== 'string' && hint !== NUMBER && hint !== 'default')throw TypeError('Incorrect hint');
|
5321 |
+
return toPrimitive(anObject(this), hint != NUMBER);
|
5322 |
+
};
|
5323 |
+
|
5324 |
+
/***/ },
|
5325 |
+
/* 231 */
|
5326 |
+
/***/ function(module, exports, __webpack_require__) {
|
5327 |
+
|
5328 |
+
'use strict';
|
5329 |
+
var $export = __webpack_require__(6)
|
5330 |
+
, $typed = __webpack_require__(232)
|
5331 |
+
, buffer = __webpack_require__(233)
|
5332 |
+
, anObject = __webpack_require__(10)
|
5333 |
+
, toIndex = __webpack_require__(37)
|
5334 |
+
, toLength = __webpack_require__(35)
|
5335 |
+
, isObject = __webpack_require__(11)
|
5336 |
+
, ArrayBuffer = __webpack_require__(2).ArrayBuffer
|
5337 |
+
, speciesConstructor = __webpack_require__(199)
|
5338 |
+
, $ArrayBuffer = buffer.ArrayBuffer
|
5339 |
+
, $DataView = buffer.DataView
|
5340 |
+
, $isView = $typed.ABV && ArrayBuffer.isView
|
5341 |
+
, $slice = $ArrayBuffer.prototype.slice
|
5342 |
+
, VIEW = $typed.VIEW
|
5343 |
+
, ARRAY_BUFFER = 'ArrayBuffer';
|
5344 |
+
|
5345 |
+
$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), {ArrayBuffer: $ArrayBuffer});
|
5346 |
+
|
5347 |
+
$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
|
5348 |
+
// 24.1.3.1 ArrayBuffer.isView(arg)
|
5349 |
+
isView: function isView(it){
|
5350 |
+
return $isView && $isView(it) || isObject(it) && VIEW in it;
|
5351 |
+
}
|
5352 |
+
});
|
5353 |
+
|
5354 |
+
$export($export.P + $export.U + $export.F * __webpack_require__(5)(function(){
|
5355 |
+
return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
|
5356 |
+
}), ARRAY_BUFFER, {
|
5357 |
+
// 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
|
5358 |
+
slice: function slice(start, end){
|
5359 |
+
if($slice !== undefined && end === undefined)return $slice.call(anObject(this), start); // FF fix
|
5360 |
+
var len = anObject(this).byteLength
|
5361 |
+
, first = toIndex(start, len)
|
5362 |
+
, final = toIndex(end === undefined ? len : end, len)
|
5363 |
+
, result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first))
|
5364 |
+
, viewS = new $DataView(this)
|
5365 |
+
, viewT = new $DataView(result)
|
5366 |
+
, index = 0;
|
5367 |
+
while(first < final){
|
5368 |
+
viewT.setUint8(index++, viewS.getUint8(first++));
|
5369 |
+
} return result;
|
5370 |
+
}
|
5371 |
+
});
|
5372 |
+
|
5373 |
+
__webpack_require__(186)(ARRAY_BUFFER);
|
5374 |
+
|
5375 |
+
/***/ },
|
5376 |
+
/* 232 */
|
5377 |
+
/***/ function(module, exports, __webpack_require__) {
|
5378 |
+
|
5379 |
+
var global = __webpack_require__(2)
|
5380 |
+
, hide = __webpack_require__(8)
|
5381 |
+
, uid = __webpack_require__(17)
|
5382 |
+
, TYPED = uid('typed_array')
|
5383 |
+
, VIEW = uid('view')
|
5384 |
+
, ABV = !!(global.ArrayBuffer && global.DataView)
|
5385 |
+
, CONSTR = ABV
|
5386 |
+
, i = 0, l = 9, Typed;
|
5387 |
+
|
5388 |
+
var TypedArrayConstructors = (
|
5389 |
+
'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
|
5390 |
+
).split(',');
|
5391 |
+
|
5392 |
+
while(i < l){
|
5393 |
+
if(Typed = global[TypedArrayConstructors[i++]]){
|
5394 |
+
hide(Typed.prototype, TYPED, true);
|
5395 |
+
hide(Typed.prototype, VIEW, true);
|
5396 |
+
} else CONSTR = false;
|
5397 |
+
}
|
5398 |
+
|
5399 |
+
module.exports = {
|
5400 |
+
ABV: ABV,
|
5401 |
+
CONSTR: CONSTR,
|
5402 |
+
TYPED: TYPED,
|
5403 |
+
VIEW: VIEW
|
5404 |
+
};
|
5405 |
+
|
5406 |
+
/***/ },
|
5407 |
+
/* 233 */
|
5408 |
+
/***/ function(module, exports, __webpack_require__) {
|
5409 |
+
|
5410 |
+
'use strict';
|
5411 |
+
var global = __webpack_require__(2)
|
5412 |
+
, DESCRIPTORS = __webpack_require__(4)
|
5413 |
+
, LIBRARY = __webpack_require__(26)
|
5414 |
+
, $typed = __webpack_require__(232)
|
5415 |
+
, hide = __webpack_require__(8)
|
5416 |
+
, redefineAll = __webpack_require__(202)
|
5417 |
+
, fails = __webpack_require__(5)
|
5418 |
+
, anInstance = __webpack_require__(197)
|
5419 |
+
, toInteger = __webpack_require__(36)
|
5420 |
+
, toLength = __webpack_require__(35)
|
5421 |
+
, gOPN = __webpack_require__(48).f
|
5422 |
+
, dP = __webpack_require__(9).f
|
5423 |
+
, arrayFill = __webpack_require__(180)
|
5424 |
+
, setToStringTag = __webpack_require__(22)
|
5425 |
+
, ARRAY_BUFFER = 'ArrayBuffer'
|
5426 |
+
, DATA_VIEW = 'DataView'
|
5427 |
+
, PROTOTYPE = 'prototype'
|
5428 |
+
, WRONG_LENGTH = 'Wrong length!'
|
5429 |
+
, WRONG_INDEX = 'Wrong index!'
|
5430 |
+
, $ArrayBuffer = global[ARRAY_BUFFER]
|
5431 |
+
, $DataView = global[DATA_VIEW]
|
5432 |
+
, Math = global.Math
|
5433 |
+
, RangeError = global.RangeError
|
5434 |
+
, Infinity = global.Infinity
|
5435 |
+
, BaseBuffer = $ArrayBuffer
|
5436 |
+
, abs = Math.abs
|
5437 |
+
, pow = Math.pow
|
5438 |
+
, floor = Math.floor
|
5439 |
+
, log = Math.log
|
5440 |
+
, LN2 = Math.LN2
|
5441 |
+
, BUFFER = 'buffer'
|
5442 |
+
, BYTE_LENGTH = 'byteLength'
|
5443 |
+
, BYTE_OFFSET = 'byteOffset'
|
5444 |
+
, $BUFFER = DESCRIPTORS ? '_b' : BUFFER
|
5445 |
+
, $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH
|
5446 |
+
, $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;
|
5447 |
+
|
5448 |
+
// IEEE754 conversions based on https://github.com/feross/ieee754
|
5449 |
+
var packIEEE754 = function(value, mLen, nBytes){
|
5450 |
+
var buffer = Array(nBytes)
|
5451 |
+
, eLen = nBytes * 8 - mLen - 1
|
5452 |
+
, eMax = (1 << eLen) - 1
|
5453 |
+
, eBias = eMax >> 1
|
5454 |
+
, rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0
|
5455 |
+
, i = 0
|
5456 |
+
, s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0
|
5457 |
+
, e, m, c;
|
5458 |
+
value = abs(value)
|
5459 |
+
if(value != value || value === Infinity){
|
5460 |
+
m = value != value ? 1 : 0;
|
5461 |
+
e = eMax;
|
5462 |
+
} else {
|
5463 |
+
e = floor(log(value) / LN2);
|
5464 |
+
if(value * (c = pow(2, -e)) < 1){
|
5465 |
+
e--;
|
5466 |
+
c *= 2;
|
5467 |
+
}
|
5468 |
+
if(e + eBias >= 1){
|
5469 |
+
value += rt / c;
|
5470 |
+
} else {
|
5471 |
+
value += rt * pow(2, 1 - eBias);
|
5472 |
+
}
|
5473 |
+
if(value * c >= 2){
|
5474 |
+
e++;
|
5475 |
+
c /= 2;
|
5476 |
+
}
|
5477 |
+
if(e + eBias >= eMax){
|
5478 |
+
m = 0;
|
5479 |
+
e = eMax;
|
5480 |
+
} else if(e + eBias >= 1){
|
5481 |
+
m = (value * c - 1) * pow(2, mLen);
|
5482 |
+
e = e + eBias;
|
5483 |
+
} else {
|
5484 |
+
m = value * pow(2, eBias - 1) * pow(2, mLen);
|
5485 |
+
e = 0;
|
5486 |
+
}
|
5487 |
+
}
|
5488 |
+
for(; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);
|
5489 |
+
e = e << mLen | m;
|
5490 |
+
eLen += mLen;
|
5491 |
+
for(; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);
|
5492 |
+
buffer[--i] |= s * 128;
|
5493 |
+
return buffer;
|
5494 |
+
};
|
5495 |
+
var unpackIEEE754 = function(buffer, mLen, nBytes){
|
5496 |
+
var eLen = nBytes * 8 - mLen - 1
|
5497 |
+
, eMax = (1 << eLen) - 1
|
5498 |
+
, eBias = eMax >> 1
|
5499 |
+
, nBits = eLen - 7
|
5500 |
+
, i = nBytes - 1
|
5501 |
+
, s = buffer[i--]
|
5502 |
+
, e = s & 127
|
5503 |
+
, m;
|
5504 |
+
s >>= 7;
|
5505 |
+
for(; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);
|
5506 |
+
m = e & (1 << -nBits) - 1;
|
5507 |
+
e >>= -nBits;
|
5508 |
+
nBits += mLen;
|
5509 |
+
for(; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);
|
5510 |
+
if(e === 0){
|
5511 |
+
e = 1 - eBias;
|
5512 |
+
} else if(e === eMax){
|
5513 |
+
return m ? NaN : s ? -Infinity : Infinity;
|
5514 |
+
} else {
|
5515 |
+
m = m + pow(2, mLen);
|
5516 |
+
e = e - eBias;
|
5517 |
+
} return (s ? -1 : 1) * m * pow(2, e - mLen);
|
5518 |
+
};
|
5519 |
+
|
5520 |
+
var unpackI32 = function(bytes){
|
5521 |
+
return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
|
5522 |
+
};
|
5523 |
+
var packI8 = function(it){
|
5524 |
+
return [it & 0xff];
|
5525 |
+
};
|
5526 |
+
var packI16 = function(it){
|
5527 |
+
return [it & 0xff, it >> 8 & 0xff];
|
5528 |
+
};
|
5529 |
+
var packI32 = function(it){
|
5530 |
+
return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];
|
5531 |
+
};
|
5532 |
+
var packF64 = function(it){
|
5533 |
+
return packIEEE754(it, 52, 8);
|
5534 |
+
};
|
5535 |
+
var packF32 = function(it){
|
5536 |
+
return packIEEE754(it, 23, 4);
|
5537 |
+
};
|
5538 |
+
|
5539 |
+
var addGetter = function(C, key, internal){
|
5540 |
+
dP(C[PROTOTYPE], key, {get: function(){ return this[internal]; }});
|
5541 |
+
};
|
5542 |
+
|
5543 |
+
var get = function(view, bytes, index, isLittleEndian){
|
5544 |
+
var numIndex = +index
|
5545 |
+
, intIndex = toInteger(numIndex);
|
5546 |
+
if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);
|
5547 |
+
var store = view[$BUFFER]._b
|
5548 |
+
, start = intIndex + view[$OFFSET]
|
5549 |
+
, pack = store.slice(start, start + bytes);
|
5550 |
+
return isLittleEndian ? pack : pack.reverse();
|
5551 |
+
};
|
5552 |
+
var set = function(view, bytes, index, conversion, value, isLittleEndian){
|
5553 |
+
var numIndex = +index
|
5554 |
+
, intIndex = toInteger(numIndex);
|
5555 |
+
if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);
|
5556 |
+
var store = view[$BUFFER]._b
|
5557 |
+
, start = intIndex + view[$OFFSET]
|
5558 |
+
, pack = conversion(+value);
|
5559 |
+
for(var i = 0; i < bytes; i++)store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
|
5560 |
+
};
|
5561 |
+
|
5562 |
+
var validateArrayBufferArguments = function(that, length){
|
5563 |
+
anInstance(that, $ArrayBuffer, ARRAY_BUFFER);
|
5564 |
+
var numberLength = +length
|
5565 |
+
, byteLength = toLength(numberLength);
|
5566 |
+
if(numberLength != byteLength)throw RangeError(WRONG_LENGTH);
|
5567 |
+
return byteLength;
|
5568 |
+
};
|
5569 |
+
|
5570 |
+
if(!$typed.ABV){
|
5571 |
+
$ArrayBuffer = function ArrayBuffer(length){
|
5572 |
+
var byteLength = validateArrayBufferArguments(this, length);
|
5573 |
+
this._b = arrayFill.call(Array(byteLength), 0);
|
5574 |
+
this[$LENGTH] = byteLength;
|
5575 |
+
};
|
5576 |
+
|
5577 |
+
$DataView = function DataView(buffer, byteOffset, byteLength){
|
5578 |
+
anInstance(this, $DataView, DATA_VIEW);
|
5579 |
+
anInstance(buffer, $ArrayBuffer, DATA_VIEW);
|
5580 |
+
var bufferLength = buffer[$LENGTH]
|
5581 |
+
, offset = toInteger(byteOffset);
|
5582 |
+
if(offset < 0 || offset > bufferLength)throw RangeError('Wrong offset!');
|
5583 |
+
byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
|
5584 |
+
if(offset + byteLength > bufferLength)throw RangeError(WRONG_LENGTH);
|
5585 |
+
this[$BUFFER] = buffer;
|
5586 |
+
this[$OFFSET] = offset;
|
5587 |
+
this[$LENGTH] = byteLength;
|
5588 |
+
};
|
5589 |
+
|
5590 |
+
if(DESCRIPTORS){
|
5591 |
+
addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
|
5592 |
+
addGetter($DataView, BUFFER, '_b');
|
5593 |
+
addGetter($DataView, BYTE_LENGTH, '_l');
|
5594 |
+
addGetter($DataView, BYTE_OFFSET, '_o');
|
5595 |
+
}
|
5596 |
+
|
5597 |
+
redefineAll($DataView[PROTOTYPE], {
|
5598 |
+
getInt8: function getInt8(byteOffset){
|
5599 |
+
return get(this, 1, byteOffset)[0] << 24 >> 24;
|
5600 |
+
},
|
5601 |
+
getUint8: function getUint8(byteOffset){
|
5602 |
+
return get(this, 1, byteOffset)[0];
|
5603 |
+
},
|
5604 |
+
getInt16: function getInt16(byteOffset /*, littleEndian */){
|
5605 |
+
var bytes = get(this, 2, byteOffset, arguments[1]);
|
5606 |
+
return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
|
5607 |
+
},
|
5608 |
+
getUint16: function getUint16(byteOffset /*, littleEndian */){
|
5609 |
+
var bytes = get(this, 2, byteOffset, arguments[1]);
|
5610 |
+
return bytes[1] << 8 | bytes[0];
|
5611 |
+
},
|
5612 |
+
getInt32: function getInt32(byteOffset /*, littleEndian */){
|
5613 |
+
return unpackI32(get(this, 4, byteOffset, arguments[1]));
|
5614 |
+
},
|
5615 |
+
getUint32: function getUint32(byteOffset /*, littleEndian */){
|
5616 |
+
return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
|
5617 |
+
},
|
5618 |
+
getFloat32: function getFloat32(byteOffset /*, littleEndian */){
|
5619 |
+
return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
|
5620 |
+
},
|
5621 |
+
getFloat64: function getFloat64(byteOffset /*, littleEndian */){
|
5622 |
+
return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
|
5623 |
+
},
|
5624 |
+
setInt8: function setInt8(byteOffset, value){
|
5625 |
+
set(this, 1, byteOffset, packI8, value);
|
5626 |
+
},
|
5627 |
+
setUint8: function setUint8(byteOffset, value){
|
5628 |
+
set(this, 1, byteOffset, packI8, value);
|
5629 |
+
},
|
5630 |
+
setInt16: function setInt16(byteOffset, value /*, littleEndian */){
|
5631 |
+
set(this, 2, byteOffset, packI16, value, arguments[2]);
|
5632 |
+
},
|
5633 |
+
setUint16: function setUint16(byteOffset, value /*, littleEndian */){
|
5634 |
+
set(this, 2, byteOffset, packI16, value, arguments[2]);
|
5635 |
+
},
|
5636 |
+
setInt32: function setInt32(byteOffset, value /*, littleEndian */){
|
5637 |
+
set(this, 4, byteOffset, packI32, value, arguments[2]);
|
5638 |
+
},
|
5639 |
+
setUint32: function setUint32(byteOffset, value /*, littleEndian */){
|
5640 |
+
set(this, 4, byteOffset, packI32, value, arguments[2]);
|
5641 |
+
},
|
5642 |
+
setFloat32: function setFloat32(byteOffset, value /*, littleEndian */){
|
5643 |
+
set(this, 4, byteOffset, packF32, value, arguments[2]);
|
5644 |
+
},
|
5645 |
+
setFloat64: function setFloat64(byteOffset, value /*, littleEndian */){
|
5646 |
+
set(this, 8, byteOffset, packF64, value, arguments[2]);
|
5647 |
+
}
|
5648 |
+
});
|
5649 |
+
} else {
|
5650 |
+
if(!fails(function(){
|
5651 |
+
new $ArrayBuffer; // eslint-disable-line no-new
|
5652 |
+
}) || !fails(function(){
|
5653 |
+
new $ArrayBuffer(.5); // eslint-disable-line no-new
|
5654 |
+
})){
|
5655 |
+
$ArrayBuffer = function ArrayBuffer(length){
|
5656 |
+
return new BaseBuffer(validateArrayBufferArguments(this, length));
|
5657 |
+
};
|
5658 |
+
var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];
|
5659 |
+
for(var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j; ){
|
5660 |
+
if(!((key = keys[j++]) in $ArrayBuffer))hide($ArrayBuffer, key, BaseBuffer[key]);
|
5661 |
+
};
|
5662 |
+
if(!LIBRARY)ArrayBufferProto.constructor = $ArrayBuffer;
|
5663 |
+
}
|
5664 |
+
// iOS Safari 7.x bug
|
5665 |
+
var view = new $DataView(new $ArrayBuffer(2))
|
5666 |
+
, $setInt8 = $DataView[PROTOTYPE].setInt8;
|
5667 |
+
view.setInt8(0, 2147483648);
|
5668 |
+
view.setInt8(1, 2147483649);
|
5669 |
+
if(view.getInt8(0) || !view.getInt8(1))redefineAll($DataView[PROTOTYPE], {
|
5670 |
+
setInt8: function setInt8(byteOffset, value){
|
5671 |
+
$setInt8.call(this, byteOffset, value << 24 >> 24);
|
5672 |
+
},
|
5673 |
+
setUint8: function setUint8(byteOffset, value){
|
5674 |
+
$setInt8.call(this, byteOffset, value << 24 >> 24);
|
5675 |
+
}
|
5676 |
+
}, true);
|
5677 |
+
}
|
5678 |
+
setToStringTag($ArrayBuffer, ARRAY_BUFFER);
|
5679 |
+
setToStringTag($DataView, DATA_VIEW);
|
5680 |
+
hide($DataView[PROTOTYPE], $typed.VIEW, true);
|
5681 |
+
exports[ARRAY_BUFFER] = $ArrayBuffer;
|
5682 |
+
exports[DATA_VIEW] = $DataView;
|
5683 |
+
|
5684 |
+
/***/ },
|
5685 |
+
/* 234 */
|
5686 |
+
/***/ function(module, exports, __webpack_require__) {
|
5687 |
+
|
5688 |
+
var $export = __webpack_require__(6);
|
5689 |
+
$export($export.G + $export.W + $export.F * !__webpack_require__(232).ABV, {
|
5690 |
+
DataView: __webpack_require__(233).DataView
|
5691 |
+
});
|
5692 |
+
|
5693 |
+
/***/ },
|
5694 |
+
/* 235 */
|
5695 |
+
/***/ function(module, exports, __webpack_require__) {
|
5696 |
+
|
5697 |
+
__webpack_require__(236)('Int8', 1, function(init){
|
5698 |
+
return function Int8Array(data, byteOffset, length){
|
5699 |
+
return init(this, data, byteOffset, length);
|
5700 |
+
};
|
5701 |
+
});
|
5702 |
+
|
5703 |
+
/***/ },
|
5704 |
+
/* 236 */
|
5705 |
+
/***/ function(module, exports, __webpack_require__) {
|
5706 |
+
|
5707 |
+
'use strict';
|
5708 |
+
if(__webpack_require__(4)){
|
5709 |
+
var LIBRARY = __webpack_require__(26)
|
5710 |
+
, global = __webpack_require__(2)
|
5711 |
+
, fails = __webpack_require__(5)
|
5712 |
+
, $export = __webpack_require__(6)
|
5713 |
+
, $typed = __webpack_require__(232)
|
5714 |
+
, $buffer = __webpack_require__(233)
|
5715 |
+
, ctx = __webpack_require__(18)
|
5716 |
+
, anInstance = __webpack_require__(197)
|
5717 |
+
, propertyDesc = __webpack_require__(15)
|
5718 |
+
, hide = __webpack_require__(8)
|
5719 |
+
, redefineAll = __webpack_require__(202)
|
5720 |
+
, toInteger = __webpack_require__(36)
|
5721 |
+
, toLength = __webpack_require__(35)
|
5722 |
+
, toIndex = __webpack_require__(37)
|
5723 |
+
, toPrimitive = __webpack_require__(14)
|
5724 |
+
, has = __webpack_require__(3)
|
5725 |
+
, same = __webpack_require__(69)
|
5726 |
+
, classof = __webpack_require__(73)
|
5727 |
+
, isObject = __webpack_require__(11)
|
5728 |
+
, toObject = __webpack_require__(56)
|
5729 |
+
, isArrayIter = __webpack_require__(154)
|
5730 |
+
, create = __webpack_require__(44)
|
5731 |
+
, getPrototypeOf = __webpack_require__(57)
|
5732 |
+
, gOPN = __webpack_require__(48).f
|
5733 |
+
, getIterFn = __webpack_require__(156)
|
5734 |
+
, uid = __webpack_require__(17)
|
5735 |
+
, wks = __webpack_require__(23)
|
5736 |
+
, createArrayMethod = __webpack_require__(164)
|
5737 |
+
, createArrayIncludes = __webpack_require__(34)
|
5738 |
+
, speciesConstructor = __webpack_require__(199)
|
5739 |
+
, ArrayIterators = __webpack_require__(183)
|
5740 |
+
, Iterators = __webpack_require__(135)
|
5741 |
+
, $iterDetect = __webpack_require__(157)
|
5742 |
+
, setSpecies = __webpack_require__(186)
|
5743 |
+
, arrayFill = __webpack_require__(180)
|
5744 |
+
, arrayCopyWithin = __webpack_require__(177)
|
5745 |
+
, $DP = __webpack_require__(9)
|
5746 |
+
, $GOPD = __webpack_require__(49)
|
5747 |
+
, dP = $DP.f
|
5748 |
+
, gOPD = $GOPD.f
|
5749 |
+
, RangeError = global.RangeError
|
5750 |
+
, TypeError = global.TypeError
|
5751 |
+
, Uint8Array = global.Uint8Array
|
5752 |
+
, ARRAY_BUFFER = 'ArrayBuffer'
|
5753 |
+
, SHARED_BUFFER = 'Shared' + ARRAY_BUFFER
|
5754 |
+
, BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'
|
5755 |
+
, PROTOTYPE = 'prototype'
|
5756 |
+
, ArrayProto = Array[PROTOTYPE]
|
5757 |
+
, $ArrayBuffer = $buffer.ArrayBuffer
|
5758 |
+
, $DataView = $buffer.DataView
|
5759 |
+
, arrayForEach = createArrayMethod(0)
|
5760 |
+
, arrayFilter = createArrayMethod(2)
|
5761 |
+
, arraySome = createArrayMethod(3)
|
5762 |
+
, arrayEvery = createArrayMethod(4)
|
5763 |
+
, arrayFind = createArrayMethod(5)
|
5764 |
+
, arrayFindIndex = createArrayMethod(6)
|
5765 |
+
, arrayIncludes = createArrayIncludes(true)
|
5766 |
+
, arrayIndexOf = createArrayIncludes(false)
|
5767 |
+
, arrayValues = ArrayIterators.values
|
5768 |
+
, arrayKeys = ArrayIterators.keys
|
5769 |
+
, arrayEntries = ArrayIterators.entries
|
5770 |
+
, arrayLastIndexOf = ArrayProto.lastIndexOf
|
5771 |
+
, arrayReduce = ArrayProto.reduce
|
5772 |
+
, arrayReduceRight = ArrayProto.reduceRight
|
5773 |
+
, arrayJoin = ArrayProto.join
|
5774 |
+
, arraySort = ArrayProto.sort
|
5775 |
+
, arraySlice = ArrayProto.slice
|
5776 |
+
, arrayToString = ArrayProto.toString
|
5777 |
+
, arrayToLocaleString = ArrayProto.toLocaleString
|
5778 |
+
, ITERATOR = wks('iterator')
|
5779 |
+
, TAG = wks('toStringTag')
|
5780 |
+
, TYPED_CONSTRUCTOR = uid('typed_constructor')
|
5781 |
+
, DEF_CONSTRUCTOR = uid('def_constructor')
|
5782 |
+
, ALL_CONSTRUCTORS = $typed.CONSTR
|
5783 |
+
, TYPED_ARRAY = $typed.TYPED
|
5784 |
+
, VIEW = $typed.VIEW
|
5785 |
+
, WRONG_LENGTH = 'Wrong length!';
|
5786 |
+
|
5787 |
+
var $map = createArrayMethod(1, function(O, length){
|
5788 |
+
return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
|
5789 |
+
});
|
5790 |
+
|
5791 |
+
var LITTLE_ENDIAN = fails(function(){
|
5792 |
+
return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
|
5793 |
+
});
|
5794 |
+
|
5795 |
+
var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function(){
|
5796 |
+
new Uint8Array(1).set({});
|
5797 |
+
});
|
5798 |
+
|
5799 |
+
var strictToLength = function(it, SAME){
|
5800 |
+
if(it === undefined)throw TypeError(WRONG_LENGTH);
|
5801 |
+
var number = +it
|
5802 |
+
, length = toLength(it);
|
5803 |
+
if(SAME && !same(number, length))throw RangeError(WRONG_LENGTH);
|
5804 |
+
return length;
|
5805 |
+
};
|
5806 |
+
|
5807 |
+
var toOffset = function(it, BYTES){
|
5808 |
+
var offset = toInteger(it);
|
5809 |
+
if(offset < 0 || offset % BYTES)throw RangeError('Wrong offset!');
|
5810 |
+
return offset;
|
5811 |
+
};
|
5812 |
+
|
5813 |
+
var validate = function(it){
|
5814 |
+
if(isObject(it) && TYPED_ARRAY in it)return it;
|
5815 |
+
throw TypeError(it + ' is not a typed array!');
|
5816 |
+
};
|
5817 |
+
|
5818 |
+
var allocate = function(C, length){
|
5819 |
+
if(!(isObject(C) && TYPED_CONSTRUCTOR in C)){
|
5820 |
+
throw TypeError('It is not a typed array constructor!');
|
5821 |
+
} return new C(length);
|
5822 |
+
};
|
5823 |
+
|
5824 |
+
var speciesFromList = function(O, list){
|
5825 |
+
return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
|
5826 |
+
};
|
5827 |
+
|
5828 |
+
var fromList = function(C, list){
|
5829 |
+
var index = 0
|
5830 |
+
, length = list.length
|
5831 |
+
, result = allocate(C, length);
|
5832 |
+
while(length > index)result[index] = list[index++];
|
5833 |
+
return result;
|
5834 |
+
};
|
5835 |
+
|
5836 |
+
var addGetter = function(it, key, internal){
|
5837 |
+
dP(it, key, {get: function(){ return this._d[internal]; }});
|
5838 |
+
};
|
5839 |
+
|
5840 |
+
var $from = function from(source /*, mapfn, thisArg */){
|
5841 |
+
var O = toObject(source)
|
5842 |
+
, aLen = arguments.length
|
5843 |
+
, mapfn = aLen > 1 ? arguments[1] : undefined
|
5844 |
+
, mapping = mapfn !== undefined
|
5845 |
+
, iterFn = getIterFn(O)
|
5846 |
+
, i, length, values, result, step, iterator;
|
5847 |
+
if(iterFn != undefined && !isArrayIter(iterFn)){
|
5848 |
+
for(iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++){
|
5849 |
+
values.push(step.value);
|
5850 |
+
} O = values;
|
5851 |
+
}
|
5852 |
+
if(mapping && aLen > 2)mapfn = ctx(mapfn, arguments[2], 2);
|
5853 |
+
for(i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++){
|
5854 |
+
result[i] = mapping ? mapfn(O[i], i) : O[i];
|
5855 |
+
}
|
5856 |
+
return result;
|
5857 |
+
};
|
5858 |
+
|
5859 |
+
var $of = function of(/*...items*/){
|
5860 |
+
var index = 0
|
5861 |
+
, length = arguments.length
|
5862 |
+
, result = allocate(this, length);
|
5863 |
+
while(length > index)result[index] = arguments[index++];
|
5864 |
+
return result;
|
5865 |
+
};
|
5866 |
+
|
5867 |
+
// iOS Safari 6.x fails here
|
5868 |
+
var TO_LOCALE_BUG = !!Uint8Array && fails(function(){ arrayToLocaleString.call(new Uint8Array(1)); });
|
5869 |
+
|
5870 |
+
var $toLocaleString = function toLocaleString(){
|
5871 |
+
return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
|
5872 |
+
};
|
5873 |
+
|
5874 |
+
var proto = {
|
5875 |
+
copyWithin: function copyWithin(target, start /*, end */){
|
5876 |
+
return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
|
5877 |
+
},
|
5878 |
+
every: function every(callbackfn /*, thisArg */){
|
5879 |
+
return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
|
5880 |
+
},
|
5881 |
+
fill: function fill(value /*, start, end */){ // eslint-disable-line no-unused-vars
|
5882 |
+
return arrayFill.apply(validate(this), arguments);
|
5883 |
+
},
|
5884 |
+
filter: function filter(callbackfn /*, thisArg */){
|
5885 |
+
return speciesFromList(this, arrayFilter(validate(this), callbackfn,
|
5886 |
+
arguments.length > 1 ? arguments[1] : undefined));
|
5887 |
+
},
|
5888 |
+
find: function find(predicate /*, thisArg */){
|
5889 |
+
return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
|
5890 |
+
},
|
5891 |
+
findIndex: function findIndex(predicate /*, thisArg */){
|
5892 |
+
return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
|
5893 |
+
},
|
5894 |
+
forEach: function forEach(callbackfn /*, thisArg */){
|
5895 |
+
arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
|
5896 |
+
},
|
5897 |
+
indexOf: function indexOf(searchElement /*, fromIndex */){
|
5898 |
+
return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
|
5899 |
+
},
|
5900 |
+
includes: function includes(searchElement /*, fromIndex */){
|
5901 |
+
return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
|
5902 |
+
},
|
5903 |
+
join: function join(separator){ // eslint-disable-line no-unused-vars
|
5904 |
+
return arrayJoin.apply(validate(this), arguments);
|
5905 |
+
},
|
5906 |
+
lastIndexOf: function lastIndexOf(searchElement /*, fromIndex */){ // eslint-disable-line no-unused-vars
|
5907 |
+
return arrayLastIndexOf.apply(validate(this), arguments);
|
5908 |
+
},
|
5909 |
+
map: function map(mapfn /*, thisArg */){
|
5910 |
+
return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
|
5911 |
+
},
|
5912 |
+
reduce: function reduce(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
|
5913 |
+
return arrayReduce.apply(validate(this), arguments);
|
5914 |
+
},
|
5915 |
+
reduceRight: function reduceRight(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
|
5916 |
+
return arrayReduceRight.apply(validate(this), arguments);
|
5917 |
+
},
|
5918 |
+
reverse: function reverse(){
|
5919 |
+
var that = this
|
5920 |
+
, length = validate(that).length
|
5921 |
+
, middle = Math.floor(length / 2)
|
5922 |
+
, index = 0
|
5923 |
+
, value;
|
5924 |
+
while(index < middle){
|
5925 |
+
value = that[index];
|
5926 |
+
that[index++] = that[--length];
|
5927 |
+
that[length] = value;
|
5928 |
+
} return that;
|
5929 |
+
},
|
5930 |
+
some: function some(callbackfn /*, thisArg */){
|
5931 |
+
return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
|
5932 |
+
},
|
5933 |
+
sort: function sort(comparefn){
|
5934 |
+
return arraySort.call(validate(this), comparefn);
|
5935 |
+
},
|
5936 |
+
subarray: function subarray(begin, end){
|
5937 |
+
var O = validate(this)
|
5938 |
+
, length = O.length
|
5939 |
+
, $begin = toIndex(begin, length);
|
5940 |
+
return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
|
5941 |
+
O.buffer,
|
5942 |
+
O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
|
5943 |
+
toLength((end === undefined ? length : toIndex(end, length)) - $begin)
|
5944 |
+
);
|
5945 |
+
}
|
5946 |
+
};
|
5947 |
+
|
5948 |
+
var $slice = function slice(start, end){
|
5949 |
+
return speciesFromList(this, arraySlice.call(validate(this), start, end));
|
5950 |
+
};
|
5951 |
+
|
5952 |
+
var $set = function set(arrayLike /*, offset */){
|
5953 |
+
validate(this);
|
5954 |
+
var offset = toOffset(arguments[1], 1)
|
5955 |
+
, length = this.length
|
5956 |
+
, src = toObject(arrayLike)
|
5957 |
+
, len = toLength(src.length)
|
5958 |
+
, index = 0;
|
5959 |
+
if(len + offset > length)throw RangeError(WRONG_LENGTH);
|
5960 |
+
while(index < len)this[offset + index] = src[index++];
|
5961 |
+
};
|
5962 |
+
|
5963 |
+
var $iterators = {
|
5964 |
+
entries: function entries(){
|
5965 |
+
return arrayEntries.call(validate(this));
|
5966 |
+
},
|
5967 |
+
keys: function keys(){
|
5968 |
+
return arrayKeys.call(validate(this));
|
5969 |
+
},
|
5970 |
+
values: function values(){
|
5971 |
+
return arrayValues.call(validate(this));
|
5972 |
+
}
|
5973 |
+
};
|
5974 |
+
|
5975 |
+
var isTAIndex = function(target, key){
|
5976 |
+
return isObject(target)
|
5977 |
+
&& target[TYPED_ARRAY]
|
5978 |
+
&& typeof key != 'symbol'
|
5979 |
+
&& key in target
|
5980 |
+
&& String(+key) == String(key);
|
5981 |
+
};
|
5982 |
+
var $getDesc = function getOwnPropertyDescriptor(target, key){
|
5983 |
+
return isTAIndex(target, key = toPrimitive(key, true))
|
5984 |
+
? propertyDesc(2, target[key])
|
5985 |
+
: gOPD(target, key);
|
5986 |
+
};
|
5987 |
+
var $setDesc = function defineProperty(target, key, desc){
|
5988 |
+
if(isTAIndex(target, key = toPrimitive(key, true))
|
5989 |
+
&& isObject(desc)
|
5990 |
+
&& has(desc, 'value')
|
5991 |
+
&& !has(desc, 'get')
|
5992 |
+
&& !has(desc, 'set')
|
5993 |
+
// TODO: add validation descriptor w/o calling accessors
|
5994 |
+
&& !desc.configurable
|
5995 |
+
&& (!has(desc, 'writable') || desc.writable)
|
5996 |
+
&& (!has(desc, 'enumerable') || desc.enumerable)
|
5997 |
+
){
|
5998 |
+
target[key] = desc.value;
|
5999 |
+
return target;
|
6000 |
+
} else return dP(target, key, desc);
|
6001 |
+
};
|
6002 |
+
|
6003 |
+
if(!ALL_CONSTRUCTORS){
|
6004 |
+
$GOPD.f = $getDesc;
|
6005 |
+
$DP.f = $setDesc;
|
6006 |
+
}
|
6007 |
+
|
6008 |
+
$export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
|
6009 |
+
getOwnPropertyDescriptor: $getDesc,
|
6010 |
+
defineProperty: $setDesc
|
6011 |
+
});
|
6012 |
+
|
6013 |
+
if(fails(function(){ arrayToString.call({}); })){
|
6014 |
+
arrayToString = arrayToLocaleString = function toString(){
|
6015 |
+
return arrayJoin.call(this);
|
6016 |
+
}
|
6017 |
+
}
|
6018 |
+
|
6019 |
+
var $TypedArrayPrototype$ = redefineAll({}, proto);
|
6020 |
+
redefineAll($TypedArrayPrototype$, $iterators);
|
6021 |
+
hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
|
6022 |
+
redefineAll($TypedArrayPrototype$, {
|
6023 |
+
slice: $slice,
|
6024 |
+
set: $set,
|
6025 |
+
constructor: function(){ /* noop */ },
|
6026 |
+
toString: arrayToString,
|
6027 |
+
toLocaleString: $toLocaleString
|
6028 |
+
});
|
6029 |
+
addGetter($TypedArrayPrototype$, 'buffer', 'b');
|
6030 |
+
addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
|
6031 |
+
addGetter($TypedArrayPrototype$, 'byteLength', 'l');
|
6032 |
+
addGetter($TypedArrayPrototype$, 'length', 'e');
|
6033 |
+
dP($TypedArrayPrototype$, TAG, {
|
6034 |
+
get: function(){ return this[TYPED_ARRAY]; }
|
6035 |
+
});
|
6036 |
+
|
6037 |
+
module.exports = function(KEY, BYTES, wrapper, CLAMPED){
|
6038 |
+
CLAMPED = !!CLAMPED;
|
6039 |
+
var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'
|
6040 |
+
, ISNT_UINT8 = NAME != 'Uint8Array'
|
6041 |
+
, GETTER = 'get' + KEY
|
6042 |
+
, SETTER = 'set' + KEY
|
6043 |
+
, TypedArray = global[NAME]
|
6044 |
+
, Base = TypedArray || {}
|
6045 |
+
, TAC = TypedArray && getPrototypeOf(TypedArray)
|
6046 |
+
, FORCED = !TypedArray || !$typed.ABV
|
6047 |
+
, O = {}
|
6048 |
+
, TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
|
6049 |
+
var getter = function(that, index){
|
6050 |
+
var data = that._d;
|
6051 |
+
return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
|
6052 |
+
};
|
6053 |
+
var setter = function(that, index, value){
|
6054 |
+
var data = that._d;
|
6055 |
+
if(CLAMPED)value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
|
6056 |
+
data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
|
6057 |
+
};
|
6058 |
+
var addElement = function(that, index){
|
6059 |
+
dP(that, index, {
|
6060 |
+
get: function(){
|
6061 |
+
return getter(this, index);
|
6062 |
+
},
|
6063 |
+
set: function(value){
|
6064 |
+
return setter(this, index, value);
|
6065 |
+
},
|
6066 |
+
enumerable: true
|
6067 |
+
});
|
6068 |
+
};
|
6069 |
+
if(FORCED){
|
6070 |
+
TypedArray = wrapper(function(that, data, $offset, $length){
|
6071 |
+
anInstance(that, TypedArray, NAME, '_d');
|
6072 |
+
var index = 0
|
6073 |
+
, offset = 0
|
6074 |
+
, buffer, byteLength, length, klass;
|
6075 |
+
if(!isObject(data)){
|
6076 |
+
length = strictToLength(data, true)
|
6077 |
+
byteLength = length * BYTES;
|
6078 |
+
buffer = new $ArrayBuffer(byteLength);
|
6079 |
+
} else if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){
|
6080 |
+
buffer = data;
|
6081 |
+
offset = toOffset($offset, BYTES);
|
6082 |
+
var $len = data.byteLength;
|
6083 |
+
if($length === undefined){
|
6084 |
+
if($len % BYTES)throw RangeError(WRONG_LENGTH);
|
6085 |
+
byteLength = $len - offset;
|
6086 |
+
if(byteLength < 0)throw RangeError(WRONG_LENGTH);
|
6087 |
+
} else {
|
6088 |
+
byteLength = toLength($length) * BYTES;
|
6089 |
+
if(byteLength + offset > $len)throw RangeError(WRONG_LENGTH);
|
6090 |
+
}
|
6091 |
+
length = byteLength / BYTES;
|
6092 |
+
} else if(TYPED_ARRAY in data){
|
6093 |
+
return fromList(TypedArray, data);
|
6094 |
+
} else {
|
6095 |
+
return $from.call(TypedArray, data);
|
6096 |
+
}
|
6097 |
+
hide(that, '_d', {
|
6098 |
+
b: buffer,
|
6099 |
+
o: offset,
|
6100 |
+
l: byteLength,
|
6101 |
+
e: length,
|
6102 |
+
v: new $DataView(buffer)
|
6103 |
+
});
|
6104 |
+
while(index < length)addElement(that, index++);
|
6105 |
+
});
|
6106 |
+
TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
|
6107 |
+
hide(TypedArrayPrototype, 'constructor', TypedArray);
|
6108 |
+
} else if(!$iterDetect(function(iter){
|
6109 |
+
// V8 works with iterators, but fails in many other cases
|
6110 |
+
// https://code.google.com/p/v8/issues/detail?id=4552
|
6111 |
+
new TypedArray(null); // eslint-disable-line no-new
|
6112 |
+
new TypedArray(iter); // eslint-disable-line no-new
|
6113 |
+
}, true)){
|
6114 |
+
TypedArray = wrapper(function(that, data, $offset, $length){
|
6115 |
+
anInstance(that, TypedArray, NAME);
|
6116 |
+
var klass;
|
6117 |
+
// `ws` module bug, temporarily remove validation length for Uint8Array
|
6118 |
+
// https://github.com/websockets/ws/pull/645
|
6119 |
+
if(!isObject(data))return new Base(strictToLength(data, ISNT_UINT8));
|
6120 |
+
if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){
|
6121 |
+
return $length !== undefined
|
6122 |
+
? new Base(data, toOffset($offset, BYTES), $length)
|
6123 |
+
: $offset !== undefined
|
6124 |
+
? new Base(data, toOffset($offset, BYTES))
|
6125 |
+
: new Base(data);
|
6126 |
+
}
|
6127 |
+
if(TYPED_ARRAY in data)return fromList(TypedArray, data);
|
6128 |
+
return $from.call(TypedArray, data);
|
6129 |
+
});
|
6130 |
+
arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function(key){
|
6131 |
+
if(!(key in TypedArray))hide(TypedArray, key, Base[key]);
|
6132 |
+
});
|
6133 |
+
TypedArray[PROTOTYPE] = TypedArrayPrototype;
|
6134 |
+
if(!LIBRARY)TypedArrayPrototype.constructor = TypedArray;
|
6135 |
+
}
|
6136 |
+
var $nativeIterator = TypedArrayPrototype[ITERATOR]
|
6137 |
+
, CORRECT_ITER_NAME = !!$nativeIterator && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined)
|
6138 |
+
, $iterator = $iterators.values;
|
6139 |
+
hide(TypedArray, TYPED_CONSTRUCTOR, true);
|
6140 |
+
hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
|
6141 |
+
hide(TypedArrayPrototype, VIEW, true);
|
6142 |
+
hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
|
6143 |
+
|
6144 |
+
if(CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)){
|
6145 |
+
dP(TypedArrayPrototype, TAG, {
|
6146 |
+
get: function(){ return NAME; }
|
6147 |
+
});
|
6148 |
+
}
|
6149 |
+
|
6150 |
+
O[NAME] = TypedArray;
|
6151 |
+
|
6152 |
+
$export($export.G + $export.W + $export.F * (TypedArray != Base), O);
|
6153 |
+
|
6154 |
+
$export($export.S, NAME, {
|
6155 |
+
BYTES_PER_ELEMENT: BYTES,
|
6156 |
+
from: $from,
|
6157 |
+
of: $of
|
6158 |
+
});
|
6159 |
+
|
6160 |
+
if(!(BYTES_PER_ELEMENT in TypedArrayPrototype))hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);
|
6161 |
+
|
6162 |
+
$export($export.P, NAME, proto);
|
6163 |
+
|
6164 |
+
setSpecies(NAME);
|
6165 |
+
|
6166 |
+
$export($export.P + $export.F * FORCED_SET, NAME, {set: $set});
|
6167 |
+
|
6168 |
+
$export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);
|
6169 |
+
|
6170 |
+
$export($export.P + $export.F * (TypedArrayPrototype.toString != arrayToString), NAME, {toString: arrayToString});
|
6171 |
+
|
6172 |
+
$export($export.P + $export.F * fails(function(){
|
6173 |
+
new TypedArray(1).slice();
|
6174 |
+
}), NAME, {slice: $slice});
|
6175 |
+
|
6176 |
+
$export($export.P + $export.F * (fails(function(){
|
6177 |
+
return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString()
|
6178 |
+
}) || !fails(function(){
|
6179 |
+
TypedArrayPrototype.toLocaleString.call([1, 2]);
|
6180 |
+
})), NAME, {toLocaleString: $toLocaleString});
|
6181 |
+
|
6182 |
+
Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
|
6183 |
+
if(!LIBRARY && !CORRECT_ITER_NAME)hide(TypedArrayPrototype, ITERATOR, $iterator);
|
6184 |
+
};
|
6185 |
+
} else module.exports = function(){ /* empty */ };
|
6186 |
+
|
6187 |
+
/***/ },
|
6188 |
+
/* 237 */
|
6189 |
+
/***/ function(module, exports, __webpack_require__) {
|
6190 |
+
|
6191 |
+
__webpack_require__(236)('Uint8', 1, function(init){
|
6192 |
+
return function Uint8Array(data, byteOffset, length){
|
6193 |
+
return init(this, data, byteOffset, length);
|
6194 |
+
};
|
6195 |
+
});
|
6196 |
+
|
6197 |
+
/***/ },
|
6198 |
+
/* 238 */
|
6199 |
+
/***/ function(module, exports, __webpack_require__) {
|
6200 |
+
|
6201 |
+
__webpack_require__(236)('Uint8', 1, function(init){
|
6202 |
+
return function Uint8ClampedArray(data, byteOffset, length){
|
6203 |
+
return init(this, data, byteOffset, length);
|
6204 |
+
};
|
6205 |
+
}, true);
|
6206 |
+
|
6207 |
+
/***/ },
|
6208 |
+
/* 239 */
|
6209 |
+
/***/ function(module, exports, __webpack_require__) {
|
6210 |
+
|
6211 |
+
__webpack_require__(236)('Int16', 2, function(init){
|
6212 |
+
return function Int16Array(data, byteOffset, length){
|
6213 |
+
return init(this, data, byteOffset, length);
|
6214 |
+
};
|
6215 |
+
});
|
6216 |
+
|
6217 |
+
/***/ },
|
6218 |
+
/* 240 */
|
6219 |
+
/***/ function(module, exports, __webpack_require__) {
|
6220 |
+
|
6221 |
+
__webpack_require__(236)('Uint16', 2, function(init){
|
6222 |
+
return function Uint16Array(data, byteOffset, length){
|
6223 |
+
return init(this, data, byteOffset, length);
|
6224 |
+
};
|
6225 |
+
});
|
6226 |
+
|
6227 |
+
/***/ },
|
6228 |
+
/* 241 */
|
6229 |
+
/***/ function(module, exports, __webpack_require__) {
|
6230 |
+
|
6231 |
+
__webpack_require__(236)('Int32', 4, function(init){
|
6232 |
+
return function Int32Array(data, byteOffset, length){
|
6233 |
+
return init(this, data, byteOffset, length);
|
6234 |
+
};
|
6235 |
+
});
|
6236 |
+
|
6237 |
+
/***/ },
|
6238 |
+
/* 242 */
|
6239 |
+
/***/ function(module, exports, __webpack_require__) {
|
6240 |
+
|
6241 |
+
__webpack_require__(236)('Uint32', 4, function(init){
|
6242 |
+
return function Uint32Array(data, byteOffset, length){
|
6243 |
+
return init(this, data, byteOffset, length);
|
6244 |
+
};
|
6245 |
+
});
|
6246 |
+
|
6247 |
+
/***/ },
|
6248 |
+
/* 243 */
|
6249 |
+
/***/ function(module, exports, __webpack_require__) {
|
6250 |
+
|
6251 |
+
__webpack_require__(236)('Float32', 4, function(init){
|
6252 |
+
return function Float32Array(data, byteOffset, length){
|
6253 |
+
return init(this, data, byteOffset, length);
|
6254 |
+
};
|
6255 |
+
});
|
6256 |
+
|
6257 |
+
/***/ },
|
6258 |
+
/* 244 */
|
6259 |
+
/***/ function(module, exports, __webpack_require__) {
|
6260 |
+
|
6261 |
+
__webpack_require__(236)('Float64', 8, function(init){
|
6262 |
+
return function Float64Array(data, byteOffset, length){
|
6263 |
+
return init(this, data, byteOffset, length);
|
6264 |
+
};
|
6265 |
+
});
|
6266 |
+
|
6267 |
+
/***/ },
|
6268 |
+
/* 245 */
|
6269 |
+
/***/ function(module, exports, __webpack_require__) {
|
6270 |
+
|
6271 |
+
'use strict';
|
6272 |
+
// https://github.com/tc39/Array.prototype.includes
|
6273 |
+
var $export = __webpack_require__(6)
|
6274 |
+
, $includes = __webpack_require__(34)(true);
|
6275 |
+
|
6276 |
+
$export($export.P, 'Array', {
|
6277 |
+
includes: function includes(el /*, fromIndex = 0 */){
|
6278 |
+
return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
|
6279 |
+
}
|
6280 |
+
});
|
6281 |
+
|
6282 |
+
__webpack_require__(178)('includes');
|
6283 |
+
|
6284 |
+
/***/ },
|
6285 |
+
/* 246 */
|
6286 |
+
/***/ function(module, exports, __webpack_require__) {
|
6287 |
+
|
6288 |
+
'use strict';
|
6289 |
+
// https://github.com/mathiasbynens/String.prototype.at
|
6290 |
+
var $export = __webpack_require__(6)
|
6291 |
+
, $at = __webpack_require__(125)(true);
|
6292 |
+
|
6293 |
+
$export($export.P, 'String', {
|
6294 |
+
at: function at(pos){
|
6295 |
+
return $at(this, pos);
|
6296 |
+
}
|
6297 |
+
});
|
6298 |
+
|
6299 |
+
/***/ },
|
6300 |
+
/* 247 */
|
6301 |
+
/***/ function(module, exports, __webpack_require__) {
|
6302 |
+
|
6303 |
+
'use strict';
|
6304 |
+
// https://github.com/tc39/proposal-string-pad-start-end
|
6305 |
+
var $export = __webpack_require__(6)
|
6306 |
+
, $pad = __webpack_require__(248);
|
6307 |
+
|
6308 |
+
$export($export.P, 'String', {
|
6309 |
+
padStart: function padStart(maxLength /*, fillString = ' ' */){
|
6310 |
+
return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
|
6311 |
+
}
|
6312 |
+
});
|
6313 |
+
|
6314 |
+
/***/ },
|
6315 |
+
/* 248 */
|
6316 |
+
/***/ function(module, exports, __webpack_require__) {
|
6317 |
+
|
6318 |
+
// https://github.com/tc39/proposal-string-pad-start-end
|
6319 |
+
var toLength = __webpack_require__(35)
|
6320 |
+
, repeat = __webpack_require__(85)
|
6321 |
+
, defined = __webpack_require__(33);
|
6322 |
+
|
6323 |
+
module.exports = function(that, maxLength, fillString, left){
|
6324 |
+
var S = String(defined(that))
|
6325 |
+
, stringLength = S.length
|
6326 |
+
, fillStr = fillString === undefined ? ' ' : String(fillString)
|
6327 |
+
, intMaxLength = toLength(maxLength);
|
6328 |
+
if(intMaxLength <= stringLength || fillStr == '')return S;
|
6329 |
+
var fillLen = intMaxLength - stringLength
|
6330 |
+
, stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
|
6331 |
+
if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen);
|
6332 |
+
return left ? stringFiller + S : S + stringFiller;
|
6333 |
+
};
|
6334 |
+
|
6335 |
+
|
6336 |
+
/***/ },
|
6337 |
+
/* 249 */
|
6338 |
+
/***/ function(module, exports, __webpack_require__) {
|
6339 |
+
|
6340 |
+
'use strict';
|
6341 |
+
// https://github.com/tc39/proposal-string-pad-start-end
|
6342 |
+
var $export = __webpack_require__(6)
|
6343 |
+
, $pad = __webpack_require__(248);
|
6344 |
+
|
6345 |
+
$export($export.P, 'String', {
|
6346 |
+
padEnd: function padEnd(maxLength /*, fillString = ' ' */){
|
6347 |
+
return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
|
6348 |
+
}
|
6349 |
+
});
|
6350 |
+
|
6351 |
+
/***/ },
|
6352 |
+
/* 250 */
|
6353 |
+
/***/ function(module, exports, __webpack_require__) {
|
6354 |
+
|
6355 |
+
'use strict';
|
6356 |
+
// https://github.com/sebmarkbage/ecmascript-string-left-right-trim
|
6357 |
+
__webpack_require__(81)('trimLeft', function($trim){
|
6358 |
+
return function trimLeft(){
|
6359 |
+
return $trim(this, 1);
|
6360 |
+
};
|
6361 |
+
}, 'trimStart');
|
6362 |
+
|
6363 |
+
/***/ },
|
6364 |
+
/* 251 */
|
6365 |
+
/***/ function(module, exports, __webpack_require__) {
|
6366 |
+
|
6367 |
+
'use strict';
|
6368 |
+
// https://github.com/sebmarkbage/ecmascript-string-left-right-trim
|
6369 |
+
__webpack_require__(81)('trimRight', function($trim){
|
6370 |
+
return function trimRight(){
|
6371 |
+
return $trim(this, 2);
|
6372 |
+
};
|
6373 |
+
}, 'trimEnd');
|
6374 |
+
|
6375 |
+
/***/ },
|
6376 |
+
/* 252 */
|
6377 |
+
/***/ function(module, exports, __webpack_require__) {
|
6378 |
+
|
6379 |
+
'use strict';
|
6380 |
+
// https://tc39.github.io/String.prototype.matchAll/
|
6381 |
+
var $export = __webpack_require__(6)
|
6382 |
+
, defined = __webpack_require__(33)
|
6383 |
+
, toLength = __webpack_require__(35)
|
6384 |
+
, isRegExp = __webpack_require__(128)
|
6385 |
+
, getFlags = __webpack_require__(188)
|
6386 |
+
, RegExpProto = RegExp.prototype;
|
6387 |
+
|
6388 |
+
var $RegExpStringIterator = function(regexp, string){
|
6389 |
+
this._r = regexp;
|
6390 |
+
this._s = string;
|
6391 |
+
};
|
6392 |
+
|
6393 |
+
__webpack_require__(136)($RegExpStringIterator, 'RegExp String', function next(){
|
6394 |
+
var match = this._r.exec(this._s);
|
6395 |
+
return {value: match, done: match === null};
|
6396 |
+
});
|
6397 |
+
|
6398 |
+
$export($export.P, 'String', {
|
6399 |
+
matchAll: function matchAll(regexp){
|
6400 |
+
defined(this);
|
6401 |
+
if(!isRegExp(regexp))throw TypeError(regexp + ' is not a regexp!');
|
6402 |
+
var S = String(this)
|
6403 |
+
, flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp)
|
6404 |
+
, rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);
|
6405 |
+
rx.lastIndex = toLength(regexp.lastIndex);
|
6406 |
+
return new $RegExpStringIterator(rx, S);
|
6407 |
+
}
|
6408 |
+
});
|
6409 |
+
|
6410 |
+
/***/ },
|
6411 |
+
/* 253 */
|
6412 |
+
/***/ function(module, exports, __webpack_require__) {
|
6413 |
+
|
6414 |
+
__webpack_require__(25)('asyncIterator');
|
6415 |
+
|
6416 |
+
/***/ },
|
6417 |
+
/* 254 */
|
6418 |
+
/***/ function(module, exports, __webpack_require__) {
|
6419 |
+
|
6420 |
+
__webpack_require__(25)('observable');
|
6421 |
+
|
6422 |
+
/***/ },
|
6423 |
+
/* 255 */
|
6424 |
+
/***/ function(module, exports, __webpack_require__) {
|
6425 |
+
|
6426 |
+
// https://github.com/tc39/proposal-object-getownpropertydescriptors
|
6427 |
+
var $export = __webpack_require__(6)
|
6428 |
+
, ownKeys = __webpack_require__(221)
|
6429 |
+
, toIObject = __webpack_require__(30)
|
6430 |
+
, gOPD = __webpack_require__(49)
|
6431 |
+
, createProperty = __webpack_require__(155);
|
6432 |
+
|
6433 |
+
$export($export.S, 'Object', {
|
6434 |
+
getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object){
|
6435 |
+
var O = toIObject(object)
|
6436 |
+
, getDesc = gOPD.f
|
6437 |
+
, keys = ownKeys(O)
|
6438 |
+
, result = {}
|
6439 |
+
, i = 0
|
6440 |
+
, key;
|
6441 |
+
while(keys.length > i)createProperty(result, key = keys[i++], getDesc(O, key));
|
6442 |
+
return result;
|
6443 |
+
}
|
6444 |
+
});
|
6445 |
+
|
6446 |
+
/***/ },
|
6447 |
+
/* 256 */
|
6448 |
+
/***/ function(module, exports, __webpack_require__) {
|
6449 |
+
|
6450 |
+
// https://github.com/tc39/proposal-object-values-entries
|
6451 |
+
var $export = __webpack_require__(6)
|
6452 |
+
, $values = __webpack_require__(257)(false);
|
6453 |
+
|
6454 |
+
$export($export.S, 'Object', {
|
6455 |
+
values: function values(it){
|
6456 |
+
return $values(it);
|
6457 |
+
}
|
6458 |
+
});
|
6459 |
+
|
6460 |
+
/***/ },
|
6461 |
+
/* 257 */
|
6462 |
+
/***/ function(module, exports, __webpack_require__) {
|
6463 |
+
|
6464 |
+
var getKeys = __webpack_require__(28)
|
6465 |
+
, toIObject = __webpack_require__(30)
|
6466 |
+
, isEnum = __webpack_require__(42).f;
|
6467 |
+
module.exports = function(isEntries){
|
6468 |
+
return function(it){
|
6469 |
+
var O = toIObject(it)
|
6470 |
+
, keys = getKeys(O)
|
6471 |
+
, length = keys.length
|
6472 |
+
, i = 0
|
6473 |
+
, result = []
|
6474 |
+
, key;
|
6475 |
+
while(length > i)if(isEnum.call(O, key = keys[i++])){
|
6476 |
+
result.push(isEntries ? [key, O[key]] : O[key]);
|
6477 |
+
} return result;
|
6478 |
+
};
|
6479 |
+
};
|
6480 |
+
|
6481 |
+
/***/ },
|
6482 |
+
/* 258 */
|
6483 |
+
/***/ function(module, exports, __webpack_require__) {
|
6484 |
+
|
6485 |
+
// https://github.com/tc39/proposal-object-values-entries
|
6486 |
+
var $export = __webpack_require__(6)
|
6487 |
+
, $entries = __webpack_require__(257)(true);
|
6488 |
+
|
6489 |
+
$export($export.S, 'Object', {
|
6490 |
+
entries: function entries(it){
|
6491 |
+
return $entries(it);
|
6492 |
+
}
|
6493 |
+
});
|
6494 |
+
|
6495 |
+
/***/ },
|
6496 |
+
/* 259 */
|
6497 |
+
/***/ function(module, exports, __webpack_require__) {
|
6498 |
+
|
6499 |
+
'use strict';
|
6500 |
+
var $export = __webpack_require__(6)
|
6501 |
+
, toObject = __webpack_require__(56)
|
6502 |
+
, aFunction = __webpack_require__(19)
|
6503 |
+
, $defineProperty = __webpack_require__(9);
|
6504 |
+
|
6505 |
+
// B.2.2.2 Object.prototype.__defineGetter__(P, getter)
|
6506 |
+
__webpack_require__(4) && $export($export.P + __webpack_require__(260), 'Object', {
|
6507 |
+
__defineGetter__: function __defineGetter__(P, getter){
|
6508 |
+
$defineProperty.f(toObject(this), P, {get: aFunction(getter), enumerable: true, configurable: true});
|
6509 |
+
}
|
6510 |
+
});
|
6511 |
+
|
6512 |
+
/***/ },
|
6513 |
+
/* 260 */
|
6514 |
+
/***/ function(module, exports, __webpack_require__) {
|
6515 |
+
|
6516 |
+
// Forced replacement prototype accessors methods
|
6517 |
+
module.exports = __webpack_require__(26)|| !__webpack_require__(5)(function(){
|
6518 |
+
var K = Math.random();
|
6519 |
+
// In FF throws only define methods
|
6520 |
+
__defineSetter__.call(null, K, function(){ /* empty */});
|
6521 |
+
delete __webpack_require__(2)[K];
|
6522 |
+
});
|
6523 |
+
|
6524 |
+
/***/ },
|
6525 |
+
/* 261 */
|
6526 |
+
/***/ function(module, exports, __webpack_require__) {
|
6527 |
+
|
6528 |
+
'use strict';
|
6529 |
+
var $export = __webpack_require__(6)
|
6530 |
+
, toObject = __webpack_require__(56)
|
6531 |
+
, aFunction = __webpack_require__(19)
|
6532 |
+
, $defineProperty = __webpack_require__(9);
|
6533 |
+
|
6534 |
+
// B.2.2.3 Object.prototype.__defineSetter__(P, setter)
|
6535 |
+
__webpack_require__(4) && $export($export.P + __webpack_require__(260), 'Object', {
|
6536 |
+
__defineSetter__: function __defineSetter__(P, setter){
|
6537 |
+
$defineProperty.f(toObject(this), P, {set: aFunction(setter), enumerable: true, configurable: true});
|
6538 |
+
}
|
6539 |
+
});
|
6540 |
+
|
6541 |
+
/***/ },
|
6542 |
+
/* 262 */
|
6543 |
+
/***/ function(module, exports, __webpack_require__) {
|
6544 |
+
|
6545 |
+
'use strict';
|
6546 |
+
var $export = __webpack_require__(6)
|
6547 |
+
, toObject = __webpack_require__(56)
|
6548 |
+
, toPrimitive = __webpack_require__(14)
|
6549 |
+
, getPrototypeOf = __webpack_require__(57)
|
6550 |
+
, getOwnPropertyDescriptor = __webpack_require__(49).f;
|
6551 |
+
|
6552 |
+
// B.2.2.4 Object.prototype.__lookupGetter__(P)
|
6553 |
+
__webpack_require__(4) && $export($export.P + __webpack_require__(260), 'Object', {
|
6554 |
+
__lookupGetter__: function __lookupGetter__(P){
|
6555 |
+
var O = toObject(this)
|
6556 |
+
, K = toPrimitive(P, true)
|
6557 |
+
, D;
|
6558 |
+
do {
|
6559 |
+
if(D = getOwnPropertyDescriptor(O, K))return D.get;
|
6560 |
+
} while(O = getPrototypeOf(O));
|
6561 |
+
}
|
6562 |
+
});
|
6563 |
+
|
6564 |
+
/***/ },
|
6565 |
+
/* 263 */
|
6566 |
+
/***/ function(module, exports, __webpack_require__) {
|
6567 |
+
|
6568 |
+
'use strict';
|
6569 |
+
var $export = __webpack_require__(6)
|
6570 |
+
, toObject = __webpack_require__(56)
|
6571 |
+
, toPrimitive = __webpack_require__(14)
|
6572 |
+
, getPrototypeOf = __webpack_require__(57)
|
6573 |
+
, getOwnPropertyDescriptor = __webpack_require__(49).f;
|
6574 |
+
|
6575 |
+
// B.2.2.5 Object.prototype.__lookupSetter__(P)
|
6576 |
+
__webpack_require__(4) && $export($export.P + __webpack_require__(260), 'Object', {
|
6577 |
+
__lookupSetter__: function __lookupSetter__(P){
|
6578 |
+
var O = toObject(this)
|
6579 |
+
, K = toPrimitive(P, true)
|
6580 |
+
, D;
|
6581 |
+
do {
|
6582 |
+
if(D = getOwnPropertyDescriptor(O, K))return D.set;
|
6583 |
+
} while(O = getPrototypeOf(O));
|
6584 |
+
}
|
6585 |
+
});
|
6586 |
+
|
6587 |
+
/***/ },
|
6588 |
+
/* 264 */
|
6589 |
+
/***/ function(module, exports, __webpack_require__) {
|
6590 |
+
|
6591 |
+
// https://github.com/DavidBruant/Map-Set.prototype.toJSON
|
6592 |
+
var $export = __webpack_require__(6);
|
6593 |
+
|
6594 |
+
$export($export.P + $export.R, 'Map', {toJSON: __webpack_require__(265)('Map')});
|
6595 |
+
|
6596 |
+
/***/ },
|
6597 |
+
/* 265 */
|
6598 |
+
/***/ function(module, exports, __webpack_require__) {
|
6599 |
+
|
6600 |
+
// https://github.com/DavidBruant/Map-Set.prototype.toJSON
|
6601 |
+
var classof = __webpack_require__(73)
|
6602 |
+
, from = __webpack_require__(266);
|
6603 |
+
module.exports = function(NAME){
|
6604 |
+
return function toJSON(){
|
6605 |
+
if(classof(this) != NAME)throw TypeError(NAME + "#toJSON isn't generic");
|
6606 |
+
return from(this);
|
6607 |
+
};
|
6608 |
+
};
|
6609 |
+
|
6610 |
+
/***/ },
|
6611 |
+
/* 266 */
|
6612 |
+
/***/ function(module, exports, __webpack_require__) {
|
6613 |
+
|
6614 |
+
var forOf = __webpack_require__(198);
|
6615 |
+
|
6616 |
+
module.exports = function(iter, ITERATOR){
|
6617 |
+
var result = [];
|
6618 |
+
forOf(iter, false, result.push, result, ITERATOR);
|
6619 |
+
return result;
|
6620 |
+
};
|
6621 |
+
|
6622 |
+
|
6623 |
+
/***/ },
|
6624 |
+
/* 267 */
|
6625 |
+
/***/ function(module, exports, __webpack_require__) {
|
6626 |
+
|
6627 |
+
// https://github.com/DavidBruant/Map-Set.prototype.toJSON
|
6628 |
+
var $export = __webpack_require__(6);
|
6629 |
+
|
6630 |
+
$export($export.P + $export.R, 'Set', {toJSON: __webpack_require__(265)('Set')});
|
6631 |
+
|
6632 |
+
/***/ },
|
6633 |
+
/* 268 */
|
6634 |
+
/***/ function(module, exports, __webpack_require__) {
|
6635 |
+
|
6636 |
+
// https://github.com/ljharb/proposal-global
|
6637 |
+
var $export = __webpack_require__(6);
|
6638 |
+
|
6639 |
+
$export($export.S, 'System', {global: __webpack_require__(2)});
|
6640 |
+
|
6641 |
+
/***/ },
|
6642 |
+
/* 269 */
|
6643 |
+
/***/ function(module, exports, __webpack_require__) {
|
6644 |
+
|
6645 |
+
// https://github.com/ljharb/proposal-is-error
|
6646 |
+
var $export = __webpack_require__(6)
|
6647 |
+
, cof = __webpack_require__(32);
|
6648 |
+
|
6649 |
+
$export($export.S, 'Error', {
|
6650 |
+
isError: function isError(it){
|
6651 |
+
return cof(it) === 'Error';
|
6652 |
+
}
|
6653 |
+
});
|
6654 |
+
|
6655 |
+
/***/ },
|
6656 |
+
/* 270 */
|
6657 |
+
/***/ function(module, exports, __webpack_require__) {
|
6658 |
+
|
6659 |
+
// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
|
6660 |
+
var $export = __webpack_require__(6);
|
6661 |
+
|
6662 |
+
$export($export.S, 'Math', {
|
6663 |
+
iaddh: function iaddh(x0, x1, y0, y1){
|
6664 |
+
var $x0 = x0 >>> 0
|
6665 |
+
, $x1 = x1 >>> 0
|
6666 |
+
, $y0 = y0 >>> 0;
|
6667 |
+
return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
|
6668 |
+
}
|
6669 |
+
});
|
6670 |
+
|
6671 |
+
/***/ },
|
6672 |
+
/* 271 */
|
6673 |
+
/***/ function(module, exports, __webpack_require__) {
|
6674 |
+
|
6675 |
+
// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
|
6676 |
+
var $export = __webpack_require__(6);
|
6677 |
+
|
6678 |
+
$export($export.S, 'Math', {
|
6679 |
+
isubh: function isubh(x0, x1, y0, y1){
|
6680 |
+
var $x0 = x0 >>> 0
|
6681 |
+
, $x1 = x1 >>> 0
|
6682 |
+
, $y0 = y0 >>> 0;
|
6683 |
+
return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
|
6684 |
+
}
|
6685 |
+
});
|
6686 |
+
|
6687 |
+
/***/ },
|
6688 |
+
/* 272 */
|
6689 |
+
/***/ function(module, exports, __webpack_require__) {
|
6690 |
+
|
6691 |
+
// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
|
6692 |
+
var $export = __webpack_require__(6);
|
6693 |
+
|
6694 |
+
$export($export.S, 'Math', {
|
6695 |
+
imulh: function imulh(u, v){
|
6696 |
+
var UINT16 = 0xffff
|
6697 |
+
, $u = +u
|
6698 |
+
, $v = +v
|
6699 |
+
, u0 = $u & UINT16
|
6700 |
+
, v0 = $v & UINT16
|
6701 |
+
, u1 = $u >> 16
|
6702 |
+
, v1 = $v >> 16
|
6703 |
+
, t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
|
6704 |
+
return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
|
6705 |
+
}
|
6706 |
+
});
|
6707 |
+
|
6708 |
+
/***/ },
|
6709 |
+
/* 273 */
|
6710 |
+
/***/ function(module, exports, __webpack_require__) {
|
6711 |
+
|
6712 |
+
// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
|
6713 |
+
var $export = __webpack_require__(6);
|
6714 |
+
|
6715 |
+
$export($export.S, 'Math', {
|
6716 |
+
umulh: function umulh(u, v){
|
6717 |
+
var UINT16 = 0xffff
|
6718 |
+
, $u = +u
|
6719 |
+
, $v = +v
|
6720 |
+
, u0 = $u & UINT16
|
6721 |
+
, v0 = $v & UINT16
|
6722 |
+
, u1 = $u >>> 16
|
6723 |
+
, v1 = $v >>> 16
|
6724 |
+
, t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
|
6725 |
+
return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);
|
6726 |
+
}
|
6727 |
+
});
|
6728 |
+
|
6729 |
+
/***/ },
|
6730 |
+
/* 274 */
|
6731 |
+
/***/ function(module, exports, __webpack_require__) {
|
6732 |
+
|
6733 |
+
var metadata = __webpack_require__(275)
|
6734 |
+
, anObject = __webpack_require__(10)
|
6735 |
+
, toMetaKey = metadata.key
|
6736 |
+
, ordinaryDefineOwnMetadata = metadata.set;
|
6737 |
+
|
6738 |
+
metadata.exp({defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey){
|
6739 |
+
ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));
|
6740 |
+
}});
|
6741 |
+
|
6742 |
+
/***/ },
|
6743 |
+
/* 275 */
|
6744 |
+
/***/ function(module, exports, __webpack_require__) {
|
6745 |
+
|
6746 |
+
var Map = __webpack_require__(203)
|
6747 |
+
, $export = __webpack_require__(6)
|
6748 |
+
, shared = __webpack_require__(21)('metadata')
|
6749 |
+
, store = shared.store || (shared.store = new (__webpack_require__(207)));
|
6750 |
+
|
6751 |
+
var getOrCreateMetadataMap = function(target, targetKey, create){
|
6752 |
+
var targetMetadata = store.get(target);
|
6753 |
+
if(!targetMetadata){
|
6754 |
+
if(!create)return undefined;
|
6755 |
+
store.set(target, targetMetadata = new Map);
|
6756 |
+
}
|
6757 |
+
var keyMetadata = targetMetadata.get(targetKey);
|
6758 |
+
if(!keyMetadata){
|
6759 |
+
if(!create)return undefined;
|
6760 |
+
targetMetadata.set(targetKey, keyMetadata = new Map);
|
6761 |
+
} return keyMetadata;
|
6762 |
+
};
|
6763 |
+
var ordinaryHasOwnMetadata = function(MetadataKey, O, P){
|
6764 |
+
var metadataMap = getOrCreateMetadataMap(O, P, false);
|
6765 |
+
return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
|
6766 |
+
};
|
6767 |
+
var ordinaryGetOwnMetadata = function(MetadataKey, O, P){
|
6768 |
+
var metadataMap = getOrCreateMetadataMap(O, P, false);
|
6769 |
+
return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
|
6770 |
+
};
|
6771 |
+
var ordinaryDefineOwnMetadata = function(MetadataKey, MetadataValue, O, P){
|
6772 |
+
getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
|
6773 |
+
};
|
6774 |
+
var ordinaryOwnMetadataKeys = function(target, targetKey){
|
6775 |
+
var metadataMap = getOrCreateMetadataMap(target, targetKey, false)
|
6776 |
+
, keys = [];
|
6777 |
+
if(metadataMap)metadataMap.forEach(function(_, key){ keys.push(key); });
|
6778 |
+
return keys;
|
6779 |
+
};
|
6780 |
+
var toMetaKey = function(it){
|
6781 |
+
return it === undefined || typeof it == 'symbol' ? it : String(it);
|
6782 |
+
};
|
6783 |
+
var exp = function(O){
|
6784 |
+
$export($export.S, 'Reflect', O);
|
6785 |
+
};
|
6786 |
+
|
6787 |
+
module.exports = {
|
6788 |
+
store: store,
|
6789 |
+
map: getOrCreateMetadataMap,
|
6790 |
+
has: ordinaryHasOwnMetadata,
|
6791 |
+
get: ordinaryGetOwnMetadata,
|
6792 |
+
set: ordinaryDefineOwnMetadata,
|
6793 |
+
keys: ordinaryOwnMetadataKeys,
|
6794 |
+
key: toMetaKey,
|
6795 |
+
exp: exp
|
6796 |
+
};
|
6797 |
+
|
6798 |
+
/***/ },
|
6799 |
+
/* 276 */
|
6800 |
+
/***/ function(module, exports, __webpack_require__) {
|
6801 |
+
|
6802 |
+
var metadata = __webpack_require__(275)
|
6803 |
+
, anObject = __webpack_require__(10)
|
6804 |
+
, toMetaKey = metadata.key
|
6805 |
+
, getOrCreateMetadataMap = metadata.map
|
6806 |
+
, store = metadata.store;
|
6807 |
+
|
6808 |
+
metadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target /*, targetKey */){
|
6809 |
+
var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2])
|
6810 |
+
, metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
|
6811 |
+
if(metadataMap === undefined || !metadataMap['delete'](metadataKey))return false;
|
6812 |
+
if(metadataMap.size)return true;
|
6813 |
+
var targetMetadata = store.get(target);
|
6814 |
+
targetMetadata['delete'](targetKey);
|
6815 |
+
return !!targetMetadata.size || store['delete'](target);
|
6816 |
+
}});
|
6817 |
+
|
6818 |
+
/***/ },
|
6819 |
+
/* 277 */
|
6820 |
+
/***/ function(module, exports, __webpack_require__) {
|
6821 |
+
|
6822 |
+
var metadata = __webpack_require__(275)
|
6823 |
+
, anObject = __webpack_require__(10)
|
6824 |
+
, getPrototypeOf = __webpack_require__(57)
|
6825 |
+
, ordinaryHasOwnMetadata = metadata.has
|
6826 |
+
, ordinaryGetOwnMetadata = metadata.get
|
6827 |
+
, toMetaKey = metadata.key;
|
6828 |
+
|
6829 |
+
var ordinaryGetMetadata = function(MetadataKey, O, P){
|
6830 |
+
var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
|
6831 |
+
if(hasOwn)return ordinaryGetOwnMetadata(MetadataKey, O, P);
|
6832 |
+
var parent = getPrototypeOf(O);
|
6833 |
+
return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
|
6834 |
+
};
|
6835 |
+
|
6836 |
+
metadata.exp({getMetadata: function getMetadata(metadataKey, target /*, targetKey */){
|
6837 |
+
return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
|
6838 |
+
}});
|
6839 |
+
|
6840 |
+
/***/ },
|
6841 |
+
/* 278 */
|
6842 |
+
/***/ function(module, exports, __webpack_require__) {
|
6843 |
+
|
6844 |
+
var Set = __webpack_require__(206)
|
6845 |
+
, from = __webpack_require__(266)
|
6846 |
+
, metadata = __webpack_require__(275)
|
6847 |
+
, anObject = __webpack_require__(10)
|
6848 |
+
, getPrototypeOf = __webpack_require__(57)
|
6849 |
+
, ordinaryOwnMetadataKeys = metadata.keys
|
6850 |
+
, toMetaKey = metadata.key;
|
6851 |
+
|
6852 |
+
var ordinaryMetadataKeys = function(O, P){
|
6853 |
+
var oKeys = ordinaryOwnMetadataKeys(O, P)
|
6854 |
+
, parent = getPrototypeOf(O);
|
6855 |
+
if(parent === null)return oKeys;
|
6856 |
+
var pKeys = ordinaryMetadataKeys(parent, P);
|
6857 |
+
return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;
|
6858 |
+
};
|
6859 |
+
|
6860 |
+
metadata.exp({getMetadataKeys: function getMetadataKeys(target /*, targetKey */){
|
6861 |
+
return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
|
6862 |
+
}});
|
6863 |
+
|
6864 |
+
/***/ },
|
6865 |
+
/* 279 */
|
6866 |
+
/***/ function(module, exports, __webpack_require__) {
|
6867 |
+
|
6868 |
+
var metadata = __webpack_require__(275)
|
6869 |
+
, anObject = __webpack_require__(10)
|
6870 |
+
, ordinaryGetOwnMetadata = metadata.get
|
6871 |
+
, toMetaKey = metadata.key;
|
6872 |
+
|
6873 |
+
metadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target /*, targetKey */){
|
6874 |
+
return ordinaryGetOwnMetadata(metadataKey, anObject(target)
|
6875 |
+
, arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
|
6876 |
+
}});
|
6877 |
+
|
6878 |
+
/***/ },
|
6879 |
+
/* 280 */
|
6880 |
+
/***/ function(module, exports, __webpack_require__) {
|
6881 |
+
|
6882 |
+
var metadata = __webpack_require__(275)
|
6883 |
+
, anObject = __webpack_require__(10)
|
6884 |
+
, ordinaryOwnMetadataKeys = metadata.keys
|
6885 |
+
, toMetaKey = metadata.key;
|
6886 |
+
|
6887 |
+
metadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target /*, targetKey */){
|
6888 |
+
return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
|
6889 |
+
}});
|
6890 |
+
|
6891 |
+
/***/ },
|
6892 |
+
/* 281 */
|
6893 |
+
/***/ function(module, exports, __webpack_require__) {
|
6894 |
+
|
6895 |
+
var metadata = __webpack_require__(275)
|
6896 |
+
, anObject = __webpack_require__(10)
|
6897 |
+
, getPrototypeOf = __webpack_require__(57)
|
6898 |
+
, ordinaryHasOwnMetadata = metadata.has
|
6899 |
+
, toMetaKey = metadata.key;
|
6900 |
+
|
6901 |
+
var ordinaryHasMetadata = function(MetadataKey, O, P){
|
6902 |
+
var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
|
6903 |
+
if(hasOwn)return true;
|
6904 |
+
var parent = getPrototypeOf(O);
|
6905 |
+
return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
|
6906 |
+
};
|
6907 |
+
|
6908 |
+
metadata.exp({hasMetadata: function hasMetadata(metadataKey, target /*, targetKey */){
|
6909 |
+
return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
|
6910 |
+
}});
|
6911 |
+
|
6912 |
+
/***/ },
|
6913 |
+
/* 282 */
|
6914 |
+
/***/ function(module, exports, __webpack_require__) {
|
6915 |
+
|
6916 |
+
var metadata = __webpack_require__(275)
|
6917 |
+
, anObject = __webpack_require__(10)
|
6918 |
+
, ordinaryHasOwnMetadata = metadata.has
|
6919 |
+
, toMetaKey = metadata.key;
|
6920 |
+
|
6921 |
+
metadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target /*, targetKey */){
|
6922 |
+
return ordinaryHasOwnMetadata(metadataKey, anObject(target)
|
6923 |
+
, arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
|
6924 |
+
}});
|
6925 |
+
|
6926 |
+
/***/ },
|
6927 |
+
/* 283 */
|
6928 |
+
/***/ function(module, exports, __webpack_require__) {
|
6929 |
+
|
6930 |
+
var metadata = __webpack_require__(275)
|
6931 |
+
, anObject = __webpack_require__(10)
|
6932 |
+
, aFunction = __webpack_require__(19)
|
6933 |
+
, toMetaKey = metadata.key
|
6934 |
+
, ordinaryDefineOwnMetadata = metadata.set;
|
6935 |
+
|
6936 |
+
metadata.exp({metadata: function metadata(metadataKey, metadataValue){
|
6937 |
+
return function decorator(target, targetKey){
|
6938 |
+
ordinaryDefineOwnMetadata(
|
6939 |
+
metadataKey, metadataValue,
|
6940 |
+
(targetKey !== undefined ? anObject : aFunction)(target),
|
6941 |
+
toMetaKey(targetKey)
|
6942 |
+
);
|
6943 |
+
};
|
6944 |
+
}});
|
6945 |
+
|
6946 |
+
/***/ },
|
6947 |
+
/* 284 */
|
6948 |
+
/***/ function(module, exports, __webpack_require__) {
|
6949 |
+
|
6950 |
+
// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask
|
6951 |
+
var $export = __webpack_require__(6)
|
6952 |
+
, microtask = __webpack_require__(201)()
|
6953 |
+
, process = __webpack_require__(2).process
|
6954 |
+
, isNode = __webpack_require__(32)(process) == 'process';
|
6955 |
+
|
6956 |
+
$export($export.G, {
|
6957 |
+
asap: function asap(fn){
|
6958 |
+
var domain = isNode && process.domain;
|
6959 |
+
microtask(domain ? domain.bind(fn) : fn);
|
6960 |
+
}
|
6961 |
+
});
|
6962 |
+
|
6963 |
+
/***/ },
|
6964 |
+
/* 285 */
|
6965 |
+
/***/ function(module, exports, __webpack_require__) {
|
6966 |
+
|
6967 |
+
'use strict';
|
6968 |
+
// https://github.com/zenparsing/es-observable
|
6969 |
+
var $export = __webpack_require__(6)
|
6970 |
+
, global = __webpack_require__(2)
|
6971 |
+
, core = __webpack_require__(7)
|
6972 |
+
, microtask = __webpack_require__(201)()
|
6973 |
+
, OBSERVABLE = __webpack_require__(23)('observable')
|
6974 |
+
, aFunction = __webpack_require__(19)
|
6975 |
+
, anObject = __webpack_require__(10)
|
6976 |
+
, anInstance = __webpack_require__(197)
|
6977 |
+
, redefineAll = __webpack_require__(202)
|
6978 |
+
, hide = __webpack_require__(8)
|
6979 |
+
, forOf = __webpack_require__(198)
|
6980 |
+
, RETURN = forOf.RETURN;
|
6981 |
+
|
6982 |
+
var getMethod = function(fn){
|
6983 |
+
return fn == null ? undefined : aFunction(fn);
|
6984 |
+
};
|
6985 |
+
|
6986 |
+
var cleanupSubscription = function(subscription){
|
6987 |
+
var cleanup = subscription._c;
|
6988 |
+
if(cleanup){
|
6989 |
+
subscription._c = undefined;
|
6990 |
+
cleanup();
|
6991 |
+
}
|
6992 |
+
};
|
6993 |
+
|
6994 |
+
var subscriptionClosed = function(subscription){
|
6995 |
+
return subscription._o === undefined;
|
6996 |
+
};
|
6997 |
+
|
6998 |
+
var closeSubscription = function(subscription){
|
6999 |
+
if(!subscriptionClosed(subscription)){
|
7000 |
+
subscription._o = undefined;
|
7001 |
+
cleanupSubscription(subscription);
|
7002 |
+
}
|
7003 |
+
};
|
7004 |
+
|
7005 |
+
var Subscription = function(observer, subscriber){
|
7006 |
+
anObject(observer);
|
7007 |
+
this._c = undefined;
|
7008 |
+
this._o = observer;
|
7009 |
+
observer = new SubscriptionObserver(this);
|
7010 |
+
try {
|
7011 |
+
var cleanup = subscriber(observer)
|
7012 |
+
, subscription = cleanup;
|
7013 |
+
if(cleanup != null){
|
7014 |
+
if(typeof cleanup.unsubscribe === 'function')cleanup = function(){ subscription.unsubscribe(); };
|
7015 |
+
else aFunction(cleanup);
|
7016 |
+
this._c = cleanup;
|
7017 |
+
}
|
7018 |
+
} catch(e){
|
7019 |
+
observer.error(e);
|
7020 |
+
return;
|
7021 |
+
} if(subscriptionClosed(this))cleanupSubscription(this);
|
7022 |
+
};
|
7023 |
+
|
7024 |
+
Subscription.prototype = redefineAll({}, {
|
7025 |
+
unsubscribe: function unsubscribe(){ closeSubscription(this); }
|
7026 |
+
});
|
7027 |
+
|
7028 |
+
var SubscriptionObserver = function(subscription){
|
7029 |
+
this._s = subscription;
|
7030 |
+
};
|
7031 |
+
|
7032 |
+
SubscriptionObserver.prototype = redefineAll({}, {
|
7033 |
+
next: function next(value){
|
7034 |
+
var subscription = this._s;
|
7035 |
+
if(!subscriptionClosed(subscription)){
|
7036 |
+
var observer = subscription._o;
|
7037 |
+
try {
|
7038 |
+
var m = getMethod(observer.next);
|
7039 |
+
if(m)return m.call(observer, value);
|
7040 |
+
} catch(e){
|
7041 |
+
try {
|
7042 |
+
closeSubscription(subscription);
|
7043 |
+
} finally {
|
7044 |
+
throw e;
|
7045 |
+
}
|
7046 |
+
}
|
7047 |
+
}
|
7048 |
+
},
|
7049 |
+
error: function error(value){
|
7050 |
+
var subscription = this._s;
|
7051 |
+
if(subscriptionClosed(subscription))throw value;
|
7052 |
+
var observer = subscription._o;
|
7053 |
+
subscription._o = undefined;
|
7054 |
+
try {
|
7055 |
+
var m = getMethod(observer.error);
|
7056 |
+
if(!m)throw value;
|
7057 |
+
value = m.call(observer, value);
|
7058 |
+
} catch(e){
|
7059 |
+
try {
|
7060 |
+
cleanupSubscription(subscription);
|
7061 |
+
} finally {
|
7062 |
+
throw e;
|
7063 |
+
}
|
7064 |
+
} cleanupSubscription(subscription);
|
7065 |
+
return value;
|
7066 |
+
},
|
7067 |
+
complete: function complete(value){
|
7068 |
+
var subscription = this._s;
|
7069 |
+
if(!subscriptionClosed(subscription)){
|
7070 |
+
var observer = subscription._o;
|
7071 |
+
subscription._o = undefined;
|
7072 |
+
try {
|
7073 |
+
var m = getMethod(observer.complete);
|
7074 |
+
value = m ? m.call(observer, value) : undefined;
|
7075 |
+
} catch(e){
|
7076 |
+
try {
|
7077 |
+
cleanupSubscription(subscription);
|
7078 |
+
} finally {
|
7079 |
+
throw e;
|
7080 |
+
}
|
7081 |
+
} cleanupSubscription(subscription);
|
7082 |
+
return value;
|
7083 |
+
}
|
7084 |
+
}
|
7085 |
+
});
|
7086 |
+
|
7087 |
+
var $Observable = function Observable(subscriber){
|
7088 |
+
anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);
|
7089 |
+
};
|
7090 |
+
|
7091 |
+
redefineAll($Observable.prototype, {
|
7092 |
+
subscribe: function subscribe(observer){
|
7093 |
+
return new Subscription(observer, this._f);
|
7094 |
+
},
|
7095 |
+
forEach: function forEach(fn){
|
7096 |
+
var that = this;
|
7097 |
+
return new (core.Promise || global.Promise)(function(resolve, reject){
|
7098 |
+
aFunction(fn);
|
7099 |
+
var subscription = that.subscribe({
|
7100 |
+
next : function(value){
|
7101 |
+
try {
|
7102 |
+
return fn(value);
|
7103 |
+
} catch(e){
|
7104 |
+
reject(e);
|
7105 |
+
subscription.unsubscribe();
|
7106 |
+
}
|
7107 |
+
},
|
7108 |
+
error: reject,
|
7109 |
+
complete: resolve
|
7110 |
+
});
|
7111 |
+
});
|
7112 |
+
}
|
7113 |
+
});
|
7114 |
+
|
7115 |
+
redefineAll($Observable, {
|
7116 |
+
from: function from(x){
|
7117 |
+
var C = typeof this === 'function' ? this : $Observable;
|
7118 |
+
var method = getMethod(anObject(x)[OBSERVABLE]);
|
7119 |
+
if(method){
|
7120 |
+
var observable = anObject(method.call(x));
|
7121 |
+
return observable.constructor === C ? observable : new C(function(observer){
|
7122 |
+
return observable.subscribe(observer);
|
7123 |
+
});
|
7124 |
+
}
|
7125 |
+
return new C(function(observer){
|
7126 |
+
var done = false;
|
7127 |
+
microtask(function(){
|
7128 |
+
if(!done){
|
7129 |
+
try {
|
7130 |
+
if(forOf(x, false, function(it){
|
7131 |
+
observer.next(it);
|
7132 |
+
if(done)return RETURN;
|
7133 |
+
}) === RETURN)return;
|
7134 |
+
} catch(e){
|
7135 |
+
if(done)throw e;
|
7136 |
+
observer.error(e);
|
7137 |
+
return;
|
7138 |
+
} observer.complete();
|
7139 |
+
}
|
7140 |
+
});
|
7141 |
+
return function(){ done = true; };
|
7142 |
+
});
|
7143 |
+
},
|
7144 |
+
of: function of(){
|
7145 |
+
for(var i = 0, l = arguments.length, items = Array(l); i < l;)items[i] = arguments[i++];
|
7146 |
+
return new (typeof this === 'function' ? this : $Observable)(function(observer){
|
7147 |
+
var done = false;
|
7148 |
+
microtask(function(){
|
7149 |
+
if(!done){
|
7150 |
+
for(var i = 0; i < items.length; ++i){
|
7151 |
+
observer.next(items[i]);
|
7152 |
+
if(done)return;
|
7153 |
+
} observer.complete();
|
7154 |
+
}
|
7155 |
+
});
|
7156 |
+
return function(){ done = true; };
|
7157 |
+
});
|
7158 |
+
}
|
7159 |
+
});
|
7160 |
+
|
7161 |
+
hide($Observable.prototype, OBSERVABLE, function(){ return this; });
|
7162 |
+
|
7163 |
+
$export($export.G, {Observable: $Observable});
|
7164 |
+
|
7165 |
+
__webpack_require__(186)('Observable');
|
7166 |
+
|
7167 |
+
/***/ },
|
7168 |
+
/* 286 */
|
7169 |
+
/***/ function(module, exports, __webpack_require__) {
|
7170 |
+
|
7171 |
+
var $export = __webpack_require__(6)
|
7172 |
+
, $task = __webpack_require__(200);
|
7173 |
+
$export($export.G + $export.B, {
|
7174 |
+
setImmediate: $task.set,
|
7175 |
+
clearImmediate: $task.clear
|
7176 |
+
});
|
7177 |
+
|
7178 |
+
/***/ },
|
7179 |
+
/* 287 */
|
7180 |
+
/***/ function(module, exports, __webpack_require__) {
|
7181 |
+
|
7182 |
+
var $iterators = __webpack_require__(183)
|
7183 |
+
, redefine = __webpack_require__(16)
|
7184 |
+
, global = __webpack_require__(2)
|
7185 |
+
, hide = __webpack_require__(8)
|
7186 |
+
, Iterators = __webpack_require__(135)
|
7187 |
+
, wks = __webpack_require__(23)
|
7188 |
+
, ITERATOR = wks('iterator')
|
7189 |
+
, TO_STRING_TAG = wks('toStringTag')
|
7190 |
+
, ArrayValues = Iterators.Array;
|
7191 |
+
|
7192 |
+
for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){
|
7193 |
+
var NAME = collections[i]
|
7194 |
+
, Collection = global[NAME]
|
7195 |
+
, proto = Collection && Collection.prototype
|
7196 |
+
, key;
|
7197 |
+
if(proto){
|
7198 |
+
if(!proto[ITERATOR])hide(proto, ITERATOR, ArrayValues);
|
7199 |
+
if(!proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);
|
7200 |
+
Iterators[NAME] = ArrayValues;
|
7201 |
+
for(key in $iterators)if(!proto[key])redefine(proto, key, $iterators[key], true);
|
7202 |
+
}
|
7203 |
+
}
|
7204 |
+
|
7205 |
+
/***/ },
|
7206 |
+
/* 288 */
|
7207 |
+
/***/ function(module, exports, __webpack_require__) {
|
7208 |
+
|
7209 |
+
// ie9- setTimeout & setInterval additional parameters fix
|
7210 |
+
var global = __webpack_require__(2)
|
7211 |
+
, $export = __webpack_require__(6)
|
7212 |
+
, invoke = __webpack_require__(76)
|
7213 |
+
, partial = __webpack_require__(289)
|
7214 |
+
, navigator = global.navigator
|
7215 |
+
, MSIE = !!navigator && /MSIE .\./.test(navigator.userAgent); // <- dirty ie9- check
|
7216 |
+
var wrap = function(set){
|
7217 |
+
return MSIE ? function(fn, time /*, ...args */){
|
7218 |
+
return set(invoke(
|
7219 |
+
partial,
|
7220 |
+
[].slice.call(arguments, 2),
|
7221 |
+
typeof fn == 'function' ? fn : Function(fn)
|
7222 |
+
), time);
|
7223 |
+
} : set;
|
7224 |
+
};
|
7225 |
+
$export($export.G + $export.B + $export.F * MSIE, {
|
7226 |
+
setTimeout: wrap(global.setTimeout),
|
7227 |
+
setInterval: wrap(global.setInterval)
|
7228 |
+
});
|
7229 |
+
|
7230 |
+
/***/ },
|
7231 |
+
/* 289 */
|
7232 |
+
/***/ function(module, exports, __webpack_require__) {
|
7233 |
+
|
7234 |
+
'use strict';
|
7235 |
+
var path = __webpack_require__(290)
|
7236 |
+
, invoke = __webpack_require__(76)
|
7237 |
+
, aFunction = __webpack_require__(19);
|
7238 |
+
module.exports = function(/* ...pargs */){
|
7239 |
+
var fn = aFunction(this)
|
7240 |
+
, length = arguments.length
|
7241 |
+
, pargs = Array(length)
|
7242 |
+
, i = 0
|
7243 |
+
, _ = path._
|
7244 |
+
, holder = false;
|
7245 |
+
while(length > i)if((pargs[i] = arguments[i++]) === _)holder = true;
|
7246 |
+
return function(/* ...args */){
|
7247 |
+
var that = this
|
7248 |
+
, aLen = arguments.length
|
7249 |
+
, j = 0, k = 0, args;
|
7250 |
+
if(!holder && !aLen)return invoke(fn, pargs, that);
|
7251 |
+
args = pargs.slice();
|
7252 |
+
if(holder)for(;length > j; j++)if(args[j] === _)args[j] = arguments[k++];
|
7253 |
+
while(aLen > k)args.push(arguments[k++]);
|
7254 |
+
return invoke(fn, args, that);
|
7255 |
+
};
|
7256 |
+
};
|
7257 |
+
|
7258 |
+
/***/ },
|
7259 |
+
/* 290 */
|
7260 |
+
/***/ function(module, exports, __webpack_require__) {
|
7261 |
+
|
7262 |
+
module.exports = __webpack_require__(2);
|
7263 |
+
|
7264 |
+
/***/ },
|
7265 |
+
/* 291 */
|
7266 |
+
/***/ function(module, exports, __webpack_require__) {
|
7267 |
+
|
7268 |
+
'use strict';
|
7269 |
+
var ctx = __webpack_require__(18)
|
7270 |
+
, $export = __webpack_require__(6)
|
7271 |
+
, createDesc = __webpack_require__(15)
|
7272 |
+
, assign = __webpack_require__(67)
|
7273 |
+
, create = __webpack_require__(44)
|
7274 |
+
, getPrototypeOf = __webpack_require__(57)
|
7275 |
+
, getKeys = __webpack_require__(28)
|
7276 |
+
, dP = __webpack_require__(9)
|
7277 |
+
, keyOf = __webpack_require__(27)
|
7278 |
+
, aFunction = __webpack_require__(19)
|
7279 |
+
, forOf = __webpack_require__(198)
|
7280 |
+
, isIterable = __webpack_require__(292)
|
7281 |
+
, $iterCreate = __webpack_require__(136)
|
7282 |
+
, step = __webpack_require__(184)
|
7283 |
+
, isObject = __webpack_require__(11)
|
7284 |
+
, toIObject = __webpack_require__(30)
|
7285 |
+
, DESCRIPTORS = __webpack_require__(4)
|
7286 |
+
, has = __webpack_require__(3);
|
7287 |
+
|
7288 |
+
// 0 -> Dict.forEach
|
7289 |
+
// 1 -> Dict.map
|
7290 |
+
// 2 -> Dict.filter
|
7291 |
+
// 3 -> Dict.some
|
7292 |
+
// 4 -> Dict.every
|
7293 |
+
// 5 -> Dict.find
|
7294 |
+
// 6 -> Dict.findKey
|
7295 |
+
// 7 -> Dict.mapPairs
|
7296 |
+
var createDictMethod = function(TYPE){
|
7297 |
+
var IS_MAP = TYPE == 1
|
7298 |
+
, IS_EVERY = TYPE == 4;
|
7299 |
+
return function(object, callbackfn, that /* = undefined */){
|
7300 |
+
var f = ctx(callbackfn, that, 3)
|
7301 |
+
, O = toIObject(object)
|
7302 |
+
, result = IS_MAP || TYPE == 7 || TYPE == 2
|
7303 |
+
? new (typeof this == 'function' ? this : Dict) : undefined
|
7304 |
+
, key, val, res;
|
7305 |
+
for(key in O)if(has(O, key)){
|
7306 |
+
val = O[key];
|
7307 |
+
res = f(val, key, object);
|
7308 |
+
if(TYPE){
|
7309 |
+
if(IS_MAP)result[key] = res; // map
|
7310 |
+
else if(res)switch(TYPE){
|
7311 |
+
case 2: result[key] = val; break; // filter
|
7312 |
+
case 3: return true; // some
|
7313 |
+
case 5: return val; // find
|
7314 |
+
case 6: return key; // findKey
|
7315 |
+
case 7: result[res[0]] = res[1]; // mapPairs
|
7316 |
+
} else if(IS_EVERY)return false; // every
|
7317 |
+
}
|
7318 |
+
}
|
7319 |
+
return TYPE == 3 || IS_EVERY ? IS_EVERY : result;
|
7320 |
+
};
|
7321 |
+
};
|
7322 |
+
var findKey = createDictMethod(6);
|
7323 |
+
|
7324 |
+
var createDictIter = function(kind){
|
7325 |
+
return function(it){
|
7326 |
+
return new DictIterator(it, kind);
|
7327 |
+
};
|
7328 |
+
};
|
7329 |
+
var DictIterator = function(iterated, kind){
|
7330 |
+
this._t = toIObject(iterated); // target
|
7331 |
+
this._a = getKeys(iterated); // keys
|
7332 |
+
this._i = 0; // next index
|
7333 |
+
this._k = kind; // kind
|
7334 |
+
};
|
7335 |
+
$iterCreate(DictIterator, 'Dict', function(){
|
7336 |
+
var that = this
|
7337 |
+
, O = that._t
|
7338 |
+
, keys = that._a
|
7339 |
+
, kind = that._k
|
7340 |
+
, key;
|
7341 |
+
do {
|
7342 |
+
if(that._i >= keys.length){
|
7343 |
+
that._t = undefined;
|
7344 |
+
return step(1);
|
7345 |
+
}
|
7346 |
+
} while(!has(O, key = keys[that._i++]));
|
7347 |
+
if(kind == 'keys' )return step(0, key);
|
7348 |
+
if(kind == 'values')return step(0, O[key]);
|
7349 |
+
return step(0, [key, O[key]]);
|
7350 |
+
});
|
7351 |
+
|
7352 |
+
function Dict(iterable){
|
7353 |
+
var dict = create(null);
|
7354 |
+
if(iterable != undefined){
|
7355 |
+
if(isIterable(iterable)){
|
7356 |
+
forOf(iterable, true, function(key, value){
|
7357 |
+
dict[key] = value;
|
7358 |
+
});
|
7359 |
+
} else assign(dict, iterable);
|
7360 |
+
}
|
7361 |
+
return dict;
|
7362 |
+
}
|
7363 |
+
Dict.prototype = null;
|
7364 |
+
|
7365 |
+
function reduce(object, mapfn, init){
|
7366 |
+
aFunction(mapfn);
|
7367 |
+
var O = toIObject(object)
|
7368 |
+
, keys = getKeys(O)
|
7369 |
+
, length = keys.length
|
7370 |
+
, i = 0
|
7371 |
+
, memo, key;
|
7372 |
+
if(arguments.length < 3){
|
7373 |
+
if(!length)throw TypeError('Reduce of empty object with no initial value');
|
7374 |
+
memo = O[keys[i++]];
|
7375 |
+
} else memo = Object(init);
|
7376 |
+
while(length > i)if(has(O, key = keys[i++])){
|
7377 |
+
memo = mapfn(memo, O[key], key, object);
|
7378 |
+
}
|
7379 |
+
return memo;
|
7380 |
+
}
|
7381 |
+
|
7382 |
+
function includes(object, el){
|
7383 |
+
return (el == el ? keyOf(object, el) : findKey(object, function(it){
|
7384 |
+
return it != it;
|
7385 |
+
})) !== undefined;
|
7386 |
+
}
|
7387 |
+
|
7388 |
+
function get(object, key){
|
7389 |
+
if(has(object, key))return object[key];
|
7390 |
+
}
|
7391 |
+
function set(object, key, value){
|
7392 |
+
if(DESCRIPTORS && key in Object)dP.f(object, key, createDesc(0, value));
|
7393 |
+
else object[key] = value;
|
7394 |
+
return object;
|
7395 |
+
}
|
7396 |
+
|
7397 |
+
function isDict(it){
|
7398 |
+
return isObject(it) && getPrototypeOf(it) === Dict.prototype;
|
7399 |
+
}
|
7400 |
+
|
7401 |
+
$export($export.G + $export.F, {Dict: Dict});
|
7402 |
+
|
7403 |
+
$export($export.S, 'Dict', {
|
7404 |
+
keys: createDictIter('keys'),
|
7405 |
+
values: createDictIter('values'),
|
7406 |
+
entries: createDictIter('entries'),
|
7407 |
+
forEach: createDictMethod(0),
|
7408 |
+
map: createDictMethod(1),
|
7409 |
+
filter: createDictMethod(2),
|
7410 |
+
some: createDictMethod(3),
|
7411 |
+
every: createDictMethod(4),
|
7412 |
+
find: createDictMethod(5),
|
7413 |
+
findKey: findKey,
|
7414 |
+
mapPairs: createDictMethod(7),
|
7415 |
+
reduce: reduce,
|
7416 |
+
keyOf: keyOf,
|
7417 |
+
includes: includes,
|
7418 |
+
has: has,
|
7419 |
+
get: get,
|
7420 |
+
set: set,
|
7421 |
+
isDict: isDict
|
7422 |
+
});
|
7423 |
+
|
7424 |
+
/***/ },
|
7425 |
+
/* 292 */
|
7426 |
+
/***/ function(module, exports, __webpack_require__) {
|
7427 |
+
|
7428 |
+
var classof = __webpack_require__(73)
|
7429 |
+
, ITERATOR = __webpack_require__(23)('iterator')
|
7430 |
+
, Iterators = __webpack_require__(135);
|
7431 |
+
module.exports = __webpack_require__(7).isIterable = function(it){
|
7432 |
+
var O = Object(it);
|
7433 |
+
return O[ITERATOR] !== undefined
|
7434 |
+
|| '@@iterator' in O
|
7435 |
+
|| Iterators.hasOwnProperty(classof(O));
|
7436 |
+
};
|
7437 |
+
|
7438 |
+
/***/ },
|
7439 |
+
/* 293 */
|
7440 |
+
/***/ function(module, exports, __webpack_require__) {
|
7441 |
+
|
7442 |
+
var anObject = __webpack_require__(10)
|
7443 |
+
, get = __webpack_require__(156);
|
7444 |
+
module.exports = __webpack_require__(7).getIterator = function(it){
|
7445 |
+
var iterFn = get(it);
|
7446 |
+
if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');
|
7447 |
+
return anObject(iterFn.call(it));
|
7448 |
+
};
|
7449 |
+
|
7450 |
+
/***/ },
|
7451 |
+
/* 294 */
|
7452 |
+
/***/ function(module, exports, __webpack_require__) {
|
7453 |
+
|
7454 |
+
var global = __webpack_require__(2)
|
7455 |
+
, core = __webpack_require__(7)
|
7456 |
+
, $export = __webpack_require__(6)
|
7457 |
+
, partial = __webpack_require__(289);
|
7458 |
+
// https://esdiscuss.org/topic/promise-returning-delay-function
|
7459 |
+
$export($export.G + $export.F, {
|
7460 |
+
delay: function delay(time){
|
7461 |
+
return new (core.Promise || global.Promise)(function(resolve){
|
7462 |
+
setTimeout(partial.call(resolve, true), time);
|
7463 |
+
});
|
7464 |
+
}
|
7465 |
+
});
|
7466 |
+
|
7467 |
+
/***/ },
|
7468 |
+
/* 295 */
|
7469 |
+
/***/ function(module, exports, __webpack_require__) {
|
7470 |
+
|
7471 |
+
var path = __webpack_require__(290)
|
7472 |
+
, $export = __webpack_require__(6);
|
7473 |
+
|
7474 |
+
// Placeholder
|
7475 |
+
__webpack_require__(7)._ = path._ = path._ || {};
|
7476 |
+
|
7477 |
+
$export($export.P + $export.F, 'Function', {part: __webpack_require__(289)});
|
7478 |
+
|
7479 |
+
/***/ },
|
7480 |
+
/* 296 */
|
7481 |
+
/***/ function(module, exports, __webpack_require__) {
|
7482 |
+
|
7483 |
+
var $export = __webpack_require__(6);
|
7484 |
+
|
7485 |
+
$export($export.S + $export.F, 'Object', {isObject: __webpack_require__(11)});
|
7486 |
+
|
7487 |
+
/***/ },
|
7488 |
+
/* 297 */
|
7489 |
+
/***/ function(module, exports, __webpack_require__) {
|
7490 |
+
|
7491 |
+
var $export = __webpack_require__(6);
|
7492 |
+
|
7493 |
+
$export($export.S + $export.F, 'Object', {classof: __webpack_require__(73)});
|
7494 |
+
|
7495 |
+
/***/ },
|
7496 |
+
/* 298 */
|
7497 |
+
/***/ function(module, exports, __webpack_require__) {
|
7498 |
+
|
7499 |
+
var $export = __webpack_require__(6)
|
7500 |
+
, define = __webpack_require__(299);
|
7501 |
+
|
7502 |
+
$export($export.S + $export.F, 'Object', {define: define});
|
7503 |
+
|
7504 |
+
/***/ },
|
7505 |
+
/* 299 */
|
7506 |
+
/***/ function(module, exports, __webpack_require__) {
|
7507 |
+
|
7508 |
+
var dP = __webpack_require__(9)
|
7509 |
+
, gOPD = __webpack_require__(49)
|
7510 |
+
, ownKeys = __webpack_require__(221)
|
7511 |
+
, toIObject = __webpack_require__(30);
|
7512 |
+
|
7513 |
+
module.exports = function define(target, mixin){
|
7514 |
+
var keys = ownKeys(toIObject(mixin))
|
7515 |
+
, length = keys.length
|
7516 |
+
, i = 0, key;
|
7517 |
+
while(length > i)dP.f(target, key = keys[i++], gOPD.f(mixin, key));
|
7518 |
+
return target;
|
7519 |
+
};
|
7520 |
+
|
7521 |
+
/***/ },
|
7522 |
+
/* 300 */
|
7523 |
+
/***/ function(module, exports, __webpack_require__) {
|
7524 |
+
|
7525 |
+
var $export = __webpack_require__(6)
|
7526 |
+
, define = __webpack_require__(299)
|
7527 |
+
, create = __webpack_require__(44);
|
7528 |
+
|
7529 |
+
$export($export.S + $export.F, 'Object', {
|
7530 |
+
make: function(proto, mixin){
|
7531 |
+
return define(create(proto), mixin);
|
7532 |
+
}
|
7533 |
+
});
|
7534 |
+
|
7535 |
+
/***/ },
|
7536 |
+
/* 301 */
|
7537 |
+
/***/ function(module, exports, __webpack_require__) {
|
7538 |
+
|
7539 |
+
'use strict';
|
7540 |
+
__webpack_require__(134)(Number, 'Number', function(iterated){
|
7541 |
+
this._l = +iterated;
|
7542 |
+
this._i = 0;
|
7543 |
+
}, function(){
|
7544 |
+
var i = this._i++
|
7545 |
+
, done = !(i < this._l);
|
7546 |
+
return {done: done, value: done ? undefined : i};
|
7547 |
+
});
|
7548 |
+
|
7549 |
+
/***/ },
|
7550 |
+
/* 302 */
|
7551 |
+
/***/ function(module, exports, __webpack_require__) {
|
7552 |
+
|
7553 |
+
// https://github.com/benjamingr/RexExp.escape
|
7554 |
+
var $export = __webpack_require__(6)
|
7555 |
+
, $re = __webpack_require__(303)(/[\\^$*+?.()|[\]{}]/g, '\\$&');
|
7556 |
+
|
7557 |
+
$export($export.S, 'RegExp', {escape: function escape(it){ return $re(it); }});
|
7558 |
+
|
7559 |
+
|
7560 |
+
/***/ },
|
7561 |
+
/* 303 */
|
7562 |
+
/***/ function(module, exports) {
|
7563 |
+
|
7564 |
+
module.exports = function(regExp, replace){
|
7565 |
+
var replacer = replace === Object(replace) ? function(part){
|
7566 |
+
return replace[part];
|
7567 |
+
} : replace;
|
7568 |
+
return function(it){
|
7569 |
+
return String(it).replace(regExp, replacer);
|
7570 |
+
};
|
7571 |
+
};
|
7572 |
+
|
7573 |
+
/***/ },
|
7574 |
+
/* 304 */
|
7575 |
+
/***/ function(module, exports, __webpack_require__) {
|
7576 |
+
|
7577 |
+
'use strict';
|
7578 |
+
var $export = __webpack_require__(6);
|
7579 |
+
var $re = __webpack_require__(303)(/[&<>"']/g, {
|
7580 |
+
'&': '&',
|
7581 |
+
'<': '<',
|
7582 |
+
'>': '>',
|
7583 |
+
'"': '"',
|
7584 |
+
"'": '''
|
7585 |
+
});
|
7586 |
+
|
7587 |
+
$export($export.P + $export.F, 'String', {escapeHTML: function escapeHTML(){ return $re(this); }});
|
7588 |
+
|
7589 |
+
/***/ },
|
7590 |
+
/* 305 */
|
7591 |
+
/***/ function(module, exports, __webpack_require__) {
|
7592 |
+
|
7593 |
+
'use strict';
|
7594 |
+
var $export = __webpack_require__(6);
|
7595 |
+
var $re = __webpack_require__(303)(/&(?:amp|lt|gt|quot|apos);/g, {
|
7596 |
+
'&': '&',
|
7597 |
+
'<': '<',
|
7598 |
+
'>': '>',
|
7599 |
+
'"': '"',
|
7600 |
+
''': "'"
|
7601 |
+
});
|
7602 |
+
|
7603 |
+
$export($export.P + $export.F, 'String', {unescapeHTML: function unescapeHTML(){ return $re(this); }});
|
7604 |
+
|
7605 |
+
/***/ }
|
7606 |
+
/******/ ]);
|
7607 |
+
// CommonJS export
|
7608 |
+
if(typeof module != 'undefined' && module.exports)module.exports = __e;
|
7609 |
+
// RequireJS export
|
7610 |
+
else if(typeof define == 'function' && define.amd)define(function(){return __e});
|
7611 |
+
// Export to global object
|
7612 |
+
else __g.core = __e;
|
7613 |
+
}(1, 1);
|
admin/assets/js/sweetalert2/js/sweetalert2.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Sweetalert2=t()}(this,function(){"use strict";var e={title:"",titleText:"",text:"",html:"",type:null,customClass:"",target:"body",animation:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,showConfirmButton:!0,showCancelButton:!1,preConfirm:null,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:"#3085d6",confirmButtonClass:null,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:"#aaa",cancelButtonClass:null,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusCancel:!1,showCloseButton:!1,closeButtonAriaLabel:"Close this dialog",showLoaderOnConfirm:!1,imageUrl:null,imageWidth:null,imageHeight:null,imageAlt:"",imageClass:null,timer:null,width:500,padding:20,background:"#fff",input:null,inputPlaceholder:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputClass:null,inputAttributes:{},inputValidator:null,progressSteps:[],currentProgressStep:null,progressStepsDistance:"40px",onOpen:null,onClose:null,useRejections:!0},t=function(e){var t={};for(var n in e)t[e[n]]="swal2-"+e[n];return t},n=t(["container","shown","iosfix","modal","overlay","fade","show","hide","noanimation","close","title","content","buttonswrapper","confirm","cancel","icon","image","input","file","range","select","radio","checkbox","textarea","inputerror","validationerror","progresssteps","activeprogressstep","progresscircle","progressline","loading","styled"]),o=t(["success","warning","info","question","error"]),r=function(e,t){(e=String(e).replace(/[^0-9a-f]/gi,"")).length<6&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),t=t||0;for(var n="#",o=0;o<3;o++){var r=parseInt(e.substr(2*o,2),16);n+=("00"+(r=Math.round(Math.min(Math.max(0,r+r*t),255)).toString(16))).substr(r.length)}return n},i=function(e){var t=[];for(var n in e)-1===t.indexOf(e[n])&&t.push(e[n]);return t},a={previousWindowKeyDown:null,previousActiveElement:null,previousBodyPadding:null},l=function(e){var t=u();t&&t.parentNode.removeChild(t);{if("undefined"!=typeof document){var o=document.createElement("div");o.className=n.container,o.innerHTML=s,("string"==typeof e.target?document.querySelector(e.target):e.target).appendChild(o);var r=c(),i=E(r,n.input),a=E(r,n.file),l=r.querySelector("."+n.range+" input"),d=r.querySelector("."+n.range+" output"),p=E(r,n.select),f=r.querySelector("."+n.checkbox+" input"),m=E(r,n.textarea);return i.oninput=function(){Y.resetValidationError()},i.onkeydown=function(t){setTimeout(function(){13===t.keyCode&&e.allowEnterKey&&(t.stopPropagation(),Y.clickConfirm())},0)},a.onchange=function(){Y.resetValidationError()},l.oninput=function(){Y.resetValidationError(),d.value=l.value},l.onchange=function(){Y.resetValidationError(),l.previousSibling.value=l.value},p.onchange=function(){Y.resetValidationError()},f.onchange=function(){Y.resetValidationError()},m.oninput=function(){Y.resetValidationError()},r}console.error("SweetAlert2 requires document to initialize")}},s=('\n <div role="dialog" aria-labelledby="'+n.title+'" aria-describedby="'+n.content+'" class="'+n.modal+'" tabindex="-1">\n <ul class="'+n.progresssteps+'"></ul>\n <div class="'+n.icon+" "+o.error+'">\n <span class="swal2-x-mark"><span class="swal2-x-mark-line-left"></span><span class="swal2-x-mark-line-right"></span></span>\n </div>\n <div class="'+n.icon+" "+o.question+'">?</div>\n <div class="'+n.icon+" "+o.warning+'">!</div>\n <div class="'+n.icon+" "+o.info+'">i</div>\n <div class="'+n.icon+" "+o.success+'">\n <div class="swal2-success-circular-line-left"></div>\n <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span>\n <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div>\n <div class="swal2-success-circular-line-right"></div>\n </div>\n <img class="'+n.image+'" />\n <h2 class="'+n.title+'" id="'+n.title+'"></h2>\n <div id="'+n.content+'" class="'+n.content+'"></div>\n <input class="'+n.input+'" />\n <input type="file" class="'+n.file+'" />\n <div class="'+n.range+'">\n <output></output>\n <input type="range" />\n </div>\n <select class="'+n.select+'"></select>\n <div class="'+n.radio+'"></div>\n <label for="'+n.checkbox+'" class="'+n.checkbox+'">\n <input type="checkbox" />\n </label>\n <textarea class="'+n.textarea+'"></textarea>\n <div class="'+n.validationerror+'" id="'+n.validationerror+'"></div>\n <div class="'+n.buttonswrapper+'">\n <button type="button" class="'+n.confirm+'">OK</button>\n <button type="button" class="'+n.cancel+'">Cancel</button>\n </div>\n <button type="button" class="'+n.close+'">×</button>\n </div>\n').replace(/(^|\n)\s*/g,""),u=function(){return document.body.querySelector("."+n.container)},c=function(){return u()?u().querySelector("."+n.modal):null},d=function(){return c().querySelectorAll("."+n.icon)},p=function(e){return u()?u().querySelector("."+e):null},f=function(){return p(n.title)},m=function(){return p(n.content)},v=function(){return p(n.image)},h=function(){return p(n.buttonswrapper)},b=function(){return p(n.progresssteps)},y=function(){return p(n.validationerror)},g=function(){return p(n.confirm)},w=function(){return p(n.cancel)},C=function(){return p(n.close)},x=function(){var e=Array.from(c().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort(function(e,t){return e=parseInt(e.getAttribute("tabindex")),t=parseInt(t.getAttribute("tabindex")),e>t?1:e<t?-1:0}),t=Array.prototype.slice.call(c().querySelectorAll('button, input:not([type=hidden]), textarea, select, a, [tabindex="0"]'));return i(e.concat(t))},k=function(e,t){return!!e.classList&&e.classList.contains(t)},S=function(e){if(e.focus(),"file"!==e.type){var t=e.value;e.value="",e.value=t}},A=function(e,t){e&&t&&t.split(/\s+/).filter(Boolean).forEach(function(t){e.classList.add(t)})},B=function(e,t){e&&t&&t.split(/\s+/).filter(Boolean).forEach(function(t){e.classList.remove(t)})},E=function(e,t){for(var n=0;n<e.childNodes.length;n++)if(k(e.childNodes[n],t))return e.childNodes[n]},P=function(e,t){t||(t="block"),e.style.opacity="",e.style.display=t},L=function(e){e.style.opacity="",e.style.display="none"},T=function(e){for(;e.firstChild;)e.removeChild(e.firstChild)},q=function(e){return e.offsetWidth||e.offsetHeight||e.getClientRects().length},V=function(e,t){e.style.removeProperty?e.style.removeProperty(t):e.style.removeAttribute(t)},M=function(){var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",msAnimation:"MSAnimationEnd",animation:"animationend"};for(var n in t)if(t.hasOwnProperty(n)&&void 0!==e.style[n])return t[n];return!1}(),O=function(){if(window.onkeydown=a.previousWindowKeyDown,a.previousActiveElement&&a.previousActiveElement.focus){var e=window.scrollX,t=window.scrollY;a.previousActiveElement.focus(),e&&t&&window.scrollTo(e,t)}},H=function(){if("ontouchstart"in window||navigator.msMaxTouchPoints)return 0;var e=document.createElement("div");e.style.width="50px",e.style.height="50px",e.style.overflow="scroll",document.body.appendChild(e);var t=e.offsetWidth-e.clientWidth;return document.body.removeChild(e),t},N=function(e,t){var n=void 0;return function(){clearTimeout(n),n=setTimeout(function(){n=null,e()},t)}},j="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},I=(function(){function e(e){this.value=e}function t(t){function n(r,i){try{var a=t[r](i),l=a.value;l instanceof e?Promise.resolve(l.value).then(function(e){n("next",e)},function(e){n("throw",e)}):o(a.done?"return":"normal",a.value)}catch(e){o("throw",e)}}function o(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?n(r.key,r.arg):i=null}var r,i;this._invoke=function(e,t){return new Promise(function(o,a){var l={key:e,arg:t,resolve:o,reject:a,next:null};i?i=i.next=l:(r=i=l,n(e,t))})},"function"!=typeof t.return&&(this.return=void 0)}"function"==typeof Symbol&&Symbol.asyncIterator&&(t.prototype[Symbol.asyncIterator]=function(){return this}),t.prototype.next=function(e){return this._invoke("next",e)},t.prototype.throw=function(e){return this._invoke("throw",e)},t.prototype.return=function(e){return this._invoke("return",e)}}(),Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}),R=I({},e),K=[],W=void 0,D=function(e){("string"==typeof e.target&&!document.querySelector(e.target)||"string"!=typeof e.target&&!e.target.appendChild)&&(console.warn('SweetAlert2: Target parameter is not valid, defaulting to "body"'),e.target="body");var t=void 0,r=c(),i="string"==typeof e.target?document.querySelector(e.target):e.target;t=r&&i&&r.parentNode!==i.parentNode?l(e):r||l(e);for(var a in e)Y.isValidParameter(a)||console.warn('SweetAlert2: Unknown parameter "'+a+'"');t.style.width="number"==typeof e.width?e.width+"px":e.width,t.style.padding=e.padding+"px",t.style.background=e.background;for(var s=t.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix"),u=0;u<s.length;u++)s[u].style.background=e.background;var p=f(),y=m(),x=h(),k=g(),S=w(),E=C();if(e.titleText?p.innerText=e.titleText:p.innerHTML=e.title.split("\n").join("<br />"),e.text||e.html){if("object"===j(e.html))if(y.innerHTML="",0 in e.html)for(var q=0;q in e.html;q++)y.appendChild(e.html[q].cloneNode(!0));else y.appendChild(e.html.cloneNode(!0));else e.html?y.innerHTML=e.html:e.text&&(y.textContent=e.text);P(y)}else L(y);e.showCloseButton?(E.setAttribute("aria-label",e.closeButtonAriaLabel),P(E)):L(E),t.className=n.modal,e.customClass&&A(t,e.customClass);var M=b(),O=parseInt(null===e.currentProgressStep?Y.getQueueStep():e.currentProgressStep,10);e.progressSteps.length?(P(M),T(M),O>=e.progressSteps.length&&console.warn("SweetAlert2: Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),e.progressSteps.forEach(function(t,o){var r=document.createElement("li");if(A(r,n.progresscircle),r.innerHTML=t,o===O&&A(r,n.activeprogressstep),M.appendChild(r),o!==e.progressSteps.length-1){var i=document.createElement("li");A(i,n.progressline),i.style.width=e.progressStepsDistance,M.appendChild(i)}})):L(M);for(var H=d(),N=0;N<H.length;N++)L(H[N]);if(e.type){var I=!1;for(var R in o)if(e.type===R){I=!0;break}if(!I)return console.error("SweetAlert2: Unknown alert type: "+e.type),!1;var K=t.querySelector("."+n.icon+"."+o[e.type]);if(P(K),e.animation)switch(e.type){case"success":A(K,"swal2-animate-success-icon"),A(K.querySelector(".swal2-success-line-tip"),"swal2-animate-success-line-tip"),A(K.querySelector(".swal2-success-line-long"),"swal2-animate-success-line-long");break;case"error":A(K,"swal2-animate-error-icon"),A(K.querySelector(".swal2-x-mark"),"swal2-animate-x-mark")}}var W=v();e.imageUrl?(W.setAttribute("src",e.imageUrl),W.setAttribute("alt",e.imageAlt),P(W),e.imageWidth?W.setAttribute("width",e.imageWidth):W.removeAttribute("width"),e.imageHeight?W.setAttribute("height",e.imageHeight):W.removeAttribute("height"),W.className=n.image,e.imageClass&&A(W,e.imageClass)):L(W),e.showCancelButton?S.style.display="inline-block":L(S),e.showConfirmButton?V(k,"display"):L(k),e.showConfirmButton||e.showCancelButton?P(x):L(x),k.innerHTML=e.confirmButtonText,S.innerHTML=e.cancelButtonText,k.setAttribute("aria-label",e.confirmButtonAriaLabel),S.setAttribute("aria-label",e.cancelButtonAriaLabel),e.buttonsStyling&&(k.style.backgroundColor=e.confirmButtonColor,S.style.backgroundColor=e.cancelButtonColor),k.className=n.confirm,A(k,e.confirmButtonClass),S.className=n.cancel,A(S,e.cancelButtonClass),e.buttonsStyling?(A(k,n.styled),A(S,n.styled)):(B(k,n.styled),B(S,n.styled),k.style.backgroundColor=k.style.borderLeftColor=k.style.borderRightColor="",S.style.backgroundColor=S.style.borderLeftColor=S.style.borderRightColor=""),!0===e.animation?B(t,n.noanimation):A(t,n.noanimation),e.showLoaderOnConfirm&&!e.preConfirm&&console.warn("SweetAlert2: showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://limonte.github.io/sweetalert2/#ajax-request")},U=function(e,t){var o=u(),r=c();e?(A(r,n.show),A(o,n.fade),B(r,n.hide)):B(r,n.fade),P(r),o.style.overflowY="hidden",M&&!k(r,n.noanimation)?r.addEventListener(M,function e(){r.removeEventListener(M,e),o.style.overflowY="auto"}):o.style.overflowY="auto",A(document.documentElement,n.shown),A(document.body,n.shown),A(o,n.shown),z(),Z(),a.previousActiveElement=document.activeElement,null!==t&&"function"==typeof t&&setTimeout(function(){t(r)})},z=function(){null===a.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(a.previousBodyPadding=document.body.style.paddingRight,document.body.style.paddingRight=H()+"px")},_=function(){null!==a.previousBodyPadding&&(document.body.style.paddingRight=a.previousBodyPadding,a.previousBodyPadding=null)},Z=function(){if(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream&&!k(document.body,n.iosfix)){var e=document.body.scrollTop;document.body.style.top=-1*e+"px",A(document.body,n.iosfix)}},Q=function(){if(k(document.body,n.iosfix)){var e=parseInt(document.body.style.top,10);B(document.body,n.iosfix),document.body.style.top="",document.body.scrollTop=-1*e}},Y=function e(){for(var t=arguments.length,o=Array(t),i=0;i<t;i++)o[i]=arguments[i];if(void 0===o[0])return console.error("SweetAlert2 expects at least 1 attribute!"),!1;var l=I({},R);switch(j(o[0])){case"string":l.title=o[0],l.html=o[1],l.type=o[2];break;case"object":I(l,o[0]),l.extraParams=o[0].extraParams,"email"===l.input&&null===l.inputValidator&&(l.inputValidator=function(e){return new Promise(function(t,n){/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/.test(e)?t():n("Invalid email address")})}),"url"===l.input&&null===l.inputValidator&&(l.inputValidator=function(e){return new Promise(function(t,n){/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&//=]*)$/.test(e)?t():n("Invalid URL")})});break;default:return console.error('SweetAlert2: Unexpected type of argument! Expected "string" or "object", got '+j(o[0])),!1}D(l);var s=u(),d=c();return new Promise(function(t,o){l.timer&&(d.timeout=setTimeout(function(){e.closeModal(l.onClose),l.useRejections?o("timer"):t({dismiss:"timer"})},l.timer));var i=function(e){if(!(e=e||l.input))return null;switch(e){case"select":case"textarea":case"file":return E(d,n[e]);case"checkbox":return d.querySelector("."+n.checkbox+" input");case"radio":return d.querySelector("."+n.radio+" input:checked")||d.querySelector("."+n.radio+" input:first-child");case"range":return d.querySelector("."+n.range+" input");default:return E(d,n.input)}},p=function(){var e=i();if(!e)return null;switch(l.input){case"checkbox":return e.checked?1:0;case"radio":return e.checked?e.value:null;case"file":return e.files.length?e.files[0]:null;default:return l.inputAutoTrim?e.value.trim():e.value}};l.input&&setTimeout(function(){var e=i();e&&S(e)},0);for(var k=function(n){l.showLoaderOnConfirm&&e.showLoading(),l.preConfirm?l.preConfirm(n,l.extraParams).then(function(o){e.closeModal(l.onClose),t(o||n)},function(t){e.hideLoading(),t&&e.showValidationError(t)}):(e.closeModal(l.onClose),t(l.useRejections?n:{value:n}))},T=function(n){var i=n||window.event,a=i.target||i.srcElement,s=g(),u=w(),c=s&&(s===a||s.contains(a)),d=u&&(u===a||u.contains(a));switch(i.type){case"mouseover":case"mouseup":l.buttonsStyling&&(c?s.style.backgroundColor=r(l.confirmButtonColor,-.1):d&&(u.style.backgroundColor=r(l.cancelButtonColor,-.1)));break;case"mouseout":l.buttonsStyling&&(c?s.style.backgroundColor=l.confirmButtonColor:d&&(u.style.backgroundColor=l.cancelButtonColor));break;case"mousedown":l.buttonsStyling&&(c?s.style.backgroundColor=r(l.confirmButtonColor,-.2):d&&(u.style.backgroundColor=r(l.cancelButtonColor,-.2)));break;case"click":if(c&&e.isVisible())if(e.disableButtons(),l.input){var f=p();l.inputValidator?(e.disableInput(),l.inputValidator(f,l.extraParams).then(function(){e.enableButtons(),e.enableInput(),k(f)},function(t){e.enableButtons(),e.enableInput(),t&&e.showValidationError(t)})):k(f)}else k(!0);else d&&e.isVisible()&&(e.disableButtons(),e.closeModal(l.onClose),l.useRejections?o("cancel"):t({dismiss:"cancel"}))}},V=d.querySelectorAll("button"),M=0;M<V.length;M++)V[M].onclick=T,V[M].onmouseover=T,V[M].onmouseout=T,V[M].onmousedown=T;C().onclick=function(){e.closeModal(l.onClose),l.useRejections?o("close"):t({dismiss:"close"})},s.onclick=function(n){n.target===s&&l.allowOutsideClick&&(e.closeModal(l.onClose),l.useRejections?o("overlay"):t({dismiss:"overlay"}))};var O=h(),H=g(),I=w();l.reverseButtons?H.parentNode.insertBefore(I,H):H.parentNode.insertBefore(H,I);var R=function(e,t){for(var n=x(l.focusCancel),o=0;o<n.length;o++){(e+=t)===n.length?e=0:-1===e&&(e=n.length-1);var r=n[e];if(q(r))return r.focus()}},K=function(n){var r=n||window.event,i=r.keyCode||r.which;if(-1!==[9,13,32,27,37,38,39,40].indexOf(i)){for(var a=r.target||r.srcElement,s=x(l.focusCancel),u=-1,c=0;c<s.length;c++)if(a===s[c]){u=c;break}9===i?(r.shiftKey?R(u,-1):R(u,1),r.stopPropagation(),r.preventDefault()):37===i||38===i||39===i||40===i?document.activeElement===H&&q(I)?I.focus():document.activeElement===I&&q(H)&&H.focus():27===i&&!0===l.allowEscapeKey&&(e.closeModal(l.onClose),l.useRejections?o("esc"):t({dismiss:"esc"}))}};window.onkeydown&&window.onkeydown.toString()===K.toString()||(a.previousWindowKeyDown=window.onkeydown,window.onkeydown=K),l.buttonsStyling&&(H.style.borderLeftColor=l.confirmButtonColor,H.style.borderRightColor=l.confirmButtonColor),e.hideLoading=e.disableLoading=function(){l.showConfirmButton||(L(H),l.showCancelButton||L(h())),B(O,n.loading),B(d,n.loading),d.removeAttribute("aria-busy"),H.disabled=!1,I.disabled=!1},e.getTitle=function(){return f()},e.getContent=function(){return m()},e.getInput=function(){return i()},e.getImage=function(){return v()},e.getButtonsWrapper=function(){return h()},e.getConfirmButton=function(){return g()},e.getCancelButton=function(){return w()},e.enableButtons=function(){H.disabled=!1,I.disabled=!1},e.disableButtons=function(){H.disabled=!0,I.disabled=!0},e.enableConfirmButton=function(){H.disabled=!1},e.disableConfirmButton=function(){H.disabled=!0},e.enableInput=function(){var e=i();if(!e)return!1;if("radio"===e.type)for(var t=e.parentNode.parentNode.querySelectorAll("input"),n=0;n<t.length;n++)t[n].disabled=!1;else e.disabled=!1},e.disableInput=function(){var e=i();if(!e)return!1;if(e&&"radio"===e.type)for(var t=e.parentNode.parentNode.querySelectorAll("input"),n=0;n<t.length;n++)t[n].disabled=!0;else e.disabled=!0},e.recalculateHeight=N(function(){var e=c();if(e){var t=e.style.display;e.style.minHeight="",P(e),e.style.minHeight=e.scrollHeight+1+"px",e.style.display=t}},50),e.showValidationError=function(e){var t=y();t.innerHTML=e,P(t);var o=i();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedBy",n.validationerror),S(o),A(o,n.inputerror))},e.resetValidationError=function(){var t=y();L(t),e.recalculateHeight();var o=i();o&&(o.removeAttribute("aria-invalid"),o.removeAttribute("aria-describedBy"),B(o,n.inputerror))},e.getProgressSteps=function(){return l.progressSteps},e.setProgressSteps=function(e){l.progressSteps=e,D(l)},e.showProgressSteps=function(){P(b())},e.hideProgressSteps=function(){L(b())},e.enableButtons(),e.hideLoading(),e.resetValidationError();for(var z=["input","file","range","select","radio","checkbox","textarea"],_=void 0,Z=0;Z<z.length;Z++){var Q=n[z[Z]],Y=E(d,Q);if(_=i(z[Z])){for(var $ in _.attributes)if(_.attributes.hasOwnProperty($)){var J=_.attributes[$].name;"type"!==J&&"value"!==J&&_.removeAttribute(J)}for(var X in l.inputAttributes)_.setAttribute(X,l.inputAttributes[X])}Y.className=Q,l.inputClass&&A(Y,l.inputClass),L(Y)}var F=void 0;switch(l.input){case"text":case"email":case"password":case"number":case"tel":case"url":(_=E(d,n.input)).value=l.inputValue,_.placeholder=l.inputPlaceholder,_.type=l.input,P(_);break;case"file":(_=E(d,n.file)).placeholder=l.inputPlaceholder,_.type=l.input,P(_);break;case"range":var G=E(d,n.range),ee=G.querySelector("input"),te=G.querySelector("output");ee.value=l.inputValue,ee.type=l.input,te.value=l.inputValue,P(G);break;case"select":var ne=E(d,n.select);if(ne.innerHTML="",l.inputPlaceholder){var oe=document.createElement("option");oe.innerHTML=l.inputPlaceholder,oe.value="",oe.disabled=!0,oe.selected=!0,ne.appendChild(oe)}F=function(e){for(var t in e){var n=document.createElement("option");n.value=t,n.innerHTML=e[t],l.inputValue===t&&(n.selected=!0),ne.appendChild(n)}P(ne),ne.focus()};break;case"radio":var re=E(d,n.radio);re.innerHTML="",F=function(e){for(var t in e){var o=document.createElement("input"),r=document.createElement("label"),i=document.createElement("span");o.type="radio",o.name=n.radio,o.value=t,l.inputValue===t&&(o.checked=!0),i.innerHTML=e[t],r.appendChild(o),r.appendChild(i),r.for=o.id,re.appendChild(r)}P(re);var a=re.querySelectorAll("input");a.length&&a[0].focus()};break;case"checkbox":var ie=E(d,n.checkbox),ae=i("checkbox");ae.type="checkbox",ae.value=1,ae.id=n.checkbox,ae.checked=Boolean(l.inputValue);var le=ie.getElementsByTagName("span");le.length&&ie.removeChild(le[0]),(le=document.createElement("span")).innerHTML=l.inputPlaceholder,ie.appendChild(le),P(ie);break;case"textarea":var se=E(d,n.textarea);se.value=l.inputValue,se.placeholder=l.inputPlaceholder,P(se);break;case null:break;default:console.error('SweetAlert2: Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'+l.input+'"')}"select"!==l.input&&"radio"!==l.input||(l.inputOptions instanceof Promise?(e.showLoading(),l.inputOptions.then(function(t){e.hideLoading(),F(t)})):"object"===j(l.inputOptions)?F(l.inputOptions):console.error("SweetAlert2: Unexpected type of inputOptions! Expected object or Promise, got "+j(l.inputOptions))),U(l.animation,l.onOpen),l.allowEnterKey?l.focusCancel&&q(I)?I.focus():l.focusConfirm&&q(H)?H.focus():R(-1,1):document.activeElement&&document.activeElement.blur(),u().scrollTop=0,"undefined"==typeof MutationObserver||W||(W=new MutationObserver(e.recalculateHeight)).observe(d,{childList:!0,characterData:!0,subtree:!0})})};return Y.isVisible=function(){return!!c()},Y.queue=function(e){K=e;var t=function(){K=[],document.body.removeAttribute("data-swal2-queue-step")},n=[];return new Promise(function(e,o){!function r(i,a){i<K.length?(document.body.setAttribute("data-swal2-queue-step",i),Y(K[i]).then(function(e){n.push(e),r(i+1,a)},function(e){t(),o(e)})):(t(),e(n))}(0)})},Y.getQueueStep=function(){return document.body.getAttribute("data-swal2-queue-step")},Y.insertQueueStep=function(e,t){return t&&t<K.length?K.splice(t,0,e):K.push(e)},Y.deleteQueueStep=function(e){void 0!==K[e]&&K.splice(e,1)},Y.close=Y.closeModal=function(e){var t=u(),o=c();if(o){B(o,n.show),A(o,n.hide),clearTimeout(o.timeout),O();var r=function(){t.parentNode&&t.parentNode.removeChild(t),B(document.documentElement,n.shown),B(document.body,n.shown),_(),Q()};M&&!k(o,n.noanimation)?o.addEventListener(M,function e(){o.removeEventListener(M,e),k(o,n.hide)&&r()}):r(),null!==e&&"function"==typeof e&&setTimeout(function(){e(o)})}},Y.clickConfirm=function(){return g().click()},Y.clickCancel=function(){return w().click()},Y.showLoading=Y.enableLoading=function(){var e=c();e||Y(""),e=c();var t=h(),o=g(),r=w();P(t),P(o,"inline-block"),A(t,n.loading),A(e,n.loading),o.disabled=!0,r.disabled=!0,e.setAttribute("aria-busy",!0),e.focus()},Y.isValidParameter=function(t){return e.hasOwnProperty(t)||"extraParams"===t},Y.setDefaults=function(e){if(!e||"object"!==(void 0===e?"undefined":j(e)))return console.error("SweetAlert2: the argument for setDefaults() is required and has to be a object");for(var t in e)Y.isValidParameter(t)||(console.warn('SweetAlert2: Unknown parameter "'+t+'"'),delete e[t]);I(R,e)},Y.resetDefaults=function(){R=I({},e)},Y.noop=function(){},Y.version="6.9.0",Y.default=Y,Y}),window.Sweetalert2&&(window.sweetAlert=window.swal=window.Sweetalert2);
|
admin/assets/pa-elements-font/css/pa-elements.css
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'pa-elements';
|
3 |
+
src: url('../fonts/pa-elements.eot?sivga8');
|
4 |
+
src: url('../fonts/pa-elements.eot?sivga8#iefix') format('embedded-opentype'),
|
5 |
+
url('../fonts/pa-elements.ttf?sivga8') format('truetype'),
|
6 |
+
url('../fonts/pa-elements.woff?sivga8') format('woff'),
|
7 |
+
url('../fonts/pa-elements.svg?sivga8#pa-elements') format('svg');
|
8 |
+
font-weight: normal;
|
9 |
+
font-style: normal;
|
10 |
+
color: #1A7FC2;
|
11 |
+
}
|
12 |
+
[class^="pa-"], [class*=" pa-"] {
|
13 |
+
/* use !important to prevent issues with browser extensions that change fonts */
|
14 |
+
font-family: 'pa-elements' !important;
|
15 |
+
speak: none;
|
16 |
+
font-style: normal;
|
17 |
+
font-weight: normal;
|
18 |
+
font-variant: normal;
|
19 |
+
text-transform: none;
|
20 |
+
line-height: 1;
|
21 |
+
|
22 |
+
/* Better Font Rendering =========== */
|
23 |
+
-webkit-font-smoothing: antialiased;
|
24 |
+
-moz-osx-font-smoothing: grayscale;
|
25 |
+
color: #1A7FC2;
|
26 |
+
}
|
27 |
+
.pa-pa-video:before {
|
28 |
+
content: "\e901";
|
29 |
+
}
|
30 |
+
.pa-pa-text:before {
|
31 |
+
content: "\e902";
|
32 |
+
}
|
33 |
+
.pa-pa-chat:before {
|
34 |
+
content: "\e903";
|
35 |
+
}
|
36 |
+
.pa-pa-list:before {
|
37 |
+
content: "\e904";
|
38 |
+
}
|
39 |
+
.pa-pa-dollar:before {
|
40 |
+
content: "\e905";
|
41 |
+
}
|
42 |
+
.pa-pa-person:before {
|
43 |
+
content: "\e900";
|
44 |
+
}
|
45 |
+
.pa-pa-page:before {
|
46 |
+
content: "\e906";
|
47 |
+
}
|
48 |
+
.pa-pa-indicator:before {
|
49 |
+
content: "\e907";
|
50 |
+
}
|
51 |
+
.pa-pa-image:before {
|
52 |
+
content: "\e908";
|
53 |
+
}
|
54 |
+
.pa-pa-spin:before {
|
55 |
+
content: "\e909";
|
56 |
+
}
|
57 |
+
.pa-pa-typing:before {
|
58 |
+
content: "\e90a";
|
59 |
+
}
|
60 |
+
.pa-pa-header:before {
|
61 |
+
content: "\e90b";
|
62 |
+
}
|
63 |
+
.pa-pa-counter:before {
|
64 |
+
content: "\e90c";
|
65 |
+
}
|
66 |
+
.pa-pa-count:before {
|
67 |
+
content: "\e90d";
|
68 |
+
}
|
69 |
+
.pa-pa-points:before {
|
70 |
+
content: "\e90e";
|
71 |
+
}
|
72 |
+
.pa-pa-post:before {
|
73 |
+
content: "\e90f";
|
74 |
+
}
|
75 |
+
.pa-pa-image2:before {
|
76 |
+
content: "\e910";
|
77 |
+
}
|
admin/assets/pa-elements-font/fonts/pa-elements.eot
ADDED
Binary file
|
admin/assets/pa-elements-font/fonts/pa-elements.svg
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" standalone="no"?>
|
2 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3 |
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
+
<metadata>Generated by IcoMoon</metadata>
|
5 |
+
<defs>
|
6 |
+
<font id="icomoon" horiz-adv-x="1024">
|
7 |
+
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
8 |
+
<missing-glyph horiz-adv-x="1024" />
|
9 |
+
<glyph unicode=" " horiz-adv-x="512" d="" />
|
10 |
+
<glyph unicode="" glyph-name="pa-pa-person" d="M874.095 810.074c-199.648 199.651-524.504 199.651-724.152 0-70.048-70.048-117.964-158.050-138.571-254.496-20.062-93.91-13.491-191.207 19.003-281.366 3.904-10.827 15.849-16.44 26.672-12.539 10.83 3.904 16.443 15.846 12.539 26.672-29.854 82.837-35.891 172.232-17.454 258.529 18.92 88.558 62.935 169.384 127.283 233.732 183.399 183.399 481.809 183.399 665.208 0 87.339-87.342 136.23-203.441 137.665-326.916 1.435-123.25-44.498-240.276-129.329-329.515-1.004-1.056-1.997-2.119-2.991-3.182-1.758-1.879-3.512-3.762-5.346-5.596-183.399-183.399-481.809-183.399-665.208 0-0.976 0.976-1.928 1.969-2.869 2.963-0.049 1.924-0.090 3.821-0.090 5.689 0 4.196 0.080 8.374 0.233 12.539 0.052 1.393 0.156 2.772 0.226 4.161 0.135 2.768 0.264 5.537 0.465 8.291 0.122 1.643 0.299 3.268 0.445 4.904 0.219 2.483 0.424 4.967 0.695 7.437 0.191 1.744 0.441 3.473 0.66 5.21 0.295 2.345 0.577 4.696 0.924 7.030 0.264 1.778 0.577 3.539 0.868 5.307 0.372 2.275 0.733 4.55 1.153 6.811 0.33 1.789 0.709 3.56 1.070 5.339 0.448 2.22 0.889 4.442 1.382 6.648 0.399 1.789 0.844 3.567 1.271 5.346 0.521 2.171 1.039 4.342 1.601 6.495 0.469 1.785 0.976 3.557 1.469 5.332 0.594 2.126 1.184 4.255 1.82 6.367 0.531 1.771 1.101 3.529 1.664 5.287 0.667 2.088 1.334 4.179 2.039 6.249 0.597 1.747 1.223 3.484 1.848 5.221 0.74 2.056 1.483 4.113 2.261 6.155 0.66 1.726 1.344 3.435 2.032 5.148 0.809 2.018 1.626 4.036 2.473 6.037 0.722 1.702 1.466 3.39 2.216 5.078 0.879 1.983 1.768 3.96 2.685 5.922 0.782 1.671 1.58 3.331 2.39 4.988 0.952 1.949 1.914 3.894 2.9 5.821 0.837 1.632 1.688 3.258 2.553 4.877 1.021 1.917 2.060 3.828 3.119 5.728 0.893 1.598 1.796 3.189 2.713 4.769 1.091 1.879 2.199 3.748 3.328 5.61 0.948 1.563 1.907 3.119 2.879 4.668 1.16 1.841 2.338 3.671 3.532 5.488 1 1.525 2.008 3.043 3.032 4.55 1.226 1.806 2.48 3.591 3.744 5.373 1.052 1.483 2.105 2.963 3.182 4.425 1.296 1.764 2.619 3.512 3.949 5.248 1.101 1.438 2.199 2.876 3.324 4.297 1.365 1.726 2.761 3.432 4.161 5.13 1.143 1.389 2.285 2.779 3.453 4.151 1.438 1.688 2.907 3.352 4.38 5.012 1.188 1.341 2.369 2.685 3.578 4.005 1.507 1.646 3.046 3.262 4.588 4.877 1.23 1.292 2.452 2.588 3.703 3.862 1.58 1.605 3.196 3.175 4.807 4.752 1.264 1.233 2.518 2.48 3.803 3.696 1.66 1.57 3.359 3.102 5.050 4.637 1.292 1.171 2.567 2.355 3.876 3.508 1.747 1.539 3.539 3.032 5.321 4.536 1.306 1.101 2.598 2.22 3.921 3.303 1.844 1.507 3.734 2.97 5.616 4.442 1.313 1.025 2.605 2.074 3.932 3.081 1.983 1.504 4.008 2.956 6.030 4.415 1.275 0.924 2.525 1.869 3.817 2.775 2.23 1.567 4.512 3.077 6.787 4.595 1.122 0.747 2.22 1.521 3.348 2.258 2.966 1.928 5.985 3.793 9.024 5.634 0.472 0.285 0.931 0.59 1.407 0.875 3.515 2.105 7.079 4.147 10.684 6.134 1.233 0.677 2.501 1.313 3.748 1.976 2.393 1.278 4.779 2.567 7.214 3.789 1.56 0.785 3.157 1.521 4.731 2.282 1.987 0.962 3.967 1.935 5.978 2.862 37.773-36.082 88.162-56.509 140.464-56.509s102.695 20.431 140.468 56.516c73.737-34.126 134.087-95.359 166.852-169.821 4.634-10.531 16.926-15.321 27.468-10.684 10.535 4.637 15.318 16.936 10.681 27.468-35.839 81.451-98.231 146.539-177.206 185.83 22.914 33.612 35.311 73.303 35.311 114.261 0 112.25-91.323 203.573-203.573 203.573-11.507 0-20.84-9.333-20.84-20.84s9.333-20.84 20.84-20.84c89.27 0 161.892-72.625 161.892-161.892 0-39.916-14.835-78.353-41.768-108.221-0.003-0.003-0.007-0.007-0.010-0.010-30.753-34.102-74.532-53.661-120.117-53.661s-89.367 19.559-120.117 53.661c-0.003 0.007-0.010 0.010-0.017 0.014-26.929 29.878-41.761 68.304-41.761 108.214 0 43.57 17.058 84.445 48.034 115.088 8.183 8.096 8.253 21.292 0.156 29.472-8.093 8.187-21.288 8.249-29.472 0.16-38.947-38.52-60.399-89.916-60.399-144.705 0-40.917 12.365-80.579 35.241-114.174-0.205-0.101-0.403-0.212-0.604-0.316-1.626-0.813-3.213-1.674-4.825-2.504-2.47-1.278-4.946-2.549-7.381-3.88-1.723-0.938-3.407-1.924-5.113-2.886-2.275-1.289-4.554-2.57-6.797-3.901-1.74-1.035-3.453-2.105-5.175-3.164-2.154-1.327-4.307-2.65-6.429-4.015-1.733-1.115-3.435-2.261-5.148-3.4-2.060-1.372-4.116-2.751-6.144-4.161-1.705-1.188-3.39-2.4-5.075-3.612-1.98-1.428-3.953-2.862-5.901-4.324-1.671-1.254-3.321-2.525-4.967-3.803-1.91-1.483-3.807-2.977-5.682-4.495-1.626-1.313-3.237-2.643-4.842-3.981-1.844-1.542-3.675-3.102-5.488-4.679-1.573-1.365-3.136-2.741-4.686-4.133-1.789-1.608-3.553-3.234-5.307-4.873-1.514-1.414-3.025-2.831-4.519-4.272-1.733-1.674-3.439-3.373-5.141-5.078-1.452-1.455-2.904-2.907-4.328-4.383-1.685-1.747-3.338-3.526-4.988-5.304-1.379-1.487-2.768-2.966-4.123-4.477-1.65-1.834-3.255-3.706-4.866-5.571-1.296-1.501-2.602-2.987-3.873-4.505-1.636-1.956-3.22-3.949-4.814-5.936-1.184-1.48-2.393-2.938-3.557-4.436-1.674-2.154-3.293-4.349-4.918-6.537-1.021-1.375-2.070-2.727-3.070-4.116-2.056-2.848-4.047-5.738-6.019-8.642-0.518-0.764-1.066-1.507-1.58-2.275-2.456-3.668-4.842-7.378-7.166-11.129-0.802-1.296-1.556-2.619-2.341-3.921-1.504-2.497-3.015-4.991-4.463-7.523-0.903-1.58-1.758-3.189-2.636-4.783-1.268-2.292-2.543-4.578-3.758-6.898-0.903-1.719-1.758-3.46-2.636-5.193-1.132-2.237-2.268-4.47-3.355-6.731-0.865-1.799-1.688-3.619-2.525-5.429-1.028-2.233-2.060-4.463-3.046-6.718-0.813-1.858-1.591-3.734-2.372-5.606-0.941-2.247-1.876-4.495-2.772-6.759-0.754-1.903-1.476-3.817-2.199-5.731-0.854-2.272-1.698-4.547-2.511-6.836-0.688-1.942-1.355-3.894-2.015-5.849-0.775-2.296-1.528-4.599-2.258-6.916-0.622-1.969-1.223-3.946-1.813-5.926-0.695-2.338-1.365-4.682-2.015-7.037-0.549-1.987-1.087-3.977-1.605-5.978-0.615-2.379-1.198-4.769-1.768-7.166-0.476-2.001-0.948-3.998-1.389-6.006-0.535-2.428-1.032-4.87-1.518-7.315-0.399-2.001-0.806-4.001-1.174-6.012-0.455-2.494-0.865-5.002-1.271-7.513-0.32-1.98-0.656-3.956-0.945-5.943-0.379-2.591-0.698-5.196-1.025-7.801-0.24-1.931-0.504-3.859-0.716-5.797-0.299-2.73-0.528-5.478-0.768-8.225-0.16-1.83-0.351-3.654-0.483-5.495-0.222-3.067-0.368-6.148-0.518-9.232-0.073-1.532-0.188-3.053-0.243-4.588-0.167-4.627-0.261-9.271-0.261-13.932 0-5.033 0.17-9.792 0.375-15.047 0.049-1.216 0.219-2.397 0.462-3.55 0.021-0.090 0.031-0.181 0.052-0.271 0.257-1.136 0.618-2.226 1.052-3.282 0.042-0.104 0.080-0.208 0.125-0.313 0.448-1.042 0.983-2.035 1.587-2.98 0.076-0.118 0.149-0.236 0.226-0.351 0.622-0.927 1.313-1.799 2.067-2.612 0.056-0.059 0.094-0.132 0.149-0.191l2.751-2.928c2.077-2.223 4.154-4.439 6.322-6.603 99.826-99.826 230.95-149.738 362.078-149.738s262.252 49.913 362.078 149.738c2.167 2.164 4.244 4.383 6.322 6.603l2.751 2.928c92.354 97.154 142.357 224.545 140.798 358.715-1.553 134.438-54.779 260.835-149.86 355.916z" />
|
11 |
+
<glyph unicode="" glyph-name="pa-pa-video" d="M409.954 478.217c2.793-1.527 5.883-2.29 8.955-2.29 3.482 0 6.945 0.987 9.998 2.904l204.8 130.327c5.362 3.426 8.62 9.346 8.62 15.714s-3.258 12.288-8.62 15.714l-204.8 130.327c-5.772 3.631-12.977 3.873-18.972 0.614-5.939-3.277-9.644-9.533-9.644-16.328v-260.655c0-6.796 3.705-13.051 9.663-16.328zM437.527 721.296l151.515-96.424-151.515-96.424v192.847zM9.309 960v-1024h1005.382v1024h-1005.382zM977.455 922.764v-614.4h-930.909v614.4h930.909zM46.545-26.764v297.891h930.909v-297.891h-930.909zM884.364 140.8h-446.836v37.236c0 10.296-8.322 18.618-18.618 18.618s-18.618-8.322-18.618-18.618v-37.236h-74.473c-10.296 0-18.618-8.322-18.618-18.618s8.322-18.618 18.618-18.618h74.473v-37.236c0-10.296 8.322-18.618 18.618-18.618s18.618 8.322 18.618 18.618v37.236h446.836c10.296 0 18.618 8.322 18.618 18.618s-8.322 18.618-18.618 18.618zM139.636 196.655c-10.296 0-18.618-8.322-18.618-18.618v-111.709c0-10.296 8.322-18.618 18.618-18.618s18.618 8.322 18.618 18.618v111.709c0 10.296-8.322 18.618-18.618 18.618zM214.109 196.655c-10.296 0-18.618-8.322-18.618-18.618v-111.709c0-10.296 8.322-18.618 18.618-18.618s18.618 8.322 18.618 18.618v111.709c0 10.296-8.322 18.618-18.618 18.618z" />
|
12 |
+
<glyph unicode="" glyph-name="pa-pa-text" d="M864.893 960h-705.786c-14.195 0-25.696-11.505-25.696-25.696v-117.63c0-14.191 11.502-25.696 25.696-25.696s25.696 11.505 25.696 25.696v91.934h301.501v-921.216h-63.243c-14.195 0-25.696-11.505-25.696-25.696s11.502-25.696 25.696-25.696h177.879c14.195 0 25.696 11.505 25.696 25.696s-11.502 25.696-25.696 25.696h-63.243v921.216h301.501v-91.934c0-14.191 11.502-25.696 25.696-25.696s25.696 11.505 25.696 25.696v117.63c0 14.191-11.502 25.696-25.696 25.696z" />
|
13 |
+
<glyph unicode="" glyph-name="pa-pa-chat" d="M225.963-54.877c-2.513 0-5.058 0.621-7.354 1.862-5.027 2.7-8.161 7.975-8.161 13.653v221.060c-135.82 70.625-210.448 194.281-210.448 349.215 0 239.43 220.098 419.964 512 419.964s512-180.534 512-419.964c0-239.399-220.098-419.933-512-419.933-9.588 0-18.991 0.528-28.424 1.024l-0.621 0.031-248.46-164.336c-2.576-1.707-5.554-2.576-8.533-2.576zM512 919.847c-274.184 0-480.97-167.222-480.97-388.934 0-103.114 35.002-243.34 201.79-325.787 5.275-2.607 8.626-8.006 8.626-13.902v-201.728l228.662 151.242c2.793 1.862 6.175 2.948 9.371 2.544l5.772-0.31c8.875-0.496 17.718-0.962 26.717-0.962 274.184 0 480.97 167.191 480.97 388.903s-206.755 388.934-480.939 388.934z" />
|
14 |
+
<glyph unicode="" glyph-name="pa-pa-list" d="M581.983-60.112h-559.638c-12.334 0-22.344 10.010-22.344 22.344s10.010 22.344 22.344 22.344h559.638c12.334 0 22.344-10.010 22.344-22.344s-9.966-22.344-22.344-22.344zM1001.656 263.703h-979.311c-12.334 0-22.344 10.010-22.344 22.344s10.010 22.344 22.344 22.344h979.311c12.334 0 22.344-10.010 22.344-22.344s-10.010-22.344-22.344-22.344zM581.983 587.563h-559.638c-12.334 0-22.344 10.010-22.344 22.344s10.010 22.344 22.344 22.344h559.638c12.334 0 22.344-10.010 22.344-22.344s-9.966-22.344-22.344-22.344zM1001.656 911.423h-979.311c-12.334 0-22.344 10.010-22.344 22.344s10.010 22.344 22.344 22.344h979.311c12.334 0 22.344-10.010 22.344-22.344s-10.010-22.344-22.344-22.344z" />
|
15 |
+
<glyph unicode="" glyph-name="pa-pa-dollar" d="M840.446 459.647c-41.020 60.821-93.463 107.539-135.599 145.078-37.767 33.646-71.064 63.325-79.438 88.963 17.571 6.862 30.060 23.96 30.060 43.934 0 19.472-11.863 36.222-28.742 43.408l34.846 136.671c3.728 13.193 1.346 25.379-6.551 33.469-7.948 8.139-20.174 10.793-33.542 7.282-0.255-0.066-0.506-0.138-0.756-0.219-0.654-0.209-65.608-20.944-87.191-27.143-14.024-4.023-38.644-4.045-52.688-0.046-21.809 6.214-87.452 27.034-88.112 27.245-0.249 0.078-0.5 0.15-0.752 0.217-13.374 3.489-25.598 0.821-33.542-7.326s-10.304-20.439-6.477-33.722c0.044-0.161 0.094-0.319 0.144-0.476l44.229-136.376c-16.376-7.4-27.805-23.878-27.805-42.984 0-19.973 12.489-37.073 30.060-43.934-8.375-25.636-41.672-55.315-79.438-88.961-42.138-37.539-94.579-84.257-135.599-145.078-48.356-71.696-71.863-148.796-71.863-235.706 0-78.378 31.493-150.289 88.676-202.49 61.24-55.903 146.798-85.451 247.422-85.451h128.42c100.625 0 186.182 29.549 247.422 85.451 57.185 52.201 88.678 124.114 88.678 202.49 0 86.906-23.507 164.008-71.863 235.704zM543.829 720.564c-0.012 0-0.024 0-0.036 0h-63.58c-0.022 0-0.044 0-0.064 0h-64.463c-9.405 0-17.056 7.651-17.056 17.056 0 9.395 7.633 17.036 17.024 17.054 0.010 0 0.020-0.002 0.028-0.002 0.016 0 0.034 0.004 0.050 0.004h80.158c0.016 0 0.030-0.004 0.046-0.004 0.020 0 0.042 0.004 0.064 0.004h32.001c0.022 0 0.042-0.004 0.064-0.004 0.016 0 0.030 0.004 0.046 0.004h80.204c9.405 0 17.056-7.651 17.056-17.056s-7.651-17.056-17.056-17.056h-64.487zM380.259 929.9c0.716 0.052 1.95 0.012 3.79-0.437 6.192-1.964 66.993-21.227 88.549-27.369 19.421-5.528 49.831-5.504 69.236 0.062 21.324 6.124 81.446 25.297 87.618 27.265 1.812 0.445 3.034 0.49 3.754 0.443 0.032-0.767-0.052-2.091-0.626-4.077-0.042-0.148-0.084-0.299-0.122-0.449l-35.839-140.565h-49.295l11.377 45.511c2.017 8.062-2.885 16.233-10.95 18.25-8.052 2.013-16.233-2.887-18.25-10.95l-13.203-52.811h-8.606l-13.203 52.811c-2.017 8.064-10.193 12.968-18.25 10.95-8.064-2.015-12.966-10.187-10.95-18.25l11.377-45.511h-50.048l-45.796 141.225c-0.528 1.896-0.6 3.164-0.566 3.903zM803.339 43.68c-55.6-50.754-134.14-77.582-227.13-77.582h-128.42c-92.988 0-171.528 26.828-227.128 77.582-50.86 46.428-78.872 110.445-78.872 180.261 0 182.466 114.083 284.1 197.385 358.311 44.907 40.007 81.52 72.633 89.795 108.214h30.044l-9.449-28.349c-2.629-7.886 1.633-16.408 9.519-19.036 1.579-0.526 3.182-0.777 4.762-0.777 6.301 0 12.172 3.989 14.275 10.294l12.623 37.868h42.515l12.623-37.868c2.103-6.307 7.974-10.294 14.275-10.294 1.577 0 3.182 0.251 4.762 0.777 7.886 2.629 12.146 11.15 9.519 19.036l-9.449 28.349h30.046c8.275-35.58 44.889-68.209 89.795-108.214 83.302-74.21 197.385-175.845 197.385-358.311-0.004-69.816-28.014-133.833-78.876-180.261zM511.999 385.469c35.35 0 65.213-18.838 65.213-41.134 0-8.311 6.738-15.049 15.049-15.049s15.049 6.738 15.049 15.049c0 36.108-34.212 65.137-80.262 70.382v17.907c0 8.311-6.738 15.049-15.049 15.049s-15.049-6.738-15.049-15.049v-17.907c-46.050-5.245-80.262-34.274-80.262-70.382 0-39.945 41.865-71.233 95.311-71.233 35.35 0 65.213-18.838 65.213-41.134s-29.864-41.134-65.213-41.134-65.213 18.838-65.213 41.134c0 8.311-6.738 15.049-15.049 15.049s-15.049-6.738-15.049-15.049c0-36.108 34.212-65.137 80.262-70.382v-17.907c0-8.311 6.738-15.049 15.049-15.049s15.049 6.738 15.049 15.049v17.907c46.050 5.245 80.262 34.274 80.262 70.382 0 39.945-41.865 71.233-95.311 71.233-35.35 0-65.213 18.838-65.213 41.134s29.864 41.134 65.213 41.134zM511.999 527.934c-132.218 0-239.784-107.565-239.784-239.784s107.565-239.784 239.784-239.784 239.784 107.565 239.784 239.784-107.565 239.784-239.784 239.784zM511.999 78.466c-115.622 0-209.685 94.063-209.685 209.685s94.063 209.685 209.685 209.685 209.685-94.063 209.685-209.685-94.063-209.685-209.685-209.685z" />
|
16 |
+
<glyph unicode="" glyph-name="pa-pa-page" d="M158.897 748.138h706.207v-35.31h-706.207v35.31zM158.897 465.655h706.207v-35.31h-706.207v35.31zM158.897 183.172h706.207v-35.31h-706.207v35.31zM0 960v-1024h1024v1024h-1024zM988.69-28.69h-953.379v953.379h953.379v-953.379z" />
|
17 |
+
<glyph unicode="" glyph-name="pa-pa-indicator" d="M517.926 514.963c64.603 0 117.185 52.583 117.185 117.185s-52.583 117.185-117.185 117.185-117.185-52.583-117.185-117.185 52.566-117.185 117.185-117.185zM517.926 715.852c46.154 0 83.704-37.55 83.704-83.704s-37.55-83.704-83.704-83.704-83.704 37.55-83.704 83.704 37.55 83.704 83.704 83.704zM840.655 330.815h-119.881l51.009 73.659c96.343 128.419 82.398 339.503-29.815 451.7-60.618 60.635-141.242 94.033-227.005 94.033-85.746 0-166.37-33.398-227.005-94.033-112.213-112.197-126.159-323.298-30.2-451.197l51.361-74.178h-125.773l-183.345-385.021h1024l-183.345 385.038zM284.928 424.563c-87.035 116.064-74.563 306.691 26.718 407.956 54.307 54.307 126.527 84.223 203.334 84.223s149.010-29.916 203.334-84.223c101.282-101.265 113.754-291.909 26.333-408.458l-229.683-331.685-230.035 332.187zM204.505 297.333h127.799l182.659-263.784 182.642 263.784h121.89l151.471-318.075h-917.93l151.471 318.075z" />
|
18 |
+
<glyph unicode="" glyph-name="pa-pa-image" d="M801.31 766.052h-578.619c-36.533 0-66.35-29.817-66.35-66.35v-503.135c0-36.533 29.817-66.35 66.35-66.35h578.35c36.533 0 66.35 29.817 66.35 66.35v502.867c0.269 36.802-29.549 66.619-66.082 66.619zM834.082 196.567c0-17.998-15.043-32.772-33.578-32.772h-577.813c-18.535 0-33.578 15.043-33.578 33.578v134.313l187.232 190.993 169.503-194.753c5.91-6.716 15.043-7.522 22.296-2.955l137.268 96.974 128.403-92.676v-132.701zM834.888 369.561l-119.538 85.96c-5.91 4.567-13.431 4.567-19.341 0l-134.313-95.631-171.652 197.171c-2.955 3.761-7.522 5.104-11.82 5.91-4.567 0-8.865-1.612-12.625-5.104l-176.218-179.173v320.739c0 17.998 15.043 32.772 33.578 32.772h578.35c18.535 0 33.578-15.043 33.578-33.578v-329.066zM613.003 666.661c-47.815 0-85.96-38.682-85.96-85.96-0.806-47.009 38.145-85.96 85.96-85.96s85.96 38.682 85.96 85.96c0 47.815-38.682 85.96-85.96 85.96zM613.003 527.782c-29.012 0-52.919 23.908-52.919 52.919 0 29.817 23.908 52.919 52.919 52.919s52.919-23.908 52.919-52.919-23.639-52.919-52.919-52.919zM0 459.282h156.34v-22.565h-156.34v22.565zM867.66 459.282h156.34v-22.565h-156.34v22.565z" />
|
19 |
+
<glyph unicode="" glyph-name="pa-pa-spin" d="M105.6 524.8v-83.2l-80 80-19.2-19.2 104-104h17.6l104 104-19.2 19.2-80-80v80c27.2 188.8 190.4 331.2 380.8 331.2 102.4 0 200-40 272-113.6l19.2 19.2c-76.8 78.4-180.8 120-291.2 120-203.2 0-379.2-152-408-353.6zM921.6 452.8l80-80 19.2 19.2-104 104h-19.2l-104-104 19.2-19.2 80 80v-80c-27.2-188.8-190.4-329.6-382.4-329.6-102.4 0-200 40-272 113.6l-19.2-19.2c78.4-78.4 180.8-120 291.2-120 204.8 0 379.2 152 408 353.6l3.2 81.6z" />
|
20 |
+
<glyph unicode="" glyph-name="pa-pa-typing" d="M874.265 902.99c-49.659 0-94.015-23.118-122.959-59.144-28.948 36.026-73.304 59.144-122.977 59.144-19.232 0-34.823-15.594-34.823-34.826 0-19.228 15.588-34.826 34.823-34.826 48.614 0 88.154-39.622 88.154-88.34v-594.003c0-48.714-39.543-88.336-88.154-88.336-19.232 0-34.823-15.594-34.823-34.826 0-19.235 15.588-34.826 34.823-34.826 49.673 0 94.032 23.118 122.977 59.144 28.944-36.026 73.3-59.144 122.959-59.144 19.235 0 34.826 15.588 34.826 34.826 0 19.228-15.591 34.826-34.826 34.826-48.593 0-88.133 39.622-88.133 88.336v594.006c0 48.718 39.54 88.34 88.133 88.34 19.235 0 34.826 15.594 34.826 34.826 0 19.225-15.591 34.823-34.826 34.823zM989.177 225.437c-9.157 0-18.146-3.72-24.628-10.202-6.475-6.475-10.202-15.457-10.202-24.624 0-9.15 3.727-18.142 10.202-24.617 6.516-6.475 15.467-10.206 24.628-10.206 9.154 0 18.142 3.731 24.621 10.206 6.475 6.475 10.202 15.463 10.202 24.617 0 9.164-3.727 18.149-10.202 24.624-6.478 6.482-15.429 10.202-24.621 10.202zM154.131 225.437c-19.222 0-34.826-15.594-34.826-34.823 0-19.222 15.601-34.823 34.826-34.823 19.218 0 34.826 15.601 34.826 34.823 0 19.228-15.608 34.823-34.826 34.823zM869.907 225.437c-19.256 0-34.823-15.594-34.823-34.823 0-19.222 15.57-34.823 34.823-34.823 19.218 0 34.826 15.601 34.826 34.823-0.003 19.228-15.608 34.823-34.826 34.823zM392.713 225.437c-19.225 0-34.823-15.594-34.823-34.823 0-19.222 15.598-34.823 34.823-34.823 19.256 0 34.823 15.601 34.823 34.823 0 19.228-15.567 34.823-34.823 34.823zM273.436 225.437c-19.256 0-34.819-15.594-34.819-34.823 0-19.222 15.563-34.823 34.819-34.823 19.228 0 34.826 15.601 34.826 34.823-0.003 19.228-15.598 34.823-34.826 34.823zM512.017 225.437c-19.218 0-34.826-15.594-34.826-34.823 0-19.222 15.605-34.823 34.826-34.823s34.826 15.601 34.826 34.823c-0.003 19.228-15.605 34.823-34.826 34.823zM631.287 155.791c19.263 0 34.826 15.601 34.826 34.823 0 19.228-15.563 34.823-34.826 34.823-19.218 0-34.823-15.594-34.823-34.823 0-19.222 15.601-34.823 34.823-34.823zM34.861 225.437c-9.195 0-18.18-3.72-24.659-10.202-6.475-6.475-10.168-15.457-10.168-24.624 0-9.15 3.693-18.142 10.168-24.617 6.516-6.475 15.463-10.206 24.659-10.206 9.154 0 18.108 3.731 24.614 10.206 6.482 6.475 10.212 15.463 10.212 24.617 0 9.164-3.731 18.149-10.212 24.624-6.472 6.482-15.457 10.202-24.614 10.202zM34.861 597.535c-19.259 0-34.826-15.567-34.826-34.788 0-19.263 15.57-34.823 34.826-34.823 19.218 0 34.826 15.563 34.826 34.823 0 19.222-15.608 34.788-34.826 34.788zM34.861 349.479c-19.259 0-34.826-15.594-34.826-34.819s15.57-34.826 34.826-34.826c19.218 0 34.826 15.598 34.826 34.826 0 19.225-15.608 34.819-34.826 34.819zM34.861 473.528c-19.259 0-34.826-15.601-34.826-34.826 0-19.263 15.57-34.826 34.826-34.826 19.218 0 34.826 15.563 34.826 34.826 0 19.225-15.608 34.826-34.826 34.826zM34.861 721.584c-9.157 0-18.146-3.696-24.659-10.174-6.475-6.509-10.202-15.46-10.202-24.652 0-9.157 3.727-18.108 10.202-24.624 6.516-6.478 15.463-10.202 24.659-10.202 9.154 0 18.108 3.724 24.614 10.202 6.482 6.516 10.212 15.463 10.212 24.624 0 9.192-3.731 18.142-10.212 24.648-6.506 6.478-15.491 10.178-24.614 10.178zM631.318 651.931c19.228 0 34.826 15.601 34.826 34.857 0 19.218-15.594 34.792-34.826 34.792-19.253 0-34.854-15.574-34.854-34.792 0-19.253 15.601-34.857 34.854-34.857zM273.436 721.584c-19.256 0-34.819-15.574-34.819-34.792 0-19.256 15.563-34.857 34.819-34.857 19.228 0 34.826 15.601 34.826 34.857-0.003 19.218-15.598 34.792-34.826 34.792zM392.713 721.584c-19.225 0-34.823-15.574-34.823-34.792 0-19.256 15.598-34.857 34.823-34.857 19.256 0 34.823 15.601 34.823 34.857 0 19.218-15.567 34.792-34.823 34.792zM869.907 721.584c-19.256 0-34.823-15.574-34.823-34.792 0-19.256 15.57-34.857 34.823-34.857 19.218 0 34.826 15.601 34.826 34.857-0.003 19.218-15.608 34.792-34.826 34.792zM154.131 721.584c-19.222 0-34.826-15.574-34.826-34.792 0-19.256 15.601-34.857 34.826-34.857 19.218 0 34.826 15.601 34.826 34.857 0 19.218-15.608 34.792-34.826 34.792zM512.017 721.584c-19.253 0-34.826-15.574-34.826-34.792 0-19.256 15.574-34.857 34.826-34.857 19.222 0 34.826 15.601 34.826 34.857-0.003 19.218-15.605 34.792-34.826 34.792zM989.177 651.931c9.192 0 18.142 3.724 24.621 10.202 6.509 6.482 10.202 15.463 10.202 24.624 0 9.192-3.693 18.173-10.202 24.648-6.478 6.478-15.463 10.174-24.621 10.174s-18.111-3.696-24.628-10.174c-6.475-6.509-10.202-15.457-10.202-24.648 0-9.157 3.727-18.108 10.202-24.624 6.485-6.475 15.47-10.202 24.628-10.202zM989.177 349.479c-19.225 0-34.83-15.594-34.83-34.819s15.601-34.826 34.83-34.826c19.253 0 34.823 15.598 34.823 34.826 0 19.225-15.57 34.819-34.823 34.819zM989.177 473.528c-19.225 0-34.83-15.601-34.83-34.826s15.601-34.826 34.83-34.826c19.253 0 34.823 15.598 34.823 34.826 0 19.225-15.57 34.826-34.823 34.826zM989.177 597.573c-19.225 0-34.83-15.601-34.83-34.826 0-19.263 15.601-34.823 34.83-34.823 19.253 0 34.823 15.563 34.823 34.823 0 19.222-15.57 34.826-34.823 34.826z" />
|
21 |
+
<glyph unicode="" glyph-name="pa-pa-header" d="M1024-36.234v968.469c0 15.327-12.439 27.766-27.766 27.766h-968.469c-15.327 0-27.766-12.439-27.766-27.766v-968.469c0-15.327 12.439-27.766 27.766-27.766h968.469c15.327 0 27.766 12.439 27.766 27.766zM968.469-8.469h-912.937v912.937h912.937v-912.937zM337.187 211.436c15.327 0 27.766 12.439 27.766 27.766v181.033h294.317v-181.033c0-15.327 12.439-27.766 27.766-27.766s27.766 12.439 27.766 27.766v417.597c0 15.327-12.439 27.766-27.766 27.766s-27.766-12.439-27.766-27.766v-181.033h-294.317v181.033c0 15.327-12.439 27.766-27.766 27.766s-27.766-12.439-27.766-27.766v-417.597c0-15.327 12.439-27.766 27.766-27.766z" />
|
22 |
+
<glyph unicode="" glyph-name="pa-pa-counter" d="M508.586 115.198c-7.077 0-12.8-5.72-12.8-12.8v-153.599c0-7.077 5.72-12.8 12.8-12.8s12.8 5.722 12.8 12.8v153.599c0 7.077-5.72 12.8-12.8 12.8zM508.586 960c-7.077 0-12.8-5.72-12.8-12.8v-153.612c0-7.077 5.72-12.8 12.8-12.8s12.8 5.722 12.8 12.8v153.612c0 7.077-5.72 12.8-12.8 12.8zM884.75 636.062c-4.608 10.841-43.814 94.603-150.168 94.603s-145.548-83.775-150.155-94.603c-4.456-7.973-33.306-64.446-33.306-188.067 0-168.972 68.582-269.859 183.459-269.859 114.88 0 183.472 100.888 183.476 269.859 0 123.632-28.852 180.105-33.306 188.067zM734.593 203.734c-98.853 0-157.86 91.313-157.86 244.258 0 122.957 29.901 175.358 30.17 175.819l0.998 2.060c0.294 0.794 31.027 79.193 126.68 79.193 95.053 0 125.463-75.992 126.718-79.193l0.998-2.060c0.294-0.5 30.17-51.724 30.17-175.819 0-152.945-59.007-244.258-157.873-244.258zM342.562 474.242c-9.332 3.943-18.944 7.207-28.532 9.908 26.636 7.77 48.525 18.944 64.55 33.267 1.792 1.498 43.801 37.158 43.801 93.836 0 22.669-6.631 55.449-39.13 83.634-10.648 10.752-42.905 35.776-112.075 35.776-76.198 0-140.964-47.936-143.691-49.971l15.373-20.48c0.576 0.448 60.555 44.85 128.305 44.85 61.208 0 87.32-21.58 94.142-28.467 0.409-0.409 1.114-1.050 2.099-1.894 19.481-16.869 29.35-38.219 29.35-63.448 0-44.826-34.252-73.882-34.598-74.163l-1.318-1.164c-15.808-14.157-54.962-37.593-141.399-39.013-5.030 0.091-8.153-0.050-8.729-0.076l0.435-25.586c2.483 0 4.965 0.013 7.424 0.052 18.546-0.13 70.577-2.292 113.982-20.634 56.345-23.807 87.385-65.086 87.385-116.209 0-42.944-16.87-76.211-51.57-101.669-26.636-19.559-60.273-29.055-102.821-29.055-48.114 0-92.146 18.226-147.595 47.64l-12.005-22.63c58.929-31.244 106.186-50.61 159.6-50.61 48.203 0 86.781 11.122 118.003 33.993 41.152 30.22 62.028 71.371 62.028 122.327 0 62.078-36.596 111.729-103.013 139.786z" />
|
23 |
+
<glyph unicode="" glyph-name="pa-pa-count" d="M840.433 711.924l41.392 41.392 18.315-18.315 23.257 23.237-61.913 61.913-23.257-23.257 20.341-20.321-41.822-41.822c-81.013 72.438-187.774 116.606-304.721 116.606-252.408 0-457.691-205.318-457.691-457.671 0-252.368 205.283-457.691 457.691-457.691 252.298 0 457.636 205.338 457.636 457.691 0.005 123.555-49.341 235.809-129.228 318.238zM530.79-30.667v81.048h-37.6v-81.048c-220.091 9.595-397.174 187.454-405.624 407.845h66.55v32.907h-66.55c8.484 221.182 186.809 399.486 408.025 407.97v-70.737h32.852v70.737c221.167-8.484 399.486-186.789 407.955-407.97h-61.803v-32.907h61.803c-8.484-220.391-185.518-398.245-405.609-407.845zM530.79 447.039v249.346c0 10.671-6.874 19.265-15.363 19.265-8.54 0-15.398-8.575-15.398-19.265v-247.195c-25.639-5.513-44.904-28.29-44.904-55.519 0-27.304 19.265-50.076 44.904-55.574v-24.763c0-10.691 6.874-19.3 15.398-19.3 8.484 0 15.363 8.61 15.363 19.3v26.909c22.077 7.804 38.010 28.665 38.010 53.423 0 24.763-15.933 45.624-38.010 53.373zM495.591 960h32.852v-87.551h-32.852v87.551z" />
|
24 |
+
<glyph unicode="" glyph-name="pa-pa-points" d="M307.2 516.267c-37.649 0-68.267-30.618-68.267-68.267s30.618-68.267 68.267-68.267 68.267 30.618 68.267 68.267-30.618 68.267-68.267 68.267zM512 516.267c-37.649 0-68.267-30.618-68.267-68.267s30.618-68.267 68.267-68.267 68.267 30.618 68.267 68.267-30.618 68.267-68.267 68.267zM785.067 448c0 37.649-30.618 68.267-68.267 68.267s-68.267-30.618-68.267-68.267 30.618-68.267 68.267-68.267 68.267 30.618 68.267 68.267zM41.199 448l226.867 226.867c6.673 6.673 6.673 17.459 0 24.132s-17.459 6.673-24.132 0l-238.933-238.933c-6.673-6.673-6.673-17.459 0-24.132l238.933-238.933c3.328-3.328 7.697-5.001 12.066-5.001s8.738 1.673 12.066 5.001c6.673 6.673 6.673 17.459 0 24.132l-226.867 226.867zM1018.999 460.066l-238.933 238.933c-6.673 6.673-17.459 6.673-24.132 0s-6.673-17.459 0-24.132l226.867-226.867-226.867-226.867c-6.673-6.673-6.673-17.459 0-24.132 3.328-3.328 7.697-5.001 12.066-5.001s8.738 1.673 12.066 5.001l238.933 238.933c6.673 6.673 6.673 17.459 0 24.132z" />
|
25 |
+
<glyph unicode="" glyph-name="pa-pa-post" d="M900.76 781.103h-200.029c-11.508 0-20.714-9.206-20.714-20.714s9.206-20.714 20.714-20.714h200.029c22.597 0 41.010-18.413 41.010-41.010v-514.302c0-22.597-18.413-41.010-41.010-41.010h-777.311c-22.597 0-41.010 18.413-41.010 41.010v514.302c0 22.597 18.413 41.010 41.010 41.010h202.959c11.508 0 20.714 9.206 20.714 20.714s-9.206 20.714-20.714 20.714h-203.168c-45.404 0-82.439-37.035-82.439-82.439v-514.302c0-45.404 37.035-82.439 82.439-82.439h368.046v-124.495h-171.992c-11.508 0-20.714-9.206-20.714-20.714s9.206-20.714 20.714-20.714h385.203c11.508 0 20.714 9.206 20.714 20.714s-9.206 20.714-20.714 20.714h-171.992v124.495h368.046c45.404 0 82.439 37.035 82.439 82.439v514.302c0.418 45.404-36.826 82.439-82.23 82.439zM628.754 878.607c0 44.776-36.407 81.393-81.393 81.393h-70.931c-44.776 0-81.393-36.407-81.393-81.393v-48.752c0-1.255 0.209-2.511 0.418-3.557-0.209-1.255-0.418-2.302-0.418-3.557v-404.244c0-4.603 1.465-8.997 4.185-12.554l96.039-126.169c3.975-5.231 10.043-8.16 16.53-8.16s12.554 2.929 16.53 8.16l96.039 126.169c2.72 3.557 4.185 7.951 4.185 12.554v404.871c0 1.046-0.209 2.302-0.418 3.348 0.209 1.046 0.418 2.092 0.418 3.348v48.543h0.209zM436.884 809.141h54.611v-367h-54.611v367zM512.209 326.434l-56.703 74.488h113.406l-56.703-74.488zM587.534 442.141h-54.611v367h54.611v-367zM587.534 850.57h-150.65v28.038c0 21.97 17.994 39.964 39.964 39.964h70.931c21.97 0 39.964-17.994 39.964-39.964v-28.038c0 0-0.209 0-0.209 0z" />
|
26 |
+
<glyph unicode="" glyph-name="pa-pa-image2" d="M922.942 426.125c-20.551 20.551-53.972 20.515-74.522 0l-271.731-271.731-37.447-137.34-9.163-9.163c-6.85-6.85-6.868-17.902-0.106-24.806l-0.088-0.353 0.335 0.088c3.425-3.372 7.874-5.085 12.341-5.085 4.52 0 9.039 1.73 12.482 5.173l9.181 9.181 137.322 37.447 271.713 271.731c20.551 20.551 20.551 53.99 0 74.54l-50.317 50.317zM617.454 145.214l180.842 180.842 74.911-74.911-180.842-180.842-74.911 74.911zM601.512 111.228l56.85-56.85-78.177-21.327 21.327 78.177zM948.277 326.25l-50.123-50.123-74.911 74.893 50.123 50.123c6.797 6.797 17.832 6.78 24.611 0.018l50.317-50.317c6.78-6.78 6.78-17.832-0.018-24.594zM380.804 678.665c0 54.219-44.103 98.322-98.322 98.322s-98.322-44.103-98.322-98.322c0-54.201 44.103-98.304 98.322-98.304s98.322 44.103 98.322 98.304zM219.471 678.665c0 34.745 28.266 63.011 63.011 63.011s63.011-28.284 63.011-63.011-28.266-62.994-63.011-62.994-63.011 28.266-63.011 62.994zM110.345 270.989c3.478-3.972 8.351-5.985 13.241-5.985 4.131 0 8.298 1.448 11.652 4.396l288.009 253.564 146.873-146.856c6.903-6.903 18.061-6.903 24.964 0s6.903 18.061 0 24.964l-49.876 49.858 162.269 177.699 145.867-129.66c7.309-6.497 18.45-5.826 24.929 1.465 6.479 7.274 5.826 18.45-1.465 24.911l-158.897 141.241c-7.239 6.444-18.273 5.879-24.77-1.289l-172.915-189.387-83.738 83.738c-6.603 6.585-17.161 6.903-24.152 0.777l-300.42-264.51c-7.309-6.444-8.033-17.602-1.571-24.929zM1006.345 918.246h-988.69c-9.746 0-17.655-7.892-17.655-17.655v-776.828c0-9.763 7.91-17.655 17.655-17.655h459.034c9.746 0 17.655 7.892 17.655 17.655s-7.91 17.655-17.655 17.655h-441.379v741.517h953.379v-423.724c0-9.763 7.91-17.655 17.655-17.655s17.655 7.892 17.655 17.655v441.379c0 9.746-7.91 17.655-17.655 17.655z" />
|
27 |
+
</font></defs></svg>
|
admin/assets/pa-elements-font/fonts/pa-elements.ttf
ADDED
Binary file
|
admin/assets/pa-elements-font/fonts/pa-elements.woff
ADDED
Binary file
|
admin/settings-page.php
ADDED
@@ -0,0 +1,266 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if( ! defined( 'ABSPATH' ) ) exit(); // Exit if accessed directly
|
4 |
+
|
5 |
+
class PA_admin_settings {
|
6 |
+
|
7 |
+
public $pa_elements_keys = ['premium-banner', 'premium-blog','premium-carousel', 'premium-countdown','premium-counter','premium-dual-header','premium-fancytext','premium-image-separator','premium-maps','premium-modalbox','premium-person','premium-progressbar','premium-testimonials','premium-title','premium-videobox'];
|
8 |
+
|
9 |
+
private $pa_default_settings;
|
10 |
+
|
11 |
+
private $pa_settings;
|
12 |
+
|
13 |
+
private $pa_get_settings;
|
14 |
+
|
15 |
+
public function __construct() {
|
16 |
+
add_action( 'admin_menu', array( $this,'pa_admin_menu') );
|
17 |
+
add_action('init', array( $this, 'pa_admin_page_scripts' ) );
|
18 |
+
add_action( 'wp_ajax_save_settings_with_ajax', array( $this, 'pa_save_settings_with_ajax' ) );
|
19 |
+
}
|
20 |
+
|
21 |
+
public function pa_admin_page_scripts () {
|
22 |
+
wp_enqueue_style( 'premium_addons_elementor-css', plugins_url( '/', __FILE__ ).'assets/admin.css' );
|
23 |
+
wp_enqueue_style('font-awesome', plugins_url( '/' , __FILE__ ).'assets/font-awesome/css/font-awesome.min.css');
|
24 |
+
wp_enqueue_style( 'premium_addons-sweetalert2-css', plugins_url( '/', __FILE__ ).'assets/js/sweetalert2/css/sweetalert2.min.css' );
|
25 |
+
wp_enqueue_script('pa-addons-elementor-admin-js', plugins_url( '/' , __FILE__ ).'assets/admin.js' , array('jquery','jquery-ui-tabs'), '1.0' , true );
|
26 |
+
wp_enqueue_script( 'premium_addons_sweet-js', plugins_url( '/', __FILE__ ).'assets/js/sweetalert2/js/core.js', array( 'jquery' ), '1.0', true );
|
27 |
+
wp_enqueue_script( 'premium_addons_sweetalert2-js', plugins_url( '/', __FILE__ ).'assets/js/sweetalert2/js/sweetalert2.min.js', array( 'jquery', 'premium_addons_sweet-js' ), '1.0', true );
|
28 |
+
}
|
29 |
+
|
30 |
+
public function pa_admin_menu() {
|
31 |
+
add_menu_page( 'Premium Addons for Elementor', 'Premium Addons for Elementor', 'manage_options', 'pa-settings-page', array( $this , 'pa_admin_page' ), 'dashicons-star-empty', 100 );
|
32 |
+
}
|
33 |
+
|
34 |
+
public function pa_admin_page(){
|
35 |
+
$js_info = array(
|
36 |
+
'ajaxurl' => admin_url( 'admin-ajax.php' )
|
37 |
+
);
|
38 |
+
wp_localize_script( 'pa-addons-elementor-admin-js', 'settings', $js_info );
|
39 |
+
|
40 |
+
$this->pa_default_settings = array_fill_keys( $this->pa_elements_keys, true );
|
41 |
+
$this->pa_get_settings = get_option( 'pa_save_settings', $this->pa_default_settings );
|
42 |
+
$pa_new_settings = array_diff_key( $this->pa_default_settings, $this->pa_get_settings );
|
43 |
+
if( ! empty( $pa_new_settings ) ) {
|
44 |
+
$pa_updated_settings = array_merge( $this->pa_get_settings, $pa_new_settings );
|
45 |
+
update_option( 'pa_save_settings', $pa_updated_settings );
|
46 |
+
}
|
47 |
+
$this->pa_get_settings = get_option( 'pa_save_settings', $this->pa_default_settings );
|
48 |
+
?>
|
49 |
+
<div class="wrap">
|
50 |
+
<div class="response-wrap"></div>
|
51 |
+
<form action="" method="POST" id="pa-settings" name="pa-settings">
|
52 |
+
<div class="pa-header-wrapper">
|
53 |
+
<div class="pa-title-left">
|
54 |
+
<h1 class="pa-title"><?php echo esc_html__('Premium Addons for Elementor', 'premium_elementor'); ?></h1>
|
55 |
+
</div>
|
56 |
+
<div class="pa-title-right">
|
57 |
+
<input type="submit" value="Save Settings" class="button pa-btn pa-save-button">
|
58 |
+
</div>
|
59 |
+
</div>
|
60 |
+
<div class="pa-settings">
|
61 |
+
<h1>PREMIUM ADDONS ELEMENTS</h1>
|
62 |
+
<div id="elements" class="pa-settings-tab">
|
63 |
+
<p class="pa-elements-notice">Choosing only the elements which you need will improve your site loading speed</p>
|
64 |
+
<div class="pa-row">
|
65 |
+
<table class="pa-elements-table">
|
66 |
+
<tr>
|
67 |
+
<td>
|
68 |
+
<div class="pa-element-wrapper">
|
69 |
+
<label class="switch">
|
70 |
+
<input type="checkbox" id="premium-banner" name="premium-banner" <?php checked(1, $this->pa_get_settings['premium-banner'], true) ?>>
|
71 |
+
<span class="slider round"></span>
|
72 |
+
</label>
|
73 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Banner', 'premium_elementor'); ?></p>
|
74 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Banner', 'premium_elementor');?></p>
|
75 |
+
</div>
|
76 |
+
</td>
|
77 |
+
<td>
|
78 |
+
<div class="pa-element-wrapper">
|
79 |
+
<label class="switch">
|
80 |
+
<input type="checkbox" id="premium-blog" name="premium-blog" <?php checked(1, $this->pa_get_settings['premium-blog'], true) ?>>
|
81 |
+
<span class="slider round"></span>
|
82 |
+
</label>
|
83 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Blog', 'premium_elementor'); ?></p>
|
84 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Blog', 'premium_elementor');?></p>
|
85 |
+
</div>
|
86 |
+
</td>
|
87 |
+
<td>
|
88 |
+
<div class="pa-element-wrapper">
|
89 |
+
<label class="switch">
|
90 |
+
<input type="checkbox" id="premium-carousel" name="premium-carousel" <?php checked(1, $this->pa_get_settings['premium-carousel'], true) ?>>
|
91 |
+
<span class="slider round"></span>
|
92 |
+
</label>
|
93 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Carousel', 'premium_elementor'); ?></p>
|
94 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Carousel', 'premium_elementor');?></p>
|
95 |
+
</div>
|
96 |
+
</td>
|
97 |
+
<td>
|
98 |
+
<div class="pa-element-wrapper">
|
99 |
+
<label class="switch">
|
100 |
+
<input type="checkbox" id="premium-countdown" name="premium-countdown" <?php checked(1, $this->pa_get_settings['premium-countdown'], true) ?>>
|
101 |
+
<span class="slider round"></span>
|
102 |
+
</label>
|
103 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Countdown', 'premium_elementor'); ?></p>
|
104 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Countdown', 'premium_elementor');?></p>
|
105 |
+
</div>
|
106 |
+
</td>
|
107 |
+
<td>
|
108 |
+
<div class="pa-element-wrapper">
|
109 |
+
<label class="switch">
|
110 |
+
<input type="checkbox" id="premium-counter" name="premium-counter" <?php checked(1, $this->pa_get_settings['premium-counter'], true) ?>>
|
111 |
+
<span class="slider round"></span>
|
112 |
+
</label>
|
113 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Counter', 'premium_elementor'); ?></p>
|
114 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Counter', 'premium_elementor');?></p>
|
115 |
+
</div>
|
116 |
+
</td>
|
117 |
+
</tr>
|
118 |
+
<tr>
|
119 |
+
<td>
|
120 |
+
<div class="pa-element-wrapper">
|
121 |
+
<label class="switch">
|
122 |
+
<input type="checkbox" id="premium-dual-header" name="premium-dual-header" <?php checked(1, $this->pa_get_settings['premium-dual-header'], true) ?>>
|
123 |
+
<span class="slider round"></span>
|
124 |
+
</label>
|
125 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Dual Header', 'premium_elementor'); ?></p>
|
126 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Dual Header', 'premium_elementor');?></p>
|
127 |
+
</div>
|
128 |
+
</td>
|
129 |
+
<td>
|
130 |
+
<div class="pa-element-wrapper">
|
131 |
+
<label class="switch">
|
132 |
+
<input type="checkbox" id="premium-fancytext" name="premium-fancytext" <?php checked(1, $this->pa_get_settings['premium-fancytext'], true) ?>>
|
133 |
+
<span class="slider round"></span>
|
134 |
+
</label>
|
135 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Fancy Text', 'premium_elementor'); ?></p>
|
136 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Fancy Text', 'premium_elementor');?></p>
|
137 |
+
</div>
|
138 |
+
</td>
|
139 |
+
<td>
|
140 |
+
<div class="pa-element-wrapper">
|
141 |
+
<label class="switch">
|
142 |
+
<input type="checkbox" id="premium-image-separator" name="premium-image-separator" <?php checked(1, $this->pa_get_settings['premium-image-separator'], true) ?>>
|
143 |
+
<span class="slider round"></span>
|
144 |
+
</label>
|
145 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Image Separator', 'premium_elementor'); ?></p>
|
146 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Image Separator', 'premium_elementor');?></p>
|
147 |
+
</div>
|
148 |
+
</td>
|
149 |
+
<td>
|
150 |
+
<div class="pa-element-wrapper">
|
151 |
+
<label class="switch">
|
152 |
+
<input type="checkbox" id="premium-maps" name="premium-maps" <?php checked(1, $this->pa_get_settings['premium-maps'], true) ?>>
|
153 |
+
<span class="slider round"></span>
|
154 |
+
</label>
|
155 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Maps', 'premium_elementor'); ?></p>
|
156 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Maps', 'premium_elementor');?></p>
|
157 |
+
</div>
|
158 |
+
</td>
|
159 |
+
<td>
|
160 |
+
<div class="pa-element-wrapper">
|
161 |
+
<label class="switch">
|
162 |
+
<input type="checkbox" id="premium-modalbox" name="premium-modalbox" <?php checked(1, $this->pa_get_settings['premium-modalbox'], true) ?>>
|
163 |
+
<span class="slider round"></span>
|
164 |
+
</label>
|
165 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Modal Box', 'premium_elementor'); ?></p>
|
166 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Modal Box', 'premium_elementor');?></p>
|
167 |
+
</div>
|
168 |
+
</td>
|
169 |
+
</tr>
|
170 |
+
<tr>
|
171 |
+
<td>
|
172 |
+
<div class="pa-element-wrapper">
|
173 |
+
<label class="switch">
|
174 |
+
<input type="checkbox" id="premium-person" name="premium-person" <?php checked(1, $this->pa_get_settings['premium-person'], true) ?>>
|
175 |
+
<span class="slider round"></span>
|
176 |
+
</label>
|
177 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Person', 'premium_elementor'); ?></p>
|
178 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Person', 'premium_elementor');?></p>
|
179 |
+
</div>
|
180 |
+
</td>
|
181 |
+
<td>
|
182 |
+
<div class="pa-element-wrapper">
|
183 |
+
<label class="switch">
|
184 |
+
<input type="checkbox" id="premium-progressbar" name="premium-progressbar" <?php checked(1, $this->pa_get_settings['premium-progressbar'], true) ?>>
|
185 |
+
<span class="slider round"></span>
|
186 |
+
</label>
|
187 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Progress Bar', 'premium_elementor'); ?></p>
|
188 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Progress Bar', 'premium_elementor');?></p>
|
189 |
+
</div>
|
190 |
+
</td>
|
191 |
+
<td>
|
192 |
+
<div class="pa-element-wrapper">
|
193 |
+
<label class="switch">
|
194 |
+
<input type="checkbox" id="premium-testimonials" name="premium-testimonials" <?php checked(1, $this->pa_get_settings['premium-testimonials'], true) ?>>
|
195 |
+
<span class="slider round"></span>
|
196 |
+
</label>
|
197 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Testimonials', 'premium_elementor'); ?></p>
|
198 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Testimonials', 'premium_elementor');?></p>
|
199 |
+
</div>
|
200 |
+
</td>
|
201 |
+
<td>
|
202 |
+
<div class="pa-element-wrapper">
|
203 |
+
<label class="switch">
|
204 |
+
<input type="checkbox" id="premium-title" name="premium-title" <?php checked(1, $this->pa_get_settings['premium-title'], true) ?>>
|
205 |
+
<span class="slider round"></span>
|
206 |
+
</label>
|
207 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Title', 'premium_elementor'); ?></p>
|
208 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Title', 'premium_elementor');?></p>
|
209 |
+
</div>
|
210 |
+
</td>
|
211 |
+
<td>
|
212 |
+
<div class="pa-element-wrapper">
|
213 |
+
<label class="switch">
|
214 |
+
<input type="checkbox" id="premium-videobox" name="premium-videobox" <?php checked(1, $this->pa_get_settings['premium-videobox'], true) ?>>
|
215 |
+
<span class="slider round"></span>
|
216 |
+
</label>
|
217 |
+
<p class="pa-element-name"><?php echo esc_html__('Premium Video Box', 'premium_elementor'); ?></p>
|
218 |
+
<p class="pa-element-desc"><?php echo esc_html__('Enable/Disable Premium Video Box', 'premium_elementor');?></p>
|
219 |
+
</div>
|
220 |
+
</td>
|
221 |
+
</tr>
|
222 |
+
</table>
|
223 |
+
<input type="submit" value="Save Settings" class="button pa-btn pa-save-button">
|
224 |
+
</div>
|
225 |
+
</div>
|
226 |
+
</div>
|
227 |
+
</form>
|
228 |
+
</div>
|
229 |
+
<?php
|
230 |
+
}
|
231 |
+
|
232 |
+
public function pa_save_settings_with_ajax() {
|
233 |
+
|
234 |
+
if( isset( $_POST['fields'] ) ) {
|
235 |
+
parse_str( $_POST['fields'], $settings );
|
236 |
+
}else {
|
237 |
+
return;
|
238 |
+
}
|
239 |
+
|
240 |
+
$this->pa_settings = array(
|
241 |
+
'premium-banner' => intval( $settings['premium-banner'] ? 1 : 0 ),
|
242 |
+
'premium-blog' => intval( $settings['premium-blog'] ? 1 : 0 ),
|
243 |
+
'premium-carousel' => intval( $settings['premium-carousel'] ? 1 : 0 ),
|
244 |
+
'premium-countdown' => intval( $settings['premium-countdown'] ? 1 : 0 ),
|
245 |
+
'premium-counter' => intval( $settings['premium-counter'] ? 1 : 0 ),
|
246 |
+
'premium-dual-header' => intval( $settings['premium-dual-header'] ? 1 : 0 ),
|
247 |
+
'premium-fancytext' => intval( $settings['premium-fancytext'] ? 1 : 0 ),
|
248 |
+
'premium-image-separator' => intval( $settings['premium-image-separator'] ? 1 : 0 ),
|
249 |
+
'premium-maps' => intval( $settings['premium-maps'] ? 1 : 0 ),
|
250 |
+
'premium-modalbox' => intval( $settings['premium-modalbox'] ? 1 : 0 ),
|
251 |
+
'premium-person' => intval( $settings['premium-person'] ? 1 : 0 ),
|
252 |
+
'premium-progressbar' => intval( $settings['premium-progressbar'] ? 1 : 0 ),
|
253 |
+
'premium-testimonials' => intval( $settings['premium-testimonials'] ? 1 : 0 ),
|
254 |
+
'premium-title' => intval( $settings['premium-title'] ? 1 : 0 ),
|
255 |
+
'premium-videobox' => intval( $settings['premium-videobox'] ? 1 : 0 ),
|
256 |
+
'wisdom_registered_setting' => 1,
|
257 |
+
);
|
258 |
+
update_option( 'pa_save_settings', $this->pa_settings );
|
259 |
+
return true;
|
260 |
+
die();
|
261 |
+
|
262 |
+
|
263 |
+
}
|
264 |
+
}
|
265 |
+
|
266 |
+
new PA_admin_settings();
|
assets/css/ajax-loader.gif
ADDED
Binary file
|
assets/css/animate.css
ADDED
@@ -0,0 +1,1579 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@charset "UTF-8";
|
2 |
+
|
3 |
+
/*!
|
4 |
+
* animate.css -http://daneden.me/animate
|
5 |
+
* Version - 3.5.2
|
6 |
+
* Licensed under the MIT license - http://opensource.org/licenses/MIT
|
7 |
+
*
|
8 |
+
* Copyright (c) 2017 Daniel Eden
|
9 |
+
*/
|
10 |
+
|
11 |
+
.animated {
|
12 |
+
animation-duration: 1s;
|
13 |
+
animation-fill-mode: both;
|
14 |
+
}
|
15 |
+
|
16 |
+
.animated.infinite {
|
17 |
+
animation-iteration-count: infinite;
|
18 |
+
}
|
19 |
+
|
20 |
+
.animated.hinge {
|
21 |
+
animation-duration: 2s;
|
22 |
+
}
|
23 |
+
|
24 |
+
.animated.flipOutX,
|
25 |
+
.animated.flipOutY,
|
26 |
+
.animated.bounceIn,
|
27 |
+
.animated.bounceOut {
|
28 |
+
animation-duration: .75s;
|
29 |
+
}
|
30 |
+
|
31 |
+
@keyframes bounce {
|
32 |
+
from, 20%, 53%, 80%, to {
|
33 |
+
animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
34 |
+
transform: translate3d(0,0,0);
|
35 |
+
}
|
36 |
+
|
37 |
+
40%, 43% {
|
38 |
+
animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
39 |
+
transform: translate3d(0, -30px, 0);
|
40 |
+
}
|
41 |
+
|
42 |
+
70% {
|
43 |
+
animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
44 |
+
transform: translate3d(0, -15px, 0);
|
45 |
+
}
|
46 |
+
|
47 |
+
90% {
|
48 |
+
transform: translate3d(0,-4px,0);
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
.bounce {
|
53 |
+
animation-name: bounce;
|
54 |
+
transform-origin: center bottom;
|
55 |
+
}
|
56 |
+
|
57 |
+
@keyframes flash {
|
58 |
+
from, 50%, to {
|
59 |
+
opacity: 1;
|
60 |
+
}
|
61 |
+
|
62 |
+
25%, 75% {
|
63 |
+
opacity: 0;
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
.flash {
|
68 |
+
animation-name: flash;
|
69 |
+
}
|
70 |
+
|
71 |
+
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
|
72 |
+
|
73 |
+
@keyframes pulse {
|
74 |
+
from {
|
75 |
+
transform: scale3d(1, 1, 1);
|
76 |
+
}
|
77 |
+
|
78 |
+
50% {
|
79 |
+
transform: scale3d(1.05, 1.05, 1.05);
|
80 |
+
}
|
81 |
+
|
82 |
+
to {
|
83 |
+
transform: scale3d(1, 1, 1);
|
84 |
+
}
|
85 |
+
}
|
86 |
+
|
87 |
+
.pulse {
|
88 |
+
animation-name: pulse;
|
89 |
+
}
|
90 |
+
|
91 |
+
@keyframes rubberBand {
|
92 |
+
from {
|
93 |
+
transform: scale3d(1, 1, 1);
|
94 |
+
}
|
95 |
+
|
96 |
+
30% {
|
97 |
+
transform: scale3d(1.25, 0.75, 1);
|
98 |
+
}
|
99 |
+
|
100 |
+
40% {
|
101 |
+
transform: scale3d(0.75, 1.25, 1);
|
102 |
+
}
|
103 |
+
|
104 |
+
50% {
|
105 |
+
transform: scale3d(1.15, 0.85, 1);
|
106 |
+
}
|
107 |
+
|
108 |
+
65% {
|
109 |
+
transform: scale3d(.95, 1.05, 1);
|
110 |
+
}
|
111 |
+
|
112 |
+
75% {
|
113 |
+
transform: scale3d(1.05, .95, 1);
|
114 |
+
}
|
115 |
+
|
116 |
+
to {
|
117 |
+
transform: scale3d(1, 1, 1);
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
.rubberBand {
|
122 |
+
animation-name: rubberBand;
|
123 |
+
}
|
124 |
+
|
125 |
+
@keyframes shake {
|
126 |
+
from, to {
|
127 |
+
transform: translate3d(0, 0, 0);
|
128 |
+
}
|
129 |
+
|
130 |
+
10%, 30%, 50%, 70%, 90% {
|
131 |
+
transform: translate3d(-10px, 0, 0);
|
132 |
+
}
|
133 |
+
|
134 |
+
20%, 40%, 60%, 80% {
|
135 |
+
transform: translate3d(10px, 0, 0);
|
136 |
+
}
|
137 |
+
}
|
138 |
+
|
139 |
+
.shake {
|
140 |
+
animation-name: shake;
|
141 |
+
}
|
142 |
+
|
143 |
+
@keyframes headShake {
|
144 |
+
0% {
|
145 |
+
transform: translateX(0);
|
146 |
+
}
|
147 |
+
|
148 |
+
6.5% {
|
149 |
+
transform: translateX(-6px) rotateY(-9deg);
|
150 |
+
}
|
151 |
+
|
152 |
+
18.5% {
|
153 |
+
transform: translateX(5px) rotateY(7deg);
|
154 |
+
}
|
155 |
+
|
156 |
+
31.5% {
|
157 |
+
transform: translateX(-3px) rotateY(-5deg);
|
158 |
+
}
|
159 |
+
|
160 |
+
43.5% {
|
161 |
+
transform: translateX(2px) rotateY(3deg);
|
162 |
+
}
|
163 |
+
|
164 |
+
50% {
|
165 |
+
transform: translateX(0);
|
166 |
+
}
|
167 |
+
}
|
168 |
+
|
169 |
+
.headShake {
|
170 |
+
animation-timing-function: ease-in-out;
|
171 |
+
animation-name: headShake;
|
172 |
+
}
|
173 |
+
|
174 |
+
@keyframes swing {
|
175 |
+
20% {
|
176 |
+
transform: rotate3d(0, 0, 1, 15deg);
|
177 |
+
}
|
178 |
+
|
179 |
+
40% {
|
180 |
+
transform: rotate3d(0, 0, 1, -10deg);
|
181 |
+
}
|
182 |
+
|
183 |
+
60% {
|
184 |
+
transform: rotate3d(0, 0, 1, 5deg);
|
185 |
+
}
|
186 |
+
|
187 |
+
80% {
|
188 |
+
transform: rotate3d(0, 0, 1, -5deg);
|
189 |
+
}
|
190 |
+
|
191 |
+
to {
|
192 |
+
transform: rotate3d(0, 0, 1, 0deg);
|
193 |
+
}
|
194 |
+
}
|
195 |
+
|
196 |
+
.swing {
|
197 |
+
transform-origin: top center;
|
198 |
+
animation-name: swing;
|
199 |
+
}
|
200 |
+
|
201 |
+
@keyframes tada {
|
202 |
+
from {
|
203 |
+
transform: scale3d(1, 1, 1);
|
204 |
+
}
|
205 |
+
|
206 |
+
10%, 20% {
|
207 |
+
transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
|
208 |
+
}
|
209 |
+
|
210 |
+
30%, 50%, 70%, 90% {
|
211 |
+
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
|
212 |
+
}
|
213 |
+
|
214 |
+
40%, 60%, 80% {
|
215 |
+
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
|
216 |
+
}
|
217 |
+
|
218 |
+
to {
|
219 |
+
transform: scale3d(1, 1, 1);
|
220 |
+
}
|
221 |
+
}
|
222 |
+
|
223 |
+
.tada {
|
224 |
+
animation-name: tada;
|
225 |
+
}
|
226 |
+
|
227 |
+
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
|
228 |
+
|
229 |
+
@keyframes wobble {
|
230 |
+
from {
|
231 |
+
transform: none;
|
232 |
+
}
|
233 |
+
|
234 |
+
15% {
|
235 |
+
transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
|
236 |
+
}
|
237 |
+
|
238 |
+
30% {
|
239 |
+
transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
|
240 |
+
}
|
241 |
+
|
242 |
+
45% {
|
243 |
+
transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
|
244 |
+
}
|
245 |
+
|
246 |
+
60% {
|
247 |
+
transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
|
248 |
+
}
|
249 |
+
|
250 |
+
75% {
|
251 |
+
transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
|
252 |
+
}
|
253 |
+
|
254 |
+
to {
|
255 |
+
transform: none;
|
256 |
+
}
|
257 |
+
}
|
258 |
+
|
259 |
+
.wobble {
|
260 |
+
animation-name: wobble;
|
261 |
+
}
|
262 |
+
|
263 |
+
@keyframes jello {
|
264 |
+
from, 11.1%, to {
|
265 |
+
transform: none;
|
266 |
+
}
|
267 |
+
|
268 |
+
22.2% {
|
269 |
+
transform: skewX(-12.5deg) skewY(-12.5deg);
|
270 |
+
}
|
271 |
+
|
272 |
+
33.3% {
|
273 |
+
transform: skewX(6.25deg) skewY(6.25deg);
|
274 |
+
}
|
275 |
+
|
276 |
+
44.4% {
|
277 |
+
transform: skewX(-3.125deg) skewY(-3.125deg);
|
278 |
+
}
|
279 |
+
|
280 |
+
55.5% {
|
281 |
+
transform: skewX(1.5625deg) skewY(1.5625deg);
|
282 |
+
}
|
283 |
+
|
284 |
+
66.6% {
|
285 |
+
transform: skewX(-0.78125deg) skewY(-0.78125deg);
|
286 |
+
}
|
287 |
+
|
288 |
+
77.7% {
|
289 |
+
transform: skewX(0.390625deg) skewY(0.390625deg);
|
290 |
+
}
|
291 |
+
|
292 |
+
88.8% {
|
293 |
+
transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
|
294 |
+
}
|
295 |
+
}
|
296 |
+
|
297 |
+
.jello {
|
298 |
+
animation-name: jello;
|
299 |
+
transform-origin: center;
|
300 |
+
}
|
301 |
+
|
302 |
+
@keyframes bounceIn {
|
303 |
+
from, 20%, 40%, 60%, 80%, to {
|
304 |
+
animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
305 |
+
}
|
306 |
+
|
307 |
+
0% {
|
308 |
+
opacity: 0;
|
309 |
+
transform: scale3d(.3, .3, .3);
|
310 |
+
}
|
311 |
+
|
312 |
+
20% {
|
313 |
+
transform: scale3d(1.1, 1.1, 1.1);
|
314 |
+
}
|
315 |
+
|
316 |
+
40% {
|
317 |
+
transform: scale3d(.9, .9, .9);
|
318 |
+
}
|
319 |
+
|
320 |
+
60% {
|
321 |
+
opacity: 1;
|
322 |
+
transform: scale3d(1.03, 1.03, 1.03);
|
323 |
+
}
|
324 |
+
|
325 |
+
80% {
|
326 |
+
transform: scale3d(.97, .97, .97);
|
327 |
+
}
|
328 |
+
|
329 |
+
to {
|
330 |
+
opacity: 1;
|
331 |
+
transform: scale3d(1, 1, 1);
|
332 |
+
}
|
333 |
+
}
|
334 |
+
|
335 |
+
.bounceIn {
|
336 |
+
animation-name: bounceIn;
|
337 |
+
}
|
338 |
+
|
339 |
+
@keyframes bounceInDown {
|
340 |
+
from, 60%, 75%, 90%, to {
|
341 |
+
animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
342 |
+
}
|
343 |
+
|
344 |
+
0% {
|
345 |
+
opacity: 0;
|
346 |
+
transform: translate3d(0, -3000px, 0);
|
347 |
+
}
|
348 |
+
|
349 |
+
60% {
|
350 |
+
opacity: 1;
|
351 |
+
transform: translate3d(0, 25px, 0);
|
352 |
+
}
|
353 |
+
|
354 |
+
75% {
|
355 |
+
transform: translate3d(0, -10px, 0);
|
356 |
+
}
|
357 |
+
|
358 |
+
90% {
|
359 |
+
transform: translate3d(0, 5px, 0);
|
360 |
+
}
|
361 |
+
|
362 |
+
to {
|
363 |
+
transform: none;
|
364 |
+
}
|
365 |
+
}
|
366 |
+
|
367 |
+
.bounceInDown {
|
368 |
+
animation-name: bounceInDown;
|
369 |
+
}
|
370 |
+
|
371 |
+
@keyframes bounceInLeft {
|
372 |
+
from, 60%, 75%, 90%, to {
|
373 |
+
animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
374 |
+
}
|
375 |
+
|
376 |
+
0% {
|
377 |
+
opacity: 0;
|
378 |
+
transform: translate3d(-3000px, 0, 0);
|
379 |
+
}
|
380 |
+
|
381 |
+
60% {
|
382 |
+
opacity: 1;
|
383 |
+
transform: translate3d(25px, 0, 0);
|
384 |
+
}
|
385 |
+
|
386 |
+
75% {
|
387 |
+
transform: translate3d(-10px, 0, 0);
|
388 |
+
}
|
389 |
+
|
390 |
+
90% {
|
391 |
+
transform: translate3d(5px, 0, 0);
|
392 |
+
}
|
393 |
+
|
394 |
+
to {
|
395 |
+
transform: none;
|
396 |
+
}
|
397 |
+
}
|
398 |
+
|
399 |
+
.bounceInLeft {
|
400 |
+
animation-name: bounceInLeft;
|
401 |
+
}
|
402 |
+
|
403 |
+
@keyframes bounceInRight {
|
404 |
+
from, 60%, 75%, 90%, to {
|
405 |
+
animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
406 |
+
}
|
407 |
+
|
408 |
+
from {
|
409 |
+
opacity: 0;
|
410 |
+
transform: translate3d(3000px, 0, 0);
|
411 |
+
}
|
412 |
+
|
413 |
+
60% {
|
414 |
+
opacity: 1;
|
415 |
+
transform: translate3d(-25px, 0, 0);
|
416 |
+
}
|
417 |
+
|
418 |
+
75% {
|
419 |
+
transform: translate3d(10px, 0, 0);
|
420 |
+
}
|
421 |
+
|
422 |
+
90% {
|
423 |
+
transform: translate3d(-5px, 0, 0);
|
424 |
+
}
|
425 |
+
|
426 |
+
to {
|
427 |
+
transform: none;
|
428 |
+
}
|
429 |
+
}
|
430 |
+
|
431 |
+
.bounceInRight {
|
432 |
+
animation-name: bounceInRight;
|
433 |
+
}
|
434 |
+
|
435 |
+
@keyframes bounceInUp {
|
436 |
+
from, 60%, 75%, 90%, to {
|
437 |
+
animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
438 |
+
}
|
439 |
+
|
440 |
+
from {
|
441 |
+
opacity: 0;
|
442 |
+
transform: translate3d(0, 3000px, 0);
|
443 |
+
}
|
444 |
+
|
445 |
+
60% {
|
446 |
+
opacity: 1;
|
447 |
+
transform: translate3d(0, -20px, 0);
|
448 |
+
}
|
449 |
+
|
450 |
+
75% {
|
451 |
+
transform: translate3d(0, 10px, 0);
|
452 |
+
}
|
453 |
+
|
454 |
+
90% {
|
455 |
+
transform: translate3d(0, -5px, 0);
|
456 |
+
}
|
457 |
+
|
458 |
+
to {
|
459 |
+
transform: translate3d(0, 0, 0);
|
460 |
+
}
|
461 |
+
}
|
462 |
+
|
463 |
+
.bounceInUp {
|
464 |
+
animation-name: bounceInUp;
|
465 |
+
}
|
466 |
+
|
467 |
+
@keyframes bounceOut {
|
468 |
+
20% {
|
469 |
+
transform: scale3d(.9, .9, .9);
|
470 |
+
}
|
471 |
+
|
472 |
+
50%, 55% {
|
473 |
+
opacity: 1;
|
474 |
+
transform: scale3d(1.1, 1.1, 1.1);
|
475 |
+
}
|
476 |
+
|
477 |
+
to {
|
478 |
+
opacity: 0;
|
479 |
+
transform: scale3d(.3, .3, .3);
|
480 |
+
}
|
481 |
+
}
|
482 |
+
|
483 |
+
.bounceOut {
|
484 |
+
animation-name: bounceOut;
|
485 |
+
}
|
486 |
+
|
487 |
+
@keyframes bounceOutDown {
|
488 |
+
20% {
|
489 |
+
transform: translate3d(0, 10px, 0);
|
490 |
+
}
|
491 |
+
|
492 |
+
40%, 45% {
|
493 |
+
opacity: 1;
|
494 |
+
transform: translate3d(0, -20px, 0);
|
495 |
+
}
|
496 |
+
|
497 |
+
to {
|
498 |
+
opacity: 0;
|
499 |
+
transform: translate3d(0, 2000px, 0);
|
500 |
+
}
|
501 |
+
}
|
502 |
+
|
503 |
+
.bounceOutDown {
|
504 |
+
animation-name: bounceOutDown;
|
505 |
+
}
|
506 |
+
|
507 |
+
@keyframes bounceOutLeft {
|
508 |
+
20% {
|
509 |
+
opacity: 1;
|
510 |
+
transform: translate3d(20px, 0, 0);
|
511 |
+
}
|
512 |
+
|
513 |
+
to {
|
514 |
+
opacity: 0;
|
515 |
+
transform: translate3d(-2000px, 0, 0);
|
516 |
+
}
|
517 |
+
}
|
518 |
+
|
519 |
+
.bounceOutLeft {
|
520 |
+
animation-name: bounceOutLeft;
|
521 |
+
}
|
522 |
+
|
523 |
+
@keyframes bounceOutRight {
|
524 |
+
20% {
|
525 |
+
opacity: 1;
|
526 |
+
transform: translate3d(-20px, 0, 0);
|
527 |
+
}
|
528 |
+
|
529 |
+
to {
|
530 |
+
opacity: 0;
|
531 |
+
transform: translate3d(2000px, 0, 0);
|
532 |
+
}
|
533 |
+
}
|
534 |
+
|
535 |
+
.bounceOutRight {
|
536 |
+
animation-name: bounceOutRight;
|
537 |
+
}
|
538 |
+
|
539 |
+
@keyframes bounceOutUp {
|
540 |
+
20% {
|
541 |
+
transform: translate3d(0, -10px, 0);
|
542 |
+
}
|
543 |
+
|
544 |
+
40%, 45% {
|
545 |
+
opacity: 1;
|
546 |
+
transform: translate3d(0, 20px, 0);
|
547 |
+
}
|
548 |
+
|
549 |
+
to {
|
550 |
+
opacity: 0;
|
551 |
+
transform: translate3d(0, -2000px, 0);
|
552 |
+
}
|
553 |
+
}
|
554 |
+
|
555 |
+
.bounceOutUp {
|
556 |
+
animation-name: bounceOutUp;
|
557 |
+
}
|
558 |
+
|
559 |
+
@keyframes fadeIn {
|
560 |
+
from {
|
561 |
+
opacity: 0;
|
562 |
+
}
|
563 |
+
|
564 |
+
to {
|
565 |
+
opacity: 1;
|
566 |
+
}
|
567 |
+
}
|
568 |
+
|
569 |
+
.fadeIn {
|
570 |
+
animation-name: fadeIn;
|
571 |
+
}
|
572 |
+
|
573 |
+
@keyframes fadeInDown {
|
574 |
+
from {
|
575 |
+
opacity: 0;
|
576 |
+
transform: translate3d(0, -100%, 0);
|
577 |
+
}
|
578 |
+
|
579 |
+
to {
|
580 |
+
opacity: 1;
|
581 |
+
transform: none;
|
582 |
+
}
|
583 |
+
}
|
584 |
+
|
585 |
+
.fadeInDown {
|
586 |
+
animation-name: fadeInDown;
|
587 |
+
}
|
588 |
+
|
589 |
+
@keyframes fadeInDownBig {
|
590 |
+
from {
|
591 |
+
opacity: 0;
|
592 |
+
transform: translate3d(0, -2000px, 0);
|
593 |
+
}
|
594 |
+
|
595 |
+
to {
|
596 |
+
opacity: 1;
|
597 |
+
transform: none;
|
598 |
+
}
|
599 |
+
}
|
600 |
+
|
601 |
+
.fadeInDownBig {
|
602 |
+
animation-name: fadeInDownBig;
|
603 |
+
}
|
604 |
+
|
605 |
+
@keyframes fadeInLeft {
|
606 |
+
from {
|
607 |
+
opacity: 0;
|
608 |
+
transform: translate3d(-100%, 0, 0);
|
609 |
+
}
|
610 |
+
|
611 |
+
to {
|
612 |
+
opacity: 1;
|
613 |
+
transform: none;
|
614 |
+
}
|
615 |
+
}
|
616 |
+
|
617 |
+
.fadeInLeft {
|
618 |
+
animation-name: fadeInLeft;
|
619 |
+
}
|
620 |
+
|
621 |
+
@keyframes fadeInLeftBig {
|
622 |
+
from {
|
623 |
+
opacity: 0;
|
624 |
+
transform: translate3d(-2000px, 0, 0);
|
625 |
+
}
|
626 |
+
|
627 |
+
to {
|
628 |
+
opacity: 1;
|
629 |
+
transform: none;
|
630 |
+
}
|
631 |
+
}
|
632 |
+
|
633 |
+
.fadeInLeftBig {
|
634 |
+
animation-name: fadeInLeftBig;
|
635 |
+
}
|
636 |
+
|
637 |
+
@keyframes fadeInRight {
|
638 |
+
from {
|
639 |
+
opacity: 0;
|
640 |
+
transform: translate3d(100%, 0, 0);
|
641 |
+
}
|
642 |
+
|
643 |
+
to {
|
644 |
+
opacity: 1;
|
645 |
+
transform: none;
|
646 |
+
}
|
647 |
+
}
|
648 |
+
|
649 |
+
.fadeInRight {
|
650 |
+
animation-name: fadeInRight;
|
651 |
+
}
|
652 |
+
|
653 |
+
@keyframes fadeInRightBig {
|
654 |
+
from {
|
655 |
+
opacity: 0;
|
656 |
+
transform: translate3d(2000px, 0, 0);
|
657 |
+
}
|
658 |
+
|
659 |
+
to {
|
660 |
+
opacity: 1;
|
661 |
+
transform: none;
|
662 |
+
}
|
663 |
+
}
|
664 |
+
|
665 |
+
.fadeInRightBig {
|
666 |
+
animation-name: fadeInRightBig;
|
667 |
+
}
|
668 |
+
|
669 |
+
@keyframes fadeInUp {
|
670 |
+
from {
|
671 |
+
opacity: 0;
|
672 |
+
transform: translate3d(0, 100%, 0);
|
673 |
+
}
|
674 |
+
|
675 |
+
to {
|
676 |
+
opacity: 1;
|
677 |
+
transform: none;
|
678 |
+
}
|
679 |
+
}
|
680 |
+
|
681 |
+
.fadeInUp {
|
682 |
+
animation-name: fadeInUp;
|
683 |
+
}
|
684 |
+
|
685 |
+
@keyframes fadeInUpBig {
|
686 |
+
from {
|
687 |
+
opacity: 0;
|
688 |
+
transform: translate3d(0, 2000px, 0);
|
689 |
+
}
|
690 |
+
|
691 |
+
to {
|
692 |
+
opacity: 1;
|
693 |
+
transform: none;
|
694 |
+
}
|
695 |
+
}
|
696 |
+
|
697 |
+
.fadeInUpBig {
|
698 |
+
animation-name: fadeInUpBig;
|
699 |
+
}
|
700 |
+
|
701 |
+
@keyframes fadeOut {
|
702 |
+
from {
|
703 |
+
opacity: 1;
|
704 |
+
}
|
705 |
+
|
706 |
+
to {
|
707 |
+
opacity: 0;
|
708 |
+
}
|
709 |
+
}
|
710 |
+
|
711 |
+
.fadeOut {
|
712 |
+
animation-name: fadeOut;
|
713 |
+
}
|
714 |
+
|
715 |
+
@keyframes fadeOutDown {
|
716 |
+
from {
|
717 |
+
opacity: 1;
|
718 |
+
}
|
719 |
+
|
720 |
+
to {
|
721 |
+
opacity: 0;
|
722 |
+
transform: translate3d(0, 100%, 0);
|
723 |
+
}
|
724 |
+
}
|
725 |
+
|
726 |
+
.fadeOutDown {
|
727 |
+
animation-name: fadeOutDown;
|
728 |
+
}
|
729 |
+
|
730 |
+
@keyframes fadeOutDownBig {
|
731 |
+
from {
|
732 |
+
opacity: 1;
|
733 |
+
}
|
734 |
+
|
735 |
+
to {
|
736 |
+
opacity: 0;
|
737 |
+
transform: translate3d(0, 2000px, 0);
|
738 |
+
}
|
739 |
+
}
|
740 |
+
|
741 |
+
.fadeOutDownBig {
|
742 |
+
animation-name: fadeOutDownBig;
|
743 |
+
}
|
744 |
+
|
745 |
+
@keyframes fadeOutLeft {
|
746 |
+
from {
|
747 |
+
opacity: 1;
|
748 |
+
}
|
749 |
+
|
750 |
+
to {
|
751 |
+
opacity: 0;
|
752 |
+
transform: translate3d(-100%, 0, 0);
|
753 |
+
}
|
754 |
+
}
|
755 |
+
|
756 |
+
.fadeOutLeft {
|
757 |
+
animation-name: fadeOutLeft;
|
758 |
+
}
|
759 |
+
|
760 |
+
@keyframes fadeOutLeftBig {
|
761 |
+
from {
|
762 |
+
opacity: 1;
|
763 |
+
}
|
764 |
+
|
765 |
+
to {
|
766 |
+
opacity: 0;
|
767 |
+
transform: translate3d(-2000px, 0, 0);
|
768 |
+
}
|
769 |
+
}
|
770 |
+
|
771 |
+
.fadeOutLeftBig {
|
772 |
+
animation-name: fadeOutLeftBig;
|
773 |
+
}
|
774 |
+
|
775 |
+
@keyframes fadeOutRight {
|
776 |
+
from {
|
777 |
+
opacity: 1;
|
778 |
+
}
|
779 |
+
|
780 |
+
to {
|
781 |
+
opacity: 0;
|
782 |
+
transform: translate3d(100%, 0, 0);
|
783 |
+
}
|
784 |
+
}
|
785 |
+
|
786 |
+
.fadeOutRight {
|
787 |
+
animation-name: fadeOutRight;
|
788 |
+
}
|
789 |
+
|
790 |
+
@keyframes fadeOutRightBig {
|
791 |
+
from {
|
792 |
+
opacity: 1;
|
793 |
+
}
|
794 |
+
|
795 |
+
to {
|
796 |
+
opacity: 0;
|
797 |
+
transform: translate3d(2000px, 0, 0);
|
798 |
+
}
|
799 |
+
}
|
800 |
+
|
801 |
+
.fadeOutRightBig {
|
802 |
+
animation-name: fadeOutRightBig;
|
803 |
+
}
|
804 |
+
|
805 |
+
@keyframes fadeOutUp {
|
806 |
+
from {
|
807 |
+
opacity: 1;
|
808 |
+
}
|
809 |
+
|
810 |
+
to {
|
811 |
+
opacity: 0;
|
812 |
+
transform: translate3d(0, -100%, 0);
|
813 |
+
}
|
814 |
+
}
|
815 |
+
|
816 |
+
.fadeOutUp {
|
817 |
+
animation-name: fadeOutUp;
|
818 |
+
}
|
819 |
+
|
820 |
+
@keyframes fadeOutUpBig {
|
821 |
+
from {
|
822 |
+
opacity: 1;
|
823 |
+
}
|
824 |
+
|
825 |
+
to {
|
826 |
+
opacity: 0;
|
827 |
+
transform: translate3d(0, -2000px, 0);
|
828 |
+
}
|
829 |
+
}
|
830 |
+
|
831 |
+
.fadeOutUpBig {
|
832 |
+
animation-name: fadeOutUpBig;
|
833 |
+
}
|
834 |
+
|
835 |
+
@keyframes flip {
|
836 |
+
from {
|
837 |
+
transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
|
838 |
+
animation-timing-function: ease-out;
|
839 |
+
}
|
840 |
+
|
841 |
+
40% {
|
842 |
+
transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
|
843 |
+
animation-timing-function: ease-out;
|
844 |
+
}
|
845 |
+
|
846 |
+
50% {
|
847 |
+
transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
|
848 |
+
animation-timing-function: ease-in;
|
849 |
+
}
|
850 |
+
|
851 |
+
80% {
|
852 |
+
transform: perspective(400px) scale3d(.95, .95, .95);
|
853 |
+
animation-timing-function: ease-in;
|
854 |
+
}
|
855 |
+
|
856 |
+
to {
|
857 |
+
transform: perspective(400px);
|
858 |
+
animation-timing-function: ease-in;
|
859 |
+
}
|
860 |
+
}
|
861 |
+
|
862 |
+
.animated.flip {
|
863 |
+
-webkit-backface-visibility: visible;
|
864 |
+
backface-visibility: visible;
|
865 |
+
animation-name: flip;
|
866 |
+
}
|
867 |
+
|
868 |
+
@keyframes flipInX {
|
869 |
+
from {
|
870 |
+
transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
|
871 |
+
animation-timing-function: ease-in;
|
872 |
+
opacity: 0;
|
873 |
+
}
|
874 |
+
|
875 |
+
40% {
|
876 |
+
transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
|
877 |
+
animation-timing-function: ease-in;
|
878 |
+
}
|
879 |
+
|
880 |
+
60% {
|
881 |
+
transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
|
882 |
+
opacity: 1;
|
883 |
+
}
|
884 |
+
|
885 |
+
80% {
|
886 |
+
transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
|
887 |
+
}
|
888 |
+
|
889 |
+
to {
|
890 |
+
transform: perspective(400px);
|
891 |
+
}
|
892 |
+
}
|
893 |
+
|
894 |
+
.flipInX {
|
895 |
+
-webkit-backface-visibility: visible !important;
|
896 |
+
backface-visibility: visible !important;
|
897 |
+
animation-name: flipInX;
|
898 |
+
}
|
899 |
+
|
900 |
+
@keyframes flipInY {
|
901 |
+
from {
|
902 |
+
transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
|
903 |
+
animation-timing-function: ease-in;
|
904 |
+
opacity: 0;
|
905 |
+
}
|
906 |
+
|
907 |
+
40% {
|
908 |
+
transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
|
909 |
+
animation-timing-function: ease-in;
|
910 |
+
}
|
911 |
+
|
912 |
+
60% {
|
913 |
+
transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
|
914 |
+
opacity: 1;
|
915 |
+
}
|
916 |
+
|
917 |
+
80% {
|
918 |
+
transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
|
919 |
+
}
|
920 |
+
|
921 |
+
to {
|
922 |
+
transform: perspective(400px);
|
923 |
+
}
|
924 |
+
}
|
925 |
+
|
926 |
+
.flipInY {
|
927 |
+
-webkit-backface-visibility: visible !important;
|
928 |
+
backface-visibility: visible !important;
|
929 |
+
animation-name: flipInY;
|
930 |
+
}
|
931 |
+
|
932 |
+
@keyframes flipOutX {
|
933 |
+
from {
|
934 |
+
transform: perspective(400px);
|
935 |
+
}
|
936 |
+
|
937 |
+
30% {
|
938 |
+
transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
|
939 |
+
opacity: 1;
|
940 |
+
}
|
941 |
+
|
942 |
+
to {
|
943 |
+
transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
|
944 |
+
opacity: 0;
|
945 |
+
}
|
946 |
+
}
|
947 |
+
|
948 |
+
.flipOutX {
|
949 |
+
animation-name: flipOutX;
|
950 |
+
-webkit-backface-visibility: visible !important;
|
951 |
+
backface-visibility: visible !important;
|
952 |
+
}
|
953 |
+
|
954 |
+
@keyframes flipOutY {
|
955 |
+
from {
|
956 |
+
transform: perspective(400px);
|
957 |
+
}
|
958 |
+
|
959 |
+
30% {
|
960 |
+
transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
|
961 |
+
opacity: 1;
|
962 |
+
}
|
963 |
+
|
964 |
+
to {
|
965 |
+
transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
|
966 |
+
opacity: 0;
|
967 |
+
}
|
968 |
+
}
|
969 |
+
|
970 |
+
.flipOutY {
|
971 |
+
-webkit-backface-visibility: visible !important;
|
972 |
+
backface-visibility: visible !important;
|
973 |
+
animation-name: flipOutY;
|
974 |
+
}
|
975 |
+
|
976 |
+
@keyframes lightSpeedIn {
|
977 |
+
from {
|
978 |
+
transform: translate3d(100%, 0, 0) skewX(-30deg);
|
979 |
+
opacity: 0;
|
980 |
+
}
|
981 |
+
|
982 |
+
60% {
|
983 |
+
transform: skewX(20deg);
|
984 |
+
opacity: 1;
|
985 |
+
}
|
986 |
+
|
987 |
+
80% {
|
988 |
+
transform: skewX(-5deg);
|
989 |
+
opacity: 1;
|
990 |
+
}
|
991 |
+
|
992 |
+
to {
|
993 |
+
transform: none;
|
994 |
+
opacity: 1;
|
995 |
+
}
|
996 |
+
}
|
997 |
+
|
998 |
+
.lightSpeedIn {
|
999 |
+
animation-name: lightSpeedIn;
|
1000 |
+
animation-timing-function: ease-out;
|
1001 |
+
}
|
1002 |
+
|
1003 |
+
@keyframes lightSpeedOut {
|
1004 |
+
from {
|
1005 |
+
opacity: 1;
|
1006 |
+
}
|
1007 |
+
|
1008 |
+
to {
|
1009 |
+
transform: translate3d(100%, 0, 0) skewX(30deg);
|
1010 |
+
opacity: 0;
|
1011 |
+
}
|
1012 |
+
}
|
1013 |
+
|
1014 |
+
.lightSpeedOut {
|
1015 |
+
animation-name: lightSpeedOut;
|
1016 |
+
animation-timing-function: ease-in;
|
1017 |
+
}
|
1018 |
+
|
1019 |
+
@keyframes rotateIn {
|
1020 |
+
from {
|
1021 |
+
transform-origin: center;
|
1022 |
+
transform: rotate3d(0, 0, 1, -200deg);
|
1023 |
+
opacity: 0;
|
1024 |
+
}
|
1025 |
+
|
1026 |
+
to {
|
1027 |
+
transform-origin: center;
|
1028 |
+
transform: none;
|
1029 |
+
opacity: 1;
|
1030 |
+
}
|
1031 |
+
}
|
1032 |
+
|
1033 |
+
.rotateIn {
|
1034 |
+
animation-name: rotateIn;
|
1035 |
+
}
|
1036 |
+
|
1037 |
+
@keyframes rotateInDownLeft {
|
1038 |
+
from {
|
1039 |
+
transform-origin: left bottom;
|
1040 |
+
transform: rotate3d(0, 0, 1, -45deg);
|
1041 |
+
opacity: 0;
|
1042 |
+
}
|
1043 |
+
|
1044 |
+
to {
|
1045 |
+
transform-origin: left bottom;
|
1046 |
+
transform: none;
|
1047 |
+
opacity: 1;
|
1048 |
+
}
|
1049 |
+
}
|
1050 |
+
|
1051 |
+
.rotateInDownLeft {
|
1052 |
+
animation-name: rotateInDownLeft;
|
1053 |
+
}
|
1054 |
+
|
1055 |
+
@keyframes rotateInDownRight {
|
1056 |
+
from {
|
1057 |
+
transform-origin: right bottom;
|
1058 |
+
transform: rotate3d(0, 0, 1, 45deg);
|
1059 |
+
opacity: 0;
|
1060 |
+
}
|
1061 |
+
|
1062 |
+
to {
|
1063 |
+
transform-origin: right bottom;
|
1064 |
+
transform: none;
|
1065 |
+
opacity: 1;
|
1066 |
+
}
|
1067 |
+
}
|
1068 |
+
|
1069 |
+
.rotateInDownRight {
|
1070 |
+
animation-name: rotateInDownRight;
|
1071 |
+
}
|
1072 |
+
|
1073 |
+
@keyframes rotateInUpLeft {
|
1074 |
+
from {
|
1075 |
+
transform-origin: left bottom;
|
1076 |
+
transform: rotate3d(0, 0, 1, 45deg);
|
1077 |
+
opacity: 0;
|
1078 |
+
}
|
1079 |
+
|
1080 |
+
to {
|
1081 |
+
transform-origin: left bottom;
|
1082 |
+
transform: none;
|
1083 |
+
opacity: 1;
|
1084 |
+
}
|
1085 |
+
}
|
1086 |
+
|
1087 |
+
.rotateInUpLeft {
|
1088 |
+
animation-name: rotateInUpLeft;
|
1089 |
+
}
|
1090 |
+
|
1091 |
+
@keyframes rotateInUpRight {
|
1092 |
+
from {
|
1093 |
+
transform-origin: right bottom;
|
1094 |
+
transform: rotate3d(0, 0, 1, -90deg);
|
1095 |
+
opacity: 0;
|
1096 |
+
}
|
1097 |
+
|
1098 |
+
to {
|
1099 |
+
transform-origin: right bottom;
|
1100 |
+
transform: none;
|
1101 |
+
opacity: 1;
|
1102 |
+
}
|
1103 |
+
}
|
1104 |
+
|
1105 |
+
.rotateInUpRight {
|
1106 |
+
animation-name: rotateInUpRight;
|
1107 |
+
}
|
1108 |
+
|
1109 |
+
@keyframes rotateOut {
|
1110 |
+
from {
|
1111 |
+
transform-origin: center;
|
1112 |
+
opacity: 1;
|
1113 |
+
}
|
1114 |
+
|
1115 |
+
to {
|
1116 |
+
transform-origin: center;
|
1117 |
+
transform: rotate3d(0, 0, 1, 200deg);
|
1118 |
+
opacity: 0;
|
1119 |
+
}
|
1120 |
+
}
|
1121 |
+
|
1122 |
+
.rotateOut {
|
1123 |
+
animation-name: rotateOut;
|
1124 |
+
}
|
1125 |
+
|
1126 |
+
@keyframes rotateOutDownLeft {
|
1127 |
+
from {
|
1128 |
+
transform-origin: left bottom;
|
1129 |
+
opacity: 1;
|
1130 |
+
}
|
1131 |
+
|
1132 |
+
to {
|
1133 |
+
transform-origin: left bottom;
|
1134 |
+
transform: rotate3d(0, 0, 1, 45deg);
|
1135 |
+
opacity: 0;
|
1136 |
+
}
|
1137 |
+
}
|
1138 |
+
|
1139 |
+
.rotateOutDownLeft {
|
1140 |
+
animation-name: rotateOutDownLeft;
|
1141 |
+
}
|
1142 |
+
|
1143 |
+
@keyframes rotateOutDownRight {
|
1144 |
+
from {
|
1145 |
+
transform-origin: right bottom;
|
1146 |
+
opacity: 1;
|
1147 |
+
}
|
1148 |
+
|
1149 |
+
to {
|
1150 |
+
transform-origin: right bottom;
|
1151 |
+
transform: rotate3d(0, 0, 1, -45deg);
|
1152 |
+
opacity: 0;
|
1153 |
+
}
|
1154 |
+
}
|
1155 |
+
|
1156 |
+
.rotateOutDownRight {
|
1157 |
+
animation-name: rotateOutDownRight;
|
1158 |
+
}
|
1159 |
+
|
1160 |
+
@keyframes rotateOutUpLeft {
|
1161 |
+
from {
|
1162 |
+
transform-origin: left bottom;
|
1163 |
+
opacity: 1;
|
1164 |
+
}
|
1165 |
+
|
1166 |
+
to {
|
1167 |
+
transform-origin: left bottom;
|
1168 |
+
transform: rotate3d(0, 0, 1, -45deg);
|
1169 |
+
opacity: 0;
|
1170 |
+
}
|
1171 |
+
}
|
1172 |
+
|
1173 |
+
.rotateOutUpLeft {
|
1174 |
+
animation-name: rotateOutUpLeft;
|
1175 |
+
}
|
1176 |
+
|
1177 |
+
@keyframes rotateOutUpRight {
|
1178 |
+
from {
|
1179 |
+
transform-origin: right bottom;
|
1180 |
+
opacity: 1;
|
1181 |
+
}
|
1182 |
+
|
1183 |
+
to {
|
1184 |
+
transform-origin: right bottom;
|
1185 |
+
transform: rotate3d(0, 0, 1, 90deg);
|
1186 |
+
opacity: 0;
|
1187 |
+
}
|
1188 |
+
}
|
1189 |
+
|
1190 |
+
.rotateOutUpRight {
|
1191 |
+
animation-name: rotateOutUpRight;
|
1192 |
+
}
|
1193 |
+
|
1194 |
+
@keyframes hinge {
|
1195 |
+
0% {
|
1196 |
+
transform-origin: top left;
|
1197 |
+
animation-timing-function: ease-in-out;
|
1198 |
+
}
|
1199 |
+
|
1200 |
+
20%, 60% {
|
1201 |
+
transform: rotate3d(0, 0, 1, 80deg);
|
1202 |
+
transform-origin: top left;
|
1203 |
+
animation-timing-function: ease-in-out;
|
1204 |
+
}
|
1205 |
+
|
1206 |
+
40%, 80% {
|
1207 |
+
transform: rotate3d(0, 0, 1, 60deg);
|
1208 |
+
transform-origin: top left;
|
1209 |
+
animation-timing-function: ease-in-out;
|
1210 |
+
opacity: 1;
|
1211 |
+
}
|
1212 |
+
|
1213 |
+
to {
|
1214 |
+
transform: translate3d(0, 700px, 0);
|
1215 |
+
opacity: 0;
|
1216 |
+
}
|
1217 |
+
}
|
1218 |
+
|
1219 |
+
.hinge {
|
1220 |
+
animation-name: hinge;
|
1221 |
+
}
|
1222 |
+
|
1223 |
+
@keyframes jackInTheBox {
|
1224 |
+
from {
|
1225 |
+
opacity: 0;
|
1226 |
+
transform: scale(0.1) rotate(30deg);
|
1227 |
+
transform-origin: center bottom;
|
1228 |
+
}
|
1229 |
+
|
1230 |
+
50% {
|
1231 |
+
transform: rotate(-10deg);
|
1232 |
+
}
|
1233 |
+
|
1234 |
+
70% {
|
1235 |
+
transform: rotate(3deg);
|
1236 |
+
}
|
1237 |
+
|
1238 |
+
to {
|
1239 |
+
opacity: 1;
|
1240 |
+
transform: scale(1);
|
1241 |
+
}
|
1242 |
+
}
|
1243 |
+
|
1244 |
+
.jackInTheBox {
|
1245 |
+
animation-name: jackInTheBox;
|
1246 |
+
}
|
1247 |
+
|
1248 |
+
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
|
1249 |
+
|
1250 |
+
@keyframes rollIn {
|
1251 |
+
from {
|
1252 |
+
opacity: 0;
|
1253 |
+
transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
|
1254 |
+
}
|
1255 |
+
|
1256 |
+
to {
|
1257 |
+
opacity: 1;
|
1258 |
+
transform: none;
|
1259 |
+
}
|
1260 |
+
}
|
1261 |
+
|
1262 |
+
.rollIn {
|
1263 |
+
animation-name: rollIn;
|
1264 |
+
}
|
1265 |
+
|
1266 |
+
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
|
1267 |
+
|
1268 |
+
@keyframes rollOut {
|
1269 |
+
from {
|
1270 |
+
opacity: 1;
|
1271 |
+
}
|
1272 |
+
|
1273 |
+
to {
|
1274 |
+
opacity: 0;
|
1275 |
+
transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
|
1276 |
+
}
|
1277 |
+
}
|
1278 |
+
|
1279 |
+
.rollOut {
|
1280 |
+
animation-name: rollOut;
|
1281 |
+
}
|
1282 |
+
|
1283 |
+
@keyframes zoomIn {
|
1284 |
+
from {
|
1285 |
+
opacity: 0;
|
1286 |
+
transform: scale3d(.3, .3, .3);
|
1287 |
+
}
|
1288 |
+
|
1289 |
+
50% {
|
1290 |
+
opacity: 1;
|
1291 |
+
}
|
1292 |
+
}
|
1293 |
+
|
1294 |
+
.zoomIn {
|
1295 |
+
animation-name: zoomIn;
|
1296 |
+
}
|
1297 |
+
|
1298 |
+
@keyframes zoomInDown {
|
1299 |
+
from {
|
1300 |
+
opacity: 0;
|
1301 |
+
transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
|
1302 |
+
animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
|
1303 |
+
}
|
1304 |
+
|
1305 |
+
60% {
|
1306 |
+
opacity: 1;
|
1307 |
+
transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
|
1308 |
+
animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
|
1309 |
+
}
|
1310 |
+
}
|
1311 |
+
|
1312 |
+
.zoomInDown {
|
1313 |
+
animation-name: zoomInDown;
|
1314 |
+
}
|
1315 |
+
|
1316 |
+
@keyframes zoomInLeft {
|
1317 |
+
from {
|
1318 |
+
opacity: 0;
|
1319 |
+
transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
|
1320 |
+
animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
|
1321 |
+
}
|
1322 |
+
|
1323 |
+
60% {
|
1324 |
+
opacity: 1;
|
1325 |
+
transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
|
1326 |
+
animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
|
1327 |
+
}
|
1328 |
+
}
|
1329 |
+
|
1330 |
+
.zoomInLeft {
|
1331 |
+
animation-name: zoomInLeft;
|
1332 |
+
}
|
1333 |
+
|
1334 |
+
@keyframes zoomInRight {
|
1335 |
+
from {
|
1336 |
+
opacity: 0;
|
1337 |
+
transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
|
1338 |
+
animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
|
1339 |
+
}
|
1340 |
+
|
1341 |
+
60% {
|
1342 |
+
opacity: 1;
|
1343 |
+
transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
|
1344 |
+
animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
|
1345 |
+
}
|
1346 |
+
}
|
1347 |
+
|
1348 |
+
.zoomInRight {
|
1349 |
+
animation-name: zoomInRight;
|
1350 |
+
}
|
1351 |
+
|
1352 |
+
@keyframes zoomInUp {
|
1353 |
+
from {
|
1354 |
+
opacity: 0;
|
1355 |
+
transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
|
1356 |
+
animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
|
1357 |
+
}
|
1358 |
+
|
1359 |
+
60% {
|
1360 |
+
opacity: 1;
|
1361 |
+
transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
|
1362 |
+
animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
|
1363 |
+
}
|
1364 |
+
}
|
1365 |
+
|
1366 |
+
.zoomInUp {
|
1367 |
+
animation-name: zoomInUp;
|
1368 |
+
}
|
1369 |
+
|
1370 |
+
@keyframes zoomOut {
|
1371 |
+
from {
|
1372 |
+
opacity: 1;
|
1373 |
+
}
|
1374 |
+
|
1375 |
+
50% {
|
1376 |
+
opacity: 0;
|
1377 |
+
transform: scale3d(.3, .3, .3);
|
1378 |
+
}
|
1379 |
+
|
1380 |
+
to {
|
1381 |
+
opacity: 0;
|
1382 |
+
}
|
1383 |
+
}
|
1384 |
+
|
1385 |
+
.zoomOut {
|
1386 |
+
animation-name: zoomOut;
|
1387 |
+
}
|
1388 |
+
|
1389 |
+
@keyframes zoomOutDown {
|
1390 |
+
40% {
|
1391 |
+
opacity: 1;
|
1392 |
+
transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
|
1393 |
+
animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
|
1394 |
+
}
|
1395 |
+
|
1396 |
+
to {
|
1397 |
+
opacity: 0;
|
1398 |
+
transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
|
1399 |
+
transform-origin: center bottom;
|
1400 |
+
animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
|
1401 |
+
}
|
1402 |
+
}
|
1403 |
+
|
1404 |
+
.zoomOutDown {
|
1405 |
+
animation-name: zoomOutDown;
|
1406 |
+
}
|
1407 |
+
|
1408 |
+
@keyframes zoomOutLeft {
|
1409 |
+
40% {
|
1410 |
+
opacity: 1;
|
1411 |
+
transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
|
1412 |
+
}
|
1413 |
+
|
1414 |
+
to {
|
1415 |
+
opacity: 0;
|
1416 |
+
transform: scale(.1) translate3d(-2000px, 0, 0);
|
1417 |
+
transform-origin: left center;
|
1418 |
+
}
|
1419 |
+
}
|
1420 |
+
|
1421 |
+
.zoomOutLeft {
|
1422 |
+
animation-name: zoomOutLeft;
|
1423 |
+
}
|
1424 |
+
|
1425 |
+
@keyframes zoomOutRight {
|
1426 |
+
40% {
|
1427 |
+
opacity: 1;
|
1428 |
+
transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
|
1429 |
+
}
|
1430 |
+
|
1431 |
+
to {
|
1432 |
+
opacity: 0;
|
1433 |
+
transform: scale(.1) translate3d(2000px, 0, 0);
|
1434 |
+
transform-origin: right center;
|
1435 |
+
}
|
1436 |
+
}
|
1437 |
+
|
1438 |
+
.zoomOutRight {
|
1439 |
+
animation-name: zoomOutRight;
|
1440 |
+
}
|
1441 |
+
|
1442 |
+
@keyframes zoomOutUp {
|
1443 |
+
40% {
|
1444 |
+
opacity: 1;
|
1445 |
+
transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
|
1446 |
+
animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
|
1447 |
+
}
|
1448 |
+
|
1449 |
+
to {
|
1450 |
+
opacity: 0;
|
1451 |
+
transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
|
1452 |
+
transform-origin: center bottom;
|
1453 |
+
animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
|
1454 |
+
}
|
1455 |
+
}
|
1456 |
+
|
1457 |
+
.zoomOutUp {
|
1458 |
+
animation-name: zoomOutUp;
|
1459 |
+
}
|
1460 |
+
|
1461 |
+
@keyframes slideInDown {
|
1462 |
+
from {
|
1463 |
+
transform: translate3d(0, -100%, 0);
|
1464 |
+
visibility: visible;
|
1465 |
+
}
|
1466 |
+
|
1467 |
+
to {
|
1468 |
+
transform: translate3d(0, 0, 0);
|
1469 |
+
}
|
1470 |
+
}
|
1471 |
+
|
1472 |
+
.slideInDown {
|
1473 |
+
animation-name: slideInDown;
|
1474 |
+
}
|
1475 |
+
|
1476 |
+
@keyframes slideInLeft {
|
1477 |
+
from {
|
1478 |
+
transform: translate3d(-100%, 0, 0);
|
1479 |
+
visibility: visible;
|
1480 |
+
}
|
1481 |
+
|
1482 |
+
to {
|
1483 |
+
transform: translate3d(0, 0, 0);
|
1484 |
+
}
|
1485 |
+
}
|
1486 |
+
|
1487 |
+
.slideInLeft {
|
1488 |
+
animation-name: slideInLeft;
|
1489 |
+
}
|
1490 |
+
|
1491 |
+
@keyframes slideInRight {
|
1492 |
+
from {
|
1493 |
+
transform: translate3d(100%, 0, 0);
|
1494 |
+
visibility: visible;
|
1495 |
+
}
|
1496 |
+
|
1497 |
+
to {
|
1498 |
+
transform: translate3d(0, 0, 0);
|
1499 |
+
}
|
1500 |
+
}
|
1501 |
+
|
1502 |
+
.slideInRight {
|
1503 |
+
animation-name: slideInRight;
|
1504 |
+
}
|
1505 |
+
|
1506 |
+
@keyframes slideInUp {
|
1507 |
+
from {
|
1508 |
+
transform: translate3d(0, 100%, 0);
|
1509 |
+
visibility: visible;
|
1510 |
+
}
|
1511 |
+
|
1512 |
+
to {
|
1513 |
+
transform: translate3d(0, 0, 0);
|
1514 |
+
}
|
1515 |
+
}
|
1516 |
+
|
1517 |
+
.slideInUp {
|
1518 |
+
animation-name: slideInUp;
|
1519 |
+
}
|
1520 |
+
|
1521 |
+
@keyframes slideOutDown {
|
1522 |
+
from {
|
1523 |
+
transform: translate3d(0, 0, 0);
|
1524 |
+
}
|
1525 |
+
|
1526 |
+
to {
|
1527 |
+
visibility: hidden;
|
1528 |
+
transform: translate3d(0, 100%, 0);
|
1529 |
+
}
|
1530 |
+
}
|
1531 |
+
|
1532 |
+
.slideOutDown {
|
1533 |
+
animation-name: slideOutDown;
|
1534 |
+
}
|
1535 |
+
|
1536 |
+
@keyframes slideOutLeft {
|
1537 |
+
from {
|
1538 |
+
transform: translate3d(0, 0, 0);
|
1539 |
+
}
|
1540 |
+
|
1541 |
+
to {
|
1542 |
+
visibility: hidden;
|
1543 |
+
transform: translate3d(-100%, 0, 0);
|
1544 |
+
}
|
1545 |
+
}
|
1546 |
+
|
1547 |
+
.slideOutLeft {
|
1548 |
+
animation-name: slideOutLeft;
|
1549 |
+
}
|
1550 |
+
|
1551 |
+
@keyframes slideOutRight {
|
1552 |
+
from {
|
1553 |
+
transform: translate3d(0, 0, 0);
|
1554 |
+
}
|
1555 |
+
|
1556 |
+
to {
|
1557 |
+
visibility: hidden;
|
1558 |
+
transform: translate3d(100%, 0, 0);
|
1559 |
+
}
|
1560 |
+
}
|
1561 |
+
|
1562 |
+
.slideOutRight {
|
1563 |
+
animation-name: slideOutRight;
|
1564 |
+
}
|
1565 |
+
|
1566 |
+
@keyframes slideOutUp {
|
1567 |
+
from {
|
1568 |
+
transform: translate3d(0, 0, 0);
|
1569 |
+
}
|
1570 |
+
|
1571 |
+
to {
|
1572 |
+
visibility: hidden;
|
1573 |
+
transform: translate3d(0, -100%, 0);
|
1574 |
+
}
|
1575 |
+
}
|
1576 |
+
|
1577 |
+
.slideOutUp {
|
1578 |
+
animation-name: slideOutUp;
|
1579 |
+
}
|
assets/css/elementor-preview-style.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
/*
|
3 |
+
* In carousel preview iframe pabel edit overly displayed none
|
4 |
+
*/
|
5 |
+
.premium-carousel-wrapper .elementor-element-overlay {
|
6 |
+
display: none;
|
7 |
+
}
|
8 |
+
|
9 |
+
#elementor-template-library-modal .elementor-button {
|
10 |
+
color: red;
|
11 |
+
}
|
assets/css/fonts/slick.eot
ADDED
Binary file
|
assets/css/fonts/slick.svg
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" standalone="no"?>
|
2 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
3 |
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
+
<metadata>Generated by Fontastic.me</metadata>
|
5 |
+
<defs>
|
6 |
+
<font id="slick" horiz-adv-x="512">
|
7 |
+
<font-face font-family="slick" units-per-em="512" ascent="480" descent="-32"/>
|
8 |
+
<missing-glyph horiz-adv-x="512" />
|
9 |
+
|
10 |
+
<glyph unicode="→" d="M241 113l130 130c4 4 6 8 6 13 0 5-2 9-6 13l-130 130c-3 3-7 5-12 5-5 0-10-2-13-5l-29-30c-4-3-6-7-6-12 0-5 2-10 6-13l87-88-87-88c-4-3-6-8-6-13 0-5 2-9 6-12l29-30c3-3 8-5 13-5 5 0 9 2 12 5z m234 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
11 |
+
<glyph unicode="←" d="M296 113l29 30c4 3 6 7 6 12 0 5-2 10-6 13l-87 88 87 88c4 3 6 8 6 13 0 5-2 9-6 12l-29 30c-3 3-8 5-13 5-5 0-9-2-12-5l-130-130c-4-4-6-8-6-13 0-5 2-9 6-13l130-130c3-3 7-5 12-5 5 0 10 2 13 5z m179 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
12 |
+
<glyph unicode="•" d="M475 256c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
13 |
+
<glyph unicode="a" d="M475 439l0-128c0-5-1-9-5-13-4-4-8-5-13-5l-128 0c-8 0-13 3-17 11-3 7-2 14 4 20l40 39c-28 26-62 39-100 39-20 0-39-4-57-11-18-8-33-18-46-32-14-13-24-28-32-46-7-18-11-37-11-57 0-20 4-39 11-57 8-18 18-33 32-46 13-14 28-24 46-32 18-7 37-11 57-11 23 0 44 5 64 15 20 9 38 23 51 42 2 1 4 3 7 3 3 0 5-1 7-3l39-39c2-2 3-3 3-6 0-2-1-4-2-6-21-25-46-45-76-59-29-14-60-20-93-20-30 0-58 5-85 17-27 12-51 27-70 47-20 19-35 43-47 70-12 27-17 55-17 85 0 30 5 58 17 85 12 27 27 51 47 70 19 20 43 35 70 47 27 12 55 17 85 17 28 0 55-5 81-15 26-11 50-26 70-45l37 37c6 6 12 7 20 4 8-4 11-9 11-17z"/>
|
14 |
+
</font></defs></svg>
|
assets/css/fonts/slick.ttf
ADDED
Binary file
|
assets/css/fonts/slick.woff
ADDED
Binary file
|
assets/css/premium-addons.css
ADDED
@@ -0,0 +1,1497 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**************** Premium Banner ****************/
|
2 |
+
/************************************************/
|
3 |
+
.premium_addons-banner-ib,
|
4 |
+
.premium_addons-banner-ib img {
|
5 |
+
display: block;
|
6 |
+
position: relative;
|
7 |
+
}
|
8 |
+
.premium_addons-banner-ib {
|
9 |
+
z-index: 1;
|
10 |
+
overflow: hidden;
|
11 |
+
margin: 0 0 35px;
|
12 |
+
background: #3085a3;
|
13 |
+
text-align: center;
|
14 |
+
cursor: pointer;
|
15 |
+
-webkit-box-sizing: border-box;
|
16 |
+
-moz-box-sizing: border-box;
|
17 |
+
box-sizing: border-box;
|
18 |
+
}
|
19 |
+
.premium_addons-banner-ib,
|
20 |
+
.wpb_column>.wpb_wrapper .premium_addons-banner-ib {
|
21 |
+
margin-bottom: 0px
|
22 |
+
}
|
23 |
+
/*.premium_addons-banner-ib * {
|
24 |
+
-webkit-box-sizing: border-box;
|
25 |
+
-moz-box-sizing: border-box;
|
26 |
+
box-sizing: border-box;
|
27 |
+
}*/
|
28 |
+
.premium_addons-banner-ib *,
|
29 |
+
.premium_addons-banner-ib .premium_addons-banner-ib-desc {
|
30 |
+
-webkit-box-sizing: border-box;
|
31 |
+
-moz-box-sizing: border-box;
|
32 |
+
}
|
33 |
+
.premium_addons-banner-ib img {
|
34 |
+
min-width: 100%;
|
35 |
+
max-width: 100%;
|
36 |
+
-webkit-transition: opacity .35s;
|
37 |
+
transition: opacity .35s;
|
38 |
+
}
|
39 |
+
.premium_addons-banner-ib .premium_addons-banner-ib-desc {
|
40 |
+
padding: 15px;
|
41 |
+
-webkit-backface-visibility: hidden;
|
42 |
+
backface-visibility: hidden;
|
43 |
+
-webkit-box-sizing: border-box;
|
44 |
+
-moz-box-sizing: border-box;
|
45 |
+
box-sizing: border-box;
|
46 |
+
}
|
47 |
+
.premium_addons-banner-ib .premium_addons-banner-ib-desc,
|
48 |
+
.premium_addons-banner-ib a {
|
49 |
+
position: absolute;
|
50 |
+
top: 0;
|
51 |
+
left: 0;
|
52 |
+
width: 100%;
|
53 |
+
height: 100%;
|
54 |
+
}
|
55 |
+
.premium_addons-banner-ib a {
|
56 |
+
z-index: 1000;
|
57 |
+
text-indent: 200%;
|
58 |
+
white-space: nowrap;
|
59 |
+
font-size: 0;
|
60 |
+
opacity: 0;
|
61 |
+
}
|
62 |
+
.premium_addons-banner-ib a.premium_addons-banner-ib-link {
|
63 |
+
display: block;
|
64 |
+
background: 0 0;
|
65 |
+
}
|
66 |
+
.premium_banner_animation1 img {
|
67 |
+
width: -webkit-calc(100% + 50px)!important;
|
68 |
+
width: calc(100% + 50px)!important;
|
69 |
+
max-width: -webkit-calc(100% + 50px)!important;
|
70 |
+
max-width: calc(100% + 50px)!important;
|
71 |
+
-webkit-transition: opacity .35s, -webkit-transform .35s;
|
72 |
+
transition: opacity .35s, -webkit-transform .35s;
|
73 |
+
transition: opacity .35s, transform .35s;
|
74 |
+
transition: opacity .35s, transform .35s, -webkit-transform .35s;
|
75 |
+
-webkit-transform: translate3d(-40px, 0, 0);
|
76 |
+
transform: translate3d(-40px, 0, 0);
|
77 |
+
}
|
78 |
+
.premium_banner_animation1 .premium_addons-banner-ib-desc {
|
79 |
+
top: auto;
|
80 |
+
bottom: 0;
|
81 |
+
min-height: 25%;
|
82 |
+
height: auto;
|
83 |
+
max-height: 100%;
|
84 |
+
text-align: left;
|
85 |
+
}
|
86 |
+
.premium_banner_animation1 .premium_addons-banner-ib-content,
|
87 |
+
.premium_banner_animation1 .premium_addons-banner-ib-title {
|
88 |
+
-webkit-transform: translate3d(0, 40px, 0);
|
89 |
+
transform: translate3d(0, 40px, 0);
|
90 |
+
-webkit-transition-delay: .05s;
|
91 |
+
transition-delay: .05s;
|
92 |
+
-webkit-transition-duration: .35s;
|
93 |
+
transition-duration: .35s;
|
94 |
+
}
|
95 |
+
.premium_banner_animation1 .premium_addons-banner-ib-title {
|
96 |
+
-webkit-transition: -webkit-transform .35s;
|
97 |
+
transition: -webkit-transform .35s;
|
98 |
+
transition: transform .35s;
|
99 |
+
transition: transform .35s, -webkit-transform .35s;
|
100 |
+
}
|
101 |
+
.premium_banner_animation1 .premium_addons-banner-ib-content {
|
102 |
+
margin-top: 10px;
|
103 |
+
opacity: 0;
|
104 |
+
-webkit-transition: opacity .2s, -webkit-transform .35s;
|
105 |
+
transition: opacity .2s, -webkit-transform .35s;
|
106 |
+
transition: opacity .2s, transform .35s;
|
107 |
+
transition: opacity .2s, transform .35s, -webkit-transform .35s;
|
108 |
+
}
|
109 |
+
.premium_banner_animation1:hover .premium_addons-banner-ib-content {
|
110 |
+
opacity: 1;
|
111 |
+
-webkit-transition-delay: .05s;
|
112 |
+
transition-delay: .05s;
|
113 |
+
-webkit-transition-duration: .35s;
|
114 |
+
transition-duration: .35s;
|
115 |
+
}
|
116 |
+
.premium_banner_animation1:hover .premium_addons-banner-ib-content,
|
117 |
+
.premium_banner_animation1:hover .premium_addons-banner-ib-title,
|
118 |
+
.premium_banner_animation1:hover img {
|
119 |
+
-webkit-transform: translate3d(0, 0, 0);
|
120 |
+
transform: translate3d(0, 0, 0);
|
121 |
+
-webkit-transition-delay: .05s;
|
122 |
+
transition-delay: .05s;
|
123 |
+
-webkit-transition-duration: .35s;
|
124 |
+
transition-duration: .35s;
|
125 |
+
}
|
126 |
+
.premium_banner_animation1.premium-banner-min-height img,
|
127 |
+
.premium_banner_animation2.premium-banner-min-height img,
|
128 |
+
.premium_banner_animation4.premium-banner-min-height img,
|
129 |
+
.premium_banner_animation5.premium-banner-min-height img,
|
130 |
+
.premium_banner_animation6.premium-banner-min-height img,
|
131 |
+
.premium_banner_animation13.premium-banner-min-height img {
|
132 |
+
height: auto;
|
133 |
+
}
|
134 |
+
|
135 |
+
.premium_banner_animation2 img {
|
136 |
+
width: 100%;
|
137 |
+
}
|
138 |
+
|
139 |
+
.premium_banner_animation2 .premium_addons-banner-ib-desc::before {
|
140 |
+
position: absolute;
|
141 |
+
content: "";
|
142 |
+
top: 0;
|
143 |
+
left: 0;
|
144 |
+
width: 100%;
|
145 |
+
height: 100%;
|
146 |
+
opacity: 0;
|
147 |
+
-webkit-transform: translate3d(0, 50%, 0);
|
148 |
+
transform: translate3d(0, 50%, 0);
|
149 |
+
}
|
150 |
+
.premium_banner_animation2 .premium_addons-banner-ib-title {
|
151 |
+
position: absolute;
|
152 |
+
top: 50%;
|
153 |
+
left: 0;
|
154 |
+
width: 100%;
|
155 |
+
-webkit-transition: -webkit-transform .35s, color .35s;
|
156 |
+
-webkit-transition: color .35s, -webkit-transform .35s;
|
157 |
+
transition: color .35s, -webkit-transform .35s;
|
158 |
+
transition: transform .35s, color .35s;
|
159 |
+
transition: transform .35s, color .35s, -webkit-transform .35s;
|
160 |
+
-webkit-transform: translate3d(0, -50%, 0);
|
161 |
+
transform: translate3d(0, -50%, 0);
|
162 |
+
}
|
163 |
+
.premium_banner_animation2 .premium_addons-banner-ib-content,
|
164 |
+
.premium_banner_animation2 .premium_addons-banner-ib-desc::before {
|
165 |
+
-webkit-transition: opacity .35s, -webkit-transform .35s;
|
166 |
+
transition: opacity .35s, -webkit-transform .35s;
|
167 |
+
transition: opacity .35s, transform .35s;
|
168 |
+
transition: opacity .35s, transform .35s, -webkit-transform .35s;
|
169 |
+
}
|
170 |
+
.premium_banner_animation2 .premium_addons-banner-ib-content {
|
171 |
+
position: absolute;
|
172 |
+
bottom: 0;
|
173 |
+
left: 0;
|
174 |
+
padding: 15px;
|
175 |
+
width: 100%;
|
176 |
+
max-height: 50%;
|
177 |
+
opacity: 0;
|
178 |
+
-webkit-transform: translate3d(0, 10px, 0);
|
179 |
+
transform: translate3d(0, 10px, 0);
|
180 |
+
}
|
181 |
+
.premium_banner_animation2:hover .premium_addons-banner-ib-title {
|
182 |
+
color: #fff;
|
183 |
+
-webkit-transform: translate3d(0, -40px, 0);
|
184 |
+
transform: translate3d(0, -40px, 0);
|
185 |
+
}
|
186 |
+
.premium_banner_animation2:hover .premium_addons-banner-ib-content,
|
187 |
+
.premium_banner_animation2:hover .premium_addons-banner-ib-desc::before {
|
188 |
+
opacity: 1;
|
189 |
+
-webkit-transform: translate3d(0, 0, 0);
|
190 |
+
transform: translate3d(0, 0, 0);;
|
191 |
+
}
|
192 |
+
|
193 |
+
.premium_banner_animation3 .premium_addons-banner-ib-title {
|
194 |
+
position: absolute;
|
195 |
+
bottom: 0;
|
196 |
+
left: 0;
|
197 |
+
padding: 15px;
|
198 |
+
width: 100%;
|
199 |
+
text-align: left;
|
200 |
+
-webkit-transform: translate3d(0, -30px, 0);
|
201 |
+
transform: translate3d(0, -30px, 0);
|
202 |
+
}
|
203 |
+
.premium_banner_animation3 .premium_addons-banner-ib-desc::before,
|
204 |
+
.premium_banner_animation3 .premium_addons-banner-ib-title {
|
205 |
+
-webkit-transition: -webkit-transform .35s;
|
206 |
+
transition: -webkit-transform .35s;
|
207 |
+
transition: transform .35s;
|
208 |
+
transition: transform .35s, -webkit-transform .35s;
|
209 |
+
}
|
210 |
+
.premium_banner_animation3:hover .premium_addons-banner-ib-desc::before,
|
211 |
+
.premium_banner_animation3:hover .premium_addons-banner-ib-title {
|
212 |
+
opacity: 1;
|
213 |
+
-webkit-transform: translate3d(0, 0, 0);
|
214 |
+
transform: translate3d(0, 0, 0);
|
215 |
+
}
|
216 |
+
.premium_banner_animation3 .premium_addons-banner-ib-content {
|
217 |
+
max-height: -webkit-calc(100% - 60px - 1.5em);
|
218 |
+
max-height: calc(100% - 60px - 1.5em);
|
219 |
+
overflow: hidden;
|
220 |
+
}
|
221 |
+
.premium_banner_animation4 img {
|
222 |
+
width: -webkit-calc(100% + 40px)!important;
|
223 |
+
width: calc(100% + 40px)!important;
|
224 |
+
max-width: -webkit-calc(100% + 40px)!important;
|
225 |
+
max-width: calc(100% + 40px)!important;
|
226 |
+
}
|
227 |
+
.premium_banner_animation4 .premium_addons-banner-ib-desc {
|
228 |
+
padding: 30px;
|
229 |
+
}
|
230 |
+
.premium_banner_animation4 .premium_addons-banner-ib-desc::after,
|
231 |
+
.premium_banner_animation4 .premium_addons-banner-ib-desc::before {
|
232 |
+
position: absolute;
|
233 |
+
content: "";
|
234 |
+
opacity: 0;
|
235 |
+
}
|
236 |
+
.premium_banner_animation4 .premium_addons-banner-ib-desc::before {
|
237 |
+
top: 50px;
|
238 |
+
right: 30px;
|
239 |
+
bottom: 50px;
|
240 |
+
left: 30px;
|
241 |
+
border-top: 1px solid #fff;
|
242 |
+
border-bottom: 1px solid #fff;
|
243 |
+
-webkit-transform: scale(0, 1);
|
244 |
+
-ms-transform: scale(0, 1);
|
245 |
+
transform: scale(0, 1);
|
246 |
+
-webkit-transform-origin: 0 0;
|
247 |
+
-ms-transform-origin: 0 0;
|
248 |
+
transform-origin: 0 0;
|
249 |
+
}
|
250 |
+
.premium_banner_animation4 .premium_addons-banner-ib-desc::after {
|
251 |
+
top: 30px;
|
252 |
+
right: 50px;
|
253 |
+
bottom: 30px;
|
254 |
+
left: 50px;
|
255 |
+
border-right: 1px solid #fff;
|
256 |
+
border-left: 1px solid #fff;
|
257 |
+
-webkit-transform: scale(1, 0);
|
258 |
+
-ms-transform: scale(1, 0);
|
259 |
+
transform: scale(1, 0);
|
260 |
+
-webkit-transform-origin: 100% 0;
|
261 |
+
-ms-transform-origin: 100% 0;
|
262 |
+
transform-origin: 100% 0;
|
263 |
+
}
|
264 |
+
.premium_banner_animation4 .premium_addons-banner-ib-title {
|
265 |
+
padding-top: 50px;
|
266 |
+
-webkit-transition: -webkit-transform .35s;
|
267 |
+
transition: -webkit-transform .35s;
|
268 |
+
transition: transform .35s;
|
269 |
+
transition: transform .35s, -webkit-transform .35s;
|
270 |
+
}
|
271 |
+
.premium_banner_animation4 .premium_addons-banner-ib-content {
|
272 |
+
padding: 10px 30px;
|
273 |
+
opacity: 0;
|
274 |
+
overflow: hidden;
|
275 |
+
-webkit-transform: translate3d(0, -10px, 0);
|
276 |
+
transform: translate3d(0, -10px, 0);
|
277 |
+
}
|
278 |
+
.premium_banner_animation4 .premium_addons-banner-ib-title,
|
279 |
+
.premium_banner_animation4 img {
|
280 |
+
-webkit-transform: translate3d(-30px, 0, 0);
|
281 |
+
transform: translate3d(-30px, 0, 0);
|
282 |
+
}
|
283 |
+
.premium_banner_animation4 .premium_addons-banner-ib-content,
|
284 |
+
.premium_banner_animation4 .premium_addons-banner-ib-desc::after,
|
285 |
+
.premium_banner_animation4 .premium_addons-banner-ib-desc::before,
|
286 |
+
.premium_banner_animation4 img {
|
287 |
+
-webkit-transition: opacity .35s, -webkit-transform .35s;
|
288 |
+
transition: opacity .35s, -webkit-transform .35s;
|
289 |
+
transition: opacity .35s, transform .35s;
|
290 |
+
transition: opacity .35s, transform .35s, -webkit-transform .35s;
|
291 |
+
}
|
292 |
+
|
293 |
+
.premium_banner_animation4:hover img {
|
294 |
+
-webkit-transform: translate3d(0, 0, 0);
|
295 |
+
transform: translate3d(0, 0, 0);
|
296 |
+
}
|
297 |
+
.premium_banner_animation4:hover .premium_addons-banner-ib-desc::after,
|
298 |
+
.premium_banner_animation4:hover .premium_addons-banner-ib-desc::before {
|
299 |
+
opacity: 1;
|
300 |
+
-webkit-transform: scale(1);
|
301 |
+
-ms-transform: scale(1);
|
302 |
+
transform: scale(1);
|
303 |
+
}
|
304 |
+
.premium_banner_animation4:hover .premium_addons-banner-ib-content,
|
305 |
+
.premium_banner_animation4:hover .premium_addons-banner-ib-title {
|
306 |
+
opacity: 1;
|
307 |
+
-webkit-transform: translate3d(0, 0, 0);
|
308 |
+
transform: translate3d(0, 0, 0);
|
309 |
+
}
|
310 |
+
.premium_banner_animation4:hover .premium_addons-banner-ib-content,
|
311 |
+
.premium_banner_animation4:hover .premium_addons-banner-ib-desc::after,
|
312 |
+
.premium_banner_animation4:hover .premium_addons-banner-ib-title,
|
313 |
+
.premium_banner_animation4:hover img {
|
314 |
+
-webkit-transition-delay: .15s;
|
315 |
+
transition-delay: .15s;
|
316 |
+
}
|
317 |
+
.premium_banner_animation5 .premium_addons-banner-ib-desc {
|
318 |
+
top: auto;
|
319 |
+
bottom: 0;
|
320 |
+
padding: 15px;
|
321 |
+
height: auto;
|
322 |
+
background: #f2f2f2;
|
323 |
+
color: #3c4a50;
|
324 |
+
-webkit-transition: -webkit-transform .35s;
|
325 |
+
transition: -webkit-transform .35s;
|
326 |
+
transition: transform .35s;
|
327 |
+
transition: transform .35s, -webkit-transform .35s;
|
328 |
+
-webkit-transform: translate3d(0, 100%, 0);
|
329 |
+
transform: translate3d(0, 100%, 0);
|
330 |
+
}
|
331 |
+
.premium_banner_animation5 .premium_addons-banner-ib-content {
|
332 |
+
position: absolute;
|
333 |
+
top: auto;
|
334 |
+
bottom: 100%;
|
335 |
+
left: 0;
|
336 |
+
width: 100%;
|
337 |
+
padding: 25px;
|
338 |
+
opacity: 0;
|
339 |
+
-webkit-transition: opacity .35s;
|
340 |
+
transition: opacity .35s;
|
341 |
+
}
|
342 |
+
.premium_banner_animation5 .premium_addons-banner-ib-title {
|
343 |
+
-webkit-transition: -webkit-transform .35s;
|
344 |
+
transition: -webkit-transform .35s;
|
345 |
+
transition: transform .35s;
|
346 |
+
transition: transform .35s, -webkit-transform .35s;
|
347 |
+
-webkit-transform: translate3d(0, 200%, 0);
|
348 |
+
transform: translate3d(0, 200%, 0);
|
349 |
+
text-align: center;
|
350 |
+
}
|
351 |
+
.premium_banner_animation5:hover .premium_addons-banner-ib-content,
|
352 |
+
.premium_banner_animation5:hover .premium_addons-banner-ib-content * {
|
353 |
+
opacity: 1!important;
|
354 |
+
z-index: 99!important;
|
355 |
+
-webkit-backface-visibility: hidden!important;
|
356 |
+
backface-visibility: hidden!important;
|
357 |
+
}
|
358 |
+
.premium_banner_animation5:hover .premium_addons-banner-ib-desc,
|
359 |
+
.premium_banner_animation5:hover .premium_addons-banner-ib-title {
|
360 |
+
-webkit-transform: translateY(0);
|
361 |
+
-ms-transform: translateY(0);
|
362 |
+
transform: translateY(0);
|
363 |
+
}
|
364 |
+
.premium_banner_animation5:hover .premium_addons-banner-ib-title {
|
365 |
+
-webkit-transition-delay: .05s;
|
366 |
+
transition-delay: .05s;
|
367 |
+
}
|
368 |
+
.premium_banner_animation6 .premium_addons-banner-ib-desc {
|
369 |
+
padding: 45px;
|
370 |
+
}
|
371 |
+
.premium_banner_animation6 .premium_addons-banner-ib-desc::before {
|
372 |
+
position: absolute;
|
373 |
+
content: "";
|
374 |
+
top: 30px;
|
375 |
+
right: 30px;
|
376 |
+
bottom: 30px;
|
377 |
+
left: 30px;
|
378 |
+
border: 1px solid #fff;
|
379 |
+
}
|
380 |
+
.premium_banner_animation6 .premium_addons-banner-ib-title {
|
381 |
+
margin: 20px 0 10px;
|
382 |
+
-webkit-transition: -webkit-transform .35s;
|
383 |
+
transition: -webkit-transform .35s;
|
384 |
+
transition: transform .35s;
|
385 |
+
transition: transform .35s, -webkit-transform .35s;
|
386 |
+
-webkit-transform: translate3d(0, 100%, 0);
|
387 |
+
transform: translate3d(0, 100%, 0);
|
388 |
+
}
|
389 |
+
.premium_banner_animation6 .premium_addons-banner-ib-content,
|
390 |
+
.premium_banner_animation6 .premium_addons-banner-ib-desc::before {
|
391 |
+
opacity: 0;
|
392 |
+
-webkit-transition: opacity .35s, -webkit-transform .35s;
|
393 |
+
transition: opacity .35s, -webkit-transform .35s;
|
394 |
+
transition: opacity .35s, transform .35s;
|
395 |
+
transition: opacity .35s, transform .35s, -webkit-transform .35s;
|
396 |
+
-webkit-transform: scale(0);
|
397 |
+
-ms-transform: scale(0);
|
398 |
+
transform: scale(0);
|
399 |
+
}
|
400 |
+
.premium_banner_animation6:hover .premium_addons-banner-ib-title {
|
401 |
+
-webkit-transform: translate3d(0, 0, 0);
|
402 |
+
transform: translate3d(0, 0, 0);
|
403 |
+
}
|
404 |
+
.premium_banner_animation6:hover .premium_addons-banner-ib-content,
|
405 |
+
.premium_banner_animation6:hover .premium_addons-banner-ib-desc::before {
|
406 |
+
opacity: 1;
|
407 |
+
-webkit-transform: scale(1);
|
408 |
+
-ms-transform: scale(1);
|
409 |
+
transform: scale(1);
|
410 |
+
}
|
411 |
+
|
412 |
+
|
413 |
+
|
414 |
+
.premium_banner_animation8 img {
|
415 |
+
-webkit-transition: opacity .35s, -webkit-transform .35s;
|
416 |
+
transition: opacity .35s, -webkit-transform .35s;
|
417 |
+
transition: opacity .35s, transform .35s;
|
418 |
+
transition: opacity .35s, transform .35s, -webkit-transform .35s;
|
419 |
+
-webkit-transform: scale(1.15);
|
420 |
+
-ms-transform: scale(1.15);
|
421 |
+
transform: scale(1.15)
|
422 |
+
}
|
423 |
+
.premium_banner_animation8:hover img {
|
424 |
+
-webkit-transform: scale(1);
|
425 |
+
-ms-transform: scale(1);
|
426 |
+
transform: scale(1);
|
427 |
+
}
|
428 |
+
.premium_banner_animation8 .premium_addons-banner-ib-title {
|
429 |
+
margin-top: 20%;
|
430 |
+
-webkit-transition: -webkit-transform .35s;
|
431 |
+
transition: -webkit-transform .35s;
|
432 |
+
transition: transform .35s;
|
433 |
+
transition: transform .35s, -webkit-transform .35s;
|
434 |
+
-webkit-transform: translate3d(0, 20px, 0);
|
435 |
+
transform: translate3d(0, 20px, 0);
|
436 |
+
}
|
437 |
+
.premium_banner_animation8:hover .premium_addons-banner-ib-title {
|
438 |
+
-webkit-transform: translate3d(0, 0, 0);
|
439 |
+
transform: translate3d(0, 0, 0);
|
440 |
+
}
|
441 |
+
.premium_banner_animation8 .premium_addons-banner-ib-content {
|
442 |
+
margin: 1em 0 0;
|
443 |
+
padding: 35px;
|
444 |
+
border: 1px solid #fff;
|
445 |
+
opacity: 0;
|
446 |
+
-webkit-transition: opacity .35s, -webkit-transform .35s;
|
447 |
+
transition: opacity .35s, -webkit-transform .35s;
|
448 |
+
transition: opacity .35s, transform .35s;
|
449 |
+
transition: opacity .35s, transform .35s, -webkit-transform .35s;
|
450 |
+
-webkit-transform: translate3d(0, 20px, 0) scale(1.1);
|
451 |
+
transform: translate3d(0, 20px, 0) scale(1.1);
|
452 |
+
}
|
453 |
+
.premium_banner_animation8:hover .premium_addons-banner-ib-content {
|
454 |
+
opacity: 1;
|
455 |
+
-webkit-transform: translate3d(0, 0, 0) scale(1);
|
456 |
+
transform: translate3d(0, 0, 0) scale(1);
|
457 |
+
}
|
458 |
+
|
459 |
+
.premium_banner_animation12 .premium_addons-banner-ib-desc::after {
|
460 |
+
position: absolute;
|
461 |
+
content: "";
|
462 |
+
right: 30px;
|
463 |
+
bottom: 30px;
|
464 |
+
left: 30px;
|
465 |
+
height: -webkit-calc(50% - 30px);
|
466 |
+
height: calc(50% - 30px);
|
467 |
+
border: 7px solid #fff;
|
468 |
+
-webkit-transition: -webkit-transform .35s;
|
469 |
+
transition: -webkit-transform .35s;
|
470 |
+
transition: transform .35s;
|
471 |
+
transition: transform .35s, -webkit-transform .35s;
|
472 |
+
-webkit-transform: translate3d(0, -100%, 0);
|
473 |
+
transform: translate3d(0, -100%, 0);
|
474 |
+
}
|
475 |
+
.premium_banner_animation12:hover .premium_addons-banner-ib-desc::after {
|
476 |
+
-webkit-transform: translate3d(0, 0, 0);
|
477 |
+
transform: translate3d(0, 0, 0);
|
478 |
+
}
|
479 |
+
.premium_banner_animation12 .premium_addons-banner-ib-desc {
|
480 |
+
padding: 45px;
|
481 |
+
text-align: left;
|
482 |
+
}
|
483 |
+
.premium_banner_animation12 .premium_addons-banner-ib-content {
|
484 |
+
position: absolute;
|
485 |
+
right: 60px;
|
486 |
+
bottom: 60px;
|
487 |
+
left: 60px;
|
488 |
+
opacity: 0;
|
489 |
+
-webkit-transition: opacity .35s, -webkit-transform .35s;
|
490 |
+
transition: opacity .35s, -webkit-transform .35s;
|
491 |
+
transition: opacity .35s, transform .35s;
|
492 |
+
transition: opacity .35s, transform .35s, -webkit-transform .35s;
|
493 |
+
-webkit-transform: translate3d(0, -100px, 0);
|
494 |
+
transform: translate3d(0, -100px, 0);
|
495 |
+
}
|
496 |
+
.premium_banner_animation12:hover .premium_addons-banner-ib-content {
|
497 |
+
opacity: 1;
|
498 |
+
-webkit-transform: translate3d(0, 0, 0);
|
499 |
+
transform: translate3d(0, 0, 0);
|
500 |
+
}
|
501 |
+
.premium_banner_animation13 img {
|
502 |
+
width: -webkit-calc(100% + 20px)!important;
|
503 |
+
width: calc(100% + 20px)!important;
|
504 |
+
max-width: -webkit-calc(100% + 20px)!important;
|
505 |
+
max-width: calc(100% + 20px)!important;
|
506 |
+
-webkit-transition: opacity .35s, -webkit-transform .35s;
|
507 |
+
transition: opacity .35s, -webkit-transform .35s;
|
508 |
+
transition: opacity .35s, transform .35s;
|
509 |
+
transition: opacity .35s, transform .35s, -webkit-transform .35s;
|
510 |
+
-webkit-transform: translate3d(-10px, 0, 0);
|
511 |
+
transform: translate3d(-10px, 0, 0);
|
512 |
+
-webkit-backface-visibility: hidden;
|
513 |
+
backface-visibility: hidden;
|
514 |
+
}
|
515 |
+
.premium_banner_animation13:hover img {
|
516 |
+
-webkit-transform: translate3d(0, 0, 0);
|
517 |
+
transform: translate3d(0, 0, 0);
|
518 |
+
}
|
519 |
+
.premium_banner_animation13 .premium_addons-banner-ib-desc {
|
520 |
+
text-align: left;
|
521 |
+
}
|
522 |
+
.premium_banner_animation13 .premium_addons-banner-ib-title {
|
523 |
+
position: relative;
|
524 |
+
overflow: hidden;
|
525 |
+
padding: 5px 0 10px;
|
526 |
+
}
|
527 |
+
.premium_banner_animation13 .premium_addons-banner-ib-title::after {
|
528 |
+
position: absolute;
|
529 |
+
content: "";
|
530 |
+
bottom: 0;
|
531 |
+
left: 0;
|
532 |
+
width: 100%;
|
533 |
+
height: 2px;
|
534 |
+
background: #fff;
|
535 |
+
-webkit-transition: -webkit-transform .35s;
|
536 |
+
transition: -webkit-transform .35s;
|
537 |
+
transition: transform .35s;
|
538 |
+
transition: transform .35s, -webkit-transform .35s;
|
539 |
+
-webkit-transform: translate3d(-101%, 0, 0);
|
540 |
+
transform: translate3d(-101%, 0, 0);
|
541 |
+
}
|
542 |
+
.premium_banner_animation13:hover .premium_addons-banner-ib-title::after {
|
543 |
+
-webkit-transform: translate3d(0, 0, 0);
|
544 |
+
transform: translate3d(0, 0, 0);
|
545 |
+
}
|
546 |
+
.premium_banner_animation13 .premium_addons-banner-ib-content {
|
547 |
+
padding: 15px 0;
|
548 |
+
opacity: 0;
|
549 |
+
-webkit-transition: opacity .35s, -webkit-transform .35s;
|
550 |
+
transition: opacity .35s, -webkit-transform .35s;
|
551 |
+
transition: opacity .35s, transform .35s;
|
552 |
+
transition: opacity .35s, transform .35s, -webkit-transform .35s;
|
553 |
+
-webkit-transform: translate3d(100%, 0, 0);
|
554 |
+
transform: translate3d(100%, 0, 0);
|
555 |
+
}
|
556 |
+
.premium_banner_animation13:hover .premium_addons-banner-ib-content {
|
557 |
+
opacity: 1;
|
558 |
+
-webkit-transform: translate3d(0, 0, 0);
|
559 |
+
transform: translate3d(0, 0, 0);
|
560 |
+
}
|
561 |
+
.premium_addons-banner-ib.premium_banner_animation5 .premium-banner-toggle-size {
|
562 |
+
left: 50%;
|
563 |
+
width: auto!important;
|
564 |
+
height: 100%;
|
565 |
+
max-width: none;
|
566 |
+
-webkit-transform: translateX(-50%);
|
567 |
+
-ms-transform: translateX(-50%);
|
568 |
+
transform: translateX(-50%);
|
569 |
+
}
|
570 |
+
.premium_addons-banner-ib img {
|
571 |
+
border: none;
|
572 |
+
padding: 0;
|
573 |
+
margin: 0;
|
574 |
+
}
|
575 |
+
/**************** Premium CountDown *************/
|
576 |
+
/************************************************/
|
577 |
+
/* jQuery Countdown styles 2.0.0. */
|
578 |
+
.pre_countdown-row {
|
579 |
+
display: block;
|
580 |
+
text-align: center;
|
581 |
+
}
|
582 |
+
|
583 |
+
.countdown .pre_countdown-section {
|
584 |
+
display: inline-block;
|
585 |
+
max-width: 100%;
|
586 |
+
margin-bottom: 15px;
|
587 |
+
}
|
588 |
+
|
589 |
+
.countdown .pre_countdown-section:last-child {
|
590 |
+
margin-right: 0;
|
591 |
+
}
|
592 |
+
|
593 |
+
.countdown span.pre_countdown-amount {
|
594 |
+
font-size: 36px;
|
595 |
+
}
|
596 |
+
|
597 |
+
.countdown .pre_time-mid {
|
598 |
+
display: block;
|
599 |
+
}
|
600 |
+
/********************************
|
601 |
+
* Border styles
|
602 |
+
*********************************/
|
603 |
+
.solid .pre_countdown-section .pre_countdown-amount {
|
604 |
+
border-style: solid;
|
605 |
+
}
|
606 |
+
|
607 |
+
.dashed .pre_countdown-section .pre_countdown-amount {
|
608 |
+
border-style: dashed;
|
609 |
+
}
|
610 |
+
|
611 |
+
.dotted .pre_countdown-section .pre_countdown-amount {
|
612 |
+
border-style: dotted;
|
613 |
+
}
|
614 |
+
|
615 |
+
.double .pre_countdown-section .pre_countdown-amount {
|
616 |
+
border-style: double;
|
617 |
+
}
|
618 |
+
|
619 |
+
.inset .pre_countdown-section .pre_countdown-amount {
|
620 |
+
border-style: inset;
|
621 |
+
}
|
622 |
+
|
623 |
+
.outset .pre_countdown-section .pre_countdown-amount {
|
624 |
+
border-style: outset;
|
625 |
+
}
|
626 |
+
/************************************
|
627 |
+
* Digit and unit styles
|
628 |
+
*************************************/
|
629 |
+
.side .pre_countdown-section .pre_countdown-period {
|
630 |
+
vertical-align: bottom;
|
631 |
+
}
|
632 |
+
/************************************
|
633 |
+
* Digit and unit side by side
|
634 |
+
*************************************/
|
635 |
+
|
636 |
+
.side .pre_countdown-section .pre_countdown-amount,
|
637 |
+
.side .pre_countdown-section .pre_countdown-period {
|
638 |
+
display: inline-block;
|
639 |
+
}
|
640 |
+
|
641 |
+
.side .pre_countdown-section .pre_countdown-amount {
|
642 |
+
margin-right: 5px;
|
643 |
+
}
|
644 |
+
/************************************
|
645 |
+
* Digit and unit up and down
|
646 |
+
*************************************/
|
647 |
+
.down .pre_countdown-section .pre_countdown-amount,
|
648 |
+
.down .pre_countdown-section .pre_countdown-period {
|
649 |
+
display: block;
|
650 |
+
}
|
651 |
+
/**************** Premium Carousel **************/
|
652 |
+
/************************************************/
|
653 |
+
.premium-carousel-wrapper a.carousel-arrow,
|
654 |
+
.premium-carousel-wrapper a.ver-carousel-arrow {
|
655 |
+
display: inline-block !important;
|
656 |
+
width: 2em;
|
657 |
+
height: 2em;
|
658 |
+
line-height: 1.84em;
|
659 |
+
text-align: center;
|
660 |
+
position: absolute;
|
661 |
+
cursor: pointer;
|
662 |
+
box-sizing: content-box;
|
663 |
+
-webkit-transition: opacity .3s ease;
|
664 |
+
-o-transition: opacity .3s ease;
|
665 |
+
-moz-transition: opacity .3s ease;
|
666 |
+
transition: opacity .3s ease;
|
667 |
+
-webkit-appearance: inherit;
|
668 |
+
box-shadow: none;
|
669 |
+
}
|
670 |
+
.premium-carousel-wrapper a.slick-arrow:hover {
|
671 |
+
box-shadow: none !important;
|
672 |
+
}
|
673 |
+
.premium-carousel-wrapper a.carousel-arrow {
|
674 |
+
top: 50%;
|
675 |
+
}
|
676 |
+
.premium-carousel-wrapper a.ver-carousel-arrow {
|
677 |
+
left: 50%;
|
678 |
+
}
|
679 |
+
a.carousel-arrow.carousel-next {
|
680 |
+
right: -45px;
|
681 |
+
}
|
682 |
+
|
683 |
+
a.carousel-arrow.carousel-prev {
|
684 |
+
left: -45px;
|
685 |
+
}
|
686 |
+
|
687 |
+
a.ver-carousel-arrow.carousel-next {
|
688 |
+
bottom: -56px;
|
689 |
+
}
|
690 |
+
|
691 |
+
a.ver-carousel-arrow.carousel-prev {
|
692 |
+
top: -45px;
|
693 |
+
}
|
694 |
+
a.circle-bg {
|
695 |
+
border-radius: 100%;
|
696 |
+
}
|
697 |
+
a.circle-border {
|
698 |
+
border-radius: 100%;
|
699 |
+
border: solid black;
|
700 |
+
}
|
701 |
+
a.square-border {
|
702 |
+
border: solid black;
|
703 |
+
}
|
704 |
+
ul.slick-dots li {
|
705 |
+
font-size: 10px;
|
706 |
+
}
|
707 |
+
a.carousel-arrow.carousel-next i:before,
|
708 |
+
a.carousel-arrow.carousel-prev i:before {
|
709 |
+
line-height: inherit;
|
710 |
+
vertical-align: middle;
|
711 |
+
}
|
712 |
+
a.ver-carousel-arrow.carousel-next i:before {
|
713 |
+
line-height: inherit;
|
714 |
+
vertical-align: middle;
|
715 |
+
}
|
716 |
+
a.ver-carousel-arrow.carousel-prev.circle-bg i:before,
|
717 |
+
a.ver-carousel-arrow.carousel-prev.circle-border i:before {
|
718 |
+
line-height: inherit;
|
719 |
+
vertical-align: middle;
|
720 |
+
}
|
721 |
+
/**************** Premium Counter ***************/
|
722 |
+
/************************************************/
|
723 |
+
.counter-area {
|
724 |
+
padding: 10px 0;
|
725 |
+
}
|
726 |
+
.counter-area .counter-icon span.icon {
|
727 |
+
width: 1em;
|
728 |
+
height: 1em;
|
729 |
+
line-height: 1em;
|
730 |
+
text-align: center;
|
731 |
+
display: inline-block;
|
732 |
+
vertical-align: middle;
|
733 |
+
}
|
734 |
+
.counter-area .counter-title {
|
735 |
+
padding: 0;
|
736 |
+
margin: 0;
|
737 |
+
}
|
738 |
+
.counter-icon .icon i.fa:before {
|
739 |
+
vertical-align: text-top;
|
740 |
+
}
|
741 |
+
/*
|
742 |
+
* Circle Icon style
|
743 |
+
*/
|
744 |
+
.counter-area .counter-icon .circle {
|
745 |
+
border-radius: 100%;
|
746 |
+
}
|
747 |
+
.counter-icon .design.solid {
|
748 |
+
border-style: solid;
|
749 |
+
}
|
750 |
+
.counter-icon .design.dotted {
|
751 |
+
border-style: dotted;
|
752 |
+
}
|
753 |
+
.counter-icon .design.dashed {
|
754 |
+
border-style: dashed;
|
755 |
+
}
|
756 |
+
.counter-icon .design.double {
|
757 |
+
border-style: double;
|
758 |
+
}
|
759 |
+
.counter-icon .design.inset{
|
760 |
+
border-style: inset;
|
761 |
+
}
|
762 |
+
.counter-icon .design.outset {
|
763 |
+
border-style: outset;
|
764 |
+
}
|
765 |
+
.counter-area.center {
|
766 |
+
text-align: center;
|
767 |
+
}
|
768 |
+
.counter-area .right,
|
769 |
+
.counter-area .left {
|
770 |
+
display: table-cell;
|
771 |
+
vertical-align: middle;
|
772 |
+
}
|
773 |
+
.counter-icon.right {
|
774 |
+
padding-left: 20px;
|
775 |
+
}
|
776 |
+
.counter-icon.left {
|
777 |
+
padding-right: 20px;
|
778 |
+
}
|
779 |
+
.init-wrapper.right {
|
780 |
+
text-align: right;
|
781 |
+
}
|
782 |
+
/*
|
783 |
+
* Custom image and simple styles image fix
|
784 |
+
*/
|
785 |
+
span.icon.flex-width {
|
786 |
+
width: auto !important;
|
787 |
+
height: auto !important;
|
788 |
+
}
|
789 |
+
/**************** Premium Image Separator ****************/
|
790 |
+
/*********************************************************/
|
791 |
+
/*Image Separator Container Style*/
|
792 |
+
.premium-image-separator-container{
|
793 |
+
position: absolute;
|
794 |
+
width: 100%;
|
795 |
+
z-index: 99;
|
796 |
+
top: auto;
|
797 |
+
text-align: center;
|
798 |
+
}
|
799 |
+
/*Link on Image Style*/
|
800 |
+
.premium-image-separator-link{
|
801 |
+
position: absolute;
|
802 |
+
z-index: 9999;
|
803 |
+
top: 0;
|
804 |
+
left: 0;
|
805 |
+
width: 100%;
|
806 |
+
height: 100%;
|
807 |
+
text-decoration: none;
|
808 |
+
}
|
809 |
+
/*Important to override Theme options*/
|
810 |
+
a.premium-image-separator-link:hover,
|
811 |
+
a.premium-image-separator-link:visited,
|
812 |
+
a.premium-image-separator-link:focus,
|
813 |
+
a.premium-image-separator-link:active{
|
814 |
+
box-shadow: none !important;
|
815 |
+
outline: none !important;
|
816 |
+
border: none !important;
|
817 |
+
text-decoration: none !important;
|
818 |
+
}
|
819 |
+
/**************** Premium Modal Box ****************/
|
820 |
+
/***************************************************/
|
821 |
+
.premium-modal-box-container {
|
822 |
+
width: 100% !important;
|
823 |
+
}
|
824 |
+
/*Open Modal Button Style*/
|
825 |
+
.premium-modal-box-selector-container .btn-info {
|
826 |
+
border: none;
|
827 |
+
-webkit-transition: all 0.3s ease-in-out;
|
828 |
+
-moz-transition: all 0.3s ease-in-out;
|
829 |
+
-o-transition: all 0.3s ease-in-out;
|
830 |
+
-ms-transition: all 0.3s ease-in-out;
|
831 |
+
transition: all 0.3s ease-in-out;
|
832 |
+
}
|
833 |
+
/*Open Modal Img, Span Style */
|
834 |
+
.premium-modal-box-selector-container img,
|
835 |
+
.premium-modal-box-selector-container span{
|
836 |
+
cursor: pointer;
|
837 |
+
}
|
838 |
+
/*Image on Modal Header Style*/
|
839 |
+
.premium-modal-box-modal-header img {
|
840 |
+
width: 48px;
|
841 |
+
padding: 5px 0;
|
842 |
+
vertical-align: top;
|
843 |
+
}
|
844 |
+
/*Icon On Modal Header Style*/
|
845 |
+
.premium-modal-box-modal-header i {
|
846 |
+
padding-right: 6px;
|
847 |
+
}
|
848 |
+
/*Image On Modal Header Style*/
|
849 |
+
.premium-modal-box-modal-title img {
|
850 |
+
vertical-align : middle;
|
851 |
+
}
|
852 |
+
/*Close Button Container Style*/
|
853 |
+
.premium-modal-box-close-button-container {
|
854 |
+
float: right;
|
855 |
+
padding: 10px;
|
856 |
+
}
|
857 |
+
/**************** Premium Progress Bar ****************/
|
858 |
+
/******************************************************/
|
859 |
+
.clearfix {
|
860 |
+
clear: both;
|
861 |
+
}
|
862 |
+
/*Progress Bar Style*/
|
863 |
+
.premium-progressbar-progress-bar {
|
864 |
+
-webkit-transition: width 0s ease-in-out !important;
|
865 |
+
-moz-transition: width 0s ease-in-out !important;
|
866 |
+
-ms-transition: width 0s ease-in-out !important;
|
867 |
+
-o-transition: width 0s ease-in-out !important;
|
868 |
+
transition: width 0s ease-in-out !important;
|
869 |
+
}
|
870 |
+
/*Left Label Style*/
|
871 |
+
.premium-progressbar-container p:first-of-type{
|
872 |
+
margin:0;
|
873 |
+
float:left;
|
874 |
+
}
|
875 |
+
/*Right Label Style*/
|
876 |
+
.premium-progressbar-container p:nth-of-type(2){
|
877 |
+
margin: 0;
|
878 |
+
float: right;
|
879 |
+
}
|
880 |
+
/**************** Premium Testimonials ****************/
|
881 |
+
/******************************************************/
|
882 |
+
/*Testimonial Container Style*/
|
883 |
+
.premium-testimonial-Box {
|
884 |
+
width: 100%;
|
885 |
+
background: transparent;
|
886 |
+
overflow: hidden;
|
887 |
+
-webkit-transition: all 0.3s ease-in-out;
|
888 |
+
-moz-transition: all 0.3s ease-in-out;
|
889 |
+
-o-transition: all 0.3s ease-in-out;
|
890 |
+
-ms-transition: all 0.3s ease-in-out;
|
891 |
+
transition: all 0.3s ease-in-out;
|
892 |
+
}
|
893 |
+
/*Testimonial Title Style*/
|
894 |
+
.premium-testimonial-Box h1, .premium-testimonial-Box h2,
|
895 |
+
.premium-testimonial-Box h3, .premium-testimonial-Box h4,
|
896 |
+
.premium-testimonial-Box h5, .premium-testimonial-Box h6{
|
897 |
+
display: inline;
|
898 |
+
font-weight: 600;
|
899 |
+
}
|
900 |
+
/*Testimonial Text Style*/
|
901 |
+
.premium-testimonial-container {
|
902 |
+
position: relative;
|
903 |
+
}
|
904 |
+
/*Testimonial Img Container Style*/
|
905 |
+
.premium-testimonial-img-wrapper {
|
906 |
+
margin-left: auto;
|
907 |
+
margin-right: auto;
|
908 |
+
overflow: hidden;
|
909 |
+
}
|
910 |
+
/*Testimonial Person Image Style*/
|
911 |
+
.premium-testimonial-person-image {
|
912 |
+
width: 100%;
|
913 |
+
height: 100% !important;
|
914 |
+
border-style: solid !important;
|
915 |
+
}
|
916 |
+
/*Testimonial Content Wrapper Style*/
|
917 |
+
.premium-testimonial-content-wrapper {
|
918 |
+
position: relative;
|
919 |
+
z-index: 2;
|
920 |
+
width: 100%;
|
921 |
+
padding: 20px;
|
922 |
+
text-align: center;
|
923 |
+
}
|
924 |
+
/*Testimonial Quotes Container Div Style*/
|
925 |
+
.premium-testimonial-quotes-wrapper {
|
926 |
+
z-index: 1;
|
927 |
+
}
|
928 |
+
/*Clear Float*/
|
929 |
+
.premium-testimonial-clear-float {
|
930 |
+
clear: both;
|
931 |
+
}
|
932 |
+
/*Upper Quote Style*/
|
933 |
+
.premium-testimonial-upper-quote {
|
934 |
+
position: absolute;
|
935 |
+
z-index: 1;
|
936 |
+
}
|
937 |
+
/*Lower Quote Style*/
|
938 |
+
.premium-testimonial-lower-quote{
|
939 |
+
position:absolute;
|
940 |
+
z-index: 1;
|
941 |
+
}
|
942 |
+
/*Author Info Container Div Style*/
|
943 |
+
.premium-testimonial-author-info {
|
944 |
+
display: block;
|
945 |
+
}
|
946 |
+
/**************** Premium Title ****************/
|
947 |
+
/***********************************************/
|
948 |
+
/*Title Container Div Style*/
|
949 |
+
.premium-title-container {
|
950 |
+
position: relative;
|
951 |
+
width: 100%;
|
952 |
+
clear: both;
|
953 |
+
overflow: hidden;
|
954 |
+
}
|
955 |
+
/*Header Style*/
|
956 |
+
.premium-title-header {
|
957 |
+
margin: 0;
|
958 |
+
padding: 10px;
|
959 |
+
}
|
960 |
+
/*Style 2,3,6,7,8 Header*/
|
961 |
+
.premium-title-style1,
|
962 |
+
.premium-title-style2,
|
963 |
+
.premium-title-style5,
|
964 |
+
.premium-title-style6,
|
965 |
+
.premium-title-style7{
|
966 |
+
display: inline-block;
|
967 |
+
float: none;
|
968 |
+
}
|
969 |
+
/*Style 6 Header*/
|
970 |
+
.premium-title-style6{
|
971 |
+
position: relative;
|
972 |
+
}
|
973 |
+
/*Style 6 Trinagle*/
|
974 |
+
.premium-title-style6:before {
|
975 |
+
position: absolute;
|
976 |
+
left: 50%;
|
977 |
+
bottom: 0;
|
978 |
+
margin-left: -2px;
|
979 |
+
content: '';
|
980 |
+
border: 3px solid transparent;
|
981 |
+
}
|
982 |
+
/*Style 7 Strip Container*/
|
983 |
+
.premium-title-style7-strip{
|
984 |
+
display: block;
|
985 |
+
margin: 0;
|
986 |
+
float: none;
|
987 |
+
clear: both;
|
988 |
+
}
|
989 |
+
/*Strip Style*/
|
990 |
+
.premium-title-style7-strip:before{
|
991 |
+
display: block;
|
992 |
+
position: relative;
|
993 |
+
margin-left: auto;
|
994 |
+
margin-right: auto;
|
995 |
+
content: '';
|
996 |
+
float: none;
|
997 |
+
}
|
998 |
+
/**************** Premium Video Box ****************/
|
999 |
+
/***************************************************/
|
1000 |
+
/*Image Container Div Style*/
|
1001 |
+
.premium-video-box-image-container {
|
1002 |
+
position: relative;
|
1003 |
+
cursor: pointer;
|
1004 |
+
}
|
1005 |
+
/*Image Style*/
|
1006 |
+
.premium-video-box-image-container img {
|
1007 |
+
width: 100%;
|
1008 |
+
}
|
1009 |
+
/*Play Icon Container Div Style*/
|
1010 |
+
.premium-video-box-play-icon-container {
|
1011 |
+
position: absolute;
|
1012 |
+
z-index: 1;
|
1013 |
+
top: 50%;
|
1014 |
+
left: 50%;
|
1015 |
+
cursor: pointer;
|
1016 |
+
transform: translate(-50%,-50%);
|
1017 |
+
}
|
1018 |
+
.premium-video-box-description-container {
|
1019 |
+
position: absolute;
|
1020 |
+
z-index: 1;
|
1021 |
+
left: 50%;
|
1022 |
+
width: 100%;
|
1023 |
+
text-align: center;
|
1024 |
+
cursor: pointer;
|
1025 |
+
transform: translate(-50%,-50%);
|
1026 |
+
}
|
1027 |
+
/*Play Icon Style*/
|
1028 |
+
.premium-video-box-play-icon{
|
1029 |
+
padding: 15px;
|
1030 |
+
transform: translateX(4%);
|
1031 |
+
-webkit-transition: all 0.3s ease-in-out;
|
1032 |
+
-moz-transition: all 0.3s ease-in-out;
|
1033 |
+
-o-transition: all 0.3s ease-in-out;
|
1034 |
+
-ms-transition: all 0.3s ease-in-out;
|
1035 |
+
transition: all 0.3s ease-in-out;
|
1036 |
+
}
|
1037 |
+
/*Video Container Div Style*/
|
1038 |
+
.premium-video-box-video-container{
|
1039 |
+
position: absolute;
|
1040 |
+
top: 0;
|
1041 |
+
left: 0;
|
1042 |
+
z-index: 2;
|
1043 |
+
width: 100%;
|
1044 |
+
height: 100%;
|
1045 |
+
opacity:0;
|
1046 |
+
visibility: hidden;
|
1047 |
+
-webkit-transition: opacity 0.8s ease-in-out;
|
1048 |
+
-moz-transition: opacity 0.8s ease-in-out;
|
1049 |
+
-o-transition: opacity 0.8s ease-in-out;
|
1050 |
+
-ms-transition: opacity 0.8s ease-in-out;
|
1051 |
+
transition: opacity 0.8s ease-in-out;
|
1052 |
+
}
|
1053 |
+
/*Video Iframe Style*/
|
1054 |
+
.premium-video-box-video-container iframe{
|
1055 |
+
width: 100%;
|
1056 |
+
height: 100%;
|
1057 |
+
}
|
1058 |
+
/**************** Premium Blog *****************/
|
1059 |
+
/***********************************************/
|
1060 |
+
.premium-blog-thumb-effect-wrapper {
|
1061 |
+
position: relative;
|
1062 |
+
overflow: hidden;
|
1063 |
+
}
|
1064 |
+
.premium-blog-thumbnail-container {
|
1065 |
+
overflow: hidden;
|
1066 |
+
}
|
1067 |
+
/*Thumbnail Img*/
|
1068 |
+
.premium-blog-thumbnail-container img,
|
1069 |
+
.premium-blog-thumbnail-container .below-entry-meta{
|
1070 |
+
width: 100%;
|
1071 |
+
height: 100%;
|
1072 |
+
margin: 0 !important;
|
1073 |
+
transform: scale(1.2);
|
1074 |
+
-webkit-transition: all 0.4s ease-in-out;
|
1075 |
+
-moz-transition: all 0.4s ease-in-out;
|
1076 |
+
-ms-transition: all 0.4s ease-in-out;
|
1077 |
+
-o-transition: all 0.4s ease-in-out;
|
1078 |
+
transition: all 0.4s ease-in-out;
|
1079 |
+
}
|
1080 |
+
/*Thumbnail Container Hover*/
|
1081 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-zoomin-effect img {
|
1082 |
+
transform: scale(1.3);
|
1083 |
+
}
|
1084 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-zoomout-effect img {
|
1085 |
+
transform: scale(1.1);
|
1086 |
+
}
|
1087 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-scale-effect img {
|
1088 |
+
transform: scale(1.3) rotate(5deg);
|
1089 |
+
}
|
1090 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-gray-effect img {
|
1091 |
+
filter: grayscale(100%);
|
1092 |
+
}
|
1093 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-blur-effect img {
|
1094 |
+
filter: blur(3px);
|
1095 |
+
}
|
1096 |
+
.premium-blog-thumbnail-container:before, .premium-blog-thumbnail-container:after {
|
1097 |
+
position: absolute;
|
1098 |
+
content: '';
|
1099 |
+
z-index: 1;
|
1100 |
+
top: 50%;
|
1101 |
+
left: 50%;
|
1102 |
+
opacity: 0;
|
1103 |
+
-webkit-transform: translate(-50%,-50%);
|
1104 |
+
transform: translate(-50%,-50%);
|
1105 |
+
-webkit-transition: all 0.4s linear 0s;
|
1106 |
+
-moz-transition: all 0.4s linear 0s;
|
1107 |
+
-ms-transition: all 0.4s linear 0s;
|
1108 |
+
-o-transition: all 0.4s linear 0s;
|
1109 |
+
transition: all 0.4s linear 0s;
|
1110 |
+
height: 1px;
|
1111 |
+
width: 100%;
|
1112 |
+
}
|
1113 |
+
.premium-blog-thumbnail-container:before {
|
1114 |
+
width: 1px;
|
1115 |
+
height: 100%;
|
1116 |
+
}
|
1117 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-thumbnail-container:after {
|
1118 |
+
width: 20px;
|
1119 |
+
opacity: 1;
|
1120 |
+
}
|
1121 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-thumbnail-container:before{
|
1122 |
+
height: 20px;
|
1123 |
+
opacity: 1;
|
1124 |
+
}
|
1125 |
+
.premium-blog-diagonal-container {
|
1126 |
+
position: absolute;
|
1127 |
+
top: 0;
|
1128 |
+
left: 0;
|
1129 |
+
width: 100%;
|
1130 |
+
height: 100%;
|
1131 |
+
}
|
1132 |
+
.premium-blog-diagonal-effect:before {
|
1133 |
+
position: absolute;
|
1134 |
+
top: 0px;
|
1135 |
+
left: 0px;
|
1136 |
+
width: 100%;
|
1137 |
+
height: 100%;
|
1138 |
+
content: " ";
|
1139 |
+
z-index: 1;
|
1140 |
+
background: rgba(255,255,255,0.2);
|
1141 |
+
-webkit-transform: scale3d(1.9,1.4,1) rotate3d(0,0,1,45deg) translate3d(0,-150%,0);
|
1142 |
+
-moz-transform: scale3d(1.9,1.4,1) rotate3d(0,0,1,45deg) translate3d(0,-150%,0);
|
1143 |
+
-o-transform: scale3d(1.9,1.4,1) rotate3d(0,0,1,45deg) translate3d(0,-150%,0);
|
1144 |
+
-ms-transform: scale3d(1.9,1.4,1) rotate3d(0,0,1,45deg) translate3d(0,-150%,0);
|
1145 |
+
transform: scale3d(1.9,1.4,1) rotate3d(0,0,1,45deg) translate3d(0,-150%,0);
|
1146 |
+
-webkit-transition: all 0.3s linear 0s;
|
1147 |
+
-moz-transition: all 0.3s linear 0s;
|
1148 |
+
-o-transition: all 0.3s linear 0s;
|
1149 |
+
-ms-transition: all 0.3s linear 0s;
|
1150 |
+
transition: all 0.3s linear 0s;
|
1151 |
+
}
|
1152 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-diagonal-effect:before {
|
1153 |
+
-webkit-transform: scale3d(1.9,1.4,1) rotate3d(0,0,1,45deg) translate3d(0,150%,0);
|
1154 |
+
-moz-transform: scale3d(1.9,1.4,1) rotate3d(0,0,1,45deg) translate3d(0,150%,0);
|
1155 |
+
-o-transform: scale3d(1.9,1.4,1) rotate3d(0,0,1,45deg) translate3d(0,150%,0);
|
1156 |
+
-ms-transform: scale3d(1.9,1.4,1) rotate3d(0,0,1,45deg) translate3d(0,150%,0);
|
1157 |
+
transform: scale3d(1.9,1.4,1) rotate3d(0,0,1,45deg) translate3d(0,150%,0);
|
1158 |
+
}
|
1159 |
+
.premium-blog-framed-effect {
|
1160 |
+
position: absolute;
|
1161 |
+
width: calc(100% - 30px);
|
1162 |
+
height: calc(100% - 30px);
|
1163 |
+
top: 15px;
|
1164 |
+
left: 15px;
|
1165 |
+
opacity: 0;
|
1166 |
+
transform: scale(0.3);
|
1167 |
+
-webkit-transition: all 0.3s linear 0s;
|
1168 |
+
-moz-transition: all 0.3s linear 0s;
|
1169 |
+
-o-transition: all 0.3s linear 0s;
|
1170 |
+
-ms-transition: all 0.3s linear 0s;
|
1171 |
+
transition: all 0.3s linear 0s;
|
1172 |
+
}
|
1173 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-framed-effect {
|
1174 |
+
opacity: 0.99;
|
1175 |
+
transform: scale(1);
|
1176 |
+
}
|
1177 |
+
.premium-blog-bordered-effect {
|
1178 |
+
position: absolute;
|
1179 |
+
top: 0;
|
1180 |
+
left: 0;
|
1181 |
+
width: 100%;
|
1182 |
+
height: 100%;
|
1183 |
+
opacity: 0;
|
1184 |
+
padding: 15px;
|
1185 |
+
-webkit-transition: all 0.3s linear 0s;
|
1186 |
+
-moz-transition: all 0.3s linear 0s;
|
1187 |
+
-o-transition: all 0.3s linear 0s;
|
1188 |
+
-ms-transition: all 0.3s linear 0s;
|
1189 |
+
transition: all 0.3s linear 0s;
|
1190 |
+
}
|
1191 |
+
.premium-blog-bordered-border-container {
|
1192 |
+
width: 100%;
|
1193 |
+
height: 100%;
|
1194 |
+
border: 2px solid;
|
1195 |
+
-webkit-transform: scale(0,1);
|
1196 |
+
transform: scale(0,1);
|
1197 |
+
-webkit-transform-origin: 0 0;
|
1198 |
+
transform-origin: 0 0;
|
1199 |
+
-webkit-transition: all 0.3s linear 0s;
|
1200 |
+
-moz-transition: all 0.3s linear 0s;
|
1201 |
+
-o-transition: all 0.3s linear 0s;
|
1202 |
+
-ms-transition: all 0.3s linear 0s;
|
1203 |
+
transition: all 0.3s linear 0s;
|
1204 |
+
}
|
1205 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-bordered-effect {
|
1206 |
+
opacity: 0.99;
|
1207 |
+
}
|
1208 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-bordered-effect .premium-blog-bordered-border-container {
|
1209 |
+
-webkit-transform: scale(1,1);
|
1210 |
+
transform: scale(1,1);
|
1211 |
+
}
|
1212 |
+
.premium-blog-squares-effect,
|
1213 |
+
.premium-blog-squares-square-container{
|
1214 |
+
position: absolute;
|
1215 |
+
top: 0;
|
1216 |
+
left: 0;
|
1217 |
+
width: 100%;
|
1218 |
+
height: 100%;
|
1219 |
+
}
|
1220 |
+
.premium-blog-squares-effect:before,
|
1221 |
+
.premium-blog-squares-effect:after,
|
1222 |
+
.premium-blog-squares-square-container:before,
|
1223 |
+
.premium-blog-squares-square-container:after{
|
1224 |
+
position: absolute;
|
1225 |
+
content: '';
|
1226 |
+
top: 0;
|
1227 |
+
left: 0;
|
1228 |
+
width: 50%;
|
1229 |
+
height: 50%;
|
1230 |
+
-webkit-transform: translate(-100%,-100%);
|
1231 |
+
transform: translate(-100%,-100%);
|
1232 |
+
opacity: 0.99;
|
1233 |
+
-webkit-transition: all 0.3s linear 0s;
|
1234 |
+
-moz-transition: all 0.3s linear 0s;
|
1235 |
+
-o-transition: all 0.3s linear 0s;
|
1236 |
+
-ms-transition: all 0.3s linear 0s;
|
1237 |
+
transition: all 0.3s linear 0s;
|
1238 |
+
}
|
1239 |
+
.premium-blog-squares-effect:after {
|
1240 |
+
-webkit-transform: translate(200%,200%);
|
1241 |
+
transform: translate(200%,200%);
|
1242 |
+
}
|
1243 |
+
.premium-blog-squares-square-container:before{
|
1244 |
+
opacity: 0.99;
|
1245 |
+
-webkit-transform: translate(-100%,200%);
|
1246 |
+
transform: translate(-100%,200%);
|
1247 |
+
}
|
1248 |
+
.premium-blog-squares-square-container:after {
|
1249 |
+
opacity: 0.99;
|
1250 |
+
-webkit-transform: translate(200%,-100%);
|
1251 |
+
transform: translate(200%,-100%);
|
1252 |
+
}
|
1253 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-squares-effect:before {
|
1254 |
+
-webkit-transform: translate(0,0.8%);
|
1255 |
+
transform: translate(0,0.8%);
|
1256 |
+
}
|
1257 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-squares-effect:after {
|
1258 |
+
-webkit-transform: translate(100%,100%);
|
1259 |
+
transform: translate(100%,100%);
|
1260 |
+
}
|
1261 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-squares-square-container:before{
|
1262 |
+
-webkit-transform: translate(0,100%);
|
1263 |
+
transform: translate(0,100%);
|
1264 |
+
}
|
1265 |
+
.premium-blog-thumb-effect-wrapper:hover .premium-blog-squares-square-container:after{
|
1266 |
+
-webkit-transform: translate(100%,0.8%);
|
1267 |
+
transform: translate(100%,0.8%);
|
1268 |
+
}
|
1269 |
+
/*Content Wrapper*/
|
1270 |
+
.premium-blog-content-wrapper {
|
1271 |
+
position: relative;
|
1272 |
+
z-index: 2;
|
1273 |
+
top: -50px;
|
1274 |
+
margin: 0px 30px 20px;
|
1275 |
+
clear: both;
|
1276 |
+
padding: 30px;
|
1277 |
+
background: #ddd;
|
1278 |
+
}
|
1279 |
+
/*Post Format Container*/
|
1280 |
+
.premium-blog-format-container {
|
1281 |
+
float: left;
|
1282 |
+
background: #eee;
|
1283 |
+
width: 55px;
|
1284 |
+
height: 55px;
|
1285 |
+
font-size: 25px;
|
1286 |
+
margin-right: 20px;
|
1287 |
+
text-align: center;
|
1288 |
+
-webkit-transition: all 0.3s ease-in-out;
|
1289 |
+
-moz-transition: all 0.3s ease-in-out;
|
1290 |
+
-ms-transition: all 0.3s ease-in-out;
|
1291 |
+
-o-transition: all 0.3s ease-in-out;
|
1292 |
+
transition: all 0.3s ease-in-out;
|
1293 |
+
}
|
1294 |
+
/*Post Format Icon*/
|
1295 |
+
.premium-blog-format-container i {
|
1296 |
+
vertical-align: bottom;
|
1297 |
+
}
|
1298 |
+
.premium-blog-entry-title {
|
1299 |
+
display: inline;
|
1300 |
+
margin-bottom: 0px;
|
1301 |
+
}
|
1302 |
+
.premium-blog-entry-meta {
|
1303 |
+
margin-bottom: 8px;
|
1304 |
+
}
|
1305 |
+
.premium-blog-entry-meta i{
|
1306 |
+
margin-right: 3px;
|
1307 |
+
}
|
1308 |
+
/*Post Meta Data Container*/
|
1309 |
+
.premium-blog-meta-data {
|
1310 |
+
margin-right : 8px;
|
1311 |
+
}
|
1312 |
+
/*Post Content Container*/
|
1313 |
+
.premium-blog-post-content {
|
1314 |
+
border-top: 1px solid;
|
1315 |
+
padding-top: 14px;
|
1316 |
+
}
|
1317 |
+
.premium-blog-entry-meta,
|
1318 |
+
.premium-blog-post-content {
|
1319 |
+
margin-top: 0;
|
1320 |
+
margin-left: 75px;
|
1321 |
+
}
|
1322 |
+
.premium-blog-post-tags-container {
|
1323 |
+
margin-top: 8px;
|
1324 |
+
margin-left: 75px;
|
1325 |
+
}
|
1326 |
+
.premium-blog-entry-title a,
|
1327 |
+
.premium-blog-meta-data a,
|
1328 |
+
.premium-blog-post-tags a{
|
1329 |
+
-webkit-transition: color 0.3s ease-in-out;
|
1330 |
+
-moz-transition: color 0.3s ease-in-out;
|
1331 |
+
-ms-transition: color 0.3s ease-in-out;
|
1332 |
+
-o-transition: color 0.3s ease-in-out;
|
1333 |
+
transition: color 0.3s ease-in-out;
|
1334 |
+
}
|
1335 |
+
.premium-blog-pagination-container {
|
1336 |
+
margin-top: -30px;
|
1337 |
+
text-align: right;
|
1338 |
+
}
|
1339 |
+
.premium-blog-pagination-container ul {
|
1340 |
+
list-style: none;
|
1341 |
+
margin: 0;
|
1342 |
+
padding: 0;
|
1343 |
+
}
|
1344 |
+
.premium-blog-pagination-container li {
|
1345 |
+
display: inline;
|
1346 |
+
}
|
1347 |
+
.premium-blog-pagination-container li a,
|
1348 |
+
.premium-blog-pagination-container li span{
|
1349 |
+
display: inline;
|
1350 |
+
margin-right: 10px;
|
1351 |
+
margin-bottom: 5px;
|
1352 |
+
padding: 3px 7px;
|
1353 |
+
border: 1px solid #E3E3E3;
|
1354 |
+
font-size: 16px;
|
1355 |
+
line-height: 20px;
|
1356 |
+
}
|
1357 |
+
.premium-blog-pagination-container li .prev,
|
1358 |
+
.premium-blog-pagination-container li .next {
|
1359 |
+
border: none;
|
1360 |
+
}
|
1361 |
+
/**************** Premium Person ******************/
|
1362 |
+
/**************************************************/
|
1363 |
+
.premium-person-container {
|
1364 |
+
position: relative;
|
1365 |
+
overflow: hidden;
|
1366 |
+
}
|
1367 |
+
.premium-person-image-container {
|
1368 |
+
text-align: center;
|
1369 |
+
}
|
1370 |
+
.premium-person-zoomin-effect:hover .premium-person-image-container img{
|
1371 |
+
-webkit-transform: scale(1.3);
|
1372 |
+
-moz-transform: scale(1.3);
|
1373 |
+
-ms-transform: scale(1.3);
|
1374 |
+
-o-transform: scale(1.3);
|
1375 |
+
transform: scale(1.3);
|
1376 |
+
}
|
1377 |
+
.premium-person-zoomout-effect:hover .premium-person-image-container img{
|
1378 |
+
-webkit-transform: scale(1.1);
|
1379 |
+
-moz-transform: scale(1.1);
|
1380 |
+
-ms-transform: scale(1.1);
|
1381 |
+
-o-transform: scale(1.1);
|
1382 |
+
transform: scale(1.1);
|
1383 |
+
}
|
1384 |
+
.premium-person-scale-effect:hover .premium-person-image-container img {
|
1385 |
+
-webkit-transform: scale(1.3) rotate(5deg);
|
1386 |
+
-moz-transform: scale(1.3) rotate(5deg);
|
1387 |
+
-ms-transform: scale(1.3) rotate(5deg);
|
1388 |
+
-o-transform: scale(1.3) rotate(5deg);
|
1389 |
+
transform: scale(1.3) rotate(5deg);
|
1390 |
+
|
1391 |
+
}
|
1392 |
+
.premium-person-grayscale-effect:hover .premium-person-image-container img {
|
1393 |
+
-webkit-filter: grayscale(100%);
|
1394 |
+
-moz-filter: grayscale(100%);
|
1395 |
+
-ms-filter: grayscale(100%);
|
1396 |
+
-o-filter: grayscale(100%);
|
1397 |
+
filter: grayscale(100%);
|
1398 |
+
}
|
1399 |
+
.premium-person-blur-effect:hover .premium-person-image-container img {
|
1400 |
+
-webkit-filter: blur(3px);
|
1401 |
+
-moz-filter: blur(3px);
|
1402 |
+
-ms-filter: blur(3px);
|
1403 |
+
-o-filter: blur(3px);
|
1404 |
+
filter: blur(3px);
|
1405 |
+
}
|
1406 |
+
.premium-person-container .premium-person-image-container img {
|
1407 |
+
width: 100%;
|
1408 |
+
height: 100%;
|
1409 |
+
-webkit-transition: all 0.5s ease-in-out;
|
1410 |
+
-moz-transition: all 0.5s ease-in-out;
|
1411 |
+
-ms-transition: all 0.5s ease-in-out;
|
1412 |
+
-o-transition: all 0.5s ease-in-out;
|
1413 |
+
transition: all 0.5s ease-in-out;
|
1414 |
+
transform: scale(1.2);
|
1415 |
+
}
|
1416 |
+
.premium-person-info {
|
1417 |
+
position: absolute;
|
1418 |
+
top: auto;
|
1419 |
+
right: 0;
|
1420 |
+
left: 0;
|
1421 |
+
width: 100%;
|
1422 |
+
-webkit-transition: all 500ms ease 0s;
|
1423 |
+
-moz-transition: all 500ms ease 0s;
|
1424 |
+
-ms-transition: all 500ms ease 0s;
|
1425 |
+
-o-transition: all 500ms ease 0s;
|
1426 |
+
transition: all 500ms ease 0s;
|
1427 |
+
-webkit-transform: translate3d(0,100%,0);
|
1428 |
+
-moz-transform: translate3d(0,100%,0);
|
1429 |
+
-ms-transform: translate3d(0,100%,0);
|
1430 |
+
-o-transform: translate3d(0,100%,0);
|
1431 |
+
transform: translate3d(0,100%,0);
|
1432 |
+
}
|
1433 |
+
.premium-person-container:hover .premium-person-info{
|
1434 |
+
-webkit-transform: translate3d(0,0,0);
|
1435 |
+
-moz-transform: translate3d(0,0,0);
|
1436 |
+
-ms-transform: translate3d(0,0,0);
|
1437 |
+
-o-transform: translate3d(0,0,0);
|
1438 |
+
transform: translate3d(0,0,0);
|
1439 |
+
bottom: -1px !important;
|
1440 |
+
}
|
1441 |
+
.premium-person-info-container {
|
1442 |
+
padding: 30px 15px;
|
1443 |
+
}
|
1444 |
+
.premium-person-name {
|
1445 |
+
margin: 0 0 5px;
|
1446 |
+
font-weight: 700;
|
1447 |
+
}
|
1448 |
+
.premium-person-title {
|
1449 |
+
margin: 0 0 20px;
|
1450 |
+
padding: 0;
|
1451 |
+
}
|
1452 |
+
.premium-person-content {
|
1453 |
+
margin: 0 0 30px;
|
1454 |
+
}
|
1455 |
+
/*Override Theme List Margin*/
|
1456 |
+
.premium-person-social-list {
|
1457 |
+
margin: 0px !important;
|
1458 |
+
}
|
1459 |
+
.premium-person-social-list .premium-person-list-item {
|
1460 |
+
display: inline;
|
1461 |
+
list-style: none;
|
1462 |
+
}
|
1463 |
+
.premium-person-social-list li,
|
1464 |
+
.premium-person-social-list li i{
|
1465 |
+
position: relative;
|
1466 |
+
bottom: 0px;
|
1467 |
+
-webkit-transition: all 0.2s ease-in-out;
|
1468 |
+
-moz-transition: all 0.2s ease-in-out;
|
1469 |
+
-ms-transition: all 0.2x ease-in-out;
|
1470 |
+
-o-transition: all 0.2s ease-in-out;
|
1471 |
+
transition: all 0.2s ease-in-out;
|
1472 |
+
}
|
1473 |
+
.premium-person-social-list li:hover {
|
1474 |
+
bottom: 5px;
|
1475 |
+
}
|
1476 |
+
.premium-person-social-list li:hover a{
|
1477 |
+
box-shadow: none;
|
1478 |
+
}
|
1479 |
+
.premium-person-social-list li a:focus{
|
1480 |
+
box-shadow: none;
|
1481 |
+
outline: none;
|
1482 |
+
}
|
1483 |
+
.premium-person-social-list li i {
|
1484 |
+
font-size: 18px;
|
1485 |
+
margin: 0 5px;
|
1486 |
+
}
|
1487 |
+
/**************** Premium Dual Header ******************/
|
1488 |
+
/*******************************************************/
|
1489 |
+
.premium-dual-header-container .premium-dual-header-first-header,
|
1490 |
+
.premium-dual-header-container .premium-dual-header-second-header {
|
1491 |
+
display: inline;
|
1492 |
+
}
|
1493 |
+
.premium-dual-header-first-clip,
|
1494 |
+
.premium-dual-header-second-clip {
|
1495 |
+
-webkit-text-fill-color: transparent;
|
1496 |
+
-webkit-background-clip: text;
|
1497 |
+
}
|
assets/css/slick-theme.css
ADDED
@@ -0,0 +1,204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@charset 'UTF-8';
|
2 |
+
/* Slider */
|
3 |
+
.slick-loading .slick-list
|
4 |
+
{
|
5 |
+
background: #fff url('./ajax-loader.gif') center center no-repeat;
|
6 |
+
}
|
7 |
+
|
8 |
+
/* Icons */
|
9 |
+
@font-face
|
10 |
+
{
|
11 |
+
font-family: 'slick';
|
12 |
+
font-weight: normal;
|
13 |
+
font-style: normal;
|
14 |
+
|
15 |
+
src: url('./fonts/slick.eot');
|
16 |
+
src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg');
|
17 |
+
}
|
18 |
+
/* Arrows */
|
19 |
+
.slick-prev,
|
20 |
+
.slick-next
|
21 |
+
{
|
22 |
+
font-size: 0;
|
23 |
+
line-height: 0;
|
24 |
+
|
25 |
+
position: absolute;
|
26 |
+
top: 50%;
|
27 |
+
|
28 |
+
display: block;
|
29 |
+
|
30 |
+
width: 20px;
|
31 |
+
height: 20px;
|
32 |
+
padding: 0;
|
33 |
+
-webkit-transform: translate(0, -50%);
|
34 |
+
-ms-transform: translate(0, -50%);
|
35 |
+
transform: translate(0, -50%);
|
36 |
+
|
37 |
+
cursor: pointer;
|
38 |
+
|
39 |
+
color: transparent;
|
40 |
+
border: none;
|
41 |
+
outline: none;
|
42 |
+
background: transparent;
|
43 |
+
}
|
44 |
+
.slick-prev:hover,
|
45 |
+
.slick-prev:focus,
|
46 |
+
.slick-next:hover,
|
47 |
+
.slick-next:focus
|
48 |
+
{
|
49 |
+
color: transparent;
|
50 |
+
outline: none;
|
51 |
+
background: transparent;
|
52 |
+
}
|
53 |
+
.slick-prev:hover:before,
|
54 |
+
.slick-prev:focus:before,
|
55 |
+
.slick-next:hover:before,
|
56 |
+
.slick-next:focus:before
|
57 |
+
{
|
58 |
+
opacity: 1;
|
59 |
+
}
|
60 |
+
.slick-prev.slick-disabled:before,
|
61 |
+
.slick-next.slick-disabled:before
|
62 |
+
{
|
63 |
+
opacity: .25;
|
64 |
+
}
|
65 |
+
|
66 |
+
.slick-prev:before,
|
67 |
+
.slick-next:before
|
68 |
+
{
|
69 |
+
font-family: 'slick';
|
70 |
+
font-size: 20px;
|
71 |
+
line-height: 1;
|
72 |
+
|
73 |
+
opacity: .75;
|
74 |
+
color: white;
|
75 |
+
|
76 |
+
-webkit-font-smoothing: antialiased;
|
77 |
+
-moz-osx-font-smoothing: grayscale;
|
78 |
+
}
|
79 |
+
|
80 |
+
.slick-prev
|
81 |
+
{
|
82 |
+
left: -25px;
|
83 |
+
}
|
84 |
+
[dir='rtl'] .slick-prev
|
85 |
+
{
|
86 |
+
right: -25px;
|
87 |
+
left: auto;
|
88 |
+
}
|
89 |
+
.slick-prev:before
|
90 |
+
{
|
91 |
+
content: '←';
|
92 |
+
}
|
93 |
+
[dir='rtl'] .slick-prev:before
|
94 |
+
{
|
95 |
+
content: '→';
|
96 |
+
}
|
97 |
+
|
98 |
+
.slick-next
|
99 |
+
{
|
100 |
+
right: -25px;
|
101 |
+
}
|
102 |
+
[dir='rtl'] .slick-next
|
103 |
+
{
|
104 |
+
right: auto;
|
105 |
+
left: -25px;
|
106 |
+
}
|
107 |
+
.slick-next:before
|
108 |
+
{
|
109 |
+
content: '→';
|
110 |
+
}
|
111 |
+
[dir='rtl'] .slick-next:before
|
112 |
+
{
|
113 |
+
content: '←';
|
114 |
+
}
|
115 |
+
|
116 |
+
/* Dots */
|
117 |
+
.slick-dotted.slick-slider
|
118 |
+
{
|
119 |
+
margin-bottom: 30px;
|
120 |
+
}
|
121 |
+
|
122 |
+
.slick-dots
|
123 |
+
{
|
124 |
+
position: absolute;
|
125 |
+
bottom: -25px;
|
126 |
+
|
127 |
+
display: block;
|
128 |
+
|
129 |
+
width: 100%;
|
130 |
+
padding: 0;
|
131 |
+
margin: 0;
|
132 |
+
|
133 |
+
list-style: none;
|
134 |
+
|
135 |
+
text-align: center;
|
136 |
+
}
|
137 |
+
.slick-dots li
|
138 |
+
{
|
139 |
+
position: relative;
|
140 |
+
|
141 |
+
display: inline-block;
|
142 |
+
|
143 |
+
width: 20px;
|
144 |
+
height: 20px;
|
145 |
+
margin: 0 5px;
|
146 |
+
padding: 0;
|
147 |
+
|
148 |
+
cursor: pointer;
|
149 |
+
}
|
150 |
+
.slick-dots li button
|
151 |
+
{
|
152 |
+
font-size: 0;
|
153 |
+
line-height: 0;
|
154 |
+
|
155 |
+
display: block;
|
156 |
+
|
157 |
+
width: 20px;
|
158 |
+
height: 20px;
|
159 |
+
padding: 5px;
|
160 |
+
|
161 |
+
cursor: pointer;
|
162 |
+
|
163 |
+
color: transparent;
|
164 |
+
border: 0;
|
165 |
+
outline: none;
|
166 |
+
background: transparent;
|
167 |
+
}
|
168 |
+
.slick-dots li button:hover,
|
169 |
+
.slick-dots li button:focus
|
170 |
+
{
|
171 |
+
outline: none;
|
172 |
+
}
|
173 |
+
.slick-dots li button:hover:before,
|
174 |
+
.slick-dots li button:focus:before
|
175 |
+
{
|
176 |
+
opacity: 1;
|
177 |
+
}
|
178 |
+
.slick-dots li button:before
|
179 |
+
{
|
180 |
+
font-family: 'slick';
|
181 |
+
font-size: 6px;
|
182 |
+
line-height: 20px;
|
183 |
+
|
184 |
+
position: absolute;
|
185 |
+
top: 0;
|
186 |
+
left: 0;
|
187 |
+
|
188 |
+
width: 20px;
|
189 |
+
height: 20px;
|
190 |
+
|
191 |
+
content: '•';
|
192 |
+
text-align: center;
|
193 |
+
|
194 |
+
opacity: .25;
|
195 |
+
color: black;
|
196 |
+
|
197 |
+
-webkit-font-smoothing: antialiased;
|
198 |
+
-moz-osx-font-smoothing: grayscale;
|
199 |
+
}
|
200 |
+
.slick-dots li.slick-active button:before
|
201 |
+
{
|
202 |
+
opacity: .75;
|
203 |
+
color: black;
|
204 |
+
}
|
assets/css/slick.css
ADDED
@@ -0,0 +1,117 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Slider */
|
2 |
+
.slick-slider
|
3 |
+
{
|
4 |
+
position: relative;
|
5 |
+
|
6 |
+
display: block;
|
7 |
+
box-sizing: border-box;
|
8 |
+
|
9 |
+
-webkit-user-select: none;
|
10 |
+
-moz-user-select: none;
|
11 |
+
-ms-user-select: none;
|
12 |
+
user-select: none;
|
13 |
+
|
14 |
+
-webkit-touch-callout: none;
|
15 |
+
-khtml-user-select: none;
|
16 |
+
-ms-touch-action: pan-y;
|
17 |
+
touch-action: pan-y;
|
18 |
+
-webkit-tap-highlight-color: transparent;
|
19 |
+
}
|
20 |
+
|
21 |
+
.slick-list
|
22 |
+
{
|
23 |
+
position: relative;
|
24 |
+
|
25 |
+
display: block;
|
26 |
+
overflow: hidden;
|
27 |
+
|
28 |
+
margin: 0;
|
29 |
+
padding: 0;
|
30 |
+
}
|
31 |
+
.slick-list:focus
|
32 |
+
{
|
33 |
+
outline: none;
|
34 |
+
}
|
35 |
+
.slick-list.dragging
|
36 |
+
{
|
37 |
+
cursor: pointer;
|
38 |
+
cursor: hand;
|
39 |
+
}
|
40 |
+
|
41 |
+
.slick-slider .slick-track,
|
42 |
+
.slick-slider .slick-list
|
43 |
+
{
|
44 |
+
-webkit-transform: translate3d(0, 0, 0);
|
45 |
+
-moz-transform: translate3d(0, 0, 0);
|
46 |
+
-ms-transform: translate3d(0, 0, 0);
|
47 |
+
-o-transform: translate3d(0, 0, 0);
|
48 |
+
transform: translate3d(0, 0, 0);
|
49 |
+
}
|
50 |
+
|
51 |
+
.slick-track
|
52 |
+
{
|
53 |
+
position: relative;
|
54 |
+
top: 0;
|
55 |
+
left: 0;
|
56 |
+
|
57 |
+
display: block;
|
58 |
+
}
|
59 |
+
.slick-track:before,
|
60 |
+
.slick-track:after
|
61 |
+
{
|
62 |
+
display: table;
|
63 |
+
|
64 |
+
content: '';
|
65 |
+
}
|
66 |
+
.slick-track:after
|
67 |
+
{
|
68 |
+
clear: both;
|
69 |
+
}
|
70 |
+
.slick-loading .slick-track
|
71 |
+
{
|
72 |
+
visibility: hidden;
|
73 |
+
}
|
74 |
+
|
75 |
+
.slick-slide
|
76 |
+
{
|
77 |
+
display: none;
|
78 |
+
float: left;
|
79 |
+
|
80 |
+
height: 100%;
|
81 |
+
min-height: 1px;
|
82 |
+
}
|
83 |
+
[dir='rtl'] .slick-slide
|
84 |
+
{
|
85 |
+
float: right;
|
86 |
+
}
|
87 |
+
.slick-slide img
|
88 |
+
{
|
89 |
+
display: block;
|
90 |
+
}
|
91 |
+
.slick-slide.slick-loading img
|
92 |
+
{
|
93 |
+
display: none;
|
94 |
+
}
|
95 |
+
.slick-slide.dragging img
|
96 |
+
{
|
97 |
+
pointer-events: none;
|
98 |
+
}
|
99 |
+
.slick-initialized .slick-slide
|
100 |
+
{
|
101 |
+
display: block;
|
102 |
+
}
|
103 |
+
.slick-loading .slick-slide
|
104 |
+
{
|
105 |
+
visibility: hidden;
|
106 |
+
}
|
107 |
+
.slick-vertical .slick-slide
|
108 |
+
{
|
109 |
+
display: block;
|
110 |
+
|
111 |
+
height: auto;
|
112 |
+
|
113 |
+
border: 1px solid transparent;
|
114 |
+
}
|
115 |
+
.slick-arrow.slick-hidden {
|
116 |
+
display: none;
|
117 |
+
}
|
assets/js/lib/Vticker.js
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*! vTicker 1.21 http://richhollis.github.com/vticker/ | http://richhollis.github.com/vticker/license/ | based on Jubgits vTicker http://www.jugbit.com/jquery-vticker-vertical-news-ticker/ */
|
2 |
+
(function(d){var g,c,f;g={speed:700,pause:4E3,showItems:1,mousePause:!0,height:0,animate:!0,margin:0,padding:0,startPaused:!1,autoAppend:!0};c={moveUp:function(a,b){return c.showNextItem(a,b,"up")},moveDown:function(a,b){return c.showNextItem(a,b,"down")},nextItemState:function(a,b){var e,c;c=a.element.children("ul");e=a.itemHeight;0<a.options.height&&(e=c.children("li:first").height());e+=a.options.margin+2*a.options.padding;return{height:e,options:a.options,el:a.element,obj:c,selector:"up"===b?
|
3 |
+
"li:first":"li:last",dir:b}},showNextItem:function(a,b,e){var d;d=c.nextItemState(a,e);d.el.trigger("vticker.beforeTick");e=d.obj.children(d.selector).clone(!0);"down"===d.dir&&d.obj.css("top","-"+d.height+"px").prepend(e);b&&b.animate?a.animating||c.animateNextItem(d,a):c.nonAnimatedNextItem(d);"up"===d.dir&&a.options.autoAppend&&e.appendTo(d.obj);return d.el.trigger("vticker.afterTick")},animateNextItem:function(a,b){b.animating=!0;return a.obj.animate("up"===a.dir?{top:"-="+a.height+"px"}:{top:0},
|
4 |
+
b.options.speed,function(){d(a.obj).children(a.selector).remove();d(a.obj).css("top","0px");return b.animating=!1})},nonAnimatedNextItem:function(a){a.obj.children(a.selector).remove();return a.obj.css("top","0px")},nextUsePause:function(){var a,b;b=d(this).data("state");a=b.options;if(!b.isPaused&&!c.hasSingleItem(b))return f.next.call(this,{animate:a.animate})},startInterval:function(){var a,b;b=d(this).data("state");a=b.options;return b.intervalId=setInterval(function(a){return function(){return c.nextUsePause.call(a)}}(this),
|
5 |
+
a.pause)},stopInterval:function(){var a;if(a=d(this).data("state"))return a.intervalId&&clearInterval(a.intervalId),a.intervalId=void 0},restartInterval:function(){c.stopInterval.call(this);return c.startInterval.call(this)},getState:function(a,b){var c;if(!(c=d(b).data("state")))throw Error("vTicker: No state available from "+a);return c},isAnimatingOrSingleItem:function(a){return a.animating||this.hasSingleItem(a)},hasMultipleItems:function(a){return 1<a.itemCount},hasSingleItem:function(a){return!c.hasMultipleItems(a)},
|
6 |
+
bindMousePausing:function(a){return function(a,e){return a.bind("mouseenter",function(){if(!e.isPaused)return e.pausedByCode=!0,c.stopInterval.call(this),f.pause.call(this,!0)}).bind("mouseleave",function(){if(!e.isPaused||e.pausedByCode)return e.pausedByCode=!1,f.pause.call(this,!1),c.startInterval.call(this)})}}(this),setItemLayout:function(a,b,c){var f;a.css({overflow:"hidden",position:"relative"}).children("ul").css({position:"relative",margin:0,padding:0}).children("li").css({margin:c.margin,
|
7 |
+
padding:c.padding});return isNaN(c.height)||0===c.height?(a.children("ul").children("li").each(function(){if(d(this).height()>b.itemHeight)return b.itemHeight=d(this).height()}),a.children("ul").children("li").each(function(){return d(this).height(b.itemHeight)}),f=c.margin+2*c.padding,a.height((b.itemHeight+f)*c.showItems+c.margin)):a.height(c.height)},defaultStateAttribs:function(a,b){return{itemCount:a.children("ul").children("li").length,itemHeight:0,itemMargin:0,element:a,animating:!1,options:b,
|
8 |
+
isPaused:b.startPaused,pausedByCode:!1}}};f={init:function(a){var b,e;d(this).data("state")&&f.stop.call(this);b=jQuery.extend({},g);a=d.extend(b,a);b=d(this);e=c.defaultStateAttribs(b,a);d(this).data("state",e);c.setItemLayout(b,e,a);a.startPaused||c.startInterval.call(this);if(a.mousePause)return c.bindMousePausing(b,e)},pause:function(a){var b;b=c.getState("pause",this);if(!c.hasMultipleItems(b))return!1;b.isPaused=a;b=b.element;if(a)return d(this).addClass("paused"),b.trigger("vticker.pause");
|
9 |
+
d(this).removeClass("paused");return b.trigger("vticker.resume")},next:function(a){var b;b=c.getState("next",this);if(c.isAnimatingOrSingleItem(b))return!1;c.restartInterval.call(this);return c.moveUp(b,a)},prev:function(a){var b;b=c.getState("prev",this);if(c.isAnimatingOrSingleItem(b))return!1;c.restartInterval.call(this);return c.moveDown(b,a)},stop:function(){c.getState("stop",this);return c.stopInterval.call(this)},remove:function(){var a;a=c.getState("remove",this);c.stopInterval.call(this);
|
10 |
+
a=a.element;a.unbind();return a.remove()}};return d.fn.vTicker=function(a){return f[a]?f[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!==typeof a&&a?d.error("Method "+a+" does not exist on jQuery.vTicker"):f.init.apply(this,arguments)}})(jQuery);
|
assets/js/lib/countUpmin.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(a,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e(require,exports,module):a.CountUp=e()}(this,function(a,e,n){var t=function(a,e,n,t,i,r){function o(a){a=a.toFixed(s.decimals),a+="";var e,n,t,i;if(e=a.split("."),n=e[0],t=e.length>1?s.options.decimal+e[1]:"",i=/(\d+)(\d{3})/,s.options.useGrouping)for(;i.test(n);)n=n.replace(i,"$1"+s.options.separator+"$2");return s.options.numerals.length&&(n=n.replace(/[0-9]/g,function(a){return s.options.numerals[+a]}),t=t.replace(/[0-9]/g,function(a){return s.options.numerals[+a]})),s.options.prefix+n+t+s.options.suffix}function u(a,e,n,t){return n*(-Math.pow(2,-10*a/t)+1)*1024/1023+e}function l(a){return"number"==typeof a&&!isNaN(a)}var s=this;if(s.version=function(){return"1.9.1"},s.options={useEasing:!0,useGrouping:!0,separator:",",decimal:".",easingFn:u,formattingFn:o,prefix:"",suffix:"",numerals:[]},r&&"object"==typeof r)for(var m in s.options)r.hasOwnProperty(m)&&null!==r[m]&&(s.options[m]=r[m]);""===s.options.separator&&(s.options.useGrouping=!1);for(var d=0,c=["webkit","moz","ms","o"],f=0;f<c.length&&!window.requestAnimationFrame;++f)window.requestAnimationFrame=window[c[f]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[c[f]+"CancelAnimationFrame"]||window[c[f]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(a,e){var n=(new Date).getTime(),t=Math.max(0,16-(n-d)),i=window.setTimeout(function(){a(n+t)},t);return d=n+t,i}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)}),s.initialize=function(){return!!s.initialized||(s.error="",s.d="string"==typeof a?document.getElementById(a):a,s.d?(s.startVal=Number(e),s.endVal=Number(n),l(s.startVal)&&l(s.endVal)?(s.decimals=Math.max(0,t||0),s.dec=Math.pow(10,s.decimals),s.duration=1e3*Number(i)||2e3,s.countDown=s.startVal>s.endVal,s.frameVal=s.startVal,s.initialized=!0,!0):(s.error="[CountUp] startVal ("+e+") or endVal ("+n+") is not a number",!1)):(s.error="[CountUp] target is null or undefined",!1))},s.printValue=function(a){var e=s.options.formattingFn(a);"INPUT"===s.d.tagName?this.d.value=e:"text"===s.d.tagName||"tspan"===s.d.tagName?this.d.textContent=e:this.d.innerHTML=e},s.count=function(a){s.startTime||(s.startTime=a),s.timestamp=a;var e=a-s.startTime;s.remaining=s.duration-e,s.options.useEasing?s.countDown?s.frameVal=s.startVal-s.options.easingFn(e,0,s.startVal-s.endVal,s.duration):s.frameVal=s.options.easingFn(e,s.startVal,s.endVal-s.startVal,s.duration):s.countDown?s.frameVal=s.startVal-(s.startVal-s.endVal)*(e/s.duration):s.frameVal=s.startVal+(s.endVal-s.startVal)*(e/s.duration),s.countDown?s.frameVal=s.frameVal<s.endVal?s.endVal:s.frameVal:s.frameVal=s.frameVal>s.endVal?s.endVal:s.frameVal,s.frameVal=Math.round(s.frameVal*s.dec)/s.dec,s.printValue(s.frameVal),e<s.duration?s.rAF=requestAnimationFrame(s.count):s.callback&&s.callback()},s.start=function(a){s.initialize()&&(s.callback=a,s.rAF=requestAnimationFrame(s.count))},s.pauseResume=function(){s.paused?(s.paused=!1,delete s.startTime,s.duration=s.remaining,s.startVal=s.frameVal,requestAnimationFrame(s.count)):(s.paused=!0,cancelAnimationFrame(s.rAF))},s.reset=function(){s.paused=!1,delete s.startTime,s.initialized=!1,s.initialize()&&(cancelAnimationFrame(s.rAF),s.printValue(s.startVal))},s.update=function(a){if(s.initialize()){if(a=Number(a),!l(a))return void(s.error="[CountUp] update() - new endVal is not a number: "+a);s.error="",a!==s.frameVal&&(cancelAnimationFrame(s.rAF),s.paused=!1,delete s.startTime,s.startVal=s.frameVal,s.endVal=a,s.countDown=s.startVal>s.endVal,s.rAF=requestAnimationFrame(s.count))}},s.initialize()&&s.printValue(s.startVal)};return t});
|
assets/js/lib/gomap.js
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
/**
|
3 |
+
* jQuery goMap
|
4 |
+
*
|
5 |
+
* @url http://www.pittss.lv/jquery/gomap/
|
6 |
+
* @author Jevgenijs Shtrauss <pittss@gmail.com>
|
7 |
+
* @version 1.3.3 2014.11.27
|
8 |
+
* This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
|
9 |
+
*/
|
10 |
+
|
11 |
+
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(c($){b 2K=y h.g.3w();c 1o(t){3.16(t)};1o.1W=y h.g.3x();1o.1W.4h=c(){};1o.1W.42=c(){};1o.1W.3v=c(){};$.k={};$.3s.k=c(5){r 3.4f(c(){b k=$(3).o(\'k\');7(!k){b 1y=$.1H(B,{},$.1y);$(3).o(\'k\',1y.2H(3,5));$.k=1y}n{$.k=k}})};$.1y={2O:{D:\'\',G:3V.9,F:24.1,2B:4,1L:47,2X:B,38:B,39:\'3o\',3m:\'3u\',2F:\'3F\',1w:B,X:{u:\'49\',J:\'31\'},2j:B,Z:{u:\'3q\',J:\'31\'},2e:w,2d:B,3y:w,3E:H,2c:w,2A:w,e:[],C:[],1i:{O:\'#1j\',M:1.0,N:2},19:{O:\'#1j\',M:1.0,N:2,R:\'#1j\',S:0.2},U:{O:\'#1j\',M:1.0,N:2,R:\'#1j\',S:0.2},1Q:{O:\'#1j\',M:1.0,N:2,R:\'#1j\',S:0.2},3k:\'3J\',1p:\'<1l 3W="3Y">\',1v:\'</1l>\',1t:w},t:H,1K:0,e:[],2P:[],2Q:[],2R:[],2S:[],1A:[],1E:[],1g:w,1b:H,C:H,x:H,p:H,2g:H,29:H,2o:H,2z:H,8:H,1O:H,2H:c(2h,5){b 8=$.1H(B,{},$.1y.2O,5);3.p=$(2h);3.8=8;7(8.D)3.14({D:8.D,1d:B});n 7($.2T(8.e)&&8.e.v>0){7(8.e[0].D)3.14({D:8.e[0].D,1d:B});n 3.1O=y h.g.W(8.e[0].G,8.e[0].F)}n 3.1O=y h.g.W(8.G,8.F);b 33={1d:3.1O,2c:8.2c,2j:8.2j,2A:8.2A,Z:{u:h.g.1s[8.Z.u.11()],J:h.g.3b[8.Z.J.11()]},3f:h.g.3r[8.3k.11()],3g:8.1w,3i:8.1w,3j:{u:h.g.1s[8.X.u.11()]},1I:{u:h.g.1s[8.X.u.11()],J:h.g.28[8.X.J.11()]},2e:8.2e,2d:8.2d,2B:8.2B};3.t=y h.g.3B(2h,33);3.x=y 1o(3.t);3.C={1i:{q:\'2g\',z:\'2P\',1M:\'2I\'},19:{q:\'29\',z:\'2Q\',1M:\'2J\'},U:{q:\'2o\',z:\'2R\',1M:\'2L\'},1Q:{q:\'2z\',z:\'2S\',1M:\'2N\'}};3.2g=$(\'<1l J="Q:1Y;"/>\').21(3.p);3.29=$(\'<1l J="Q:1Y;"/>\').21(3.p);3.2o=$(\'<1l J="Q:1Y;"/>\').21(3.p);3.2z=$(\'<1l J="Q:1Y;"/>\').21(3.p);I(b j=0,l=8.e.v;j<l;j++)3.1J(8.e[j]);I(b j=0,l=8.C.v;j<l;j++)3[3.C[8.C[j].d].1M](8.C[j]);b k=3;7(8.1t==B||8.1t==\'3p\'){h.g.L.1n(k.t,\'2b\',c(L){b 5={u:L.3a,1z:B};b 6=k.1J(5);h.g.L.1n(6,\'2G\',c(L){6.16(H);k.2r(6.q)})})}n 7(8.1t==\'3D\'){h.g.L.1n(k.t,\'2b\',c(L){7(!k.1P){b 5={u:L.3a,1z:B};b 6=k.1J(5);k.1P=B;h.g.L.1n(6,\'2G\',c(L){6.16(H);k.2r(6.q);k.1P=w})}})}K 8.e;K 8.C;r 3},3G:c(f){h.g.L.3N(3.t,\'3R\',c(){r f()})},14:c(D,5){b k=3;1V(c(){2K.14({\'D\':D.D},c(1X,1F){7(1F==h.g.1Z.2k&&D.1d)k.t.44(1X[0].2l.2n);7(1F==h.g.1Z.2k&&5&&5.E)5.E.4a(1X[0].2l.2n);n 7(1F==h.g.1Z.2k&&5){7(k.1g){k.1g=w;5.u=1X[0].2l.2n;5.14=B;k.1J(5)}}n 7(1F==h.g.1Z.4c){k.14(D,5)}})},3.8.1L)},2q:c(){7(3.1E.v>0&&!3.1g){3.1g=B;b 18=3.1E.26(0,1);3.14({D:18[0].D},18[0])}n 7(3.1g){b k=3;1V(c(){k.2q()},3.8.1L)}},16:c(5){K 5.3f;7(5.D){3.14({D:5.D,1d:B});K 5.D}n 7(5.G&&5.F){5.1d=y h.g.W(5.G,5.F);K 5.F;K 5.G}7(5.Z&&5.Z.u)5.Z.u=h.g.1s[5.Z.u.11()];7(5.Z&&5.Z.J)5.Z.J=h.g.3b[5.Z.J.11()];7(1h 5.1w!==\'1G\'){5.3g=5.1w;5.3i=5.1w}7(5.X&&5.X.u){5.3j={u:h.g.1s[5.X.u.11()]};5.1I={u:h.g.1s[5.X.u.11()]}}7(5.X&&5.X.J){7(1h 5.1I===\'1G\')5.1I={J:h.g.28[5.X.J.11()]};n 5.1I.J=h.g.28[5.X.J.11()]}3.t.1U(5)},2U:c(){r 3.t},2W:c(d,L,o){b 1k;7(1h d!=\'2Y\')d={d:d};7(d.d==\'t\')1k=3.t;n 7(d.d==\'6\'&&d.6)1k=$(3.p).o(d.6);n 7(d.d==\'m\'&&d.6)1k=$(3.p).o(d.6+\'m\');7(1k)r h.g.L.1n(1k,L,o);n 7((d.d==\'6\'||d.d==\'m\')&&3.2E()!=3.2i())b k=3;1V(c(){k.2W(d,L,o)},3.8.1L)},34:c(35){h.g.L.34(35)},36:c(6,A){b k=3;A.1x=k.8.1p+A.1x+k.8.1v;b P=y h.g.3M(A);P.Y=w;$(k.p).o(6.q+\'m\',P);7(A.3O){k.2p(P,6,A);P.Y=B}h.g.L.1n(6,\'2b\',c(){7(P.Y&&k.8.2X){P.1u();P.Y=w}n{k.2p(P,6,A);P.Y=B}})},2p:c(P,6,A){b k=3;7(3.8.38)3.3h();7(A.25){P.2t(3.t,6);$.25({40:A.25,41:c(A){P.2u(k.8.1p+A+k.8.1v)}})}n 7(A.q){P.2u(k.8.1p+$(A.q).A()+k.8.1v);P.2t(3.t,6)}n P.2t(3.t,6)},43:c(q,1N){b m=$(3.p).o(q+\'m\');7(1h 1N==\'2Y\')m.1U(k.8.1p+1N+k.8.1v);n m.2u(k.8.1p+1N+k.8.1v)},45:c(q,3l){b m=$(3.p).o(q+\'m\').48();7(3l)r $(m).A();n r m},3h:c(){I(b i=0,l=3.e.v;i<l;i++){b m=$(3.p).o(3.e[i]+\'m\');7(m){m.1u();m.Y=w}}},2C:c(d,e){b k=3;7(3.2E()!=3.2i())1V(c(){k.2C(d,e)},3.8.1L);n{3.1b=y h.g.27();7(!d||(d&&d==\'4b\')){I(b i=0,l=3.e.v;i<l;i++){3.1b.1H($(3.p).o(3.e[i]).u)}}n 7(d&&d==\'1B\'){I(b i=0,l=3.e.v;i<l;i++){7(3.1C(3.e[i]))3.1b.1H($(3.p).o(3.e[i]).u)}}n 7(d&&d==\'e\'&&$.2T(e)){I(b i=0,l=e.v;i<l;i++){3.1b.1H($(3.p).o(e[i]).u)}}3.t.2C(3.1b)}},2a:c(){r 3.t.2a()},2I:c(a){a.d=\'1i\';r 3.1D(a)},2J:c(a){a.d=\'19\';r 3.1D(a)},2L:c(a){a.d=\'U\';r 3.1D(a)},2N:c(a){a.d=\'1Q\';r 3.1D(a)},1D:c(a){b x=[];7(!a.q){3.1K++;a.q=3.8.3m+3.1K}2M(a.d){17\'1i\':7(a.V.v>0){I(b j=0,l=a.V.v;j<l;j++)x.T(y h.g.W(a.V[j].G,a.V[j].F));x=y h.g.3t({t:3.t,2f:x,1R:a.O?a.O:3.8.1i.O,1S:a.M?a.M:3.8.1i.M,1T:a.N?a.N:3.8.1i.N})}n r w;10;17\'19\':7(a.V.v>0){I(b j=0,l=a.V.v;j<l;j++)x.T(y h.g.W(a.V[j].G,a.V[j].F));x=y h.g.3z({t:3.t,2f:x,1R:a.O?a.O:3.8.19.O,1S:a.M?a.M:3.8.19.M,1T:a.N?a.N:3.8.19.N,R:a.R?a.R:3.8.19.R,S:a.S?a.S:3.8.19.S})}n r w;10;17\'U\':x=y h.g.3A({t:3.t,1d:y h.g.W(a.G,a.F),2V:a.2V,1R:a.O?a.O:3.8.U.O,1S:a.M?a.M:3.8.U.M,1T:a.N?a.N:3.8.U.N,R:a.R?a.R:3.8.U.R,S:a.S?a.S:3.8.U.S});10;17\'1Q\':x=y h.g.3C({t:3.t,1b:y h.g.27(y h.g.W(a.1r.G,a.1r.F),y h.g.W(a.1q.G,a.1q.F)),1R:a.O?a.O:3.8.U.O,1S:a.M?a.M:3.8.U.M,1T:a.N?a.N:3.8.U.N,R:a.R?a.R:3.8.U.R,S:a.S?a.S:3.8.U.S});10;2m:r w;10}3.2Z(a,x);r x},2Z:c(a,x){$(3[3.C[a.d].q]).o(a.q,x);3[3.C[a.d].z].T(a.q)},3H:c(d,x,5){x=$(3[3.C[d].q]).o(x);7(5.V&&5.V.v>0){b z=[];I(b j=0,l=5.V.v;j<l;j++)z.T(y h.g.W(5.V[j].G,5.V[j].F));5.2f=z;K 5.V}n 7(5.1q&&5.1r){5.1b=y h.g.27(y h.g.W(5.1r.G,5.1r.F),y h.g.W(5.1q.G,5.1q.F));K 5.1q;K 5.1r}n 7(5.G&&5.F){5.1d=y h.g.W(5.G,5.F);K 5.G;K 5.F}x.1U(5)},3I:c(d,x,Q){7(1h Q===\'1G\'){7(3.30(d,x))Q=w;n Q=B}7(Q)$(3[3.C[d].q]).o(x).16(3.t);n $(3[3.C[d].q]).o(x).16(H)},30:c(d,x){7($(3[3.C[d].q]).o(x).2U())r B;n r w},3K:c(d){r 3[3.C[d].z].v},3L:c(d,x){b 1f=$.32(x,3[3.C[d].z]),18;7(1f>-1){18=3[3.C[d].z].26(1f,1);b E=18[0];$(3[3.C[d].q]).o(E).16(H);$(3[3.C[d].q]).1m(E);r B}r w},3P:c(d){I(b i=0,l=3[3.C[d].z].v;i<l;i++){b E=3[3.C[d].z][i];$(3[3.C[d].q]).o(E).16(H);$(3[3.C[d].q]).1m(E)}3[3.C[d].z]=[]},3Q:c(6,Q){7(1h Q===\'1G\'){7(3.1C(6)){$(3.p).o(6).1c(w);b m=$(3.p).o(6+\'m\');7(m&&m.Y){m.1u();m.Y=w}}n $(3.p).o(6).1c(B)}n $(3.p).o(6).1c(Q)},3S:c(13,Q){I(b i=0,l=3.e.v;i<l;i++){b E=3.e[i];b 6=$(3.p).o(E);7(6.13==13){7(1h Q===\'1G\'){7(3.1C(E)){6.1c(w);b m=$(3.p).o(E+\'m\');7(m&&m.Y){m.1u();m.Y=w}}n 6.1c(B)}n 6.1c(Q)}}},1C:c(6){r $(3.p).o(6).3T()},2E:c(){r 3.e.v},2i:c(){r 3.1A.v},3U:c(){r 3.20(\'37\').v},3X:c(13){r 3.20(\'13\',13).v},20:c(d,2s){b z=[];2M(d){17"3Z":I(b i=0,l=3.e.v;i<l;i++){b 1a="\'"+i+"\': \'"+$(3.p).o(3.e[i]).22().2v()+"\'";z.T(1a)}z="{\'e\':{"+z.3c(",")+"}}";10;17"o":I(b i=0,l=3.e.v;i<l;i++){b 1a="6["+i+"]="+$(3.p).o(3.e[i]).22().2v();z.T(1a)}z=z.3c("&");10;17"3d":I(b i=0,l=3.e.v;i<l;i++){7(3.3e($(3.p).o(3.e[i]).22()))z.T(3.e[i])}10;17"37":I(b i=0,l=3.e.v;i<l;i++){7(3.1C(3.e[i]))z.T(3.e[i])}10;17"13":7(2s)I(b i=0,l=3.e.v;i<l;i++){7($(3.p).o(3.e[i]).13==2s)z.T(3.e[i])}10;17"e":I(b i=0,l=3.e.v;i<l;i++){b 1a=$(3.p).o(3.e[i]);z.T(1a)}10;2m:I(b i=0,l=3.e.v;i<l;i++){b 1a=$(3.p).o(3.e[i]).22().2v();z.T(1a)}10}r z},46:c(){r 3.20(\'3d\')},1J:c(6){7(!6.14){3.1K++;7(!6.q)6.q=3.8.39+3.1K;3.1A.T(6.q)}7(6.D&&!6.14){3.1E.T(6);3.2q()}n 7(6.G&&6.F||6.u){b 5={t:3.t};5.q=6.q;5.13=6.13?6.13:3.8.2F;5.2w=6.2w?6.2w:0;5.2x=6.2x?6.2x:0;7(6.1B==w)5.1B=6.1B;7(6.2y)5.2y=6.2y;7(6.1z)5.1z=6.1z;7(6.s&&6.s.1e){5.s=6.s.1e;7(6.s.12)5.12=6.s.12}n 7(6.s)5.s=6.s;n 7(3.8.s&&3.8.s.1e){5.s=3.8.s.1e;7(3.8.s.12)5.12=3.8.s.12}n 7(3.8.s)5.s=3.8.s;5.u=6.u?6.u:y h.g.W(6.G,6.F);b 23=y h.g.4d(5);7(6.A){7(!6.A.1x&&!6.A.25&&!6.A.q)6.A={1x:6.A};n 7(!6.A.1x)6.A.1x=H;3.36(23,6.A)}3.1t(23);r 23}},1t:c(6){$(3.p).o(6.q,6);3.e.T(6.q)},4e:c(6,5){b 2D=$(3.p).o(6);K 5.q;K 5.1B;7(5.s){b 15=5.s;K 5.s;7(15&&15==\'2m\'){7(3.8.s&&3.8.s.1e){5.s=3.8.s.1e;7(3.8.s.12)5.12=3.8.s.12}n 7(3.8.s)5.s=3.8.s}n 7(15&&15.1e){5.s=15.1e;7(15.12)5.12=15.12}n 7(15)5.s=15}7(5.D){3.14({D:5.D},{E:2D});K 5.D;K 5.G;K 5.F;K 5.u}n 7(5.G&&5.F||5.u){7(!5.u)5.u=y h.g.W(5.G,5.F)}2D.1U(5)},2r:c(6){b 1f=$.32(6,3.e),18;7(1f>-1){3.1A.26(1f,1);18=3.e.26(1f,1);b E=18[0];b 6=$(3.p).o(E);b m=$(3.p).o(E+\'m\');6.1c(w);6.16(H);$(3.p).1m(E);7(m){m.1u();m.Y=w;$(3.p).1m(E+\'m\')}r B}r w},4g:c(){I(b i=0,l=3.e.v;i<l;i++){b E=3.e[i];b 6=$(3.p).o(E);b m=$(3.p).o(E+\'m\');6.1c(w);6.16(H);$(3.p).1m(E);7(m){m.1u();m.Y=w;$(3.p).1m(E+\'m\')}}3.1P=w;3.1g=w;3.e=[];3.1A=[];3.1E=[]},3e:c(3n){r 3.t.2a().4i(3n)}}})(4j);',62,268,'|||this||options|marker|if|opts||poly|var|function|type|markers||maps|google|||goMap||info|else|data|mapId|id|return|icon|map|position|length|false|overlay|new|array|html|true|overlays|address|markerId|longitude|latitude|null|for|style|delete|event|opacity|weight|color|infowindow|display|fillColor|fillOpacity|push|circle|coords|LatLng|navigationControlOptions|show|mapTypeControlOptions|break|toUpperCase|shadow|group|geocode|toption|setMap|case|current|polygon|temp|bounds|setVisible|center|image|index|lockGeocode|typeof|polyline|FF0000|target|div|removeData|addListener|MyOverlay|html_prepend|ne|sw|ControlPosition|addMarker|close|html_append|navigationControl|content|goMapBase|draggable|tmpMarkers|visible|getVisibleMarker|createOverlay|geoMarkers|status|undefined|extend|zoomControlOptions|createMarker|count|delay|create|text|centerLatLng|singleMarker|rectangle|strokeColor|strokeOpacity|strokeWeight|setOptions|setTimeout|prototype|results|none|GeocoderStatus|getMarkers|appendTo|getPosition|cmarker||ajax|splice|LatLngBounds|ZoomControlStyle|pgId|getBounds|click|disableDoubleClickZoom|scrollwheel|scaleControl|path|plId|el|getTmpMarkerCount|mapTypeControl|OK|geometry|default|location|cId|openWindow|geoMarker|removeMarker|name|open|setContent|toUrlValue|zIndex|zIndexOrg|title|rId|streetViewControl|zoom|fitBounds|tmarker|getMarkerCount|groupId|dblclick|init|createPolyline|createPolygon|geocoder|createCircle|switch|createRectangle|defaults|polylines|polygons|circles|rectangles|isArray|getMap|radius|createListener|hideByClick|object|addOverlay|getVisibleOverlay|DEFAULT|inArray|myOptions|removeListener|listener|setInfoWindow|visiblesInMap|oneInfoWindow|prefixId|latLng|MapTypeControlStyle|join|visiblesInBounds|isVisible|mapTypeId|panControl|clearInfo|zoomControl|panControlOptions|maptype|hideDiv|polyId|latlng|gomarker|multi|TOP_RIGHT|MapTypeId|fn|Polyline|gopoly|draw|Geocoder|OverlayView|directions|Polygon|Circle|Map|Rectangle|single|directionsResult|gogroup|ready|setOverlay|showHideOverlay|HYBRID|getOverlaysCount|removeOverlay|InfoWindow|addListenerOnce|popup|clearOverlays|showHideMarker|bounds_changed|showHideMarkerByGroup|getVisible|getVisibleMarkerCount|56|class|getMarkerByGroupCount|gomapMarker|json|url|success|onRemove|setInfo|setCenter|getInfo|getVisibleMarkers|200|getContent|TOP_LEFT|setPosition|all|OVER_QUERY_LIMIT|Marker|setMarker|each|clearMarkers|onAdd|contains|jQuery'.split('|'),0,{}))
|
assets/js/lib/jquerycountdown.js
ADDED
@@ -0,0 +1,816 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function(){var j=false;window.JQClass=function(){};JQClass.classes={};JQClass.extend=function extender(f){var g=this.prototype;j=true;var h=new this();j=false;for(var i in f){h[i]=typeof f[i]=='function'&&typeof g[i]=='function'?(function(d,e){return function(){var b=this._super;this._super=function(a){return g[d].apply(this,a)};var c=e.apply(this,arguments);this._super=b;return c}})(i,f[i]):f[i]}function JQClass(){if(!j&&this._init){this._init.apply(this,arguments)}}JQClass.prototype=h;JQClass.prototype.constructor=JQClass;JQClass.extend=extender;return JQClass}})();(function($){JQClass.classes.JQPlugin=JQClass.extend({name:'plugin',defaultOptions:{},regionalOptions:{},_getters:[],_getMarker:function(){return'is-'+this.name},_init:function(){$.extend(this.defaultOptions,(this.regionalOptions&&this.regionalOptions[''])||{});var c=camelCase(this.name);$[c]=this;$.fn[c]=function(a){var b=Array.prototype.slice.call(arguments,1);if($[c]._isNotChained(a,b)){return $[c][a].apply($[c],[this[0]].concat(b))}return this.each(function(){if(typeof a==='string'){if(a[0]==='_'||!$[c][a]){throw'Unknown method: '+a;}$[c][a].apply($[c],[this].concat(b))}else{$[c]._attach(this,a)}})}},setDefaults:function(a){$.extend(this.defaultOptions,a||{})},_isNotChained:function(a,b){if(a==='option'&&(b.length===0||(b.length===1&&typeof b[0]==='string'))){return true}return $.inArray(a,this._getters)>-1},_attach:function(a,b){a=$(a);if(a.hasClass(this._getMarker())){return}a.addClass(this._getMarker());b=$.extend({},this.defaultOptions,this._getMetadata(a),b||{});var c=$.extend({name:this.name,elem:a,options:b},this._instSettings(a,b));a.data(this.name,c);this._postAttach(a,c);this.option(a,b)},_instSettings:function(a,b){return{}},_postAttach:function(a,b){},_getMetadata:function(d){try{var f=d.data(this.name.toLowerCase())||'';f=f.replace(/'/g,'"');f=f.replace(/([a-zA-Z0-9]+):/g,function(a,b,i){var c=f.substring(0,i).match(/"/g);return(!c||c.length%2===0?'"'+b+'":':b+':')});f=$.parseJSON('{'+f+'}');for(var g in f){var h=f[g];if(typeof h==='string'&&h.match(/^new Date\((.*)\)$/)){f[g]=eval(h)}}return f}catch(e){return{}}},_getInst:function(a){return $(a).data(this.name)||{}},option:function(a,b,c){a=$(a);var d=a.data(this.name);if(!b||(typeof b==='string'&&c==null)){var e=(d||{}).options;return(e&&b?e[b]:e)}if(!a.hasClass(this._getMarker())){return}var e=b||{};if(typeof b==='string'){e={};e[b]=c}this._optionsChanged(a,d,e);$.extend(d.options,e)},_optionsChanged:function(a,b,c){},destroy:function(a){a=$(a);if(!a.hasClass(this._getMarker())){return}this._preDestroy(a,this._getInst(a));a.removeData(this.name).removeClass(this._getMarker())},_preDestroy:function(a,b){}});function camelCase(c){return c.replace(/-([a-z])/g,function(a,b){return b.toUpperCase()})}$.JQPlugin={createPlugin:function(a,b){if(typeof a==='object'){b=a;a='JQPlugin'}a=camelCase(a);var c=camelCase(b.name);JQClass.classes[c]=JQClass.classes[a].extend(b);new JQClass.classes[c]()}}})(jQuery);
|
2 |
+
/* http://keith-wood.name/countdown.html
|
3 |
+
Countdown for jQuery v2.0.0.
|
4 |
+
Written by Keith Wood (kbwood{at}iinet.com.au) January 2008.
|
5 |
+
Available under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license.
|
6 |
+
Please attribute the author if you use it. */
|
7 |
+
(function($) { // Hide scope, no $ conflict
|
8 |
+
var pluginName = 'pre_countdown';
|
9 |
+
var Y = 0; // Years
|
10 |
+
var O = 1; // Months
|
11 |
+
var W = 2; // Weeks
|
12 |
+
var D = 3; // Days
|
13 |
+
var H = 4; // Hours
|
14 |
+
var M = 5; // Minutes
|
15 |
+
var S = 6; // Seconds
|
16 |
+
/** Create the countdown plugin.
|
17 |
+
<p>Sets an element to show the time remaining until a given instant.</p>
|
18 |
+
<p>Expects HTML like:</p>
|
19 |
+
<pre><div></div></pre>
|
20 |
+
<p>Provide inline configuration like:</p>
|
21 |
+
<pre><div data-countdown="name: 'value'"></div></pre>
|
22 |
+
@module Countdown
|
23 |
+
@augments JQPlugin
|
24 |
+
@example $(selector).countdown({until: +300}) */
|
25 |
+
$.JQPlugin.createPlugin({
|
26 |
+
/** The name of the plugin. */
|
27 |
+
name: pluginName,
|
28 |
+
/** Countdown expiry callback.
|
29 |
+
Triggered when the countdown expires.
|
30 |
+
@callback expiryCallback */
|
31 |
+
/** Countdown server synchronisation callback.
|
32 |
+
Triggered when the countdown is initialised.
|
33 |
+
@callback serverSyncCallback
|
34 |
+
@return {Date} The current date/time on the server as expressed in the local timezone. */
|
35 |
+
/** Countdown tick callback.
|
36 |
+
Triggered on every <code>tickInterval</code> ticks of the countdown.
|
37 |
+
@callback tickCallback
|
38 |
+
@param periods {number[]} The breakdown by period (years, months, weeks, days,
|
39 |
+
hours, minutes, seconds) of the time remaining/passed. */
|
40 |
+
/** Countdown which labels callback.
|
41 |
+
Triggered when the countdown is being display to determine which set of labels
|
42 |
+
(<code>labels</code>, <code>labels1</code>, ...) are to be used for the current period value.
|
43 |
+
@callback whichLabelsCallback
|
44 |
+
@param num {number} The current period value.
|
45 |
+
@return {number} The suffix for the label set to use. */
|
46 |
+
/** Default settings for the plugin.
|
47 |
+
@property until {Date|number|string} The date/time to count down to, or number of seconds
|
48 |
+
offset from now, or string of amounts and units for offset(s) from now:
|
49 |
+
'Y' years, 'O' months, 'W' weeks, 'D' days, 'H' hours, 'M' minutes, 'S' seconds.
|
50 |
+
@example until: new Date(2013, 12-1, 25, 13, 30)
|
51 |
+
until: +300
|
52 |
+
until: '+1O -2D'
|
53 |
+
@property [since] {Date|number|string} The date/time to count up from, or
|
54 |
+
number of seconds offset from now, or string for unit offset(s):
|
55 |
+
'Y' years, 'O' months, 'W' weeks, 'D' days, 'H' hours, 'M' minutes, 'S' seconds.
|
56 |
+
@example since: new Date(2013, 1-1, 1)
|
57 |
+
since: -300
|
58 |
+
since: '-1O +2D'
|
59 |
+
@property [timezone=null] {number} The timezone (hours or minutes from GMT) for the target times,
|
60 |
+
or null for client local timezone.
|
61 |
+
@example timezone: +10
|
62 |
+
timezone: -60
|
63 |
+
@property [serverSync=null] {serverSyncCallback} A function to retrieve the current server time
|
64 |
+
for synchronisation.
|
65 |
+
@property [format='dHMS'] {string} The format for display - upper case for always, lower case only if non-zero,
|
66 |
+
'Y' years, 'O' months, 'W' weeks, 'D' days, 'H' hours, 'M' minutes, 'S' seconds.
|
67 |
+
@property [layout=''] {string} Build your own layout for the countdown.
|
68 |
+
@example layout: '{d<}{dn} {dl}{d>} {hnn}:{mnn}:{snn}'
|
69 |
+
@property [compact=false] {boolean} True to display in a compact format, false for an expanded one.
|
70 |
+
@property [padZeroes=false] {boolean} True to add leading zeroes
|
71 |
+
@property [significant=0] {number} The number of periods with non-zero values to show, zero for all.
|
72 |
+
@property [description=''] {string} The description displayed for the countdown.
|
73 |
+
@property [expiryUrl=''] {string} A URL to load upon expiry, replacing the current page.
|
74 |
+
@property [expiryText=''] {string} Text to display upon expiry, replacing the countdown. This may be HTML.
|
75 |
+
@property [alwaysExpire=false] {boolean} True to trigger <code>onExpiry</code> even if target time has passed.
|
76 |
+
@property [onExpiry=null] {expiryCallback} Callback when the countdown expires -
|
77 |
+
receives no parameters and <code>this</code> is the containing division.
|
78 |
+
@example onExpiry: function() {
|
79 |
+
...
|
80 |
+
}
|
81 |
+
@property [onTick=null] {tickCallback} Callback when the countdown is updated -
|
82 |
+
receives <code>number[7]</code> being the breakdown by period
|
83 |
+
(years, months, weeks, days, hours, minutes, seconds - based on
|
84 |
+
<code>format</code>) and <code>this</code> is the containing division.
|
85 |
+
@example onTick: function(periods) {
|
86 |
+
var secs = $.countdown.periodsToSeconds(periods);
|
87 |
+
if (secs < 300) { // Last five minutes
|
88 |
+
...
|
89 |
+
}
|
90 |
+
}
|
91 |
+
@property [tickInterval=1] {number} The interval (seconds) between <code>onTick</code> callbacks. */
|
92 |
+
defaultOptions: {
|
93 |
+
until: null,
|
94 |
+
since: null,
|
95 |
+
timezone: null,
|
96 |
+
serverSync: null,
|
97 |
+
format: 'dHMS',
|
98 |
+
layout: '',
|
99 |
+
compact: false,
|
100 |
+
padZeroes: false,
|
101 |
+
significant: 0,
|
102 |
+
description: '',
|
103 |
+
expiryUrl: '',
|
104 |
+
expiryText: '',
|
105 |
+
alwaysExpire: false,
|
106 |
+
onExpiry: null,
|
107 |
+
onTick: null,
|
108 |
+
tickInterval: 1
|
109 |
+
},
|
110 |
+
/** Localisations for the plugin.
|
111 |
+
Entries are objects indexed by the language code ('' being the default US/English).
|
112 |
+
Each object has the following attributes.
|
113 |
+
@property [labels=['Years','Months','Weeks','Days','Hours','Minutes','Seconds']] {string[]}
|
114 |
+
The display texts for the counter periods.
|
115 |
+
@property [labels1=['Year','Month','Week','Day','Hour','Minute','Second']] {string[]}
|
116 |
+
The display texts for the counter periods if they have a value of 1.
|
117 |
+
Add other <code>labels<em>n</em></code> attributes as necessary to
|
118 |
+
cater for other numeric idiosyncrasies of the localisation.
|
119 |
+
@property [compactLabels=['y','m','w','d']] {string[]} The compact texts for the counter periods.
|
120 |
+
@property [whichLabels=null] {whichLabelsCallback} A function to determine which
|
121 |
+
<code>labels<em>n</em></code> to use.
|
122 |
+
@example whichLabels: function(num) {
|
123 |
+
return (num > 1 ? 0 : 1);
|
124 |
+
}
|
125 |
+
@property [digits=['0','1',...,'9']] {number[]} The digits to display (0-9).
|
126 |
+
@property [timeSeparator=':'] {string} Separator for time periods in the compact layout.
|
127 |
+
@property [isRTL=false] {boolean} True for right-to-left languages, false for left-to-right. */
|
128 |
+
regionalOptions: { // Available regional settings, indexed by language/country code
|
129 |
+
'': { // Default regional settings - English/US
|
130 |
+
labels: ['Years', 'Months', 'Weeks', 'Days', 'Hours', 'Minutes', 'Seconds'],
|
131 |
+
labels1: ['Year', 'Month', 'Week', 'Day', 'Hour', 'Minute', 'Second'],
|
132 |
+
compactLabels: ['y', 'm', 'w', 'd'],
|
133 |
+
whichLabels: null,
|
134 |
+
digits: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
|
135 |
+
timeSeparator: ':',
|
136 |
+
isRTL: false
|
137 |
+
}
|
138 |
+
},
|
139 |
+
/** Names of getter methods - those that can't be chained. */
|
140 |
+
_getters: ['getTimes'],
|
141 |
+
/* Class name for the right-to-left marker. */
|
142 |
+
_rtlClass: pluginName + '-rtl',
|
143 |
+
/* Class name for the countdown section marker. */
|
144 |
+
_sectionClass: pluginName + '-section',
|
145 |
+
/* Class name for the period amount marker. */
|
146 |
+
_amountClass: pluginName + '-amount',
|
147 |
+
/* Class name for the period name marker. */
|
148 |
+
_periodClass: pluginName + '-period',
|
149 |
+
/* Class name for the countdown row marker. */
|
150 |
+
_rowClass: pluginName + '-row',
|
151 |
+
/* Class name for the holding countdown marker. */
|
152 |
+
_holdingClass: pluginName + '-holding',
|
153 |
+
/* Class name for the showing countdown marker. */
|
154 |
+
_showClass: pluginName + '-show',
|
155 |
+
/* Class name for the description marker. */
|
156 |
+
_descrClass: pluginName + '-descr',
|
157 |
+
/* List of currently active countdown elements. */
|
158 |
+
_timerElems: [],
|
159 |
+
/** Additional setup for the countdown.
|
160 |
+
Apply default localisations.
|
161 |
+
Create the timer. */
|
162 |
+
_init: function() {
|
163 |
+
var self = this;
|
164 |
+
this._super();
|
165 |
+
this._serverSyncs = [];
|
166 |
+
var now = (typeof Date.now == 'function' ? Date.now :
|
167 |
+
function() { return new Date().getTime(); });
|
168 |
+
var perfAvail = (window.performance && typeof window.performance.now == 'function');
|
169 |
+
// Shared timer for all countdowns
|
170 |
+
function timerCallBack(timestamp) {
|
171 |
+
var drawStart = (timestamp < 1e12 ? // New HTML5 high resolution timer
|
172 |
+
(perfAvail ? (performance.now() + performance.timing.navigationStart) : now()) :
|
173 |
+
// Integer milliseconds since unix epoch
|
174 |
+
timestamp || now());
|
175 |
+
if (drawStart - animationStartTime >= 1000) {
|
176 |
+
self._updateElems();
|
177 |
+
animationStartTime = drawStart;
|
178 |
+
}
|
179 |
+
requestAnimationFrame(timerCallBack);
|
180 |
+
}
|
181 |
+
var requestAnimationFrame = window.requestAnimationFrame ||
|
182 |
+
window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame ||
|
183 |
+
window.oRequestAnimationFrame || window.msRequestAnimationFrame || null;
|
184 |
+
// This is when we expect a fall-back to setInterval as it's much more fluid
|
185 |
+
var animationStartTime = 0;
|
186 |
+
if (!requestAnimationFrame || $.noRequestAnimationFrame) {
|
187 |
+
$.noRequestAnimationFrame = null;
|
188 |
+
setInterval(function() { self._updateElems(); }, 980); // Fall back to good old setInterval
|
189 |
+
}
|
190 |
+
else {
|
191 |
+
animationStartTime = window.animationStartTime ||
|
192 |
+
window.webkitAnimationStartTime || window.mozAnimationStartTime ||
|
193 |
+
window.oAnimationStartTime || window.msAnimationStartTime || now();
|
194 |
+
requestAnimationFrame(timerCallBack);
|
195 |
+
}
|
196 |
+
},
|
197 |
+
/** Convert a date/time to UTC.
|
198 |
+
@param tz {number} The hour or minute offset from GMT, e.g. +9, -360.
|
199 |
+
@param year {Date|number} the date/time in that timezone or the year in that timezone.
|
200 |
+
@param [month] {number} The month (0 - 11) (omit if <code>year</code> is a <code>Date</code>).
|
201 |
+
@param [day] {number} The day (omit if <code>year</code> is a <code>Date</code>).
|
202 |
+
@param [hours] {number} The hour (omit if <code>year</code> is a <code>Date</code>).
|
203 |
+
@param [mins] {number} The minute (omit if <code>year</code> is a <code>Date</code>).
|
204 |
+
@param [secs] {number} The second (omit if <code>year</code> is a <code>Date</code>).
|
205 |
+
@param [ms] {number} The millisecond (omit if <code>year</code> is a <code>Date</code>).
|
206 |
+
@return {Date} The equivalent UTC date/time.
|
207 |
+
@example $.countdown.UTCDate(+10, 2013, 12-1, 25, 12, 0)
|
208 |
+
$.countdown.UTCDate(-7, new Date(2013, 12-1, 25, 12, 0)) */
|
209 |
+
UTCDate: function(tz, year, month, day, hours, mins, secs, ms) {
|
210 |
+
if (typeof year == 'object' && year.constructor == Date) {
|
211 |
+
ms = year.getMilliseconds();
|
212 |
+
secs = year.getSeconds();
|
213 |
+
mins = year.getMinutes();
|
214 |
+
hours = year.getHours();
|
215 |
+
day = year.getDate();
|
216 |
+
month = year.getMonth();
|
217 |
+
year = year.getFullYear();
|
218 |
+
}
|
219 |
+
var d = new Date();
|
220 |
+
d.setUTCFullYear(year);
|
221 |
+
d.setUTCDate(1);
|
222 |
+
d.setUTCMonth(month || 0);
|
223 |
+
d.setUTCDate(day || 1);
|
224 |
+
d.setUTCHours(hours || 0);
|
225 |
+
d.setUTCMinutes((mins || 0) - (Math.abs(tz) < 30 ? tz * 60 : tz));
|
226 |
+
d.setUTCSeconds(secs || 0);
|
227 |
+
d.setUTCMilliseconds(ms || 0);
|
228 |
+
return d;
|
229 |
+
},
|
230 |
+
/** Convert a set of periods into seconds.
|
231 |
+
Averaged for months and years.
|
232 |
+
@param periods {number[]} The periods per year/month/week/day/hour/minute/second.
|
233 |
+
@return {number} The corresponding number of seconds.
|
234 |
+
@example var secs = $.countdown.periodsToSeconds(periods) */
|
235 |
+
periodsToSeconds: function(periods) {
|
236 |
+
return periods[0] * 31557600 + periods[1] * 2629800 + periods[2] * 604800 +
|
237 |
+
periods[3] * 86400 + periods[4] * 3600 + periods[5] * 60 + periods[6];
|
238 |
+
},
|
239 |
+
_instSettings: function(elem, options) {
|
240 |
+
return {_periods: [0, 0, 0, 0, 0, 0, 0]};
|
241 |
+
},
|
242 |
+
/** Add an element to the list of active ones.
|
243 |
+
@private
|
244 |
+
@param elem {Element} The countdown element. */
|
245 |
+
_addElem: function(elem) {
|
246 |
+
if (!this._hasElem(elem)) {
|
247 |
+
this._timerElems.push(elem);
|
248 |
+
}
|
249 |
+
},
|
250 |
+
/** See if an element is in the list of active ones.
|
251 |
+
@private
|
252 |
+
@param elem {Element} The countdown element.
|
253 |
+
@return {boolean} True if present, false if not. */
|
254 |
+
_hasElem: function(elem) {
|
255 |
+
return ($.inArray(elem, this._timerElems) > -1);
|
256 |
+
},
|
257 |
+
/** Remove an element from the list of active ones.
|
258 |
+
@private
|
259 |
+
@param elem {Element} The countdown element. */
|
260 |
+
_removeElem: function(elem) {
|
261 |
+
this._timerElems = $.map(this._timerElems,
|
262 |
+
function(value) { return (value == elem ? null : value); }); // delete entry
|
263 |
+
},
|
264 |
+
/** Update each active timer element.
|
265 |
+
@private */
|
266 |
+
_updateElems: function() {
|
267 |
+
for (var i = this._timerElems.length - 1; i >= 0; i--) {
|
268 |
+
this._updateCountdown(this._timerElems[i]);
|
269 |
+
}
|
270 |
+
},
|
271 |
+
_optionsChanged: function(elem, inst, options) {
|
272 |
+
if (options.layout) {
|
273 |
+
options.layout = options.layout.replace(/</g, '<').replace(/>/g, '>');
|
274 |
+
}
|
275 |
+
this._resetExtraLabels(inst.options, options);
|
276 |
+
var timezoneChanged = (inst.options.timezone != options.timezone);
|
277 |
+
$.extend(inst.options, options);
|
278 |
+
this._adjustSettings(elem, inst,
|
279 |
+
options.until != null || options.since != null || timezoneChanged);
|
280 |
+
var now = new Date();
|
281 |
+
if ((inst._since && inst._since < now) || (inst._until && inst._until > now)) {
|
282 |
+
this._addElem(elem[0]);
|
283 |
+
}
|
284 |
+
this._updateCountdown(elem, inst);
|
285 |
+
},
|
286 |
+
/** Redisplay the countdown with an updated display.
|
287 |
+
@private
|
288 |
+
@param elem {Element|jQuery} The containing division.
|
289 |
+
@param inst {object} The current settings for this instance. */
|
290 |
+
_updateCountdown: function(elem, inst) {
|
291 |
+
elem = elem.jquery ? elem : $(elem);
|
292 |
+
inst = inst || elem.data(this.name);
|
293 |
+
if (!inst) {
|
294 |
+
return;
|
295 |
+
}
|
296 |
+
elem.html(this._generateHTML(inst)).toggleClass(this._rtlClass, inst.options.isRTL);
|
297 |
+
if ($.isFunction(inst.options.onTick)) {
|
298 |
+
var periods = inst._hold != 'lap' ? inst._periods :
|
299 |
+
this._calculatePeriods(inst, inst._show, inst.options.significant, new Date());
|
300 |
+
if (inst.options.tickInterval == 1 ||
|
301 |
+
this.periodsToSeconds(periods) % inst.options.tickInterval == 0) {
|
302 |
+
inst.options.onTick.apply(elem[0], [periods]);
|
303 |
+
}
|
304 |
+
}
|
305 |
+
var expired = inst._hold != 'pause' &&
|
306 |
+
(inst._since ? inst._now.getTime() < inst._since.getTime() :
|
307 |
+
inst._now.getTime() >= inst._until.getTime());
|
308 |
+
if (expired && !inst._expiring) {
|
309 |
+
inst._expiring = true;
|
310 |
+
if (this._hasElem(elem[0]) || inst.options.alwaysExpire) {
|
311 |
+
this._removeElem(elem[0]);
|
312 |
+
if ($.isFunction(inst.options.onExpiry)) {
|
313 |
+
inst.options.onExpiry.apply(elem[0], []);
|
314 |
+
}
|
315 |
+
if (inst.options.expiryText) {
|
316 |
+
var layout = inst.options.layout;
|
317 |
+
inst.options.layout = inst.options.expiryText;
|
318 |
+
this._updateCountdown(elem[0], inst);
|
319 |
+
inst.options.layout = layout;
|
320 |
+
}
|
321 |
+
if (inst.options.expiryUrl) {
|
322 |
+
window.location = inst.options.expiryUrl;
|
323 |
+
}
|
324 |
+
}
|
325 |
+
inst._expiring = false;
|
326 |
+
}
|
327 |
+
else if (inst._hold == 'pause') {
|
328 |
+
this._removeElem(elem[0]);
|
329 |
+
}
|
330 |
+
},
|
331 |
+
/** Reset any extra labelsn and compactLabelsn entries if changing labels.
|
332 |
+
@private
|
333 |
+
@param base {object} The options to be updated.
|
334 |
+
@param options {object} The new option values. */
|
335 |
+
_resetExtraLabels: function(base, options) {
|
336 |
+
var changingLabels = false;
|
337 |
+
for (var n in options) {
|
338 |
+
if (n != 'whichLabels' && n.match(/[Ll]abels/)) {
|
339 |
+
changingLabels = true;
|
340 |
+
break;
|
341 |
+
}
|
342 |
+
}
|
343 |
+
if (changingLabels) {
|
344 |
+
for (var n in base) { // Remove custom numbered labels
|
345 |
+
if (n.match(/[Ll]abels[02-9]|compactLabels1/)) {
|
346 |
+
base[n] = null;
|
347 |
+
}
|
348 |
+
}
|
349 |
+
}
|
350 |
+
},
|
351 |
+
/** Calculate internal settings for an instance.
|
352 |
+
@private
|
353 |
+
@param elem {jQuery} The containing division.
|
354 |
+
@param inst {object} The current settings for this instance.
|
355 |
+
@param recalc {boolean} True if until or since are set. */
|
356 |
+
_adjustSettings: function(elem, inst, recalc) {
|
357 |
+
var now;
|
358 |
+
var serverOffset = 0;
|
359 |
+
var serverEntry = null;
|
360 |
+
for (var i = 0; i < this._serverSyncs.length; i++) {
|
361 |
+
if (this._serverSyncs[i][0] == inst.options.serverSync) {
|
362 |
+
serverEntry = this._serverSyncs[i][1];
|
363 |
+
break;
|
364 |
+
}
|
365 |
+
}
|
366 |
+
if (serverEntry != null) {
|
367 |
+
serverOffset = (inst.options.serverSync ? serverEntry : 0);
|
368 |
+
now = new Date();
|
369 |
+
}
|
370 |
+
else {
|
371 |
+
var serverResult = ($.isFunction(inst.options.serverSync) ?
|
372 |
+
inst.options.serverSync.apply(elem[0], []) : null);
|
373 |
+
now = new Date();
|
374 |
+
serverOffset = (serverResult ? now.getTime() - serverResult.getTime() : 0);
|
375 |
+
this._serverSyncs.push([inst.options.serverSync, serverOffset]);
|
376 |
+
}
|
377 |
+
var timezone = inst.options.timezone;
|
378 |
+
timezone = (timezone == null ? -now.getTimezoneOffset() : timezone);
|
379 |
+
if (recalc || (!recalc && inst._until == null && inst._since == null)) {
|
380 |
+
inst._since = inst.options.since;
|
381 |
+
if (inst._since != null) {
|
382 |
+
inst._since = this.UTCDate(timezone, this._determineTime(inst._since, null));
|
383 |
+
if (inst._since && serverOffset) {
|
384 |
+
inst._since.setMilliseconds(inst._since.getMilliseconds() + serverOffset);
|
385 |
+
}
|
386 |
+
}
|
387 |
+
inst._until = this.UTCDate(timezone, this._determineTime(inst.options.until, now));
|
388 |
+
if (serverOffset) {
|
389 |
+
inst._until.setMilliseconds(inst._until.getMilliseconds() + serverOffset);
|
390 |
+
}
|
391 |
+
}
|
392 |
+
inst._show = this._determineShow(inst);
|
393 |
+
},
|
394 |
+
/** Remove the countdown widget from a div.
|
395 |
+
@param elem {jQuery} The containing division.
|
396 |
+
@param inst {object} The current instance object. */
|
397 |
+
_preDestroy: function(elem, inst) {
|
398 |
+
this._removeElem(elem[0]);
|
399 |
+
elem.empty();
|
400 |
+
},
|
401 |
+
/** Pause a countdown widget at the current time.
|
402 |
+
Stop it running but remember and display the current time.
|
403 |
+
@param elem {Element} The containing division.
|
404 |
+
@example $(selector).countdown('pause') */
|
405 |
+
pause: function(elem) {
|
406 |
+
this._hold(elem, 'pause');
|
407 |
+
},
|
408 |
+
/** Pause a countdown widget at the current time.
|
409 |
+
Stop the display but keep the countdown running.
|
410 |
+
@param elem {Element} The containing division.
|
411 |
+
@example $(selector).countdown('lap') */
|
412 |
+
lap: function(elem) {
|
413 |
+
this._hold(elem, 'lap');
|
414 |
+
},
|
415 |
+
/** Resume a paused countdown widget.
|
416 |
+
@param elem {Element} The containing division.
|
417 |
+
@example $(selector).countdown('resume') */
|
418 |
+
resume: function(elem) {
|
419 |
+
this._hold(elem, null);
|
420 |
+
},
|
421 |
+
/** Toggle a paused countdown widget.
|
422 |
+
@param elem {Element} The containing division.
|
423 |
+
@example $(selector).countdown('toggle') */
|
424 |
+
toggle: function(elem) {
|
425 |
+
var inst = $.data(elem, this.name) || {};
|
426 |
+
this[!inst._hold ? 'pause' : 'resume'](elem);
|
427 |
+
},
|
428 |
+
/** Toggle a lapped countdown widget.
|
429 |
+
@param elem {Element} The containing division.
|
430 |
+
@example $(selector).countdown('toggleLap') */
|
431 |
+
toggleLap: function(elem) {
|
432 |
+
var inst = $.data(elem, this.name) || {};
|
433 |
+
this[!inst._hold ? 'lap' : 'resume'](elem);
|
434 |
+
},
|
435 |
+
/** Pause or resume a countdown widget.
|
436 |
+
@private
|
437 |
+
@param elem {Element} The containing division.
|
438 |
+
@param hold {string} The new hold setting. */
|
439 |
+
_hold: function(elem, hold) {
|
440 |
+
var inst = $.data(elem, this.name);
|
441 |
+
if (inst) {
|
442 |
+
if (inst._hold == 'pause' && !hold) {
|
443 |
+
inst._periods = inst._savePeriods;
|
444 |
+
var sign = (inst._since ? '-' : '+');
|
445 |
+
inst[inst._since ? '_since' : '_until'] =
|
446 |
+
this._determineTime(sign + inst._periods[0] + 'y' +
|
447 |
+
sign + inst._periods[1] + 'o' + sign + inst._periods[2] + 'w' +
|
448 |
+
sign + inst._periods[3] + 'd' + sign + inst._periods[4] + 'h' +
|
449 |
+
sign + inst._periods[5] + 'm' + sign + inst._periods[6] + 's');
|
450 |
+
this._addElem(elem);
|
451 |
+
}
|
452 |
+
inst._hold = hold;
|
453 |
+
inst._savePeriods = (hold == 'pause' ? inst._periods : null);
|
454 |
+
$.data(elem, this.name, inst);
|
455 |
+
this._updateCountdown(elem, inst);
|
456 |
+
}
|
457 |
+
},
|
458 |
+
/** Return the current time periods.
|
459 |
+
@param elem {Element} The containing division.
|
460 |
+
@return {number[]} The current periods for the countdown.
|
461 |
+
@example var periods = $(selector).countdown('getTimes') */
|
462 |
+
getTimes: function(elem) {
|
463 |
+
var inst = $.data(elem, this.name);
|
464 |
+
return (!inst ? null : (inst._hold == 'pause' ? inst._savePeriods : (!inst._hold ? inst._periods :
|
465 |
+
this._calculatePeriods(inst, inst._show, inst.options.significant, new Date()))));
|
466 |
+
},
|
467 |
+
/** A time may be specified as an exact value or a relative one.
|
468 |
+
@private
|
469 |
+
@param setting {string|number|Date} The date/time value as a relative or absolute value.
|
470 |
+
@param defaultTime {Date} The date/time to use if no other is supplied.
|
471 |
+
@return {Date} The corresponding date/time. */
|
472 |
+
_determineTime: function(setting, defaultTime) {
|
473 |
+
var self = this;
|
474 |
+
var offsetNumeric = function(offset) { // e.g. +300, -2
|
475 |
+
var time = new Date();
|
476 |
+
time.setTime(time.getTime() + offset * 1000);
|
477 |
+
return time;
|
478 |
+
};
|
479 |
+
var offsetString = function(offset) { // e.g. '+2d', '-4w', '+3h +30m'
|
480 |
+
offset = offset.toLowerCase();
|
481 |
+
var time = new Date();
|
482 |
+
var year = time.getFullYear();
|
483 |
+
var month = time.getMonth();
|
484 |
+
var day = time.getDate();
|
485 |
+
var hour = time.getHours();
|
486 |
+
var minute = time.getMinutes();
|
487 |
+
var second = time.getSeconds();
|
488 |
+
var pattern = /([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g;
|
489 |
+
var matches = pattern.exec(offset);
|
490 |
+
while (matches) {
|
491 |
+
switch (matches[2] || 's') {
|
492 |
+
case 's': second += parseInt(matches[1], 10); break;
|
493 |
+
case 'm': minute += parseInt(matches[1], 10); break;
|
494 |
+
case 'h': hour += parseInt(matches[1], 10); break;
|
495 |
+
case 'd': day += parseInt(matches[1], 10); break;
|
496 |
+
case 'w': day += parseInt(matches[1], 10) * 7; break;
|
497 |
+
case 'o':
|
498 |
+
month += parseInt(matches[1], 10);
|
499 |
+
day = Math.min(day, self._getDaysInMonth(year, month));
|
500 |
+
break;
|
501 |
+
case 'y':
|
502 |
+
year += parseInt(matches[1], 10);
|
503 |
+
day = Math.min(day, self._getDaysInMonth(year, month));
|
504 |
+
break;
|
505 |
+
}
|
506 |
+
matches = pattern.exec(offset);
|
507 |
+
}
|
508 |
+
return new Date(year, month, day, hour, minute, second, 0);
|
509 |
+
};
|
510 |
+
var time = (setting == null ? defaultTime :
|
511 |
+
(typeof setting == 'string' ? offsetString(setting) :
|
512 |
+
(typeof setting == 'number' ? offsetNumeric(setting) : setting)));
|
513 |
+
if (time) time.setMilliseconds(0);
|
514 |
+
return time;
|
515 |
+
},
|
516 |
+
/** Determine the number of days in a month.
|
517 |
+
@private
|
518 |
+
@param year {number} The year.
|
519 |
+
@param month {number} The month.
|
520 |
+
@return {number} The days in that month. */
|
521 |
+
_getDaysInMonth: function(year, month) {
|
522 |
+
return 32 - new Date(year, month, 32).getDate();
|
523 |
+
},
|
524 |
+
/** Default implementation to determine which set of labels should be used for an amount.
|
525 |
+
Use the <code>labels</code> attribute with the same numeric suffix (if it exists).
|
526 |
+
@private
|
527 |
+
@param num {number} The amount to be displayed.
|
528 |
+
@return {number} The set of labels to be used for this amount. */
|
529 |
+
_normalLabels: function(num) {
|
530 |
+
return num;
|
531 |
+
},
|
532 |
+
/** Generate the HTML to display the countdown widget.
|
533 |
+
@private
|
534 |
+
@param inst {object} The current settings for this instance.
|
535 |
+
@return {string} The new HTML for the countdown display. */
|
536 |
+
_generateHTML: function(inst) {
|
537 |
+
var self = this;
|
538 |
+
// Determine what to show
|
539 |
+
inst._periods = (inst._hold ? inst._periods :
|
540 |
+
this._calculatePeriods(inst, inst._show, inst.options.significant, new Date()));
|
541 |
+
// Show all 'asNeeded' after first non-zero value
|
542 |
+
var shownNonZero = false;
|
543 |
+
var showCount = 0;
|
544 |
+
var sigCount = inst.options.significant;
|
545 |
+
var show = $.extend({}, inst._show);
|
546 |
+
for (var period = Y; period <= S; period++) {
|
547 |
+
shownNonZero |= (inst._show[period] == '?' && inst._periods[period] > 0);
|
548 |
+
show[period] = (inst._show[period] == '?' && !shownNonZero ? null : inst._show[period]);
|
549 |
+
showCount += (show[period] ? 1 : 0);
|
550 |
+
sigCount -= (inst._periods[period] > 0 ? 1 : 0);
|
551 |
+
}
|
552 |
+
var showSignificant = [false, false, false, false, false, false, false];
|
553 |
+
for (var period = S; period >= Y; period--) { // Determine significant periods
|
554 |
+
if (inst._show[period]) {
|
555 |
+
if (inst._periods[period]) {
|
556 |
+
showSignificant[period] = true;
|
557 |
+
}
|
558 |
+
else {
|
559 |
+
showSignificant[period] = sigCount > 0;
|
560 |
+
sigCount--;
|
561 |
+
}
|
562 |
+
}
|
563 |
+
}
|
564 |
+
var labels = (inst.options.compact ? inst.options.compactLabels : inst.options.labels);
|
565 |
+
var whichLabels = inst.options.whichLabels || this._normalLabels;
|
566 |
+
var showCompact = function(period) {
|
567 |
+
var labelsNum = inst.options['compactLabels' + whichLabels(inst._periods[period])];
|
568 |
+
return (show[period] ? self._translateDigits(inst, inst._periods[period]) +
|
569 |
+
(labelsNum ? labelsNum[period] : labels[period]) + ' ' : '');
|
570 |
+
};
|
571 |
+
var minDigits = (inst.options.padZeroes ? 2 : 1);
|
572 |
+
var showFull = function(period) {
|
573 |
+
var labelsNum = inst.options['labels' + whichLabels(inst._periods[period])];
|
574 |
+
return ((!inst.options.significant && show[period]) ||
|
575 |
+
(inst.options.significant && showSignificant[period]) ?
|
576 |
+
'<span class="' + self._sectionClass + '">' +
|
577 |
+
//SID EDIT
|
578 |
+
'<span class="pre_time-mid">' +
|
579 |
+
'<span class="' + self._amountClass + '">' +
|
580 |
+
self._minDigits(inst, inst._periods[period], minDigits) + '</span>' +
|
581 |
+
'<span class="' + self._periodClass + '">' +
|
582 |
+
(labelsNum ? labelsNum[period] : labels[period]) + '</span></span></span>' : '');
|
583 |
+
};
|
584 |
+
return (inst.options.layout ? this._buildLayout(inst, show, inst.options.layout,
|
585 |
+
inst.options.compact, inst.options.significant, showSignificant) :
|
586 |
+
((inst.options.compact ? // Compact version
|
587 |
+
'<span class="' + this._rowClass + ' ' + this._amountClass +
|
588 |
+
(inst._hold ? ' ' + this._holdingClass : '') + '">' +
|
589 |
+
showCompact(Y) + showCompact(O) + showCompact(W) + showCompact(D) +
|
590 |
+
(show[H] ? this._minDigits(inst, inst._periods[H], 2) : '') +
|
591 |
+
(show[M] ? (show[H] ? inst.options.timeSeparator : '') +
|
592 |
+
this._minDigits(inst, inst._periods[M], 2) : '') +
|
593 |
+
(show[S] ? (show[H] || show[M] ? inst.options.timeSeparator : '') +
|
594 |
+
this._minDigits(inst, inst._periods[S], 2) : '') :
|
595 |
+
// Full version
|
596 |
+
'<span class="' + this._rowClass + ' ' + this._showClass + (inst.options.significant || showCount) +
|
597 |
+
(inst._hold ? ' ' + this._holdingClass : '') + '">' +
|
598 |
+
showFull(Y) + showFull(O) + showFull(W) + showFull(D) +
|
599 |
+
showFull(H) + showFull(M) + showFull(S)) + '</span>' +
|
600 |
+
(inst.options.description ? '<span class="' + this._rowClass + ' ' + this._descrClass + '">' +
|
601 |
+
inst.options.description + '</span>' : '')));
|
602 |
+
},
|
603 |
+
/** Construct a custom layout.
|
604 |
+
@private
|
605 |
+
@param inst {object} The current settings for this instance.
|
606 |
+
@param show {boolean[]} Flags indicating which periods are requested.
|
607 |
+
@param layout {string} The customised layout.
|
608 |
+
@param compact {boolean} True if using compact labels.
|
609 |
+
@param significant {number} The number of periods with values to show, zero for all.
|
610 |
+
@param showSignificant {boolean[]} Other periods to show for significance.
|
611 |
+
@return {string} The custom HTML. */
|
612 |
+
_buildLayout: function(inst, show, layout, compact, significant, showSignificant) {
|
613 |
+
var labels = inst.options[compact ? 'compactLabels' : 'labels'];
|
614 |
+
var whichLabels = inst.options.whichLabels || this._normalLabels;
|
615 |
+
var labelFor = function(index) {
|
616 |
+
return (inst.options[(compact ? 'compactLabels' : 'labels') +
|
617 |
+
whichLabels(inst._periods[index])] || labels)[index];
|
618 |
+
};
|
619 |
+
var digit = function(value, position) {
|
620 |
+
return inst.options.digits[Math.floor(value / position) % 10];
|
621 |
+
};
|
622 |
+
var subs = {desc: inst.options.description, sep: inst.options.timeSeparator,
|
623 |
+
yl: labelFor(Y), yn: this._minDigits(inst, inst._periods[Y], 1),
|
624 |
+
ynn: this._minDigits(inst, inst._periods[Y], 2),
|
625 |
+
ynnn: this._minDigits(inst, inst._periods[Y], 3), y1: digit(inst._periods[Y], 1),
|
626 |
+
y10: digit(inst._periods[Y], 10), y100: digit(inst._periods[Y], 100),
|
627 |
+
y1000: digit(inst._periods[Y], 1000),
|
628 |
+
ol: labelFor(O), on: this._minDigits(inst, inst._periods[O], 1),
|
629 |
+
onn: this._minDigits(inst, inst._periods[O], 2),
|
630 |
+
onnn: this._minDigits(inst, inst._periods[O], 3), o1: digit(inst._periods[O], 1),
|
631 |
+
o10: digit(inst._periods[O], 10), o100: digit(inst._periods[O], 100),
|
632 |
+
o1000: digit(inst._periods[O], 1000),
|
633 |
+
wl: labelFor(W), wn: this._minDigits(inst, inst._periods[W], 1),
|
634 |
+
wnn: this._minDigits(inst, inst._periods[W], 2),
|
635 |
+
wnnn: this._minDigits(inst, inst._periods[W], 3), w1: digit(inst._periods[W], 1),
|
636 |
+
w10: digit(inst._periods[W], 10), w100: digit(inst._periods[W], 100),
|
637 |
+
w1000: digit(inst._periods[W], 1000),
|
638 |
+
dl: labelFor(D), dn: this._minDigits(inst, inst._periods[D], 1),
|
639 |
+
dnn: this._minDigits(inst, inst._periods[D], 2),
|
640 |
+
dnnn: this._minDigits(inst, inst._periods[D], 3), d1: digit(inst._periods[D], 1),
|
641 |
+
d10: digit(inst._periods[D], 10), d100: digit(inst._periods[D], 100),
|
642 |
+
d1000: digit(inst._periods[D], 1000),
|
643 |
+
hl: labelFor(H), hn: this._minDigits(inst, inst._periods[H], 1),
|
644 |
+
hnn: this._minDigits(inst, inst._periods[H], 2),
|
645 |
+
hnnn: this._minDigits(inst, inst._periods[H], 3), h1: digit(inst._periods[H], 1),
|
646 |
+
h10: digit(inst._periods[H], 10), h100: digit(inst._periods[H], 100),
|
647 |
+
h1000: digit(inst._periods[H], 1000),
|
648 |
+
ml: labelFor(M), mn: this._minDigits(inst, inst._periods[M], 1),
|
649 |
+
mnn: this._minDigits(inst, inst._periods[M], 2),
|
650 |
+
mnnn: this._minDigits(inst, inst._periods[M], 3), m1: digit(inst._periods[M], 1),
|
651 |
+
m10: digit(inst._periods[M], 10), m100: digit(inst._periods[M], 100),
|
652 |
+
m1000: digit(inst._periods[M], 1000),
|
653 |
+
sl: labelFor(S), sn: this._minDigits(inst, inst._periods[S], 1),
|
654 |
+
snn: this._minDigits(inst, inst._periods[S], 2),
|
655 |
+
snnn: this._minDigits(inst, inst._periods[S], 3), s1: digit(inst._periods[S], 1),
|
656 |
+
s10: digit(inst._periods[S], 10), s100: digit(inst._periods[S], 100),
|
657 |
+
s1000: digit(inst._periods[S], 1000)};
|
658 |
+
var html = layout;
|
659 |
+
// Replace period containers: {p<}...{p>}
|
660 |
+
for (var i = Y; i <= S; i++) {
|
661 |
+
var period = 'yowdhms'.charAt(i);
|
662 |
+
var re = new RegExp('\\{' + period + '<\\}([\\s\\S]*)\\{' + period + '>\\}', 'g');
|
663 |
+
html = html.replace(re, ((!significant && show[i]) ||
|
664 |
+
(significant && showSignificant[i]) ? '$1' : ''));
|
665 |
+
}
|
666 |
+
// Replace period values: {pn}
|
667 |
+
$.each(subs, function(n, v) {
|
668 |
+
var re = new RegExp('\\{' + n + '\\}', 'g');
|
669 |
+
html = html.replace(re, v);
|
670 |
+
});
|
671 |
+
return html;
|
672 |
+
},
|
673 |
+
/** Ensure a numeric value has at least n digits for display.
|
674 |
+
@private
|
675 |
+
@param inst {object} The current settings for this instance.
|
676 |
+
@param value {number} The value to display.
|
677 |
+
@param len {number} The minimum length.
|
678 |
+
@return {string} The display text. */
|
679 |
+
_minDigits: function(inst, value, len) {
|
680 |
+
value = '' + value;
|
681 |
+
if (value.length >= len) {
|
682 |
+
return this._translateDigits(inst, value);
|
683 |
+
}
|
684 |
+
value = '0000000000' + value;
|
685 |
+
return this._translateDigits(inst, value.substr(value.length - len));
|
686 |
+
},
|
687 |
+
/** Translate digits into other representations.
|
688 |
+
@private
|
689 |
+
@param inst {object} The current settings for this instance.
|
690 |
+
@param value {string} The text to translate.
|
691 |
+
@return {string} The translated text. */
|
692 |
+
_translateDigits: function(inst, value) {
|
693 |
+
return ('' + value).replace(/[0-9]/g, function(digit) {
|
694 |
+
return inst.options.digits[digit];
|
695 |
+
});
|
696 |
+
},
|
697 |
+
/** Translate the format into flags for each period.
|
698 |
+
@private
|
699 |
+
@param inst {object} The current settings for this instance.
|
700 |
+
@return {string[]} Flags indicating which periods are requested (?) or
|
701 |
+
required (!) by year, month, week, day, hour, minute, second. */
|
702 |
+
_determineShow: function(inst) {
|
703 |
+
var format = inst.options.format;
|
704 |
+
var show = [];
|
705 |
+
show[Y] = (format.match('y') ? '?' : (format.match('Y') ? '!' : null));
|
706 |
+
show[O] = (format.match('o') ? '?' : (format.match('O') ? '!' : null));
|
707 |
+
show[W] = (format.match('w') ? '?' : (format.match('W') ? '!' : null));
|
708 |
+
show[D] = (format.match('d') ? '?' : (format.match('D') ? '!' : null));
|
709 |
+
show[H] = (format.match('h') ? '?' : (format.match('H') ? '!' : null));
|
710 |
+
show[M] = (format.match('m') ? '?' : (format.match('M') ? '!' : null));
|
711 |
+
show[S] = (format.match('s') ? '?' : (format.match('S') ? '!' : null));
|
712 |
+
return show;
|
713 |
+
},
|
714 |
+
/** Calculate the requested periods between now and the target time.
|
715 |
+
@private
|
716 |
+
@param inst {object} The current settings for this instance.
|
717 |
+
@param show {string[]} Flags indicating which periods are requested/required.
|
718 |
+
@param significant {number} The number of periods with values to show, zero for all.
|
719 |
+
@param now {Date} The current date and time.
|
720 |
+
@return {number[]} The current time periods (always positive)
|
721 |
+
by year, month, week, day, hour, minute, second. */
|
722 |
+
_calculatePeriods: function(inst, show, significant, now) {
|
723 |
+
// Find endpoints
|
724 |
+
inst._now = now;
|
725 |
+
inst._now.setMilliseconds(0);
|
726 |
+
var until = new Date(inst._now.getTime());
|
727 |
+
if (inst._since) {
|
728 |
+
if (now.getTime() < inst._since.getTime()) {
|
729 |
+
inst._now = now = until;
|
730 |
+
}
|
731 |
+
else {
|
732 |
+
now = inst._since;
|
733 |
+
}
|
734 |
+
}
|
735 |
+
else {
|
736 |
+
until.setTime(inst._until.getTime());
|
737 |
+
if (now.getTime() > inst._until.getTime()) {
|
738 |
+
inst._now = now = until;
|
739 |
+
}
|
740 |
+
}
|
741 |
+
// Calculate differences by period
|
742 |
+
var periods = [0, 0, 0, 0, 0, 0, 0];
|
743 |
+
if (show[Y] || show[O]) {
|
744 |
+
// Treat end of months as the same
|
745 |
+
var lastNow = this._getDaysInMonth(now.getFullYear(), now.getMonth());
|
746 |
+
var lastUntil = this._getDaysInMonth(until.getFullYear(), until.getMonth());
|
747 |
+
var sameDay = (until.getDate() == now.getDate() ||
|
748 |
+
(until.getDate() >= Math.min(lastNow, lastUntil) &&
|
749 |
+
now.getDate() >= Math.min(lastNow, lastUntil)));
|
750 |
+
var getSecs = function(date) {
|
751 |
+
return (date.getHours() * 60 + date.getMinutes()) * 60 + date.getSeconds();
|
752 |
+
};
|
753 |
+
var months = Math.max(0,
|
754 |
+
(until.getFullYear() - now.getFullYear()) * 12 + until.getMonth() - now.getMonth() +
|
755 |
+
((until.getDate() < now.getDate() && !sameDay) ||
|
756 |
+
(sameDay && getSecs(until) < getSecs(now)) ? -1 : 0));
|
757 |
+
periods[Y] = (show[Y] ? Math.floor(months / 12) : 0);
|
758 |
+
periods[O] = (show[O] ? months - periods[Y] * 12 : 0);
|
759 |
+
// Adjust for months difference and end of month if necessary
|
760 |
+
now = new Date(now.getTime());
|
761 |
+
var wasLastDay = (now.getDate() == lastNow);
|
762 |
+
var lastDay = this._getDaysInMonth(now.getFullYear() + periods[Y],
|
763 |
+
now.getMonth() + periods[O]);
|
764 |
+
if (now.getDate() > lastDay) {
|
765 |
+
now.setDate(lastDay);
|
766 |
+
}
|
767 |
+
now.setFullYear(now.getFullYear() + periods[Y]);
|
768 |
+
now.setMonth(now.getMonth() + periods[O]);
|
769 |
+
if (wasLastDay) {
|
770 |
+
now.setDate(lastDay);
|
771 |
+
}
|
772 |
+
}
|
773 |
+
var diff = Math.floor((until.getTime() - now.getTime()) / 1000);
|
774 |
+
var extractPeriod = function(period, numSecs) {
|
775 |
+
periods[period] = (show[period] ? Math.floor(diff / numSecs) : 0);
|
776 |
+
diff -= periods[period] * numSecs;
|
777 |
+
};
|
778 |
+
extractPeriod(W, 604800);
|
779 |
+
extractPeriod(D, 86400);
|
780 |
+
extractPeriod(H, 3600);
|
781 |
+
extractPeriod(M, 60);
|
782 |
+
extractPeriod(S, 1);
|
783 |
+
if (diff > 0 && !inst._since) { // Round up if left overs
|
784 |
+
var multiplier = [1, 12, 4.3482, 7, 24, 60, 60];
|
785 |
+
var lastShown = S;
|
786 |
+
var max = 1;
|
787 |
+
for (var period = S; period >= Y; period--) {
|
788 |
+
if (show[period]) {
|
789 |
+
if (periods[lastShown] >= max) {
|
790 |
+
periods[lastShown] = 0;
|
791 |
+
diff = 1;
|
792 |
+
}
|
793 |
+
if (diff > 0) {
|
794 |
+
periods[period]++;
|
795 |
+
diff = 0;
|
796 |
+
lastShown = period;
|
797 |
+
max = 1;
|
798 |
+
}
|
799 |
+
}
|
800 |
+
max *= multiplier[period];
|
801 |
+
}
|
802 |
+
}
|
803 |
+
if (significant) { // Zero out insignificant periods
|
804 |
+
for (var period = Y; period <= S; period++) {
|
805 |
+
if (significant && periods[period]) {
|
806 |
+
significant--;
|
807 |
+
}
|
808 |
+
else if (!significant) {
|
809 |
+
periods[period] = 0;
|
810 |
+
}
|
811 |
+
}
|
812 |
+
}
|
813 |
+
return periods;
|
814 |
+
}
|
815 |
+
});
|
816 |
+
})(jQuery);
|
assets/js/lib/slickmin.js
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
_ _ _ _
|
3 |
+
___| (_) ___| | __ (_)___
|
4 |
+
/ __| | |/ __| |/ / | / __|
|
5 |
+
\__ \ | | (__| < _ | \__ \
|
6 |
+
|___/_|_|\___|_|\_(_)/ |___/
|
7 |
+
|__/
|
8 |
+
|
9 |
+
Version: 1.6.0
|
10 |
+
Author: Ken Wheeler
|
11 |
+
Website: http://kenwheeler.github.io
|
12 |
+
Docs: http://kenwheeler.github.io/slick
|
13 |
+
Repo: http://github.com/kenwheeler/slick
|
14 |
+
Issues: http://github.com/kenwheeler/slick/issues
|
15 |
+
|
16 |
+
*/
|
17 |
+
!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',nextArrow:'<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(b,c){return a('<button type="button" data-role="none" role="button" tabindex="0" />').text(c+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.focussed=!1,e.interrupted=!1,e.hidden="hidden",e.paused=!0,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,d,f),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0)}var b=0;return c}(),b.prototype.activateADA=function(){var a=this;a.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),e.options.vertical===!1?d[e.animType]="translate3d("+b+"px, 0px, 0px)":d[e.animType]="translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.getNavTarget=function(){var b=this,c=b.options.asNavFor;return c&&null!==c&&(c=a(c).not(b.$slider)),c},b.prototype.asNavFor=function(b){var c=this,d=c.getNavTarget();null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};b.options.fade===!1?c[b.transitionType]=b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:c[b.transitionType]="opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayClear(),a.slideCount>a.options.slidesToShow&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this,b=a.currentSlide+a.options.slidesToScroll;a.paused||a.interrupted||a.focussed||(a.options.infinite===!1&&(1===a.direction&&a.currentSlide+1===a.slideCount-1?a.direction=0:0===a.direction&&(b=a.currentSlide-a.options.slidesToScroll,a.currentSlide-1===0&&(a.direction=1))),a.slideHandler(b))},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass("slick-arrow"),b.$nextArrow=a(b.options.nextArrow).addClass("slick-arrow"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.prependTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(b.$slider.addClass("slick-dotted"),d=a("<ul />").addClass(b.options.dotsClass),c=0;c<=b.getDotCount();c+=1)d.append(a("<li />").append(b.options.customPaging.call(this,b,c)));b.$dots=d.appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('<div class="slick-track"/>').appendTo(b.$slider):b.$slides.wrapAll('<div class="slick-track"/>').parent(),b.$list=b.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;c<a.options.rows;c++){var j=document.createElement("div");for(d=0;d<a.options.slidesPerRow;d++){var k=b*h+(c*a.options.slidesPerRow+d);g.get(k)&&j.appendChild(g.get(k))}i.appendChild(j)}e.appendChild(i)}a.$slider.empty().append(e),a.$slider.children().children().children().css({width:100/a.options.slidesPerRow+"%",display:"inline-block"})}},b.prototype.checkResponsive=function(b,c){var e,f,g,d=this,h=!1,i=d.$slider.width(),j=window.innerWidth||a(window).width();if("window"===d.respondTo?g=j:"slider"===d.respondTo?g=i:"min"===d.respondTo&&(g=Math.min(j,i)),d.options.responsive&&d.options.responsive.length&&null!==d.options.responsive){f=null;for(e in d.breakpoints)d.breakpoints.hasOwnProperty(e)&&(d.originalSettings.mobileFirst===!1?g<d.breakpoints[e]&&(f=d.breakpoints[e]):g>d.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger("breakpoint",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.currentTarget);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=d.slideCount%d.options.slidesToScroll!==0,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(a<c[e]){a=d;break}d=c[e]}return a},b.prototype.cleanUpEvents=function(){var b=this;b.options.dots&&null!==b.$dots&&a("li",b.$dots).off("click.slick",b.changeSlide).off("mouseenter.slick",a.proxy(b.interrupt,b,!0)).off("mouseleave.slick",a.proxy(b.interrupt,b,!1)),b.$slider.off("focus.slick blur.slick"),b.options.arrows===!0&&b.slideCount>b.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.cleanUpSlideEvents(),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpSlideEvents=function(){var b=this;b.$list.off("mouseenter.slick",a.proxy(b.interrupt,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.interrupt,b,!1))},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.empty().append(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.$slider.removeClass("slick-dotted"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.$slidesCache=b.$slides,b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.focusHandler=function(){var b=this;b.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*:not(.slick-arrow)",function(c){c.stopImmediatePropagation();var d=a(this);setTimeout(function(){b.options.pauseOnFocus&&(b.focussed=d.is(":focus"),b.autoPlay())},0)})},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;b<a.slideCount;)++d,b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;else if(a.options.centerMode===!0)d=a.slideCount;else if(a.options.asNavFor)for(;b<a.slideCount;)++d,b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;else d=1+Math.ceil((a.slideCount-a.options.slidesToShow)/a.options.slidesToScroll);return d-1},b.prototype.getLeft=function(a){var c,d,f,b=this,e=0;return b.slideOffset=0,d=b.$slides.first().outerHeight(!0),b.options.infinite===!0?(b.slideCount>b.options.slidesToShow&&(b.slideOffset=b.slideWidth*b.options.slidesToShow*-1,e=d*b.options.slidesToShow*-1),b.slideCount%b.options.slidesToScroll!==0&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth*-1,e=(b.options.slidesToShow-(a-b.slideCount))*d*-1):(b.slideOffset=b.slideCount%b.options.slidesToScroll*b.slideWidth*-1,e=b.slideCount%b.options.slidesToScroll*d*-1))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?a*b.slideWidth*-1+b.slideOffset:a*d*-1+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots(),c.checkResponsive(!0),c.focusHandler()),b&&c.$slider.trigger("init",[c]),c.options.accessibility===!0&&c.initADA(),c.options.autoplay&&(c.paused=!1,c.autoPlay())},b.prototype.initADA=function(){var b=this;b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),b.$slideTrack.attr("role","listbox"),b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c){a(this).attr({role:"option","aria-describedby":"slick-slide"+b.instanceUid+c})}),null!==b.$dots&&b.$dots.attr("role","tablist").find("li").each(function(c){a(this).attr({role:"presentation","aria-selected":"false","aria-controls":"navigation"+b.instanceUid+c,id:"slick-slide"+b.instanceUid+c})}).first().attr("aria-selected","true").end().find("button").attr("role","button").end().closest("div").attr("role","toolbar"),b.activateADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.off("click.slick").on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.interrupt,b,!0)).on("mouseleave.slick",a.proxy(b.interrupt,b,!1))},b.prototype.initSlideEvents=function(){var b=this;b.options.pauseOnHover&&(b.$list.on("mouseenter.slick",a.proxy(b.interrupt,b,!0)),b.$list.on("mouseleave.slick",a.proxy(b.interrupt,b,!1)))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.initSlideEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:b.options.rtl===!0?"next":"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:b.options.rtl===!0?"previous":"next"}}))},b.prototype.lazyLoad=function(){function g(c){a("img[data-lazy]",c).each(function(){var c=a(this),d=a(this).attr("data-lazy"),e=document.createElement("img");e.onload=function(){c.animate({opacity:0},100,function(){c.attr("src",d).animate({opacity:1},200,function(){c.removeAttr("data-lazy").removeClass("slick-loading")}),b.$slider.trigger("lazyLoaded",[b,c,d])})},e.onerror=function(){c.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),b.$slider.trigger("lazyLoadError",[b,c,d])},e.src=d})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=Math.ceil(e+b.options.slidesToShow),b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.autoPlay(),a.options.autoplay=!0,a.paused=!1,a.focussed=!1,a.interrupted=!1},b.prototype.postSlide=function(a){var b=this;b.unslicked||(b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay&&b.autoPlay(),b.options.accessibility===!0&&b.initADA())},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(b){b=b||1;var e,f,g,c=this,d=a("img[data-lazy]",c.$slider);d.length?(e=d.first(),f=e.attr("data-lazy"),g=document.createElement("img"),g.onload=function(){e.attr("src",f).removeAttr("data-lazy").removeClass("slick-loading"),c.options.adaptiveHeight===!0&&c.setPosition(),c.$slider.trigger("lazyLoaded",[c,e,f]),c.progressiveLazyLoad()},g.onerror=function(){3>b?setTimeout(function(){c.progressiveLazyLoad(b+1)},500):(e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),c.$slider.trigger("lazyLoadError",[c,e,f]),c.progressiveLazyLoad())},g.src=f):c.$slider.trigger("allImagesLoaded",[c])},b.prototype.refresh=function(b){var d,e,c=this;e=c.slideCount-c.options.slidesToShow,!c.options.infinite&&c.currentSlide>e&&(c.currentSlide=e),c.slideCount<=c.options.slidesToShow&&(c.currentSlide=0),d=c.currentSlide,c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if("array"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||"window";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.cleanUpSlideEvents(),b.initSlideEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.setPosition(),b.focusHandler(),b.paused=!b.options.autoplay,b.autoPlay(),b.$slider.trigger("reInit",[b])},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,void d.reinit())},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=b.slideWidth*d*-1,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(){var c,d,e,f,h,b=this,g=!1;if("object"===a.type(arguments[0])?(e=arguments[0],g=arguments[1],h="multiple"):"string"===a.type(arguments[0])&&(e=arguments[0],f=arguments[1],g=arguments[2],"responsive"===arguments[0]&&"array"===a.type(arguments[1])?h="responsive":"undefined"!=typeof arguments[1]&&(h="single")),"single"===h)b.options[e]=f;else if("multiple"===h)a.each(e,function(a,c){b.options[a]=c});else if("responsive"===h)for(d in f)if("array"!==a.type(b.options.responsive))b.options.responsive=[f[d]];else{for(c=b.options.responsive.length-1;c>=0;)b.options.responsive[c].breakpoint===f[d].breakpoint&&b.options.responsive.splice(c,1),c--;b.options.responsive.push(f[d])}g&&(b.unload(),b.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&("number"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=a.options.useTransform&&null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),b.$slides.eq(a).addClass("slick-current"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a,
|
18 |
+
d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-a<b.options.slidesToShow?d.slice(e-(b.options.slidesToShow-f),e+f).addClass("slick-active").attr("aria-hidden","false"):d.slice(e,e+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false")),"ondemand"===b.options.lazyLoad&&b.lazyLoad()},b.prototype.setupInfinite=function(){var c,d,e,b=this;if(b.options.fade===!0&&(b.options.centerMode=!1),b.options.infinite===!0&&b.options.fade===!1&&(d=null,b.slideCount>b.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.interrupt=function(a){var b=this;a||b.autoPlay(),b.interrupted=a},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),void c.asNavFor(e)):void c.slideHandler(e)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,j,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d))):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d))):(i.options.autoplay&&clearInterval(i.autoPlayTimer),e=0>d?i.slideCount%i.options.slidesToScroll!==0?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?i.slideCount%i.options.slidesToScroll!==0?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.options.asNavFor&&(j=i.getNavTarget(),j=j.slick("getSlick"),j.slideCount<=j.options.slidesToShow&&j.setSlideClasses(i.currentSlide)),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?(i.fadeSlideOut(f),i.fadeSlide(e,function(){i.postSlide(e)})):i.postSlide(e),void i.animateHeight()):void(c!==!0?i.animateSlide(h,function(){i.postSlide(e)}):i.postSlide(e))))},b.prototype.startLoad=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.hide(),a.$nextArrow.hide()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.hide(),a.$slider.addClass("slick-loading")},b.prototype.swipeDirection=function(){var a,b,c,d,e=this;return a=e.touchObject.startX-e.touchObject.curX,b=e.touchObject.startY-e.touchObject.curY,c=Math.atan2(b,a),d=Math.round(180*c/Math.PI),0>d&&(d=360-Math.abs(d)),45>=d&&d>=0?e.options.rtl===!1?"left":"right":360>=d&&d>=315?e.options.rtl===!1?"left":"right":d>=135&&225>=d?e.options.rtl===!1?"right":"left":e.options.verticalSwiping===!0?d>=35&&135>=d?"down":"up":"vertical"},b.prototype.swipeEnd=function(a){var c,d,b=this;if(b.dragging=!1,b.interrupted=!1,b.shouldClick=b.touchObject.swipeLength>10?!1:!0,void 0===b.touchObject.curX)return!1;if(b.touchObject.edgeHit===!0&&b.$slider.trigger("edge",[b,b.swipeDirection()]),b.touchObject.swipeLength>=b.touchObject.minSwipe){switch(d=b.swipeDirection()){case"left":case"down":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide+b.getSlideCount()):b.currentSlide+b.getSlideCount(),b.currentDirection=0;break;case"right":case"up":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide-b.getSlideCount()):b.currentSlide-b.getSlideCount(),b.currentDirection=1}"vertical"!=d&&(b.slideHandler(c),b.touchObject={},b.$slider.trigger("swipe",[b,d]))}else b.touchObject.startX!==b.touchObject.curX&&(b.slideHandler(b.currentSlide),b.touchObject={})},b.prototype.swipeHandler=function(a){var b=this;if(!(b.options.swipe===!1||"ontouchend"in document&&b.options.swipe===!1||b.options.draggable===!1&&-1!==a.type.indexOf("mouse")))switch(b.touchObject.fingerCount=a.originalEvent&&void 0!==a.originalEvent.touches?a.originalEvent.touches.length:1,b.touchObject.minSwipe=b.listWidth/b.options.touchThreshold,b.options.verticalSwiping===!0&&(b.touchObject.minSwipe=b.listHeight/b.options.touchThreshold),a.data.action){case"start":b.swipeStart(a);break;case"move":b.swipeMove(a);break;case"end":b.swipeEnd(a)}},b.prototype.swipeMove=function(a){var d,e,f,g,h,b=this;return h=void 0!==a.originalEvent?a.originalEvent.touches:null,!b.dragging||h&&1!==h.length?!1:(d=b.getLeft(b.currentSlide),b.touchObject.curX=void 0!==h?h[0].pageX:a.clientX,b.touchObject.curY=void 0!==h?h[0].pageY:a.clientY,b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curX-b.touchObject.startX,2))),b.options.verticalSwiping===!0&&(b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curY-b.touchObject.startY,2)))),e=b.swipeDirection(),"vertical"!==e?(void 0!==a.originalEvent&&b.touchObject.swipeLength>4&&a.preventDefault(),g=(b.options.rtl===!1?1:-1)*(b.touchObject.curX>b.touchObject.startX?1:-1),b.options.verticalSwiping===!0&&(g=b.touchObject.curY>b.touchObject.startY?1:-1),f=b.touchObject.swipeLength,b.touchObject.edgeHit=!1,b.options.infinite===!1&&(0===b.currentSlide&&"right"===e||b.currentSlide>=b.getDotCount()&&"left"===e)&&(f=b.touchObject.swipeLength*b.options.edgeFriction,b.touchObject.edgeHit=!0),b.options.vertical===!1?b.swipeLeft=d+f*g:b.swipeLeft=d+f*(b.$list.height()/b.listWidth)*g,b.options.verticalSwiping===!0&&(b.swipeLeft=d+f*g),b.options.fade===!0||b.options.touchMove===!1?!1:b.animating===!0?(b.swipeLeft=null,!1):void b.setCSS(b.swipeLeft)):void 0)},b.prototype.swipeStart=function(a){var c,b=this;return b.interrupted=!0,1!==b.touchObject.fingerCount||b.slideCount<=b.options.slidesToShow?(b.touchObject={},!1):(void 0!==a.originalEvent&&void 0!==a.originalEvent.touches&&(c=a.originalEvent.touches[0]),b.touchObject.startX=b.touchObject.curX=void 0!==c?c.pageX:a.clientX,b.touchObject.startY=b.touchObject.curY=void 0!==c?c.pageY:a.clientY,void(b.dragging=!0))},b.prototype.unfilterSlides=b.prototype.slickUnfilter=function(){var a=this;null!==a.$slidesCache&&(a.unload(),a.$slideTrack.children(this.options.slide).detach(),a.$slidesCache.appendTo(a.$slideTrack),a.reinit())},b.prototype.unload=function(){var b=this;a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.remove(),b.$nextArrow&&b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.remove(),b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},b.prototype.unslick=function(a){var b=this;b.$slider.trigger("unslick",[b,a]),b.destroy()},b.prototype.updateArrows=function(){var b,a=this;b=Math.floor(a.options.slidesToShow/2),a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&!a.options.infinite&&(a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===a.currentSlide?(a.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-a.options.slidesToShow&&a.options.centerMode===!1?(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-1&&a.options.centerMode===!0&&(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},b.prototype.updateDots=function(){var a=this;null!==a.$dots&&(a.$dots.find("li").removeClass("slick-active").attr("aria-hidden","true"),a.$dots.find("li").eq(Math.floor(a.currentSlide/a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden","false"))},b.prototype.visibility=function(){var a=this;a.options.autoplay&&(document[a.hidden]?a.interrupted=!0:a.interrupted=!1)},a.fn.slick=function(){var f,g,a=this,c=arguments[0],d=Array.prototype.slice.call(arguments,1),e=a.length;for(f=0;e>f;f++)if("object"==typeof c||"undefined"==typeof c?a[f].slick=new b(a[f],c):g=a[f].slick[c].apply(a[f].slick,d),"undefined"!=typeof g)return g;return a}});
|
assets/js/lib/typedmin.js
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
/* https://github.com/mattboldt/typed.js/ */
|
2 |
+
!function(t,s,e){"use strict";var i=function(t,s){var i=this;this.el=t,this.options={},Object.keys(r).forEach(function(t){i.options[t]=r[t]}),Object.keys(s).forEach(function(t){i.options[t]=s[t]}),this.isInput="input"===this.el.tagName.toLowerCase(),this.attr=this.options.attr,this.showCursor=!this.isInput&&this.options.showCursor,this.elContent=this.attr?this.el.getAttribute(this.attr):this.el.textContent,this.contentType=this.options.contentType,this.typeSpeed=this.options.typeSpeed,this.startDelay=this.options.startDelay,this.backSpeed=this.options.backSpeed,this.backDelay=this.options.backDelay,e&&this.options.stringsElement instanceof e?this.stringsElement=this.options.stringsElement[0]:this.stringsElement=this.options.stringsElement,this.strings=this.options.strings,this.strPos=0,this.arrayPos=0,this.stopNum=0,this.loop=this.options.loop,this.loopCount=this.options.loopCount,this.curLoop=0,this.stop=!1,this.cursorChar=this.options.cursorChar,this.shuffle=this.options.shuffle,this.sequence=[],this.build()};i.prototype={constructor:i,init:function(){var t=this;t.timeout=setTimeout(function(){for(var s=0;s<t.strings.length;++s)t.sequence[s]=s;t.shuffle&&(t.sequence=t.shuffleArray(t.sequence)),t.typewrite(t.strings[t.sequence[t.arrayPos]],t.strPos)},t.startDelay)},build:function(){var t=this;if(this.showCursor===!0&&(this.cursor=s.createElement("span"),this.cursor.className="typed-cursor",this.cursor.innerHTML=this.cursorChar,this.el.parentNode&&this.el.parentNode.insertBefore(this.cursor,this.el.nextSibling)),this.stringsElement){this.strings=[],this.stringsElement.style.display="none";var e=Array.prototype.slice.apply(this.stringsElement.children);e.forEach(function(s){t.strings.push(s.innerHTML)})}this.init()},typewrite:function(t,s){if(this.stop!==!0){var e=Math.round(70*Math.random())+this.typeSpeed,i=this;i.timeout=setTimeout(function(){var e=0,r=t.substr(s);if("^"===r.charAt(0)){var o=1;/^\^\d+/.test(r)&&(r=/\d+/.exec(r)[0],o+=r.length,e=parseInt(r)),t=t.substring(0,s)+t.substring(s+o)}if("html"===i.contentType){var n=t.substr(s).charAt(0);if("<"===n||"&"===n){var a="",h="";for(h="<"===n?">":";";t.substr(s+1).charAt(0)!==h&&(a+=t.substr(s).charAt(0),s++,!(s+1>t.length)););s++,a+=h}}i.timeout=setTimeout(function(){if(s===t.length){if(i.options.onStringTyped(i.arrayPos),i.arrayPos===i.strings.length-1&&(i.options.callback(),i.curLoop++,i.loop===!1||i.curLoop===i.loopCount))return;i.timeout=setTimeout(function(){i.backspace(t,s)},i.backDelay)}else{0===s&&i.options.preStringTyped(i.arrayPos);var e=t.substr(0,s+1);i.attr?i.el.setAttribute(i.attr,e):i.isInput?i.el.value=e:"html"===i.contentType?i.el.innerHTML=e:i.el.textContent=e,s++,i.typewrite(t,s)}},e)},e)}},backspace:function(t,s){if(this.stop!==!0){var e=Math.round(70*Math.random())+this.backSpeed,i=this;i.timeout=setTimeout(function(){if("html"===i.contentType&&">"===t.substr(s).charAt(0)){for(var e="";"<"!==t.substr(s-1).charAt(0)&&(e-=t.substr(s).charAt(0),s--,!(s<0)););s--,e+="<"}var r=t.substr(0,s);i.attr?i.el.setAttribute(i.attr,r):i.isInput?i.el.value=r:"html"===i.contentType?i.el.innerHTML=r:i.el.textContent=r,s>i.stopNum?(s--,i.backspace(t,s)):s<=i.stopNum&&(i.arrayPos++,i.arrayPos===i.strings.length?(i.arrayPos=0,i.shuffle&&(i.sequence=i.shuffleArray(i.sequence)),i.init()):i.typewrite(i.strings[i.sequence[i.arrayPos]],s))},e)}},shuffleArray:function(t){var s,e,i=t.length;if(i)for(;--i;)e=Math.floor(Math.random()*(i+1)),s=t[e],t[e]=t[i],t[i]=s;return t},reset:function(){var t=this;clearInterval(t.timeout);this.el.getAttribute("id");this.el.textContent="","undefined"!=typeof this.cursor&&"undefined"!=typeof this.cursor.parentNode&&this.cursor.parentNode.removeChild(this.cursor),this.strPos=0,this.arrayPos=0,this.curLoop=0,this.options.resetCallback()}},i["new"]=function(t,e){var r=Array.prototype.slice.apply(s.querySelectorAll(t));r.forEach(function(t){var s=t._typed,r="object"==typeof e&&e;s&&s.reset(),t._typed=s=new i(t,r),"string"==typeof e&&s[e]()})},e&&(e.fn.typed=function(t){return this.each(function(){var s=e(this),r=s.data("typed"),o="object"==typeof t&&t;r&&r.reset(),s.data("typed",r=new i(this,o)),"string"==typeof t&&r[t]()})}),t.Typed=i;var r={strings:["These are the default values...","You know what you should do?","Use your own!","Have a great day!"],stringsElement:null,typeSpeed:0,startDelay:0,backSpeed:0,shuffle:!1,backDelay:500,loop:!1,loopCount:!1,showCursor:!0,cursorChar:"|",attr:null,contentType:"html",callback:function(){},preStringTyped:function(){},onStringTyped:function(){},resetCallback:function(){}}}(window,document,window.jQuery);
|
3 |
+
|
assets/js/premium-addons.js
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*****
|
2 |
+
* Progress Bar
|
3 |
+
*/
|
4 |
+
|
5 |
+
jQuery(function($){
|
6 |
+
$(document).ready(function(){
|
7 |
+
var i = 0;
|
8 |
+
$(".premium-progressbar-progress-bar").css('width','0');
|
9 |
+
var number_of_progress_bars = $(".premium-progressbar-progress-bar").length;
|
10 |
+
for(;;){if(i >= number_of_progress_bars){break;} scrollFunction(i); i = i + 1;}
|
11 |
+
});
|
12 |
+
});
|
13 |
+
|
14 |
+
|
15 |
+
function scrollFunction(progressBar){
|
16 |
+
jQuery(function($){$(document).scroll(function(){
|
17 |
+
if( $(this).scrollTop() >= $(".premium-progressbar-progress:eq(" + progressBar+ ")").offset().top - 600 ){
|
18 |
+
$(".premium-progressbar-progress-bar:eq("+progressBar+")").animate({
|
19 |
+
width: $(".premium-progressbar-progress-bar:eq("+progressBar+")").attr('aria-valuenow') + '%'
|
20 |
+
},1000);
|
21 |
+
}
|
22 |
+
});
|
23 |
+
});
|
24 |
+
};
|
25 |
+
|
elementor-helper.php
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
|
5 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
6 |
+
|
7 |
+
|
8 |
+
/**
|
9 |
+
* premium_Templat_Tags class defines all the query of options of select box
|
10 |
+
*
|
11 |
+
* Setting up the helper assets of the premium widgets
|
12 |
+
*
|
13 |
+
* @since 1.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
class premium_Template_Tags {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Instance of this class
|
20 |
+
* @since 1.0
|
21 |
+
*/
|
22 |
+
|
23 |
+
protected static $instance;
|
24 |
+
|
25 |
+
|
26 |
+
/**
|
27 |
+
* $options is option field of select
|
28 |
+
*
|
29 |
+
* @access protected
|
30 |
+
*
|
31 |
+
* @since 1.0
|
32 |
+
*/
|
33 |
+
protected $options;
|
34 |
+
|
35 |
+
/**
|
36 |
+
* set instance of this class
|
37 |
+
*/
|
38 |
+
|
39 |
+
public static function getInstance() {
|
40 |
+
if( !static::$instance ) {
|
41 |
+
static::$instance = new self;
|
42 |
+
}
|
43 |
+
return static::$instance;
|
44 |
+
}
|
45 |
+
|
46 |
+
|
47 |
+
public function get_all_post() {
|
48 |
+
|
49 |
+
$post_types = get_post_types();
|
50 |
+
$post_type_not__in = array('attachment', 'revision', 'nav_menu_item', 'custom_css', 'customize_changeset', 'elementor_library');
|
51 |
+
|
52 |
+
foreach ( $post_type_not__in as $post_type_not ) {
|
53 |
+
unset( $post_types[$post_type_not] );
|
54 |
+
}
|
55 |
+
$post_type = array_values( $post_types );
|
56 |
+
|
57 |
+
$all_posts = get_posts( array(
|
58 |
+
'post_type' => $post_type
|
59 |
+
)
|
60 |
+
);
|
61 |
+
|
62 |
+
if( !empty( $all_posts ) && !is_wp_error( $all_posts ) ) {
|
63 |
+
foreach ( $all_posts as $post ) {
|
64 |
+
$this->options[ $post->ID ] = strlen( $post->post_title ) > 20 ? substr( $post->post_title, 0, 20 ).'...' : $post->post_title;
|
65 |
+
}
|
66 |
+
}
|
67 |
+
return $this->options;
|
68 |
+
}
|
69 |
+
|
70 |
+
public function get_elementor_page_list(){
|
71 |
+
$pagelist = get_posts(array(
|
72 |
+
'post_type' => 'elementor_library',
|
73 |
+
'showposts' => 999,
|
74 |
+
));
|
75 |
+
|
76 |
+
if ( ! empty( $pagelist ) && ! is_wp_error( $pagelist ) ){
|
77 |
+
foreach ( $pagelist as $post ) {
|
78 |
+
$options[ $post->ID ] = __( $post->post_title, 'premium_elemnetor' );
|
79 |
+
}
|
80 |
+
update_option( 'temp_count', $options );
|
81 |
+
return $options;
|
82 |
+
}
|
83 |
+
}
|
84 |
+
}
|
index.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Silence is golden
|
4 |
+
*
|
5 |
+
* @package Premium Addons
|
6 |
+
* @category Core
|
7 |
+
* @author Leap13
|
8 |
+
* @license GPL-2.0+
|
9 |
+
*/
|
premium-addons.php
ADDED
@@ -0,0 +1,219 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: Premium Addons for Elementor
|
4 |
+
Description: Page Builder Add-ons for Elementor
|
5 |
+
Plugin URI: https://premiumaddons.com
|
6 |
+
Version: 1.0
|
7 |
+
Author: Leap13
|
8 |
+
Author URI: http://leap13.com/
|
9 |
+
Text Domain: premium-addons-leap13
|
10 |
+
License: GNU General Public License v3.0
|
11 |
+
*/
|
12 |
+
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Checking the set ups and the environment
|
16 |
+
*/
|
17 |
+
|
18 |
+
if( !function_exists('add_action') ) {
|
19 |
+
die('WordPress not Installed'); // if WordPress not installed kill the page.
|
20 |
+
}
|
21 |
+
|
22 |
+
if( !defined( 'ABSPATH' ) ) exit; // No access of directly access
|
23 |
+
|
24 |
+
define( 'PREMIUM_ADDONS_URL', plugins_url('/', __FILE__ ) );
|
25 |
+
define( 'PREMIUM_ADDONS_PATH', plugin_dir_path( __FILE__ ) );
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Translating the plugins and load some
|
29 |
+
* assets
|
30 |
+
*/
|
31 |
+
add_action( 'plugins_loaded', 'premium_addons_elementor_setup');
|
32 |
+
function premium_addons_elementor_setup() {
|
33 |
+
// Loading .mo and.po file from the lang folder
|
34 |
+
load_plugin_textdomain( 'premium_elementor', false, dirname( plugin_basename( __FILE__ ) ) . '/lang' );
|
35 |
+
|
36 |
+
|
37 |
+
// Requires Elmentor Page builder & activation
|
38 |
+
|
39 |
+
if( file_exists( PREMIUM_ADDONS_PATH . 'admin/activation/elementor-activation.php' ) ) {
|
40 |
+
require_once( PREMIUM_ADDONS_PATH . 'admin/activation/elementor-activation.php' );
|
41 |
+
}
|
42 |
+
|
43 |
+
// load the template tags
|
44 |
+
if( file_exists( PREMIUM_ADDONS_PATH.'elementor-helper.php' ) ) {
|
45 |
+
require_once( PREMIUM_ADDONS_PATH.'elementor-helper.php' );
|
46 |
+
}
|
47 |
+
|
48 |
+
if( file_exists( PREMIUM_ADDONS_PATH.'admin/settings-page.php' ) ) {
|
49 |
+
require_once( PREMIUM_ADDONS_PATH.'admin/settings-page.php' );
|
50 |
+
}
|
51 |
+
|
52 |
+
|
53 |
+
/*
|
54 |
+
* Instantiate the premium Addons for the elementor page builder
|
55 |
+
* Included 1. 'premium_addons_widget_register()' for the main method for initaite addons
|
56 |
+
* 2. 'premium_addons_widgets_area()' creating the widgets
|
57 |
+
* 3. 'initiate_elementor_addons()' creating the category of the widgets
|
58 |
+
*/
|
59 |
+
|
60 |
+
new premium_Addon_Elementor();
|
61 |
+
}
|
62 |
+
// CSS THAT DISPLAYS ON EDITOR PANEL
|
63 |
+
add_action( 'elementor/editor/before_enqueue_scripts', function() {
|
64 |
+
wp_register_style( 'premium-elements-progression-admin-styles', PREMIUM_ADDONS_URL . 'admin/assets/pa-elements-font/css/pa-elements.css' );
|
65 |
+
wp_enqueue_style( 'premium-elements-progression-admin-styles' );
|
66 |
+
|
67 |
+
} );
|
68 |
+
|
69 |
+
class premium_Addon_Elementor {
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Load all the hooks here
|
73 |
+
* @since 1.0
|
74 |
+
*/
|
75 |
+
public function __construct() {
|
76 |
+
add_action( 'elementor/init', array( $this, 'initiate_elementor_addons' ) );
|
77 |
+
add_action( 'elementor/widgets/widgets_registered', array( $this, 'premium_addons_widget_register') );
|
78 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'premium_addons_required_assets') );
|
79 |
+
add_action( 'elementor/frontend/after_register_styles', array( $this, 'frontendafter_style') );
|
80 |
+
add_action( 'elementor/preview/enqueue_styles', array( $this, 'elementor_preview_styles' ) );
|
81 |
+
}
|
82 |
+
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Load all frontend assets file such as stylesheet & javascript files
|
86 |
+
* @since 1.0
|
87 |
+
*/
|
88 |
+
public function premium_addons_required_assets() {
|
89 |
+
$check_component_active = get_option( 'pa_save_settings' );
|
90 |
+
wp_enqueue_style( 'fontAwesome', 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css', array(), '4.7.0', 'all' );
|
91 |
+
wp_enqueue_style( 'premium-addons-css', PREMIUM_ADDONS_URL . 'assets/css/premium-addons.css', array(), '1.0', 'all' );
|
92 |
+
|
93 |
+
wp_enqueue_style( 'animate-css', PREMIUM_ADDONS_URL . 'assets/css/animate.css', array(), '1.6.0', 'all' );
|
94 |
+
|
95 |
+
wp_enqueue_script('premium-addons-js', PREMIUM_ADDONS_URL .'assets/js/premium-addons.js', array( 'jquery' ), '2.1.0', true );
|
96 |
+
|
97 |
+
if( $check_component_active['premium-carousel'] ) {
|
98 |
+
wp_enqueue_script( 'slick-carousel-js', PREMIUM_ADDONS_URL .'assets/js/lib/slickmin.js', array( 'jquery' ), '1.6.0', true );
|
99 |
+
}
|
100 |
+
if( $check_component_active['premium-countdown'] ) {
|
101 |
+
wp_enqueue_script( 'count-down-timer-js', PREMIUM_ADDONS_URL .'assets/js/lib/jquerycountdown.js', array( 'jquery' ), '2.1.0', true );
|
102 |
+
}
|
103 |
+
if( $check_component_active['premium-counter'] ) {
|
104 |
+
wp_enqueue_script( 'counter-up-js', PREMIUM_ADDONS_URL .'assets/js/lib/countUpmin.js', array( 'jquery' ), '2.1.0', true );
|
105 |
+
}
|
106 |
+
if( $check_component_active['premium-fancytext'] ) {
|
107 |
+
wp_enqueue_script('vticker-js', PREMIUM_ADDONS_URL .'assets/js/lib/Vticker.js', array( 'jquery' ), '1.0', true);
|
108 |
+
wp_enqueue_script('typed-js', PREMIUM_ADDONS_URL .'assets/js/lib/typedmin.js', array( 'jquery' ), '1.0', true);
|
109 |
+
}
|
110 |
+
if( $check_component_active['premium-maps'] ) {
|
111 |
+
wp_enqueue_script('google-maps', 'http://maps.google.com/maps/api/js?sensor=false');
|
112 |
+
wp_enqueue_script('gomap', PREMIUM_ADDONS_URL. 'assets/js/lib/gomap.js', array( 'jquery' ), '1.0', true);
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
* Deregister for the default animations.min.css file
|
118 |
+
* @since 1.0
|
119 |
+
*/
|
120 |
+
public function frontendafter_style() {
|
121 |
+
wp_deregister_style( 'elementor-animations' );
|
122 |
+
}
|
123 |
+
|
124 |
+
|
125 |
+
|
126 |
+
// CSS THAT DISPLAYS ONLY WHEN EDITOR IS OPEN ON IFRAME
|
127 |
+
public function elementor_preview_styles() {
|
128 |
+
wp_enqueue_style( 'elementor-edit-preview', PREMIUM_ADDONS_URL .'assets/css/elementor-preview-style.css' );
|
129 |
+
}
|
130 |
+
|
131 |
+
public function premium_addons_widget_register() {
|
132 |
+
$this->initiate_elementor_addons();
|
133 |
+
$this->premium_addons_widgets_area();
|
134 |
+
}
|
135 |
+
|
136 |
+
private function premium_addons_widgets_area() {
|
137 |
+
$pa_elements_keys = ['premium-banner', 'premium-blog','premium-carousel', 'premium-countdown','premium-counter','premium-dual-header','premium-fancytext','premium-image-separator','premium-maps','premium-modalbox','premium-person','premium-progressbar','premium-testimonials','premium-title','premium-videobox'];
|
138 |
+
|
139 |
+
$pa_default_settings = array_fill_keys( $pa_elements_keys, true );
|
140 |
+
|
141 |
+
$check_component_active = get_option( 'pa_save_settings', $pa_default_settings );
|
142 |
+
|
143 |
+
if( $check_component_active['premium-banner'] ) {
|
144 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-banner.php' );
|
145 |
+
}
|
146 |
+
if( $check_component_active['premium-carousel'] ) {
|
147 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-carousel.php' );
|
148 |
+
}
|
149 |
+
|
150 |
+
if( $check_component_active['premium-countdown'] ) {
|
151 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-countdown.php' );
|
152 |
+
}
|
153 |
+
|
154 |
+
if( $check_component_active['premium-counter'] ) {
|
155 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-counter.php' );
|
156 |
+
}
|
157 |
+
|
158 |
+
if( $check_component_active['premium-image-separator'] ) {
|
159 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-imageseparator.php' );
|
160 |
+
}
|
161 |
+
|
162 |
+
if( $check_component_active['premium-modalbox'] ) {
|
163 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-modalbox.php' );
|
164 |
+
}
|
165 |
+
if( $check_component_active['premium-progressbar'] ) {
|
166 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-progressbar.php' );
|
167 |
+
}
|
168 |
+
|
169 |
+
if( $check_component_active['premium-testimonials'] ) {
|
170 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-testimonials.php' );
|
171 |
+
}
|
172 |
+
|
173 |
+
if( $check_component_active['premium-title'] ) {
|
174 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-title.php' );
|
175 |
+
}
|
176 |
+
|
177 |
+
if( $check_component_active['premium-fancytext'] ) {
|
178 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-fancytext.php' );
|
179 |
+
}
|
180 |
+
|
181 |
+
if( $check_component_active['premium-videobox'] ) {
|
182 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-videobox.php' );
|
183 |
+
}
|
184 |
+
|
185 |
+
if( $check_component_active['premium-blog'] ) {
|
186 |
+
require_once( PREMIUM_ADDONS_PATH.'queries.php' );
|
187 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-blog.php' );
|
188 |
+
}
|
189 |
+
|
190 |
+
if( $check_component_active['premium-person'] ) {
|
191 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-person.php' );
|
192 |
+
}
|
193 |
+
|
194 |
+
if( $check_component_active['premium-maps'] ) {
|
195 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-maps.php' );
|
196 |
+
}
|
197 |
+
|
198 |
+
if( $check_component_active['premium-dual-header'] ) {
|
199 |
+
require_once( PREMIUM_ADDONS_PATH. 'widgets/premium-dual-header.php' );
|
200 |
+
}
|
201 |
+
|
202 |
+
}
|
203 |
+
|
204 |
+
public function initiate_elementor_addons() {
|
205 |
+
Elementor\Plugin::instance()->elements_manager->add_category(
|
206 |
+
'premium-elements',
|
207 |
+
array(
|
208 |
+
'title' => __( 'Premium Addons', 'premium_elementor' )
|
209 |
+
),
|
210 |
+
1
|
211 |
+
);
|
212 |
+
}
|
213 |
+
}
|
214 |
+
|
215 |
+
|
216 |
+
|
217 |
+
|
218 |
+
|
219 |
+
|
queries.php
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
function premium_blog_get_post_data($args, $paged, $new_offset){
|
5 |
+
$defaults = array(
|
6 |
+
'category' => '',
|
7 |
+
'posts_per_page' => 1,
|
8 |
+
'paged' => $paged,
|
9 |
+
'offset' => $new_offset,
|
10 |
+
);
|
11 |
+
|
12 |
+
$atts = wp_parse_args($args,$defaults);
|
13 |
+
|
14 |
+
$posts = get_posts($atts);
|
15 |
+
|
16 |
+
return $posts;
|
17 |
+
}
|
18 |
+
|
19 |
+
function premium_blog_get_post_settings($settings){
|
20 |
+
$post_args['category'] = $settings['premium_blog_categories'];
|
21 |
+
$post_args['posts_per_page'] = $settings['premium_blog_number_of_posts'];
|
22 |
+
|
23 |
+
return $post_args;
|
24 |
+
}
|
25 |
+
|
26 |
+
function premium_addons_get_excerpt_by_id($post_id,$excerpt_length){
|
27 |
+
$the_post = get_post($post_id); //Gets post ID
|
28 |
+
|
29 |
+
$the_excerpt = null;
|
30 |
+
if ($the_post)
|
31 |
+
{
|
32 |
+
$the_excerpt = $the_post->post_excerpt ? $the_post->post_excerpt : $the_post->post_content;
|
33 |
+
}
|
34 |
+
|
35 |
+
$the_excerpt = strip_tags(strip_shortcodes($the_excerpt)); //Strips tags and images
|
36 |
+
$words = explode(' ', $the_excerpt, $excerpt_length + 1);
|
37 |
+
|
38 |
+
if(count($words) > $excerpt_length) :
|
39 |
+
array_pop($words);
|
40 |
+
array_push($words, '…');
|
41 |
+
$the_excerpt = implode(' ', $words);
|
42 |
+
endif;
|
43 |
+
|
44 |
+
return $the_excerpt;
|
45 |
+
}
|
46 |
+
|
47 |
+
function premium_addons_post_type_categories(){
|
48 |
+
$terms = get_terms( array(
|
49 |
+
'taxonomy' => 'category',
|
50 |
+
'hide_empty' => true,
|
51 |
+
));
|
52 |
+
|
53 |
+
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
|
54 |
+
foreach ( $terms as $term ) {
|
55 |
+
$options[ $term->term_id ] = $term->name;
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
return $options;
|
60 |
+
}
|
readme.txt
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Premium Addons for Elementor ===
|
2 |
+
Contributors: leap13
|
3 |
+
Tags: Elementor, Elementor Page Builder, Elements, Addons, Add-ons, page builder
|
4 |
+
Donate link: http://premiumaddons.com
|
5 |
+
Requires at least: WordPress 4.5
|
6 |
+
Tested up to: WordPress 4.9
|
7 |
+
Requires PHP: 5.4
|
8 |
+
License: GPL v3.0
|
9 |
+
License URI: https://opensource.org/licenses/GPL-3.0
|
10 |
+
|
11 |
+
15 Premium Addons for Elementor Page Builder.
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
Premium Addons library that extends Elementor Page Builder capabilities with 15 fully customizable elements that helps you build impressive websites with no coding required.
|
15 |
+
|
16 |
+
Check Premium Addons Demos
|
17 |
+
|
18 |
+
|
19 |
+
### Features
|
20 |
+
|
21 |
+
* 13+ Fully Customizable Elements.
|
22 |
+
* Options panel for enabling desired elements only for faster performance.
|
23 |
+
* Free Support through online forums.
|
24 |
+
|
25 |
+
|
26 |
+
### Available Elements
|
27 |
+
|
28 |
+
1. Premium Banner
|
29 |
+
2. Premium Image Separator
|
30 |
+
3. Premium Fancy Text
|
31 |
+
4. Premium Heading
|
32 |
+
5. Premium Carousel
|
33 |
+
6. Premium Dual Header
|
34 |
+
7. Premium Testimonials
|
35 |
+
8. Premium Persons
|
36 |
+
9. Premium Countdown
|
37 |
+
10. Premium Blog
|
38 |
+
11. Premium Counter
|
39 |
+
12. Premium Video Box
|
40 |
+
13. Premium Google Maps
|
41 |
+
14. Premium Modal Box
|
42 |
+
15. Premium Progress Bar
|
43 |
+
|
44 |
+
== Installation ==
|
45 |
+
|
46 |
+
= Minimum Requirements =
|
47 |
+
|
48 |
+
* WordPress 4.5 or greater
|
49 |
+
* PHP version 5.4 or greater
|
50 |
+
* MySQL version 5.0 or greater
|
51 |
+
|
52 |
+
- First make sure that Elementor Page Builder is installed, As this plugin works only with it.
|
53 |
+
- Download the plugin then Upload it to the plugin folder: /wp-content/plugins/ or install it through the WordPress plugins screen directly.
|
54 |
+
- Activate the plugin through the ‘Plugins’ screen in WordPress
|
55 |
+
- You can find Premium Addons Elements under the category “Premium Addons for Elementor” on your Elementor element/widget list.
|
56 |
+
|
57 |
+
== Frequently Asked Questions ==
|
58 |
+
= Is this a standalone Plugin? =
|
59 |
+
|
60 |
+
No. You cannot use Premium Addons without Elementor as it\'s an addons plugin for Elementor.
|
61 |
+
|
62 |
+
= Does it work with any WordPress theme? =
|
63 |
+
|
64 |
+
Yes it will work with any WordPress theme as long as you are using Elementor as a page builder.
|
65 |
+
|
66 |
+
= Will this plugin slow down my website speed? =
|
67 |
+
|
68 |
+
Premium Addons for Elementor is light weight and we also gave you the control to enable only the elements you actually use on your website for faster performance.
|
widgets/premium-banner.php
ADDED
@@ -0,0 +1,448 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
|
5 |
+
|
6 |
+
class Premium_Banner_Widget extends Widget_Base {
|
7 |
+
|
8 |
+
protected $templateInstance;
|
9 |
+
|
10 |
+
public function getTemplateInstance() {
|
11 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_name() {
|
15 |
+
return 'premium-addon-banner';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
return esc_html__( 'Premium Banner', 'premium_elementor' );
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_icon() {
|
23 |
+
return 'pa-pa-image2';
|
24 |
+
}
|
25 |
+
|
26 |
+
public function get_categories() {
|
27 |
+
return [ 'premium-elements' ];
|
28 |
+
}
|
29 |
+
|
30 |
+
// Adding the controls fields for the premium banner
|
31 |
+
// This will controls the animation, colors and background, dimensions etc
|
32 |
+
protected function _register_controls() {
|
33 |
+
|
34 |
+
$this->start_controls_section(
|
35 |
+
'premium_banner_global_settings',
|
36 |
+
[
|
37 |
+
'label' => esc_html__( 'Banner content settings', 'premium_elementor' )
|
38 |
+
]
|
39 |
+
);
|
40 |
+
|
41 |
+
$this->add_control(
|
42 |
+
'premium_banner_title',
|
43 |
+
[
|
44 |
+
'label' => esc_html__( 'Title', 'premium_elementor' ),
|
45 |
+
'placeholder' => esc_html__( 'Give a title to this banner', 'premium_elementor' ),
|
46 |
+
'description' => esc_html__( 'Give a title to this banner', 'premium_elementor' ),
|
47 |
+
'type' => Controls_Manager::TEXT,
|
48 |
+
'default' => esc_html__( 'Premium awesome Banner', 'premium_elementor' ),
|
49 |
+
'label_block' => false
|
50 |
+
]
|
51 |
+
);
|
52 |
+
|
53 |
+
$this->add_control(
|
54 |
+
'premium_banner_description',
|
55 |
+
[
|
56 |
+
'label' => esc_html__( 'Description', 'premium_elementor' ),
|
57 |
+
'description' => esc_html__( 'Give the description to this banner', 'premium_elementor' ),
|
58 |
+
'type' => Controls_Manager::WYSIWYG,
|
59 |
+
'default' => esc_html__( 'Premium Banner gives you widge range of settings options. You will love those', 'premium_elementor' ),
|
60 |
+
'label_block' => true
|
61 |
+
]
|
62 |
+
);
|
63 |
+
|
64 |
+
$this->add_control(
|
65 |
+
'premium_banner_title_tag',
|
66 |
+
[
|
67 |
+
'label' => esc_html__( 'Title Tag', 'premium_elementor' ),
|
68 |
+
'description' => esc_html__( 'Select the tag for the title', 'premium_elementor' ),
|
69 |
+
'type' => Controls_Manager::SELECT,
|
70 |
+
'default' => 'h3',
|
71 |
+
'options' => [
|
72 |
+
'h1' => esc_html( 'H1' ),
|
73 |
+
'h2' => esc_html( 'H2' ),
|
74 |
+
'h3' => esc_html( 'H3' ),
|
75 |
+
'h4' => esc_html( 'H4' ),
|
76 |
+
'h5' => esc_html( 'H5' ),
|
77 |
+
'h6' => esc_html( 'H6' )
|
78 |
+
],
|
79 |
+
'label_block' => true,
|
80 |
+
'separator' => 'after'
|
81 |
+
]
|
82 |
+
);
|
83 |
+
|
84 |
+
$this->end_controls_section();
|
85 |
+
|
86 |
+
$this->start_controls_section(
|
87 |
+
'premium_banner_image_section',
|
88 |
+
[
|
89 |
+
'label' => esc_html__( 'Image Settings', 'premium_elementor' )
|
90 |
+
]
|
91 |
+
);
|
92 |
+
|
93 |
+
$this->add_control(
|
94 |
+
'premium_banner_image',
|
95 |
+
[
|
96 |
+
'label' => esc_html__( 'premium Banner Image', 'premium_elementor' ),
|
97 |
+
'description' => esc_html__( 'Select an image for the Banner', 'premium_elementor' ),
|
98 |
+
'type' => Controls_Manager::MEDIA,
|
99 |
+
'default' => [
|
100 |
+
'url' => Utils::get_placeholder_image_src()
|
101 |
+
],
|
102 |
+
'show_external' => true
|
103 |
+
]
|
104 |
+
);
|
105 |
+
|
106 |
+
$this->add_control(
|
107 |
+
'premium_banner_image_bg_color',
|
108 |
+
[
|
109 |
+
'label' => esc_html__( 'Background Color', 'premium_elementor' ),
|
110 |
+
'type' => Controls_Manager::COLOR,
|
111 |
+
'scheme' => [
|
112 |
+
'type' => Scheme_Color::get_type(),
|
113 |
+
'value' => Scheme_Color::COLOR_1,
|
114 |
+
],
|
115 |
+
'selectors' => [
|
116 |
+
'{{WRAPPER}} .premium_addons-banner-ib' => 'background: {{VALUE}};',
|
117 |
+
]
|
118 |
+
]
|
119 |
+
);
|
120 |
+
|
121 |
+
$this->add_control(
|
122 |
+
'premium_banner_image_link_switcher',
|
123 |
+
[
|
124 |
+
'label' => esc_html__( 'Banner custom link?', 'premium_elementor' ),
|
125 |
+
'type' => Controls_Manager::SWITCHER,
|
126 |
+
'default' => '',
|
127 |
+
'description' => esc_html__( 'Do you want to set the custom link to the banner?', 'premium_elementor' ),
|
128 |
+
]
|
129 |
+
);
|
130 |
+
|
131 |
+
$this->add_control(
|
132 |
+
'premium_banner_image_existing_page_link',
|
133 |
+
[
|
134 |
+
'label' => esc_html__( 'Set existing page Link', 'premium_elementor' ),
|
135 |
+
'type' => Controls_Manager::SELECT,
|
136 |
+
'description' => esc_html__( 'Which page link you want to set to banner?', 'premium_elementor' ),
|
137 |
+
'condition' => [
|
138 |
+
'premium_banner_image_link_switcher!' => 'yes'
|
139 |
+
],
|
140 |
+
'options' => $this->getTemplateInstance()->get_all_post()
|
141 |
+
]
|
142 |
+
);
|
143 |
+
|
144 |
+
$this->add_control(
|
145 |
+
'premium_banner_image_custom_link',
|
146 |
+
[
|
147 |
+
'label' => esc_html__( 'Set custom Link', 'premium_elementor' ),
|
148 |
+
'type' => Controls_Manager::URL,
|
149 |
+
'description' => esc_html__( 'What custom link you want to set to banner?', 'premium_elementor' ),
|
150 |
+
'condition' => [
|
151 |
+
'premium_banner_image_link_switcher' => 'yes'
|
152 |
+
],
|
153 |
+
'show_external' => false,
|
154 |
+
]
|
155 |
+
);
|
156 |
+
|
157 |
+
$this->add_control(
|
158 |
+
'premium_banner_image_link_open_new_tab',
|
159 |
+
[
|
160 |
+
'label' => esc_html__( 'Open in new tab?', 'premium_elementor' ),
|
161 |
+
'type' => Controls_Manager::SWITCHER,
|
162 |
+
'default' => '',
|
163 |
+
'description' => esc_html__( 'Do you want to open link in new tab?', 'premium_elementor' ),
|
164 |
+
]
|
165 |
+
);
|
166 |
+
|
167 |
+
$this->add_control(
|
168 |
+
'premium_banner_image_link_add_nofollow',
|
169 |
+
[
|
170 |
+
'label' => esc_html__( 'Add nofollow option to link', 'premium_elementor' ),
|
171 |
+
'type' => Controls_Manager::SWITCHER,
|
172 |
+
'default' => '',
|
173 |
+
'description' => esc_html__('Do you want to add nofollow option to link?', 'premium_elementor' ),
|
174 |
+
]
|
175 |
+
);
|
176 |
+
|
177 |
+
$this->add_control(
|
178 |
+
'premium_banner_image_animation',
|
179 |
+
[
|
180 |
+
'label' => esc_html__( 'Animation styles', 'premium_elementor' ),
|
181 |
+
'type' => Controls_Manager::SELECT,
|
182 |
+
'default' => 'premium_banner_animation1',
|
183 |
+
'description' => esc_html__( 'Select animation on the banner', 'premium_elementor' ),
|
184 |
+
'options' => [
|
185 |
+
'premium_banner_animation1' => 'Style One',
|
186 |
+
'premium_banner_animation5' => 'Style Two',
|
187 |
+
'premium_banner_animation13' => 'Style Three',
|
188 |
+
'premium_banner_animation2' => 'Style Four',
|
189 |
+
'premium_banner_animation4' => 'Style Five',
|
190 |
+
'premium_banner_animation6' => 'Style Six'
|
191 |
+
]
|
192 |
+
]
|
193 |
+
);
|
194 |
+
|
195 |
+
$this->add_control(
|
196 |
+
'premium_banner_style2_title_bg',
|
197 |
+
[
|
198 |
+
'label' => esc_html__( 'Title BG color', 'premium_elementor' ),
|
199 |
+
'type' => Controls_Manager::COLOR,
|
200 |
+
'scheme' => [
|
201 |
+
'type' => Scheme_Color::get_type(),
|
202 |
+
'value' => Scheme_Color::COLOR_1,
|
203 |
+
],
|
204 |
+
'description' => esc_html__( 'Title Background Color', 'premium_elementor' ),
|
205 |
+
'condition' => [
|
206 |
+
'premium_banner_image_animation' => 'premium_banner_animation5'
|
207 |
+
]
|
208 |
+
]
|
209 |
+
);
|
210 |
+
|
211 |
+
$this->add_control(
|
212 |
+
'premium_banner_height',
|
213 |
+
[
|
214 |
+
'label' => esc_html__( 'Banner Height', 'premium_elementor' ),
|
215 |
+
'type' => Controls_Manager::SELECT,
|
216 |
+
'default' => 'default',
|
217 |
+
'description' => esc_html__( 'Set height of the banner', 'premium_elementor' ),
|
218 |
+
'options' => [
|
219 |
+
'default' => 'Default',
|
220 |
+
'custom' => 'Custom',
|
221 |
+
]
|
222 |
+
]
|
223 |
+
);
|
224 |
+
|
225 |
+
$this->add_control(
|
226 |
+
'premium_banner_custom_height',
|
227 |
+
[
|
228 |
+
'label' => esc_html__( 'Min Height', 'premium_elementor' ),
|
229 |
+
'type' => Controls_Manager::NUMBER,
|
230 |
+
'description' => esc_html__( 'Set min height of the banner in px', 'premium_elementor' ),
|
231 |
+
'condition' => [
|
232 |
+
'premium_banner_height' => 'custom'
|
233 |
+
],
|
234 |
+
'selectors' => [
|
235 |
+
'{{WRAPPER}} .premium_addons-banner-ib' => 'height: {{VALUE}}px;'
|
236 |
+
]
|
237 |
+
]
|
238 |
+
);
|
239 |
+
|
240 |
+
$this->add_control(
|
241 |
+
'premium_banner_extra_class',
|
242 |
+
[
|
243 |
+
'label' => esc_html__( 'Extra Class', 'premium_elementor' ),
|
244 |
+
'type' => Controls_Manager::TEXT
|
245 |
+
]
|
246 |
+
);
|
247 |
+
|
248 |
+
$this->end_controls_section();
|
249 |
+
|
250 |
+
$this->start_controls_section(
|
251 |
+
'premium_banner_title_style',
|
252 |
+
[
|
253 |
+
'label' => esc_html__( 'Title Styles', 'premium_elementor' ),
|
254 |
+
'tab' => Controls_Manager::TAB_STYLE
|
255 |
+
]
|
256 |
+
);
|
257 |
+
|
258 |
+
$this->add_control(
|
259 |
+
'premium_banner_color_of_title',
|
260 |
+
[
|
261 |
+
'label' => esc_html__( 'Color', 'premium_elementor' ),
|
262 |
+
'type' => Controls_Manager::COLOR,
|
263 |
+
'scheme' => [
|
264 |
+
'type' => Scheme_Color::get_type(),
|
265 |
+
'value' => Scheme_Color::COLOR_1,
|
266 |
+
],
|
267 |
+
'selectors' => [
|
268 |
+
'{{WRAPPER}} .premium_addons-banner-ib-desc .premium_banner_title' => 'color: {{VALUE}};'
|
269 |
+
],
|
270 |
+
]
|
271 |
+
);
|
272 |
+
|
273 |
+
$this->add_group_control(
|
274 |
+
Group_Control_Typography::get_type(),
|
275 |
+
[
|
276 |
+
'name' => 'premium_banner_title_typhography',
|
277 |
+
'selector' => '{{WRAPPER}} .premium_addons-banner-ib-desc .premium_banner_title',
|
278 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
279 |
+
]
|
280 |
+
);
|
281 |
+
|
282 |
+
|
283 |
+
$this->end_controls_section();
|
284 |
+
|
285 |
+
$this->start_controls_section(
|
286 |
+
'premium_banner_styles_of_content',
|
287 |
+
[
|
288 |
+
'label' => esc_html__( 'Content Styles', 'premium_elementor' ),
|
289 |
+
'tab' => Controls_Manager::TAB_STYLE
|
290 |
+
]
|
291 |
+
);
|
292 |
+
|
293 |
+
|
294 |
+
$this->add_control(
|
295 |
+
'premium_banner_color_of_content',
|
296 |
+
[
|
297 |
+
'label' => esc_html__( 'Color', 'premium_elementor' ),
|
298 |
+
'type' => Controls_Manager::COLOR,
|
299 |
+
'scheme' => [
|
300 |
+
'type' => Scheme_Color::get_type(),
|
301 |
+
'value' => Scheme_Color::COLOR_3,
|
302 |
+
],
|
303 |
+
'selectors' => [
|
304 |
+
'{{WRAPPER}} .premium_banner .premium_banner_content' => 'color: {{VALUE}};'
|
305 |
+
],
|
306 |
+
]
|
307 |
+
);
|
308 |
+
|
309 |
+
$this->add_group_control(
|
310 |
+
Group_Control_Typography::get_type(),
|
311 |
+
[
|
312 |
+
'name' => 'premium_banner_content_typhography',
|
313 |
+
'selector' => '{{WRAPPER}} .premium_banner .premium_banner_content',
|
314 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
315 |
+
]
|
316 |
+
);
|
317 |
+
|
318 |
+
|
319 |
+
$this->add_control(
|
320 |
+
'premium_banner_image_opacity',
|
321 |
+
[
|
322 |
+
'label' => esc_html__( 'Opacity', 'premium_elementor' ),
|
323 |
+
'type' => Controls_Manager::SLIDER,
|
324 |
+
'default' => [
|
325 |
+
'size' => 1,
|
326 |
+
],
|
327 |
+
'range' => [
|
328 |
+
'px' => [
|
329 |
+
'min' => 0,
|
330 |
+
'max' => 1,
|
331 |
+
'step' => .1,
|
332 |
+
]
|
333 |
+
],
|
334 |
+
'selectors' => [
|
335 |
+
'{{WRAPPER}} .premium_addons-banner-ib .premium_addons-banner-ib-img' => 'opacity: {{SIZE}};',
|
336 |
+
],
|
337 |
+
]
|
338 |
+
);
|
339 |
+
|
340 |
+
|
341 |
+
$this->add_control(
|
342 |
+
'premium_banner_image_hover_opacity',
|
343 |
+
[
|
344 |
+
'label' => esc_html__( 'Hover Opacity', 'premium_elementor' ),
|
345 |
+
'type' => Controls_Manager::SLIDER,
|
346 |
+
'default' => [
|
347 |
+
'size' => 1,
|
348 |
+
],
|
349 |
+
'range' => [
|
350 |
+
'px' => [
|
351 |
+
'min' => 0,
|
352 |
+
'max' => 1,
|
353 |
+
'step' => .1,
|
354 |
+
]
|
355 |
+
],
|
356 |
+
'selectors' => [
|
357 |
+
'{{WRAPPER}} .premium_addons-banner-ib .premium_addons-banner-ib-img.active' => 'opacity: {{SIZE}};',
|
358 |
+
],
|
359 |
+
]
|
360 |
+
);
|
361 |
+
|
362 |
+
$this->end_controls_section();
|
363 |
+
|
364 |
+
|
365 |
+
}
|
366 |
+
|
367 |
+
|
368 |
+
protected function render() {
|
369 |
+
$settings = $this->get_settings(); // All the settings values stored in $settings varaiable
|
370 |
+
|
371 |
+
$title_tag = $settings[ 'premium_banner_title_tag' ];
|
372 |
+
$title = $settings[ 'premium_banner_title' ];
|
373 |
+
$full_title = '<'. $title_tag .' class="premium_addons-banner-ib-title ult-responsive premium_banner_title">' .$title. '</'.$title_tag.'>';
|
374 |
+
|
375 |
+
$link = isset( $settings['premium_banner_image_link_switcher'] ) && $settings['premium_banner_image_link_switcher'] != '' ? $settings['premium_banner_image_custom_link']['url'] : get_permalink( $settings['premium_banner_image_existing_page_link'] );
|
376 |
+
|
377 |
+
$link_title = $settings['premium_banner_image_link_switcher'] != 'yes' ? get_the_title( $settings['premium_banner_image_existing_page_link'] ) : '';
|
378 |
+
$open_new_tab = $settings['premium_banner_image_link_open_new_tab'] == 'yes' ? ' target="_blank"' : '';
|
379 |
+
$full_link = '<a class="premium_addons-banner-ib-link" href="'. $link .'" title="'. $link_title .'"'.$open_new_tab.'></a>';
|
380 |
+
$animation_class = $settings['premium_banner_image_animation'];
|
381 |
+
$extra_class = isset( $settings['premium_banner_extra_class'] ) && $settings['premium_banner_extra_class'] != '' ? ' '. $settings['premium_banner_extra_class'] : '';
|
382 |
+
$min_height_class = $settings['premium_banner_height'] == 'custom' ? '' : '';
|
383 |
+
$full_class = $animation_class.$extra_class.$min_height_class;
|
384 |
+
ob_start();
|
385 |
+
|
386 |
+
?>
|
387 |
+
<div class="premium_banner">
|
388 |
+
<div class="premium_addons-banner-ib <?php echo $full_class; ?> premium-banner-min-height">
|
389 |
+
<?php if( isset( $settings['premium_banner_image']['url'] ) && $settings['premium_banner_image']['url'] != '' ): ?>
|
390 |
+
<img class="premium_addons-banner-ib-img" alt="null" src="<?php echo $settings['premium_banner_image']['url']; ?>">
|
391 |
+
<?php endif; ?>
|
392 |
+
<div class="premium_addons-banner-ib-desc" style="">
|
393 |
+
<?php echo $full_title; ?>
|
394 |
+
<div class="premium_addons-banner-ib-content premium_banner_content">
|
395 |
+
<?php echo $this->parse_text_editor($settings[ 'premium_banner_description' ] ); ?>
|
396 |
+
</div>
|
397 |
+
</div>
|
398 |
+
<?php
|
399 |
+
if( !empty( $settings['premium_banner_image_custom_link']['url'] ) || !empty($settings['premium_banner_image_existing_page_link'] ) ) {
|
400 |
+
echo $full_link;
|
401 |
+
}
|
402 |
+
?>
|
403 |
+
</div>
|
404 |
+
<script>
|
405 |
+
|
406 |
+
(function( $ ) {
|
407 |
+
$(document).ready( function() {
|
408 |
+
|
409 |
+
$('.premium_addons-banner-ib').hover(
|
410 |
+
function() {
|
411 |
+
$(this).find('.premium_addons-banner-ib-img').addClass('active');
|
412 |
+
},
|
413 |
+
function() {
|
414 |
+
$(this).find('.premium_addons-banner-ib-img').removeClass('active');
|
415 |
+
}
|
416 |
+
);
|
417 |
+
})
|
418 |
+
})(jQuery);
|
419 |
+
|
420 |
+
</script>
|
421 |
+
<style>
|
422 |
+
.elementor-widget-premium-addon-banner .premium_addons-banner-ib-title {
|
423 |
+
background: transparent;
|
424 |
+
}
|
425 |
+
|
426 |
+
|
427 |
+
<?php if( $settings['premium_banner_image_animation'] == 'premium_banner_animation5') : ?>
|
428 |
+
.premium_banner_animation5 .premium_addons-banner-ib-desc {
|
429 |
+
background: <?php echo $settings['premium_banner_style2_title_bg']; ?>
|
430 |
+
}
|
431 |
+
<?php endif; ?>
|
432 |
+
</style>
|
433 |
+
</div>
|
434 |
+
|
435 |
+
<?php $output = ob_get_clean();
|
436 |
+
echo $output;
|
437 |
+
}
|
438 |
+
|
439 |
+
protected function content_template() {
|
440 |
+
|
441 |
+
?>
|
442 |
+
|
443 |
+
|
444 |
+
<?php
|
445 |
+
}
|
446 |
+
}
|
447 |
+
|
448 |
+
Plugin::instance()->widgets_manager->register_widget_type( new Premium_Banner_Widget() );
|
widgets/premium-blog.php
ADDED
@@ -0,0 +1,500 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
|
5 |
+
|
6 |
+
class Premium_Blog_Widget extends Widget_Base
|
7 |
+
{
|
8 |
+
protected $templateInstance;
|
9 |
+
|
10 |
+
public function getTemplateInstance() {
|
11 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_name() {
|
15 |
+
return 'premium-addon-blog';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
return esc_html__('Premium Blog', 'premium_elementor');
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_icon() {
|
23 |
+
return 'pa-pa-post';
|
24 |
+
}
|
25 |
+
|
26 |
+
public function get_categories() {
|
27 |
+
return [ 'premium-elements' ];
|
28 |
+
}
|
29 |
+
|
30 |
+
// Adding the controls fields for the premium blog
|
31 |
+
// This will controls the animation, colors and background, dimensions etc
|
32 |
+
protected function _register_controls() {
|
33 |
+
|
34 |
+
/* Start Content Section */
|
35 |
+
$this->start_controls_section('premium_blog_general_settings',
|
36 |
+
[
|
37 |
+
'label' => esc_html__('General Settings', 'premium_elementor'),
|
38 |
+
]
|
39 |
+
);
|
40 |
+
|
41 |
+
/*Hover Image Effect*/
|
42 |
+
$this->add_control('premium_blog_hover_image_effect',
|
43 |
+
[
|
44 |
+
'label' => esc_html__('Hover Image Effect', 'premium_elementor'),
|
45 |
+
'type' => Controls_Manager::SELECT,
|
46 |
+
'options' => [
|
47 |
+
'zoomin' => esc_html__('Zoom In', 'premium_elementor'),
|
48 |
+
'zoomout'=> esc_html__('Zoom Out', 'premium_elementor'),
|
49 |
+
'scale' => esc_html__('Scale', 'premium_elementor'),
|
50 |
+
'gray' => esc_html__('Grayscale', 'premium_elementor'),
|
51 |
+
'blur' => esc_html__('Blur', 'premium_elementor'),
|
52 |
+
],
|
53 |
+
'default' => 'zoomin',
|
54 |
+
'label_block' => true
|
55 |
+
]
|
56 |
+
);
|
57 |
+
|
58 |
+
/*Hover Image Effect*/
|
59 |
+
$this->add_control('premium_blog_hover_color_effect',
|
60 |
+
[
|
61 |
+
'label' => esc_html__('Hover Color Effect', 'premium_elementor'),
|
62 |
+
'type' => Controls_Manager::SELECT,
|
63 |
+
'options' => [
|
64 |
+
'none' => esc_html__('None', 'premium_elementor'),
|
65 |
+
'framed' => esc_html__('Framed', 'premium_elementor'),
|
66 |
+
'diagonal' => esc_html__('Diagonal', 'premium_elementor'),
|
67 |
+
'bordered' => esc_html__('Bordered', 'premium_elementor'),
|
68 |
+
'squares' => esc_html__('Squares', 'premium_elementor'),
|
69 |
+
],
|
70 |
+
'default' => 'none',
|
71 |
+
'label_block' => true
|
72 |
+
]
|
73 |
+
);
|
74 |
+
|
75 |
+
/*Bordered Effect Border Color*/
|
76 |
+
$this->add_control('premium_blog_border_effect_color',
|
77 |
+
[
|
78 |
+
'label' => esc_html__('Plus Icon Color', 'premium_elementor'),
|
79 |
+
'type' => Controls_Manager::COLOR,
|
80 |
+
'default' => '#1c1c1c',
|
81 |
+
'condition' => [
|
82 |
+
'premium_blog_hover_color_effect' => 'bordered',
|
83 |
+
],
|
84 |
+
'selectors' => [
|
85 |
+
'{{WRAPPER}} .premium-blog-bordered-border-container' => 'border-color: {{VALUE}};',
|
86 |
+
]
|
87 |
+
]
|
88 |
+
);
|
89 |
+
|
90 |
+
/*Post Format Icon*/
|
91 |
+
$this->add_control('premium_blog_post_format_icon',
|
92 |
+
[
|
93 |
+
'label' => esc_html__( 'Post Icon', 'essential-addons-elementor' ),
|
94 |
+
'type' => Controls_Manager::SWITCHER,
|
95 |
+
'default' => 'yes',
|
96 |
+
]
|
97 |
+
);
|
98 |
+
|
99 |
+
/*Categories Filter*/
|
100 |
+
$this->add_control('premium_blog_categories',
|
101 |
+
[
|
102 |
+
'label' => esc_html__( 'Categories', 'essential-addons-elementor' ),
|
103 |
+
'type' => Controls_Manager::SELECT2,
|
104 |
+
'label_block' => true,
|
105 |
+
'multiple' => true,
|
106 |
+
'options' => premium_addons_post_type_categories(),
|
107 |
+
]
|
108 |
+
);
|
109 |
+
|
110 |
+
/*Excerpt*/
|
111 |
+
$this->add_control('premium_blog_excerpt',
|
112 |
+
[
|
113 |
+
'label' => esc_html__('Excerpt', 'premium_elementor'),
|
114 |
+
'type' => Controls_Manager::SWITCHER,
|
115 |
+
'default' => 'yes',
|
116 |
+
]
|
117 |
+
);
|
118 |
+
|
119 |
+
|
120 |
+
/*Excerpt Length*/
|
121 |
+
$this->add_control('premium_blog_excerpt_length',
|
122 |
+
[
|
123 |
+
'label' => esc_html__('Excerpt Length', 'premium_elementor'),
|
124 |
+
'type' => Controls_Manager::NUMBER,
|
125 |
+
'default' => 55,
|
126 |
+
'label_block' => true,
|
127 |
+
'condition' => [
|
128 |
+
'premium_blog_excerpt' => 'yes',
|
129 |
+
]
|
130 |
+
]
|
131 |
+
);
|
132 |
+
|
133 |
+
/*Author Meta*/
|
134 |
+
$this->add_control('premium_blog_author_meta',
|
135 |
+
[
|
136 |
+
'label' => esc_html__('Author Meta', 'premium_elementor'),
|
137 |
+
'type' => Controls_Manager::SWITCHER,
|
138 |
+
'default' => 'yes',
|
139 |
+
]
|
140 |
+
);
|
141 |
+
|
142 |
+
|
143 |
+
/*Date Meta*/
|
144 |
+
$this->add_control('premium_blog_date_meta',
|
145 |
+
[
|
146 |
+
'label' => esc_html__('Date Meta', 'premium_elementor'),
|
147 |
+
'type' => Controls_Manager::SWITCHER,
|
148 |
+
'default' => 'yes',
|
149 |
+
]
|
150 |
+
);
|
151 |
+
|
152 |
+
/*Categories Meta*/
|
153 |
+
$this->add_control('premium_blog_categories_meta',
|
154 |
+
[
|
155 |
+
'label' => esc_html__('Categories Meta', 'premium_elementor'),
|
156 |
+
'type' => Controls_Manager::SWITCHER,
|
157 |
+
'default' => 'yes',
|
158 |
+
]
|
159 |
+
);
|
160 |
+
|
161 |
+
/*Comments Meta*/
|
162 |
+
$this->add_control('premium_blog_comments_meta',
|
163 |
+
[
|
164 |
+
'label' => esc_html__('Comments Meta', 'premium_elementor'),
|
165 |
+
'type' => Controls_Manager::SWITCHER,
|
166 |
+
'default' => 'yes',
|
167 |
+
]
|
168 |
+
);
|
169 |
+
|
170 |
+
/*Tags Meta*/
|
171 |
+
$this->add_control('premium_blog_tags_meta',
|
172 |
+
[
|
173 |
+
'label' => esc_html__('Tags Meta', 'premium_elementor'),
|
174 |
+
'type' => Controls_Manager::SWITCHER,
|
175 |
+
'default' => 'yes',
|
176 |
+
]
|
177 |
+
);
|
178 |
+
|
179 |
+
/*Paging*/
|
180 |
+
$this->add_control('premium_blog_paging',
|
181 |
+
[
|
182 |
+
'label' => esc_html__('Paging', 'premium_elementor'),
|
183 |
+
'type' => Controls_Manager::SWITCHER,
|
184 |
+
'default' => 'no',
|
185 |
+
]
|
186 |
+
);
|
187 |
+
|
188 |
+
/*Number of Posts*/
|
189 |
+
$this->add_control('premium_blog_number_of_posts',
|
190 |
+
[
|
191 |
+
'label' => esc_html__('Posts Per Page', 'premium_elementor'),
|
192 |
+
'type' => Controls_Manager::NUMBER,
|
193 |
+
'min' => 1,
|
194 |
+
'default' => 1,
|
195 |
+
]
|
196 |
+
);
|
197 |
+
|
198 |
+
/*Posts Offset*/
|
199 |
+
$this->add_control('premium_blog_offset',
|
200 |
+
[
|
201 |
+
'label' => esc_html__( 'Offset Count', 'boosted-elements-progression' ),
|
202 |
+
'type' => Controls_Manager::NUMBER,
|
203 |
+
'default' => '0',
|
204 |
+
'min' => '0',
|
205 |
+
]
|
206 |
+
);
|
207 |
+
|
208 |
+
/*Front Text Align*/
|
209 |
+
$this->add_responsive_control('premium_flip_text_align',
|
210 |
+
[
|
211 |
+
'label' => esc_html__( 'Text Align', 'elementor' ),
|
212 |
+
'type' => Controls_Manager::CHOOSE,
|
213 |
+
'options' => [
|
214 |
+
'left' => [
|
215 |
+
'title'=> esc_html__( 'Left', 'elementor' ),
|
216 |
+
'icon' => 'fa fa-align-left',
|
217 |
+
],
|
218 |
+
'center' => [
|
219 |
+
'title'=> esc_html__( 'Center', 'elementor' ),
|
220 |
+
'icon' => 'fa fa-align-center',
|
221 |
+
],
|
222 |
+
'right' => [
|
223 |
+
'title'=> esc_html__( 'Right', 'elementor' ),
|
224 |
+
'icon' => 'fa fa-align-right',
|
225 |
+
],
|
226 |
+
],
|
227 |
+
'default' => 'left',
|
228 |
+
'selectors' => [
|
229 |
+
'{{WRAPPER}} .premium-blog-content-wrapper' => 'text-align: {{VALUE}};',
|
230 |
+
],
|
231 |
+
]
|
232 |
+
);
|
233 |
+
|
234 |
+
|
235 |
+
/*End Content Section*/
|
236 |
+
$this->end_controls_section();
|
237 |
+
|
238 |
+
/*Start Color Style Section*/
|
239 |
+
$this->start_controls_section('premium_blog_colors_section',
|
240 |
+
[
|
241 |
+
'label' => esc_html__('Colors', 'premium_elementor'),
|
242 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
243 |
+
]
|
244 |
+
);
|
245 |
+
|
246 |
+
/*Plus Icon Color*/
|
247 |
+
$this->add_control('premium_blog_plus_color',
|
248 |
+
[
|
249 |
+
'label' => esc_html__('Plus Icon Color', 'premium_elementor'),
|
250 |
+
'type' => Controls_Manager::COLOR,
|
251 |
+
'default' => '#1c1c1c',
|
252 |
+
'selectors' => [
|
253 |
+
'{{WRAPPER}} .premium-blog-thumbnail-container:before, {{WRAPPER}} .premium-blog-thumbnail-container:after' => 'background-color: {{VALUE}};',
|
254 |
+
]
|
255 |
+
]
|
256 |
+
);
|
257 |
+
|
258 |
+
/*Overlay Color*/
|
259 |
+
$this->add_control('premium_blog_overlay_color',
|
260 |
+
[
|
261 |
+
'label' => esc_html__('Overlay Color', 'premium_elementor'),
|
262 |
+
'type' => Controls_Manager::COLOR,
|
263 |
+
'default' => '#6ec1e4',
|
264 |
+
'selectors' => [
|
265 |
+
'{{WRAPPER}} .premium-blog-framed-effect, {{WRAPPER}} .premium-blog-bordered-effect,{{WRAPPER}} .premium-blog-squares-effect:before,{{WRAPPER}} .premium-blog-squares-effect:after,{{WRAPPER}} .premium-blog-squares-square-container:before,{{WRAPPER}} .premium-blog-squares-square-container:after, {{WRAPPER}} .premium-blog-format-container:hover,{{WRAPPER}} .premium-blog-pagination-container .current' => 'background-color: {{VALUE}};',
|
266 |
+
]
|
267 |
+
]
|
268 |
+
);
|
269 |
+
/*Content Background Color*/
|
270 |
+
$this->add_control('premium_blog_content_background_color',
|
271 |
+
[
|
272 |
+
'label' => esc_html__('Content Background Color', 'premium_elementor'),
|
273 |
+
'type' => Controls_Manager::COLOR,
|
274 |
+
'default' => '#f5f5f5',
|
275 |
+
'selectors' => [
|
276 |
+
'{{WRAPPER}} .premium-blog-content-wrapper' => 'background-color: {{VALUE}};',
|
277 |
+
]
|
278 |
+
]
|
279 |
+
);
|
280 |
+
|
281 |
+
/*Titles Color*/
|
282 |
+
$this->add_control('premium_blog_title_color',
|
283 |
+
[
|
284 |
+
'label' => esc_html__('Post Title Color', 'premium_elementor'),
|
285 |
+
'type' => Controls_Manager::COLOR,
|
286 |
+
'default' => '#1c1c1c',
|
287 |
+
'selectors' => [
|
288 |
+
'{{WRAPPER}} .premium-blog-entry-title a' => 'color: {{VALUE}};',
|
289 |
+
]
|
290 |
+
]
|
291 |
+
);
|
292 |
+
|
293 |
+
/*Post Format Background Color*/
|
294 |
+
$this->add_control('premium_blog_format_back_color',
|
295 |
+
[
|
296 |
+
'label' => esc_html__('Format Background Color', 'premium_elementor'),
|
297 |
+
'type' => Controls_Manager::COLOR,
|
298 |
+
'selectors' => [
|
299 |
+
'{{WRAPPER}} .premium-blog-format-container' => 'background-color: {{VALUE}};',
|
300 |
+
]
|
301 |
+
]
|
302 |
+
);
|
303 |
+
|
304 |
+
/*Post Format Icon Color*/
|
305 |
+
$this->add_control('premium_blog_format_icon_color',
|
306 |
+
[
|
307 |
+
'label' => esc_html__('Format Icon Color', 'premium_elementor'),
|
308 |
+
'type' => Controls_Manager::COLOR,
|
309 |
+
'default' => '#1c1c1c',
|
310 |
+
'selectors' => [
|
311 |
+
'{{WRAPPER}} .premium-blog-format-container i' => 'color: {{VALUE}};',
|
312 |
+
]
|
313 |
+
]
|
314 |
+
);
|
315 |
+
|
316 |
+
/*Post Content Color*/
|
317 |
+
$this->add_control('premium_blog_post_content_color',
|
318 |
+
[
|
319 |
+
'label' => esc_html__('Post Content Color', 'premium_elementor'),
|
320 |
+
'type' => Controls_Manager::COLOR,
|
321 |
+
'default' => '#7a7a7a',
|
322 |
+
'selectors' => [
|
323 |
+
'{{WRAPPER}} .premium-blog-post-content' => 'color: {{VALUE}};',
|
324 |
+
]
|
325 |
+
]
|
326 |
+
);
|
327 |
+
|
328 |
+
/*Meta Color*/
|
329 |
+
$this->add_control('premium_blog_meta_color',
|
330 |
+
[
|
331 |
+
'label' => esc_html__('Meta Color', 'premium_elementor'),
|
332 |
+
'type' => Controls_Manager::COLOR,
|
333 |
+
'default' => '#555',
|
334 |
+
'selectors' => [
|
335 |
+
'{{WRAPPER}} .premium-blog-entry-meta, {{WRAPPER}} .premium-blog-entry-meta a' => 'color: {{VALUE}};',
|
336 |
+
]
|
337 |
+
]
|
338 |
+
);
|
339 |
+
|
340 |
+
/*Meta Color*/
|
341 |
+
$this->add_control('premium_blog_tags_color',
|
342 |
+
[
|
343 |
+
'label' => esc_html__('Tags Color', 'premium_elementor'),
|
344 |
+
'type' => Controls_Manager::COLOR,
|
345 |
+
'default' => '#555',
|
346 |
+
'selectors' => [
|
347 |
+
'{{WRAPPER}} .premium-blog-post-tags-container, {{WRAPPER}} .premium-blog-post-tags-container a' => 'color: {{VALUE}};',
|
348 |
+
]
|
349 |
+
]
|
350 |
+
);
|
351 |
+
|
352 |
+
/*Meta Hover Color*/
|
353 |
+
$this->add_control('premium_blog_meta_tags_hover_color',
|
354 |
+
[
|
355 |
+
'label' => esc_html__('Link Hover Color', 'premium_elementor'),
|
356 |
+
'type' => Controls_Manager::COLOR,
|
357 |
+
'default' => '#6ec1e4',
|
358 |
+
'selectors' => [
|
359 |
+
'{{WRAPPER}} .premium-blog-entry-title a:hover , {{WRAPPER}} .premium-blog-entry-meta a:hover, {{WRAPPER}} .premium-blog-post-tags-container a:hover' => 'color: {{VALUE}};',
|
360 |
+
]
|
361 |
+
]
|
362 |
+
);
|
363 |
+
|
364 |
+
|
365 |
+
/*End Color Style Section*/
|
366 |
+
$this->end_controls_section();
|
367 |
+
|
368 |
+
}
|
369 |
+
|
370 |
+
protected function render($instance = [])
|
371 |
+
{
|
372 |
+
|
373 |
+
if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } else if ( get_query_var('page') ) { $paged = get_query_var('page'); } else { $paged = 1; }
|
374 |
+
|
375 |
+
// get our input from the widget settings.
|
376 |
+
$settings = $this->get_settings();
|
377 |
+
|
378 |
+
$image_effect = $settings['premium_blog_hover_image_effect'];
|
379 |
+
|
380 |
+
$post_effect = $settings['premium_blog_hover_color_effect'];
|
381 |
+
|
382 |
+
$offset = $settings['premium_blog_offset'];
|
383 |
+
|
384 |
+
$post_per_page = $settings['premium_blog_number_of_posts'];
|
385 |
+
|
386 |
+
$new_offset = $offset + ( ( $paged - 1 ) * $post_per_page );
|
387 |
+
|
388 |
+
$post_args = premium_blog_get_post_settings($settings);
|
389 |
+
|
390 |
+
$posts = premium_blog_get_post_data($post_args, $paged , $new_offset);
|
391 |
+
?>
|
392 |
+
<?php
|
393 |
+
if(count($posts)){
|
394 |
+
global $post;
|
395 |
+
?>
|
396 |
+
<?php
|
397 |
+
foreach($posts as $post){
|
398 |
+
setup_postdata($post);
|
399 |
+
?>
|
400 |
+
<div class="premium-blog-post-container">
|
401 |
+
<div class="premium-blog-thumb-effect-wrapper">
|
402 |
+
<div class="premium-blog-thumbnail-container <?php echo 'premium-blog-' . $image_effect . '-effect';?>">
|
403 |
+
<?php the_post_thumbnail('full'); ?>
|
404 |
+
</div>
|
405 |
+
<div class="premium-blog-effect-container <?php echo 'premium-blog-'. $post_effect . '-effect'; ?>">
|
406 |
+
<?php if( $settings['premium_blog_hover_color_effect'] === 'bordered' ) : ?>
|
407 |
+
<div class="premium-blog-bordered-border-container"></div>
|
408 |
+
<?php elseif( $settings['premium_blog_hover_color_effect'] === 'squares' ) : ?>
|
409 |
+
<div class="premium-blog-squares-square-container"></div>
|
410 |
+
<?php endif; ?>
|
411 |
+
</div>
|
412 |
+
</div>
|
413 |
+
<div class="premium-blog-content-wrapper">
|
414 |
+
<div class="premium-blog-inner-container">
|
415 |
+
<?php if( $settings['premium_blog_post_format_icon'] === 'yes' ) : ?>
|
416 |
+
<div class="premium-blog-format-container">
|
417 |
+
<a href="<?php the_permalink(); ?>" title="<?php if( get_post_format() === ' ') : echo 'standard' ; else : echo get_post_format(); endif; ?>" target="_blank"><i class="fa fa-<?php if ( get_post_format() === 'aside' ) : echo 'file-text-o'; ?>
|
418 |
+
<?php elseif ( get_post_format() === 'audio' ) : echo 'music'; ?>
|
419 |
+
<?php elseif ( get_post_format() === 'gallery' ) : echo 'file-image-o'; ?>
|
420 |
+
<?php elseif ( get_post_format() === 'image' ) : echo 'picture-o'; ?>
|
421 |
+
<?php elseif ( get_post_format() === 'link' ) : echo 'link'; ?>
|
422 |
+
<?php elseif ( get_post_format() === 'quote' ) :echo 'quote-left'; ?>
|
423 |
+
<?php elseif ( get_post_format() === 'video' ) : echo 'video-camera'; ?>
|
424 |
+
<?php else : echo 'thumb-tack'; ?>
|
425 |
+
<?php endif; ?>"></i></a>
|
426 |
+
</div>
|
427 |
+
<?php endif; ?>
|
428 |
+
<div class="premium-blog-entry-container">
|
429 |
+
<h2 class="premium-blog-entry-title"><a href="<?php the_permalink(); ?>" target="_blank"><?php the_title(); ?></a></h2>
|
430 |
+
<div class="premium-blog-entry-meta" style="<?php if( $settings['premium_blog_post_format_icon'] !== 'yes' ) : echo 'margin-left:0px'; endif; ?>">
|
431 |
+
<?php if( $settings['premium_blog_author_meta'] === 'yes' ) : ?>
|
432 |
+
<span class="premium-blog-post-author premium-blog-meta-data"><i class="fa fa-user fa-fw"></i><?php the_author_posts_link();?></span>
|
433 |
+
<?php endif; ?>
|
434 |
+
<?php if( $settings['premium_blog_date_meta'] === 'yes' ) : ?>
|
435 |
+
<span class="premium-blog-post-time premium-blog-meta-data"><i class="fa fa-calendar fa-fw"></i><a href="<?php the_permalink(); ?>" target="_blank"><?php the_time('F j, Y'); ?></a></span>
|
436 |
+
<?php endif; ?>
|
437 |
+
<?php if( $settings['premium_blog_categories_meta'] === 'yes' ) : ?>
|
438 |
+
<span class="premium-blog-post-categories premium-blog-meta-data"><i class="fa fa-align-left fa-fw"></i><?php the_category(', '); ?></span>
|
439 |
+
<?php endif; ?>
|
440 |
+
<?php if( $settings['premium_blog_comments_meta'] === 'yes' ) : ?>
|
441 |
+
<span class="premium-blog-post-comments premium-blog-meta-data"><i class="fa fa-comments-o fa-fw"></i><a href="<?php the_permalink(); ?>" target="_blank"><?php comments_number('0 Comments', '1', '%'); ?> </a></span>
|
442 |
+
<?php endif; ?>
|
443 |
+
<span class="premium-blog-post-edit premium-blog-meta-data"><i class="fa fa-pencil fa-fw"></i><?php edit_post_link(); ?></span>
|
444 |
+
</div>
|
445 |
+
</div>
|
446 |
+
</div>
|
447 |
+
<div class="premium-blog-post-content" style="<?php if ( $settings['premium_blog_post_format_icon'] !== 'yes' ) : echo 'margin-left:0px;'; endif; ?>">
|
448 |
+
<?php
|
449 |
+
if ( $settings['premium_blog_excerpt'] === 'yes' ) :
|
450 |
+
echo premium_addons_get_excerpt_by_id(get_the_ID(),$settings['premium_blog_excerpt_length']);
|
451 |
+
else: the_content();
|
452 |
+
endif; ?>
|
453 |
+
</div>
|
454 |
+
<div class="premium-blog-post-tags-container" style="<?php if( $settings['premium_blog_post_format_icon'] !== 'yes' ) : echo 'margin-left:0px;'; endif; ?>">
|
455 |
+
<?php if( $settings['premium_blog_tags_meta'] === 'yes' && the_tags() != '' ) : ?>
|
456 |
+
<span class="premium-blog-post-tags"><i class="fa fa-tags fa-fw"></i><?php the_tags(' ', ', '); ?> </span>
|
457 |
+
<?php endif; ?>
|
458 |
+
</div>
|
459 |
+
</div>
|
460 |
+
</div>
|
461 |
+
<?php
|
462 |
+
}
|
463 |
+
?>
|
464 |
+
<?php if ( $settings['premium_blog_paging'] === 'yes' ) : ?>
|
465 |
+
<div class="premium-blog-pagination-container">
|
466 |
+
<?php
|
467 |
+
$count_posts = wp_count_posts();
|
468 |
+
$published_posts = $count_posts->publish;
|
469 |
+
|
470 |
+
$page_tot = ceil( ( $published_posts - $offset ) / $settings['premium_blog_number_of_posts'] );
|
471 |
+
if ( $page_tot > 1 ) {
|
472 |
+
$big = 999999999;
|
473 |
+
echo paginate_links( array(
|
474 |
+
'base' => str_replace( $big, '%#%',get_pagenum_link( 999999999, false ) ),
|
475 |
+
'format' => '?paged=%#%',
|
476 |
+
'current' => max( 1, $paged ),
|
477 |
+
'total' => $page_tot,
|
478 |
+
'prev_next' => true,
|
479 |
+
'prev_text' => esc_html__("‹ Previous"),
|
480 |
+
'next_text' => esc_html__("Next ›"),
|
481 |
+
'end_size' => 1,
|
482 |
+
'mid_size' => 2,
|
483 |
+
'type' => 'list'
|
484 |
+
)
|
485 |
+
);
|
486 |
+
}
|
487 |
+
?>
|
488 |
+
</div>
|
489 |
+
<?php endif; ?>
|
490 |
+
<?php
|
491 |
+
wp_reset_postdata();
|
492 |
+
|
493 |
+
} ?>
|
494 |
+
|
495 |
+
|
496 |
+
|
497 |
+
<?php
|
498 |
+
}
|
499 |
+
}
|
500 |
+
Plugin::instance()->widgets_manager->register_widget_type(new Premium_Blog_Widget());
|
widgets/premium-carousel.php
ADDED
@@ -0,0 +1,1055 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
if( !defined( 'ABSPATH' ) ) exit; // No access of directly access
|
4 |
+
|
5 |
+
class Premium_Carousel_Widget extends Widget_Base {
|
6 |
+
|
7 |
+
protected $templateInstance;
|
8 |
+
|
9 |
+
public function getTemplateInstance() {
|
10 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
11 |
+
}
|
12 |
+
|
13 |
+
public function get_name() {
|
14 |
+
return 'premium-carousel-widget';
|
15 |
+
}
|
16 |
+
|
17 |
+
public function get_title() {
|
18 |
+
return esc_html__( 'Premium Carousel', 'premium_elementor' );
|
19 |
+
}
|
20 |
+
|
21 |
+
public function get_icon() {
|
22 |
+
return 'pa-pa-points';
|
23 |
+
}
|
24 |
+
|
25 |
+
public function get_script_depends() {
|
26 |
+
return array( 'slick-carousel.js' );
|
27 |
+
}
|
28 |
+
|
29 |
+
public function get_categories() {
|
30 |
+
return [ 'premium-elements' ];
|
31 |
+
}
|
32 |
+
|
33 |
+
protected function _register_controls() {
|
34 |
+
$this->start_controls_section(
|
35 |
+
'premium-carousel-global-settings',
|
36 |
+
[
|
37 |
+
'label' => esc_html__( 'Premium Carousel Settings' , 'premium_elementor' )
|
38 |
+
]
|
39 |
+
);
|
40 |
+
|
41 |
+
$this->add_control(
|
42 |
+
'premium_carousel_slider_content',
|
43 |
+
[
|
44 |
+
'label' => esc_html__( 'Slider Content', 'premium_elementor' ),
|
45 |
+
'description' => esc_html__( 'The slide content is the post of elementor libray. Each post will be slider content when you select from here', 'premium_elementor' ),
|
46 |
+
'type' => Controls_Manager::SELECT2,
|
47 |
+
'options' => $this->getTemplateInstance()->get_elementor_page_list(),
|
48 |
+
'multiple' => true,
|
49 |
+
]
|
50 |
+
);
|
51 |
+
|
52 |
+
|
53 |
+
$this->add_control(
|
54 |
+
'premium_carousel_slider_type',
|
55 |
+
[
|
56 |
+
'label' => esc_html__( 'Slider Type', 'premium_elementor' ),
|
57 |
+
'description' => esc_html__( 'Which type of slider to show?', 'premium_elementor' ),
|
58 |
+
'type' => Controls_Manager::SELECT,
|
59 |
+
'default' => 'horizontal',
|
60 |
+
'options' => [
|
61 |
+
'horizontal' => esc_html__( 'Horizontal', 'premium_elementor' ),
|
62 |
+
'vertical' => esc_html__( 'Vertical', 'premium_elementor' )
|
63 |
+
]
|
64 |
+
]
|
65 |
+
);
|
66 |
+
|
67 |
+
$this->add_control(
|
68 |
+
'premium_carousel_slides_to_show',
|
69 |
+
[
|
70 |
+
'label' => esc_html__( 'Slides to Scroll', 'premium_elementor' ),
|
71 |
+
'type' => Controls_Manager::SELECT,
|
72 |
+
'default' => 'all',
|
73 |
+
'options' => [
|
74 |
+
'all' => esc_html__( 'All visible', 'premium_elementor' ),
|
75 |
+
'single' => esc_html__( 'One at a time', 'premium_elementor' )
|
76 |
+
]
|
77 |
+
]
|
78 |
+
);
|
79 |
+
|
80 |
+
$this->add_control(
|
81 |
+
'premium_carousel_responsive_desktop',
|
82 |
+
[
|
83 |
+
'label' => esc_html__( 'Slides on Desktop', 'premium_elementor' ),
|
84 |
+
'type' => Controls_Manager::NUMBER,
|
85 |
+
'default' => 5
|
86 |
+
]
|
87 |
+
);
|
88 |
+
|
89 |
+
$this->add_control(
|
90 |
+
'premium_carousel_responsive_tabs',
|
91 |
+
[
|
92 |
+
'label' => esc_html__( 'Slides on Tabs', 'premium_elementor' ),
|
93 |
+
'type' => Controls_Manager::NUMBER,
|
94 |
+
'default' => 3
|
95 |
+
]
|
96 |
+
);
|
97 |
+
|
98 |
+
$this->add_control(
|
99 |
+
'premium_carousel_responsive_mobile',
|
100 |
+
[
|
101 |
+
'label' => esc_html__( 'Slides on Mobile', 'premium_elementor' ),
|
102 |
+
'type' => Controls_Manager::NUMBER,
|
103 |
+
'default' => 2
|
104 |
+
]
|
105 |
+
);
|
106 |
+
|
107 |
+
$this->add_control(
|
108 |
+
'premium_carousel_loop',
|
109 |
+
[
|
110 |
+
'label' => esc_html__( 'Infinite Loop', 'premium_elementor' ),
|
111 |
+
'type' => Controls_Manager::SWITCHER,
|
112 |
+
'default' => 'yes'
|
113 |
+
]
|
114 |
+
);
|
115 |
+
|
116 |
+
$this->add_control(
|
117 |
+
'premium_carousel_speed',
|
118 |
+
[
|
119 |
+
'label' => esc_html__( 'Transition Speed', 'premium_elementor' ),
|
120 |
+
'description' => esc_html__( 'Speed at which next slide comes. (ms)', 'premium_elementor' ),
|
121 |
+
'type' => Controls_Manager::NUMBER,
|
122 |
+
'default' => 300
|
123 |
+
]
|
124 |
+
);
|
125 |
+
|
126 |
+
$this->add_control(
|
127 |
+
'premium_carousel_autoplay',
|
128 |
+
[
|
129 |
+
'label' => esc_html__( 'Autoplay Slides', 'premium_elementor' ),
|
130 |
+
'description' => esc_html__( 'Slide will start automatically', 'premium_elementor' ),
|
131 |
+
'type' => Controls_Manager::SWITCHER,
|
132 |
+
'default' => 'yes'
|
133 |
+
]
|
134 |
+
);
|
135 |
+
|
136 |
+
$this->add_control(
|
137 |
+
'premium_carousel_autoplay_speed',
|
138 |
+
[
|
139 |
+
'label' => esc_html__( 'Autoplay Speed', 'premium_elementor' ),
|
140 |
+
'description' => esc_html__( 'Autoplay speed at which next slide comes (ms)', 'premium_elementor' ),
|
141 |
+
'type' => Controls_Manager::NUMBER,
|
142 |
+
'default' => 5000,
|
143 |
+
'condition' => [
|
144 |
+
'premium_carousel_autoplay' => 'yes'
|
145 |
+
],
|
146 |
+
'separator' => 'after'
|
147 |
+
]
|
148 |
+
);
|
149 |
+
|
150 |
+
$this->add_control(
|
151 |
+
'premium_carousel_animation_list',
|
152 |
+
[
|
153 |
+
'label' => esc_html__( 'Animations', 'premium_elementor' ),
|
154 |
+
'type' => Controls_Manager::SELECT,
|
155 |
+
'default' => 'no-animation',
|
156 |
+
'options' => [
|
157 |
+
'no-animation' => esc_html__( 'Default', 'premium_elementor' ),
|
158 |
+
'swing' => esc_html__( 'Swing', 'premium_elementor' ),
|
159 |
+
'pulse' => esc_html__( 'Pulse', 'premium_elementor' ),
|
160 |
+
'fadeIn' => esc_html__( 'Fade In', 'premium_elementor' ),
|
161 |
+
'fadeInUp' => esc_html__( 'Fade In Up', 'premium_elementor' ),
|
162 |
+
'fadeInDown' => esc_html__( 'Fade In Down', 'premium_elementor' ),
|
163 |
+
'fadeInLeft' => esc_html__( 'Fade In Left', 'premium_elementor' ),
|
164 |
+
'fadeInRight' => esc_html__( 'Fade In Righ', 'premium_elementor' ),
|
165 |
+
'fadeInUpBig' => esc_html__( 'Fade In Up Long', 'premium_elementor' ),
|
166 |
+
'fadeInDownBig' => esc_html__( 'Fade In Down Long', 'premium_elementor' ),
|
167 |
+
'fadeInLeftBig' => esc_html__( 'Fade In Left Long', 'premium_elementor' ),
|
168 |
+
'fadeInRightBig' => esc_html__( 'Fade In Right Long', 'premium_elementor' ),
|
169 |
+
'slideInDown' => esc_html__( 'Slide In Down', 'premium_elementor' ),
|
170 |
+
'slideInLeft' => esc_html__( 'Slide In Left', 'premium_elementor' ),
|
171 |
+
'bounceInUp' => esc_html__( 'Bounce In', 'premium_elementor' ),
|
172 |
+
'bounceInDown' => esc_html__( 'Bounce In Up', 'premium_elementor' ),
|
173 |
+
'bounceInLeft' => esc_html__( 'Bounce In Down', 'premium_elementor' ),
|
174 |
+
'bounceInRight' => esc_html__( 'Bounce In Left', 'premium_elementor' ),
|
175 |
+
'rotateIn' => esc_html__( 'Rotate In', 'premium_elementor' ),
|
176 |
+
'lightSpeedIn' => esc_html__( 'Light Speed In', 'premium_elementor' ),
|
177 |
+
'rollIn' => esc_html__( 'Roll In', 'premium_elementor' ),
|
178 |
+
]
|
179 |
+
]
|
180 |
+
);
|
181 |
+
|
182 |
+
$this->add_control(
|
183 |
+
'premium_carousel_extra_class',
|
184 |
+
[
|
185 |
+
'label' => esc_html__( 'Extra Class', 'premium_elementor' ),
|
186 |
+
'type' => Controls_Manager::TEXT
|
187 |
+
]
|
188 |
+
);
|
189 |
+
|
190 |
+
|
191 |
+
$this->end_controls_section();
|
192 |
+
|
193 |
+
$this->start_controls_section(
|
194 |
+
'premium_carousel_navigation',
|
195 |
+
[
|
196 |
+
'label' => esc_html__( 'Navigation Setup', 'premium_elementor' ),
|
197 |
+
'tab' => Controls_Manager::TAB_STYLE
|
198 |
+
]
|
199 |
+
);
|
200 |
+
|
201 |
+
|
202 |
+
$this->add_control(
|
203 |
+
'premium_carousel_navigation_show',
|
204 |
+
[
|
205 |
+
'label' => esc_html__( 'Navigation Arrows', 'premium_elementor' ),
|
206 |
+
'description' => esc_html__( 'Navigation Arrows show or hide', 'premium_elementor' ),
|
207 |
+
'type' => Controls_Manager::SWITCHER,
|
208 |
+
'default' => 'yes'
|
209 |
+
]
|
210 |
+
);
|
211 |
+
|
212 |
+
$this->add_control(
|
213 |
+
'premium_carousel_arrow_style',
|
214 |
+
[
|
215 |
+
'label' => esc_html__( 'Arrow Style', 'premium_elementor' ),
|
216 |
+
'type' => Controls_Manager::SELECT,
|
217 |
+
'default' => 'default',
|
218 |
+
'options' => [
|
219 |
+
'default' => esc_html__( 'Default', 'premium_elementor' ),
|
220 |
+
'circle-bg' => esc_html__( 'Circle Background', 'premium_elementor' ),
|
221 |
+
'square-bg' => esc_html__( 'Square Background', 'premium_elementor' ),
|
222 |
+
'circle-border' => esc_html__( 'Circle border', 'premium_elementor' ),
|
223 |
+
'square-border' => esc_html__( 'Square border', 'premium_elementor' ),
|
224 |
+
],
|
225 |
+
'condition' => [
|
226 |
+
'premium_carousel_navigation_show' => 'yes'
|
227 |
+
]
|
228 |
+
]
|
229 |
+
);
|
230 |
+
|
231 |
+
$this->add_control(
|
232 |
+
'premium_carousel_arrow_bg_color',
|
233 |
+
[
|
234 |
+
'label' => esc_html__( 'Background Color', 'premium_elementor' ),
|
235 |
+
'type' => Controls_Manager::COLOR,
|
236 |
+
'scheme' => [
|
237 |
+
'type' => Scheme_Color::get_type(),
|
238 |
+
'value' => Scheme_Color::COLOR_1,
|
239 |
+
],
|
240 |
+
'default' => '#ffffff',
|
241 |
+
'condition' => [
|
242 |
+
'premium_carousel_arrow_style' => [ 'circle-bg', 'square-bg' ]
|
243 |
+
],
|
244 |
+
'selectors' => [
|
245 |
+
'{{WRAPPER}} .premium-carousel-wrapper .circle-bg' => 'background: {{VALUE}};',
|
246 |
+
'{{WRAPPER}} .premium-carousel-wrapper .square-bg' => 'background: {{VALUE}};',
|
247 |
+
],
|
248 |
+
]
|
249 |
+
);
|
250 |
+
|
251 |
+
$this->add_control(
|
252 |
+
'premium_carousel_arrow_border_color',
|
253 |
+
[
|
254 |
+
'label' => esc_html__( 'Border Color', 'premium_elementor' ),
|
255 |
+
'type' => Controls_Manager::COLOR,
|
256 |
+
'scheme' => [
|
257 |
+
'type' => Scheme_Color::get_type(),
|
258 |
+
'value' => Scheme_Color::COLOR_1,
|
259 |
+
],
|
260 |
+
'default' => '#ffffff',
|
261 |
+
'condition' => [
|
262 |
+
'premium_carousel_arrow_style' => [ 'circle-border', 'square-border' ]
|
263 |
+
],
|
264 |
+
'selectors' => [
|
265 |
+
'{{WRAPPER}} .premium-carousel-wrapper .square-border' => 'border: solid {{VALUE}};',
|
266 |
+
'{{WRAPPER}} .premium-carousel-wrapper .circle-border' => 'border: solid {{VALUE}};',
|
267 |
+
],
|
268 |
+
]
|
269 |
+
);
|
270 |
+
|
271 |
+
$this->add_control(
|
272 |
+
'premium_carousel_border_size',
|
273 |
+
[
|
274 |
+
'label' => esc_html__( 'Border Size', 'premium_elementor' ),
|
275 |
+
'type' => Controls_Manager::SLIDER,
|
276 |
+
'default' => [
|
277 |
+
'size' => 1,
|
278 |
+
],
|
279 |
+
'range' => [
|
280 |
+
'px' => [
|
281 |
+
'min' => 0,
|
282 |
+
'max' => 60
|
283 |
+
],
|
284 |
+
],
|
285 |
+
'condition' => [
|
286 |
+
'premium_carousel_arrow_style' => [ 'circle-border', 'square-border' ]
|
287 |
+
],
|
288 |
+
'selectors' => [
|
289 |
+
'{{WRAPPER}} .premium-carousel-wrapper .square-border' => 'border-width: {{SIZE}}{{UNIT}};',
|
290 |
+
'{{WRAPPER}} .premium-carousel-wrapper .circle-border' => 'border-width: {{SIZE}}{{UNIT}};',
|
291 |
+
],
|
292 |
+
]
|
293 |
+
);
|
294 |
+
|
295 |
+
$this->add_control(
|
296 |
+
'premium_carousel_arrow_color',
|
297 |
+
[
|
298 |
+
'label' => esc_html__( 'Arrow Color', 'premium_elementor' ),
|
299 |
+
'type' => Controls_Manager::COLOR,
|
300 |
+
'scheme' => [
|
301 |
+
'type' => Scheme_Color::get_type(),
|
302 |
+
'value' => Scheme_Color::COLOR_1,
|
303 |
+
],
|
304 |
+
'default' => '#000000',
|
305 |
+
'condition' => [
|
306 |
+
'premium_carousel_navigation_show' => 'yes'
|
307 |
+
],
|
308 |
+
'selectors' => [
|
309 |
+
'{{WRAPPER}} .premium-carousel-wrapper .slick-arrow' => 'color: {{VALUE}};',
|
310 |
+
],
|
311 |
+
]
|
312 |
+
);
|
313 |
+
|
314 |
+
$this->add_control(
|
315 |
+
'premium_carousel_arrow_size',
|
316 |
+
[
|
317 |
+
'label' => esc_html__( 'Arrow Size', 'premium_elementor' ),
|
318 |
+
'type' => Controls_Manager::SLIDER,
|
319 |
+
'default' => [
|
320 |
+
'size' => 14,
|
321 |
+
],
|
322 |
+
'range' => [
|
323 |
+
'px' => [
|
324 |
+
'min' => 0,
|
325 |
+
'max' => 60
|
326 |
+
],
|
327 |
+
],
|
328 |
+
'condition' => [
|
329 |
+
'premium_carousel_navigation_show' => 'yes'
|
330 |
+
],
|
331 |
+
'selectors' => [
|
332 |
+
'{{WRAPPER}} .premium-carousel-wrapper .slick-arrow' => 'font-size: {{SIZE}}{{UNIT}};',
|
333 |
+
],
|
334 |
+
]
|
335 |
+
);
|
336 |
+
|
337 |
+
|
338 |
+
$this->add_control(
|
339 |
+
'premium_carousel_arrow_icon_next',
|
340 |
+
[
|
341 |
+
'label' => esc_html__( 'Select Icon for \'Next Arrow\'', 'premium_elementor' ),
|
342 |
+
'type' => Controls_Manager::CHOOSE,
|
343 |
+
'options' => [
|
344 |
+
'right_arrow_bold' => [
|
345 |
+
|
346 |
+
'icon' => 'fa fa-arrow-right',
|
347 |
+
|
348 |
+
],
|
349 |
+
'right_arrow_long' => [
|
350 |
+
|
351 |
+
'icon' => 'fa fa-long-arrow-right',
|
352 |
+
|
353 |
+
],
|
354 |
+
'right_arrow_long_circle' => [
|
355 |
+
|
356 |
+
'icon' => 'fa fa-arrow-circle-right',
|
357 |
+
|
358 |
+
],
|
359 |
+
'right_arrow_angle' => [
|
360 |
+
|
361 |
+
'icon' => 'fa fa-angle-right',
|
362 |
+
|
363 |
+
],
|
364 |
+
'right_arrow_chevron' => [
|
365 |
+
|
366 |
+
'icon' => 'fa fa-chevron-right',
|
367 |
+
|
368 |
+
]
|
369 |
+
],
|
370 |
+
'default' => 'right_arrow_angle',
|
371 |
+
'condition' => [
|
372 |
+
'premium_carousel_navigation_show' => 'yes',
|
373 |
+
'premium_carousel_slider_type!' => 'vertical'
|
374 |
+
]
|
375 |
+
]
|
376 |
+
);
|
377 |
+
|
378 |
+
// If the carousel type vertical
|
379 |
+
$this->add_control(
|
380 |
+
'premium_carousel_arrow_icon_next_ver',
|
381 |
+
[
|
382 |
+
'label' => esc_html__( 'Select Icon for \'Bottom Arrow\'', 'premium_elementor' ),
|
383 |
+
'type' => Controls_Manager::CHOOSE,
|
384 |
+
'options' => [
|
385 |
+
'right_arrow_bold' => [
|
386 |
+
|
387 |
+
'icon' => 'fa fa-arrow-down',
|
388 |
+
|
389 |
+
],
|
390 |
+
'right_arrow_long' => [
|
391 |
+
|
392 |
+
'icon' => 'fa fa-long-arrow-down',
|
393 |
+
|
394 |
+
],
|
395 |
+
'right_arrow_long_circle' => [
|
396 |
+
|
397 |
+
'icon' => 'fa fa-arrow-circle-down',
|
398 |
+
|
399 |
+
],
|
400 |
+
'right_arrow_angle' => [
|
401 |
+
|
402 |
+
'icon' => 'fa fa-angle-down',
|
403 |
+
|
404 |
+
],
|
405 |
+
'right_arrow_chevron' => [
|
406 |
+
|
407 |
+
'icon' => 'fa fa-chevron-down',
|
408 |
+
|
409 |
+
]
|
410 |
+
],
|
411 |
+
'default' => 'right_arrow_angle',
|
412 |
+
'condition' => [
|
413 |
+
'premium_carousel_navigation_show' => 'yes',
|
414 |
+
'premium_carousel_slider_type' => 'vertical',
|
415 |
+
]
|
416 |
+
]
|
417 |
+
);
|
418 |
+
|
419 |
+
|
420 |
+
$this->add_control(
|
421 |
+
'premium_carousel_arrow_icon_prev',
|
422 |
+
[
|
423 |
+
'label' => esc_html__( 'Select Icon for \'Prev Arrow\'', 'premium_elementor' ),
|
424 |
+
'type' => Controls_Manager::CHOOSE,
|
425 |
+
'options' => [
|
426 |
+
'left_arrow_bold' => [
|
427 |
+
|
428 |
+
'icon' => 'fa fa-arrow-left',
|
429 |
+
|
430 |
+
],
|
431 |
+
'left_arrow_long' => [
|
432 |
+
|
433 |
+
'icon' => 'fa fa-long-arrow-left',
|
434 |
+
|
435 |
+
],
|
436 |
+
'left_arrow_long_circle' => [
|
437 |
+
|
438 |
+
'icon' => 'fa fa-arrow-circle-left',
|
439 |
+
|
440 |
+
],
|
441 |
+
'left_arrow_angle' => [
|
442 |
+
|
443 |
+
'icon' => 'fa fa-angle-left',
|
444 |
+
|
445 |
+
],
|
446 |
+
'left_arrow_chevron' => [
|
447 |
+
|
448 |
+
'icon' => 'fa fa-chevron-left',
|
449 |
+
|
450 |
+
]
|
451 |
+
],
|
452 |
+
'default' => 'left_arrow_angle',
|
453 |
+
'condition' => [
|
454 |
+
'premium_carousel_navigation_show' => 'yes',
|
455 |
+
'premium_carousel_slider_type!' => 'vertical',
|
456 |
+
]
|
457 |
+
]
|
458 |
+
);
|
459 |
+
|
460 |
+
// If carousel slider is vertical type
|
461 |
+
$this->add_control(
|
462 |
+
'premium_carousel_arrow_icon_prev_ver',
|
463 |
+
[
|
464 |
+
'label' => esc_html__( 'Select Icon for \'Up Arrow\'', 'premium_elementor' ),
|
465 |
+
'type' => Controls_Manager::CHOOSE,
|
466 |
+
'options' => [
|
467 |
+
'left_arrow_bold' => [
|
468 |
+
|
469 |
+
'icon' => 'fa fa-arrow-up',
|
470 |
+
|
471 |
+
],
|
472 |
+
'left_arrow_long' => [
|
473 |
+
|
474 |
+
'icon' => 'fa fa-long-arrow-up',
|
475 |
+
|
476 |
+
],
|
477 |
+
'left_arrow_long_circle' => [
|
478 |
+
|
479 |
+
'icon' => 'fa fa-arrow-circle-up',
|
480 |
+
|
481 |
+
],
|
482 |
+
'left_arrow_angle' => [
|
483 |
+
|
484 |
+
'icon' => 'fa fa-angle-up',
|
485 |
+
|
486 |
+
],
|
487 |
+
'left_arrow_chevron' => [
|
488 |
+
|
489 |
+
'icon' => 'fa fa-chevron-up',
|
490 |
+
|
491 |
+
]
|
492 |
+
],
|
493 |
+
'default' => 'left_arrow_angle',
|
494 |
+
'condition' => [
|
495 |
+
'premium_carousel_navigation_show' => 'yes',
|
496 |
+
'premium_carousel_slider_type' => 'vertical',
|
497 |
+
]
|
498 |
+
]
|
499 |
+
);
|
500 |
+
|
501 |
+
|
502 |
+
$this->add_control(
|
503 |
+
'premium_carousel_dot_navigation_show',
|
504 |
+
[
|
505 |
+
'label' => esc_html__( 'Dot Navigation', 'premium_elementor' ),
|
506 |
+
'description' => esc_html__( 'Dots Navigation show or hide', 'premium_elementor' ),
|
507 |
+
'type' => Controls_Manager::SWITCHER,
|
508 |
+
'default' => 'yes'
|
509 |
+
]
|
510 |
+
);
|
511 |
+
|
512 |
+
|
513 |
+
$this->add_control(
|
514 |
+
'premium_carousel_dot_navigation_color',
|
515 |
+
[
|
516 |
+
'label' => esc_html__( 'Dot Navigation Color', 'premium_elementor' ),
|
517 |
+
'type' => Controls_Manager::COLOR,
|
518 |
+
'scheme' => [
|
519 |
+
'type' => Scheme_Color::get_type(),
|
520 |
+
'value' => Scheme_Color::COLOR_1,
|
521 |
+
],
|
522 |
+
'default' => '#8e8e8e',
|
523 |
+
'condition' => [
|
524 |
+
'premium_carousel_dot_navigation_show' => 'yes'
|
525 |
+
],
|
526 |
+
'selectors' => [
|
527 |
+
'{{WRAPPER}} ul.slick-dots li' => 'color: {{VALUE}}'
|
528 |
+
]
|
529 |
+
]
|
530 |
+
);
|
531 |
+
|
532 |
+
|
533 |
+
$this->add_control(
|
534 |
+
'premium_carousel_dot_navigation_active_color',
|
535 |
+
[
|
536 |
+
'label' => esc_html__( 'Dot Active Color', 'premium_elementor' ),
|
537 |
+
'type' => Controls_Manager::COLOR,
|
538 |
+
'scheme' => [
|
539 |
+
'type' => Scheme_Color::get_type(),
|
540 |
+
'value' => Scheme_Color::COLOR_1,
|
541 |
+
],
|
542 |
+
'default' => '#3d3d3d',
|
543 |
+
'condition' => [
|
544 |
+
'premium_carousel_dot_navigation_show' => 'yes'
|
545 |
+
],
|
546 |
+
'selectors' => [
|
547 |
+
'{{WRAPPER}} ul.slick-dots li.slick-active' => 'color: {{VALUE}}'
|
548 |
+
]
|
549 |
+
]
|
550 |
+
);
|
551 |
+
|
552 |
+
$this->add_control(
|
553 |
+
'premium_carousel_dot_icon',
|
554 |
+
[
|
555 |
+
'label' => esc_html__( 'Select Icon for \'Navigation Dots\'', 'premium_elementor' ),
|
556 |
+
'type' => Controls_Manager::CHOOSE,
|
557 |
+
'options' => [
|
558 |
+
'square_white' => [
|
559 |
+
|
560 |
+
'icon' => 'fa fa-square-o',
|
561 |
+
|
562 |
+
],
|
563 |
+
'square_black' => [
|
564 |
+
|
565 |
+
'icon' => 'fa fa-square',
|
566 |
+
|
567 |
+
],
|
568 |
+
'circle_white' => [
|
569 |
+
|
570 |
+
'icon' => 'fa fa-circle',
|
571 |
+
|
572 |
+
],
|
573 |
+
'circle_thin' => [
|
574 |
+
|
575 |
+
'icon' => 'fa fa-circle-thin',
|
576 |
+
|
577 |
+
],
|
578 |
+
'circle_thin_bold' => [
|
579 |
+
|
580 |
+
'icon' => 'fa fa-circle-o',
|
581 |
+
|
582 |
+
]
|
583 |
+
],
|
584 |
+
'default' => 'circle_white',
|
585 |
+
'condition' => [
|
586 |
+
'premium_carousel_dot_navigation_show' => 'yes'
|
587 |
+
]
|
588 |
+
]
|
589 |
+
);
|
590 |
+
|
591 |
+
$this->end_controls_section();
|
592 |
+
|
593 |
+
$this->start_controls_section(
|
594 |
+
'premium-carousel-advance-settings',
|
595 |
+
[
|
596 |
+
'label' => esc_html__( 'Advance Settings' , 'premium_elementor' ),
|
597 |
+
'tab' => Controls_Manager::TAB_STYLE
|
598 |
+
]
|
599 |
+
);
|
600 |
+
|
601 |
+
$this->add_control(
|
602 |
+
'premium_carousel_draggable_effect',
|
603 |
+
[
|
604 |
+
'label' => esc_html__( 'Draggable Effect', 'premium_elementor' ),
|
605 |
+
'description' => esc_html__( 'Do you want the draggable effect?', 'premium_elementor' ),
|
606 |
+
'type' => Controls_Manager::SWITCHER,
|
607 |
+
'default' => 'yes'
|
608 |
+
]
|
609 |
+
);
|
610 |
+
|
611 |
+
$this->add_control(
|
612 |
+
'premium_carousel_touch_move',
|
613 |
+
[
|
614 |
+
'label' => esc_html__( 'Touch Move', 'premium_elementor' ),
|
615 |
+
'description' => esc_html__( 'Enable slide moving with touch', 'premium_elementor' ),
|
616 |
+
'type' => Controls_Manager::SWITCHER,
|
617 |
+
'default' => 'yes'
|
618 |
+
]
|
619 |
+
);
|
620 |
+
|
621 |
+
$this->add_control(
|
622 |
+
'premium_carousel_RTL_Mode',
|
623 |
+
[
|
624 |
+
'label' => esc_html__( 'RTL Mode', 'premium_elementor' ),
|
625 |
+
'description' => esc_html__( 'Turn on RTL mode', 'premium_elementor' ),
|
626 |
+
'type' => Controls_Manager::SWITCHER,
|
627 |
+
'default' => 'no',
|
628 |
+
'condition' => [
|
629 |
+
'premium_carousel_slider_type!' => 'vertical'
|
630 |
+
]
|
631 |
+
]
|
632 |
+
);
|
633 |
+
|
634 |
+
$this->add_control(
|
635 |
+
'premium_carousel_adaptive_height',
|
636 |
+
[
|
637 |
+
'label' => esc_html__( 'Adaptive Height', 'premium_elementor' ),
|
638 |
+
'description' => esc_html__( 'Turn on Adaptive Height', 'premium_elementor' ),
|
639 |
+
'type' => Controls_Manager::SWITCHER,
|
640 |
+
'default' => 'no'
|
641 |
+
]
|
642 |
+
);
|
643 |
+
|
644 |
+
$this->add_control(
|
645 |
+
'premium_carousel_pausehover',
|
646 |
+
[
|
647 |
+
'label' => esc_html__( 'Pause on Hover', 'premium_elementor' ),
|
648 |
+
'description' => esc_html__( 'Turn on Adaptive Height', 'premium_elementor' ),
|
649 |
+
'type' => Controls_Manager::SWITCHER,
|
650 |
+
'default' => 'no'
|
651 |
+
]
|
652 |
+
);
|
653 |
+
|
654 |
+
$this->add_control(
|
655 |
+
'premium_carousel_center_mode',
|
656 |
+
[
|
657 |
+
'label' => esc_html__( 'Enable Center Mode of the Carousel', 'premium_elementor' ),
|
658 |
+
'description' => esc_html__( 'Enables centered view with partial prev/next slides. Animations do not work with center mode. Slides to scroll -> \'All Visible\' do not work with center mode.', 'premium_elementor' ),
|
659 |
+
'type' => Controls_Manager::SWITCHER,
|
660 |
+
'default' => 'no'
|
661 |
+
]
|
662 |
+
);
|
663 |
+
|
664 |
+
$this->add_control(
|
665 |
+
'premium_carousel_space_btw_items',
|
666 |
+
[
|
667 |
+
'label' => esc_html__( 'Space Between Two Ttems', 'premium_elementor' ),
|
668 |
+
'type' => Controls_Manager::NUMBER,
|
669 |
+
'default' => '15'
|
670 |
+
]
|
671 |
+
);
|
672 |
+
|
673 |
+
}
|
674 |
+
|
675 |
+
|
676 |
+
protected function render() {
|
677 |
+
$settings = $this->get_settings();
|
678 |
+
$options = '';
|
679 |
+
// Carousel sliding type
|
680 |
+
if( $settings['premium_carousel_slider_type'] == 'horizontal' ){
|
681 |
+
$options .= 'vertical: false,'."\r\n";
|
682 |
+
} else if( $settings['premium_carousel_slider_type'] == 'vertical' ) {
|
683 |
+
$options .= 'vertical: true,'."\r\n";
|
684 |
+
}
|
685 |
+
|
686 |
+
// responsive carousel set up
|
687 |
+
|
688 |
+
$slides_on_desk = $settings['premium_carousel_responsive_desktop'];
|
689 |
+
if( $settings['premium_carousel_slides_to_show'] == 'all' ) {
|
690 |
+
$slide_to_scroll = $slides_on_desk;
|
691 |
+
$options .= 'slidesToScroll: ' . $slide_to_scroll . ','."\r\n";
|
692 |
+
} else {
|
693 |
+
$slide_to_scroll = 1;
|
694 |
+
$options .= 'slidesToScroll: ' . $slide_to_scroll .','."\r\n";
|
695 |
+
}
|
696 |
+
|
697 |
+
$options .= 'slidesToShow: ' .$slides_on_desk . ',';
|
698 |
+
|
699 |
+
$slides_on_tabs = $settings['premium_carousel_responsive_tabs'];
|
700 |
+
$slides_on_mob = $settings['premium_carousel_responsive_mobile'];
|
701 |
+
|
702 |
+
if( $settings['premium_carousel_responsive_tabs'] == '' ) {
|
703 |
+
$slides_on_tabs = $slides_on_desk;
|
704 |
+
}
|
705 |
+
|
706 |
+
if( $settings['premium_carousel_responsive_mobile'] == '' ) {
|
707 |
+
$slides_on_mob = $slides_on_desk;
|
708 |
+
}
|
709 |
+
|
710 |
+
$options .= 'responsive : [
|
711 |
+
{
|
712 |
+
breakpoint: 1025,
|
713 |
+
settings: {
|
714 |
+
slidesToShow: ' . $slides_on_desk . ',
|
715 |
+
slidesToScroll: ' . $slide_to_scroll . '
|
716 |
+
}
|
717 |
+
},
|
718 |
+
{
|
719 |
+
breakpoint: 769,
|
720 |
+
settings: {
|
721 |
+
slidesToShow: ' . $slides_on_tabs . ',
|
722 |
+
slidesToScroll: ' . $slides_on_tabs . '
|
723 |
+
}
|
724 |
+
},
|
725 |
+
{
|
726 |
+
breakpoint: 481,
|
727 |
+
settings: {
|
728 |
+
slidesToShow: ' . $slides_on_mob . ',
|
729 |
+
slidesToScroll: ' . $slides_on_mob . '
|
730 |
+
}
|
731 |
+
}
|
732 |
+
],';
|
733 |
+
|
734 |
+
|
735 |
+
if( $settings['premium_carousel_loop'] == 'yes' ) {
|
736 |
+
$options . 'infinite : true,';
|
737 |
+
} else {
|
738 |
+
$options . 'infinite : false,';
|
739 |
+
}
|
740 |
+
|
741 |
+
if( $settings['premium_carousel_speed'] != '' ) {
|
742 |
+
$options .= 'speed : ' . $settings['premium_carousel_speed'].',';
|
743 |
+
}
|
744 |
+
|
745 |
+
|
746 |
+
if( $settings['premium_carousel_autoplay'] == 'yes' ) {
|
747 |
+
$options .= 'autoplay : true,';
|
748 |
+
|
749 |
+
if( $settings['premium_carousel_autoplay_speed'] !== '' ) {
|
750 |
+
$options .= 'autoplaySpeed : ' . $settings['premium_carousel_autoplay_speed'] .',';
|
751 |
+
}
|
752 |
+
|
753 |
+
}
|
754 |
+
|
755 |
+
|
756 |
+
if( $settings['premium_carousel_draggable_effect'] == 'yes' ) {
|
757 |
+
$options .= 'draggable : true,';
|
758 |
+
}
|
759 |
+
|
760 |
+
if( $settings['premium_carousel_touch_move'] == 'yes' ) {
|
761 |
+
$options .= 'touchMove : true,';
|
762 |
+
}
|
763 |
+
|
764 |
+
$dir = '';
|
765 |
+
if( $settings['premium_carousel_RTL_Mode'] == 'yes' ) {
|
766 |
+
$options .= 'rtl : true,';
|
767 |
+
$dir = 'dir="rtl"';
|
768 |
+
}
|
769 |
+
|
770 |
+
if( $settings['premium_carousel_adaptive_height'] == 'yes' ) {
|
771 |
+
$options .= 'adaptiveHeight : true,';
|
772 |
+
}
|
773 |
+
|
774 |
+
if( $settings['premium_carousel_pausehover'] == 'no' ) {
|
775 |
+
$options .= 'pauseOnHover: false,';
|
776 |
+
} else {
|
777 |
+
$options .= 'pauseOnHover: true,';
|
778 |
+
}
|
779 |
+
|
780 |
+
if( $settings['premium_carousel_center_mode'] == 'yes' ) {
|
781 |
+
$options .= 'centerMode : true,';
|
782 |
+
}
|
783 |
+
|
784 |
+
if( $settings['premium_carousel_space_btw_items'] !== '' ) {
|
785 |
+
$options .= 'centerPadding : ' . '"'.$settings['premium_carousel_space_btw_items'].'px",';
|
786 |
+
}
|
787 |
+
|
788 |
+
// Navigation arrow setting setup
|
789 |
+
|
790 |
+
if( $settings['premium_carousel_navigation_show'] == 'yes') {
|
791 |
+
$options .= 'arrows : true,';
|
792 |
+
|
793 |
+
if( $settings['premium_carousel_slider_type'] == 'vertical' ) {
|
794 |
+
$vertical_alignment = "ver-carousel-arrow";
|
795 |
+
} else {
|
796 |
+
$vertical_alignment = "carousel-arrow";
|
797 |
+
}
|
798 |
+
|
799 |
+
|
800 |
+
if( $settings['premium_carousel_arrow_style'] == 'circle-bg' ) {
|
801 |
+
$arrow_class = ' circle-bg';
|
802 |
+
}
|
803 |
+
if( $settings['premium_carousel_arrow_style'] == 'square-bg' ) {
|
804 |
+
$arrow_class = ' square-bg';
|
805 |
+
}
|
806 |
+
|
807 |
+
if( $settings['premium_carousel_arrow_style'] == 'square-border' ) {
|
808 |
+
$arrow_class = ' square-border';
|
809 |
+
}
|
810 |
+
|
811 |
+
if( $settings['premium_carousel_arrow_style'] == 'circle-border' ) {
|
812 |
+
$arrow_class = ' circle-border';
|
813 |
+
}
|
814 |
+
if( $settings['premium_carousel_arrow_style'] == 'default' ) {
|
815 |
+
$arrow_class = '';
|
816 |
+
}
|
817 |
+
|
818 |
+
if( $settings['premium_carousel_slider_type'] == 'vertical' ) {
|
819 |
+
$icon_next = $settings['premium_carousel_arrow_icon_next_ver'];
|
820 |
+
if( $icon_next == 'right_arrow_bold' ) {
|
821 |
+
$icon_next_class = 'fa fa-arrow-down';
|
822 |
+
}
|
823 |
+
if( $icon_next == 'right_arrow_long' ) {
|
824 |
+
$icon_next_class = 'fa fa-long-arrow-down';
|
825 |
+
}
|
826 |
+
if( $icon_next == 'right_arrow_long_circle' ) {
|
827 |
+
$icon_next_class = 'fa fa-arrow-circle-down';
|
828 |
+
}
|
829 |
+
if( $icon_next == 'right_arrow_angle' ) {
|
830 |
+
$icon_next_class = 'fa fa-angle-down';
|
831 |
+
}
|
832 |
+
if( $icon_next == 'right_arrow_chevron' ) {
|
833 |
+
$icon_next_class = 'fa fa-chevron-down';
|
834 |
+
}
|
835 |
+
|
836 |
+
$icon_prev = $settings['premium_carousel_arrow_icon_prev_ver'];
|
837 |
+
|
838 |
+
if( $icon_prev == 'left_arrow_bold' ) {
|
839 |
+
$icon_prev_class = 'fa fa-arrow-up';
|
840 |
+
}
|
841 |
+
if( $icon_prev == 'left_arrow_long' ) {
|
842 |
+
$icon_prev_class = 'fa fa-long-arrow-up';
|
843 |
+
}
|
844 |
+
if( $icon_prev == 'left_arrow_long_circle' ) {
|
845 |
+
$icon_prev_class = 'fa fa-arrow-circle-up';
|
846 |
+
}
|
847 |
+
if( $icon_prev == 'left_arrow_angle' ) {
|
848 |
+
$icon_prev_class = 'fa fa-angle-up';
|
849 |
+
}
|
850 |
+
if( $icon_prev == 'left_arrow_chevron' ) {
|
851 |
+
$icon_prev_class = 'fa fa-chevron-up';
|
852 |
+
}
|
853 |
+
} else {
|
854 |
+
|
855 |
+
$icon_next = $settings['premium_carousel_arrow_icon_next'];
|
856 |
+
|
857 |
+
if( $icon_next == 'right_arrow_bold' ) {
|
858 |
+
$icon_next_class = 'fa fa-arrow-right';
|
859 |
+
}
|
860 |
+
if( $icon_next == 'right_arrow_long' ) {
|
861 |
+
$icon_next_class = 'fa fa-long-arrow-right';
|
862 |
+
}
|
863 |
+
if( $icon_next == 'right_arrow_long_circle' ) {
|
864 |
+
$icon_next_class = 'fa fa-arrow-circle-right';
|
865 |
+
}
|
866 |
+
if( $icon_next == 'right_arrow_angle' ) {
|
867 |
+
$icon_next_class = 'fa fa-angle-right';
|
868 |
+
}
|
869 |
+
if( $icon_next == 'right_arrow_chevron' ) {
|
870 |
+
$icon_next_class = 'fa fa-chevron-right';
|
871 |
+
}
|
872 |
+
|
873 |
+
$icon_prev = $settings['premium_carousel_arrow_icon_prev'];
|
874 |
+
|
875 |
+
if( $icon_prev == 'left_arrow_bold' ) {
|
876 |
+
$icon_prev_class = 'fa fa-arrow-left';
|
877 |
+
}
|
878 |
+
if( $icon_prev == 'left_arrow_long' ) {
|
879 |
+
$icon_prev_class = 'fa fa-long-arrow-left';
|
880 |
+
}
|
881 |
+
if( $icon_prev == 'left_arrow_long_circle' ) {
|
882 |
+
$icon_prev_class = 'fa fa-arrow-circle-left';
|
883 |
+
}
|
884 |
+
if( $icon_prev == 'left_arrow_angle' ) {
|
885 |
+
$icon_prev_class = 'fa fa-angle-left';
|
886 |
+
}
|
887 |
+
if( $icon_prev == 'left_arrow_chevron' ) {
|
888 |
+
$icon_prev_class = 'fa fa-chevron-left';
|
889 |
+
}
|
890 |
+
}
|
891 |
+
|
892 |
+
|
893 |
+
$next_arrow = '<a type="button" data-role="none" class="'. $vertical_alignment .' carousel-next'.$arrow_class.'" aria-label="Next" role="button" style=""><i class="'.$icon_next_class.'" aria-hidden="true"></i></a>';
|
894 |
+
|
895 |
+
$left_arrow = '<a type="button" data-role="none" class="'. $vertical_alignment .' carousel-prev'.$arrow_class.'" aria-label="Next" role="button" style=""><i class="'.$icon_prev_class.'" aria-hidden="true"></i></a>';
|
896 |
+
|
897 |
+
$options .= 'nextArrow : \''.$next_arrow.'\',';
|
898 |
+
$options .= 'prevArrow : \''.$left_arrow.'\',';
|
899 |
+
|
900 |
+
} else {
|
901 |
+
$options .= 'arrows : false,';
|
902 |
+
}
|
903 |
+
|
904 |
+
if( $settings['premium_carousel_dot_navigation_show'] == 'yes' ){
|
905 |
+
$options .= 'dots: true,';
|
906 |
+
|
907 |
+
if( $settings['premium_carousel_dot_icon'] == 'square_white' ) {
|
908 |
+
$dot_icon = 'fa fa-square-o';
|
909 |
+
}
|
910 |
+
if( $settings['premium_carousel_dot_icon'] == 'square_black' ) {
|
911 |
+
$dot_icon = 'fa fa-square';
|
912 |
+
}
|
913 |
+
if( $settings['premium_carousel_dot_icon'] == 'circle_white' ) {
|
914 |
+
$dot_icon = 'fa fa-circle';
|
915 |
+
}
|
916 |
+
if( $settings['premium_carousel_dot_icon'] == 'circle_thin' ) {
|
917 |
+
$dot_icon = 'fa fa-circle-thin';
|
918 |
+
}
|
919 |
+
if( $settings['premium_carousel_dot_icon'] == 'circle_thin_bold' ) {
|
920 |
+
$dot_icon = 'fa fa-circle-o';
|
921 |
+
}
|
922 |
+
|
923 |
+
$options .= 'customPaging: function(slider, i) {
|
924 |
+
return \'<i class="' . $dot_icon . '"></i>\';
|
925 |
+
},';
|
926 |
+
|
927 |
+
}
|
928 |
+
|
929 |
+
$uid = uniqid( rand() );
|
930 |
+
$extra_class = $settings['premium_carousel_extra_class'] !== '' ? ' '.$settings['premium_carousel_extra_class'] : '';
|
931 |
+
|
932 |
+
|
933 |
+
$animation_class = $settings['premium_carousel_animation_list'];
|
934 |
+
$animation = 'class="item-wrapper" data-animation="animated ' . $animation_class .'"';
|
935 |
+
|
936 |
+
$uniqid = uniqid( rand() );
|
937 |
+
?>
|
938 |
+
<div id="premium-carousel-wrapper-<?php echo $uniqid; ?>" class="premium-carousel-wrapper carousel-wrapper-<?php echo $uniqid; ?><?php echo $extra_class;?>" <?php echo $dir; ?>>
|
939 |
+
<div id="premium-carousel-<?php echo $uid; ?>">
|
940 |
+
<?php
|
941 |
+
$boosted_elements_page_id = is_array( $settings['premium_carousel_slider_content'] ) ? $settings['premium_carousel_slider_content'] : array();
|
942 |
+
$boosted_elements_frontend = new Frontend;
|
943 |
+
|
944 |
+
foreach( $boosted_elements_page_id as $elementor_post_id ) :
|
945 |
+
?>
|
946 |
+
<div <?php echo $animation; ?>>
|
947 |
+
<?php echo $boosted_elements_frontend->get_builder_content($elementor_post_id, true); ?>
|
948 |
+
</div>
|
949 |
+
<?php endforeach; ?>
|
950 |
+
</div>
|
951 |
+
</div>
|
952 |
+
|
953 |
+
<script type="text/javascript">
|
954 |
+
(function( $ ) {
|
955 |
+
$(document).ready( function() {
|
956 |
+
function slideToShow( slick ) {
|
957 |
+
slidesToShow = slick.options.slidesToShow;
|
958 |
+
windowWidth = jQuery( window ).width();
|
959 |
+
if ( windowWidth < 1025 ) {
|
960 |
+
slidesToShow = slick.options.responsive[0].settings.slidesToShow;
|
961 |
+
}
|
962 |
+
if ( windowWidth < 769 ) {
|
963 |
+
slidesToShow = slick.options.responsive[1].settings.slidesToShow;
|
964 |
+
}
|
965 |
+
if ( windowWidth < 481 ) {
|
966 |
+
slidesToShow = slick.options.responsive[2].settings.slidesToShow;
|
967 |
+
}
|
968 |
+
return slidesToShow;
|
969 |
+
}
|
970 |
+
$('.carousel-wrapper-<?php echo $uniqid; ?>').on('init', function (event, slick ) {
|
971 |
+
event.preventDefault();
|
972 |
+
$('.carousel-wrapper-<?php echo $uniqid; ?> .item-wrapper.slick-active').each(function (index, el) {
|
973 |
+
$this = $(this);
|
974 |
+
$this.addClass($this.data('animation'));
|
975 |
+
});
|
976 |
+
|
977 |
+
$('.slick-track').addClass('translate');
|
978 |
+
|
979 |
+
});
|
980 |
+
|
981 |
+
$('#premium-carousel-<?php echo $uid; ?>').slick({ <?php echo $options; ?> });
|
982 |
+
|
983 |
+
$('.carousel-wrapper-<?php echo $uniqid; ?>').on('afterChange', function (event, slick, currentSlide, nextSlide) {
|
984 |
+
slidesScrolled = slick.options.slidesToScroll;
|
985 |
+
slidesToShow = slideToShow( slick );
|
986 |
+
centerMode = slick.options.centerMode;
|
987 |
+
|
988 |
+
|
989 |
+
$currentParent = slick.$slider[0].parentElement.id;
|
990 |
+
slideToAnimate = currentSlide + slidesToShow - 1;
|
991 |
+
|
992 |
+
if (slidesScrolled == 1) {
|
993 |
+
if ( centerMode == true ) {
|
994 |
+
animate = slideToAnimate - 2;
|
995 |
+
$inViewPort = $( '#' + $currentParent + " [data-slick-index='" + animate + "']");
|
996 |
+
$inViewPort.addClass($inViewPort.data('animation'));
|
997 |
+
} else {
|
998 |
+
$inViewPort = $( '#' + $currentParent + " [data-slick-index='" + slideToAnimate + "']");
|
999 |
+
$inViewPort.addClass($inViewPort.data('animation'));
|
1000 |
+
}
|
1001 |
+
} else {
|
1002 |
+
for (var i = slidesScrolled + currentSlide; i >= 0; i--) {
|
1003 |
+
$inViewPort = $( '#' + $currentParent + " [data-slick-index='" + i + "']");
|
1004 |
+
$inViewPort.addClass($inViewPort.data('animation'));
|
1005 |
+
}
|
1006 |
+
|
1007 |
+
}
|
1008 |
+
});
|
1009 |
+
|
1010 |
+
$('.carousel-wrapper-<?php echo $uniqid; ?>').on('beforeChange', function (event, slick, currentSlide) {
|
1011 |
+
$inViewPort = $("[data-slick-index='" + currentSlide + "']");
|
1012 |
+
$inViewPort.siblings().removeClass($inViewPort.data('animation'));
|
1013 |
+
});
|
1014 |
+
|
1015 |
+
<?php if( $settings['premium_carousel_slider_type'] == 'vertical' ) : ?>
|
1016 |
+
var maxHeight = -1;
|
1017 |
+
$('.slick-slide').each(function() {
|
1018 |
+
if ($(this).height() > maxHeight) {
|
1019 |
+
maxHeight = $(this).height();
|
1020 |
+
}
|
1021 |
+
});
|
1022 |
+
$('.slick-slide').each(function() {
|
1023 |
+
if ($(this).height() < maxHeight) {
|
1024 |
+
$(this).css('margin', Math.ceil((maxHeight-$(this).height())/2) + 'px 0');
|
1025 |
+
}
|
1026 |
+
});
|
1027 |
+
<?php endif; ?>
|
1028 |
+
|
1029 |
+
var marginFix = {
|
1030 |
+
element : $('a.ver-carousel-arrow'),
|
1031 |
+
getWidth : function() {
|
1032 |
+
var width = this.element.outerWidth();
|
1033 |
+
return width / 2;
|
1034 |
+
},
|
1035 |
+
setWidth : function( type = 'vertical') {
|
1036 |
+
if( type == 'vertical' ) {
|
1037 |
+
this.element.css( 'margin-left', '-' + this.getWidth() + 'px' );
|
1038 |
+
} else {
|
1039 |
+
this.element.css( 'margin-top', '-' + this.getWidth() + 'px' );
|
1040 |
+
}
|
1041 |
+
|
1042 |
+
}
|
1043 |
+
}
|
1044 |
+
marginFix.setWidth();
|
1045 |
+
marginFix.element = $('a.carousel-arrow');
|
1046 |
+
marginFix.setWidth('horizontal');
|
1047 |
+
});
|
1048 |
+
})(jQuery);
|
1049 |
+
</script>
|
1050 |
+
|
1051 |
+
<?php
|
1052 |
+
|
1053 |
+
}
|
1054 |
+
}
|
1055 |
+
Plugin::instance()->widgets_manager->register_widget_type( new Premium_Carousel_Widget() );
|
widgets/premium-countdown.php
ADDED
@@ -0,0 +1,615 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
if( !defined( 'ABSPATH' ) ) exit; // No access of directly access
|
4 |
+
|
5 |
+
class Premium_Counter_Down_Widget extends Widget_Base {
|
6 |
+
|
7 |
+
|
8 |
+
public function get_name() {
|
9 |
+
return 'premium-countdown-timer';
|
10 |
+
}
|
11 |
+
|
12 |
+
public function get_title() {
|
13 |
+
return esc_html__( 'Premium CountDown', 'premium_elementor' );
|
14 |
+
}
|
15 |
+
|
16 |
+
public function get_icon() {
|
17 |
+
return 'pa-pa-count';
|
18 |
+
}
|
19 |
+
|
20 |
+
public function get_script_depends() {
|
21 |
+
return [ 'countdowntimer.js' ];
|
22 |
+
}
|
23 |
+
|
24 |
+
public function get_categories() {
|
25 |
+
return [ 'premium-elements' ];
|
26 |
+
}
|
27 |
+
|
28 |
+
// Adding the controls fields for the premium countdown
|
29 |
+
// This will controls the animation, colors and background, dimensions etc
|
30 |
+
protected function _register_controls() {
|
31 |
+
$this->start_controls_section(
|
32 |
+
'pcdt-global-settings',
|
33 |
+
[
|
34 |
+
'label' => esc_html__( 'Premium CountDown Timer', 'premium_elementor' )
|
35 |
+
]
|
36 |
+
);
|
37 |
+
|
38 |
+
$this->add_control(
|
39 |
+
'pcdt-style',
|
40 |
+
[
|
41 |
+
'label' => esc_html__( 'CountDown Style', 'premium_elementor' ),
|
42 |
+
'type' => Controls_Manager::SELECT,
|
43 |
+
'options' => [
|
44 |
+
'd-u-s' => esc_html__( 'Digit and unit side by side', 'premium_elementor' ),
|
45 |
+
'd-u-u' => esc_html__( 'Digit and unit up and down', 'premium_elementor' ),
|
46 |
+
],
|
47 |
+
'default' => 'd-u-s'
|
48 |
+
]
|
49 |
+
);
|
50 |
+
|
51 |
+
$this->add_control(
|
52 |
+
'pcdt_date_time',
|
53 |
+
[
|
54 |
+
'label' => esc_html__( 'Target Data and Time', 'premium_elementor' ),
|
55 |
+
'type' => Controls_Manager::DATE_TIME,
|
56 |
+
'picker_options' => [
|
57 |
+
'format' => 'Y/m/d H:m:s'
|
58 |
+
],
|
59 |
+
'default' => date( "Y/m/d H:m:s", strtotime("+ 1 day") ),
|
60 |
+
'description' => esc_html__( 'Example Date: 2020-01-22 01:30', 'boosted-elements-progression' )
|
61 |
+
]
|
62 |
+
);
|
63 |
+
|
64 |
+
$this->add_control(
|
65 |
+
'pcdt_s_u_time',
|
66 |
+
[
|
67 |
+
'label' => esc_html__( 'Countdown Timer Depends', 'premium_elementor' ),
|
68 |
+
'type' => Controls_Manager::SELECT,
|
69 |
+
'options' => [
|
70 |
+
'wp-time' => esc_html__('WordPress Default', 'premium_elementor' ),
|
71 |
+
'user-time' => esc_html__('User system', 'premium_elementor' )
|
72 |
+
],
|
73 |
+
'default' => 'wp-time',
|
74 |
+
'description' => esc_html__('This will set current time from the options', 'premium_elementor')
|
75 |
+
]
|
76 |
+
);
|
77 |
+
|
78 |
+
$this->add_control(
|
79 |
+
'pcdt_units',
|
80 |
+
[
|
81 |
+
'label' => esc_html__( 'Select Time Units', 'premium_elementor' ),
|
82 |
+
'type' => Controls_Manager::SELECT2,
|
83 |
+
'description' => esc_html__('Select Time Units To Display In Countdown Timer', 'premium_elementor' ),
|
84 |
+
'options' => [
|
85 |
+
'Y' => esc_html__( 'Years', 'premium_elementor' ),
|
86 |
+
'O' => esc_html__( 'Month', 'premium_elementor' ),
|
87 |
+
'W' => esc_html__( 'Week', 'premium_elementor' ),
|
88 |
+
'D' => esc_html__( 'Day', 'premium_elementor' ),
|
89 |
+
'H' => esc_html__( 'Hours', 'premium_elementor' ),
|
90 |
+
'M' => esc_html__( 'Minutes', 'premium_elementor' ),
|
91 |
+
'S' => esc_html__( 'Second', 'premium_elementor' ),
|
92 |
+
],
|
93 |
+
'default' => [
|
94 |
+
'D',
|
95 |
+
'H',
|
96 |
+
'M',
|
97 |
+
'S'
|
98 |
+
],
|
99 |
+
'multiple' => true,
|
100 |
+
'separator' => 'after'
|
101 |
+
]
|
102 |
+
);
|
103 |
+
|
104 |
+
$this->add_responsive_control(
|
105 |
+
'separator_width',
|
106 |
+
[
|
107 |
+
'label' => esc_html__( 'Separator Width', 'premium_elementor' ),
|
108 |
+
'type' => Controls_Manager::SLIDER,
|
109 |
+
'default' => [
|
110 |
+
'size' => 30,
|
111 |
+
],
|
112 |
+
'range' => [
|
113 |
+
'px' => [
|
114 |
+
'min' => 0,
|
115 |
+
'max' => 200,
|
116 |
+
]
|
117 |
+
],
|
118 |
+
'selectors' => [
|
119 |
+
'{{WRAPPER}} .countdown .pre_countdown-section' => 'margin-right: {{SIZE}}{{UNIT}};'
|
120 |
+
]
|
121 |
+
]
|
122 |
+
);
|
123 |
+
|
124 |
+
$this->add_control(
|
125 |
+
'timer_border_style',
|
126 |
+
[
|
127 |
+
'label' => esc_html__( 'Timer digit Border Style', 'premium_elementor' ),
|
128 |
+
'type' => Controls_Manager::SELECT,
|
129 |
+
'options' => [
|
130 |
+
'none' => esc_html__('None', 'premium_elementor' ),
|
131 |
+
'solid' => esc_html__('Solid', 'premium_elementor' ),
|
132 |
+
'dashed' => esc_html__('Dashed', 'premium_elementor' ),
|
133 |
+
'dotted' => esc_html__('Dotted', 'premium_elementor' ),
|
134 |
+
'double' => esc_html__('Double', 'premium_elementor' ),
|
135 |
+
'inset' => esc_html__('Inset', 'premium_elementor' ),
|
136 |
+
'outset' => esc_html__('Outset', 'premium_elementor' ),
|
137 |
+
],
|
138 |
+
'default' => 'none',
|
139 |
+
|
140 |
+
]
|
141 |
+
);
|
142 |
+
|
143 |
+
$this->add_responsive_control(
|
144 |
+
'digit_border_size',
|
145 |
+
[
|
146 |
+
'label' => esc_html__( 'Digit Border Size', 'premium_elementor' ),
|
147 |
+
'type' => Controls_Manager::SLIDER,
|
148 |
+
'default' => [
|
149 |
+
'size' => 2,
|
150 |
+
],
|
151 |
+
'range' => [
|
152 |
+
'px' => [
|
153 |
+
'min' => 0,
|
154 |
+
'max' => 50,
|
155 |
+
]
|
156 |
+
],
|
157 |
+
'condition' => [
|
158 |
+
'timer_border_style!' => 'none'
|
159 |
+
],
|
160 |
+
'selectors' => [
|
161 |
+
'{{WRAPPER}} .border .pre_countdown-section .pre_countdown-amount' => 'border-width: {{SIZE}}{{UNIT}};'
|
162 |
+
]
|
163 |
+
]
|
164 |
+
);
|
165 |
+
|
166 |
+
|
167 |
+
$this->add_control(
|
168 |
+
'digit_border_color',
|
169 |
+
[
|
170 |
+
'label' => esc_html__( 'Digit Border Color', 'premium_elementor' ),
|
171 |
+
'type' => Controls_Manager::COLOR,
|
172 |
+
'scheme' => [
|
173 |
+
'type' => Scheme_Color::get_type(),
|
174 |
+
'value' => Scheme_Color::COLOR_2,
|
175 |
+
],
|
176 |
+
'condition' => [
|
177 |
+
'timer_border_style!' => 'none'
|
178 |
+
],
|
179 |
+
'selectors' => [
|
180 |
+
'{{WRAPPER}} .border .pre_countdown-section .pre_countdown-amount' => 'border-color: {{VALUE}};'
|
181 |
+
]
|
182 |
+
]
|
183 |
+
);
|
184 |
+
|
185 |
+
|
186 |
+
$this->add_responsive_control(
|
187 |
+
'digit_border_radius',
|
188 |
+
[
|
189 |
+
'label' => esc_html__( 'Digit Border Radius', 'premium_elementor' ),
|
190 |
+
'type' => Controls_Manager::SLIDER,
|
191 |
+
'default' => [
|
192 |
+
'size' => 2,
|
193 |
+
],
|
194 |
+
'range' => [
|
195 |
+
'px' => [
|
196 |
+
'min' => 1,
|
197 |
+
'max' => 100,
|
198 |
+
],
|
199 |
+
],
|
200 |
+
'condition' => [
|
201 |
+
'timer_border_style!' => 'none'
|
202 |
+
],
|
203 |
+
'selectors' => [
|
204 |
+
'{{WRAPPER}} .border .pre_countdown-section .pre_countdown-amount' => 'border-radius: {{SIZE}}%;'
|
205 |
+
]
|
206 |
+
]
|
207 |
+
);
|
208 |
+
|
209 |
+
|
210 |
+
$this->add_control(
|
211 |
+
'timer_digit_bg_color',
|
212 |
+
[
|
213 |
+
'label' => esc_html__( 'Digit Background Color', 'premium_elementor' ),
|
214 |
+
'type' => Controls_Manager::COLOR,
|
215 |
+
'scheme' => [
|
216 |
+
'type' => Scheme_Color::get_type(),
|
217 |
+
'value' => Scheme_Color::COLOR_1,
|
218 |
+
],
|
219 |
+
'selectors' => [
|
220 |
+
'{{WRAPPER}} .countdown .pre_countdown-section .pre_countdown-amount' => 'background-color: {{VALUE}};'
|
221 |
+
]
|
222 |
+
]
|
223 |
+
);
|
224 |
+
|
225 |
+
$this->add_responsive_control(
|
226 |
+
'digit_bg_size',
|
227 |
+
[
|
228 |
+
'label' => esc_html__( 'Digit Background Size', 'premium_elementor' ),
|
229 |
+
'type' => Controls_Manager::SLIDER,
|
230 |
+
'default' => [
|
231 |
+
'size' => 50,
|
232 |
+
],
|
233 |
+
'range' => [
|
234 |
+
'px' => [
|
235 |
+
'min' => 1,
|
236 |
+
'max' => 200,
|
237 |
+
]
|
238 |
+
],
|
239 |
+
'selectors' => [
|
240 |
+
'{{WRAPPER}} .countdown .pre_countdown-section .pre_countdown-amount' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};'
|
241 |
+
]
|
242 |
+
]
|
243 |
+
);
|
244 |
+
|
245 |
+
$this->end_controls_section();
|
246 |
+
|
247 |
+
$this->start_controls_section(
|
248 |
+
'on_expire_settings',
|
249 |
+
[
|
250 |
+
'label' => esc_html__( 'Expire Settings' , 'premium_elementor' )
|
251 |
+
]
|
252 |
+
);
|
253 |
+
|
254 |
+
$this->add_control(
|
255 |
+
'expire_text_url',
|
256 |
+
[
|
257 |
+
'label' => esc_html__('Expire Text or redirection', 'premium_elementor'),
|
258 |
+
'label_block' => false,
|
259 |
+
'type' => Controls_Manager::SELECT,
|
260 |
+
'options' => [
|
261 |
+
'text' => esc_html__('Text', 'premium_elementor'),
|
262 |
+
'url' => esc_html__('URL', 'premium_elementor')
|
263 |
+
],
|
264 |
+
'default' => 'text'
|
265 |
+
]
|
266 |
+
);
|
267 |
+
|
268 |
+
$this->add_control(
|
269 |
+
'expiry_text_',
|
270 |
+
[
|
271 |
+
'label' => esc_html__('On expiry Text', 'premium_elementor'),
|
272 |
+
'type' => Controls_Manager::WYSIWYG,
|
273 |
+
'default' => '<h1>Count Down is finished!</h1>',
|
274 |
+
'condition' => [
|
275 |
+
'expire_text_url' => 'text'
|
276 |
+
]
|
277 |
+
]
|
278 |
+
);
|
279 |
+
|
280 |
+
$this->add_control(
|
281 |
+
'expiry_redirection_',
|
282 |
+
[
|
283 |
+
'label' => esc_html__('Redirect To', 'premium_elementor'),
|
284 |
+
'type' => Controls_Manager::URL,
|
285 |
+
'condition' => [
|
286 |
+
'expire_text_url' => 'url'
|
287 |
+
],
|
288 |
+
'default' => [
|
289 |
+
'url' => get_permalink( 1 )
|
290 |
+
]
|
291 |
+
]
|
292 |
+
);
|
293 |
+
|
294 |
+
|
295 |
+
|
296 |
+
$this->end_controls_section();
|
297 |
+
|
298 |
+
$this->start_controls_section(
|
299 |
+
'pcdt_transaltion',
|
300 |
+
[
|
301 |
+
'label' => esc_html__( 'Transaltion Settings' , 'premium_elementor' )
|
302 |
+
]
|
303 |
+
);
|
304 |
+
|
305 |
+
$this->add_control(
|
306 |
+
'day_singular',
|
307 |
+
[
|
308 |
+
'label' => esc_html__( 'Day (Singular)', 'premium_elementor' ),
|
309 |
+
'type' => Controls_Manager::TEXT,
|
310 |
+
'default' => 'Day'
|
311 |
+
]
|
312 |
+
);
|
313 |
+
|
314 |
+
$this->add_control(
|
315 |
+
'day_plural',
|
316 |
+
[
|
317 |
+
'label' => esc_html__( 'Day (Plural)', 'premium_elementor' ),
|
318 |
+
'type' => Controls_Manager::TEXT,
|
319 |
+
'default' => 'Days'
|
320 |
+
]
|
321 |
+
);
|
322 |
+
|
323 |
+
$this->add_control(
|
324 |
+
'week_singular',
|
325 |
+
[
|
326 |
+
'label' => esc_html__( 'Week (Singular)', 'premium_elementor' ),
|
327 |
+
'type' => Controls_Manager::TEXT,
|
328 |
+
'default' => 'Week'
|
329 |
+
]
|
330 |
+
);
|
331 |
+
|
332 |
+
$this->add_control(
|
333 |
+
'week_plural',
|
334 |
+
[
|
335 |
+
'label' => esc_html__( 'Weeks (Plural)', 'premium_elementor' ),
|
336 |
+
'type' => Controls_Manager::TEXT,
|
337 |
+
'default' => 'Weeks'
|
338 |
+
]
|
339 |
+
);
|
340 |
+
|
341 |
+
|
342 |
+
$this->add_control(
|
343 |
+
'month_singular',
|
344 |
+
[
|
345 |
+
'label' => esc_html__( 'Month (Singular)', 'premium_elementor' ),
|
346 |
+
'type' => Controls_Manager::TEXT,
|
347 |
+
'default' => 'Month'
|
348 |
+
]
|
349 |
+
);
|
350 |
+
|
351 |
+
|
352 |
+
$this->add_control(
|
353 |
+
'month_plural',
|
354 |
+
[
|
355 |
+
'label' => esc_html__( 'Months (Plural)', 'premium_elementor' ),
|
356 |
+
'type' => Controls_Manager::TEXT,
|
357 |
+
'default' => 'Months'
|
358 |
+
]
|
359 |
+
);
|
360 |
+
|
361 |
+
|
362 |
+
$this->add_control(
|
363 |
+
'year_singular',
|
364 |
+
[
|
365 |
+
'label' => esc_html__( 'Year (Singular)', 'premium_elementor' ),
|
366 |
+
'type' => Controls_Manager::TEXT,
|
367 |
+
'default' => 'Year'
|
368 |
+
]
|
369 |
+
);
|
370 |
+
|
371 |
+
|
372 |
+
$this->add_control(
|
373 |
+
'year_plural',
|
374 |
+
[
|
375 |
+
'label' => esc_html__( 'Years (Plural)', 'premium_elementor' ),
|
376 |
+
'type' => Controls_Manager::TEXT,
|
377 |
+
'default' => 'Years'
|
378 |
+
]
|
379 |
+
);
|
380 |
+
|
381 |
+
|
382 |
+
$this->add_control(
|
383 |
+
'hour_singular',
|
384 |
+
[
|
385 |
+
'label' => esc_html__( 'Hour (Singular)', 'premium_elementor' ),
|
386 |
+
'type' => Controls_Manager::TEXT,
|
387 |
+
'default' => 'Hour'
|
388 |
+
]
|
389 |
+
);
|
390 |
+
|
391 |
+
|
392 |
+
$this->add_control(
|
393 |
+
'hour_plural',
|
394 |
+
[
|
395 |
+
'label' => esc_html__( 'Hours (Plural)', 'premium_elementor' ),
|
396 |
+
'type' => Controls_Manager::TEXT,
|
397 |
+
'default' => 'Hours'
|
398 |
+
]
|
399 |
+
);
|
400 |
+
|
401 |
+
|
402 |
+
$this->add_control(
|
403 |
+
'minute_singular',
|
404 |
+
[
|
405 |
+
'label' => esc_html__( 'Minute (Singular)', 'premium_elementor' ),
|
406 |
+
'type' => Controls_Manager::TEXT,
|
407 |
+
'default' => 'Minute'
|
408 |
+
]
|
409 |
+
);
|
410 |
+
|
411 |
+
$this->add_control(
|
412 |
+
'minute_plural',
|
413 |
+
[
|
414 |
+
'label' => esc_html__( 'Minutes (Plural)', 'premium_elementor' ),
|
415 |
+
'type' => Controls_Manager::TEXT,
|
416 |
+
'default' => 'Minutes'
|
417 |
+
]
|
418 |
+
);
|
419 |
+
|
420 |
+
$this->add_control(
|
421 |
+
'second_plural',
|
422 |
+
[
|
423 |
+
'label' => esc_html__( 'Seconds (Plural)', 'premium_elementor' ),
|
424 |
+
'type' => Controls_Manager::TEXT,
|
425 |
+
'default' => 'Seconds'
|
426 |
+
]
|
427 |
+
);
|
428 |
+
|
429 |
+
$this->add_control(
|
430 |
+
'second_singular',
|
431 |
+
[
|
432 |
+
'label' => esc_html__( 'Second (Singular)', 'premium_elementor' ),
|
433 |
+
'type' => Controls_Manager::TEXT,
|
434 |
+
'default' => 'Second',
|
435 |
+
'separator' => 'after'
|
436 |
+
]
|
437 |
+
);
|
438 |
+
|
439 |
+
$this->end_controls_section();
|
440 |
+
|
441 |
+
$this->start_controls_section(
|
442 |
+
'pcdt_typhography',
|
443 |
+
[
|
444 |
+
'label' => esc_html__( 'Typhography Settings' , 'premium_elementor' ),
|
445 |
+
'tab' => Controls_Manager::TAB_STYLE
|
446 |
+
]
|
447 |
+
);
|
448 |
+
|
449 |
+
$this->add_control(
|
450 |
+
'digit_color',
|
451 |
+
[
|
452 |
+
'label' => esc_html__( 'Timer Digit colors', 'premium_elementor' ),
|
453 |
+
'type' => Controls_Manager::COLOR,
|
454 |
+
'scheme' => [
|
455 |
+
'type' => Scheme_Color::get_type(),
|
456 |
+
'value' => Scheme_Color::COLOR_2,
|
457 |
+
],
|
458 |
+
'selectors' => [
|
459 |
+
'{{WRAPPER}} .countdown .pre_countdown-section .pre_countdown-amount' => 'color: {{VALUE}};'
|
460 |
+
]
|
461 |
+
]
|
462 |
+
);
|
463 |
+
|
464 |
+
$this->add_group_control(
|
465 |
+
Group_Control_Typography::get_type(),
|
466 |
+
[
|
467 |
+
'name' => 'digit_typho',
|
468 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
469 |
+
'selector' => '{{WRAPPER}} .countdown .pre_countdown-section .pre_countdown-amount',
|
470 |
+
'separator' => 'after'
|
471 |
+
]
|
472 |
+
);
|
473 |
+
|
474 |
+
$this->add_control(
|
475 |
+
'unit_color',
|
476 |
+
[
|
477 |
+
'label' => esc_html__( 'Timer Unit colors', 'premium_elementor' ),
|
478 |
+
'type' => Controls_Manager::COLOR,
|
479 |
+
'scheme' => [
|
480 |
+
'type' => Scheme_Color::get_type(),
|
481 |
+
'value' => Scheme_Color::COLOR_2,
|
482 |
+
],
|
483 |
+
'selectors' => [
|
484 |
+
'{{WRAPPER}} .countdown .pre_countdown-section .pre_countdown-period' => 'color: {{VALUE}};'
|
485 |
+
]
|
486 |
+
]
|
487 |
+
);
|
488 |
+
|
489 |
+
$this->add_group_control(
|
490 |
+
Group_Control_Typography::get_type(),
|
491 |
+
[
|
492 |
+
'name' => 'unit_typho',
|
493 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_3,
|
494 |
+
'selector' => '{{WRAPPER}} .countdown .pre_countdown-section .pre_countdown-period',
|
495 |
+
'separator' => 'after'
|
496 |
+
]
|
497 |
+
);
|
498 |
+
|
499 |
+
$this->end_controls_section();
|
500 |
+
}
|
501 |
+
|
502 |
+
protected function render( ) {
|
503 |
+
|
504 |
+
$settings = $this->get_settings();
|
505 |
+
|
506 |
+
$target_date = $settings['pcdt_date_time'];
|
507 |
+
$formats = $settings['pcdt_units'];
|
508 |
+
$format = implode('', $formats );
|
509 |
+
$time = str_replace('-', '/', current_time('mysql') );
|
510 |
+
$serverSync = '';
|
511 |
+
if( $settings['pcdt_s_u_time'] == 'wp-time' ) :
|
512 |
+
$serverSync = 'serverSync : function() { return new Date(\'' .$time .'\') }';
|
513 |
+
endif;
|
514 |
+
|
515 |
+
$redirect = !empty( $settings['expiry_redirection_'] ) ? $settings['expiry_redirection_']['url'] : '';
|
516 |
+
|
517 |
+
// Singular labels set up
|
518 |
+
$y = !empty( $settings['year_singular'] ) ? $settings['year_singular'] : 'Year';
|
519 |
+
$m = !empty( $settings['month_singular'] ) ? $settings['month_singular'] : 'Month';
|
520 |
+
$w = !empty( $settings['week_singular'] ) ? $settings['week_singular'] : 'Week';
|
521 |
+
$d = !empty( $settings['day_singular'] ) ? $settings['day_singular'] : 'Day';
|
522 |
+
$h = !empty( $settings['hour_singular'] ) ? $settings['hour_singular'] : 'Hour';
|
523 |
+
$mi = !empty( $settings['minute_singular'] ) ? $settings['minute_singular'] : 'Minute';
|
524 |
+
$s = !empty( $settings['second_singular'] ) ? $settings['second_singular'] : 'Second';
|
525 |
+
$label = $y."," . $m ."," . $w ."," . $d ."," . $h ."," . $mi ."," . $s;
|
526 |
+
|
527 |
+
// Plural labels set up
|
528 |
+
$ys = !empty( $settings['year_plural'] ) ? $settings['year_plural'] : 'Years';
|
529 |
+
$ms = !empty( $settings['month_plural'] ) ? $settings['month_plural'] : 'Months';
|
530 |
+
$ws = !empty( $settings['week_plural'] ) ? $settings['week_plural'] : 'Weeks';
|
531 |
+
$ds = !empty( $settings['day_plural'] ) ? $settings['day_plural'] : 'Days';
|
532 |
+
$hs = !empty( $settings['hour_plural'] ) ? $settings['hour_plural'] : 'Hours';
|
533 |
+
$mis = !empty( $settings['minute_plural'] ) ? $settings['minute_plural'] : 'Minutes';
|
534 |
+
$ss = !empty( $settings['second_plural'] ) ? $settings['second_plural'] : 'Seconds';
|
535 |
+
$labels1 = $ys."," . $ms ."," . $ws ."," . $ds ."," . $hs ."," . $mis ."," . $ss;
|
536 |
+
$expire_text = $settings['expiry_text_'];
|
537 |
+
|
538 |
+
$expire_text = str_replace( "\\", "\\\\", $expire_text );
|
539 |
+
$expire_text = str_replace( '"', '\"', $expire_text );
|
540 |
+
|
541 |
+
|
542 |
+
$pcdt_style = $settings['pcdt-style'] == 'd-u-s' ? ' side' : ' down';
|
543 |
+
$border_style = $settings['timer_border_style'] .' border';
|
544 |
+
$unid = $this->get_id();
|
545 |
+
?>
|
546 |
+
<div id="countDownContiner">
|
547 |
+
<div class="countdown<?php echo $pcdt_style; ?> <?php echo $border_style; ?>" id="countdown-<?php echo $unid?>"></div>
|
548 |
+
</div>
|
549 |
+
<script>
|
550 |
+
( function( $ ) {
|
551 |
+
$(document).ready( function() {
|
552 |
+
var label1 = '<?php echo $label; ?>',
|
553 |
+
label2 = '<?php echo $labels1; ?>',
|
554 |
+
newLabe1 = label1.split(','),
|
555 |
+
newLabe2 = label2.split(',');
|
556 |
+
|
557 |
+
$('#countdown-<?php echo $unid?>').pre_countdown({
|
558 |
+
labels : newLabe2,
|
559 |
+
labels1 : newLabe1,
|
560 |
+
until : new Date( '<?php echo $target_date; ?>'),
|
561 |
+
format : '<?php echo $format; ?>',
|
562 |
+
padZeroes : true,
|
563 |
+
<?php if( $settings['expire_text_url'] == 'text' ): ?>
|
564 |
+
onExpiry : function() {
|
565 |
+
$(this).html("<?php echo $expire_text; ?>");
|
566 |
+
},
|
567 |
+
<?php endif; ?>
|
568 |
+
<?php if( $settings['expire_text_url'] == 'url' ): ?>
|
569 |
+
expiryUrl : '<?php echo $redirect; ?>',
|
570 |
+
<?php endif; ?>
|
571 |
+
<?php echo $serverSync; ?>
|
572 |
+
});
|
573 |
+
times = $('#countdown-<?php echo $unid?>').pre_countdown('getTimes');
|
574 |
+
function runTimer( el ) {
|
575 |
+
return el == 0;
|
576 |
+
}
|
577 |
+
if( times.every( runTimer ) ) {
|
578 |
+
<?php if( $settings['expire_text_url'] == 'text' ): ?>
|
579 |
+
$('#countdown-<?php echo $unid?>').html("<?php echo $expire_text; ?>");
|
580 |
+
<?php endif; ?>
|
581 |
+
<?php if( $settings['expire_text_url'] == 'url' ): ?>
|
582 |
+
var editMode = $('body').find('#elementor').length;
|
583 |
+
if( editMode > 0 ) {
|
584 |
+
$('#countdown-<?php echo $unid?>').html( '<h1>You can not redirect url from elementor Editor!!</h1>' );
|
585 |
+
} else {
|
586 |
+
window.location.href = '<?php echo $redirect; ?>';
|
587 |
+
}
|
588 |
+
|
589 |
+
<?php endif; ?>
|
590 |
+
}
|
591 |
+
});
|
592 |
+
|
593 |
+
// On duplicate load everything on iframe load
|
594 |
+
$('.elementor-element-overlay .elementor-editor-element-duplicate').on('click', function() {
|
595 |
+
var $this = $(this);
|
596 |
+
parentId = $this.parents('section.elementor-element');
|
597 |
+
|
598 |
+
if( parentId.find('#countDownContiner').length ) {
|
599 |
+
document.location.href = document.location.href;
|
600 |
+
}
|
601 |
+
|
602 |
+
});
|
603 |
+
|
604 |
+
})( jQuery );
|
605 |
+
|
606 |
+
</script>
|
607 |
+
|
608 |
+
<?php
|
609 |
+
|
610 |
+
}
|
611 |
+
|
612 |
+
|
613 |
+
}
|
614 |
+
|
615 |
+
Plugin::instance()->widgets_manager->register_widget_type( new Premium_Counter_Down_Widget() );
|
widgets/premium-counter.php
ADDED
@@ -0,0 +1,639 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
if( !defined( 'ABSPATH' ) ) exit; // No access of directly access
|
4 |
+
|
5 |
+
|
6 |
+
class Premium_Counter_Widget extends Widget_Base {
|
7 |
+
|
8 |
+
public function get_name() {
|
9 |
+
return 'premium-counter';
|
10 |
+
}
|
11 |
+
|
12 |
+
public function get_title() {
|
13 |
+
return esc_html__( 'Premium Counter', 'premium_elementor' );
|
14 |
+
}
|
15 |
+
|
16 |
+
public function get_icon() {
|
17 |
+
return 'pa-pa-counter';
|
18 |
+
}
|
19 |
+
|
20 |
+
public function get_script_depends() {
|
21 |
+
return [ 'countup.js' ];
|
22 |
+
}
|
23 |
+
|
24 |
+
public function get_categories() {
|
25 |
+
return [ 'premium-elements' ];
|
26 |
+
}
|
27 |
+
|
28 |
+
// Adding the controls fields for the premium counter
|
29 |
+
// This will controls the animation, colors and background, dimensions etc
|
30 |
+
protected function _register_controls() {
|
31 |
+
$this->start_controls_section('pct-global-settings',
|
32 |
+
[
|
33 |
+
'label' => esc_html__( 'Premium Counter', 'premium_elementor' )
|
34 |
+
]
|
35 |
+
);
|
36 |
+
|
37 |
+
$this->add_control('pct_icon_image',
|
38 |
+
[
|
39 |
+
'label' => esc_html__( 'Icon or Image Upload', 'premium_elementor' ),
|
40 |
+
'type' => Controls_Manager::SELECT,
|
41 |
+
'options' => [
|
42 |
+
'icon' => esc_html__('Icon Select', 'premium_elementor'),
|
43 |
+
'custom' => esc_html__( 'Your Custom Image', 'premium_elementor')
|
44 |
+
],
|
45 |
+
'default' => 'icon'
|
46 |
+
]
|
47 |
+
);
|
48 |
+
|
49 |
+
$this->add_control('pct-icon',
|
50 |
+
[
|
51 |
+
'label' => esc_html__( 'Select Icon', 'premium_elementor' ),
|
52 |
+
'type' => Controls_Manager::ICON,
|
53 |
+
'default' => 'fa fa-clock-o',
|
54 |
+
'condition' => [
|
55 |
+
'pct_icon_image' => 'icon'
|
56 |
+
]
|
57 |
+
]
|
58 |
+
);
|
59 |
+
|
60 |
+
$this->add_control('pct_image_upload',
|
61 |
+
[
|
62 |
+
'label' => esc_html__( 'Upload Image', 'premium_elementor' ),
|
63 |
+
'type' => Controls_Manager::MEDIA,
|
64 |
+
'condition' => [
|
65 |
+
'pct_icon_image' => 'custom'
|
66 |
+
],
|
67 |
+
'default' => [
|
68 |
+
'url' => Utils::get_placeholder_image_src(),
|
69 |
+
]
|
70 |
+
]
|
71 |
+
);
|
72 |
+
|
73 |
+
$this->add_responsive_control('pct-icon-size',
|
74 |
+
[
|
75 |
+
'label' => esc_html__( 'Size of Icon', 'premium_elementor' ),
|
76 |
+
'type' => Controls_Manager::SLIDER,
|
77 |
+
'default' => [
|
78 |
+
'size' => 25,
|
79 |
+
],
|
80 |
+
'range' => [
|
81 |
+
'px' => [
|
82 |
+
'min' => 10,
|
83 |
+
'max' => 200,
|
84 |
+
]
|
85 |
+
],
|
86 |
+
'selectors' => [
|
87 |
+
'{{WRAPPER}} .counter-area .counter-icon .icon' => 'font-size: {{SIZE}}{{UNIT}};'
|
88 |
+
],
|
89 |
+
'condition' => [
|
90 |
+
'pct_icon_image' => 'icon'
|
91 |
+
]
|
92 |
+
]
|
93 |
+
);
|
94 |
+
|
95 |
+
$this->add_responsive_control('pct_image_size',
|
96 |
+
[
|
97 |
+
'label' => esc_html__( 'Size of Image', 'premium_elementor' ),
|
98 |
+
'type' => Controls_Manager::SLIDER,
|
99 |
+
'default' => [
|
100 |
+
'size' => 60,
|
101 |
+
],
|
102 |
+
'range' => [
|
103 |
+
'px' => [
|
104 |
+
'min' => 0,
|
105 |
+
'max' => 100,
|
106 |
+
]
|
107 |
+
],
|
108 |
+
'selectors' => [
|
109 |
+
'{{WRAPPER}} .counter-area .counter-icon img.custom-image' => 'width: {{SIZE}}%;'
|
110 |
+
],
|
111 |
+
'condition' => [
|
112 |
+
'pct_icon_image' => 'custom'
|
113 |
+
]
|
114 |
+
]
|
115 |
+
);
|
116 |
+
|
117 |
+
$this->add_control('pct-icon-color',
|
118 |
+
[
|
119 |
+
'label' => esc_html__( 'Icon Color', 'premium_elementor' ),
|
120 |
+
'type' => Controls_Manager::COLOR,
|
121 |
+
'scheme' => [
|
122 |
+
'type' => Scheme_Color::get_type(),
|
123 |
+
'value' => Scheme_Color::COLOR_1,
|
124 |
+
],
|
125 |
+
'selectors' => [
|
126 |
+
'{{WRAPPER}} .counter-area .counter-icon .icon' => 'color: {{VALUE}};'
|
127 |
+
],
|
128 |
+
'condition' => [
|
129 |
+
'pct_icon_image' => 'icon'
|
130 |
+
]
|
131 |
+
]
|
132 |
+
);
|
133 |
+
|
134 |
+
$this->add_control('pct_icon_style',
|
135 |
+
[
|
136 |
+
'label' => esc_html__( 'Icon Style', 'premium_elementor' ),
|
137 |
+
'type' => Controls_Manager::SELECT,
|
138 |
+
'options' => [
|
139 |
+
'simple' => esc_html__( 'Simple', 'premium_elementor' ),
|
140 |
+
'circle' => esc_html__( 'Circle Background', 'premium_elementor' ),
|
141 |
+
'square' => esc_html__( 'Square Background', 'premium_elementor' ),
|
142 |
+
'design' => esc_html__( 'Your Design', 'premium_elementor' )
|
143 |
+
],
|
144 |
+
'default' => 'simple'
|
145 |
+
]
|
146 |
+
);
|
147 |
+
|
148 |
+
$this->add_control('pct_icon_bg',
|
149 |
+
[
|
150 |
+
'label' => esc_html__( 'Background Color', 'premium_elementor' ),
|
151 |
+
'type' => Controls_Manager::COLOR,
|
152 |
+
'scheme' => [
|
153 |
+
'type' => Scheme_Color::get_type(),
|
154 |
+
'value' => Scheme_Color::COLOR_1,
|
155 |
+
],
|
156 |
+
'condition' => [
|
157 |
+
'pct_icon_style!' => 'simple'
|
158 |
+
],
|
159 |
+
'selectors' => [
|
160 |
+
'{{WRAPPER}} .counter-area .counter-icon .icon-bg' => 'background: {{VALUE}};'
|
161 |
+
]
|
162 |
+
]
|
163 |
+
);
|
164 |
+
|
165 |
+
$this->add_responsive_control('pct_icon_bg_size',
|
166 |
+
[
|
167 |
+
'label' => esc_html__( 'Background size', 'premium_elementor' ),
|
168 |
+
'type' => Controls_Manager::SLIDER,
|
169 |
+
'default' => [
|
170 |
+
'size' => 150,
|
171 |
+
],
|
172 |
+
'range' => [
|
173 |
+
'px' => [
|
174 |
+
'min' => 1,
|
175 |
+
'max' => 600,
|
176 |
+
]
|
177 |
+
],
|
178 |
+
'condition' => [
|
179 |
+
'pct_icon_style!' => 'simple'
|
180 |
+
],
|
181 |
+
'selectors' => [
|
182 |
+
'{{WRAPPER}} .counter-area .counter-icon span.icon' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};'
|
183 |
+
]
|
184 |
+
]
|
185 |
+
);
|
186 |
+
|
187 |
+
$this->add_responsive_control('pct_icon_v_align',
|
188 |
+
[
|
189 |
+
'label' => esc_html__( 'Icon vertical Align', 'premium_elementor' ),
|
190 |
+
'type' => Controls_Manager::SLIDER,
|
191 |
+
'default' => [
|
192 |
+
'size' => 150,
|
193 |
+
],
|
194 |
+
'range' => [
|
195 |
+
'px' => [
|
196 |
+
'min' => 1,
|
197 |
+
'max' => 600,
|
198 |
+
]
|
199 |
+
],
|
200 |
+
'condition' => [
|
201 |
+
'pct_icon_style!' => 'simple'
|
202 |
+
],
|
203 |
+
'selectors' => [
|
204 |
+
'{{WRAPPER}} .counter-area .counter-icon span.icon' => 'line-height: {{SIZE}}{{UNIT}};'
|
205 |
+
]
|
206 |
+
]
|
207 |
+
);
|
208 |
+
|
209 |
+
$this->add_control('icon_border_style',
|
210 |
+
[
|
211 |
+
'label' => esc_html__( 'Icon Border Style', 'premium_elementor' ),
|
212 |
+
'type' => Controls_Manager::SELECT,
|
213 |
+
'options' => [
|
214 |
+
'none' => esc_html__('None', 'premium_elementor' ),
|
215 |
+
'solid' => esc_html__('Solid', 'premium_elementor' ),
|
216 |
+
'dashed' => esc_html__('Dashed', 'premium_elementor' ),
|
217 |
+
'dotted' => esc_html__('Dotted', 'premium_elementor' ),
|
218 |
+
'double' => esc_html__('Double', 'premium_elementor' ),
|
219 |
+
'inset' => esc_html__('Inset', 'premium_elementor' ),
|
220 |
+
'outset' => esc_html__('Outset', 'premium_elementor' ),
|
221 |
+
],
|
222 |
+
'default' => 'none',
|
223 |
+
'condition' => [
|
224 |
+
'pct_icon_style' => 'design'
|
225 |
+
]
|
226 |
+
]
|
227 |
+
);
|
228 |
+
|
229 |
+
$this->add_control('pct_icon_border_color',
|
230 |
+
[
|
231 |
+
'label' => esc_html__( 'Border Color', 'premium_elementor' ),
|
232 |
+
'type' => Controls_Manager::COLOR,
|
233 |
+
'scheme' => [
|
234 |
+
'type' => Scheme_Color::get_type(),
|
235 |
+
'value' => Scheme_Color::COLOR_1,
|
236 |
+
],
|
237 |
+
'condition' => [
|
238 |
+
'icon_border_style!' => 'none',
|
239 |
+
'pct_icon_style' => 'design'
|
240 |
+
],
|
241 |
+
'selectors' => [
|
242 |
+
'{{WRAPPER}} .counter-area .counter-icon .design' => 'border-color: {{VALUE}};'
|
243 |
+
]
|
244 |
+
]
|
245 |
+
);
|
246 |
+
|
247 |
+
$this->add_responsive_control('pct_icon_border_width',
|
248 |
+
[
|
249 |
+
'label' => esc_html__( 'Border Width', 'premium_elementor' ),
|
250 |
+
'type' => Controls_Manager::SLIDER,
|
251 |
+
'default' => [
|
252 |
+
'size' => 1,
|
253 |
+
],
|
254 |
+
'range' => [
|
255 |
+
'px' => [
|
256 |
+
'min' => 0,
|
257 |
+
'max' => 20,
|
258 |
+
]
|
259 |
+
],
|
260 |
+
'condition' => [
|
261 |
+
'icon_border_style!' => 'none',
|
262 |
+
'pct_icon_style' => 'design'
|
263 |
+
],
|
264 |
+
'selectors' => [
|
265 |
+
'{{WRAPPER}} .counter-area .counter-icon .design' => 'border-width: {{SIZE}}{{UNIT}};'
|
266 |
+
]
|
267 |
+
]
|
268 |
+
);
|
269 |
+
|
270 |
+
$this->add_responsive_control('pct_icon_border_radius',
|
271 |
+
[
|
272 |
+
'label' => esc_html__( 'Border Radius', 'premium_elementor' ),
|
273 |
+
'type' => Controls_Manager::SLIDER,
|
274 |
+
'default' => [
|
275 |
+
'size' => 300,
|
276 |
+
],
|
277 |
+
'range' => [
|
278 |
+
'px' => [
|
279 |
+
'min' => 0,
|
280 |
+
'max' => 1000,
|
281 |
+
]
|
282 |
+
],
|
283 |
+
'condition' => [
|
284 |
+
'icon_border_style!' => 'none',
|
285 |
+
'pct_icon_style' => 'design'
|
286 |
+
],
|
287 |
+
'selectors' => [
|
288 |
+
'{{WRAPPER}} .counter-area .counter-icon .design' => 'border-radius: {{SIZE}}{{UNIT}};'
|
289 |
+
]
|
290 |
+
]
|
291 |
+
);
|
292 |
+
|
293 |
+
$this->add_control('pct_icon_animation',
|
294 |
+
[
|
295 |
+
'label' => esc_html__( 'Animations', 'premium_elementor' ),
|
296 |
+
'type' => Controls_Manager::SELECT,
|
297 |
+
'default' => 'no-animation',
|
298 |
+
'options' => [
|
299 |
+
'no-animation' => esc_html__( 'Default', 'premium_elementor' ),
|
300 |
+
'swing' => esc_html__( 'Swing', 'premium_elementor' ),
|
301 |
+
'pulse' => esc_html__( 'Pulse', 'premium_elementor' ),
|
302 |
+
'fadeIn' => esc_html__( 'Fade In', 'premium_elementor' ),
|
303 |
+
'fadeInUp' => esc_html__( 'Fade In Up', 'premium_elementor' ),
|
304 |
+
'fadeInDown' => esc_html__( 'Fade In Down', 'premium_elementor' ),
|
305 |
+
'fadeInLeft' => esc_html__( 'Fade In Left', 'premium_elementor' ),
|
306 |
+
'fadeInRight' => esc_html__( 'Fade In Right', 'premium_elementor' ),
|
307 |
+
'fadeInUpBig' => esc_html__( 'Fade In Up Long', 'premium_elementor' ),
|
308 |
+
'fadeInDownBig' => esc_html__( 'Fade In Down Long', 'premium_elementor' ),
|
309 |
+
'fadeInLeftBig' => esc_html__( 'Fade In Left Long', 'premium_elementor' ),
|
310 |
+
'fadeInRightBig' => esc_html__( 'Fade In Right Long', 'premium_elementor' ),
|
311 |
+
'slideInUp' => esc_html__( 'Slide In Up', 'premium_elementor' ),
|
312 |
+
'slideInDown' => esc_html__( 'Slide In Down', 'premium_elementor' ),
|
313 |
+
'slideInLeft' => esc_html__( 'Slide In Left', 'premium_elementor' ),
|
314 |
+
'slideInRight' => esc_html__( 'Slide In Right', 'premium_elementor' ),
|
315 |
+
'bounceIn' => esc_html__( 'Bounce In', 'premium_elementor' ),
|
316 |
+
'bounceInUp' => esc_html__( 'Bounce In Up', 'premium_elementor' ),
|
317 |
+
'bounceInDown' => esc_html__( 'Bounce In Down', 'premium_elementor' ),
|
318 |
+
'bounceInLeft' => esc_html__( 'Bounce In Left', 'premium_elementor' ),
|
319 |
+
'bounceInRight' => esc_html__( 'Bounce In Right', 'premium_elementor' ),
|
320 |
+
'rotateIn' => esc_html__( 'Rotate In', 'premium_elementor' ),
|
321 |
+
'lightSpeedIn' => esc_html__( 'Light Speed In', 'premium_elementor' ),
|
322 |
+
'rollIn' => esc_html__( 'Roll In', 'premium_elementor' ),
|
323 |
+
]
|
324 |
+
]
|
325 |
+
);
|
326 |
+
|
327 |
+
$this->add_control('pct_icon_position',
|
328 |
+
[
|
329 |
+
'label' => esc_html__( 'Icon Position', 'premium_elementor' ),
|
330 |
+
'type' => Controls_Manager::SELECT,
|
331 |
+
'default' => 'no-animation',
|
332 |
+
'options' => [
|
333 |
+
'top' => esc_html__( 'Top', 'premium_elementor' ),
|
334 |
+
'right' => esc_html__( 'Right', 'premium_elementor' ),
|
335 |
+
'left' => esc_html__( 'Left', 'premium_elementor' ),
|
336 |
+
|
337 |
+
],
|
338 |
+
'default' => 'top',
|
339 |
+
'separator' => 'after'
|
340 |
+
]
|
341 |
+
);
|
342 |
+
|
343 |
+
|
344 |
+
$this->end_controls_section();
|
345 |
+
|
346 |
+
$this->start_controls_section('pct_counter_setting',
|
347 |
+
[
|
348 |
+
'label' => esc_html__( 'Counter Settings' , 'premium_elementor' )
|
349 |
+
]
|
350 |
+
);
|
351 |
+
|
352 |
+
$this->add_control('pct_title',
|
353 |
+
[
|
354 |
+
'label' => esc_html__( 'Counter Title', 'premium_elementor' ),
|
355 |
+
'type' => Controls_Manager::TEXT,
|
356 |
+
'description' => esc_html__( 'Enter title for stats counter block', 'premium_elementor' )
|
357 |
+
]
|
358 |
+
);
|
359 |
+
|
360 |
+
$this->add_control('pct_value',
|
361 |
+
[
|
362 |
+
'label' => esc_html__( 'Counter Value', 'premium_elementor' ),
|
363 |
+
'type' => Controls_Manager::NUMBER,
|
364 |
+
'description' => esc_html__( 'Enter Cunter Value', 'premium_elementor' ),
|
365 |
+
'default' => 500
|
366 |
+
]
|
367 |
+
);
|
368 |
+
|
369 |
+
$this->add_control('pct_t_separator',
|
370 |
+
[
|
371 |
+
'label' => esc_html__( 'Thousands Separator', 'premium_elementor' ),
|
372 |
+
'type' => Controls_Manager::TEXT,
|
373 |
+
'description' => esc_html__( 'Separate coverts 125000 into 125,000', 'premium_elementor' ),
|
374 |
+
'default' => ','
|
375 |
+
]
|
376 |
+
);
|
377 |
+
|
378 |
+
$this->add_control('pct_d_separator',
|
379 |
+
[
|
380 |
+
'label' => esc_html__( 'Replace Decimal Point With', 'premium_elementor' ),
|
381 |
+
'type' => Controls_Manager::TEXT,
|
382 |
+
'description' => esc_html__( 'Eg - 12.76, . will be replaced with value that you will enter above.', 'premium_elementor' ),
|
383 |
+
'default' => '.'
|
384 |
+
]
|
385 |
+
);
|
386 |
+
|
387 |
+
$this->add_control('pct_d_after',
|
388 |
+
[
|
389 |
+
'label' => esc_html__( 'Digits after decimal point', 'premium_elementor' ),
|
390 |
+
'type' => Controls_Manager::NUMBER,
|
391 |
+
'default' => 0
|
392 |
+
]
|
393 |
+
);
|
394 |
+
|
395 |
+
$this->add_control('pct_preffix',
|
396 |
+
[
|
397 |
+
'label' => esc_html__( 'Counter Value Prefix', 'premium_elementor' ),
|
398 |
+
'type' => Controls_Manager::TEXT,
|
399 |
+
'description' => esc_html__( 'Enter prefix for counter value', 'premium_elementor' )
|
400 |
+
]
|
401 |
+
);
|
402 |
+
|
403 |
+
$this->add_control('pct_suffix',
|
404 |
+
[
|
405 |
+
'label' => esc_html__( 'Counter Value suffix', 'premium_elementor' ),
|
406 |
+
'type' => Controls_Manager::TEXT,
|
407 |
+
'description' => esc_html__( 'Enter suffix for counter value', 'premium_elementor' )
|
408 |
+
]
|
409 |
+
);
|
410 |
+
|
411 |
+
$this->add_control('pct_speed',
|
412 |
+
[
|
413 |
+
'label' => esc_html__( 'Counter rolling time', 'premium_elementor' ),
|
414 |
+
'type' => Controls_Manager::NUMBER,
|
415 |
+
'description' => esc_html__( 'How many seconds the counter should roll IN SECONDS?', 'premium_elementor' ),
|
416 |
+
'default' => 3
|
417 |
+
]
|
418 |
+
);
|
419 |
+
|
420 |
+
$this->end_controls_section();
|
421 |
+
|
422 |
+
$this->start_controls_section('pct_typhography',
|
423 |
+
[
|
424 |
+
'label' => esc_html__( 'Typhography Settings' , 'premium_elementor' ),
|
425 |
+
'tab' => Controls_Manager::TAB_STYLE
|
426 |
+
]
|
427 |
+
);
|
428 |
+
|
429 |
+
$this->add_control('pct_title_color',
|
430 |
+
[
|
431 |
+
'label' => esc_html__( 'Title Color', 'premium_elementor' ),
|
432 |
+
'type' => Controls_Manager::COLOR,
|
433 |
+
'scheme' => [
|
434 |
+
'type' => Scheme_Color::get_type(),
|
435 |
+
'value' => Scheme_Color::COLOR_1,
|
436 |
+
],
|
437 |
+
'selectors' => [
|
438 |
+
'{{WRAPPER}} .counter-area .counter-title' => 'color: {{VALUE}};'
|
439 |
+
]
|
440 |
+
]
|
441 |
+
);
|
442 |
+
|
443 |
+
$this->add_group_control(
|
444 |
+
Group_Control_Typography::get_type(),
|
445 |
+
[
|
446 |
+
'name' => 'pct_title_typho',
|
447 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
448 |
+
'selector' => '{{WRAPPER}} .counter-area .counter-title',
|
449 |
+
'separator' => 'after'
|
450 |
+
]
|
451 |
+
);
|
452 |
+
|
453 |
+
$this->add_control('pct_value_color',
|
454 |
+
[
|
455 |
+
'label' => esc_html__( 'Value Color', 'premium_elementor' ),
|
456 |
+
'type' => Controls_Manager::COLOR,
|
457 |
+
'scheme' => [
|
458 |
+
'type' => Scheme_Color::get_type(),
|
459 |
+
'value' => Scheme_Color::COLOR_1,
|
460 |
+
],
|
461 |
+
'selectors' => [
|
462 |
+
'{{WRAPPER}} .counter-area .counter-init' => 'color: {{VALUE}};'
|
463 |
+
]
|
464 |
+
]
|
465 |
+
);
|
466 |
+
|
467 |
+
$this->add_group_control(
|
468 |
+
Group_Control_Typography::get_type(),
|
469 |
+
[
|
470 |
+
'name' => 'pct_value_typho',
|
471 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
472 |
+
'selector' => '{{WRAPPER}} .counter-area .counter-init',
|
473 |
+
'separator' => 'after'
|
474 |
+
]
|
475 |
+
);
|
476 |
+
|
477 |
+
$this->add_control('pct_suffix_prefix',
|
478 |
+
[
|
479 |
+
'label' => esc_html__( 'Suffix-prefix Color', 'premium_elementor' ),
|
480 |
+
'type' => Controls_Manager::COLOR,
|
481 |
+
'scheme' => [
|
482 |
+
'type' => Scheme_Color::get_type(),
|
483 |
+
'value' => Scheme_Color::COLOR_1,
|
484 |
+
],
|
485 |
+
'selectors' => [
|
486 |
+
'{{WRAPPER}} .counter-area span#suffix-prefix' => 'color: {{VALUE}}'
|
487 |
+
]
|
488 |
+
]
|
489 |
+
);
|
490 |
+
|
491 |
+
$this->add_group_control(
|
492 |
+
Group_Control_Typography::get_type(),
|
493 |
+
[
|
494 |
+
'name' => 'pct_su_pre_typho',
|
495 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
496 |
+
'selector' => '{{WRAPPER}} .counter-area span#suffix-prefix'
|
497 |
+
]
|
498 |
+
);
|
499 |
+
|
500 |
+
$this->end_controls_section();
|
501 |
+
|
502 |
+
}
|
503 |
+
|
504 |
+
protected function render() {
|
505 |
+
$settings = $this->get_settings();
|
506 |
+
|
507 |
+
$options = ''; // The counter settings store
|
508 |
+
$options .= 'useEasing : true,';
|
509 |
+
|
510 |
+
if( $sep = $settings['pct_t_separator'] ) {
|
511 |
+
$options .= 'separator : \''. $sep .'\',';
|
512 |
+
}
|
513 |
+
if( $dec = $settings['pct_d_separator'] ) {
|
514 |
+
$options .= 'decimal : \''. $dec .'\',';
|
515 |
+
}
|
516 |
+
|
517 |
+
$prefix = !empty( $settings['pct_preffix'] ) ? '<span id="suffix-prefix" class="counter-su-pre"> '. $settings['pct_preffix'] .'</span>' : '';
|
518 |
+
$suffix = !empty( $settings['pct_suffix'] ) ? '<span id="suffix-prefix" class="counter-su-pre">'. $settings['pct_suffix'] .' </span>' : '';
|
519 |
+
$title = !empty( $settings['pct_title'] ) ? '<h2 class="counter-title">'. $settings['pct_title'] .'</h2>' : '';
|
520 |
+
|
521 |
+
if( $settings['pct_icon_image'] == 'icon' ) {
|
522 |
+
$icon_image = '<i class="' . $settings['pct-icon'] .'"></i>';
|
523 |
+
} else {
|
524 |
+
$icon_image = '<img class="custom-image" src="'.$settings['pct_image_upload']['url'] . '" alt="">';
|
525 |
+
}
|
526 |
+
|
527 |
+
$icon_style = $settings['pct_icon_style'] != 'simple' ? ' icon-bg ' . $settings['pct_icon_style'] : '';
|
528 |
+
$border = $settings['icon_border_style'];
|
529 |
+
$animation = $settings['pct_icon_animation'];
|
530 |
+
|
531 |
+
$position = $settings['pct_icon_position'];
|
532 |
+
$center = $position == 'top' ? ' center' : '';
|
533 |
+
$left = $position == 'left' ? ' left' : '';
|
534 |
+
|
535 |
+
$counter_value = !empty( $settings['pct_value'] ) ? $settings['pct_value'] : 500;
|
536 |
+
$speed = !empty( $settings['pct_speed'] ) ? $settings['pct_speed'] : 3;
|
537 |
+
$d_after = !empty( $settings['pct_d_after'] ) ? intval( $settings['pct_d_after'] ) : 0;
|
538 |
+
$rand = rand( 100, 1000 );
|
539 |
+
$d_s = !empty( $settings['pct_d_separator'] ) ? $settings['pct_d_separator'] : '.';
|
540 |
+
$t_s = !empty( $settings['pct_t_separator'] ) ? $settings['pct_t_separator'] : ',';
|
541 |
+
$exact_value = number_format( $counter_value, $d_after, $d_s, $t_s );
|
542 |
+
$flex_width = '';
|
543 |
+
if( $settings['pct_icon_image'] == 'custom' && $settings['pct_icon_style'] == 'simple' ) {
|
544 |
+
$flex_width = ' flex-width ';
|
545 |
+
}
|
546 |
+
?>
|
547 |
+
|
548 |
+
<div class="counter-area<?php echo $center; ?>" id="counter-wrapper-<?php echo uniqid(); ?>">
|
549 |
+
<?php if( $position == 'right' ) : ?>
|
550 |
+
<div class="init-wrapper <?php echo $position; ?>">
|
551 |
+
<?php echo $prefix; ?>
|
552 |
+
<span class="counter-init" id="counter-<?php echo $rand; ?>"><?php echo $exact_value; ?></span>
|
553 |
+
<?php echo $suffix; ?>
|
554 |
+
<?php echo $title; ?>
|
555 |
+
</div>
|
556 |
+
|
557 |
+
<?php if( !empty( $settings['pct-icon'] ) || !empty( $settings['pct_image_upload'] ) ) : ?>
|
558 |
+
<div class="counter-icon <?php echo $position; ?>">
|
559 |
+
<span data-animation="<?php echo $animation; ?>" class="icon<?php echo $flex_width; ?><?php echo $icon_style; ?><?php echo ' ' . $border; ?>"><?php echo $icon_image; ?></span>
|
560 |
+
</div>
|
561 |
+
<?php endif; ?>
|
562 |
+
|
563 |
+
<?php else: ?>
|
564 |
+
|
565 |
+
<?php if( !empty( $settings['pct-icon'] ) || !empty( $settings['pct_image_upload'] ) ) : ?>
|
566 |
+
<div class="counter-icon<?php echo $left; ?>">
|
567 |
+
<span data-animation="<?php echo $animation; ?>" class="icon<?php echo $flex_width; ?><?php echo $icon_style; ?><?php echo ' ' . $border; ?>"><?php echo $icon_image; ?></span>
|
568 |
+
</div>
|
569 |
+
<?php endif; ?>
|
570 |
+
|
571 |
+
<div class="init-wrapper<?php echo $left; ?>">
|
572 |
+
<?php echo $prefix; ?>
|
573 |
+
<span class="counter-init" id="counter-<?php echo $rand; ?>"><?php echo $exact_value; ?></span>
|
574 |
+
<?php echo $suffix; ?>
|
575 |
+
<?php echo $title; ?>
|
576 |
+
</div>
|
577 |
+
|
578 |
+
<?php endif; ?>
|
579 |
+
|
580 |
+
</div>
|
581 |
+
<script type="text/javascript">
|
582 |
+
( function( $ ) {
|
583 |
+
$(document).ready( function() {
|
584 |
+
|
585 |
+
var counter = new CountUp(
|
586 |
+
'counter-<?php echo $rand ; ?>', 0,
|
587 |
+
<?php echo $counter_value; ?>,
|
588 |
+
<?php echo $d_after; ?>,
|
589 |
+
<?php echo $speed ; ?>,
|
590 |
+
{ <?php echo $options ?> }
|
591 |
+
);
|
592 |
+
|
593 |
+
if (!counter.error) {
|
594 |
+
counter.start();
|
595 |
+
} else {
|
596 |
+
console.error(counter.error);
|
597 |
+
}
|
598 |
+
|
599 |
+
function isScrolledIntoView(elem) {
|
600 |
+
var docViewTop = $(window).scrollTop();
|
601 |
+
var docViewBottom = docViewTop + $(window).height();
|
602 |
+
|
603 |
+
var elemTop = elem.offset().top;
|
604 |
+
var elemBottom = elemTop + elem.height();
|
605 |
+
|
606 |
+
return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
|
607 |
+
}
|
608 |
+
|
609 |
+
function addAnimation() {
|
610 |
+
$('.counter-init').each( function() {
|
611 |
+
var $this = $(this),
|
612 |
+
parentId = $this.parents('.counter-area').attr('id'),
|
613 |
+
iconClass = $('#' + parentId ).find('.icon'),
|
614 |
+
animation = iconClass.data('animation');
|
615 |
+
|
616 |
+
if( iconClass.length ) {
|
617 |
+
if( isScrolledIntoView( iconClass ) ) {
|
618 |
+
if( ! iconClass.hasClass('animated') ) {
|
619 |
+
$('#' + parentId ).find('.icon').addClass('animated ' + animation );
|
620 |
+
}
|
621 |
+
}
|
622 |
+
}
|
623 |
+
|
624 |
+
});
|
625 |
+
}
|
626 |
+
addAnimation();
|
627 |
+
$(window).on('scroll', function() {
|
628 |
+
addAnimation();
|
629 |
+
});
|
630 |
+
|
631 |
+
});
|
632 |
+
})( jQuery );
|
633 |
+
</script>
|
634 |
+
<?php
|
635 |
+
}
|
636 |
+
|
637 |
+
}
|
638 |
+
|
639 |
+
Plugin::instance()->widgets_manager->register_widget_type( new Premium_Counter_Widget() );
|
widgets/premium-dual-header.php
ADDED
@@ -0,0 +1,392 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
|
5 |
+
|
6 |
+
class Premium_Dual_Header_Widget extends Widget_Base
|
7 |
+
{
|
8 |
+
protected $templateInstance;
|
9 |
+
|
10 |
+
public function getTemplateInstance() {
|
11 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_name() {
|
15 |
+
return 'premium-addon-dual-header';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
return esc_html__('Premium Dual Header', 'premium_elementor');
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_icon() {
|
23 |
+
return 'pa-pa-header';
|
24 |
+
}
|
25 |
+
|
26 |
+
public function get_categories() {
|
27 |
+
return [ 'premium-elements' ];
|
28 |
+
}
|
29 |
+
|
30 |
+
// Adding the controls fields for the premium dual header
|
31 |
+
// This will controls the animation, colors and background, dimensions etc
|
32 |
+
protected function _register_controls() {
|
33 |
+
|
34 |
+
/*Start General Section*/
|
35 |
+
$this->start_controls_section('premium_dual_header_general_settings',
|
36 |
+
[
|
37 |
+
'label' => esc_html__('General Settings', 'premium_elementor')
|
38 |
+
]
|
39 |
+
);
|
40 |
+
|
41 |
+
/*First Header*/
|
42 |
+
$this->add_control('premium_dual_header_first_header_text',
|
43 |
+
[
|
44 |
+
'label' => esc_html__('First Header', 'premium_elementor'),
|
45 |
+
'type' => Controls_Manager::TEXT,
|
46 |
+
'default' => esc_html__('Premium', 'premium_elementor'),
|
47 |
+
'label_block' => true,
|
48 |
+
]
|
49 |
+
);
|
50 |
+
|
51 |
+
/*Title Tag*/
|
52 |
+
$this->add_control('premium_dual_header_first_header_tag',
|
53 |
+
[
|
54 |
+
'label' => esc_html__('First Header Tag', 'premium_elementor'),
|
55 |
+
'type' => Controls_Manager::SELECT,
|
56 |
+
'default' => 'h2',
|
57 |
+
'options' => [
|
58 |
+
'h1' => esc_html__('H1'),
|
59 |
+
'h2' => esc_html__('H2'),
|
60 |
+
'h3' => esc_html__('H3'),
|
61 |
+
'h4' => esc_html__('H4'),
|
62 |
+
'h5' => esc_html__('H5'),
|
63 |
+
'h6' => esc_html__('H6')
|
64 |
+
],
|
65 |
+
'label_block' => true,
|
66 |
+
]
|
67 |
+
);
|
68 |
+
|
69 |
+
|
70 |
+
/*Second Header*/
|
71 |
+
$this->add_control('premium_dual_header_second_header_text',
|
72 |
+
[
|
73 |
+
'label' => esc_html__('Second Header', 'premium_elementor'),
|
74 |
+
'type' => Controls_Manager::TEXT,
|
75 |
+
'default' => esc_html__('Addons', 'premium_elementor'),
|
76 |
+
'label_block' => true,
|
77 |
+
]
|
78 |
+
);
|
79 |
+
|
80 |
+
/*Title Tag*/
|
81 |
+
$this->add_control('premium_dual_header_second_header_tag',
|
82 |
+
[
|
83 |
+
'label' => esc_html__('Second Header Tag', 'premium_elementor'),
|
84 |
+
'type' => Controls_Manager::SELECT,
|
85 |
+
'default' => 'h2',
|
86 |
+
'options' => [
|
87 |
+
'h1' => esc_html__('H1'),
|
88 |
+
'h2' => esc_html__('H2'),
|
89 |
+
'h3' => esc_html__('H3'),
|
90 |
+
'h4' => esc_html__('H4'),
|
91 |
+
'h5' => esc_html__('H5'),
|
92 |
+
'h6' => esc_html__('H6')
|
93 |
+
],
|
94 |
+
'label_block' => true,
|
95 |
+
]
|
96 |
+
);
|
97 |
+
|
98 |
+
/*Text Align*/
|
99 |
+
$this->add_responsive_control('premium_dual_header_text_align',
|
100 |
+
[
|
101 |
+
'label' => esc_html__( 'Text Align', 'elementor' ),
|
102 |
+
'type' => Controls_Manager::CHOOSE,
|
103 |
+
'options' => [
|
104 |
+
'left' => [
|
105 |
+
'title'=> esc_html__( 'Left', 'elementor' ),
|
106 |
+
'icon' => 'fa fa-align-left',
|
107 |
+
],
|
108 |
+
'center' => [
|
109 |
+
'title'=> esc_html__( 'Center', 'elementor' ),
|
110 |
+
'icon' => 'fa fa-align-center',
|
111 |
+
],
|
112 |
+
'right' => [
|
113 |
+
'title'=> esc_html__( 'Right', 'elementor' ),
|
114 |
+
'icon' => 'fa fa-align-right',
|
115 |
+
],
|
116 |
+
],
|
117 |
+
'default' => 'center',
|
118 |
+
'selectors' => [
|
119 |
+
'{{WRAPPER}} .premium-dual-header-container' => 'text-align: {{VALUE}};',
|
120 |
+
],
|
121 |
+
]
|
122 |
+
);
|
123 |
+
|
124 |
+
/*End General Settings Section*/
|
125 |
+
$this->end_controls_section();
|
126 |
+
|
127 |
+
/*Start First Header Styling Section*/
|
128 |
+
$this->start_controls_section('premium_dual_header_first_style',
|
129 |
+
[
|
130 |
+
'label' => esc_html__('First Header', 'premium_elementor'),
|
131 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
132 |
+
]
|
133 |
+
);
|
134 |
+
|
135 |
+
/*First Typography*/
|
136 |
+
$this->add_group_control(
|
137 |
+
Group_Control_Typography::get_type(),
|
138 |
+
[
|
139 |
+
'name' => 'first_header_typography',
|
140 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
141 |
+
'selector' => '{{WRAPPER}} .premium-dual-header-first-header',
|
142 |
+
]
|
143 |
+
);
|
144 |
+
|
145 |
+
/*First Coloring Style*/
|
146 |
+
$this->add_control('premium_dual_header_first_back_clip',
|
147 |
+
[
|
148 |
+
'label' => esc_html__('Select Header Coloring Style', 'premium_elementor'),
|
149 |
+
'type' => Controls_Manager::SELECT,
|
150 |
+
'default' => 'color',
|
151 |
+
'description' => esc_html__('Choose ‘Background’ style to put a background behind the text. Choose ‘Clipped’ style so the background will be clipped on the text.','premium_elementor'),
|
152 |
+
'options' => [
|
153 |
+
'color' => esc_html__('Background', 'premium_elementor'),
|
154 |
+
'clipped' => esc_html__('Clipped', 'premium_elementor'),
|
155 |
+
],
|
156 |
+
'label_block' => true,
|
157 |
+
]
|
158 |
+
);
|
159 |
+
|
160 |
+
/*First Color*/
|
161 |
+
$this->add_control('premium_dual_header_first_color',
|
162 |
+
[
|
163 |
+
'label' => esc_html__('Text Color', 'premium_elementor'),
|
164 |
+
'type' => Controls_Manager::COLOR,
|
165 |
+
'default' => '#7a7a7a',
|
166 |
+
'condition' => [
|
167 |
+
'premium_dual_header_first_back_clip' => 'color',
|
168 |
+
],
|
169 |
+
'selectors' => [
|
170 |
+
'{{WRAPPER}} .premium-dual-header-first-header' => 'color: {{VALUE}};',
|
171 |
+
]
|
172 |
+
]
|
173 |
+
);
|
174 |
+
|
175 |
+
/*First Background Color*/
|
176 |
+
$this->add_group_control(
|
177 |
+
Group_Control_Background::get_type(),
|
178 |
+
[
|
179 |
+
'name' => 'premium_dual_header_first_background',
|
180 |
+
'types' => [ 'classic' , 'gradient' ],
|
181 |
+
'condition' => [
|
182 |
+
'premium_dual_header_first_back_clip' => 'color',
|
183 |
+
],
|
184 |
+
'selector' => '{{WRAPPER}} .premium-dual-header-first-header',
|
185 |
+
]
|
186 |
+
);
|
187 |
+
|
188 |
+
/*First Clip*/
|
189 |
+
$this->add_group_control(
|
190 |
+
Group_Control_Background::get_type(),
|
191 |
+
[
|
192 |
+
'name' => 'premium_dual_header_first_clipped_background',
|
193 |
+
'types' => [ 'classic' , 'gradient' ],
|
194 |
+
'condition' => [
|
195 |
+
'premium_dual_header_first_back_clip' => 'clipped',
|
196 |
+
],
|
197 |
+
'selector' => '{{WRAPPER}} .premium-dual-header-first-header',
|
198 |
+
]
|
199 |
+
);
|
200 |
+
|
201 |
+
/*First Border*/
|
202 |
+
$this->add_group_control(
|
203 |
+
Group_Control_Border::get_type(),
|
204 |
+
[
|
205 |
+
'name' => 'first-header-border',
|
206 |
+
'selector' => '{{WRAPPER}} .premium-dual-header-first-header',
|
207 |
+
]
|
208 |
+
);
|
209 |
+
|
210 |
+
/*First Border Radius*/
|
211 |
+
$this->add_control('premium_dual_header_first_border_radius',
|
212 |
+
[
|
213 |
+
'label' => esc_html__('Border Radius', 'premium_elementor'),
|
214 |
+
'type' => Controls_Manager::SLIDER,
|
215 |
+
'size_units' => ['px', '%', 'em'],
|
216 |
+
'selectors' => [
|
217 |
+
'{{WRAPPER}} .premium-dual-header-first-header' => 'border-radius: {{SIZE}}{{UNIT}};'
|
218 |
+
]
|
219 |
+
]
|
220 |
+
);
|
221 |
+
|
222 |
+
/*First Margin*/
|
223 |
+
$this->add_responsive_control('premium_dual_header_first_margin',
|
224 |
+
[
|
225 |
+
'label' => esc_html__('Margin', 'premium_elementor'),
|
226 |
+
'type' => Controls_Manager::DIMENSIONS,
|
227 |
+
'size_units' => [ 'px', 'em', '%' ],
|
228 |
+
'selectors' => [
|
229 |
+
'{{WRAPPER}} .premium-dual-header-first-header' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
|
230 |
+
]
|
231 |
+
]
|
232 |
+
);
|
233 |
+
|
234 |
+
/*First Padding*/
|
235 |
+
$this->add_responsive_control('premium_dual_header_first_padding',
|
236 |
+
[
|
237 |
+
'label' => esc_html__('Padding', 'premium_elementor'),
|
238 |
+
'type' => Controls_Manager::DIMENSIONS,
|
239 |
+
'size_units' => [ 'px', 'em', '%' ],
|
240 |
+
'selectors' => [
|
241 |
+
'{{WRAPPER}} .premium-dual-header-first-header' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
|
242 |
+
]
|
243 |
+
]
|
244 |
+
);
|
245 |
+
|
246 |
+
/*End First Header Styling Section*/
|
247 |
+
$this->end_controls_section();
|
248 |
+
|
249 |
+
/*Start First Header Styling Section*/
|
250 |
+
$this->start_controls_section('premium_dual_header_second_style',
|
251 |
+
[
|
252 |
+
'label' => esc_html__('Second Header', 'premium_elementor'),
|
253 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
254 |
+
]
|
255 |
+
);
|
256 |
+
|
257 |
+
/*Second Typography*/
|
258 |
+
$this->add_group_control(
|
259 |
+
Group_Control_Typography::get_type(),
|
260 |
+
[
|
261 |
+
'name' => 'second_header_typography',
|
262 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
263 |
+
'selector' => '{{WRAPPER}} .premium-dual-header-second-header',
|
264 |
+
]
|
265 |
+
);
|
266 |
+
|
267 |
+
/*Second Coloring Style*/
|
268 |
+
$this->add_control('premium_dual_header_second_back_clip',
|
269 |
+
[
|
270 |
+
'label' => esc_html__('Select Header Coloring Style', 'premium_elementor'),
|
271 |
+
'type' => Controls_Manager::SELECT,
|
272 |
+
'default' => 'color',
|
273 |
+
'options' => [
|
274 |
+
'color' => esc_html__('Text Color & Background Color', 'premium_elementor'),
|
275 |
+
'clipped' => esc_html__('Clipped', 'premium_elementor'),
|
276 |
+
],
|
277 |
+
'label_block' => true,
|
278 |
+
]
|
279 |
+
);
|
280 |
+
|
281 |
+
/*Second Color*/
|
282 |
+
$this->add_control('premium_dual_header_second_color',
|
283 |
+
[
|
284 |
+
'label' => esc_html__('Text Color', 'premium_elementor'),
|
285 |
+
'type' => Controls_Manager::COLOR,
|
286 |
+
'default' => '#6ec1e4',
|
287 |
+
'condition' => [
|
288 |
+
'premium_dual_header_second_back_clip' => 'color',
|
289 |
+
],
|
290 |
+
'selectors' => [
|
291 |
+
'{{WRAPPER}} .premium-dual-header-second-header' => 'color: {{VALUE}};',
|
292 |
+
]
|
293 |
+
]
|
294 |
+
);
|
295 |
+
|
296 |
+
/*Second Background Color*/
|
297 |
+
$this->add_group_control(
|
298 |
+
Group_Control_Background::get_type(),
|
299 |
+
[
|
300 |
+
'name' => 'premium_dual_header_second_background',
|
301 |
+
'types' => [ 'classic' , 'gradient' ],
|
302 |
+
'condition' => [
|
303 |
+
'premium_dual_header_second_back_clip' => 'color',
|
304 |
+
],
|
305 |
+
'selector' => '{{WRAPPER}} .premium-dual-header-second-header',
|
306 |
+
]
|
307 |
+
);
|
308 |
+
|
309 |
+
/*Second Clip*/
|
310 |
+
$this->add_group_control(
|
311 |
+
Group_Control_Background::get_type(),
|
312 |
+
[
|
313 |
+
'name' => 'premium_dual_header_second_clipped_background',
|
314 |
+
'types' => [ 'classic' , 'gradient' ],
|
315 |
+
'condition' => [
|
316 |
+
'premium_dual_header_second_back_clip' => 'clipped',
|
317 |
+
],
|
318 |
+
'selector' => '{{WRAPPER}} .premium-dual-header-second-header',
|
319 |
+
]
|
320 |
+
);
|
321 |
+
|
322 |
+
/*Second Border*/
|
323 |
+
$this->add_group_control(
|
324 |
+
Group_Control_Border::get_type(),
|
325 |
+
[
|
326 |
+
'name' => 'second-header-border',
|
327 |
+
'selector' => '{{WRAPPER}} .premium-dual-header-second-header',
|
328 |
+
]
|
329 |
+
);
|
330 |
+
|
331 |
+
/*Second Border Radius*/
|
332 |
+
$this->add_control('premium_dual_header_second_border_radius',
|
333 |
+
[
|
334 |
+
'label' => esc_html__('Border Radius', 'premium_elementor'),
|
335 |
+
'type' => Controls_Manager::SLIDER,
|
336 |
+
'size_units' => ['px', '%', 'em'],
|
337 |
+
'selectors' => [
|
338 |
+
'{{WRAPPER}} .premium-dual-header-second-header' => 'border-radius: {{SIZE}}{{UNIT}};'
|
339 |
+
]
|
340 |
+
]
|
341 |
+
);
|
342 |
+
|
343 |
+
/*Second Margin*/
|
344 |
+
$this->add_responsive_control('premium_dual_header_second_margin',
|
345 |
+
[
|
346 |
+
'label' => esc_html__('Margin', 'premium_elementor'),
|
347 |
+
'type' => Controls_Manager::DIMENSIONS,
|
348 |
+
'size_units' => [ 'px', 'em', '%' ],
|
349 |
+
'selectors' => [
|
350 |
+
'{{WRAPPER}} .premium-dual-header-second-header' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
|
351 |
+
]
|
352 |
+
]
|
353 |
+
);
|
354 |
+
|
355 |
+
/*Second Padding*/
|
356 |
+
$this->add_responsive_control('premium_dual_header_second_padding',
|
357 |
+
[
|
358 |
+
'label' => esc_html__('Padding', 'premium_elementor'),
|
359 |
+
'type' => Controls_Manager::DIMENSIONS,
|
360 |
+
'size_units' => [ 'px', 'em', '%' ],
|
361 |
+
'selectors' => [
|
362 |
+
'{{WRAPPER}} .premium-dual-header-second-header' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
|
363 |
+
]
|
364 |
+
]
|
365 |
+
);
|
366 |
+
|
367 |
+
/*End Second Header Styling Section*/
|
368 |
+
$this->end_controls_section();
|
369 |
+
|
370 |
+
}
|
371 |
+
|
372 |
+
protected function render($instance = [])
|
373 |
+
{
|
374 |
+
// get our input from the widget settings.
|
375 |
+
$settings = $this->get_settings();
|
376 |
+
$first_title_tag = $settings['premium_dual_header_first_header_tag'];
|
377 |
+
$second_title_tag = $settings['premium_dual_header_second_header_tag'];
|
378 |
+
if( $settings['premium_dual_header_first_back_clip'] === 'clipped' ) : $first_clip = "premium-dual-header-first-clip"; endif;
|
379 |
+
if( $settings['premium_dual_header_second_back_clip'] === 'clipped' ) : $second_clip = "premium-dual-header-second-clip"; endif;
|
380 |
+
$full_first_title_tag = '<' . $first_title_tag . ' class="premium-dual-header-first-header ' . $first_clip . '">' . $settings['premium_dual_header_first_header_text'] . '</' . $settings['premium_dual_header_first_header_tag'] . '>';
|
381 |
+
$full_second_title_tag = '<' . $second_title_tag . ' class="premium-dual-header-second-header ' . $second_clip . '">' . $settings['premium_dual_header_second_header_text'] . '</' . $settings['premium_dual_header_second_header_tag'] . '>';
|
382 |
+
?>
|
383 |
+
|
384 |
+
<div class="premium-dual-header-container">
|
385 |
+
<?php if ( !empty ( $settings['premium_dual_header_first_header_text'] ) ) : echo $full_first_title_tag; endif; ?>
|
386 |
+
<?php if ( !empty ( $settings['premium_dual_header_second_header_text'] ) ) : echo $full_second_title_tag; endif; ?>
|
387 |
+
</div>
|
388 |
+
|
389 |
+
<?php
|
390 |
+
}
|
391 |
+
}
|
392 |
+
Plugin::instance()->widgets_manager->register_widget_type(new Premium_Dual_Header_Widget());
|
widgets/premium-fancytext.php
ADDED
@@ -0,0 +1,424 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
|
5 |
+
|
6 |
+
class Premium_Fancy_Text_Widget extends Widget_Base
|
7 |
+
{
|
8 |
+
protected $templateInstance;
|
9 |
+
|
10 |
+
public function getTemplateInstance() {
|
11 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_name() {
|
15 |
+
return 'premium-addon-fancy-text';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
return esc_html__('Premium Fancy Text', 'premium_elementor');
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_icon() {
|
23 |
+
return 'pa-pa-typing';
|
24 |
+
}
|
25 |
+
|
26 |
+
public function get_categories() {
|
27 |
+
return [ 'premium-elements' ];
|
28 |
+
}
|
29 |
+
|
30 |
+
// Adding the controls fields for the premium fancy text
|
31 |
+
// This will controls the animation, colors and background, dimensions etc
|
32 |
+
protected function _register_controls() {
|
33 |
+
|
34 |
+
/*Start Text Content Section*/
|
35 |
+
$this->start_controls_section('premium_fancy_text_content',
|
36 |
+
[
|
37 |
+
'label' => esc_html__('Text Content', 'premium_elementor'),
|
38 |
+
]
|
39 |
+
);
|
40 |
+
|
41 |
+
/*Prefix Text*/
|
42 |
+
$this->add_control('premium_fancy_prefix_text',
|
43 |
+
[
|
44 |
+
'label' => esc_html__('Prefix Text', 'premium_elementor'),
|
45 |
+
'type' => Controls_Manager::TEXT,
|
46 |
+
'default' => esc_html__('This is', 'premium_elementor'),
|
47 |
+
'description' => esc_html__( 'Text before Fancy text', 'premium_elementor' ),
|
48 |
+
'label_block' => true,
|
49 |
+
]
|
50 |
+
);
|
51 |
+
|
52 |
+
/*Fancy Text Strings*/
|
53 |
+
$this->add_control('premium_fancy_text_strings',
|
54 |
+
[
|
55 |
+
'label' => esc_html__( 'Fancy Text Strings', 'premium_elementor' ),
|
56 |
+
'type' => Controls_Manager::REPEATER,
|
57 |
+
'default' => [
|
58 |
+
[
|
59 |
+
'premium_text_strings_text_field' => esc_html__( 'Designer', 'premium_elementor' ),
|
60 |
+
],
|
61 |
+
[
|
62 |
+
'premium_text_strings_text_field' => esc_html__( 'Developers', 'premium_elementor' ),
|
63 |
+
],
|
64 |
+
[
|
65 |
+
'premium_text_strings_text_field' => esc_html__( 'Awesome', 'premium_elementor' ),
|
66 |
+
],
|
67 |
+
],
|
68 |
+
'fields' => [
|
69 |
+
[
|
70 |
+
'name' => 'premium_text_strings_text_field',
|
71 |
+
'label' => esc_html__( 'Fancy String', 'premium_elementor' ),
|
72 |
+
'type' => Controls_Manager::TEXT,
|
73 |
+
'label_block' => true,
|
74 |
+
],
|
75 |
+
],
|
76 |
+
'title_field' => '{{{ premium_text_strings_text_field }}}',
|
77 |
+
]
|
78 |
+
);
|
79 |
+
|
80 |
+
/*Prefix Text*/
|
81 |
+
$this->add_control('premium_fancy_suffix_text',
|
82 |
+
[
|
83 |
+
'label' => esc_html__('Suffix Text', 'premium_elementor'),
|
84 |
+
'type' => Controls_Manager::TEXT,
|
85 |
+
'default' => esc_html__('Text', 'premium_elementor'),
|
86 |
+
'description' => esc_html__( 'Text after Fancy text', 'premium_elementor' ),
|
87 |
+
'label_block' => true,
|
88 |
+
]
|
89 |
+
);
|
90 |
+
|
91 |
+
/*Text Effect*/
|
92 |
+
$this->add_control('premium_fancy_text_effect',
|
93 |
+
[
|
94 |
+
'label' => esc_html__('Effect', 'premium_elementor'),
|
95 |
+
'type' => Controls_Manager::SELECT,
|
96 |
+
'description' => esc_html__( 'Choose an Effect', 'premium_elementor' ),
|
97 |
+
'options' => [
|
98 |
+
'typing'=> esc_html__('Type Writer'),
|
99 |
+
'slide' => esc_html__('Slide Up'),
|
100 |
+
],
|
101 |
+
'default' => 'typing',
|
102 |
+
'label_block' => true,
|
103 |
+
]
|
104 |
+
);
|
105 |
+
|
106 |
+
/*Type Speed*/
|
107 |
+
$this->add_control('premium_fancy_text_type_speed',
|
108 |
+
[
|
109 |
+
'label' => esc_html__('Type Speed (Milliseconds)', 'premium_elementor'),
|
110 |
+
'type' => Controls_Manager::NUMBER,
|
111 |
+
'default' => 30,
|
112 |
+
'description' => esc_html__( 'Speed at which line progresses / Speed of typing effect.', 'premium_elementor' ),
|
113 |
+
'condition' => [
|
114 |
+
'premium_fancy_text_effect' => 'typing',
|
115 |
+
],
|
116 |
+
'label_block' => true,
|
117 |
+
]
|
118 |
+
);
|
119 |
+
|
120 |
+
/*Back Speed*/
|
121 |
+
$this->add_control('premium_fancy_text_back_speed',
|
122 |
+
[
|
123 |
+
'label' => esc_html__('Back Speed (Milliseconds)', 'premium_elementor'),
|
124 |
+
'type' => Controls_Manager::NUMBER,
|
125 |
+
'default' => 30,
|
126 |
+
'description' => esc_html__( 'Speed of delete / backspace effect.', 'premium_elementor' ),
|
127 |
+
'condition' => [
|
128 |
+
'premium_fancy_text_effect' => 'typing',
|
129 |
+
],
|
130 |
+
'label_block' => true,
|
131 |
+
]
|
132 |
+
);
|
133 |
+
|
134 |
+
/*Start Delay*/
|
135 |
+
$this->add_control('premium_fancy_text_start_delay',
|
136 |
+
[
|
137 |
+
'label' => esc_html__('Start Delay (Milliseconds)', 'premium_elementor'),
|
138 |
+
'type' => Controls_Manager::NUMBER,
|
139 |
+
'default' => 30,
|
140 |
+
'description' => esc_html__( 'Example - If set to 5000, the first string will appear after 5 seconds.', 'premium_elementor' ),
|
141 |
+
'condition' => [
|
142 |
+
'premium_fancy_text_effect' => 'typing',
|
143 |
+
],
|
144 |
+
'label_block' => true,
|
145 |
+
]
|
146 |
+
);
|
147 |
+
|
148 |
+
/*Back Delay*/
|
149 |
+
$this->add_control('premium_fancy_text_back_delay',
|
150 |
+
[
|
151 |
+
'label' => esc_html__('Back Delay (Milliseconds)', 'premium_elementor'),
|
152 |
+
'type' => Controls_Manager::NUMBER,
|
153 |
+
'default' => 30,
|
154 |
+
'description' => esc_html__( 'Example - If set to 5000, the string will remain visible for 5 seconds before backspace effect.', 'premium_elementor' ),
|
155 |
+
'condition' => [
|
156 |
+
'premium_fancy_text_effect' => 'typing',
|
157 |
+
],
|
158 |
+
'label_block' => true,
|
159 |
+
]
|
160 |
+
);
|
161 |
+
|
162 |
+
/*Type Loop*/
|
163 |
+
$this->add_control('premium_fancy_text_type_loop',
|
164 |
+
[
|
165 |
+
'label' => esc_html__('Loop','premium_elementor'),
|
166 |
+
'type' => Controls_Manager::SWITCHER,
|
167 |
+
'default' => 'yes',
|
168 |
+
'condition' => [
|
169 |
+
'premium_fancy_text_effect' => 'typing',
|
170 |
+
],
|
171 |
+
]
|
172 |
+
);
|
173 |
+
|
174 |
+
/*Show Cursor*/
|
175 |
+
$this->add_control('premium_fancy_text_show_cursor',
|
176 |
+
[
|
177 |
+
'label' => esc_html__('Show Cursor','premium_elementor'),
|
178 |
+
'type' => Controls_Manager::SWITCHER,
|
179 |
+
'default' => 'yes',
|
180 |
+
'condition' => [
|
181 |
+
'premium_fancy_text_effect' => 'typing',
|
182 |
+
],
|
183 |
+
]
|
184 |
+
);
|
185 |
+
|
186 |
+
/*Cursor Text*/
|
187 |
+
$this->add_control('premium_fancy_text_cursor_text',
|
188 |
+
[
|
189 |
+
'label' => esc_html__('Cursor Text', 'premium_elementor'),
|
190 |
+
'type' => Controls_Manager::TEXT,
|
191 |
+
'default' => esc_html__('|','premium_elementor'),
|
192 |
+
'condition' => [
|
193 |
+
'premium_fancy_text_effect' => 'typing',
|
194 |
+
],
|
195 |
+
]
|
196 |
+
);
|
197 |
+
|
198 |
+
/*Slide Up Speed*/
|
199 |
+
$this->add_control('premium_slide_up_speed',
|
200 |
+
[
|
201 |
+
'label' => esc_html__('Animation Speed (Milliseconds)', 'premium_elementor'),
|
202 |
+
'type' => Controls_Manager::NUMBER,
|
203 |
+
'default' => 200,
|
204 |
+
'description' => esc_html__( 'Duration of Slide Up animation', 'premium_elementor' ),
|
205 |
+
'condition' => [
|
206 |
+
'premium_fancy_text_effect' => 'slide',
|
207 |
+
],
|
208 |
+
'label_block' => true,
|
209 |
+
]
|
210 |
+
);
|
211 |
+
|
212 |
+
/*Slide Up Pause Time*/
|
213 |
+
$this->add_control('premium_slide_up_pause_time',
|
214 |
+
[
|
215 |
+
'label' => esc_html__('Pause Time (Milliseconds)', 'premium_elementor'),
|
216 |
+
'type' => Controls_Manager::NUMBER,
|
217 |
+
'default' => 3000,
|
218 |
+
'description' => esc_html__( 'How long the string should stay visible?', 'premium_elementor' ),
|
219 |
+
'condition' => [
|
220 |
+
'premium_fancy_text_effect' => 'slide',
|
221 |
+
],
|
222 |
+
'label_block' => true,
|
223 |
+
]
|
224 |
+
);
|
225 |
+
|
226 |
+
/*Slide Up Shown Items*/
|
227 |
+
$this->add_control('premium_slide_up_shown_items',
|
228 |
+
[
|
229 |
+
'label' => esc_html__('Show Items (Milliseconds)', 'premium_elementor'),
|
230 |
+
'type' => Controls_Manager::NUMBER,
|
231 |
+
'default' => 1,
|
232 |
+
'description' => esc_html__( 'How many items should be visible at a time?', 'premium_elementor' ),
|
233 |
+
'condition' => [
|
234 |
+
'premium_fancy_text_effect' => 'slide',
|
235 |
+
],
|
236 |
+
'label_block' => true,
|
237 |
+
]
|
238 |
+
);
|
239 |
+
|
240 |
+
/*Pause on Hover*/
|
241 |
+
$this->add_control('premium_slide_up_hover_pause',
|
242 |
+
[
|
243 |
+
'label' => esc_html__('Pause on Hover','premium_elementor'),
|
244 |
+
'type' => Controls_Manager::SWITCHER,
|
245 |
+
'default' => 'no',
|
246 |
+
'condition' => [
|
247 |
+
'premium_fancy_text_effect' => 'slide',
|
248 |
+
],
|
249 |
+
]
|
250 |
+
);
|
251 |
+
|
252 |
+
/*Front Text Align*/
|
253 |
+
$this->add_responsive_control('premium_fancy_text_align',
|
254 |
+
[
|
255 |
+
'label' => esc_html__( 'Text Align', 'elementor' ),
|
256 |
+
'type' => Controls_Manager::CHOOSE,
|
257 |
+
'options' => [
|
258 |
+
'left' => [
|
259 |
+
'title'=> esc_html__( 'Left', 'elementor' ),
|
260 |
+
'icon' => 'fa fa-align-left',
|
261 |
+
],
|
262 |
+
'center' => [
|
263 |
+
'title'=> esc_html__( 'Center', 'elementor' ),
|
264 |
+
'icon' => 'fa fa-align-center',
|
265 |
+
],
|
266 |
+
'right' => [
|
267 |
+
'title'=> esc_html__( 'Right', 'elementor' ),
|
268 |
+
'icon' => 'fa fa-align-right',
|
269 |
+
],
|
270 |
+
],
|
271 |
+
'default' => 'center',
|
272 |
+
'selectors' => [
|
273 |
+
'{{WRAPPER}} .premium-fancy-text-wrapper' => 'text-align: {{VALUE}};',
|
274 |
+
],
|
275 |
+
]
|
276 |
+
);
|
277 |
+
|
278 |
+
$this->end_controls_section();
|
279 |
+
|
280 |
+
/*Start Fancy Text Settings Tab*/
|
281 |
+
$this->start_controls_section('premium_fancy_text_style_tab',
|
282 |
+
[
|
283 |
+
'label' => esc_html__('Fancy Text Settings', 'premium_elementor'),
|
284 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
285 |
+
]
|
286 |
+
);
|
287 |
+
|
288 |
+
/*Fancy Text Color*/
|
289 |
+
$this->add_control('premium_fancy_text_color',
|
290 |
+
[
|
291 |
+
'label' => esc_html__('Fancy Text Color', 'premium_elementor'),
|
292 |
+
'type' => Controls_Manager::COLOR,
|
293 |
+
'default' => '#6ec1e4',
|
294 |
+
'selectors' => [
|
295 |
+
'{{WRAPPER}} .premium-fancy-text' => 'color: {{VALUE}};',
|
296 |
+
]
|
297 |
+
]
|
298 |
+
);
|
299 |
+
|
300 |
+
/*Fancy Text Typography*/
|
301 |
+
$this->add_group_control(
|
302 |
+
Group_Control_Typography::get_type(),
|
303 |
+
[
|
304 |
+
'name' => 'fancy_text_typography',
|
305 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
306 |
+
'selector' => '{{WRAPPER}} .premium-fancy-text',
|
307 |
+
]
|
308 |
+
);
|
309 |
+
|
310 |
+
/*Fancy Text Background Color*/
|
311 |
+
$this->add_control('premium_fancy_text_background_color',
|
312 |
+
[
|
313 |
+
'label' => esc_html__('Fancy Text Background Color', 'premium_elementor'),
|
314 |
+
'type' => Controls_Manager::COLOR,
|
315 |
+
'selectors' => [
|
316 |
+
'{{WRAPPER}} .premium-fancy-text' => 'background-color: {{VALUE}};',
|
317 |
+
]
|
318 |
+
]
|
319 |
+
);
|
320 |
+
|
321 |
+
/*End Fancy Text Settings Tab*/
|
322 |
+
$this->end_controls_section();
|
323 |
+
|
324 |
+
/*Start Prefix Suffix Text Settings Tab*/
|
325 |
+
$this->start_controls_section('premium_prefix_suffix_style_tab',
|
326 |
+
[
|
327 |
+
'label' => esc_html__('Prefix Suffix Text Settings', 'premium_elementor'),
|
328 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
329 |
+
]
|
330 |
+
);
|
331 |
+
|
332 |
+
/*Prefix Suffix Text Color*/
|
333 |
+
$this->add_control('premium_prefix_suffix_text_color',
|
334 |
+
[
|
335 |
+
'label' => esc_html__('Suffix & Prefix Color', 'premium_elementor'),
|
336 |
+
'type' => Controls_Manager::COLOR,
|
337 |
+
'default' => '#54595f',
|
338 |
+
'selectors' => [
|
339 |
+
'{{WRAPPER}} .premium-prefix-text, {{WRAPPER}} .premium-suffix-text' => 'color: {{VALUE}};',
|
340 |
+
]
|
341 |
+
]
|
342 |
+
);
|
343 |
+
|
344 |
+
/*Prefix Suffix Typography*/
|
345 |
+
$this->add_group_control(
|
346 |
+
Group_Control_Typography::get_type(),
|
347 |
+
[
|
348 |
+
'name' => 'prefix_suffix_typography',
|
349 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
350 |
+
'selector' => '{{WRAPPER}} .premium-prefix-text, {{WRAPPER}} .premium-suffix-text',
|
351 |
+
]
|
352 |
+
);
|
353 |
+
|
354 |
+
/*Prefix Suffix Text Background Color*/
|
355 |
+
$this->add_control('premium_prefix_suffix_text_background_color',
|
356 |
+
[
|
357 |
+
'label' => esc_html__('Suffix & Prefix Background Color', 'premium_elementor'),
|
358 |
+
'type' => Controls_Manager::COLOR,
|
359 |
+
'selectors' => [
|
360 |
+
'{{WRAPPER}} .premium-prefix-text, {{WRAPPER}} .premium-suffix-text' => 'background-color: {{VALUE}};',
|
361 |
+
]
|
362 |
+
]
|
363 |
+
);
|
364 |
+
|
365 |
+
/*End Prefix Suffix Text Settings Tab*/
|
366 |
+
$this->end_controls_section();
|
367 |
+
}
|
368 |
+
|
369 |
+
protected function render( ) {
|
370 |
+
// get our input from the widget settings.
|
371 |
+
$settings = $this->get_settings();
|
372 |
+
?>
|
373 |
+
|
374 |
+
|
375 |
+
<div class="premium-fancy-text-wrapper">
|
376 |
+
<span class="premium-prefix-text" style="<?php if ( $settings['premium_fancy_text_effect'] === 'slide' ) : echo "vertical-align:top;"; endif; ?>"><?php echo wp_kses( ( $settings['premium_fancy_prefix_text'] ), true ); ?></span>
|
377 |
+
|
378 |
+
<?php if ( $settings['premium_fancy_text_effect'] === 'typing' ) : ?><span id="premium_fancy_text_<?php echo esc_attr( $this->get_id() ); ?>" class="premium-fancy-text" ></span>
|
379 |
+
<?php else : ?>
|
380 |
+
<div id="premium_fancy_text_<?php echo esc_attr( $this->get_id() ); ?>" class="premium-fancy-text" style=' display: inline-block; text-align: center;'>
|
381 |
+
<ul>
|
382 |
+
<?php foreach ( $settings['premium_fancy_text_strings'] as $item ) : ?><?php if ( ! empty( $item['premium_text_strings_text_field'] ) ) : ?><?php echo "<li>".esc_attr( $item['premium_text_strings_text_field'] )."</li>"; ?><?php endif; ?><?php endforeach; ?>
|
383 |
+
</ul>
|
384 |
+
</div>
|
385 |
+
<?php endif; ?>
|
386 |
+
<span class="premium-suffix-text" style="<?php if ( $settings['premium_fancy_text_effect'] === 'slide' ) : echo "vertical-align: top;"; endif; ?>"><?php echo wp_kses( ( $settings['premium_fancy_suffix_text'] ), true ); ?></span>
|
387 |
+
</div>
|
388 |
+
|
389 |
+
<!-- Typing Effect-->
|
390 |
+
<?php if ( $settings['premium_fancy_text_effect'] === 'typing' ) : ?>
|
391 |
+
<script type="text/javascript">
|
392 |
+
jQuery(document).ready(function( $ ) {
|
393 |
+
$( "#premium_fancy_text_<?php echo esc_attr( $this->get_id() );?> " ).typed( {
|
394 |
+
strings: [ <?php foreach ( $settings['premium_fancy_text_strings'] as $item ) : ?><?php if ( ! empty( $item['premium_text_strings_text_field'] ) ) : ?>"<?php echo esc_attr($item['premium_text_strings_text_field'] ); ?>",<?php endif; ?><?php endforeach; ?> ],
|
395 |
+
typeSpeed: <?php echo esc_attr( $settings['premium_fancy_text_type_speed'] ); ?>,
|
396 |
+
backSpeed: <?php echo esc_attr( $settings['premium_fancy_text_back_speed'] ); ?>,
|
397 |
+
startDelay: <?php echo esc_attr( $settings['premium_fancy_text_start_delay'] ); ?>,
|
398 |
+
backDelay: <?php echo esc_attr( $settings['premium_fancy_text_back_delay'] ); ?>,
|
399 |
+
showCursor: <?php if( !empty( $settings['premium_fancy_text_show_cursor'] ) ) : ?> true <?php else : ?>false<?php endif; ?>,
|
400 |
+
cursorChar: <?php echo '"' . $settings['premium_fancy_text_cursor_text'] . '"' ; ?>,
|
401 |
+
loop: <?php if( !empty( $settings['premium_fancy_text_type_loop'] ) ) : ?>true<?php else : ?>false<?php endif; ?>,
|
402 |
+
});
|
403 |
+
});
|
404 |
+
</script>
|
405 |
+
<?php endif; ?>
|
406 |
+
<!-- Slide up Effect -->
|
407 |
+
<?php if ( $settings['premium_fancy_text_effect'] === 'slide') : ?>
|
408 |
+
<script>
|
409 |
+
jQuery(function( $ ) {
|
410 |
+
$( "#premium_fancy_text_<?php echo esc_attr( $this->get_id() ); ?>").vTicker( {
|
411 |
+
speed: <?php echo esc_attr( $settings['premium_slide_up_speed'] ); ?>,
|
412 |
+
showItems: <?php echo esc_attr( $settings['premium_slide_up_shown_items'] ); ?>,
|
413 |
+
pause: <?php echo esc_attr( $settings['premium_slide_up_pause_time'] ); ?>,
|
414 |
+
mousePause : <?php if ( !empty( $settings['premium_slide_up_hover_pause'] ) ) : ?>true<?php else : ?>false<?php endif; ?>,
|
415 |
+
direction: "up"
|
416 |
+
});
|
417 |
+
});
|
418 |
+
</script>
|
419 |
+
<?php endif; ?>
|
420 |
+
|
421 |
+
<?php
|
422 |
+
}
|
423 |
+
}
|
424 |
+
Plugin::instance()->widgets_manager->register_widget_type(new Premium_Fancy_Text_Widget());
|
widgets/premium-imageseparator.php
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
|
5 |
+
|
6 |
+
class Premium_Image_Separator_Widget extends Widget_Base
|
7 |
+
{
|
8 |
+
protected $templateInstance;
|
9 |
+
|
10 |
+
public function getTemplateInstance() {
|
11 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_name() {
|
15 |
+
return 'premium-addon-image-separator';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
return esc_html__('Premium Image Separator', 'premium_elementor');
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_icon() {
|
23 |
+
return 'pa-pa-image';
|
24 |
+
}
|
25 |
+
|
26 |
+
public function get_categories() {
|
27 |
+
return [ 'premium-elements' ];
|
28 |
+
}
|
29 |
+
|
30 |
+
// Adding the controls fields for the premium image separator
|
31 |
+
// This will controls the animation, colors and background, dimensions etc
|
32 |
+
protected function _register_controls() {
|
33 |
+
|
34 |
+
/* Start Content Section */
|
35 |
+
$this->start_controls_section('premium_image_separator_general_settings',
|
36 |
+
[
|
37 |
+
'label' => esc_html__('General Settings', 'premium_elementor')
|
38 |
+
]
|
39 |
+
);
|
40 |
+
|
41 |
+
/*Separator Image*/
|
42 |
+
$this->add_control('premium_image_separator_image',
|
43 |
+
[
|
44 |
+
'label' => esc_html__('Image', 'premium_elementor'),
|
45 |
+
'type' => Controls_Manager::MEDIA,
|
46 |
+
'default' => [
|
47 |
+
'url' => Utils::get_placeholder_image_src(),
|
48 |
+
],
|
49 |
+
'description' => esc_html__('Choose the separator image', 'premium_elementor' ),
|
50 |
+
'label_block' => true
|
51 |
+
]
|
52 |
+
);
|
53 |
+
|
54 |
+
/*Separator Image Size*/
|
55 |
+
$this->add_control('premium_image_separator_image_size',
|
56 |
+
[
|
57 |
+
'label' => esc_html__('Image Size', 'premium_elementor'),
|
58 |
+
'type' => Controls_Manager::SLIDER,
|
59 |
+
'size_units' => ['px', '%', "em"],
|
60 |
+
'selectors' => [
|
61 |
+
'{{WRAPPER}} .premium-image-separator-container img' => 'width: {{SIZE}}{{UNIT}};'
|
62 |
+
]
|
63 |
+
]
|
64 |
+
);
|
65 |
+
|
66 |
+
/*Separator Image Gutter*/
|
67 |
+
$this->add_control('premium_image_separator_image_gutter',
|
68 |
+
[
|
69 |
+
'label' => esc_html__('Image Gutter (%)', 'premium_elementor'),
|
70 |
+
'type' => Controls_Manager::NUMBER,
|
71 |
+
'default' => -50,
|
72 |
+
'description' => esc_html__('-50% is default. Increase to push the image outside or decrease to pull the image inside.','premium_elementor'),
|
73 |
+
'label_block' => true,
|
74 |
+
'selectors' => [
|
75 |
+
'{{WRAPPER}} .premium-image-separator-container' => 'transform: translateY( {{VALUE}}% );'
|
76 |
+
|
77 |
+
]
|
78 |
+
]
|
79 |
+
);
|
80 |
+
|
81 |
+
/*Link Below Image*/
|
82 |
+
$this->add_control('premium_image_separator_image_link_text',
|
83 |
+
[
|
84 |
+
'label' => esc_html__('URL Title', 'premium_elementor'),
|
85 |
+
'type' => Controls_Manager::TEXT,
|
86 |
+
'label_block' => true
|
87 |
+
]
|
88 |
+
);
|
89 |
+
|
90 |
+
/*Link Below Image*/
|
91 |
+
$this->add_control('premium_image_separator_image_link',
|
92 |
+
[
|
93 |
+
'label' => esc_html__('URL', 'premium_elementor'),
|
94 |
+
'type' => Controls_Manager::TEXT,
|
95 |
+
'label_block' => true
|
96 |
+
]
|
97 |
+
);
|
98 |
+
|
99 |
+
/*Link Target*/
|
100 |
+
$this->add_control('premium_image_separator_link_target',
|
101 |
+
[
|
102 |
+
'label' => esc_html__('Link Target', 'premium_elementor'),
|
103 |
+
'type' => Controls_Manager::SELECT,
|
104 |
+
'description' => esc_html__( 'Select link target', 'premium_elementor' ),
|
105 |
+
'options' => [
|
106 |
+
'blank' => esc_html('Blank'),
|
107 |
+
'parent' => esc_html('Parent'),
|
108 |
+
'self' => esc_html('Self'),
|
109 |
+
'top' => esc_html('Top'),
|
110 |
+
],
|
111 |
+
'default' => esc_html__('blank','premium_elementor')
|
112 |
+
]
|
113 |
+
);
|
114 |
+
|
115 |
+
/*End Price Settings Section*/
|
116 |
+
$this->end_controls_section();
|
117 |
+
|
118 |
+
}
|
119 |
+
|
120 |
+
protected function render($instance = [])
|
121 |
+
{
|
122 |
+
// get our input from the widget settings.
|
123 |
+
$settings = $this->get_settings();
|
124 |
+
?>
|
125 |
+
|
126 |
+
<div class="premium-image-separator-container">
|
127 |
+
|
128 |
+
<img alt="image separator" class="img-responsive" src="<?php echo $settings['premium_image_separator_image']['url']; ?>">
|
129 |
+
<?php if ( !empty ( $settings['premium_image_separator_image_link_text'] ) ) : ?>
|
130 |
+
<a class="premium-image-separator-link" href="<?php echo $settings['premium_image_separator_image_link']; ?>" target="_<?php echo $settings['premium_image_separator_link_target']; ?>" title="<?php echo $settings['premium_image_separator_image_link_text']; ?>">
|
131 |
+
</a>
|
132 |
+
<?php endif;?>
|
133 |
+
</div>
|
134 |
+
<?php
|
135 |
+
}
|
136 |
+
}
|
137 |
+
Plugin::instance()->widgets_manager->register_widget_type(new Premium_Image_Separator_Widget());
|
widgets/premium-maps.php
ADDED
@@ -0,0 +1,350 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
|
5 |
+
|
6 |
+
class Premium_Maps_Widget extends Widget_Base
|
7 |
+
{
|
8 |
+
protected $templateInstance;
|
9 |
+
|
10 |
+
public function getTemplateInstance() {
|
11 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_name() {
|
15 |
+
return 'premium-addon-maps';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
return esc_html__('Premium Maps', 'premium_elementor');
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_icon() {
|
23 |
+
return 'pa-pa-post';
|
24 |
+
}
|
25 |
+
|
26 |
+
public function get_categories() {
|
27 |
+
return [ 'premium-elements' ];
|
28 |
+
}
|
29 |
+
|
30 |
+
// Adding the controls fields for the premium maps
|
31 |
+
// This will controls the animation, colors and background, dimensions etc
|
32 |
+
protected function _register_controls() {
|
33 |
+
|
34 |
+
/* Start Map Settings Section */
|
35 |
+
$this->start_controls_section('premium_maps_map_settings',
|
36 |
+
[
|
37 |
+
'label' => esc_html__('Map Settings', 'premium_elementor')
|
38 |
+
]
|
39 |
+
);
|
40 |
+
|
41 |
+
/*Map Pins*/
|
42 |
+
$this->add_control('premium_maps_map_pins',
|
43 |
+
[
|
44 |
+
'label' => esc_html__('Map Pins', 'premium_elementor'),
|
45 |
+
'type' => Controls_Manager::REPEATER,
|
46 |
+
'default' => [
|
47 |
+
'map_address' => esc_html__('London Eye, London, United Kingdom', 'premium_elementor'),
|
48 |
+
'map_title' => esc_html__('Google Map', 'premium_elementor'),
|
49 |
+
'map_content' => esc_html__('Add an optional title and description to your map pins', 'premium_elementor'),
|
50 |
+
],
|
51 |
+
'fields' => [
|
52 |
+
[
|
53 |
+
'name' => 'map_address',
|
54 |
+
'label' => esc_html__('Map Address', 'premium_elementor'),
|
55 |
+
'type' => Controls_Manager::TEXT,
|
56 |
+
'label_block' => true,
|
57 |
+
],
|
58 |
+
[
|
59 |
+
'name' => 'map_title',
|
60 |
+
'label' => esc_html__('Pin Title', 'premium_elementor'),
|
61 |
+
'type' => Controls_Manager::TEXT,
|
62 |
+
'label_block' => true,
|
63 |
+
],
|
64 |
+
[
|
65 |
+
'name' => 'map_content',
|
66 |
+
'label' => esc_html__('Pin Text', 'premium_elementor'),
|
67 |
+
'type' => Controls_Manager::TEXTAREA,
|
68 |
+
'label_block' => true,
|
69 |
+
],
|
70 |
+
[
|
71 |
+
'name' => 'map_marker_open',
|
72 |
+
'label' => esc_html__('Automatically Open Pin', 'premium_elementor'),
|
73 |
+
'type' => Controls_Manager::SWITCHER,
|
74 |
+
'label_block' => true,
|
75 |
+
],
|
76 |
+
[
|
77 |
+
'name' => 'map_address_custom_pin',
|
78 |
+
'label' => esc_html__('Custom Marker Icon', 'premium_elementor'),
|
79 |
+
'type' => Controls_Manager::MEDIA,
|
80 |
+
],
|
81 |
+
],
|
82 |
+
'title_field' => '<i class="fa fa-map-marker"></i> {{{ map_address }}}',
|
83 |
+
]
|
84 |
+
);
|
85 |
+
|
86 |
+
/*End Map Settings Section*/
|
87 |
+
$this->end_controls_section();
|
88 |
+
|
89 |
+
/*Start Map Options Section*/
|
90 |
+
$this->start_controls_section('premium_maps_map_options',
|
91 |
+
[
|
92 |
+
'label' => esc_html__('Map Options', 'premium_elementor'),
|
93 |
+
]
|
94 |
+
);
|
95 |
+
|
96 |
+
$this->add_responsive_control('premium_maps_map_height',
|
97 |
+
[
|
98 |
+
'label' => esc_html__( 'Map Height', 'premium_elementor' ),
|
99 |
+
'type' => Controls_Manager::SLIDER,
|
100 |
+
'default' => [
|
101 |
+
'size' => 500,
|
102 |
+
],
|
103 |
+
'range' => [
|
104 |
+
'px' => [
|
105 |
+
'min' => 80,
|
106 |
+
'max' => 1400,
|
107 |
+
],
|
108 |
+
],
|
109 |
+
'selectors' => [
|
110 |
+
'{{WRAPPER}} .premium_maps_map_height' => 'height: {{SIZE}}px;',
|
111 |
+
],
|
112 |
+
]
|
113 |
+
);
|
114 |
+
|
115 |
+
|
116 |
+
|
117 |
+
$this->add_control('premium_maps_map_zoom',
|
118 |
+
[
|
119 |
+
'label' => esc_html__( 'Map Zoom', 'premium_elementor' ),
|
120 |
+
'type' => Controls_Manager::SLIDER,
|
121 |
+
'default' => [
|
122 |
+
'size' => 12,
|
123 |
+
],
|
124 |
+
'range' => [
|
125 |
+
'px' => [
|
126 |
+
'min' => 0,
|
127 |
+
'max' => 22,
|
128 |
+
],
|
129 |
+
],
|
130 |
+
]
|
131 |
+
);
|
132 |
+
|
133 |
+
|
134 |
+
$this->add_control('premium_maps_map_option_single_pin',
|
135 |
+
[
|
136 |
+
'label' => esc_html__( 'Open One Pin at a Time?', 'premium_elementor' ),
|
137 |
+
'type' => Controls_Manager::SWITCHER,
|
138 |
+
]
|
139 |
+
);
|
140 |
+
|
141 |
+
$this->add_control('premium_maps_map_option_streeview',
|
142 |
+
[
|
143 |
+
'label' => esc_html__( 'Street View Controls', 'premium_elementor' ),
|
144 |
+
'type' => Controls_Manager::SWITCHER,
|
145 |
+
]
|
146 |
+
);
|
147 |
+
|
148 |
+
|
149 |
+
|
150 |
+
$this->add_control('premium_maps_map_option_maptype_control',
|
151 |
+
[
|
152 |
+
'label' => esc_html__( 'Map Type Controls Top Right', 'premium_elementor' ),
|
153 |
+
'type' => Controls_Manager::SWITCHER,
|
154 |
+
]
|
155 |
+
);
|
156 |
+
|
157 |
+
$this->add_control('premium_maps_map_option_mapscroll',
|
158 |
+
[
|
159 |
+
'label' => esc_html__( 'Scroll Wheel Zoom', 'premium_elementor' ),
|
160 |
+
'type' => Controls_Manager::SWITCHER,
|
161 |
+
]
|
162 |
+
);
|
163 |
+
|
164 |
+
$this->add_control('premium_maps_map_type',
|
165 |
+
[
|
166 |
+
'label' => esc_html__( 'Map Type', 'premium_elementor' ),
|
167 |
+
'type' => Controls_Manager::SELECT,
|
168 |
+
'options' => [
|
169 |
+
'roodmap' => esc_html__( 'Road Map', 'premium_elementor' ),
|
170 |
+
'satellite' => esc_html__( 'Satellite', 'premium_elementor' ),
|
171 |
+
'terrain' => esc_html__( 'Terrain', 'premium_elementor' ),
|
172 |
+
'hybrid' => esc_html__( 'Hybrid', 'premium_elementor' ),
|
173 |
+
],
|
174 |
+
'default' => 'roodmap',
|
175 |
+
]
|
176 |
+
);
|
177 |
+
|
178 |
+
/*End Map Options Section*/
|
179 |
+
$this->end_controls_section();
|
180 |
+
|
181 |
+
/*Start Title Style Section*/
|
182 |
+
$this->start_controls_section('premium_maps_pin_title_style',
|
183 |
+
[
|
184 |
+
'label' => esc_html__('Pin Title Style', 'premium_elementor'),
|
185 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
186 |
+
]
|
187 |
+
);
|
188 |
+
|
189 |
+
/*Pin Title Color*/
|
190 |
+
$this->add_control('premium_maps_pin_title_color',
|
191 |
+
[
|
192 |
+
'label' => esc_html__('Pin Title Color', 'premium_elementor'),
|
193 |
+
'type' => Controls_Manager::COLOR,
|
194 |
+
'selectors' => [
|
195 |
+
'{{WRAPPER}} .premium-maps-pin-title' => 'color: {{VALUE}};',
|
196 |
+
]
|
197 |
+
]
|
198 |
+
);
|
199 |
+
|
200 |
+
$this->add_group_control(
|
201 |
+
Group_Control_Typography::get_type(),
|
202 |
+
[
|
203 |
+
'name' => 'pin_title_typography',
|
204 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
205 |
+
'selector' => '{{WRAPPER}} .premium-maps-pin-title',
|
206 |
+
]
|
207 |
+
);
|
208 |
+
|
209 |
+
/*Pin Title Padding*/
|
210 |
+
$this->add_responsive_control('premium_maps_pin_title_padding',
|
211 |
+
[
|
212 |
+
'label' => esc_html__('Padding', 'premium_elementor'),
|
213 |
+
'type' => Controls_Manager::DIMENSIONS,
|
214 |
+
'size_units' => ['px', 'em', '%'],
|
215 |
+
'selectors' => [
|
216 |
+
'{{WRAPPER}} .premium-maps-pin-title' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
217 |
+
]
|
218 |
+
]
|
219 |
+
);
|
220 |
+
|
221 |
+
/*Pin Title ALign*/
|
222 |
+
$this->add_responsive_control('premium_maps_pin_title_align',
|
223 |
+
[
|
224 |
+
'label' => esc_html__( 'Text Align', 'elementor' ),
|
225 |
+
'type' => Controls_Manager::CHOOSE,
|
226 |
+
'options' => [
|
227 |
+
'left' => [
|
228 |
+
'title'=> esc_html__( 'Left', 'elementor' ),
|
229 |
+
'icon' => 'fa fa-align-left',
|
230 |
+
],
|
231 |
+
'center' => [
|
232 |
+
'title'=> esc_html__( 'Center', 'elementor' ),
|
233 |
+
'icon' => 'fa fa-align-center',
|
234 |
+
],
|
235 |
+
'right' => [
|
236 |
+
'title'=> esc_html__( 'Right', 'elementor' ),
|
237 |
+
'icon' => 'fa fa-align-right',
|
238 |
+
],
|
239 |
+
],
|
240 |
+
'default' => 'center',
|
241 |
+
'selectors' => [
|
242 |
+
'{{WRAPPER}} .premium-maps-pin-title' => 'text-align: {{VALUE}};',
|
243 |
+
],
|
244 |
+
]
|
245 |
+
);
|
246 |
+
|
247 |
+
/*End Title Style Section*/
|
248 |
+
$this->end_controls_section();
|
249 |
+
|
250 |
+
/*Start Pin Style Section*/
|
251 |
+
$this->start_controls_section('premium_maps_pin_text_style',
|
252 |
+
[
|
253 |
+
'label' => esc_html__('Pin Text Style', 'premium_elementor'),
|
254 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
255 |
+
]
|
256 |
+
);
|
257 |
+
|
258 |
+
$this->add_control('premium_maps_pin_text_color',
|
259 |
+
[
|
260 |
+
'label' => esc_html__('Pin Description Color', 'premium_elementor'),
|
261 |
+
'type' => Controls_Manager::COLOR,
|
262 |
+
'selectors' => [
|
263 |
+
'{{WRAPPER}} .premium-maps-pin-text' => 'color: {{VALUE}};',
|
264 |
+
]
|
265 |
+
]
|
266 |
+
);
|
267 |
+
|
268 |
+
$this->add_group_control(
|
269 |
+
Group_Control_Typography::get_type(),
|
270 |
+
[
|
271 |
+
'name' => 'pin_text_typo',
|
272 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
273 |
+
'selector' => '{{WRAPPER}} .premium-maps-pin-text',
|
274 |
+
]
|
275 |
+
);
|
276 |
+
|
277 |
+
$this->add_responsive_control('premium_maps_pin_text_padding',
|
278 |
+
[
|
279 |
+
'label' => esc_html__('Padding', 'premium_elementor'),
|
280 |
+
'type' => Controls_Manager::DIMENSIONS,
|
281 |
+
'size_units' => ['px', 'em', '%'],
|
282 |
+
'selectors' => [
|
283 |
+
'{{WRAPPER}} .premium-maps-pin-text' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
284 |
+
]
|
285 |
+
]
|
286 |
+
);
|
287 |
+
|
288 |
+
/*Pin Title ALign*/
|
289 |
+
$this->add_responsive_control('premium_maps_pin_description_align',
|
290 |
+
[
|
291 |
+
'label' => esc_html__( 'Text Align', 'elementor' ),
|
292 |
+
'type' => Controls_Manager::CHOOSE,
|
293 |
+
'options' => [
|
294 |
+
'left' => [
|
295 |
+
'title'=> esc_html__( 'Left', 'elementor' ),
|
296 |
+
'icon' => 'fa fa-align-left',
|
297 |
+
],
|
298 |
+
'center' => [
|
299 |
+
'title'=> esc_html__( 'Center', 'elementor' ),
|
300 |
+
'icon' => 'fa fa-align-center',
|
301 |
+
],
|
302 |
+
'right' => [
|
303 |
+
'title'=> esc_html__( 'Right', 'elementor' ),
|
304 |
+
'icon' => 'fa fa-align-right',
|
305 |
+
],
|
306 |
+
],
|
307 |
+
'default' => 'center',
|
308 |
+
'selectors' => [
|
309 |
+
'{{WRAPPER}} .premium-maps-pin-text h6' => 'text-align: {{VALUE}};',
|
310 |
+
],
|
311 |
+
]
|
312 |
+
);
|
313 |
+
|
314 |
+
/*End Pin Style Section*/
|
315 |
+
$this->end_controls_section();
|
316 |
+
}
|
317 |
+
|
318 |
+
protected function render($instance = [])
|
319 |
+
{
|
320 |
+
// get our input from the widget settings.
|
321 |
+
$settings = $this->get_settings();
|
322 |
+
?>
|
323 |
+
<div class="premium-maps-container">
|
324 |
+
<div id="premium-maps-map-<?php echo esc_attr($this->get_id()); ?>" class="premium_maps_map_height"></div>
|
325 |
+
</div>
|
326 |
+
<script type="text/javascript">
|
327 |
+
jQuery(document).ready(function($) {
|
328 |
+
'use strict';
|
329 |
+
$("#premium-maps-map-<?php echo esc_attr($this->get_id()); ?>").goMap({
|
330 |
+
<?php if ( ! empty( $settings['map_center_address'] ) ) : ?>address: '<?php echo esc_attr($settings['map_center_address'] ); ?>',<?php endif; ?>
|
331 |
+
markers: [
|
332 |
+
<?php foreach ( $settings['premium_maps_map_pins'] as $item ) : ?>{
|
333 |
+
address: '<?php echo esc_attr( $item['map_address'] ); ?>">',
|
334 |
+
<?php if ( ! empty( $item['map_address_custom_pin'] ) ) : ?>
|
335 |
+
icon: '<?php $image = $item['map_address_custom_pin']; $imageurl = wp_get_attachment_image_src($image['id'], 'large'); ?><?php echo esc_attr($imageurl[0]);?>',<?php endif; ?>
|
336 |
+
<?php if ( ! empty( $item['map_title'] ) ) : ?>
|
337 |
+
html: {content: "<div class='premium-maps-map-pin'><h6 class='premium-maps-pin-title'><?php echo esc_attr($item['map_title'] ); ?></h6><div class='premium-maps-pin-text'><h6><?php echo wp_kses( __($item['map_content'] ), true); ?></h6></div></div>",
|
338 |
+
popup:<?php if ( ! empty( $item['map_marker_open'] ) ) : ?>true<?php else: ?>false<?php endif; ?>}<?php endif; ?>},
|
339 |
+
<?php endforeach; ?>
|
340 |
+
],
|
341 |
+
scrollwheel: <?php if ( ! empty( $settings['premium_maps_map_option_mapscroll'] ) ) : ?>true<?php else: ?>false<?php endif; ?>, disableDoubleClickZoom: false, zoom: <?php $width = $this->get_settings( 'premium_maps_map_zoom' ); echo esc_attr($width['size']); ?>, maptype: '<?php echo esc_attr($settings['premium_maps_map_type'] ); ?>', streetViewControl:<?php if ( ! empty( $settings['premium_maps_map_option_streeview'] ) ) : ?>true<?php else: ?>false<?php endif; ?>, oneInfoWindow: <?php if ( ! empty( $settings['premium_maps_map_option_single_pin'] ) ) : ?>true<?php else: ?>false<?php endif; ?>, mapTypeControl:<?php if ( ! empty( $settings['premium_maps_map_option_maptype_control'] ) ) : ?>true<?php else: ?>false<?php endif; ?>
|
342 |
+
});
|
343 |
+
});
|
344 |
+
</script>
|
345 |
+
|
346 |
+
|
347 |
+
<?php
|
348 |
+
}
|
349 |
+
}
|
350 |
+
Plugin::instance()->widgets_manager->register_widget_type(new Premium_Maps_Widget());
|
widgets/premium-modalbox.php
ADDED
@@ -0,0 +1,702 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
|
5 |
+
|
6 |
+
class Premium_Modal_Box_Widget extends Widget_Base
|
7 |
+
{
|
8 |
+
protected $templateInstance;
|
9 |
+
|
10 |
+
public function getTemplateInstance() {
|
11 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_name() {
|
15 |
+
return 'premium-addon-modal-box';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
return esc_html__('Premium Modal Box', 'premium_elementor');
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_icon() {
|
23 |
+
return 'pa-pa-spin';
|
24 |
+
}
|
25 |
+
|
26 |
+
public function get_categories() {
|
27 |
+
return [ 'premium-elements' ];
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
// Adding the controls fields for the premium modal box
|
32 |
+
// This will controls the animation, colors and background, dimensions etc
|
33 |
+
protected function _register_controls() {
|
34 |
+
|
35 |
+
/* Start Box Content Section */
|
36 |
+
|
37 |
+
$this->start_controls_section('premium_modal_box_selector_content_section',
|
38 |
+
[
|
39 |
+
'label' => esc_html__('Selector Content', 'premium_elementor'),
|
40 |
+
]
|
41 |
+
);
|
42 |
+
|
43 |
+
/*Modal Box Display On*/
|
44 |
+
$this->add_control('premium_modal_box_display_on',
|
45 |
+
[
|
46 |
+
'label' => esc_html__('Display Modal On', 'premium_elementor'),
|
47 |
+
'type' => Controls_Manager::SELECT,
|
48 |
+
'options' => [
|
49 |
+
'button' => esc_html('Button','premium-elementor'),
|
50 |
+
'image' => esc_html('Image','premium-elementor'),
|
51 |
+
'text' => esc_html('Text','premium-elementor'),
|
52 |
+
'pageload'=> esc_html('On Page Load','premium-elementor'),
|
53 |
+
],
|
54 |
+
'label_block' => true,
|
55 |
+
'default' => 'button',
|
56 |
+
]
|
57 |
+
);
|
58 |
+
|
59 |
+
/*Button Size*/
|
60 |
+
$this->add_control('premium_modal_box_button_size',
|
61 |
+
[
|
62 |
+
'label' => esc_html__('Button Size', 'premium_elementor'),
|
63 |
+
'type' => Controls_Manager::SELECT,
|
64 |
+
'options' => [
|
65 |
+
'sm' => esc_html('Small','premium-elementor'),
|
66 |
+
'md' => esc_html('Medium','premium-elementor'),
|
67 |
+
'lg' => esc_html('Large','premium-elementor'),
|
68 |
+
'block' => esc_html('Block','premium-elementor'),
|
69 |
+
],
|
70 |
+
'label_block' => true,
|
71 |
+
'default' => 'sm',
|
72 |
+
'condition' => [
|
73 |
+
'premium_modal_box_display_on' => 'button'
|
74 |
+
],
|
75 |
+
]
|
76 |
+
);
|
77 |
+
|
78 |
+
/*Button Text*/
|
79 |
+
$this->add_control('premium_modal_box_button_text',
|
80 |
+
[
|
81 |
+
'label' => esc_html__('Button Text', 'premium_elementor'),
|
82 |
+
'default' => 'Open Modal',
|
83 |
+
'type' => Controls_Manager::TEXT,
|
84 |
+
'label_block' => true,
|
85 |
+
'condition' => [
|
86 |
+
'premium_modal_box_display_on' => 'button'
|
87 |
+
],
|
88 |
+
]
|
89 |
+
);
|
90 |
+
|
91 |
+
/*Image Source*/
|
92 |
+
$this->add_control('premium_modal_box_image_src',
|
93 |
+
[
|
94 |
+
'label' => esc_html__('Choose Image', 'premium_elementor'),
|
95 |
+
'type' => Controls_Manager::MEDIA,
|
96 |
+
'default' => [
|
97 |
+
'url' => Utils::get_placeholder_image_src(),
|
98 |
+
],
|
99 |
+
'condition' => [
|
100 |
+
'premium_modal_box_display_on' => 'image',
|
101 |
+
],
|
102 |
+
'label_block' => true,
|
103 |
+
]
|
104 |
+
);
|
105 |
+
|
106 |
+
/*Text Selector*/
|
107 |
+
$this->add_control('premium_modal_box_selector_text',
|
108 |
+
[
|
109 |
+
'label' => esc_html__('Enter Text', 'premium_elementor'),
|
110 |
+
'type' => Controls_Manager::TEXT,
|
111 |
+
'label_block' => true,
|
112 |
+
'default' => esc_html__('Open Modal', 'premium_elementor'),
|
113 |
+
'condition' => [
|
114 |
+
'premium_modal_box_display_on' => 'text',
|
115 |
+
]
|
116 |
+
]
|
117 |
+
);
|
118 |
+
|
119 |
+
/*On Load Trigger Delay*/
|
120 |
+
$this->add_control('premium_modal_box_popup_delay',
|
121 |
+
[
|
122 |
+
'label' => esc_html__('Delay in Popup Display','premium_elementor'),
|
123 |
+
'type' => Controls_Manager::NUMBER,
|
124 |
+
'default' => 1,
|
125 |
+
'label_block' => true,
|
126 |
+
'condition' => [
|
127 |
+
'premium_modal_box_display_on' => 'pageload',
|
128 |
+
]
|
129 |
+
]
|
130 |
+
);
|
131 |
+
|
132 |
+
/*Alignment*/
|
133 |
+
$this->add_responsive_control('premium_modal_box_selector_align',
|
134 |
+
[
|
135 |
+
'label' => __( 'Selector Alignment', 'premium_elementor' ),
|
136 |
+
'type' => Controls_Manager::CHOOSE,
|
137 |
+
'options' => [
|
138 |
+
'left' => [
|
139 |
+
'title' => __( 'Left', 'premium_elementor' ),
|
140 |
+
'icon' => 'fa fa-align-left',
|
141 |
+
],
|
142 |
+
'center' => [
|
143 |
+
'title' => __( 'Center', 'premium_elementor' ),
|
144 |
+
'icon' => 'fa fa-align-center',
|
145 |
+
],
|
146 |
+
'right' => [
|
147 |
+
'title' => __( 'Right', 'premium_elementor' ),
|
148 |
+
'icon' => 'fa fa-align-right',
|
149 |
+
],
|
150 |
+
],
|
151 |
+
'default' => 'center',
|
152 |
+
'selectors' => [
|
153 |
+
'{{WRAPPER}} .premium-modal-box-selector-container' => 'text-align: {{VALUE}};',
|
154 |
+
],
|
155 |
+
'default' => '',
|
156 |
+
]
|
157 |
+
);
|
158 |
+
|
159 |
+
|
160 |
+
$this->end_controls_section();
|
161 |
+
|
162 |
+
$this->start_controls_section('premium_modal_box_content_section',
|
163 |
+
[
|
164 |
+
'label' => esc_html__('Box Content', 'premium_elementor'),
|
165 |
+
]
|
166 |
+
);
|
167 |
+
|
168 |
+
/*Icon To Display*/
|
169 |
+
$this->add_control('premium_modal_box_icon_selection',
|
170 |
+
[
|
171 |
+
'label' => esc_html__('Icon to Display', 'premium_elementor'),
|
172 |
+
'type' => Controls_Manager::SELECT,
|
173 |
+
'options' => [
|
174 |
+
'noicon' => esc_html('No Icon'),
|
175 |
+
'fonticon'=> esc_html('Font Awesome Icon'),
|
176 |
+
'image' => esc_html('Custom Image Icon'),
|
177 |
+
],
|
178 |
+
'default' => 'noicon',
|
179 |
+
'label_block' => true
|
180 |
+
]
|
181 |
+
);
|
182 |
+
|
183 |
+
/*Font Awesome Icon*/
|
184 |
+
$this->add_control('premium_modal_box_font_icon',
|
185 |
+
[
|
186 |
+
'label' => esc_html__('Font Awesome Icon', 'premium_elementor'),
|
187 |
+
'type' => Controls_Manager::ICON,
|
188 |
+
'condition' => [
|
189 |
+
'premium_modal_box_icon_selection' => 'fonticon',
|
190 |
+
],
|
191 |
+
'label_block' => true,
|
192 |
+
]
|
193 |
+
);
|
194 |
+
|
195 |
+
/*Image Icon*/
|
196 |
+
$this->add_control('premium_modal_box_image_icon',
|
197 |
+
[
|
198 |
+
'label' => esc_html__('Custom Image Icon', 'premium_elementor'),
|
199 |
+
'type' => Controls_Manager::MEDIA,
|
200 |
+
'default' => [
|
201 |
+
'url' => Utils::get_placeholder_image_src(),
|
202 |
+
],
|
203 |
+
'condition' => [
|
204 |
+
'premium_modal_box_icon_selection' => 'image',
|
205 |
+
],
|
206 |
+
'label_block' => true,
|
207 |
+
]
|
208 |
+
);
|
209 |
+
|
210 |
+
/*Modal Box Title*/
|
211 |
+
$this->add_control('premium_modal_box_title',
|
212 |
+
[
|
213 |
+
'label' => esc_html__('Modal Box Title', 'premium_elementor'),
|
214 |
+
'default' => 'Modal Box Title',
|
215 |
+
'type' => Controls_Manager::TEXT,
|
216 |
+
'label_block' => true,
|
217 |
+
]
|
218 |
+
);
|
219 |
+
|
220 |
+
/*Modal Box Content*/
|
221 |
+
$this->add_control('premium_modal_box_content',
|
222 |
+
[
|
223 |
+
'label' => esc_html__('Modal Box Content', 'premium_elementoror'),
|
224 |
+
'type' => Controls_Manager::WYSIWYG,
|
225 |
+
'default' => 'Modal Box Content',
|
226 |
+
'selector' => '{{WRAPPER}} .premium-modal-box-modal-body',
|
227 |
+
]
|
228 |
+
);
|
229 |
+
|
230 |
+
/*Modal Size*/
|
231 |
+
$this->add_control('premium_modal_box_modal_size',
|
232 |
+
[
|
233 |
+
'label' => esc_html__('Modal Width', 'premium_elementor'),
|
234 |
+
'type' => Controls_Manager::SLIDER,
|
235 |
+
'size_units' => ['px', '%', 'em'],
|
236 |
+
'range' => [
|
237 |
+
'px' => [
|
238 |
+
'min' => 50,
|
239 |
+
'max' => 1000,
|
240 |
+
]
|
241 |
+
],
|
242 |
+
'label_block' => true,
|
243 |
+
'selectors' => [
|
244 |
+
'{{WRAPPER}} .premium-modal-box-modal-dialog' => 'width: {{SIZE}}{{UNIT}};',
|
245 |
+
]
|
246 |
+
]
|
247 |
+
);
|
248 |
+
|
249 |
+
/*Content Box Border*/
|
250 |
+
$this->add_group_control(
|
251 |
+
Group_Control_Border::get_type(),
|
252 |
+
[
|
253 |
+
'name' => 'contentborder',
|
254 |
+
'selector' => '{{WRAPPER}} .premium-modal-box-modal-content',
|
255 |
+
]
|
256 |
+
);
|
257 |
+
|
258 |
+
/*Border Radius*/
|
259 |
+
$this->add_control('premium_modal_box_border_radius',
|
260 |
+
[
|
261 |
+
'label' => esc_html__('Border Radius', 'premium_elementor'),
|
262 |
+
'type' => Controls_Manager::SLIDER,
|
263 |
+
'size_units' => ['px', '%', 'em'],
|
264 |
+
'selectors' => [
|
265 |
+
'{{WRAPPER}} .premium-modal-box-modal-content' => 'border-radius: {{SIZE}}{{UNIT}};',
|
266 |
+
]
|
267 |
+
]
|
268 |
+
);
|
269 |
+
|
270 |
+
/*Upper Close Button*/
|
271 |
+
$this->add_control('premium_modal_box_upper_close',
|
272 |
+
[
|
273 |
+
'label' => esc_html__('Upper Close Button', 'premium_elementor'),
|
274 |
+
'type' => Controls_Manager::SWITCHER,
|
275 |
+
'default' => 'yes',
|
276 |
+
]
|
277 |
+
);
|
278 |
+
|
279 |
+
/*Lower Close Button*/
|
280 |
+
$this->add_control('premium_modal_box_lower_close',
|
281 |
+
[
|
282 |
+
'label' => esc_html__('Lower Close Button', 'premium_elementor'),
|
283 |
+
'type' => Controls_Manager::SWITCHER,
|
284 |
+
'default' => 'yes',
|
285 |
+
]
|
286 |
+
);
|
287 |
+
|
288 |
+
/*End Box Content Section*/
|
289 |
+
$this->end_controls_section();
|
290 |
+
|
291 |
+
/*Start Styling Section*/
|
292 |
+
|
293 |
+
/*Selector Style*/
|
294 |
+
$this->start_controls_section('premium_modal_box_selector_style_section',
|
295 |
+
[
|
296 |
+
'label' => esc_html__('Selector Style', 'premium_elementor'),
|
297 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
298 |
+
]
|
299 |
+
);
|
300 |
+
|
301 |
+
$this->start_controls_tabs('premium_modal_box_button_style');
|
302 |
+
|
303 |
+
/*Button Color*/
|
304 |
+
$this->start_controls_tab('premium_modal_box_tab_button_normal',
|
305 |
+
[
|
306 |
+
'label' => esc_html__( 'Normal', 'premium_elementor' ),
|
307 |
+
'condition' => [
|
308 |
+
'premium_modal_box_display_on' => 'button',
|
309 |
+
]
|
310 |
+
]
|
311 |
+
);
|
312 |
+
|
313 |
+
/*Button Background Color*/
|
314 |
+
$this->add_control('premium_modal_box_button_background',
|
315 |
+
[
|
316 |
+
'label' => esc_html__('Background Color', 'premium_elementor'),
|
317 |
+
'type' => Controls_Manager::COLOR,
|
318 |
+
'selectors' => [
|
319 |
+
'{{WRAPPER}} .premium-modal-box-selector-container .btn-info' => 'background:{{VALUE}};',
|
320 |
+
],
|
321 |
+
'condition' => [
|
322 |
+
'premium_modal_box_display_on' => 'button',
|
323 |
+
]
|
324 |
+
]
|
325 |
+
);
|
326 |
+
|
327 |
+
/*Button Background Color*/
|
328 |
+
$this->add_control('premium_modal_box_button_text_background',
|
329 |
+
[
|
330 |
+
'label' => esc_html__('Text Color', 'premium_elementor'),
|
331 |
+
'type' => Controls_Manager::COLOR,
|
332 |
+
'default' => '#fff',
|
333 |
+
'selectors' => [
|
334 |
+
'{{WRAPPER}} .premium-modal-box-selector-container .btn-info' => 'color:{{VALUE}};',
|
335 |
+
],
|
336 |
+
'condition' => [
|
337 |
+
'premium_modal_box_display_on' => 'button',
|
338 |
+
]
|
339 |
+
]
|
340 |
+
);
|
341 |
+
|
342 |
+
$this->end_controls_tab();
|
343 |
+
|
344 |
+
$this->start_controls_tab('premium_modal_box_tab_button_hover',
|
345 |
+
[
|
346 |
+
'label' => esc_html__('Hover', 'premium_elementor'),
|
347 |
+
'condition' => [
|
348 |
+
'premium_modal_box_display_on' => 'button',
|
349 |
+
]
|
350 |
+
]
|
351 |
+
);
|
352 |
+
|
353 |
+
/*Button Hover Background Color*/
|
354 |
+
$this->add_control('premium_modal_box_button_hover_background',
|
355 |
+
[
|
356 |
+
'label' => esc_html__('Background Color', 'premium_elementor'),
|
357 |
+
'type' => Controls_Manager::COLOR,
|
358 |
+
'selectors' => [
|
359 |
+
'{{WRAPPER}} .premium-modal-box-selector-container .btn-info:hover' => 'background: {{VALUE}};',
|
360 |
+
],
|
361 |
+
]
|
362 |
+
);
|
363 |
+
|
364 |
+
/*Button Background Color*/
|
365 |
+
$this->add_control('premium_modal_box_button_text_hover_background',
|
366 |
+
[
|
367 |
+
'label' => esc_html__('Text Color', 'premium_elementor'),
|
368 |
+
'type' => Controls_Manager::COLOR,
|
369 |
+
'selectors' => [
|
370 |
+
'{{WRAPPER}} .premium-modal-box-selector-container .btn-info:hover' => 'color: {{VALUE}};',
|
371 |
+
],
|
372 |
+
]
|
373 |
+
);
|
374 |
+
|
375 |
+
$this->end_controls_tab();
|
376 |
+
|
377 |
+
$this->end_controls_tabs();
|
378 |
+
|
379 |
+
/*Button Border*/
|
380 |
+
$this->add_group_control(
|
381 |
+
Group_Control_Border::get_type(),
|
382 |
+
[
|
383 |
+
'name' => 'button_border',
|
384 |
+
'selector' => '{{WRAPPER}} .premium-modal-box-button-selector ',
|
385 |
+
'condition' => [
|
386 |
+
'premium_modal_box_display_on' => 'button'
|
387 |
+
]
|
388 |
+
]
|
389 |
+
);
|
390 |
+
|
391 |
+
/*Button Border Radius*/
|
392 |
+
$this->add_control('premium_modal_box_button_border_radius',
|
393 |
+
[
|
394 |
+
'label' => esc_html__('Border Radius', 'premium_elementor'),
|
395 |
+
'type' => Controls_Manager::SLIDER,
|
396 |
+
'size_units' => ['px', '%', 'em'],
|
397 |
+
'selectors' => [
|
398 |
+
'{{WRAPPER}} .premium-modal-box-button-selector ' => 'border-radius:{{SIZE}}{{UNIT}};',
|
399 |
+
],
|
400 |
+
'condition' => [
|
401 |
+
'premium_modal_box_display_on' => 'button'
|
402 |
+
]
|
403 |
+
]
|
404 |
+
);
|
405 |
+
|
406 |
+
/*Image Border*/
|
407 |
+
$this->add_group_control(
|
408 |
+
Group_Control_Border::get_type(),
|
409 |
+
[
|
410 |
+
'name' => 'imageborder',
|
411 |
+
'selector' => '{{WRAPPER}} .premium-modal-box-img-selector',
|
412 |
+
'condition' => [
|
413 |
+
'premium_modal_box_display_on' => 'image'
|
414 |
+
]
|
415 |
+
]
|
416 |
+
);
|
417 |
+
|
418 |
+
/*Image Border Radius*/
|
419 |
+
$this->add_control('premium_modal_box_image_border_radius',
|
420 |
+
[
|
421 |
+
'label' => esc_html__('Border Radius', 'premium_elementor'),
|
422 |
+
'type' => Controls_Manager::SLIDER,
|
423 |
+
'size_units' => ['px', '%', 'em'],
|
424 |
+
'selectors' => [
|
425 |
+
'{{WRAPPER}} .premium-modal-box-img-selector ' => 'border-radius:{{SIZE}}{{UNIT}};',
|
426 |
+
],
|
427 |
+
'condition' => [
|
428 |
+
'premium_modal_box_display_on' => 'image'
|
429 |
+
]
|
430 |
+
]
|
431 |
+
);
|
432 |
+
|
433 |
+
$this->end_controls_section();
|
434 |
+
|
435 |
+
/*Modal Box Style*/
|
436 |
+
$this->start_controls_section('premium_modal_box_general_settings',
|
437 |
+
[
|
438 |
+
'label' => esc_html__('Modal Box Style', 'premium_elementor'),
|
439 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
440 |
+
]
|
441 |
+
);
|
442 |
+
|
443 |
+
/*Modal Margin Top*/
|
444 |
+
$this->add_control('premium_modal_box_margin_top',
|
445 |
+
[
|
446 |
+
'label' => esc_html__('Margin Top','premium_elementor'),
|
447 |
+
'type' => Controls_Manager::SLIDER,
|
448 |
+
'size_units' => ['px', '%' , 'em'],
|
449 |
+
'selectors' => [
|
450 |
+
'{{WRAPPER}} .premium-modal-box-modal-dialog' => 'margin-top: {{SIZE}}{{UNIT}};',
|
451 |
+
]
|
452 |
+
]
|
453 |
+
);
|
454 |
+
|
455 |
+
/*Modal Margin Bottom*/
|
456 |
+
$this->add_control('premium_modal_box_margin_bottom',
|
457 |
+
[
|
458 |
+
'label' => esc_html__('Margin Bottom', 'premium_elementor'),
|
459 |
+
'type' => Controls_Manager::SLIDER,
|
460 |
+
'size_units' => ['px', '%', 'em'],
|
461 |
+
'selectors' => [
|
462 |
+
'{{WRAPPER}} .premium-modal-box-modal-dialog' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
463 |
+
]
|
464 |
+
]
|
465 |
+
);
|
466 |
+
|
467 |
+
/*Modal Background Color*/
|
468 |
+
$this->add_control('premium_modal_box_modal_background',
|
469 |
+
[
|
470 |
+
'label' => esc_html__('Modal Box Background Color', 'premium_elementor'),
|
471 |
+
'type' => Controls_Manager::COLOR,
|
472 |
+
'selectors' => [
|
473 |
+
'{{WRAPPER}} .premium-modal-box-modal' => 'background:{{VALUE}};',
|
474 |
+
]
|
475 |
+
]
|
476 |
+
);
|
477 |
+
|
478 |
+
/*Header Background Color*/
|
479 |
+
$this->add_control('premium_modal_box_header_background',
|
480 |
+
[
|
481 |
+
'label' => esc_html__('Header Background Color', 'premium_elementor'),
|
482 |
+
'type' => Controls_Manager::COLOR,
|
483 |
+
'selectors' => [
|
484 |
+
'{{WRAPPER}} .premium-modal-box-modal-header' => 'background: {{VALUE}};',
|
485 |
+
]
|
486 |
+
]
|
487 |
+
);
|
488 |
+
|
489 |
+
/*Content Background Color*/
|
490 |
+
$this->add_control('premium_modal_box_content_background',
|
491 |
+
[
|
492 |
+
'label' => esc_html__('Content Background Color', 'premium_elementor'),
|
493 |
+
'type' => Controls_Manager::COLOR,
|
494 |
+
'selectors' => [
|
495 |
+
'{{WRAPPER}} .premium-modal-box-modal-body' => 'background: {{VALUE}};',
|
496 |
+
]
|
497 |
+
]
|
498 |
+
);
|
499 |
+
|
500 |
+
/*Footer Background Color*/
|
501 |
+
$this->add_control('premium_modal_box_footer_background',
|
502 |
+
[
|
503 |
+
'label' => esc_html__('Footer Background Color', 'premium_elementor'),
|
504 |
+
'type' => Controls_Manager::COLOR,
|
505 |
+
'selectors' => [
|
506 |
+
'{{WRAPPER}} .premium-modal-box-modal-footer' => 'background: {{VALUE}};',
|
507 |
+
]
|
508 |
+
]
|
509 |
+
);
|
510 |
+
|
511 |
+
/*End General Settings Section*/
|
512 |
+
$this->end_controls_section();
|
513 |
+
|
514 |
+
/*Start Header Seettings Section*/
|
515 |
+
$this->start_controls_section('premium_modal_box_header_settings',
|
516 |
+
[
|
517 |
+
'label' => esc_html__('Header Text Settings', 'premium_elementor'),
|
518 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
519 |
+
]
|
520 |
+
);
|
521 |
+
|
522 |
+
/*Header Text Color*/
|
523 |
+
$this->add_control('premium_modal_box_header_text_color',
|
524 |
+
[
|
525 |
+
'label' => esc_html__('Text Color', 'premium_elementor'),
|
526 |
+
'type' => Controls_Manager::COLOR,
|
527 |
+
'selectors' => [
|
528 |
+
'{{WRAPPER}} .premium-modal-box-modal-title' => 'color: {{VALUE}};',
|
529 |
+
]
|
530 |
+
]
|
531 |
+
);
|
532 |
+
|
533 |
+
/*Header Text Typography*/
|
534 |
+
$this->add_group_control(
|
535 |
+
Group_Control_Typography::get_type(),
|
536 |
+
[
|
537 |
+
'name' => 'headertext',
|
538 |
+
'label' => esc_html__('Typography', 'premium_elementor'),
|
539 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
540 |
+
'selector' => '{{WRAPPER}} .premium-modal-box-modal-title',
|
541 |
+
]
|
542 |
+
);
|
543 |
+
|
544 |
+
/*End Header Settings Section*/
|
545 |
+
$this->end_controls_section();
|
546 |
+
|
547 |
+
/*Start Close Button Section*/
|
548 |
+
$this->start_controls_section('premium_modal_box_upper_close_button_section',
|
549 |
+
[
|
550 |
+
'label' => esc_html__('Upper Close Button Settings', 'premium_elementor'),
|
551 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
552 |
+
'condition' => [
|
553 |
+
'premium_modal_box_upper_close' => 'yes',
|
554 |
+
]
|
555 |
+
]
|
556 |
+
);
|
557 |
+
|
558 |
+
/*Close Button Size*/
|
559 |
+
$this->add_control('premium_modal_box_upper_close_button_size',
|
560 |
+
[
|
561 |
+
'label' => esc_html__('Button Size', 'premium_elementor'),
|
562 |
+
'type' => Controls_Manager::SLIDER,
|
563 |
+
'size_units' => ['px', '%' ,'em'],
|
564 |
+
'selectors' => [
|
565 |
+
'{{WRAPPER}} .premium-modal-box-modal-header button' => 'font-size: {{SIZE}}{{UNIT}};',
|
566 |
+
]
|
567 |
+
]
|
568 |
+
);
|
569 |
+
|
570 |
+
/*Close Button Background Color*/
|
571 |
+
$this->add_control('premium_modal_box_upper_close_button_background_color',
|
572 |
+
[
|
573 |
+
'label' => esc_html__('Background Color', 'premium_elementor'),
|
574 |
+
'type' => Controls_Manager::COLOR,
|
575 |
+
'selectors' => [
|
576 |
+
'{{WRAPPER}} .premium-modal-box-close-button-container' => 'background:{{VALUE}};',
|
577 |
+
]
|
578 |
+
]
|
579 |
+
);
|
580 |
+
|
581 |
+
/*End Upper Close Button Style Section*/
|
582 |
+
$this->end_controls_section();
|
583 |
+
|
584 |
+
/*Start Close Button Section*/
|
585 |
+
$this->start_controls_section('premium_modal_box_lower_close_button_section',
|
586 |
+
[
|
587 |
+
'label' => esc_html__('Lower Close Button Settings', 'premium_elementor'),
|
588 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
589 |
+
'condition' => [
|
590 |
+
'premium_modal_box_upper_close' => 'yes',
|
591 |
+
]
|
592 |
+
]
|
593 |
+
);
|
594 |
+
|
595 |
+
/*Close Button Size*/
|
596 |
+
$this->add_control('premium_modal_box_lower_close_button_width',
|
597 |
+
[
|
598 |
+
'label' => esc_html__('Button Width (PX)', 'premium_elementor'),
|
599 |
+
'type' => Controls_Manager::SLIDER,
|
600 |
+
'size_units' => ['px', '%', 'em'],
|
601 |
+
'selectors' => [
|
602 |
+
'{{WRAPPER}} .premium-modal-box-modal-lower-close' => 'min-width: {{SIZE}}{{UNIT}};',
|
603 |
+
]
|
604 |
+
]
|
605 |
+
);
|
606 |
+
|
607 |
+
/*Close Button Background Color*/
|
608 |
+
$this->add_control('premium_modal_box_lower_close_button_background_color',
|
609 |
+
[
|
610 |
+
'label' => esc_html__('Background Color', 'premium_elementor'),
|
611 |
+
'type' => Controls_Manager::COLOR,
|
612 |
+
'selectors' => [
|
613 |
+
'{{WRAPPER}} .premium-modal-box-modal-lower-close' => 'background: {{VALUE}};',
|
614 |
+
]
|
615 |
+
]
|
616 |
+
);
|
617 |
+
|
618 |
+
/*Close Button Text Typography*/
|
619 |
+
$this->add_group_control(
|
620 |
+
Group_Control_Typography::get_type(),
|
621 |
+
[
|
622 |
+
'name' => 'lowerclose',
|
623 |
+
'label' => esc_html__('Typography', 'premium_elementor'),
|
624 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
625 |
+
'selector' => '{{WRAPPER}} .premium-modal-box-modal-lower-close',
|
626 |
+
]
|
627 |
+
);
|
628 |
+
|
629 |
+
/*End Lower Close Button Style Section*/
|
630 |
+
$this->end_controls_section();
|
631 |
+
|
632 |
+
}
|
633 |
+
|
634 |
+
protected function render($instance = [])
|
635 |
+
{
|
636 |
+
// get our input from the widget settings.
|
637 |
+
$settings = $this->get_settings();
|
638 |
+
?>
|
639 |
+
|
640 |
+
<div class="container premium-modal-box-container">
|
641 |
+
<!-- Trigger The Modal Box -->
|
642 |
+
<div class="premium-modal-box-selector-container">
|
643 |
+
<?php
|
644 |
+
if ( $settings['premium_modal_box_display_on'] === 'button' ) : ?>
|
645 |
+
<button type="button" class="premium-modal-box-button-selector btn btn-info <?php
|
646 |
+
if( $settings['premium_modal_box_button_size'] === 'sm' ) : echo "btn-sm";
|
647 |
+
elseif( $settings['premium_modal_box_button_size'] === 'md' ) : echo "btn-md";
|
648 |
+
elseif( $settings['premium_modal_box_button_size'] === 'lg' ) : echo "btn-lg";
|
649 |
+
elseif( $settings['premium_modal_box_button_size'] === 'block' ) : echo "btn-block"; endif; ?>" data-toggle="modal" data-target="#myModal-<?php echo esc_attr( $this->get_id() ); ?>"><?php echo $settings['premium_modal_box_button_text']; ?></button>
|
650 |
+
<?php elseif ( $settings['premium_modal_box_display_on'] === 'image' ) : ?>
|
651 |
+
<img class="premium-modal-box-img-selector" data-toggle="modal" data-target="#myModal-<?php echo esc_attr( $this->get_id() ); ?>" src="<?php echo $settings['premium_modal_box_image_src']['url'];?>">
|
652 |
+
<?php elseif($settings['premium_modal_box_display_on'] === 'text') : ?>
|
653 |
+
<span class="premium-modal-box-text-selector" data-toggle="modal" data-target="#myModal-<?php echo esc_attr( $this->get_id() ); ?>"><?php echo $settings['premium_modal_box_selector_text'];?></span>
|
654 |
+
<?php elseif ( $settings['premium_modal_box_display_on'] === 'pageload' ) : ?>
|
655 |
+
<script>
|
656 |
+
jQuery( document ).ready( function( $ ){
|
657 |
+
setTimeout( function(){
|
658 |
+
$( "#myModal-<?php echo esc_attr( $this->get_id() ); ?>" ).modal();
|
659 |
+
},<?php echo $settings['premium_modal_box_popup_delay'] * 1000; ?>);
|
660 |
+
});
|
661 |
+
</script>
|
662 |
+
<?php endif; ?>
|
663 |
+
</div>
|
664 |
+
|
665 |
+
|
666 |
+
<!-- Modal -->
|
667 |
+
<div class="modal fade premium-modal-box-modal" id="myModal-<?php echo $this->get_id(); ?>" role="dialog">
|
668 |
+
<div class="modal-dialog premium-modal-box-modal-dialog">
|
669 |
+
|
670 |
+
<!-- Modal content-->
|
671 |
+
<div class="modal-content premium-modal-box-modal-content">
|
672 |
+
<div class="modal-header premium-modal-box-modal-header">
|
673 |
+
<?php if ( $settings['premium_modal_box_upper_close'] === 'yes' ) : ?>
|
674 |
+
<div class="premium-modal-box-close-button-container">
|
675 |
+
<button type="button" class="close premium-modal-box-modal-close" data-dismiss="modal">×</button>
|
676 |
+
</div>
|
677 |
+
<?php endif; ?>
|
678 |
+
<h3 class="modal-title premium-modal-box-modal-title">
|
679 |
+
<?php if($settings['premium_modal_box_icon_selection'] === 'fonticon') : ?>
|
680 |
+
<i class="fa <?php echo $settings['premium_modal_box_font_icon'];?>"></i>
|
681 |
+
<?php elseif( $settings['premium_modal_box_icon_selection'] === 'image' ) : ?>
|
682 |
+
<img src="<?php echo $settings['premium_modal_box_image_icon']['url'];?>">
|
683 |
+
<?php endif; ?><?php echo $settings['premium_modal_box_title'];?></h3>
|
684 |
+
</div>
|
685 |
+
<div class="modal-body premium-modal-box-modal-body">
|
686 |
+
<?php echo $settings['premium_modal_box_content'];?>
|
687 |
+
</div>
|
688 |
+
<?php if ( $settings['premium_modal_box_lower_close'] === 'yes' ) : ?>
|
689 |
+
<div class="modal-footer premium-modal-box-modal-footer">
|
690 |
+
<button type="button" class="btn btn-default premium-modal-box-modal-lower-close" data-dismiss="modal">Close
|
691 |
+
</button>
|
692 |
+
</div>
|
693 |
+
<?php endif; ?>
|
694 |
+
</div>
|
695 |
+
</div>
|
696 |
+
</div>
|
697 |
+
</div>
|
698 |
+
|
699 |
+
<?php
|
700 |
+
}
|
701 |
+
}
|
702 |
+
Plugin::instance()->widgets_manager->register_widget_type(new Premium_Modal_Box_Widget());
|
widgets/premium-person.php
ADDED
@@ -0,0 +1,477 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
|
5 |
+
|
6 |
+
class Premium_Person_Widget extends Widget_Base
|
7 |
+
{
|
8 |
+
protected $templateInstance;
|
9 |
+
|
10 |
+
public function getTemplateInstance() {
|
11 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_name() {
|
15 |
+
return 'premium-addon-person';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
return esc_html__('Premium Person', 'premium_elementor');
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_icon() {
|
23 |
+
return 'pa-pa-person';
|
24 |
+
}
|
25 |
+
|
26 |
+
public function get_categories() {
|
27 |
+
return [ 'premium-elements' ];
|
28 |
+
}
|
29 |
+
|
30 |
+
// Adding the controls fields for the premium person
|
31 |
+
// This will controls the animation, colors and background, dimensions etc
|
32 |
+
protected function _register_controls() {
|
33 |
+
|
34 |
+
/* Start Content Section */
|
35 |
+
$this->start_controls_section('premium_person_general_settings',
|
36 |
+
[
|
37 |
+
'label' => esc_html__('General Settings', 'premium_elementor')
|
38 |
+
]
|
39 |
+
);
|
40 |
+
|
41 |
+
/*Person Image*/
|
42 |
+
$this->add_control('premium_person_image',
|
43 |
+
[
|
44 |
+
'label' => esc_html__('Person Photo', 'premium_elementor'),
|
45 |
+
'type' => Controls_Manager::MEDIA,
|
46 |
+
'default' => [
|
47 |
+
'url' => Utils::get_placeholder_image_src()
|
48 |
+
],
|
49 |
+
'label_block' => true
|
50 |
+
]
|
51 |
+
);
|
52 |
+
|
53 |
+
$this->add_control('premium_person_image_width',
|
54 |
+
[
|
55 |
+
'label' => esc_html__('Image Width', 'premium_elementor'),
|
56 |
+
'type' => Controls_Manager::SLIDER,
|
57 |
+
'description' => esc_html__('Enter image width in (PX, EM, %), default is 100%', 'premium_elementor'),
|
58 |
+
'size_units' => ['px', '%', 'em'],
|
59 |
+
'range' => [
|
60 |
+
'px' => [
|
61 |
+
'min' => 1,
|
62 |
+
'max' => 800,
|
63 |
+
],
|
64 |
+
'em' => [
|
65 |
+
'min' => 1,
|
66 |
+
'max' => 50,
|
67 |
+
],
|
68 |
+
],
|
69 |
+
'default' => [
|
70 |
+
'unit' => '%',
|
71 |
+
'size' => '100',
|
72 |
+
],
|
73 |
+
'label_block' => true,
|
74 |
+
'selectors' => [
|
75 |
+
'{{WRAPPER}} .premium-person-image-container img' => 'width: {{SIZE}}{{UNIT}};',
|
76 |
+
]
|
77 |
+
]
|
78 |
+
);
|
79 |
+
|
80 |
+
$this->add_control('premium_person_image_height',
|
81 |
+
[
|
82 |
+
'label' => esc_html__('Image Height', 'premium_elementor'),
|
83 |
+
'type' => Controls_Manager::SLIDER,
|
84 |
+
'description' => esc_html__('Choose image height in (PX, EM, %), default is 100%', 'premium_elementor'),
|
85 |
+
'range' => [
|
86 |
+
'px' => [
|
87 |
+
'min' => 1,
|
88 |
+
'max' => 900,
|
89 |
+
],
|
90 |
+
'em' => [
|
91 |
+
'min' => 1,
|
92 |
+
'max' => 55,
|
93 |
+
],
|
94 |
+
],
|
95 |
+
'size_units' => ['px', "em"],
|
96 |
+
'label_block' => true,
|
97 |
+
'selectors' => [
|
98 |
+
'{{WRAPPER}} .premium-person-image-container img' => 'height: {{SIZE}}{{UNIT}};',
|
99 |
+
]
|
100 |
+
]
|
101 |
+
);
|
102 |
+
|
103 |
+
/*Hover Image Effect*/
|
104 |
+
$this->add_control('premium_person_hover_image_effect',
|
105 |
+
[
|
106 |
+
'label' => esc_html__('Hover Image Effect', 'premium_elementor'),
|
107 |
+
'type' => Controls_Manager::SELECT,
|
108 |
+
'options' => [
|
109 |
+
'zoomin' => esc_html__('Zoom In', 'premium_elementor'),
|
110 |
+
'zoomout'=> esc_html__('Zoom Out', 'premium_elementor'),
|
111 |
+
'scale' => esc_html__('Scale', 'premium_elementor'),
|
112 |
+
'grayscale' => esc_html__('Grayscale', 'premium_elementor'),
|
113 |
+
'blur' => esc_html__('Blur', 'premium_elementor'),
|
114 |
+
],
|
115 |
+
'default' => 'zoomin',
|
116 |
+
'label_block' => true
|
117 |
+
]
|
118 |
+
);
|
119 |
+
|
120 |
+
/*Person Name*/
|
121 |
+
$this->add_control('premium_person_name',
|
122 |
+
[
|
123 |
+
'label' => esc_html__('Name', 'premium_elementor'),
|
124 |
+
'type' => Controls_Manager::TEXT,
|
125 |
+
'default' => esc_html__('John Frank', 'premium_elementor'),
|
126 |
+
'label_block' => true,
|
127 |
+
]
|
128 |
+
);
|
129 |
+
|
130 |
+
/*Name Tag*/
|
131 |
+
$this->add_control('premium_person_name_heading',
|
132 |
+
[
|
133 |
+
'label' => esc_html__('Name Tag', 'premium_elementor'),
|
134 |
+
'type' => Controls_Manager::SELECT,
|
135 |
+
'default' => 'h2',
|
136 |
+
'options' => [
|
137 |
+
'h1' => esc_html__('H1'),
|
138 |
+
'h2' => esc_html__('H2'),
|
139 |
+
'h3' => esc_html__('H3'),
|
140 |
+
'h4' => esc_html__('H4'),
|
141 |
+
'h5' => esc_html__('H5'),
|
142 |
+
'h6' => esc_html__('H6')
|
143 |
+
],
|
144 |
+
'label_block' => true,
|
145 |
+
]
|
146 |
+
);
|
147 |
+
|
148 |
+
/*Person Title*/
|
149 |
+
$this->add_control('premium_person_title',
|
150 |
+
[
|
151 |
+
'label' => esc_html__('Job Title', 'premium_elementor'),
|
152 |
+
'type' => Controls_Manager::TEXT,
|
153 |
+
'default' => esc_html__('Senior Developer', 'premium_elementor'),
|
154 |
+
'label_block' => true,
|
155 |
+
]
|
156 |
+
);
|
157 |
+
|
158 |
+
/*Title Tag*/
|
159 |
+
$this->add_control('premium_person_title_heading',
|
160 |
+
[
|
161 |
+
'label' => esc_html__('Job Title Tag', 'premium_elementor'),
|
162 |
+
'type' => Controls_Manager::SELECT,
|
163 |
+
'default' => 'h3',
|
164 |
+
'options' => [
|
165 |
+
'h1' => esc_html__('H1'),
|
166 |
+
'h2' => esc_html__('H2'),
|
167 |
+
'h3' => esc_html__('H3'),
|
168 |
+
'h4' => esc_html__('H4'),
|
169 |
+
'h5' => esc_html__('H5'),
|
170 |
+
'h6' => esc_html__('H6')
|
171 |
+
],
|
172 |
+
'label_block' => true,
|
173 |
+
]
|
174 |
+
);
|
175 |
+
|
176 |
+
/*Person Facebook*/
|
177 |
+
$this->add_control('premium_person_facebook',
|
178 |
+
[
|
179 |
+
'label' => esc_html__('Facebook Link', 'premium_elementor'),
|
180 |
+
'type' => Controls_Manager::TEXT,
|
181 |
+
'default' => '#',
|
182 |
+
'label_block' => true,
|
183 |
+
]
|
184 |
+
);
|
185 |
+
|
186 |
+
/*Person Twitter*/
|
187 |
+
$this->add_control('premium_person_twitter',
|
188 |
+
[
|
189 |
+
'label' => esc_html__('Twitter Link', 'premium_elementor'),
|
190 |
+
'type' => Controls_Manager::TEXT,
|
191 |
+
'default' => '#',
|
192 |
+
'label_block' => true,
|
193 |
+
]
|
194 |
+
);
|
195 |
+
|
196 |
+
/*Person Linkedin*/
|
197 |
+
$this->add_control('premium_person_linkedin',
|
198 |
+
[
|
199 |
+
'label' => esc_html__('LinkedIn Link', 'premium_elementor'),
|
200 |
+
'type' => Controls_Manager::TEXT,
|
201 |
+
'default' => '#',
|
202 |
+
'label_block' => true,
|
203 |
+
]
|
204 |
+
);
|
205 |
+
|
206 |
+
/*Person Dribble*/
|
207 |
+
$this->add_control('premium_person_dribbble',
|
208 |
+
[
|
209 |
+
'label' => esc_html__('Dribbble Link', 'premium_elementor'),
|
210 |
+
'type' => Controls_Manager::TEXT,
|
211 |
+
'label_block' => true,
|
212 |
+
]
|
213 |
+
);
|
214 |
+
|
215 |
+
/*Person Google*/
|
216 |
+
$this->add_control('premium_person_google',
|
217 |
+
[
|
218 |
+
'label' => esc_html__('Google+ Link', 'premium_elementor'),
|
219 |
+
'type' => Controls_Manager::TEXT,
|
220 |
+
'label_block' => true,
|
221 |
+
]
|
222 |
+
);
|
223 |
+
|
224 |
+
/*Person Google*/
|
225 |
+
$this->add_control('premium_person_mail',
|
226 |
+
[
|
227 |
+
'label' => esc_html__('Email Address', 'premium_elementor'),
|
228 |
+
'type' => Controls_Manager::TEXT,
|
229 |
+
'label_block' => true,
|
230 |
+
]
|
231 |
+
);
|
232 |
+
|
233 |
+
/*Content*/
|
234 |
+
$this->add_control('premium_person_content',
|
235 |
+
[
|
236 |
+
'label' => esc_html__('Content', 'premium_elementor'),
|
237 |
+
'type' => Controls_Manager::WYSIWYG,
|
238 |
+
]
|
239 |
+
);
|
240 |
+
|
241 |
+
/*Text Align*/
|
242 |
+
$this->add_responsive_control('premium_person_text_align',
|
243 |
+
[
|
244 |
+
'label' => esc_html__( 'Text Align', 'elementor' ),
|
245 |
+
'type' => Controls_Manager::CHOOSE,
|
246 |
+
'options' => [
|
247 |
+
'left' => [
|
248 |
+
'title'=> esc_html__( 'Left', 'elementor' ),
|
249 |
+
'icon' => 'fa fa-align-left',
|
250 |
+
],
|
251 |
+
'center' => [
|
252 |
+
'title'=> esc_html__( 'Center', 'elementor' ),
|
253 |
+
'icon' => 'fa fa-align-center',
|
254 |
+
],
|
255 |
+
'right' => [
|
256 |
+
'title'=> esc_html__( 'Right', 'elementor' ),
|
257 |
+
'icon' => 'fa fa-align-right',
|
258 |
+
],
|
259 |
+
],
|
260 |
+
'default' => 'center',
|
261 |
+
'selectors' => [
|
262 |
+
'{{WRAPPER}} .premium-person-info' => 'text-align: {{VALUE}};',
|
263 |
+
],
|
264 |
+
]
|
265 |
+
);
|
266 |
+
|
267 |
+
/*End General Settings Section*/
|
268 |
+
$this->end_controls_section();
|
269 |
+
|
270 |
+
/*Start General Style Section*/
|
271 |
+
$this->start_controls_section('premium_person_general_style',
|
272 |
+
[
|
273 |
+
'label' => esc_html__('General Style', 'premium_elementor'),
|
274 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
275 |
+
]
|
276 |
+
);
|
277 |
+
|
278 |
+
/*Social Color*/
|
279 |
+
$this->add_control('premium_person_social_color',
|
280 |
+
[
|
281 |
+
'label' => esc_html__('Social Icons Color', 'premium_elementor'),
|
282 |
+
'type' => Controls_Manager::COLOR,
|
283 |
+
'default' => '#7a7a7a',
|
284 |
+
'selectors' => [
|
285 |
+
'{{WRAPPER}} .premium-person-social-list .premium-person-list-item i' => 'color: {{VALUE}};',
|
286 |
+
]
|
287 |
+
]
|
288 |
+
);
|
289 |
+
|
290 |
+
/*Social Hover Color*/
|
291 |
+
$this->add_control('premium_person_social_hover_color',
|
292 |
+
[
|
293 |
+
'label' => esc_html__('Social Hover Color', 'premium_elementor'),
|
294 |
+
'type' => Controls_Manager::COLOR,
|
295 |
+
'default' => '#6ec1e4',
|
296 |
+
'selectors' => [
|
297 |
+
'{{WRAPPER}} .premium-person-social-list .premium-person-list-item:hover i' => 'color: {{VALUE}};',
|
298 |
+
]
|
299 |
+
]
|
300 |
+
);
|
301 |
+
|
302 |
+
/*Content Background Color*/
|
303 |
+
$this->add_control('premium_person_content_background_color',
|
304 |
+
[
|
305 |
+
'label' => esc_html__('Content Background Color', 'premium_elementor'),
|
306 |
+
'type' => Controls_Manager::COLOR,
|
307 |
+
'default' => '#f5f5f5',
|
308 |
+
'selectors' => [
|
309 |
+
'{{WRAPPER}} .premium-person-info' => 'background-color: {{VALUE}};',
|
310 |
+
]
|
311 |
+
]
|
312 |
+
);
|
313 |
+
|
314 |
+
/*Border Bottom Width*/
|
315 |
+
$this->add_control('premium_person_border_bottom_width',
|
316 |
+
[
|
317 |
+
'label' => esc_html__('Border Bottom Width (PX)', 'premium_elementor'),
|
318 |
+
'type' => Controls_Manager::SLIDER,
|
319 |
+
'range' => [
|
320 |
+
'px' => [
|
321 |
+
'min' => 0,
|
322 |
+
'max' => 700,
|
323 |
+
]
|
324 |
+
],
|
325 |
+
'default' => [
|
326 |
+
'size' => 20,
|
327 |
+
],
|
328 |
+
'label_block' => true,
|
329 |
+
'selectors' => [
|
330 |
+
'{{WRAPPER}} .premium-person-info' => 'bottom: {{SIZE}}px;',
|
331 |
+
]
|
332 |
+
]
|
333 |
+
);
|
334 |
+
|
335 |
+
/*End General Style Section*/
|
336 |
+
$this->end_controls_section();
|
337 |
+
|
338 |
+
/*Start Name Style Section*/
|
339 |
+
$this->start_controls_section('premium_person_name_style',
|
340 |
+
[
|
341 |
+
'label' => esc_html__('Name Style', 'premium_elementor'),
|
342 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
343 |
+
]
|
344 |
+
);
|
345 |
+
|
346 |
+
|
347 |
+
/*Name Color*/
|
348 |
+
$this->add_control('premium_person_name_color',
|
349 |
+
[
|
350 |
+
'label' => esc_html__('Name Color', 'premium_elementor'),
|
351 |
+
'type' => Controls_Manager::COLOR,
|
352 |
+
'default' => '#6ec1e4',
|
353 |
+
'selectors' => [
|
354 |
+
'{{WRAPPER}} .premium-person-name' => 'color: {{VALUE}};',
|
355 |
+
]
|
356 |
+
]
|
357 |
+
);
|
358 |
+
|
359 |
+
/*Name Typography*/
|
360 |
+
$this->add_group_control(
|
361 |
+
Group_Control_Typography::get_type(),
|
362 |
+
[
|
363 |
+
'name' => 'name_typography',
|
364 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
365 |
+
'selector' => '{{WRAPPER}} .premium-person-name',
|
366 |
+
]
|
367 |
+
);
|
368 |
+
|
369 |
+
/*End Name Style Section*/
|
370 |
+
$this->end_controls_section();
|
371 |
+
|
372 |
+
/*Start Title Style Section*/
|
373 |
+
$this->start_controls_section('premium_person_title_style',
|
374 |
+
[
|
375 |
+
'label' => esc_html__('Job Title Style', 'premium_elementor'),
|
376 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
377 |
+
]
|
378 |
+
);
|
379 |
+
|
380 |
+
/*Title Color*/
|
381 |
+
$this->add_control('premium_person_title_color',
|
382 |
+
[
|
383 |
+
'label' => esc_html__('Job Title Color', 'premium_elementor'),
|
384 |
+
'type' => Controls_Manager::COLOR,
|
385 |
+
'default' => '#7a7a7a',
|
386 |
+
'selectors' => [
|
387 |
+
'{{WRAPPER}} .premium-person-title' => 'color: {{VALUE}};',
|
388 |
+
]
|
389 |
+
]
|
390 |
+
);
|
391 |
+
|
392 |
+
/*Title Typography*/
|
393 |
+
$this->add_group_control(
|
394 |
+
Group_Control_Typography::get_type(),
|
395 |
+
[
|
396 |
+
'name' => 'title_typography',
|
397 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
398 |
+
'selector' => '{{WRAPPER}} .premium-person-title',
|
399 |
+
]
|
400 |
+
);
|
401 |
+
|
402 |
+
/*End Title Style Section*/
|
403 |
+
$this->end_controls_section();
|
404 |
+
|
405 |
+
/*Start Description Style Section*/
|
406 |
+
$this->start_controls_section('premium_person_description_style',
|
407 |
+
[
|
408 |
+
'label' => esc_html__('Description Style', 'premium_elementor'),
|
409 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
410 |
+
]
|
411 |
+
);
|
412 |
+
|
413 |
+
/*Title Color*/
|
414 |
+
$this->add_control('premium_person_description_color',
|
415 |
+
[
|
416 |
+
'label' => esc_html__('Description Text Color', 'premium_elementor'),
|
417 |
+
'type' => Controls_Manager::COLOR,
|
418 |
+
'default' => '#7a7a7a',
|
419 |
+
'selectors' => [
|
420 |
+
'{{WRAPPER}} .premium-person-content' => 'color: {{VALUE}};',
|
421 |
+
]
|
422 |
+
]
|
423 |
+
);
|
424 |
+
|
425 |
+
/*Title Typography*/
|
426 |
+
$this->add_group_control(
|
427 |
+
Group_Control_Typography::get_type(),
|
428 |
+
[
|
429 |
+
'name' => 'description_typography',
|
430 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
431 |
+
'selector' => '{{WRAPPER}} .premium-person-content',
|
432 |
+
]
|
433 |
+
);
|
434 |
+
|
435 |
+
/*End Description Style Section*/
|
436 |
+
$this->end_controls_section();
|
437 |
+
|
438 |
+
}
|
439 |
+
|
440 |
+
protected function render($instance = [])
|
441 |
+
{
|
442 |
+
// get our input from the widget settings.
|
443 |
+
$settings = $this->get_settings();
|
444 |
+
|
445 |
+
$name_heading = $settings['premium_person_name_heading'];
|
446 |
+
|
447 |
+
$title_heading = $settings['premium_person_title_heading'];
|
448 |
+
|
449 |
+
$image_effect = $settings['premium_person_hover_image_effect'];
|
450 |
+
?>
|
451 |
+
|
452 |
+
<div class="premium-person-container <?php echo 'premium-person-' . $image_effect . '-effect' ?>">
|
453 |
+
<div class="premium-person-image-container">
|
454 |
+
<img src="<?php echo $settings['premium_person_image']['url']; ?>" alt="<?php echo $settings['premium_person_name']; ?>">
|
455 |
+
</div>
|
456 |
+
<div class="premium-person-info">
|
457 |
+
<div class="premium-person-info-container">
|
458 |
+
<?php if( !empty( $settings['premium_person_name'] ) ) : ?><<?php echo $name_heading; ?> class="premium-person-name"><?php echo $settings['premium_person_name']; ?></<?php echo $name_heading; ?>><?php endif; ?>
|
459 |
+
<?php if( !empty( $settings['premium_person_title'] ) ) : ?><<?php echo $title_heading; ?> class="premium-person-title"><?php echo $settings['premium_person_title']; ?></<?php echo $title_heading; ?>><?php endif; ?>
|
460 |
+
<div class="premium-person-content">
|
461 |
+
<?php echo $settings['premium_person_content']; ?>
|
462 |
+
</div>
|
463 |
+
<ul class="premium-person-social-list">
|
464 |
+
<?php if( !empty( $settings['premium_person_facebook'] ) ) : ?><li class="premium-person-list-item premium-person-facebook"><a href="<?php echo $settings['premium_person_facebook']; ?>" target="_blank"><i class="fa fa-facebook"></i></a></li><?php endif; ?>
|
465 |
+
<?php if( !empty( $settings['premium_person_twitter'] ) ) : ?><li class="premium-person-list-item premium-person-twitter"><a href="<?php echo $settings['premium_person_twitter']; ?>" target="_blank"><i class="fa fa-twitter"></i></a></li><?php endif; ?>
|
466 |
+
<?php if( !empty( $settings['premium_person_linkedin'] ) ) : ?><li class="premium-person-list-item premium-person-linkedin"><a href="<?php echo $settings['premium_person_linkedin']; ?>" target="_blank"><i class="fa fa-linkedin"></i></a></li><?php endif; ?>
|
467 |
+
<?php if( !empty( $settings['premium_person_dribbble'] ) ) : ?><li class="premium-person-list-item premium-person-dribbble"><a href="<?php echo $settings['premium_person_dribbble']; ?>" target="_blank"><i class="fa fa-dribbble"></i></a></li><?php endif; ?>
|
468 |
+
<?php if( !empty( $settings['premium_person_google'] ) ) : ?><li class="premium-person-list-item premium-person-google"><a href="<?php echo $settings['premium_person_google']; ?>" target="_blank"><i class="fa fa-google-plus"></i></a></li><?php endif; ?>
|
469 |
+
<?php if( !empty( $settings['premium_person_mail'] ) ) : ?><li class="premium-person-list-item premium-person-mail"><a href="<?php echo $settings['premium_person_mail']; ?>" target="_blank"><i class="fa fa-envelope"></i></a></li><?php endif; ?>
|
470 |
+
</ul>
|
471 |
+
</div>
|
472 |
+
</div>
|
473 |
+
</div>
|
474 |
+
<?php
|
475 |
+
}
|
476 |
+
}
|
477 |
+
Plugin::instance()->widgets_manager->register_widget_type(new Premium_Person_Widget());
|
widgets/premium-progressbar.php
ADDED
@@ -0,0 +1,261 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
|
5 |
+
|
6 |
+
class Premium_Progressbar_Widget extends Widget_Base
|
7 |
+
{
|
8 |
+
protected $templateInstance;
|
9 |
+
|
10 |
+
public function getTemplateInstance() {
|
11 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_name() {
|
15 |
+
return 'premium-addon-progressbar';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
return esc_html__('Premium Progress Bar', 'premium_elementor');
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_icon() {
|
23 |
+
return 'pa-pa-list';
|
24 |
+
}
|
25 |
+
|
26 |
+
public function get_categories() {
|
27 |
+
return [ 'premium-elements' ];
|
28 |
+
}
|
29 |
+
|
30 |
+
// Adding the controls fields for the premium progress bar
|
31 |
+
// This will controls the animation, colors and background, dimensions etc
|
32 |
+
protected function _register_controls() {
|
33 |
+
|
34 |
+
/* Start Progress Content Section */
|
35 |
+
$this->start_controls_section('premium_progressbar_labels',
|
36 |
+
[
|
37 |
+
'label' => esc_html__('General Settings', 'premium_elementor'),
|
38 |
+
]
|
39 |
+
);
|
40 |
+
|
41 |
+
/*Left Label*/
|
42 |
+
$this->add_control('premium_progressbar_left_label',
|
43 |
+
[
|
44 |
+
'label' => esc_html__('Left Label', 'premium_elementor'),
|
45 |
+
'type' => Controls_Manager::TEXT,
|
46 |
+
'default' => esc_html__('My Skill','premium_elementor'),
|
47 |
+
'label_block' => true,
|
48 |
+
]
|
49 |
+
);
|
50 |
+
|
51 |
+
/*Right Label*/
|
52 |
+
$this->add_control('premium_progressbar_right_label',
|
53 |
+
[
|
54 |
+
'label' => esc_html__('Right Label', 'premium_elementor'),
|
55 |
+
'type' => Controls_Manager::TEXT,
|
56 |
+
'default' => esc_html__('50%','premium_elementor'),
|
57 |
+
'label_block' => true,
|
58 |
+
]
|
59 |
+
);
|
60 |
+
|
61 |
+
/*Progressbar Width*/
|
62 |
+
$this->add_control('premium_progressbar_progress_percentage',
|
63 |
+
[
|
64 |
+
'label' => esc_html__('Percentage (%)', 'premium_elementor'),
|
65 |
+
'type' => Controls_Manager::SLIDER,
|
66 |
+
'default' => [
|
67 |
+
'size' => 50,
|
68 |
+
'unit' => '%',
|
69 |
+
],
|
70 |
+
'selectors' => [
|
71 |
+
'{{WRAPPER}} .premium-progressbar-progress-bar' => 'width: {{SIZE}}{{UNIT}};',
|
72 |
+
]
|
73 |
+
]
|
74 |
+
);
|
75 |
+
|
76 |
+
/*Progress Bar Style*/
|
77 |
+
$this->add_control('premium_progressbar_progress_style',
|
78 |
+
[
|
79 |
+
'label' => esc_html__('Progress Bar Style', 'premium_elementor'),
|
80 |
+
'type' => Controls_Manager::SELECT,
|
81 |
+
'default' => 'solid',
|
82 |
+
'options' => [
|
83 |
+
'solid' => esc_html__('Solid', 'premium_elementor'),
|
84 |
+
'stripped' => esc_html__('Stripped', 'premium_elementor'),
|
85 |
+
],
|
86 |
+
'label_block' => true,
|
87 |
+
]
|
88 |
+
);
|
89 |
+
|
90 |
+
/*Progress Bar Animated*/
|
91 |
+
$this->add_control('premium_progressbar_progress_animation',
|
92 |
+
[
|
93 |
+
'label' => esc_html__('Progress Bar Animation', 'premium_elementor'),
|
94 |
+
'type' => Controls_Manager::SELECT,
|
95 |
+
'default' => 'off',
|
96 |
+
'options' => [
|
97 |
+
'off' => esc_html__('OFF'),
|
98 |
+
'on' => esc_html__('ON'),
|
99 |
+
],
|
100 |
+
'label_block' => true,
|
101 |
+
'separator' => 'after',
|
102 |
+
]
|
103 |
+
);
|
104 |
+
|
105 |
+
/*End Progress General Section*/
|
106 |
+
$this->end_controls_section();
|
107 |
+
|
108 |
+
/*Start Styling Section*/
|
109 |
+
/*Start progressbar Settings*/
|
110 |
+
$this->start_controls_section('premium_progressbar_progress_bar_settings',
|
111 |
+
[
|
112 |
+
'label' => esc_html__('Progress Bar Settings', 'premium_elementor'),
|
113 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
114 |
+
]
|
115 |
+
);
|
116 |
+
|
117 |
+
/*Progressbar Height*/
|
118 |
+
$this->add_control('premium_progressbar_progress_bar_height',
|
119 |
+
[
|
120 |
+
'label' => esc_html__('Height (PX)', 'premium_elementor'),
|
121 |
+
'type' => Controls_Manager::SLIDER,
|
122 |
+
'label_block' => true,
|
123 |
+
'selectors' => [
|
124 |
+
'{{WRAPPER}} .premium-progressbar-progress, {{WRAPPER}} .premium-progressbar-progress-bar' => 'height: {{SIZE}}px;',
|
125 |
+
]
|
126 |
+
]
|
127 |
+
);
|
128 |
+
|
129 |
+
/*Border Radius*/
|
130 |
+
$this->add_control('premium_progressbar_progress_bar_radius',
|
131 |
+
[
|
132 |
+
'label' => esc_html__('Border Radius', 'premium_elementor'),
|
133 |
+
'type' => Controls_Manager::SLIDER,
|
134 |
+
'size_units' => ['px', '%', 'em'],
|
135 |
+
'default' => [
|
136 |
+
'unit' => 'px',
|
137 |
+
'size' => 0,
|
138 |
+
],
|
139 |
+
'range' => [
|
140 |
+
'px' => [
|
141 |
+
'min' => 0,
|
142 |
+
'max' => 60,
|
143 |
+
],
|
144 |
+
],
|
145 |
+
'selectors' => [
|
146 |
+
'{{WRAPPER}} .premium-progressbar-progress-bar, {{WRAPPER}} .premium-progressbar-progress' => 'border-radius: {{SIZE}}{{UNIT}};',
|
147 |
+
]
|
148 |
+
]
|
149 |
+
);
|
150 |
+
|
151 |
+
/*Progress Bar Color Type*/
|
152 |
+
$this->add_group_control(
|
153 |
+
Group_Control_Background::get_type(),
|
154 |
+
[
|
155 |
+
'name' => 'premium_progressbar_progress_color',
|
156 |
+
'types' => [ 'classic' , 'gradient' ],
|
157 |
+
'selector' => '{{WRAPPER}} .premium-progressbar-progress-bar',
|
158 |
+
]
|
159 |
+
);
|
160 |
+
|
161 |
+
/*Progress Bar Background Color*/
|
162 |
+
$this->add_group_control(
|
163 |
+
Group_Control_Background::get_type(),
|
164 |
+
[
|
165 |
+
'name' => 'premium_progressbar_background',
|
166 |
+
'types' => [ 'classic' , 'gradient' ],
|
167 |
+
'selector' => '{{WRAPPER}} .premium-progressbar-progress',
|
168 |
+
]
|
169 |
+
);
|
170 |
+
|
171 |
+
/*End Progress Bar Section*/
|
172 |
+
$this->end_controls_section();
|
173 |
+
|
174 |
+
/*Start Labels Settings Section*/
|
175 |
+
$this->start_controls_section('premium_progressbar_labels_section',
|
176 |
+
[
|
177 |
+
'label' => esc_html__('Labels Settings', 'premium_elementor'),
|
178 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
179 |
+
]
|
180 |
+
);
|
181 |
+
|
182 |
+
/*Left Label Color*/
|
183 |
+
$this->add_control('premium_progressbar_left_label_color',
|
184 |
+
[
|
185 |
+
'label' => esc_html__('Left Label Color', 'premium_elementor'),
|
186 |
+
'type' => Controls_Manager::COLOR,
|
187 |
+
'selectors' => [
|
188 |
+
'{{WRAPPER}} .premium-progressbar-left-label' => 'color: {{VALUE}};',
|
189 |
+
]
|
190 |
+
]
|
191 |
+
);
|
192 |
+
|
193 |
+
/*Right Label Color*/
|
194 |
+
$this->add_control('premium_progressbar_right_label_color',
|
195 |
+
[
|
196 |
+
'label' => esc_html__('Right Label Color', 'premium_elementor'),
|
197 |
+
'type' => Controls_Manager::COLOR,
|
198 |
+
'selectors' => [
|
199 |
+
'{{WRAPPER}} .premium-progressbar-right-label' => 'color: {{VALUE}};',
|
200 |
+
]
|
201 |
+
]
|
202 |
+
);
|
203 |
+
|
204 |
+
/*Left Label Margin*/
|
205 |
+
$this->add_control('premium_progressbar_left_label_margin',
|
206 |
+
[
|
207 |
+
'label' => esc_html__('Left Label Margin', 'premium_elementor'),
|
208 |
+
'type' => Controls_Manager::DIMENSIONS,
|
209 |
+
'size_units' => [ 'px', 'em', '%' ],
|
210 |
+
'selectors' => [
|
211 |
+
'{{WRAPPER}} .premium-progressbar-left-label' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
212 |
+
]
|
213 |
+
]
|
214 |
+
);
|
215 |
+
|
216 |
+
/*Right Label Margin*/
|
217 |
+
$this->add_control('premium_progressbar_right_label_margin',
|
218 |
+
[
|
219 |
+
'label' => esc_html__('Right Label Margin', 'premium_elementor'),
|
220 |
+
'type' => Controls_Manager::DIMENSIONS,
|
221 |
+
'size_units' => [ 'px', 'em', '%' ],
|
222 |
+
'selectors' => [
|
223 |
+
'{{WRAPPER}} .premium-progressbar-right-label' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
224 |
+
]
|
225 |
+
]
|
226 |
+
);
|
227 |
+
|
228 |
+
/*Right Label Margin*/
|
229 |
+
$this->add_group_control(
|
230 |
+
Group_Control_Typography::get_type(),
|
231 |
+
[
|
232 |
+
'name' => 'labels_typography',
|
233 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
234 |
+
'selector' => '{{WRAPPER}} .premium-progressbar-left-label ,{{WRAPPER}} .premium-progressbar-right-label',
|
235 |
+
]
|
236 |
+
);
|
237 |
+
|
238 |
+
/*End Labels Settings Section*/
|
239 |
+
$this->end_controls_section();
|
240 |
+
}
|
241 |
+
|
242 |
+
protected function render($instance = [])
|
243 |
+
{
|
244 |
+
// get our input from the widget settings.
|
245 |
+
$settings = $this->get_settings();
|
246 |
+
?>
|
247 |
+
|
248 |
+
<div class="premium-progressbar-container">
|
249 |
+
<p class="premium-progressbar-left-label"><?php echo $settings['premium_progressbar_left_label'];?></p>
|
250 |
+
<p class="premium-progressbar-right-label"><?php echo $settings['premium_progressbar_right_label'];?></p>
|
251 |
+
<div class="clearfix"></div>
|
252 |
+
<div class="progress premium-progressbar-progress">
|
253 |
+
<div class=" premium-progressbar-progress-bar progress-bar <?php if( $settings['premium_progressbar_progress_style'] === 'solid' ){ echo "";} elseif( $settings['premium_progressbar_progress_style'] === 'stripped' ){ echo "progress-bar-striped";}?> <?php if( $settings['premium_progressbar_progress_animation'] === 'on' ){ echo "active";}?>" role="progressbar" aria-valuenow="<?php echo $settings['premium_progressbar_progress_percentage']['size']; ?>" aria-valuemin="0" aria-valuemax="100">
|
254 |
+
</div>
|
255 |
+
</div>
|
256 |
+
</div>
|
257 |
+
|
258 |
+
<?php
|
259 |
+
}
|
260 |
+
}
|
261 |
+
Plugin::instance()->widgets_manager->register_widget_type(new Premium_Progressbar_Widget());
|
widgets/premium-testimonials.php
ADDED
@@ -0,0 +1,619 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
|
5 |
+
|
6 |
+
class Premium_Testimonials_Widget extends Widget_Base
|
7 |
+
{
|
8 |
+
protected $templateInstance;
|
9 |
+
|
10 |
+
public function getTemplateInstance() {
|
11 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_name() {
|
15 |
+
return 'premium-addon-testimonials';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
return esc_html__('Premium Testimonial', 'premium_elementor');
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_icon() {
|
23 |
+
return 'pa-pa-chat';
|
24 |
+
}
|
25 |
+
|
26 |
+
public function get_categories() {
|
27 |
+
return [ 'premium-elements' ];
|
28 |
+
}
|
29 |
+
|
30 |
+
// Adding the controls fields for the premium testimonial
|
31 |
+
// This will controls the animation, colors and background, dimensions etc
|
32 |
+
protected function _register_controls() {
|
33 |
+
/*Testimonials Content Section */
|
34 |
+
$this->start_controls_section('premium_testimonial_person_settings',
|
35 |
+
[
|
36 |
+
'label' => esc_html__('Person Content Section', 'premium_elementor'),
|
37 |
+
]
|
38 |
+
);
|
39 |
+
|
40 |
+
/*Person Image*/
|
41 |
+
$this->add_control('premium_testimonial_person_image',
|
42 |
+
[
|
43 |
+
'label' => esc_html__('Person Image','premium_elementor'),
|
44 |
+
'type' => Controls_Manager::MEDIA,
|
45 |
+
'default' => [
|
46 |
+
'url' => 'https://image.freepik.com/free-icon/male-user-silhouette_318-35708.jpg',
|
47 |
+
],
|
48 |
+
'description' => esc_html__( 'Choose an image for the author.', 'premium_elementor' ),
|
49 |
+
'show_label' => true,
|
50 |
+
]
|
51 |
+
);
|
52 |
+
|
53 |
+
/*Person Image Shape*/
|
54 |
+
$this->add_control('premium_testimonial_person_image_shape',
|
55 |
+
[
|
56 |
+
'label' => esc_html__('Image style.', 'premium_elementor'),
|
57 |
+
'type' => Controls_Manager::SELECT,
|
58 |
+
'description' => esc_html__( 'Choose image style.', 'premium_elementor' ),
|
59 |
+
'options' => [
|
60 |
+
'square' => esc_html__('Square'),
|
61 |
+
'circle' => esc_html__('Circle'),
|
62 |
+
'rounded' => esc_html__('Rounded'),
|
63 |
+
],
|
64 |
+
'default' => 'circle',
|
65 |
+
]
|
66 |
+
);
|
67 |
+
|
68 |
+
/*Person Name*/
|
69 |
+
$this->add_control('premium_testimonial_person_name',
|
70 |
+
[
|
71 |
+
'label' => esc_html__('Person Name', 'premium_elementor'),
|
72 |
+
'type' => Controls_Manager::TEXTAREA,
|
73 |
+
'default' => esc_html__('Person Name', 'premium_elementor'),
|
74 |
+
'description' => esc_html__( 'Enter author name.', 'premium_elementor' ),
|
75 |
+
'label_block' => true
|
76 |
+
]
|
77 |
+
);
|
78 |
+
|
79 |
+
/*Front Title Tag*/
|
80 |
+
$this->add_control('premium_testimonial_person_name_size',
|
81 |
+
[
|
82 |
+
'label' => esc_html__('Name Tag', 'premium_elementor'),
|
83 |
+
'type' => Controls_Manager::SELECT,
|
84 |
+
'description' => esc_html__( 'Select a heading tag for author name.', 'premium_elementor' ),
|
85 |
+
'options' => [
|
86 |
+
'h1' => esc_html('H1'),
|
87 |
+
'h2' => esc_html('H2'),
|
88 |
+
'h3' => esc_html('H3'),
|
89 |
+
'h4' => esc_html('H4'),
|
90 |
+
'h5' => esc_html('H5'),
|
91 |
+
'h6' => esc_html('H6'),
|
92 |
+
],
|
93 |
+
'default' => esc_html__('h3','premium_elementor'),
|
94 |
+
'label_block' => true,
|
95 |
+
]
|
96 |
+
);
|
97 |
+
|
98 |
+
/*End Person Content Section*/
|
99 |
+
$this->end_controls_section();
|
100 |
+
|
101 |
+
/*Start Company Content Section*/
|
102 |
+
$this->start_controls_section('premium_testimonial_company_settings',
|
103 |
+
[
|
104 |
+
'label' => esc_html__('Company Content Section', 'premium_elementor')
|
105 |
+
]
|
106 |
+
);
|
107 |
+
|
108 |
+
/*Company Name*/
|
109 |
+
$this->add_control('premium_testimonial_company_name',
|
110 |
+
[
|
111 |
+
'label' => esc_html__('Company Name', 'premium_elementor'),
|
112 |
+
'type' => Controls_Manager::TEXTAREA,
|
113 |
+
'default' => esc_html__('Company Name','premium_elementor'),
|
114 |
+
'description' => esc_html__( 'Enter company name.', 'premium_elementor' ),
|
115 |
+
'label_block' => true,
|
116 |
+
]
|
117 |
+
);
|
118 |
+
|
119 |
+
/*Company Link */
|
120 |
+
$this->add_control('premium_testimonial_company_link',
|
121 |
+
[
|
122 |
+
'label' => esc_html__('Company Link', 'premium_elementor'),
|
123 |
+
'type' => Controls_Manager::TEXTAREA,
|
124 |
+
'description' => esc_html__( 'Add company URL.', 'premium_elementor' ),
|
125 |
+
'label_block' => true,
|
126 |
+
]
|
127 |
+
);
|
128 |
+
|
129 |
+
/*Link Target*/
|
130 |
+
$this->add_control('premium_testimonial_link_target',
|
131 |
+
[
|
132 |
+
'label' => esc_html__('Link Target', 'premium_elementor'),
|
133 |
+
'type' => Controls_Manager::SELECT,
|
134 |
+
'description' => esc_html__( 'Select link target', 'premium_elementor' ),
|
135 |
+
'options' => [
|
136 |
+
'blank' => esc_html__('Blank'),
|
137 |
+
'parent' => esc_html__('Parent'),
|
138 |
+
'self' => esc_html__('Self'),
|
139 |
+
'top' => esc_html__('Top'),
|
140 |
+
],
|
141 |
+
'default' => esc_html__('blank','premium_elementor'),
|
142 |
+
]
|
143 |
+
);
|
144 |
+
|
145 |
+
/*End Company Content Section*/
|
146 |
+
$this->end_controls_section();
|
147 |
+
|
148 |
+
/*Start Testimonial Content Section*/
|
149 |
+
$this->start_controls_section('premium_testimonial_settings',
|
150 |
+
[
|
151 |
+
'label' => esc_html__('Testimonial Text Section', 'premium_elementor'),
|
152 |
+
]
|
153 |
+
);
|
154 |
+
|
155 |
+
/*Testimonial Content*/
|
156 |
+
$this->add_control('premium_testimonial_content',
|
157 |
+
[
|
158 |
+
'label' => esc_html__('Testimonial Content', 'premium_elementor'),
|
159 |
+
'type' => Controls_Manager::WYSIWYG,
|
160 |
+
'default' => esc_html__('Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.','premium-elementor'),
|
161 |
+
'label_block' => true,
|
162 |
+
]
|
163 |
+
);
|
164 |
+
|
165 |
+
/*End Testimonial Content Section*/
|
166 |
+
$this->end_controls_section();
|
167 |
+
|
168 |
+
/*Start General Settings Section*/
|
169 |
+
$this->start_controls_section('premium_testimonial_box_settings',
|
170 |
+
[
|
171 |
+
'label' => esc_html__('General Settings', 'premium_elementor'),
|
172 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
173 |
+
]
|
174 |
+
);
|
175 |
+
|
176 |
+
/*Box Height*/
|
177 |
+
$this->add_control('premium_testimonial_box_height',
|
178 |
+
[
|
179 |
+
'label' => esc_html__('Box Height', 'premium_elementor'),
|
180 |
+
'type' => Controls_Manager::SLIDER,
|
181 |
+
'size_units' => ['px','em'],
|
182 |
+
'default' => [
|
183 |
+
'size' => 270,
|
184 |
+
],
|
185 |
+
'range' => [
|
186 |
+
'px' => [
|
187 |
+
'min' => 20,
|
188 |
+
'max' => 1000,
|
189 |
+
],
|
190 |
+
'em' => [
|
191 |
+
'min' => 1,
|
192 |
+
'max' => 100,
|
193 |
+
],
|
194 |
+
],
|
195 |
+
'selectors' => [
|
196 |
+
'{{WRAPPER}} .premium-testimonial-Box'=> 'min-height: {{SIZE}}{{UNIT}};',
|
197 |
+
]
|
198 |
+
]
|
199 |
+
);
|
200 |
+
|
201 |
+
$this->start_controls_tabs( 'premium_testimonials_box' );
|
202 |
+
|
203 |
+
$this->start_controls_tab('premium_testimonials_normal',
|
204 |
+
[
|
205 |
+
'label' => esc_html__('Normal', 'premium_elementor'),
|
206 |
+
]
|
207 |
+
);
|
208 |
+
|
209 |
+
/*Box Background*/
|
210 |
+
$this->add_group_control(
|
211 |
+
Group_Control_Background::get_type(),
|
212 |
+
[
|
213 |
+
'name' => 'premium_testimonials_back',
|
214 |
+
'types' => [ 'classic', 'gradient' ],
|
215 |
+
'selector' => '{{WRAPPER}} .premium-testimonial-Box',
|
216 |
+
]
|
217 |
+
);
|
218 |
+
|
219 |
+
$this->add_group_control(
|
220 |
+
Group_Control_Border::get_type(),
|
221 |
+
[
|
222 |
+
'name' => 'premium_testimonials_border',
|
223 |
+
'selector' => '{{WRAPPER}} .premium-testimonial-Box',
|
224 |
+
]
|
225 |
+
);
|
226 |
+
|
227 |
+
$this->add_control('premium_testimonials_border_radius',
|
228 |
+
[
|
229 |
+
'label' => esc_html__('Border Radius', 'premium_elementor'),
|
230 |
+
'type' => Controls_Manager::SLIDER,
|
231 |
+
'size_units' => ['px', '%' ,'em'],
|
232 |
+
'selectors' => [
|
233 |
+
'{{WRAPPER}} .premium-testimonial-Box' => 'border-radius: {{SIZE}}{{UNIT}};'
|
234 |
+
]
|
235 |
+
]
|
236 |
+
);
|
237 |
+
|
238 |
+
$this->add_group_control(
|
239 |
+
Group_Control_Box_Shadow::get_type(),
|
240 |
+
[
|
241 |
+
'name' => 'premium_testimonials_shadow',
|
242 |
+
'selector' => '{{WRAPPER}} .premium-testimonial-Box',
|
243 |
+
]
|
244 |
+
);
|
245 |
+
|
246 |
+
$this->end_controls_tab();
|
247 |
+
|
248 |
+
$this->start_controls_tab('premium_testimonials_hover',
|
249 |
+
[
|
250 |
+
'label' => esc_html__('Hover', 'premium_elementor'),
|
251 |
+
]
|
252 |
+
);
|
253 |
+
|
254 |
+
/*Box Background*/
|
255 |
+
$this->add_group_control(
|
256 |
+
Group_Control_Background::get_type(),
|
257 |
+
[
|
258 |
+
'name' => 'premium_testimonials_back_hover',
|
259 |
+
'types' => [ 'classic', 'gradient' ],
|
260 |
+
'selector' => '{{WRAPPER}} .premium-testimonial-Box:hover',
|
261 |
+
]
|
262 |
+
);
|
263 |
+
|
264 |
+
$this->add_group_control(
|
265 |
+
Group_Control_Border::get_type(),
|
266 |
+
[
|
267 |
+
'name' => 'premium_testimonials_border_hover',
|
268 |
+
'selector' => '{{WRAPPER}} .premium-testimonial-Box:hover',
|
269 |
+
]
|
270 |
+
);
|
271 |
+
|
272 |
+
$this->add_control('premium_testimonials_border_radius_hover',
|
273 |
+
[
|
274 |
+
'label' => esc_html__('Border Radius', 'premium_elementor'),
|
275 |
+
'type' => Controls_Manager::SLIDER,
|
276 |
+
'size_units' => ['px', '%' ,'em'],
|
277 |
+
'selectors' => [
|
278 |
+
'{{WRAPPER}} .premium-testimonial-Box:hover' => 'border-radius: {{SIZE}}{{UNIT}};'
|
279 |
+
]
|
280 |
+
]
|
281 |
+
);
|
282 |
+
|
283 |
+
$this->add_group_control(
|
284 |
+
Group_Control_Box_Shadow::get_type(),
|
285 |
+
[
|
286 |
+
'name' => 'premium_testimonials_shadow_hover',
|
287 |
+
'selector' => '{{WRAPPER}} .premium-testimonial-Box:hover',
|
288 |
+
]
|
289 |
+
);
|
290 |
+
|
291 |
+
$this->end_controls_tab();
|
292 |
+
|
293 |
+
$this->end_controls_tabs();
|
294 |
+
|
295 |
+
/*End General Settings Section*/
|
296 |
+
$this->end_controls_section();
|
297 |
+
|
298 |
+
/*Image Styling*/
|
299 |
+
$this->start_controls_section('premium_testimonial_image_style',
|
300 |
+
[
|
301 |
+
'label' => esc_html__('Image settings', 'premium_elementor'),
|
302 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
303 |
+
]
|
304 |
+
);
|
305 |
+
|
306 |
+
/*Image Size*/
|
307 |
+
$this->add_control('premium_testimonial_img_size',
|
308 |
+
[
|
309 |
+
'label' => esc_html__('Image Size', 'premium_elementor'),
|
310 |
+
'type' => Controls_Manager::SLIDER,
|
311 |
+
'size_units' => ['px', 'em'],
|
312 |
+
'default' => [
|
313 |
+
'unit' => 'px',
|
314 |
+
'size' => 75,
|
315 |
+
],
|
316 |
+
'range' => [
|
317 |
+
'px'=> [
|
318 |
+
'min' => 10,
|
319 |
+
'max' => 150,
|
320 |
+
]
|
321 |
+
],
|
322 |
+
'selectors' => [
|
323 |
+
'{{WRAPPER}} .premium-testimonial-img-wrapper'=> 'width: {{SIZE}}{{UNIT}}; height:{{SIZE}}{{UNIT}};',
|
324 |
+
]
|
325 |
+
]
|
326 |
+
);
|
327 |
+
|
328 |
+
/*Image Border Width*/
|
329 |
+
$this->add_control('premium_testimonial_img_border_width',
|
330 |
+
[
|
331 |
+
'label' => esc_html__('Image Border Width (PX)', 'premium_elementor'),
|
332 |
+
'type' => Controls_Manager::SLIDER,
|
333 |
+
'default' => [
|
334 |
+
'unit' => 'px',
|
335 |
+
'size' => 2,
|
336 |
+
],
|
337 |
+
'range' => [
|
338 |
+
'px'=> [
|
339 |
+
'min' => 0,
|
340 |
+
'max' => 15,
|
341 |
+
]
|
342 |
+
],
|
343 |
+
'selectors' => [
|
344 |
+
'{{WRAPPER}} .premium-testimonial-person-image' => 'border-width: {{SIZE}}{{UNIT}};',
|
345 |
+
]
|
346 |
+
]
|
347 |
+
);
|
348 |
+
|
349 |
+
/*Image Border Color*/
|
350 |
+
$this->add_control('premium_testimonial_image_border_color',
|
351 |
+
[
|
352 |
+
'label' => esc_html__('Image Border Color', 'premium_elementor'),
|
353 |
+
'type' => Controls_Manager::COLOR,
|
354 |
+
'default' => '#6ec1e4',
|
355 |
+
'selectors' => [
|
356 |
+
'{{WRAPPER}} .premium-testimonial-img-wrapper' => 'color: {{VALUE}};',
|
357 |
+
]
|
358 |
+
]
|
359 |
+
);
|
360 |
+
|
361 |
+
$this->end_controls_section();
|
362 |
+
|
363 |
+
/*Start Quotes Style Section*/
|
364 |
+
$this->start_controls_section('premium_testimonial_quotes',
|
365 |
+
[
|
366 |
+
'label' => esc_html__('Quotes settings', 'premium_elementor'),
|
367 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
368 |
+
]
|
369 |
+
);
|
370 |
+
|
371 |
+
/*Quotes Color*/
|
372 |
+
$this->add_control('premium_testimonial_quote_icon_color',
|
373 |
+
[
|
374 |
+
'label' => esc_html__('Quotes Color','premium_elementor'),
|
375 |
+
'type' => Controls_Manager::COLOR,
|
376 |
+
'default' => '#6ec1e4',
|
377 |
+
'selectors' => [
|
378 |
+
'{{WRAPPER}} .fa' => 'color: {{VALUE}};',
|
379 |
+
]
|
380 |
+
]
|
381 |
+
);
|
382 |
+
|
383 |
+
/*Quotes Size*/
|
384 |
+
$this->add_control('premium_testimonial_quotes_size',
|
385 |
+
[
|
386 |
+
'label' => esc_html__('Quotes Size', 'premium_elementor'),
|
387 |
+
'type' => Controls_Manager::SLIDER,
|
388 |
+
'size_units' => ['px', '%', 'em'],
|
389 |
+
'default' => [
|
390 |
+
'unit' => 'px',
|
391 |
+
'size' => 120,
|
392 |
+
],
|
393 |
+
'range' => [
|
394 |
+
'px' => [
|
395 |
+
'min' => 5,
|
396 |
+
'max' => 250,
|
397 |
+
]
|
398 |
+
],
|
399 |
+
'selectors' => [
|
400 |
+
'{{WRAPPER}} .premium-testimonial-upper-quote, {{WRAPPER}} .premium-testimonial-lower-quote' => 'font-size: {{SIZE}}{{UNIT}};',
|
401 |
+
]
|
402 |
+
]
|
403 |
+
);
|
404 |
+
|
405 |
+
/*Upper Quote Position*/
|
406 |
+
$this->add_control('premium_testimonial_upper_quote_position',
|
407 |
+
[
|
408 |
+
'label' => esc_html__('Upper Quote Position', 'premium_elementor'),
|
409 |
+
'type' => Controls_Manager::DIMENSIONS,
|
410 |
+
'size_units' => ['px', 'em', '%'],
|
411 |
+
'default' =>[
|
412 |
+
'top' => 50,
|
413 |
+
'left' => 12 ,
|
414 |
+
'unit' => 'px',
|
415 |
+
],
|
416 |
+
'selectors' => [
|
417 |
+
'{{WRAPPER}} .premium-testimonial-upper-quote' => 'top: {{TOP}}{{UNIT}}; left:{{LEFT}}{{UNIT}};',
|
418 |
+
]
|
419 |
+
]
|
420 |
+
);
|
421 |
+
|
422 |
+
/*Lower Quote Position*/
|
423 |
+
$this->add_control('premium_testimonial_lower_quote_position',
|
424 |
+
[
|
425 |
+
'label' => esc_html__('Lower Quote Position', 'premium_elementor'),
|
426 |
+
'type' => Controls_Manager::DIMENSIONS,
|
427 |
+
'size_units' => ['px', 'em', '%'],
|
428 |
+
'default' =>[
|
429 |
+
'bottom' => 3,
|
430 |
+
'right' => 12,
|
431 |
+
'unit' => 'px',
|
432 |
+
],
|
433 |
+
'selectors' => [
|
434 |
+
'{{WRAPPER}} .premium-testimonial-lower-quote' => 'right: {{RIGHT}}{{UNIT}}; bottom: {{BOTTOM}}{{UNIT}};',
|
435 |
+
]
|
436 |
+
]
|
437 |
+
);
|
438 |
+
|
439 |
+
/*End Typography Section*/
|
440 |
+
$this->end_controls_section();
|
441 |
+
|
442 |
+
/*Start Content Settings Section*/
|
443 |
+
$this->start_controls_section('premium_testimonial_content_style',
|
444 |
+
[
|
445 |
+
'label' => esc_html__('Testimonial Content Settings', 'premium_elementor'),
|
446 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
447 |
+
]
|
448 |
+
);
|
449 |
+
|
450 |
+
/*Content Color*/
|
451 |
+
$this->add_control('premium_testimonial_content_color',
|
452 |
+
[
|
453 |
+
'label' => esc_html__('Testimonial Text Color', 'premium_elementor'),
|
454 |
+
'type' => Controls_Manager::COLOR,
|
455 |
+
'default' => '#7a7a7a',
|
456 |
+
'selectors' => [
|
457 |
+
'{{WRAPPER}} .premium-testimonial-text-wrapper' => 'color: {{VALUE}};',
|
458 |
+
]
|
459 |
+
]
|
460 |
+
);
|
461 |
+
|
462 |
+
/*Content Typography*/
|
463 |
+
$this->add_group_control(
|
464 |
+
Group_Control_Typography::get_type(),
|
465 |
+
[
|
466 |
+
'name' => 'content_typography',
|
467 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
468 |
+
'selector' => '{{WRAPPER}} .premium-testimonial-text-wrapper',
|
469 |
+
]
|
470 |
+
);
|
471 |
+
|
472 |
+
|
473 |
+
/*Testimonial Text Margin*/
|
474 |
+
$this->add_control('premium_testimonial_margin',
|
475 |
+
[
|
476 |
+
'label' => esc_html__('Testimonial Text Margin', 'premium_elementor'),
|
477 |
+
'type' => Controls_Manager::DIMENSIONS,
|
478 |
+
'size_units' => ['px', 'em', '%'],
|
479 |
+
'default' =>[
|
480 |
+
'top' => 15,
|
481 |
+
'bottom'=> 15,
|
482 |
+
'left' => 0 ,
|
483 |
+
'right' => 0 ,
|
484 |
+
'unit' => 'px',
|
485 |
+
],
|
486 |
+
'selectors' => [
|
487 |
+
'{{WRAPPER}} .premium-testimonial-text-wrapper' => 'margin: {{top}}{{UNIT}} {{right}}{{UNIT}} {{bottom}}{{UNIT}} {{left}}{{UNIT}};',
|
488 |
+
]
|
489 |
+
]
|
490 |
+
);
|
491 |
+
|
492 |
+
/*End Content Settings Section*/
|
493 |
+
$this->end_controls_section();
|
494 |
+
|
495 |
+
/*Start Person Settings Section*/
|
496 |
+
$this->start_controls_section('premium_testimonials_person_style',
|
497 |
+
[
|
498 |
+
'label' => esc_html__('Person name settings', 'premium_elementor'),
|
499 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
500 |
+
]
|
501 |
+
);
|
502 |
+
|
503 |
+
/*Person Name Color*/
|
504 |
+
$this->add_control('premium_testimonial_person_name_color',
|
505 |
+
[
|
506 |
+
'label' => esc_html__('Person Name Color', 'premium_elementor'),
|
507 |
+
'type' => Controls_Manager::COLOR,
|
508 |
+
'default' => '#6ec1e4',
|
509 |
+
'selectors' => [
|
510 |
+
'{{WRAPPER}} .premium-testimonial-person-name' => 'color: {{VALUE}};',
|
511 |
+
]
|
512 |
+
]
|
513 |
+
);
|
514 |
+
|
515 |
+
/*Separator Color*/
|
516 |
+
$this->add_control('premium_testimonial_separator_color',
|
517 |
+
[
|
518 |
+
'label' => esc_html__('Separator Color', 'premium_elementor'),
|
519 |
+
'type' => Controls_Manager::COLOR,
|
520 |
+
'default' => '#7a7a7a',
|
521 |
+
'selectors' => [
|
522 |
+
'{{WRAPPER}} .premium-testimonial-separator' => 'color: {{VALUE}};',
|
523 |
+
]
|
524 |
+
]
|
525 |
+
);
|
526 |
+
|
527 |
+
/*Authohr Name Typography*/
|
528 |
+
$this->add_group_control(
|
529 |
+
Group_Control_Typography::get_type(),
|
530 |
+
[
|
531 |
+
'name' => 'author_name_typography',
|
532 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
533 |
+
'selector' => '{{WRAPPER}} .premium-testimonial-person-name',
|
534 |
+
]
|
535 |
+
);
|
536 |
+
|
537 |
+
$this->end_controls_section();
|
538 |
+
|
539 |
+
/*Start Company Settings Section*/
|
540 |
+
$this->start_controls_section('premium_testimonial_company_style',
|
541 |
+
[
|
542 |
+
'label' => esc_html__('Company name settings', 'premium_elementor'),
|
543 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
544 |
+
]
|
545 |
+
);
|
546 |
+
|
547 |
+
/*Company Name Color*/
|
548 |
+
$this->add_control('premium_testimonial_company_name_color',
|
549 |
+
[
|
550 |
+
'label' => esc_html__('Company Name Color', 'premium_elementor'),
|
551 |
+
'type' => Controls_Manager::COLOR,
|
552 |
+
'default' => '#7a7a7a',
|
553 |
+
'selectors' => [
|
554 |
+
'{{WRAPPER}} .premium-testimonial-company-link' => 'color: {{VALUE}};',
|
555 |
+
]
|
556 |
+
]
|
557 |
+
);
|
558 |
+
|
559 |
+
/*Company Typography*/
|
560 |
+
$this->add_group_control(
|
561 |
+
Group_Control_Typography::get_type(),
|
562 |
+
[
|
563 |
+
'name' => 'company_name_typography',
|
564 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
565 |
+
'selector' => '{{WRAPPER}} .premium-testimonial-company-link',
|
566 |
+
]
|
567 |
+
);
|
568 |
+
|
569 |
+
/*End Color Section*/
|
570 |
+
$this->end_controls_section();
|
571 |
+
|
572 |
+
}
|
573 |
+
|
574 |
+
protected function render($instance = [])
|
575 |
+
{
|
576 |
+
// get our input from the widget settings.
|
577 |
+
$settings = $this->get_settings();
|
578 |
+
|
579 |
+
$person_title_tag = $settings['premium_testimonial_person_name_size'];
|
580 |
+
?>
|
581 |
+
|
582 |
+
<!-- Testimonial Box Wrapper -->
|
583 |
+
<div class="premium-testimonial-Box">
|
584 |
+
<div class="premium-testimonial-container">
|
585 |
+
<i class="fa fa-quote-left premium-testimonial-upper-quote"></i>
|
586 |
+
<!-- Testimonial Body Wrapper -->
|
587 |
+
<div class="premium-testimonial-content-wrapper">
|
588 |
+
<!-- Image Wrapper -->
|
589 |
+
<div class="premium-testimonial-img-wrapper" style="border-radius: <?php
|
590 |
+
if( $settings['premium_testimonial_person_image_shape'] === 'circle' ) : echo "50%;";
|
591 |
+
elseif ( $settings['premium_testimonial_person_image_shape'] === 'square' ) : echo "0;";
|
592 |
+
elseif ( $settings['premium_testimonial_person_image_shape'] === 'rounded' ) : echo "15px;";
|
593 |
+
endif;?>">
|
594 |
+
<img src="<?php echo $settings['premium_testimonial_person_image']['url']; ?>" alt="<?php echo $settings['premium_testimonial_person_name']; ?>" class="premium-testimonial-person-image"
|
595 |
+
style="border-radius: <?php
|
596 |
+
if ( $settings['premium_testimonial_person_image_shape'] === 'circle' ) : echo "50%;";
|
597 |
+
elseif ( $settings['premium_testimonial_person_image_shape'] === 'square' ) : echo "0;";
|
598 |
+
elseif ( $settings['premium_testimonial_person_image_shape'] === 'rounded' ) : echo "15px;";
|
599 |
+
endif; ?>">
|
600 |
+
</div>
|
601 |
+
|
602 |
+
<!-- Testimonial Text Wrapper -->
|
603 |
+
<div class="premium-testimonial-text-wrapper">
|
604 |
+
<?php echo $settings['premium_testimonial_content']; ?>
|
605 |
+
</div>
|
606 |
+
|
607 |
+
<!-- Person Name & Separator & Company Name-->
|
608 |
+
<span class="premium-testimonial-author-info">
|
609 |
+
<<?php echo $person_title_tag; ?> class="premium-testimonial-person-name"><?php echo $settings['premium_testimonial_person_name']; ?> </<?php echo $person_title_tag; ?>><span class="premium-testimonial-separator"> - </span><a class="premium-testimonial-company-link" href="<?php echo $settings['premium_testimonial_company_link']; ?>" target="_<?php echo $settings['premium_testimonial_link_target']; ?>"><span><?php echo $settings['premium_testimonial_company_name']; ?></span></a>
|
610 |
+
</span>
|
611 |
+
</div>
|
612 |
+
|
613 |
+
<i class="fa fa-quote-right premium-testimonial-lower-quote"></i>
|
614 |
+
</div>
|
615 |
+
</div>
|
616 |
+
<?php
|
617 |
+
}
|
618 |
+
}
|
619 |
+
Plugin::instance()->widgets_manager->register_widget_type(new Premium_Testimonials_Widget());
|
widgets/premium-title.php
ADDED
@@ -0,0 +1,494 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
|
5 |
+
|
6 |
+
class Premium_Title_Widget extends Widget_Base
|
7 |
+
{
|
8 |
+
protected $templateInstance;
|
9 |
+
|
10 |
+
public function getTemplateInstance() {
|
11 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_name() {
|
15 |
+
return 'premium-addon-title';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
return esc_html__('Premium Title', 'premium_elementor');
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_icon() {
|
23 |
+
return 'pa-pa-text';
|
24 |
+
}
|
25 |
+
|
26 |
+
public function get_categories() {
|
27 |
+
return [ 'premium-elements' ];
|
28 |
+
}
|
29 |
+
|
30 |
+
// Adding the controls fields for the premium title
|
31 |
+
// This will controls the animation, colors and background, dimensions etc
|
32 |
+
protected function _register_controls() {
|
33 |
+
|
34 |
+
/* Start Title General Settings Section */
|
35 |
+
$this->start_controls_section('premium_title_content',
|
36 |
+
[
|
37 |
+
'label' => esc_html__('General Settings', 'premium_elementor'),
|
38 |
+
]
|
39 |
+
);
|
40 |
+
|
41 |
+
/*Title Text*/
|
42 |
+
$this->add_control('premium_title_text',
|
43 |
+
[
|
44 |
+
'label' => esc_html__('Title Content', 'premium_elementor'),
|
45 |
+
'type' => Controls_Manager::TEXT,
|
46 |
+
'default' => esc_html__('Premium Title','premium_elementor'),
|
47 |
+
'label_block' => true,
|
48 |
+
]
|
49 |
+
);
|
50 |
+
|
51 |
+
/*Title HTML TAG*/
|
52 |
+
$this->add_control('premium_title_tag',
|
53 |
+
[
|
54 |
+
'label' => esc_html__('Title HTML Tag', 'premium_elementor'),
|
55 |
+
'type' => Controls_Manager::SELECT,
|
56 |
+
'default' => esc_html__('h2','premium_elementor'),
|
57 |
+
'options' => [
|
58 |
+
'h1' => esc_html__('H1','premium_elementor'),
|
59 |
+
'h2' => esc_html__('H2','premium_elementor'),
|
60 |
+
'h3' => esc_html__('H3','premium_elementor'),
|
61 |
+
'h4' => esc_html__('H4','premium_elementor'),
|
62 |
+
'h5' => esc_html__('H5','premium_elementor'),
|
63 |
+
'h6' => esc_html__('H6','premium_elementor'),
|
64 |
+
],
|
65 |
+
]
|
66 |
+
);
|
67 |
+
|
68 |
+
/*Title Align*/
|
69 |
+
$this->add_responsive_control('premium_title_align',
|
70 |
+
[
|
71 |
+
'label' => esc_html__( 'Align', 'premium_elementor' ),
|
72 |
+
'type' => Controls_Manager::CHOOSE,
|
73 |
+
'options' => [
|
74 |
+
'left' => [
|
75 |
+
'title'=> esc_html__( 'Left', 'premium_elementor' ),
|
76 |
+
'icon' => 'fa fa-align-left',
|
77 |
+
],
|
78 |
+
'center' => [
|
79 |
+
'title'=> esc_html__( 'Center', 'premium_elementor' ),
|
80 |
+
'icon' => 'fa fa-align-center',
|
81 |
+
],
|
82 |
+
'right' => [
|
83 |
+
'title'=> esc_html__( 'Right', 'premium_elementor' ),
|
84 |
+
'icon' => 'fa fa-align-right',
|
85 |
+
],
|
86 |
+
],
|
87 |
+
'default' => 'left',
|
88 |
+
'selectors' => [
|
89 |
+
'{{WRAPPER}} .premium-title-container' => 'text-align: {{VALUE}};',
|
90 |
+
],
|
91 |
+
]
|
92 |
+
);
|
93 |
+
|
94 |
+
/*Icon*/
|
95 |
+
$this->add_control('premium_title_icon',
|
96 |
+
[
|
97 |
+
'label' => esc_html__('Icon', 'premium_elementor'),
|
98 |
+
'type' => Controls_Manager::ICON,
|
99 |
+
'label_block' => true,
|
100 |
+
]
|
101 |
+
);
|
102 |
+
|
103 |
+
/*Title Style*/
|
104 |
+
$this->add_control('premium_title_style',
|
105 |
+
[
|
106 |
+
'label' => esc_html__('Title Style', 'premium_elementor'),
|
107 |
+
'type' => Controls_Manager::SELECT,
|
108 |
+
'default' => 'style1',
|
109 |
+
'options' => [
|
110 |
+
'style1' => esc_html('Style1'),
|
111 |
+
'style2' => esc_html('Style2'),
|
112 |
+
'style3' => esc_html('Style3'),
|
113 |
+
'style4' => esc_html('Style4'),
|
114 |
+
'style5' => esc_html('Style5'),
|
115 |
+
'style6' => esc_html('Style6'),
|
116 |
+
'style7' => esc_html('Style7'),
|
117 |
+
],
|
118 |
+
'label_block' => true,
|
119 |
+
]
|
120 |
+
);
|
121 |
+
|
122 |
+
/*Style 1*/
|
123 |
+
/*Style 1 Border*/
|
124 |
+
$this->add_group_control(
|
125 |
+
Group_Control_Border::get_type(),
|
126 |
+
[
|
127 |
+
'name' => 'style_two_border',
|
128 |
+
'selector' => '{{WRAPPER}} .premium-title-style1',
|
129 |
+
'condition' => [
|
130 |
+
'premium_title_style' => 'style1',
|
131 |
+
],
|
132 |
+
]
|
133 |
+
);
|
134 |
+
|
135 |
+
/*Style 2*/
|
136 |
+
/*Background Color*/
|
137 |
+
$this->add_control('premium_title_style2_background_color',
|
138 |
+
[
|
139 |
+
'label' => esc_html__('Background Color', 'premium_elementor'),
|
140 |
+
'type' => Controls_Manager::COLOR,
|
141 |
+
'default' => '#e2e2e2',
|
142 |
+
'selectors' => [
|
143 |
+
'{{WRAPPER}} .premium-title-style2' => 'background-color: {{VALUE}};',
|
144 |
+
],
|
145 |
+
'condition' => [
|
146 |
+
'premium_title_style' => 'style2',
|
147 |
+
],
|
148 |
+
]
|
149 |
+
);
|
150 |
+
|
151 |
+
/*Style 2*/
|
152 |
+
/*Line Color*/
|
153 |
+
$this->add_control('premium_title_style2_line_color',
|
154 |
+
[
|
155 |
+
'label' => esc_html__('Line Color', 'premium_elementor'),
|
156 |
+
'type' => Controls_Manager::COLOR,
|
157 |
+
'default' => '#6ec1e4',
|
158 |
+
'selectors' => [
|
159 |
+
'{{WRAPPER}} .premium-title-container' => 'border-bottom: 2px solid {{VALUE}};',
|
160 |
+
],
|
161 |
+
'condition' => [
|
162 |
+
'premium_title_style' => 'style2',
|
163 |
+
],
|
164 |
+
]
|
165 |
+
);
|
166 |
+
|
167 |
+
/*Style 3*/
|
168 |
+
/*Background Color*/
|
169 |
+
$this->add_control('premium_title_style3_background_color',
|
170 |
+
[
|
171 |
+
'label' => esc_html__('Background Color', 'premium_elementor'),
|
172 |
+
'type' => Controls_Manager::COLOR,
|
173 |
+
'default' => '#e2e2e2',
|
174 |
+
'selectors' => [
|
175 |
+
'{{WRAPPER}} .premium-title-style3' => 'background-color: {{VALUE}};',
|
176 |
+
],
|
177 |
+
'condition' => [
|
178 |
+
'premium_title_style' => 'style3',
|
179 |
+
],
|
180 |
+
]
|
181 |
+
);
|
182 |
+
|
183 |
+
/*Style 4*/
|
184 |
+
/*Line Color*/
|
185 |
+
$this->add_control('premium_title_style4_line_color',
|
186 |
+
[
|
187 |
+
'label' => esc_html__('Line Color', 'premium_elementor'),
|
188 |
+
'type' => Controls_Manager::COLOR,
|
189 |
+
'default' => '#6ec1e4',
|
190 |
+
'selectors' => [
|
191 |
+
'{{WRAPPER}} .premium-title-container' => 'border-bottom: 2px solid {{VALUE}};',
|
192 |
+
],
|
193 |
+
'condition' => [
|
194 |
+
'premium_title_style' => 'style4',
|
195 |
+
],
|
196 |
+
]
|
197 |
+
);
|
198 |
+
|
199 |
+
/*Style 5*/
|
200 |
+
/*Header Line Color*/
|
201 |
+
$this->add_control('premium_title_style5_header_line_color',
|
202 |
+
[
|
203 |
+
'label' => esc_html__('Header Line Color', 'premium_elementor'),
|
204 |
+
'type' => Controls_Manager::COLOR,
|
205 |
+
'default' => '#6ec1e4',
|
206 |
+
'selectors' => [
|
207 |
+
'{{WRAPPER}} .premium-title-style5' => 'border-bottom: 2px solid {{VALUE}};',
|
208 |
+
],
|
209 |
+
'condition' => [
|
210 |
+
'premium_title_style' => 'style5',
|
211 |
+
],
|
212 |
+
]
|
213 |
+
);
|
214 |
+
|
215 |
+
/*Container Line Color*/
|
216 |
+
$this->add_control('premium_title_style5_container_line_color',
|
217 |
+
[
|
218 |
+
'label' => esc_html__('Container Line Color', 'premium_elementor'),
|
219 |
+
'type' => Controls_Manager::COLOR,
|
220 |
+
'default' => '#6ec1e4',
|
221 |
+
'selectors' => [
|
222 |
+
'{{WRAPPER}} .premium-title-container' => 'border-bottom: 2px solid {{VALUE}};',
|
223 |
+
],
|
224 |
+
'condition' => [
|
225 |
+
'premium_title_style' => 'style5',
|
226 |
+
],
|
227 |
+
]
|
228 |
+
);
|
229 |
+
|
230 |
+
/*Style 7*/
|
231 |
+
/*Header Line Color*/
|
232 |
+
$this->add_control('premium_title_style6_header_line_color',
|
233 |
+
[
|
234 |
+
'label' => esc_html__('Header Line Color', 'premium_elementor'),
|
235 |
+
'type' => Controls_Manager::COLOR,
|
236 |
+
'default' => '#6ec1e4',
|
237 |
+
'selectors' => [
|
238 |
+
'{{WRAPPER}} .premium-title-style6' => 'border-bottom: 2px solid {{VALUE}};',
|
239 |
+
],
|
240 |
+
'condition' => [
|
241 |
+
'premium_title_style' => 'style6',
|
242 |
+
],
|
243 |
+
]
|
244 |
+
);
|
245 |
+
|
246 |
+
/*Container Line Color*/
|
247 |
+
$this->add_control('premium_title_style6_container_line_color',
|
248 |
+
[
|
249 |
+
'label' => esc_html__('Container Line Color', 'premium_elementor'),
|
250 |
+
'type' => Controls_Manager::COLOR,
|
251 |
+
'default' => '#6ec1e4',
|
252 |
+
'selectors' => [
|
253 |
+
'{{WRAPPER}} .premium-title-container' => 'border-bottom: 2px solid {{VALUE}};',
|
254 |
+
],
|
255 |
+
'condition' => [
|
256 |
+
'premium_title_style' => 'style6',
|
257 |
+
],
|
258 |
+
]
|
259 |
+
);
|
260 |
+
|
261 |
+
/*Triangle Color*/
|
262 |
+
$this->add_control('premium_title_style6_triangle_color',
|
263 |
+
[
|
264 |
+
'label' => esc_html__('Triangle Color', 'premium_elementor'),
|
265 |
+
'type' => Controls_Manager::COLOR,
|
266 |
+
'default' => '#6ec1e4',
|
267 |
+
'selectors' => [
|
268 |
+
'{{WRAPPER}} .premium-title-style6:before' => 'border-bottom-color: {{VALUE}};',
|
269 |
+
],
|
270 |
+
'condition' => [
|
271 |
+
'premium_title_style' => 'style6',
|
272 |
+
],
|
273 |
+
]
|
274 |
+
);
|
275 |
+
|
276 |
+
/*Style 8*/
|
277 |
+
/*Strip Width*/
|
278 |
+
$this->add_control('premium_title_style7_strip_width',
|
279 |
+
[
|
280 |
+
'label' => esc_html__('Strip Width (PX)', 'premium_elementor'),
|
281 |
+
'type' => Controls_Manager::SLIDER,
|
282 |
+
'size_units' => ['px', '%', 'em'],
|
283 |
+
'default' => [
|
284 |
+
'unit' => 'px',
|
285 |
+
'size' => '120',
|
286 |
+
],
|
287 |
+
'selectors' => [
|
288 |
+
'{{WRAPPER}} .premium-title-style7-strip:before' => 'width: {{SIZE}}{{UNIT}};',
|
289 |
+
],
|
290 |
+
'label_block' => true,
|
291 |
+
'condition' => [
|
292 |
+
'premium_title_style' => 'style7',
|
293 |
+
],
|
294 |
+
]
|
295 |
+
);
|
296 |
+
|
297 |
+
/*Strip Height*/
|
298 |
+
$this->add_control('premium_title_style7_strip_height',
|
299 |
+
[
|
300 |
+
'label' => esc_html__('Strip Height (PX)', 'premium_elementor'),
|
301 |
+
'type' => Controls_Manager::SLIDER,
|
302 |
+
'size_units' => ['px', 'em'],
|
303 |
+
'default' => [
|
304 |
+
'unit' => 'px',
|
305 |
+
'size' => '5',
|
306 |
+
],
|
307 |
+
'label_block' => true,
|
308 |
+
'selectors' => [
|
309 |
+
'{{WRAPPER}} .premium-title-style7-strip,{{WRAPPER}} .premium-title-style7-strip:before ' => 'height: {{SIZE}}{{UNIT}};',
|
310 |
+
],
|
311 |
+
'condition' => [
|
312 |
+
'premium_title_style' => 'style7',
|
313 |
+
],
|
314 |
+
]
|
315 |
+
);
|
316 |
+
|
317 |
+
/*Strip Top Spacing*/
|
318 |
+
$this->add_control('premium_title_style7_strip_top_spacing',
|
319 |
+
[
|
320 |
+
'label' => esc_html__('Strip Top Spacing (PX)', 'premium_elementor'),
|
321 |
+
'type' => Controls_Manager::SLIDER,
|
322 |
+
'size_units' => ['px', '%', 'em'],
|
323 |
+
'selectors' => [
|
324 |
+
'{{WRAPPER}} .premium-title-style7-strip' => 'margin-top: {{SIZE}}{{UNIT}};',
|
325 |
+
],
|
326 |
+
'label_block' => true,
|
327 |
+
'condition' => [
|
328 |
+
'premium_title_style' => 'style7',
|
329 |
+
],
|
330 |
+
]
|
331 |
+
);
|
332 |
+
|
333 |
+
/*Strip Bottom Spacing*/
|
334 |
+
$this->add_control('premium_title_style7_strip_bottom_spacing',
|
335 |
+
[
|
336 |
+
'label' => esc_html__('Strip Bottom Spacing (PX)', 'premium_elementor'),
|
337 |
+
'type' => Controls_Manager::SLIDER,
|
338 |
+
'size_units' => ['px', '%', 'em'],
|
339 |
+
'label_block' => true,
|
340 |
+
'selectors' => [
|
341 |
+
'{{WRAPPER}} .premium-title-style7-strip' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
342 |
+
],
|
343 |
+
'condition' => [
|
344 |
+
'premium_title_style' => 'style7',
|
345 |
+
],
|
346 |
+
]
|
347 |
+
);
|
348 |
+
|
349 |
+
/*Strip Color*/
|
350 |
+
$this->add_control('premium_title_style7_strip_color',
|
351 |
+
[
|
352 |
+
'label' => esc_html__('Strip Color', 'premium_elementor'),
|
353 |
+
'type' => Controls_Manager::COLOR,
|
354 |
+
'default' => '#6ec1e4',
|
355 |
+
'selectors' => [
|
356 |
+
'{{WRAPPER}} .premium-title-style7-strip:before' => 'background-color: {{VALUE}};',
|
357 |
+
],
|
358 |
+
'condition' => [
|
359 |
+
'premium_title_style' => 'style7',
|
360 |
+
],
|
361 |
+
]
|
362 |
+
);
|
363 |
+
|
364 |
+
/*Title Align*/
|
365 |
+
$this->add_responsive_control('premium_title_style7_strip_align',
|
366 |
+
[
|
367 |
+
'label' => esc_html__( 'Align', 'elementor' ),
|
368 |
+
'type' => Controls_Manager::CHOOSE,
|
369 |
+
'options' => [
|
370 |
+
'left' => [
|
371 |
+
'title'=> esc_html__( 'Left', 'elementor' ),
|
372 |
+
'icon' => 'fa fa-align-left',
|
373 |
+
],
|
374 |
+
'none' => [
|
375 |
+
'title'=> esc_html__( 'Center', 'elementor' ),
|
376 |
+
'icon' => 'fa fa-align-center',
|
377 |
+
],
|
378 |
+
'right' => [
|
379 |
+
'title'=> esc_html__( 'Right', 'elementor' ),
|
380 |
+
'icon' => 'fa fa-align-right',
|
381 |
+
],
|
382 |
+
],
|
383 |
+
'default' => 'none',
|
384 |
+
'selectors' => [
|
385 |
+
'{{WRAPPER}} .premium-title-style7-strip:before' => 'float: {{VALUE}};',
|
386 |
+
],
|
387 |
+
'condition' => [
|
388 |
+
'premium_title_style' => 'style7',
|
389 |
+
],
|
390 |
+
]
|
391 |
+
);
|
392 |
+
|
393 |
+
/*End Title General Settings Section*/
|
394 |
+
$this->end_controls_section();
|
395 |
+
|
396 |
+
/*Start Styling Section*/
|
397 |
+
$this->start_controls_section('premium_title_style_section',
|
398 |
+
[
|
399 |
+
'label' => esc_html__('Title Style', 'premium_elementor'),
|
400 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
401 |
+
]
|
402 |
+
);
|
403 |
+
|
404 |
+
/*Title Color*/
|
405 |
+
$this->add_control('premium_title_color',
|
406 |
+
[
|
407 |
+
'label' => esc_html__('Title Color', 'premium_elementor'),
|
408 |
+
'type' => Controls_Manager::COLOR,
|
409 |
+
'default' => '#6ec1e4',
|
410 |
+
'selectors' => [
|
411 |
+
'{{WRAPPER}} .premium-title-header' => 'color: {{VALUE}};',
|
412 |
+
],
|
413 |
+
]
|
414 |
+
);
|
415 |
+
|
416 |
+
/*Title Typography*/
|
417 |
+
$this->add_group_control(
|
418 |
+
Group_Control_Typography::get_type(),
|
419 |
+
[
|
420 |
+
'name' => 'title_typography',
|
421 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
422 |
+
'selector' => '{{WRAPPER}} .premium-title-header',
|
423 |
+
]
|
424 |
+
);
|
425 |
+
|
426 |
+
/*Margin Top*/
|
427 |
+
$this->add_control('premium_title_margin_top',
|
428 |
+
[
|
429 |
+
'label' => esc_html__('Margin Top', 'premium_elementor'),
|
430 |
+
'type' => Controls_Manager::SLIDER,
|
431 |
+
'size_units' => ['px', '%', 'em'],
|
432 |
+
'label_block' => true,
|
433 |
+
'selectors' => [
|
434 |
+
'{{WRAPPER}} .premium-title-header' => 'margin-top: {{SIZE}}{{UNIT}};',
|
435 |
+
]
|
436 |
+
]
|
437 |
+
);
|
438 |
+
|
439 |
+
/*Margin Bottom*/
|
440 |
+
$this->add_control('premium_title_margin_bottom',
|
441 |
+
[
|
442 |
+
'label' => esc_html__('Margin Bottom', 'premium_elementor'),
|
443 |
+
'type' => Controls_Manager::SLIDER,
|
444 |
+
'size_units' => ['px', '%', 'em'],
|
445 |
+
'label_block' => true,
|
446 |
+
'selectors' => [
|
447 |
+
'{{WRAPPER}} .premium-title-header' => 'margin-bottom: {{SIZE}}{{UNIT}};',
|
448 |
+
]
|
449 |
+
]
|
450 |
+
);
|
451 |
+
|
452 |
+
/*Title Padding*/
|
453 |
+
$this->add_control('premium_title_padding',
|
454 |
+
[
|
455 |
+
'label' => esc_html__('Padding', 'premium_elementor'),
|
456 |
+
'type' => Controls_Manager::DIMENSIONS,
|
457 |
+
'size_units' => ['px', 'em', '%'],
|
458 |
+
'selectors' => [
|
459 |
+
'{{WRAPPER}} .premium-title-header' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
460 |
+
]
|
461 |
+
]
|
462 |
+
);
|
463 |
+
|
464 |
+
/*End Progress Bar Section*/
|
465 |
+
$this->end_controls_section();
|
466 |
+
|
467 |
+
}
|
468 |
+
|
469 |
+
protected function render($instance = [])
|
470 |
+
{
|
471 |
+
// get our input from the widget settings.
|
472 |
+
$settings = $this->get_settings();
|
473 |
+
|
474 |
+
$title_tag = $settings['premium_title_tag'];
|
475 |
+
|
476 |
+
$selected_style = $settings['premium_title_style'];
|
477 |
+
?>
|
478 |
+
|
479 |
+
<div class="premium-title-container">
|
480 |
+
<<?php echo $title_tag ; ?> class="premium-title-header premium-title-<?php echo $selected_style; ?>">
|
481 |
+
<?php if ( $settings['premium_title_style'] === 'style7' ) : ?>
|
482 |
+
<span class="premium-title-style7-strip"></span>
|
483 |
+
<?php endif; ?>
|
484 |
+
<?php if( !empty( $settings['premium_title_icon'] ) ) : ?>
|
485 |
+
<i class="premium-title-icon <?php echo $settings['premium_title_icon'];?>"></i>
|
486 |
+
<?php endif; ?>
|
487 |
+
<?php echo $settings['premium_title_text']; ?>
|
488 |
+
</<?php echo $title_tag; ?>>
|
489 |
+
</div>
|
490 |
+
|
491 |
+
<?php
|
492 |
+
}
|
493 |
+
}
|
494 |
+
Plugin::instance()->widgets_manager->register_widget_type(new Premium_Title_Widget());
|
widgets/premium-videobox.php
ADDED
@@ -0,0 +1,353 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Elementor;
|
3 |
+
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
|
5 |
+
|
6 |
+
class Premium_Video_Box_Widget extends Widget_Base
|
7 |
+
{
|
8 |
+
protected $templateInstance;
|
9 |
+
|
10 |
+
public function getTemplateInstance() {
|
11 |
+
return $this->templateInstance = premium_Template_Tags::getInstance();
|
12 |
+
}
|
13 |
+
|
14 |
+
public function get_name() {
|
15 |
+
return 'premium-addon-video-box';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
return esc_html__('Premium Video Box', 'premium_elementor');
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_icon() {
|
23 |
+
return 'pa-pa-video';
|
24 |
+
}
|
25 |
+
|
26 |
+
public function get_categories() {
|
27 |
+
return [ 'premium-elements' ];
|
28 |
+
}
|
29 |
+
|
30 |
+
// Adding the controls fields for the premium video box
|
31 |
+
// This will controls the animation, colors and background, dimensions etc
|
32 |
+
protected function _register_controls() {
|
33 |
+
|
34 |
+
/* Start Image Settings Section */
|
35 |
+
$this->start_controls_section('premium_video_box_image_settings',
|
36 |
+
[
|
37 |
+
'label' => esc_html__('Image Settings', 'premium_elementor'),
|
38 |
+
]
|
39 |
+
);
|
40 |
+
|
41 |
+
/*Video Box Image*/
|
42 |
+
$this->add_control('premium_video_box_image',
|
43 |
+
[
|
44 |
+
'label' => esc_html__('Image', 'premium_elementor'),
|
45 |
+
'description' => esc_html__('Choose the video box Image', 'premium_elementor' ),
|
46 |
+
'type' => Controls_Manager::MEDIA,
|
47 |
+
'default' => [
|
48 |
+
'url' => Utils::get_placeholder_image_src()
|
49 |
+
],
|
50 |
+
'label_block' => true,
|
51 |
+
]
|
52 |
+
);
|
53 |
+
|
54 |
+
/*Image Border*/
|
55 |
+
$this->add_group_control(
|
56 |
+
Group_Control_Border::get_type(),
|
57 |
+
[
|
58 |
+
'name' => 'image_border',
|
59 |
+
'selector' => '{{WRAPPER}} .premium-video-box-image, {{WRAPPER}} .premium-video-box-video-container iframe',
|
60 |
+
]
|
61 |
+
);
|
62 |
+
|
63 |
+
/*Image Border Radius*/
|
64 |
+
$this->add_control('premium_video_box_image_border_radius',
|
65 |
+
[
|
66 |
+
'label' => esc_html__('Border Radius', 'premium_elementor'),
|
67 |
+
'type' => Controls_Manager::SLIDER,
|
68 |
+
'size_units' => ['px', '%', 'em'],
|
69 |
+
'selectors' => [
|
70 |
+
'{{WRAPPER}} .premium-video-box-image, {{WRAPPER}} .premium-video-box-video-container iframe' => 'border-radius: {{SIZE}}{{UNIT}};',
|
71 |
+
]
|
72 |
+
]
|
73 |
+
);
|
74 |
+
|
75 |
+
/*End Image Settings Section*/
|
76 |
+
$this->end_controls_section();
|
77 |
+
|
78 |
+
/*Start Play Icon Settings*/
|
79 |
+
$this->start_controls_section('premium_video_box_play_icon_settings',
|
80 |
+
[
|
81 |
+
'label' => esc_html__('Play Icon Settings', 'premium_elementor'),
|
82 |
+
]
|
83 |
+
);
|
84 |
+
|
85 |
+
/*Play Icon Size*/
|
86 |
+
$this->add_control('premium_video_box_play_icon_size',
|
87 |
+
[
|
88 |
+
'label' => esc_html__('Icon Size', 'premium_elementor'),
|
89 |
+
'type' => Controls_Manager::SLIDER,
|
90 |
+
'size_units' => ['px', '%', 'em'],
|
91 |
+
'selectors' => [
|
92 |
+
'{{WRAPPER}} .premium-video-box-play-icon' => 'font-size: {{SIZE}}{{UNIT}};',
|
93 |
+
]
|
94 |
+
]
|
95 |
+
);
|
96 |
+
|
97 |
+
/*Play Icon Color*/
|
98 |
+
$this->add_control('premium_video_box_play_icon_color',
|
99 |
+
[
|
100 |
+
'label' => esc_html__('Icon Color', 'premium_elementor'),
|
101 |
+
'type' => Controls_Manager::COLOR,
|
102 |
+
'selectors' => [
|
103 |
+
'{{WRAPPER}} .premium-video-box-play-icon' => 'color: {{VALUE}};',
|
104 |
+
]
|
105 |
+
]
|
106 |
+
);
|
107 |
+
|
108 |
+
/*Play Icon Background Color*/
|
109 |
+
$this->add_group_control(
|
110 |
+
Group_Control_Background::get_type(),
|
111 |
+
[
|
112 |
+
'name' => 'premium_video_box_play_icon_background_color',
|
113 |
+
'types' => ['classic', 'gradient'],
|
114 |
+
'selector' => '{{WRAPPER}} .premium-video-box-play-icon-container',
|
115 |
+
]
|
116 |
+
);
|
117 |
+
|
118 |
+
/*Play Icon Border*/
|
119 |
+
$this->add_group_control(
|
120 |
+
Group_Control_Border::get_type(),
|
121 |
+
[
|
122 |
+
'name' => 'icon_border',
|
123 |
+
'selector' => '{{WRAPPER}} .premium-video-box-play-icon-container',
|
124 |
+
]
|
125 |
+
);
|
126 |
+
|
127 |
+
/*Play Icon Border Radius*/
|
128 |
+
$this->add_control('premium_video_box_icon_border_radius',
|
129 |
+
[
|
130 |
+
'label' => esc_html__('Border Radius', 'premium_elementor'),
|
131 |
+
'type' => Controls_Manager::SLIDER,
|
132 |
+
'size_units' => ['px', '%', 'em'],
|
133 |
+
'selectors' => [
|
134 |
+
'{{WRAPPER}} .premium-video-box-play-icon-container' => 'border-radius: {{SIZE}}{{UNIT}};',
|
135 |
+
]
|
136 |
+
]
|
137 |
+
);
|
138 |
+
|
139 |
+
/*Enable Icon Hover Size Change*/
|
140 |
+
$this->add_control('premium_video_box_icon_hover_animation',
|
141 |
+
[
|
142 |
+
'label' => esc_html__('Hover Animation', 'premium_elementor'),
|
143 |
+
'type' => Controls_Manager::SWITCHER,
|
144 |
+
'default' => 'yes',
|
145 |
+
]
|
146 |
+
);
|
147 |
+
|
148 |
+
/*End Play Icon Settings*/
|
149 |
+
$this->end_controls_section();
|
150 |
+
|
151 |
+
/*Start Description Text Section*/
|
152 |
+
$this->start_controls_section('premium_video_box_description_text_section',
|
153 |
+
[
|
154 |
+
'label' => esc_html__('Video Description Settings', 'premium_elementor'),
|
155 |
+
]
|
156 |
+
);
|
157 |
+
|
158 |
+
/*Description Text*/
|
159 |
+
$this->add_control('premium_video_box_description_text',
|
160 |
+
[
|
161 |
+
'label' => esc_html__('Description Text', 'premium_elementor'),
|
162 |
+
'type' => Controls_Manager::TEXTAREA,
|
163 |
+
'label_block' => true,
|
164 |
+
]
|
165 |
+
);
|
166 |
+
|
167 |
+
/*Description Top Position*/
|
168 |
+
$this->add_control('premium_video_box_description_position',
|
169 |
+
[
|
170 |
+
'label' => esc_html__('Description Top Position (%)', 'premium_elementor'),
|
171 |
+
'type' => Controls_Manager::SLIDER,
|
172 |
+
'label_block' => true,
|
173 |
+
'default' => [
|
174 |
+
'size' => 50,
|
175 |
+
],
|
176 |
+
'selectors' => [
|
177 |
+
'{{WRAPPER}} .premium-video-box-description-container' => 'top: {{SIZE}}%;',
|
178 |
+
]
|
179 |
+
]
|
180 |
+
);
|
181 |
+
|
182 |
+
/*End Description Text Section*/
|
183 |
+
$this->end_controls_section();
|
184 |
+
|
185 |
+
/*Start Video Settings Section*/
|
186 |
+
$this->start_controls_section('premium_video_box_video_settings_section',
|
187 |
+
[
|
188 |
+
'label' => esc_html__('Video Settings', 'premium_elementor'),
|
189 |
+
]
|
190 |
+
);
|
191 |
+
|
192 |
+
/*Video Type*/
|
193 |
+
$this->add_control('premium_video_box_video_type',
|
194 |
+
[
|
195 |
+
'label' => esc_html__('Video Type', 'premium_elementor'),
|
196 |
+
'type' => Controls_Manager::SELECT,
|
197 |
+
'default' => 'youtube',
|
198 |
+
'options' => [
|
199 |
+
'youtube' => esc_html__('Youtube', 'premium_elementor'),
|
200 |
+
'vimeo' => esc_html__('Vimeo', 'premium_elementor'),
|
201 |
+
]
|
202 |
+
]
|
203 |
+
);
|
204 |
+
|
205 |
+
/*Video Id or Link*/
|
206 |
+
$this->add_control('premium_video_box_video_id_embed_selection',
|
207 |
+
[
|
208 |
+
'label' => esc_html__('Id/Embded URL', 'premium_elementor'),
|
209 |
+
'type' => Controls_Manager::SELECT,
|
210 |
+
'default' => 'id',
|
211 |
+
'options' => [
|
212 |
+
'id' => esc_html__('Id', 'premium_elementor'),
|
213 |
+
'embed' => esc_html__('Embed URL', 'premium_elementor'),
|
214 |
+
]
|
215 |
+
]
|
216 |
+
);
|
217 |
+
|
218 |
+
/*Video Id*/
|
219 |
+
$this->add_control('premium_video_box_video_id',
|
220 |
+
[
|
221 |
+
'label' => esc_html__('Video Id', 'premium_elementor'),
|
222 |
+
'description' => esc_html__('for example: z1hQgVpfTKU', 'premium_elementor'),
|
223 |
+
'type' => Controls_Manager::TEXT,
|
224 |
+
'condition' => [
|
225 |
+
'premium_video_box_video_id_embed_selection' => 'id',
|
226 |
+
]
|
227 |
+
]
|
228 |
+
);
|
229 |
+
|
230 |
+
/*Video Link*/
|
231 |
+
$this->add_control('premium_video_box_video_embed',
|
232 |
+
[
|
233 |
+
'label' => esc_html__('Embed Video src', 'premium_elementor'),
|
234 |
+
'description' => esc_html__('for example: https://www.youtube.com/embed/z1hQgVpfTKU', 'premium_elementor'),
|
235 |
+
'type' => Controls_Manager::TEXT,
|
236 |
+
'condition' => [
|
237 |
+
'premium_video_box_video_id_embed_selection' => 'embed',
|
238 |
+
]
|
239 |
+
]
|
240 |
+
);
|
241 |
+
|
242 |
+
/*End Video Settings Section*/
|
243 |
+
$this->end_controls_section();
|
244 |
+
|
245 |
+
/*Start Text Below Icon Style Section*/
|
246 |
+
$this->start_controls_section('premium_video_box_text_style_section',
|
247 |
+
[
|
248 |
+
'label' => esc_html__('Video Box Style','premium_elementor'),
|
249 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
250 |
+
]
|
251 |
+
);
|
252 |
+
/*Box Text Shadow*/
|
253 |
+
$this->add_group_control(
|
254 |
+
Group_Control_Box_Shadow::get_type(),
|
255 |
+
[
|
256 |
+
'name' => 'box_shadow',
|
257 |
+
'selector' => '{{WRAPPER}} .premium-video-box-container',
|
258 |
+
]
|
259 |
+
);
|
260 |
+
|
261 |
+
/*Text Color*/
|
262 |
+
$this->add_control('premium_video_box_text_color',
|
263 |
+
[
|
264 |
+
'label' => esc_html__('Text Color', 'premium_elementor'),
|
265 |
+
'type' => Controls_Manager::COLOR,
|
266 |
+
'selectors' => [
|
267 |
+
'{{WRAPPER}} .premium-video-box-text' => 'color: {{VALUE}};',
|
268 |
+
]
|
269 |
+
]
|
270 |
+
);
|
271 |
+
|
272 |
+
/*Text Typography*/
|
273 |
+
$this->add_group_control(
|
274 |
+
Group_Control_Typography::get_type(),
|
275 |
+
[
|
276 |
+
'name' => 'text_typography',
|
277 |
+
'scheme' => Scheme_Typography::TYPOGRAPHY_1,
|
278 |
+
'selector' => '{{WRAPPER}} .premium-video-box-text',
|
279 |
+
]
|
280 |
+
);
|
281 |
+
|
282 |
+
/*End Text Below Icon Style Section*/
|
283 |
+
$this->end_controls_section();
|
284 |
+
|
285 |
+
}
|
286 |
+
|
287 |
+
protected function render($instance = [])
|
288 |
+
{
|
289 |
+
// get our input from the widget settings.
|
290 |
+
$settings = $this->get_settings();
|
291 |
+
|
292 |
+
$video_type = $settings['premium_video_box_video_type'];
|
293 |
+
|
294 |
+
$video_url_type = $settings['premium_video_box_video_id_embed_selection'];
|
295 |
+
|
296 |
+
$video_id = $settings['premium_video_box_video_id'];
|
297 |
+
|
298 |
+
$video_embed = $settings['premium_video_box_video_embed'];
|
299 |
+
?>
|
300 |
+
|
301 |
+
<div class="premium-video-box-container" id="premium-video-box-container-<?php echo esc_attr( $this->get_id() ); ?>">
|
302 |
+
<div class="premium-video-box-image-container">
|
303 |
+
<img class="premium-video-box-image" src="<?php echo $settings['premium_video_box_image']['url']; ?>">
|
304 |
+
</div>
|
305 |
+
<div class="premium-video-box-play-icon-container">
|
306 |
+
<i class="premium-video-box-play-icon fa fa-play fa-lg"<?php if ( $settings['premium_video_box_icon_hover_animation'] === 'yes' ) : ?> onMouseOver="this.style.padding='18px'" onMouseOut="this.style.padding='15px'" <?php endif; ?>>
|
307 |
+
</i>
|
308 |
+
</div>
|
309 |
+
<?php if( !empty( $settings['premium_video_box_description_text'] ) ) : ?>
|
310 |
+
<div class="premium-video-box-description-container">
|
311 |
+
<p class="premium-video-box-text"><?php echo $settings['premium_video_box_description_text']; ?></p>
|
312 |
+
</div>
|
313 |
+
<?php endif; ?>
|
314 |
+
<div class="premium-video-box-video-container">
|
315 |
+
<?php if ( $video_type === 'youtube'){ ?>
|
316 |
+
<?php if ( $video_url_type === 'id' && !empty( $video_id ) ) : ?>
|
317 |
+
<iframe src="https://www.youtube.com/embed/<?php echo $video_id; ?>" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen>
|
318 |
+
</iframe>
|
319 |
+
<?php elseif ( $video_url_type === 'embed' && !empty( $video_embed ) ) : ?>
|
320 |
+
<iframe src="<?php echo $video_embed; ?>" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen>
|
321 |
+
</iframe>
|
322 |
+
<?php endif; ?>
|
323 |
+
<?php } elseif ( $video_type === 'vimeo'){ ?>
|
324 |
+
<?php if ( $video_url_type === 'id' && !empty( $video_id ) ) : ?>
|
325 |
+
<iframe src="https://player.vimeo.com/video/<?php echo $video_id; ?>" frameborder="0" title="Medicine" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="" class="fluidvids-item" data-fluidvids="loaded">
|
326 |
+
</iframe>
|
327 |
+
<?php elseif ( $video_url_type === 'embed' && !empty( $video_embed ) ) : ?>
|
328 |
+
<iframe src="<?php echo $video_embed; ?>?byline=0&portrait=0" frameborder="0" top="0" webkitallowfullscreen mozallowfullscreen allowfullscreen>
|
329 |
+
</iframe>
|
330 |
+
<?php endif; ?>
|
331 |
+
<?php } ?>
|
332 |
+
|
333 |
+
</div>
|
334 |
+
</div>
|
335 |
+
<script>
|
336 |
+
jQuery(function( $ ){
|
337 |
+
$( "#premium-video-box-container-<?php echo esc_attr( $this->get_id() ); ?>" ).on( "click", function(){
|
338 |
+
$( this ).children( ".premium-video-box-video-container" ).css(
|
339 |
+
{
|
340 |
+
'opacity': '1',
|
341 |
+
'visibility': 'visible'
|
342 |
+
} );
|
343 |
+
} )
|
344 |
+
});;
|
345 |
+
</script>
|
346 |
+
|
347 |
+
<?php
|
348 |
+
}
|
349 |
+
}
|
350 |
+
Plugin::instance()->widgets_manager->register_widget_type(new Premium_Video_Box_Widget());
|
351 |
+
|
352 |
+
|
353 |
+
|