Bot.to

Mazoku Discord Bot

  • Anime
  • Game
  • Manga

The Ultimate Guide to Mazoku Discord Bot: Features, Setup & Commands

Discord bots are automated programs that can dramatically enhance a server by performing tasks ranging from moderation and entertainment to providing information. Among these, the Mazoku Discord Bot is a specialized tool designed to bring unique functionality and engagement to communities, particularly those focused on specific interests like anime and manga.

This comprehensive guide covers everything you need to know about the Mazoku Discord Bot, from its core features to how you can add it to your own server.

Core Features of the Mazoku Discord Bot

The Mazoku Discord Bot is designed to be a central hub for community interaction and content delivery. Its features aim to automate tasks, engage members, and provide valuable information seamlessly.

  1. Anime and Manga Integration: At its core, the Mazoku Discord Bot likely specializes in fetching and displaying detailed information about anime series and manga titles. Similar bots use APIs to retrieve data like synopses, episode counts, character information, and airing schedules directly into your Discord chat.

  2. Automated Alerts and Notifications: Keep your community up-to-date. The bot can be configured to send automatic alerts for new anime episodes, manga chapter releases, or news from related websites, ensuring your server is always buzzing with the latest updates.

  3. Interactive Commands for Engagement: Beyond information, the Mazoku Discord Bot probably includes interactive commands for fun and engagement, such as character lookups, random anime suggestions, or trivia games, fostering activity within your community.

  4. Customizable Utility Features: Many bots of this type also offer utility functions like role management, welcome messages for new members, or poll creation, making the Mazoku Discord Bot a versatile addition beyond its core theme.

How to Add the Mazoku Discord Bot to Your Server

Adding the Mazoku Discord Bot is a straightforward process. You must have "Manage Server" permissions in the Discord server where you want to install it.

Here is a step-by-step guide for the general process:

Step Action Description & Notes
1 Visit the Official Website Go to the Mazoku Discord Bot's official homepage at https://mazoku.cc/. This is the primary source for the correct and secure invite link.
2 Locate the Invite Link On the website, find and click the "Invite," "Add to Discord," or similar button.
3 Authorize with Discord You will be redirected to Discord's official authorization page. Select your target server from the dropdown menu and click "Continue".
4 Review Permissions A list of permissions the Mazoku Discord Bot requires will appear (e.g., "Read Messages," "Send Messages," "Embed Links"). Review and approve these so the bot can function properly.
5 Complete Authorization Click "Authorize" and complete any CAPTCHA verification. A confirmation message will appear in your Discord server once the Mazoku Discord Bot has successfully joined.

Note: The exact permissions requested and the look of the website may vary. Always ensure you are using the official mazoku.cc link to avoid security risks.

Top Commands for the Mazoku Discord Bot

After inviting the Mazoku Discord Bot, you'll interact with it using commands. These are likely a mix of classic prefix commands (like !command) and modern, user-friendly slash commands (like /command).

