How to Add Keywords in WordPress

How to Add Keywords in WordPress

مقدمة

Learning how to add keywords in ووردبريس is not about repeating the same phrase as many times as possible. Modern SEO works best when a page answers a clear question, uses relevant language naturally, and organizes information so readers and search engines can understand it.

WordPress gives you several useful places to include keywords, such as the page title, URL, headings, paragraphs, image alt text, and meta description. However, beginners often confuse normal SEO keywords with the old meta keywords tag. These are different, and understanding that difference can save you from spending time on a method that does not improve Google rankings.

This guide explains where WordPress keywords belong, how to avoid stuffing, and how to add a meta keywords tag when a project still requires one.

What Are Keywords in WordPress?

Keywords are words or phrases that describe the main subject of a webpage. They often reflect what a person types into a search engine when looking for information, a product, or a solution.

For example, someone creating a tutorial may target “how to create a contact page in WordPress.” A local bakery may use “custom birthday cakes in Austin.” A product page may focus on a phrase that combines the product name with its material, size, feature, or intended use.

WordPress does not include one universal keyword field that automatically improves rankings. Instead, you place a primary keyword in the visible and technical parts of the page where it provides useful context.

The most important locations usually include the title, URL, main heading, introduction, relevant subheadings, body content, image alt text, meta description, and internal links.

A keyword should help explain the page. It should never be added only to increase repetition.

Keywords and Meta Keywords Are Not the Same

How to Add Keywords in WordPress-Keywords and Meta Keywords Are Not the Same

When people search for how to add keywords in WordPress, they may be asking about two different practices.

The first is on-page keyword optimization. This means using a target phrase naturally in the title, headings, content, URL, images, and other meaningful page elements.

The second is the meta keywords tag, a hidden HTML element placed inside the <head> section of a webpage:

<meta name="keywords" content="wordpress seo, keyword research, blogging tips">

Meta keywords were once used to list a page’s topics for search engines. Google now states that it does not use the meta keywords tag for indexing or ranking. It supports other metadata, including descriptions and robots directives, but ignores the keywords tag.

Adding this tag will therefore not help a page rank higher in Google. It may still be required by a legacy platform, internal search system, specialized database, or client workflow. For most WordPress websites, improving visible content, page structure, titles, and internal links is far more valuable.

Choose One Primary Keyword

Before editing a WordPress post or page, choose one primary keyword that closely matches its purpose.

A useful primary keyword should:

  • Describe what the page actually offers
  • Match the likely intention behind the search
  • Be specific enough to guide the content

“WordPress” is too broad for a beginner tutorial. “How to add keywords in WordPress” is more focused because it reveals exactly what the reader wants to learn.

You can also identify several related phrases, such as “WordPress SEO keywords,” “keyword placement in WordPress,” “add meta keywords in WordPress,” and “optimize WordPress content.”

Related terms should expand the topic rather than repeat minor variations of the same phrase.

Add the Keyword to the Page Title

In the WordPress block editor, enter the post or page title at the top of the editing screen. The title should describe the subject accurately and give readers a clear reason to click.

على سبيل المثال:

How to Add Keywords in WordPress: A Beginner-Friendly Guide

This title includes the target phrase while setting an honest expectation. Avoid vague titles, unnecessary clickbait, or titles packed with several similar keyword variations.

