Version Description
Download this release
Release Info
Developer | dovyp |
Plugin | Redux Framework |
Version | 3.5.6 |
Comparing to | |
See all releases |
Code changes from version 3.5.5 to 3.5.6
- CHANGELOG.md +39 -0
- ReduxCore/assets/css/redux-fields.css +1 -1
- ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css +1 -1
- ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.scss +1 -1
- ReduxCore/assets/js/redux.js +19 -19
- ReduxCore/assets/js/redux.min.js +2 -2
- ReduxCore/assets/js/vendor/spectrum/redux-spectrum.js +2 -2
- ReduxCore/assets/js/vendor/spectrum/redux-spectrum.min.js +1 -1
- ReduxCore/core/enqueue.php +58 -45
- ReduxCore/framework.php +18 -28
- ReduxCore/inc/class.p.php +3 -3
- ReduxCore/inc/class.redux_api.php +2 -2
- ReduxCore/inc/class.redux_filesystem.php +4 -0
- ReduxCore/inc/class.redux_sass.php +0 -265
- ReduxCore/inc/extensions/customizer/extension_customizer.css +1 -0
- ReduxCore/inc/extensions/customizer/extension_customizer.js +361 -0
- ReduxCore/inc/extensions/customizer/extension_customizer.min.js +1 -0
- ReduxCore/inc/extensions/customizer/extension_customizer.php +313 -197
- ReduxCore/inc/extensions/customizer/extension_customizer.scss +193 -0
- ReduxCore/inc/extensions/customizer/inc/customizer_control.php +43 -0
- ReduxCore/inc/extensions/customizer/inc/customizer_devs.php +43 -0
- ReduxCore/inc/extensions/customizer/inc/customizer_fields.php +53 -0
- ReduxCore/inc/extensions/customizer/inc/customizer_panel.php +157 -0
- ReduxCore/inc/extensions/customizer/inc/customizer_section.php +150 -0
- ReduxCore/inc/fields/background/field_background.js +1 -0
- ReduxCore/inc/fields/background/field_background.min.js +1 -1
- ReduxCore/inc/fields/border/field_border.php +1 -0
- ReduxCore/inc/fields/color/field_color.js +1 -0
- ReduxCore/inc/fields/color/field_color.min.js +1 -1
- ReduxCore/inc/fields/color_gradient/field_color_gradient.js +1 -0
- ReduxCore/inc/fields/color_gradient/field_color_gradient.min.js +1 -1
- ReduxCore/inc/fields/editor/field_editor_c.php +0 -0
- ReduxCore/inc/fields/media/field_media.php +1 -1
- ReduxCore/inc/fields/palette/field_palette.css +1 -1
- ReduxCore/inc/fields/palette/field_palette.scss +3 -1
- ReduxCore/inc/fields/select/field_select.js +3 -0
- ReduxCore/inc/fields/select/field_select.min.js +1 -1
- ReduxCore/inc/fields/text/field_text.css +1 -1
- ReduxCore/inc/fields/text/field_text.scss +24 -14
- ReduxCore/inc/fields/typography/field_typography.js +7 -4
- ReduxCore/inc/fields/typography/field_typography.min.js +1 -1
- ReduxCore/inc/scssphp/scss.inc.php +0 -4582
- ReduxCore/inc/themecheck/checks/embedded.php +1 -1
- ReduxCore/inc/themecheck/class.redux_themecheck.php +8 -9
- ReduxCore/inc/welcome/css/redux-welcome.css +1 -1
- ReduxCore/inc/welcome/css/redux-welcome.scss +0 -33
- ReduxCore/templates/panel/content.tpl.php +2 -0
- class.redux-plugin.php +3 -3
- composer.json +1 -1
- readme.txt +23 -1
- redux-framework.php +1 -1
- sample/sample-config.php +40 -40
CHANGELOG.md
CHANGED
@@ -1,4 +1,43 @@
|
|
1 |
# Redux Framework Changelog
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
## 3.5.5
|
3 |
* Fixed: Date-time fixes with CSS overloading and positioning.
|
4 |
|
1 |
# Redux Framework Changelog
|
2 |
+
|
3 |
+
## 3.5.6
|
4 |
+
* Fixed Customizer WP 4.3 final fixes.
|
5 |
+
|
6 |
+
## 3.5.5.9
|
7 |
+
* Fixed #2500 - Conflict with outdated select2 in JW Player plugin.
|
8 |
+
|
9 |
+
## 3.5.5.8
|
10 |
+
* Modified: icon_type no longer needed for section icons. Now detects if URLs are provided for images.
|
11 |
+
* Fixed: Various customizer fixes. HTML in the customizer title.
|
12 |
+
* Modified: Media URL now is 95% wide.
|
13 |
+
* Modified: Select2 now 100% width instead of just resolve (that doesn't always work).
|
14 |
+
|
15 |
+
## 3.5.5.7
|
16 |
+
* Modified: Field enqueue method to allow for more flexibility.
|
17 |
+
* Added: Support for Airplane Mode plugin (https://github.com/norcross/airplane-mode) by @norcross. Thanks @chriscct7 #2463
|
18 |
+
|
19 |
+
## 3.5.5.6
|
20 |
+
* Fixed: Undefined index in theme-check enhancements. Thanks @winwinwebdesign!
|
21 |
+
* Removed: SASS compiler & code. Note needed.
|
22 |
+
* Fixed: Color transparency live-update for Customizer for color, background,
|
23 |
+
and color gradient fields.
|
24 |
+
|
25 |
+
## 3.5.5.5
|
26 |
+
* Fixed: Undefined index when removing a section.
|
27 |
+
|
28 |
+
## 3.5.5.4
|
29 |
+
* Fixed: Typography bug onload always saying settings have changed.
|
30 |
+
* Modified: Added minified customizer JS.
|
31 |
+
|
32 |
+
## 3.5.5.3
|
33 |
+
* Fixed: Redux CUSTOMIZER! YEA!
|
34 |
+
|
35 |
+
## 3.5.5.2
|
36 |
+
* Fixed: Small echo in Redux API
|
37 |
+
|
38 |
+
## 3.5.5.1
|
39 |
+
* Fixed: PHP 5.2 Theme-Check error.
|
40 |
+
|
41 |
## 3.5.5
|
42 |
* Fixed: Date-time fixes with CSS overloading and positioning.
|
43 |
|
ReduxCore/assets/css/redux-fields.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.redux-container-ace_editor .ace-wrapper{position:static}.redux-container-ace_editor .ace_editor{height:200px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-ace_editor .ace_gutter{z-index:1!important}.redux-main .redux-container-background .redux-background-attachment,.redux-main .redux-container-background .redux-background-attachment select,.redux-main .redux-container-background .redux-background-clip,.redux-main .redux-container-background .redux-background-clip select,.redux-main .redux-container-background .redux-background-origin,.redux-main .redux-container-background .redux-background-origin select,.redux-main .redux-container-background .redux-background-position,.redux-main .redux-container-background .redux-background-position select,.redux-main .redux-container-background .redux-background-repeat,.redux-main .redux-container-background .redux-background-repeat select,.redux-main .redux-container-background .redux-background-size,.redux-main .redux-container-background .redux-background-size select{width:200px!important;margin-right:10px;margin-bottom:7px}.redux-main .redux-container-background .background-preview{display:block;width:100%;margin:5px 0 10px;border:1px dotted #d3d3d3}.redux-main .redux-container-background .select2-container{margin-right:10px;margin-bottom:10px}.redux-main .redux-container-background .wp-picker-container{margin-bottom:10px}.redux-main .redux-container-background .upload{width:100%;margin-bottom:8px}.redux-main .redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.wp-customizer .redux-container-background .redux-background-attachment,.wp-customizer .redux-container-background .redux-background-attachment select,.wp-customizer .redux-container-background .redux-background-clip,.wp-customizer .redux-container-background .redux-background-clip select,.wp-customizer .redux-container-background .redux-background-origin,.wp-customizer .redux-container-background .redux-background-origin select,.wp-customizer .redux-container-background .redux-background-position,.wp-customizer .redux-container-background .redux-background-position select,.wp-customizer .redux-container-background .redux-background-repeat,.wp-customizer .redux-container-background .redux-background-repeat select,.wp-customizer .redux-container-background .redux-background-size,.wp-customizer .redux-container-background .redux-background-size select{width:100%!important}.redux-container-border .select2-container{float:left;display:block;margin-right:10px}.redux-container-border .select_wrapper{float:left;width:inherit}.redux-container-border .select_wrapper select{width:80px;float:left}.redux-container-border .field-border-input{margin-right:10px;margin-bottom:7px}.redux-container-border .wp-picker-container{margin-top:2px}@media screen and (max-width:782px){.redux-container-border .field-border-input input{display:inline-block!important;width:100px!important}.redux-container-border .field-border-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-border .select_wrapper{margin-top:6px}}.redux-container-checkbox label{vertical-align:top;width:100%}.redux-container-checkbox label .field-desc{margin-top:0;float:left;width:93%;clear:none}.redux-container-color_gradient .colorGradient{display:inline-block}.redux-container-color_gradient .toLabel{padding-left:18px}@media screen and (max-width:660px){.redux-container-color_gradient .colorGradient{display:block;text-align:center!important}}.sp-container,.sp-replacer{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.sp-replacer.focus,.sp-replacer.hover,.sp-replacer:focus,.sp-replacer:hover{background:#fafafa;border-color:#999;color:#222}.sp-replacer.focus,.sp-replacer:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.sp-replacer.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.sp-replacer.active,.sp-replacer.active:hover,.sp-replacer:active{background:#eee;border-color:#999;color:#333;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#ui-datepicker-div{z-index:15!important}.ui-datepicker-header{background-color:#00abef}.redux-dimensions-container .select_wrapper,.redux-dimensions-container select{width:65px!important;float:left}.redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-dimensions-container .field-dimensions-input input{display:inline-block!important;width:100px!important}.redux-dimensions-container .field-dimensions-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-dimensions-container .select_wrapper{margin-top:6px}}.redux-main .divide{float:none;border-color:#E7E7E7;display:block;width:100%;height:35px!important;line-height:35px!important;position:relative;margin:15px 0 10px}.redux-main .divide .inner{width:42%!important;left:40%!important;margin-left:-6%;background-color:#FCFCFC;border-color:#E7E7E7;position:absolute;height:1px;top:50%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-main .divide .inner span{background-color:#FCFCFC;border-color:#E7E7E7;height:5px;width:5px;border-width:2px;border-style:solid;display:block;position:absolute;left:50%;margin-left:-5px;margin-top:-5px}.wp-customizer .redux-container-divide .divide .inner{width:82%!important;left:18%!important;margin-left:-8%}.redux-container-editor .mceLayout td{border-width:1px;margin:0;padding:1px}.redux-container-editor input,.redux-container-editor textarea{margin:inherit}.redux-container-editor textarea{border:0;border-width:0}.redux-container-editor .wp-editor-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-editor .wp-editor-container textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-style:inherit}.redux-container-editor .quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial,Helvetica,sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background:#eee;background:-webkit-gradient(linear,left bottom,left top,from(#e3e3e3),to(#fff)) #eee;background:-webkit-linear-gradient(bottom,#e3e3e3,#fff) #eee;background:-moz-linear-gradient(bottom,#e3e3e3,#fff) #eee;background:-o-linear-gradient(bottom,#e3e3e3,#fff) #eee;background:linear-gradient(to top,#e3e3e3,#fff) #eee}.redux-container-image_select .redux-table-container{display:table;table-layout:fixed;width:100%}.redux-container-image_select .redux-image-select{margin:0!important}.redux-container-image_select .redux-image-select .tiles{display:block;background-color:#FFF;background-repeat:repeat;width:40px;height:40px}.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select img{border-color:#d9d9d9}.redux-container-image_select .redux-image-select li:last-child{margin-bottom:0}.redux-container-image_select .redux-image-select input[type=radio]{display:none}.redux-container-image_select .redux-image-select-presets img{width:100%}.redux-container-image_select ul.redux-image-select li{margin:0 10px 3px;display:inline-block;padding:2px 2px 2px 0}.redux-container-image_select .redux-image-select-selected{background-color:#f9f9f9}.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select-selected .tiles,.redux-container-image_select .redux-image-select-selected img{border-width:4px;border-style:solid}.redux-container-image_select .redux-image-select-selected .tiles{border-color:#7a7a7a}.redux-info-field{min-height:20px;padding:8px 19px;margin:10px 0;border-radius:4px;border:1px solid;position:relative}.redux-info-field h1,.redux-info-field h2,.redux-info-field h3,.redux-info-field h4,.redux-info-field h5,.redux-info-field h6{border-bottom:0!important}.redux-info-field h3{color:#777}.redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field .redux-info-icon i{font-size:2em}.redux-info-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-info-field.redux-normal{background-color:#eee;border-color:#ccc;color:#666}.redux-info-field.redux-normal i{color:#c5c5c5}.redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}.redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}.redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}.redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}.redux-notice-field{margin:15px 0 0;background-color:#fff;border:0;border-left:4px solid #f3f3f3;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);padding:1px 12px}.redux-notice-field h1,.redux-notice-field h2,.redux-notice-field h3,.redux-notice-field h4,.redux-notice-field h5,.redux-notice-field h6{border-bottom:0!important}.redux-notice-field p{margin:.5em 0;padding:2px}.redux-notice-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-notice-field .redux-info-icon i{font-size:2em}.redux-notice-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-notice-field.redux-info{border-left:4px solid #0099d5}.redux-notice-field.redux-success{border-left:4px solid #7ad03a}.redux-notice-field.redux-warning{border-left:4px solid #fbeba4}.redux-notice-field.redux-critical{border-left:4px solid #dd3d36}.redux-main .redux-field-container.redux-container-info{padding:0}.wp-customizer .hasIcon.redux-info-field .redux-info-desc,.wp-customizer .hasIcon.redux-notice-field .redux-info-desc{display:block;margin-left:43px}.wp-customizer .hasIcon.redux-info-field .redux-info-icon,.wp-customizer .hasIcon.redux-notice-field .redux-info-icon{float:left}.wp-customizer .redux-main .customize-control.customize-control-redux-info{border-bottom:0}.redux-container-link_color .linkColor{display:inline-block;padding-right:10px;padding-bottom:7px}.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:700;text-decoration:none;text-shadow:1px 1px 0 #FFF;margin:0 10px 0 0;padding:3px 10px;background:#FFDFEC;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80%!important}.redux-main .button{margin-top:2px}.redux-container-multi_text ul.redux-multi-text{margin:0;padding:0}.redux-container-multi_text .redux-multi-text-add{clear:both;margin:5px 0}@media screen and (max-width:782px){.redux-container-multi_text input{clear:both}.redux-container-multi_text .redux-multi-text-remove{margin:0;float:right}}.deletion,.redux-container .redux-multi-text-remove,.redux-container a.redux-multi-text-remove{color:red;padding:2px 4px;margin-left:5px;background:orange}.deletion:hover,.redux-container .redux-multi-text-remove:hover,.redux-container a.redux-multi-text-remove:hover{background:red;color:#fff;text-decoration:none}.wp-customizer .redux-container-multi_text .button{float:right}.wp-customizer .redux-container-multi_text .redux-multi-text-remove{float:right;margin-bottom:5px}.wp-customizer .redux-container-multi_text ul.redux-multi-text input{width:100%!important}.redux-container-palette label{border-width:3px;border-radius:0;width:100%!important}.redux-container-palette label.ui-button.ui-widget{width:95%;background:0 0;padding:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text{display:flex}.redux-container-palette label.ui-button.ui-widget .ui-button-text span{padding:10px;flex-grow:1;font-size:0;line-height:10px;color:transparent;-webkit-transition:all 200ms ease-in-out;-moz-transition:all 200ms ease-in-out;-ms-transition:all 200ms ease-in-out;-o-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text span:hover{flex-grow:3;font-weight:700;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff,0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333!important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}.redux-main .form-table-section-indented{width:95%;margin-left:5%}.redux-main .form-table-section tr:first-of-type th:first-of-type{padding:0!important}.redux-main h3{margin-top:10px}.redux-main .form-table-section-indented>tbody>tr:first-child{display:none}.redux-main .form-table-section-indented>tbody>tr:nth-last-child(2){border-bottom:0}.redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.redux-container-select_image{margin-top:2px;margin-left:5px;width:100%;margin-bottom:0}.redux-preview-image{max-height:250px;max-width:250px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slider .redux-slider-container{margin-left:25px;margin-right:25px;width:200px;display:inline-block;vertical-align:middle}.redux-container-slider .redux-slider-input,.redux-container-slider .redux-slider-select-one,.redux-container-slider .redux-slider-select-two{width:100px!important;text-align:center}.redux-container-slider .redux-slider-label{position:absolute;margin-left:-5px}.redux-container-slider .redux-slider-label-one{position:absolute;margin-left:-22px}.redux-container-slider .redux-slider-label-two{position:absolute;margin-top:-21px;margin-left:245px}@media screen and (max-width:782px){.redux-container-slider input{display:inline-block!important}}@media screen and (max-width:570px){.redux-container-slider{text-align:center}.redux-container-slider .redux-slider-label,.redux-container-slider .select2-container,.redux-container-slider input,.redux-container-slider select{display:block!important;position:inherit;margin:10px auto}.redux-container-slider .redux-slider-container{margin-top:3px;width:80%}}.wp-customizer .redux-container-slider .redux-slider-label{float:left;position:inherit;width:25%;text-align:center;margin-left:0}.wp-customizer .redux-container-slider .redux-slider-input,.wp-customizer .redux-container-slider .redux-slider-select-one,.wp-customizer .redux-container-slider .redux-slider-select-two{width:25%!important}.wp-customizer .redux-container-slider .redux-slider-container{width:70%;margin-right:0;margin-left:5%}.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-user-select:none;-ms-touch-action:none;-ms-user-select:none;-moz-user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-base{width:100%;height:100%;position:relative}.noUi-origin{position:absolute;right:0;top:0;left:0;bottom:0}.noUi-handle{position:relative;z-index:1}.noUi-stacking .noUi-handle{z-index:10}.noUi-state-tap .noUi-origin{-webkit-transition:left .3s,top .3s;transition:left .3s,top .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.noUi-horizontal.noUi-extended{padding:0 15px}.noUi-horizontal.noUi-extended .noUi-origin{right:-15px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;left:-6px;top:-17px}.noUi-vertical.noUi-extended{padding:15px 0}.noUi-vertical.noUi-extended .noUi-origin{bottom:-15px}.noUi-background{background:#FAFAFA;box-shadow:inset 0 1px 1px #f0f0f0}.noUi-connect{background:#3FB8AF;box-shadow:inset 0 0 3px rgba(51,51,51,.45);-webkit-transition:background 450ms;transition:background 450ms}.noUi-origin{border-radius:2px}.noUi-target{border-radius:4px;border:1px solid #D3D3D3;box-shadow:inset 0 1px 1px #F0F0F0,0 3px 6px -5px #BBB}.noUi-target.noUi-connect{box-shadow:inset 0 0 3px rgba(51,51,51,.45),0 3px 6px -5px #BBB}.noUi-dragable{cursor:w-resize}.noUi-vertical .noUi-dragable{cursor:n-resize}.noUi-handle{border:1px solid #D9D9D9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #EBEBEB,0 3px 6px -3px #BBB}.noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#E8E7E6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect,[disabled].noUi-connect{background:#B8B8B8}[disabled] .noUi-handle{cursor:not-allowed}.noUi-state-blocked .noUi-connect,.noUi-state-blocked.noUi-connect{background:#4FDACF}.redux-container-slides .redux-slides-list .select2-container{margin-bottom:10px;width:100%}.redux-container-slides .ui-accordion-header{margin-bottom:0}.redux-container-slides .full-text,.redux-container-slides .large-text{width:100%}.redux-container-slides .redux-slides-accordion-group{border:1px solid #dfdfdf!important;border-radius:3px!important;margin-top:0!important;margin-bottom:10px;background:#f9f9f9;padding:5px}.redux-container-slides .redux-slides-accordion-group h3{border:1px solid #dfdfdf;cursor:move!important;font-weight:700;padding:0 10px!important;height:40px;line-height:40px!important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-slides #redux-slides-accordion .redux-slides-image{height:250px;padding:5px;margin-top:10px;margin-bottom:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slides .redux-slides-add{float:right;margin-right:10%;display:block;margin-bottom:10px}.redux-container-slides .redux-slides-remove{color:#ef521d!important;float:right;margin-top:5px}.redux-container-slides .redux-slides-header{font-weight:700}.redux-container-slides .redux_slides_add_remove{margin-bottom:10px}.redux-container-slides input{width:100%!important}.wp-customizer .redux-container-slides .ui-accordion .ui-accordion-content{padding:10px}.redux-container-sortable i.el{cursor:move}.redux-container-sortable label{margin-right:10px;width:300px}.redux-container-sortable label.bugger{margin-bottom:0!important;font-size:12px!important;color:#999}.redux-container-sortable input{margin-right:10px}.redux-container-sortable .checkbox-container{width:364px}.redux-container-sortable .checkbox-container .drag{float:right;margin-left:10px}.redux-container-sortable ul.labeled li{line-height:1.4em!important}.redux-container-sortable li{line-height:30px!important}.redux-container-sortable li.ui-state-highlight{height:30px;width:364px;margin-bottom:13px}.redux-container-sortable li.placeholder{height:30px;margin:10px 0}.wp-customizer .redux-sortable input[type=text]{width:92%}.wp-customizer .redux-sortable i.el{margin-left:5px}.wp-customizer .redux-container-sortable .checkbox-container{width:inherit}.wp-customizer .redux-container-sortable .ui-draggable-handle{margin-left:3%}.redux-container-sorter{margin-right:-20px}.redux-container-sorter ul{background:#F9F9F9;border:1px solid #E3E3E3;min-height:40px;padding:10px 10px 0;width:145px;float:left;margin:0 15px 0 0}.redux-container-sorter ul.filled{opacity:.7;filter:alpha(opacity=70);background:#efecec}.redux-container-sorter ul li{border:1px solid #DFDFDF;cursor:move;font-weight:700;margin-bottom:10px!important;padding:0 10px;height:40px;line-height:40px!important;background-color:#F1F1F1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-sorter ul li h3{margin:0 0 10px;text-align:center;color:#777;text-transform:capitalize;word-wrap:break-word}.redux-container-sorter ul li.placeholder{height:40px}.wp-customizer .redux-container-sorter ul{width:85%;margin:0 0 5px}.redux-container-spacing .select_wrapper,.redux-container-spacing select{width:80px!important;float:left}.redux-container-spacing .field-spacing-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-container-spacing .field-spacing-input input{display:inline-block!important;width:70px!important}.redux-container-spacing .field-spacing-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-spacing .select_wrapper{margin-top:6px}}.redux-container-spinner .spinner-wrpr{position:relative;display:block;height:30px;overflow:hidden}.redux-container-spinner .spinner-wrpr .spinner-input{position:relative!important;z-index:1;width:45px!important;height:30px!important;background:#e7e7e7!important;border:1px solid #bfbfbf!important;border-right:0!important;border-left:0!important;-webkit-border-radius:0!important;-moz-border-radius:0!important;border-radius:0!important}.redux-container-spinner .ui-spinner{position:static;display:inline}.redux-container-spinner .ui-spinner-buttons{position:absolute;padding:0}.redux-container-spinner .ui-widget .ui-spinner-button{position:absolute;top:0;padding:0 0 30px;overflow:hidden;cursor:pointer;background:-moz-linear-gradient(#fff,#f3f3f3) #fff;background:-o-linear-gradient(#fff,#f3f3f3) #fff;background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f3f3f3)) #fff;background:linear-gradient(#fff,#f3f3f3) #fff;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.redux-container-spinner .ui-spinner-button:hover,.redux-container-spinner .ui-state-hover{background:-moz-linear-gradient(#f3f3f3,#fff) #f3f3f3;background:-o-linear-gradient(#f3f3f3,#fff) #f3f3f3;background:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff)) #f3f3f3;background:linear-gradient(#f3f3f3,#fff) #f3f3f3}.redux-container-spinner .ui-corner-tr,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{-webkit-border-radius:0 5px 5px 0;-moz-border-radius:0 5px 5px 0;border-radius:0 5px 5px 0}.redux-container-spinner .ui-corner-br,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{-webkit-border-radius:5px 0 0 5px;-moz-border-radius:5px 0 0 5px;border-radius:5px 0 0 5px}.redux-container-spinner .ui-spinner-button .ui-icon{top:0;display:block;width:28px;height:28px;margin:0;border:1px solid #b7b7b7}.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpsjwsKADAIQu3u3tsRY6M5gz7w0AqSQFLdZ3ZRgmf44JQ/EOZ9oYOsiDviVemP2oYoWCwBBgDpO6VXVo3RyQAAAABJRU5ErkJggg==) 10px 10px no-repeat}.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNpi+P//PwM6bmlpwS4IorEKokggC8Il0AVhEv9x6sAmiaz9P05XIUsygmVRAUiAESDAAFHcpVdWtdj/AAAAAElFTkSuQmCC) 10px 10px no-repeat}.redux-container-switch .switch-options{min-height:30px;margin-right:10px}.redux-container-switch .switch-options label{cursor:pointer}.redux-container-switch .switch-options input{display:none}.redux-container-switch .cb-disable,.redux-container-switch .cb-enable{padding:0 10px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.redux-container-switch .cb-disable span,.redux-container-switch .cb-enable span{line-height:30px;font-weight:700;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}.redux-container-switch .cb-disable,.redux-container-switch .cb-disable span,.redux-container-switch .cb-enable,.redux-container-switch .cb-enable span{display:block;float:left}.redux-container-switch .cb-enable{border-right:0;border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px}.redux-container-switch .cb-enable.selected{color:#fff}.redux-container-switch .cb-disable{border-left:0;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0}.redux-container-switch .cb-disable.selected{color:#fff}.redux-container-text label{display:block;position:relative;font-size:12px!important;text-align:left;color:#999;margin:4px 0 2px!important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container{display:block;position:relative;margin:0;padding:0;width:100%;max-width:660px}.redux-main .redux-typography-container .clearfix{clear:both}.redux-main .redux-typography-container .clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.redux-main .redux-typography-container .redux-typography-color,.redux-main .redux-typography-container input.wp-picker-default{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;height:24px;padding:0 14px!important;margin-top:0;margin-bottom:0;margin-left:4px!important;font-size:12px!important}.redux-main .redux-typography-container .select_wrapper{display:block;position:relative;float:left;clear:none;margin:0 10px 0 0;width:48%!important;min-width:210px!important;max-width:324px!important;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .select_wrapper:nth-child(even),.redux-main .redux-typography-container .select_wrapper:nth-child(odd){margin-right:10px!important}.redux-main .redux-typography-container .select_wrapper.typography-family .select2-container{width:100%}.redux-main .redux-typography-container .select_wrapper .redux-typography{font-size:14px!important;display:block;float:left;height:28px!important;line-height:50px!important;padding:0!important;width:100%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .wp-picker-container{float:left;clear:left;margin-bottom:12px;padding:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-main .redux-typography-container .input_wrapper{display:block;position:relative;margin:0 4px 0 5px;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container .input_wrapper.font-size{margin-left:0}.redux-main .redux-typography-container .input_wrapper input.mini{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;width:78%;text-align:center;margin:0;height:28px;top:3px;padding:0 2px 0 5px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .redux-typography-container .picker-wrapper{display:block;position:relative;margin:0;padding:0;width:23%;width:100%;max-width:23%;min-width:70px;min-width:100%;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container label{display:block;position:relative;font-size:12px!important;text-align:left;color:#999;margin:4px 0 2px!important;cursor:default}.redux-main .redux-typography-container .typography-preview{display:none;width:100%;border:1px dotted #d3d3d3;max-width:850px;padding:10px;font-size:10pt;height:auto;margin:5px 0 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.redux-main .redux-typography-container .typography-color{border:0;margin:0}.redux-main .redux-typography-container ::-webkit-input-placeholder{line-height:19px}@media screen and (max-width:540px){.redux-main .redux-main .redux-typography-container{max-width:230px;margin:0 auto}.redux-main .redux-main .redux-typography-container .select_wrapper{max-width:210px;min-width:210px;width:210px;margin-left:0!important;margin-right:0!important}.redux-main .redux-main .redux-typography-container .input_wrapper{max-width:101px;min-width:101px;width:101px;margin-left:0!important;margin-right:5px!important}.redux-main .redux-main .redux-typography-container .input_wrapper input.mini{width:73%}.redux-main .redux-main .redux-typography-container .input-append .add-on{width:30%;padding:5px!important}.redux-main .redux-main .redux-main .wp-picker-container .wp-picker-input-wrap{margin-top:7px}}@media screen and (max-width:360px){.redux-main .redux-typography-container .iris-picker .iris-square{margin-right:3%}}.wp-customizer .redux-typography-container .input_wrapper{width:40%;max-width:40%;min-width:20%}.wp-customizer .redux-typography-container .input_wrapper input.mini{width:70%}.wp-customizer .redux-typography-container .select_wrapper{width:100%!important}.redux-main input.redux-color{float:left;width:70px;margin-left:5px}.redux-main input.color-transparency{margin-left:10px;margin-right:3px}.redux-main input.wp-color-picker{width:80px!important}.redux-main .section-color .controls{width:345px}.redux-main .section-color .explain{width:225px}.redux-main .iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0 0!important;right:-3px;left:-3px;border:4px solid #aaa!important;border-width:4px 3px;width:auto;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.redux-main .iris-picker .iris-slider-offset{position:absolute;top:2px;left:0;right:0;bottom:4px;width:28px;background:0 0!important;border:0!important;height:auto}.redux-main .wp-picker-container input{margin-bottom:inherit;margin-top:inherit;padding:3px 5px}.redux-main .wp-picker-container .wp-color-result{outline:0;margin:0}.redux-main .wp-picker-container .wp-picker-default{padding:0 10px 1px}.redux-main .redux-color-gradient{line-height:24px}.redux-main .color-transparency-check{line-height:1;margin-top:0!important}.redux-main .wp-picker-clear{margin-top:0!important}.wp-customizer .redux-main .redux-typography-container .redux-typography-color,.wp-customizer .redux-main .redux-typography-container input.wp-picker-default,.wp-customizer .redux-main input.wp-picker-default{padding:0 4px!important}.wp-customizer .redux-main input.wp-color-picker{width:65px!important;margin-left:5px!important}.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:700;text-decoration:none;text-shadow:1px 1px 0 #FFF;margin:0 10px 0 0;padding:3px 10px;background:#FFDFEC;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80%!important}.redux-main .button{margin-top:2px}
|
1 |
+
.redux-container-ace_editor .ace-wrapper{position:static}.redux-container-ace_editor .ace_editor{height:200px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-ace_editor .ace_gutter{z-index:1!important}.redux-main .redux-container-background .redux-background-attachment,.redux-main .redux-container-background .redux-background-attachment select,.redux-main .redux-container-background .redux-background-clip,.redux-main .redux-container-background .redux-background-clip select,.redux-main .redux-container-background .redux-background-origin,.redux-main .redux-container-background .redux-background-origin select,.redux-main .redux-container-background .redux-background-position,.redux-main .redux-container-background .redux-background-position select,.redux-main .redux-container-background .redux-background-repeat,.redux-main .redux-container-background .redux-background-repeat select,.redux-main .redux-container-background .redux-background-size,.redux-main .redux-container-background .redux-background-size select{width:200px!important;margin-right:10px;margin-bottom:7px}.redux-main .redux-container-background .background-preview{display:block;width:100%;margin:5px 0 10px;border:1px dotted #d3d3d3}.redux-main .redux-container-background .select2-container{margin-right:10px;margin-bottom:10px}.redux-main .redux-container-background .wp-picker-container{margin-bottom:10px}.redux-main .redux-container-background .upload{width:100%;margin-bottom:8px}.redux-main .redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.wp-customizer .redux-container-background .redux-background-attachment,.wp-customizer .redux-container-background .redux-background-attachment select,.wp-customizer .redux-container-background .redux-background-clip,.wp-customizer .redux-container-background .redux-background-clip select,.wp-customizer .redux-container-background .redux-background-origin,.wp-customizer .redux-container-background .redux-background-origin select,.wp-customizer .redux-container-background .redux-background-position,.wp-customizer .redux-container-background .redux-background-position select,.wp-customizer .redux-container-background .redux-background-repeat,.wp-customizer .redux-container-background .redux-background-repeat select,.wp-customizer .redux-container-background .redux-background-size,.wp-customizer .redux-container-background .redux-background-size select{width:100%!important}.redux-container-border .select2-container{float:left;display:block;margin-right:10px}.redux-container-border .select_wrapper{float:left;width:inherit}.redux-container-border .select_wrapper select{width:80px;float:left}.redux-container-border .field-border-input{margin-right:10px;margin-bottom:7px}.redux-container-border .wp-picker-container{margin-top:2px}@media screen and (max-width:782px){.redux-container-border .field-border-input input{display:inline-block!important;width:100px!important}.redux-container-border .field-border-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-border .select_wrapper{margin-top:6px}}.redux-container-checkbox label{vertical-align:top;width:100%}.redux-container-checkbox label .field-desc{margin-top:0;float:left;width:93%;clear:none}.redux-container-color_gradient .colorGradient{display:inline-block}.redux-container-color_gradient .toLabel{padding-left:18px}@media screen and (max-width:660px){.redux-container-color_gradient .colorGradient{display:block;text-align:center!important}}.sp-container,.sp-replacer{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.sp-replacer.focus,.sp-replacer.hover,.sp-replacer:focus,.sp-replacer:hover{background:#fafafa;border-color:#999;color:#222}.sp-replacer.focus,.sp-replacer:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.sp-replacer.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.sp-replacer.active,.sp-replacer.active:hover,.sp-replacer:active{background:#eee;border-color:#999;color:#333;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#ui-datepicker-div{z-index:15!important}.ui-datepicker-header{background-color:#00abef}.redux-dimensions-container .select_wrapper,.redux-dimensions-container select{width:65px!important;float:left}.redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-dimensions-container .field-dimensions-input input{display:inline-block!important;width:100px!important}.redux-dimensions-container .field-dimensions-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-dimensions-container .select_wrapper{margin-top:6px}}.redux-main .divide{float:none;border-color:#E7E7E7;display:block;width:100%;height:35px!important;line-height:35px!important;position:relative;margin:15px 0 10px}.redux-main .divide .inner,.redux-main .divide .inner span{background-color:#FCFCFC;border-color:#E7E7E7;position:absolute}.redux-main .divide .inner{width:42%!important;left:40%!important;margin-left:-6%;height:1px;top:50%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-main .divide .inner span{height:5px;width:5px;border-width:2px;border-style:solid;display:block;left:50%;margin-left:-5px;margin-top:-5px}.wp-customizer .redux-container-divide .divide .inner{width:82%!important;left:18%!important;margin-left:-8%}.redux-container-editor .mceLayout td{border-width:1px;margin:0;padding:1px}.redux-container-editor input,.redux-container-editor textarea{margin:inherit}.redux-container-editor textarea{border:0}.redux-container-editor .wp-editor-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-editor .wp-editor-container textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-style:inherit}.redux-container-editor .quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial,Helvetica,sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e3e3e3),to(#fff));background-image:-webkit-linear-gradient(bottom,#e3e3e3,#fff);background-image:-moz-linear-gradient(bottom,#e3e3e3,#fff);background-image:-o-linear-gradient(bottom,#e3e3e3,#fff);background-image:linear-gradient(to top,#e3e3e3,#fff)}.redux-container-image_select .redux-table-container{display:table;table-layout:fixed;width:100%}.redux-container-image_select .redux-image-select{margin:0!important}.redux-container-image_select .redux-image-select .tiles{display:block;background-color:#FFF;background-repeat:repeat;width:40px;height:40px}.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select img{border-color:#d9d9d9}.redux-container-image_select .redux-image-select li:last-child{margin-bottom:0}.redux-container-image_select .redux-image-select input[type=radio]{display:none}.redux-container-image_select .redux-image-select-presets img{width:100%}.redux-container-image_select ul.redux-image-select li{margin:0 10px 3px;display:inline-block;padding:2px 2px 2px 0}.redux-container-image_select .redux-image-select-selected{background-color:#f9f9f9}.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select-selected .tiles,.redux-container-image_select .redux-image-select-selected img{border-width:4px;border-style:solid}.redux-container-image_select .redux-image-select-selected .tiles{border-color:#7a7a7a}.redux-info-field .redux-info-icon i,.redux-notice-field .redux-info-icon i{font-size:2em}.redux-info-field .redux-info-desc,.redux-notice-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-info-field{min-height:20px;padding:8px 19px;margin:10px 0;border-radius:4px;border:1px solid;position:relative}.redux-info-field h1,.redux-info-field h2,.redux-info-field h3,.redux-info-field h4,.redux-info-field h5,.redux-info-field h6{border-bottom:0!important}.redux-info-field h3{color:#777}.redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field.redux-normal{background-color:#eee;border-color:#ccc;color:#666}.redux-info-field.redux-normal i{color:#c5c5c5}.redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}.redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}.redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}.redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}.redux-notice-field{margin:15px 0 0;background-color:#fff;border:0;border-left:4px solid #f3f3f3;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);padding:1px 12px}.redux-notice-field h1,.redux-notice-field h2,.redux-notice-field h3,.redux-notice-field h4,.redux-notice-field h5,.redux-notice-field h6{border-bottom:0!important}.redux-notice-field p{margin:.5em 0;padding:2px}.redux-notice-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-notice-field.redux-info{border-left:4px solid #0099d5}.redux-notice-field.redux-success{border-left:4px solid #7ad03a}.redux-notice-field.redux-warning{border-left:4px solid #fbeba4}.redux-notice-field.redux-critical{border-left:4px solid #dd3d36}.redux-main .redux-field-container.redux-container-info{padding:0}.wp-customizer .hasIcon.redux-info-field .redux-info-desc,.wp-customizer .hasIcon.redux-notice-field .redux-info-desc{display:block;margin-left:43px}.wp-customizer .hasIcon.redux-info-field .redux-info-icon,.wp-customizer .hasIcon.redux-notice-field .redux-info-icon{float:left}.wp-customizer .redux-main .customize-control.customize-control-redux-info{border-bottom:0}.redux-container-link_color .linkColor{display:inline-block;padding-right:10px;padding-bottom:7px}.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:700;text-decoration:none;text-shadow:1px 1px 0 #FFF;margin:0 10px 0 0;padding:3px 10px;background:#FFDFEC;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80%!important}.redux-main .button{margin-top:2px}.redux-container-multi_text ul.redux-multi-text{margin:0;padding:0}.redux-container-multi_text .redux-multi-text-add{clear:both;margin:5px 0}@media screen and (max-width:782px){.redux-container-multi_text input{clear:both}.redux-container-multi_text .redux-multi-text-remove{margin:0;float:right}}.deletion,.redux-container .redux-multi-text-remove,.redux-container a.redux-multi-text-remove{color:red;padding:2px 4px;margin-left:5px;background:orange}.deletion:hover,.redux-container .redux-multi-text-remove:hover,.redux-container a.redux-multi-text-remove:hover{background:red;color:#fff;text-decoration:none}.wp-customizer .redux-container-multi_text .button{float:right}.wp-customizer .redux-container-multi_text .redux-multi-text-remove{float:right;margin-bottom:5px}.wp-customizer .redux-container-multi_text ul.redux-multi-text input{width:100%!important}.redux-container-palette label{border:3px solid transparent;border-color:transparent!important;border-radius:0;width:100%!important;display:block}.redux-container-palette label.ui-button.ui-widget{width:95%;background:0 0;padding:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text{display:flex}.redux-container-palette label.ui-button.ui-widget .ui-button-text span{padding:10px;flex-grow:1;font-size:0;line-height:10px;color:transparent;-webkit-transition:all 200ms ease-in-out;-moz-transition:all 200ms ease-in-out;-ms-transition:all 200ms ease-in-out;-o-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text span:hover{flex-grow:3;font-weight:700;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff,0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333!important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}.redux-main .form-table-section-indented{width:95%;margin-left:5%}.redux-main .form-table-section tr:first-of-type th:first-of-type{padding:0!important}.redux-main h3{margin-top:10px}.redux-main .form-table-section-indented>tbody>tr:first-child{display:none}.redux-main .form-table-section-indented>tbody>tr:nth-last-child(2){border-bottom:0}.redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.redux-container-select_image{margin-top:2px;margin-left:5px;width:100%;margin-bottom:0}.redux-preview-image{max-height:250px;max-width:250px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slider .redux-slider-container{margin-left:25px;margin-right:25px;width:200px;display:inline-block;vertical-align:middle}.redux-container-slider .redux-slider-input,.redux-container-slider .redux-slider-select-one,.redux-container-slider .redux-slider-select-two{width:100px!important;text-align:center}.redux-container-slider .redux-slider-label{position:absolute;margin-left:-5px}.redux-container-slider .redux-slider-label-one{position:absolute;margin-left:-22px}.redux-container-slider .redux-slider-label-two{position:absolute;margin-top:-21px;margin-left:245px}@media screen and (max-width:782px){.redux-container-slider input{display:inline-block!important}}@media screen and (max-width:570px){.redux-container-slider{text-align:center}.redux-container-slider .redux-slider-label,.redux-container-slider .select2-container,.redux-container-slider input,.redux-container-slider select{display:block!important;position:inherit;margin:10px auto}.redux-container-slider .redux-slider-container{margin-top:3px;width:80%}}.wp-customizer .redux-container-slider .redux-slider-label{float:left;position:inherit;width:25%;text-align:center;margin-left:0}.wp-customizer .redux-container-slider .redux-slider-input,.wp-customizer .redux-container-slider .redux-slider-select-one,.wp-customizer .redux-container-slider .redux-slider-select-two{width:25%!important}.wp-customizer .redux-container-slider .redux-slider-container{width:70%;margin-right:0;margin-left:5%}.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-user-select:none;-ms-touch-action:none;-ms-user-select:none;-moz-user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-base{width:100%;height:100%;position:relative}.noUi-origin{position:absolute;right:0;top:0;left:0;bottom:0;border-radius:2px}.noUi-handle{position:relative;z-index:1}.noUi-stacking .noUi-handle{z-index:10}.noUi-state-tap .noUi-origin{-webkit-transition:left .3s,top .3s;transition:left .3s,top .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.noUi-horizontal.noUi-extended{padding:0 15px}.noUi-horizontal.noUi-extended .noUi-origin{right:-15px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;left:-6px;top:-17px}.noUi-vertical.noUi-extended{padding:15px 0}.noUi-vertical.noUi-extended .noUi-origin{bottom:-15px}.noUi-background{background:#FAFAFA;box-shadow:inset 0 1px 1px #f0f0f0}.noUi-connect{background:#3FB8AF;box-shadow:inset 0 0 3px rgba(51,51,51,.45);-webkit-transition:background 450ms;transition:background 450ms}.noUi-target{border-radius:4px;border:1px solid #D3D3D3;box-shadow:inset 0 1px 1px #F0F0F0,0 3px 6px -5px #BBB}.noUi-target.noUi-connect{box-shadow:inset 0 0 3px rgba(51,51,51,.45),0 3px 6px -5px #BBB}.noUi-dragable{cursor:w-resize}.noUi-vertical .noUi-dragable{cursor:n-resize}.noUi-handle{border:1px solid #D9D9D9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #EBEBEB,0 3px 6px -3px #BBB}.noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#E8E7E6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect,[disabled].noUi-connect{background:#B8B8B8}[disabled] .noUi-handle{cursor:not-allowed}.noUi-state-blocked .noUi-connect,.noUi-state-blocked.noUi-connect{background:#4FDACF}.redux-container-slides .redux-slides-list .select2-container{margin-bottom:10px;width:100%}.redux-container-slides .ui-accordion-header{margin-bottom:0}.redux-container-slides .full-text,.redux-container-slides .large-text{width:100%}.redux-container-slides .redux-slides-accordion-group{border:1px solid #dfdfdf!important;border-radius:3px!important;margin-top:0!important;margin-bottom:10px;background:#f9f9f9;padding:5px}.redux-container-slides .redux-slides-accordion-group h3{border:1px solid #dfdfdf;cursor:move!important;font-weight:700;padding:0 10px!important;height:40px;line-height:40px!important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-slides #redux-slides-accordion .redux-slides-image{height:250px;padding:5px;margin-top:10px;margin-bottom:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slides .redux-slides-add{float:right;margin-right:10%;display:block;margin-bottom:10px}.redux-container-slides .redux-slides-remove{color:#ef521d!important;float:right;margin-top:5px}.redux-container-slides .redux-slides-header{font-weight:700}.redux-container-slides .redux_slides_add_remove{margin-bottom:10px}.redux-container-slides input{width:100%!important}.wp-customizer .redux-container-slides .ui-accordion .ui-accordion-content{padding:10px}.redux-container-sortable i.el{cursor:move}.redux-container-sortable label{margin-right:10px;width:300px}.redux-container-sortable label.bugger{margin-bottom:0!important;font-size:12px!important;color:#999}.redux-container-sortable input{margin-right:10px}.redux-container-sortable .checkbox-container{width:364px}.redux-container-sortable .checkbox-container .drag{float:right;margin-left:10px}.redux-container-sortable ul.labeled li{line-height:1.4em!important}.redux-container-sortable li{line-height:30px!important}.redux-container-sortable li.ui-state-highlight{height:30px;width:364px;margin-bottom:13px}.redux-container-sortable li.placeholder{height:30px;margin:10px 0}.wp-customizer .redux-sortable input[type=text]{width:92%}.wp-customizer .redux-sortable i.el{margin-left:5px}.wp-customizer .redux-container-sortable .checkbox-container{width:inherit}.wp-customizer .redux-container-sortable .ui-draggable-handle{margin-left:3%}.redux-container-sorter{margin-right:-20px}.redux-container-sorter ul{background:#F9F9F9;border:1px solid #E3E3E3;min-height:40px;padding:10px 10px 0;width:145px;float:left;margin:0 15px 0 0}.redux-container-sorter ul.filled{opacity:.7;filter:alpha(opacity=70);background:#efecec}.redux-container-sorter ul li{border:1px solid #DFDFDF;cursor:move;font-weight:700;margin-bottom:10px!important;padding:0 10px;height:40px;line-height:40px!important;background-color:#F1F1F1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-sorter ul li h3{margin:0 0 10px;text-align:center;color:#777;text-transform:capitalize;word-wrap:break-word}.redux-container-sorter ul li.placeholder{height:40px}.wp-customizer .redux-container-sorter ul{width:85%;margin:0 0 5px}.redux-container-spacing .select_wrapper,.redux-container-spacing select{width:80px!important;float:left}.redux-container-spacing .field-spacing-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-container-spacing .field-spacing-input input{display:inline-block!important;width:70px!important}.redux-container-spacing .field-spacing-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-spacing .select_wrapper{margin-top:6px}}.redux-container-spinner .spinner-wrpr{position:relative;display:block;height:30px;overflow:hidden}.redux-container-spinner .spinner-wrpr .spinner-input{position:relative!important;z-index:1;width:45px!important;height:30px!important;background:#e7e7e7!important;border:1px solid #bfbfbf!important;border-right:0!important;border-left:0!important;-webkit-border-radius:0!important;-moz-border-radius:0!important;border-radius:0!important}.redux-container-spinner .ui-spinner{position:static;display:inline}.redux-container-spinner .ui-spinner-buttons{position:absolute;padding:0}.redux-container-spinner .ui-widget .ui-spinner-button{position:absolute;top:0;padding:0 0 30px;overflow:hidden;cursor:pointer;background:-moz-linear-gradient(#fff,#f3f3f3);background:-o-linear-gradient(#fff,#f3f3f3);background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f3f3f3));background:linear-gradient(#fff,#f3f3f3);background-color:#fff;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.redux-container-spinner .ui-spinner-button:hover,.redux-container-spinner .ui-state-hover{background:-moz-linear-gradient(#f3f3f3,#fff);background:-o-linear-gradient(#f3f3f3,#fff);background:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff));background:linear-gradient(#f3f3f3,#fff);background-color:#f3f3f3}.redux-container-spinner .ui-corner-tr,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{-webkit-border-radius:0 5px 5px 0;-moz-border-radius:0 5px 5px 0;border-radius:0 5px 5px 0}.redux-container-spinner .ui-corner-br,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{-webkit-border-radius:5px 0 0 5px;-moz-border-radius:5px 0 0 5px;border-radius:5px 0 0 5px}.redux-container-spinner .ui-spinner-button .ui-icon{top:0;display:block;width:28px;height:28px;margin:0;border:1px solid #b7b7b7}.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpsjwsKADAIQu3u3tsRY6M5gz7w0AqSQFLdZ3ZRgmf44JQ/EOZ9oYOsiDviVemP2oYoWCwBBgDpO6VXVo3RyQAAAABJRU5ErkJggg==) 10px 10px no-repeat}.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNpi+P//PwM6bmlpwS4IorEKokggC8Il0AVhEv9x6sAmiaz9P05XIUsygmVRAUiAESDAAFHcpVdWtdj/AAAAAElFTkSuQmCC) 10px 10px no-repeat}.redux-container-switch .cb-disable.selected,.redux-container-switch .cb-enable.selected{color:#fff}.redux-container-switch .switch-options{min-height:30px;margin-right:10px}.redux-container-switch .switch-options label{cursor:pointer}.redux-container-switch .switch-options input{display:none}.redux-container-switch .cb-disable,.redux-container-switch .cb-enable{padding:0 10px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.redux-container-switch .cb-disable span,.redux-container-switch .cb-enable span{line-height:30px;font-weight:700;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}.redux-container-switch .cb-disable,.redux-container-switch .cb-disable span,.redux-container-switch .cb-enable,.redux-container-switch .cb-enable span{display:block;float:left}.redux-container-switch .cb-enable{border-right:0;border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px}.redux-container-switch .cb-disable{border-left:0;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0}.redux-container-text label{display:block;position:relative;font-size:12px!important;text-align:left;color:#999;margin:4px 0 2px!important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.wp-customizer .redux-container-text .input_wrapper{width:100%;max-width:100%;height:auto}.redux-main .redux-typography-container{display:block;position:relative;margin:0;padding:0;width:100%;max-width:660px}.redux-main .redux-typography-container .clearfix{clear:both}.redux-main .redux-typography-container .clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.redux-main .redux-typography-container .redux-typography-color,.redux-main .redux-typography-container input.wp-picker-default{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;height:24px;padding:0 14px!important;margin-top:0;margin-bottom:0;margin-left:4px!important;font-size:12px!important}.redux-main .redux-typography-container .select_wrapper{display:block;position:relative;float:left;clear:none;margin:0 10px 0 0;width:48%!important;min-width:210px!important;max-width:324px!important;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .select_wrapper:nth-child(even),.redux-main .redux-typography-container .select_wrapper:nth-child(odd){margin-right:10px!important}.redux-main .redux-typography-container .select_wrapper.typography-family .select2-container{width:100%}.redux-main .redux-typography-container .select_wrapper .redux-typography{font-size:14px!important;display:block;float:left;height:28px!important;line-height:50px!important;padding:0!important;width:100%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .wp-picker-container{float:left;clear:left;margin-bottom:12px;padding:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-main .redux-typography-container .input_wrapper{display:block;position:relative;margin:0 4px 0 5px;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container .input_wrapper.font-size{margin-left:0}.redux-main .redux-typography-container .input_wrapper input.mini{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;width:78%;text-align:center;margin:0;height:28px;top:3px;padding:0 2px 0 5px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .redux-typography-container .picker-wrapper{display:block;position:relative;margin:0;padding:0;width:23%;width:100%;max-width:23%;min-width:70px;min-width:100%;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container label{display:block;position:relative;font-size:12px!important;text-align:left;color:#999;margin:4px 0 2px!important;cursor:default}.redux-main .redux-typography-container .typography-preview{display:none;width:100%;border:1px dotted #d3d3d3;max-width:850px;padding:10px;font-size:10pt;height:auto;margin:5px 0 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.redux-main .redux-typography-container .typography-color{border:0;margin:0}.redux-main .redux-typography-container ::-webkit-input-placeholder{line-height:19px}@media screen and (max-width:540px){.redux-main .redux-main .redux-typography-container{max-width:230px;margin:0 auto}.redux-main .redux-main .redux-typography-container .select_wrapper{max-width:210px;min-width:210px;width:210px;margin-left:0!important;margin-right:0!important}.redux-main .redux-main .redux-typography-container .input_wrapper{max-width:101px;min-width:101px;width:101px;margin-left:0!important;margin-right:5px!important}.redux-main .redux-main .redux-typography-container .input_wrapper input.mini{width:73%}.redux-main .redux-main .redux-typography-container .input-append .add-on{width:30%;padding:5px!important}.redux-main .redux-main .redux-main .wp-picker-container .wp-picker-input-wrap{margin-top:7px}}@media screen and (max-width:360px){.redux-main .redux-typography-container .iris-picker .iris-square{margin-right:3%}}.wp-customizer .redux-typography-container .input_wrapper{width:40%;max-width:40%;min-width:20%}.wp-customizer .redux-typography-container .input_wrapper input.mini{width:70%}.wp-customizer .redux-typography-container .select_wrapper{width:100%!important}.redux-main input.redux-color{float:left;width:70px;margin-left:5px}.redux-main input.color-transparency{margin-left:10px;margin-right:3px}.redux-main input.wp-color-picker{width:80px!important}.redux-main .section-color .controls{width:345px}.redux-main .section-color .explain{width:225px}.redux-main .iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0 0!important;right:-3px;left:-3px;border:4px solid #aaa!important;border-width:4px 3px;width:auto;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.redux-main .iris-picker .iris-slider-offset{position:absolute;top:2px;left:0;right:0;bottom:4px;width:28px;background:0 0!important;border:0!important;height:auto}.redux-main .wp-picker-container input{margin-bottom:inherit;margin-top:inherit;padding:3px 5px}.redux-main .wp-picker-container .wp-color-result{outline:0;margin:0}.redux-main .wp-picker-container .wp-picker-default{padding:0 10px 1px}.redux-main .redux-color-gradient{line-height:24px}.redux-main .color-transparency-check{line-height:1;margin-top:0!important}.redux-main .wp-picker-clear{margin-top:0!important}.wp-customizer .redux-main .redux-typography-container .redux-typography-color,.wp-customizer .redux-main .redux-typography-container input.wp-picker-default,.wp-customizer .redux-main input.wp-picker-default{padding:0 4px!important}.wp-customizer .redux-main input.wp-color-picker{width:65px!important;margin-left:5px!important}.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:700;text-decoration:none;text-shadow:1px 1px 0 #FFF;margin:0 10px 0 0;padding:3px 10px;background:#FFDFEC;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80%!important}.redux-main .button{margin-top:2px}
|
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css
CHANGED
@@ -6,4 +6,4 @@
|
|
6 |
* Dual licensed under the MIT or GPL Version 2 licenses.
|
7 |
*
|
8 |
* Portions copyright jQuery UI & Twitter Bootstrap
|
9 |
-
*/.redux-container .ui-state-disabled{cursor:default !important}.redux-container .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.redux-container .ui-widget-content{border:1px solid #aaaaaa;background:#fff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x;color:#404040}.redux-container .ui-widget-header{font-weight:bold;border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border:1px solid #666}.redux-container .ui-widget-header a{color:#222222}.redux-container .ui-state-default,.redux-container .ui-widget-content .ui-state-default,.redux-container .ui-widget-header .ui-state-default{background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e6e6e6));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e6e6e6);background-image:-ms-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-o-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:linear-gradient(#fff, #fff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear background-image;-moz-transition:0.1s linear background-image;-ms-transition:0.1s linear background-image;-o-transition:0.1s linear background-image;transition:0.1s linear background-image;overflow:visible}.redux-container .ui-state-default a,.redux-container .ui-state-default a:link,.redux-container .ui-state-default a:visited{color:#555555;text-decoration:none}.redux-container .ui-state-hover,.redux-container .ui-widget-content .ui-state-hover,.redux-container .ui-widget-header .ui-state-hover,.redux-container .ui-state-focus,.redux-container .ui-widget-content .ui-state-focus,.redux-container .ui-widget-header .ui-state-focus{background-position:0 -15px;color:#333;text-decoration:none}.redux-container .ui-state-hover a,.redux-container .ui-state-hover a:hover,.redux-container .ui-state-hover a:link,.redux-container .ui-state-hover a:visited{color:#212121;text-decoration:none}.redux-container .ui-state-active,.redux-container .ui-widget-content .ui-state-active,.redux-container .ui-widget-header .ui-state-active{border:1px solid #aaaaaa;font-weight:normal;color:#212121}.redux-container .ui-state-active a,.redux-container .ui-state-active a:link,.redux-container .ui-state-active a:visited{color:#212121;text-decoration:none}.redux-container .ui-widget :active{outline:none}.redux-container .ui-state-highlight p,.redux-container .ui-state-error p,.redux-container .ui-state-default p{font-size:13px;font-weight:normal;line-height:18px;margin:7px 15px}.redux-container .ui-state-highlight,.redux-container .ui-widget-content .ui-state-highlight,.redux-container .ui-widget-header .ui-state-highlight{position:relative;margin-bottom:18px;color:#404040;background-color:#eedc94;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));background-image:-moz-linear-gradient(top, #fceec1, #eedc94);background-image:-ms-linear-gradient(top, #fceec1, #eedc94);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));background-image:-webkit-linear-gradient(top, #fceec1, #eedc94);background-image:-o-linear-gradient(top, #fceec1, #eedc94);background-image:linear-gradient(top, #fceec1, #eedc94);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#eedc94 #eedc94 #e4c652;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);text-shadow:0 1px 0 rgba(255,255,255,0.5);border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25)}.redux-container .ui-state-highlight a,.redux-container .ui-widget-content .ui-state-highlight a,.redux-container .ui-widget-header .ui-state-highlight a{color:#363636}.redux-container .ui-state-error,.redux-container .ui-widget-content .ui-state-error,.redux-container .ui-widget-header .ui-state-error{position:relative;margin-bottom:18px;color:#ffffff;border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-state-error a,.redux-container .ui-widget-content .ui-state-error a,.redux-container .ui-widget-header .ui-state-error a{color:#cd0a0a}.redux-container .ui-state-error-text,.redux-container .ui-widget-content .ui-state-error-text,.redux-container .ui-widget-header .ui-state-error-text{color:#cd0a0a}.redux-container .ui-priority-primary,.redux-container .ui-widget-content .ui-priority-primary,.redux-container .ui-widget-header .ui-priority-primary{font-weight:bold}.redux-container .ui-priority-secondary,.redux-container .ui-widget-content .ui-priority-secondary,.redux-container .ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.redux-container .ui-state-disabled,.redux-container .ui-widget-content .ui-state-disabled,.redux-container .ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.redux-container .ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.redux-container .ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.redux-container .ui-state-hover .ui-icon,.redux-container .ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.redux-container .ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.redux-container .ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.redux-container .ui-state-error .ui-icon,.redux-container .ui-state-error-text .ui-icon{background-image:url(images/ui-icons_f6cf3b_256x240.png)}.redux-container .ui-icon-carat-1-n{background-position:0 0}.redux-container .ui-icon-carat-1-ne{background-position:-16px 0}.redux-container .ui-icon-carat-1-e{background-position:-32px 0}.redux-container .ui-icon-carat-1-se{background-position:-48px 0}.redux-container .ui-icon-carat-1-s{background-position:-64px 0}.redux-container .ui-icon-carat-1-sw{background-position:-80px 0}.redux-container .ui-icon-carat-1-w{background-position:-96px 0}.redux-container .ui-icon-carat-1-nw{background-position:-112px 0}.redux-container .ui-icon-carat-2-n-s{background-position:-128px 0}.redux-container .ui-icon-carat-2-e-w{background-position:-144px 0}.redux-container .ui-icon-triangle-1-n{background-position:0 -16px}.redux-container .ui-icon-triangle-1-ne{background-position:-16px -16px}.redux-container .ui-icon-triangle-1-e{background-position:-32px -16px}.redux-container .ui-icon-triangle-1-se{background-position:-48px -16px}.redux-container .ui-icon-triangle-1-s{background-position:-64px -16px}.redux-container .ui-icon-triangle-1-sw{background-position:-80px -16px}.redux-container .ui-icon-triangle-1-w{background-position:-96px -16px}.redux-container .ui-icon-triangle-1-nw{background-position:-112px -16px}.redux-container .ui-icon-triangle-2-n-s{background-position:-128px -16px}.redux-container .ui-icon-triangle-2-e-w{background-position:-144px -16px}.redux-container .ui-icon-arrow-1-n{background-position:0 -32px}.redux-container .ui-icon-arrow-1-ne{background-position:-16px -32px}.redux-container .ui-icon-arrow-1-e{background-position:-32px -32px}.redux-container .ui-icon-arrow-1-se{background-position:-48px -32px}.redux-container .ui-icon-arrow-1-s{background-position:-64px -32px}.redux-container .ui-icon-arrow-1-sw{background-position:-80px -32px}.redux-container .ui-icon-arrow-1-w{background-position:-96px -32px}.redux-container .ui-icon-arrow-1-nw{background-position:-112px -32px}.redux-container .ui-icon-arrow-2-n-s{background-position:-128px -32px}.redux-container .ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.redux-container .ui-icon-arrow-2-e-w{background-position:-160px -32px}.redux-container .ui-icon-arrow-2-se-nw{background-position:-176px -32px}.redux-container .ui-icon-arrowstop-1-n{background-position:-192px -32px}.redux-container .ui-icon-arrowstop-1-e{background-position:-208px -32px}.redux-container .ui-icon-arrowstop-1-s{background-position:-224px -32px}.redux-container .ui-icon-arrowstop-1-w{background-position:-240px -32px}.redux-container .ui-icon-arrowthick-1-n{background-position:0 -48px}.redux-container .ui-icon-arrowthick-1-ne{background-position:-16px -48px}.redux-container .ui-icon-arrowthick-1-e{background-position:-32px -48px}.redux-container .ui-icon-arrowthick-1-se{background-position:-48px -48px}.redux-container .ui-icon-arrowthick-1-s{background-position:-64px -48px}.redux-container .ui-icon-arrowthick-1-sw{background-position:-80px -48px}.redux-container .ui-icon-arrowthick-1-w{background-position:-96px -48px}.redux-container .ui-icon-arrowthick-1-nw{background-position:-112px -48px}.redux-container .ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.redux-container .ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.redux-container .ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.redux-container .ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.redux-container .ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.redux-container .ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.redux-container .ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.redux-container .ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.redux-container .ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.redux-container .ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.redux-container .ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.redux-container .ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.redux-container .ui-icon-arrowreturn-1-w{background-position:-64px -64px}.redux-container .ui-icon-arrowreturn-1-n{background-position:-80px -64px}.redux-container .ui-icon-arrowreturn-1-e{background-position:-96px -64px}.redux-container .ui-icon-arrowreturn-1-s{background-position:-112px -64px}.redux-container .ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.redux-container .ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.redux-container .ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.redux-container .ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.redux-container .ui-icon-arrow-4{background-position:0 -80px}.redux-container .ui-icon-arrow-4-diag{background-position:-16px -80px}.redux-container .ui-icon-extlink{background-position:-32px -80px}.redux-container .ui-icon-newwin{background-position:-48px -80px}.redux-container .ui-icon-refresh{background-position:-64px -80px}.redux-container .ui-icon-shuffle{background-position:-80px -80px}.redux-container .ui-icon-transfer-e-w{background-position:-96px -80px}.redux-container .ui-icon-transferthick-e-w{background-position:-112px -80px}.redux-container .ui-icon-folder-collapsed{background-position:0 -96px}.redux-container .ui-icon-folder-open{background-position:-16px -96px}.redux-container .ui-icon-document{background-position:-32px -96px}.redux-container .ui-icon-document-b{background-position:-48px -96px}.redux-container .ui-icon-note{background-position:-64px -96px}.redux-container .ui-icon-mail-closed{background-position:-80px -96px}.redux-container .ui-icon-mail-open{background-position:-96px -96px}.redux-container .ui-icon-suitcase{background-position:-112px -96px}.redux-container .ui-icon-comment{background-position:-128px -96px}.redux-container .ui-icon-person{background-position:-144px -96px}.redux-container .ui-icon-print{background-position:-160px -96px}.redux-container .ui-icon-trash{background-position:-176px -96px}.redux-container .ui-icon-locked{background-position:-192px -96px}.redux-container .ui-icon-unlocked{background-position:-208px -96px}.redux-container .ui-icon-bookmark{background-position:-224px -96px}.redux-container .ui-icon-tag{background-position:-240px -96px}.redux-container .ui-icon-home{background-position:0 -112px}.redux-container .ui-icon-flag{background-position:-16px -112px}.redux-container .ui-icon-calendar{background-position:-32px -112px}.redux-container .ui-icon-cart{background-position:-48px -112px}.redux-container .ui-icon-pencil{background-position:-64px -112px}.redux-container .ui-icon-clock{background-position:-80px -112px}.redux-container .ui-icon-disk{background-position:-96px -112px}.redux-container .ui-icon-calculator{background-position:-112px -112px}.redux-container .ui-icon-zoomin{background-position:-128px -112px}.redux-container .ui-icon-zoomout{background-position:-144px -112px}.redux-container .ui-icon-search{background-position:-160px -112px}.redux-container .ui-icon-wrench{background-position:-176px -112px}.redux-container .ui-icon-gear{background-position:-192px -112px}.redux-container .ui-icon-heart{background-position:-208px -112px}.redux-container .ui-icon-star{background-position:-224px -112px}.redux-container .ui-icon-link{background-position:-240px -112px}.redux-container .ui-icon-cancel{background-position:0 -128px}.redux-container .ui-icon-plus{background-position:-16px -128px}.redux-container .ui-icon-plusthick{background-position:-32px -128px}.redux-container .ui-icon-minus{background-position:-48px -128px}.redux-container .ui-icon-minusthick{background-position:-64px -128px}.redux-container .ui-icon-close{background-position:-80px -128px}.redux-container .ui-icon-closethick{background-position:-96px -128px}.redux-container .ui-icon-key{background-position:-112px -128px}.redux-container .ui-icon-lightbulb{background-position:-128px -128px}.redux-container .ui-icon-scissors{background-position:-144px -128px}.redux-container .ui-icon-clipboard{background-position:-160px -128px}.redux-container .ui-icon-copy{background-position:-176px -128px}.redux-container .ui-icon-contact{background-position:-192px -128px}.redux-container .ui-icon-image{background-position:-208px -128px}.redux-container .ui-icon-video{background-position:-224px -128px}.redux-container .ui-icon-script{background-position:-240px -128px}.redux-container .ui-icon-alert{background-position:0 -144px}.redux-container .ui-icon-info{background-position:-16px -144px}.redux-container .ui-icon-notice{background-position:-32px -144px}.redux-container .ui-icon-help{background-position:-48px -144px}.redux-container .ui-icon-check{background-position:-64px -144px}.redux-container .ui-icon-bullet{background-position:-80px -144px}.redux-container .ui-icon-radio-off{background-position:-96px -144px}.redux-container .ui-icon-radio-on{background-position:-112px -144px}.redux-container .ui-icon-pin-w{background-position:-128px -144px}.redux-container .ui-icon-pin-s{background-position:-144px -144px}.redux-container .ui-icon-play{background-position:0 -160px}.redux-container .ui-icon-pause{background-position:-16px -160px}.redux-container .ui-icon-seek-next{background-position:-32px -160px}.redux-container .ui-icon-seek-prev{background-position:-48px -160px}.redux-container .ui-icon-seek-end{background-position:-64px -160px}.redux-container .ui-icon-seek-start{background-position:-80px -160px}.redux-container .ui-icon-seek-first{background-position:-80px -160px}.redux-container .ui-icon-stop{background-position:-96px -160px}.redux-container .ui-icon-eject{background-position:-112px -160px}.redux-container .ui-icon-volume-off{background-position:-128px -160px}.redux-container .ui-icon-volume-on{background-position:-144px -160px}.redux-container .ui-icon-power{background-position:0 -176px}.redux-container .ui-icon-signal-diag{background-position:-16px -176px}.redux-container .ui-icon-signal{background-position:-32px -176px}.redux-container .ui-icon-battery-0{background-position:-48px -176px}.redux-container .ui-icon-battery-1{background-position:-64px -176px}.redux-container .ui-icon-battery-2{background-position:-80px -176px}.redux-container .ui-icon-battery-3{background-position:-96px -176px}.redux-container .ui-icon-circle-plus{background-position:0 -192px}.redux-container .ui-icon-circle-minus{background-position:-16px -192px}.redux-container .ui-icon-circle-close{background-position:-32px -192px}.redux-container .ui-icon-circle-triangle-e{background-position:-48px -192px}.redux-container .ui-icon-circle-triangle-s{background-position:-64px -192px}.redux-container .ui-icon-circle-triangle-w{background-position:-80px -192px}.redux-container .ui-icon-circle-triangle-n{background-position:-96px -192px}.redux-container .ui-icon-circle-arrow-e{background-position:-112px -192px}.redux-container .ui-icon-circle-arrow-s{background-position:-128px -192px}.redux-container .ui-icon-circle-arrow-w{background-position:-144px -192px}.redux-container .ui-icon-circle-arrow-n{background-position:-160px -192px}.redux-container .ui-icon-circle-zoomin{background-position:-176px -192px}.redux-container .ui-icon-circle-zoomout{background-position:-192px -192px}.redux-container .ui-icon-circle-check{background-position:-208px -192px}.redux-container .ui-icon-circlesmall-plus{background-position:0 -208px}.redux-container .ui-icon-circlesmall-minus{background-position:-16px -208px}.redux-container .ui-icon-circlesmall-close{background-position:-32px -208px}.redux-container .ui-icon-squaresmall-plus{background-position:-48px -208px}.redux-container .ui-icon-squaresmall-minus{background-position:-64px -208px}.redux-container .ui-icon-squaresmall-close{background-position:-80px -208px}.redux-container .ui-icon-grip-dotted-vertical{background-position:0 -224px}.redux-container .ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.redux-container .ui-icon-grip-solid-vertical{background-position:-32px -224px}.redux-container .ui-icon-grip-solid-horizontal{background-position:-48px -224px}.redux-container .ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.redux-container .ui-icon-grip-diagonal-se{background-position:-80px -224px}.redux-container .ui-corner-all,.redux-container .ui-corner-top,.redux-container .ui-corner-left,.redux-container .ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-top,.redux-container .ui-corner-right,.redux-container .ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-bottom,.redux-container .ui-corner-left,.redux-container .ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-bottom,.redux-container .ui-corner-right,.redux-container .ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.redux-container .ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30)}.redux-container .ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.redux-container .ui-accordion{width:100%}.redux-container .ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;font-weight:bold}.redux-container .ui-accordion .ui-accordion-li-fix{display:inline}.redux-container .ui-accordion .ui-accordion-header-active{border-bottom:0 !important}.redux-container .ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em 1.7em}.redux-container .ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.redux-container .ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.redux-container .ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.redux-container .ui-accordion .ui-accordion-content-active{display:block}.redux-container .ui-button{cursor:pointer;display:inline-block;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e6e6e6));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e6e6e6);background-image:-ms-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-o-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:linear-gradient(#fff, #fff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);padding:5px 14px 6px;margin:0;text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear background-image;-moz-transition:0.1s linear background-image;-ms-transition:0.1s linear background-image;-o-transition:0.1s linear background-image;transition:0.1s linear background-image;overflow:visible}.redux-container .ui-button-primary{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-success{color:#ffffff;background-color:#57a957;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#57a957 #57a957 #3d773d;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-error{color:#ffffff;background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-icon-only{width:2.2em}.redux-container .ui-button-icons-only{width:3.4em}.redux-container button.ui-button-icons-only{width:3.7em}.redux-container .ui-button .ui-button-text{display:block}.redux-container .ui-button-icon-only .ui-button-text,.redux-container .ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;display:none}.redux-container .ui-button-text-icon-primary .ui-button-text,.redux-container .ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.redux-container .ui-button-text-icon-secondary .ui-button-text,.redux-container .ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.redux-container .ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}.redux-container .ui-button-icon-only .ui-icon,.redux-container .ui-button-text-icon-primary .ui-icon,.redux-container .ui-button-text-icon-secondary .ui-icon,.redux-container .ui-button-text-icons .ui-icon,.redux-container .ui-button-icons-only .ui-icon{top:50%;margin-top:-3px;margin-bottom:3px}.redux-container .ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.redux-container .ui-button-text-icon-primary .ui-button-icon-primary,.redux-container .ui-button-text-icons .ui-button-icon-primary,.redux-container .ui-button-icons-only .ui-button-icon-primary{left:.5em}.redux-container .ui-button-text-icon-secondary .ui-button-icon-secondary,.redux-container .ui-button-text-icons .ui-button-icon-secondary,.redux-container .ui-button-icons-only .ui-button-icon-secondary{right:.5em}.redux-container .ui-button-text-icons .ui-button-icon-secondary,.redux-container .ui-button-icons-only .ui-button-icon-secondary{right:.5em}.redux-container .ui-buttonset{margin-right:7px}.redux-container .ui-buttonset .ui-state-active{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-buttonset .ui-button{margin-left:0;margin-right:0}.redux-container button.ui-button::-moz-focus-inner{border:0;padding:0}.redux-container .ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.redux-container .ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;border:0px;font-weight:bold;width:100%;padding:4px 0;background-color:#f5f5f5;color:#808080}.redux-container .ui-datepicker .ui-datepicker-prev,.redux-container .ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.redux-container .ui-datepicker .ui-datepicker-prev{left:2px}.redux-container .ui-datepicker .ui-datepicker-next{right:2px}.redux-container .ui-datepicker .ui-datepicker-prev span,.redux-container .ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.redux-container .ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.redux-container .ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.redux-container .ui-datepicker select.ui-datepicker-month-year{width:100%}.redux-container .ui-datepicker select.ui-datepicker-month,.redux-container .ui-datepicker select.ui-datepicker-year{width:49%}.redux-container .ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.redux-container .ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.redux-container .ui-datepicker td{border:0;padding:1px}.redux-container .ui-datepicker td span,.redux-container .ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.redux-container .ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.redux-container .ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.redux-container .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.redux-container .ui-datepicker.ui-datepicker-multi{width:auto}.redux-container .ui-datepicker-multi .ui-datepicker-group{float:left}.redux-container .ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.redux-container .ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.redux-container .ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.redux-container .ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.redux-container .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.redux-container .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.redux-container .ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.redux-container .ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.redux-container .ui-datepicker-rtl{direction:rtl}.redux-container .ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.redux-container .ui-datepicker-rtl .ui-datepicker-group{float:right}.redux-container .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.redux-container .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.redux-container .ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.redux-container .ui-datepicker th{font-weight:bold;color:gray}.redux-container .ui-datepicker-today a:hover{background-color:#808080;color:#ffffff}.redux-container .ui-datepicker-today a{background-color:#BFBFBF;cursor:pointer;padding:0 4px;margin-bottom:0px}.redux-container .ui-datepicker td a{margin-bottom:0px;border:0px}.redux-container .ui-datepicker td:hover{color:#ffffff}.redux-container .ui-datepicker td .ui-state-default{border:0px;background:none;margin-bottom:0px;padding:5px;color:gray;text-align:center;filter:none}.redux-container .ui-datepicker td .ui-state-active{background:#BFBFBF;margin-bottom:0px;font-size:normal;text-shadow:0px;color:#ffffff;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-container .ui-datepicker td .ui-state-hover{color:#ffffff;background:#0064cd;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-border-radius:4px;-moz-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.redux-container .ui-widget-content{border:1px solid #dfdfdf}.redux-container .ui-datepicker table{background:#fff}.redux-container .placeholder{background:#f9f9f9 !important;border:1px dashed #bbb !important}.wp-customizer #ui-datepicker-div{z-index:999999 !important}
|
6 |
* Dual licensed under the MIT or GPL Version 2 licenses.
|
7 |
*
|
8 |
* Portions copyright jQuery UI & Twitter Bootstrap
|
9 |
+
*/.redux-container .ui-state-disabled,.control-section-redux .ui-state-disabled,.control-panel-redux .ui-state-disabled,.redux-metabox .ui-state-disabled{cursor:default !important}.redux-container .ui-icon,.control-section-redux .ui-icon,.control-panel-redux .ui-icon,.redux-metabox .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.redux-container .ui-widget-content,.control-section-redux .ui-widget-content,.control-panel-redux .ui-widget-content,.redux-metabox .ui-widget-content{border:1px solid #aaaaaa;background:#fff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x;color:#404040}.redux-container .ui-widget-header,.control-section-redux .ui-widget-header,.control-panel-redux .ui-widget-header,.redux-metabox .ui-widget-header{font-weight:bold;border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border:1px solid #666}.redux-container .ui-widget-header a,.control-section-redux .ui-widget-header a,.control-panel-redux .ui-widget-header a,.redux-metabox .ui-widget-header a{color:#222222}.redux-container .ui-state-default,.redux-container .ui-widget-content .ui-state-default,.redux-container .ui-widget-header .ui-state-default,.control-section-redux .ui-state-default,.control-section-redux .ui-widget-content .ui-state-default,.control-section-redux .ui-widget-header .ui-state-default,.control-panel-redux .ui-state-default,.control-panel-redux .ui-widget-content .ui-state-default,.control-panel-redux .ui-widget-header .ui-state-default,.redux-metabox .ui-state-default,.redux-metabox .ui-widget-content .ui-state-default,.redux-metabox .ui-widget-header .ui-state-default{background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e6e6e6));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e6e6e6);background-image:-ms-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-o-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:linear-gradient(#fff, #fff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear background-image;-moz-transition:0.1s linear background-image;-ms-transition:0.1s linear background-image;-o-transition:0.1s linear background-image;transition:0.1s linear background-image;overflow:visible}.redux-container .ui-state-default a,.redux-container .ui-state-default a:link,.redux-container .ui-state-default a:visited,.control-section-redux .ui-state-default a,.control-section-redux .ui-state-default a:link,.control-section-redux .ui-state-default a:visited,.control-panel-redux .ui-state-default a,.control-panel-redux .ui-state-default a:link,.control-panel-redux .ui-state-default a:visited,.redux-metabox .ui-state-default a,.redux-metabox .ui-state-default a:link,.redux-metabox .ui-state-default a:visited{color:#555555;text-decoration:none}.redux-container .ui-state-hover,.redux-container .ui-widget-content .ui-state-hover,.redux-container .ui-widget-header .ui-state-hover,.redux-container .ui-state-focus,.redux-container .ui-widget-content .ui-state-focus,.redux-container .ui-widget-header .ui-state-focus,.control-section-redux .ui-state-hover,.control-section-redux .ui-widget-content .ui-state-hover,.control-section-redux .ui-widget-header .ui-state-hover,.control-section-redux .ui-state-focus,.control-section-redux .ui-widget-content .ui-state-focus,.control-section-redux .ui-widget-header .ui-state-focus,.control-panel-redux .ui-state-hover,.control-panel-redux .ui-widget-content .ui-state-hover,.control-panel-redux .ui-widget-header .ui-state-hover,.control-panel-redux .ui-state-focus,.control-panel-redux .ui-widget-content .ui-state-focus,.control-panel-redux .ui-widget-header .ui-state-focus,.redux-metabox .ui-state-hover,.redux-metabox .ui-widget-content .ui-state-hover,.redux-metabox .ui-widget-header .ui-state-hover,.redux-metabox .ui-state-focus,.redux-metabox .ui-widget-content .ui-state-focus,.redux-metabox .ui-widget-header .ui-state-focus{background-position:0 -15px;color:#333;text-decoration:none}.redux-container .ui-state-hover a,.redux-container .ui-state-hover a:hover,.redux-container .ui-state-hover a:link,.redux-container .ui-state-hover a:visited,.control-section-redux .ui-state-hover a,.control-section-redux .ui-state-hover a:hover,.control-section-redux .ui-state-hover a:link,.control-section-redux .ui-state-hover a:visited,.control-panel-redux .ui-state-hover a,.control-panel-redux .ui-state-hover a:hover,.control-panel-redux .ui-state-hover a:link,.control-panel-redux .ui-state-hover a:visited,.redux-metabox .ui-state-hover a,.redux-metabox .ui-state-hover a:hover,.redux-metabox .ui-state-hover a:link,.redux-metabox .ui-state-hover a:visited{color:#212121;text-decoration:none}.redux-container .ui-state-active,.redux-container .ui-widget-content .ui-state-active,.redux-container .ui-widget-header .ui-state-active,.control-section-redux .ui-state-active,.control-section-redux .ui-widget-content .ui-state-active,.control-section-redux .ui-widget-header .ui-state-active,.control-panel-redux .ui-state-active,.control-panel-redux .ui-widget-content .ui-state-active,.control-panel-redux .ui-widget-header .ui-state-active,.redux-metabox .ui-state-active,.redux-metabox .ui-widget-content .ui-state-active,.redux-metabox .ui-widget-header .ui-state-active{border:1px solid #aaaaaa;font-weight:normal;color:#212121}.redux-container .ui-state-active a,.redux-container .ui-state-active a:link,.redux-container .ui-state-active a:visited,.control-section-redux .ui-state-active a,.control-section-redux .ui-state-active a:link,.control-section-redux .ui-state-active a:visited,.control-panel-redux .ui-state-active a,.control-panel-redux .ui-state-active a:link,.control-panel-redux .ui-state-active a:visited,.redux-metabox .ui-state-active a,.redux-metabox .ui-state-active a:link,.redux-metabox .ui-state-active a:visited{color:#212121;text-decoration:none}.redux-container .ui-widget :active,.control-section-redux .ui-widget :active,.control-panel-redux .ui-widget :active,.redux-metabox .ui-widget :active{outline:none}.redux-container .ui-state-highlight p,.redux-container .ui-state-error p,.redux-container .ui-state-default p,.control-section-redux .ui-state-highlight p,.control-section-redux .ui-state-error p,.control-section-redux .ui-state-default p,.control-panel-redux .ui-state-highlight p,.control-panel-redux .ui-state-error p,.control-panel-redux .ui-state-default p,.redux-metabox .ui-state-highlight p,.redux-metabox .ui-state-error p,.redux-metabox .ui-state-default p{font-size:13px;font-weight:normal;line-height:18px;margin:7px 15px}.redux-container .ui-state-highlight,.redux-container .ui-widget-content .ui-state-highlight,.redux-container .ui-widget-header .ui-state-highlight,.control-section-redux .ui-state-highlight,.control-section-redux .ui-widget-content .ui-state-highlight,.control-section-redux .ui-widget-header .ui-state-highlight,.control-panel-redux .ui-state-highlight,.control-panel-redux .ui-widget-content .ui-state-highlight,.control-panel-redux .ui-widget-header .ui-state-highlight,.redux-metabox .ui-state-highlight,.redux-metabox .ui-widget-content .ui-state-highlight,.redux-metabox .ui-widget-header .ui-state-highlight{position:relative;margin-bottom:18px;color:#404040;background-color:#eedc94;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));background-image:-moz-linear-gradient(top, #fceec1, #eedc94);background-image:-ms-linear-gradient(top, #fceec1, #eedc94);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));background-image:-webkit-linear-gradient(top, #fceec1, #eedc94);background-image:-o-linear-gradient(top, #fceec1, #eedc94);background-image:linear-gradient(top, #fceec1, #eedc94);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#eedc94 #eedc94 #e4c652;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);text-shadow:0 1px 0 rgba(255,255,255,0.5);border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25)}.redux-container .ui-state-highlight a,.redux-container .ui-widget-content .ui-state-highlight a,.redux-container .ui-widget-header .ui-state-highlight a,.control-section-redux .ui-state-highlight a,.control-section-redux .ui-widget-content .ui-state-highlight a,.control-section-redux .ui-widget-header .ui-state-highlight a,.control-panel-redux .ui-state-highlight a,.control-panel-redux .ui-widget-content .ui-state-highlight a,.control-panel-redux .ui-widget-header .ui-state-highlight a,.redux-metabox .ui-state-highlight a,.redux-metabox .ui-widget-content .ui-state-highlight a,.redux-metabox .ui-widget-header .ui-state-highlight a{color:#363636}.redux-container .ui-state-error,.redux-container .ui-widget-content .ui-state-error,.redux-container .ui-widget-header .ui-state-error,.control-section-redux .ui-state-error,.control-section-redux .ui-widget-content .ui-state-error,.control-section-redux .ui-widget-header .ui-state-error,.control-panel-redux .ui-state-error,.control-panel-redux .ui-widget-content .ui-state-error,.control-panel-redux .ui-widget-header .ui-state-error,.redux-metabox .ui-state-error,.redux-metabox .ui-widget-content .ui-state-error,.redux-metabox .ui-widget-header .ui-state-error{position:relative;margin-bottom:18px;color:#ffffff;border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25);background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-state-error a,.redux-container .ui-widget-content .ui-state-error a,.redux-container .ui-widget-header .ui-state-error a,.control-section-redux .ui-state-error a,.control-section-redux .ui-widget-content .ui-state-error a,.control-section-redux .ui-widget-header .ui-state-error a,.control-panel-redux .ui-state-error a,.control-panel-redux .ui-widget-content .ui-state-error a,.control-panel-redux .ui-widget-header .ui-state-error a,.redux-metabox .ui-state-error a,.redux-metabox .ui-widget-content .ui-state-error a,.redux-metabox .ui-widget-header .ui-state-error a{color:#cd0a0a}.redux-container .ui-state-error-text,.redux-container .ui-widget-content .ui-state-error-text,.redux-container .ui-widget-header .ui-state-error-text,.control-section-redux .ui-state-error-text,.control-section-redux .ui-widget-content .ui-state-error-text,.control-section-redux .ui-widget-header .ui-state-error-text,.control-panel-redux .ui-state-error-text,.control-panel-redux .ui-widget-content .ui-state-error-text,.control-panel-redux .ui-widget-header .ui-state-error-text,.redux-metabox .ui-state-error-text,.redux-metabox .ui-widget-content .ui-state-error-text,.redux-metabox .ui-widget-header .ui-state-error-text{color:#cd0a0a}.redux-container .ui-priority-primary,.redux-container .ui-widget-content .ui-priority-primary,.redux-container .ui-widget-header .ui-priority-primary,.control-section-redux .ui-priority-primary,.control-section-redux .ui-widget-content .ui-priority-primary,.control-section-redux .ui-widget-header .ui-priority-primary,.control-panel-redux .ui-priority-primary,.control-panel-redux .ui-widget-content .ui-priority-primary,.control-panel-redux .ui-widget-header .ui-priority-primary,.redux-metabox .ui-priority-primary,.redux-metabox .ui-widget-content .ui-priority-primary,.redux-metabox .ui-widget-header .ui-priority-primary{font-weight:bold}.redux-container .ui-priority-secondary,.redux-container .ui-widget-content .ui-priority-secondary,.redux-container .ui-widget-header .ui-priority-secondary,.control-section-redux .ui-priority-secondary,.control-section-redux .ui-widget-content .ui-priority-secondary,.control-section-redux .ui-widget-header .ui-priority-secondary,.control-panel-redux .ui-priority-secondary,.control-panel-redux .ui-widget-content .ui-priority-secondary,.control-panel-redux .ui-widget-header .ui-priority-secondary,.redux-metabox .ui-priority-secondary,.redux-metabox .ui-widget-content .ui-priority-secondary,.redux-metabox .ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.redux-container .ui-state-disabled,.redux-container .ui-widget-content .ui-state-disabled,.redux-container .ui-widget-header .ui-state-disabled,.control-section-redux .ui-state-disabled,.control-section-redux .ui-widget-content .ui-state-disabled,.control-section-redux .ui-widget-header .ui-state-disabled,.control-panel-redux .ui-state-disabled,.control-panel-redux .ui-widget-content .ui-state-disabled,.control-panel-redux .ui-widget-header .ui-state-disabled,.redux-metabox .ui-state-disabled,.redux-metabox .ui-widget-content .ui-state-disabled,.redux-metabox .ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.redux-container .ui-state-disabled .ui-icon,.control-section-redux .ui-state-disabled .ui-icon,.control-panel-redux .ui-state-disabled .ui-icon,.redux-metabox .ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.redux-container .ui-icon,.control-section-redux .ui-icon,.control-panel-redux .ui-icon,.redux-metabox .ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-widget-content .ui-icon,.control-section-redux .ui-widget-content .ui-icon,.control-panel-redux .ui-widget-content .ui-icon,.redux-metabox .ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-widget-header .ui-icon,.control-section-redux .ui-widget-header .ui-icon,.control-panel-redux .ui-widget-header .ui-icon,.redux-metabox .ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.redux-container .ui-state-default .ui-icon,.control-section-redux .ui-state-default .ui-icon,.control-panel-redux .ui-state-default .ui-icon,.redux-metabox .ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.redux-container .ui-state-hover .ui-icon,.redux-container .ui-state-focus .ui-icon,.control-section-redux .ui-state-hover .ui-icon,.control-section-redux .ui-state-focus .ui-icon,.control-panel-redux .ui-state-hover .ui-icon,.control-panel-redux .ui-state-focus .ui-icon,.redux-metabox .ui-state-hover .ui-icon,.redux-metabox .ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.redux-container .ui-state-active .ui-icon,.control-section-redux .ui-state-active .ui-icon,.control-panel-redux .ui-state-active .ui-icon,.redux-metabox .ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.redux-container .ui-state-highlight .ui-icon,.control-section-redux .ui-state-highlight .ui-icon,.control-panel-redux .ui-state-highlight .ui-icon,.redux-metabox .ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.redux-container .ui-state-error .ui-icon,.redux-container .ui-state-error-text .ui-icon,.control-section-redux .ui-state-error .ui-icon,.control-section-redux .ui-state-error-text .ui-icon,.control-panel-redux .ui-state-error .ui-icon,.control-panel-redux .ui-state-error-text .ui-icon,.redux-metabox .ui-state-error .ui-icon,.redux-metabox .ui-state-error-text .ui-icon{background-image:url(images/ui-icons_f6cf3b_256x240.png)}.redux-container .ui-icon-carat-1-n,.control-section-redux .ui-icon-carat-1-n,.control-panel-redux .ui-icon-carat-1-n,.redux-metabox .ui-icon-carat-1-n{background-position:0 0}.redux-container .ui-icon-carat-1-ne,.control-section-redux .ui-icon-carat-1-ne,.control-panel-redux .ui-icon-carat-1-ne,.redux-metabox .ui-icon-carat-1-ne{background-position:-16px 0}.redux-container .ui-icon-carat-1-e,.control-section-redux .ui-icon-carat-1-e,.control-panel-redux .ui-icon-carat-1-e,.redux-metabox .ui-icon-carat-1-e{background-position:-32px 0}.redux-container .ui-icon-carat-1-se,.control-section-redux .ui-icon-carat-1-se,.control-panel-redux .ui-icon-carat-1-se,.redux-metabox .ui-icon-carat-1-se{background-position:-48px 0}.redux-container .ui-icon-carat-1-s,.control-section-redux .ui-icon-carat-1-s,.control-panel-redux .ui-icon-carat-1-s,.redux-metabox .ui-icon-carat-1-s{background-position:-64px 0}.redux-container .ui-icon-carat-1-sw,.control-section-redux .ui-icon-carat-1-sw,.control-panel-redux .ui-icon-carat-1-sw,.redux-metabox .ui-icon-carat-1-sw{background-position:-80px 0}.redux-container .ui-icon-carat-1-w,.control-section-redux .ui-icon-carat-1-w,.control-panel-redux .ui-icon-carat-1-w,.redux-metabox .ui-icon-carat-1-w{background-position:-96px 0}.redux-container .ui-icon-carat-1-nw,.control-section-redux .ui-icon-carat-1-nw,.control-panel-redux .ui-icon-carat-1-nw,.redux-metabox .ui-icon-carat-1-nw{background-position:-112px 0}.redux-container .ui-icon-carat-2-n-s,.control-section-redux .ui-icon-carat-2-n-s,.control-panel-redux .ui-icon-carat-2-n-s,.redux-metabox .ui-icon-carat-2-n-s{background-position:-128px 0}.redux-container .ui-icon-carat-2-e-w,.control-section-redux .ui-icon-carat-2-e-w,.control-panel-redux .ui-icon-carat-2-e-w,.redux-metabox .ui-icon-carat-2-e-w{background-position:-144px 0}.redux-container .ui-icon-triangle-1-n,.control-section-redux .ui-icon-triangle-1-n,.control-panel-redux .ui-icon-triangle-1-n,.redux-metabox .ui-icon-triangle-1-n{background-position:0 -16px}.redux-container .ui-icon-triangle-1-ne,.control-section-redux .ui-icon-triangle-1-ne,.control-panel-redux .ui-icon-triangle-1-ne,.redux-metabox .ui-icon-triangle-1-ne{background-position:-16px -16px}.redux-container .ui-icon-triangle-1-e,.control-section-redux .ui-icon-triangle-1-e,.control-panel-redux .ui-icon-triangle-1-e,.redux-metabox .ui-icon-triangle-1-e{background-position:-32px -16px}.redux-container .ui-icon-triangle-1-se,.control-section-redux .ui-icon-triangle-1-se,.control-panel-redux .ui-icon-triangle-1-se,.redux-metabox .ui-icon-triangle-1-se{background-position:-48px -16px}.redux-container .ui-icon-triangle-1-s,.control-section-redux .ui-icon-triangle-1-s,.control-panel-redux .ui-icon-triangle-1-s,.redux-metabox .ui-icon-triangle-1-s{background-position:-64px -16px}.redux-container .ui-icon-triangle-1-sw,.control-section-redux .ui-icon-triangle-1-sw,.control-panel-redux .ui-icon-triangle-1-sw,.redux-metabox .ui-icon-triangle-1-sw{background-position:-80px -16px}.redux-container .ui-icon-triangle-1-w,.control-section-redux .ui-icon-triangle-1-w,.control-panel-redux .ui-icon-triangle-1-w,.redux-metabox .ui-icon-triangle-1-w{background-position:-96px -16px}.redux-container .ui-icon-triangle-1-nw,.control-section-redux .ui-icon-triangle-1-nw,.control-panel-redux .ui-icon-triangle-1-nw,.redux-metabox .ui-icon-triangle-1-nw{background-position:-112px -16px}.redux-container .ui-icon-triangle-2-n-s,.control-section-redux .ui-icon-triangle-2-n-s,.control-panel-redux .ui-icon-triangle-2-n-s,.redux-metabox .ui-icon-triangle-2-n-s{background-position:-128px -16px}.redux-container .ui-icon-triangle-2-e-w,.control-section-redux .ui-icon-triangle-2-e-w,.control-panel-redux .ui-icon-triangle-2-e-w,.redux-metabox .ui-icon-triangle-2-e-w{background-position:-144px -16px}.redux-container .ui-icon-arrow-1-n,.control-section-redux .ui-icon-arrow-1-n,.control-panel-redux .ui-icon-arrow-1-n,.redux-metabox .ui-icon-arrow-1-n{background-position:0 -32px}.redux-container .ui-icon-arrow-1-ne,.control-section-redux .ui-icon-arrow-1-ne,.control-panel-redux .ui-icon-arrow-1-ne,.redux-metabox .ui-icon-arrow-1-ne{background-position:-16px -32px}.redux-container .ui-icon-arrow-1-e,.control-section-redux .ui-icon-arrow-1-e,.control-panel-redux .ui-icon-arrow-1-e,.redux-metabox .ui-icon-arrow-1-e{background-position:-32px -32px}.redux-container .ui-icon-arrow-1-se,.control-section-redux .ui-icon-arrow-1-se,.control-panel-redux .ui-icon-arrow-1-se,.redux-metabox .ui-icon-arrow-1-se{background-position:-48px -32px}.redux-container .ui-icon-arrow-1-s,.control-section-redux .ui-icon-arrow-1-s,.control-panel-redux .ui-icon-arrow-1-s,.redux-metabox .ui-icon-arrow-1-s{background-position:-64px -32px}.redux-container .ui-icon-arrow-1-sw,.control-section-redux .ui-icon-arrow-1-sw,.control-panel-redux .ui-icon-arrow-1-sw,.redux-metabox .ui-icon-arrow-1-sw{background-position:-80px -32px}.redux-container .ui-icon-arrow-1-w,.control-section-redux .ui-icon-arrow-1-w,.control-panel-redux .ui-icon-arrow-1-w,.redux-metabox .ui-icon-arrow-1-w{background-position:-96px -32px}.redux-container .ui-icon-arrow-1-nw,.control-section-redux .ui-icon-arrow-1-nw,.control-panel-redux .ui-icon-arrow-1-nw,.redux-metabox .ui-icon-arrow-1-nw{background-position:-112px -32px}.redux-container .ui-icon-arrow-2-n-s,.control-section-redux .ui-icon-arrow-2-n-s,.control-panel-redux .ui-icon-arrow-2-n-s,.redux-metabox .ui-icon-arrow-2-n-s{background-position:-128px -32px}.redux-container .ui-icon-arrow-2-ne-sw,.control-section-redux .ui-icon-arrow-2-ne-sw,.control-panel-redux .ui-icon-arrow-2-ne-sw,.redux-metabox .ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.redux-container .ui-icon-arrow-2-e-w,.control-section-redux .ui-icon-arrow-2-e-w,.control-panel-redux .ui-icon-arrow-2-e-w,.redux-metabox .ui-icon-arrow-2-e-w{background-position:-160px -32px}.redux-container .ui-icon-arrow-2-se-nw,.control-section-redux .ui-icon-arrow-2-se-nw,.control-panel-redux .ui-icon-arrow-2-se-nw,.redux-metabox .ui-icon-arrow-2-se-nw{background-position:-176px -32px}.redux-container .ui-icon-arrowstop-1-n,.control-section-redux .ui-icon-arrowstop-1-n,.control-panel-redux .ui-icon-arrowstop-1-n,.redux-metabox .ui-icon-arrowstop-1-n{background-position:-192px -32px}.redux-container .ui-icon-arrowstop-1-e,.control-section-redux .ui-icon-arrowstop-1-e,.control-panel-redux .ui-icon-arrowstop-1-e,.redux-metabox .ui-icon-arrowstop-1-e{background-position:-208px -32px}.redux-container .ui-icon-arrowstop-1-s,.control-section-redux .ui-icon-arrowstop-1-s,.control-panel-redux .ui-icon-arrowstop-1-s,.redux-metabox .ui-icon-arrowstop-1-s{background-position:-224px -32px}.redux-container .ui-icon-arrowstop-1-w,.control-section-redux .ui-icon-arrowstop-1-w,.control-panel-redux .ui-icon-arrowstop-1-w,.redux-metabox .ui-icon-arrowstop-1-w{background-position:-240px -32px}.redux-container .ui-icon-arrowthick-1-n,.control-section-redux .ui-icon-arrowthick-1-n,.control-panel-redux .ui-icon-arrowthick-1-n,.redux-metabox .ui-icon-arrowthick-1-n{background-position:0 -48px}.redux-container .ui-icon-arrowthick-1-ne,.control-section-redux .ui-icon-arrowthick-1-ne,.control-panel-redux .ui-icon-arrowthick-1-ne,.redux-metabox .ui-icon-arrowthick-1-ne{background-position:-16px -48px}.redux-container .ui-icon-arrowthick-1-e,.control-section-redux .ui-icon-arrowthick-1-e,.control-panel-redux .ui-icon-arrowthick-1-e,.redux-metabox .ui-icon-arrowthick-1-e{background-position:-32px -48px}.redux-container .ui-icon-arrowthick-1-se,.control-section-redux .ui-icon-arrowthick-1-se,.control-panel-redux .ui-icon-arrowthick-1-se,.redux-metabox .ui-icon-arrowthick-1-se{background-position:-48px -48px}.redux-container .ui-icon-arrowthick-1-s,.control-section-redux .ui-icon-arrowthick-1-s,.control-panel-redux .ui-icon-arrowthick-1-s,.redux-metabox .ui-icon-arrowthick-1-s{background-position:-64px -48px}.redux-container .ui-icon-arrowthick-1-sw,.control-section-redux .ui-icon-arrowthick-1-sw,.control-panel-redux .ui-icon-arrowthick-1-sw,.redux-metabox .ui-icon-arrowthick-1-sw{background-position:-80px -48px}.redux-container .ui-icon-arrowthick-1-w,.control-section-redux .ui-icon-arrowthick-1-w,.control-panel-redux .ui-icon-arrowthick-1-w,.redux-metabox .ui-icon-arrowthick-1-w{background-position:-96px -48px}.redux-container .ui-icon-arrowthick-1-nw,.control-section-redux .ui-icon-arrowthick-1-nw,.control-panel-redux .ui-icon-arrowthick-1-nw,.redux-metabox .ui-icon-arrowthick-1-nw{background-position:-112px -48px}.redux-container .ui-icon-arrowthick-2-n-s,.control-section-redux .ui-icon-arrowthick-2-n-s,.control-panel-redux .ui-icon-arrowthick-2-n-s,.redux-metabox .ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.redux-container .ui-icon-arrowthick-2-ne-sw,.control-section-redux .ui-icon-arrowthick-2-ne-sw,.control-panel-redux .ui-icon-arrowthick-2-ne-sw,.redux-metabox .ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.redux-container .ui-icon-arrowthick-2-e-w,.control-section-redux .ui-icon-arrowthick-2-e-w,.control-panel-redux .ui-icon-arrowthick-2-e-w,.redux-metabox .ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.redux-container .ui-icon-arrowthick-2-se-nw,.control-section-redux .ui-icon-arrowthick-2-se-nw,.control-panel-redux .ui-icon-arrowthick-2-se-nw,.redux-metabox .ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.redux-container .ui-icon-arrowthickstop-1-n,.control-section-redux .ui-icon-arrowthickstop-1-n,.control-panel-redux .ui-icon-arrowthickstop-1-n,.redux-metabox .ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.redux-container .ui-icon-arrowthickstop-1-e,.control-section-redux .ui-icon-arrowthickstop-1-e,.control-panel-redux .ui-icon-arrowthickstop-1-e,.redux-metabox .ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.redux-container .ui-icon-arrowthickstop-1-s,.control-section-redux .ui-icon-arrowthickstop-1-s,.control-panel-redux .ui-icon-arrowthickstop-1-s,.redux-metabox .ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.redux-container .ui-icon-arrowthickstop-1-w,.control-section-redux .ui-icon-arrowthickstop-1-w,.control-panel-redux .ui-icon-arrowthickstop-1-w,.redux-metabox .ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.redux-container .ui-icon-arrowreturnthick-1-w,.control-section-redux .ui-icon-arrowreturnthick-1-w,.control-panel-redux .ui-icon-arrowreturnthick-1-w,.redux-metabox .ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.redux-container .ui-icon-arrowreturnthick-1-n,.control-section-redux .ui-icon-arrowreturnthick-1-n,.control-panel-redux .ui-icon-arrowreturnthick-1-n,.redux-metabox .ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.redux-container .ui-icon-arrowreturnthick-1-e,.control-section-redux .ui-icon-arrowreturnthick-1-e,.control-panel-redux .ui-icon-arrowreturnthick-1-e,.redux-metabox .ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.redux-container .ui-icon-arrowreturnthick-1-s,.control-section-redux .ui-icon-arrowreturnthick-1-s,.control-panel-redux .ui-icon-arrowreturnthick-1-s,.redux-metabox .ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.redux-container .ui-icon-arrowreturn-1-w,.control-section-redux .ui-icon-arrowreturn-1-w,.control-panel-redux .ui-icon-arrowreturn-1-w,.redux-metabox .ui-icon-arrowreturn-1-w{background-position:-64px -64px}.redux-container .ui-icon-arrowreturn-1-n,.control-section-redux .ui-icon-arrowreturn-1-n,.control-panel-redux .ui-icon-arrowreturn-1-n,.redux-metabox .ui-icon-arrowreturn-1-n{background-position:-80px -64px}.redux-container .ui-icon-arrowreturn-1-e,.control-section-redux .ui-icon-arrowreturn-1-e,.control-panel-redux .ui-icon-arrowreturn-1-e,.redux-metabox .ui-icon-arrowreturn-1-e{background-position:-96px -64px}.redux-container .ui-icon-arrowreturn-1-s,.control-section-redux .ui-icon-arrowreturn-1-s,.control-panel-redux .ui-icon-arrowreturn-1-s,.redux-metabox .ui-icon-arrowreturn-1-s{background-position:-112px -64px}.redux-container .ui-icon-arrowrefresh-1-w,.control-section-redux .ui-icon-arrowrefresh-1-w,.control-panel-redux .ui-icon-arrowrefresh-1-w,.redux-metabox .ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.redux-container .ui-icon-arrowrefresh-1-n,.control-section-redux .ui-icon-arrowrefresh-1-n,.control-panel-redux .ui-icon-arrowrefresh-1-n,.redux-metabox .ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.redux-container .ui-icon-arrowrefresh-1-e,.control-section-redux .ui-icon-arrowrefresh-1-e,.control-panel-redux .ui-icon-arrowrefresh-1-e,.redux-metabox .ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.redux-container .ui-icon-arrowrefresh-1-s,.control-section-redux .ui-icon-arrowrefresh-1-s,.control-panel-redux .ui-icon-arrowrefresh-1-s,.redux-metabox .ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.redux-container .ui-icon-arrow-4,.control-section-redux .ui-icon-arrow-4,.control-panel-redux .ui-icon-arrow-4,.redux-metabox .ui-icon-arrow-4{background-position:0 -80px}.redux-container .ui-icon-arrow-4-diag,.control-section-redux .ui-icon-arrow-4-diag,.control-panel-redux .ui-icon-arrow-4-diag,.redux-metabox .ui-icon-arrow-4-diag{background-position:-16px -80px}.redux-container .ui-icon-extlink,.control-section-redux .ui-icon-extlink,.control-panel-redux .ui-icon-extlink,.redux-metabox .ui-icon-extlink{background-position:-32px -80px}.redux-container .ui-icon-newwin,.control-section-redux .ui-icon-newwin,.control-panel-redux .ui-icon-newwin,.redux-metabox .ui-icon-newwin{background-position:-48px -80px}.redux-container .ui-icon-refresh,.control-section-redux .ui-icon-refresh,.control-panel-redux .ui-icon-refresh,.redux-metabox .ui-icon-refresh{background-position:-64px -80px}.redux-container .ui-icon-shuffle,.control-section-redux .ui-icon-shuffle,.control-panel-redux .ui-icon-shuffle,.redux-metabox .ui-icon-shuffle{background-position:-80px -80px}.redux-container .ui-icon-transfer-e-w,.control-section-redux .ui-icon-transfer-e-w,.control-panel-redux .ui-icon-transfer-e-w,.redux-metabox .ui-icon-transfer-e-w{background-position:-96px -80px}.redux-container .ui-icon-transferthick-e-w,.control-section-redux .ui-icon-transferthick-e-w,.control-panel-redux .ui-icon-transferthick-e-w,.redux-metabox .ui-icon-transferthick-e-w{background-position:-112px -80px}.redux-container .ui-icon-folder-collapsed,.control-section-redux .ui-icon-folder-collapsed,.control-panel-redux .ui-icon-folder-collapsed,.redux-metabox .ui-icon-folder-collapsed{background-position:0 -96px}.redux-container .ui-icon-folder-open,.control-section-redux .ui-icon-folder-open,.control-panel-redux .ui-icon-folder-open,.redux-metabox .ui-icon-folder-open{background-position:-16px -96px}.redux-container .ui-icon-document,.control-section-redux .ui-icon-document,.control-panel-redux .ui-icon-document,.redux-metabox .ui-icon-document{background-position:-32px -96px}.redux-container .ui-icon-document-b,.control-section-redux .ui-icon-document-b,.control-panel-redux .ui-icon-document-b,.redux-metabox .ui-icon-document-b{background-position:-48px -96px}.redux-container .ui-icon-note,.control-section-redux .ui-icon-note,.control-panel-redux .ui-icon-note,.redux-metabox .ui-icon-note{background-position:-64px -96px}.redux-container .ui-icon-mail-closed,.control-section-redux .ui-icon-mail-closed,.control-panel-redux .ui-icon-mail-closed,.redux-metabox .ui-icon-mail-closed{background-position:-80px -96px}.redux-container .ui-icon-mail-open,.control-section-redux .ui-icon-mail-open,.control-panel-redux .ui-icon-mail-open,.redux-metabox .ui-icon-mail-open{background-position:-96px -96px}.redux-container .ui-icon-suitcase,.control-section-redux .ui-icon-suitcase,.control-panel-redux .ui-icon-suitcase,.redux-metabox .ui-icon-suitcase{background-position:-112px -96px}.redux-container .ui-icon-comment,.control-section-redux .ui-icon-comment,.control-panel-redux .ui-icon-comment,.redux-metabox .ui-icon-comment{background-position:-128px -96px}.redux-container .ui-icon-person,.control-section-redux .ui-icon-person,.control-panel-redux .ui-icon-person,.redux-metabox .ui-icon-person{background-position:-144px -96px}.redux-container .ui-icon-print,.control-section-redux .ui-icon-print,.control-panel-redux .ui-icon-print,.redux-metabox .ui-icon-print{background-position:-160px -96px}.redux-container .ui-icon-trash,.control-section-redux .ui-icon-trash,.control-panel-redux .ui-icon-trash,.redux-metabox .ui-icon-trash{background-position:-176px -96px}.redux-container .ui-icon-locked,.control-section-redux .ui-icon-locked,.control-panel-redux .ui-icon-locked,.redux-metabox .ui-icon-locked{background-position:-192px -96px}.redux-container .ui-icon-unlocked,.control-section-redux .ui-icon-unlocked,.control-panel-redux .ui-icon-unlocked,.redux-metabox .ui-icon-unlocked{background-position:-208px -96px}.redux-container .ui-icon-bookmark,.control-section-redux .ui-icon-bookmark,.control-panel-redux .ui-icon-bookmark,.redux-metabox .ui-icon-bookmark{background-position:-224px -96px}.redux-container .ui-icon-tag,.control-section-redux .ui-icon-tag,.control-panel-redux .ui-icon-tag,.redux-metabox .ui-icon-tag{background-position:-240px -96px}.redux-container .ui-icon-home,.control-section-redux .ui-icon-home,.control-panel-redux .ui-icon-home,.redux-metabox .ui-icon-home{background-position:0 -112px}.redux-container .ui-icon-flag,.control-section-redux .ui-icon-flag,.control-panel-redux .ui-icon-flag,.redux-metabox .ui-icon-flag{background-position:-16px -112px}.redux-container .ui-icon-calendar,.control-section-redux .ui-icon-calendar,.control-panel-redux .ui-icon-calendar,.redux-metabox .ui-icon-calendar{background-position:-32px -112px}.redux-container .ui-icon-cart,.control-section-redux .ui-icon-cart,.control-panel-redux .ui-icon-cart,.redux-metabox .ui-icon-cart{background-position:-48px -112px}.redux-container .ui-icon-pencil,.control-section-redux .ui-icon-pencil,.control-panel-redux .ui-icon-pencil,.redux-metabox .ui-icon-pencil{background-position:-64px -112px}.redux-container .ui-icon-clock,.control-section-redux .ui-icon-clock,.control-panel-redux .ui-icon-clock,.redux-metabox .ui-icon-clock{background-position:-80px -112px}.redux-container .ui-icon-disk,.control-section-redux .ui-icon-disk,.control-panel-redux .ui-icon-disk,.redux-metabox .ui-icon-disk{background-position:-96px -112px}.redux-container .ui-icon-calculator,.control-section-redux .ui-icon-calculator,.control-panel-redux .ui-icon-calculator,.redux-metabox .ui-icon-calculator{background-position:-112px -112px}.redux-container .ui-icon-zoomin,.control-section-redux .ui-icon-zoomin,.control-panel-redux .ui-icon-zoomin,.redux-metabox .ui-icon-zoomin{background-position:-128px -112px}.redux-container .ui-icon-zoomout,.control-section-redux .ui-icon-zoomout,.control-panel-redux .ui-icon-zoomout,.redux-metabox .ui-icon-zoomout{background-position:-144px -112px}.redux-container .ui-icon-search,.control-section-redux .ui-icon-search,.control-panel-redux .ui-icon-search,.redux-metabox .ui-icon-search{background-position:-160px -112px}.redux-container .ui-icon-wrench,.control-section-redux .ui-icon-wrench,.control-panel-redux .ui-icon-wrench,.redux-metabox .ui-icon-wrench{background-position:-176px -112px}.redux-container .ui-icon-gear,.control-section-redux .ui-icon-gear,.control-panel-redux .ui-icon-gear,.redux-metabox .ui-icon-gear{background-position:-192px -112px}.redux-container .ui-icon-heart,.control-section-redux .ui-icon-heart,.control-panel-redux .ui-icon-heart,.redux-metabox .ui-icon-heart{background-position:-208px -112px}.redux-container .ui-icon-star,.control-section-redux .ui-icon-star,.control-panel-redux .ui-icon-star,.redux-metabox .ui-icon-star{background-position:-224px -112px}.redux-container .ui-icon-link,.control-section-redux .ui-icon-link,.control-panel-redux .ui-icon-link,.redux-metabox .ui-icon-link{background-position:-240px -112px}.redux-container .ui-icon-cancel,.control-section-redux .ui-icon-cancel,.control-panel-redux .ui-icon-cancel,.redux-metabox .ui-icon-cancel{background-position:0 -128px}.redux-container .ui-icon-plus,.control-section-redux .ui-icon-plus,.control-panel-redux .ui-icon-plus,.redux-metabox .ui-icon-plus{background-position:-16px -128px}.redux-container .ui-icon-plusthick,.control-section-redux .ui-icon-plusthick,.control-panel-redux .ui-icon-plusthick,.redux-metabox .ui-icon-plusthick{background-position:-32px -128px}.redux-container .ui-icon-minus,.control-section-redux .ui-icon-minus,.control-panel-redux .ui-icon-minus,.redux-metabox .ui-icon-minus{background-position:-48px -128px}.redux-container .ui-icon-minusthick,.control-section-redux .ui-icon-minusthick,.control-panel-redux .ui-icon-minusthick,.redux-metabox .ui-icon-minusthick{background-position:-64px -128px}.redux-container .ui-icon-close,.control-section-redux .ui-icon-close,.control-panel-redux .ui-icon-close,.redux-metabox .ui-icon-close{background-position:-80px -128px}.redux-container .ui-icon-closethick,.control-section-redux .ui-icon-closethick,.control-panel-redux .ui-icon-closethick,.redux-metabox .ui-icon-closethick{background-position:-96px -128px}.redux-container .ui-icon-key,.control-section-redux .ui-icon-key,.control-panel-redux .ui-icon-key,.redux-metabox .ui-icon-key{background-position:-112px -128px}.redux-container .ui-icon-lightbulb,.control-section-redux .ui-icon-lightbulb,.control-panel-redux .ui-icon-lightbulb,.redux-metabox .ui-icon-lightbulb{background-position:-128px -128px}.redux-container .ui-icon-scissors,.control-section-redux .ui-icon-scissors,.control-panel-redux .ui-icon-scissors,.redux-metabox .ui-icon-scissors{background-position:-144px -128px}.redux-container .ui-icon-clipboard,.control-section-redux .ui-icon-clipboard,.control-panel-redux .ui-icon-clipboard,.redux-metabox .ui-icon-clipboard{background-position:-160px -128px}.redux-container .ui-icon-copy,.control-section-redux .ui-icon-copy,.control-panel-redux .ui-icon-copy,.redux-metabox .ui-icon-copy{background-position:-176px -128px}.redux-container .ui-icon-contact,.control-section-redux .ui-icon-contact,.control-panel-redux .ui-icon-contact,.redux-metabox .ui-icon-contact{background-position:-192px -128px}.redux-container .ui-icon-image,.control-section-redux .ui-icon-image,.control-panel-redux .ui-icon-image,.redux-metabox .ui-icon-image{background-position:-208px -128px}.redux-container .ui-icon-video,.control-section-redux .ui-icon-video,.control-panel-redux .ui-icon-video,.redux-metabox .ui-icon-video{background-position:-224px -128px}.redux-container .ui-icon-script,.control-section-redux .ui-icon-script,.control-panel-redux .ui-icon-script,.redux-metabox .ui-icon-script{background-position:-240px -128px}.redux-container .ui-icon-alert,.control-section-redux .ui-icon-alert,.control-panel-redux .ui-icon-alert,.redux-metabox .ui-icon-alert{background-position:0 -144px}.redux-container .ui-icon-info,.control-section-redux .ui-icon-info,.control-panel-redux .ui-icon-info,.redux-metabox .ui-icon-info{background-position:-16px -144px}.redux-container .ui-icon-notice,.control-section-redux .ui-icon-notice,.control-panel-redux .ui-icon-notice,.redux-metabox .ui-icon-notice{background-position:-32px -144px}.redux-container .ui-icon-help,.control-section-redux .ui-icon-help,.control-panel-redux .ui-icon-help,.redux-metabox .ui-icon-help{background-position:-48px -144px}.redux-container .ui-icon-check,.control-section-redux .ui-icon-check,.control-panel-redux .ui-icon-check,.redux-metabox .ui-icon-check{background-position:-64px -144px}.redux-container .ui-icon-bullet,.control-section-redux .ui-icon-bullet,.control-panel-redux .ui-icon-bullet,.redux-metabox .ui-icon-bullet{background-position:-80px -144px}.redux-container .ui-icon-radio-off,.control-section-redux .ui-icon-radio-off,.control-panel-redux .ui-icon-radio-off,.redux-metabox .ui-icon-radio-off{background-position:-96px -144px}.redux-container .ui-icon-radio-on,.control-section-redux .ui-icon-radio-on,.control-panel-redux .ui-icon-radio-on,.redux-metabox .ui-icon-radio-on{background-position:-112px -144px}.redux-container .ui-icon-pin-w,.control-section-redux .ui-icon-pin-w,.control-panel-redux .ui-icon-pin-w,.redux-metabox .ui-icon-pin-w{background-position:-128px -144px}.redux-container .ui-icon-pin-s,.control-section-redux .ui-icon-pin-s,.control-panel-redux .ui-icon-pin-s,.redux-metabox .ui-icon-pin-s{background-position:-144px -144px}.redux-container .ui-icon-play,.control-section-redux .ui-icon-play,.control-panel-redux .ui-icon-play,.redux-metabox .ui-icon-play{background-position:0 -160px}.redux-container .ui-icon-pause,.control-section-redux .ui-icon-pause,.control-panel-redux .ui-icon-pause,.redux-metabox .ui-icon-pause{background-position:-16px -160px}.redux-container .ui-icon-seek-next,.control-section-redux .ui-icon-seek-next,.control-panel-redux .ui-icon-seek-next,.redux-metabox .ui-icon-seek-next{background-position:-32px -160px}.redux-container .ui-icon-seek-prev,.control-section-redux .ui-icon-seek-prev,.control-panel-redux .ui-icon-seek-prev,.redux-metabox .ui-icon-seek-prev{background-position:-48px -160px}.redux-container .ui-icon-seek-end,.control-section-redux .ui-icon-seek-end,.control-panel-redux .ui-icon-seek-end,.redux-metabox .ui-icon-seek-end{background-position:-64px -160px}.redux-container .ui-icon-seek-start,.control-section-redux .ui-icon-seek-start,.control-panel-redux .ui-icon-seek-start,.redux-metabox .ui-icon-seek-start{background-position:-80px -160px}.redux-container .ui-icon-seek-first,.control-section-redux .ui-icon-seek-first,.control-panel-redux .ui-icon-seek-first,.redux-metabox .ui-icon-seek-first{background-position:-80px -160px}.redux-container .ui-icon-stop,.control-section-redux .ui-icon-stop,.control-panel-redux .ui-icon-stop,.redux-metabox .ui-icon-stop{background-position:-96px -160px}.redux-container .ui-icon-eject,.control-section-redux .ui-icon-eject,.control-panel-redux .ui-icon-eject,.redux-metabox .ui-icon-eject{background-position:-112px -160px}.redux-container .ui-icon-volume-off,.control-section-redux .ui-icon-volume-off,.control-panel-redux .ui-icon-volume-off,.redux-metabox .ui-icon-volume-off{background-position:-128px -160px}.redux-container .ui-icon-volume-on,.control-section-redux .ui-icon-volume-on,.control-panel-redux .ui-icon-volume-on,.redux-metabox .ui-icon-volume-on{background-position:-144px -160px}.redux-container .ui-icon-power,.control-section-redux .ui-icon-power,.control-panel-redux .ui-icon-power,.redux-metabox .ui-icon-power{background-position:0 -176px}.redux-container .ui-icon-signal-diag,.control-section-redux .ui-icon-signal-diag,.control-panel-redux .ui-icon-signal-diag,.redux-metabox .ui-icon-signal-diag{background-position:-16px -176px}.redux-container .ui-icon-signal,.control-section-redux .ui-icon-signal,.control-panel-redux .ui-icon-signal,.redux-metabox .ui-icon-signal{background-position:-32px -176px}.redux-container .ui-icon-battery-0,.control-section-redux .ui-icon-battery-0,.control-panel-redux .ui-icon-battery-0,.redux-metabox .ui-icon-battery-0{background-position:-48px -176px}.redux-container .ui-icon-battery-1,.control-section-redux .ui-icon-battery-1,.control-panel-redux .ui-icon-battery-1,.redux-metabox .ui-icon-battery-1{background-position:-64px -176px}.redux-container .ui-icon-battery-2,.control-section-redux .ui-icon-battery-2,.control-panel-redux .ui-icon-battery-2,.redux-metabox .ui-icon-battery-2{background-position:-80px -176px}.redux-container .ui-icon-battery-3,.control-section-redux .ui-icon-battery-3,.control-panel-redux .ui-icon-battery-3,.redux-metabox .ui-icon-battery-3{background-position:-96px -176px}.redux-container .ui-icon-circle-plus,.control-section-redux .ui-icon-circle-plus,.control-panel-redux .ui-icon-circle-plus,.redux-metabox .ui-icon-circle-plus{background-position:0 -192px}.redux-container .ui-icon-circle-minus,.control-section-redux .ui-icon-circle-minus,.control-panel-redux .ui-icon-circle-minus,.redux-metabox .ui-icon-circle-minus{background-position:-16px -192px}.redux-container .ui-icon-circle-close,.control-section-redux .ui-icon-circle-close,.control-panel-redux .ui-icon-circle-close,.redux-metabox .ui-icon-circle-close{background-position:-32px -192px}.redux-container .ui-icon-circle-triangle-e,.control-section-redux .ui-icon-circle-triangle-e,.control-panel-redux .ui-icon-circle-triangle-e,.redux-metabox .ui-icon-circle-triangle-e{background-position:-48px -192px}.redux-container .ui-icon-circle-triangle-s,.control-section-redux .ui-icon-circle-triangle-s,.control-panel-redux .ui-icon-circle-triangle-s,.redux-metabox .ui-icon-circle-triangle-s{background-position:-64px -192px}.redux-container .ui-icon-circle-triangle-w,.control-section-redux .ui-icon-circle-triangle-w,.control-panel-redux .ui-icon-circle-triangle-w,.redux-metabox .ui-icon-circle-triangle-w{background-position:-80px -192px}.redux-container .ui-icon-circle-triangle-n,.control-section-redux .ui-icon-circle-triangle-n,.control-panel-redux .ui-icon-circle-triangle-n,.redux-metabox .ui-icon-circle-triangle-n{background-position:-96px -192px}.redux-container .ui-icon-circle-arrow-e,.control-section-redux .ui-icon-circle-arrow-e,.control-panel-redux .ui-icon-circle-arrow-e,.redux-metabox .ui-icon-circle-arrow-e{background-position:-112px -192px}.redux-container .ui-icon-circle-arrow-s,.control-section-redux .ui-icon-circle-arrow-s,.control-panel-redux .ui-icon-circle-arrow-s,.redux-metabox .ui-icon-circle-arrow-s{background-position:-128px -192px}.redux-container .ui-icon-circle-arrow-w,.control-section-redux .ui-icon-circle-arrow-w,.control-panel-redux .ui-icon-circle-arrow-w,.redux-metabox .ui-icon-circle-arrow-w{background-position:-144px -192px}.redux-container .ui-icon-circle-arrow-n,.control-section-redux .ui-icon-circle-arrow-n,.control-panel-redux .ui-icon-circle-arrow-n,.redux-metabox .ui-icon-circle-arrow-n{background-position:-160px -192px}.redux-container .ui-icon-circle-zoomin,.control-section-redux .ui-icon-circle-zoomin,.control-panel-redux .ui-icon-circle-zoomin,.redux-metabox .ui-icon-circle-zoomin{background-position:-176px -192px}.redux-container .ui-icon-circle-zoomout,.control-section-redux .ui-icon-circle-zoomout,.control-panel-redux .ui-icon-circle-zoomout,.redux-metabox .ui-icon-circle-zoomout{background-position:-192px -192px}.redux-container .ui-icon-circle-check,.control-section-redux .ui-icon-circle-check,.control-panel-redux .ui-icon-circle-check,.redux-metabox .ui-icon-circle-check{background-position:-208px -192px}.redux-container .ui-icon-circlesmall-plus,.control-section-redux .ui-icon-circlesmall-plus,.control-panel-redux .ui-icon-circlesmall-plus,.redux-metabox .ui-icon-circlesmall-plus{background-position:0 -208px}.redux-container .ui-icon-circlesmall-minus,.control-section-redux .ui-icon-circlesmall-minus,.control-panel-redux .ui-icon-circlesmall-minus,.redux-metabox .ui-icon-circlesmall-minus{background-position:-16px -208px}.redux-container .ui-icon-circlesmall-close,.control-section-redux .ui-icon-circlesmall-close,.control-panel-redux .ui-icon-circlesmall-close,.redux-metabox .ui-icon-circlesmall-close{background-position:-32px -208px}.redux-container .ui-icon-squaresmall-plus,.control-section-redux .ui-icon-squaresmall-plus,.control-panel-redux .ui-icon-squaresmall-plus,.redux-metabox .ui-icon-squaresmall-plus{background-position:-48px -208px}.redux-container .ui-icon-squaresmall-minus,.control-section-redux .ui-icon-squaresmall-minus,.control-panel-redux .ui-icon-squaresmall-minus,.redux-metabox .ui-icon-squaresmall-minus{background-position:-64px -208px}.redux-container .ui-icon-squaresmall-close,.control-section-redux .ui-icon-squaresmall-close,.control-panel-redux .ui-icon-squaresmall-close,.redux-metabox .ui-icon-squaresmall-close{background-position:-80px -208px}.redux-container .ui-icon-grip-dotted-vertical,.control-section-redux .ui-icon-grip-dotted-vertical,.control-panel-redux .ui-icon-grip-dotted-vertical,.redux-metabox .ui-icon-grip-dotted-vertical{background-position:0 -224px}.redux-container .ui-icon-grip-dotted-horizontal,.control-section-redux .ui-icon-grip-dotted-horizontal,.control-panel-redux .ui-icon-grip-dotted-horizontal,.redux-metabox .ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.redux-container .ui-icon-grip-solid-vertical,.control-section-redux .ui-icon-grip-solid-vertical,.control-panel-redux .ui-icon-grip-solid-vertical,.redux-metabox .ui-icon-grip-solid-vertical{background-position:-32px -224px}.redux-container .ui-icon-grip-solid-horizontal,.control-section-redux .ui-icon-grip-solid-horizontal,.control-panel-redux .ui-icon-grip-solid-horizontal,.redux-metabox .ui-icon-grip-solid-horizontal{background-position:-48px -224px}.redux-container .ui-icon-gripsmall-diagonal-se,.control-section-redux .ui-icon-gripsmall-diagonal-se,.control-panel-redux .ui-icon-gripsmall-diagonal-se,.redux-metabox .ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.redux-container .ui-icon-grip-diagonal-se,.control-section-redux .ui-icon-grip-diagonal-se,.control-panel-redux .ui-icon-grip-diagonal-se,.redux-metabox .ui-icon-grip-diagonal-se{background-position:-80px -224px}.redux-container .ui-corner-all,.redux-container .ui-corner-top,.redux-container .ui-corner-left,.redux-container .ui-corner-tl,.control-section-redux .ui-corner-all,.control-section-redux .ui-corner-top,.control-section-redux .ui-corner-left,.control-section-redux .ui-corner-tl,.control-panel-redux .ui-corner-all,.control-panel-redux .ui-corner-top,.control-panel-redux .ui-corner-left,.control-panel-redux .ui-corner-tl,.redux-metabox .ui-corner-all,.redux-metabox .ui-corner-top,.redux-metabox .ui-corner-left,.redux-metabox .ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-top,.redux-container .ui-corner-right,.redux-container .ui-corner-tr,.control-section-redux .ui-corner-all,.control-section-redux .ui-corner-top,.control-section-redux .ui-corner-right,.control-section-redux .ui-corner-tr,.control-panel-redux .ui-corner-all,.control-panel-redux .ui-corner-top,.control-panel-redux .ui-corner-right,.control-panel-redux .ui-corner-tr,.redux-metabox .ui-corner-all,.redux-metabox .ui-corner-top,.redux-metabox .ui-corner-right,.redux-metabox .ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-bottom,.redux-container .ui-corner-left,.redux-container .ui-corner-bl,.control-section-redux .ui-corner-all,.control-section-redux .ui-corner-bottom,.control-section-redux .ui-corner-left,.control-section-redux .ui-corner-bl,.control-panel-redux .ui-corner-all,.control-panel-redux .ui-corner-bottom,.control-panel-redux .ui-corner-left,.control-panel-redux .ui-corner-bl,.redux-metabox .ui-corner-all,.redux-metabox .ui-corner-bottom,.redux-metabox .ui-corner-left,.redux-metabox .ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.redux-container .ui-corner-all,.redux-container .ui-corner-bottom,.redux-container .ui-corner-right,.redux-container .ui-corner-br,.control-section-redux .ui-corner-all,.control-section-redux .ui-corner-bottom,.control-section-redux .ui-corner-right,.control-section-redux .ui-corner-br,.control-panel-redux .ui-corner-all,.control-panel-redux .ui-corner-bottom,.control-panel-redux .ui-corner-right,.control-panel-redux .ui-corner-br,.redux-metabox .ui-corner-all,.redux-metabox .ui-corner-bottom,.redux-metabox .ui-corner-right,.redux-metabox .ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.redux-container .ui-widget-overlay,.control-section-redux .ui-widget-overlay,.control-panel-redux .ui-widget-overlay,.redux-metabox .ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30)}.redux-container .ui-widget-shadow,.control-section-redux .ui-widget-shadow,.control-panel-redux .ui-widget-shadow,.redux-metabox .ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.redux-container .ui-accordion,.control-section-redux .ui-accordion,.control-panel-redux .ui-accordion,.redux-metabox .ui-accordion{width:100%}.redux-container .ui-accordion .ui-accordion-header,.control-section-redux .ui-accordion .ui-accordion-header,.control-panel-redux .ui-accordion .ui-accordion-header,.redux-metabox .ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;font-weight:bold}.redux-container .ui-accordion .ui-accordion-li-fix,.control-section-redux .ui-accordion .ui-accordion-li-fix,.control-panel-redux .ui-accordion .ui-accordion-li-fix,.redux-metabox .ui-accordion .ui-accordion-li-fix{display:inline}.redux-container .ui-accordion .ui-accordion-header-active,.control-section-redux .ui-accordion .ui-accordion-header-active,.control-panel-redux .ui-accordion .ui-accordion-header-active,.redux-metabox .ui-accordion .ui-accordion-header-active{border-bottom:0 !important}.redux-container .ui-accordion .ui-accordion-header a,.control-section-redux .ui-accordion .ui-accordion-header a,.control-panel-redux .ui-accordion .ui-accordion-header a,.redux-metabox .ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em 1.7em}.redux-container .ui-accordion-icons .ui-accordion-header a,.control-section-redux .ui-accordion-icons .ui-accordion-header a,.control-panel-redux .ui-accordion-icons .ui-accordion-header a,.redux-metabox .ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.redux-container .ui-accordion .ui-accordion-header .ui-icon,.control-section-redux .ui-accordion .ui-accordion-header .ui-icon,.control-panel-redux .ui-accordion .ui-accordion-header .ui-icon,.redux-metabox .ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.redux-container .ui-accordion .ui-accordion-content,.control-section-redux .ui-accordion .ui-accordion-content,.control-panel-redux .ui-accordion .ui-accordion-content,.redux-metabox .ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.redux-container .ui-accordion .ui-accordion-content-active,.control-section-redux .ui-accordion .ui-accordion-content-active,.control-panel-redux .ui-accordion .ui-accordion-content-active,.redux-metabox .ui-accordion .ui-accordion-content-active{display:block}.redux-container .ui-button,.control-section-redux .ui-button,.control-panel-redux .ui-button,.redux-metabox .ui-button{cursor:pointer;display:inline-block;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e6e6e6));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e6e6e6);background-image:-ms-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-o-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:linear-gradient(#fff, #fff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);padding:5px 14px 6px;margin:0;text-shadow:0 1px 1px rgba(255,255,255,0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear background-image;-moz-transition:0.1s linear background-image;-ms-transition:0.1s linear background-image;-o-transition:0.1s linear background-image;transition:0.1s linear background-image;overflow:visible}.redux-container .ui-button-primary,.control-section-redux .ui-button-primary,.control-panel-redux .ui-button-primary,.redux-metabox .ui-button-primary{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-success,.control-section-redux .ui-button-success,.control-panel-redux .ui-button-success,.redux-metabox .ui-button-success{color:#ffffff;background-color:#57a957;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#57a957 #57a957 #3d773d;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-error,.control-section-redux .ui-button-error,.control-panel-redux .ui-button-error,.redux-metabox .ui-button-error{color:#ffffff;background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-button-icon-only,.control-section-redux .ui-button-icon-only,.control-panel-redux .ui-button-icon-only,.redux-metabox .ui-button-icon-only{width:2.2em}.redux-container .ui-button-icons-only,.control-section-redux .ui-button-icons-only,.control-panel-redux .ui-button-icons-only,.redux-metabox .ui-button-icons-only{width:3.4em}.redux-container button.ui-button-icons-only,.control-section-redux button.ui-button-icons-only,.control-panel-redux button.ui-button-icons-only,.redux-metabox button.ui-button-icons-only{width:3.7em}.redux-container .ui-button .ui-button-text,.control-section-redux .ui-button .ui-button-text,.control-panel-redux .ui-button .ui-button-text,.redux-metabox .ui-button .ui-button-text{display:block}.redux-container .ui-button-icon-only .ui-button-text,.redux-container .ui-button-icons-only .ui-button-text,.control-section-redux .ui-button-icon-only .ui-button-text,.control-section-redux .ui-button-icons-only .ui-button-text,.control-panel-redux .ui-button-icon-only .ui-button-text,.control-panel-redux .ui-button-icons-only .ui-button-text,.redux-metabox .ui-button-icon-only .ui-button-text,.redux-metabox .ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;display:none}.redux-container .ui-button-text-icon-primary .ui-button-text,.redux-container .ui-button-text-icons .ui-button-text,.control-section-redux .ui-button-text-icon-primary .ui-button-text,.control-section-redux .ui-button-text-icons .ui-button-text,.control-panel-redux .ui-button-text-icon-primary .ui-button-text,.control-panel-redux .ui-button-text-icons .ui-button-text,.redux-metabox .ui-button-text-icon-primary .ui-button-text,.redux-metabox .ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.redux-container .ui-button-text-icon-secondary .ui-button-text,.redux-container .ui-button-text-icons .ui-button-text,.control-section-redux .ui-button-text-icon-secondary .ui-button-text,.control-section-redux .ui-button-text-icons .ui-button-text,.control-panel-redux .ui-button-text-icon-secondary .ui-button-text,.control-panel-redux .ui-button-text-icons .ui-button-text,.redux-metabox .ui-button-text-icon-secondary .ui-button-text,.redux-metabox .ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.redux-container .ui-button-text-icons .ui-button-text,.control-section-redux .ui-button-text-icons .ui-button-text,.control-panel-redux .ui-button-text-icons .ui-button-text,.redux-metabox .ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}.redux-container .ui-button-icon-only .ui-icon,.redux-container .ui-button-text-icon-primary .ui-icon,.redux-container .ui-button-text-icon-secondary .ui-icon,.redux-container .ui-button-text-icons .ui-icon,.redux-container .ui-button-icons-only .ui-icon,.control-section-redux .ui-button-icon-only .ui-icon,.control-section-redux .ui-button-text-icon-primary .ui-icon,.control-section-redux .ui-button-text-icon-secondary .ui-icon,.control-section-redux .ui-button-text-icons .ui-icon,.control-section-redux .ui-button-icons-only .ui-icon,.control-panel-redux .ui-button-icon-only .ui-icon,.control-panel-redux .ui-button-text-icon-primary .ui-icon,.control-panel-redux .ui-button-text-icon-secondary .ui-icon,.control-panel-redux .ui-button-text-icons .ui-icon,.control-panel-redux .ui-button-icons-only .ui-icon,.redux-metabox .ui-button-icon-only .ui-icon,.redux-metabox .ui-button-text-icon-primary .ui-icon,.redux-metabox .ui-button-text-icon-secondary .ui-icon,.redux-metabox .ui-button-text-icons .ui-icon,.redux-metabox .ui-button-icons-only .ui-icon{top:50%;margin-top:-3px;margin-bottom:3px}.redux-container .ui-button-icon-only .ui-icon,.control-section-redux .ui-button-icon-only .ui-icon,.control-panel-redux .ui-button-icon-only .ui-icon,.redux-metabox .ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.redux-container .ui-button-text-icon-primary .ui-button-icon-primary,.redux-container .ui-button-text-icons .ui-button-icon-primary,.redux-container .ui-button-icons-only .ui-button-icon-primary,.control-section-redux .ui-button-text-icon-primary .ui-button-icon-primary,.control-section-redux .ui-button-text-icons .ui-button-icon-primary,.control-section-redux .ui-button-icons-only .ui-button-icon-primary,.control-panel-redux .ui-button-text-icon-primary .ui-button-icon-primary,.control-panel-redux .ui-button-text-icons .ui-button-icon-primary,.control-panel-redux .ui-button-icons-only .ui-button-icon-primary,.redux-metabox .ui-button-text-icon-primary .ui-button-icon-primary,.redux-metabox .ui-button-text-icons .ui-button-icon-primary,.redux-metabox .ui-button-icons-only .ui-button-icon-primary{left:.5em}.redux-container .ui-button-text-icon-secondary .ui-button-icon-secondary,.redux-container .ui-button-text-icons .ui-button-icon-secondary,.redux-container .ui-button-icons-only .ui-button-icon-secondary,.control-section-redux .ui-button-text-icon-secondary .ui-button-icon-secondary,.control-section-redux .ui-button-text-icons .ui-button-icon-secondary,.control-section-redux .ui-button-icons-only .ui-button-icon-secondary,.control-panel-redux .ui-button-text-icon-secondary .ui-button-icon-secondary,.control-panel-redux .ui-button-text-icons .ui-button-icon-secondary,.control-panel-redux .ui-button-icons-only .ui-button-icon-secondary,.redux-metabox .ui-button-text-icon-secondary .ui-button-icon-secondary,.redux-metabox .ui-button-text-icons .ui-button-icon-secondary,.redux-metabox .ui-button-icons-only .ui-button-icon-secondary{right:.5em}.redux-container .ui-button-text-icons .ui-button-icon-secondary,.redux-container .ui-button-icons-only .ui-button-icon-secondary,.control-section-redux .ui-button-text-icons .ui-button-icon-secondary,.control-section-redux .ui-button-icons-only .ui-button-icon-secondary,.control-panel-redux .ui-button-text-icons .ui-button-icon-secondary,.control-panel-redux .ui-button-icons-only .ui-button-icon-secondary,.redux-metabox .ui-button-text-icons .ui-button-icon-secondary,.redux-metabox .ui-button-icons-only .ui-button-icon-secondary{right:.5em}.redux-container .ui-buttonset,.control-section-redux .ui-buttonset,.control-panel-redux .ui-buttonset,.redux-metabox .ui-buttonset{margin-right:7px}.redux-container .ui-buttonset .ui-state-active,.control-section-redux .ui-buttonset .ui-state-active,.control-panel-redux .ui-buttonset .ui-state-active,.redux-metabox .ui-buttonset .ui-state-active{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.redux-container .ui-buttonset .ui-button,.control-section-redux .ui-buttonset .ui-button,.control-panel-redux .ui-buttonset .ui-button,.redux-metabox .ui-buttonset .ui-button{margin-left:0;margin-right:0}.redux-container button.ui-button::-moz-focus-inner,.control-section-redux button.ui-button::-moz-focus-inner,.control-panel-redux button.ui-button::-moz-focus-inner,.redux-metabox button.ui-button::-moz-focus-inner{border:0;padding:0}.redux-container .ui-datepicker,.control-section-redux .ui-datepicker,.control-panel-redux .ui-datepicker,.redux-metabox .ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.redux-container .ui-datepicker .ui-datepicker-header,.control-section-redux .ui-datepicker .ui-datepicker-header,.control-panel-redux .ui-datepicker .ui-datepicker-header,.redux-metabox .ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;border:0px;font-weight:bold;width:100%;padding:4px 0;background-color:#f5f5f5;color:#808080}.redux-container .ui-datepicker .ui-datepicker-prev,.redux-container .ui-datepicker .ui-datepicker-next,.control-section-redux .ui-datepicker .ui-datepicker-prev,.control-section-redux .ui-datepicker .ui-datepicker-next,.control-panel-redux .ui-datepicker .ui-datepicker-prev,.control-panel-redux .ui-datepicker .ui-datepicker-next,.redux-metabox .ui-datepicker .ui-datepicker-prev,.redux-metabox .ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.redux-container .ui-datepicker .ui-datepicker-prev,.control-section-redux .ui-datepicker .ui-datepicker-prev,.control-panel-redux .ui-datepicker .ui-datepicker-prev,.redux-metabox .ui-datepicker .ui-datepicker-prev{left:2px}.redux-container .ui-datepicker .ui-datepicker-next,.control-section-redux .ui-datepicker .ui-datepicker-next,.control-panel-redux .ui-datepicker .ui-datepicker-next,.redux-metabox .ui-datepicker .ui-datepicker-next{right:2px}.redux-container .ui-datepicker .ui-datepicker-prev span,.redux-container .ui-datepicker .ui-datepicker-next span,.control-section-redux .ui-datepicker .ui-datepicker-prev span,.control-section-redux .ui-datepicker .ui-datepicker-next span,.control-panel-redux .ui-datepicker .ui-datepicker-prev span,.control-panel-redux .ui-datepicker .ui-datepicker-next span,.redux-metabox .ui-datepicker .ui-datepicker-prev span,.redux-metabox .ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.redux-container .ui-datepicker .ui-datepicker-title,.control-section-redux .ui-datepicker .ui-datepicker-title,.control-panel-redux .ui-datepicker .ui-datepicker-title,.redux-metabox .ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.redux-container .ui-datepicker .ui-datepicker-title select,.control-section-redux .ui-datepicker .ui-datepicker-title select,.control-panel-redux .ui-datepicker .ui-datepicker-title select,.redux-metabox .ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.redux-container .ui-datepicker select.ui-datepicker-month-year,.control-section-redux .ui-datepicker select.ui-datepicker-month-year,.control-panel-redux .ui-datepicker select.ui-datepicker-month-year,.redux-metabox .ui-datepicker select.ui-datepicker-month-year{width:100%}.redux-container .ui-datepicker select.ui-datepicker-month,.redux-container .ui-datepicker select.ui-datepicker-year,.control-section-redux .ui-datepicker select.ui-datepicker-month,.control-section-redux .ui-datepicker select.ui-datepicker-year,.control-panel-redux .ui-datepicker select.ui-datepicker-month,.control-panel-redux .ui-datepicker select.ui-datepicker-year,.redux-metabox .ui-datepicker select.ui-datepicker-month,.redux-metabox .ui-datepicker select.ui-datepicker-year{width:49%}.redux-container .ui-datepicker table,.control-section-redux .ui-datepicker table,.control-panel-redux .ui-datepicker table,.redux-metabox .ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.redux-container .ui-datepicker th,.control-section-redux .ui-datepicker th,.control-panel-redux .ui-datepicker th,.redux-metabox .ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.redux-container .ui-datepicker td,.control-section-redux .ui-datepicker td,.control-panel-redux .ui-datepicker td,.redux-metabox .ui-datepicker td{border:0;padding:1px}.redux-container .ui-datepicker td span,.redux-container .ui-datepicker td a,.control-section-redux .ui-datepicker td span,.control-section-redux .ui-datepicker td a,.control-panel-redux .ui-datepicker td span,.control-panel-redux .ui-datepicker td a,.redux-metabox .ui-datepicker td span,.redux-metabox .ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.redux-container .ui-datepicker .ui-datepicker-buttonpane,.control-section-redux .ui-datepicker .ui-datepicker-buttonpane,.control-panel-redux .ui-datepicker .ui-datepicker-buttonpane,.redux-metabox .ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.redux-container .ui-datepicker .ui-datepicker-buttonpane button,.control-section-redux .ui-datepicker .ui-datepicker-buttonpane button,.control-panel-redux .ui-datepicker .ui-datepicker-buttonpane button,.redux-metabox .ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.redux-container .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current,.control-section-redux .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current,.control-panel-redux .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current,.redux-metabox .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.redux-container .ui-datepicker.ui-datepicker-multi,.control-section-redux .ui-datepicker.ui-datepicker-multi,.control-panel-redux .ui-datepicker.ui-datepicker-multi,.redux-metabox .ui-datepicker.ui-datepicker-multi{width:auto}.redux-container .ui-datepicker-multi .ui-datepicker-group,.control-section-redux .ui-datepicker-multi .ui-datepicker-group,.control-panel-redux .ui-datepicker-multi .ui-datepicker-group,.redux-metabox .ui-datepicker-multi .ui-datepicker-group{float:left}.redux-container .ui-datepicker-multi .ui-datepicker-group table,.control-section-redux .ui-datepicker-multi .ui-datepicker-group table,.control-panel-redux .ui-datepicker-multi .ui-datepicker-group table,.redux-metabox .ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.redux-container .ui-datepicker-multi-2 .ui-datepicker-group,.control-section-redux .ui-datepicker-multi-2 .ui-datepicker-group,.control-panel-redux .ui-datepicker-multi-2 .ui-datepicker-group,.redux-metabox .ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.redux-container .ui-datepicker-multi-3 .ui-datepicker-group,.control-section-redux .ui-datepicker-multi-3 .ui-datepicker-group,.control-panel-redux .ui-datepicker-multi-3 .ui-datepicker-group,.redux-metabox .ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.redux-container .ui-datepicker-multi-4 .ui-datepicker-group,.control-section-redux .ui-datepicker-multi-4 .ui-datepicker-group,.control-panel-redux .ui-datepicker-multi-4 .ui-datepicker-group,.redux-metabox .ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.redux-container .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.control-section-redux .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.control-panel-redux .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.redux-metabox .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.redux-container .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header,.control-section-redux .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header,.control-panel-redux .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header,.redux-metabox .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.redux-container .ui-datepicker-multi .ui-datepicker-buttonpane,.control-section-redux .ui-datepicker-multi .ui-datepicker-buttonpane,.control-panel-redux .ui-datepicker-multi .ui-datepicker-buttonpane,.redux-metabox .ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.redux-container .ui-datepicker-row-break,.control-section-redux .ui-datepicker-row-break,.control-panel-redux .ui-datepicker-row-break,.redux-metabox .ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.redux-container .ui-datepicker-rtl,.control-section-redux .ui-datepicker-rtl,.control-panel-redux .ui-datepicker-rtl,.redux-metabox .ui-datepicker-rtl{direction:rtl}.redux-container .ui-datepicker-rtl .ui-datepicker-prev,.control-section-redux .ui-datepicker-rtl .ui-datepicker-prev,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-prev,.redux-metabox .ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-next,.control-section-redux .ui-datepicker-rtl .ui-datepicker-next,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-next,.redux-metabox .ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-prev:hover,.control-section-redux .ui-datepicker-rtl .ui-datepicker-prev:hover,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-prev:hover,.redux-metabox .ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-next:hover,.control-section-redux .ui-datepicker-rtl .ui-datepicker-next:hover,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-next:hover,.redux-metabox .ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane,.control-section-redux .ui-datepicker-rtl .ui-datepicker-buttonpane,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-buttonpane,.redux-metabox .ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane button,.control-section-redux .ui-datepicker-rtl .ui-datepicker-buttonpane button,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-buttonpane button,.redux-metabox .ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.redux-container .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.control-section-redux .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.redux-metabox .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.redux-container .ui-datepicker-rtl .ui-datepicker-group,.control-section-redux .ui-datepicker-rtl .ui-datepicker-group,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-group,.redux-metabox .ui-datepicker-rtl .ui-datepicker-group{float:right}.redux-container .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.control-section-redux .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.redux-metabox .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.redux-container .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header,.control-section-redux .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header,.control-panel-redux .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header,.redux-metabox .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.redux-container .ui-datepicker-cover,.control-section-redux .ui-datepicker-cover,.control-panel-redux .ui-datepicker-cover,.redux-metabox .ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.redux-container .ui-datepicker th,.control-section-redux .ui-datepicker th,.control-panel-redux .ui-datepicker th,.redux-metabox .ui-datepicker th{font-weight:bold;color:gray}.redux-container .ui-datepicker-today a:hover,.control-section-redux .ui-datepicker-today a:hover,.control-panel-redux .ui-datepicker-today a:hover,.redux-metabox .ui-datepicker-today a:hover{background-color:#808080;color:#ffffff}.redux-container .ui-datepicker-today a,.control-section-redux .ui-datepicker-today a,.control-panel-redux .ui-datepicker-today a,.redux-metabox .ui-datepicker-today a{background-color:#BFBFBF;cursor:pointer;padding:0 4px;margin-bottom:0px}.redux-container .ui-datepicker td a,.control-section-redux .ui-datepicker td a,.control-panel-redux .ui-datepicker td a,.redux-metabox .ui-datepicker td a{margin-bottom:0px;border:0px}.redux-container .ui-datepicker td:hover,.control-section-redux .ui-datepicker td:hover,.control-panel-redux .ui-datepicker td:hover,.redux-metabox .ui-datepicker td:hover{color:#ffffff}.redux-container .ui-datepicker td .ui-state-default,.control-section-redux .ui-datepicker td .ui-state-default,.control-panel-redux .ui-datepicker td .ui-state-default,.redux-metabox .ui-datepicker td .ui-state-default{border:0px;background:none;margin-bottom:0px;padding:5px;color:gray;text-align:center;filter:none}.redux-container .ui-datepicker td .ui-state-active,.control-section-redux .ui-datepicker td .ui-state-active,.control-panel-redux .ui-datepicker td .ui-state-active,.redux-metabox .ui-datepicker td .ui-state-active{background:#BFBFBF;margin-bottom:0px;font-size:normal;text-shadow:0px;color:#ffffff;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-container .ui-datepicker td .ui-state-hover,.control-section-redux .ui-datepicker td .ui-state-hover,.control-panel-redux .ui-datepicker td .ui-state-hover,.redux-metabox .ui-datepicker td .ui-state-hover{color:#ffffff;background:#0064cd;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-border-radius:4px;-moz-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.redux-container .ui-widget-content,.control-section-redux .ui-widget-content,.control-panel-redux .ui-widget-content,.redux-metabox .ui-widget-content{border:1px solid #dfdfdf}.redux-container .ui-datepicker table,.control-section-redux .ui-datepicker table,.control-panel-redux .ui-datepicker table,.redux-metabox .ui-datepicker table{background:#fff}.redux-container .placeholder,.control-section-redux .placeholder,.control-panel-redux .placeholder,.redux-metabox .placeholder{background:#f9f9f9 !important;border:1px dashed #bbb !important}.wp-customizer #ui-datepicker-div{z-index:999999 !important}
|
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.scss
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
* Portions copyright jQuery UI & Twitter Bootstrap
|
9 |
*/
|
10 |
|
11 |
-
.redux-container {
|
12 |
/* Interaction Cues
|
13 |
----------------------------------*/
|
14 |
.ui-state-disabled { cursor: default !important; }
|
8 |
* Portions copyright jQuery UI & Twitter Bootstrap
|
9 |
*/
|
10 |
|
11 |
+
.redux-container, .control-section-redux, .control-panel-redux, .redux-metabox {
|
12 |
/* Interaction Cues
|
13 |
----------------------------------*/
|
14 |
.ui-state-disabled { cursor: default !important; }
|
ReduxCore/assets/js/redux.js
CHANGED
@@ -435,7 +435,7 @@
|
|
435 |
$( this ).fadeOut( tipHideDuration );
|
436 |
break;
|
437 |
default:
|
438 |
-
$( this ).
|
439 |
break;
|
440 |
}
|
441 |
},
|
@@ -653,11 +653,11 @@
|
|
653 |
if ( typeof redux.field_objects != 'undefined' && redux.field_objects[type] && redux.field_objects[type] ) {
|
654 |
redux.field_objects[type].init();
|
655 |
}
|
656 |
-
if ( $( this ).hasClass( 'redux_remove_th' )
|
657 |
|
658 |
var tr = $( this ).parents( 'tr:first' );
|
659 |
var th = tr.find( 'th:first' );
|
660 |
-
if ( th.html()
|
661 |
$( this ).prepend( th.html() );
|
662 |
$( this ).find( '.redux_field_th' ).css( 'padding', '0 0 10px 0' );
|
663 |
}
|
@@ -977,11 +977,11 @@
|
|
977 |
};
|
978 |
|
979 |
$.redux.check_dependencies_visibility = function( parentValue, data ) {
|
980 |
-
var show = false
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
|
986 |
switch ( operation ) {
|
987 |
case '=':
|
@@ -990,8 +990,8 @@
|
|
990 |
// var arr = Object.keys(parentValue).map(function (key) {return parentValue[key]});
|
991 |
// parentValue = arr;
|
992 |
// }
|
993 |
-
|
994 |
-
if ( $.isArray( parentValue) ) {
|
995 |
$( parentValue[0] ).each(
|
996 |
function( idx, val ) {
|
997 |
if ( $.isArray( checkValue ) ) {
|
@@ -1121,18 +1121,18 @@
|
|
1121 |
});
|
1122 |
parentValue = arr;
|
1123 |
}
|
1124 |
-
|
1125 |
if ($.isPlainObject(checkValue)) {
|
1126 |
arr = Object.keys(checkValue).map(function (key) {
|
1127 |
return checkValue[key];
|
1128 |
});
|
1129 |
checkValue = arr;
|
1130 |
-
}
|
1131 |
-
|
1132 |
if ( $.isArray( checkValue ) ) {
|
1133 |
$( checkValue ).each(
|
1134 |
function( idx, val ) {
|
1135 |
-
console.log (val);
|
1136 |
if ( parentValue.toString().indexOf( val ) !== -1 ) {
|
1137 |
show = true;
|
1138 |
}
|
@@ -1153,14 +1153,14 @@
|
|
1153 |
});
|
1154 |
parentValue = arr;
|
1155 |
}
|
1156 |
-
|
1157 |
if ($.isPlainObject(checkValue)) {
|
1158 |
arr = Object.keys(checkValue).map(function (key) {
|
1159 |
return checkValue[key];
|
1160 |
});
|
1161 |
checkValue = arr;
|
1162 |
-
}
|
1163 |
-
|
1164 |
if ( $.isArray( checkValue ) ) {
|
1165 |
$( checkValue ).each(
|
1166 |
function( idx, val ) {
|
@@ -1434,8 +1434,8 @@
|
|
1434 |
$( '#redux-header' ).append( '<div class="rAds"></div>' );
|
1435 |
el = $( '#redux-header' );
|
1436 |
} else {
|
1437 |
-
$(
|
1438 |
-
el = $( '#
|
1439 |
}
|
1440 |
|
1441 |
el.css( 'position', 'relative' );
|
435 |
$( this ).fadeOut( tipHideDuration );
|
436 |
break;
|
437 |
default:
|
438 |
+
$( this ).hide( tipHideDuration );
|
439 |
break;
|
440 |
}
|
441 |
},
|
653 |
if ( typeof redux.field_objects != 'undefined' && redux.field_objects[type] && redux.field_objects[type] ) {
|
654 |
redux.field_objects[type].init();
|
655 |
}
|
656 |
+
if ( !redux.customizer && $( this ).hasClass( 'redux_remove_th' ) ) {
|
657 |
|
658 |
var tr = $( this ).parents( 'tr:first' );
|
659 |
var th = tr.find( 'th:first' );
|
660 |
+
if ( th.html() && th.html().length > 0 ) {
|
661 |
$( this ).prepend( th.html() );
|
662 |
$( this ).find( '.redux_field_th' ).css( 'padding', '0 0 10px 0' );
|
663 |
}
|
977 |
};
|
978 |
|
979 |
$.redux.check_dependencies_visibility = function( parentValue, data ) {
|
980 |
+
var show = false,
|
981 |
+
checkValue_array,
|
982 |
+
checkValue = data.checkValue,
|
983 |
+
operation = data.operation,
|
984 |
+
arr;
|
985 |
|
986 |
switch ( operation ) {
|
987 |
case '=':
|
990 |
// var arr = Object.keys(parentValue).map(function (key) {return parentValue[key]});
|
991 |
// parentValue = arr;
|
992 |
// }
|
993 |
+
|
994 |
+
if ( $.isArray( parentValue ) ) {
|
995 |
$( parentValue[0] ).each(
|
996 |
function( idx, val ) {
|
997 |
if ( $.isArray( checkValue ) ) {
|
1121 |
});
|
1122 |
parentValue = arr;
|
1123 |
}
|
1124 |
+
|
1125 |
if ($.isPlainObject(checkValue)) {
|
1126 |
arr = Object.keys(checkValue).map(function (key) {
|
1127 |
return checkValue[key];
|
1128 |
});
|
1129 |
checkValue = arr;
|
1130 |
+
}
|
1131 |
+
|
1132 |
if ( $.isArray( checkValue ) ) {
|
1133 |
$( checkValue ).each(
|
1134 |
function( idx, val ) {
|
1135 |
+
//console.log (val);
|
1136 |
if ( parentValue.toString().indexOf( val ) !== -1 ) {
|
1137 |
show = true;
|
1138 |
}
|
1153 |
});
|
1154 |
parentValue = arr;
|
1155 |
}
|
1156 |
+
|
1157 |
if ($.isPlainObject(checkValue)) {
|
1158 |
arr = Object.keys(checkValue).map(function (key) {
|
1159 |
return checkValue[key];
|
1160 |
});
|
1161 |
checkValue = arr;
|
1162 |
+
}
|
1163 |
+
|
1164 |
if ( $.isArray( checkValue ) ) {
|
1165 |
$( checkValue ).each(
|
1166 |
function( idx, val ) {
|
1434 |
$( '#redux-header' ).append( '<div class="rAds"></div>' );
|
1435 |
el = $( '#redux-header' );
|
1436 |
} else {
|
1437 |
+
$('#customize-theme-controls ul').first().prepend('<li id="redux_rAds" class="accordion-section rAdsContainer" style="position: relative;"><div class="rAds"></div></li>');
|
1438 |
+
el = $( '#redux_rAds' );
|
1439 |
}
|
1440 |
|
1441 |
el.css( 'position', 'relative' );
|
ReduxCore/assets/js/redux.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
function redux_change(a){jQuery("body").trigger("check_dependencies",a),a.hasClass("compiler")&&jQuery("#redux-compiler-hook").val(1);var b=jQuery(a).parents(".redux-container:first"),c=jQuery(a).closest(".redux-group-tab").attr("id"),d=c.split("_");d=d[0];var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".redux-group-tab-link-li:first"),f=jQuery("#"+c+"_li").parents(".hasSubSections:first");if(jQuery(a).parents("fieldset.redux-field:first").hasClass("redux-field-error")){jQuery(a).parents("fieldset.redux-field:first").removeClass("redux-field-error"),jQuery(a).parent().find(".redux-th-error").slideUp();var g=parseInt(b.find(".redux-field-errors span").text())-1;if(0>=g)jQuery("#"+c+"_li .redux-menu-error").fadeOut("fast").remove(),jQuery("#"+c+"_li .redux-group-tab-link-a").removeClass("hasError"),jQuery("#"+c+"_li").parents(".inside:first").find(".redux-field-errors").slideUp(),jQuery(a).parents(".redux-container:first").find(".redux-field-errors").slideUp(),jQuery("#redux_metaboxes_errors").slideUp();else{var h=parseInt(e.find(".redux-menu-error:first").text())-1;0>=h?e.find(".redux-menu-error:first").fadeOut().remove():e.find(".redux-menu-error:first").text(h),b.find(".redux-field-errors span").text(g)}0!==f.length&&0===f.find(".redux-menu-error").length&&f.find(".hasError").removeClass("hasError")}if(jQuery(a).parents("fieldset.redux-field:first").hasClass("redux-field-warning")){jQuery(a).parents("fieldset.redux-field:first").removeClass("redux-field-warning"),jQuery(a).parent().find(".redux-th-warning").slideUp();var i=parseInt(b.find(".redux-field-warnings span").text())-1;if(0>=i)jQuery("#"+c+"_li .redux-menu-warning").fadeOut("fast").remove(),jQuery("#"+c+"_li .redux-group-tab-link-a").removeClass("hasWarning"),jQuery("#"+c+"_li").parents(".inside:first").find(".redux-field-warnings").slideUp(),jQuery(a).parents(".redux-container:first").find(".redux-field-warnings").slideUp(),jQuery("#redux_metaboxes_warnings").slideUp();else{var j=parseInt(e.find(".redux-menu-warning:first").text())-1;0>=j?e.find(".redux-menu-warning:first").fadeOut().remove():e.find(".redux-menu-warning:first").text(j),b.find(".redux-field-warning span").text(i)}0!==f.length&&0===f.find(".redux-menu-warning").length&&f.find(".hasWarning").removeClass("hasWarning")}return b.find(".saved_notice:visible").length>0?void 0:redux.customizer?void redux.customizer.save(a,b,c):void(redux.args.disable_save_warn||(b.find(".redux-save-warn").slideDown(),window.onbeforeunload=confirmOnPageExit))}function colorValidate(a){var b=jQuery(a).val(),c=colorNameToHex(b);return c!==b.replace("#","")?c:b}function colorNameToHex(a){var b=a.replace(/^\s\s*/,"").replace(/\s\s*$/,"").replace("#",""),c={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c","indigo ":"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",redux:"#01a3e3",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};return"undefined"!==c[b.toLowerCase()]?c[b.toLowerCase()]:a}!function(a){"function"==typeof define&&define.amd?jQueryCookie.define(["jquery"],a):a(jQuery)}(function(a){function b(a){return a}function c(a){return decodeURIComponent(a.replace(e," "))}function d(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return f.json?JSON.parse(a):a}catch(b){}}var e=/\+/g,f=a.cookie=function(e,g,h){if(void 0!==g){if(h=a.extend({},f.defaults,h),"number"==typeof h.expires){var i=h.expires,j=h.expires=new Date;j.setDate(j.getDate()+i)}return g=f.json?JSON.stringify(g):String(g),document.cookie=[f.raw?e:encodeURIComponent(e),"=",f.raw?g:encodeURIComponent(g),h.expires?"; expires="+h.expires.toUTCString():"",h.path?"; path="+h.path:"",h.domain?"; domain="+h.domain:"",h.secure?"; secure":""].join("")}for(var k=f.raw?b:c,l=document.cookie.split("; "),m=e?void 0:{},n=0,o=l.length;o>n;n++){var p=l[n].split("="),q=k(p.shift()),r=k(p.join("="));if(e&&e===q){m=d(r);break}e||(m[q]=d(r))}return m};f.defaults={},a.removeCookie=function(b,c){return void 0!==a.cookie(b)?(a.cookie(b,"",a.extend({},c,{expires:-1})),!0):!1}}),function(a){a.fn.typeWatch=function(b){function c(b,c){var d=a(b.el).val();(d.length>=f.captureLength&&d.toUpperCase()!=b.text||c&&d.length>=f.captureLength)&&(b.text=d.toUpperCase(),b.cb.call(b.el,d))}function d(b){var d=b.type.toUpperCase();if(a.inArray(d,f.inputTypes)>=0){var e={timer:null,text:a(b).val().toUpperCase(),cb:f.callback,el:b,wait:f.wait};f.highlight&&a(b).focus(function(){this.select()});var g=function(b){var d=e.wait,g=!1,h=this.type.toUpperCase();"undefined"!=typeof b.keyCode&&13==b.keyCode&&"TEXTAREA"!=h&&a.inArray(h,f.inputTypes)>=0&&(d=1,g=!0);var i=function(){c(e,g)};clearTimeout(e.timer),e.timer=setTimeout(i,d)};a(b).on("keydown paste cut input",g)}}var e=["TEXT","TEXTAREA","PASSWORD","TEL","SEARCH","URL","EMAIL","DATETIME","DATE","MONTH","WEEK","TIME","DATETIME-LOCAL","NUMBER","RANGE"],f=a.extend({wait:750,callback:function(){},highlight:!0,captureLength:2,inputTypes:e},b);return this.each(function(){d(this)})}}(jQuery),function(a){a.fn.serializeForm=function(){if(this.length<1)return!1;var b={},c=b,d=':input[type!="checkbox"][type!="radio"], input:checked',e=function(){if(!this.disabled){var d=this.name.replace(/\[([^\]]+)?\]/g,",$1").split(","),e=d.length-1,f=a(this);if(d[0]){for(var g=0;e>g;g++)c=c[d[g]]=c[d[g]]||(""===d[g+1]||"0"===d[g+1]?[]:{});void 0!==c.length?c.push(f.val()):c[d[e]]=f.val(),c=b}}};return this.filter(d).each(e),this.find(d).each(e),b}}(jQuery),function(a){function b(){var a="!@#$%^&*()+=[]\\';,/{}|\":<>?~`.-_";return a+=" "}function c(){var a="¬€£¦";return a}function d(b,c,d){b.each(function(){var b=a(this);b.bind("keyup change paste",function(a){var e="";a.originalEvent&&a.originalEvent.clipboardData&&a.originalEvent.clipboardData.getData&&(e=a.originalEvent.clipboardData.getData("text/plain")),setTimeout(function(){h(b,c,d,e)},0)}),b.bind("keypress",function(a){var e=a.charCode?a.charCode:a.which;if(!(g(e)||a.ctrlKey||a.metaKey)){var f=String.fromCharCode(e),h=b.selection(),i=h.start,j=h.end,k=b.val(),l=k.substring(0,i)+f+k.substring(j),m=c(l,d);m!=l&&a.preventDefault()}})})}function e(b,c){var d=parseFloat(a(b).val()),e=a(b);return isNaN(d)?void e.val(""):(f(c.min)&&d<c.min&&e.val(""),void(f(c.max)&&d>c.max&&e.val("")))}function f(a){return!isNaN(a)}function g(a){return a>=32?!1:10==a?!1:13==a?!1:!0}function h(a,b,c,d){var e=a.val();""==e&&d.length>0&&(e=d);var f=b(e,c);if(e!=f){var g=a.alphanum_caret();a.val(f),e.length==f.length+1?a.alphanum_caret(g-1):a.alphanum_caret(g)}}function i(b,c){"undefined"==typeof c&&(c=D);var d,e={};return d="string"==typeof b?F[b]:"undefined"==typeof b?{}:b,a.extend(e,c,d),"undefined"==typeof e.blacklist&&(e.blacklistSet=x(e.allow,e.disallow)),e}function j(b){var c,d={};return c="string"==typeof b?G[b]:"undefined"==typeof b?{}:b,a.extend(d,E,c),d}function k(a,b,c){return c.maxLength&&a.length>=c.maxLength?!1:c.allow.indexOf(b)>=0?!0:c.allowSpace&&" "==b?!0:c.blacklistSet.contains(b)?!1:!c.allowNumeric&&K[b]?!1:!c.allowUpper&&u(b)?!1:!c.allowLower&&v(b)?!1:!c.allowCaseless&&w(b)?!1:!c.allowLatin&&L.contains(b)?!1:c.allowOtherCharSets?!0:K[b]||L.contains(b)?!0:!1}function l(a,b,c){if(K[b])return n(a,c)?!1:p(a,c)?!1:o(a,c)?!1:q(a+b,c)?!1:r(a+b,c)?!1:!0;if(c.allowPlus&&"+"==b&&""==a)return!0;if(c.allowMinus&&"-"==b&&""==a)return!0;if(b==I&&c.allowThouSep&&A(a,b))return!0;if(b==J){if(a.indexOf(J)>=0)return!1;if(c.allowDecSep)return!0}return!1}function m(a){return a+="",a.replace(/[^0-9]/g,"").length}function n(a,b){var c=b.maxDigits;if(""==c||isNaN(c))return!1;var d=m(a);return d>=c?!0:!1}function o(a,b){var c=b.maxDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(-1==d)return!1;var e=a.substring(d),f=m(e);return f>=c?!0:!1}function p(a,b){var c=b.maxPreDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(d>=0)return!1;var e=m(a);return e>=c?!0:!1}function q(a,b){if(!b.max||b.max<0)return!1;var c=parseFloat(a);return c>b.max?!0:!1}function r(a,b){if(!b.min||b.min>0)return!1;var c=parseFloat(a);return c<b.min?!0:!1}function s(a,b){if("string"!=typeof a)return a;var c,d=a.split(""),e=[],f=0;for(f=0;f<d.length;f++){c=d[f];var g=e.join("");k(g,c,b)&&e.push(c)}return e.join("")}function t(a,b){if("string"!=typeof a)return a;var c,d=a.split(""),e=[],f=0;for(f=0;f<d.length;f++){c=d[f];var g=e.join("");l(g,c,b)&&e.push(c)}return e.join("")}function u(a){var b=a.toUpperCase(),c=a.toLowerCase();return a==b&&b!=c?!0:!1}function v(a){var b=a.toUpperCase(),c=a.toLowerCase();return a==c&&b!=c?!0:!1}function w(a){return a.toUpperCase()==a.toLowerCase()?!0:!1}function x(a,b){var c=new B(H+b),d=new B(a),e=c.subtract(d);return e}function y(){var a,b="0123456789".split(""),c={},d=0;for(d=0;d<b.length;d++)a=b[d],c[a]=!0;return c}function z(){var a="abcdefghijklmnopqrstuvwxyz",b=a.toUpperCase(),c=new B(a+b);return c}function A(a,b){if(0==a.length)return!1;var c=a.indexOf(J);if(c>=0)return!1;var d=a.indexOf(I);if(0>d)return!0;var e=a.lastIndexOf(I),f=a.length-e-1;if(3>f)return!1;var g=m(a.substring(d));return g%3>0?!1:!0}function B(a){"string"==typeof a?this.map=C(a):this.map={}}function C(a){var b,c={},d=a.split(""),e=0;for(e=0;e<d.length;e++)b=d[e],c[b]=!0;return c}a.fn.alphanum=function(a){var b=i(a),c=this;return d(c,s,b),this},a.fn.alpha=function(a){var b=i("alpha"),c=i(a,b),e=this;return d(e,s,c),this},a.fn.numeric=function(a){var b=j(a),c=this;return d(c,t,b),c.blur(function(){e(this,a)}),this};var D={allow:"",disallow:"",allowSpace:!0,allowNumeric:!0,allowUpper:!0,allowLower:!0,allowCaseless:!0,allowLatin:!0,allowOtherCharSets:!0,maxLength:NaN},E={allowPlus:!1,allowMinus:!0,allowThouSep:!0,allowDecSep:!0,allowLeadingSpaces:!1,maxDigits:NaN,maxDecimalPlaces:NaN,maxPreDecimalPlaces:NaN,max:NaN,min:NaN},F={alpha:{allowNumeric:!1},upper:{allowNumeric:!1,allowUpper:!0,allowLower:!1,allowCaseless:!0},lower:{allowNumeric:!1,allowUpper:!1,allowLower:!0,allowCaseless:!0}},G={integer:{allowPlus:!1,allowMinus:!0,allowThouSep:!1,allowDecSep:!1},positiveInteger:{allowPlus:!1,allowMinus:!1,allowThouSep:!1,allowDecSep:!1}},H=b()+c(),I=",",J=".",K=y(),L=z();B.prototype.add=function(a){var b=this.clone();for(var c in a.map)b.map[c]=!0;return b},B.prototype.subtract=function(a){var b=this.clone();for(var c in a.map)delete b.map[c];return b},B.prototype.contains=function(a){return this.map[a]?!0:!1},B.prototype.clone=function(){var a=new B;for(var b in this.map)a.map[b]=!0;return a},a.fn.alphanum.backdoorAlphaNum=function(a,b){var c=i(b);return s(a,c)},a.fn.alphanum.backdoorNumeric=function(a,b){var c=j(b);return t(a,c)},a.fn.alphanum.setNumericSeparators=function(a){1==a.thousandsSeparator.length&&1==a.decimalSeparator.length&&(I=a.thousandsSeparator,J=a.decimalSeparator)}}(jQuery),function(a){function b(a,b){if(a.createTextRange){var c=a.createTextRange();c.move("character",b),c.select()}else null!=a.selectionStart&&(a.focus(),a.setSelectionRange(b,b))}function c(a){if("selection"in document){var b=a.createTextRange();try{b.setEndPoint("EndToStart",document.selection.createRange())}catch(c){return 0}return b.text.length}return null!=a.selectionStart?a.selectionStart:void 0}a.fn.alphanum_caret=function(d,e){return"undefined"==typeof d?c(this.get(0)):this.queue(function(c){if(isNaN(d)){var f=a(this).val().indexOf(d);e===!0?f+=d.length:"undefined"!=typeof e&&(f+=e),b(this,f)}else b(this,d);c()})}}(jQuery),function(a){var b=function(a){return a?a.ownerDocument.defaultView||a.ownerDocument.parentWindow:window},c=function(b,c){var d=a.Range.current(b).clone(),e=a.Range(b).select(b);return d.overlaps(e)?(d.compare("START_TO_START",e)<1?(startPos=0,d.move("START_TO_START",e)):(fromElementToCurrent=e.clone(),fromElementToCurrent.move("END_TO_START",d),startPos=fromElementToCurrent.toString().length),d.compare("END_TO_END",e)>=0?endPos=e.toString().length:endPos=startPos+d.toString().length,{start:startPos,end:endPos}):null},d=function(d){var e=b(d);if(void 0!==d.selectionStart)return document.activeElement&&document.activeElement!=d&&d.selectionStart==d.selectionEnd&&0==d.selectionStart?{start:d.value.length,end:d.value.length}:{start:d.selectionStart,end:d.selectionEnd};if(e.getSelection)return c(d,e);try{if("input"==d.nodeName.toLowerCase()){var f=b(d).document.selection.createRange(),g=d.createTextRange();g.setEndPoint("EndToStart",f);var h=g.text.length;return{start:h,end:h+f.text.length}}var i=c(d,e);if(!i)return i;var j=a.Range.current().clone(),k=j.clone().collapse().range,l=j.clone().collapse(!1).range;return k.moveStart("character",-1),l.moveStart("character",-1),0!=i.startPos&&""==k.text&&(i.startPos+=2),0!=i.endPos&&""==l.text&&(i.endPos+=2),i}catch(m){return{start:d.value.length,end:d.value.length}}},e=function(a,c,d){var e=b(a);if(a.setSelectionRange)void 0===d?(a.focus(),a.setSelectionRange(c,c)):(a.select(),a.selectionStart=c,a.selectionEnd=d);else if(a.createTextRange){var f=a.createTextRange();f.moveStart("character",c),d=d||c,f.moveEnd("character",d-a.value.length),f.select()}else if(e.getSelection){var h=e.document,i=e.getSelection(),j=h.createRange(),k=[c,void 0!==d?d:c];g([a],k),j.setStart(k[0].el,k[0].count),j.setEnd(k[1].el,k[1].count),i.removeAllRanges(),i.addRange(j)}else if(e.document.body.createTextRange){var j=document.body.createTextRange();j.moveToElementText(a),j.collapse(),j.moveStart("character",c),j.moveEnd("character",void 0!==d?d:c),j.select()}},f=function(a,b,c,d){"number"==typeof c[0]&&c[0]<b&&(c[0]={el:d,count:c[0]-a}),"number"==typeof c[1]&&c[1]<=b&&(c[1]={el:d,count:c[1]-a})},g=function(a,b,c){var d,e;c=c||0;for(var h=0;a[h];h++)d=a[h],3===d.nodeType||4===d.nodeType?(e=c,c+=d.nodeValue.length,f(e,c,b,d)):8!==d.nodeType&&(c=g(d.childNodes,b,c));return c};jQuery.fn.selection=function(a,b){return void 0!==a?this.each(function(){e(this,a,b)}):d(this[0])},a.fn.selection.getCharElement=g}(jQuery),function(a){"use strict";a.redux=a.redux||{},a(document).ready(function(){a.fn.isOnScreen=function(){if(window){var b=a(window),c={top:b.scrollTop()};c.right=c.left+b.width(),c.bottom=c.top+b.height();var d=this.offset();return d.right=d.left+this.outerWidth(),d.bottom=d.top+this.outerHeight(),!(c.right<d.left||c.left>d.right||c.bottom<d.top||c.top>d.bottom)}},a.redux.hideFields(),a.redux.checkRequired(),a.redux.initEvents(),a.redux.initQtip(),a.redux.tabCheck(),a.redux.notices(),a.redux.tabControl()}),a.redux.ajax_save=function(b){var c=a(document.getElementById("redux_ajax_overlay"));c.fadeIn(),jQuery(".redux-action_bar .spinner").addClass("is-active"),jQuery(".redux-action_bar input").attr("disabled","disabled");var d=jQuery(document.getElementById("redux_notification_bar"));d.slideUp(),jQuery(".redux-save-warn").slideUp(),jQuery(".redux_ajax_save_error").slideUp("medium",function(){jQuery(this).remove()});var e=jQuery(document.getElementById("redux-form-wrapper"));redux.fields.hasOwnProperty("editor")&&a.each(redux.fields.editor,function(a,b){var c=tinyMCE.get(a);c&&c.save()});var f=e.serialize();e.find("input[type=checkbox]").each(function(){if("undefined"!=typeof a(this).attr("name")){var b=a(this).is(":checked")?a(this).val():"0";f+="&"+a(this).attr("name")+"="+b}}),"redux_save"!=b.attr("name")&&(f+="&"+b.attr("name")+"="+b.val());var g=e.attr("data-nonce");return jQuery.ajax({type:"post",dataType:"json",url:ajaxurl,data:{action:redux.args.opt_name+"_ajax_save",nonce:g,opt_name:redux.args.opt_name,data:f},error:function(a){window.console||(console={}),console.log=console.log||function(a,b){},console.log(redux.ajax.console),console.log(a.responseText),jQuery(".redux-action_bar input").removeAttr("disabled"),c.fadeOut("fast"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),alert(redux.ajax.alert)},success:function(b){if(b.action&&"reload"==b.action)location.reload(!0);else if("success"==b.status){jQuery(".redux-action_bar input").removeAttr("disabled"),c.fadeOut("fast"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),redux.options=b.options,redux.errors=b.errors,redux.warnings=b.warnings,d.html(b.notification_bar).slideDown("fast"),(null!==b.errors||null!==b.warnings)&&a.redux.notices();var e=a(document.getElementById("redux_notification_bar")).find(".saved_notice");e.slideDown(),e.delay(4e3).slideUp()}else jQuery(".redux-action_bar input").removeAttr("disabled"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),c.fadeOut("fast"),jQuery(".wrap h2:first").parent().append('<div class="error redux_ajax_save_error" style="display:none;"><p>'+b.status+"</p></div>"),jQuery(".redux_ajax_save_error").slideDown(),jQuery("html, body").animate({scrollTop:0},"slow")}}),!1},a.redux.initEvents=function(){a(".redux-presets-bar").on("click",function(){window.onbeforeunload=null}),a("#toplevel_page_"+redux.args.slug+" .wp-submenu a, #wp-admin-bar-"+redux.args.slug+" a.ab-item").click(function(b){if((a("#toplevel_page_"+redux.args.slug).hasClass("wp-menu-open")||a(this).hasClass("ab-item"))&&!a(this).parents("ul.ab-submenu:first").hasClass("ab-sub-secondary")&&a(this).attr("href").toLowerCase().indexOf(redux.args.slug+"&tab=")>=0){b.preventDefault();var c=a(this).attr("href").split("&tab=");return a("#"+c[1]+"_section_group_li_a").click(),a(this).parents("ul:first").find(".current").removeClass("current"),a(this).addClass("current"),a(this).parent().addClass("current"),!1}}),a(".redux-action_bar input").on("click",function(b){if(a(this).attr("name")==redux.args.opt_name+"[defaults]"){if(!confirm(redux.args.reset_confirm))return!1}else if(a(this).attr("name")==redux.args.opt_name+"[defaults-section]"&&!confirm(redux.args.reset_section_confirm))return!1;window.onbeforeunload=null,redux.args.ajax_save===!0&&(a.redux.ajax_save(a(this)),b.preventDefault())}),a(".expand_options").click(function(b){b.preventDefault();var c=a(".redux-container");if(a(c).hasClass("fully-expanded")){a(c).removeClass("fully-expanded");var d=a.cookie("redux_current_tab");a(".redux-container:first").find("#"+d+"_section_group").fadeIn(200,function(){0!==a(".redux-container:first").find("#redux-footer").length&&a.redux.stickyInfo(),a.redux.initFields()})}return a.redux.expandOptions(a(this).parents(".redux-container:first")),!1}),a(".saved_notice").is(":visible")&&a(".saved_notice").slideDown(),a(document.body).on("change",".redux-field input, .redux-field textarea, .redux-field select",function(){a(this).hasClass("noUpdate")||redux_change(a(this))});var b=a("#redux-footer").height();a("#redux-sticky-padder").css({height:b}),a("#redux-footer-sticky").removeClass("hide"),0!==a("#redux-footer").length&&(a(window).scroll(function(){a.redux.stickyInfo()}),a(window).resize(function(){a.redux.stickyInfo()})),a(".saved_notice").delay(4e3).slideUp()},a.redux.hideFields=function(){a("label[for='redux_hide_field']").each(function(b,c){var d=a(this).parent().parent();a(d).addClass("hidden")})},a.redux.checkRequired=function(){a.redux.required(),a("body").on("change",".redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]",function(b){a.redux.check_dependencies(this)}),a("body").on("check_dependencies",function(b,c){a.redux.check_dependencies(c)}),a("td > fieldset:empty,td > div:empty").parent().parent().hide()},a.redux.initQtip=function(){if(a().qtip){var b="",c=redux.args.hints.tip_style.shadow;c===!0&&(b="qtip-shadow");var d="",e=redux.args.hints.tip_style.color;""!==e&&(d="qtip-"+e);var f="",g=redux.args.hints.tip_style.rounded;g===!0&&(f="qtip-rounded");var h="",i=redux.args.hints.tip_style.style;""!==i&&(h="qtip-"+i);var j=b+","+d+","+f+","+h+",redux-qtip";j=j.replace(/,/g," ");var k=redux.args.hints.tip_position.my,l=redux.args.hints.tip_position.at;k=a.redux.verifyPos(k.toLowerCase(),!0),l=a.redux.verifyPos(l.toLowerCase(),!1);var m=redux.args.hints.tip_effect.show.event,n=redux.args.hints.tip_effect.hide.event,o=redux.args.hints.tip_effect.show.effect,p=redux.args.hints.tip_effect.show.duration,q=redux.args.hints.tip_effect.hide.effect,r=redux.args.hints.tip_effect.hide.duration;a("div.redux-dev-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){a(this).slideDown(500)},event:"mouseover"},hide:{effect:function(){a(this).slideUp(500)},event:"mouseleave"},style:{classes:"qtip-shadow qtip-light"},position:{my:"top center",at:"bottom center"}})}),a("div.redux-hint-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){switch(o){case"slide":a(this).slideDown(p);break;case"fade":a(this).fadeIn(p);break;default:a(this).show()}},event:m},hide:{effect:function(){switch(q){case"slide":a(this).slideUp(r);break;case"fade":a(this).fadeOut(r);break;default:a(this).show(r)}},event:n},style:{classes:j},position:{my:k,at:l}})}),a("input[qtip-content]").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:"focus",hide:"blur",style:j,position:{my:k,at:l}})})}},a.redux.tabCheck=function(){a(".redux-group-tab-link-a").click(function(){var b=a(this);if(b.parent().hasClass("empty_section")&&b.parent().hasClass("hasSubSections")){var c=a(this).closest("ul").find(".redux-group-tab-link-a"),d=c.index(this);b=c.slice(d+1,d+2)}var e=b.parents(".redux-container:first"),f=b.data("rel"),g=e.find(".redux-group-tab-link-li.active:first .redux-group-tab-link-a").data("rel");if(g!==f){if(a("#currentSection").val(f),b.parents(".postbox-container:first").length||a.cookie("redux_current_tab",f,{expires:7,path:"/"}),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length){var h=e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").attr("id").split("_");h=h[0]}if(e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu li.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a").each(function(){var b=a(this).attr("href").split("&tab=");(b[1]==f||b[1]==h)&&(a(this).addClass("current"),a(this).parent().addClass("current"))}),e.find("#"+g+"_section_group_li").find("#"+g+"_section_group_li").length)e.find("#"+g+"_section_group_li").addClass("activeChild"),e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild");else if(e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length||e.find("#"+g+"_section_group_li").parents("ul.subsection").find("#"+f+"_section_group_li").length)e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length?e.find("#"+g+"_section_group_li").addClass("activeChild").removeClass("active"):(e.find("#"+f+"_section_group_li").addClass("active"),e.find("#"+g+"_section_group_li").removeClass("active")),e.find("#"+f+"_section_group_li").removeClass("activeChild").addClass("active");else if(e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+g+"_section_group_li").find("ul.subsection").length){e.find("#"+g+"_section_group_li").find("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active").removeClass("activeChild")});var i=e.find("#"+f+"_section_group_li").parents(".hasSubSections:first");i.length>0&&(e.find("#"+f+"_section_group_li").removeClass("active"),f=i.find(".redux-group-tab-link-a:first").data("rel"),i.hasClass("empty_section")?(i.find(".subsection li:first").addClass("active"),e.find("#"+f+"_section_group_li").removeClass("active").addClass("activeChild").find("ul.subsection").slideDown(),i=i.find(".subsection li:first"),f=i.find(".redux-group-tab-link-a:first").data("rel")):e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown())}else e.find("#"+g+"_section_group_li").parents("ul.subsection").length?e.find("#"+g+"_section_group_li").parents("#"+f+"_section_group_li").length?e.find("#"+g+"_section_group_li").removeClass("active"):e.find("#"+g+"_section_group_li").parents("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+g+"_section_group_li").parents(".redux-group-tab-link-li").removeClass("active").removeClass("activeChild"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")}):(e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length&&(e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")));e.find("#"+g+"_section_group").hide(),e.find("#"+f+"_section_group").fadeIn(200,function(){0!==e.find("#redux-footer").length&&a.redux.stickyInfo(),a.redux.initFields()}),a("#toplevel_page_"+redux.args.slug).find(".current").removeClass("current")}});var b=decodeURI((new RegExp("tab=(.+?)(&|$)").exec(location.search)||[,""])[1]);""!==b?a.cookie("redux_current_tab_get")!==b&&(a.cookie("redux_current_tab",b,{expires:7,path:"/"}),a.cookie("redux_current_tab_get",b,{expires:7,path:"/"}),a("#"+b+"_section_group_li").click()):""!==a.cookie("redux_current_tab_get")&&a.removeCookie("redux_current_tab_get");var c=a("#"+a.cookie("redux_current_tab")+"_section_group_li_a");null===a.cookie("redux_current_tab")||"undefined"==typeof a.cookie("redux_current_tab")||0===c.length?a(".redux-container").find(".redux-group-tab-link-a:first").click():c.click()},a.redux.initFields=function(){a(".redux-group-tab:visible").find(".redux-field-init:visible").each(function(){var b=a(this).attr("data-type");if("undefined"!=typeof redux.field_objects&&redux.field_objects[b]&&redux.field_objects[b]&&redux.field_objects[b].init(),a(this).hasClass("redux_remove_th")){var c=a(this).parents("tr:first"),d=c.find("th:first");void 0!==d.html()&&d.html().length>0&&(a(this).prepend(d.html()),a(this).find(".redux_field_th").css("padding","0 0 10px 0")),a(this).parent().attr("colspan","2"),d.remove()}})},a.redux.notices=function(){redux.errors&&redux.errors.errors&&(a.each(redux.errors.errors,function(b,c){a.each(c.errors,function(b,c){a("#"+redux.args.opt_name+"-"+c.id).addClass("redux-field-error"),0===a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-error").length?a("#"+redux.args.opt_name+"-"+c.id).append('<div class="redux-th-error">'+c.msg+"</div>"):a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-error").html(c.msg).css("display","block")})}),a(".redux-container").each(function(){var b=a(this);b.find(".redux-menu-error").remove();var c=b.find(".redux-field-error").length;c>0&&(b.find(".redux-field-errors span").text(c),b.find(".redux-field-errors").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-error").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend('<span class="redux-menu-error">'+c+"</span>"),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasError");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasError")}}))})),redux.warnings&&redux.warnings.warnings&&(a.each(redux.warnings.warnings,function(b,c){a.each(c.warnings,function(b,c){a("#"+redux.args.opt_name+"-"+c.id).addClass("redux-field-warning"),0===a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-warning").length?a("#"+redux.args.opt_name+"-"+c.id).append('<div class="redux-th-warning">'+c.msg+"</div>"):a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-warning").html(c.msg).css("display","block")})}),a(".redux-container").each(function(){var b=a(this);b.find(".redux-menu-warning").remove();var c=b.find(".redux-field-warning").length;c>0&&(b.find(".redux-field-warnings span").text(c),b.find(".redux-field-warnings").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-warning").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend('<span class="redux-menu-warning">'+c+"</span>"),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasWarning");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasWarning")}}))}))},a.redux.tabControl=function(){a(".redux-section-tabs div").hide(),a(".redux-section-tabs div:first").show(),a(".redux-section-tabs ul li:first").addClass("active"),a(".redux-section-tabs ul li a").click(function(){a(".redux-section-tabs ul li").removeClass("active"),a(this).parent().addClass("active");var b=a(this).attr("href");return a(".redux-section-tabs div").hide(),a(b).fadeIn("medium",function(){a.redux.initFields()}),!1})},a.redux.required=function(){a.each(redux.folds,function(b,c){var d=a("#"+redux.args.opt_name+"-"+b);if(d.parents("tr:first").addClass("fold"),"hide"==c){if(d.parents("tr:first").addClass("hide"),d.hasClass("redux-container-section")){var e=a("#section-"+b);e.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).hide().addClass("hide"),e.hide().addClass("hide"))}if(d.hasClass("redux-container-info")&&a("#info-"+b).hide().addClass("hide"),
|
2 |
-
d.hasClass("redux-container-divide")&&a("#divide-"+b).hide().addClass("hide"),d.hasClass("redux-container-raw")){var f=d.parents().find("table#"+redux.args.opt_name+"-"+b);f.hide().addClass("hide")}}})},a.redux.get_container_value=function(b){var c=a("#"+redux.args.opt_name+"-"+b).serializeForm();return null!==c&&"object"==typeof c&&c.hasOwnProperty(redux.args.opt_name)&&(c=c[redux.args.opt_name][b]),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-media")&&(c=c.url),c},a.redux.check_dependencies=function(b){if(null!==redux.required){var c=a(b),d=c.parents(".redux-field:first").data("id");if(redux.required.hasOwnProperty(d)){var e=c.parents(".redux-field-container:first"),f=e.parents("tr:first").hasClass(".hide");a.each(redux.required[d],function(b,c){var d=a(this),e=!1,g=a("#"+redux.args.opt_name+"-"+b),h=g.parents("tr:first");if(f||(e=a.redux.check_parents_dependencies(b)),e===!0){if(g.hasClass("redux-container-section")){var i=a("#section-"+b);i.hasClass("redux-section-indent-start")&&i.hasClass("hide")&&(a("#section-table-"+b).fadeIn(300).removeClass("hide"),i.fadeIn(300).removeClass("hide"))}if(g.hasClass("redux-container-info")&&a("#info-"+b).fadeIn(300).removeClass("hide"),g.hasClass("redux-container-divide")&&a("#divide-"+b).fadeIn(300).removeClass("hide"),g.hasClass("redux-container-raw")){var j=g.parents().find("table#"+redux.args.opt_name+"-"+b);j.fadeIn(300).removeClass("hide")}h.fadeIn(300,function(){a(this).removeClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.check_dependencies(a("#"+redux.args.opt_name+"-"+b).children().first()),a.redux.initFields()}),(g.hasClass("redux-container-section")||g.hasClass("redux-container-info"))&&h.css({display:"none"})}else e===!1&&h.fadeOut(100,function(){a(this).addClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.required_recursive_hide(b)});d.find("select, radio, input[type=checkbox]").trigger("change")})}}},a.redux.required_recursive_hide=function(b){var c=a("#"+redux.args.opt_name+"-"+b).parents("tr:first");c.fadeOut(50,function(){if(a(this).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-section")){var c=a("#section-"+b);c.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).fadeOut(50).addClass("hide"),c.fadeOut(50).addClass("hide"))}if(a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-info")&&a("#info-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-divide")&&a("#divide-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-raw")){var d=a("#"+redux.args.opt_name+"-"+b).parents().find("table#"+redux.args.opt_name+"-"+b);d.fadeOut(50).addClass("hide")}redux.required.hasOwnProperty(b)&&a.each(redux.required[b],function(b){a.redux.required_recursive_hide(b)})})},a.redux.check_parents_dependencies=function(b){var c="";return redux.required_child.hasOwnProperty(b)?a.each(redux.required_child[b],function(b,d){if(a("#"+redux.args.opt_name+"-"+d.parent).parents("tr:first").hasClass(".hide"))c=!1;else if(c!==!1){var e=a.redux.get_container_value(d.parent);c=a.redux.check_dependencies_visibility(e,d)}}):c=!0,c},a.redux.check_dependencies_visibility=function(b,c){var d,e=!1,f=c.checkValue,g=c.operation;switch(g){case"=":case"equals":a.isArray(b)?a(b[0]).each(function(b,c){if(a.isArray(f))a(f).each(function(a,b){return c==b?(e=!0,!0):void 0});else if(c==f)return e=!0,!0}):a.isArray(f)?a(f).each(function(a,c){b==c&&(e=!0)}):b==f&&(e=!0);break;case"!=":case"not":a.isArray(b)?a(b).each(function(b,c){if(a.isArray(f))a(f).each(function(a,b){return c!=b?(e=!0,!0):void 0});else if(c!=f)return e=!0,!0}):a.isArray(f)?a(f).each(function(a,c){b!=c&&(e=!0)}):b!=f&&(e=!0);break;case">":case"greater":case"is_larger":parseFloat(b)>parseFloat(f)&&(e=!0);break;case">=":case"greater_equal":case"is_larger_equal":parseFloat(b)>=parseFloat(f)&&(e=!0);break;case"<":case"less":case"is_smaller":parseFloat(b)<parseFloat(f)&&(e=!0);break;case"<=":case"less_equal":case"is_smaller_equal":parseFloat(b)<=parseFloat(f)&&(e=!0);break;case"contains":a.isPlainObject(b)&&(d=Object.keys(b).map(function(a){return b[a]}),b=d),a.isPlainObject(f)&&(d=Object.keys(f).map(function(a){return f[a]}),f=d),a.isArray(f)?a(f).each(function(a,c){
|
1 |
+
function redux_change(a){jQuery("body").trigger("check_dependencies",a),a.hasClass("compiler")&&jQuery("#redux-compiler-hook").val(1);var b=jQuery(a).parents(".redux-container:first"),c=jQuery(a).closest(".redux-group-tab").attr("id"),d=c.split("_");d=d[0];var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".redux-group-tab-link-li:first"),f=jQuery("#"+c+"_li").parents(".hasSubSections:first");if(jQuery(a).parents("fieldset.redux-field:first").hasClass("redux-field-error")){jQuery(a).parents("fieldset.redux-field:first").removeClass("redux-field-error"),jQuery(a).parent().find(".redux-th-error").slideUp();var g=parseInt(b.find(".redux-field-errors span").text())-1;if(0>=g)jQuery("#"+c+"_li .redux-menu-error").fadeOut("fast").remove(),jQuery("#"+c+"_li .redux-group-tab-link-a").removeClass("hasError"),jQuery("#"+c+"_li").parents(".inside:first").find(".redux-field-errors").slideUp(),jQuery(a).parents(".redux-container:first").find(".redux-field-errors").slideUp(),jQuery("#redux_metaboxes_errors").slideUp();else{var h=parseInt(e.find(".redux-menu-error:first").text())-1;0>=h?e.find(".redux-menu-error:first").fadeOut().remove():e.find(".redux-menu-error:first").text(h),b.find(".redux-field-errors span").text(g)}0!==f.length&&0===f.find(".redux-menu-error").length&&f.find(".hasError").removeClass("hasError")}if(jQuery(a).parents("fieldset.redux-field:first").hasClass("redux-field-warning")){jQuery(a).parents("fieldset.redux-field:first").removeClass("redux-field-warning"),jQuery(a).parent().find(".redux-th-warning").slideUp();var i=parseInt(b.find(".redux-field-warnings span").text())-1;if(0>=i)jQuery("#"+c+"_li .redux-menu-warning").fadeOut("fast").remove(),jQuery("#"+c+"_li .redux-group-tab-link-a").removeClass("hasWarning"),jQuery("#"+c+"_li").parents(".inside:first").find(".redux-field-warnings").slideUp(),jQuery(a).parents(".redux-container:first").find(".redux-field-warnings").slideUp(),jQuery("#redux_metaboxes_warnings").slideUp();else{var j=parseInt(e.find(".redux-menu-warning:first").text())-1;0>=j?e.find(".redux-menu-warning:first").fadeOut().remove():e.find(".redux-menu-warning:first").text(j),b.find(".redux-field-warning span").text(i)}0!==f.length&&0===f.find(".redux-menu-warning").length&&f.find(".hasWarning").removeClass("hasWarning")}return b.find(".saved_notice:visible").length>0?void 0:redux.customizer?void redux.customizer.save(a,b,c):void(redux.args.disable_save_warn||(b.find(".redux-save-warn").slideDown(),window.onbeforeunload=confirmOnPageExit))}function colorValidate(a){var b=jQuery(a).val(),c=colorNameToHex(b);return c!==b.replace("#","")?c:b}function colorNameToHex(a){var b=a.replace(/^\s\s*/,"").replace(/\s\s*$/,"").replace("#",""),c={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c","indigo ":"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",redux:"#01a3e3",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};return"undefined"!==c[b.toLowerCase()]?c[b.toLowerCase()]:a}!function(a){"function"==typeof define&&define.amd?jQueryCookie.define(["jquery"],a):a(jQuery)}(function(a){function b(a){return a}function c(a){return decodeURIComponent(a.replace(e," "))}function d(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return f.json?JSON.parse(a):a}catch(b){}}var e=/\+/g,f=a.cookie=function(e,g,h){if(void 0!==g){if(h=a.extend({},f.defaults,h),"number"==typeof h.expires){var i=h.expires,j=h.expires=new Date;j.setDate(j.getDate()+i)}return g=f.json?JSON.stringify(g):String(g),document.cookie=[f.raw?e:encodeURIComponent(e),"=",f.raw?g:encodeURIComponent(g),h.expires?"; expires="+h.expires.toUTCString():"",h.path?"; path="+h.path:"",h.domain?"; domain="+h.domain:"",h.secure?"; secure":""].join("")}for(var k=f.raw?b:c,l=document.cookie.split("; "),m=e?void 0:{},n=0,o=l.length;o>n;n++){var p=l[n].split("="),q=k(p.shift()),r=k(p.join("="));if(e&&e===q){m=d(r);break}e||(m[q]=d(r))}return m};f.defaults={},a.removeCookie=function(b,c){return void 0!==a.cookie(b)?(a.cookie(b,"",a.extend({},c,{expires:-1})),!0):!1}}),function(a){a.fn.typeWatch=function(b){function c(b,c){var d=a(b.el).val();(d.length>=f.captureLength&&d.toUpperCase()!=b.text||c&&d.length>=f.captureLength)&&(b.text=d.toUpperCase(),b.cb.call(b.el,d))}function d(b){var d=b.type.toUpperCase();if(a.inArray(d,f.inputTypes)>=0){var e={timer:null,text:a(b).val().toUpperCase(),cb:f.callback,el:b,wait:f.wait};f.highlight&&a(b).focus(function(){this.select()});var g=function(b){var d=e.wait,g=!1,h=this.type.toUpperCase();"undefined"!=typeof b.keyCode&&13==b.keyCode&&"TEXTAREA"!=h&&a.inArray(h,f.inputTypes)>=0&&(d=1,g=!0);var i=function(){c(e,g)};clearTimeout(e.timer),e.timer=setTimeout(i,d)};a(b).on("keydown paste cut input",g)}}var e=["TEXT","TEXTAREA","PASSWORD","TEL","SEARCH","URL","EMAIL","DATETIME","DATE","MONTH","WEEK","TIME","DATETIME-LOCAL","NUMBER","RANGE"],f=a.extend({wait:750,callback:function(){},highlight:!0,captureLength:2,inputTypes:e},b);return this.each(function(){d(this)})}}(jQuery),function(a){a.fn.serializeForm=function(){if(this.length<1)return!1;var b={},c=b,d=':input[type!="checkbox"][type!="radio"], input:checked',e=function(){if(!this.disabled){var d=this.name.replace(/\[([^\]]+)?\]/g,",$1").split(","),e=d.length-1,f=a(this);if(d[0]){for(var g=0;e>g;g++)c=c[d[g]]=c[d[g]]||(""===d[g+1]||"0"===d[g+1]?[]:{});void 0!==c.length?c.push(f.val()):c[d[e]]=f.val(),c=b}}};return this.filter(d).each(e),this.find(d).each(e),b}}(jQuery),function(a){function b(){var a="!@#$%^&*()+=[]\\';,/{}|\":<>?~`.-_";return a+=" "}function c(){var a="¬€£¦";return a}function d(b,c,d){b.each(function(){var b=a(this);b.bind("keyup change paste",function(a){var e="";a.originalEvent&&a.originalEvent.clipboardData&&a.originalEvent.clipboardData.getData&&(e=a.originalEvent.clipboardData.getData("text/plain")),setTimeout(function(){h(b,c,d,e)},0)}),b.bind("keypress",function(a){var e=a.charCode?a.charCode:a.which;if(!(g(e)||a.ctrlKey||a.metaKey)){var f=String.fromCharCode(e),h=b.selection(),i=h.start,j=h.end,k=b.val(),l=k.substring(0,i)+f+k.substring(j),m=c(l,d);m!=l&&a.preventDefault()}})})}function e(b,c){var d=parseFloat(a(b).val()),e=a(b);return isNaN(d)?void e.val(""):(f(c.min)&&d<c.min&&e.val(""),void(f(c.max)&&d>c.max&&e.val("")))}function f(a){return!isNaN(a)}function g(a){return a>=32?!1:10==a?!1:13==a?!1:!0}function h(a,b,c,d){var e=a.val();""==e&&d.length>0&&(e=d);var f=b(e,c);if(e!=f){var g=a.alphanum_caret();a.val(f),e.length==f.length+1?a.alphanum_caret(g-1):a.alphanum_caret(g)}}function i(b,c){"undefined"==typeof c&&(c=D);var d,e={};return d="string"==typeof b?F[b]:"undefined"==typeof b?{}:b,a.extend(e,c,d),"undefined"==typeof e.blacklist&&(e.blacklistSet=x(e.allow,e.disallow)),e}function j(b){var c,d={};return c="string"==typeof b?G[b]:"undefined"==typeof b?{}:b,a.extend(d,E,c),d}function k(a,b,c){return c.maxLength&&a.length>=c.maxLength?!1:c.allow.indexOf(b)>=0?!0:c.allowSpace&&" "==b?!0:c.blacklistSet.contains(b)?!1:!c.allowNumeric&&K[b]?!1:!c.allowUpper&&u(b)?!1:!c.allowLower&&v(b)?!1:!c.allowCaseless&&w(b)?!1:!c.allowLatin&&L.contains(b)?!1:c.allowOtherCharSets?!0:K[b]||L.contains(b)?!0:!1}function l(a,b,c){if(K[b])return n(a,c)?!1:p(a,c)?!1:o(a,c)?!1:q(a+b,c)?!1:r(a+b,c)?!1:!0;if(c.allowPlus&&"+"==b&&""==a)return!0;if(c.allowMinus&&"-"==b&&""==a)return!0;if(b==I&&c.allowThouSep&&A(a,b))return!0;if(b==J){if(a.indexOf(J)>=0)return!1;if(c.allowDecSep)return!0}return!1}function m(a){return a+="",a.replace(/[^0-9]/g,"").length}function n(a,b){var c=b.maxDigits;if(""==c||isNaN(c))return!1;var d=m(a);return d>=c?!0:!1}function o(a,b){var c=b.maxDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(-1==d)return!1;var e=a.substring(d),f=m(e);return f>=c?!0:!1}function p(a,b){var c=b.maxPreDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(d>=0)return!1;var e=m(a);return e>=c?!0:!1}function q(a,b){if(!b.max||b.max<0)return!1;var c=parseFloat(a);return c>b.max?!0:!1}function r(a,b){if(!b.min||b.min>0)return!1;var c=parseFloat(a);return c<b.min?!0:!1}function s(a,b){if("string"!=typeof a)return a;var c,d=a.split(""),e=[],f=0;for(f=0;f<d.length;f++){c=d[f];var g=e.join("");k(g,c,b)&&e.push(c)}return e.join("")}function t(a,b){if("string"!=typeof a)return a;var c,d=a.split(""),e=[],f=0;for(f=0;f<d.length;f++){c=d[f];var g=e.join("");l(g,c,b)&&e.push(c)}return e.join("")}function u(a){var b=a.toUpperCase(),c=a.toLowerCase();return a==b&&b!=c?!0:!1}function v(a){var b=a.toUpperCase(),c=a.toLowerCase();return a==c&&b!=c?!0:!1}function w(a){return a.toUpperCase()==a.toLowerCase()?!0:!1}function x(a,b){var c=new B(H+b),d=new B(a),e=c.subtract(d);return e}function y(){var a,b="0123456789".split(""),c={},d=0;for(d=0;d<b.length;d++)a=b[d],c[a]=!0;return c}function z(){var a="abcdefghijklmnopqrstuvwxyz",b=a.toUpperCase(),c=new B(a+b);return c}function A(a,b){if(0==a.length)return!1;var c=a.indexOf(J);if(c>=0)return!1;var d=a.indexOf(I);if(0>d)return!0;var e=a.lastIndexOf(I),f=a.length-e-1;if(3>f)return!1;var g=m(a.substring(d));return g%3>0?!1:!0}function B(a){"string"==typeof a?this.map=C(a):this.map={}}function C(a){var b,c={},d=a.split(""),e=0;for(e=0;e<d.length;e++)b=d[e],c[b]=!0;return c}a.fn.alphanum=function(a){var b=i(a),c=this;return d(c,s,b),this},a.fn.alpha=function(a){var b=i("alpha"),c=i(a,b),e=this;return d(e,s,c),this},a.fn.numeric=function(a){var b=j(a),c=this;return d(c,t,b),c.blur(function(){e(this,a)}),this};var D={allow:"",disallow:"",allowSpace:!0,allowNumeric:!0,allowUpper:!0,allowLower:!0,allowCaseless:!0,allowLatin:!0,allowOtherCharSets:!0,maxLength:NaN},E={allowPlus:!1,allowMinus:!0,allowThouSep:!0,allowDecSep:!0,allowLeadingSpaces:!1,maxDigits:NaN,maxDecimalPlaces:NaN,maxPreDecimalPlaces:NaN,max:NaN,min:NaN},F={alpha:{allowNumeric:!1},upper:{allowNumeric:!1,allowUpper:!0,allowLower:!1,allowCaseless:!0},lower:{allowNumeric:!1,allowUpper:!1,allowLower:!0,allowCaseless:!0}},G={integer:{allowPlus:!1,allowMinus:!0,allowThouSep:!1,allowDecSep:!1},positiveInteger:{allowPlus:!1,allowMinus:!1,allowThouSep:!1,allowDecSep:!1}},H=b()+c(),I=",",J=".",K=y(),L=z();B.prototype.add=function(a){var b=this.clone();for(var c in a.map)b.map[c]=!0;return b},B.prototype.subtract=function(a){var b=this.clone();for(var c in a.map)delete b.map[c];return b},B.prototype.contains=function(a){return this.map[a]?!0:!1},B.prototype.clone=function(){var a=new B;for(var b in this.map)a.map[b]=!0;return a},a.fn.alphanum.backdoorAlphaNum=function(a,b){var c=i(b);return s(a,c)},a.fn.alphanum.backdoorNumeric=function(a,b){var c=j(b);return t(a,c)},a.fn.alphanum.setNumericSeparators=function(a){1==a.thousandsSeparator.length&&1==a.decimalSeparator.length&&(I=a.thousandsSeparator,J=a.decimalSeparator)}}(jQuery),function(a){function b(a,b){if(a.createTextRange){var c=a.createTextRange();c.move("character",b),c.select()}else null!=a.selectionStart&&(a.focus(),a.setSelectionRange(b,b))}function c(a){if("selection"in document){var b=a.createTextRange();try{b.setEndPoint("EndToStart",document.selection.createRange())}catch(c){return 0}return b.text.length}return null!=a.selectionStart?a.selectionStart:void 0}a.fn.alphanum_caret=function(d,e){return"undefined"==typeof d?c(this.get(0)):this.queue(function(c){if(isNaN(d)){var f=a(this).val().indexOf(d);e===!0?f+=d.length:"undefined"!=typeof e&&(f+=e),b(this,f)}else b(this,d);c()})}}(jQuery),function(a){var b=function(a){return a?a.ownerDocument.defaultView||a.ownerDocument.parentWindow:window},c=function(b,c){var d=a.Range.current(b).clone(),e=a.Range(b).select(b);return d.overlaps(e)?(d.compare("START_TO_START",e)<1?(startPos=0,d.move("START_TO_START",e)):(fromElementToCurrent=e.clone(),fromElementToCurrent.move("END_TO_START",d),startPos=fromElementToCurrent.toString().length),d.compare("END_TO_END",e)>=0?endPos=e.toString().length:endPos=startPos+d.toString().length,{start:startPos,end:endPos}):null},d=function(d){var e=b(d);if(void 0!==d.selectionStart)return document.activeElement&&document.activeElement!=d&&d.selectionStart==d.selectionEnd&&0==d.selectionStart?{start:d.value.length,end:d.value.length}:{start:d.selectionStart,end:d.selectionEnd};if(e.getSelection)return c(d,e);try{if("input"==d.nodeName.toLowerCase()){var f=b(d).document.selection.createRange(),g=d.createTextRange();g.setEndPoint("EndToStart",f);var h=g.text.length;return{start:h,end:h+f.text.length}}var i=c(d,e);if(!i)return i;var j=a.Range.current().clone(),k=j.clone().collapse().range,l=j.clone().collapse(!1).range;return k.moveStart("character",-1),l.moveStart("character",-1),0!=i.startPos&&""==k.text&&(i.startPos+=2),0!=i.endPos&&""==l.text&&(i.endPos+=2),i}catch(m){return{start:d.value.length,end:d.value.length}}},e=function(a,c,d){var e=b(a);if(a.setSelectionRange)void 0===d?(a.focus(),a.setSelectionRange(c,c)):(a.select(),a.selectionStart=c,a.selectionEnd=d);else if(a.createTextRange){var f=a.createTextRange();f.moveStart("character",c),d=d||c,f.moveEnd("character",d-a.value.length),f.select()}else if(e.getSelection){var h=e.document,i=e.getSelection(),j=h.createRange(),k=[c,void 0!==d?d:c];g([a],k),j.setStart(k[0].el,k[0].count),j.setEnd(k[1].el,k[1].count),i.removeAllRanges(),i.addRange(j)}else if(e.document.body.createTextRange){var j=document.body.createTextRange();j.moveToElementText(a),j.collapse(),j.moveStart("character",c),j.moveEnd("character",void 0!==d?d:c),j.select()}},f=function(a,b,c,d){"number"==typeof c[0]&&c[0]<b&&(c[0]={el:d,count:c[0]-a}),"number"==typeof c[1]&&c[1]<=b&&(c[1]={el:d,count:c[1]-a})},g=function(a,b,c){var d,e;c=c||0;for(var h=0;a[h];h++)d=a[h],3===d.nodeType||4===d.nodeType?(e=c,c+=d.nodeValue.length,f(e,c,b,d)):8!==d.nodeType&&(c=g(d.childNodes,b,c));return c};jQuery.fn.selection=function(a,b){return void 0!==a?this.each(function(){e(this,a,b)}):d(this[0])},a.fn.selection.getCharElement=g}(jQuery),function(a){"use strict";a.redux=a.redux||{},a(document).ready(function(){a.fn.isOnScreen=function(){if(window){var b=a(window),c={top:b.scrollTop()};c.right=c.left+b.width(),c.bottom=c.top+b.height();var d=this.offset();return d.right=d.left+this.outerWidth(),d.bottom=d.top+this.outerHeight(),!(c.right<d.left||c.left>d.right||c.bottom<d.top||c.top>d.bottom)}},a.redux.hideFields(),a.redux.checkRequired(),a.redux.initEvents(),a.redux.initQtip(),a.redux.tabCheck(),a.redux.notices(),a.redux.tabControl()}),a.redux.ajax_save=function(b){var c=a(document.getElementById("redux_ajax_overlay"));c.fadeIn(),jQuery(".redux-action_bar .spinner").addClass("is-active"),jQuery(".redux-action_bar input").attr("disabled","disabled");var d=jQuery(document.getElementById("redux_notification_bar"));d.slideUp(),jQuery(".redux-save-warn").slideUp(),jQuery(".redux_ajax_save_error").slideUp("medium",function(){jQuery(this).remove()});var e=jQuery(document.getElementById("redux-form-wrapper"));redux.fields.hasOwnProperty("editor")&&a.each(redux.fields.editor,function(a,b){var c=tinyMCE.get(a);c&&c.save()});var f=e.serialize();e.find("input[type=checkbox]").each(function(){if("undefined"!=typeof a(this).attr("name")){var b=a(this).is(":checked")?a(this).val():"0";f+="&"+a(this).attr("name")+"="+b}}),"redux_save"!=b.attr("name")&&(f+="&"+b.attr("name")+"="+b.val());var g=e.attr("data-nonce");return jQuery.ajax({type:"post",dataType:"json",url:ajaxurl,data:{action:redux.args.opt_name+"_ajax_save",nonce:g,opt_name:redux.args.opt_name,data:f},error:function(a){window.console||(console={}),console.log=console.log||function(a,b){},console.log(redux.ajax.console),console.log(a.responseText),jQuery(".redux-action_bar input").removeAttr("disabled"),c.fadeOut("fast"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),alert(redux.ajax.alert)},success:function(b){if(b.action&&"reload"==b.action)location.reload(!0);else if("success"==b.status){jQuery(".redux-action_bar input").removeAttr("disabled"),c.fadeOut("fast"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),redux.options=b.options,redux.errors=b.errors,redux.warnings=b.warnings,d.html(b.notification_bar).slideDown("fast"),(null!==b.errors||null!==b.warnings)&&a.redux.notices();var e=a(document.getElementById("redux_notification_bar")).find(".saved_notice");e.slideDown(),e.delay(4e3).slideUp()}else jQuery(".redux-action_bar input").removeAttr("disabled"),jQuery(".redux-action_bar .spinner").removeClass("is-active"),c.fadeOut("fast"),jQuery(".wrap h2:first").parent().append('<div class="error redux_ajax_save_error" style="display:none;"><p>'+b.status+"</p></div>"),jQuery(".redux_ajax_save_error").slideDown(),jQuery("html, body").animate({scrollTop:0},"slow")}}),!1},a.redux.initEvents=function(){a(".redux-presets-bar").on("click",function(){window.onbeforeunload=null}),a("#toplevel_page_"+redux.args.slug+" .wp-submenu a, #wp-admin-bar-"+redux.args.slug+" a.ab-item").click(function(b){if((a("#toplevel_page_"+redux.args.slug).hasClass("wp-menu-open")||a(this).hasClass("ab-item"))&&!a(this).parents("ul.ab-submenu:first").hasClass("ab-sub-secondary")&&a(this).attr("href").toLowerCase().indexOf(redux.args.slug+"&tab=")>=0){b.preventDefault();var c=a(this).attr("href").split("&tab=");return a("#"+c[1]+"_section_group_li_a").click(),a(this).parents("ul:first").find(".current").removeClass("current"),a(this).addClass("current"),a(this).parent().addClass("current"),!1}}),a(".redux-action_bar input").on("click",function(b){if(a(this).attr("name")==redux.args.opt_name+"[defaults]"){if(!confirm(redux.args.reset_confirm))return!1}else if(a(this).attr("name")==redux.args.opt_name+"[defaults-section]"&&!confirm(redux.args.reset_section_confirm))return!1;window.onbeforeunload=null,redux.args.ajax_save===!0&&(a.redux.ajax_save(a(this)),b.preventDefault())}),a(".expand_options").click(function(b){b.preventDefault();var c=a(".redux-container");if(a(c).hasClass("fully-expanded")){a(c).removeClass("fully-expanded");var d=a.cookie("redux_current_tab");a(".redux-container:first").find("#"+d+"_section_group").fadeIn(200,function(){0!==a(".redux-container:first").find("#redux-footer").length&&a.redux.stickyInfo(),a.redux.initFields()})}return a.redux.expandOptions(a(this).parents(".redux-container:first")),!1}),a(".saved_notice").is(":visible")&&a(".saved_notice").slideDown(),a(document.body).on("change",".redux-field input, .redux-field textarea, .redux-field select",function(){a(this).hasClass("noUpdate")||redux_change(a(this))});var b=a("#redux-footer").height();a("#redux-sticky-padder").css({height:b}),a("#redux-footer-sticky").removeClass("hide"),0!==a("#redux-footer").length&&(a(window).scroll(function(){a.redux.stickyInfo()}),a(window).resize(function(){a.redux.stickyInfo()})),a(".saved_notice").delay(4e3).slideUp()},a.redux.hideFields=function(){a("label[for='redux_hide_field']").each(function(b,c){var d=a(this).parent().parent();a(d).addClass("hidden")})},a.redux.checkRequired=function(){a.redux.required(),a("body").on("change",".redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]",function(b){a.redux.check_dependencies(this)}),a("body").on("check_dependencies",function(b,c){a.redux.check_dependencies(c)}),a("td > fieldset:empty,td > div:empty").parent().parent().hide()},a.redux.initQtip=function(){if(a().qtip){var b="",c=redux.args.hints.tip_style.shadow;c===!0&&(b="qtip-shadow");var d="",e=redux.args.hints.tip_style.color;""!==e&&(d="qtip-"+e);var f="",g=redux.args.hints.tip_style.rounded;g===!0&&(f="qtip-rounded");var h="",i=redux.args.hints.tip_style.style;""!==i&&(h="qtip-"+i);var j=b+","+d+","+f+","+h+",redux-qtip";j=j.replace(/,/g," ");var k=redux.args.hints.tip_position.my,l=redux.args.hints.tip_position.at;k=a.redux.verifyPos(k.toLowerCase(),!0),l=a.redux.verifyPos(l.toLowerCase(),!1);var m=redux.args.hints.tip_effect.show.event,n=redux.args.hints.tip_effect.hide.event,o=redux.args.hints.tip_effect.show.effect,p=redux.args.hints.tip_effect.show.duration,q=redux.args.hints.tip_effect.hide.effect,r=redux.args.hints.tip_effect.hide.duration;a("div.redux-dev-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){a(this).slideDown(500)},event:"mouseover"},hide:{effect:function(){a(this).slideUp(500)},event:"mouseleave"},style:{classes:"qtip-shadow qtip-light"},position:{my:"top center",at:"bottom center"}})}),a("div.redux-hint-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){switch(o){case"slide":a(this).slideDown(p);break;case"fade":a(this).fadeIn(p);break;default:a(this).show()}},event:m},hide:{effect:function(){switch(q){case"slide":a(this).slideUp(r);break;case"fade":a(this).fadeOut(r);break;default:a(this).hide(r)}},event:n},style:{classes:j},position:{my:k,at:l}})}),a("input[qtip-content]").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:"focus",hide:"blur",style:j,position:{my:k,at:l}})})}},a.redux.tabCheck=function(){a(".redux-group-tab-link-a").click(function(){var b=a(this);if(b.parent().hasClass("empty_section")&&b.parent().hasClass("hasSubSections")){var c=a(this).closest("ul").find(".redux-group-tab-link-a"),d=c.index(this);b=c.slice(d+1,d+2)}var e=b.parents(".redux-container:first"),f=b.data("rel"),g=e.find(".redux-group-tab-link-li.active:first .redux-group-tab-link-a").data("rel");if(g!==f){if(a("#currentSection").val(f),b.parents(".postbox-container:first").length||a.cookie("redux_current_tab",f,{expires:7,path:"/"}),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length){var h=e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").attr("id").split("_");h=h[0]}if(e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu li.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a").each(function(){var b=a(this).attr("href").split("&tab=");(b[1]==f||b[1]==h)&&(a(this).addClass("current"),a(this).parent().addClass("current"))}),e.find("#"+g+"_section_group_li").find("#"+g+"_section_group_li").length)e.find("#"+g+"_section_group_li").addClass("activeChild"),e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild");else if(e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length||e.find("#"+g+"_section_group_li").parents("ul.subsection").find("#"+f+"_section_group_li").length)e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length?e.find("#"+g+"_section_group_li").addClass("activeChild").removeClass("active"):(e.find("#"+f+"_section_group_li").addClass("active"),e.find("#"+g+"_section_group_li").removeClass("active")),e.find("#"+f+"_section_group_li").removeClass("activeChild").addClass("active");else if(e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+g+"_section_group_li").find("ul.subsection").length){e.find("#"+g+"_section_group_li").find("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active").removeClass("activeChild")});var i=e.find("#"+f+"_section_group_li").parents(".hasSubSections:first");i.length>0&&(e.find("#"+f+"_section_group_li").removeClass("active"),f=i.find(".redux-group-tab-link-a:first").data("rel"),i.hasClass("empty_section")?(i.find(".subsection li:first").addClass("active"),e.find("#"+f+"_section_group_li").removeClass("active").addClass("activeChild").find("ul.subsection").slideDown(),i=i.find(".subsection li:first"),f=i.find(".redux-group-tab-link-a:first").data("rel")):e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown())}else e.find("#"+g+"_section_group_li").parents("ul.subsection").length?e.find("#"+g+"_section_group_li").parents("#"+f+"_section_group_li").length?e.find("#"+g+"_section_group_li").removeClass("active"):e.find("#"+g+"_section_group_li").parents("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+g+"_section_group_li").parents(".redux-group-tab-link-li").removeClass("active").removeClass("activeChild"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")}):(e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length&&(e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")));e.find("#"+g+"_section_group").hide(),e.find("#"+f+"_section_group").fadeIn(200,function(){0!==e.find("#redux-footer").length&&a.redux.stickyInfo(),a.redux.initFields()}),a("#toplevel_page_"+redux.args.slug).find(".current").removeClass("current")}});var b=decodeURI((new RegExp("tab=(.+?)(&|$)").exec(location.search)||[,""])[1]);""!==b?a.cookie("redux_current_tab_get")!==b&&(a.cookie("redux_current_tab",b,{expires:7,path:"/"}),a.cookie("redux_current_tab_get",b,{expires:7,path:"/"}),a("#"+b+"_section_group_li").click()):""!==a.cookie("redux_current_tab_get")&&a.removeCookie("redux_current_tab_get");var c=a("#"+a.cookie("redux_current_tab")+"_section_group_li_a");null===a.cookie("redux_current_tab")||"undefined"==typeof a.cookie("redux_current_tab")||0===c.length?a(".redux-container").find(".redux-group-tab-link-a:first").click():c.click()},a.redux.initFields=function(){a(".redux-group-tab:visible").find(".redux-field-init:visible").each(function(){var b=a(this).attr("data-type");if("undefined"!=typeof redux.field_objects&&redux.field_objects[b]&&redux.field_objects[b]&&redux.field_objects[b].init(),!redux.customizer&&a(this).hasClass("redux_remove_th")){var c=a(this).parents("tr:first"),d=c.find("th:first");d.html()&&d.html().length>0&&(a(this).prepend(d.html()),a(this).find(".redux_field_th").css("padding","0 0 10px 0")),a(this).parent().attr("colspan","2"),d.remove()}})},a.redux.notices=function(){redux.errors&&redux.errors.errors&&(a.each(redux.errors.errors,function(b,c){a.each(c.errors,function(b,c){a("#"+redux.args.opt_name+"-"+c.id).addClass("redux-field-error"),0===a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-error").length?a("#"+redux.args.opt_name+"-"+c.id).append('<div class="redux-th-error">'+c.msg+"</div>"):a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-error").html(c.msg).css("display","block")})}),a(".redux-container").each(function(){var b=a(this);b.find(".redux-menu-error").remove();var c=b.find(".redux-field-error").length;c>0&&(b.find(".redux-field-errors span").text(c),b.find(".redux-field-errors").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-error").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend('<span class="redux-menu-error">'+c+"</span>"),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasError");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasError")}}))})),redux.warnings&&redux.warnings.warnings&&(a.each(redux.warnings.warnings,function(b,c){a.each(c.warnings,function(b,c){a("#"+redux.args.opt_name+"-"+c.id).addClass("redux-field-warning"),0===a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-warning").length?a("#"+redux.args.opt_name+"-"+c.id).append('<div class="redux-th-warning">'+c.msg+"</div>"):a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-warning").html(c.msg).css("display","block")})}),a(".redux-container").each(function(){var b=a(this);b.find(".redux-menu-warning").remove();var c=b.find(".redux-field-warning").length;c>0&&(b.find(".redux-field-warnings span").text(c),b.find(".redux-field-warnings").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-warning").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend('<span class="redux-menu-warning">'+c+"</span>"),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasWarning");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasWarning")}}))}))},a.redux.tabControl=function(){a(".redux-section-tabs div").hide(),a(".redux-section-tabs div:first").show(),a(".redux-section-tabs ul li:first").addClass("active"),a(".redux-section-tabs ul li a").click(function(){a(".redux-section-tabs ul li").removeClass("active"),a(this).parent().addClass("active");var b=a(this).attr("href");return a(".redux-section-tabs div").hide(),a(b).fadeIn("medium",function(){a.redux.initFields()}),!1})},a.redux.required=function(){a.each(redux.folds,function(b,c){var d=a("#"+redux.args.opt_name+"-"+b);if(d.parents("tr:first").addClass("fold"),"hide"==c){if(d.parents("tr:first").addClass("hide"),d.hasClass("redux-container-section")){var e=a("#section-"+b);e.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).hide().addClass("hide"),e.hide().addClass("hide"))}if(d.hasClass("redux-container-info")&&a("#info-"+b).hide().addClass("hide"),
|
2 |
+
d.hasClass("redux-container-divide")&&a("#divide-"+b).hide().addClass("hide"),d.hasClass("redux-container-raw")){var f=d.parents().find("table#"+redux.args.opt_name+"-"+b);f.hide().addClass("hide")}}})},a.redux.get_container_value=function(b){var c=a("#"+redux.args.opt_name+"-"+b).serializeForm();return null!==c&&"object"==typeof c&&c.hasOwnProperty(redux.args.opt_name)&&(c=c[redux.args.opt_name][b]),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-media")&&(c=c.url),c},a.redux.check_dependencies=function(b){if(null!==redux.required){var c=a(b),d=c.parents(".redux-field:first").data("id");if(redux.required.hasOwnProperty(d)){var e=c.parents(".redux-field-container:first"),f=e.parents("tr:first").hasClass(".hide");a.each(redux.required[d],function(b,c){var d=a(this),e=!1,g=a("#"+redux.args.opt_name+"-"+b),h=g.parents("tr:first");if(f||(e=a.redux.check_parents_dependencies(b)),e===!0){if(g.hasClass("redux-container-section")){var i=a("#section-"+b);i.hasClass("redux-section-indent-start")&&i.hasClass("hide")&&(a("#section-table-"+b).fadeIn(300).removeClass("hide"),i.fadeIn(300).removeClass("hide"))}if(g.hasClass("redux-container-info")&&a("#info-"+b).fadeIn(300).removeClass("hide"),g.hasClass("redux-container-divide")&&a("#divide-"+b).fadeIn(300).removeClass("hide"),g.hasClass("redux-container-raw")){var j=g.parents().find("table#"+redux.args.opt_name+"-"+b);j.fadeIn(300).removeClass("hide")}h.fadeIn(300,function(){a(this).removeClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.check_dependencies(a("#"+redux.args.opt_name+"-"+b).children().first()),a.redux.initFields()}),(g.hasClass("redux-container-section")||g.hasClass("redux-container-info"))&&h.css({display:"none"})}else e===!1&&h.fadeOut(100,function(){a(this).addClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.required_recursive_hide(b)});d.find("select, radio, input[type=checkbox]").trigger("change")})}}},a.redux.required_recursive_hide=function(b){var c=a("#"+redux.args.opt_name+"-"+b).parents("tr:first");c.fadeOut(50,function(){if(a(this).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-section")){var c=a("#section-"+b);c.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).fadeOut(50).addClass("hide"),c.fadeOut(50).addClass("hide"))}if(a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-info")&&a("#info-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-divide")&&a("#divide-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-raw")){var d=a("#"+redux.args.opt_name+"-"+b).parents().find("table#"+redux.args.opt_name+"-"+b);d.fadeOut(50).addClass("hide")}redux.required.hasOwnProperty(b)&&a.each(redux.required[b],function(b){a.redux.required_recursive_hide(b)})})},a.redux.check_parents_dependencies=function(b){var c="";return redux.required_child.hasOwnProperty(b)?a.each(redux.required_child[b],function(b,d){if(a("#"+redux.args.opt_name+"-"+d.parent).parents("tr:first").hasClass(".hide"))c=!1;else if(c!==!1){var e=a.redux.get_container_value(d.parent);c=a.redux.check_dependencies_visibility(e,d)}}):c=!0,c},a.redux.check_dependencies_visibility=function(b,c){var d,e=!1,f=c.checkValue,g=c.operation;switch(g){case"=":case"equals":a.isArray(b)?a(b[0]).each(function(b,c){if(a.isArray(f))a(f).each(function(a,b){return c==b?(e=!0,!0):void 0});else if(c==f)return e=!0,!0}):a.isArray(f)?a(f).each(function(a,c){b==c&&(e=!0)}):b==f&&(e=!0);break;case"!=":case"not":a.isArray(b)?a(b).each(function(b,c){if(a.isArray(f))a(f).each(function(a,b){return c!=b?(e=!0,!0):void 0});else if(c!=f)return e=!0,!0}):a.isArray(f)?a(f).each(function(a,c){b!=c&&(e=!0)}):b!=f&&(e=!0);break;case">":case"greater":case"is_larger":parseFloat(b)>parseFloat(f)&&(e=!0);break;case">=":case"greater_equal":case"is_larger_equal":parseFloat(b)>=parseFloat(f)&&(e=!0);break;case"<":case"less":case"is_smaller":parseFloat(b)<parseFloat(f)&&(e=!0);break;case"<=":case"less_equal":case"is_smaller_equal":parseFloat(b)<=parseFloat(f)&&(e=!0);break;case"contains":a.isPlainObject(b)&&(d=Object.keys(b).map(function(a){return b[a]}),b=d),a.isPlainObject(f)&&(d=Object.keys(f).map(function(a){return f[a]}),f=d),a.isArray(f)?a(f).each(function(a,c){-1!==b.toString().indexOf(c)&&(e=!0)}):-1!==b.toString().indexOf(f)&&(e=!0);break;case"doesnt_contain":case"not_contain":a.isPlainObject(b)&&(d=Object.keys(b).map(function(a){return b[a]}),b=d),a.isPlainObject(f)&&(d=Object.keys(f).map(function(a){return f[a]}),f=d),a.isArray(f)?a(f).each(function(a,c){-1===b.toString().indexOf(c)&&(e=!0)}):-1===b.toString().indexOf(f)&&(e=!0);break;case"is_empty_or":(""===b||b==f)&&(e=!0);break;case"not_empty_and":""!==b&&b!=f&&(e=!0);break;case"is_empty":case"empty":case"!isset":b&&""!==b&&null!==b||(e=!0);break;case"not_empty":case"!empty":case"isset":b&&""!==b&&null!==b&&(e=!0)}return e},a.redux.verifyPos=function(a,b){if(a=a.replace(/^\s+|\s+$/gm,""),""===a||-1==a.search(" "))return b===!0?"top left":"bottom right";var c=a.split(" "),d=b?"top":"bottom";("top"==c[0]||"center"==c[0]||"bottom"==c[0])&&(d=c[0]);var e=b?"left":"right";return("left"==c[1]||"center"==c[1]||"right"==c[1])&&(e=c[1]),d+" "+e},a.redux.stickyInfo=function(){var b=a(".redux-main").innerWidth()-20;a("#info_bar").isOnScreen()||a("#redux-footer-sticky").isOnScreen()?(a("#redux-footer").css({background:"#eee",position:"inherit",bottom:"inherit",width:"inherit"}),a("#redux-sticky-padder").hide(),a("#redux-footer").removeClass("sticky-footer-fixed")):(a("#redux-footer").css({position:"fixed",bottom:"0",width:b,right:21}),a("#redux-footer").addClass("sticky-footer-fixed"),a(".redux-save-warn").css("left",a("#redux-sticky").offset().left),a("#redux-sticky-padder").show()),a("#info_bar").isOnScreen()?a("#redux-sticky").removeClass("sticky-save-warn"):a("#redux-sticky").addClass("sticky-save-warn")},a.redux.expandOptions=function(b){var c=b.find(".expand_options"),d=b.find(".redux-sidebar").width()-1,e=a(".redux-group-menu .active a").data("rel")+"_section_group";return c.hasClass("expanded")?(c.removeClass("expanded"),b.find(".redux-main").removeClass("expand"),b.find(".redux-sidebar").stop().animate({"margin-left":"0px"},500),b.find(".redux-main").stop().animate({"margin-left":d},500,function(){b.find(".redux-main").attr("style","")}),b.find(".redux-group-tab").each(function(){a(this).attr("id")!==e&&a(this).fadeOut("fast")})):(c.addClass("expanded"),b.find(".redux-main").addClass("expand"),b.find(".redux-sidebar").stop().animate({"margin-left":-d-113},500),b.find(".redux-main").stop().animate({"margin-left":"-1px"},500),b.find(".redux-group-tab").fadeIn("medium",function(){a.redux.initFields()})),!1},a.redux.scaleToRatio=function(b,c,d){var e=0,f=b.attr("data-width");f||(f=b.width(),b.attr("data-width",f));var g=b.attr("data-height"),h=b.height();(!g||h>g)&&(g=h,b.attr("data-height",g),b.css("width","auto"),b.attr("data-width",b.width()),f=b.width()),f>d?(e=d/f,b.css("width",d),b.css("height",g*e),g*=e,f*=e):b.css("width","auto"),g>c?(e=c/g,b.css("height",c),b.css("width",f*e),f*=e,g*=e):b.css("height","auto");var i=(a(document.getElementById("redux-header")).height()-b.height())/2;i>0?b.css("margin-top",i):b.css("margin-top",0),a("#redux-header .redux_field_search")&&a("#redux-header .redux_field_search").css("right",a(b).width()+20)},a.redux.resizeAds=function(){var b,c=a("#redux-header");c.length?b=c.width()-c.find(".display_header").width()-30:(c=a("#customize-info"),b=c.width());var d=c.height(),e=c.find(".rAds");a(e).find("video").each(function(){a.redux.scaleToRatio(a(this),d,b)}),a(e).find("img").each(function(){a.redux.scaleToRatio(a(this),d,b)}),a(e).find("div").each(function(){a.redux.scaleToRatio(a(this),d,b)}),"-99999px"==e.css("left")&&e.css("display","none").css("left","auto"),e.fadeIn("slow")},a(document).ready(function(){redux.rAds&&setTimeout(function(){var b;a("#redux-header").length>0?(a("#redux-header").append('<div class="rAds"></div>'),b=a("#redux-header")):(a("#customize-theme-controls ul").first().prepend('<li id="redux_rAds" class="accordion-section rAdsContainer" style="position: relative;"><div class="rAds"></div></li>'),b=a("#redux_rAds")),b.css("position","relative"),b.find(".rAds").attr("style","position:absolute; top: 6px; right: 6px; display:block !important;overflow:hidden;").css("left","-99999px"),b.find(".rAds").html(redux.rAds.replace(/<br\s?\/?>/,""));var c=b.find(".rAds");b.height(),b.width()-b.find(".display_header").width()-30;c.find("a").css("float","right").css("line-height",b.height()+"px").css("margin-left","5px"),a(document).ajaxComplete(function(){c.find("a").hide(),setTimeout(function(){a.redux.resizeAds(),c.find("a").fadeIn()},1400),setTimeout(function(){a.redux.resizeAds()},1500),a(document).unbind("ajaxComplete")}),a(window).resize(function(){a.redux.resizeAds()})},400)})}(jQuery),jQuery.noConflict();var confirmOnPageExit=function(a){a=a||window.event;var b=redux.args.save_pending;return a&&(a.returnValue=b),window.onbeforeunload=null,b};
|
ReduxCore/assets/js/vendor/spectrum/redux-spectrum.js
CHANGED
@@ -54,8 +54,8 @@
|
|
54 |
return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla');
|
55 |
})(),
|
56 |
inputTypeColorSupport = (function() {
|
57 |
-
var colorInput = $("<input type='color' value='
|
58 |
-
return colorInput.type === "color" && colorInput.value !== "
|
59 |
})(),
|
60 |
replaceInput = [
|
61 |
"<div class='sp-replacer'>",
|
54 |
return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla');
|
55 |
})(),
|
56 |
inputTypeColorSupport = (function() {
|
57 |
+
var colorInput = $("<input type='color' value='#ffffff' />")[0];
|
58 |
+
return colorInput.type === "color" && colorInput.value !== "#ffffff";
|
59 |
})(),
|
60 |
replaceInput = [
|
61 |
"<div class='sp-replacer'>",
|
ReduxCore/assets/js/vendor/spectrum/redux-spectrum.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(a,b,c){function d(a,b,c,d){for(var e=[],f=0;f<a.length;f++){var g=a[f];if(g){var h=tinycolor(g),i=h.toHsl().l<.5?"sp-thumb-el sp-thumb-dark":"sp-thumb-el sp-thumb-light";i+=tinycolor.equals(b,g)?" sp-thumb-active":"";var j=h.toString(d||"rgb"),k=r?"background-color:"+h.toRgbString():"filter:"+h.toFilter();e.push('<span title="'+j+'" data-color="'+h.toRgbString()+'" class="'+i+'"><span class="sp-thumb-inner" style="'+k+';" /></span>')}else{var l="sp-clear-display";e.push('<span title="No Color Selected" data-color="" style="background-color:transparent;" class="'+l+'"></span>')}}return"<div class='sp-cf "+c+"'>"+e.join("")+"</div>"}function e(){for(var a=0;a<p.length;a++)p[a]&&p[a].hide()}function f(a,c){var d=b.extend({},o,a);return d.callbacks={move:l(d.move,c),change:l(d.change,c),show:l(d.show,c),hide:l(d.hide,c),beforeShow:l(d.beforeShow,c)},d}function g(g,j){function l(){if(T.showPaletteOnly&&(T.showPalette=!0),T.palette){la=T.palette.slice(0),ma=b.isArray(la[0])?la:[la],na={};for(var a=0;a<ma.length;a++)for(var c=0;c<ma[a].length;c++){var d=tinycolor(ma[a][c]).toRgbString();na[d]=!0}}wa.toggleClass("sp-flat",U),wa.toggleClass("sp-input-disabled",!T.showInput),wa.toggleClass("sp-alpha-enabled",T.showAlpha),wa.toggleClass("sp-clear-enabled",Wa),wa.toggleClass("sp-buttons-disabled",!T.showButtons),wa.toggleClass("sp-palette-disabled",!T.showPalette),wa.toggleClass("sp-palette-only",T.showPaletteOnly),wa.toggleClass("sp-initial-disabled",!T.showInitial),wa.addClass(T.className).addClass(T.containerClassName),O()}function o(){function a(a){return a.data&&a.data.ignore?(H(b(this).data("color")),K()):(H(b(this).data("color")),K(),N(!0),F()),!1}if(q&&wa.find("*:not(input)").attr("unselectable","on"),l(),Ma&&ua.after(Na).hide(),Wa||Ia.hide(),U)ua.after(wa).hide();else{var c="parent"===T.appendTo?ua.parent():b(T.appendTo);1!==c.length&&(c=b("body")),c.append(wa)}v(),Oa.bind("click.spectrum touchstart.spectrum",function(a){va||D(),a.stopPropagation(),b(a.target).is("input")||a.preventDefault()}),(ua.is(":disabled")||T.disabled===!0)&&S(),wa.click(k),Ea.change(C),Ea.bind("paste",function(){setTimeout(C,1)}),Ea.keydown(function(a){13==a.keyCode&&C()}),Ha.text(T.cancelText),Ha.bind("click.spectrum",function(a){a.stopPropagation(),a.preventDefault(),F("cancel")}),Ia.attr("title",T.clearText),Ia.bind("click.spectrum",function(a){a.stopPropagation(),a.preventDefault(),Va=!0,K(),U&&N(!0)}),Ja.text(T.chooseText),Ja.bind("click.spectrum",function(a){a.stopPropagation(),a.preventDefault(),J()&&(N(!0),F())}),m(Ca,function(a,b,c){ka=a/ea,Va=!1,c.shiftKey&&(ka=Math.round(10*ka)/10),K()},A,B),m(za,function(a,b){ha=parseFloat(b/ca),Va=!1,T.showAlpha||(ka=1),K()},A,B),m(xa,function(a,b,c){if(c.shiftKey){if(!sa){var d=ia*_,e=aa-ja*aa,f=Math.abs(a-d)>Math.abs(b-e);sa=f?"x":"y"}}else sa=null;var g=!sa||"x"===sa,h=!sa||"y"===sa;g&&(ia=parseFloat(a/_)),h&&(ja=parseFloat((aa-b)/aa)),Va=!1,T.showAlpha||(ka=1),K()},A,B),Qa?(H(Qa),L(),Ta=Sa||tinycolor(Qa).format,w(Qa)):L(),U&&E();var d=q?"mousedown.spectrum":"click.spectrum touchstart.spectrum";Fa.delegate(".sp-thumb-el",d,a),Ga.delegate(".sp-thumb-el:nth-child(1)",d,{ignore:!0},a)}function v(){if(W&&a.localStorage){try{var c=a.localStorage[W].split(",#");c.length>1&&(delete a.localStorage[W],b.each(c,function(a,b){w(b)}))}catch(d){}try{oa=a.localStorage[W].split(";")}catch(d){}}}function w(c){if(V){var d=tinycolor(c).toRgbString();if(!na[d]&&-1===b.inArray(d,oa))for(oa.push(d);oa.length>pa;)oa.shift();if(W&&a.localStorage)try{a.localStorage[W]=oa.join(";")}catch(e){}}}function x(){var a=[];if(T.showPalette)for(i=0;i<oa.length;i++){var b=tinycolor(oa[i]).toRgbString();na[b]||a.push(oa[i])}return a.reverse().slice(0,T.maxSelectionSize)}function y(){var a=I(),c=b.map(ma,function(b,c){return d(b,a,"sp-palette-row sp-palette-row-"+c,T.preferredFormat)});v(),oa&&c.push(d(x(),a,"sp-palette-row sp-palette-row-selection",T.preferredFormat)),Fa.html(c.join(""))}function z(){if(T.showInitial){var a=Ra,b=I();Ga.html(d([a,b],b,"sp-palette-row-initial",T.preferredFormat))}}function A(){(0>=aa||0>=_||0>=ca)&&O(),wa.addClass(qa),sa=null,ua.trigger("dragstart.spectrum",[I()])}function B(){wa.removeClass(qa),ua.trigger("dragstop.spectrum",[I()])}function C(){var a=Ea.val();if(null!==a&&""!==a||!Wa){var b=tinycolor(a);b.ok?(H(b),N(!0)):Ea.addClass("sp-validation-error")}else H(null),N(!0)}function D(){$?F():E()}function E(){var c=b.Event("beforeShow.spectrum");return $?void O():(ua.trigger(c,[I()]),void(Y.beforeShow(I())===!1||c.isDefaultPrevented()||(e(),$=!0,b(ta).bind("click.spectrum",F),b(a).bind("resize.spectrum",Z),Na.addClass("sp-active"),wa.removeClass("sp-hidden"),O(),L(),Ra=I(),z(),Y.show(Ra),ua.trigger("show.spectrum",[Ra]))))}function F(c){if((!c||"click"!=c.type||2!=c.button)&&$&&!U){$=!1,b(ta).unbind("click.spectrum",F),b(a).unbind("resize.spectrum",Z),Na.removeClass("sp-active"),wa.addClass("sp-hidden");var d=!tinycolor.equals(I(),Ra);d&&(Ua&&"cancel"!==c?N(!0):G()),Y.hide(I()),ua.trigger("hide.spectrum",[I()])}}function G(){H(Ra,!0)}function H(a,b){if(tinycolor.equals(a,I()))return void L();var c,d;!a&&Wa?Va=!0:(Va=!1,c=tinycolor(a),d=c.toHsv(),ha=d.h%360/360,ia=d.s,ja=d.v,ka=d.a),L(),c&&c.ok&&!b&&(Ta=Sa||c.format)}function I(a){return a=a||{},Wa&&Va?null:tinycolor.fromRatio({h:ha,s:ia,v:ja,a:Math.round(100*ka)/100},{format:a.format||Ta})}function J(){return!Ea.hasClass("sp-validation-error")}function K(){L(),Y.move(I()),ua.trigger("move.spectrum",[I()])}function L(){Ea.removeClass("sp-validation-error"),M();var a=tinycolor.fromRatio({h:ha,s:1,v:1});xa.css("background-color",a.toHexString());var b=Ta;1>ka&&(0!==ka||"name"!==b)&&("hex"===b||"hex3"===b||"hex6"===b||"name"===b)&&(b="rgb");var c=I({format:b}),d="";if(Pa.removeClass("sp-clear-display"),Pa.css("background-color","transparent"),!c&&Wa)Pa.addClass("sp-clear-display");else{var e=c.toHexString(),f=c.toRgbString();if(r||1===c.alpha?Pa.css("background-color",f):(Pa.css("background-color","transparent"),Pa.css("filter",c.toFilter())),T.showAlpha){var g=c.toRgb();g.a=0;var h=tinycolor(g).toRgbString(),i="linear-gradient(left, "+h+", "+e+")";q?Ba.css("filter",tinycolor(h).toFilter({gradientType:1},e)):(Ba.css("background","-webkit-"+i),Ba.css("background","-moz-"+i),Ba.css("background","-ms-"+i),Ba.css("background","linear-gradient(to right, "+h+", "+e+")"))}d=c.toString(b)}T.showInput&&Ea.val(d),T.showPalette&&y(),z()}function M(){var a=ia,b=ja;if(Wa&&Va)Da.hide(),Aa.hide(),ya.hide();else{Da.show(),Aa.show(),ya.show();var c=a*_,d=aa-b*aa;c=Math.max(-ba,Math.min(_-ba,c-ba)),d=Math.max(-ba,Math.min(aa-ba,d-ba)),ya.css({top:d+"px",left:c+"px"});var e=ka*ea;Da.css({left:e-fa/2+"px"});var f=ha*ca;Aa.css({top:f-ga+"px"})}}function N(a){var b=I(),c="",d=!tinycolor.equals(b,Ra);b&&(c=b.toString(Ta),w(b)),Ka&&ua.val(c),Ra=b,a&&d&&(Y.change(b),ua.trigger("change",[b]))}function O(){_=xa.width(),aa=xa.height(),ba=ya.height(),da=za.width(),ca=za.height(),ga=Aa.height(),ea=Ca.width(),fa=Da.width(),U||(wa.css("position","absolute"),wa.offset(h(wa,Oa))),M(),T.showPalette&&y(),ua.trigger("reflow.spectrum")}function P(){ua.show(),Oa.unbind("click.spectrum touchstart.spectrum"),wa.remove(),Na.remove(),p[Ya.id]=null}function Q(a,d){return a===c?b.extend({},T):d===c?T[a]:(T[a]=d,void l())}function R(){va=!1,ua.attr("disabled",!1),Oa.removeClass("sp-disabled")}function S(){F(),va=!0,ua.attr("disabled",!0),Oa.addClass("sp-disabled")}var T=f(j,g),U=T.flat,V=T.showSelectionPalette,W=T.localStorageKey,X=T.theme,Y=T.callbacks,Z=n(O,10),$=!1,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=1,la=[],ma=[],na={},oa=T.selectionPalette.slice(0),pa=T.maxSelectionSize,qa="sp-dragging",ra=T.inputText,sa=null,ta=g.ownerDocument,ua=(ta.body,b(g)),va=!1,wa=b(u,ta).addClass(X),xa=wa.find(".sp-color"),ya=wa.find(".sp-dragger"),za=wa.find(".sp-hue"),Aa=wa.find(".sp-slider"),Ba=wa.find(".sp-alpha-inner"),Ca=wa.find(".sp-alpha"),Da=wa.find(".sp-alpha-handle"),Ea=wa.find(".sp-input"),Fa=wa.find(".sp-palette"),Ga=wa.find(".sp-initial"),Ha=wa.find(".sp-cancel"),Ia=wa.find(".sp-clear"),Ja=wa.find(".sp-choose"),Ka=ua.is("input"),La=Ka&&s&&"color"===ua.attr("type"),Ma=Ka&&!U,Na=Ma?b(t).addClass(X).addClass(T.className).addClass(T.replacerClassName):b([]),Oa=Ma?Na:ua,Pa=Na.find(".sp-preview-inner"),Qa=T.color||Ka&&ua.val(),Ra=!1,Sa=T.preferredFormat,Ta=Sa,Ua=!T.showButtons||T.clickoutFiresChange,Va=!Qa,Wa=T.allowEmpty&&!La;if(""!==ra){var Xa=b(Oa).find("div.sp-dd");Xa.text(ra)}o();var Ya={show:E,hide:F,toggle:D,reflow:O,option:Q,enable:R,disable:S,set:function(a){H(a),N()},get:I,destroy:P,container:wa};return Ya.id=p.push(Ya)-1,Ya}function h(a,c){var d=0,e=a.outerWidth(),f=a.outerHeight(),g=c.outerHeight(),h=a[0].ownerDocument,i=h.documentElement,j=i.clientWidth+b(h).scrollLeft(),k=i.clientHeight+b(h).scrollTop(),l=c.offset();return l.top+=g,l.left-=Math.min(l.left,l.left+e>j&&j>e?Math.abs(l.left+e-j):0),l.top-=Math.min(l.top,l.top+f>k&&k>f?Math.abs(f+g-d):d),l}function j(){}function k(a){a.stopPropagation()}function l(a,b){var c=Array.prototype.slice,d=c.call(arguments,2);return function(){return a.apply(b,d.concat(c.call(arguments)))}}function m(c,d,e,f){function g(a){a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a.returnValue=!1}function h(a){if(l){if(q&&document.documentMode<9&&!a.button)return j();var b=a.originalEvent.touches,e=b?b[0].pageX:a.pageX,f=b?b[0].pageY:a.pageY,h=Math.max(0,Math.min(e-m.left,o)),i=Math.max(0,Math.min(f-m.top,n));p&&g(a),d.apply(c,[h,i,a])}}function i(a){var d=a.which?3==a.which:2==a.button;a.originalEvent.touches;d||l||e.apply(c,arguments)!==!1&&(l=!0,n=b(c).height(),o=b(c).width(),m=b(c).offset(),b(k).bind(r),b(k.body).addClass("sp-dragging"),p||h(a),g(a))}function j(){l&&(b(k).unbind(r),b(k.body).removeClass("sp-dragging"),f.apply(c,arguments)),l=!1}d=d||function(){},e=e||function(){},f=f||function(){};var k=c.ownerDocument||document,l=!1,m={},n=0,o=0,p="ontouchstart"in a,r={};r.selectstart=g,r.dragstart=g,r["touchmove mousemove"]=h,r["touchend mouseup"]=j,b(c).bind("touchstart mousedown",i)}function n(a,b,c){var d;return function(){var e=this,f=arguments,g=function(){d=null,a.apply(e,f)};c&&clearTimeout(d),(c||!d)&&(d=setTimeout(g,b))}}var o={beforeShow:j,move:j,change:j,show:j,hide:j,color:!1,flat:!1,showInput:!1,allowEmpty:!1,showButtons:!0,clickoutFiresChange:!1,showInitial:!1,showPalette:!1,showPaletteOnly:!1,showSelectionPalette:!0,localStorageKey:!1,appendTo:"body",maxSelectionSize:7,cancelText:"cancel",chooseText:"choose",clearText:"Clear Color Selection",preferredFormat:!1,className:"",containerClassName:"",replacerClassName:"",showAlpha:!1,theme:"sp-light",palette:[["#ffffff","#000000","#ff0000","#ff8000","#ffff00","#008000","#0000ff","#4b0082","#9400d3"]],selectionPalette:[],disabled:!1,inputText:""},p=[],q=!!/msie/i.exec(a.navigator.userAgent),r=function(){function a(a,b){return!!~(""+a).indexOf(b)}var b=document.createElement("div"),c=b.style;return c.cssText="background-color:rgba(0,0,0,.5)",a(c.backgroundColor,"rgba")||a(c.backgroundColor,"hsla")}(),s=function(){var a=b("<input type='color' value='!' />")[0];return"color"===a.type&&"!"!==a.value}(),t=["<div class='sp-replacer'>","<div class='sp-preview'><div class='sp-preview-inner'></div></div>","<div class='sp-dd'>▼</div>","</div>"].join(""),u=function(){var a="";if(q)for(var b=1;6>=b;b++)a+="<div class='sp-"+b+"'></div>";return["<div class='sp-container sp-hidden'>","<div class='sp-palette-container'>","<div class='sp-palette sp-thumb sp-cf'></div>","</div>","<div class='sp-picker-container'>","<div class='sp-top sp-cf'>","<div class='sp-fill'></div>","<div class='sp-top-inner'>","<div class='sp-color'>","<div class='sp-sat'>","<div class='sp-val'>","<div class='sp-dragger'></div>","</div>","</div>","</div>","<div class='sp-clear sp-clear-display'>","</div>","<div class='sp-hue'>","<div class='sp-slider'></div>",a,"</div>","</div>","<div class='sp-alpha'><div class='sp-alpha-inner'><div class='sp-alpha-handle'></div></div></div>","</div>","<div class='sp-input-container sp-cf'>","<input class='sp-input' type='text' spellcheck='false' />","</div>","<div class='sp-initial sp-thumb sp-cf'></div>","<div class='sp-button-container sp-cf'>","<a class='sp-cancel' href='#'></a>","<button type='button' class='sp-choose'></button>","</div>","</div>","</div>"].join("")}(),v="spectrum.id";b.fn.spectrum=function(a,c){if("string"==typeof a){var d=this,e=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=p[b(this).data(v)];if(c){var f=c[a];if(!f)throw new Error("Spectrum: no such method: '"+a+"'");"get"==a?d=c.get():"container"==a?d=c.container:"option"==a?d=c.option.apply(c,e):"destroy"==a?(c.destroy(),b(this).removeData(v)):f.apply(c,e)}}),d}return this.spectrum("destroy").each(function(){var c=b.extend({},a,b(this).data()),d=g(this,c);b(this).data(v,d.id)})},b.fn.spectrum.load=!0,b.fn.spectrum.loadOpts={},b.fn.spectrum.draggable=m,b.fn.spectrum.defaults=o,b.spectrum={},b.spectrum.localization={},b.spectrum.palettes={},b.fn.spectrum.processNativeColorInputs=function(){s||b("input[type=color]").spectrum({preferredFormat:"hex6"})},function(){function b(a,d){if(a=a?a:"",d=d||{},"object"==typeof a&&a.hasOwnProperty("_tc_id"))return a;var f=c(a),h=f.r,k=f.g,n=f.b,o=f.a,p=A(100*o)/100,q=d.format||f.format;return 1>h&&(h=A(h)),1>k&&(k=A(k)),1>n&&(n=A(n)),{ok:f.ok,format:q,_tc_id:y++,alpha:o,getAlpha:function(){return o},setAlpha:function(a){o=l(a),p=A(100*o)/100},toHsv:function(){var a=g(h,k,n);return{h:360*a.h,s:a.s,v:a.v,a:o}},toHsvString:function(){var a=g(h,k,n),b=A(360*a.h),c=A(100*a.s),d=A(100*a.v);return 1==o?"hsv("+b+", "+c+"%, "+d+"%)":"hsva("+b+", "+c+"%, "+d+"%, "+p+")"},toHsl:function(){var a=e(h,k,n);return{h:360*a.h,s:a.s,l:a.l,a:o}},toHslString:function(){var a=e(h,k,n),b=A(360*a.h),c=A(100*a.s),d=A(100*a.l);return 1==o?"hsl("+b+", "+c+"%, "+d+"%)":"hsla("+b+", "+c+"%, "+d+"%, "+p+")"},toHex:function(a){return i(h,k,n,a)},toHexString:function(a){return"#"+this.toHex(a)},toHex8:function(){return j(h,k,n,o)},toHex8String:function(){return"#"+this.toHex8()},toRgb:function(){return{r:A(h),g:A(k),b:A(n),a:o}},toRgbString:function(){return 1==o?"rgb("+A(h)+", "+A(k)+", "+A(n)+")":"rgba("+A(h)+", "+A(k)+", "+A(n)+", "+p+")"},toPercentageRgb:function(){return{r:A(100*m(h,255))+"%",g:A(100*m(k,255))+"%",b:A(100*m(n,255))+"%",a:o}},toPercentageRgbString:function(){return 1==o?"rgb("+A(100*m(h,255))+"%, "+A(100*m(k,255))+"%, "+A(100*m(n,255))+"%)":"rgba("+A(100*m(h,255))+"%, "+A(100*m(k,255))+"%, "+A(100*m(n,255))+"%, "+p+")"},toName:function(){return 0===o?"transparent":F[i(h,k,n,!0)]||!1},toFilter:function(a){var c="#"+j(h,k,n,o),e=c,f=d&&d.gradientType?"GradientType = 1, ":"";if(a){var g=b(a);e=g.toHex8String()}return"progid:DXImageTransform.Microsoft.gradient("+f+"startColorstr="+c+",endColorstr="+e+")"},toString:function(a){var b=!!a;a=a||this.format;var c=!1,d=!b&&1>o&&o>0,e=d&&("hex"===a||"hex6"===a||"hex3"===a||"name"===a);return"rgb"===a&&(c=this.toRgbString()),"prgb"===a&&(c=this.toPercentageRgbString()),("hex"===a||"hex6"===a)&&(c=this.toHexString()),"hex3"===a&&(c=this.toHexString(!0)),"hex8"===a&&(c=this.toHex8String()),"name"===a&&(c=this.toName()),"hsl"===a&&(c=this.toHslString()),"hsv"===a&&(c=this.toHsvString()),e?this.toRgbString():c||this.toHexString()}}}function c(a){var b={r:0,g:0,b:0},c=1,e=!1,g=!1;return"string"==typeof a&&(a=v(a)),"object"==typeof a&&(a.hasOwnProperty("r")&&a.hasOwnProperty("g")&&a.hasOwnProperty("b")?(b=d(a.r,a.g,a.b),e=!0,g="%"===String(a.r).substr(-1)?"prgb":"rgb"):a.hasOwnProperty("h")&&a.hasOwnProperty("s")&&a.hasOwnProperty("v")?(a.s=s(a.s),a.v=s(a.v),b=h(a.h,a.s,a.v),e=!0,g="hsv"):a.hasOwnProperty("h")&&a.hasOwnProperty("s")&&a.hasOwnProperty("l")&&(a.s=s(a.s),a.l=s(a.l),b=f(a.h,a.s,a.l),e=!0,g="hsl"),a.hasOwnProperty("a")&&(c=a.a)),c=l(c),{ok:e,format:a.format||g,r:B(255,C(b.r,0)),g:B(255,C(b.g,0)),b:B(255,C(b.b,0)),a:c}}function d(a,b,c){return{r:255*m(a,255),g:255*m(b,255),b:255*m(c,255)}}function e(a,b,c){a=m(a,255),b=m(b,255),c=m(c,255);var d,e,f=C(a,b,c),g=B(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{h:d,s:e,l:h}}function f(a,b,c){function d(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a}var e,f,g;if(a=m(a,360),b=m(b,100),c=m(c,100),0===b)e=f=g=c;else{var h=.5>c?c*(1+b):c+b-c*b,i=2*c-h;e=d(i,h,a+1/3),f=d(i,h,a),g=d(i,h,a-1/3)}return{r:255*e,g:255*f,b:255*g}}function g(a,b,c){a=m(a,255),b=m(b,255),c=m(c,255);var d,e,f=C(a,b,c),g=B(a,b,c),h=f,i=f-g;if(e=0===f?0:i/f,f==g)d=0;else{switch(f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{h:d,s:e,v:h}}function h(a,b,c){a=6*m(a,360),b=m(b,100),c=m(c,100);var d=z.floor(a),e=a-d,f=c*(1-b),g=c*(1-e*b),h=c*(1-(1-e)*b),i=d%6,j=[c,g,f,f,h,c][i],k=[h,c,c,g,f,f][i],l=[f,f,h,c,c,g][i];return{r:255*j,g:255*k,b:255*l}}function i(a,b,c,d){var e=[r(A(a).toString(16)),r(A(b).toString(16)),r(A(c).toString(16))];return d&&e[0].charAt(0)==e[0].charAt(1)&&e[1].charAt(0)==e[1].charAt(1)&&e[2].charAt(0)==e[2].charAt(1)?e[0].charAt(0)+e[1].charAt(0)+e[2].charAt(0):e.join("")}function j(a,b,c,d){var e=[r(t(d)),r(A(a).toString(16)),r(A(b).toString(16)),r(A(c).toString(16))];return e.join("")}function k(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[a[c]]=c);return b}function l(a){return a=parseFloat(a),(isNaN(a)||0>a||a>1)&&(a=1),a}function m(a,b){p(a)&&(a="100%");var c=q(a);return a=B(b,C(0,parseFloat(a))),c&&(a=parseInt(a*b,10)/100),z.abs(a-b)<1e-6?1:a%b/parseFloat(b)}function n(a){return B(1,C(0,a))}function o(a){return parseInt(a,16)}function p(a){return"string"==typeof a&&-1!=a.indexOf(".")&&1===parseFloat(a)}function q(a){return"string"==typeof a&&-1!=a.indexOf("%")}function r(a){return 1==a.length?"0"+a:""+a}function s(a){return 1>=a&&(a=100*a+"%"),a}function t(a){return Math.round(255*parseFloat(a)).toString(16)}function u(a){return o(a)/255}function v(a){a=a.replace(w,"").replace(x,"").toLowerCase();var b=!1;if(E[a])a=E[a],b=!0;else if("transparent"==a)return{r:0,g:0,b:0,a:0,format:"name"};var c;return(c=G.rgb.exec(a))?{r:c[1],g:c[2],b:c[3]}:(c=G.rgba.exec(a))?{r:c[1],g:c[2],b:c[3],a:c[4]}:(c=G.hsl.exec(a))?{h:c[1],s:c[2],l:c[3]}:(c=G.hsla.exec(a))?{h:c[1],s:c[2],l:c[3],a:c[4]}:(c=G.hsv.exec(a))?{h:c[1],s:c[2],v:c[3]}:(c=G.hex8.exec(a))?{a:u(c[1]),r:o(c[2]),g:o(c[3]),b:o(c[4]),format:b?"name":"hex8"}:(c=G.hex6.exec(a))?{r:o(c[1]),g:o(c[2]),b:o(c[3]),format:b?"name":"hex"}:(c=G.hex3.exec(a))?{r:o(c[1]+""+c[1]),g:o(c[2]+""+c[2]),b:o(c[3]+""+c[3]),format:b?"name":"hex"}:!1}var w=/^[\s,#]+/,x=/\s+$/,y=0,z=Math,A=z.round,B=z.min,C=z.max,D=z.random;b.fromRatio=function(a,c){if("object"==typeof a){var d={};for(var e in a)a.hasOwnProperty(e)&&("a"===e?d[e]=a[e]:d[e]=s(a[e]));a=d}return b(a,c)},b.equals=function(a,c){return a&&c?b(a).toRgbString()==b(c).toRgbString():!1},b.random=function(){return b.fromRatio({r:D(),g:D(),b:D()})},b.desaturate=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.s-=c/100,d.s=n(d.s),b(d)},b.saturate=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.s+=c/100,d.s=n(d.s),b(d)},b.greyscale=function(a){return b.desaturate(a,100)},b.lighten=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.l+=c/100,d.l=n(d.l),b(d)},b.darken=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.l-=c/100,d.l=n(d.l),b(d)},b.complement=function(a){var c=b(a).toHsl();return c.h=(c.h+180)%360,b(c)},b.triad=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+120)%360,s:c.s,l:c.l}),b({h:(d+240)%360,s:c.s,l:c.l})]},b.tetrad=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+90)%360,s:c.s,l:c.l}),b({h:(d+180)%360,s:c.s,l:c.l}),b({h:(d+270)%360,s:c.s,l:c.l})]},b.splitcomplement=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+72)%360,s:c.s,l:c.l}),b({h:(d+216)%360,s:c.s,l:c.l})]},b.analogous=function(a,c,d){c=c||6,d=d||30;var e=b(a).toHsl(),f=360/d,g=[b(a)];for(e.h=(e.h-(f*c>>1)+720)%360;--c;)e.h=(e.h+f)%360,g.push(b(e));return g},b.monochromatic=function(a,c){c=c||6;for(var d=b(a).toHsv(),e=d.h,f=d.s,g=d.v,h=[],i=1/c;c--;)h.push(b({h:e,s:f,v:g})),g=(g+i)%1;return h},b.readability=function(a,c){var d=b(a).toRgb(),e=b(c).toRgb(),f=(299*d.r+587*d.g+114*d.b)/1e3,g=(299*e.r+587*e.g+114*e.b)/1e3,h=Math.max(d.r,e.r)-Math.min(d.r,e.r)+Math.max(d.g,e.g)-Math.min(d.g,e.g)+Math.max(d.b,e.b)-Math.min(d.b,e.b);return{brightness:Math.abs(f-g),color:h}},b.readable=function(a,c){var d=b.readability(a,c);return d.brightness>125&&d.color>500},b.mostReadable=function(a,c){for(var d=null,e=0,f=!1,g=0;g<c.length;g++){var h=b.readability(a,c[g]),i=h.brightness>125&&h.color>500,j=3*(h.brightness/125)+h.color/500;(i&&!f||i&&f&&j>e||!i&&!f&&j>e)&&(f=i,e=j,d=b(c[g]))}return d};var E=b.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},F=b.hexNames=k(E),G=function(){var a="[-\\+]?\\d+%?",b="[-\\+]?\\d*\\.\\d+%?",c="(?:"+b+")|(?:"+a+")",d="[\\s|\\(]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")\\s*\\)?",e="[\\s|\\(]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")\\s*\\)?";return{rgb:new RegExp("rgb"+d),rgba:new RegExp("rgba"+e),hsl:new RegExp("hsl"+d),hsla:new RegExp("hsla"+e),hsv:new RegExp("hsv"+d),hex3:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex8:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();a.tinycolor=b}(),b(function(){b.fn.spectrum.load&&b.fn.spectrum.processNativeColorInputs()})}(window,jQuery);
|
1 |
+
!function(a,b,c){function d(a,b,c,d){for(var e=[],f=0;f<a.length;f++){var g=a[f];if(g){var h=tinycolor(g),i=h.toHsl().l<.5?"sp-thumb-el sp-thumb-dark":"sp-thumb-el sp-thumb-light";i+=tinycolor.equals(b,g)?" sp-thumb-active":"";var j=h.toString(d||"rgb"),k=r?"background-color:"+h.toRgbString():"filter:"+h.toFilter();e.push('<span title="'+j+'" data-color="'+h.toRgbString()+'" class="'+i+'"><span class="sp-thumb-inner" style="'+k+';" /></span>')}else{var l="sp-clear-display";e.push('<span title="No Color Selected" data-color="" style="background-color:transparent;" class="'+l+'"></span>')}}return"<div class='sp-cf "+c+"'>"+e.join("")+"</div>"}function e(){for(var a=0;a<p.length;a++)p[a]&&p[a].hide()}function f(a,c){var d=b.extend({},o,a);return d.callbacks={move:l(d.move,c),change:l(d.change,c),show:l(d.show,c),hide:l(d.hide,c),beforeShow:l(d.beforeShow,c)},d}function g(g,j){function l(){if(T.showPaletteOnly&&(T.showPalette=!0),T.palette){la=T.palette.slice(0),ma=b.isArray(la[0])?la:[la],na={};for(var a=0;a<ma.length;a++)for(var c=0;c<ma[a].length;c++){var d=tinycolor(ma[a][c]).toRgbString();na[d]=!0}}wa.toggleClass("sp-flat",U),wa.toggleClass("sp-input-disabled",!T.showInput),wa.toggleClass("sp-alpha-enabled",T.showAlpha),wa.toggleClass("sp-clear-enabled",Wa),wa.toggleClass("sp-buttons-disabled",!T.showButtons),wa.toggleClass("sp-palette-disabled",!T.showPalette),wa.toggleClass("sp-palette-only",T.showPaletteOnly),wa.toggleClass("sp-initial-disabled",!T.showInitial),wa.addClass(T.className).addClass(T.containerClassName),O()}function o(){function a(a){return a.data&&a.data.ignore?(H(b(this).data("color")),K()):(H(b(this).data("color")),K(),N(!0),F()),!1}if(q&&wa.find("*:not(input)").attr("unselectable","on"),l(),Ma&&ua.after(Na).hide(),Wa||Ia.hide(),U)ua.after(wa).hide();else{var c="parent"===T.appendTo?ua.parent():b(T.appendTo);1!==c.length&&(c=b("body")),c.append(wa)}v(),Oa.bind("click.spectrum touchstart.spectrum",function(a){va||D(),a.stopPropagation(),b(a.target).is("input")||a.preventDefault()}),(ua.is(":disabled")||T.disabled===!0)&&S(),wa.click(k),Ea.change(C),Ea.bind("paste",function(){setTimeout(C,1)}),Ea.keydown(function(a){13==a.keyCode&&C()}),Ha.text(T.cancelText),Ha.bind("click.spectrum",function(a){a.stopPropagation(),a.preventDefault(),F("cancel")}),Ia.attr("title",T.clearText),Ia.bind("click.spectrum",function(a){a.stopPropagation(),a.preventDefault(),Va=!0,K(),U&&N(!0)}),Ja.text(T.chooseText),Ja.bind("click.spectrum",function(a){a.stopPropagation(),a.preventDefault(),J()&&(N(!0),F())}),m(Ca,function(a,b,c){ka=a/ea,Va=!1,c.shiftKey&&(ka=Math.round(10*ka)/10),K()},A,B),m(za,function(a,b){ha=parseFloat(b/ca),Va=!1,T.showAlpha||(ka=1),K()},A,B),m(xa,function(a,b,c){if(c.shiftKey){if(!sa){var d=ia*_,e=aa-ja*aa,f=Math.abs(a-d)>Math.abs(b-e);sa=f?"x":"y"}}else sa=null;var g=!sa||"x"===sa,h=!sa||"y"===sa;g&&(ia=parseFloat(a/_)),h&&(ja=parseFloat((aa-b)/aa)),Va=!1,T.showAlpha||(ka=1),K()},A,B),Qa?(H(Qa),L(),Ta=Sa||tinycolor(Qa).format,w(Qa)):L(),U&&E();var d=q?"mousedown.spectrum":"click.spectrum touchstart.spectrum";Fa.delegate(".sp-thumb-el",d,a),Ga.delegate(".sp-thumb-el:nth-child(1)",d,{ignore:!0},a)}function v(){if(W&&a.localStorage){try{var c=a.localStorage[W].split(",#");c.length>1&&(delete a.localStorage[W],b.each(c,function(a,b){w(b)}))}catch(d){}try{oa=a.localStorage[W].split(";")}catch(d){}}}function w(c){if(V){var d=tinycolor(c).toRgbString();if(!na[d]&&-1===b.inArray(d,oa))for(oa.push(d);oa.length>pa;)oa.shift();if(W&&a.localStorage)try{a.localStorage[W]=oa.join(";")}catch(e){}}}function x(){var a=[];if(T.showPalette)for(i=0;i<oa.length;i++){var b=tinycolor(oa[i]).toRgbString();na[b]||a.push(oa[i])}return a.reverse().slice(0,T.maxSelectionSize)}function y(){var a=I(),c=b.map(ma,function(b,c){return d(b,a,"sp-palette-row sp-palette-row-"+c,T.preferredFormat)});v(),oa&&c.push(d(x(),a,"sp-palette-row sp-palette-row-selection",T.preferredFormat)),Fa.html(c.join(""))}function z(){if(T.showInitial){var a=Ra,b=I();Ga.html(d([a,b],b,"sp-palette-row-initial",T.preferredFormat))}}function A(){(0>=aa||0>=_||0>=ca)&&O(),wa.addClass(qa),sa=null,ua.trigger("dragstart.spectrum",[I()])}function B(){wa.removeClass(qa),ua.trigger("dragstop.spectrum",[I()])}function C(){var a=Ea.val();if(null!==a&&""!==a||!Wa){var b=tinycolor(a);b.ok?(H(b),N(!0)):Ea.addClass("sp-validation-error")}else H(null),N(!0)}function D(){$?F():E()}function E(){var c=b.Event("beforeShow.spectrum");return $?void O():(ua.trigger(c,[I()]),void(Y.beforeShow(I())===!1||c.isDefaultPrevented()||(e(),$=!0,b(ta).bind("click.spectrum",F),b(a).bind("resize.spectrum",Z),Na.addClass("sp-active"),wa.removeClass("sp-hidden"),O(),L(),Ra=I(),z(),Y.show(Ra),ua.trigger("show.spectrum",[Ra]))))}function F(c){if((!c||"click"!=c.type||2!=c.button)&&$&&!U){$=!1,b(ta).unbind("click.spectrum",F),b(a).unbind("resize.spectrum",Z),Na.removeClass("sp-active"),wa.addClass("sp-hidden");var d=!tinycolor.equals(I(),Ra);d&&(Ua&&"cancel"!==c?N(!0):G()),Y.hide(I()),ua.trigger("hide.spectrum",[I()])}}function G(){H(Ra,!0)}function H(a,b){if(tinycolor.equals(a,I()))return void L();var c,d;!a&&Wa?Va=!0:(Va=!1,c=tinycolor(a),d=c.toHsv(),ha=d.h%360/360,ia=d.s,ja=d.v,ka=d.a),L(),c&&c.ok&&!b&&(Ta=Sa||c.format)}function I(a){return a=a||{},Wa&&Va?null:tinycolor.fromRatio({h:ha,s:ia,v:ja,a:Math.round(100*ka)/100},{format:a.format||Ta})}function J(){return!Ea.hasClass("sp-validation-error")}function K(){L(),Y.move(I()),ua.trigger("move.spectrum",[I()])}function L(){Ea.removeClass("sp-validation-error"),M();var a=tinycolor.fromRatio({h:ha,s:1,v:1});xa.css("background-color",a.toHexString());var b=Ta;1>ka&&(0!==ka||"name"!==b)&&("hex"===b||"hex3"===b||"hex6"===b||"name"===b)&&(b="rgb");var c=I({format:b}),d="";if(Pa.removeClass("sp-clear-display"),Pa.css("background-color","transparent"),!c&&Wa)Pa.addClass("sp-clear-display");else{var e=c.toHexString(),f=c.toRgbString();if(r||1===c.alpha?Pa.css("background-color",f):(Pa.css("background-color","transparent"),Pa.css("filter",c.toFilter())),T.showAlpha){var g=c.toRgb();g.a=0;var h=tinycolor(g).toRgbString(),i="linear-gradient(left, "+h+", "+e+")";q?Ba.css("filter",tinycolor(h).toFilter({gradientType:1},e)):(Ba.css("background","-webkit-"+i),Ba.css("background","-moz-"+i),Ba.css("background","-ms-"+i),Ba.css("background","linear-gradient(to right, "+h+", "+e+")"))}d=c.toString(b)}T.showInput&&Ea.val(d),T.showPalette&&y(),z()}function M(){var a=ia,b=ja;if(Wa&&Va)Da.hide(),Aa.hide(),ya.hide();else{Da.show(),Aa.show(),ya.show();var c=a*_,d=aa-b*aa;c=Math.max(-ba,Math.min(_-ba,c-ba)),d=Math.max(-ba,Math.min(aa-ba,d-ba)),ya.css({top:d+"px",left:c+"px"});var e=ka*ea;Da.css({left:e-fa/2+"px"});var f=ha*ca;Aa.css({top:f-ga+"px"})}}function N(a){var b=I(),c="",d=!tinycolor.equals(b,Ra);b&&(c=b.toString(Ta),w(b)),Ka&&ua.val(c),Ra=b,a&&d&&(Y.change(b),ua.trigger("change",[b]))}function O(){_=xa.width(),aa=xa.height(),ba=ya.height(),da=za.width(),ca=za.height(),ga=Aa.height(),ea=Ca.width(),fa=Da.width(),U||(wa.css("position","absolute"),wa.offset(h(wa,Oa))),M(),T.showPalette&&y(),ua.trigger("reflow.spectrum")}function P(){ua.show(),Oa.unbind("click.spectrum touchstart.spectrum"),wa.remove(),Na.remove(),p[Ya.id]=null}function Q(a,d){return a===c?b.extend({},T):d===c?T[a]:(T[a]=d,void l())}function R(){va=!1,ua.attr("disabled",!1),Oa.removeClass("sp-disabled")}function S(){F(),va=!0,ua.attr("disabled",!0),Oa.addClass("sp-disabled")}var T=f(j,g),U=T.flat,V=T.showSelectionPalette,W=T.localStorageKey,X=T.theme,Y=T.callbacks,Z=n(O,10),$=!1,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=1,la=[],ma=[],na={},oa=T.selectionPalette.slice(0),pa=T.maxSelectionSize,qa="sp-dragging",ra=T.inputText,sa=null,ta=g.ownerDocument,ua=(ta.body,b(g)),va=!1,wa=b(u,ta).addClass(X),xa=wa.find(".sp-color"),ya=wa.find(".sp-dragger"),za=wa.find(".sp-hue"),Aa=wa.find(".sp-slider"),Ba=wa.find(".sp-alpha-inner"),Ca=wa.find(".sp-alpha"),Da=wa.find(".sp-alpha-handle"),Ea=wa.find(".sp-input"),Fa=wa.find(".sp-palette"),Ga=wa.find(".sp-initial"),Ha=wa.find(".sp-cancel"),Ia=wa.find(".sp-clear"),Ja=wa.find(".sp-choose"),Ka=ua.is("input"),La=Ka&&s&&"color"===ua.attr("type"),Ma=Ka&&!U,Na=Ma?b(t).addClass(X).addClass(T.className).addClass(T.replacerClassName):b([]),Oa=Ma?Na:ua,Pa=Na.find(".sp-preview-inner"),Qa=T.color||Ka&&ua.val(),Ra=!1,Sa=T.preferredFormat,Ta=Sa,Ua=!T.showButtons||T.clickoutFiresChange,Va=!Qa,Wa=T.allowEmpty&&!La;if(""!==ra){var Xa=b(Oa).find("div.sp-dd");Xa.text(ra)}o();var Ya={show:E,hide:F,toggle:D,reflow:O,option:Q,enable:R,disable:S,set:function(a){H(a),N()},get:I,destroy:P,container:wa};return Ya.id=p.push(Ya)-1,Ya}function h(a,c){var d=0,e=a.outerWidth(),f=a.outerHeight(),g=c.outerHeight(),h=a[0].ownerDocument,i=h.documentElement,j=i.clientWidth+b(h).scrollLeft(),k=i.clientHeight+b(h).scrollTop(),l=c.offset();return l.top+=g,l.left-=Math.min(l.left,l.left+e>j&&j>e?Math.abs(l.left+e-j):0),l.top-=Math.min(l.top,l.top+f>k&&k>f?Math.abs(f+g-d):d),l}function j(){}function k(a){a.stopPropagation()}function l(a,b){var c=Array.prototype.slice,d=c.call(arguments,2);return function(){return a.apply(b,d.concat(c.call(arguments)))}}function m(c,d,e,f){function g(a){a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a.returnValue=!1}function h(a){if(l){if(q&&document.documentMode<9&&!a.button)return j();var b=a.originalEvent.touches,e=b?b[0].pageX:a.pageX,f=b?b[0].pageY:a.pageY,h=Math.max(0,Math.min(e-m.left,o)),i=Math.max(0,Math.min(f-m.top,n));p&&g(a),d.apply(c,[h,i,a])}}function i(a){var d=a.which?3==a.which:2==a.button;a.originalEvent.touches;d||l||e.apply(c,arguments)!==!1&&(l=!0,n=b(c).height(),o=b(c).width(),m=b(c).offset(),b(k).bind(r),b(k.body).addClass("sp-dragging"),p||h(a),g(a))}function j(){l&&(b(k).unbind(r),b(k.body).removeClass("sp-dragging"),f.apply(c,arguments)),l=!1}d=d||function(){},e=e||function(){},f=f||function(){};var k=c.ownerDocument||document,l=!1,m={},n=0,o=0,p="ontouchstart"in a,r={};r.selectstart=g,r.dragstart=g,r["touchmove mousemove"]=h,r["touchend mouseup"]=j,b(c).bind("touchstart mousedown",i)}function n(a,b,c){var d;return function(){var e=this,f=arguments,g=function(){d=null,a.apply(e,f)};c&&clearTimeout(d),(c||!d)&&(d=setTimeout(g,b))}}var o={beforeShow:j,move:j,change:j,show:j,hide:j,color:!1,flat:!1,showInput:!1,allowEmpty:!1,showButtons:!0,clickoutFiresChange:!1,showInitial:!1,showPalette:!1,showPaletteOnly:!1,showSelectionPalette:!0,localStorageKey:!1,appendTo:"body",maxSelectionSize:7,cancelText:"cancel",chooseText:"choose",clearText:"Clear Color Selection",preferredFormat:!1,className:"",containerClassName:"",replacerClassName:"",showAlpha:!1,theme:"sp-light",palette:[["#ffffff","#000000","#ff0000","#ff8000","#ffff00","#008000","#0000ff","#4b0082","#9400d3"]],selectionPalette:[],disabled:!1,inputText:""},p=[],q=!!/msie/i.exec(a.navigator.userAgent),r=function(){function a(a,b){return!!~(""+a).indexOf(b)}var b=document.createElement("div"),c=b.style;return c.cssText="background-color:rgba(0,0,0,.5)",a(c.backgroundColor,"rgba")||a(c.backgroundColor,"hsla")}(),s=function(){var a=b("<input type='color' value='#ffffff' />")[0];return"color"===a.type&&"#ffffff"!==a.value}(),t=["<div class='sp-replacer'>","<div class='sp-preview'><div class='sp-preview-inner'></div></div>","<div class='sp-dd'>▼</div>","</div>"].join(""),u=function(){var a="";if(q)for(var b=1;6>=b;b++)a+="<div class='sp-"+b+"'></div>";return["<div class='sp-container sp-hidden'>","<div class='sp-palette-container'>","<div class='sp-palette sp-thumb sp-cf'></div>","</div>","<div class='sp-picker-container'>","<div class='sp-top sp-cf'>","<div class='sp-fill'></div>","<div class='sp-top-inner'>","<div class='sp-color'>","<div class='sp-sat'>","<div class='sp-val'>","<div class='sp-dragger'></div>","</div>","</div>","</div>","<div class='sp-clear sp-clear-display'>","</div>","<div class='sp-hue'>","<div class='sp-slider'></div>",a,"</div>","</div>","<div class='sp-alpha'><div class='sp-alpha-inner'><div class='sp-alpha-handle'></div></div></div>","</div>","<div class='sp-input-container sp-cf'>","<input class='sp-input' type='text' spellcheck='false' />","</div>","<div class='sp-initial sp-thumb sp-cf'></div>","<div class='sp-button-container sp-cf'>","<a class='sp-cancel' href='#'></a>","<button type='button' class='sp-choose'></button>","</div>","</div>","</div>"].join("")}(),v="spectrum.id";b.fn.spectrum=function(a,c){if("string"==typeof a){var d=this,e=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=p[b(this).data(v)];if(c){var f=c[a];if(!f)throw new Error("Spectrum: no such method: '"+a+"'");"get"==a?d=c.get():"container"==a?d=c.container:"option"==a?d=c.option.apply(c,e):"destroy"==a?(c.destroy(),b(this).removeData(v)):f.apply(c,e)}}),d}return this.spectrum("destroy").each(function(){var c=b.extend({},a,b(this).data()),d=g(this,c);b(this).data(v,d.id)})},b.fn.spectrum.load=!0,b.fn.spectrum.loadOpts={},b.fn.spectrum.draggable=m,b.fn.spectrum.defaults=o,b.spectrum={},b.spectrum.localization={},b.spectrum.palettes={},b.fn.spectrum.processNativeColorInputs=function(){s||b("input[type=color]").spectrum({preferredFormat:"hex6"})},function(){function b(a,d){if(a=a?a:"",d=d||{},"object"==typeof a&&a.hasOwnProperty("_tc_id"))return a;var f=c(a),h=f.r,k=f.g,n=f.b,o=f.a,p=A(100*o)/100,q=d.format||f.format;return 1>h&&(h=A(h)),1>k&&(k=A(k)),1>n&&(n=A(n)),{ok:f.ok,format:q,_tc_id:y++,alpha:o,getAlpha:function(){return o},setAlpha:function(a){o=l(a),p=A(100*o)/100},toHsv:function(){var a=g(h,k,n);return{h:360*a.h,s:a.s,v:a.v,a:o}},toHsvString:function(){var a=g(h,k,n),b=A(360*a.h),c=A(100*a.s),d=A(100*a.v);return 1==o?"hsv("+b+", "+c+"%, "+d+"%)":"hsva("+b+", "+c+"%, "+d+"%, "+p+")"},toHsl:function(){var a=e(h,k,n);return{h:360*a.h,s:a.s,l:a.l,a:o}},toHslString:function(){var a=e(h,k,n),b=A(360*a.h),c=A(100*a.s),d=A(100*a.l);return 1==o?"hsl("+b+", "+c+"%, "+d+"%)":"hsla("+b+", "+c+"%, "+d+"%, "+p+")"},toHex:function(a){return i(h,k,n,a)},toHexString:function(a){return"#"+this.toHex(a)},toHex8:function(){return j(h,k,n,o)},toHex8String:function(){return"#"+this.toHex8()},toRgb:function(){return{r:A(h),g:A(k),b:A(n),a:o}},toRgbString:function(){return 1==o?"rgb("+A(h)+", "+A(k)+", "+A(n)+")":"rgba("+A(h)+", "+A(k)+", "+A(n)+", "+p+")"},toPercentageRgb:function(){return{r:A(100*m(h,255))+"%",g:A(100*m(k,255))+"%",b:A(100*m(n,255))+"%",a:o}},toPercentageRgbString:function(){return 1==o?"rgb("+A(100*m(h,255))+"%, "+A(100*m(k,255))+"%, "+A(100*m(n,255))+"%)":"rgba("+A(100*m(h,255))+"%, "+A(100*m(k,255))+"%, "+A(100*m(n,255))+"%, "+p+")"},toName:function(){return 0===o?"transparent":F[i(h,k,n,!0)]||!1},toFilter:function(a){var c="#"+j(h,k,n,o),e=c,f=d&&d.gradientType?"GradientType = 1, ":"";if(a){var g=b(a);e=g.toHex8String()}return"progid:DXImageTransform.Microsoft.gradient("+f+"startColorstr="+c+",endColorstr="+e+")"},toString:function(a){var b=!!a;a=a||this.format;var c=!1,d=!b&&1>o&&o>0,e=d&&("hex"===a||"hex6"===a||"hex3"===a||"name"===a);return"rgb"===a&&(c=this.toRgbString()),"prgb"===a&&(c=this.toPercentageRgbString()),("hex"===a||"hex6"===a)&&(c=this.toHexString()),"hex3"===a&&(c=this.toHexString(!0)),"hex8"===a&&(c=this.toHex8String()),"name"===a&&(c=this.toName()),"hsl"===a&&(c=this.toHslString()),"hsv"===a&&(c=this.toHsvString()),e?this.toRgbString():c||this.toHexString()}}}function c(a){var b={r:0,g:0,b:0},c=1,e=!1,g=!1;return"string"==typeof a&&(a=v(a)),"object"==typeof a&&(a.hasOwnProperty("r")&&a.hasOwnProperty("g")&&a.hasOwnProperty("b")?(b=d(a.r,a.g,a.b),e=!0,g="%"===String(a.r).substr(-1)?"prgb":"rgb"):a.hasOwnProperty("h")&&a.hasOwnProperty("s")&&a.hasOwnProperty("v")?(a.s=s(a.s),a.v=s(a.v),b=h(a.h,a.s,a.v),e=!0,g="hsv"):a.hasOwnProperty("h")&&a.hasOwnProperty("s")&&a.hasOwnProperty("l")&&(a.s=s(a.s),a.l=s(a.l),b=f(a.h,a.s,a.l),e=!0,g="hsl"),a.hasOwnProperty("a")&&(c=a.a)),c=l(c),{ok:e,format:a.format||g,r:B(255,C(b.r,0)),g:B(255,C(b.g,0)),b:B(255,C(b.b,0)),a:c}}function d(a,b,c){return{r:255*m(a,255),g:255*m(b,255),b:255*m(c,255)}}function e(a,b,c){a=m(a,255),b=m(b,255),c=m(c,255);var d,e,f=C(a,b,c),g=B(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{h:d,s:e,l:h}}function f(a,b,c){function d(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a}var e,f,g;if(a=m(a,360),b=m(b,100),c=m(c,100),0===b)e=f=g=c;else{var h=.5>c?c*(1+b):c+b-c*b,i=2*c-h;e=d(i,h,a+1/3),f=d(i,h,a),g=d(i,h,a-1/3)}return{r:255*e,g:255*f,b:255*g}}function g(a,b,c){a=m(a,255),b=m(b,255),c=m(c,255);var d,e,f=C(a,b,c),g=B(a,b,c),h=f,i=f-g;if(e=0===f?0:i/f,f==g)d=0;else{switch(f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{h:d,s:e,v:h}}function h(a,b,c){a=6*m(a,360),b=m(b,100),c=m(c,100);var d=z.floor(a),e=a-d,f=c*(1-b),g=c*(1-e*b),h=c*(1-(1-e)*b),i=d%6,j=[c,g,f,f,h,c][i],k=[h,c,c,g,f,f][i],l=[f,f,h,c,c,g][i];return{r:255*j,g:255*k,b:255*l}}function i(a,b,c,d){var e=[r(A(a).toString(16)),r(A(b).toString(16)),r(A(c).toString(16))];return d&&e[0].charAt(0)==e[0].charAt(1)&&e[1].charAt(0)==e[1].charAt(1)&&e[2].charAt(0)==e[2].charAt(1)?e[0].charAt(0)+e[1].charAt(0)+e[2].charAt(0):e.join("")}function j(a,b,c,d){var e=[r(t(d)),r(A(a).toString(16)),r(A(b).toString(16)),r(A(c).toString(16))];return e.join("")}function k(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[a[c]]=c);return b}function l(a){return a=parseFloat(a),(isNaN(a)||0>a||a>1)&&(a=1),a}function m(a,b){p(a)&&(a="100%");var c=q(a);return a=B(b,C(0,parseFloat(a))),c&&(a=parseInt(a*b,10)/100),z.abs(a-b)<1e-6?1:a%b/parseFloat(b)}function n(a){return B(1,C(0,a))}function o(a){return parseInt(a,16)}function p(a){return"string"==typeof a&&-1!=a.indexOf(".")&&1===parseFloat(a)}function q(a){return"string"==typeof a&&-1!=a.indexOf("%")}function r(a){return 1==a.length?"0"+a:""+a}function s(a){return 1>=a&&(a=100*a+"%"),a}function t(a){return Math.round(255*parseFloat(a)).toString(16)}function u(a){return o(a)/255}function v(a){a=a.replace(w,"").replace(x,"").toLowerCase();var b=!1;if(E[a])a=E[a],b=!0;else if("transparent"==a)return{r:0,g:0,b:0,a:0,format:"name"};var c;return(c=G.rgb.exec(a))?{r:c[1],g:c[2],b:c[3]}:(c=G.rgba.exec(a))?{r:c[1],g:c[2],b:c[3],a:c[4]}:(c=G.hsl.exec(a))?{h:c[1],s:c[2],l:c[3]}:(c=G.hsla.exec(a))?{h:c[1],s:c[2],l:c[3],a:c[4]}:(c=G.hsv.exec(a))?{h:c[1],s:c[2],v:c[3]}:(c=G.hex8.exec(a))?{a:u(c[1]),r:o(c[2]),g:o(c[3]),b:o(c[4]),format:b?"name":"hex8"}:(c=G.hex6.exec(a))?{r:o(c[1]),g:o(c[2]),b:o(c[3]),format:b?"name":"hex"}:(c=G.hex3.exec(a))?{r:o(c[1]+""+c[1]),g:o(c[2]+""+c[2]),b:o(c[3]+""+c[3]),format:b?"name":"hex"}:!1}var w=/^[\s,#]+/,x=/\s+$/,y=0,z=Math,A=z.round,B=z.min,C=z.max,D=z.random;b.fromRatio=function(a,c){if("object"==typeof a){var d={};for(var e in a)a.hasOwnProperty(e)&&("a"===e?d[e]=a[e]:d[e]=s(a[e]));a=d}return b(a,c)},b.equals=function(a,c){return a&&c?b(a).toRgbString()==b(c).toRgbString():!1},b.random=function(){return b.fromRatio({r:D(),g:D(),b:D()})},b.desaturate=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.s-=c/100,d.s=n(d.s),b(d)},b.saturate=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.s+=c/100,d.s=n(d.s),b(d)},b.greyscale=function(a){return b.desaturate(a,100)},b.lighten=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.l+=c/100,d.l=n(d.l),b(d)},b.darken=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.l-=c/100,d.l=n(d.l),b(d)},b.complement=function(a){var c=b(a).toHsl();return c.h=(c.h+180)%360,b(c)},b.triad=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+120)%360,s:c.s,l:c.l}),b({h:(d+240)%360,s:c.s,l:c.l})]},b.tetrad=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+90)%360,s:c.s,l:c.l}),b({h:(d+180)%360,s:c.s,l:c.l}),b({h:(d+270)%360,s:c.s,l:c.l})]},b.splitcomplement=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+72)%360,s:c.s,l:c.l}),b({h:(d+216)%360,s:c.s,l:c.l})]},b.analogous=function(a,c,d){c=c||6,d=d||30;var e=b(a).toHsl(),f=360/d,g=[b(a)];for(e.h=(e.h-(f*c>>1)+720)%360;--c;)e.h=(e.h+f)%360,g.push(b(e));return g},b.monochromatic=function(a,c){c=c||6;for(var d=b(a).toHsv(),e=d.h,f=d.s,g=d.v,h=[],i=1/c;c--;)h.push(b({h:e,s:f,v:g})),g=(g+i)%1;return h},b.readability=function(a,c){var d=b(a).toRgb(),e=b(c).toRgb(),f=(299*d.r+587*d.g+114*d.b)/1e3,g=(299*e.r+587*e.g+114*e.b)/1e3,h=Math.max(d.r,e.r)-Math.min(d.r,e.r)+Math.max(d.g,e.g)-Math.min(d.g,e.g)+Math.max(d.b,e.b)-Math.min(d.b,e.b);return{brightness:Math.abs(f-g),color:h}},b.readable=function(a,c){var d=b.readability(a,c);return d.brightness>125&&d.color>500},b.mostReadable=function(a,c){for(var d=null,e=0,f=!1,g=0;g<c.length;g++){var h=b.readability(a,c[g]),i=h.brightness>125&&h.color>500,j=3*(h.brightness/125)+h.color/500;(i&&!f||i&&f&&j>e||!i&&!f&&j>e)&&(f=i,e=j,d=b(c[g]))}return d};var E=b.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},F=b.hexNames=k(E),G=function(){var a="[-\\+]?\\d+%?",b="[-\\+]?\\d*\\.\\d+%?",c="(?:"+b+")|(?:"+a+")",d="[\\s|\\(]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")\\s*\\)?",e="[\\s|\\(]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")\\s*\\)?";return{rgb:new RegExp("rgb"+d),rgba:new RegExp("rgba"+e),hsl:new RegExp("hsl"+d),hsla:new RegExp("hsla"+e),hsv:new RegExp("hsv"+d),hex3:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex8:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();a.tinycolor=b}(),b(function(){b.fn.spectrum.load&&b.fn.spectrum.processNativeColorInputs()})}(window,jQuery);
|
ReduxCore/core/enqueue.php
CHANGED
@@ -207,6 +207,15 @@
|
|
207 |
//*****************************************************************
|
208 |
// Select2 JS
|
209 |
//*****************************************************************
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
210 |
Redux_CDN::register_script(
|
211 |
'select2-js',
|
212 |
'//cdn.jsdelivr.net/select2/3.5.2/select2' . $this->min . '.js',
|
@@ -284,55 +293,59 @@
|
|
284 |
);
|
285 |
}
|
286 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
287 |
private function enqueue_fields() {
|
288 |
foreach ( $this->parent->sections as $section ) {
|
289 |
if ( isset( $section['fields'] ) ) {
|
290 |
foreach ( $section['fields'] as $field ) {
|
291 |
-
|
292 |
-
// if( isset( $field['type'] ) && $field['type'] != 'callback' ) {
|
293 |
-
if ( isset( $field['type'] ) && $field['type'] != 'callback' ) {
|
294 |
-
|
295 |
-
$field_class = 'ReduxFramework_' . $field['type'];
|
296 |
-
|
297 |
-
/**
|
298 |
-
* Field class file
|
299 |
-
* filter 'redux/{opt_name}/field/class/{field.type}
|
300 |
-
*
|
301 |
-
* @param string field class file path
|
302 |
-
* @param array $field field config data
|
303 |
-
*/
|
304 |
-
$class_file = apply_filters( "redux/{$this->parent->args['opt_name']}/field/class/{$field['type']}", ReduxFramework::$_dir . "inc/fields/{$field['type']}/field_{$field['type']}.php", $field );
|
305 |
-
if ( $class_file ) {
|
306 |
-
if ( ! class_exists( $field_class ) ) {
|
307 |
-
if ( file_exists( $class_file ) ) {
|
308 |
-
require_once $class_file;
|
309 |
-
}
|
310 |
-
}
|
311 |
-
|
312 |
-
if ( ( method_exists( $field_class, 'enqueue' ) ) || method_exists( $field_class, 'localize' ) ) {
|
313 |
-
|
314 |
-
if ( ! isset( $this->parent->options[ $field['id'] ] ) ) {
|
315 |
-
$this->parent->options[ $field['id'] ] = "";
|
316 |
-
}
|
317 |
-
$theField = new $field_class( $field, $this->parent->options[ $field['id'] ], $this->parent );
|
318 |
-
|
319 |
-
// Move dev_mode check to a new if/then block
|
320 |
-
if ( ! wp_script_is( 'redux-field-' . $field['type'] . '-js', 'enqueued' ) && class_exists( $field_class ) && method_exists( $field_class, 'enqueue' ) ) {
|
321 |
-
$theField->enqueue();
|
322 |
-
}
|
323 |
-
|
324 |
-
if ( method_exists( $field_class, 'localize' ) ) {
|
325 |
-
$params = $theField->localize( $field );
|
326 |
-
if ( ! isset( $this->parent->localize_data[ $field['type'] ] ) ) {
|
327 |
-
$this->parent->localize_data[ $field['type'] ] = array();
|
328 |
-
}
|
329 |
-
$this->parent->localize_data[ $field['type'] ][ $field['id'] ] = $theField->localize( $field );
|
330 |
-
}
|
331 |
-
|
332 |
-
unset( $theField );
|
333 |
-
}
|
334 |
-
}
|
335 |
-
}
|
336 |
}
|
337 |
}
|
338 |
}
|
207 |
//*****************************************************************
|
208 |
// Select2 JS
|
209 |
//*****************************************************************
|
210 |
+
|
211 |
+
// JWp6 plugin giving us problems. They need to update.
|
212 |
+
if ( wp_script_is ( 'jquerySelect2' )) {
|
213 |
+
wp_deregister_script( 'jquerySelect2' );
|
214 |
+
wp_dequeue_script('jquerySelect2');
|
215 |
+
wp_dequeue_style('jquerySelect2Style');
|
216 |
+
}
|
217 |
+
|
218 |
+
|
219 |
Redux_CDN::register_script(
|
220 |
'select2-js',
|
221 |
'//cdn.jsdelivr.net/select2/3.5.2/select2' . $this->min . '.js',
|
293 |
);
|
294 |
}
|
295 |
|
296 |
+
public function _enqueue_field($field) {
|
297 |
+
// TODO AFTER GROUP WORKS - Revert IF below
|
298 |
+
// if( isset( $field['type'] ) && $field['type'] != 'callback' ) {
|
299 |
+
if ( isset( $field['type'] ) && $field['type'] != 'callback' ) {
|
300 |
+
|
301 |
+
$field_class = 'ReduxFramework_' . $field['type'];
|
302 |
+
|
303 |
+
/**
|
304 |
+
* Field class file
|
305 |
+
* filter 'redux/{opt_name}/field/class/{field.type}
|
306 |
+
*
|
307 |
+
* @param string field class file path
|
308 |
+
* @param array $field field config data
|
309 |
+
*/
|
310 |
+
$class_file = apply_filters( "redux/{$this->parent->args['opt_name']}/field/class/{$field['type']}", ReduxFramework::$_dir . "inc/fields/{$field['type']}/field_{$field['type']}.php", $field );
|
311 |
+
if ( $class_file ) {
|
312 |
+
if ( ! class_exists( $field_class ) ) {
|
313 |
+
if ( file_exists( $class_file ) ) {
|
314 |
+
require_once $class_file;
|
315 |
+
}
|
316 |
+
}
|
317 |
+
|
318 |
+
if ( ( method_exists( $field_class, 'enqueue' ) ) || method_exists( $field_class, 'localize' ) ) {
|
319 |
+
|
320 |
+
if ( ! isset( $this->parent->options[ $field['id'] ] ) ) {
|
321 |
+
$this->parent->options[ $field['id'] ] = "";
|
322 |
+
}
|
323 |
+
$theField = new $field_class( $field, $this->parent->options[ $field['id'] ], $this->parent );
|
324 |
+
|
325 |
+
// Move dev_mode check to a new if/then block
|
326 |
+
if ( ! wp_script_is( 'redux-field-' . $field['type'] . '-js', 'enqueued' ) && class_exists( $field_class ) && method_exists( $field_class, 'enqueue' ) ) {
|
327 |
+
$theField->enqueue();
|
328 |
+
}
|
329 |
+
|
330 |
+
if ( method_exists( $field_class, 'localize' ) ) {
|
331 |
+
$params = $theField->localize( $field );
|
332 |
+
if ( ! isset( $this->parent->localize_data[ $field['type'] ] ) ) {
|
333 |
+
$this->parent->localize_data[ $field['type'] ] = array();
|
334 |
+
}
|
335 |
+
$this->parent->localize_data[ $field['type'] ][ $field['id'] ] = $theField->localize( $field );
|
336 |
+
}
|
337 |
+
|
338 |
+
unset( $theField );
|
339 |
+
}
|
340 |
+
}
|
341 |
+
}
|
342 |
+
}
|
343 |
+
|
344 |
private function enqueue_fields() {
|
345 |
foreach ( $this->parent->sections as $section ) {
|
346 |
if ( isset( $section['fields'] ) ) {
|
347 |
foreach ( $section['fields'] as $field ) {
|
348 |
+
$this->_enqueue_field( $field );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
349 |
}
|
350 |
}
|
351 |
}
|
ReduxCore/framework.php
CHANGED
@@ -66,8 +66,6 @@
|
|
66 |
// Welcome
|
67 |
require_once dirname( __FILE__ ) . '/inc/welcome/welcome.php';
|
68 |
|
69 |
-
//require_once dirname( __FILE__ ) . '/inc/class.redux_sass.php';
|
70 |
-
|
71 |
/**
|
72 |
* Main ReduxFramework class
|
73 |
*
|
@@ -79,7 +77,7 @@
|
|
79 |
// Please update the build number with each push, no matter how small.
|
80 |
// This will make for easier support when we ask users what version they are using.
|
81 |
|
82 |
-
public static $_version = '3.5.
|
83 |
public static $_dir;
|
84 |
public static $_url;
|
85 |
public static $_upload_dir;
|
@@ -339,7 +337,7 @@
|
|
339 |
$this->get_options();
|
340 |
|
341 |
// Tracking
|
342 |
-
if (
|
343 |
$this->_tracking();
|
344 |
}
|
345 |
|
@@ -446,9 +444,6 @@
|
|
446 |
$upload_dir = wp_upload_dir();
|
447 |
self::$_upload_dir = $upload_dir['basedir'] . '/redux/';
|
448 |
self::$_upload_url = $upload_dir['baseurl'] . '/redux/';
|
449 |
-
if ( ! is_dir( self::$_upload_dir ) && $this->args['save_defaults'] === true ) {
|
450 |
-
$this->filesystem->execute( 'mkdir', self::$_upload_dir );
|
451 |
-
}
|
452 |
}
|
453 |
|
454 |
private function set_default_args() {
|
@@ -1284,6 +1279,18 @@
|
|
1284 |
$this->args['admin_bar'] = false;
|
1285 |
$this->args['allow_sub_menu'] = false;
|
1286 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1287 |
}
|
1288 |
|
1289 |
/**
|
@@ -1653,7 +1660,7 @@
|
|
1653 |
s.parentNode.insertBefore( wf, s );
|
1654 |
})();
|
1655 |
</script>
|
1656 |
-
|
1657 |
} elseif ( ! $this->args['disable_google_fonts_link'] ) {
|
1658 |
$protocol = ( ! empty ( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ) ? "https:" : "http:";
|
1659 |
|
@@ -1677,23 +1684,6 @@
|
|
1677 |
require_once 'core/enqueue.php';
|
1678 |
$enqueue = new reduxCoreEnqueue ( $this );
|
1679 |
$enqueue->init();
|
1680 |
-
|
1681 |
-
|
1682 |
-
// if ($this->args['sass']['enabled']) {
|
1683 |
-
// $ret = reduxSassCompiler::compile_sass($this);
|
1684 |
-
//
|
1685 |
-
// if ($ret == reduxSassCompiler::SASS_FILE_COMPILE || $ret == reduxSassCompiler::SASS_NO_COMPILE) {
|
1686 |
-
// if (file_exists(ReduxFramework::$_upload_dir . $this->args['opt_name'] . '-redux.css')) {
|
1687 |
-
// wp_enqueue_style(
|
1688 |
-
// 'redux-fields-css',
|
1689 |
-
// ReduxFramework::$_upload_url . $this->args['opt_name'] . '-redux.css',
|
1690 |
-
// array(),
|
1691 |
-
// $timestamp,
|
1692 |
-
// 'all'
|
1693 |
-
// );
|
1694 |
-
// }
|
1695 |
-
// }
|
1696 |
-
// }
|
1697 |
}
|
1698 |
// _enqueue()
|
1699 |
|
@@ -1936,7 +1926,7 @@
|
|
1936 |
$hint_color = isset ( $this->args['hints']['icon_color'] ) ? $this->args['hints']['icon_color'] : '#d3d3d3';
|
1937 |
|
1938 |
// Set hint html with appropriate position css
|
1939 |
-
$hint = '<div class="redux-hint-qtip" style="float:' . $this->args['hints']['icon_position'] . '; font-size: ' . $size . '; color:' . $hint_color . '; cursor: ' . $pointer . ';" qtip-title="' . $titleParam . '" qtip-content="' . $contentParam . '"
|
1940 |
}
|
1941 |
}
|
1942 |
|
@@ -2928,7 +2918,7 @@
|
|
2928 |
|
2929 |
// Make sure 'validate field' is set to 'not_empty' or 'email_not_empty'
|
2930 |
//if ( $field['validate'] == 'not_empty' || $field['validate'] == 'email_not_empty' || $field['validate'] == 'numeric_not_empty' ) {
|
2931 |
-
if (strtolower
|
2932 |
|
2933 |
// Set the flag.
|
2934 |
$isNotEmpty = true;
|
@@ -3094,7 +3084,7 @@
|
|
3094 |
}
|
3095 |
|
3096 |
$string = "";
|
3097 |
-
if ( ( isset ( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) || ( isset ( $section['icon_type'] ) && $section['icon_type'] == 'image' ) ) {
|
3098 |
//if( !empty( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) {
|
3099 |
$icon = ( ! isset ( $section['icon'] ) ) ? '' : '<img class="image_icon_type" src="' . $section['icon'] . '" /> ';
|
3100 |
} else {
|
66 |
// Welcome
|
67 |
require_once dirname( __FILE__ ) . '/inc/welcome/welcome.php';
|
68 |
|
|
|
|
|
69 |
/**
|
70 |
* Main ReduxFramework class
|
71 |
*
|
77 |
// Please update the build number with each push, no matter how small.
|
78 |
// This will make for easier support when we ask users what version they are using.
|
79 |
|
80 |
+
public static $_version = '3.5.6';
|
81 |
public static $_dir;
|
82 |
public static $_url;
|
83 |
public static $_upload_dir;
|
337 |
$this->get_options();
|
338 |
|
339 |
// Tracking
|
340 |
+
if ( isset( $this->args['allow_tracking'] ) && $this->args['allow_tracking'] && Redux_Helpers::isTheme( __FILE__ ) ) {
|
341 |
$this->_tracking();
|
342 |
}
|
343 |
|
444 |
$upload_dir = wp_upload_dir();
|
445 |
self::$_upload_dir = $upload_dir['basedir'] . '/redux/';
|
446 |
self::$_upload_url = $upload_dir['baseurl'] . '/redux/';
|
|
|
|
|
|
|
447 |
}
|
448 |
|
449 |
private function set_default_args() {
|
1279 |
$this->args['admin_bar'] = false;
|
1280 |
$this->args['allow_sub_menu'] = false;
|
1281 |
}
|
1282 |
+
|
1283 |
+
// Check if the Airplane Mode plugin is installed
|
1284 |
+
if ( class_exists( 'Airplane_Mode_Core' ) ) {
|
1285 |
+
$airplane = Airplane_Mode_Core::getInstance();
|
1286 |
+
if ( method_exists( $airplane, 'enabled' ) ) {
|
1287 |
+
if ( $airplane->enabled() ) {
|
1288 |
+
$this->args['use_cdn'] = false;
|
1289 |
+
}
|
1290 |
+
} else if ( $airplane->check_status() == 'on' ) {
|
1291 |
+
$this->args['use_cdn'] = false;
|
1292 |
+
}
|
1293 |
+
}
|
1294 |
}
|
1295 |
|
1296 |
/**
|
1660 |
s.parentNode.insertBefore( wf, s );
|
1661 |
})();
|
1662 |
</script>
|
1663 |
+
<?php
|
1664 |
} elseif ( ! $this->args['disable_google_fonts_link'] ) {
|
1665 |
$protocol = ( ! empty ( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ) ? "https:" : "http:";
|
1666 |
|
1684 |
require_once 'core/enqueue.php';
|
1685 |
$enqueue = new reduxCoreEnqueue ( $this );
|
1686 |
$enqueue->init();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1687 |
}
|
1688 |
// _enqueue()
|
1689 |
|
1926 |
$hint_color = isset ( $this->args['hints']['icon_color'] ) ? $this->args['hints']['icon_color'] : '#d3d3d3';
|
1927 |
|
1928 |
// Set hint html with appropriate position css
|
1929 |
+
$hint = '<div class="redux-hint-qtip" style="float:' . $this->args['hints']['icon_position'] . '; font-size: ' . $size . '; color:' . $hint_color . '; cursor: ' . $pointer . ';" qtip-title="' . $titleParam . '" qtip-content="' . $contentParam . '"> <i class="' . ( isset( $this->args['hints']['icon'] ) ? $this->args['hints']['icon'] : '' ) . '"></i></div>';
|
1930 |
}
|
1931 |
}
|
1932 |
|
2918 |
|
2919 |
// Make sure 'validate field' is set to 'not_empty' or 'email_not_empty'
|
2920 |
//if ( $field['validate'] == 'not_empty' || $field['validate'] == 'email_not_empty' || $field['validate'] == 'numeric_not_empty' ) {
|
2921 |
+
if ( strtolower( substr( $field['validate'], - 9 ) ) == 'not_empty' ) {
|
2922 |
|
2923 |
// Set the flag.
|
2924 |
$isNotEmpty = true;
|
3084 |
}
|
3085 |
|
3086 |
$string = "";
|
3087 |
+
if ( ( ( isset ( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) || ( isset ( $section['icon_type'] ) && $section['icon_type'] == 'image' ) ) || ( strpos( $section['icon'], '/' ) !== false ) ) {
|
3088 |
//if( !empty( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) {
|
3089 |
$icon = ( ! isset ( $section['icon'] ) ) ? '' : '<img class="image_icon_type" src="' . $section['icon'] . '" /> ';
|
3090 |
} else {
|
ReduxCore/inc/class.p.php
CHANGED
@@ -244,13 +244,13 @@
|
|
244 |
$status = array( 'http_code' => 'ERROR' );
|
245 |
}
|
246 |
|
247 |
-
if ( isset( $response['headers']['content-type'] ) ) {
|
248 |
header( 'Content-Type: ' . $response['headers']['content-type'] );
|
249 |
}
|
250 |
-
if ( isset( $response['headers']['content-language'] ) ) {
|
251 |
header( 'Content-Language: ' . $response['headers']['content-language'] );
|
252 |
}
|
253 |
-
if ( isset( $response['headers']['set-cookie'] ) ) {
|
254 |
header( 'Set-Cookie: ' . $response['headers']['set-cookie'] );
|
255 |
}
|
256 |
|
244 |
$status = array( 'http_code' => 'ERROR' );
|
245 |
}
|
246 |
|
247 |
+
if ( ! is_wp_error( $response ) && isset( $response['headers']['content-type'] ) ) {
|
248 |
header( 'Content-Type: ' . $response['headers']['content-type'] );
|
249 |
}
|
250 |
+
if ( ! is_wp_error( $response ) && isset( $response['headers']['content-language'] ) ) {
|
251 |
header( 'Content-Language: ' . $response['headers']['content-language'] );
|
252 |
}
|
253 |
+
if ( ! is_wp_error( $response ) && isset( $response['headers']['set-cookie'] ) ) {
|
254 |
header( 'Set-Cookie: ' . $response['headers']['set-cookie'] );
|
255 |
}
|
256 |
|
ReduxCore/inc/class.redux_api.php
CHANGED
@@ -157,7 +157,7 @@
|
|
157 |
$section['fields'] = self::constructFields( $opt_name, $section_id );
|
158 |
$p = $section['priority'];
|
159 |
while ( isset( $sections[ $p ] ) ) {
|
160 |
-
|
161 |
}
|
162 |
$sections[ $p ] = $section;
|
163 |
}
|
@@ -369,7 +369,7 @@
|
|
369 |
unset( self::$fields[ $opt_name ][ $id ] );
|
370 |
continue;
|
371 |
}
|
372 |
-
if ( $priority != "" ) {
|
373 |
$newPriority = $field['priority'];
|
374 |
$field['priority'] = $priority;
|
375 |
self::$fields[ $opt_name ][ $key ] = $field;
|
157 |
$section['fields'] = self::constructFields( $opt_name, $section_id );
|
158 |
$p = $section['priority'];
|
159 |
while ( isset( $sections[ $p ] ) ) {
|
160 |
+
$p++;
|
161 |
}
|
162 |
$sections[ $p ] = $section;
|
163 |
}
|
369 |
unset( self::$fields[ $opt_name ][ $id ] );
|
370 |
continue;
|
371 |
}
|
372 |
+
if ( isset( $priority ) && $priority != "" ) {
|
373 |
$newPriority = $field['priority'];
|
374 |
$field['priority'] = $priority;
|
375 |
self::$fields[ $opt_name ][ $key ] = $field;
|
ReduxCore/inc/class.redux_filesystem.php
CHANGED
@@ -119,6 +119,10 @@
|
|
119 |
extract( $params );
|
120 |
}
|
121 |
|
|
|
|
|
|
|
|
|
122 |
// Setup the filesystem with creds
|
123 |
require_once ABSPATH . '/wp-admin/includes/template.php';
|
124 |
require_once ABSPATH . '/wp-admin/includes/file.php';
|
119 |
extract( $params );
|
120 |
}
|
121 |
|
122 |
+
if ( ! is_dir( ReduxFramework::$_upload_dir ) ) {
|
123 |
+
wp_mkdir_p( ReduxFramework::$_upload_dir );
|
124 |
+
}
|
125 |
+
|
126 |
// Setup the filesystem with creds
|
127 |
require_once ABSPATH . '/wp-admin/includes/template.php';
|
128 |
require_once ABSPATH . '/wp-admin/includes/file.php';
|
ReduxCore/inc/class.redux_sass.php
DELETED
@@ -1,265 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
4 |
-
exit;
|
5 |
-
}
|
6 |
-
|
7 |
-
if ( ! class_exists( 'reduxSassCompiler' ) ) {
|
8 |
-
class reduxSassCompiler {
|
9 |
-
public static $path = array();
|
10 |
-
public static $import = array();
|
11 |
-
public static $_do_compile = false;
|
12 |
-
public static $parent;
|
13 |
-
|
14 |
-
private static $matrix_file = '';
|
15 |
-
private static $matrix_key = '';
|
16 |
-
|
17 |
-
const SASS_NO_COMPILE = 0;
|
18 |
-
const SASS_FILE_COMPILE = 1;
|
19 |
-
const SASS_PAGE_OUTPUT = 2;
|
20 |
-
|
21 |
-
private static function is_sass_dir( $dir ) {
|
22 |
-
if ( ! is_dir( $dir ) ) {
|
23 |
-
wp_mkdir_p( $dir );
|
24 |
-
|
25 |
-
if ( is_dir( $dir ) ) {
|
26 |
-
return true;
|
27 |
-
} else {
|
28 |
-
return false;
|
29 |
-
}
|
30 |
-
} else {
|
31 |
-
return true;
|
32 |
-
}
|
33 |
-
}
|
34 |
-
|
35 |
-
public static function get_current_id_matrix( $parent ) {
|
36 |
-
self::$parent = $parent;
|
37 |
-
if ( $parent->args['sass']['enabled'] && ! $parent->args['sass']['page_output'] ) {
|
38 |
-
$ids = '';
|
39 |
-
|
40 |
-
foreach ( $parent->options as $id => $opts ) {
|
41 |
-
$ids .= $id . '|';
|
42 |
-
}
|
43 |
-
|
44 |
-
$ids = rtrim( $ids, '|' );
|
45 |
-
|
46 |
-
return $ids;
|
47 |
-
}
|
48 |
-
}
|
49 |
-
|
50 |
-
public static function get_id_matrix() {
|
51 |
-
if ( ! file_exists( self::$matrix_file ) ) {
|
52 |
-
$ids = get_option( self::$matrix_key );
|
53 |
-
} else {
|
54 |
-
$ids = self::$parent->filesystem->execute( 'get_contents', self::$matrix_file );
|
55 |
-
}
|
56 |
-
|
57 |
-
return $ids;
|
58 |
-
}
|
59 |
-
|
60 |
-
public static function set_id_matrix( $ids ) {
|
61 |
-
$ret = self::$parent->filesystem->execute( 'put_contents', self::$matrix_file, array( 'content' => $ids ) );
|
62 |
-
|
63 |
-
if ( $ret == false ) {
|
64 |
-
return update_option( self::$matrix_key, $ids );
|
65 |
-
}
|
66 |
-
}
|
67 |
-
|
68 |
-
public static function add_path( $path ) {
|
69 |
-
if ( ! in_array( $path, self::$path ) ) {
|
70 |
-
array_push( self::$path, $path );
|
71 |
-
}
|
72 |
-
}
|
73 |
-
|
74 |
-
public static function add_import( $import ) {
|
75 |
-
if ( ! in_array( $import, self::$import ) ) {
|
76 |
-
array_push( self::$import, $import );
|
77 |
-
}
|
78 |
-
}
|
79 |
-
|
80 |
-
public static function is_scss_newer( $dir, $filename ) {
|
81 |
-
$css_time = filemtime( $dir . '/' . $filename . '.css' );
|
82 |
-
$scss_time = filemtime( $dir . '/' . $filename . '.scss' );
|
83 |
-
|
84 |
-
if ( $scss_time > $css_time ) {
|
85 |
-
echo 'css: ' . $css_time . '<br>';
|
86 |
-
echo 'scss: ' . $scss_time . '<br>';
|
87 |
-
|
88 |
-
return true;
|
89 |
-
}
|
90 |
-
|
91 |
-
return false;
|
92 |
-
}
|
93 |
-
|
94 |
-
public static function compile_sass( $parent ) {
|
95 |
-
if ( ! empty( self::$path ) ) {
|
96 |
-
self::$parent = $parent;
|
97 |
-
$do_compile = false;
|
98 |
-
$as_output = false;
|
99 |
-
|
100 |
-
if ( ! self::is_sass_dir( ReduxFramework::$_upload_dir . 'sass' ) ) {
|
101 |
-
$as_output = true;
|
102 |
-
}
|
103 |
-
|
104 |
-
if ( $parent->args['sass']['page_output'] ) {
|
105 |
-
$as_output = true;
|
106 |
-
}
|
107 |
-
|
108 |
-
$mb = $parent->extensions['metaboxes'];
|
109 |
-
if ( ! empty( $mb->boxes ) ) {
|
110 |
-
$as_output = true;
|
111 |
-
}
|
112 |
-
|
113 |
-
$opt_name = $parent->args['opt_name'];
|
114 |
-
|
115 |
-
self::$matrix_file = ReduxFramework::$_upload_dir . 'sass/' . $opt_name . '-id-matrix';
|
116 |
-
self::$matrix_key = 'redux-sass-' . $opt_name . '-id-matrix';
|
117 |
-
|
118 |
-
if ( ! $as_output ) {
|
119 |
-
$current_ids = self::get_current_id_matrix( $parent );
|
120 |
-
$saved_ids = self::get_id_matrix();
|
121 |
-
|
122 |
-
if ( $saved_ids == '' || empty( $saved_ids ) ) {
|
123 |
-
$ret = self::set_id_matrix( $current_ids );
|
124 |
-
$do_compile = true;
|
125 |
-
} else {
|
126 |
-
if ( $current_ids != $saved_ids ) {
|
127 |
-
logconsole( 'not the same' );
|
128 |
-
self::set_id_matrix( $current_ids );
|
129 |
-
$do_compile = true;
|
130 |
-
} else {
|
131 |
-
logconsole( 'the same' );
|
132 |
-
}
|
133 |
-
}
|
134 |
-
} else {
|
135 |
-
$do_compile = true;
|
136 |
-
}
|
137 |
-
|
138 |
-
if ( $do_compile || self::$_do_compile ) {
|
139 |
-
logconsole( 'compiler run' );
|
140 |
-
if ( ! class_exists( 'scssc' ) && ! isset( $GLOBALS['redux_scss_compiler'] ) ) {
|
141 |
-
$GLOBALS['redux_scss_compiler'] = true;
|
142 |
-
require_once "scssphp/scss.inc.php";
|
143 |
-
}
|
144 |
-
|
145 |
-
$scss = new scssc();
|
146 |
-
$scss::$parent = self::$parent;
|
147 |
-
|
148 |
-
$scss->setImportPaths( self::$path );
|
149 |
-
|
150 |
-
if ( ! $parent->args['dev_mode'] ) {
|
151 |
-
$scss->setFormatter( "scss_formatter_compressed" );
|
152 |
-
}
|
153 |
-
|
154 |
-
$new_css = '';
|
155 |
-
|
156 |
-
foreach ( self::$import as $import ) {
|
157 |
-
$new_css .= $scss->compile( $import );
|
158 |
-
}
|
159 |
-
|
160 |
-
unset ( $scss );
|
161 |
-
|
162 |
-
if ( $new_css != '' ) {
|
163 |
-
if ( $as_output ) {
|
164 |
-
self::css_to_page( $opt_name, $new_css );
|
165 |
-
|
166 |
-
return self::SASS_PAGE_OUTPUT;
|
167 |
-
} else {
|
168 |
-
$css_file = Redux_Helpers::cleanFilePath( ReduxFramework::$_upload_dir . $parent->args['opt_name'] . '-redux.css' );
|
169 |
-
|
170 |
-
|
171 |
-
$ret = self::$parent->filesystem->execute( 'put_contents', $css_file, array( 'content' => $new_css ) );
|
172 |
-
|
173 |
-
if ( $ret == false ) {
|
174 |
-
self::css_to_page( $opt_name, $new_css );
|
175 |
-
|
176 |
-
return self::SASS_PAGE_OUTPUT;
|
177 |
-
}
|
178 |
-
|
179 |
-
return self::SASS_FILE_COMPILE;
|
180 |
-
}
|
181 |
-
}
|
182 |
-
} // do_compile
|
183 |
-
}
|
184 |
-
|
185 |
-
return self::SASS_NO_COMPILE;
|
186 |
-
}
|
187 |
-
|
188 |
-
private static function css_to_page( $opt_name, $css ) {
|
189 |
-
echo '<style type="text/css" id="redux-' . esc_attr( $opt_name ) . '">' . wp_kses( $css, array(), array() ) . '</style>';
|
190 |
-
}
|
191 |
-
|
192 |
-
public static function compile_single_field( $parent, $scss_path, $filename ) {
|
193 |
-
self::$parent = $parent;
|
194 |
-
echo 'single field compile: ' . $scss_path . ' ' . $filename;
|
195 |
-
|
196 |
-
if ( ! class_exists( 'scssc' ) && ! isset( $GLOBALS['redux_scss_compiler'] ) ) {
|
197 |
-
$GLOBALS['redux_scss_compiler'] = true;
|
198 |
-
require_once "scssphp/scss.inc.php";
|
199 |
-
}
|
200 |
-
|
201 |
-
$scss = new scssc();
|
202 |
-
|
203 |
-
$scss->setImportPaths( $scss_path );
|
204 |
-
|
205 |
-
if ( ! $parent->args['dev_mode'] ) {
|
206 |
-
$scss->setFormatter( "scss_formatter_compressed" );
|
207 |
-
}
|
208 |
-
|
209 |
-
$new_css = $scss->compile( '@import "' . $filename . '.scss"' );
|
210 |
-
|
211 |
-
unset ( $scss );
|
212 |
-
|
213 |
-
self::$parent->filesystem->execute( 'put_contents', $scss_path . '/' . $filename . '.css', array( 'content' => $new_css ) );
|
214 |
-
}
|
215 |
-
}
|
216 |
-
}
|
217 |
-
|
218 |
-
if ( ! function_exists( 'redux_enqueue_style' ) ) {
|
219 |
-
/**
|
220 |
-
* Enqueues style for SASS comnpile or WP enqueue, depending on 'use_sass' arg.
|
221 |
-
*
|
222 |
-
* @since 3.3.9
|
223 |
-
* @access public
|
224 |
-
*
|
225 |
-
* @param string $handle Name of the stylesheet.
|
226 |
-
* @param string $css_src Path to the stylesheet from the root directory of WordPress. Example: '/css/mystyle.css'.
|
227 |
-
* @param string $scss_dir Directory path to SCSS file.
|
228 |
-
* @param array $deps An array of registered style handles this stylesheet depends on. Default empty array.
|
229 |
-
* @param string $ver String specifying the stylesheet version number, if it has one. This parameter is used to ensure that the correct version is sent to the client regardless of caching, and so should be included if a version number is available and makes sense for the stylesheet.
|
230 |
-
* @param string $media Optional. The media for which this stylesheet has been defined. Default 'all'. Accepts 'all', 'aural', 'braille', 'handheld', 'projection', 'print', 'screen', 'tty', or 'tv'.
|
231 |
-
*
|
232 |
-
* @return void
|
233 |
-
*/
|
234 |
-
function redux_enqueue_style( $parent, $handle, $css_src, $scss_dir, $deps = array(), $ver = '', $media = false ) {
|
235 |
-
if ( $parent->args['sass']['enabled'] ) {
|
236 |
-
self::$parent = $parent;
|
237 |
-
//if ($parent->args['dev_mode'] || $parent->args['sass']['page_output']) {
|
238 |
-
$path_parts = pathinfo( $css_src );
|
239 |
-
|
240 |
-
$filename = $path_parts['filename'];
|
241 |
-
//echo $filename . '<br>';
|
242 |
-
$scss_dir = Redux_Helpers::cleanFilePath( $scss_dir );
|
243 |
-
$scss_dir = untrailingslashit( $scss_dir );
|
244 |
-
|
245 |
-
$is_diff = reduxSassCompiler::is_scss_newer( $scss_dir, $filename );
|
246 |
-
|
247 |
-
if ( $is_diff ) {
|
248 |
-
reduxSassCompiler::compile_single_field( $parent, $scss_dir, $filename );
|
249 |
-
reduxSassCompiler::$_do_compile = true;
|
250 |
-
}
|
251 |
-
|
252 |
-
reduxSassCompiler::add_path( $scss_dir );
|
253 |
-
reduxSassCompiler::add_import( '@import "' . $filename . '.scss"' );
|
254 |
-
//}
|
255 |
-
} else {
|
256 |
-
wp_enqueue_style(
|
257 |
-
$handle,
|
258 |
-
$css_src,
|
259 |
-
$deps,
|
260 |
-
$ver,
|
261 |
-
$media
|
262 |
-
);
|
263 |
-
}
|
264 |
-
}
|
265 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ReduxCore/inc/extensions/customizer/extension_customizer.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
.redux-section p.customize-section-description{margin-top:22px;word-break:break-word}.redux-section p.customize-section-description.legacy{margin-top:7px}.control-section-themes .accordion-section-title{margin:0}#customize-controls .customize-info{margin-bottom:0}#customize-controls .redux-section .accordion-section-content{background:#FCFCFC}.redux-section .accordion-section-title i,.redux-field .accordion-field-title i,.redux-panel .accordion-section-title i{margin-right:5px}.accordion-section.redux-main{background:inherit;margin-left:inherit;border-left:inherit;-moz-box-shadow:inherit;-webkit-box-shadow:inherit;padding:inherit;box-shadow:inherit}.redux_field_th{padding:13px 0px 0px 0px}.redux-main .redux-field-container{padding:10px 0}.redux-main .select_wrapper{float:none;width:100%;display:inline-block}.redux-main .select2-container{margin-right:0 !important;margin-bottom:5px !important;width:100% !important}.redux-main .select_wrapper:nth-child(odd){margin-right:0}.redux-main .redux-option-image{max-width:42% !important;margin-right:3%}.redux-main .customize-control{border-bottom:1px solid #ddd;padding-bottom:4px}.redux-main .customize-control:last-child{border-bottom:0;padding-bottom:0}.redux-main .upload{width:100% !important}.redux-main h3{margin-top:inherit}.redux-main .redux-container-raw{margin-top:22px;word-break:break-word;padding:0 !important}.redux-main .redux-container-password input{width:100%}.select2-drop{z-index:999999}.rAdsContainer{line-height:0;border:0}.rAds{position:inherit !important;right:0 !important;top:0 !important;bottom:0 !important;left:0 !important;text-align:center;margin-bottom:0;line-height:0;-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.rAds img{-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.admin-color-fresh #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-fresh #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-fresh #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-fresh #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#0073aa}.admin-color-fresh #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-fresh #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-fresh #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-fresh #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-fresh #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-fresh #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-fresh #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-fresh #customize-theme-controls .redux-section .customize-section-back:hover{background:#0073aa;color:#fff}.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#a3b745}.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-ectoplasm #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-ectoplasm #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-ectoplasm #customize-theme-controls .redux-section .customize-section-back:hover{background:#a3b745;color:#fff}.admin-color-light #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-light #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-light #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-light #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#888}.admin-color-light #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-light #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-light #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-light #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-light #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-light #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-light #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-light #customize-theme-controls .redux-section .customize-section-back:hover{background:#888;color:#fff}.admin-color-blue #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-blue #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-blue #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-blue #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#096484}.admin-color-blue #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-blue #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-blue #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-blue #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-blue #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-blue #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-blue #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-blue #customize-theme-controls .redux-section .customize-section-back:hover{background:#096484;color:#fff}.admin-color-coffee #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-coffee #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-coffee #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-coffee #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#c7a589}.admin-color-coffee #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-coffee #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-coffee #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-coffee #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-coffee #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-coffee #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-coffee #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-coffee #customize-theme-controls .redux-section .customize-section-back:hover{background:#c7a589;color:#fff}.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#523f6d}.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-ectoplasm #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-ectoplasm #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-ectoplasm #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-ectoplasm #customize-theme-controls .redux-section .customize-section-back:hover{background:#523f6d;color:#fff}.admin-color-midnight #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-midnight #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-midnight #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-midnight #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#e14d43}.admin-color-midnight #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-midnight #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-midnight #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-midnight #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-midnight #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-midnight #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-midnight #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-midnight #customize-theme-controls .redux-section .customize-section-back:hover{background:#e14d43;color:#fff}.admin-color-ocean #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-ocean #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-ocean #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-ocean #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#9ebaa0}.admin-color-ocean #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-ocean #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-ocean #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-ocean #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-ocean #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-ocean #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-ocean #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-ocean #customize-theme-controls .redux-section .customize-section-back:hover{background:#9ebaa0;color:#fff}.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title,.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover,.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title,.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus{color:#fff;background:#cf4944}.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux:hover>h3.accordion-section-title:after,.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:hover:after,.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux.open h3.accordion-section-title:after,.admin-color-sunrise #customize-theme-controls .control-section.control-section-redux h3.accordion-section-title:focus:after,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux:hover>h3.accordion-section-title:after,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:hover:after,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux.open h3.accordion-section-title:after,.admin-color-sunrise #customize-theme-controls .control-panel.control-panel-redux h3.accordion-section-title:focus:after{color:#fff}.admin-color-sunrise #customize-theme-controls .control-section.control-panel.control-panel-redux>.accordion-section-title:after{background:transparent;border-left:none}.admin-color-sunrise #customize-theme-controls .control-panel-redux .customize-panel-back:hover,.admin-color-sunrise #customize-theme-controls .redux-section .customize-section-back:hover{background:#cf4944;color:#fff}
|
ReduxCore/inc/extensions/customizer/extension_customizer.js
ADDED
@@ -0,0 +1,361 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* global redux, setting */
|
2 |
+
|
3 |
+
/*!
|
4 |
+
SerializeJSON jQuery plugin.
|
5 |
+
https://github.com/marioizquierdo/jquery.serializeJSON
|
6 |
+
version 2.6.0 (Apr, 2015)
|
7 |
+
|
8 |
+
Copyright (c) 2012, 2015 Mario Izquierdo
|
9 |
+
Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
|
10 |
+
and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
|
11 |
+
*/
|
12 |
+
(function( $ ) {
|
13 |
+
"use strict";
|
14 |
+
|
15 |
+
// jQuery('form').serializeJSON()
|
16 |
+
$.fn.serializeJSON = function( options ) {
|
17 |
+
var serializedObject, formAsArray, keys, type, value, _ref, f, opts;
|
18 |
+
f = $.serializeJSON;
|
19 |
+
opts = f.setupOpts( options ); // calculate values for options {parseNumbers, parseBoolens, parseNulls}
|
20 |
+
formAsArray = this.serializeArray(); // array of objects {name, value}
|
21 |
+
f.readCheckboxUncheckedValues( formAsArray, this, opts ); // add {name, value} of unchecked checkboxes if needed
|
22 |
+
|
23 |
+
serializedObject = {};
|
24 |
+
$.each(
|
25 |
+
formAsArray, function( i, input ) {
|
26 |
+
keys = f.splitInputNameIntoKeysArray( input.name, opts );
|
27 |
+
type = keys.pop(); // the last element is always the type ("string" by default)
|
28 |
+
if ( type !== 'skip' ) { // easy way to skip a value
|
29 |
+
value = f.parseValue( input.value, type, opts ); // string, number, boolean or null
|
30 |
+
if ( opts.parseWithFunction && type === '_' ) value = opts.parseWithFunction( value, input.name ); // allow for custom parsing
|
31 |
+
f.deepSet( serializedObject, keys, value, opts );
|
32 |
+
}
|
33 |
+
}
|
34 |
+
);
|
35 |
+
return serializedObject;
|
36 |
+
};
|
37 |
+
|
38 |
+
// Use $.serializeJSON as namespace for the auxiliar functions
|
39 |
+
// and to define defaults
|
40 |
+
$.serializeJSON = {
|
41 |
+
|
42 |
+
defaultOptions: {
|
43 |
+
checkboxUncheckedValue: undefined, // to include that value for unchecked checkboxes (instead of ignoring them)
|
44 |
+
|
45 |
+
parseNumbers: false, // convert values like "1", "-2.33" to 1, -2.33
|
46 |
+
parseBooleans: false, // convert "true", "false" to true, false
|
47 |
+
parseNulls: false, // convert "null" to null
|
48 |
+
parseAll: false, // all of the above
|
49 |
+
parseWithFunction: null, // to use custom parser, a function like: function(val){ return parsed_val; }
|
50 |
+
|
51 |
+
customTypes: {}, // override defaultTypes
|
52 |
+
defaultTypes: {
|
53 |
+
string: function( str ) {
|
54 |
+
return String( str )
|
55 |
+
},
|
56 |
+
number: function( str ) {
|
57 |
+
return Number( str )
|
58 |
+
},
|
59 |
+
boolean: function( str ) {
|
60 |
+
return (["false", "null", "undefined", "", "0"].indexOf( str ) === -1)
|
61 |
+
},
|
62 |
+
null: function( str ) {
|
63 |
+
return (["false", "null", "undefined", "", "0"].indexOf( str ) !== -1) ? null : str
|
64 |
+
},
|
65 |
+
array: function( str ) {
|
66 |
+
return JSON.parse( str )
|
67 |
+
},
|
68 |
+
object: function( str ) {
|
69 |
+
return JSON.parse( str )
|
70 |
+
},
|
71 |
+
auto: function( str ) {
|
72 |
+
return $.serializeJSON.parseValue(
|
73 |
+
str, null, {parseNumbers: true, parseBooleans: true, parseNulls: true}
|
74 |
+
)
|
75 |
+
} // try again with something like "parseAll"
|
76 |
+
},
|
77 |
+
|
78 |
+
useIntKeysAsArrayIndex: false, // name="foo[2]" value="v" => {foo: [null, null, "v"]}, instead of {foo: ["2": "v"]}
|
79 |
+
},
|
80 |
+
|
81 |
+
// Merge option defaults into the options
|
82 |
+
setupOpts: function( options ) {
|
83 |
+
var opt, validOpts, defaultOptions, optWithDefault, parseAll, f;
|
84 |
+
f = $.serializeJSON;
|
85 |
+
|
86 |
+
if ( options == null ) options = {}; // options ||= {}
|
87 |
+
defaultOptions = f.defaultOptions || {}; // defaultOptions
|
88 |
+
|
89 |
+
// Make sure that the user didn't misspell an option
|
90 |
+
validOpts = ['checkboxUncheckedValue', 'parseNumbers', 'parseBooleans', 'parseNulls', 'parseAll', 'parseWithFunction', 'customTypes', 'defaultTypes', 'useIntKeysAsArrayIndex']; // re-define because the user may override the defaultOptions
|
91 |
+
for ( opt in options ) {
|
92 |
+
if ( validOpts.indexOf( opt ) === -1 ) {
|
93 |
+
throw new Error( "serializeJSON ERROR: invalid option '" + opt + "'. Please use one of " + validOpts.join( ', ' ) );
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
+
// Helper to get the default value for this option if none is specified by the user
|
98 |
+
optWithDefault = function( key ) {
|
99 |
+
return (options[key] !== false) && (options[key] !== '') && (options[key] || defaultOptions[key]);
|
100 |
+
}
|
101 |
+
|
102 |
+
// Return computed options (opts to be used in the rest of the script)
|
103 |
+
parseAll = optWithDefault( 'parseAll' );
|
104 |
+
return {
|
105 |
+
checkboxUncheckedValue: optWithDefault( 'checkboxUncheckedValue' ),
|
106 |
+
|
107 |
+
parseNumbers: parseAll || optWithDefault( 'parseNumbers' ),
|
108 |
+
parseBooleans: parseAll || optWithDefault( 'parseBooleans' ),
|
109 |
+
parseNulls: parseAll || optWithDefault( 'parseNulls' ),
|
110 |
+
parseWithFunction: optWithDefault( 'parseWithFunction' ),
|
111 |
+
|
112 |
+
typeFunctions: $.extend( {}, optWithDefault( 'defaultTypes' ), optWithDefault( 'customTypes' ) ),
|
113 |
+
|
114 |
+
useIntKeysAsArrayIndex: optWithDefault( 'useIntKeysAsArrayIndex' ),
|
115 |
+
}
|
116 |
+
},
|
117 |
+
|
118 |
+
// Given a string, apply the type or the relevant "parse" options, to return the parsed value
|
119 |
+
parseValue: function( str, type, opts ) {
|
120 |
+
var typeFunction, f;
|
121 |
+
f = $.serializeJSON;
|
122 |
+
|
123 |
+
// Parse with a type if available
|
124 |
+
typeFunction = opts.typeFunctions && opts.typeFunctions[type];
|
125 |
+
if ( typeFunction ) return typeFunction( str ); // use specific type
|
126 |
+
|
127 |
+
// Otherwise, check if there is any auto-parse option enabled and use it.
|
128 |
+
if ( opts.parseNumbers && f.isNumeric( str ) ) return Number( str ); // auto: number
|
129 |
+
if ( opts.parseBooleans && (str === "true" || str === "false") ) return str === "true"; // auto: boolean
|
130 |
+
if ( opts.parseNulls && str == "null" ) return null; // auto: null
|
131 |
+
|
132 |
+
// If none applies, just return the str
|
133 |
+
return str;
|
134 |
+
},
|
135 |
+
|
136 |
+
isObject: function( obj ) {
|
137 |
+
return obj === Object( obj );
|
138 |
+
}, // is this variable an object?
|
139 |
+
isUndefined: function( obj ) {
|
140 |
+
return obj === void 0;
|
141 |
+
}, // safe check for undefined values
|
142 |
+
isValidArrayIndex: function( val ) {
|
143 |
+
return /^[0-9]+$/.test( String( val ) );
|
144 |
+
}, // 1,2,3,4 ... are valid array indexes
|
145 |
+
isNumeric: function( obj ) {
|
146 |
+
return obj - parseFloat( obj ) >= 0;
|
147 |
+
}, // taken from jQuery.isNumeric implementation. Not using jQuery.isNumeric to support old jQuery and Zepto versions
|
148 |
+
|
149 |
+
optionKeys: function( obj ) {
|
150 |
+
if ( Object.keys ) {
|
151 |
+
return Object.keys( obj );
|
152 |
+
} else {
|
153 |
+
var keys = [];
|
154 |
+
for ( var key in obj ) {
|
155 |
+
keys.push( key )
|
156 |
+
}
|
157 |
+
;
|
158 |
+
return keys;
|
159 |
+
}
|
160 |
+
}, // polyfill Object.keys to get option keys in IE<9
|
161 |
+
|
162 |
+
// Split the input name in programatically readable keys.
|
163 |
+
// The last element is always the type (default "_").
|
164 |
+
// Examples:
|
165 |
+
// "foo" => ['foo', '_']
|
166 |
+
// "foo:string" => ['foo', 'string']
|
167 |
+
// "foo:boolean" => ['foo', 'boolean']
|
168 |
+
// "[foo]" => ['foo', '_']
|
169 |
+
// "foo[inn][bar]" => ['foo', 'inn', 'bar', '_']
|
170 |
+
// "foo[inn[bar]]" => ['foo', 'inn', 'bar', '_']
|
171 |
+
// "foo[inn][arr][0]" => ['foo', 'inn', 'arr', '0', '_']
|
172 |
+
// "arr[][val]" => ['arr', '', 'val', '_']
|
173 |
+
// "arr[][val]:null" => ['arr', '', 'val', 'null']
|
174 |
+
splitInputNameIntoKeysArray: function( name, opts ) {
|
175 |
+
var keys, nameWithoutType, type, _ref, f;
|
176 |
+
f = $.serializeJSON;
|
177 |
+
_ref = f.extractTypeFromInputName( name, opts ), nameWithoutType = _ref[0], type = _ref[1];
|
178 |
+
keys = nameWithoutType.split( '[' ); // split string into array
|
179 |
+
keys = $.map(
|
180 |
+
keys, function( key ) {
|
181 |
+
return key.replace( /]/g, '' );
|
182 |
+
}
|
183 |
+
); // remove closing brackets
|
184 |
+
if ( keys[0] === '' ) {
|
185 |
+
keys.shift();
|
186 |
+
} // ensure no opening bracket ("[foo][inn]" should be same as "foo[inn]")
|
187 |
+
keys.push( type ); // add type at the end
|
188 |
+
return keys;
|
189 |
+
},
|
190 |
+
|
191 |
+
// Returns [name-without-type, type] from name.
|
192 |
+
// "foo" => ["foo", '_']
|
193 |
+
// "foo:boolean" => ["foo", 'boolean']
|
194 |
+
// "foo[bar]:null" => ["foo[bar]", 'null']
|
195 |
+
extractTypeFromInputName: function( name, opts ) {
|
196 |
+
var match, validTypes, f;
|
197 |
+
if ( match = name.match( /(.*):([^:]+)$/ ) ) {
|
198 |
+
f = $.serializeJSON;
|
199 |
+
|
200 |
+
validTypes = f.optionKeys( opts ? opts.typeFunctions : f.defaultOptions.defaultTypes );
|
201 |
+
validTypes.push( 'skip' ); // skip is a special type that makes it easy to remove
|
202 |
+
if ( validTypes.indexOf( match[2] ) !== -1 ) {
|
203 |
+
return [match[1], match[2]];
|
204 |
+
} else {
|
205 |
+
throw new Error( "serializeJSON ERROR: Invalid type " + match[2] + " found in input name '" + name + "', please use one of " + validTypes.join( ', ' ) )
|
206 |
+
}
|
207 |
+
} else {
|
208 |
+
return [name, '_']; // no defined type, then use parse options
|
209 |
+
}
|
210 |
+
},
|
211 |
+
|
212 |
+
// Set a value in an object or array, using multiple keys to set in a nested object or array:
|
213 |
+
//
|
214 |
+
// deepSet(obj, ['foo'], v) // obj['foo'] = v
|
215 |
+
// deepSet(obj, ['foo', 'inn'], v) // obj['foo']['inn'] = v // Create the inner obj['foo'] object, if needed
|
216 |
+
// deepSet(obj, ['foo', 'inn', '123'], v) // obj['foo']['arr']['123'] = v //
|
217 |
+
//
|
218 |
+
// deepSet(obj, ['0'], v) // obj['0'] = v
|
219 |
+
// deepSet(arr, ['0'], v, {useIntKeysAsArrayIndex: true}) // arr[0] = v
|
220 |
+
// deepSet(arr, [''], v) // arr.push(v)
|
221 |
+
// deepSet(obj, ['arr', ''], v) // obj['arr'].push(v)
|
222 |
+
//
|
223 |
+
// arr = [];
|
224 |
+
// deepSet(arr, ['', v] // arr => [v]
|
225 |
+
// deepSet(arr, ['', 'foo'], v) // arr => [v, {foo: v}]
|
226 |
+
// deepSet(arr, ['', 'bar'], v) // arr => [v, {foo: v, bar: v}]
|
227 |
+
// deepSet(arr, ['', 'bar'], v) // arr => [v, {foo: v, bar: v}, {bar: v}]
|
228 |
+
//
|
229 |
+
deepSet: function( o, keys, value, opts ) {
|
230 |
+
var key, nextKey, tail, lastIdx, lastVal, f;
|
231 |
+
if ( opts == null ) opts = {};
|
232 |
+
f = $.serializeJSON;
|
233 |
+
if ( f.isUndefined( o ) ) {
|
234 |
+
throw new Error( "ArgumentError: param 'o' expected to be an object or array, found undefined" );
|
235 |
+
}
|
236 |
+
if ( !keys || keys.length === 0 ) {
|
237 |
+
throw new Error( "ArgumentError: param 'keys' expected to be an array with least one element" );
|
238 |
+
}
|
239 |
+
|
240 |
+
key = keys[0];
|
241 |
+
|
242 |
+
// Only one key, then it's not a deepSet, just assign the value.
|
243 |
+
if ( keys.length === 1 ) {
|
244 |
+
if ( key === '' ) {
|
245 |
+
o.push( value ); // '' is used to push values into the array (assume o is an array)
|
246 |
+
} else {
|
247 |
+
o[key] = value; // other keys can be used as object keys or array indexes
|
248 |
+
}
|
249 |
+
|
250 |
+
// With more keys is a deepSet. Apply recursively.
|
251 |
+
} else {
|
252 |
+
nextKey = keys[1];
|
253 |
+
|
254 |
+
// '' is used to push values into the array,
|
255 |
+
// with nextKey, set the value into the same object, in object[nextKey].
|
256 |
+
// Covers the case of ['', 'foo'] and ['', 'var'] to push the object {foo, var}, and the case of nested arrays.
|
257 |
+
if ( key === '' ) {
|
258 |
+
lastIdx = o.length - 1; // asume o is array
|
259 |
+
lastVal = o[lastIdx];
|
260 |
+
if ( f.isObject( lastVal ) && (f.isUndefined( lastVal[nextKey] ) || keys.length > 2) ) { // if nextKey is not present in the last object element, or there are more keys to deep set
|
261 |
+
key = lastIdx; // then set the new value in the same object element
|
262 |
+
} else {
|
263 |
+
key = lastIdx + 1; // otherwise, point to set the next index in the array
|
264 |
+
}
|
265 |
+
}
|
266 |
+
|
267 |
+
// '' is used to push values into the array "array[]"
|
268 |
+
if ( nextKey === '' ) {
|
269 |
+
if ( f.isUndefined( o[key] ) || !$.isArray( o[key] ) ) {
|
270 |
+
o[key] = []; // define (or override) as array to push values
|
271 |
+
}
|
272 |
+
} else {
|
273 |
+
if ( opts.useIntKeysAsArrayIndex && f.isValidArrayIndex( nextKey ) ) { // if 1, 2, 3 ... then use an array, where nextKey is the index
|
274 |
+
if ( f.isUndefined( o[key] ) || !$.isArray( o[key] ) ) {
|
275 |
+
o[key] = []; // define (or override) as array, to insert values using int keys as array indexes
|
276 |
+
}
|
277 |
+
} else { // for anything else, use an object, where nextKey is going to be the attribute name
|
278 |
+
if ( f.isUndefined( o[key] ) || !f.isObject( o[key] ) ) {
|
279 |
+
o[key] = {}; // define (or override) as object, to set nested properties
|
280 |
+
}
|
281 |
+
}
|
282 |
+
}
|
283 |
+
|
284 |
+
// Recursively set the inner object
|
285 |
+
tail = keys.slice( 1 );
|
286 |
+
f.deepSet( o[key], tail, value, opts );
|
287 |
+
}
|
288 |
+
},
|
289 |
+
|
290 |
+
// Fill the formAsArray object with values for the unchecked checkbox inputs,
|
291 |
+
// using the same format as the jquery.serializeArray function.
|
292 |
+
// The value of the unchecked values is determined from the opts.checkboxUncheckedValue
|
293 |
+
// and/or the data-unchecked-value attribute of the inputs.
|
294 |
+
readCheckboxUncheckedValues: function( formAsArray, $form, opts ) {
|
295 |
+
var selector, $uncheckedCheckboxes, $el, dataUncheckedValue, f;
|
296 |
+
if ( opts == null ) opts = {};
|
297 |
+
f = $.serializeJSON;
|
298 |
+
|
299 |
+
selector = 'input[type=checkbox][name]:not(:checked):not([disabled])';
|
300 |
+
$uncheckedCheckboxes = $form.find( selector ).add( $form.filter( selector ) );
|
301 |
+
$uncheckedCheckboxes.each(
|
302 |
+
function( i, el ) {
|
303 |
+
$el = $( el );
|
304 |
+
dataUncheckedValue = $el.attr( 'data-unchecked-value' );
|
305 |
+
if ( dataUncheckedValue ) { // data-unchecked-value has precedence over option opts.checkboxUncheckedValue
|
306 |
+
formAsArray.push( {name: el.name, value: dataUncheckedValue} );
|
307 |
+
} else {
|
308 |
+
if ( !f.isUndefined( opts.checkboxUncheckedValue ) ) {
|
309 |
+
formAsArray.push( {name: el.name, value: opts.checkboxUncheckedValue} );
|
310 |
+
}
|
311 |
+
}
|
312 |
+
}
|
313 |
+
);
|
314 |
+
}
|
315 |
+
|
316 |
+
};
|
317 |
+
|
318 |
+
}( window.jQuery || window.$ ));
|
319 |
+
|
320 |
+
|
321 |
+
(function( $ ) { //This functions first parameter is named $
|
322 |
+
'use strict';
|
323 |
+
|
324 |
+
redux.customizer = redux.customizer || {};
|
325 |
+
|
326 |
+
$( document ).ready(
|
327 |
+
function() {
|
328 |
+
redux.customizer.init();
|
329 |
+
}
|
330 |
+
);
|
331 |
+
redux.customizer.init = function() {
|
332 |
+
$( 'body' ).addClass( redux_customizer.body_class );
|
333 |
+
$( '.accordion-section.redux-section, .accordion-section.redux-panel, .accordion-section-title' ).click(
|
334 |
+
function() {
|
335 |
+
$.redux.initFields();
|
336 |
+
}
|
337 |
+
);
|
338 |
+
};
|
339 |
+
redux.customizer.save = function( $obj, $container ) {
|
340 |
+
var $parent = $obj.hasClass( 'redux-field' ) ? $obj : $obj.parents( '.redux-field:first' );
|
341 |
+
var $id = $parent.parent().find( '.redux-customizer-input' ).data( 'id' );
|
342 |
+
|
343 |
+
var $nData = $parent.serializeJSON();
|
344 |
+
|
345 |
+
$.each(
|
346 |
+
$nData, function( $k, $v ) {
|
347 |
+
$nData = $v;
|
348 |
+
}
|
349 |
+
);
|
350 |
+
//console.log( $nData );
|
351 |
+
|
352 |
+
var $control = wp.customize.control( $id );
|
353 |
+
//console.log($control);
|
354 |
+
$control.setting.set( $nData );
|
355 |
+
};
|
356 |
+
})( jQuery );
|
357 |
+
|
358 |
+
|
359 |
+
|
360 |
+
|
361 |
+
|
ReduxCore/inc/extensions/customizer/extension_customizer.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(a){"use strict";a.fn.serializeJSON=function(b){var c,d,e,f,g,h,i;return h=a.serializeJSON,i=h.setupOpts(b),d=this.serializeArray(),h.readCheckboxUncheckedValues(d,this,i),c={},a.each(d,function(a,b){e=h.splitInputNameIntoKeysArray(b.name,i),f=e.pop(),"skip"!==f&&(g=h.parseValue(b.value,f,i),i.parseWithFunction&&"_"===f&&(g=i.parseWithFunction(g,b.name)),h.deepSet(c,e,g,i))}),c},a.serializeJSON={defaultOptions:{checkboxUncheckedValue:void 0,parseNumbers:!1,parseBooleans:!1,parseNulls:!1,parseAll:!1,parseWithFunction:null,customTypes:{},defaultTypes:{string:function(a){return String(a)},number:function(a){return Number(a)},"boolean":function(a){return-1===["false","null","undefined","","0"].indexOf(a)},"null":function(a){return-1!==["false","null","undefined","","0"].indexOf(a)?null:a},array:function(a){return JSON.parse(a)},object:function(a){return JSON.parse(a)},auto:function(b){return a.serializeJSON.parseValue(b,null,{parseNumbers:!0,parseBooleans:!0,parseNulls:!0})}},useIntKeysAsArrayIndex:!1},setupOpts:function(b){var c,d,e,f,g,h;h=a.serializeJSON,null==b&&(b={}),e=h.defaultOptions||{},d=["checkboxUncheckedValue","parseNumbers","parseBooleans","parseNulls","parseAll","parseWithFunction","customTypes","defaultTypes","useIntKeysAsArrayIndex"];for(c in b)if(-1===d.indexOf(c))throw new Error("serializeJSON ERROR: invalid option '"+c+"'. Please use one of "+d.join(", "));return f=function(a){return b[a]!==!1&&""!==b[a]&&(b[a]||e[a])},g=f("parseAll"),{checkboxUncheckedValue:f("checkboxUncheckedValue"),parseNumbers:g||f("parseNumbers"),parseBooleans:g||f("parseBooleans"),parseNulls:g||f("parseNulls"),parseWithFunction:f("parseWithFunction"),typeFunctions:a.extend({},f("defaultTypes"),f("customTypes")),useIntKeysAsArrayIndex:f("useIntKeysAsArrayIndex")}},parseValue:function(b,c,d){var e,f;return f=a.serializeJSON,e=d.typeFunctions&&d.typeFunctions[c],e?e(b):d.parseNumbers&&f.isNumeric(b)?Number(b):!d.parseBooleans||"true"!==b&&"false"!==b?d.parseNulls&&"null"==b?null:b:"true"===b},isObject:function(a){return a===Object(a)},isUndefined:function(a){return void 0===a},isValidArrayIndex:function(a){return/^[0-9]+$/.test(String(a))},isNumeric:function(a){return a-parseFloat(a)>=0},optionKeys:function(a){if(Object.keys)return Object.keys(a);var b=[];for(var c in a)b.push(c);return b},splitInputNameIntoKeysArray:function(b,c){var d,e,f,g,h;return h=a.serializeJSON,g=h.extractTypeFromInputName(b,c),e=g[0],f=g[1],d=e.split("["),d=a.map(d,function(a){return a.replace(/]/g,"")}),""===d[0]&&d.shift(),d.push(f),d},extractTypeFromInputName:function(b,c){var d,e,f;if(d=b.match(/(.*):([^:]+)$/)){if(f=a.serializeJSON,e=f.optionKeys(c?c.typeFunctions:f.defaultOptions.defaultTypes),e.push("skip"),-1!==e.indexOf(d[2]))return[d[1],d[2]];throw new Error("serializeJSON ERROR: Invalid type "+d[2]+" found in input name '"+b+"', please use one of "+e.join(", "))}return[b,"_"]},deepSet:function(b,c,d,e){var f,g,h,i,j,k;if(null==e&&(e={}),k=a.serializeJSON,k.isUndefined(b))throw new Error("ArgumentError: param 'o' expected to be an object or array, found undefined");if(!c||0===c.length)throw new Error("ArgumentError: param 'keys' expected to be an array with least one element");f=c[0],1===c.length?""===f?b.push(d):b[f]=d:(g=c[1],""===f&&(i=b.length-1,j=b[i],f=k.isObject(j)&&(k.isUndefined(j[g])||c.length>2)?i:i+1),""===g?(k.isUndefined(b[f])||!a.isArray(b[f]))&&(b[f]=[]):e.useIntKeysAsArrayIndex&&k.isValidArrayIndex(g)?(k.isUndefined(b[f])||!a.isArray(b[f]))&&(b[f]=[]):(k.isUndefined(b[f])||!k.isObject(b[f]))&&(b[f]={}),h=c.slice(1),k.deepSet(b[f],h,d,e))},readCheckboxUncheckedValues:function(b,c,d){var e,f,g,h,i;null==d&&(d={}),i=a.serializeJSON,e="input[type=checkbox][name]:not(:checked):not([disabled])",f=c.find(e).add(c.filter(e)),f.each(function(c,e){g=a(e),h=g.attr("data-unchecked-value"),h?b.push({name:e.name,value:h}):i.isUndefined(d.checkboxUncheckedValue)||b.push({name:e.name,value:d.checkboxUncheckedValue})})}}}(window.jQuery||window.$),function(a){"use strict";redux.customizer=redux.customizer||{},a(document).ready(function(){redux.customizer.init()}),redux.customizer.init=function(){a("body").addClass(redux_customizer.body_class),a(".accordion-section.redux-section, .accordion-section.redux-panel, .accordion-section-title").click(function(){a.redux.initFields()})},redux.customizer.save=function(b,c){var d=b.hasClass("redux-field")?b:b.parents(".redux-field:first"),e=d.parent().find(".redux-customizer-input").data("id"),f=d.serializeJSON();a.each(f,function(a,b){f=b});var g=wp.customize.control(e);g.setting.set(f)}}(jQuery);
|
ReduxCore/inc/extensions/customizer/extension_customizer.php
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
3 |
/**
|
4 |
* Redux Framework is free software: you can redistribute it and/or modify
|
5 |
* it under the terms of the GNU General Public License as published by
|
@@ -14,7 +15,7 @@
|
|
14 |
*
|
15 |
* @package ReduxFramework
|
16 |
* @author Dovy Paukstys (dovy)
|
17 |
-
* @version
|
18 |
*/
|
19 |
|
20 |
// Exit if accessed directly
|
@@ -39,7 +40,8 @@
|
|
39 |
private $parent;
|
40 |
private $orig_options = array();
|
41 |
private static $post_values = array();
|
42 |
-
public static $version = "2.0";
|
|
|
43 |
|
44 |
/**
|
45 |
* Class Constructor. Defines the args for the extions class
|
@@ -54,8 +56,21 @@
|
|
54 |
* @return void
|
55 |
*/
|
56 |
public function __construct( $parent ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
//add_action('wp_head', array( $this, '_enqueue_new' ));
|
58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
global $pagenow, $wp_customize;
|
60 |
if ( ! isset( $wp_customize ) && $pagenow !== "customize.php" && $pagenow !== "admin-ajax.php" ) {
|
61 |
return;
|
@@ -64,7 +79,6 @@
|
|
64 |
//return;
|
65 |
}
|
66 |
|
67 |
-
$this->parent = $parent;
|
68 |
|
69 |
if ( empty( $this->_extension_dir ) ) {
|
70 |
$this->_extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) );
|
@@ -73,7 +87,6 @@
|
|
73 |
|
74 |
self::get_post_values();
|
75 |
|
76 |
-
|
77 |
// Create defaults array
|
78 |
$defaults = array();
|
79 |
/*
|
@@ -84,36 +97,68 @@
|
|
84 |
customize_controls_print_footer_scripts
|
85 |
*/
|
86 |
|
|
|
87 |
|
88 |
-
if (
|
|
|
|
|
89 |
|
|
|
90 |
add_action( "redux/options/{$this->parent->args['opt_name']}/options", array(
|
91 |
$this,
|
92 |
'_override_values'
|
93 |
), 100 );
|
|
|
94 |
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
'_register_customizer_controls'
|
100 |
-
) ); // Create controls
|
101 |
-
}
|
102 |
-
//}
|
103 |
-
|
104 |
|
105 |
-
|
106 |
-
}
|
107 |
|
108 |
|
109 |
//add_action( 'customize_save', array( $this, 'customizer_save_before' ) ); // Before save
|
110 |
add_action( 'customize_save_after', array( &$this, 'customizer_save_after' ) ); // After save
|
111 |
|
|
|
|
|
|
|
|
|
|
|
112 |
|
113 |
//add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_css' ) ); // Enqueue previewer css
|
114 |
//add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_js' ) ); // Enqueue previewer javascript
|
115 |
//add_action( "wp_footer", array( $this, '_enqueue_new' ), 100 );
|
116 |
//$this->_enqueue_new();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
}
|
118 |
|
119 |
function customize_preview_init() {
|
@@ -130,11 +175,22 @@
|
|
130 |
|
131 |
self::get_post_values();
|
132 |
|
|
|
133 |
if ( isset( $_POST['customized'] ) && ! empty( self::$post_values ) ) {
|
134 |
|
135 |
if ( is_array( self::$post_values ) ) {
|
136 |
foreach ( self::$post_values as $key => $value ) {
|
137 |
if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
$key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, "]" ) );
|
139 |
$data[ $key ] = $value;
|
140 |
$GLOBALS[ $this->parent->args['global_variable'] ][ $key ] = $value;
|
@@ -178,8 +234,120 @@
|
|
178 |
*/
|
179 |
}
|
180 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
181 |
// All sections, settings, and controls will be added here
|
182 |
public function _register_customizer_controls( $wp_customize ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
$order = array(
|
184 |
'heading' => - 500,
|
185 |
'option' => - 500,
|
@@ -193,14 +361,17 @@
|
|
193 |
);
|
194 |
$panel = "";
|
195 |
|
|
|
|
|
|
|
196 |
foreach ( $this->parent->sections as $key => $section ) {
|
197 |
|
198 |
-
|
|
|
199 |
continue;
|
200 |
}
|
201 |
|
202 |
-
|
203 |
-
if ( empty( $section['fields'] ) || ( isset( $section['type'] ) && $section['type'] == "divide" ) ) {
|
204 |
continue;
|
205 |
}
|
206 |
|
@@ -209,12 +380,7 @@
|
|
209 |
continue;
|
210 |
}
|
211 |
|
212 |
-
|
213 |
-
if ( isset( $section['permissions'] ) ) {
|
214 |
-
if ( ! current_user_can( $section['permissions'] ) ) {
|
215 |
-
continue;
|
216 |
-
}
|
217 |
-
}
|
218 |
|
219 |
// No errors please
|
220 |
if ( ! isset( $section['desc'] ) ) {
|
@@ -233,7 +399,7 @@
|
|
233 |
|
234 |
// No title is present, let's show what section is missing a title
|
235 |
if ( ! isset( $section['title'] ) ) {
|
236 |
-
|
237 |
}
|
238 |
|
239 |
// Let's set a default priority
|
@@ -242,61 +408,75 @@
|
|
242 |
$order['heading'] ++;
|
243 |
}
|
244 |
|
|
|
|
|
|
|
|
|
|
|
|
|
245 |
if ( method_exists( $wp_customize, 'add_panel' ) && ( ! isset( $section['subsection'] ) || ( isset( $section['subsection'] ) && $section['subsection'] != true ) ) && isset( $this->parent->sections[ ( $key + 1 ) ]['subsection'] ) && $this->parent->sections[ ( $key + 1 ) ]['subsection'] ) {
|
246 |
|
247 |
-
$
|
248 |
-
'priority'
|
249 |
-
'capability'
|
250 |
-
'theme_supports' => '',
|
251 |
-
'title'
|
252 |
-
'
|
253 |
-
|
|
|
|
|
254 |
$panel = $section['id'];
|
255 |
|
256 |
-
$
|
257 |
'title' => $section['title'],
|
258 |
'priority' => $section['priority'],
|
259 |
'description' => $section['desc'],
|
|
|
|
|
|
|
260 |
'panel' => $panel
|
261 |
-
) );
|
262 |
|
263 |
|
264 |
} else {
|
265 |
if ( ! isset( $section['subsection'] ) || ( isset( $section['subsection'] ) && $section['subsection'] != true ) ) {
|
266 |
$panel = "";
|
267 |
}
|
268 |
-
$
|
269 |
'title' => $section['title'],
|
270 |
'priority' => $section['priority'],
|
271 |
'description' => $section['desc'],
|
|
|
|
|
|
|
272 |
'panel' => $panel
|
273 |
-
) );
|
274 |
}
|
275 |
|
276 |
-
|
277 |
foreach ( $section['fields'] as $skey => $option ) {
|
278 |
|
279 |
-
// Evaluate section permissions
|
280 |
-
if ( isset( $option['permissions'] ) ) {
|
281 |
-
if ( ! current_user_can( $option['permissions'] ) ) {
|
282 |
-
continue;
|
283 |
-
}
|
284 |
-
}
|
285 |
-
if ( isset( $option['validate'] ) && $option['validate'] != false ) {
|
286 |
-
continue;
|
287 |
-
}
|
288 |
-
|
289 |
-
if ( isset( $option['validate_callback'] ) && !empty( $option['validate_callback'] ) ) {
|
290 |
-
continue;
|
291 |
-
}
|
292 |
-
|
293 |
if ( isset( $option['customizer'] ) && $option['customizer'] === false ) {
|
294 |
continue;
|
295 |
}
|
|
|
296 |
if ( $this->parent->args['customizer'] === false && ( ! isset( $option['customizer'] ) || $option['customizer'] !== true ) ) {
|
297 |
continue;
|
298 |
}
|
299 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
300 |
//Change the item priority if not set
|
301 |
if ( $option['type'] != 'heading' && ! isset( $option['priority'] ) ) {
|
302 |
$option['priority'] = $order['option'];
|
@@ -317,27 +497,27 @@
|
|
317 |
$option['title'] = "";
|
318 |
}
|
319 |
|
320 |
-
// Wordpress doesn't support multi-select
|
321 |
-
if ( $option['type'] == "select" && isset( $option['multi'] ) && $option['multi'] == true ) {
|
322 |
-
continue;
|
323 |
-
}
|
324 |
|
325 |
$option['id'] = $this->parent->args['opt_name'] . '[' . $option['id'] . ']';
|
326 |
|
327 |
-
if ( $option['type'] != "heading" && $option['type'] != "import_export" &&
|
|
|
328 |
$wp_customize->add_setting( $option['id'],
|
329 |
array(
|
330 |
'default' => $option['default'],
|
331 |
-
'type' => 'option',
|
332 |
-
'capabilities'
|
|
|
333 |
//'capabilities' => $this->parent->args['page_permissions'],
|
334 |
'transport' => 'refresh',
|
335 |
-
'
|
|
|
336 |
//'sanitize_callback' => '__return_false',
|
337 |
'sanitize_callback' => array( $this, '_field_validation' ),
|
338 |
//'sanitize_js_callback' =>array( &$parent, '_field_input' ),
|
339 |
)
|
340 |
);
|
|
|
341 |
}
|
342 |
|
343 |
if ( ! empty( $option['data'] ) && empty( $option['options'] ) ) {
|
@@ -356,151 +536,86 @@
|
|
356 |
$option['options'] = $this->parent->get_wordpress_data( $option['data'], $option['args'] );
|
357 |
}
|
358 |
|
359 |
-
|
360 |
-
case 'heading':
|
361 |
-
// We don't want to put up the section unless it's used by something visible in the customizer
|
362 |
-
$section = $option;
|
363 |
-
$section['id'] = strtolower( str_replace( " ", "", $option['title'] ) );
|
364 |
-
$order['heading'] = - 500;
|
365 |
-
|
366 |
-
if ( ! empty( $option['priority'] ) ) {
|
367 |
-
$section['priority'] = $option['priority'];
|
368 |
-
} else {
|
369 |
-
$section['priority'] = $order['heading'];
|
370 |
-
$order['heading'] ++;
|
371 |
-
}
|
372 |
-
break;
|
373 |
|
374 |
-
|
375 |
-
if ( isset( $option['data'] ) && $option['data'] ) {
|
376 |
-
continue;
|
377 |
-
}
|
378 |
-
//if ($option['title'] == "Twitter Publisher Username") {
|
379 |
-
// print_r($option);
|
380 |
-
// $trueID = str_replace(array(']', 'redux_demo['),'',$option['id']);
|
381 |
-
// $data = get_option($this->parent->args['opt_name']);
|
382 |
-
// print_r($data[$trueID]);
|
383 |
-
// print_r($this->parent->options[$trueID]);
|
384 |
-
// exit();
|
385 |
-
//}
|
386 |
-
$wp_customize->add_control( $option['id'], array(
|
387 |
-
'label' => $option['title'],
|
388 |
-
'section' => $section['id'],
|
389 |
-
'settings' => $option['id'],
|
390 |
-
'priority' => $option['priority'],
|
391 |
-
'type' => 'text',
|
392 |
-
) );
|
393 |
-
break;
|
394 |
-
|
395 |
-
case 'select':
|
396 |
-
case 'button_set':
|
397 |
-
if ( ! isset( $option['options'] ) ) {
|
398 |
-
continue;
|
399 |
-
}
|
400 |
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
foreach ( $value as $key => $v ) {
|
405 |
-
$newOptions[] = $v;
|
406 |
-
}
|
407 |
|
408 |
-
|
409 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
410 |
|
411 |
-
|
412 |
-
$option['options'] = $newOptions;
|
413 |
-
}
|
414 |
|
415 |
-
|
416 |
-
|
417 |
-
|
|
|
418 |
|
419 |
-
if ( ( isset( $option['multi'] ) && $option['multi'] ) ) {
|
420 |
-
continue;
|
421 |
-
}
|
422 |
|
423 |
-
$wp_customize->add_control( $option['id'], array(
|
424 |
-
'label' => $option['title'],
|
425 |
-
'section' => $section['id'],
|
426 |
-
'settings' => $option['id'],
|
427 |
-
'priority' => $option['priority'],
|
428 |
-
'type' => 'select',
|
429 |
-
'choices' => $option['options']
|
430 |
-
) );
|
431 |
-
break;
|
432 |
-
|
433 |
-
case 'radio':
|
434 |
-
//continue;
|
435 |
-
$wp_customize->add_control( $option['id'], array(
|
436 |
-
'label' => $option['title'],
|
437 |
-
'section' => $section['id'],
|
438 |
-
'settings' => $option['id'],
|
439 |
-
'priority' => $option['priority'],
|
440 |
-
'type' => 'radio',
|
441 |
-
'choices' => $option['options']
|
442 |
-
) );
|
443 |
-
break;
|
444 |
-
|
445 |
-
case 'checkbox':
|
446 |
-
if ( ( isset( $option['data'] ) && $option['data'] ) || ( ( isset( $option['multi'] ) && $option['multi'] ) ) || ( ( isset( $option['options'] ) && ! empty( $option['options'] ) ) ) ) {
|
447 |
-
continue;
|
448 |
-
}
|
449 |
-
$wp_customize->add_control( $option['id'], array(
|
450 |
-
'label' => $option['title'],
|
451 |
-
'section' => $section['id'],
|
452 |
-
'settings' => $option['id'],
|
453 |
-
'priority' => $option['priority'],
|
454 |
-
'type' => 'checkbox',
|
455 |
-
) );
|
456 |
-
break;
|
457 |
-
|
458 |
-
case 'media':
|
459 |
-
continue;
|
460 |
-
$wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, $option['id'], array(
|
461 |
-
'label' => $option['title'],
|
462 |
-
'section' => $section['id'],
|
463 |
-
'settings' => $option['id'],
|
464 |
-
'priority' => $option['priority']
|
465 |
-
) ) );
|
466 |
-
break;
|
467 |
-
|
468 |
-
case 'color':
|
469 |
-
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, $option['id'], array(
|
470 |
-
'label' => $option['title'],
|
471 |
-
'section' => $section['id'],
|
472 |
-
'settings' => $option['id'],
|
473 |
-
'priority' => $option['priority']
|
474 |
-
) ) );
|
475 |
-
break;
|
476 |
-
|
477 |
-
case 'switch':
|
478 |
-
continue;
|
479 |
-
$wp_customize->add_control( new Redux_customizer_switch( $wp_customize, $option['id'], array(
|
480 |
-
'label' => $option['title'],
|
481 |
-
'section' => $section['id'],
|
482 |
-
'settings' => $option['id'],
|
483 |
-
'field' => $option,
|
484 |
-
'ReduxFramework' => $this->parent,
|
485 |
-
'priority' => $option['priority'],
|
486 |
-
) ) );
|
487 |
-
|
488 |
-
break;
|
489 |
-
|
490 |
-
default:
|
491 |
-
break;
|
492 |
-
}
|
493 |
}
|
494 |
}
|
495 |
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
504 |
}
|
505 |
|
506 |
public function customizer_save_before( $plugin_options ) {
|
@@ -616,6 +731,7 @@
|
|
616 |
|
617 |
do_action( 'redux-enqueue-' . $this->args['opt_name'] );
|
618 |
|
|
|
619 |
foreach ( $this->sections as $section ) {
|
620 |
if ( isset( $section['fields'] ) ) {
|
621 |
foreach ( $section['fields'] as $field ) {
|
@@ -626,7 +742,7 @@
|
|
626 |
$class_file = apply_filters( 'redux-typeclass-load', $this->path . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field_class );
|
627 |
if ( $class_file ) {
|
628 |
/** @noinspection PhpIncludeInspection */
|
629 |
-
require_once $class_file;
|
630 |
}
|
631 |
}
|
632 |
|
1 |
<?php
|
2 |
+
// <input type="radio" value="1" name="_customize-radio-redux_demo[opt-radio]" data-customize-setting-link="redux_demo[opt-color-title]">
|
3 |
+
//return;
|
4 |
/**
|
5 |
* Redux Framework is free software: you can redistribute it and/or modify
|
6 |
* it under the terms of the GNU General Public License as published by
|
15 |
*
|
16 |
* @package ReduxFramework
|
17 |
* @author Dovy Paukstys (dovy)
|
18 |
+
* @version 0.1.0
|
19 |
*/
|
20 |
|
21 |
// Exit if accessed directly
|
40 |
private $parent;
|
41 |
private $orig_options = array();
|
42 |
private static $post_values = array();
|
43 |
+
public static $version = "2.0.0";
|
44 |
+
private $options = array();
|
45 |
|
46 |
/**
|
47 |
* Class Constructor. Defines the args for the extions class
|
56 |
* @return void
|
57 |
*/
|
58 |
public function __construct( $parent ) {
|
59 |
+
|
60 |
+
$this->parent = $parent;
|
61 |
+
|
62 |
+
$this->upload_dir = ReduxFramework::$_upload_dir . 'advanced-customizer/';
|
63 |
+
$this->upload_url = ReduxFramework::$_upload_url . 'advanced-customizer/';
|
64 |
+
|
65 |
//add_action('wp_head', array( $this, '_enqueue_new' ));
|
66 |
|
67 |
+
|
68 |
+
// Override the ReduxCore class
|
69 |
+
add_filter( "redux/extension/{$this->parent->args['opt_name']}/customizer", array(
|
70 |
+
$this,
|
71 |
+
'remove_core_customizer_class'
|
72 |
+
) );
|
73 |
+
|
74 |
global $pagenow, $wp_customize;
|
75 |
if ( ! isset( $wp_customize ) && $pagenow !== "customize.php" && $pagenow !== "admin-ajax.php" ) {
|
76 |
return;
|
79 |
//return;
|
80 |
}
|
81 |
|
|
|
82 |
|
83 |
if ( empty( $this->_extension_dir ) ) {
|
84 |
$this->_extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) );
|
87 |
|
88 |
self::get_post_values();
|
89 |
|
|
|
90 |
// Create defaults array
|
91 |
$defaults = array();
|
92 |
/*
|
97 |
customize_controls_print_footer_scripts
|
98 |
*/
|
99 |
|
100 |
+
//add_action('customize_save', );
|
101 |
|
102 |
+
if ( isset( $_POST['wp_customize'] ) && $_POST['wp_customize'] == "on" ) {
|
103 |
+
$this->parent->args['customizer_only'] = true;
|
104 |
+
}
|
105 |
|
106 |
+
if ( isset( $_POST['wp_customize'] ) && $_POST['wp_customize'] == "on" && isset( $_POST['customized'] ) && ! empty( $_POST['customized'] ) && ! isset( $_POST['action'] ) ) {
|
107 |
add_action( "redux/options/{$this->parent->args['opt_name']}/options", array(
|
108 |
$this,
|
109 |
'_override_values'
|
110 |
), 100 );
|
111 |
+
}
|
112 |
|
113 |
+
add_action( 'customize_register', array(
|
114 |
+
$this,
|
115 |
+
'_register_customizer_controls'
|
116 |
+
) ); // Create controls
|
|
|
|
|
|
|
|
|
|
|
117 |
|
118 |
+
add_action( 'wp_head', array( $this, 'customize_preview_init' ) );
|
|
|
119 |
|
120 |
|
121 |
//add_action( 'customize_save', array( $this, 'customizer_save_before' ) ); // Before save
|
122 |
add_action( 'customize_save_after', array( &$this, 'customizer_save_after' ) ); // After save
|
123 |
|
124 |
+
// Add global controls CSS file
|
125 |
+
add_action( 'customize_controls_print_scripts', array( $this, 'enqueue_controls_css' ) );
|
126 |
+
|
127 |
+
add_action( 'customize_controls_init', array( $this, 'enqueue_panel_css' ) );
|
128 |
+
|
129 |
|
130 |
//add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_css' ) ); // Enqueue previewer css
|
131 |
//add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_js' ) ); // Enqueue previewer javascript
|
132 |
//add_action( "wp_footer", array( $this, '_enqueue_new' ), 100 );
|
133 |
//$this->_enqueue_new();
|
134 |
+
|
135 |
+
|
136 |
+
}
|
137 |
+
|
138 |
+
function enqueue_controls_css() {
|
139 |
+
|
140 |
+
include_once( ReduxFramework::$_dir . 'core/enqueue.php' );
|
141 |
+
$enqueue = new reduxCoreEnqueue ( $this->parent );
|
142 |
+
$enqueue->get_warnings_and_errors_array();
|
143 |
+
$enqueue->init();
|
144 |
+
wp_enqueue_style( 'redux-extension-advanced-customizer', $this->_extension_url . 'extension_customizer.css', '', time() );
|
145 |
+
|
146 |
+
wp_enqueue_script(
|
147 |
+
'redux-extension-customizer',
|
148 |
+
$this->_extension_url . 'extension_customizer' . Redux_Functions::isMin() . '.js',
|
149 |
+
array( 'jquery', 'redux-js' ),
|
150 |
+
ReduxFramework_extension_customizer::$version,
|
151 |
+
true
|
152 |
+
);
|
153 |
+
wp_localize_script( 'redux-extension-customizer', 'redux_customizer', array( 'body_class' => sanitize_html_class( 'admin-color-' . get_user_option( 'admin_color' ), 'fresh' ) ) );
|
154 |
+
}
|
155 |
+
|
156 |
+
function enqueue_panel_css() {
|
157 |
+
|
158 |
+
}
|
159 |
+
|
160 |
+
function remove_core_customizer_class( $path ) {
|
161 |
+
return "";
|
162 |
}
|
163 |
|
164 |
function customize_preview_init() {
|
175 |
|
176 |
self::get_post_values();
|
177 |
|
178 |
+
|
179 |
if ( isset( $_POST['customized'] ) && ! empty( self::$post_values ) ) {
|
180 |
|
181 |
if ( is_array( self::$post_values ) ) {
|
182 |
foreach ( self::$post_values as $key => $value ) {
|
183 |
if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) {
|
184 |
+
|
185 |
+
//if (is_array($value)) {
|
186 |
+
// $value = @stripslashes( $value );
|
187 |
+
// if ( function_exists( 'get_magic_quotes_gpc' ) && get_magic_quotes_gpc() ) {
|
188 |
+
// $value = @array_map( 'stripslashes_deep', $value );
|
189 |
+
// $value = @array_map( 'urldecode', $value );
|
190 |
+
// }
|
191 |
+
//} else {
|
192 |
+
// $value = @urldecode($value);
|
193 |
+
//}
|
194 |
$key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, "]" ) );
|
195 |
$data[ $key ] = $value;
|
196 |
$GLOBALS[ $this->parent->args['global_variable'] ][ $key ] = $value;
|
234 |
*/
|
235 |
}
|
236 |
|
237 |
+
public function render( $control ) {
|
238 |
+
$fieldID = str_replace( $this->parent->args['opt_name'] . '-', '', $control->redux_id );
|
239 |
+
$field = $this->options[ $fieldID ];
|
240 |
+
|
241 |
+
if ( isset( $field['compiler'] ) && ! empty( $field['compiler'] ) ) {
|
242 |
+
echo '<tr class="compiler">';
|
243 |
+
} else {
|
244 |
+
echo '<tr>';
|
245 |
+
}
|
246 |
+
echo '<th scope="row">' . $this->parent->field_head[ $field['id'] ] . '</th>';
|
247 |
+
echo '<td>';
|
248 |
+
//$field['data-customize-setting-link'] = array(
|
249 |
+
// 'name' => $field['name'],
|
250 |
+
// 'suffix' => isset($field['name_suffix']) ? $field['name_suffix'] : ''
|
251 |
+
//);
|
252 |
+
//
|
253 |
+
$field['name'] = $field['id'];
|
254 |
+
$this->parent->_field_input( $field );
|
255 |
+
echo '</td>';
|
256 |
+
echo '</tr>';
|
257 |
+
}
|
258 |
+
|
259 |
// All sections, settings, and controls will be added here
|
260 |
public function _register_customizer_controls( $wp_customize ) {
|
261 |
+
|
262 |
+
if ( ! class_exists( 'Redux_Customizer_Section' ) ) {
|
263 |
+
include_once dirname( __FILE__ ) . '/inc/customizer_section.php';
|
264 |
+
if ( method_exists( $wp_customize, 'register_section_type' ) ) {
|
265 |
+
$wp_customize->register_section_type( 'Redux_Customizer_Section' );
|
266 |
+
}
|
267 |
+
}
|
268 |
+
if ( ! class_exists( 'Redux_Customizer_Panel' ) ) {
|
269 |
+
include_once dirname( __FILE__ ) . '/inc/customizer_panel.php';
|
270 |
+
if ( method_exists( $wp_customize, 'register_panel_type' ) ) {
|
271 |
+
$wp_customize->register_panel_type( 'Redux_Customizer_Panel' );
|
272 |
+
}
|
273 |
+
}
|
274 |
+
if ( ! class_exists( 'Redux_Customizer_Control' ) ) {
|
275 |
+
include_once dirname( __FILE__ ) . '/inc/customizer_control.php';
|
276 |
+
}
|
277 |
+
|
278 |
+
include_once dirname( __FILE__ ) . '/inc/customizer_fields.php';
|
279 |
+
include_once dirname( __FILE__ ) . '/inc/customizer_devs.php';
|
280 |
+
|
281 |
+
do_action( "redux/extension/customizer/control/includes" );
|
282 |
+
|
283 |
+
//if ($this->parent->args['dev_mode']) {
|
284 |
+
// $section = new Redux_Customizer_rAds( $wp_customize, 'redux_rAds', array(
|
285 |
+
// 'priority' => 0,
|
286 |
+
// ) );
|
287 |
+
// $wp_customize->add_section( $section, array(
|
288 |
+
// 'priority' => 0,
|
289 |
+
// ) );
|
290 |
+
//
|
291 |
+
// //$wp_customize->add_control( new Redux_Customizer_Control_rAds( $wp_customize, 'reduxAdsDisplay', array(
|
292 |
+
// // 'section' => 'redux_rAds',
|
293 |
+
// // 'settings' => 'redux_rAds_field',
|
294 |
+
// // 'type' => 'redux-rAds',
|
295 |
+
// //) ) );
|
296 |
+
//
|
297 |
+
//
|
298 |
+
//
|
299 |
+
//
|
300 |
+
//}
|
301 |
+
if ( $this->parent->args['dev_mode'] ) {
|
302 |
+
//$args = array(
|
303 |
+
// 'priority' => 0,
|
304 |
+
//);
|
305 |
+
////$section = new Redux_Customizer_Section( $wp_customize, 'redux_rAds', $args );
|
306 |
+
////$wp_customize->add_section( $section, $args );
|
307 |
+
//$this->add_section( 'redux_rAds', array(
|
308 |
+
// 'title' => '',
|
309 |
+
// 'priority' => 1,
|
310 |
+
// 'description' => '',
|
311 |
+
// 'capability' => 'edit_theme_options',
|
312 |
+
//), $wp_customize );
|
313 |
+
//
|
314 |
+
//$wp_customize->add_control( new WP_Customize_Color_Control(
|
315 |
+
// $wp_customize,
|
316 |
+
// 'redux_rAds_display',
|
317 |
+
// array(
|
318 |
+
// 'section' => 'redux_rAds',
|
319 |
+
// 'settings' => 'redux_rAds_display',
|
320 |
+
// )
|
321 |
+
//));
|
322 |
+
////$wp_customize->add_control( new Redux_Customizer_Control_rAds( $wp_customize, 'reduxAdsDisplay', array(
|
323 |
+
//// 'section' => 'redux_rAds',
|
324 |
+
//// 'settings' => 'redux_rAds_field',
|
325 |
+
//// 'type' => 'redux-rAds',
|
326 |
+
////) ) );
|
327 |
+
//start copyright settings
|
328 |
+
|
329 |
+
//$section = new Redux_Customizer_section_rAds( $wp_customize, 'redux_rAds', array(
|
330 |
+
// 'priority' => -999,
|
331 |
+
//) );
|
332 |
+
//$wp_customize->add_section( $section, array(
|
333 |
+
// 'priority' => -999,
|
334 |
+
//) );
|
335 |
+
//$wp_customize->add_setting(
|
336 |
+
// 'redux_rAds_empty'
|
337 |
+
//);
|
338 |
+
//$wp_customize->add_control(
|
339 |
+
// new Redux_Customizer_Control_rAds(
|
340 |
+
// $wp_customize,
|
341 |
+
// 'redux_rAds_empty',
|
342 |
+
// array(
|
343 |
+
// 'section' => 'redux_rAds',
|
344 |
+
// 'settings' => 'redux_rAds_empty'
|
345 |
+
// )
|
346 |
+
// )
|
347 |
+
//);
|
348 |
+
}
|
349 |
+
|
350 |
+
|
351 |
$order = array(
|
352 |
'heading' => - 500,
|
353 |
'option' => - 500,
|
361 |
);
|
362 |
$panel = "";
|
363 |
|
364 |
+
$this->parent->args['options_api'] = false;
|
365 |
+
$this->parent->_register_settings();
|
366 |
+
|
367 |
foreach ( $this->parent->sections as $key => $section ) {
|
368 |
|
369 |
+
// Not a type that should go on the customizer
|
370 |
+
if ( isset( $section['type'] ) && ( $section['type'] == "divide" ) ) {
|
371 |
continue;
|
372 |
}
|
373 |
|
374 |
+
if ( isset( $section['id'] ) && $section['id'] == "import/export" ) {
|
|
|
375 |
continue;
|
376 |
}
|
377 |
|
380 |
continue;
|
381 |
}
|
382 |
|
383 |
+
$section['permissions'] = isset( $section['permissions'] ) ? $section['permissions'] : 'edit_theme_options';
|
|
|
|
|
|
|
|
|
|
|
384 |
|
385 |
// No errors please
|
386 |
if ( ! isset( $section['desc'] ) ) {
|
399 |
|
400 |
// No title is present, let's show what section is missing a title
|
401 |
if ( ! isset( $section['title'] ) ) {
|
402 |
+
$section['title'] = "";
|
403 |
}
|
404 |
|
405 |
// Let's set a default priority
|
408 |
$order['heading'] ++;
|
409 |
}
|
410 |
|
411 |
+
//print_r($section);
|
412 |
+
//print_r($this->parent->sections[$key+1]);
|
413 |
+
//echo $key;
|
414 |
+
//exit();
|
415 |
+
|
416 |
+
|
417 |
if ( method_exists( $wp_customize, 'add_panel' ) && ( ! isset( $section['subsection'] ) || ( isset( $section['subsection'] ) && $section['subsection'] != true ) ) && isset( $this->parent->sections[ ( $key + 1 ) ]['subsection'] ) && $this->parent->sections[ ( $key + 1 ) ]['subsection'] ) {
|
418 |
|
419 |
+
$this->add_panel( $section['id'], array(
|
420 |
+
'priority' => $section['priority'],
|
421 |
+
'capability' => $section['permissions'],
|
422 |
+
//'theme_supports' => '',
|
423 |
+
'title' => $section['title'],
|
424 |
+
'section' => $section,
|
425 |
+
'opt_name' => $this->parent->args['opt_name'],
|
426 |
+
'description' => '',
|
427 |
+
), $wp_customize );
|
428 |
$panel = $section['id'];
|
429 |
|
430 |
+
$this->add_section( $section['id'], array(
|
431 |
'title' => $section['title'],
|
432 |
'priority' => $section['priority'],
|
433 |
'description' => $section['desc'],
|
434 |
+
'section' => $section,
|
435 |
+
'opt_name' => $this->parent->args['opt_name'],
|
436 |
+
'capability' => $section['permissions'],
|
437 |
'panel' => $panel
|
438 |
+
), $wp_customize );
|
439 |
|
440 |
|
441 |
} else {
|
442 |
if ( ! isset( $section['subsection'] ) || ( isset( $section['subsection'] ) && $section['subsection'] != true ) ) {
|
443 |
$panel = "";
|
444 |
}
|
445 |
+
$this->add_section( $section['id'], array(
|
446 |
'title' => $section['title'],
|
447 |
'priority' => $section['priority'],
|
448 |
'description' => $section['desc'],
|
449 |
+
'opt_name' => $this->parent->args['opt_name'],
|
450 |
+
'section' => $section,
|
451 |
+
'capability' => $section['permissions'],
|
452 |
'panel' => $panel
|
453 |
+
), $wp_customize );
|
454 |
}
|
455 |
|
|
|
456 |
foreach ( $section['fields'] as $skey => $option ) {
|
457 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
458 |
if ( isset( $option['customizer'] ) && $option['customizer'] === false ) {
|
459 |
continue;
|
460 |
}
|
461 |
+
|
462 |
if ( $this->parent->args['customizer'] === false && ( ! isset( $option['customizer'] ) || $option['customizer'] !== true ) ) {
|
463 |
continue;
|
464 |
}
|
465 |
|
466 |
+
$this->options[ $option['id'] ] = $option;
|
467 |
+
add_action( 'redux/advanced_customizer/control/render/' . $this->parent->args['opt_name'] . '-' . $option['id'], array(
|
468 |
+
$this,
|
469 |
+
'render'
|
470 |
+
) );
|
471 |
+
|
472 |
+
$option['permissions'] = isset( $option['permissions'] ) ? $option['permissions'] : 'edit_theme_options';
|
473 |
+
|
474 |
+
//
|
475 |
+
//if ( isset( $option['validate_callback'] ) && ! empty( $option['validate_callback'] ) ) {
|
476 |
+
// continue;
|
477 |
+
//}
|
478 |
+
|
479 |
+
|
480 |
//Change the item priority if not set
|
481 |
if ( $option['type'] != 'heading' && ! isset( $option['priority'] ) ) {
|
482 |
$option['priority'] = $order['option'];
|
497 |
$option['title'] = "";
|
498 |
}
|
499 |
|
|
|
|
|
|
|
|
|
500 |
|
501 |
$option['id'] = $this->parent->args['opt_name'] . '[' . $option['id'] . ']';
|
502 |
|
503 |
+
if ( $option['type'] != "heading" && $option['type'] != "import_export" && ! empty( $option['type'] ) ) {
|
504 |
+
|
505 |
$wp_customize->add_setting( $option['id'],
|
506 |
array(
|
507 |
'default' => $option['default'],
|
508 |
+
//'type' => 'option',
|
509 |
+
//'capabilities' => $option['permissions'],
|
510 |
+
//'capabilities' => 'edit_theme_options',
|
511 |
//'capabilities' => $this->parent->args['page_permissions'],
|
512 |
'transport' => 'refresh',
|
513 |
+
'opt_name' => $this->parent->args['opt_name'],
|
514 |
+
//'theme_supports' => '',
|
515 |
//'sanitize_callback' => '__return_false',
|
516 |
'sanitize_callback' => array( $this, '_field_validation' ),
|
517 |
//'sanitize_js_callback' =>array( &$parent, '_field_input' ),
|
518 |
)
|
519 |
);
|
520 |
+
|
521 |
}
|
522 |
|
523 |
if ( ! empty( $option['data'] ) && empty( $option['options'] ) ) {
|
536 |
$option['options'] = $this->parent->get_wordpress_data( $option['data'], $option['args'] );
|
537 |
}
|
538 |
|
539 |
+
$class_name = 'Redux_Customizer_Control_' . $option['type'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
540 |
|
541 |
+
do_action( 'redux/extension/customizer/control_init', $option );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
542 |
|
543 |
+
if ( ! class_exists( $class_name ) ) {
|
544 |
+
continue;
|
545 |
+
}
|
|
|
|
|
|
|
546 |
|
547 |
+
$wp_customize->add_control( new $class_name( $wp_customize, $option['id'], array(
|
548 |
+
'label' => $option['title'],
|
549 |
+
'section' => $section['id'],
|
550 |
+
'settings' => $option['id'],
|
551 |
+
'type' => 'redux-' . $option['type'],
|
552 |
+
'field' => $option,
|
553 |
+
'ReduxFramework' => $this->parent,
|
554 |
+
'priority' => $option['priority'],
|
555 |
+
) ) );
|
556 |
+
|
557 |
+
$section['fields'][ $skey ]['name'] = $option['id'];
|
558 |
+
if ( ! isset ( $section['fields'][ $skey ]['class'] ) ) { // No errors please
|
559 |
+
$section['fields'][ $skey ]['class'] = "";
|
560 |
+
}
|
561 |
|
562 |
+
$this->controls[ $section['fields'][ $skey ]['id'] ] = $section['fields'][ $skey ];
|
|
|
|
|
563 |
|
564 |
+
add_action( 'redux/advanced_customizer/render/' . $option['id'], array(
|
565 |
+
$this,
|
566 |
+
'field_render'
|
567 |
+
), $option['priority'] );
|
568 |
|
|
|
|
|
|
|
569 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
570 |
}
|
571 |
}
|
572 |
|
573 |
+
}
|
574 |
+
|
575 |
+
public function add_section( $id, $args = array(), $wp_customize ) {
|
576 |
+
|
577 |
+
if ( is_a( $id, 'WP_Customize_Section' ) ) {
|
578 |
+
$section = $id;
|
579 |
+
} else {
|
580 |
+
|
581 |
+
$section_class = apply_filters( 'redux/customizer/section/class_name', "Redux_Customizer_Section" );
|
582 |
+
$section = new $section_class( $wp_customize, $id, $args );
|
583 |
+
}
|
584 |
+
|
585 |
+
$wp_customize->add_section( $section, $args );
|
586 |
+
|
587 |
+
}
|
588 |
+
|
589 |
+
/**
|
590 |
+
* Add a customize panel.
|
591 |
+
*
|
592 |
+
* @since 4.0.0
|
593 |
+
* @access public
|
594 |
+
*
|
595 |
+
* @param WP_Customize_Panel|string $id Customize Panel object, or Panel ID.
|
596 |
+
* @param array $args Optional. Panel arguments. Default empty array.
|
597 |
+
*/
|
598 |
+
public function add_panel( $id, $args = array(), $wp_customize ) {
|
599 |
+
if ( is_a( $id, 'WP_Customize_Panel' ) ) {
|
600 |
+
$panel = $id;
|
601 |
+
} else {
|
602 |
+
$panel_class = apply_filters( 'redux/customizer/panel/class_name', "Redux_Customizer_Panel" );
|
603 |
+
$panel = new $panel_class( $wp_customize, $id, $args );
|
604 |
+
}
|
605 |
+
|
606 |
+
$wp_customize->add_panel( $panel, $args );
|
607 |
+
}
|
608 |
+
|
609 |
+
public function field_render( $option ) {
|
610 |
+
echo '1';
|
611 |
+
preg_match_all( "/\[([^\]]*)\]/", $option->id, $matches );
|
612 |
+
$id = $matches[1][0];
|
613 |
+
echo $option->link();
|
614 |
+
//$link = $option->link();
|
615 |
+
//echo $link;
|
616 |
+
|
617 |
+
$this->parent->_field_input( $this->controls[ $id ] );
|
618 |
+
echo '2';
|
619 |
}
|
620 |
|
621 |
public function customizer_save_before( $plugin_options ) {
|
731 |
|
732 |
do_action( 'redux-enqueue-' . $this->args['opt_name'] );
|
733 |
|
734 |
+
|
735 |
foreach ( $this->sections as $section ) {
|
736 |
if ( isset( $section['fields'] ) ) {
|
737 |
foreach ( $section['fields'] as $field ) {
|
742 |
$class_file = apply_filters( 'redux-typeclass-load', $this->path . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field_class );
|
743 |
if ( $class_file ) {
|
744 |
/** @noinspection PhpIncludeInspection */
|
745 |
+
require_once( $class_file );
|
746 |
}
|
747 |
}
|
748 |
|
ReduxCore/inc/extensions/customizer/extension_customizer.scss
ADDED
@@ -0,0 +1,193 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.redux-section {
|
2 |
+
p.customize-section-description {
|
3 |
+
margin-top: 22px;
|
4 |
+
word-break: break-word;
|
5 |
+
&.legacy {
|
6 |
+
margin-top: 7px;
|
7 |
+
}
|
8 |
+
}
|
9 |
+
}
|
10 |
+
|
11 |
+
.control-section-themes .accordion-section-title {
|
12 |
+
margin: 0;
|
13 |
+
}
|
14 |
+
|
15 |
+
#customize-controls {
|
16 |
+
.customize-info {
|
17 |
+
margin-bottom: 0;
|
18 |
+
}
|
19 |
+
.redux-section .accordion-section-content {
|
20 |
+
background: #FCFCFC;
|
21 |
+
}
|
22 |
+
}
|
23 |
+
|
24 |
+
.redux-section .accordion-section-title i,
|
25 |
+
.redux-field .accordion-field-title i,
|
26 |
+
.redux-panel .accordion-section-title i {
|
27 |
+
margin-right: 5px;
|
28 |
+
}
|
29 |
+
|
30 |
+
.accordion-section.redux-main {
|
31 |
+
background: inherit;
|
32 |
+
margin-left: inherit;
|
33 |
+
border-left: inherit;
|
34 |
+
-moz-box-shadow: inherit;
|
35 |
+
-webkit-box-shadow: inherit;
|
36 |
+
padding: inherit;
|
37 |
+
box-shadow: inherit;
|
38 |
+
}
|
39 |
+
|
40 |
+
.redux_field_th {
|
41 |
+
padding: 13px 0px 0px 0px;
|
42 |
+
}
|
43 |
+
|
44 |
+
.redux-main {
|
45 |
+
.redux-field-container {
|
46 |
+
padding: 10px 0;
|
47 |
+
}
|
48 |
+
.select_wrapper {
|
49 |
+
float: none;
|
50 |
+
width: 100%;
|
51 |
+
display: inline-block;
|
52 |
+
}
|
53 |
+
.select2-container {
|
54 |
+
margin-right: 0 !important;
|
55 |
+
margin-bottom: 5px !important;
|
56 |
+
width: 100% !important;
|
57 |
+
}
|
58 |
+
.select_wrapper:nth-child(odd) {
|
59 |
+
margin-right: 0;
|
60 |
+
}
|
61 |
+
.redux-option-image {
|
62 |
+
max-width: 42% !important;
|
63 |
+
margin-right: 3%;
|
64 |
+
}
|
65 |
+
.customize-control {
|
66 |
+
border-bottom: 1px solid #ddd;
|
67 |
+
padding-bottom: 4px;
|
68 |
+
}
|
69 |
+
.customize-control:last-child {
|
70 |
+
border-bottom: 0;
|
71 |
+
padding-bottom: 0;
|
72 |
+
}
|
73 |
+
.upload {
|
74 |
+
width: 100% !important;
|
75 |
+
}
|
76 |
+
h3 {
|
77 |
+
margin-top: inherit;
|
78 |
+
}
|
79 |
+
.redux-container-raw {
|
80 |
+
margin-top: 22px;
|
81 |
+
word-break: break-word;
|
82 |
+
padding: 0 !important;
|
83 |
+
}
|
84 |
+
.redux-container-password input {
|
85 |
+
width: 100%;
|
86 |
+
}
|
87 |
+
}
|
88 |
+
|
89 |
+
.select2-drop {
|
90 |
+
z-index: 999999;
|
91 |
+
}
|
92 |
+
|
93 |
+
.rAdsContainer {
|
94 |
+
line-height: 0;
|
95 |
+
border: 0;
|
96 |
+
/*margin-top: -15px;*/
|
97 |
+
/*margin-bottom: -15px;*/
|
98 |
+
}
|
99 |
+
|
100 |
+
.rAds {
|
101 |
+
position: inherit !important;
|
102 |
+
right: 0 !important;
|
103 |
+
top: 0 !important;
|
104 |
+
bottom: 0 !important;
|
105 |
+
left: 0 !important;
|
106 |
+
text-align: center;
|
107 |
+
margin-bottom: 0;
|
108 |
+
line-height: 0;
|
109 |
+
-webkit-transition: left ease-in-out .18s;
|
110 |
+
transition: left ease-in-out .18s;
|
111 |
+
img {
|
112 |
+
-webkit-transition: left ease-in-out .18s;
|
113 |
+
transition: left ease-in-out .18s;
|
114 |
+
}
|
115 |
+
}
|
116 |
+
|
117 |
+
@mixin adminCustomizerThemeColorOverrides($highlight-color, $text-color) {
|
118 |
+
|
119 |
+
$menu-highlight-background: $highlight-color;
|
120 |
+
$menu-highlight-text: $text-color;
|
121 |
+
|
122 |
+
#customize-theme-controls {
|
123 |
+
.control-section.control-section-redux:hover > h3.accordion-section-title,
|
124 |
+
.control-section.control-section-redux h3.accordion-section-title:hover,
|
125 |
+
.control-section.control-section-redux.open h3.accordion-section-title,
|
126 |
+
.control-section.control-section-redux h3.accordion-section-title:focus,
|
127 |
+
.control-panel.control-panel-redux:hover > h3.accordion-section-title,
|
128 |
+
.control-panel.control-panel-redux h3.accordion-section-title:hover,
|
129 |
+
.control-panel.control-panel-redux.open h3.accordion-section-title,
|
130 |
+
.control-panel.control-panel-redux h3.accordion-section-title:focus {
|
131 |
+
color: $text-color;
|
132 |
+
background: $highlight-color;
|
133 |
+
&:after {
|
134 |
+
color: $text-color;
|
135 |
+
}
|
136 |
+
}
|
137 |
+
.control-section.control-panel.control-panel-redux>.accordion-section-title:after {
|
138 |
+
background: transparent;
|
139 |
+
border-left: none;
|
140 |
+
}
|
141 |
+
.control-panel-redux .customize-panel-back, .redux-section .customize-section-back {
|
142 |
+
&:hover {
|
143 |
+
background: $highlight-color;
|
144 |
+
color: $text-color;
|
145 |
+
}
|
146 |
+
}
|
147 |
+
}
|
148 |
+
}
|
149 |
+
|
150 |
+
/* Light fresh theme */
|
151 |
+
.admin-color-fresh {
|
152 |
+
@include adminCustomizerThemeColorOverrides(#0073aa, #fff);
|
153 |
+
}
|
154 |
+
|
155 |
+
/* Ectoplasm theme */
|
156 |
+
.admin-color-ectoplasm {
|
157 |
+
@include adminCustomizerThemeColorOverrides(#a3b745, #fff);
|
158 |
+
}
|
159 |
+
|
160 |
+
/* Light admin theme */
|
161 |
+
.admin-color-light {
|
162 |
+
@include adminCustomizerThemeColorOverrides(#888, #fff);
|
163 |
+
}
|
164 |
+
|
165 |
+
/* Blue admin theme */
|
166 |
+
.admin-color-blue {
|
167 |
+
@include adminCustomizerThemeColorOverrides(#096484, #fff);
|
168 |
+
}
|
169 |
+
|
170 |
+
/* Coffee admin theme */
|
171 |
+
.admin-color-coffee {
|
172 |
+
@include adminCustomizerThemeColorOverrides(#c7a589, #fff);
|
173 |
+
}
|
174 |
+
|
175 |
+
/* Ectoplasm admin theme */
|
176 |
+
.admin-color-ectoplasm {
|
177 |
+
@include adminCustomizerThemeColorOverrides(#523f6d, #fff);
|
178 |
+
}
|
179 |
+
|
180 |
+
/* Midnight admin theme */
|
181 |
+
.admin-color-midnight {
|
182 |
+
@include adminCustomizerThemeColorOverrides(#e14d43, #fff);
|
183 |
+
}
|
184 |
+
|
185 |
+
/* Ocean admin theme */
|
186 |
+
.admin-color-ocean {
|
187 |
+
@include adminCustomizerThemeColorOverrides(#9ebaa0, #fff);
|
188 |
+
}
|
189 |
+
|
190 |
+
/* Sunrise admin theme */
|
191 |
+
.admin-color-sunrise {
|
192 |
+
@include adminCustomizerThemeColorOverrides(#cf4944, #fff);
|
193 |
+
}
|
ReduxCore/inc/extensions/customizer/inc/customizer_control.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! class_exists( 'Redux_Customizer_Control' ) ) {
|
4 |
+
class Redux_Customizer_Control extends WP_Customize_Control {
|
5 |
+
|
6 |
+
public function render() {
|
7 |
+
$this->redux_id = str_replace( 'customize-control-', '', 'customize-control-' . str_replace( '[', '-', str_replace( ']', '', $this->id ) ) );
|
8 |
+
$class = 'customize-control redux-group-tab redux-field customize-control-' . $this->type;
|
9 |
+
?>
|
10 |
+
<li id="<?php echo esc_attr( $this->redux_id ); ?>" class="<?php echo esc_attr( $class ); ?>">
|
11 |
+
<input type="hidden" data-id="<?php echo $this->id; ?>" class="redux-customizer-input"
|
12 |
+
id="customizer_control_id_<?php echo $this->redux_id; ?>" <?php echo $this->link() ?>
|
13 |
+
value=""/>
|
14 |
+
<?php $this->render_content(); ?>
|
15 |
+
</li>
|
16 |
+
<?php
|
17 |
+
|
18 |
+
}
|
19 |
+
|
20 |
+
public function render_content() {
|
21 |
+
do_action( 'redux/advanced_customizer/control/render/' . $this->redux_id, $this );
|
22 |
+
}
|
23 |
+
|
24 |
+
public function label() {
|
25 |
+
// The label has already been sanitized in the Fields class, no need to re-sanitize it.
|
26 |
+
echo $this->label;
|
27 |
+
}
|
28 |
+
|
29 |
+
public function description() {
|
30 |
+
if ( ! empty( $this->description ) ) {
|
31 |
+
// The description has already been sanitized in the Fields class, no need to re-sanitize it.
|
32 |
+
echo '<span class="description customize-control-description">' . $this->description . '</span>';
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
public function title() {
|
37 |
+
echo '<span class="customize-control-title">';
|
38 |
+
$this->label();
|
39 |
+
$this->description();
|
40 |
+
echo '</span>';
|
41 |
+
}
|
42 |
+
}
|
43 |
+
}
|
ReduxCore/inc/extensions/customizer/inc/customizer_devs.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! class_exists( 'Redux_Customizer_Control_rAds' ) && ! class_exists( 'Redux_Customizer_section_rAds' ) ) {
|
4 |
+
/**
|
5 |
+
* Customizer section representing widget area (sidebar).
|
6 |
+
*
|
7 |
+
* @package WordPress
|
8 |
+
* @subpackage Customize
|
9 |
+
* @since 4.1.0
|
10 |
+
* @see WP_Customize_Section
|
11 |
+
*/
|
12 |
+
class Redux_Customizer_section_rAds extends WP_Customize_Section {
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Type of this section.
|
16 |
+
*
|
17 |
+
* @since 4.1.0
|
18 |
+
* @access public
|
19 |
+
* @var string
|
20 |
+
*/
|
21 |
+
public $type = 'redux-rAds';
|
22 |
+
|
23 |
+
protected function render() {
|
24 |
+
?>
|
25 |
+
<li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="accordion-section rAdsContainer"></li>
|
26 |
+
<?php
|
27 |
+
}
|
28 |
+
}
|
29 |
+
|
30 |
+
class Redux_Customizer_Control_rAds extends WP_Customize_Control {
|
31 |
+
public function render() {
|
32 |
+
}
|
33 |
+
|
34 |
+
public function label() {
|
35 |
+
}
|
36 |
+
|
37 |
+
public function description() {
|
38 |
+
}
|
39 |
+
|
40 |
+
public function title() {
|
41 |
+
}
|
42 |
+
}
|
43 |
+
}
|
ReduxCore/inc/extensions/customizer/inc/customizer_fields.php
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Redux_Customizer_Control_checkbox extends Redux_Customizer_Control {
|
4 |
+
public $type = "redux-checkbox";
|
5 |
+
}
|
6 |
+
class Redux_Customizer_Control_color_rgba extends Redux_Customizer_Control {
|
7 |
+
public $type = "redux-color_rgba";
|
8 |
+
}
|
9 |
+
class Redux_Customizer_Control_color extends Redux_Customizer_Control {
|
10 |
+
public $type = "redux-color";
|
11 |
+
}
|
12 |
+
class Redux_Customizer_Control_raw extends Redux_Customizer_Control {
|
13 |
+
public $type = "redux-raw";
|
14 |
+
}
|
15 |
+
class Redux_Customizer_Control_media extends Redux_Customizer_Control {
|
16 |
+
public $type = "redux-media";
|
17 |
+
}
|
18 |
+
class Redux_Customizer_Control_spinner extends Redux_Customizer_Control {
|
19 |
+
public $type = "redux-spinner";
|
20 |
+
}
|
21 |
+
class Redux_Customizer_Control_palette extends Redux_Customizer_Control {
|
22 |
+
public $type = "redux-palette";
|
23 |
+
}
|
24 |
+
class Redux_Customizer_Control_button_set extends Redux_Customizer_Control {
|
25 |
+
public $type = "redux-button_set";
|
26 |
+
}
|
27 |
+
class Redux_Customizer_Control_image_select extends Redux_Customizer_Control {
|
28 |
+
public $type = "redux-image_select";
|
29 |
+
}
|
30 |
+
class Redux_Customizer_Control_radio extends Redux_Customizer_Control {
|
31 |
+
public $type = "redux-radio";
|
32 |
+
}
|
33 |
+
class Redux_Customizer_Control_select extends Redux_Customizer_Control {
|
34 |
+
public $type = "redux-select";
|
35 |
+
}
|
36 |
+
class Redux_Customizer_Control_gallery extends Redux_Customizer_Control {
|
37 |
+
public $type = "redux-gallery";
|
38 |
+
}
|
39 |
+
class Redux_Customizer_Control_slider extends Redux_Customizer_Control {
|
40 |
+
public $type = "redux-slider";
|
41 |
+
}
|
42 |
+
class Redux_Customizer_Control_sortable extends Redux_Customizer_Control {
|
43 |
+
public $type = "redux-sortable";
|
44 |
+
}
|
45 |
+
class Redux_Customizer_Control_switch extends Redux_Customizer_Control {
|
46 |
+
public $type = "redux-switch";
|
47 |
+
}
|
48 |
+
class Redux_Customizer_Control_text extends Redux_Customizer_Control {
|
49 |
+
public $type = "redux-text";
|
50 |
+
}
|
51 |
+
class Redux_Customizer_Control_textarea extends Redux_Customizer_Control {
|
52 |
+
public $type = "redux-textarea";
|
53 |
+
}
|
ReduxCore/inc/extensions/customizer/inc/customizer_panel.php
ADDED
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Customizer section representing widget area (sidebar).
|
5 |
+
*
|
6 |
+
* @package WordPress
|
7 |
+
* @subpackage Customize
|
8 |
+
* @since 4.1.0
|
9 |
+
* @see WP_Customize_Section
|
10 |
+
*/
|
11 |
+
class Redux_Customizer_Panel extends WP_Customize_Panel {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Type of this panel.
|
15 |
+
*
|
16 |
+
* @since 4.1.0
|
17 |
+
* @access public
|
18 |
+
* @var string
|
19 |
+
*/
|
20 |
+
public $type = 'redux';
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Constructor.
|
24 |
+
* Any supplied $args override class property defaults.
|
25 |
+
*
|
26 |
+
* @since 4.0.0
|
27 |
+
*
|
28 |
+
* @param WP_Customize_Manager $manager Customizer bootstrap instance.
|
29 |
+
* @param string $id An specific ID for the panel.
|
30 |
+
* @param array $args Panel arguments.
|
31 |
+
*/
|
32 |
+
public function __construct( $manager, $id, $args = array() ) {
|
33 |
+
$keys = array_keys( get_object_vars( $this ) );
|
34 |
+
foreach ( $keys as $key ) {
|
35 |
+
if ( isset( $args[ $key ] ) ) {
|
36 |
+
$this->$key = $args[ $key ];
|
37 |
+
}
|
38 |
+
}
|
39 |
+
$this->manager = $manager;
|
40 |
+
$this->id = $id;
|
41 |
+
if ( empty( $this->active_callback ) ) {
|
42 |
+
$this->active_callback = array( $this, 'active_callback' );
|
43 |
+
}
|
44 |
+
self::$instance_count += 1;
|
45 |
+
$this->instance_number = self::$instance_count;
|
46 |
+
|
47 |
+
$this->sections = array(); // Users cannot customize the $sections array.
|
48 |
+
|
49 |
+
// TODO Redux addition
|
50 |
+
if ( isset( $args['section'] ) ) {
|
51 |
+
$this->section = $args['section'];
|
52 |
+
$this->description = isset( $this->section['desc'] ) ? $this->section['desc'] : '';
|
53 |
+
$this->opt_name = isset( $args['opt_name'] ) ? $args['opt_name'] : '';
|
54 |
+
}
|
55 |
+
// TODO END Redux Addition
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* WP < 4.3 Render
|
60 |
+
*
|
61 |
+
* @since
|
62 |
+
* @access protected
|
63 |
+
*/
|
64 |
+
protected function render() {
|
65 |
+
global $wp_version;
|
66 |
+
$version = explode( '-', $wp_version );
|
67 |
+
if ( version_compare( $version[0], '4.3', '<' ) ) {
|
68 |
+
$this->render_fallback();
|
69 |
+
}
|
70 |
+
|
71 |
+
}
|
72 |
+
|
73 |
+
protected function render_fallback() {
|
74 |
+
$classes = 'accordion-section redux-main redux-panel control-section control-panel control-panel-' . $this->type;
|
75 |
+
?>
|
76 |
+
<li id="accordion-panel-<?php echo esc_attr( $this->id ); ?>" class="<?php echo esc_attr( $classes ); ?>">
|
77 |
+
<h3 class="accordion-section-title" tabindex="0">
|
78 |
+
<?php
|
79 |
+
echo wp_kses( $this->title, array(
|
80 |
+
'em' => array(),
|
81 |
+
'i' => array(),
|
82 |
+
'strong' => array(),
|
83 |
+
'span' => array(
|
84 |
+
'class' => array(),
|
85 |
+
'style' => array(),
|
86 |
+
),
|
87 |
+
) );
|
88 |
+
?>
|
89 |
+
<span class="screen-reader-text"><?php _e( 'Press return or enter to open this panel', 'redux-framework' ); ?></span>
|
90 |
+
</h3>
|
91 |
+
<ul class="accordion-sub-container control-panel-content">
|
92 |
+
<table class="form-table">
|
93 |
+
<tbody><?php $this->render_content(); ?></tbody>
|
94 |
+
</table>
|
95 |
+
</ul>
|
96 |
+
</li>
|
97 |
+
<?php
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Render the sections that have been added to the panel.
|
102 |
+
*
|
103 |
+
* @since 4.1.0
|
104 |
+
* @access protected
|
105 |
+
*/
|
106 |
+
protected function render_content() {
|
107 |
+
?>
|
108 |
+
<li class="panel-meta accordion-section redux-panel redux-panel-meta control-section<?php if ( empty( $this->description ) ) {
|
109 |
+
echo ' cannot-expand';
|
110 |
+
} ?>">
|
111 |
+
<div class="accordion-section-title" tabindex="0">
|
112 |
+
<span class="preview-notice"><?php
|
113 |
+
/* translators: %s is the site/panel title in the Customizer */
|
114 |
+
echo sprintf( __( 'You are customizing %s', 'redux-framework' ), '<strong class="panel-title">' . esc_html( $this->title ) . '</strong>' );
|
115 |
+
?></span>
|
116 |
+
</div>
|
117 |
+
<?php if ( ! empty( $this->description ) ) : ?>
|
118 |
+
<div class="accordion-section-content description legacy">
|
119 |
+
<?php echo $this->description; ?>
|
120 |
+
</div>
|
121 |
+
<?php endif; ?>
|
122 |
+
</li>
|
123 |
+
<?php
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* An Underscore (JS) template for this panel's content (but not its container).
|
128 |
+
* Class variables for this panel class are available in the `data` JS object;
|
129 |
+
* export custom variables by overriding {@see WP_Customize_Panel::json()}.
|
130 |
+
*
|
131 |
+
* @see WP_Customize_Panel::print_template()
|
132 |
+
* @since 4.3.0
|
133 |
+
*/
|
134 |
+
protected function content_template() {
|
135 |
+
?>
|
136 |
+
<li class="panel-meta customize-info redux-panel accordion-section <# if ( ! data.description ) { #> cannot-expand<# } #>">
|
137 |
+
<button class="customize-panel-back" tabindex="-1">
|
138 |
+
<span class="screen-reader-text"><?php _e( 'Back', 'redux-framework' ); ?></span></button>
|
139 |
+
<div class="accordion-section-title">
|
140 |
+
<span class="preview-notice"><?php
|
141 |
+
/* translators: %s is the site/panel title in the Customizer */
|
142 |
+
echo sprintf( __( 'You are customizing %s', 'redux-framework' ), '<strong class="panel-title">{{ data.title }}</strong>' );
|
143 |
+
?></span>
|
144 |
+
<# if ( data.description ) { #>
|
145 |
+
<button class="customize-help-toggle dashicons dashicons-editor-help" tabindex="0" aria-expanded="false">
|
146 |
+
<span class="screen-reader-text"><?php _e( 'Help', 'redux-framework' ); ?></span></button>
|
147 |
+
<# } #>
|
148 |
+
</div>
|
149 |
+
<# if ( data.description ) { #>
|
150 |
+
<div class="description customize-panel-description">
|
151 |
+
{{{ data.description }}}
|
152 |
+
</div>
|
153 |
+
<# } #>
|
154 |
+
</li>
|
155 |
+
<?php
|
156 |
+
}
|
157 |
+
}
|
ReduxCore/inc/extensions/customizer/inc/customizer_section.php
ADDED
@@ -0,0 +1,150 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Customizer section representing widget area (sidebar).
|
6 |
+
*
|
7 |
+
* @package WordPress
|
8 |
+
* @subpackage Customize
|
9 |
+
* @since 4.1.0
|
10 |
+
* @see WP_Customize_Section
|
11 |
+
*/
|
12 |
+
class Redux_Customizer_Section extends WP_Customize_Section {
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Type of this section.
|
16 |
+
*
|
17 |
+
* @since 4.1.0
|
18 |
+
* @access public
|
19 |
+
* @var string
|
20 |
+
*/
|
21 |
+
public $type = 'redux';
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Constructor.
|
25 |
+
* Any supplied $args override class property defaults.
|
26 |
+
*
|
27 |
+
* @since 3.4.0
|
28 |
+
*
|
29 |
+
* @param WP_Customize_Manager $manager Customizer bootstrap instance.
|
30 |
+
* @param string $id An specific ID of the section.
|
31 |
+
* @param array $args Section arguments.
|
32 |
+
*/
|
33 |
+
public function __construct( $manager, $id, $args = array() ) {
|
34 |
+
$keys = array_keys( get_object_vars( $this ) );
|
35 |
+
foreach ( $keys as $key ) {
|
36 |
+
if ( isset( $args[ $key ] ) ) {
|
37 |
+
$this->$key = $args[ $key ];
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
$this->manager = $manager;
|
42 |
+
$this->id = $id;
|
43 |
+
if ( empty( $this->active_callback ) ) {
|
44 |
+
$this->active_callback = array( $this, 'active_callback' );
|
45 |
+
}
|
46 |
+
self::$instance_count += 1;
|
47 |
+
$this->instance_number = self::$instance_count;
|
48 |
+
|
49 |
+
$this->controls = array(); // Users cannot customize the $controls array.
|
50 |
+
|
51 |
+
// TODO Redux addition
|
52 |
+
if ( isset( $args['section'] ) ) {
|
53 |
+
$this->section = $args['section'];
|
54 |
+
$this->description = isset( $this->section['desc'] ) ? $this->section['desc'] : '';
|
55 |
+
$this->opt_name = isset( $args['opt_name'] ) ? $args['opt_name'] : '';
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* An Underscore (JS) template for rendering this section.
|
61 |
+
* Class variables for this section class are available in the `data` JS object;
|
62 |
+
* export custom variables by overriding {@see WP_Customize_Section::json()}.
|
63 |
+
*
|
64 |
+
* @see WP_Customize_Section::print_template()
|
65 |
+
* @since 4.3.0
|
66 |
+
*/
|
67 |
+
protected function render_template() {
|
68 |
+
?>
|
69 |
+
<li id="accordion-section-{{ data.id }}" class="redux-section accordion-section control-section control-section-{{ data.type }}">
|
70 |
+
<h3 class="accordion-section-title" tabindex="0">
|
71 |
+
{{ data.title }}
|
72 |
+
<span class="screen-reader-text"><?php _e( 'Press return or enter to open', 'redux-framework' ); ?></span>
|
73 |
+
</h3>
|
74 |
+
<ul class="accordion-section-content redux-main">
|
75 |
+
|
76 |
+
<li class="customize-section-description-container">
|
77 |
+
<div class="customize-section-title">
|
78 |
+
<button class="customize-section-back" tabindex="-1">
|
79 |
+
<span class="screen-reader-text"><?php _e( 'Back', 'redux-framework' ); ?></span>
|
80 |
+
</button>
|
81 |
+
<h3>
|
82 |
+
<span class="customize-action">
|
83 |
+
{{{ data.customizeAction }}}
|
84 |
+
</span> {{ data.title }}
|
85 |
+
</h3>
|
86 |
+
</div>
|
87 |
+
<# if ( data.description ) { #>
|
88 |
+
<p class="description customize-section-description">{{{ data.description }}}</p>
|
89 |
+
<# } #>
|
90 |
+
<?php
|
91 |
+
if ( isset( $this->opt_name ) && isset( $this->section ) ) {
|
92 |
+
do_action( "redux/page/{$this->opt_name}/section/before", $this->section );
|
93 |
+
}
|
94 |
+
?>
|
95 |
+
</li>
|
96 |
+
</ul>
|
97 |
+
</li>
|
98 |
+
<?php
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Render the section, and the controls that have been added to it.
|
103 |
+
*
|
104 |
+
* @since 3.4.0
|
105 |
+
*/
|
106 |
+
protected function render_fallback() {
|
107 |
+
$classes = 'accordion-section redux-section control-section control-section-' . $this->type;
|
108 |
+
?>
|
109 |
+
<li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="<?php echo esc_attr( $classes ); ?>">
|
110 |
+
<h3 class="accordion-section-title" tabindex="0">
|
111 |
+
<?php
|
112 |
+
echo wp_kses( $this->title, array(
|
113 |
+
'em' => array(),
|
114 |
+
'i' => array(),
|
115 |
+
'strong' => array(),
|
116 |
+
'span' => array(
|
117 |
+
'class' => array(),
|
118 |
+
'style' => array(),
|
119 |
+
),
|
120 |
+
) );
|
121 |
+
?>
|
122 |
+
<span class="screen-reader-text"><?php _e( 'Press return or enter to expand', 'redux-framework' ); ?></span>
|
123 |
+
</h3>
|
124 |
+
<ul class="accordion-section-content redux-main">
|
125 |
+
<?php
|
126 |
+
if ( isset( $this->opt_name ) && isset( $this->section ) ) {
|
127 |
+
do_action( "redux/page/{$this->opt_name}/section/before", $this->section );
|
128 |
+
}
|
129 |
+
?>
|
130 |
+
<?php if ( ! empty( $this->description ) ) : ?>
|
131 |
+
<li class="customize-section-description-container">
|
132 |
+
<p class="description customize-section-description legacy"><?php echo $this->description; ?></p>
|
133 |
+
</li>
|
134 |
+
<?php endif; ?>
|
135 |
+
</ul>
|
136 |
+
</li>
|
137 |
+
<?php
|
138 |
+
}
|
139 |
+
|
140 |
+
protected function render() {
|
141 |
+
global $wp_version;
|
142 |
+
$version = explode( '-', $wp_version );
|
143 |
+
if ( version_compare( $version[0], '4.3', '<' ) ) {
|
144 |
+
$this->render_fallback();
|
145 |
+
}
|
146 |
+
}
|
147 |
+
|
148 |
+
}
|
149 |
+
|
150 |
+
|
ReduxCore/inc/fields/background/field_background.js
CHANGED
@@ -151,6 +151,7 @@
|
|
151 |
}
|
152 |
}
|
153 |
redux.field_objects.background.preview( $( this ) );
|
|
|
154 |
}
|
155 |
);
|
156 |
|
151 |
}
|
152 |
}
|
153 |
redux.field_objects.background.preview( $( this ) );
|
154 |
+
redux_change( $( this ) );
|
155 |
}
|
156 |
);
|
157 |
|
ReduxCore/inc/fields/background/field_background.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.background=redux.field_objects.background||{},redux.field_objects.background.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-background:visible")),a(b).each(function(){var b=a(this),c=b;if(b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),!c.is(":hidden")&&c.hasClass("redux-field-init")){c.removeClass("redux-field-init"),b.find(".redux-remove-background").unbind("click").on("click",function(b){return b.preventDefault(),redux.field_objects.background.removeImage(a(this).parents(".redux-container-background:first")),!1}),b.find(".redux-background-upload").unbind().on("click",function(b){redux.field_objects.background.addImage(b,a(this).parents(".redux-container-background:first"))}),b.find(".redux-background-input").on("change",function(){redux.field_objects.background.preview(a(this))}),b.find(".redux-color").wpColorPicker({change:function(b,c){a(this).val(c.color.toString()),redux_change(a(this)),a("#"+b.target.id+"-transparency").removeAttr("checked"),redux.field_objects.background.preview(a(this))},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init")),redux.field_objects.background.preview(a(this))}}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("focus",function(){a(this).data("oldcolor",a(this).val())}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}redux.field_objects.background.preview(a(this))});var d={width:"resolve",triggerChange:!0,allowClear:!0},e=b.find(".select2_params");if(e.size()>0){var f=e.val();f=JSON.parse(f),d=a.extend({},d,f)}b.find(" .redux-background-repeat, .redux-background-clip, .redux-background-origin, .redux-background-size, .redux-background-attachment, .redux-background-position").select2(d)}})},redux.field_objects.background.preview=function(b){var c=a(b).parents(".redux-container-background:first"),d=a(c).find(".background-preview");if(d){var e=!0,f="height:"+d.height()+"px;";a(c).find(".redux-background-input").each(function(){var b=a(this).serializeArray();b=b[0],b&&-1!=b.name.indexOf("[background-")&&""!==b.value&&(e=!1,b.name=b.name.split("[background-"),b.name="background-"+b.name[1].replace("]",""),f+="background-image"==b.name?b.name+':url("'+b.value+'");':b.name+":"+b.value+";")}),e?d.slideUp():d.attr("style",f).fadeIn()}},redux.field_objects.background.addImage=function(b,c){b.preventDefault();var d,e=a(this);return d?void d.open():(d=wp.media({multiple:!1,library:{},title:e.data("choose"),button:{text:e.data("update")}}),d.on("select",function(){var b=d.state().get("selection").first();if(d.close(),"image"===b.attributes.type){c.find(".upload").val(b.attributes.url),c.find(".upload-id").val(b.attributes.id),c.find(".upload-height").val(b.attributes.height),c.find(".upload-width").val(b.attributes.width),redux_change(a(c).find(".upload-id"));var e=b.attributes.url;if("undefined"!=typeof b.attributes.sizes&&"undefined"!=typeof b.attributes.sizes.thumbnail)e=b.attributes.sizes.thumbnail.url;else if("undefined"!=typeof b.attributes.sizes){var f=b.attributes.height;for(var g in b.attributes.sizes){var h=b.attributes.sizes[g];h.height<f&&(f=h.height,e=h.url)}}else e=b.attributes.icon;c.find(".upload-thumbnail").val(e),c.find(".upload").hasClass("noPreview")||c.find(".screenshot").empty().hide().append('<img class="redux-option-image" src="'+e+'">').slideDown("fast"),c.find(".redux-remove-background").removeClass("hide"),c.find(".redux-background-input-properties").slideDown(),redux.field_objects.background.preview(c.find(".upload"))}}),void d.open())},redux.field_objects.background.removeImage=function(b){if(b.find(".redux-remove-background").addClass("hide")){b.find(".redux-remove-background").addClass("hide"),b.find(".upload").val(""),b.find(".upload-id").val(""),b.find(".upload-height").val(""),b.find(".upload-width").val(""),redux_change(a(b).find(".upload-id")),b.find(".redux-background-input-properties").hide();var c=b.find(".screenshot");c.slideUp(),b.find(".remove-file").unbind(),a(".section-upload .upload-notice").length>0&&a(".redux-background-upload").remove()}}}(jQuery);
|
1 |
+
!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.background=redux.field_objects.background||{},redux.field_objects.background.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-background:visible")),a(b).each(function(){var b=a(this),c=b;if(b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),!c.is(":hidden")&&c.hasClass("redux-field-init")){c.removeClass("redux-field-init"),b.find(".redux-remove-background").unbind("click").on("click",function(b){return b.preventDefault(),redux.field_objects.background.removeImage(a(this).parents(".redux-container-background:first")),!1}),b.find(".redux-background-upload").unbind().on("click",function(b){redux.field_objects.background.addImage(b,a(this).parents(".redux-container-background:first"))}),b.find(".redux-background-input").on("change",function(){redux.field_objects.background.preview(a(this))}),b.find(".redux-color").wpColorPicker({change:function(b,c){a(this).val(c.color.toString()),redux_change(a(this)),a("#"+b.target.id+"-transparency").removeAttr("checked"),redux.field_objects.background.preview(a(this))},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init")),redux.field_objects.background.preview(a(this))}}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("focus",function(){a(this).data("oldcolor",a(this).val())}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}redux.field_objects.background.preview(a(this)),redux_change(a(this))});var d={width:"resolve",triggerChange:!0,allowClear:!0},e=b.find(".select2_params");if(e.size()>0){var f=e.val();f=JSON.parse(f),d=a.extend({},d,f)}b.find(" .redux-background-repeat, .redux-background-clip, .redux-background-origin, .redux-background-size, .redux-background-attachment, .redux-background-position").select2(d)}})},redux.field_objects.background.preview=function(b){var c=a(b).parents(".redux-container-background:first"),d=a(c).find(".background-preview");if(d){var e=!0,f="height:"+d.height()+"px;";a(c).find(".redux-background-input").each(function(){var b=a(this).serializeArray();b=b[0],b&&-1!=b.name.indexOf("[background-")&&""!==b.value&&(e=!1,b.name=b.name.split("[background-"),b.name="background-"+b.name[1].replace("]",""),f+="background-image"==b.name?b.name+':url("'+b.value+'");':b.name+":"+b.value+";")}),e?d.slideUp():d.attr("style",f).fadeIn()}},redux.field_objects.background.addImage=function(b,c){b.preventDefault();var d,e=a(this);return d?void d.open():(d=wp.media({multiple:!1,library:{},title:e.data("choose"),button:{text:e.data("update")}}),d.on("select",function(){var b=d.state().get("selection").first();if(d.close(),"image"===b.attributes.type){c.find(".upload").val(b.attributes.url),c.find(".upload-id").val(b.attributes.id),c.find(".upload-height").val(b.attributes.height),c.find(".upload-width").val(b.attributes.width),redux_change(a(c).find(".upload-id"));var e=b.attributes.url;if("undefined"!=typeof b.attributes.sizes&&"undefined"!=typeof b.attributes.sizes.thumbnail)e=b.attributes.sizes.thumbnail.url;else if("undefined"!=typeof b.attributes.sizes){var f=b.attributes.height;for(var g in b.attributes.sizes){var h=b.attributes.sizes[g];h.height<f&&(f=h.height,e=h.url)}}else e=b.attributes.icon;c.find(".upload-thumbnail").val(e),c.find(".upload").hasClass("noPreview")||c.find(".screenshot").empty().hide().append('<img class="redux-option-image" src="'+e+'">').slideDown("fast"),c.find(".redux-remove-background").removeClass("hide"),c.find(".redux-background-input-properties").slideDown(),redux.field_objects.background.preview(c.find(".upload"))}}),void d.open())},redux.field_objects.background.removeImage=function(b){if(b.find(".redux-remove-background").addClass("hide")){b.find(".redux-remove-background").addClass("hide"),b.find(".upload").val(""),b.find(".upload-id").val(""),b.find(".upload-height").val(""),b.find(".upload-width").val(""),redux_change(a(b).find(".upload-id")),b.find(".redux-background-input-properties").hide();var c=b.find(".screenshot");c.slideUp(),b.find(".remove-file").unbind(),a(".section-upload .upload-notice").length>0&&a(".redux-background-upload").remove()}}}(jQuery);
|
ReduxCore/inc/fields/border/field_border.php
CHANGED
@@ -168,6 +168,7 @@ if ( ! class_exists( 'ReduxFramework_border' ) ) {
|
|
168 |
'solid' => 'Solid',
|
169 |
'dashed' => 'Dashed',
|
170 |
'dotted' => 'Dotted',
|
|
|
171 |
'none' => 'None'
|
172 |
);
|
173 |
echo '<select original-title="' . __( 'Border style', 'redux-framework' ) . '" id="' . $this->field['id'] . '[border-style]" name="' . $this->field['name'] . $this->field['name_suffix'] . '[border-style]" class="tips redux-border-style ' . $this->field['class'] . '" rows="6" data-id="' . $this->field['id'] . '">';
|
168 |
'solid' => 'Solid',
|
169 |
'dashed' => 'Dashed',
|
170 |
'dotted' => 'Dotted',
|
171 |
+
'double' => "Double",
|
172 |
'none' => 'None'
|
173 |
);
|
174 |
echo '<select original-title="' . __( 'Border style', 'redux-framework' ) . '" id="' . $this->field['id'] . '[border-style]" name="' . $this->field['name'] . $this->field['name_suffix'] . '[border-style]" class="tips redux-border-style ' . $this->field['class'] . '" rows="6" data-id="' . $this->field['id'] . '">';
|
ReduxCore/inc/fields/color/field_color.js
CHANGED
@@ -167,6 +167,7 @@
|
|
167 |
el.find( '#' + $( this ).data( 'id' ) ).val( prevColor );
|
168 |
}
|
169 |
}
|
|
|
170 |
}
|
171 |
);
|
172 |
}
|
167 |
el.find( '#' + $( this ).data( 'id' ) ).val( prevColor );
|
168 |
}
|
169 |
}
|
170 |
+
redux_change( $( this ) );
|
171 |
}
|
172 |
);
|
173 |
}
|
ReduxCore/inc/fields/color/field_color.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color=redux.field_objects.color||{},a(document).ready(function(){}),redux.field_objects.color.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-color:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-color-init").wpColorPicker({change:function(c,d){a(this).val(d.color.toString()),redux_change(a(this)),b.find("#"+c.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init"))}}),b.find(".redux-color").on("focus",function(){a(this).data("oldcolor",a(this).val())}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}}))})}}(jQuery);
|
1 |
+
!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color=redux.field_objects.color||{},a(document).ready(function(){}),redux.field_objects.color.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-color:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-color-init").wpColorPicker({change:function(c,d){a(this).val(d.color.toString()),redux_change(a(this)),b.find("#"+c.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init"))}}),b.find(".redux-color").on("focus",function(){a(this).data("oldcolor",a(this).val())}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}redux_change(a(this))}))})}}(jQuery);
|
ReduxCore/inc/fields/color_gradient/field_color_gradient.js
CHANGED
@@ -133,6 +133,7 @@
|
|
133 |
el.find( '#' + $( this ).data( 'id' ) ).val( prevColor );
|
134 |
}
|
135 |
}
|
|
|
136 |
}
|
137 |
);
|
138 |
}
|
133 |
el.find( '#' + $( this ).data( 'id' ) ).val( prevColor );
|
134 |
}
|
135 |
}
|
136 |
+
redux_change( $( this ) );
|
137 |
}
|
138 |
);
|
139 |
}
|
ReduxCore/inc/fields/color_gradient/field_color_gradient.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color_gradient=redux.field_objects.color_gradient||{},a(document).ready(function(){}),redux.field_objects.color_gradient.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-color_gradient:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-color-init").wpColorPicker({change:function(c,d){a(this).val(d.color.toString()),redux_change(a(this)),b.find("#"+c.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init"))}}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}}))})}}(jQuery);
|
1 |
+
!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color_gradient=redux.field_objects.color_gradient||{},a(document).ready(function(){}),redux.field_objects.color_gradient.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-color_gradient:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-color-init").wpColorPicker({change:function(c,d){a(this).val(d.color.toString()),redux_change(a(this)),b.find("#"+c.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init"))}}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}redux_change(a(this))}))})}}(jQuery);
|
ReduxCore/inc/fields/editor/field_editor_c.php
ADDED
File without changes
|
ReduxCore/inc/fields/media/field_media.php
CHANGED
@@ -153,7 +153,7 @@ if ( ! class_exists( 'ReduxFramework_media' ) ) {
|
|
153 |
$readOnly = '';
|
154 |
}
|
155 |
|
156 |
-
echo '<input placeholder="' . $placeholder . '" type="text" class="' . $hide . 'upload
|
157 |
echo '<input type="hidden" class="data" data-mode="' . $this->field['mode'] . '" />';
|
158 |
echo '<input type="hidden" class="library-filter" data-lib-filter="' . $libFilter . '" />';
|
159 |
echo '<input type="hidden" class="upload-id ' . $this->field['class'] . '" name="' . $this->field['name'] . $this->field['name_suffix'] . '[id]" id="' . $this->parent->args['opt_name'] . '[' . $this->field['id'] . '][id]" value="' . $this->value['id'] . '" />';
|
153 |
$readOnly = '';
|
154 |
}
|
155 |
|
156 |
+
echo '<input placeholder="' . $placeholder . '" type="text" class="' . $hide . 'upload large-text ' . $this->field['class'] . '" name="' . $this->field['name'] . $this->field['name_suffix'] . '[url]" id="' . $this->parent->args['opt_name'] . '[' . $this->field['id'] . '][url]" value="' . $this->value['url'] . '"' . $readOnly . '/>';
|
157 |
echo '<input type="hidden" class="data" data-mode="' . $this->field['mode'] . '" />';
|
158 |
echo '<input type="hidden" class="library-filter" data-lib-filter="' . $libFilter . '" />';
|
159 |
echo '<input type="hidden" class="upload-id ' . $this->field['class'] . '" name="' . $this->field['name'] . $this->field['name_suffix'] . '[id]" id="' . $this->parent->args['opt_name'] . '[' . $this->field['id'] . '][id]" value="' . $this->value['id'] . '" />';
|
ReduxCore/inc/fields/palette/field_palette.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.redux-container-palette label{border
|
1 |
+
.redux-container-palette label{border:3px solid transparent;border-color:transparent !important;border-radius:0;width:100% !important;display:block}.redux-container-palette label.ui-button.ui-widget{width:95%;background:none;padding:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text{display:flex}.redux-container-palette label.ui-button.ui-widget .ui-button-text span{padding:10px;flex-grow:1;font-size:0;line-height:10px;color:transparent;-webkit-transition:all 200ms ease-in-out;-moz-transition:all 200ms ease-in-out;-ms-transition:all 200ms ease-in-out;-o-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text span:hover{flex-grow:3;font-weight:bold;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff, 0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333 !important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}
|
ReduxCore/inc/fields/palette/field_palette.scss
CHANGED
@@ -1,9 +1,11 @@
|
|
1 |
.redux-container-palette {
|
2 |
label {
|
3 |
-
border
|
|
|
4 |
border-radius: 0;
|
5 |
//border: 0;
|
6 |
width: 100% !important;
|
|
|
7 |
&.ui-button.ui-widget {
|
8 |
width: 95%;
|
9 |
background: none;
|
1 |
.redux-container-palette {
|
2 |
label {
|
3 |
+
border: 3px solid transparent;
|
4 |
+
border-color: transparent !important;
|
5 |
border-radius: 0;
|
6 |
//border: 0;
|
7 |
width: 100% !important;
|
8 |
+
display: block;
|
9 |
&.ui-button.ui-widget {
|
10 |
width: 95%;
|
11 |
background: none;
|
ReduxCore/inc/fields/select/field_select.js
CHANGED
@@ -36,6 +36,9 @@
|
|
36 |
triggerChange: true,
|
37 |
allowClear: true
|
38 |
};
|
|
|
|
|
|
|
39 |
|
40 |
if ( $( this ).siblings( '.select2_params' ).size() > 0 ) {
|
41 |
var select2_params = $( this ).siblings( '.select2_params' ).val();
|
36 |
triggerChange: true,
|
37 |
allowClear: true
|
38 |
};
|
39 |
+
if ( $(this).attr('multiple') == "multiple" ) {
|
40 |
+
default_params.width = "100%";
|
41 |
+
}
|
42 |
|
43 |
if ( $( this ).siblings( '.select2_params' ).size() > 0 ) {
|
44 |
var select2_params = $( this ).siblings( '.select2_params' ).val();
|
ReduxCore/inc/fields/select/field_select.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.select=redux.field_objects.select||{},redux.field_objects.select.init=function(b){b||(b=a(document).find(".redux-container-select:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find("select.redux-select-item").each(function(){var b={width:"resolve",triggerChange:!0,allowClear:!0};if(a(this).siblings(".select2_params").size()>0){var c=a(this).siblings(".select2_params").val();c=JSON.parse(c),b=a.extend({},b,c)}a(this).hasClass("font-icons")&&(b=a.extend({},{formatResult:redux.field_objects.select.addIcon,formatSelection:redux.field_objects.select.addIcon,escapeMarkup:function(a){return a}},b)),a(this).select2(b),a(this).hasClass("select2-sortable")&&(b={},b.bindOrder="sortableStop",b.sortableOptions={placeholder:"ui-state-highlight"},a(this).select2Sortable(b)),a(this).on("change",function(){redux_change(a(a(this))),a(this).select2SortableOrder()})}))})},redux.field_objects.select.addIcon=function(a){return a.hasOwnProperty("id")?"<span class='elusive'><i class='"+a.id+"'></i> "+a.text+"</span>":void 0}}(jQuery);
|
1 |
+
!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.select=redux.field_objects.select||{},redux.field_objects.select.init=function(b){b||(b=a(document).find(".redux-container-select:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find("select.redux-select-item").each(function(){var b={width:"resolve",triggerChange:!0,allowClear:!0};if("multiple"==a(this).attr("multiple")&&(b.width="100%"),a(this).siblings(".select2_params").size()>0){var c=a(this).siblings(".select2_params").val();c=JSON.parse(c),b=a.extend({},b,c)}a(this).hasClass("font-icons")&&(b=a.extend({},{formatResult:redux.field_objects.select.addIcon,formatSelection:redux.field_objects.select.addIcon,escapeMarkup:function(a){return a}},b)),a(this).select2(b),a(this).hasClass("select2-sortable")&&(b={},b.bindOrder="sortableStop",b.sortableOptions={placeholder:"ui-state-highlight"},a(this).select2Sortable(b)),a(this).on("change",function(){redux_change(a(a(this))),a(this).select2SortableOrder()})}))})},redux.field_objects.select.addIcon=function(a){return a.hasOwnProperty("id")?"<span class='elusive'><i class='"+a.id+"'></i> "+a.text+"</span>":void 0}}(jQuery);
|
ReduxCore/inc/fields/text/field_text.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.redux-container-text label{display:block;position:relative;font-size:12px !important;text-align:left;color:#999999;margin:4px 0 2px 0 !important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}
|
1 |
+
.redux-container-text label{display:block;position:relative;font-size:12px !important;text-align:left;color:#999999;margin:4px 0 2px 0 !important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.wp-customizer .redux-container-text .input_wrapper{width:100%;max-width:100%;height:auto}
|
ReduxCore/inc/fields/text/field_text.scss
CHANGED
@@ -16,19 +16,29 @@
|
|
16 |
}
|
17 |
|
18 |
.input_wrapper {
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
}
|
34 |
}
|
16 |
}
|
17 |
|
18 |
.input_wrapper {
|
19 |
+
display: block;
|
20 |
+
position: relative;
|
21 |
+
padding: 0;
|
22 |
+
width: 23%;
|
23 |
+
max-width: 23%;
|
24 |
+
min-width: 70px;
|
25 |
+
float: left;
|
26 |
+
clear: left;
|
27 |
+
height: 57px;
|
28 |
+
-webkit-box-sizing: border-box;
|
29 |
+
-moz-box-sizing: border-box;
|
30 |
+
-o-box-sizing: border-box;
|
31 |
+
box-sizing: border-box;
|
32 |
+
vertical-align: baseline;
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
.wp-customizer {
|
37 |
+
.redux-container-text {
|
38 |
+
.input_wrapper {
|
39 |
+
width: 100%;
|
40 |
+
max-width: 100%;
|
41 |
+
height: auto;
|
42 |
+
}
|
43 |
}
|
44 |
}
|
ReduxCore/inc/fields/typography/field_typography.js
CHANGED
@@ -31,7 +31,7 @@
|
|
31 |
}
|
32 |
);
|
33 |
|
34 |
-
redux.field_objects.typography.init = function( selector ) {
|
35 |
|
36 |
if ( !selector ) {
|
37 |
selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-typography:visible' );
|
@@ -79,7 +79,7 @@
|
|
79 |
|
80 |
fontClear = Boolean( $( this ).find( '.redux-font-clear' ).val() );
|
81 |
|
82 |
-
redux.field_objects.typography.select( family );
|
83 |
|
84 |
window.onbeforeunload = null;
|
85 |
}
|
@@ -310,7 +310,7 @@
|
|
310 |
|
311 |
|
312 |
// Sync up font options
|
313 |
-
redux.field_objects.typography.select = function( selector ) {
|
314 |
var mainID;
|
315 |
|
316 |
// Main id for selected field
|
@@ -646,7 +646,10 @@
|
|
646 |
|
647 |
isSelecting = false;
|
648 |
|
649 |
-
|
|
|
|
|
|
|
650 |
|
651 |
};
|
652 |
})( jQuery );
|
31 |
}
|
32 |
);
|
33 |
|
34 |
+
redux.field_objects.typography.init = function( selector, skipCheck) {
|
35 |
|
36 |
if ( !selector ) {
|
37 |
selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-typography:visible' );
|
79 |
|
80 |
fontClear = Boolean( $( this ).find( '.redux-font-clear' ).val() );
|
81 |
|
82 |
+
redux.field_objects.typography.select( family, true );
|
83 |
|
84 |
window.onbeforeunload = null;
|
85 |
}
|
310 |
|
311 |
|
312 |
// Sync up font options
|
313 |
+
redux.field_objects.typography.select = function( selector, skipCheck ) {
|
314 |
var mainID;
|
315 |
|
316 |
// Main id for selected field
|
646 |
|
647 |
isSelecting = false;
|
648 |
|
649 |
+
if ( ! skipCheck ) {
|
650 |
+
redux_change( selector );
|
651 |
+
}
|
652 |
+
|
653 |
|
654 |
};
|
655 |
})( jQuery );
|
ReduxCore/inc/fields/typography/field_typography.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.typography=redux.field_objects.typography||{};var b=[],c=!1,d={width:"resolve",triggerChange:!0,allowClear:!0};a(document).ready(function(){}),redux.field_objects.typography.init=function(e){e||(e=a(document).find(".redux-group-tab:visible").find(".redux-container-typography:visible")),a(e).each(function(){var e=a(this),f=e;if(e.hasClass("redux-field-container")||(f=e.parents(".redux-field-container:first")),!f.is(":hidden")&&f.hasClass("redux-field-init")){f.removeClass("redux-field-init");var g;e.each(function(){a(this).find(".redux-typography-container").each(function(){var b=a(this).find(".redux-typography-family");void 0===b.data("value")?b=a(this):""!==b.data("value")&&a(b).val(b.data("value"));var c=a(this).find(".select2_params");if(c.size()>0){var e=c.val();e=JSON.parse(e),d=a.extend({},d,e)}g=Boolean(a(this).find(".redux-font-clear").val()),redux.field_objects.typography.select(b),window.onbeforeunload=null}),a(this).find(".redux-typography").on("change",function(){redux.field_objects.typography.select(a(this))}),a(this).find(".redux-typography-size, .redux-typography-height, .redux-typography-word, .redux-typography-letter, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration").keyup(function(){redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}),a(this).find(".redux-typography-color").wpColorPicker({change:function(b,c){a(this).val(c.color.toString()),redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}}),a(this).find(".redux-typography-size").numeric({allowMinus:!1}),a(this).find(".redux-typography-height, .redux-typography-word, .redux-typography-letter").numeric({allowMinus:!0});var f=[{id:"none",text:"none"}];a(this).find(".redux-typography-family").select2({matcher:function(a,b){return 0===b.toUpperCase().indexOf(a.toUpperCase())},query:function(a){return window.Select2.query.local(f)(a)},initSelection:function(a,b){var c={id:a.val(),text:a.val()};b(c)},allowClear:g}).on("select2-opening",function(b){var c=a(this).parents(".redux-container-typography:first").attr("data-id"),d=a("#"+c+" .redux-typography-font-family").data("user-fonts");d=d?1:0;var e=a("#"+c+" .redux-typography-google").val();e=e?1:0;var g=[];if(void 0!==redux.customfonts&&g.push(redux.customfonts),void 0!==redux.stdfonts&&0===d&&g.push(redux.stdfonts),1==d){var h=[];for(var i in redux.typography[c]){var j=redux.typography[c].std_font;for(var k in j)j.hasOwnProperty(k)&&h.push({id:k,text:k,"data-google":"false"})}var l={text:"Standard Fonts",children:h};g.push(l)}(1==e||e===!0&&void 0!==redux.googlefonts)&&g.push(redux.googlefonts),f=g;var m=a("#"+c+" #"+c+"-family").attr("placeholder");m||(m=null),a("#"+c+" .redux-typography-family").select2("val",m)}).on("select2-selecting",function(d,e){var f=d.object.text,g=a(this).parents(".redux-container-typography:first").attr("data-id");a("#"+g+" #"+g+"-family").data("value",f),a("#"+g+" #"+g+"-family").attr("placeholder",f),b=d,c=!0,redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}).on("select2-clearing",function(b,c){var d=a(this).parents(".redux-container-typography:first").attr("data-id");a("#"+d+" #"+d+"-family").attr("data-value",""),a("#"+d+" #"+d+"-family").attr("placeholder","Font Family"),a("#"+d+" #"+d+"-google-font").val("false"),redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))});var h=e.find(".redux-typography-family");h.hasClass("redux-typography-family")||e.find(".redux-typography-style").select2(d),e.find(".redux-typography-family-backup, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration").select2(d)})}})},redux.field_objects.typography.size=function(a){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c},redux.field_objects.typography.makeBool=function(a){return"false"==a||"0"==a||a===!1||0===a?!1:"true"==a||"1"==a||a===!0||1==a?!0:void 0},redux.field_objects.typography.contrastColour=function(a){var b="#444444";if(""!==a){a=a.replace("#","");var c=parseInt(a.substr(0,2),16),d=parseInt(a.substr(2,2),16),e=parseInt(a.substr(4,2),16),f=(299*c+587*d+114*e)/1e3;b=f>=128?"#444444":"#ffffff"}return b},redux.field_objects.typography.select=function(e){var f;f=a(e).parents(".redux-container-typography:first").attr("data-id"),void 0===f&&(f=a(e).attr("data-id"));var g=(a(e).parents(".redux-container-typography:first"),a("#"+f+" #"+f+"-family").val());g||(g=null);var h,i=a("#"+f+" select.redux-typography-family-backup").val(),j=a("#"+f+" .redux-typography-size").val(),k=a("#"+f+" .redux-typography-height").val(),l=a("#"+f+" .redux-typography-word").val(),m=a("#"+f+" .redux-typography-letter").val(),n=a("#"+f+" select.redux-typography-align").val(),o=a("#"+f+" select.redux-typography-transform").val(),p=a("#"+f+" select.redux-typography-font-variant").val(),q=a("#"+f+" select.redux-typography-decoration").val(),r=a("#"+f+" select.redux-typography-style").val(),s=a("#"+f+" select.redux-typography-subsets").val(),t=a("#"+f+" .redux-typography-color").val(),u=a("#"+f).data("units");c===!0?(h=redux.field_objects.typography.makeBool(b.object["data-google"]),a("#"+f+" .redux-typography-google-font").val(h)):h=redux.field_objects.typography.makeBool(a("#"+f+" .redux-typography-google-font").val()),a("#"+f).hasClass("typography-initialized")||(r=a("#"+f+" select.redux-typography-style").data("value"),s=a("#"+f+" select.redux-typography-subsets").data("value"),""!==r&&(r=String(r)),void 0!==typeof s&&(s=String(s))),void 0===redux.fonts.google&&(h=!1);var v="";if(v=h===!0&&g in redux.fonts.google?redux.fonts.google[g]:{400:"Normal 400",700:"Bold 700","400italic":"Normal 400 Italic","700italic":"Bold 700 Italic"},a(e).hasClass("redux-typography-subsets")&&a("#"+f+" input.typography-subsets").val(s),a(e).hasClass("redux-typography-family")){var w='<option value=""></option>';if(h===!0){var x="";a.each(v.variants,function(a,b){b.id===r||1===redux.field_objects.typography.size(v.variants)?(x=' selected="selected"',r=b.id):x="",w+='<option value="'+b.id+'"'+x+">"+b.name.replace(/\+/g," ")+"</option>"}),a("#"+f+" .redux-typography-style").select2("destroy"),a("#"+f+" .redux-typography-style").html(w),a("#"+f+" .redux-typography-style").select2(d),x="",w='<option value=""></option>',a.each(v.subsets,function(b,c){c.id===s||1===redux.field_objects.typography.size(v.subsets)?(x=' selected="selected"',s=c.id,a("#"+f+" input.typography-subsets").val(s)):x="",w+='<option value="'+c.id+'"'+x+">"+c.name.replace(/\+/g," ")+"</option>"}),a("#"+f+" .redux-typography-subsets").select2("destroy"),a("#"+f+" .redux-typography-subsets").html(w),a("#"+f+" .redux-typography-subsets").select2(d),a("#"+f+" .redux-typography-subsets").parent().fadeIn("fast"),a("#"+f+" .typography-family-backup").fadeIn("fast")}else v&&(a.each(v,function(b,c){b===r||"normal"===b?(x=' selected="selected"',a("#"+f+" .typography-style .select2-chosen").text(c)):x="",w+='<option value="'+b+'"'+x+">"+c.replace("+"," ")+"</option>"}),a("#"+f+" .redux-typography-style").select2("destroy"),a("#"+f+" .redux-typography-style").html(w),a("#"+f+" .redux-typography-style").select2(d),a("#"+f+" .redux-typography-subsets").parent().fadeOut("fast"),a("#"+f+" .typography-family-backup").fadeOut("fast"));a("#"+f+" .redux-typography-font-family").val(g)}else a(e).hasClass("redux-typography-family-backup")&&""!==i&&a("#"+f+" .redux-typography-font-family-backup").val(i);0===a("#"+f+" select.redux-typography-style option[value='"+r+"']").length?(r="",a("#"+f+" select.redux-typography-style").select2("val","")):"400"===r&&a("#"+f+" select.redux-typography-style").select2("val",r),0===a("#"+f+" select.redux-typography-subsets option[value='"+s+"']").length&&(s="",a("#"+f+" select.redux-typography-subsets").select2("val",""),a("#"+f+" input.typography-subsets").val(s));var y="style_link_"+f;if(a("."+y).remove(),null!==g&&"inherit"!==g&&a("#"+f).hasClass("typography-initialized")){var z=g.replace(/\s+/g,"+");if(h===!0){var A=z;r&&""!==r&&(A+=":"+r.replace(/\-/g," ")),s&&""!==s&&(A+="&subset="+s),c===!1&&"undefined"!=typeof WebFont&&WebFont&&WebFont.load({google:{families:[A]}}),a("#"+f+" .redux-typography-google").val(!0)}else a("#"+f+" .redux-typography-google").val(!1)}if(-1!==r.indexOf("italic")?(a("#"+f+" .typography-preview").css("font-style","italic"),a("#"+f+" .typography-font-style").val("italic"),r=r.replace("italic","")):(a("#"+f+" .typography-preview").css("font-style","normal"),a("#"+f+" .typography-font-style").val("")),a("#"+f+" .typography-font-weight").val(r),k||(k=j),""===j||void 0===j?a("#"+f+" .typography-font-size").val(""):a("#"+f+" .typography-font-size").val(j+u),""===k||void 0===k?a("#"+f+" .typography-line-height").val(""):a("#"+f+" .typography-line-height").val(k+u),""===l||void 0===l?a("#"+f+" .typography-word-spacing").val(""):a("#"+f+" .typography-word-spacing").val(l+u),""===m||void 0===m?a("#"+f+" .typography-letter-spacing").val(""):a("#"+f+" .typography-letter-spacing").val(m+u),a("#"+f).hasClass("typography-initialized")){var B=a("#"+f+" .typography-preview").data("preview-size");"0"==B&&a("#"+f+" .typography-preview").css("font-size",j+u),a("#"+f+" .typography-preview").css("font-weight",r),a("#"+f+" .typography-preview").css("font-family",g+", sans-serif"),"none"===g&&""===g&&a("#"+f+" .typography-preview").css("font-family","inherit"),a("#"+f+" .typography-preview").css("line-height",k+u),a("#"+f+" .typography-preview").css("word-spacing",l+u),a("#"+f+" .typography-preview").css("letter-spacing",m+u),t&&(a("#"+f+" .typography-preview").css("color",t),a("#"+f+" .typography-preview").css("background-color",redux.field_objects.typography.contrastColour(t))),a("#"+f+" .typography-style .select2-chosen").text(a("#"+f+" .redux-typography-style option:selected").text()),a("#"+f+" .typography-script .select2-chosen").text(a("#"+f+" .redux-typography-subsets option:selected").text()),n&&a("#"+f+" .typography-preview").css("text-align",n),o&&a("#"+f+" .typography-preview").css("text-transform",o),p&&a("#"+f+" .typography-preview").css("font-variant",p),q&&a("#"+f+" .typography-preview").css("text-decoration",q),a("#"+f+" .typography-preview").slideDown()}a("#"+f).hasClass("typography-initialized")||a("#"+f).addClass("typography-initialized"),c=!1,redux_change(e)}}(jQuery);
|
1 |
+
!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.typography=redux.field_objects.typography||{};var b=[],c=!1,d={width:"resolve",triggerChange:!0,allowClear:!0};a(document).ready(function(){}),redux.field_objects.typography.init=function(e,f){e||(e=a(document).find(".redux-group-tab:visible").find(".redux-container-typography:visible")),a(e).each(function(){var e=a(this),f=e;if(e.hasClass("redux-field-container")||(f=e.parents(".redux-field-container:first")),!f.is(":hidden")&&f.hasClass("redux-field-init")){f.removeClass("redux-field-init");var g;e.each(function(){a(this).find(".redux-typography-container").each(function(){var b=a(this).find(".redux-typography-family");void 0===b.data("value")?b=a(this):""!==b.data("value")&&a(b).val(b.data("value"));var c=a(this).find(".select2_params");if(c.size()>0){var e=c.val();e=JSON.parse(e),d=a.extend({},d,e)}g=Boolean(a(this).find(".redux-font-clear").val()),redux.field_objects.typography.select(b,!0),window.onbeforeunload=null}),a(this).find(".redux-typography").on("change",function(){redux.field_objects.typography.select(a(this))}),a(this).find(".redux-typography-size, .redux-typography-height, .redux-typography-word, .redux-typography-letter, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration").keyup(function(){redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}),a(this).find(".redux-typography-color").wpColorPicker({change:function(b,c){a(this).val(c.color.toString()),redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}}),a(this).find(".redux-typography-size").numeric({allowMinus:!1}),a(this).find(".redux-typography-height, .redux-typography-word, .redux-typography-letter").numeric({allowMinus:!0});var f=[{id:"none",text:"none"}];a(this).find(".redux-typography-family").select2({matcher:function(a,b){return 0===b.toUpperCase().indexOf(a.toUpperCase())},query:function(a){return window.Select2.query.local(f)(a)},initSelection:function(a,b){var c={id:a.val(),text:a.val()};b(c)},allowClear:g}).on("select2-opening",function(b){var c=a(this).parents(".redux-container-typography:first").attr("data-id"),d=a("#"+c+" .redux-typography-font-family").data("user-fonts");d=d?1:0;var e=a("#"+c+" .redux-typography-google").val();e=e?1:0;var g=[];if(void 0!==redux.customfonts&&g.push(redux.customfonts),void 0!==redux.stdfonts&&0===d&&g.push(redux.stdfonts),1==d){var h=[];for(var i in redux.typography[c]){var j=redux.typography[c].std_font;for(var k in j)j.hasOwnProperty(k)&&h.push({id:k,text:k,"data-google":"false"})}var l={text:"Standard Fonts",children:h};g.push(l)}(1==e||e===!0&&void 0!==redux.googlefonts)&&g.push(redux.googlefonts),f=g;var m=a("#"+c+" #"+c+"-family").attr("placeholder");m||(m=null),a("#"+c+" .redux-typography-family").select2("val",m)}).on("select2-selecting",function(d,e){var f=d.object.text,g=a(this).parents(".redux-container-typography:first").attr("data-id");a("#"+g+" #"+g+"-family").data("value",f),a("#"+g+" #"+g+"-family").attr("placeholder",f),b=d,c=!0,redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}).on("select2-clearing",function(b,c){var d=a(this).parents(".redux-container-typography:first").attr("data-id");a("#"+d+" #"+d+"-family").attr("data-value",""),a("#"+d+" #"+d+"-family").attr("placeholder","Font Family"),a("#"+d+" #"+d+"-google-font").val("false"),redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))});var h=e.find(".redux-typography-family");h.hasClass("redux-typography-family")||e.find(".redux-typography-style").select2(d),e.find(".redux-typography-family-backup, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration").select2(d)})}})},redux.field_objects.typography.size=function(a){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c},redux.field_objects.typography.makeBool=function(a){return"false"==a||"0"==a||a===!1||0===a?!1:"true"==a||"1"==a||a===!0||1==a?!0:void 0},redux.field_objects.typography.contrastColour=function(a){var b="#444444";if(""!==a){a=a.replace("#","");var c=parseInt(a.substr(0,2),16),d=parseInt(a.substr(2,2),16),e=parseInt(a.substr(4,2),16),f=(299*c+587*d+114*e)/1e3;b=f>=128?"#444444":"#ffffff"}return b},redux.field_objects.typography.select=function(e,f){var g;g=a(e).parents(".redux-container-typography:first").attr("data-id"),void 0===g&&(g=a(e).attr("data-id"));var h=(a(e).parents(".redux-container-typography:first"),a("#"+g+" #"+g+"-family").val());h||(h=null);var i,j=a("#"+g+" select.redux-typography-family-backup").val(),k=a("#"+g+" .redux-typography-size").val(),l=a("#"+g+" .redux-typography-height").val(),m=a("#"+g+" .redux-typography-word").val(),n=a("#"+g+" .redux-typography-letter").val(),o=a("#"+g+" select.redux-typography-align").val(),p=a("#"+g+" select.redux-typography-transform").val(),q=a("#"+g+" select.redux-typography-font-variant").val(),r=a("#"+g+" select.redux-typography-decoration").val(),s=a("#"+g+" select.redux-typography-style").val(),t=a("#"+g+" select.redux-typography-subsets").val(),u=a("#"+g+" .redux-typography-color").val(),v=a("#"+g).data("units");c===!0?(i=redux.field_objects.typography.makeBool(b.object["data-google"]),a("#"+g+" .redux-typography-google-font").val(i)):i=redux.field_objects.typography.makeBool(a("#"+g+" .redux-typography-google-font").val()),a("#"+g).hasClass("typography-initialized")||(s=a("#"+g+" select.redux-typography-style").data("value"),t=a("#"+g+" select.redux-typography-subsets").data("value"),""!==s&&(s=String(s)),void 0!==typeof t&&(t=String(t))),void 0===redux.fonts.google&&(i=!1);var w="";if(w=i===!0&&h in redux.fonts.google?redux.fonts.google[h]:{400:"Normal 400",700:"Bold 700","400italic":"Normal 400 Italic","700italic":"Bold 700 Italic"},a(e).hasClass("redux-typography-subsets")&&a("#"+g+" input.typography-subsets").val(t),a(e).hasClass("redux-typography-family")){var x='<option value=""></option>';if(i===!0){var y="";a.each(w.variants,function(a,b){b.id===s||1===redux.field_objects.typography.size(w.variants)?(y=' selected="selected"',s=b.id):y="",x+='<option value="'+b.id+'"'+y+">"+b.name.replace(/\+/g," ")+"</option>"}),a("#"+g+" .redux-typography-style").select2("destroy"),a("#"+g+" .redux-typography-style").html(x),a("#"+g+" .redux-typography-style").select2(d),y="",x='<option value=""></option>',a.each(w.subsets,function(b,c){c.id===t||1===redux.field_objects.typography.size(w.subsets)?(y=' selected="selected"',t=c.id,a("#"+g+" input.typography-subsets").val(t)):y="",x+='<option value="'+c.id+'"'+y+">"+c.name.replace(/\+/g," ")+"</option>"}),a("#"+g+" .redux-typography-subsets").select2("destroy"),a("#"+g+" .redux-typography-subsets").html(x),a("#"+g+" .redux-typography-subsets").select2(d),a("#"+g+" .redux-typography-subsets").parent().fadeIn("fast"),a("#"+g+" .typography-family-backup").fadeIn("fast")}else w&&(a.each(w,function(b,c){b===s||"normal"===b?(y=' selected="selected"',a("#"+g+" .typography-style .select2-chosen").text(c)):y="",x+='<option value="'+b+'"'+y+">"+c.replace("+"," ")+"</option>"}),a("#"+g+" .redux-typography-style").select2("destroy"),a("#"+g+" .redux-typography-style").html(x),a("#"+g+" .redux-typography-style").select2(d),a("#"+g+" .redux-typography-subsets").parent().fadeOut("fast"),a("#"+g+" .typography-family-backup").fadeOut("fast"));a("#"+g+" .redux-typography-font-family").val(h)}else a(e).hasClass("redux-typography-family-backup")&&""!==j&&a("#"+g+" .redux-typography-font-family-backup").val(j);0===a("#"+g+" select.redux-typography-style option[value='"+s+"']").length?(s="",a("#"+g+" select.redux-typography-style").select2("val","")):"400"===s&&a("#"+g+" select.redux-typography-style").select2("val",s),0===a("#"+g+" select.redux-typography-subsets option[value='"+t+"']").length&&(t="",a("#"+g+" select.redux-typography-subsets").select2("val",""),a("#"+g+" input.typography-subsets").val(t));var z="style_link_"+g;if(a("."+z).remove(),null!==h&&"inherit"!==h&&a("#"+g).hasClass("typography-initialized")){var A=h.replace(/\s+/g,"+");if(i===!0){var B=A;s&&""!==s&&(B+=":"+s.replace(/\-/g," ")),t&&""!==t&&(B+="&subset="+t),c===!1&&"undefined"!=typeof WebFont&&WebFont&&WebFont.load({google:{families:[B]}}),a("#"+g+" .redux-typography-google").val(!0)}else a("#"+g+" .redux-typography-google").val(!1)}if(-1!==s.indexOf("italic")?(a("#"+g+" .typography-preview").css("font-style","italic"),a("#"+g+" .typography-font-style").val("italic"),s=s.replace("italic","")):(a("#"+g+" .typography-preview").css("font-style","normal"),a("#"+g+" .typography-font-style").val("")),a("#"+g+" .typography-font-weight").val(s),l||(l=k),""===k||void 0===k?a("#"+g+" .typography-font-size").val(""):a("#"+g+" .typography-font-size").val(k+v),""===l||void 0===l?a("#"+g+" .typography-line-height").val(""):a("#"+g+" .typography-line-height").val(l+v),""===m||void 0===m?a("#"+g+" .typography-word-spacing").val(""):a("#"+g+" .typography-word-spacing").val(m+v),""===n||void 0===n?a("#"+g+" .typography-letter-spacing").val(""):a("#"+g+" .typography-letter-spacing").val(n+v),a("#"+g).hasClass("typography-initialized")){var C=a("#"+g+" .typography-preview").data("preview-size");"0"==C&&a("#"+g+" .typography-preview").css("font-size",k+v),a("#"+g+" .typography-preview").css("font-weight",s),a("#"+g+" .typography-preview").css("font-family",h+", sans-serif"),"none"===h&&""===h&&a("#"+g+" .typography-preview").css("font-family","inherit"),a("#"+g+" .typography-preview").css("line-height",l+v),a("#"+g+" .typography-preview").css("word-spacing",m+v),a("#"+g+" .typography-preview").css("letter-spacing",n+v),u&&(a("#"+g+" .typography-preview").css("color",u),a("#"+g+" .typography-preview").css("background-color",redux.field_objects.typography.contrastColour(u))),a("#"+g+" .typography-style .select2-chosen").text(a("#"+g+" .redux-typography-style option:selected").text()),a("#"+g+" .typography-script .select2-chosen").text(a("#"+g+" .redux-typography-subsets option:selected").text()),o&&a("#"+g+" .typography-preview").css("text-align",o),p&&a("#"+g+" .typography-preview").css("text-transform",p),q&&a("#"+g+" .typography-preview").css("font-variant",q),r&&a("#"+g+" .typography-preview").css("text-decoration",r),a("#"+g+" .typography-preview").slideDown()}a("#"+g).hasClass("typography-initialized")||a("#"+g).addClass("typography-initialized"),c=!1,f||redux_change(e)}}(jQuery);
|
ReduxCore/inc/scssphp/scss.inc.php
DELETED
@@ -1,4582 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* SCSS compiler written in PHP
|
4 |
-
*
|
5 |
-
* @copyright 2012-2013 Leaf Corcoran
|
6 |
-
*
|
7 |
-
* @license http://opensource.org/licenses/gpl-license GPL-3.0
|
8 |
-
* @license http://opensource.org/licenses/MIT MIT
|
9 |
-
*
|
10 |
-
* @link http://leafo.net/scssphp
|
11 |
-
*/
|
12 |
-
|
13 |
-
/**
|
14 |
-
* The scss compiler and parser.
|
15 |
-
*
|
16 |
-
* Converting SCSS to CSS is a three stage process. The incoming file is parsed
|
17 |
-
* by `scss_parser` into a syntax tree, then it is compiled into another tree
|
18 |
-
* representing the CSS structure by `scssc`. The CSS tree is fed into a
|
19 |
-
* formatter, like `scss_formatter` which then outputs CSS as a string.
|
20 |
-
*
|
21 |
-
* During the first compile, all values are *reduced*, which means that their
|
22 |
-
* types are brought to the lowest form before being dump as strings. This
|
23 |
-
* handles math equations, variable dereferences, and the like.
|
24 |
-
*
|
25 |
-
* The `parse` function of `scssc` is the entry point.
|
26 |
-
*
|
27 |
-
* In summary:
|
28 |
-
*
|
29 |
-
* The `scssc` class creates an instance of the parser, feeds it SCSS code,
|
30 |
-
* then transforms the resulting tree to a CSS tree. This class also holds the
|
31 |
-
* evaluation context, such as all available mixins and variables at any given
|
32 |
-
* time.
|
33 |
-
*
|
34 |
-
* The `scss_parser` class is only concerned with parsing its input.
|
35 |
-
*
|
36 |
-
* The `scss_formatter` takes a CSS tree, and dumps it to a formatted string,
|
37 |
-
* handling things like indentation.
|
38 |
-
*/
|
39 |
-
|
40 |
-
/**
|
41 |
-
* SCSS compiler
|
42 |
-
*
|
43 |
-
* @author Leaf Corcoran <leafot@gmail.com>
|
44 |
-
*/
|
45 |
-
class scssc {
|
46 |
-
static public $VERSION = 'v0.0.12';
|
47 |
-
|
48 |
-
static protected $operatorNames = array(
|
49 |
-
'+' => "add",
|
50 |
-
'-' => "sub",
|
51 |
-
'*' => "mul",
|
52 |
-
'/' => "div",
|
53 |
-
'%' => "mod",
|
54 |
-
|
55 |
-
'==' => "eq",
|
56 |
-
'!=' => "neq",
|
57 |
-
'<' => "lt",
|
58 |
-
'>' => "gt",
|
59 |
-
|
60 |
-
'<=' => "lte",
|
61 |
-
'>=' => "gte",
|
62 |
-
);
|
63 |
-
|
64 |
-
static protected $namespaces = array(
|
65 |
-
"special" => "%",
|
66 |
-
"mixin" => "@",
|
67 |
-
"function" => "^",
|
68 |
-
);
|
69 |
-
|
70 |
-
static protected $unitTable = array(
|
71 |
-
"in" => array(
|
72 |
-
"in" => 1,
|
73 |
-
"pt" => 72,
|
74 |
-
"pc" => 6,
|
75 |
-
"cm" => 2.54,
|
76 |
-
"mm" => 25.4,
|
77 |
-
"px" => 96,
|
78 |
-
)
|
79 |
-
);
|
80 |
-
|
81 |
-
static public $true = array("keyword", "true");
|
82 |
-
static public $false = array("keyword", "false");
|
83 |
-
static public $null = array("null");
|
84 |
-
static public $parent = null;
|
85 |
-
|
86 |
-
static public $defaultValue = array("keyword", "");
|
87 |
-
static public $selfSelector = array("self");
|
88 |
-
|
89 |
-
protected $importPaths = array("");
|
90 |
-
protected $importCache = array();
|
91 |
-
|
92 |
-
protected $userFunctions = array();
|
93 |
-
protected $registeredVars = array();
|
94 |
-
|
95 |
-
protected $numberPrecision = 5;
|
96 |
-
|
97 |
-
protected $formatter = "scss_formatter_nested";
|
98 |
-
|
99 |
-
/**
|
100 |
-
* Compile scss
|
101 |
-
*
|
102 |
-
* @param string $code
|
103 |
-
* @param string $name
|
104 |
-
*
|
105 |
-
* @return string
|
106 |
-
*/
|
107 |
-
public function compile($code, $name = null)
|
108 |
-
{
|
109 |
-
$this->indentLevel = -1;
|
110 |
-
$this->commentsSeen = array();
|
111 |
-
$this->extends = array();
|
112 |
-
$this->extendsMap = array();
|
113 |
-
$this->parsedFiles = array();
|
114 |
-
$this->env = null;
|
115 |
-
$this->scope = null;
|
116 |
-
|
117 |
-
$locale = setlocale(LC_NUMERIC, 0);
|
118 |
-
setlocale(LC_NUMERIC, "C");
|
119 |
-
|
120 |
-
$this->parser = new scss_parser($name);
|
121 |
-
|
122 |
-
$tree = $this->parser->parse($code);
|
123 |
-
|
124 |
-
$this->formatter = new $this->formatter();
|
125 |
-
|
126 |
-
$this->pushEnv($tree);
|
127 |
-
$this->injectVariables($this->registeredVars);
|
128 |
-
$this->compileRoot($tree);
|
129 |
-
$this->popEnv();
|
130 |
-
|
131 |
-
$out = $this->formatter->format($this->scope);
|
132 |
-
|
133 |
-
setlocale(LC_NUMERIC, $locale);
|
134 |
-
|
135 |
-
return $out;
|
136 |
-
}
|
137 |
-
|
138 |
-
protected function isSelfExtend($target, $origin) {
|
139 |
-
foreach ($origin as $sel) {
|
140 |
-
if (in_array($target, $sel)) {
|
141 |
-
return true;
|
142 |
-
}
|
143 |
-
}
|
144 |
-
|
145 |
-
return false;
|
146 |
-
}
|
147 |
-
|
148 |
-
protected function pushExtends($target, $origin) {
|
149 |
-
if ($this->isSelfExtend($target, $origin)) {
|
150 |
-
return;
|
151 |
-
}
|
152 |
-
|
153 |
-
$i = count($this->extends);
|
154 |
-
$this->extends[] = array($target, $origin);
|
155 |
-
|
156 |
-
foreach ($target as $part) {
|
157 |
-
if (isset($this->extendsMap[$part])) {
|
158 |
-
$this->extendsMap[$part][] = $i;
|
159 |
-
} else {
|
160 |
-
$this->extendsMap[$part] = array($i);
|
161 |
-
}
|
162 |
-
}
|
163 |
-
}
|
164 |
-
|
165 |
-
protected function makeOutputBlock($type, $selectors = null) {
|
166 |
-
$out = new stdClass;
|
167 |
-
$out->type = $type;
|
168 |
-
$out->lines = array();
|
169 |
-
$out->children = array();
|
170 |
-
$out->parent = $this->scope;
|
171 |
-
$out->selectors = $selectors;
|
172 |
-
$out->depth = $this->env->depth;
|
173 |
-
|
174 |
-
return $out;
|
175 |
-
}
|
176 |
-
|
177 |
-
protected function matchExtendsSingle($single, &$outOrigin) {
|
178 |
-
$counts = array();
|
179 |
-
foreach ($single as $part) {
|
180 |
-
if (!is_string($part)) return false; // hmm
|
181 |
-
|
182 |
-
if (isset($this->extendsMap[$part])) {
|
183 |
-
foreach ($this->extendsMap[$part] as $idx) {
|
184 |
-
$counts[$idx] =
|
185 |
-
isset($counts[$idx]) ? $counts[$idx] + 1 : 1;
|
186 |
-
}
|
187 |
-
}
|
188 |
-
}
|
189 |
-
|
190 |
-
$outOrigin = array();
|
191 |
-
$found = false;
|
192 |
-
|
193 |
-
foreach ($counts as $idx => $count) {
|
194 |
-
list($target, $origin) = $this->extends[$idx];
|
195 |
-
|
196 |
-
// check count
|
197 |
-
if ($count != count($target)) continue;
|
198 |
-
|
199 |
-
// check if target is subset of single
|
200 |
-
if (array_diff(array_intersect($single, $target), $target)) continue;
|
201 |
-
|
202 |
-
$rem = array_diff($single, $target);
|
203 |
-
|
204 |
-
foreach ($origin as $j => $new) {
|
205 |
-
// prevent infinite loop when target extends itself
|
206 |
-
foreach ($new as $new_selector) {
|
207 |
-
if (!array_diff($single, $new_selector)) {
|
208 |
-
continue 2;
|
209 |
-
}
|
210 |
-
}
|
211 |
-
|
212 |
-
$origin[$j][count($origin[$j]) - 1] = $this->combineSelectorSingle(end($new), $rem);
|
213 |
-
}
|
214 |
-
|
215 |
-
$outOrigin = array_merge($outOrigin, $origin);
|
216 |
-
|
217 |
-
$found = true;
|
218 |
-
}
|
219 |
-
|
220 |
-
return $found;
|
221 |
-
}
|
222 |
-
|
223 |
-
protected function combineSelectorSingle($base, $other) {
|
224 |
-
$tag = null;
|
225 |
-
$out = array();
|
226 |
-
|
227 |
-
foreach (array($base, $other) as $single) {
|
228 |
-
foreach ($single as $part) {
|
229 |
-
if (preg_match('/^[^\[.#:]/', $part)) {
|
230 |
-
$tag = $part;
|
231 |
-
} else {
|
232 |
-
$out[] = $part;
|
233 |
-
}
|
234 |
-
}
|
235 |
-
}
|
236 |
-
|
237 |
-
if ($tag) {
|
238 |
-
array_unshift($out, $tag);
|
239 |
-
}
|
240 |
-
|
241 |
-
return $out;
|
242 |
-
}
|
243 |
-
|
244 |
-
protected function matchExtends($selector, &$out, $from = 0, $initial=true) {
|
245 |
-
foreach ($selector as $i => $part) {
|
246 |
-
if ($i < $from) continue;
|
247 |
-
|
248 |
-
if ($this->matchExtendsSingle($part, $origin)) {
|
249 |
-
$before = array_slice($selector, 0, $i);
|
250 |
-
$after = array_slice($selector, $i + 1);
|
251 |
-
|
252 |
-
foreach ($origin as $new) {
|
253 |
-
$k = 0;
|
254 |
-
|
255 |
-
// remove shared parts
|
256 |
-
if ($initial) {
|
257 |
-
foreach ($before as $k => $val) {
|
258 |
-
if (!isset($new[$k]) || $val != $new[$k]) {
|
259 |
-
break;
|
260 |
-
}
|
261 |
-
}
|
262 |
-
}
|
263 |
-
|
264 |
-
$result = array_merge(
|
265 |
-
$before,
|
266 |
-
$k > 0 ? array_slice($new, $k) : $new,
|
267 |
-
$after);
|
268 |
-
|
269 |
-
|
270 |
-
if ($result == $selector) continue;
|
271 |
-
$out[] = $result;
|
272 |
-
|
273 |
-
// recursively check for more matches
|
274 |
-
$this->matchExtends($result, $out, $i, false);
|
275 |
-
|
276 |
-
// selector sequence merging
|
277 |
-
if (!empty($before) && count($new) > 1) {
|
278 |
-
$result2 = array_merge(
|
279 |
-
array_slice($new, 0, -1),
|
280 |
-
$k > 0 ? array_slice($before, $k) : $before,
|
281 |
-
array_slice($new, -1),
|
282 |
-
$after);
|
283 |
-
|
284 |
-
$out[] = $result2;
|
285 |
-
}
|
286 |
-
}
|
287 |
-
}
|
288 |
-
}
|
289 |
-
}
|
290 |
-
|
291 |
-
protected function flattenSelectors($block, $parentKey = null) {
|
292 |
-
if ($block->selectors) {
|
293 |
-
$selectors = array();
|
294 |
-
foreach ($block->selectors as $s) {
|
295 |
-
$selectors[] = $s;
|
296 |
-
if (!is_array($s)) continue;
|
297 |
-
// check extends
|
298 |
-
if (!empty($this->extendsMap)) {
|
299 |
-
$this->matchExtends($s, $selectors);
|
300 |
-
}
|
301 |
-
}
|
302 |
-
|
303 |
-
$block->selectors = array();
|
304 |
-
$placeholderSelector = false;
|
305 |
-
foreach ($selectors as $selector) {
|
306 |
-
if ($this->hasSelectorPlaceholder($selector)) {
|
307 |
-
$placeholderSelector = true;
|
308 |
-
continue;
|
309 |
-
}
|
310 |
-
$block->selectors[] = $this->compileSelector($selector);
|
311 |
-
}
|
312 |
-
|
313 |
-
if ($placeholderSelector && 0 == count($block->selectors) && null !== $parentKey) {
|
314 |
-
unset($block->parent->children[$parentKey]);
|
315 |
-
return;
|
316 |
-
}
|
317 |
-
}
|
318 |
-
|
319 |
-
foreach ($block->children as $key => $child) {
|
320 |
-
$this->flattenSelectors($child, $key);
|
321 |
-
}
|
322 |
-
}
|
323 |
-
|
324 |
-
protected function compileRoot($rootBlock)
|
325 |
-
{
|
326 |
-
$this->scope = $this->makeOutputBlock('root');
|
327 |
-
|
328 |
-
$this->compileChildren($rootBlock->children, $this->scope);
|
329 |
-
$this->flattenSelectors($this->scope);
|
330 |
-
}
|
331 |
-
|
332 |
-
protected function compileMedia($media) {
|
333 |
-
$this->pushEnv($media);
|
334 |
-
|
335 |
-
$mediaQuery = $this->compileMediaQuery($this->multiplyMedia($this->env));
|
336 |
-
|
337 |
-
if (!empty($mediaQuery)) {
|
338 |
-
|
339 |
-
$this->scope = $this->makeOutputBlock("media", array($mediaQuery));
|
340 |
-
|
341 |
-
$parentScope = $this->mediaParent($this->scope);
|
342 |
-
|
343 |
-
$parentScope->children[] = $this->scope;
|
344 |
-
|
345 |
-
// top level properties in a media cause it to be wrapped
|
346 |
-
$needsWrap = false;
|
347 |
-
foreach ($media->children as $child) {
|
348 |
-
$type = $child[0];
|
349 |
-
if ($type !== 'block' && $type !== 'media' && $type !== 'directive') {
|
350 |
-
$needsWrap = true;
|
351 |
-
break;
|
352 |
-
}
|
353 |
-
}
|
354 |
-
|
355 |
-
if ($needsWrap) {
|
356 |
-
$wrapped = (object)array(
|
357 |
-
"selectors" => array(),
|
358 |
-
"children" => $media->children
|
359 |
-
);
|
360 |
-
$media->children = array(array("block", $wrapped));
|
361 |
-
}
|
362 |
-
|
363 |
-
$this->compileChildren($media->children, $this->scope);
|
364 |
-
|
365 |
-
$this->scope = $this->scope->parent;
|
366 |
-
}
|
367 |
-
|
368 |
-
$this->popEnv();
|
369 |
-
}
|
370 |
-
|
371 |
-
protected function mediaParent($scope) {
|
372 |
-
while (!empty($scope->parent)) {
|
373 |
-
if (!empty($scope->type) && $scope->type != "media") {
|
374 |
-
break;
|
375 |
-
}
|
376 |
-
$scope = $scope->parent;
|
377 |
-
}
|
378 |
-
|
379 |
-
return $scope;
|
380 |
-
}
|
381 |
-
|
382 |
-
// TODO refactor compileNestedBlock and compileMedia into same thing
|
383 |
-
protected function compileNestedBlock($block, $selectors) {
|
384 |
-
$this->pushEnv($block);
|
385 |
-
|
386 |
-
$this->scope = $this->makeOutputBlock($block->type, $selectors);
|
387 |
-
$this->scope->parent->children[] = $this->scope;
|
388 |
-
$this->compileChildren($block->children, $this->scope);
|
389 |
-
|
390 |
-
$this->scope = $this->scope->parent;
|
391 |
-
$this->popEnv();
|
392 |
-
}
|
393 |
-
|
394 |
-
/**
|
395 |
-
* Recursively compiles a block.
|
396 |
-
*
|
397 |
-
* A block is analogous to a CSS block in most cases. A single SCSS document
|
398 |
-
* is encapsulated in a block when parsed, but it does not have parent tags
|
399 |
-
* so all of its children appear on the root level when compiled.
|
400 |
-
*
|
401 |
-
* Blocks are made up of selectors and children.
|
402 |
-
*
|
403 |
-
* The children of a block are just all the blocks that are defined within.
|
404 |
-
*
|
405 |
-
* Compiling the block involves pushing a fresh environment on the stack,
|
406 |
-
* and iterating through the props, compiling each one.
|
407 |
-
*
|
408 |
-
* @see scss::compileChild()
|
409 |
-
*
|
410 |
-
* @param \StdClass $block
|
411 |
-
*/
|
412 |
-
protected function compileBlock($block) {
|
413 |
-
$env = $this->pushEnv($block);
|
414 |
-
|
415 |
-
$env->selectors =
|
416 |
-
array_map(array($this, "evalSelector"), $block->selectors);
|
417 |
-
|
418 |
-
$out = $this->makeOutputBlock(null, $this->multiplySelectors($env));
|
419 |
-
$this->scope->children[] = $out;
|
420 |
-
$this->compileChildren($block->children, $out);
|
421 |
-
|
422 |
-
$this->popEnv();
|
423 |
-
}
|
424 |
-
|
425 |
-
// joins together .classes and #ids
|
426 |
-
protected function flattenSelectorSingle($single) {
|
427 |
-
$joined = array();
|
428 |
-
foreach ($single as $part) {
|
429 |
-
if (empty($joined) ||
|
430 |
-
!is_string($part) ||
|
431 |
-
preg_match('/[\[.:#%]/', $part))
|
432 |
-
{
|
433 |
-
$joined[] = $part;
|
434 |
-
continue;
|
435 |
-
}
|
436 |
-
|
437 |
-
if (is_array(end($joined))) {
|
438 |
-
$joined[] = $part;
|
439 |
-
} else {
|
440 |
-
$joined[count($joined) - 1] .= $part;
|
441 |
-
}
|
442 |
-
}
|
443 |
-
|
444 |
-
return $joined;
|
445 |
-
}
|
446 |
-
|
447 |
-
// replaces all the interpolates
|
448 |
-
protected function evalSelector($selector) {
|
449 |
-
return array_map(array($this, "evalSelectorPart"), $selector);
|
450 |
-
}
|
451 |
-
|
452 |
-
protected function evalSelectorPart($piece) {
|
453 |
-
foreach ($piece as &$p) {
|
454 |
-
if (!is_array($p)) continue;
|
455 |
-
|
456 |
-
switch ($p[0]) {
|
457 |
-
case "interpolate":
|
458 |
-
$p = $this->compileValue($p);
|
459 |
-
break;
|
460 |
-
case "string":
|
461 |
-
$p = $this->compileValue($p);
|
462 |
-
break;
|
463 |
-
}
|
464 |
-
}
|
465 |
-
|
466 |
-
return $this->flattenSelectorSingle($piece);
|
467 |
-
}
|
468 |
-
|
469 |
-
// compiles to string
|
470 |
-
// self(&) should have been replaced by now
|
471 |
-
protected function compileSelector($selector) {
|
472 |
-
if (!is_array($selector)) return $selector; // media and the like
|
473 |
-
|
474 |
-
return implode(" ", array_map(
|
475 |
-
array($this, "compileSelectorPart"), $selector));
|
476 |
-
}
|
477 |
-
|
478 |
-
protected function compileSelectorPart($piece) {
|
479 |
-
foreach ($piece as &$p) {
|
480 |
-
if (!is_array($p)) continue;
|
481 |
-
|
482 |
-
switch ($p[0]) {
|
483 |
-
case "self":
|
484 |
-
$p = "&";
|
485 |
-
break;
|
486 |
-
default:
|
487 |
-
$p = $this->compileValue($p);
|
488 |
-
break;
|
489 |
-
}
|
490 |
-
}
|
491 |
-
|
492 |
-
return implode($piece);
|
493 |
-
}
|
494 |
-
|
495 |
-
protected function hasSelectorPlaceholder($selector)
|
496 |
-
{
|
497 |
-
if (!is_array($selector)) return false;
|
498 |
-
|
499 |
-
foreach ($selector as $parts) {
|
500 |
-
foreach ($parts as $part) {
|
501 |
-
if ('%' == $part[0]) {
|
502 |
-
return true;
|
503 |
-
}
|
504 |
-
}
|
505 |
-
}
|
506 |
-
|
507 |
-
return false;
|
508 |
-
}
|
509 |
-
|
510 |
-
protected function compileChildren($stms, $out) {
|
511 |
-
foreach ($stms as $stm) {
|
512 |
-
$ret = $this->compileChild($stm, $out);
|
513 |
-
if (isset($ret)) return $ret;
|
514 |
-
}
|
515 |
-
}
|
516 |
-
|
517 |
-
protected function compileMediaQuery($queryList) {
|
518 |
-
$out = "@media";
|
519 |
-
$first = true;
|
520 |
-
foreach ($queryList as $query){
|
521 |
-
$type = null;
|
522 |
-
$parts = array();
|
523 |
-
foreach ($query as $q) {
|
524 |
-
switch ($q[0]) {
|
525 |
-
case "mediaType":
|
526 |
-
if ($type) {
|
527 |
-
$type = $this->mergeMediaTypes($type, array_map(array($this, "compileValue"), array_slice($q, 1)));
|
528 |
-
if (empty($type)) { // merge failed
|
529 |
-
return null;
|
530 |
-
}
|
531 |
-
} else {
|
532 |
-
$type = array_map(array($this, "compileValue"), array_slice($q, 1));
|
533 |
-
}
|
534 |
-
break;
|
535 |
-
case "mediaExp":
|
536 |
-
if (isset($q[2])) {
|
537 |
-
$parts[] = "(". $this->compileValue($q[1]) . $this->formatter->assignSeparator . $this->compileValue($q[2]) . ")";
|
538 |
-
} else {
|
539 |
-
$parts[] = "(" . $this->compileValue($q[1]) . ")";
|
540 |
-
}
|
541 |
-
break;
|
542 |
-
}
|
543 |
-
}
|
544 |
-
if ($type) {
|
545 |
-
array_unshift($parts, implode(' ', array_filter($type)));
|
546 |
-
}
|
547 |
-
if (!empty($parts)) {
|
548 |
-
if ($first) {
|
549 |
-
$first = false;
|
550 |
-
$out .= " ";
|
551 |
-
} else {
|
552 |
-
$out .= $this->formatter->tagSeparator;
|
553 |
-
}
|
554 |
-
$out .= implode(" and ", $parts);
|
555 |
-
}
|
556 |
-
}
|
557 |
-
return $out;
|
558 |
-
}
|
559 |
-
|
560 |
-
protected function mergeMediaTypes($type1, $type2) {
|
561 |
-
if (empty($type1)) {
|
562 |
-
return $type2;
|
563 |
-
}
|
564 |
-
if (empty($type2)) {
|
565 |
-
return $type1;
|
566 |
-
}
|
567 |
-
$m1 = '';
|
568 |
-
$t1 = '';
|
569 |
-
if (count($type1) > 1) {
|
570 |
-
$m1= strtolower($type1[0]);
|
571 |
-
$t1= strtolower($type1[1]);
|
572 |
-
} else {
|
573 |
-
$t1 = strtolower($type1[0]);
|
574 |
-
}
|
575 |
-
$m2 = '';
|
576 |
-
$t2 = '';
|
577 |
-
if (count($type2) > 1) {
|
578 |
-
$m2 = strtolower($type2[0]);
|
579 |
-
$t2 = strtolower($type2[1]);
|
580 |
-
} else {
|
581 |
-
$t2 = strtolower($type2[0]);
|
582 |
-
}
|
583 |
-
if (($m1 == 'not') ^ ($m2 == 'not')) {
|
584 |
-
if ($t1 == $t2) {
|
585 |
-
return null;
|
586 |
-
}
|
587 |
-
return array(
|
588 |
-
$m1 == 'not' ? $m2 : $m1,
|
589 |
-
$m1 == 'not' ? $t2 : $t1
|
590 |
-
);
|
591 |
-
} elseif ($m1 == 'not' && $m2 == 'not') {
|
592 |
-
# CSS has no way of representing "neither screen nor print"
|
593 |
-
if ($t1 != $t2) {
|
594 |
-
return null;
|
595 |
-
}
|
596 |
-
return array('not', $t1);
|
597 |
-
} elseif ($t1 != $t2) {
|
598 |
-
return null;
|
599 |
-
} else { // t1 == t2, neither m1 nor m2 are "not"
|
600 |
-
return array(empty($m1)? $m2 : $m1, $t1);
|
601 |
-
}
|
602 |
-
}
|
603 |
-
|
604 |
-
// returns true if the value was something that could be imported
|
605 |
-
protected function compileImport($rawPath, $out) {
|
606 |
-
if ($rawPath[0] == "string") {
|
607 |
-
$path = $this->compileStringContent($rawPath);
|
608 |
-
if ($path = $this->findImport($path)) {
|
609 |
-
$this->importFile($path, $out);
|
610 |
-
return true;
|
611 |
-
}
|
612 |
-
return false;
|
613 |
-
}
|
614 |
-
if ($rawPath[0] == "list") {
|
615 |
-
// handle a list of strings
|
616 |
-
if (count($rawPath[2]) == 0) return false;
|
617 |
-
foreach ($rawPath[2] as $path) {
|
618 |
-
if ($path[0] != "string") return false;
|
619 |
-
}
|
620 |
-
|
621 |
-
foreach ($rawPath[2] as $path) {
|
622 |
-
$this->compileImport($path, $out);
|
623 |
-
}
|
624 |
-
|
625 |
-
return true;
|
626 |
-
}
|
627 |
-
|
628 |
-
return false;
|
629 |
-
}
|
630 |
-
|
631 |
-
// return a value to halt execution
|
632 |
-
protected function compileChild($child, $out) {
|
633 |
-
$this->sourcePos = isset($child[-1]) ? $child[-1] : -1;
|
634 |
-
$this->sourceParser = isset($child[-2]) ? $child[-2] : $this->parser;
|
635 |
-
|
636 |
-
switch ($child[0]) {
|
637 |
-
case "import":
|
638 |
-
list(,$rawPath) = $child;
|
639 |
-
$rawPath = $this->reduce($rawPath);
|
640 |
-
if (!$this->compileImport($rawPath, $out)) {
|
641 |
-
$out->lines[] = "@import " . $this->compileValue($rawPath) . ";";
|
642 |
-
}
|
643 |
-
break;
|
644 |
-
case "directive":
|
645 |
-
list(, $directive) = $child;
|
646 |
-
$s = "@" . $directive->name;
|
647 |
-
if (!empty($directive->value)) {
|
648 |
-
$s .= " " . $this->compileValue($directive->value);
|
649 |
-
}
|
650 |
-
$this->compileNestedBlock($directive, array($s));
|
651 |
-
break;
|
652 |
-
case "media":
|
653 |
-
$this->compileMedia($child[1]);
|
654 |
-
break;
|
655 |
-
case "block":
|
656 |
-
$this->compileBlock($child[1]);
|
657 |
-
break;
|
658 |
-
case "charset":
|
659 |
-
$out->lines[] = "@charset ".$this->compileValue($child[1]).";";
|
660 |
-
break;
|
661 |
-
case "assign":
|
662 |
-
list(,$name, $value) = $child;
|
663 |
-
if ($name[0] == "var") {
|
664 |
-
$isDefault = !empty($child[3]);
|
665 |
-
|
666 |
-
if ($isDefault) {
|
667 |
-
$existingValue = $this->get($name[1], true);
|
668 |
-
$shouldSet = $existingValue === true || $existingValue == self::$null;
|
669 |
-
}
|
670 |
-
|
671 |
-
if (!$isDefault || $shouldSet) {
|
672 |
-
$this->set($name[1], $this->reduce($value));
|
673 |
-
}
|
674 |
-
break;
|
675 |
-
}
|
676 |
-
|
677 |
-
// if the value reduces to null from something else then
|
678 |
-
// the property should be discarded
|
679 |
-
if ($value[0] != "null") {
|
680 |
-
$value = $this->reduce($value);
|
681 |
-
if ($value[0] == "null") {
|
682 |
-
break;
|
683 |
-
}
|
684 |
-
}
|
685 |
-
|
686 |
-
$compiledValue = $this->compileValue($value);
|
687 |
-
$out->lines[] = $this->formatter->property(
|
688 |
-
$this->compileValue($name),
|
689 |
-
$compiledValue);
|
690 |
-
break;
|
691 |
-
case "comment":
|
692 |
-
$out->lines[] = $child[1];
|
693 |
-
break;
|
694 |
-
case "mixin":
|
695 |
-
case "function":
|
696 |
-
list(,$block) = $child;
|
697 |
-
$this->set(self::$namespaces[$block->type] . $block->name, $block);
|
698 |
-
break;
|
699 |
-
case "extend":
|
700 |
-
list(, $selectors) = $child;
|
701 |
-
foreach ($selectors as $sel) {
|
702 |
-
// only use the first one
|
703 |
-
$sel = current($this->evalSelector($sel));
|
704 |
-
$this->pushExtends($sel, $out->selectors);
|
705 |
-
}
|
706 |
-
break;
|
707 |
-
case "if":
|
708 |
-
list(, $if) = $child;
|
709 |
-
if ($this->isTruthy($this->reduce($if->cond, true))) {
|
710 |
-
return $this->compileChildren($if->children, $out);
|
711 |
-
} else {
|
712 |
-
foreach ($if->cases as $case) {
|
713 |
-
if ($case->type == "else" ||
|
714 |
-
$case->type == "elseif" && $this->isTruthy($this->reduce($case->cond)))
|
715 |
-
{
|
716 |
-
return $this->compileChildren($case->children, $out);
|
717 |
-
}
|
718 |
-
}
|
719 |
-
}
|
720 |
-
break;
|
721 |
-
case "return":
|
722 |
-
return $this->reduce($child[1], true);
|
723 |
-
case "each":
|
724 |
-
list(,$each) = $child;
|
725 |
-
$list = $this->coerceList($this->reduce($each->list));
|
726 |
-
foreach ($list[2] as $item) {
|
727 |
-
$this->pushEnv();
|
728 |
-
$this->set($each->var, $item);
|
729 |
-
// TODO: allow return from here
|
730 |
-
$this->compileChildren($each->children, $out);
|
731 |
-
$this->popEnv();
|
732 |
-
}
|
733 |
-
break;
|
734 |
-
case "while":
|
735 |
-
list(,$while) = $child;
|
736 |
-
while ($this->isTruthy($this->reduce($while->cond, true))) {
|
737 |
-
$ret = $this->compileChildren($while->children, $out);
|
738 |
-
if ($ret) return $ret;
|
739 |
-
}
|
740 |
-
break;
|
741 |
-
case "for":
|
742 |
-
list(,$for) = $child;
|
743 |
-
$start = $this->reduce($for->start, true);
|
744 |
-
$start = $start[1];
|
745 |
-
$end = $this->reduce($for->end, true);
|
746 |
-
$end = $end[1];
|
747 |
-
$d = $start < $end ? 1 : -1;
|
748 |
-
|
749 |
-
while (true) {
|
750 |
-
if ((!$for->until && $start - $d == $end) ||
|
751 |
-
($for->until && $start == $end))
|
752 |
-
{
|
753 |
-
break;
|
754 |
-
}
|
755 |
-
|
756 |
-
$this->set($for->var, array("number", $start, ""));
|
757 |
-
$start += $d;
|
758 |
-
|
759 |
-
$ret = $this->compileChildren($for->children, $out);
|
760 |
-
if ($ret) return $ret;
|
761 |
-
}
|
762 |
-
|
763 |
-
break;
|
764 |
-
case "nestedprop":
|
765 |
-
list(,$prop) = $child;
|
766 |
-
$prefixed = array();
|
767 |
-
$prefix = $this->compileValue($prop->prefix) . "-";
|
768 |
-
foreach ($prop->children as $child) {
|
769 |
-
if ($child[0] == "assign") {
|
770 |
-
array_unshift($child[1][2], $prefix);
|
771 |
-
}
|
772 |
-
if ($child[0] == "nestedprop") {
|
773 |
-
array_unshift($child[1]->prefix[2], $prefix);
|
774 |
-
}
|
775 |
-
$prefixed[] = $child;
|
776 |
-
}
|
777 |
-
$this->compileChildren($prefixed, $out);
|
778 |
-
break;
|
779 |
-
case "include": // including a mixin
|
780 |
-
list(,$name, $argValues, $content) = $child;
|
781 |
-
$mixin = $this->get(self::$namespaces["mixin"] . $name, false);
|
782 |
-
if (!$mixin) {
|
783 |
-
$this->throwError("Undefined mixin $name");
|
784 |
-
}
|
785 |
-
|
786 |
-
$callingScope = $this->env;
|
787 |
-
|
788 |
-
// push scope, apply args
|
789 |
-
$this->pushEnv();
|
790 |
-
if ($this->env->depth > 0) {
|
791 |
-
$this->env->depth--;
|
792 |
-
}
|
793 |
-
|
794 |
-
if (isset($content)) {
|
795 |
-
$content->scope = $callingScope;
|
796 |
-
$this->setRaw(self::$namespaces["special"] . "content", $content);
|
797 |
-
}
|
798 |
-
|
799 |
-
if (isset($mixin->args)) {
|
800 |
-
$this->applyArguments($mixin->args, $argValues);
|
801 |
-
}
|
802 |
-
|
803 |
-
foreach ($mixin->children as $child) {
|
804 |
-
$this->compileChild($child, $out);
|
805 |
-
}
|
806 |
-
|
807 |
-
$this->popEnv();
|
808 |
-
|
809 |
-
break;
|
810 |
-
case "mixin_content":
|
811 |
-
$content = $this->get(self::$namespaces["special"] . "content");
|
812 |
-
if (!isset($content)) {
|
813 |
-
$this->throwError("Expected @content inside of mixin");
|
814 |
-
}
|
815 |
-
|
816 |
-
$strongTypes = array('include', 'block', 'for', 'while');
|
817 |
-
foreach ($content->children as $child) {
|
818 |
-
$this->storeEnv = (in_array($child[0], $strongTypes))
|
819 |
-
? null
|
820 |
-
: $content->scope;
|
821 |
-
|
822 |
-
$this->compileChild($child, $out);
|
823 |
-
}
|
824 |
-
|
825 |
-
unset($this->storeEnv);
|
826 |
-
break;
|
827 |
-
case "debug":
|
828 |
-
list(,$value, $pos) = $child;
|
829 |
-
$line = $this->parser->getLineNo($pos);
|
830 |
-
$value = $this->compileValue($this->reduce($value, true));
|
831 |
-
//fwrite(STDERR, "Line $line DEBUG: $value\n");
|
832 |
-
break;
|
833 |
-
default:
|
834 |
-
$this->throwError("unknown child type: $child[0]");
|
835 |
-
}
|
836 |
-
}
|
837 |
-
|
838 |
-
protected function expToString($exp) {
|
839 |
-
list(, $op, $left, $right, $inParens, $whiteLeft, $whiteRight) = $exp;
|
840 |
-
$content = array($this->reduce($left));
|
841 |
-
if ($whiteLeft) $content[] = " ";
|
842 |
-
$content[] = $op;
|
843 |
-
if ($whiteRight) $content[] = " ";
|
844 |
-
$content[] = $this->reduce($right);
|
845 |
-
return array("string", "", $content);
|
846 |
-
}
|
847 |
-
|
848 |
-
protected function isTruthy($value) {
|
849 |
-
return $value != self::$false && $value != self::$null;
|
850 |
-
}
|
851 |
-
|
852 |
-
// should $value cause its operand to eval
|
853 |
-
protected function shouldEval($value) {
|
854 |
-
switch ($value[0]) {
|
855 |
-
case "exp":
|
856 |
-
if ($value[1] == "/") {
|
857 |
-
return $this->shouldEval($value[2], $value[3]);
|
858 |
-
}
|
859 |
-
case "var":
|
860 |
-
case "fncall":
|
861 |
-
return true;
|
862 |
-
}
|
863 |
-
return false;
|
864 |
-
}
|
865 |
-
|
866 |
-
protected function reduce($value, $inExp = false) {
|
867 |
-
list($type) = $value;
|
868 |
-
switch ($type) {
|
869 |
-
case "exp":
|
870 |
-
list(, $op, $left, $right, $inParens) = $value;
|
871 |
-
$opName = isset(self::$operatorNames[$op]) ? self::$operatorNames[$op] : $op;
|
872 |
-
|
873 |
-
$inExp = $inExp || $this->shouldEval($left) || $this->shouldEval($right);
|
874 |
-
|
875 |
-
$left = $this->reduce($left, true);
|
876 |
-
$right = $this->reduce($right, true);
|
877 |
-
|
878 |
-
// only do division in special cases
|
879 |
-
if ($opName == "div" && !$inParens && !$inExp) {
|
880 |
-
if ($left[0] != "color" && $right[0] != "color") {
|
881 |
-
return $this->expToString($value);
|
882 |
-
}
|
883 |
-
}
|
884 |
-
|
885 |
-
$left = $this->coerceForExpression($left);
|
886 |
-
$right = $this->coerceForExpression($right);
|
887 |
-
|
888 |
-
$ltype = $left[0];
|
889 |
-
$rtype = $right[0];
|
890 |
-
|
891 |
-
// this tries:
|
892 |
-
// 1. op_[op name]_[left type]_[right type]
|
893 |
-
// 2. op_[left type]_[right type] (passing the op as first arg
|
894 |
-
// 3. op_[op name]
|
895 |
-
$fn = "op_${opName}_${ltype}_${rtype}";
|
896 |
-
if (is_callable(array($this, $fn)) ||
|
897 |
-
(($fn = "op_${ltype}_${rtype}") &&
|
898 |
-
is_callable(array($this, $fn)) &&
|
899 |
-
$passOp = true) ||
|
900 |
-
(($fn = "op_${opName}") &&
|
901 |
-
is_callable(array($this, $fn)) &&
|
902 |
-
$genOp = true))
|
903 |
-
{
|
904 |
-
$unitChange = false;
|
905 |
-
if (!isset($genOp) &&
|
906 |
-
$left[0] == "number" && $right[0] == "number")
|
907 |
-
{
|
908 |
-
if ($opName == "mod" && $right[2] != "") {
|
909 |
-
$this->throwError("Cannot modulo by a number with units: $right[1]$right[2].");
|
910 |
-
}
|
911 |
-
|
912 |
-
$unitChange = true;
|
913 |
-
$emptyUnit = $left[2] == "" || $right[2] == "";
|
914 |
-
$targetUnit = "" != $left[2] ? $left[2] : $right[2];
|
915 |
-
|
916 |
-
if ($opName != "mul") {
|
917 |
-
$left[2] = "" != $left[2] ? $left[2] : $targetUnit;
|
918 |
-
$right[2] = "" != $right[2] ? $right[2] : $targetUnit;
|
919 |
-
}
|
920 |
-
|
921 |
-
if ($opName != "mod") {
|
922 |
-
$left = $this->normalizeNumber($left);
|
923 |
-
$right = $this->normalizeNumber($right);
|
924 |
-
}
|
925 |
-
|
926 |
-
if ($opName == "div" && !$emptyUnit && $left[2] == $right[2]) {
|
927 |
-
$targetUnit = "";
|
928 |
-
}
|
929 |
-
|
930 |
-
if ($opName == "mul") {
|
931 |
-
$left[2] = "" != $left[2] ? $left[2] : $right[2];
|
932 |
-
$right[2] = "" != $right[2] ? $right[2] : $left[2];
|
933 |
-
} elseif ($opName == "div" && $left[2] == $right[2]) {
|
934 |
-
$left[2] = "";
|
935 |
-
$right[2] = "";
|
936 |
-
}
|
937 |
-
}
|
938 |
-
|
939 |
-
$shouldEval = $inParens || $inExp;
|
940 |
-
if (isset($passOp)) {
|
941 |
-
$out = $this->$fn($op, $left, $right, $shouldEval);
|
942 |
-
} else {
|
943 |
-
$out = $this->$fn($left, $right, $shouldEval);
|
944 |
-
}
|
945 |
-
|
946 |
-
if (isset($out)) {
|
947 |
-
if ($unitChange && $out[0] == "number") {
|
948 |
-
$out = $this->coerceUnit($out, $targetUnit);
|
949 |
-
}
|
950 |
-
return $out;
|
951 |
-
}
|
952 |
-
}
|
953 |
-
|
954 |
-
return $this->expToString($value);
|
955 |
-
case "unary":
|
956 |
-
list(, $op, $exp, $inParens) = $value;
|
957 |
-
$inExp = $inExp || $this->shouldEval($exp);
|
958 |
-
|
959 |
-
$exp = $this->reduce($exp);
|
960 |
-
if ($exp[0] == "number") {
|
961 |
-
switch ($op) {
|
962 |
-
case "+":
|
963 |
-
return $exp;
|
964 |
-
case "-":
|
965 |
-
$exp[1] *= -1;
|
966 |
-
return $exp;
|
967 |
-
}
|
968 |
-
}
|
969 |
-
|
970 |
-
if ($op == "not") {
|
971 |
-
if ($inExp || $inParens) {
|
972 |
-
if ($exp == self::$false) {
|
973 |
-
return self::$true;
|
974 |
-
} else {
|
975 |
-
return self::$false;
|
976 |
-
}
|
977 |
-
} else {
|
978 |
-
$op = $op . " ";
|
979 |
-
}
|
980 |
-
}
|
981 |
-
|
982 |
-
return array("string", "", array($op, $exp));
|
983 |
-
case "var":
|
984 |
-
list(, $name) = $value;
|
985 |
-
return $this->reduce($this->get($name));
|
986 |
-
case "list":
|
987 |
-
foreach ($value[2] as &$item) {
|
988 |
-
$item = $this->reduce($item);
|
989 |
-
}
|
990 |
-
return $value;
|
991 |
-
case "string":
|
992 |
-
foreach ($value[2] as &$item) {
|
993 |
-
if (is_array($item)) {
|
994 |
-
$item = $this->reduce($item);
|
995 |
-
}
|
996 |
-
}
|
997 |
-
return $value;
|
998 |
-
case "interpolate":
|
999 |
-
$value[1] = $this->reduce($value[1]);
|
1000 |
-
return $value;
|
1001 |
-
case "fncall":
|
1002 |
-
list(,$name, $argValues) = $value;
|
1003 |
-
|
1004 |
-
// user defined function?
|
1005 |
-
$func = $this->get(self::$namespaces["function"] . $name, false);
|
1006 |
-
if ($func) {
|
1007 |
-
$this->pushEnv();
|
1008 |
-
|
1009 |
-
// set the args
|
1010 |
-
if (isset($func->args)) {
|
1011 |
-
$this->applyArguments($func->args, $argValues);
|
1012 |
-
}
|
1013 |
-
|
1014 |
-
// throw away lines and children
|
1015 |
-
$tmp = (object)array(
|
1016 |
-
"lines" => array(),
|
1017 |
-
"children" => array()
|
1018 |
-
);
|
1019 |
-
$ret = $this->compileChildren($func->children, $tmp);
|
1020 |
-
$this->popEnv();
|
1021 |
-
|
1022 |
-
return !isset($ret) ? self::$defaultValue : $ret;
|
1023 |
-
}
|
1024 |
-
|
1025 |
-
// built in function
|
1026 |
-
if ($this->callBuiltin($name, $argValues, $returnValue)) {
|
1027 |
-
return $returnValue;
|
1028 |
-
}
|
1029 |
-
|
1030 |
-
// need to flatten the arguments into a list
|
1031 |
-
$listArgs = array();
|
1032 |
-
foreach ((array)$argValues as $arg) {
|
1033 |
-
if (empty($arg[0])) {
|
1034 |
-
$listArgs[] = $this->reduce($arg[1]);
|
1035 |
-
}
|
1036 |
-
}
|
1037 |
-
return array("function", $name, array("list", ",", $listArgs));
|
1038 |
-
default:
|
1039 |
-
return $value;
|
1040 |
-
}
|
1041 |
-
}
|
1042 |
-
|
1043 |
-
public function normalizeValue($value) {
|
1044 |
-
$value = $this->coerceForExpression($this->reduce($value));
|
1045 |
-
list($type) = $value;
|
1046 |
-
|
1047 |
-
switch ($type) {
|
1048 |
-
case "list":
|
1049 |
-
$value = $this->extractInterpolation($value);
|
1050 |
-
if ($value[0] != "list") {
|
1051 |
-
return array("keyword", $this->compileValue($value));
|
1052 |
-
}
|
1053 |
-
foreach ($value[2] as $key => $item) {
|
1054 |
-
$value[2][$key] = $this->normalizeValue($item);
|
1055 |
-
}
|
1056 |
-
return $value;
|
1057 |
-
case "number":
|
1058 |
-
return $this->normalizeNumber($value);
|
1059 |
-
default:
|
1060 |
-
return $value;
|
1061 |
-
}
|
1062 |
-
}
|
1063 |
-
|
1064 |
-
// just does physical lengths for now
|
1065 |
-
protected function normalizeNumber($number) {
|
1066 |
-
list(, $value, $unit) = $number;
|
1067 |
-
if (isset(self::$unitTable["in"][$unit])) {
|
1068 |
-
$conv = self::$unitTable["in"][$unit];
|
1069 |
-
return array("number", $value / $conv, "in");
|
1070 |
-
}
|
1071 |
-
return $number;
|
1072 |
-
}
|
1073 |
-
|
1074 |
-
// $number should be normalized
|
1075 |
-
protected function coerceUnit($number, $unit) {
|
1076 |
-
list(, $value, $baseUnit) = $number;
|
1077 |
-
if (isset(self::$unitTable[$baseUnit][$unit])) {
|
1078 |
-
$value = $value * self::$unitTable[$baseUnit][$unit];
|
1079 |
-
}
|
1080 |
-
|
1081 |
-
return array("number", $value, $unit);
|
1082 |
-
}
|
1083 |
-
|
1084 |
-
protected function op_add_number_number($left, $right) {
|
1085 |
-
return array("number", $left[1] + $right[1], $left[2]);
|
1086 |
-
}
|
1087 |
-
|
1088 |
-
protected function op_mul_number_number($left, $right) {
|
1089 |
-
return array("number", $left[1] * $right[1], $left[2]);
|
1090 |
-
}
|
1091 |
-
|
1092 |
-
protected function op_sub_number_number($left, $right) {
|
1093 |
-
return array("number", $left[1] - $right[1], $left[2]);
|
1094 |
-
}
|
1095 |
-
|
1096 |
-
protected function op_div_number_number($left, $right) {
|
1097 |
-
return array("number", $left[1] / $right[1], $left[2]);
|
1098 |
-
}
|
1099 |
-
|
1100 |
-
protected function op_mod_number_number($left, $right) {
|
1101 |
-
return array("number", $left[1] % $right[1], $left[2]);
|
1102 |
-
}
|
1103 |
-
|
1104 |
-
// adding strings
|
1105 |
-
protected function op_add($left, $right) {
|
1106 |
-
if ($strLeft = $this->coerceString($left)) {
|
1107 |
-
if ($right[0] == "string") {
|
1108 |
-
$right[1] = "";
|
1109 |
-
}
|
1110 |
-
$strLeft[2][] = $right;
|
1111 |
-
return $strLeft;
|
1112 |
-
}
|
1113 |
-
|
1114 |
-
if ($strRight = $this->coerceString($right)) {
|
1115 |
-
if ($left[0] == "string") {
|
1116 |
-
$left[1] = "";
|
1117 |
-
}
|
1118 |
-
array_unshift($strRight[2], $left);
|
1119 |
-
return $strRight;
|
1120 |
-
}
|
1121 |
-
}
|
1122 |
-
|
1123 |
-
protected function op_and($left, $right, $shouldEval) {
|
1124 |
-
if (!$shouldEval) return;
|
1125 |
-
if ($left != self::$false) return $right;
|
1126 |
-
return $left;
|
1127 |
-
}
|
1128 |
-
|
1129 |
-
protected function op_or($left, $right, $shouldEval) {
|
1130 |
-
if (!$shouldEval) return;
|
1131 |
-
if ($left != self::$false) return $left;
|
1132 |
-
return $right;
|
1133 |
-
}
|
1134 |
-
|
1135 |
-
protected function op_color_color($op, $left, $right) {
|
1136 |
-
$out = array('color');
|
1137 |
-
foreach (range(1, 3) as $i) {
|
1138 |
-
$lval = isset($left[$i]) ? $left[$i] : 0;
|
1139 |
-
$rval = isset($right[$i]) ? $right[$i] : 0;
|
1140 |
-
switch ($op) {
|
1141 |
-
case '+':
|
1142 |
-
$out[] = $lval + $rval;
|
1143 |
-
break;
|
1144 |
-
case '-':
|
1145 |
-
$out[] = $lval - $rval;
|
1146 |
-
break;
|
1147 |
-
case '*':
|
1148 |
-
$out[] = $lval * $rval;
|
1149 |
-
break;
|
1150 |
-
case '%':
|
1151 |
-
$out[] = $lval % $rval;
|
1152 |
-
break;
|
1153 |
-
case '/':
|
1154 |
-
if ($rval == 0) {
|
1155 |
-
$this->throwError("color: Can't divide by zero");
|
1156 |
-
}
|
1157 |
-
$out[] = $lval / $rval;
|
1158 |
-
break;
|
1159 |
-
case "==":
|
1160 |
-
return $this->op_eq($left, $right);
|
1161 |
-
case "!=":
|
1162 |
-
return $this->op_neq($left, $right);
|
1163 |
-
default:
|
1164 |
-
$this->throwError("color: unknown op $op");
|
1165 |
-
}
|
1166 |
-
}
|
1167 |
-
|
1168 |
-
if (isset($left[4])) $out[4] = $left[4];
|
1169 |
-
elseif (isset($right[4])) $out[4] = $right[4];
|
1170 |
-
|
1171 |
-
return $this->fixColor($out);
|
1172 |
-
}
|
1173 |
-
|
1174 |
-
protected function op_color_number($op, $left, $right) {
|
1175 |
-
$value = $right[1];
|
1176 |
-
return $this->op_color_color($op, $left,
|
1177 |
-
array("color", $value, $value, $value));
|
1178 |
-
}
|
1179 |
-
|
1180 |
-
protected function op_number_color($op, $left, $right) {
|
1181 |
-
$value = $left[1];
|
1182 |
-
return $this->op_color_color($op,
|
1183 |
-
array("color", $value, $value, $value), $right);
|
1184 |
-
}
|
1185 |
-
|
1186 |
-
protected function op_eq($left, $right) {
|
1187 |
-
if (($lStr = $this->coerceString($left)) && ($rStr = $this->coerceString($right))) {
|
1188 |
-
$lStr[1] = "";
|
1189 |
-
$rStr[1] = "";
|
1190 |
-
return $this->toBool($this->compileValue($lStr) == $this->compileValue($rStr));
|
1191 |
-
}
|
1192 |
-
|
1193 |
-
return $this->toBool($left == $right);
|
1194 |
-
}
|
1195 |
-
|
1196 |
-
protected function op_neq($left, $right) {
|
1197 |
-
return $this->toBool($left != $right);
|
1198 |
-
}
|
1199 |
-
|
1200 |
-
protected function op_gte_number_number($left, $right) {
|
1201 |
-
return $this->toBool($left[1] >= $right[1]);
|
1202 |
-
}
|
1203 |
-
|
1204 |
-
protected function op_gt_number_number($left, $right) {
|
1205 |
-
return $this->toBool($left[1] > $right[1]);
|
1206 |
-
}
|
1207 |
-
|
1208 |
-
protected function op_lte_number_number($left, $right) {
|
1209 |
-
return $this->toBool($left[1] <= $right[1]);
|
1210 |
-
}
|
1211 |
-
|
1212 |
-
protected function op_lt_number_number($left, $right) {
|
1213 |
-
return $this->toBool($left[1] < $right[1]);
|
1214 |
-
}
|
1215 |
-
|
1216 |
-
public function toBool($thing) {
|
1217 |
-
return $thing ? self::$true : self::$false;
|
1218 |
-
}
|
1219 |
-
|
1220 |
-
/**
|
1221 |
-
* Compiles a primitive value into a CSS property value.
|
1222 |
-
*
|
1223 |
-
* Values in scssphp are typed by being wrapped in arrays, their format is
|
1224 |
-
* typically:
|
1225 |
-
*
|
1226 |
-
* array(type, contents [, additional_contents]*)
|
1227 |
-
*
|
1228 |
-
* The input is expected to be reduced. This function will not work on
|
1229 |
-
* things like expressions and variables.
|
1230 |
-
*
|
1231 |
-
* @param array $value
|
1232 |
-
*/
|
1233 |
-
protected function compileValue($value) {
|
1234 |
-
$value = $this->reduce($value);
|
1235 |
-
|
1236 |
-
list($type) = $value;
|
1237 |
-
switch ($type) {
|
1238 |
-
case "keyword":
|
1239 |
-
return $value[1];
|
1240 |
-
case "color":
|
1241 |
-
// [1] - red component (either number for a %)
|
1242 |
-
// [2] - green component
|
1243 |
-
// [3] - blue component
|
1244 |
-
// [4] - optional alpha component
|
1245 |
-
list(, $r, $g, $b) = $value;
|
1246 |
-
|
1247 |
-
$r = round($r);
|
1248 |
-
$g = round($g);
|
1249 |
-
$b = round($b);
|
1250 |
-
|
1251 |
-
if (count($value) == 5 && $value[4] != 1) { // rgba
|
1252 |
-
return 'rgba('.$r.', '.$g.', '.$b.', '.$value[4].')';
|
1253 |
-
}
|
1254 |
-
|
1255 |
-
$h = sprintf("#%02x%02x%02x", $r, $g, $b);
|
1256 |
-
|
1257 |
-
// Converting hex color to short notation (e.g. #003399 to #039)
|
1258 |
-
if ($h[1] === $h[2] && $h[3] === $h[4] && $h[5] === $h[6]) {
|
1259 |
-
$h = '#' . $h[1] . $h[3] . $h[5];
|
1260 |
-
}
|
1261 |
-
|
1262 |
-
return $h;
|
1263 |
-
case "number":
|
1264 |
-
return round($value[1], $this->numberPrecision) . $value[2];
|
1265 |
-
case "string":
|
1266 |
-
return $value[1] . $this->compileStringContent($value) . $value[1];
|
1267 |
-
case "function":
|
1268 |
-
$args = !empty($value[2]) ? $this->compileValue($value[2]) : "";
|
1269 |
-
return "$value[1]($args)";
|
1270 |
-
case "list":
|
1271 |
-
$value = $this->extractInterpolation($value);
|
1272 |
-
if ($value[0] != "list") return $this->compileValue($value);
|
1273 |
-
|
1274 |
-
list(, $delim, $items) = $value;
|
1275 |
-
|
1276 |
-
$filtered = array();
|
1277 |
-
foreach ($items as $item) {
|
1278 |
-
if ($item[0] == "null") continue;
|
1279 |
-
$filtered[] = $this->compileValue($item);
|
1280 |
-
}
|
1281 |
-
|
1282 |
-
return implode("$delim ", $filtered);
|
1283 |
-
case "interpolated": # node created by extractInterpolation
|
1284 |
-
list(, $interpolate, $left, $right) = $value;
|
1285 |
-
list(,, $whiteLeft, $whiteRight) = $interpolate;
|
1286 |
-
|
1287 |
-
$left = count($left[2]) > 0 ?
|
1288 |
-
$this->compileValue($left).$whiteLeft : "";
|
1289 |
-
|
1290 |
-
$right = count($right[2]) > 0 ?
|
1291 |
-
$whiteRight.$this->compileValue($right) : "";
|
1292 |
-
|
1293 |
-
return $left.$this->compileValue($interpolate).$right;
|
1294 |
-
|
1295 |
-
case "interpolate": # raw parse node
|
1296 |
-
list(, $exp) = $value;
|
1297 |
-
|
1298 |
-
// strip quotes if it's a string
|
1299 |
-
$reduced = $this->reduce($exp);
|
1300 |
-
switch ($reduced[0]) {
|
1301 |
-
case "string":
|
1302 |
-
$reduced = array("keyword",
|
1303 |
-
$this->compileStringContent($reduced));
|
1304 |
-
break;
|
1305 |
-
case "null":
|
1306 |
-
$reduced = array("keyword", "");
|
1307 |
-
}
|
1308 |
-
|
1309 |
-
return $this->compileValue($reduced);
|
1310 |
-
case "null":
|
1311 |
-
return "null";
|
1312 |
-
default:
|
1313 |
-
$this->throwError("unknown value type: $type");
|
1314 |
-
}
|
1315 |
-
}
|
1316 |
-
|
1317 |
-
protected function compileStringContent($string) {
|
1318 |
-
$parts = array();
|
1319 |
-
foreach ($string[2] as $part) {
|
1320 |
-
if (is_array($part)) {
|
1321 |
-
$parts[] = $this->compileValue($part);
|
1322 |
-
} else {
|
1323 |
-
$parts[] = $part;
|
1324 |
-
}
|
1325 |
-
}
|
1326 |
-
|
1327 |
-
return implode($parts);
|
1328 |
-
}
|
1329 |
-
|
1330 |
-
// doesn't need to be recursive, compileValue will handle that
|
1331 |
-
protected function extractInterpolation($list) {
|
1332 |
-
$items = $list[2];
|
1333 |
-
foreach ($items as $i => $item) {
|
1334 |
-
if ($item[0] == "interpolate") {
|
1335 |
-
$before = array("list", $list[1], array_slice($items, 0, $i));
|
1336 |
-
$after = array("list", $list[1], array_slice($items, $i + 1));
|
1337 |
-
return array("interpolated", $item, $before, $after);
|
1338 |
-
}
|
1339 |
-
}
|
1340 |
-
return $list;
|
1341 |
-
}
|
1342 |
-
|
1343 |
-
// find the final set of selectors
|
1344 |
-
protected function multiplySelectors($env) {
|
1345 |
-
$envs = array();
|
1346 |
-
while (null !== $env) {
|
1347 |
-
if (!empty($env->selectors)) {
|
1348 |
-
$envs[] = $env;
|
1349 |
-
}
|
1350 |
-
$env = $env->parent;
|
1351 |
-
};
|
1352 |
-
|
1353 |
-
$selectors = array();
|
1354 |
-
$parentSelectors = array(array());
|
1355 |
-
while ($env = array_pop($envs)) {
|
1356 |
-
$selectors = array();
|
1357 |
-
foreach ($env->selectors as $selector) {
|
1358 |
-
foreach ($parentSelectors as $parent) {
|
1359 |
-
$selectors[] = $this->joinSelectors($parent, $selector);
|
1360 |
-
}
|
1361 |
-
}
|
1362 |
-
$parentSelectors = $selectors;
|
1363 |
-
}
|
1364 |
-
|
1365 |
-
return $selectors;
|
1366 |
-
}
|
1367 |
-
|
1368 |
-
// looks for & to replace, or append parent before child
|
1369 |
-
protected function joinSelectors($parent, $child) {
|
1370 |
-
$setSelf = false;
|
1371 |
-
$out = array();
|
1372 |
-
foreach ($child as $part) {
|
1373 |
-
$newPart = array();
|
1374 |
-
foreach ($part as $p) {
|
1375 |
-
if ($p == self::$selfSelector) {
|
1376 |
-
$setSelf = true;
|
1377 |
-
foreach ($parent as $i => $parentPart) {
|
1378 |
-
if ($i > 0) {
|
1379 |
-
$out[] = $newPart;
|
1380 |
-
$newPart = array();
|
1381 |
-
}
|
1382 |
-
|
1383 |
-
foreach ($parentPart as $pp) {
|
1384 |
-
$newPart[] = $pp;
|
1385 |
-
}
|
1386 |
-
}
|
1387 |
-
} else {
|
1388 |
-
$newPart[] = $p;
|
1389 |
-
}
|
1390 |
-
}
|
1391 |
-
|
1392 |
-
$out[] = $newPart;
|
1393 |
-
}
|
1394 |
-
|
1395 |
-
return $setSelf ? $out : array_merge($parent, $child);
|
1396 |
-
}
|
1397 |
-
|
1398 |
-
protected function multiplyMedia($env, $childQueries = null) {
|
1399 |
-
if (!isset($env) ||
|
1400 |
-
!empty($env->block->type) && $env->block->type != "media")
|
1401 |
-
{
|
1402 |
-
return $childQueries;
|
1403 |
-
}
|
1404 |
-
|
1405 |
-
// plain old block, skip
|
1406 |
-
if (empty($env->block->type)) {
|
1407 |
-
return $this->multiplyMedia($env->parent, $childQueries);
|
1408 |
-
}
|
1409 |
-
|
1410 |
-
$parentQueries = $env->block->queryList;
|
1411 |
-
if ($childQueries == null) {
|
1412 |
-
$childQueries = $parentQueries;
|
1413 |
-
} else {
|
1414 |
-
$originalQueries = $childQueries;
|
1415 |
-
$childQueries = array();
|
1416 |
-
|
1417 |
-
foreach ($parentQueries as $parentQuery){
|
1418 |
-
foreach ($originalQueries as $childQuery) {
|
1419 |
-
$childQueries []= array_merge($parentQuery, $childQuery);
|
1420 |
-
}
|
1421 |
-
}
|
1422 |
-
}
|
1423 |
-
|
1424 |
-
return $this->multiplyMedia($env->parent, $childQueries);
|
1425 |
-
}
|
1426 |
-
|
1427 |
-
// convert something to list
|
1428 |
-
protected function coerceList($item, $delim = ",") {
|
1429 |
-
if (isset($item) && $item[0] == "list") {
|
1430 |
-
return $item;
|
1431 |
-
}
|
1432 |
-
|
1433 |
-
return array("list", $delim, !isset($item) ? array(): array($item));
|
1434 |
-
}
|
1435 |
-
|
1436 |
-
protected function applyArguments($argDef, $argValues) {
|
1437 |
-
$hasVariable = false;
|
1438 |
-
$args = array();
|
1439 |
-
foreach ($argDef as $i => $arg) {
|
1440 |
-
list($name, $default, $isVariable) = $argDef[$i];
|
1441 |
-
$args[$name] = array($i, $name, $default, $isVariable);
|
1442 |
-
$hasVariable |= $isVariable;
|
1443 |
-
}
|
1444 |
-
|
1445 |
-
$keywordArgs = array();
|
1446 |
-
$deferredKeywordArgs = array();
|
1447 |
-
$remaining = array();
|
1448 |
-
// assign the keyword args
|
1449 |
-
foreach ((array) $argValues as $arg) {
|
1450 |
-
if (!empty($arg[0])) {
|
1451 |
-
if (!isset($args[$arg[0][1]])) {
|
1452 |
-
if ($hasVariable) {
|
1453 |
-
$deferredKeywordArgs[$arg[0][1]] = $arg[1];
|
1454 |
-
} else {
|
1455 |
-
$this->throwError("Mixin or function doesn't have an argument named $%s.", $arg[0][1]);
|
1456 |
-
}
|
1457 |
-
} elseif ($args[$arg[0][1]][0] < count($remaining)) {
|
1458 |
-
$this->throwError("The argument $%s was passed both by position and by name.", $arg[0][1]);
|
1459 |
-
} else {
|
1460 |
-
$keywordArgs[$arg[0][1]] = $arg[1];
|
1461 |
-
}
|
1462 |
-
} elseif (count($keywordArgs)) {
|
1463 |
-
$this->throwError('Positional arguments must come before keyword arguments.');
|
1464 |
-
} elseif ($arg[2] == true) {
|
1465 |
-
$val = $this->reduce($arg[1], true);
|
1466 |
-
if ($val[0] == "list") {
|
1467 |
-
foreach ($val[2] as $name => $item) {
|
1468 |
-
if (!is_numeric($name)) {
|
1469 |
-
$keywordArgs[$name] = $item;
|
1470 |
-
} else {
|
1471 |
-
$remaining[] = $item;
|
1472 |
-
}
|
1473 |
-
}
|
1474 |
-
} else {
|
1475 |
-
$remaining[] = $val;
|
1476 |
-
}
|
1477 |
-
} else {
|
1478 |
-
$remaining[] = $arg[1];
|
1479 |
-
}
|
1480 |
-
}
|
1481 |
-
|
1482 |
-
foreach ($args as $arg) {
|
1483 |
-
list($i, $name, $default, $isVariable) = $arg;
|
1484 |
-
if ($isVariable) {
|
1485 |
-
$val = array("list", ",", array());
|
1486 |
-
for ($count = count($remaining); $i < $count; $i++) {
|
1487 |
-
$val[2][] = $remaining[$i];
|
1488 |
-
}
|
1489 |
-
foreach ($deferredKeywordArgs as $itemName => $item) {
|
1490 |
-
$val[2][$itemName] = $item;
|
1491 |
-
}
|
1492 |
-
} elseif (isset($remaining[$i])) {
|
1493 |
-
$val = $remaining[$i];
|
1494 |
-
} elseif (isset($keywordArgs[$name])) {
|
1495 |
-
$val = $keywordArgs[$name];
|
1496 |
-
} elseif (!empty($default)) {
|
1497 |
-
$val = $default;
|
1498 |
-
} else {
|
1499 |
-
$this->throwError("Missing argument $name");
|
1500 |
-
}
|
1501 |
-
|
1502 |
-
$this->set($name, $this->reduce($val, true), true);
|
1503 |
-
}
|
1504 |
-
}
|
1505 |
-
|
1506 |
-
protected function pushEnv($block=null) {
|
1507 |
-
$env = new stdClass;
|
1508 |
-
$env->parent = $this->env;
|
1509 |
-
$env->store = array();
|
1510 |
-
$env->block = $block;
|
1511 |
-
$env->depth = isset($this->env->depth) ? $this->env->depth + 1 : 0;
|
1512 |
-
|
1513 |
-
$this->env = $env;
|
1514 |
-
return $env;
|
1515 |
-
}
|
1516 |
-
|
1517 |
-
protected function normalizeName($name) {
|
1518 |
-
return str_replace("-", "_", $name);
|
1519 |
-
}
|
1520 |
-
|
1521 |
-
protected function getStoreEnv() {
|
1522 |
-
return isset($this->storeEnv) ? $this->storeEnv : $this->env;
|
1523 |
-
}
|
1524 |
-
|
1525 |
-
protected function set($name, $value, $shadow=false) {
|
1526 |
-
$name = $this->normalizeName($name);
|
1527 |
-
|
1528 |
-
if ($shadow) {
|
1529 |
-
$this->setRaw($name, $value);
|
1530 |
-
} else {
|
1531 |
-
$this->setExisting($name, $value);
|
1532 |
-
}
|
1533 |
-
}
|
1534 |
-
|
1535 |
-
protected function setExisting($name, $value, $env = null) {
|
1536 |
-
if (!isset($env)) $env = $this->getStoreEnv();
|
1537 |
-
|
1538 |
-
if (isset($env->store[$name]) || !isset($env->parent)) {
|
1539 |
-
$env->store[$name] = $value;
|
1540 |
-
} else {
|
1541 |
-
$this->setExisting($name, $value, $env->parent);
|
1542 |
-
}
|
1543 |
-
}
|
1544 |
-
|
1545 |
-
protected function setRaw($name, $value) {
|
1546 |
-
$env = $this->getStoreEnv();
|
1547 |
-
$env->store[$name] = $value;
|
1548 |
-
}
|
1549 |
-
|
1550 |
-
public function get($name, $defaultValue = null, $env = null) {
|
1551 |
-
$name = $this->normalizeName($name);
|
1552 |
-
|
1553 |
-
if (!isset($env)) $env = $this->getStoreEnv();
|
1554 |
-
if (!isset($defaultValue)) $defaultValue = self::$defaultValue;
|
1555 |
-
|
1556 |
-
if (isset($env->store[$name])) {
|
1557 |
-
return $env->store[$name];
|
1558 |
-
} elseif (isset($env->parent)) {
|
1559 |
-
return $this->get($name, $defaultValue, $env->parent);
|
1560 |
-
}
|
1561 |
-
|
1562 |
-
return $defaultValue; // found nothing
|
1563 |
-
}
|
1564 |
-
|
1565 |
-
protected function injectVariables(array $args)
|
1566 |
-
{
|
1567 |
-
if (empty($args)) {
|
1568 |
-
return;
|
1569 |
-
}
|
1570 |
-
|
1571 |
-
$parser = new scss_parser(__METHOD__, false);
|
1572 |
-
|
1573 |
-
foreach ($args as $name => $strValue) {
|
1574 |
-
if ($name[0] === '$') {
|
1575 |
-
$name = substr($name, 1);
|
1576 |
-
}
|
1577 |
-
|
1578 |
-
$parser->env = null;
|
1579 |
-
$parser->count = 0;
|
1580 |
-
$parser->buffer = (string) $strValue;
|
1581 |
-
$parser->inParens = false;
|
1582 |
-
$parser->eatWhiteDefault = true;
|
1583 |
-
$parser->insertComments = true;
|
1584 |
-
|
1585 |
-
if ( ! $parser->valueList($value)) {
|
1586 |
-
throw new Exception("failed to parse passed in variable $name: $strValue");
|
1587 |
-
}
|
1588 |
-
|
1589 |
-
$this->set($name, $value);
|
1590 |
-
}
|
1591 |
-
}
|
1592 |
-
|
1593 |
-
/**
|
1594 |
-
* Set variables
|
1595 |
-
*
|
1596 |
-
* @param array $variables
|
1597 |
-
*/
|
1598 |
-
public function setVariables(array $variables)
|
1599 |
-
{
|
1600 |
-
$this->registeredVars = array_merge($this->registeredVars, $variables);
|
1601 |
-
}
|
1602 |
-
|
1603 |
-
/**
|
1604 |
-
* Unset variable
|
1605 |
-
*
|
1606 |
-
* @param string $name
|
1607 |
-
*/
|
1608 |
-
public function unsetVariable($name)
|
1609 |
-
{
|
1610 |
-
unset($this->registeredVars[$name]);
|
1611 |
-
}
|
1612 |
-
|
1613 |
-
protected function popEnv() {
|
1614 |
-
$env = $this->env;
|
1615 |
-
$this->env = $this->env->parent;
|
1616 |
-
return $env;
|
1617 |
-
}
|
1618 |
-
|
1619 |
-
public function getParsedFiles() {
|
1620 |
-
return $this->parsedFiles;
|
1621 |
-
}
|
1622 |
-
|
1623 |
-
public function addImportPath($path) {
|
1624 |
-
$this->importPaths[] = $path;
|
1625 |
-
}
|
1626 |
-
|
1627 |
-
public function setImportPaths($path) {
|
1628 |
-
$this->importPaths = (array)$path;
|
1629 |
-
}
|
1630 |
-
|
1631 |
-
public function setNumberPrecision($numberPrecision) {
|
1632 |
-
$this->numberPrecision = $numberPrecision;
|
1633 |
-
}
|
1634 |
-
|
1635 |
-
public function setFormatter($formatterName) {
|
1636 |
-
$this->formatter = $formatterName;
|
1637 |
-
}
|
1638 |
-
|
1639 |
-
public function registerFunction($name, $func) {
|
1640 |
-
$this->userFunctions[$this->normalizeName($name)] = $func;
|
1641 |
-
}
|
1642 |
-
|
1643 |
-
public function unregisterFunction($name) {
|
1644 |
-
unset($this->userFunctions[$this->normalizeName($name)]);
|
1645 |
-
}
|
1646 |
-
|
1647 |
-
protected function importFile($path, $out) {
|
1648 |
-
// see if tree is cached
|
1649 |
-
$realPath = realpath($path);
|
1650 |
-
if (isset($this->importCache[$realPath])) {
|
1651 |
-
$tree = $this->importCache[$realPath];
|
1652 |
-
} else {
|
1653 |
-
$code = self::$parent->filesystem->execute( 'get_contents', $path );
|
1654 |
-
//$code = file_get_contents($path);
|
1655 |
-
$parser = new scss_parser($path, false);
|
1656 |
-
$tree = $parser->parse($code);
|
1657 |
-
$this->parsedFiles[] = $path;
|
1658 |
-
|
1659 |
-
$this->importCache[$realPath] = $tree;
|
1660 |
-
}
|
1661 |
-
|
1662 |
-
$pi = pathinfo($path);
|
1663 |
-
array_unshift($this->importPaths, $pi['dirname']);
|
1664 |
-
$this->compileChildren($tree->children, $out);
|
1665 |
-
array_shift($this->importPaths);
|
1666 |
-
}
|
1667 |
-
|
1668 |
-
// results the file path for an import url if it exists
|
1669 |
-
public function findImport($url) {
|
1670 |
-
$urls = array();
|
1671 |
-
|
1672 |
-
// for "normal" scss imports (ignore vanilla css and external requests)
|
1673 |
-
if (!preg_match('/\.css|^http:\/\/$/', $url)) {
|
1674 |
-
// try both normal and the _partial filename
|
1675 |
-
$urls = array($url, preg_replace('/[^\/]+$/', '_\0', $url));
|
1676 |
-
}
|
1677 |
-
|
1678 |
-
foreach ($this->importPaths as $dir) {
|
1679 |
-
if (is_string($dir)) {
|
1680 |
-
// check urls for normal import paths
|
1681 |
-
foreach ($urls as $full) {
|
1682 |
-
$full = $dir .
|
1683 |
-
(!empty($dir) && substr($dir, -1) != '/' ? '/' : '') .
|
1684 |
-
$full;
|
1685 |
-
|
1686 |
-
if ($this->fileExists($file = $full.'.scss') ||
|
1687 |
-
$this->fileExists($file = $full))
|
1688 |
-
{
|
1689 |
-
return $file;
|
1690 |
-
}
|
1691 |
-
}
|
1692 |
-
} else {
|
1693 |
-
// check custom callback for import path
|
1694 |
-
$file = call_user_func($dir,$url,$this);
|
1695 |
-
if ($file !== null) {
|
1696 |
-
return $file;
|
1697 |
-
}
|
1698 |
-
}
|
1699 |
-
}
|
1700 |
-
|
1701 |
-
return null;
|
1702 |
-
}
|
1703 |
-
|
1704 |
-
protected function fileExists($name) {
|
1705 |
-
return is_file($name);
|
1706 |
-
}
|
1707 |
-
|
1708 |
-
protected function callBuiltin($name, $args, &$returnValue) {
|
1709 |
-
// try a lib function
|
1710 |
-
$name = $this->normalizeName($name);
|
1711 |
-
$libName = "lib_".$name;
|
1712 |
-
$f = array($this, $libName);
|
1713 |
-
if (is_callable($f)) {
|
1714 |
-
$prototype = isset(self::$$libName) ? self::$$libName : null;
|
1715 |
-
$sorted = $this->sortArgs($prototype, $args);
|
1716 |
-
foreach ($sorted as &$val) {
|
1717 |
-
$val = $this->reduce($val, true);
|
1718 |
-
}
|
1719 |
-
$returnValue = call_user_func($f, $sorted, $this);
|
1720 |
-
} elseif (isset($this->userFunctions[$name])) {
|
1721 |
-
// see if we can find a user function
|
1722 |
-
$fn = $this->userFunctions[$name];
|
1723 |
-
|
1724 |
-
foreach ($args as &$val) {
|
1725 |
-
$val = $this->reduce($val[1], true);
|
1726 |
-
}
|
1727 |
-
|
1728 |
-
$returnValue = call_user_func($fn, $args, $this);
|
1729 |
-
}
|
1730 |
-
|
1731 |
-
if (isset($returnValue)) {
|
1732 |
-
// coerce a php value into a scss one
|
1733 |
-
if (is_numeric($returnValue)) {
|
1734 |
-
$returnValue = array('number', $returnValue, "");
|
1735 |
-
} elseif (is_bool($returnValue)) {
|
1736 |
-
$returnValue = $returnValue ? self::$true : self::$false;
|
1737 |
-
} elseif (!is_array($returnValue)) {
|
1738 |
-
$returnValue = array('keyword', $returnValue);
|
1739 |
-
}
|
1740 |
-
|
1741 |
-
return true;
|
1742 |
-
}
|
1743 |
-
|
1744 |
-
return false;
|
1745 |
-
}
|
1746 |
-
|
1747 |
-
// sorts any keyword arguments
|
1748 |
-
// TODO: merge with apply arguments
|
1749 |
-
protected function sortArgs($prototype, $args) {
|
1750 |
-
$keyArgs = array();
|
1751 |
-
$posArgs = array();
|
1752 |
-
|
1753 |
-
foreach ($args as $arg) {
|
1754 |
-
list($key, $value) = $arg;
|
1755 |
-
$key = $key[1];
|
1756 |
-
if (empty($key)) {
|
1757 |
-
$posArgs[] = $value;
|
1758 |
-
} else {
|
1759 |
-
$keyArgs[$key] = $value;
|
1760 |
-
}
|
1761 |
-
}
|
1762 |
-
|
1763 |
-
if (!isset($prototype)) return $posArgs;
|
1764 |
-
|
1765 |
-
$finalArgs = array();
|
1766 |
-
foreach ($prototype as $i => $names) {
|
1767 |
-
if (isset($posArgs[$i])) {
|
1768 |
-
$finalArgs[] = $posArgs[$i];
|
1769 |
-
continue;
|
1770 |
-
}
|
1771 |
-
|
1772 |
-
$set = false;
|
1773 |
-
foreach ((array)$names as $name) {
|
1774 |
-
if (isset($keyArgs[$name])) {
|
1775 |
-
$finalArgs[] = $keyArgs[$name];
|
1776 |
-
$set = true;
|
1777 |
-
break;
|
1778 |
-
}
|
1779 |
-
}
|
1780 |
-
|
1781 |
-
if (!$set) {
|
1782 |
-
$finalArgs[] = null;
|
1783 |
-
}
|
1784 |
-
}
|
1785 |
-
|
1786 |
-
return $finalArgs;
|
1787 |
-
}
|
1788 |
-
|
1789 |
-
protected function coerceForExpression($value) {
|
1790 |
-
if ($color = $this->coerceColor($value)) {
|
1791 |
-
return $color;
|
1792 |
-
}
|
1793 |
-
|
1794 |
-
return $value;
|
1795 |
-
}
|
1796 |
-
|
1797 |
-
protected function coerceColor($value) {
|
1798 |
-
switch ($value[0]) {
|
1799 |
-
case "color": return $value;
|
1800 |
-
case "keyword":
|
1801 |
-
$name = $value[1];
|
1802 |
-
if (isset(self::$cssColors[$name])) {
|
1803 |
-
$rgba = explode(',', self::$cssColors[$name]);
|
1804 |
-
return isset($rgba[3])
|
1805 |
-
? array('color', (int) $rgba[0], (int) $rgba[1], (int) $rgba[2], (int) $rgba[3])
|
1806 |
-
: array('color', (int) $rgba[0], (int) $rgba[1], (int) $rgba[2]);
|
1807 |
-
}
|
1808 |
-
return null;
|
1809 |
-
}
|
1810 |
-
|
1811 |
-
return null;
|
1812 |
-
}
|
1813 |
-
|
1814 |
-
protected function coerceString($value) {
|
1815 |
-
switch ($value[0]) {
|
1816 |
-
case "string":
|
1817 |
-
return $value;
|
1818 |
-
case "keyword":
|
1819 |
-
return array("string", "", array($value[1]));
|
1820 |
-
}
|
1821 |
-
return null;
|
1822 |
-
}
|
1823 |
-
|
1824 |
-
public function assertList($value) {
|
1825 |
-
if ($value[0] != "list")
|
1826 |
-
$this->throwError("expecting list");
|
1827 |
-
return $value;
|
1828 |
-
}
|
1829 |
-
|
1830 |
-
public function assertColor($value) {
|
1831 |
-
if ($color = $this->coerceColor($value)) return $color;
|
1832 |
-
$this->throwError("expecting color");
|
1833 |
-
}
|
1834 |
-
|
1835 |
-
public function assertNumber($value) {
|
1836 |
-
if ($value[0] != "number")
|
1837 |
-
$this->throwError("expecting number");
|
1838 |
-
return $value[1];
|
1839 |
-
}
|
1840 |
-
|
1841 |
-
protected function coercePercent($value) {
|
1842 |
-
if ($value[0] == "number") {
|
1843 |
-
if ($value[2] == "%") {
|
1844 |
-
return $value[1] / 100;
|
1845 |
-
}
|
1846 |
-
return $value[1];
|
1847 |
-
}
|
1848 |
-
return 0;
|
1849 |
-
}
|
1850 |
-
|
1851 |
-
// make sure a color's components don't go out of bounds
|
1852 |
-
protected function fixColor($c) {
|
1853 |
-
foreach (range(1, 3) as $i) {
|
1854 |
-
if ($c[$i] < 0) $c[$i] = 0;
|
1855 |
-
if ($c[$i] > 255) $c[$i] = 255;
|
1856 |
-
}
|
1857 |
-
|
1858 |
-
return $c;
|
1859 |
-
}
|
1860 |
-
|
1861 |
-
public function toHSL($red, $green, $blue) {
|
1862 |
-
$min = min($red, $green, $blue);
|
1863 |
-
$max = max($red, $green, $blue);
|
1864 |
-
|
1865 |
-
$l = $min + $max;
|
1866 |
-
|
1867 |
-
if ($min == $max) {
|
1868 |
-
$s = $h = 0;
|
1869 |
-
} else {
|
1870 |
-
$d = $max - $min;
|
1871 |
-
|
1872 |
-
if ($l < 255)
|
1873 |
-
$s = $d / $l;
|
1874 |
-
else
|
1875 |
-
$s = $d / (510 - $l);
|
1876 |
-
|
1877 |
-
if ($red == $max)
|
1878 |
-
$h = 60 * ($green - $blue) / $d;
|
1879 |
-
elseif ($green == $max)
|
1880 |
-
$h = 60 * ($blue - $red) / $d + 120;
|
1881 |
-
elseif ($blue == $max)
|
1882 |
-
$h = 60 * ($red - $green) / $d + 240;
|
1883 |
-
}
|
1884 |
-
|
1885 |
-
return array('hsl', fmod($h, 360), $s * 100, $l / 5.1);
|
1886 |
-
}
|
1887 |
-
|
1888 |
-
public function hueToRGB($m1, $m2, $h) {
|
1889 |
-
if ($h < 0)
|
1890 |
-
$h += 1;
|
1891 |
-
elseif ($h > 1)
|
1892 |
-
$h -= 1;
|
1893 |
-
|
1894 |
-
if ($h * 6 < 1)
|
1895 |
-
return $m1 + ($m2 - $m1) * $h * 6;
|
1896 |
-
|
1897 |
-
if ($h * 2 < 1)
|
1898 |
-
return $m2;
|
1899 |
-
|
1900 |
-
if ($h * 3 < 2)
|
1901 |
-
return $m1 + ($m2 - $m1) * (2/3 - $h) * 6;
|
1902 |
-
|
1903 |
-
return $m1;
|
1904 |
-
}
|
1905 |
-
|
1906 |
-
// H from 0 to 360, S and L from 0 to 100
|
1907 |
-
public function toRGB($hue, $saturation, $lightness) {
|
1908 |
-
if ($hue < 0) {
|
1909 |
-
$hue += 360;
|
1910 |
-
}
|
1911 |
-
|
1912 |
-
$h = $hue / 360;
|
1913 |
-
$s = min(100, max(0, $saturation)) / 100;
|
1914 |
-
$l = min(100, max(0, $lightness)) / 100;
|
1915 |
-
|
1916 |
-
$m2 = $l <= 0.5 ? $l * ($s + 1) : $l + $s - $l * $s;
|
1917 |
-
$m1 = $l * 2 - $m2;
|
1918 |
-
|
1919 |
-
$r = $this->hueToRGB($m1, $m2, $h + 1/3) * 255;
|
1920 |
-
$g = $this->hueToRGB($m1, $m2, $h) * 255;
|
1921 |
-
$b = $this->hueToRGB($m1, $m2, $h - 1/3) * 255;
|
1922 |
-
|
1923 |
-
$out = array('color', $r, $g, $b);
|
1924 |
-
return $out;
|
1925 |
-
}
|
1926 |
-
|
1927 |
-
// Built in functions
|
1928 |
-
|
1929 |
-
protected static $lib_if = array("condition", "if-true", "if-false");
|
1930 |
-
protected function lib_if($args) {
|
1931 |
-
list($cond,$t, $f) = $args;
|
1932 |
-
if (!$this->isTruthy($cond)) return $f;
|
1933 |
-
return $t;
|
1934 |
-
}
|
1935 |
-
|
1936 |
-
protected static $lib_index = array("list", "value");
|
1937 |
-
protected function lib_index($args) {
|
1938 |
-
list($list, $value) = $args;
|
1939 |
-
$list = $this->assertList($list);
|
1940 |
-
|
1941 |
-
$values = array();
|
1942 |
-
foreach ($list[2] as $item) {
|
1943 |
-
$values[] = $this->normalizeValue($item);
|
1944 |
-
}
|
1945 |
-
$key = array_search($this->normalizeValue($value), $values);
|
1946 |
-
|
1947 |
-
return false === $key ? false : $key + 1;
|
1948 |
-
}
|
1949 |
-
|
1950 |
-
protected static $lib_rgb = array("red", "green", "blue");
|
1951 |
-
protected function lib_rgb($args) {
|
1952 |
-
list($r,$g,$b) = $args;
|
1953 |
-
return array("color", $r[1], $g[1], $b[1]);
|
1954 |
-
}
|
1955 |
-
|
1956 |
-
protected static $lib_rgba = array(
|
1957 |
-
array("red", "color"),
|
1958 |
-
"green", "blue", "alpha");
|
1959 |
-
protected function lib_rgba($args) {
|
1960 |
-
if ($color = $this->coerceColor($args[0])) {
|
1961 |
-
$num = !isset($args[1]) ? $args[3] : $args[1];
|
1962 |
-
$alpha = $this->assertNumber($num);
|
1963 |
-
$color[4] = $alpha;
|
1964 |
-
return $color;
|
1965 |
-
}
|
1966 |
-
|
1967 |
-
list($r,$g,$b, $a) = $args;
|
1968 |
-
return array("color", $r[1], $g[1], $b[1], $a[1]);
|
1969 |
-
}
|
1970 |
-
|
1971 |
-
// helper function for adjust_color, change_color, and scale_color
|
1972 |
-
protected function alter_color($args, $fn) {
|
1973 |
-
$color = $this->assertColor($args[0]);
|
1974 |
-
|
1975 |
-
foreach (array(1,2,3,7) as $i) {
|
1976 |
-
if (isset($args[$i])) {
|
1977 |
-
$val = $this->assertNumber($args[$i]);
|
1978 |
-
$ii = $i == 7 ? 4 : $i; // alpha
|
1979 |
-
$color[$ii] =
|
1980 |
-
$this->$fn(isset($color[$ii]) ? $color[$ii] : 0, $val, $i);
|
1981 |
-
}
|
1982 |
-
}
|
1983 |
-
|
1984 |
-
if (isset($args[4]) || isset($args[5]) || isset($args[6])) {
|
1985 |
-
$hsl = $this->toHSL($color[1], $color[2], $color[3]);
|
1986 |
-
foreach (array(4,5,6) as $i) {
|
1987 |
-
if (isset($args[$i])) {
|
1988 |
-
$val = $this->assertNumber($args[$i]);
|
1989 |
-
$hsl[$i - 3] = $this->$fn($hsl[$i - 3], $val, $i);
|
1990 |
-
}
|
1991 |
-
}
|
1992 |
-
|
1993 |
-
$rgb = $this->toRGB($hsl[1], $hsl[2], $hsl[3]);
|
1994 |
-
if (isset($color[4])) $rgb[4] = $color[4];
|
1995 |
-
$color = $rgb;
|
1996 |
-
}
|
1997 |
-
|
1998 |
-
return $color;
|
1999 |
-
}
|
2000 |
-
|
2001 |
-
protected static $lib_adjust_color = array(
|
2002 |
-
"color", "red", "green", "blue",
|
2003 |
-
"hue", "saturation", "lightness", "alpha"
|
2004 |
-
);
|
2005 |
-
protected function adjust_color_helper($base, $alter, $i) {
|
2006 |
-
return $base += $alter;
|
2007 |
-
}
|
2008 |
-
protected function lib_adjust_color($args) {
|
2009 |
-
return $this->alter_color($args, "adjust_color_helper");
|
2010 |
-
}
|
2011 |
-
|
2012 |
-
protected static $lib_change_color = array(
|
2013 |
-
"color", "red", "green", "blue",
|
2014 |
-
"hue", "saturation", "lightness", "alpha"
|
2015 |
-
);
|
2016 |
-
protected function change_color_helper($base, $alter, $i) {
|
2017 |
-
return $alter;
|
2018 |
-
}
|
2019 |
-
protected function lib_change_color($args) {
|
2020 |
-
return $this->alter_color($args, "change_color_helper");
|
2021 |
-
}
|
2022 |
-
|
2023 |
-
protected static $lib_scale_color = array(
|
2024 |
-
"color", "red", "green", "blue",
|
2025 |
-
"hue", "saturation", "lightness", "alpha"
|
2026 |
-
);
|
2027 |
-
protected function scale_color_helper($base, $scale, $i) {
|
2028 |
-
// 1,2,3 - rgb
|
2029 |
-
// 4, 5, 6 - hsl
|
2030 |
-
// 7 - a
|
2031 |
-
switch ($i) {
|
2032 |
-
case 1:
|
2033 |
-
case 2:
|
2034 |
-
case 3:
|
2035 |
-
$max = 255; break;
|
2036 |
-
case 4:
|
2037 |
-
$max = 360; break;
|
2038 |
-
case 7:
|
2039 |
-
$max = 1; break;
|
2040 |
-
default:
|
2041 |
-
$max = 100;
|
2042 |
-
}
|
2043 |
-
|
2044 |
-
$scale = $scale / 100;
|
2045 |
-
if ($scale < 0) {
|
2046 |
-
return $base * $scale + $base;
|
2047 |
-
} else {
|
2048 |
-
return ($max - $base) * $scale + $base;
|
2049 |
-
}
|
2050 |
-
}
|
2051 |
-
protected function lib_scale_color($args) {
|
2052 |
-
return $this->alter_color($args, "scale_color_helper");
|
2053 |
-
}
|
2054 |
-
|
2055 |
-
protected static $lib_ie_hex_str = array("color");
|
2056 |
-
protected function lib_ie_hex_str($args) {
|
2057 |
-
$color = $this->coerceColor($args[0]);
|
2058 |
-
$color[4] = isset($color[4]) ? round(255*$color[4]) : 255;
|
2059 |
-
|
2060 |
-
return sprintf('#%02X%02X%02X%02X', $color[4], $color[1], $color[2], $color[3]);
|
2061 |
-
}
|
2062 |
-
|
2063 |
-
protected static $lib_red = array("color");
|
2064 |
-
protected function lib_red($args) {
|
2065 |
-
$color = $this->coerceColor($args[0]);
|
2066 |
-
return $color[1];
|
2067 |
-
}
|
2068 |
-
|
2069 |
-
protected static $lib_green = array("color");
|
2070 |
-
protected function lib_green($args) {
|
2071 |
-
$color = $this->coerceColor($args[0]);
|
2072 |
-
return $color[2];
|
2073 |
-
}
|
2074 |
-
|
2075 |
-
protected static $lib_blue = array("color");
|
2076 |
-
protected function lib_blue($args) {
|
2077 |
-
$color = $this->coerceColor($args[0]);
|
2078 |
-
return $color[3];
|
2079 |
-
}
|
2080 |
-
|
2081 |
-
protected static $lib_alpha = array("color");
|
2082 |
-
protected function lib_alpha($args) {
|
2083 |
-
if ($color = $this->coerceColor($args[0])) {
|
2084 |
-
return isset($color[4]) ? $color[4] : 1;
|
2085 |
-
}
|
2086 |
-
|
2087 |
-
// this might be the IE function, so return value unchanged
|
2088 |
-
return null;
|
2089 |
-
}
|
2090 |
-
|
2091 |
-
protected static $lib_opacity = array("color");
|
2092 |
-
protected function lib_opacity($args) {
|
2093 |
-
$value = $args[0];
|
2094 |
-
if ($value[0] === 'number') return null;
|
2095 |
-
return $this->lib_alpha($args);
|
2096 |
-
}
|
2097 |
-
|
2098 |
-
// mix two colors
|
2099 |
-
protected static $lib_mix = array("color-1", "color-2", "weight");
|
2100 |
-
protected function lib_mix($args) {
|
2101 |
-
list($first, $second, $weight) = $args;
|
2102 |
-
$first = $this->assertColor($first);
|
2103 |
-
$second = $this->assertColor($second);
|
2104 |
-
|
2105 |
-
if (!isset($weight)) {
|
2106 |
-
$weight = 0.5;
|
2107 |
-
} else {
|
2108 |
-
$weight = $this->coercePercent($weight);
|
2109 |
-
}
|
2110 |
-
|
2111 |
-
$firstAlpha = isset($first[4]) ? $first[4] : 1;
|
2112 |
-
$secondAlpha = isset($second[4]) ? $second[4] : 1;
|
2113 |
-
|
2114 |
-
$w = $weight * 2 - 1;
|
2115 |
-
$a = $firstAlpha - $secondAlpha;
|
2116 |
-
|
2117 |
-
$w1 = (($w * $a == -1 ? $w : ($w + $a)/(1 + $w * $a)) + 1) / 2.0;
|
2118 |
-
$w2 = 1.0 - $w1;
|
2119 |
-
|
2120 |
-
$new = array('color',
|
2121 |
-
$w1 * $first[1] + $w2 * $second[1],
|
2122 |
-
$w1 * $first[2] + $w2 * $second[2],
|
2123 |
-
$w1 * $first[3] + $w2 * $second[3],
|
2124 |
-
);
|
2125 |
-
|
2126 |
-
if ($firstAlpha != 1.0 || $secondAlpha != 1.0) {
|
2127 |
-
$new[] = $firstAlpha * $weight + $secondAlpha * ($weight - 1);
|
2128 |
-
}
|
2129 |
-
|
2130 |
-
return $this->fixColor($new);
|
2131 |
-
}
|
2132 |
-
|
2133 |
-
protected static $lib_hsl = array("hue", "saturation", "lightness");
|
2134 |
-
protected function lib_hsl($args) {
|
2135 |
-
list($h, $s, $l) = $args;
|
2136 |
-
return $this->toRGB($h[1], $s[1], $l[1]);
|
2137 |
-
}
|
2138 |
-
|
2139 |
-
protected static $lib_hsla = array("hue", "saturation",
|
2140 |
-
"lightness", "alpha");
|
2141 |
-
protected function lib_hsla($args) {
|
2142 |
-
list($h, $s, $l, $a) = $args;
|
2143 |
-
$color = $this->toRGB($h[1], $s[1], $l[1]);
|
2144 |
-
$color[4] = $a[1];
|
2145 |
-
return $color;
|
2146 |
-
}
|
2147 |
-
|
2148 |
-
protected static $lib_hue = array("color");
|
2149 |
-
protected function lib_hue($args) {
|
2150 |
-
$color = $this->assertColor($args[0]);
|
2151 |
-
$hsl = $this->toHSL($color[1], $color[2], $color[3]);
|
2152 |
-
return array("number", $hsl[1], "deg");
|
2153 |
-
}
|
2154 |
-
|
2155 |
-
protected static $lib_saturation = array("color");
|
2156 |
-
protected function lib_saturation($args) {
|
2157 |
-
$color = $this->assertColor($args[0]);
|
2158 |
-
$hsl = $this->toHSL($color[1], $color[2], $color[3]);
|
2159 |
-
return array("number", $hsl[2], "%");
|
2160 |
-
}
|
2161 |
-
|
2162 |
-
protected static $lib_lightness = array("color");
|
2163 |
-
protected function lib_lightness($args) {
|
2164 |
-
$color = $this->assertColor($args[0]);
|
2165 |
-
$hsl = $this->toHSL($color[1], $color[2], $color[3]);
|
2166 |
-
return array("number", $hsl[3], "%");
|
2167 |
-
}
|
2168 |
-
|
2169 |
-
protected function adjustHsl($color, $idx, $amount) {
|
2170 |
-
$hsl = $this->toHSL($color[1], $color[2], $color[3]);
|
2171 |
-
$hsl[$idx] += $amount;
|
2172 |
-
$out = $this->toRGB($hsl[1], $hsl[2], $hsl[3]);
|
2173 |
-
if (isset($color[4])) $out[4] = $color[4];
|
2174 |
-
return $out;
|
2175 |
-
}
|
2176 |
-
|
2177 |
-
protected static $lib_adjust_hue = array("color", "degrees");
|
2178 |
-
protected function lib_adjust_hue($args) {
|
2179 |
-
$color = $this->assertColor($args[0]);
|
2180 |
-
$degrees = $this->assertNumber($args[1]);
|
2181 |
-
return $this->adjustHsl($color, 1, $degrees);
|
2182 |
-
}
|
2183 |
-
|
2184 |
-
protected static $lib_lighten = array("color", "amount");
|
2185 |
-
protected function lib_lighten($args) {
|
2186 |
-
$color = $this->assertColor($args[0]);
|
2187 |
-
$amount = 100*$this->coercePercent($args[1]);
|
2188 |
-
return $this->adjustHsl($color, 3, $amount);
|
2189 |
-
}
|
2190 |
-
|
2191 |
-
protected static $lib_darken = array("color", "amount");
|
2192 |
-
protected function lib_darken($args) {
|
2193 |
-
$color = $this->assertColor($args[0]);
|
2194 |
-
$amount = 100*$this->coercePercent($args[1]);
|
2195 |
-
return $this->adjustHsl($color, 3, -$amount);
|
2196 |
-
}
|
2197 |
-
|
2198 |
-
protected static $lib_saturate = array("color", "amount");
|
2199 |
-
protected function lib_saturate($args) {
|
2200 |
-
$value = $args[0];
|
2201 |
-
if ($value[0] === 'number') return null;
|
2202 |
-
$color = $this->assertColor($value);
|
2203 |
-
$amount = 100*$this->coercePercent($args[1]);
|
2204 |
-
return $this->adjustHsl($color, 2, $amount);
|
2205 |
-
}
|
2206 |
-
|
2207 |
-
protected static $lib_desaturate = array("color", "amount");
|
2208 |
-
protected function lib_desaturate($args) {
|
2209 |
-
$color = $this->assertColor($args[0]);
|
2210 |
-
$amount = 100*$this->coercePercent($args[1]);
|
2211 |
-
return $this->adjustHsl($color, 2, -$amount);
|
2212 |
-
}
|
2213 |
-
|
2214 |
-
protected static $lib_grayscale = array("color");
|
2215 |
-
protected function lib_grayscale($args) {
|
2216 |
-
$value = $args[0];
|
2217 |
-
if ($value[0] === 'number') return null;
|
2218 |
-
return $this->adjustHsl($this->assertColor($value), 2, -100);
|
2219 |
-
}
|
2220 |
-
|
2221 |
-
protected static $lib_complement = array("color");
|
2222 |
-
protected function lib_complement($args) {
|
2223 |
-
return $this->adjustHsl($this->assertColor($args[0]), 1, 180);
|
2224 |
-
}
|
2225 |
-
|
2226 |
-
protected static $lib_invert = array("color");
|
2227 |
-
protected function lib_invert($args) {
|
2228 |
-
$value = $args[0];
|
2229 |
-
if ($value[0] === 'number') return null;
|
2230 |
-
$color = $this->assertColor($value);
|
2231 |
-
$color[1] = 255 - $color[1];
|
2232 |
-
$color[2] = 255 - $color[2];
|
2233 |
-
$color[3] = 255 - $color[3];
|
2234 |
-
return $color;
|
2235 |
-
}
|
2236 |
-
|
2237 |
-
// increases opacity by amount
|
2238 |
-
protected static $lib_opacify = array("color", "amount");
|
2239 |
-
protected function lib_opacify($args) {
|
2240 |
-
$color = $this->assertColor($args[0]);
|
2241 |
-
$amount = $this->coercePercent($args[1]);
|
2242 |
-
|
2243 |
-
$color[4] = (isset($color[4]) ? $color[4] : 1) + $amount;
|
2244 |
-
$color[4] = min(1, max(0, $color[4]));
|
2245 |
-
return $color;
|
2246 |
-
}
|
2247 |
-
|
2248 |
-
protected static $lib_fade_in = array("color", "amount");
|
2249 |
-
protected function lib_fade_in($args) {
|
2250 |
-
return $this->lib_opacify($args);
|
2251 |
-
}
|
2252 |
-
|
2253 |
-
// decreases opacity by amount
|
2254 |
-
protected static $lib_transparentize = array("color", "amount");
|
2255 |
-
protected function lib_transparentize($args) {
|
2256 |
-
$color = $this->assertColor($args[0]);
|
2257 |
-
$amount = $this->coercePercent($args[1]);
|
2258 |
-
|
2259 |
-
$color[4] = (isset($color[4]) ? $color[4] : 1) - $amount;
|
2260 |
-
$color[4] = min(1, max(0, $color[4]));
|
2261 |
-
return $color;
|
2262 |
-
}
|
2263 |
-
|
2264 |
-
protected static $lib_fade_out = array("color", "amount");
|
2265 |
-
protected function lib_fade_out($args) {
|
2266 |
-
return $this->lib_transparentize($args);
|
2267 |
-
}
|
2268 |
-
|
2269 |
-
protected static $lib_unquote = array("string");
|
2270 |
-
protected function lib_unquote($args) {
|
2271 |
-
$str = $args[0];
|
2272 |
-
if ($str[0] == "string") $str[1] = "";
|
2273 |
-
return $str;
|
2274 |
-
}
|
2275 |
-
|
2276 |
-
protected static $lib_quote = array("string");
|
2277 |
-
protected function lib_quote($args) {
|
2278 |
-
$value = $args[0];
|
2279 |
-
if ($value[0] == "string" && !empty($value[1]))
|
2280 |
-
return $value;
|
2281 |
-
return array("string", '"', array($value));
|
2282 |
-
}
|
2283 |
-
|
2284 |
-
protected static $lib_percentage = array("value");
|
2285 |
-
protected function lib_percentage($args) {
|
2286 |
-
return array("number",
|
2287 |
-
$this->coercePercent($args[0]) * 100,
|
2288 |
-
"%");
|
2289 |
-
}
|
2290 |
-
|
2291 |
-
protected static $lib_round = array("value");
|
2292 |
-
protected function lib_round($args) {
|
2293 |
-
$num = $args[0];
|
2294 |
-
$num[1] = round($num[1]);
|
2295 |
-
return $num;
|
2296 |
-
}
|
2297 |
-
|
2298 |
-
protected static $lib_floor = array("value");
|
2299 |
-
protected function lib_floor($args) {
|
2300 |
-
$num = $args[0];
|
2301 |
-
$num[1] = floor($num[1]);
|
2302 |
-
return $num;
|
2303 |
-
}
|
2304 |
-
|
2305 |
-
protected static $lib_ceil = array("value");
|
2306 |
-
protected function lib_ceil($args) {
|
2307 |
-
$num = $args[0];
|
2308 |
-
$num[1] = ceil($num[1]);
|
2309 |
-
return $num;
|
2310 |
-
}
|
2311 |
-
|
2312 |
-
protected static $lib_abs = array("value");
|
2313 |
-
protected function lib_abs($args) {
|
2314 |
-
$num = $args[0];
|
2315 |
-
$num[1] = abs($num[1]);
|
2316 |
-
return $num;
|
2317 |
-
}
|
2318 |
-
|
2319 |
-
protected function lib_min($args) {
|
2320 |
-
$numbers = $this->getNormalizedNumbers($args);
|
2321 |
-
$min = null;
|
2322 |
-
foreach ($numbers as $key => $number) {
|
2323 |
-
if (null === $min || $number[1] <= $min[1]) {
|
2324 |
-
$min = array($key, $number[1]);
|
2325 |
-
}
|
2326 |
-
}
|
2327 |
-
|
2328 |
-
return $args[$min[0]];
|
2329 |
-
}
|
2330 |
-
|
2331 |
-
protected function lib_max($args) {
|
2332 |
-
$numbers = $this->getNormalizedNumbers($args);
|
2333 |
-
$max = null;
|
2334 |
-
foreach ($numbers as $key => $number) {
|
2335 |
-
if (null === $max || $number[1] >= $max[1]) {
|
2336 |
-
$max = array($key, $number[1]);
|
2337 |
-
}
|
2338 |
-
}
|
2339 |
-
|
2340 |
-
return $args[$max[0]];
|
2341 |
-
}
|
2342 |
-
|
2343 |
-
protected function getNormalizedNumbers($args) {
|
2344 |
-
$unit = null;
|
2345 |
-
$originalUnit = null;
|
2346 |
-
$numbers = array();
|
2347 |
-
foreach ($args as $key => $item) {
|
2348 |
-
if ('number' != $item[0]) {
|
2349 |
-
$this->throwError("%s is not a number", $item[0]);
|
2350 |
-
}
|
2351 |
-
$number = $this->normalizeNumber($item);
|
2352 |
-
|
2353 |
-
if (null === $unit) {
|
2354 |
-
$unit = $number[2];
|
2355 |
-
$originalUnit = $item[2];
|
2356 |
-
} elseif ($unit !== $number[2]) {
|
2357 |
-
$this->throwError('Incompatible units: "%s" and "%s".', $originalUnit, $item[2]);
|
2358 |
-
}
|
2359 |
-
|
2360 |
-
$numbers[$key] = $number;
|
2361 |
-
}
|
2362 |
-
|
2363 |
-
return $numbers;
|
2364 |
-
}
|
2365 |
-
|
2366 |
-
protected static $lib_length = array("list");
|
2367 |
-
protected function lib_length($args) {
|
2368 |
-
$list = $this->coerceList($args[0]);
|
2369 |
-
return count($list[2]);
|
2370 |
-
}
|
2371 |
-
|
2372 |
-
protected static $lib_nth = array("list", "n");
|
2373 |
-
protected function lib_nth($args) {
|
2374 |
-
$list = $this->coerceList($args[0]);
|
2375 |
-
$n = $this->assertNumber($args[1]) - 1;
|
2376 |
-
return isset($list[2][$n]) ? $list[2][$n] : self::$defaultValue;
|
2377 |
-
}
|
2378 |
-
|
2379 |
-
protected function listSeparatorForJoin($list1, $sep) {
|
2380 |
-
if (!isset($sep)) return $list1[1];
|
2381 |
-
switch ($this->compileValue($sep)) {
|
2382 |
-
case "comma":
|
2383 |
-
return ",";
|
2384 |
-
case "space":
|
2385 |
-
return "";
|
2386 |
-
default:
|
2387 |
-
return $list1[1];
|
2388 |
-
}
|
2389 |
-
}
|
2390 |
-
|
2391 |
-
protected static $lib_join = array("list1", "list2", "separator");
|
2392 |
-
protected function lib_join($args) {
|
2393 |
-
list($list1, $list2, $sep) = $args;
|
2394 |
-
$list1 = $this->coerceList($list1, " ");
|
2395 |
-
$list2 = $this->coerceList($list2, " ");
|
2396 |
-
$sep = $this->listSeparatorForJoin($list1, $sep);
|
2397 |
-
return array("list", $sep, array_merge($list1[2], $list2[2]));
|
2398 |
-
}
|
2399 |
-
|
2400 |
-
protected static $lib_append = array("list", "val", "separator");
|
2401 |
-
protected function lib_append($args) {
|
2402 |
-
list($list1, $value, $sep) = $args;
|
2403 |
-
$list1 = $this->coerceList($list1, " ");
|
2404 |
-
$sep = $this->listSeparatorForJoin($list1, $sep);
|
2405 |
-
return array("list", $sep, array_merge($list1[2], array($value)));
|
2406 |
-
}
|
2407 |
-
|
2408 |
-
protected function lib_zip($args) {
|
2409 |
-
foreach ($args as $arg) {
|
2410 |
-
$this->assertList($arg);
|
2411 |
-
}
|
2412 |
-
|
2413 |
-
$lists = array();
|
2414 |
-
$firstList = array_shift($args);
|
2415 |
-
foreach ($firstList[2] as $key => $item) {
|
2416 |
-
$list = array("list", "", array($item));
|
2417 |
-
foreach ($args as $arg) {
|
2418 |
-
if (isset($arg[2][$key])) {
|
2419 |
-
$list[2][] = $arg[2][$key];
|
2420 |
-
} else {
|
2421 |
-
break 2;
|
2422 |
-
}
|
2423 |
-
}
|
2424 |
-
$lists[] = $list;
|
2425 |
-
}
|
2426 |
-
|
2427 |
-
return array("list", ",", $lists);
|
2428 |
-
}
|
2429 |
-
|
2430 |
-
protected static $lib_type_of = array("value");
|
2431 |
-
protected function lib_type_of($args) {
|
2432 |
-
$value = $args[0];
|
2433 |
-
switch ($value[0]) {
|
2434 |
-
case "keyword":
|
2435 |
-
if ($value == self::$true || $value == self::$false) {
|
2436 |
-
return "bool";
|
2437 |
-
}
|
2438 |
-
|
2439 |
-
if ($this->coerceColor($value)) {
|
2440 |
-
return "color";
|
2441 |
-
}
|
2442 |
-
|
2443 |
-
return "string";
|
2444 |
-
default:
|
2445 |
-
return $value[0];
|
2446 |
-
}
|
2447 |
-
}
|
2448 |
-
|
2449 |
-
protected static $lib_unit = array("number");
|
2450 |
-
protected function lib_unit($args) {
|
2451 |
-
$num = $args[0];
|
2452 |
-
if ($num[0] == "number") {
|
2453 |
-
return array("string", '"', array($num[2]));
|
2454 |
-
}
|
2455 |
-
return "";
|
2456 |
-
}
|
2457 |
-
|
2458 |
-
protected static $lib_unitless = array("number");
|
2459 |
-
protected function lib_unitless($args) {
|
2460 |
-
$value = $args[0];
|
2461 |
-
return $value[0] == "number" && empty($value[2]);
|
2462 |
-
}
|
2463 |
-
|
2464 |
-
protected static $lib_comparable = array("number-1", "number-2");
|
2465 |
-
protected function lib_comparable($args) {
|
2466 |
-
list($number1, $number2) = $args;
|
2467 |
-
if (!isset($number1[0]) || $number1[0] != "number" || !isset($number2[0]) || $number2[0] != "number") {
|
2468 |
-
$this->throwError('Invalid argument(s) for "comparable"');
|
2469 |
-
}
|
2470 |
-
|
2471 |
-
$number1 = $this->normalizeNumber($number1);
|
2472 |
-
$number2 = $this->normalizeNumber($number2);
|
2473 |
-
|
2474 |
-
return $number1[2] == $number2[2] || $number1[2] == "" || $number2[2] == "";
|
2475 |
-
}
|
2476 |
-
|
2477 |
-
/**
|
2478 |
-
* Workaround IE7's content counter bug.
|
2479 |
-
*
|
2480 |
-
* @param array $args
|
2481 |
-
*/
|
2482 |
-
protected function lib_counter($args) {
|
2483 |
-
$list = array_map(array($this, 'compileValue'), $args);
|
2484 |
-
return array('string', '', array('counter(' . implode(',', $list) . ')'));
|
2485 |
-
}
|
2486 |
-
|
2487 |
-
public function throwError($msg = null) {
|
2488 |
-
if (func_num_args() > 1) {
|
2489 |
-
$msg = call_user_func_array("sprintf", func_get_args());
|
2490 |
-
}
|
2491 |
-
|
2492 |
-
if ($this->sourcePos >= 0 && isset($this->sourceParser)) {
|
2493 |
-
$this->sourceParser->throwParseError($msg, $this->sourcePos);
|
2494 |
-
}
|
2495 |
-
|
2496 |
-
throw new Exception($msg);
|
2497 |
-
}
|
2498 |
-
|
2499 |
-
/**
|
2500 |
-
* CSS Colors
|
2501 |
-
*
|
2502 |
-
* @see http://www.w3.org/TR/css3-color
|
2503 |
-
*/
|
2504 |
-
static protected $cssColors = array(
|
2505 |
-
'aliceblue' => '240,248,255',
|
2506 |
-
'antiquewhite' => '250,235,215',
|
2507 |
-
'aqua' => '0,255,255',
|
2508 |
-
'aquamarine' => '127,255,212',
|
2509 |
-
'azure' => '240,255,255',
|
2510 |
-
'beige' => '245,245,220',
|
2511 |
-
'bisque' => '255,228,196',
|
2512 |
-
'black' => '0,0,0',
|
2513 |
-
'blanchedalmond' => '255,235,205',
|
2514 |
-
'blue' => '0,0,255',
|
2515 |
-
'blueviolet' => '138,43,226',
|
2516 |
-
'brown' => '165,42,42',
|
2517 |
-
'burlywood' => '222,184,135',
|
2518 |
-
'cadetblue' => '95,158,160',
|
2519 |
-
'chartreuse' => '127,255,0',
|
2520 |
-
'chocolate' => '210,105,30',
|
2521 |
-
'coral' => '255,127,80',
|
2522 |
-
'cornflowerblue' => '100,149,237',
|
2523 |
-
'cornsilk' => '255,248,220',
|
2524 |
-
'crimson' => '220,20,60',
|
2525 |
-
'cyan' => '0,255,255',
|
2526 |
-
'darkblue' => '0,0,139',
|
2527 |
-
'darkcyan' => '0,139,139',
|
2528 |
-
'darkgoldenrod' => '184,134,11',
|
2529 |
-
'darkgray' => '169,169,169',
|
2530 |
-
'darkgreen' => '0,100,0',
|
2531 |
-
'darkgrey' => '169,169,169',
|
2532 |
-
'darkkhaki' => '189,183,107',
|
2533 |
-
'darkmagenta' => '139,0,139',
|
2534 |
-
'darkolivegreen' => '85,107,47',
|
2535 |
-
'darkorange' => '255,140,0',
|
2536 |
-
'darkorchid' => '153,50,204',
|
2537 |
-
'darkred' => '139,0,0',
|
2538 |
-
'darksalmon' => '233,150,122',
|
2539 |
-
'darkseagreen' => '143,188,143',
|
2540 |
-
'darkslateblue' => '72,61,139',
|
2541 |
-
'darkslategray' => '47,79,79',
|
2542 |
-
'darkslategrey' => '47,79,79',
|
2543 |
-
'darkturquoise' => '0,206,209',
|
2544 |
-
'darkviolet' => '148,0,211',
|
2545 |
-
'deeppink' => '255,20,147',
|
2546 |
-
'deepskyblue' => '0,191,255',
|
2547 |
-
'dimgray' => '105,105,105',
|
2548 |
-
'dimgrey' => '105,105,105',
|
2549 |
-
'dodgerblue' => '30,144,255',
|
2550 |
-
'firebrick' => '178,34,34',
|
2551 |
-
'floralwhite' => '255,250,240',
|
2552 |
-
'forestgreen' => '34,139,34',
|
2553 |
-
'fuchsia' => '255,0,255',
|
2554 |
-
'gainsboro' => '220,220,220',
|
2555 |
-
'ghostwhite' => '248,248,255',
|
2556 |
-
'gold' => '255,215,0',
|
2557 |
-
'goldenrod' => '218,165,32',
|
2558 |
-
'gray' => '128,128,128',
|
2559 |
-
'green' => '0,128,0',
|
2560 |
-
'greenyellow' => '173,255,47',
|
2561 |
-
'grey' => '128,128,128',
|
2562 |
-
'honeydew' => '240,255,240',
|
2563 |
-
'hotpink' => '255,105,180',
|
2564 |
-
'indianred' => '205,92,92',
|
2565 |
-
'indigo' => '75,0,130',
|
2566 |
-
'ivory' => '255,255,240',
|
2567 |
-
'khaki' => '240,230,140',
|
2568 |
-
'lavender' => '230,230,250',
|
2569 |
-
'lavenderblush' => '255,240,245',
|
2570 |
-
'lawngreen' => '124,252,0',
|
2571 |
-
'lemonchiffon' => '255,250,205',
|
2572 |
-
'lightblue' => '173,216,230',
|
2573 |
-
'lightcoral' => '240,128,128',
|
2574 |
-
'lightcyan' => '224,255,255',
|
2575 |
-
'lightgoldenrodyellow' => '250,250,210',
|
2576 |
-
'lightgray' => '211,211,211',
|
2577 |
-
'lightgreen' => '144,238,144',
|
2578 |
-
'lightgrey' => '211,211,211',
|
2579 |
-
'lightpink' => '255,182,193',
|
2580 |
-
'lightsalmon' => '255,160,122',
|
2581 |
-
'lightseagreen' => '32,178,170',
|
2582 |
-
'lightskyblue' => '135,206,250',
|
2583 |
-
'lightslategray' => '119,136,153',
|
2584 |
-
'lightslategrey' => '119,136,153',
|
2585 |
-
'lightsteelblue' => '176,196,222',
|
2586 |
-
'lightyellow' => '255,255,224',
|
2587 |
-
'lime' => '0,255,0',
|
2588 |
-
'limegreen' => '50,205,50',
|
2589 |
-
'linen' => '250,240,230',
|
2590 |
-
'magenta' => '255,0,255',
|
2591 |
-
'maroon' => '128,0,0',
|
2592 |
-
'mediumaquamarine' => '102,205,170',
|
2593 |
-
'mediumblue' => '0,0,205',
|
2594 |
-
'mediumorchid' => '186,85,211',
|
2595 |
-
'mediumpurple' => '147,112,219',
|
2596 |
-
'mediumseagreen' => '60,179,113',
|
2597 |
-
'mediumslateblue' => '123,104,238',
|
2598 |
-
'mediumspringgreen' => '0,250,154',
|
2599 |
-
'mediumturquoise' => '72,209,204',
|
2600 |
-
'mediumvioletred' => '199,21,133',
|
2601 |
-
'midnightblue' => '25,25,112',
|
2602 |
-
'mintcream' => '245,255,250',
|
2603 |
-
'mistyrose' => '255,228,225',
|
2604 |
-
'moccasin' => '255,228,181',
|
2605 |
-
'navajowhite' => '255,222,173',
|
2606 |
-
'navy' => '0,0,128',
|
2607 |
-
'oldlace' => '253,245,230',
|
2608 |
-
'olive' => '128,128,0',
|
2609 |
-
'olivedrab' => '107,142,35',
|
2610 |
-
'orange' => '255,165,0',
|
2611 |
-
'orangered' => '255,69,0',
|
2612 |
-
'orchid' => '218,112,214',
|
2613 |
-
'palegoldenrod' => '238,232,170',
|
2614 |
-
'palegreen' => '152,251,152',
|
2615 |
-
'paleturquoise' => '175,238,238',
|
2616 |
-
'palevioletred' => '219,112,147',
|
2617 |
-
'papayawhip' => '255,239,213',
|
2618 |
-
'peachpuff' => '255,218,185',
|
2619 |
-
'peru' => '205,133,63',
|
2620 |
-
'pink' => '255,192,203',
|
2621 |
-
'plum' => '221,160,221',
|
2622 |
-
'powderblue' => '176,224,230',
|
2623 |
-
'purple' => '128,0,128',
|
2624 |
-
'red' => '255,0,0',
|
2625 |
-
'rosybrown' => '188,143,143',
|
2626 |
-
'royalblue' => '65,105,225',
|
2627 |
-
'saddlebrown' => '139,69,19',
|
2628 |
-
'salmon' => '250,128,114',
|
2629 |
-
'sandybrown' => '244,164,96',
|
2630 |
-
'seagreen' => '46,139,87',
|
2631 |
-
'seashell' => '255,245,238',
|
2632 |
-
'sienna' => '160,82,45',
|
2633 |
-
'silver' => '192,192,192',
|
2634 |
-
'skyblue' => '135,206,235',
|
2635 |
-
'slateblue' => '106,90,205',
|
2636 |
-
'slategray' => '112,128,144',
|
2637 |
-
'slategrey' => '112,128,144',
|
2638 |
-
'snow' => '255,250,250',
|
2639 |
-
'springgreen' => '0,255,127',
|
2640 |
-
'steelblue' => '70,130,180',
|
2641 |
-
'tan' => '210,180,140',
|
2642 |
-
'teal' => '0,128,128',
|
2643 |
-
'thistle' => '216,191,216',
|
2644 |
-
'tomato' => '255,99,71',
|
2645 |
-
'transparent' => '0,0,0,0',
|
2646 |
-
'turquoise' => '64,224,208',
|
2647 |
-
'violet' => '238,130,238',
|
2648 |
-
'wheat' => '245,222,179',
|
2649 |
-
'white' => '255,255,255',
|
2650 |
-
'whitesmoke' => '245,245,245',
|
2651 |
-
'yellow' => '255,255,0',
|
2652 |
-
'yellowgreen' => '154,205,50'
|
2653 |
-
);
|
2654 |
-
}
|
2655 |
-
|
2656 |
-
/**
|
2657 |
-
* SCSS parser
|
2658 |
-
*
|
2659 |
-
* @author Leaf Corcoran <leafot@gmail.com>
|
2660 |
-
*/
|
2661 |
-
class scss_parser {
|
2662 |
-
static protected $precedence = array(
|
2663 |
-
"or" => 0,
|
2664 |
-
"and" => 1,
|
2665 |
-
|
2666 |
-
'==' => 2,
|
2667 |
-
'!=' => 2,
|
2668 |
-
'<=' => 2,
|
2669 |
-
'>=' => 2,
|
2670 |
-
'=' => 2,
|
2671 |
-
'<' => 3,
|
2672 |
-
'>' => 2,
|
2673 |
-
|
2674 |
-
'+' => 3,
|
2675 |
-
'-' => 3,
|
2676 |
-
'*' => 4,
|
2677 |
-
'/' => 4,
|
2678 |
-
'%' => 4,
|
2679 |
-
);
|
2680 |
-
|
2681 |
-
static protected $operators = array("+", "-", "*", "/", "%",
|
2682 |
-
"==", "!=", "<=", ">=", "<", ">", "and", "or");
|
2683 |
-
|
2684 |
-
static protected $operatorStr;
|
2685 |
-
static protected $whitePattern;
|
2686 |
-
static protected $commentMulti;
|
2687 |
-
|
2688 |
-
static protected $commentSingle = "//";
|
2689 |
-
static protected $commentMultiLeft = "/*";
|
2690 |
-
static protected $commentMultiRight = "*/";
|
2691 |
-
|
2692 |
-
/**
|
2693 |
-
* Constructor
|
2694 |
-
*
|
2695 |
-
* @param string $sourceName
|
2696 |
-
* @param boolean $rootParser
|
2697 |
-
*/
|
2698 |
-
public function __construct($sourceName = null, $rootParser = true) {
|
2699 |
-
$this->sourceName = $sourceName;
|
2700 |
-
$this->rootParser = $rootParser;
|
2701 |
-
|
2702 |
-
if (empty(self::$operatorStr)) {
|
2703 |
-
self::$operatorStr = $this->makeOperatorStr(self::$operators);
|
2704 |
-
|
2705 |
-
$commentSingle = $this->preg_quote(self::$commentSingle);
|
2706 |
-
$commentMultiLeft = $this->preg_quote(self::$commentMultiLeft);
|
2707 |
-
$commentMultiRight = $this->preg_quote(self::$commentMultiRight);
|
2708 |
-
self::$commentMulti = $commentMultiLeft.'.*?'.$commentMultiRight;
|
2709 |
-
self::$whitePattern = '/'.$commentSingle.'[^\n]*\s*|('.self::$commentMulti.')\s*|\s+/Ais';
|
2710 |
-
}
|
2711 |
-
}
|
2712 |
-
|
2713 |
-
static protected function makeOperatorStr($operators) {
|
2714 |
-
return '('.implode('|', array_map(array('scss_parser','preg_quote'),
|
2715 |
-
$operators)).')';
|
2716 |
-
}
|
2717 |
-
|
2718 |
-
/**
|
2719 |
-
* Parser buffer
|
2720 |
-
*
|
2721 |
-
* @param string $buffer;
|
2722 |
-
*
|
2723 |
-
* @return \StdClass
|
2724 |
-
*/
|
2725 |
-
public function parse($buffer)
|
2726 |
-
{
|
2727 |
-
$this->count = 0;
|
2728 |
-
$this->env = null;
|
2729 |
-
$this->inParens = false;
|
2730 |
-
$this->eatWhiteDefault = true;
|
2731 |
-
$this->insertComments = true;
|
2732 |
-
$this->buffer = $buffer;
|
2733 |
-
|
2734 |
-
$this->pushBlock(null); // root block
|
2735 |
-
$this->whitespace();
|
2736 |
-
|
2737 |
-
while (false !== $this->parseChunk())
|
2738 |
-
;
|
2739 |
-
|
2740 |
-
if ($this->count != strlen($this->buffer)) {
|
2741 |
-
$this->throwParseError();
|
2742 |
-
}
|
2743 |
-
|
2744 |
-
if (!empty($this->env->parent)) {
|
2745 |
-
$this->throwParseError("unclosed block");
|
2746 |
-
}
|
2747 |
-
|
2748 |
-
$this->env->isRoot = true;
|
2749 |
-
|
2750 |
-
return $this->env;
|
2751 |
-
}
|
2752 |
-
|
2753 |
-
/**
|
2754 |
-
* Parse a single chunk off the head of the buffer and append it to the
|
2755 |
-
* current parse environment.
|
2756 |
-
*
|
2757 |
-
* Returns false when the buffer is empty, or when there is an error.
|
2758 |
-
*
|
2759 |
-
* This function is called repeatedly until the entire document is
|
2760 |
-
* parsed.
|
2761 |
-
*
|
2762 |
-
* This parser is most similar to a recursive descent parser. Single
|
2763 |
-
* functions represent discrete grammatical rules for the language, and
|
2764 |
-
* they are able to capture the text that represents those rules.
|
2765 |
-
*
|
2766 |
-
* Consider the function scssc::keyword(). (All parse functions are
|
2767 |
-
* structured the same.)
|
2768 |
-
*
|
2769 |
-
* The function takes a single reference argument. When calling the
|
2770 |
-
* function it will attempt to match a keyword on the head of the buffer.
|
2771 |
-
* If it is successful, it will place the keyword in the referenced
|
2772 |
-
* argument, advance the position in the buffer, and return true. If it
|
2773 |
-
* fails then it won't advance the buffer and it will return false.
|
2774 |
-
*
|
2775 |
-
* All of these parse functions are powered by scssc::match(), which behaves
|
2776 |
-
* the same way, but takes a literal regular expression. Sometimes it is
|
2777 |
-
* more convenient to use match instead of creating a new function.
|
2778 |
-
*
|
2779 |
-
* Because of the format of the functions, to parse an entire string of
|
2780 |
-
* grammatical rules, you can chain them together using &&.
|
2781 |
-
*
|
2782 |
-
* But, if some of the rules in the chain succeed before one fails, then
|
2783 |
-
* the buffer position will be left at an invalid state. In order to
|
2784 |
-
* avoid this, scssc::seek() is used to remember and set buffer positions.
|
2785 |
-
*
|
2786 |
-
* Before parsing a chain, use $s = $this->seek() to remember the current
|
2787 |
-
* position into $s. Then if a chain fails, use $this->seek($s) to
|
2788 |
-
* go back where we started.
|
2789 |
-
*
|
2790 |
-
* @return boolean
|
2791 |
-
*/
|
2792 |
-
protected function parseChunk() {
|
2793 |
-
$s = $this->seek();
|
2794 |
-
|
2795 |
-
// the directives
|
2796 |
-
if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] == "@") {
|
2797 |
-
if ($this->literal("@media") && $this->mediaQueryList($mediaQueryList) && $this->literal("{")) {
|
2798 |
-
$media = $this->pushSpecialBlock("media");
|
2799 |
-
$media->queryList = $mediaQueryList[2];
|
2800 |
-
return true;
|
2801 |
-
} else {
|
2802 |
-
$this->seek($s);
|
2803 |
-
}
|
2804 |
-
|
2805 |
-
if ($this->literal("@mixin") &&
|
2806 |
-
$this->keyword($mixinName) &&
|
2807 |
-
($this->argumentDef($args) || true) &&
|
2808 |
-
$this->literal("{"))
|
2809 |
-
{
|
2810 |
-
$mixin = $this->pushSpecialBlock("mixin");
|
2811 |
-
$mixin->name = $mixinName;
|
2812 |
-
$mixin->args = $args;
|
2813 |
-
return true;
|
2814 |
-
} else {
|
2815 |
-
$this->seek($s);
|
2816 |
-
}
|
2817 |
-
|
2818 |
-
if ($this->literal("@include") &&
|
2819 |
-
$this->keyword($mixinName) &&
|
2820 |
-
($this->literal("(") &&
|
2821 |
-
($this->argValues($argValues) || true) &&
|
2822 |
-
$this->literal(")") || true) &&
|
2823 |
-
($this->end() ||
|
2824 |
-
$this->literal("{") && $hasBlock = true))
|
2825 |
-
{
|
2826 |
-
$child = array("include",
|
2827 |
-
$mixinName, isset($argValues) ? $argValues : null, null);
|
2828 |
-
|
2829 |
-
if (!empty($hasBlock)) {
|
2830 |
-
$include = $this->pushSpecialBlock("include");
|
2831 |
-
$include->child = $child;
|
2832 |
-
} else {
|
2833 |
-
$this->append($child, $s);
|
2834 |
-
}
|
2835 |
-
|
2836 |
-
return true;
|
2837 |
-
} else {
|
2838 |
-
$this->seek($s);
|
2839 |
-
}
|
2840 |
-
|
2841 |
-
if ($this->literal("@import") &&
|
2842 |
-
$this->valueList($importPath) &&
|
2843 |
-
$this->end())
|
2844 |
-
{
|
2845 |
-
$this->append(array("import", $importPath), $s);
|
2846 |
-
return true;
|
2847 |
-
} else {
|
2848 |
-
$this->seek($s);
|
2849 |
-
}
|
2850 |
-
|
2851 |
-
if ($this->literal("@extend") &&
|
2852 |
-
$this->selectors($selector) &&
|
2853 |
-
$this->end())
|
2854 |
-
{
|
2855 |
-
$this->append(array("extend", $selector), $s);
|
2856 |
-
return true;
|
2857 |
-
} else {
|
2858 |
-
$this->seek($s);
|
2859 |
-
}
|
2860 |
-
|
2861 |
-
if ($this->literal("@function") &&
|
2862 |
-
$this->keyword($fnName) &&
|
2863 |
-
$this->argumentDef($args) &&
|
2864 |
-
$this->literal("{"))
|
2865 |
-
{
|
2866 |
-
$func = $this->pushSpecialBlock("function");
|
2867 |
-
$func->name = $fnName;
|
2868 |
-
$func->args = $args;
|
2869 |
-
return true;
|
2870 |
-
} else {
|
2871 |
-
$this->seek($s);
|
2872 |
-
}
|
2873 |
-
|
2874 |
-
if ($this->literal("@return") && $this->valueList($retVal) && $this->end()) {
|
2875 |
-
$this->append(array("return", $retVal), $s);
|
2876 |
-
return true;
|
2877 |
-
} else {
|
2878 |
-
$this->seek($s);
|
2879 |
-
}
|
2880 |
-
|
2881 |
-
if ($this->literal("@each") &&
|
2882 |
-
$this->variable($varName) &&
|
2883 |
-
$this->literal("in") &&
|
2884 |
-
$this->valueList($list) &&
|
2885 |
-
$this->literal("{"))
|
2886 |
-
{
|
2887 |
-
$each = $this->pushSpecialBlock("each");
|
2888 |
-
$each->var = $varName[1];
|
2889 |
-
$each->list = $list;
|
2890 |
-
return true;
|
2891 |
-
} else {
|
2892 |
-
$this->seek($s);
|
2893 |
-
}
|
2894 |
-
|
2895 |
-
if ($this->literal("@while") &&
|
2896 |
-
$this->expression($cond) &&
|
2897 |
-
$this->literal("{"))
|
2898 |
-
{
|
2899 |
-
$while = $this->pushSpecialBlock("while");
|
2900 |
-
$while->cond = $cond;
|
2901 |
-
return true;
|
2902 |
-
} else {
|
2903 |
-
$this->seek($s);
|
2904 |
-
}
|
2905 |
-
|
2906 |
-
if ($this->literal("@for") &&
|
2907 |
-
$this->variable($varName) &&
|
2908 |
-
$this->literal("from") &&
|
2909 |
-
$this->expression($start) &&
|
2910 |
-
($this->literal("through") ||
|
2911 |
-
($forUntil = true && $this->literal("to"))) &&
|
2912 |
-
$this->expression($end) &&
|
2913 |
-
$this->literal("{"))
|
2914 |
-
{
|
2915 |
-
$for = $this->pushSpecialBlock("for");
|
2916 |
-
$for->var = $varName[1];
|
2917 |
-
$for->start = $start;
|
2918 |
-
$for->end = $end;
|
2919 |
-
$for->until = isset($forUntil);
|
2920 |
-
return true;
|
2921 |
-
} else {
|
2922 |
-
$this->seek($s);
|
2923 |
-
}
|
2924 |
-
|
2925 |
-
if ($this->literal("@if") && $this->valueList($cond) && $this->literal("{")) {
|
2926 |
-
$if = $this->pushSpecialBlock("if");
|
2927 |
-
$if->cond = $cond;
|
2928 |
-
$if->cases = array();
|
2929 |
-
return true;
|
2930 |
-
} else {
|
2931 |
-
$this->seek($s);
|
2932 |
-
}
|
2933 |
-
|
2934 |
-
if (($this->literal("@debug") || $this->literal("@warn")) &&
|
2935 |
-
$this->valueList($value) &&
|
2936 |
-
$this->end()) {
|
2937 |
-
$this->append(array("debug", $value, $s), $s);
|
2938 |
-
return true;
|
2939 |
-
} else {
|
2940 |
-
$this->seek($s);
|
2941 |
-
}
|
2942 |
-
|
2943 |
-
if ($this->literal("@content") && $this->end()) {
|
2944 |
-
$this->append(array("mixin_content"), $s);
|
2945 |
-
return true;
|
2946 |
-
} else {
|
2947 |
-
$this->seek($s);
|
2948 |
-
}
|
2949 |
-
|
2950 |
-
$last = $this->last();
|
2951 |
-
if (isset($last) && $last[0] == "if") {
|
2952 |
-
list(, $if) = $last;
|
2953 |
-
if ($this->literal("@else")) {
|
2954 |
-
if ($this->literal("{")) {
|
2955 |
-
$else = $this->pushSpecialBlock("else");
|
2956 |
-
} elseif ($this->literal("if") && $this->valueList($cond) && $this->literal("{")) {
|
2957 |
-
$else = $this->pushSpecialBlock("elseif");
|
2958 |
-
$else->cond = $cond;
|
2959 |
-
}
|
2960 |
-
|
2961 |
-
if (isset($else)) {
|
2962 |
-
$else->dontAppend = true;
|
2963 |
-
$if->cases[] = $else;
|
2964 |
-
return true;
|
2965 |
-
}
|
2966 |
-
}
|
2967 |
-
|
2968 |
-
$this->seek($s);
|
2969 |
-
}
|
2970 |
-
|
2971 |
-
if ($this->literal("@charset") &&
|
2972 |
-
$this->valueList($charset) && $this->end())
|
2973 |
-
{
|
2974 |
-
$this->append(array("charset", $charset), $s);
|
2975 |
-
return true;
|
2976 |
-
} else {
|
2977 |
-
$this->seek($s);
|
2978 |
-
}
|
2979 |
-
|
2980 |
-
// doesn't match built in directive, do generic one
|
2981 |
-
if ($this->literal("@", false) && $this->keyword($dirName) &&
|
2982 |
-
($this->openString("{", $dirValue) || true) &&
|
2983 |
-
$this->literal("{"))
|
2984 |
-
{
|
2985 |
-
$directive = $this->pushSpecialBlock("directive");
|
2986 |
-
$directive->name = $dirName;
|
2987 |
-
if (isset($dirValue)) $directive->value = $dirValue;
|
2988 |
-
return true;
|
2989 |
-
}
|
2990 |
-
|
2991 |
-
$this->seek($s);
|
2992 |
-
return false;
|
2993 |
-
}
|
2994 |
-
|
2995 |
-
// property shortcut
|
2996 |
-
// captures most properties before having to parse a selector
|
2997 |
-
if ($this->keyword($name, false) &&
|
2998 |
-
$this->literal(": ") &&
|
2999 |
-
$this->valueList($value) &&
|
3000 |
-
$this->end())
|
3001 |
-
{
|
3002 |
-
$name = array("string", "", array($name));
|
3003 |
-
$this->append(array("assign", $name, $value), $s);
|
3004 |
-
return true;
|
3005 |
-
} else {
|
3006 |
-
$this->seek($s);
|
3007 |
-
}
|
3008 |
-
|
3009 |
-
// variable assigns
|
3010 |
-
if ($this->variable($name) &&
|
3011 |
-
$this->literal(":") &&
|
3012 |
-
$this->valueList($value) && $this->end())
|
3013 |
-
{
|
3014 |
-
// check for !default
|
3015 |
-
$defaultVar = $value[0] == "list" && $this->stripDefault($value);
|
3016 |
-
$this->append(array("assign", $name, $value, $defaultVar), $s);
|
3017 |
-
return true;
|
3018 |
-
} else {
|
3019 |
-
$this->seek($s);
|
3020 |
-
}
|
3021 |
-
|
3022 |
-
// misc
|
3023 |
-
if ($this->literal("-->")) {
|
3024 |
-
return true;
|
3025 |
-
}
|
3026 |
-
|
3027 |
-
// opening css block
|
3028 |
-
$oldComments = $this->insertComments;
|
3029 |
-
$this->insertComments = false;
|
3030 |
-
if ($this->selectors($selectors) && $this->literal("{")) {
|
3031 |
-
$this->pushBlock($selectors);
|
3032 |
-
$this->insertComments = $oldComments;
|
3033 |
-
return true;
|
3034 |
-
} else {
|
3035 |
-
$this->seek($s);
|
3036 |
-
}
|
3037 |
-
$this->insertComments = $oldComments;
|
3038 |
-
|
3039 |
-
// property assign, or nested assign
|
3040 |
-
if ($this->propertyName($name) && $this->literal(":")) {
|
3041 |
-
$foundSomething = false;
|
3042 |
-
if ($this->valueList($value)) {
|
3043 |
-
$this->append(array("assign", $name, $value), $s);
|
3044 |
-
$foundSomething = true;
|
3045 |
-
}
|
3046 |
-
|
3047 |
-
if ($this->literal("{")) {
|
3048 |
-
$propBlock = $this->pushSpecialBlock("nestedprop");
|
3049 |
-
$propBlock->prefix = $name;
|
3050 |
-
$foundSomething = true;
|
3051 |
-
} elseif ($foundSomething) {
|
3052 |
-
$foundSomething = $this->end();
|
3053 |
-
}
|
3054 |
-
|
3055 |
-
if ($foundSomething) {
|
3056 |
-
return true;
|
3057 |
-
}
|
3058 |
-
|
3059 |
-
$this->seek($s);
|
3060 |
-
} else {
|
3061 |
-
$this->seek($s);
|
3062 |
-
}
|
3063 |
-
|
3064 |
-
// closing a block
|
3065 |
-
if ($this->literal("}")) {
|
3066 |
-
$block = $this->popBlock();
|
3067 |
-
if (isset($block->type) && $block->type == "include") {
|
3068 |
-
$include = $block->child;
|
3069 |
-
unset($block->child);
|
3070 |
-
$include[3] = $block;
|
3071 |
-
$this->append($include, $s);
|
3072 |
-
} elseif (empty($block->dontAppend)) {
|
3073 |
-
$type = isset($block->type) ? $block->type : "block";
|
3074 |
-
$this->append(array($type, $block), $s);
|
3075 |
-
}
|
3076 |
-
return true;
|
3077 |
-
}
|
3078 |
-
|
3079 |
-
// extra stuff
|
3080 |
-
if ($this->literal(";") ||
|
3081 |
-
$this->literal("<!--"))
|
3082 |
-
{
|
3083 |
-
return true;
|
3084 |
-
}
|
3085 |
-
|
3086 |
-
return false;
|
3087 |
-
}
|
3088 |
-
|
3089 |
-
protected function stripDefault(&$value) {
|
3090 |
-
$def = end($value[2]);
|
3091 |
-
if ($def[0] == "keyword" && $def[1] == "!default") {
|
3092 |
-
array_pop($value[2]);
|
3093 |
-
$value = $this->flattenList($value);
|
3094 |
-
return true;
|
3095 |
-
}
|
3096 |
-
|
3097 |
-
if ($def[0] == "list") {
|
3098 |
-
return $this->stripDefault($value[2][count($value[2]) - 1]);
|
3099 |
-
}
|
3100 |
-
|
3101 |
-
return false;
|
3102 |
-
}
|
3103 |
-
|
3104 |
-
protected function literal($what, $eatWhitespace = null) {
|
3105 |
-
if (!isset($eatWhitespace)) $eatWhitespace = $this->eatWhiteDefault;
|
3106 |
-
|
3107 |
-
// shortcut on single letter
|
3108 |
-
if (!isset($what[1]) && isset($this->buffer[$this->count])) {
|
3109 |
-
if ($this->buffer[$this->count] == $what) {
|
3110 |
-
if (!$eatWhitespace) {
|
3111 |
-
$this->count++;
|
3112 |
-
return true;
|
3113 |
-
}
|
3114 |
-
// goes below...
|
3115 |
-
} else {
|
3116 |
-
return false;
|
3117 |
-
}
|
3118 |
-
}
|
3119 |
-
|
3120 |
-
return $this->match($this->preg_quote($what), $m, $eatWhitespace);
|
3121 |
-
}
|
3122 |
-
|
3123 |
-
// tree builders
|
3124 |
-
|
3125 |
-
protected function pushBlock($selectors) {
|
3126 |
-
$b = new stdClass;
|
3127 |
-
$b->parent = $this->env; // not sure if we need this yet
|
3128 |
-
|
3129 |
-
$b->selectors = $selectors;
|
3130 |
-
$b->children = array();
|
3131 |
-
|
3132 |
-
$this->env = $b;
|
3133 |
-
return $b;
|
3134 |
-
}
|
3135 |
-
|
3136 |
-
protected function pushSpecialBlock($type) {
|
3137 |
-
$block = $this->pushBlock(null);
|
3138 |
-
$block->type = $type;
|
3139 |
-
return $block;
|
3140 |
-
}
|
3141 |
-
|
3142 |
-
protected function popBlock() {
|
3143 |
-
if (empty($this->env->parent)) {
|
3144 |
-
$this->throwParseError("unexpected }");
|
3145 |
-
}
|
3146 |
-
|
3147 |
-
$old = $this->env;
|
3148 |
-
$this->env = $this->env->parent;
|
3149 |
-
unset($old->parent);
|
3150 |
-
return $old;
|
3151 |
-
}
|
3152 |
-
|
3153 |
-
protected function append($statement, $pos=null) {
|
3154 |
-
if ($pos !== null) {
|
3155 |
-
$statement[-1] = $pos;
|
3156 |
-
if (!$this->rootParser) $statement[-2] = $this;
|
3157 |
-
}
|
3158 |
-
$this->env->children[] = $statement;
|
3159 |
-
}
|
3160 |
-
|
3161 |
-
// last child that was appended
|
3162 |
-
protected function last() {
|
3163 |
-
$i = count($this->env->children) - 1;
|
3164 |
-
if (isset($this->env->children[$i]))
|
3165 |
-
return $this->env->children[$i];
|
3166 |
-
}
|
3167 |
-
|
3168 |
-
// high level parsers (they return parts of ast)
|
3169 |
-
|
3170 |
-
protected function mediaQueryList(&$out) {
|
3171 |
-
return $this->genericList($out, "mediaQuery", ",", false);
|
3172 |
-
}
|
3173 |
-
|
3174 |
-
protected function mediaQuery(&$out) {
|
3175 |
-
$s = $this->seek();
|
3176 |
-
|
3177 |
-
$expressions = null;
|
3178 |
-
$parts = array();
|
3179 |
-
|
3180 |
-
if (($this->literal("only") && ($only = true) || $this->literal("not") && ($not = true) || true) && $this->mixedKeyword($mediaType)) {
|
3181 |
-
$prop = array("mediaType");
|
3182 |
-
if (isset($only)) $prop[] = array("keyword", "only");
|
3183 |
-
if (isset($not)) $prop[] = array("keyword", "not");
|
3184 |
-
$media = array("list", "", array());
|
3185 |
-
foreach ((array)$mediaType as $type) {
|
3186 |
-
if (is_array($type)) {
|
3187 |
-
$media[2][] = $type;
|
3188 |
-
} else {
|
3189 |
-
$media[2][] = array("keyword", $type);
|
3190 |
-
}
|
3191 |
-
}
|
3192 |
-
$prop[] = $media;
|
3193 |
-
$parts[] = $prop;
|
3194 |
-
}
|
3195 |
-
|
3196 |
-
if (empty($parts) || $this->literal("and")) {
|
3197 |
-
$this->genericList($expressions, "mediaExpression", "and", false);
|
3198 |
-
if (is_array($expressions)) $parts = array_merge($parts, $expressions[2]);
|
3199 |
-
}
|
3200 |
-
|
3201 |
-
$out = $parts;
|
3202 |
-
return true;
|
3203 |
-
}
|
3204 |
-
|
3205 |
-
protected function mediaExpression(&$out) {
|
3206 |
-
$s = $this->seek();
|
3207 |
-
$value = null;
|
3208 |
-
if ($this->literal("(") &&
|
3209 |
-
$this->expression($feature) &&
|
3210 |
-
($this->literal(":") && $this->expression($value) || true) &&
|
3211 |
-
$this->literal(")"))
|
3212 |
-
{
|
3213 |
-
$out = array("mediaExp", $feature);
|
3214 |
-
if ($value) $out[] = $value;
|
3215 |
-
return true;
|
3216 |
-
}
|
3217 |
-
|
3218 |
-
$this->seek($s);
|
3219 |
-
return false;
|
3220 |
-
}
|
3221 |
-
|
3222 |
-
protected function argValues(&$out) {
|
3223 |
-
if ($this->genericList($list, "argValue", ",", false)) {
|
3224 |
-
$out = $list[2];
|
3225 |
-
return true;
|
3226 |
-
}
|
3227 |
-
return false;
|
3228 |
-
}
|
3229 |
-
|
3230 |
-
protected function argValue(&$out) {
|
3231 |
-
$s = $this->seek();
|
3232 |
-
|
3233 |
-
$keyword = null;
|
3234 |
-
if (!$this->variable($keyword) || !$this->literal(":")) {
|
3235 |
-
$this->seek($s);
|
3236 |
-
$keyword = null;
|
3237 |
-
}
|
3238 |
-
|
3239 |
-
if ($this->genericList($value, "expression")) {
|
3240 |
-
$out = array($keyword, $value, false);
|
3241 |
-
$s = $this->seek();
|
3242 |
-
if ($this->literal("...")) {
|
3243 |
-
$out[2] = true;
|
3244 |
-
} else {
|
3245 |
-
$this->seek($s);
|
3246 |
-
}
|
3247 |
-
return true;
|
3248 |
-
}
|
3249 |
-
|
3250 |
-
return false;
|
3251 |
-
}
|
3252 |
-
|
3253 |
-
/**
|
3254 |
-
* Parse list
|
3255 |
-
*
|
3256 |
-
* @param string $out
|
3257 |
-
*
|
3258 |
-
* @return boolean
|
3259 |
-
*/
|
3260 |
-
public function valueList(&$out)
|
3261 |
-
{
|
3262 |
-
return $this->genericList($out, 'spaceList', ',');
|
3263 |
-
}
|
3264 |
-
|
3265 |
-
protected function spaceList(&$out)
|
3266 |
-
{
|
3267 |
-
return $this->genericList($out, 'expression');
|
3268 |
-
}
|
3269 |
-
|
3270 |
-
protected function genericList(&$out, $parseItem, $delim="", $flatten=true) {
|
3271 |
-
$s = $this->seek();
|
3272 |
-
$items = array();
|
3273 |
-
while ($this->$parseItem($value)) {
|
3274 |
-
$items[] = $value;
|
3275 |
-
if ($delim) {
|
3276 |
-
if (!$this->literal($delim)) break;
|
3277 |
-
}
|
3278 |
-
}
|
3279 |
-
|
3280 |
-
if (count($items) == 0) {
|
3281 |
-
$this->seek($s);
|
3282 |
-
return false;
|
3283 |
-
}
|
3284 |
-
|
3285 |
-
if ($flatten && count($items) == 1) {
|
3286 |
-
$out = $items[0];
|
3287 |
-
} else {
|
3288 |
-
$out = array("list", $delim, $items);
|
3289 |
-
}
|
3290 |
-
|
3291 |
-
return true;
|
3292 |
-
}
|
3293 |
-
|
3294 |
-
protected function expression(&$out) {
|
3295 |
-
$s = $this->seek();
|
3296 |
-
|
3297 |
-
if ($this->literal("(")) {
|
3298 |
-
if ($this->literal(")")) {
|
3299 |
-
$out = array("list", "", array());
|
3300 |
-
return true;
|
3301 |
-
}
|
3302 |
-
|
3303 |
-
if ($this->valueList($out) && $this->literal(')') && $out[0] == "list") {
|
3304 |
-
return true;
|
3305 |
-
}
|
3306 |
-
|
3307 |
-
$this->seek($s);
|
3308 |
-
}
|
3309 |
-
|
3310 |
-
if ($this->value($lhs)) {
|
3311 |
-
$out = $this->expHelper($lhs, 0);
|
3312 |
-
return true;
|
3313 |
-
}
|
3314 |
-
|
3315 |
-
return false;
|
3316 |
-
}
|
3317 |
-
|
3318 |
-
protected function expHelper($lhs, $minP) {
|
3319 |
-
$opstr = self::$operatorStr;
|
3320 |
-
|
3321 |
-
$ss = $this->seek();
|
3322 |
-
$whiteBefore = isset($this->buffer[$this->count - 1]) &&
|
3323 |
-
ctype_space($this->buffer[$this->count - 1]);
|
3324 |
-
while ($this->match($opstr, $m) && self::$precedence[$m[1]] >= $minP) {
|
3325 |
-
$whiteAfter = isset($this->buffer[$this->count - 1]) &&
|
3326 |
-
ctype_space($this->buffer[$this->count - 1]);
|
3327 |
-
|
3328 |
-
$op = $m[1];
|
3329 |
-
|
3330 |
-
// don't turn negative numbers into expressions
|
3331 |
-
if ($op == "-" && $whiteBefore) {
|
3332 |
-
if (!$whiteAfter) break;
|
3333 |
-
}
|
3334 |
-
|
3335 |
-
if (!$this->value($rhs)) break;
|
3336 |
-
|
3337 |
-
// peek and see if rhs belongs to next operator
|
3338 |
-
if ($this->peek($opstr, $next) && self::$precedence[$next[1]] > self::$precedence[$op]) {
|
3339 |
-
$rhs = $this->expHelper($rhs, self::$precedence[$next[1]]);
|
3340 |
-
}
|
3341 |
-
|
3342 |
-
$lhs = array("exp", $op, $lhs, $rhs, $this->inParens, $whiteBefore, $whiteAfter);
|
3343 |
-
$ss = $this->seek();
|
3344 |
-
$whiteBefore = isset($this->buffer[$this->count - 1]) &&
|
3345 |
-
ctype_space($this->buffer[$this->count - 1]);
|
3346 |
-
}
|
3347 |
-
|
3348 |
-
$this->seek($ss);
|
3349 |
-
return $lhs;
|
3350 |
-
}
|
3351 |
-
|
3352 |
-
protected function value(&$out) {
|
3353 |
-
$s = $this->seek();
|
3354 |
-
|
3355 |
-
if ($this->literal("not", false) && $this->whitespace() && $this->value($inner)) {
|
3356 |
-
$out = array("unary", "not", $inner, $this->inParens);
|
3357 |
-
return true;
|
3358 |
-
} else {
|
3359 |
-
$this->seek($s);
|
3360 |
-
}
|
3361 |
-
|
3362 |
-
if ($this->literal("+") && $this->value($inner)) {
|
3363 |
-
$out = array("unary", "+", $inner, $this->inParens);
|
3364 |
-
return true;
|
3365 |
-
} else {
|
3366 |
-
$this->seek($s);
|
3367 |
-
}
|
3368 |
-
|
3369 |
-
// negation
|
3370 |
-
if ($this->literal("-", false) &&
|
3371 |
-
($this->variable($inner) ||
|
3372 |
-
$this->unit($inner) ||
|
3373 |
-
$this->parenValue($inner)))
|
3374 |
-
{
|
3375 |
-
$out = array("unary", "-", $inner, $this->inParens);
|
3376 |
-
return true;
|
3377 |
-
} else {
|
3378 |
-
$this->seek($s);
|
3379 |
-
}
|
3380 |
-
|
3381 |
-
if ($this->parenValue($out)) return true;
|
3382 |
-
if ($this->interpolation($out)) return true;
|
3383 |
-
if ($this->variable($out)) return true;
|
3384 |
-
if ($this->color($out)) return true;
|
3385 |
-
if ($this->unit($out)) return true;
|
3386 |
-
if ($this->string($out)) return true;
|
3387 |
-
if ($this->func($out)) return true;
|
3388 |
-
if ($this->progid($out)) return true;
|
3389 |
-
|
3390 |
-
if ($this->keyword($keyword)) {
|
3391 |
-
if ($keyword == "null") {
|
3392 |
-
$out = array("null");
|
3393 |
-
} else {
|
3394 |
-
$out = array("keyword", $keyword);
|
3395 |
-
}
|
3396 |
-
return true;
|
3397 |
-
}
|
3398 |
-
|
3399 |
-
return false;
|
3400 |
-
}
|
3401 |
-
|
3402 |
-
// value wrappen in parentheses
|
3403 |
-
protected function parenValue(&$out) {
|
3404 |
-
$s = $this->seek();
|
3405 |
-
|
3406 |
-
$inParens = $this->inParens;
|
3407 |
-
if ($this->literal("(") &&
|
3408 |
-
($this->inParens = true) && $this->expression($exp) &&
|
3409 |
-
$this->literal(")"))
|
3410 |
-
{
|
3411 |
-
$out = $exp;
|
3412 |
-
$this->inParens = $inParens;
|
3413 |
-
return true;
|
3414 |
-
} else {
|
3415 |
-
$this->inParens = $inParens;
|
3416 |
-
$this->seek($s);
|
3417 |
-
}
|
3418 |
-
|
3419 |
-
return false;
|
3420 |
-
}
|
3421 |
-
|
3422 |
-
protected function progid(&$out) {
|
3423 |
-
$s = $this->seek();
|
3424 |
-
if ($this->literal("progid:", false) &&
|
3425 |
-
$this->openString("(", $fn) &&
|
3426 |
-
$this->literal("("))
|
3427 |
-
{
|
3428 |
-
$this->openString(")", $args, "(");
|
3429 |
-
if ($this->literal(")")) {
|
3430 |
-
$out = array("string", "", array(
|
3431 |
-
"progid:", $fn, "(", $args, ")"
|
3432 |
-
));
|
3433 |
-
return true;
|
3434 |
-
}
|
3435 |
-
}
|
3436 |
-
|
3437 |
-
$this->seek($s);
|
3438 |
-
return false;
|
3439 |
-
}
|
3440 |
-
|
3441 |
-
protected function func(&$func) {
|
3442 |
-
$s = $this->seek();
|
3443 |
-
|
3444 |
-
if ($this->keyword($name, false) &&
|
3445 |
-
$this->literal("("))
|
3446 |
-
{
|
3447 |
-
if ($name == "alpha" && $this->argumentList($args)) {
|
3448 |
-
$func = array("function", $name, array("string", "", $args));
|
3449 |
-
return true;
|
3450 |
-
}
|
3451 |
-
|
3452 |
-
if ($name != "expression" && !preg_match("/^(-[a-z]+-)?calc$/", $name)) {
|
3453 |
-
$ss = $this->seek();
|
3454 |
-
if ($this->argValues($args) && $this->literal(")")) {
|
3455 |
-
$func = array("fncall", $name, $args);
|
3456 |
-
return true;
|
3457 |
-
}
|
3458 |
-
$this->seek($ss);
|
3459 |
-
}
|
3460 |
-
|
3461 |
-
if (($this->openString(")", $str, "(") || true ) &&
|
3462 |
-
$this->literal(")"))
|
3463 |
-
{
|
3464 |
-
$args = array();
|
3465 |
-
if (!empty($str)) {
|
3466 |
-
$args[] = array(null, array("string", "", array($str)));
|
3467 |
-
}
|
3468 |
-
|
3469 |
-
$func = array("fncall", $name, $args);
|
3470 |
-
return true;
|
3471 |
-
}
|
3472 |
-
}
|
3473 |
-
|
3474 |
-
$this->seek($s);
|
3475 |
-
return false;
|
3476 |
-
}
|
3477 |
-
|
3478 |
-
protected function argumentList(&$out) {
|
3479 |
-
$s = $this->seek();
|
3480 |
-
$this->literal("(");
|
3481 |
-
|
3482 |
-
$args = array();
|
3483 |
-
while ($this->keyword($var)) {
|
3484 |
-
$ss = $this->seek();
|
3485 |
-
|
3486 |
-
if ($this->literal("=") && $this->expression($exp)) {
|
3487 |
-
$args[] = array("string", "", array($var."="));
|
3488 |
-
$arg = $exp;
|
3489 |
-
} else {
|
3490 |
-
break;
|
3491 |
-
}
|
3492 |
-
|
3493 |
-
$args[] = $arg;
|
3494 |
-
|
3495 |
-
if (!$this->literal(",")) break;
|
3496 |
-
|
3497 |
-
$args[] = array("string", "", array(", "));
|
3498 |
-
}
|
3499 |
-
|
3500 |
-
if (!$this->literal(")") || !count($args)) {
|
3501 |
-
$this->seek($s);
|
3502 |
-
return false;
|
3503 |
-
}
|
3504 |
-
|
3505 |
-
$out = $args;
|
3506 |
-
return true;
|
3507 |
-
}
|
3508 |
-
|
3509 |
-
protected function argumentDef(&$out) {
|
3510 |
-
$s = $this->seek();
|
3511 |
-
$this->literal("(");
|
3512 |
-
|
3513 |
-
$args = array();
|
3514 |
-
while ($this->variable($var)) {
|
3515 |
-
$arg = array($var[1], null, false);
|
3516 |
-
|
3517 |
-
$ss = $this->seek();
|
3518 |
-
if ($this->literal(":") && $this->genericList($defaultVal, "expression")) {
|
3519 |
-
$arg[1] = $defaultVal;
|
3520 |
-
} else {
|
3521 |
-
$this->seek($ss);
|
3522 |
-
}
|
3523 |
-
|
3524 |
-
$ss = $this->seek();
|
3525 |
-
if ($this->literal("...")) {
|
3526 |
-
$sss = $this->seek();
|
3527 |
-
if (!$this->literal(")")) {
|
3528 |
-
$this->throwParseError("... has to be after the final argument");
|
3529 |
-
}
|
3530 |
-
$arg[2] = true;
|
3531 |
-
$this->seek($sss);
|
3532 |
-
} else {
|
3533 |
-
$this->seek($ss);
|
3534 |
-
}
|
3535 |
-
|
3536 |
-
$args[] = $arg;
|
3537 |
-
if (!$this->literal(",")) break;
|
3538 |
-
}
|
3539 |
-
|
3540 |
-
if (!$this->literal(")")) {
|
3541 |
-
$this->seek($s);
|
3542 |
-
return false;
|
3543 |
-
}
|
3544 |
-
|
3545 |
-
$out = $args;
|
3546 |
-
return true;
|
3547 |
-
}
|
3548 |
-
|
3549 |
-
protected function color(&$out) {
|
3550 |
-
$color = array('color');
|
3551 |
-
|
3552 |
-
if ($this->match('(#([0-9a-f]{6})|#([0-9a-f]{3}))', $m)) {
|
3553 |
-
if (isset($m[3])) {
|
3554 |
-
$num = $m[3];
|
3555 |
-
$width = 16;
|
3556 |
-
} else {
|
3557 |
-
$num = $m[2];
|
3558 |
-
$width = 256;
|
3559 |
-
}
|
3560 |
-
|
3561 |
-
$num = hexdec($num);
|
3562 |
-
foreach (array(3,2,1) as $i) {
|
3563 |
-
$t = $num % $width;
|
3564 |
-
$num /= $width;
|
3565 |
-
|
3566 |
-
$color[$i] = $t * (256/$width) + $t * floor(16/$width);
|
3567 |
-
}
|
3568 |
-
|
3569 |
-
$out = $color;
|
3570 |
-
return true;
|
3571 |
-
}
|
3572 |
-
|
3573 |
-
return false;
|
3574 |
-
}
|
3575 |
-
|
3576 |
-
protected function unit(&$unit) {
|
3577 |
-
if ($this->match('([0-9]*(\.)?[0-9]+)([%a-zA-Z]+)?', $m)) {
|
3578 |
-
$unit = array("number", $m[1], empty($m[3]) ? "" : $m[3]);
|
3579 |
-
return true;
|
3580 |
-
}
|
3581 |
-
return false;
|
3582 |
-
}
|
3583 |
-
|
3584 |
-
protected function string(&$out) {
|
3585 |
-
$s = $this->seek();
|
3586 |
-
if ($this->literal('"', false)) {
|
3587 |
-
$delim = '"';
|
3588 |
-
} elseif ($this->literal("'", false)) {
|
3589 |
-
$delim = "'";
|
3590 |
-
} else {
|
3591 |
-
return false;
|
3592 |
-
}
|
3593 |
-
|
3594 |
-
$content = array();
|
3595 |
-
$oldWhite = $this->eatWhiteDefault;
|
3596 |
-
$this->eatWhiteDefault = false;
|
3597 |
-
|
3598 |
-
while ($this->matchString($m, $delim)) {
|
3599 |
-
$content[] = $m[1];
|
3600 |
-
if ($m[2] == "#{") {
|
3601 |
-
$this->count -= strlen($m[2]);
|
3602 |
-
if ($this->interpolation($inter, false)) {
|
3603 |
-
$content[] = $inter;
|
3604 |
-
} else {
|
3605 |
-
$this->count += strlen($m[2]);
|
3606 |
-
$content[] = "#{"; // ignore it
|
3607 |
-
}
|
3608 |
-
} elseif ($m[2] == '\\') {
|
3609 |
-
$content[] = $m[2];
|
3610 |
-
if ($this->literal($delim, false)) {
|
3611 |
-
$content[] = $delim;
|
3612 |
-
}
|
3613 |
-
} else {
|
3614 |
-
$this->count -= strlen($delim);
|
3615 |
-
break; // delim
|
3616 |
-
}
|
3617 |
-
}
|
3618 |
-
|
3619 |
-
$this->eatWhiteDefault = $oldWhite;
|
3620 |
-
|
3621 |
-
if ($this->literal($delim)) {
|
3622 |
-
$out = array("string", $delim, $content);
|
3623 |
-
return true;
|
3624 |
-
}
|
3625 |
-
|
3626 |
-
$this->seek($s);
|
3627 |
-
return false;
|
3628 |
-
}
|
3629 |
-
|
3630 |
-
protected function mixedKeyword(&$out) {
|
3631 |
-
$s = $this->seek();
|
3632 |
-
|
3633 |
-
$parts = array();
|
3634 |
-
|
3635 |
-
$oldWhite = $this->eatWhiteDefault;
|
3636 |
-
$this->eatWhiteDefault = false;
|
3637 |
-
|
3638 |
-
while (true) {
|
3639 |
-
if ($this->keyword($key)) {
|
3640 |
-
$parts[] = $key;
|
3641 |
-
continue;
|
3642 |
-
}
|
3643 |
-
|
3644 |
-
if ($this->interpolation($inter)) {
|
3645 |
-
$parts[] = $inter;
|
3646 |
-
continue;
|
3647 |
-
}
|
3648 |
-
|
3649 |
-
break;
|
3650 |
-
}
|
3651 |
-
|
3652 |
-
$this->eatWhiteDefault = $oldWhite;
|
3653 |
-
|
3654 |
-
if (count($parts) == 0) return false;
|
3655 |
-
|
3656 |
-
if ($this->eatWhiteDefault) {
|
3657 |
-
$this->whitespace();
|
3658 |
-
}
|
3659 |
-
|
3660 |
-
$out = $parts;
|
3661 |
-
return true;
|
3662 |
-
}
|
3663 |
-
|
3664 |
-
// an unbounded string stopped by $end
|
3665 |
-
protected function openString($end, &$out, $nestingOpen=null) {
|
3666 |
-
$oldWhite = $this->eatWhiteDefault;
|
3667 |
-
$this->eatWhiteDefault = false;
|
3668 |
-
|
3669 |
-
$stop = array("'", '"', "#{", $end);
|
3670 |
-
$stop = array_map(array($this, "preg_quote"), $stop);
|
3671 |
-
$stop[] = self::$commentMulti;
|
3672 |
-
|
3673 |
-
$patt = '(.*?)('.implode("|", $stop).')';
|
3674 |
-
|
3675 |
-
$nestingLevel = 0;
|
3676 |
-
|
3677 |
-
$content = array();
|
3678 |
-
while ($this->match($patt, $m, false)) {
|
3679 |
-
if (isset($m[1]) && $m[1] !== '') {
|
3680 |
-
$content[] = $m[1];
|
3681 |
-
if ($nestingOpen) {
|
3682 |
-
$nestingLevel += substr_count($m[1], $nestingOpen);
|
3683 |
-
}
|
3684 |
-
}
|
3685 |
-
|
3686 |
-
$tok = $m[2];
|
3687 |
-
|
3688 |
-
$this->count-= strlen($tok);
|
3689 |
-
if ($tok == $end) {
|
3690 |
-
if ($nestingLevel == 0) {
|
3691 |
-
break;
|
3692 |
-
} else {
|
3693 |
-
$nestingLevel--;
|
3694 |
-
}
|
3695 |
-
}
|
3696 |
-
|
3697 |
-
if (($tok == "'" || $tok == '"') && $this->string($str)) {
|
3698 |
-
$content[] = $str;
|
3699 |
-
continue;
|
3700 |
-
}
|
3701 |
-
|
3702 |
-
if ($tok == "#{" && $this->interpolation($inter)) {
|
3703 |
-
$content[] = $inter;
|
3704 |
-
continue;
|
3705 |
-
}
|
3706 |
-
|
3707 |
-
$content[] = $tok;
|
3708 |
-
$this->count+= strlen($tok);
|
3709 |
-
}
|
3710 |
-
|
3711 |
-
$this->eatWhiteDefault = $oldWhite;
|
3712 |
-
|
3713 |
-
if (count($content) == 0) return false;
|
3714 |
-
|
3715 |
-
// trim the end
|
3716 |
-
if (is_string(end($content))) {
|
3717 |
-
$content[count($content) - 1] = rtrim(end($content));
|
3718 |
-
}
|
3719 |
-
|
3720 |
-
$out = array("string", "", $content);
|
3721 |
-
return true;
|
3722 |
-
}
|
3723 |
-
|
3724 |
-
// $lookWhite: save information about whitespace before and after
|
3725 |
-
protected function interpolation(&$out, $lookWhite=true) {
|
3726 |
-
$oldWhite = $this->eatWhiteDefault;
|
3727 |
-
$this->eatWhiteDefault = true;
|
3728 |
-
|
3729 |
-
$s = $this->seek();
|
3730 |
-
if ($this->literal("#{") && $this->valueList($value) && $this->literal("}", false)) {
|
3731 |
-
|
3732 |
-
// TODO: don't error if out of bounds
|
3733 |
-
|
3734 |
-
if ($lookWhite) {
|
3735 |
-
$left = preg_match('/\s/', $this->buffer[$s - 1]) ? " " : "";
|
3736 |
-
$right = preg_match('/\s/', $this->buffer[$this->count]) ? " ": "";
|
3737 |
-
} else {
|
3738 |
-
$left = $right = false;
|
3739 |
-
}
|
3740 |
-
|
3741 |
-
$out = array("interpolate", $value, $left, $right);
|
3742 |
-
$this->eatWhiteDefault = $oldWhite;
|
3743 |
-
if ($this->eatWhiteDefault) $this->whitespace();
|
3744 |
-
return true;
|
3745 |
-
}
|
3746 |
-
|
3747 |
-
$this->seek($s);
|
3748 |
-
$this->eatWhiteDefault = $oldWhite;
|
3749 |
-
return false;
|
3750 |
-
}
|
3751 |
-
|
3752 |
-
// low level parsers
|
3753 |
-
|
3754 |
-
// returns an array of parts or a string
|
3755 |
-
protected function propertyName(&$out) {
|
3756 |
-
$s = $this->seek();
|
3757 |
-
$parts = array();
|
3758 |
-
|
3759 |
-
$oldWhite = $this->eatWhiteDefault;
|
3760 |
-
$this->eatWhiteDefault = false;
|
3761 |
-
|
3762 |
-
while (true) {
|
3763 |
-
if ($this->interpolation($inter)) {
|
3764 |
-
$parts[] = $inter;
|
3765 |
-
} elseif ($this->keyword($text)) {
|
3766 |
-
$parts[] = $text;
|
3767 |
-
} elseif (count($parts) == 0 && $this->match('[:.#]', $m, false)) {
|
3768 |
-
// css hacks
|
3769 |
-
$parts[] = $m[0];
|
3770 |
-
} else {
|
3771 |
-
break;
|
3772 |
-
}
|
3773 |
-
}
|
3774 |
-
|
3775 |
-
$this->eatWhiteDefault = $oldWhite;
|
3776 |
-
if (count($parts) == 0) return false;
|
3777 |
-
|
3778 |
-
// match comment hack
|
3779 |
-
if (preg_match(self::$whitePattern,
|
3780 |
-
$this->buffer, $m, null, $this->count))
|
3781 |
-
{
|
3782 |
-
if (!empty($m[0])) {
|
3783 |
-
$parts[] = $m[0];
|
3784 |
-
$this->count += strlen($m[0]);
|
3785 |
-
}
|
3786 |
-
}
|
3787 |
-
|
3788 |
-
$this->whitespace(); // get any extra whitespace
|
3789 |
-
|
3790 |
-
$out = array("string", "", $parts);
|
3791 |
-
return true;
|
3792 |
-
}
|
3793 |
-
|
3794 |
-
// comma separated list of selectors
|
3795 |
-
protected function selectors(&$out) {
|
3796 |
-
$s = $this->seek();
|
3797 |
-
$selectors = array();
|
3798 |
-
while ($this->selector($sel)) {
|
3799 |
-
$selectors[] = $sel;
|
3800 |
-
if (!$this->literal(",")) break;
|
3801 |
-
while ($this->literal(",")); // ignore extra
|
3802 |
-
}
|
3803 |
-
|
3804 |
-
if (count($selectors) == 0) {
|
3805 |
-
$this->seek($s);
|
3806 |
-
return false;
|
3807 |
-
}
|
3808 |
-
|
3809 |
-
$out = $selectors;
|
3810 |
-
return true;
|
3811 |
-
}
|
3812 |
-
|
3813 |
-
// whitespace separated list of selectorSingle
|
3814 |
-
protected function selector(&$out) {
|
3815 |
-
$selector = array();
|
3816 |
-
|
3817 |
-
while (true) {
|
3818 |
-
if ($this->match('[>+~]+', $m)) {
|
3819 |
-
$selector[] = array($m[0]);
|
3820 |
-
} elseif ($this->selectorSingle($part)) {
|
3821 |
-
$selector[] = $part;
|
3822 |
-
$this->whitespace();
|
3823 |
-
} elseif ($this->match('\/[^\/]+\/', $m)) {
|
3824 |
-
$selector[] = array($m[0]);
|
3825 |
-
} else {
|
3826 |
-
break;
|
3827 |
-
}
|
3828 |
-
|
3829 |
-
}
|
3830 |
-
|
3831 |
-
if (count($selector) == 0) {
|
3832 |
-
return false;
|
3833 |
-
}
|
3834 |
-
|
3835 |
-
$out = $selector;
|
3836 |
-
return true;
|
3837 |
-
}
|
3838 |
-
|
3839 |
-
// the parts that make up
|
3840 |
-
// div[yes=no]#something.hello.world:nth-child(-2n+1)%placeholder
|
3841 |
-
protected function selectorSingle(&$out) {
|
3842 |
-
$oldWhite = $this->eatWhiteDefault;
|
3843 |
-
$this->eatWhiteDefault = false;
|
3844 |
-
|
3845 |
-
$parts = array();
|
3846 |
-
|
3847 |
-
if ($this->literal("*", false)) {
|
3848 |
-
$parts[] = "*";
|
3849 |
-
}
|
3850 |
-
|
3851 |
-
while (true) {
|
3852 |
-
// see if we can stop early
|
3853 |
-
if ($this->match("\s*[{,]", $m)) {
|
3854 |
-
$this->count--;
|
3855 |
-
break;
|
3856 |
-
}
|
3857 |
-
|
3858 |
-
$s = $this->seek();
|
3859 |
-
// self
|
3860 |
-
if ($this->literal("&", false)) {
|
3861 |
-
$parts[] = scssc::$selfSelector;
|
3862 |
-
continue;
|
3863 |
-
}
|
3864 |
-
|
3865 |
-
if ($this->literal(".", false)) {
|
3866 |
-
$parts[] = ".";
|
3867 |
-
continue;
|
3868 |
-
}
|
3869 |
-
|
3870 |
-
if ($this->literal("|", false)) {
|
3871 |
-
$parts[] = "|";
|
3872 |
-
continue;
|
3873 |
-
}
|
3874 |
-
|
3875 |
-
// for keyframes
|
3876 |
-
if ($this->unit($unit)) {
|
3877 |
-
$parts[] = $unit;
|
3878 |
-
continue;
|
3879 |
-
}
|
3880 |
-
|
3881 |
-
if ($this->keyword($name)) {
|
3882 |
-
$parts[] = $name;
|
3883 |
-
continue;
|
3884 |
-
}
|
3885 |
-
|
3886 |
-
if ($this->interpolation($inter)) {
|
3887 |
-
$parts[] = $inter;
|
3888 |
-
continue;
|
3889 |
-
}
|
3890 |
-
|
3891 |
-
if ($this->literal('%', false) && $this->placeholder($placeholder)) {
|
3892 |
-
$parts[] = '%';
|
3893 |
-
$parts[] = $placeholder;
|
3894 |
-
continue;
|
3895 |
-
}
|
3896 |
-
|
3897 |
-
if ($this->literal("#", false)) {
|
3898 |
-
$parts[] = "#";
|
3899 |
-
continue;
|
3900 |
-
}
|
3901 |
-
|
3902 |
-
// a pseudo selector
|
3903 |
-
if ($this->match("::?", $m) && $this->mixedKeyword($nameParts)) {
|
3904 |
-
$parts[] = $m[0];
|
3905 |
-
foreach ($nameParts as $sub) {
|
3906 |
-
$parts[] = $sub;
|
3907 |
-
}
|
3908 |
-
|
3909 |
-
$ss = $this->seek();
|
3910 |
-
if ($this->literal("(") &&
|
3911 |
-
($this->openString(")", $str, "(") || true ) &&
|
3912 |
-
$this->literal(")"))
|
3913 |
-
{
|
3914 |
-
$parts[] = "(";
|
3915 |
-
if (!empty($str)) $parts[] = $str;
|
3916 |
-
$parts[] = ")";
|
3917 |
-
} else {
|
3918 |
-
$this->seek($ss);
|
3919 |
-
}
|
3920 |
-
|
3921 |
-
continue;
|
3922 |
-
} else {
|
3923 |
-
$this->seek($s);
|
3924 |
-
}
|
3925 |
-
|
3926 |
-
// attribute selector
|
3927 |
-
// TODO: replace with open string?
|
3928 |
-
if ($this->literal("[", false)) {
|
3929 |
-
$attrParts = array("[");
|
3930 |
-
// keyword, string, operator
|
3931 |
-
while (true) {
|
3932 |
-
if ($this->literal("]", false)) {
|
3933 |
-
$this->count--;
|
3934 |
-
break; // get out early
|
3935 |
-
}
|
3936 |
-
|
3937 |
-
if ($this->match('\s+', $m)) {
|
3938 |
-
$attrParts[] = " ";
|
3939 |
-
continue;
|
3940 |
-
}
|
3941 |
-
if ($this->string($str)) {
|
3942 |
-
$attrParts[] = $str;
|
3943 |
-
continue;
|
3944 |
-
}
|
3945 |
-
|
3946 |
-
if ($this->keyword($word)) {
|
3947 |
-
$attrParts[] = $word;
|
3948 |
-
continue;
|
3949 |
-
}
|
3950 |
-
|
3951 |
-
if ($this->interpolation($inter, false)) {
|
3952 |
-
$attrParts[] = $inter;
|
3953 |
-
continue;
|
3954 |
-
}
|
3955 |
-
|
3956 |
-
// operator, handles attr namespace too
|
3957 |
-
if ($this->match('[|-~\$\*\^=]+', $m)) {
|
3958 |
-
$attrParts[] = $m[0];
|
3959 |
-
continue;
|
3960 |
-
}
|
3961 |
-
|
3962 |
-
break;
|
3963 |
-
}
|
3964 |
-
|
3965 |
-
if ($this->literal("]", false)) {
|
3966 |
-
$attrParts[] = "]";
|
3967 |
-
foreach ($attrParts as $part) {
|
3968 |
-
$parts[] = $part;
|
3969 |
-
}
|
3970 |
-
continue;
|
3971 |
-
}
|
3972 |
-
$this->seek($s);
|
3973 |
-
// should just break here?
|
3974 |
-
}
|
3975 |
-
|
3976 |
-
break;
|
3977 |
-
}
|
3978 |
-
|
3979 |
-
$this->eatWhiteDefault = $oldWhite;
|
3980 |
-
|
3981 |
-
if (count($parts) == 0) return false;
|
3982 |
-
|
3983 |
-
$out = $parts;
|
3984 |
-
return true;
|
3985 |
-
}
|
3986 |
-
|
3987 |
-
protected function variable(&$out) {
|
3988 |
-
$s = $this->seek();
|
3989 |
-
if ($this->literal("$", false) && $this->keyword($name)) {
|
3990 |
-
$out = array("var", $name);
|
3991 |
-
return true;
|
3992 |
-
}
|
3993 |
-
$this->seek($s);
|
3994 |
-
return false;
|
3995 |
-
}
|
3996 |
-
|
3997 |
-
protected function keyword(&$word, $eatWhitespace = null) {
|
3998 |
-
if ($this->match('([\w_\-\*!"\'\\\\][\w\-_"\'\\\\]*)',
|
3999 |
-
$m, $eatWhitespace))
|
4000 |
-
{
|
4001 |
-
$word = $m[1];
|
4002 |
-
return true;
|
4003 |
-
}
|
4004 |
-
return false;
|
4005 |
-
}
|
4006 |
-
|
4007 |
-
protected function placeholder(&$placeholder) {
|
4008 |
-
if ($this->match('([\w\-_]+)', $m)) {
|
4009 |
-
$placeholder = $m[1];
|
4010 |
-
return true;
|
4011 |
-
}
|
4012 |
-
return false;
|
4013 |
-
}
|
4014 |
-
|
4015 |
-
// consume an end of statement delimiter
|
4016 |
-
protected function end() {
|
4017 |
-
if ($this->literal(';')) {
|
4018 |
-
return true;
|
4019 |
-
} elseif ($this->count == strlen($this->buffer) || $this->buffer[$this->count] == '}') {
|
4020 |
-
// if there is end of file or a closing block next then we don't need a ;
|
4021 |
-
return true;
|
4022 |
-
}
|
4023 |
-
return false;
|
4024 |
-
}
|
4025 |
-
|
4026 |
-
// advance counter to next occurrence of $what
|
4027 |
-
// $until - don't include $what in advance
|
4028 |
-
// $allowNewline, if string, will be used as valid char set
|
4029 |
-
protected function to($what, &$out, $until = false, $allowNewline = false) {
|
4030 |
-
if (is_string($allowNewline)) {
|
4031 |
-
$validChars = $allowNewline;
|
4032 |
-
} else {
|
4033 |
-
$validChars = $allowNewline ? "." : "[^\n]";
|
4034 |
-
}
|
4035 |
-
if (!$this->match('('.$validChars.'*?)'.$this->preg_quote($what), $m, !$until)) return false;
|
4036 |
-
if ($until) $this->count -= strlen($what); // give back $what
|
4037 |
-
$out = $m[1];
|
4038 |
-
return true;
|
4039 |
-
}
|
4040 |
-
|
4041 |
-
public function throwParseError($msg = "parse error", $count = null) {
|
4042 |
-
$count = !isset($count) ? $this->count : $count;
|
4043 |
-
|
4044 |
-
$line = $this->getLineNo($count);
|
4045 |
-
|
4046 |
-
if (!empty($this->sourceName)) {
|
4047 |
-
$loc = "$this->sourceName on line $line";
|
4048 |
-
} else {
|
4049 |
-
$loc = "line: $line";
|
4050 |
-
}
|
4051 |
-
|
4052 |
-
if ($this->peek("(.*?)(\n|$)", $m, $count)) {
|
4053 |
-
throw new Exception("$msg: failed at `$m[1]` $loc");
|
4054 |
-
} else {
|
4055 |
-
throw new Exception("$msg: $loc");
|
4056 |
-
}
|
4057 |
-
}
|
4058 |
-
|
4059 |
-
public function getLineNo($pos) {
|
4060 |
-
return 1 + substr_count(substr($this->buffer, 0, $pos), "\n");
|
4061 |
-
}
|
4062 |
-
|
4063 |
-
/**
|
4064 |
-
* Match string looking for either ending delim, escape, or string interpolation
|
4065 |
-
*
|
4066 |
-
* {@internal This is a workaround for preg_match's 250K string match limit. }}
|
4067 |
-
*
|
4068 |
-
* @param array $m Matches (passed by reference)
|
4069 |
-
* @param string $delim Delimeter
|
4070 |
-
*
|
4071 |
-
* @return boolean True if match; false otherwise
|
4072 |
-
*/
|
4073 |
-
protected function matchString(&$m, $delim) {
|
4074 |
-
$token = null;
|
4075 |
-
|
4076 |
-
$end = strpos($this->buffer, "\n", $this->count);
|
4077 |
-
if ($end === false || $this->buffer[$end - 1] == '\\' || $this->buffer[$end - 2] == '\\' && $this->buffer[$end - 1] == "\r") {
|
4078 |
-
$end = strlen($this->buffer);
|
4079 |
-
}
|
4080 |
-
|
4081 |
-
// look for either ending delim, escape, or string interpolation
|
4082 |
-
foreach (array('#{', '\\', $delim) as $lookahead) {
|
4083 |
-
$pos = strpos($this->buffer, $lookahead, $this->count);
|
4084 |
-
if ($pos !== false && $pos < $end) {
|
4085 |
-
$end = $pos;
|
4086 |
-
$token = $lookahead;
|
4087 |
-
}
|
4088 |
-
}
|
4089 |
-
|
4090 |
-
if (!isset($token)) {
|
4091 |
-
return false;
|
4092 |
-
}
|
4093 |
-
|
4094 |
-
$match = substr($this->buffer, $this->count, $end - $this->count);
|
4095 |
-
$m = array(
|
4096 |
-
$match . $token,
|
4097 |
-
$match,
|
4098 |
-
$token
|
4099 |
-
);
|
4100 |
-
$this->count = $end + strlen($token);
|
4101 |
-
|
4102 |
-
return true;
|
4103 |
-
}
|
4104 |
-
|
4105 |
-
// try to match something on head of buffer
|
4106 |
-
protected function match($regex, &$out, $eatWhitespace = null) {
|
4107 |
-
if (!isset($eatWhitespace)) $eatWhitespace = $this->eatWhiteDefault;
|
4108 |
-
|
4109 |
-
$r = '/'.$regex.'/Ais';
|
4110 |
-
if (preg_match($r, $this->buffer, $out, null, $this->count)) {
|
4111 |
-
$this->count += strlen($out[0]);
|
4112 |
-
if ($eatWhitespace) $this->whitespace();
|
4113 |
-
return true;
|
4114 |
-
}
|
4115 |
-
return false;
|
4116 |
-
}
|
4117 |
-
|
4118 |
-
// match some whitespace
|
4119 |
-
protected function whitespace() {
|
4120 |
-
$gotWhite = false;
|
4121 |
-
while (preg_match(self::$whitePattern, $this->buffer, $m, null, $this->count)) {
|
4122 |
-
if ($this->insertComments) {
|
4123 |
-
if (isset($m[1]) && empty($this->commentsSeen[$this->count])) {
|
4124 |
-
$this->append(array("comment", $m[1]));
|
4125 |
-
$this->commentsSeen[$this->count] = true;
|
4126 |
-
}
|
4127 |
-
}
|
4128 |
-
$this->count += strlen($m[0]);
|
4129 |
-
$gotWhite = true;
|
4130 |
-
}
|
4131 |
-
return $gotWhite;
|
4132 |
-
}
|
4133 |
-
|
4134 |
-
protected function peek($regex, &$out, $from=null) {
|
4135 |
-
if (!isset($from)) $from = $this->count;
|
4136 |
-
|
4137 |
-
$r = '/'.$regex.'/Ais';
|
4138 |
-
$result = preg_match($r, $this->buffer, $out, null, $from);
|
4139 |
-
|
4140 |
-
return $result;
|
4141 |
-
}
|
4142 |
-
|
4143 |
-
protected function seek($where = null) {
|
4144 |
-
if ($where === null) return $this->count;
|
4145 |
-
else $this->count = $where;
|
4146 |
-
return true;
|
4147 |
-
}
|
4148 |
-
|
4149 |
-
static function preg_quote($what) {
|
4150 |
-
return preg_quote($what, '/');
|
4151 |
-
}
|
4152 |
-
|
4153 |
-
protected function show() {
|
4154 |
-
if ($this->peek("(.*?)(\n|$)", $m, $this->count)) {
|
4155 |
-
return $m[1];
|
4156 |
-
}
|
4157 |
-
return "";
|
4158 |
-
}
|
4159 |
-
|
4160 |
-
// turn list of length 1 into value type
|
4161 |
-
protected function flattenList($value) {
|
4162 |
-
if ($value[0] == "list" && count($value[2]) == 1) {
|
4163 |
-
return $this->flattenList($value[2][0]);
|
4164 |
-
}
|
4165 |
-
return $value;
|
4166 |
-
}
|
4167 |
-
}
|
4168 |
-
|
4169 |
-
/**
|
4170 |
-
* SCSS base formatter
|
4171 |
-
*
|
4172 |
-
* @author Leaf Corcoran <leafot@gmail.com>
|
4173 |
-
*/
|
4174 |
-
class scss_formatter {
|
4175 |
-
public $indentChar = " ";
|
4176 |
-
|
4177 |
-
public $break = "\n";
|
4178 |
-
public $open = " {";
|
4179 |
-
public $close = "}";
|
4180 |
-
public $tagSeparator = ", ";
|
4181 |
-
public $assignSeparator = ": ";
|
4182 |
-
|
4183 |
-
public function __construct() {
|
4184 |
-
$this->indentLevel = 0;
|
4185 |
-
}
|
4186 |
-
|
4187 |
-
public function indentStr($n = 0) {
|
4188 |
-
return str_repeat($this->indentChar, max($this->indentLevel + $n, 0));
|
4189 |
-
}
|
4190 |
-
|
4191 |
-
public function property($name, $value) {
|
4192 |
-
return $name . $this->assignSeparator . $value . ";";
|
4193 |
-
}
|
4194 |
-
|
4195 |
-
protected function block($block) {
|
4196 |
-
if (empty($block->lines) && empty($block->children)) return;
|
4197 |
-
|
4198 |
-
$inner = $pre = $this->indentStr();
|
4199 |
-
|
4200 |
-
if (!empty($block->selectors)) {
|
4201 |
-
echo $pre .
|
4202 |
-
implode($this->tagSeparator, $block->selectors) .
|
4203 |
-
$this->open . $this->break;
|
4204 |
-
$this->indentLevel++;
|
4205 |
-
$inner = $this->indentStr();
|
4206 |
-
}
|
4207 |
-
|
4208 |
-
if (!empty($block->lines)) {
|
4209 |
-
$glue = $this->break.$inner;
|
4210 |
-
echo $inner . implode($glue, $block->lines);
|
4211 |
-
if (!empty($block->children)) {
|
4212 |
-
echo $this->break;
|
4213 |
-
}
|
4214 |
-
}
|
4215 |
-
|
4216 |
-
foreach ($block->children as $child) {
|
4217 |
-
$this->block($child);
|
4218 |
-
}
|
4219 |
-
|
4220 |
-
if (!empty($block->selectors)) {
|
4221 |
-
$this->indentLevel--;
|
4222 |
-
if (empty($block->children)) echo $this->break;
|
4223 |
-
echo $pre . $this->close . $this->break;
|
4224 |
-
}
|
4225 |
-
}
|
4226 |
-
|
4227 |
-
public function format($block) {
|
4228 |
-
ob_start();
|
4229 |
-
$this->block($block);
|
4230 |
-
$out = ob_get_clean();
|
4231 |
-
|
4232 |
-
return $out;
|
4233 |
-
}
|
4234 |
-
}
|
4235 |
-
|
4236 |
-
/**
|
4237 |
-
* SCSS nested formatter
|
4238 |
-
*
|
4239 |
-
* @author Leaf Corcoran <leafot@gmail.com>
|
4240 |
-
*/
|
4241 |
-
class scss_formatter_nested extends scss_formatter {
|
4242 |
-
public $close = " }";
|
4243 |
-
|
4244 |
-
// adjust the depths of all children, depth first
|
4245 |
-
public function adjustAllChildren($block) {
|
4246 |
-
// flatten empty nested blocks
|
4247 |
-
$children = array();
|
4248 |
-
foreach ($block->children as $i => $child) {
|
4249 |
-
if (empty($child->lines) && empty($child->children)) {
|
4250 |
-
if (isset($block->children[$i + 1])) {
|
4251 |
-
$block->children[$i + 1]->depth = $child->depth;
|
4252 |
-
}
|
4253 |
-
continue;
|
4254 |
-
}
|
4255 |
-
$children[] = $child;
|
4256 |
-
}
|
4257 |
-
|
4258 |
-
$count = count($children);
|
4259 |
-
for ($i = 0; $i < $count; $i++) {
|
4260 |
-
$depth = $children[$i]->depth;
|
4261 |
-
$j = $i + 1;
|
4262 |
-
if (isset($children[$j]) && $depth < $children[$j]->depth) {
|
4263 |
-
$childDepth = $children[$j]->depth;
|
4264 |
-
for (; $j < $count; $j++) {
|
4265 |
-
if ($depth < $children[$j]->depth && $childDepth >= $children[$j]->depth) {
|
4266 |
-
$children[$j]->depth = $depth + 1;
|
4267 |
-
}
|
4268 |
-
}
|
4269 |
-
}
|
4270 |
-
}
|
4271 |
-
|
4272 |
-
$block->children = $children;
|
4273 |
-
|
4274 |
-
// make relative to parent
|
4275 |
-
foreach ($block->children as $child) {
|
4276 |
-
$this->adjustAllChildren($child);
|
4277 |
-
$child->depth = $child->depth - $block->depth;
|
4278 |
-
}
|
4279 |
-
}
|
4280 |
-
|
4281 |
-
protected function block($block) {
|
4282 |
-
if ($block->type == "root") {
|
4283 |
-
$this->adjustAllChildren($block);
|
4284 |
-
}
|
4285 |
-
|
4286 |
-
$inner = $pre = $this->indentStr($block->depth - 1);
|
4287 |
-
if (!empty($block->selectors)) {
|
4288 |
-
echo $pre .
|
4289 |
-
implode($this->tagSeparator, $block->selectors) .
|
4290 |
-
$this->open . $this->break;
|
4291 |
-
$this->indentLevel++;
|
4292 |
-
$inner = $this->indentStr($block->depth - 1);
|
4293 |
-
}
|
4294 |
-
|
4295 |
-
if (!empty($block->lines)) {
|
4296 |
-
$glue = $this->break.$inner;
|
4297 |
-
echo $inner . implode($glue, $block->lines);
|
4298 |
-
if (!empty($block->children)) echo $this->break;
|
4299 |
-
}
|
4300 |
-
|
4301 |
-
foreach ($block->children as $i => $child) {
|
4302 |
-
// echo "*** block: ".$block->depth." child: ".$child->depth."\n";
|
4303 |
-
$this->block($child);
|
4304 |
-
if ($i < count($block->children) - 1) {
|
4305 |
-
echo $this->break;
|
4306 |
-
|
4307 |
-
if (isset($block->children[$i + 1])) {
|
4308 |
-
$next = $block->children[$i + 1];
|
4309 |
-
if ($next->depth == max($block->depth, 1) && $child->depth >= $next->depth) {
|
4310 |
-
echo $this->break;
|
4311 |
-
}
|
4312 |
-
}
|
4313 |
-
}
|
4314 |
-
}
|
4315 |
-
|
4316 |
-
if (!empty($block->selectors)) {
|
4317 |
-
$this->indentLevel--;
|
4318 |
-
echo $this->close;
|
4319 |
-
}
|
4320 |
-
|
4321 |
-
if ($block->type == "root") {
|
4322 |
-
echo $this->break;
|
4323 |
-
}
|
4324 |
-
}
|
4325 |
-
}
|
4326 |
-
|
4327 |
-
/**
|
4328 |
-
* SCSS compressed formatter
|
4329 |
-
*
|
4330 |
-
* @author Leaf Corcoran <leafot@gmail.com>
|
4331 |
-
*/
|
4332 |
-
class scss_formatter_compressed extends scss_formatter {
|
4333 |
-
public $open = "{";
|
4334 |
-
public $tagSeparator = ",";
|
4335 |
-
public $assignSeparator = ":";
|
4336 |
-
public $break = "";
|
4337 |
-
|
4338 |
-
public function indentStr($n = 0) {
|
4339 |
-
return "";
|
4340 |
-
}
|
4341 |
-
}
|
4342 |
-
|
4343 |
-
/**
|
4344 |
-
* SCSS server
|
4345 |
-
*
|
4346 |
-
* @author Leaf Corcoran <leafot@gmail.com>
|
4347 |
-
*/
|
4348 |
-
class scss_server {
|
4349 |
-
/**
|
4350 |
-
* Join path components
|
4351 |
-
*
|
4352 |
-
* @param string $left Path component, left of the directory separator
|
4353 |
-
* @param string $right Path component, right of the directory separator
|
4354 |
-
*
|
4355 |
-
* @return string
|
4356 |
-
*/
|
4357 |
-
protected function join($left, $right) {
|
4358 |
-
return rtrim($left, '/\\') . DIRECTORY_SEPARATOR . ltrim($right, '/\\');
|
4359 |
-
}
|
4360 |
-
|
4361 |
-
/**
|
4362 |
-
* Get name of requested .scss file
|
4363 |
-
*
|
4364 |
-
* @return string|null
|
4365 |
-
*/
|
4366 |
-
protected function inputName() {
|
4367 |
-
switch (true) {
|
4368 |
-
case isset($_GET['p']):
|
4369 |
-
return $_GET['p'];
|
4370 |
-
case isset($_SERVER['PATH_INFO']):
|
4371 |
-
return $_SERVER['PATH_INFO'];
|
4372 |
-
case isset($_SERVER['DOCUMENT_URI']):
|
4373 |
-
return substr($_SERVER['DOCUMENT_URI'], strlen($_SERVER['SCRIPT_NAME']));
|
4374 |
-
}
|
4375 |
-
}
|
4376 |
-
|
4377 |
-
/**
|
4378 |
-
* Get path to requested .scss file
|
4379 |
-
*
|
4380 |
-
* @return string
|
4381 |
-
*/
|
4382 |
-
protected function findInput() {
|
4383 |
-
if (($input = $this->inputName())
|
4384 |
-
&& strpos($input, '..') === false
|
4385 |
-
&& substr($input, -5) === '.scss'
|
4386 |
-
) {
|
4387 |
-
$name = $this->join($this->dir, $input);
|
4388 |
-
|
4389 |
-
if (is_file($name) && is_readable($name)) {
|
4390 |
-
return $name;
|
4391 |
-
}
|
4392 |
-
}
|
4393 |
-
|
4394 |
-
return false;
|
4395 |
-
}
|
4396 |
-
|
4397 |
-
/**
|
4398 |
-
* Get path to cached .css file
|
4399 |
-
*
|
4400 |
-
* @return string
|
4401 |
-
*/
|
4402 |
-
protected function cacheName($fname) {
|
4403 |
-
return $this->join($this->cacheDir, md5($fname) . '.css');
|
4404 |
-
}
|
4405 |
-
|
4406 |
-
/**
|
4407 |
-
* Get path to cached imports
|
4408 |
-
*
|
4409 |
-
* @return string
|
4410 |
-
*/
|
4411 |
-
protected function importsCacheName($out) {
|
4412 |
-
return $out . '.imports';
|
4413 |
-
}
|
4414 |
-
|
4415 |
-
/**
|
4416 |
-
* Determine whether .scss file needs to be re-compiled.
|
4417 |
-
*
|
4418 |
-
* @param string $in Input path
|
4419 |
-
* @param string $out Output path
|
4420 |
-
*
|
4421 |
-
* @return boolean True if compile required.
|
4422 |
-
*/
|
4423 |
-
protected function needsCompile($in, $out) {
|
4424 |
-
if (!is_file($out)) return true;
|
4425 |
-
|
4426 |
-
$mtime = filemtime($out);
|
4427 |
-
if (filemtime($in) > $mtime) return true;
|
4428 |
-
|
4429 |
-
// look for modified imports
|
4430 |
-
$icache = $this->importsCacheName($out);
|
4431 |
-
if (is_readable($icache)) {
|
4432 |
-
$imports = unserialize( self::$parent->filesystem->execute( 'get_contents', $icache ));
|
4433 |
-
//$imports = unserialize(file_get_contents($icache));
|
4434 |
-
foreach ($imports as $import) {
|
4435 |
-
if (filemtime($import) > $mtime) return true;
|
4436 |
-
}
|
4437 |
-
}
|
4438 |
-
return false;
|
4439 |
-
}
|
4440 |
-
|
4441 |
-
/**
|
4442 |
-
* Get If-Modified-Since header from client request
|
4443 |
-
*
|
4444 |
-
* @return string
|
4445 |
-
*/
|
4446 |
-
protected function getModifiedSinceHeader()
|
4447 |
-
{
|
4448 |
-
$modifiedSince = '';
|
4449 |
-
|
4450 |
-
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
|
4451 |
-
$modifiedSince = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
|
4452 |
-
|
4453 |
-
if (false !== ($semicolonPos = strpos($modifiedSince, ';'))) {
|
4454 |
-
$modifiedSince = substr($modifiedSince, 0, $semicolonPos);
|
4455 |
-
}
|
4456 |
-
}
|
4457 |
-
|
4458 |
-
return $modifiedSince;
|
4459 |
-
}
|
4460 |
-
|
4461 |
-
/**
|
4462 |
-
* Compile .scss file
|
4463 |
-
*
|
4464 |
-
* @param string $in Input path (.scss)
|
4465 |
-
* @param string $out Output path (.css)
|
4466 |
-
*
|
4467 |
-
* @return string
|
4468 |
-
*/
|
4469 |
-
protected function compile($in, $out) {
|
4470 |
-
$start = microtime(true);
|
4471 |
-
|
4472 |
-
$css = $this->scss->compile(self::$parent->filesystem->execute( 'get_contents', $in ), $in);
|
4473 |
-
//$css = $this->scss->compile(file_get_contents($in), $in);
|
4474 |
-
$elapsed = round((microtime(true) - $start), 4);
|
4475 |
-
|
4476 |
-
$v = scssc::$VERSION;
|
4477 |
-
$t = @date('r');
|
4478 |
-
$css = "/* compiled by scssphp $v on $t (${elapsed}s) */\n\n" . $css;
|
4479 |
-
|
4480 |
-
self::$parent->filesystem->execute( 'put_contents', $out, array('content'=>$css) );
|
4481 |
-
self::$parent->filesystem->execute( 'put_contents', $this->importsCacheName($out), array('content'=>serialize($this->scss->getParsedFiles())) );
|
4482 |
-
//file_put_contents($out, $css);
|
4483 |
-
//file_put_contents($this->importsCacheName($out),
|
4484 |
-
// serialize($this->scss->getParsedFiles()));
|
4485 |
-
return $css;
|
4486 |
-
}
|
4487 |
-
|
4488 |
-
/**
|
4489 |
-
* Compile requested scss and serve css. Outputs HTTP response.
|
4490 |
-
*
|
4491 |
-
* @param string $salt Prefix a string to the filename for creating the cache name hash
|
4492 |
-
*/
|
4493 |
-
public function serve($salt = '') {
|
4494 |
-
$protocol = isset($_SERVER['SERVER_PROTOCOL'])
|
4495 |
-
? $_SERVER['SERVER_PROTOCOL']
|
4496 |
-
: 'HTTP/1.0';
|
4497 |
-
|
4498 |
-
if ($input = $this->findInput()) {
|
4499 |
-
$output = $this->cacheName($salt . $input);
|
4500 |
-
|
4501 |
-
if ($this->needsCompile($input, $output)) {
|
4502 |
-
try {
|
4503 |
-
$css = $this->compile($input, $output);
|
4504 |
-
|
4505 |
-
$lastModified = gmdate('D, d M Y H:i:s', filemtime($output)) . ' GMT';
|
4506 |
-
|
4507 |
-
header('Last-Modified: ' . $lastModified);
|
4508 |
-
header('Content-type: text/css');
|
4509 |
-
|
4510 |
-
echo $css;
|
4511 |
-
|
4512 |
-
return;
|
4513 |
-
} catch (Exception $e) {
|
4514 |
-
header($protocol . ' 500 Internal Server Error');
|
4515 |
-
header('Content-type: text/plain');
|
4516 |
-
|
4517 |
-
echo 'Parse error: ' . $e->getMessage() . "\n";
|
4518 |
-
}
|
4519 |
-
}
|
4520 |
-
|
4521 |
-
header('X-SCSS-Cache: true');
|
4522 |
-
header('Content-type: text/css');
|
4523 |
-
|
4524 |
-
$modifiedSince = $this->getModifiedSinceHeader();
|
4525 |
-
$mtime = filemtime($output);
|
4526 |
-
|
4527 |
-
if (@strtotime($modifiedSince) === $mtime) {
|
4528 |
-
header($protocol . ' 304 Not Modified');
|
4529 |
-
|
4530 |
-
return;
|
4531 |
-
}
|
4532 |
-
|
4533 |
-
$lastModified = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';
|
4534 |
-
header('Last-Modified: ' . $lastModified);
|
4535 |
-
|
4536 |
-
echo self::$parent->filesystem->execute( 'get_contents', $output );
|
4537 |
-
//echo file_get_contents($output);
|
4538 |
-
|
4539 |
-
return;
|
4540 |
-
}
|
4541 |
-
|
4542 |
-
header($protocol . ' 404 Not Found');
|
4543 |
-
header('Content-type: text/plain');
|
4544 |
-
|
4545 |
-
$v = scssc::$VERSION;
|
4546 |
-
echo "/* INPUT NOT FOUND scss $v */\n";
|
4547 |
-
}
|
4548 |
-
|
4549 |
-
/**
|
4550 |
-
* Constructor
|
4551 |
-
*
|
4552 |
-
* @param string $dir Root directory to .scss files
|
4553 |
-
* @param string $cacheDir Cache directory
|
4554 |
-
* @param \scssc|null $scss SCSS compiler instance
|
4555 |
-
*/
|
4556 |
-
public function __construct($dir, $cacheDir=null, $scss=null) {
|
4557 |
-
$this->dir = $dir;
|
4558 |
-
|
4559 |
-
if (!isset($cacheDir)) {
|
4560 |
-
$cacheDir = $this->join($dir, 'scss_cache');
|
4561 |
-
}
|
4562 |
-
|
4563 |
-
$this->cacheDir = $cacheDir;
|
4564 |
-
if (!is_dir($this->cacheDir)) mkdir($this->cacheDir, 0755, true);
|
4565 |
-
|
4566 |
-
if (!isset($scss)) {
|
4567 |
-
$scss = new scssc();
|
4568 |
-
$scss->setImportPaths($this->dir);
|
4569 |
-
}
|
4570 |
-
$this->scss = $scss;
|
4571 |
-
}
|
4572 |
-
|
4573 |
-
/**
|
4574 |
-
* Helper method to serve compiled scss
|
4575 |
-
*
|
4576 |
-
* @param string $path Root path
|
4577 |
-
*/
|
4578 |
-
static public function serveFrom($path) {
|
4579 |
-
$server = new self($path);
|
4580 |
-
$server->serve();
|
4581 |
-
}
|
4582 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ReduxCore/inc/themecheck/checks/embedded.php
CHANGED
@@ -12,7 +12,7 @@
|
|
12 |
if ( $redux ) {
|
13 |
if ( ! isset( $_POST['redux_wporg'] ) ) {
|
14 |
checkcount();
|
15 |
-
$this->error[] = '<div class="redux-error">' . sprintf( __( '<span class="tc-lead tc-recommended">RECOMMENDED</span>: If you are submitting to WordPress.org Theme Repository, it is <strong>strongly</strong> suggested that you read <a href="%
|
16 |
$ret = false;
|
17 |
} else {
|
18 |
// TODO Granular WP.org tests!!!
|
12 |
if ( $redux ) {
|
13 |
if ( ! isset( $_POST['redux_wporg'] ) ) {
|
14 |
checkcount();
|
15 |
+
$this->error[] = '<div class="redux-error">' . sprintf( __( '<span class="tc-lead tc-recommended">RECOMMENDED</span>: If you are submitting to WordPress.org Theme Repository, it is <strong>strongly</strong> suggested that you read <a href="%s" target="_blank">this document</a>, or your theme will be rejected because of Redux.', 'redux-framework' ), 'https://docs.reduxframework.com/core/wordpress-org-submissions/' ) . '</div>';
|
16 |
$ret = false;
|
17 |
} else {
|
18 |
// TODO Granular WP.org tests!!!
|
ReduxCore/inc/themecheck/class.redux_themecheck.php
CHANGED
@@ -66,6 +66,10 @@
|
|
66 |
*/
|
67 |
private function __construct() {
|
68 |
|
|
|
|
|
|
|
|
|
69 |
// Load admin style sheet and JavaScript.
|
70 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
|
71 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
|
@@ -118,11 +122,11 @@
|
|
118 |
if ( self::$redux_details === null ) {
|
119 |
foreach ( $php_files as $php_key => $phpfile ) {
|
120 |
if ( strpos( $phpfile, 'class' . ' ReduxFramework {' ) !== false ) {
|
121 |
-
self::$redux_details
|
122 |
'filename' => strtolower( basename( $php_key ) ),
|
123 |
'path' => $php_key,
|
124 |
);
|
125 |
-
self::$redux_details['dir']
|
126 |
self::$redux_details['parent_dir'] = str_replace( basename( self::$redux_details['dir'] ) . '/', '', self::$redux_details['dir'] );
|
127 |
}
|
128 |
}
|
@@ -187,11 +191,7 @@
|
|
187 |
public function enqueue_admin_styles() {
|
188 |
$screen = get_current_screen();
|
189 |
if ( 'appearance_page_themecheck' == $screen->id ) {
|
190 |
-
|
191 |
-
$redux = self::get_redux_instance();
|
192 |
-
|
193 |
-
wp_enqueue_style( $this->slug . '-admin-styles', $redux::$_url . 'inc/themecheck/css/admin.css', array(), $this->version );
|
194 |
-
//}
|
195 |
}
|
196 |
}
|
197 |
|
@@ -205,8 +205,7 @@
|
|
205 |
$screen = get_current_screen();
|
206 |
|
207 |
if ( 'appearance_page_themecheck' == $screen->id ) {
|
208 |
-
$
|
209 |
-
wp_enqueue_script( $this->slug . '-admin-script', $redux::$_url . 'inc/themecheck/js/admin.js', array( 'jquery' ), $this->version );
|
210 |
|
211 |
if ( ! isset( $_POST['themename'] ) ) {
|
212 |
|
66 |
*/
|
67 |
private function __construct() {
|
68 |
|
69 |
+
if ( ! class_exists( 'ThemeCheckMain' ) ) {
|
70 |
+
return;
|
71 |
+
}
|
72 |
+
|
73 |
// Load admin style sheet and JavaScript.
|
74 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
|
75 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
|
122 |
if ( self::$redux_details === null ) {
|
123 |
foreach ( $php_files as $php_key => $phpfile ) {
|
124 |
if ( strpos( $phpfile, 'class' . ' ReduxFramework {' ) !== false ) {
|
125 |
+
self::$redux_details = array(
|
126 |
'filename' => strtolower( basename( $php_key ) ),
|
127 |
'path' => $php_key,
|
128 |
);
|
129 |
+
self::$redux_details['dir'] = str_replace( basename( $php_key ), '', $php_key );
|
130 |
self::$redux_details['parent_dir'] = str_replace( basename( self::$redux_details['dir'] ) . '/', '', self::$redux_details['dir'] );
|
131 |
}
|
132 |
}
|
191 |
public function enqueue_admin_styles() {
|
192 |
$screen = get_current_screen();
|
193 |
if ( 'appearance_page_themecheck' == $screen->id ) {
|
194 |
+
wp_enqueue_style( $this->slug . '-admin-styles', ReduxFramework::$_url . 'inc/themecheck/css/admin.css', array(), $this->version );
|
|
|
|
|
|
|
|
|
195 |
}
|
196 |
}
|
197 |
|
205 |
$screen = get_current_screen();
|
206 |
|
207 |
if ( 'appearance_page_themecheck' == $screen->id ) {
|
208 |
+
wp_enqueue_script( $this->slug . '-admin-script', ReduxFramework::$_url . 'inc/themecheck/js/admin.js', array( 'jquery' ), $this->version );
|
|
|
209 |
|
210 |
if ( ! isset( $_POST['themename'] ) ) {
|
211 |
|
ReduxCore/inc/welcome/css/redux-welcome.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.about-wrap.redux-status .updated,.about-wrap.redux-status .error{margin-top:10px}.about-wrap.redux-status .updated.redux-message{display:block !important}.about-wrap.redux-status .redux-message{position:relative;border-left-color:#00A2E3 !important;overflow:hidden}.about-wrap.redux-status .redux-message a.skip,.about-wrap.redux-status .redux-message a.docs{opacity:0.5;text-decoration:none !important}.about-wrap.redux-status #debug-report{display:none;margin:10px 0;padding:0;position:relative}.about-wrap.redux-status #debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}.about-wrap.redux-status table.redux_status_table{margin-bottom:1em}.about-wrap.redux-status table.redux_status_table tr:nth-child(2n) th,.about-wrap.redux-status table.redux_status_table tr:nth-child(2n) td{background:#fcfcfc}.about-wrap.redux-status table.redux_status_table th{font-weight:700;padding:9px}.about-wrap.redux-status table.redux_status_table td:first-child{width:33%}.about-wrap.redux-status table.redux_status_table td.help{width:1em}.about-wrap.redux-status table.redux_status_table td{padding:9px}.about-wrap.redux-status table.redux_status_table td mark{background:transparent none}.about-wrap.redux-status table.redux_status_table td mark.yes{color:#7ad03a}.about-wrap.redux-status table.redux_status_table td mark.no{color:#999}.about-wrap.redux-status table.redux_status_table td mark.error{color:#a00}.about-wrap.redux-status table.redux_status_table td ul{margin:0}.about-wrap.redux-status table.redux_status_table .redux-hint-qtip{cursor:help}.about-wrap #footer-upgrade{display:none}.about-wrap .redux-badge{position:absolute;top:0;background:#00A2E3;padding:20px;color:#efefef;margin:5px 0 0 0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.2);box-shadow:0 1px 3px rgba(0,0,0,0.2)}.about-wrap .redux-badge:before{color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:80px;font-weight:normal;width:165px;height:165px;line-height:165px;text-align:center;position:absolute;top:0;margin:0;vertical-align:middle}.about-wrap .redux-badge .el{background:#00A2E3;display:block !important;font-size:8em;color:#fff;margin-bottom:30px}.about-wrap .redux-badge span{font-weight:600;font-size:14px;text-align:center;position:absolute;bottom:0;background:rgba(50,50,49,0.47);left:0;right:0;padding:8px}.about-wrap .redux-feature{overflow:visible !important;*zoom:1}.about-wrap .redux-feature:before,.about-wrap .redux-feature:after{content:" ";display:table}.about-wrap .redux-feature:after{clear:both}.about-wrap h3+.redux-feature{margin-top:0}.about-wrap .feature-rest div{width:50% !important;-moz-box-sizing:border-box;box-sizing:border-box;margin:0 !important}.about-wrap .feature-rest div.icon:before{font-weight:normal;width:100%;font-size:170px;line-height:125px;color:#9c5d90;display:inline-block;position:relative;text-align:center;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.about-wrap div.icon{width:0 !important;padding:0;margin:20px 0 !important}.about-wrap .about-integrations{background:#fff;margin:20px 0;padding:1px 20px 10px}.about-wrap .changelog h2{line-height:1.4;padding-bottom:0}.about-wrap .changelog .feature-section{padding-top:1.4em}.about-wrap .changelog .prettyprint{overflow-wrap:break-word}.about-wrap .changelog .gist-it-gist .gist-file{border:0 !important;background:0 !important}.about-wrap .changelog .gist-it-gist .gist-file .gist-data{border:0 !important;background:0 !important}.about-wrap .changelog .gist-it-gist .gist-file .gist-data pre{padding-top:10px !important;word-break:break-word}.about-wrap .theme-screenshot{color:#eee;transition:all 0.5s}.about-wrap .theme-screenshot:hover{color:#fff}.about-wrap .theme-screenshot i{text-align:center;display:block;margin:10px;font-size:90px;line-height:200px;transition:all 0.5s ease}.about-wrap .theme-browser .theme{transition:all 0.5s}.about-wrap .theme-browser .theme:hover .theme-screenshot i{transition:all 0.5s;font-size:120px}.about-wrap .theme-browser .theme .theme-screenshot:after{content:inherit;display:inherit;padding-top:inherit}.about-wrap .theme-screenshot figure{position:relative;overflow:hidden;cursor:pointer;margin:0}.about-wrap .theme-screenshot figure i{position:relative;display:block;font-size:11em;opacity:0.8}.about-wrap .theme-screenshot figure figcaption{padding:15px;color:#fff;text-transform:uppercase;font-size:1.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.about-wrap .theme-screenshot figure figcaption:before,.about-wrap .theme-screenshot figure figcaption:after{pointer-events:none}.about-wrap .theme-screenshot figure figcaption,.about-wrap .theme-screenshot figure figcaption>a{position:absolute;top:0;left:0;right:0;bottom:0}.about-wrap .theme-screenshot figure figcaption>a{z-index:1000;text-indent:200%;white-space:nowrap;font-size:0;opacity:0}.about-wrap .theme-screenshot figure p{margin:0;letter-spacing:1px;font-size:68.5%}.about-wrap .theme-screenshot figure i{opacity:0.7;-webkit-transition:opacity 0.35s;transition:opacity 0.35s}.about-wrap .theme:hover figcaption::before,.about-wrap .theme:hover figcaption::after{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.about-wrap .theme:hover i{opacity:0.3}.about-wrap .theme:hover p{opacity:1;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);text-shadow:2px 2px 1px rgba(0,0,0,0.3)}.about-wrap figure figcaption::before,.about-wrap figure figcaption::after{position:absolute;top:15px;right:15px;bottom:15px;left:15px;content:'';opacity:0;-webkit-transition:opacity 0.35s, -webkit-transform 0.35s;transition:opacity 0.35s, transform 0.35s}.about-wrap figure figcaption::before{border-top:1px solid #fff;border-bottom:1px solid #fff;-webkit-transform:scale(0, 1);transform:scale(0, 1)}.about-wrap figure figcaption::after{border-right:1px solid #fff;border-left:1px solid #fff;-webkit-transform:scale(1, 0);transform:scale(1, 0)}.about-wrap figure p{padding:10px;text-transform:none;opacity:0;margin-top:0 !important;-webkit-transition:opacity 0.35s, -webkit-transform 0.35s;transition:opacity 0.35s, transform 0.35s;-webkit-transform:translate3d(0, 20px, 0);transform:translate3d(0, 20px, 0)}.redux-message .twitter-share-button,p.redux-actions .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}.redux-message a.donate,.redux-message a.review-us,p.redux-actions a.donate,p.redux-actions a.review-us{opacity:.5;text-decoration:none !important}#redux-message{margin-top:15px !important;display:block !important;margin:5px 0 15px;border-color:#00A2E3}#redux-message h4{margin-top:.5em}@media only screen and (min-width: 2000px){#wpwrap .avada-demo-themes .theme{width:31%;margin:0 3% 3% 0}#wpwrap .avada-demo-themes .theme:nth-child(3n){margin-right:0}#wpwrap .theme-browser .theme:nth-child(4n),#wpwrap .theme-browser .theme:nth-child(5n){margin-right:3%}}@media screen and (max-width: 500px){.avada-wrap .avada-logo{display:block;position:relative;margin:0 auto 50px auto}.about-wrap h2 .nav-tab{width:100%;margin:0;padding:0;height:40px;line-height:40px;text-align:center;margin-bottom:10px;margin-top:10px}.about-wrap h2.nav-tab-wrapper{padding:0;width:100%}.avada-demo-themes .theme:hover .theme-actions{display:block !important;opacity:1 !important}.avada-demo-themes .theme:hover .screenshot-hover{display:none !important}}@media only screen and (max-width: 1120px){.theme-browser .theme:nth-child(odd){margin-right:5% !important}.theme-browser .theme{width:47.5% !important;margin-right:auto !important}}@media screen and (max-width: 620px){.theme-browser .theme{width:100% !important;margin-right:0}.avada-demo-themes .theme:hover .theme-actions{display:block !important;opacity:1 !important}.avada-demo-themes .theme:hover .screenshot-hover{display:none !important}}#support_div input.hash{text-align:center}#support_div .hide{display:none}#support_div .previous{opacity:.8}#support_div #supportform{margin-top:10px;text-align:center;position:relative}#support_div #supportform fieldset{background:white;border:0 none;border-radius:3px;box-shadow:0 0 15px 1px rgba(0,0,0,0.4);padding:20px 30px;box-sizing:border-box;width:86%;margin:0 7%;position:absolute}#support_div #supportform fieldset:not(:first-of-type){display:none}#support_div #supportform input,#support_div #supportform textarea{padding:15px;border:1px solid #ccc;border-radius:3px;margin-bottom:10px;width:100%;box-sizing:border-box;font-family:montserrat;color:#2C3E50;font-size:13px}#support_div #supportform input.checkbox{width:initial;margin-top:10px}#support_div #supportform .action-button{width:100px;background:#27AE60;font-weight:bold;color:white;border:0 none;border-radius:1px;cursor:pointer;padding:10px 5px;margin:10px 5px}#support_div #supportform .action-button:disabled{opacity:.5}#support_div #supportform .action-button:hover,#support_div #supportform .action-button:focus{box-shadow:0 0 0 2px white, 0 0 0 3px #27AE60}#support_div #supportform .fs-title{font-size:15px;text-transform:uppercase;color:#2C3E50;margin-bottom:10px}#support_div #supportform .fs-subtitle{font-weight:normal;font-size:13px;text-align:left;color:#666;margin-bottom:20px}#support_div #supportform #toDebug li{text-align:left;width:45%;float:left}#support_div #supportform #user_type{width:100%}#support_div #supportform #user_type td{cursor:pointer;width:50%}#support_div #supportform #user_type td i{font-size:130px;margin-bottom:10px}#support_div #supportform #user_type td:hover i{color:#176C8E}#support_div #supportform #user_type td small{line-height:2.5em;font-style:italic}#support_div #supportform #support_hash{text-align:center;word-break:break-all}#support_div .breadcrumb{display:inline-block;box-shadow:0 0 10px 1px rgba(0,0,0,0.35);overflow:hidden;border-radius:5px;margin:15px 0;counter-reset:flag}#support_div .breadcrumb li{text-decoration:none;outline:none;display:block;float:left;font-size:12px;transition:all 0.5s;width:auto;margin:0;line-height:36px;color:white;padding:0 10px 0 60px;background:#666;position:relative}#support_div .breadcrumb li:first-child{padding-left:46px;border-radius:5px 0 0 5px}#support_div .breadcrumb li:first-child:before{left:14px}#support_div .breadcrumb li:last-child{border-radius:0 5px 5px 0;padding-right:20px}#support_div .breadcrumb li:last-child:after{content:none}#support_div .breadcrumb li.active{background:#333}#support_div .breadcrumb li.active:after{background:#333}#support_div .breadcrumb li.active:before{background:#555}#support_div .breadcrumb li:after{content:'';position:absolute;top:0;right:-18px;width:36px;height:36px;transform:scale(0.707) rotate(45deg);z-index:1;background:#666;box-shadow:2px -2px 0 2px rgba(0,0,0,0.4),3px -3px 0 2px rgba(255,255,255,0.1);border-radius:0 5px 0 50px;transition:all 0.5s}#support_div .breadcrumb li:before{transition:all 0.5s;content:counter(flag);counter-increment:flag;border-radius:100%;width:20px;height:20px;line-height:20px;margin:8px 0;position:absolute;top:0;left:30px;background:#444;font-weight:bold}
|
1 |
+
.about-wrap.redux-status .updated,.about-wrap.redux-status .error{margin-top:10px}.about-wrap.redux-status .updated.redux-message{display:block !important}.about-wrap.redux-status .redux-message{position:relative;border-left-color:#00A2E3 !important;overflow:hidden}.about-wrap.redux-status .redux-message a.skip,.about-wrap.redux-status .redux-message a.docs{opacity:0.5;text-decoration:none !important}.about-wrap.redux-status #debug-report{display:none;margin:10px 0;padding:0;position:relative}.about-wrap.redux-status #debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}.about-wrap.redux-status table.redux_status_table{margin-bottom:1em}.about-wrap.redux-status table.redux_status_table tr:nth-child(2n) th,.about-wrap.redux-status table.redux_status_table tr:nth-child(2n) td{background:#fcfcfc}.about-wrap.redux-status table.redux_status_table th{font-weight:700;padding:9px}.about-wrap.redux-status table.redux_status_table td:first-child{width:33%}.about-wrap.redux-status table.redux_status_table td.help{width:1em}.about-wrap.redux-status table.redux_status_table td{padding:9px}.about-wrap.redux-status table.redux_status_table td mark{background:transparent none}.about-wrap.redux-status table.redux_status_table td mark.yes{color:#7ad03a}.about-wrap.redux-status table.redux_status_table td mark.no{color:#999}.about-wrap.redux-status table.redux_status_table td mark.error{color:#a00}.about-wrap.redux-status table.redux_status_table td ul{margin:0}.about-wrap.redux-status table.redux_status_table .redux-hint-qtip{cursor:help}.about-wrap #footer-upgrade{display:none}.about-wrap .redux-badge{position:absolute;top:0;background:#00A2E3;padding:20px;color:#efefef;margin:5px 0 0 0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.2);box-shadow:0 1px 3px rgba(0,0,0,0.2)}.about-wrap .redux-badge:before{color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:80px;font-weight:normal;width:165px;height:165px;line-height:165px;text-align:center;position:absolute;top:0;margin:0;vertical-align:middle}.about-wrap .redux-badge .el{background:#00A2E3;display:block !important;font-size:8em;color:#fff;margin-bottom:30px}.about-wrap .redux-badge span{font-weight:600;font-size:14px;text-align:center;position:absolute;bottom:0;background:rgba(50,50,49,0.47);left:0;right:0;padding:8px}.about-wrap .redux-feature{overflow:visible !important;*zoom:1}.about-wrap .redux-feature:before,.about-wrap .redux-feature:after{content:" ";display:table}.about-wrap .redux-feature:after{clear:both}.about-wrap h3+.redux-feature{margin-top:0}.about-wrap .feature-rest div{width:50% !important;-moz-box-sizing:border-box;box-sizing:border-box;margin:0 !important}.about-wrap .feature-rest div.icon:before{font-weight:normal;width:100%;font-size:170px;line-height:125px;color:#9c5d90;display:inline-block;position:relative;text-align:center;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.about-wrap div.icon{width:0 !important;padding:0;margin:20px 0 !important}.about-wrap .about-integrations{background:#fff;margin:20px 0;padding:1px 20px 10px}.about-wrap .changelog h2{line-height:1.4;padding-bottom:0}.about-wrap .changelog .feature-section{padding-top:1.4em}.about-wrap .changelog .prettyprint{overflow-wrap:break-word}.about-wrap .changelog .gist-it-gist .gist-file{border:0 !important;background:0 !important}.about-wrap .changelog .gist-it-gist .gist-file .gist-data{border:0 !important;background:0 !important}.about-wrap .changelog .gist-it-gist .gist-file .gist-data pre{padding-top:10px !important;word-break:break-word}.about-wrap .theme-screenshot{color:#eee;transition:all 0.5s}.about-wrap .theme-screenshot:hover{color:#fff}.about-wrap .theme-screenshot i{text-align:center;display:block;margin:10px;font-size:90px;line-height:200px;transition:all 0.5s ease}.about-wrap .theme-browser .theme{transition:all 0.5s}.about-wrap .theme-browser .theme:hover .theme-screenshot i{transition:all 0.5s;font-size:120px}.about-wrap .theme-browser .theme .theme-screenshot:after{content:inherit;display:inherit;padding-top:inherit}.about-wrap .theme-screenshot figure{position:relative;overflow:hidden;cursor:pointer;margin:0}.about-wrap .theme-screenshot figure i{position:relative;display:block;font-size:11em;opacity:0.8}.about-wrap .theme-screenshot figure figcaption{padding:15px;color:#fff;text-transform:uppercase;font-size:1.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.about-wrap .theme-screenshot figure figcaption:before,.about-wrap .theme-screenshot figure figcaption:after{pointer-events:none}.about-wrap .theme-screenshot figure figcaption,.about-wrap .theme-screenshot figure figcaption>a{position:absolute;top:0;left:0;right:0;bottom:0}.about-wrap .theme-screenshot figure figcaption>a{z-index:1000;text-indent:200%;white-space:nowrap;font-size:0;opacity:0}.about-wrap .theme-screenshot figure p{margin:0;letter-spacing:1px;font-size:68.5%}.about-wrap .theme-screenshot figure i{opacity:0.7;-webkit-transition:opacity 0.35s;transition:opacity 0.35s}.about-wrap .theme:hover figcaption::before,.about-wrap .theme:hover figcaption::after{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.about-wrap .theme:hover i{opacity:0.3}.about-wrap .theme:hover p{opacity:1;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);text-shadow:2px 2px 1px rgba(0,0,0,0.3)}.about-wrap figure figcaption::before,.about-wrap figure figcaption::after{position:absolute;top:15px;right:15px;bottom:15px;left:15px;content:'';opacity:0;-webkit-transition:opacity 0.35s, -webkit-transform 0.35s;transition:opacity 0.35s, transform 0.35s}.about-wrap figure figcaption::before{border-top:1px solid #fff;border-bottom:1px solid #fff;-webkit-transform:scale(0, 1);transform:scale(0, 1)}.about-wrap figure figcaption::after{border-right:1px solid #fff;border-left:1px solid #fff;-webkit-transform:scale(1, 0);transform:scale(1, 0)}.about-wrap figure p{padding:10px;text-transform:none;opacity:0;margin-top:0 !important;-webkit-transition:opacity 0.35s, -webkit-transform 0.35s;transition:opacity 0.35s, transform 0.35s;-webkit-transform:translate3d(0, 20px, 0);transform:translate3d(0, 20px, 0)}.redux-message .twitter-share-button,p.redux-actions .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}.redux-message a.donate,.redux-message a.review-us,p.redux-actions a.donate,p.redux-actions a.review-us{opacity:.5;text-decoration:none !important}#redux-message{margin-top:15px !important;display:block !important;margin:5px 0 15px;border-color:#00A2E3}#redux-message h4{margin-top:.5em}@media only screen and (min-width: 2000px){#wpwrap .theme-browser .theme:nth-child(4n),#wpwrap .theme-browser .theme:nth-child(5n){margin-right:3%}}@media screen and (max-width: 500px){.about-wrap h2 .nav-tab{width:100%;margin:0;padding:0;height:40px;line-height:40px;text-align:center;margin-bottom:10px;margin-top:10px}.about-wrap h2.nav-tab-wrapper{padding:0;width:100%}}@media only screen and (max-width: 1120px){.theme-browser .theme:nth-child(odd){margin-right:5% !important}.theme-browser .theme{width:47.5% !important;margin-right:auto !important}}@media screen and (max-width: 620px){.theme-browser .theme{width:100% !important;margin-right:0}}#support_div input.hash{text-align:center}#support_div .hide{display:none}#support_div .previous{opacity:.8}#support_div #supportform{margin-top:10px;text-align:center;position:relative}#support_div #supportform fieldset{background:white;border:0 none;border-radius:3px;box-shadow:0 0 15px 1px rgba(0,0,0,0.4);padding:20px 30px;box-sizing:border-box;width:86%;margin:0 7%;position:absolute}#support_div #supportform fieldset:not(:first-of-type){display:none}#support_div #supportform input,#support_div #supportform textarea{padding:15px;border:1px solid #ccc;border-radius:3px;margin-bottom:10px;width:100%;box-sizing:border-box;font-family:montserrat;color:#2C3E50;font-size:13px}#support_div #supportform input.checkbox{width:initial;margin-top:10px}#support_div #supportform .action-button{width:100px;background:#27AE60;font-weight:bold;color:white;border:0 none;border-radius:1px;cursor:pointer;padding:10px 5px;margin:10px 5px}#support_div #supportform .action-button:disabled{opacity:.5}#support_div #supportform .action-button:hover,#support_div #supportform .action-button:focus{box-shadow:0 0 0 2px white, 0 0 0 3px #27AE60}#support_div #supportform .fs-title{font-size:15px;text-transform:uppercase;color:#2C3E50;margin-bottom:10px}#support_div #supportform .fs-subtitle{font-weight:normal;font-size:13px;text-align:left;color:#666;margin-bottom:20px}#support_div #supportform #toDebug li{text-align:left;width:45%;float:left}#support_div #supportform #user_type{width:100%}#support_div #supportform #user_type td{cursor:pointer;width:50%}#support_div #supportform #user_type td i{font-size:130px;margin-bottom:10px}#support_div #supportform #user_type td:hover i{color:#176C8E}#support_div #supportform #user_type td small{line-height:2.5em;font-style:italic}#support_div #supportform #support_hash{text-align:center;word-break:break-all}#support_div .breadcrumb{display:inline-block;box-shadow:0 0 10px 1px rgba(0,0,0,0.35);overflow:hidden;border-radius:5px;margin:15px 0;counter-reset:flag}#support_div .breadcrumb li{text-decoration:none;outline:none;display:block;float:left;font-size:12px;transition:all 0.5s;width:auto;margin:0;line-height:36px;color:white;padding:0 10px 0 60px;background:#666;position:relative}#support_div .breadcrumb li:first-child{padding-left:46px;border-radius:5px 0 0 5px}#support_div .breadcrumb li:first-child:before{left:14px}#support_div .breadcrumb li:last-child{border-radius:0 5px 5px 0;padding-right:20px}#support_div .breadcrumb li:last-child:after{content:none}#support_div .breadcrumb li.active{background:#333}#support_div .breadcrumb li.active:after{background:#333}#support_div .breadcrumb li.active:before{background:#555}#support_div .breadcrumb li:after{content:'';position:absolute;top:0;right:-18px;width:36px;height:36px;transform:scale(0.707) rotate(45deg);z-index:1;background:#666;box-shadow:2px -2px 0 2px rgba(0,0,0,0.4),3px -3px 0 2px rgba(255,255,255,0.1);border-radius:0 5px 0 50px;transition:all 0.5s}#support_div .breadcrumb li:before{transition:all 0.5s;content:counter(flag);counter-increment:flag;border-radius:100%;width:20px;height:20px;line-height:20px;margin:8px 0;position:absolute;top:0;left:30px;background:#444;font-weight:bold}
|
ReduxCore/inc/welcome/css/redux-welcome.scss
CHANGED
@@ -435,15 +435,6 @@ p.redux-actions {
|
|
435 |
}
|
436 |
|
437 |
@media only screen and (min-width: 2000px) {
|
438 |
-
#wpwrap .avada-demo-themes .theme {
|
439 |
-
width: 31%;
|
440 |
-
margin: 0 3% 3% 0;
|
441 |
-
}
|
442 |
-
|
443 |
-
#wpwrap .avada-demo-themes .theme:nth-child(3n) {
|
444 |
-
margin-right: 0;
|
445 |
-
}
|
446 |
-
|
447 |
#wpwrap .theme-browser .theme:nth-child(4n),
|
448 |
#wpwrap .theme-browser .theme:nth-child(5n) {
|
449 |
margin-right: 3%;
|
@@ -451,12 +442,6 @@ p.redux-actions {
|
|
451 |
}
|
452 |
|
453 |
@media screen and (max-width: 500px) {
|
454 |
-
.avada-wrap .avada-logo {
|
455 |
-
display: block;
|
456 |
-
position: relative;
|
457 |
-
margin: 0 auto 50px auto;
|
458 |
-
}
|
459 |
-
|
460 |
.about-wrap h2 .nav-tab {
|
461 |
width: 100%;
|
462 |
margin: 0;
|
@@ -472,15 +457,6 @@ p.redux-actions {
|
|
472 |
padding: 0;
|
473 |
width: 100%;
|
474 |
}
|
475 |
-
|
476 |
-
.avada-demo-themes .theme:hover .theme-actions {
|
477 |
-
display: block !important;
|
478 |
-
opacity: 1 !important;
|
479 |
-
}
|
480 |
-
|
481 |
-
.avada-demo-themes .theme:hover .screenshot-hover {
|
482 |
-
display: none !important;
|
483 |
-
}
|
484 |
}
|
485 |
|
486 |
@media only screen and (max-width: 1120px) {
|
@@ -499,15 +475,6 @@ p.redux-actions {
|
|
499 |
width: 100% !important;
|
500 |
margin-right: 0;
|
501 |
}
|
502 |
-
|
503 |
-
.avada-demo-themes .theme:hover .theme-actions {
|
504 |
-
display: block !important;
|
505 |
-
opacity: 1 !important;
|
506 |
-
}
|
507 |
-
|
508 |
-
.avada-demo-themes .theme:hover .screenshot-hover {
|
509 |
-
display: none !important;
|
510 |
-
}
|
511 |
}
|
512 |
|
513 |
#support_div {
|
435 |
}
|
436 |
|
437 |
@media only screen and (min-width: 2000px) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
438 |
#wpwrap .theme-browser .theme:nth-child(4n),
|
439 |
#wpwrap .theme-browser .theme:nth-child(5n) {
|
440 |
margin-right: 3%;
|
442 |
}
|
443 |
|
444 |
@media screen and (max-width: 500px) {
|
|
|
|
|
|
|
|
|
|
|
|
|
445 |
.about-wrap h2 .nav-tab {
|
446 |
width: 100%;
|
447 |
margin: 0;
|
457 |
padding: 0;
|
458 |
width: 100%;
|
459 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
460 |
}
|
461 |
|
462 |
@media only screen and (max-width: 1120px) {
|
475 |
width: 100% !important;
|
476 |
margin-right: 0;
|
477 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
478 |
}
|
479 |
|
480 |
#support_div {
|
ReduxCore/templates/panel/content.tpl.php
CHANGED
@@ -66,7 +66,9 @@
|
|
66 |
}
|
67 |
|
68 |
if ( $display ) {
|
|
|
69 |
$this->output_section( $k );
|
|
|
70 |
}
|
71 |
//}
|
72 |
?></div><?php
|
66 |
}
|
67 |
|
68 |
if ( $display ) {
|
69 |
+
do_action( "redux/page/{$this->parent->args['opt_name']}/section/before", $section );
|
70 |
$this->output_section( $k );
|
71 |
+
do_action( "redux/page/{$this->parent->args['opt_name']}/section/after", $section );
|
72 |
}
|
73 |
//}
|
74 |
?></div><?php
|
class.redux-plugin.php
CHANGED
@@ -26,7 +26,7 @@
|
|
26 |
* @since 3.0.0
|
27 |
*/
|
28 |
|
29 |
-
const VERSION = '3.5.
|
30 |
|
31 |
/**
|
32 |
* @access protected
|
@@ -323,8 +323,8 @@
|
|
323 |
*/
|
324 |
public function admin_notices() {
|
325 |
do_action( 'ReduxFrameworkPlugin_admin_notice' );
|
326 |
-
|
327 |
-
if ( $notices
|
328 |
foreach ( $notices as $notice ) {
|
329 |
echo '<div class="updated notice is-dismissible"><p>' . $notice . '</p></div>';
|
330 |
}
|
26 |
* @since 3.0.0
|
27 |
*/
|
28 |
|
29 |
+
const VERSION = '3.5.6';
|
30 |
|
31 |
/**
|
32 |
* @access protected
|
323 |
*/
|
324 |
public function admin_notices() {
|
325 |
do_action( 'ReduxFrameworkPlugin_admin_notice' );
|
326 |
+
$notices = get_option( 'ReduxFrameworkPlugin_ACTIVATED_NOTICES', '' );
|
327 |
+
if ( !empty( $notices ) ) {
|
328 |
foreach ( $notices as $notice ) {
|
329 |
echo '<div class="updated notice is-dismissible"><p>' . $notice . '</p></div>';
|
330 |
}
|
composer.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
{
|
2 |
"name": "redux-framework/redux-framework",
|
3 |
-
"version": "3.5.
|
4 |
"authors": [
|
5 |
{
|
6 |
"name": "Team Redux"
|
1 |
{
|
2 |
"name": "redux-framework/redux-framework",
|
3 |
+
"version": "3.5.6",
|
4 |
"authors": [
|
5 |
{
|
6 |
"name": "Team Redux"
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: http://ideas.reduxframework.com
|
|
4 |
Tags: admin, admin interface, options, theme options, plugin options, options framework, settings, web fonts, google fonts
|
5 |
Requires at least: 3.5.1
|
6 |
Tested up to: 4.3
|
7 |
-
Stable tag: 3.5.
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -125,6 +125,28 @@ That's because the real FAQ section is on our site! Please visit [http://docs.re
|
|
125 |
|
126 |
== Changelog ==
|
127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
= 3.5.5 =
|
129 |
* Fixed: Date-time fixes with CSS overloading and positioning.
|
130 |
* Added: Lite support for https://wordpress.org/plugins/plugin-dependencies/
|
4 |
Tags: admin, admin interface, options, theme options, plugin options, options framework, settings, web fonts, google fonts
|
5 |
Requires at least: 3.5.1
|
6 |
Tested up to: 4.3
|
7 |
+
Stable tag: 3.5.6
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
125 |
|
126 |
== Changelog ==
|
127 |
|
128 |
+
## 3.5.6
|
129 |
+
* Fixed Customizer WP 4.3 final fixes.
|
130 |
+
* Fixed #2500 - Conflict with outdated select2 in JW Player plugin.
|
131 |
+
* Modified: icon_type no longer needed for section icons. Now detects if URLs are provided for images.
|
132 |
+
* Fixed: Various customizer fixes. HTML in the customizer title.
|
133 |
+
* Modified: Media URL now is 95% wide.
|
134 |
+
* Modified: Select2 now 100% width instead of just resolve (that doesn't always work).
|
135 |
+
* Modified: Field enqueue method to allow for more flexibility.
|
136 |
+
* Added: Support for Airplane Mode plugin (https://github.com/norcross/airplane-mode) by @norcross. Thanks @chriscct7 #2463
|
137 |
+
* Fixed: Undefined index in theme-check enhancements. Thanks @winwinwebdesign!
|
138 |
+
* Removed: SASS compiler & code. Note needed.
|
139 |
+
* Fixed: Color transparency live-update for Customizer for color, background,
|
140 |
+
and color gradient fields.
|
141 |
+
* Fixed: Undefined index when removing a section.
|
142 |
+
* Fixed: Typography bug onload always saying settings have changed.
|
143 |
+
* Modified: Added minified customizer JS.
|
144 |
+
* Fixed: Redux CUSTOMIZER! YEA!
|
145 |
+
* Fixed: Small echo in Redux API
|
146 |
+
|
147 |
+
= 3.5.5.1 =
|
148 |
+
* Fixed: Sigh, PHP 5.2 issues.
|
149 |
+
|
150 |
= 3.5.5 =
|
151 |
* Fixed: Date-time fixes with CSS overloading and positioning.
|
152 |
* Added: Lite support for https://wordpress.org/plugins/plugin-dependencies/
|
redux-framework.php
CHANGED
@@ -12,7 +12,7 @@
|
|
12 |
* Description: Redux is a simple, truly extensible options framework for WordPress themes and plugins.
|
13 |
* Author: Team Redux
|
14 |
* Author URI: http://reduxframework.com
|
15 |
-
* Version: 3.5.
|
16 |
* Text Domain: redux-framework
|
17 |
* License: GPL3+
|
18 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
12 |
* Description: Redux is a simple, truly extensible options framework for WordPress themes and plugins.
|
13 |
* Author: Team Redux
|
14 |
* Author URI: http://reduxframework.com
|
15 |
+
* Version: 3.5.6
|
16 |
* Text Domain: redux-framework
|
17 |
* License: GPL3+
|
18 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
sample/sample-config.php
CHANGED
@@ -280,7 +280,7 @@
|
|
280 |
Redux::setSection( $opt_name, array(
|
281 |
'title' => __( 'Basic Fields', 'redux-framework-demo' ),
|
282 |
'id' => 'basic',
|
283 |
-
'desc' => __( '', 'redux-framework-demo' ),
|
284 |
'customizer_width' => '400px',
|
285 |
'icon' => 'el el-home'
|
286 |
) );
|
@@ -290,7 +290,7 @@
|
|
290 |
'id' => 'basic-checkbox',
|
291 |
'subsection' => true,
|
292 |
'customizer_width' => '450px',
|
293 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/checkbox/" target="_blank"
|
294 |
'fields' => array(
|
295 |
array(
|
296 |
'id' => 'opt-checkbox',
|
@@ -342,7 +342,7 @@
|
|
342 |
'id' => 'basic-Radio',
|
343 |
'subsection' => true,
|
344 |
'customizer_width' => '500px',
|
345 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/radio/" target="_blank"
|
346 |
'fields' => array(
|
347 |
array(
|
348 |
'id' => 'opt-radio',
|
@@ -372,7 +372,7 @@
|
|
372 |
'title' => __( 'Sortable', 'redux-framework-demo' ),
|
373 |
'id' => 'basic-Sortable',
|
374 |
'subsection' => true,
|
375 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/sortable/" target="_blank"
|
376 |
'fields' => array(
|
377 |
array(
|
378 |
'id' => 'opt-sortable',
|
@@ -411,7 +411,7 @@
|
|
411 |
|
412 |
Redux::setSection( $opt_name, array(
|
413 |
'title' => __( 'Text', 'redux-framework-demo' ),
|
414 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/text/" target="_blank"
|
415 |
'id' => 'basic-Text',
|
416 |
'subsection' => true,
|
417 |
'customizer_width' => '700px',
|
@@ -451,7 +451,7 @@
|
|
451 |
Redux::setSection( $opt_name, array(
|
452 |
'title' => __( 'Multi Text', 'redux-framework-demo' ),
|
453 |
'id' => 'basic-Multi Text',
|
454 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/multi-text/" target="_blank"
|
455 |
'subsection' => true,
|
456 |
'fields' => array(
|
457 |
array(
|
@@ -466,7 +466,7 @@
|
|
466 |
Redux::setSection( $opt_name, array(
|
467 |
'title' => __( 'Password', 'redux-framework-demo' ),
|
468 |
'id' => 'basic-Password',
|
469 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/password/" target="_blank"
|
470 |
'subsection' => true,
|
471 |
'fields' => array(
|
472 |
array(
|
@@ -485,7 +485,7 @@
|
|
485 |
Redux::setSection( $opt_name, array(
|
486 |
'title' => __( 'Textarea', 'redux-framework-demo' ),
|
487 |
'id' => 'basic-Textarea',
|
488 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/textarea/" target="_blank"
|
489 |
'subsection' => true,
|
490 |
'fields' => array(
|
491 |
array(
|
@@ -511,7 +511,7 @@
|
|
511 |
'title' => __( 'WordPress Editor', 'redux-framework-demo' ),
|
512 |
'id' => 'editor-wordpress',
|
513 |
//'icon' => 'el el-home'
|
514 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/editor/" target="_blank"
|
515 |
'subsection' => true,
|
516 |
'fields' => array(
|
517 |
array(
|
@@ -544,7 +544,7 @@
|
|
544 |
'full_width' => true
|
545 |
),
|
546 |
),
|
547 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/editor/" target="_blank"
|
548 |
) );
|
549 |
|
550 |
Redux::setSection( $opt_name, array(
|
@@ -552,7 +552,7 @@
|
|
552 |
'id' => 'editor-ace',
|
553 |
//'icon' => 'el el-home'
|
554 |
'subsection' => true,
|
555 |
-
'desc' => __( 'For full documentation on the this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/ace-editor/" target="_blank"
|
556 |
'fields' => array(
|
557 |
array(
|
558 |
'id' => 'opt-ace-editor-css',
|
@@ -602,7 +602,7 @@
|
|
602 |
Redux::setSection( $opt_name, array(
|
603 |
'title' => __( 'Color', 'redux-framework-demo' ),
|
604 |
'id' => 'color-Color',
|
605 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/color/" target="_blank"
|
606 |
'subsection' => true,
|
607 |
'fields' => array(
|
608 |
array(
|
@@ -625,7 +625,7 @@
|
|
625 |
) );
|
626 |
Redux::setSection( $opt_name, array(
|
627 |
'title' => __( 'Color Gradient', 'redux-framework-demo' ),
|
628 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/color-gradient/" target="_blank"
|
629 |
'id' => 'color-gradient',
|
630 |
'subsection' => true,
|
631 |
'fields' => array(
|
@@ -644,7 +644,7 @@
|
|
644 |
) );
|
645 |
Redux::setSection( $opt_name, array(
|
646 |
'title' => __( 'Color RGBA', 'redux-framework-demo' ),
|
647 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/color-rgba/" target="_blank"
|
648 |
'id' => 'color-rgba',
|
649 |
'subsection' => true,
|
650 |
'fields' => array(
|
@@ -665,7 +665,7 @@
|
|
665 |
) );
|
666 |
Redux::setSection( $opt_name, array(
|
667 |
'title' => __( 'Link Color', 'redux-framework-demo' ),
|
668 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/link-color/" target="_blank"
|
669 |
'id' => 'color-link',
|
670 |
'subsection' => true,
|
671 |
'fields' => array(
|
@@ -690,7 +690,7 @@
|
|
690 |
|
691 |
Redux::setSection( $opt_name, array(
|
692 |
'title' => __( 'Palette Colors', 'redux-framework-demo' ),
|
693 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/palette-color/" target="_blank"
|
694 |
'id' => 'color-palette',
|
695 |
'subsection' => true,
|
696 |
'fields' => array(
|
@@ -750,13 +750,13 @@
|
|
750 |
),
|
751 |
|
752 |
),
|
753 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/background/" target="_blank"
|
754 |
) );
|
755 |
|
756 |
Redux::setSection( $opt_name, array(
|
757 |
'title' => __( 'Border', 'redux-framework-demo' ),
|
758 |
'id' => 'design-border',
|
759 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/border/" target="_blank"
|
760 |
'subsection' => true,
|
761 |
'fields' => array(
|
762 |
array(
|
@@ -800,7 +800,7 @@
|
|
800 |
Redux::setSection( $opt_name, array(
|
801 |
'title' => __( 'Dimensions', 'redux-framework-demo' ),
|
802 |
'id' => 'design-dimensions',
|
803 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/dimensions/" target="_blank"
|
804 |
'subsection' => true,
|
805 |
'fields' => array(
|
806 |
array(
|
@@ -836,7 +836,7 @@
|
|
836 |
Redux::setSection( $opt_name, array(
|
837 |
'title' => __( 'Spacing', 'redux-framework-demo' ),
|
838 |
'id' => 'design-spacing',
|
839 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/spacing/" target="_blank"
|
840 |
'subsection' => true,
|
841 |
'fields' => array(
|
842 |
|
@@ -906,7 +906,7 @@
|
|
906 |
Redux::setSection( $opt_name, array(
|
907 |
'title' => __( 'Gallery', 'redux-framework-demo' ),
|
908 |
'id' => 'media-gallery',
|
909 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/gallery/" target="_blank"
|
910 |
'subsection' => true,
|
911 |
'fields' => array(
|
912 |
array(
|
@@ -922,7 +922,7 @@
|
|
922 |
Redux::setSection( $opt_name, array(
|
923 |
'title' => __( 'Media', 'redux-framework-demo' ),
|
924 |
'id' => 'media-media',
|
925 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/media/" target="_blank"
|
926 |
'subsection' => true,
|
927 |
'fields' => array(
|
928 |
array(
|
@@ -975,7 +975,7 @@
|
|
975 |
Redux::setSection( $opt_name, array(
|
976 |
'title' => __( 'Slides', 'redux-framework-demo' ),
|
977 |
'id' => 'additional-slides',
|
978 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/slides/" target="_blank"
|
979 |
'subsection' => true,
|
980 |
'fields' => array(
|
981 |
array(
|
@@ -1004,7 +1004,7 @@
|
|
1004 |
Redux::setSection( $opt_name, array(
|
1005 |
'title' => __( 'Divide', 'redux-framework-demo' ),
|
1006 |
'id' => 'presentation-divide',
|
1007 |
-
'desc' => __( 'The spacer to the section menu as seen to the left (after this section block) is the divide "section". Also the divider below is the divide "field".', 'redux-framework-demo' ) . '<br />' . __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/divide/" target="_blank"
|
1008 |
'subsection' => true,
|
1009 |
'fields' => array(
|
1010 |
array(
|
@@ -1017,7 +1017,7 @@
|
|
1017 |
Redux::setSection( $opt_name, array(
|
1018 |
'title' => __( 'Info', 'redux-framework-demo' ),
|
1019 |
'id' => 'presentation-info',
|
1020 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/info/" target="_blank"
|
1021 |
'subsection' => true,
|
1022 |
'fields' => array(
|
1023 |
array(
|
@@ -1112,7 +1112,7 @@
|
|
1112 |
Redux::setSection( $opt_name, array(
|
1113 |
'title' => __( 'Section', 'redux-framework-demo' ),
|
1114 |
'id' => 'presentation-section',
|
1115 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/section/" target="_blank"
|
1116 |
'subsection' => true,
|
1117 |
'fields' => array(
|
1118 |
array(
|
@@ -1162,7 +1162,7 @@
|
|
1162 |
Redux::setSection( $opt_name, array(
|
1163 |
'title' => __( 'Button Set', 'redux-framework-demo' ),
|
1164 |
'id' => 'switch_buttonset-set',
|
1165 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/button-set/" target="_blank"
|
1166 |
'subsection' => true,
|
1167 |
'fields' => array(
|
1168 |
array(
|
@@ -1201,7 +1201,7 @@
|
|
1201 |
Redux::setSection( $opt_name, array(
|
1202 |
'title' => __( 'Switch', 'redux-framework-demo' ),
|
1203 |
'id' => 'switch_buttonset-switch',
|
1204 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/switch/" target="_blank"
|
1205 |
'subsection' => true,
|
1206 |
'fields' => array(
|
1207 |
|
@@ -1260,7 +1260,7 @@
|
|
1260 |
Redux::setSection( $opt_name, array(
|
1261 |
'title' => __( 'Select', 'redux-framework-demo' ),
|
1262 |
'id' => 'select-select',
|
1263 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/select/" target="_blank"
|
1264 |
'subsection' => true,
|
1265 |
'fields' => array(
|
1266 |
|
@@ -1485,7 +1485,7 @@
|
|
1485 |
Redux::setSection( $opt_name, array(
|
1486 |
'title' => __( 'Image Select', 'redux-framework-demo' ),
|
1487 |
'id' => 'select-image_select',
|
1488 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/image-select/" target="_blank"
|
1489 |
'subsection' => true,
|
1490 |
'fields' => array(
|
1491 |
|
@@ -1580,7 +1580,7 @@
|
|
1580 |
Redux::setSection( $opt_name, array(
|
1581 |
'title' => __( 'Select Image', 'redux-framework-demo' ),
|
1582 |
'id' => 'select-select_image',
|
1583 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/select-image/" target="_blank"
|
1584 |
'subsection' => true,
|
1585 |
'fields' => array(
|
1586 |
array(
|
@@ -1614,7 +1614,7 @@
|
|
1614 |
Redux::setSection( $opt_name, array(
|
1615 |
'title' => __( 'Slider', 'redux-framework-demo' ),
|
1616 |
'id' => 'slider_spinner-slider',
|
1617 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/slider/" target="_blank"
|
1618 |
'fields' => array(
|
1619 |
|
1620 |
array(
|
@@ -1678,7 +1678,7 @@
|
|
1678 |
Redux::setSection( $opt_name, array(
|
1679 |
'title' => __( 'Spinner', 'redux-framework-demo' ),
|
1680 |
'id' => 'slider_spinner-spinner',
|
1681 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/spinner/" target="_blank"
|
1682 |
'subsection' => true,
|
1683 |
'fields' => array(
|
1684 |
array(
|
@@ -1698,7 +1698,7 @@
|
|
1698 |
Redux::setSection( $opt_name, array(
|
1699 |
'title' => __( 'Typography', 'redux-framework-demo' ),
|
1700 |
'id' => 'typography',
|
1701 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/typography/" target="_blank"
|
1702 |
'icon' => 'el el-font',
|
1703 |
'fields' => array(
|
1704 |
array(
|
@@ -1780,7 +1780,7 @@
|
|
1780 |
Redux::setSection( $opt_name, array(
|
1781 |
'title' => __( 'Date', 'redux-framework-demo' ),
|
1782 |
'id' => 'additional-date',
|
1783 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/date/" target="_blank"
|
1784 |
'subsection' => true,
|
1785 |
'fields' => array(
|
1786 |
array(
|
@@ -1796,7 +1796,7 @@
|
|
1796 |
Redux::setSection( $opt_name, array(
|
1797 |
'title' => __( 'Sorter', 'redux-framework-demo' ),
|
1798 |
'id' => 'additional-sorter',
|
1799 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/sorter/" target="_blank"
|
1800 |
'subsection' => true,
|
1801 |
'fields' => array(
|
1802 |
array(
|
@@ -1844,7 +1844,7 @@
|
|
1844 |
Redux::setSection( $opt_name, array(
|
1845 |
'title' => __( 'Raw', 'redux-framework-demo' ),
|
1846 |
'id' => 'additional-raw',
|
1847 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/raw/" target="_blank"
|
1848 |
'subsection' => true,
|
1849 |
'fields' => array(
|
1850 |
array(
|
@@ -1876,7 +1876,7 @@
|
|
1876 |
Redux::setSection( $opt_name, array(
|
1877 |
'title' => __( 'Callback', 'redux-framework-demo' ),
|
1878 |
'id' => 'additional-callback',
|
1879 |
-
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/callback/" target="_blank"
|
1880 |
'subsection' => true,
|
1881 |
'fields' => array(
|
1882 |
array(
|
@@ -1894,7 +1894,7 @@
|
|
1894 |
Redux::setSection( $opt_name, array(
|
1895 |
'title' => __( 'Field Validation', 'redux-framework-demo' ),
|
1896 |
'id' => 'validation',
|
1897 |
-
'desc' => __( 'For full documentation on validation, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/the-basics/validation/" target="_blank"
|
1898 |
'subsection' => true,
|
1899 |
'fields' => array(
|
1900 |
array(
|
@@ -2060,7 +2060,7 @@
|
|
2060 |
Redux::setSection( $opt_name, array(
|
2061 |
'title' => __( 'Field Required / Linking', 'redux-framework-demo' ),
|
2062 |
'id' => 'required',
|
2063 |
-
'desc' => __( 'For full documentation on validation, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/the-basics/required/" target="_blank"
|
2064 |
'subsection' => true,
|
2065 |
'fields' => array(
|
2066 |
array(
|
280 |
Redux::setSection( $opt_name, array(
|
281 |
'title' => __( 'Basic Fields', 'redux-framework-demo' ),
|
282 |
'id' => 'basic',
|
283 |
+
'desc' => __( 'These are really basic fields!', 'redux-framework-demo' ),
|
284 |
'customizer_width' => '400px',
|
285 |
'icon' => 'el el-home'
|
286 |
) );
|
290 |
'id' => 'basic-checkbox',
|
291 |
'subsection' => true,
|
292 |
'customizer_width' => '450px',
|
293 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/checkbox/" target="_blank">docs.reduxframework.com/core/fields/checkbox/</a>',
|
294 |
'fields' => array(
|
295 |
array(
|
296 |
'id' => 'opt-checkbox',
|
342 |
'id' => 'basic-Radio',
|
343 |
'subsection' => true,
|
344 |
'customizer_width' => '500px',
|
345 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/radio/" target="_blank">docs.reduxframework.com/core/fields/radio/</a>',
|
346 |
'fields' => array(
|
347 |
array(
|
348 |
'id' => 'opt-radio',
|
372 |
'title' => __( 'Sortable', 'redux-framework-demo' ),
|
373 |
'id' => 'basic-Sortable',
|
374 |
'subsection' => true,
|
375 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/sortable/" target="_blank">docs.reduxframework.com/core/fields/sortable/</a>',
|
376 |
'fields' => array(
|
377 |
array(
|
378 |
'id' => 'opt-sortable',
|
411 |
|
412 |
Redux::setSection( $opt_name, array(
|
413 |
'title' => __( 'Text', 'redux-framework-demo' ),
|
414 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/text/" target="_blank">docs.reduxframework.com/core/fields/text/</a>',
|
415 |
'id' => 'basic-Text',
|
416 |
'subsection' => true,
|
417 |
'customizer_width' => '700px',
|
451 |
Redux::setSection( $opt_name, array(
|
452 |
'title' => __( 'Multi Text', 'redux-framework-demo' ),
|
453 |
'id' => 'basic-Multi Text',
|
454 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/multi-text/" target="_blank">docs.reduxframework.com/core/fields/multi-text/</a>',
|
455 |
'subsection' => true,
|
456 |
'fields' => array(
|
457 |
array(
|
466 |
Redux::setSection( $opt_name, array(
|
467 |
'title' => __( 'Password', 'redux-framework-demo' ),
|
468 |
'id' => 'basic-Password',
|
469 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/password/" target="_blank">docs.reduxframework.com/core/fields/password/</a>',
|
470 |
'subsection' => true,
|
471 |
'fields' => array(
|
472 |
array(
|
485 |
Redux::setSection( $opt_name, array(
|
486 |
'title' => __( 'Textarea', 'redux-framework-demo' ),
|
487 |
'id' => 'basic-Textarea',
|
488 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/textarea/" target="_blank">docs.reduxframework.com/core/fields/textarea/</a>',
|
489 |
'subsection' => true,
|
490 |
'fields' => array(
|
491 |
array(
|
511 |
'title' => __( 'WordPress Editor', 'redux-framework-demo' ),
|
512 |
'id' => 'editor-wordpress',
|
513 |
//'icon' => 'el el-home'
|
514 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/editor/" target="_blank">docs.reduxframework.com/core/fields/editor/</a>',
|
515 |
'subsection' => true,
|
516 |
'fields' => array(
|
517 |
array(
|
544 |
'full_width' => true
|
545 |
),
|
546 |
),
|
547 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/editor/" target="_blank">docs.reduxframework.com/core/fields/editor/</a>',
|
548 |
) );
|
549 |
|
550 |
Redux::setSection( $opt_name, array(
|
552 |
'id' => 'editor-ace',
|
553 |
//'icon' => 'el el-home'
|
554 |
'subsection' => true,
|
555 |
+
'desc' => __( 'For full documentation on the this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/ace-editor/" target="_blank">docs.reduxframework.com/core/fields/ace-editor/</a>',
|
556 |
'fields' => array(
|
557 |
array(
|
558 |
'id' => 'opt-ace-editor-css',
|
602 |
Redux::setSection( $opt_name, array(
|
603 |
'title' => __( 'Color', 'redux-framework-demo' ),
|
604 |
'id' => 'color-Color',
|
605 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/color/" target="_blank">docs.reduxframework.com/core/fields/color/</a>',
|
606 |
'subsection' => true,
|
607 |
'fields' => array(
|
608 |
array(
|
625 |
) );
|
626 |
Redux::setSection( $opt_name, array(
|
627 |
'title' => __( 'Color Gradient', 'redux-framework-demo' ),
|
628 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/color-gradient/" target="_blank">docs.reduxframework.com/core/fields/color-gradient/</a>',
|
629 |
'id' => 'color-gradient',
|
630 |
'subsection' => true,
|
631 |
'fields' => array(
|
644 |
) );
|
645 |
Redux::setSection( $opt_name, array(
|
646 |
'title' => __( 'Color RGBA', 'redux-framework-demo' ),
|
647 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/color-rgba/" target="_blank">docs.reduxframework.com/core/fields/color-rgba/</a>',
|
648 |
'id' => 'color-rgba',
|
649 |
'subsection' => true,
|
650 |
'fields' => array(
|
665 |
) );
|
666 |
Redux::setSection( $opt_name, array(
|
667 |
'title' => __( 'Link Color', 'redux-framework-demo' ),
|
668 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/link-color/" target="_blank">docs.reduxframework.com/core/fields/link-color/</a>',
|
669 |
'id' => 'color-link',
|
670 |
'subsection' => true,
|
671 |
'fields' => array(
|
690 |
|
691 |
Redux::setSection( $opt_name, array(
|
692 |
'title' => __( 'Palette Colors', 'redux-framework-demo' ),
|
693 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/palette-color/" target="_blank">docs.reduxframework.com/core/fields/palette-color/</a>',
|
694 |
'id' => 'color-palette',
|
695 |
'subsection' => true,
|
696 |
'fields' => array(
|
750 |
),
|
751 |
|
752 |
),
|
753 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/background/" target="_blank">docs.reduxframework.com/core/fields/background/</a>',
|
754 |
) );
|
755 |
|
756 |
Redux::setSection( $opt_name, array(
|
757 |
'title' => __( 'Border', 'redux-framework-demo' ),
|
758 |
'id' => 'design-border',
|
759 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/border/" target="_blank">docs.reduxframework.com/core/fields/border/</a>',
|
760 |
'subsection' => true,
|
761 |
'fields' => array(
|
762 |
array(
|
800 |
Redux::setSection( $opt_name, array(
|
801 |
'title' => __( 'Dimensions', 'redux-framework-demo' ),
|
802 |
'id' => 'design-dimensions',
|
803 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/dimensions/" target="_blank">docs.reduxframework.com/core/fields/dimensions/</a>',
|
804 |
'subsection' => true,
|
805 |
'fields' => array(
|
806 |
array(
|
836 |
Redux::setSection( $opt_name, array(
|
837 |
'title' => __( 'Spacing', 'redux-framework-demo' ),
|
838 |
'id' => 'design-spacing',
|
839 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/spacing/" target="_blank">docs.reduxframework.com/core/fields/spacing/</a>',
|
840 |
'subsection' => true,
|
841 |
'fields' => array(
|
842 |
|
906 |
Redux::setSection( $opt_name, array(
|
907 |
'title' => __( 'Gallery', 'redux-framework-demo' ),
|
908 |
'id' => 'media-gallery',
|
909 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/gallery/" target="_blank">docs.reduxframework.com/core/fields/gallery/</a>',
|
910 |
'subsection' => true,
|
911 |
'fields' => array(
|
912 |
array(
|
922 |
Redux::setSection( $opt_name, array(
|
923 |
'title' => __( 'Media', 'redux-framework-demo' ),
|
924 |
'id' => 'media-media',
|
925 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/media/" target="_blank">docs.reduxframework.com/core/fields/media/</a>',
|
926 |
'subsection' => true,
|
927 |
'fields' => array(
|
928 |
array(
|
975 |
Redux::setSection( $opt_name, array(
|
976 |
'title' => __( 'Slides', 'redux-framework-demo' ),
|
977 |
'id' => 'additional-slides',
|
978 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/slides/" target="_blank">docs.reduxframework.com/core/fields/slides/</a>',
|
979 |
'subsection' => true,
|
980 |
'fields' => array(
|
981 |
array(
|
1004 |
Redux::setSection( $opt_name, array(
|
1005 |
'title' => __( 'Divide', 'redux-framework-demo' ),
|
1006 |
'id' => 'presentation-divide',
|
1007 |
+
'desc' => __( 'The spacer to the section menu as seen to the left (after this section block) is the divide "section". Also the divider below is the divide "field".', 'redux-framework-demo' ) . '<br />' . __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/divide/" target="_blank">docs.reduxframework.com/core/fields/divide/</a>',
|
1008 |
'subsection' => true,
|
1009 |
'fields' => array(
|
1010 |
array(
|
1017 |
Redux::setSection( $opt_name, array(
|
1018 |
'title' => __( 'Info', 'redux-framework-demo' ),
|
1019 |
'id' => 'presentation-info',
|
1020 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/info/" target="_blank">docs.reduxframework.com/core/fields/info/</a>',
|
1021 |
'subsection' => true,
|
1022 |
'fields' => array(
|
1023 |
array(
|
1112 |
Redux::setSection( $opt_name, array(
|
1113 |
'title' => __( 'Section', 'redux-framework-demo' ),
|
1114 |
'id' => 'presentation-section',
|
1115 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/section/" target="_blank">docs.reduxframework.com/core/fields/section/</a>',
|
1116 |
'subsection' => true,
|
1117 |
'fields' => array(
|
1118 |
array(
|
1162 |
Redux::setSection( $opt_name, array(
|
1163 |
'title' => __( 'Button Set', 'redux-framework-demo' ),
|
1164 |
'id' => 'switch_buttonset-set',
|
1165 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/button-set/" target="_blank">docs.reduxframework.com/core/fields/button-set/</a>',
|
1166 |
'subsection' => true,
|
1167 |
'fields' => array(
|
1168 |
array(
|
1201 |
Redux::setSection( $opt_name, array(
|
1202 |
'title' => __( 'Switch', 'redux-framework-demo' ),
|
1203 |
'id' => 'switch_buttonset-switch',
|
1204 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/switch/" target="_blank">docs.reduxframework.com/core/fields/switch/</a>',
|
1205 |
'subsection' => true,
|
1206 |
'fields' => array(
|
1207 |
|
1260 |
Redux::setSection( $opt_name, array(
|
1261 |
'title' => __( 'Select', 'redux-framework-demo' ),
|
1262 |
'id' => 'select-select',
|
1263 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/select/" target="_blank">docs.reduxframework.com/core/fields/select/</a>',
|
1264 |
'subsection' => true,
|
1265 |
'fields' => array(
|
1266 |
|
1485 |
Redux::setSection( $opt_name, array(
|
1486 |
'title' => __( 'Image Select', 'redux-framework-demo' ),
|
1487 |
'id' => 'select-image_select',
|
1488 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/image-select/" target="_blank">docs.reduxframework.com/core/fields/image-select/</a>',
|
1489 |
'subsection' => true,
|
1490 |
'fields' => array(
|
1491 |
|
1580 |
Redux::setSection( $opt_name, array(
|
1581 |
'title' => __( 'Select Image', 'redux-framework-demo' ),
|
1582 |
'id' => 'select-select_image',
|
1583 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/select-image/" target="_blank">docs.reduxframework.com/core/fields/select-image/</a>',
|
1584 |
'subsection' => true,
|
1585 |
'fields' => array(
|
1586 |
array(
|
1614 |
Redux::setSection( $opt_name, array(
|
1615 |
'title' => __( 'Slider', 'redux-framework-demo' ),
|
1616 |
'id' => 'slider_spinner-slider',
|
1617 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/slider/" target="_blank">docs.reduxframework.com/core/fields/slider/</a>',
|
1618 |
'fields' => array(
|
1619 |
|
1620 |
array(
|
1678 |
Redux::setSection( $opt_name, array(
|
1679 |
'title' => __( 'Spinner', 'redux-framework-demo' ),
|
1680 |
'id' => 'slider_spinner-spinner',
|
1681 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/spinner/" target="_blank">docs.reduxframework.com/core/fields/spinner/</a>',
|
1682 |
'subsection' => true,
|
1683 |
'fields' => array(
|
1684 |
array(
|
1698 |
Redux::setSection( $opt_name, array(
|
1699 |
'title' => __( 'Typography', 'redux-framework-demo' ),
|
1700 |
'id' => 'typography',
|
1701 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/typography/" target="_blank">docs.reduxframework.com/core/fields/typography/</a>',
|
1702 |
'icon' => 'el el-font',
|
1703 |
'fields' => array(
|
1704 |
array(
|
1780 |
Redux::setSection( $opt_name, array(
|
1781 |
'title' => __( 'Date', 'redux-framework-demo' ),
|
1782 |
'id' => 'additional-date',
|
1783 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/date/" target="_blank">docs.reduxframework.com/core/fields/date/</a>',
|
1784 |
'subsection' => true,
|
1785 |
'fields' => array(
|
1786 |
array(
|
1796 |
Redux::setSection( $opt_name, array(
|
1797 |
'title' => __( 'Sorter', 'redux-framework-demo' ),
|
1798 |
'id' => 'additional-sorter',
|
1799 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/sorter/" target="_blank">docs.reduxframework.com/core/fields/sorter/</a>',
|
1800 |
'subsection' => true,
|
1801 |
'fields' => array(
|
1802 |
array(
|
1844 |
Redux::setSection( $opt_name, array(
|
1845 |
'title' => __( 'Raw', 'redux-framework-demo' ),
|
1846 |
'id' => 'additional-raw',
|
1847 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/raw/" target="_blank">docs.reduxframework.com/core/fields/raw/</a>',
|
1848 |
'subsection' => true,
|
1849 |
'fields' => array(
|
1850 |
array(
|
1876 |
Redux::setSection( $opt_name, array(
|
1877 |
'title' => __( 'Callback', 'redux-framework-demo' ),
|
1878 |
'id' => 'additional-callback',
|
1879 |
+
'desc' => __( 'For full documentation on this field, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/fields/callback/" target="_blank">docs.reduxframework.com/core/fields/callback/</a>',
|
1880 |
'subsection' => true,
|
1881 |
'fields' => array(
|
1882 |
array(
|
1894 |
Redux::setSection( $opt_name, array(
|
1895 |
'title' => __( 'Field Validation', 'redux-framework-demo' ),
|
1896 |
'id' => 'validation',
|
1897 |
+
'desc' => __( 'For full documentation on validation, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/the-basics/validation/" target="_blank">docs.reduxframework.com/core/the-basics/validation/</a>',
|
1898 |
'subsection' => true,
|
1899 |
'fields' => array(
|
1900 |
array(
|
2060 |
Redux::setSection( $opt_name, array(
|
2061 |
'title' => __( 'Field Required / Linking', 'redux-framework-demo' ),
|
2062 |
'id' => 'required',
|
2063 |
+
'desc' => __( 'For full documentation on validation, visit: ', 'redux-framework-demo' ) . '<a href="//docs.reduxframework.com/core/the-basics/required/" target="_blank">docs.reduxframework.com/core/the-basics/required/</a>',
|
2064 |
'subsection' => true,
|
2065 |
'fields' => array(
|
2066 |
array(
|