While the exact command list is defined on the bot's official page, here are common command types you can expect from a bot like Mazoku Discord Bot:

  1. /anime search </code></strong>: The primary command to search for any anime. It should return a detailed embed with information, ratings, and status.</p> </li> <li> <p class="ds-markdown-paragraph"><strong><code>/manga search <title></code></strong>: Similar to the anime command, this fetches comprehensive details about a manga series.</p> </li> <li> <p class="ds-markdown-paragraph"><strong><code>/character </code></strong>: Provides a profile of a specified anime or manga character.</p> </li> <li> <p class="ds-markdown-paragraph"><strong><code>/schedule [day]</code></strong>: Shows a list of anime episodes scheduled to air, either for a specific day or the current week.</p> </li> <li> <p class="ds-markdown-paragraph"><strong><code>/random</code></strong>: Offers a fun way to discover new series by fetching a random anime or manga title.</p> </li> <li> <p class="ds-markdown-paragraph"><strong><code>/notify setup</code></strong>: A utility command to configure automatic release notifications for specific shows in a designated channel.</p> </li> </ol> <blockquote> <p class="ds-markdown-paragraph"><strong>Pro Tip</strong>: Once the bot is in your server, type <code>/</code> in the chatbox and select the <strong>Mazoku Discord Bot</strong>'s icon from the pop-up list to see all its available slash commands and descriptions in real-time.</p> </blockquote> <h2><strong>Official Resources & Support</strong></h2> <p class="ds-markdown-paragraph">For the most accurate information, commands, and support, always refer to the <strong>Mazoku Discord Bot</strong>'s official channels:</p> <ul> <li> <p class="ds-markdown-paragraph"><strong>Official Website</strong>: <code>https://mazoku.cc/</code> (for features, invite links, and documentation)</p> </li> <li> <p class="ds-markdown-paragraph"><strong>Support Discord Server</strong>: Most bots host a dedicated community server for help, updates, and suggestions. The invite link is typically found on the main website.</p> </li> <li> <p class="ds-markdown-paragraph"><strong>Pricing/Pro Features</strong>: Some advanced features might be part of a premium "Pro" tier. Check the official website for a clear breakdown of free vs. premium features and any associated costs.</p> </li> </ul> <h2><strong>Frequently Asked Questions (FAQ)</strong></h2> <p class="ds-markdown-paragraph"><strong>What is the Mazoku Discord Bot?</strong><br /> It is a specialized Discord bot designed to provide information, alerts, and interactive features primarily centered around anime and manga, helping to engage and grow communities with shared interests.</p> <p class="ds-markdown-paragraph"><strong>Is the Mazoku Discord Bot free to use?</strong><br /> Core features are typically free. The official website (<code>mazoku.cc</code>) will detail any optional premium "Pro" subscription that may unlock advanced functionalities or higher usage limits.</p> <p class="ds-markdown-paragraph"><strong>Why does the bot need permissions when I invite it?</strong><br /> Permissions allow the <strong>Mazoku Discord Bot</strong> to operate correctly. For example, it needs "Send Messages" to reply, "Embed Links" to create rich info cards, and "Read Messages" to see commands. You review these before authorizing.</p> <p class="ds-markdown-paragraph"><strong>The bot isn't responding to my commands. What's wrong?</strong><br /> First, ensure you are using the correct command syntax (prefix <code>!</code>, <code>/</code>, etc.). Check that the bot has the necessary permissions in that specific channel. If issues persist, visit the official support Discord server for help.</p> <p class="ds-markdown-paragraph"><strong>How can I remove the Mazoku Discord Bot from my server?</strong><br /> You can remove it like any other member. Use the server's member list, right-click on the <strong>Mazoku Discord Bot</strong>, and select "Kick [Bot Name]". You can always re-invite it later if needed.</p> <p class="ds-markdown-paragraph">I hope this guide helps you get started. For the definitive list of commands and the latest features, the <strong>Mazoku Discord Bot</strong>'s official website at <code>https://mazoku.cc/</code> is your best resource.</p> </div> </div> <div class="rz-mod-listing rz-mod-listing-reviews" data-type="reviews"><div class="rz-mod-content"> <div class="rz-reviews-stats-summary"> <div class="rz-reviews-stats-text"> <strong>0 reviews</strong> </div> <div class=""> <a href="#" class="rz-button rz-button-accent" data-modal="signin" data-params="11337"> <span>Submit a Review</span> </a> </div> </div> <div class="rz-modal rz-modal-add-review" data-id="add-review"> <a href="#" class="rz-close"> <i class="fas fa-times"></i> </a> <div class="rz-modal-heading rz--border"> <h4 class="rz--title">Submit a Review</h4> </div> <div class="rz-modal-content"> <div class="rz-modal-append"></div> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </div> </div> <div class="rz-modal rz-modal-review-reply" data-id="review-reply"> <a href="#" class="rz-close"> <i class="fas fa-times"></i> </a> <div class="rz-modal-heading"> <h4 class="rz--title">Send reply to a review</h4> </div> <div class="rz-modal-content"> <div class="rz-modal-append"></div> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </div> </div> </div> </div> <div class="rz-mod-listing rz-mod-listing-content" data-type="content"></div> </div> </div> <div class="rz-sidebar"> <div class="rz-single-sidebar rz--sticky"> <div class="rz--heading"> <div class="rz--col-heading"> <h4 class="rz--title rz-ellipsis"> </h4> </div> <div class="rz--col-close"> <a href="#" class="rz-close" data-action="toggle-mobile-action"> <i class="fas fa-times"></i> </a> </div> </div> <div class="rz-listing-action"> <div class="rz-mod-action rz-mod-action-contact" data-type="contact"><div class="rz-action-contact"> <div class="rz-action-author"> <div class="rz--avatar"> <div class="rz-avatar-placeholder"><i class="material-icon-person"></i></div> </div> <div class="rz--name"> <h4>admin</h4> </div> <div class="rz--content"> <div class="rz--view"> <a href="https://bot.to/author/admin/" class="rz-link"> View user profile <i class="fas fa-arrow-right rz-ml-1"></i> </a> </div> </div> </div> <div class="rz-action-footer rz-text-center"> <div class="rz--action"> <a href="#" class="rz-button rz-large" data-modal="signin" data-params='{"id":11337}'> <span>Send message</span> </a> </div> </div> </div></div></div> </div> </div> </div> </div> </div> </div> </div> </div> </section> <div class="rz-modal rz-modal-report" data-id="report"> <a href="#" class="rz-close"> <i class="fas fa-times"></i> </a> <div class="rz-modal-heading rz--border"> <h4 class="rz--title">Send listing report</h4> </div> <div class="rz-modal-content"> <div class="rz-modal-append"> <div class="rz-modal-container rz-scrollbar"> <div class="rz-report-submit"> <p>This is private and won't be shared with the owner.</p> <div class="rz-form"> <input type="hidden" id="routiz_report" name="routiz_report" value="d44fc43c38" /><input type="hidden" name="_wp_http_referer" value="/discord-bot/id-11337/" /> <div class="rz-grid"> <div class="rz-form-group rz-field rz-col-12" data-type="radio" data-storage="field" data-disabled="no" data-id="report_reason"><div class="rz-radio-fieldset"> <label class="rz-radio"> <input type="radio" name="rz_report_reason" value="incorrect" > <i class="rz-transition"></i> <span>Inaccurate or incorrect</span> </label> <label class="rz-radio"> <input type="radio" name="rz_report_reason" value="not_real" > <i class="rz-transition"></i> <span>Not a real listing</span> </label> <label class="rz-radio"> <input type="radio" name="rz_report_reason" value="scam" > <i class="rz-transition"></i> <span>It's a scam</span> </label> <label class="rz-radio"> <input type="radio" name="rz_report_reason" value="offensive" > <i class="rz-transition"></i> <span>It's offensive</span> </label> <label class="rz-radio"> <input type="radio" name="rz_report_reason" value="else" > <i class="rz-transition"></i> <span>Something else</span> </label> </div> </div> </div> </div> </div> <div class="rz-modal-footer rz--top-border rz-text-center"> <a href="#" id="rz-send-report" class="rz-button rz-button-accent rz-modal-button"> <span>Send Report</span> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </a> </div> </div> <div class="rz-reported rz-none"> <div class="rz--icon"> <i class="fas fa-check"></i> <p>Your report sucessfully send</p> </div> </div> </div> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </div> </div> <div class="rz-modal rz-modal-appointments" data-id="appointments"> <a href="#" class="rz-close"> <i class="fas fa-times"></i> </a> <div class="rz-modal-heading rz--border"> <h4 class="rz--title">Appointments</h4> </div> <div class="rz-modal-content"> <div class="rz-modal-append"></div> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </div> </div> <div class="brk-mobile-listing-top"> <div class="brk-row"> <div class="brk-grid"> <div class="brk-col-6"> <a href="https://bot.to/explore/?type=discord-bot" data-action="browser-back"> <i class="fas fa-chevron-left brk-mr-1"></i> <span>Back</span> </a> </div> <div class="brk-col-6"> <!-- // --> </div> </div> </div> </div> <div class="brk-mobile-listing-bottom"> <div class="rz-w-100"> <a href="#" class="rz-button rz-button-accent rz-block" data-action="toggle-mobile-action"> <span> View</span> </a> </div> </div> </div> </main> </div> <div class="brk-footer"> <div class="brk--bottom"> <div class="brk-row"> <div class="brk--bottom-inner"> <div class="brk--cell-copy"> <p>Copyright © 2023-2026. Handcrafted by <a href="https://t.me/tolstoy_nikita" target="_blank">Nikita Tolstoy</a>.</p> </div> <div class="brk--cell-copy"> <p>AI Tools Directory</p> </div> <div class="brk-site-nav"> <nav class="brk-nav-bottom"> <ul id="menu-primary-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-9064"><a href="#">Promotion & Advertise</a></li> </ul> </nav> </div> </div> </div> </div> </div> </div> <!-- end .site --> <div class="rz-modal rz-modal-lightbox rz-no-select" data-id="lightbox"> <a href="#" class="rz-close"> <i class="fas fa-times"></i> </a> <div class="rz-modal-heading"> <h4 class="rz--title"> </h4> </div> <div class="rz-modal-content"> <div class="rz-modal-image"> <!-- append immage here --> </div> <a href="#" class="rz-lightbox-nav" data-action="prev"> <span><i class="fas fa-arrow-left"></i></span> </a> <a href="#" class="rz-lightbox-nav" data-action="next"> <span><i class="fas fa-arrow-right"></i></span> </a> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </div> <div class="rz-lightbox-counter"> <span class="rz--current"></span> / <span class="rz--total"></span> </div> </div> <div class="brk-mobile-bar brk--names-no"> <div class="brk-mobile-row"> <ul> <li class=""> <a href="https://bot.to/explore/" data-name="Explore" > <i class="material-icon-search"></i> <span>Explore</span> </a> </li> <li class=""> <a href="#" data-name="Favorites" data-modal="signin"> <i class="material-icon-favorite_outline"></i> <span>Favorites</span> </a> </li> <li class="brk--focus"> <a href="#" data-name="Sign-In" data-modal="signin"> <i class="material-icon-person"></i> <span>Sign-In</span> </a> </li> <li class=""> <a href="#" data-name="Messages" data-modal="signin"> <i class="material-icon-chat_bubble_outline"></i> <span>Messages</span> </a> </li> <li> <a href="#" data-action="toggle-mobile-nav"> <i class="material-icon-menu"></i> <span>Menu</span> </a> </li> </ul> </div> </div> <div class="brk-mobile-nav"> <div class="brk--header"> <div class="brk-site-logo"> <a href="https://bot.to"> <span class="brk-site-title brk-font-heading"> Bot.to </span> </a> </div> </div> <div class="brk--nav"> <nav class="brk-nav-mobile"> <ul id="menu-primary-2" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-9064"><a href="#">Promotion & Advertise</a></li> </ul> </nav> </div> <div class="brk--footer"> <div class="brk-ml-auto"> <a href="#" class="brk--close" data-action="toggle-mobile-nav"> <i class="fas fa-times"></i> </a> </div> </div> </div> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/brikk/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <span class="rz-overlay"></span><div class="rz-modal rz-modal-signin" data-id="signin" data-signup="pass"> <a href="#" class="rz-close"> <i class="fas fa-times"></i> </a> <div class="rz-modal-heading rz--border"> <h4 class="rz--title">Sign in</h4> </div> <div class="rz-modal-content"> <div class="rz-modal-append"> <div class="rz-modal-container"> <div class="rz-signin-tabs"> <ul> <li class="rz-active" data-for="sign-in" data-label="Sign in"><a href="#">Sign in</a></li> <li data-for="create-account" data-label="Create account"><a href="#">Create account</a></li> </ul> </div> <form class="rz-form rz-signin-section rz-active" data-id="sign-in" autocomplete="nope"> <div class="rz-grid"> <!-- fix browser autocomplete --> <div style="position:absolute;z-index:-1;opacity:0;"> <input type="text" name="username"> <input type="password" name="password"> </div> <!-- // fix browser autocomplete --> <div class="rz-form-group rz-col-12"> <input type="text" name="user_email" value="" placeholder="Username or email"> </div> <div class="rz-form-group rz-col-12"> <input type="password" name="user_password" value="" placeholder="Password"> </div> <div class="rz-form-group rz-inline-group rz-col-12"> <button type="submit" name="" class="rz-button rz-button-accent rz-block rz-w-100 rz-modal-button"> <span>Sign in</span> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </button> </div> <div class="rz-signin-errors"> <!-- output --> </div> <div class="rz-form-group rz-col-12 rz-text-center"> <p class="rz-mb-0"> <a href="#" data-for="reset-password" class="rz-lost-pass-link" data-label="Reset password"> <i class="fas fa-unlock rz-mr-1"></i>Lost your password? </a> </p> </div> </div> </form> <form class="rz-form rz-signin-section" data-id="create-account"> <input type="submit" name="" value="" class="rz-none"> <div class="rz-signin-container"> <div class="rz-grid"> <div class="rz-form-group rz-col-12"> <input type="text" name="username" value="" placeholder="Username"> </div> <div class="rz-form-group rz-col-12"> <input type="text" name="email" value="" placeholder="Email"> </div> <div class="rz-form-group rz-col-6 rz-col-sm-12"> <input type="text" name="first_name" value="" placeholder="First name"> </div> <div class="rz-form-group rz-col-6 rz-col-sm-12"> <input type="text" name="last_name" value="" placeholder="Last name"> </div> <div class="rz-form-group rz-col-6 rz-col-sm-12"> <input type="password" name="password" value="" placeholder="Password"> </div> <div class="rz-form-group rz-col-6 rz-col-sm-12"> <input type="password" name="repeat_password" value="" placeholder="Repeat password"> </div> <div class="g-recaptcha" id="rcaptcha" name="rcaptcha" data-sitekey="6LdFSRosAAAAAAb9kEB1KFHztZvNlF8NTqhRyLde"></div> <div class="rz-form-group rz-inline-group rz-col-12"> <button type="submit" name="" class="rz-button rz-button-accent rz-block rz-w-100 rz-modal-button"> <span>Create account</span> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </button> </div> <div class="rz-signin-errors"> <!-- output --> </div> <div class="rz-signin-success"> Your account has been created. Please check your email for more details. </div> </div> </div> </form> <form class="rz-form rz-signin-section" data-id="reset-password"> <input type="submit" name="" value="" class="rz-none"> <div class="rz-grid"> <div class="rz-form-group rz-col-12"> <p>Please enter your email address. You will receive a link to create a new password via email.</p> <input type="text" name="email" value="" placeholder="Email"> </div> <div class="rz-form-group rz-inline-group rz-col-12"> <button type="submit" name="" class="rz-button rz-button-accent rz-block rz-w-100 rz-modal-button"> <span>Reset password</span> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </button> </div> <div class="rz-signin-errors"> <!-- output --> </div> <div class="rz-signin-success"> Please check your email for more details. </div> </div> </form> <script src='https://www.google.com/recaptcha/api.js'></script> <script src="https://cdn.jsdelivr.net/npm/libphonenumber-js/bundle/libphonenumber-js.min.js"></script> <script> function validatePhoneNumber(input) { var phoneNumber = input.value; // Check if the input contains only digits var isDigitsOnly = /^\d*$/.test(phoneNumber); if (!isDigitsOnly) { input.setCustomValidity(''); // Clear any previous validation messages document.querySelector('.phone-validation-error').style.display = 'block'; } else { input.setCustomValidity(''); // Clear any previous validation messages document.querySelector('.phone-validation-error').style.display = 'none'; } } </script> </div> <div class="rz-modal-footer rz--top-border rz-text-center"> <a href="#" class="rz-button rz-width-100 rz-button-accent rz-large rz-modal-button" data-action=""> <span>Sign in</span> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </a> </div> </div> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </div> </div> <div class="rz-modal rz-modal-conversation" data-id="conversation"> <a href="#" class="rz-close"> <i class="fas fa-times"></i> </a> <div class="rz-modal-heading"> <h4 class="rz--title">Send Message</h4> </div> <div class="rz-modal-content"> <div class="rz-modal-append"></div> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </div> </div> <div class="rz-modal rz-modal-favorites" data-id="favorites"> <a href="#" class="rz-close"> <i class="fas fa-times"></i> </a> <div class="rz-modal-heading rz--border"> <h4 class="rz--title">My favorites</h4> </div> <div class="rz-modal-content"> <div class="rz-modal-append"></div> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </div> </div> <div class="rz-modal rz-modal-application" data-id="action-application"> <a href="#" class="rz-close"> <i class="fas fa-times"></i> </a> <div class="rz-modal-heading rz--border"> <h4 class="rz--title">Application Form</h4> </div> <div class="rz-modal-content"> <div class="rz-modal-append"></div> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </div> </div> <div class="rz-modal rz-modal-claim" data-id="action-claim"> <a href="#" class="rz-close"> <i class="fas fa-times"></i> </a> <div class="rz-modal-heading"> <h4 class="rz--title">Claim Business</h4> </div> <div class="rz-modal-content"> <div class="rz-modal-append"></div> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </div> </div> <div class="rz-modal rz-modal-share" data-id="share"> <a href="#" class="rz-close"> <i class="fas fa-times"></i> </a> <div class="rz-modal-heading rz--border"> <h4 class="rz--title">Share</h4> </div> <div class="rz-modal-content"> <div class="rz-modal-append"> <div class="rz-modal-container rz-scrollbar"> <div class="rz-signin-social rz-mb-1"> <ul> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https://bot.to/discord-bot/id-11337/" class="rz-button rz--gg" target="_blank"> <span class="fab fa-facebook rz-mr-1"></span> <span>Share with Facebook</span> </a> </li> <li class="rz-mt-2"> <a href="https://twitter.com/share?url=https://bot.to/discord-bot/id-11337/&text=Mazoku" class="rz-button rz--gg" target="_blank"> <span class="fab fa-twitter rz-mr-1"></span> <span>Share with Twitter</span> </a> </li> <li class="rz-mt-2"> <a href="https://pinterest.com/pin/create/button/?url=https://bot.to/discord-bot/id-11337/&media=&description=Mazoku" class="rz-button rz--gg" target="_blank"> <span class="fab fa-pinterest rz-mr-1"></span> <span>Share with Pinterest</span> </a> </li> <li class="rz-mt-2"> <a href="mailto:?&subject=Mazoku&body=https://bot.to/discord-bot/id-11337/" class="rz-button rz--gg" target="_blank"> <span class="far fa-paper-plane rz-mr-1"></span> <span>Share by email</span> </a> </li> <li class="rz-mt-2"> <a href="https://api.whatsapp.com/send?text=Mazoku+https%3A%2F%2Fbot.to%2Fdiscord-bot%2Fid-11337%2F" class="rz-button rz--gg" target="_blank"> <span class="fab fa-whatsapp rz-mr-1"></span> <span>Share with WhatsApp</span> </a> </li> </ul> </div> </div> </div> <div class="rz-preloader"> <i class="fas fa-sync"></i> </div> </div> </div> <script type="text/javascript"> jQuery(document).ready(function($) { $('.trigger-signin-modal a').on('click', function(e) { e.preventDefault(); // Prevent the default link action $('[data-modal="signin"]').trigger('click'); // Trigger the sign-in modal }); }); </script> <script> const lazyloadRunObserver = () => { const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { entries.forEach( ( entry ) => { if ( entry.isIntersecting ) { let lazyloadBackground = entry.target; if( lazyloadBackground ) { lazyloadBackground.classList.add( 'e-lazyloaded' ); } lazyloadBackgroundObserver.unobserve( entry.target ); } }); }, { rootMargin: '200px 0px 200px 0px' } ); lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { lazyloadBackgroundObserver.observe( lazyloadBackground ); } ); }; const events = [ 'DOMContentLoaded', 'elementor/lazyload/observe', ]; events.forEach( ( event ) => { document.addEventListener( event, lazyloadRunObserver ); } ); </script> <script type="text/html" id="tmpl-media-frame"> <div class="media-frame-title" id="media-frame-title"></div> <h2 class="media-frame-menu-heading">Actions</h2> <button type="button" class="button button-link media-frame-menu-toggle" aria-expanded="false"> Menu <span class="dashicons dashicons-arrow-down" aria-hidden="true"></span> </button> <div class="media-frame-menu"></div> <div class="media-frame-tab-panel"> <div class="media-frame-router"></div> <div class="media-frame-content"></div> </div> <h2 class="media-frame-actions-heading screen-reader-text"> Selected media actions </h2> <div class="media-frame-toolbar"></div> <div class="media-frame-uploader"></div> </script> <script type="text/html" id="tmpl-media-modal"> <div id="wp-media-modal" tabindex="0" class="media-modal wp-core-ui" role="dialog" aria-labelledby="media-frame-title"> <# if ( data.hasCloseButton ) { #> <button type="button" class="media-modal-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text"> Close dialog </span></button> <# } #> <div class="media-modal-content" role="document"></div> </div> <div class="media-modal-backdrop"></div> </script> <script type="text/html" id="tmpl-uploader-window"> <div class="uploader-window-content"> <div class="uploader-editor-title">Drop files to upload</div> </div> </script> <script type="text/html" id="tmpl-uploader-editor"> <div class="uploader-editor-content"> <div class="uploader-editor-title">Drop files to upload</div> </div> </script> <script type="text/html" id="tmpl-uploader-inline"> <# var messageClass = data.message ? 'has-upload-message' : 'no-upload-message'; #> <# if ( data.canClose ) { #> <button class="close dashicons dashicons-no"><span class="screen-reader-text"> Close uploader </span></button> <# } #> <div class="uploader-inline-content {{ messageClass }}"> <# if ( data.message ) { #> <h2 class="upload-message">{{ data.message }}</h2> <# } #> <div class="upload-ui"> <h2 class="upload-instructions drop-instructions">Drop files to upload</h2> <p class="upload-instructions drop-instructions">or</p> <button type="button" class="browser button button-hero" aria-labelledby="post-upload-info">Select Files</button> </div> <div class="upload-inline-status"></div> <div class="post-upload-ui" id="post-upload-info"> <p class="max-upload-size"> Maximum upload file size: 100 MB. </p> <# if ( data.suggestedWidth && data.suggestedHeight ) { #> <p class="suggested-dimensions"> Suggested image dimensions: {{data.suggestedWidth}} by {{data.suggestedHeight}} pixels. </p> <# } #> </div> </div> </script> <script type="text/html" id="tmpl-media-library-view-switcher"> <a href="https://bot.to/wp-admin/upload.php?mode=list" class="view-list"> <span class="screen-reader-text"> List view </span> </a> <a href="https://bot.to/wp-admin/upload.php?mode=grid" class="view-grid current" aria-current="page"> <span class="screen-reader-text"> Grid view </span> </a> </script> <script type="text/html" id="tmpl-uploader-status"> <h2>Uploading</h2> <div class="media-progress-bar"><div></div></div> <div class="upload-details"> <span class="upload-count"> <span class="upload-index"></span> / <span class="upload-total"></span> </span> <span class="upload-detail-separator">–</span> <span class="upload-filename"></span> </div> <div class="upload-errors"></div> <button type="button" class="button upload-dismiss-errors">Dismiss errors</button> </script> <script type="text/html" id="tmpl-uploader-status-error"> <span class="upload-error-filename word-wrap-break-word">{{{ data.filename }}}</span> <span class="upload-error-message">{{ data.message }}</span> </script> <script type="text/html" id="tmpl-edit-attachment-frame"> <div class="edit-media-header"> <button class="left dashicons"<# if ( ! data.hasPrevious ) { #> disabled<# } #>><span class="screen-reader-text">Edit previous media item</span></button> <button class="right dashicons"<# if ( ! data.hasNext ) { #> disabled<# } #>><span class="screen-reader-text">Edit next media item</span></button> <button type="button" class="media-modal-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text">Close dialog</span></button> </div> <div class="media-frame-title"></div> <div class="media-frame-content"></div> </script> <script type="text/html" id="tmpl-attachment-details-two-column"> <div class="attachment-media-view {{ data.orientation }}"> <h2 class="screen-reader-text">Attachment Preview</h2> <div class="thumbnail thumbnail-{{ data.type }}"> <# if ( data.uploading ) { #> <div class="media-progress-bar"><div></div></div> <# } else if ( data.sizes && data.sizes.full ) { #> <img class="details-image" src="{{ data.sizes.full.url }}" draggable="false" alt="" /> <# } else if ( data.sizes && data.sizes.large ) { #> <img class="details-image" src="{{ data.sizes.large.url }}" draggable="false" alt="" /> <# } else if ( -1 === jQuery.inArray( data.type, [ 'audio', 'video' ] ) ) { #> <img class="details-image icon" src="{{ data.icon }}" draggable="false" alt="" /> <# } #> <# if ( 'audio' === data.type ) { #> <div class="wp-media-wrapper wp-audio"> <audio style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none"> <source type="{{ data.mime }}" src="{{ data.url }}" /> </audio> </div> <# } else if ( 'video' === data.type ) { var w_rule = ''; if ( data.width ) { w_rule = 'width: ' + data.width + 'px;'; } else if ( wp.media.view.settings.contentWidth ) { w_rule = 'width: ' + wp.media.view.settings.contentWidth + 'px;'; } #> <div style="{{ w_rule }}" class="wp-media-wrapper wp-video"> <video controls="controls" class="wp-video-shortcode" preload="metadata" <# if ( data.width ) { #>width="{{ data.width }}"<# } #> <# if ( data.height ) { #>height="{{ data.height }}"<# } #> <# if ( data.image && data.image.src !== data.icon ) { #>poster="{{ data.image.src }}"<# } #>> <source type="{{ data.mime }}" src="{{ data.url }}" /> </video> </div> <# } #> <div class="attachment-actions"> <# if ( 'image' === data.type && ! data.uploading && data.sizes && data.can.save ) { #> <button type="button" class="button edit-attachment">Edit Image</button> <# } else if ( 'pdf' === data.subtype && data.sizes ) { #> <p>Document Preview</p> <# } #> </div> </div> </div> <div class="attachment-info"> <span class="settings-save-status" role="status"> <span class="spinner"></span> <span class="saved">Saved.</span> </span> <div class="details"> <h2 class="screen-reader-text"> Details </h2> <div class="uploaded"><strong>Uploaded on:</strong> {{ data.dateFormatted }}</div> <div class="uploaded-by word-wrap-break-word"> <strong>Uploaded by:</strong> <# if ( data.authorLink ) { #> <a href="{{ data.authorLink }}">{{ data.authorName }}</a> <# } else { #> {{ data.authorName }} <# } #> </div> <# if ( data.uploadedToTitle ) { #> <div class="uploaded-to"> <strong>Uploaded to:</strong> <# if ( data.uploadedToLink ) { #> <a href="{{ data.uploadedToLink }}">{{ data.uploadedToTitle }}</a> <# } else { #> {{ data.uploadedToTitle }} <# } #> </div> <# } #> <div class="filename"><strong>File name:</strong> {{ data.filename }}</div> <div class="file-type"><strong>File type:</strong> {{ data.mime }}</div> <div class="file-size"><strong>File size:</strong> {{ data.filesizeHumanReadable }}</div> <# if ( 'image' === data.type && ! data.uploading ) { #> <# if ( data.width && data.height ) { #> <div class="dimensions"><strong>Dimensions:</strong> {{ data.width }} by {{ data.height }} pixels </div> <# } #> <# if ( data.originalImageURL && data.originalImageName ) { #> <div class="word-wrap-break-word"> <strong>Original image:</strong> <a href="{{ data.originalImageURL }}">{{data.originalImageName}}</a> </div> <# } #> <# } #> <# if ( data.fileLength && data.fileLengthHumanReadable ) { #> <div class="file-length"><strong>Length:</strong> <span aria-hidden="true">{{ data.fileLengthHumanReadable }}</span> <span class="screen-reader-text">{{ data.fileLengthHumanReadable }}</span> </div> <# } #> <# if ( 'audio' === data.type && data.meta.bitrate ) { #> <div class="bitrate"> <strong>Bitrate:</strong> {{ Math.round( data.meta.bitrate / 1000 ) }}kb/s <# if ( data.meta.bitrate_mode ) { #> {{ ' ' + data.meta.bitrate_mode.toUpperCase() }} <# } #> </div> <# } #> <# if ( data.mediaStates ) { #> <div class="media-states"><strong>Used as:</strong> {{ data.mediaStates }}</div> <# } #> <div class="compat-meta"> <# if ( data.compat && data.compat.meta ) { #> {{{ data.compat.meta }}} <# } #> </div> </div> <div class="settings"> <# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; #> <# if ( 'image' === data.type ) { #> <span class="setting alt-text has-description" data-setting="alt"> <label for="attachment-details-two-column-alt-text" class="name">Alternative Text</label> <textarea id="attachment-details-two-column-alt-text" aria-describedby="alt-text-description" {{ maybeReadOnly }}>{{ data.alt }}</textarea> </span> <p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span></a>. Leave empty if the image is purely decorative.</p> <# } #> <span class="setting" data-setting="title"> <label for="attachment-details-two-column-title" class="name">Title</label> <input type="text" id="attachment-details-two-column-title" value="{{ data.title }}" {{ maybeReadOnly }} /> </span> <# if ( 'audio' === data.type ) { #> <span class="setting" data-setting="artist"> <label for="attachment-details-two-column-artist" class="name">Artist</label> <input type="text" id="attachment-details-two-column-artist" value="{{ data.artist || data.meta.artist || '' }}" /> </span> <span class="setting" data-setting="album"> <label for="attachment-details-two-column-album" class="name">Album</label> <input type="text" id="attachment-details-two-column-album" value="{{ data.album || data.meta.album || '' }}" /> </span> <# } #> <span class="setting" data-setting="caption"> <label for="attachment-details-two-column-caption" class="name">Caption</label> <textarea id="attachment-details-two-column-caption" {{ maybeReadOnly }}>{{ data.caption }}</textarea> </span> <span class="setting" data-setting="description"> <label for="attachment-details-two-column-description" class="name">Description</label> <textarea id="attachment-details-two-column-description" {{ maybeReadOnly }}>{{ data.description }}</textarea> </span> <span class="setting" data-setting="url"> <label for="attachment-details-two-column-copy-link" class="name">File URL:</label> <input type="text" class="attachment-details-copy-link" id="attachment-details-two-column-copy-link" value="{{ data.url }}" readonly /> <span class="copy-to-clipboard-container"> <button type="button" class="button button-small copy-attachment-url" data-clipboard-target="#attachment-details-two-column-copy-link">Copy URL to clipboard</button> <span class="success hidden" aria-hidden="true">Copied!</span> </span> </span> <div class="attachment-compat"></div> </div> <div class="actions"> <# if ( data.link ) { #> <a class="view-attachment" href="{{ data.link }}">View media file</a> <# } #> <# if ( data.can.save ) { #> <# if ( data.link ) { #> <span class="links-separator">|</span> <# } #> <a href="{{ data.editLink }}">Edit more details</a> <# } #> <# if ( data.can.save && data.link ) { #> <span class="links-separator">|</span> <a href="{{ data.url }}" download>Download file</a> <# } #> <# if ( ! data.uploading && data.can.remove ) { #> <# if ( data.link || data.can.save ) { #> <span class="links-separator">|</span> <# } #> <button type="button" class="button-link delete-attachment">Delete permanently</button> <# } #> </div> </div> </script> <script type="text/html" id="tmpl-attachment"> <div class="attachment-preview js--select-attachment type-{{ data.type }} subtype-{{ data.subtype }} {{ data.orientation }}"> <div class="thumbnail"> <# if ( data.uploading ) { #> <div class="media-progress-bar"><div style="width: {{ data.percent }}%"></div></div> <# } else if ( 'image' === data.type && data.size && data.size.url ) { #> <div class="centered"> <img src="{{ data.size.url }}" draggable="false" alt="" /> </div> <# } else { #> <div class="centered"> <# if ( data.image && data.image.src && data.image.src !== data.icon ) { #> <img src="{{ data.image.src }}" class="thumbnail" draggable="false" alt="" /> <# } else if ( data.sizes ) { if ( data.sizes.medium ) { #> <img src="{{ data.sizes.medium.url }}" class="thumbnail" draggable="false" alt="" /> <# } else { #> <img src="{{ data.sizes.full.url }}" class="thumbnail" draggable="false" alt="" /> <# } #> <# } else { #> <img src="{{ data.icon }}" class="icon" draggable="false" alt="" /> <# } #> </div> <div class="filename"> <div>{{ data.filename }}</div> </div> <# } #> </div> <# if ( data.buttons.close ) { #> <button type="button" class="button-link attachment-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text"> Remove </span></button> <# } #> </div> <# if ( data.buttons.check ) { #> <button type="button" class="check" tabindex="-1"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text"> Deselect </span></button> <# } #> <# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; if ( data.describe ) { if ( 'image' === data.type ) { #> <input type="text" value="{{ data.caption }}" class="describe" data-setting="caption" aria-label="Caption" placeholder="Caption…" {{ maybeReadOnly }} /> <# } else { #> <input type="text" value="{{ data.title }}" class="describe" data-setting="title" <# if ( 'video' === data.type ) { #> aria-label="Video title" placeholder="Video title…" <# } else if ( 'audio' === data.type ) { #> aria-label="Audio title" placeholder="Audio title…" <# } else { #> aria-label="Media title" placeholder="Media title…" <# } #> {{ maybeReadOnly }} /> <# } } #> </script> <script type="text/html" id="tmpl-attachment-details"> <h2> Attachment Details <span class="settings-save-status" role="status"> <span class="spinner"></span> <span class="saved">Saved.</span> </span> </h2> <div class="attachment-info"> <# if ( 'audio' === data.type ) { #> <div class="wp-media-wrapper wp-audio"> <audio style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none"> <source type="{{ data.mime }}" src="{{ data.url }}" /> </audio> </div> <# } else if ( 'video' === data.type ) { var w_rule = ''; if ( data.width ) { w_rule = 'width: ' + data.width + 'px;'; } else if ( wp.media.view.settings.contentWidth ) { w_rule = 'width: ' + wp.media.view.settings.contentWidth + 'px;'; } #> <div style="{{ w_rule }}" class="wp-media-wrapper wp-video"> <video controls="controls" class="wp-video-shortcode" preload="metadata" <# if ( data.width ) { #>width="{{ data.width }}"<# } #> <# if ( data.height ) { #>height="{{ data.height }}"<# } #> <# if ( data.image && data.image.src !== data.icon ) { #>poster="{{ data.image.src }}"<# } #>> <source type="{{ data.mime }}" src="{{ data.url }}" /> </video> </div> <# } else { #> <div class="thumbnail thumbnail-{{ data.type }}"> <# if ( data.uploading ) { #> <div class="media-progress-bar"><div></div></div> <# } else if ( 'image' === data.type && data.size && data.size.url ) { #> <img src="{{ data.size.url }}" draggable="false" alt="" /> <# } else { #> <img src="{{ data.icon }}" class="icon" draggable="false" alt="" /> <# } #> </div> <# } #> <div class="details"> <div class="filename">{{ data.filename }}</div> <div class="uploaded">{{ data.dateFormatted }}</div> <div class="file-size">{{ data.filesizeHumanReadable }}</div> <# if ( 'image' === data.type && ! data.uploading ) { #> <# if ( data.width && data.height ) { #> <div class="dimensions"> {{ data.width }} by {{ data.height }} pixels </div> <# } #> <# if ( data.originalImageURL && data.originalImageName ) { #> <div class="word-wrap-break-word"> Original image: <a href="{{ data.originalImageURL }}">{{data.originalImageName}}</a> </div> <# } #> <# if ( data.can.save && data.sizes ) { #> <a class="edit-attachment" href="{{ data.editLink }}&image-editor" target="_blank">Edit Image</a> <# } #> <# } #> <# if ( data.fileLength && data.fileLengthHumanReadable ) { #> <div class="file-length">Length: <span aria-hidden="true">{{ data.fileLengthHumanReadable }}</span> <span class="screen-reader-text">{{ data.fileLengthHumanReadable }}</span> </div> <# } #> <# if ( data.mediaStates ) { #> <div class="media-states"><strong>Used as:</strong> {{ data.mediaStates }}</div> <# } #> <# if ( ! data.uploading && data.can.remove ) { #> <button type="button" class="button-link delete-attachment">Delete permanently</button> <# } #> <div class="compat-meta"> <# if ( data.compat && data.compat.meta ) { #> {{{ data.compat.meta }}} <# } #> </div> </div> </div> <# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; #> <# if ( 'image' === data.type ) { #> <span class="setting alt-text has-description" data-setting="alt"> <label for="attachment-details-alt-text" class="name">Alt Text</label> <textarea id="attachment-details-alt-text" aria-describedby="alt-text-description" {{ maybeReadOnly }}>{{ data.alt }}</textarea> </span> <p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span></a>. Leave empty if the image is purely decorative.</p> <# } #> <span class="setting" data-setting="title"> <label for="attachment-details-title" class="name">Title</label> <input type="text" id="attachment-details-title" value="{{ data.title }}" {{ maybeReadOnly }} /> </span> <# if ( 'audio' === data.type ) { #> <span class="setting" data-setting="artist"> <label for="attachment-details-artist" class="name">Artist</label> <input type="text" id="attachment-details-artist" value="{{ data.artist || data.meta.artist || '' }}" /> </span> <span class="setting" data-setting="album"> <label for="attachment-details-album" class="name">Album</label> <input type="text" id="attachment-details-album" value="{{ data.album || data.meta.album || '' }}" /> </span> <# } #> <span class="setting" data-setting="caption"> <label for="attachment-details-caption" class="name">Caption</label> <textarea id="attachment-details-caption" {{ maybeReadOnly }}>{{ data.caption }}</textarea> </span> <span class="setting" data-setting="description"> <label for="attachment-details-description" class="name">Description</label> <textarea id="attachment-details-description" {{ maybeReadOnly }}>{{ data.description }}</textarea> </span> <span class="setting" data-setting="url"> <label for="attachment-details-copy-link" class="name">File URL:</label> <input type="text" class="attachment-details-copy-link" id="attachment-details-copy-link" value="{{ data.url }}" readonly /> <div class="copy-to-clipboard-container"> <button type="button" class="button button-small copy-attachment-url" data-clipboard-target="#attachment-details-copy-link">Copy URL to clipboard</button> <span class="success hidden" aria-hidden="true">Copied!</span> </div> </span> </script> <script type="text/html" id="tmpl-media-selection"> <div class="selection-info"> <span class="count"></span> <# if ( data.editable ) { #> <button type="button" class="button-link edit-selection">Edit Selection</button> <# } #> <# if ( data.clearable ) { #> <button type="button" class="button-link clear-selection">Clear</button> <# } #> </div> <div class="selection-view"></div> </script> <script type="text/html" id="tmpl-attachment-display-settings"> <h2>Attachment Display Settings</h2> <# if ( 'image' === data.type ) { #> <span class="setting align"> <label for="attachment-display-settings-alignment" class="name">Alignment</label> <select id="attachment-display-settings-alignment" class="alignment" data-setting="align" <# if ( data.userSettings ) { #> data-user-setting="align" <# } #>> <option value="left"> Left </option> <option value="center"> Center </option> <option value="right"> Right </option> <option value="none" selected> None </option> </select> </span> <# } #> <span class="setting"> <label for="attachment-display-settings-link-to" class="name"> <# if ( data.model.canEmbed ) { #> Embed or Link <# } else { #> Link To <# } #> </label> <select id="attachment-display-settings-link-to" class="link-to" data-setting="link" <# if ( data.userSettings && ! data.model.canEmbed ) { #> data-user-setting="urlbutton" <# } #>> <# if ( data.model.canEmbed ) { #> <option value="embed" selected> Embed Media Player </option> <option value="file"> <# } else { #> <option value="none" selected> None </option> <option value="file"> <# } #> <# if ( data.model.canEmbed ) { #> Link to Media File <# } else { #> Media File <# } #> </option> <option value="post"> <# if ( data.model.canEmbed ) { #> Link to Attachment Page <# } else { #> Attachment Page <# } #> </option> <# if ( 'image' === data.type ) { #> <option value="custom"> Custom URL </option> <# } #> </select> </span> <span class="setting"> <label for="attachment-display-settings-link-to-custom" class="name">URL</label> <input type="text" id="attachment-display-settings-link-to-custom" class="link-to-custom" data-setting="linkUrl" /> </span> <# if ( 'undefined' !== typeof data.sizes ) { #> <span class="setting"> <label for="attachment-display-settings-size" class="name">Size</label> <select id="attachment-display-settings-size" class="size" name="size" data-setting="size" <# if ( data.userSettings ) { #> data-user-setting="imgsize" <# } #>> <# var size = data.sizes['thumbnail']; if ( size ) { #> <option value="thumbnail" > Thumbnail – {{ size.width }} × {{ size.height }} </option> <# } #> <# var size = data.sizes['medium']; if ( size ) { #> <option value="medium" > Medium – {{ size.width }} × {{ size.height }} </option> <# } #> <# var size = data.sizes['large']; if ( size ) { #> <option value="large" > Large – {{ size.width }} × {{ size.height }} </option> <# } #> <# var size = data.sizes['full']; if ( size ) { #> <option value="full" selected='selected'> Full Size – {{ size.width }} × {{ size.height }} </option> <# } #> </select> </span> <# } #> </script> <script type="text/html" id="tmpl-gallery-settings"> <h2>Gallery Settings</h2> <span class="setting"> <label for="gallery-settings-link-to" class="name">Link To</label> <select id="gallery-settings-link-to" class="link-to" data-setting="link" <# if ( data.userSettings ) { #> data-user-setting="urlbutton" <# } #>> <option value="post" <# if ( ! wp.media.galleryDefaults.link || 'post' === wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>> Attachment Page </option> <option value="file" <# if ( 'file' === wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>> Media File </option> <option value="none" <# if ( 'none' === wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>> None </option> </select> </span> <span class="setting"> <label for="gallery-settings-columns" class="name select-label-inline">Columns</label> <select id="gallery-settings-columns" class="columns" name="columns" data-setting="columns"> <option value="1" <# if ( 1 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 1 </option> <option value="2" <# if ( 2 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 2 </option> <option value="3" <# if ( 3 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 3 </option> <option value="4" <# if ( 4 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 4 </option> <option value="5" <# if ( 5 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 5 </option> <option value="6" <# if ( 6 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 6 </option> <option value="7" <# if ( 7 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 7 </option> <option value="8" <# if ( 8 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 8 </option> <option value="9" <# if ( 9 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 9 </option> </select> </span> <span class="setting"> <input type="checkbox" id="gallery-settings-random-order" data-setting="_orderbyRandom" /> <label for="gallery-settings-random-order" class="checkbox-label-inline">Random Order</label> </span> <span class="setting size"> <label for="gallery-settings-size" class="name">Size</label> <select id="gallery-settings-size" class="size" name="size" data-setting="size" <# if ( data.userSettings ) { #> data-user-setting="imgsize" <# } #> > <option value="thumbnail"> Thumbnail </option> <option value="medium"> Medium </option> <option value="large"> Large </option> <option value="full"> Full Size </option> </select> </span> </script> <script type="text/html" id="tmpl-playlist-settings"> <h2>Playlist Settings</h2> <# var emptyModel = _.isEmpty( data.model ), isVideo = 'video' === data.controller.get('library').props.get('type'); #> <span class="setting"> <input type="checkbox" id="playlist-settings-show-list" data-setting="tracklist" <# if ( emptyModel ) { #> checked="checked" <# } #> /> <label for="playlist-settings-show-list" class="checkbox-label-inline"> <# if ( isVideo ) { #> Show Video List <# } else { #> Show Tracklist <# } #> </label> </span> <# if ( ! isVideo ) { #> <span class="setting"> <input type="checkbox" id="playlist-settings-show-artist" data-setting="artists" <# if ( emptyModel ) { #> checked="checked" <# } #> /> <label for="playlist-settings-show-artist" class="checkbox-label-inline"> Show Artist Name in Tracklist </label> </span> <# } #> <span class="setting"> <input type="checkbox" id="playlist-settings-show-images" data-setting="images" <# if ( emptyModel ) { #> checked="checked" <# } #> /> <label for="playlist-settings-show-images" class="checkbox-label-inline"> Show Images </label> </span> </script> <script type="text/html" id="tmpl-embed-link-settings"> <span class="setting link-text"> <label for="embed-link-settings-link-text" class="name">Link Text</label> <input type="text" id="embed-link-settings-link-text" class="alignment" data-setting="linkText" /> </span> <div class="embed-container" style="display: none;"> <div class="embed-preview"></div> </div> </script> <script type="text/html" id="tmpl-embed-image-settings"> <div class="wp-clearfix"> <div class="thumbnail"> <img src="{{ data.model.url }}" draggable="false" alt="" /> </div> </div> <span class="setting alt-text has-description"> <label for="embed-image-settings-alt-text" class="name">Alternative Text</label> <textarea id="embed-image-settings-alt-text" data-setting="alt" aria-describedby="alt-text-description"></textarea> </span> <p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span></a>. Leave empty if the image is purely decorative.</p> <span class="setting caption"> <label for="embed-image-settings-caption" class="name">Caption</label> <textarea id="embed-image-settings-caption" data-setting="caption"></textarea> </span> <fieldset class="setting-group"> <legend class="name">Align</legend> <span class="setting align"> <span class="button-group button-large" data-setting="align"> <button class="button" value="left"> Left </button> <button class="button" value="center"> Center </button> <button class="button" value="right"> Right </button> <button class="button active" value="none"> None </button> </span> </span> </fieldset> <fieldset class="setting-group"> <legend class="name">Link To</legend> <span class="setting link-to"> <span class="button-group button-large" data-setting="link"> <button class="button" value="file"> Image URL </button> <button class="button" value="custom"> Custom URL </button> <button class="button active" value="none"> None </button> </span> </span> <span class="setting"> <label for="embed-image-settings-link-to-custom" class="name">URL</label> <input type="text" id="embed-image-settings-link-to-custom" class="link-to-custom" data-setting="linkUrl" /> </span> </fieldset> </script> <script type="text/html" id="tmpl-image-details"> <div class="media-embed"> <div class="embed-media-settings"> <div class="column-settings"> <span class="setting alt-text has-description"> <label for="image-details-alt-text" class="name">Alternative Text</label> <textarea id="image-details-alt-text" data-setting="alt" aria-describedby="alt-text-description">{{ data.model.alt }}</textarea> </span> <p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span></a>. Leave empty if the image is purely decorative.</p> <span class="setting caption"> <label for="image-details-caption" class="name">Caption</label> <textarea id="image-details-caption" data-setting="caption">{{ data.model.caption }}</textarea> </span> <h2>Display Settings</h2> <fieldset class="setting-group"> <legend class="legend-inline">Align</legend> <span class="setting align"> <span class="button-group button-large" data-setting="align"> <button class="button" value="left"> Left </button> <button class="button" value="center"> Center </button> <button class="button" value="right"> Right </button> <button class="button active" value="none"> None </button> </span> </span> </fieldset> <# if ( data.attachment ) { #> <# if ( 'undefined' !== typeof data.attachment.sizes ) { #> <span class="setting size"> <label for="image-details-size" class="name">Size</label> <select id="image-details-size" class="size" name="size" data-setting="size" <# if ( data.userSettings ) { #> data-user-setting="imgsize" <# } #>> <# var size = data.sizes['thumbnail']; if ( size ) { #> <option value="thumbnail"> Thumbnail – {{ size.width }} × {{ size.height }} </option> <# } #> <# var size = data.sizes['medium']; if ( size ) { #> <option value="medium"> Medium – {{ size.width }} × {{ size.height }} </option> <# } #> <# var size = data.sizes['large']; if ( size ) { #> <option value="large"> Large – {{ size.width }} × {{ size.height }} </option> <# } #> <# var size = data.sizes['full']; if ( size ) { #> <option value="full"> Full Size – {{ size.width }} × {{ size.height }} </option> <# } #> <option value="custom"> Custom Size </option> </select> </span> <# } #> <div class="custom-size wp-clearfix<# if ( data.model.size !== 'custom' ) { #> hidden<# } #>"> <span class="custom-size-setting"> <label for="image-details-size-width">Width</label> <input type="number" id="image-details-size-width" aria-describedby="image-size-desc" data-setting="customWidth" step="1" value="{{ data.model.customWidth }}" /> </span> <span class="sep" aria-hidden="true">×</span> <span class="custom-size-setting"> <label for="image-details-size-height">Height</label> <input type="number" id="image-details-size-height" aria-describedby="image-size-desc" data-setting="customHeight" step="1" value="{{ data.model.customHeight }}" /> </span> <p id="image-size-desc" class="description">Image size in pixels</p> </div> <# } #> <span class="setting link-to"> <label for="image-details-link-to" class="name">Link To</label> <select id="image-details-link-to" data-setting="link"> <# if ( data.attachment ) { #> <option value="file"> Media File </option> <option value="post"> Attachment Page </option> <# } else { #> <option value="file"> Image URL </option> <# } #> <option value="custom"> Custom URL </option> <option value="none"> None </option> </select> </span> <span class="setting"> <label for="image-details-link-to-custom" class="name">URL</label> <input type="text" id="image-details-link-to-custom" class="link-to-custom" data-setting="linkUrl" /> </span> <div class="advanced-section"> <h2><button type="button" class="button-link advanced-toggle">Advanced Options</button></h2> <div class="advanced-settings hidden"> <div class="advanced-image"> <span class="setting title-text"> <label for="image-details-title-attribute" class="name">Image Title Attribute</label> <input type="text" id="image-details-title-attribute" data-setting="title" value="{{ data.model.title }}" /> </span> <span class="setting extra-classes"> <label for="image-details-css-class" class="name">Image CSS Class</label> <input type="text" id="image-details-css-class" data-setting="extraClasses" value="{{ data.model.extraClasses }}" /> </span> </div> <div class="advanced-link"> <span class="setting link-target"> <input type="checkbox" id="image-details-link-target" data-setting="linkTargetBlank" value="_blank" <# if ( data.model.linkTargetBlank ) { #>checked="checked"<# } #>> <label for="image-details-link-target" class="checkbox-label">Open link in a new tab</label> </span> <span class="setting link-rel"> <label for="image-details-link-rel" class="name">Link Rel</label> <input type="text" id="image-details-link-rel" data-setting="linkRel" value="{{ data.model.linkRel }}" /> </span> <span class="setting link-class-name"> <label for="image-details-link-css-class" class="name">Link CSS Class</label> <input type="text" id="image-details-link-css-class" data-setting="linkClassName" value="{{ data.model.linkClassName }}" /> </span> </div> </div> </div> </div> <div class="column-image"> <div class="image"> <img src="{{ data.model.url }}" draggable="false" alt="" /> <# if ( data.attachment && window.imageEdit ) { #> <div class="actions"> <input type="button" class="edit-attachment button" value="Edit Original" /> <input type="button" class="replace-attachment button" value="Replace" /> </div> <# } #> </div> </div> </div> </div> </script> <script type="text/html" id="tmpl-image-editor"> <div id="media-head-{{ data.id }}"></div> <div id="image-editor-{{ data.id }}"></div> </script> <script type="text/html" id="tmpl-audio-details"> <# var ext, html5types = { mp3: wp.media.view.settings.embedMimes.mp3, ogg: wp.media.view.settings.embedMimes.ogg }; #> <div class="media-embed media-embed-details"> <div class="embed-media-settings embed-audio-settings"> <audio style="visibility: hidden" controls class="wp-audio-shortcode" width="{{ _.isUndefined( data.model.width ) ? 400 : data.model.width }}" preload="{{ _.isUndefined( data.model.preload ) ? 'none' : data.model.preload }}" <# if ( ! _.isUndefined( data.model.autoplay ) && data.model.autoplay ) { #> autoplay<# } if ( ! _.isUndefined( data.model.loop ) && data.model.loop ) { #> loop<# } #> > <# if ( ! _.isEmpty( data.model.src ) ) { #> <source src="{{ data.model.src }}" type="{{ wp.media.view.settings.embedMimes[ data.model.src.split('.').pop() ] }}" /> <# } #> <# if ( ! _.isEmpty( data.model.mp3 ) ) { #> <source src="{{ data.model.mp3 }}" type="{{ wp.media.view.settings.embedMimes[ 'mp3' ] }}" /> <# } #> <# if ( ! _.isEmpty( data.model.ogg ) ) { #> <source src="{{ data.model.ogg }}" type="{{ wp.media.view.settings.embedMimes[ 'ogg' ] }}" /> <# } #> <# if ( ! _.isEmpty( data.model.flac ) ) { #> <source src="{{ data.model.flac }}" type="{{ wp.media.view.settings.embedMimes[ 'flac' ] }}" /> <# } #> <# if ( ! _.isEmpty( data.model.m4a ) ) { #> <source src="{{ data.model.m4a }}" type="{{ wp.media.view.settings.embedMimes[ 'm4a' ] }}" /> <# } #> <# if ( ! _.isEmpty( data.model.wav ) ) { #> <source src="{{ data.model.wav }}" type="{{ wp.media.view.settings.embedMimes[ 'wav' ] }}" /> <# } #> </audio> <# if ( ! _.isEmpty( data.model.src ) ) { ext = data.model.src.split('.').pop(); if ( html5types[ ext ] ) { delete html5types[ ext ]; } #> <span class="setting"> <label for="audio-details-source" class="name">URL</label> <input type="text" id="audio-details-source" readonly data-setting="src" value="{{ data.model.src }}" /> <button type="button" class="button-link remove-setting">Remove audio source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.mp3 ) ) { if ( ! _.isUndefined( html5types.mp3 ) ) { delete html5types.mp3; } #> <span class="setting"> <label for="audio-details-mp3-source" class="name">MP3</label> <input type="text" id="audio-details-mp3-source" readonly data-setting="mp3" value="{{ data.model.mp3 }}" /> <button type="button" class="button-link remove-setting">Remove audio source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.ogg ) ) { if ( ! _.isUndefined( html5types.ogg ) ) { delete html5types.ogg; } #> <span class="setting"> <label for="audio-details-ogg-source" class="name">OGG</label> <input type="text" id="audio-details-ogg-source" readonly data-setting="ogg" value="{{ data.model.ogg }}" /> <button type="button" class="button-link remove-setting">Remove audio source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.flac ) ) { if ( ! _.isUndefined( html5types.flac ) ) { delete html5types.flac; } #> <span class="setting"> <label for="audio-details-flac-source" class="name">FLAC</label> <input type="text" id="audio-details-flac-source" readonly data-setting="flac" value="{{ data.model.flac }}" /> <button type="button" class="button-link remove-setting">Remove audio source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.m4a ) ) { if ( ! _.isUndefined( html5types.m4a ) ) { delete html5types.m4a; } #> <span class="setting"> <label for="audio-details-m4a-source" class="name">M4A</label> <input type="text" id="audio-details-m4a-source" readonly data-setting="m4a" value="{{ data.model.m4a }}" /> <button type="button" class="button-link remove-setting">Remove audio source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.wav ) ) { if ( ! _.isUndefined( html5types.wav ) ) { delete html5types.wav; } #> <span class="setting"> <label for="audio-details-wav-source" class="name">WAV</label> <input type="text" id="audio-details-wav-source" readonly data-setting="wav" value="{{ data.model.wav }}" /> <button type="button" class="button-link remove-setting">Remove audio source</button> </span> <# } #> <# if ( ! _.isEmpty( html5types ) ) { #> <fieldset class="setting-group"> <legend class="name">Add alternate sources for maximum HTML5 playback</legend> <span class="setting"> <span class="button-large"> <# _.each( html5types, function (mime, type) { #> <button class="button add-media-source" data-mime="{{ mime }}">{{ type }}</button> <# } ) #> </span> </span> </fieldset> <# } #> <fieldset class="setting-group"> <legend class="name">Preload</legend> <span class="setting preload"> <span class="button-group button-large" data-setting="preload"> <button class="button" value="auto">Auto</button> <button class="button" value="metadata">Metadata</button> <button class="button active" value="none">None</button> </span> </span> </fieldset> <span class="setting-group"> <span class="setting checkbox-setting autoplay"> <input type="checkbox" id="audio-details-autoplay" data-setting="autoplay" /> <label for="audio-details-autoplay" class="checkbox-label">Autoplay</label> </span> <span class="setting checkbox-setting"> <input type="checkbox" id="audio-details-loop" data-setting="loop" /> <label for="audio-details-loop" class="checkbox-label">Loop</label> </span> </span> </div> </div> </script> <script type="text/html" id="tmpl-video-details"> <# var ext, html5types = { mp4: wp.media.view.settings.embedMimes.mp4, ogv: wp.media.view.settings.embedMimes.ogv, webm: wp.media.view.settings.embedMimes.webm }; #> <div class="media-embed media-embed-details"> <div class="embed-media-settings embed-video-settings"> <div class="wp-video-holder"> <# var w = ! data.model.width || data.model.width > 640 ? 640 : data.model.width, h = ! data.model.height ? 360 : data.model.height; if ( data.model.width && w !== data.model.width ) { h = Math.ceil( ( h * w ) / data.model.width ); } #> <# var w_rule = '', classes = [], w, h, settings = wp.media.view.settings, isYouTube = isVimeo = false; if ( ! _.isEmpty( data.model.src ) ) { isYouTube = data.model.src.match(/youtube|youtu\.be/); isVimeo = -1 !== data.model.src.indexOf('vimeo'); } if ( settings.contentWidth && data.model.width >= settings.contentWidth ) { w = settings.contentWidth; } else { w = data.model.width; } if ( w !== data.model.width ) { h = Math.ceil( ( data.model.height * w ) / data.model.width ); } else { h = data.model.height; } if ( w ) { w_rule = 'width: ' + w + 'px; '; } if ( isYouTube ) { classes.push( 'youtube-video' ); } if ( isVimeo ) { classes.push( 'vimeo-video' ); } #> <div style="{{ w_rule }}" class="wp-video"> <video controls class="wp-video-shortcode {{ classes.join( ' ' ) }}" <# if ( w ) { #>width="{{ w }}"<# } #> <# if ( h ) { #>height="{{ h }}"<# } #> <# if ( ! _.isUndefined( data.model.poster ) && data.model.poster ) { #> poster="{{ data.model.poster }}"<# } #> preload ="{{ _.isUndefined( data.model.preload ) ? 'metadata' : data.model.preload }}" <# if ( ! _.isUndefined( data.model.autoplay ) && data.model.autoplay ) { #> autoplay<# } if ( ! _.isUndefined( data.model.loop ) && data.model.loop ) { #> loop<# } #> > <# if ( ! _.isEmpty( data.model.src ) ) { if ( isYouTube ) { #> <source src="{{ data.model.src }}" type="video/youtube" /> <# } else if ( isVimeo ) { #> <source src="{{ data.model.src }}" type="video/vimeo" /> <# } else { #> <source src="{{ data.model.src }}" type="{{ settings.embedMimes[ data.model.src.split('.').pop() ] }}" /> <# } } #> <# if ( data.model.mp4 ) { #> <source src="{{ data.model.mp4 }}" type="{{ settings.embedMimes[ 'mp4' ] }}" /> <# } #> <# if ( data.model.m4v ) { #> <source src="{{ data.model.m4v }}" type="{{ settings.embedMimes[ 'm4v' ] }}" /> <# } #> <# if ( data.model.webm ) { #> <source src="{{ data.model.webm }}" type="{{ settings.embedMimes[ 'webm' ] }}" /> <# } #> <# if ( data.model.ogv ) { #> <source src="{{ data.model.ogv }}" type="{{ settings.embedMimes[ 'ogv' ] }}" /> <# } #> <# if ( data.model.flv ) { #> <source src="{{ data.model.flv }}" type="{{ settings.embedMimes[ 'flv' ] }}" /> <# } #> {{{ data.model.content }}} </video> </div> <# if ( ! _.isEmpty( data.model.src ) ) { ext = data.model.src.split('.').pop(); if ( html5types[ ext ] ) { delete html5types[ ext ]; } #> <span class="setting"> <label for="video-details-source" class="name">URL</label> <input type="text" id="video-details-source" readonly data-setting="src" value="{{ data.model.src }}" /> <button type="button" class="button-link remove-setting">Remove video source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.mp4 ) ) { if ( ! _.isUndefined( html5types.mp4 ) ) { delete html5types.mp4; } #> <span class="setting"> <label for="video-details-mp4-source" class="name">MP4</label> <input type="text" id="video-details-mp4-source" readonly data-setting="mp4" value="{{ data.model.mp4 }}" /> <button type="button" class="button-link remove-setting">Remove video source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.m4v ) ) { if ( ! _.isUndefined( html5types.m4v ) ) { delete html5types.m4v; } #> <span class="setting"> <label for="video-details-m4v-source" class="name">M4V</label> <input type="text" id="video-details-m4v-source" readonly data-setting="m4v" value="{{ data.model.m4v }}" /> <button type="button" class="button-link remove-setting">Remove video source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.webm ) ) { if ( ! _.isUndefined( html5types.webm ) ) { delete html5types.webm; } #> <span class="setting"> <label for="video-details-webm-source" class="name">WEBM</label> <input type="text" id="video-details-webm-source" readonly data-setting="webm" value="{{ data.model.webm }}" /> <button type="button" class="button-link remove-setting">Remove video source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.ogv ) ) { if ( ! _.isUndefined( html5types.ogv ) ) { delete html5types.ogv; } #> <span class="setting"> <label for="video-details-ogv-source" class="name">OGV</label> <input type="text" id="video-details-ogv-source" readonly data-setting="ogv" value="{{ data.model.ogv }}" /> <button type="button" class="button-link remove-setting">Remove video source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.flv ) ) { if ( ! _.isUndefined( html5types.flv ) ) { delete html5types.flv; } #> <span class="setting"> <label for="video-details-flv-source" class="name">FLV</label> <input type="text" id="video-details-flv-source" readonly data-setting="flv" value="{{ data.model.flv }}" /> <button type="button" class="button-link remove-setting">Remove video source</button> </span> <# } #> </div> <# if ( ! _.isEmpty( html5types ) ) { #> <fieldset class="setting-group"> <legend class="name">Add alternate sources for maximum HTML5 playback</legend> <span class="setting"> <span class="button-large"> <# _.each( html5types, function (mime, type) { #> <button class="button add-media-source" data-mime="{{ mime }}">{{ type }}</button> <# } ) #> </span> </span> </fieldset> <# } #> <# if ( ! _.isEmpty( data.model.poster ) ) { #> <span class="setting"> <label for="video-details-poster-image" class="name">Poster Image</label> <input type="text" id="video-details-poster-image" readonly data-setting="poster" value="{{ data.model.poster }}" /> <button type="button" class="button-link remove-setting">Remove poster image</button> </span> <# } #> <fieldset class="setting-group"> <legend class="name">Preload</legend> <span class="setting preload"> <span class="button-group button-large" data-setting="preload"> <button class="button" value="auto">Auto</button> <button class="button" value="metadata">Metadata</button> <button class="button active" value="none">None</button> </span> </span> </fieldset> <span class="setting-group"> <span class="setting checkbox-setting autoplay"> <input type="checkbox" id="video-details-autoplay" data-setting="autoplay" /> <label for="video-details-autoplay" class="checkbox-label">Autoplay</label> </span> <span class="setting checkbox-setting"> <input type="checkbox" id="video-details-loop" data-setting="loop" /> <label for="video-details-loop" class="checkbox-label">Loop</label> </span> </span> <span class="setting" data-setting="content"> <# var content = ''; if ( ! _.isEmpty( data.model.content ) ) { var tracks = jQuery( data.model.content ).filter( 'track' ); _.each( tracks.toArray(), function( track, index ) { content += track.outerHTML; #> <label for="video-details-track-{{ index }}" class="name">Tracks (subtitles, captions, descriptions, chapters, or metadata)</label> <input class="content-track" type="text" id="video-details-track-{{ index }}" aria-describedby="video-details-track-desc-{{ index }}" value="{{ track.outerHTML }}" /> <span class="description" id="video-details-track-desc-{{ index }}"> The srclang, label, and kind values can be edited to set the video track language and kind. </span> <button type="button" class="button-link remove-setting remove-track">Remove video track</button><br /> <# } ); #> <# } else { #> <span class="name">Tracks (subtitles, captions, descriptions, chapters, or metadata)</span><br /> <em>There are no associated subtitles.</em> <# } #> <textarea class="hidden content-setting">{{ content }}</textarea> </span> </div> </div> </script> <script type="text/html" id="tmpl-editor-gallery"> <# if ( data.attachments.length ) { #> <div class="gallery gallery-columns-{{ data.columns }}"> <# _.each( data.attachments, function( attachment, index ) { #> <dl class="gallery-item"> <dt class="gallery-icon"> <# if ( attachment.thumbnail ) { #> <img src="{{ attachment.thumbnail.url }}" width="{{ attachment.thumbnail.width }}" height="{{ attachment.thumbnail.height }}" alt="{{ attachment.alt }}" /> <# } else { #> <img src="{{ attachment.url }}" alt="{{ attachment.alt }}" /> <# } #> </dt> <# if ( attachment.caption ) { #> <dd class="wp-caption-text gallery-caption"> {{{ data.verifyHTML( attachment.caption ) }}} </dd> <# } #> </dl> <# if ( index % data.columns === data.columns - 1 ) { #> <br style="clear: both;" /> <# } #> <# } ); #> </div> <# } else { #> <div class="wpview-error"> <div class="dashicons dashicons-format-gallery"></div><p>No items found.</p> </div> <# } #> </script> <script type="text/html" id="tmpl-crop-content"> <img class="crop-image" src="{{ data.url }}" alt="Image crop area preview. Requires mouse interaction." /> <div class="upload-errors"></div> </script> <script type="text/html" id="tmpl-site-icon-preview-crop"> <style> :root{ --site-icon-url: url( "{{ data.url }}" ); } </style> <h2>Site Icon Preview</h2> <p>As an app icon and a browser icon.</p> <div class="site-icon-preview crop"> <div class="image-preview-wrap app-icon-preview"> <img id="preview-app-icon" src="{{ data.url }}" class="app-icon-preview" alt="Preview as an app icon" /> </div> <div class="site-icon-preview-browser"> <svg role="img" aria-hidden="true" fill="none" xmlns="http://www.w3.org/2000/svg" class="browser-buttons"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 20a6 6 0 1 1 12 0 6 6 0 0 1-12 0Zm18 0a6 6 0 1 1 12 0 6 6 0 0 1-12 0Zm24-6a6 6 0 1 0 0 12 6 6 0 0 0 0-12Z" /></svg> <div class="site-icon-preview-tab"> <div class="image-preview-wrap browser"> <img id="preview-favicon" src="{{ data.url }}" class="browser-icon-preview" alt="Preview as a browser icon" /> </div> <div class="site-icon-preview-site-title" aria-hidden="true"><# print( 'Bot.to' ) #></div> <svg role="img" aria-hidden="true" fill="none" xmlns="http://www.w3.org/2000/svg" class="close-button"> <path d="M12 13.0607L15.7123 16.773L16.773 15.7123L13.0607 12L16.773 8.28772L15.7123 7.22706L12 10.9394L8.28771 7.22705L7.22705 8.28771L10.9394 12L7.22706 15.7123L8.28772 16.773L12 13.0607Z" /> </svg> </div> </div> </div> </div> </script> <div id="fb-root"></div> <script type='text/javascript'> (function () { var c = document.body.className; c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); document.body.className = c; })(); </script> <script type="text/javascript" src="https://bot.to/wp-includes/js/dist/hooks.min.js?ver=dd5603f07f9220ed27f1" id="wp-hooks-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/dist/i18n.min.js?ver=c26c3dc7bed366793375" id="wp-i18n-js"></script> <script type="text/javascript" id="wp-i18n-js-after"> /* <![CDATA[ */ wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); //# sourceURL=wp-i18n-js-after /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.4" id="swv-js"></script> <script type="text/javascript" id="contact-form-7-js-before"> /* <![CDATA[ */ var wpcf7 = { "api": { "root": "https:\/\/bot.to\/wp-json\/", "namespace": "contact-form-7\/v1" } }; //# sourceURL=contact-form-7-js-before /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.4" id="contact-form-7-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/underscore.min.js?ver=1.13.7" id="underscore-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/shortcode.min.js?ver=6.9.1" id="shortcode-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/backbone.min.js?ver=1.6.0" id="backbone-js"></script> <script type="text/javascript" id="wp-util-js-extra"> /* <![CDATA[ */ var _wpUtilSettings = {"ajax":{"url":"/wp-admin/admin-ajax.php"}}; //# sourceURL=wp-util-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-includes/js/wp-util.min.js?ver=6.9.1" id="wp-util-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/wp-backbone.min.js?ver=6.9.1" id="wp-backbone-js"></script> <script type="text/javascript" id="media-models-js-extra"> /* <![CDATA[ */ var _wpMediaModelsL10n = {"settings":{"ajaxurl":"/wp-admin/admin-ajax.php","post":{"id":0}}}; //# sourceURL=media-models-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-includes/js/media-models.min.js?ver=6.9.1" id="media-models-js"></script> <script type="text/javascript" id="wp-plupload-js-extra"> /* <![CDATA[ */ var pluploadL10n = {"queue_limit_exceeded":"You have attempted to queue too many files.","file_exceeds_size_limit":"%s exceeds the maximum upload size for this site.","zero_byte_file":"This file is empty. Please try another.","invalid_filetype":"This file cannot be processed by the web server.","not_an_image":"This file is not an image. Please try another.","image_memory_exceeded":"Memory exceeded. Please try another smaller file.","image_dimensions_exceeded":"This is larger than the maximum size. Please try another.","default_error":"An error occurred in the upload. Please try again later.","missing_upload_url":"There was a configuration error. Please contact the server administrator.","upload_limit_exceeded":"You may only upload 1 file.","http_error":"Unexpected response from the server. The file may have been uploaded successfully. Check in the Media Library or reload the page.","http_error_image":"The server cannot process the image. This can happen if the server is busy or does not have enough resources to complete the task. Uploading a smaller image may help. Suggested maximum size is 2560 pixels.","upload_failed":"Upload failed.","big_upload_failed":"Please try uploading this file with the %1$sbrowser uploader%2$s.","big_upload_queued":"%s exceeds the maximum upload size for the multi-file uploader when used in your browser.","io_error":"IO error.","security_error":"Security error.","file_cancelled":"File canceled.","upload_stopped":"Upload stopped.","dismiss":"Dismiss","crunching":"Crunching\u2026","deleted":"moved to the Trash.","error_uploading":"\u201c%s\u201d has failed to upload.","unsupported_image":"This image cannot be displayed in a web browser. For best results convert it to JPEG before uploading.","noneditable_image":"The web server cannot generate responsive image sizes for this image. Convert it to JPEG or PNG before uploading.","file_url_copied":"The file URL has been copied to your clipboard"}; var _wpPluploadSettings = {"defaults":{"file_data_name":"async-upload","url":"/wp-admin/async-upload.php","filters":{"max_file_size":"104857600b","mime_types":[{"extensions":"jpg,jpeg,jpe,gif,png,bmp,tiff,tif,webp,avif,ico,heic,heif,heics,heifs,asf,asx,wmv,wmx,wm,avi,divx,flv,mov,qt,mpeg,mpg,mpe,mp4,m4v,ogv,webm,mkv,3gp,3gpp,3g2,3gp2,txt,asc,c,cc,h,srt,csv,tsv,ics,rtx,css,vtt,dfxp,mp3,m4a,m4b,aac,ra,ram,wav,x-wav,ogg,oga,flac,mid,midi,wma,wax,mka,rtf,pdf,class,tar,zip,gz,gzip,rar,7z,psd,xcf,doc,pot,pps,ppt,wri,xla,xls,xlt,xlw,mdb,mpp,docx,docm,dotx,dotm,xlsx,xlsm,xlsb,xltx,xltm,xlam,pptx,pptm,ppsx,ppsm,potx,potm,ppam,sldx,sldm,onetoc,onetoc2,onetmp,onepkg,oxps,xps,odt,odp,ods,odg,odc,odb,odf,wp,wpd,key,numbers,pages"}]},"avif_upload_error":true,"heic_upload_error":true,"multipart_params":{"action":"upload-attachment","_wpnonce":"c30c7c3398"}},"browser":{"mobile":false,"supported":true},"limitExceeded":false}; //# sourceURL=wp-plupload-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-includes/js/plupload/wp-plupload.min.js?ver=6.9.1" id="wp-plupload-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3" id="jquery-ui-core-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/jquery/ui/mouse.min.js?ver=1.13.3" id="jquery-ui-mouse-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/jquery/ui/sortable.min.js?ver=1.13.3" id="jquery-ui-sortable-js"></script> <script type="text/javascript" id="mediaelement-core-js-before"> /* <![CDATA[ */ var mejsL10n = {"language":"en","strings":{"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}}; //# sourceURL=mediaelement-core-js-before /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-includes/js/mediaelement/mediaelement-and-player.min.js?ver=4.2.17" id="mediaelement-core-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/mediaelement/mediaelement-migrate.min.js?ver=6.9.1" id="mediaelement-migrate-js"></script> <script type="text/javascript" id="mediaelement-js-extra"> /* <![CDATA[ */ var _wpmejsSettings = {"pluginPath":"/wp-includes/js/mediaelement/","classPrefix":"mejs-","stretching":"responsive","audioShortcodeLibrary":"mediaelement","videoShortcodeLibrary":"mediaelement"}; //# sourceURL=mediaelement-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-includes/js/mediaelement/wp-mediaelement.min.js?ver=6.9.1" id="wp-mediaelement-js"></script> <script type="text/javascript" id="wp-api-request-js-extra"> /* <![CDATA[ */ var wpApiSettings = {"root":"https://bot.to/wp-json/","nonce":"545ab87aa5","versionString":"wp/v2/"}; //# sourceURL=wp-api-request-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-includes/js/api-request.min.js?ver=6.9.1" id="wp-api-request-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/dist/dom-ready.min.js?ver=f77871ff7694fffea381" id="wp-dom-ready-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/dist/a11y.min.js?ver=cb460b4676c94bd228ed" id="wp-a11y-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/clipboard.min.js?ver=2.0.11" id="clipboard-js"></script> <script type="text/javascript" id="media-views-js-extra"> /* <![CDATA[ */ var _wpMediaViewsL10n = {"mediaFrameDefaultTitle":"Media","url":"URL","addMedia":"Add media","search":"Search","select":"Select","cancel":"Cancel","update":"Update","replace":"Replace","remove":"Remove","back":"Back","selected":"%d selected","dragInfo":"Drag and drop to reorder media files.","uploadFilesTitle":"Upload files","uploadImagesTitle":"Upload images","mediaLibraryTitle":"Media Library","insertMediaTitle":"Add media","createNewGallery":"Create a new gallery","createNewPlaylist":"Create a new playlist","createNewVideoPlaylist":"Create a new video playlist","returnToLibrary":"\u2190 Go to library","allMediaItems":"All media items","allDates":"All dates","noItemsFound":"No items found.","insertIntoPost":"Insert into post","unattached":"Unattached","mine":"Mine","trash":"Trash","uploadedToThisPost":"Uploaded to this post","warnDelete":"You are about to permanently delete this item from your site.\nThis action cannot be undone.\n 'Cancel' to stop, 'OK' to delete.","warnBulkDelete":"You are about to permanently delete these items from your site.\nThis action cannot be undone.\n 'Cancel' to stop, 'OK' to delete.","warnBulkTrash":"You are about to trash these items.\n 'Cancel' to stop, 'OK' to delete.","bulkSelect":"Bulk select","trashSelected":"Move to Trash","restoreSelected":"Restore from Trash","deletePermanently":"Delete permanently","errorDeleting":"Error in deleting the attachment.","apply":"Apply","filterByDate":"Filter by date","filterByType":"Filter by type","searchLabel":"Search media","searchMediaLabel":"Search media","searchMediaPlaceholder":"Search media items...","mediaFound":"Number of media items found: %d","noMedia":"No media items found.","noMediaTryNewSearch":"No media items found. Try a different search.","attachmentDetails":"Attachment details","insertFromUrlTitle":"Insert from URL","setFeaturedImageTitle":"Featured image","setFeaturedImage":"Set featured image","createGalleryTitle":"Create gallery","editGalleryTitle":"Edit gallery","cancelGalleryTitle":"\u2190 Cancel gallery","insertGallery":"Insert gallery","updateGallery":"Update gallery","addToGallery":"Add to gallery","addToGalleryTitle":"Add to gallery","reverseOrder":"Reverse order","imageDetailsTitle":"Image details","imageReplaceTitle":"Replace image","imageDetailsCancel":"Cancel edit","editImage":"Edit image","chooseImage":"Choose image","selectAndCrop":"Select and crop","skipCropping":"Skip cropping","cropImage":"Crop image","cropYourImage":"Crop your image","cropping":"Cropping\u2026","suggestedDimensions":"Suggested image dimensions: %1$s by %2$s pixels.","cropError":"There has been an error cropping your image.","audioDetailsTitle":"Audio details","audioReplaceTitle":"Replace audio","audioAddSourceTitle":"Add audio source","audioDetailsCancel":"Cancel edit","videoDetailsTitle":"Video details","videoReplaceTitle":"Replace video","videoAddSourceTitle":"Add video source","videoDetailsCancel":"Cancel edit","videoSelectPosterImageTitle":"Select poster image","videoAddTrackTitle":"Add subtitles","playlistDragInfo":"Drag and drop to reorder tracks.","createPlaylistTitle":"Create audio playlist","editPlaylistTitle":"Edit audio playlist","cancelPlaylistTitle":"\u2190 Cancel audio playlist","insertPlaylist":"Insert audio playlist","updatePlaylist":"Update audio playlist","addToPlaylist":"Add to audio playlist","addToPlaylistTitle":"Add to Audio Playlist","videoPlaylistDragInfo":"Drag and drop to reorder videos.","createVideoPlaylistTitle":"Create video playlist","editVideoPlaylistTitle":"Edit video playlist","cancelVideoPlaylistTitle":"\u2190 Cancel video playlist","insertVideoPlaylist":"Insert video playlist","updateVideoPlaylist":"Update video playlist","addToVideoPlaylist":"Add to video playlist","addToVideoPlaylistTitle":"Add to video Playlist","filterAttachments":"Filter media","attachmentsList":"Media list","settings":{"tabs":[],"tabUrl":"https://bot.to/wp-admin/media-upload.php?chromeless=1","mimeTypes":{"image":"Images","audio":"Audio","video":"Video","application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-word.document.macroEnabled.12,application/vnd.ms-word.template.macroEnabled.12,application/vnd.oasis.opendocument.text,application/vnd.apple.pages,application/pdf,application/vnd.ms-xpsdocument,application/oxps,application/rtf,application/wordperfect,application/octet-stream":"Documents","application/vnd.apple.numbers,application/vnd.oasis.opendocument.spreadsheet,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel.sheet.macroEnabled.12,application/vnd.ms-excel.sheet.binary.macroEnabled.12":"Spreadsheets","application/x-gzip,application/rar,application/x-tar,application/zip,application/x-7z-compressed":"Archives"},"captions":true,"nonce":{"sendToEditor":"ad112460d6","setAttachmentThumbnail":"d937a72269"},"post":{"id":0},"defaultProps":{"link":"none","align":"","size":""},"attachmentCounts":{"audio":1,"video":1},"oEmbedProxyUrl":"https://bot.to/wp-json/oembed/1.0/proxy","embedExts":["mp3","ogg","flac","m4a","wav","mp4","m4v","webm","ogv","flv"],"embedMimes":{"mp3":"audio/mpeg","ogg":"audio/ogg","flac":"audio/flac","m4a":"audio/mpeg","wav":"audio/wav","mp4":"video/mp4","m4v":"video/mp4","webm":"video/webm","ogv":"video/ogg","flv":"video/x-flv"},"contentWidth":640,"months":[{"year":"2026","month":"2","text":"February 2026"},{"year":"2026","month":"1","text":"January 2026"},{"year":"2025","month":"12","text":"December 2025"},{"year":"2025","month":"11","text":"November 2025"}],"mediaTrash":0,"infiniteScrolling":0}}; //# sourceURL=media-views-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-includes/js/media-views.min.js?ver=6.9.1" id="media-views-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/media-editor.min.js?ver=6.9.1" id="media-editor-js"></script> <script type="text/javascript" src="https://bot.to/wp-includes/js/media-audiovideo.min.js?ver=6.9.1" id="media-audiovideo-js"></script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/routiz/assets/dist/lib/gsap/gsap.min.js?ver=3.0.0" id="gsap-js"></script> <script type="text/javascript" id="rz-main-js-extra"> /* <![CDATA[ */ var rz_vars = {"post_id":"11337","debug":"","is_admin":"","admin_ajax":"https://bot.to/wp-admin/admin-ajax.php","nonce":"e9891761f5","site_url":"https://bot.to/","uri_assets":"https://bot.to/wp-content/plugins/routiz/","date_format":"d.m.Y","sdk":{"map_provider":"google","facebook":{"app_id":""},"google":{"client_id":""}},"localize":{"select":"Select","listing_views":"Listing views"},"pages":{"explore":"https://bot.to/explore/","submission":"https://bot.to/submission/"},"map":{"style":"custom","geolocation_restrictions":[],"style_custom":[{"featureType":"all","elementType":"geometry.fill","stylers":[{"visibility":"on"}]},{"featureType":"all","elementType":"geometry.stroke","stylers":[{"visibility":"on"}]},{"featureType":"all","elementType":"labels.text.fill","stylers":[{"visibility":"simplified"}]},{"featureType":"all","elementType":"labels.text.stroke","stylers":[{"visibility":"off"}]},{"featureType":"all","elementType":"labels.icon","stylers":[{"visibility":"simplified"}]},{"featureType":"poi.attraction","elementType":"geometry.fill","stylers":[{"visibility":"off"}]},{"featureType":"poi.attraction","elementType":"labels.text.fill","stylers":[{"visibility":"off"}]},{"featureType":"poi.attraction","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"poi.business","elementType":"geometry.fill","stylers":[{"visibility":"off"}]},{"featureType":"poi.business","elementType":"labels.text.fill","stylers":[{"visibility":"off"}]},{"featureType":"poi.business","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"poi.government","elementType":"geometry.fill","stylers":[{"visibility":"off"}]},{"featureType":"poi.government","elementType":"labels.text.fill","stylers":[{"visibility":"off"}]},{"featureType":"poi.government","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"poi.medical","elementType":"geometry.fill","stylers":[{"visibility":"off"}]},{"featureType":"poi.medical","elementType":"labels.text.fill","stylers":[{"visibility":"off"}]},{"featureType":"poi.medical","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"poi.place_of_worship","elementType":"geometry.fill","stylers":[{"visibility":"off"}]},{"featureType":"poi.place_of_worship","elementType":"labels.text.fill","stylers":[{"visibility":"off"}]},{"featureType":"poi.place_of_worship","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"poi.school","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"poi.sports_complex","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"road.highway.controlled_access","elementType":"geometry.fill","stylers":[{"visibility":"on"}]},{"featureType":"road.highway.controlled_access","elementType":"labels.text.fill","stylers":[{"visibility":"on"}]},{"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"visibility":"on"}]},{"featureType":"road.arterial","elementType":"labels.text.fill","stylers":[{"visibility":"on"}]},{"featureType":"road.arterial","elementType":"labels.icon","stylers":[{"visibility":"on"}]},{"featureType":"road.local","elementType":"geometry.fill","stylers":[{"visibility":"on"}]},{"featureType":"road.local","elementType":"labels.text.fill","stylers":[{"visibility":"on"}]}],"lat":"","lng":""},"explore":{"is_type":null},"chart":{"colors":{"main":"#e61e4d"}}}; //# sourceURL=rz-main-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/routiz/assets/dist/js/main.js?ver=3.0.0" id="rz-main-js"></script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/routiz/assets/dist/js/account.js?ver=3.0.0" id="rz-account-js"></script> <script type="text/javascript" id="woocommerce-js-extra"> /* <![CDATA[ */ var woocommerce_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_password_show":"Show password","i18n_password_hide":"Hide password"}; //# sourceURL=woocommerce-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=10.4.3" id="woocommerce-js" data-wp-strategy="defer"></script> <script type="text/javascript" id="rz-chat-delete-js-extra"> /* <![CDATA[ */ var chatDeleteAjax = {"ajax_url":"https://bot.to/wp-admin/admin-ajax.php","nonce":"0c9d5ec4c9"}; //# sourceURL=rz-chat-delete-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-content/themes/brikk/assets/dist/js/chat-delete.js" id="rz-chat-delete-js"></script> <script type="text/javascript" id="brk-main-js-extra"> /* <![CDATA[ */ var brikk_vars = {"admin_ajax":"https://bot.to/wp-admin/admin-ajax.php","nonce":"e9891761f5","site_url":"https://bot.to/","uri_assets":"https://bot.to/wp-content/themes/brikk/","strings":[]}; //# sourceURL=brk-main-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-content/themes/brikk/assets/dist/js/main.js?ver=2.2.0" id="brk-main-js"></script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/utillz-login/js/front/combined.js?ver=2.0.0" id="the_champ_combined_script-js"></script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=10.4.3" id="sourcebuster-js-js"></script> <script type="text/javascript" id="wc-order-attribution-js-extra"> /* <![CDATA[ */ var wc_order_attribution = {"params":{"lifetime":1.0000000000000001e-5,"session":30,"base64":false,"ajaxurl":"https://bot.to/wp-admin/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}}; //# sourceURL=wc-order-attribution-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=10.4.3" id="wc-order-attribution-js"></script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/routiz/assets/dist/lib/select2/js/select2.min.js?ver=3.0.0" id="select2-js"></script> <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key&libraries=places&ver=3.0.0" id="map-apis-js"></script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/routiz/assets/dist/js/form.js?ver=3.0.0" id="rz-form-js"></script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/routiz/assets/dist/lib/flickity/flickity.pkgd.min.js?ver=3.0.0" id="flickity-js"></script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/routiz/assets/dist/js/explore.js?ver=3.0.0" id="rz-explore-js"></script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/routiz/assets/dist/js/listing.js?ver=3.0.0" id="rz-listing-js"></script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-contact-form-7-83c32a029ed2cf5b6a82.js" id="googlesitekit-events-provider-contact-form-7-js" defer></script> <script type="text/javascript" id="googlesitekit-events-provider-woocommerce-js-before"> /* <![CDATA[ */ window._googlesitekit.wcdata = window._googlesitekit.wcdata || {}; window._googlesitekit.wcdata.products = []; window._googlesitekit.wcdata.add_to_cart = null; window._googlesitekit.wcdata.currency = "USD"; window._googlesitekit.wcdata.eventsToTrack = ["add_to_cart","purchase"]; //# sourceURL=googlesitekit-events-provider-woocommerce-js-before /* ]]> */ </script> <script type="text/javascript" src="https://bot.to/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-woocommerce-3cd9b44a3ba68626e9cb.js" id="googlesitekit-events-provider-woocommerce-js" defer></script> <script type="text/javascript" src="https://bot.to/wp-content/themes/brikk/assets/dist/js/jquery.ui.touch.js?ver=6.9.1" id="jquery_script-js"></script> <script id="wp-emoji-settings" type="application/json"> {"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://bot.to/wp-includes/js/wp-emoji-release.min.js?ver=6.9.1"}} </script> <script type="module"> /* <![CDATA[ */ /*! This file is auto-generated */ const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))}); //# sourceURL=https://bot.to/wp-includes/js/wp-emoji-loader.min.js /* ]]> */ </script> <script> jQuery(document).ready(function($) { let suggestionSelected = false; // Track when user selects suggestion from Google Places $(document).on('mousedown', '.pac-item', function() { suggestionSelected = true; }); // Reset flag when user types $(document).on('input', 'input[name="rz_geo"]', function() { suggestionSelected = false; }); // Handle Enter key press - Brikks specific approach $(document).on('keydown', 'input[name="rz_geo"]', function(e) { if (e.which === 13 || e.keyCode === 13) { // Enter key const $input = $(this); if (!suggestionSelected) { e.preventDefault(); e.stopPropagation(); // Wait a moment for suggestions to be visible setTimeout(function() { // Look for the first visible suggestion let $firstSuggestion = $('.pac-item:first:visible'); // Alternative selectors for different implementations if ($firstSuggestion.length === 0) { $firstSuggestion = $('.pac-container:visible .pac-item:first'); } if ($firstSuggestion.length === 0) { $firstSuggestion = $('[class*="pac-item"]:visible:first'); } console.log('Suggestions found:', $('.pac-item').length); // Debug console.log('Visible suggestions:', $('.pac-item:visible').length); // Debug if ($firstSuggestion.length > 0) { // Simulate the exact same events that happen on manual click $firstSuggestion[0].dispatchEvent(new MouseEvent('mousedown', { bubbles: true, cancelable: true, view: window })); $firstSuggestion[0].dispatchEvent(new MouseEvent('mouseup', { bubbles: true, cancelable: true, view: window })); $firstSuggestion[0].dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window })); // Mark as selected suggestionSelected = true; // Submit the form after Google Places processes the selection setTimeout(function() { // Try home page button first if ($('.rz-search-submit button[type="submit"]').length > 0) { $('.rz-search-submit button[type="submit"]')[0].click(); } // Try explore page button else if ($('.rz-button-accent.rz-action-filter').length > 0) { $('.rz-button-accent.rz-action-filter')[0].click(); } // Fallback to form submit else { $input.closest('form').submit(); } }, 300); } else { console.log('No suggestions found, checking input value'); // Debug // If there are no suggestions but there's text, allow submission if ($input.val().trim().length > 0) { suggestionSelected = true; // Try home page button first if ($('.rz-search-submit button[type="submit"]').length > 0) { $('.rz-search-submit button[type="submit"]')[0].click(); } // Try explore page button else if ($('.rz-button-accent.rz-action-filter').length > 0) { $('.rz-button-accent.rz-action-filter')[0].click(); } // Fallback else { $input.closest('form').submit(); } } else { alert('Please type a location and select from suggestions'); } } }, 100); return false; } } }); // Additional approach: Use Google's native keyboard navigation $(document).on('keydown', 'input[name="rz_geo"]', function(e) { if (e.which === 13 && !suggestionSelected) { const input = this; // Try using Google's built-in keyboard navigation setTimeout(function() { // Simulate arrow down to highlight first suggestion const arrowDownEvent = new KeyboardEvent('keydown', { key: 'ArrowDown', keyCode: 40, which: 40, bubbles: true, cancelable: true }); input.dispatchEvent(arrowDownEvent); // Then simulate enter to select it setTimeout(function() { const enterEvent = new KeyboardEvent('keydown', { key: 'Enter', keyCode: 13, which: 13, bubbles: true, cancelable: true }); input.dispatchEvent(enterEvent); }, 50); }, 50); } }); }); </script> </body> </html>