Search engines may use the page’s </code> element and other prominent text when creating a result title. A relevant title also helps users judge whether the page matches their needs. e a Clear URL Slug</p> <p class="wp-block-paragraph">The slug is the editable portion of the page address after the domain name.</p> <p class="wp-block-paragraph">A clean example is:</p> <pre class="wp-block-code"><code>example.com/how-to-add-keywords-in-wordpress/ </code></pre> <p class="wp-block-paragraph">WordPress usually lets you edit the URL through the post or page settings. Keep the slug short, readable, and closely connected to the main topic.</p> <p class="wp-block-paragraph">Use lowercase words and separate them with hyphens. Remove unnecessary dates, numbers, and filler words. A good URL should remain understandable even if the article is updated later.</p> <p class="wp-block-paragraph">Changing an existing URL can break published links unless the old address redirects to the new one.</p> <h2 class="wp-block-heading">Use the Keyword in the Main Heading</h2> <p class="wp-block-paragraph">Most WordPress themes display the page title as the H1 heading. If your theme already does this, do not add a second identical H1 inside the article.</p> <p class="wp-block-paragraph">The H1 should state the main topic. H2 and H3 headings should divide the article into clear sections.</p> <p class="wp-block-paragraph">على سبيل المثال:</p> <ul class="wp-block-list"> <li>H1: How to Add Keywords in WordPress</li> <li>H2: Choose a Primary Keyword</li> <li>H2: Add Keywords to Titles and URLs</li> <li>H2: Use Keywords in Image Alt Text</li> <li>H2: Add Meta Keywords Without a Plugin</li> </ul> <p class="wp-block-paragraph">The exact phrase does not need to appear in every heading; use natural variations.</p> <h2 class="wp-block-heading">Mention the Keyword Near the Beginning</h2> <p class="wp-block-paragraph">Include the primary phrase in the introduction, preferably within the first paragraph or two. This quickly confirms that the page addresses the searcher’s question.</p> <p class="wp-block-paragraph">The sentence must still sound natural.</p> <p class="wp-block-paragraph">Awkward wording:</p> <p class="wp-block-paragraph">“Learn how to add keywords in WordPress with this how to add keywords in WordPress guide for WordPress keywords.”</p> <p class="wp-block-paragraph">Better wording:</p> <p class="wp-block-paragraph">“Learning how to add keywords in WordPress starts with understanding where keywords provide useful context, including titles, headings, URLs, and page content.”</p> <p class="wp-block-paragraph">The second example uses the phrase once and explains the page immediately.</p> <h2 class="wp-block-heading">Build Helpful Content Around the Keyword</h2> <figure class="wp-block-image size-large"><img decoding="async" width="1024" height="576" src="https://www.airsang.com/wp-content/uploads/2026/07/image-27-1024x576.png" alt="How to Add Keywords in WordPress-Build Helpful Content Around the Keyword" class="wp-image-11285" srcset="https://www.airsang.com/wp-content/uploads/2026/07/image-27-1024x576.png 1024w, https://www.airsang.com/wp-content/uploads/2026/07/image-27-300x169.png 300w, https://www.airsang.com/wp-content/uploads/2026/07/image-27-768x432.png 768w, https://www.airsang.com/wp-content/uploads/2026/07/image-27-1536x864.png 1536w, https://www.airsang.com/wp-content/uploads/2026/07/image-27-18x10.png 18w, https://www.airsang.com/wp-content/uploads/2026/07/image-27-1000x563.png 1000w, https://www.airsang.com/wp-content/uploads/2026/07/image-27-1x1.png 1w, https://www.airsang.com/wp-content/uploads/2026/07/image-27-10x6.png 10w, https://www.airsang.com/wp-content/uploads/2026/07/image-27.png 1672w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure> <p class="wp-block-paragraph">Keywords do not replace useful information. Search systems evaluate pages through many signals, and relevance depends heavily on whether the content satisfies the query. Google explains that its systems aim to return relevant, high-quality results rather than ranking a page simply because it repeats a phrase. WordPress article should answer the main question directly, explain unfamiliar terms, use practical examples, break difficult steps into sections, and address common follow-up questions.</p> <p class="wp-block-paragraph">Write for the person behind the search. A tutorial should provide ordered instructions. A comparison should explain meaningful differences. A buying guide should discuss benefits, limitations, and suitable use cases.</p> <p class="wp-block-paragraph">Thorough writing creates natural opportunities to use the main keyword and related terms.</p> <h2 class="wp-block-heading">Use Keywords in Subheadings Naturally</h2> <p class="wp-block-paragraph">Subheadings help readers scan a long page and understand how each section connects to the main topic.</p> <p class="wp-block-paragraph">Use the keyword or a close variation when it accurately labels the section. Examples include:</p> <ul class="wp-block-list"> <li>How to Add Keywords in WordPress Posts</li> <li>Where to Place WordPress SEO Keywords</li> <li>How to Add Meta Keywords Without a Plugin</li> </ul> <p class="wp-block-paragraph">Do not force the exact phrase into every heading. Repetition sounds mechanical and makes headings less informative.</p> <h2 class="wp-block-heading">Write Accurate Image Alt Text</h2> <p class="wp-block-paragraph">WordPress lets you add alternative text through the Media Library or image block settings. Alt text should describe the relevant purpose of an image for people who cannot see it.</p> <p class="wp-block-paragraph">For a screenshot of the URL settings, suitable alt text could be:</p> <p class="wp-block-paragraph">“Editing the URL slug for a WordPress post”</p> <p class="wp-block-paragraph">Do not turn alt text into a list of keywords. Text such as “WordPress keywords SEO WordPress best keywords” does not accurately describe an image and creates a poor experience.</p> <p class="wp-block-paragraph">Decorative images may use empty alt attributes, while informative images usually need concise descriptions.</p> <h2 class="wp-block-heading">Add a Useful Meta Description</h2> <p class="wp-block-paragraph">A meta description summarizes the page and may appear below the title in search results. Google may use the supplied description when it represents the page well, but it can also generate a different snippet from the visible content for a particular search. le example is:</p> <p class="wp-block-paragraph">“Learn how to add keywords in WordPress using titles, headings, URLs, content, images, and manual meta tags without keyword stuffing.”</p> <p class="wp-block-paragraph">The description includes the main phrase and clearly summarizes the page.</p> <p class="wp-block-paragraph">Avoid using a comma-separated keyword list. A description should help a person decide whether the page answers the question.</p> <h2 class="wp-block-heading">How to Add Meta Keywords in WordPress Without a Plugin</h2> <figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="819" src="https://www.airsang.com/wp-content/uploads/2026/07/image-28-1024x819.png" alt="How to Add Keywords in WordPress-How to Add Meta Keywords in WordPress Without a Plugin" class="wp-image-11286" srcset="https://www.airsang.com/wp-content/uploads/2026/07/image-28-1024x819.png 1024w, https://www.airsang.com/wp-content/uploads/2026/07/image-28-300x240.png 300w, https://www.airsang.com/wp-content/uploads/2026/07/image-28-768x615.png 768w, https://www.airsang.com/wp-content/uploads/2026/07/image-28-15x12.png 15w, https://www.airsang.com/wp-content/uploads/2026/07/image-28-1000x800.png 1000w, https://www.airsang.com/wp-content/uploads/2026/07/image-28-1x1.png 1w, https://www.airsang.com/wp-content/uploads/2026/07/image-28-10x8.png 10w, https://www.airsang.com/wp-content/uploads/2026/07/image-28.png 1402w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure> <p class="wp-block-paragraph">Although meta keywords do not improve Google rankings, you can still add the tag manually when a system or project specifically requires it.</p> <p class="wp-block-paragraph">Before editing any theme file, create a complete backup. The WordPress Theme File Editor does not make backup copies, and a small PHP error can make the site inaccessible. WordPress also recommends using a child theme so that parent-theme updates do not overwrite custom changes. od 1: Edit header.php</p> <p class="wp-block-paragraph">Open the active child theme through your hosting file manager, SFTP, or the Theme File Editor.</p> <p class="wp-block-paragraph">Locate <code>header.php</code>, find the <code><head></code> section, and add the tag before the closing <code></head></code> element:</p> <pre class="wp-block-code"><code><meta name="keywords" content="wordpress seo, keyword placement, wordpress tutorials"> </code></pre> <p class="wp-block-paragraph">Save the file, clear the website cache, and open the page source in your browser. Search for <code>meta name="keywords"</code> to confirm that the tag appears.</p> <p class="wp-block-paragraph">This method normally adds the same keyword list to every page that uses the header template. It is simple, but it is not appropriate when each page needs different values.</p> <h3 class="wp-block-heading">Method 2: Use functions.php and wp_head</h3> <p class="wp-block-paragraph">A more organized theme-based approach uses the <code>wp_head</code> action hook. WordPress triggers this hook inside the <code><head></code> area when the theme includes the standard <code>wp_head()</code> function. code to the child theme’s <code>functions.php</code> file:</p> <pre class="wp-block-code"><code>function site_add_meta_keywords() { echo '<meta name="keywords" content="wordpress seo, keyword placement, wordpress tutorials">' . "\n"; } add_action( 'wp_head', 'site_add_meta_keywords' ); </code></pre> <p class="wp-block-paragraph">Replace the samples, save the file, clear the cache, and inspect the page source.</p> <p class="wp-block-paragraph">WordPress loads the active theme’s <code>functions.php</code>; changing themes may remove this output. od 3: Add Unique Keywords With Custom Fields</p> <p class="wp-block-paragraph">If individual posts need different meta keywords, store a value in a custom field named:</p> <pre class="wp-block-code"><code>meta_keywords </code></pre> <p class="wp-block-paragraph">Enter a comma-separated list for each post, then use code that retrieves and outputs the field:</p> <pre class="wp-block-code"><code>function site_add_post_meta_keywords() { if ( is_singular() ) { $keywords = get_post_meta( get_queried_object_id(), 'meta_keywords', true ); if ( ! empty( $keywords ) ) { echo '<meta name="keywords" content="' . esc_attr( $keywords ) . '">' . "\n"; } } } add_action( 'wp_head', 'site_add_post_meta_keywords' ); </code></pre> <p class="wp-block-paragraph">The code retrieves the saved value on singular pages, escapes it for HTML output, and prints the tag only when the field is not empty.</p> <p class="wp-block-paragraph">After saving the code, open a post, view the page source, and confirm that the correct value appears.</p> <h2 class="wp-block-heading">Common Keyword Mistakes</h2> <p class="wp-block-paragraph">Keyword stuffing is common, but other mistakes also matter.</p> <p class="wp-block-paragraph">Common problems include targeting a phrase that does not match the page, optimizing several pages for the same primary keyword, using irrelevant terms in alt text, creating too many tags, repeating one meta description across many pages, and adding duplicate metadata through both a theme and a plugin.</p> <p class="wp-block-paragraph">Manual code creates additional risks. Editing the parent theme can cause changes to disappear after an update. Incorrect PHP syntax may break the site. A cached version may also make it seem that a change failed when the code is actually correct.</p> <p class="wp-block-paragraph">Always review the published page, clear relevant caches, and inspect the page source after changing metadata.</p> <h2 class="wp-block-heading">How Often Should a Keyword Appear?</h2> <p class="wp-block-paragraph">There is no universal keyword density that guarantees better rankings. A 500-word product page and a 2,000-word tutorial naturally use language differently.</p> <p class="wp-block-paragraph">A primary keyword may appear once in the title, once in the URL, once in the H1, near the beginning, in a relevant subheading, naturally throughout the body, and in the meta description when it reads well.</p> <p class="wp-block-paragraph">After that, focus on synonyms, related concepts, examples, and complete explanations.</p> <p class="wp-block-paragraph">Read the article aloud. If the wording sounds repetitive or unnatural, revise it. The goal is not to reach a percentage. The goal is to create the clearest and most useful page for the intended search.</p> <h2 class="wp-block-heading">الملخص النهائي</h2> <p class="wp-block-paragraph">Knowing how to add keywords in <strong><a href="https://www.WordPres.com" target="_blank" rel="noopener">ووردبريس</a></strong> means placing one focused search phrase in useful locations, not hiding a long list of terms in the source code. Use the primary keyword naturally in the title, URL, main heading, introduction, relevant subheadings, body content, image descriptions, internal links, and meta description.</p> <p class="wp-block-paragraph">The meta keywords tag is separate from normal on-page optimization and does not influence Google indexing or rankings. Add it only when a specific system or project requires it. When manual code is necessary, create a backup, use a child theme, avoid duplicate tags, escape dynamic values, and verify the result in the published page source.</p> <p class="wp-block-paragraph">A strong WordPress keyword strategy combines clear structure, accurate metadata, descriptive images, useful links, and content that fully answers the reader’s question.</p> <h3 class="wp-block-heading">FAQ: How to Add Keywords in WordPress</h3> <p class="wp-block-paragraph"><strong>1. Do keywords still matter for WordPress SEO?</strong><br>Yes. Keywords are still important because they help search engines understand the topic and purpose of your content. However, modern SEO focuses on using keywords naturally in titles, headings, URLs, content, and other relevant areas instead of repeating the same phrase excessively.</p> <p class="wp-block-paragraph"><strong>2. How do I add keywords in WordPress without a plugin?</strong><br>You can add keywords manually by placing them in important areas such as the page title, URL slug, headings, introduction, body content, image alt text, and meta description. If you specifically need a meta keywords tag, you can add it manually through your theme’s <code>header.php</code> file or <code>functions.php</code>.</p> <p class="wp-block-paragraph"><strong>3. Do meta keywords help improve Google rankings?</strong><br>No. Google does not use the meta keywords tag as a ranking factor. Adding meta keywords will not improve your position in search results. Instead, focus on creating helpful content, optimizing page structure, and using relevant keywords naturally.</p> <p class="wp-block-paragraph"><strong>4. Where should I place keywords in a WordPress page?</strong><br>The most important locations include the SEO title, URL, main heading, first paragraph, subheadings, image descriptions, internal links, and meta description. These placements help users and search engines quickly understand what your page is about.</p> <p class="wp-block-paragraph"><strong>5. Can I add meta keywords in WordPress without installing a plugin?</strong><br>Yes. You can manually add a meta keywords tag by editing your theme files. However, you should create a backup first and preferably use a child theme to prevent your changes from being removed during theme updates.</p> <p class="wp-block-paragraph"><strong>6. How many times should I use a keyword in a WordPress article?</strong><br>There is no fixed keyword number or ideal keyword density. Use your main keyword where it naturally fits and focus on answering the reader’s question. High-quality, useful content is more important than repeating keywords many times.</p> </div> </div> <div class="elementor-element elementor-element-2a3b559 e-con-full e-flex e-con e-child" data-id="2a3b559" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic","sticky":"top","sticky_on":["desktop","tablet"],"sticky_offset":80,"sticky_parent":"yes","sticky_effects_offset":0,"sticky_anchor_link_offset":0}"> <div class="elementor-element elementor-element-10b5122 e-con-full e-flex e-con e-child" data-id="10b5122" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> <div class="elementor-element elementor-element-37a42c8 elementor-widget elementor-widget-heading" data-id="37a42c8" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <h2 class="elementor-heading-title elementor-size-default">Creative Solutions for Global Brands</h2> </div> <div class="elementor-element elementor-element-243687b elementor-widget elementor-widget-text-editor" data-id="243687b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <p><strong>أيرسانج</strong> delivers cost-effective website design and development, brand visuals, and cross-border ecommerce solutions for brands worldwide.</p> </div> <div class="elementor-element elementor-element-f7b7de6 e-transform elementor-align-justify elementor-mobile-align-justify elementor-widget__width-inherit elementor-widget elementor-widget-button" data-id="f7b7de6" data-element_type="widget" data-e-type="widget" data-settings="{"_animation":"none","_transform_translateX_effect_hover":{"unit":"px","size":0,"sizes":[]},"_transform_translateY_effect_hover":{"unit":"px","size":-5,"sizes":[]},"_transform_translateX_effect_hover_tablet":{"unit":"px","size":"","sizes":[]},"_transform_translateX_effect_hover_mobile":{"unit":"px","size":"","sizes":[]},"_transform_translateY_effect_hover_tablet":{"unit":"px","size":"","sizes":[]},"_transform_translateY_effect_hover_mobile":{"unit":"px","size":"","sizes":[]}}" data-widget_type="button.default"> <a class="elementor-button elementor-button-link elementor-size-sm" href="#"> <span class="elementor-button-content-wrapper"> <span class="elementor-button-text">Let's Talk</span> </span> </a> </div> </div> <div class="elementor-element elementor-element-3567646 e-con-full e-flex e-con e-child" data-id="3567646" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> <div class="elementor-element elementor-element-75a62a1 elementor-position-left elementor-position-top elementor-vertical-align-middle elementor-widget elementor-widget-image-box" data-id="75a62a1" data-element_type="widget" data-e-type="widget" data-widget_type="image-box.default"> <div class="elementor-image-box-wrapper"><figure class="elementor-image-box-img"><a href="https://www.airsang.com/ar/%d8%a7%d8%aa%d8%b5%d9%84-%d8%a8%d9%86%d8%a7/" tabindex="-1"><img src="https://www.airsang.com/wp-content/uploads/airsang-post-templates/ab5497183e7ee4cdddffdd47.webp" title="" alt="" loading="lazy" /></a></figure><div class="elementor-image-box-content"><p class="elementor-image-box-description">Shopify Development</p></div></div> </div> </div> <div class="elementor-element elementor-element-b6eabb7 e-con-full e-flex e-con e-child" data-id="b6eabb7" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> <div class="elementor-element elementor-element-7759e1f elementor-position-left elementor-position-top elementor-vertical-align-middle elementor-widget elementor-widget-image-box" data-id="7759e1f" data-element_type="widget" data-e-type="widget" data-widget_type="image-box.default"> <div class="elementor-image-box-wrapper"><figure class="elementor-image-box-img"><a href="https://www.airsang.com/ar/%d8%ae%d8%af%d9%85%d8%a7%d8%aa/" tabindex="-1"><img src="https://www.airsang.com/wp-content/uploads/airsang-post-templates/8a5f758291ed3fd452fd6dfc.webp" title="" alt="" loading="lazy" /></a></figure><div class="elementor-image-box-content"><p class="elementor-image-box-description">WordPress Development</p></div></div> </div> </div> <div class="elementor-element elementor-element-4611ee9 e-con-full e-flex e-con e-child" data-id="4611ee9" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> <div class="elementor-element elementor-element-f933a1d elementor-position-left elementor-position-top elementor-vertical-align-middle elementor-widget elementor-widget-image-box" data-id="f933a1d" data-element_type="widget" data-e-type="widget" data-widget_type="image-box.default"> <div class="elementor-image-box-wrapper"><figure class="elementor-image-box-img"><a href="https://www.airsang.com/ar/%d8%a7%d8%aa%d8%b5%d9%84-%d8%a8%d9%86%d8%a7/" tabindex="-1"><img src="https://www.airsang.com/wp-content/uploads/airsang-post-templates/1b7f53749b4c0e4e73b6f338.webp" title="" alt="" loading="lazy" /></a></figure><div class="elementor-image-box-content"><p class="elementor-image-box-description">تصميم واجهات المواقع</p></div></div> </div> </div> <div class="elementor-element elementor-element-3f1d36f e-con-full e-flex e-con e-child" data-id="3f1d36f" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> <div class="elementor-element elementor-element-348e8d2 elementor-position-left elementor-position-top elementor-vertical-align-middle elementor-widget elementor-widget-image-box" data-id="348e8d2" data-element_type="widget" data-e-type="widget" data-widget_type="image-box.default"> <div class="elementor-image-box-wrapper"><figure class="elementor-image-box-img"><a href="https://www.airsang.com/ar/%d8%a7%d8%aa%d8%b5%d9%84-%d8%a8%d9%86%d8%a7/" tabindex="-1"><img src="https://www.airsang.com/wp-content/uploads/airsang-post-templates/8b45613bad7af14204e628d2.webp" title="" alt="" loading="lazy" /></a></figure><div class="elementor-image-box-content"><p class="elementor-image-box-description">Amazon Design</p></div></div> </div> </div> </div> </div> </div> <div class="elementor-element elementor-element-205fc06 e-flex e-con-boxed e-con e-parent" data-id="205fc06" data-element_type="container" data-e-type="container"> <div class="e-con-inner"> <div class="elementor-element elementor-element-69ba58a elementor-widget__width-inherit elementor-widget elementor-widget-airsang_related_articles_posts_carousel" data-id="69ba58a" data-element_type="widget" data-e-type="widget" data-widget_type="airsang_related_articles_posts_carousel.default"> <div class="elementor-widget-container"> <section class="airsang-related-posts-carousel-wrap"> <div id="airsang-related-posts-carousel-69ba58a" class="airsang-related-posts-carousel" data-desktop="4" data-tablet="2" data-mobile="1" data-autoplay="no" data-delay="4200" > <div class="airsang-related-posts-carousel__header"> <h2 class="airsang-related-posts-carousel__title"> <span class="airsang-related-posts-carousel__title-main">More</span> <span class="airsang-related-posts-carousel__title-highlight">دراسات الحالة</span> </h2> </div> <div class="airsang-related-posts-carousel__shell"> <button class="airsang-related-posts-carousel__arrow airsang-related-posts-carousel__arrow--prev" type="button" aria-label="Previous" data-no-translation-aria-label="">‹</button> <button class="airsang-related-posts-carousel__arrow airsang-related-posts-carousel__arrow--next" type="button" aria-label="Next" data-no-translation-aria-label="">›</button> <div class="airsang-related-posts-carousel__viewport"> <div class="airsang-related-posts-carousel__track"> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/ar/amazon-motorcycle-travel-bag-primary-and-secondary-product-imagesdesign-examples-loading-details-and-multiple-carrying-methods/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/airsang-posts/f8013c1ac40308a6d1b01f7f.webp" alt="Amazon motorcycle travel bag primary and secondary product imagesDesign examples: loading details and multiple carrying methods"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">Amazon motorcycle travel bag primary and secondary product imagesDesign examples: loading details and multiple carrying methods</span> <span class="airsang-related-posts-carousel__excerpt">We use the visual language of yellow and black outdoor, white background structure, and riding scenes to sort out the loading details and multiple carrying methods for the motorcycle travel bag, and present the product, details, and usage scenarios through 7 product pictures.</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/ar/what-kind-of-amazon-liquid-foundation-main-product-image-is-easier-to-achieve-conversion/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/airsang-posts/7515277b4c25f5d6ba209a87.webp" alt="What kind of Amazon liquid foundation main product image is easier to achieve conversion?"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">What kind of Amazon liquid foundation main product image is easier to achieve conversion?</span> <span class="airsang-related-posts-carousel__excerpt">Project overview The client is a beauty brand targeting overseas consumers. It specializes in liquid foundation and other makeup products and sells them through the Amazon platform. As competition among similar products continues to intensify, the customer’s original product images gradually lack advantages in selling point communication, visual quality, and conversion performance....</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/ar/wordpress-body-and-mind-consulting-website-design-case-hopelight-s-service-description-and-reservation-steps/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/airsang-posts/30d3f95e8932e8276e53d09e.webp" alt="WordPress body and mind consulting website design case: HopeLight’s service description and reservation steps"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">WordPress body and mind consulting website design case: HopeLight’s service description and reservation steps</span> <span class="airsang-related-posts-carousel__excerpt">In HopeLight's WordPress mind-body and soul consulting website, we focused on service descriptions and booking procedures, combined with soft background colors, traditional Chinese serif titles, rounded corner grouping and soothing white space, to organize the graphic and text hierarchy, navigation and mobile browsing experience of the homepage and inner pages.</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/ar/can-you-connect-wordpress-as-framer-custom-domain/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/2026/06/image-68-1024x576.png" alt="Can You Connect WordPress as Framer Custom Domain?"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">Can You Connect WordPress as Framer Custom Domain?</span> <span class="airsang-related-posts-carousel__excerpt">Introduction Many website owners eventually reach a point where one platform does not feel like enough. WordPress may already power their blog, service pages, online store, or business website, while Framer may feel more attractive for modern landing pages, interactive visuals, campaign pages, or fast design experiments. Because of this, a common...</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/ar/shein-women-s-shoes-store-poster-design-analysis/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/airsang-posts/dbb7628d9129a93cbbd3c9b2.webp" alt="SHEIN women’s shoes store poster design analysis"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">SHEIN women’s shoes store poster design analysis</span> <span class="airsang-related-posts-carousel__excerpt">Project overview The client specializes in women’s fashion shoes and hopes to further enhance the overall visual quality of the store on the SHEIN platform and enhance product appeal through more scenic posters, so he approached us for store poster design. The client hopes to focus on displaying different styles of women’s...</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/ar/how-to-display-salesforce-data-in-wordpress-complete-guide/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/2026/06/image-116-1024x576.png" alt="How to Display Salesforce Data in WordPress: Complete Guide"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">How to Display Salesforce Data in WordPress: Complete Guide</span> <span class="airsang-related-posts-carousel__excerpt">Introduction In modern digital business systems, companies rarely rely on a single platform to manage customers and content. Instead, they combine powerful CRM tools with flexible website platforms. One of the most common combinations is integrating Salesforce with WordPress. A frequent question businesses ask is how to display from Salesforce to WordPress...</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/ar/how-to-clone-a-wordpress-page-the-right-way-2/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/2026/05/image-181-1024x559.png" alt="How to Clone a WordPress Page the Right Way"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">How to Clone a WordPress Page the Right Way</span> <span class="airsang-related-posts-carousel__excerpt">Introduction Learning how to clone WordPress page content can save a huge amount of time when you manage a website. Instead of rebuilding a page from zero, you can duplicate an existing layout, keep the same structure, and then replace the text, images, links, or product information. This is especially useful for...</span> </span> </a> </article> <article class="airsang-related-posts-carousel__slide"> <a class="airsang-related-posts-carousel__card" href="https://www.airsang.com/ar/high-converting-wordpress-peptide-website/"> <span class="airsang-related-posts-carousel__image"> <img src="https://www.airsang.com/wp-content/uploads/2026/04/image-66-1024x683.png" alt="Building a High-Converting WordPress Peptide Website"> </span> <span class="airsang-related-posts-carousel__body"> <span class="airsang-related-posts-carousel__post-title">Building a High-Converting WordPress Peptide Website</span> <span class="airsang-related-posts-carousel__excerpt">Introduction In the fast-growing peptide and research chemicals market, credibility, clarity, and structure are everything. When users land on a website in this niche, they are not just browsing—they are evaluating trust, product quality, and scientific legitimacy within seconds. That’s exactly the challenge behind aminousa.com—a WordPress-based website designed to showcase premium peptide...</span> </span> </a> </article> </div> </div> </div> <div class="airsang-related-posts-carousel__dots" aria-label="Carousel pagination" data-no-translation-aria-label=""></div> </div> </section> </div> </div> </div> </div> </div> <footer data-elementor-type="footer" data-elementor-id="1804" class="elementor elementor-1804 elementor-location-footer" data-elementor-post-type="elementor_library"> <div class="elementor-element elementor-element-c51c87a e-flex e-con-boxed e-con e-parent" data-id="c51c87a" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> <div class="e-con-inner"> <div class="elementor-element elementor-element-e05edcd e-flex e-con-boxed e-con e-child" data-id="e05edcd" data-element_type="container" data-e-type="container"> <div class="e-con-inner"> <div class="elementor-element elementor-element-a47fb91 e-con-full e-flex e-con e-child" data-id="a47fb91" data-element_type="container" data-e-type="container"> <div class="elementor-element elementor-element-e80b80b elementor-widget__width-initial elementor-widget elementor-widget-image" data-id="e80b80b" data-element_type="widget" data-e-type="widget" data-widget_type="image.default"> <img loading="lazy" width="800" height="240" src="https://www.airsang.com/wp-content/uploads/airsang-pages/c71991f8bec8809971badeef.png" class="attachment-large size-large wp-image-15854" alt="" /> </div> <div class="elementor-element elementor-element-a1de5f0 elementor-shape-rounded elementor-grid-0 e-grid-align-center elementor-widget elementor-widget-social-icons" data-id="a1de5f0" data-element_type="widget" data-e-type="widget" data-widget_type="social-icons.default"> <div class="elementor-social-icons-wrapper elementor-grid" role="list"> <span class="elementor-grid-item" role="listitem"> <a class="elementor-icon elementor-social-icon elementor-social-icon-facebook elementor-repeater-item-3d53d9a" target="_blank"> <span class="elementor-screen-only">فيسبوك</span> <svg aria-hidden="true" class="e-font-icon-svg e-fab-facebook" viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"></path></svg> </a> </span> <span class="elementor-grid-item" role="listitem"> <a class="elementor-icon elementor-social-icon elementor-social-icon-x-twitter elementor-repeater-item-bbda424" target="_blank"> <span class="elementor-screen-only">X-twitter</span> <svg aria-hidden="true" class="e-font-icon-svg e-fab-x-twitter" viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"></path></svg> </a> </span> <span class="elementor-grid-item" role="listitem"> <a class="elementor-icon elementor-social-icon elementor-social-icon-youtube elementor-repeater-item-032d630" target="_blank"> <span class="elementor-screen-only">يوتيوب</span> <svg aria-hidden="true" class="e-font-icon-svg e-fab-youtube" viewbox="0 0 576 512" xmlns="http://www.w3.org/2000/svg"><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg> </a> </span> <span class="elementor-grid-item" role="listitem"> <a class="elementor-icon elementor-social-icon elementor-social-icon-youtube elementor-repeater-item-b7e347f" target="_blank"> <span class="elementor-screen-only">يوتيوب</span> <svg aria-hidden="true" class="e-font-icon-svg e-fab-youtube" viewbox="0 0 576 512" xmlns="http://www.w3.org/2000/svg"><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg> </a> </span> <span class="elementor-grid-item" role="listitem"> <a class="elementor-icon elementor-social-icon elementor-social-icon-youtube elementor-repeater-item-19b9288" target="_blank"> <span class="elementor-screen-only">يوتيوب</span> <svg aria-hidden="true" class="e-font-icon-svg e-fab-youtube" viewbox="0 0 576 512" xmlns="http://www.w3.org/2000/svg"><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg> </a> </span> </div> </div> <div class="elementor-element elementor-element-e50dfcd elementor-widget elementor-widget-text-editor" data-id="e50dfcd" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> <p>AIRSANG provides cost-effective creative design and high-performance ecommerce websites to help your brand increase its influence on a global scale.</p> </div> </div> <div class="elementor-element elementor-element-f993ab4 e-con-full e-flex e-con e-child" data-id="f993ab4" data-element_type="container" data-e-type="container"> <div class="elementor-element elementor-element-cf22ba8 elementor-widget-mobile__width-initial elementor-widget elementor-widget-airsang_footer_list" data-id="cf22ba8" data-element_type="widget" data-e-type="widget" data-widget_type="airsang_footer_list.default"> <div class="elementor-widget-container"> <section class="airsang-footer-list-wrap"> <div class="airsang-footer-list"> <h3 class="airsang-footer-list__title">التصميم</h3> <ul class="airsang-footer-list__items"> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/website-design/">Website Design</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/shopify-website-design/">Ecommerce Store Design</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/amazon-design/">Amazon Design</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/shein-design/">SHEIN Design</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d8%ad%d8%a7%d9%84%d8%a7%d8%aa-%d8%aa%d8%b5%d9%85%d9%8a%d9%85-%d8%a7%d9%84%d8%b9%d9%84%d8%a7%d9%85%d8%a7%d8%aa-%d8%a7%d9%84%d8%aa%d8%ac%d8%a7%d8%b1%d9%8a%d8%a9/">تصميم العلامة التجارية</a> </li> </ul> </div> </section> </div> </div> <div class="elementor-element elementor-element-d88f8e4 elementor-widget-mobile__width-initial elementor-widget elementor-widget-airsang_footer_list" data-id="d88f8e4" data-element_type="widget" data-e-type="widget" data-widget_type="airsang_footer_list.default"> <div class="elementor-widget-container"> <section class="airsang-footer-list-wrap"> <div class="airsang-footer-list"> <h3 class="airsang-footer-list__title">Technology and Operations</h3> <ul class="airsang-footer-list__items"> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/wordpress-website-design/">تطوير مواقع الويب</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/custom-theme-development/">Custom Development</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/product-listing-services/">Product Listings</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d8%a7%d8%aa%d8%b5%d9%84-%d8%a8%d9%86%d8%a7/">Social Media Management</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/seo-services/">Search Engine Optimization</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d8%a7%d8%aa%d8%b5%d9%84-%d8%a8%d9%86%d8%a7/">Website Migration</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d8%a7%d8%aa%d8%b5%d9%84-%d8%a8%d9%86%d8%a7/">Website Security</a> </li> </ul> </div> </section> </div> </div> <div class="elementor-element elementor-element-9df297f elementor-widget-mobile__width-initial elementor-widget elementor-widget-airsang_footer_list" data-id="9df297f" data-element_type="widget" data-e-type="widget" data-widget_type="airsang_footer_list.default"> <div class="elementor-widget-container"> <section class="airsang-footer-list-wrap"> <div class="airsang-footer-list"> <h3 class="airsang-footer-list__title">نبذة عنا</h3> <ul class="airsang-footer-list__items"> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d9%85%d9%8e%d9%84%d9%8e%d9%81%d9%91/">Our Work</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d9%85%d8%b9%d9%84%d9%88%d9%85%d8%a7%d8%aa-%d8%b9%d9%86%d8%a7/">Company Profile</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d9%85%d8%af%d9%88%d9%86%d8%a9/">Blog & Insights</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d8%a7%d8%aa%d8%b5%d9%84-%d8%a8%d9%86%d8%a7/">Careers</a> </li> </ul> </div> </section> </div> </div> <div class="elementor-element elementor-element-78fcdc2 elementor-widget-mobile__width-initial elementor-widget elementor-widget-airsang_footer_list" data-id="78fcdc2" data-element_type="widget" data-e-type="widget" data-widget_type="airsang_footer_list.default"> <div class="elementor-widget-container"> <section class="airsang-footer-list-wrap"> <div class="airsang-footer-list"> <h3 class="airsang-footer-list__title">يدعم</h3> <ul class="airsang-footer-list__items"> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d8%b4%d8%b1%d9%88%d8%b7-%d8%a7%d9%84%d8%a7%d8%b3%d8%aa%d8%ae%d8%af%d8%a7%d9%85/">شروط الاستخدام</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d8%a7%d8%aa%d8%b5%d9%84-%d8%a8%d9%86%d8%a7/">اتصل بنا</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d9%85%d8%af%d9%88%d9%86%d8%a9/">Knowledge Base</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d8%a7%d8%aa%d8%b5%d9%84-%d8%a8%d9%86%d8%a7/">Frequently Asked Questions</a> </li> <li class="airsang-footer-list__item"> <a class="airsang-footer-list__link" href="https://www.airsang.com/ar/%d8%b3%d9%8a%d8%a7%d8%b3%d8%a9-%d8%a7%d9%84%d8%ae%d8%b5%d9%88%d8%b5%d9%8a%d8%a9/">سياسة الخصوصية</a> </li> </ul> </div> </section> </div> </div> </div> <div class="elementor-element elementor-element-e3ea2b4 e-con-full e-flex e-con e-child" data-id="e3ea2b4" data-element_type="container" data-e-type="container"> <div class="elementor-element elementor-element-6353444 elementor-widget elementor-widget-heading" data-id="6353444" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <h2 class="elementor-heading-title elementor-size-default">اتصل بنا</h2> </div> <div class="elementor-element elementor-element-1596b74 elementor-position-inline-start elementor-mobile-position-inline-start elementor-view-default elementor-widget elementor-widget-icon-box" data-id="1596b74" data-element_type="widget" data-e-type="widget" data-widget_type="icon-box.default"> <div class="elementor-icon-box-wrapper"> <div class="elementor-icon-box-icon"> <span class="elementor-icon"> <svg aria-hidden="true" class="e-font-icon-svg e-fas-map-marker-alt" viewbox="0 0 384 512" xmlns="http://www.w3.org/2000/svg"><path d="M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z"></path></svg> </span> </div> <div class="elementor-icon-box-content"> <p class="elementor-icon-box-description"> Building 4, West Lake YOHO, Quanzhou City, Fujian Province 510-513 </p> </div> </div> </div> <div class="elementor-element elementor-element-0fbecf0 elementor-position-inline-start elementor-mobile-position-inline-start elementor-view-default elementor-widget elementor-widget-icon-box" data-id="0fbecf0" data-element_type="widget" data-e-type="widget" data-widget_type="icon-box.default"> <div class="elementor-icon-box-wrapper"> <div class="elementor-icon-box-icon"> <span class="elementor-icon"> <svg aria-hidden="true" class="e-font-icon-svg e-fas-phone-alt" viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z"></path></svg> </span> </div> <div class="elementor-icon-box-content"> <p class="elementor-icon-box-description"> +86 17759522770 </p> </div> </div> </div> <div class="elementor-element elementor-element-618b284 elementor-position-inline-start elementor-mobile-position-inline-start elementor-view-default elementor-widget elementor-widget-icon-box" data-id="618b284" data-element_type="widget" data-e-type="widget" data-widget_type="icon-box.default"> <div class="elementor-icon-box-wrapper"> <div class="elementor-icon-box-icon"> <span class="elementor-icon"> <svg aria-hidden="true" class="e-font-icon-svg e-fas-envelope" viewbox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"></path></svg> </span> </div> <div class="elementor-icon-box-content"> <p class="elementor-icon-box-description"> support@airsang.com </p> </div> </div> </div> </div> </div> </div> <div class="elementor-element elementor-element-11af021 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="11af021" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default"> <div class="elementor-divider"> <span class="elementor-divider-separator"> </span> </div> </div> <div class="elementor-element elementor-element-fa5b0e8 e-con-full e-flex e-con e-child" data-id="fa5b0e8" data-element_type="container" data-e-type="container"> <div class="elementor-element elementor-element-04ccc0d elementor-widget-tablet__width-inherit elementor-widget-mobile__width-initial elementor-widget elementor-widget-airsang_platform_logo_marquee" data-id="04ccc0d" data-element_type="widget" data-e-type="widget" data-widget_type="airsang_platform_logo_marquee.default"> <div class="elementor-widget-container"> <div class="as-platform-marquee as-platform-marquee--pause as-platform-marquee--white" data-as-platform-marquee style="--as-duration: 40s;" role="region" aria-label="Platform logos"> <div class="as-platform-marquee__viewport"> <div class="as-platform-marquee__track"> <div class="as-platform-marquee__group"> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/25ffd4d933335a20abff31e0.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/25ffd4d933335a20abff31e0.webp" alt="Amazon" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/78aeef07b3a97110df832c29.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/78aeef07b3a97110df832c29.webp" alt="Shopify" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/3a611edcae0b6a2b97d5660a.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/3a611edcae0b6a2b97d5660a.webp" alt="ووردبريس" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/f38a30980bf6bbb12a330871.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/f38a30980bf6bbb12a330871.webp" alt="ماجنتو" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/2cba7fa096de5c8dec6b76f0.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/2cba7fa096de5c8dec6b76f0.webp" alt="تيمو" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/cd108f5b5c34d881a3b7271d.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/cd108f5b5c34d881a3b7271d.webp" alt="شوبلازا" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/6e9a9fa95ef9142e928c296f.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/6e9a9fa95ef9142e928c296f.webp" alt="Wix" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/3d9c9b95e762a33e75a0146a.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/3d9c9b95e762a33e75a0146a.webp" alt="SHEIN" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/05bcf41dd353b901610f36ae.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/05bcf41dd353b901610f36ae.webp" alt="SHOPLINE" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/19f5094cdc56831d94c10b3e.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/19f5094cdc56831d94c10b3e.webp" alt="علي إكسبرس" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/d3fb409967191fca0af8f028.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/d3fb409967191fca0af8f028.webp" alt="إيباي" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/bb1cc6a8c648222b1b119429.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/bb1cc6a8c648222b1b119429.webp" alt="كوبانج" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/a35070236019b220fc3e5188.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/a35070236019b220fc3e5188.webp" alt="شوبي" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/ba04a7777bfcc9c1b5eb70af.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/ba04a7777bfcc9c1b5eb70af.webp" alt="Taobao" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/141886635ec8271e87206dae.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/141886635ec8271e87206dae.webp" alt="علي بابا" loading="eager" decoding="async"> </span> <span class="as-platform-marquee__item"> <span class="as-platform-marquee__white-logo" aria-hidden="true" style="--as-logo-mask:url("https://www.airsang.com/wp-content/uploads/airsang-pages/77d139fc46e5487e333a7190.webp");"></span> <img class="as-platform-marquee__color-logo" src="https://www.airsang.com/wp-content/uploads/airsang-pages/77d139fc46e5487e333a7190.webp" alt="الأوزون" loading="eager" decoding="async"> </span> </div> </div> </div> </div> </div> </div> <div class="elementor-element elementor-element-1ae1824 elementor-widget elementor-widget-heading" data-id="1ae1824" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> <h2 class="elementor-heading-title elementor-size-default"><a href="https://www.airsang.com/ar/%d8%b4%d8%b1%d9%88%d8%b7-%d8%a7%d9%84%d8%a7%d8%b3%d8%aa%d8%ae%d8%af%d8%a7%d9%85/">© 2026 AIRSANG. All rights reserved.</a></h2> </div> </div> </div> </div> </footer> <template id="tp-language" data-tp-language="ar"></template><script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/ar/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/hello-elementor/*","/ar/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </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> (function () { var c = document.body.className; c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); document.body.className = c; })(); </script> <link rel='stylesheet' id='wc-blocks-style-rtl-css' href='https://www.airsang.com/wp-content/plugins/woocommerce/assets/client/blocks/wc-blocks-rtl.css?ver=wc-10.4.4' media='all' /> <script id="burst-js" defer src="https://www.airsang.com/wp-content/uploads/burst/js/burst.min.js?ver=1793521247"></script> <script id="trp-dynamic-translator-js-extra"> var trp_data = {"trp_custom_ajax_url":"https://www.airsang.com/wp-content/plugins/translatepress-multilingual/includes/trp-ajax.php","trp_wp_ajax_url":"https://www.airsang.com/wp-admin/admin-ajax.php","trp_language_to_query":"ar","trp_original_language":"en_US","trp_current_language":"ar","trp_skip_selectors":["[data-no-translation]","[data-no-dynamic-translation]","[data-trp-translate-id-innertext]","script","style","head","trp-span","translate-press","#billing_country","#shipping_country","#billing_state","#shipping_state","#select2-billing_country-results","#select2-billing_state-results","#select2-shipping_country-results","#select2-shipping_state-results","[data-trp-translate-id]","[data-trpgettextoriginal]","[data-trp-post-slug]"],"trp_base_selectors":["data-trp-translate-id","data-trpgettextoriginal","data-trp-post-slug"],"trp_attributes_selectors":{"text":{"accessor":"outertext","attribute":false},"block":{"accessor":"innertext","attribute":false},"image_src":{"selector":"img[src]","accessor":"src","attribute":true},"submit":{"selector":"input[type='submit'],input[type='button'], input[type='reset']","accessor":"value","attribute":true},"placeholder":{"selector":"input[placeholder],textarea[placeholder]","accessor":"placeholder","attribute":true},"title":{"selector":"[title]","accessor":"title","attribute":true},"a_href":{"selector":"a[href]","accessor":"href","attribute":true},"button":{"accessor":"outertext","attribute":false},"option":{"accessor":"innertext","attribute":false},"aria_label":{"selector":"[aria-label]","accessor":"aria-label","attribute":true},"video_src":{"selector":"video[src]","accessor":"src","attribute":true},"video_poster":{"selector":"video[poster]","accessor":"poster","attribute":true},"video_source_src":{"selector":"video source[src]","accessor":"src","attribute":true},"audio_src":{"selector":"audio[src]","accessor":"src","attribute":true},"audio_source_src":{"selector":"audio source[src]","accessor":"src","attribute":true},"picture_image_src":{"selector":"picture image[src]","accessor":"src","attribute":true},"picture_source_srcset":{"selector":"picture source[srcset]","accessor":"srcset","attribute":true},"image_alt":{"selector":"img[alt]","accessor":"alt","attribute":true},"meta_desc":{"selector":"meta[name=\"description\"],meta[property=\"og:title\"],meta[property=\"og:description\"],meta[property=\"og:site_name\"],meta[property=\"og:image:alt\"],meta[name=\"twitter:title\"],meta[name=\"twitter:description\"],meta[name=\"twitter:image:alt\"],meta[name=\"DC.Title\"],meta[name=\"DC.Description\"],meta[property=\"article:section\"],meta[property=\"article:tag\"]","accessor":"content","attribute":true},"page_title":{"selector":"title","accessor":"innertext","attribute":false},"meta_desc_img":{"selector":"meta[property=\"og:image\"],meta[property=\"og:image:secure_url\"],meta[name=\"twitter:image\"]","accessor":"content","attribute":true}},"trp_attributes_accessors":["outertext","innertext","src","value","placeholder","title","href","aria-label","poster","srcset","alt","content"],"gettranslationsnonceregular":"d2ac8abcc8","showdynamiccontentbeforetranslation":"","skip_strings_from_dynamic_translation":[],"skip_strings_from_dynamic_translation_for_substrings":{"href":["amazon-adsystem","googleads","g.doubleclick"]},"duplicate_detections_allowed":"100","trp_translate_numerals_opt":"no","trp_no_auto_translation_selectors":["[data-no-auto-translation]","ol.commentlist"]}; //# sourceURL=trp-dynamic-translator-js-extra </script> <script id="trp-dynamic-translator-js" src="https://www.airsang.com/wp-content/plugins/translatepress-multilingual/assets/js/trp-translate-dom-changes.js?ver=3.0.6"></script> <script id="airsang-elementor-ajax-tax-post-list-widget-js-after"> (function () { function getAjaxUrl(results) { if (results && results.getAttribute("data-ajax-url")) { return results.getAttribute("data-ajax-url"); } if (window.ajaxurl) { return window.ajaxurl; } return "https://www.airsang.com/wp-admin/admin-ajax.php"; } function init(root) { if (!root || root.dataset.atplReady === "yes") { return; } root.dataset.atplReady = "yes"; var results = root.querySelector(".airsang-ajax-tax-post-list__results"); var items = root.querySelector(".airsang-ajax-tax-post-list__items"); var status = root.querySelector("[data-atpl-status]"); var sentinel = root.querySelector("[data-atpl-sentinel]"); var viewport = root.querySelector(".airsang-ajax-tax-post-list__tabs-viewport"); if (!results || !items) { return; } var state = { termId: results.getAttribute("data-current-term") || "0", page: parseInt(results.getAttribute("data-current-page") || "1", 10) || 1, hasMore: results.getAttribute("data-has-more") === "yes", loading: false, infinite: results.getAttribute("data-enable-infinite") === "yes" }; function setStatus(text, loading) { if (!status) { return; } status.textContent = text || ""; status.classList.toggle("is-loading", !!loading); } function appendHtml(html) { if (!html) { return; } var temp = document.createElement("div"); temp.innerHTML = html; Array.prototype.slice.call(temp.children).forEach(function (node) { items.appendChild(node); }); } function requestPage(page, append) { if (state.loading) { return; } state.loading = true; results.classList.add("is-loading"); setStatus(results.getAttribute("data-loading-text") || "Loading...", true); var form = new FormData(); form.append("action", results.getAttribute("data-action") || "airsang_ajax_tax_post_list"); form.append("nonce", results.getAttribute("data-nonce") || ""); form.append("settings", results.getAttribute("data-settings") || "{}"); form.append("term_id", state.termId || "0"); form.append("page", String(page || 1)); fetch(getAjaxUrl(results), { method: "POST", credentials: "same-origin", body: form }) .then(function (response) { return response.json(); }) .then(function (payload) { if (!payload || !payload.success || !payload.data) { return; } if (append) { appendHtml(payload.data.html || ""); } else { items.innerHTML = payload.data.html || ""; } state.page = parseInt(payload.data.page || page, 10) || page; state.hasMore = !!payload.data.has_more; results.setAttribute("data-current-page", String(state.page)); results.setAttribute("data-has-more", state.hasMore ? "yes" : "no"); if (!state.hasMore) { setStatus(results.getAttribute("data-end-text") || "", false); } else { setStatus("", false); } }) .catch(function () { setStatus("", false); }) .finally(function () { state.loading = false; results.classList.remove("is-loading"); }); } function loadMore() { if (!state.infinite || !state.hasMore || state.loading) { return; } requestPage(state.page + 1, true); } root.addEventListener("click", function (event) { var tab = event.target.closest("[data-atpl-tab]"); var scroller = event.target.closest("[data-atpl-scroll]"); if (tab && root.contains(tab)) { event.preventDefault(); root.querySelectorAll("[data-atpl-tab]").forEach(function (item) { item.classList.remove("is-active"); }); tab.classList.add("is-active"); state.termId = tab.getAttribute("data-term-id") || "0"; state.page = 1; state.hasMore = true; results.setAttribute("data-current-term", state.termId); requestPage(1, false); return; } if (scroller && viewport && root.contains(scroller)) { event.preventDefault(); var dir = parseInt(scroller.getAttribute("data-atpl-scroll") || "1", 10) || 1; viewport.scrollBy({ left: dir * Math.max(160, Math.round(viewport.clientWidth * 0.7)), behavior: "smooth" }); } }); if (state.infinite && sentinel && "IntersectionObserver" in window) { var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { loadMore(); } }); }, { rootMargin: "420px 0px 420px 0px", threshold: 0 }); observer.observe(sentinel); } else if (state.infinite) { window.addEventListener("scroll", function () { var rect = root.getBoundingClientRect(); if (rect.bottom < window.innerHeight + 420) { loadMore(); } }, { passive: true }); } } function initAll(scope) { var root = scope || document; if (root.matches && root.matches("[data-airsang-ajax-tax-post-list]")) { init(root); } root.querySelectorAll && root.querySelectorAll("[data-airsang-ajax-tax-post-list]").forEach(init); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { initAll(document); }); } else { initAll(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangAtplHooksBound) { return; } window.__airsangAtplHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_ajax_tax_post_list.default", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } })(); //# sourceURL=airsang-elementor-ajax-tax-post-list-widget-js-after </script> <script id="airsang-elementor-ajax-post-search-widget-js-after"> (function () { function init(root) { if (!root || root.dataset.apsReady === "yes") { return; } root.dataset.apsReady = "yes"; var form = root.querySelector(".airsang-ajax-post-search__form"); var input = root.querySelector(".airsang-ajax-post-search__input"); var button = root.querySelector(".airsang-ajax-post-search__button"); var clearButton = root.querySelector("[data-aps-clear]"); var results = root.querySelector(".airsang-ajax-post-search__results"); if (!form || !input || !results) { return; } var collapseTimer = null; function setContent(html, loading) { results.innerHTML = html || ""; results.classList.toggle("has-content", !!html); results.classList.toggle("is-loading", !!loading); } function updateValueState() { root.classList.toggle("has-value", !!(input.value || "").trim()); } function collapseResults() { if (results.classList.contains("is-loading")) { return; } setContent("", false); } function search() { var keyword = (input.value || "").trim(); var loadingText = results.getAttribute("data-loading-text") || "Loading..."; updateValueState(); setContent("<div class=\"airsang-ajax-post-search__loading\">" + loadingText + "</div>", true); if (button) { button.disabled = true; } var formData = new FormData(); formData.append("action", results.getAttribute("data-action") || "airsang_ajax_post_search"); formData.append("nonce", results.getAttribute("data-nonce") || ""); formData.append("keyword", keyword); formData.append("settings", results.getAttribute("data-settings") || "{}"); fetch(results.getAttribute("data-ajax-url") || "https://www.airsang.com/wp-admin/admin-ajax.php", { method: "POST", credentials: "same-origin", body: formData }) .then(function (response) { return response.json(); }) .then(function (payload) { if (payload && payload.success && payload.data && typeof payload.data.html === "string") { setContent(payload.data.html, false); } else { setContent("", false); } }) .catch(function () { setContent("", false); }) .finally(function () { if (button) { button.disabled = false; } }); } form.addEventListener("submit", function (event) { event.preventDefault(); search(); }); input.addEventListener("input", updateValueState); if (clearButton) { clearButton.addEventListener("click", function (event) { event.preventDefault(); input.value = ""; updateValueState(); collapseResults(); input.focus(); }); } root.addEventListener("mouseenter", function () { if (collapseTimer) { window.clearTimeout(collapseTimer); collapseTimer = null; } }); root.addEventListener("mouseleave", function () { collapseTimer = window.setTimeout(collapseResults, 260); }); document.addEventListener("click", function (event) { if (!root.contains(event.target)) { collapseResults(); } }); updateValueState(); } function initAll(scope) { var root = scope || document; if (root.matches && root.matches("[data-airsang-ajax-post-search]")) { init(root); } root.querySelectorAll && root.querySelectorAll("[data-airsang-ajax-post-search]").forEach(init); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { initAll(document); }); } else { initAll(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangApsHooksBound) { return; } window.__airsangApsHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_ajax_post_search.default", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } })(); //# sourceURL=airsang-elementor-ajax-post-search-widget-js-after </script> <script id="airsang-elementor-app-data-ecosystem-widget-js-after"> (function () { function reveal(section) { if (section) { section.classList.add("is-visible"); } } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-app-data-ecosystem.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.16 }); sections.forEach(function (section) { if (!section.classList.contains("is-visible")) { observer.observe(section); } }); } function initAll(scope) { init(scope || document); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { initAll(document); }); } else { initAll(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangAdeHooksBound) { return; } window.__airsangAdeHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_app_data_ecosystem.default", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } })(); //# sourceURL=airsang-elementor-app-data-ecosystem-widget-js-after </script> <script id="airsang-elementor-shopify-build-services-cards-widget-js-after"> (function () { function reveal(section) { if (section) { section.classList.add("is-visible"); } } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-shopify-build-services.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.16 }); sections.forEach(function (section) { if (!section.classList.contains("is-visible")) { observer.observe(section); } }); } function initAll(scope) { init(scope || document); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { initAll(document); }); } else { initAll(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangSbsHooksBound) { return; } window.__airsangSbsHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_shopify_build_services_cards.default", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } })(); //# sourceURL=airsang-elementor-shopify-build-services-cards-widget-js-after </script> <script id="airsang-elementor-checkout-customer-journey-widget-js-after"> (function () { function reveal(section) { if (section) { section.classList.add("is-visible"); } } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-checkout-customer-journey.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.16 }); sections.forEach(function (section) { if (!section.classList.contains("is-visible")) { observer.observe(section); } }); } function initAll(scope) { init(scope || document); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { initAll(document); }); } else { initAll(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangCcjHooksBound) { return; } window.__airsangCcjHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_checkout_customer_journey.default", function ($scope) { initAll($scope && $scope[0] ? $scope[0] : document); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } })(); //# sourceURL=airsang-elementor-checkout-customer-journey-widget-js-after </script> <script id="airsang-elementor-seo-traffic-hero-widget-js-after"> (function () { function reveal(section) { if (!section) { return; } section.classList.add("is-visible"); } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-seo-traffic-hero.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.2 }); sections.forEach(function (section) { if (section.classList.contains("is-visible")) { return; } observer.observe(section); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangSthHooksBound) { return; } window.__airsangSthHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_seo_traffic_hero.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } window.setTimeout(function () { init(document); }, 120); })(); //# sourceURL=airsang-elementor-seo-traffic-hero-widget-js-after </script> <script id="airsang-elementor-service-capability-cards-widget-js-after"> (function () { function reveal(section) { if (!section) { return; } section.classList.add("is-visible"); } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-service-capability-cards.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.16 }); sections.forEach(function (section) { if (section.classList.contains("is-visible")) { return; } observer.observe(section); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangSccHooksBound) { return; } window.__airsangSccHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_service_capability_cards.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } window.setTimeout(function () { init(document); }, 120); })(); //# sourceURL=airsang-elementor-service-capability-cards-widget-js-after </script> <script id="airsang-elementor-why-seo-cards-widget-js-after"> (function () { function reveal(section) { if (!section) { return; } section.classList.add("is-visible"); } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-why-seo-cards.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.18 }); sections.forEach(function (section) { if (section.classList.contains("is-visible")) { return; } observer.observe(section); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangWscHooksBound) { return; } window.__airsangWscHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_why_seo_cards.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } window.setTimeout(function () { init(document); }, 120); })(); //# sourceURL=airsang-elementor-why-seo-cards-widget-js-after </script> <script id="airsang-elementor-seo-step-image-tabs-widget-js-after"> (function () { function activate(section, index) { var buttons = section.querySelectorAll(".airsang-seo-step-tabs__step"); var panels = section.querySelectorAll(".airsang-seo-step-tabs__panel"); buttons.forEach(function (button, buttonIndex) { var active = buttonIndex === index; button.classList.toggle("is-active", active); button.setAttribute("aria-selected", active ? "true" : "false"); }); panels.forEach(function (panel, panelIndex) { var active = panelIndex === index; panel.classList.toggle("is-active", active); if (active) { panel.removeAttribute("hidden"); } else { window.setTimeout(function () { if (!panel.classList.contains("is-active")) { panel.setAttribute("hidden", "hidden"); } }, 430); } }); } function reveal(section) { if (!section) { return; } section.classList.add("is-visible"); } function setupTabs(section) { if (!section || section.dataset.airsangSitReady === "yes") { return; } section.dataset.airsangSitReady = "yes"; var buttons = section.querySelectorAll(".airsang-seo-step-tabs__step"); buttons.forEach(function (button, index) { button.addEventListener("click", function () { activate(section, index); }); }); activate(section, 0); } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-seo-step-tabs"); sections.forEach(setupTabs); var entranceSections = scope.querySelectorAll(".airsang-seo-step-tabs.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { entranceSections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { entranceSections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.18 }); entranceSections.forEach(function (section) { if (section.classList.contains("is-visible")) { return; } observer.observe(section); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangSitHooksBound) { return; } window.__airsangSitHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_seo_step_image_tabs.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } window.setTimeout(function () { init(document); }, 120); })(); //# sourceURL=airsang-elementor-seo-step-image-tabs-widget-js-after </script> <script id="airsang-elementor-seo-process-workflow-widget-js-after"> (function () { function reveal(section) { if (!section) { return; } section.classList.add("is-visible"); } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-seo-process-workflow.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.18 }); sections.forEach(function (section) { if (section.classList.contains("is-visible")) { return; } observer.observe(section); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangSpwHooksBound) { return; } window.__airsangSpwHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_seo_process_workflow.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } window.setTimeout(function () { init(document); }, 120); })(); //# sourceURL=airsang-elementor-seo-process-workflow-widget-js-after </script> <script id="airsang-elementor-service-tracks-cards-widget-js-after"> (function () { function reveal(section) { if (!section) { return; } section.classList.add("is-visible"); } function init(root) { var scope = root || document; var sections = scope.querySelectorAll(".airsang-service-tracks-cards.is-entrance-enabled"); if (document.body && (document.body.classList.contains("elementor-editor-active") || document.body.classList.contains("elementor-editor-preview"))) { sections.forEach(reveal); return; } if (!("IntersectionObserver" in window)) { sections.forEach(reveal); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { reveal(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.16 }); sections.forEach(function (section) { if (section.classList.contains("is-visible")) { return; } observer.observe(section); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } function bindElementorHooks() { if (!window.elementorFrontend || !window.elementorFrontend.hooks || window.__airsangStcHooksBound) { return; } window.__airsangStcHooksBound = true; window.elementorFrontend.hooks.addAction("frontend/element_ready/global", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_service_tracks_cards.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } bindElementorHooks(); window.addEventListener("elementor/frontend/init", bindElementorHooks); if (window.jQuery) { window.jQuery(window).on("elementor/frontend/init", bindElementorHooks); } window.setTimeout(function () { init(document); }, 120); })(); //# sourceURL=airsang-elementor-service-tracks-cards-widget-js-after </script> <script id="airsang-elementor-related-articles-posts-carousel-widget-js-after"> (function() { if (window.__airsangRelatedPostsCarouselReady) { return; } window.__airsangRelatedPostsCarouselReady = true; function getPerView(root) { if (window.innerWidth <= 767) { return parseInt(root.getAttribute("data-mobile") || "1", 10); } if (window.innerWidth <= 1024) { return parseInt(root.getAttribute("data-tablet") || "2", 10); } return parseInt(root.getAttribute("data-desktop") || "3", 10); } function setup(root) { if (root.dataset.airsangRelatedReady === "yes") { return; } root.dataset.airsangRelatedReady = "yes"; var viewport = root.querySelector(".airsang-related-posts-carousel__viewport"); var track = root.querySelector(".airsang-related-posts-carousel__track"); var slides = Array.prototype.slice.call(root.querySelectorAll(".airsang-related-posts-carousel__slide")); var prev = root.querySelector(".airsang-related-posts-carousel__arrow--prev"); var next = root.querySelector(".airsang-related-posts-carousel__arrow--next"); var dotsWrap = root.querySelector(".airsang-related-posts-carousel__dots"); var index = 0; var timer = null; var startX = 0; var currentX = 0; var dragging = false; if (!viewport || !track || !slides.length) { return; } function maxIndex() { return Math.max(0, slides.length - getPerView(root)); } function gapValue() { return parseFloat(getComputedStyle(track).gap || "0") || 0; } function stepSize() { var rect = slides[0].getBoundingClientRect(); return rect.width + gapValue(); } function buildDots() { if (!dotsWrap) { return; } dotsWrap.innerHTML = ""; for (var i = 0; i <= maxIndex(); i++) { var dot = document.createElement("button"); dot.type = "button"; dot.className = "airsang-related-posts-carousel__dot"; dot.setAttribute("aria-label", "Go to slide " + (i + 1)); (function(dotIndex) { dot.addEventListener("click", function() { index = dotIndex; update(); restart(); }); })(i); dotsWrap.appendChild(dot); } } function update() { var perView = getPerView(root); root.style.setProperty("--airsang-related-per-view", perView); index = Math.max(0, Math.min(index, maxIndex())); track.style.transform = "translate3d(" + (-index * stepSize()) + "px, 0, 0)"; if (dotsWrap) { Array.prototype.slice.call(dotsWrap.children).forEach(function(dot, dotIndex) { dot.classList.toggle("is-active", dotIndex === index); }); } } function go(direction) { index += direction; if (index > maxIndex()) { index = 0; } if (index < 0) { index = maxIndex(); } update(); } function stop() { if (timer) { window.clearInterval(timer); timer = null; } } function start() { stop(); if (root.getAttribute("data-autoplay") !== "yes" || maxIndex() <= 0) { return; } timer = window.setInterval(function() { go(1); }, parseInt(root.getAttribute("data-delay") || "4200", 10)); } function restart() { stop(); start(); } if (prev) { prev.addEventListener("click", function() { go(-1); restart(); }); } if (next) { next.addEventListener("click", function() { go(1); restart(); }); } viewport.addEventListener("pointerdown", function(event) { dragging = true; startX = event.clientX; currentX = startX; track.style.transition = "none"; stop(); }); window.addEventListener("pointermove", function(event) { if (!dragging) { return; } currentX = event.clientX; track.style.transform = "translate3d(" + ((-index * stepSize()) + currentX - startX) + "px, 0, 0)"; }); window.addEventListener("pointerup", function() { if (!dragging) { return; } dragging = false; track.style.transition = ""; if (Math.abs(currentX - startX) > 48) { go(currentX < startX ? 1 : -1); } else { update(); } start(); }); window.addEventListener("resize", function() { buildDots(); update(); restart(); }); buildDots(); update(); start(); } function init() { document.querySelectorAll(".airsang-related-posts-carousel").forEach(setup); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init); } else { init(); } window.addEventListener("load", init); if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_related_articles_posts_carousel.default", init); } })(); //# sourceURL=airsang-elementor-related-articles-posts-carousel-widget-js-after </script> <script id="wp-hooks-js" src="https://www.airsang.com/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script> <script id="wp-i18n-js" src="https://www.airsang.com/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script> <script id="wp-i18n-js-after"> wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'rtl' ] } ); //# sourceURL=wp-i18n-js-after </script> <script id="swv-js" src="https://www.airsang.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.4"></script> <script id="contact-form-7-js-translations"> ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "contact-form-7", {"translation-revision-date":"2023-04-05 09:50:06+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=6; plural=(n == 0) ? 0 : ((n == 1) ? 1 : ((n == 2) ? 2 : ((n % 100 >= 3 && n % 100 <= 10) ? 3 : ((n % 100 >= 11 && n % 100 <= 99) ? 4 : 5))));","lang":"ar"},"Error:":["\u062e\u0637\u0623:"]}},"comment":{"reference":"includes\/js\/index.js"}} ); //# sourceURL=contact-form-7-js-translations </script> <script id="contact-form-7-js-before"> var wpcf7 = { "api": { "root": "https:\/\/www.airsang.com\/ar\/wp-json\/", "namespace": "contact-form-7\/v1" }, "cached": 1 }; //# sourceURL=contact-form-7-js-before </script> <script id="contact-form-7-js" src="https://www.airsang.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.4"></script> <script id="airsang-elementor-flip-case-stats-widget-js-after"> (function() { function formatValue(value, decimals) { var fixed = Number(value).toFixed(decimals); return decimals > 0 ? fixed : String(Math.round(Number(value))); } function animateCounter(counter) { if (!counter || counter.dataset.airsangFlipCounted === "yes") { return; } counter.dataset.airsangFlipCounted = "yes"; var target = parseFloat(counter.dataset.target || "0"); var decimals = parseInt(counter.dataset.decimals || "0", 10); var prefix = counter.dataset.prefix || ""; var suffix = counter.dataset.suffix || ""; var root = counter.closest(".airsang-flip-case-stats"); var duration = root ? parseInt(root.dataset.counterDuration || "1600", 10) : 1600; var start = null; if (!duration) { counter.textContent = prefix + formatValue(target, decimals) + suffix; return; } function step(timestamp) { if (!start) { start = timestamp; } var progress = Math.min((timestamp - start) / duration, 1); var eased = 1 - Math.pow(1 - progress, 3); var current = target * eased; counter.textContent = prefix + formatValue(current, decimals) + suffix; if (progress < 1) { window.requestAnimationFrame(step); } else { counter.textContent = prefix + formatValue(target, decimals) + suffix; } } window.requestAnimationFrame(step); } function initCounters(scope) { var counters = Array.prototype.slice.call((scope || document).querySelectorAll(".js-airsang-flip-counter")); if (!("IntersectionObserver" in window)) { counters.forEach(animateCounter); return; } var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { animateCounter(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.35 }); counters.forEach(function(counter) { observer.observe(counter); }); } function initFlip(scope) { var cards = Array.prototype.slice.call((scope || document).querySelectorAll(".airsang-flip-case-stats__card")); cards.forEach(function(card) { if (card.dataset.airsangFlipReady === "yes") { return; } card.dataset.airsangFlipReady = "yes"; card.addEventListener("click", function(event) { if (event.target.closest("a")) { return; } if (window.innerWidth <= 1024) { card.classList.toggle("is-flipped"); } }); }); } function init(scope) { initCounters(scope || document); initFlip(scope || document); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function() { init(document); }); } else { init(document); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_flip_case_stats.default", function($scope) { init($scope[0]); }); } })(); //# sourceURL=airsang-elementor-flip-case-stats-widget-js-after </script> <script id="airsang-elementor-process-accordion-widget-js-after"> (function() { function setItem(item, open) { var button = item.querySelector(".airsang-process-accordion__button"); var content = item.querySelector(".airsang-process-accordion__content"); item.classList.toggle("is-open", open); if (button) { button.setAttribute("aria-expanded", open ? "true" : "false"); } if (content) { if (open) { content.removeAttribute("hidden"); } else { content.setAttribute("hidden", "hidden"); } } } function initOne(root) { if (!root || root.dataset.airsangProcessAccordionReady === "yes") { return; } root.dataset.airsangProcessAccordionReady = "yes"; root.addEventListener("click", function(event) { var button = event.target.closest(".airsang-process-accordion__button"); if (!button || !root.contains(button)) { return; } var item = button.closest(".airsang-process-accordion__item"); var isOpen = item.classList.contains("is-open"); var behavior = root.getAttribute("data-behavior") || "single"; var closeAll = root.getAttribute("data-close-all") === "yes"; if (isOpen && !closeAll) { return; } if (behavior === "single" && !isOpen) { root.querySelectorAll(".airsang-process-accordion__item.is-open").forEach(function(openItem) { if (openItem !== item) { setItem(openItem, false); } }); } setItem(item, !isOpen); }); } function init(scope) { Array.prototype.slice.call((scope || document).querySelectorAll(".airsang-process-accordion")).forEach(initOne); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function() { init(document); }); } else { init(document); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_process_accordion.default", function($scope) { init($scope[0]); }); } })(); //# sourceURL=airsang-elementor-process-accordion-widget-js-after </script> <script id="airsang-elementor-scroll-driven-animation-widget-js-after"> (function() { if (window.__airsangScrollDrivenAnimationReady) { return; } window.__airsangScrollDrivenAnimationReady = true; var scenes = []; var ticking = false; function clamp(value, min, max) { return Math.min(max, Math.max(min, value)); } function ease(value, type) { value = clamp(value, 0, 1); if ("linear" === type) { return value; } if ("easeInOut" === type) { return value < .5 ? 4 * value * value * value : 1 - Math.pow(-2 * value + 2, 3) / 2; } return 1 - Math.pow(1 - value, 3); } function cssSizeToPx(value, axis, scene) { value = String(value || "0px").trim(); var number = parseFloat(value); if (isNaN(number)) { return 0; } if (value.indexOf("vw") > -1) { return window.innerWidth * number / 100; } if (value.indexOf("vh") > -1) { return window.innerHeight * number / 100; } if (value.indexOf("%") > -1) { var box = scene.querySelector(".airsang-scroll-scene__cluster") || scene; var size = "y" === axis ? box.offsetHeight : box.offsetWidth; return size * number / 100; } if (value.indexOf("rem") > -1) { return number * parseFloat(getComputedStyle(document.documentElement).fontSize || 16); } if (value.indexOf("em") > -1) { return number * 16; } return number; } function getCssNumber(element, name, fallback) { var value = getComputedStyle(element).getPropertyValue(name); var number = parseFloat(value); return isNaN(number) ? fallback : number; } function getProgress(scene) { var rect = scene.getBoundingClientRect(); var stickyTop = cssSizeToPx(getComputedStyle(scene).getPropertyValue("--airsang-scroll-sticky-top"), "y", scene); var range = Math.max(1, rect.height - window.innerHeight); var raw = (-rect.top + stickyTop) / range; var startOffset = parseFloat(scene.getAttribute("data-start-offset") || "0"); var endOffset = parseFloat(scene.getAttribute("data-end-offset") || "0"); var start = startOffset; var end = 1 + endOffset; if (Math.abs(end - start) < .001) { return raw >= end ? 1 : 0; } return clamp((raw - start) / (end - start), 0, 1); } function updateScene(scene) { var eased = ease(getProgress(scene), scene.getAttribute("data-easing") || "easeOut"); var media = scene.querySelectorAll(".airsang-scroll-scene__media"); var rings = scene.querySelectorAll(".airsang-scroll-scene__ring"); var corners = scene.querySelectorAll(".airsang-scroll-scene__corner"); var text = scene.querySelector(".airsang-scroll-scene__text"); var reducedMotion = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches; if (reducedMotion) { eased = 1; } if (rings.length) { var ringStartScale = getCssNumber(scene, "--airsang-ring-start-scale", .72); var ringEndScale = getCssNumber(scene, "--airsang-ring-end-scale", 1); var ringStartOpacity = getCssNumber(scene, "--airsang-ring-start-opacity", .35); var ringEndOpacity = getCssNumber(scene, "--airsang-ring-end-opacity", 1); var ringScale = ringStartScale + (ringEndScale - ringStartScale) * eased; var ringOpacity = ringStartOpacity + (ringEndOpacity - ringStartOpacity) * eased; rings.forEach(function(ring, index) { var depthScale = ringScale + (rings.length - index - 1) * .035 * (1 - eased); ring.style.opacity = ringOpacity; ring.style.transform = "translate3d(-50%, -50%, 0) scale(" + depthScale + ")"; }); } if (corners.length) { var cornerStyle = getComputedStyle(scene); var cornerMoveX = cssSizeToPx(cornerStyle.getPropertyValue("--airsang-corner-move-x"), "x", scene); var cornerMoveY = cssSizeToPx(cornerStyle.getPropertyValue("--airsang-corner-move-y"), "y", scene); var cornerStartScale = getCssNumber(scene, "--airsang-corner-start-scale", .75); var cornerEndScale = getCssNumber(scene, "--airsang-corner-end-scale", 1); var cornerStartOpacity = getCssNumber(scene, "--airsang-corner-start-opacity", .35); var cornerEndOpacity = getCssNumber(scene, "--airsang-corner-end-opacity", 1); var cornerScale = cornerStartScale + (cornerEndScale - cornerStartScale) * eased; var cornerOpacity = cornerStartOpacity + (cornerEndOpacity - cornerStartOpacity) * eased; corners.forEach(function(corner) { var isRight = corner.classList.contains("airsang-scroll-scene__corner--right"); var dirX = isRight ? 1 : -1; var dirY = isRight ? -1 : 1; var x = dirX * cornerMoveX * (1 - eased); var y = dirY * cornerMoveY * (1 - eased); corner.style.opacity = cornerOpacity; corner.style.transform = "translate3d(" + x + "px, " + y + "px, 0) scale(" + cornerScale + ")"; }); } media.forEach(function(item) { var style = getComputedStyle(item); var startX = cssSizeToPx(style.getPropertyValue("--as-start-x"), "x", scene); var startY = cssSizeToPx(style.getPropertyValue("--as-start-y"), "y", scene); var endX = cssSizeToPx(style.getPropertyValue("--as-end-x"), "x", scene); var endY = cssSizeToPx(style.getPropertyValue("--as-end-y"), "y", scene); var startScale = getCssNumber(item, "--as-start-scale", .65); var endScale = getCssNumber(item, "--as-end-scale", 1); var startRotate = getCssNumber(item, "--as-start-rotate", 0); var endRotate = getCssNumber(item, "--as-end-rotate", 0); var startOpacity = getCssNumber(item, "--as-start-opacity", 0); var endOpacity = getCssNumber(item, "--as-end-opacity", 1); var x = startX + (endX - startX) * eased; var y = startY + (endY - startY) * eased; var scale = startScale + (endScale - startScale) * eased; var rotate = startRotate + (endRotate - startRotate) * eased; var opacity = startOpacity + (endOpacity - startOpacity) * eased; item.style.opacity = opacity; item.style.transform = "translate3d(-50%, -50%, 0) translate3d(" + x + "px, " + y + "px, 0) scale(" + scale + ") rotate(" + rotate + "deg)"; }); if (text) { var textOpacity = clamp((eased - .38) / .35, 0, 1); var textLift = (1 - textOpacity) * 34; text.style.opacity = textOpacity; text.style.transform = "translate3d(-50%, calc(-50% + var(--airsang-scroll-text-y, 0px) + " + textLift + "px), 0) scale(" + (.96 + textOpacity * .04) + ")"; } } function requestUpdate() { if (ticking) { return; } ticking = true; window.requestAnimationFrame(function() { scenes.forEach(updateScene); ticking = false; }); } function init() { scenes = Array.prototype.slice.call(document.querySelectorAll(".airsang-scroll-scene")); requestUpdate(); } document.addEventListener("DOMContentLoaded", init); window.addEventListener("load", init); window.addEventListener("scroll", requestUpdate, { passive: true }); window.addEventListener("resize", requestUpdate); if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_scroll_driven_animation.default", function() { init(); }); } init(); })(); //# sourceURL=airsang-elementor-scroll-driven-animation-widget-js-after </script> <script id="airsang-elementor-dynamic-hashtag-headline-widget-js-after"> (function() { if (window.__airsangDynamicHashtagHeadlineReady) { return; } window.__airsangDynamicHashtagHeadlineReady = true; function setup(root) { if (root.dataset.airsangDynamicHashtagReady === "yes") { return; } root.dataset.airsangDynamicHashtagReady = "yes"; var viewport = root.querySelector(".airsang-dynamic-hashtag-headline__word-viewport"); var track = root.querySelector(".airsang-dynamic-hashtag-headline__word-track"); var items = track ? Array.prototype.slice.call(track.querySelectorAll(".airsang-dynamic-hashtag-headline__word")) : []; if (!viewport || !track || items.length <= 1) { return; } var interval = parseInt(root.getAttribute("data-interval") || "1800", 10); var pauseOnHover = root.getAttribute("data-pause-hover") === "yes"; var index = 0; var timer = null; function measure() { var maxHeight = 0; items.forEach(function(item) { item.style.height = "auto"; maxHeight = Math.max(maxHeight, item.offsetHeight); }); if (maxHeight > 0) { viewport.style.height = maxHeight + "px"; items.forEach(function(item) { item.style.height = maxHeight + "px"; }); } } function update() { measure(); var itemHeight = viewport.offsetHeight || items[index].offsetHeight || 0; track.style.transform = "translate3d(0," + (-index * itemHeight) + "px,0)"; items.forEach(function(item, itemIndex) { item.classList.toggle("is-active", itemIndex === index); }); } function changeWord() { index = (index + 1) % items.length; update(); } function start() { stop(); timer = window.setInterval(changeWord, Math.max(interval, 600)); } function stop() { if (timer) { window.clearInterval(timer); timer = null; } } if (pauseOnHover) { root.addEventListener("mouseenter", stop); root.addEventListener("mouseleave", start); } update(); window.addEventListener("resize", update); start(); } function init() { document.querySelectorAll(".airsang-dynamic-hashtag-headline").forEach(setup); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init); } else { init(); } window.addEventListener("load", init); if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_dynamic_hashtag_headline.default", init); } })(); //# sourceURL=airsang-elementor-dynamic-hashtag-headline-widget-js-after </script> <script id="airsang-elementor-sticky-tabs-image-carousel-widget-js-after"> (function() { function init(root) { if (!root || root.dataset.airsangStickyCarouselReady === "1") { return; } root.dataset.airsangStickyCarouselReady = "1"; var buttons = Array.prototype.slice.call(root.querySelectorAll(".airsang-sticky-tabs-carousel__tab")); var panels = Array.prototype.slice.call(root.querySelectorAll(".airsang-sticky-tabs-carousel__panel")); var ticking = false; var autoplayTimer = null; function setActiveImage(panel) { var items = Array.prototype.slice.call(panel.querySelectorAll(".airsang-sticky-tabs-carousel__item")); var images = Array.prototype.slice.call(panel.querySelectorAll(".airsang-sticky-tabs-carousel__image")); var visualCard = panel.querySelector(".airsang-sticky-tabs-carousel__visual-card"); var trigger = window.innerHeight * 0.46; var activeIndex = 0; var closest = Infinity; if (visualCard) { var visualRect = visualCard.getBoundingClientRect(); trigger = visualRect.top + visualRect.height / 2; } items.forEach(function(item, index) { var rect = item.getBoundingClientRect(); var center = rect.top + rect.height / 2; var distance = Math.abs(center - trigger); if (distance < closest) { closest = distance; activeIndex = index; } }); items.forEach(function(item, index) { item.classList.toggle("is-active", index === activeIndex); }); images.forEach(function(image, index) { image.classList.toggle("is-active", index === activeIndex); image.classList.toggle("is-before", index < activeIndex); image.classList.toggle("is-after", index > activeIndex); }); } function update() { ticking = false; panels.forEach(function(panel) { if (panel.classList.contains("is-active")) { setActiveImage(panel); } }); } function requestUpdate() { if (ticking) { return; } ticking = true; window.requestAnimationFrame(update); } function updateMobileDots(panel) { var track = panel.querySelector(".airsang-sticky-tabs-carousel__mobile-track"); var dots = Array.prototype.slice.call(panel.querySelectorAll("[data-mobile-dot]")); var slides = Array.prototype.slice.call(panel.querySelectorAll("[data-mobile-slide]")); if (!track || !dots.length || !slides.length) { return; } var active = 0; var trackRect = track.getBoundingClientRect(); var trackCenter = trackRect.left + trackRect.width / 2; var closest = Infinity; slides.forEach(function(slide, index) { var rect = slide.getBoundingClientRect(); var center = rect.left + rect.width / 2; var distance = Math.abs(center - trackCenter); if (distance < closest) { closest = distance; active = index; } }); dots.forEach(function(dot, index) { dot.classList.toggle("is-active", index === active); }); } function bindMobileCarousel(panel) { var track = panel.querySelector(".airsang-sticky-tabs-carousel__mobile-track"); var dots = Array.prototype.slice.call(panel.querySelectorAll("[data-mobile-dot]")); if (!track || track.dataset.bound === "1") { return; } track.dataset.bound = "1"; track.addEventListener("scroll", function() { window.requestAnimationFrame(function() { updateMobileDots(panel); }); }, { passive: true }); dots.forEach(function(dot) { dot.addEventListener("click", function() { var index = parseInt(dot.dataset.mobileDot || "0", 10); scrollMobileTo(panel, index, "smooth"); }); }); } function scrollMobileTo(panel, index, behavior) { var track = panel.querySelector(".airsang-sticky-tabs-carousel__mobile-track"); var slides = Array.prototype.slice.call(panel.querySelectorAll("[data-mobile-slide]")); if (!track || !slides[index]) { return; } track.scrollTo({ left: slides[index].offsetLeft, behavior: behavior || "smooth" }); } function activate(index) { buttons.forEach(function(button, buttonIndex) { var active = buttonIndex === index; button.classList.toggle("is-active", active); button.setAttribute("aria-selected", active ? "true" : "false"); button.tabIndex = active ? 0 : -1; }); panels.forEach(function(panel, panelIndex) { var active = panelIndex === index; panel.classList.toggle("is-active", active); if (active) { panel.removeAttribute("hidden"); bindMobileCarousel(panel); updateMobileDots(panel); } else { panel.setAttribute("hidden", "hidden"); } }); root.dataset.active = String(index); requestUpdate(); } function startAutoplay() { if (root.dataset.mobileAutoplay !== "1") { return; } var delay = parseInt(root.dataset.mobileDelay || "3000", 10); window.clearInterval(autoplayTimer); autoplayTimer = window.setInterval(function() { if (window.innerWidth > 767) { return; } var panel = root.querySelector(".airsang-sticky-tabs-carousel__panel.is-active"); var track = panel ? panel.querySelector(".airsang-sticky-tabs-carousel__mobile-track") : null; var slides = panel ? Array.prototype.slice.call(panel.querySelectorAll("[data-mobile-slide]")) : []; if (!track || slides.length < 2) { return; } var activeDot = panel.querySelector("[data-mobile-dot].is-active"); var current = activeDot ? parseInt(activeDot.dataset.mobileDot || "0", 10) : 0; var next = (current + 1) % slides.length; scrollMobileTo(panel, next, "smooth"); }, delay); } buttons.forEach(function(button, index) { button.addEventListener("click", function() { activate(index); }); }); activate(parseInt(root.dataset.active || "0", 10)); startAutoplay(); window.addEventListener("scroll", requestUpdate, { passive: true }); window.addEventListener("resize", requestUpdate); window.addEventListener("load", requestUpdate); } function boot(scope) { (scope || document).querySelectorAll(".airsang-sticky-tabs-carousel").forEach(init); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function() { boot(document); }); } else { boot(document); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_sticky_tabs_image_carousel.default", function($scope) { boot($scope && $scope[0] ? $scope[0] : document); }); } })(); //# sourceURL=airsang-elementor-sticky-tabs-image-carousel-widget-js-after </script> <script id="airsang-elementor-industry-experience-brand-wall-widget-js-after"> (function () { function formatNumber(value, separator) { var rounded = Math.round(value); if (separator !== "yes") { return String(rounded); } return String(rounded).replace(/\B(?=(\d{3})+(?!\d))/g, ","); } function animateCounter(counter) { if (!counter || counter.dataset.airsangAnimated === "yes") { return; } counter.dataset.airsangAnimated = "yes"; var target = parseFloat(counter.dataset.target || "0"); var suffix = counter.dataset.suffix || ""; var duration = parseInt(counter.dataset.duration || "1800", 10); var separator = counter.dataset.separator || "no"; var startTime = null; function tick(timestamp) { if (!startTime) { startTime = timestamp; } var progress = Math.min((timestamp - startTime) / duration, 1); var eased = 1 - Math.pow(1 - progress, 3); var current = target * eased; counter.textContent = formatNumber(current, separator) + suffix; if (progress < 1) { window.requestAnimationFrame(tick); } else { counter.textContent = formatNumber(target, separator) + suffix; } } window.requestAnimationFrame(tick); } function initCounters(root) { var scope = root || document; var counters = scope.querySelectorAll(".airsang-industry-brand-wall__counter"); if (!("IntersectionObserver" in window)) { counters.forEach(animateCounter); return; } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { animateCounter(entry.target); observer.unobserve(entry.target); } }); }, { threshold: 0.35 }); counters.forEach(function (counter) { observer.observe(counter); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { initCounters(document); }); } else { initCounters(document); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_industry_experience_brand_wall.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; initCounters(node); }); } })(); //# sourceURL=airsang-elementor-industry-experience-brand-wall-widget-js-after </script> <script id="airsang-elementor-website-case-scroll-showcase-widget-js-after"> (function () { function setStackState(cards, activeIndex) { var total = cards.length; cards.forEach(function (card) { card.classList.remove("is-active", "is-prev", "is-next", "is-hidden"); card.classList.add("is-hidden"); }); if (!total) { return; } var prevIndex = (activeIndex - 1 + total) % total; var nextIndex = (activeIndex + 1) % total; cards[activeIndex].classList.remove("is-hidden"); cards[activeIndex].classList.add("is-active"); if (total > 1) { cards[nextIndex].classList.remove("is-hidden"); cards[nextIndex].classList.add("is-next"); } if (total > 2) { cards[prevIndex].classList.remove("is-hidden"); cards[prevIndex].classList.add("is-prev"); } } function initViewport(viewport) { if (!viewport || viewport.dataset.airsangWcssReady === "yes") { return; } var cards = Array.prototype.slice.call(viewport.querySelectorAll(".airsang-website-case-scroll__case-card")); if (!cards.length) { return; } viewport.dataset.airsangWcssReady = "yes"; var activeIndex = cards.findIndex(function (card) { return card.classList.contains("is-active"); }); if (activeIndex < 0) { activeIndex = 0; } setStackState(cards, activeIndex); if (cards.length < 2 || window.matchMedia("(prefers-reduced-motion: reduce)").matches) { return; } var interval = parseInt(viewport.dataset.interval || "3000", 10); var direction = viewport.dataset.direction === "down" ? -1 : 1; var paused = false; var root = viewport.closest(".airsang-website-case-scroll"); interval = Math.max(800, Math.min(interval, 20000)); function step() { if (paused) { return; } activeIndex = (activeIndex + direction + cards.length) % cards.length; setStackState(cards, activeIndex); } if (root && root.classList.contains("is-pause-on-hover")) { viewport.addEventListener("mouseenter", function () { paused = true; }); viewport.addEventListener("mouseleave", function () { paused = false; }); } viewport._airsangWcssTimer = window.setInterval(step, interval); } function init(root) { var scope = root || document; var viewports = scope.querySelectorAll(".airsang-website-case-scroll__case-viewport"); viewports.forEach(function (viewport) { if (viewport._airsangWcssTimer) { window.clearInterval(viewport._airsangWcssTimer); viewport.dataset.airsangWcssReady = ""; } initViewport(viewport); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { init(document); }); } else { init(document); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction("frontend/element_ready/airsang_website_case_scroll_showcase.default", function ($scope) { var node = $scope && $scope[0] ? $scope[0] : document; init(node); }); } })(); //# sourceURL=airsang-elementor-website-case-scroll-showcase-widget-js-after </script> <script id="airsang-elementor-platform-logo-marquee-js-after"> (function () { function init(root) { if (root.dataset.asMarqueeReady) return; root.dataset.asMarqueeReady = '1'; var viewport = root.querySelector('.as-platform-marquee__viewport'); var track = root.querySelector('.as-platform-marquee__track'); var group = root.querySelector('.as-platform-marquee__group'); if (!viewport || !track || !group) return; function rebuild() { track.querySelectorAll('[data-as-marquee-clone]').forEach(function (clone) { clone.remove(); }); var width = group.getBoundingClientRect().width; if (!width) return; var copies = Math.max(2, Math.ceil(viewport.clientWidth / width) + 2); for (var i = 1; i < copies; i++) { var clone = group.cloneNode(true); clone.setAttribute('data-as-marquee-clone', ''); clone.setAttribute('aria-hidden', 'true'); clone.querySelectorAll('a').forEach(function (link) { link.tabIndex = -1; }); clone.querySelectorAll('img').forEach(function (image) { image.alt = ''; image.loading = 'lazy'; }); track.appendChild(clone); } root.style.setProperty('--as-group-width', width + 'px'); root.classList.add('is-ready'); } rebuild(); if (window.ResizeObserver) { var observer = new ResizeObserver(rebuild); observer.observe(group); observer.observe(viewport); } else { window.addEventListener('resize', rebuild); } } function scan(scope) { if (scope.matches && scope.matches('[data-as-platform-marquee]')) init(scope); scope.querySelectorAll('[data-as-platform-marquee]').forEach(init); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function () { scan(document); }); } else { scan(document); } if (window.jQuery) { window.jQuery(window).on('elementor/frontend/init', function () { elementorFrontend.hooks.addAction('frontend/element_ready/airsang_platform_logo_marquee.default', function ($scope) { scan($scope[0]); }); }); } })(); //# sourceURL=airsang-elementor-platform-logo-marquee-js-after </script> <script id="airsang-why-video-mask-widget-js-after"> (function () { function init(root) { if (root.dataset.asWhyMaskReady) return; root.dataset.asWhyMaskReady = '1'; var video = root.querySelector('.as-why-mask__video'); var media = root.querySelector('.as-why-mask__media'); if (!video) return; var reduced = window.matchMedia('(prefers-reduced-motion: reduce)'); video.muted = true; function pause() { video.pause(); root.classList.remove('is-playing'); } function play() { if (reduced.matches || document.hidden) return; if (!video.src) { video.src = video.dataset.src; video.load(); } var result = video.play(); if (result && result.catch) result.catch(pause); } video.addEventListener('playing', function () { root.classList.add('is-playing'); }); video.addEventListener('pause', function () { root.classList.remove('is-playing'); }); if ('IntersectionObserver' in window) { var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { root.dataset.asWhyMaskVisible = entry.isIntersecting ? '1' : '0'; if (entry.isIntersecting) play(); else pause(); }); }, { threshold: 0.2 }); observer.observe(media || root); } else { play(); } document.addEventListener('visibilitychange', function () { if (document.hidden) pause(); else if (root.dataset.asWhyMaskVisible === '1') play(); }); if (reduced.addEventListener) reduced.addEventListener('change', function () { if (reduced.matches) pause(); else if (root.dataset.asWhyMaskVisible === '1') play(); }); } function scan(scope) { if (scope.matches && scope.matches('[data-as-why-mask]')) init(scope); scope.querySelectorAll('[data-as-why-mask]').forEach(init); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function () { scan(document); }); } else { scan(document); } function bindElementor() { elementorFrontend.hooks.addAction('frontend/element_ready/airsang_why_video_mask.default', function ($scope) { scan($scope[0]); }); } if (window.elementorFrontend && elementorFrontend.hooks) bindElementor(); else if (window.jQuery) window.jQuery(window).on('elementor/frontend/init', bindElementor); })(); //# sourceURL=airsang-why-video-mask-widget-js-after </script> <script id="elementor-webpack-runtime-js" src="https://www.airsang.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=4.2.3"></script> <script id="elementor-frontend-modules-js" src="https://www.airsang.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=4.2.3"></script> <script id="jquery-ui-core-js-before"> jQuery.uiBackCompat = true; //# sourceURL=jquery-ui-core-js-before </script> <script id="jquery-ui-core-js" src="https://www.airsang.com/wp-includes/js/jquery/ui/core.min.js?ver=1.14.2"></script> <script id="elementor-frontend-js-before"> var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"\u0634\u0627\u0631\u0643 \u0639\u0644\u0649 \u0641\u064a\u0633\u0628\u0648\u0643","shareOnX":"Share on X","pinIt":"\u0627\u062d\u0641\u0638\u0647\u0627","download":"\u062a\u062d\u0645\u064a\u0644","downloadImage":"\u062a\u0646\u0632\u064a\u0644 \u0627\u0644\u0635\u0648\u0631\u0629","fullscreen":"\u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629","zoom":"\u062a\u0643\u0628\u064a\u0631","share":"\u064a\u0634\u0627\u0631\u0643","playVideo":"\u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0641\u064a\u062f\u064a\u0648","previous":"\u0633\u0627\u0628\u0642","next":"\u0627\u0644\u062a\u0627\u0644\u064a","close":"\u064a\u063a\u0644\u0642","a11yCarouselPrevSlideMessage":"\u0627\u0644\u0634\u0631\u064a\u062d\u0629 \u0627\u0644\u0633\u0627\u0628\u0642\u0629","a11yCarouselNextSlideMessage":"\u0627\u0644\u0634\u0631\u064a\u062d\u0629 \u0627\u0644\u062a\u0627\u0644\u064a\u0629","a11yCarouselFirstSlideMessage":"\u0647\u0630\u0647 \u0647\u064a \u0627\u0644\u0634\u0631\u064a\u062d\u0629 \u0627\u0644\u0623\u0648\u0644\u0649","a11yCarouselLastSlideMessage":"\u0647\u0630\u0647 \u0647\u064a \u0627\u0644\u0634\u0631\u064a\u062d\u0629 \u0627\u0644\u0623\u062e\u064a\u0631\u0629","a11yCarouselPaginationBulletMessage":"\u0627\u0646\u062a\u0642\u0644 \u0625\u0644\u0649 \u0627\u0644\u0634\u0631\u064a\u062d\u0629"},"is_rtl":true,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"\u062d\u0627\u0633\u0648\u0628 \u0645\u062d\u0645\u0648\u0644","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"\u0627\u0644\u0634\u0627\u0634\u0629 \u0627\u0644\u0639\u0631\u064a\u0636\u0629","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},"hasCustomBreakpoints":false},"version":"4.2.3","is_static":false,"experimentalFeatures":{"e_font_icon_svg":true,"additional_custom_breakpoints":true,"container":true,"e_optimized_markup":true,"e_panel_promotions":true,"theme_builder_v2":true,"hello-theme-header-footer":true,"e_pro_free_trial_popup":true,"nested-elements":true,"global_classes_should_enforce_capabilities":true,"e_variables":true,"e_opt_in_v4_page":true,"e_components":true,"e_interactions":true,"e_widget_creation":true,"import-export-customization":true,"e_pro_atomic_form":true,"e_pro_collection_loop":true,"mega-menu":true,"e_pro_variables":true,"e_pro_interactions":true},"urls":{"assets":"https:\/\/www.airsang.com\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/www.airsang.com\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/www.airsang.com\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"6f96742e21","atomicFormsSendForm":"96751177e0"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description","woocommerce_notices_elements":[]},"post":{"id":11282,"title":"How%20to%20Add%20Keywords%20in%20WordPress","excerpt":"","featuredImage":"https:\/\/www.airsang.com\/wp-content\/uploads\/2026\/07\/image-25-1024x576.png"}}; //# sourceURL=elementor-frontend-js-before </script> <script id="elementor-frontend-js" src="https://www.airsang.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=4.2.3"></script> <script id="e-sticky-js" src="https://www.airsang.com/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=4.2.2"></script> <script id="sourcebuster-js-js" src="https://www.airsang.com/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=10.4.4"></script> <script id="wc-order-attribution-js-extra"> var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"base64":false,"ajaxurl":"https://www.airsang.com/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 id="wc-order-attribution-js" src="https://www.airsang.com/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=10.4.4"></script> <script id="google-recaptcha-js" src="https://www.google.com/recaptcha/api.js?render=6LddcCosAAAAAO2XsAPM-YS98Y8FSxZDeKfsJjyc&ver=3.0"></script> <script id="wp-polyfill-js" src="https://www.airsang.com/wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=3.15.0"></script> <script id="wpcf7-recaptcha-js-before"> var wpcf7_recaptcha = { "sitekey": "6LddcCosAAAAAO2XsAPM-YS98Y8FSxZDeKfsJjyc", "actions": { "homepage": "homepage", "contactform": "contactform" } }; //# sourceURL=wpcf7-recaptcha-js-before </script> <script id="wpcf7-recaptcha-js" src="https://www.airsang.com/wp-content/plugins/contact-form-7/modules/recaptcha/index.js?ver=6.1.4"></script> <script id="elementor-pro-webpack-runtime-js" src="https://www.airsang.com/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=4.2.2"></script> <script id="elementor-pro-frontend-js-before"> var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/www.airsang.com\/wp-admin\/admin-ajax.php","nonce":"e4c83ce6e8","urls":{"assets":"https:\/\/www.airsang.com\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/www.airsang.com\/ar\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":true},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},"woocommerce":{"menu_cart":{"cart_page_url":"https:\/\/www.airsang.com\/ar\/%d8%a7%d9%84%d8%b9%d8%b1%d8%a8%d8%a9-2\/","checkout_page_url":"https:\/\/www.airsang.com\/ar\/checkout-2\/","fragments_nonce":"b224913668"}},"facebook_sdk":{"lang":"ar","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/www.airsang.com\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}}; //# sourceURL=elementor-pro-frontend-js-before </script> <script id="elementor-pro-frontend-js" src="https://www.airsang.com/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=4.2.2"></script> <script id="pro-elements-handlers-js" src="https://www.airsang.com/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=4.2.2"></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://www.airsang.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1.4"}} </script> <script type="module"> /*! This file is auto-generated */ var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,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 r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[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,r){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!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));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(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); //# sourceURL=https://www.airsang.com/wp-includes/js/wp-emoji-loader.min.js </script> <script> (function() { function initCaseCenter(root) { if (!root || root.dataset.airsangCaseCenterReady === 'yes') { return; } root.dataset.airsangCaseCenterReady = 'yes'; var results = root.querySelector('.airsang-case-center__results'); var clearButton = root.querySelector('[data-clear-filter]'); var selected = {}; if (!results) { return; } var loadMoreButton = root.querySelector('[data-load-more]'); var currentPage = parseInt(results.getAttribute('data-current-page') || '1', 10) || 1; function resetDropdownPosition(dropdown) { var menu = dropdown ? dropdown.querySelector('.airsang-case-center__dropdown-menu') : null; if (!menu) { return; } menu.style.top = ''; menu.style.left = ''; menu.style.right = ''; menu.style.bottom = ''; menu.style.maxHeight = ''; } function positionDropdownMenu(dropdown) { var menu = dropdown ? dropdown.querySelector('.airsang-case-center__dropdown-menu') : null; var toggle = dropdown ? dropdown.querySelector('[data-dropdown-toggle]') : null; if (!menu || !toggle) { return; } if (!window.matchMedia('(max-width: 767px)').matches) { resetDropdownPosition(dropdown); return; } var filters = root.querySelector('.airsang-case-center__filters'); var rect = toggle.getBoundingClientRect(); var filtersRect = filters ? filters.getBoundingClientRect() : rect; var side = 16; var gap = 10; var top = Math.max(side, Math.max(rect.bottom, filtersRect.bottom) + gap); var maxHeight = Math.max(180, window.innerHeight - top - side); menu.style.top = top + 'px'; menu.style.left = side + 'px'; menu.style.right = side + 'px'; menu.style.bottom = 'auto'; menu.style.maxHeight = maxHeight + 'px'; } function closeDropdowns(except) { root.querySelectorAll('.airsang-case-center__dropdown.is-open').forEach(function(dropdown) { if (except !== dropdown) { dropdown.classList.remove('is-open'); resetDropdownPosition(dropdown); var button = dropdown.querySelector('[data-dropdown-toggle]'); if (button) { button.setAttribute('aria-expanded', 'false'); } } }); } function repositionOpenDropdowns() { root.querySelectorAll('.airsang-case-center__dropdown.is-open').forEach(positionDropdownMenu); } var repositionFrame = null; function queueRepositionOpenDropdowns() { if (repositionFrame) { return; } repositionFrame = window.requestAnimationFrame(function() { repositionFrame = null; repositionOpenDropdowns(); }); } window.addEventListener('resize', queueRepositionOpenDropdowns); window.addEventListener('scroll', queueRepositionOpenDropdowns, true); function getSelectedTerms() { return Object.keys(selected).map(function(key) { return selected[key]; }).filter(function(value) { return parseInt(value, 10) > 0; }); } function updateAllState() { var hasFilters = getSelectedTerms().length > 0; if (clearButton) { clearButton.classList.toggle('is-active', !hasFilters); } } function setLoadMoreState(hasMore) { if (!loadMoreButton) { return; } loadMoreButton.hidden = !hasMore; loadMoreButton.disabled = false; } function appendCards(html) { var grid = results.querySelector('.airsang-case-center__grid'); if (!grid) { results.insertAdjacentHTML('beforeend', html); return; } var temp = document.createElement('div'); temp.innerHTML = html; var incomingGrid = temp.querySelector('.airsang-case-center__grid'); if (!incomingGrid) { results.insertAdjacentHTML('beforeend', html); return; } Array.prototype.slice.call(incomingGrid.children).forEach(function(card) { grid.appendChild(card); }); } function applyFilters(append) { append = append === true; var settings = results.getAttribute('data-settings') || '{}'; var data = new FormData(); var nextPage = append ? currentPage + 1 : 1; data.append('action', 'airsang_case_center_filter'); data.append('nonce', results.getAttribute('data-nonce') || ''); data.append('settings', settings); data.append('terms', JSON.stringify(getSelectedTerms())); data.append('page', String(nextPage)); results.classList.add('is-loading'); if (loadMoreButton) { loadMoreButton.disabled = true; } fetch(results.getAttribute('data-ajax-url'), { method: 'POST', credentials: 'same-origin', body: data }) .then(function(response) { return response.json(); }) .then(function(payload) { if (payload && payload.success && payload.data && typeof payload.data.html === 'string') { if (append) { appendCards(payload.data.html); } else { results.innerHTML = payload.data.html; } currentPage = parseInt(payload.data.page || nextPage, 10) || nextPage; results.setAttribute('data-current-page', String(currentPage)); results.setAttribute('data-has-more', payload.data.has_more ? 'yes' : 'no'); setLoadMoreState(!!payload.data.has_more); } }) .catch(function() {}) .finally(function() { results.classList.remove('is-loading'); if (loadMoreButton) { loadMoreButton.disabled = false; } }); } root.addEventListener('click', function(event) { var toggle = event.target.closest('[data-dropdown-toggle]'); var item = event.target.closest('[data-filter-term]'); var clear = event.target.closest('[data-clear-filter]'); var more = event.target.closest('[data-load-more]'); if (toggle && root.contains(toggle)) { event.preventDefault(); var dropdown = toggle.closest('.airsang-case-center__dropdown'); if (!dropdown) { return; } var isOpen = dropdown.classList.contains('is-open'); closeDropdowns(dropdown); if (isOpen) { dropdown.classList.remove('is-open'); resetDropdownPosition(dropdown); toggle.setAttribute('aria-expanded', 'false'); } else { dropdown.classList.add('is-open'); positionDropdownMenu(dropdown); toggle.setAttribute('aria-expanded', 'true'); } return; } if (more && root.contains(more)) { event.preventDefault(); applyFilters(true); return; } if (item && root.contains(item)) { var group = item.closest('[data-filter-group]'); var groupKey = group ? group.getAttribute('data-filter-group') : ''; var term = parseInt(item.getAttribute('data-filter-term') || '0', 10); var label = group ? group.querySelector('[data-filter-label]') : null; group.querySelectorAll('[data-filter-term]').forEach(function(other) { other.classList.remove('is-active'); }); item.classList.add('is-active'); if (term > 0) { selected[groupKey] = term; if (label) { label.textContent = item.getAttribute('data-filter-term-name') || item.textContent; } } else { delete selected[groupKey]; if (label) { label.textContent = item.getAttribute('data-filter-term-name') || item.textContent; } } var activeToggle = group.querySelector('[data-dropdown-toggle]'); if (activeToggle) { activeToggle.classList.toggle('is-active', term > 0); activeToggle.setAttribute('aria-expanded', 'false'); } closeDropdowns(); updateAllState(); applyFilters(false); return; } if (clear && root.contains(clear)) { selected = {}; root.querySelectorAll('.airsang-case-center__dropdown').forEach(function(dropdown) { var first = dropdown.querySelector('[data-filter-term="0"]'); var label = dropdown.querySelector('[data-filter-label]'); dropdown.querySelectorAll('[data-filter-term]').forEach(function(other) { other.classList.remove('is-active'); }); if (first) { first.classList.add('is-active'); if (label) { label.textContent = first.getAttribute('data-filter-term-name') || first.textContent; } } var button = dropdown.querySelector('[data-dropdown-toggle]'); if (button) { button.classList.remove('is-active'); } }); closeDropdowns(); updateAllState(); applyFilters(false); } }); document.addEventListener('click', function(event) { if (!root.contains(event.target)) { closeDropdowns(); } }); } function initAllCaseCenters(scope) { (scope || document).querySelectorAll('[data-airsang-case-center]').forEach(initCaseCenter); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initAllCaseCenters(document); }); } else { initAllCaseCenters(document); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_case_center_post_filter.default', function($scope) { var node = $scope && $scope[0] ? $scope[0] : document; initAllCaseCenters(node); }); } })(); </script> <script> (function () { if (window.__airsangPostShareLoaded) return; window.__airsangPostShareLoaded = true; function copyLink(url) { if (navigator.clipboard && navigator.clipboard.writeText) return navigator.clipboard.writeText(url); return new Promise(function (resolve, reject) { var input = document.createElement('textarea'); input.value = url; input.style.position = 'fixed'; input.style.opacity = '0'; document.body.appendChild(input); input.select(); try { if (document.execCommand('copy')) resolve(); else reject(new Error('copy failed')); } catch (error) { reject(error); } input.remove(); }); } function shareUrl(platform, url, title) { var page = encodeURIComponent(url); var text = encodeURIComponent(title); switch (platform) { case 'weibo': return 'https://service.weibo.com/share/share.php?url=' + page + '&title=' + text; case 'facebook': return 'https://www.facebook.com/sharer/sharer.php?u=' + page; case 'x': return 'https://twitter.com/intent/tweet?url=' + page + '&text=' + text; case 'linkedin': return 'https://www.linkedin.com/sharing/share-offsite/?url=' + page; case 'whatsapp': return 'https://api.whatsapp.com/send?text=' + encodeURIComponent(title + ' ' + url); case 'pinterest': return 'https://pinterest.com/pin/create/button/?url=' + page + '&description=' + text; case 'email': return 'mailto:?subject=' + text + '&body=' + page; default: return ''; } } function init(scope) { var root = scope && scope[0] ? scope[0] : scope; if (!root || !root.querySelectorAll) return; var widgets = root.matches && root.matches('[data-airsang-post-share]') ? [root] : root.querySelectorAll('[data-airsang-post-share]'); Array.prototype.forEach.call(widgets, function (widget) { if (widget.dataset.shareReady === 'yes') return; widget.dataset.shareReady = 'yes'; widget.addEventListener('click', function (event) { var button = event.target.closest('[data-platform]'); if (!button || !widget.contains(button)) return; var platform = button.dataset.platform; var url = widget.dataset.shareUrl || window.location.href.split('#')[0]; var title = widget.dataset.shareTitle || document.title; var status = widget.querySelector('.airsang-post-share__status'); var appNames = { tiktok: 'TikTok', douyin: 'Douyin', xiaohongshu: 'RedNote' }; var requestedApp = appNames[platform]; function report(message) { window.clearTimeout(widget.shareStatusTimer); status.textContent = message; if (message) widget.shareStatusTimer = window.setTimeout(function () { status.textContent = ''; }, 4000); } function copyFor(destination) { copyLink(url).then(function () { report(destination ? '链接已复制,可粘贴到' + destination : '链接已复制'); }).catch(function () { report('复制失败,请手动复制地址栏链接'); }); } if ((platform === 'native' || requestedApp) && navigator.share) { if (requestedApp) report('请在分享面板中选择' + requestedApp); navigator.share({ title: title, url: url }).then(function () { if (requestedApp) report('分享面板已关闭'); }).catch(function (error) { if (error.name === 'AbortError') { report(''); return; } copyLink(url).then(function () { report('无法打开系统分享,链接已复制'); }).catch(function () { report('分享失败,请手动复制地址栏链接'); }); }); return; } if (platform === 'native' || platform === 'copy' || platform === 'wechat' || requestedApp || platform === 'youtube') { var destination = requestedApp || (platform === 'wechat' ? 'WeChat' : platform === 'youtube' ? 'YouTube' : ''); copyFor(destination); return; } var target = shareUrl(platform, url, title); if (!target) return; if (platform === 'email') { window.location.href = target; return; } var popup = window.open(target, '_blank', 'width=720,height=560'); if (popup) popup.opener = null; else report('浏览器拦截了分享窗口'); }); }); } function initPage() { init(document); } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initPage); else initPage(); function registerElementor() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_post_share.default', init); } } registerElementor(); window.addEventListener('elementor/frontend/init', registerElementor); })(); </script> <script> (function() { if (window.__airsangThreeRowVideoMarqueeReady) { return; } window.__airsangThreeRowVideoMarqueeReady = true; var mobileQuery = window.matchMedia('(max-width: 1024px)'); var activeCard = null; var activeVideo = null; var viewportObserver = null; function configureVideo(video) { video.muted = true; video.defaultMuted = true; video.playsInline = true; video.loop = true; video.controls = false; video.preload = 'auto'; video.disablePictureInPicture = true; video.setAttribute('muted', ''); video.setAttribute('playsinline', ''); video.setAttribute('webkit-playsinline', ''); video.setAttribute('x5-playsinline', ''); video.setAttribute('x5-video-player-fullscreen', 'false'); video.setAttribute('loop', ''); video.setAttribute('disablepictureinpicture', ''); video.setAttribute('disableremoteplayback', ''); video.setAttribute('controlslist', 'nodownload noplaybackrate noremoteplayback nofullscreen'); video.removeAttribute('controls'); } function createVideo(card) { var url = card ? card.getAttribute('data-video-url') : ''; if (!card || !url) { return null; } var existing = card.querySelector('.airsang-three-video-marquee__dynamic-video'); if (existing) { return existing; } var video = document.createElement('video'); var content = card.querySelector('.airsang-three-video-marquee__content'); video.className = 'airsang-three-video-marquee__media airsang-three-video-marquee__dynamic-video'; configureVideo(video); video.src = url; video.addEventListener('playing', function() { card.classList.remove('is-video-loading'); card.classList.add('is-video-playing'); }, { once: true }); video.addEventListener('error', function() { if (activeCard === card) { stopActiveCard(); } }, { once: true }); card.insertBefore(video, content || null); return video; } function releaseVideo(video) { if (!video) { return; } video.pause(); video.removeAttribute('src'); video.load(); video.remove(); } function stopCard(card) { if (!card) { return; } var video = card.querySelector('.airsang-three-video-marquee__dynamic-video'); var row = card.closest('.airsang-three-video-marquee__row'); releaseVideo(video); card.classList.remove('is-video-loading', 'is-video-playing'); if (row) { row.classList.remove('is-interacting'); } if (activeCard === card) { activeCard = null; activeVideo = null; } } function stopActiveCard() { if (activeCard) { stopCard(activeCard); } } function playCard(card) { if (!card || !card.getAttribute('data-video-url')) { return; } if (activeCard && activeCard !== card) { stopActiveCard(); } var video = createVideo(card); var row = card.closest('.airsang-three-video-marquee__row'); if (!video) { return; } activeCard = card; activeVideo = video; card.classList.add('is-video-loading'); if (row) { row.classList.add('is-interacting'); } var promise = video.play(); if (promise && typeof promise.catch === 'function') { promise.catch(function() { if (activeCard === card) { stopActiveCard(); } }); } } function setWidgetVisibility(widget, isVisible) { widget.dataset.airsangInViewport = isVisible ? 'yes' : 'no'; widget.classList.toggle('is-in-view', isVisible && !document.hidden); if (!isVisible && activeCard && widget.contains(activeCard)) { stopActiveCard(); } } function setupWidgets(scope) { var root = scope && scope.nodeType ? scope : document; var widgets = []; if (root.matches && root.matches('.airsang-three-video-marquee')) { widgets.push(root); } if (root.querySelectorAll) { root.querySelectorAll('.airsang-three-video-marquee').forEach(function(widget) { widgets.push(widget); }); } widgets.forEach(function(widget) { if (widget.dataset.airsangViewportReady === 'yes') { return; } widget.dataset.airsangViewportReady = 'yes'; if (viewportObserver) { viewportObserver.observe(widget); } else { setWidgetVisibility(widget, true); } }); } function initWidgets(scope) { if (!viewportObserver && 'IntersectionObserver' in window) { viewportObserver = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { setWidgetVisibility(entry.target, entry.isIntersecting); }); }, { rootMargin: '120px 0px', threshold: 0.01 }); } setupWidgets(scope || document); } document.addEventListener('mouseover', function(event) { var card = event.target.closest('.airsang-three-video-marquee__card'); if (!card || card.contains(event.relatedTarget)) { return; } if (!mobileQuery.matches) { playCard(card); } }, true); document.addEventListener('mouseout', function(event) { var card = event.target.closest('.airsang-three-video-marquee__card'); if (!card || card.contains(event.relatedTarget)) { return; } if (!mobileQuery.matches) { stopCard(card); } }, true); document.addEventListener('click', function(event) { if (!mobileQuery.matches) { return; } var card = event.target.closest('.airsang-three-video-marquee__card'); if (!card || !card.getAttribute('data-video-url')) { return; } if (card === activeCard) { if ('A' === card.tagName && card.getAttribute('href')) { return; } event.preventDefault(); stopCard(card); return; } event.preventDefault(); playCard(card); }, true); if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initWidgets(document); }); } else { initWidgets(document); } if (typeof mobileQuery.addEventListener === 'function') { mobileQuery.addEventListener('change', stopActiveCard); } else if (typeof mobileQuery.addListener === 'function') { mobileQuery.addListener(stopActiveCard); } document.addEventListener('visibilitychange', function() { if (document.hidden) { stopActiveCard(); } document.querySelectorAll('.airsang-three-video-marquee').forEach(function(widget) { widget.classList.toggle( 'is-in-view', !document.hidden && widget.dataset.airsangInViewport === 'yes' ); }); }); window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && elementorFrontend.hooks) { elementorFrontend.hooks.addAction('frontend/element_ready/airsang_three_row_video_marquee.default', function(scope) { initWidgets(scope && scope[0] ? scope[0] : scope); }); } }); })(); </script> <script> (function() { if (window.__airsangPricingComparisonReady) { return; } window.__airsangPricingComparisonReady = true; document.addEventListener('click', function(event) { var desktopToggle = event.target.closest('.airsang-pricing-table__group-toggle'); if (desktopToggle) { event.preventDefault(); var groupRow = desktopToggle.closest('.airsang-pricing-table__group-row'); var table = desktopToggle.closest('.airsang-pricing-table__desktop'); var group = groupRow ? groupRow.getAttribute('data-group') : ''; var collapsed = !groupRow.classList.contains('is-collapsed'); groupRow.classList.toggle('is-collapsed', collapsed); desktopToggle.setAttribute('aria-expanded', collapsed ? 'false' : 'true'); if (table && group) { table.querySelectorAll('.airsang-pricing-table__feature-row[data-group="' + group + '"]').forEach(function(row) { row.classList.toggle('is-hidden', collapsed); }); } return; } var mobileGroup = event.target.closest('.airsang-pricing-mobile-group'); if (mobileGroup) { event.preventDefault(); var card = mobileGroup.closest('.airsang-pricing-mobile-card'); var mobileGroupIndex = mobileGroup.getAttribute('data-group'); var mobileCollapsed = !mobileGroup.classList.contains('is-collapsed'); mobileGroup.classList.toggle('is-collapsed', mobileCollapsed); mobileGroup.setAttribute('aria-expanded', mobileCollapsed ? 'false' : 'true'); if (card && mobileGroupIndex) { card.querySelectorAll('.airsang-pricing-mobile-feature[data-group="' + mobileGroupIndex + '"]').forEach(function(row) { row.classList.toggle('is-hidden', mobileCollapsed); }); } return; } var tab = event.target.closest('.airsang-pricing-mobile-tab'); if (tab) { event.preventDefault(); var widget = tab.closest('.airsang-pricing-table'); var plan = tab.getAttribute('data-plan'); if (!widget || !plan) { return; } widget.querySelectorAll('.airsang-pricing-mobile-tab').forEach(function(item) { var isActive = item === tab; item.classList.toggle('is-active', isActive); item.setAttribute('aria-selected', isActive ? 'true' : 'false'); }); widget.querySelectorAll('.airsang-pricing-mobile-card').forEach(function(cardItem) { cardItem.classList.toggle('is-active', cardItem.getAttribute('data-plan') === plan); }); } }); document.addEventListener('mouseover', function(event) { var cell = event.target.closest('.airsang-pricing-table__desktop [data-plan]'); if (!cell) { return; } var table = cell.closest('.airsang-pricing-table__desktop'); var plan = cell.getAttribute('data-plan'); if (!table || !plan) { return; } table.querySelectorAll('[data-plan]').forEach(function(item) { item.classList.toggle('is-col-hover', item.getAttribute('data-plan') === plan); }); }); document.addEventListener('mouseout', function(event) { var table = event.target.closest('.airsang-pricing-table__desktop'); if (!table || table.contains(event.relatedTarget)) { return; } table.querySelectorAll('.is-col-hover').forEach(function(item) { item.classList.remove('is-col-hover'); }); }); })(); </script> <script> (function() { function activateTab(root, index) { var tabs = Array.prototype.slice.call(root.querySelectorAll('.airsang-overseas-tabs__tab')); var panels = Array.prototype.slice.call(root.querySelectorAll('.airsang-overseas-tabs__panel')); tabs.forEach(function(tab, tabIndex) { var active = tabIndex === index; tab.classList.toggle('is-active', active); tab.setAttribute('aria-selected', active ? 'true' : 'false'); }); panels.forEach(function(panel, panelIndex) { var active = panelIndex === index; panel.classList.toggle('is-active', active); if (active) { panel.removeAttribute('hidden'); } else { panel.setAttribute('hidden', ''); } }); } function initTabs(root) { if (!root || root.dataset.airsangOverseasTabsReady === 'yes') { return; } root.dataset.airsangOverseasTabsReady = 'yes'; root.querySelectorAll('.airsang-overseas-tabs__tab').forEach(function(tab) { tab.addEventListener('click', function() { var index = parseInt(tab.getAttribute('data-index'), 10); activateTab(root, Number.isNaN(index) ? 0 : index); }); }); } function initAll() { document.querySelectorAll('[data-airsang-overseas-tabs]').forEach(initTabs); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_overseas_case_tabs_showcase.default', initAll); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_overseas_case_tabs_showcase.default', initAll); } }); })(); </script> <script> (function() { function initDesignCards(root) { if (!root || root.dataset.airsangDesignCardsReady === 'yes') { return; } root.dataset.airsangDesignCardsReady = 'yes'; if (!root.classList.contains('is-entrance-enabled')) { return; } if (!('IntersectionObserver' in window)) { root.classList.add('is-in-view'); return; } var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { root.classList.add('is-in-view'); observer.unobserve(root); } }); }, { threshold: 0.18, rootMargin: '0px 0px -8% 0px' }); observer.observe(root); } function initAll() { document.querySelectorAll('[data-airsang-design-service-cards]').forEach(initDesignCards); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_design_service_cards.default', initAll); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_design_service_cards.default', initAll); } }); })(); </script> <script> (function() { function initCommerceFeatureSplit(root) { if (!root || root.dataset.airsangCommerceFeatureReady === 'yes') { return; } root.dataset.airsangCommerceFeatureReady = 'yes'; if (!root.classList.contains('is-entrance-enabled') && !root.classList.contains('is-image-float-enabled')) { return; } if (!('IntersectionObserver' in window)) { root.classList.add('is-in-view'); return; } var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { root.classList.add('is-in-view'); observer.unobserve(root); } }); }, { threshold: 0.16, rootMargin: '0px 0px -8% 0px' }); observer.observe(root); } function initAll() { document.querySelectorAll('[data-airsang-commerce-feature-split]').forEach(initCommerceFeatureSplit); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_commerce_feature_split.default', initAll); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_commerce_feature_split.default', initAll); } }); })(); </script> <script> (function() { function initBrandProcessCards(root) { if (!root || root.dataset.airsangBrandProcessReady === 'yes') { return; } root.dataset.airsangBrandProcessReady = 'yes'; if (!root.classList.contains('is-entrance-enabled')) { return; } if (!('IntersectionObserver' in window)) { root.classList.add('is-in-view'); return; } var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { root.classList.add('is-in-view'); observer.unobserve(root); } }); }, { threshold: 0.16, rootMargin: '0px 0px -8% 0px' }); observer.observe(root); } function initAll() { document.querySelectorAll('[data-airsang-brand-process-cards]').forEach(initBrandProcessCards); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_brand_process_cards.default', initAll); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_brand_process_cards.default', initAll); } }); })(); </script> <script> (function() { function initShoplineHero(root) { if (!root || root.dataset.airsangShoplineHeroReady === 'yes') { return; } root.dataset.airsangShoplineHeroReady = 'yes'; if (!root.classList.contains('is-entrance-enabled') && !root.classList.contains('is-float-enabled')) { return; } if (!('IntersectionObserver' in window)) { root.classList.add('is-in-view'); return; } var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { root.classList.add('is-in-view'); observer.unobserve(root); } }); }, { threshold: 0.16, rootMargin: '0px 0px -8% 0px' }); observer.observe(root); } function initAll() { document.querySelectorAll('[data-airsang-shopline-hero]').forEach(initShoplineHero); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_shopline_design_hero.default', initAll); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_shopline_design_hero.default', initAll); } }); })(); </script> <script> (function() { function clamp(value, min, max) { return Math.max(min, Math.min(max, value)); } function isMobile() { return window.matchMedia('(max-width: 767px)').matches; } function isStackedLayout(root) { return window.matchMedia('(max-width: 1180px)').matches && !(isMobile() && root.classList.contains('is-mobile-horizontal')); } function isNativeTrack(root) { return (!isStackedLayout(root) && root.classList.contains('is-native-horizontal')) || (isMobile() && root.classList.contains('is-mobile-horizontal')); } function initComparison(compare) { if (!compare || compare.dataset.airsangCompareReady === 'yes') { return; } compare.dataset.airsangCompareReady = 'yes'; var range = compare.querySelector('.airsang-horizontal-scroll__compare-range'); var dragging = false; function setValue(value) { var cleanValue = clamp(parseFloat(value) || 50, 0, 100); compare.style.setProperty('--airsang-compare-pos', cleanValue + '%'); if (range) { range.value = String(cleanValue); } } function setFromEvent(event) { var rect = compare.getBoundingClientRect(); var pointX = event.clientX; if (event.touches && event.touches.length) { pointX = event.touches[0].clientX; } setValue(((pointX - rect.left) / Math.max(1, rect.width)) * 100); } if (range) { range.addEventListener('input', function() { setValue(range.value); }); } compare.addEventListener('pointerdown', function(event) { dragging = true; setFromEvent(event); if (compare.setPointerCapture && event.pointerId) { compare.setPointerCapture(event.pointerId); } }); compare.addEventListener('pointermove', function(event) { if (!dragging) { return; } setFromEvent(event); }); compare.addEventListener('pointerup', function() { dragging = false; }); compare.addEventListener('pointercancel', function() { dragging = false; }); setValue(range ? range.value : 50); } function initHoverVideo(card) { if (!card || card.dataset.airsangVideoReady === 'yes') { return; } var video = card.querySelector('video[data-src]'); var panel = card.closest('[data-panel]'); if (!video || !panel) { return; } card.dataset.airsangVideoReady = 'yes'; video.muted = true; video.loop = true; video.playsInline = true; video.controls = false; function stop() { video.pause(); card.classList.remove('is-playing'); card.setAttribute('aria-label', 'play video'); } function start() { document.querySelectorAll('[data-airsang-hover-video]').forEach(function(other) { if (other !== card && other.__airsangStopVideo) { other.__airsangStopVideo(); } }); if (!video.getAttribute('src')) { video.src = video.dataset.src; } var playback = video.play(); if (playback && typeof playback.catch === 'function') { playback.catch(stop); } } card.__airsangStopVideo = stop; video.addEventListener('playing', function() { card.classList.add('is-playing'); card.setAttribute('aria-label', 'Pause video'); }); panel.addEventListener('pointerenter', function(event) { if (event.pointerType === 'mouse') { start(); } }); panel.addEventListener('pointerleave', function(event) { if (event.pointerType === 'mouse') { stop(); } }); card.addEventListener('click', function(event) { if (event.pointerType === 'mouse' && window.matchMedia('(hover: hover)').matches) { return; } if (video.paused) { start(); } else { stop(); } }); card.addEventListener('keydown', function(event) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); if (video.paused) { start(); } else { stop(); } } }); document.addEventListener('visibilitychange', function() { if (document.hidden) { stop(); } }); if ('IntersectionObserver' in window) { var observer = new IntersectionObserver(function(entries) { if (!entries[0].isIntersecting) { stop(); } }, { threshold: 0.05 }); observer.observe(panel); } } function initHorizontalScroll(root) { if (!root || root.dataset.airsangHorizontalReady === 'yes') { if (root && root.__airsangHorizontalUpdate) { root.__airsangHorizontalUpdate(); } return; } root.dataset.airsangHorizontalReady = 'yes'; var pin = root.querySelector('.airsang-horizontal-scroll__pin'); var track = root.querySelector('[data-track]'); var panels = Array.prototype.slice.call(root.querySelectorAll('[data-panel]')); var currentTitle = root.querySelector('[data-current-title]'); var currentIndex = root.querySelector('[data-current-index]'); var progressFill = root.querySelector('[data-progress-fill]'); var progressButton = root.querySelector('[data-progress-button]'); var frame = null; if (!pin || !track || !panels.length) { return; } function setActive(index, progress) { var cleanIndex = clamp(index, 0, panels.length - 1); var panel = panels[cleanIndex] || panels[0]; if (currentTitle && panel) { currentTitle.textContent = panel.getAttribute('data-nav-title') || ''; } if (currentIndex) { currentIndex.textContent = String(cleanIndex + 1); } if (progressFill) { var visualProgress = panels.length > 0 ? ((progress * Math.max(0, panels.length - 1)) + 1) / panels.length : 0; root.style.setProperty('--airsang-hs-progress', String(clamp(visualProgress, panels.length > 0 ? 1 / panels.length : 0, 1))); } } function updatePassiveMode() { track.style.transform = ''; if (isNativeTrack(root)) { var maxScroll = Math.max(1, track.scrollWidth - track.clientWidth); var horizontalProgress = clamp(track.scrollLeft / maxScroll, 0, 1); var horizontalIndex = clamp(Math.round(horizontalProgress * (panels.length - 1)), 0, panels.length - 1); setActive(horizontalIndex, horizontalProgress); return; } var stickyTopValue = parseFloat(getComputedStyle(root).getPropertyValue('--airsang-hs-sticky-top')) || 0; var guide = stickyTopValue + ((window.innerHeight - stickyTopValue) * 0.45); var activeIndex = 0; var bestDistance = Infinity; panels.forEach(function(panel, index) { var panelRect = panel.getBoundingClientRect(); if (panelRect.bottom < stickyTopValue || panelRect.top > window.innerHeight) { return; } var panelCenter = panelRect.top + (panelRect.height * 0.38); var distance = Math.abs(panelCenter - guide); if (distance < bestDistance) { bestDistance = distance; activeIndex = index; } }); setActive(activeIndex, panels.length > 1 ? activeIndex / (panels.length - 1) : 0); } function update() { frame = null; if (isStackedLayout(root) || isNativeTrack(root)) { updatePassiveMode(); return; } var rect = root.getBoundingClientRect(); var scrollTop = window.pageYOffset || document.documentElement.scrollTop; var rootTop = rect.top + scrollTop; var stickyTopValue = parseFloat(getComputedStyle(root).getPropertyValue('--airsang-hs-sticky-top')) || 0; var start = rootTop - stickyTopValue; var end = rootTop + root.offsetHeight - window.innerHeight; var distance = Math.max(1, end - start); var progress = clamp((scrollTop - start) / distance, 0, 1); var maxTranslate = Math.max(0, track.scrollWidth - pin.clientWidth); var translate = -maxTranslate * progress; var activeIndex = clamp(Math.round(progress * (panels.length - 1)), 0, panels.length - 1); track.style.transform = 'translate3d(' + translate + 'px, 0, 0)'; setActive(activeIndex, progress); } function requestUpdate() { if (frame) { return; } frame = window.requestAnimationFrame(update); } if (progressButton && root.classList.contains('is-progress-clickable')) { progressButton.addEventListener('click', function() { if (isNativeTrack(root)) { return; } if (isStackedLayout(root)) { var stackedCurrent = currentIndex ? (parseInt(currentIndex.textContent, 10) || 1) - 1 : 0; var stackedNext = clamp(stackedCurrent + 1, 0, panels.length - 1); panels[stackedNext].scrollIntoView({ block: 'start', behavior: 'smooth' }); return; } var scrollTop = window.pageYOffset || document.documentElement.scrollTop; var rect = root.getBoundingClientRect(); var rootTop = rect.top + scrollTop; var stickyTopValue = parseFloat(getComputedStyle(root).getPropertyValue('--airsang-hs-sticky-top')) || 0; var start = rootTop - stickyTopValue; var end = rootTop + root.offsetHeight - window.innerHeight; var currentProgress = clamp((scrollTop - start) / Math.max(1, end - start), 0, 1); var nextIndex = clamp(Math.floor(currentProgress * panels.length) + 1, 0, panels.length - 1); var target = start + ((end - start) * (nextIndex / Math.max(1, panels.length - 1))); window.scrollTo({ top: target, behavior: 'smooth' }); }); } window.addEventListener('scroll', requestUpdate, { passive: true }); window.addEventListener('resize', requestUpdate); track.addEventListener('scroll', requestUpdate, { passive: true }); root.__airsangHorizontalUpdate = update; update(); } function initAll() { document.querySelectorAll('[data-airsang-horizontal-scroll]').forEach(initHorizontalScroll); document.querySelectorAll('[data-airsang-compare]').forEach(initComparison); document.querySelectorAll('[data-airsang-hover-video]').forEach(initHoverVideo); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_scroll_horizontal_capabilities.default', initAll); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/airsang_scroll_horizontal_capabilities.default', initAll); } }); })(); </script> <script> (function() { if (window.__airsangGlobalVisualReady) { return; } window.__airsangGlobalVisualReady = true; function initWidget(root) { var widgets = []; if (root && root.matches && root.matches('[data-airsang-global-visual]')) { widgets.push(root); } if (root && root.querySelectorAll) { root.querySelectorAll('[data-airsang-global-visual]').forEach(function(widget) { widgets.push(widget); }); } widgets.forEach(function(widget) { if (widget.dataset.airsangGlobalVisualReady === 'yes') { return; } widget.dataset.airsangGlobalVisualReady = 'yes'; if (!('IntersectionObserver' in window)) { widget.classList.add('is-in-view'); return; } var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { entry.target.classList.add('is-in-view'); observer.unobserve(entry.target); } }); }, { threshold: 0.14 }); observer.observe(widget); }); } function initAll() { initWidget(document); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } window.addEventListener('elementor/frontend/init', function() { if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction( 'frontend/element_ready/airsang_global_ecommerce_visual_feature.default', function(scope) { initWidget(scope && scope[0] ? scope[0] : scope); } ); } }); })(); </script> </body> </html>