diff --git a/.wordpress-org/screenshot-2.png b/.wordpress-org/screenshot-2.png
new file mode 100644
index 0000000..fafd7a4
Binary files /dev/null and b/.wordpress-org/screenshot-2.png differ
diff --git a/README.md b/README.md
index 67758f8..75ffc5c 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
# Variable Inspector
Contributors: qriouslad
-Donate link: https://bowo.io/dotorg-sponsor-vi
+Donate link: https://bowo.io/vi-sp-rdm
Tags: php variables, variable dump, debug, developer
Requires at least: 4.8
Tested up to: 6.2
-Stable tag: 2.2.1
+Stable tag: 2.3.0
Requires PHP: 5.6
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -16,12 +16,22 @@ Inspect PHP variables on a central dashboard in wp-admin for convenient debuggin
## Description
-Variable Inspector allows you to easily inspect your PHP $variables in a visually clean manner at a central dashboard in wp-admin. It aims to be an **easy and useful enough debug tool**.
+Variable Inspector allows you to easily inspect your PHP $variables in a visually clean manner at a central dashboard in wp-admin. It aims to be an **easy and useful enough dev and debug tool**.
It provides **a single-line code** to inspect your variable (see "How to Use" below). Nothing is shown to site visitors nor being output on the frontend, and the **$variable content is nicely formatted for review** using [var_dump()](https://www.php.net/manual/en/function.var-dump.php), [var_export()](https://www.php.net/manual/en/function.var-export.php) and [print_r()](https://www.php.net/manual/en/function.print-r.php) on the inspector dashboard in wp-admin.
It's a real time-saver for scenarios where [Xdebug](https://xdebug.org/) or even something like [Ray](https://myray.app/) is not ideal or simply an overkill. For example, when coding on a non-local environment via tools like [Code Snippets](https://wordpress.org/plugins/code-snippets/), [WPCodeBox](https://wpcodebox.com/), [Scripts Organizer](https://dplugins.com/products/scripts-organizer/) or [Advanced Scripts](https://www.cleanplugins.com/products/advanced-scripts/). Additionally, because it is a regular WordPress plugin, you simply install, activate and use without the need for complicated configuration.
+### What Users Say
+
+_"**Works great!** Love this thing."_ ~[Josh](https://wordpress.org/support/topic/works-great-8269/)
+
+_"**Every developer need it.** You can debug easily every variable."_ ~[Pexle Chris](https://wordpress.org/support/topic/awsome-plugin-that-every-developer-need-it/)
+
+_"**All I need**. Enough to test the function of snippets. Works flawless."_ ~[@tesig](https://wordpress.org/support/topic/all-i-need-39/)
+
+_"**It does what it does very well**, and doesn't try to do everything."_ ~[@swb1](https://wordpress.org/support/topic/exactly-what-i-needed-868/)
+
### How to Use
Simply place the following line anywhere in your code after the `$variable_name` you'd like to inspect:
@@ -36,10 +46,27 @@ This would help you locate and clean up the inspector lines once you're done deb
### Give Back
-* [A nice review](https://bowo.io/add-review-vi) would be great!
-* [Give feedback](https://bowo.io/feedback-vi) and help improve future versions.
-* [Github repo](https://bowo.io/github-vi) to contribute code.
-* [Sponsor](https://bowo.io/dotorg-sponsor-vi) my work.
+* [A nice review](https://bowo.io/vi-rvw-dsc) would be great!
+* [Give feedback](https://bowo.io/vi-fdbk-dsc) and help improve future versions.
+* [Github repo](https://bowo.io/vi-gthb-dsc) to contribute code.
+* Sponsor my work with as little as USD 1 [monthly](https://bowo.io/vi-sp-gth-rdm) or [one-time](https://bowo.io/vi-sp-ppl-rdm).
+
+### PRO Version
+
+If you need something more versatile for larger, more complex projects, these PRO features might come in handy:
+
+- **vi( $variable )** inspector to replace the do_action() above and automatically includes the file path and line number.
+- **dump_print_r** and **dump_print_tree** viewers: both viewers combines var_dump and print_r, with the later allowing for collapsing and expanding data nodes, which is especially useful for inspecting long and complex arrays and objects.
+- **kint** viewer: an advanced viewer with table view for multi-dimensional arrays, node access path info, capability to search inside variables, pop-up window viewing and advanced info for your complex objects, e.g. available methods and static class properties.
+- **Categorize and filter results by color**. This, for example, allows you to categorize $variables according to which stage they're in inside your code.
+- **Add counter or notes** to inspection results. Another way to tag $variables and provide context for the inspection results.
+- **Search filter**: easily find certain $variables by name and type.
+- **View up to 250 results**. The free version is limited to 25 results.
+- **Individual and bulk deletion** of results. Easily clean up your inspection dashboard from obsolete results you no longer need to reference.
+
+See a screenshot of the PRO version below in the screenshots section.
+
+To upgrade, simply go to Variable Inspector dashboard in wp-admin and hit the Upgrade button. Or, go to this [hosted page](https://bowo.io/vi-up-hstd-dsc).
### Check These Out Too
@@ -48,21 +75,34 @@ This would help you locate and clean up the inspector lines once you're done deb
* [Debug Log Manager](https://wordpress.org/plugins/debug-log-manager/): Log PHP, database and JavaScript errors via WP_DEBUG with one click. Conveniently create, view, filter and clear the debug.log file.
* [Code Explorer](https://wordpress.org/plugins/code-explorer/): Fast directory explorer and file/code viewer with syntax highlighting.
* [Flexible Scroll Top](https://wordpress.org/plugins/flexible-scroll-top/) and [Floating Share Buttons](https://wordpress.org/plugins/floating-share-button/) is a lightweight combo with minimalist UI.
-* [WordPress Newsboard](https://www.wpnewsboard.com/): The latest news, articles, podcasts and videos from 100+ WordPress-focused sources.
+* [WordPress Newsboard](https://bowo.io/vi-wpn-dsc): The latest news, articles, podcasts and videos from 100+ WordPress-focused sources.
## Screenshots
1. The variable inspection dashboard

+2. The PRO version
+ 
## Frequently Asked Questions
### How was this plugin built?
-Variable Inspector was built with: [WordPress Plugin Boilerplate](https://github.com/devinvinson/WordPress-Plugin-Boilerplate/) | [wppb.me](https://wppb.me/) | [CodeStar framework](https://github.com/Codestar/codestar-framework) | [Simple Accordion](https://codepen.io/gecugamo/pen/xGLyXe) | [Fomantic UI](https://fomantic-ui.com/). It was originally inspired by [WP Logger](https://wordpress.org/plugins/wp-data-logger/).
+Variable Inspector was built with: [WordPress Plugin Boilerplate](https://github.com/devinvinson/WordPress-Plugin-Boilerplate/) | [wppb.me](https://wppb.me/) | [Simple Accordion](https://codepen.io/gecugamo/pen/xGLyXe) | [Fomantic UI](https://fomantic-ui.com/). It was originally inspired by [WP Logger](https://wordpress.org/plugins/wp-data-logger/).
## Changelog
+### Sponsor Admin and Site Enhancements
+
+If this plugin has been useful for your **personal project(s), paid dev work, client site(s) and or agency's workflow**, please kindly consider **sponsoring from as little as USD 1**([monthly](https://bowo.io/vi-sp-gth-chnlg) or [one-time](https://bowo.io/vi-sp-ppl-chnlg)). This helps ensure you're going to continue seeing **new features and/or fixes**, hopefully for years to come. Thank you!
+
+### 2.3.0 (2023.04.24)
+
+* Add identification and labeling of 'float' / 'double' variable type
+* Add results counter. Shown next to the 'Results' heading.
+* Added modal window for sponsorship
+* Launch of PRO version. To find out and/or upgrade, simply click on the green 'Upgrade' button in the inspection dashboard. Lifetime license is available.
+
### 2.2.1 (2023.04.16)
* Improve escaping of variables with string type. Preventing inspector layout / HTML output interferrence, especially when the string contains HTML tags.
diff --git a/admin/class-variable-inspector-admin.php b/admin/class-variable-inspector-admin.php
index 86fbecd..0a946a4 100644
--- a/admin/class-variable-inspector-admin.php
+++ b/admin/class-variable-inspector-admin.php
@@ -99,6 +99,13 @@ public function enqueue_styles()
$this->version,
'all'
);
+ wp_enqueue_style(
+ $this->plugin_name . '-jbox',
+ plugin_dir_url( __FILE__ ) . 'css/jBox.all.min.css',
+ array(),
+ $this->version,
+ 'all'
+ );
}
/**
@@ -147,6 +154,13 @@ public function enqueue_scripts()
$this->version,
false
);
+ wp_enqueue_script(
+ $this->plugin_name . '-jbox',
+ plugin_dir_url( __FILE__ ) . 'js/jBox.all.min.js',
+ array(),
+ $this->version,
+ false
+ );
$preferred_viewer = get_user_meta( get_current_user_id(), 'variable_inspector_viewer' );
if ( empty($preferred_viewer) ) {
$preferred_viewer = 'var_export';
@@ -168,6 +182,9 @@ public function vi_inspect_variable( $args = array() )
if ( false === $result ) {
$variable_type = gettype( $args[1] );
+ if ( 'double' == $variable_type ) {
+ $variable_type = 'float';
+ }
$variable_name = $args[0];
$variable_content = maybe_serialize( $args[1] );
$file_path = ( !empty($args[2]) ? '/' . str_replace( ABSPATH, '', $args[2] ) : '' );
@@ -237,14 +254,16 @@ public function vi_generate_sample_results()
] );
$vehicle_types = array(
'bicycle' => array(
- 'fuel' => 'food',
- 'wheels' => 2,
- 'ecofriendly' => true,
+ 'fuel' => 'food',
+ 'wheels' => 2,
+ 'price_in_usd' => 399.99,
+ 'ecofriendly' => true,
),
'car' => array(
- 'fuel' => 'gasoline',
- 'wheels' => 4,
- 'ecofriendly' => false,
+ 'fuel' => 'gasoline',
+ 'wheels' => 4,
+ 'price_in_usd' => 14999.99,
+ 'ecofriendly' => false,
),
);
do_action( 'inspect', [
@@ -285,6 +304,13 @@ public function vi_generate_sample_results()
__FILE__,
__LINE__
] );
+ $discounted_price = 99.98999999999999;
+ do_action( 'inspect', [
+ 'discounted_price',
+ $discounted_price,
+ __FILE__,
+ __LINE__
+ ] );
$count = 1024;
do_action( 'inspect', [
'count',
@@ -312,20 +338,20 @@ public function vi_inspection_results()
$output = '';
$output .= '
- Variable Inspector is on github
+ Variable Inspector is on github
WordPress Newsboard: The latest from 100+ sources';
+ return 'Also by Bowo → WordPress Newsboard : The latest from 100+ sources';
}
/**
diff --git a/admin/css/jBox.all.min.css b/admin/css/jBox.all.min.css
new file mode 100644
index 0000000..850c56c
--- /dev/null
+++ b/admin/css/jBox.all.min.css
@@ -0,0 +1 @@
+.jBox-wrapper{text-align:left;box-sizing:border-box}.jBox-container,.jBox-content,.jBox-title{position:relative;word-break:break-word;box-sizing:border-box}.jBox-container{background:#fff}.jBox-content{padding:8px 12px;overflow-x:hidden;overflow-y:auto;transition:opacity .2s}.jBox-footer{box-sizing:border-box}.jBox-Mouse .jBox-container,.jBox-Tooltip .jBox-container{border-radius:4px;box-shadow:0 0 3px rgba(0,0,0,.25)}.jBox-Mouse .jBox-title,.jBox-Tooltip .jBox-title{padding:8px 10px 0;font-weight:700}.jBox-Mouse.jBox-hasTitle .jBox-content,.jBox-Tooltip.jBox-hasTitle .jBox-content{padding-top:5px}.jBox-Mouse{pointer-events:none}.jBox-pointer{position:absolute;overflow:hidden;box-sizing:border-box}.jBox-pointer:after{content:'';width:20px;height:20px;position:absolute;background:#fff;transform:rotate(45deg);box-sizing:border-box}.jBox-pointer-top{top:0}.jBox-pointer-top:after{left:5px;top:6px;box-shadow:-1px -1px 2px rgba(0,0,0,.15)}.jBox-pointer-right{right:0}.jBox-pointer-right:after{top:5px;right:6px;box-shadow:1px -1px 2px rgba(0,0,0,.15)}.jBox-pointer-left{left:0}.jBox-pointer-left:after{top:5px;left:6px;box-shadow:-1px 1px 2px rgba(0,0,0,.15)}.jBox-pointer-bottom{bottom:0}.jBox-pointer-bottom:after{left:5px;bottom:6px;box-shadow:1px 1px 2px rgba(0,0,0,.15)}.jBox-pointer-bottom,.jBox-pointer-top{width:30px;height:12px}.jBox-pointer-left,.jBox-pointer-right{width:12px;height:30px}.jBox-Modal .jBox-container{border-radius:4px}.jBox-Modal .jBox-container,.jBox-Modal.jBox-closeButton-box:before{box-shadow:0 3px 15px rgba(0,0,0,.4),0 0 5px rgba(0,0,0,.4)}.jBox-Modal .jBox-content{padding:15px 20px}.jBox-Modal .jBox-title{border-radius:4px 4px 0 0;padding:15px 20px;background:#fafafa;border-bottom:1px solid #eee}.jBox-Modal.jBox-closeButton-title .jBox-title{padding-right:65px}.jBox-Modal .jBox-footer{border-radius:0 0 4px 4px}.jBox-closeButton{z-index:1;cursor:pointer;position:absolute;box-sizing:border-box}.jBox-closeButton svg{position:absolute;top:50%;right:50%}.jBox-closeButton path{fill:#aaa;transition:fill .2s}.jBox-closeButton:hover path{fill:#888}.jBox-overlay .jBox-closeButton{top:0;right:0;width:40px;height:40px}.jBox-overlay .jBox-closeButton svg{width:20px;height:20px;margin-top:-10px;margin-right:-10px}.jBox-overlay .jBox-closeButton path{fill:#ddd}.jBox-overlay .jBox-closeButton:hover path{fill:#fff}.jBox-closeButton-title .jBox-closeButton{top:0;right:0;bottom:0;width:50px}.jBox-closeButton-title svg{width:12px;height:12px;margin-top:-6px;margin-right:-6px}.jBox-closeButton-box{box-sizing:border-box}.jBox-closeButton-box .jBox-closeButton{top:-8px;right:-10px;width:24px;height:24px;background:#fff;border-radius:50%}.jBox-closeButton-box .jBox-closeButton svg{width:10px;height:10px;margin-top:-5px;margin-right:-5px}.jBox-closeButton-box:before{content:'';position:absolute;top:-8px;right:-10px;width:24px;height:24px;border-radius:50%;box-shadow:0 0 5px rgba(0,0,0,.3)}.jBox-closeButton-box.jBox-pointerPosition-top:before{top:5px}.jBox-closeButton-box.jBox-pointerPosition-right:before{right:2px}.jBox-Modal.jBox-hasTitle.jBox-closeButton-box .jBox-closeButton{background:#fafafa}.jBox-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.82)}.jBox-footer{background:#fafafa;border-top:1px solid #eee;padding:8px 10px;border-radius:0 0 3px 3px}body[class*=" jBox-blockScroll-"],body[class^=jBox-blockScroll-]{overflow:hidden}.jBox-draggable{cursor:move}@keyframes jBoxLoading{to{transform:rotate(360deg)}}.jBox-loading .jBox-content{opacity:.2}.jBox-loading-spinner .jBox-content{min-height:38px!important;min-width:38px!important;opacity:0}.jBox-spinner{box-sizing:border-box;position:absolute;top:50%;left:50%;width:24px;height:24px;margin-top:-12px;margin-left:-12px}.jBox-spinner:before{display:block;box-sizing:border-box;content:'';width:24px;height:24px;border-radius:50%;border:2px solid rgba(0,0,0,.2);border-top-color:rgba(0,0,0,.8);animation:jBoxLoading .6s linear infinite}.jBox-countdown{border-radius:4px 4px 0 0;z-index:0;background:#000;opacity:.2;position:absolute;top:0;left:0;right:0;height:3px;overflow:hidden}.jBox-countdown-inner{top:0;right:0;width:100%;height:3px;position:absolute;background:#fff}[class*=" jBox-animated-"],[class^=jBox-animated-]{animation-fill-mode:both}@keyframes jBox-tada{0%{transform:scale(1)}10%,20%{transform:scale(.8) rotate(-4deg)}30%,50%,70%,90%{transform:scale(1.2) rotate(4deg)}40%,60%,80%{transform:scale(1.2) rotate(-4deg)}100%{transform:scale(1) rotate(0)}}.jBox-animated-tada{animation:jBox-tada 1s}@keyframes jBox-tadaSmall{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-2deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(2deg)}40%,60%,80%{transform:scale(1.1) rotate(-2deg)}100%{transform:scale(1) rotate(0)}}.jBox-animated-tadaSmall{animation:jBox-tadaSmall 1s}@keyframes jBox-flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.jBox-animated-flash{animation:jBox-flash .5s}@keyframes jBox-shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}.jBox-animated-shake{animation:jBox-shake .4s}@keyframes jBox-pulseUp{0%{transform:scale(1)}50%{transform:scale(1.15)}100%{transform:scale(1)}}.jBox-animated-pulseUp{animation:jBox-pulseUp .25s}@keyframes jBox-pulseDown{0%{transform:scale(1)}50%{transform:scale(.85)}100%{transform:scale(1)}}.jBox-animated-pulseDown{animation:jBox-pulseDown .25s}@keyframes jBox-popIn{0%{transform:scale(0)}50%{transform:scale(1.1)}100%{transform:scale(1)}}.jBox-animated-popIn{animation:jBox-popIn .25s}@keyframes jBox-popOut{0%{transform:scale(1)}50%{transform:scale(1.1)}100%{transform:scale(0)}}.jBox-animated-popOut{animation:jBox-popOut .25s}@keyframes jBox-fadeIn{0%{opacity:0}100%{opacity:1}}.jBox-animated-fadeIn{animation:jBox-fadeIn .2s}@keyframes jBox-fadeOut{0%{opacity:1}100%{opacity:0}}.jBox-animated-fadeOut{animation:jBox-fadeOut .2s}@keyframes jBox-slideUp{0%{transform:translateY(0)}100%{transform:translateY(-300px);opacity:0}}.jBox-animated-slideUp{animation:jBox-slideUp .4s}@keyframes jBox-slideRight{0%{transform:translateX(0)}100%{transform:translateX(300px);opacity:0}}.jBox-animated-slideRight{animation:jBox-slideRight .4s}@keyframes jBox-slideDown{0%{transform:translateY(0)}100%{transform:translateY(300px);opacity:0}}.jBox-animated-slideDown{animation:jBox-slideDown .4s}@keyframes jBox-slideLeft{0%{transform:translateX(0)}100%{transform:translateX(-300px);opacity:0}}.jBox-animated-slideLeft{animation:jBox-slideLeft .4s}.jBox-Confirm .jBox-content{text-align:center;padding:46px 35px}@media (max-width:500px){.jBox-Confirm .jBox-content{padding:32px 20px}}.jBox-Confirm-footer{height:46px}.jBox-Confirm-button{display:block;float:left;cursor:pointer;text-align:center;width:50%;line-height:46px;height:46px;overflow:hidden;padding:0 10px;transition:color .2s,background-color .2s;box-sizing:border-box}.jBox-Confirm-button-cancel{border-bottom-left-radius:4px;background:#ddd;color:#666}.jBox-Confirm-button-cancel:active,.jBox-Confirm-button-cancel:hover{background:#ccc}.jBox-Confirm-button-cancel:active{box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.jBox-Confirm-button-submit{border-bottom-right-radius:4px;background:#7d0;color:#fff}.jBox-Confirm-button-submit:active,.jBox-Confirm-button-submit:hover{background:#6c0}.jBox-Confirm-button-submit:active{box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.jBox-Image .jBox-container{background-color:transparent}.jBox-Image .jBox-content{padding:0;width:100%;height:100%}.jBox-image-container{background:center center no-repeat;position:absolute;width:100%;height:100%;opacity:0}.jBox-image-label-wrapper{position:absolute;top:100%;left:0;right:0;height:40px;z-index:100;display:flex}.jBox-image-label-container{position:relative;flex:1}.jBox-image-label{box-sizing:border-box;position:absolute;left:0;bottom:0;width:100%;text-align:center;color:#fff;padding:8px 12px;font-size:15px;line-height:24px;transition:opacity .36s;opacity:0;z-index:0;pointer-events:none}.jBox-image-label.expanded{background:#000}.jBox-image-label:not(.expanded){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.jBox-image-label.active{opacity:1;pointer-events:all}@media (max-width:600px){.jBox-image-label{font-size:13px}}.jBox-image-pointer-next,.jBox-image-pointer-prev{flex-shrink:0;width:40px;height:40px;cursor:pointer;opacity:.8;transition:opacity .2s;background:no-repeat center center url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ijc0LjcgMjI0IDE4LjcgMzIiPg0KPHBhdGggZmlsbD0iI2ZmZmZmZiIgZD0iTTkzLDIyNy40TDgwLjQsMjQwTDkzLDI1Mi42YzAuNCwwLjQsMC40LDEuMSwwLDEuNWwtMS42LDEuNmMtMC40LDAuNC0xLDAuNS0xLjUsMEw3NSwyNDAuN2MtMC40LTAuNC0wLjUtMSwwLTEuNWwxNC45LTE0LjljMC40LTAuNCwxLTAuNCwxLjUsMGwxLjYsMS42QzkzLjUsMjI2LjQsOTMuNCwyMjcsOTMsMjI3LjR6Ii8+DQo8L3N2Zz4=);background-size:11px auto;user-select:none;z-index:1}.jBox-image-pointer-next:hover,.jBox-image-pointer-prev:hover{opacity:1}.jBox-image-pointer-next{transform:scaleX(-1)}.jBox-image-counter-container{flex-shrink:0;white-space:nowrap;height:40px;line-height:40px;font-size:13px;color:#fff;text-align:right;display:none}.jBox-image-has-counter .jBox-image-counter-container{display:block}.jBox-overlay.jBox-overlay-Image{background:#000}.jBox-image-not-found{background:#000}.jBox-image-not-found:before{content:'';box-sizing:border-box;display:block;width:80px;height:80px;margin-top:-40px;margin-left:-40px;position:absolute;top:50%;left:50%;border:5px solid #222;border-radius:50%}.jBox-image-not-found:after{content:'';display:block;box-sizing:content-box;z-index:auto;width:6px;height:74px;margin-top:-37px;margin-left:-3px;position:absolute;top:50%;left:50%;background:#222;transform:rotateZ(45deg);transform-origin:50% 50% 0}.jBox-image-download-button-wrapper{position:absolute;top:-40px;right:35px;height:40px;display:flex;cursor:pointer;opacity:.8;transition:opacity .2s}.jBox-image-download-button-wrapper:hover{opacity:1}.jBox-image-download-button-icon{width:40px;height:40px;background:center center no-repeat url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNjQwIj48cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNNDE2IDI1NnYtMTkyaC0xOTJ2MTkyaC0xNjBsMjU2IDI1NiAyNTYtMjU2aC0xNjB6TTAgNTc2aDY0MHY2NGgtNjQwdi02NHoiPjwvcGF0aD48L3N2Zz4=);background-size:60%}.jBox-image-download-button-text{white-space:nowrap;line-height:40px;padding:0 10px 0 0;color:#fff;font-size:14px}@keyframes jBoxImageLoading{to{transform:rotate(360deg)}}.jBox-image-loading:before{content:'';position:absolute;top:50%;left:50%;width:32px;height:32px;margin-top:-16px;margin-left:-16px;border:4px solid #333;border-bottom-color:#666;animation:jBoxImageLoading 1.2s linear infinite;border-radius:50%}.jBox-Notice{transition:margin .2s}.jBox-Notice .jBox-container{border-radius:4px;box-shadow:inset 1px 1px 0 0 rgba(255,255,255,.25),inset -1px -1px 0 0 rgba(0,0,0,.1)}.jBox-Notice .jBox-content{border-radius:4px;padding:12px 20px}@media (max-width:768px){.jBox-Notice .jBox-content{padding:10px 15px}}@media (max-width:500px){.jBox-Notice .jBox-content{padding:8px 10px}}.jBox-Notice.jBox-hasTitle .jBox-content{padding-top:5px}@media (max-width:500px){.jBox-Notice.jBox-hasTitle .jBox-content{padding-top:0}}.jBox-Notice.jBox-hasTitle .jBox-title{padding:12px 20px 0;font-weight:700}@media (max-width:768px){.jBox-Notice.jBox-hasTitle .jBox-title{padding:10px 15px 0}}@media (max-width:500px){.jBox-Notice.jBox-hasTitle .jBox-title{padding:8px 10px 0}}.jBox-Notice.jBox-closeButton-title .jBox-title{padding-right:55px}.jBox-Notice.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton{width:40px}.jBox-Notice.jBox-Notice-black .jBox-container{color:#fff;background:#000}.jBox-Notice.jBox-Notice-black.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton path,.jBox-Notice.jBox-Notice-black.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton:hover path{fill:#fff}.jBox-Notice.jBox-Notice-gray .jBox-container{color:#222;background:#f6f6f6}.jBox-Notice.jBox-Notice-gray.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton path,.jBox-Notice.jBox-Notice-gray.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton:hover path{fill:#222}.jBox-Notice.jBox-Notice-red .jBox-container{color:#fff;background:#d00}.jBox-Notice.jBox-Notice-red.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton path,.jBox-Notice.jBox-Notice-red.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton:hover path{fill:#fff}.jBox-Notice.jBox-Notice-green .jBox-container{color:#fff;background:#5d0}.jBox-Notice.jBox-Notice-green.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton path,.jBox-Notice.jBox-Notice-green.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton:hover path{fill:#fff}.jBox-Notice.jBox-Notice-blue .jBox-container{color:#fff;background:#49d}.jBox-Notice.jBox-Notice-blue.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton path,.jBox-Notice.jBox-Notice-blue.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton:hover path{fill:#fff}.jBox-Notice.jBox-Notice-yellow .jBox-container{color:#000;background:#fd0}.jBox-Notice.jBox-Notice-yellow.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton path,.jBox-Notice.jBox-Notice-yellow.jBox-closeButton-title.jBox-hasTitle .jBox-closeButton:hover path{fill:#fff}.jBox-NoticeFancy .jBox-content,.jBox-NoticeFancy .jBox-title{padding-left:25px}.jBox-NoticeFancy.jBox-Notice-color .jBox-container{color:#fff;background:#000}.jBox-NoticeFancy.jBox-Notice-color .jBox-container:after{content:'';position:absolute;top:0;left:0;bottom:0;width:8px;border-radius:4px 0 0 4px;background-image:linear-gradient(45deg,rgba(255,255,255,.4) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.4) 50%,rgba(255,255,255,.4) 75%,transparent 75%,transparent);background-size:14px 14px}.jBox-NoticeFancy.jBox-Notice-black .jBox-container:after,.jBox-NoticeFancy.jBox-Notice-gray .jBox-container:after{background-color:#888}.jBox-NoticeFancy.jBox-Notice-red .jBox-container:after{background-color:#e00}.jBox-NoticeFancy.jBox-Notice-green .jBox-container:after{background-color:#6c0}.jBox-NoticeFancy.jBox-Notice-blue .jBox-container:after{background-color:#49d}.jBox-NoticeFancy.jBox-Notice-yellow .jBox-container:after{background-color:#fb0}.jBox-NoticeFancy .jBox-countdown{left:8px;border-radius:0 4px 0 0}.jBox-TooltipBorder .jBox-container,.jBox-TooltipBorder .jBox-pointer:after{border:2px solid #49d}.jBox-TooltipBorder .jBox-pointer:after{width:22px;height:22px}.jBox-TooltipBorder .jBox-pointer-bottom,.jBox-TooltipBorder .jBox-pointer-top{width:34px;height:13px}.jBox-TooltipBorder .jBox-pointer-bottom:after,.jBox-TooltipBorder .jBox-pointer-top:after{left:6px}.jBox-TooltipBorder .jBox-pointer-left,.jBox-TooltipBorder .jBox-pointer-right{width:13px;height:34px}.jBox-TooltipBorder .jBox-pointer-left:after,.jBox-TooltipBorder .jBox-pointer-right:after{top:6px}.jBox-TooltipBorder.jBox-closeButton-box:before{width:28px;height:28px;background:#49d}.jBox-TooltipBorderThick .jBox-container{box-shadow:none;border-radius:8px;border:4px solid #ccc}.jBox-TooltipBorderThick .jBox-pointer:after{box-shadow:none;border:4px solid #ccc;width:24px;height:24px}.jBox-TooltipBorderThick .jBox-pointer-bottom,.jBox-TooltipBorderThick .jBox-pointer-top{width:38px;height:13px}.jBox-TooltipBorderThick .jBox-pointer-left,.jBox-TooltipBorderThick .jBox-pointer-right{width:13px;height:38px}.jBox-TooltipBorderThick.jBox-closeButton-box:before{width:32px;height:32px;background:#ccc}.jBox-TooltipDark .jBox-container{border-radius:4px;background:#000;color:#fff;box-shadow:0 0 6px rgba(0,0,0,.4)}.jBox-TooltipDark .jBox-pointer:after{background:#000}.jBox-TooltipDark .jBox-closeButton{background:#000}.jBox-TooltipDark.jBox-closeButton-box:before{box-shadow:0 0 6px rgba(0,0,0,.4)}.jBox-TooltipDark.jBox-closeButton-box .jBox-closeButton path{fill:#ddd}.jBox-TooltipDark.jBox-closeButton-box .jBox-closeButton:hover path{fill:#fff}.jBox-TooltipDark.jBox-closeButton-box .jBox-closeButton:active path{fill:#bbb}.jBox-TooltipError{pointer-events:none}.jBox-TooltipError .jBox-container{border-radius:2px;background:#d00;color:#fff;font-weight:700;font-size:13px}.jBox-TooltipError .jBox-content{padding:0 10px;line-height:28px}.jBox-TooltipError .jBox-pointer:after{background:#d00;width:20px;height:20px}.jBox-TooltipError .jBox-pointer-bottom,.jBox-TooltipError .jBox-pointer-top{width:22px;height:8px}.jBox-TooltipError .jBox-pointer-left,.jBox-TooltipError .jBox-pointer-right{width:8px;height:22px}.jBox-TooltipError .jBox-pointer-top:after{left:1px;top:6px}.jBox-TooltipError .jBox-pointer-right:after{top:1px;right:6px}.jBox-TooltipError .jBox-pointer-bottom:after{left:1px;bottom:6px}.jBox-TooltipError .jBox-pointer-left:after{top:1px;left:6px}.jBox-TooltipSmall{pointer-events:none}.jBox-TooltipSmall .jBox-container{border-radius:2px}.jBox-TooltipSmall .jBox-content{padding:0 10px;line-height:28px}.jBox-TooltipSmall .jBox-pointer:after{width:20px;height:20px}.jBox-TooltipSmall .jBox-pointer-bottom,.jBox-TooltipSmall .jBox-pointer-top{width:22px;height:8px}.jBox-TooltipSmall .jBox-pointer-left,.jBox-TooltipSmall .jBox-pointer-right{width:8px;height:22px}.jBox-TooltipSmall .jBox-pointer-top:after{left:1px;top:6px}.jBox-TooltipSmall .jBox-pointer-right:after{top:1px;right:6px}.jBox-TooltipSmall .jBox-pointer-bottom:after{left:1px;bottom:6px}.jBox-TooltipSmall .jBox-pointer-left:after{top:1px;left:6px}.jBox-TooltipSmallGray{pointer-events:none}.jBox-TooltipSmallGray .jBox-container{font-size:13px;line-height:24px;border-radius:12px;background-image:linear-gradient(to bottom,#fafafa,#f2f2f2)}.jBox-TooltipSmallGray .jBox-content{padding:0 10px}.jBox-TooltipSmallGray .jBox-pointer:after{width:20px;height:20px}.jBox-TooltipSmallGray .jBox-pointer-bottom,.jBox-TooltipSmallGray .jBox-pointer-top{width:22px;height:8px}.jBox-TooltipSmallGray .jBox-pointer-left,.jBox-TooltipSmallGray .jBox-pointer-right{width:8px;height:22px}.jBox-TooltipSmallGray .jBox-pointer-top:after{background:#fafafa;left:1px;top:6px}.jBox-TooltipSmallGray .jBox-pointer-right:after{top:1px;right:6px}.jBox-TooltipSmallGray .jBox-pointer-bottom:after{background:#f2f2f2;left:1px;bottom:6px}.jBox-TooltipSmallGray .jBox-pointer-left:after{top:1px;left:6px}
\ No newline at end of file
diff --git a/admin/css/variable-inspector-admin.css b/admin/css/variable-inspector-admin.css
index 5f9f01f..aee6fe3 100644
--- a/admin/css/variable-inspector-admin.css
+++ b/admin/css/variable-inspector-admin.css
@@ -103,10 +103,21 @@
.vi .inspector-header h2 {
line-height: 22px;
- width: 10%;
+ width: 112px;
color: #3c434a;
}
+.vi .results-counter {
+ display: inline-block;
+ margin-right: 4px;
+ font-size: 0.8125em;
+ color: #bbb;
+}
+
+.vi #results-spinner {
+ margin-left: -6px;
+}
+
.vi img.spinner_inline {
height: 1em;
width: 1em;
@@ -117,14 +128,14 @@
}
.vi .inspector-actions {
- width: 90%;
+ width: calc( 100% - 120px );
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
-.vi .results-operations {
+.vi .results-filters {
display: flex;
justify-content: flex-start;
align-items: center;
@@ -135,10 +146,11 @@
}
.vi .toggle-results {
+ min-width: 92px;
margin-right: 8px;
}
-.vi .results-options {
+.vi .results-operations {
display: flex;
justify-content: flex-start;
align-items: center;
@@ -156,7 +168,7 @@
}
.vi .no-results {
- padding-top: 1.5em;
+ padding-top: .5em;
padding-bottom: 1.5em;
border-bottom: 1px solid #ddd;
}
@@ -197,10 +209,10 @@
}
.vi .accordion__control {
position: relative;
- padding: 1em 1.5em;
+ padding: 12px 12px 8px;
background-color: #f7f7f7;
- border: 1px solid #e7e7e7;
- border-left: none;
+ border: 1px solid #dddddd;
+ border-radius: 3px;
transition: 0.25s;
font-weight: 600;
}
@@ -209,9 +221,11 @@
}
.vi .accordion__control:hover {
background-color: #f1f1f1;
+ border-color: #999;
}
.vi .accordion__control--active {
background-color: #f7f7f7;
+ border-radius: 3px 3px 0 0;
}
.vi .accordion__control:hover {
cursor: pointer;
@@ -232,8 +246,9 @@
}
.vi .accordion__panel {
display: none;
- border: 1px solid #e7e7e7;
+ border: 1px solid #dddddd;
border-top: none;
+ border-radius: 0 0 3px 3px;
padding: 0.5em 1.5em 1.5em;
background: #f7f7f7;
}
@@ -263,36 +278,63 @@
}
.vi .inspection-time,
-.vi .inspection-accordion {
+.vi .inspection-accordion,
+.vi .accordion__control,
+.vi .result-deletion,
+.vi .delete-result {
box-sizing: border-box;
}
+.vi .inspection-time,
+.vi .accordion__control,
+.vi .delete-result {
+ min-height: 48px;
+}
+
.vi .inspection-time {
- width: 10%;
- padding: 1em .5em 1em 1em;
+ width: 112px;
+ padding: 1em .75em 1em 1.25em;
margin-top: 1em;
margin-bottom: 1em;
background-color: #f7f7f7;
- border: 1px solid #e7e7e7;
+ border: 1px solid #dddddd;
+ border-radius: 3px;
font-weight: 600;
}
.vi .inspection-accordion {
- width: 90%;
+ width: calc( 100% - 120px );
}
+
+
.vi .ui.tab.active,
.vi .ui.tab.open {
max-height: 50vh;
overflow-y: scroll;
- border: 1px solid #e7e7e7;
+ border: 1px solid #dddddd;
}
.vi .variable-type {
- border: 1px solid #ddd;
- border-radius: 8px;
+ display: inline-block;
+ box-sizing: border-box;
+ min-width: 67px;
+ position: relative;
+ top: -1px;
+ text-align: center;
+ border: 1px solid #999;
+ border-radius: 5px;
background: #fafafa;
- padding: 2px 8px 4px;
+ padding: 1px 8px 3px;
+ margin-right: 8px;
+ font-weight: normal;
+}
+
+.vi .variable-name {
+ font-size: 1.125em;
+}
+
+.vi .variable-notes {
margin-left: 8px;
font-weight: normal;
}
@@ -324,7 +366,6 @@
cursor: pointer;
margin: 0 12px;
padding-bottom: 4px;
- font-weight: 600;
}
.vi .functions .item:first-child {
@@ -379,21 +420,24 @@
border-color: #b13c5c;
}
+.wp-core-ui .button-primary.plugin-sponsor:focus {
+ box-shadow: none;
+} */
+
.wp-core-ui .button-primary.plugin-upgrade {
- border-radius: 0 3px 3px 0;
- background: #519e48;
- border-color: #519e48;
+ margin-left: 8px;
+ background: #008000;
+ border-color: #008000;
}
.wp-core-ui .button-primary.plugin-upgrade:hover {
- background: #3f7b38;
- border-color: #3f7b38;
+ background: #006600;
+ border-color: #006600;
}
-.wp-core-ui .button-primary.plugin-sponsor:focus,
.wp-core-ui .button-primary.plugin-upgrade:focus {
box-shadow: none;
-} */
+}
/* Button Style - Outlined */
@@ -414,7 +458,11 @@
background: #de4c73;
}
-.wp-core-ui .button-primary.plugin-upgrade {
+.wp-core-ui .button-primary.plugin-sponsor:focus {
+ box-shadow: none;
+}
+
+/* .wp-core-ui .button-primary.plugin-upgrade {
margin-left: 8px;
color: green;
background: transparent;
@@ -426,9 +474,178 @@
background: green;
}
-.wp-core-ui .button-primary.plugin-sponsor:focus,
.wp-core-ui .button-primary.plugin-upgrade:focus {
box-shadow: none;
+} */
+
+.vi .gray-dot {
+ background: #6B7282;
+}
+
+
+
+/* Sponsorship and Upgrade Modals */
+
+.jBox-Modal.plugin-sponsor-modal .jBox-content,
+.jBox-Modal.plugin-upgrade-modal .jBox-content {
+ max-height: calc( 100vh - 120px ) !important;
+ margin-top: 40px;
+ padding: 20px 40px;
+}
+.cta-modal-content .sponsorship-content,
+.cta-modal-content .upgrade-content {
+}
+.cta-modal-content h2 {
+ font-size: 1.875em;
+ line-height: 1.2;
+}
+.cta-modal-content h3 {
+ font-size: 1.5em;
+ line-height: 1.4;
+}
+.cta-modal-content p {
+ text-align: left;
+ font-size: 1.25em;
+ line-height: 1.7;
+}
+/* Sponsorship Modal */
+
+.jBox-Modal.plugin-sponsor-modal .jBox-content {
+}
+.cta-modal-content.sponsorship .sponsorship-content {
+ display: flex !important;
+ flex-direction: column;
+ align-items: center;
+}
+.cta-modal-content.sponsorship .sponsorship-header {
+ text-align: center;
+}
+.cta-modal-content.sponsorship .sponsorship-image {
+ display: flex;
+ justify-content: center;
+ margin-bottom: -20px;
+}
+.cta-modal-content.sponsorship .sponsorship-image img {
+ width: 50%;
+}
+.cta-modal-content.sponsorship .sponsorship-content-sections {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: flex-start;
+}
+.cta-modal-content .sponsorship-info {
+ display: flex;
+ width: 48%;
+}
+.cta-modal-content .sponsorship-methods {
+ display: flex;
+ width: 48%;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: flex-start;
+}
+.cta-modal-content.sponsorship a:not(.button) {
+ color: #de4c73;
+ text-decoration: none;
+}
+.cta-modal-content.sponsorship a:not(.button):hover {
+ text-decoration: underline;
+}
+.cta-modal-content .sponsorship-button {
+ display: flex;
+ align-items: center;
+ font-size: 1.25em;
+}
+.cta-modal-content .sponsorship-button.monthly {
+ font-weight: 500;
+ transition: .25s;
+ color: #fff;
+ background: #de4c73;
+ border-color: #de4c73;
+ margin-bottom: 2em;
+}
+.cta-modal-content .sponsorship-button.monthly:hover {
+ background: #b13c5c;
+ border-color: #b13c5c;
+}
+.cta-modal-content .sponsorship-button.monthly:focus {
+ box-shadow: none;
+}
+.cta-modal-content .sponsorship-button.one-time {
+ color: #de4c73;
+ background: transparent;
+ border-color: #de4c73;
+ transition: .1s;
+}
+.cta-modal-content .sponsorship-button.one-time:hover {
+ color: #fff;
+ background: #de4c73;
+}
+.cta-modal-content .sponsorship-button.one-time:focus {
+ box-shadow: none;
+}
+
+.cta-modal-content .sponsorship-button .dashicons {
+ margin-left: 4px;
+}
+
+/* Upgrade Modal */
+
+.jBox-Modal.plugin-upgrade-modal .jBox-content {
+ padding-bottom: 0;
+}
+.cta-modal-content .upgrade-header {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+.cta-modal-content.upgrade .upgrade-image {
+ display: flex;
+ justify-content: center;
+ margin-bottom: -20px;
+}
+.cta-modal-content.upgrade .upgrade-image img {
+ width: 50%;
+}
+.cta-modal-content .upgrade-header h2 {
+ margin-bottom: 0;
+}
+.cta-modal-content .upgrade-header h3 {
+ margin-top: 0.25em;
+}
+.cta-modal-content .feature-description {
+ margin-bottom: 40px;
+}
+.cta-modal-content .feature-description h3 {
+ padding-bottom: 0.5em;
+ border-bottom: 3px solid #008000;
+}
+.cta-modal-content .feature-description img {
+ box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px, rgba(14, 30, 37, 0.32) 0px 2px 16px 0px;
+ margin: 16px 0;
+}
+.cta-modal-content .upgrade-footer {
+ position: sticky;
+ left: 0;
+ bottom: 0;
+ margin-left: -40px;
+ margin-right: -40px;
+}
+.cta-modal-content .upgrade-footer a {
+ display: block;
+ background: #008000;
+ padding: 20px 40px;
+ font-size: 1.25em;
+ font-weight: 600;
+ color: #fff;
+ text-align: center;
+ text-decoration: none;
+ transition: .25s;
+}
+.cta-modal-content .upgrade-footer a:hover {
+ background: #006600;
}
diff --git a/admin/img/pro/sample-variables-vi-inspector.png b/admin/img/pro/sample-variables-vi-inspector.png
new file mode 100644
index 0000000..a274cb7
Binary files /dev/null and b/admin/img/pro/sample-variables-vi-inspector.png differ
diff --git a/admin/img/pro/variable_inspector_plugin_color_categories.png b/admin/img/pro/variable_inspector_plugin_color_categories.png
new file mode 100644
index 0000000..fcfb49b
Binary files /dev/null and b/admin/img/pro/variable_inspector_plugin_color_categories.png differ
diff --git a/admin/img/pro/variable_inspector_plugin_color_categorized_results.png b/admin/img/pro/variable_inspector_plugin_color_categorized_results.png
new file mode 100644
index 0000000..f3f5589
Binary files /dev/null and b/admin/img/pro/variable_inspector_plugin_color_categorized_results.png differ
diff --git a/admin/img/pro/variable_inspector_plugin_color_filter.png b/admin/img/pro/variable_inspector_plugin_color_filter.png
new file mode 100644
index 0000000..c8a209b
Binary files /dev/null and b/admin/img/pro/variable_inspector_plugin_color_filter.png differ
diff --git a/admin/img/pro/variable_inspector_plugin_counter_notes.png b/admin/img/pro/variable_inspector_plugin_counter_notes.png
new file mode 100644
index 0000000..1b5d0ab
Binary files /dev/null and b/admin/img/pro/variable_inspector_plugin_counter_notes.png differ
diff --git a/admin/img/pro/variable_inspector_plugin_dump_print_r.png b/admin/img/pro/variable_inspector_plugin_dump_print_r.png
new file mode 100644
index 0000000..795f31c
Binary files /dev/null and b/admin/img/pro/variable_inspector_plugin_dump_print_r.png differ
diff --git a/admin/img/pro/variable_inspector_plugin_dump_print_tree.png b/admin/img/pro/variable_inspector_plugin_dump_print_tree.png
new file mode 100644
index 0000000..bb8efd7
Binary files /dev/null and b/admin/img/pro/variable_inspector_plugin_dump_print_tree.png differ
diff --git a/admin/img/pro/variable_inspector_plugin_kint_viewer.png b/admin/img/pro/variable_inspector_plugin_kint_viewer.png
new file mode 100644
index 0000000..5b5063d
Binary files /dev/null and b/admin/img/pro/variable_inspector_plugin_kint_viewer.png differ
diff --git a/admin/img/pro/variable_inspector_plugin_results_deletion.png b/admin/img/pro/variable_inspector_plugin_results_deletion.png
new file mode 100644
index 0000000..4a27aaf
Binary files /dev/null and b/admin/img/pro/variable_inspector_plugin_results_deletion.png differ
diff --git a/admin/img/pro/variable_inspector_plugin_search_filter_by_name.png b/admin/img/pro/variable_inspector_plugin_search_filter_by_name.png
new file mode 100644
index 0000000..278147d
Binary files /dev/null and b/admin/img/pro/variable_inspector_plugin_search_filter_by_name.png differ
diff --git a/admin/img/pro/variable_inspector_plugin_search_filter_by_type.png b/admin/img/pro/variable_inspector_plugin_search_filter_by_type.png
new file mode 100644
index 0000000..19db6fa
Binary files /dev/null and b/admin/img/pro/variable_inspector_plugin_search_filter_by_type.png differ
diff --git a/admin/img/undraw_Developer_activity_re_39tg.png b/admin/img/undraw_Developer_activity_re_39tg.png
new file mode 100644
index 0000000..a259fea
Binary files /dev/null and b/admin/img/undraw_Developer_activity_re_39tg.png differ
diff --git a/admin/img/undraw_Programming_re_kg9v.png b/admin/img/undraw_Programming_re_kg9v.png
new file mode 100644
index 0000000..d5188be
Binary files /dev/null and b/admin/img/undraw_Programming_re_kg9v.png differ
diff --git a/admin/js/jBox.all.min.js b/admin/js/jBox.all.min.js
new file mode 100644
index 0000000..ad0eaee
--- /dev/null
+++ b/admin/js/jBox.all.min.js
@@ -0,0 +1 @@
+function jBoxWrapper(j){function h(t,i){return this.options={id:null,width:"auto",height:"auto",minWidth:null,minHeight:null,maxWidth:null,maxHeight:null,responsiveWidth:!0,responsiveHeight:!0,responsiveMinWidth:100,responsiveMinHeight:100,attach:null,trigger:"click",preventDefault:!1,content:null,getContent:null,title:null,getTitle:null,footer:null,isolateScroll:!0,ajax:{url:null,data:"",reload:!1,getURL:"data-url",getData:"data-ajax",setContent:!0,loadingClass:!0,spinner:!0,spinnerDelay:300,spinnerReposition:!0},cancelAjaxOnClose:!0,target:null,position:{x:"center",y:"center"},outside:null,offset:0,attributes:{x:"left",y:"top"},fixed:!1,adjustPosition:!0,adjustTracker:!1,adjustDistance:5,reposition:!0,repositionOnOpen:!0,repositionOnContent:!0,holdPosition:!0,pointer:!1,pointTo:"target",fade:180,animation:null,theme:"Default",addClass:null,overlay:!1,overlayClass:null,zIndex:1e4,delayOpen:0,delayClose:0,closeOnEsc:!1,closeOnClick:!1,closeOnMouseleave:!1,closeButton:!1,appendTo:j("body"),createOnInit:!1,blockScroll:!1,blockScrollAdjust:!0,draggable:!1,dragOver:!0,autoClose:!1,delayOnHover:!1,showCountdown:!1,preloadAudio:!0,audio:null,volume:100,onInit:null,onAttach:null,onPosition:null,onCreated:null,onOpen:null,onOpenComplete:null,onClose:null,onCloseComplete:null,onDragStart:null,onDragEnd:null},this._pluginOptions={Tooltip:{getContent:"title",trigger:"mouseenter",position:{x:"center",y:"top"},outside:"y",pointer:!0},Mouse:{responsiveWidth:!1,responsiveHeight:!1,adjustPosition:"flip",target:"mouse",trigger:"mouseenter",position:{x:"right",y:"bottom"},outside:"xy",offset:5},Modal:{target:j(window),fixed:!0,blockScroll:!0,closeOnEsc:!0,closeOnClick:"overlay",closeButton:!0,overlay:!0,animation:"zoomIn"}},this.options=j.extend(!0,this.options,this._pluginOptions[t]||h._pluginOptions[t],i),"string"==j.type(t)&&(this.type=t),this.isTouchDevice=function(){var t=" -webkit- -moz- -o- -ms- ".split(" ");if("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)return!0;var i,t=["(",t.join("touch-enabled),("),"heartz",")"].join("");return i=t,window.matchMedia(i).matches}(),this.isTouchDevice&&"mouseenter"===this.options.trigger&&!1===this.options.closeOnClick&&(this.options.closeOnClick="body"),this._fireEvent=function(t,i){this.options["_"+t]&&this.options["_"+t].bind(this)(i),this.options[t]&&this.options[t].bind(this)(i)},null===this.options.id&&(this.options.id="jBox"+h._getUniqueID()),this.id=this.options.id,("center"==this.options.position.x&&"x"==this.options.outside||"center"==this.options.position.y&&"y"==this.options.outside)&&(this.options.outside=null),"target"!=this.options.pointTo||this.options.outside&&"xy"!=this.options.outside||(this.options.pointer=!1),"object"!=j.type(this.options.offset)?this.options.offset={x:this.options.offset,y:this.options.offset}:this.options.offset=j.extend({x:0,y:0},this.options.offset),"object"!=j.type(this.options.adjustDistance)?this.options.adjustDistance={top:this.options.adjustDistance,right:this.options.adjustDistance,bottom:this.options.adjustDistance,left:this.options.adjustDistance}:this.options.adjustDistance=j.extend({top:5,left:5,right:5,bottom:5},this.options.adjustDistance),this.outside=!(!this.options.outside||"xy"==this.options.outside)&&this.options.position[this.options.outside],this.align=this.outside||("center"!=this.options.position.y&&"number"!=j.type(this.options.position.y)?this.options.position.x:"center"!=this.options.position.x&&"number"!=j.type(this.options.position.x)?this.options.position.y:this.options.attributes.x),h.zIndexMax=Math.max(h.zIndexMax||0,"auto"===this.options.zIndex?1e4:this.options.zIndex),"auto"===this.options.zIndex&&(this.adjustZIndexOnOpen=!0,this.options.zIndex=h.zIndexMax+=2,this.trueModal=this.options.overlay),this._getOpp=function(t){return{left:"right",right:"left",top:"bottom",bottom:"top",x:"y",y:"x"}[t]},this._getXY=function(t){return{left:"x",right:"x",top:"y",bottom:"y",center:"x"}[t]},this._getTL=function(t){return{left:"left",right:"left",top:"top",bottom:"top",center:"left",x:"left",y:"top"}[t]},this._getInt=function(t,i){return"auto"==t?"auto":t&&"string"==j.type(t)&&"%"==t.slice(-1)?j(window)["height"==i?"innerHeight":"innerWidth"]()*parseInt(t.replace("%",""))/100:t},this._createSVG=function(t,i){var o=document.createElementNS("http://www.w3.org/2000/svg",t);return j.each(i,function(t,i){o.setAttribute(i[0],i[1]||"")}),o},this._isolateScroll=function(e){e&&e.length&&e.on("DOMMouseScroll.jBoxIsolateScroll mousewheel.jBoxIsolateScroll",function(t){var i=t.wheelDelta||t.originalEvent&&t.originalEvent.wheelDelta||-t.detail,o=0<=this.scrollTop+e.outerHeight()-this.scrollHeight,s=this.scrollTop<=0;(i<0&&o||0 ",{id:this.id,class:"jBox-wrapper"+(this.type?" jBox-"+this.type:"")+(this.options.theme?" jBox-"+this.options.theme:"")+(this.options.addClass?" "+this.options.addClass:"")}).css({position:this.options.fixed?"fixed":"absolute",display:"none",opacity:0,zIndex:this.options.zIndex}).data("jBox",this),this.options.closeOnMouseleave&&this.wrapper.on("mouseleave",function(t){!this.source||t.relatedTarget!=this.source[0]&&-1===j.inArray(this.source[0],j(t.relatedTarget).parents("*"))&&this.close()}.bind(this)),"box"==this.options.closeOnClick&&this.wrapper.on("click tap",function(){this.close({ignoreDelay:!0})}.bind(this)),this.container=j('
').appendTo(this.wrapper),this.content=j('
').appendTo(this.container),this.options.footer&&(this.footer=j('').append(this.options.footer).appendTo(this.container)),this.options.isolateScroll&&this._isolateScroll(this.content),this.options.closeButton&&((t=this._createSVG("svg",[["viewBox","0 0 24 24"]])).appendChild(this._createSVG("path",[["d","M22.2,4c0,0,0.5,0.6,0,1.1l-6.8,6.8l6.9,6.9c0.5,0.5,0,1.1,0,1.1L20,22.3c0,0-0.6,0.5-1.1,0L12,15.4l-6.9,6.9c-0.5,0.5-1.1,0-1.1,0L1.7,20c0,0-0.5-0.6,0-1.1L8.6,12L1.7,5.1C1.2,4.6,1.7,4,1.7,4L4,1.7c0,0,0.6-0.5,1.1,0L12,8.5l6.8-6.8c0.5-0.5,1.1,0,1.1,0L22.2,4z"]])),this.closeButton=j('
').on("click tap",function(t){this.close({ignoreDelay:!0})}.bind(this)).append(t),"box"!=this.options.closeButton&&(!0!==this.options.closeButton||this.options.overlay||this.options.title||this.options.getTitle)||(this.wrapper.addClass("jBox-closeButton-box"),this.closeButton.appendTo(this.container))),this.wrapper.appendTo(this.options.appendTo),this.wrapper.find(".jBox-closeButton").length&&j.each(["top","right","bottom","left"],function(t,i){this.wrapper.find(".jBox-closeButton").css(i)&&"auto"!=this.wrapper.find(".jBox-closeButton").css(i)&&(this.options.adjustDistance[i]=Math.max(this.options.adjustDistance[i],this.options.adjustDistance[i]+-1*((parseInt(this.wrapper.find(".jBox-closeButton").css(i))||0)+(parseInt(this.container.css("border-"+i+"-width"))||0))))}.bind(this)),this.options.pointer&&(this.pointer={position:"target"!=this.options.pointTo?this.options.pointTo:this._getOpp(this.outside),xy:"target"!=this.options.pointTo?this._getXY(this.options.pointTo):this._getXY(this.outside),align:"center",offset:0},this.pointer.element=j('
').appendTo(this.wrapper),this.pointer.dimensions={x:this.pointer.element.outerWidth(),y:this.pointer.element.outerHeight()},"string"==j.type(this.options.pointer)&&((t=this.options.pointer.split(":"))[0]&&(this.pointer.align=t[0]),t[1]&&(this.pointer.offset=parseInt(t[1]))),this.pointer.alignAttribute="x"==this.pointer.xy?"bottom"==this.pointer.align?"bottom":"top":"right"==this.pointer.align?"right":"left",this.wrapper.css("padding-"+this.pointer.position,this.pointer.dimensions[this.pointer.xy]),this.pointer.element.css(this.pointer.alignAttribute,"center"==this.pointer.align?"50%":0).css("margin-"+this.pointer.alignAttribute,this.pointer.offset),this.pointer.margin={},this.pointer.margin["margin-"+this.pointer.alignAttribute]=this.pointer.offset,"center"==this.pointer.align&&this.pointer.element.css("transform","translate("+("y"==this.pointer.xy?-.5*this.pointer.dimensions.x+"px":0)+", "+("x"==this.pointer.xy?-.5*this.pointer.dimensions.y+"px":0)+")"),this.pointer.element.css("x"==this.pointer.xy?"width":"height",parseInt(this.pointer.dimensions[this.pointer.xy])+parseInt(this.container.css("border-"+this.pointer.alignAttribute+"-width"))),this.wrapper.addClass("jBox-pointerPosition-"+this.pointer.position)),this.setContent(this.options.content,!0),this.setTitle(this.options.title,!0),this.options.draggable&&this._draggable(),this._fireEvent("onCreated"))},this.options.createOnInit&&this._create(),this.options.attach&&this.attach(),this._attachEvents=function(){this.options.delayOnHover&&j("#"+this.id).on("mouseenter",function(t){this.isHovered=!0}.bind(this)),this.options.delayOnHover&&j("#"+this.id).on("mouseleave",function(t){this.isHovered=!1}.bind(this)),(this.options.adjustPosition||this.options.reposition)&&!this.fixed&&this.outside&&(this.options.adjustTracker&&j(window).on("scroll.jBox-"+this.id,function(t){this.position()}.bind(this)),(this.options.adjustPosition||this.options.reposition)&&j(window).on("resize.jBox-"+this.id,function(t){this.position()}.bind(this))),"mouse"==this.options.target&&j("body").on("mousemove.jBox-"+this.id,function(t){this.position({mouseTarget:{top:t.pageY,left:t.pageX}})}.bind(this))},this._detachEvents=function(){this.options.closeOnEsc&&j(document).off("keyup.jBox-"+this.id),!0!==this.options.closeOnClick&&"body"!=this.options.closeOnClick||j(document).off("click.jBox-"+this.id+" tap.jBox-"+this.id),this.options.adjustTracker&&j(window).off("scroll.jBox-"+this.id),(this.options.adjustPosition||this.options.reposition)&&j(window).off("resize.jBox-"+this.id),"mouse"==this.options.target&&j("body").off("mousemove.jBox-"+this.id)},this._showOverlay=function(){this.overlay||(this.overlay=j('
').addClass("jBox-overlay"+(this.type?" jBox-overlay-"+this.type:"")).css({display:"none",opacity:0,zIndex:this.options.zIndex-1}).appendTo(this.options.appendTo),this.options.overlayClass&&this.overlay.addClass(this.options.overlayClass),"overlay"!=this.options.closeButton&&!0!==this.options.closeButton||this.overlay.append(this.closeButton),"overlay"==this.options.closeOnClick&&this.overlay.on("click tap",function(){this.close({ignoreDelay:!0})}.bind(this)),j("#"+this.id+"-overlay .jBox-closeButton").length&&(this.options.adjustDistance.top=Math.max(j("#"+this.id+"-overlay .jBox-closeButton").outerHeight(),this.options.adjustDistance.top))),!0===this.adjustZIndexOnOpen&&this.overlay.css("zIndex",parseInt(this.wrapper.css("zIndex"),10)-1),"block"!=this.overlay.css("display")&&(this.options.fade?this.overlay.stop()&&this.overlay.animate({opacity:1},{queue:!1,duration:this.options.fade,start:function(){this.overlay.css({display:"block"})}.bind(this)}):this.overlay.css({display:"block",opacity:1}))},this._hideOverlay=function(){this.overlay&&(this.options.fade?this.overlay.stop()&&this.overlay.animate({opacity:0},{queue:!1,duration:this.options.fade,complete:function(){this.overlay.css({display:"none"})}.bind(this)}):this.overlay.css({display:"none",opacity:0}))},this._exposeDimensions=function(){this.wrapper.css({top:-1e4,left:-1e4,right:"auto",bottom:"auto"});var t={x:this.wrapper.outerWidth(),y:this.wrapper.outerHeight()};return this.wrapper.css({top:"auto",left:"auto"}),t},this._generateAnimationCSS=function(){if("object"!=j.type(this.options.animation)&&(this.options.animation={pulse:{open:"pulse",close:"zoomOut"},zoomIn:{open:"zoomIn",close:"zoomIn"},zoomOut:{open:"zoomOut",close:"zoomOut"},move:{open:"move",close:"move"},slide:{open:"slide",close:"slide"},flip:{open:"flip",close:"flip"},tada:{open:"tada",close:"zoomOut"}}[this.options.animation]),!this.options.animation)return null;this.options.animation.open&&(this.options.animation.open=this.options.animation.open.split(":")),this.options.animation.close&&(this.options.animation.close=this.options.animation.close.split(":")),this.options.animation.openDirection=this.options.animation.open[1]||null,this.options.animation.closeDirection=this.options.animation.close[1]||null,this.options.animation.open&&(this.options.animation.open=this.options.animation.open[0]),this.options.animation.close&&(this.options.animation.close=this.options.animation.close[0]),this.options.animation.open&&(this.options.animation.open+="Open"),this.options.animation.close&&(this.options.animation.close+="Close");var a={pulse:{duration:350,css:[["0%","scale(1)"],["50%","scale(1.1)"],["100%","scale(1)"]]},zoomInOpen:{duration:this.options.fade||180,css:[["0%","scale(0.9)"],["100%","scale(1)"]]},zoomInClose:{duration:this.options.fade||180,css:[["0%","scale(1)"],["100%","scale(0.9)"]]},zoomOutOpen:{duration:this.options.fade||180,css:[["0%","scale(1.1)"],["100%","scale(1)"]]},zoomOutClose:{duration:this.options.fade||180,css:[["0%","scale(1)"],["100%","scale(1.1)"]]},moveOpen:{duration:this.options.fade||180,positions:{top:{"0%":-12},right:{"0%":12},bottom:{"0%":12},left:{"0%":-12}},css:[["0%","translate%XY(%Vpx)"],["100%","translate%XY(0px)"]]},moveClose:{duration:this.options.fade||180,timing:"ease-in",positions:{top:{"100%":-12},right:{"100%":12},bottom:{"100%":12},left:{"100%":-12}},css:[["0%","translate%XY(0px)"],["100%","translate%XY(%Vpx)"]]},slideOpen:{duration:400,positions:{top:{"0%":-400},right:{"0%":400},bottom:{"0%":400},left:{"0%":-400}},css:[["0%","translate%XY(%Vpx)"],["100%","translate%XY(0px)"]]},slideClose:{duration:400,timing:"ease-in",positions:{top:{"100%":-400},right:{"100%":400},bottom:{"100%":400},left:{"100%":-400}},css:[["0%","translate%XY(0px)"],["100%","translate%XY(%Vpx)"]]},flipOpen:{duration:600,css:[["0%","perspective(400px) rotateX(90deg)"],["40%","perspective(400px) rotateX(-15deg)"],["70%","perspective(400px) rotateX(15deg)"],["100%","perspective(400px) rotateX(0deg)"]]},flipClose:{duration:this.options.fade||300,css:[["0%","perspective(400px) rotateX(0deg)"],["100%","perspective(400px) rotateX(90deg)"]]},tada:{duration:800,css:[["0%","scale(1)"],["10%, 20%","scale(0.9) rotate(-3deg)"],["30%, 50%, 70%, 90%","scale(1.1) rotate(3deg)"],["40%, 60%, 80%","scale(1.1) rotate(-3deg)"],["100%","scale(1) rotate(0)"]]}};j.each(["pulse","tada"],function(t,i){a[i+"Open"]=a[i+"Close"]=a[i]});var s=function(s,e){var n="@keyframes jBox-"+this.id+"-animation-"+this.options.animation[s]+"-"+s+(e?"-"+e:"")+" {";return j.each(a[this.options.animation[s]].css,function(t,i){var o=e?i[1].replace("%XY",this._getXY(e).toUpperCase()):i[1];a[this.options.animation[s]].positions&&(o=o.replace("%V",a[this.options.animation[s]].positions[e][i[0]])),n+=i[0]+" {transform:"+o+";}"}.bind(this)),n+="}",n+=".jBox-"+this.id+"-animation-"+this.options.animation[s]+"-"+s+(e?"-"+e:"")+" {",n+="animation-duration: "+a[this.options.animation[s]].duration+"ms;",n+="animation-name: jBox-"+this.id+"-animation-"+this.options.animation[s]+"-"+s+(e?"-"+e:"")+";",n+=a[this.options.animation[s]].timing?"animation-timing-function: "+a[this.options.animation[s]].timing+";":"",n+="}"}.bind(this);this._animationCSS="",j.each(["open","close"],function(t,o){if(!this.options.animation[o]||!a[this.options.animation[o]]||"close"==o&&!this.options.fade)return"";a[this.options.animation[o]].positions?j.each(["top","right","bottom","left"],function(t,i){this._animationCSS+=s(o,i)}.bind(this)):this._animationCSS+=s(o)}.bind(this))},this.options.animation&&this._generateAnimationCSS(),this._blockBodyClick=function(){this.blockBodyClick=!0,setTimeout(function(){this.blockBodyClick=!1}.bind(this),10)},this._animate=function(t){if(t=t||(this.isOpen?"open":"close"),!this.options.fade&&"close"==t)return null;var i=this.options.animation[t+"Direction"]||("center"!=this.align?this.align:this.options.attributes.x);this.flipped&&this._getXY(i)==this._getXY(this.align)&&(i=this._getOpp(i));var o="jBox-"+this.id+"-animation-"+this.options.animation[t]+"-"+t+" jBox-"+this.id+"-animation-"+this.options.animation[t]+"-"+t+"-"+i;this.wrapper.addClass(o);i=1e3*parseFloat(this.wrapper.css("animation-duration"));"close"==t&&(i=Math.min(i,this.options.fade)),setTimeout(function(){this.wrapper&&this.wrapper.removeClass(o)}.bind(this),i)},this._abortAnimation=function(){var t=this.wrapper.attr("class").split(" ").filter(function(t){return 0!==t.lastIndexOf("jBox-"+this.id+"-animation",0)}.bind(this));this.wrapper.attr("class",t.join(" "))},(this.options.responsiveWidth||this.options.responsiveHeight)&&j(window).on("resize.responsivejBox-"+this.id,function(t){this.isOpen&&this.position()}.bind(this)),"string"===j.type(this.options.preloadAudio)&&(this.options.preloadAudio=[this.options.preloadAudio]),"string"===j.type(this.options.audio)&&(this.options.audio={open:this.options.audio}),"number"===j.type(this.options.volume)&&(this.options.volume={open:this.options.volume,close:this.options.volume}),!0===this.options.preloadAudio&&this.options.audio&&(this.options.preloadAudio=[],j.each(this.options.audio,function(t,i){this.options.preloadAudio.push(i+".mp3"),this.options.preloadAudio.push(i+".ogg")}.bind(this))),this.options.preloadAudio.length&&j.each(this.options.preloadAudio,function(t,i){var o=new Audio;o.src=i,o.preload="auto"}),this._fireEvent("onInit"),this}var t,i;return h.prototype.attach=function(t,s){return t=t||this.options.attach,"string"==j.type(t)&&(t=j(t)),s=s||this.options.trigger,t&&t.length&&j.each(t,function(t,o){(o=j(o)).data("jBox-attached-"+this.id)||("title"==this.options.getContent&&null!=o.attr("title")&&o.data("jBox-getContent",o.attr("title")).removeAttr("title"),this.attachedElements||(this.attachedElements=[]),this.attachedElements.push(o[0]),o.on(s+".jBox-attach-"+this.id,function(t){var i;this.timer&&clearTimeout(this.timer),"mouseenter"==s&&this.isOpen&&this.source[0]==o[0]||(this.isOpen&&this.source&&this.source[0]!=o[0]&&(i=!0),this.source=o,this.options.target||(this.target=o),"click"==s&&this.options.preventDefault&&t.preventDefault(),this["click"!=s||i?"open":"toggle"]())}.bind(this)),"mouseenter"==this.options.trigger&&o.on("mouseleave",function(t){if(!this.wrapper)return null;this.options.closeOnMouseleave&&(t.relatedTarget==this.wrapper[0]||j(t.relatedTarget).parents("#"+this.id).length)||this.close()}.bind(this)),o.data("jBox-attached-"+this.id,s),this._fireEvent("onAttach",o))}.bind(this)),this},h.prototype.detach=function(t){return(t=t||(this.attachedElements||[]))&&t.length&&j.each(t,function(t,i){(i=j(i)).data("jBox-attached-"+this.id)&&(i.off(i.data("jBox-attached-"+this.id)+".jBox-attach-"+this.id),i.data("jBox-attached-"+this.id,null)),this.attachedElements=j.grep(this.attachedElements,function(t){return t!=i[0]})}.bind(this)),this},h.prototype.setTitle=function(t,i){if(null==t||null==t)return this;this.wrapper||this._create();var o=this.wrapper.outerHeight(),s=this.wrapper.outerWidth();return this.title||(this.titleContainer=j('
'),this.title=j("
").appendTo(this.titleContainer),"title"!=this.options.closeButton&&(!0!==this.options.closeButton||this.options.overlay)||(this.wrapper.addClass("jBox-closeButton-title"),this.closeButton.appendTo(this.titleContainer)),this.titleContainer.insertBefore(this.content),this._setTitleWidth()),this.wrapper[t?"addClass":"removeClass"]("jBox-hasTitle"),this.title.html(t),s!=this.wrapper.outerWidth()&&this._setTitleWidth(),this.options.draggable&&this._draggable(),i||!this.options.repositionOnContent||o==this.wrapper.outerHeight()&&s==this.wrapper.outerWidth()||this.position(),this},h.prototype.setContent=function(t,i){if(null==t||null==t)return this;this.wrapper||this._create();var o=this.wrapper.outerHeight(),s=this.wrapper.outerWidth();switch(this.content.children("[data-jbox-content-appended]").appendTo("body").css({display:"none"}),j.type(t)){case"string":this.content.html(t);break;case"object":t&&(t instanceof j||t.constructor.prototype.jquery)?(this.content.html(""),t.attr("data-jbox-content-appended",1).appendTo(this.content).css({display:"block"})):this.content.html(JSON.stringify(t))}return s!=this.wrapper.outerWidth()&&this._setTitleWidth(),this.options.draggable&&this._draggable(),i||!this.options.repositionOnContent||o==this.wrapper.outerHeight()&&s==this.wrapper.outerWidth()||this.position(),this},h.prototype.setDimensions=function(t,i,o){this.wrapper||this._create(),this.content.css(t,this._getInt(i=null==i?"auto":i)),"width"==t&&this._setTitleWidth(),this.options[t]=i,null!=o&&!o||this.position()},h.prototype.setWidth=function(t,i){this.setDimensions("width",t,i)},h.prototype.setHeight=function(t,i){this.setDimensions("height",t,i)},h.prototype.position=function(o){if(o=j.extend(!0,this.options,o=o||{}),this.target=o.target||this.target||j(window),this.target instanceof j||"mouse"==this.target||(this.target=j(this.target)),!this.target.length)return this;this.content.css({width:this._getInt(o.width,"width"),height:this._getInt(o.height,"height"),minWidth:this._getInt(o.minWidth,"width"),minHeight:this._getInt(o.minHeight,"height"),maxWidth:this._getInt(o.maxWidth,"width"),maxHeight:this._getInt(o.maxHeight,"height")}),this._setTitleWidth();var s=this._exposeDimensions();"mouse"==this.target||this.target.data("jBox-"+this.id+"-fixed")||this.target.data("jBox-"+this.id+"-fixed",this.target[0]!=j(window)[0]&&("fixed"==this.target.css("position")||0a[h.x]&&a[this._getOpp(h.x)]>a[h.x]&&(h.x=this._getOpp(h.x))&&(r.x=!0),h.y&&s.y>a[h.y]&&a[this._getOpp(h.y)]>a[h.y]&&(h.y=this._getOpp(h.y))&&(r.y=!0),(o.responsiveWidth||o.responsiveHeight)&&(m=function(){var t;o.responsiveWidth&&s.x>a[h.x||"x"]&&(t=a[h.x||"x"]-(this.pointer&&n&&"x"==o.outside?this.pointer.dimensions.x:0)-parseInt(this.container.css("border-left-width"))-parseInt(this.container.css("border-right-width")),this.content.css({width:t>this.options.responsiveMinWidth?t:null,minWidth:ta[h.y]&&a[this._getOpp(h.y)]>a[h.y]&&(h.y=this._getOpp(h.y))&&(r.y=!0),f=function(){var t;o.responsiveHeight&&s.y>a[h.y||"y"]&&(t=function(){return this.titleContainer||this.footer?("none"==this.wrapper.css("display")?(this.wrapper.css("display","block"),t=(this.titleContainer?this.titleContainer.outerHeight():0)+(this.footer?this.footer.outerHeight():0),this.wrapper.css("display","none")):t=(this.titleContainer?this.titleContainer.outerHeight():0)+(this.footer?this.footer.outerHeight():0),t||0):0;var t}.bind(this),t=a[h.y||"y"]-(this.pointer&&n&&"y"==o.outside?this.pointer.dimensions.y:0)-t()-parseInt(this.container.css("border-top-width"))-parseInt(this.container.css("border-bottom-width")),this.content.css({height:t>this.options.responsiveMinHeight?t:null}),this._setTitleWidth()),s=this._exposeDimensions()}.bind(this),o.responsiveHeight&&f(),o.responsiveHeight&&!r.x&&h.x&&s.x>a[h.x]&&a[this._getOpp(h.x)]>a[h.x]&&(h.x=this._getOpp(h.x))&&(r.x=!0),o.adjustPosition&&"move"!=o.adjustPosition&&(r.x&&m(),r.y&&f()));var p={},l=function(t){if("number"!=j.type(o.position[t])){var i=o.attributes[t]="x"==t?"left":"top";if(p[i]=e[i],"center"==o.position[t])return p[i]+=Math.ceil((e[t]-s[t])/2),void("mouse"!=this.target&&this.target[0]&&this.target[0]==j(window)[0]&&(p[i]+=.5*(o.adjustDistance[i]-o.adjustDistance[this._getOpp(i)])));i!=o.position[t]&&(p[i]+=e[t]-s[t]),o.outside!=t&&"xy"!=o.outside||(p[i]+=s[t]*(i!=o.position[t]?1:-1))}else p[o.attributes[t]]=o.position[t]}.bind(this);if(l("x"),l("y"),this.pointer&&"target"==o.pointTo&&"number"!=j.type(o.position.x)&&"number"!=j.type(o.position.y)&&(x=0,"center"===this.pointer.align?"center"!=o.position[this._getOpp(o.outside)]&&(x+=s[this._getOpp(o.outside)]/2):"center"===o.position[this._getOpp(o.outside)]?x+=(s[this._getOpp(o.outside)]/2-this.pointer.dimensions[this._getOpp(o.outside)]/2)*(this.pointer.align==this._getTL(this.pointer.align)?1:-1):x+=this.pointer.align!=o.position[this._getOpp(o.outside)]?s[this._getOpp(o.outside)]*(-1!==j.inArray(this.pointer.align,["top","left"])?1:-1)+this.pointer.dimensions[this._getOpp(o.outside)]/2*(-1!==j.inArray(this.pointer.align,["top","left"])?-1:1):this.pointer.dimensions[this._getOpp(o.outside)]/2*(-1!==j.inArray(this.pointer.align,["top","left"])?1:-1),x*=o.position[this._getOpp(o.outside)]==this.pointer.alignAttribute?-1:1,x+=this.pointer.offset*(this.pointer.align==this._getOpp(this._getTL(this.pointer.align))?1:-1),p[this._getTL(this._getOpp(this.pointer.xy))]+=x),p[o.attributes.x]+=o.offset.x,p[o.attributes.y]+=o.offset.y,this.wrapper.css(p),o.adjustPosition){this.positionAdjusted&&(this.pointer&&this.wrapper.css("padding",0).css("padding-"+this._getOpp(this.outside),this.pointer.dimensions[this._getXY(this.outside)]).removeClass("jBox-pointerPosition-"+this._getOpp(this.pointer.position)).addClass("jBox-pointerPosition-"+this.pointer.position),this.pointer&&this.pointer.element.attr("class","jBox-pointer jBox-pointer-"+this._getOpp(this.outside)).css(this.pointer.margin),this.positionAdjusted=!1,this.flipped=!1);var d=t.top>p.top-(o.adjustDistance.top||0),c=t.rightp.left-(o.adjustDistance.left||0),i=g?"left":c?"right":null,m=d?"top":u?"bottom":null;if(i||m){if(("Modal"==this.type||"Confirm"==this.type)&&"number"==j.type(this.options.position.x)&&"number"==j.type(this.options.position.y)){var f=0,x=0;return this.options.holdPosition&&(g?f=t.left-(p.left-(o.adjustDistance.left||0)):c&&(f=t.right-(p.left+s.x+(o.adjustDistance.right||0))),d?x=t.top-(p.top-(o.adjustDistance.top||0)):u&&(x=t.bottom-(p.top+s.y+(o.adjustDistance.bottom||0))),this.options.position.x=Math.max(t.top,this.options.position.x+f),this.options.position.y=Math.max(t.left,this.options.position.y+x),l("x"),l("y"),this.wrapper.css(p)),this._fireEvent("onPosition"),this}!0!==o.adjustPosition&&"flip"!==o.adjustPosition||(y=function(t){this.wrapper.css(this._getTL(t),p[this._getTL(t)]+(s[this._getXY(t)]+o.offset[this._getXY(t)]*("top"==t||"left"==t?-2:2)+e[this._getXY(t)])*("top"==t||"left"==t?1:-1)),this.pointer&&this.wrapper.removeClass("jBox-pointerPosition-"+this.pointer.position).addClass("jBox-pointerPosition-"+this._getOpp(this.pointer.position)).css("padding",0).css("padding-"+t,this.pointer.dimensions[this._getXY(t)]),this.pointer&&this.pointer.element.attr("class","jBox-pointer jBox-pointer-"+t),this.positionAdjusted=!0,this.flipped=!0}.bind(this),r.x&&y(this.options.position.x),r.y&&y(this.options.position.y));var y="x"==this._getXY(this.outside)?m:i;this.pointer&&"target"==o.pointTo&&"flip"!=o.adjustPosition&&this._getXY(y)==this._getOpp(this._getXY(this.outside))&&(m="center"==this.pointer.align?s[this._getXY(y)]/2-this.pointer.dimensions[this._getOpp(this.pointer.xy)]/2-parseInt(this.pointer.element.css("margin-"+this.pointer.alignAttribute))*(y!=this._getTL(y)?-1:1):y==this.pointer.alignAttribute?parseInt(this.pointer.element.css("margin-"+this.pointer.alignAttribute)):s[this._getXY(y)]-parseInt(this.pointer.element.css("margin-"+this.pointer.alignAttribute))-this.pointer.dimensions[this._getXY(y)],i=y==this._getTL(y)?t[this._getTL(y)]-p[this._getTL(y)]+o.adjustDistance[y]:-1*(t[this._getOpp(this._getTL(y))]-p[this._getTL(y)]-o.adjustDistance[y]-s[this._getXY(y)]),y==this._getOpp(this._getTL(y))&&p[this._getTL(y)]-iwindow.innerHeight},this.pageHasScrollbar()){t=this.getElementsToAdjust(t);for(var i=0;i ").append(this._animationCSS).appendTo(j("head"))),this.timer&&clearTimeout(this.timer),this._blockBodyClick(),this.isDisabled)return this;this.options.closeOnEsc&&j(document).on("keyup.jBox-"+this.id,function(t){27==t.keyCode&&this.close({ignoreDelay:!0})}.bind(this)),!0!==this.options.closeOnClick&&"body"!==this.options.closeOnClick||(j("body").on("click.jBox-"+this.id+" tap.jBox-"+this.id,function(t){this.blockBodyClick||"body"==this.options.closeOnClick&&(t.target==this.wrapper[0]||this.wrapper.has(t.target).length)||this.close({ignoreDelay:!0})}.bind(this)),this.isTouchDevice&&j("body > *").on("click.jBox-"+this.id+" tap.jBox-"+this.id,function(){return!0}));var i=function(){!0===this.adjustZIndexOnOpen&&(h.zIndexMax=Math.max(parseInt(this.wrapper.css("zIndex"),10),this.options.zIndex,h.zIndexMax||0,h.zIndexMaxDragover||0)+2,this.wrapper.css("zIndex",h.zIndexMax),this.options.zIndex=h.zIndexMax),this.source&&this.options.getTitle&&this.source.attr(this.options.getTitle)&&this.setTitle(this.source.attr(this.options.getTitle),!0),this.source&&this.options.getContent&&(this.source.data("jBox-getContent")?this.setContent(this.source.data("jBox-getContent"),!0):this.source.attr(this.options.getContent)?this.setContent(this.source.attr(this.options.getContent),!0):"html"==this.options.getContent&&this.setContent(this.source.html(),!0)),this._fireEvent("onOpen"),(this.options.ajax&&(this.options.ajax.url||this.source&&this.source.attr(this.options.ajax.getURL))&&(!this.ajaxLoaded||this.options.ajax.reload)||t.ajax&&(t.ajax.url||t.ajax.data))&&("strict"==this.options.ajax.reload||!this.source||!this.source.data("jBox-ajax-data")||t.ajax&&(t.ajax.url||t.ajax.data)?this.ajax(t.ajax||null,!0):this.setContent(this.source.data("jBox-ajax-data"))),this.positionedOnOpen&&!this.options.repositionOnOpen||!this.position(t)||(this.positionedOnOpen=!0),this.isClosing&&this._abortAnimation(),this.isOpen||(this.isOpen=!0,this.options.autoClose&&(this.options.delayClose=this.options.autoClose)&&this.close(),this._attachEvents(),this.options.blockScroll&&(this.options.blockScrollAdjust?h.blockScrollScopes?h.blockScrollScopes++:(h.blockScrollScopes=1,this.unscroll(Array.isArray(this.options.blockScrollAdjust)||"string"==typeof this.options.blockScrollAdjust?this.options.blockScrollAdjust:null)):j("body").addClass("jBox-blockScroll-"+this.id)),this.options.overlay&&(this._showOverlay(),this.position()),this.options.animation&&!this.isClosing&&this._animate("open"),this.options.audio&&this.options.audio.open&&this.audio(this.options.audio.open,this.options.volume.open),this.options.fade?this.wrapper.stop().animate({opacity:1},{queue:!1,duration:this.options.fade,start:function(){this.isOpening=!0,this.wrapper.css({display:"block"})}.bind(this),complete:function(){this._fireEvent("onOpenComplete")}.bind(this),always:function(){this.isOpening=!1,setTimeout(function(){this.positionOnFadeComplete&&this.position()&&(this.positionOnFadeComplete=!1)}.bind(this),10)}.bind(this)}):(this.wrapper.css({display:"block",opacity:1}),this.positionOnFadeComplete&&this.position()&&(this.positionOnFadeComplete=!1),this._fireEvent("onOpenComplete")))}.bind(this);return!this.options.delayOpen||this.isOpen||this.isClosing||t.ignoreDelay?i():this.timer=setTimeout(i,this.options.delayOpen),this},h.prototype.close=function(t){if(t=t||{},j("body").off("click.jBox-"+this.id+" tap.jBox-"+this.id),this.isTouchDevice&&j("body > *").off("click.jBox-"+this.id+" tap.jBox-"+this.id),this.isDestroyed||this.isClosing)return this;if(this.timer&&clearTimeout(this.timer),this._blockBodyClick(),this.isDisabled)return this;var i,o,s,e=function(){var t;this._fireEvent("onClose"),this.options.cancelAjaxOnClose&&this.cancelAjax(),this.isOpen&&(this.isOpen=!1,this._detachEvents(),this.options.blockScroll&&(this.options.blockScrollAdjust?(h.blockScrollScopes=h.blockScrollScopes?--h.blockScrollScopes:0)||this.unscroll.reset():j("body").removeClass("jBox-blockScroll-"+this.id)),this.options.overlay&&this._hideOverlay(),this.options.animation&&!this.isOpening&&this._animate("close"),this.options.audio&&this.options.audio.close&&this.audio(this.options.audio.close,this.options.volume.close),(t=this.isTouchDevice&&"mouse"==this.options.target?0:this.options.fade)?this.wrapper.stop().animate({opacity:0},{queue:!1,duration:t,start:function(){this.isClosing=!0}.bind(this),complete:function(){this.wrapper.css({display:"none"}),this._fireEvent("onCloseComplete")}.bind(this),always:function(){this.isClosing=!1}.bind(this)}):(this.wrapper.css({display:"none",opacity:0}),this._fireEvent("onCloseComplete")))}.bind(this);return t.ignoreDelay||this.isTouchDevice&&"mouse"==this.options.target?e():(this.options.delayOnHover||this.options.showCountdown)&&10 '),this.inner=j('
'),t.prepend(this.inner),j("#"+this.id).append(t)),this.countdown=function(){var t=Date.now();i.isHovered||(o-=t-s),s=t,0').appendTo(this.container),this.titleContainer&&"absolute"==this.spinner.css("position")&&this.spinner.css({transform:"translateY("+.5*this.titleContainer.outerHeight()+"px)"})}.bind(this),""!=this.content.html()&&h.spinnerDelay||0)),s.bind(this)(t)}.bind(this),h.complete=function(t){this.spinnerDelay&&clearTimeout(this.spinnerDelay),this.wrapper.removeClass("jBox-loading jBox-loading-spinner jBox-loading-spinner-delay"),this.spinner&&this.spinner.length&&this.spinner.remove()&&h.spinnerReposition&&(i?this.positionOnFadeComplete=!0:this.position()),this.ajaxLoaded=!0,e.bind(this)(t)}.bind(this),h.success=function(t){h.setContent&&this.setContent(t,!0)&&(i?this.positionOnFadeComplete=!0:this.position()),h.setContent&&this.source&&this.source.data("jBox-ajax-data",t),n.bind(this)(t)}.bind(this),h.error=function(t){a.bind(this)(t)}.bind(this),this.ajaxRequest=j.ajax(h),this},h.prototype.cancelAjax=function(){this.ajaxRequest&&(this.ajaxRequest.abort(),this.ajaxLoaded=!1)},h.prototype.audio=function(t,i){if(!t)return this;var o;(h._audio=!h._audio?{}:h._audio)[t]||(o=j(" "),j(" ",{src:t+".mp3"}).appendTo(o),j(" ",{src:t+".ogg"}).appendTo(o),h._audio[t]=o[0]),h._audio[t].volume=Math.min((null!=i?i:100)/100,1);try{h._audio[t].pause(),h._audio[t].currentTime=0}catch(t){}return h._audio[t].play(),this},h._animationSpeeds={tada:1e3,tadaSmall:1e3,flash:500,shake:400,pulseUp:250,pulseDown:250,popIn:250,popOut:250,fadeIn:200,fadeOut:200,slideUp:400,slideRight:400,slideLeft:400,slideDown:400},h.prototype.animate=function(t,i){i=i||{},this.animationTimeout||(this.animationTimeout={}),i.element||(i.element=this.wrapper),i.element.data("jBox-animating-id")||i.element.data("jBox-animating-id",h._getUniqueElementID()),i.element.data("jBox-animating")&&(i.element.removeClass(i.element.data("jBox-animating")).data("jBox-animating",null),this.animationTimeout[i.element.data("jBox-animating-id")]&&clearTimeout(this.animationTimeout[i.element.data("jBox-animating-id")])),i.element.addClass("jBox-animated-"+t).data("jBox-animating","jBox-animated-"+t),this.animationTimeout[i.element.data("jBox-animating-id")]=setTimeout(function(){i.element.removeClass(i.element.data("jBox-animating")).data("jBox-animating",null),i.complete&&i.complete()},h._animationSpeeds[t])},h.prototype.swipeDetector=function(i,o){var s=0,e=0,n=0,a=0,h=0;function t(t){o.useOnlyTouch&&!t.originalEvent.touches||(t.originalEvent.touches&&(t=t.originalEvent.touches[0]),0===s&&(s=1,e=t.clientX,n=t.clientY))}function r(t){2===s&&(s=0,Math.abs(a)>Math.abs(h)&&Math.abs(a)>o.swipeThreshold?a<0?i.trigger(j.Event("swipeLeft.sd")):i.trigger(j.Event("swipeRight.sd")):Math.abs(h)>o.swipeThreshold&&(h<0?i.trigger(j.Event("swipeUp.sd")):i.trigger(j.Event("swipeDown.sd"))))}function p(t){var i;1===s&&(i=(t=t.originalEvent.touches?t.originalEvent.touches[0]:t).clientX-e,t=t.clientY-n,(Math.abs(i)>o.swipeThreshold||Math.abs(t)>o.swipeThreshold)&&(s=2,a=i,h=t))}return o=j.extend({swipeThreshold:70,useOnlyTouch:!1},o),i.on("mousedown touchstart",t),j("html").on("mouseup touchend",r),j("html").on("mousemove touchmove",p),i},h.prototype.destroy=function(){return this.detach(),this.isOpen&&this.close({ignoreDelay:!0}),this.wrapper&&this.wrapper.remove(),this.overlay&&this.overlay.remove(),this._styles&&this._styles.remove(),this.isDestroyed=!0,this},h._getUniqueID=(t=1,function(){return t++}),h._getUniqueElementID=(i=1,function(){return i++}),h._pluginOptions={},h.plugin=function(t,i){h._pluginOptions[t]=i},j.fn.jBox=function(t,i){return new h(t=t||{},j.extend(i=i||{},{attach:this}))},h}function jBoxConfirmWrapper(jBox,jQuery){new jBox.plugin("Confirm",{confirmButton:"Submit",cancelButton:"Cancel",confirm:null,cancel:null,closeOnConfirm:!0,target:window,fixed:!0,attach:"[data-confirm]",getContent:"data-confirm",content:"Do you really want to do this?",minWidth:360,maxWidth:500,blockScroll:!0,closeOnEsc:!0,closeOnClick:!1,closeButton:!1,overlay:!0,animation:"zoomIn",preventDefault:!0,_onAttach:function(t){var i;this.options.confirm||(i=t.attr("onclick")?t.attr("onclick"):t.attr("href")?t.attr("target")?'window.open("'+t.attr("href")+'", "'+t.attr("target")+'");':'window.location.href = "'+t.attr("href")+'";':"",t.prop("onclick",null).data("jBox-Confirm-submit",i))},_onCreated:function(){this.wrapper.addClass("jBox-Modal"),this.footer=jQuery(''),jQuery('
').html(this.options.cancelButton).on("click tap",function(){this.options.cancel&&this.options.cancel(this.source),this.close()}.bind(this)).appendTo(this.footer),this.submitButton=jQuery('
').html(this.options.confirmButton).appendTo(this.footer),this.footer.appendTo(this.container)},_onOpen:function(){this.submitButton.off("click.jBox-Confirm"+this.id+" tap.jBox-Confirm"+this.id).on("click.jBox-Confirm"+this.id+" tap.jBox-Confirm"+this.id,function(){this.options.confirm?this.options.confirm(this.source):eval(this.source.data("jBox-Confirm-submit")),this.options.closeOnConfirm&&this.close()}.bind(this))}})}function jBoxImageWrapper(t,a){new t.plugin("Image",{src:"href",gallery:"data-jbox-image",imageLabel:"title",imageFade:360,imageSize:"contain",imageCounter:!1,imageCounterSeparator:"/",downloadButton:!1,downloadButtonText:null,downloadButtonUrl:null,mobileImageAttr:null,mobileImageBreakpoint:null,preloadFirstImage:!1,target:window,attach:"[data-jbox-image]",fixed:!0,blockScroll:!0,closeOnEsc:!0,closeOnClick:"button",closeButton:!0,overlay:!0,animation:"zoomIn",preventDefault:!0,width:"100%",height:"100%",adjustDistance:{top:40,right:0,bottom:40,left:0},_onInit:function(){this.images=this.currentImage={},this.imageZIndex=1,this.initImage=function(t){var i,o;(t=a(t)).data("jBox-image-gallery")||(i=t.attr(this.options.src),this.options.mobileImageAttr&&this.options.mobileImageBreakpoint&&t.attr(this.options.mobileImageAttr)&&a(window).width()<=this.options.mobileImageBreakpoint&&(i=t.attr(this.options.mobileImageAttr)),o=t.attr(this.options.gallery)||"default",this.images[o]||(this.images[o]=[]),this.images[o].push({src:i,label:t.attr(this.options.imageLabel)||"",downloadUrl:this.options.downloadButtonUrl&&t.attr(this.options.downloadButtonUrl)?t.attr(this.options.downloadButtonUrl):null}),"title"==this.options.imageLabel&&t.removeAttr("title"),t.data("jBox-image-gallery",o),t.data("jBox-image-id",this.images[o].length-1))}.bind(this),this.attachedElements&&this.attachedElements.length&&a.each(this.attachedElements,function(t,i){this.initImage(i)}.bind(this));var n=function(t,i,o,s){if(!a("#jBox-image-"+t+"-"+i).length){var e=a("
",{id:"jBox-image-"+t+"-"+i,class:"jBox-image-container"+(o?" jBox-image-"+t+"-current":"")}).css({backgroundSize:this.options.imageSize,opacity:s?1:0,zIndex:o?this.imageZIndex++:0}).appendTo(this.content);return this.swipeDetector(e).on("swipeLeft.sd swipeRight.sd",function(t){"swipeLeft"===t.type?this.showImage("next"):"swipeRight"===t.type&&this.showImage("prev")}.bind(this)),a("
",{id:"jBox-image-label-"+t+"-"+i,class:"jBox-image-label"+(o?" active":"")}).html(this.images[t][i].label).on("click tap",function(){a(this).toggleClass("expanded")}).appendTo(this.imageLabelContainer),o&&e.animate({opacity:1},s?0:this.options.imageFade),e}}.bind(this);this.downloadImage=function(t){var i=document.createElement("a");i.href=t,i.setAttribute("download",t.substring(t.lastIndexOf("/")+1)),document.body.appendChild(i),i.click()};var e=function(i,o,t,s){var e=n(i,o,t,s);e.addClass("jBox-image-loading"),a(' ').each(function(){var t=new Image;t.onload=function(){e.removeClass("jBox-image-loading"),e.css({backgroundImage:'url("'+this.images[i][o].src+'")'})}.bind(this),t.onerror=function(){e.removeClass("jBox-image-loading"),e.addClass("jBox-image-not-found")}.bind(this),t.src=this.images[i][o].src}.bind(this))}.bind(this);this.showImage=function(t){var i,o,s;if("open"!=t)i=this.currentImage.gallery,s=(s=this.currentImage.id+(+("prev"==t)?-1:1))>this.images[i].length-1?0:s<0?this.images[i].length-1:s;else{if(this.source)i=this.source.data("jBox-image-gallery"),s=this.source.data("jBox-image-id");else{if(!this.attachedElements||!this.attachedElements.length)return;i=a(this.attachedElements[0]).data("jBox-image-gallery"),s=a(this.attachedElements[0]).data("jBox-image-id")}this.images&&this.images[i]&&a(".jBox-image-pointer-prev, .jBox-image-pointer-next").css({display:1this.images[i].length-1?0:s<0?this.images[i].length-1:s,a("#jBox-image-"+i+"-"+s).length||e(i,s,!1,!1))},this.options.preloadFirstImage&&a(window).on("load",function(){this.showImage("open")}.bind(this))},_onAttach:function(t){this.initImage&&this.initImage(t)},_onCreated:function(){this.imageLabelWrapper=a('
').appendTo(this.wrapper),this.imagePrevButton=a('
').on("click tap",function(){this.showImage("prev")}.bind(this)),this.imageNextButton=a('
').on("click tap",function(){this.showImage("next")}.bind(this)),this.imageLabelContainer=a('
'),this.imageLabelWrapper.append(this.imagePrevButton).append(this.imageLabelContainer).append(this.imageNextButton),this.options.downloadButton&&(this.downloadButton=a("
",{class:"jBox-image-download-button-wrapper"}).appendTo(this.wrapper).append(this.options.downloadButtonText?a("
",{class:"jBox-image-download-button-text"}).html(this.options.downloadButtonText):null).append(a("
",{class:"jBox-image-download-button-icon"})).on("click tap",function(){var t;t=this.images[this.currentImage.gallery][this.currentImage.id].downloadUrl||this.wrapper.find(".jBox-image-"+this.currentImage.gallery+"-current")[0].style.backgroundImage.slice(4,-1).replace(/["']/g,""),this.downloadImage(t)}.bind(this))),this.options.imageCounter&&(this.imageCounter=a("
",{class:"jBox-image-counter-container"}).insertAfter(this.imageLabelContainer),this.imageCounter.append(a(" ",{class:"jBox-image-counter-current"})).append(a(" ").html(this.options.imageCounterSeparator)).append(a(" ",{class:"jBox-image-counter-all"})))},_onOpen:function(){a(document).on("keyup.jBox-Image-"+this.id,function(t){37==t.keyCode&&this.showImage("prev"),39==t.keyCode&&this.showImage("next")}.bind(this)),this.showImage("open")},_onClose:function(){a(document).off("keyup.jBox-Image-"+this.id)},_onCloseComplete:function(){this.wrapper.find(".jBox-image-container").css("opacity",0)}})}function jBoxNoticeWrapper(t,a){new t.plugin("Notice",{color:null,stack:!0,stackSpacing:10,autoClose:6e3,attributes:{x:"right",y:"top"},position:{x:15,y:15},responsivePositions:{500:{x:5,y:5},768:{x:10,y:10}},target:window,fixed:!0,animation:"zoomIn",closeOnClick:"box",zIndex:12e3,_onInit:function(){this.defaultNoticePosition=a.extend({},this.options.position),this._adjustNoticePositon=function(){var t=a(window),o=t.width();t.height();this.options.position=a.extend({},this.defaultNoticePosition),a.each(this.options.responsivePositions,function(t,i){if(o<=t)return this.options.position=i,!1}.bind(this)),this.options.adjustDistance={top:this.options.position.y,right:this.options.position.x,bottom:this.options.position.y,left:this.options.position.x}},this.options.content instanceof a&&(this.options.content=this.options.content.clone().attr("id","")),a(window).on("resize.responsivejBoxNotice-"+this.id,function(t){this.isOpen&&this._adjustNoticePositon()}.bind(this)),this.open()},_onCreated:function(){this.wrapper.addClass("jBox-Notice-color jBox-Notice-"+(this.options.color||"gray")),this.wrapper.data("jBox-Notice-position",this.options.attributes.x+"-"+this.options.attributes.y)},_onOpen:function(){this.options.stack||(this._adjustNoticePositon(),a.each(a(".jBox-Notice"),function(t,i){(i=a(i)).attr("id")!=this.id&&i.data("jBox-Notice-position")==this.options.attributes.x+"-"+this.options.attributes.y&&(this.options.stack||i.data("jBox").close({ignoreDelay:!0}))}.bind(this)))},_onPosition:function(){var t,s={};for(t in a.each(a(".jBox-Notice"),function(t,i){var o=(i=a(i)).data("jBox-Notice-position");s[o]||(s[o]=[]),s[o].push(i)}),s){var i=t.split("-")[1];s[t].reverse();var o,e=0;for(o in s[t]){var n=a(s[t][o]);n.css("margin-"+i,e),e+=n.outerHeight()+this.options.stackSpacing}}},_onCloseComplete:function(){this.destroy(),this.options._onPosition.bind(this).call()}})}!function(i,o){"function"==typeof define&&define.amd?define(["jquery"],function(t){return i.jBox=o(t)}):"object"==typeof module&&module.exports?module.exports=i.jBox=o(require("jquery")):i.jBox=o(i.jQuery)}(this,function(t){var i=jBoxWrapper(t);try{void 0!==jBoxConfirmWrapper&&jBoxConfirmWrapper&&jBoxConfirmWrapper(i,t)}catch(t){console.error(t)}try{void 0!==jBoxImageWrapper&&jBoxImageWrapper&&jBoxImageWrapper(i,t)}catch(t){console.error(t)}try{void 0!==jBoxNoticeWrapper&&jBoxNoticeWrapper&&jBoxNoticeWrapper(i,t)}catch(t){console.error(t)}return i});
\ No newline at end of file
diff --git a/admin/js/variable-inspector-admin.js b/admin/js/variable-inspector-admin.js
index cc9e284..ae0e841 100644
--- a/admin/js/variable-inspector-admin.js
+++ b/admin/js/variable-inspector-admin.js
@@ -43,6 +43,17 @@
// Return jQuery object for method chaining
return this;
}
+
+ // Count results in view
+
+ function updateResultsCount() {
+ var resultCount = $('.inspection-result:not(.result-is-hidden)').length;
+ if ( resultCount == 0 ) {
+ $('#results-count').html('');
+ } else {
+ $('#results-count').html(resultCount);
+ }
+ }
// Set viewer for all results
@@ -68,6 +79,45 @@
+ }
+
+ function maybeHideColorFilter() {
+ var greenVarsCount = $('.inspection-result[data-color=green]').length;
+ var orangeVarsCount = $('.inspection-result[data-color=orange]').length;
+ var redVarsCount = $('.inspection-result[data-color=red]').length;
+ var purpleVarsCount = $('.inspection-result[data-color=purple]').length;
+ var blueVarsCount = $('.inspection-result[data-color=blue]').length;
+
+ if ( greenVarsCount > 0 ) {
+ $('#green-filter').show();
+ } else {
+ $('#green-filter').hide();
+ }
+ if ( orangeVarsCount > 0 ) {
+ $('#orange-filter').show();
+ } else {
+ $('#orange-filter').hide();
+ }
+ if ( redVarsCount > 0 ) {
+ $('#red-filter').show();
+ } else {
+ $('#red-filter').hide();
+ }
+ if ( purpleVarsCount > 0 ) {
+ $('#purple-filter').show();
+ } else {
+ $('#purple-filter').hide();
+ }
+ if ( blueVarsCount > 0 ) {
+ $('#blue-filter').show();
+ } else {
+ $('#blue-filter').hide();
+ }
+ if ( greenVarsCount > 0 || orangeVarsCount > 0 || redVarsCount > 0 || purpleVarsCount > 0 || blueVarsCount > 0 ) {
+ $('#gray-filter').show();
+ } else {
+ $('#gray-filter').hide();
+ }
}
$(document).ready( function() {
@@ -80,6 +130,8 @@
stopper: '', // Id, class, or number value
stickyClass: 'vi-sticky' // Class applied to element when it's stuck. Class name or false.
})
+
+ updateResultsCount();
// Expand or collapse all individual results
@@ -102,6 +154,8 @@
} else {}
});
+
+
// Set the viewer from WP options via get_option -> wp_localize_script
var viewer = viVars.viewer;
@@ -138,7 +192,7 @@
// Generate sample results
- $('.generate-sample-results').click( function( eventObject ) {
+ $('#generate-sample-results').click( function( eventObject ) {
eventObject.preventDefault();
@@ -165,6 +219,7 @@
setTimeout(function() {
setViewer( viewer );
$('#results-spinner').hide();
+ updateResultsCount();
}, 2500);
}
@@ -177,12 +232,15 @@
});
+
+
// Refresh results
- $('.refresh-results').click( function( eventObject ) {
+ $('#refresh-results').click( function( eventObject ) {
eventObject.preventDefault();
+ $('#results-count').html('');
$('#results-spinner').show();
AjaxManual('#inspection-results');
@@ -190,15 +248,17 @@
viewer = $('#results_viewer').find("option:selected").attr('value');
setTimeout(function() {
+ maybeHideColorFilter();
+ updateResultsCount();
setViewer( viewer );
$('#results-spinner').hide();
- }, 2500);
+ }, 3000);
});
// Clear inspection results
- $('.clear-results').click( function( eventObject ) {
+ $('#clear-results').click( function( eventObject ) {
eventObject.preventDefault();
@@ -216,11 +276,13 @@
response = JSON.parse(response)
if ( response.success == true ) {
-
$('#inspection-results').empty();
$('#inspection-results').prepend('There is no data in the inspection log.
');
$('#results-spinner').hide();
-
+ $('.color-filters').removeClass('color-chosen');
+ $('.color-filter').removeClass('color-active');
+ maybeHideColorFilter();
+ updateResultsCount();
}
},
@@ -248,6 +310,81 @@
$(".ui.accordion").accordion();
+
+ // Modal for sponsoring plugin dev and maintenance: https://stephanwagner.me/jBox
+
+ var upgradeModal = new jBox('Modal', {
+ attach: '#plugin-sponsor',
+ trigger: 'click', // or 'mouseenter'
+ // content: 'Test'
+ content: $('#vi-sponsor'),
+ width: 740, // pixels
+ closeButton: 'box',
+ addClass: 'plugin-sponsor-modal',
+ overlayClass: 'plugin-sponsor-modal-overlay',
+ target: '#wpwrap', // where to anchor the modal
+ position: {
+ x: 'center',
+ y: 'top'
+ },
+ // fade: 1000,
+ animation: {
+ open: 'slide:top',
+ close: 'slide:top'
+ }
+ });
+
+ // Invoke tracking of link clicks to track how man times the "Sponsor" button is clicked
+
+ $('#plugin-sponsor').click( function() {
+ $.ajax({
+ url: 'https://bowo.io/vi-sp-btn',
+ method: 'GET',
+ dataType: 'jsonp',
+ crossDomain: true
+ // success: function(response) {
+ // console.log(response);
+ // }
+ });
+ });
+
+ // Modal for PRO version upgrade: https://stephanwagner.me/jBox
+
+ var upgradeModal = new jBox('Modal', {
+ attach: '#plugin-upgrade',
+ trigger: 'click', // or 'mouseenter'
+ // content: 'Test'
+ content: $('#vi-upgrade'),
+ width: 740, // pixels
+ closeButton: 'box',
+ addClass: 'plugin-upgrade-modal',
+ overlayClass: 'plugin-upgrade-modal-overlay',
+ target: '#wpwrap', // where to anchor the modal
+ position: {
+ x: 'center',
+ y: 'top'
+ },
+ // fade: 1000,
+ animation: {
+ open: 'slide:top',
+ close: 'slide:top'
+ }
+ });
+
+ // Invoke tracking of link clicks to track how man times the "Upgrade" button is clicked
+
+ $('#plugin-sponsor').click( function() {
+ $.ajax({
+ url: 'https://bowo.io/vi-up-btn',
+ method: 'GET',
+ dataType: 'jsonp',
+ crossDomain: true
+ // success: function(response) {
+ // console.log(response);
+ // }
+ });
+ });
+
});
})( jQuery );
@@ -268,7 +405,7 @@ function AjaxAutoLoad(selector){(function($){
type: "GET",
url: window.location.href
}).done(function(res){
- $(selector).html( $(res).find(selector) );
+ $(selector).html( $(res).find(selector).html() );
$(".accordion__control").click(function() {
$("#auto_load").prop( "checked", false );
@@ -278,7 +415,6 @@ function AjaxAutoLoad(selector){(function($){
$(selector).removeAttr("style");
});
- // console.log(count++);
})(jQuery);}
// Toggle inspection result accordion
diff --git a/includes/freemius-custom.php b/includes/freemius-custom.php
index 5639a62..89e4261 100644
--- a/includes/freemius-custom.php
+++ b/includes/freemius-custom.php
@@ -37,7 +37,7 @@ function bwvi_fs_custom_connect_header( $header_html )
function bwvi_fs_custom_connect_message( $message, $user_first_name, $product_title, $user_login, $site_link, $freemius_link )
{
return sprintf(
- '%1$s, you can help us make the plugin more compatible with your site and better at doing what you need it to by opting to share some basic WordPress environment info. If you skip this, that\'s okay! %2$s will still work just fine.',
+ '%1$s, you can help us make the plugin more compatible with your site and better at doing what you need it to by opting to share some basic WordPress environment info. You\'ll receive an email to verify your consent. If you skip this, that\'s okay! %2$s will still work just fine.',
$user_first_name,
$product_title
);
@@ -53,7 +53,7 @@ function bwvi_fs_custom_connect_message( $message, $user_first_name, $product_ti
function bwvi_fs_custom_connect_message_on_update( $message, $user_first_name, $product_title, $user_login, $site_link, $freemius_link )
{
return sprintf(
- '%1$s, you can help us make the plugin more compatible with your site and better at doing what you need it to by opting to share some basic WordPress environment info. If you skip this, that\'s okay! %2$s will still work just fine.',
+ '%1$s, you can help us make the plugin more compatible with your site and better at doing what you need it to by opting to share some basic WordPress environment info. You\'ll receive an email to verify your consent. If you skip this, that\'s okay! %2$s will still work just fine.',
$user_first_name,
$product_title
);
diff --git a/variable-inspector.php b/variable-inspector.php
index a97bce8..bdce395 100644
--- a/variable-inspector.php
+++ b/variable-inspector.php
@@ -8,17 +8,17 @@
* registers the activation and deactivation functions, and defines a function
* that starts the plugin.
*
- * @link https://bowo.io
+ * @link https://bowo.io/vi-php
* @since 1.0.0
* @package Variable_Inspector
*
* @wordpress-plugin
* Plugin Name: Variable Inspector
- * Plugin URI: https://wordpress.org/plugins/variable-inspector/
+ * Plugin URI: https://bowo.io/vi-php
* Description: Easily dump and centrally inspect your PHP variables for convenient debugging.
- * Version: 2.2.1
+ * Version: 2.3.0
* Author: Bowo
- * Author URI: https://bowo.io
+ * Author URI: https://bowo.io/vi-bw-php
* License: GPL-2.0+
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
* Text Domain: variable-inspector
@@ -34,7 +34,7 @@
* Start at version 1.0.0 and use SemVer - https://semver.org
* Rename this for your plugin and update it as you release new versions.
*/
-define( 'VARIABLE_INSPECTOR_VERSION', '2.2.1' );
+define( 'VARIABLE_INSPECTOR_VERSION', '2.3.0' );
// Freemius SDK integration
if ( function_exists( 'bwvi_fs' ) ) {