Plugin Directory

Changeset 3388730


Ignore:
Timestamp:
11/03/2025 09:46:55 AM (6 weeks ago)
Author:
coolplugins
Message:

Update to version 1.4.6 from GitHub

Location:
automatic-translations-for-polylang
Files:
258 added
12 deleted
48 edited
1 copied

Legend:

Unmodified
Added
Removed
  • automatic-translations-for-polylang/tags/1.4.6/admin/atfp-dashboard/css/admin-styles.css

    r3325375 r3388730  
    778778}
    779779
     780
     781.atfp-dashboard-ai-request-container>div[class^="atfp-dashboard-ai-"] {
     782    display: flex;
     783    gap: 1rem;
     784    margin-top: 1.5rem;
     785}
     786
     787.atfp-dashboard-ai-request-container label{
     788    margin: 0;
     789    white-space: nowrap;
     790    min-width: 150px;
     791}
     792
     793.atfp-dashboard-ai-request-container h2{
     794    margin: 0px 0 10px;
     795}
     796
     797.atfp-dashboard-ai-request-container p{
     798    padding: 0;
     799    margin: 3px 0 0;
     800}
     801
    780802.atfp-bulk-translation-post-status-options{
    781803    display: flex;
  • automatic-translations-for-polylang/tags/1.4.6/admin/atfp-dashboard/views/ai-translations.php

    r3347861 r3388730  
    4040                'icon' => 'chrome-ai-translate.png',
    4141                'url' => 'https://docs.coolplugins.net/doc/chrome-ai-translation-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=ai_translations_chrome'
     42            ],
     43            [
     44                'logo' => 'deepl-logo.png',
     45                'alt' => 'DeepL',
     46                'title' => esc_html__('DeepL', $text_domain),
     47                'description' => esc_html__('Harness DeepL\'s advanced AI for high-quality translations.', $text_domain),
     48                'icon' => 'deepl.png',
     49                'url' => 'https://docs.coolplugins.net/doc/translate-via-deepl-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=ai_translations_deepl'
    4250            ]
    4351        ];
  • automatic-translations-for-polylang/tags/1.4.6/admin/atfp-dashboard/views/free-vs-pro.php

    r3347861 r3388730  
    3030                    'Unlimited Translations' => [false, true],
    3131                    'Google Translate Widget Support' => [false, true],
    32                     'AI Translator (Gemini/OpenAI) Support' => [false, true],
     32                    'AI Translator (Gemini/OpenAI/DeepL) Support' => [false, true],
     33                    'Custom Fields Translation' => [false, true],
     34                    'Bulk Translation' => [false, true],
     35                    'Classic Editor Translation' => [false, true],
    3336                    'Premium Support' => [false, true],
    3437                ];
  • automatic-translations-for-polylang/tags/1.4.6/admin/atfp-dashboard/views/settings.php

    r3347861 r3388730  
    7474                    'doc_url' => 'https://docs.coolplugins.net/doc/generate-open-ai-api-key/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=settings_openai',
    7575                    'placeholder' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
     76                ],
     77                'deepl' => [
     78                    'name' => 'DeepL',
     79                    'doc_url' => 'https://docs.coolplugins.net/doc/generate-deepl-api-key/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=settings_deepl',
     80                    'placeholder' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    7681                ]
    7782            ];
     
    112117            <!-- Add bulk translate post status -->
    113118            <label for="bulk-translate-post-status">
    114                 <?php echo esc_html__('Bulk Translate Post Status', $text_domain); ?>
     119                <?php echo esc_html__('Bulk Translation default Post Status', $text_domain); ?>
    115120            </label>
    116121            <div class="atfp-bulk-translation-post-status-options">
     
    120125                <label for="draft"><?php echo esc_html__('Draft', $text_domain); ?></label>
    121126            </div>
     127            <!-- Add slug translation -->
     128            <label for="slug-translation-settings">
     129                <?php echo esc_html__('Slug Translation Settings', $text_domain); ?>
     130            </label>
     131            <div class="atfp-bulk-translation-post-status-options">
     132                <input type="radio" name="title_translate" id="title_translate" value="title_translate" disabled>
     133                <label for="title_translate"><?php echo esc_html__('Use Translated Title', $text_domain); ?></label>
     134                <input type="radio" name="slug_translate" id="slug_translate" value="slug_translate" checked disabled>
     135                <label for="slug_translate"><?php echo esc_html__('Translate Original Slug', $text_domain); ?></label>
     136                <input type="radio" name="slug_keep" id="slug_keep" value="slug_keep" checked disabled>
     137                <label for="slug_keep"><?php echo esc_html__('Keep Original Slug', $text_domain); ?></label>
    122138            </div>
     139
     140            <hr style="margin: 2rem 0px;">
     141            <div class="atfp-dashboard-ai-request-container">
     142                <h2><?php echo __('AI Request Performance', $text_domain); ?></h2>
     143                <p><?php echo __('Adjust these settings to optimize the performance of your AI requests.', $text_domain); ?></p>
     144                <div class="atfp-dashboard-ai-token-container">
     145                    <label for="atfp_ai_request_token_per_request-input" class="api-settings-label"><?php echo __('Token Limit', $text_domain); ?></label>
     146                    <div class="atfp-dashboard-ai-token-container-input">
     147                        <input type="number" min="100" max="10000" step="100" name="atfp_ai_request_token_per_request" id="atfp_ai_request_token_per_request-input" value="500" disabled>
     148                        <p><?php echo sprintf(__('%sRecommended%s 500 tokens per request If model or network is slow, decrease this value', $text_domain), '<span>', '</span>'); ?></p>
     149                    </div>
     150                </div>
     151                <div class="atfp-dashboard-ai-batch-size-container">
     152                    <label for="atfp_ai_request_batch_size-input" class="api-settings-label"><?php echo __('Batch Size', $text_domain); ?></label>
     153                    <div class="atfp-dashboard-ai-batch-container-input">
     154                        <input type="number" min="1" max="10" name="atfp_ai_request_batch_size" id="atfp_ai_request_batch_size-input" value="5" disabled>
     155                        <p><?php echo sprintf(__('%sRecommended%s 5 posts per batch Larger batch can take longer to process If model or network is slow, decrease this value', $text_domain), '<span>', '</span>'); ?></p>
     156                    </div>
     157                </div>
     158                <div class="atfp-dashboard-ai-timeout-container">
     159                    <label for="atfp-dashboard-ai-token-container-input" class="api-settings-label"><?php echo __('Timeout Duration', $text_domain); ?></label>
     160                    <div class="atfp-dashboard-ai-timeout-container-input">
     161                        <input type="number" min="10" max="1200" step="10" name="atfp_ai_request_timeout" id="atfp_ai_request_timeout-input" value="120" disabled>
     162                        <p><?php echo sprintf(__('%sRecommended%s 120 seconds minimum timeout can cause timeouts If model or network is slow, increase this value', $text_domain), '<span>', '</span>'); ?></p>
     163                    </div>
     164                </div>
     165            </div>
     166            </div>
     167            <hr style="margin: 2rem 0px 20px;">
    123168
    124169            <?php if (get_option('cpfm_opt_in_choice_cool_translations')) : ?>
  • automatic-translations-for-polylang/tags/1.4.6/admin/atfp-dashboard/views/sidebar.php

    r3347861 r3388730  
    9696            'free' => 'automatic-translator-addon-for-loco-translate/automatic-translator-addon-for-loco-translate.php',
    9797            'pro'  => 'loco-automatic-translate-addon-pro/loco-automatic-translate-addon-pro.php',
    98             'free_name' => esc_html__('Automatic Translate Addon For Loco Translate', $text_domain),
    99             'pro_name'  => esc_html__('Loco Automatic Translate Addon PRO', $text_domain),
     98            'free_name' => esc_html__('LocoAI – Auto Translate For Loco Translate', $text_domain),
     99            'pro_name'  => esc_html__('LocoAI – Auto Translate for Loco Translate (Pro)', $text_domain),
    100100        ],
    101101    ];
  • automatic-translations-for-polylang/tags/1.4.6/admin/cpt_dashboard/assets/css/cpt-dashboard.css

    r3308442 r3388730  
    55  display: flex;
    66  align-items: center;
     7}
     8
     9.cpt-review-notice .notice-dismiss{
     10  display: none;
    711}
    812
  • automatic-translations-for-polylang/tags/1.4.6/admin/cpt_dashboard/cpt_dashboard.php

    r3347861 r3388730  
    233233        }
    234234
    235         public static function review_notice($prefix, $plugin_name, $url, $icon=''){
     235        public static function review_notice($prefix, $plugin_name, $url){
    236236            if(self::atfp_hide_review_notice_status($prefix)){
    237237                return;
     
    253253
    254254            $message = sprintf(
    255                 '🎉 %s! %s <strong>%s</strong> %s 🚀<br>%s %s 🌟<br>',
    256                 __('Thank You For Using', 'cp-notice').' '.$plugin_name,
    257                 __('You\'ve translated', 'cp-notice'),
    258                 esc_html__(esc_html($total_character_count).' characters', 'cp-notice'),
    259                 esc_html__('so far using our plugin!', 'cp-notice'),
    260                 __('If our plugin has saved your time and effort, please consider leaving a', 'cp-notice'),
    261                 __('review to support our work. Your feedback means the world to us!', 'cp-notice')
    262             );
     255                __('Thanks for using <b>%1$s</b>! You have translated <b>%2$s</b> characters so far using our plugin!<br>Please give us a quick rating, it works as a boost for us to keep working on more <a style="text-decoration: none;" href="%3$s" target="_blank" rel="noopener noreferrer"><b>Cool Plugins</b></a>!', 'cp-notice'),
     256                $plugin_name,
     257                $total_character_count,
     258                esc_url('https://coolplugins.net/')
     259            );     
     260           
    263261
    264262            $prefix = sanitize_key($prefix);
    265             $message = wp_kses_post($message);
    266263            $url = esc_url($url);
    267264            $plugin_name = sanitize_text_field($plugin_name);
    268             $icon = isset($icon) && !empty($icon) ? esc_url($icon) : '';
    269 
    270             add_action('admin_notices', function() use ($message, $prefix, $url, $icon, $plugin_name){
    271                 $html= '<div class="notice notice-info cpt-review-notice">';
    272                 if($icon){
    273                     $html .= '<img class="cpt-review-notice-icon" src="'.esc_url($icon).'" alt="'.esc_attr($plugin_name).'">';
    274                 }
    275                 $html .= '<div class="cpt-review-notice-content"><p>'.wp_kses_post($message).'</p><div class="atfp-review-notice-dismiss" data-prefix="'.esc_attr($prefix).'" data-nonce="'.wp_create_nonce('atfp_hide_review_notice').'"><a href="'.esc_url($url).'" target="_blank" class="button button-primary">Rate Now! ★★★★★</a><button class="button cpt-not-interested">'.esc_html__('Not Interested', 'cp-notice').'</button><button class="button cpt-already-reviewed">'.esc_html__('Already Reviewed', 'cp-notice').'</button></div></div></div>';
     265
     266            $allowed = [
     267                'div' => [ 'class' => true, 'data-prefix' => true, 'data-nonce' => true ],
     268                'p' => [],
     269                'a' => [ 'href' => true, 'target' => true, 'class' => true, 'style' => true, 'rel' => true ],
     270                'button' => [ 'class' => true ],
     271                'b' => [],
     272                'br' => [],
     273                'strong' => [],
     274            ];
     275
     276            $message = wp_kses($message, $allowed);
     277
     278            add_action('admin_notices', function() use ($message, $prefix, $url, $allowed){
     279                $html= '<div class="notice notice-info is-dismissible cpt-review-notice">';
    276280               
    277                 echo wp_kses_post($html);   
     281                $html .= '<div class="cpt-review-notice-content"><p>'.$message.'</p><div class="atfp-review-notice-dismiss" data-prefix="'.esc_attr($prefix).'" data-nonce="'.esc_attr(wp_create_nonce('atfp_hide_review_notice')).'"><a href="'.esc_url($url).'" target="_blank" class="button button-primary">Rate Now! ★★★★★</a><button class="button cpt-already-reviewed">'.esc_html__('Already Reviewed', 'cp-notice').'</button><button class="button cpt-not-interested">'.esc_html__('Not Interested', 'cp-notice').'</button></div></div></div>';
     282               
     283                echo wp_kses($html, $allowed);
    278284            });
    279285
    280             add_action('atfp_display_admin_notices', function() use ($message, $prefix, $url, $icon, $plugin_name){
    281                 $html= '<div class="notice notice-info cpt-review-notice">';
    282                 if($icon){
    283                     $html .= '<img class="cpt-review-notice-icon" src="'.esc_url($icon).'" alt="'.esc_attr($plugin_name).'">';
    284                 }
    285                 $html .= '<div class="cpt-review-notice-content"><p>'.wp_kses_post($message).'</p><div class="atfp-review-notice-dismiss" data-prefix="'.esc_attr($prefix).'" data-nonce="'.wp_create_nonce('atfp_hide_review_notice').'"><a href="'.esc_url($url).'" target="_blank" class="button button-primary">Rate Now! ★★★★★</a><button class="button cpt-not-interested">'.esc_html__('Not Interested', 'cp-notice').'</button><button class="button cpt-already-reviewed">'.esc_html__('Already Reviewed', 'cp-notice').'</button></div></div></div>';
     286            add_action('atfp_display_admin_notices', function() use ($message, $prefix, $url, $allowed){
     287                $html= '<div class="notice notice-info is-dismissible cpt-review-notice">';
     288                $html .= '<div class="cpt-review-notice-content"><p>'.$message.'</p><div class="atfp-review-notice-dismiss" data-prefix="'.$prefix.'" data-nonce="'.wp_create_nonce('atfp_hide_review_notice').'"><a href="'. $url .'" target="_blank" class="button button-primary">Rate Now! ★★★★★</a><button class="button cpt-not-interested">'.__('Not Interested', 'cp-notice').'</button><button class="button cpt-already-reviewed">'.__('Already Reviewed', 'cp-notice').'</button></div></div></div>';
    286289               
    287                 echo wp_kses_post($html);
     290                echo wp_kses($html, $allowed);
    288291            });
    289292        }
  • automatic-translations-for-polylang/tags/1.4.6/assets/automatic-translate/index.asset.php

    r3333267 r3388730  
    1 <?php return array('dependencies' => array('react', 'react-dom', 'wp-blocks', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => '54f6001ae1cd0c7ef3d3');
     1<?php return array('dependencies' => array('react', 'react-dom', 'wp-blocks', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => 'de2ff4e43886075cb42b');
  • automatic-translations-for-polylang/tags/1.4.6/assets/automatic-translate/index.js

    r3333267 r3388730  
    1 (()=>{"use strict";var t={338:(t,e,a)=>{var n=a(795);e.createRoot=n.createRoot,e.hydrateRoot=n.hydrateRoot},795:t=>{t.exports=window.ReactDOM}},e={};function a(n){var o=e[n];if(void 0!==o)return o.exports;var r=e[n]={exports:{}};return t[n](r,r.exports,a),r.exports}a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};a.r(n),a.d(n,{allowedMetaFields:()=>rt,contentSaveSource:()=>J,contentSaveTranslate:()=>tt,excerptSaveSource:()=>K,excerptSaveTranslate:()=>X,metaFieldsSaveSource:()=>et,metaFieldsSaveTranslate:()=>at,setBlockRules:()=>nt,titleSaveSource:()=>G,titleSaveTranslate:()=>Z,translationInfo:()=>ot});var o={};a.r(o),a.d(o,{getAllowedMetaFields:()=>dt,getBlockRules:()=>lt,getTranslatedString:()=>it,getTranslationEntry:()=>st,getTranslationInfo:()=>ct});var r=a(338);const s=window.wp.element,l=window.wp.data,i=window.wp.i18n,c=t=>React.createElement("div",{className:"modal-header",key:t.modalRender},React.createElement("span",{className:"close",onClick:()=>{t.setPopupVisibility(!1)}},"×"),React.createElement("h2",{className:"notranslate"},(0,i.__)("Step 2 - Start Automatic Translation Process","autopoly-ai-translation-for-polylang")),React.createElement("div",{className:"save_btn_cont"},React.createElement("button",{className:"notranslate save_it button button-primary",disabled:t.translatePendingStatus,onClick:t.updatePostData},(0,i.__)("Update Content","autopoly-ai-translation-for-polylang")))),d=window.React,p=t=>{const e=t.skipTags||[],a=t=>{const n=document.createElement("div");n.innerHTML=t;const o=n.firstElementChild;if(!o)return t;let r=o.childNodes,s=r.length;if(s>0){r=Array.from(r).sort(((t,e)=>3===t.nodeType?-1:3===e.nodeType?1:0));for(let t=0;t<s;t++){let e=r[t];if(3===e.nodeType){let t=e.textContent.replace(/^\s+|^\.\s+|^\s.|\s+$|\.\s+$|\s.\+$/g,(t=>`#atfp_open_translate_span#${t}#atfp_close_translate_span#`));e.textContent=t}else if(8===e.nodeType){let t=`\x3c!--${e.textContent}--\x3e`;e.textContent=t}else{let t=a(e.outerHTML);e.outerHTML=t}}}let l=o.outerHTML.match(/^<[^>]+>/)[0];l=l.replace(/#atfp_open_translate_span#|#atfp_close_translate_span#/g,"");const i=o.tagName.toLowerCase(),c=new RegExp(`</${i}>`,"i"),d=o.outerHTML.match(c);if("<style>"===l)return`#atfp_open_translate_span#${o.outerHTML}#atfp_close_translate_span#`;let p=o.innerHTML;p=p.replace(/^\s+|^\.\s+|^\s.|\s+$|\.\s+$|\s.\+$/g,(t=>`#atfp_open_translate_span#${t}#atfp_close_translate_span#`)),o.innerHTML="";let u="",g="",m="";return g=`#atfp_open_translate_span#${l}#atfp_close_translate_span#`,d&&(u=`#atfp_open_translate_span#</${i}>#atfp_close_translate_span#`),e.includes(i)&&(p=p.replace(/#atfp_open_translate_span#|#atfp_close_translate_span#/g,""),p="#atfp_open_translate_span#"+p+"#atfp_close_translate_span#"),""!==p?(""!==g&&(m=g+p),""!==u&&(m+=u)):m=g+u,o.outerHTML=m,n.innerHTML},n=["yandex","localAiTranslator","google"].includes(t.service)?(e=>{/^(_yoast_wpseo_|rank_math_|_seopress_)/.test(t.contentKey.trim())&&(e=(t=>t.replace(/(%{1,2}[a-zA-Z0-9_]+%{0,2})/g,(t=>`#atfp_open_translate_span#${t}#atfp_close_translate_span#`)))(e));const n=/\[(.*?)\]/g;e.match(n)&&(e=e.replace(n,(t=>`#atfp_open_translate_span#${t}#atfp_close_translate_span#`)));const o=document.createElement("div");o.innerHTML=function(t){if("string"!=typeof t||!t.trim())return t;const e=/<\/?([a-zA-Z0-9]+)(\s[^>]*)?>/g,a=[];let n,o="",r=0;for(;null!==(n=e.exec(t));){const[s,l]=n,i=s.startsWith("</"),c=n.index;if(c>r&&(o+=t.slice(r,c)),i){const t=a.findIndex((t=>t.tag===l));-1!==t?(a.splice(t,1),o+=s):o+=`#atfp_temp_tag_open#<${l}>#atfp_temp_tag_close#`+s}else a.push({tag:l}),o+=s;r=e.lastIndex}r<t.length&&(o+=t.slice(r));for(let t=a.length-1;t>=0;t--){const{tag:e}=a[t];o+=`#atfp_temp_tag_open#</${e}>#atfp_temp_tag_close#`}return n=null,a.length=0,t=null,o}(e),function(t){let e=t.childNodes;const n=t=>{if(e.length>t){let o=e[t],r=null;if(3===o.nodeType){const t=o.textContent.replace(/^\s+|^\.\s+|^\s.|\s+$|\.\s+$|\s.\+$/g,(t=>`#atfp_open_translate_span#${t}#atfp_close_translate_span#`));r=document.createTextNode(t)}else if(8===o.nodeType)r=document.createTextNode(`\x3c!--${o.textContent}--\x3e`);else{let t=a(o.outerHTML);r=document.createTextNode(t)}o.replaceWith(r),t++,n(t)}};n(0)}(o);let r=o.innerText;return r=r.replace(/#atfp_temp_tag_open#([\s\S]*?)#atfp_temp_tag_close#/g,""),(t=>t.split(/(#atfp_open_translate_span#.*?#atfp_close_translate_span#)|'/).filter(Boolean).filter((t=>""!==t.trim())))(r)})(t.content):t.content,o=/#atfp_open_translate_span#[\s\S]*?#atfp_close_translate_span#/,r=/#atfp_open_translate_span#|#atfp_close_translate_span#/g;return React.createElement(React.Fragment,null,["yandex","localAiTranslator","google"].includes(t.service)?n.map(((t,e)=>o.test(t)?React.createElement("span",{key:e,className:"notranslate atfp-notraslate-tag",translate:"no"},(t=>t.replace(r,""))(t)):t)):n)},u=({type:t,key:e,translateContent:a,source:n,provider:o,AllowedMetaFields:r})=>{if(["title","excerpt"].includes(t)){const e=`${t}SaveTranslate`;(0,l.dispatch)("block-atfp/translate")[e](a,o)}else["metaFields"].includes(t)?Object.keys(r).includes(e)&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveTranslate(e,a,n,o):(0,l.dispatch)("block-atfp/translate").contentSaveTranslate(e,a,n,o)},g=({prefix:t=!1,start:e=!1,end:a=!1,translateStatus:n=!1})=>{const o=(a-e)/1e3,r={};if(t){if(r.provider=t,e&&a){const e=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[t]?.timeTaken||0;r.timeTaken=o+e}n&&(r.translateStatus=!0),(0,l.dispatch)("block-atfp/translate").translationInfo(r)}},m=({number:t})=>t>=1e6?(t/1e6).toFixed(1)+"M":t>=1e3?(t/1e3).toFixed(1)+"K":t,f=(t,e="none",a=!1)=>{!1===a&&(a=(0,l.select)("block-atfp/translate").getTranslationInfo().sourceCharacterCount);const n=document.querySelector(`.${t}-translator-strings-count`);n&&(n.style.display=e,n.querySelector(".totalChars").textContent=m({number:a}))},h=({container:t,provider:e,startTime:a,endTime:n,translateStatus:o,modalRenderId:r})=>{if(!document.querySelector(`#atfp-${e}-strings-modal.modal-container[data-render-id="${r}"]`))return;t.querySelector(".atfp_translate_progress").style.display="none",t.querySelector(".atfp_string_container").style.animation="none",document.body.style.top="0";const s=t.querySelector("button.save_it");s.removeAttribute("disabled"),s.classList.add("translated"),s.classList.remove("notranslate"),(({provider:t,startTime:e,endTime:a})=>{const n=document.getElementById("atfp_strings_model").querySelector(".atfp_string_container").querySelectorAll('td.translate[data-string-type]:not([data-translate-status="translated"])'),o=n.length,r=(0,l.select)("block-atfp/translate").getAllowedMetaFields();n.forEach(((n,s)=>{const i=n.innerText,c=n.dataset.key,d=n.dataset.stringType,p=n.closest("tr").querySelector('td[data-source="source_text"]').innerText;u({type:d,key:c,translateContent:i,source:p,provider:t,AllowedMetaFields:r});const m=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[t],h=m&&m.targetStringCount?m.targetStringCount:0,_=m&&m.targetWordCount?m.targetWordCount:0,y=m&&m.targetCharacterCount?m.targetCharacterCount:0;""!==i.trim()&&i.trim().length>0&&(0,l.dispatch)("block-atfp/translate").translationInfo({targetStringCount:h+p.trim().split(/(?<=[.!?]+)\s+/).length,targetWordCount:_+p.trim().split(/\s+/).filter((t=>/[^\p{L}\p{N}]/.test(t))).length,targetCharacterCount:y+p.trim().length,provider:t}),s===o-1&&(jQuery(`.${t}-translator_progress`).css("width","100%"),f(t,"block"),g({prefix:t,start:e,end:a,translateStatus:!0}))}))})({provider:e,startTime:a,endTime:n}),o(!1)},_=(t,e,a)=>{const n=(new Date).getTime();let o=!1;(t=>{if(document.querySelector(`#atfp-${t}-progress-bar`))jQuery(`.${t}-translator_progress`).css("width","0%"),jQuery(`.${t}-translator-strings-count`).hide();else{const e=jQuery(`\n            <div id="atfp-${t}-progress-bar" class="atfp-translate-progress-bar">\n                <div class="${t}-translator_progress_bar" style="background-color: #f3f3f3;border-radius: 10px;overflow: hidden;margin: 1.5rem auto; width: 50%;">\n                <div class="${t}-translator_progress" style="overflow: hidden;transition: width .2s ease-in-out; border-radius: 10px;text-align: center;width: 0%;height: 20px;box-sizing: border-box;background-color: #4caf50; color: #fff; font-weight: 600;"></div>\n                </div>\n                <div style="display:none; color: white;" class="${t}-translator-strings-count hidden">\n                    Wahooo! You have saved your valuable time via auto translating \n                    <strong class="totalChars"></strong> characters using \n                    <strong>\n                        ${t} Translator\n                    </strong>\n                </div>\n            </div>\n        `);jQuery("#atfp_strings_model .atfp_translate_progress").append(e)}})(e);const r=document.getElementById("atfp_strings_model"),s=r.querySelector(".atfp_string_container");s.scrollTop=0;const l=s.scrollHeight;if(void 0!==l&&l>100){if(document.querySelector(".atfp_translate_progress").style.display="block",setTimeout((()=>{const t=2e3*Math.ceil(l/s?.offsetHeight);(t=>{const{element:e,scrollSpeed:a,provider:n}=t;if(e.scrollHeight-e.offsetHeight<=0)return;const o=jQuery(`.${n}-translator_progress_bar`);let r=null,s=e.scrollTop;const l=()=>{const t=e.scrollHeight-e.offsetHeight+100,i=performance.now();r||(r=i);const c=s+(i-r)/a*(t+2e3-s);var d=e.scrollTop/(e.scrollHeight-e.clientHeight)*100;o.find(`.${n}-translator_progress`).css("width",d+"%");let p=(Math.round(10*d)/10).toFixed(1);p=Math.min(p,100).toString(),o.find(`.${n}-translator_progress`).text(p+"%"),c>t?f(n,"block"):(e.scrollTop=c,c<t&&setTimeout(l,16))};l()})({element:s,scrollSpeed:t,provider:e})}),2e3),s.addEventListener("scroll",(()=>{if(s.scrollTop+s.clientHeight+50>=s.scrollHeight&&!o){const s=(new Date).getTime();setTimeout((()=>{h({container:r,provider:e,startTime:n,endTime:s,translateStatus:t,modalRenderId:a})}),4e3),o=!0}})),s.clientHeight+10>=l){jQuery(`.${e}-translator_progress`).css("width","100%"),jQuery(`.${e}-translator_progress`).text("100%"),f(e,"block");const o=(new Date).getTime();setTimeout((()=>{h({container:r,provider:e,startTime:n,endTime:o,translateStatus:t,modalRenderId:a})}),4e3)}}else{jQuery(`.${e}-translator_progress`).css("width","100%"),jQuery(`.${e}-translator_progress`).text("100%"),f(e,"block");const o=(new Date).getTime();setTimeout((()=>{h({container:r,provider:e,startTime:n,endTime:o,translateStatus:t,modalRenderId:a})}),4e3)}},y=(t,e,a,n,o,r,s,l)=>{var i={keycode:{ESCAPE:27},getRequest:function(){return t.XDomainRequest?new t.XDomainRequest:t.XMLHttpRequest?new t.XMLHttpRequest:null},loadScript:function(t,a,n){var o=e.createElement("script");o.src=t,o.addEventListener("load",(function t(){this.removeEventListener("load",t,!1),n()}),!1),a.appendChild(o)},loadResource:function(e,a){var n=this.getRequest();return n?(n.onload=function(){a(this.responseText)},n.open("GET",e,!0),t.setTimeout((function(){n.send()}),0),n):null},getStyleList:function(t){var e=t.getAttribute("class");return e?e.replace(/\s+/g," ").trim().split(" "):[]},hasStyleName:function(t,e){var a=this.getStyleList(t);return!!a.length&&a.indexOf(e)>=0},addStyleName:function(t,e){var a=this.getStyleList(t);a.push(e),t.setAttribute("class",a.join(" "))},removeStyleName:function(t,e){var a=this.getStyleList(t),n=a.indexOf(e);n>=0&&(a.splice(n,1),t.setAttribute("class",a.join(" ")))},isSupportedBrowser:function(){return"localStorage"in t&&"querySelector"in e&&"addEventListener"in t&&"getComputedStyle"in t&&"CSS1Compat"===e.compatMode}},c=function(t,e){var a=this;t.addEventListener("click",(function(t){a.onClick(t)}),!1),this._element=t,this._contentElement=e||this._element};c.prototype.onClick=function(){},c.prototype.setText=function(t){return this._contentElement.textContent=t,this};var d=function(t,e){var a=this;t.reset(),t.addEventListener("click",(function(t){var e=t.target;"value"in e&&a.onSelect(e.value)}),!1),t.addEventListener("change",(function(t){alert("form change state");var e=t.target;e.checked&&a.onChange(e.value)}),!1),this._form=t,this._itemName=e};d.prototype.onSelect=function(){},d.prototype.onChange=function(){},d.prototype.isHidden=function(){return this._form.hasAttribute("hidden")},d.prototype.getItems=function(){return this._form[this._itemName]||[]},d.prototype.getValue=function(){var t,e,a=this.getItems();for(t=0,e=a.length;t<e;t++)if(a[t].checked)return a[t].value;return""},d.prototype.setValue=function(t){var e,a,n=this.getItems();if(t===this.getValue())return this;for(e=0,a=n.length;e<a;e++)if(n[e].value===t){n[e].checked=!0,this.onChange(t);break}return this},d.prototype.setHidden=function(t){return(t=!!t)!==this.isHidden()&&(this._form[(t?"set":"remove")+"Attribute"]("hidden",""),this.onHiddenChange(t)),this},d.prototype.onHiddenChange=function(){};var p=function(a){var n,o=this,c=a.select,d=a.element,p=a.storage,u=(a.autoMode,a.pageLang),g=(a.userLang,a.translator),m=a.leftButton,f=a.rightButton,h=a.closeButton;if(this._element=d,this._pageLang=u,this._translator=g,this.onStateChange=function(t,e){"active"===t&&p.setValue("active",e)},c.onSelect=function(t){this.setHidden(!0),o.translate(t),_(s,"yandex",l)},c.onChange=function(t){p.setValue("lang",t),f.setText(t),o.setState("invalid",t===u)},c.onHiddenChange=function(a){var n,r=e.documentElement;o.setState("expanded",!a),a||(o.setState("right",!1).setState("bottom",!1),d.focus(),(n=this._form.getBoundingClientRect()).right+(t.pageXOffset||r.scrollLeft)+1>=Math.max(r.clientWidth,r.scrollWidth)&&o.setState("right",!0),n.bottom+(t.pageYOffset||r.scrollTop)+1>=Math.max(r.clientHeight,r.scrollHeight)&&o.setState("bottom",!0))},d.addEventListener("blur",(function(){c.setHidden(!0)}),!1),d.addEventListener("keydown",(function(t){t.keyCode===i.keycode.ESCAPE&&c.setHidden(!0)}),!1),g.on("error",(function(){this.abort(),o.setState("busy",!1).setState("error",!0)})),g.on("progress",(function(t){switch(t){case 0:o.setState("busy",!0).setState("active",!0);break;case 100:o.setState("done",!0).setState("busy",!1)}})),m.onClick=function(){c.setHidden(!0),o.translate(c.getValue()),_(s,"yandex",l)},f.onClick=function(){o.hasState("active")?(g.undo(),o.setState("busy",!1).setState("done",!1).setState("error",!1).setState("active",!1)):c.setHidden(!c.isHidden())},h.onClick=function(){c.setHidden(!0)},null!=r)var y=r;switch(y){case"nb":case"nn":n="no";break;default:n=y}n&&(c.setValue(n),p.getValue("active"))};p.prototype.hasState=function(t){return i.hasStyleName(this._element,"yt-state_"+t)},p.prototype.setState=function(t,e){return(e=!!e)===this.hasState(t)||(i[(e?"add":"remove")+"StyleName"](this._element,"yt-state_"+t),this.onStateChange(t,e)),this},p.prototype.translate=function(t){return t&&!this.hasState("active")&&this._translator.translate(this._pageLang,t),this},p.prototype.onStateChange=function(){};var u=function(e){this._name=e;try{this._data=t.JSON.parse(t.localStorage[e])}catch(t){this._data={}}};u.prototype.getValue=function(t){return this._data[t]},u.prototype.setValue=function(e,a){this._data[e]=a;try{t.localStorage[this._name]=t.JSON.stringify(this._data)}catch(t){}};var g=e.getElementById(n.widgetId);if(g&&i.isSupportedBrowser()){var m=function(){i.loadScript("https://yastatic.net/s3/translate/v21.4.7/js/tr_page.js",g,(function(){i.loadResource("https://translate.yandex.net/website-widget/v1/widget.html",(function(t){var e;t&&(g.innerHTML=t,e=g.querySelector(".yt-widget"),n.widgetTheme&&e.setAttribute("data-theme",n.widgetTheme),new p({select:new d(e.querySelector(".yt-listbox"),"yt-lang"),element:e,storage:new u("yt-widget"),autoMode:"true"===n.autoMode,pageLang:n.pageLang,userLang:(a.language||a.userLanguage||"").split("-")[0],translator:new o.PageTranslator({srv:"tr-url-widget",url:"https://translate.yandex.net/api/v1/tr.json/translate",autoSync:!0,maxPortionLength:600}),leftButton:new c(e.querySelector(".yt-button_type_left")),rightButton:new c(e.querySelector(".yt-button_type_right"),e.querySelector(".yt-button_type_right > .yt-button__text")),closeButton:new c(e.querySelector(".yt-button_type_close"))}))}))}))};"complete"===e.readyState||"interactive"===e.readyState?m():e.addEventListener("DOMContentLoaded",m,!1)}},b=t=>{const e=window;y(e,e.document,e.navigator,{pageLang:t.sourceLang,autoMode:"false",widgetId:"atfp_yandex_translate_element",widgetTheme:"light"},e.yt=e.yt||{},t.targetLang,t.translateStatusHandler,t.modalRenderId)};class v{static Object=t=>new this(t).extraData();constructor(t){this.btnSelector=t.btnSelector||!1,this.btnClass=t.btnClass||!1,this.btnText=t.btnText||`Translate To ${t.targetLanguageLabel} (Beta)`,this.stringSelector=t.stringSelector||!1,this.progressBarSelector=t.progressBarSelector||!1,this.onStartTranslationProcess=t.onStartTranslationProcess||(()=>{}),this.onComplete=t.onComplete||(()=>{}),this.onLanguageError=t.onLanguageError||(()=>{}),this.onBeforeTranslate=t.onBeforeTranslate||(()=>{}),this.onAfterTranslate=t.onAfterTranslate||(()=>{}),this.sourceLanguage=t.sourceLanguage||"en",this.targetLanguage=t.targetLanguage||"hi",this.targetLanguageLabel=t.targetLanguageLabel||"Hindi",this.sourceLanguageLabel=t.sourceLanguageLabel||"English"}extraData=async()=>{const t=await v.languageSupportedStatus(this.sourceLanguage,this.targetLanguage,this.targetLanguageLabel,this.sourceLanguageLabel);return!0!==t?(this.onLanguageError(t),{}):(this.defaultLang=this.targetLanguage,{continueTranslation:this.continueTranslation,stopTranslation:this.stopTranslation,startTranslation:this.startTranslation,reInit:this.reInit,init:this.init})};static languageSupportedStatus=async(t,e,a,n)=>{const o=["en","es","ja","ar","de","bn","fr","hi","it","ko","nl","pl","pt","ru","th","tr","vi","zh","zh-hant","bg","cs","da","el","fi","hr","hu","id","iw","lt","no","ro","sk","sl","sv","uk","kn","ta","te","mr"].map((t=>t.toLowerCase())),r="https:"===window.location.protocol,s=window?.isSecureContext;if(!window.hasOwnProperty("chrome")||!navigator.userAgent.includes("Chrome")||navigator.userAgent.includes("Edg"))return jQuery('<span style="color: #ff4646; display: inline-block;">\n                <strong>Important Notice:</strong>\n                <ol>\n                    <li>The Translator API, which leverages Chrome local AI models, is designed specifically for use with the Chrome browser.</li>\n                    <li>For comprehensive information about the Translator API, <a href="https://developer.chrome.com/docs/ai/translator-api" target="_blank">click here</a>.</li>\n                </ol>\n                <p>Please ensure you are using the Chrome browser for optimal performance and compatibility.</p>\n            </span>');if(!("translation"in self&&"createTranslator"in self.translation||"ai"in self&&"translator"in self.ai||"Translator"in self&&"create"in self.Translator||r||s))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <strong>Important Notice:</strong>\n                <ol>\n                    <li>\n                        The Translator API is not functioning due to an insecure connection.\n                    </li>\n                    <li>\n                        Please switch to a secure connection (HTTPS) or add this URL to the list of insecure origins treated as secure by visiting \n                        <span data-clipboard-text="chrome://flags/#unsafely-treat-insecure-origin-as-secure" target="_blank" class="chrome-ai-translator-flags">\n                            chrome://flags/#unsafely-treat-insecure-origin-as-secure ${v.svgIcons("copy")}\n                        </span>.\n                        Click on the URL to copy it, then open a new window and paste this URL to access the settings.\n                    </li>\n                </ol>\n            </span>`);if(!("translation"in self&&"createTranslator"in self.translation||"ai"in self&&"translator"in self.ai||"Translator"in self&&"create"in self.Translator))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Steps to Enable the Translator AI Modal:</h4>\n                <ol>\n                    <li>Open this URL in a new Chrome tab: <strong><span data-clipboard-text="chrome://flags/#translation-api" target="_blank" class="chrome-ai-translator-flags">chrome://flags/#translation-api ${v.svgIcons("copy")}</span></strong>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>Ensure that the <strong>Experimental translation API</strong> option is set to <strong>Enabled</strong>.</li>\n                    <li>Click on the <strong>Save</strong> button to apply the changes.</li>\n                    <li>The Translator AI modal should now be enabled and ready for use.</li>\n                </ol>\n                <p>For more information, please refer to the <a href="https://developer.chrome.com/docs/ai/translator-api" target="_blank">documentation</a>.</p>   \n                <p>If the issue persists, please ensure that your browser is up to date and restart your browser.</p>\n                <p>If you continue to experience issues after following the above steps, please <a href="https://my.coolplugins.net/account/support-tickets/" target="_blank" rel="noopener">open a support ticket</a> with our team. We are here to help you resolve any problems and ensure a smooth translation experience.</p>\n            </span>`);if(!o.includes(e.toLowerCase()))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <strong>Language Support Information:</strong>\n                <ol>\n                    <li>The current version of Chrome AI Translator does not support the Target Language <strong>${a} (${e})</strong></li>\n                    <li>To view the list of supported languages, please <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">chrome://on-device-translation-internals ${v.svgIcons("copy")}</span>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>Ensure your Chrome browser is updated to the latest version for optimal performance.</li>\n                </ol>\n            </span>`);if(!o.includes(t.toLowerCase()))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <strong>Language Support Information:</strong>\n                <ol>\n                    <li>The current version of Chrome AI Translator does not support the Source Language <strong>${n} (${t})</strong></li>\n                    <li>To view the list of supported languages, please <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">chrome://on-device-translation-internals ${v.svgIcons("copy")}</span>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>Ensure your Chrome browser is updated to the latest version for optimal performance.</li>\n                </ol>\n            </span>`);const l=await v.languagePairAvality(t,e);return"after-download"===l||"downloadable"===l||"unavailable"===l?jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Installation Instructions for Language Packs:</h4>\n                <ol>\n                    <li>\n                        To proceed, please install the language pack for <strong>${a} (${e})</strong> or <strong>${n} (${t})</strong>.\n                    </li>\n                    <li>\n                        After installing the language pack, add this language to your browser's system languages in Chrome settings.<br>\n                        Go to <strong>Settings &gt; Languages &gt; Add languages</strong> and add <strong>${a}</strong> or <strong>${n}</strong> to your preferred languages list & reload the page.\n                    </li>\n                    <li>\n                        You can install it by visiting the following link: \n                        <strong>\n                            <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">\n                                chrome://on-device-translation-internals ${v.svgIcons("copy")}\n                            </span>\n                        </strong>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.\n                    </li>\n                    <li>\n                        Please check if both your source <strong>(<span style="color:#2271b1">${t}</span>)</strong> and target <strong>(<span style="color:#2271b1">${e}</span>)</strong> languages are available in the language packs list.\n                    </li>\n                    <li>\n                        You need to install both language packs for translation to work. You can search for each language by its language code: <strong>${t}</strong> and <strong>${e}</strong>.\n                    </li>\n                    <li>For more help, refer to the <a href="https://developer.chrome.com/docs/ai/translator-api#supported-languages" target="_blank">documentation to check supported languages</a>.</li>\n                </ol>\n            </span>`):"downloading"===l?jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Language Pack Download In Progress:</h4>\n                <ol>\n                    <li>\n                        The language pack for <strong>${a} (${e})</strong> or <strong>${n} (${t})</strong> is already being downloaded.\n                    </li>\n                    <li>\n                        <strong>You do not need to start the download again.</strong> Please wait for the download to complete. Once finished, the translation feature will become available automatically.\n                    </li>\n                    <li>\n                        You can check the download progress by opening:\n                        <strong>\n                            <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">\n                                chrome://on-device-translation-internals ${v.svgIcons("copy")}\n                            </span>\n                        </strong>\n                        . Click on the URL to copy it, then open a new window and paste this URL in Chrome to view the status.\n                    </li>\n                    <li>\n                        <strong>What to do next:</strong>\n                        <ul style="margin-top: .5em;">\n                            <li>Wait for the download to finish. The status will change to <strong>Ready</strong> or <strong>Installed</strong> in the <strong>Language Packs</strong> section.</li>\n                            <li>After the language pack is installed, you may need to <strong>reload</strong> or <strong>restart</strong> your browser for the changes to take effect.</li>\n                        </ul>\n                    </li>\n                    <li>\n                        For more help, refer to the <a href="https://developer.chrome.com/docs/ai/translator-api#supported-languages" target="_blank">documentation to check supported languages</a>.\n                    </li>\n                </ol>\n                <div style="text-align: right;">\n                    <button onclick="location.reload()" class="atfpp-error-reload-btn">Reload Page</button>\n                </div>\n            </span>`):"readily"===l||"available"===l||jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Language Pack Installation Required</h4>\n                <ol>\n                    <li>Please ensure that the language pack for <strong>${a} (${e})</strong> or <strong>${n} (${t})</strong> is installed and set as a preferred language in your browser.</li>\n                    <li>To install the language pack, visit <strong><span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">chrome://on-device-translation-internals ${v.svgIcons("copy")}</span></strong>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>If you encounter any issues, please refer to the <a href="https://developer.chrome.com/docs/ai/translator-api#supported-languages" target="_blank">documentation to check supported languages</a> for further assistance.</li>\n                </ol>\n            </span>`)};static languagePairAvality=async(t,e)=>{try{await self.Translator.create({sourceLanguage:t,targetLanguage:e,monitor(t){t.addEventListener("downloadprogress",(t=>{console.log(`Downloaded ${100*t.loaded}%`)}))}})}catch(t){console.log("err",t)}if("translation"in self&&"createTranslator"in self.translation)return await self.translation.canTranslate({sourceLanguage:t,targetLanguage:e});if("ai"in self&&"translator"in self.ai){const a=await self.ai.translator.capabilities();return await a.languagePairAvailable(t,e)}return"Translator"in self&&"create"in self.Translator&&await self.Translator.availability({sourceLanguage:t,targetLanguage:e})};AITranslator=async t=>"translation"in self&&"createTranslator"in self.translation?await self.translation.createTranslator({sourceLanguage:this.sourceLanguage,targetLanguage:t}):"ai"in self&&"translator"in self.ai?await self.ai.translator.create({sourceLanguage:this.sourceLanguage,targetLanguage:t}):"Translator"in self&&"create"in self.Translator&&await self.Translator.create({sourceLanguage:this.sourceLanguage,targetLanguage:t});init=async()=>{this.appendBtn(),this.translationStart=!1,this.completedTranslateIndex=0,this.completedCharacterCount=0,this.translateBtnEvents(),this.progressBarSelector&&this.addProgressBar()};appendBtn=()=>{this.translateBtn=jQuery(`<button class="button button-primary${this.btnClass?" "+this.btnClass:""}">${this.btnText}</button>`),jQuery(this.btnSelector).append(this.translateBtn)};formatCharacterCount=t=>t>=1e6?(t/1e6).toFixed(1)+"M":t>=1e3?(t/1e3).toFixed(1)+"K":t;translateBtnEvents=t=>this.btnSelector&&0!==jQuery(this.btnSelector).length?this.stringSelector&&0!==jQuery(this.stringSelector).length?(this.translateStatus=!0,this.translateBtn.off("click"),this.translateBtn.prop("disabled",!1),void(this.translationStart?this.translateStringEle.length>this.completedTranslateIndex+1?this.translateBtn.on("click",(()=>{this.onStartTranslationProcess(),this.stringTranslation(this.completedTranslateIndex+1)})):(this.onComplete({translatedStringsCount:this.completedCharacterCount}),this.translateBtn.prop("disabled",!0)):this.translateBtn.on("click",this.startTranslationProcess))):this.onLanguageError("The string selector is missing. Please provide a valid selector for the strings to be translated."):this.onLanguageError("The button selector is missing. Please provide a valid selector for the button.");startTranslationProcess=async()=>{this.onStartTranslationProcess();const t=this.defaultLang;this.translationStart=!0,this.translateStringEle=jQuery(this.stringSelector),this.totalStringCount=Array.from(this.translateStringEle).map((t=>t.innerText.length)).reduce(((t,e)=>t+e),0),this.translator=await this.AITranslator(t),this.translateStringEle.length>0&&await this.stringTranslation(this.completedTranslateIndex)};stringTranslation=async t=>{if(!this.translateStatus)return;const e=this.translateStringEle[t];this.onBeforeTranslate(e);const a=e.innerText;let n=[];(e.childNodes.length>0&&!e.querySelector(".notranslate")||e.querySelector(".notranslate"))&&e.childNodes.forEach((t=>{3===t.nodeType&&""!==t.nodeValue.trim()&&n.push(t)})),n.length>0&&await this.stringTranslationBatch(n,0),this.completedCharacterCount+=a.length,this.completedTranslateIndex=t,this.progressBarSelector&&this.updateProgressBar(),this.onAfterTranslate(e),this.translateStringEle.length>t+1&&await this.stringTranslation(this.completedTranslateIndex+1),t===this.translateStringEle.length-1&&(this.translateBtn.prop("disabled",!0),this.onComplete({characterCount:this.completedCharacterCount}),jQuery(this.progressBarSelector).find(".chrome-ai-translator-strings-count").show().find(".totalChars").text(this.formatCharacterCount(this.completedCharacterCount)))};stringTranslationBatch=async(t,e)=>{const a=await this.translator.translate(t[e].nodeValue);return a&&""!==a&&(t[e].nodeValue=a),e<t.length-1&&await this.stringTranslationBatch(t,e+1),!0};addProgressBar=()=>{if(!document.querySelector("#chrome-ai-translator-modal .chrome-ai-translator_progress_bar")){const t=jQuery('\n                <div class="chrome-ai-translator_progress_bar" style="background-color: #f3f3f3;border-radius: 10px;overflow: hidden;margin: 1.5rem auto; width: 50%;">\n                <div class="chrome-ai-translator_progress" style="overflow: hidden;transition: width .5s ease-in-out; border-radius: 10px;text-align: center;width: 0%;height: 20px;box-sizing: border-box;background-color: #4caf50; color: #fff; font-weight: 600;"></div>\n                </div>\n                <div style="display:none; color: white;" class="chrome-ai-translator-strings-count hidden">\n                    Wahooo! You have saved your valuable time via auto translating \n                    <strong class="totalChars">0</strong> characters using \n                    <strong>\n                        Chrome AI Translator\n                    </strong>\n                </div>\n            ');jQuery(this.progressBarSelector).append(t)}};updateProgressBar=()=>{const t=this.completedCharacterCount/this.totalStringCount*1e3/10;let e=t.toString().split(".")[1]||"";e=e.length>0&&"0"!==e[0]?e[0]:"";const a=parseInt(t)+""+(""!==e?"."+e:"");jQuery(".chrome-ai-translator_progress").css({width:`${a}%`}).text(`${a}%`)};stopTranslation=()=>{this.translateStatus=!1};reInit=()=>{this.translateBtnEvents()};startTranslation=()=>{this.translateStatus=!0,this.startTranslationProcess(this.completedTranslateIndex+1)};static svgIcons=t=>({copy:'<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="16px" width="16px" xmlns="http://www.w3.org/2000/svg" fill="#2271b1"><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"></path></svg>'}[t]||"")}const w=v,T=async t=>{const e=atfp_global_object.languageObject[t.targetLang].name,a=atfp_global_object.languageObject[t.sourceLang].name,n=(0,l.select)("block-atfp/translate").getAllowedMetaFields(),{translateStatusHandler:o,translateStatus:r}=t;let s=0;const c=await w.Object({mainWrapperSelector:"#atfp_strings_model",btnSelector:`#${t.ID}`,btnClass:"local_ai_translator_btn",btnText:(0,i.__)("Translate To","autopoly-ai-translation-for-polylang")+" "+e+" (Beta)",stringSelector:".atfp_string_container tbody tr td.translate:not([data-translate-status='translated'])",progressBarSelector:"#atfp_strings_model .atfp_translate_progress",sourceLanguage:t.sourceLang,targetLanguage:t.targetLang,targetLanguageLabel:e,sourceLanguageLabel:a,onStartTranslationProcess:()=>{s=(new Date).getTime(),jQuery("#atfp_strings_model .modal-content .atfp_string_container")[0].scrollHeight>100&&jQuery("#atfp_strings_model .atfp_translate_progress").fadeIn("slow")},onComplete:()=>{g({prefix:"localAiTranslator",start:s,end:(new Date).getTime(),translateStatus:!0}),setTimeout((()=>{o(!1),jQuery("#atfp_strings_model .atfp_translate_progress").fadeOut("slow")}),4e3)},onBeforeTranslate:t=>{const e=jQuery("#atfp_strings_model .modal-content .atfp_string_container");if(e.length<1)return c.stopTranslation(),g({prefix:"localAiTranslator",start:s,end:(new Date).getTime()}),void(s=0);const a=e[0].getBoundingClientRect(),n=t.closest("tr").offsetTop,o=e.height();var r;n>o+a.y&&(r=n-o+t.offsetHeight,e.scrollTop(r))},onAfterTranslate:t=>{const e=t.innerText,a=t.dataset.stringType,o=t.dataset.key,r=t.closest("tr").querySelector('td[data-source="source_text"]').innerText;u({type:a,key:o,translateContent:e,source:r,provider:"localAiTranslator",AllowedMetaFields:n});const s=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData?.localAiTranslator,i=s&&s.targetStringCount?s.targetStringCount:0,c=s&&s.targetWordCount?s.targetWordCount:0,d=s&&s.targetCharacterCount?s.targetCharacterCount:0;""!==e.trim()&&e.trim().length>0&&(0,l.dispatch)("block-atfp/translate").translationInfo({targetStringCount:i+r.trim().split(/(?<=[.!?]+)\s+/).length,targetWordCount:c+r.trim().split(/\s+/).filter((t=>/[^\p{L}\p{N}]/.test(t))).length,targetCharacterCount:d+r.trim().length,provider:"localAiTranslator"})}});if(c.hasOwnProperty("init")){c.init();const t=document.querySelector("#atfp_localAiTranslator_translate_element .local_ai_translator_btn");t&&r&&(t.disabled=r)}},S=t=>{t=t||{};const{Service:e=!1,openErrorModalHandler:a=()=>{}}=t,n=(window.atfp_global_object.admin_url,window.atfp_global_object.atfp_url+"assets/images/error-icon.svg"),o={yandex:{Provider:b,title:"Yandex Translate",SettingBtnText:"Translate",serviceLabel:"Yandex Translate",Docs:"https://docs.coolplugins.net/doc/yandex-translate-for-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_yandex",heading:(0,i.__)("Choose Language","autopoly-ai-translation-for-polylang"),BetaEnabled:!1,ButtonDisabled:t.yandexButtonDisabled,ErrorMessage:t.yandexButtonDisabled?React.createElement("div",{className:"atfp-provider-error button button-primary",onClick:()=>a("yandex")},React.createElement("img",{src:n,alt:"error"})," ",(0,i.__)("View Error","autopoly-ai-translation-for-polylang")):React.createElement(React.Fragment,null),Logo:"yandex.png"},localAiTranslator:{Provider:T,title:"Chrome Built-in AI",SettingBtnText:"Translate",serviceLabel:"Chrome AI Translator",heading:(0,i.sprintf)((0,i.__)("Translate Using %s","autopoly-ai-translation-for-polylang"),"Chrome built-in API"),Docs:"https://docs.coolplugins.net/doc/chrome-ai-translation-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_chrome",BetaEnabled:!0,ButtonDisabled:t.localAiTranslatorButtonDisabled,ErrorMessage:t.localAiTranslatorButtonDisabled?React.createElement("div",{className:"atfp-provider-error button button-primary",onClick:()=>a("localAiTranslator")},React.createElement("img",{src:n,alt:"error"})," ",(0,i.__)("View Error","autopoly-ai-translation-for-polylang")):React.createElement(React.Fragment,null),Logo:"chrome.png"},google:{title:"Google Translate",SettingBtnText:"Translate",serviceLabel:"Google Translate",Docs:"https://docs.coolplugins.net/doc/google-translate-for-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_google",heading:(0,i.__)("Choose Language","autopoly-ai-translation-for-polylang"),BetaEnabled:!1,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_google",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"google.png"},openai_ai:{title:"OpenAI Model",SettingBtnText:"Translate",serviceLabel:"OpenAI",heading:(0,i.sprintf)((0,i.__)("Translate Using %s Model","autopoly-ai-translation-for-polylang"),"OpenAI"),Docs:"https://docs.coolplugins.net/doc/translate-via-open-ai-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_openai",BetaEnabled:!0,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_openai",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"openai.png",filterHtmlContent:!0},google_ai:{title:"Gemini Model",SettingBtnText:"Translate",serviceLabel:"Gemini",heading:(0,i.sprintf)((0,i.__)("Translate Using %s Model","autopoly-ai-translation-for-polylang"),"Gemini"),Docs:"https://docs.coolplugins.net/doc/translate-via-gemini-ai-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_gemini",BetaEnabled:!0,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_gemini",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"gemini.png",filterHtmlContent:!0}};return e?o[e]:o},k=t=>{const{service:e}=t,a=(0,l.select)("block-atfp/translate").getTranslationEntry(),n=t.stringModalBodyNotice;return(0,d.useEffect)((()=>{["yandex"].includes(t.service)&&(document.documentElement.setAttribute("translate","no"),document.body.classList.add("notranslate"));const e=t.service,a=`atfp_${e}_translate_element`;wp.data.select("block-atfp/translate").getTranslationEntry().length>0&&t.postDataFetchStatus&&S({Service:e}).Provider({sourceLang:t.sourceLang,targetLang:t.targetLang,translateStatusHandler:t.translateStatusHandler,ID:a,translateStatus:t.translateStatus,modalRenderId:t.modalRender,destroyUpdateHandler:t.updateDestroyHandler})}),[t.modalRender,t.postDataFetchStatus]),React.createElement("div",{className:"modal-body"},a.length>0&&t.postDataFetchStatus?React.createElement(React.Fragment,null,n&&React.createElement("div",{className:"atfp-body-notice-wrapper"},React.createElement(n,null)),React.createElement("div",{className:"atfp_translate_progress",key:t.modalRender},(0,i.__)("Automatic translation is in progress....","autopoly-ai-translation-for-polylang"),React.createElement("br",null),(0,i.__)("It will take few minutes, enjoy ☕ coffee in this time!","autopoly-ai-translation-for-polylang"),React.createElement("br",null),React.createElement("br",null),(0,i.__)("Please do not leave this window or browser tab while translation is in progress...","autopoly-ai-translation-for-polylang")),React.createElement("div",{className:`translator-widget ${e}`,style:{display:"flex"}},React.createElement("h3",{className:"choose-lang"},S({Service:t.service}).heading," ",React.createElement("span",{className:"dashicons-before dashicons-translation"})),React.createElement("div",{className:"atfp_translate_element_wrapper "+(t.translateStatus?"translate-completed":"")},React.createElement("div",{id:`atfp_${t.service}_translate_element`}))),React.createElement("div",{className:"atfp_string_container"},React.createElement("table",{className:"scrolldown",id:"stringTemplate"},React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",{className:"notranslate"},(0,i.__)("S.No","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Source Text","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Translation","autopoly-ai-translation-for-polylang")))),React.createElement("tbody",null,t.postDataFetchStatus&&React.createElement(React.Fragment,null,a.map(((e,a)=>React.createElement(s.Fragment,{key:a+t.translatePendingStatus},void 0!==e.source&&""!==e.source.trim()&&React.createElement(React.Fragment,null,React.createElement("tr",{key:a+"tr"+t.translatePendingStatus},React.createElement("td",null,a+1),React.createElement("td",{"data-source":"source_text"},e.source),t.translatePendingStatus?React.createElement("td",{className:"translate",translate:"yes","data-key":e.id,"data-string-type":e.type},React.createElement(p,{service:t.service,content:e.source,contentKey:e.id})):React.createElement("td",{className:"translate","data-translate-status":"translated","data-key":e.id,"data-string-type":e.type},e.translatedData[t.service]))))))))))):t.postDataFetchStatus?React.createElement("p",null,(0,i.__)("No strings are available for translation","autopoly-ai-translation-for-polylang")):React.createElement("div",{className:"atfp-skeleton-loader-wrapper"},React.createElement("div",{className:"translate-widget"},React.createElement("div",{className:"atfp-skeleton-loader-mini"}),React.createElement("div",{className:"atfp-skeleton-loader-mini"})),React.createElement("table",null,React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",{className:"notranslate"},(0,i.__)("S.No","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Source Text","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Translation","autopoly-ai-translation-for-polylang")))),React.createElement("tbody",null,[...Array(10)].map(((t,e)=>React.createElement("tr",{key:e},React.createElement("td",null,React.createElement("div",{className:"atfp-skeleton-loader-mini"})),React.createElement("td",null,React.createElement("div",{className:"atfp-skeleton-loader-mini"})),React.createElement("td",null,React.createElement("div",{className:"atfp-skeleton-loader-mini"})))))))))},E=t=>React.createElement("div",{className:`notice inline notice-info is-dismissible ${t.className}`},Array.isArray(t.children)?t.children.join(" "):t.children),C=t=>React.createElement("div",{className:"modal-footer",key:t.modalRender},!t.translatePendingStatus&&React.createElement(E,{className:"atfp_string_count"},React.createElement("p",null,(0,i.__)("Wahooo! You have saved your valuable time via auto translating","autopoly-ai-translation-for-polylang")," ",React.createElement("strong",null,React.createElement(m,{number:t.characterCount}))," ",(0,i.__)("characters using","autopoly-ai-translation-for-polylang")," ",React.createElement("strong",null,t.serviceLabel),".",(0,i.__)("Please share your feedback —","autopoly-ai-translation-for-polylang"),React.createElement("a",{href:"https://wordpress.org/support/plugin/automatic-translations-for-polylang/reviews/#new-post",target:"_blank",rel:"noopener",style:{color:"yellow"}},(0,i.__)("leave a quick review","autopoly-ai-translation-for-polylang")),"!")),React.createElement("div",{className:"save_btn_cont"},React.createElement("button",{className:"notranslate save_it button button-primary",disabled:t.translatePendingStatus,onClick:t.updatePostData},(0,i.__)("Update Content","autopoly-ai-translation-for-polylang"))));function R(){return R=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)({}).hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},R.apply(null,arguments)}const L=t=>{let e=t.service;const a=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[e]||!1,n=a?.translateStatus||!1,[o,r]=(0,s.useState)(!0),[i,d]=(0,s.useState)(""),[p,u]=(0,s.useState)(!0),[g,m]=(0,s.useState)(a?.targetCharacterCount||0),[f,h]=(0,s.useState)([]),_=t=>{h((e=>[...e,t]))};(0,s.useEffect)((()=>{o||f.length>0&&f.forEach((t=>{"function"==typeof t&&t()}))}),[o,f]);const y=()=>{const e=t.service;return"localAiTranslator"===e?"Chrome AI Translator":e.replace(/^\w/,(t=>t.toUpperCase()))+" Translate"};(0,s.useEffect)((()=>{t.postDataFetchStatus||t.fetchPostData({postId:t.postId,sourceLang:t.sourceLang,targetLang:t.targetLang,updatePostDataFetch:t.updatePostDataFetch,refPostData:t=>d(t),updateDestroyHandler:_})}),[t.postDataFetchStatus,t.modalRender]);const b=e=>{"yandex"===t.service&&document.querySelector("#atfp_yandex_translate_element #yt-widget .yt-button__icon.yt-button__icon_type_right")?.click(),u(!0),r(!1)},v=()=>{const e=i;let a=t.service;t.translatePost({postContent:e,modalClose:()=>r(!1),service:a}),t.pageTranslate(!0),(({provider:t,sourceLang:e,targetLang:a,postId:n})=>{const o=(0,l.select)("block-atfp/translate").getTranslationInfo(),r=o.translateData?.[t]?.targetStringCount||0,s=o.translateData?.[t]?.targetWordCount||0,i=o.translateData?.[t]?.targetCharacterCount||0,c=o.translateData?.[t]?.timeTaken||0,d=o?.sourceWordCount||0,p=o?.sourceCharacterCount||0,u=o?.sourceStringCount||0,g={provider:t,totalStringCount:r,totalWordCount:s,totalCharacterCount:i,editorType:atfp_global_object.editor_type,date:(new Date).toISOString(),sourceStringCount:u,sourceWordCount:d,sourceCharacterCount:p,sourceLang:e,targetLang:a,timeTaken:c,action:atfp_global_object.update_translate_data,atfp_nonce:atfp_global_object.ajax_nonce,post_id:n};fetch(atfp_global_object.ajax_url,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(g)}).then((t=>t.json())).then((t=>{console.log(t.data.message)})).catch((t=>{console.error(t)}))})({provider:a,sourceLang:t.sourceLang,targetLang:t.targetLang,postId:t.currentPostId})};return(0,s.useEffect)((()=>{r(!0),n&&(m(a?.targetCharacterCount||0),u(!1)),setTimeout((()=>{const t=document.querySelector(".atfp_string_container");t&&(t.scrollTop=0)}))}),[t.modalRender]),React.createElement(React.Fragment,null," ",o&&React.createElement("div",{id:`atfp-${t.service}-strings-modal`,className:"modal-container",style:{display:o?"flex":"none"},"data-render-id":t.modalRender},React.createElement("div",{className:"modal-content"},React.createElement(c,{modalRender:t.modalRender,setPopupVisibility:b,postContent:i,translatePendingStatus:p,pageTranslate:t.pageTranslate,service:t.service,serviceLabel:y(),updatePostData:v,characterCount:g}),React.createElement(k,R({},t,{updatePostContent:t=>{d(t)},contentLoading:t.contentLoading,postDataFetchStatus:t.postDataFetchStatus,translatePendingStatus:p,service:t.service,sourceLang:t.sourceLang,targetLang:t.targetLang,translateStatusHandler:e=>{let a=t.service;const n=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[a]?.targetCharacterCount||0;m(n),u(e)},modalRender:t.modalRender,translateStatus:n,stringModalBodyNotice:t.stringModalBodyNotice,updateDestroyHandler:_})),React.createElement(C,{modalRender:t.modalRender,setPopupVisibility:b,postContent:i,translatePendingStatus:p,pageTranslate:t.pageTranslate,service:t.service,serviceLabel:y(),updatePostData:v,characterCount:g}))))},x=({setSettingVisibility:t})=>React.createElement("div",{className:"modal-header"},React.createElement("h2",null,(0,i.__)("Step 1 - Select Translation Provider","autopoly-ai-translation-for-polylang")),React.createElement("span",{className:"close",onClick:()=>t(!1)},"×")),j=t=>{const e=t.Service,a=t[e+"Disabled"],n=S({Service:e,[e+"ButtonDisabled"]:a,openErrorModalHandler:t.openErrorModalHandler}),o=`atfp-${e.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/[^a-z0-9-]/g,"")}-btn`;return React.createElement("tr",null,React.createElement("td",{className:"atfp-provider-name"},React.createElement("img",{src:`${t.imgFolder}${n.Logo}`,alt:n.title}),React.createElement("span",null,n.title)),React.createElement("td",null,n.ButtonDisabled?n.ErrorMessage:React.createElement("div",{id:o,onClick:t.fetchContent,className:"atfp-service-btn button button-primary","data-service":e,"data-service-label":n.ServiceLabel},n.SettingBtnText)),React.createElement("td",null,React.createElement("a",{href:n.Docs,target:"_blank",rel:"noopener noreferrer",className:"atfp-doc-icon"},React.createElement("svg",{width:"9",height:"12",viewBox:"0 0 9 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("path",{d:"M2.17607 6.20533H6.82393V5.53867H2.17607V6.20533ZM2.17607 8.05133H6.82393V7.38467H2.17607V8.05133ZM2.17607 9.898H4.89536V9.23133H2.17607V9.898ZM1.03821 12C0.7425 12 0.495643 11.8973 0.297643 11.692C0.0996427 11.4867 0.000428571 11.2304 0 10.9233V1.07667C0 0.77 0.0992142 0.514 0.297643 0.308667C0.496071 0.103333 0.743143 0.000444444 1.03886 0H6.10714L9 3V10.9233C9 11.23 8.901 11.4862 8.703 11.692C8.505 11.8978 8.25771 12.0004 7.96114 12H1.03821ZM5.78571 3.33333V0.666667H1.03886C0.939857 0.666667 0.849 0.709333 0.766286 0.794666C0.683571 0.88 0.642429 0.974 0.642857 1.07667V10.9233C0.642857 11.0256 0.684 11.1196 0.766286 11.2053C0.848571 11.2911 0.939214 11.3338 1.03821 11.3333H7.96179C8.06036 11.3333 8.151 11.2907 8.23371 11.2053C8.31643 11.12 8.35757 11.0258 8.35714 10.9227V3.33333H5.78571Z",fill:"#6F6F6F"})))))};function A(){return A=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)({}).hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},A.apply(null,arguments)}const N=t=>{const e=S();return React.createElement("div",{className:"atfp-setting-modal-body"},React.createElement("div",{className:"atfp-setting-modal-notice-wrapper"}),React.createElement("table",null,React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",null,"Name"),React.createElement("th",null,"Translate"),React.createElement("th",null,"Docs"))),React.createElement("tbody",null,Object.keys(e).map((e=>React.createElement(j,A({key:e},t,{Service:e})))))))},D=t=>{const{targetLangName:e,postType:a,sourceLangName:n,setSettingVisibility:o}=t;return React.createElement("div",{className:"modal-footer"},React.createElement("p",{className:"atfp-error-message",style:{marginBottom:".5rem"}},sprintf((0,i.__)("This will replace your current %(postType)s with a %(target)s translation of the original %(source)s content.","autopoly-ai-translation-for-polylang"),{postType:a,source:n,target:e})),React.createElement("button",{className:"atfp-setting-close button button-primary",onClick:()=>o(!1)},(0,i.__)("Close","autopoly-ai-translation-for-polylang")))},P=({message:t,onClose:e,Title:a})=>{let n=jQuery("<div>").append(t);const o=n.html();return n.remove(),n=null,(0,s.useEffect)((()=>{const t=document.querySelectorAll(".chrome-ai-translator-flags");if(t.length>0)return t.forEach((t=>{t.classList.add("atfp-tooltip-element"),t.addEventListener("click",(e=>{if(e.preventDefault(),t.querySelector(".atfp-tooltip"))return;let a=document.createElement("span");a.textContent="Text to be copied.",a.className="atfp-tooltip",t.appendChild(a),(async({text:t=!1,startCopyStatus:e=()=>{},endCopyStatus:a=()=>{}})=>{if(t&&""!==t)try{if(navigator?.clipboard?.writeText)await navigator.clipboard.writeText(t);else{const e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select(),document.execCommand&&document.execCommand("copy"),document.body.removeChild(e)}e(),setTimeout((()=>a()),800)}catch(t){console.error("Error copying text to clipboard:",t)}})({text:t.getAttribute("data-clipboard-text"),startCopyStatus:()=>{a.classList.add("atfp-tooltip-active")},endCopyStatus:()=>{setTimeout((()=>{a.remove()}),800)}})}))})),()=>{t.forEach((t=>{t.removeEventListener("click",(()=>{}))}))}}),[]),React.createElement("div",{className:"atfp-error-modal-box-container"},React.createElement("div",{className:"atfp-error-modal-box"},React.createElement("div",{className:"atfp-error-modal-box-header"},React.createElement("span",{className:"atfp-error-modal-box-close",onClick:e},"×"),a&&React.createElement("h3",null,a)),React.createElement("div",{className:"atfp-error-modal-box-body"},React.createElement("p",{dangerouslySetInnerHTML:{__html:o}})),React.createElement("div",{className:"atfp-error-modal-box-footer"},React.createElement("button",{className:"atfp-error-modal-box-close button button-primary",onClick:e},"Close"))))};function I(){return I=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)({}).hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},I.apply(null,arguments)}const F=t=>{const[e,a]=(0,s.useState)({}),[n,o]=(0,s.useState)(0),[l,c]=(0,s.useState)(!1),d=atfp_global_object.source_lang,p=t.targetLang,u=atfp_global_object.languageObject[d].name,g=atfp_global_object.languageObject[p].name,m=atfp_global_object.atfp_url+"assets/images/",f=["af","am","ar","az","ba","be","bg","bn","bs","ca","ceb","cs","cv","cy","da","de","el","emj","en","eo","es","et","eu","fa","fi","fr","ga","gd","gl","gu","he","hi","hr","ht","hu","hy","id","is","it","ja","jv","ka","kazlat","kk","km","kn","ko","ky","la","lb","lo","lt","lv","mg","mhr","mi","mk","ml","mn","mr","mrj","ms","mt","my","ne","nl","no","pa","pap","pl","pt","pt-BR","ro","ru","sah","si","sk","sl","sq","sr","sr-Latn","su","sv","sw","ta","te","tg","th","tl","tr","tt","udm","uk","ur","uz","uzbcyr","vi","xh","yi","zh","zu"].includes(p),[h,_]=(0,s.useState)({}),[y,b]=(0,s.useState)(!1),[v,T]=(0,s.useState)(!1),S=t=>{t.preventDefault();const e=t.target;"yes"===e.dataset.value&&c(!0),e.closest("#atfp-modal-open-warning-wrapper").remove()};(0,s.useEffect)((()=>{const e=document.querySelectorAll("#atfp-modal-open-warning-wrapper .modal-content div[data-value]"),a=document.querySelector(t.translateWrpSelector);a&&a.addEventListener("click",(t=>{t.preventDefault(),c((t=>!t))})),e.forEach((t=>{t&&t.addEventListener("click",S)}))}),[]),(0,s.useEffect)((()=>{l&&(f||_((t=>({...t,yandex:{message:"<p style={{ fontSize: '1rem', color: '#ff4646' }}>"+(0,i.sprintf)((0,i.__)("Yandex Translate does not support the target language: %s.","autopoly-ai-translation-for-polylang"),"<strong>"+g+"</strong>")+"</p>",Title:(0,i.__)("Yandex Translate","autopoly-ai-translation-for-polylang")}}))),(async()=>{const t=await w.languageSupportedStatus(d,p,g,u),e=document.querySelector(".atfp-service-btn#atfp-local-ai-translator-btn");!0!==t&&"object"==typeof t&&e&&(T(!0),_((e=>({...e,localAiTranslator:{message:t,Title:(0,i.__)("Chrome AI Translator","autopoly-ai-translation-for-polylang")}}))))})())}),[l]),(0,s.useEffect)((()=>{const a=e,o=a.dataset&&a.dataset.service,s=a.dataset&&a.dataset.serviceLabel,l=t.postId,i=document.getElementById("atfp_strings_model");i&&(i._reactRoot||(i._reactRoot=r.createRoot(i)),n&&i._reactRoot.render(React.createElement(L,{currentPostId:t.currentPostId,postId:l,service:o,serviceLabel:s,sourceLang:d,targetLang:p,modalRender:n,pageTranslate:t.pageTranslate,postDataFetchStatus:t.postDataFetchStatus,fetchPostData:t.fetchPostData,translatePost:t.translatePost,contentLoading:t.contentLoading,updatePostDataFetch:t.updatePostDataFetch,stringModalBodyNotice:t.stringModalBodyNotice})))}),[t.postDataFetchStatus,n]);const k=t=>{c(t)};return React.createElement(React.Fragment,null,y&&h[y]&&React.createElement(P,I({onClose:()=>{b(!1)}},h[y])),l&&React.createElement("div",{className:"modal-container",style:{display:l?"flex":"none"}},React.createElement("div",{className:"atfp-settings modal-content"},React.createElement(x,{setSettingVisibility:k,postType:t.postType,sourceLangName:u,targetLangName:g}),React.createElement(N,{yandexDisabled:!f,fetchContent:async t=>{let e=t.target.classList.contains("atfp-service-btn")?t.target:t.target.closest(".atfp-service-btn");if(!e)return;const n=e.dataset&&e.dataset.service;if(c(!1),"localAiTranslator"===n){const t=await w.languageSupportedStatus(d,p,g);if(!0!==t&&"object"==typeof t)return}o((t=>t+1)),a(e)},imgFolder:m,targetLangName:g,postType:t.postType,sourceLangName:u,localAiTranslatorDisabled:v,openErrorModalHandler:t=>{c(!1),b(t)}}),React.createElement(D,{targetLangName:g,postType:t.postType,sourceLangName:u,setSettingVisibility:k}))))},B="SAVE_SOURCE_TITLE",$="SAVE_TRANSLATE_TITLE",O="SAVE_SOURCE_EXCERPT",M="SAVE_TRANSLATE_EXCERPT",H="SAVE_SOURCE_CONTENT",V="SAVE_TRANSLATE_CONTENT",q="SAVE_SOURCE_META_FIELDS",W="SAVE_TRANSLATE_META_FIELDS",Q="SET_BLOCK_RULES",U="SAVE_TRANSLATE_INFO",z="ALLOWED_META_FIELDS",Y={title:{},excerpt:{},content:[],metaFields:{},allowedMetaFields:{}},G=t=>({type:B,text:t}),Z=(t,e)=>({type:$,text:t,provider:e}),K=t=>({type:O,text:t}),X=(t,e)=>({type:M,text:t,provider:e}),J=(t,e)=>({type:H,text:e,id:t}),tt=(t,e,a,n)=>({type:V,text:e,id:t,source:a,provider:n}),et=(t,e)=>({type:q,text:e,id:t}),at=(t,e,a,n)=>({type:W,text:e,id:t,source:a,provider:n}),nt=t=>({type:Q,data:t}),ot=({sourceStringCount:t=null,sourceWordCount:e=null,sourceCharacterCount:a=null,timeTaken:n=null,provider:o=null,targetStringCount:r=null,targetWordCount:s=null,targetCharacterCount:l=null,translateStatus:i=null})=>({type:U,sourceStringCount:t,sourceWordCount:e,sourceCharacterCount:a,timeTaken:n,targetStringCount:r,targetWordCount:s,targetCharacterCount:l,provider:o,translateStatus:i}),rt=({id:t,type:e})=>({type:z,id:t,inputType:e}),st=t=>{const e=new Array;return t.title.source&&e.push({id:"title",source:t.title.source,type:"title",translatedData:t.title.translatedData||{}}),t.excerpt.source&&e.push({id:"excerpt",source:t.excerpt.source,type:"excerpt",translatedData:t.excerpt.translatedData||{}}),Object.keys(t.metaFields).map((a=>{e.push({type:"metaFields",id:a,source:t.metaFields[a].source,translatedData:t.metaFields[a].translatedData||{}})})),Object.keys(t.content).map((a=>{e.push({type:"content",id:a,source:t.content[a].source,translatedData:t.content[a].translatedData||{}})})),e},lt=t=>t.blockRules,it=(t,e,a,n=null,o=null)=>["title","excerpt"].includes(e)&&t[e].source===a&&t[e].translatedData&&t[e].translatedData[o]?t[e]?.translatedData[o]||t[e]?.source:"metaFields"===e&&t.metaFields&&t.metaFields[n]&&t.metaFields[n].source===a&&t.metaFields[n].translatedData&&t.metaFields[n].translatedData[o]?void 0!==t.metaFields[n]?.translatedData[o]?t.metaFields[n]?.translatedData[o]:t.metaFields[n]?.source:"content"===e&&t.content&&t.content[n]&&t.content[n].source===a&&t.content[n].translatedData&&t.content[n].translatedData[o]?void 0!==t.content[n]?.translatedData[o]?t.content[n]?.translatedData[o]:t.content[n]?.source:a,ct=t=>({sourceStringCount:t?.translationInfo?.sourceStringCount||0,sourceWordCount:t?.translationInfo?.sourceWordCount||0,sourceCharacterCount:t?.translationInfo?.sourceCharacterCount||0,translateData:t?.translationInfo?.translateData||{}}),dt=t=>t.allowedMetaFields||{},{createReduxStore:pt,register:ut}=wp.data;ut(pt("block-atfp/translate",{reducer:(t=Y,e)=>{switch(e.type){case B:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,title:{...t.title,source:e.text}}:t;case $:return{...t,title:{...t.title,translatedData:{...t.title.translatedData||[],[e.provider]:e.text}}};case O:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,excerpt:{...t.excerpt,source:e.text}}:t;case M:return{...t,excerpt:{...t.excerpt,translatedData:{...t.excerpt.translatedData||[],[e.provider]:e.text}}};case H:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,content:{...t.content,[e.id]:{...t.content[e.id]||[],source:e.text}}}:t;case V:return t.content[e.id].source===e.source?{...t,content:{...t.content,[e.id]:{...t.content[e.id]||[],translatedData:{...t.content[e.id].translatedData||[],[e.provider]:e.text}}}}:t;case q:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,metaFields:{...t.metaFields,[e.id]:{...t.metaFields[e.id]||[],source:e.text}}}:t;case W:return{...t,metaFields:{...t.metaFields,[e.id]:{...t.metaFields[e.id]||[],translatedData:{...t.metaFields[e.id].translatedData||[],[e.provider]:e.text}}}};case Q:return{...t,blockRules:e.data};case U:const a={};return e.sourceStringCount&&(a.sourceStringCount=e.sourceStringCount),e.sourceWordCount&&(a.sourceWordCount=e.sourceWordCount),e.sourceCharacterCount&&(a.sourceCharacterCount=e.sourceCharacterCount),(e.targetWordCount||e.targetCharacterCount||e.translateStatus||e.timeTaken)&&e.provider&&(a.translateData={...t.translationInfo?.translateData||{},[e.provider]:{...t.translationInfo?.translateData?.[e.provider]||{},...e.targetStringCount&&{targetStringCount:e.targetStringCount},...e.targetWordCount&&{targetWordCount:e.targetWordCount},...e.targetCharacterCount&&{targetCharacterCount:e.targetCharacterCount},...e.translateStatus&&{translateStatus:e.translateStatus},...e.timeTaken&&{timeTaken:e.timeTaken}}}),{...t,translationInfo:{...t.translationInfo,...a}};case z:return{...t,allowedMetaFields:{...t.allowedMetaFields,[e.id]:{...t.allowedMetaFields[e.id]||[],inputType:e.inputType}}};default:return t}},actions:n,selectors:o}));const gt=(t,e,a,n)=>{const o=(t,e)=>{Object.keys(e).map((a=>{let o=e;o=o[a];const r=new Array(...t,a);n(r,o)}))};Object.getPrototypeOf(e)===Array.prototype?((t,e)=>{const r=new Array(...t);let s=a;r.forEach((t=>{s=s[t]})),[null,void 0].includes(s)||(Object.getPrototypeOf(s)!==Object.prototype?(Object.getPrototypeOf(s)===Array.prototype&&s.forEach(((t,a)=>{const o=new Array;r.forEach((t=>{o.push(t)})),o.push(a),n(o,e[0])})),"object"!=typeof s||o(t,e[0])):o(t,e[0]))})(t,e):Object.getPrototypeOf(e)===Object.prototype&&o(t,e)},mt=(t,e)=>{Object.keys(e.AtfpBlockParseRules).includes(t.name)&&((t,e,a)=>{const n=Object.values(a),o=(a,n)=>{if(!0!==n)gt(a,n,e,o);else{const n=new Array(...a),o=new Array;let r=e,s=t;n.forEach((t=>{o.push(t),s+=`atfp${t}`,r=r[t]}));let i=r;if(i instanceof wp.richText.RichTextData&&(i=i.originalHTML),void 0!==i&&""!==i.trim()){let t=s.replace(/[^\p{L}\p{N}]/gu,"");if(!/[\p{L}\p{N}]/gu.test(i))return!1;(0,l.dispatch)("block-atfp/translate").contentSaveSource(t,i)}}};n.forEach((t=>{Object.keys(t).forEach((e=>{const a=new Array(e);o(a,t[e])}))}))})(t.clientId,t.attributes,e.AtfpBlockParseRules[t.name])},ft=(t,e)=>{t.forEach((t=>{mt(t,e),t.innerBlocks&&ft(t.innerBlocks,e)}))},ht=window.wp.blocks,_t={_yoast_wpseo_title:{type:"string"},_yoast_wpseo_focuskw:{type:"string"},_yoast_wpseo_metadesc:{type:"string"},_yoast_wpseo_bctitle:{type:"string"},"_yoast_wpseo_opengraph-title":{type:"string"},"_yoast_wpseo_opengraph-description":{type:"string"},"_yoast_wpseo_twitter-title":{type:"string"},"_yoast_wpseo_twitter-description":{type:"string"},rank_math_title:{type:"string"},rank_math_description:{type:"string"},rank_math_focus_keyword:{type:"string"},rank_math_facebook_title:{type:"string"},rank_math_facebook_description:{type:"string"},rank_math_twitter_title:{type:"string"},rank_math_twitter_description:{type:"string"},rank_math_breadcrumb_title:{type:"string"},_seopress_titles_title:{type:"string"},_seopress_titles_desc:{type:"string"},_seopress_social_fb_title:{type:"string"},_seopress_social_fb_desc:{type:"string"},_seopress_social_twitter_title:{type:"string"},_seopress_social_twitter_desc:{type:"string"},_seopress_analysis_target_kw:{type:"string"}},yt=async t=>{const e=atfp_global_object.ajax_url;let a={};const n=t=>{(0,l.dispatch)("block-atfp/translate").allowedMetaFields(t)};Object.keys(_t).forEach((t=>{n({id:t,type:_t[t].type})})),(()=>{const t="true"===atfp_global_object.postMetaSync;if(window.acf&&!t){const t=["text","textarea","wysiwyg"];acf.getFields().forEach((e=>{e.data&&t.includes(e.data.type)&&n({id:e.data.key,type:e.data.type})}))}})();const o={atfp_nonce:atfp_global_object.ajax_nonce,action:atfp_global_object.action_block_rules};await fetch(e,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(o)}).then((t=>t.json())).then((t=>{a=JSON.parse(t.data.blockRules),(0,l.dispatch)("block-atfp/translate").setBlockRules(a)})).catch((t=>{console.error("Error fetching post content:",t)}));const r={postId:parseInt(t.postId),local:t.targetLang,current_local:t.sourceLang,atfp_nonce:atfp_global_object.ajax_nonce,action:atfp_global_object.action_fetch};await fetch(e,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(r)}).then((t=>t.json())).then((e=>{const n=e.data;n.content&&""!==n.content.trim()&&(n.content=(0,ht.parse)(n.content)),((t,e)=>{const a=(0,l.select)("block-atfp/translate").getAllowedMetaFields();Object.keys(t).forEach((n=>{if("content"===n)((t,e)=>{Object.values(t).forEach((t=>{mt(t,e),t.innerBlocks&&ft(t.innerBlocks,e)}))})(t[n],e);else if("metaFields"===n)Object.keys(t[n]).forEach((e=>{Object.keys(a).includes(e)&&"string"===a[e].inputType&&""!==t[n][e][0]&&void 0!==t[n][e][0]&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(e,t[n][e][0])})),window.acf&&acf.getFields().forEach((e=>{if(e.data&&a[e.data.key]){const a=e.data.name,o=acf.getField(e.data.key)?.val();t[n]&&t[n][a]?""!==t[n][a]&&void 0!==t[n][a]&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(e.data.key,t[n][a][0]):o&&""!==o&&void 0!==o&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(e.data.key,o)}}));else if(["title","excerpt"].includes(n)&&t[n]&&""!==t[n].trim()){const e=`${n}SaveSource`;(0,l.dispatch)("block-atfp/translate")[e](t[n])}}))})(n,a),t.refPostData(n),t.updatePostDataFetch(!0)})).catch((t=>{console.error("Error fetching post content:",t)}))},bt=(t,e,a,n)=>{const{createBlock:o}=wp.blocks,{name:r,attributes:s}=t;let l={...s},i=t,c="";return Object.keys(a.AtfpBlockParseRules).includes(t.name)&&(i=((t,e,a)=>{const{select:n}=wp.data,o=Object.values(e),r=t.attributes,s=t.clientId,l=(e,o)=>{if(!0!==o)gt(e,o,r,l);else{const o=new Array(...e),l=new Array;let i=r,c=s;o.forEach((t=>{l.push(t),c+=`atfp${t}`,i=i[t]}));let d=i;if(d instanceof wp.richText.RichTextData&&(d=d.originalHTML),void 0!==d&&""!==d.trim()){let e=c.replace(/[^\p{L}\p{N}]/gu,""),r="";r=/[\p{L}\p{N}]/gu.test(d)?n("block-atfp/translate").getTranslatedString("content",d,e,a):d,t.attributes=((t,e,a)=>{const n={...t};let o=n;for(let t=0;t<e.length-1;t++)Object.getPrototypeOf(o[e[t]])===Array.prototype?o[e[t]]=[...o[e[t]]]:o[e[t]]={...o[e[t]]},o=o[e[t]];return o[e[e.length-1]]instanceof wp.richText.RichTextData?o[e[e.length-1]]=a.replace(/(?<!\\)"|\\"/g,"'"):o[e[e.length-1]]=a,n})(t.attributes,o,r)}}};return o.forEach((t=>{Object.keys(t).forEach((e=>{const a=new Array(e);l(a,t[e])}))})),t})(t,a.AtfpBlockParseRules[t.name],n),l=i.attributes),c=o(r,l,e),c},vt=(t,e,a)=>{let n=t.innerBlocks.map((t=>{if(t.name)return vt(t,e,a)}));return bt(t,n,e,a)},wt=t=>{if(!(0,l.dispatch)("yoast-seo/editor"))return;const{updateData:e,setFocusKeyword:a,setBreadcrumbsTitle:n,setFacebookPreviewTitle:o,setFacebookPreviewDescription:r,setTwitterPreviewTitle:s,setTwitterPreviewDescription:i}=(0,l.dispatch)("yoast-seo/editor"),{key:c,value:d}=t;switch(c){case"_yoast_wpseo_focuskw":a&&a(d);break;case"_yoast_wpseo_title":e&&e({title:d});break;case"_yoast_wpseo_metadesc":e&&e({description:d});break;case"_yoast_wpseo_bctitle":n&&n(d);break;case"_yoast_wpseo_opengraph-title":o&&o(d);break;case"_yoast_wpseo_opengraph-description":r&&r(d);break;case"_yoast_wpseo_twitter-title":s&&s(d);break;case"_yoast_wpseo_twitter-description":i&&i(d)}},Tt=t=>{if(!(0,l.dispatch)("rank-math"))return;const{updateKeywords:e,updateTitle:a,updateDescription:n,updateBreadcrumbTitle:o,updateFacebookTitle:r,updateFacebookDescription:s,updateTwitterTitle:i,updateTwitterDescription:c}=(0,l.dispatch)("rank-math"),{key:d,value:p}=t;switch(d){case"rank_math_focus_keyword":e&&e(p);break;case"rank_math_title":a&&a(p);break;case"rank_math_description":n&&n(p);break;case"rank_math_breadcrumb_title":o&&o(p);break;case"rank_math_facebook_title":r&&r(p);break;case"rank_math_facebook_description":s&&s(p);break;case"rank_math_twitter_title":i&&i(p);break;case"rank_math_twitter_description":c&&c(p)}},St=t=>{const{editPost:e}=(0,l.dispatch)("core/editor"),{modalClose:a,postContent:n,service:o}=t;(()=>{const t={};Object.keys(n).filter((t=>["title","excerpt"].includes(t))).forEach((e=>{const a=n[e];if(""!==a.trim()){const n=(0,l.select)("block-atfp/translate").getTranslatedString(e,a,null,o);t[e]=n}})),e(t)})(),(()=>{const t=n.metaFields,a=(0,l.select)("block-atfp/translate").getAllowedMetaFields();Object.keys(t).forEach((n=>{if(Object.keys(a).includes(n)){const r=(0,l.select)("block-atfp/translate").getTranslatedString("metaFields",t[n][0],n,o);n.startsWith("_yoast_wpseo_")&&"string"===a[n].inputType?wt({key:n,value:r}):n.startsWith("rank_math_")&&"string"===a[n].inputType?Tt({key:n,value:r}):n.startsWith("_seopress_")&&"string"===a[n].inputType?(async t=>{const{key:e,value:a}=t,n=e.replace(/^_/,"")+"_meta";if(document.querySelector("#"+n))switch(e){case"_seopress_titles_title":case"_seopress_titles_desc":case"_seopress_social_fb_title":case"_seopress_social_fb_desc":case"_seopress_social_twitter_title":case"_seopress_social_twitter_desc":jQuery(`#${n}`).val(a),jQuery(`#${n}`).trigger("change");break;case"_seopress_analysis_target_kw":window.target_kw&&window.target_kw instanceof window.Tagify&&window.target_kw.DOM.originalInput.id===n?window.target_kw.addTags(a):(jQuery("#"+n).val(a),jQuery("#"+n).trigger("change"))}})({key:n,value:r}):e({meta:{[n]:r}})}}))})(),(()=>{const t=(0,l.select)("block-atfp/translate").getAllowedMetaFields(),e=n.metaFields;window.acf&&acf.getFields().forEach((a=>{if(a.data&&a.data.key&&Object.keys(t).includes(a.data.key)){const t=acf.getField(a.data.key),n=a.data.key,r=a.data.name,s=t.data.type,i=e[r]?e[r][0]:acf.getField(n)?.val(),c=(0,l.select)("block-atfp/translate").getTranslatedString("metaFields",i,n,o);if("wysiwyg"===s&&tinymce){const e=t.data.id;tinymce.get(e)?.setContent(c)}else acf.getField(n)?.val(c)}}))})(),(()=>{const t=n.content;t.length<=0||Object.values(t).forEach((t=>{((t,e)=>{const{select:a}=wp.data,n=a("block-atfp/translate").getBlockRules(),{dispatch:o}=wp.data,{name:r}=t;if(r){let a=t.innerBlocks.map((t=>{if(t.name)return vt(t,n,e)}));const r=bt(t,a,n,e);o("core/block-editor").insertBlock(r)}})(t,o)}))})(),a()},kt=({characterCount:t=0,url:e=""})=>{const[a,n]=(0,d.useState)(!1),[o,r]=(0,d.useState)(!1);return""!==e&&(e+="?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup"),(0,d.useEffect)((()=>{const t=document.querySelector('button.atfp-translate-button[name="atfp_meta_box_translate"],input#atfp-translate-button[name="atfp_meta_box_translate"]');if(t)return t.addEventListener("click",(()=>{n(!0),r(!0)})),()=>{t.removeEventListener("click",(()=>{}))}}),[]),a?React.createElement("div",{id:"atfp-pro-notice-wrapper",className:o?"atfp-active":""},React.createElement("div",{className:"atfp-pro-notice"},React.createElement("div",{className:"atfp-notice-header"},React.createElement("h2",null,"AutoPoly - AI Translation For Polylang"),React.createElement("span",{className:"atfp-close-button",onClick:()=>n(!1),"aria-label":"Close Notice"},"×")),React.createElement("div",{className:"atfp-notice-content"},React.createElement("p",null,"You have reached the character limit of ",React.createElement("strong",null,React.createElement(m,{number:t}))," for your translations. To continue translating beyond this limit, please consider upgrading to ",React.createElement("strong",null,"AutoPoly - AI Translation For Polylang Pro"),".")),React.createElement("div",{className:"atfp-notice-footer"},React.createElement("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"atfp-upgrade-button"},"Upgrade to Pro")))):null},Et=t=>{const e=()=>{const t=document.querySelector(".atfp-body-notice-wrapper");if(t){const e=t.offsetHeight+t.offsetTop;t.closest(".modal-body").style.setProperty("--atfp-notice-wrapper-height",`${e}px`)}};return(0,d.useEffect)((()=>(t.lastNotice&&(e(),window.addEventListener("resize",e)),()=>{window.removeEventListener("resize",e)})),[t.lastNotice]),React.createElement("div",{className:t.className},t.children)},Ct=async t=>{const e=atfp_global_object.elementorData&&"string"==typeof atfp_global_object.elementorData?JSON.parse(atfp_global_object.elementorData):atfp_global_object.elementorData,a=atfp_global_object?.metaFields,n={widgetsContent:e,metaFields:a};Object.keys(_t).forEach((t=>{var e;e={id:t,type:_t[t].type},(0,l.dispatch)("block-atfp/translate").allowedMetaFields(e)})),(t=>{const e=(0,l.select)("block-atfp/translate").getAllowedMetaFields(),a=(t,e,n)=>{t(e[n],n),++n<e.length&&a(t,e,n)},n=(t,e)=>{if("string"==typeof e&&""!==e.trim()&&t.length>0){const a=t.join("_atfp_");e&&""!==e&&(0,l.dispatch)("block-atfp/translate").contentSaveSource(a,e)}},o=["content_width","title_size","font_size","margin","padding","background","border","color","text_align","font_weight","font_family","line_height","letter_spacing","text_transform","border_radius","box_shadow","opacity","width","height","display","position","z_index","visibility","align","max_width","content_typography_typography","flex_justify_content","title_color","description_color","email_content"],r=["title","description","editor","text","content","label"],s=(t,e,l=[])=>{const i=t.settings;if(l.push(e),"object"==typeof i&&null!==i&&Object.keys(i).length>0){const t=(t,e)=>{if(!o.some((e=>t.toLowerCase().includes(e)))&&(r.some((e=>t.toLowerCase().includes(e)))&&"string"==typeof i[t]&&""!==i[t].trim()&&n([...l,"settings",t],i[t]),Array.isArray(i[t])&&i[t].length>0)){const e=(e,s)=>{"object"==typeof e&&null!==e&&a((a=>{o.includes(a.toLowerCase())||r.some((t=>a.toLowerCase().includes(t)))&&"string"==typeof e[a]&&""!==e[a].trim()&&n([...l,"settings",t,s,a],e[a])}),Object.keys(e),0)};a(e,i[t],0)}};a(t,Object.keys(i),0)}if(t.elements&&Array.isArray(t.elements)&&t.elements.length>0){const e=(t,e)=>{s(t,e,[...l,"elements"])};a(e,t.elements,0)}};var i;t.widgetsContent&&t.widgetsContent.length>0&&a(((t,e)=>{s(t,e,[])}),t.widgetsContent,0),i=t.metaFields,Object.keys(i).forEach((t=>{Object.keys(e).includes(t)&&"string"===e[t].inputType&&""!==i[t][0]&&void 0!==i[t][0]&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(t,i[t][0])}))})(n),t.refPostData(n),t.updatePostDataFetch(!0)},Rt=(t,e)=>{for(const a of t){if(a.get("id")===e)return a;const t=a.get("elements").models,n=Rt(t,e);if(n)return n}return null},Lt=({postContent:t,modalClose:e,service:a})=>{const n=elementor.config.document.id,o=[],r=["content_width","title_size","font_size","margin","padding","background","border","color","text_align","font_weight","font_family","line_height","letter_spacing","text_transform","border_radius","box_shadow","opacity","width","height","display","position","z_index","visibility","align","max_width","content_typography_typography","flex_justify_content","title_color","description_color","email_content"],s=(t,e,n=[])=>{const i=t.id,c=t.settings;if(n.push(e),"object"==typeof c&&null!==c){const t=["title","description","editor","text","content","label"];Object.keys(c).forEach((e=>{if(!r.some((t=>e.toLowerCase().includes(t)))){if(t.some((t=>e.toLowerCase().includes(t)))&&"string"==typeof c[e]&&""!==c[e].trim()){const t=n.join("_atfp_")+"_atfp_settings_atfp_"+e,r=(0,l.select)("block-atfp/translate").getTranslatedString("content",c[e],t,a);o.push({ID:i,key:e,translatedContent:r})}Array.isArray(c[e])&&c[e].forEach(((s,c)=>{"object"==typeof s&&null!==s&&Object.keys(s).forEach((d=>{if(!r.includes(d.toLowerCase())&&t.some((t=>d.toLowerCase().includes(t)))&&"string"==typeof s[d]&&""!==s[d].trim()){const t=`${e}[${c}].${d}`,r=n.join("_atfp_")+"_atfp_settings_atfp_"+e+"_atfp_"+c+"_atfp_"+d,p=(0,l.select)("block-atfp/translate").getTranslatedString("content",s[d],r,a);o.push({ID:i,key:t,translatedContent:p})}}))}))}}))}t.elements&&Array.isArray(t.elements)&&t.elements.forEach(((t,e)=>{s(t,e,[...n,"elements"])}))};t.widgetsContent.map(((t,e)=>s(t,e,[]))),(t=>{t.forEach((t=>{const e=Rt(elementor.elements.models,t.ID);if(e){const a=e.get("settings");a.get(t.key)&&a.set(t.key,t.translatedContent);const n=t.key.match(/(.+)\[(\d+)\]\.(.+)/);if(n){const[e,o,r,s]=n,l=a.get(o);Array.isArray(l.models)&&l.models[r]&&(l.models[r].attributes[s]=t.translatedContent,a.set(o,l))}}})),$e.internal("document/save/set-is-modified",{status:!0})})(o),((t,e)=>{const a=(0,l.select)("block-atfp/translate").getAllowedMetaFields();Object.keys(t).forEach((n=>{if(Object.keys(a).includes(n)){const o=(0,l.select)("block-atfp/translate").getTranslatedString("metaFields",t[n][0],n,e);n.startsWith("_yoast_wpseo_")&&"string"===a[n].inputType?wt({key:n,value:o}):n.startsWith("rank_math_")&&"string"===a[n].inputType?Tt({key:n,value:o}):n.startsWith("_seopress_")&&"string"===a[n].inputType&&elementor?.settings?.page?.model?.setExternalChange(n,o)}}))})(t.metaFields,a);const i=(()=>{const t=atfp_global_object.elementorData;return wp.data.select("block-atfp/translate").getTranslationEntry().forEach((e=>{const n=e.source,o=e.id,r=e.translatedData,s=e.type;if(!n||""===n&&"content"!==s)return;const l=o.split("_atfp_"),i=r[a];let c=null,d=null,p=t;l.forEach((t=>{c=p,d=t,p=p[t]})),c&&d&&c[d]&&c[d]===n&&(c[d]=i)})),t})();fetch(atfp_global_object.ajax_url,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams({action:atfp_global_object.update_elementor_data,post_id:n,elementor_data:JSON.stringify(i),atfp_nonce:atfp_global_object.ajax_nonce})}).then((t=>t.json())).then((t=>{if(t.success){const t=document.querySelector('.atfp-translate-button[name="atfp_meta_box_translate"]');t&&t.setAttribute("title","Translation process completed successfully."),elementor.reloadPreview()}else console.error("Failed to update Elementor data:",t.data);e()})).catch((t=>{e(),console.error("Error updating Elementor data:",t)}))},xt=window.atfp_global_object.editor_type,jt=()=>{let t=new Array;t.push('\x3c!-- The Modal --\x3e<div id="atfp-setting-modal"></div>','<div id="atfp_strings_model" class="modal atfp_custom_model"></div>'),t.forEach((t=>{document.body.insertAdjacentHTML("beforeend",t)}))},At=()=>{const t=[];if("gutenberg"===xt){"true"===atfp_global_object.postMetaSync&&t.push({className:"atfp-notice atfp-notice-warning",message:React.createElement("p",null,(0,i.__)("For accurate custom field translations, please disable the Custom Fields synchronization in ","autopoly-ai-translation-for-polylang"),React.createElement("a",{href:`${atfp_global_object.admin_url}admin.php?page=mlang_settings`,target:"_blank",rel:"noopener noreferrer"},(0,i.__)("Polylang settings","autopoly-ai-translation-for-polylang")),(0,i.__)(". This may affect linked posts or pages.","autopoly-ai-translation-for-polylang"))});const e=(0,l.select)("block-atfp/translate").getBlockRules();e.AtfpBlockParseRules&&0!==Object.keys(e.AtfpBlockParseRules).length||t.push({className:"atfp-notice atfp-notice-error",message:React.createElement("p",null,(0,i.__)("No block rules were found. It appears that the block-rules.JSON file could not be fetched, possibly because it is blocked by your server settings. Please check your server configuration to resolve this issue.","autopoly-ai-translation-for-polylang"))})}const e=t.length;if(t.length>0)return t.map(((t,a)=>React.createElement(Et,{className:t.className,key:a,lastNotice:a===e-1},t.message)))},Nt=()=>{const[t,e]=(0,d.useState)(!1),a=window.atfp_global_object.target_lang,n=window.atfp_global_object.parent_post_id,o=window.atfp_global_object.current_post_id,r=window.atfp_global_object.post_type;let s,l,c;const p=window.atfp_global_object.source_lang;"elementor"===xt?(c='button.atfp-translate-button[name="atfp_meta_box_translate"]',s=Lt,l=Ct):"gutenberg"===xt&&(c='input#atfp-translate-button[name="atfp_meta_box_translate"]',s=St,l=yt);const[u,g]=(0,d.useState)(!1),[m,f]=(0,d.useState)(!0);if((0,d.useEffect)((()=>{if(t){const t=document.querySelector(c);t&&(t.disabled=!0,t.value=(0,i.__)("Already Translated","autopoly-ai-translation-for-polylang"))}}),[t]),p&&""!==p)return React.createElement(React.Fragment,null,!t&&p&&""!==p&&React.createElement(F,{contentLoading:m,updatePostDataFetch:t=>{g(t),f(!1)},postDataFetchStatus:u,pageTranslate:t=>{e(t)},postId:n,currentPostId:o,targetLang:a,postType:r,fetchPostData:async t=>{await l(t);const e=wp.data.select("block-atfp/translate").getTranslationEntry();let a=0,n=0,o=0;e.map((t=>{const e=t.source?t.source:"",r=e.split(/(?<=[.!?]+)\s+/).length,s=e.trim().split(/\s+/).filter((t=>/[^\p{L}\p{N}]/.test(t))).length,l=e.length;a+=r,n+=l,o+=s})),wp.data.dispatch("block-atfp/translate").translationInfo({sourceStringCount:a,sourceWordCount:o,sourceCharacterCount:n})},translatePost:s,translateWrpSelector:c,stringModalBodyNotice:At}));{const t=document.querySelector(c);t&&(t.title=`Parent ${window.atfp_global_object.post_type} may be deleted.`,t.disabled=!0)}},Dt=()=>{const t=jQuery(".MuiButtonGroup-root.MuiButtonGroup-contained").parent(),e=jQuery(t).find(".elementor-button.atfp-translate-button");if(t.length>0&&0===e.length){const e=jQuery('<button class="elementor-button atfp-translate-button" name="atfp_meta_box_translate">Translate</button>');if(t.prepend(e),$e.internal("document/save/set-is-modified",{status:!0}),!window.atfp_global_object.translation_data||!window.atfp_global_object.translation_data.total_string_count&&0!==window.atfp_global_object.translation_data.total_string_count)return e.attr("disabled","disabled"),void e.attr("title","Translation data not found.");const a=parseInt(window.atfp_global_object.translation_data.total_character_count);if(a>5e5){const t=document.createElement("div");return t.id="atfp-pro-notice",document.body.appendChild(t),void r.createRoot(document.getElementById("atfp-pro-notice")).render(React.createElement(kt,{characterCount:a,url:window.atfp_global_object.pro_version_url||""}))}if(""===window.atfp_global_object.elementorData||window.atfp_global_object.elementorData.length<1||elementor.elements.length<1)return e.attr("disabled","disabled"),void e.attr("title","Translation is not available because there is no Elementor data.");jt(),r.createRoot(document.getElementById("atfp-setting-modal")).render(React.createElement(Nt,null))}};"gutenberg"===xt&&window.addEventListener("load",(()=>{jt();const t=jQuery('input#atfp-translate-button[name="atfp_meta_box_translate"]');if(!window.atfp_global_object.translation_data||!window.atfp_global_object.translation_data.total_string_count&&0!==window.atfp_global_object.translation_data.total_string_count)return t.attr("disabled","disabled"),void t.attr("title","Translation data not found.");const e=parseInt(window.atfp_global_object.translation_data.total_character_count);if(e>5e5){const t=document.createElement("div");return t.id="atfp-pro-notice",document.body.appendChild(t),void r.createRoot(document.getElementById("atfp-pro-notice")).render(React.createElement(kt,{characterCount:e,url:window.atfp_global_object.pro_version_url||""}))}const a=window.atfp_global_object.source_lang;a&&""!==a&&(()=>{const t=document.getElementById("atfp-setting-modal"),e=(()=>{const t=window.atfp_global_object.post_type,e=window.atfp_global_object.target_lang,a=atfp_global_object.languageObject[e].name,n=document.createElement("div");return n.id="atfp-modal-open-warning-wrapper",n.innerHTML=`\n    <div class="modal-container" style="display: flex">\n      <div class="modal-content">\n        <p>${(0,i.sprintf)((0,i.__)("Would you like to duplicate your original %s content and have it automatically translated into %s?","autopoly-ai-translation-for-polylang"),t,a)}</p>\n        <div>\n          <div data-value="yes">${(0,i.__)("Yes","autopoly-ai-translation-for-polylang")}</div>\n          <div data-value="no">${(0,i.__)("No","autopoly-ai-translation-for-polylang")}</div>\n        </div>\n      </div>\n    </div>`,n})();document.body.insertBefore(e,t)})(),r.createRoot(document.getElementById("atfp-setting-modal")).render(React.createElement(Nt,null))})),"elementor"===xt&&jQuery(window).on("elementor:init",(function(){elementor.on("document:loaded",Dt)}))})();
     1(()=>{"use strict";var t={338:(t,e,a)=>{var n=a(795);e.createRoot=n.createRoot,e.hydrateRoot=n.hydrateRoot},795:t=>{t.exports=window.ReactDOM}},e={};function a(n){var o=e[n];if(void 0!==o)return o.exports;var r=e[n]={exports:{}};return t[n](r,r.exports,a),r.exports}a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};a.r(n),a.d(n,{allowedMetaFields:()=>se,contentFetchStatus:()=>le,contentSaveSource:()=>te,contentSaveTranslate:()=>ee,excerptSaveSource:()=>Kt,excerptSaveTranslate:()=>Zt,metaFieldsSaveSource:()=>ae,metaFieldsSaveTranslate:()=>ne,setBlockRules:()=>oe,titleSaveSource:()=>Xt,titleSaveTranslate:()=>Jt,translationInfo:()=>re});var o={};a.r(o),a.d(o,{contentFetchStatus:()=>ge,getAllowedMetaFields:()=>ue,getBlockRules:()=>ce,getTranslatedString:()=>pe,getTranslationEntry:()=>ie,getTranslationInfo:()=>de});var r=a(338);const s=window.wp.element,l=window.wp.data,i=window.wp.i18n,c=t=>React.createElement("div",{className:"modal-header",key:t.modalRender},React.createElement("span",{className:"close",onClick:()=>{t.setPopupVisibility(!1)}},"×"),React.createElement("h2",{className:"notranslate"},(0,i.__)("Step 2 - Start Automatic Translation Process","autopoly-ai-translation-for-polylang")),React.createElement("div",{className:"save_btn_cont"},React.createElement("button",{className:"notranslate save_it button button-primary",disabled:t.translatePendingStatus,onClick:t.updatePostData},t.translateButtonStatus?React.createElement(React.Fragment,null,React.createElement("span",{className:"updating-text"},(0,i.__)("Updating","autopoly-ai-translation-for-polylang"),React.createElement("span",{className:"dot",style:{"--i":0}}),React.createElement("span",{className:"dot",style:{"--i":1}}),React.createElement("span",{className:"dot",style:{"--i":2}}))):(0,i.__)("Update Content","autopoly-ai-translation-for-polylang")))),p=window.React,d=t=>{const e=t.skipTags||[],a="#atfp_open_translate_span#",n="#atfp_close_translate_span#",o="#atfp_temp_tag_open#",r="#atfp_temp_tag_close#",s="#atfp_less_then_symbol#",l="#atfp_greater_then_symbol#",i="#atfp_entity_open_translate_span#",c="#atfp_entity_close_translate_span#",p="#atfp_line_break_n_open#",d="#atfp_line_break_n_close#",u="#atfp_line_break_r_open#",g="#atfp_line_break_r_close#",m=t=>t.replace(new RegExp(a,"g"),"").replace(new RegExp(n,"g"),""),f=t=>{const o=document.createElement("div");o.innerHTML=t;const r=o.firstElementChild;if(!r)return t;let s=r.childNodes,l=s.length;if(l>0){s=Array.from(s).sort((t,e)=>3===t.nodeType?-1:3===e.nodeType?1:0);for(let t=0;t<l;t++){let e=s[t];if(3===e.nodeType){let t=e.textContent.replace(/^\s+|^\.\s+|^\s.|\s+$|\.\s+$|\s.\+$/g,t=>`${a}${m(t)}${n}`);e.textContent=t}else if(8===e.nodeType)e.textContent=e.textContent;else{let t=f(e.outerHTML);e.outerHTML=t}}}let i=r.outerHTML.match(/^<[^>]+>/)[0];const c=new RegExp(`${a}|${n}`,"g");i=i.replace(c,"");const p=r.tagName.toLowerCase(),d=new RegExp(`</${p}>`,"i"),u=r.outerHTML.match(d);if("<style>"===i)return`${a}${m(r.outerHTML)}${n}`;let g=r.innerHTML;g=g.replace(/^\s+|^\.\s+|^\s.|\s+$|\.\s+$|\s.\+$/g,t=>`${a}${m(t)}${n}`),r.innerHTML="";let h="",_="",y="";if(_=`${a}${m(i)}${n}`,u&&(h=`${a}</${p}>${n}`),e.includes(p)){const t=new RegExp(`${a}|${n}`,"g");g=g.replace(t,""),g=`${a}${m(g)}${n}`}return""!==g?(""!==_&&(y=_+g),""!==h&&(y+=h)):y=_+h,r.outerHTML=y,o.innerHTML},h=["yandex","localAiTranslator"].includes(t.service)?(e=>{/^(_yoast_wpseo_|rank_math_|_seopress_)/.test(t.contentKey.trim())&&(e=(t=>t.replace(/(%{1,2}[a-zA-Z0-9_]+%{0,2})/g,t=>`${a}${m(t)}${n}`))(e)),e=(t=>t.replace(/(\n)/g,()=>`${p}${d}`).replace(/(\r)/g,()=>`${u}${g}`))(e);const h=/\[(.*?)\]/g;"string"==typeof e&&e.match(h)&&(e=e.replace(h,t=>`${a}${m(t)}${n}`));let _=e;if((t=>(t=t.trim(),/^<([a-z][a-z0-9]*)\b[^>]*>(\s*(?:<!--.*?-->\s*)*<\/\1>)?$/i.test(t)))(e))_=e.replace(/<([a-z][a-z0-9]*)\b[^>]*>(\s*(?:<!--.*?-->\s*)*<\/\1>)?/gi,t=>`${a}${m(t)}${n}`);else{const t=document.createElement("div");t.innerHTML=(t=>{if("string"!=typeof t||!t.trim())return t;const e=/<\/?([a-zA-Z0-9]+)(\s[^>]*)?>/g,a=[];let n,s="",l=0;for(;null!==(n=e.exec(t));){const[i,c]=n,p=i.startsWith("</"),d=n.index;if(d>l&&(s+=t.slice(l,d)),p){const t=a.findIndex(t=>t.tag===c);-1!==t?(a.splice(t,1),s+=i):s+=`${o}<${c}>${r}`+i}else a.push({tag:c}),s+=i;l=e.lastIndex}l<t.length&&(s+=t.slice(l));for(let t=a.length-1;t>=0;t--){const{tag:e}=a[t];s+=`${o}</${e}>${r}`}return n=null,a.length=0,t=null,s})(e),function t(e){let o=e.childNodes;const r=e=>{if(o.length>e){let p=o[e],d=null;if(3===p.nodeType){const t=p.textContent.replace(/^\s+|^\.\s+|^\s.|\s+$|\.\s+$|\s.\+$|(\r?\n){2,}/g,t=>`${a}${m(t)}${n}`);d=document.createTextNode(t)}else if(8===p.nodeType)d=document.createTextNode(`${a}${s}!--${m(p.textContent)}--${l}${n}`);else if(1===p.nodeType){const e=p.childNodes,o=p.outerHTML.trim(),r=o.match(/^<([a-zA-Z0-9]+)(\s[^>]*)?>/i);if(!r)return o;const u=r[1],g=r[2]||"",f=new RegExp(`<\\/${u}>\\s*$`,"i").test(o);e.length>0&&t(p);let h=`${a}${s}${u}${m(g)}${l}${n}${(t=>t.replace(/&([a-zA-Z0-9#x]+);/g,t=>`${i}${t.replace(/&/g,"").replace(/;/g,"")}${c}`))(p.innerHTML)}`;f&&(h+=`${a}${s}/${u}${l}${n}`),d=document.createTextNode(h)}else{let t=p.outerHTML;t=t.replace(/<!--([\s\S]*?)-->/g,(t,e)=>`${a}${m(t)}${n}`);let e=f(t);d=document.createTextNode(e)}p.replaceWith(d),e++,r(e)}};return r(0),e}(t),_=t.innerText,_=_.replace(new RegExp(s,"g"),"<").replace(new RegExp(l,"g"),">"),_=((t,e)=>{if(t=t.trim(),!/<\/?(tr|td)\b[^>]*>/i.test(t))return e;if(/<\/?(tr|td)\b[^>]*>/i.test(e))return e;e=e.trim();const o=t.match(/^<(tr|td)\b[^>]*>/i),r=t.match(/<\/(tr|td)>\s*$/i);let s=e;return o&&(s=`${a}${m(o[0])}${n}`+s),r&&(s+=`${a}${m(r[0])}${n}`),s})(e,_)}const y=new RegExp(`${o}([\\s\\S]*?)(${r})`,"g");return _=_.replace(y,""),_=(t=>t.replace(new RegExp(p+d,"g"),`${a}\n${n}`).replace(new RegExp(u+g,"g"),`${a}\r${n}`))(_),_=(t=>t.replace(new RegExp(i,"g"),"&").replace(new RegExp(c,"g"),";"))(_),(t=>{const e=new RegExp(`(${a}[\\s\\S]*?${n})|'`);return t.split(e).filter(Boolean).filter(t=>""!==t.trim())})(_)})(t.content):t.content,_=new RegExp(`${a}[\\s\\S]*?${n}`),y=new RegExp(`${a}|${n}`,"g");return React.createElement(React.Fragment,null,["yandex","localAiTranslator","google"].includes(t.service)?h.map((t,e)=>_.test(t)?React.createElement("span",{key:e,className:"notranslate atfp-notraslate-tag",translate:"no"},(t=>t.replace(y,""))(t)):t):h)},u=({type:t,key:e,translateContent:a,source:n,provider:o,AllowedMetaFields:r})=>{if(["title","excerpt"].includes(t)){const e=`${t}SaveTranslate`;(0,l.dispatch)("block-atfp/translate")[e](a,o)}else["metaFields"].includes(t)?Object.keys(r).includes(e)&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveTranslate(e,a,n,o):(0,l.dispatch)("block-atfp/translate").contentSaveTranslate(e,a,n,o)},g=({prefix:t=!1,start:e=!1,end:a=!1,translateStatus:n=!1})=>{const o=(a-e)/1e3,r={};if(t){if(r.provider=t,e&&a){const e=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[t]?.timeTaken||0;r.timeTaken=o+e}n&&(r.translateStatus=!0),(0,l.dispatch)("block-atfp/translate").translationInfo(r)}},m=({number:t})=>t>=1e6?(t/1e6).toFixed(1)+"M":t>=1e3?(t/1e3).toFixed(1)+"K":t,f=(t,e="none",a=!1)=>{!1===a&&(a=(0,l.select)("block-atfp/translate").getTranslationInfo().sourceCharacterCount);const n=document.querySelector(`.${t}-translator-strings-count`);n&&(n.style.display=e,n.querySelector(".totalChars").textContent=m({number:a}))},h=({container:t,provider:e,startTime:a,endTime:n,translateStatus:o,modalRenderId:r})=>{if(!document.querySelector(`#atfp-${e}-strings-modal.modal-container[data-render-id="${r}"]`))return;t.querySelector(".atfp_translate_progress").style.display="none",t.querySelector(".atfp_string_container").style.animation="none",document.body.style.top="0";const s=t.querySelector("button.save_it");s.removeAttribute("disabled"),s.classList.add("translated"),s.classList.remove("notranslate"),(({provider:t,startTime:e,endTime:a})=>{const n=document.getElementById("atfp_strings_model").querySelector(".atfp_string_container").querySelectorAll('td.translate[data-string-type]:not([data-translate-status="translated"]):not(.notranslate):not([translate="no"])'),o=n.length,r=(0,l.select)("block-atfp/translate").getAllowedMetaFields();n.forEach((n,s)=>{const i=n.innerText,c=n.dataset.key,p=n.dataset.stringType,d=n.closest("tr").querySelector('td[data-source="source_text"]').innerText;u({type:p,key:c,translateContent:i,source:d,provider:t,AllowedMetaFields:r});const m=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[t],h=m&&m.targetStringCount?m.targetStringCount:0,_=m&&m.targetWordCount?m.targetWordCount:0,y=m&&m.targetCharacterCount?m.targetCharacterCount:0;""!==i.trim()&&i.trim().length>0&&(0,l.dispatch)("block-atfp/translate").translationInfo({targetStringCount:h+d.trim().split(/(?<=[.!?]+)\s+/).length,targetWordCount:_+d.trim().split(/\s+/).filter(t=>/[^\p{L}\p{N}]/.test(t)).length,targetCharacterCount:y+d.trim().length,provider:t}),s===o-1&&(jQuery(`.${t}-translator_progress`).css("width","100%"),f(t,"block"),g({prefix:t,start:e,end:a,translateStatus:!0}))})})({provider:e,startTime:a,endTime:n}),o(!1)},_=(t,e,a)=>{const n=(new Date).getTime();let o=!1;(t=>{if(document.querySelector(`#atfp-${t}-progress-bar`))jQuery(`.${t}-translator_progress`).css("width","0%"),jQuery(`.${t}-translator-strings-count`).hide();else{const e=jQuery(`\n            <div id="atfp-${t}-progress-bar" class="atfp-translate-progress-bar">\n                <div class="${t}-translator_progress_bar" style="background-color: #f3f3f3;border-radius: 10px;overflow: hidden;margin: 1.5rem auto; width: 50%;">\n                <div class="${t}-translator_progress" style="overflow: hidden;transition: width .2s ease-in-out; border-radius: 10px;text-align: center;width: 0%;height: 20px;box-sizing: border-box;background-color: #4caf50; color: #fff; font-weight: 600;"></div>\n                </div>\n                <div style="display:none; color: white;" class="${t}-translator-strings-count hidden">\n                    Wahooo! You have saved your valuable time via auto translating \n                    <strong class="totalChars"></strong> characters using \n                    <strong>\n                        ${t} Translator\n                    </strong>\n                </div>\n            </div>\n        `);jQuery("#atfp_strings_model .atfp_translate_progress").append(e)}})(e);const r=document.getElementById("atfp_strings_model"),s=r.querySelector(".atfp_string_container");s.scrollTop=0;const l=s.scrollHeight;if(void 0!==l&&l>100){if(document.querySelector(".atfp_translate_progress").style.display="block",setTimeout(()=>{const t=2e3*Math.ceil(l/s?.offsetHeight);(t=>{const{element:e,scrollSpeed:a,provider:n}=t;if(e.scrollHeight-e.offsetHeight<=0)return;const o=jQuery(`.${n}-translator_progress_bar`);let r=null,s=e.scrollTop;const l=()=>{const t=e.scrollHeight-e.offsetHeight+100,i=performance.now();r||(r=i);const c=s+(i-r)/a*(t+2e3-s);var p=e.scrollTop/(e.scrollHeight-e.clientHeight)*100;o.find(`.${n}-translator_progress`).css("width",p+"%");let d=(Math.round(10*p)/10).toFixed(1);d=Math.min(d,100).toString(),o.find(`.${n}-translator_progress`).text(d+"%"),c>t?f(n,"block"):(e.scrollTop=c,c<t&&setTimeout(l,16))};l()})({element:s,scrollSpeed:t,provider:e})},2e3),s.addEventListener("scroll",()=>{if(s.scrollTop+s.clientHeight+50>=s.scrollHeight&&!o){const s=(new Date).getTime();setTimeout(()=>{h({container:r,provider:e,startTime:n,endTime:s,translateStatus:t,modalRenderId:a})},4e3),o=!0}}),s.clientHeight+10>=l){jQuery(`.${e}-translator_progress`).css("width","100%"),jQuery(`.${e}-translator_progress`).text("100%"),f(e,"block");const o=(new Date).getTime();setTimeout(()=>{h({container:r,provider:e,startTime:n,endTime:o,translateStatus:t,modalRenderId:a})},4e3)}}else{jQuery(`.${e}-translator_progress`).css("width","100%"),jQuery(`.${e}-translator_progress`).text("100%"),f(e,"block");const o=(new Date).getTime();setTimeout(()=>{h({container:r,provider:e,startTime:n,endTime:o,translateStatus:t,modalRenderId:a})},4e3)}},y=(t,e,a,n,o,r,s,l)=>{var i={keycode:{ESCAPE:27},getRequest:function(){return t.XDomainRequest?new t.XDomainRequest:t.XMLHttpRequest?new t.XMLHttpRequest:null},loadScript:function(t,a,n){var o=e.createElement("script");o.src=t,o.addEventListener("load",function t(){this.removeEventListener("load",t,!1),n()},!1),a.appendChild(o)},loadResource:function(e,a){var n=this.getRequest();return n?(n.onload=function(){a(this.responseText)},n.open("GET",e,!0),t.setTimeout(function(){n.send()},0),n):null},getStyleList:function(t){var e=t.getAttribute("class");return e?e.replace(/\s+/g," ").trim().split(" "):[]},hasStyleName:function(t,e){var a=this.getStyleList(t);return!!a.length&&a.indexOf(e)>=0},addStyleName:function(t,e){var a=this.getStyleList(t);a.push(e),t.setAttribute("class",a.join(" "))},removeStyleName:function(t,e){var a=this.getStyleList(t),n=a.indexOf(e);n>=0&&(a.splice(n,1),t.setAttribute("class",a.join(" ")))},isSupportedBrowser:function(){return"localStorage"in t&&"querySelector"in e&&"addEventListener"in t&&"getComputedStyle"in t&&"CSS1Compat"===e.compatMode}},c=function(t,e){var a=this;t.addEventListener("click",function(t){a.onClick(t)},!1),this._element=t,this._contentElement=e||this._element};c.prototype.onClick=function(){},c.prototype.setText=function(t){return this._contentElement.textContent=t,this};var p=function(t,e){var a=this;t.reset(),t.addEventListener("click",function(t){var e=t.target;"value"in e&&a.onSelect(e.value)},!1),t.addEventListener("change",function(t){alert("form change state");var e=t.target;e.checked&&a.onChange(e.value)},!1),this._form=t,this._itemName=e};p.prototype.onSelect=function(){},p.prototype.onChange=function(){},p.prototype.isHidden=function(){return this._form.hasAttribute("hidden")},p.prototype.getItems=function(){return this._form[this._itemName]||[]},p.prototype.getValue=function(){var t,e,a=this.getItems();for(t=0,e=a.length;t<e;t++)if(a[t].checked)return a[t].value;return""},p.prototype.setValue=function(t){var e,a,n=this.getItems();if(t===this.getValue())return this;for(e=0,a=n.length;e<a;e++)if(n[e].value===t){n[e].checked=!0,this.onChange(t);break}return this},p.prototype.setHidden=function(t){return(t=!!t)!==this.isHidden()&&(this._form[(t?"set":"remove")+"Attribute"]("hidden",""),this.onHiddenChange(t)),this},p.prototype.onHiddenChange=function(){};var d=function(a){var n,o=this,c=a.select,p=a.element,d=a.storage,u=(a.autoMode,a.pageLang),g=(a.userLang,a.translator),m=a.leftButton,f=a.rightButton,h=a.closeButton;if(this._element=p,this._pageLang=u,this._translator=g,this.onStateChange=function(t,e){"active"===t&&d.setValue("active",e)},c.onSelect=function(t){this.setHidden(!0),o.translate(t),_(s,"yandex",l)},c.onChange=function(t){d.setValue("lang",t),f.setText(t),o.setState("invalid",t===u)},c.onHiddenChange=function(a){var n,r=e.documentElement;o.setState("expanded",!a),a||(o.setState("right",!1).setState("bottom",!1),p.focus(),(n=this._form.getBoundingClientRect()).right+(t.pageXOffset||r.scrollLeft)+1>=Math.max(r.clientWidth,r.scrollWidth)&&o.setState("right",!0),n.bottom+(t.pageYOffset||r.scrollTop)+1>=Math.max(r.clientHeight,r.scrollHeight)&&o.setState("bottom",!0))},p.addEventListener("blur",function(){c.setHidden(!0)},!1),p.addEventListener("keydown",function(t){t.keyCode===i.keycode.ESCAPE&&c.setHidden(!0)},!1),g.on("error",function(){this.abort(),o.setState("busy",!1).setState("error",!0)}),g.on("progress",function(t){switch(t){case 0:o.setState("busy",!0).setState("active",!0);break;case 100:o.setState("done",!0).setState("busy",!1)}}),m.onClick=function(){c.setHidden(!0),o.translate(c.getValue()),_(s,"yandex",l)},f.onClick=function(){o.hasState("active")?(g.undo(),o.setState("busy",!1).setState("done",!1).setState("error",!1).setState("active",!1)):c.setHidden(!c.isHidden())},h.onClick=function(){c.setHidden(!0)},null!=r)var y=r;switch(y){case"nb":case"nn":n="no";break;default:n=y}n&&(c.setValue(n),d.getValue("active"))};d.prototype.hasState=function(t){return i.hasStyleName(this._element,"yt-state_"+t)},d.prototype.setState=function(t,e){return(e=!!e)===this.hasState(t)||(i[(e?"add":"remove")+"StyleName"](this._element,"yt-state_"+t),this.onStateChange(t,e)),this},d.prototype.translate=function(t){return t&&!this.hasState("active")&&this._translator.translate(this._pageLang,t),this},d.prototype.onStateChange=function(){};var u=function(e){this._name=e;try{this._data=t.JSON.parse(t.localStorage[e])}catch(t){this._data={}}};u.prototype.getValue=function(t){return this._data[t]},u.prototype.setValue=function(e,a){this._data[e]=a;try{t.localStorage[this._name]=t.JSON.stringify(this._data)}catch(t){}};var g=e.getElementById(n.widgetId);if(g&&i.isSupportedBrowser()){var m=function(){i.loadScript("https://yastatic.net/s3/translate/v21.4.7/js/tr_page.js",g,function(){i.loadResource("https://translate.yandex.net/website-widget/v1/widget.html",function(t){var e;t&&(g.innerHTML=t,e=g.querySelector(".yt-widget"),n.widgetTheme&&e.setAttribute("data-theme",n.widgetTheme),new d({select:new p(e.querySelector(".yt-listbox"),"yt-lang"),element:e,storage:new u("yt-widget"),autoMode:"true"===n.autoMode,pageLang:n.pageLang,userLang:(a.language||a.userLanguage||"").split("-")[0],translator:new o.PageTranslator({srv:"tr-url-widget",url:"https://translate.yandex.net/api/v1/tr.json/translate",autoSync:!0,maxPortionLength:600}),leftButton:new c(e.querySelector(".yt-button_type_left")),rightButton:new c(e.querySelector(".yt-button_type_right"),e.querySelector(".yt-button_type_right > .yt-button__text")),closeButton:new c(e.querySelector(".yt-button_type_close"))}))})})};"complete"===e.readyState||"interactive"===e.readyState?m():e.addEventListener("DOMContentLoaded",m,!1)}},b=t=>{const e=window;y(e,e.document,e.navigator,{pageLang:t.sourceLang,autoMode:"false",widgetId:"atfp_yandex_translate_element",widgetTheme:"light"},e.yt=e.yt||{},t.targetLang,t.translateStatusHandler,t.modalRenderId)};class w{static Object=t=>new this(t).extraData();constructor(t){this.btnSelector=t.btnSelector||!1,this.btnClass=t.btnClass||!1,this.btnText=t.btnText||`Translate To ${t.targetLanguageLabel} (Beta)`,this.stringSelector=t.stringSelector||!1,this.progressBarSelector=t.progressBarSelector||!1,this.onStartTranslationProcess=t.onStartTranslationProcess||(()=>{}),this.onComplete=t.onComplete||(()=>{}),this.onLanguageError=t.onLanguageError||(()=>{}),this.onBeforeTranslate=t.onBeforeTranslate||(()=>{}),this.onAfterTranslate=t.onAfterTranslate||(()=>{}),this.sourceLanguage=t.sourceLanguage||"en",this.targetLanguage=t.targetLanguage||"hi",this.targetLanguageLabel=t.targetLanguageLabel||"Hindi",this.sourceLanguageLabel=t.sourceLanguageLabel||"English"}extraData=async()=>{const t=await w.languageSupportedStatus(this.sourceLanguage,this.targetLanguage,this.targetLanguageLabel,this.sourceLanguageLabel);return!0!==t?(this.onLanguageError(t),{}):(this.defaultLang=this.targetLanguage,{continueTranslation:this.continueTranslation,stopTranslation:this.stopTranslation,startTranslation:this.startTranslation,reInit:this.reInit,init:this.init})};static languageSupportedStatus=async(t,e,a,n)=>{const o=["en","es","ja","ar","de","bn","fr","hi","it","ko","nl","pl","pt","ru","th","tr","vi","zh","zh-hant","bg","cs","da","el","fi","hr","hu","id","iw","lt","no","ro","sk","sl","sv","uk","kn","ta","te","mr"].map(t=>t.toLowerCase()),r="https:"===window.location.protocol,s=window?.isSecureContext;if(!window.hasOwnProperty("chrome")||!navigator.userAgent.includes("Chrome")||navigator.userAgent.includes("Edg"))return jQuery('<span style="color: #ff4646; display: inline-block;">\n                <strong>Important Notice:</strong>\n                <ol>\n                    <li>The Translator API, which leverages Chrome local AI models, is designed specifically for use with the Chrome browser.</li>\n                    <li>For comprehensive information about the Translator API, <a href="https://developer.chrome.com/docs/ai/translator-api" target="_blank">click here</a>.</li>\n                </ol>\n                <p>Please ensure you are using the Chrome browser for optimal performance and compatibility.</p>\n            </span>');if(!("translation"in self&&"createTranslator"in self.translation||"ai"in self&&"translator"in self.ai||"Translator"in self&&"create"in self.Translator||r||s))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <strong>Important Notice:</strong>\n                <ol>\n                    <li>\n                        The Translator API is not functioning due to an insecure connection.\n                    </li>\n                    <li>\n                        Please switch to a secure connection (HTTPS) or add this URL to the list of insecure origins treated as secure by visiting \n                        <span data-clipboard-text="chrome://flags/#unsafely-treat-insecure-origin-as-secure" target="_blank" class="chrome-ai-translator-flags">\n                            chrome://flags/#unsafely-treat-insecure-origin-as-secure ${w.svgIcons("copy")}\n                        </span>.\n                        Click on the URL to copy it, then open a new window and paste this URL to access the settings.\n                    </li>\n                </ol>\n            </span>`);if(!("translation"in self&&"createTranslator"in self.translation||"ai"in self&&"translator"in self.ai||"Translator"in self&&"create"in self.Translator))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Steps to Enable the Translator AI Modal:</h4>\n                <ol>\n                    <li>Open this URL in a new Chrome tab: <strong><span data-clipboard-text="chrome://flags/#translation-api" target="_blank" class="chrome-ai-translator-flags">chrome://flags/#translation-api ${w.svgIcons("copy")}</span></strong>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>Ensure that the <strong>Experimental translation API</strong> option is set to <strong>Enabled</strong>.</li>\n                    <li>Click on the <strong>Save</strong> button to apply the changes.</li>\n                    <li>The Translator AI modal should now be enabled and ready for use.</li>\n                </ol>\n                <p>For more information, please refer to the <a href="https://developer.chrome.com/docs/ai/translator-api" target="_blank">documentation</a>.</p>   \n                <p>If the issue persists, please ensure that your browser is up to date and restart your browser.</p>\n                <p>If you continue to experience issues after following the above steps, please <a href="https://my.coolplugins.net/account/support-tickets/" target="_blank" rel="noopener">open a support ticket</a> with our team. We are here to help you resolve any problems and ensure a smooth translation experience.</p>\n            </span>`);if(!o.includes(e.toLowerCase()))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <strong>Language Support Information:</strong>\n                <ol>\n                    <li>The current version of Chrome AI Translator does not support the Target Language <strong>${a} (${e})</strong></li>\n                    <li>To view the list of supported languages, please <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">chrome://on-device-translation-internals ${w.svgIcons("copy")}</span>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>Ensure your Chrome browser is updated to the latest version for optimal performance.</li>\n                </ol>\n            </span>`);if(!o.includes(t.toLowerCase()))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <strong>Language Support Information:</strong>\n                <ol>\n                    <li>The current version of Chrome AI Translator does not support the Source Language <strong>${n} (${t})</strong></li>\n                    <li>To view the list of supported languages, please <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">chrome://on-device-translation-internals ${w.svgIcons("copy")}</span>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>Ensure your Chrome browser is updated to the latest version for optimal performance.</li>\n                </ol>\n            </span>`);const l=await w.languagePairAvality(t,e);return"after-download"===l||"downloadable"===l||"unavailable"===l?jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Installation Instructions for Language Packs:</h4>\n                <ol>\n                    <li>\n                        To proceed, please install the language pack for <strong>${a} (${e})</strong> or <strong>${n} (${t})</strong>.\n                    </li>\n                    <li>\n                        After installing the language pack, add this language to your browser's system languages in Chrome settings.<br>\n                        Go to <strong>Settings &gt; Languages &gt; Add languages</strong> and add <strong>${a}</strong> or <strong>${n}</strong> to your preferred languages list & reload the page.\n                    </li>\n                    <li>\n                        You can install it by visiting the following link: \n                        <strong>\n                            <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">\n                                chrome://on-device-translation-internals ${w.svgIcons("copy")}\n                            </span>\n                        </strong>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.\n                    </li>\n                    <li>\n                        Please check if both your source <strong>(<span style="color:#2271b1">${t}</span>)</strong> and target <strong>(<span style="color:#2271b1">${e}</span>)</strong> languages are available in the language packs list.\n                    </li>\n                    <li>\n                        You need to install both language packs for translation to work. You can search for each language by its language code: <strong>${t}</strong> and <strong>${e}</strong>.\n                    </li>\n                    <li>For more help, refer to the <a href="https://developer.chrome.com/docs/ai/translator-api#supported-languages" target="_blank">documentation to check supported languages</a>.</li>\n                </ol>\n            </span>`):"downloading"===l?jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Language Pack Download In Progress:</h4>\n                <ol>\n                    <li>\n                        The language pack for <strong>${a} (${e})</strong> or <strong>${n} (${t})</strong> is already being downloaded.\n                    </li>\n                    <li>\n                        <strong>You do not need to start the download again.</strong> Please wait for the download to complete. Once finished, the translation feature will become available automatically.\n                    </li>\n                    <li>\n                        You can check the download progress by opening:\n                        <strong>\n                            <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">\n                                chrome://on-device-translation-internals ${w.svgIcons("copy")}\n                            </span>\n                        </strong>\n                        . Click on the URL to copy it, then open a new window and paste this URL in Chrome to view the status.\n                    </li>\n                    <li>\n                        <strong>What to do next:</strong>\n                        <ul style="margin-top: .5em;">\n                            <li>Wait for the download to finish. The status will change to <strong>Ready</strong> or <strong>Installed</strong> in the <strong>Language Packs</strong> section.</li>\n                            <li>After the language pack is installed, you may need to <strong>reload</strong> or <strong>restart</strong> your browser for the changes to take effect.</li>\n                        </ul>\n                    </li>\n                    <li>\n                        For more help, refer to the <a href="https://developer.chrome.com/docs/ai/translator-api#supported-languages" target="_blank">documentation to check supported languages</a>.\n                    </li>\n                </ol>\n                <div style="text-align: right;">\n                    <button onclick="location.reload()" class="atfp-error-reload-btn">Reload Page</button>\n                </div>\n            </span>`):"readily"===l||"available"===l||jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Language Pack Installation Required</h4>\n                <ol>\n                    <li>Please ensure that the language pack for <strong>${a} (${e})</strong> or <strong>${n} (${t})</strong> is installed and set as a preferred language in your browser.</li>\n                    <li>To install the language pack, visit <strong><span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">chrome://on-device-translation-internals ${w.svgIcons("copy")}</span></strong>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>If you encounter any issues, please refer to the <a href="https://developer.chrome.com/docs/ai/translator-api#supported-languages" target="_blank">documentation to check supported languages</a> for further assistance.</li>\n                </ol>\n            </span>`)};static languagePairAvality=async(t,e)=>{let a=!1;if("translation"in self&&"createTranslator"in self.translation)a=await self.translation.canTranslate({sourceLanguage:t,targetLanguage:e});else if("ai"in self&&"translator"in self.ai){const n=await self.ai.translator.capabilities();a=await n.languagePairAvailable(t,e)}else"Translator"in self&&"create"in self.Translator&&(a=await self.Translator.availability({sourceLanguage:t,targetLanguage:e}));if((!a||["unavailable","downloading","after-download","downloadable"].includes(a))&&window?.self?.Translator)try{await self.Translator.create({sourceLanguage:t,targetLanguage:e,monitor(t){t.addEventListener("downloadprogress",t=>{console.log(`Downloaded ${100*t.loaded}%`)})}}),a=await(window?.self?.Translator?.availability({sourceLanguage:t,targetLanguage:e}))}catch(t){console.log("err",t)}return a};AITranslator=async t=>"translation"in self&&"createTranslator"in self.translation?await self.translation.createTranslator({sourceLanguage:this.sourceLanguage,targetLanguage:t}):"ai"in self&&"translator"in self.ai?await self.ai.translator.create({sourceLanguage:this.sourceLanguage,targetLanguage:t}):"Translator"in self&&"create"in self.Translator&&await self.Translator.create({sourceLanguage:this.sourceLanguage,targetLanguage:t});init=async()=>{this.appendBtn(),this.translationStart=!1,this.completedTranslateIndex=0,this.completedCharacterCount=0,this.translateBtnEvents(),this.progressBarSelector&&this.addProgressBar()};appendBtn=()=>{this.translateBtn=jQuery(`<button class="button button-primary${this.btnClass?" "+this.btnClass:""}">${this.btnText}</button>`),jQuery(this.btnSelector).append(this.translateBtn)};formatCharacterCount=t=>t>=1e6?(t/1e6).toFixed(1)+"M":t>=1e3?(t/1e3).toFixed(1)+"K":t;translateBtnEvents=t=>this.btnSelector&&0!==jQuery(this.btnSelector).length?this.stringSelector&&0!==jQuery(this.stringSelector).length?(this.translateStatus=!0,this.translateBtn.off("click"),this.translateBtn.prop("disabled",!1),void(this.translationStart?this.translateStringEle.length>this.completedTranslateIndex+1?this.translateBtn.on("click",()=>{this.onStartTranslationProcess(),this.stringTranslation(this.completedTranslateIndex+1)}):(this.onComplete({translatedStringsCount:this.completedCharacterCount}),this.translateBtn.prop("disabled",!0)):this.translateBtn.on("click",this.startTranslationProcess))):this.onLanguageError("The string selector is missing. Please provide a valid selector for the strings to be translated."):this.onLanguageError("The button selector is missing. Please provide a valid selector for the button.");startTranslationProcess=async()=>{this.onStartTranslationProcess();const t=this.defaultLang;this.translationStart=!0,this.translateStringEle=jQuery(this.stringSelector),this.totalStringCount=Array.from(this.translateStringEle).map(t=>t.innerText.length).reduce((t,e)=>t+e,0),this.translator=await this.AITranslator(t),this.translateStringEle.length>0&&await this.stringTranslation(this.completedTranslateIndex)};stringTranslation=async t=>{if(!this.translateStatus)return;const e=this.translateStringEle[t];this.onBeforeTranslate(e);const a=e.innerText;let n=[];(e.childNodes.length>0&&!e.querySelector(".notranslate")||e.querySelector(".notranslate"))&&e.childNodes.forEach(t=>{3===t.nodeType&&""!==t.nodeValue.trim()&&n.push(t)}),n.length>0&&await this.stringTranslationBatch(n,0),this.completedCharacterCount+=a.length,this.completedTranslateIndex=t,this.progressBarSelector&&this.updateProgressBar(),this.onAfterTranslate(e),this.translateStringEle.length>t+1&&await this.stringTranslation(this.completedTranslateIndex+1),t===this.translateStringEle.length-1&&(this.translateBtn.prop("disabled",!0),this.onComplete({characterCount:this.completedCharacterCount}),jQuery(this.progressBarSelector).find(".chrome-ai-translator-strings-count").show().find(".totalChars").text(this.formatCharacterCount(this.completedCharacterCount)))};stringTranslationBatch=async(t,e)=>{const a=await this.translator.translate(t[e].nodeValue);return a&&""!==a&&(t[e].nodeValue=a),e<t.length-1&&await this.stringTranslationBatch(t,e+1),!0};addProgressBar=()=>{if(!document.querySelector("#chrome-ai-translator-modal .chrome-ai-translator_progress_bar")){const t=jQuery('\n                <div class="chrome-ai-translator_progress_bar" style="background-color: #f3f3f3;border-radius: 10px;overflow: hidden;margin: 1.5rem auto; width: 50%;">\n                <div class="chrome-ai-translator_progress" style="overflow: hidden;transition: width .5s ease-in-out; border-radius: 10px;text-align: center;width: 0%;height: 20px;box-sizing: border-box;background-color: #4caf50; color: #fff; font-weight: 600;"></div>\n                </div>\n                <div style="display:none; color: white;" class="chrome-ai-translator-strings-count hidden">\n                    Wahooo! You have saved your valuable time via auto translating \n                    <strong class="totalChars">0</strong> characters using \n                    <strong>\n                        Chrome AI Translator\n                    </strong>\n                </div>\n            ');jQuery(this.progressBarSelector).append(t)}};updateProgressBar=()=>{const t=this.completedCharacterCount/this.totalStringCount*1e3/10;let e=t.toString().split(".")[1]||"";e=e.length>0&&"0"!==e[0]?e[0]:"";const a=parseInt(t)+""+(""!==e?"."+e:"");jQuery(".chrome-ai-translator_progress").css({width:`${a}%`}).text(`${a}%`)};stopTranslation=()=>{this.translateStatus=!1};reInit=()=>{this.translateBtnEvents()};startTranslation=()=>{this.translateStatus=!0,this.startTranslationProcess(this.completedTranslateIndex+1)};static svgIcons=t=>({copy:'<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="16px" width="16px" xmlns="http://www.w3.org/2000/svg" fill="#2271b1"><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"></path></svg>'}[t]||"")}const T=w,v=async t=>{const e=atfp_global_object.languageObject[t.targetLang].name,a=atfp_global_object.languageObject[t.sourceLang].name,n=(0,l.select)("block-atfp/translate").getAllowedMetaFields(),{translateStatusHandler:o,translateStatus:r}=t;let s=0;const c=await T.Object({mainWrapperSelector:"#atfp_strings_model",btnSelector:`#${t.ID}`,btnClass:"local_ai_translator_btn",btnText:(0,i.__)("Translate To","autopoly-ai-translation-for-polylang")+" "+e+" (Beta)",stringSelector:".atfp_string_container tbody tr td.translate:not([data-translate-status='translated'])",progressBarSelector:"#atfp_strings_model .atfp_translate_progress",sourceLanguage:t.sourceLang,targetLanguage:t.targetLang,targetLanguageLabel:e,sourceLanguageLabel:a,onStartTranslationProcess:()=>{s=(new Date).getTime(),jQuery("#atfp_strings_model .modal-content .atfp_string_container")[0].scrollHeight>100&&jQuery("#atfp_strings_model .atfp_translate_progress").fadeIn("slow")},onComplete:()=>{g({prefix:"localAiTranslator",start:s,end:(new Date).getTime(),translateStatus:!0}),setTimeout(()=>{o(!1),jQuery("#atfp_strings_model .atfp_translate_progress").fadeOut("slow")},4e3)},onBeforeTranslate:t=>{const e=jQuery("#atfp_strings_model .modal-content .atfp_string_container");if(e.length<1)return c.stopTranslation(),g({prefix:"localAiTranslator",start:s,end:(new Date).getTime()}),void(s=0);const a=e[0].getBoundingClientRect(),n=t.closest("tr").offsetTop,o=e.height();var r;n>o+a.y&&(r=n-o+t.offsetHeight,e.scrollTop(r))},onAfterTranslate:t=>{const e=t.innerText,a=t.dataset.stringType,o=t.dataset.key,r=t.closest("tr").querySelector('td[data-source="source_text"]').innerText;u({type:a,key:o,translateContent:e,source:r,provider:"localAiTranslator",AllowedMetaFields:n});const s=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData?.localAiTranslator,i=s&&s.targetStringCount?s.targetStringCount:0,c=s&&s.targetWordCount?s.targetWordCount:0,p=s&&s.targetCharacterCount?s.targetCharacterCount:0;""!==e.trim()&&e.trim().length>0&&(0,l.dispatch)("block-atfp/translate").translationInfo({targetStringCount:i+r.trim().split(/(?<=[.!?]+)\s+/).length,targetWordCount:c+r.trim().split(/\s+/).filter(t=>/[^\p{L}\p{N}]/.test(t)).length,targetCharacterCount:p+r.trim().length,provider:"localAiTranslator"})}});if(c.hasOwnProperty("init")){c.init();const t=document.querySelector("#atfp_localAiTranslator_translate_element .local_ai_translator_btn");t&&r&&(t.disabled=r)}},E=t=>{t=t||{};const{Service:e=!1,openErrorModalHandler:a=()=>{}}=t,n=(window.atfp_global_object.admin_url,window.atfp_global_object.atfp_url+"assets/images/error-icon.svg"),o={yandex:{Provider:b,title:"Yandex Translate",SettingBtnText:"Translate",serviceLabel:"Yandex Translate",Docs:"https://docs.coolplugins.net/doc/yandex-translate-for-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_yandex",heading:(0,i.__)("Choose Language","autopoly-ai-translation-for-polylang"),BetaEnabled:!1,ButtonDisabled:t.yandexButtonDisabled,ErrorMessage:t.yandexButtonDisabled?React.createElement("div",{className:"atfp-provider-error button button-primary",onClick:()=>a("yandex")},React.createElement("img",{src:n,alt:"error"})," ",(0,i.__)("View Error","autopoly-ai-translation-for-polylang")):React.createElement(React.Fragment,null),Logo:"yandex.png"},localAiTranslator:{Provider:v,title:"Chrome Built-in AI",SettingBtnText:"Translate",serviceLabel:"Chrome AI Translator",heading:(0,i.sprintf)((0,i.__)("Translate Using %s","autopoly-ai-translation-for-polylang"),"Chrome built-in API"),Docs:"https://docs.coolplugins.net/doc/chrome-ai-translation-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_chrome",BetaEnabled:!0,ButtonDisabled:t.localAiTranslatorButtonDisabled,ErrorMessage:t.localAiTranslatorButtonDisabled?React.createElement("div",{className:"atfp-provider-error button button-primary",onClick:()=>a("localAiTranslator")},React.createElement("img",{src:n,alt:"error"})," ",(0,i.__)("View Error","autopoly-ai-translation-for-polylang")):React.createElement(React.Fragment,null),Logo:"chrome.png"},google:{title:"Google Translate",SettingBtnText:"Translate",serviceLabel:"Google Translate",Docs:"https://docs.coolplugins.net/doc/google-translate-for-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_google",heading:(0,i.__)("Choose Language","autopoly-ai-translation-for-polylang"),BetaEnabled:!1,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_google",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"google.png"},openai_ai:{title:"OpenAI Model",SettingBtnText:"Translate",serviceLabel:"OpenAI",heading:(0,i.sprintf)((0,i.__)("Translate Using %s Model","autopoly-ai-translation-for-polylang"),"OpenAI"),Docs:"https://docs.coolplugins.net/doc/translate-via-open-ai-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_openai",BetaEnabled:!0,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_openai",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"openai.png"},google_ai:{title:"Gemini Model",SettingBtnText:"Translate",serviceLabel:"Gemini",heading:(0,i.sprintf)((0,i.__)("Translate Using %s Model","autopoly-ai-translation-for-polylang"),"Gemini"),Docs:"https://docs.coolplugins.net/doc/translate-via-gemini-ai-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_gemini",BetaEnabled:!0,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_gemini",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"gemini.png"},deepl_ai:{title:"DeepL Model",SettingBtnText:"Translate",serviceLabel:"DeepL",heading:(0,i.sprintf)((0,i.__)("Translate Using %s Model","autopoly-ai-translation-for-polylang"),"DeepL"),Docs:"https://docs.coolplugins.net/doc/translate-via-deepl-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_deepl",BetaEnabled:!0,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_deepl",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"deepl.png"}};return e?o[e]:o},S=t=>{const{service:e}=t,a=(0,l.select)("block-atfp/translate").getTranslationEntry(),n=t.stringModalBodyNotice;return(0,p.useEffect)(()=>{["yandex"].includes(t.service)&&(document.documentElement.setAttribute("translate","no"),document.body.classList.add("notranslate"));const e=t.service,a=`atfp_${e}_translate_element`;wp.data.select("block-atfp/translate").getTranslationEntry().length>0&&t.postDataFetchStatus&&E({Service:e}).Provider({sourceLang:t.sourceLang,targetLang:t.targetLang,translateStatusHandler:t.translateStatusHandler,ID:a,translateStatus:t.translateStatus,modalRenderId:t.modalRender,destroyUpdateHandler:t.updateDestroyHandler})},[t.modalRender,t.postDataFetchStatus]),React.createElement("div",{className:"modal-body"},a.length>0&&t.postDataFetchStatus?React.createElement(React.Fragment,null,n&&React.createElement("div",{className:"atfp-body-notice-wrapper"},React.createElement(n,null)),React.createElement("div",{className:"atfp_translate_progress",key:t.modalRender},(0,i.__)("Automatic translation is in progress....","autopoly-ai-translation-for-polylang"),React.createElement("br",null),(0,i.__)("It will take few minutes, enjoy ☕ coffee in this time!","autopoly-ai-translation-for-polylang"),React.createElement("br",null),React.createElement("br",null),(0,i.__)("Please do not leave this window or browser tab while translation is in progress...","autopoly-ai-translation-for-polylang")),React.createElement("div",{className:`translator-widget ${e}`,style:{display:"flex"}},React.createElement("h3",{className:"choose-lang"},E({Service:t.service}).heading," ",React.createElement("span",{className:"dashicons-before dashicons-translation"})),React.createElement("div",{className:"atfp_translate_element_wrapper "+(t.translateStatus?"translate-completed":"")},React.createElement("div",{id:`atfp_${t.service}_translate_element`}))),React.createElement("div",{className:"atfp_string_container"},React.createElement("table",{className:"scrolldown",id:"stringTemplate"},React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",{className:"notranslate"},(0,i.__)("S.No","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Source Text","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Translation","autopoly-ai-translation-for-polylang")))),React.createElement("tbody",null,t.postDataFetchStatus&&React.createElement(React.Fragment,null,a.map((e,a)=>React.createElement(s.Fragment,{key:a+t.translatePendingStatus},void 0!==e.source&&""!==e.source.trim()&&React.createElement(React.Fragment,null,React.createElement("tr",{key:a+"tr"+t.translatePendingStatus},React.createElement("td",null,a+1),React.createElement("td",{"data-source":"source_text"},e.source),t.translatePendingStatus?React.createElement("td",{className:"translate",translate:"yes","data-key":e.id,"data-string-type":e.type},React.createElement(d,{service:t.service,content:e.source,contentKey:e.id})):React.createElement("td",{className:"translate","data-translate-status":"translated","data-key":e.id,"data-string-type":e.type},e.translatedData[t.service])))))))))):t.postDataFetchStatus?React.createElement("p",null,(0,i.__)("No strings are available for translation","autopoly-ai-translation-for-polylang")):React.createElement("div",{className:"atfp-skeleton-loader-wrapper"},React.createElement("div",{className:"translate-widget"},React.createElement("div",{className:"atfp-skeleton-loader-mini"}),React.createElement("div",{className:"atfp-skeleton-loader-mini"})),React.createElement("table",null,React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",{className:"notranslate"},(0,i.__)("S.No","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Source Text","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Translation","autopoly-ai-translation-for-polylang")))),React.createElement("tbody",null,[...Array(10)].map((t,e)=>React.createElement("tr",{key:e},React.createElement("td",null,React.createElement("div",{className:"atfp-skeleton-loader-mini"})),React.createElement("td",null,React.createElement("div",{className:"atfp-skeleton-loader-mini"})),React.createElement("td",null,React.createElement("div",{className:"atfp-skeleton-loader-mini"}))))))))},k=t=>React.createElement("div",{className:`notice inline notice-info is-dismissible ${t.className}`},Array.isArray(t.children)?t.children.join(" "):t.children),C=t=>React.createElement("div",{className:"modal-footer",key:t.modalRender},!t.translatePendingStatus&&React.createElement(k,{className:"atfp_string_count"},React.createElement("p",null,(0,i.__)("Wahooo! You have saved your valuable time via auto translating","autopoly-ai-translation-for-polylang")," ",React.createElement("strong",null,React.createElement(m,{number:t.characterCount}))," ",(0,i.__)("characters using","autopoly-ai-translation-for-polylang")," ",React.createElement("strong",null,t.serviceLabel),".",(0,i.__)("Please share your feedback —","autopoly-ai-translation-for-polylang"),React.createElement("a",{href:"https://wordpress.org/support/plugin/automatic-translations-for-polylang/reviews/#new-post",target:"_blank",rel:"noopener",style:{color:"yellow"}},(0,i.__)("leave a quick review","autopoly-ai-translation-for-polylang")),"!")),React.createElement("div",{className:"save_btn_cont"},React.createElement("button",{className:"notranslate save_it button button-primary",disabled:t.translatePendingStatus,onClick:t.updatePostData},t.translateButtonStatus?React.createElement(React.Fragment,null,React.createElement("span",{className:"updating-text"},(0,i.__)("Updating","autopoly-ai-translation-for-polylang"),React.createElement("span",{className:"dot",style:{"--i":0}}),React.createElement("span",{className:"dot",style:{"--i":1}}),React.createElement("span",{className:"dot",style:{"--i":2}}))):(0,i.__)("Update Content","autopoly-ai-translation-for-polylang"))));function R(){return R=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)({}).hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},R.apply(null,arguments)}const x=t=>{let e=t.service;const a=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[e]||!1,n=a?.translateStatus||!1,[o,r]=(0,s.useState)(!0),[i,p]=(0,s.useState)(""),[d,u]=(0,s.useState)(!0),[g,m]=(0,s.useState)(a?.targetCharacterCount||0),[f,h]=(0,s.useState)([]),[_,y]=(0,s.useState)(!1),b=t=>{h(e=>[...e,t])};(0,s.useEffect)(()=>{o||f.length>0&&f.forEach(t=>{"function"==typeof t&&t()})},[o,f]);const w=()=>{const e=t.service;return"localAiTranslator"===e?"Chrome AI Translator":e.replace(/^\w/,t=>t.toUpperCase())+" Translate"};(0,s.useEffect)(()=>{t.postDataFetchStatus||t.fetchPostData({postId:t.postId,sourceLang:t.sourceLang,targetLang:t.targetLang,updatePostDataFetch:t.updatePostDataFetch,refPostData:t=>p(e=>({...e,...t})),updateDestroyHandler:b})},[t.postDataFetchStatus,t.modalRender]);const T=e=>{"yandex"===t.service&&document.querySelector("#atfp_yandex_translate_element #yt-widget .yt-button__icon.yt-button__icon_type_right")?.click(),u(!0),r(!1)},v=()=>{if(_)return;const e=i;let a=t.service;y(!0),t.translatePost({postContent:e,modalClose:()=>{r(!1),T()},service:a}),t.pageTranslate(!0),(({provider:t,sourceLang:e,targetLang:a,postId:n})=>{const o=(0,l.select)("block-atfp/translate").getTranslationInfo(),r=o.translateData?.[t]?.targetStringCount||0,s=o.translateData?.[t]?.targetWordCount||0,i=o.translateData?.[t]?.targetCharacterCount||0,c=o.translateData?.[t]?.timeTaken||0,p=o?.sourceWordCount||0,d=o?.sourceCharacterCount||0,u=o?.sourceStringCount||0,g={provider:t,totalStringCount:r,totalWordCount:s,totalCharacterCount:i,editorType:atfp_global_object.editor_type,date:(new Date).toISOString(),sourceStringCount:u,sourceWordCount:p,sourceCharacterCount:d,sourceLang:e,targetLang:a,timeTaken:c,action:atfp_global_object.update_translate_data,atfp_nonce:atfp_global_object.ajax_nonce,post_id:n};fetch(atfp_global_object.ajax_url,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(g)}).then().catch(t=>{console.error(t)})})({provider:a,sourceLang:t.sourceLang,targetLang:t.targetLang,postId:t.currentPostId})};return(0,s.useEffect)(()=>{r(!0),n&&(m(a?.targetCharacterCount||0),u(!1)),setTimeout(()=>{const t=document.querySelector(".atfp_string_container");t&&(t.scrollTop=0)})},[t.modalRender]),React.createElement(React.Fragment,null," ",o&&React.createElement("div",{id:`atfp-${t.service}-strings-modal`,className:"modal-container",style:{display:o?"flex":"none"},"data-render-id":t.modalRender},React.createElement("div",{className:"modal-content"},React.createElement(c,{modalRender:t.modalRender,setPopupVisibility:T,postContent:i,translatePendingStatus:d,pageTranslate:t.pageTranslate,service:t.service,serviceLabel:w(),updatePostData:v,characterCount:g,translateButtonStatus:_}),React.createElement(S,R({},t,{updatePostContent:t=>{p(t)},contentLoading:t.contentLoading,postDataFetchStatus:t.postDataFetchStatus,translatePendingStatus:d,service:t.service,sourceLang:t.sourceLang,targetLang:t.targetLang,translateStatusHandler:e=>{let a=t.service;const n=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[a]?.targetCharacterCount||0;m(n),u(e)},modalRender:t.modalRender,translateStatus:n,stringModalBodyNotice:t.stringModalBodyNotice,updateDestroyHandler:b})),React.createElement(C,{modalRender:t.modalRender,setPopupVisibility:T,postContent:i,translatePendingStatus:d,pageTranslate:t.pageTranslate,service:t.service,serviceLabel:w(),updatePostData:v,characterCount:g,translateButtonStatus:_}))))},L=({setSettingVisibility:t})=>React.createElement("div",{className:"modal-header"},React.createElement("h2",null,(0,i.__)("Step 1 - Select Translation Provider","autopoly-ai-translation-for-polylang")),React.createElement("span",{className:"close",onClick:()=>t(!1)},"×")),A=t=>{const e=t.Service,a=t[e+"Disabled"],n=E({Service:e,[e+"ButtonDisabled"]:a,openErrorModalHandler:t.openErrorModalHandler}),o=`atfp-${e.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/[^a-z0-9-]/g,"")}-btn`;return React.createElement("tr",null,React.createElement("td",{className:"atfp-provider-name"},React.createElement("img",{src:`${t.imgFolder}${n.Logo}`,alt:n.title}),React.createElement("span",null,n.title)),React.createElement("td",null,n.ButtonDisabled?n.ErrorMessage:React.createElement("div",{id:o,onClick:t.fetchContent,className:"atfp-service-btn button button-primary","data-service":e,"data-service-label":n.ServiceLabel},n.SettingBtnText)),React.createElement("td",null,React.createElement("a",{href:n.Docs,target:"_blank",rel:"noopener noreferrer",className:"atfp-doc-icon"},React.createElement("svg",{width:"9",height:"12",viewBox:"0 0 9 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("path",{d:"M2.17607 6.20533H6.82393V5.53867H2.17607V6.20533ZM2.17607 8.05133H6.82393V7.38467H2.17607V8.05133ZM2.17607 9.898H4.89536V9.23133H2.17607V9.898ZM1.03821 12C0.7425 12 0.495643 11.8973 0.297643 11.692C0.0996427 11.4867 0.000428571 11.2304 0 10.9233V1.07667C0 0.77 0.0992142 0.514 0.297643 0.308667C0.496071 0.103333 0.743143 0.000444444 1.03886 0H6.10714L9 3V10.9233C9 11.23 8.901 11.4862 8.703 11.692C8.505 11.8978 8.25771 12.0004 7.96114 12H1.03821ZM5.78571 3.33333V0.666667H1.03886C0.939857 0.666667 0.849 0.709333 0.766286 0.794666C0.683571 0.88 0.642429 0.974 0.642857 1.07667V10.9233C0.642857 11.0256 0.684 11.1196 0.766286 11.2053C0.848571 11.2911 0.939214 11.3338 1.03821 11.3333H7.96179C8.06036 11.3333 8.151 11.2907 8.23371 11.2053C8.31643 11.12 8.35757 11.0258 8.35714 10.9227V3.33333H5.78571Z",fill:"#6F6F6F"})))))};function N(){return N=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)({}).hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},N.apply(null,arguments)}const D=t=>{const e=E();return React.createElement("div",{className:"atfp-setting-modal-body"},React.createElement("div",{className:"atfp-setting-modal-notice-wrapper"}),React.createElement("table",null,React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",null,"Name"),React.createElement("th",null,"Translate"),React.createElement("th",null,"Docs"))),React.createElement("tbody",null,Object.keys(e).map(e=>React.createElement(A,N({key:e},t,{Service:e}))))))},I=t=>{const{targetLangName:e,postType:a,sourceLangName:n,setSettingVisibility:o}=t;return React.createElement("div",{className:"modal-footer"},React.createElement("p",{className:"atfp-error-message",style:{marginBottom:".5rem"}},sprintf((0,i.__)("This will replace your current %(postType)s with a %(target)s translation of the original %(source)s content.","autopoly-ai-translation-for-polylang"),{postType:a,source:n,target:e})),React.createElement("button",{className:"atfp-setting-close button button-primary",onClick:()=>o(!1)},(0,i.__)("Close","autopoly-ai-translation-for-polylang")))},{entries:j,setPrototypeOf:O,isFrozen:$,getPrototypeOf:P,getOwnPropertyDescriptor:M}=Object;let{freeze:F,seal:B,create:H}=Object,{apply:U,construct:z}="undefined"!=typeof Reflect&&Reflect;F||(F=function(t){return t}),B||(B=function(t){return t}),U||(U=function(t,e){for(var a=arguments.length,n=new Array(a>2?a-2:0),o=2;o<a;o++)n[o-2]=arguments[o];return t.apply(e,n)}),z||(z=function(t){for(var e=arguments.length,a=new Array(e>1?e-1:0),n=1;n<e;n++)a[n-1]=arguments[n];return new t(...a)});const W=rt(Array.prototype.forEach),q=rt(Array.prototype.lastIndexOf),V=rt(Array.prototype.pop),Q=rt(Array.prototype.push),G=rt(Array.prototype.splice),Y=rt(String.prototype.toLowerCase),X=rt(String.prototype.toString),J=rt(String.prototype.match),K=rt(String.prototype.replace),Z=rt(String.prototype.indexOf),tt=rt(String.prototype.trim),et=rt(Object.prototype.hasOwnProperty),at=rt(RegExp.prototype.test),nt=(ot=TypeError,function(){for(var t=arguments.length,e=new Array(t),a=0;a<t;a++)e[a]=arguments[a];return z(ot,e)});var ot;function rt(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var a=arguments.length,n=new Array(a>1?a-1:0),o=1;o<a;o++)n[o-1]=arguments[o];return U(t,e,n)}}function st(t,e){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Y;O&&O(t,null);let n=e.length;for(;n--;){let o=e[n];if("string"==typeof o){const t=a(o);t!==o&&($(e)||(e[n]=t),o=t)}t[o]=!0}return t}function lt(t){for(let e=0;e<t.length;e++)et(t,e)||(t[e]=null);return t}function it(t){const e=H(null);for(const[a,n]of j(t))et(t,a)&&(Array.isArray(n)?e[a]=lt(n):n&&"object"==typeof n&&n.constructor===Object?e[a]=it(n):e[a]=n);return e}function ct(t,e){for(;null!==t;){const a=M(t,e);if(a){if(a.get)return rt(a.get);if("function"==typeof a.value)return rt(a.value)}t=P(t)}return function(){return null}}const pt=F(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),dt=F(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),ut=F(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),gt=F(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),mt=F(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),ft=F(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),ht=F(["#text"]),_t=F(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),yt=F(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),bt=F(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),wt=F(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Tt=B(/\{\{[\w\W]*|[\w\W]*\}\}/gm),vt=B(/<%[\w\W]*|[\w\W]*%>/gm),Et=B(/\$\{[\w\W]*/gm),St=B(/^data-[\-\w.\u00B7-\uFFFF]+$/),kt=B(/^aria-[\-\w]+$/),Ct=B(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Rt=B(/^(?:\w+script|data):/i),xt=B(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Lt=B(/^html$/i),At=B(/^[a-z][.\w]*(-[.\w]+)+$/i);var Nt=Object.freeze({__proto__:null,ARIA_ATTR:kt,ATTR_WHITESPACE:xt,CUSTOM_ELEMENT:At,DATA_ATTR:St,DOCTYPE_NAME:Lt,ERB_EXPR:vt,IS_ALLOWED_URI:Ct,IS_SCRIPT_OR_DATA:Rt,MUSTACHE_EXPR:Tt,TMPLIT_EXPR:Et});const Dt=function(){return"undefined"==typeof window?null:window};var It=function t(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Dt();const a=e=>t(e);if(a.version="3.3.0",a.removed=[],!e||!e.document||9!==e.document.nodeType||!e.Element)return a.isSupported=!1,a;let{document:n}=e;const o=n,r=o.currentScript,{DocumentFragment:s,HTMLTemplateElement:l,Node:i,Element:c,NodeFilter:p,NamedNodeMap:d=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:u,DOMParser:g,trustedTypes:m}=e,f=c.prototype,h=ct(f,"cloneNode"),_=ct(f,"remove"),y=ct(f,"nextSibling"),b=ct(f,"childNodes"),w=ct(f,"parentNode");if("function"==typeof l){const t=n.createElement("template");t.content&&t.content.ownerDocument&&(n=t.content.ownerDocument)}let T,v="";const{implementation:E,createNodeIterator:S,createDocumentFragment:k,getElementsByTagName:C}=n,{importNode:R}=o;let x={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};a.isSupported="function"==typeof j&&"function"==typeof w&&E&&void 0!==E.createHTMLDocument;const{MUSTACHE_EXPR:L,ERB_EXPR:A,TMPLIT_EXPR:N,DATA_ATTR:D,ARIA_ATTR:I,IS_SCRIPT_OR_DATA:O,ATTR_WHITESPACE:$,CUSTOM_ELEMENT:P}=Nt;let{IS_ALLOWED_URI:M}=Nt,B=null;const U=st({},[...pt,...dt,...ut,...mt,...ht]);let z=null;const ot=st({},[..._t,...yt,...bt,...wt]);let rt=Object.seal(H(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),lt=null,Tt=null;const vt=Object.seal(H(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let Et=!0,St=!0,kt=!1,Rt=!0,xt=!1,At=!0,It=!1,jt=!1,Ot=!1,$t=!1,Pt=!1,Mt=!1,Ft=!0,Bt=!1,Ht=!0,Ut=!1,zt={},Wt=null;const qt=st({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Vt=null;const Qt=st({},["audio","video","img","source","image","track"]);let Gt=null;const Yt=st({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Xt="http://www.w3.org/1998/Math/MathML",Jt="http://www.w3.org/2000/svg",Kt="http://www.w3.org/1999/xhtml";let Zt=Kt,te=!1,ee=null;const ae=st({},[Xt,Jt,Kt],X);let ne=st({},["mi","mo","mn","ms","mtext"]),oe=st({},["annotation-xml"]);const re=st({},["title","style","font","a","script"]);let se=null;const le=["application/xhtml+xml","text/html"];let ie=null,ce=null;const pe=n.createElement("form"),de=function(t){return t instanceof RegExp||t instanceof Function},ue=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!ce||ce!==t){if(t&&"object"==typeof t||(t={}),t=it(t),se=-1===le.indexOf(t.PARSER_MEDIA_TYPE)?"text/html":t.PARSER_MEDIA_TYPE,ie="application/xhtml+xml"===se?X:Y,B=et(t,"ALLOWED_TAGS")?st({},t.ALLOWED_TAGS,ie):U,z=et(t,"ALLOWED_ATTR")?st({},t.ALLOWED_ATTR,ie):ot,ee=et(t,"ALLOWED_NAMESPACES")?st({},t.ALLOWED_NAMESPACES,X):ae,Gt=et(t,"ADD_URI_SAFE_ATTR")?st(it(Yt),t.ADD_URI_SAFE_ATTR,ie):Yt,Vt=et(t,"ADD_DATA_URI_TAGS")?st(it(Qt),t.ADD_DATA_URI_TAGS,ie):Qt,Wt=et(t,"FORBID_CONTENTS")?st({},t.FORBID_CONTENTS,ie):qt,lt=et(t,"FORBID_TAGS")?st({},t.FORBID_TAGS,ie):it({}),Tt=et(t,"FORBID_ATTR")?st({},t.FORBID_ATTR,ie):it({}),zt=!!et(t,"USE_PROFILES")&&t.USE_PROFILES,Et=!1!==t.ALLOW_ARIA_ATTR,St=!1!==t.ALLOW_DATA_ATTR,kt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Rt=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,xt=t.SAFE_FOR_TEMPLATES||!1,At=!1!==t.SAFE_FOR_XML,It=t.WHOLE_DOCUMENT||!1,$t=t.RETURN_DOM||!1,Pt=t.RETURN_DOM_FRAGMENT||!1,Mt=t.RETURN_TRUSTED_TYPE||!1,Ot=t.FORCE_BODY||!1,Ft=!1!==t.SANITIZE_DOM,Bt=t.SANITIZE_NAMED_PROPS||!1,Ht=!1!==t.KEEP_CONTENT,Ut=t.IN_PLACE||!1,M=t.ALLOWED_URI_REGEXP||Ct,Zt=t.NAMESPACE||Kt,ne=t.MATHML_TEXT_INTEGRATION_POINTS||ne,oe=t.HTML_INTEGRATION_POINTS||oe,rt=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&de(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(rt.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&de(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(rt.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(rt.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),xt&&(St=!1),Pt&&($t=!0),zt&&(B=st({},ht),z=[],!0===zt.html&&(st(B,pt),st(z,_t)),!0===zt.svg&&(st(B,dt),st(z,yt),st(z,wt)),!0===zt.svgFilters&&(st(B,ut),st(z,yt),st(z,wt)),!0===zt.mathMl&&(st(B,mt),st(z,bt),st(z,wt))),t.ADD_TAGS&&("function"==typeof t.ADD_TAGS?vt.tagCheck=t.ADD_TAGS:(B===U&&(B=it(B)),st(B,t.ADD_TAGS,ie))),t.ADD_ATTR&&("function"==typeof t.ADD_ATTR?vt.attributeCheck=t.ADD_ATTR:(z===ot&&(z=it(z)),st(z,t.ADD_ATTR,ie))),t.ADD_URI_SAFE_ATTR&&st(Gt,t.ADD_URI_SAFE_ATTR,ie),t.FORBID_CONTENTS&&(Wt===qt&&(Wt=it(Wt)),st(Wt,t.FORBID_CONTENTS,ie)),Ht&&(B["#text"]=!0),It&&st(B,["html","head","body"]),B.table&&(st(B,["tbody"]),delete lt.tbody),t.TRUSTED_TYPES_POLICY){if("function"!=typeof t.TRUSTED_TYPES_POLICY.createHTML)throw nt('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof t.TRUSTED_TYPES_POLICY.createScriptURL)throw nt('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');T=t.TRUSTED_TYPES_POLICY,v=T.createHTML("")}else void 0===T&&(T=function(t,e){if("object"!=typeof t||"function"!=typeof t.createPolicy)return null;let a=null;const n="data-tt-policy-suffix";e&&e.hasAttribute(n)&&(a=e.getAttribute(n));const o="dompurify"+(a?"#"+a:"");try{return t.createPolicy(o,{createHTML:t=>t,createScriptURL:t=>t})}catch(t){return console.warn("TrustedTypes policy "+o+" could not be created."),null}}(m,r)),null!==T&&"string"==typeof v&&(v=T.createHTML(""));F&&F(t),ce=t}},ge=st({},[...dt,...ut,...gt]),me=st({},[...mt,...ft]),fe=function(t){Q(a.removed,{element:t});try{w(t).removeChild(t)}catch(e){_(t)}},he=function(t,e){try{Q(a.removed,{attribute:e.getAttributeNode(t),from:e})}catch(t){Q(a.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t)if($t||Pt)try{fe(e)}catch(t){}else try{e.setAttribute(t,"")}catch(t){}},_e=function(t){let e=null,a=null;if(Ot)t="<remove></remove>"+t;else{const e=J(t,/^[\r\n\t ]+/);a=e&&e[0]}"application/xhtml+xml"===se&&Zt===Kt&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");const o=T?T.createHTML(t):t;if(Zt===Kt)try{e=(new g).parseFromString(o,se)}catch(t){}if(!e||!e.documentElement){e=E.createDocument(Zt,"template",null);try{e.documentElement.innerHTML=te?v:o}catch(t){}}const r=e.body||e.documentElement;return t&&a&&r.insertBefore(n.createTextNode(a),r.childNodes[0]||null),Zt===Kt?C.call(e,It?"html":"body")[0]:It?e.documentElement:r},ye=function(t){return S.call(t.ownerDocument||t,t,p.SHOW_ELEMENT|p.SHOW_COMMENT|p.SHOW_TEXT|p.SHOW_PROCESSING_INSTRUCTION|p.SHOW_CDATA_SECTION,null)},be=function(t){return t instanceof u&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof d)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},we=function(t){return"function"==typeof i&&t instanceof i};function Te(t,e,n){W(t,t=>{t.call(a,e,n,ce)})}const ve=function(t){let e=null;if(Te(x.beforeSanitizeElements,t,null),be(t))return fe(t),!0;const n=ie(t.nodeName);if(Te(x.uponSanitizeElement,t,{tagName:n,allowedTags:B}),At&&t.hasChildNodes()&&!we(t.firstElementChild)&&at(/<[/\w!]/g,t.innerHTML)&&at(/<[/\w!]/g,t.textContent))return fe(t),!0;if(7===t.nodeType)return fe(t),!0;if(At&&8===t.nodeType&&at(/<[/\w]/g,t.data))return fe(t),!0;if(!(vt.tagCheck instanceof Function&&vt.tagCheck(n))&&(!B[n]||lt[n])){if(!lt[n]&&Se(n)){if(rt.tagNameCheck instanceof RegExp&&at(rt.tagNameCheck,n))return!1;if(rt.tagNameCheck instanceof Function&&rt.tagNameCheck(n))return!1}if(Ht&&!Wt[n]){const e=w(t)||t.parentNode,a=b(t)||t.childNodes;if(a&&e)for(let n=a.length-1;n>=0;--n){const o=h(a[n],!0);o.__removalCount=(t.__removalCount||0)+1,e.insertBefore(o,y(t))}}return fe(t),!0}return t instanceof c&&!function(t){let e=w(t);e&&e.tagName||(e={namespaceURI:Zt,tagName:"template"});const a=Y(t.tagName),n=Y(e.tagName);return!!ee[t.namespaceURI]&&(t.namespaceURI===Jt?e.namespaceURI===Kt?"svg"===a:e.namespaceURI===Xt?"svg"===a&&("annotation-xml"===n||ne[n]):Boolean(ge[a]):t.namespaceURI===Xt?e.namespaceURI===Kt?"math"===a:e.namespaceURI===Jt?"math"===a&&oe[n]:Boolean(me[a]):t.namespaceURI===Kt?!(e.namespaceURI===Jt&&!oe[n])&&!(e.namespaceURI===Xt&&!ne[n])&&!me[a]&&(re[a]||!ge[a]):!("application/xhtml+xml"!==se||!ee[t.namespaceURI]))}(t)?(fe(t),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!at(/<\/no(script|embed|frames)/i,t.innerHTML)?(xt&&3===t.nodeType&&(e=t.textContent,W([L,A,N],t=>{e=K(e,t," ")}),t.textContent!==e&&(Q(a.removed,{element:t.cloneNode()}),t.textContent=e)),Te(x.afterSanitizeElements,t,null),!1):(fe(t),!0)},Ee=function(t,e,a){if(Ft&&("id"===e||"name"===e)&&(a in n||a in pe))return!1;if(St&&!Tt[e]&&at(D,e));else if(Et&&at(I,e));else if(vt.attributeCheck instanceof Function&&vt.attributeCheck(e,t));else if(!z[e]||Tt[e]){if(!(Se(t)&&(rt.tagNameCheck instanceof RegExp&&at(rt.tagNameCheck,t)||rt.tagNameCheck instanceof Function&&rt.tagNameCheck(t))&&(rt.attributeNameCheck instanceof RegExp&&at(rt.attributeNameCheck,e)||rt.attributeNameCheck instanceof Function&&rt.attributeNameCheck(e,t))||"is"===e&&rt.allowCustomizedBuiltInElements&&(rt.tagNameCheck instanceof RegExp&&at(rt.tagNameCheck,a)||rt.tagNameCheck instanceof Function&&rt.tagNameCheck(a))))return!1}else if(Gt[e]);else if(at(M,K(a,$,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==Z(a,"data:")||!Vt[t])if(kt&&!at(O,K(a,$,"")));else if(a)return!1;return!0},Se=function(t){return"annotation-xml"!==t&&J(t,P)},ke=function(t){Te(x.beforeSanitizeAttributes,t,null);const{attributes:e}=t;if(!e||be(t))return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:z,forceKeepAttr:void 0};let o=e.length;for(;o--;){const r=e[o],{name:s,namespaceURI:l,value:i}=r,c=ie(s),p=i;let d="value"===s?p:tt(p);if(n.attrName=c,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,Te(x.uponSanitizeAttribute,t,n),d=n.attrValue,!Bt||"id"!==c&&"name"!==c||(he(s,t),d="user-content-"+d),At&&at(/((--!?|])>)|<\/(style|title|textarea)/i,d)){he(s,t);continue}if("attributename"===c&&J(d,"href")){he(s,t);continue}if(n.forceKeepAttr)continue;if(!n.keepAttr){he(s,t);continue}if(!Rt&&at(/\/>/i,d)){he(s,t);continue}xt&&W([L,A,N],t=>{d=K(d,t," ")});const u=ie(t.nodeName);if(Ee(u,c,d)){if(T&&"object"==typeof m&&"function"==typeof m.getAttributeType)if(l);else switch(m.getAttributeType(u,c)){case"TrustedHTML":d=T.createHTML(d);break;case"TrustedScriptURL":d=T.createScriptURL(d)}if(d!==p)try{l?t.setAttributeNS(l,s,d):t.setAttribute(s,d),be(t)?fe(t):V(a.removed)}catch(e){he(s,t)}}else he(s,t)}Te(x.afterSanitizeAttributes,t,null)},Ce=function t(e){let a=null;const n=ye(e);for(Te(x.beforeSanitizeShadowDOM,e,null);a=n.nextNode();)Te(x.uponSanitizeShadowNode,a,null),ve(a),ke(a),a.content instanceof s&&t(a.content);Te(x.afterSanitizeShadowDOM,e,null)};return a.sanitize=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,l=null,c=null;if(te=!t,te&&(t="\x3c!--\x3e"),"string"!=typeof t&&!we(t)){if("function"!=typeof t.toString)throw nt("toString is not a function");if("string"!=typeof(t=t.toString()))throw nt("dirty is not a string, aborting")}if(!a.isSupported)return t;if(jt||ue(e),a.removed=[],"string"==typeof t&&(Ut=!1),Ut){if(t.nodeName){const e=ie(t.nodeName);if(!B[e]||lt[e])throw nt("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof i)n=_e("\x3c!----\x3e"),r=n.ownerDocument.importNode(t,!0),1===r.nodeType&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!$t&&!xt&&!It&&-1===t.indexOf("<"))return T&&Mt?T.createHTML(t):t;if(n=_e(t),!n)return $t?null:Mt?v:""}n&&Ot&&fe(n.firstChild);const p=ye(Ut?t:n);for(;l=p.nextNode();)ve(l),ke(l),l.content instanceof s&&Ce(l.content);if(Ut)return t;if($t){if(Pt)for(c=k.call(n.ownerDocument);n.firstChild;)c.appendChild(n.firstChild);else c=n;return(z.shadowroot||z.shadowrootmode)&&(c=R.call(o,c,!0)),c}let d=It?n.outerHTML:n.innerHTML;return It&&B["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&at(Lt,n.ownerDocument.doctype.name)&&(d="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+d),xt&&W([L,A,N],t=>{d=K(d,t," ")}),T&&Mt?T.createHTML(d):d},a.setConfig=function(){ue(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),jt=!0},a.clearConfig=function(){ce=null,jt=!1},a.isValidAttribute=function(t,e,a){ce||ue({});const n=ie(t),o=ie(e);return Ee(n,o,a)},a.addHook=function(t,e){"function"==typeof e&&Q(x[t],e)},a.removeHook=function(t,e){if(void 0!==e){const a=q(x[t],e);return-1===a?void 0:G(x[t],a,1)[0]}return V(x[t])},a.removeHooks=function(t){x[t]=[]},a.removeAllHooks=function(){x={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},a}();const jt=({message:t,onClose:e,Title:a})=>{let n=jQuery("<div>").append(t);const o=n.html();return n.remove(),n=null,(0,s.useEffect)(()=>{const t=document.querySelectorAll(".chrome-ai-translator-flags");if(t.length>0)return t.forEach(t=>{t.classList.add("atfp-tooltip-element"),t.addEventListener("click",e=>{if(e.preventDefault(),t.querySelector(".atfp-tooltip"))return;let a=document.createElement("span");a.textContent="Text to be copied.",a.className="atfp-tooltip",t.appendChild(a),(async({text:t=!1,startCopyStatus:e=()=>{},endCopyStatus:a=()=>{}})=>{if(t&&""!==t)try{if(navigator?.clipboard?.writeText)await navigator.clipboard.writeText(t);else{const e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select(),document.execCommand&&document.execCommand("copy"),document.body.removeChild(e)}e(),setTimeout(()=>a(),800)}catch(t){console.error("Error copying text to clipboard:",t)}})({text:t.getAttribute("data-clipboard-text"),startCopyStatus:()=>{a.classList.add("atfp-tooltip-active")},endCopyStatus:()=>{setTimeout(()=>{a.remove()},800)}})})}),()=>{t.forEach(t=>{t.removeEventListener("click",()=>{})})}},[]),React.createElement("div",{className:"atfp-error-modal-box-container"},React.createElement("div",{className:"atfp-error-modal-box"},React.createElement("div",{className:"atfp-error-modal-box-header"},React.createElement("span",{className:"atfp-error-modal-box-close",onClick:e},"×"),a&&React.createElement("h3",null,a)),React.createElement("div",{className:"atfp-error-modal-box-body"},React.createElement("p",{dangerouslySetInnerHTML:{__html:It.sanitize(o)}})),React.createElement("div",{className:"atfp-error-modal-box-footer"},React.createElement("button",{className:"atfp-error-modal-box-close button button-primary",onClick:e},"Close"))))};function Ot(){return Ot=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)({}).hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},Ot.apply(null,arguments)}const $t=t=>{const[e,a]=(0,s.useState)({}),[n,o]=(0,s.useState)(0),[l,c]=(0,s.useState)(!1),p=atfp_global_object.source_lang,d=t.targetLang,u=atfp_global_object.languageObject[p].name,g=atfp_global_object.languageObject[d].name,m=atfp_global_object.atfp_url+"assets/images/",f=["af","am","ar","az","ba","be","bg","bn","bs","ca","ceb","cs","cv","cy","da","de","el","emj","en","eo","es","et","eu","fa","fi","fr","ga","gd","gl","gu","he","hi","hr","ht","hu","hy","id","is","it","ja","jv","ka","kazlat","kk","km","kn","ko","ky","la","lb","lo","lt","lv","mg","mhr","mi","mk","ml","mn","mr","mrj","ms","mt","my","ne","nl","no","pa","pap","pl","pt","pt-BR","ro","ru","sah","si","sk","sl","sq","sr","sr-Latn","su","sv","sw","ta","te","tg","th","tl","tr","tt","udm","uk","ur","uz","uzbcyr","vi","xh","yi","zh","zu"].includes(d),[h,_]=(0,s.useState)({}),[y,b]=(0,s.useState)(!1),[w,v]=(0,s.useState)(!1),E=t=>{t.preventDefault();const e=t.target;"yes"===e.dataset.value&&c(!0),e.closest("#atfp-modal-open-warning-wrapper").remove()};(0,s.useEffect)(()=>{const e=document.querySelectorAll("#atfp-modal-open-warning-wrapper .modal-content div[data-value]"),a=document.querySelector(t.translateWrpSelector);a&&a.addEventListener("click",t=>{t.preventDefault(),c(t=>!t)}),e.forEach(t=>{t&&t.addEventListener("click",E)})},[]),(0,s.useEffect)(()=>{l&&(f||_(t=>({...t,yandex:{message:"<p style={{ fontSize: '1rem', color: '#ff4646' }}>"+(0,i.sprintf)((0,i.__)("Yandex Translate does not support the target language: %s.","autopoly-ai-translation-for-polylang"),"<strong>"+g+" ("+d+")</strong>")+"</p>",Title:(0,i.__)("Yandex Translate","autopoly-ai-translation-for-polylang")}})),(async()=>{const t=await T.languageSupportedStatus(p,d,g,u),e=document.querySelector(".atfp-service-btn#atfp-local-ai-translator-btn");!0!==t&&"object"==typeof t&&e&&(v(!0),_(e=>({...e,localAiTranslator:{message:t,Title:(0,i.__)("Chrome AI Translator","autopoly-ai-translation-for-polylang")}})))})())},[l]),(0,s.useEffect)(()=>{const a=e,o=a.dataset&&a.dataset.service,s=a.dataset&&a.dataset.serviceLabel,l=t.postId,i=document.getElementById("atfp_strings_model");i&&(i._reactRoot||(i._reactRoot=r.createRoot(i)),n&&i._reactRoot.render(React.createElement(x,{currentPostId:t.currentPostId,postId:l,service:o,serviceLabel:s,sourceLang:p,targetLang:d,modalRender:n,pageTranslate:t.pageTranslate,postDataFetchStatus:t.postDataFetchStatus,fetchPostData:t.fetchPostData,translatePost:t.translatePost,contentLoading:t.contentLoading,updatePostDataFetch:t.updatePostDataFetch,stringModalBodyNotice:t.stringModalBodyNotice})))},[t.postDataFetchStatus,n]);const S=t=>{c(t)};return React.createElement(React.Fragment,null,y&&h[y]&&React.createElement(jt,Ot({onClose:()=>{b(!1),c(!0)}},h[y])),l&&React.createElement("div",{className:"modal-container",style:{display:l?"flex":"none"}},React.createElement("div",{className:"atfp-settings modal-content"},React.createElement(L,{setSettingVisibility:S,postType:t.postType,sourceLangName:u,targetLangName:g}),React.createElement(D,{yandexDisabled:!f,fetchContent:async t=>{let e=t.target.classList.contains("atfp-service-btn")?t.target:t.target.closest(".atfp-service-btn");if(!e)return;const n=e.dataset&&e.dataset.service;if(c(!1),"localAiTranslator"===n){const t=await T.languageSupportedStatus(p,d,g);if(!0!==t&&"object"==typeof t)return}o(t=>t+1),a(e)},imgFolder:m,targetLangName:g,postType:t.postType,sourceLangName:u,localAiTranslatorDisabled:w,openErrorModalHandler:t=>{c(!1),b(t)}}),React.createElement(I,{targetLangName:g,postType:t.postType,sourceLangName:u,setSettingVisibility:S}))))},Pt="SAVE_SOURCE_TITLE",Mt="SAVE_TRANSLATE_TITLE",Ft="SAVE_SOURCE_EXCERPT",Bt="SAVE_TRANSLATE_EXCERPT",Ht="SAVE_SOURCE_CONTENT",Ut="SAVE_TRANSLATE_CONTENT",zt="SAVE_SOURCE_META_FIELDS",Wt="SAVE_TRANSLATE_META_FIELDS",qt="SET_BLOCK_RULES",Vt="SAVE_TRANSLATE_INFO",Qt="ALLOWED_META_FIELDS",Gt="CONTENT_FETCH_STATUS",Yt={title:{},excerpt:{},content:[],metaFields:{},allowedMetaFields:{},contentFetchStatus:!1},Xt=t=>({type:Pt,text:t}),Jt=(t,e)=>({type:Mt,text:t,provider:e}),Kt=t=>({type:Ft,text:t}),Zt=(t,e)=>({type:Bt,text:t,provider:e}),te=(t,e)=>({type:Ht,text:e,id:t}),ee=(t,e,a,n)=>({type:Ut,text:e,id:t,source:a,provider:n}),ae=(t,e)=>({type:zt,text:e,id:t}),ne=(t,e,a,n)=>({type:Wt,text:e,id:t,source:a,provider:n}),oe=t=>({type:qt,data:t}),re=({sourceStringCount:t=null,sourceWordCount:e=null,sourceCharacterCount:a=null,timeTaken:n=null,provider:o=null,targetStringCount:r=null,targetWordCount:s=null,targetCharacterCount:l=null,translateStatus:i=null})=>({type:Vt,sourceStringCount:t,sourceWordCount:e,sourceCharacterCount:a,timeTaken:n,targetStringCount:r,targetWordCount:s,targetCharacterCount:l,provider:o,translateStatus:i}),se=({id:t,type:e})=>({type:Qt,id:t,inputType:e}),le=t=>({type:Gt,status:t}),ie=t=>{const e=new Array;return t.title.source&&e.push({id:"title",source:t.title.source,type:"title",translatedData:t.title.translatedData||{}}),t.excerpt.source&&e.push({id:"excerpt",source:t.excerpt.source,type:"excerpt",translatedData:t.excerpt.translatedData||{}}),Object.keys(t.metaFields).map(a=>{e.push({type:"metaFields",id:a,source:t.metaFields[a].source,translatedData:t.metaFields[a].translatedData||{}})}),Object.keys(t.content).map(a=>{e.push({type:"content",id:a,source:t.content[a].source,translatedData:t.content[a].translatedData||{}})}),e},ce=t=>t.blockRules,pe=(t,e,a,n=null,o=null)=>["title","excerpt"].includes(e)&&t[e].source===a&&t[e].translatedData&&t[e].translatedData[o]?t[e]?.translatedData[o]||t[e]?.source:"metaFields"===e&&t.metaFields&&t.metaFields[n]&&t.metaFields[n].source===a&&t.metaFields[n].translatedData&&t.metaFields[n].translatedData[o]?void 0!==t.metaFields[n]?.translatedData[o]?t.metaFields[n]?.translatedData[o]:t.metaFields[n]?.source:"content"===e&&t.content&&t.content[n]&&t.content[n].source===a&&t.content[n].translatedData&&t.content[n].translatedData[o]?void 0!==t.content[n]?.translatedData[o]?t.content[n]?.translatedData[o]:t.content[n]?.source:a,de=t=>({sourceStringCount:t?.translationInfo?.sourceStringCount||0,sourceWordCount:t?.translationInfo?.sourceWordCount||0,sourceCharacterCount:t?.translationInfo?.sourceCharacterCount||0,translateData:t?.translationInfo?.translateData||{}}),ue=t=>t.allowedMetaFields||{},ge=t=>t.contentFetchStatus,{createReduxStore:me,register:fe}=wp.data;fe(me("block-atfp/translate",{reducer:(t=Yt,e)=>{switch(e.type){case Pt:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,title:{...t.title,source:e.text}}:t;case Mt:return{...t,title:{...t.title,translatedData:{...t.title.translatedData||[],[e.provider]:e.text}}};case Ft:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,excerpt:{...t.excerpt,source:e.text}}:t;case Bt:return{...t,excerpt:{...t.excerpt,translatedData:{...t.excerpt.translatedData||[],[e.provider]:e.text}}};case Ht:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,content:{...t.content,[e.id]:{...t.content[e.id]||[],source:e.text}}}:t;case Ut:return t.content[e.id].source===e.source?{...t,content:{...t.content,[e.id]:{...t.content[e.id]||[],translatedData:{...t.content[e.id].translatedData||[],[e.provider]:e.text}}}}:t;case zt:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,metaFields:{...t.metaFields,[e.id]:{...t.metaFields[e.id]||[],source:e.text}}}:t;case Wt:return{...t,metaFields:{...t.metaFields,[e.id]:{...t.metaFields[e.id]||[],translatedData:{...t.metaFields[e.id].translatedData||[],[e.provider]:e.text}}}};case qt:return{...t,blockRules:e.data};case Vt:const a={};return e.sourceStringCount&&(a.sourceStringCount=e.sourceStringCount),e.sourceWordCount&&(a.sourceWordCount=e.sourceWordCount),e.sourceCharacterCount&&(a.sourceCharacterCount=e.sourceCharacterCount),(e.targetWordCount||e.targetCharacterCount||e.translateStatus||e.timeTaken)&&e.provider&&(a.translateData={...t.translationInfo?.translateData||{},[e.provider]:{...t.translationInfo?.translateData?.[e.provider]||{},...e.targetStringCount&&{targetStringCount:e.targetStringCount},...e.targetWordCount&&{targetWordCount:e.targetWordCount},...e.targetCharacterCount&&{targetCharacterCount:e.targetCharacterCount},...e.translateStatus&&{translateStatus:e.translateStatus},...e.timeTaken&&{timeTaken:e.timeTaken}}}),{...t,translationInfo:{...t.translationInfo,...a}};case Qt:return{...t,allowedMetaFields:{...t.allowedMetaFields,[e.id]:{...t.allowedMetaFields[e.id]||[],inputType:e.inputType}}};case Gt:return{...t,contentFetchStatus:e.status};default:return t}},actions:n,selectors:o}));const he=(t,e,a,n)=>{const o=(t,e)=>{Object.keys(e).map(a=>{let o=e;o=o[a];const r=new Array(...t,a);n(r,o)})};Object.getPrototypeOf(e)===Array.prototype?((t,e)=>{const r=new Array(...t);let s=a;r.forEach(t=>{s=s[t]}),[null,void 0].includes(s)||(Object.getPrototypeOf(s)!==Object.prototype?(Object.getPrototypeOf(s)===Array.prototype&&s.forEach((t,a)=>{const o=new Array;r.forEach(t=>{o.push(t)}),o.push(a),n(o,e[0])}),"object"!=typeof s||o(t,e[0])):o(t,e[0]))})(t,e):Object.getPrototypeOf(e)===Object.prototype&&o(t,e)},_e=(t,e)=>{Object.keys(e.AtfpBlockParseRules).includes(t.name)&&((t,e,a)=>{const n=Object.values(a),o=(a,n)=>{if(!0===n){const n=new Array(...a),o=new Array;let r=e,s=t;n.forEach(t=>{o.push(t),s+=`atfp${t}`,r=r?r[t]:r});let i=r;if(i instanceof wp.richText.RichTextData&&(i=i.originalHTML),void 0!==i&&"string"==typeof i&&""!==i.trim()){let t=s.replace(/[^\p{L}\p{N}]/gu,"");if(!/[\p{L}\p{N}]/gu.test(i))return!1;(0,l.dispatch)("block-atfp/translate").contentSaveSource(t,i)}return}he(a,n,e,o)};n.forEach(t=>{Object.keys(t).forEach(e=>{const a=new Array(e);o(a,t[e])})})})(t.clientId,t.attributes,e.AtfpBlockParseRules[t.name])},ye=(t,e)=>{t.forEach(t=>{_e(t,e),t.innerBlocks&&ye(t.innerBlocks,e)})},be=window.wp.blocks,we={_yoast_wpseo_title:{type:"string"},_yoast_wpseo_focuskw:{type:"string"},_yoast_wpseo_metadesc:{type:"string"},_yoast_wpseo_bctitle:{type:"string"},"_yoast_wpseo_opengraph-title":{type:"string"},"_yoast_wpseo_opengraph-description":{type:"string"},"_yoast_wpseo_twitter-title":{type:"string"},"_yoast_wpseo_twitter-description":{type:"string"},rank_math_title:{type:"string"},rank_math_description:{type:"string"},rank_math_focus_keyword:{type:"string"},rank_math_facebook_title:{type:"string"},rank_math_facebook_description:{type:"string"},rank_math_twitter_title:{type:"string"},rank_math_twitter_description:{type:"string"},rank_math_breadcrumb_title:{type:"string"},_seopress_titles_title:{type:"string"},_seopress_titles_desc:{type:"string"},_seopress_social_fb_title:{type:"string"},_seopress_social_fb_desc:{type:"string"},_seopress_social_twitter_title:{type:"string"},_seopress_social_twitter_desc:{type:"string"},_seopress_analysis_target_kw:{type:"string"}},Te=async t=>{const e=atfp_global_object.ajax_url;let a=wp.data.select("block-atfp/translate").getBlockRules()||{};const n=[];t.updateDestroyHandler(()=>{n.forEach(t=>{t.abort("Modal Closed")})});const o=t=>{(0,l.dispatch)("block-atfp/translate").allowedMetaFields(t)};Object.keys(we).forEach(t=>{o({id:t,type:we[t].type})}),(()=>{const t="true"===atfp_global_object.postMetaSync;if(window.acf&&!t){const t=["text","textarea","wysiwyg"];acf.getFields().forEach(e=>{const a=JSON.parse(JSON.stringify({key:e.data.key,type:e.data.type,name:e.data.name}));if(e.$el&&e.$el.closest(".acf-field.acf-field-repeater")&&e.$el.closest(".acf-field.acf-field-repeater").length>0){const t=e.$el.closest(".acf-row").data("id"),n=e.$el.closest(".acf-field.acf-field-repeater").data("name");if(t&&""!==t){const e=t.replace("row-","");a.name=n+"_"+e+"_"+a.name}}if(a&&a.key&&t.includes(a.type)){const t=a.name,e=a.type;o({id:t,type:e})}})}})(),await(async()=>{if(a&&a.AtfpBlockParseRules&&Object.keys(a.AtfpBlockParseRules).length>0)return;const t={atfp_nonce:atfp_global_object.ajax_nonce,action:atfp_global_object.action_block_rules},o=new AbortController;n.push(o),await fetch(e,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(t),signal:o.signal}).then(t=>t.json()).then(t=>{a=JSON.parse(t.data.blockRules),(0,l.dispatch)("block-atfp/translate").setBlockRules(a)}).catch(t=>{console.error("Error fetching post content:",t)})})(),await(async()=>{if((0,l.select)("block-atfp/translate").contentFetchStatus())return;const o={postId:parseInt(t.postId),local:t.targetLang,current_local:t.sourceLang,atfp_nonce:atfp_global_object.ajax_nonce,action:atfp_global_object.action_fetch},r=new AbortController;n.push(r),await fetch(e,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(o),signal:r.signal}).then(t=>t.json()).then(e=>{if((0,l.select)("block-atfp/translate").contentFetchStatus())return;const n=e.data;n.content&&""!==n.content.trim()&&(n.content=(0,be.parse)(n.content)),((t,e)=>{const a=(0,l.select)("block-atfp/translate").getAllowedMetaFields();Object.keys(t).forEach(n=>{if("content"===n)((t,e)=>{Object.values(t).forEach(t=>{_e(t,e),t.innerBlocks&&ye(t.innerBlocks,e)})})(t[n],e);else if("metaFields"===n)Object.keys(t[n]).forEach(e=>{Object.keys(a).includes(e)&&"string"===a[e].inputType&&""!==t[n][e][0]&&void 0!==t[n][e][0]&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(e,t[n][e][0])}),window.acf&&acf.getFields().forEach(e=>{const o=JSON.parse(JSON.stringify({key:e.data.key,type:e.data.type,name:e.data.name}));if(e.$el&&e.$el.closest(".acf-field.acf-field-repeater")&&e.$el.closest(".acf-field.acf-field-repeater").length>0){const t=e.$el.closest(".acf-row").data("id"),a=e.$el.closest(".acf-field.acf-field-repeater").data("name");if(t&&""!==t){const e=t.replace("row-","");o.name=a+"_"+e+"_"+o.name}}if(o&&o.key&&Object.keys(a).includes(o.name)){const a=o.name;let r=e?.val();"wysiwyg"===o.type&&t[n]&&t[n][a]&&t[n][a][0]&&""!==t[n][a][0]&&(r=t[n][a][0]),(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(a,r)}});else if(["title","excerpt"].includes(n)&&t[n]&&""!==t[n].trim()){const e=`${n}SaveSource`;(0,l.dispatch)("block-atfp/translate")[e](t[n])}})})(n,a),t.refPostData(n),t.updatePostDataFetch(!0),(0,l.dispatch)("block-atfp/translate").contentFetchStatus(!0)}).catch(t=>{console.error("Error fetching post content:",t)})})()},ve=(t,e,a,n)=>{const{createBlock:o}=wp.blocks,{name:r,attributes:s}=t;let l={...s},i=t,c="";return Object.keys(a.AtfpBlockParseRules).includes(t.name)&&(i=((t,e,a)=>{const{select:n}=wp.data,o=Object.values(e),r=t.attributes,s=t.clientId,l=(e,o)=>{if(!0===o){const o=new Array(...e),l=new Array;let i=r,c=s;o.forEach(t=>{l.push(t),c+=`atfp${t}`,i=i?i[t]:i});let p=i;if(p instanceof wp.richText.RichTextData&&(p=p.originalHTML),void 0!==p&&"string"==typeof p&&""!==p.trim()){let e=c.replace(/[^\p{L}\p{N}]/gu,""),r="";r=/[\p{L}\p{N}]/gu.test(p)?n("block-atfp/translate").getTranslatedString("content",p,e,a):p,t.attributes=((t,e,a)=>{const n={...t};let o=n;for(let t=0;t<e.length-1;t++)Object.getPrototypeOf(o[e[t]])===Array.prototype?o[e[t]]=[...o[e[t]]]:o[e[t]]={...o[e[t]]},o=o[e[t]];return o[e[e.length-1]]instanceof wp.richText.RichTextData?o[e[e.length-1]]=a.replace(/(?<!\\)"|\\"/g,"'"):o[e[e.length-1]]=a,n})(t.attributes,o,r)}return}he(e,o,r,l)};return o.forEach(t=>{Object.keys(t).forEach(e=>{const a=new Array(e);l(a,t[e])})}),t})(t,a.AtfpBlockParseRules[t.name],n),l=i.attributes),c=o(r,l,e),c},Ee=(t,e,a)=>{let n=t.innerBlocks.map(t=>{if(t.name)return Ee(t,e,a)});return ve(t,n,e,a)},Se=t=>{if(!(0,l.dispatch)("yoast-seo/editor"))return;const{updateData:e,setFocusKeyword:a,setBreadcrumbsTitle:n,setFacebookPreviewTitle:o,setFacebookPreviewDescription:r,setTwitterPreviewTitle:s,setTwitterPreviewDescription:i}=(0,l.dispatch)("yoast-seo/editor"),{key:c,value:p}=t;switch(c){case"_yoast_wpseo_focuskw":a&&a(p);break;case"_yoast_wpseo_title":e&&e({title:p});break;case"_yoast_wpseo_metadesc":e&&e({description:p});break;case"_yoast_wpseo_bctitle":n&&n(p);break;case"_yoast_wpseo_opengraph-title":o&&o(p);break;case"_yoast_wpseo_opengraph-description":r&&r(p);break;case"_yoast_wpseo_twitter-title":s&&s(p);break;case"_yoast_wpseo_twitter-description":i&&i(p)}},ke=t=>{if(!(0,l.dispatch)("rank-math"))return;const{updateKeywords:e,updateTitle:a,updateDescription:n,updateBreadcrumbTitle:o,updateFacebookTitle:r,updateFacebookDescription:s,updateTwitterTitle:i,updateTwitterDescription:c}=(0,l.dispatch)("rank-math"),{key:p,value:d}=t;switch(p){case"rank_math_focus_keyword":e&&e(d);break;case"rank_math_title":a&&a(d);break;case"rank_math_description":n&&n(d);break;case"rank_math_breadcrumb_title":o&&o(d);break;case"rank_math_facebook_title":r&&r(d);break;case"rank_math_facebook_description":s&&s(d);break;case"rank_math_twitter_title":i&&i(d);break;case"rank_math_twitter_description":c&&c(d)}},Ce=t=>{const{editPost:e}=(0,l.dispatch)("core/editor"),{modalClose:a,postContent:n,service:o}=t;(()=>{const t={};Object.keys(n).filter(t=>["title","excerpt"].includes(t)).forEach(e=>{const a=n[e];if(""!==a.trim()){const n=(0,l.select)("block-atfp/translate").getTranslatedString(e,a,null,o);t[e]=n}}),e(t)})(),(()=>{const t=n.metaFields;if(!t&&Object.keys(t).length<1)return;const a=(0,l.select)("block-atfp/translate").getAllowedMetaFields();Object.keys(t).forEach(n=>{if(Object.keys(a).includes(n)){const r=(0,l.select)("block-atfp/translate").getTranslatedString("metaFields",t[n][0],n,o);n.startsWith("_yoast_wpseo_")&&"string"===a[n].inputType?Se({key:n,value:r}):n.startsWith("rank_math_")&&"string"===a[n].inputType?ke({key:n,value:r}):n.startsWith("_seopress_")&&"string"===a[n].inputType?(async t=>{const{key:e,value:a}=t,n=e.replace(/^_/,"")+"_meta";if(document.querySelector("#"+n))switch(e){case"_seopress_titles_title":case"_seopress_titles_desc":case"_seopress_social_fb_title":case"_seopress_social_fb_desc":case"_seopress_social_twitter_title":case"_seopress_social_twitter_desc":jQuery(`#${n}`).val(a),jQuery(`#${n}`).trigger("change");break;case"_seopress_analysis_target_kw":window.target_kw&&window.target_kw instanceof window.Tagify&&window.target_kw.DOM.originalInput.id===n?window.target_kw.addTags(a):(jQuery("#"+n).val(a),jQuery("#"+n).trigger("change"))}})({key:n,value:r}):e({meta:{[n]:r}})}})})(),(()=>{const t=(0,l.select)("block-atfp/translate").getAllowedMetaFields(),e=n.metaFields;window.acf&&acf.getFields().forEach(a=>{const n=JSON.parse(JSON.stringify({key:a.data.key,type:a.data.type,name:a.data.name}));if(a.$el&&a.$el.closest(".acf-field.acf-field-repeater")&&a.$el.closest(".acf-field.acf-field-repeater").length>0){const t=a.$el.closest(".acf-row").data("id"),e=a.$el.closest(".acf-field.acf-field-repeater").data("name");if(t&&""!==t){const a=t.replace("row-","");n.name=e+"_"+a+"_"+n.name}}if(n&&n.key&&Object.keys(t).includes(n.name)){const t=n.name,r=n.type;let s=e[t]&&e[t][0]?e[t][0]:a?.val(),i=(0,l.select)("block-atfp/translate").getTranslatedString("metaFields",s,n.name,o);if(!i||""===i)return;if("wysiwyg"===r&&window.tinymce){const t=a.data.id,e=i.replace(/(\r\n\r\n)/g,"</p><p>");tinymce.get(t)?.setContent(e);const n=document.querySelector(`textarea#${t}`);n&&(n.value=i)}else a.val(i)}})})(),(()=>{const t=n.content;t.length<=0||Object.values(t).forEach(t=>{((t,e)=>{const{select:a}=wp.data,n=a("block-atfp/translate").getBlockRules(),{dispatch:o}=wp.data,{name:r}=t;if(r){let a=t.innerBlocks.map(t=>{if(t.name)return Ee(t,n,e)});const r=ve(t,a,n,e);o("core/block-editor").insertBlock(r)}})(t,o)})})(),a()},Re=({characterCount:t=0,url:e=""})=>{const[a,n]=(0,p.useState)(!1),[o,r]=(0,p.useState)(!1);return""!==e&&(e+="?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup"),(0,p.useEffect)(()=>{const t=document.querySelector('button.atfp-translate-button[name="atfp_meta_box_translate"],input#atfp-translate-button[name="atfp_meta_box_translate"]');if(t)return t.addEventListener("click",()=>{n(!0),r(!0)}),()=>{t.removeEventListener("click",()=>{})}},[]),a?React.createElement("div",{id:"atfp-pro-notice-wrapper",className:o?"atfp-active":""},React.createElement("div",{className:"atfp-pro-notice"},React.createElement("div",{className:"atfp-notice-header"},React.createElement("h2",null,"AutoPoly - AI Translation For Polylang"),React.createElement("span",{className:"atfp-close-button",onClick:()=>n(!1),"aria-label":"Close Notice"},"×")),React.createElement("div",{className:"atfp-notice-content"},React.createElement("p",null,"You have reached the character limit of ",React.createElement("strong",null,React.createElement(m,{number:t}))," for your translations. To continue translating beyond this limit, please consider upgrading to ",React.createElement("strong",null,"AutoPoly - AI Translation For Polylang Pro"),".")),React.createElement("div",{className:"atfp-notice-footer"},React.createElement("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"atfp-upgrade-button"},"Upgrade to Pro")))):null},xe=t=>{const e=()=>{const t=document.querySelector(".atfp-body-notice-wrapper");if(t){const e=t.offsetHeight+t.offsetTop;t.closest(".modal-body").style.setProperty("--atfp-notice-wrapper-height",`${e}px`)}};return(0,p.useEffect)(()=>(t.lastNotice&&(e(),window.addEventListener("resize",e)),()=>{window.removeEventListener("resize",e)}),[t.lastNotice]),React.createElement("div",{className:t.className},t.children)},Le=async t=>{const e={widgetsContent:atfp_global_object.elementorData&&"string"==typeof atfp_global_object.elementorData?JSON.parse(atfp_global_object.elementorData):atfp_global_object.elementorData,metaFields:atfp_global_object?.metaFields||{}};atfp_global_object.parent_post_title&&""!==atfp_global_object.parent_post_title&&(e.title=atfp_global_object.parent_post_title),Object.keys(we).forEach(t=>{var e;e={id:t,type:we[t].type},(0,l.dispatch)("block-atfp/translate").allowedMetaFields(e)}),(t=>{const e=(0,l.select)("block-atfp/translate").getAllowedMetaFields(),a=(t,e,n)=>{t(e[n],n),++n<e.length&&a(t,e,n)},n=(t,e)=>{if("string"==typeof e&&""!==e.trim()&&t.length>0){const a=t.join("_atfp_");e&&""!==e&&(0,l.dispatch)("block-atfp/translate").contentSaveSource(a,e)}},o=t=>["title","description","editor","text","content","label"].some(e=>t.toLowerCase().includes(e))||["caption","heading","sub_heading","testimonial_content","testimonial_job","testimonial_name","name"].some(e=>t===e),r=["content_width","title_size","font_size","margin","padding","background","border","color","text_align","font_weight","font_family","line_height","letter_spacing","text_transform","border_radius","box_shadow","opacity","width","height","display","position","z_index","visibility","align","max_width","content_typography_typography","flex_justify_content","title_color","description_color","email_content"],s=(t,e,l=[])=>{const i=t.settings;if(l.push(e),"object"==typeof i&&null!==i&&Object.keys(i).length>0){const t=(t,e)=>{if(!r.some(e=>t.toLowerCase().includes(e))&&(o(t)&&"string"==typeof i[t]&&""!==i[t].trim()&&n([...l,"settings",t],i[t]),Array.isArray(i[t])&&i[t].length>0)){const e=(e,s)=>{"object"==typeof e&&null!==e&&a(a=>{r.includes(a.toLowerCase())||o(a)&&"string"==typeof e[a]&&""!==e[a].trim()&&n([...l,"settings",t,s,a],e[a])},Object.keys(e),0)};a(e,i[t],0)}};a(t,Object.keys(i),0)}if(t.elements&&Array.isArray(t.elements)&&t.elements.length>0){const e=(t,e)=>{s(t,e,[...l,"elements"])};a(e,t.elements,0)}};if(t.widgetsContent&&t.widgetsContent.length>0&&a((t,e)=>{s(t,e,[])},t.widgetsContent,0),t.title&&""!==t.title){const e=atfp_global_object.current_post_id;if(e){const a=elementor?.settings?.page?.model?.get("post_title");a&&""!==a&&a===`Elementor #${e}`&&(0,l.dispatch)("block-atfp/translate").titleSaveSource(t.title)}}var i;i=t.metaFields,Object.keys(i).forEach(t=>{Object.keys(e).includes(t)&&"string"===e[t].inputType&&""!==i[t][0]&&void 0!==i[t][0]&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(t,i[t][0])})})(e),t.refPostData(e),t.updatePostDataFetch(!0)},Ae=(t,e)=>{for(const a of t){if(a.get("id")===e)return a;const t=a.get("elements").models,n=Ae(t,e);if(n)return n}return null},Ne=({postContent:t,modalClose:e,service:a})=>{const n=elementor.config.document.id,o=[],r=["content_width","title_size","font_size","margin","padding","background","border","color","text_align","font_weight","font_family","line_height","letter_spacing","text_transform","border_radius","box_shadow","opacity","width","height","display","position","z_index","visibility","align","max_width","content_typography_typography","flex_justify_content","title_color","description_color","email_content"],s=t=>["title","description","editor","text","content","label"].some(e=>t.toLowerCase().includes(e))||["caption","heading","sub_heading","testimonial_content","testimonial_job","testimonial_name","name"].some(e=>t===e),i=(t,e,n=[])=>{const c=t.id,p=t.settings;n.push(e),"object"==typeof p&&null!==p&&Object.keys(p).forEach(t=>{if(!r.some(e=>t.toLowerCase().includes(e))){if(s(t)&&"string"==typeof p[t]&&""!==p[t].trim()){const e=n.join("_atfp_")+"_atfp_settings_atfp_"+t,r=(0,l.select)("block-atfp/translate").getTranslatedString("content",p[t],e,a);o.push({ID:c,key:t,translatedContent:r})}Array.isArray(p[t])&&p[t].forEach((e,i)=>{"object"==typeof e&&null!==e&&Object.keys(e).forEach(p=>{if(!r.includes(p.toLowerCase())&&s(p)&&"string"==typeof e[p]&&""!==e[p].trim()){const r=`${t}[${i}].${p}`,s=n.join("_atfp_")+"_atfp_settings_atfp_"+t+"_atfp_"+i+"_atfp_"+p,d=(0,l.select)("block-atfp/translate").getTranslatedString("content",e[p],s,a);o.push({ID:c,key:r,translatedContent:d})}})})}}),t.elements&&Array.isArray(t.elements)&&t.elements.forEach((t,e)=>{i(t,e,[...n,"elements"])})};t.widgetsContent.map((t,e)=>i(t,e,[])),(t=>{t.forEach(t=>{const e=Ae(elementor.elements.models,t.ID);if(e){const a=e.get("settings");a.get(t.key)&&(a.set(t.key,t.translatedContent),e?.renderRemoteServer());const n=t.key.match(/(.+)\[(\d+)\]\.(.+)/);if(n){const[o,r,s,l]=n,i=a.get(r);Array.isArray(i.models)&&i.models[s]&&(i.models[s].attributes[l]=t.translatedContent,a.set(r,i),e?.renderRemoteServer())}}}),$e.internal("document/save/set-is-modified",{status:!0})})(o),((t,e)=>{const a=(0,l.select)("block-atfp/translate").getAllowedMetaFields();!t&&Object.keys(t).length<1||Object.keys(t).forEach(n=>{if(Object.keys(a).includes(n)){const o=(0,l.select)("block-atfp/translate").getTranslatedString("metaFields",t[n][0],n,e);n.startsWith("_yoast_wpseo_")&&"string"===a[n].inputType?Se({key:n,value:o}):n.startsWith("rank_math_")&&"string"===a[n].inputType?ke({key:n,value:o}):n.startsWith("_seopress_")&&"string"===a[n].inputType&&elementor?.settings?.page?.model?.setExternalChange(n,o)}})})(t.metaFields,a),((t,e)=>{if(t&&""!==t){const a=(0,l.select)("block-atfp/translate").getTranslatedString("title",t,null,e);a&&""!==a&&elementor?.settings?.page?.model?.setExternalChange("post_title",a)}})(t.title,a);const c=(()=>{const t=atfp_global_object.elementorData;return wp.data.select("block-atfp/translate").getTranslationEntry().forEach(e=>{const n=e.source,o=e.id,r=e.translatedData,s=e.type;if(!n||""===n||"content"!==s)return;const l=o.split("_atfp_"),i=r[a];let c=null,p=null,d=t;l.forEach(t=>{c=d,p=t,d=d?d[t]:null}),c&&p&&c[p]&&c[p]===n&&(c[p]=i)}),t})(),p={action:atfp_global_object.update_elementor_data,post_id:n,elementor_data:JSON.stringify(c),atfp_nonce:atfp_global_object.ajax_nonce};fetch(atfp_global_object.ajax_url,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(p)}).then(t=>t.json()).then(t=>{if(t.success){const t=document.querySelector('.atfp-translate-button[name="atfp_meta_box_translate"]');t&&t.setAttribute("title","Translation process completed successfully.")}else console.error("Failed to update Elementor data:",t.data);e()}).catch(t=>{e(),console.error("Error updating Elementor data:",t)})},De=window.atfp_global_object.editor_type,Ie=()=>{let t=new Array;t.push('\x3c!-- The Modal --\x3e<div id="atfp-setting-modal"></div>','<div id="atfp_strings_model" class="modal atfp_custom_model"></div>'),t.forEach(t=>{document.body.insertAdjacentHTML("beforeend",t)})},je=()=>{const t=[];if("gutenberg"===De){"true"===atfp_global_object.postMetaSync&&t.push({className:"atfp-notice atfp-notice-error",message:React.createElement("p",null,(0,i.__)("For accurate custom field translations, please disable the Custom Fields synchronization in ","autopoly-ai-translation-for-polylang"),React.createElement("a",{href:`${atfp_global_object.admin_url}admin.php?page=mlang_settings`,target:"_blank",rel:"noopener noreferrer"},(0,i.__)("Polylang settings","autopoly-ai-translation-for-polylang")),(0,i.__)(". This may affect linked posts or pages.","autopoly-ai-translation-for-polylang"))});const e=(0,l.select)("block-atfp/translate").getBlockRules();e.AtfpBlockParseRules&&0!==Object.keys(e.AtfpBlockParseRules).length||t.push({className:"atfp-notice atfp-notice-error",message:React.createElement("p",null,(0,i.__)("No block rules were found. It appears that the block-rules.JSON file could not be fetched, possibly because it is blocked by your server settings. Please check your server configuration to resolve this issue.","autopoly-ai-translation-for-polylang"))})}const e=t.length;if(t.length>0)return t.map((t,a)=>React.createElement(xe,{className:t.className,key:a,lastNotice:a===e-1},t.message))},Oe=()=>{const[t,e]=(0,p.useState)(!1),a=window.atfp_global_object.target_lang,n=window.atfp_global_object.parent_post_id,o=window.atfp_global_object.current_post_id,r=window.atfp_global_object.post_type;let s,l,c;const d=window.atfp_global_object.source_lang;"elementor"===De?(c='button.atfp-translate-button[name="atfp_meta_box_translate"]',s=Ne,l=Le):"gutenberg"===De&&(c='input#atfp-translate-button[name="atfp_meta_box_translate"]',s=Ce,l=Te);const[u,g]=(0,p.useState)(!1),[m,f]=(0,p.useState)(!0);if((0,p.useEffect)(()=>{if(t){const t=document.querySelector(c);t&&(t.disabled=!0,t.value=(0,i.__)("Already Translated","autopoly-ai-translation-for-polylang"))}},[t]),!d||""===d){const t=document.querySelector(c);return void(t&&(t.title=`Parent ${window.atfp_global_object.post_type} may be deleted.`,t.disabled=!0))}return React.createElement(React.Fragment,null,!t&&d&&""!==d&&React.createElement($t,{contentLoading:m,updatePostDataFetch:t=>{g(t),f(!1)},postDataFetchStatus:u,pageTranslate:t=>{e(t)},postId:n,currentPostId:o,targetLang:a,postType:r,fetchPostData:async t=>{await l(t);const e=wp.data.select("block-atfp/translate").getTranslationEntry();let a=0,n=0,o=0;e.map(t=>{const e=t.source?t.source:"",r=e.split(/(?<=[.!?]+)\s+/).length,s=e.trim().split(/\s+/).filter(t=>/[^\p{L}\p{N}]/.test(t)).length,l=e.length;a+=r,n+=l,o+=s}),wp.data.dispatch("block-atfp/translate").translationInfo({sourceStringCount:a,sourceWordCount:o,sourceCharacterCount:n})},translatePost:s,translateWrpSelector:c,stringModalBodyNotice:je}))},Pe=()=>{const t=jQuery(".MuiButtonGroup-root.MuiButtonGroup-contained").parent(),e=jQuery(t).find(".elementor-button.atfp-translate-button");if(t.length>0&&0===e.length){const e=jQuery('<button class="elementor-button atfp-translate-button" name="atfp_meta_box_translate">Translate</button>');let a=!1;const n=window.atfp_global_object.current_post_id,o=window.atfp_global_object.target_lang,s=localStorage.getItem("atfpElementorConfirmBox");if(s&&"string"==typeof s&&""!==s&&(a=JSON.parse(s)),t.prepend(e),$e.internal("document/save/set-is-modified",{status:!0}),!window.atfp_global_object.translation_data||!window.atfp_global_object.translation_data.total_string_count&&0!==window.atfp_global_object.translation_data.total_string_count)return e.attr("disabled","disabled"),void e.attr("title","Translation data not found.");const l=parseInt(window.atfp_global_object.translation_data.total_character_count);if(l>5e5){const t=document.createElement("div");return t.id="atfp-pro-notice",document.body.appendChild(t),void r.createRoot(document.getElementById("atfp-pro-notice")).render(React.createElement(Re,{characterCount:l,url:window.atfp_global_object.pro_version_url||""}))}if(!window.atfp_global_object.elementorData||""===window.atfp_global_object.elementorData||window.atfp_global_object.elementorData.length<1||elementor.elements.length<1)return a&&a[n+"_"+o]&&(delete a[n+"_"+o],0===Object.keys(a).length?localStorage.removeItem("atfpElementorConfirmBox"):localStorage.setItem("atfpElementorConfirmBox",JSON.stringify(a))),e.attr("disabled","disabled"),void e.attr("title","Translation is not available because there is no Elementor data.");Ie(),r.createRoot(document.getElementById("atfp-setting-modal")).render(React.createElement(Oe,null)),a&&a[n+"_"+o]&&setTimeout(()=>{e.click(),delete a[n+"_"+o],0===Object.keys(a).length?localStorage.removeItem("atfpElementorConfirmBox"):localStorage.setItem("atfpElementorConfirmBox",JSON.stringify(a))},100)}};"gutenberg"===De&&window.addEventListener("load",()=>{Ie();const t=jQuery('input#atfp-translate-button[name="atfp_meta_box_translate"]');if(!window.atfp_global_object.translation_data||!window.atfp_global_object.translation_data.total_string_count&&0!==window.atfp_global_object.translation_data.total_string_count)return t.attr("disabled","disabled"),void t.attr("title","Translation data not found.");const e=parseInt(window.atfp_global_object.translation_data.total_character_count);if(e>5e5){const t=document.createElement("div");return t.id="atfp-pro-notice",document.body.appendChild(t),void r.createRoot(document.getElementById("atfp-pro-notice")).render(React.createElement(Re,{characterCount:e,url:window.atfp_global_object.pro_version_url||""}))}const a=window.atfp_global_object.source_lang;a&&""!==a&&(()=>{const t=document.getElementById("atfp-setting-modal"),e=(()=>{const t=window.atfp_global_object.post_type,e=window.atfp_global_object.target_lang,a=atfp_global_object.languageObject[e].name,n=document.createElement("div");return n.id="atfp-modal-open-warning-wrapper",n.innerHTML=`\n    <div class="modal-container" style="display: flex">\n      <div class="modal-content">\n        <p>${(0,i.sprintf)((0,i.__)("Would you like to duplicate your original %s content and have it automatically translated into %s?","autopoly-ai-translation-for-polylang"),t,a)}</p>\n        <div>\n          <div data-value="yes">${(0,i.__)("Yes","autopoly-ai-translation-for-polylang")}</div>\n          <div data-value="no">${(0,i.__)("No","autopoly-ai-translation-for-polylang")}</div>\n        </div>\n      </div>\n    </div>`,n})();document.body.insertBefore(e,t)})(),r.createRoot(document.getElementById("atfp-setting-modal")).render(React.createElement(Oe,null))}),"elementor"===De&&jQuery(window).on("elementor:init",function(){elementor.on("document:loaded",Pe)})})();
  • automatic-translations-for-polylang/tags/1.4.6/assets/css/atfp-custom.css

    r3321700 r3388730  
    4343
    4444#atfp-modal-open-warning-wrapper .modal-content div[data-value] {
    45     display: inline-block;
     45    display: inline-flex;
     46    align-items: center;
     47    justify-content: center;
    4648    font-size: 13px;
    47     line-height: 2.15384615;
     49    line-height: 1.3;
    4850    min-height: 30px;
    4951    margin: 0;
     
    185187}
    186188
    187 button.atfpp-error-reload-btn{
     189button.atfp-error-reload-btn{
    188190    background: #0073aa;
    189191    color: #fff !important;
     
    194196}
    195197
    196 button.atfpp-error-reload-btn:hover{
     198button.atfp-error-reload-btn:hover{
    197199    background: #005682;
    198200}
     
    216218
    217219#atfp-setting-modal .atfp-error-modal-box-footer .atfp-error-modal-box-close {
     220    display: inline-flex;
     221    align-items: center;
     222    justify-content: center;
     223    font-size: 1rem;
     224    line-height: 1.3;
     225    min-height: 30px;
     226    margin: 0;
     227    padding: .1rem .4rem;
     228    white-space: nowrap;
     229    border-radius: 3px;
     230    cursor: pointer;
     231    opacity: .7;
    218232    background: #f6f7f7;
    219233    border: 1px solid #c3c4c7;
    220234    color: #50575e;
     235    padding: 5px;
     236    border-radius: 3px;
    221237}
    222238
     
    249265    display: inline-flex;
    250266    align-items: center;
    251     justify-content: center;
    252267}
    253268   
     
    334349    display: flex;
    335350    align-items: center;
    336     font-size: 1rem;
     351    font-size: 16px;
    337352    font-weight: 600;
    338353    margin-block: .5rem;
     
    360375.atfp-setting-modal-body tbody .button{
    361376    width: 123px;
    362     display: inline-block;
     377    display: inline-flex;
     378    align-items: center;
     379    justify-content: center;
    363380    font-size: 13px;
    364     line-height: 2.15384615;
     381    line-height: 1.3;
    365382    min-height: 30px;
    366383    margin: 0;
     
    444461
    445462#atfp-setting-modal .modal-footer .atfp-setting-close {
     463    display: inline-flex;
     464    align-items: center;
     465    justify-content: center;
     466    font-size: 1rem;
     467    line-height: 1.3;
     468    min-height: 30px;
     469    margin: 0;
     470    padding: .1rem .4rem;
     471    white-space: nowrap;
     472    border-radius: 3px;
     473    cursor: pointer;
     474    opacity: .7;
    446475    background: #f6f7f7;
    447476    border: 1px solid #c3c4c7;
    448477    color: #50575e;
     478    padding: 5px;
     479    border-radius: 3px;
    449480}
    450481
     
    468499    margin: 0;
    469500    font-size: 14px;
     501    color: #3c3c3c;
    470502}
    471503
     
    616648}
    617649
     650#atfp_strings_model .save_btn_cont button .updating-text {
     651    display: flex;
     652    align-items: center;
     653    justify-content: center;
     654}
     655
     656#atfp_strings_model .save_btn_cont button .updating-text .dot {
     657    width: 4px;
     658    height: 4px;
     659    border-radius: 999px;
     660    background: #ffffff;
     661    margin-left: 1px;
     662    margin-top: 6px;
     663    opacity: 0.25;
     664    animation: atfp-savingBlink 1.05s infinite ease-in-out;
     665    animation-delay: calc(var(--i) * 0.18s - 1.05s);
     666    will-change: opacity, transform;
     667}
     668
     669@keyframes atfp-savingBlink {
     670    0%,
     671    20% {
     672        opacity: 0.25;
     673        transform: translateY(0);
     674    }
     675
     676    40% {
     677        opacity: 1;
     678        transform: translateY(-1px);
     679    }
     680
     681    60% {
     682        opacity: 0.9;
     683        transform: translateY(0);
     684    }
     685
     686    100% {
     687        opacity: 0.25;
     688        transform: translateY(0);
     689    }
     690}
     691
    618692
    619693.local_ai_translator_btn.button-primary {
     
    622696    color: #fff;
    623697    text-shadow: none;
    624     display: inline-block;
     698    display: inline-flex;
     699    align-items: center;
     700    justify-content: center;
    625701    text-decoration: none;
    626702    font-size: 13px;
    627     line-height: 2.15384615;
     703    line-height: 1.3;
    628704    min-height: 30px;
    629705    margin: 0;
     
    698774    overflow-y: auto;
    699775    overflow-x: hidden;
    700     max-height: calc(100vh - 204px - var(--atfp-notice-wrapper-height,0px));
     776    max-height: calc(100vh - 300px - var(--atfp-notice-wrapper-height,0px));
    701777    width: 100%;
    702778    position: relative;
     
    9661042}
    9671043
    968 #atfp_strings_model #atfp-localAiTranslator-strings-modal .atfp_string_container {
     1044#atfp_strings_model .atfp_string_container {
    9691045    max-height: calc(100vh - 270px - var(--atfp-notice-wrapper-height, 0px));
    9701046    box-shadow: 0 -1px 4px #0000005e inset;
     1047}
     1048
     1049#atfp_strings_model #atfp-yandex-strings-modal .atfp_string_container {
     1050    max-height: calc(100vh - 300px - var(--atfp-notice-wrapper-height, 0px));
    9711051}
    9721052
     
    9751055    margin-block: 16px;
    9761056}
    977 
    9781057
    9791058#atfp-pro-notice-wrapper {
     
    11831262    }
    11841263}
     1264
     1265@media screen and (max-width: 767px) and (min-width: 567px) {
     1266    #atfp-setting-modal .atfp-translator-row .atfp-translator-column {
     1267        width: 100% !important;
     1268    }
     1269
     1270    #atfp-setting-modal .atfp-translator-row:has(> :nth-child(2)) .atfp-translator-column {
     1271        width: calc(50% - (21.3px / 2)) !important;
     1272    }
     1273}
     1274
     1275@media screen and (max-width: 567px) {
     1276    #atfp-setting-modal .atfp-translator-row .atfp-translator-column {
     1277        width: 100% !important;
     1278    }
     1279}
  • automatic-translations-for-polylang/tags/1.4.6/assets/css/atfp-custom.min.css

    r3321700 r3388730  
    1 :is(#atfp-modal-open-warning-wrapper,#atfp-setting-modal,#atfp_strings_model) .modal-container{display:none;position:fixed;z-index:99999;top:0;width:100%;height:100vh;overflow:hidden;background-color:rgba(0,0,0,.75);justify-content:center;align-items:center;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}:is(#atfp-modal-open-warning-wrapper,#atfp-setting-modal) .modal-content{position:relative;background-color:#fefefe;width:clamp(200px,400px,80%);height:auto;overflow:hidden;border-radius:5px;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);-webkit-animation-name:animatetopsetting;-webkit-animation-duration:.6s;-webkit-animation-fill-mode:forwards;animation-name:animatetopsetting;animation-duration:.6s;animation-fill-mode:forwards;padding-block:16px;color:#000;border-radius:8px}#atfp-modal-open-warning-wrapper .modal-content{padding:16px;text-align:center}#atfp-modal-open-warning-wrapper .modal-content p{font-size:19.2px;font-weight:500}#atfp-modal-open-warning-wrapper .modal-content div[data-value]{display:inline-block;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;box-sizing:border-box;font-family:inherit;font-weight:inherit;vertical-align:top;text-decoration:none;text-shadow:none;text-align:center}#atfp-modal-open-warning-wrapper .modal-content div[data-value=yes]{padding:2px 11px;white-space:nowrap;background:#3db63d;border-color:#33a133;color:#fff}#atfp-modal-open-warning-wrapper .modal-content div[data-value=yes]:hover{background:#37a737;border-color:#238b23}#atfp-modal-open-warning-wrapper .modal-content div[data-value=no]{background:#ee4237;border-color:#dd362b;color:#fff;padding:2px 11px;display:inline-flex;align-items:center}#atfp-modal-open-warning-wrapper .modal-content div[data-value=no]:hover{background:#dd382e;border-color:#c72a20}#atfp-setting-modal .atfp-error-modal-box-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.75);display:flex;justify-content:center;align-items:center;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:99999}#atfp-setting-modal .atfp-error-modal-box{background-color:#fefefe;width:clamp(200px,500px,80%);height:auto;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);border-radius:8px}#atfp-setting-modal .atfp-error-modal-box-header{position:relative}#atfp-setting-modal .atfp-error-modal-box-header h3{height:unset;padding:8px 36px 8px 25px;border:none;background:0 0;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0;color:#000}#atfp-setting-modal .atfp-error-modal-box-header .atfp-error-modal-box-close{right:15px;top:13px;border-radius:0!important;height:30px!important;width:20px!important;position:absolute;font-size:32px;font-weight:700;color:#646970;cursor:pointer}#atfp-setting-modal .atfp-error-modal-box-body h4{margin:0;margin-top:0;margin-bottom:24px;display:block;font-weight:600;padding:0;box-sizing:border-box}#atfp-setting-modal .atfp-error-modal-box-body ol{margin-top:0;margin-bottom:24px;list-style-type:decimal;margin-left:32px;box-sizing:border-box;padding:0}#atfp-setting-modal .atfp-error-modal-box-body ol li{margin-bottom:6px;list-style:decimal}#atfp-setting-modal .atfp-error-modal-box-body p{margin:0;padding:0}#atfp-setting-modal .atfp-error-modal-box-body p *{color:red!important;font-size:16px;box-shadow:unset;outline:unset;border:unset;line-height:1.5}#atfp-setting-modal .atfp-error-modal-box-body p a{color:#2271b1!important;text-decoration:underline}button.atfpp-error-reload-btn{background:#0073aa;color:#fff!important;border:none;border-radius:4px;padding:4px 9px;cursor:pointer}button.atfpp-error-reload-btn:hover{background:#005682}#atfp-setting-modal .atfp-error-modal-box-body{min-height:0;max-height:65vh;height:auto;padding:22px;overflow:auto}#atfp-setting-modal .atfp-error-modal-box-footer{background:0 0;border:none;border-top:1px solid #dcdcde;margin-top:0;padding:16px 22.4px;text-align:end}#atfp-setting-modal .atfp-error-modal-box-footer .atfp-error-modal-box-close{background:#f6f7f7;border:1px solid #c3c4c7;color:#50575e}#atfp-setting-modal .atfp-error-modal-box-footer .atfp-error-modal-box-close:hover{background-color:#e1e1e1;border-color:#c9c9c9}#atfp-setting-modal .modal-content{width:clamp(200px,520px,100vw);padding:0}#atfp-setting-modal .atfp-error-message{margin:0!important;padding:0 0 10px;font-weight:500;font-size:13px;line-height:1.2;color:red;text-align:start}#atfp-setting-modal .atfp-provider-error{background:#ee4237;border-color:#dd362b;color:#fff;padding:2px 11px;display:inline-flex;align-items:center;justify-content:center}#atfp-setting-modal .atfp-provider-error:hover{background:#dd382e;border-color:#c72a20}#atfp-setting-modal .atfp-provider-error img{display:inline-flex;margin-bottom:0!important;margin-top:0!important;filter:invert(1) brightness(2);height:22px!important;margin-right:3px}#atfp-setting-modal .modal-header h2{height:unset;padding:8px 36px 8px 25px;border:none;background:0 0;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0}#atfp-setting-modal .modal-header span.close{right:15px;top:13px;border-radius:0!important;height:30px!important;width:20px!important;position:absolute;font-size:32px;font-weight:700;color:#646970;cursor:pointer}.atfp-setting-modal-body{max-width:100vw;overflow-x:auto}.atfp-setting-modal-body table{width:100%;border-collapse:collapse}.atfp-setting-modal-body thead{background:#f3f3f3}.atfp-setting-modal-body thead th{text-align:left;font-weight:500;font-size:14px;color:#555;padding-block:1rem}.atfp-setting-modal-body thead th:nth-child(1){padding-left:28px}.atfp-setting-modal-body thead th:nth-child(2){padding-left:90px}.atfp-setting-modal-body thead th:nth-child(3){padding-right:25px;text-align:center}.atfp-setting-modal-body tbody tr{border-top:1px solid #eee;height:64px}.atfp-setting-modal-body tbody td.atfp-provider-name{display:flex;align-items:center;font-size:1rem;font-weight:600;margin-block:.5rem}.atfp-setting-modal-body tbody td img{width:45px;margin-right:15px}.atfp-setting-modal-body tbody td:nth-child(1){padding-left:25px}.atfp-setting-modal-body tbody td:nth-child(2){padding-left:90px;padding-right:20px}.atfp-setting-modal-body tbody td:nth-child(3){padding-right:25px;text-align:center}.atfp-setting-modal-body tbody .button{width:123px;display:inline-block;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;box-sizing:border-box;font-family:inherit;font-weight:inherit;vertical-align:top;text-decoration:none;text-shadow:none;text-align:center}.atfp-setting-modal-body tbody .button.atfp-service-btn{padding:2px 11px;white-space:nowrap;background:#3db63d;border-color:#33a133;color:#fff}.atfp-setting-modal-body tbody .button.atfp-service-btn:hover{background:#37a737;border-color:#238b23}.atfp-setting-modal-body tbody .button.atfp-provider-error{background:#ee4237;border-color:#dd362b;color:#fff;padding:2px 11px;display:inline-flex;align-items:center}.atfp-setting-modal-body tbody .button.atfp-provider-error img{display:inline-flex;margin-bottom:0;margin-top:0;filter:invert(1) brightness(2);height:22px;margin-right:3px;width:unset!important}.atfp-setting-modal-body tbody .button.atfp-provider-error:hover{background:#dd382e;border-color:#c72a20}.atfp-setting-modal-body tbody .atfp-doc-icon{display:inline-flex;width:20px;height:26px}.atfp-setting-modal-body tbody .atfp-doc-icon:focus{outline:0;box-shadow:unset}.atfp-setting-modal-body tbody .atfp-doc-icon svg{width:20px;height:28px}#atfp-setting-modal .atfp-translator-row .atfp-translator-footer .atfp-localai-disabled-message:hover{background:red}#atfp-setting-modal .modal-footer{background:0 0;border:none;border-top:1px solid #dcdcde;margin-top:0;padding:16px 22.4px;text-align:end}#atfp-setting-modal .modal-footer .atfp-setting-close{background:#f6f7f7;border:1px solid #c3c4c7;color:#50575e}#atfp-setting-modal .modal-footer .atfp-setting-close:hover{background-color:#e1e1e1;border-color:#c9c9c9}#atfp_strings_model .atfp-notice{box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #c3c4c7;border-left-width:4px;padding:4.8px;margin-top:8px}#atfp_strings_model .atfp-notice p{padding:0;margin:0;font-size:14px}#atfp_strings_model .atfp-notice-info{border-left-color:#72aee6}#atfp_strings_model .atfp-notice-warning{border-left-color:#f0ad4e}#atfp_strings_model .atfp-notice-error{border-left-color:#d9534f}#atfp_strings_model .atfp-notice-success{border-left-color:#5cb85c}#atfp_strings_model .modal-content{position:relative;background-color:#fefefe;width:80%;max-height:calc(100% - 40px);min-height:70vh;overflow:hidden;border-radius:5px;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);-webkit-animation-name:animatetop;-webkit-animation-duration:.6s;animation-name:animatetop;animation-duration:.6s;animation-fill-mode:forwards}@-webkit-keyframes animatetopsetting{from{opacity:0}to{opacity:1}}@keyframes animatetopsetting{from{opacity:0}to{opacity:1}}@-webkit-keyframes animatetop{from{top:-300px;opacity:0}to{top:0;opacity:1}}@keyframes animatetop{from{top:-300px;opacity:0}to{top:0;opacity:1}}#atfp_strings_model .modal-header{padding:2px 16px;background-color:#5cb85c;color:#fff;height:86px;max-height:86px;overflow:hidden;position:relative}#atfp_strings_model .modal-header h2{display:inline-block;font-size:18px;color:#fff;padding:0;margin:18px 159px 5px 0;width:calc(100% - 160px)}button.atfp-setting-close{background:#f6f7f7;border:1px solid #c3c4c7;color:#50575e}button.atfp-setting-close:hover{background-color:#e1e1e1;border-color:#c9c9c9}#atfp_strings_model .modal-header .close{color:#fff;font-size:28px;font-weight:700;position:absolute;right:10px;top:18px;line-height:24px}#atfp_strings_model .modal-header .close:focus,#atfp_strings_model .modal-header .close:hover{color:#000;text-decoration:none;cursor:pointer}#atfp_strings_model .save_btn_cont{margin:8px;position:absolute;top:10px;right:40px}#atfp_strings_model .save_btn_cont button:not([disabled]):before{font-family:dashicons;content:"\f345";display:inline-block;font-size:24px;line-height:26px;vertical-align:middle;left:-20px;position:absolute;color:#fff;animation:moveit 5s infinite;-webkit-animation:moveit 1s infinite}.local_ai_translator_btn.button-primary{background:#2271b1;border-color:#2271b1;color:#fff;text-shadow:none;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;font-family:inherit}.local_ai_translator_btn.button-primary[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;text-decoration:none;text-shadow:none;border:none;min-height:30px;margin:0;padding:0 10px;white-space:nowrap;border-radius:2px;cursor:default}@keyframes moveit{from{left:-22px}to{left:-10px}}#atfp_strings_model .ytstats{padding:0;margin:5px 160px 5px 0;width:calc(100% - 160px)}#atfp_strings_model .ytstats a{color:#fff936}#atfp_strings_model .modal-body{padding:2px 16px}#atfp_strings_model .notice-dismiss{padding:0}#atfp_strings_model h3{width:100%;display:inline-block;font-size:22px;padding:0;color:#5cb85c;margin:0!important}#translate_element{margin-bottom:25px}#atfp_strings_model .atfp_string_container{overflow-y:auto;overflow-x:hidden;max-height:calc(100vh - 204px - var(--atfp-notice-wrapper-height,0px));width:100%;position:relative;color:#3c3c3c;margin-bottom:76px}#atfp_strings_model .atfp_string_container.atfp_empty_string{max-height:calc(100vh - 196px - var(--atfp-notice-wrapper-height,0px));display:flex;align-items:center}#atfp_strings_model .atfp_string_container.atfp_empty_string p{text-align:center;font-size:32px;font-weight:bolder;color:#5cb85c;background:#f5f5f5;padding:16px}#atfp_strings_model .modal-footer{display:flex;align-items:center}#atfp_strings_model .modal-footer .notice.atfp_string_count{display:block;max-width:calc(100% - 165px)!important}#atfp_strings_model .modal-footer .notice.atfp_string_count a{white-space:nowrap}#atfp_strings_model .notice.atfp_string_count{top:unset;left:unset;font-size:16px;background:0 0;border-width:0;margin-left:0;padding-left:0;padding-right:0}#atfp_strings_model .modal-footer .notice.atfp_string_count p{margin:0!important;padding:0!important;font-size:16px}#atfp_strings_model table{border-spacing:0;border-collapse:collapse;width:100%;max-width:100%;table-layout:fixed;padding:0;margin:0}#atfp_strings_model table td:first-child,#atfp_strings_model table th:first-child{width:60px;text-align:center}#atfp_strings_model table td,#atfp_strings_model table th{border:1px solid #ddd;padding:4px;height:26px;text-align:left;white-space:pre-wrap;font-size:12px;line-height:14px;overflow:hidden;vertical-align:middle}#atfp_strings_model .atfp_translate_progress{position:absolute;display:none;top:92px;left:10px;color:#fff;background:rgba(0,0,0,.5);width:calc(100% - 22px);border-radius:3px;height:100%;z-index:9;box-sizing:border-box;font-size:16px;line-height:20px;font-weight:700;text-align:center;padding-top:30px;height:calc(100% - 164px)}#atfp_strings_model .atfp_translate_element_wrapper{display:flex;justify-content:start;align-items:start;column-gap:8px;margin-block:1rem}#atfp_strings_model .atfp_translate_element_wrapper>button{height:34px;pointer-events:none}#atfp_strings_model .modal-footer{padding:2px 16px;background-color:#5cb85c;color:#fff;position:absolute;width:100%;bottom:0;height:66px;max-height:66px;box-sizing:border-box}#yt-widget .yt-listbox__input:not(:checked)~.yt-listbox__text{display:none!important}.atfp-skeleton-loader-wrapper .atfp-skeleton-loader-mini{height:19px;padding:9px;box-sizing:border-box;width:100%;border-radius:3px;background:linear-gradient(90deg,#e0e0e0 25%,#f5f5f5 50%,#e0e0e0 75%);background-size:200% 100%;animation:atfp-shimmer 1.2s infinite linear}.atfp-skeleton-loader-wrapper .translate-widget{display:grid;grid-template-columns:2fr 1fr;gap:10px;height:88px;align-items:center}.atfp-skeleton-loader-wrapper .translate-widget .atfp-skeleton-loader-mini{height:30px;max-width:180px;margin-left:auto}.atfp-skeleton-loader-wrapper .translate-widget .atfp-skeleton-loader-mini:nth-child(1){max-width:280px;margin-left:0;margin-right:auto}.atfp-skeleton-loader-wrapper table .atfp-skeleton-loader-mini{max-width:80%;margin:.3rem auto}#atfp_strings_model.atfp_fetch_error .atfp_string_container{display:flex;justify-content:center;align-items:center}#atfp_strings_model.atfp_fetch_error :where(.save_btn_cont,table#stringTemplate){display:none}#atfp_strings_model.atfp_fetch_error span.atfp_string_error_msg{color:red;font-size:24px;padding:32px}body>div.skiptranslate iframe.skiptranslate[frameborder][src][style="visibility:visible"]{visibility:hidden!important}.atfp-review-meta-box{text-align:center;box-shadow:0 0 10px rgba(0,0,0,.1882352941);padding:10px 0!important;border-radius:5px!important}.atfp-review-meta-box p{margin:0}.atfp-review-meta-box p a{margin-top:8px}.atfp-review-meta-box p a span{color:#ffb900!important;margin-left:5px}.atfp-loader-skeleton{position:absolute;height:100%;width:100%;overflow:hidden;background-color:#e0e0e0;border-radius:4px;top:0;left:0;opacity:.9}.atfp-loader-skeleton::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,#e0e0e0 25%,#f5f5f5 50%,#e0e0e0 75%);background-size:200% 100%;animation:atfp-shimmer 1.5s infinite linear}@keyframes atfp-shimmer{0%{background-position:100%}100%{background-position:-100%}}:where(#atfp-localAiTranslator-strings-modal,#atfp-yandex-strings-modal) .translator-widget{justify-content:space-between;align-items:center}#atfp_strings_model #atfp-localAiTranslator-strings-modal h3{margin:20px 0}#atfp_strings_model #atfp-localAiTranslator-strings-modal .atfp_string_container{max-height:calc(100vh - 270px - var(--atfp-notice-wrapper-height,0px));box-shadow:0 -1px 4px #0000005e inset}#atfp_strings_model .react-loading-skeleton-atfp{height:calc(100vh - 235px - var(--atfp-notice-wrapper-height,0px))!important;margin-block:16px}#atfp-pro-notice-wrapper{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;display:flex;height:100%;justify-content:center;align-items:center;background-color:rgba(34,34,34,.7);border-radius:10px;box-shadow:0 0 15px rgba(0,0,0,.2);z-index:9999;opacity:0;transition:opacity .5s ease;padding:16px;color:#000}#atfp-pro-notice-wrapper.atfp-active{opacity:1}#atfp-pro-notice-wrapper .atfp-pro-notice{position:relative;top:0;left:0;max-width:500px;background:#fff;border-radius:10px;overflow:hidden}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-header h2{height:unset;padding:8px 36px 8px 25px;border:none;background:0 0;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-header .atfp-close-button{right:15px;top:13px;border-radius:0!important;height:30px!important;width:20px!important;position:absolute;font-size:32px;font-weight:700;color:#646970;cursor:pointer}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-content{margin:15px 20px;font-size:16px;color:#3c3c3c;line-height:18px}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-content p{font-size:16px;line-height:18px;margin:0!important;padding:0!important}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-footer{padding:15px 20px;border-top:1px solid #dcdcde}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-footer .atfp-upgrade-button{background:#db352b;border-color:#dd362b;color:#fff;padding:2px 11px;align-items:center;margin-inline:auto;align-self:center;justify-content:center;width:123px;display:inline-block;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;box-sizing:border-box;font-family:inherit;font-weight:inherit;vertical-align:top;text-decoration:none;text-shadow:none;text-align:center}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-footer .atfp-upgrade-button:hover{background:#dd382e;border-color:#c72a20}#atfp-setting-modal .atfp-tooltip-element{position:relative;overflow:visible;cursor:pointer;white-space:nowrap}#atfp-setting-modal .atfp-tooltip-element .atfp-tooltip{display:block;font-size:12.8px;position:absolute;background:#5cb85c;color:#fff!important;padding:3.2px 8px;border-radius:4px;top:0;left:20px;right:20px;margin:auto;opacity:0;width:121px;white-space:nowrap}#atfp-setting-modal .atfp-tooltip-element .atfp-tooltip.atfp-tooltip-active{-webkit-animation:atfp-slide-up .15s cubic-bezier(.51,.92,.265,1.55) both;animation:atfp-slide-up .15s cubic-bezier(.51,.92,.265,1.55) both}#atfp-setting-modal .atfp-tooltip-element .atfp-tooltip:after{content:"";position:absolute;top:98%;left:50%;margin-left:-8px;width:0;height:0;border-top:8px solid #5cb85c;border-right:8px solid transparent;border-left:8px solid transparent}body.rtl #atfp-setting-modal .modal-header h2{padding:8px 25px 8px 36px}body.rtl #atfp_strings_model .modal-header .close{left:10px;right:unset}body.rtl #atfp_strings_model .modal-header h2{margin:18px 0 5px 159px}body.rtl #atfp-setting-modal .modal-header span.close{left:15px;right:unset}body.rtl #atfp_strings_model .save_btn_cont{left:40px;right:unset}@-webkit-keyframes atfp-slide-up{0%{transform:translateY(0) scale(.8);opacity:0}100%{transform:translateY(-35px) scale(1);opacity:1}}@keyframes atfp-slide-up{0%{transform:translateY(0) scale(.8);opacity:0}100%{transform:translateY(-35px) scale(1);opacity:1}}
     1:is(#atfp-modal-open-warning-wrapper,#atfp-setting-modal,#atfp_strings_model) .modal-container{display:none;position:fixed;z-index:99999;top:0;width:100%;height:100vh;overflow:hidden;background-color:rgba(0,0,0,.75);justify-content:center;align-items:center;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}:is(#atfp-modal-open-warning-wrapper,#atfp-setting-modal) .modal-content{position:relative;background-color:#fefefe;width:clamp(200px,400px,80%);height:auto;overflow:hidden;border-radius:5px;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);-webkit-animation-name:animatetopsetting;-webkit-animation-duration:.6s;-webkit-animation-fill-mode:forwards;animation-name:animatetopsetting;animation-duration:.6s;animation-fill-mode:forwards;padding-block:16px;color:#000;border-radius:8px}#atfp-modal-open-warning-wrapper .modal-content{padding:16px;text-align:center}#atfp-modal-open-warning-wrapper .modal-content p{font-size:19.2px;font-weight:500}#atfp-modal-open-warning-wrapper .modal-content div[data-value]{display:inline-flex;align-items:center;justify-content:center;font-size:13px;line-height:1.3;min-height:30px;margin:0;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;box-sizing:border-box;font-family:inherit;font-weight:inherit;vertical-align:top;text-decoration:none;text-shadow:none;text-align:center}#atfp-modal-open-warning-wrapper .modal-content div[data-value=yes]{padding:2px 11px;white-space:nowrap;background:#3db63d;border-color:#33a133;color:#fff}#atfp-modal-open-warning-wrapper .modal-content div[data-value=yes]:hover{background:#37a737;border-color:#238b23}#atfp-modal-open-warning-wrapper .modal-content div[data-value=no]{background:#ee4237;border-color:#dd362b;color:#fff;padding:2px 11px;display:inline-flex;align-items:center}#atfp-modal-open-warning-wrapper .modal-content div[data-value=no]:hover{background:#dd382e;border-color:#c72a20}#atfp-setting-modal .atfp-error-modal-box-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.75);display:flex;justify-content:center;align-items:center;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:99999}#atfp-setting-modal .atfp-error-modal-box{background-color:#fefefe;width:clamp(200px,500px,80%);height:auto;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);border-radius:8px}#atfp-setting-modal .atfp-error-modal-box-header{position:relative}#atfp-setting-modal .atfp-error-modal-box-header h3{height:unset;padding:8px 36px 8px 25px;border:none;background:0 0;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0;color:#000}#atfp-setting-modal .atfp-error-modal-box-header .atfp-error-modal-box-close{right:15px;top:13px;border-radius:0!important;height:30px!important;width:20px!important;position:absolute;font-size:32px;font-weight:700;color:#646970;cursor:pointer}#atfp-setting-modal .atfp-error-modal-box-body h4{margin:0;margin-top:0;margin-bottom:24px;display:block;font-weight:600;padding:0;box-sizing:border-box}#atfp-setting-modal .atfp-error-modal-box-body ol{margin-top:0;margin-bottom:24px;list-style-type:decimal;margin-left:32px;box-sizing:border-box;padding:0}#atfp-setting-modal .atfp-error-modal-box-body ol li{margin-bottom:6px;list-style:decimal}#atfp-setting-modal .atfp-error-modal-box-body p{margin:0;padding:0}#atfp-setting-modal .atfp-error-modal-box-body p *{color:red!important;font-size:16px;box-shadow:unset;outline:unset;border:unset;line-height:1.5}#atfp-setting-modal .atfp-error-modal-box-body p a{color:#2271b1!important;text-decoration:underline}button.atfp-error-reload-btn{background:#0073aa;color:#fff!important;border:none;border-radius:4px;padding:4px 9px;cursor:pointer}button.atfp-error-reload-btn:hover{background:#005682}#atfp-setting-modal .atfp-error-modal-box-body{min-height:0;max-height:65vh;height:auto;padding:22px;overflow:auto}#atfp-setting-modal .atfp-error-modal-box-footer{background:0 0;border:none;border-top:1px solid #dcdcde;margin-top:0;padding:16px 22.4px;text-align:end}#atfp-setting-modal .atfp-error-modal-box-footer .atfp-error-modal-box-close{display:inline-flex;align-items:center;justify-content:center;font-size:1rem;line-height:1.3;min-height:30px;margin:0;padding:.1rem .4rem;white-space:nowrap;border-radius:3px;cursor:pointer;opacity:.7;background:#f6f7f7;border:1px solid #c3c4c7;color:#50575e;padding:5px;border-radius:3px}#atfp-setting-modal .atfp-error-modal-box-footer .atfp-error-modal-box-close:hover{background-color:#e1e1e1;border-color:#c9c9c9}#atfp-setting-modal .modal-content{width:clamp(200px,520px,100vw);padding:0}#atfp-setting-modal .atfp-error-message{margin:0!important;padding:0 0 10px;font-weight:500;font-size:13px;line-height:1.2;color:red;text-align:start}#atfp-setting-modal .atfp-provider-error{background:#ee4237;border-color:#dd362b;color:#fff;padding:2px 11px;display:inline-flex;align-items:center}#atfp-setting-modal .atfp-provider-error:hover{background:#dd382e;border-color:#c72a20}#atfp-setting-modal .atfp-provider-error img{display:inline-flex;margin-bottom:0!important;margin-top:0!important;filter:invert(1) brightness(2);height:22px!important;margin-right:3px}#atfp-setting-modal .modal-header h2{height:unset;padding:8px 36px 8px 25px;border:none;background:0 0;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0}#atfp-setting-modal .modal-header span.close{right:15px;top:13px;border-radius:0!important;height:30px!important;width:20px!important;position:absolute;font-size:32px;font-weight:700;color:#646970;cursor:pointer}.atfp-setting-modal-body{max-width:100vw;overflow-x:auto}.atfp-setting-modal-body table{width:100%;border-collapse:collapse}.atfp-setting-modal-body thead{background:#f3f3f3}.atfp-setting-modal-body thead th{text-align:left;font-weight:500;font-size:14px;color:#555;padding-block:1rem}.atfp-setting-modal-body thead th:nth-child(1){padding-left:28px}.atfp-setting-modal-body thead th:nth-child(2){padding-left:90px}.atfp-setting-modal-body thead th:nth-child(3){padding-right:25px;text-align:center}.atfp-setting-modal-body tbody tr{border-top:1px solid #eee;height:64px}.atfp-setting-modal-body tbody td.atfp-provider-name{display:flex;align-items:center;font-size:16px;font-weight:600;margin-block:.5rem}.atfp-setting-modal-body tbody td img{width:45px;margin-right:15px}.atfp-setting-modal-body tbody td:nth-child(1){padding-left:25px}.atfp-setting-modal-body tbody td:nth-child(2){padding-left:90px;padding-right:20px}.atfp-setting-modal-body tbody td:nth-child(3){padding-right:25px;text-align:center}.atfp-setting-modal-body tbody .button{width:123px;display:inline-flex;align-items:center;justify-content:center;font-size:13px;line-height:1.3;min-height:30px;margin:0;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;box-sizing:border-box;font-family:inherit;font-weight:inherit;vertical-align:top;text-decoration:none;text-shadow:none;text-align:center}.atfp-setting-modal-body tbody .button.atfp-service-btn{padding:2px 11px;white-space:nowrap;background:#3db63d;border-color:#33a133;color:#fff}.atfp-setting-modal-body tbody .button.atfp-service-btn:hover{background:#37a737;border-color:#238b23}.atfp-setting-modal-body tbody .button.atfp-provider-error{background:#ee4237;border-color:#dd362b;color:#fff;padding:2px 11px;display:inline-flex;align-items:center}.atfp-setting-modal-body tbody .button.atfp-provider-error img{display:inline-flex;margin-bottom:0;margin-top:0;filter:invert(1) brightness(2);height:22px;margin-right:3px;width:unset!important}.atfp-setting-modal-body tbody .button.atfp-provider-error:hover{background:#dd382e;border-color:#c72a20}.atfp-setting-modal-body tbody .atfp-doc-icon{display:inline-flex;width:20px;height:26px}.atfp-setting-modal-body tbody .atfp-doc-icon:focus{outline:0;box-shadow:unset}.atfp-setting-modal-body tbody .atfp-doc-icon svg{width:20px;height:28px}#atfp-setting-modal .atfp-translator-row .atfp-translator-footer .atfp-localai-disabled-message:hover{background:red}#atfp-setting-modal .modal-footer{background:0 0;border:none;border-top:1px solid #dcdcde;margin-top:0;padding:16px 22.4px;text-align:end}#atfp-setting-modal .modal-footer .atfp-setting-close{display:inline-flex;align-items:center;justify-content:center;font-size:1rem;line-height:1.3;min-height:30px;margin:0;padding:.1rem .4rem;white-space:nowrap;border-radius:3px;cursor:pointer;opacity:.7;background:#f6f7f7;border:1px solid #c3c4c7;color:#50575e;padding:5px;border-radius:3px}#atfp-setting-modal .modal-footer .atfp-setting-close:hover{background-color:#e1e1e1;border-color:#c9c9c9}#atfp_strings_model .atfp-notice{box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #c3c4c7;border-left-width:4px;padding:4.8px;margin-top:8px}#atfp_strings_model .atfp-notice p{padding:0;margin:0;font-size:14px;color:#3c3c3c}#atfp_strings_model .atfp-notice-info{border-left-color:#72aee6}#atfp_strings_model .atfp-notice-warning{border-left-color:#f0ad4e}#atfp_strings_model .atfp-notice-error{border-left-color:#d9534f}#atfp_strings_model .atfp-notice-success{border-left-color:#5cb85c}#atfp_strings_model .modal-content{position:relative;background-color:#fefefe;width:80%;max-height:calc(100% - 40px);min-height:70vh;overflow:hidden;border-radius:5px;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);-webkit-animation-name:animatetop;-webkit-animation-duration:.6s;animation-name:animatetop;animation-duration:.6s;animation-fill-mode:forwards}@-webkit-keyframes animatetopsetting{from{opacity:0}to{opacity:1}}@keyframes animatetopsetting{from{opacity:0}to{opacity:1}}@-webkit-keyframes animatetop{from{top:-300px;opacity:0}to{top:0;opacity:1}}@keyframes animatetop{from{top:-300px;opacity:0}to{top:0;opacity:1}}#atfp_strings_model .modal-header{padding:2px 16px;background-color:#5cb85c;color:#fff;height:86px;max-height:86px;overflow:hidden;position:relative}#atfp_strings_model .modal-header h2{display:inline-block;font-size:18px;color:#fff;padding:0;margin:18px 159px 5px 0;width:calc(100% - 160px)}button.atfp-setting-close{background:#f6f7f7;border:1px solid #c3c4c7;color:#50575e}button.atfp-setting-close:hover{background-color:#e1e1e1;border-color:#c9c9c9}#atfp_strings_model .modal-header .close{color:#fff;font-size:28px;font-weight:700;position:absolute;right:10px;top:18px;line-height:24px}#atfp_strings_model .modal-header .close:focus,#atfp_strings_model .modal-header .close:hover{color:#000;text-decoration:none;cursor:pointer}#atfp_strings_model .save_btn_cont{margin:8px;position:absolute;top:10px;right:40px}#atfp_strings_model .save_btn_cont button:not([disabled]):before{font-family:dashicons;content:"\f345";display:inline-block;font-size:24px;line-height:26px;vertical-align:middle;left:-20px;position:absolute;color:#fff;animation:moveit 5s infinite;-webkit-animation:moveit 1s infinite}#atfp_strings_model .save_btn_cont button .updating-text{display:flex;align-items:center;justify-content:center}#atfp_strings_model .save_btn_cont button .updating-text .dot{width:4px;height:4px;border-radius:999px;background:#fff;margin-left:1px;margin-top:6px;opacity:.25;animation:atfp-savingBlink 1.05s infinite ease-in-out;animation-delay:calc(var(--i) * .18s - 1.05s);will-change:opacity,transform}@keyframes atfp-savingBlink{0%,20%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-1px)}60%{opacity:.9;transform:translateY(0)}100%{opacity:.25;transform:translateY(0)}}.local_ai_translator_btn.button-primary{background:#2271b1;border-color:#2271b1;color:#fff;text-shadow:none;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-size:13px;line-height:1.3;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;font-family:inherit}.local_ai_translator_btn.button-primary[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;text-decoration:none;text-shadow:none;border:none;min-height:30px;margin:0;padding:0 10px;white-space:nowrap;border-radius:2px;cursor:default}@keyframes moveit{from{left:-22px}to{left:-10px}}#atfp_strings_model .ytstats{padding:0;margin:5px 160px 5px 0;width:calc(100% - 160px)}#atfp_strings_model .ytstats a{color:#fff936}#atfp_strings_model .modal-body{padding:2px 16px}#atfp_strings_model .notice-dismiss{padding:0}#atfp_strings_model h3{width:100%;display:inline-block;font-size:22px;padding:0;color:#5cb85c;margin:0!important}#translate_element{margin-bottom:25px}#atfp_strings_model .atfp_string_container{overflow-y:auto;overflow-x:hidden;max-height:calc(100vh - 300px - var(--atfp-notice-wrapper-height,0px));width:100%;position:relative;color:#3c3c3c;margin-bottom:76px}#atfp_strings_model .atfp_string_container.atfp_empty_string{max-height:calc(100vh - 196px - var(--atfp-notice-wrapper-height,0px));display:flex;align-items:center}#atfp_strings_model .atfp_string_container.atfp_empty_string p{text-align:center;font-size:32px;font-weight:bolder;color:#5cb85c;background:#f5f5f5;padding:16px}#atfp_strings_model .modal-footer{display:flex;align-items:center}#atfp_strings_model .modal-footer .notice.atfp_string_count{display:block;max-width:calc(100% - 165px)!important}#atfp_strings_model .modal-footer .notice.atfp_string_count a{white-space:nowrap}#atfp_strings_model .notice.atfp_string_count{top:unset;left:unset;font-size:16px;background:0 0;border-width:0;margin-left:0;padding-left:0;padding-right:0}#atfp_strings_model .modal-footer .notice.atfp_string_count p{margin:0!important;padding:0!important;font-size:16px}#atfp_strings_model table{border-spacing:0;border-collapse:collapse;width:100%;max-width:100%;table-layout:fixed;padding:0;margin:0}#atfp_strings_model table td:first-child,#atfp_strings_model table th:first-child{width:60px;text-align:center}#atfp_strings_model table td,#atfp_strings_model table th{border:1px solid #ddd;padding:4px;height:26px;text-align:left;white-space:pre-wrap;font-size:12px;line-height:14px;overflow:hidden;vertical-align:middle}#atfp_strings_model .atfp_translate_progress{position:absolute;display:none;top:92px;left:10px;color:#fff;background:rgba(0,0,0,.5);width:calc(100% - 22px);border-radius:3px;height:100%;z-index:9;box-sizing:border-box;font-size:16px;line-height:20px;font-weight:700;text-align:center;padding-top:30px;height:calc(100% - 164px)}#atfp_strings_model .atfp_translate_element_wrapper{display:flex;justify-content:start;align-items:start;column-gap:8px;margin-block:1rem}#atfp_strings_model .atfp_translate_element_wrapper>button{height:34px;pointer-events:none}#atfp_strings_model .modal-footer{padding:2px 16px;background-color:#5cb85c;color:#fff;position:absolute;width:100%;bottom:0;height:66px;max-height:66px;box-sizing:border-box}#yt-widget .yt-listbox__input:not(:checked)~.yt-listbox__text{display:none!important}.atfp-skeleton-loader-wrapper .atfp-skeleton-loader-mini{height:19px;padding:9px;box-sizing:border-box;width:100%;border-radius:3px;background:linear-gradient(90deg,#e0e0e0 25%,#f5f5f5 50%,#e0e0e0 75%);background-size:200% 100%;animation:atfp-shimmer 1.2s infinite linear}.atfp-skeleton-loader-wrapper .translate-widget{display:grid;grid-template-columns:2fr 1fr;gap:10px;height:88px;align-items:center}.atfp-skeleton-loader-wrapper .translate-widget .atfp-skeleton-loader-mini{height:30px;max-width:180px;margin-left:auto}.atfp-skeleton-loader-wrapper .translate-widget .atfp-skeleton-loader-mini:nth-child(1){max-width:280px;margin-left:0;margin-right:auto}.atfp-skeleton-loader-wrapper table .atfp-skeleton-loader-mini{max-width:80%;margin:.3rem auto}#atfp_strings_model.atfp_fetch_error .atfp_string_container{display:flex;justify-content:center;align-items:center}#atfp_strings_model.atfp_fetch_error :where(.save_btn_cont,table#stringTemplate){display:none}#atfp_strings_model.atfp_fetch_error span.atfp_string_error_msg{color:red;font-size:24px;padding:32px}body>div.skiptranslate iframe.skiptranslate[frameborder][src][style="visibility:visible"]{visibility:hidden!important}.atfp-review-meta-box{text-align:center;box-shadow:0 0 10px rgba(0,0,0,.1882352941);padding:10px 0!important;border-radius:5px!important}.atfp-review-meta-box p{margin:0}.atfp-review-meta-box p a{margin-top:8px}.atfp-review-meta-box p a span{color:#ffb900!important;margin-left:5px}.atfp-loader-skeleton{position:absolute;height:100%;width:100%;overflow:hidden;background-color:#e0e0e0;border-radius:4px;top:0;left:0;opacity:.9}.atfp-loader-skeleton::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,#e0e0e0 25%,#f5f5f5 50%,#e0e0e0 75%);background-size:200% 100%;animation:atfp-shimmer 1.5s infinite linear}@keyframes atfp-shimmer{0%{background-position:100%}100%{background-position:-100%}}:where(#atfp-localAiTranslator-strings-modal,#atfp-yandex-strings-modal) .translator-widget{justify-content:space-between;align-items:center}#atfp_strings_model #atfp-localAiTranslator-strings-modal h3{margin:20px 0}#atfp_strings_model .atfp_string_container{max-height:calc(100vh - 270px - var(--atfp-notice-wrapper-height,0px));box-shadow:0 -1px 4px #0000005e inset}#atfp_strings_model #atfp-yandex-strings-modal .atfp_string_container{max-height:calc(100vh - 300px - var(--atfp-notice-wrapper-height,0px))}#atfp_strings_model .react-loading-skeleton-atfp{height:calc(100vh - 235px - var(--atfp-notice-wrapper-height,0px))!important;margin-block:16px}#atfp-pro-notice-wrapper{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;display:flex;height:100%;justify-content:center;align-items:center;background-color:rgba(34,34,34,.7);border-radius:10px;box-shadow:0 0 15px rgba(0,0,0,.2);z-index:9999;opacity:0;transition:opacity .5s ease;padding:16px;color:#000}#atfp-pro-notice-wrapper.atfp-active{opacity:1}#atfp-pro-notice-wrapper .atfp-pro-notice{position:relative;top:0;left:0;max-width:500px;background:#fff;border-radius:10px;overflow:hidden}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-header h2{height:unset;padding:8px 36px 8px 25px;border:none;background:0 0;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-header .atfp-close-button{right:15px;top:13px;border-radius:0!important;height:30px!important;width:20px!important;position:absolute;font-size:32px;font-weight:700;color:#646970;cursor:pointer}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-content{margin:15px 20px;font-size:16px;color:#3c3c3c;line-height:18px}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-content p{font-size:16px;line-height:18px;margin:0!important;padding:0!important}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-footer{padding:15px 20px;border-top:1px solid #dcdcde}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-footer .atfp-upgrade-button{background:#db352b;border-color:#dd362b;color:#fff;padding:2px 11px;align-items:center;margin-inline:auto;align-self:center;justify-content:center;width:123px;display:inline-block;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;box-sizing:border-box;font-family:inherit;font-weight:inherit;vertical-align:top;text-decoration:none;text-shadow:none;text-align:center}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-footer .atfp-upgrade-button:hover{background:#dd382e;border-color:#c72a20}#atfp-setting-modal .atfp-tooltip-element{position:relative;overflow:visible;cursor:pointer;white-space:nowrap}#atfp-setting-modal .atfp-tooltip-element .atfp-tooltip{display:block;font-size:12.8px;position:absolute;background:#5cb85c;color:#fff!important;padding:3.2px 8px;border-radius:4px;top:0;left:20px;right:20px;margin:auto;opacity:0;width:121px;white-space:nowrap}#atfp-setting-modal .atfp-tooltip-element .atfp-tooltip.atfp-tooltip-active{-webkit-animation:atfp-slide-up .15s cubic-bezier(.51,.92,.265,1.55) both;animation:atfp-slide-up .15s cubic-bezier(.51,.92,.265,1.55) both}#atfp-setting-modal .atfp-tooltip-element .atfp-tooltip:after{content:"";position:absolute;top:98%;left:50%;margin-left:-8px;width:0;height:0;border-top:8px solid #5cb85c;border-right:8px solid transparent;border-left:8px solid transparent}body.rtl #atfp-setting-modal .modal-header h2{padding:8px 25px 8px 36px}body.rtl #atfp_strings_model .modal-header .close{left:10px;right:unset}body.rtl #atfp_strings_model .modal-header h2{margin:18px 0 5px 159px}body.rtl #atfp-setting-modal .modal-header span.close{left:15px;right:unset}body.rtl #atfp_strings_model .save_btn_cont{left:40px;right:unset}@-webkit-keyframes atfp-slide-up{0%{transform:translateY(0) scale(.8);opacity:0}100%{transform:translateY(-35px) scale(1);opacity:1}}@keyframes atfp-slide-up{0%{transform:translateY(0) scale(.8);opacity:0}100%{transform:translateY(-35px) scale(1);opacity:1}}@media screen and (max-width:767px) and (min-width:567px){#atfp-setting-modal .atfp-translator-row .atfp-translator-column{width:100%!important}#atfp-setting-modal .atfp-translator-row:has(>:nth-child(2)) .atfp-translator-column{width:calc(50% - (21.3px / 2))!important}}@media screen and (max-width:567px){#atfp-setting-modal .atfp-translator-row .atfp-translator-column{width:100%!important}}
  • automatic-translations-for-polylang/tags/1.4.6/assets/css/atfp-elementor-translate.css

    r3270250 r3388730  
    1     button.elementor-button.atfp-translate-button:enabled {
    2         border-radius: 0px;
    3         color: rgb(12, 13, 14);
    4         background-color: #F0ABFC
    5     }
     1button.elementor-button.atfp-translate-button:enabled {
     2    border-radius: 0px;
     3    color: rgb(12, 13, 14);
     4    background-color: #F0ABFC
     5}
    66
    7     button.elementor-button.atfp-translate-button:enabled:hover {
    8         background-color: rgb(235, 142, 251);
    9     }
     7button.elementor-button.atfp-translate-button:enabled:hover {
     8    background-color: rgb(235, 142, 251);
     9}
    1010
    11     button.elementor-button.atfp-translate-button:disabled {
    12         cursor: default;
    13         border-radius: 0px;
    14         color: rgb(12, 13, 14);
    15     }
     11button.elementor-button.atfp-translate-button:disabled {
     12    cursor: default;
     13    border-radius: 0px;
     14    color: rgb(12, 13, 14);
     15}
    1616
    17     /* Footer Close Button */
    18     button.atfp-setting-close {
    19         margin-top: 14.4px;
    20         font-size: 16px;
    21         padding: 1.6px 6.4px;
    22         cursor: pointer;
    23         opacity: .7;
    24     }
     17/* Footer Close Button */
     18button.atfp-setting-close {
     19    margin-top: .9rem;
     20    font-size: 1rem;
     21    padding: .1rem .4rem;
     22    cursor: pointer;
     23    opacity: .7;
     24}
    2525
    26     button.atfp-setting-close:hover {
    27         opacity: 1;
    28     }
     26button.atfp-setting-close:hover {
     27    opacity: 1;
     28}
    2929
    30     /* ******Popup***** */
     30/* ******Popup***** */
    3131
    32     .save_it.button-primary[disabled] {
    33         color: #a7aaad !important;
    34         background: #f6f7f7 !important;
    35         border-color: #dcdcde !important;
    36         box-shadow: none !important;
    37         text-shadow: none !important;
    38         cursor: default;
    39         padding: 8px 12px;
    40         border: none;
    41         border-radius: 2px;
    42     }
     32.save_it.button-primary[disabled] {
     33    color: #a7aaad !important;
     34    background: #f6f7f7 !important;
     35    border-color: #dcdcde !important;
     36    box-shadow: none !important;
     37    text-shadow: none !important;
     38    cursor: default;
     39    padding: 8px 12px;
     40    border: none;
     41    border-radius: 2px;
     42}
    4343
    44     .save_it.button-primary {
    45         background: #2271b1;
    46         border-color: #2271b1;
    47         color: #fff;
    48         text-decoration: none;
    49         text-shadow: none;
    50         padding: 8px 12px;
    51         border: none;
    52         border-radius: 2px;
    53         cursor: pointer;
    54     }
     44.save_it.button-primary {
     45    background: #2271b1;
     46    border-color: #2271b1;
     47    color: #fff;
     48    text-decoration: none;
     49    text-shadow: none;
     50    padding: 8px 12px;
     51    border: none;
     52    border-radius: 2px;
     53    cursor: pointer;
     54}
    5555
    56     #atfp_strings_model .save_btn_cont button:not([disabled])::before {
    57         line-height: 14px !important;
    58     }
     56#atfp_strings_model .save_btn_cont button:not([disabled])::before {
     57    line-height: 14px !important;
     58}
  • automatic-translations-for-polylang/tags/1.4.6/assets/css/atfp-elementor-translate.min.css

    r3270250 r3388730  
    1 button.elementor-button.atfp-translate-button:enabled{border-radius:0;color:#0c0d0e;background-color:#f0abfc}button.elementor-button.atfp-translate-button:enabled:hover{background-color:#eb8efb}button.elementor-button.atfp-translate-button:disabled{cursor:default;border-radius:0;color:#0c0d0e}button.atfp-setting-close{margin-top:14.4px;font-size:16px;padding:1.6px 6.4px;cursor:pointer;opacity:.7}button.atfp-setting-close:hover{opacity:1}.save_it.button-primary[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;box-shadow:none!important;text-shadow:none!important;cursor:default;padding:8px 12px;border:none;border-radius:2px}.save_it.button-primary{background:#2271b1;border-color:#2271b1;color:#fff;text-decoration:none;text-shadow:none;padding:8px 12px;border:none;border-radius:2px;cursor:pointer}#atfp_strings_model .save_btn_cont button:not([disabled])::before{line-height:14px!important}
     1button.elementor-button.atfp-translate-button:enabled{border-radius:0;color:#0c0d0e;background-color:#f0abfc}button.elementor-button.atfp-translate-button:enabled:hover{background-color:#eb8efb}button.elementor-button.atfp-translate-button:disabled{cursor:default;border-radius:0;color:#0c0d0e}button.atfp-setting-close{margin-top:.9rem;font-size:1rem;padding:.1rem .4rem;cursor:pointer;opacity:.7}button.atfp-setting-close:hover{opacity:1}.save_it.button-primary[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;box-shadow:none!important;text-shadow:none!important;cursor:default;padding:8px 12px;border:none;border-radius:2px}.save_it.button-primary{background:#2271b1;border-color:#2271b1;color:#fff;text-decoration:none;text-shadow:none;padding:8px 12px;border:none;border-radius:2px;cursor:pointer}#atfp_strings_model .save_btn_cont button:not([disabled])::before{line-height:14px!important}
  • automatic-translations-for-polylang/tags/1.4.6/assets/js/atfp-supported-block.js

    r3308442 r3388730  
    3131        }
    3232
     33        const length = e.dt.page.info().length;
     34        const page = e.dt.page.info().page;
     35
    3336        rows.each(function(index,row){
    3437          const emptyCell=row.querySelector('td.dt-empty');
    3538          if(!emptyCell){
    36             row.children[0].textContent=index+1;
     39            row.children[0].textContent = (page * length) + index + 1;
    3740          }
    3841        });
  • automatic-translations-for-polylang/tags/1.4.6/assets/js/atfp-supported-block.min.js

    r3308442 r3388730  
    1 class BlockFilterSorter{constructor(){this.filterSelect=document.getElementById("atfp-blocks-filter"),this.categorySelect=document.getElementById("atfp-blocks-category"),this.tableBody=document.querySelector(".atfp-supported-blocks-table tbody"),this.atfpDataTableObj=null,this.tableBody&&(this.atfpDataTable(),this.filterSelect.addEventListener("input",this.datatableFilterHandler),this.categorySelect.addEventListener("input",this.datatableCategoryHandler))}atfpDataTable(){if(this.tableBody){this.atfpDataTableObj=new DataTable("#atfp-supported-blocks-table",{pageLength:25,infoCallback:function(settings,start,end,total,max){return`Showing ${start} to ${end} of ${max} records`}}),this.atfpDataTableObj.on("draw.dt",(function(e){const rows=jQuery(this).find("tbody tr");0===rows.length.length&&this.atfpDataTableObj.empty(),rows.each((function(index,row){const emptyCell=row.querySelector("td.dt-empty");emptyCell||(row.children[0].textContent=index+1)}))}));const tableWrp=document.getElementById("atfp-supported-blocks-table_wrapper"),selectWrapper=document.querySelector(".atfp-supported-blocks-filters");selectWrapper.remove(),tableWrp.prepend(selectWrapper)}}datatableFilterHandler=()=>{if(this.atfpDataTableObj){let selectedFilter=this.filterSelect.value.charAt(0).toUpperCase()+this.filterSelect.value.slice(1);selectedFilter="All"===selectedFilter?"":selectedFilter,this.atfpDataTableObj.column(3).search(selectedFilter,!1,!1,!1).draw()}};datatableCategoryHandler=()=>{if(this.atfpDataTableObj){let selectedCategory=this.categorySelect.value;selectedCategory="all"!==selectedCategory&&selectedCategory,this.atfpDataTableObj.column(1).search(selectedCategory?new RegExp("^"+selectedCategory+"/"):"",!1,!1,!1).draw()}}}window.addEventListener("load",()=>{new BlockFilterSorter});
     1class BlockFilterSorter{constructor(){this.filterSelect=document.getElementById("atfp-blocks-filter"),this.categorySelect=document.getElementById("atfp-blocks-category"),this.tableBody=document.querySelector(".atfp-supported-blocks-table tbody"),this.atfpDataTableObj=null,this.tableBody&&(this.atfpDataTable(),this.filterSelect.addEventListener("input",this.datatableFilterHandler),this.categorySelect.addEventListener("input",this.datatableCategoryHandler))}atfpDataTable(){if(this.tableBody){this.atfpDataTableObj=new DataTable("#atfp-supported-blocks-table",{pageLength:25,infoCallback:function(settings,start,end,total,max){return`Showing ${start} to ${end} of ${max} records`}}),this.atfpDataTableObj.on("draw.dt",(function(e){const rows=jQuery(this).find("tbody tr");0===rows.length.length&&this.atfpDataTableObj.empty();const length=e.dt.page.info().length,page=e.dt.page.info().page;rows.each((function(index,row){const emptyCell=row.querySelector("td.dt-empty");emptyCell||(row.children[0].textContent=page*length+index+1)}))}));const tableWrp=document.getElementById("atfp-supported-blocks-table_wrapper"),selectWrapper=document.querySelector(".atfp-supported-blocks-filters");selectWrapper.remove(),tableWrp.prepend(selectWrapper)}}datatableFilterHandler=()=>{if(this.atfpDataTableObj){let selectedFilter=this.filterSelect.value.charAt(0).toUpperCase()+this.filterSelect.value.slice(1);selectedFilter="All"===selectedFilter?"":selectedFilter,this.atfpDataTableObj.column(3).search(selectedFilter,!1,!1,!1).draw()}};datatableCategoryHandler=()=>{if(this.atfpDataTableObj){let selectedCategory=this.categorySelect.value;selectedCategory="all"!==selectedCategory&&selectedCategory,this.atfpDataTableObj.column(1).search(selectedCategory?new RegExp("^"+selectedCategory+"/"):"",!1,!1,!1).draw()}}}window.addEventListener("load",()=>{new BlockFilterSorter});
  • automatic-translations-for-polylang/tags/1.4.6/assets/js/atfp-update-custom-blocks.js

    r3189260 r3388730  
    11const { parse } = wp.blocks;
     2const { select, subscribe } = wp.data;
     3
    24class blockDataReterive {
    35    constructor() {
     6        if(document.querySelector('.atfp-overlay')) {
     7            return;
     8        }
     9       
    410        this.blockLists = [];
    511        this.customBlockTranslateData = {};
     
    1117    init = () => {
    1218        this.fetchCustomBlocks();
    13         const modalContainer=document.querySelector('#atfp-modal-open-warning-wrapper .modal-container .modal-content');
    14         if(modalContainer){
    15             this.loaderContainer = document.createElement('div');
    16             this.loaderContainer.className = 'atfp-loader-container';
    17             this.loaderContainer.innerHTML = '<div class="atfp-loader-skeleton"><span class="atfp-loader-shimmer"></span></div>';
    18             modalContainer.appendChild(this.loaderContainer);
    19         }
     19
     20        // Create full-page overlay and append to <body>
     21        this.loaderContainer = document.createElement('div');
     22        this.loaderContainer.className = 'atfp-overlay';
     23        this.loaderContainer.setAttribute('role', 'status');
     24        this.loaderContainer.setAttribute('aria-live', 'polite');
     25        this.loaderContainer.innerHTML = this.getOverlayTemplate(); // see section 2
     26        document.body.appendChild(this.loaderContainer);
     27        document.body.classList.add('atfp-overlay-open');
    2028    }
    2129
     
    6270            .then(response => response.json())
    6371            .then(data => {
    64                 if(data.message === 'No custom blocks found.'){
     72                if (data.message === 'No custom blocks found.') {
    6573                    this.loaderContainer && this.loaderContainer.remove();
    6674                    return;
    6775                }
    68 
     76               
    6977                const customBlocks = parse(data.data.block_data);
    7078
     
    8088    }
    8189
    82     saveBlockData=()=>{
    83         if(Object.keys(this.customBlockTranslateData).length < 1){
     90    saveBlockData = () => {
     91        if (Object.keys(this.customBlockTranslateData).length < 1) {
    8492            this.loaderContainer && this.loaderContainer.remove();
    8593            return;
     
    8795
    8896
    89          /**
    90          * Prepare data to send in API request & update latest translate block data.
    91         */
    92          const apiSendData = {
     97        /**
     98        * Prepare data to send in API request & update latest translate block data.
     99       */
     100        const apiSendData = {
    93101            atfp_nonce: atfp_block_update_object.ajax_nonce,
    94102            action: atfp_block_update_object.action_update_content,
     
    107115            .then(response => response.json())
    108116            .then(data => {
    109                 this.loaderContainer && this.loaderContainer.remove();
    110                 if(data.success && data.data.message){
     117                this.setOverlayState('success');
     118                this.teardownOverlay();
     119                if (data.success && data.data.message) {
    111120                    console.log(data.data.message);
    112121                }
    113122            })
    114123            .catch(error => {
    115                 this.loaderContainer && this.loaderContainer.remove();
     124                this.setOverlayState('error');
     125                this.teardownOverlay();
    116126                console.error('Error fetching block rules:', error);
    117127            });
     
    178188        } else if (typeof value === 'string' && /Make This Content Available for Translation/i.test(value)) {
    179189            this.nestedAttrValue(idsArray, value);
    180         }else if(value instanceof wp.richText.RichTextData && /Make This Content Available for Translation/i.test(value.originalHTML)){
     190        } else if (value instanceof wp.richText.RichTextData && /Make This Content Available for Translation/i.test(value.originalHTML)) {
    181191            this.nestedAttrValue(idsArray, value.originalHTML);
    182192        }
     
    197207            const newIdArr = new Array(...idsArr);
    198208            const value = blockData[key];
    199             if(value !== null && value !== undefined){
    200                 if ( (typeof value === 'string' && /Make This Content Available for Translation/i.test(value)) || [Array.prototype, Object.prototype].includes(Object.getPrototypeOf(value))) {
     209            if (value !== null && value !== undefined) {
     210                if ((typeof value === 'string' && /Make This Content Available for Translation/i.test(value)) || [Array.prototype, Object.prototype].includes(Object.getPrototypeOf(value))) {
    201211                    newIdArr.push(key);
    202212                    this.filterAttr(newIdArr, blockData[key]);
     
    232242            }
    233243        });
    234        
    235        
     244
    236245        if (Object.values(blockAttributes).length > 0) {
    237246            this.filterBlockAttribute(blockAttributes);
    238247        }
    239248    }
     249
     250    setOverlayState = (state /* 'loading' | 'success' | 'error' */) => {
     251        if (!this.loaderContainer) return;
     252        const panel = this.loaderContainer.querySelector('.atfp-overlay .atfp-box');
     253        if (panel) panel.setAttribute('data-state', state);
     254    };
     255   
     256    teardownOverlay = (delayMs = 3000) => {
     257        if (!this.loaderContainer) return;
     258        setTimeout(() => {
     259            this.loaderContainer.classList.add('atfp-overlay--closing');
     260            setTimeout(() => {
     261                this.loaderContainer.remove();
     262                this.loaderContainer = null;
     263                document.body.classList.remove('atfp-overlay-open');
     264            }, 300);
     265        }, delayMs);
     266    };
     267
     268    getOverlayTemplate = () => {
     269        return `
     270    <div class="atfp-overlay" role="status" aria-live="polite">
     271    <div class="atfp-backdrop"></div>
     272    <div class="atfp-box" data-state="loading">
     273      <div class="atfp-row">
     274        <span class="atfp-spinner" aria-hidden="true"></span>
     275        <span class="atfp-icon atfp-icon--ok" aria-hidden="true">✓</span>
     276        <span class="atfp-icon atfp-icon--err" aria-hidden="true">!</span>
     277
     278        <div class="atfp-text">
     279          <div class="atfp-title" data-label="loading">Saving block content</div>
     280          <div class="atfp-title" data-label="success">Supported block content has been updated</div>
     281          <div class="atfp-title" data-label="error">Update failed</div>
     282
     283          <div class="atfp-desc" data-label="loading">
     284            Please don’t close or refresh this window until the update is complete.
     285          </div>
     286          <div class="atfp-desc" data-label="success">
     287            Supported block content has been updated. You may continue.
     288          </div>
     289          <div class="atfp-desc" data-label="error">
     290            Something went wrong. You can retry without closing this window.
     291          </div>
     292        </div>
     293      </div>
     294
     295      <div class="atfp-bar"><span></span></div>
     296    </div>
     297  </div>
     298    `;
     299    }
     300
    240301}
    241302
    242 
    243 
    244 window.addEventListener('load', () => {
    245     const urlParams = new URLSearchParams(window.location.search);
    246     if (urlParams.has('post_type') && urlParams.has('from_post') && urlParams.has('new_lang')) {
    247         new blockDataReterive();
    248     }
    249 });
     303const debounce = (func, delay) => {
     304    let timeoutId;
     305    return function (...args) {
     306        clearTimeout(timeoutId);
     307        timeoutId = setTimeout(() => func.apply(this, args), delay);
     308    };
     309};
     310
     311let isBlockContentUpdating = false;
     312const saveBlockContent = debounce(() => {
     313    new blockDataReterive();
     314    isBlockContentUpdating = false;
     315}, 500);
     316
     317if (select && select('core/editor') && subscribe) {
     318    subscribe(() => {
     319        const {
     320            isCurrentPostPublished,
     321            isSavingPost,
     322            isPublishingPost,
     323            isAutosavingPost,
     324        } = select('core/editor');
     325
     326        const isAutoSaving = isAutosavingPost();
     327        const isPublishing = isPublishingPost();
     328        const isSaving = isSavingPost();
     329        const postPublished = isCurrentPostPublished();
     330
     331        if ((isPublishing || (postPublished && isSaving)) && !isAutoSaving && !isBlockContentUpdating) {
     332            isBlockContentUpdating = true;
     333            saveBlockContent();
     334        }
     335
     336    })
     337}
  • automatic-translations-for-polylang/tags/1.4.6/assets/js/atfp-update-custom-blocks.min.js

    r3189260 r3388730  
    1 const{parse:parse}=wp.blocks;class blockDataReterive{constructor(){this.blockLists=[],this.customBlockTranslateData={},this.customBlocksData=[],this.loaderContainer=null,this.init()}init=()=>{this.fetchCustomBlocks();const modalContainer=document.querySelector("#atfp-modal-open-warning-wrapper .modal-container .modal-content");modalContainer&&(this.loaderContainer=document.createElement("div"),this.loaderContainer.className="atfp-loader-container",this.loaderContainer.innerHTML='<div class="atfp-loader-skeleton"><span class="atfp-loader-shimmer"></span></div>',modalContainer.appendChild(this.loaderContainer))};getBlocks=blocks=>{const innerBlocks=block=>{const innerBlock=block.innerBlocks;innerBlock.length>0&&innerBlock.forEach(innerBlock=>{this.customBlocksData.push(innerBlock),innerBlocks(innerBlock)})},blockLists=blocks;blockLists.forEach(block=>{innerBlocks(block)}),this.customBlocksData=[...this.customBlocksData,...blockLists],this.getBlockData()};fetchCustomBlocks=()=>{const apiSendData={atfp_nonce:atfp_block_update_object.ajax_nonce,action:atfp_block_update_object.action_get_content},apiUrl=atfp_block_update_object.ajax_url;fetch(apiUrl,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},body:new URLSearchParams(apiSendData)}).then(response=>response.json()).then(data=>{if("No custom blocks found."===data.message)return void(this.loaderContainer&&this.loaderContainer.remove());const customBlocks=parse(data.data.block_data);this.getBlocks(customBlocks),this.saveBlockData()}).catch(error=>{this.loaderContainer&&this.loaderContainer.remove(),console.error("Error fetching block rules:",error)})};saveBlockData=()=>{if(Object.keys(this.customBlockTranslateData).length<1)return void(this.loaderContainer&&this.loaderContainer.remove());const apiSendData={atfp_nonce:atfp_block_update_object.ajax_nonce,action:atfp_block_update_object.action_update_content,save_block_data:JSON.stringify(this.customBlockTranslateData)},apiUrl=atfp_block_update_object.ajax_url;fetch(apiUrl,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},body:new URLSearchParams(apiSendData)}).then(response=>response.json()).then(data=>{this.loaderContainer&&this.loaderContainer.remove(),data.success&&data.data.message&&console.log(data.data.message)}).catch(error=>{this.loaderContainer&&this.loaderContainer.remove(),console.error("Error fetching block rules:",error)})};nestedAttrValue=idsArr=>{const convertToArrays=obj=>{if("object"!=typeof obj||null===obj)return obj;for(let key in obj)obj.hasOwnProperty(key)&&("object"==typeof obj[key]&&null!==obj[key]&&obj[key].hasOwnProperty("atfp_array_key_replace")?(obj[key]=Object.values(obj[key]),obj[key]=convertToArrays(obj[key])):obj[key]=convertToArrays(obj[key]));return obj},deepMerge=(target,source)=>{for(const key in source)source[key]instanceof Object&&key in target&&Object.assign(source[key],deepMerge(target[key],source[key]));return Object.assign(target||{},source),target};let currentElement={},tempObj=currentElement,lastKey=idsArr[idsArr.length-1];idsArr.slice(0,-1).forEach(key=>{tempObj[key]=tempObj[key]||{},tempObj=tempObj[key]}),tempObj[lastKey]=!0;const obj=convertToArrays(currentElement);deepMerge(this.customBlockTranslateData,obj)};filterAttr=(idsArray,value)=>{null!=value&&(Object.getPrototypeOf(value)===Array.prototype?this.filterBlockArrayAttr(idsArray,value):Object.getPrototypeOf(value)===Object.prototype?this.filterBlockObjectAttr(idsArray,value):"string"==typeof value&&/Make This Content Available for Translation/i.test(value)?this.nestedAttrValue(idsArray,value):value instanceof wp.richText.RichTextData&&/Make This Content Available for Translation/i.test(value.originalHTML)&&this.nestedAttrValue(idsArray,value.originalHTML))};filterBlockArrayAttr=(idsArr,blockData)=>{const newIdArr=new Array(...idsArr);newIdArr.push("atfp_array_key_replace"),blockData.forEach((value,key)=>{("string"==typeof value&&/Make This Content Available for Translation/i.test(value)||![null,void 0].includes(value)&&[Array.prototype,Object.prototype].includes(Object.getPrototypeOf(value)))&&this.filterAttr(newIdArr,value)})};filterBlockObjectAttr=(idsArr,blockData)=>{Object.keys(blockData).forEach(key=>{const newIdArr=new Array(...idsArr),value=blockData[key];null!=value&&("string"==typeof value&&/Make This Content Available for Translation/i.test(value)||[Array.prototype,Object.prototype].includes(Object.getPrototypeOf(value)))&&(newIdArr.push(key),this.filterAttr(newIdArr,blockData[key]))})};filterBlockAttribute=blockData=>{Object.keys(blockData).map(clientId=>{const blockName=Object.keys(blockData[clientId])[0],attributes=blockData[clientId][blockName];Object.keys(attributes).forEach(keytwo=>{const value=attributes[keytwo],idsArray=new Array(blockName,"attributes",keytwo);this.filterAttr(idsArray,value)})})};getBlockData=()=>{if("object"!=typeof this.customBlocksData||0===Object.keys(this.customBlocksData).length)return;const blockData=this.customBlocksData,blockAttributes={};Object.values(blockData).forEach(block=>{Object.values(block.attributes).length>0&&(blockAttributes[block.clientId]={},blockAttributes[block.clientId][block.name]=block.attributes)}),Object.values(blockAttributes).length>0&&this.filterBlockAttribute(blockAttributes)}}window.addEventListener("load",()=>{const urlParams=new URLSearchParams(window.location.search);urlParams.has("post_type")&&urlParams.has("from_post")&&urlParams.has("new_lang")&&new blockDataReterive});
     1const{parse:parse}=wp.blocks,{select:select,subscribe:subscribe}=wp.data;class blockDataReterive{constructor(){document.querySelector(".atfp-overlay")||(this.blockLists=[],this.customBlockTranslateData={},this.customBlocksData=[],this.loaderContainer=null,this.init())}init=()=>{this.fetchCustomBlocks(),this.loaderContainer=document.createElement("div"),this.loaderContainer.className="atfp-overlay",this.loaderContainer.setAttribute("role","status"),this.loaderContainer.setAttribute("aria-live","polite"),this.loaderContainer.innerHTML=this.getOverlayTemplate(),document.body.appendChild(this.loaderContainer),document.body.classList.add("atfp-overlay-open")};getBlocks=blocks=>{const innerBlocks=block=>{const innerBlock=block.innerBlocks;innerBlock.length>0&&innerBlock.forEach(innerBlock=>{this.customBlocksData.push(innerBlock),innerBlocks(innerBlock)})},blockLists=blocks;blockLists.forEach(block=>{innerBlocks(block)}),this.customBlocksData=[...this.customBlocksData,...blockLists],this.getBlockData()};fetchCustomBlocks=()=>{const apiSendData={atfp_nonce:atfp_block_update_object.ajax_nonce,action:atfp_block_update_object.action_get_content},apiUrl=atfp_block_update_object.ajax_url;fetch(apiUrl,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},body:new URLSearchParams(apiSendData)}).then(response=>response.json()).then(data=>{if("No custom blocks found."===data.message)return void(this.loaderContainer&&this.loaderContainer.remove());const customBlocks=parse(data.data.block_data);this.getBlocks(customBlocks),this.saveBlockData()}).catch(error=>{this.loaderContainer&&this.loaderContainer.remove(),console.error("Error fetching block rules:",error)})};saveBlockData=()=>{if(Object.keys(this.customBlockTranslateData).length<1)return void(this.loaderContainer&&this.loaderContainer.remove());const apiSendData={atfp_nonce:atfp_block_update_object.ajax_nonce,action:atfp_block_update_object.action_update_content,save_block_data:JSON.stringify(this.customBlockTranslateData)},apiUrl=atfp_block_update_object.ajax_url;fetch(apiUrl,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},body:new URLSearchParams(apiSendData)}).then(response=>response.json()).then(data=>{this.setOverlayState("success"),this.teardownOverlay(),data.success&&data.data.message&&console.log(data.data.message)}).catch(error=>{this.setOverlayState("error"),this.teardownOverlay(),console.error("Error fetching block rules:",error)})};nestedAttrValue=idsArr=>{const convertToArrays=obj=>{if("object"!=typeof obj||null===obj)return obj;for(let key in obj)obj.hasOwnProperty(key)&&("object"==typeof obj[key]&&null!==obj[key]&&obj[key].hasOwnProperty("atfp_array_key_replace")?(obj[key]=Object.values(obj[key]),obj[key]=convertToArrays(obj[key])):obj[key]=convertToArrays(obj[key]));return obj},deepMerge=(target,source)=>{for(const key in source)source[key]instanceof Object&&key in target&&Object.assign(source[key],deepMerge(target[key],source[key]));return Object.assign(target||{},source),target};let currentElement={},tempObj=currentElement,lastKey=idsArr[idsArr.length-1];idsArr.slice(0,-1).forEach(key=>{tempObj[key]=tempObj[key]||{},tempObj=tempObj[key]}),tempObj[lastKey]=!0;const obj=convertToArrays(currentElement);deepMerge(this.customBlockTranslateData,obj)};filterAttr=(idsArray,value)=>{null!=value&&(Object.getPrototypeOf(value)===Array.prototype?this.filterBlockArrayAttr(idsArray,value):Object.getPrototypeOf(value)===Object.prototype?this.filterBlockObjectAttr(idsArray,value):"string"==typeof value&&/Make This Content Available for Translation/i.test(value)?this.nestedAttrValue(idsArray,value):value instanceof wp.richText.RichTextData&&/Make This Content Available for Translation/i.test(value.originalHTML)&&this.nestedAttrValue(idsArray,value.originalHTML))};filterBlockArrayAttr=(idsArr,blockData)=>{const newIdArr=new Array(...idsArr);newIdArr.push("atfp_array_key_replace"),blockData.forEach((value,key)=>{("string"==typeof value&&/Make This Content Available for Translation/i.test(value)||![null,void 0].includes(value)&&[Array.prototype,Object.prototype].includes(Object.getPrototypeOf(value)))&&this.filterAttr(newIdArr,value)})};filterBlockObjectAttr=(idsArr,blockData)=>{Object.keys(blockData).forEach(key=>{const newIdArr=new Array(...idsArr),value=blockData[key];null!=value&&("string"==typeof value&&/Make This Content Available for Translation/i.test(value)||[Array.prototype,Object.prototype].includes(Object.getPrototypeOf(value)))&&(newIdArr.push(key),this.filterAttr(newIdArr,blockData[key]))})};filterBlockAttribute=blockData=>{Object.keys(blockData).map(clientId=>{const blockName=Object.keys(blockData[clientId])[0],attributes=blockData[clientId][blockName];Object.keys(attributes).forEach(keytwo=>{const value=attributes[keytwo],idsArray=new Array(blockName,"attributes",keytwo);this.filterAttr(idsArray,value)})})};getBlockData=()=>{if("object"!=typeof this.customBlocksData||0===Object.keys(this.customBlocksData).length)return;const blockData=this.customBlocksData,blockAttributes={};Object.values(blockData).forEach(block=>{Object.values(block.attributes).length>0&&(blockAttributes[block.clientId]={},blockAttributes[block.clientId][block.name]=block.attributes)}),Object.values(blockAttributes).length>0&&this.filterBlockAttribute(blockAttributes)};setOverlayState=state=>{if(!this.loaderContainer)return;const panel=this.loaderContainer.querySelector(".atfp-overlay .atfp-box");panel&&panel.setAttribute("data-state",state)};teardownOverlay=(delayMs=3e3)=>{this.loaderContainer&&setTimeout(()=>{this.loaderContainer.classList.add("atfp-overlay--closing"),setTimeout(()=>{this.loaderContainer.remove(),this.loaderContainer=null,document.body.classList.remove("atfp-overlay-open")},300)},delayMs)};getOverlayTemplate=()=>'\n    <div class="atfp-overlay" role="status" aria-live="polite">\n    <div class="atfp-backdrop"></div>\n    <div class="atfp-box" data-state="loading">\n      <div class="atfp-row">\n        <span class="atfp-spinner" aria-hidden="true"></span>\n        <span class="atfp-icon atfp-icon--ok" aria-hidden="true">✓</span>\n        <span class="atfp-icon atfp-icon--err" aria-hidden="true">!</span>\n\n        <div class="atfp-text">\n          <div class="atfp-title" data-label="loading">Saving block content</div>\n          <div class="atfp-title" data-label="success">Supported block content has been updated</div>\n          <div class="atfp-title" data-label="error">Update failed</div>\n\n          <div class="atfp-desc" data-label="loading">\n            Please don’t close or refresh this window until the update is complete.\n          </div>\n          <div class="atfp-desc" data-label="success">\n            Supported block content has been updated. You may continue.\n          </div>\n          <div class="atfp-desc" data-label="error">\n            Something went wrong. You can retry without closing this window.\n          </div>\n        </div>\n      </div>\n\n      <div class="atfp-bar"><span></span></div>\n    </div>\n  </div>\n    '}const debounce=(func,delay)=>{let timeoutId;return function(...args){clearTimeout(timeoutId),timeoutId=setTimeout(()=>func.apply(this,args),delay)}};let isBlockContentUpdating=!1;const saveBlockContent=debounce(()=>{new blockDataReterive,isBlockContentUpdating=!1},500);select&&select("core/editor")&&subscribe&&subscribe(()=>{const{isCurrentPostPublished:isCurrentPostPublished,isSavingPost:isSavingPost,isPublishingPost:isPublishingPost,isAutosavingPost:isAutosavingPost}=select("core/editor"),isAutoSaving=isAutosavingPost(),isPublishing=isPublishingPost(),isSaving=isSavingPost(),postPublished=isCurrentPostPublished();!(isPublishing||postPublished&&isSaving)||isAutoSaving||isBlockContentUpdating||(isBlockContentUpdating=!0,saveBlockContent())});
  • automatic-translations-for-polylang/tags/1.4.6/automatic-translation-for-polylang.php

    r3347861 r3388730  
    33Plugin Name: AutoPoly - AI Translation For Polylang
    44Plugin URI: https://coolplugins.net/
    5 Version: 1.4.5
     5Version: 1.4.6
    66Author: Cool Plugins
    77Author URI: https://coolplugins.net/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=author_page&utm_content=plugin_list
     
    1616}
    1717if ( ! defined( 'ATFP_V' ) ) {
    18     define( 'ATFP_V', '1.4.5' );
     18    define( 'ATFP_V', '1.4.6' );
    1919}
    2020if ( ! defined( 'ATFP_DIR_PATH' ) ) {
     
    518518                        'AutoPoly - AI Translation For Polylang', // Required
    519519                        'https://wordpress.org/support/plugin/automatic-translations-for-polylang/reviews/#new-post', // Required
    520                         ATFP_URL .'assets/images/ai-translation-for-Polylang.svg' // Required
    521520                    );
    522521                }
  • automatic-translations-for-polylang/tags/1.4.6/helper/class-atfp-ajax-handler.php

    r3347861 r3388730  
    159159                wp_send_json_error( __( 'Invalid security token sent.', 'autopoly-ai-translation-for-polylang' ) );
    160160                wp_die( '0', 400 );
    161                 exit();
    162             }
    163 
    164             if(!current_user_can('manage_options')){
     161            }
     162
     163            if(!current_user_can('edit_posts')){
    165164                wp_send_json_error( __( 'Unauthorized', 'autopoly-ai-translation-for-polylang' ), 403 );
    166165                wp_die( '0', 403 );
     
    172171                wp_send_json_error( __( 'Invalid JSON', 'autopoly-ai-translation-for-polylang' ) );
    173172                wp_die( '0', 400 );
    174                 exit();
    175173            }
    176174
     
    193191
    194192                    delete_option( 'atfp_custom_block_data' );
    195                     update_option( 'atfp_custom_block_status', 'false' );
    196193
    197194                }
  • automatic-translations-for-polylang/tags/1.4.6/helper/class-atfp-helper.php

    r3347861 r3388730  
    313313            }
    314314        }
     315
     316        public static function is_translated_post_type($current_screen){
     317            global $polylang;
     318       
     319            if(!$polylang || !property_exists($polylang, 'model')){
     320                return false;
     321            }
     322
     323            $translated_post_types = $polylang->model->get_translated_post_types();
     324            $translated_taxonomies = $polylang->model->get_translated_taxonomies();
     325   
     326            $translated_post_types = array_values($translated_post_types);
     327            $translated_taxonomies = array_values($translated_taxonomies);
     328               
     329            $translated_post_types=array_filter($translated_post_types, function($post_type){
     330                return is_string($post_type);
     331            });
     332   
     333            $translated_taxonomies=array_filter($translated_taxonomies, function($taxonomy){
     334                return is_string($taxonomy);
     335            });
     336   
     337            $valid_post_type=(isset($current_screen->post_type) && !empty($current_screen->post_type)) && in_array($current_screen->post_type, $translated_post_types) && $current_screen->post_type !== 'attachment' ? $current_screen->post_type : false;
     338            $valid_taxonomy=(isset($current_screen->taxonomy) && !empty($current_screen->taxonomy)) && in_array($current_screen->taxonomy, $translated_taxonomies) ? $current_screen->taxonomy : false;
     339   
     340            if((!$valid_post_type && !$valid_taxonomy) || ((!$valid_post_type || empty($valid_post_type)) && !isset($valid_taxonomy)) || (isset($current_screen->taxonomy) && !empty($current_screen->taxonomy) && !$valid_taxonomy)){
     341                return false;
     342            }
     343
     344            return true;
     345        }
    315346    }
    316347}
  • automatic-translations-for-polylang/tags/1.4.6/includes/block-translation-rules/block-rules.json

    r3270250 r3388730  
    5656                        }
    5757                    ]
     58                ],
     59                "head": [
     60                    {
     61                        "cells": [
     62                            {
     63                                "content": true
     64                            }
     65                        ]
     66                    }
     67                ],
     68                "foot": [
     69                    {
     70                        "cells": [
     71                            {
     72                                "content": true
     73                            }
     74                        ]
     75                    }
    5876                ]
    5977            }
     
    96114        },
    97115        "core/read-more": {
    98             "attributes": {
    99                 "content": true
    100             }
    101         },
    102         "core/code": {
    103116            "attributes": {
    104117                "content": true
     
    13151328                ]
    13161329            }
     1330        },
     1331        "rank-math/toc-block":{
     1332            "attributes":{
     1333                "title": true
     1334            }
    13171335        }
    13181336    }
  • automatic-translations-for-polylang/tags/1.4.6/includes/class-atfp-register-backend-assets.php

    r3347861 r3388730  
    3030    {
    3131        add_action('admin_enqueue_scripts', array($this, 'enqueue_gutenberg_translate_assets'));
    32         add_action('enqueue_block_assets', array($this, 'register_block_translator_assets'));
     32        add_action('admin_enqueue_scripts', array($this, 'enqueue_supported_block_scripts'));
     33        add_action('enqueue_block_assets', array($this, 'block_inline_translation_assets'));
    3334        add_action('elementor/editor/before_enqueue_scripts', array($this, 'enqueue_elementor_translate_assets'));
    34         add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_assets'));
     35        add_action('admin_enqueue_scripts', array($this, 'atfp_enqueue_admin_assets'));
     36    }
     37
     38    public function atfp_enqueue_admin_assets(){
     39        if(!is_admin()){
     40            return;
     41        }
     42
     43        global $polylang;
     44       
     45        if(!$polylang || !property_exists($polylang, 'model') || !function_exists('get_current_screen')){
     46            return;
     47        }
     48       
     49        $current_screen = get_current_screen();
     50       
     51        if(class_exists('ATFP_Helper') && ATFP_Helper::is_translated_post_type($current_screen)){
     52            wp_enqueue_script('atfp-views-link-admin', ATFP_URL . 'assets/js/atfp-admin-views-link.js', array('jquery'), ATFP_V, true);
     53        }
     54    }
     55
     56    public function enqueue_supported_block_scripts(){
     57        if(function_exists('get_current_screen') && property_exists(get_current_screen(), 'post_type') && 'atfp_add_blocks' === get_current_screen()->post_type){
     58            wp_enqueue_style('atfp-update-custom-blocks', ATFP_URL . 'assets/css/atfp-update-custom-blocks.min.css', array(), ATFP_V);
     59            wp_enqueue_script('atfp-update-custom-blocks', ATFP_URL . 'assets/js/atfp-update-custom-blocks.min.js', array('jquery'), ATFP_V, true);
     60       
     61            wp_localize_script(
     62                'atfp-update-custom-blocks',
     63                'atfp_block_update_object',
     64                array(
     65                    'ajax_url'       => admin_url('admin-ajax.php'),
     66                    'ajax_nonce'     => wp_create_nonce('atfp_block_update_nonce'),
     67                    'atfp_url'       => esc_url(ATFP_URL),
     68                    'action_get_content' => 'atfp_get_custom_blocks_content',
     69                    'action_update_content' => 'atfp_update_custom_blocks_content',
     70                )
     71            );
     72        }
    3573    }
    3674
     
    3876     * Register block translator assets.
    3977     */
    40     public function register_block_translator_assets()
     78    public function block_inline_translation_assets()
    4179    {
    4280
    4381        if (defined('POLYLANG_VERSION')) {
    44             if (function_exists('pll_current_language')) {
    45                 $current_language = pll_current_language();
    46             } else {
    47                 $current_language = '';
    48             }
    49 
    50             $editor_script_asset = include ATFP_DIR_PATH . 'assets/block-translator/index.asset.php';
    51 
    52             wp_register_script('atfp-block-translator-toolbar', ATFP_URL . 'assets/block-translator/index.js', $editor_script_asset['dependencies'], $editor_script_asset['version'], true);
    53             wp_enqueue_script('atfp-block-translator-toolbar');
    54 
    55             if ($current_language && $current_language !== '') {
    56                 wp_localize_script('atfp-block-translator-toolbar', 'atfpBlockInlineTranslation', array(
    57                     'pageLanguage' => $current_language,
    58                 ));
    59             }
    60         }
    61     }
    62 
    63     public function enqueue_admin_assets(){
    64         if(!is_admin()){
    65             return;
    66         }
    67 
    68         global $polylang;
    69        
    70         if(!$polylang || !property_exists($polylang, 'model') || !function_exists('get_current_screen')){
    71             return;
    72         }
    73        
    74         $current_screen = get_current_screen();
    75        
    76         $translated_post_types = $polylang->model->get_translated_post_types();
    77         $translated_post_types = array_keys($translated_post_types);
    78        
    79         if(!in_array($current_screen->post_type, $translated_post_types)){
    80             return;
    81         }
    82        
    83         wp_enqueue_script('atfp-views-link-admin', ATFP_URL . 'assets/js/atfp-admin-views-link.js', array('jquery'), ATFP_V, true);
     82            $this->enqueue_inline_translation_assets('block');
     83        }
    8484    }
    8585
     
    9696            if (method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor()) {
    9797                $from_post_id = isset($_GET['from_post']) ? absint($_GET['from_post']) : 0;
    98 
     98               
    9999                global $post;
    100 
     100               
    101101                if (null === $post || 0 === $from_post_id) {
    102102                    return;
    103103                }
     104               
     105                $lang           = isset($_GET['new_lang']) ? sanitize_key($_GET['new_lang']) : '';
    104106
    105107                $editor = '';
    106                 if ('builder' === get_post_meta($from_post_id, '_elementor_edit_mode', true)) {
     108                if ('builder' === get_post_meta($from_post_id, '_elementor_edit_mode', true) && defined('ELEMENTOR_VERSION')) {
     109                    $source_lang_name = pll_get_post_language($from_post_id, 'slug');
     110                    $this->enqueue_elementor_confirm_box_assets($from_post_id, $lang, $source_lang_name, 'gutenberg');
    107111                    $editor = 'Elementor';
    108112                }
    109                 if ('on' === get_post_meta($from_post_id, '_et_pb_use_builder', true)) {
     113                if ('on' === get_post_meta($from_post_id, '_et_pb_use_builder', true) && defined('ET_CORE')) {
    110114                    $editor = 'Divi';
    111115                }
     
    118122
    119123                $lang_object = array();
    120                 foreach ($languages as $lang) {
    121                     $lang_object[$lang->slug] = $lang->name;
     124                foreach ($languages as $lang_obj) {
     125                    $lang_object[$lang_obj->slug] = $lang_obj->name;
    122126                }
    123127
    124128                $post_translate = PLL()->model->is_translated_post_type($post->post_type);
    125                 $lang           = isset($_GET['new_lang']) ? sanitize_key($_GET['new_lang']) : '';
     129               
    126130                $post_type      = isset($_GET['post_type']) ? sanitize_key($_GET['post_type']) : '';
    127131
    128132                if ($post_translate && $lang && $post_type) {
    129                     if (function_exists('get_option')) {
    130                         $update_blocks = get_option('atfp_custom_block_status', false) && 'true' === get_option('atfp_custom_block_status', false) ? true : false;
    131                         if ($update_blocks) {
    132                             // Custom Translation Block update script
    133                             wp_register_script('atfp-custom-blocks', ATFP_URL . 'assets/js/atfp-update-custom-blocks.min.js', array('wp-data', 'jquery'), ATFP_V, true);
    134                             wp_enqueue_script('atfp-custom-blocks');
    135 
    136                             wp_localize_script(
    137                                 'atfp-custom-blocks',
    138                                 'atfp_block_update_object',
    139                                 array(
    140                                     'ajax_url'       => admin_url('admin-ajax.php'),
    141                                     'ajax_nonce'     => wp_create_nonce('atfp_block_update_nonce'),
    142                                     'atfp_url'       => esc_url(ATFP_URL),
    143                                     'action_get_content' => 'atfp_get_custom_blocks_content',
    144                                     'action_update_content' => 'atfp_update_custom_blocks_content',
    145                                     'source_lang'    => pll_get_post_language($from_post_id, 'slug'),
    146                                     'languageObject' => $lang_object,
    147                                 )
    148                             );
    149                         }
    150                     }
    151 
    152133                    $data = array(
    153134                        'action_fetch'       => 'atfp_fetch_post_content',
     
    165146    {
    166147
    167         $this->elementor_widget_translator_script();
     148        $this->elementor_inline_translation_assets();
    168149
    169150        $page_translated = get_post_meta(get_the_ID(), '_atfp_elementor_translated', true);
     
    173154            return;
    174155        }
    175        
     156
    176157        $post_language_slug = pll_get_post_language(get_the_ID(), 'slug');
    177158        $current_post_id = get_the_ID(); // Get the current post ID
    178        
     159
    179160        if(!class_exists('\Elementor\Plugin') || !property_exists('\Elementor\Plugin', 'instance') ){
    180161            return;
     
    183164        $elementor_data = \Elementor\Plugin::$instance->documents->get( $current_post_id )->get_elements_data();
    184165
    185         if($parent_post_language_slug === $post_language_slug){
    186             return;
    187         }
     166
     167        if ($parent_post_language_slug === $post_language_slug) {
     168            return;
     169        }
     170
     171        $parent_post_id=PLL()->model->post->get_translation($current_post_id, $parent_post_language_slug);
    188172
    189173        $meta_fields=get_post_meta($current_post_id);
     
    193177            'elementorData' => $elementor_data,
    194178            'metaFields' => $meta_fields,
     179            'parent_post_id' => $parent_post_id,
     180            'parent_post_title' => get_the_title($parent_post_id),
    195181        );
    196182
    197183        wp_enqueue_style('atfp-elementor-translate', ATFP_URL . 'assets/css/atfp-elementor-translate.min.css', array(), ATFP_V);
    198184        $this->enqueue_automatic_translate_assets($parent_post_language_slug, $post_language_slug, 'elementor', $data);
    199     }   
     185    }
    200186
    201187    public function enqueue_automatic_translate_assets($source_lang, $target_lang, $editor_type, $extra_data = array())
     
    213199
    214200        $post_type = get_post_type();
    215 
    216201
    217202        $languages = PLL()->model->get_languages_list();
     
    220205            $lang_object[$lang->slug] = array('name' => $lang->name, 'flag' => $lang->flag_url, 'locale' => $lang->locale);
    221206        }
    222 
     207       
    223208        wp_enqueue_style('atfp-automatic-translate-custom');
     209       
    224210        wp_enqueue_script('atfp-automatic-translate');
     211        wp_set_script_translations('atfp-automatic-translate', 'autopoly-ai-translation-for-polylang-pro', ATFP_DIR_PATH . 'languages');
     212
    225213
    226214        $post_id = get_the_ID();
     215
     216        if (!isset(PLL()->options['sync']) || (isset(PLL()->options['sync']) && !in_array('post_meta', PLL()->options['sync']))) {
     217            $extra_data['postMetaSync'] = 'false';
     218
     219            if(in_array($editor_type, array('classic', 'gutenberg'))){
     220                $extra_data['update_post_meta_fields'] = 'atfp_update_post_meta_fields';
     221                $extra_data['post_meta_fields_key'] = wp_create_nonce('atfp_update_post_meta_fields');
     222            }
     223           
     224        } else {
     225            $extra_data['postMetaSync'] = 'true';
     226        }
    227227
    228228        $data = array_merge(array(
     
    230230            'ajax_nonce'         => wp_create_nonce('atfp_translate_nonce'),
    231231            'atfp_url'           => esc_url(ATFP_URL),
    232             'admin_url'     => admin_url(),
     232            'admin_url'          => admin_url(),
    233233            'update_translate_data' => 'atfp_update_translate_data',
    234234            'source_lang'        => $source_lang,
     
    258258     * Enqueue the elementor widget translator script.
    259259     */
    260     public function elementor_widget_translator_script()
     260    public function elementor_inline_translation_assets()
    261261    {
    262262        if (defined('POLYLANG_VERSION')) {
     263            $this->enqueue_inline_translation_assets(
     264                'elementor',
     265                array(
     266                    'backbone-marionette',
     267                    'elementor-common',
     268                    'elementor-web-cli',
     269                    'elementor-editor-modules',
     270                )
     271            );
     272        }
     273    }
     274
     275    public function enqueue_elementor_confirm_box_assets($parent_post_id, $target_lang_name, $source_lang_name, $editor_type='gutenberg')
     276    {
     277        $post_id = get_the_ID();
     278
     279        $source_lang_name=PLL()->model->get_language($source_lang_name);
     280        $target_lang_name=PLL()->model->get_language($target_lang_name);
     281
     282        wp_enqueue_script('atfp-elementor-confirm-box', ATFP_URL . 'assets/js/atfp-elementor-translate-confirm-box.js', array('jquery', 'wp-i18n'), ATFP_V, true);
     283
     284        wp_localize_script('atfp-elementor-confirm-box', 'atfpElementorConfirmBoxData',
     285            array('postId' => $post_id, 'parentPostId' => $parent_post_id, 'sourceLangSlug' => $source_lang_name->slug, 'targetLangSlug' => $target_lang_name->slug, 'sourceLangName' => $source_lang_name->name, 'targetLangName' => $target_lang_name->name, 'editorType' => $editor_type)
     286        );
     287
     288        wp_enqueue_style('atfp-elementor-confirm-box', ATFP_URL . 'assets/css/atfp-elementor-translate-confirm-box.css', array(), ATFP_V);
     289    }
     290
     291    private function enqueue_inline_translation_assets( $type = 'block', $extra_dependencies = array() ) {
     292
     293        global $post;
     294
     295        if(!isset($post) || !isset($post->ID)){
     296            return;
     297        }
     298
     299        if (defined('POLYLANG_VERSION')) {
    263300            if (function_exists('pll_current_language')) {
    264301                $current_language = pll_current_language();
     
    269306            }
    270307
    271             $asset = require_once ATFP_DIR_PATH . 'assets/elementor-widget-translator/index.asset.php';
    272             wp_enqueue_script(
    273                 'atfp-elementor-widget-translator',
    274                 ATFP_URL . 'assets/elementor-widget-translator/index.js',
     308            $editor_script_asset = require_once ATFP_DIR_PATH . 'assets/'.sanitize_file_name( $type ).'-inline-translation/index.asset.php';
     309            $core_modal_script_asset = include ATFP_DIR_PATH . 'assets/inline-translate-modal/index.asset.php';
     310
     311            if(!is_array($editor_script_asset)) {
     312                $editor_script_asset = array(
     313                    'dependencies' => array(),
     314                    'version' => ATFP_V,
     315                );
     316            }
     317
     318            if(!is_array($core_modal_script_asset)) {
     319                $core_modal_script_asset = array(
     320                    'dependencies' => array(),
     321                    'version' => ATFP_V,
     322                );
     323            }
     324
     325            wp_register_script( 'atfp-inline-translate-modal', ATFP_URL . 'assets/inline-translate-modal/index.js' , array_merge( $core_modal_script_asset['dependencies'] ), $core_modal_script_asset['version'], true );
     326   
     327            $extra_dependencies[] = 'atfp-inline-translate-modal';
     328
     329            wp_register_script(
     330                'atfp-'.sanitize_file_name( $type ).'-inline-translation',
     331                ATFP_URL . 'assets/'.sanitize_file_name( $type ).'-inline-translation/index.js',
    275332                array_merge(
    276                     $asset['dependencies'],
    277                     [
    278                         'backbone-marionette',
    279                         'elementor-common',
    280                         'elementor-web-cli',
    281                         'elementor-editor-modules',
    282                     ]
     333                    $editor_script_asset['dependencies'], $extra_dependencies
    283334                ),
    284                 $asset['version'],
     335                $editor_script_asset['version'],
    285336                true
    286337            );
    287338
     339            wp_enqueue_script( 'atfp-inline-translate-modal' );
     340
     341            wp_enqueue_script('atfp-' . sanitize_file_name( $type ) . '-inline-translation');
     342
    288343            if ($current_language && $current_language !== '') {
    289344                wp_localize_script(
    290                     'atfp-elementor-widget-translator',
    291                     'atfpElementorInlineTranslation',
     345                    'atfp-inline-translate-modal',
     346                    'atfpInlineTranslation',
    292347                    array(
    293348                        'pageLanguage' => $current_language,
     
    297352            }
    298353        }
    299     }
     354    }
    300355}
  • automatic-translations-for-polylang/tags/1.4.6/includes/tsconfig.json

    r3247105 r3388730  
    2727    "skipLibCheck": true,
    2828    "typeRoots": [
    29       "node_modules/@types",
    30       "block-translator/@types"
    31     ]
     29      "node_modules/@types"
     30    ],
     31    "types": []
    3232  },
    3333  "include": [
  • automatic-translations-for-polylang/tags/1.4.6/readme.txt

    r3347861 r3388730  
    55Tested up to: 6.8.1
    66Requires PHP: 5.6
    7 Stable tag: 1.4.5
     7Stable tag: 1.4.6
    88Author URI: https://coolplugins.net/
    99License: GPLv2 or later
     
    220220== Changelog ==
    221221
     222= Version 1.4.6 | 03 November 2025 =
     223
     224* **Added:** Support for translating Rank Math SEO table blocks and core table headers and footers.
     225* **Added:** Confirmation box when translating in a different editor but the page is made with Elementor.
     226* **Fixed:** Issue with Elementor HTML tags not rendering correctly after translation.
     227* **Fixed:** Translation now works for ACF repeater fields in Gutenberg.
     228* **Fixed:** Missing translations for some fields in Elementor testimonial widget.
     229* **Fixed:** JavaScript error when updating Gutenberg content.
     230* **Fixed:** Fixed line break formatting in WYSIWYG content.
     231* **Improved:** Added animation to the update button for long updates.
     232* **Improved:** Optimized performance of inline translation and smaller file size.
     233* **Improved:** Improved the block content update process.
     234
    222235= Version 1.4.5 | 21 August 2025 =
     236
    223237* **Fixed:** Addressed security vulnerabilities.
    224238
  • automatic-translations-for-polylang/trunk/admin/atfp-dashboard/css/admin-styles.css

    r3325375 r3388730  
    778778}
    779779
     780
     781.atfp-dashboard-ai-request-container>div[class^="atfp-dashboard-ai-"] {
     782    display: flex;
     783    gap: 1rem;
     784    margin-top: 1.5rem;
     785}
     786
     787.atfp-dashboard-ai-request-container label{
     788    margin: 0;
     789    white-space: nowrap;
     790    min-width: 150px;
     791}
     792
     793.atfp-dashboard-ai-request-container h2{
     794    margin: 0px 0 10px;
     795}
     796
     797.atfp-dashboard-ai-request-container p{
     798    padding: 0;
     799    margin: 3px 0 0;
     800}
     801
    780802.atfp-bulk-translation-post-status-options{
    781803    display: flex;
  • automatic-translations-for-polylang/trunk/admin/atfp-dashboard/views/ai-translations.php

    r3347861 r3388730  
    4040                'icon' => 'chrome-ai-translate.png',
    4141                'url' => 'https://docs.coolplugins.net/doc/chrome-ai-translation-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=ai_translations_chrome'
     42            ],
     43            [
     44                'logo' => 'deepl-logo.png',
     45                'alt' => 'DeepL',
     46                'title' => esc_html__('DeepL', $text_domain),
     47                'description' => esc_html__('Harness DeepL\'s advanced AI for high-quality translations.', $text_domain),
     48                'icon' => 'deepl.png',
     49                'url' => 'https://docs.coolplugins.net/doc/translate-via-deepl-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=ai_translations_deepl'
    4250            ]
    4351        ];
  • automatic-translations-for-polylang/trunk/admin/atfp-dashboard/views/free-vs-pro.php

    r3347861 r3388730  
    3030                    'Unlimited Translations' => [false, true],
    3131                    'Google Translate Widget Support' => [false, true],
    32                     'AI Translator (Gemini/OpenAI) Support' => [false, true],
     32                    'AI Translator (Gemini/OpenAI/DeepL) Support' => [false, true],
     33                    'Custom Fields Translation' => [false, true],
     34                    'Bulk Translation' => [false, true],
     35                    'Classic Editor Translation' => [false, true],
    3336                    'Premium Support' => [false, true],
    3437                ];
  • automatic-translations-for-polylang/trunk/admin/atfp-dashboard/views/settings.php

    r3347861 r3388730  
    7474                    'doc_url' => 'https://docs.coolplugins.net/doc/generate-open-ai-api-key/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=settings_openai',
    7575                    'placeholder' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
     76                ],
     77                'deepl' => [
     78                    'name' => 'DeepL',
     79                    'doc_url' => 'https://docs.coolplugins.net/doc/generate-deepl-api-key/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=settings_deepl',
     80                    'placeholder' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    7681                ]
    7782            ];
     
    112117            <!-- Add bulk translate post status -->
    113118            <label for="bulk-translate-post-status">
    114                 <?php echo esc_html__('Bulk Translate Post Status', $text_domain); ?>
     119                <?php echo esc_html__('Bulk Translation default Post Status', $text_domain); ?>
    115120            </label>
    116121            <div class="atfp-bulk-translation-post-status-options">
     
    120125                <label for="draft"><?php echo esc_html__('Draft', $text_domain); ?></label>
    121126            </div>
     127            <!-- Add slug translation -->
     128            <label for="slug-translation-settings">
     129                <?php echo esc_html__('Slug Translation Settings', $text_domain); ?>
     130            </label>
     131            <div class="atfp-bulk-translation-post-status-options">
     132                <input type="radio" name="title_translate" id="title_translate" value="title_translate" disabled>
     133                <label for="title_translate"><?php echo esc_html__('Use Translated Title', $text_domain); ?></label>
     134                <input type="radio" name="slug_translate" id="slug_translate" value="slug_translate" checked disabled>
     135                <label for="slug_translate"><?php echo esc_html__('Translate Original Slug', $text_domain); ?></label>
     136                <input type="radio" name="slug_keep" id="slug_keep" value="slug_keep" checked disabled>
     137                <label for="slug_keep"><?php echo esc_html__('Keep Original Slug', $text_domain); ?></label>
    122138            </div>
     139
     140            <hr style="margin: 2rem 0px;">
     141            <div class="atfp-dashboard-ai-request-container">
     142                <h2><?php echo __('AI Request Performance', $text_domain); ?></h2>
     143                <p><?php echo __('Adjust these settings to optimize the performance of your AI requests.', $text_domain); ?></p>
     144                <div class="atfp-dashboard-ai-token-container">
     145                    <label for="atfp_ai_request_token_per_request-input" class="api-settings-label"><?php echo __('Token Limit', $text_domain); ?></label>
     146                    <div class="atfp-dashboard-ai-token-container-input">
     147                        <input type="number" min="100" max="10000" step="100" name="atfp_ai_request_token_per_request" id="atfp_ai_request_token_per_request-input" value="500" disabled>
     148                        <p><?php echo sprintf(__('%sRecommended%s 500 tokens per request If model or network is slow, decrease this value', $text_domain), '<span>', '</span>'); ?></p>
     149                    </div>
     150                </div>
     151                <div class="atfp-dashboard-ai-batch-size-container">
     152                    <label for="atfp_ai_request_batch_size-input" class="api-settings-label"><?php echo __('Batch Size', $text_domain); ?></label>
     153                    <div class="atfp-dashboard-ai-batch-container-input">
     154                        <input type="number" min="1" max="10" name="atfp_ai_request_batch_size" id="atfp_ai_request_batch_size-input" value="5" disabled>
     155                        <p><?php echo sprintf(__('%sRecommended%s 5 posts per batch Larger batch can take longer to process If model or network is slow, decrease this value', $text_domain), '<span>', '</span>'); ?></p>
     156                    </div>
     157                </div>
     158                <div class="atfp-dashboard-ai-timeout-container">
     159                    <label for="atfp-dashboard-ai-token-container-input" class="api-settings-label"><?php echo __('Timeout Duration', $text_domain); ?></label>
     160                    <div class="atfp-dashboard-ai-timeout-container-input">
     161                        <input type="number" min="10" max="1200" step="10" name="atfp_ai_request_timeout" id="atfp_ai_request_timeout-input" value="120" disabled>
     162                        <p><?php echo sprintf(__('%sRecommended%s 120 seconds minimum timeout can cause timeouts If model or network is slow, increase this value', $text_domain), '<span>', '</span>'); ?></p>
     163                    </div>
     164                </div>
     165            </div>
     166            </div>
     167            <hr style="margin: 2rem 0px 20px;">
    123168
    124169            <?php if (get_option('cpfm_opt_in_choice_cool_translations')) : ?>
  • automatic-translations-for-polylang/trunk/admin/atfp-dashboard/views/sidebar.php

    r3347861 r3388730  
    9696            'free' => 'automatic-translator-addon-for-loco-translate/automatic-translator-addon-for-loco-translate.php',
    9797            'pro'  => 'loco-automatic-translate-addon-pro/loco-automatic-translate-addon-pro.php',
    98             'free_name' => esc_html__('Automatic Translate Addon For Loco Translate', $text_domain),
    99             'pro_name'  => esc_html__('Loco Automatic Translate Addon PRO', $text_domain),
     98            'free_name' => esc_html__('LocoAI – Auto Translate For Loco Translate', $text_domain),
     99            'pro_name'  => esc_html__('LocoAI – Auto Translate for Loco Translate (Pro)', $text_domain),
    100100        ],
    101101    ];
  • automatic-translations-for-polylang/trunk/admin/cpt_dashboard/assets/css/cpt-dashboard.css

    r3308442 r3388730  
    55  display: flex;
    66  align-items: center;
     7}
     8
     9.cpt-review-notice .notice-dismiss{
     10  display: none;
    711}
    812
  • automatic-translations-for-polylang/trunk/admin/cpt_dashboard/cpt_dashboard.php

    r3347861 r3388730  
    233233        }
    234234
    235         public static function review_notice($prefix, $plugin_name, $url, $icon=''){
     235        public static function review_notice($prefix, $plugin_name, $url){
    236236            if(self::atfp_hide_review_notice_status($prefix)){
    237237                return;
     
    253253
    254254            $message = sprintf(
    255                 '🎉 %s! %s <strong>%s</strong> %s 🚀<br>%s %s 🌟<br>',
    256                 __('Thank You For Using', 'cp-notice').' '.$plugin_name,
    257                 __('You\'ve translated', 'cp-notice'),
    258                 esc_html__(esc_html($total_character_count).' characters', 'cp-notice'),
    259                 esc_html__('so far using our plugin!', 'cp-notice'),
    260                 __('If our plugin has saved your time and effort, please consider leaving a', 'cp-notice'),
    261                 __('review to support our work. Your feedback means the world to us!', 'cp-notice')
    262             );
     255                __('Thanks for using <b>%1$s</b>! You have translated <b>%2$s</b> characters so far using our plugin!<br>Please give us a quick rating, it works as a boost for us to keep working on more <a style="text-decoration: none;" href="%3$s" target="_blank" rel="noopener noreferrer"><b>Cool Plugins</b></a>!', 'cp-notice'),
     256                $plugin_name,
     257                $total_character_count,
     258                esc_url('https://coolplugins.net/')
     259            );     
     260           
    263261
    264262            $prefix = sanitize_key($prefix);
    265             $message = wp_kses_post($message);
    266263            $url = esc_url($url);
    267264            $plugin_name = sanitize_text_field($plugin_name);
    268             $icon = isset($icon) && !empty($icon) ? esc_url($icon) : '';
    269 
    270             add_action('admin_notices', function() use ($message, $prefix, $url, $icon, $plugin_name){
    271                 $html= '<div class="notice notice-info cpt-review-notice">';
    272                 if($icon){
    273                     $html .= '<img class="cpt-review-notice-icon" src="'.esc_url($icon).'" alt="'.esc_attr($plugin_name).'">';
    274                 }
    275                 $html .= '<div class="cpt-review-notice-content"><p>'.wp_kses_post($message).'</p><div class="atfp-review-notice-dismiss" data-prefix="'.esc_attr($prefix).'" data-nonce="'.wp_create_nonce('atfp_hide_review_notice').'"><a href="'.esc_url($url).'" target="_blank" class="button button-primary">Rate Now! ★★★★★</a><button class="button cpt-not-interested">'.esc_html__('Not Interested', 'cp-notice').'</button><button class="button cpt-already-reviewed">'.esc_html__('Already Reviewed', 'cp-notice').'</button></div></div></div>';
     265
     266            $allowed = [
     267                'div' => [ 'class' => true, 'data-prefix' => true, 'data-nonce' => true ],
     268                'p' => [],
     269                'a' => [ 'href' => true, 'target' => true, 'class' => true, 'style' => true, 'rel' => true ],
     270                'button' => [ 'class' => true ],
     271                'b' => [],
     272                'br' => [],
     273                'strong' => [],
     274            ];
     275
     276            $message = wp_kses($message, $allowed);
     277
     278            add_action('admin_notices', function() use ($message, $prefix, $url, $allowed){
     279                $html= '<div class="notice notice-info is-dismissible cpt-review-notice">';
    276280               
    277                 echo wp_kses_post($html);   
     281                $html .= '<div class="cpt-review-notice-content"><p>'.$message.'</p><div class="atfp-review-notice-dismiss" data-prefix="'.esc_attr($prefix).'" data-nonce="'.esc_attr(wp_create_nonce('atfp_hide_review_notice')).'"><a href="'.esc_url($url).'" target="_blank" class="button button-primary">Rate Now! ★★★★★</a><button class="button cpt-already-reviewed">'.esc_html__('Already Reviewed', 'cp-notice').'</button><button class="button cpt-not-interested">'.esc_html__('Not Interested', 'cp-notice').'</button></div></div></div>';
     282               
     283                echo wp_kses($html, $allowed);
    278284            });
    279285
    280             add_action('atfp_display_admin_notices', function() use ($message, $prefix, $url, $icon, $plugin_name){
    281                 $html= '<div class="notice notice-info cpt-review-notice">';
    282                 if($icon){
    283                     $html .= '<img class="cpt-review-notice-icon" src="'.esc_url($icon).'" alt="'.esc_attr($plugin_name).'">';
    284                 }
    285                 $html .= '<div class="cpt-review-notice-content"><p>'.wp_kses_post($message).'</p><div class="atfp-review-notice-dismiss" data-prefix="'.esc_attr($prefix).'" data-nonce="'.wp_create_nonce('atfp_hide_review_notice').'"><a href="'.esc_url($url).'" target="_blank" class="button button-primary">Rate Now! ★★★★★</a><button class="button cpt-not-interested">'.esc_html__('Not Interested', 'cp-notice').'</button><button class="button cpt-already-reviewed">'.esc_html__('Already Reviewed', 'cp-notice').'</button></div></div></div>';
     286            add_action('atfp_display_admin_notices', function() use ($message, $prefix, $url, $allowed){
     287                $html= '<div class="notice notice-info is-dismissible cpt-review-notice">';
     288                $html .= '<div class="cpt-review-notice-content"><p>'.$message.'</p><div class="atfp-review-notice-dismiss" data-prefix="'.$prefix.'" data-nonce="'.wp_create_nonce('atfp_hide_review_notice').'"><a href="'. $url .'" target="_blank" class="button button-primary">Rate Now! ★★★★★</a><button class="button cpt-not-interested">'.__('Not Interested', 'cp-notice').'</button><button class="button cpt-already-reviewed">'.__('Already Reviewed', 'cp-notice').'</button></div></div></div>';
    286289               
    287                 echo wp_kses_post($html);
     290                echo wp_kses($html, $allowed);
    288291            });
    289292        }
  • automatic-translations-for-polylang/trunk/assets/automatic-translate/index.asset.php

    r3333267 r3388730  
    1 <?php return array('dependencies' => array('react', 'react-dom', 'wp-blocks', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => '54f6001ae1cd0c7ef3d3');
     1<?php return array('dependencies' => array('react', 'react-dom', 'wp-blocks', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => 'de2ff4e43886075cb42b');
  • automatic-translations-for-polylang/trunk/assets/automatic-translate/index.js

    r3333267 r3388730  
    1 (()=>{"use strict";var t={338:(t,e,a)=>{var n=a(795);e.createRoot=n.createRoot,e.hydrateRoot=n.hydrateRoot},795:t=>{t.exports=window.ReactDOM}},e={};function a(n){var o=e[n];if(void 0!==o)return o.exports;var r=e[n]={exports:{}};return t[n](r,r.exports,a),r.exports}a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};a.r(n),a.d(n,{allowedMetaFields:()=>rt,contentSaveSource:()=>J,contentSaveTranslate:()=>tt,excerptSaveSource:()=>K,excerptSaveTranslate:()=>X,metaFieldsSaveSource:()=>et,metaFieldsSaveTranslate:()=>at,setBlockRules:()=>nt,titleSaveSource:()=>G,titleSaveTranslate:()=>Z,translationInfo:()=>ot});var o={};a.r(o),a.d(o,{getAllowedMetaFields:()=>dt,getBlockRules:()=>lt,getTranslatedString:()=>it,getTranslationEntry:()=>st,getTranslationInfo:()=>ct});var r=a(338);const s=window.wp.element,l=window.wp.data,i=window.wp.i18n,c=t=>React.createElement("div",{className:"modal-header",key:t.modalRender},React.createElement("span",{className:"close",onClick:()=>{t.setPopupVisibility(!1)}},"×"),React.createElement("h2",{className:"notranslate"},(0,i.__)("Step 2 - Start Automatic Translation Process","autopoly-ai-translation-for-polylang")),React.createElement("div",{className:"save_btn_cont"},React.createElement("button",{className:"notranslate save_it button button-primary",disabled:t.translatePendingStatus,onClick:t.updatePostData},(0,i.__)("Update Content","autopoly-ai-translation-for-polylang")))),d=window.React,p=t=>{const e=t.skipTags||[],a=t=>{const n=document.createElement("div");n.innerHTML=t;const o=n.firstElementChild;if(!o)return t;let r=o.childNodes,s=r.length;if(s>0){r=Array.from(r).sort(((t,e)=>3===t.nodeType?-1:3===e.nodeType?1:0));for(let t=0;t<s;t++){let e=r[t];if(3===e.nodeType){let t=e.textContent.replace(/^\s+|^\.\s+|^\s.|\s+$|\.\s+$|\s.\+$/g,(t=>`#atfp_open_translate_span#${t}#atfp_close_translate_span#`));e.textContent=t}else if(8===e.nodeType){let t=`\x3c!--${e.textContent}--\x3e`;e.textContent=t}else{let t=a(e.outerHTML);e.outerHTML=t}}}let l=o.outerHTML.match(/^<[^>]+>/)[0];l=l.replace(/#atfp_open_translate_span#|#atfp_close_translate_span#/g,"");const i=o.tagName.toLowerCase(),c=new RegExp(`</${i}>`,"i"),d=o.outerHTML.match(c);if("<style>"===l)return`#atfp_open_translate_span#${o.outerHTML}#atfp_close_translate_span#`;let p=o.innerHTML;p=p.replace(/^\s+|^\.\s+|^\s.|\s+$|\.\s+$|\s.\+$/g,(t=>`#atfp_open_translate_span#${t}#atfp_close_translate_span#`)),o.innerHTML="";let u="",g="",m="";return g=`#atfp_open_translate_span#${l}#atfp_close_translate_span#`,d&&(u=`#atfp_open_translate_span#</${i}>#atfp_close_translate_span#`),e.includes(i)&&(p=p.replace(/#atfp_open_translate_span#|#atfp_close_translate_span#/g,""),p="#atfp_open_translate_span#"+p+"#atfp_close_translate_span#"),""!==p?(""!==g&&(m=g+p),""!==u&&(m+=u)):m=g+u,o.outerHTML=m,n.innerHTML},n=["yandex","localAiTranslator","google"].includes(t.service)?(e=>{/^(_yoast_wpseo_|rank_math_|_seopress_)/.test(t.contentKey.trim())&&(e=(t=>t.replace(/(%{1,2}[a-zA-Z0-9_]+%{0,2})/g,(t=>`#atfp_open_translate_span#${t}#atfp_close_translate_span#`)))(e));const n=/\[(.*?)\]/g;e.match(n)&&(e=e.replace(n,(t=>`#atfp_open_translate_span#${t}#atfp_close_translate_span#`)));const o=document.createElement("div");o.innerHTML=function(t){if("string"!=typeof t||!t.trim())return t;const e=/<\/?([a-zA-Z0-9]+)(\s[^>]*)?>/g,a=[];let n,o="",r=0;for(;null!==(n=e.exec(t));){const[s,l]=n,i=s.startsWith("</"),c=n.index;if(c>r&&(o+=t.slice(r,c)),i){const t=a.findIndex((t=>t.tag===l));-1!==t?(a.splice(t,1),o+=s):o+=`#atfp_temp_tag_open#<${l}>#atfp_temp_tag_close#`+s}else a.push({tag:l}),o+=s;r=e.lastIndex}r<t.length&&(o+=t.slice(r));for(let t=a.length-1;t>=0;t--){const{tag:e}=a[t];o+=`#atfp_temp_tag_open#</${e}>#atfp_temp_tag_close#`}return n=null,a.length=0,t=null,o}(e),function(t){let e=t.childNodes;const n=t=>{if(e.length>t){let o=e[t],r=null;if(3===o.nodeType){const t=o.textContent.replace(/^\s+|^\.\s+|^\s.|\s+$|\.\s+$|\s.\+$/g,(t=>`#atfp_open_translate_span#${t}#atfp_close_translate_span#`));r=document.createTextNode(t)}else if(8===o.nodeType)r=document.createTextNode(`\x3c!--${o.textContent}--\x3e`);else{let t=a(o.outerHTML);r=document.createTextNode(t)}o.replaceWith(r),t++,n(t)}};n(0)}(o);let r=o.innerText;return r=r.replace(/#atfp_temp_tag_open#([\s\S]*?)#atfp_temp_tag_close#/g,""),(t=>t.split(/(#atfp_open_translate_span#.*?#atfp_close_translate_span#)|'/).filter(Boolean).filter((t=>""!==t.trim())))(r)})(t.content):t.content,o=/#atfp_open_translate_span#[\s\S]*?#atfp_close_translate_span#/,r=/#atfp_open_translate_span#|#atfp_close_translate_span#/g;return React.createElement(React.Fragment,null,["yandex","localAiTranslator","google"].includes(t.service)?n.map(((t,e)=>o.test(t)?React.createElement("span",{key:e,className:"notranslate atfp-notraslate-tag",translate:"no"},(t=>t.replace(r,""))(t)):t)):n)},u=({type:t,key:e,translateContent:a,source:n,provider:o,AllowedMetaFields:r})=>{if(["title","excerpt"].includes(t)){const e=`${t}SaveTranslate`;(0,l.dispatch)("block-atfp/translate")[e](a,o)}else["metaFields"].includes(t)?Object.keys(r).includes(e)&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveTranslate(e,a,n,o):(0,l.dispatch)("block-atfp/translate").contentSaveTranslate(e,a,n,o)},g=({prefix:t=!1,start:e=!1,end:a=!1,translateStatus:n=!1})=>{const o=(a-e)/1e3,r={};if(t){if(r.provider=t,e&&a){const e=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[t]?.timeTaken||0;r.timeTaken=o+e}n&&(r.translateStatus=!0),(0,l.dispatch)("block-atfp/translate").translationInfo(r)}},m=({number:t})=>t>=1e6?(t/1e6).toFixed(1)+"M":t>=1e3?(t/1e3).toFixed(1)+"K":t,f=(t,e="none",a=!1)=>{!1===a&&(a=(0,l.select)("block-atfp/translate").getTranslationInfo().sourceCharacterCount);const n=document.querySelector(`.${t}-translator-strings-count`);n&&(n.style.display=e,n.querySelector(".totalChars").textContent=m({number:a}))},h=({container:t,provider:e,startTime:a,endTime:n,translateStatus:o,modalRenderId:r})=>{if(!document.querySelector(`#atfp-${e}-strings-modal.modal-container[data-render-id="${r}"]`))return;t.querySelector(".atfp_translate_progress").style.display="none",t.querySelector(".atfp_string_container").style.animation="none",document.body.style.top="0";const s=t.querySelector("button.save_it");s.removeAttribute("disabled"),s.classList.add("translated"),s.classList.remove("notranslate"),(({provider:t,startTime:e,endTime:a})=>{const n=document.getElementById("atfp_strings_model").querySelector(".atfp_string_container").querySelectorAll('td.translate[data-string-type]:not([data-translate-status="translated"])'),o=n.length,r=(0,l.select)("block-atfp/translate").getAllowedMetaFields();n.forEach(((n,s)=>{const i=n.innerText,c=n.dataset.key,d=n.dataset.stringType,p=n.closest("tr").querySelector('td[data-source="source_text"]').innerText;u({type:d,key:c,translateContent:i,source:p,provider:t,AllowedMetaFields:r});const m=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[t],h=m&&m.targetStringCount?m.targetStringCount:0,_=m&&m.targetWordCount?m.targetWordCount:0,y=m&&m.targetCharacterCount?m.targetCharacterCount:0;""!==i.trim()&&i.trim().length>0&&(0,l.dispatch)("block-atfp/translate").translationInfo({targetStringCount:h+p.trim().split(/(?<=[.!?]+)\s+/).length,targetWordCount:_+p.trim().split(/\s+/).filter((t=>/[^\p{L}\p{N}]/.test(t))).length,targetCharacterCount:y+p.trim().length,provider:t}),s===o-1&&(jQuery(`.${t}-translator_progress`).css("width","100%"),f(t,"block"),g({prefix:t,start:e,end:a,translateStatus:!0}))}))})({provider:e,startTime:a,endTime:n}),o(!1)},_=(t,e,a)=>{const n=(new Date).getTime();let o=!1;(t=>{if(document.querySelector(`#atfp-${t}-progress-bar`))jQuery(`.${t}-translator_progress`).css("width","0%"),jQuery(`.${t}-translator-strings-count`).hide();else{const e=jQuery(`\n            <div id="atfp-${t}-progress-bar" class="atfp-translate-progress-bar">\n                <div class="${t}-translator_progress_bar" style="background-color: #f3f3f3;border-radius: 10px;overflow: hidden;margin: 1.5rem auto; width: 50%;">\n                <div class="${t}-translator_progress" style="overflow: hidden;transition: width .2s ease-in-out; border-radius: 10px;text-align: center;width: 0%;height: 20px;box-sizing: border-box;background-color: #4caf50; color: #fff; font-weight: 600;"></div>\n                </div>\n                <div style="display:none; color: white;" class="${t}-translator-strings-count hidden">\n                    Wahooo! You have saved your valuable time via auto translating \n                    <strong class="totalChars"></strong> characters using \n                    <strong>\n                        ${t} Translator\n                    </strong>\n                </div>\n            </div>\n        `);jQuery("#atfp_strings_model .atfp_translate_progress").append(e)}})(e);const r=document.getElementById("atfp_strings_model"),s=r.querySelector(".atfp_string_container");s.scrollTop=0;const l=s.scrollHeight;if(void 0!==l&&l>100){if(document.querySelector(".atfp_translate_progress").style.display="block",setTimeout((()=>{const t=2e3*Math.ceil(l/s?.offsetHeight);(t=>{const{element:e,scrollSpeed:a,provider:n}=t;if(e.scrollHeight-e.offsetHeight<=0)return;const o=jQuery(`.${n}-translator_progress_bar`);let r=null,s=e.scrollTop;const l=()=>{const t=e.scrollHeight-e.offsetHeight+100,i=performance.now();r||(r=i);const c=s+(i-r)/a*(t+2e3-s);var d=e.scrollTop/(e.scrollHeight-e.clientHeight)*100;o.find(`.${n}-translator_progress`).css("width",d+"%");let p=(Math.round(10*d)/10).toFixed(1);p=Math.min(p,100).toString(),o.find(`.${n}-translator_progress`).text(p+"%"),c>t?f(n,"block"):(e.scrollTop=c,c<t&&setTimeout(l,16))};l()})({element:s,scrollSpeed:t,provider:e})}),2e3),s.addEventListener("scroll",(()=>{if(s.scrollTop+s.clientHeight+50>=s.scrollHeight&&!o){const s=(new Date).getTime();setTimeout((()=>{h({container:r,provider:e,startTime:n,endTime:s,translateStatus:t,modalRenderId:a})}),4e3),o=!0}})),s.clientHeight+10>=l){jQuery(`.${e}-translator_progress`).css("width","100%"),jQuery(`.${e}-translator_progress`).text("100%"),f(e,"block");const o=(new Date).getTime();setTimeout((()=>{h({container:r,provider:e,startTime:n,endTime:o,translateStatus:t,modalRenderId:a})}),4e3)}}else{jQuery(`.${e}-translator_progress`).css("width","100%"),jQuery(`.${e}-translator_progress`).text("100%"),f(e,"block");const o=(new Date).getTime();setTimeout((()=>{h({container:r,provider:e,startTime:n,endTime:o,translateStatus:t,modalRenderId:a})}),4e3)}},y=(t,e,a,n,o,r,s,l)=>{var i={keycode:{ESCAPE:27},getRequest:function(){return t.XDomainRequest?new t.XDomainRequest:t.XMLHttpRequest?new t.XMLHttpRequest:null},loadScript:function(t,a,n){var o=e.createElement("script");o.src=t,o.addEventListener("load",(function t(){this.removeEventListener("load",t,!1),n()}),!1),a.appendChild(o)},loadResource:function(e,a){var n=this.getRequest();return n?(n.onload=function(){a(this.responseText)},n.open("GET",e,!0),t.setTimeout((function(){n.send()}),0),n):null},getStyleList:function(t){var e=t.getAttribute("class");return e?e.replace(/\s+/g," ").trim().split(" "):[]},hasStyleName:function(t,e){var a=this.getStyleList(t);return!!a.length&&a.indexOf(e)>=0},addStyleName:function(t,e){var a=this.getStyleList(t);a.push(e),t.setAttribute("class",a.join(" "))},removeStyleName:function(t,e){var a=this.getStyleList(t),n=a.indexOf(e);n>=0&&(a.splice(n,1),t.setAttribute("class",a.join(" ")))},isSupportedBrowser:function(){return"localStorage"in t&&"querySelector"in e&&"addEventListener"in t&&"getComputedStyle"in t&&"CSS1Compat"===e.compatMode}},c=function(t,e){var a=this;t.addEventListener("click",(function(t){a.onClick(t)}),!1),this._element=t,this._contentElement=e||this._element};c.prototype.onClick=function(){},c.prototype.setText=function(t){return this._contentElement.textContent=t,this};var d=function(t,e){var a=this;t.reset(),t.addEventListener("click",(function(t){var e=t.target;"value"in e&&a.onSelect(e.value)}),!1),t.addEventListener("change",(function(t){alert("form change state");var e=t.target;e.checked&&a.onChange(e.value)}),!1),this._form=t,this._itemName=e};d.prototype.onSelect=function(){},d.prototype.onChange=function(){},d.prototype.isHidden=function(){return this._form.hasAttribute("hidden")},d.prototype.getItems=function(){return this._form[this._itemName]||[]},d.prototype.getValue=function(){var t,e,a=this.getItems();for(t=0,e=a.length;t<e;t++)if(a[t].checked)return a[t].value;return""},d.prototype.setValue=function(t){var e,a,n=this.getItems();if(t===this.getValue())return this;for(e=0,a=n.length;e<a;e++)if(n[e].value===t){n[e].checked=!0,this.onChange(t);break}return this},d.prototype.setHidden=function(t){return(t=!!t)!==this.isHidden()&&(this._form[(t?"set":"remove")+"Attribute"]("hidden",""),this.onHiddenChange(t)),this},d.prototype.onHiddenChange=function(){};var p=function(a){var n,o=this,c=a.select,d=a.element,p=a.storage,u=(a.autoMode,a.pageLang),g=(a.userLang,a.translator),m=a.leftButton,f=a.rightButton,h=a.closeButton;if(this._element=d,this._pageLang=u,this._translator=g,this.onStateChange=function(t,e){"active"===t&&p.setValue("active",e)},c.onSelect=function(t){this.setHidden(!0),o.translate(t),_(s,"yandex",l)},c.onChange=function(t){p.setValue("lang",t),f.setText(t),o.setState("invalid",t===u)},c.onHiddenChange=function(a){var n,r=e.documentElement;o.setState("expanded",!a),a||(o.setState("right",!1).setState("bottom",!1),d.focus(),(n=this._form.getBoundingClientRect()).right+(t.pageXOffset||r.scrollLeft)+1>=Math.max(r.clientWidth,r.scrollWidth)&&o.setState("right",!0),n.bottom+(t.pageYOffset||r.scrollTop)+1>=Math.max(r.clientHeight,r.scrollHeight)&&o.setState("bottom",!0))},d.addEventListener("blur",(function(){c.setHidden(!0)}),!1),d.addEventListener("keydown",(function(t){t.keyCode===i.keycode.ESCAPE&&c.setHidden(!0)}),!1),g.on("error",(function(){this.abort(),o.setState("busy",!1).setState("error",!0)})),g.on("progress",(function(t){switch(t){case 0:o.setState("busy",!0).setState("active",!0);break;case 100:o.setState("done",!0).setState("busy",!1)}})),m.onClick=function(){c.setHidden(!0),o.translate(c.getValue()),_(s,"yandex",l)},f.onClick=function(){o.hasState("active")?(g.undo(),o.setState("busy",!1).setState("done",!1).setState("error",!1).setState("active",!1)):c.setHidden(!c.isHidden())},h.onClick=function(){c.setHidden(!0)},null!=r)var y=r;switch(y){case"nb":case"nn":n="no";break;default:n=y}n&&(c.setValue(n),p.getValue("active"))};p.prototype.hasState=function(t){return i.hasStyleName(this._element,"yt-state_"+t)},p.prototype.setState=function(t,e){return(e=!!e)===this.hasState(t)||(i[(e?"add":"remove")+"StyleName"](this._element,"yt-state_"+t),this.onStateChange(t,e)),this},p.prototype.translate=function(t){return t&&!this.hasState("active")&&this._translator.translate(this._pageLang,t),this},p.prototype.onStateChange=function(){};var u=function(e){this._name=e;try{this._data=t.JSON.parse(t.localStorage[e])}catch(t){this._data={}}};u.prototype.getValue=function(t){return this._data[t]},u.prototype.setValue=function(e,a){this._data[e]=a;try{t.localStorage[this._name]=t.JSON.stringify(this._data)}catch(t){}};var g=e.getElementById(n.widgetId);if(g&&i.isSupportedBrowser()){var m=function(){i.loadScript("https://yastatic.net/s3/translate/v21.4.7/js/tr_page.js",g,(function(){i.loadResource("https://translate.yandex.net/website-widget/v1/widget.html",(function(t){var e;t&&(g.innerHTML=t,e=g.querySelector(".yt-widget"),n.widgetTheme&&e.setAttribute("data-theme",n.widgetTheme),new p({select:new d(e.querySelector(".yt-listbox"),"yt-lang"),element:e,storage:new u("yt-widget"),autoMode:"true"===n.autoMode,pageLang:n.pageLang,userLang:(a.language||a.userLanguage||"").split("-")[0],translator:new o.PageTranslator({srv:"tr-url-widget",url:"https://translate.yandex.net/api/v1/tr.json/translate",autoSync:!0,maxPortionLength:600}),leftButton:new c(e.querySelector(".yt-button_type_left")),rightButton:new c(e.querySelector(".yt-button_type_right"),e.querySelector(".yt-button_type_right > .yt-button__text")),closeButton:new c(e.querySelector(".yt-button_type_close"))}))}))}))};"complete"===e.readyState||"interactive"===e.readyState?m():e.addEventListener("DOMContentLoaded",m,!1)}},b=t=>{const e=window;y(e,e.document,e.navigator,{pageLang:t.sourceLang,autoMode:"false",widgetId:"atfp_yandex_translate_element",widgetTheme:"light"},e.yt=e.yt||{},t.targetLang,t.translateStatusHandler,t.modalRenderId)};class v{static Object=t=>new this(t).extraData();constructor(t){this.btnSelector=t.btnSelector||!1,this.btnClass=t.btnClass||!1,this.btnText=t.btnText||`Translate To ${t.targetLanguageLabel} (Beta)`,this.stringSelector=t.stringSelector||!1,this.progressBarSelector=t.progressBarSelector||!1,this.onStartTranslationProcess=t.onStartTranslationProcess||(()=>{}),this.onComplete=t.onComplete||(()=>{}),this.onLanguageError=t.onLanguageError||(()=>{}),this.onBeforeTranslate=t.onBeforeTranslate||(()=>{}),this.onAfterTranslate=t.onAfterTranslate||(()=>{}),this.sourceLanguage=t.sourceLanguage||"en",this.targetLanguage=t.targetLanguage||"hi",this.targetLanguageLabel=t.targetLanguageLabel||"Hindi",this.sourceLanguageLabel=t.sourceLanguageLabel||"English"}extraData=async()=>{const t=await v.languageSupportedStatus(this.sourceLanguage,this.targetLanguage,this.targetLanguageLabel,this.sourceLanguageLabel);return!0!==t?(this.onLanguageError(t),{}):(this.defaultLang=this.targetLanguage,{continueTranslation:this.continueTranslation,stopTranslation:this.stopTranslation,startTranslation:this.startTranslation,reInit:this.reInit,init:this.init})};static languageSupportedStatus=async(t,e,a,n)=>{const o=["en","es","ja","ar","de","bn","fr","hi","it","ko","nl","pl","pt","ru","th","tr","vi","zh","zh-hant","bg","cs","da","el","fi","hr","hu","id","iw","lt","no","ro","sk","sl","sv","uk","kn","ta","te","mr"].map((t=>t.toLowerCase())),r="https:"===window.location.protocol,s=window?.isSecureContext;if(!window.hasOwnProperty("chrome")||!navigator.userAgent.includes("Chrome")||navigator.userAgent.includes("Edg"))return jQuery('<span style="color: #ff4646; display: inline-block;">\n                <strong>Important Notice:</strong>\n                <ol>\n                    <li>The Translator API, which leverages Chrome local AI models, is designed specifically for use with the Chrome browser.</li>\n                    <li>For comprehensive information about the Translator API, <a href="https://developer.chrome.com/docs/ai/translator-api" target="_blank">click here</a>.</li>\n                </ol>\n                <p>Please ensure you are using the Chrome browser for optimal performance and compatibility.</p>\n            </span>');if(!("translation"in self&&"createTranslator"in self.translation||"ai"in self&&"translator"in self.ai||"Translator"in self&&"create"in self.Translator||r||s))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <strong>Important Notice:</strong>\n                <ol>\n                    <li>\n                        The Translator API is not functioning due to an insecure connection.\n                    </li>\n                    <li>\n                        Please switch to a secure connection (HTTPS) or add this URL to the list of insecure origins treated as secure by visiting \n                        <span data-clipboard-text="chrome://flags/#unsafely-treat-insecure-origin-as-secure" target="_blank" class="chrome-ai-translator-flags">\n                            chrome://flags/#unsafely-treat-insecure-origin-as-secure ${v.svgIcons("copy")}\n                        </span>.\n                        Click on the URL to copy it, then open a new window and paste this URL to access the settings.\n                    </li>\n                </ol>\n            </span>`);if(!("translation"in self&&"createTranslator"in self.translation||"ai"in self&&"translator"in self.ai||"Translator"in self&&"create"in self.Translator))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Steps to Enable the Translator AI Modal:</h4>\n                <ol>\n                    <li>Open this URL in a new Chrome tab: <strong><span data-clipboard-text="chrome://flags/#translation-api" target="_blank" class="chrome-ai-translator-flags">chrome://flags/#translation-api ${v.svgIcons("copy")}</span></strong>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>Ensure that the <strong>Experimental translation API</strong> option is set to <strong>Enabled</strong>.</li>\n                    <li>Click on the <strong>Save</strong> button to apply the changes.</li>\n                    <li>The Translator AI modal should now be enabled and ready for use.</li>\n                </ol>\n                <p>For more information, please refer to the <a href="https://developer.chrome.com/docs/ai/translator-api" target="_blank">documentation</a>.</p>   \n                <p>If the issue persists, please ensure that your browser is up to date and restart your browser.</p>\n                <p>If you continue to experience issues after following the above steps, please <a href="https://my.coolplugins.net/account/support-tickets/" target="_blank" rel="noopener">open a support ticket</a> with our team. We are here to help you resolve any problems and ensure a smooth translation experience.</p>\n            </span>`);if(!o.includes(e.toLowerCase()))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <strong>Language Support Information:</strong>\n                <ol>\n                    <li>The current version of Chrome AI Translator does not support the Target Language <strong>${a} (${e})</strong></li>\n                    <li>To view the list of supported languages, please <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">chrome://on-device-translation-internals ${v.svgIcons("copy")}</span>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>Ensure your Chrome browser is updated to the latest version for optimal performance.</li>\n                </ol>\n            </span>`);if(!o.includes(t.toLowerCase()))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <strong>Language Support Information:</strong>\n                <ol>\n                    <li>The current version of Chrome AI Translator does not support the Source Language <strong>${n} (${t})</strong></li>\n                    <li>To view the list of supported languages, please <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">chrome://on-device-translation-internals ${v.svgIcons("copy")}</span>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>Ensure your Chrome browser is updated to the latest version for optimal performance.</li>\n                </ol>\n            </span>`);const l=await v.languagePairAvality(t,e);return"after-download"===l||"downloadable"===l||"unavailable"===l?jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Installation Instructions for Language Packs:</h4>\n                <ol>\n                    <li>\n                        To proceed, please install the language pack for <strong>${a} (${e})</strong> or <strong>${n} (${t})</strong>.\n                    </li>\n                    <li>\n                        After installing the language pack, add this language to your browser's system languages in Chrome settings.<br>\n                        Go to <strong>Settings &gt; Languages &gt; Add languages</strong> and add <strong>${a}</strong> or <strong>${n}</strong> to your preferred languages list & reload the page.\n                    </li>\n                    <li>\n                        You can install it by visiting the following link: \n                        <strong>\n                            <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">\n                                chrome://on-device-translation-internals ${v.svgIcons("copy")}\n                            </span>\n                        </strong>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.\n                    </li>\n                    <li>\n                        Please check if both your source <strong>(<span style="color:#2271b1">${t}</span>)</strong> and target <strong>(<span style="color:#2271b1">${e}</span>)</strong> languages are available in the language packs list.\n                    </li>\n                    <li>\n                        You need to install both language packs for translation to work. You can search for each language by its language code: <strong>${t}</strong> and <strong>${e}</strong>.\n                    </li>\n                    <li>For more help, refer to the <a href="https://developer.chrome.com/docs/ai/translator-api#supported-languages" target="_blank">documentation to check supported languages</a>.</li>\n                </ol>\n            </span>`):"downloading"===l?jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Language Pack Download In Progress:</h4>\n                <ol>\n                    <li>\n                        The language pack for <strong>${a} (${e})</strong> or <strong>${n} (${t})</strong> is already being downloaded.\n                    </li>\n                    <li>\n                        <strong>You do not need to start the download again.</strong> Please wait for the download to complete. Once finished, the translation feature will become available automatically.\n                    </li>\n                    <li>\n                        You can check the download progress by opening:\n                        <strong>\n                            <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">\n                                chrome://on-device-translation-internals ${v.svgIcons("copy")}\n                            </span>\n                        </strong>\n                        . Click on the URL to copy it, then open a new window and paste this URL in Chrome to view the status.\n                    </li>\n                    <li>\n                        <strong>What to do next:</strong>\n                        <ul style="margin-top: .5em;">\n                            <li>Wait for the download to finish. The status will change to <strong>Ready</strong> or <strong>Installed</strong> in the <strong>Language Packs</strong> section.</li>\n                            <li>After the language pack is installed, you may need to <strong>reload</strong> or <strong>restart</strong> your browser for the changes to take effect.</li>\n                        </ul>\n                    </li>\n                    <li>\n                        For more help, refer to the <a href="https://developer.chrome.com/docs/ai/translator-api#supported-languages" target="_blank">documentation to check supported languages</a>.\n                    </li>\n                </ol>\n                <div style="text-align: right;">\n                    <button onclick="location.reload()" class="atfpp-error-reload-btn">Reload Page</button>\n                </div>\n            </span>`):"readily"===l||"available"===l||jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Language Pack Installation Required</h4>\n                <ol>\n                    <li>Please ensure that the language pack for <strong>${a} (${e})</strong> or <strong>${n} (${t})</strong> is installed and set as a preferred language in your browser.</li>\n                    <li>To install the language pack, visit <strong><span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">chrome://on-device-translation-internals ${v.svgIcons("copy")}</span></strong>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>If you encounter any issues, please refer to the <a href="https://developer.chrome.com/docs/ai/translator-api#supported-languages" target="_blank">documentation to check supported languages</a> for further assistance.</li>\n                </ol>\n            </span>`)};static languagePairAvality=async(t,e)=>{try{await self.Translator.create({sourceLanguage:t,targetLanguage:e,monitor(t){t.addEventListener("downloadprogress",(t=>{console.log(`Downloaded ${100*t.loaded}%`)}))}})}catch(t){console.log("err",t)}if("translation"in self&&"createTranslator"in self.translation)return await self.translation.canTranslate({sourceLanguage:t,targetLanguage:e});if("ai"in self&&"translator"in self.ai){const a=await self.ai.translator.capabilities();return await a.languagePairAvailable(t,e)}return"Translator"in self&&"create"in self.Translator&&await self.Translator.availability({sourceLanguage:t,targetLanguage:e})};AITranslator=async t=>"translation"in self&&"createTranslator"in self.translation?await self.translation.createTranslator({sourceLanguage:this.sourceLanguage,targetLanguage:t}):"ai"in self&&"translator"in self.ai?await self.ai.translator.create({sourceLanguage:this.sourceLanguage,targetLanguage:t}):"Translator"in self&&"create"in self.Translator&&await self.Translator.create({sourceLanguage:this.sourceLanguage,targetLanguage:t});init=async()=>{this.appendBtn(),this.translationStart=!1,this.completedTranslateIndex=0,this.completedCharacterCount=0,this.translateBtnEvents(),this.progressBarSelector&&this.addProgressBar()};appendBtn=()=>{this.translateBtn=jQuery(`<button class="button button-primary${this.btnClass?" "+this.btnClass:""}">${this.btnText}</button>`),jQuery(this.btnSelector).append(this.translateBtn)};formatCharacterCount=t=>t>=1e6?(t/1e6).toFixed(1)+"M":t>=1e3?(t/1e3).toFixed(1)+"K":t;translateBtnEvents=t=>this.btnSelector&&0!==jQuery(this.btnSelector).length?this.stringSelector&&0!==jQuery(this.stringSelector).length?(this.translateStatus=!0,this.translateBtn.off("click"),this.translateBtn.prop("disabled",!1),void(this.translationStart?this.translateStringEle.length>this.completedTranslateIndex+1?this.translateBtn.on("click",(()=>{this.onStartTranslationProcess(),this.stringTranslation(this.completedTranslateIndex+1)})):(this.onComplete({translatedStringsCount:this.completedCharacterCount}),this.translateBtn.prop("disabled",!0)):this.translateBtn.on("click",this.startTranslationProcess))):this.onLanguageError("The string selector is missing. Please provide a valid selector for the strings to be translated."):this.onLanguageError("The button selector is missing. Please provide a valid selector for the button.");startTranslationProcess=async()=>{this.onStartTranslationProcess();const t=this.defaultLang;this.translationStart=!0,this.translateStringEle=jQuery(this.stringSelector),this.totalStringCount=Array.from(this.translateStringEle).map((t=>t.innerText.length)).reduce(((t,e)=>t+e),0),this.translator=await this.AITranslator(t),this.translateStringEle.length>0&&await this.stringTranslation(this.completedTranslateIndex)};stringTranslation=async t=>{if(!this.translateStatus)return;const e=this.translateStringEle[t];this.onBeforeTranslate(e);const a=e.innerText;let n=[];(e.childNodes.length>0&&!e.querySelector(".notranslate")||e.querySelector(".notranslate"))&&e.childNodes.forEach((t=>{3===t.nodeType&&""!==t.nodeValue.trim()&&n.push(t)})),n.length>0&&await this.stringTranslationBatch(n,0),this.completedCharacterCount+=a.length,this.completedTranslateIndex=t,this.progressBarSelector&&this.updateProgressBar(),this.onAfterTranslate(e),this.translateStringEle.length>t+1&&await this.stringTranslation(this.completedTranslateIndex+1),t===this.translateStringEle.length-1&&(this.translateBtn.prop("disabled",!0),this.onComplete({characterCount:this.completedCharacterCount}),jQuery(this.progressBarSelector).find(".chrome-ai-translator-strings-count").show().find(".totalChars").text(this.formatCharacterCount(this.completedCharacterCount)))};stringTranslationBatch=async(t,e)=>{const a=await this.translator.translate(t[e].nodeValue);return a&&""!==a&&(t[e].nodeValue=a),e<t.length-1&&await this.stringTranslationBatch(t,e+1),!0};addProgressBar=()=>{if(!document.querySelector("#chrome-ai-translator-modal .chrome-ai-translator_progress_bar")){const t=jQuery('\n                <div class="chrome-ai-translator_progress_bar" style="background-color: #f3f3f3;border-radius: 10px;overflow: hidden;margin: 1.5rem auto; width: 50%;">\n                <div class="chrome-ai-translator_progress" style="overflow: hidden;transition: width .5s ease-in-out; border-radius: 10px;text-align: center;width: 0%;height: 20px;box-sizing: border-box;background-color: #4caf50; color: #fff; font-weight: 600;"></div>\n                </div>\n                <div style="display:none; color: white;" class="chrome-ai-translator-strings-count hidden">\n                    Wahooo! You have saved your valuable time via auto translating \n                    <strong class="totalChars">0</strong> characters using \n                    <strong>\n                        Chrome AI Translator\n                    </strong>\n                </div>\n            ');jQuery(this.progressBarSelector).append(t)}};updateProgressBar=()=>{const t=this.completedCharacterCount/this.totalStringCount*1e3/10;let e=t.toString().split(".")[1]||"";e=e.length>0&&"0"!==e[0]?e[0]:"";const a=parseInt(t)+""+(""!==e?"."+e:"");jQuery(".chrome-ai-translator_progress").css({width:`${a}%`}).text(`${a}%`)};stopTranslation=()=>{this.translateStatus=!1};reInit=()=>{this.translateBtnEvents()};startTranslation=()=>{this.translateStatus=!0,this.startTranslationProcess(this.completedTranslateIndex+1)};static svgIcons=t=>({copy:'<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="16px" width="16px" xmlns="http://www.w3.org/2000/svg" fill="#2271b1"><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"></path></svg>'}[t]||"")}const w=v,T=async t=>{const e=atfp_global_object.languageObject[t.targetLang].name,a=atfp_global_object.languageObject[t.sourceLang].name,n=(0,l.select)("block-atfp/translate").getAllowedMetaFields(),{translateStatusHandler:o,translateStatus:r}=t;let s=0;const c=await w.Object({mainWrapperSelector:"#atfp_strings_model",btnSelector:`#${t.ID}`,btnClass:"local_ai_translator_btn",btnText:(0,i.__)("Translate To","autopoly-ai-translation-for-polylang")+" "+e+" (Beta)",stringSelector:".atfp_string_container tbody tr td.translate:not([data-translate-status='translated'])",progressBarSelector:"#atfp_strings_model .atfp_translate_progress",sourceLanguage:t.sourceLang,targetLanguage:t.targetLang,targetLanguageLabel:e,sourceLanguageLabel:a,onStartTranslationProcess:()=>{s=(new Date).getTime(),jQuery("#atfp_strings_model .modal-content .atfp_string_container")[0].scrollHeight>100&&jQuery("#atfp_strings_model .atfp_translate_progress").fadeIn("slow")},onComplete:()=>{g({prefix:"localAiTranslator",start:s,end:(new Date).getTime(),translateStatus:!0}),setTimeout((()=>{o(!1),jQuery("#atfp_strings_model .atfp_translate_progress").fadeOut("slow")}),4e3)},onBeforeTranslate:t=>{const e=jQuery("#atfp_strings_model .modal-content .atfp_string_container");if(e.length<1)return c.stopTranslation(),g({prefix:"localAiTranslator",start:s,end:(new Date).getTime()}),void(s=0);const a=e[0].getBoundingClientRect(),n=t.closest("tr").offsetTop,o=e.height();var r;n>o+a.y&&(r=n-o+t.offsetHeight,e.scrollTop(r))},onAfterTranslate:t=>{const e=t.innerText,a=t.dataset.stringType,o=t.dataset.key,r=t.closest("tr").querySelector('td[data-source="source_text"]').innerText;u({type:a,key:o,translateContent:e,source:r,provider:"localAiTranslator",AllowedMetaFields:n});const s=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData?.localAiTranslator,i=s&&s.targetStringCount?s.targetStringCount:0,c=s&&s.targetWordCount?s.targetWordCount:0,d=s&&s.targetCharacterCount?s.targetCharacterCount:0;""!==e.trim()&&e.trim().length>0&&(0,l.dispatch)("block-atfp/translate").translationInfo({targetStringCount:i+r.trim().split(/(?<=[.!?]+)\s+/).length,targetWordCount:c+r.trim().split(/\s+/).filter((t=>/[^\p{L}\p{N}]/.test(t))).length,targetCharacterCount:d+r.trim().length,provider:"localAiTranslator"})}});if(c.hasOwnProperty("init")){c.init();const t=document.querySelector("#atfp_localAiTranslator_translate_element .local_ai_translator_btn");t&&r&&(t.disabled=r)}},S=t=>{t=t||{};const{Service:e=!1,openErrorModalHandler:a=()=>{}}=t,n=(window.atfp_global_object.admin_url,window.atfp_global_object.atfp_url+"assets/images/error-icon.svg"),o={yandex:{Provider:b,title:"Yandex Translate",SettingBtnText:"Translate",serviceLabel:"Yandex Translate",Docs:"https://docs.coolplugins.net/doc/yandex-translate-for-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_yandex",heading:(0,i.__)("Choose Language","autopoly-ai-translation-for-polylang"),BetaEnabled:!1,ButtonDisabled:t.yandexButtonDisabled,ErrorMessage:t.yandexButtonDisabled?React.createElement("div",{className:"atfp-provider-error button button-primary",onClick:()=>a("yandex")},React.createElement("img",{src:n,alt:"error"})," ",(0,i.__)("View Error","autopoly-ai-translation-for-polylang")):React.createElement(React.Fragment,null),Logo:"yandex.png"},localAiTranslator:{Provider:T,title:"Chrome Built-in AI",SettingBtnText:"Translate",serviceLabel:"Chrome AI Translator",heading:(0,i.sprintf)((0,i.__)("Translate Using %s","autopoly-ai-translation-for-polylang"),"Chrome built-in API"),Docs:"https://docs.coolplugins.net/doc/chrome-ai-translation-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_chrome",BetaEnabled:!0,ButtonDisabled:t.localAiTranslatorButtonDisabled,ErrorMessage:t.localAiTranslatorButtonDisabled?React.createElement("div",{className:"atfp-provider-error button button-primary",onClick:()=>a("localAiTranslator")},React.createElement("img",{src:n,alt:"error"})," ",(0,i.__)("View Error","autopoly-ai-translation-for-polylang")):React.createElement(React.Fragment,null),Logo:"chrome.png"},google:{title:"Google Translate",SettingBtnText:"Translate",serviceLabel:"Google Translate",Docs:"https://docs.coolplugins.net/doc/google-translate-for-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_google",heading:(0,i.__)("Choose Language","autopoly-ai-translation-for-polylang"),BetaEnabled:!1,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_google",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"google.png"},openai_ai:{title:"OpenAI Model",SettingBtnText:"Translate",serviceLabel:"OpenAI",heading:(0,i.sprintf)((0,i.__)("Translate Using %s Model","autopoly-ai-translation-for-polylang"),"OpenAI"),Docs:"https://docs.coolplugins.net/doc/translate-via-open-ai-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_openai",BetaEnabled:!0,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_openai",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"openai.png",filterHtmlContent:!0},google_ai:{title:"Gemini Model",SettingBtnText:"Translate",serviceLabel:"Gemini",heading:(0,i.sprintf)((0,i.__)("Translate Using %s Model","autopoly-ai-translation-for-polylang"),"Gemini"),Docs:"https://docs.coolplugins.net/doc/translate-via-gemini-ai-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_gemini",BetaEnabled:!0,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_gemini",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"gemini.png",filterHtmlContent:!0}};return e?o[e]:o},k=t=>{const{service:e}=t,a=(0,l.select)("block-atfp/translate").getTranslationEntry(),n=t.stringModalBodyNotice;return(0,d.useEffect)((()=>{["yandex"].includes(t.service)&&(document.documentElement.setAttribute("translate","no"),document.body.classList.add("notranslate"));const e=t.service,a=`atfp_${e}_translate_element`;wp.data.select("block-atfp/translate").getTranslationEntry().length>0&&t.postDataFetchStatus&&S({Service:e}).Provider({sourceLang:t.sourceLang,targetLang:t.targetLang,translateStatusHandler:t.translateStatusHandler,ID:a,translateStatus:t.translateStatus,modalRenderId:t.modalRender,destroyUpdateHandler:t.updateDestroyHandler})}),[t.modalRender,t.postDataFetchStatus]),React.createElement("div",{className:"modal-body"},a.length>0&&t.postDataFetchStatus?React.createElement(React.Fragment,null,n&&React.createElement("div",{className:"atfp-body-notice-wrapper"},React.createElement(n,null)),React.createElement("div",{className:"atfp_translate_progress",key:t.modalRender},(0,i.__)("Automatic translation is in progress....","autopoly-ai-translation-for-polylang"),React.createElement("br",null),(0,i.__)("It will take few minutes, enjoy ☕ coffee in this time!","autopoly-ai-translation-for-polylang"),React.createElement("br",null),React.createElement("br",null),(0,i.__)("Please do not leave this window or browser tab while translation is in progress...","autopoly-ai-translation-for-polylang")),React.createElement("div",{className:`translator-widget ${e}`,style:{display:"flex"}},React.createElement("h3",{className:"choose-lang"},S({Service:t.service}).heading," ",React.createElement("span",{className:"dashicons-before dashicons-translation"})),React.createElement("div",{className:"atfp_translate_element_wrapper "+(t.translateStatus?"translate-completed":"")},React.createElement("div",{id:`atfp_${t.service}_translate_element`}))),React.createElement("div",{className:"atfp_string_container"},React.createElement("table",{className:"scrolldown",id:"stringTemplate"},React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",{className:"notranslate"},(0,i.__)("S.No","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Source Text","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Translation","autopoly-ai-translation-for-polylang")))),React.createElement("tbody",null,t.postDataFetchStatus&&React.createElement(React.Fragment,null,a.map(((e,a)=>React.createElement(s.Fragment,{key:a+t.translatePendingStatus},void 0!==e.source&&""!==e.source.trim()&&React.createElement(React.Fragment,null,React.createElement("tr",{key:a+"tr"+t.translatePendingStatus},React.createElement("td",null,a+1),React.createElement("td",{"data-source":"source_text"},e.source),t.translatePendingStatus?React.createElement("td",{className:"translate",translate:"yes","data-key":e.id,"data-string-type":e.type},React.createElement(p,{service:t.service,content:e.source,contentKey:e.id})):React.createElement("td",{className:"translate","data-translate-status":"translated","data-key":e.id,"data-string-type":e.type},e.translatedData[t.service]))))))))))):t.postDataFetchStatus?React.createElement("p",null,(0,i.__)("No strings are available for translation","autopoly-ai-translation-for-polylang")):React.createElement("div",{className:"atfp-skeleton-loader-wrapper"},React.createElement("div",{className:"translate-widget"},React.createElement("div",{className:"atfp-skeleton-loader-mini"}),React.createElement("div",{className:"atfp-skeleton-loader-mini"})),React.createElement("table",null,React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",{className:"notranslate"},(0,i.__)("S.No","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Source Text","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Translation","autopoly-ai-translation-for-polylang")))),React.createElement("tbody",null,[...Array(10)].map(((t,e)=>React.createElement("tr",{key:e},React.createElement("td",null,React.createElement("div",{className:"atfp-skeleton-loader-mini"})),React.createElement("td",null,React.createElement("div",{className:"atfp-skeleton-loader-mini"})),React.createElement("td",null,React.createElement("div",{className:"atfp-skeleton-loader-mini"})))))))))},E=t=>React.createElement("div",{className:`notice inline notice-info is-dismissible ${t.className}`},Array.isArray(t.children)?t.children.join(" "):t.children),C=t=>React.createElement("div",{className:"modal-footer",key:t.modalRender},!t.translatePendingStatus&&React.createElement(E,{className:"atfp_string_count"},React.createElement("p",null,(0,i.__)("Wahooo! You have saved your valuable time via auto translating","autopoly-ai-translation-for-polylang")," ",React.createElement("strong",null,React.createElement(m,{number:t.characterCount}))," ",(0,i.__)("characters using","autopoly-ai-translation-for-polylang")," ",React.createElement("strong",null,t.serviceLabel),".",(0,i.__)("Please share your feedback —","autopoly-ai-translation-for-polylang"),React.createElement("a",{href:"https://wordpress.org/support/plugin/automatic-translations-for-polylang/reviews/#new-post",target:"_blank",rel:"noopener",style:{color:"yellow"}},(0,i.__)("leave a quick review","autopoly-ai-translation-for-polylang")),"!")),React.createElement("div",{className:"save_btn_cont"},React.createElement("button",{className:"notranslate save_it button button-primary",disabled:t.translatePendingStatus,onClick:t.updatePostData},(0,i.__)("Update Content","autopoly-ai-translation-for-polylang"))));function R(){return R=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)({}).hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},R.apply(null,arguments)}const L=t=>{let e=t.service;const a=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[e]||!1,n=a?.translateStatus||!1,[o,r]=(0,s.useState)(!0),[i,d]=(0,s.useState)(""),[p,u]=(0,s.useState)(!0),[g,m]=(0,s.useState)(a?.targetCharacterCount||0),[f,h]=(0,s.useState)([]),_=t=>{h((e=>[...e,t]))};(0,s.useEffect)((()=>{o||f.length>0&&f.forEach((t=>{"function"==typeof t&&t()}))}),[o,f]);const y=()=>{const e=t.service;return"localAiTranslator"===e?"Chrome AI Translator":e.replace(/^\w/,(t=>t.toUpperCase()))+" Translate"};(0,s.useEffect)((()=>{t.postDataFetchStatus||t.fetchPostData({postId:t.postId,sourceLang:t.sourceLang,targetLang:t.targetLang,updatePostDataFetch:t.updatePostDataFetch,refPostData:t=>d(t),updateDestroyHandler:_})}),[t.postDataFetchStatus,t.modalRender]);const b=e=>{"yandex"===t.service&&document.querySelector("#atfp_yandex_translate_element #yt-widget .yt-button__icon.yt-button__icon_type_right")?.click(),u(!0),r(!1)},v=()=>{const e=i;let a=t.service;t.translatePost({postContent:e,modalClose:()=>r(!1),service:a}),t.pageTranslate(!0),(({provider:t,sourceLang:e,targetLang:a,postId:n})=>{const o=(0,l.select)("block-atfp/translate").getTranslationInfo(),r=o.translateData?.[t]?.targetStringCount||0,s=o.translateData?.[t]?.targetWordCount||0,i=o.translateData?.[t]?.targetCharacterCount||0,c=o.translateData?.[t]?.timeTaken||0,d=o?.sourceWordCount||0,p=o?.sourceCharacterCount||0,u=o?.sourceStringCount||0,g={provider:t,totalStringCount:r,totalWordCount:s,totalCharacterCount:i,editorType:atfp_global_object.editor_type,date:(new Date).toISOString(),sourceStringCount:u,sourceWordCount:d,sourceCharacterCount:p,sourceLang:e,targetLang:a,timeTaken:c,action:atfp_global_object.update_translate_data,atfp_nonce:atfp_global_object.ajax_nonce,post_id:n};fetch(atfp_global_object.ajax_url,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(g)}).then((t=>t.json())).then((t=>{console.log(t.data.message)})).catch((t=>{console.error(t)}))})({provider:a,sourceLang:t.sourceLang,targetLang:t.targetLang,postId:t.currentPostId})};return(0,s.useEffect)((()=>{r(!0),n&&(m(a?.targetCharacterCount||0),u(!1)),setTimeout((()=>{const t=document.querySelector(".atfp_string_container");t&&(t.scrollTop=0)}))}),[t.modalRender]),React.createElement(React.Fragment,null," ",o&&React.createElement("div",{id:`atfp-${t.service}-strings-modal`,className:"modal-container",style:{display:o?"flex":"none"},"data-render-id":t.modalRender},React.createElement("div",{className:"modal-content"},React.createElement(c,{modalRender:t.modalRender,setPopupVisibility:b,postContent:i,translatePendingStatus:p,pageTranslate:t.pageTranslate,service:t.service,serviceLabel:y(),updatePostData:v,characterCount:g}),React.createElement(k,R({},t,{updatePostContent:t=>{d(t)},contentLoading:t.contentLoading,postDataFetchStatus:t.postDataFetchStatus,translatePendingStatus:p,service:t.service,sourceLang:t.sourceLang,targetLang:t.targetLang,translateStatusHandler:e=>{let a=t.service;const n=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[a]?.targetCharacterCount||0;m(n),u(e)},modalRender:t.modalRender,translateStatus:n,stringModalBodyNotice:t.stringModalBodyNotice,updateDestroyHandler:_})),React.createElement(C,{modalRender:t.modalRender,setPopupVisibility:b,postContent:i,translatePendingStatus:p,pageTranslate:t.pageTranslate,service:t.service,serviceLabel:y(),updatePostData:v,characterCount:g}))))},x=({setSettingVisibility:t})=>React.createElement("div",{className:"modal-header"},React.createElement("h2",null,(0,i.__)("Step 1 - Select Translation Provider","autopoly-ai-translation-for-polylang")),React.createElement("span",{className:"close",onClick:()=>t(!1)},"×")),j=t=>{const e=t.Service,a=t[e+"Disabled"],n=S({Service:e,[e+"ButtonDisabled"]:a,openErrorModalHandler:t.openErrorModalHandler}),o=`atfp-${e.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/[^a-z0-9-]/g,"")}-btn`;return React.createElement("tr",null,React.createElement("td",{className:"atfp-provider-name"},React.createElement("img",{src:`${t.imgFolder}${n.Logo}`,alt:n.title}),React.createElement("span",null,n.title)),React.createElement("td",null,n.ButtonDisabled?n.ErrorMessage:React.createElement("div",{id:o,onClick:t.fetchContent,className:"atfp-service-btn button button-primary","data-service":e,"data-service-label":n.ServiceLabel},n.SettingBtnText)),React.createElement("td",null,React.createElement("a",{href:n.Docs,target:"_blank",rel:"noopener noreferrer",className:"atfp-doc-icon"},React.createElement("svg",{width:"9",height:"12",viewBox:"0 0 9 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("path",{d:"M2.17607 6.20533H6.82393V5.53867H2.17607V6.20533ZM2.17607 8.05133H6.82393V7.38467H2.17607V8.05133ZM2.17607 9.898H4.89536V9.23133H2.17607V9.898ZM1.03821 12C0.7425 12 0.495643 11.8973 0.297643 11.692C0.0996427 11.4867 0.000428571 11.2304 0 10.9233V1.07667C0 0.77 0.0992142 0.514 0.297643 0.308667C0.496071 0.103333 0.743143 0.000444444 1.03886 0H6.10714L9 3V10.9233C9 11.23 8.901 11.4862 8.703 11.692C8.505 11.8978 8.25771 12.0004 7.96114 12H1.03821ZM5.78571 3.33333V0.666667H1.03886C0.939857 0.666667 0.849 0.709333 0.766286 0.794666C0.683571 0.88 0.642429 0.974 0.642857 1.07667V10.9233C0.642857 11.0256 0.684 11.1196 0.766286 11.2053C0.848571 11.2911 0.939214 11.3338 1.03821 11.3333H7.96179C8.06036 11.3333 8.151 11.2907 8.23371 11.2053C8.31643 11.12 8.35757 11.0258 8.35714 10.9227V3.33333H5.78571Z",fill:"#6F6F6F"})))))};function A(){return A=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)({}).hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},A.apply(null,arguments)}const N=t=>{const e=S();return React.createElement("div",{className:"atfp-setting-modal-body"},React.createElement("div",{className:"atfp-setting-modal-notice-wrapper"}),React.createElement("table",null,React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",null,"Name"),React.createElement("th",null,"Translate"),React.createElement("th",null,"Docs"))),React.createElement("tbody",null,Object.keys(e).map((e=>React.createElement(j,A({key:e},t,{Service:e})))))))},D=t=>{const{targetLangName:e,postType:a,sourceLangName:n,setSettingVisibility:o}=t;return React.createElement("div",{className:"modal-footer"},React.createElement("p",{className:"atfp-error-message",style:{marginBottom:".5rem"}},sprintf((0,i.__)("This will replace your current %(postType)s with a %(target)s translation of the original %(source)s content.","autopoly-ai-translation-for-polylang"),{postType:a,source:n,target:e})),React.createElement("button",{className:"atfp-setting-close button button-primary",onClick:()=>o(!1)},(0,i.__)("Close","autopoly-ai-translation-for-polylang")))},P=({message:t,onClose:e,Title:a})=>{let n=jQuery("<div>").append(t);const o=n.html();return n.remove(),n=null,(0,s.useEffect)((()=>{const t=document.querySelectorAll(".chrome-ai-translator-flags");if(t.length>0)return t.forEach((t=>{t.classList.add("atfp-tooltip-element"),t.addEventListener("click",(e=>{if(e.preventDefault(),t.querySelector(".atfp-tooltip"))return;let a=document.createElement("span");a.textContent="Text to be copied.",a.className="atfp-tooltip",t.appendChild(a),(async({text:t=!1,startCopyStatus:e=()=>{},endCopyStatus:a=()=>{}})=>{if(t&&""!==t)try{if(navigator?.clipboard?.writeText)await navigator.clipboard.writeText(t);else{const e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select(),document.execCommand&&document.execCommand("copy"),document.body.removeChild(e)}e(),setTimeout((()=>a()),800)}catch(t){console.error("Error copying text to clipboard:",t)}})({text:t.getAttribute("data-clipboard-text"),startCopyStatus:()=>{a.classList.add("atfp-tooltip-active")},endCopyStatus:()=>{setTimeout((()=>{a.remove()}),800)}})}))})),()=>{t.forEach((t=>{t.removeEventListener("click",(()=>{}))}))}}),[]),React.createElement("div",{className:"atfp-error-modal-box-container"},React.createElement("div",{className:"atfp-error-modal-box"},React.createElement("div",{className:"atfp-error-modal-box-header"},React.createElement("span",{className:"atfp-error-modal-box-close",onClick:e},"×"),a&&React.createElement("h3",null,a)),React.createElement("div",{className:"atfp-error-modal-box-body"},React.createElement("p",{dangerouslySetInnerHTML:{__html:o}})),React.createElement("div",{className:"atfp-error-modal-box-footer"},React.createElement("button",{className:"atfp-error-modal-box-close button button-primary",onClick:e},"Close"))))};function I(){return I=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)({}).hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},I.apply(null,arguments)}const F=t=>{const[e,a]=(0,s.useState)({}),[n,o]=(0,s.useState)(0),[l,c]=(0,s.useState)(!1),d=atfp_global_object.source_lang,p=t.targetLang,u=atfp_global_object.languageObject[d].name,g=atfp_global_object.languageObject[p].name,m=atfp_global_object.atfp_url+"assets/images/",f=["af","am","ar","az","ba","be","bg","bn","bs","ca","ceb","cs","cv","cy","da","de","el","emj","en","eo","es","et","eu","fa","fi","fr","ga","gd","gl","gu","he","hi","hr","ht","hu","hy","id","is","it","ja","jv","ka","kazlat","kk","km","kn","ko","ky","la","lb","lo","lt","lv","mg","mhr","mi","mk","ml","mn","mr","mrj","ms","mt","my","ne","nl","no","pa","pap","pl","pt","pt-BR","ro","ru","sah","si","sk","sl","sq","sr","sr-Latn","su","sv","sw","ta","te","tg","th","tl","tr","tt","udm","uk","ur","uz","uzbcyr","vi","xh","yi","zh","zu"].includes(p),[h,_]=(0,s.useState)({}),[y,b]=(0,s.useState)(!1),[v,T]=(0,s.useState)(!1),S=t=>{t.preventDefault();const e=t.target;"yes"===e.dataset.value&&c(!0),e.closest("#atfp-modal-open-warning-wrapper").remove()};(0,s.useEffect)((()=>{const e=document.querySelectorAll("#atfp-modal-open-warning-wrapper .modal-content div[data-value]"),a=document.querySelector(t.translateWrpSelector);a&&a.addEventListener("click",(t=>{t.preventDefault(),c((t=>!t))})),e.forEach((t=>{t&&t.addEventListener("click",S)}))}),[]),(0,s.useEffect)((()=>{l&&(f||_((t=>({...t,yandex:{message:"<p style={{ fontSize: '1rem', color: '#ff4646' }}>"+(0,i.sprintf)((0,i.__)("Yandex Translate does not support the target language: %s.","autopoly-ai-translation-for-polylang"),"<strong>"+g+"</strong>")+"</p>",Title:(0,i.__)("Yandex Translate","autopoly-ai-translation-for-polylang")}}))),(async()=>{const t=await w.languageSupportedStatus(d,p,g,u),e=document.querySelector(".atfp-service-btn#atfp-local-ai-translator-btn");!0!==t&&"object"==typeof t&&e&&(T(!0),_((e=>({...e,localAiTranslator:{message:t,Title:(0,i.__)("Chrome AI Translator","autopoly-ai-translation-for-polylang")}}))))})())}),[l]),(0,s.useEffect)((()=>{const a=e,o=a.dataset&&a.dataset.service,s=a.dataset&&a.dataset.serviceLabel,l=t.postId,i=document.getElementById("atfp_strings_model");i&&(i._reactRoot||(i._reactRoot=r.createRoot(i)),n&&i._reactRoot.render(React.createElement(L,{currentPostId:t.currentPostId,postId:l,service:o,serviceLabel:s,sourceLang:d,targetLang:p,modalRender:n,pageTranslate:t.pageTranslate,postDataFetchStatus:t.postDataFetchStatus,fetchPostData:t.fetchPostData,translatePost:t.translatePost,contentLoading:t.contentLoading,updatePostDataFetch:t.updatePostDataFetch,stringModalBodyNotice:t.stringModalBodyNotice})))}),[t.postDataFetchStatus,n]);const k=t=>{c(t)};return React.createElement(React.Fragment,null,y&&h[y]&&React.createElement(P,I({onClose:()=>{b(!1)}},h[y])),l&&React.createElement("div",{className:"modal-container",style:{display:l?"flex":"none"}},React.createElement("div",{className:"atfp-settings modal-content"},React.createElement(x,{setSettingVisibility:k,postType:t.postType,sourceLangName:u,targetLangName:g}),React.createElement(N,{yandexDisabled:!f,fetchContent:async t=>{let e=t.target.classList.contains("atfp-service-btn")?t.target:t.target.closest(".atfp-service-btn");if(!e)return;const n=e.dataset&&e.dataset.service;if(c(!1),"localAiTranslator"===n){const t=await w.languageSupportedStatus(d,p,g);if(!0!==t&&"object"==typeof t)return}o((t=>t+1)),a(e)},imgFolder:m,targetLangName:g,postType:t.postType,sourceLangName:u,localAiTranslatorDisabled:v,openErrorModalHandler:t=>{c(!1),b(t)}}),React.createElement(D,{targetLangName:g,postType:t.postType,sourceLangName:u,setSettingVisibility:k}))))},B="SAVE_SOURCE_TITLE",$="SAVE_TRANSLATE_TITLE",O="SAVE_SOURCE_EXCERPT",M="SAVE_TRANSLATE_EXCERPT",H="SAVE_SOURCE_CONTENT",V="SAVE_TRANSLATE_CONTENT",q="SAVE_SOURCE_META_FIELDS",W="SAVE_TRANSLATE_META_FIELDS",Q="SET_BLOCK_RULES",U="SAVE_TRANSLATE_INFO",z="ALLOWED_META_FIELDS",Y={title:{},excerpt:{},content:[],metaFields:{},allowedMetaFields:{}},G=t=>({type:B,text:t}),Z=(t,e)=>({type:$,text:t,provider:e}),K=t=>({type:O,text:t}),X=(t,e)=>({type:M,text:t,provider:e}),J=(t,e)=>({type:H,text:e,id:t}),tt=(t,e,a,n)=>({type:V,text:e,id:t,source:a,provider:n}),et=(t,e)=>({type:q,text:e,id:t}),at=(t,e,a,n)=>({type:W,text:e,id:t,source:a,provider:n}),nt=t=>({type:Q,data:t}),ot=({sourceStringCount:t=null,sourceWordCount:e=null,sourceCharacterCount:a=null,timeTaken:n=null,provider:o=null,targetStringCount:r=null,targetWordCount:s=null,targetCharacterCount:l=null,translateStatus:i=null})=>({type:U,sourceStringCount:t,sourceWordCount:e,sourceCharacterCount:a,timeTaken:n,targetStringCount:r,targetWordCount:s,targetCharacterCount:l,provider:o,translateStatus:i}),rt=({id:t,type:e})=>({type:z,id:t,inputType:e}),st=t=>{const e=new Array;return t.title.source&&e.push({id:"title",source:t.title.source,type:"title",translatedData:t.title.translatedData||{}}),t.excerpt.source&&e.push({id:"excerpt",source:t.excerpt.source,type:"excerpt",translatedData:t.excerpt.translatedData||{}}),Object.keys(t.metaFields).map((a=>{e.push({type:"metaFields",id:a,source:t.metaFields[a].source,translatedData:t.metaFields[a].translatedData||{}})})),Object.keys(t.content).map((a=>{e.push({type:"content",id:a,source:t.content[a].source,translatedData:t.content[a].translatedData||{}})})),e},lt=t=>t.blockRules,it=(t,e,a,n=null,o=null)=>["title","excerpt"].includes(e)&&t[e].source===a&&t[e].translatedData&&t[e].translatedData[o]?t[e]?.translatedData[o]||t[e]?.source:"metaFields"===e&&t.metaFields&&t.metaFields[n]&&t.metaFields[n].source===a&&t.metaFields[n].translatedData&&t.metaFields[n].translatedData[o]?void 0!==t.metaFields[n]?.translatedData[o]?t.metaFields[n]?.translatedData[o]:t.metaFields[n]?.source:"content"===e&&t.content&&t.content[n]&&t.content[n].source===a&&t.content[n].translatedData&&t.content[n].translatedData[o]?void 0!==t.content[n]?.translatedData[o]?t.content[n]?.translatedData[o]:t.content[n]?.source:a,ct=t=>({sourceStringCount:t?.translationInfo?.sourceStringCount||0,sourceWordCount:t?.translationInfo?.sourceWordCount||0,sourceCharacterCount:t?.translationInfo?.sourceCharacterCount||0,translateData:t?.translationInfo?.translateData||{}}),dt=t=>t.allowedMetaFields||{},{createReduxStore:pt,register:ut}=wp.data;ut(pt("block-atfp/translate",{reducer:(t=Y,e)=>{switch(e.type){case B:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,title:{...t.title,source:e.text}}:t;case $:return{...t,title:{...t.title,translatedData:{...t.title.translatedData||[],[e.provider]:e.text}}};case O:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,excerpt:{...t.excerpt,source:e.text}}:t;case M:return{...t,excerpt:{...t.excerpt,translatedData:{...t.excerpt.translatedData||[],[e.provider]:e.text}}};case H:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,content:{...t.content,[e.id]:{...t.content[e.id]||[],source:e.text}}}:t;case V:return t.content[e.id].source===e.source?{...t,content:{...t.content,[e.id]:{...t.content[e.id]||[],translatedData:{...t.content[e.id].translatedData||[],[e.provider]:e.text}}}}:t;case q:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,metaFields:{...t.metaFields,[e.id]:{...t.metaFields[e.id]||[],source:e.text}}}:t;case W:return{...t,metaFields:{...t.metaFields,[e.id]:{...t.metaFields[e.id]||[],translatedData:{...t.metaFields[e.id].translatedData||[],[e.provider]:e.text}}}};case Q:return{...t,blockRules:e.data};case U:const a={};return e.sourceStringCount&&(a.sourceStringCount=e.sourceStringCount),e.sourceWordCount&&(a.sourceWordCount=e.sourceWordCount),e.sourceCharacterCount&&(a.sourceCharacterCount=e.sourceCharacterCount),(e.targetWordCount||e.targetCharacterCount||e.translateStatus||e.timeTaken)&&e.provider&&(a.translateData={...t.translationInfo?.translateData||{},[e.provider]:{...t.translationInfo?.translateData?.[e.provider]||{},...e.targetStringCount&&{targetStringCount:e.targetStringCount},...e.targetWordCount&&{targetWordCount:e.targetWordCount},...e.targetCharacterCount&&{targetCharacterCount:e.targetCharacterCount},...e.translateStatus&&{translateStatus:e.translateStatus},...e.timeTaken&&{timeTaken:e.timeTaken}}}),{...t,translationInfo:{...t.translationInfo,...a}};case z:return{...t,allowedMetaFields:{...t.allowedMetaFields,[e.id]:{...t.allowedMetaFields[e.id]||[],inputType:e.inputType}}};default:return t}},actions:n,selectors:o}));const gt=(t,e,a,n)=>{const o=(t,e)=>{Object.keys(e).map((a=>{let o=e;o=o[a];const r=new Array(...t,a);n(r,o)}))};Object.getPrototypeOf(e)===Array.prototype?((t,e)=>{const r=new Array(...t);let s=a;r.forEach((t=>{s=s[t]})),[null,void 0].includes(s)||(Object.getPrototypeOf(s)!==Object.prototype?(Object.getPrototypeOf(s)===Array.prototype&&s.forEach(((t,a)=>{const o=new Array;r.forEach((t=>{o.push(t)})),o.push(a),n(o,e[0])})),"object"!=typeof s||o(t,e[0])):o(t,e[0]))})(t,e):Object.getPrototypeOf(e)===Object.prototype&&o(t,e)},mt=(t,e)=>{Object.keys(e.AtfpBlockParseRules).includes(t.name)&&((t,e,a)=>{const n=Object.values(a),o=(a,n)=>{if(!0!==n)gt(a,n,e,o);else{const n=new Array(...a),o=new Array;let r=e,s=t;n.forEach((t=>{o.push(t),s+=`atfp${t}`,r=r[t]}));let i=r;if(i instanceof wp.richText.RichTextData&&(i=i.originalHTML),void 0!==i&&""!==i.trim()){let t=s.replace(/[^\p{L}\p{N}]/gu,"");if(!/[\p{L}\p{N}]/gu.test(i))return!1;(0,l.dispatch)("block-atfp/translate").contentSaveSource(t,i)}}};n.forEach((t=>{Object.keys(t).forEach((e=>{const a=new Array(e);o(a,t[e])}))}))})(t.clientId,t.attributes,e.AtfpBlockParseRules[t.name])},ft=(t,e)=>{t.forEach((t=>{mt(t,e),t.innerBlocks&&ft(t.innerBlocks,e)}))},ht=window.wp.blocks,_t={_yoast_wpseo_title:{type:"string"},_yoast_wpseo_focuskw:{type:"string"},_yoast_wpseo_metadesc:{type:"string"},_yoast_wpseo_bctitle:{type:"string"},"_yoast_wpseo_opengraph-title":{type:"string"},"_yoast_wpseo_opengraph-description":{type:"string"},"_yoast_wpseo_twitter-title":{type:"string"},"_yoast_wpseo_twitter-description":{type:"string"},rank_math_title:{type:"string"},rank_math_description:{type:"string"},rank_math_focus_keyword:{type:"string"},rank_math_facebook_title:{type:"string"},rank_math_facebook_description:{type:"string"},rank_math_twitter_title:{type:"string"},rank_math_twitter_description:{type:"string"},rank_math_breadcrumb_title:{type:"string"},_seopress_titles_title:{type:"string"},_seopress_titles_desc:{type:"string"},_seopress_social_fb_title:{type:"string"},_seopress_social_fb_desc:{type:"string"},_seopress_social_twitter_title:{type:"string"},_seopress_social_twitter_desc:{type:"string"},_seopress_analysis_target_kw:{type:"string"}},yt=async t=>{const e=atfp_global_object.ajax_url;let a={};const n=t=>{(0,l.dispatch)("block-atfp/translate").allowedMetaFields(t)};Object.keys(_t).forEach((t=>{n({id:t,type:_t[t].type})})),(()=>{const t="true"===atfp_global_object.postMetaSync;if(window.acf&&!t){const t=["text","textarea","wysiwyg"];acf.getFields().forEach((e=>{e.data&&t.includes(e.data.type)&&n({id:e.data.key,type:e.data.type})}))}})();const o={atfp_nonce:atfp_global_object.ajax_nonce,action:atfp_global_object.action_block_rules};await fetch(e,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(o)}).then((t=>t.json())).then((t=>{a=JSON.parse(t.data.blockRules),(0,l.dispatch)("block-atfp/translate").setBlockRules(a)})).catch((t=>{console.error("Error fetching post content:",t)}));const r={postId:parseInt(t.postId),local:t.targetLang,current_local:t.sourceLang,atfp_nonce:atfp_global_object.ajax_nonce,action:atfp_global_object.action_fetch};await fetch(e,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(r)}).then((t=>t.json())).then((e=>{const n=e.data;n.content&&""!==n.content.trim()&&(n.content=(0,ht.parse)(n.content)),((t,e)=>{const a=(0,l.select)("block-atfp/translate").getAllowedMetaFields();Object.keys(t).forEach((n=>{if("content"===n)((t,e)=>{Object.values(t).forEach((t=>{mt(t,e),t.innerBlocks&&ft(t.innerBlocks,e)}))})(t[n],e);else if("metaFields"===n)Object.keys(t[n]).forEach((e=>{Object.keys(a).includes(e)&&"string"===a[e].inputType&&""!==t[n][e][0]&&void 0!==t[n][e][0]&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(e,t[n][e][0])})),window.acf&&acf.getFields().forEach((e=>{if(e.data&&a[e.data.key]){const a=e.data.name,o=acf.getField(e.data.key)?.val();t[n]&&t[n][a]?""!==t[n][a]&&void 0!==t[n][a]&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(e.data.key,t[n][a][0]):o&&""!==o&&void 0!==o&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(e.data.key,o)}}));else if(["title","excerpt"].includes(n)&&t[n]&&""!==t[n].trim()){const e=`${n}SaveSource`;(0,l.dispatch)("block-atfp/translate")[e](t[n])}}))})(n,a),t.refPostData(n),t.updatePostDataFetch(!0)})).catch((t=>{console.error("Error fetching post content:",t)}))},bt=(t,e,a,n)=>{const{createBlock:o}=wp.blocks,{name:r,attributes:s}=t;let l={...s},i=t,c="";return Object.keys(a.AtfpBlockParseRules).includes(t.name)&&(i=((t,e,a)=>{const{select:n}=wp.data,o=Object.values(e),r=t.attributes,s=t.clientId,l=(e,o)=>{if(!0!==o)gt(e,o,r,l);else{const o=new Array(...e),l=new Array;let i=r,c=s;o.forEach((t=>{l.push(t),c+=`atfp${t}`,i=i[t]}));let d=i;if(d instanceof wp.richText.RichTextData&&(d=d.originalHTML),void 0!==d&&""!==d.trim()){let e=c.replace(/[^\p{L}\p{N}]/gu,""),r="";r=/[\p{L}\p{N}]/gu.test(d)?n("block-atfp/translate").getTranslatedString("content",d,e,a):d,t.attributes=((t,e,a)=>{const n={...t};let o=n;for(let t=0;t<e.length-1;t++)Object.getPrototypeOf(o[e[t]])===Array.prototype?o[e[t]]=[...o[e[t]]]:o[e[t]]={...o[e[t]]},o=o[e[t]];return o[e[e.length-1]]instanceof wp.richText.RichTextData?o[e[e.length-1]]=a.replace(/(?<!\\)"|\\"/g,"'"):o[e[e.length-1]]=a,n})(t.attributes,o,r)}}};return o.forEach((t=>{Object.keys(t).forEach((e=>{const a=new Array(e);l(a,t[e])}))})),t})(t,a.AtfpBlockParseRules[t.name],n),l=i.attributes),c=o(r,l,e),c},vt=(t,e,a)=>{let n=t.innerBlocks.map((t=>{if(t.name)return vt(t,e,a)}));return bt(t,n,e,a)},wt=t=>{if(!(0,l.dispatch)("yoast-seo/editor"))return;const{updateData:e,setFocusKeyword:a,setBreadcrumbsTitle:n,setFacebookPreviewTitle:o,setFacebookPreviewDescription:r,setTwitterPreviewTitle:s,setTwitterPreviewDescription:i}=(0,l.dispatch)("yoast-seo/editor"),{key:c,value:d}=t;switch(c){case"_yoast_wpseo_focuskw":a&&a(d);break;case"_yoast_wpseo_title":e&&e({title:d});break;case"_yoast_wpseo_metadesc":e&&e({description:d});break;case"_yoast_wpseo_bctitle":n&&n(d);break;case"_yoast_wpseo_opengraph-title":o&&o(d);break;case"_yoast_wpseo_opengraph-description":r&&r(d);break;case"_yoast_wpseo_twitter-title":s&&s(d);break;case"_yoast_wpseo_twitter-description":i&&i(d)}},Tt=t=>{if(!(0,l.dispatch)("rank-math"))return;const{updateKeywords:e,updateTitle:a,updateDescription:n,updateBreadcrumbTitle:o,updateFacebookTitle:r,updateFacebookDescription:s,updateTwitterTitle:i,updateTwitterDescription:c}=(0,l.dispatch)("rank-math"),{key:d,value:p}=t;switch(d){case"rank_math_focus_keyword":e&&e(p);break;case"rank_math_title":a&&a(p);break;case"rank_math_description":n&&n(p);break;case"rank_math_breadcrumb_title":o&&o(p);break;case"rank_math_facebook_title":r&&r(p);break;case"rank_math_facebook_description":s&&s(p);break;case"rank_math_twitter_title":i&&i(p);break;case"rank_math_twitter_description":c&&c(p)}},St=t=>{const{editPost:e}=(0,l.dispatch)("core/editor"),{modalClose:a,postContent:n,service:o}=t;(()=>{const t={};Object.keys(n).filter((t=>["title","excerpt"].includes(t))).forEach((e=>{const a=n[e];if(""!==a.trim()){const n=(0,l.select)("block-atfp/translate").getTranslatedString(e,a,null,o);t[e]=n}})),e(t)})(),(()=>{const t=n.metaFields,a=(0,l.select)("block-atfp/translate").getAllowedMetaFields();Object.keys(t).forEach((n=>{if(Object.keys(a).includes(n)){const r=(0,l.select)("block-atfp/translate").getTranslatedString("metaFields",t[n][0],n,o);n.startsWith("_yoast_wpseo_")&&"string"===a[n].inputType?wt({key:n,value:r}):n.startsWith("rank_math_")&&"string"===a[n].inputType?Tt({key:n,value:r}):n.startsWith("_seopress_")&&"string"===a[n].inputType?(async t=>{const{key:e,value:a}=t,n=e.replace(/^_/,"")+"_meta";if(document.querySelector("#"+n))switch(e){case"_seopress_titles_title":case"_seopress_titles_desc":case"_seopress_social_fb_title":case"_seopress_social_fb_desc":case"_seopress_social_twitter_title":case"_seopress_social_twitter_desc":jQuery(`#${n}`).val(a),jQuery(`#${n}`).trigger("change");break;case"_seopress_analysis_target_kw":window.target_kw&&window.target_kw instanceof window.Tagify&&window.target_kw.DOM.originalInput.id===n?window.target_kw.addTags(a):(jQuery("#"+n).val(a),jQuery("#"+n).trigger("change"))}})({key:n,value:r}):e({meta:{[n]:r}})}}))})(),(()=>{const t=(0,l.select)("block-atfp/translate").getAllowedMetaFields(),e=n.metaFields;window.acf&&acf.getFields().forEach((a=>{if(a.data&&a.data.key&&Object.keys(t).includes(a.data.key)){const t=acf.getField(a.data.key),n=a.data.key,r=a.data.name,s=t.data.type,i=e[r]?e[r][0]:acf.getField(n)?.val(),c=(0,l.select)("block-atfp/translate").getTranslatedString("metaFields",i,n,o);if("wysiwyg"===s&&tinymce){const e=t.data.id;tinymce.get(e)?.setContent(c)}else acf.getField(n)?.val(c)}}))})(),(()=>{const t=n.content;t.length<=0||Object.values(t).forEach((t=>{((t,e)=>{const{select:a}=wp.data,n=a("block-atfp/translate").getBlockRules(),{dispatch:o}=wp.data,{name:r}=t;if(r){let a=t.innerBlocks.map((t=>{if(t.name)return vt(t,n,e)}));const r=bt(t,a,n,e);o("core/block-editor").insertBlock(r)}})(t,o)}))})(),a()},kt=({characterCount:t=0,url:e=""})=>{const[a,n]=(0,d.useState)(!1),[o,r]=(0,d.useState)(!1);return""!==e&&(e+="?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup"),(0,d.useEffect)((()=>{const t=document.querySelector('button.atfp-translate-button[name="atfp_meta_box_translate"],input#atfp-translate-button[name="atfp_meta_box_translate"]');if(t)return t.addEventListener("click",(()=>{n(!0),r(!0)})),()=>{t.removeEventListener("click",(()=>{}))}}),[]),a?React.createElement("div",{id:"atfp-pro-notice-wrapper",className:o?"atfp-active":""},React.createElement("div",{className:"atfp-pro-notice"},React.createElement("div",{className:"atfp-notice-header"},React.createElement("h2",null,"AutoPoly - AI Translation For Polylang"),React.createElement("span",{className:"atfp-close-button",onClick:()=>n(!1),"aria-label":"Close Notice"},"×")),React.createElement("div",{className:"atfp-notice-content"},React.createElement("p",null,"You have reached the character limit of ",React.createElement("strong",null,React.createElement(m,{number:t}))," for your translations. To continue translating beyond this limit, please consider upgrading to ",React.createElement("strong",null,"AutoPoly - AI Translation For Polylang Pro"),".")),React.createElement("div",{className:"atfp-notice-footer"},React.createElement("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"atfp-upgrade-button"},"Upgrade to Pro")))):null},Et=t=>{const e=()=>{const t=document.querySelector(".atfp-body-notice-wrapper");if(t){const e=t.offsetHeight+t.offsetTop;t.closest(".modal-body").style.setProperty("--atfp-notice-wrapper-height",`${e}px`)}};return(0,d.useEffect)((()=>(t.lastNotice&&(e(),window.addEventListener("resize",e)),()=>{window.removeEventListener("resize",e)})),[t.lastNotice]),React.createElement("div",{className:t.className},t.children)},Ct=async t=>{const e=atfp_global_object.elementorData&&"string"==typeof atfp_global_object.elementorData?JSON.parse(atfp_global_object.elementorData):atfp_global_object.elementorData,a=atfp_global_object?.metaFields,n={widgetsContent:e,metaFields:a};Object.keys(_t).forEach((t=>{var e;e={id:t,type:_t[t].type},(0,l.dispatch)("block-atfp/translate").allowedMetaFields(e)})),(t=>{const e=(0,l.select)("block-atfp/translate").getAllowedMetaFields(),a=(t,e,n)=>{t(e[n],n),++n<e.length&&a(t,e,n)},n=(t,e)=>{if("string"==typeof e&&""!==e.trim()&&t.length>0){const a=t.join("_atfp_");e&&""!==e&&(0,l.dispatch)("block-atfp/translate").contentSaveSource(a,e)}},o=["content_width","title_size","font_size","margin","padding","background","border","color","text_align","font_weight","font_family","line_height","letter_spacing","text_transform","border_radius","box_shadow","opacity","width","height","display","position","z_index","visibility","align","max_width","content_typography_typography","flex_justify_content","title_color","description_color","email_content"],r=["title","description","editor","text","content","label"],s=(t,e,l=[])=>{const i=t.settings;if(l.push(e),"object"==typeof i&&null!==i&&Object.keys(i).length>0){const t=(t,e)=>{if(!o.some((e=>t.toLowerCase().includes(e)))&&(r.some((e=>t.toLowerCase().includes(e)))&&"string"==typeof i[t]&&""!==i[t].trim()&&n([...l,"settings",t],i[t]),Array.isArray(i[t])&&i[t].length>0)){const e=(e,s)=>{"object"==typeof e&&null!==e&&a((a=>{o.includes(a.toLowerCase())||r.some((t=>a.toLowerCase().includes(t)))&&"string"==typeof e[a]&&""!==e[a].trim()&&n([...l,"settings",t,s,a],e[a])}),Object.keys(e),0)};a(e,i[t],0)}};a(t,Object.keys(i),0)}if(t.elements&&Array.isArray(t.elements)&&t.elements.length>0){const e=(t,e)=>{s(t,e,[...l,"elements"])};a(e,t.elements,0)}};var i;t.widgetsContent&&t.widgetsContent.length>0&&a(((t,e)=>{s(t,e,[])}),t.widgetsContent,0),i=t.metaFields,Object.keys(i).forEach((t=>{Object.keys(e).includes(t)&&"string"===e[t].inputType&&""!==i[t][0]&&void 0!==i[t][0]&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(t,i[t][0])}))})(n),t.refPostData(n),t.updatePostDataFetch(!0)},Rt=(t,e)=>{for(const a of t){if(a.get("id")===e)return a;const t=a.get("elements").models,n=Rt(t,e);if(n)return n}return null},Lt=({postContent:t,modalClose:e,service:a})=>{const n=elementor.config.document.id,o=[],r=["content_width","title_size","font_size","margin","padding","background","border","color","text_align","font_weight","font_family","line_height","letter_spacing","text_transform","border_radius","box_shadow","opacity","width","height","display","position","z_index","visibility","align","max_width","content_typography_typography","flex_justify_content","title_color","description_color","email_content"],s=(t,e,n=[])=>{const i=t.id,c=t.settings;if(n.push(e),"object"==typeof c&&null!==c){const t=["title","description","editor","text","content","label"];Object.keys(c).forEach((e=>{if(!r.some((t=>e.toLowerCase().includes(t)))){if(t.some((t=>e.toLowerCase().includes(t)))&&"string"==typeof c[e]&&""!==c[e].trim()){const t=n.join("_atfp_")+"_atfp_settings_atfp_"+e,r=(0,l.select)("block-atfp/translate").getTranslatedString("content",c[e],t,a);o.push({ID:i,key:e,translatedContent:r})}Array.isArray(c[e])&&c[e].forEach(((s,c)=>{"object"==typeof s&&null!==s&&Object.keys(s).forEach((d=>{if(!r.includes(d.toLowerCase())&&t.some((t=>d.toLowerCase().includes(t)))&&"string"==typeof s[d]&&""!==s[d].trim()){const t=`${e}[${c}].${d}`,r=n.join("_atfp_")+"_atfp_settings_atfp_"+e+"_atfp_"+c+"_atfp_"+d,p=(0,l.select)("block-atfp/translate").getTranslatedString("content",s[d],r,a);o.push({ID:i,key:t,translatedContent:p})}}))}))}}))}t.elements&&Array.isArray(t.elements)&&t.elements.forEach(((t,e)=>{s(t,e,[...n,"elements"])}))};t.widgetsContent.map(((t,e)=>s(t,e,[]))),(t=>{t.forEach((t=>{const e=Rt(elementor.elements.models,t.ID);if(e){const a=e.get("settings");a.get(t.key)&&a.set(t.key,t.translatedContent);const n=t.key.match(/(.+)\[(\d+)\]\.(.+)/);if(n){const[e,o,r,s]=n,l=a.get(o);Array.isArray(l.models)&&l.models[r]&&(l.models[r].attributes[s]=t.translatedContent,a.set(o,l))}}})),$e.internal("document/save/set-is-modified",{status:!0})})(o),((t,e)=>{const a=(0,l.select)("block-atfp/translate").getAllowedMetaFields();Object.keys(t).forEach((n=>{if(Object.keys(a).includes(n)){const o=(0,l.select)("block-atfp/translate").getTranslatedString("metaFields",t[n][0],n,e);n.startsWith("_yoast_wpseo_")&&"string"===a[n].inputType?wt({key:n,value:o}):n.startsWith("rank_math_")&&"string"===a[n].inputType?Tt({key:n,value:o}):n.startsWith("_seopress_")&&"string"===a[n].inputType&&elementor?.settings?.page?.model?.setExternalChange(n,o)}}))})(t.metaFields,a);const i=(()=>{const t=atfp_global_object.elementorData;return wp.data.select("block-atfp/translate").getTranslationEntry().forEach((e=>{const n=e.source,o=e.id,r=e.translatedData,s=e.type;if(!n||""===n&&"content"!==s)return;const l=o.split("_atfp_"),i=r[a];let c=null,d=null,p=t;l.forEach((t=>{c=p,d=t,p=p[t]})),c&&d&&c[d]&&c[d]===n&&(c[d]=i)})),t})();fetch(atfp_global_object.ajax_url,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams({action:atfp_global_object.update_elementor_data,post_id:n,elementor_data:JSON.stringify(i),atfp_nonce:atfp_global_object.ajax_nonce})}).then((t=>t.json())).then((t=>{if(t.success){const t=document.querySelector('.atfp-translate-button[name="atfp_meta_box_translate"]');t&&t.setAttribute("title","Translation process completed successfully."),elementor.reloadPreview()}else console.error("Failed to update Elementor data:",t.data);e()})).catch((t=>{e(),console.error("Error updating Elementor data:",t)}))},xt=window.atfp_global_object.editor_type,jt=()=>{let t=new Array;t.push('\x3c!-- The Modal --\x3e<div id="atfp-setting-modal"></div>','<div id="atfp_strings_model" class="modal atfp_custom_model"></div>'),t.forEach((t=>{document.body.insertAdjacentHTML("beforeend",t)}))},At=()=>{const t=[];if("gutenberg"===xt){"true"===atfp_global_object.postMetaSync&&t.push({className:"atfp-notice atfp-notice-warning",message:React.createElement("p",null,(0,i.__)("For accurate custom field translations, please disable the Custom Fields synchronization in ","autopoly-ai-translation-for-polylang"),React.createElement("a",{href:`${atfp_global_object.admin_url}admin.php?page=mlang_settings`,target:"_blank",rel:"noopener noreferrer"},(0,i.__)("Polylang settings","autopoly-ai-translation-for-polylang")),(0,i.__)(". This may affect linked posts or pages.","autopoly-ai-translation-for-polylang"))});const e=(0,l.select)("block-atfp/translate").getBlockRules();e.AtfpBlockParseRules&&0!==Object.keys(e.AtfpBlockParseRules).length||t.push({className:"atfp-notice atfp-notice-error",message:React.createElement("p",null,(0,i.__)("No block rules were found. It appears that the block-rules.JSON file could not be fetched, possibly because it is blocked by your server settings. Please check your server configuration to resolve this issue.","autopoly-ai-translation-for-polylang"))})}const e=t.length;if(t.length>0)return t.map(((t,a)=>React.createElement(Et,{className:t.className,key:a,lastNotice:a===e-1},t.message)))},Nt=()=>{const[t,e]=(0,d.useState)(!1),a=window.atfp_global_object.target_lang,n=window.atfp_global_object.parent_post_id,o=window.atfp_global_object.current_post_id,r=window.atfp_global_object.post_type;let s,l,c;const p=window.atfp_global_object.source_lang;"elementor"===xt?(c='button.atfp-translate-button[name="atfp_meta_box_translate"]',s=Lt,l=Ct):"gutenberg"===xt&&(c='input#atfp-translate-button[name="atfp_meta_box_translate"]',s=St,l=yt);const[u,g]=(0,d.useState)(!1),[m,f]=(0,d.useState)(!0);if((0,d.useEffect)((()=>{if(t){const t=document.querySelector(c);t&&(t.disabled=!0,t.value=(0,i.__)("Already Translated","autopoly-ai-translation-for-polylang"))}}),[t]),p&&""!==p)return React.createElement(React.Fragment,null,!t&&p&&""!==p&&React.createElement(F,{contentLoading:m,updatePostDataFetch:t=>{g(t),f(!1)},postDataFetchStatus:u,pageTranslate:t=>{e(t)},postId:n,currentPostId:o,targetLang:a,postType:r,fetchPostData:async t=>{await l(t);const e=wp.data.select("block-atfp/translate").getTranslationEntry();let a=0,n=0,o=0;e.map((t=>{const e=t.source?t.source:"",r=e.split(/(?<=[.!?]+)\s+/).length,s=e.trim().split(/\s+/).filter((t=>/[^\p{L}\p{N}]/.test(t))).length,l=e.length;a+=r,n+=l,o+=s})),wp.data.dispatch("block-atfp/translate").translationInfo({sourceStringCount:a,sourceWordCount:o,sourceCharacterCount:n})},translatePost:s,translateWrpSelector:c,stringModalBodyNotice:At}));{const t=document.querySelector(c);t&&(t.title=`Parent ${window.atfp_global_object.post_type} may be deleted.`,t.disabled=!0)}},Dt=()=>{const t=jQuery(".MuiButtonGroup-root.MuiButtonGroup-contained").parent(),e=jQuery(t).find(".elementor-button.atfp-translate-button");if(t.length>0&&0===e.length){const e=jQuery('<button class="elementor-button atfp-translate-button" name="atfp_meta_box_translate">Translate</button>');if(t.prepend(e),$e.internal("document/save/set-is-modified",{status:!0}),!window.atfp_global_object.translation_data||!window.atfp_global_object.translation_data.total_string_count&&0!==window.atfp_global_object.translation_data.total_string_count)return e.attr("disabled","disabled"),void e.attr("title","Translation data not found.");const a=parseInt(window.atfp_global_object.translation_data.total_character_count);if(a>5e5){const t=document.createElement("div");return t.id="atfp-pro-notice",document.body.appendChild(t),void r.createRoot(document.getElementById("atfp-pro-notice")).render(React.createElement(kt,{characterCount:a,url:window.atfp_global_object.pro_version_url||""}))}if(""===window.atfp_global_object.elementorData||window.atfp_global_object.elementorData.length<1||elementor.elements.length<1)return e.attr("disabled","disabled"),void e.attr("title","Translation is not available because there is no Elementor data.");jt(),r.createRoot(document.getElementById("atfp-setting-modal")).render(React.createElement(Nt,null))}};"gutenberg"===xt&&window.addEventListener("load",(()=>{jt();const t=jQuery('input#atfp-translate-button[name="atfp_meta_box_translate"]');if(!window.atfp_global_object.translation_data||!window.atfp_global_object.translation_data.total_string_count&&0!==window.atfp_global_object.translation_data.total_string_count)return t.attr("disabled","disabled"),void t.attr("title","Translation data not found.");const e=parseInt(window.atfp_global_object.translation_data.total_character_count);if(e>5e5){const t=document.createElement("div");return t.id="atfp-pro-notice",document.body.appendChild(t),void r.createRoot(document.getElementById("atfp-pro-notice")).render(React.createElement(kt,{characterCount:e,url:window.atfp_global_object.pro_version_url||""}))}const a=window.atfp_global_object.source_lang;a&&""!==a&&(()=>{const t=document.getElementById("atfp-setting-modal"),e=(()=>{const t=window.atfp_global_object.post_type,e=window.atfp_global_object.target_lang,a=atfp_global_object.languageObject[e].name,n=document.createElement("div");return n.id="atfp-modal-open-warning-wrapper",n.innerHTML=`\n    <div class="modal-container" style="display: flex">\n      <div class="modal-content">\n        <p>${(0,i.sprintf)((0,i.__)("Would you like to duplicate your original %s content and have it automatically translated into %s?","autopoly-ai-translation-for-polylang"),t,a)}</p>\n        <div>\n          <div data-value="yes">${(0,i.__)("Yes","autopoly-ai-translation-for-polylang")}</div>\n          <div data-value="no">${(0,i.__)("No","autopoly-ai-translation-for-polylang")}</div>\n        </div>\n      </div>\n    </div>`,n})();document.body.insertBefore(e,t)})(),r.createRoot(document.getElementById("atfp-setting-modal")).render(React.createElement(Nt,null))})),"elementor"===xt&&jQuery(window).on("elementor:init",(function(){elementor.on("document:loaded",Dt)}))})();
     1(()=>{"use strict";var t={338:(t,e,a)=>{var n=a(795);e.createRoot=n.createRoot,e.hydrateRoot=n.hydrateRoot},795:t=>{t.exports=window.ReactDOM}},e={};function a(n){var o=e[n];if(void 0!==o)return o.exports;var r=e[n]={exports:{}};return t[n](r,r.exports,a),r.exports}a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};a.r(n),a.d(n,{allowedMetaFields:()=>se,contentFetchStatus:()=>le,contentSaveSource:()=>te,contentSaveTranslate:()=>ee,excerptSaveSource:()=>Kt,excerptSaveTranslate:()=>Zt,metaFieldsSaveSource:()=>ae,metaFieldsSaveTranslate:()=>ne,setBlockRules:()=>oe,titleSaveSource:()=>Xt,titleSaveTranslate:()=>Jt,translationInfo:()=>re});var o={};a.r(o),a.d(o,{contentFetchStatus:()=>ge,getAllowedMetaFields:()=>ue,getBlockRules:()=>ce,getTranslatedString:()=>pe,getTranslationEntry:()=>ie,getTranslationInfo:()=>de});var r=a(338);const s=window.wp.element,l=window.wp.data,i=window.wp.i18n,c=t=>React.createElement("div",{className:"modal-header",key:t.modalRender},React.createElement("span",{className:"close",onClick:()=>{t.setPopupVisibility(!1)}},"×"),React.createElement("h2",{className:"notranslate"},(0,i.__)("Step 2 - Start Automatic Translation Process","autopoly-ai-translation-for-polylang")),React.createElement("div",{className:"save_btn_cont"},React.createElement("button",{className:"notranslate save_it button button-primary",disabled:t.translatePendingStatus,onClick:t.updatePostData},t.translateButtonStatus?React.createElement(React.Fragment,null,React.createElement("span",{className:"updating-text"},(0,i.__)("Updating","autopoly-ai-translation-for-polylang"),React.createElement("span",{className:"dot",style:{"--i":0}}),React.createElement("span",{className:"dot",style:{"--i":1}}),React.createElement("span",{className:"dot",style:{"--i":2}}))):(0,i.__)("Update Content","autopoly-ai-translation-for-polylang")))),p=window.React,d=t=>{const e=t.skipTags||[],a="#atfp_open_translate_span#",n="#atfp_close_translate_span#",o="#atfp_temp_tag_open#",r="#atfp_temp_tag_close#",s="#atfp_less_then_symbol#",l="#atfp_greater_then_symbol#",i="#atfp_entity_open_translate_span#",c="#atfp_entity_close_translate_span#",p="#atfp_line_break_n_open#",d="#atfp_line_break_n_close#",u="#atfp_line_break_r_open#",g="#atfp_line_break_r_close#",m=t=>t.replace(new RegExp(a,"g"),"").replace(new RegExp(n,"g"),""),f=t=>{const o=document.createElement("div");o.innerHTML=t;const r=o.firstElementChild;if(!r)return t;let s=r.childNodes,l=s.length;if(l>0){s=Array.from(s).sort((t,e)=>3===t.nodeType?-1:3===e.nodeType?1:0);for(let t=0;t<l;t++){let e=s[t];if(3===e.nodeType){let t=e.textContent.replace(/^\s+|^\.\s+|^\s.|\s+$|\.\s+$|\s.\+$/g,t=>`${a}${m(t)}${n}`);e.textContent=t}else if(8===e.nodeType)e.textContent=e.textContent;else{let t=f(e.outerHTML);e.outerHTML=t}}}let i=r.outerHTML.match(/^<[^>]+>/)[0];const c=new RegExp(`${a}|${n}`,"g");i=i.replace(c,"");const p=r.tagName.toLowerCase(),d=new RegExp(`</${p}>`,"i"),u=r.outerHTML.match(d);if("<style>"===i)return`${a}${m(r.outerHTML)}${n}`;let g=r.innerHTML;g=g.replace(/^\s+|^\.\s+|^\s.|\s+$|\.\s+$|\s.\+$/g,t=>`${a}${m(t)}${n}`),r.innerHTML="";let h="",_="",y="";if(_=`${a}${m(i)}${n}`,u&&(h=`${a}</${p}>${n}`),e.includes(p)){const t=new RegExp(`${a}|${n}`,"g");g=g.replace(t,""),g=`${a}${m(g)}${n}`}return""!==g?(""!==_&&(y=_+g),""!==h&&(y+=h)):y=_+h,r.outerHTML=y,o.innerHTML},h=["yandex","localAiTranslator"].includes(t.service)?(e=>{/^(_yoast_wpseo_|rank_math_|_seopress_)/.test(t.contentKey.trim())&&(e=(t=>t.replace(/(%{1,2}[a-zA-Z0-9_]+%{0,2})/g,t=>`${a}${m(t)}${n}`))(e)),e=(t=>t.replace(/(\n)/g,()=>`${p}${d}`).replace(/(\r)/g,()=>`${u}${g}`))(e);const h=/\[(.*?)\]/g;"string"==typeof e&&e.match(h)&&(e=e.replace(h,t=>`${a}${m(t)}${n}`));let _=e;if((t=>(t=t.trim(),/^<([a-z][a-z0-9]*)\b[^>]*>(\s*(?:<!--.*?-->\s*)*<\/\1>)?$/i.test(t)))(e))_=e.replace(/<([a-z][a-z0-9]*)\b[^>]*>(\s*(?:<!--.*?-->\s*)*<\/\1>)?/gi,t=>`${a}${m(t)}${n}`);else{const t=document.createElement("div");t.innerHTML=(t=>{if("string"!=typeof t||!t.trim())return t;const e=/<\/?([a-zA-Z0-9]+)(\s[^>]*)?>/g,a=[];let n,s="",l=0;for(;null!==(n=e.exec(t));){const[i,c]=n,p=i.startsWith("</"),d=n.index;if(d>l&&(s+=t.slice(l,d)),p){const t=a.findIndex(t=>t.tag===c);-1!==t?(a.splice(t,1),s+=i):s+=`${o}<${c}>${r}`+i}else a.push({tag:c}),s+=i;l=e.lastIndex}l<t.length&&(s+=t.slice(l));for(let t=a.length-1;t>=0;t--){const{tag:e}=a[t];s+=`${o}</${e}>${r}`}return n=null,a.length=0,t=null,s})(e),function t(e){let o=e.childNodes;const r=e=>{if(o.length>e){let p=o[e],d=null;if(3===p.nodeType){const t=p.textContent.replace(/^\s+|^\.\s+|^\s.|\s+$|\.\s+$|\s.\+$|(\r?\n){2,}/g,t=>`${a}${m(t)}${n}`);d=document.createTextNode(t)}else if(8===p.nodeType)d=document.createTextNode(`${a}${s}!--${m(p.textContent)}--${l}${n}`);else if(1===p.nodeType){const e=p.childNodes,o=p.outerHTML.trim(),r=o.match(/^<([a-zA-Z0-9]+)(\s[^>]*)?>/i);if(!r)return o;const u=r[1],g=r[2]||"",f=new RegExp(`<\\/${u}>\\s*$`,"i").test(o);e.length>0&&t(p);let h=`${a}${s}${u}${m(g)}${l}${n}${(t=>t.replace(/&([a-zA-Z0-9#x]+);/g,t=>`${i}${t.replace(/&/g,"").replace(/;/g,"")}${c}`))(p.innerHTML)}`;f&&(h+=`${a}${s}/${u}${l}${n}`),d=document.createTextNode(h)}else{let t=p.outerHTML;t=t.replace(/<!--([\s\S]*?)-->/g,(t,e)=>`${a}${m(t)}${n}`);let e=f(t);d=document.createTextNode(e)}p.replaceWith(d),e++,r(e)}};return r(0),e}(t),_=t.innerText,_=_.replace(new RegExp(s,"g"),"<").replace(new RegExp(l,"g"),">"),_=((t,e)=>{if(t=t.trim(),!/<\/?(tr|td)\b[^>]*>/i.test(t))return e;if(/<\/?(tr|td)\b[^>]*>/i.test(e))return e;e=e.trim();const o=t.match(/^<(tr|td)\b[^>]*>/i),r=t.match(/<\/(tr|td)>\s*$/i);let s=e;return o&&(s=`${a}${m(o[0])}${n}`+s),r&&(s+=`${a}${m(r[0])}${n}`),s})(e,_)}const y=new RegExp(`${o}([\\s\\S]*?)(${r})`,"g");return _=_.replace(y,""),_=(t=>t.replace(new RegExp(p+d,"g"),`${a}\n${n}`).replace(new RegExp(u+g,"g"),`${a}\r${n}`))(_),_=(t=>t.replace(new RegExp(i,"g"),"&").replace(new RegExp(c,"g"),";"))(_),(t=>{const e=new RegExp(`(${a}[\\s\\S]*?${n})|'`);return t.split(e).filter(Boolean).filter(t=>""!==t.trim())})(_)})(t.content):t.content,_=new RegExp(`${a}[\\s\\S]*?${n}`),y=new RegExp(`${a}|${n}`,"g");return React.createElement(React.Fragment,null,["yandex","localAiTranslator","google"].includes(t.service)?h.map((t,e)=>_.test(t)?React.createElement("span",{key:e,className:"notranslate atfp-notraslate-tag",translate:"no"},(t=>t.replace(y,""))(t)):t):h)},u=({type:t,key:e,translateContent:a,source:n,provider:o,AllowedMetaFields:r})=>{if(["title","excerpt"].includes(t)){const e=`${t}SaveTranslate`;(0,l.dispatch)("block-atfp/translate")[e](a,o)}else["metaFields"].includes(t)?Object.keys(r).includes(e)&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveTranslate(e,a,n,o):(0,l.dispatch)("block-atfp/translate").contentSaveTranslate(e,a,n,o)},g=({prefix:t=!1,start:e=!1,end:a=!1,translateStatus:n=!1})=>{const o=(a-e)/1e3,r={};if(t){if(r.provider=t,e&&a){const e=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[t]?.timeTaken||0;r.timeTaken=o+e}n&&(r.translateStatus=!0),(0,l.dispatch)("block-atfp/translate").translationInfo(r)}},m=({number:t})=>t>=1e6?(t/1e6).toFixed(1)+"M":t>=1e3?(t/1e3).toFixed(1)+"K":t,f=(t,e="none",a=!1)=>{!1===a&&(a=(0,l.select)("block-atfp/translate").getTranslationInfo().sourceCharacterCount);const n=document.querySelector(`.${t}-translator-strings-count`);n&&(n.style.display=e,n.querySelector(".totalChars").textContent=m({number:a}))},h=({container:t,provider:e,startTime:a,endTime:n,translateStatus:o,modalRenderId:r})=>{if(!document.querySelector(`#atfp-${e}-strings-modal.modal-container[data-render-id="${r}"]`))return;t.querySelector(".atfp_translate_progress").style.display="none",t.querySelector(".atfp_string_container").style.animation="none",document.body.style.top="0";const s=t.querySelector("button.save_it");s.removeAttribute("disabled"),s.classList.add("translated"),s.classList.remove("notranslate"),(({provider:t,startTime:e,endTime:a})=>{const n=document.getElementById("atfp_strings_model").querySelector(".atfp_string_container").querySelectorAll('td.translate[data-string-type]:not([data-translate-status="translated"]):not(.notranslate):not([translate="no"])'),o=n.length,r=(0,l.select)("block-atfp/translate").getAllowedMetaFields();n.forEach((n,s)=>{const i=n.innerText,c=n.dataset.key,p=n.dataset.stringType,d=n.closest("tr").querySelector('td[data-source="source_text"]').innerText;u({type:p,key:c,translateContent:i,source:d,provider:t,AllowedMetaFields:r});const m=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[t],h=m&&m.targetStringCount?m.targetStringCount:0,_=m&&m.targetWordCount?m.targetWordCount:0,y=m&&m.targetCharacterCount?m.targetCharacterCount:0;""!==i.trim()&&i.trim().length>0&&(0,l.dispatch)("block-atfp/translate").translationInfo({targetStringCount:h+d.trim().split(/(?<=[.!?]+)\s+/).length,targetWordCount:_+d.trim().split(/\s+/).filter(t=>/[^\p{L}\p{N}]/.test(t)).length,targetCharacterCount:y+d.trim().length,provider:t}),s===o-1&&(jQuery(`.${t}-translator_progress`).css("width","100%"),f(t,"block"),g({prefix:t,start:e,end:a,translateStatus:!0}))})})({provider:e,startTime:a,endTime:n}),o(!1)},_=(t,e,a)=>{const n=(new Date).getTime();let o=!1;(t=>{if(document.querySelector(`#atfp-${t}-progress-bar`))jQuery(`.${t}-translator_progress`).css("width","0%"),jQuery(`.${t}-translator-strings-count`).hide();else{const e=jQuery(`\n            <div id="atfp-${t}-progress-bar" class="atfp-translate-progress-bar">\n                <div class="${t}-translator_progress_bar" style="background-color: #f3f3f3;border-radius: 10px;overflow: hidden;margin: 1.5rem auto; width: 50%;">\n                <div class="${t}-translator_progress" style="overflow: hidden;transition: width .2s ease-in-out; border-radius: 10px;text-align: center;width: 0%;height: 20px;box-sizing: border-box;background-color: #4caf50; color: #fff; font-weight: 600;"></div>\n                </div>\n                <div style="display:none; color: white;" class="${t}-translator-strings-count hidden">\n                    Wahooo! You have saved your valuable time via auto translating \n                    <strong class="totalChars"></strong> characters using \n                    <strong>\n                        ${t} Translator\n                    </strong>\n                </div>\n            </div>\n        `);jQuery("#atfp_strings_model .atfp_translate_progress").append(e)}})(e);const r=document.getElementById("atfp_strings_model"),s=r.querySelector(".atfp_string_container");s.scrollTop=0;const l=s.scrollHeight;if(void 0!==l&&l>100){if(document.querySelector(".atfp_translate_progress").style.display="block",setTimeout(()=>{const t=2e3*Math.ceil(l/s?.offsetHeight);(t=>{const{element:e,scrollSpeed:a,provider:n}=t;if(e.scrollHeight-e.offsetHeight<=0)return;const o=jQuery(`.${n}-translator_progress_bar`);let r=null,s=e.scrollTop;const l=()=>{const t=e.scrollHeight-e.offsetHeight+100,i=performance.now();r||(r=i);const c=s+(i-r)/a*(t+2e3-s);var p=e.scrollTop/(e.scrollHeight-e.clientHeight)*100;o.find(`.${n}-translator_progress`).css("width",p+"%");let d=(Math.round(10*p)/10).toFixed(1);d=Math.min(d,100).toString(),o.find(`.${n}-translator_progress`).text(d+"%"),c>t?f(n,"block"):(e.scrollTop=c,c<t&&setTimeout(l,16))};l()})({element:s,scrollSpeed:t,provider:e})},2e3),s.addEventListener("scroll",()=>{if(s.scrollTop+s.clientHeight+50>=s.scrollHeight&&!o){const s=(new Date).getTime();setTimeout(()=>{h({container:r,provider:e,startTime:n,endTime:s,translateStatus:t,modalRenderId:a})},4e3),o=!0}}),s.clientHeight+10>=l){jQuery(`.${e}-translator_progress`).css("width","100%"),jQuery(`.${e}-translator_progress`).text("100%"),f(e,"block");const o=(new Date).getTime();setTimeout(()=>{h({container:r,provider:e,startTime:n,endTime:o,translateStatus:t,modalRenderId:a})},4e3)}}else{jQuery(`.${e}-translator_progress`).css("width","100%"),jQuery(`.${e}-translator_progress`).text("100%"),f(e,"block");const o=(new Date).getTime();setTimeout(()=>{h({container:r,provider:e,startTime:n,endTime:o,translateStatus:t,modalRenderId:a})},4e3)}},y=(t,e,a,n,o,r,s,l)=>{var i={keycode:{ESCAPE:27},getRequest:function(){return t.XDomainRequest?new t.XDomainRequest:t.XMLHttpRequest?new t.XMLHttpRequest:null},loadScript:function(t,a,n){var o=e.createElement("script");o.src=t,o.addEventListener("load",function t(){this.removeEventListener("load",t,!1),n()},!1),a.appendChild(o)},loadResource:function(e,a){var n=this.getRequest();return n?(n.onload=function(){a(this.responseText)},n.open("GET",e,!0),t.setTimeout(function(){n.send()},0),n):null},getStyleList:function(t){var e=t.getAttribute("class");return e?e.replace(/\s+/g," ").trim().split(" "):[]},hasStyleName:function(t,e){var a=this.getStyleList(t);return!!a.length&&a.indexOf(e)>=0},addStyleName:function(t,e){var a=this.getStyleList(t);a.push(e),t.setAttribute("class",a.join(" "))},removeStyleName:function(t,e){var a=this.getStyleList(t),n=a.indexOf(e);n>=0&&(a.splice(n,1),t.setAttribute("class",a.join(" ")))},isSupportedBrowser:function(){return"localStorage"in t&&"querySelector"in e&&"addEventListener"in t&&"getComputedStyle"in t&&"CSS1Compat"===e.compatMode}},c=function(t,e){var a=this;t.addEventListener("click",function(t){a.onClick(t)},!1),this._element=t,this._contentElement=e||this._element};c.prototype.onClick=function(){},c.prototype.setText=function(t){return this._contentElement.textContent=t,this};var p=function(t,e){var a=this;t.reset(),t.addEventListener("click",function(t){var e=t.target;"value"in e&&a.onSelect(e.value)},!1),t.addEventListener("change",function(t){alert("form change state");var e=t.target;e.checked&&a.onChange(e.value)},!1),this._form=t,this._itemName=e};p.prototype.onSelect=function(){},p.prototype.onChange=function(){},p.prototype.isHidden=function(){return this._form.hasAttribute("hidden")},p.prototype.getItems=function(){return this._form[this._itemName]||[]},p.prototype.getValue=function(){var t,e,a=this.getItems();for(t=0,e=a.length;t<e;t++)if(a[t].checked)return a[t].value;return""},p.prototype.setValue=function(t){var e,a,n=this.getItems();if(t===this.getValue())return this;for(e=0,a=n.length;e<a;e++)if(n[e].value===t){n[e].checked=!0,this.onChange(t);break}return this},p.prototype.setHidden=function(t){return(t=!!t)!==this.isHidden()&&(this._form[(t?"set":"remove")+"Attribute"]("hidden",""),this.onHiddenChange(t)),this},p.prototype.onHiddenChange=function(){};var d=function(a){var n,o=this,c=a.select,p=a.element,d=a.storage,u=(a.autoMode,a.pageLang),g=(a.userLang,a.translator),m=a.leftButton,f=a.rightButton,h=a.closeButton;if(this._element=p,this._pageLang=u,this._translator=g,this.onStateChange=function(t,e){"active"===t&&d.setValue("active",e)},c.onSelect=function(t){this.setHidden(!0),o.translate(t),_(s,"yandex",l)},c.onChange=function(t){d.setValue("lang",t),f.setText(t),o.setState("invalid",t===u)},c.onHiddenChange=function(a){var n,r=e.documentElement;o.setState("expanded",!a),a||(o.setState("right",!1).setState("bottom",!1),p.focus(),(n=this._form.getBoundingClientRect()).right+(t.pageXOffset||r.scrollLeft)+1>=Math.max(r.clientWidth,r.scrollWidth)&&o.setState("right",!0),n.bottom+(t.pageYOffset||r.scrollTop)+1>=Math.max(r.clientHeight,r.scrollHeight)&&o.setState("bottom",!0))},p.addEventListener("blur",function(){c.setHidden(!0)},!1),p.addEventListener("keydown",function(t){t.keyCode===i.keycode.ESCAPE&&c.setHidden(!0)},!1),g.on("error",function(){this.abort(),o.setState("busy",!1).setState("error",!0)}),g.on("progress",function(t){switch(t){case 0:o.setState("busy",!0).setState("active",!0);break;case 100:o.setState("done",!0).setState("busy",!1)}}),m.onClick=function(){c.setHidden(!0),o.translate(c.getValue()),_(s,"yandex",l)},f.onClick=function(){o.hasState("active")?(g.undo(),o.setState("busy",!1).setState("done",!1).setState("error",!1).setState("active",!1)):c.setHidden(!c.isHidden())},h.onClick=function(){c.setHidden(!0)},null!=r)var y=r;switch(y){case"nb":case"nn":n="no";break;default:n=y}n&&(c.setValue(n),d.getValue("active"))};d.prototype.hasState=function(t){return i.hasStyleName(this._element,"yt-state_"+t)},d.prototype.setState=function(t,e){return(e=!!e)===this.hasState(t)||(i[(e?"add":"remove")+"StyleName"](this._element,"yt-state_"+t),this.onStateChange(t,e)),this},d.prototype.translate=function(t){return t&&!this.hasState("active")&&this._translator.translate(this._pageLang,t),this},d.prototype.onStateChange=function(){};var u=function(e){this._name=e;try{this._data=t.JSON.parse(t.localStorage[e])}catch(t){this._data={}}};u.prototype.getValue=function(t){return this._data[t]},u.prototype.setValue=function(e,a){this._data[e]=a;try{t.localStorage[this._name]=t.JSON.stringify(this._data)}catch(t){}};var g=e.getElementById(n.widgetId);if(g&&i.isSupportedBrowser()){var m=function(){i.loadScript("https://yastatic.net/s3/translate/v21.4.7/js/tr_page.js",g,function(){i.loadResource("https://translate.yandex.net/website-widget/v1/widget.html",function(t){var e;t&&(g.innerHTML=t,e=g.querySelector(".yt-widget"),n.widgetTheme&&e.setAttribute("data-theme",n.widgetTheme),new d({select:new p(e.querySelector(".yt-listbox"),"yt-lang"),element:e,storage:new u("yt-widget"),autoMode:"true"===n.autoMode,pageLang:n.pageLang,userLang:(a.language||a.userLanguage||"").split("-")[0],translator:new o.PageTranslator({srv:"tr-url-widget",url:"https://translate.yandex.net/api/v1/tr.json/translate",autoSync:!0,maxPortionLength:600}),leftButton:new c(e.querySelector(".yt-button_type_left")),rightButton:new c(e.querySelector(".yt-button_type_right"),e.querySelector(".yt-button_type_right > .yt-button__text")),closeButton:new c(e.querySelector(".yt-button_type_close"))}))})})};"complete"===e.readyState||"interactive"===e.readyState?m():e.addEventListener("DOMContentLoaded",m,!1)}},b=t=>{const e=window;y(e,e.document,e.navigator,{pageLang:t.sourceLang,autoMode:"false",widgetId:"atfp_yandex_translate_element",widgetTheme:"light"},e.yt=e.yt||{},t.targetLang,t.translateStatusHandler,t.modalRenderId)};class w{static Object=t=>new this(t).extraData();constructor(t){this.btnSelector=t.btnSelector||!1,this.btnClass=t.btnClass||!1,this.btnText=t.btnText||`Translate To ${t.targetLanguageLabel} (Beta)`,this.stringSelector=t.stringSelector||!1,this.progressBarSelector=t.progressBarSelector||!1,this.onStartTranslationProcess=t.onStartTranslationProcess||(()=>{}),this.onComplete=t.onComplete||(()=>{}),this.onLanguageError=t.onLanguageError||(()=>{}),this.onBeforeTranslate=t.onBeforeTranslate||(()=>{}),this.onAfterTranslate=t.onAfterTranslate||(()=>{}),this.sourceLanguage=t.sourceLanguage||"en",this.targetLanguage=t.targetLanguage||"hi",this.targetLanguageLabel=t.targetLanguageLabel||"Hindi",this.sourceLanguageLabel=t.sourceLanguageLabel||"English"}extraData=async()=>{const t=await w.languageSupportedStatus(this.sourceLanguage,this.targetLanguage,this.targetLanguageLabel,this.sourceLanguageLabel);return!0!==t?(this.onLanguageError(t),{}):(this.defaultLang=this.targetLanguage,{continueTranslation:this.continueTranslation,stopTranslation:this.stopTranslation,startTranslation:this.startTranslation,reInit:this.reInit,init:this.init})};static languageSupportedStatus=async(t,e,a,n)=>{const o=["en","es","ja","ar","de","bn","fr","hi","it","ko","nl","pl","pt","ru","th","tr","vi","zh","zh-hant","bg","cs","da","el","fi","hr","hu","id","iw","lt","no","ro","sk","sl","sv","uk","kn","ta","te","mr"].map(t=>t.toLowerCase()),r="https:"===window.location.protocol,s=window?.isSecureContext;if(!window.hasOwnProperty("chrome")||!navigator.userAgent.includes("Chrome")||navigator.userAgent.includes("Edg"))return jQuery('<span style="color: #ff4646; display: inline-block;">\n                <strong>Important Notice:</strong>\n                <ol>\n                    <li>The Translator API, which leverages Chrome local AI models, is designed specifically for use with the Chrome browser.</li>\n                    <li>For comprehensive information about the Translator API, <a href="https://developer.chrome.com/docs/ai/translator-api" target="_blank">click here</a>.</li>\n                </ol>\n                <p>Please ensure you are using the Chrome browser for optimal performance and compatibility.</p>\n            </span>');if(!("translation"in self&&"createTranslator"in self.translation||"ai"in self&&"translator"in self.ai||"Translator"in self&&"create"in self.Translator||r||s))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <strong>Important Notice:</strong>\n                <ol>\n                    <li>\n                        The Translator API is not functioning due to an insecure connection.\n                    </li>\n                    <li>\n                        Please switch to a secure connection (HTTPS) or add this URL to the list of insecure origins treated as secure by visiting \n                        <span data-clipboard-text="chrome://flags/#unsafely-treat-insecure-origin-as-secure" target="_blank" class="chrome-ai-translator-flags">\n                            chrome://flags/#unsafely-treat-insecure-origin-as-secure ${w.svgIcons("copy")}\n                        </span>.\n                        Click on the URL to copy it, then open a new window and paste this URL to access the settings.\n                    </li>\n                </ol>\n            </span>`);if(!("translation"in self&&"createTranslator"in self.translation||"ai"in self&&"translator"in self.ai||"Translator"in self&&"create"in self.Translator))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Steps to Enable the Translator AI Modal:</h4>\n                <ol>\n                    <li>Open this URL in a new Chrome tab: <strong><span data-clipboard-text="chrome://flags/#translation-api" target="_blank" class="chrome-ai-translator-flags">chrome://flags/#translation-api ${w.svgIcons("copy")}</span></strong>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>Ensure that the <strong>Experimental translation API</strong> option is set to <strong>Enabled</strong>.</li>\n                    <li>Click on the <strong>Save</strong> button to apply the changes.</li>\n                    <li>The Translator AI modal should now be enabled and ready for use.</li>\n                </ol>\n                <p>For more information, please refer to the <a href="https://developer.chrome.com/docs/ai/translator-api" target="_blank">documentation</a>.</p>   \n                <p>If the issue persists, please ensure that your browser is up to date and restart your browser.</p>\n                <p>If you continue to experience issues after following the above steps, please <a href="https://my.coolplugins.net/account/support-tickets/" target="_blank" rel="noopener">open a support ticket</a> with our team. We are here to help you resolve any problems and ensure a smooth translation experience.</p>\n            </span>`);if(!o.includes(e.toLowerCase()))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <strong>Language Support Information:</strong>\n                <ol>\n                    <li>The current version of Chrome AI Translator does not support the Target Language <strong>${a} (${e})</strong></li>\n                    <li>To view the list of supported languages, please <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">chrome://on-device-translation-internals ${w.svgIcons("copy")}</span>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>Ensure your Chrome browser is updated to the latest version for optimal performance.</li>\n                </ol>\n            </span>`);if(!o.includes(t.toLowerCase()))return jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <strong>Language Support Information:</strong>\n                <ol>\n                    <li>The current version of Chrome AI Translator does not support the Source Language <strong>${n} (${t})</strong></li>\n                    <li>To view the list of supported languages, please <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">chrome://on-device-translation-internals ${w.svgIcons("copy")}</span>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>Ensure your Chrome browser is updated to the latest version for optimal performance.</li>\n                </ol>\n            </span>`);const l=await w.languagePairAvality(t,e);return"after-download"===l||"downloadable"===l||"unavailable"===l?jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Installation Instructions for Language Packs:</h4>\n                <ol>\n                    <li>\n                        To proceed, please install the language pack for <strong>${a} (${e})</strong> or <strong>${n} (${t})</strong>.\n                    </li>\n                    <li>\n                        After installing the language pack, add this language to your browser's system languages in Chrome settings.<br>\n                        Go to <strong>Settings &gt; Languages &gt; Add languages</strong> and add <strong>${a}</strong> or <strong>${n}</strong> to your preferred languages list & reload the page.\n                    </li>\n                    <li>\n                        You can install it by visiting the following link: \n                        <strong>\n                            <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">\n                                chrome://on-device-translation-internals ${w.svgIcons("copy")}\n                            </span>\n                        </strong>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.\n                    </li>\n                    <li>\n                        Please check if both your source <strong>(<span style="color:#2271b1">${t}</span>)</strong> and target <strong>(<span style="color:#2271b1">${e}</span>)</strong> languages are available in the language packs list.\n                    </li>\n                    <li>\n                        You need to install both language packs for translation to work. You can search for each language by its language code: <strong>${t}</strong> and <strong>${e}</strong>.\n                    </li>\n                    <li>For more help, refer to the <a href="https://developer.chrome.com/docs/ai/translator-api#supported-languages" target="_blank">documentation to check supported languages</a>.</li>\n                </ol>\n            </span>`):"downloading"===l?jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Language Pack Download In Progress:</h4>\n                <ol>\n                    <li>\n                        The language pack for <strong>${a} (${e})</strong> or <strong>${n} (${t})</strong> is already being downloaded.\n                    </li>\n                    <li>\n                        <strong>You do not need to start the download again.</strong> Please wait for the download to complete. Once finished, the translation feature will become available automatically.\n                    </li>\n                    <li>\n                        You can check the download progress by opening:\n                        <strong>\n                            <span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">\n                                chrome://on-device-translation-internals ${w.svgIcons("copy")}\n                            </span>\n                        </strong>\n                        . Click on the URL to copy it, then open a new window and paste this URL in Chrome to view the status.\n                    </li>\n                    <li>\n                        <strong>What to do next:</strong>\n                        <ul style="margin-top: .5em;">\n                            <li>Wait for the download to finish. The status will change to <strong>Ready</strong> or <strong>Installed</strong> in the <strong>Language Packs</strong> section.</li>\n                            <li>After the language pack is installed, you may need to <strong>reload</strong> or <strong>restart</strong> your browser for the changes to take effect.</li>\n                        </ul>\n                    </li>\n                    <li>\n                        For more help, refer to the <a href="https://developer.chrome.com/docs/ai/translator-api#supported-languages" target="_blank">documentation to check supported languages</a>.\n                    </li>\n                </ol>\n                <div style="text-align: right;">\n                    <button onclick="location.reload()" class="atfp-error-reload-btn">Reload Page</button>\n                </div>\n            </span>`):"readily"===l||"available"===l||jQuery(`<span style="color: #ff4646; display: inline-block;">\n                <h4>Language Pack Installation Required</h4>\n                <ol>\n                    <li>Please ensure that the language pack for <strong>${a} (${e})</strong> or <strong>${n} (${t})</strong> is installed and set as a preferred language in your browser.</li>\n                    <li>To install the language pack, visit <strong><span data-clipboard-text="chrome://on-device-translation-internals" target="_blank" class="chrome-ai-translator-flags">chrome://on-device-translation-internals ${w.svgIcons("copy")}</span></strong>. Click on the URL to copy it, then open a new window and paste this URL to access the settings.</li>\n                    <li>If you encounter any issues, please refer to the <a href="https://developer.chrome.com/docs/ai/translator-api#supported-languages" target="_blank">documentation to check supported languages</a> for further assistance.</li>\n                </ol>\n            </span>`)};static languagePairAvality=async(t,e)=>{let a=!1;if("translation"in self&&"createTranslator"in self.translation)a=await self.translation.canTranslate({sourceLanguage:t,targetLanguage:e});else if("ai"in self&&"translator"in self.ai){const n=await self.ai.translator.capabilities();a=await n.languagePairAvailable(t,e)}else"Translator"in self&&"create"in self.Translator&&(a=await self.Translator.availability({sourceLanguage:t,targetLanguage:e}));if((!a||["unavailable","downloading","after-download","downloadable"].includes(a))&&window?.self?.Translator)try{await self.Translator.create({sourceLanguage:t,targetLanguage:e,monitor(t){t.addEventListener("downloadprogress",t=>{console.log(`Downloaded ${100*t.loaded}%`)})}}),a=await(window?.self?.Translator?.availability({sourceLanguage:t,targetLanguage:e}))}catch(t){console.log("err",t)}return a};AITranslator=async t=>"translation"in self&&"createTranslator"in self.translation?await self.translation.createTranslator({sourceLanguage:this.sourceLanguage,targetLanguage:t}):"ai"in self&&"translator"in self.ai?await self.ai.translator.create({sourceLanguage:this.sourceLanguage,targetLanguage:t}):"Translator"in self&&"create"in self.Translator&&await self.Translator.create({sourceLanguage:this.sourceLanguage,targetLanguage:t});init=async()=>{this.appendBtn(),this.translationStart=!1,this.completedTranslateIndex=0,this.completedCharacterCount=0,this.translateBtnEvents(),this.progressBarSelector&&this.addProgressBar()};appendBtn=()=>{this.translateBtn=jQuery(`<button class="button button-primary${this.btnClass?" "+this.btnClass:""}">${this.btnText}</button>`),jQuery(this.btnSelector).append(this.translateBtn)};formatCharacterCount=t=>t>=1e6?(t/1e6).toFixed(1)+"M":t>=1e3?(t/1e3).toFixed(1)+"K":t;translateBtnEvents=t=>this.btnSelector&&0!==jQuery(this.btnSelector).length?this.stringSelector&&0!==jQuery(this.stringSelector).length?(this.translateStatus=!0,this.translateBtn.off("click"),this.translateBtn.prop("disabled",!1),void(this.translationStart?this.translateStringEle.length>this.completedTranslateIndex+1?this.translateBtn.on("click",()=>{this.onStartTranslationProcess(),this.stringTranslation(this.completedTranslateIndex+1)}):(this.onComplete({translatedStringsCount:this.completedCharacterCount}),this.translateBtn.prop("disabled",!0)):this.translateBtn.on("click",this.startTranslationProcess))):this.onLanguageError("The string selector is missing. Please provide a valid selector for the strings to be translated."):this.onLanguageError("The button selector is missing. Please provide a valid selector for the button.");startTranslationProcess=async()=>{this.onStartTranslationProcess();const t=this.defaultLang;this.translationStart=!0,this.translateStringEle=jQuery(this.stringSelector),this.totalStringCount=Array.from(this.translateStringEle).map(t=>t.innerText.length).reduce((t,e)=>t+e,0),this.translator=await this.AITranslator(t),this.translateStringEle.length>0&&await this.stringTranslation(this.completedTranslateIndex)};stringTranslation=async t=>{if(!this.translateStatus)return;const e=this.translateStringEle[t];this.onBeforeTranslate(e);const a=e.innerText;let n=[];(e.childNodes.length>0&&!e.querySelector(".notranslate")||e.querySelector(".notranslate"))&&e.childNodes.forEach(t=>{3===t.nodeType&&""!==t.nodeValue.trim()&&n.push(t)}),n.length>0&&await this.stringTranslationBatch(n,0),this.completedCharacterCount+=a.length,this.completedTranslateIndex=t,this.progressBarSelector&&this.updateProgressBar(),this.onAfterTranslate(e),this.translateStringEle.length>t+1&&await this.stringTranslation(this.completedTranslateIndex+1),t===this.translateStringEle.length-1&&(this.translateBtn.prop("disabled",!0),this.onComplete({characterCount:this.completedCharacterCount}),jQuery(this.progressBarSelector).find(".chrome-ai-translator-strings-count").show().find(".totalChars").text(this.formatCharacterCount(this.completedCharacterCount)))};stringTranslationBatch=async(t,e)=>{const a=await this.translator.translate(t[e].nodeValue);return a&&""!==a&&(t[e].nodeValue=a),e<t.length-1&&await this.stringTranslationBatch(t,e+1),!0};addProgressBar=()=>{if(!document.querySelector("#chrome-ai-translator-modal .chrome-ai-translator_progress_bar")){const t=jQuery('\n                <div class="chrome-ai-translator_progress_bar" style="background-color: #f3f3f3;border-radius: 10px;overflow: hidden;margin: 1.5rem auto; width: 50%;">\n                <div class="chrome-ai-translator_progress" style="overflow: hidden;transition: width .5s ease-in-out; border-radius: 10px;text-align: center;width: 0%;height: 20px;box-sizing: border-box;background-color: #4caf50; color: #fff; font-weight: 600;"></div>\n                </div>\n                <div style="display:none; color: white;" class="chrome-ai-translator-strings-count hidden">\n                    Wahooo! You have saved your valuable time via auto translating \n                    <strong class="totalChars">0</strong> characters using \n                    <strong>\n                        Chrome AI Translator\n                    </strong>\n                </div>\n            ');jQuery(this.progressBarSelector).append(t)}};updateProgressBar=()=>{const t=this.completedCharacterCount/this.totalStringCount*1e3/10;let e=t.toString().split(".")[1]||"";e=e.length>0&&"0"!==e[0]?e[0]:"";const a=parseInt(t)+""+(""!==e?"."+e:"");jQuery(".chrome-ai-translator_progress").css({width:`${a}%`}).text(`${a}%`)};stopTranslation=()=>{this.translateStatus=!1};reInit=()=>{this.translateBtnEvents()};startTranslation=()=>{this.translateStatus=!0,this.startTranslationProcess(this.completedTranslateIndex+1)};static svgIcons=t=>({copy:'<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="16px" width="16px" xmlns="http://www.w3.org/2000/svg" fill="#2271b1"><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"></path></svg>'}[t]||"")}const T=w,v=async t=>{const e=atfp_global_object.languageObject[t.targetLang].name,a=atfp_global_object.languageObject[t.sourceLang].name,n=(0,l.select)("block-atfp/translate").getAllowedMetaFields(),{translateStatusHandler:o,translateStatus:r}=t;let s=0;const c=await T.Object({mainWrapperSelector:"#atfp_strings_model",btnSelector:`#${t.ID}`,btnClass:"local_ai_translator_btn",btnText:(0,i.__)("Translate To","autopoly-ai-translation-for-polylang")+" "+e+" (Beta)",stringSelector:".atfp_string_container tbody tr td.translate:not([data-translate-status='translated'])",progressBarSelector:"#atfp_strings_model .atfp_translate_progress",sourceLanguage:t.sourceLang,targetLanguage:t.targetLang,targetLanguageLabel:e,sourceLanguageLabel:a,onStartTranslationProcess:()=>{s=(new Date).getTime(),jQuery("#atfp_strings_model .modal-content .atfp_string_container")[0].scrollHeight>100&&jQuery("#atfp_strings_model .atfp_translate_progress").fadeIn("slow")},onComplete:()=>{g({prefix:"localAiTranslator",start:s,end:(new Date).getTime(),translateStatus:!0}),setTimeout(()=>{o(!1),jQuery("#atfp_strings_model .atfp_translate_progress").fadeOut("slow")},4e3)},onBeforeTranslate:t=>{const e=jQuery("#atfp_strings_model .modal-content .atfp_string_container");if(e.length<1)return c.stopTranslation(),g({prefix:"localAiTranslator",start:s,end:(new Date).getTime()}),void(s=0);const a=e[0].getBoundingClientRect(),n=t.closest("tr").offsetTop,o=e.height();var r;n>o+a.y&&(r=n-o+t.offsetHeight,e.scrollTop(r))},onAfterTranslate:t=>{const e=t.innerText,a=t.dataset.stringType,o=t.dataset.key,r=t.closest("tr").querySelector('td[data-source="source_text"]').innerText;u({type:a,key:o,translateContent:e,source:r,provider:"localAiTranslator",AllowedMetaFields:n});const s=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData?.localAiTranslator,i=s&&s.targetStringCount?s.targetStringCount:0,c=s&&s.targetWordCount?s.targetWordCount:0,p=s&&s.targetCharacterCount?s.targetCharacterCount:0;""!==e.trim()&&e.trim().length>0&&(0,l.dispatch)("block-atfp/translate").translationInfo({targetStringCount:i+r.trim().split(/(?<=[.!?]+)\s+/).length,targetWordCount:c+r.trim().split(/\s+/).filter(t=>/[^\p{L}\p{N}]/.test(t)).length,targetCharacterCount:p+r.trim().length,provider:"localAiTranslator"})}});if(c.hasOwnProperty("init")){c.init();const t=document.querySelector("#atfp_localAiTranslator_translate_element .local_ai_translator_btn");t&&r&&(t.disabled=r)}},E=t=>{t=t||{};const{Service:e=!1,openErrorModalHandler:a=()=>{}}=t,n=(window.atfp_global_object.admin_url,window.atfp_global_object.atfp_url+"assets/images/error-icon.svg"),o={yandex:{Provider:b,title:"Yandex Translate",SettingBtnText:"Translate",serviceLabel:"Yandex Translate",Docs:"https://docs.coolplugins.net/doc/yandex-translate-for-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_yandex",heading:(0,i.__)("Choose Language","autopoly-ai-translation-for-polylang"),BetaEnabled:!1,ButtonDisabled:t.yandexButtonDisabled,ErrorMessage:t.yandexButtonDisabled?React.createElement("div",{className:"atfp-provider-error button button-primary",onClick:()=>a("yandex")},React.createElement("img",{src:n,alt:"error"})," ",(0,i.__)("View Error","autopoly-ai-translation-for-polylang")):React.createElement(React.Fragment,null),Logo:"yandex.png"},localAiTranslator:{Provider:v,title:"Chrome Built-in AI",SettingBtnText:"Translate",serviceLabel:"Chrome AI Translator",heading:(0,i.sprintf)((0,i.__)("Translate Using %s","autopoly-ai-translation-for-polylang"),"Chrome built-in API"),Docs:"https://docs.coolplugins.net/doc/chrome-ai-translation-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_chrome",BetaEnabled:!0,ButtonDisabled:t.localAiTranslatorButtonDisabled,ErrorMessage:t.localAiTranslatorButtonDisabled?React.createElement("div",{className:"atfp-provider-error button button-primary",onClick:()=>a("localAiTranslator")},React.createElement("img",{src:n,alt:"error"})," ",(0,i.__)("View Error","autopoly-ai-translation-for-polylang")):React.createElement(React.Fragment,null),Logo:"chrome.png"},google:{title:"Google Translate",SettingBtnText:"Translate",serviceLabel:"Google Translate",Docs:"https://docs.coolplugins.net/doc/google-translate-for-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_google",heading:(0,i.__)("Choose Language","autopoly-ai-translation-for-polylang"),BetaEnabled:!1,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_google",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"google.png"},openai_ai:{title:"OpenAI Model",SettingBtnText:"Translate",serviceLabel:"OpenAI",heading:(0,i.sprintf)((0,i.__)("Translate Using %s Model","autopoly-ai-translation-for-polylang"),"OpenAI"),Docs:"https://docs.coolplugins.net/doc/translate-via-open-ai-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_openai",BetaEnabled:!0,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_openai",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"openai.png"},google_ai:{title:"Gemini Model",SettingBtnText:"Translate",serviceLabel:"Gemini",heading:(0,i.sprintf)((0,i.__)("Translate Using %s Model","autopoly-ai-translation-for-polylang"),"Gemini"),Docs:"https://docs.coolplugins.net/doc/translate-via-gemini-ai-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_gemini",BetaEnabled:!0,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_gemini",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"gemini.png"},deepl_ai:{title:"DeepL Model",SettingBtnText:"Translate",serviceLabel:"DeepL",heading:(0,i.sprintf)((0,i.__)("Translate Using %s Model","autopoly-ai-translation-for-polylang"),"DeepL"),Docs:"https://docs.coolplugins.net/doc/translate-via-deepl-polylang/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=docs&utm_content=popup_deepl",BetaEnabled:!0,ButtonDisabled:!0,ErrorMessage:React.createElement("a",{className:"atfp-provider-error button button-primary",href:(window.atfp_global_object.pro_version_url||"")+"?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup_deepl",target:"_blank"},(0,i.__)("Buy Pro","autopoly-ai-translation-for-polylang")),Logo:"deepl.png"}};return e?o[e]:o},S=t=>{const{service:e}=t,a=(0,l.select)("block-atfp/translate").getTranslationEntry(),n=t.stringModalBodyNotice;return(0,p.useEffect)(()=>{["yandex"].includes(t.service)&&(document.documentElement.setAttribute("translate","no"),document.body.classList.add("notranslate"));const e=t.service,a=`atfp_${e}_translate_element`;wp.data.select("block-atfp/translate").getTranslationEntry().length>0&&t.postDataFetchStatus&&E({Service:e}).Provider({sourceLang:t.sourceLang,targetLang:t.targetLang,translateStatusHandler:t.translateStatusHandler,ID:a,translateStatus:t.translateStatus,modalRenderId:t.modalRender,destroyUpdateHandler:t.updateDestroyHandler})},[t.modalRender,t.postDataFetchStatus]),React.createElement("div",{className:"modal-body"},a.length>0&&t.postDataFetchStatus?React.createElement(React.Fragment,null,n&&React.createElement("div",{className:"atfp-body-notice-wrapper"},React.createElement(n,null)),React.createElement("div",{className:"atfp_translate_progress",key:t.modalRender},(0,i.__)("Automatic translation is in progress....","autopoly-ai-translation-for-polylang"),React.createElement("br",null),(0,i.__)("It will take few minutes, enjoy ☕ coffee in this time!","autopoly-ai-translation-for-polylang"),React.createElement("br",null),React.createElement("br",null),(0,i.__)("Please do not leave this window or browser tab while translation is in progress...","autopoly-ai-translation-for-polylang")),React.createElement("div",{className:`translator-widget ${e}`,style:{display:"flex"}},React.createElement("h3",{className:"choose-lang"},E({Service:t.service}).heading," ",React.createElement("span",{className:"dashicons-before dashicons-translation"})),React.createElement("div",{className:"atfp_translate_element_wrapper "+(t.translateStatus?"translate-completed":"")},React.createElement("div",{id:`atfp_${t.service}_translate_element`}))),React.createElement("div",{className:"atfp_string_container"},React.createElement("table",{className:"scrolldown",id:"stringTemplate"},React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",{className:"notranslate"},(0,i.__)("S.No","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Source Text","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Translation","autopoly-ai-translation-for-polylang")))),React.createElement("tbody",null,t.postDataFetchStatus&&React.createElement(React.Fragment,null,a.map((e,a)=>React.createElement(s.Fragment,{key:a+t.translatePendingStatus},void 0!==e.source&&""!==e.source.trim()&&React.createElement(React.Fragment,null,React.createElement("tr",{key:a+"tr"+t.translatePendingStatus},React.createElement("td",null,a+1),React.createElement("td",{"data-source":"source_text"},e.source),t.translatePendingStatus?React.createElement("td",{className:"translate",translate:"yes","data-key":e.id,"data-string-type":e.type},React.createElement(d,{service:t.service,content:e.source,contentKey:e.id})):React.createElement("td",{className:"translate","data-translate-status":"translated","data-key":e.id,"data-string-type":e.type},e.translatedData[t.service])))))))))):t.postDataFetchStatus?React.createElement("p",null,(0,i.__)("No strings are available for translation","autopoly-ai-translation-for-polylang")):React.createElement("div",{className:"atfp-skeleton-loader-wrapper"},React.createElement("div",{className:"translate-widget"},React.createElement("div",{className:"atfp-skeleton-loader-mini"}),React.createElement("div",{className:"atfp-skeleton-loader-mini"})),React.createElement("table",null,React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",{className:"notranslate"},(0,i.__)("S.No","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Source Text","autopoly-ai-translation-for-polylang")),React.createElement("th",{className:"notranslate"},(0,i.__)("Translation","autopoly-ai-translation-for-polylang")))),React.createElement("tbody",null,[...Array(10)].map((t,e)=>React.createElement("tr",{key:e},React.createElement("td",null,React.createElement("div",{className:"atfp-skeleton-loader-mini"})),React.createElement("td",null,React.createElement("div",{className:"atfp-skeleton-loader-mini"})),React.createElement("td",null,React.createElement("div",{className:"atfp-skeleton-loader-mini"}))))))))},k=t=>React.createElement("div",{className:`notice inline notice-info is-dismissible ${t.className}`},Array.isArray(t.children)?t.children.join(" "):t.children),C=t=>React.createElement("div",{className:"modal-footer",key:t.modalRender},!t.translatePendingStatus&&React.createElement(k,{className:"atfp_string_count"},React.createElement("p",null,(0,i.__)("Wahooo! You have saved your valuable time via auto translating","autopoly-ai-translation-for-polylang")," ",React.createElement("strong",null,React.createElement(m,{number:t.characterCount}))," ",(0,i.__)("characters using","autopoly-ai-translation-for-polylang")," ",React.createElement("strong",null,t.serviceLabel),".",(0,i.__)("Please share your feedback —","autopoly-ai-translation-for-polylang"),React.createElement("a",{href:"https://wordpress.org/support/plugin/automatic-translations-for-polylang/reviews/#new-post",target:"_blank",rel:"noopener",style:{color:"yellow"}},(0,i.__)("leave a quick review","autopoly-ai-translation-for-polylang")),"!")),React.createElement("div",{className:"save_btn_cont"},React.createElement("button",{className:"notranslate save_it button button-primary",disabled:t.translatePendingStatus,onClick:t.updatePostData},t.translateButtonStatus?React.createElement(React.Fragment,null,React.createElement("span",{className:"updating-text"},(0,i.__)("Updating","autopoly-ai-translation-for-polylang"),React.createElement("span",{className:"dot",style:{"--i":0}}),React.createElement("span",{className:"dot",style:{"--i":1}}),React.createElement("span",{className:"dot",style:{"--i":2}}))):(0,i.__)("Update Content","autopoly-ai-translation-for-polylang"))));function R(){return R=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)({}).hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},R.apply(null,arguments)}const x=t=>{let e=t.service;const a=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[e]||!1,n=a?.translateStatus||!1,[o,r]=(0,s.useState)(!0),[i,p]=(0,s.useState)(""),[d,u]=(0,s.useState)(!0),[g,m]=(0,s.useState)(a?.targetCharacterCount||0),[f,h]=(0,s.useState)([]),[_,y]=(0,s.useState)(!1),b=t=>{h(e=>[...e,t])};(0,s.useEffect)(()=>{o||f.length>0&&f.forEach(t=>{"function"==typeof t&&t()})},[o,f]);const w=()=>{const e=t.service;return"localAiTranslator"===e?"Chrome AI Translator":e.replace(/^\w/,t=>t.toUpperCase())+" Translate"};(0,s.useEffect)(()=>{t.postDataFetchStatus||t.fetchPostData({postId:t.postId,sourceLang:t.sourceLang,targetLang:t.targetLang,updatePostDataFetch:t.updatePostDataFetch,refPostData:t=>p(e=>({...e,...t})),updateDestroyHandler:b})},[t.postDataFetchStatus,t.modalRender]);const T=e=>{"yandex"===t.service&&document.querySelector("#atfp_yandex_translate_element #yt-widget .yt-button__icon.yt-button__icon_type_right")?.click(),u(!0),r(!1)},v=()=>{if(_)return;const e=i;let a=t.service;y(!0),t.translatePost({postContent:e,modalClose:()=>{r(!1),T()},service:a}),t.pageTranslate(!0),(({provider:t,sourceLang:e,targetLang:a,postId:n})=>{const o=(0,l.select)("block-atfp/translate").getTranslationInfo(),r=o.translateData?.[t]?.targetStringCount||0,s=o.translateData?.[t]?.targetWordCount||0,i=o.translateData?.[t]?.targetCharacterCount||0,c=o.translateData?.[t]?.timeTaken||0,p=o?.sourceWordCount||0,d=o?.sourceCharacterCount||0,u=o?.sourceStringCount||0,g={provider:t,totalStringCount:r,totalWordCount:s,totalCharacterCount:i,editorType:atfp_global_object.editor_type,date:(new Date).toISOString(),sourceStringCount:u,sourceWordCount:p,sourceCharacterCount:d,sourceLang:e,targetLang:a,timeTaken:c,action:atfp_global_object.update_translate_data,atfp_nonce:atfp_global_object.ajax_nonce,post_id:n};fetch(atfp_global_object.ajax_url,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(g)}).then().catch(t=>{console.error(t)})})({provider:a,sourceLang:t.sourceLang,targetLang:t.targetLang,postId:t.currentPostId})};return(0,s.useEffect)(()=>{r(!0),n&&(m(a?.targetCharacterCount||0),u(!1)),setTimeout(()=>{const t=document.querySelector(".atfp_string_container");t&&(t.scrollTop=0)})},[t.modalRender]),React.createElement(React.Fragment,null," ",o&&React.createElement("div",{id:`atfp-${t.service}-strings-modal`,className:"modal-container",style:{display:o?"flex":"none"},"data-render-id":t.modalRender},React.createElement("div",{className:"modal-content"},React.createElement(c,{modalRender:t.modalRender,setPopupVisibility:T,postContent:i,translatePendingStatus:d,pageTranslate:t.pageTranslate,service:t.service,serviceLabel:w(),updatePostData:v,characterCount:g,translateButtonStatus:_}),React.createElement(S,R({},t,{updatePostContent:t=>{p(t)},contentLoading:t.contentLoading,postDataFetchStatus:t.postDataFetchStatus,translatePendingStatus:d,service:t.service,sourceLang:t.sourceLang,targetLang:t.targetLang,translateStatusHandler:e=>{let a=t.service;const n=(0,l.select)("block-atfp/translate").getTranslationInfo().translateData[a]?.targetCharacterCount||0;m(n),u(e)},modalRender:t.modalRender,translateStatus:n,stringModalBodyNotice:t.stringModalBodyNotice,updateDestroyHandler:b})),React.createElement(C,{modalRender:t.modalRender,setPopupVisibility:T,postContent:i,translatePendingStatus:d,pageTranslate:t.pageTranslate,service:t.service,serviceLabel:w(),updatePostData:v,characterCount:g,translateButtonStatus:_}))))},L=({setSettingVisibility:t})=>React.createElement("div",{className:"modal-header"},React.createElement("h2",null,(0,i.__)("Step 1 - Select Translation Provider","autopoly-ai-translation-for-polylang")),React.createElement("span",{className:"close",onClick:()=>t(!1)},"×")),A=t=>{const e=t.Service,a=t[e+"Disabled"],n=E({Service:e,[e+"ButtonDisabled"]:a,openErrorModalHandler:t.openErrorModalHandler}),o=`atfp-${e.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/[^a-z0-9-]/g,"")}-btn`;return React.createElement("tr",null,React.createElement("td",{className:"atfp-provider-name"},React.createElement("img",{src:`${t.imgFolder}${n.Logo}`,alt:n.title}),React.createElement("span",null,n.title)),React.createElement("td",null,n.ButtonDisabled?n.ErrorMessage:React.createElement("div",{id:o,onClick:t.fetchContent,className:"atfp-service-btn button button-primary","data-service":e,"data-service-label":n.ServiceLabel},n.SettingBtnText)),React.createElement("td",null,React.createElement("a",{href:n.Docs,target:"_blank",rel:"noopener noreferrer",className:"atfp-doc-icon"},React.createElement("svg",{width:"9",height:"12",viewBox:"0 0 9 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("path",{d:"M2.17607 6.20533H6.82393V5.53867H2.17607V6.20533ZM2.17607 8.05133H6.82393V7.38467H2.17607V8.05133ZM2.17607 9.898H4.89536V9.23133H2.17607V9.898ZM1.03821 12C0.7425 12 0.495643 11.8973 0.297643 11.692C0.0996427 11.4867 0.000428571 11.2304 0 10.9233V1.07667C0 0.77 0.0992142 0.514 0.297643 0.308667C0.496071 0.103333 0.743143 0.000444444 1.03886 0H6.10714L9 3V10.9233C9 11.23 8.901 11.4862 8.703 11.692C8.505 11.8978 8.25771 12.0004 7.96114 12H1.03821ZM5.78571 3.33333V0.666667H1.03886C0.939857 0.666667 0.849 0.709333 0.766286 0.794666C0.683571 0.88 0.642429 0.974 0.642857 1.07667V10.9233C0.642857 11.0256 0.684 11.1196 0.766286 11.2053C0.848571 11.2911 0.939214 11.3338 1.03821 11.3333H7.96179C8.06036 11.3333 8.151 11.2907 8.23371 11.2053C8.31643 11.12 8.35757 11.0258 8.35714 10.9227V3.33333H5.78571Z",fill:"#6F6F6F"})))))};function N(){return N=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)({}).hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},N.apply(null,arguments)}const D=t=>{const e=E();return React.createElement("div",{className:"atfp-setting-modal-body"},React.createElement("div",{className:"atfp-setting-modal-notice-wrapper"}),React.createElement("table",null,React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",null,"Name"),React.createElement("th",null,"Translate"),React.createElement("th",null,"Docs"))),React.createElement("tbody",null,Object.keys(e).map(e=>React.createElement(A,N({key:e},t,{Service:e}))))))},I=t=>{const{targetLangName:e,postType:a,sourceLangName:n,setSettingVisibility:o}=t;return React.createElement("div",{className:"modal-footer"},React.createElement("p",{className:"atfp-error-message",style:{marginBottom:".5rem"}},sprintf((0,i.__)("This will replace your current %(postType)s with a %(target)s translation of the original %(source)s content.","autopoly-ai-translation-for-polylang"),{postType:a,source:n,target:e})),React.createElement("button",{className:"atfp-setting-close button button-primary",onClick:()=>o(!1)},(0,i.__)("Close","autopoly-ai-translation-for-polylang")))},{entries:j,setPrototypeOf:O,isFrozen:$,getPrototypeOf:P,getOwnPropertyDescriptor:M}=Object;let{freeze:F,seal:B,create:H}=Object,{apply:U,construct:z}="undefined"!=typeof Reflect&&Reflect;F||(F=function(t){return t}),B||(B=function(t){return t}),U||(U=function(t,e){for(var a=arguments.length,n=new Array(a>2?a-2:0),o=2;o<a;o++)n[o-2]=arguments[o];return t.apply(e,n)}),z||(z=function(t){for(var e=arguments.length,a=new Array(e>1?e-1:0),n=1;n<e;n++)a[n-1]=arguments[n];return new t(...a)});const W=rt(Array.prototype.forEach),q=rt(Array.prototype.lastIndexOf),V=rt(Array.prototype.pop),Q=rt(Array.prototype.push),G=rt(Array.prototype.splice),Y=rt(String.prototype.toLowerCase),X=rt(String.prototype.toString),J=rt(String.prototype.match),K=rt(String.prototype.replace),Z=rt(String.prototype.indexOf),tt=rt(String.prototype.trim),et=rt(Object.prototype.hasOwnProperty),at=rt(RegExp.prototype.test),nt=(ot=TypeError,function(){for(var t=arguments.length,e=new Array(t),a=0;a<t;a++)e[a]=arguments[a];return z(ot,e)});var ot;function rt(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var a=arguments.length,n=new Array(a>1?a-1:0),o=1;o<a;o++)n[o-1]=arguments[o];return U(t,e,n)}}function st(t,e){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Y;O&&O(t,null);let n=e.length;for(;n--;){let o=e[n];if("string"==typeof o){const t=a(o);t!==o&&($(e)||(e[n]=t),o=t)}t[o]=!0}return t}function lt(t){for(let e=0;e<t.length;e++)et(t,e)||(t[e]=null);return t}function it(t){const e=H(null);for(const[a,n]of j(t))et(t,a)&&(Array.isArray(n)?e[a]=lt(n):n&&"object"==typeof n&&n.constructor===Object?e[a]=it(n):e[a]=n);return e}function ct(t,e){for(;null!==t;){const a=M(t,e);if(a){if(a.get)return rt(a.get);if("function"==typeof a.value)return rt(a.value)}t=P(t)}return function(){return null}}const pt=F(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),dt=F(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),ut=F(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),gt=F(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),mt=F(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),ft=F(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),ht=F(["#text"]),_t=F(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),yt=F(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),bt=F(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),wt=F(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Tt=B(/\{\{[\w\W]*|[\w\W]*\}\}/gm),vt=B(/<%[\w\W]*|[\w\W]*%>/gm),Et=B(/\$\{[\w\W]*/gm),St=B(/^data-[\-\w.\u00B7-\uFFFF]+$/),kt=B(/^aria-[\-\w]+$/),Ct=B(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Rt=B(/^(?:\w+script|data):/i),xt=B(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Lt=B(/^html$/i),At=B(/^[a-z][.\w]*(-[.\w]+)+$/i);var Nt=Object.freeze({__proto__:null,ARIA_ATTR:kt,ATTR_WHITESPACE:xt,CUSTOM_ELEMENT:At,DATA_ATTR:St,DOCTYPE_NAME:Lt,ERB_EXPR:vt,IS_ALLOWED_URI:Ct,IS_SCRIPT_OR_DATA:Rt,MUSTACHE_EXPR:Tt,TMPLIT_EXPR:Et});const Dt=function(){return"undefined"==typeof window?null:window};var It=function t(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Dt();const a=e=>t(e);if(a.version="3.3.0",a.removed=[],!e||!e.document||9!==e.document.nodeType||!e.Element)return a.isSupported=!1,a;let{document:n}=e;const o=n,r=o.currentScript,{DocumentFragment:s,HTMLTemplateElement:l,Node:i,Element:c,NodeFilter:p,NamedNodeMap:d=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:u,DOMParser:g,trustedTypes:m}=e,f=c.prototype,h=ct(f,"cloneNode"),_=ct(f,"remove"),y=ct(f,"nextSibling"),b=ct(f,"childNodes"),w=ct(f,"parentNode");if("function"==typeof l){const t=n.createElement("template");t.content&&t.content.ownerDocument&&(n=t.content.ownerDocument)}let T,v="";const{implementation:E,createNodeIterator:S,createDocumentFragment:k,getElementsByTagName:C}=n,{importNode:R}=o;let x={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};a.isSupported="function"==typeof j&&"function"==typeof w&&E&&void 0!==E.createHTMLDocument;const{MUSTACHE_EXPR:L,ERB_EXPR:A,TMPLIT_EXPR:N,DATA_ATTR:D,ARIA_ATTR:I,IS_SCRIPT_OR_DATA:O,ATTR_WHITESPACE:$,CUSTOM_ELEMENT:P}=Nt;let{IS_ALLOWED_URI:M}=Nt,B=null;const U=st({},[...pt,...dt,...ut,...mt,...ht]);let z=null;const ot=st({},[..._t,...yt,...bt,...wt]);let rt=Object.seal(H(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),lt=null,Tt=null;const vt=Object.seal(H(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let Et=!0,St=!0,kt=!1,Rt=!0,xt=!1,At=!0,It=!1,jt=!1,Ot=!1,$t=!1,Pt=!1,Mt=!1,Ft=!0,Bt=!1,Ht=!0,Ut=!1,zt={},Wt=null;const qt=st({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Vt=null;const Qt=st({},["audio","video","img","source","image","track"]);let Gt=null;const Yt=st({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Xt="http://www.w3.org/1998/Math/MathML",Jt="http://www.w3.org/2000/svg",Kt="http://www.w3.org/1999/xhtml";let Zt=Kt,te=!1,ee=null;const ae=st({},[Xt,Jt,Kt],X);let ne=st({},["mi","mo","mn","ms","mtext"]),oe=st({},["annotation-xml"]);const re=st({},["title","style","font","a","script"]);let se=null;const le=["application/xhtml+xml","text/html"];let ie=null,ce=null;const pe=n.createElement("form"),de=function(t){return t instanceof RegExp||t instanceof Function},ue=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!ce||ce!==t){if(t&&"object"==typeof t||(t={}),t=it(t),se=-1===le.indexOf(t.PARSER_MEDIA_TYPE)?"text/html":t.PARSER_MEDIA_TYPE,ie="application/xhtml+xml"===se?X:Y,B=et(t,"ALLOWED_TAGS")?st({},t.ALLOWED_TAGS,ie):U,z=et(t,"ALLOWED_ATTR")?st({},t.ALLOWED_ATTR,ie):ot,ee=et(t,"ALLOWED_NAMESPACES")?st({},t.ALLOWED_NAMESPACES,X):ae,Gt=et(t,"ADD_URI_SAFE_ATTR")?st(it(Yt),t.ADD_URI_SAFE_ATTR,ie):Yt,Vt=et(t,"ADD_DATA_URI_TAGS")?st(it(Qt),t.ADD_DATA_URI_TAGS,ie):Qt,Wt=et(t,"FORBID_CONTENTS")?st({},t.FORBID_CONTENTS,ie):qt,lt=et(t,"FORBID_TAGS")?st({},t.FORBID_TAGS,ie):it({}),Tt=et(t,"FORBID_ATTR")?st({},t.FORBID_ATTR,ie):it({}),zt=!!et(t,"USE_PROFILES")&&t.USE_PROFILES,Et=!1!==t.ALLOW_ARIA_ATTR,St=!1!==t.ALLOW_DATA_ATTR,kt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Rt=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,xt=t.SAFE_FOR_TEMPLATES||!1,At=!1!==t.SAFE_FOR_XML,It=t.WHOLE_DOCUMENT||!1,$t=t.RETURN_DOM||!1,Pt=t.RETURN_DOM_FRAGMENT||!1,Mt=t.RETURN_TRUSTED_TYPE||!1,Ot=t.FORCE_BODY||!1,Ft=!1!==t.SANITIZE_DOM,Bt=t.SANITIZE_NAMED_PROPS||!1,Ht=!1!==t.KEEP_CONTENT,Ut=t.IN_PLACE||!1,M=t.ALLOWED_URI_REGEXP||Ct,Zt=t.NAMESPACE||Kt,ne=t.MATHML_TEXT_INTEGRATION_POINTS||ne,oe=t.HTML_INTEGRATION_POINTS||oe,rt=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&de(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(rt.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&de(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(rt.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(rt.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),xt&&(St=!1),Pt&&($t=!0),zt&&(B=st({},ht),z=[],!0===zt.html&&(st(B,pt),st(z,_t)),!0===zt.svg&&(st(B,dt),st(z,yt),st(z,wt)),!0===zt.svgFilters&&(st(B,ut),st(z,yt),st(z,wt)),!0===zt.mathMl&&(st(B,mt),st(z,bt),st(z,wt))),t.ADD_TAGS&&("function"==typeof t.ADD_TAGS?vt.tagCheck=t.ADD_TAGS:(B===U&&(B=it(B)),st(B,t.ADD_TAGS,ie))),t.ADD_ATTR&&("function"==typeof t.ADD_ATTR?vt.attributeCheck=t.ADD_ATTR:(z===ot&&(z=it(z)),st(z,t.ADD_ATTR,ie))),t.ADD_URI_SAFE_ATTR&&st(Gt,t.ADD_URI_SAFE_ATTR,ie),t.FORBID_CONTENTS&&(Wt===qt&&(Wt=it(Wt)),st(Wt,t.FORBID_CONTENTS,ie)),Ht&&(B["#text"]=!0),It&&st(B,["html","head","body"]),B.table&&(st(B,["tbody"]),delete lt.tbody),t.TRUSTED_TYPES_POLICY){if("function"!=typeof t.TRUSTED_TYPES_POLICY.createHTML)throw nt('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof t.TRUSTED_TYPES_POLICY.createScriptURL)throw nt('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');T=t.TRUSTED_TYPES_POLICY,v=T.createHTML("")}else void 0===T&&(T=function(t,e){if("object"!=typeof t||"function"!=typeof t.createPolicy)return null;let a=null;const n="data-tt-policy-suffix";e&&e.hasAttribute(n)&&(a=e.getAttribute(n));const o="dompurify"+(a?"#"+a:"");try{return t.createPolicy(o,{createHTML:t=>t,createScriptURL:t=>t})}catch(t){return console.warn("TrustedTypes policy "+o+" could not be created."),null}}(m,r)),null!==T&&"string"==typeof v&&(v=T.createHTML(""));F&&F(t),ce=t}},ge=st({},[...dt,...ut,...gt]),me=st({},[...mt,...ft]),fe=function(t){Q(a.removed,{element:t});try{w(t).removeChild(t)}catch(e){_(t)}},he=function(t,e){try{Q(a.removed,{attribute:e.getAttributeNode(t),from:e})}catch(t){Q(a.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t)if($t||Pt)try{fe(e)}catch(t){}else try{e.setAttribute(t,"")}catch(t){}},_e=function(t){let e=null,a=null;if(Ot)t="<remove></remove>"+t;else{const e=J(t,/^[\r\n\t ]+/);a=e&&e[0]}"application/xhtml+xml"===se&&Zt===Kt&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");const o=T?T.createHTML(t):t;if(Zt===Kt)try{e=(new g).parseFromString(o,se)}catch(t){}if(!e||!e.documentElement){e=E.createDocument(Zt,"template",null);try{e.documentElement.innerHTML=te?v:o}catch(t){}}const r=e.body||e.documentElement;return t&&a&&r.insertBefore(n.createTextNode(a),r.childNodes[0]||null),Zt===Kt?C.call(e,It?"html":"body")[0]:It?e.documentElement:r},ye=function(t){return S.call(t.ownerDocument||t,t,p.SHOW_ELEMENT|p.SHOW_COMMENT|p.SHOW_TEXT|p.SHOW_PROCESSING_INSTRUCTION|p.SHOW_CDATA_SECTION,null)},be=function(t){return t instanceof u&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof d)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},we=function(t){return"function"==typeof i&&t instanceof i};function Te(t,e,n){W(t,t=>{t.call(a,e,n,ce)})}const ve=function(t){let e=null;if(Te(x.beforeSanitizeElements,t,null),be(t))return fe(t),!0;const n=ie(t.nodeName);if(Te(x.uponSanitizeElement,t,{tagName:n,allowedTags:B}),At&&t.hasChildNodes()&&!we(t.firstElementChild)&&at(/<[/\w!]/g,t.innerHTML)&&at(/<[/\w!]/g,t.textContent))return fe(t),!0;if(7===t.nodeType)return fe(t),!0;if(At&&8===t.nodeType&&at(/<[/\w]/g,t.data))return fe(t),!0;if(!(vt.tagCheck instanceof Function&&vt.tagCheck(n))&&(!B[n]||lt[n])){if(!lt[n]&&Se(n)){if(rt.tagNameCheck instanceof RegExp&&at(rt.tagNameCheck,n))return!1;if(rt.tagNameCheck instanceof Function&&rt.tagNameCheck(n))return!1}if(Ht&&!Wt[n]){const e=w(t)||t.parentNode,a=b(t)||t.childNodes;if(a&&e)for(let n=a.length-1;n>=0;--n){const o=h(a[n],!0);o.__removalCount=(t.__removalCount||0)+1,e.insertBefore(o,y(t))}}return fe(t),!0}return t instanceof c&&!function(t){let e=w(t);e&&e.tagName||(e={namespaceURI:Zt,tagName:"template"});const a=Y(t.tagName),n=Y(e.tagName);return!!ee[t.namespaceURI]&&(t.namespaceURI===Jt?e.namespaceURI===Kt?"svg"===a:e.namespaceURI===Xt?"svg"===a&&("annotation-xml"===n||ne[n]):Boolean(ge[a]):t.namespaceURI===Xt?e.namespaceURI===Kt?"math"===a:e.namespaceURI===Jt?"math"===a&&oe[n]:Boolean(me[a]):t.namespaceURI===Kt?!(e.namespaceURI===Jt&&!oe[n])&&!(e.namespaceURI===Xt&&!ne[n])&&!me[a]&&(re[a]||!ge[a]):!("application/xhtml+xml"!==se||!ee[t.namespaceURI]))}(t)?(fe(t),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!at(/<\/no(script|embed|frames)/i,t.innerHTML)?(xt&&3===t.nodeType&&(e=t.textContent,W([L,A,N],t=>{e=K(e,t," ")}),t.textContent!==e&&(Q(a.removed,{element:t.cloneNode()}),t.textContent=e)),Te(x.afterSanitizeElements,t,null),!1):(fe(t),!0)},Ee=function(t,e,a){if(Ft&&("id"===e||"name"===e)&&(a in n||a in pe))return!1;if(St&&!Tt[e]&&at(D,e));else if(Et&&at(I,e));else if(vt.attributeCheck instanceof Function&&vt.attributeCheck(e,t));else if(!z[e]||Tt[e]){if(!(Se(t)&&(rt.tagNameCheck instanceof RegExp&&at(rt.tagNameCheck,t)||rt.tagNameCheck instanceof Function&&rt.tagNameCheck(t))&&(rt.attributeNameCheck instanceof RegExp&&at(rt.attributeNameCheck,e)||rt.attributeNameCheck instanceof Function&&rt.attributeNameCheck(e,t))||"is"===e&&rt.allowCustomizedBuiltInElements&&(rt.tagNameCheck instanceof RegExp&&at(rt.tagNameCheck,a)||rt.tagNameCheck instanceof Function&&rt.tagNameCheck(a))))return!1}else if(Gt[e]);else if(at(M,K(a,$,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==Z(a,"data:")||!Vt[t])if(kt&&!at(O,K(a,$,"")));else if(a)return!1;return!0},Se=function(t){return"annotation-xml"!==t&&J(t,P)},ke=function(t){Te(x.beforeSanitizeAttributes,t,null);const{attributes:e}=t;if(!e||be(t))return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:z,forceKeepAttr:void 0};let o=e.length;for(;o--;){const r=e[o],{name:s,namespaceURI:l,value:i}=r,c=ie(s),p=i;let d="value"===s?p:tt(p);if(n.attrName=c,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,Te(x.uponSanitizeAttribute,t,n),d=n.attrValue,!Bt||"id"!==c&&"name"!==c||(he(s,t),d="user-content-"+d),At&&at(/((--!?|])>)|<\/(style|title|textarea)/i,d)){he(s,t);continue}if("attributename"===c&&J(d,"href")){he(s,t);continue}if(n.forceKeepAttr)continue;if(!n.keepAttr){he(s,t);continue}if(!Rt&&at(/\/>/i,d)){he(s,t);continue}xt&&W([L,A,N],t=>{d=K(d,t," ")});const u=ie(t.nodeName);if(Ee(u,c,d)){if(T&&"object"==typeof m&&"function"==typeof m.getAttributeType)if(l);else switch(m.getAttributeType(u,c)){case"TrustedHTML":d=T.createHTML(d);break;case"TrustedScriptURL":d=T.createScriptURL(d)}if(d!==p)try{l?t.setAttributeNS(l,s,d):t.setAttribute(s,d),be(t)?fe(t):V(a.removed)}catch(e){he(s,t)}}else he(s,t)}Te(x.afterSanitizeAttributes,t,null)},Ce=function t(e){let a=null;const n=ye(e);for(Te(x.beforeSanitizeShadowDOM,e,null);a=n.nextNode();)Te(x.uponSanitizeShadowNode,a,null),ve(a),ke(a),a.content instanceof s&&t(a.content);Te(x.afterSanitizeShadowDOM,e,null)};return a.sanitize=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,l=null,c=null;if(te=!t,te&&(t="\x3c!--\x3e"),"string"!=typeof t&&!we(t)){if("function"!=typeof t.toString)throw nt("toString is not a function");if("string"!=typeof(t=t.toString()))throw nt("dirty is not a string, aborting")}if(!a.isSupported)return t;if(jt||ue(e),a.removed=[],"string"==typeof t&&(Ut=!1),Ut){if(t.nodeName){const e=ie(t.nodeName);if(!B[e]||lt[e])throw nt("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof i)n=_e("\x3c!----\x3e"),r=n.ownerDocument.importNode(t,!0),1===r.nodeType&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!$t&&!xt&&!It&&-1===t.indexOf("<"))return T&&Mt?T.createHTML(t):t;if(n=_e(t),!n)return $t?null:Mt?v:""}n&&Ot&&fe(n.firstChild);const p=ye(Ut?t:n);for(;l=p.nextNode();)ve(l),ke(l),l.content instanceof s&&Ce(l.content);if(Ut)return t;if($t){if(Pt)for(c=k.call(n.ownerDocument);n.firstChild;)c.appendChild(n.firstChild);else c=n;return(z.shadowroot||z.shadowrootmode)&&(c=R.call(o,c,!0)),c}let d=It?n.outerHTML:n.innerHTML;return It&&B["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&at(Lt,n.ownerDocument.doctype.name)&&(d="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+d),xt&&W([L,A,N],t=>{d=K(d,t," ")}),T&&Mt?T.createHTML(d):d},a.setConfig=function(){ue(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),jt=!0},a.clearConfig=function(){ce=null,jt=!1},a.isValidAttribute=function(t,e,a){ce||ue({});const n=ie(t),o=ie(e);return Ee(n,o,a)},a.addHook=function(t,e){"function"==typeof e&&Q(x[t],e)},a.removeHook=function(t,e){if(void 0!==e){const a=q(x[t],e);return-1===a?void 0:G(x[t],a,1)[0]}return V(x[t])},a.removeHooks=function(t){x[t]=[]},a.removeAllHooks=function(){x={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},a}();const jt=({message:t,onClose:e,Title:a})=>{let n=jQuery("<div>").append(t);const o=n.html();return n.remove(),n=null,(0,s.useEffect)(()=>{const t=document.querySelectorAll(".chrome-ai-translator-flags");if(t.length>0)return t.forEach(t=>{t.classList.add("atfp-tooltip-element"),t.addEventListener("click",e=>{if(e.preventDefault(),t.querySelector(".atfp-tooltip"))return;let a=document.createElement("span");a.textContent="Text to be copied.",a.className="atfp-tooltip",t.appendChild(a),(async({text:t=!1,startCopyStatus:e=()=>{},endCopyStatus:a=()=>{}})=>{if(t&&""!==t)try{if(navigator?.clipboard?.writeText)await navigator.clipboard.writeText(t);else{const e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select(),document.execCommand&&document.execCommand("copy"),document.body.removeChild(e)}e(),setTimeout(()=>a(),800)}catch(t){console.error("Error copying text to clipboard:",t)}})({text:t.getAttribute("data-clipboard-text"),startCopyStatus:()=>{a.classList.add("atfp-tooltip-active")},endCopyStatus:()=>{setTimeout(()=>{a.remove()},800)}})})}),()=>{t.forEach(t=>{t.removeEventListener("click",()=>{})})}},[]),React.createElement("div",{className:"atfp-error-modal-box-container"},React.createElement("div",{className:"atfp-error-modal-box"},React.createElement("div",{className:"atfp-error-modal-box-header"},React.createElement("span",{className:"atfp-error-modal-box-close",onClick:e},"×"),a&&React.createElement("h3",null,a)),React.createElement("div",{className:"atfp-error-modal-box-body"},React.createElement("p",{dangerouslySetInnerHTML:{__html:It.sanitize(o)}})),React.createElement("div",{className:"atfp-error-modal-box-footer"},React.createElement("button",{className:"atfp-error-modal-box-close button button-primary",onClick:e},"Close"))))};function Ot(){return Ot=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)({}).hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},Ot.apply(null,arguments)}const $t=t=>{const[e,a]=(0,s.useState)({}),[n,o]=(0,s.useState)(0),[l,c]=(0,s.useState)(!1),p=atfp_global_object.source_lang,d=t.targetLang,u=atfp_global_object.languageObject[p].name,g=atfp_global_object.languageObject[d].name,m=atfp_global_object.atfp_url+"assets/images/",f=["af","am","ar","az","ba","be","bg","bn","bs","ca","ceb","cs","cv","cy","da","de","el","emj","en","eo","es","et","eu","fa","fi","fr","ga","gd","gl","gu","he","hi","hr","ht","hu","hy","id","is","it","ja","jv","ka","kazlat","kk","km","kn","ko","ky","la","lb","lo","lt","lv","mg","mhr","mi","mk","ml","mn","mr","mrj","ms","mt","my","ne","nl","no","pa","pap","pl","pt","pt-BR","ro","ru","sah","si","sk","sl","sq","sr","sr-Latn","su","sv","sw","ta","te","tg","th","tl","tr","tt","udm","uk","ur","uz","uzbcyr","vi","xh","yi","zh","zu"].includes(d),[h,_]=(0,s.useState)({}),[y,b]=(0,s.useState)(!1),[w,v]=(0,s.useState)(!1),E=t=>{t.preventDefault();const e=t.target;"yes"===e.dataset.value&&c(!0),e.closest("#atfp-modal-open-warning-wrapper").remove()};(0,s.useEffect)(()=>{const e=document.querySelectorAll("#atfp-modal-open-warning-wrapper .modal-content div[data-value]"),a=document.querySelector(t.translateWrpSelector);a&&a.addEventListener("click",t=>{t.preventDefault(),c(t=>!t)}),e.forEach(t=>{t&&t.addEventListener("click",E)})},[]),(0,s.useEffect)(()=>{l&&(f||_(t=>({...t,yandex:{message:"<p style={{ fontSize: '1rem', color: '#ff4646' }}>"+(0,i.sprintf)((0,i.__)("Yandex Translate does not support the target language: %s.","autopoly-ai-translation-for-polylang"),"<strong>"+g+" ("+d+")</strong>")+"</p>",Title:(0,i.__)("Yandex Translate","autopoly-ai-translation-for-polylang")}})),(async()=>{const t=await T.languageSupportedStatus(p,d,g,u),e=document.querySelector(".atfp-service-btn#atfp-local-ai-translator-btn");!0!==t&&"object"==typeof t&&e&&(v(!0),_(e=>({...e,localAiTranslator:{message:t,Title:(0,i.__)("Chrome AI Translator","autopoly-ai-translation-for-polylang")}})))})())},[l]),(0,s.useEffect)(()=>{const a=e,o=a.dataset&&a.dataset.service,s=a.dataset&&a.dataset.serviceLabel,l=t.postId,i=document.getElementById("atfp_strings_model");i&&(i._reactRoot||(i._reactRoot=r.createRoot(i)),n&&i._reactRoot.render(React.createElement(x,{currentPostId:t.currentPostId,postId:l,service:o,serviceLabel:s,sourceLang:p,targetLang:d,modalRender:n,pageTranslate:t.pageTranslate,postDataFetchStatus:t.postDataFetchStatus,fetchPostData:t.fetchPostData,translatePost:t.translatePost,contentLoading:t.contentLoading,updatePostDataFetch:t.updatePostDataFetch,stringModalBodyNotice:t.stringModalBodyNotice})))},[t.postDataFetchStatus,n]);const S=t=>{c(t)};return React.createElement(React.Fragment,null,y&&h[y]&&React.createElement(jt,Ot({onClose:()=>{b(!1),c(!0)}},h[y])),l&&React.createElement("div",{className:"modal-container",style:{display:l?"flex":"none"}},React.createElement("div",{className:"atfp-settings modal-content"},React.createElement(L,{setSettingVisibility:S,postType:t.postType,sourceLangName:u,targetLangName:g}),React.createElement(D,{yandexDisabled:!f,fetchContent:async t=>{let e=t.target.classList.contains("atfp-service-btn")?t.target:t.target.closest(".atfp-service-btn");if(!e)return;const n=e.dataset&&e.dataset.service;if(c(!1),"localAiTranslator"===n){const t=await T.languageSupportedStatus(p,d,g);if(!0!==t&&"object"==typeof t)return}o(t=>t+1),a(e)},imgFolder:m,targetLangName:g,postType:t.postType,sourceLangName:u,localAiTranslatorDisabled:w,openErrorModalHandler:t=>{c(!1),b(t)}}),React.createElement(I,{targetLangName:g,postType:t.postType,sourceLangName:u,setSettingVisibility:S}))))},Pt="SAVE_SOURCE_TITLE",Mt="SAVE_TRANSLATE_TITLE",Ft="SAVE_SOURCE_EXCERPT",Bt="SAVE_TRANSLATE_EXCERPT",Ht="SAVE_SOURCE_CONTENT",Ut="SAVE_TRANSLATE_CONTENT",zt="SAVE_SOURCE_META_FIELDS",Wt="SAVE_TRANSLATE_META_FIELDS",qt="SET_BLOCK_RULES",Vt="SAVE_TRANSLATE_INFO",Qt="ALLOWED_META_FIELDS",Gt="CONTENT_FETCH_STATUS",Yt={title:{},excerpt:{},content:[],metaFields:{},allowedMetaFields:{},contentFetchStatus:!1},Xt=t=>({type:Pt,text:t}),Jt=(t,e)=>({type:Mt,text:t,provider:e}),Kt=t=>({type:Ft,text:t}),Zt=(t,e)=>({type:Bt,text:t,provider:e}),te=(t,e)=>({type:Ht,text:e,id:t}),ee=(t,e,a,n)=>({type:Ut,text:e,id:t,source:a,provider:n}),ae=(t,e)=>({type:zt,text:e,id:t}),ne=(t,e,a,n)=>({type:Wt,text:e,id:t,source:a,provider:n}),oe=t=>({type:qt,data:t}),re=({sourceStringCount:t=null,sourceWordCount:e=null,sourceCharacterCount:a=null,timeTaken:n=null,provider:o=null,targetStringCount:r=null,targetWordCount:s=null,targetCharacterCount:l=null,translateStatus:i=null})=>({type:Vt,sourceStringCount:t,sourceWordCount:e,sourceCharacterCount:a,timeTaken:n,targetStringCount:r,targetWordCount:s,targetCharacterCount:l,provider:o,translateStatus:i}),se=({id:t,type:e})=>({type:Qt,id:t,inputType:e}),le=t=>({type:Gt,status:t}),ie=t=>{const e=new Array;return t.title.source&&e.push({id:"title",source:t.title.source,type:"title",translatedData:t.title.translatedData||{}}),t.excerpt.source&&e.push({id:"excerpt",source:t.excerpt.source,type:"excerpt",translatedData:t.excerpt.translatedData||{}}),Object.keys(t.metaFields).map(a=>{e.push({type:"metaFields",id:a,source:t.metaFields[a].source,translatedData:t.metaFields[a].translatedData||{}})}),Object.keys(t.content).map(a=>{e.push({type:"content",id:a,source:t.content[a].source,translatedData:t.content[a].translatedData||{}})}),e},ce=t=>t.blockRules,pe=(t,e,a,n=null,o=null)=>["title","excerpt"].includes(e)&&t[e].source===a&&t[e].translatedData&&t[e].translatedData[o]?t[e]?.translatedData[o]||t[e]?.source:"metaFields"===e&&t.metaFields&&t.metaFields[n]&&t.metaFields[n].source===a&&t.metaFields[n].translatedData&&t.metaFields[n].translatedData[o]?void 0!==t.metaFields[n]?.translatedData[o]?t.metaFields[n]?.translatedData[o]:t.metaFields[n]?.source:"content"===e&&t.content&&t.content[n]&&t.content[n].source===a&&t.content[n].translatedData&&t.content[n].translatedData[o]?void 0!==t.content[n]?.translatedData[o]?t.content[n]?.translatedData[o]:t.content[n]?.source:a,de=t=>({sourceStringCount:t?.translationInfo?.sourceStringCount||0,sourceWordCount:t?.translationInfo?.sourceWordCount||0,sourceCharacterCount:t?.translationInfo?.sourceCharacterCount||0,translateData:t?.translationInfo?.translateData||{}}),ue=t=>t.allowedMetaFields||{},ge=t=>t.contentFetchStatus,{createReduxStore:me,register:fe}=wp.data;fe(me("block-atfp/translate",{reducer:(t=Yt,e)=>{switch(e.type){case Pt:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,title:{...t.title,source:e.text}}:t;case Mt:return{...t,title:{...t.title,translatedData:{...t.title.translatedData||[],[e.provider]:e.text}}};case Ft:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,excerpt:{...t.excerpt,source:e.text}}:t;case Bt:return{...t,excerpt:{...t.excerpt,translatedData:{...t.excerpt.translatedData||[],[e.provider]:e.text}}};case Ht:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,content:{...t.content,[e.id]:{...t.content[e.id]||[],source:e.text}}}:t;case Ut:return t.content[e.id].source===e.source?{...t,content:{...t.content,[e.id]:{...t.content[e.id]||[],translatedData:{...t.content[e.id].translatedData||[],[e.provider]:e.text}}}}:t;case zt:return/[\p{L}\p{N}]/gu.test(e.text)?{...t,metaFields:{...t.metaFields,[e.id]:{...t.metaFields[e.id]||[],source:e.text}}}:t;case Wt:return{...t,metaFields:{...t.metaFields,[e.id]:{...t.metaFields[e.id]||[],translatedData:{...t.metaFields[e.id].translatedData||[],[e.provider]:e.text}}}};case qt:return{...t,blockRules:e.data};case Vt:const a={};return e.sourceStringCount&&(a.sourceStringCount=e.sourceStringCount),e.sourceWordCount&&(a.sourceWordCount=e.sourceWordCount),e.sourceCharacterCount&&(a.sourceCharacterCount=e.sourceCharacterCount),(e.targetWordCount||e.targetCharacterCount||e.translateStatus||e.timeTaken)&&e.provider&&(a.translateData={...t.translationInfo?.translateData||{},[e.provider]:{...t.translationInfo?.translateData?.[e.provider]||{},...e.targetStringCount&&{targetStringCount:e.targetStringCount},...e.targetWordCount&&{targetWordCount:e.targetWordCount},...e.targetCharacterCount&&{targetCharacterCount:e.targetCharacterCount},...e.translateStatus&&{translateStatus:e.translateStatus},...e.timeTaken&&{timeTaken:e.timeTaken}}}),{...t,translationInfo:{...t.translationInfo,...a}};case Qt:return{...t,allowedMetaFields:{...t.allowedMetaFields,[e.id]:{...t.allowedMetaFields[e.id]||[],inputType:e.inputType}}};case Gt:return{...t,contentFetchStatus:e.status};default:return t}},actions:n,selectors:o}));const he=(t,e,a,n)=>{const o=(t,e)=>{Object.keys(e).map(a=>{let o=e;o=o[a];const r=new Array(...t,a);n(r,o)})};Object.getPrototypeOf(e)===Array.prototype?((t,e)=>{const r=new Array(...t);let s=a;r.forEach(t=>{s=s[t]}),[null,void 0].includes(s)||(Object.getPrototypeOf(s)!==Object.prototype?(Object.getPrototypeOf(s)===Array.prototype&&s.forEach((t,a)=>{const o=new Array;r.forEach(t=>{o.push(t)}),o.push(a),n(o,e[0])}),"object"!=typeof s||o(t,e[0])):o(t,e[0]))})(t,e):Object.getPrototypeOf(e)===Object.prototype&&o(t,e)},_e=(t,e)=>{Object.keys(e.AtfpBlockParseRules).includes(t.name)&&((t,e,a)=>{const n=Object.values(a),o=(a,n)=>{if(!0===n){const n=new Array(...a),o=new Array;let r=e,s=t;n.forEach(t=>{o.push(t),s+=`atfp${t}`,r=r?r[t]:r});let i=r;if(i instanceof wp.richText.RichTextData&&(i=i.originalHTML),void 0!==i&&"string"==typeof i&&""!==i.trim()){let t=s.replace(/[^\p{L}\p{N}]/gu,"");if(!/[\p{L}\p{N}]/gu.test(i))return!1;(0,l.dispatch)("block-atfp/translate").contentSaveSource(t,i)}return}he(a,n,e,o)};n.forEach(t=>{Object.keys(t).forEach(e=>{const a=new Array(e);o(a,t[e])})})})(t.clientId,t.attributes,e.AtfpBlockParseRules[t.name])},ye=(t,e)=>{t.forEach(t=>{_e(t,e),t.innerBlocks&&ye(t.innerBlocks,e)})},be=window.wp.blocks,we={_yoast_wpseo_title:{type:"string"},_yoast_wpseo_focuskw:{type:"string"},_yoast_wpseo_metadesc:{type:"string"},_yoast_wpseo_bctitle:{type:"string"},"_yoast_wpseo_opengraph-title":{type:"string"},"_yoast_wpseo_opengraph-description":{type:"string"},"_yoast_wpseo_twitter-title":{type:"string"},"_yoast_wpseo_twitter-description":{type:"string"},rank_math_title:{type:"string"},rank_math_description:{type:"string"},rank_math_focus_keyword:{type:"string"},rank_math_facebook_title:{type:"string"},rank_math_facebook_description:{type:"string"},rank_math_twitter_title:{type:"string"},rank_math_twitter_description:{type:"string"},rank_math_breadcrumb_title:{type:"string"},_seopress_titles_title:{type:"string"},_seopress_titles_desc:{type:"string"},_seopress_social_fb_title:{type:"string"},_seopress_social_fb_desc:{type:"string"},_seopress_social_twitter_title:{type:"string"},_seopress_social_twitter_desc:{type:"string"},_seopress_analysis_target_kw:{type:"string"}},Te=async t=>{const e=atfp_global_object.ajax_url;let a=wp.data.select("block-atfp/translate").getBlockRules()||{};const n=[];t.updateDestroyHandler(()=>{n.forEach(t=>{t.abort("Modal Closed")})});const o=t=>{(0,l.dispatch)("block-atfp/translate").allowedMetaFields(t)};Object.keys(we).forEach(t=>{o({id:t,type:we[t].type})}),(()=>{const t="true"===atfp_global_object.postMetaSync;if(window.acf&&!t){const t=["text","textarea","wysiwyg"];acf.getFields().forEach(e=>{const a=JSON.parse(JSON.stringify({key:e.data.key,type:e.data.type,name:e.data.name}));if(e.$el&&e.$el.closest(".acf-field.acf-field-repeater")&&e.$el.closest(".acf-field.acf-field-repeater").length>0){const t=e.$el.closest(".acf-row").data("id"),n=e.$el.closest(".acf-field.acf-field-repeater").data("name");if(t&&""!==t){const e=t.replace("row-","");a.name=n+"_"+e+"_"+a.name}}if(a&&a.key&&t.includes(a.type)){const t=a.name,e=a.type;o({id:t,type:e})}})}})(),await(async()=>{if(a&&a.AtfpBlockParseRules&&Object.keys(a.AtfpBlockParseRules).length>0)return;const t={atfp_nonce:atfp_global_object.ajax_nonce,action:atfp_global_object.action_block_rules},o=new AbortController;n.push(o),await fetch(e,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(t),signal:o.signal}).then(t=>t.json()).then(t=>{a=JSON.parse(t.data.blockRules),(0,l.dispatch)("block-atfp/translate").setBlockRules(a)}).catch(t=>{console.error("Error fetching post content:",t)})})(),await(async()=>{if((0,l.select)("block-atfp/translate").contentFetchStatus())return;const o={postId:parseInt(t.postId),local:t.targetLang,current_local:t.sourceLang,atfp_nonce:atfp_global_object.ajax_nonce,action:atfp_global_object.action_fetch},r=new AbortController;n.push(r),await fetch(e,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(o),signal:r.signal}).then(t=>t.json()).then(e=>{if((0,l.select)("block-atfp/translate").contentFetchStatus())return;const n=e.data;n.content&&""!==n.content.trim()&&(n.content=(0,be.parse)(n.content)),((t,e)=>{const a=(0,l.select)("block-atfp/translate").getAllowedMetaFields();Object.keys(t).forEach(n=>{if("content"===n)((t,e)=>{Object.values(t).forEach(t=>{_e(t,e),t.innerBlocks&&ye(t.innerBlocks,e)})})(t[n],e);else if("metaFields"===n)Object.keys(t[n]).forEach(e=>{Object.keys(a).includes(e)&&"string"===a[e].inputType&&""!==t[n][e][0]&&void 0!==t[n][e][0]&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(e,t[n][e][0])}),window.acf&&acf.getFields().forEach(e=>{const o=JSON.parse(JSON.stringify({key:e.data.key,type:e.data.type,name:e.data.name}));if(e.$el&&e.$el.closest(".acf-field.acf-field-repeater")&&e.$el.closest(".acf-field.acf-field-repeater").length>0){const t=e.$el.closest(".acf-row").data("id"),a=e.$el.closest(".acf-field.acf-field-repeater").data("name");if(t&&""!==t){const e=t.replace("row-","");o.name=a+"_"+e+"_"+o.name}}if(o&&o.key&&Object.keys(a).includes(o.name)){const a=o.name;let r=e?.val();"wysiwyg"===o.type&&t[n]&&t[n][a]&&t[n][a][0]&&""!==t[n][a][0]&&(r=t[n][a][0]),(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(a,r)}});else if(["title","excerpt"].includes(n)&&t[n]&&""!==t[n].trim()){const e=`${n}SaveSource`;(0,l.dispatch)("block-atfp/translate")[e](t[n])}})})(n,a),t.refPostData(n),t.updatePostDataFetch(!0),(0,l.dispatch)("block-atfp/translate").contentFetchStatus(!0)}).catch(t=>{console.error("Error fetching post content:",t)})})()},ve=(t,e,a,n)=>{const{createBlock:o}=wp.blocks,{name:r,attributes:s}=t;let l={...s},i=t,c="";return Object.keys(a.AtfpBlockParseRules).includes(t.name)&&(i=((t,e,a)=>{const{select:n}=wp.data,o=Object.values(e),r=t.attributes,s=t.clientId,l=(e,o)=>{if(!0===o){const o=new Array(...e),l=new Array;let i=r,c=s;o.forEach(t=>{l.push(t),c+=`atfp${t}`,i=i?i[t]:i});let p=i;if(p instanceof wp.richText.RichTextData&&(p=p.originalHTML),void 0!==p&&"string"==typeof p&&""!==p.trim()){let e=c.replace(/[^\p{L}\p{N}]/gu,""),r="";r=/[\p{L}\p{N}]/gu.test(p)?n("block-atfp/translate").getTranslatedString("content",p,e,a):p,t.attributes=((t,e,a)=>{const n={...t};let o=n;for(let t=0;t<e.length-1;t++)Object.getPrototypeOf(o[e[t]])===Array.prototype?o[e[t]]=[...o[e[t]]]:o[e[t]]={...o[e[t]]},o=o[e[t]];return o[e[e.length-1]]instanceof wp.richText.RichTextData?o[e[e.length-1]]=a.replace(/(?<!\\)"|\\"/g,"'"):o[e[e.length-1]]=a,n})(t.attributes,o,r)}return}he(e,o,r,l)};return o.forEach(t=>{Object.keys(t).forEach(e=>{const a=new Array(e);l(a,t[e])})}),t})(t,a.AtfpBlockParseRules[t.name],n),l=i.attributes),c=o(r,l,e),c},Ee=(t,e,a)=>{let n=t.innerBlocks.map(t=>{if(t.name)return Ee(t,e,a)});return ve(t,n,e,a)},Se=t=>{if(!(0,l.dispatch)("yoast-seo/editor"))return;const{updateData:e,setFocusKeyword:a,setBreadcrumbsTitle:n,setFacebookPreviewTitle:o,setFacebookPreviewDescription:r,setTwitterPreviewTitle:s,setTwitterPreviewDescription:i}=(0,l.dispatch)("yoast-seo/editor"),{key:c,value:p}=t;switch(c){case"_yoast_wpseo_focuskw":a&&a(p);break;case"_yoast_wpseo_title":e&&e({title:p});break;case"_yoast_wpseo_metadesc":e&&e({description:p});break;case"_yoast_wpseo_bctitle":n&&n(p);break;case"_yoast_wpseo_opengraph-title":o&&o(p);break;case"_yoast_wpseo_opengraph-description":r&&r(p);break;case"_yoast_wpseo_twitter-title":s&&s(p);break;case"_yoast_wpseo_twitter-description":i&&i(p)}},ke=t=>{if(!(0,l.dispatch)("rank-math"))return;const{updateKeywords:e,updateTitle:a,updateDescription:n,updateBreadcrumbTitle:o,updateFacebookTitle:r,updateFacebookDescription:s,updateTwitterTitle:i,updateTwitterDescription:c}=(0,l.dispatch)("rank-math"),{key:p,value:d}=t;switch(p){case"rank_math_focus_keyword":e&&e(d);break;case"rank_math_title":a&&a(d);break;case"rank_math_description":n&&n(d);break;case"rank_math_breadcrumb_title":o&&o(d);break;case"rank_math_facebook_title":r&&r(d);break;case"rank_math_facebook_description":s&&s(d);break;case"rank_math_twitter_title":i&&i(d);break;case"rank_math_twitter_description":c&&c(d)}},Ce=t=>{const{editPost:e}=(0,l.dispatch)("core/editor"),{modalClose:a,postContent:n,service:o}=t;(()=>{const t={};Object.keys(n).filter(t=>["title","excerpt"].includes(t)).forEach(e=>{const a=n[e];if(""!==a.trim()){const n=(0,l.select)("block-atfp/translate").getTranslatedString(e,a,null,o);t[e]=n}}),e(t)})(),(()=>{const t=n.metaFields;if(!t&&Object.keys(t).length<1)return;const a=(0,l.select)("block-atfp/translate").getAllowedMetaFields();Object.keys(t).forEach(n=>{if(Object.keys(a).includes(n)){const r=(0,l.select)("block-atfp/translate").getTranslatedString("metaFields",t[n][0],n,o);n.startsWith("_yoast_wpseo_")&&"string"===a[n].inputType?Se({key:n,value:r}):n.startsWith("rank_math_")&&"string"===a[n].inputType?ke({key:n,value:r}):n.startsWith("_seopress_")&&"string"===a[n].inputType?(async t=>{const{key:e,value:a}=t,n=e.replace(/^_/,"")+"_meta";if(document.querySelector("#"+n))switch(e){case"_seopress_titles_title":case"_seopress_titles_desc":case"_seopress_social_fb_title":case"_seopress_social_fb_desc":case"_seopress_social_twitter_title":case"_seopress_social_twitter_desc":jQuery(`#${n}`).val(a),jQuery(`#${n}`).trigger("change");break;case"_seopress_analysis_target_kw":window.target_kw&&window.target_kw instanceof window.Tagify&&window.target_kw.DOM.originalInput.id===n?window.target_kw.addTags(a):(jQuery("#"+n).val(a),jQuery("#"+n).trigger("change"))}})({key:n,value:r}):e({meta:{[n]:r}})}})})(),(()=>{const t=(0,l.select)("block-atfp/translate").getAllowedMetaFields(),e=n.metaFields;window.acf&&acf.getFields().forEach(a=>{const n=JSON.parse(JSON.stringify({key:a.data.key,type:a.data.type,name:a.data.name}));if(a.$el&&a.$el.closest(".acf-field.acf-field-repeater")&&a.$el.closest(".acf-field.acf-field-repeater").length>0){const t=a.$el.closest(".acf-row").data("id"),e=a.$el.closest(".acf-field.acf-field-repeater").data("name");if(t&&""!==t){const a=t.replace("row-","");n.name=e+"_"+a+"_"+n.name}}if(n&&n.key&&Object.keys(t).includes(n.name)){const t=n.name,r=n.type;let s=e[t]&&e[t][0]?e[t][0]:a?.val(),i=(0,l.select)("block-atfp/translate").getTranslatedString("metaFields",s,n.name,o);if(!i||""===i)return;if("wysiwyg"===r&&window.tinymce){const t=a.data.id,e=i.replace(/(\r\n\r\n)/g,"</p><p>");tinymce.get(t)?.setContent(e);const n=document.querySelector(`textarea#${t}`);n&&(n.value=i)}else a.val(i)}})})(),(()=>{const t=n.content;t.length<=0||Object.values(t).forEach(t=>{((t,e)=>{const{select:a}=wp.data,n=a("block-atfp/translate").getBlockRules(),{dispatch:o}=wp.data,{name:r}=t;if(r){let a=t.innerBlocks.map(t=>{if(t.name)return Ee(t,n,e)});const r=ve(t,a,n,e);o("core/block-editor").insertBlock(r)}})(t,o)})})(),a()},Re=({characterCount:t=0,url:e=""})=>{const[a,n]=(0,p.useState)(!1),[o,r]=(0,p.useState)(!1);return""!==e&&(e+="?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=popup"),(0,p.useEffect)(()=>{const t=document.querySelector('button.atfp-translate-button[name="atfp_meta_box_translate"],input#atfp-translate-button[name="atfp_meta_box_translate"]');if(t)return t.addEventListener("click",()=>{n(!0),r(!0)}),()=>{t.removeEventListener("click",()=>{})}},[]),a?React.createElement("div",{id:"atfp-pro-notice-wrapper",className:o?"atfp-active":""},React.createElement("div",{className:"atfp-pro-notice"},React.createElement("div",{className:"atfp-notice-header"},React.createElement("h2",null,"AutoPoly - AI Translation For Polylang"),React.createElement("span",{className:"atfp-close-button",onClick:()=>n(!1),"aria-label":"Close Notice"},"×")),React.createElement("div",{className:"atfp-notice-content"},React.createElement("p",null,"You have reached the character limit of ",React.createElement("strong",null,React.createElement(m,{number:t}))," for your translations. To continue translating beyond this limit, please consider upgrading to ",React.createElement("strong",null,"AutoPoly - AI Translation For Polylang Pro"),".")),React.createElement("div",{className:"atfp-notice-footer"},React.createElement("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"atfp-upgrade-button"},"Upgrade to Pro")))):null},xe=t=>{const e=()=>{const t=document.querySelector(".atfp-body-notice-wrapper");if(t){const e=t.offsetHeight+t.offsetTop;t.closest(".modal-body").style.setProperty("--atfp-notice-wrapper-height",`${e}px`)}};return(0,p.useEffect)(()=>(t.lastNotice&&(e(),window.addEventListener("resize",e)),()=>{window.removeEventListener("resize",e)}),[t.lastNotice]),React.createElement("div",{className:t.className},t.children)},Le=async t=>{const e={widgetsContent:atfp_global_object.elementorData&&"string"==typeof atfp_global_object.elementorData?JSON.parse(atfp_global_object.elementorData):atfp_global_object.elementorData,metaFields:atfp_global_object?.metaFields||{}};atfp_global_object.parent_post_title&&""!==atfp_global_object.parent_post_title&&(e.title=atfp_global_object.parent_post_title),Object.keys(we).forEach(t=>{var e;e={id:t,type:we[t].type},(0,l.dispatch)("block-atfp/translate").allowedMetaFields(e)}),(t=>{const e=(0,l.select)("block-atfp/translate").getAllowedMetaFields(),a=(t,e,n)=>{t(e[n],n),++n<e.length&&a(t,e,n)},n=(t,e)=>{if("string"==typeof e&&""!==e.trim()&&t.length>0){const a=t.join("_atfp_");e&&""!==e&&(0,l.dispatch)("block-atfp/translate").contentSaveSource(a,e)}},o=t=>["title","description","editor","text","content","label"].some(e=>t.toLowerCase().includes(e))||["caption","heading","sub_heading","testimonial_content","testimonial_job","testimonial_name","name"].some(e=>t===e),r=["content_width","title_size","font_size","margin","padding","background","border","color","text_align","font_weight","font_family","line_height","letter_spacing","text_transform","border_radius","box_shadow","opacity","width","height","display","position","z_index","visibility","align","max_width","content_typography_typography","flex_justify_content","title_color","description_color","email_content"],s=(t,e,l=[])=>{const i=t.settings;if(l.push(e),"object"==typeof i&&null!==i&&Object.keys(i).length>0){const t=(t,e)=>{if(!r.some(e=>t.toLowerCase().includes(e))&&(o(t)&&"string"==typeof i[t]&&""!==i[t].trim()&&n([...l,"settings",t],i[t]),Array.isArray(i[t])&&i[t].length>0)){const e=(e,s)=>{"object"==typeof e&&null!==e&&a(a=>{r.includes(a.toLowerCase())||o(a)&&"string"==typeof e[a]&&""!==e[a].trim()&&n([...l,"settings",t,s,a],e[a])},Object.keys(e),0)};a(e,i[t],0)}};a(t,Object.keys(i),0)}if(t.elements&&Array.isArray(t.elements)&&t.elements.length>0){const e=(t,e)=>{s(t,e,[...l,"elements"])};a(e,t.elements,0)}};if(t.widgetsContent&&t.widgetsContent.length>0&&a((t,e)=>{s(t,e,[])},t.widgetsContent,0),t.title&&""!==t.title){const e=atfp_global_object.current_post_id;if(e){const a=elementor?.settings?.page?.model?.get("post_title");a&&""!==a&&a===`Elementor #${e}`&&(0,l.dispatch)("block-atfp/translate").titleSaveSource(t.title)}}var i;i=t.metaFields,Object.keys(i).forEach(t=>{Object.keys(e).includes(t)&&"string"===e[t].inputType&&""!==i[t][0]&&void 0!==i[t][0]&&(0,l.dispatch)("block-atfp/translate").metaFieldsSaveSource(t,i[t][0])})})(e),t.refPostData(e),t.updatePostDataFetch(!0)},Ae=(t,e)=>{for(const a of t){if(a.get("id")===e)return a;const t=a.get("elements").models,n=Ae(t,e);if(n)return n}return null},Ne=({postContent:t,modalClose:e,service:a})=>{const n=elementor.config.document.id,o=[],r=["content_width","title_size","font_size","margin","padding","background","border","color","text_align","font_weight","font_family","line_height","letter_spacing","text_transform","border_radius","box_shadow","opacity","width","height","display","position","z_index","visibility","align","max_width","content_typography_typography","flex_justify_content","title_color","description_color","email_content"],s=t=>["title","description","editor","text","content","label"].some(e=>t.toLowerCase().includes(e))||["caption","heading","sub_heading","testimonial_content","testimonial_job","testimonial_name","name"].some(e=>t===e),i=(t,e,n=[])=>{const c=t.id,p=t.settings;n.push(e),"object"==typeof p&&null!==p&&Object.keys(p).forEach(t=>{if(!r.some(e=>t.toLowerCase().includes(e))){if(s(t)&&"string"==typeof p[t]&&""!==p[t].trim()){const e=n.join("_atfp_")+"_atfp_settings_atfp_"+t,r=(0,l.select)("block-atfp/translate").getTranslatedString("content",p[t],e,a);o.push({ID:c,key:t,translatedContent:r})}Array.isArray(p[t])&&p[t].forEach((e,i)=>{"object"==typeof e&&null!==e&&Object.keys(e).forEach(p=>{if(!r.includes(p.toLowerCase())&&s(p)&&"string"==typeof e[p]&&""!==e[p].trim()){const r=`${t}[${i}].${p}`,s=n.join("_atfp_")+"_atfp_settings_atfp_"+t+"_atfp_"+i+"_atfp_"+p,d=(0,l.select)("block-atfp/translate").getTranslatedString("content",e[p],s,a);o.push({ID:c,key:r,translatedContent:d})}})})}}),t.elements&&Array.isArray(t.elements)&&t.elements.forEach((t,e)=>{i(t,e,[...n,"elements"])})};t.widgetsContent.map((t,e)=>i(t,e,[])),(t=>{t.forEach(t=>{const e=Ae(elementor.elements.models,t.ID);if(e){const a=e.get("settings");a.get(t.key)&&(a.set(t.key,t.translatedContent),e?.renderRemoteServer());const n=t.key.match(/(.+)\[(\d+)\]\.(.+)/);if(n){const[o,r,s,l]=n,i=a.get(r);Array.isArray(i.models)&&i.models[s]&&(i.models[s].attributes[l]=t.translatedContent,a.set(r,i),e?.renderRemoteServer())}}}),$e.internal("document/save/set-is-modified",{status:!0})})(o),((t,e)=>{const a=(0,l.select)("block-atfp/translate").getAllowedMetaFields();!t&&Object.keys(t).length<1||Object.keys(t).forEach(n=>{if(Object.keys(a).includes(n)){const o=(0,l.select)("block-atfp/translate").getTranslatedString("metaFields",t[n][0],n,e);n.startsWith("_yoast_wpseo_")&&"string"===a[n].inputType?Se({key:n,value:o}):n.startsWith("rank_math_")&&"string"===a[n].inputType?ke({key:n,value:o}):n.startsWith("_seopress_")&&"string"===a[n].inputType&&elementor?.settings?.page?.model?.setExternalChange(n,o)}})})(t.metaFields,a),((t,e)=>{if(t&&""!==t){const a=(0,l.select)("block-atfp/translate").getTranslatedString("title",t,null,e);a&&""!==a&&elementor?.settings?.page?.model?.setExternalChange("post_title",a)}})(t.title,a);const c=(()=>{const t=atfp_global_object.elementorData;return wp.data.select("block-atfp/translate").getTranslationEntry().forEach(e=>{const n=e.source,o=e.id,r=e.translatedData,s=e.type;if(!n||""===n||"content"!==s)return;const l=o.split("_atfp_"),i=r[a];let c=null,p=null,d=t;l.forEach(t=>{c=d,p=t,d=d?d[t]:null}),c&&p&&c[p]&&c[p]===n&&(c[p]=i)}),t})(),p={action:atfp_global_object.update_elementor_data,post_id:n,elementor_data:JSON.stringify(c),atfp_nonce:atfp_global_object.ajax_nonce};fetch(atfp_global_object.ajax_url,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json"},body:new URLSearchParams(p)}).then(t=>t.json()).then(t=>{if(t.success){const t=document.querySelector('.atfp-translate-button[name="atfp_meta_box_translate"]');t&&t.setAttribute("title","Translation process completed successfully.")}else console.error("Failed to update Elementor data:",t.data);e()}).catch(t=>{e(),console.error("Error updating Elementor data:",t)})},De=window.atfp_global_object.editor_type,Ie=()=>{let t=new Array;t.push('\x3c!-- The Modal --\x3e<div id="atfp-setting-modal"></div>','<div id="atfp_strings_model" class="modal atfp_custom_model"></div>'),t.forEach(t=>{document.body.insertAdjacentHTML("beforeend",t)})},je=()=>{const t=[];if("gutenberg"===De){"true"===atfp_global_object.postMetaSync&&t.push({className:"atfp-notice atfp-notice-error",message:React.createElement("p",null,(0,i.__)("For accurate custom field translations, please disable the Custom Fields synchronization in ","autopoly-ai-translation-for-polylang"),React.createElement("a",{href:`${atfp_global_object.admin_url}admin.php?page=mlang_settings`,target:"_blank",rel:"noopener noreferrer"},(0,i.__)("Polylang settings","autopoly-ai-translation-for-polylang")),(0,i.__)(". This may affect linked posts or pages.","autopoly-ai-translation-for-polylang"))});const e=(0,l.select)("block-atfp/translate").getBlockRules();e.AtfpBlockParseRules&&0!==Object.keys(e.AtfpBlockParseRules).length||t.push({className:"atfp-notice atfp-notice-error",message:React.createElement("p",null,(0,i.__)("No block rules were found. It appears that the block-rules.JSON file could not be fetched, possibly because it is blocked by your server settings. Please check your server configuration to resolve this issue.","autopoly-ai-translation-for-polylang"))})}const e=t.length;if(t.length>0)return t.map((t,a)=>React.createElement(xe,{className:t.className,key:a,lastNotice:a===e-1},t.message))},Oe=()=>{const[t,e]=(0,p.useState)(!1),a=window.atfp_global_object.target_lang,n=window.atfp_global_object.parent_post_id,o=window.atfp_global_object.current_post_id,r=window.atfp_global_object.post_type;let s,l,c;const d=window.atfp_global_object.source_lang;"elementor"===De?(c='button.atfp-translate-button[name="atfp_meta_box_translate"]',s=Ne,l=Le):"gutenberg"===De&&(c='input#atfp-translate-button[name="atfp_meta_box_translate"]',s=Ce,l=Te);const[u,g]=(0,p.useState)(!1),[m,f]=(0,p.useState)(!0);if((0,p.useEffect)(()=>{if(t){const t=document.querySelector(c);t&&(t.disabled=!0,t.value=(0,i.__)("Already Translated","autopoly-ai-translation-for-polylang"))}},[t]),!d||""===d){const t=document.querySelector(c);return void(t&&(t.title=`Parent ${window.atfp_global_object.post_type} may be deleted.`,t.disabled=!0))}return React.createElement(React.Fragment,null,!t&&d&&""!==d&&React.createElement($t,{contentLoading:m,updatePostDataFetch:t=>{g(t),f(!1)},postDataFetchStatus:u,pageTranslate:t=>{e(t)},postId:n,currentPostId:o,targetLang:a,postType:r,fetchPostData:async t=>{await l(t);const e=wp.data.select("block-atfp/translate").getTranslationEntry();let a=0,n=0,o=0;e.map(t=>{const e=t.source?t.source:"",r=e.split(/(?<=[.!?]+)\s+/).length,s=e.trim().split(/\s+/).filter(t=>/[^\p{L}\p{N}]/.test(t)).length,l=e.length;a+=r,n+=l,o+=s}),wp.data.dispatch("block-atfp/translate").translationInfo({sourceStringCount:a,sourceWordCount:o,sourceCharacterCount:n})},translatePost:s,translateWrpSelector:c,stringModalBodyNotice:je}))},Pe=()=>{const t=jQuery(".MuiButtonGroup-root.MuiButtonGroup-contained").parent(),e=jQuery(t).find(".elementor-button.atfp-translate-button");if(t.length>0&&0===e.length){const e=jQuery('<button class="elementor-button atfp-translate-button" name="atfp_meta_box_translate">Translate</button>');let a=!1;const n=window.atfp_global_object.current_post_id,o=window.atfp_global_object.target_lang,s=localStorage.getItem("atfpElementorConfirmBox");if(s&&"string"==typeof s&&""!==s&&(a=JSON.parse(s)),t.prepend(e),$e.internal("document/save/set-is-modified",{status:!0}),!window.atfp_global_object.translation_data||!window.atfp_global_object.translation_data.total_string_count&&0!==window.atfp_global_object.translation_data.total_string_count)return e.attr("disabled","disabled"),void e.attr("title","Translation data not found.");const l=parseInt(window.atfp_global_object.translation_data.total_character_count);if(l>5e5){const t=document.createElement("div");return t.id="atfp-pro-notice",document.body.appendChild(t),void r.createRoot(document.getElementById("atfp-pro-notice")).render(React.createElement(Re,{characterCount:l,url:window.atfp_global_object.pro_version_url||""}))}if(!window.atfp_global_object.elementorData||""===window.atfp_global_object.elementorData||window.atfp_global_object.elementorData.length<1||elementor.elements.length<1)return a&&a[n+"_"+o]&&(delete a[n+"_"+o],0===Object.keys(a).length?localStorage.removeItem("atfpElementorConfirmBox"):localStorage.setItem("atfpElementorConfirmBox",JSON.stringify(a))),e.attr("disabled","disabled"),void e.attr("title","Translation is not available because there is no Elementor data.");Ie(),r.createRoot(document.getElementById("atfp-setting-modal")).render(React.createElement(Oe,null)),a&&a[n+"_"+o]&&setTimeout(()=>{e.click(),delete a[n+"_"+o],0===Object.keys(a).length?localStorage.removeItem("atfpElementorConfirmBox"):localStorage.setItem("atfpElementorConfirmBox",JSON.stringify(a))},100)}};"gutenberg"===De&&window.addEventListener("load",()=>{Ie();const t=jQuery('input#atfp-translate-button[name="atfp_meta_box_translate"]');if(!window.atfp_global_object.translation_data||!window.atfp_global_object.translation_data.total_string_count&&0!==window.atfp_global_object.translation_data.total_string_count)return t.attr("disabled","disabled"),void t.attr("title","Translation data not found.");const e=parseInt(window.atfp_global_object.translation_data.total_character_count);if(e>5e5){const t=document.createElement("div");return t.id="atfp-pro-notice",document.body.appendChild(t),void r.createRoot(document.getElementById("atfp-pro-notice")).render(React.createElement(Re,{characterCount:e,url:window.atfp_global_object.pro_version_url||""}))}const a=window.atfp_global_object.source_lang;a&&""!==a&&(()=>{const t=document.getElementById("atfp-setting-modal"),e=(()=>{const t=window.atfp_global_object.post_type,e=window.atfp_global_object.target_lang,a=atfp_global_object.languageObject[e].name,n=document.createElement("div");return n.id="atfp-modal-open-warning-wrapper",n.innerHTML=`\n    <div class="modal-container" style="display: flex">\n      <div class="modal-content">\n        <p>${(0,i.sprintf)((0,i.__)("Would you like to duplicate your original %s content and have it automatically translated into %s?","autopoly-ai-translation-for-polylang"),t,a)}</p>\n        <div>\n          <div data-value="yes">${(0,i.__)("Yes","autopoly-ai-translation-for-polylang")}</div>\n          <div data-value="no">${(0,i.__)("No","autopoly-ai-translation-for-polylang")}</div>\n        </div>\n      </div>\n    </div>`,n})();document.body.insertBefore(e,t)})(),r.createRoot(document.getElementById("atfp-setting-modal")).render(React.createElement(Oe,null))}),"elementor"===De&&jQuery(window).on("elementor:init",function(){elementor.on("document:loaded",Pe)})})();
  • automatic-translations-for-polylang/trunk/assets/css/atfp-custom.css

    r3321700 r3388730  
    4343
    4444#atfp-modal-open-warning-wrapper .modal-content div[data-value] {
    45     display: inline-block;
     45    display: inline-flex;
     46    align-items: center;
     47    justify-content: center;
    4648    font-size: 13px;
    47     line-height: 2.15384615;
     49    line-height: 1.3;
    4850    min-height: 30px;
    4951    margin: 0;
     
    185187}
    186188
    187 button.atfpp-error-reload-btn{
     189button.atfp-error-reload-btn{
    188190    background: #0073aa;
    189191    color: #fff !important;
     
    194196}
    195197
    196 button.atfpp-error-reload-btn:hover{
     198button.atfp-error-reload-btn:hover{
    197199    background: #005682;
    198200}
     
    216218
    217219#atfp-setting-modal .atfp-error-modal-box-footer .atfp-error-modal-box-close {
     220    display: inline-flex;
     221    align-items: center;
     222    justify-content: center;
     223    font-size: 1rem;
     224    line-height: 1.3;
     225    min-height: 30px;
     226    margin: 0;
     227    padding: .1rem .4rem;
     228    white-space: nowrap;
     229    border-radius: 3px;
     230    cursor: pointer;
     231    opacity: .7;
    218232    background: #f6f7f7;
    219233    border: 1px solid #c3c4c7;
    220234    color: #50575e;
     235    padding: 5px;
     236    border-radius: 3px;
    221237}
    222238
     
    249265    display: inline-flex;
    250266    align-items: center;
    251     justify-content: center;
    252267}
    253268   
     
    334349    display: flex;
    335350    align-items: center;
    336     font-size: 1rem;
     351    font-size: 16px;
    337352    font-weight: 600;
    338353    margin-block: .5rem;
     
    360375.atfp-setting-modal-body tbody .button{
    361376    width: 123px;
    362     display: inline-block;
     377    display: inline-flex;
     378    align-items: center;
     379    justify-content: center;
    363380    font-size: 13px;
    364     line-height: 2.15384615;
     381    line-height: 1.3;
    365382    min-height: 30px;
    366383    margin: 0;
     
    444461
    445462#atfp-setting-modal .modal-footer .atfp-setting-close {
     463    display: inline-flex;
     464    align-items: center;
     465    justify-content: center;
     466    font-size: 1rem;
     467    line-height: 1.3;
     468    min-height: 30px;
     469    margin: 0;
     470    padding: .1rem .4rem;
     471    white-space: nowrap;
     472    border-radius: 3px;
     473    cursor: pointer;
     474    opacity: .7;
    446475    background: #f6f7f7;
    447476    border: 1px solid #c3c4c7;
    448477    color: #50575e;
     478    padding: 5px;
     479    border-radius: 3px;
    449480}
    450481
     
    468499    margin: 0;
    469500    font-size: 14px;
     501    color: #3c3c3c;
    470502}
    471503
     
    616648}
    617649
     650#atfp_strings_model .save_btn_cont button .updating-text {
     651    display: flex;
     652    align-items: center;
     653    justify-content: center;
     654}
     655
     656#atfp_strings_model .save_btn_cont button .updating-text .dot {
     657    width: 4px;
     658    height: 4px;
     659    border-radius: 999px;
     660    background: #ffffff;
     661    margin-left: 1px;
     662    margin-top: 6px;
     663    opacity: 0.25;
     664    animation: atfp-savingBlink 1.05s infinite ease-in-out;
     665    animation-delay: calc(var(--i) * 0.18s - 1.05s);
     666    will-change: opacity, transform;
     667}
     668
     669@keyframes atfp-savingBlink {
     670    0%,
     671    20% {
     672        opacity: 0.25;
     673        transform: translateY(0);
     674    }
     675
     676    40% {
     677        opacity: 1;
     678        transform: translateY(-1px);
     679    }
     680
     681    60% {
     682        opacity: 0.9;
     683        transform: translateY(0);
     684    }
     685
     686    100% {
     687        opacity: 0.25;
     688        transform: translateY(0);
     689    }
     690}
     691
    618692
    619693.local_ai_translator_btn.button-primary {
     
    622696    color: #fff;
    623697    text-shadow: none;
    624     display: inline-block;
     698    display: inline-flex;
     699    align-items: center;
     700    justify-content: center;
    625701    text-decoration: none;
    626702    font-size: 13px;
    627     line-height: 2.15384615;
     703    line-height: 1.3;
    628704    min-height: 30px;
    629705    margin: 0;
     
    698774    overflow-y: auto;
    699775    overflow-x: hidden;
    700     max-height: calc(100vh - 204px - var(--atfp-notice-wrapper-height,0px));
     776    max-height: calc(100vh - 300px - var(--atfp-notice-wrapper-height,0px));
    701777    width: 100%;
    702778    position: relative;
     
    9661042}
    9671043
    968 #atfp_strings_model #atfp-localAiTranslator-strings-modal .atfp_string_container {
     1044#atfp_strings_model .atfp_string_container {
    9691045    max-height: calc(100vh - 270px - var(--atfp-notice-wrapper-height, 0px));
    9701046    box-shadow: 0 -1px 4px #0000005e inset;
     1047}
     1048
     1049#atfp_strings_model #atfp-yandex-strings-modal .atfp_string_container {
     1050    max-height: calc(100vh - 300px - var(--atfp-notice-wrapper-height, 0px));
    9711051}
    9721052
     
    9751055    margin-block: 16px;
    9761056}
    977 
    9781057
    9791058#atfp-pro-notice-wrapper {
     
    11831262    }
    11841263}
     1264
     1265@media screen and (max-width: 767px) and (min-width: 567px) {
     1266    #atfp-setting-modal .atfp-translator-row .atfp-translator-column {
     1267        width: 100% !important;
     1268    }
     1269
     1270    #atfp-setting-modal .atfp-translator-row:has(> :nth-child(2)) .atfp-translator-column {
     1271        width: calc(50% - (21.3px / 2)) !important;
     1272    }
     1273}
     1274
     1275@media screen and (max-width: 567px) {
     1276    #atfp-setting-modal .atfp-translator-row .atfp-translator-column {
     1277        width: 100% !important;
     1278    }
     1279}
  • automatic-translations-for-polylang/trunk/assets/css/atfp-custom.min.css

    r3321700 r3388730  
    1 :is(#atfp-modal-open-warning-wrapper,#atfp-setting-modal,#atfp_strings_model) .modal-container{display:none;position:fixed;z-index:99999;top:0;width:100%;height:100vh;overflow:hidden;background-color:rgba(0,0,0,.75);justify-content:center;align-items:center;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}:is(#atfp-modal-open-warning-wrapper,#atfp-setting-modal) .modal-content{position:relative;background-color:#fefefe;width:clamp(200px,400px,80%);height:auto;overflow:hidden;border-radius:5px;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);-webkit-animation-name:animatetopsetting;-webkit-animation-duration:.6s;-webkit-animation-fill-mode:forwards;animation-name:animatetopsetting;animation-duration:.6s;animation-fill-mode:forwards;padding-block:16px;color:#000;border-radius:8px}#atfp-modal-open-warning-wrapper .modal-content{padding:16px;text-align:center}#atfp-modal-open-warning-wrapper .modal-content p{font-size:19.2px;font-weight:500}#atfp-modal-open-warning-wrapper .modal-content div[data-value]{display:inline-block;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;box-sizing:border-box;font-family:inherit;font-weight:inherit;vertical-align:top;text-decoration:none;text-shadow:none;text-align:center}#atfp-modal-open-warning-wrapper .modal-content div[data-value=yes]{padding:2px 11px;white-space:nowrap;background:#3db63d;border-color:#33a133;color:#fff}#atfp-modal-open-warning-wrapper .modal-content div[data-value=yes]:hover{background:#37a737;border-color:#238b23}#atfp-modal-open-warning-wrapper .modal-content div[data-value=no]{background:#ee4237;border-color:#dd362b;color:#fff;padding:2px 11px;display:inline-flex;align-items:center}#atfp-modal-open-warning-wrapper .modal-content div[data-value=no]:hover{background:#dd382e;border-color:#c72a20}#atfp-setting-modal .atfp-error-modal-box-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.75);display:flex;justify-content:center;align-items:center;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:99999}#atfp-setting-modal .atfp-error-modal-box{background-color:#fefefe;width:clamp(200px,500px,80%);height:auto;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);border-radius:8px}#atfp-setting-modal .atfp-error-modal-box-header{position:relative}#atfp-setting-modal .atfp-error-modal-box-header h3{height:unset;padding:8px 36px 8px 25px;border:none;background:0 0;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0;color:#000}#atfp-setting-modal .atfp-error-modal-box-header .atfp-error-modal-box-close{right:15px;top:13px;border-radius:0!important;height:30px!important;width:20px!important;position:absolute;font-size:32px;font-weight:700;color:#646970;cursor:pointer}#atfp-setting-modal .atfp-error-modal-box-body h4{margin:0;margin-top:0;margin-bottom:24px;display:block;font-weight:600;padding:0;box-sizing:border-box}#atfp-setting-modal .atfp-error-modal-box-body ol{margin-top:0;margin-bottom:24px;list-style-type:decimal;margin-left:32px;box-sizing:border-box;padding:0}#atfp-setting-modal .atfp-error-modal-box-body ol li{margin-bottom:6px;list-style:decimal}#atfp-setting-modal .atfp-error-modal-box-body p{margin:0;padding:0}#atfp-setting-modal .atfp-error-modal-box-body p *{color:red!important;font-size:16px;box-shadow:unset;outline:unset;border:unset;line-height:1.5}#atfp-setting-modal .atfp-error-modal-box-body p a{color:#2271b1!important;text-decoration:underline}button.atfpp-error-reload-btn{background:#0073aa;color:#fff!important;border:none;border-radius:4px;padding:4px 9px;cursor:pointer}button.atfpp-error-reload-btn:hover{background:#005682}#atfp-setting-modal .atfp-error-modal-box-body{min-height:0;max-height:65vh;height:auto;padding:22px;overflow:auto}#atfp-setting-modal .atfp-error-modal-box-footer{background:0 0;border:none;border-top:1px solid #dcdcde;margin-top:0;padding:16px 22.4px;text-align:end}#atfp-setting-modal .atfp-error-modal-box-footer .atfp-error-modal-box-close{background:#f6f7f7;border:1px solid #c3c4c7;color:#50575e}#atfp-setting-modal .atfp-error-modal-box-footer .atfp-error-modal-box-close:hover{background-color:#e1e1e1;border-color:#c9c9c9}#atfp-setting-modal .modal-content{width:clamp(200px,520px,100vw);padding:0}#atfp-setting-modal .atfp-error-message{margin:0!important;padding:0 0 10px;font-weight:500;font-size:13px;line-height:1.2;color:red;text-align:start}#atfp-setting-modal .atfp-provider-error{background:#ee4237;border-color:#dd362b;color:#fff;padding:2px 11px;display:inline-flex;align-items:center;justify-content:center}#atfp-setting-modal .atfp-provider-error:hover{background:#dd382e;border-color:#c72a20}#atfp-setting-modal .atfp-provider-error img{display:inline-flex;margin-bottom:0!important;margin-top:0!important;filter:invert(1) brightness(2);height:22px!important;margin-right:3px}#atfp-setting-modal .modal-header h2{height:unset;padding:8px 36px 8px 25px;border:none;background:0 0;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0}#atfp-setting-modal .modal-header span.close{right:15px;top:13px;border-radius:0!important;height:30px!important;width:20px!important;position:absolute;font-size:32px;font-weight:700;color:#646970;cursor:pointer}.atfp-setting-modal-body{max-width:100vw;overflow-x:auto}.atfp-setting-modal-body table{width:100%;border-collapse:collapse}.atfp-setting-modal-body thead{background:#f3f3f3}.atfp-setting-modal-body thead th{text-align:left;font-weight:500;font-size:14px;color:#555;padding-block:1rem}.atfp-setting-modal-body thead th:nth-child(1){padding-left:28px}.atfp-setting-modal-body thead th:nth-child(2){padding-left:90px}.atfp-setting-modal-body thead th:nth-child(3){padding-right:25px;text-align:center}.atfp-setting-modal-body tbody tr{border-top:1px solid #eee;height:64px}.atfp-setting-modal-body tbody td.atfp-provider-name{display:flex;align-items:center;font-size:1rem;font-weight:600;margin-block:.5rem}.atfp-setting-modal-body tbody td img{width:45px;margin-right:15px}.atfp-setting-modal-body tbody td:nth-child(1){padding-left:25px}.atfp-setting-modal-body tbody td:nth-child(2){padding-left:90px;padding-right:20px}.atfp-setting-modal-body tbody td:nth-child(3){padding-right:25px;text-align:center}.atfp-setting-modal-body tbody .button{width:123px;display:inline-block;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;box-sizing:border-box;font-family:inherit;font-weight:inherit;vertical-align:top;text-decoration:none;text-shadow:none;text-align:center}.atfp-setting-modal-body tbody .button.atfp-service-btn{padding:2px 11px;white-space:nowrap;background:#3db63d;border-color:#33a133;color:#fff}.atfp-setting-modal-body tbody .button.atfp-service-btn:hover{background:#37a737;border-color:#238b23}.atfp-setting-modal-body tbody .button.atfp-provider-error{background:#ee4237;border-color:#dd362b;color:#fff;padding:2px 11px;display:inline-flex;align-items:center}.atfp-setting-modal-body tbody .button.atfp-provider-error img{display:inline-flex;margin-bottom:0;margin-top:0;filter:invert(1) brightness(2);height:22px;margin-right:3px;width:unset!important}.atfp-setting-modal-body tbody .button.atfp-provider-error:hover{background:#dd382e;border-color:#c72a20}.atfp-setting-modal-body tbody .atfp-doc-icon{display:inline-flex;width:20px;height:26px}.atfp-setting-modal-body tbody .atfp-doc-icon:focus{outline:0;box-shadow:unset}.atfp-setting-modal-body tbody .atfp-doc-icon svg{width:20px;height:28px}#atfp-setting-modal .atfp-translator-row .atfp-translator-footer .atfp-localai-disabled-message:hover{background:red}#atfp-setting-modal .modal-footer{background:0 0;border:none;border-top:1px solid #dcdcde;margin-top:0;padding:16px 22.4px;text-align:end}#atfp-setting-modal .modal-footer .atfp-setting-close{background:#f6f7f7;border:1px solid #c3c4c7;color:#50575e}#atfp-setting-modal .modal-footer .atfp-setting-close:hover{background-color:#e1e1e1;border-color:#c9c9c9}#atfp_strings_model .atfp-notice{box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #c3c4c7;border-left-width:4px;padding:4.8px;margin-top:8px}#atfp_strings_model .atfp-notice p{padding:0;margin:0;font-size:14px}#atfp_strings_model .atfp-notice-info{border-left-color:#72aee6}#atfp_strings_model .atfp-notice-warning{border-left-color:#f0ad4e}#atfp_strings_model .atfp-notice-error{border-left-color:#d9534f}#atfp_strings_model .atfp-notice-success{border-left-color:#5cb85c}#atfp_strings_model .modal-content{position:relative;background-color:#fefefe;width:80%;max-height:calc(100% - 40px);min-height:70vh;overflow:hidden;border-radius:5px;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);-webkit-animation-name:animatetop;-webkit-animation-duration:.6s;animation-name:animatetop;animation-duration:.6s;animation-fill-mode:forwards}@-webkit-keyframes animatetopsetting{from{opacity:0}to{opacity:1}}@keyframes animatetopsetting{from{opacity:0}to{opacity:1}}@-webkit-keyframes animatetop{from{top:-300px;opacity:0}to{top:0;opacity:1}}@keyframes animatetop{from{top:-300px;opacity:0}to{top:0;opacity:1}}#atfp_strings_model .modal-header{padding:2px 16px;background-color:#5cb85c;color:#fff;height:86px;max-height:86px;overflow:hidden;position:relative}#atfp_strings_model .modal-header h2{display:inline-block;font-size:18px;color:#fff;padding:0;margin:18px 159px 5px 0;width:calc(100% - 160px)}button.atfp-setting-close{background:#f6f7f7;border:1px solid #c3c4c7;color:#50575e}button.atfp-setting-close:hover{background-color:#e1e1e1;border-color:#c9c9c9}#atfp_strings_model .modal-header .close{color:#fff;font-size:28px;font-weight:700;position:absolute;right:10px;top:18px;line-height:24px}#atfp_strings_model .modal-header .close:focus,#atfp_strings_model .modal-header .close:hover{color:#000;text-decoration:none;cursor:pointer}#atfp_strings_model .save_btn_cont{margin:8px;position:absolute;top:10px;right:40px}#atfp_strings_model .save_btn_cont button:not([disabled]):before{font-family:dashicons;content:"\f345";display:inline-block;font-size:24px;line-height:26px;vertical-align:middle;left:-20px;position:absolute;color:#fff;animation:moveit 5s infinite;-webkit-animation:moveit 1s infinite}.local_ai_translator_btn.button-primary{background:#2271b1;border-color:#2271b1;color:#fff;text-shadow:none;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;font-family:inherit}.local_ai_translator_btn.button-primary[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;text-decoration:none;text-shadow:none;border:none;min-height:30px;margin:0;padding:0 10px;white-space:nowrap;border-radius:2px;cursor:default}@keyframes moveit{from{left:-22px}to{left:-10px}}#atfp_strings_model .ytstats{padding:0;margin:5px 160px 5px 0;width:calc(100% - 160px)}#atfp_strings_model .ytstats a{color:#fff936}#atfp_strings_model .modal-body{padding:2px 16px}#atfp_strings_model .notice-dismiss{padding:0}#atfp_strings_model h3{width:100%;display:inline-block;font-size:22px;padding:0;color:#5cb85c;margin:0!important}#translate_element{margin-bottom:25px}#atfp_strings_model .atfp_string_container{overflow-y:auto;overflow-x:hidden;max-height:calc(100vh - 204px - var(--atfp-notice-wrapper-height,0px));width:100%;position:relative;color:#3c3c3c;margin-bottom:76px}#atfp_strings_model .atfp_string_container.atfp_empty_string{max-height:calc(100vh - 196px - var(--atfp-notice-wrapper-height,0px));display:flex;align-items:center}#atfp_strings_model .atfp_string_container.atfp_empty_string p{text-align:center;font-size:32px;font-weight:bolder;color:#5cb85c;background:#f5f5f5;padding:16px}#atfp_strings_model .modal-footer{display:flex;align-items:center}#atfp_strings_model .modal-footer .notice.atfp_string_count{display:block;max-width:calc(100% - 165px)!important}#atfp_strings_model .modal-footer .notice.atfp_string_count a{white-space:nowrap}#atfp_strings_model .notice.atfp_string_count{top:unset;left:unset;font-size:16px;background:0 0;border-width:0;margin-left:0;padding-left:0;padding-right:0}#atfp_strings_model .modal-footer .notice.atfp_string_count p{margin:0!important;padding:0!important;font-size:16px}#atfp_strings_model table{border-spacing:0;border-collapse:collapse;width:100%;max-width:100%;table-layout:fixed;padding:0;margin:0}#atfp_strings_model table td:first-child,#atfp_strings_model table th:first-child{width:60px;text-align:center}#atfp_strings_model table td,#atfp_strings_model table th{border:1px solid #ddd;padding:4px;height:26px;text-align:left;white-space:pre-wrap;font-size:12px;line-height:14px;overflow:hidden;vertical-align:middle}#atfp_strings_model .atfp_translate_progress{position:absolute;display:none;top:92px;left:10px;color:#fff;background:rgba(0,0,0,.5);width:calc(100% - 22px);border-radius:3px;height:100%;z-index:9;box-sizing:border-box;font-size:16px;line-height:20px;font-weight:700;text-align:center;padding-top:30px;height:calc(100% - 164px)}#atfp_strings_model .atfp_translate_element_wrapper{display:flex;justify-content:start;align-items:start;column-gap:8px;margin-block:1rem}#atfp_strings_model .atfp_translate_element_wrapper>button{height:34px;pointer-events:none}#atfp_strings_model .modal-footer{padding:2px 16px;background-color:#5cb85c;color:#fff;position:absolute;width:100%;bottom:0;height:66px;max-height:66px;box-sizing:border-box}#yt-widget .yt-listbox__input:not(:checked)~.yt-listbox__text{display:none!important}.atfp-skeleton-loader-wrapper .atfp-skeleton-loader-mini{height:19px;padding:9px;box-sizing:border-box;width:100%;border-radius:3px;background:linear-gradient(90deg,#e0e0e0 25%,#f5f5f5 50%,#e0e0e0 75%);background-size:200% 100%;animation:atfp-shimmer 1.2s infinite linear}.atfp-skeleton-loader-wrapper .translate-widget{display:grid;grid-template-columns:2fr 1fr;gap:10px;height:88px;align-items:center}.atfp-skeleton-loader-wrapper .translate-widget .atfp-skeleton-loader-mini{height:30px;max-width:180px;margin-left:auto}.atfp-skeleton-loader-wrapper .translate-widget .atfp-skeleton-loader-mini:nth-child(1){max-width:280px;margin-left:0;margin-right:auto}.atfp-skeleton-loader-wrapper table .atfp-skeleton-loader-mini{max-width:80%;margin:.3rem auto}#atfp_strings_model.atfp_fetch_error .atfp_string_container{display:flex;justify-content:center;align-items:center}#atfp_strings_model.atfp_fetch_error :where(.save_btn_cont,table#stringTemplate){display:none}#atfp_strings_model.atfp_fetch_error span.atfp_string_error_msg{color:red;font-size:24px;padding:32px}body>div.skiptranslate iframe.skiptranslate[frameborder][src][style="visibility:visible"]{visibility:hidden!important}.atfp-review-meta-box{text-align:center;box-shadow:0 0 10px rgba(0,0,0,.1882352941);padding:10px 0!important;border-radius:5px!important}.atfp-review-meta-box p{margin:0}.atfp-review-meta-box p a{margin-top:8px}.atfp-review-meta-box p a span{color:#ffb900!important;margin-left:5px}.atfp-loader-skeleton{position:absolute;height:100%;width:100%;overflow:hidden;background-color:#e0e0e0;border-radius:4px;top:0;left:0;opacity:.9}.atfp-loader-skeleton::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,#e0e0e0 25%,#f5f5f5 50%,#e0e0e0 75%);background-size:200% 100%;animation:atfp-shimmer 1.5s infinite linear}@keyframes atfp-shimmer{0%{background-position:100%}100%{background-position:-100%}}:where(#atfp-localAiTranslator-strings-modal,#atfp-yandex-strings-modal) .translator-widget{justify-content:space-between;align-items:center}#atfp_strings_model #atfp-localAiTranslator-strings-modal h3{margin:20px 0}#atfp_strings_model #atfp-localAiTranslator-strings-modal .atfp_string_container{max-height:calc(100vh - 270px - var(--atfp-notice-wrapper-height,0px));box-shadow:0 -1px 4px #0000005e inset}#atfp_strings_model .react-loading-skeleton-atfp{height:calc(100vh - 235px - var(--atfp-notice-wrapper-height,0px))!important;margin-block:16px}#atfp-pro-notice-wrapper{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;display:flex;height:100%;justify-content:center;align-items:center;background-color:rgba(34,34,34,.7);border-radius:10px;box-shadow:0 0 15px rgba(0,0,0,.2);z-index:9999;opacity:0;transition:opacity .5s ease;padding:16px;color:#000}#atfp-pro-notice-wrapper.atfp-active{opacity:1}#atfp-pro-notice-wrapper .atfp-pro-notice{position:relative;top:0;left:0;max-width:500px;background:#fff;border-radius:10px;overflow:hidden}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-header h2{height:unset;padding:8px 36px 8px 25px;border:none;background:0 0;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-header .atfp-close-button{right:15px;top:13px;border-radius:0!important;height:30px!important;width:20px!important;position:absolute;font-size:32px;font-weight:700;color:#646970;cursor:pointer}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-content{margin:15px 20px;font-size:16px;color:#3c3c3c;line-height:18px}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-content p{font-size:16px;line-height:18px;margin:0!important;padding:0!important}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-footer{padding:15px 20px;border-top:1px solid #dcdcde}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-footer .atfp-upgrade-button{background:#db352b;border-color:#dd362b;color:#fff;padding:2px 11px;align-items:center;margin-inline:auto;align-self:center;justify-content:center;width:123px;display:inline-block;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;box-sizing:border-box;font-family:inherit;font-weight:inherit;vertical-align:top;text-decoration:none;text-shadow:none;text-align:center}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-footer .atfp-upgrade-button:hover{background:#dd382e;border-color:#c72a20}#atfp-setting-modal .atfp-tooltip-element{position:relative;overflow:visible;cursor:pointer;white-space:nowrap}#atfp-setting-modal .atfp-tooltip-element .atfp-tooltip{display:block;font-size:12.8px;position:absolute;background:#5cb85c;color:#fff!important;padding:3.2px 8px;border-radius:4px;top:0;left:20px;right:20px;margin:auto;opacity:0;width:121px;white-space:nowrap}#atfp-setting-modal .atfp-tooltip-element .atfp-tooltip.atfp-tooltip-active{-webkit-animation:atfp-slide-up .15s cubic-bezier(.51,.92,.265,1.55) both;animation:atfp-slide-up .15s cubic-bezier(.51,.92,.265,1.55) both}#atfp-setting-modal .atfp-tooltip-element .atfp-tooltip:after{content:"";position:absolute;top:98%;left:50%;margin-left:-8px;width:0;height:0;border-top:8px solid #5cb85c;border-right:8px solid transparent;border-left:8px solid transparent}body.rtl #atfp-setting-modal .modal-header h2{padding:8px 25px 8px 36px}body.rtl #atfp_strings_model .modal-header .close{left:10px;right:unset}body.rtl #atfp_strings_model .modal-header h2{margin:18px 0 5px 159px}body.rtl #atfp-setting-modal .modal-header span.close{left:15px;right:unset}body.rtl #atfp_strings_model .save_btn_cont{left:40px;right:unset}@-webkit-keyframes atfp-slide-up{0%{transform:translateY(0) scale(.8);opacity:0}100%{transform:translateY(-35px) scale(1);opacity:1}}@keyframes atfp-slide-up{0%{transform:translateY(0) scale(.8);opacity:0}100%{transform:translateY(-35px) scale(1);opacity:1}}
     1:is(#atfp-modal-open-warning-wrapper,#atfp-setting-modal,#atfp_strings_model) .modal-container{display:none;position:fixed;z-index:99999;top:0;width:100%;height:100vh;overflow:hidden;background-color:rgba(0,0,0,.75);justify-content:center;align-items:center;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}:is(#atfp-modal-open-warning-wrapper,#atfp-setting-modal) .modal-content{position:relative;background-color:#fefefe;width:clamp(200px,400px,80%);height:auto;overflow:hidden;border-radius:5px;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);-webkit-animation-name:animatetopsetting;-webkit-animation-duration:.6s;-webkit-animation-fill-mode:forwards;animation-name:animatetopsetting;animation-duration:.6s;animation-fill-mode:forwards;padding-block:16px;color:#000;border-radius:8px}#atfp-modal-open-warning-wrapper .modal-content{padding:16px;text-align:center}#atfp-modal-open-warning-wrapper .modal-content p{font-size:19.2px;font-weight:500}#atfp-modal-open-warning-wrapper .modal-content div[data-value]{display:inline-flex;align-items:center;justify-content:center;font-size:13px;line-height:1.3;min-height:30px;margin:0;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;box-sizing:border-box;font-family:inherit;font-weight:inherit;vertical-align:top;text-decoration:none;text-shadow:none;text-align:center}#atfp-modal-open-warning-wrapper .modal-content div[data-value=yes]{padding:2px 11px;white-space:nowrap;background:#3db63d;border-color:#33a133;color:#fff}#atfp-modal-open-warning-wrapper .modal-content div[data-value=yes]:hover{background:#37a737;border-color:#238b23}#atfp-modal-open-warning-wrapper .modal-content div[data-value=no]{background:#ee4237;border-color:#dd362b;color:#fff;padding:2px 11px;display:inline-flex;align-items:center}#atfp-modal-open-warning-wrapper .modal-content div[data-value=no]:hover{background:#dd382e;border-color:#c72a20}#atfp-setting-modal .atfp-error-modal-box-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.75);display:flex;justify-content:center;align-items:center;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:99999}#atfp-setting-modal .atfp-error-modal-box{background-color:#fefefe;width:clamp(200px,500px,80%);height:auto;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);border-radius:8px}#atfp-setting-modal .atfp-error-modal-box-header{position:relative}#atfp-setting-modal .atfp-error-modal-box-header h3{height:unset;padding:8px 36px 8px 25px;border:none;background:0 0;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0;color:#000}#atfp-setting-modal .atfp-error-modal-box-header .atfp-error-modal-box-close{right:15px;top:13px;border-radius:0!important;height:30px!important;width:20px!important;position:absolute;font-size:32px;font-weight:700;color:#646970;cursor:pointer}#atfp-setting-modal .atfp-error-modal-box-body h4{margin:0;margin-top:0;margin-bottom:24px;display:block;font-weight:600;padding:0;box-sizing:border-box}#atfp-setting-modal .atfp-error-modal-box-body ol{margin-top:0;margin-bottom:24px;list-style-type:decimal;margin-left:32px;box-sizing:border-box;padding:0}#atfp-setting-modal .atfp-error-modal-box-body ol li{margin-bottom:6px;list-style:decimal}#atfp-setting-modal .atfp-error-modal-box-body p{margin:0;padding:0}#atfp-setting-modal .atfp-error-modal-box-body p *{color:red!important;font-size:16px;box-shadow:unset;outline:unset;border:unset;line-height:1.5}#atfp-setting-modal .atfp-error-modal-box-body p a{color:#2271b1!important;text-decoration:underline}button.atfp-error-reload-btn{background:#0073aa;color:#fff!important;border:none;border-radius:4px;padding:4px 9px;cursor:pointer}button.atfp-error-reload-btn:hover{background:#005682}#atfp-setting-modal .atfp-error-modal-box-body{min-height:0;max-height:65vh;height:auto;padding:22px;overflow:auto}#atfp-setting-modal .atfp-error-modal-box-footer{background:0 0;border:none;border-top:1px solid #dcdcde;margin-top:0;padding:16px 22.4px;text-align:end}#atfp-setting-modal .atfp-error-modal-box-footer .atfp-error-modal-box-close{display:inline-flex;align-items:center;justify-content:center;font-size:1rem;line-height:1.3;min-height:30px;margin:0;padding:.1rem .4rem;white-space:nowrap;border-radius:3px;cursor:pointer;opacity:.7;background:#f6f7f7;border:1px solid #c3c4c7;color:#50575e;padding:5px;border-radius:3px}#atfp-setting-modal .atfp-error-modal-box-footer .atfp-error-modal-box-close:hover{background-color:#e1e1e1;border-color:#c9c9c9}#atfp-setting-modal .modal-content{width:clamp(200px,520px,100vw);padding:0}#atfp-setting-modal .atfp-error-message{margin:0!important;padding:0 0 10px;font-weight:500;font-size:13px;line-height:1.2;color:red;text-align:start}#atfp-setting-modal .atfp-provider-error{background:#ee4237;border-color:#dd362b;color:#fff;padding:2px 11px;display:inline-flex;align-items:center}#atfp-setting-modal .atfp-provider-error:hover{background:#dd382e;border-color:#c72a20}#atfp-setting-modal .atfp-provider-error img{display:inline-flex;margin-bottom:0!important;margin-top:0!important;filter:invert(1) brightness(2);height:22px!important;margin-right:3px}#atfp-setting-modal .modal-header h2{height:unset;padding:8px 36px 8px 25px;border:none;background:0 0;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0}#atfp-setting-modal .modal-header span.close{right:15px;top:13px;border-radius:0!important;height:30px!important;width:20px!important;position:absolute;font-size:32px;font-weight:700;color:#646970;cursor:pointer}.atfp-setting-modal-body{max-width:100vw;overflow-x:auto}.atfp-setting-modal-body table{width:100%;border-collapse:collapse}.atfp-setting-modal-body thead{background:#f3f3f3}.atfp-setting-modal-body thead th{text-align:left;font-weight:500;font-size:14px;color:#555;padding-block:1rem}.atfp-setting-modal-body thead th:nth-child(1){padding-left:28px}.atfp-setting-modal-body thead th:nth-child(2){padding-left:90px}.atfp-setting-modal-body thead th:nth-child(3){padding-right:25px;text-align:center}.atfp-setting-modal-body tbody tr{border-top:1px solid #eee;height:64px}.atfp-setting-modal-body tbody td.atfp-provider-name{display:flex;align-items:center;font-size:16px;font-weight:600;margin-block:.5rem}.atfp-setting-modal-body tbody td img{width:45px;margin-right:15px}.atfp-setting-modal-body tbody td:nth-child(1){padding-left:25px}.atfp-setting-modal-body tbody td:nth-child(2){padding-left:90px;padding-right:20px}.atfp-setting-modal-body tbody td:nth-child(3){padding-right:25px;text-align:center}.atfp-setting-modal-body tbody .button{width:123px;display:inline-flex;align-items:center;justify-content:center;font-size:13px;line-height:1.3;min-height:30px;margin:0;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;box-sizing:border-box;font-family:inherit;font-weight:inherit;vertical-align:top;text-decoration:none;text-shadow:none;text-align:center}.atfp-setting-modal-body tbody .button.atfp-service-btn{padding:2px 11px;white-space:nowrap;background:#3db63d;border-color:#33a133;color:#fff}.atfp-setting-modal-body tbody .button.atfp-service-btn:hover{background:#37a737;border-color:#238b23}.atfp-setting-modal-body tbody .button.atfp-provider-error{background:#ee4237;border-color:#dd362b;color:#fff;padding:2px 11px;display:inline-flex;align-items:center}.atfp-setting-modal-body tbody .button.atfp-provider-error img{display:inline-flex;margin-bottom:0;margin-top:0;filter:invert(1) brightness(2);height:22px;margin-right:3px;width:unset!important}.atfp-setting-modal-body tbody .button.atfp-provider-error:hover{background:#dd382e;border-color:#c72a20}.atfp-setting-modal-body tbody .atfp-doc-icon{display:inline-flex;width:20px;height:26px}.atfp-setting-modal-body tbody .atfp-doc-icon:focus{outline:0;box-shadow:unset}.atfp-setting-modal-body tbody .atfp-doc-icon svg{width:20px;height:28px}#atfp-setting-modal .atfp-translator-row .atfp-translator-footer .atfp-localai-disabled-message:hover{background:red}#atfp-setting-modal .modal-footer{background:0 0;border:none;border-top:1px solid #dcdcde;margin-top:0;padding:16px 22.4px;text-align:end}#atfp-setting-modal .modal-footer .atfp-setting-close{display:inline-flex;align-items:center;justify-content:center;font-size:1rem;line-height:1.3;min-height:30px;margin:0;padding:.1rem .4rem;white-space:nowrap;border-radius:3px;cursor:pointer;opacity:.7;background:#f6f7f7;border:1px solid #c3c4c7;color:#50575e;padding:5px;border-radius:3px}#atfp-setting-modal .modal-footer .atfp-setting-close:hover{background-color:#e1e1e1;border-color:#c9c9c9}#atfp_strings_model .atfp-notice{box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #c3c4c7;border-left-width:4px;padding:4.8px;margin-top:8px}#atfp_strings_model .atfp-notice p{padding:0;margin:0;font-size:14px;color:#3c3c3c}#atfp_strings_model .atfp-notice-info{border-left-color:#72aee6}#atfp_strings_model .atfp-notice-warning{border-left-color:#f0ad4e}#atfp_strings_model .atfp-notice-error{border-left-color:#d9534f}#atfp_strings_model .atfp-notice-success{border-left-color:#5cb85c}#atfp_strings_model .modal-content{position:relative;background-color:#fefefe;width:80%;max-height:calc(100% - 40px);min-height:70vh;overflow:hidden;border-radius:5px;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);-webkit-animation-name:animatetop;-webkit-animation-duration:.6s;animation-name:animatetop;animation-duration:.6s;animation-fill-mode:forwards}@-webkit-keyframes animatetopsetting{from{opacity:0}to{opacity:1}}@keyframes animatetopsetting{from{opacity:0}to{opacity:1}}@-webkit-keyframes animatetop{from{top:-300px;opacity:0}to{top:0;opacity:1}}@keyframes animatetop{from{top:-300px;opacity:0}to{top:0;opacity:1}}#atfp_strings_model .modal-header{padding:2px 16px;background-color:#5cb85c;color:#fff;height:86px;max-height:86px;overflow:hidden;position:relative}#atfp_strings_model .modal-header h2{display:inline-block;font-size:18px;color:#fff;padding:0;margin:18px 159px 5px 0;width:calc(100% - 160px)}button.atfp-setting-close{background:#f6f7f7;border:1px solid #c3c4c7;color:#50575e}button.atfp-setting-close:hover{background-color:#e1e1e1;border-color:#c9c9c9}#atfp_strings_model .modal-header .close{color:#fff;font-size:28px;font-weight:700;position:absolute;right:10px;top:18px;line-height:24px}#atfp_strings_model .modal-header .close:focus,#atfp_strings_model .modal-header .close:hover{color:#000;text-decoration:none;cursor:pointer}#atfp_strings_model .save_btn_cont{margin:8px;position:absolute;top:10px;right:40px}#atfp_strings_model .save_btn_cont button:not([disabled]):before{font-family:dashicons;content:"\f345";display:inline-block;font-size:24px;line-height:26px;vertical-align:middle;left:-20px;position:absolute;color:#fff;animation:moveit 5s infinite;-webkit-animation:moveit 1s infinite}#atfp_strings_model .save_btn_cont button .updating-text{display:flex;align-items:center;justify-content:center}#atfp_strings_model .save_btn_cont button .updating-text .dot{width:4px;height:4px;border-radius:999px;background:#fff;margin-left:1px;margin-top:6px;opacity:.25;animation:atfp-savingBlink 1.05s infinite ease-in-out;animation-delay:calc(var(--i) * .18s - 1.05s);will-change:opacity,transform}@keyframes atfp-savingBlink{0%,20%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-1px)}60%{opacity:.9;transform:translateY(0)}100%{opacity:.25;transform:translateY(0)}}.local_ai_translator_btn.button-primary{background:#2271b1;border-color:#2271b1;color:#fff;text-shadow:none;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-size:13px;line-height:1.3;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;font-family:inherit}.local_ai_translator_btn.button-primary[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;text-decoration:none;text-shadow:none;border:none;min-height:30px;margin:0;padding:0 10px;white-space:nowrap;border-radius:2px;cursor:default}@keyframes moveit{from{left:-22px}to{left:-10px}}#atfp_strings_model .ytstats{padding:0;margin:5px 160px 5px 0;width:calc(100% - 160px)}#atfp_strings_model .ytstats a{color:#fff936}#atfp_strings_model .modal-body{padding:2px 16px}#atfp_strings_model .notice-dismiss{padding:0}#atfp_strings_model h3{width:100%;display:inline-block;font-size:22px;padding:0;color:#5cb85c;margin:0!important}#translate_element{margin-bottom:25px}#atfp_strings_model .atfp_string_container{overflow-y:auto;overflow-x:hidden;max-height:calc(100vh - 300px - var(--atfp-notice-wrapper-height,0px));width:100%;position:relative;color:#3c3c3c;margin-bottom:76px}#atfp_strings_model .atfp_string_container.atfp_empty_string{max-height:calc(100vh - 196px - var(--atfp-notice-wrapper-height,0px));display:flex;align-items:center}#atfp_strings_model .atfp_string_container.atfp_empty_string p{text-align:center;font-size:32px;font-weight:bolder;color:#5cb85c;background:#f5f5f5;padding:16px}#atfp_strings_model .modal-footer{display:flex;align-items:center}#atfp_strings_model .modal-footer .notice.atfp_string_count{display:block;max-width:calc(100% - 165px)!important}#atfp_strings_model .modal-footer .notice.atfp_string_count a{white-space:nowrap}#atfp_strings_model .notice.atfp_string_count{top:unset;left:unset;font-size:16px;background:0 0;border-width:0;margin-left:0;padding-left:0;padding-right:0}#atfp_strings_model .modal-footer .notice.atfp_string_count p{margin:0!important;padding:0!important;font-size:16px}#atfp_strings_model table{border-spacing:0;border-collapse:collapse;width:100%;max-width:100%;table-layout:fixed;padding:0;margin:0}#atfp_strings_model table td:first-child,#atfp_strings_model table th:first-child{width:60px;text-align:center}#atfp_strings_model table td,#atfp_strings_model table th{border:1px solid #ddd;padding:4px;height:26px;text-align:left;white-space:pre-wrap;font-size:12px;line-height:14px;overflow:hidden;vertical-align:middle}#atfp_strings_model .atfp_translate_progress{position:absolute;display:none;top:92px;left:10px;color:#fff;background:rgba(0,0,0,.5);width:calc(100% - 22px);border-radius:3px;height:100%;z-index:9;box-sizing:border-box;font-size:16px;line-height:20px;font-weight:700;text-align:center;padding-top:30px;height:calc(100% - 164px)}#atfp_strings_model .atfp_translate_element_wrapper{display:flex;justify-content:start;align-items:start;column-gap:8px;margin-block:1rem}#atfp_strings_model .atfp_translate_element_wrapper>button{height:34px;pointer-events:none}#atfp_strings_model .modal-footer{padding:2px 16px;background-color:#5cb85c;color:#fff;position:absolute;width:100%;bottom:0;height:66px;max-height:66px;box-sizing:border-box}#yt-widget .yt-listbox__input:not(:checked)~.yt-listbox__text{display:none!important}.atfp-skeleton-loader-wrapper .atfp-skeleton-loader-mini{height:19px;padding:9px;box-sizing:border-box;width:100%;border-radius:3px;background:linear-gradient(90deg,#e0e0e0 25%,#f5f5f5 50%,#e0e0e0 75%);background-size:200% 100%;animation:atfp-shimmer 1.2s infinite linear}.atfp-skeleton-loader-wrapper .translate-widget{display:grid;grid-template-columns:2fr 1fr;gap:10px;height:88px;align-items:center}.atfp-skeleton-loader-wrapper .translate-widget .atfp-skeleton-loader-mini{height:30px;max-width:180px;margin-left:auto}.atfp-skeleton-loader-wrapper .translate-widget .atfp-skeleton-loader-mini:nth-child(1){max-width:280px;margin-left:0;margin-right:auto}.atfp-skeleton-loader-wrapper table .atfp-skeleton-loader-mini{max-width:80%;margin:.3rem auto}#atfp_strings_model.atfp_fetch_error .atfp_string_container{display:flex;justify-content:center;align-items:center}#atfp_strings_model.atfp_fetch_error :where(.save_btn_cont,table#stringTemplate){display:none}#atfp_strings_model.atfp_fetch_error span.atfp_string_error_msg{color:red;font-size:24px;padding:32px}body>div.skiptranslate iframe.skiptranslate[frameborder][src][style="visibility:visible"]{visibility:hidden!important}.atfp-review-meta-box{text-align:center;box-shadow:0 0 10px rgba(0,0,0,.1882352941);padding:10px 0!important;border-radius:5px!important}.atfp-review-meta-box p{margin:0}.atfp-review-meta-box p a{margin-top:8px}.atfp-review-meta-box p a span{color:#ffb900!important;margin-left:5px}.atfp-loader-skeleton{position:absolute;height:100%;width:100%;overflow:hidden;background-color:#e0e0e0;border-radius:4px;top:0;left:0;opacity:.9}.atfp-loader-skeleton::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,#e0e0e0 25%,#f5f5f5 50%,#e0e0e0 75%);background-size:200% 100%;animation:atfp-shimmer 1.5s infinite linear}@keyframes atfp-shimmer{0%{background-position:100%}100%{background-position:-100%}}:where(#atfp-localAiTranslator-strings-modal,#atfp-yandex-strings-modal) .translator-widget{justify-content:space-between;align-items:center}#atfp_strings_model #atfp-localAiTranslator-strings-modal h3{margin:20px 0}#atfp_strings_model .atfp_string_container{max-height:calc(100vh - 270px - var(--atfp-notice-wrapper-height,0px));box-shadow:0 -1px 4px #0000005e inset}#atfp_strings_model #atfp-yandex-strings-modal .atfp_string_container{max-height:calc(100vh - 300px - var(--atfp-notice-wrapper-height,0px))}#atfp_strings_model .react-loading-skeleton-atfp{height:calc(100vh - 235px - var(--atfp-notice-wrapper-height,0px))!important;margin-block:16px}#atfp-pro-notice-wrapper{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;display:flex;height:100%;justify-content:center;align-items:center;background-color:rgba(34,34,34,.7);border-radius:10px;box-shadow:0 0 15px rgba(0,0,0,.2);z-index:9999;opacity:0;transition:opacity .5s ease;padding:16px;color:#000}#atfp-pro-notice-wrapper.atfp-active{opacity:1}#atfp-pro-notice-wrapper .atfp-pro-notice{position:relative;top:0;left:0;max-width:500px;background:#fff;border-radius:10px;overflow:hidden}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-header h2{height:unset;padding:8px 36px 8px 25px;border:none;background:0 0;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-header .atfp-close-button{right:15px;top:13px;border-radius:0!important;height:30px!important;width:20px!important;position:absolute;font-size:32px;font-weight:700;color:#646970;cursor:pointer}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-content{margin:15px 20px;font-size:16px;color:#3c3c3c;line-height:18px}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-content p{font-size:16px;line-height:18px;margin:0!important;padding:0!important}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-footer{padding:15px 20px;border-top:1px solid #dcdcde}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-footer .atfp-upgrade-button{background:#db352b;border-color:#dd362b;color:#fff;padding:2px 11px;align-items:center;margin-inline:auto;align-self:center;justify-content:center;width:123px;display:inline-block;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;box-sizing:border-box;font-family:inherit;font-weight:inherit;vertical-align:top;text-decoration:none;text-shadow:none;text-align:center}#atfp-pro-notice-wrapper .atfp-pro-notice .atfp-notice-footer .atfp-upgrade-button:hover{background:#dd382e;border-color:#c72a20}#atfp-setting-modal .atfp-tooltip-element{position:relative;overflow:visible;cursor:pointer;white-space:nowrap}#atfp-setting-modal .atfp-tooltip-element .atfp-tooltip{display:block;font-size:12.8px;position:absolute;background:#5cb85c;color:#fff!important;padding:3.2px 8px;border-radius:4px;top:0;left:20px;right:20px;margin:auto;opacity:0;width:121px;white-space:nowrap}#atfp-setting-modal .atfp-tooltip-element .atfp-tooltip.atfp-tooltip-active{-webkit-animation:atfp-slide-up .15s cubic-bezier(.51,.92,.265,1.55) both;animation:atfp-slide-up .15s cubic-bezier(.51,.92,.265,1.55) both}#atfp-setting-modal .atfp-tooltip-element .atfp-tooltip:after{content:"";position:absolute;top:98%;left:50%;margin-left:-8px;width:0;height:0;border-top:8px solid #5cb85c;border-right:8px solid transparent;border-left:8px solid transparent}body.rtl #atfp-setting-modal .modal-header h2{padding:8px 25px 8px 36px}body.rtl #atfp_strings_model .modal-header .close{left:10px;right:unset}body.rtl #atfp_strings_model .modal-header h2{margin:18px 0 5px 159px}body.rtl #atfp-setting-modal .modal-header span.close{left:15px;right:unset}body.rtl #atfp_strings_model .save_btn_cont{left:40px;right:unset}@-webkit-keyframes atfp-slide-up{0%{transform:translateY(0) scale(.8);opacity:0}100%{transform:translateY(-35px) scale(1);opacity:1}}@keyframes atfp-slide-up{0%{transform:translateY(0) scale(.8);opacity:0}100%{transform:translateY(-35px) scale(1);opacity:1}}@media screen and (max-width:767px) and (min-width:567px){#atfp-setting-modal .atfp-translator-row .atfp-translator-column{width:100%!important}#atfp-setting-modal .atfp-translator-row:has(>:nth-child(2)) .atfp-translator-column{width:calc(50% - (21.3px / 2))!important}}@media screen and (max-width:567px){#atfp-setting-modal .atfp-translator-row .atfp-translator-column{width:100%!important}}
  • automatic-translations-for-polylang/trunk/assets/css/atfp-elementor-translate.css

    r3270250 r3388730  
    1     button.elementor-button.atfp-translate-button:enabled {
    2         border-radius: 0px;
    3         color: rgb(12, 13, 14);
    4         background-color: #F0ABFC
    5     }
     1button.elementor-button.atfp-translate-button:enabled {
     2    border-radius: 0px;
     3    color: rgb(12, 13, 14);
     4    background-color: #F0ABFC
     5}
    66
    7     button.elementor-button.atfp-translate-button:enabled:hover {
    8         background-color: rgb(235, 142, 251);
    9     }
     7button.elementor-button.atfp-translate-button:enabled:hover {
     8    background-color: rgb(235, 142, 251);
     9}
    1010
    11     button.elementor-button.atfp-translate-button:disabled {
    12         cursor: default;
    13         border-radius: 0px;
    14         color: rgb(12, 13, 14);
    15     }
     11button.elementor-button.atfp-translate-button:disabled {
     12    cursor: default;
     13    border-radius: 0px;
     14    color: rgb(12, 13, 14);
     15}
    1616
    17     /* Footer Close Button */
    18     button.atfp-setting-close {
    19         margin-top: 14.4px;
    20         font-size: 16px;
    21         padding: 1.6px 6.4px;
    22         cursor: pointer;
    23         opacity: .7;
    24     }
     17/* Footer Close Button */
     18button.atfp-setting-close {
     19    margin-top: .9rem;
     20    font-size: 1rem;
     21    padding: .1rem .4rem;
     22    cursor: pointer;
     23    opacity: .7;
     24}
    2525
    26     button.atfp-setting-close:hover {
    27         opacity: 1;
    28     }
     26button.atfp-setting-close:hover {
     27    opacity: 1;
     28}
    2929
    30     /* ******Popup***** */
     30/* ******Popup***** */
    3131
    32     .save_it.button-primary[disabled] {
    33         color: #a7aaad !important;
    34         background: #f6f7f7 !important;
    35         border-color: #dcdcde !important;
    36         box-shadow: none !important;
    37         text-shadow: none !important;
    38         cursor: default;
    39         padding: 8px 12px;
    40         border: none;
    41         border-radius: 2px;
    42     }
     32.save_it.button-primary[disabled] {
     33    color: #a7aaad !important;
     34    background: #f6f7f7 !important;
     35    border-color: #dcdcde !important;
     36    box-shadow: none !important;
     37    text-shadow: none !important;
     38    cursor: default;
     39    padding: 8px 12px;
     40    border: none;
     41    border-radius: 2px;
     42}
    4343
    44     .save_it.button-primary {
    45         background: #2271b1;
    46         border-color: #2271b1;
    47         color: #fff;
    48         text-decoration: none;
    49         text-shadow: none;
    50         padding: 8px 12px;
    51         border: none;
    52         border-radius: 2px;
    53         cursor: pointer;
    54     }
     44.save_it.button-primary {
     45    background: #2271b1;
     46    border-color: #2271b1;
     47    color: #fff;
     48    text-decoration: none;
     49    text-shadow: none;
     50    padding: 8px 12px;
     51    border: none;
     52    border-radius: 2px;
     53    cursor: pointer;
     54}
    5555
    56     #atfp_strings_model .save_btn_cont button:not([disabled])::before {
    57         line-height: 14px !important;
    58     }
     56#atfp_strings_model .save_btn_cont button:not([disabled])::before {
     57    line-height: 14px !important;
     58}
  • automatic-translations-for-polylang/trunk/assets/css/atfp-elementor-translate.min.css

    r3270250 r3388730  
    1 button.elementor-button.atfp-translate-button:enabled{border-radius:0;color:#0c0d0e;background-color:#f0abfc}button.elementor-button.atfp-translate-button:enabled:hover{background-color:#eb8efb}button.elementor-button.atfp-translate-button:disabled{cursor:default;border-radius:0;color:#0c0d0e}button.atfp-setting-close{margin-top:14.4px;font-size:16px;padding:1.6px 6.4px;cursor:pointer;opacity:.7}button.atfp-setting-close:hover{opacity:1}.save_it.button-primary[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;box-shadow:none!important;text-shadow:none!important;cursor:default;padding:8px 12px;border:none;border-radius:2px}.save_it.button-primary{background:#2271b1;border-color:#2271b1;color:#fff;text-decoration:none;text-shadow:none;padding:8px 12px;border:none;border-radius:2px;cursor:pointer}#atfp_strings_model .save_btn_cont button:not([disabled])::before{line-height:14px!important}
     1button.elementor-button.atfp-translate-button:enabled{border-radius:0;color:#0c0d0e;background-color:#f0abfc}button.elementor-button.atfp-translate-button:enabled:hover{background-color:#eb8efb}button.elementor-button.atfp-translate-button:disabled{cursor:default;border-radius:0;color:#0c0d0e}button.atfp-setting-close{margin-top:.9rem;font-size:1rem;padding:.1rem .4rem;cursor:pointer;opacity:.7}button.atfp-setting-close:hover{opacity:1}.save_it.button-primary[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;box-shadow:none!important;text-shadow:none!important;cursor:default;padding:8px 12px;border:none;border-radius:2px}.save_it.button-primary{background:#2271b1;border-color:#2271b1;color:#fff;text-decoration:none;text-shadow:none;padding:8px 12px;border:none;border-radius:2px;cursor:pointer}#atfp_strings_model .save_btn_cont button:not([disabled])::before{line-height:14px!important}
  • automatic-translations-for-polylang/trunk/assets/js/atfp-supported-block.js

    r3308442 r3388730  
    3131        }
    3232
     33        const length = e.dt.page.info().length;
     34        const page = e.dt.page.info().page;
     35
    3336        rows.each(function(index,row){
    3437          const emptyCell=row.querySelector('td.dt-empty');
    3538          if(!emptyCell){
    36             row.children[0].textContent=index+1;
     39            row.children[0].textContent = (page * length) + index + 1;
    3740          }
    3841        });
  • automatic-translations-for-polylang/trunk/assets/js/atfp-supported-block.min.js

    r3308442 r3388730  
    1 class BlockFilterSorter{constructor(){this.filterSelect=document.getElementById("atfp-blocks-filter"),this.categorySelect=document.getElementById("atfp-blocks-category"),this.tableBody=document.querySelector(".atfp-supported-blocks-table tbody"),this.atfpDataTableObj=null,this.tableBody&&(this.atfpDataTable(),this.filterSelect.addEventListener("input",this.datatableFilterHandler),this.categorySelect.addEventListener("input",this.datatableCategoryHandler))}atfpDataTable(){if(this.tableBody){this.atfpDataTableObj=new DataTable("#atfp-supported-blocks-table",{pageLength:25,infoCallback:function(settings,start,end,total,max){return`Showing ${start} to ${end} of ${max} records`}}),this.atfpDataTableObj.on("draw.dt",(function(e){const rows=jQuery(this).find("tbody tr");0===rows.length.length&&this.atfpDataTableObj.empty(),rows.each((function(index,row){const emptyCell=row.querySelector("td.dt-empty");emptyCell||(row.children[0].textContent=index+1)}))}));const tableWrp=document.getElementById("atfp-supported-blocks-table_wrapper"),selectWrapper=document.querySelector(".atfp-supported-blocks-filters");selectWrapper.remove(),tableWrp.prepend(selectWrapper)}}datatableFilterHandler=()=>{if(this.atfpDataTableObj){let selectedFilter=this.filterSelect.value.charAt(0).toUpperCase()+this.filterSelect.value.slice(1);selectedFilter="All"===selectedFilter?"":selectedFilter,this.atfpDataTableObj.column(3).search(selectedFilter,!1,!1,!1).draw()}};datatableCategoryHandler=()=>{if(this.atfpDataTableObj){let selectedCategory=this.categorySelect.value;selectedCategory="all"!==selectedCategory&&selectedCategory,this.atfpDataTableObj.column(1).search(selectedCategory?new RegExp("^"+selectedCategory+"/"):"",!1,!1,!1).draw()}}}window.addEventListener("load",()=>{new BlockFilterSorter});
     1class BlockFilterSorter{constructor(){this.filterSelect=document.getElementById("atfp-blocks-filter"),this.categorySelect=document.getElementById("atfp-blocks-category"),this.tableBody=document.querySelector(".atfp-supported-blocks-table tbody"),this.atfpDataTableObj=null,this.tableBody&&(this.atfpDataTable(),this.filterSelect.addEventListener("input",this.datatableFilterHandler),this.categorySelect.addEventListener("input",this.datatableCategoryHandler))}atfpDataTable(){if(this.tableBody){this.atfpDataTableObj=new DataTable("#atfp-supported-blocks-table",{pageLength:25,infoCallback:function(settings,start,end,total,max){return`Showing ${start} to ${end} of ${max} records`}}),this.atfpDataTableObj.on("draw.dt",(function(e){const rows=jQuery(this).find("tbody tr");0===rows.length.length&&this.atfpDataTableObj.empty();const length=e.dt.page.info().length,page=e.dt.page.info().page;rows.each((function(index,row){const emptyCell=row.querySelector("td.dt-empty");emptyCell||(row.children[0].textContent=page*length+index+1)}))}));const tableWrp=document.getElementById("atfp-supported-blocks-table_wrapper"),selectWrapper=document.querySelector(".atfp-supported-blocks-filters");selectWrapper.remove(),tableWrp.prepend(selectWrapper)}}datatableFilterHandler=()=>{if(this.atfpDataTableObj){let selectedFilter=this.filterSelect.value.charAt(0).toUpperCase()+this.filterSelect.value.slice(1);selectedFilter="All"===selectedFilter?"":selectedFilter,this.atfpDataTableObj.column(3).search(selectedFilter,!1,!1,!1).draw()}};datatableCategoryHandler=()=>{if(this.atfpDataTableObj){let selectedCategory=this.categorySelect.value;selectedCategory="all"!==selectedCategory&&selectedCategory,this.atfpDataTableObj.column(1).search(selectedCategory?new RegExp("^"+selectedCategory+"/"):"",!1,!1,!1).draw()}}}window.addEventListener("load",()=>{new BlockFilterSorter});
  • automatic-translations-for-polylang/trunk/assets/js/atfp-update-custom-blocks.js

    r3189260 r3388730  
    11const { parse } = wp.blocks;
     2const { select, subscribe } = wp.data;
     3
    24class blockDataReterive {
    35    constructor() {
     6        if(document.querySelector('.atfp-overlay')) {
     7            return;
     8        }
     9       
    410        this.blockLists = [];
    511        this.customBlockTranslateData = {};
     
    1117    init = () => {
    1218        this.fetchCustomBlocks();
    13         const modalContainer=document.querySelector('#atfp-modal-open-warning-wrapper .modal-container .modal-content');
    14         if(modalContainer){
    15             this.loaderContainer = document.createElement('div');
    16             this.loaderContainer.className = 'atfp-loader-container';
    17             this.loaderContainer.innerHTML = '<div class="atfp-loader-skeleton"><span class="atfp-loader-shimmer"></span></div>';
    18             modalContainer.appendChild(this.loaderContainer);
    19         }
     19
     20        // Create full-page overlay and append to <body>
     21        this.loaderContainer = document.createElement('div');
     22        this.loaderContainer.className = 'atfp-overlay';
     23        this.loaderContainer.setAttribute('role', 'status');
     24        this.loaderContainer.setAttribute('aria-live', 'polite');
     25        this.loaderContainer.innerHTML = this.getOverlayTemplate(); // see section 2
     26        document.body.appendChild(this.loaderContainer);
     27        document.body.classList.add('atfp-overlay-open');
    2028    }
    2129
     
    6270            .then(response => response.json())
    6371            .then(data => {
    64                 if(data.message === 'No custom blocks found.'){
     72                if (data.message === 'No custom blocks found.') {
    6573                    this.loaderContainer && this.loaderContainer.remove();
    6674                    return;
    6775                }
    68 
     76               
    6977                const customBlocks = parse(data.data.block_data);
    7078
     
    8088    }
    8189
    82     saveBlockData=()=>{
    83         if(Object.keys(this.customBlockTranslateData).length < 1){
     90    saveBlockData = () => {
     91        if (Object.keys(this.customBlockTranslateData).length < 1) {
    8492            this.loaderContainer && this.loaderContainer.remove();
    8593            return;
     
    8795
    8896
    89          /**
    90          * Prepare data to send in API request & update latest translate block data.
    91         */
    92          const apiSendData = {
     97        /**
     98        * Prepare data to send in API request & update latest translate block data.
     99       */
     100        const apiSendData = {
    93101            atfp_nonce: atfp_block_update_object.ajax_nonce,
    94102            action: atfp_block_update_object.action_update_content,
     
    107115            .then(response => response.json())
    108116            .then(data => {
    109                 this.loaderContainer && this.loaderContainer.remove();
    110                 if(data.success && data.data.message){
     117                this.setOverlayState('success');
     118                this.teardownOverlay();
     119                if (data.success && data.data.message) {
    111120                    console.log(data.data.message);
    112121                }
    113122            })
    114123            .catch(error => {
    115                 this.loaderContainer && this.loaderContainer.remove();
     124                this.setOverlayState('error');
     125                this.teardownOverlay();
    116126                console.error('Error fetching block rules:', error);
    117127            });
     
    178188        } else if (typeof value === 'string' && /Make This Content Available for Translation/i.test(value)) {
    179189            this.nestedAttrValue(idsArray, value);
    180         }else if(value instanceof wp.richText.RichTextData && /Make This Content Available for Translation/i.test(value.originalHTML)){
     190        } else if (value instanceof wp.richText.RichTextData && /Make This Content Available for Translation/i.test(value.originalHTML)) {
    181191            this.nestedAttrValue(idsArray, value.originalHTML);
    182192        }
     
    197207            const newIdArr = new Array(...idsArr);
    198208            const value = blockData[key];
    199             if(value !== null && value !== undefined){
    200                 if ( (typeof value === 'string' && /Make This Content Available for Translation/i.test(value)) || [Array.prototype, Object.prototype].includes(Object.getPrototypeOf(value))) {
     209            if (value !== null && value !== undefined) {
     210                if ((typeof value === 'string' && /Make This Content Available for Translation/i.test(value)) || [Array.prototype, Object.prototype].includes(Object.getPrototypeOf(value))) {
    201211                    newIdArr.push(key);
    202212                    this.filterAttr(newIdArr, blockData[key]);
     
    232242            }
    233243        });
    234        
    235        
     244
    236245        if (Object.values(blockAttributes).length > 0) {
    237246            this.filterBlockAttribute(blockAttributes);
    238247        }
    239248    }
     249
     250    setOverlayState = (state /* 'loading' | 'success' | 'error' */) => {
     251        if (!this.loaderContainer) return;
     252        const panel = this.loaderContainer.querySelector('.atfp-overlay .atfp-box');
     253        if (panel) panel.setAttribute('data-state', state);
     254    };
     255   
     256    teardownOverlay = (delayMs = 3000) => {
     257        if (!this.loaderContainer) return;
     258        setTimeout(() => {
     259            this.loaderContainer.classList.add('atfp-overlay--closing');
     260            setTimeout(() => {
     261                this.loaderContainer.remove();
     262                this.loaderContainer = null;
     263                document.body.classList.remove('atfp-overlay-open');
     264            }, 300);
     265        }, delayMs);
     266    };
     267
     268    getOverlayTemplate = () => {
     269        return `
     270    <div class="atfp-overlay" role="status" aria-live="polite">
     271    <div class="atfp-backdrop"></div>
     272    <div class="atfp-box" data-state="loading">
     273      <div class="atfp-row">
     274        <span class="atfp-spinner" aria-hidden="true"></span>
     275        <span class="atfp-icon atfp-icon--ok" aria-hidden="true">✓</span>
     276        <span class="atfp-icon atfp-icon--err" aria-hidden="true">!</span>
     277
     278        <div class="atfp-text">
     279          <div class="atfp-title" data-label="loading">Saving block content</div>
     280          <div class="atfp-title" data-label="success">Supported block content has been updated</div>
     281          <div class="atfp-title" data-label="error">Update failed</div>
     282
     283          <div class="atfp-desc" data-label="loading">
     284            Please don’t close or refresh this window until the update is complete.
     285          </div>
     286          <div class="atfp-desc" data-label="success">
     287            Supported block content has been updated. You may continue.
     288          </div>
     289          <div class="atfp-desc" data-label="error">
     290            Something went wrong. You can retry without closing this window.
     291          </div>
     292        </div>
     293      </div>
     294
     295      <div class="atfp-bar"><span></span></div>
     296    </div>
     297  </div>
     298    `;
     299    }
     300
    240301}
    241302
    242 
    243 
    244 window.addEventListener('load', () => {
    245     const urlParams = new URLSearchParams(window.location.search);
    246     if (urlParams.has('post_type') && urlParams.has('from_post') && urlParams.has('new_lang')) {
    247         new blockDataReterive();
    248     }
    249 });
     303const debounce = (func, delay) => {
     304    let timeoutId;
     305    return function (...args) {
     306        clearTimeout(timeoutId);
     307        timeoutId = setTimeout(() => func.apply(this, args), delay);
     308    };
     309};
     310
     311let isBlockContentUpdating = false;
     312const saveBlockContent = debounce(() => {
     313    new blockDataReterive();
     314    isBlockContentUpdating = false;
     315}, 500);
     316
     317if (select && select('core/editor') && subscribe) {
     318    subscribe(() => {
     319        const {
     320            isCurrentPostPublished,
     321            isSavingPost,
     322            isPublishingPost,
     323            isAutosavingPost,
     324        } = select('core/editor');
     325
     326        const isAutoSaving = isAutosavingPost();
     327        const isPublishing = isPublishingPost();
     328        const isSaving = isSavingPost();
     329        const postPublished = isCurrentPostPublished();
     330
     331        if ((isPublishing || (postPublished && isSaving)) && !isAutoSaving && !isBlockContentUpdating) {
     332            isBlockContentUpdating = true;
     333            saveBlockContent();
     334        }
     335
     336    })
     337}
  • automatic-translations-for-polylang/trunk/assets/js/atfp-update-custom-blocks.min.js

    r3189260 r3388730  
    1 const{parse:parse}=wp.blocks;class blockDataReterive{constructor(){this.blockLists=[],this.customBlockTranslateData={},this.customBlocksData=[],this.loaderContainer=null,this.init()}init=()=>{this.fetchCustomBlocks();const modalContainer=document.querySelector("#atfp-modal-open-warning-wrapper .modal-container .modal-content");modalContainer&&(this.loaderContainer=document.createElement("div"),this.loaderContainer.className="atfp-loader-container",this.loaderContainer.innerHTML='<div class="atfp-loader-skeleton"><span class="atfp-loader-shimmer"></span></div>',modalContainer.appendChild(this.loaderContainer))};getBlocks=blocks=>{const innerBlocks=block=>{const innerBlock=block.innerBlocks;innerBlock.length>0&&innerBlock.forEach(innerBlock=>{this.customBlocksData.push(innerBlock),innerBlocks(innerBlock)})},blockLists=blocks;blockLists.forEach(block=>{innerBlocks(block)}),this.customBlocksData=[...this.customBlocksData,...blockLists],this.getBlockData()};fetchCustomBlocks=()=>{const apiSendData={atfp_nonce:atfp_block_update_object.ajax_nonce,action:atfp_block_update_object.action_get_content},apiUrl=atfp_block_update_object.ajax_url;fetch(apiUrl,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},body:new URLSearchParams(apiSendData)}).then(response=>response.json()).then(data=>{if("No custom blocks found."===data.message)return void(this.loaderContainer&&this.loaderContainer.remove());const customBlocks=parse(data.data.block_data);this.getBlocks(customBlocks),this.saveBlockData()}).catch(error=>{this.loaderContainer&&this.loaderContainer.remove(),console.error("Error fetching block rules:",error)})};saveBlockData=()=>{if(Object.keys(this.customBlockTranslateData).length<1)return void(this.loaderContainer&&this.loaderContainer.remove());const apiSendData={atfp_nonce:atfp_block_update_object.ajax_nonce,action:atfp_block_update_object.action_update_content,save_block_data:JSON.stringify(this.customBlockTranslateData)},apiUrl=atfp_block_update_object.ajax_url;fetch(apiUrl,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},body:new URLSearchParams(apiSendData)}).then(response=>response.json()).then(data=>{this.loaderContainer&&this.loaderContainer.remove(),data.success&&data.data.message&&console.log(data.data.message)}).catch(error=>{this.loaderContainer&&this.loaderContainer.remove(),console.error("Error fetching block rules:",error)})};nestedAttrValue=idsArr=>{const convertToArrays=obj=>{if("object"!=typeof obj||null===obj)return obj;for(let key in obj)obj.hasOwnProperty(key)&&("object"==typeof obj[key]&&null!==obj[key]&&obj[key].hasOwnProperty("atfp_array_key_replace")?(obj[key]=Object.values(obj[key]),obj[key]=convertToArrays(obj[key])):obj[key]=convertToArrays(obj[key]));return obj},deepMerge=(target,source)=>{for(const key in source)source[key]instanceof Object&&key in target&&Object.assign(source[key],deepMerge(target[key],source[key]));return Object.assign(target||{},source),target};let currentElement={},tempObj=currentElement,lastKey=idsArr[idsArr.length-1];idsArr.slice(0,-1).forEach(key=>{tempObj[key]=tempObj[key]||{},tempObj=tempObj[key]}),tempObj[lastKey]=!0;const obj=convertToArrays(currentElement);deepMerge(this.customBlockTranslateData,obj)};filterAttr=(idsArray,value)=>{null!=value&&(Object.getPrototypeOf(value)===Array.prototype?this.filterBlockArrayAttr(idsArray,value):Object.getPrototypeOf(value)===Object.prototype?this.filterBlockObjectAttr(idsArray,value):"string"==typeof value&&/Make This Content Available for Translation/i.test(value)?this.nestedAttrValue(idsArray,value):value instanceof wp.richText.RichTextData&&/Make This Content Available for Translation/i.test(value.originalHTML)&&this.nestedAttrValue(idsArray,value.originalHTML))};filterBlockArrayAttr=(idsArr,blockData)=>{const newIdArr=new Array(...idsArr);newIdArr.push("atfp_array_key_replace"),blockData.forEach((value,key)=>{("string"==typeof value&&/Make This Content Available for Translation/i.test(value)||![null,void 0].includes(value)&&[Array.prototype,Object.prototype].includes(Object.getPrototypeOf(value)))&&this.filterAttr(newIdArr,value)})};filterBlockObjectAttr=(idsArr,blockData)=>{Object.keys(blockData).forEach(key=>{const newIdArr=new Array(...idsArr),value=blockData[key];null!=value&&("string"==typeof value&&/Make This Content Available for Translation/i.test(value)||[Array.prototype,Object.prototype].includes(Object.getPrototypeOf(value)))&&(newIdArr.push(key),this.filterAttr(newIdArr,blockData[key]))})};filterBlockAttribute=blockData=>{Object.keys(blockData).map(clientId=>{const blockName=Object.keys(blockData[clientId])[0],attributes=blockData[clientId][blockName];Object.keys(attributes).forEach(keytwo=>{const value=attributes[keytwo],idsArray=new Array(blockName,"attributes",keytwo);this.filterAttr(idsArray,value)})})};getBlockData=()=>{if("object"!=typeof this.customBlocksData||0===Object.keys(this.customBlocksData).length)return;const blockData=this.customBlocksData,blockAttributes={};Object.values(blockData).forEach(block=>{Object.values(block.attributes).length>0&&(blockAttributes[block.clientId]={},blockAttributes[block.clientId][block.name]=block.attributes)}),Object.values(blockAttributes).length>0&&this.filterBlockAttribute(blockAttributes)}}window.addEventListener("load",()=>{const urlParams=new URLSearchParams(window.location.search);urlParams.has("post_type")&&urlParams.has("from_post")&&urlParams.has("new_lang")&&new blockDataReterive});
     1const{parse:parse}=wp.blocks,{select:select,subscribe:subscribe}=wp.data;class blockDataReterive{constructor(){document.querySelector(".atfp-overlay")||(this.blockLists=[],this.customBlockTranslateData={},this.customBlocksData=[],this.loaderContainer=null,this.init())}init=()=>{this.fetchCustomBlocks(),this.loaderContainer=document.createElement("div"),this.loaderContainer.className="atfp-overlay",this.loaderContainer.setAttribute("role","status"),this.loaderContainer.setAttribute("aria-live","polite"),this.loaderContainer.innerHTML=this.getOverlayTemplate(),document.body.appendChild(this.loaderContainer),document.body.classList.add("atfp-overlay-open")};getBlocks=blocks=>{const innerBlocks=block=>{const innerBlock=block.innerBlocks;innerBlock.length>0&&innerBlock.forEach(innerBlock=>{this.customBlocksData.push(innerBlock),innerBlocks(innerBlock)})},blockLists=blocks;blockLists.forEach(block=>{innerBlocks(block)}),this.customBlocksData=[...this.customBlocksData,...blockLists],this.getBlockData()};fetchCustomBlocks=()=>{const apiSendData={atfp_nonce:atfp_block_update_object.ajax_nonce,action:atfp_block_update_object.action_get_content},apiUrl=atfp_block_update_object.ajax_url;fetch(apiUrl,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},body:new URLSearchParams(apiSendData)}).then(response=>response.json()).then(data=>{if("No custom blocks found."===data.message)return void(this.loaderContainer&&this.loaderContainer.remove());const customBlocks=parse(data.data.block_data);this.getBlocks(customBlocks),this.saveBlockData()}).catch(error=>{this.loaderContainer&&this.loaderContainer.remove(),console.error("Error fetching block rules:",error)})};saveBlockData=()=>{if(Object.keys(this.customBlockTranslateData).length<1)return void(this.loaderContainer&&this.loaderContainer.remove());const apiSendData={atfp_nonce:atfp_block_update_object.ajax_nonce,action:atfp_block_update_object.action_update_content,save_block_data:JSON.stringify(this.customBlockTranslateData)},apiUrl=atfp_block_update_object.ajax_url;fetch(apiUrl,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},body:new URLSearchParams(apiSendData)}).then(response=>response.json()).then(data=>{this.setOverlayState("success"),this.teardownOverlay(),data.success&&data.data.message&&console.log(data.data.message)}).catch(error=>{this.setOverlayState("error"),this.teardownOverlay(),console.error("Error fetching block rules:",error)})};nestedAttrValue=idsArr=>{const convertToArrays=obj=>{if("object"!=typeof obj||null===obj)return obj;for(let key in obj)obj.hasOwnProperty(key)&&("object"==typeof obj[key]&&null!==obj[key]&&obj[key].hasOwnProperty("atfp_array_key_replace")?(obj[key]=Object.values(obj[key]),obj[key]=convertToArrays(obj[key])):obj[key]=convertToArrays(obj[key]));return obj},deepMerge=(target,source)=>{for(const key in source)source[key]instanceof Object&&key in target&&Object.assign(source[key],deepMerge(target[key],source[key]));return Object.assign(target||{},source),target};let currentElement={},tempObj=currentElement,lastKey=idsArr[idsArr.length-1];idsArr.slice(0,-1).forEach(key=>{tempObj[key]=tempObj[key]||{},tempObj=tempObj[key]}),tempObj[lastKey]=!0;const obj=convertToArrays(currentElement);deepMerge(this.customBlockTranslateData,obj)};filterAttr=(idsArray,value)=>{null!=value&&(Object.getPrototypeOf(value)===Array.prototype?this.filterBlockArrayAttr(idsArray,value):Object.getPrototypeOf(value)===Object.prototype?this.filterBlockObjectAttr(idsArray,value):"string"==typeof value&&/Make This Content Available for Translation/i.test(value)?this.nestedAttrValue(idsArray,value):value instanceof wp.richText.RichTextData&&/Make This Content Available for Translation/i.test(value.originalHTML)&&this.nestedAttrValue(idsArray,value.originalHTML))};filterBlockArrayAttr=(idsArr,blockData)=>{const newIdArr=new Array(...idsArr);newIdArr.push("atfp_array_key_replace"),blockData.forEach((value,key)=>{("string"==typeof value&&/Make This Content Available for Translation/i.test(value)||![null,void 0].includes(value)&&[Array.prototype,Object.prototype].includes(Object.getPrototypeOf(value)))&&this.filterAttr(newIdArr,value)})};filterBlockObjectAttr=(idsArr,blockData)=>{Object.keys(blockData).forEach(key=>{const newIdArr=new Array(...idsArr),value=blockData[key];null!=value&&("string"==typeof value&&/Make This Content Available for Translation/i.test(value)||[Array.prototype,Object.prototype].includes(Object.getPrototypeOf(value)))&&(newIdArr.push(key),this.filterAttr(newIdArr,blockData[key]))})};filterBlockAttribute=blockData=>{Object.keys(blockData).map(clientId=>{const blockName=Object.keys(blockData[clientId])[0],attributes=blockData[clientId][blockName];Object.keys(attributes).forEach(keytwo=>{const value=attributes[keytwo],idsArray=new Array(blockName,"attributes",keytwo);this.filterAttr(idsArray,value)})})};getBlockData=()=>{if("object"!=typeof this.customBlocksData||0===Object.keys(this.customBlocksData).length)return;const blockData=this.customBlocksData,blockAttributes={};Object.values(blockData).forEach(block=>{Object.values(block.attributes).length>0&&(blockAttributes[block.clientId]={},blockAttributes[block.clientId][block.name]=block.attributes)}),Object.values(blockAttributes).length>0&&this.filterBlockAttribute(blockAttributes)};setOverlayState=state=>{if(!this.loaderContainer)return;const panel=this.loaderContainer.querySelector(".atfp-overlay .atfp-box");panel&&panel.setAttribute("data-state",state)};teardownOverlay=(delayMs=3e3)=>{this.loaderContainer&&setTimeout(()=>{this.loaderContainer.classList.add("atfp-overlay--closing"),setTimeout(()=>{this.loaderContainer.remove(),this.loaderContainer=null,document.body.classList.remove("atfp-overlay-open")},300)},delayMs)};getOverlayTemplate=()=>'\n    <div class="atfp-overlay" role="status" aria-live="polite">\n    <div class="atfp-backdrop"></div>\n    <div class="atfp-box" data-state="loading">\n      <div class="atfp-row">\n        <span class="atfp-spinner" aria-hidden="true"></span>\n        <span class="atfp-icon atfp-icon--ok" aria-hidden="true">✓</span>\n        <span class="atfp-icon atfp-icon--err" aria-hidden="true">!</span>\n\n        <div class="atfp-text">\n          <div class="atfp-title" data-label="loading">Saving block content</div>\n          <div class="atfp-title" data-label="success">Supported block content has been updated</div>\n          <div class="atfp-title" data-label="error">Update failed</div>\n\n          <div class="atfp-desc" data-label="loading">\n            Please don’t close or refresh this window until the update is complete.\n          </div>\n          <div class="atfp-desc" data-label="success">\n            Supported block content has been updated. You may continue.\n          </div>\n          <div class="atfp-desc" data-label="error">\n            Something went wrong. You can retry without closing this window.\n          </div>\n        </div>\n      </div>\n\n      <div class="atfp-bar"><span></span></div>\n    </div>\n  </div>\n    '}const debounce=(func,delay)=>{let timeoutId;return function(...args){clearTimeout(timeoutId),timeoutId=setTimeout(()=>func.apply(this,args),delay)}};let isBlockContentUpdating=!1;const saveBlockContent=debounce(()=>{new blockDataReterive,isBlockContentUpdating=!1},500);select&&select("core/editor")&&subscribe&&subscribe(()=>{const{isCurrentPostPublished:isCurrentPostPublished,isSavingPost:isSavingPost,isPublishingPost:isPublishingPost,isAutosavingPost:isAutosavingPost}=select("core/editor"),isAutoSaving=isAutosavingPost(),isPublishing=isPublishingPost(),isSaving=isSavingPost(),postPublished=isCurrentPostPublished();!(isPublishing||postPublished&&isSaving)||isAutoSaving||isBlockContentUpdating||(isBlockContentUpdating=!0,saveBlockContent())});
  • automatic-translations-for-polylang/trunk/automatic-translation-for-polylang.php

    r3347861 r3388730  
    33Plugin Name: AutoPoly - AI Translation For Polylang
    44Plugin URI: https://coolplugins.net/
    5 Version: 1.4.5
     5Version: 1.4.6
    66Author: Cool Plugins
    77Author URI: https://coolplugins.net/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=author_page&utm_content=plugin_list
     
    1616}
    1717if ( ! defined( 'ATFP_V' ) ) {
    18     define( 'ATFP_V', '1.4.5' );
     18    define( 'ATFP_V', '1.4.6' );
    1919}
    2020if ( ! defined( 'ATFP_DIR_PATH' ) ) {
     
    518518                        'AutoPoly - AI Translation For Polylang', // Required
    519519                        'https://wordpress.org/support/plugin/automatic-translations-for-polylang/reviews/#new-post', // Required
    520                         ATFP_URL .'assets/images/ai-translation-for-Polylang.svg' // Required
    521520                    );
    522521                }
  • automatic-translations-for-polylang/trunk/helper/class-atfp-ajax-handler.php

    r3347861 r3388730  
    159159                wp_send_json_error( __( 'Invalid security token sent.', 'autopoly-ai-translation-for-polylang' ) );
    160160                wp_die( '0', 400 );
    161                 exit();
    162             }
    163 
    164             if(!current_user_can('manage_options')){
     161            }
     162
     163            if(!current_user_can('edit_posts')){
    165164                wp_send_json_error( __( 'Unauthorized', 'autopoly-ai-translation-for-polylang' ), 403 );
    166165                wp_die( '0', 403 );
     
    172171                wp_send_json_error( __( 'Invalid JSON', 'autopoly-ai-translation-for-polylang' ) );
    173172                wp_die( '0', 400 );
    174                 exit();
    175173            }
    176174
     
    193191
    194192                    delete_option( 'atfp_custom_block_data' );
    195                     update_option( 'atfp_custom_block_status', 'false' );
    196193
    197194                }
  • automatic-translations-for-polylang/trunk/helper/class-atfp-helper.php

    r3347861 r3388730  
    313313            }
    314314        }
     315
     316        public static function is_translated_post_type($current_screen){
     317            global $polylang;
     318       
     319            if(!$polylang || !property_exists($polylang, 'model')){
     320                return false;
     321            }
     322
     323            $translated_post_types = $polylang->model->get_translated_post_types();
     324            $translated_taxonomies = $polylang->model->get_translated_taxonomies();
     325   
     326            $translated_post_types = array_values($translated_post_types);
     327            $translated_taxonomies = array_values($translated_taxonomies);
     328               
     329            $translated_post_types=array_filter($translated_post_types, function($post_type){
     330                return is_string($post_type);
     331            });
     332   
     333            $translated_taxonomies=array_filter($translated_taxonomies, function($taxonomy){
     334                return is_string($taxonomy);
     335            });
     336   
     337            $valid_post_type=(isset($current_screen->post_type) && !empty($current_screen->post_type)) && in_array($current_screen->post_type, $translated_post_types) && $current_screen->post_type !== 'attachment' ? $current_screen->post_type : false;
     338            $valid_taxonomy=(isset($current_screen->taxonomy) && !empty($current_screen->taxonomy)) && in_array($current_screen->taxonomy, $translated_taxonomies) ? $current_screen->taxonomy : false;
     339   
     340            if((!$valid_post_type && !$valid_taxonomy) || ((!$valid_post_type || empty($valid_post_type)) && !isset($valid_taxonomy)) || (isset($current_screen->taxonomy) && !empty($current_screen->taxonomy) && !$valid_taxonomy)){
     341                return false;
     342            }
     343
     344            return true;
     345        }
    315346    }
    316347}
  • automatic-translations-for-polylang/trunk/includes/block-translation-rules/block-rules.json

    r3270250 r3388730  
    5656                        }
    5757                    ]
     58                ],
     59                "head": [
     60                    {
     61                        "cells": [
     62                            {
     63                                "content": true
     64                            }
     65                        ]
     66                    }
     67                ],
     68                "foot": [
     69                    {
     70                        "cells": [
     71                            {
     72                                "content": true
     73                            }
     74                        ]
     75                    }
    5876                ]
    5977            }
     
    96114        },
    97115        "core/read-more": {
    98             "attributes": {
    99                 "content": true
    100             }
    101         },
    102         "core/code": {
    103116            "attributes": {
    104117                "content": true
     
    13151328                ]
    13161329            }
     1330        },
     1331        "rank-math/toc-block":{
     1332            "attributes":{
     1333                "title": true
     1334            }
    13171335        }
    13181336    }
  • automatic-translations-for-polylang/trunk/includes/class-atfp-register-backend-assets.php

    r3347861 r3388730  
    3030    {
    3131        add_action('admin_enqueue_scripts', array($this, 'enqueue_gutenberg_translate_assets'));
    32         add_action('enqueue_block_assets', array($this, 'register_block_translator_assets'));
     32        add_action('admin_enqueue_scripts', array($this, 'enqueue_supported_block_scripts'));
     33        add_action('enqueue_block_assets', array($this, 'block_inline_translation_assets'));
    3334        add_action('elementor/editor/before_enqueue_scripts', array($this, 'enqueue_elementor_translate_assets'));
    34         add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_assets'));
     35        add_action('admin_enqueue_scripts', array($this, 'atfp_enqueue_admin_assets'));
     36    }
     37
     38    public function atfp_enqueue_admin_assets(){
     39        if(!is_admin()){
     40            return;
     41        }
     42
     43        global $polylang;
     44       
     45        if(!$polylang || !property_exists($polylang, 'model') || !function_exists('get_current_screen')){
     46            return;
     47        }
     48       
     49        $current_screen = get_current_screen();
     50       
     51        if(class_exists('ATFP_Helper') && ATFP_Helper::is_translated_post_type($current_screen)){
     52            wp_enqueue_script('atfp-views-link-admin', ATFP_URL . 'assets/js/atfp-admin-views-link.js', array('jquery'), ATFP_V, true);
     53        }
     54    }
     55
     56    public function enqueue_supported_block_scripts(){
     57        if(function_exists('get_current_screen') && property_exists(get_current_screen(), 'post_type') && 'atfp_add_blocks' === get_current_screen()->post_type){
     58            wp_enqueue_style('atfp-update-custom-blocks', ATFP_URL . 'assets/css/atfp-update-custom-blocks.min.css', array(), ATFP_V);
     59            wp_enqueue_script('atfp-update-custom-blocks', ATFP_URL . 'assets/js/atfp-update-custom-blocks.min.js', array('jquery'), ATFP_V, true);
     60       
     61            wp_localize_script(
     62                'atfp-update-custom-blocks',
     63                'atfp_block_update_object',
     64                array(
     65                    'ajax_url'       => admin_url('admin-ajax.php'),
     66                    'ajax_nonce'     => wp_create_nonce('atfp_block_update_nonce'),
     67                    'atfp_url'       => esc_url(ATFP_URL),
     68                    'action_get_content' => 'atfp_get_custom_blocks_content',
     69                    'action_update_content' => 'atfp_update_custom_blocks_content',
     70                )
     71            );
     72        }
    3573    }
    3674
     
    3876     * Register block translator assets.
    3977     */
    40     public function register_block_translator_assets()
     78    public function block_inline_translation_assets()
    4179    {
    4280
    4381        if (defined('POLYLANG_VERSION')) {
    44             if (function_exists('pll_current_language')) {
    45                 $current_language = pll_current_language();
    46             } else {
    47                 $current_language = '';
    48             }
    49 
    50             $editor_script_asset = include ATFP_DIR_PATH . 'assets/block-translator/index.asset.php';
    51 
    52             wp_register_script('atfp-block-translator-toolbar', ATFP_URL . 'assets/block-translator/index.js', $editor_script_asset['dependencies'], $editor_script_asset['version'], true);
    53             wp_enqueue_script('atfp-block-translator-toolbar');
    54 
    55             if ($current_language && $current_language !== '') {
    56                 wp_localize_script('atfp-block-translator-toolbar', 'atfpBlockInlineTranslation', array(
    57                     'pageLanguage' => $current_language,
    58                 ));
    59             }
    60         }
    61     }
    62 
    63     public function enqueue_admin_assets(){
    64         if(!is_admin()){
    65             return;
    66         }
    67 
    68         global $polylang;
    69        
    70         if(!$polylang || !property_exists($polylang, 'model') || !function_exists('get_current_screen')){
    71             return;
    72         }
    73        
    74         $current_screen = get_current_screen();
    75        
    76         $translated_post_types = $polylang->model->get_translated_post_types();
    77         $translated_post_types = array_keys($translated_post_types);
    78        
    79         if(!in_array($current_screen->post_type, $translated_post_types)){
    80             return;
    81         }
    82        
    83         wp_enqueue_script('atfp-views-link-admin', ATFP_URL . 'assets/js/atfp-admin-views-link.js', array('jquery'), ATFP_V, true);
     82            $this->enqueue_inline_translation_assets('block');
     83        }
    8484    }
    8585
     
    9696            if (method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor()) {
    9797                $from_post_id = isset($_GET['from_post']) ? absint($_GET['from_post']) : 0;
    98 
     98               
    9999                global $post;
    100 
     100               
    101101                if (null === $post || 0 === $from_post_id) {
    102102                    return;
    103103                }
     104               
     105                $lang           = isset($_GET['new_lang']) ? sanitize_key($_GET['new_lang']) : '';
    104106
    105107                $editor = '';
    106                 if ('builder' === get_post_meta($from_post_id, '_elementor_edit_mode', true)) {
     108                if ('builder' === get_post_meta($from_post_id, '_elementor_edit_mode', true) && defined('ELEMENTOR_VERSION')) {
     109                    $source_lang_name = pll_get_post_language($from_post_id, 'slug');
     110                    $this->enqueue_elementor_confirm_box_assets($from_post_id, $lang, $source_lang_name, 'gutenberg');
    107111                    $editor = 'Elementor';
    108112                }
    109                 if ('on' === get_post_meta($from_post_id, '_et_pb_use_builder', true)) {
     113                if ('on' === get_post_meta($from_post_id, '_et_pb_use_builder', true) && defined('ET_CORE')) {
    110114                    $editor = 'Divi';
    111115                }
     
    118122
    119123                $lang_object = array();
    120                 foreach ($languages as $lang) {
    121                     $lang_object[$lang->slug] = $lang->name;
     124                foreach ($languages as $lang_obj) {
     125                    $lang_object[$lang_obj->slug] = $lang_obj->name;
    122126                }
    123127
    124128                $post_translate = PLL()->model->is_translated_post_type($post->post_type);
    125                 $lang           = isset($_GET['new_lang']) ? sanitize_key($_GET['new_lang']) : '';
     129               
    126130                $post_type      = isset($_GET['post_type']) ? sanitize_key($_GET['post_type']) : '';
    127131
    128132                if ($post_translate && $lang && $post_type) {
    129                     if (function_exists('get_option')) {
    130                         $update_blocks = get_option('atfp_custom_block_status', false) && 'true' === get_option('atfp_custom_block_status', false) ? true : false;
    131                         if ($update_blocks) {
    132                             // Custom Translation Block update script
    133                             wp_register_script('atfp-custom-blocks', ATFP_URL . 'assets/js/atfp-update-custom-blocks.min.js', array('wp-data', 'jquery'), ATFP_V, true);
    134                             wp_enqueue_script('atfp-custom-blocks');
    135 
    136                             wp_localize_script(
    137                                 'atfp-custom-blocks',
    138                                 'atfp_block_update_object',
    139                                 array(
    140                                     'ajax_url'       => admin_url('admin-ajax.php'),
    141                                     'ajax_nonce'     => wp_create_nonce('atfp_block_update_nonce'),
    142                                     'atfp_url'       => esc_url(ATFP_URL),
    143                                     'action_get_content' => 'atfp_get_custom_blocks_content',
    144                                     'action_update_content' => 'atfp_update_custom_blocks_content',
    145                                     'source_lang'    => pll_get_post_language($from_post_id, 'slug'),
    146                                     'languageObject' => $lang_object,
    147                                 )
    148                             );
    149                         }
    150                     }
    151 
    152133                    $data = array(
    153134                        'action_fetch'       => 'atfp_fetch_post_content',
     
    165146    {
    166147
    167         $this->elementor_widget_translator_script();
     148        $this->elementor_inline_translation_assets();
    168149
    169150        $page_translated = get_post_meta(get_the_ID(), '_atfp_elementor_translated', true);
     
    173154            return;
    174155        }
    175        
     156
    176157        $post_language_slug = pll_get_post_language(get_the_ID(), 'slug');
    177158        $current_post_id = get_the_ID(); // Get the current post ID
    178        
     159
    179160        if(!class_exists('\Elementor\Plugin') || !property_exists('\Elementor\Plugin', 'instance') ){
    180161            return;
     
    183164        $elementor_data = \Elementor\Plugin::$instance->documents->get( $current_post_id )->get_elements_data();
    184165
    185         if($parent_post_language_slug === $post_language_slug){
    186             return;
    187         }
     166
     167        if ($parent_post_language_slug === $post_language_slug) {
     168            return;
     169        }
     170
     171        $parent_post_id=PLL()->model->post->get_translation($current_post_id, $parent_post_language_slug);
    188172
    189173        $meta_fields=get_post_meta($current_post_id);
     
    193177            'elementorData' => $elementor_data,
    194178            'metaFields' => $meta_fields,
     179            'parent_post_id' => $parent_post_id,
     180            'parent_post_title' => get_the_title($parent_post_id),
    195181        );
    196182
    197183        wp_enqueue_style('atfp-elementor-translate', ATFP_URL . 'assets/css/atfp-elementor-translate.min.css', array(), ATFP_V);
    198184        $this->enqueue_automatic_translate_assets($parent_post_language_slug, $post_language_slug, 'elementor', $data);
    199     }   
     185    }
    200186
    201187    public function enqueue_automatic_translate_assets($source_lang, $target_lang, $editor_type, $extra_data = array())
     
    213199
    214200        $post_type = get_post_type();
    215 
    216201
    217202        $languages = PLL()->model->get_languages_list();
     
    220205            $lang_object[$lang->slug] = array('name' => $lang->name, 'flag' => $lang->flag_url, 'locale' => $lang->locale);
    221206        }
    222 
     207       
    223208        wp_enqueue_style('atfp-automatic-translate-custom');
     209       
    224210        wp_enqueue_script('atfp-automatic-translate');
     211        wp_set_script_translations('atfp-automatic-translate', 'autopoly-ai-translation-for-polylang-pro', ATFP_DIR_PATH . 'languages');
     212
    225213
    226214        $post_id = get_the_ID();
     215
     216        if (!isset(PLL()->options['sync']) || (isset(PLL()->options['sync']) && !in_array('post_meta', PLL()->options['sync']))) {
     217            $extra_data['postMetaSync'] = 'false';
     218
     219            if(in_array($editor_type, array('classic', 'gutenberg'))){
     220                $extra_data['update_post_meta_fields'] = 'atfp_update_post_meta_fields';
     221                $extra_data['post_meta_fields_key'] = wp_create_nonce('atfp_update_post_meta_fields');
     222            }
     223           
     224        } else {
     225            $extra_data['postMetaSync'] = 'true';
     226        }
    227227
    228228        $data = array_merge(array(
     
    230230            'ajax_nonce'         => wp_create_nonce('atfp_translate_nonce'),
    231231            'atfp_url'           => esc_url(ATFP_URL),
    232             'admin_url'     => admin_url(),
     232            'admin_url'          => admin_url(),
    233233            'update_translate_data' => 'atfp_update_translate_data',
    234234            'source_lang'        => $source_lang,
     
    258258     * Enqueue the elementor widget translator script.
    259259     */
    260     public function elementor_widget_translator_script()
     260    public function elementor_inline_translation_assets()
    261261    {
    262262        if (defined('POLYLANG_VERSION')) {
     263            $this->enqueue_inline_translation_assets(
     264                'elementor',
     265                array(
     266                    'backbone-marionette',
     267                    'elementor-common',
     268                    'elementor-web-cli',
     269                    'elementor-editor-modules',
     270                )
     271            );
     272        }
     273    }
     274
     275    public function enqueue_elementor_confirm_box_assets($parent_post_id, $target_lang_name, $source_lang_name, $editor_type='gutenberg')
     276    {
     277        $post_id = get_the_ID();
     278
     279        $source_lang_name=PLL()->model->get_language($source_lang_name);
     280        $target_lang_name=PLL()->model->get_language($target_lang_name);
     281
     282        wp_enqueue_script('atfp-elementor-confirm-box', ATFP_URL . 'assets/js/atfp-elementor-translate-confirm-box.js', array('jquery', 'wp-i18n'), ATFP_V, true);
     283
     284        wp_localize_script('atfp-elementor-confirm-box', 'atfpElementorConfirmBoxData',
     285            array('postId' => $post_id, 'parentPostId' => $parent_post_id, 'sourceLangSlug' => $source_lang_name->slug, 'targetLangSlug' => $target_lang_name->slug, 'sourceLangName' => $source_lang_name->name, 'targetLangName' => $target_lang_name->name, 'editorType' => $editor_type)
     286        );
     287
     288        wp_enqueue_style('atfp-elementor-confirm-box', ATFP_URL . 'assets/css/atfp-elementor-translate-confirm-box.css', array(), ATFP_V);
     289    }
     290
     291    private function enqueue_inline_translation_assets( $type = 'block', $extra_dependencies = array() ) {
     292
     293        global $post;
     294
     295        if(!isset($post) || !isset($post->ID)){
     296            return;
     297        }
     298
     299        if (defined('POLYLANG_VERSION')) {
    263300            if (function_exists('pll_current_language')) {
    264301                $current_language = pll_current_language();
     
    269306            }
    270307
    271             $asset = require_once ATFP_DIR_PATH . 'assets/elementor-widget-translator/index.asset.php';
    272             wp_enqueue_script(
    273                 'atfp-elementor-widget-translator',
    274                 ATFP_URL . 'assets/elementor-widget-translator/index.js',
     308            $editor_script_asset = require_once ATFP_DIR_PATH . 'assets/'.sanitize_file_name( $type ).'-inline-translation/index.asset.php';
     309            $core_modal_script_asset = include ATFP_DIR_PATH . 'assets/inline-translate-modal/index.asset.php';
     310
     311            if(!is_array($editor_script_asset)) {
     312                $editor_script_asset = array(
     313                    'dependencies' => array(),
     314                    'version' => ATFP_V,
     315                );
     316            }
     317
     318            if(!is_array($core_modal_script_asset)) {
     319                $core_modal_script_asset = array(
     320                    'dependencies' => array(),
     321                    'version' => ATFP_V,
     322                );
     323            }
     324
     325            wp_register_script( 'atfp-inline-translate-modal', ATFP_URL . 'assets/inline-translate-modal/index.js' , array_merge( $core_modal_script_asset['dependencies'] ), $core_modal_script_asset['version'], true );
     326   
     327            $extra_dependencies[] = 'atfp-inline-translate-modal';
     328
     329            wp_register_script(
     330                'atfp-'.sanitize_file_name( $type ).'-inline-translation',
     331                ATFP_URL . 'assets/'.sanitize_file_name( $type ).'-inline-translation/index.js',
    275332                array_merge(
    276                     $asset['dependencies'],
    277                     [
    278                         'backbone-marionette',
    279                         'elementor-common',
    280                         'elementor-web-cli',
    281                         'elementor-editor-modules',
    282                     ]
     333                    $editor_script_asset['dependencies'], $extra_dependencies
    283334                ),
    284                 $asset['version'],
     335                $editor_script_asset['version'],
    285336                true
    286337            );
    287338
     339            wp_enqueue_script( 'atfp-inline-translate-modal' );
     340
     341            wp_enqueue_script('atfp-' . sanitize_file_name( $type ) . '-inline-translation');
     342
    288343            if ($current_language && $current_language !== '') {
    289344                wp_localize_script(
    290                     'atfp-elementor-widget-translator',
    291                     'atfpElementorInlineTranslation',
     345                    'atfp-inline-translate-modal',
     346                    'atfpInlineTranslation',
    292347                    array(
    293348                        'pageLanguage' => $current_language,
     
    297352            }
    298353        }
    299     }
     354    }
    300355}
  • automatic-translations-for-polylang/trunk/includes/tsconfig.json

    r3247105 r3388730  
    2727    "skipLibCheck": true,
    2828    "typeRoots": [
    29       "node_modules/@types",
    30       "block-translator/@types"
    31     ]
     29      "node_modules/@types"
     30    ],
     31    "types": []
    3232  },
    3333  "include": [
  • automatic-translations-for-polylang/trunk/readme.txt

    r3347861 r3388730  
    55Tested up to: 6.8.1
    66Requires PHP: 5.6
    7 Stable tag: 1.4.5
     7Stable tag: 1.4.6
    88Author URI: https://coolplugins.net/
    99License: GPLv2 or later
     
    220220== Changelog ==
    221221
     222= Version 1.4.6 | 03 November 2025 =
     223
     224* **Added:** Support for translating Rank Math SEO table blocks and core table headers and footers.
     225* **Added:** Confirmation box when translating in a different editor but the page is made with Elementor.
     226* **Fixed:** Issue with Elementor HTML tags not rendering correctly after translation.
     227* **Fixed:** Translation now works for ACF repeater fields in Gutenberg.
     228* **Fixed:** Missing translations for some fields in Elementor testimonial widget.
     229* **Fixed:** JavaScript error when updating Gutenberg content.
     230* **Fixed:** Fixed line break formatting in WYSIWYG content.
     231* **Improved:** Added animation to the update button for long updates.
     232* **Improved:** Optimized performance of inline translation and smaller file size.
     233* **Improved:** Improved the block content update process.
     234
    222235= Version 1.4.5 | 21 August 2025 =
     236
    223237* **Fixed:** Addressed security vulnerabilities.
    224238
Note: See TracChangeset for help on using the changeset viewer.