Changeset 3388730
- Timestamp:
- 11/03/2025 09:46:55 AM (6 weeks ago)
- Location:
- automatic-translations-for-polylang
- Files:
-
- 258 added
- 12 deleted
- 48 edited
- 1 copied
-
tags/1.4.6 (copied) (copied from automatic-translations-for-polylang/trunk)
-
tags/1.4.6/admin/atfp-dashboard/css/admin-styles.css (modified) (1 diff)
-
tags/1.4.6/admin/atfp-dashboard/images/deepl.png (added)
-
tags/1.4.6/admin/atfp-dashboard/views/ai-translations.php (modified) (1 diff)
-
tags/1.4.6/admin/atfp-dashboard/views/free-vs-pro.php (modified) (1 diff)
-
tags/1.4.6/admin/atfp-dashboard/views/settings.php (modified) (3 diffs)
-
tags/1.4.6/admin/atfp-dashboard/views/sidebar.php (modified) (1 diff)
-
tags/1.4.6/admin/cpt_dashboard/assets/css/cpt-dashboard.css (modified) (1 diff)
-
tags/1.4.6/admin/cpt_dashboard/cpt_dashboard.php (modified) (2 diffs)
-
tags/1.4.6/assets/automatic-translate/index.asset.php (modified) (1 diff)
-
tags/1.4.6/assets/automatic-translate/index.js (modified) (1 diff)
-
tags/1.4.6/assets/block-inline-translation (added)
-
tags/1.4.6/assets/block-inline-translation/index.asset.php (added)
-
tags/1.4.6/assets/block-inline-translation/index.js (added)
-
tags/1.4.6/assets/block-translator (deleted)
-
tags/1.4.6/assets/css/atfp-custom.css (modified) (15 diffs)
-
tags/1.4.6/assets/css/atfp-custom.min.css (modified) (1 diff)
-
tags/1.4.6/assets/css/atfp-elementor-translate-confirm-box.css (added)
-
tags/1.4.6/assets/css/atfp-elementor-translate.css (modified) (1 diff)
-
tags/1.4.6/assets/css/atfp-elementor-translate.min.css (modified) (1 diff)
-
tags/1.4.6/assets/css/atfp-update-custom-blocks.css (added)
-
tags/1.4.6/assets/css/atfp-update-custom-blocks.min.css (added)
-
tags/1.4.6/assets/elementor-inline-translation (added)
-
tags/1.4.6/assets/elementor-inline-translation/index.asset.php (added)
-
tags/1.4.6/assets/elementor-inline-translation/index.js (added)
-
tags/1.4.6/assets/elementor-widget-translator (deleted)
-
tags/1.4.6/assets/images/deepl-logo.png (added)
-
tags/1.4.6/assets/images/deepl.png (added)
-
tags/1.4.6/assets/inline-translate-modal (added)
-
tags/1.4.6/assets/inline-translate-modal/index.asset.php (added)
-
tags/1.4.6/assets/inline-translate-modal/index.js (added)
-
tags/1.4.6/assets/js/atfp-elementor-translate-confirm-box.js (added)
-
tags/1.4.6/assets/js/atfp-supported-block.js (modified) (1 diff)
-
tags/1.4.6/assets/js/atfp-supported-block.min.js (modified) (1 diff)
-
tags/1.4.6/assets/js/atfp-update-custom-blocks.js (modified) (9 diffs)
-
tags/1.4.6/assets/js/atfp-update-custom-blocks.min.js (modified) (1 diff)
-
tags/1.4.6/automatic-translation-for-polylang.php (modified) (3 diffs)
-
tags/1.4.6/helper/class-atfp-ajax-handler.php (modified) (3 diffs)
-
tags/1.4.6/helper/class-atfp-helper.php (modified) (1 diff)
-
tags/1.4.6/includes/automatic-translate (deleted)
-
tags/1.4.6/includes/block-inline-translation (deleted)
-
tags/1.4.6/includes/block-translation-rules/block-rules.json (modified) (3 diffs)
-
tags/1.4.6/includes/class-atfp-register-backend-assets.php (modified) (14 diffs)
-
tags/1.4.6/includes/elementor-inline-translation (deleted)
-
tags/1.4.6/includes/inline-translate-modal (deleted)
-
tags/1.4.6/includes/src (added)
-
tags/1.4.6/includes/src/automatic-translate (added)
-
tags/1.4.6/includes/src/automatic-translate/allowed-meta-fields.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component (added)
-
tags/1.4.6/includes/src/automatic-translate/component/copy-clipboard (added)
-
tags/1.4.6/includes/src/automatic-translate/component/copy-clipboard/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/error-modal-box (added)
-
tags/1.4.6/includes/src/automatic-translate/component/error-modal-box/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/filter-nested-attr (added)
-
tags/1.4.6/includes/src/automatic-translate/component/filter-nested-attr/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/filter-target-content (added)
-
tags/1.4.6/includes/src/automatic-translate/component/filter-target-content/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/format-number-count (added)
-
tags/1.4.6/includes/src/automatic-translate/component/format-number-count/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/notice (added)
-
tags/1.4.6/includes/src/automatic-translate/component/notice/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/pro-version-notice (added)
-
tags/1.4.6/includes/src/automatic-translate/component/pro-version-notice/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/progress-bar (added)
-
tags/1.4.6/includes/src/automatic-translate/component/progress-bar/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/progress-bar/show-string-count.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/store-time-taken (added)
-
tags/1.4.6/includes/src/automatic-translate/component/store-time-taken/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/store-translated-string (added)
-
tags/1.4.6/includes/src/automatic-translate/component/store-translated-string/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/string-modal-scroll (added)
-
tags/1.4.6/includes/src/automatic-translate/component/string-modal-scroll/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/translate-provider (added)
-
tags/1.4.6/includes/src/automatic-translate/component/translate-provider/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/translate-provider/local-ai-translator (added)
-
tags/1.4.6/includes/src/automatic-translate/component/translate-provider/local-ai-translator/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/translate-provider/local-ai-translator/local-ai-translator.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/translate-provider/yandex (added)
-
tags/1.4.6/includes/src/automatic-translate/component/translate-provider/yandex/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/translate-provider/yandex/yandex-language.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/translate-seo-fields (added)
-
tags/1.4.6/includes/src/automatic-translate/component/translate-seo-fields/rank-math-seo.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/translate-seo-fields/seo-press.js (added)
-
tags/1.4.6/includes/src/automatic-translate/component/translate-seo-fields/yoast-seo-fields.js (added)
-
tags/1.4.6/includes/src/automatic-translate/create-translated-post (added)
-
tags/1.4.6/includes/src/automatic-translate/create-translated-post/elementor (added)
-
tags/1.4.6/includes/src/automatic-translate/create-translated-post/elementor/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/create-translated-post/gutenberg (added)
-
tags/1.4.6/includes/src/automatic-translate/create-translated-post/gutenberg/create-block.js (added)
-
tags/1.4.6/includes/src/automatic-translate/create-translated-post/gutenberg/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/fetch-post (added)
-
tags/1.4.6/includes/src/automatic-translate/fetch-post/elementor (added)
-
tags/1.4.6/includes/src/automatic-translate/fetch-post/elementor/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/fetch-post/gutenberg (added)
-
tags/1.4.6/includes/src/automatic-translate/fetch-post/gutenberg/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/global-store (added)
-
tags/1.4.6/includes/src/automatic-translate/global-store/actions.js (added)
-
tags/1.4.6/includes/src/automatic-translate/global-store/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/global-store/reducer.js (added)
-
tags/1.4.6/includes/src/automatic-translate/global-store/selectors.js (added)
-
tags/1.4.6/includes/src/automatic-translate/global-store/types.js (added)
-
tags/1.4.6/includes/src/automatic-translate/helper (added)
-
tags/1.4.6/includes/src/automatic-translate/helper/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/popup-setting-modal (added)
-
tags/1.4.6/includes/src/automatic-translate/popup-setting-modal/body.js (added)
-
tags/1.4.6/includes/src/automatic-translate/popup-setting-modal/footer.js (added)
-
tags/1.4.6/includes/src/automatic-translate/popup-setting-modal/header.js (added)
-
tags/1.4.6/includes/src/automatic-translate/popup-setting-modal/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/popup-setting-modal/providers.js (added)
-
tags/1.4.6/includes/src/automatic-translate/popup-string-modal (added)
-
tags/1.4.6/includes/src/automatic-translate/popup-string-modal/body.js (added)
-
tags/1.4.6/includes/src/automatic-translate/popup-string-modal/footer.js (added)
-
tags/1.4.6/includes/src/automatic-translate/popup-string-modal/header.js (added)
-
tags/1.4.6/includes/src/automatic-translate/popup-string-modal/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/popup-string-modal/notice.js (added)
-
tags/1.4.6/includes/src/automatic-translate/store-source-string (added)
-
tags/1.4.6/includes/src/automatic-translate/store-source-string/elementor (added)
-
tags/1.4.6/includes/src/automatic-translate/store-source-string/elementor/index.js (added)
-
tags/1.4.6/includes/src/automatic-translate/store-source-string/gutenberg (added)
-
tags/1.4.6/includes/src/automatic-translate/store-source-string/gutenberg/index.js (added)
-
tags/1.4.6/includes/src/block-inline-translation (added)
-
tags/1.4.6/includes/src/block-inline-translation/editor-assets (added)
-
tags/1.4.6/includes/src/block-inline-translation/editor-assets/global.d.ts (added)
-
tags/1.4.6/includes/src/block-inline-translation/editor-assets/index.ts (added)
-
tags/1.4.6/includes/src/block-inline-translation/editor-assets/plugin (added)
-
tags/1.4.6/includes/src/block-inline-translation/editor-assets/plugin/paragraph-transaltor.module.css (added)
-
tags/1.4.6/includes/src/block-inline-translation/editor-assets/plugin/paragraph-transaltor.tsx (added)
-
tags/1.4.6/includes/src/block-inline-translation/types.d.ts (added)
-
tags/1.4.6/includes/src/elementor-inline-translation (added)
-
tags/1.4.6/includes/src/elementor-inline-translation/control-base.js (added)
-
tags/1.4.6/includes/src/elementor-inline-translation/elementor-translator-button.js (added)
-
tags/1.4.6/includes/src/elementor-inline-translation/index.js (added)
-
tags/1.4.6/includes/src/elementor-inline-translation/style.modules.css (added)
-
tags/1.4.6/includes/src/elementor-inline-translation/style.modules.css.map (added)
-
tags/1.4.6/includes/src/elementor-inline-translation/style.modules.scss (added)
-
tags/1.4.6/includes/src/elementor-inline-translation/translator-modal (added)
-
tags/1.4.6/includes/src/elementor-inline-translation/translator-modal/index.js (added)
-
tags/1.4.6/includes/src/inline-translate-modal (added)
-
tags/1.4.6/includes/src/inline-translate-modal/copy-clipboard (added)
-
tags/1.4.6/includes/src/inline-translate-modal/copy-clipboard/index.tsx (added)
-
tags/1.4.6/includes/src/inline-translate-modal/error-modal (added)
-
tags/1.4.6/includes/src/inline-translate-modal/error-modal/index.tsx (added)
-
tags/1.4.6/includes/src/inline-translate-modal/error-modal/modal-style.tsx (added)
-
tags/1.4.6/includes/src/inline-translate-modal/is-language-detector-api-available.ts (added)
-
tags/1.4.6/includes/src/inline-translate-modal/is-translator-api-available.ts (added)
-
tags/1.4.6/includes/src/inline-translate-modal/language-detector.ts (added)
-
tags/1.4.6/includes/src/inline-translate-modal/languages.ts (added)
-
tags/1.4.6/includes/src/inline-translate-modal/modal (added)
-
tags/1.4.6/includes/src/inline-translate-modal/modal/button-group.tsx (added)
-
tags/1.4.6/includes/src/inline-translate-modal/modal/button.tsx (added)
-
tags/1.4.6/includes/src/inline-translate-modal/modal/index.tsx (added)
-
tags/1.4.6/includes/src/inline-translate-modal/modal/modal-style.tsx (added)
-
tags/1.4.6/includes/src/inline-translate-modal/modal/style.modules.css (added)
-
tags/1.4.6/includes/src/inline-translate-modal/modal/style.modules.css.map (added)
-
tags/1.4.6/includes/src/inline-translate-modal/modal/style.modules.scss (added)
-
tags/1.4.6/includes/src/inline-translate-modal/modal/svgIcons.tsx (added)
-
tags/1.4.6/includes/src/inline-translate-modal/translator.ts (added)
-
tags/1.4.6/includes/tsconfig.json (modified) (1 diff)
-
tags/1.4.6/readme.txt (modified) (2 diffs)
-
trunk/admin/atfp-dashboard/css/admin-styles.css (modified) (1 diff)
-
trunk/admin/atfp-dashboard/images/deepl.png (added)
-
trunk/admin/atfp-dashboard/views/ai-translations.php (modified) (1 diff)
-
trunk/admin/atfp-dashboard/views/free-vs-pro.php (modified) (1 diff)
-
trunk/admin/atfp-dashboard/views/settings.php (modified) (3 diffs)
-
trunk/admin/atfp-dashboard/views/sidebar.php (modified) (1 diff)
-
trunk/admin/cpt_dashboard/assets/css/cpt-dashboard.css (modified) (1 diff)
-
trunk/admin/cpt_dashboard/cpt_dashboard.php (modified) (2 diffs)
-
trunk/assets/automatic-translate/index.asset.php (modified) (1 diff)
-
trunk/assets/automatic-translate/index.js (modified) (1 diff)
-
trunk/assets/block-inline-translation (added)
-
trunk/assets/block-inline-translation/index.asset.php (added)
-
trunk/assets/block-inline-translation/index.js (added)
-
trunk/assets/block-translator (deleted)
-
trunk/assets/css/atfp-custom.css (modified) (15 diffs)
-
trunk/assets/css/atfp-custom.min.css (modified) (1 diff)
-
trunk/assets/css/atfp-elementor-translate-confirm-box.css (added)
-
trunk/assets/css/atfp-elementor-translate.css (modified) (1 diff)
-
trunk/assets/css/atfp-elementor-translate.min.css (modified) (1 diff)
-
trunk/assets/css/atfp-update-custom-blocks.css (added)
-
trunk/assets/css/atfp-update-custom-blocks.min.css (added)
-
trunk/assets/elementor-inline-translation (added)
-
trunk/assets/elementor-inline-translation/index.asset.php (added)
-
trunk/assets/elementor-inline-translation/index.js (added)
-
trunk/assets/elementor-widget-translator (deleted)
-
trunk/assets/images/deepl-logo.png (added)
-
trunk/assets/images/deepl.png (added)
-
trunk/assets/inline-translate-modal (added)
-
trunk/assets/inline-translate-modal/index.asset.php (added)
-
trunk/assets/inline-translate-modal/index.js (added)
-
trunk/assets/js/atfp-elementor-translate-confirm-box.js (added)
-
trunk/assets/js/atfp-supported-block.js (modified) (1 diff)
-
trunk/assets/js/atfp-supported-block.min.js (modified) (1 diff)
-
trunk/assets/js/atfp-update-custom-blocks.js (modified) (9 diffs)
-
trunk/assets/js/atfp-update-custom-blocks.min.js (modified) (1 diff)
-
trunk/automatic-translation-for-polylang.php (modified) (3 diffs)
-
trunk/helper/class-atfp-ajax-handler.php (modified) (3 diffs)
-
trunk/helper/class-atfp-helper.php (modified) (1 diff)
-
trunk/includes/automatic-translate (deleted)
-
trunk/includes/block-inline-translation (deleted)
-
trunk/includes/block-translation-rules/block-rules.json (modified) (3 diffs)
-
trunk/includes/class-atfp-register-backend-assets.php (modified) (14 diffs)
-
trunk/includes/elementor-inline-translation (deleted)
-
trunk/includes/inline-translate-modal (deleted)
-
trunk/includes/src (added)
-
trunk/includes/src/automatic-translate (added)
-
trunk/includes/src/automatic-translate/allowed-meta-fields.js (added)
-
trunk/includes/src/automatic-translate/component (added)
-
trunk/includes/src/automatic-translate/component/copy-clipboard (added)
-
trunk/includes/src/automatic-translate/component/copy-clipboard/index.js (added)
-
trunk/includes/src/automatic-translate/component/error-modal-box (added)
-
trunk/includes/src/automatic-translate/component/error-modal-box/index.js (added)
-
trunk/includes/src/automatic-translate/component/filter-nested-attr (added)
-
trunk/includes/src/automatic-translate/component/filter-nested-attr/index.js (added)
-
trunk/includes/src/automatic-translate/component/filter-target-content (added)
-
trunk/includes/src/automatic-translate/component/filter-target-content/index.js (added)
-
trunk/includes/src/automatic-translate/component/format-number-count (added)
-
trunk/includes/src/automatic-translate/component/format-number-count/index.js (added)
-
trunk/includes/src/automatic-translate/component/notice (added)
-
trunk/includes/src/automatic-translate/component/notice/index.js (added)
-
trunk/includes/src/automatic-translate/component/pro-version-notice (added)
-
trunk/includes/src/automatic-translate/component/pro-version-notice/index.js (added)
-
trunk/includes/src/automatic-translate/component/progress-bar (added)
-
trunk/includes/src/automatic-translate/component/progress-bar/index.js (added)
-
trunk/includes/src/automatic-translate/component/progress-bar/show-string-count.js (added)
-
trunk/includes/src/automatic-translate/component/store-time-taken (added)
-
trunk/includes/src/automatic-translate/component/store-time-taken/index.js (added)
-
trunk/includes/src/automatic-translate/component/store-translated-string (added)
-
trunk/includes/src/automatic-translate/component/store-translated-string/index.js (added)
-
trunk/includes/src/automatic-translate/component/string-modal-scroll (added)
-
trunk/includes/src/automatic-translate/component/string-modal-scroll/index.js (added)
-
trunk/includes/src/automatic-translate/component/translate-provider (added)
-
trunk/includes/src/automatic-translate/component/translate-provider/index.js (added)
-
trunk/includes/src/automatic-translate/component/translate-provider/local-ai-translator (added)
-
trunk/includes/src/automatic-translate/component/translate-provider/local-ai-translator/index.js (added)
-
trunk/includes/src/automatic-translate/component/translate-provider/local-ai-translator/local-ai-translator.js (added)
-
trunk/includes/src/automatic-translate/component/translate-provider/yandex (added)
-
trunk/includes/src/automatic-translate/component/translate-provider/yandex/index.js (added)
-
trunk/includes/src/automatic-translate/component/translate-provider/yandex/yandex-language.js (added)
-
trunk/includes/src/automatic-translate/component/translate-seo-fields (added)
-
trunk/includes/src/automatic-translate/component/translate-seo-fields/rank-math-seo.js (added)
-
trunk/includes/src/automatic-translate/component/translate-seo-fields/seo-press.js (added)
-
trunk/includes/src/automatic-translate/component/translate-seo-fields/yoast-seo-fields.js (added)
-
trunk/includes/src/automatic-translate/create-translated-post (added)
-
trunk/includes/src/automatic-translate/create-translated-post/elementor (added)
-
trunk/includes/src/automatic-translate/create-translated-post/elementor/index.js (added)
-
trunk/includes/src/automatic-translate/create-translated-post/gutenberg (added)
-
trunk/includes/src/automatic-translate/create-translated-post/gutenberg/create-block.js (added)
-
trunk/includes/src/automatic-translate/create-translated-post/gutenberg/index.js (added)
-
trunk/includes/src/automatic-translate/fetch-post (added)
-
trunk/includes/src/automatic-translate/fetch-post/elementor (added)
-
trunk/includes/src/automatic-translate/fetch-post/elementor/index.js (added)
-
trunk/includes/src/automatic-translate/fetch-post/gutenberg (added)
-
trunk/includes/src/automatic-translate/fetch-post/gutenberg/index.js (added)
-
trunk/includes/src/automatic-translate/global-store (added)
-
trunk/includes/src/automatic-translate/global-store/actions.js (added)
-
trunk/includes/src/automatic-translate/global-store/index.js (added)
-
trunk/includes/src/automatic-translate/global-store/reducer.js (added)
-
trunk/includes/src/automatic-translate/global-store/selectors.js (added)
-
trunk/includes/src/automatic-translate/global-store/types.js (added)
-
trunk/includes/src/automatic-translate/helper (added)
-
trunk/includes/src/automatic-translate/helper/index.js (added)
-
trunk/includes/src/automatic-translate/index.js (added)
-
trunk/includes/src/automatic-translate/popup-setting-modal (added)
-
trunk/includes/src/automatic-translate/popup-setting-modal/body.js (added)
-
trunk/includes/src/automatic-translate/popup-setting-modal/footer.js (added)
-
trunk/includes/src/automatic-translate/popup-setting-modal/header.js (added)
-
trunk/includes/src/automatic-translate/popup-setting-modal/index.js (added)
-
trunk/includes/src/automatic-translate/popup-setting-modal/providers.js (added)
-
trunk/includes/src/automatic-translate/popup-string-modal (added)
-
trunk/includes/src/automatic-translate/popup-string-modal/body.js (added)
-
trunk/includes/src/automatic-translate/popup-string-modal/footer.js (added)
-
trunk/includes/src/automatic-translate/popup-string-modal/header.js (added)
-
trunk/includes/src/automatic-translate/popup-string-modal/index.js (added)
-
trunk/includes/src/automatic-translate/popup-string-modal/notice.js (added)
-
trunk/includes/src/automatic-translate/store-source-string (added)
-
trunk/includes/src/automatic-translate/store-source-string/elementor (added)
-
trunk/includes/src/automatic-translate/store-source-string/elementor/index.js (added)
-
trunk/includes/src/automatic-translate/store-source-string/gutenberg (added)
-
trunk/includes/src/automatic-translate/store-source-string/gutenberg/index.js (added)
-
trunk/includes/src/block-inline-translation (added)
-
trunk/includes/src/block-inline-translation/editor-assets (added)
-
trunk/includes/src/block-inline-translation/editor-assets/global.d.ts (added)
-
trunk/includes/src/block-inline-translation/editor-assets/index.ts (added)
-
trunk/includes/src/block-inline-translation/editor-assets/plugin (added)
-
trunk/includes/src/block-inline-translation/editor-assets/plugin/paragraph-transaltor.module.css (added)
-
trunk/includes/src/block-inline-translation/editor-assets/plugin/paragraph-transaltor.tsx (added)
-
trunk/includes/src/block-inline-translation/types.d.ts (added)
-
trunk/includes/src/elementor-inline-translation (added)
-
trunk/includes/src/elementor-inline-translation/control-base.js (added)
-
trunk/includes/src/elementor-inline-translation/elementor-translator-button.js (added)
-
trunk/includes/src/elementor-inline-translation/index.js (added)
-
trunk/includes/src/elementor-inline-translation/style.modules.css (added)
-
trunk/includes/src/elementor-inline-translation/style.modules.css.map (added)
-
trunk/includes/src/elementor-inline-translation/style.modules.scss (added)
-
trunk/includes/src/elementor-inline-translation/translator-modal (added)
-
trunk/includes/src/elementor-inline-translation/translator-modal/index.js (added)
-
trunk/includes/src/inline-translate-modal (added)
-
trunk/includes/src/inline-translate-modal/copy-clipboard (added)
-
trunk/includes/src/inline-translate-modal/copy-clipboard/index.tsx (added)
-
trunk/includes/src/inline-translate-modal/error-modal (added)
-
trunk/includes/src/inline-translate-modal/error-modal/index.tsx (added)
-
trunk/includes/src/inline-translate-modal/error-modal/modal-style.tsx (added)
-
trunk/includes/src/inline-translate-modal/is-language-detector-api-available.ts (added)
-
trunk/includes/src/inline-translate-modal/is-translator-api-available.ts (added)
-
trunk/includes/src/inline-translate-modal/language-detector.ts (added)
-
trunk/includes/src/inline-translate-modal/languages.ts (added)
-
trunk/includes/src/inline-translate-modal/modal (added)
-
trunk/includes/src/inline-translate-modal/modal/button-group.tsx (added)
-
trunk/includes/src/inline-translate-modal/modal/button.tsx (added)
-
trunk/includes/src/inline-translate-modal/modal/index.tsx (added)
-
trunk/includes/src/inline-translate-modal/modal/modal-style.tsx (added)
-
trunk/includes/src/inline-translate-modal/modal/style.modules.css (added)
-
trunk/includes/src/inline-translate-modal/modal/style.modules.css.map (added)
-
trunk/includes/src/inline-translate-modal/modal/style.modules.scss (added)
-
trunk/includes/src/inline-translate-modal/modal/svgIcons.tsx (added)
-
trunk/includes/src/inline-translate-modal/translator.ts (added)
-
trunk/includes/tsconfig.json (modified) (1 diff)
-
trunk/readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
automatic-translations-for-polylang/tags/1.4.6/admin/atfp-dashboard/css/admin-styles.css
r3325375 r3388730 778 778 } 779 779 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 780 802 .atfp-bulk-translation-post-status-options{ 781 803 display: flex; -
automatic-translations-for-polylang/tags/1.4.6/admin/atfp-dashboard/views/ai-translations.php
r3347861 r3388730 40 40 'icon' => 'chrome-ai-translate.png', 41 41 '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' 42 50 ] 43 51 ]; -
automatic-translations-for-polylang/tags/1.4.6/admin/atfp-dashboard/views/free-vs-pro.php
r3347861 r3388730 30 30 'Unlimited Translations' => [false, true], 31 31 '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], 33 36 'Premium Support' => [false, true], 34 37 ]; -
automatic-translations-for-polylang/tags/1.4.6/admin/atfp-dashboard/views/settings.php
r3347861 r3388730 74 74 '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', 75 75 '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' 76 81 ] 77 82 ]; … … 112 117 <!-- Add bulk translate post status --> 113 118 <label for="bulk-translate-post-status"> 114 <?php echo esc_html__('Bulk Translat ePost Status', $text_domain); ?>119 <?php echo esc_html__('Bulk Translation default Post Status', $text_domain); ?> 115 120 </label> 116 121 <div class="atfp-bulk-translation-post-status-options"> … … 120 125 <label for="draft"><?php echo esc_html__('Draft', $text_domain); ?></label> 121 126 </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> 122 138 </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;"> 123 168 124 169 <?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 96 96 'free' => 'automatic-translator-addon-for-loco-translate/automatic-translator-addon-for-loco-translate.php', 97 97 'pro' => 'loco-automatic-translate-addon-pro/loco-automatic-translate-addon-pro.php', 98 'free_name' => esc_html__(' Automatic Translate AddonFor 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), 100 100 ], 101 101 ]; -
automatic-translations-for-polylang/tags/1.4.6/admin/cpt_dashboard/assets/css/cpt-dashboard.css
r3308442 r3388730 5 5 display: flex; 6 6 align-items: center; 7 } 8 9 .cpt-review-notice .notice-dismiss{ 10 display: none; 7 11 } 8 12 -
automatic-translations-for-polylang/tags/1.4.6/admin/cpt_dashboard/cpt_dashboard.php
r3347861 r3388730 233 233 } 234 234 235 public static function review_notice($prefix, $plugin_name, $url , $icon=''){235 public static function review_notice($prefix, $plugin_name, $url){ 236 236 if(self::atfp_hide_review_notice_status($prefix)){ 237 237 return; … … 253 253 254 254 $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 263 261 264 262 $prefix = sanitize_key($prefix); 265 $message = wp_kses_post($message);266 263 $url = esc_url($url); 267 264 $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">'; 276 280 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); 278 284 }); 279 285 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>'; 286 289 287 echo wp_kses _post($html);290 echo wp_kses($html, $allowed); 288 291 }); 289 292 } -
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 > Languages > 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 > Languages > 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 43 43 44 44 #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; 46 48 font-size: 13px; 47 line-height: 2.15384615;49 line-height: 1.3; 48 50 min-height: 30px; 49 51 margin: 0; … … 185 187 } 186 188 187 button.atfp p-error-reload-btn{189 button.atfp-error-reload-btn{ 188 190 background: #0073aa; 189 191 color: #fff !important; … … 194 196 } 195 197 196 button.atfp p-error-reload-btn:hover{198 button.atfp-error-reload-btn:hover{ 197 199 background: #005682; 198 200 } … … 216 218 217 219 #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; 218 232 background: #f6f7f7; 219 233 border: 1px solid #c3c4c7; 220 234 color: #50575e; 235 padding: 5px; 236 border-radius: 3px; 221 237 } 222 238 … … 249 265 display: inline-flex; 250 266 align-items: center; 251 justify-content: center;252 267 } 253 268 … … 334 349 display: flex; 335 350 align-items: center; 336 font-size: 1 rem;351 font-size: 16px; 337 352 font-weight: 600; 338 353 margin-block: .5rem; … … 360 375 .atfp-setting-modal-body tbody .button{ 361 376 width: 123px; 362 display: inline-block; 377 display: inline-flex; 378 align-items: center; 379 justify-content: center; 363 380 font-size: 13px; 364 line-height: 2.15384615;381 line-height: 1.3; 365 382 min-height: 30px; 366 383 margin: 0; … … 444 461 445 462 #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; 446 475 background: #f6f7f7; 447 476 border: 1px solid #c3c4c7; 448 477 color: #50575e; 478 padding: 5px; 479 border-radius: 3px; 449 480 } 450 481 … … 468 499 margin: 0; 469 500 font-size: 14px; 501 color: #3c3c3c; 470 502 } 471 503 … … 616 648 } 617 649 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 618 692 619 693 .local_ai_translator_btn.button-primary { … … 622 696 color: #fff; 623 697 text-shadow: none; 624 display: inline-block; 698 display: inline-flex; 699 align-items: center; 700 justify-content: center; 625 701 text-decoration: none; 626 702 font-size: 13px; 627 line-height: 2.15384615;703 line-height: 1.3; 628 704 min-height: 30px; 629 705 margin: 0; … … 698 774 overflow-y: auto; 699 775 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)); 701 777 width: 100%; 702 778 position: relative; … … 966 1042 } 967 1043 968 #atfp_strings_model #atfp-localAiTranslator-strings-modal.atfp_string_container {1044 #atfp_strings_model .atfp_string_container { 969 1045 max-height: calc(100vh - 270px - var(--atfp-notice-wrapper-height, 0px)); 970 1046 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)); 971 1051 } 972 1052 … … 975 1055 margin-block: 16px; 976 1056 } 977 978 1057 979 1058 #atfp-pro-notice-wrapper { … … 1183 1262 } 1184 1263 } 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: #F0ABFC5 }1 button.elementor-button.atfp-translate-button:enabled { 2 border-radius: 0px; 3 color: rgb(12, 13, 14); 4 background-color: #F0ABFC 5 } 6 6 7 button.elementor-button.atfp-translate-button:enabled:hover {8 background-color: rgb(235, 142, 251);9 }7 button.elementor-button.atfp-translate-button:enabled:hover { 8 background-color: rgb(235, 142, 251); 9 } 10 10 11 button.elementor-button.atfp-translate-button:disabled {12 cursor: default;13 border-radius: 0px;14 color: rgb(12, 13, 14);15 }11 button.elementor-button.atfp-translate-button:disabled { 12 cursor: default; 13 border-radius: 0px; 14 color: rgb(12, 13, 14); 15 } 16 16 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 */ 18 button.atfp-setting-close { 19 margin-top: .9rem; 20 font-size: 1rem; 21 padding: .1rem .4rem; 22 cursor: pointer; 23 opacity: .7; 24 } 25 25 26 button.atfp-setting-close:hover {27 opacity: 1;28 }26 button.atfp-setting-close:hover { 27 opacity: 1; 28 } 29 29 30 /* ******Popup***** */30 /* ******Popup***** */ 31 31 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 } 43 43 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 } 55 55 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}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:.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 31 31 } 32 32 33 const length = e.dt.page.info().length; 34 const page = e.dt.page.info().page; 35 33 36 rows.each(function(index,row){ 34 37 const emptyCell=row.querySelector('td.dt-empty'); 35 38 if(!emptyCell){ 36 row.children[0].textContent =index+1;39 row.children[0].textContent = (page * length) + index + 1; 37 40 } 38 41 }); -
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});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();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 1 1 const { parse } = wp.blocks; 2 const { select, subscribe } = wp.data; 3 2 4 class blockDataReterive { 3 5 constructor() { 6 if(document.querySelector('.atfp-overlay')) { 7 return; 8 } 9 4 10 this.blockLists = []; 5 11 this.customBlockTranslateData = {}; … … 11 17 init = () => { 12 18 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'); 20 28 } 21 29 … … 62 70 .then(response => response.json()) 63 71 .then(data => { 64 if (data.message === 'No custom blocks found.'){72 if (data.message === 'No custom blocks found.') { 65 73 this.loaderContainer && this.loaderContainer.remove(); 66 74 return; 67 75 } 68 76 69 77 const customBlocks = parse(data.data.block_data); 70 78 … … 80 88 } 81 89 82 saveBlockData =()=>{83 if (Object.keys(this.customBlockTranslateData).length < 1){90 saveBlockData = () => { 91 if (Object.keys(this.customBlockTranslateData).length < 1) { 84 92 this.loaderContainer && this.loaderContainer.remove(); 85 93 return; … … 87 95 88 96 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 = { 93 101 atfp_nonce: atfp_block_update_object.ajax_nonce, 94 102 action: atfp_block_update_object.action_update_content, … … 107 115 .then(response => response.json()) 108 116 .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) { 111 120 console.log(data.data.message); 112 121 } 113 122 }) 114 123 .catch(error => { 115 this.loaderContainer && this.loaderContainer.remove(); 124 this.setOverlayState('error'); 125 this.teardownOverlay(); 116 126 console.error('Error fetching block rules:', error); 117 127 }); … … 178 188 } else if (typeof value === 'string' && /Make This Content Available for Translation/i.test(value)) { 179 189 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)) { 181 191 this.nestedAttrValue(idsArray, value.originalHTML); 182 192 } … … 197 207 const newIdArr = new Array(...idsArr); 198 208 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))) { 201 211 newIdArr.push(key); 202 212 this.filterAttr(newIdArr, blockData[key]); … … 232 242 } 233 243 }); 234 235 244 236 245 if (Object.values(blockAttributes).length > 0) { 237 246 this.filterBlockAttribute(blockAttributes); 238 247 } 239 248 } 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 240 301 } 241 302 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 }); 303 const debounce = (func, delay) => { 304 let timeoutId; 305 return function (...args) { 306 clearTimeout(timeoutId); 307 timeoutId = setTimeout(() => func.apply(this, args), delay); 308 }; 309 }; 310 311 let isBlockContentUpdating = false; 312 const saveBlockContent = debounce(() => { 313 new blockDataReterive(); 314 isBlockContentUpdating = false; 315 }, 500); 316 317 if (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});1 const{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 3 3 Plugin Name: AutoPoly - AI Translation For Polylang 4 4 Plugin URI: https://coolplugins.net/ 5 Version: 1.4. 55 Version: 1.4.6 6 6 Author: Cool Plugins 7 7 Author URI: https://coolplugins.net/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=author_page&utm_content=plugin_list … … 16 16 } 17 17 if ( ! defined( 'ATFP_V' ) ) { 18 define( 'ATFP_V', '1.4. 5' );18 define( 'ATFP_V', '1.4.6' ); 19 19 } 20 20 if ( ! defined( 'ATFP_DIR_PATH' ) ) { … … 518 518 'AutoPoly - AI Translation For Polylang', // Required 519 519 'https://wordpress.org/support/plugin/automatic-translations-for-polylang/reviews/#new-post', // Required 520 ATFP_URL .'assets/images/ai-translation-for-Polylang.svg' // Required521 520 ); 522 521 } -
automatic-translations-for-polylang/tags/1.4.6/helper/class-atfp-ajax-handler.php
r3347861 r3388730 159 159 wp_send_json_error( __( 'Invalid security token sent.', 'autopoly-ai-translation-for-polylang' ) ); 160 160 wp_die( '0', 400 ); 161 exit(); 162 } 163 164 if(!current_user_can('manage_options')){ 161 } 162 163 if(!current_user_can('edit_posts')){ 165 164 wp_send_json_error( __( 'Unauthorized', 'autopoly-ai-translation-for-polylang' ), 403 ); 166 165 wp_die( '0', 403 ); … … 172 171 wp_send_json_error( __( 'Invalid JSON', 'autopoly-ai-translation-for-polylang' ) ); 173 172 wp_die( '0', 400 ); 174 exit();175 173 } 176 174 … … 193 191 194 192 delete_option( 'atfp_custom_block_data' ); 195 update_option( 'atfp_custom_block_status', 'false' );196 193 197 194 } -
automatic-translations-for-polylang/tags/1.4.6/helper/class-atfp-helper.php
r3347861 r3388730 313 313 } 314 314 } 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 } 315 346 } 316 347 } -
automatic-translations-for-polylang/tags/1.4.6/includes/block-translation-rules/block-rules.json
r3270250 r3388730 56 56 } 57 57 ] 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 } 58 76 ] 59 77 } … … 96 114 }, 97 115 "core/read-more": { 98 "attributes": {99 "content": true100 }101 },102 "core/code": {103 116 "attributes": { 104 117 "content": true … … 1315 1328 ] 1316 1329 } 1330 }, 1331 "rank-math/toc-block":{ 1332 "attributes":{ 1333 "title": true 1334 } 1317 1335 } 1318 1336 } -
automatic-translations-for-polylang/tags/1.4.6/includes/class-atfp-register-backend-assets.php
r3347861 r3388730 30 30 { 31 31 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')); 33 34 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 } 35 73 } 36 74 … … 38 76 * Register block translator assets. 39 77 */ 40 public function register_block_translator_assets()78 public function block_inline_translation_assets() 41 79 { 42 80 43 81 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 } 84 84 } 85 85 … … 96 96 if (method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor()) { 97 97 $from_post_id = isset($_GET['from_post']) ? absint($_GET['from_post']) : 0; 98 98 99 99 global $post; 100 100 101 101 if (null === $post || 0 === $from_post_id) { 102 102 return; 103 103 } 104 105 $lang = isset($_GET['new_lang']) ? sanitize_key($_GET['new_lang']) : ''; 104 106 105 107 $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'); 107 111 $editor = 'Elementor'; 108 112 } 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')) { 110 114 $editor = 'Divi'; 111 115 } … … 118 122 119 123 $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; 122 126 } 123 127 124 128 $post_translate = PLL()->model->is_translated_post_type($post->post_type); 125 $lang = isset($_GET['new_lang']) ? sanitize_key($_GET['new_lang']) : '';129 126 130 $post_type = isset($_GET['post_type']) ? sanitize_key($_GET['post_type']) : ''; 127 131 128 132 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 script133 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 152 133 $data = array( 153 134 'action_fetch' => 'atfp_fetch_post_content', … … 165 146 { 166 147 167 $this->elementor_ widget_translator_script();148 $this->elementor_inline_translation_assets(); 168 149 169 150 $page_translated = get_post_meta(get_the_ID(), '_atfp_elementor_translated', true); … … 173 154 return; 174 155 } 175 156 176 157 $post_language_slug = pll_get_post_language(get_the_ID(), 'slug'); 177 158 $current_post_id = get_the_ID(); // Get the current post ID 178 159 179 160 if(!class_exists('\Elementor\Plugin') || !property_exists('\Elementor\Plugin', 'instance') ){ 180 161 return; … … 183 164 $elementor_data = \Elementor\Plugin::$instance->documents->get( $current_post_id )->get_elements_data(); 184 165 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); 188 172 189 173 $meta_fields=get_post_meta($current_post_id); … … 193 177 'elementorData' => $elementor_data, 194 178 'metaFields' => $meta_fields, 179 'parent_post_id' => $parent_post_id, 180 'parent_post_title' => get_the_title($parent_post_id), 195 181 ); 196 182 197 183 wp_enqueue_style('atfp-elementor-translate', ATFP_URL . 'assets/css/atfp-elementor-translate.min.css', array(), ATFP_V); 198 184 $this->enqueue_automatic_translate_assets($parent_post_language_slug, $post_language_slug, 'elementor', $data); 199 } 185 } 200 186 201 187 public function enqueue_automatic_translate_assets($source_lang, $target_lang, $editor_type, $extra_data = array()) … … 213 199 214 200 $post_type = get_post_type(); 215 216 201 217 202 $languages = PLL()->model->get_languages_list(); … … 220 205 $lang_object[$lang->slug] = array('name' => $lang->name, 'flag' => $lang->flag_url, 'locale' => $lang->locale); 221 206 } 222 207 223 208 wp_enqueue_style('atfp-automatic-translate-custom'); 209 224 210 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 225 213 226 214 $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 } 227 227 228 228 $data = array_merge(array( … … 230 230 'ajax_nonce' => wp_create_nonce('atfp_translate_nonce'), 231 231 'atfp_url' => esc_url(ATFP_URL), 232 'admin_url' => admin_url(),232 'admin_url' => admin_url(), 233 233 'update_translate_data' => 'atfp_update_translate_data', 234 234 'source_lang' => $source_lang, … … 258 258 * Enqueue the elementor widget translator script. 259 259 */ 260 public function elementor_ widget_translator_script()260 public function elementor_inline_translation_assets() 261 261 { 262 262 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')) { 263 300 if (function_exists('pll_current_language')) { 264 301 $current_language = pll_current_language(); … … 269 306 } 270 307 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', 275 332 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 283 334 ), 284 $ asset['version'],335 $editor_script_asset['version'], 285 336 true 286 337 ); 287 338 339 wp_enqueue_script( 'atfp-inline-translate-modal' ); 340 341 wp_enqueue_script('atfp-' . sanitize_file_name( $type ) . '-inline-translation'); 342 288 343 if ($current_language && $current_language !== '') { 289 344 wp_localize_script( 290 'atfp- elementor-widget-translator',291 'atfp ElementorInlineTranslation',345 'atfp-inline-translate-modal', 346 'atfpInlineTranslation', 292 347 array( 293 348 'pageLanguage' => $current_language, … … 297 352 } 298 353 } 299 }354 } 300 355 } -
automatic-translations-for-polylang/tags/1.4.6/includes/tsconfig.json
r3247105 r3388730 27 27 "skipLibCheck": true, 28 28 "typeRoots": [ 29 "node_modules/@types" ,30 "block-translator/@types"31 ]29 "node_modules/@types" 30 ], 31 "types": [] 32 32 }, 33 33 "include": [ -
automatic-translations-for-polylang/tags/1.4.6/readme.txt
r3347861 r3388730 5 5 Tested up to: 6.8.1 6 6 Requires PHP: 5.6 7 Stable tag: 1.4. 57 Stable tag: 1.4.6 8 8 Author URI: https://coolplugins.net/ 9 9 License: GPLv2 or later … … 220 220 == Changelog == 221 221 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 222 235 = Version 1.4.5 | 21 August 2025 = 236 223 237 * **Fixed:** Addressed security vulnerabilities. 224 238 -
automatic-translations-for-polylang/trunk/admin/atfp-dashboard/css/admin-styles.css
r3325375 r3388730 778 778 } 779 779 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 780 802 .atfp-bulk-translation-post-status-options{ 781 803 display: flex; -
automatic-translations-for-polylang/trunk/admin/atfp-dashboard/views/ai-translations.php
r3347861 r3388730 40 40 'icon' => 'chrome-ai-translate.png', 41 41 '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' 42 50 ] 43 51 ]; -
automatic-translations-for-polylang/trunk/admin/atfp-dashboard/views/free-vs-pro.php
r3347861 r3388730 30 30 'Unlimited Translations' => [false, true], 31 31 '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], 33 36 'Premium Support' => [false, true], 34 37 ]; -
automatic-translations-for-polylang/trunk/admin/atfp-dashboard/views/settings.php
r3347861 r3388730 74 74 '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', 75 75 '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' 76 81 ] 77 82 ]; … … 112 117 <!-- Add bulk translate post status --> 113 118 <label for="bulk-translate-post-status"> 114 <?php echo esc_html__('Bulk Translat ePost Status', $text_domain); ?>119 <?php echo esc_html__('Bulk Translation default Post Status', $text_domain); ?> 115 120 </label> 116 121 <div class="atfp-bulk-translation-post-status-options"> … … 120 125 <label for="draft"><?php echo esc_html__('Draft', $text_domain); ?></label> 121 126 </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> 122 138 </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;"> 123 168 124 169 <?php if (get_option('cpfm_opt_in_choice_cool_translations')) : ?> -
automatic-translations-for-polylang/trunk/admin/atfp-dashboard/views/sidebar.php
r3347861 r3388730 96 96 'free' => 'automatic-translator-addon-for-loco-translate/automatic-translator-addon-for-loco-translate.php', 97 97 'pro' => 'loco-automatic-translate-addon-pro/loco-automatic-translate-addon-pro.php', 98 'free_name' => esc_html__(' Automatic Translate AddonFor 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), 100 100 ], 101 101 ]; -
automatic-translations-for-polylang/trunk/admin/cpt_dashboard/assets/css/cpt-dashboard.css
r3308442 r3388730 5 5 display: flex; 6 6 align-items: center; 7 } 8 9 .cpt-review-notice .notice-dismiss{ 10 display: none; 7 11 } 8 12 -
automatic-translations-for-polylang/trunk/admin/cpt_dashboard/cpt_dashboard.php
r3347861 r3388730 233 233 } 234 234 235 public static function review_notice($prefix, $plugin_name, $url , $icon=''){235 public static function review_notice($prefix, $plugin_name, $url){ 236 236 if(self::atfp_hide_review_notice_status($prefix)){ 237 237 return; … … 253 253 254 254 $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 263 261 264 262 $prefix = sanitize_key($prefix); 265 $message = wp_kses_post($message);266 263 $url = esc_url($url); 267 264 $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">'; 276 280 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); 278 284 }); 279 285 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>'; 286 289 287 echo wp_kses _post($html);290 echo wp_kses($html, $allowed); 288 291 }); 289 292 } -
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 > Languages > 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 > Languages > 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 43 43 44 44 #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; 46 48 font-size: 13px; 47 line-height: 2.15384615;49 line-height: 1.3; 48 50 min-height: 30px; 49 51 margin: 0; … … 185 187 } 186 188 187 button.atfp p-error-reload-btn{189 button.atfp-error-reload-btn{ 188 190 background: #0073aa; 189 191 color: #fff !important; … … 194 196 } 195 197 196 button.atfp p-error-reload-btn:hover{198 button.atfp-error-reload-btn:hover{ 197 199 background: #005682; 198 200 } … … 216 218 217 219 #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; 218 232 background: #f6f7f7; 219 233 border: 1px solid #c3c4c7; 220 234 color: #50575e; 235 padding: 5px; 236 border-radius: 3px; 221 237 } 222 238 … … 249 265 display: inline-flex; 250 266 align-items: center; 251 justify-content: center;252 267 } 253 268 … … 334 349 display: flex; 335 350 align-items: center; 336 font-size: 1 rem;351 font-size: 16px; 337 352 font-weight: 600; 338 353 margin-block: .5rem; … … 360 375 .atfp-setting-modal-body tbody .button{ 361 376 width: 123px; 362 display: inline-block; 377 display: inline-flex; 378 align-items: center; 379 justify-content: center; 363 380 font-size: 13px; 364 line-height: 2.15384615;381 line-height: 1.3; 365 382 min-height: 30px; 366 383 margin: 0; … … 444 461 445 462 #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; 446 475 background: #f6f7f7; 447 476 border: 1px solid #c3c4c7; 448 477 color: #50575e; 478 padding: 5px; 479 border-radius: 3px; 449 480 } 450 481 … … 468 499 margin: 0; 469 500 font-size: 14px; 501 color: #3c3c3c; 470 502 } 471 503 … … 616 648 } 617 649 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 618 692 619 693 .local_ai_translator_btn.button-primary { … … 622 696 color: #fff; 623 697 text-shadow: none; 624 display: inline-block; 698 display: inline-flex; 699 align-items: center; 700 justify-content: center; 625 701 text-decoration: none; 626 702 font-size: 13px; 627 line-height: 2.15384615;703 line-height: 1.3; 628 704 min-height: 30px; 629 705 margin: 0; … … 698 774 overflow-y: auto; 699 775 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)); 701 777 width: 100%; 702 778 position: relative; … … 966 1042 } 967 1043 968 #atfp_strings_model #atfp-localAiTranslator-strings-modal.atfp_string_container {1044 #atfp_strings_model .atfp_string_container { 969 1045 max-height: calc(100vh - 270px - var(--atfp-notice-wrapper-height, 0px)); 970 1046 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)); 971 1051 } 972 1052 … … 975 1055 margin-block: 16px; 976 1056 } 977 978 1057 979 1058 #atfp-pro-notice-wrapper { … … 1183 1262 } 1184 1263 } 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: #F0ABFC5 }1 button.elementor-button.atfp-translate-button:enabled { 2 border-radius: 0px; 3 color: rgb(12, 13, 14); 4 background-color: #F0ABFC 5 } 6 6 7 button.elementor-button.atfp-translate-button:enabled:hover {8 background-color: rgb(235, 142, 251);9 }7 button.elementor-button.atfp-translate-button:enabled:hover { 8 background-color: rgb(235, 142, 251); 9 } 10 10 11 button.elementor-button.atfp-translate-button:disabled {12 cursor: default;13 border-radius: 0px;14 color: rgb(12, 13, 14);15 }11 button.elementor-button.atfp-translate-button:disabled { 12 cursor: default; 13 border-radius: 0px; 14 color: rgb(12, 13, 14); 15 } 16 16 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 */ 18 button.atfp-setting-close { 19 margin-top: .9rem; 20 font-size: 1rem; 21 padding: .1rem .4rem; 22 cursor: pointer; 23 opacity: .7; 24 } 25 25 26 button.atfp-setting-close:hover {27 opacity: 1;28 }26 button.atfp-setting-close:hover { 27 opacity: 1; 28 } 29 29 30 /* ******Popup***** */30 /* ******Popup***** */ 31 31 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 } 43 43 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 } 55 55 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}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:.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 31 31 } 32 32 33 const length = e.dt.page.info().length; 34 const page = e.dt.page.info().page; 35 33 36 rows.each(function(index,row){ 34 37 const emptyCell=row.querySelector('td.dt-empty'); 35 38 if(!emptyCell){ 36 row.children[0].textContent =index+1;39 row.children[0].textContent = (page * length) + index + 1; 37 40 } 38 41 }); -
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});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();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 1 1 const { parse } = wp.blocks; 2 const { select, subscribe } = wp.data; 3 2 4 class blockDataReterive { 3 5 constructor() { 6 if(document.querySelector('.atfp-overlay')) { 7 return; 8 } 9 4 10 this.blockLists = []; 5 11 this.customBlockTranslateData = {}; … … 11 17 init = () => { 12 18 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'); 20 28 } 21 29 … … 62 70 .then(response => response.json()) 63 71 .then(data => { 64 if (data.message === 'No custom blocks found.'){72 if (data.message === 'No custom blocks found.') { 65 73 this.loaderContainer && this.loaderContainer.remove(); 66 74 return; 67 75 } 68 76 69 77 const customBlocks = parse(data.data.block_data); 70 78 … … 80 88 } 81 89 82 saveBlockData =()=>{83 if (Object.keys(this.customBlockTranslateData).length < 1){90 saveBlockData = () => { 91 if (Object.keys(this.customBlockTranslateData).length < 1) { 84 92 this.loaderContainer && this.loaderContainer.remove(); 85 93 return; … … 87 95 88 96 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 = { 93 101 atfp_nonce: atfp_block_update_object.ajax_nonce, 94 102 action: atfp_block_update_object.action_update_content, … … 107 115 .then(response => response.json()) 108 116 .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) { 111 120 console.log(data.data.message); 112 121 } 113 122 }) 114 123 .catch(error => { 115 this.loaderContainer && this.loaderContainer.remove(); 124 this.setOverlayState('error'); 125 this.teardownOverlay(); 116 126 console.error('Error fetching block rules:', error); 117 127 }); … … 178 188 } else if (typeof value === 'string' && /Make This Content Available for Translation/i.test(value)) { 179 189 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)) { 181 191 this.nestedAttrValue(idsArray, value.originalHTML); 182 192 } … … 197 207 const newIdArr = new Array(...idsArr); 198 208 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))) { 201 211 newIdArr.push(key); 202 212 this.filterAttr(newIdArr, blockData[key]); … … 232 242 } 233 243 }); 234 235 244 236 245 if (Object.values(blockAttributes).length > 0) { 237 246 this.filterBlockAttribute(blockAttributes); 238 247 } 239 248 } 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 240 301 } 241 302 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 }); 303 const debounce = (func, delay) => { 304 let timeoutId; 305 return function (...args) { 306 clearTimeout(timeoutId); 307 timeoutId = setTimeout(() => func.apply(this, args), delay); 308 }; 309 }; 310 311 let isBlockContentUpdating = false; 312 const saveBlockContent = debounce(() => { 313 new blockDataReterive(); 314 isBlockContentUpdating = false; 315 }, 500); 316 317 if (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});1 const{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 3 3 Plugin Name: AutoPoly - AI Translation For Polylang 4 4 Plugin URI: https://coolplugins.net/ 5 Version: 1.4. 55 Version: 1.4.6 6 6 Author: Cool Plugins 7 7 Author URI: https://coolplugins.net/?utm_source=atfp_plugin&utm_medium=inside&utm_campaign=author_page&utm_content=plugin_list … … 16 16 } 17 17 if ( ! defined( 'ATFP_V' ) ) { 18 define( 'ATFP_V', '1.4. 5' );18 define( 'ATFP_V', '1.4.6' ); 19 19 } 20 20 if ( ! defined( 'ATFP_DIR_PATH' ) ) { … … 518 518 'AutoPoly - AI Translation For Polylang', // Required 519 519 'https://wordpress.org/support/plugin/automatic-translations-for-polylang/reviews/#new-post', // Required 520 ATFP_URL .'assets/images/ai-translation-for-Polylang.svg' // Required521 520 ); 522 521 } -
automatic-translations-for-polylang/trunk/helper/class-atfp-ajax-handler.php
r3347861 r3388730 159 159 wp_send_json_error( __( 'Invalid security token sent.', 'autopoly-ai-translation-for-polylang' ) ); 160 160 wp_die( '0', 400 ); 161 exit(); 162 } 163 164 if(!current_user_can('manage_options')){ 161 } 162 163 if(!current_user_can('edit_posts')){ 165 164 wp_send_json_error( __( 'Unauthorized', 'autopoly-ai-translation-for-polylang' ), 403 ); 166 165 wp_die( '0', 403 ); … … 172 171 wp_send_json_error( __( 'Invalid JSON', 'autopoly-ai-translation-for-polylang' ) ); 173 172 wp_die( '0', 400 ); 174 exit();175 173 } 176 174 … … 193 191 194 192 delete_option( 'atfp_custom_block_data' ); 195 update_option( 'atfp_custom_block_status', 'false' );196 193 197 194 } -
automatic-translations-for-polylang/trunk/helper/class-atfp-helper.php
r3347861 r3388730 313 313 } 314 314 } 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 } 315 346 } 316 347 } -
automatic-translations-for-polylang/trunk/includes/block-translation-rules/block-rules.json
r3270250 r3388730 56 56 } 57 57 ] 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 } 58 76 ] 59 77 } … … 96 114 }, 97 115 "core/read-more": { 98 "attributes": {99 "content": true100 }101 },102 "core/code": {103 116 "attributes": { 104 117 "content": true … … 1315 1328 ] 1316 1329 } 1330 }, 1331 "rank-math/toc-block":{ 1332 "attributes":{ 1333 "title": true 1334 } 1317 1335 } 1318 1336 } -
automatic-translations-for-polylang/trunk/includes/class-atfp-register-backend-assets.php
r3347861 r3388730 30 30 { 31 31 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')); 33 34 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 } 35 73 } 36 74 … … 38 76 * Register block translator assets. 39 77 */ 40 public function register_block_translator_assets()78 public function block_inline_translation_assets() 41 79 { 42 80 43 81 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 } 84 84 } 85 85 … … 96 96 if (method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor()) { 97 97 $from_post_id = isset($_GET['from_post']) ? absint($_GET['from_post']) : 0; 98 98 99 99 global $post; 100 100 101 101 if (null === $post || 0 === $from_post_id) { 102 102 return; 103 103 } 104 105 $lang = isset($_GET['new_lang']) ? sanitize_key($_GET['new_lang']) : ''; 104 106 105 107 $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'); 107 111 $editor = 'Elementor'; 108 112 } 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')) { 110 114 $editor = 'Divi'; 111 115 } … … 118 122 119 123 $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; 122 126 } 123 127 124 128 $post_translate = PLL()->model->is_translated_post_type($post->post_type); 125 $lang = isset($_GET['new_lang']) ? sanitize_key($_GET['new_lang']) : '';129 126 130 $post_type = isset($_GET['post_type']) ? sanitize_key($_GET['post_type']) : ''; 127 131 128 132 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 script133 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 152 133 $data = array( 153 134 'action_fetch' => 'atfp_fetch_post_content', … … 165 146 { 166 147 167 $this->elementor_ widget_translator_script();148 $this->elementor_inline_translation_assets(); 168 149 169 150 $page_translated = get_post_meta(get_the_ID(), '_atfp_elementor_translated', true); … … 173 154 return; 174 155 } 175 156 176 157 $post_language_slug = pll_get_post_language(get_the_ID(), 'slug'); 177 158 $current_post_id = get_the_ID(); // Get the current post ID 178 159 179 160 if(!class_exists('\Elementor\Plugin') || !property_exists('\Elementor\Plugin', 'instance') ){ 180 161 return; … … 183 164 $elementor_data = \Elementor\Plugin::$instance->documents->get( $current_post_id )->get_elements_data(); 184 165 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); 188 172 189 173 $meta_fields=get_post_meta($current_post_id); … … 193 177 'elementorData' => $elementor_data, 194 178 'metaFields' => $meta_fields, 179 'parent_post_id' => $parent_post_id, 180 'parent_post_title' => get_the_title($parent_post_id), 195 181 ); 196 182 197 183 wp_enqueue_style('atfp-elementor-translate', ATFP_URL . 'assets/css/atfp-elementor-translate.min.css', array(), ATFP_V); 198 184 $this->enqueue_automatic_translate_assets($parent_post_language_slug, $post_language_slug, 'elementor', $data); 199 } 185 } 200 186 201 187 public function enqueue_automatic_translate_assets($source_lang, $target_lang, $editor_type, $extra_data = array()) … … 213 199 214 200 $post_type = get_post_type(); 215 216 201 217 202 $languages = PLL()->model->get_languages_list(); … … 220 205 $lang_object[$lang->slug] = array('name' => $lang->name, 'flag' => $lang->flag_url, 'locale' => $lang->locale); 221 206 } 222 207 223 208 wp_enqueue_style('atfp-automatic-translate-custom'); 209 224 210 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 225 213 226 214 $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 } 227 227 228 228 $data = array_merge(array( … … 230 230 'ajax_nonce' => wp_create_nonce('atfp_translate_nonce'), 231 231 'atfp_url' => esc_url(ATFP_URL), 232 'admin_url' => admin_url(),232 'admin_url' => admin_url(), 233 233 'update_translate_data' => 'atfp_update_translate_data', 234 234 'source_lang' => $source_lang, … … 258 258 * Enqueue the elementor widget translator script. 259 259 */ 260 public function elementor_ widget_translator_script()260 public function elementor_inline_translation_assets() 261 261 { 262 262 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')) { 263 300 if (function_exists('pll_current_language')) { 264 301 $current_language = pll_current_language(); … … 269 306 } 270 307 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', 275 332 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 283 334 ), 284 $ asset['version'],335 $editor_script_asset['version'], 285 336 true 286 337 ); 287 338 339 wp_enqueue_script( 'atfp-inline-translate-modal' ); 340 341 wp_enqueue_script('atfp-' . sanitize_file_name( $type ) . '-inline-translation'); 342 288 343 if ($current_language && $current_language !== '') { 289 344 wp_localize_script( 290 'atfp- elementor-widget-translator',291 'atfp ElementorInlineTranslation',345 'atfp-inline-translate-modal', 346 'atfpInlineTranslation', 292 347 array( 293 348 'pageLanguage' => $current_language, … … 297 352 } 298 353 } 299 }354 } 300 355 } -
automatic-translations-for-polylang/trunk/includes/tsconfig.json
r3247105 r3388730 27 27 "skipLibCheck": true, 28 28 "typeRoots": [ 29 "node_modules/@types" ,30 "block-translator/@types"31 ]29 "node_modules/@types" 30 ], 31 "types": [] 32 32 }, 33 33 "include": [ -
automatic-translations-for-polylang/trunk/readme.txt
r3347861 r3388730 5 5 Tested up to: 6.8.1 6 6 Requires PHP: 5.6 7 Stable tag: 1.4. 57 Stable tag: 1.4.6 8 8 Author URI: https://coolplugins.net/ 9 9 License: GPLv2 or later … … 220 220 == Changelog == 221 221 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 222 235 = Version 1.4.5 | 21 August 2025 = 236 223 237 * **Fixed:** Addressed security vulnerabilities. 224 238
Note: See TracChangeset
for help on using the changeset viewer.