Changeset 3359717
- Timestamp:
- 09/11/2025 09:21:39 AM (7 months ago)
- Location:
- hcaptcha-for-forms-and-more
- Files:
-
- 22 added
- 112 edited
- 1 copied
-
tags/4.17.0 (copied) (copied from hcaptcha-for-forms-and-more/trunk)
-
tags/4.17.0/assets/css/general.css (modified) (4 diffs)
-
tags/4.17.0/assets/css/general.min.css (modified) (1 diff)
-
tags/4.17.0/assets/css/integrations.css (modified) (2 diffs)
-
tags/4.17.0/assets/css/integrations.min.css (modified) (1 diff)
-
tags/4.17.0/assets/images/antispam-honeypot.svg (added)
-
tags/4.17.0/assets/js/admin-jetpack.js (modified) (1 diff)
-
tags/4.17.0/assets/js/apps/hcaptcha.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-avada.js (added)
-
tags/4.17.0/assets/js/hcaptcha-avada.min.js (added)
-
tags/4.17.0/assets/js/hcaptcha-back-in-stock-notifier.min.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-beaver-builder.min.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-brizy.min.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-customer-reviews.js (modified) (2 diffs)
-
tags/4.17.0/assets/js/hcaptcha-customer-reviews.min.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-divi-email-optin.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-divi-email-optin.min.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-fst.js (added)
-
tags/4.17.0/assets/js/hcaptcha-fst.min.js (added)
-
tags/4.17.0/assets/js/hcaptcha-helper.js (modified) (2 diffs)
-
tags/4.17.0/assets/js/hcaptcha-jetpack.js (added)
-
tags/4.17.0/assets/js/hcaptcha-jetpack.min.js (added)
-
tags/4.17.0/assets/js/hcaptcha-nf.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-nf.min.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-passster.min.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-spectra.js (modified) (2 diffs)
-
tags/4.17.0/assets/js/hcaptcha-spectra.min.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-ultimate-addons.min.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-wc-block-checkout.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-wc-block-checkout.min.js (modified) (1 diff)
-
tags/4.17.0/assets/js/hcaptcha-wpforms.js (added)
-
tags/4.17.0/assets/js/hcaptcha-wpforms.min.js (added)
-
tags/4.17.0/changelog.txt (modified) (1 diff)
-
tags/4.17.0/composer.json (modified) (1 diff)
-
tags/4.17.0/hcaptcha.php (modified) (2 diffs)
-
tags/4.17.0/readme.txt (modified) (2 diffs)
-
tags/4.17.0/src/php/Abstracts/CommentBase.php (modified) (1 diff)
-
tags/4.17.0/src/php/AntiSpam/Honeypot.php (added)
-
tags/4.17.0/src/php/Avada/Form.php (modified) (4 diffs)
-
tags/4.17.0/src/php/CustomerReviews/QuestionAnswer.php (modified) (2 diffs)
-
tags/4.17.0/src/php/CustomerReviews/Review.php (modified) (1 diff)
-
tags/4.17.0/src/php/Divi/Contact.php (modified) (4 diffs)
-
tags/4.17.0/src/php/Divi/EmailOptin.php (modified) (2 diffs)
-
tags/4.17.0/src/php/Helpers/API.php (modified) (4 diffs)
-
tags/4.17.0/src/php/Helpers/DB.php (modified) (1 diff)
-
tags/4.17.0/src/php/Helpers/FormSubmitTime.php (added)
-
tags/4.17.0/src/php/Helpers/HCaptcha.php (modified) (4 diffs)
-
tags/4.17.0/src/php/Helpers/Utils.php (modified) (1 diff)
-
tags/4.17.0/src/php/Jetpack/Base.php (modified) (3 diffs)
-
tags/4.17.0/src/php/Main.php (modified) (9 diffs)
-
tags/4.17.0/src/php/Migrations/Migrations.php (modified) (10 diffs)
-
tags/4.17.0/src/php/NF/NF.php (modified) (6 diffs)
-
tags/4.17.0/src/php/ProtectContent/ProtectContent.php (modified) (2 diffs)
-
tags/4.17.0/src/php/Settings/Abstracts/SettingsBase.php (modified) (3 diffs)
-
tags/4.17.0/src/php/Settings/General.php (modified) (6 diffs)
-
tags/4.17.0/src/php/Settings/Integrations.php (modified) (5 diffs)
-
tags/4.17.0/src/php/Settings/ListPageBase.php (modified) (10 diffs)
-
tags/4.17.0/src/php/Settings/PluginSettingsBase.php (modified) (3 diffs)
-
tags/4.17.0/src/php/Settings/Settings.php (modified) (8 diffs)
-
tags/4.17.0/src/php/Spectra/Form.php (modified) (3 diffs)
-
tags/4.17.0/src/php/WC/Checkout.php (modified) (3 diffs)
-
tags/4.17.0/src/php/WPForms/Form.php (modified) (3 diffs)
-
tags/4.17.0/src/php/includes/request.php (modified) (2 diffs)
-
tags/4.17.0/vendor/autoload.php (modified) (1 diff)
-
tags/4.17.0/vendor/composer/autoload_classmap.php (modified) (2 diffs)
-
tags/4.17.0/vendor/composer/autoload_real.php (modified) (2 diffs)
-
tags/4.17.0/vendor/composer/autoload_static.php (modified) (4 diffs)
-
tags/4.17.0/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/assets/css/general.css (modified) (4 diffs)
-
trunk/assets/css/general.min.css (modified) (1 diff)
-
trunk/assets/css/integrations.css (modified) (2 diffs)
-
trunk/assets/css/integrations.min.css (modified) (1 diff)
-
trunk/assets/images/antispam-honeypot.svg (added)
-
trunk/assets/js/admin-jetpack.js (modified) (1 diff)
-
trunk/assets/js/apps/hcaptcha.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-avada.js (added)
-
trunk/assets/js/hcaptcha-avada.min.js (added)
-
trunk/assets/js/hcaptcha-back-in-stock-notifier.min.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-beaver-builder.min.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-brizy.min.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-customer-reviews.js (modified) (2 diffs)
-
trunk/assets/js/hcaptcha-customer-reviews.min.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-divi-email-optin.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-divi-email-optin.min.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-fst.js (added)
-
trunk/assets/js/hcaptcha-fst.min.js (added)
-
trunk/assets/js/hcaptcha-helper.js (modified) (2 diffs)
-
trunk/assets/js/hcaptcha-jetpack.js (added)
-
trunk/assets/js/hcaptcha-jetpack.min.js (added)
-
trunk/assets/js/hcaptcha-nf.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-nf.min.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-passster.min.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-spectra.js (modified) (2 diffs)
-
trunk/assets/js/hcaptcha-spectra.min.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-ultimate-addons.min.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-wc-block-checkout.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-wc-block-checkout.min.js (modified) (1 diff)
-
trunk/assets/js/hcaptcha-wpforms.js (added)
-
trunk/assets/js/hcaptcha-wpforms.min.js (added)
-
trunk/changelog.txt (modified) (1 diff)
-
trunk/composer.json (modified) (1 diff)
-
trunk/hcaptcha.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/src/php/Abstracts/CommentBase.php (modified) (1 diff)
-
trunk/src/php/AntiSpam/Honeypot.php (added)
-
trunk/src/php/Avada/Form.php (modified) (4 diffs)
-
trunk/src/php/CustomerReviews/QuestionAnswer.php (modified) (2 diffs)
-
trunk/src/php/CustomerReviews/Review.php (modified) (1 diff)
-
trunk/src/php/Divi/Contact.php (modified) (4 diffs)
-
trunk/src/php/Divi/EmailOptin.php (modified) (2 diffs)
-
trunk/src/php/Helpers/API.php (modified) (4 diffs)
-
trunk/src/php/Helpers/DB.php (modified) (1 diff)
-
trunk/src/php/Helpers/FormSubmitTime.php (added)
-
trunk/src/php/Helpers/HCaptcha.php (modified) (4 diffs)
-
trunk/src/php/Helpers/Utils.php (modified) (1 diff)
-
trunk/src/php/Jetpack/Base.php (modified) (3 diffs)
-
trunk/src/php/Main.php (modified) (9 diffs)
-
trunk/src/php/Migrations/Migrations.php (modified) (10 diffs)
-
trunk/src/php/NF/NF.php (modified) (6 diffs)
-
trunk/src/php/ProtectContent/ProtectContent.php (modified) (2 diffs)
-
trunk/src/php/Settings/Abstracts/SettingsBase.php (modified) (3 diffs)
-
trunk/src/php/Settings/General.php (modified) (6 diffs)
-
trunk/src/php/Settings/Integrations.php (modified) (5 diffs)
-
trunk/src/php/Settings/ListPageBase.php (modified) (10 diffs)
-
trunk/src/php/Settings/PluginSettingsBase.php (modified) (3 diffs)
-
trunk/src/php/Settings/Settings.php (modified) (8 diffs)
-
trunk/src/php/Spectra/Form.php (modified) (3 diffs)
-
trunk/src/php/WC/Checkout.php (modified) (3 diffs)
-
trunk/src/php/WPForms/Form.php (modified) (3 diffs)
-
trunk/src/php/includes/request.php (modified) (2 diffs)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_classmap.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (4 diffs)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
hcaptcha-for-forms-and-more/tags/4.17.0/assets/css/general.css
r3319903 r3359717 328 328 grid-template-columns: repeat(2, 1fr); 329 329 grid-template-areas: 330 "set-min-submit-time min-submit-time" 331 "honeypot min-submit-time" 330 332 "antispam antispam-provider"; 331 333 gap: 0 20px; … … 333 335 } 334 336 337 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-set-min-submit-time { 338 grid-area: set-min-submit-time; 339 } 340 341 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-min-submit-time { 342 grid-area: min-submit-time; 343 } 344 345 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-honeypot { 346 grid-area: honeypot; 347 } 348 335 349 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-antispam { 336 350 grid-area: antispam; 351 padding-top: 15px; 337 352 } 338 353 339 354 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-antispam-provider { 340 355 grid-area: antispam-provider; 356 padding-top: 15px; 341 357 } 342 358 … … 355 371 } 356 372 373 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-min-submit-time td, 357 374 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-antispam-provider td { 358 375 width: auto; … … 361 378 .hcaptcha-section-antispam + table tbody tr td input, 362 379 .hcaptcha-section-antispam + table tbody tr td select { 380 width: 100%; 381 } 382 383 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-honeypot th { 384 padding: 0; 385 } 386 387 .hcaptcha-section-antispam + table tbody tr td input { 363 388 width: 100%; 364 389 } -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/css/general.min.css
r3319903 r3359717 1 #hcaptcha-message,#setting-error-settings_updated{box-sizing:border-box;max-width:760px}.hcaptcha-loading:before{background:hsla(0,0%,100%,.8);content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:9999}.hcaptcha-loading:after{animation:hcaptcha-spin 1s linear infinite;border:4px solid #ccc;border-radius:50%;border-top-color:#5c6f8a;content:"";height:28px;left:calc(50% - 18px);position:absolute;top:calc(50% - 18px);width:28px;z-index:10000}@keyframes hcaptcha-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}#hcaptcha-options table tbody{background:#fff}#hcaptcha-options table tbody tr{align-self:start;display:grid}#hcaptcha-options table tbody tr th{color:#5c6f8a}#hcaptcha-options table tbody tr td{margin:0;padding:0;position:relative}#hcaptcha-options .h-captcha{margin-bottom:0}#hcaptcha-options.hcaptcha-general h3{background:#fff;box-sizing:border-box;color:#5c6f8a;cursor:pointer;display:flex;justify-content:space-between;margin:1.5em 0 0;max-width:760px;padding:15px 20px}#hcaptcha-options.hcaptcha-general h3.disabled{opacity:.6}.hcaptcha-section-header-toggle:after{content:"\f142";font:normal 20px dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h3.closed .hcaptcha-section-header-toggle:after{content:"\f140"}#hcaptcha-options.hcaptcha-general h3+table{margin-top:0;max-width:760px;position:relative}#hcaptcha-options.hcaptcha-general h3.disabled+table{opacity:.6}#hcaptcha-options.hcaptcha-general h3.closed+table{display:none}#hcaptcha-options.hcaptcha-general h3+table:before{border-bottom:1px solid #c3c4c7;content:"";margin:0 20px;max-width:720px;position:absolute;top:0;width:calc(100% - 40px)}.hcaptcha-section-keys+table tbody{display:grid;gap:10px 20px;grid-template-areas:"site-key site-key secret-key secret-key" "sample-hcaptcha sample-hcaptcha check-config reset-notifications";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-keys+table tbody th{width:auto}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-site-key{grid-area:site-key}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-secret-key{grid-area:secret-key}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-sample-hcaptcha{grid-area:sample-hcaptcha}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-check-config{grid-area:check-config}.hcaptcha-section-keys+table tbody tr.hcaptcha-reset-notifications{grid-area:reset-notifications}.hcaptcha-section-keys+table tbody tr th{padding:0 0 10px}.hcaptcha-section-keys+table tbody tr td input{width:100%}.hcaptcha-section-appearance+table tbody{display:grid;gap:10px 20px;grid-template-areas:"theme size language mode" "force force position position";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-theme{grid-area:theme}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-size{grid-area:size}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-language{grid-area:language}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-mode{grid-area:mode}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-force{grid-area:force}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-menu-position{grid-area:position}.hcaptcha-section-appearance+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-force td,.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-menu-position td{width:max-content}.hcaptcha-section-appearance+table tbody tr td select{width:100%}.hcaptcha-section-custom+table tbody{display:grid;gap:10px 20px;grid-template-areas:"custom-themes custom-themes config-params config-params" "custom-prop custom-value config-params config-params";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-themes{grid-area:custom-themes}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-config-params{grid-area:config-params}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-prop{grid-area:custom-prop}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-value{grid-area:custom-value}.hcaptcha-section-custom+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-themes td{width:max-content}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-config-params td{width:auto}.hcaptcha-section-custom+table tbody tr td select,.hcaptcha-section-custom+table tbody tr td textarea{width:100%}.hcaptcha-section-custom+table tbody tr td select option:disabled{background:#f0f0f1;color:#2c3338}.hcaptcha-section-custom+table tbody tr td input{height:30px;width:100%}.hcaptcha-section-enterprise+table tbody{display:grid;gap:10px 20px;grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-enterprise+table tbody th{width:auto}.hcaptcha-section-enterprise+table tbody tr th{padding:0 0 10px}.hcaptcha-section-enterprise+table tbody tr td input{width:100%}.hcaptcha-section-content+table tbody{display:grid;gap:0 20px;grid-template-areas:"content protected-urls";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-content+table tbody tr.hcaptcha-general-content{grid-area:content}.hcaptcha-section-content+table tbody tr.hcaptcha-general-protected-urls{grid-area:protected-urls}.hcaptcha-section-content+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-content+table tbody tr td{width:max-content}.hcaptcha-section-content+table tbody tr.hcaptcha-general-protected-urls td{width:auto}.hcaptcha-section-content+table tbody tr td input,.hcaptcha-section-content+table tbody tr td textarea{width:100%}.hcaptcha-section-antispam+table tbody{display:grid;gap:0 20px;grid-template-areas:" antispam antispam-provider";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam{grid-area:antispam}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam-provider{grid-area:antispam-provider}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam-provider div{color:#d63638;margin-top:.5em}.hcaptcha-section-antispam+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-antispam+table tbody tr td{width:max-content}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam-provider td{width:auto}.hcaptcha-section-antispam+table tbody tr td input,.hcaptcha-section-antispam+table tbody tr td select{width:100%}.hcaptcha-section-other+table tbody{display:grid;gap:0 20px;grid-template-areas:"blacklisted whitelisted" "logged recaptcha" "hide-login-errors cleanup-on-uninstall" "network ." "login-limit login-interval" "delay .";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in{grid-area:logged}.hcaptcha-section-other+table tbody tr.hcaptcha-general-recaptcha-compat-off{grid-area:recaptcha}.hcaptcha-section-other+table tbody tr.hcaptcha-general-hide-login-errors{grid-area:hide-login-errors}.hcaptcha-section-other+table tbody tr.hcaptcha-general-cleanup-on-uninstall{grid-area:cleanup-on-uninstall}.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-limit{grid-area:login-limit;padding-top:15px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-interval{grid-area:login-interval;padding-top:15px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips{grid-area:whitelisted}.hcaptcha-section-other+table tbody tr.hcaptcha-general--network-wide{grid-area:network}.hcaptcha-section-other+table tbody tr.hcaptcha-general-delay{grid-area:delay;padding-top:15px}.hcaptcha-section-other+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-other+table tbody tr.hcaptcha-general--network-wide th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-cleanup-on-uninstall th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-hide-login-errors th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-recaptcha-compat-off th{padding:0}.hcaptcha-section-other+table tbody tr td{width:max-content}.hcaptcha-section-other+table tbody tr.hcaptcha-general-blacklisted-ips td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-delay td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-interval td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-limit td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips td{width:auto}.hcaptcha-section-other+table tbody tr td input,.hcaptcha-section-other+table tbody tr td textarea{width:100%}.hcaptcha-section-statistics+table tbody{display:grid;gap:0 20px;grid-template-areas:"statistics collect-ip" "anonymous collect-ua";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-statistics{grid-area:statistics}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-anonymous{grid-area:anonymous}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ip{grid-area:collect-ip}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ua{grid-area:collect-ua}.hcaptcha-section-statistics+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-anonymous th,.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ua th{padding:0}.hcaptcha-section-statistics+table tbody tr td{width:max-content}@media (max-width:600px){.hcaptcha-section-keys+table tbody{grid-template-areas:"site-key site-key" "secret-key secret-key" "sample-hcaptcha sample-hcaptcha" "check-config reset-notifications";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-appearance+table tbody{grid-template-areas:"theme size" "language mode" "force force" "position position";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-appearance+table tbody tr td{width:unset!important}.hcaptcha-section-custom+table tbody{grid-template-areas:"custom-themes custom-themes" "custom-prop custom-value" "config-params config-params";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-custom+table tbody tr td{width:unset!important}.hcaptcha-section-enterprise+table tbody{grid-template-columns:repeat(1,1fr)!important}.hcaptcha-section-enterprise+table tbody tr td{width:unset!important}.hcaptcha-section-content+table tbody{grid-template-areas:"content" "protected-urls";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-content+table tbody tr td{width:unset!important}.hcaptcha-section-antispam+table tbody{grid-template-areas:"antispam" "antispam-provider";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-antispam+table tbody tr td{width:unset!important}.hcaptcha-section-other+table tbody{grid-template-areas:"blacklisted" "whitelisted" "logged" "recaptcha" "hide-login-errors" "cleanup-on-uninstall" "network" "login-limit" "login-interval" "delay";grid-template-columns:repeat(1,1fr)!important}.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in,.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips{padding-top:10px}.hcaptcha-section-other+table tbody tr td{width:unset!important}.hcaptcha-section-statistics+table tbody{grid-template-areas:"statistics" "anonymous" "collect-ip" "collect-ua";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-statistics+table tbody tr td{width:unset!important}}1 #hcaptcha-message,#setting-error-settings_updated{box-sizing:border-box;max-width:760px}.hcaptcha-loading:before{background:hsla(0,0%,100%,.8);content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:9999}.hcaptcha-loading:after{animation:hcaptcha-spin 1s linear infinite;border:4px solid #ccc;border-radius:50%;border-top-color:#5c6f8a;content:"";height:28px;left:calc(50% - 18px);position:absolute;top:calc(50% - 18px);width:28px;z-index:10000}@keyframes hcaptcha-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}#hcaptcha-options table tbody{background:#fff}#hcaptcha-options table tbody tr{align-self:start;display:grid}#hcaptcha-options table tbody tr th{color:#5c6f8a}#hcaptcha-options table tbody tr td{margin:0;padding:0;position:relative}#hcaptcha-options .h-captcha{margin-bottom:0}#hcaptcha-options.hcaptcha-general h3{background:#fff;box-sizing:border-box;color:#5c6f8a;cursor:pointer;display:flex;justify-content:space-between;margin:1.5em 0 0;max-width:760px;padding:15px 20px}#hcaptcha-options.hcaptcha-general h3.disabled{opacity:.6}.hcaptcha-section-header-toggle:after{content:"\f142";font:normal 20px dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h3.closed .hcaptcha-section-header-toggle:after{content:"\f140"}#hcaptcha-options.hcaptcha-general h3+table{margin-top:0;max-width:760px;position:relative}#hcaptcha-options.hcaptcha-general h3.disabled+table{opacity:.6}#hcaptcha-options.hcaptcha-general h3.closed+table{display:none}#hcaptcha-options.hcaptcha-general h3+table:before{border-bottom:1px solid #c3c4c7;content:"";margin:0 20px;max-width:720px;position:absolute;top:0;width:calc(100% - 40px)}.hcaptcha-section-keys+table tbody{display:grid;gap:10px 20px;grid-template-areas:"site-key site-key secret-key secret-key" "sample-hcaptcha sample-hcaptcha check-config reset-notifications";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-keys+table tbody th{width:auto}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-site-key{grid-area:site-key}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-secret-key{grid-area:secret-key}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-sample-hcaptcha{grid-area:sample-hcaptcha}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-check-config{grid-area:check-config}.hcaptcha-section-keys+table tbody tr.hcaptcha-reset-notifications{grid-area:reset-notifications}.hcaptcha-section-keys+table tbody tr th{padding:0 0 10px}.hcaptcha-section-keys+table tbody tr td input{width:100%}.hcaptcha-section-appearance+table tbody{display:grid;gap:10px 20px;grid-template-areas:"theme size language mode" "force force position position";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-theme{grid-area:theme}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-size{grid-area:size}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-language{grid-area:language}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-mode{grid-area:mode}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-force{grid-area:force}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-menu-position{grid-area:position}.hcaptcha-section-appearance+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-force td,.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-menu-position td{width:max-content}.hcaptcha-section-appearance+table tbody tr td select{width:100%}.hcaptcha-section-custom+table tbody{display:grid;gap:10px 20px;grid-template-areas:"custom-themes custom-themes config-params config-params" "custom-prop custom-value config-params config-params";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-themes{grid-area:custom-themes}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-config-params{grid-area:config-params}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-prop{grid-area:custom-prop}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-value{grid-area:custom-value}.hcaptcha-section-custom+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-themes td{width:max-content}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-config-params td{width:auto}.hcaptcha-section-custom+table tbody tr td select,.hcaptcha-section-custom+table tbody tr td textarea{width:100%}.hcaptcha-section-custom+table tbody tr td select option:disabled{background:#f0f0f1;color:#2c3338}.hcaptcha-section-custom+table tbody tr td input{height:30px;width:100%}.hcaptcha-section-enterprise+table tbody{display:grid;gap:10px 20px;grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-enterprise+table tbody th{width:auto}.hcaptcha-section-enterprise+table tbody tr th{padding:0 0 10px}.hcaptcha-section-enterprise+table tbody tr td input{width:100%}.hcaptcha-section-content+table tbody{display:grid;gap:0 20px;grid-template-areas:"content protected-urls";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-content+table tbody tr.hcaptcha-general-content{grid-area:content}.hcaptcha-section-content+table tbody tr.hcaptcha-general-protected-urls{grid-area:protected-urls}.hcaptcha-section-content+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-content+table tbody tr td{width:max-content}.hcaptcha-section-content+table tbody tr.hcaptcha-general-protected-urls td{width:auto}.hcaptcha-section-content+table tbody tr td input,.hcaptcha-section-content+table tbody tr td textarea{width:100%}.hcaptcha-section-antispam+table tbody{display:grid;gap:0 20px;grid-template-areas:"set-min-submit-time min-submit-time" "honeypot min-submit-time" "antispam antispam-provider";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-set-min-submit-time{grid-area:set-min-submit-time}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-min-submit-time{grid-area:min-submit-time}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-honeypot{grid-area:honeypot}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam{grid-area:antispam;padding-top:15px}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam-provider{grid-area:antispam-provider;padding-top:15px}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam-provider div{color:#d63638;margin-top:.5em}.hcaptcha-section-antispam+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-antispam+table tbody tr td{width:max-content}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam-provider td,.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-min-submit-time td{width:auto}.hcaptcha-section-antispam+table tbody tr td input,.hcaptcha-section-antispam+table tbody tr td select{width:100%}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-honeypot th{padding:0}.hcaptcha-section-antispam+table tbody tr td input{width:100%}.hcaptcha-section-other+table tbody{display:grid;gap:0 20px;grid-template-areas:"blacklisted whitelisted" "logged recaptcha" "hide-login-errors cleanup-on-uninstall" "network ." "login-limit login-interval" "delay .";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in{grid-area:logged}.hcaptcha-section-other+table tbody tr.hcaptcha-general-recaptcha-compat-off{grid-area:recaptcha}.hcaptcha-section-other+table tbody tr.hcaptcha-general-hide-login-errors{grid-area:hide-login-errors}.hcaptcha-section-other+table tbody tr.hcaptcha-general-cleanup-on-uninstall{grid-area:cleanup-on-uninstall}.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-limit{grid-area:login-limit;padding-top:15px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-interval{grid-area:login-interval;padding-top:15px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips{grid-area:whitelisted}.hcaptcha-section-other+table tbody tr.hcaptcha-general--network-wide{grid-area:network}.hcaptcha-section-other+table tbody tr.hcaptcha-general-delay{grid-area:delay;padding-top:15px}.hcaptcha-section-other+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-other+table tbody tr.hcaptcha-general--network-wide th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-cleanup-on-uninstall th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-hide-login-errors th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-recaptcha-compat-off th{padding:0}.hcaptcha-section-other+table tbody tr td{width:max-content}.hcaptcha-section-other+table tbody tr.hcaptcha-general-blacklisted-ips td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-delay td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-interval td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-limit td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips td{width:auto}.hcaptcha-section-other+table tbody tr td input,.hcaptcha-section-other+table tbody tr td textarea{width:100%}.hcaptcha-section-statistics+table tbody{display:grid;gap:0 20px;grid-template-areas:"statistics collect-ip" "anonymous collect-ua";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-statistics{grid-area:statistics}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-anonymous{grid-area:anonymous}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ip{grid-area:collect-ip}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ua{grid-area:collect-ua}.hcaptcha-section-statistics+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-anonymous th,.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ua th{padding:0}.hcaptcha-section-statistics+table tbody tr td{width:max-content}@media (max-width:600px){.hcaptcha-section-keys+table tbody{grid-template-areas:"site-key site-key" "secret-key secret-key" "sample-hcaptcha sample-hcaptcha" "check-config reset-notifications";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-appearance+table tbody{grid-template-areas:"theme size" "language mode" "force force" "position position";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-appearance+table tbody tr td{width:unset!important}.hcaptcha-section-custom+table tbody{grid-template-areas:"custom-themes custom-themes" "custom-prop custom-value" "config-params config-params";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-custom+table tbody tr td{width:unset!important}.hcaptcha-section-enterprise+table tbody{grid-template-columns:repeat(1,1fr)!important}.hcaptcha-section-enterprise+table tbody tr td{width:unset!important}.hcaptcha-section-content+table tbody{grid-template-areas:"content" "protected-urls";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-content+table tbody tr td{width:unset!important}.hcaptcha-section-antispam+table tbody{grid-template-areas:"antispam" "antispam-provider";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-antispam+table tbody tr td{width:unset!important}.hcaptcha-section-other+table tbody{grid-template-areas:"blacklisted" "whitelisted" "logged" "recaptcha" "hide-login-errors" "cleanup-on-uninstall" "network" "login-limit" "login-interval" "delay";grid-template-columns:repeat(1,1fr)!important}.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in,.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips{padding-top:10px}.hcaptcha-section-other+table tbody tr td{width:unset!important}.hcaptcha-section-statistics+table tbody{grid-template-areas:"statistics" "anonymous" "collect-ip" "collect-ua";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-statistics+table tbody tr td{width:unset!important}} -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/css/integrations.css
r3319903 r3359717 155 155 } 156 156 157 #hcaptcha-options label + .helper { 158 position: absolute; 159 right: 0; 160 width: 100%; 161 } 162 157 163 #hcaptcha-options label[data-antispam] + .helper::before { 158 164 content: ''; … … 166 172 } 167 173 168 #hcaptcha-options label [data-antispam="native"]+ .helper::before {174 #hcaptcha-options label:is([data-antispam-native],[data-antispam-native]) + .helper::before { 169 175 background: url('../images/antispam-yellow.svg'); 176 background-size: cover; 177 } 178 179 #hcaptcha-options label:is([data-antispam-honeypot],[data-antispam-honeypot]) + .helper::before { 180 background: url('../images/antispam-honeypot.svg'); 170 181 background-size: cover; 171 182 } -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/css/integrations.min.css
r3319903 r3359717 1 #hcaptcha-options p{margin:.5em 0}.hcaptcha-integrations table tbody{display:grid;gap:10px 20px;grid-template-columns:repeat(4,minmax(100px,1fr))}.hcaptcha-integrations table tr{background:#fff;padding:10px 20px;position:relative}.hcaptcha-integrations table tr:before{background-color:#f0f0f0;bottom:0;content:"";inset-inline-end:0;inset-inline-start:0;opacity:0;position:absolute;top:0;transition:all 1.5s;visibility:hidden}.hcaptcha-integrations table tr.install:before,.hcaptcha-integrations table tr.off:before,.hcaptcha-integrations table tr.on:before{opacity:.7;transition:all 1.5s;visibility:visible}.hcaptcha-integrations table tr:after{background-image:url(../images/spinner-white.svg);background-position:50%;background-repeat:no-repeat;background-size:auto 80%;bottom:0;content:"";inset-inline-end:0;inset-inline-start:0;opacity:0;position:absolute;top:0;transition:all 1.5s;visibility:hidden}.hcaptcha-integrations table tr.install:after,.hcaptcha-integrations table tr.off:after,.hcaptcha-integrations table tr.on:after{background-position:50%;background-repeat:no-repeat;background-size:auto 80%;opacity:1;transition:all 1.5s;visibility:visible}.hcaptcha-integrations table tr.install:after{background-image:url(../images/spinner-gold.svg)}.hcaptcha-integrations table tr.on:after{background-image:url(../images/spinner-green.svg)}.hcaptcha-integrations table tr.off:after{background-image:url(../images/spinner-red.svg)}.hcaptcha-integrations table tr th{align-items:center;display:flex;flex-wrap:wrap;font-size:16px;height:28px;justify-content:space-between;margin-bottom:20px;padding:5px 0 0;width:unset}.hcaptcha-integrations table tr .hcaptcha-integrations-entity{background:#4de1d2;border:1px solid #4de1d2;border-radius:2px;color:#fff;cursor:default;font-size:14px;line-height:18px;padding:4px 8px}.hcaptcha-integrations-logo{position:relative}.hcaptcha-integrations table tr th .hcaptcha-integrations-logo{cursor:pointer;height:28px}.hcaptcha-integrations table tr th .hcaptcha-integrations-logo:hover:before{bottom:0;content:"";inset-inline-start:-14px;position:absolute;top:0;width:4px}.hcaptcha-integrations>table~table tr th .hcaptcha-integrations-logo:hover:before{background-color:#00a32a}.hcaptcha-integrations>table tr th .hcaptcha-integrations-logo:hover:before{background-color:#d63638}.hcaptcha-integrations>table~table tr th .hcaptcha-integrations-logo[data-installed=false]:hover:before{background-color:#dba617}.hcaptcha-integrations table tr th img{max-height:28px;max-width:100%}.hcaptcha-integrations table tr.hcaptcha-integrations-wp-status th .hcaptcha-integrations-logo{cursor:unset}.hcaptcha-integrations table tr.hcaptcha-integrations-wp-status th .hcaptcha-integrations-logo:hover:before{display:none}.hcaptcha-integrations table tr td{display:flex;margin:0;padding:0}.hcaptcha-integrations table tr td fieldset,.hcaptcha-integrations table tr td fieldset label{width:100%}#hcaptcha-options label [data-antispam]+.helper:before{background:url(../images/antispam-green.svg);background-size:cover;border-radius:unset;content:"";height:20px;top:.35em;transform:translate(0);width:18px}#hcaptcha-options label[data-antispam=native]+.helper:before{background:url(../images/antispam-yellow.svg);background-size:cover}#hcaptcha-options fieldset:disabled label[data-antispam]+.helper:before{opacity:.7}#hcaptcha-options label[data-antispam]+.helper .helper-content{transform:translateY(38px)}.hcaptcha-disabled-section{margin:20px 0}.hcaptcha-integrations table.form-table+p.submit{padding:10px 0 0}#hcaptcha-integrations-search-wrap{position:relative}#hcaptcha-integrations-search-wrap:before{background:url(../images/magnifying-glass.svg);background-size:contain;content:"";font-size:16px;height:16px;inset-inline-start:10px;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:16px}#hcaptcha-integrations-search{padding-block-end:1px;padding-block-start:1px;padding-inline-end:8px;padding-inline-start:32px;width:230px}@media (max-width:1279px){.hcaptcha-integrations table tbody{grid-template-columns:repeat(3,minmax(100px,1fr))}}@media (max-width:1023px){.hcaptcha-integrations table tbody{grid-template-columns:repeat(2,minmax(100px,1fr))}}@media (max-width:782px){#hcaptcha-integrations-search{font-size:14px;min-height:unset}}body div.kagg-dialog{--color-activate:#00a32a;--color-deactivate:#d63638;--color-install:#dba617}body div.kagg-dialog.activate .kagg-dialog-container .kagg-dialog-box{color:var(--color-activate)}body div.kagg-dialog.activate .kagg-dialog-container .kagg-dialog-box .kagg-dialog-buttons button.btn-ok{background:var(--color-activate);color:#fff}body div.kagg-dialog.deactivate .kagg-dialog-container .kagg-dialog-box{color:var(--color-deactivate)}body div.kagg-dialog.deactivate .kagg-dialog-container .kagg-dialog-box .kagg-dialog-buttons button.btn-ok{background:var(--color-deactivate);color:#fff}body div.kagg-dialog.install .kagg-dialog-container .kagg-dialog-box{color:var(--color-install)}body div.kagg-dialog.install .kagg-dialog-container .kagg-dialog-box .kagg-dialog-buttons button.btn-ok{background:var(--color-install);color:#fff}1 #hcaptcha-options p{margin:.5em 0}.hcaptcha-integrations table tbody{display:grid;gap:10px 20px;grid-template-columns:repeat(4,minmax(100px,1fr))}.hcaptcha-integrations table tr{background:#fff;padding:10px 20px;position:relative}.hcaptcha-integrations table tr:before{background-color:#f0f0f0;bottom:0;content:"";inset-inline-end:0;inset-inline-start:0;opacity:0;position:absolute;top:0;transition:all 1.5s;visibility:hidden}.hcaptcha-integrations table tr.install:before,.hcaptcha-integrations table tr.off:before,.hcaptcha-integrations table tr.on:before{opacity:.7;transition:all 1.5s;visibility:visible}.hcaptcha-integrations table tr:after{background-image:url(../images/spinner-white.svg);background-position:50%;background-repeat:no-repeat;background-size:auto 80%;bottom:0;content:"";inset-inline-end:0;inset-inline-start:0;opacity:0;position:absolute;top:0;transition:all 1.5s;visibility:hidden}.hcaptcha-integrations table tr.install:after,.hcaptcha-integrations table tr.off:after,.hcaptcha-integrations table tr.on:after{background-position:50%;background-repeat:no-repeat;background-size:auto 80%;opacity:1;transition:all 1.5s;visibility:visible}.hcaptcha-integrations table tr.install:after{background-image:url(../images/spinner-gold.svg)}.hcaptcha-integrations table tr.on:after{background-image:url(../images/spinner-green.svg)}.hcaptcha-integrations table tr.off:after{background-image:url(../images/spinner-red.svg)}.hcaptcha-integrations table tr th{align-items:center;display:flex;flex-wrap:wrap;font-size:16px;height:28px;justify-content:space-between;margin-bottom:20px;padding:5px 0 0;width:unset}.hcaptcha-integrations table tr .hcaptcha-integrations-entity{background:#4de1d2;border:1px solid #4de1d2;border-radius:2px;color:#fff;cursor:default;font-size:14px;line-height:18px;padding:4px 8px}.hcaptcha-integrations-logo{position:relative}.hcaptcha-integrations table tr th .hcaptcha-integrations-logo{cursor:pointer;height:28px}.hcaptcha-integrations table tr th .hcaptcha-integrations-logo:hover:before{bottom:0;content:"";inset-inline-start:-14px;position:absolute;top:0;width:4px}.hcaptcha-integrations>table~table tr th .hcaptcha-integrations-logo:hover:before{background-color:#00a32a}.hcaptcha-integrations>table tr th .hcaptcha-integrations-logo:hover:before{background-color:#d63638}.hcaptcha-integrations>table~table tr th .hcaptcha-integrations-logo[data-installed=false]:hover:before{background-color:#dba617}.hcaptcha-integrations table tr th img{max-height:28px;max-width:100%}.hcaptcha-integrations table tr.hcaptcha-integrations-wp-status th .hcaptcha-integrations-logo{cursor:unset}.hcaptcha-integrations table tr.hcaptcha-integrations-wp-status th .hcaptcha-integrations-logo:hover:before{display:none}.hcaptcha-integrations table tr td{display:flex;margin:0;padding:0}.hcaptcha-integrations table tr td fieldset,.hcaptcha-integrations table tr td fieldset label{width:100%}#hcaptcha-options label+.helper{position:absolute;right:0;width:100%}#hcaptcha-options label[data-antispam]+.helper:before{background:url(../images/antispam-green.svg);background-size:cover;border-radius:unset;content:"";height:20px;top:.35em;transform:translate(0);width:18px}#hcaptcha-options label:is([data-antispam-native])+.helper:before{background:url(../images/antispam-yellow.svg);background-size:cover}#hcaptcha-options label:is([data-antispam-honeypot])+.helper:before{background:url(../images/antispam-honeypot.svg);background-size:cover}#hcaptcha-options fieldset:disabled label[data-antispam]+.helper:before{opacity:.7}#hcaptcha-options label[data-antispam]+.helper .helper-content{transform:translateY(38px)}.hcaptcha-disabled-section{margin:20px 0}.hcaptcha-integrations table.form-table+p.submit{padding:10px 0 0}#hcaptcha-integrations-search-wrap{position:relative}#hcaptcha-integrations-search-wrap:before{background:url(../images/magnifying-glass.svg);background-size:contain;content:"";font-size:16px;height:16px;inset-inline-start:10px;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:16px}#hcaptcha-integrations-search{padding-block-end:1px;padding-block-start:1px;padding-inline-end:8px;padding-inline-start:32px;width:230px}@media (max-width:1279px){.hcaptcha-integrations table tbody{grid-template-columns:repeat(3,minmax(100px,1fr))}}@media (max-width:1023px){.hcaptcha-integrations table tbody{grid-template-columns:repeat(2,minmax(100px,1fr))}}@media (max-width:782px){#hcaptcha-integrations-search{font-size:14px;min-height:unset}}body div.kagg-dialog{--color-activate:#00a32a;--color-deactivate:#d63638;--color-install:#dba617}body div.kagg-dialog.activate .kagg-dialog-container .kagg-dialog-box{color:var(--color-activate)}body div.kagg-dialog.activate .kagg-dialog-container .kagg-dialog-box .kagg-dialog-buttons button.btn-ok{background:var(--color-activate);color:#fff}body div.kagg-dialog.deactivate .kagg-dialog-container .kagg-dialog-box{color:var(--color-deactivate)}body div.kagg-dialog.deactivate .kagg-dialog-container .kagg-dialog-box .kagg-dialog-buttons button.btn-ok{background:var(--color-deactivate);color:#fff}body div.kagg-dialog.install .kagg-dialog-container .kagg-dialog-box{color:var(--color-install)}body div.kagg-dialog.install .kagg-dialog-container .kagg-dialog-box .kagg-dialog-buttons button.btn-ok{background:var(--color-install);color:#fff} -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/admin-jetpack.js
r3339595 r3359717 3 3 /** 4 4 * @param HCaptchaJetpackObject.hCaptcha 5 * @param window.hCaptchaJetpack6 5 */ 7 6 -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/apps/hcaptcha.js
r3339595 r3359717 1 (()=>{"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=r(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var o=0,a=function(){};return{s:a,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return u=t.done,t},e:function(t){c=!0,i=t},f:function(){try{u||null==n.return||n.return()}finally{if(c)throw i}}}}function n(t){return function(t){if(Array.isArray(t))return o(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||r(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(t,e){if(t){if("string"==typeof t)return o(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,i(r.key),r)}}function i(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,n||"default");if("object"!=t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==t(n)?n:n+""}var u=function(){return r=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.foundForms=[],this.params=null,this.observingDarkMode=!1,this.observingPasswordManagers=!1,this.darkElement=null,this.darkClass=null,this.callback=this.callback.bind(this),this.validate=this.validate.bind(this),this.addedDCLCallbacks=new Set},(o=[{key:"generateID",value:function(){var t=function(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)};return t()+"-"+t()+"-"+t()+"-"+t()}},{key:"getFoundFormById",value:function(t){var e;return null!==(e=this.foundForms.filter(function(e){return t===e.hCaptchaId})[0])&&void 0!==e?e:null}},{key:"getWidgetId",value:function(t){var e,n,r;if(void 0===t)return"";var o=null!==(e=null===(n=t.closest(this.formSelector))||void 0===n||null===(n=n.dataset)||void 0===n?void 0:n.hCaptchaId)&&void 0!==e?e:"";if(!o)return"";var a=this.getFoundFormById(o);return null!==(r=null==a?void 0:a.widgetId)&&void 0!==r?r:""}},{key:"reset",value:function(t){var e=this.getWidgetId(t);e&&hcaptcha.reset(e)}},{key:"isSameOrDescendant",value:function(t,e){for(var n=e;n;){if(n===t)return!0;n=n.parentElement}return!1}},{key:"getCurrentForm",value:function(t){var e,n=t.currentTarget.closest(this.formSelector),r=this.getFoundFormById(null==n||null===(e=n.dataset)||void 0===e?void 0:e.hCaptchaId),o=null==r?void 0:r.submitButtonElement,a=null==r?void 0:r.widgetId;if(a&&this.isSameOrDescendant(o,t.target))return t.preventDefault(),t.stopPropagation(),{formElement:n,submitButtonElement:o,widgetId:a}}},{key:"validate",value:function(t){if(this.currentForm=this.getCurrentForm(t),this.currentForm){var e=this.currentForm,n=e.formElement,r=e.widgetId,o=n.querySelector(this.responseSelector),a=o?o.value:"";""===a?hcaptcha.execute(r,{async:!1}):this.callback(a)}}},{key:"isValidated",value:function(){return void 0!==this.currentForm}},{key:"getForms",value:function(){return n(document.querySelectorAll(this.formSelector))}},{key:"getParams",value:function(){if(null!==this.params)return this.params;var t;try{var e,n;t=JSON.parse(wp.hooks.applyFilters("hcaptcha.params",null!==(e=null===(n=HCaptchaMainObject)||void 0===n?void 0:n.params)&&void 0!==e?e:""))}catch(e){t={}}return t.callback=this.callback,t}},{key:"setParams",value:function(t){this.params=t}},{key:"setDarkData",value:function(){var t={"twenty-twenty-one":{darkStyleId:"twenty-twenty-one-style-css",darkElement:document.body,darkClass:"is-dark-theme"},"wp-dark-mode":{darkStyleId:"wp-dark-mode-frontend-css",darkElement:document.documentElement,darkClass:"wp-dark-mode-active"},"droit-dark-mode":{darkStyleId:"dtdr-public-inline-css",darkElement:document.documentElement,darkClass:"drdt-dark-mode"}};t=wp.hooks.applyFilters("hcaptcha.darkData",t);for(var e=0,n=Object.values(t);e<n.length;e++){var r=n[e];if(document.getElementById(r.darkStyleId))return this.darkElement=r.darkElement,void(this.darkClass=r.darkClass)}}},{key:"observeDarkMode",value:function(){var t=this;this.observingDarkMode||(this.observingDarkMode=!0,"auto"!==this.getParams().theme)||(this.setDarkData(),this.darkElement&&this.darkClass&&new MutationObserver(function(n){var r,o=e(n);try{var a=function(){var e=r.value.oldValue,n=t.darkElement.getAttribute("class");e=e?e.split(" "):[],(n=n?n.split(" "):[]).filter(function(t){return!e.includes(t)}).concat(e.filter(function(t){return!n.includes(t)})).includes(t.darkClass)&&t.bindEvents()};for(o.s();!(r=o.n()).done;)a()}catch(t){o.e(t)}finally{o.f()}}).observe(this.darkElement,{attributes:!0,attributeOldValue:!0}))}},{key:"observePasswordManagers",value:function(){var t=this;if(!this.observingPasswordManagers){this.observingPasswordManagers=!0;var n=!1,r=new MutationObserver(function(o){n||(n=!0,requestAnimationFrame(function(){var a,i=e(o);try{for(i.s();!(a=i.n()).done;)if("childList"===a.value.type){var u=document.querySelector("com-1password-button"),c=document.querySelector("div[data-lastpass-icon-root]");if(u||c){r.disconnect(),t.foundForms.map(function(e){var n=e.hCaptchaId,r=e.submitButtonElement;if(!r)return e;var o=document.querySelector('[data-h-captcha-id="'.concat(n,'"]')).querySelector(".h-captcha"),a=o.dataset;return"invisible"===a.size||"true"===a.force||(o.dataset.force="true",r.addEventListener("click",t.validate,!0)),e});break}}}catch(t){i.e(t)}finally{i.f()}n=!1}))});r.observe(document.body,{childList:!0,subtree:!0})}}},{key:"getWidgetByToken",value:function(t){var e=n(document.querySelectorAll(this.responseSelector)).find(function(e){return e.value===t});return e?e.closest(".h-captcha"):null}},{key:"callback",value:function(t){document.dispatchEvent(new CustomEvent("hCaptchaSubmitted",{detail:{token:t}}));var e=this.getParams(),n=this.getWidgetByToken(t),r=n?n.dataset.force:null;("invisible"===e.size||"true"===r&&this.isValidated())&&this.submit()}},{key:"applyAutoTheme",value:function(t){if("auto"!==t.theme)return t;var e;if(t.theme="light",!this.darkElement)return t.theme=null!==(e=window)&&void 0!==e&&e.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",t;var n=this.darkElement.getAttribute("class");return(n=n||"").includes(this.darkClass)&&(t.theme="dark"),t}},{key:"render",value:function(e){this.observeDarkMode(),this.observePasswordManagers();var n,r,o=this.getParams();return"object"===t(o.theme)?null!==(n=null===(r=o)||void 0===r||null===(r=r.theme)||void 0===r||null===(r=r.component)||void 0===r||null===(r=r.checkbox)||void 0===r||null===(r=r.main)||void 0===r?void 0:r.fill)&&void 0!==n&&n&&(e.dataset.theme="custom"):o.theme=e.dataset.theme,o.size=e.dataset.size,o=this.applyAutoTheme(o),hcaptcha.render(e,o)}},{key:"addSyncedEventListener",value:function(t){if("loading"===document.readyState){if(this.addedDCLCallbacks.has(t))return;this.addedDCLCallbacks.add(t),window.addEventListener("DOMContentLoaded",t)}else t()}},{key:" bindEvents",value:function(){var t=this;"undefined"!=typeof hcaptcha&&(this.formSelector=wp.hooks.applyFilters("hcaptcha.formSelector","form, section.cwginstock-subscribe-form, div.sdm_download_item, .gform_editor, #nf-builder, .wpforms-captcha-preview"),this.submitButtonSelector=wp.hooks.applyFilters("hcaptcha.submitButtonSelector",'*[type="submit"]:not(.quform-default-submit), #check_config, button[type="button"].ff-btn, a.et_pb_newsletter_button.et_pb_button, .forminator-button-submit, .frm_button_submit, a.sdm_download, .uagb-forms-main-submit-button'),this.responseSelector='textarea[name="h-captcha-response"]',this.getForms().map(function(e){var n=e.querySelector(".h-captcha");if(null===n)return e;if(n.classList.contains("hcaptcha-widget-id"))return e;n.innerHTML="";var r=t.generateID(),o=e.querySelectorAll(t.submitButtonSelector)[0],a=t.render(n);if(e.dataset.hCaptchaId=r,t.foundForms.push({hCaptchaId:r,submitButtonElement:o,widgetId:a}),!o)return e;var i=n.dataset;return"invisible"!==i.size&&"true"!==i.force||o.addEventListener("click",t.validate,!0),e},this))}},{key:"isAjaxSubmitButton",value:function(t){var e=t.getAttribute("type"),n="submit"!==(e=e?e.toLowerCase():"");return wp.hooks.applyFilters("hcaptcha.ajaxSubmitButton",n,t)}},{key:"submit",value:function(){if(this.currentForm){var t=this.currentForm,e=t.formElement,n=t.submitButtonElement;if("form"!==e.tagName.toLowerCase()||this.isAjaxSubmitButton(n))return n.removeEventListener("click",this.validate,!0),void n.click();e.requestSubmit?e.requestSubmit(n):e.submit()}}}])&&a(r.prototype,o),i&&a(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,o,i}();window.HCaptchaMainObject=window.HCaptchaMainObject||{};const c=u;function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function l(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,d(r.key),r)}}function d(t){var e=function(t,e){if("object"!=s(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=s(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==s(e)?e:e+""}function f(t,e,n){return e=p(e),function(t,e){if(e&&("object"==s(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,m()?Reflect.construct(e,n||[],p(t).constructor):e.apply(t,n))}function h(t){var e="function"==typeof Map?new Map:void 0;return h=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(m())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var o=new(t.bind.apply(t,r));return n&&v(o,n.prototype),o}(t,arguments,p(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),v(n,t)},h(t)}function m(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(m=function(){return!!t})()}function v(t,e){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},v(t,e)}function p(t){return p=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},p(t)}const y=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),f(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&v(t,e)}(e,t),n=e,(r=[{key:"connectedCallback",value:function(){window.hCaptcha.addSyncedEventListener(window.hCaptchaBindEvents)}}])&&l(n.prototype,r),o&&l(n,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,o}(h(HTMLElement));var b=new c;window.hCaptcha=b,window.hCaptchaGetWidgetId=function(t){b.getWidgetId(t)},window.hCaptchaReset=function(t){b.reset(t)},window.hCaptchaBindEvents=function(){b.bindEvents()},window.hCaptchaSubmit=function(){b.submit()},window.hCaptchaOnLoad=function(){b.addSyncedEventListener(function(){document.dispatchEvent(new CustomEvent("hCaptchaBeforeBindEvents")),window.hCaptchaBindEvents(),document.dispatchEvent(new CustomEvent("hCaptchaLoaded"))})},window.customElements.define("h-captcha",y),document.dispatchEvent(new CustomEvent("hCaptchaBeforeAPI"))})();1 (()=>{"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=r(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var o=0,a=function(){};return{s:a,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return u=t.done,t},e:function(t){c=!0,i=t},f:function(){try{u||null==n.return||n.return()}finally{if(c)throw i}}}}function n(t){return function(t){if(Array.isArray(t))return o(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||r(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(t,e){if(t){if("string"==typeof t)return o(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,i(r.key),r)}}function i(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,n||"default");if("object"!=t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==t(n)?n:n+""}var u=function(){return r=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.foundForms=[],this.params=null,this.observingDarkMode=!1,this.observingPasswordManagers=!1,this.darkElement=null,this.darkClass=null,this.callback=this.callback.bind(this),this.validate=this.validate.bind(this),this.addedDCLCallbacks=new Set},(o=[{key:"generateID",value:function(){var t=function(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)};return t()+"-"+t()+"-"+t()+"-"+t()}},{key:"getFoundFormById",value:function(t){var e;return null!==(e=this.foundForms.filter(function(e){return t===e.hCaptchaId})[0])&&void 0!==e?e:null}},{key:"getWidgetId",value:function(t){var e,n,r;if(void 0===t)return"";var o=null!==(e=null===(n=t.closest(this.formSelector))||void 0===n||null===(n=n.dataset)||void 0===n?void 0:n.hCaptchaId)&&void 0!==e?e:"";if(!o)return"";var a=this.getFoundFormById(o);return null!==(r=null==a?void 0:a.widgetId)&&void 0!==r?r:""}},{key:"reset",value:function(t){var e=this.getWidgetId(t);e&&hcaptcha.reset(e)}},{key:"isSameOrDescendant",value:function(t,e){for(var n=e;n;){if(n===t)return!0;n=n.parentElement}return!1}},{key:"getCurrentForm",value:function(t){var e,n=t.currentTarget.closest(this.formSelector),r=this.getFoundFormById(null==n||null===(e=n.dataset)||void 0===e?void 0:e.hCaptchaId),o=null==r?void 0:r.submitButtonElement,a=null==r?void 0:r.widgetId;if(a&&this.isSameOrDescendant(o,t.target))return t.preventDefault(),t.stopPropagation(),{formElement:n,submitButtonElement:o,widgetId:a}}},{key:"validate",value:function(t){if(this.currentForm=this.getCurrentForm(t),this.currentForm){var e=this.currentForm,n=e.formElement,r=e.widgetId,o=n.querySelector(this.responseSelector),a=o?o.value:"";""===a?hcaptcha.execute(r,{async:!1}):this.callback(a)}}},{key:"isValidated",value:function(){return void 0!==this.currentForm}},{key:"getForms",value:function(){return n(document.querySelectorAll(this.formSelector))}},{key:"getParams",value:function(){if(null!==this.params)return this.params;var t;try{var e,n;t=JSON.parse(wp.hooks.applyFilters("hcaptcha.params",null!==(e=null===(n=HCaptchaMainObject)||void 0===n?void 0:n.params)&&void 0!==e?e:""))}catch(e){t={}}return t.callback=this.callback,t}},{key:"setParams",value:function(t){this.params=t}},{key:"setDarkData",value:function(){var t={"twenty-twenty-one":{darkStyleId:"twenty-twenty-one-style-css",darkElement:document.body,darkClass:"is-dark-theme"},"wp-dark-mode":{darkStyleId:"wp-dark-mode-frontend-css",darkElement:document.documentElement,darkClass:"wp-dark-mode-active"},"droit-dark-mode":{darkStyleId:"dtdr-public-inline-css",darkElement:document.documentElement,darkClass:"drdt-dark-mode"}};t=wp.hooks.applyFilters("hcaptcha.darkData",t);for(var e=0,n=Object.values(t);e<n.length;e++){var r=n[e];if(document.getElementById(r.darkStyleId))return this.darkElement=r.darkElement,void(this.darkClass=r.darkClass)}}},{key:"observeDarkMode",value:function(){var t=this;this.observingDarkMode||(this.observingDarkMode=!0,"auto"!==this.getParams().theme)||(this.setDarkData(),this.darkElement&&this.darkClass&&new MutationObserver(function(n){var r,o=e(n);try{var a=function(){var e=r.value.oldValue,n=t.darkElement.getAttribute("class");e=e?e.split(" "):[],(n=n?n.split(" "):[]).filter(function(t){return!e.includes(t)}).concat(e.filter(function(t){return!n.includes(t)})).includes(t.darkClass)&&t.bindEvents()};for(o.s();!(r=o.n()).done;)a()}catch(t){o.e(t)}finally{o.f()}}).observe(this.darkElement,{attributes:!0,attributeOldValue:!0}))}},{key:"observePasswordManagers",value:function(){var t=this;if(!this.observingPasswordManagers){this.observingPasswordManagers=!0;var n=!1,r=new MutationObserver(function(o){n||(n=!0,requestAnimationFrame(function(){var a,i=e(o);try{for(i.s();!(a=i.n()).done;)if("childList"===a.value.type){var u=document.querySelector("com-1password-button"),c=document.querySelector("div[data-lastpass-icon-root]");if(u||c){r.disconnect(),t.foundForms.map(function(e){var n=e.hCaptchaId,r=e.submitButtonElement;if(!r)return e;var o=document.querySelector('[data-h-captcha-id="'.concat(n,'"]')).querySelector(".h-captcha"),a=o.dataset;return"invisible"===a.size||"true"===a.force||(o.dataset.force="true",r.addEventListener("click",t.validate,!0)),e});break}}}catch(t){i.e(t)}finally{i.f()}n=!1}))});r.observe(document.body,{childList:!0,subtree:!0})}}},{key:"getWidgetByToken",value:function(t){var e=n(document.querySelectorAll(this.responseSelector)).find(function(e){return e.value===t});return e?e.closest(".h-captcha"):null}},{key:"callback",value:function(t){document.dispatchEvent(new CustomEvent("hCaptchaSubmitted",{detail:{token:t}}));var e=this.getParams(),n=this.getWidgetByToken(t),r=n?n.dataset.force:null;("invisible"===e.size||"true"===r&&this.isValidated())&&this.submit()}},{key:"applyAutoTheme",value:function(t){if("auto"!==t.theme)return t;var e;if(t.theme="light",!this.darkElement)return t.theme=null!==(e=window)&&void 0!==e&&e.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",t;var n=this.darkElement.getAttribute("class");return(n=n||"").includes(this.darkClass)&&(t.theme="dark"),t}},{key:"render",value:function(e){this.observeDarkMode(),this.observePasswordManagers();var n,r,o=this.getParams();return"object"===t(o.theme)?null!==(n=null===(r=o)||void 0===r||null===(r=r.theme)||void 0===r||null===(r=r.component)||void 0===r||null===(r=r.checkbox)||void 0===r||null===(r=r.main)||void 0===r?void 0:r.fill)&&void 0!==n&&n&&(e.dataset.theme="custom"):o.theme=e.dataset.theme,o.size=e.dataset.size,o=this.applyAutoTheme(o),hcaptcha.render(e,o)}},{key:"addSyncedEventListener",value:function(t){if("loading"===document.readyState){if(this.addedDCLCallbacks.has(t))return;this.addedDCLCallbacks.add(t),window.addEventListener("DOMContentLoaded",t)}else t()}},{key:"moveHP",value:function(t){var e,r;if(t&&"1"!==(null==t||null===(e=t.dataset)||void 0===e?void 0:e.hpMoved)){t.dataset.hpMoved="1";var o=t.querySelector('input[id^="hcap_hp_"]');if(o){var a=n(t.querySelectorAll("input,select,textarea,button")).filter(function(t){return t!==o&&"hidden"!==t.type&&!t.closest(".h-captcha")});if(a.length){var i=a[Math.floor(Math.random()*a.length)];if(i&&i.parentNode){var u=null!==(r=o.getAttribute("id"))&&void 0!==r?r:"",c=u?t.querySelector('label[for="'.concat(u,'"]')):null,l=document.createDocumentFragment();c&&c.isConnected&&l.appendChild(c),l.appendChild(o),i.parentNode.insertBefore(l,i)}}}}}},{key:"addFSTToken",value:function(t){if(t){var e="hcap_fst_token",n=t.querySelector('input[type="hidden"][name="'.concat(e,'"]'));n||((n=document.createElement("input")).type="hidden",n.name=e),t.firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)}}},{key:"bindEvents",value:function(){var t=this;"undefined"!=typeof hcaptcha&&(this.formSelector=wp.hooks.applyFilters("hcaptcha.formSelector","form, section.cwginstock-subscribe-form, div.sdm_download_item, .gform_editor, #nf-builder, .wpforms-captcha-preview"),this.submitButtonSelector=wp.hooks.applyFilters("hcaptcha.submitButtonSelector",'*[type="submit"]:not(.quform-default-submit), #check_config, button[type="button"].ff-btn, a.et_pb_newsletter_button.et_pb_button, .forminator-button-submit, .frm_button_submit, a.sdm_download, .uagb-forms-main-submit-button'),this.responseSelector='textarea[name="h-captcha-response"]',this.getForms().map(function(e){var n=e.querySelector(".h-captcha");if(null===n)return e;if(n.classList.contains("hcaptcha-widget-id"))return e;t.moveHP(e),t.addFSTToken(e),n.innerHTML="";var r=t.generateID(),o=e.querySelectorAll(t.submitButtonSelector)[0],a=t.render(n);if(e.dataset.hCaptchaId=r,t.foundForms.push({hCaptchaId:r,submitButtonElement:o,widgetId:a}),!o)return e;var i=n.dataset;return"invisible"!==i.size&&"true"!==i.force||o.addEventListener("click",t.validate,!0),e},this))}},{key:"isAjaxSubmitButton",value:function(t){var e=t.getAttribute("type"),n="submit"!==(e=e?e.toLowerCase():"");return wp.hooks.applyFilters("hcaptcha.ajaxSubmitButton",n,t)}},{key:"submit",value:function(){if(this.currentForm){var t=this.currentForm,e=t.formElement,n=t.submitButtonElement;if("form"!==e.tagName.toLowerCase()||this.isAjaxSubmitButton(n))return n.removeEventListener("click",this.validate,!0),void n.click();e.requestSubmit?e.requestSubmit(n):e.submit()}}}])&&a(r.prototype,o),i&&a(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,o,i}();window.HCaptchaMainObject=window.HCaptchaMainObject||{};const c=u;function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function s(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,d(r.key),r)}}function d(t){var e=function(t,e){if("object"!=l(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=l(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==l(e)?e:e+""}function f(t,e,n){return e=v(e),function(t,e){if(e&&("object"==l(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,m()?Reflect.construct(e,n||[],v(t).constructor):e.apply(t,n))}function h(t){var e="function"==typeof Map?new Map:void 0;return h=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(m())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var o=new(t.bind.apply(t,r));return n&&p(o,n.prototype),o}(t,arguments,v(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),p(n,t)},h(t)}function m(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(m=function(){return!!t})()}function p(t,e){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},p(t,e)}function v(t){return v=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},v(t)}const y=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),f(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&p(t,e)}(e,t),n=e,(r=[{key:"connectedCallback",value:function(){window.hCaptcha.addSyncedEventListener(window.hCaptchaBindEvents)}}])&&s(n.prototype,r),o&&s(n,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,o}(h(HTMLElement));var b=new c;window.hCaptcha=b,window.hCaptchaGetWidgetId=function(t){b.getWidgetId(t)},window.hCaptchaReset=function(t){b.reset(t)},window.hCaptchaBindEvents=function(){document.dispatchEvent(new CustomEvent("hCaptchaBeforeBindEvents")),b.bindEvents(),document.dispatchEvent(new CustomEvent("hCaptchaAfterBindEvents"))},window.hCaptchaSubmit=function(){b.submit()},window.hCaptchaOnLoad=function(){b.addSyncedEventListener(function(){window.hCaptchaBindEvents(),document.dispatchEvent(new CustomEvent("hCaptchaLoaded",{cancelable:!0}))})},window.customElements.define("h-captcha",y),document.dispatchEvent(new CustomEvent("hCaptchaBeforeAPI"))})(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-back-in-stock-notifier.min.js
r3339595 r3359717 1 (()=>{"use strict";var t={2981:(t,e, r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function a(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var a=r.call(t,e||"default");if("object"!=n(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==n(e)?e:e+""}r.d(e,{d:()=>i});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,n=[{key:"addHCaptchaData",value:function(e,r,n,a){var o,i=null!==(o=e.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(r))){var c=t.getHCaptchaData(a,n);e.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+n+"="+c.nonce}}},{key:"getHCaptchaData",value:function(t,e){var r=t.find('[name="h-captcha-response"]').val();r=r||"";var n=t.find('[name="hcaptcha-widget-id"]').val();n=n||"";var a=t.find('[name="'+e+'"]').val();return{response:r,id:n,nonce:a=a||""}}}],(r=null)&&a(e.prototype,r),n&&a(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,n}()}},e={};function r(n){var a=e[n];if(void 0!==a)return a.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var n,a=r(2981);(n=jQuery).ajaxPrefilter(function(t){a.d.addHCaptchaData(t,"cwginstock_product_subscribe","hcaptcha_back_in_stock_notifier_nonce",n(".cwginstock-subscribe-form"))}),jQuery(document).on("ajaxSuccess",function(t,e,r){var n=new URLSearchParams(r.data);"cwg_trigger_popup_ajax"===n.get("action")&&(document.querySelector('input[name="cwg-product-id"][value="'+n.get("product_id")+'"]')&&window.hCaptchaBindEvents())})})();1 (()=>{"use strict";var t={2981:(t,e,n)=>{function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function r(t,e){for(var n=0;n<e.length;n++){var a=e[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,o(a.key),a)}}function o(t){var e=function(t,e){if("object"!=a(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==a(e)?e:e+""}n.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,a=[{key:"addHCaptchaData",value:function(e,n,a,r){var o,c=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof c&&c.startsWith("action=".concat(n))&&(e.data+=t.getHCaptchaData(r,a))}},{key:"getHCaptchaData",value:function(t,e){for(var n,a="",r=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(n=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==n?n:"","hcap_hp_sig","hcap_fst_token"];r<o.length;r++){var c,i=o[r];if(i){var u=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";a+="&".concat(i,"=").concat(u)}}return a}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:n}}))}catch(t){}var r=t.apply(void 0,n);return r.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:n,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:n,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:n}}))}catch(t){}}),r};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(n=null)&&r(e.prototype,n),a&&r(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,a}()}},e={};function n(a){var r=e[a];if(void 0!==r)return r.exports;var o=e[a]={exports:{}};return t[a](o,o.exports,n),o.exports}n.d=(t,e)=>{for(var a in e)n.o(e,a)&&!n.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var a,r=n(2981);(a=jQuery).ajaxPrefilter(function(t){r.d.addHCaptchaData(t,"cwginstock_product_subscribe","hcaptcha_back_in_stock_notifier_nonce",a(".cwginstock-subscribe-form"))}),jQuery(document).on("ajaxSuccess",function(t,e,n){var a=new URLSearchParams(n.data);"cwg_trigger_popup_ajax"===a.get("action")&&(document.querySelector('input[name="cwg-product-id"][value="'+a.get("product_id")+'"]')&&window.hCaptchaBindEvents())})})(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-beaver-builder.min.js
r3339595 r3359717 1 (()=>{"use strict";var t={2981:(t,e, r)=>{function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function n(t,e){for(var r=0;r<e.length;r++){var a=e[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,o(a.key),a)}}function o(t){var e=function(t,e){if("object"!=a(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==a(e)?e:e+""}r.d(e,{d:()=>i});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,a=[{key:"addHCaptchaData",value:function(e,r,a,n){var o,i=null!==(o=e.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(r))){var c=t.getHCaptchaData(n,a);e.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+a+"="+c.nonce}}},{key:"getHCaptchaData",value:function(t,e){var r=t.find('[name="h-captcha-response"]').val();r=r||"";var a=t.find('[name="hcaptcha-widget-id"]').val();a=a||"";var n=t.find('[name="'+e+'"]').val();return{response:r,id:a,nonce:n=n||""}}}],(r=null)&&n(e.prototype,r),a&&n(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,a}()}},e={};function r(a){var n=e[a];if(void 0!==n)return n.exports;var o=e[a]={exports:{}};return t[a](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var a in e)r.o(e,a)&&!r.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var a,n=r(2981);wp.hooks.addFilter("hcaptcha.formSelector","hcaptcha",function(t){return t+", div.fl-login-form"}),wp.hooks.addFilter("hcaptcha.submitButtonSelector","hcaptcha",function(t){return t+", a.fl-button"}),(a=jQuery).ajaxPrefilter(function(t){var e,r=null!==(e=t.data)&&void 0!==e?e:"";if("string"==typeof r){var o=new URLSearchParams(r).get("node_id"),i=a("[data-node="+o+"]");n.d.addHCaptchaData(t,"fl_builder_email","hcaptcha_beaver_builder_nonce",i),n.d.addHCaptchaData(t,"fl_builder_login_form_submit","hcaptcha_login_nonce",i)}})})();1 (()=>{"use strict";var t={2981:(t,e,a)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function r(t,e){for(var a=0;a<e.length;a++){var n=e[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var r=a.call(t,e||"default");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==n(e)?e:e+""}a.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,n=[{key:"addHCaptchaData",value:function(e,a,n,r){var o,c=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof c&&c.startsWith("action=".concat(a))&&(e.data+=t.getHCaptchaData(r,n))}},{key:"getHCaptchaData",value:function(t,e){for(var a,n="",r=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(a=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==a?a:"","hcap_hp_sig","hcap_fst_token"];r<o.length;r++){var c,i=o[r];if(i){var u=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";n+="&".concat(i,"=").concat(u)}}return n}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:a}}))}catch(t){}var r=t.apply(void 0,a);return r.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:a,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:a,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:a}}))}catch(t){}}),r};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(a=null)&&r(e.prototype,a),n&&r(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,a,n}()}},e={};function a(n){var r=e[n];if(void 0!==r)return r.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,a),o.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);var n,r=a(2981);wp.hooks.addFilter("hcaptcha.formSelector","hcaptcha",function(t){return t+", div.fl-login-form"}),wp.hooks.addFilter("hcaptcha.submitButtonSelector","hcaptcha",function(t){return t+", a.fl-button"}),(n=jQuery).ajaxPrefilter(function(t){var e,a=null!==(e=t.data)&&void 0!==e?e:"";if("string"==typeof a){var o=new URLSearchParams(a).get("node_id"),c=n("[data-node="+o+"]");r.d.addHCaptchaData(t,"fl_builder_email","hcaptcha_beaver_builder_nonce",c),r.d.addHCaptchaData(t,"fl_builder_login_form_submit","hcaptcha_login_nonce",c)}})})(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-brizy.min.js
r3339595 r3359717 1 (()=>{"use strict";var t={2981:(t,e, r)=>{function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function n(t,e){for(var r=0;r<e.length;r++){var a=e[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,o(a.key),a)}}function o(t){var e=function(t,e){if("object"!=a(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==a(e)?e:e+""}r.d(e,{d:()=>i});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,a=[{key:"addHCaptchaData",value:function(e,r,a,n){var o,i=null!==(o=e.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(r))){var c=t.getHCaptchaData(n,a);e.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+a+"="+c.nonce}}},{key:"getHCaptchaData",value:function(t,e){var r=t.find('[name="h-captcha-response"]').val();r=r||"";var a=t.find('[name="hcaptcha-widget-id"]').val();a=a||"";var n=t.find('[name="'+e+'"]').val();return{response:r,id:a,nonce:n=n||""}}}],(r=null)&&n(e.prototype,r),a&&n(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,a}()}},e={};function r(a){var n=e[a];if(void 0!==n)return n.exports;var o=e[a]={exports:{}};return t[a](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var a in e)r.o(e,a)&&!r.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var a,n=r(2981);(a=jQuery).ajaxPrefilter(function(t){if("brizy_submit_form"===new URLSearchParams(t.url.split("?")[1]).get("action")){var e=JSON.parse(t.data.get("data")),r="hcaptcha_brizy_nonce",o=a(".brz-form"),i=n.d.getHCaptchaData(o,r);e.push({name:"h-captcha-response",value:i.response,required:!1}),e.push({name:r,value:i.nonce,required:!1}),t.data.set("data",JSON.stringify(e))}})})();1 (()=>{"use strict";var t={2981:(t,e,a)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function r(t,e){for(var a=0;a<e.length;a++){var n=e[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var r=a.call(t,e||"default");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==n(e)?e:e+""}a.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,n=[{key:"addHCaptchaData",value:function(e,a,n,r){var o,c=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof c&&c.startsWith("action=".concat(a))&&(e.data+=t.getHCaptchaData(r,n))}},{key:"getHCaptchaData",value:function(t,e){for(var a,n="",r=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(a=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==a?a:"","hcap_hp_sig","hcap_fst_token"];r<o.length;r++){var c,i=o[r];if(i){var u=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";n+="&".concat(i,"=").concat(u)}}return n}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:a}}))}catch(t){}var r=t.apply(void 0,a);return r.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:a,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:a,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:a}}))}catch(t){}}),r};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(a=null)&&r(e.prototype,a),n&&r(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,a,n}()}},e={};function a(n){var r=e[n];if(void 0!==r)return r.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,a),o.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);var n,r=a(2981);(n=jQuery).ajaxPrefilter(function(t){if("brizy_submit_form"===new URLSearchParams(t.url.split("?")[1]).get("action")){var e=JSON.parse(t.data.get("data")),a="hcaptcha_brizy_nonce",o=n(".brz-form"),c=r.d.getHCaptchaData(o,a);e.push({name:"h-captcha-response",value:c.response,required:!1}),e.push({name:a,value:c.nonce,required:!1}),t.data.set("data",JSON.stringify(e))}})})(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-customer-reviews.js
r3339595 r3359717 15 15 'hcaptcha', 16 16 ( formSelector ) => { 17 return formSelector + ', div#tab-reviews, div#tab-cr_qna, div.cr-qna-list-inl-answ ';17 return formSelector + ', div#tab-reviews, div#tab-cr_qna, div.cr-qna-list-inl-answ, div.cr-qna-new-q-form'; 18 18 }, 19 19 ); … … 34 34 'click', 35 35 '#tab-title-reviews a, #tab-title-cr_qna a, ' + 36 'button.cr-review-form-continue.cr-review-form-error', 36 'button.cr-review-form-continue.cr-review-form-error, ' + 37 'button.cr-qna-ask-button', 37 38 function() { 38 39 hCaptchaBindEvents(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-customer-reviews.min.js
r3339595 r3359717 1 (()=>{"use strict";var t={2981:(t,e, r)=>{function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function n(t,e){for(var r=0;r<e.length;r++){var a=e[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,o(a.key),a)}}function o(t){var e=function(t,e){if("object"!=a(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==a(e)?e:e+""}r.d(e,{d:()=>i});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,a=[{key:"addHCaptchaData",value:function(e,r,a,n){var o,i=null!==(o=e.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(r))){var c=t.getHCaptchaData(n,a);e.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+a+"="+c.nonce}}},{key:"getHCaptchaData",value:function(t,e){var r=t.find('[name="h-captcha-response"]').val();r=r||"";var a=t.find('[name="hcaptcha-widget-id"]').val();a=a||"";var n=t.find('[name="'+e+'"]').val();return{response:r,id:a,nonce:n=n||""}}}],(r=null)&&n(e.prototype,r),a&&n(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,a}()}},e={};function r(a){var n=e[a];if(void 0!==n)return n.exports;var o=e[a]={exports:{}};return t[a](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var a in e)r.o(e,a)&&!r.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var a=r(2981),n=window.hCaptchaCustomerReviews||function(t,e,r){var n={init:function(){wp.hooks.addFilter("hcaptcha.formSelector","hcaptcha",function(t){return t+", div#tab-reviews, div#tab-cr_qna, div.cr-qna-list-inl-answ"}),wp.hooks.addFilter("hcaptcha.submitButtonSelector","hcaptcha",function(t){return t+", button.cr-review-form-submit"}),r(n.ready)},ready:function(){r(t).on("click","#tab-title-reviews a, #tab-title-cr_qna a, button.cr-review-form-continue.cr-review-form-error",function(){hCaptchaBindEvents()}),r.ajaxPrefilter(function(t){var e,n=null!==(e=t.data)&&void 0!==e?e:"";if("string"==typeof n){var o,i=new URLSearchParams(n),c=i.get("action");switch(c){case"cr_submit_review":o=r("#review_form");break;case"cr_new_qna":var u=i.get("questionID");o=r(u?'[data-question="'.concat(u,'"]'):"#cr_qna");break;default:return}a.d.addHCaptchaData(t,c,"hcaptcha_customer_reviews_nonce",o)}})}};return n}(document,window,jQuery);window.hCaptchaCustomerReviews=n,n.init()})();1 (()=>{"use strict";var t={2981:(t,e,n)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,o(r.key),r)}}function o(t){var e=function(t,e){if("object"!=r(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var a=n.call(t,e||"default");if("object"!=r(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==r(e)?e:e+""}n.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,r=[{key:"addHCaptchaData",value:function(e,n,r,a){var o,c=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof c&&c.startsWith("action=".concat(n))&&(e.data+=t.getHCaptchaData(a,r))}},{key:"getHCaptchaData",value:function(t,e){for(var n,r="",a=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(n=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==n?n:"","hcap_hp_sig","hcap_fst_token"];a<o.length;a++){var c,i=o[a];if(i){var u=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";r+="&".concat(i,"=").concat(u)}}return r}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:n}}))}catch(t){}var a=t.apply(void 0,n);return a.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:n,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:n,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:n}}))}catch(t){}}),a};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(n=null)&&a(e.prototype,n),r&&a(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,r}()}},e={};function n(r){var a=e[r];if(void 0!==a)return a.exports;var o=e[r]={exports:{}};return t[r](o,o.exports,n),o.exports}n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var r=n(2981),a=window.hCaptchaCustomerReviews||function(t,e,n){var a={init:function(){wp.hooks.addFilter("hcaptcha.formSelector","hcaptcha",function(t){return t+", div#tab-reviews, div#tab-cr_qna, div.cr-qna-list-inl-answ, div.cr-qna-new-q-form"}),wp.hooks.addFilter("hcaptcha.submitButtonSelector","hcaptcha",function(t){return t+", button.cr-review-form-submit"}),n(a.ready)},ready:function(){n(t).on("click","#tab-title-reviews a, #tab-title-cr_qna a, button.cr-review-form-continue.cr-review-form-error, button.cr-qna-ask-button",function(){hCaptchaBindEvents()}),n.ajaxPrefilter(function(t){var e,a=null!==(e=t.data)&&void 0!==e?e:"";if("string"==typeof a){var o,c=new URLSearchParams(a),i=c.get("action");switch(i){case"cr_submit_review":o=n("#review_form");break;case"cr_new_qna":var u=c.get("questionID");o=n(u?'[data-question="'.concat(u,'"]'):"#cr_qna");break;default:return}r.d.addHCaptchaData(t,i,"hcaptcha_customer_reviews_nonce",o)}})}};return a}(document,window,jQuery);window.hCaptchaCustomerReviews=a,a.init()})(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-divi-email-optin.js
r3064004 r3359717 6 6 // noinspection JSCheckFunctionSignatures 7 7 $.ajaxPrefilter( function( options ) { 8 // eslint-disable-next-line @wordpress/no-global-active-element 9 let $form = $( document.activeElement ).closest( 'form' ); 10 11 $form = $form.length ? $form : $( '.et_pb_newsletter_form form' ); 12 8 13 helper.addHCaptchaData( 9 14 options, 10 15 'et_pb_submit_subscribe_form', 11 16 'hcaptcha_divi_email_optin_nonce', 12 $ ( '.et_pb_newsletter_form form' )17 $form 13 18 ); 14 19 } ); 20 21 $( document ).on( 'ajaxSuccess', function( event, xhr, settings ) { 22 const params = new URLSearchParams( settings.data ); 23 24 if ( params.get( 'action' ) !== 'et_pb_submit_subscribe_form' ) { 25 return; 26 } 27 28 window.hCaptchaBindEvents(); 29 } ); 15 30 }( jQuery ) ); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-divi-email-optin.min.js
r3339595 r3359717 1 (()=>{"use strict";var t={2981:(t,e, r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function a(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var a=r.call(t,e||"default");if("object"!=n(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==n(e)?e:e+""}r.d(e,{d:()=>i});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,n=[{key:"addHCaptchaData",value:function(e,r,n,a){var o,i=null!==(o=e.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(r))){var c=t.getHCaptchaData(a,n);e.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+n+"="+c.nonce}}},{key:"getHCaptchaData",value:function(t,e){var r=t.find('[name="h-captcha-response"]').val();r=r||"";var n=t.find('[name="hcaptcha-widget-id"]').val();n=n||"";var a=t.find('[name="'+e+'"]').val();return{response:r,id:n,nonce:a=a||""}}}],(r=null)&&a(e.prototype,r),n&&a(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,n}()}},e={};function r(n){var a=e[n];if(void 0!==a)return a.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var n,a=r(2981);(n=jQuery).ajaxPrefilter(function(t){a.d.addHCaptchaData(t,"et_pb_submit_subscribe_form","hcaptcha_divi_email_optin_nonce",n(".et_pb_newsletter_form form"))})})();1 (()=>{"use strict";var t={2981:(t,e,n)=>{function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function r(t,e){for(var n=0;n<e.length;n++){var a=e[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,o(a.key),a)}}function o(t){var e=function(t,e){if("object"!=a(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==a(e)?e:e+""}n.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,a=[{key:"addHCaptchaData",value:function(e,n,a,r){var o,c=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof c&&c.startsWith("action=".concat(n))&&(e.data+=t.getHCaptchaData(r,a))}},{key:"getHCaptchaData",value:function(t,e){for(var n,a="",r=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(n=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==n?n:"","hcap_hp_sig","hcap_fst_token"];r<o.length;r++){var c,i=o[r];if(i){var u=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";a+="&".concat(i,"=").concat(u)}}return a}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:n}}))}catch(t){}var r=t.apply(void 0,n);return r.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:n,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:n,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:n}}))}catch(t){}}),r};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(n=null)&&r(e.prototype,n),a&&r(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,a}()}},e={};function n(a){var r=e[a];if(void 0!==r)return r.exports;var o=e[a]={exports:{}};return t[a](o,o.exports,n),o.exports}n.d=(t,e)=>{for(var a in e)n.o(e,a)&&!n.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var a,r=n(2981);(a=jQuery).ajaxPrefilter(function(t){var e=a(document.activeElement).closest("form");e=e.length?e:a(".et_pb_newsletter_form form"),r.d.addHCaptchaData(t,"et_pb_submit_subscribe_form","hcaptcha_divi_email_optin_nonce",e)}),a(document).on("ajaxSuccess",function(t,e,n){"et_pb_submit_subscribe_form"===new URLSearchParams(n.data).get("action")&&window.hCaptchaBindEvents()})})(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-helper.js
r3114572 r3359717 1 /* global jQuery */ 2 1 3 export class helper { 2 4 static addHCaptchaData( options, action, nonceName, $node ) { … … 7 9 } 8 10 9 const hCaptchaData = helper.getHCaptchaData( $node, nonceName ); 10 11 options.data += 12 '&h-captcha-response=' + hCaptchaData.response + 13 '&hcaptcha-widget-id=' + hCaptchaData.id + 14 '&' + nonceName + '=' + hCaptchaData.nonce; 11 options.data += helper.getHCaptchaData( $node, nonceName ); 15 12 } 16 13 14 /** 15 * Get hCaptcha data from a node. 16 * 17 * @param {jQuery} $node Node. 18 * @param {string} nonceName Nonce name. 19 * @return {string} Data. 20 */ 17 21 static getHCaptchaData( $node, nonceName ) { 18 let response = $node.find( '[name="h-captcha-response"]' ).val(); 19 response = response ? response : ''; 20 let id = $node.find( '[name="hcaptcha-widget-id"]' ).val(); 21 id = id ? id : ''; 22 let nonce = $node.find( '[name="' + nonceName + '"]' ).val(); 23 nonce = nonce ? nonce : ''; 22 const hpName = $node.find( '[name^="hcap_hp_"]' ).first().attr( 'name' ) ?? ''; 23 const names = [ 'h-captcha-response', 'hcaptcha-widget-id', nonceName, hpName, 'hcap_hp_sig', 'hcap_fst_token' ]; 24 24 25 return { response, id, nonce }; 25 let data = ''; 26 27 for ( const name of names ) { 28 if ( ! name ) { 29 continue; 30 } 31 32 const val = $node.find( `[name="${ name }"]` ).first().val() ?? ''; 33 34 data += `&${ name }=${ val }`; 35 } 36 37 return data; 38 } 39 40 /** 41 * Installs a composable wrapper around window.fetch and dispatches custom events. 42 * - Does not alter request/response behavior. 43 * - Returns the original Promise from fetch. 44 * - Safe to call multiple times (idempotent). 45 */ 46 static installFetchEvents() { 47 if ( typeof window === 'undefined' || typeof window.fetch !== 'function' ) { 48 return; 49 } 50 51 // Prevent double wrapping. 52 if ( window.__hcapFetchWrapped ) { 53 return; 54 } 55 56 ( function( prevFetch ) { 57 window.fetch = function( ...args ) { 58 // Fire "before" event prior to the actual call. 59 try { 60 window.dispatchEvent( 61 new CustomEvent( 'hCaptchaFetch:before', { detail: { args } } ) 62 ); 63 } catch ( e ) { 64 // Never break the chain because of event listener errors. 65 } 66 67 const p = prevFetch( ...args ); 68 69 // Side-subscribe without altering the returned Promise. 70 p.then( ( response ) => { 71 try { 72 window.dispatchEvent( 73 new CustomEvent( 'hCaptchaFetch:success', { 74 detail: { args, response: response.clone() }, 75 } ) 76 ); 77 } catch ( e ) { 78 } 79 } ).catch( ( error ) => { 80 try { 81 window.dispatchEvent( 82 new CustomEvent( 'hCaptchaFetch:error', { detail: { args, error } } ) 83 ); 84 } catch ( e ) { 85 } 86 } ).finally( () => { 87 try { 88 window.dispatchEvent( 89 new CustomEvent( 'hCaptchaFetch:complete', { detail: { args } } ) 90 ); 91 } catch ( e ) { 92 } 93 } ); 94 95 return p; 96 }; 97 }( window.fetch ) ); 98 99 // Mark as wrapped (non-enumerable if possible). 100 try { 101 Object.defineProperty( window, '__hcapFetchWrapped', { 102 value: true, 103 configurable: true, 104 } ); 105 } catch ( e ) { 106 // Fallback if defineProperty is restricted. 107 window.__hcapFetchWrapped = true; 108 } 26 109 } 27 110 } -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-nf.js
r3200161 r3359717 1 /** 2 * Ninja Forms controller file. 3 */ 1 /* global Marionette, nfRadio, jQuery */ 4 2 5 /* global Marionette, nfRadio */ 3 const hCaptchaNF = window.hCaptchaNF || ( function( window, $ ) { 4 const app = { 5 init() { 6 // Register Ajax submit button. 7 wp.hooks.addFilter( 8 'hcaptcha.ajaxSubmitButton', 9 'hcaptcha', 10 app.isAjaxSubmitButton 11 ); 6 12 7 wp.hooks.addFilter( 8 'hcaptcha.ajaxSubmitButton', 9 'hcaptcha', 10 ( isAjaxSubmitButton, submitButtonElement ) => { 11 if ( submitButtonElement.classList.contains( 'nf-element' ) ) { 12 return true; 13 } 14 15 return isAjaxSubmitButton; 16 } 17 ); 18 19 document.addEventListener( 'DOMContentLoaded', function() { 20 const HCaptchaFieldController = Marionette.Object.extend( { 21 initialize() { 22 // On the Form Submission's field validation. 23 const submitChannel = nfRadio.channel( 'submit' ); 24 this.listenTo( submitChannel, 'validate:field', this.updateHcaptcha ); 25 this.listenTo( submitChannel, 'validate:field', this.updateHcaptcha ); 26 27 // On the Field's model value change. 28 const fieldsChannel = nfRadio.channel( 'fields' ); 29 this.listenTo( fieldsChannel, 'change:modelValue', this.updateHcaptcha ); 13 document.addEventListener( 'DOMContentLoaded', app.onDomReady ); 14 $.ajaxPrefilter( this.ajaxPrefilter() ); 15 $( document ).on( 'ajaxSuccess', app.ajaxSuccessHandler ); 30 16 }, 31 17 32 updateHcaptcha( model ) { 33 // Only validate a specific fields type. 34 if ( 'hcaptcha-for-ninja-forms' !== model.get( 'type' ) ) { 18 isAjaxSubmitButton( isAjaxSubmitButton, submitButtonElement ) { 19 if ( submitButtonElement.classList.contains( 'nf-element' ) ) { 20 return true; 21 } 22 23 return isAjaxSubmitButton; 24 }, 25 26 // Initialize Ninja Forms field controller listeners when DOM is ready. 27 onDomReady() { 28 // Create a Marionette controller mirroring the original behavior but scoped here. 29 const HCaptchaFieldController = Marionette.Object.extend( { 30 initialize() { 31 // On the Form Submission's field validation. 32 const submitChannel = nfRadio.channel( 'submit' ); 33 this.listenTo( submitChannel, 'validate:field', this.updateHcaptcha ); 34 35 // On the Field's model value change. 36 const fieldsChannel = nfRadio.channel( 'fields' ); 37 this.listenTo( fieldsChannel, 'change:modelValue', this.updateHcaptcha ); 38 }, 39 40 updateHcaptcha( model ) { 41 // Only validate a specific fields type. 42 if ( 'hcaptcha-for-ninja-forms' !== model.get( 'type' ) ) { 43 return; 44 } 45 46 // Check if the Model has a value. 47 if ( model.get( 'value' ) ) { 48 // Remove Error from Model. 49 nfRadio.channel( 'fields' ).request( 50 'remove:error', 51 model.get( 'id' ), 52 'required-error' 53 ); 54 } else { 55 const fieldId = model.get( 'id' ); 56 57 /** 58 * @type {HTMLTextAreaElement} 59 */ 60 const hcapResponse = document.querySelector( 61 `div[data-field-id="${ fieldId }"] textarea[name="h-captcha-response"]` 62 ); 63 64 model.set( 'value', hcapResponse?.value ); 65 } 66 }, 67 } ); 68 69 // Instantiate our custom field's controller, defined above. 70 window.hCaptchaFieldController = new HCaptchaFieldController(); 71 }, 72 73 // Register Ajax prefilter for NF submissions. 74 ajaxPrefilter() { 75 return function( options ) { 76 const data = options.data ?? ''; 77 78 if ( typeof data !== 'string' ) { 79 return; 80 } 81 82 const urlParams = new URLSearchParams( data ); 83 const action = urlParams.get( 'action' ); 84 85 if ( 'nf_ajax_submit' !== action ) { 86 return; 87 } 88 89 const widgetName = 'hcaptcha-widget-id'; 90 const tokenName = 'hcap_fst_token'; 91 const sigName = 'hcap_hp_sig'; 92 93 const formId = JSON.parse( urlParams.get( 'formData' ) ).id; 94 const $form = $( `#nf-form-${ formId }-cont` ); 95 const widget = $form.find( `[name="${ widgetName }"]` ).val() ?? ''; 96 const token = $form.find( `[name="${ tokenName }"]` ).val() ?? ''; 97 const sig = $form.find( `[name="${ sigName }"]` ).val() ?? ''; 98 const hcapHp = $form.find( `[id^="hcap_hp_"]` ); 99 100 urlParams.set( widgetName, widget ); 101 urlParams.set( tokenName, token ); 102 urlParams.set( sigName, sig ); 103 urlParams.set( hcapHp.attr( 'id' ) ?? '', hcapHp.val() ?? '' ); 104 105 options.data = urlParams.toString(); 106 }; 107 }, 108 109 // jQuery ajaxSuccess handler. 110 ajaxSuccessHandler( event, xhr, settings ) { 111 const data = settings.data ?? ''; 112 113 if ( typeof data !== 'string' ) { 35 114 return; 36 115 } 37 116 38 // Check if the Model has a value. 39 if ( model.get( 'value' ) ) { 40 // Remove Error from Model. 41 nfRadio.channel( 'fields' ).request( 42 'remove:error', 43 model.get( 'id' ), 44 'required-error' 45 ); 46 } else { 47 const fieldId = model.get( 'id' ); 117 const action = new URLSearchParams( data ).get( 'action' ); 48 118 49 /** 50 * @type {HTMLTextAreaElement} 51 */ 52 const hcapResponse = document.querySelector( 53 '.h-captcha[data-fieldId="' + fieldId + '"] textarea[name="h-captcha-response"]' 54 ); 119 if ( 'nf_ajax_submit' !== action ) { 120 return; 121 } 55 122 56 model.set( 'value', hcapResponse.value ); 57 } 123 window.hCaptchaBindEvents(); 58 124 }, 59 } );125 }; 60 126 61 // Instantiate our custom field's controller, defined above. 62 window.hCaptchaFieldController = new HCaptchaFieldController(); 63 } ); 127 return app; 128 }( window, jQuery ) ); 64 129 65 /* global jQuery */ 130 window.hCaptchaNF = hCaptchaNF; 66 131 67 ( function( $ ) { 68 // noinspection JSCheckFunctionSignatures 69 $.ajaxPrefilter( function( options ) { 70 const data = options.data ?? ''; 71 72 if ( ! ( typeof data === 'string' || data instanceof String ) ) { 73 return; 74 } 75 76 if ( ! data.startsWith( 'action=nf_ajax_submit' ) ) { 77 return; 78 } 79 80 const urlParams = new URLSearchParams( data ); 81 const formId = JSON.parse( urlParams.get( 'formData' ) ).id; 82 const $form = $( '#nf-form-' + formId + '-cont' ); 83 let id = $form.find( '[name="hcaptcha-widget-id"]' ).val(); 84 id = id ? id : ''; 85 options.data += '&hcaptcha-widget-id=' + id; 86 } ); 87 }( jQuery ) ); 132 hCaptchaNF.init(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-nf.min.js
r3339595 r3359717 1 (()=>{var a ;wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(a,t){return!!t.classList.contains("nf-element")||a}),document.addEventListener("DOMContentLoaded",function(){var a=Marionette.Object.extend({initialize:function(){var a=nfRadio.channel("submit");this.listenTo(a,"validate:field",this.updateHcaptcha),this.listenTo(a,"validate:field",this.updateHcaptcha);var t=nfRadio.channel("fields");this.listenTo(t,"change:modelValue",this.updateHcaptcha)},updateHcaptcha:function(a){if("hcaptcha-for-ninja-forms"===a.get("type"))if(a.get("value"))nfRadio.channel("fields").request("remove:error",a.get("id"),"required-error");else{var t=a.get("id"),e=document.querySelector('.h-captcha[data-fieldId="'+t+'"] textarea[name="h-captcha-response"]');a.set("value",e.value)}}});window.hCaptchaFieldController=new a}),(a=jQuery).ajaxPrefilter(function(t){var e,i=null!==(e=t.data)&&void 0!==e?e:"";if(("string"==typeof i||i instanceof String)&&i.startsWith("action=nf_ajax_submit")){var n=new URLSearchParams(i),c=JSON.parse(n.get("formData")).id,r=a("#nf-form-"+c+"-cont").find('[name="hcaptcha-widget-id"]').val();r=r||"",t.data+="&hcaptcha-widget-id="+r}})})();1 (()=>{var a=window.hCaptchaNF||function(a,t){var e={init:function(){wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",e.isAjaxSubmitButton),document.addEventListener("DOMContentLoaded",e.onDomReady),t.ajaxPrefilter(this.ajaxPrefilter()),t(document).on("ajaxSuccess",e.ajaxSuccessHandler)},isAjaxSubmitButton:function(a,t){return!!t.classList.contains("nf-element")||a},onDomReady:function(){var t=Marionette.Object.extend({initialize:function(){var a=nfRadio.channel("submit");this.listenTo(a,"validate:field",this.updateHcaptcha);var t=nfRadio.channel("fields");this.listenTo(t,"change:modelValue",this.updateHcaptcha)},updateHcaptcha:function(a){if("hcaptcha-for-ninja-forms"===a.get("type"))if(a.get("value"))nfRadio.channel("fields").request("remove:error",a.get("id"),"required-error");else{var t=a.get("id"),e=document.querySelector('div[data-field-id="'.concat(t,'"] textarea[name="h-captcha-response"]'));a.set("value",null==e?void 0:e.value)}}});a.hCaptchaFieldController=new t},ajaxPrefilter:function(){return function(a){var e,n,i,o,c,d,r=null!==(e=a.data)&&void 0!==e?e:"";if("string"==typeof r){var l=new URLSearchParams(r);if("nf_ajax_submit"===l.get("action")){var u="hcaptcha-widget-id",s="hcap_fst_token",f="hcap_hp_sig",h=JSON.parse(l.get("formData")).id,v=t("#nf-form-".concat(h,"-cont")),p=null!==(n=v.find('[name="'.concat(u,'"]')).val())&&void 0!==n?n:"",m=null!==(i=v.find('[name="'.concat(s,'"]')).val())&&void 0!==i?i:"",j=null!==(o=v.find('[name="'.concat(f,'"]')).val())&&void 0!==o?o:"",g=v.find('[id^="hcap_hp_"]');l.set(u,p),l.set(s,m),l.set(f,j),l.set(null!==(c=g.attr("id"))&&void 0!==c?c:"",null!==(d=g.val())&&void 0!==d?d:""),a.data=l.toString()}}}},ajaxSuccessHandler:function(t,e,n){var i,o=null!==(i=n.data)&&void 0!==i?i:"";"string"==typeof o&&("nf_ajax_submit"===new URLSearchParams(o).get("action")&&a.hCaptchaBindEvents())}};return e}(window,jQuery);window.hCaptchaNF=a,a.init()})(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-passster.min.js
r3339595 r3359717 1 (()=>{"use strict";var t={2981:(t, a,e)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function n(t,a){for(var e=0;e<a.length;e++){var r=a[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,o(r.key),r)}}function o(t){var a=function(t,a){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,a||"default");if("object"!=r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===a?String:Number)(t)}(t,"string");return"symbol"==r(a)?a:a+""}e.d(a,{d:()=>i});var i=function(){function t(){!function(t,a){if(!(t instanceof a))throw new TypeError("Cannot call a class as a function")}(this,t)}return a=t,r=[{key:"addHCaptchaData",value:function(a,e,r,n){var o,i=null!==(o=a.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(e))){var c=t.getHCaptchaData(n,r);a.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+r+"="+c.nonce}}},{key:"getHCaptchaData",value:function(t,a){var e=t.find('[name="h-captcha-response"]').val();e=e||"";var r=t.find('[name="hcaptcha-widget-id"]').val();r=r||"";var n=t.find('[name="'+a+'"]').val();return{response:e,id:r,nonce:n=n||""}}}],(e=null)&&n(a.prototype,e),r&&n(a,r),Object.defineProperty(a,"prototype",{writable:!1}),a;var a,e,r}()}},a={};function e(r){var n=a[r];if(void 0!==n)return n.exports;var o=a[r]={exports:{}};return t[r](o,o.exports,e),o.exports}e.d=(t,a)=>{for(var r in a)e.o(a,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:a[r]})},e.o=(t,a)=>Object.prototype.hasOwnProperty.call(t,a);var r,n=e(2981);wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(t,a){return!!a.classList.contains("passster-submit")||t}),(r=jQuery).ajaxPrefilter(function(t){var a,e=null!==(a=t.data)&&void 0!==a?a:"";if("string"==typeof e){var o=new URLSearchParams(e).get("area");n.d.addHCaptchaData(t,"validate_input","hcaptcha_passster_nonce",r("[data-area="+o+"]").closest("form"))}})})();1 (()=>{"use strict";var t={2981:(t,e,a)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function r(t,e){for(var a=0;a<e.length;a++){var n=e[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var r=a.call(t,e||"default");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==n(e)?e:e+""}a.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,n=[{key:"addHCaptchaData",value:function(e,a,n,r){var o,c=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof c&&c.startsWith("action=".concat(a))&&(e.data+=t.getHCaptchaData(r,n))}},{key:"getHCaptchaData",value:function(t,e){for(var a,n="",r=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(a=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==a?a:"","hcap_hp_sig","hcap_fst_token"];r<o.length;r++){var c,i=o[r];if(i){var p=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";n+="&".concat(i,"=").concat(p)}}return n}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:a}}))}catch(t){}var r=t.apply(void 0,a);return r.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:a,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:a,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:a}}))}catch(t){}}),r};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(a=null)&&r(e.prototype,a),n&&r(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,a,n}()}},e={};function a(n){var r=e[n];if(void 0!==r)return r.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,a),o.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);var n,r=a(2981);wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(t,e){return!!e.classList.contains("passster-submit")||t}),(n=jQuery).ajaxPrefilter(function(t){var e,a=null!==(e=t.data)&&void 0!==e?e:"";if("string"==typeof a){var o=new URLSearchParams(a).get("area");r.d.addHCaptchaData(t,"validate_input","hcaptcha_passster_nonce",n("[data-area="+o+"]").closest("form"))}})})(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-spectra.js
r3319903 r3359717 1 const { fetch: originalFetch } = window;1 import { helper } from './hcaptcha-helper.js'; 2 2 3 // Intercept Spectra form fetch to add hCaptcha data. 4 window.fetch = async ( ...args ) => { 5 const [ resource, config ] = args; 3 const hCaptchaSpectra = window.hCaptchaSpectra || ( function( window ) { 4 let style; 6 5 7 // @param {FormData} body 8 const body = config.body; 9 const blockId = body.get( 'block_id' ); 10 const inputName = 'h-captcha-response'; 11 const widgetName = 'hcaptcha-widget-id'; 12 const errorClassName = 'hcaptcha-error-message'; 13 const nonceName = 'hcaptcha_spectra_form_nonce'; 14 const formData = JSON.parse( body.get( 'form_data' ) ); 6 const app = { 7 init() { 8 helper.installFetchEvents(); 9 window.addEventListener( 'hCaptchaFetch:before', app.fetchBefore ); 10 window.addEventListener( 'hCaptchaFetch:success', app.fetchSuccess ); 11 window.addEventListener( 'hCaptchaFetch:complete', app.fetchComplete ); 12 }, 15 13 16 const selector = `[name="uagb-form-${ blockId }"]`; 17 const style = document.createElement( 'style' ); 14 fetchBefore( event ) { 15 const config = event?.detail?.args?.[ 1 ] ?? {}; 16 const body = config.body; 18 17 19 style.id = `hcaptcha-style-${ blockId }`; 20 style.textContent = ` 18 if ( ! ( body instanceof URLSearchParams ) ) { 19 return; 20 } 21 22 // @param {FormData} body 23 const blockId = body.get( 'block_id' ); 24 const block = document.querySelector( `.uagb-block-${ blockId }` ); 25 26 // Remove hCaptcha error message. 27 const errorMessage = block.querySelector( '.hcaptcha-error-message' ); 28 29 if ( errorMessage ) { 30 errorMessage.remove(); 31 } 32 33 const responseInputName = 'h-captcha-response'; 34 const formData = JSON.parse( body.get( 'form_data' ) ); 35 36 if ( 'uagb_process_forms' !== body.get( 'action' ) || formData.hasOwnProperty( responseInputName ) ) { 37 return; 38 } 39 40 const widgetName = 'hcaptcha-widget-id'; 41 const sigInputName = 'hcap_hp_sig'; 42 const tokenName = 'hcap_fst_token'; 43 const nonceName = 'hcaptcha_spectra_form_nonce'; 44 45 /** 46 * @type {HTMLInputElement} 47 */ 48 const widgetId = block.querySelector( `[name="${ widgetName }"]` ); 49 50 /** 51 * @type {HTMLTextAreaElement} 52 */ 53 const hCaptchaResponse = block.querySelector( `[name="${ responseInputName }"]` ); 54 55 /** 56 * @type {HTMLInputElement} 57 */ 58 const nonce = block.querySelector( `[name="${ nonceName }"]` ); 59 60 /** 61 * @type {HTMLInputElement} 62 */ 63 const hcapHp = block.querySelector( `[id^="hcap_hp_"]` ); 64 65 /** 66 * @type {HTMLInputElement} 67 */ 68 const hcapSig = block.querySelector( `[name="${ sigInputName }"]` ); 69 70 /** 71 * @type {HTMLInputElement} 72 */ 73 const token = block.querySelector( `[name="${ tokenName }"]` ); 74 75 formData[ widgetName ] = widgetId?.value; 76 formData[ responseInputName ] = hCaptchaResponse?.value; 77 formData[ nonceName ] = nonce?.value; 78 formData[ hcapHp?.id ] = hcapHp?.value; 79 formData[ sigInputName ] = hcapSig?.value; 80 formData[ tokenName ] = token?.value; 81 82 body.set( 'form_data', JSON.stringify( formData ) ); 83 84 config.body = body; 85 event.detail.args.config = config; 86 }, 87 88 async fetchSuccess( event ) { 89 const config = event?.detail?.args?.[ 1 ]; 90 const response = event?.detail?.response; 91 92 if ( ! config || ! response ) { 93 return; 94 } 95 96 const body = config.body; 97 98 if ( ! ( body instanceof FormData || body instanceof URLSearchParams ) ) { 99 return; 100 } 101 102 const responseData = await response.clone().json().catch( () => null ); 103 104 if ( 'uagb_process_forms' !== body.get( 'action' ) || typeof responseData?.data !== 'string' ) { 105 return; 106 } 107 108 const blockId = body.get( 'block_id' ); 109 const selector = `[name="uagb-form-${ blockId }"]`; 110 111 style = document.createElement( 'style' ); 112 style.id = `hcaptcha-style-${ blockId }`; 113 style.textContent = ` 21 114 ${ selector } { 22 115 display: block !important; … … 24 117 `; 25 118 26 // Remove hCaptcha error message.27 const errorMessage = document.querySelector( '.uagb-block-' + blockId + ' .' + errorClassName);119 // We have hCaptcha error in responseData. 120 const styleToAdd = document.getElementById( style.id ); 28 121 29 if ( errorMessage ) { 30 errorMessage.remove(); 31 } 122 if ( ! styleToAdd ) { 123 // Add a style preventing hiding the form. 124 document.head.appendChild( style ); 125 } 32 126 33 if ( 'uagb_process_forms' === body.get( 'action' ) && ! formData.hasOwnProperty( inputName ) ) { 34 /** 35 * @type {HTMLTextAreaElement} 36 */ 37 const hCaptchaResponse = document.querySelector( '.uagb-block-' + blockId + ' [name="' + inputName + '"]' ); 127 // Remove previous error message (if exists) in the current block. 128 const prevError = document.querySelector( '.uagb-block-' + blockId + ' .hcaptcha-error-message' ); 38 129 39 /** 40 * @type {HTMLInputElement} 41 */ 42 const id = document.querySelector( '.uagb-block-' + blockId + ' [name="' + widgetName + '"]' ); 130 if ( prevError ) { 131 prevError.remove(); 132 } 43 133 44 /** 45 * @type {HTMLInputElement} 46 */ 47 const nonce = document.querySelector( '.uagb-block-' + blockId + ' [name="' + nonceName + '"]' ); 134 // Show an error message. 135 const errorContainer = document.createElement( 'div' ); 48 136 49 if ( hCaptchaResponse ) { 50 formData[ inputName ] = hCaptchaResponse.value; 51 } 137 errorContainer.className = 'hcaptcha-error-message'; 138 errorContainer.textContent = responseData.data; 139 errorContainer.style.color = 'red'; 140 errorContainer.style.padding = '10px 0'; 52 141 53 if ( id ) { 54 formData[ widgetName ] = id.value; 55 } 142 // Find the form container and append the error message 143 const hcaptchaContainer = document.querySelector( '.uagb-block-' + blockId + ' h-captcha' ); 56 144 57 formData[ nonceName ] = nonce.value; 145 if ( hcaptchaContainer ) { 146 hcaptchaContainer.parentNode.insertBefore( errorContainer, hcaptchaContainer ); 147 } 148 }, 58 149 59 body.set( 'form_data', JSON.stringify( formData ) );60 config.body = body;61 }150 fetchComplete( event ) { 151 const config = event?.detail?.args?.[ 1 ] ?? {}; 152 const body = config.body; 62 153 63 const response = await originalFetch( resource, config ); 154 if ( ! ( body instanceof URLSearchParams ) ) { 155 return; 156 } 64 157 65 // Check if the response contains errors we're interested in.66 const responseClone = response.clone();67 const responseData = await responseClone.json().catch( () => null );158 if ( 'uagb_process_forms' !== body.get( 'action' ) ) { 159 return; 160 } 68 161 69 if ( 'uagb_process_forms' === body.get( 'action' ) && typeof responseData?.data === 'string' ) {70 // We have hCaptcha error in responseData.162 // Remove a style preventing hiding the form. 163 const styleToRemove = document.getElementById( style?.id ); 71 164 72 const styleToAdd = document.getElementById( style.id ); 165 if ( styleToRemove ) { 166 styleToRemove.remove(); 167 } 73 168 74 if ( ! styleToAdd ) { 75 // Add a style preventing hiding the form. 76 document.head.appendChild( style ); 77 } 169 window.hCaptchaBindEvents(); 170 }, 171 }; 78 172 79 // Show an error message. 80 const errorContainer = document.createElement( 'div' ); 81 errorContainer.className = errorClassName; 82 errorContainer.textContent = responseData.data; 83 errorContainer.style.color = 'red'; 84 errorContainer.style.padding = '10px 0'; 173 return app; 174 }( window ) ); 85 175 86 // Find the form container and append the error message 87 const hcaptchaContainer = document.querySelector( '.uagb-block-' + blockId + ' h-captcha' ); 176 window.hCaptchaSpectra = hCaptchaSpectra; 88 177 89 if ( hcaptchaContainer ) { 90 hcaptchaContainer.parentNode.insertBefore( errorContainer, hcaptchaContainer ); 91 } 92 93 // Set the data to 400 for Spectra. 94 responseData.data = 400; 95 96 // Return the original response despite the error. 97 return response; 98 } 99 100 // Remove a style preventing hiding the form. 101 const styleToRemove = document.getElementById( style.id ); 102 103 if ( styleToRemove ) { 104 styleToRemove.remove(); 105 } 106 107 // If no errors or not the errors we're interested in, return the original response. 108 return response; 109 }; 178 hCaptchaSpectra.init(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-spectra.min.js
r3339595 r3359717 1 (()=>{ function t(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var n,r,o="function"==typeof Symbol?Symbol:{},c=o.iterator||"@@iterator",a=o.toStringTag||"@@toStringTag";function u(t,o,c,a){var u=o&&o.prototype instanceof f?o:f,l=Object.create(u.prototype);return e(l,"_invoke",function(t,e,o){var c,a,u,f=0,l=o||[],d=!1,s={p:0,n:0,v:n,a:p,f:p.bind(n,4),d:function(t,e){return c=t,a=0,u=n,s.n=e,i}};function p(t,e){for(a=t,u=e,r=0;!d&&f&&!o&&r<l.length;r++){var o,c=l[r],p=s.p,y=c[2];t>3?(o=y===e)&&(u=c[(a=c[4])?5:(a=3,3)],c[4]=c[5]=n):c[0]<=p&&((o=t<2&&p<c[1])?(a=0,s.v=e,s.n=c[1]):p<y&&(o=t<3||c[0]>e||e>y)&&(c[4]=t,c[5]=e,s.n=y,a=0))}if(o||t>1)return i;throw d=!0,e}return function(o,l,y){if(f>1)throw TypeError("Generator is already running");for(d&&1===l&&p(l,y),a=l,u=y;(r=a<2?n:u)||!d;){c||(a?a<3?(a>1&&(s.n=-1),p(a,u)):s.n=u:s.v=u);try{if(f=2,c){if(a||(o="next"),r=c[o]){if(!(r=r.call(c,u)))throw TypeError("iterator result is not an object");if(!r.done)return r;u=r.value,a<2&&(a=0)}else 1===a&&(r=c.return)&&r.call(c),a<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),a=1);c=n}else if((r=(d=s.n<0)?u:t.call(e,s))!==i)break}catch(t){c=n,a=1,u=t}finally{f=1}}return{value:r,done:d}}}(t,c,a),!0),l}var i={};function f(){}function l(){}function d(){}r=Object.getPrototypeOf;var s=[][c]?r(r([][c]())):(e(r={},c,function(){return this}),r),p=d.prototype=f.prototype=Object.create(s);function y(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,e(t,a,"GeneratorFunction")),t.prototype=Object.create(p),t}return l.prototype=d,e(p,"constructor",d),e(d,"constructor",l),l.displayName="GeneratorFunction",e(d,a,"GeneratorFunction"),e(p),e(p,a,"Generator"),e(p,c,function(){return this}),e(p,"toString",function(){return"[object Generator]"}),(t=function(){return{w:u,m:y}})()}function e(t,n,r,o){var c=Object.defineProperty;try{c({},"",{})}catch(t){c=0}e=function(t,n,r,o){function a(n,r){e(t,n,function(t){return this._invoke(n,r,t)})}n?c?c(t,n,{value:r,enumerable:!o,configurable:!o,writable:!o}):t[n]=r:(a("next",0),a("throw",1),a("return",2))},e(t,n,r,o)}function n(t,e,n,r,o,c,a){try{var u=t[c](a),i=u.value}catch(t){return void n(t)}u.done?e(i):Promise.resolve(i).then(r,o)}function r(t){return function(){var e=this,r=arguments;return new Promise(function(o,c){var a=t.apply(e,r);function u(t){n(a,o,c,u,i,"next",t)}function i(t){n(a,o,c,u,i,"throw",t)}u(void 0)})}}var o=window.fetch;window.fetch=r(t().m(function e(){var n,r,c,a,u,i,f,l,d,s,p,y,m,h,b,v,g,w,_,O,S,k,j,E,P=arguments;return t().w(function(t){for(;;)switch(t.n){case 0:for(n=P.length,r=new Array(n),c=0;c<n;c++)r[c]=P[c];return a=r[0],u=r[1],i=u.body,f=i.get("block_id"),l="h-captcha-response",d="hcaptcha-widget-id",s="hcaptcha-error-message",p="hcaptcha_spectra_form_nonce",y=JSON.parse(i.get("form_data")),m='[name="uagb-form-'.concat(f,'"]'),(h=document.createElement("style")).id="hcaptcha-style-".concat(f),h.textContent="\n\t\t".concat(m," {\n\t\t\tdisplay: block !important;\n\t\t}\n"),(b=document.querySelector(".uagb-block-"+f+" ."+s))&&b.remove(),"uagb_process_forms"!==i.get("action")||y.hasOwnProperty(l)||(v=document.querySelector(".uagb-block-"+f+' [name="'+l+'"]'),g=document.querySelector(".uagb-block-"+f+' [name="'+d+'"]'),w=document.querySelector(".uagb-block-"+f+' [name="'+p+'"]'),v&&(y[l]=v.value),g&&(y[d]=g.value),y[p]=w.value,i.set("form_data",JSON.stringify(y)),u.body=i),t.n=1,o(a,u);case 1:return _=t.v,O=_.clone(),t.n=2,O.json().catch(function(){return null});case 2:if(S=t.v,"uagb_process_forms"!==i.get("action")||"string"!=typeof(null==S?void 0:S.data)){t.n=3;break}return document.getElementById(h.id)||document.head.appendChild(h),(k=document.createElement("div")).className=s,k.textContent=S.data,k.style.color="red",k.style.padding="10px 0",(j=document.querySelector(".uagb-block-"+f+" h-captcha"))&&j.parentNode.insertBefore(k,j),S.data=400,t.a(2,_);case 3:return(E=document.getElementById(h.id))&&E.remove(),t.a(2,_)}},e)}))})();1 (()=>{"use strict";var t={2981:(t,e,n)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,a(r.key),r)}}function a(t){var e=function(t,e){if("object"!=r(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!=r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==r(e)?e:e+""}n.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,r=[{key:"addHCaptchaData",value:function(e,n,r,o){var a,c=null!==(a=e.data)&&void 0!==a?a:"";"string"==typeof c&&c.startsWith("action=".concat(n))&&(e.data+=t.getHCaptchaData(o,r))}},{key:"getHCaptchaData",value:function(t,e){for(var n,r="",o=0,a=["h-captcha-response","hcaptcha-widget-id",e,null!==(n=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==n?n:"","hcap_hp_sig","hcap_fst_token"];o<a.length;o++){var c,i=a[o];if(i){var u=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";r+="&".concat(i,"=").concat(u)}}return r}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:n}}))}catch(t){}var o=t.apply(void 0,n);return o.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:n,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:n,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:n}}))}catch(t){}}),o};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(n=null)&&o(e.prototype,n),r&&o(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,r}()}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var a=e[r]={exports:{}};return t[r](a,a.exports,n),a.exports}n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var r=n(2981);function o(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var t,e,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",c=n.toStringTag||"@@toStringTag";function i(n,r,o,c){var i=r&&r.prototype instanceof l?r:l,f=Object.create(i.prototype);return a(f,"_invoke",function(n,r,o){var a,c,i,l=0,f=o||[],d=!1,s={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,n){return a=e,c=0,i=t,s.n=n,u}};function p(n,r){for(c=n,i=r,e=0;!d&&l&&!o&&e<f.length;e++){var o,a=f[e],p=s.p,h=a[2];n>3?(o=h===r)&&(i=a[(c=a[4])?5:(c=3,3)],a[4]=a[5]=t):a[0]<=p&&((o=n<2&&p<a[1])?(c=0,s.v=r,s.n=a[1]):p<h&&(o=n<3||a[0]>r||r>h)&&(a[4]=n,a[5]=r,s.n=h,c=0))}if(o||n>1)return u;throw d=!0,r}return function(o,f,h){if(l>1)throw TypeError("Generator is already running");for(d&&1===f&&p(f,h),c=f,i=h;(e=c<2?t:i)||!d;){a||(c?c<3?(c>1&&(s.n=-1),p(c,i)):s.n=i:s.v=i);try{if(l=2,a){if(c||(o="next"),e=a[o]){if(!(e=e.call(a,i)))throw TypeError("iterator result is not an object");if(!e.done)return e;i=e.value,c<2&&(c=0)}else 1===c&&(e=a.return)&&e.call(a),c<2&&(i=TypeError("The iterator does not provide a '"+o+"' method"),c=1);a=t}else if((e=(d=s.n<0)?i:n.call(r,s))!==u)break}catch(e){a=t,c=1,i=e}finally{l=1}}return{value:e,done:d}}}(n,o,c),!0),f}var u={};function l(){}function f(){}function d(){}e=Object.getPrototypeOf;var s=[][r]?e(e([][r]())):(a(e={},r,function(){return this}),e),p=d.prototype=l.prototype=Object.create(s);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,a(t,c,"GeneratorFunction")),t.prototype=Object.create(p),t}return f.prototype=d,a(p,"constructor",d),a(d,"constructor",f),f.displayName="GeneratorFunction",a(d,c,"GeneratorFunction"),a(p),a(p,c,"Generator"),a(p,r,function(){return this}),a(p,"toString",function(){return"[object Generator]"}),(o=function(){return{w:i,m:h}})()}function a(t,e,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}a=function(t,e,n,r){function c(e,n){a(t,e,function(t){return this._invoke(e,n,t)})}e?o?o(t,e,{value:n,enumerable:!r,configurable:!r,writable:!r}):t[e]=n:(c("next",0),c("throw",1),c("return",2))},a(t,e,n,r)}function c(t,e,n,r,o,a,c){try{var i=t[a](c),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,o)}var i=window.hCaptchaSpectra||function(t){var e,n={init:function(){r.d.installFetchEvents(),t.addEventListener("hCaptchaFetch:before",n.fetchBefore),t.addEventListener("hCaptchaFetch:success",n.fetchSuccess),t.addEventListener("hCaptchaFetch:complete",n.fetchComplete)},fetchBefore:function(t){var e,n,r=null!==(e=null==t||null===(n=t.detail)||void 0===n||null===(n=n.args)||void 0===n?void 0:n[1])&&void 0!==e?e:{},o=r.body;if(o instanceof URLSearchParams){var a=o.get("block_id"),c=document.querySelector(".uagb-block-".concat(a)),i=c.querySelector(".hcaptcha-error-message");i&&i.remove();var u="h-captcha-response",l=JSON.parse(o.get("form_data"));if("uagb_process_forms"===o.get("action")&&!l.hasOwnProperty(u)){var f="hcaptcha-widget-id",d="hcap_hp_sig",s="hcap_fst_token",p="hcaptcha_spectra_form_nonce",h=c.querySelector('[name="'.concat(f,'"]')),v=c.querySelector('[name="'.concat(u,'"]')),y=c.querySelector('[name="'.concat(p,'"]')),m=c.querySelector('[id^="hcap_hp_"]'),b=c.querySelector('[name="'.concat(d,'"]')),g=c.querySelector('[name="'.concat(s,'"]'));l[f]=null==h?void 0:h.value,l[u]=null==v?void 0:v.value,l[p]=null==y?void 0:y.value,l[null==m?void 0:m.id]=null==m?void 0:m.value,l[d]=null==b?void 0:b.value,l[s]=null==g?void 0:g.value,o.set("form_data",JSON.stringify(l)),r.body=o,t.detail.args.config=r}}},fetchSuccess:function(t){return(n=o().m(function n(){var r,a,c,i,u,l,f,d,s,p,h;return o().w(function(n){for(;;)switch(n.n){case 0:if(c=null==t||null===(r=t.detail)||void 0===r||null===(r=r.args)||void 0===r?void 0:r[1],i=null==t||null===(a=t.detail)||void 0===a?void 0:a.response,c&&i){n.n=1;break}return n.a(2);case 1:if((u=c.body)instanceof FormData||u instanceof URLSearchParams){n.n=2;break}return n.a(2);case 2:return n.n=3,i.clone().json().catch(function(){return null});case 3:if(l=n.v,"uagb_process_forms"===u.get("action")&&"string"==typeof(null==l?void 0:l.data)){n.n=4;break}return n.a(2);case 4:f=u.get("block_id"),d='[name="uagb-form-'.concat(f,'"]'),(e=document.createElement("style")).id="hcaptcha-style-".concat(f),e.textContent="\n\t\t".concat(d," {\n\t\t\tdisplay: block !important;\n\t\t}\n"),document.getElementById(e.id)||document.head.appendChild(e),(s=document.querySelector(".uagb-block-"+f+" .hcaptcha-error-message"))&&s.remove(),(p=document.createElement("div")).className="hcaptcha-error-message",p.textContent=l.data,p.style.color="red",p.style.padding="10px 0",(h=document.querySelector(".uagb-block-"+f+" h-captcha"))&&h.parentNode.insertBefore(p,h);case 5:return n.a(2)}},n)}),function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function i(t){c(a,r,o,i,u,"next",t)}function u(t){c(a,r,o,i,u,"throw",t)}i(void 0)})})();var n},fetchComplete:function(n){var r,o,a,c=(null!==(r=null==n||null===(o=n.detail)||void 0===o||null===(o=o.args)||void 0===o?void 0:o[1])&&void 0!==r?r:{}).body;if(c instanceof URLSearchParams&&"uagb_process_forms"===c.get("action")){var i=document.getElementById(null===(a=e)||void 0===a?void 0:a.id);i&&i.remove(),t.hCaptchaBindEvents()}}};return n}(window);window.hCaptchaSpectra=i,i.init()})(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-ultimate-addons.min.js
r3339595 r3359717 1 (()=>{"use strict";var a={2981:(a,t,e)=>{function r(a){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},r(a)}function n(a,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(a,o(r.key),r)}}function o(a){var t=function(a,t){if("object"!=r(a)||!a)return a;var e=a[Symbol.toPrimitive];if(void 0!==e){var n=e.call(a,t||"default");if("object"!=r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(a)}(a,"string");return"symbol"==r(t)?t:t+""}e.d(t,{d:()=>i});var i=function(){function a(){!function(a,t){if(!(a instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a)}return t=a,r=[{key:"addHCaptchaData",value:function(t,e,r,n){var o,i=null!==(o=t.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(e))){var c=a.getHCaptchaData(n,r);t.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+r+"="+c.nonce}}},{key:"getHCaptchaData",value:function(a,t){var e=a.find('[name="h-captcha-response"]').val();e=e||"";var r=a.find('[name="hcaptcha-widget-id"]').val();r=r||"";var n=a.find('[name="'+t+'"]').val();return{response:e,id:r,nonce:n=n||""}}}],(e=null)&&n(t.prototype,e),r&&n(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}()}},t={};function e(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={exports:{}};return a[r](o,o.exports,e),o.exports}e.d=(a,t)=>{for(var r in t)e.o(t,r)&&!e.o(a,r)&&Object.defineProperty(a,r,{enumerable:!0,get:t[r]})},e.o=(a,t)=>Object.prototype.hasOwnProperty.call(a,t);var r,n=e(2981);wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(a,t){return!(!t.classList.contains("uael-login-form-submit")&&!t.classList.contains("uael-register-submit"))||a}),(r=jQuery).ajaxPrefilter(function(a){var t,e=null!==(t=a.data)&&void 0!==t?t:"";if("string"==typeof e){var o=new URLSearchParams(e).get("action");if(o){var i;switch(o){case"uael_login_form_submit":i=r(".uael-login-form");break;case"uael_register_user":i=r(".uael-registration-form");break;default:return}n.d.addHCaptchaData(a,"uael_login_form_submit","hcaptcha_login_nonce",i),n.d.addHCaptchaData(a,"uael_register_user","hcaptcha_ultimate_addons_register_nonce",i)}}}),r(document).on("ajaxSuccess",function(a,t,e){var n,o,i=new URLSearchParams(e.data).get("action");if("uael_login_form_submit"===i||"uael_register_user"===i){window.hCaptchaBindEvents();var c=JSON.parse(t.responseText);if(null==c||!c.success){var u=null!==(n=null==c?void 0:c.data)&&void 0!==n?n:"",s=null!==(o=null==u?void 0:u.hCaptchaError)&&void 0!==o?o:"";s&&r("h-captcha").after('<span class="uael-register-field-message"><span class="uael-loginform-error">'+s+"</span></span>")}}})})();1 (()=>{"use strict";var t={2981:(t,e,a)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function r(t,e){for(var a=0;a<e.length;a++){var n=e[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var r=a.call(t,e||"default");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==n(e)?e:e+""}a.d(e,{d:()=>i});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,n=[{key:"addHCaptchaData",value:function(e,a,n,r){var o,i=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof i&&i.startsWith("action=".concat(a))&&(e.data+=t.getHCaptchaData(r,n))}},{key:"getHCaptchaData",value:function(t,e){for(var a,n="",r=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(a=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==a?a:"","hcap_hp_sig","hcap_fst_token"];r<o.length;r++){var i,c=o[r];if(c){var u=null!==(i=t.find('[name="'.concat(c,'"]')).first().val())&&void 0!==i?i:"";n+="&".concat(c,"=").concat(u)}}return n}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:a}}))}catch(t){}var r=t.apply(void 0,a);return r.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:a,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:a,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:a}}))}catch(t){}}),r};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(a=null)&&r(e.prototype,a),n&&r(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,a,n}()}},e={};function a(n){var r=e[n];if(void 0!==r)return r.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,a),o.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);var n,r=a(2981);wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(t,e){return!(!e.classList.contains("uael-login-form-submit")&&!e.classList.contains("uael-register-submit"))||t}),(n=jQuery).ajaxPrefilter(function(t){var e,a=null!==(e=t.data)&&void 0!==e?e:"";if("string"==typeof a){var o=new URLSearchParams(a).get("action");if(o){var i;switch(o){case"uael_login_form_submit":i=n(".uael-login-form");break;case"uael_register_user":i=n(".uael-registration-form");break;default:return}r.d.addHCaptchaData(t,"uael_login_form_submit","hcaptcha_login_nonce",i),r.d.addHCaptchaData(t,"uael_register_user","hcaptcha_ultimate_addons_register_nonce",i)}}}),n(document).on("ajaxSuccess",function(t,e,a){var r,o,i=new URLSearchParams(a.data).get("action");if("uael_login_form_submit"===i||"uael_register_user"===i){window.hCaptchaBindEvents();var c=JSON.parse(e.responseText);if(null==c||!c.success){var u=null!==(r=null==c?void 0:c.data)&&void 0!==r?r:"",s=null!==(o=null==u?void 0:u.hCaptchaError)&&void 0!==o?o:"";s&&n("h-captcha").after('<span class="uael-register-field-message"><span class="uael-loginform-error">'+s+"</span></span>")}}})})(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-wc-block-checkout.js
r3200161 r3359717 1 const { fetch: originalFetch } = window; 2 const checkoutButtonClass = 'wc-block-components-checkout-place-order-button'; 1 import { helper } from './hcaptcha-helper.js'; 3 2 4 wp.hooks.addFilter( 5 'hcaptcha.submitButtonSelector', 6 'hcaptcha', 7 ( submitButtonSelector ) => { 8 return submitButtonSelector + `, .${ checkoutButtonClass }`; 9 } 10 ); 3 const wcBlockCheckout = window.hCaptchaWCBlockCheckout || ( function( window ) { 4 const app = { 5 init() { 6 const checkoutButtonClass = 'wc-block-components-checkout-place-order-button'; 11 7 12 wp.hooks.addFilter(13 'hcaptcha.ajaxSubmitButton',14 'hcaptcha',15 ( isAjaxSubmitButton, submitButtonElement) => {16 if ( submitButtonElement.classList.contains( `${ checkoutButtonClass }` ) ) {17 return true;18 }8 wp.hooks.addFilter( 9 'hcaptcha.submitButtonSelector', 10 'hcaptcha', 11 ( submitButtonSelector ) => { 12 return submitButtonSelector + `, .${ checkoutButtonClass }`; 13 } 14 ); 19 15 20 return isAjaxSubmitButton; 21 } 22 ); 16 wp.hooks.addFilter( 17 'hcaptcha.ajaxSubmitButton', 18 'hcaptcha', 19 ( isAjaxSubmitButton, submitButtonElement ) => { 20 if ( submitButtonElement.classList.contains( `${ checkoutButtonClass }` ) ) { 21 return true; 22 } 23 23 24 // Intercept WC Checkout form fetch to add hCaptcha data. 25 window.fetch = async ( ...args ) => { 26 const [ resource, config ] = args;24 return isAjaxSubmitButton; 25 } 26 ); 27 27 28 if ( resource.includes( '/wc/store/v1/checkout' ) ) { 29 const body = config.body; 30 const widgetName = 'hcaptcha-widget-id'; 31 const inputName = 'h-captcha-response'; 32 const formData = JSON.parse( body ); 33 const wcCheckoutBlock = document.querySelector( 'div[data-block-name="woocommerce/checkout"]' ); 28 helper.installFetchEvents(); 29 window.addEventListener( 'hCaptchaFetch:before', app.fetchBefore ); 30 window.addEventListener( 'hCaptchaFetch:complete', app.fetchComplete ); 31 }, 34 32 35 /** 36 * @type {HTMLInputElement} 37 */ 38 const widgetId = wcCheckoutBlock.querySelector( `[name="${ widgetName }"]` ); 33 fetchBefore( event ) { 34 const [ resource, config ] = event?.detail?.args; 39 35 40 /** 41 * @type {HTMLTextAreaElement} 42 */ 43 const hCaptchaResponse = wcCheckoutBlock.querySelector( `[name="${ inputName }"]` ); 36 if ( ! resource.includes( '/wc/store/v1/checkout' ) ) { 37 return; 38 } 44 39 45 if ( widgetId && hCaptchaResponse ) { 46 formData[ widgetName ] = widgetId.value; 47 formData[ inputName ] = hCaptchaResponse.value; 48 } 40 let formData; 49 41 50 config.body = JSON.stringify( formData ); 51 } 42 try { 43 formData = JSON.parse( config.body ); 44 } catch ( e ) { 45 formData = {}; 46 } 52 47 53 // noinspection JSCheckFunctionSignatures 54 return await originalFetch( resource, config ); 55 }; 48 const widgetName = 'hcaptcha-widget-id'; 49 const responseInputName = 'h-captcha-response'; 50 const sigInputName = 'hcap_hp_sig'; 51 const tokenName = 'hcap_fst_token'; 52 const wcCheckoutBlock = document.querySelector( 'div[data-block-name="woocommerce/checkout"]' ); 53 54 /** 55 * @type {HTMLInputElement} 56 */ 57 const widgetId = wcCheckoutBlock.querySelector( `[name="${ widgetName }"]` ); 58 59 /** 60 * @type {HTMLTextAreaElement} 61 */ 62 const hCaptchaResponse = wcCheckoutBlock.querySelector( `[name="${ responseInputName }"]` ); 63 64 /** 65 * @type {HTMLInputElement} 66 */ 67 const hcapHp = wcCheckoutBlock.querySelector( `[id^="hcap_hp_"]` ); 68 69 /** 70 * @type {HTMLInputElement} 71 */ 72 const hcapSig = wcCheckoutBlock.querySelector( `[name="${ sigInputName }"]` ); 73 74 /** 75 * @type {HTMLInputElement} 76 */ 77 const token = wcCheckoutBlock.querySelector( `[name="${ tokenName }"]` ); 78 79 formData[ widgetName ] = widgetId?.value; 80 formData[ responseInputName ] = hCaptchaResponse?.value; 81 formData[ hcapHp.id ] = hcapHp?.value; 82 formData[ sigInputName ] = hcapSig?.value; 83 formData[ tokenName ] = token?.value; 84 85 config.body = JSON.stringify( formData ); 86 87 event.detail.args.config = config; 88 }, 89 90 fetchComplete( event ) { 91 const resource = event?.detail?.args?.[ 0 ] ?? ''; 92 93 if ( ! resource.includes( '/wc/store/v1/checkout' ) ) { 94 return; 95 } 96 97 window.hCaptchaBindEvents(); 98 }, 99 }; 100 101 return app; 102 }( window ) ); 103 104 window.hCaptchaWCBlockCheckout = wcBlockCheckout; 105 106 wcBlockCheckout.init(); -
hcaptcha-for-forms-and-more/tags/4.17.0/assets/js/hcaptcha-wc-block-checkout.min.js
r3339595 r3359717 1 (()=>{ function t(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var r,e,o="function"==typeof Symbol?Symbol:{},c=o.iterator||"@@iterator",a=o.toStringTag||"@@toStringTag";function i(t,o,c,a){var i=o&&o.prototype instanceof f?o:f,l=Object.create(i.prototype);return n(l,"_invoke",function(t,n,o){var c,a,i,f=0,l=o||[],p=!1,h={p:0,n:0,v:r,a:s,f:s.bind(r,4),d:function(t,n){return c=t,a=0,i=r,h.n=n,u}};function s(t,n){for(a=t,i=n,e=0;!p&&f&&!o&&e<l.length;e++){var o,c=l[e],s=h.p,v=c[2];t>3?(o=v===n)&&(i=c[(a=c[4])?5:(a=3,3)],c[4]=c[5]=r):c[0]<=s&&((o=t<2&&s<c[1])?(a=0,h.v=n,h.n=c[1]):s<v&&(o=t<3||c[0]>n||n>v)&&(c[4]=t,c[5]=n,h.n=v,a=0))}if(o||t>1)return u;throw p=!0,n}return function(o,l,v){if(f>1)throw TypeError("Generator is already running");for(p&&1===l&&s(l,v),a=l,i=v;(e=a<2?r:i)||!p;){c||(a?a<3?(a>1&&(h.n=-1),s(a,i)):h.n=i:h.v=i);try{if(f=2,c){if(a||(o="next"),e=c[o]){if(!(e=e.call(c,i)))throw TypeError("iterator result is not an object");if(!e.done)return e;i=e.value,a<2&&(a=0)}else 1===a&&(e=c.return)&&e.call(c),a<2&&(i=TypeError("The iterator does not provide a '"+o+"' method"),a=1);c=r}else if((e=(p=h.n<0)?i:t.call(n,h))!==u)break}catch(t){c=r,a=1,i=t}finally{f=1}}return{value:e,done:p}}}(t,c,a),!0),l}var u={};function f(){}function l(){}function p(){}e=Object.getPrototypeOf;var h=[][c]?e(e([][c]())):(n(e={},c,function(){return this}),e),s=p.prototype=f.prototype=Object.create(h);function v(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,n(t,a,"GeneratorFunction")),t.prototype=Object.create(s),t}return l.prototype=p,n(s,"constructor",p),n(p,"constructor",l),l.displayName="GeneratorFunction",n(p,a,"GeneratorFunction"),n(s),n(s,a,"Generator"),n(s,c,function(){return this}),n(s,"toString",function(){return"[object Generator]"}),(t=function(){return{w:i,m:v}})()}function n(t,r,e,o){var c=Object.defineProperty;try{c({},"",{})}catch(t){c=0}n=function(t,r,e,o){function a(r,e){n(t,r,function(t){return this._invoke(r,e,t)})}r?c?c(t,r,{value:e,enumerable:!o,configurable:!o,writable:!o}):t[r]=e:(a("next",0),a("throw",1),a("return",2))},n(t,r,e,o)}function r(t,n,r,e,o,c,a){try{var i=t[c](a),u=i.value}catch(t){return void r(t)}i.done?n(u):Promise.resolve(u).then(e,o)}function e(t){return function(){var n=this,e=arguments;return new Promise(function(o,c){var a=t.apply(n,e);function i(t){r(a,o,c,i,u,"next",t)}function u(t){r(a,o,c,i,u,"throw",t)}i(void 0)})}}var o=window.fetch,c="wc-block-components-checkout-place-order-button";wp.hooks.addFilter("hcaptcha.submitButtonSelector","hcaptcha",function(t){return t+", .".concat(c)}),wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(t,n){return!!n.classList.contains("".concat(c))||t}),window.fetch=e(t().m(function n(){var r,e,c,a,i,u,f,l,p,h,s,v,y=arguments;return t().w(function(t){for(;;)switch(t.n){case 0:for(r=y.length,e=new Array(r),c=0;c<r;c++)e[c]=y[c];return a=e[0],i=e[1],a.includes("/wc/store/v1/checkout")&&(u=i.body,f="hcaptcha-widget-id",l="h-captcha-response",p=JSON.parse(u),h=document.querySelector('div[data-block-name="woocommerce/checkout"]'),s=h.querySelector('[name="'.concat(f,'"]')),v=h.querySelector('[name="'.concat(l,'"]')),s&&v&&(p[f]=s.value,p[l]=v.value),i.body=JSON.stringify(p)),t.n=1,o(a,i);case 1:return t.a(2,t.v)}},n)}))})();1 (()=>{"use strict";var t={2981:(t,e,n)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,a(r.key),r)}}function a(t){var e=function(t,e){if("object"!=r(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!=r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==r(e)?e:e+""}n.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,r=[{key:"addHCaptchaData",value:function(e,n,r,o){var a,c=null!==(a=e.data)&&void 0!==a?a:"";"string"==typeof c&&c.startsWith("action=".concat(n))&&(e.data+=t.getHCaptchaData(o,r))}},{key:"getHCaptchaData",value:function(t,e){for(var n,r="",o=0,a=["h-captcha-response","hcaptcha-widget-id",e,null!==(n=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==n?n:"","hcap_hp_sig","hcap_fst_token"];o<a.length;o++){var c,i=a[o];if(i){var l=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";r+="&".concat(i,"=").concat(l)}}return r}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:n}}))}catch(t){}var o=t.apply(void 0,n);return o.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:n,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:n,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:n}}))}catch(t){}}),o};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(n=null)&&o(e.prototype,n),r&&o(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,r}()}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var a=e[r]={exports:{}};return t[r](a,a.exports,n),a.exports}n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var r=n(2981);function o(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,a,c,i=[],l=!0,u=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(i.push(r.value),i.length!==e);l=!0);}catch(t){u=!0,o=t}finally{try{if(!l&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(u)throw o}}return i}}(t,e)||function(t,e){if(t){if("string"==typeof t)return a(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}var c=window.hCaptchaWCBlockCheckout||function(t){var e={init:function(){var n="wc-block-components-checkout-place-order-button";wp.hooks.addFilter("hcaptcha.submitButtonSelector","hcaptcha",function(t){return t+", .".concat(n)}),wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(t,e){return!!e.classList.contains("".concat(n))||t}),r.d.installFetchEvents(),t.addEventListener("hCaptchaFetch:before",e.fetchBefore),t.addEventListener("hCaptchaFetch:complete",e.fetchComplete)},fetchBefore:function(t){var e,n=o(null==t||null===(e=t.detail)||void 0===e?void 0:e.args,2),r=n[0],a=n[1];if(r.includes("/wc/store/v1/checkout")){var c;try{c=JSON.parse(a.body)}catch(t){c={}}var i="hcaptcha-widget-id",l="h-captcha-response",u="hcap_hp_sig",h="hcap_fst_token",f=document.querySelector('div[data-block-name="woocommerce/checkout"]'),d=f.querySelector('[name="'.concat(i,'"]')),p=f.querySelector('[name="'.concat(l,'"]')),s=f.querySelector('[id^="hcap_hp_"]'),v=f.querySelector('[name="'.concat(u,'"]')),y=f.querySelector('[name="'.concat(h,'"]'));c[i]=null==d?void 0:d.value,c[l]=null==p?void 0:p.value,c[s.id]=null==s?void 0:s.value,c[u]=null==v?void 0:v.value,c[h]=null==y?void 0:y.value,a.body=JSON.stringify(c),t.detail.args.config=a}},fetchComplete:function(e){var n,r;(null!==(n=null==e||null===(r=e.detail)||void 0===r||null===(r=r.args)||void 0===r?void 0:r[0])&&void 0!==n?n:"").includes("/wc/store/v1/checkout")&&t.hCaptchaBindEvents()}};return e}(window);window.hCaptchaWCBlockCheckout=c,c.init()})(); -
hcaptcha-for-forms-and-more/tags/4.17.0/changelog.txt
r3339595 r3359717 1 = 4.17.0 = 2 * Added a hidden honeypot field and minimum submit time for bot detection before processing hCaptcha. Currently supported for WordPress Core, Avada theme, Contact Form 7, Divi theme, Divi Builder, Essential Addons for Elementor, Extra theme, Elementor, Jetpack, Mailchimp, Ninja Forms, Spectra, WooCommerce, WPForms, Protect Content feature. 3 * Added a notification message on the placeholder when hCaptcha failed to load. 4 * Added hCaptcha error messages to the Divi optin email form. 5 * Added hCaptcha error messages to the JetPack form. 6 * Fix conflict with reCaptcha in Divi Contact form. 7 * Fixed running migrations on a fresh installation. 8 * Fixed updating the migration option on each admin request. 9 * Fixed a fatal error on saving the Integration settings with active plugins having all switches off. 10 * Fixed an issue with several Divi optin email forms on the page. 11 * Fixed activation of Blocksy plugins with any theme. 12 * Fixed refreshing hCaptcha upon failed submission in Jetpack. 13 * Fixed Ninja Forms uncaught type error in JS appeared with some field types. 14 * Fixed Ninja Forms integration when form duplicates are on the same page. 15 1 16 = 4.16.0 = 2 17 * Added integration with Germanized for WooCommerce. -
hcaptcha-for-forms-and-more/tags/4.17.0/composer.json
r3339595 r3359717 45 45 "codeception/module-webdriver": "1.4.1 - 4.0.3", 46 46 "lucatume/function-mocker": "^2.0.0", 47 "lucatume/wp-browser": "3.7.11 - 4.5. 2",47 "lucatume/wp-browser": "3.7.11 - 4.5.5", 48 48 "squizlabs/php_codesniffer": "^3.13.2", 49 49 "phpcompatibility/php-compatibility": "^9.3.5", -
hcaptcha-for-forms-and-more/tags/4.17.0/hcaptcha.php
r3339595 r3359717 11 11 * Plugin URI: https://www.hcaptcha.com/ 12 12 * Description: hCaptcha keeps out bots and spam while putting privacy first. It is a drop-in replacement for reCAPTCHA. 13 * Version: 4.1 6.013 * Version: 4.17.0 14 14 * Requires at least: 5.3 15 15 * Requires PHP: 7.2 … … 40 40 * Plugin version. 41 41 */ 42 const HCAPTCHA_VERSION = '4.1 6.0';42 const HCAPTCHA_VERSION = '4.17.0'; 43 43 44 44 /** -
hcaptcha-for-forms-and-more/tags/4.17.0/readme.txt
r3339595 r3359717 5 5 Tested up to: 6.8 6 6 Requires PHP: 7.2 7 Stable tag: 4.1 6.07 Stable tag: 4.17.0 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html 10 10 11 11 The strongest CAPTCHA. Switch from reCAPTCHA, Turnstile, etc. for free. 12 Integrates with 50+ popular plugins.12 Integrates with 60+ popular plugins and themes. 13 13 14 14 == Description == … … 756 756 == Changelog == 757 757 758 = 4.17.0 = 759 * Added a hidden honeypot field and minimum submit time for bot detection before processing hCaptcha. Currently supported for WordPress Core, Avada theme, Contact Form 7, Divi theme, Divi Builder, Essential Addons for Elementor, Extra theme, Elementor, Jetpack, Mailchimp, Ninja Forms, Spectra, WooCommerce, WPForms, Protect Content feature. 760 * Added a notification message on the placeholder when hCaptcha failed to load. 761 * Added hCaptcha error messages to the Divi optin email form. 762 * Added hCaptcha error messages to the JetPack form. 763 * Fix conflict with reCaptcha in Divi Contact form. 764 * Fixed running migrations on a fresh installation. 765 * Fixed updating the migration option on each admin request. 766 * Fixed a fatal error on saving the Integration settings with active plugins having all switches off. 767 * Fixed an issue with several Divi optin email forms on the page. 768 * Fixed activation of Blocksy plugins with any theme. 769 * Fixed refreshing hCaptcha upon failed submission in Jetpack. 770 * Fixed Ninja Forms uncaught type error in JS appeared with some field types. 771 * Fixed Ninja Forms integration when form duplicates are on the same page. 772 758 773 = 4.16.0 = 759 774 * Added integration with Germanized for WooCommerce. -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Abstracts/CommentBase.php
r3339595 r3359717 119 119 * Pre-approve comment. 120 120 * 121 * @param int|string|WP_Error $approved The approval status. Accepts 1, 0, 'spam', 'trash', or WP_Error.122 * @param array $comment data Comment data.121 * @param int|string|WP_Error $approved The approval status. Accepts 1, 0, 'spam', 'trash', or WP_Error. 122 * @param array $comment_data Comment data. 123 123 * 124 124 * @return int|string|WP_Error 125 125 * @noinspection PhpUnusedParameterInspection 126 126 */ 127 public function pre_comment_approved( $approved, array $comment data ) {127 public function pre_comment_approved( $approved, array $comment_data ) { 128 128 if ( null === $this->result || true === $this->result ) { 129 129 return $approved; -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Avada/Form.php
r3319903 r3359717 18 18 19 19 /** 20 * Script handle. 21 */ 22 private const HANDLE = 'hcaptcha-avada'; 23 24 /** 20 25 * Form id. 21 26 * … … 41 46 add_action( 'fusion_element_form_content', [ $this, 'add_hcaptcha' ], 10, 2 ); 42 47 add_filter( 'fusion_form_demo_mode', [ $this, 'verify' ] ); 48 add_action( 'wp_print_footer_scripts', [ $this, 'enqueue_scripts' ], 9 ); 43 49 } 44 50 … … 127 133 128 134 $_POST['hcaptcha-widget-id'] = $form_data['hcaptcha-widget-id'] ?? ''; 135 $_POST['hcap_fst_token'] = $form_data['hcap_fst_token'] ?? ''; 136 $hp_name = API::get_hp_name( $form_data ); 137 $_POST[ $hp_name ] = $form_data[ $hp_name ] ?? ''; 138 $_POST['hcap_hp_sig'] = $form_data['hcap_hp_sig'] ?? ''; 129 139 130 140 $result = API::verify( $this->get_entry( $form_data ) ); … … 145 155 146 156 /** 157 * Enqueue scripts. 158 * 159 * @return void 160 */ 161 public function enqueue_scripts(): void { 162 if ( ! hcaptcha()->form_shown ) { 163 return; 164 } 165 166 $min = hcap_min_suffix(); 167 168 wp_enqueue_script( 169 self::HANDLE, 170 HCAPTCHA_URL . "/assets/js/hcaptcha-avada$min.js", 171 [ 'jquery', 'hcaptcha' ], 172 HCAPTCHA_VERSION, 173 true 174 ); 175 } 176 177 /** 147 178 * Get entry. 148 179 * -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/CustomerReviews/QuestionAnswer.php
r3339595 r3359717 21 21 22 22 /** 23 * WC product Q&A tab callback. 24 * 25 * @var callable 26 */ 27 private $qna_callback; 28 29 /** 30 * Whether hCaptcha was added. 31 * 32 * @var bool 33 */ 34 protected $has_hcaptcha = false; 35 36 /** 37 * Init hooks. 38 * 39 * @return void 40 */ 41 protected function init_hooks(): void { 42 parent::init_hooks(); 43 44 add_filter( 'woocommerce_product_tabs', [ $this, 'product_tabs' ], 20 ); 45 46 add_action( 'wp_ajax_cr_new_qna', [ $this, 'verify' ], 0 ); 47 add_action( 'wp_ajax_nopriv_cr_new_qna', [ $this, 'verify' ], 0 ); 48 } 49 50 /** 51 * Filter WC product tabs. 52 * 53 * @param array|mixed $tabs Tabs. 54 * 55 * @return array 56 */ 57 public function product_tabs( $tabs ): array { 58 $tabs = (array) $tabs; 59 60 if ( ! isset( $tabs['cr_qna'] ) ) { 61 return $tabs; 62 } 63 64 $this->qna_callback = $tabs['cr_qna']['callback']; 65 66 $tabs['cr_qna']['callback'] = [ $this, 'display_qna_tab' ]; 67 68 return $tabs; 69 } 70 71 /** 72 * Display Q&A tab. 73 * 74 * @param mixed $attributes Attributes. 75 * 76 * @return void 77 */ 78 public function display_qna_tab( $attributes ): void { 79 ob_start(); 80 call_user_func( $this->qna_callback, $attributes ); 81 $this->add_captcha( self::WC_TEMPLATE_NAME, '', '', [] ); 82 } 83 84 /** 23 85 * 'After template part' action. 24 86 * Gets the output buffer after the template part and adds hCaptcha. … … 39 101 $template = ob_get_clean(); 40 102 41 $args = [ 42 'action' => self::ACTION, 43 'name' => self::NONCE, 44 'id' => [ 45 'source' => HCaptcha::get_class_source( __CLASS__ ), 46 'form_id' => 'q&a', 47 ], 48 ]; 103 if ( ! $this->has_hcaptcha ) { 104 $this->has_hcaptcha = true; 49 105 50 // Find the $search string and insert hCaptcha before it. 51 $search = '#<div class="cr-review-form-buttons">\s*<button type="button" class="cr-review-form-submit" data-crcptcha=#'; 52 $replace = 53 "\n" . '<div class="cr-review-form-item">' . 54 HCaptcha::form( $args ) . 55 "\n" . '</div>' . 56 '$0'; 106 $args = [ 107 'action' => self::ACTION, 108 'name' => self::NONCE, 109 'id' => [ 110 'source' => HCaptcha::get_class_source( __CLASS__ ), 111 'form_id' => 'q&a', 112 ], 113 ]; 57 114 58 $template = preg_replace( $search, $replace, $template ); 115 // Find the $search string and insert hCaptcha before it. 116 $search = '#<div class="cr-review-form-buttons">\s*<button type="button" class="cr-review-form-submit" data-crcptcha=#'; 117 $template = preg_replace_callback( 118 $search, 119 static function ( array $m ) use ( $args ) { 120 return ( 121 "\n" . '<div class="cr-review-form-item">' . 122 HCaptcha::form( $args ) . 123 "\n" . '</div>' . 124 $m[0] 125 ); 126 }, 127 $template 128 ); 129 } 59 130 60 131 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped 61 132 echo $template; 62 133 } 63 64 /**65 * Init hooks.66 *67 * @return void68 */69 protected function init_hooks(): void {70 parent::init_hooks();71 72 add_action( 'wp_ajax_cr_new_qna', [ $this, 'verify' ], 0 );73 add_action( 'wp_ajax_nopriv_cr_new_qna', [ $this, 'verify' ], 0 );74 }75 134 } -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/CustomerReviews/Review.php
r3339595 r3359717 49 49 50 50 // Find the $search string and insert hCaptcha before it. 51 $search = '<div class="cr-review-form-buttons">'; 52 $replace = 53 "\n" . '<div class="cr-review-form-item">' . 54 HCaptcha::form( $args ) . 55 "\n" . '</div>' . 56 $search; 57 58 $template = str_replace( $search, $replace, $template ); 51 $search = '#<div class="cr-review-form-buttons">#'; 52 $template = preg_replace_callback( 53 $search, 54 static function ( array $m ) use ( $args ) { 55 return ( 56 "\n" . '<div class="cr-review-form-item">' . 57 HCaptcha::form( $args ) . 58 "\n" . '</div>' . 59 $m[0] 60 ); 61 }, 62 $template 63 ); 59 64 60 65 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Divi/Contact.php
r3319903 r3359717 63 63 64 64 add_filter( 'et_pb_module_shortcode_attributes', [ $this, 'shortcode_attributes' ], 10, 5 ); 65 add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ] );65 add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ], 20 ); 66 66 } 67 67 … … 143 143 // Check that the form was submitted and the et_pb_contact_et_number field is empty to protect from spam. 144 144 if ( $nonce_result && isset( $_POST[ $submit_field ] ) && empty( $_POST[ $number_field ] ) ) { 145 // Remove h captchafrom current form fields, because Divi compares current and submitted fields.145 // Remove hCaptcha fields from current form fields, because Divi compares current and submitted fields. 146 146 $current_form_field = 'et_pb_contact_email_fields_' . $this->render_count; 147 147 $current_form_fields = filter_input( INPUT_POST, $current_form_field, FILTER_SANITIZE_FULL_SPECIAL_CHARS ); … … 154 154 $fields_data_array, 155 155 static function ( $item ) { 156 return false === strpos( $item['field_id'], 'captcha');156 return ! preg_match( '/captcha|hcap_hp_|hcap_fst_token/', $item['field_id'] ); 157 157 } 158 158 ); … … 203 203 */ 204 204 public function enqueue_scripts(): void { 205 if ( ! hcaptcha()->form_shown ) { 206 return; 207 } 208 209 wp_dequeue_script( 'et-core-api-spam-recaptcha' ); 210 205 211 $min = hcap_min_suffix(); 206 212 -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Divi/EmailOptin.php
r3319903 r3359717 84 84 */ 85 85 public function verify(): void { 86 $error_message = API::verify_post _html( self::NONCE, self::ACTION );86 $error_message = API::verify_post( self::NONCE, self::ACTION ); 87 87 88 88 if ( null === $error_message ) { … … 90 90 } 91 91 92 // It is a bug in a Divi script, which doesn't handle the error message. 93 et_core_die( esc_html( $error_message ) ); 92 wp_send_json( [ 'error' => $error_message ] ); 94 93 } 95 94 -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Helpers/API.php
r3319903 r3359717 9 9 10 10 use HCaptcha\AntiSpam\AntiSpam; 11 use WP_Error; 11 12 12 13 /** … … 142 143 } 143 144 145 // Check the honeypot field. 146 if ( ! self::check_honeypot_field() ) { 147 $result = hcap_get_error_messages()['spam']; 148 $error_codes = [ 'spam' ]; 149 150 return self::filtered_result( $result, $error_codes ); 151 } 152 153 // Check the form submit time token. 154 $check = self::check_fst_token(); 155 156 if ( is_wp_error( $check ) ) { 157 $result = $check->get_error_message(); 158 $error_codes = $check->get_error_codes(); 159 160 return self::filtered_result( $result, $error_codes ); 161 } 162 144 163 $hcaptcha_response_sanitized = htmlspecialchars( 145 164 filter_var( $hcaptcha_response, FILTER_SANITIZE_FULL_SPECIAL_CHARS ), … … 167 186 168 187 return self::process_request( $params ); 188 } 189 190 /** 191 * Get a honeypot field name. 192 * 193 * @param array $arr Array of form fields. 194 * 195 * @return string 196 */ 197 public static function get_hp_name( array $arr = [] ): string { 198 foreach ( array_keys( $arr ) as $key ) { 199 if ( 'hcap_hp_sig' !== $key && 0 === strpos( $key, 'hcap_hp_' ) ) { 200 return $key; 201 } 202 } 203 204 return ''; 169 205 } 170 206 … … 296 332 return $result; 297 333 } 334 335 /** 336 * Validates the honeypot field for spam prevention. 337 * 338 * @return bool True if the honeypot field is valid and empty, false otherwise. 339 */ 340 private static function check_honeypot_field(): bool { 341 if ( ! hcaptcha()->settings()->is_on( 'honeypot' ) ) { 342 return true; 343 } 344 345 // Honeypot check: require valid signature and ensure the honeypot field is empty. 346 // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.NonceVerification.Missing 347 $hp_name = self::get_hp_name( $_POST ); 348 $hp_value = Request::filter_input( INPUT_POST, $hp_name ); 349 $hp_signature = Request::filter_input( INPUT_POST, 'hcap_hp_sig' ); 350 351 // Verify nonce for logged-in users only. 352 $nonce_verified = ! is_user_logged_in() || wp_verify_nonce( $hp_signature, $hp_name ); 353 354 $check = $hp_name && $nonce_verified && '' === trim( $hp_value ); 355 356 /** 357 * Filters the result of the honeypot field check. 358 * 359 * @param bool $check True if the honeypot field is valid and empty, false otherwise. 360 */ 361 return (bool) apply_filters( 'hcap_check_honeypot_field', $check ); 362 } 363 364 /** 365 * Check Form Submit Time token. 366 * 367 * @return true|WP_Error 368 */ 369 private static function check_fst_token() { 370 if ( ! hcaptcha()->settings()->is_on( 'set_min_submit_time' ) ) { 371 return true; 372 } 373 374 /** 375 * The Form Submit Time object. 376 * 377 * @var FormSubmitTime $fst_obj 378 */ 379 $fst_obj = hcaptcha()->get( FormSubmitTime::class ); 380 381 if ( ! $fst_obj ) { 382 return hcap_get_wp_error( 'fst-no-object' ); 383 } 384 385 $min_submit_time = hcaptcha()->settings()->get( 'min_submit_time' ); 386 387 /** 388 * Filters the result of the Form Submit Time token verification. 389 * 390 * @param true|WP_Error $check True, if the Form Submit Time token is valid. WP_Error object otherwise. 391 */ 392 return apply_filters( 'hcap_verify_fst_token', $fst_obj->verify_token( $min_submit_time ) ); 393 } 298 394 } -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Helpers/DB.php
r3233179 r3359717 16 16 17 17 /** 18 * Changes a rray of items intostring of items, separated by comma and sql-escaped18 * Changes an array of items into a string of items, separated by comma and sql-escaped 19 19 * 20 20 * @see https://coderwall.com/p/zepnaw -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Helpers/HCaptcha.php
r3339595 r3359717 145 145 wp_nonce_field( $args['action'], $args['name'] ); 146 146 } 147 148 self::honeypot_display(); 147 149 } 148 150 … … 179 181 $args['id'] = (array) $args['id']; 180 182 $args['id'] = [ 181 'source' => empty( $args['id']['source'] ) ? self::$default_id['source'] : $args['id']['source'],183 'source' => (array) ( empty( $args['id']['source'] ) ? self::$default_id['source'] : $args['id']['source'] ), 182 184 'form_id' => $args['id']['form_id'] ?? self::$default_id['form_id'], 183 185 ]; … … 185 187 186 188 return $args; 189 } 190 191 /** 192 * Display a honeypot for form submissions. 193 * 194 * This method injects a honeypot field with a dynamic name and a signature. 195 * 196 * @return void 197 */ 198 private static function honeypot_display(): void { 199 if ( ! hcaptcha()->settings()->is_on( 'honeypot' ) ) { 200 return; 201 } 202 203 $hp_name = self::get_hp_name(); 204 $hp_sig = wp_create_nonce( $hp_name ); 205 206 ?> 207 <label for="<?php echo esc_attr( $hp_name ); ?>"></label> 208 <input 209 type="text" id="<?php echo esc_attr( $hp_name ); ?>" name="<?php echo esc_attr( $hp_name ); ?>" value="" 210 readonly inputmode="none" autocomplete="new-password" tabindex="-1" aria-hidden="true" 211 style="position:absolute; left:-9999px; top:auto; height:0; width:0; opacity:0;"/> 212 <input type="hidden" name="hcap_hp_sig" value="<?php echo esc_attr( $hp_sig ); ?>"/> 213 <?php 214 } 215 216 /** 217 * Get honeypot name. 218 * Made as a separate function to be able to mock it in tests. 219 * 220 * @return string 221 */ 222 protected static function get_hp_name(): string { 223 return 'hcap_hp_' . wp_generate_password( 12, false ); 187 224 } 188 225 … … 362 399 * Whether form protection is enabled/disabled via hCaptcha widget id. 363 400 * 364 * Return false (protection disabled) in only one case:401 * Return false (protection disabled) in only one case: 365 402 * when $_POST['hcaptcha-widget-id'] contains encoded id with proper hash, 366 403 * and hcap_protect_form filter confirms that the form referenced in widget id is not protected. -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Helpers/Utils.php
r3339595 r3359717 195 195 ); 196 196 } 197 198 /** 199 * Get a comma-separated list string from an array. 200 * 201 * @param array $arr Array containing a list. 202 * @param bool $sep Separator of the last element. 203 * 204 * @return string 205 */ 206 public static function list_array( array $arr, bool $sep = true ): string { 207 $separator = $sep ? 208 __( 'and', 'wpforms-lite' ) : 209 __( 'or', 'wpforms-lite' ); 210 211 $last = array_slice( $arr, - 1 ); 212 $first = implode( ', ', array_slice( $arr, 0, - 1 ) ); 213 $both = array_filter( array_merge( [ $first ], $last ) ); 214 215 return implode( ' ' . $separator . ' ', $both ); 216 } 197 217 } -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Jetpack/Base.php
r3339595 r3359717 29 29 30 30 /** 31 * Script handle. 32 */ 33 private const HANDLE = 'hcaptcha-jetpack'; 34 35 /** 31 36 * Admin script handle. 32 37 */ … … 79 84 80 85 add_filter( 'the_content', [ $this, 'the_content_filter' ] ); 86 87 add_action( 'wp_print_footer_scripts', [ $this, 'enqueue_scripts' ], 9 ); 88 add_filter( 'script_loader_tag', [ $this, 'add_type_module' ], 10, 3 ); 81 89 82 90 if ( ! $this->is_editing_jetpack_form_post() ) { … … 165 173 public function print_hcaptcha_scripts( $status ): bool { 166 174 return true; 175 } 176 177 /** 178 * Enqueue script on the frontend. 179 * 180 * @return void 181 */ 182 public function enqueue_scripts(): void { 183 if ( ! hcaptcha()->form_shown ) { 184 return; 185 } 186 187 $min = hcap_min_suffix(); 188 189 wp_enqueue_script( 190 self::HANDLE, 191 constant( 'HCAPTCHA_URL' ) . "/assets/js/hcaptcha-jetpack$min.js", 192 [ 'hcaptcha' ], 193 constant( 'HCAPTCHA_VERSION' ), 194 true 195 ); 196 } 197 198 /** 199 * Add type="module" attribute to script tag. 200 * 201 * @param string|mixed $tag Script tag. 202 * @param string $handle Script handle. 203 * @param string $src Script source. 204 * 205 * @return string 206 * @noinspection PhpUnusedParameterInspection 207 */ 208 public function add_type_module( $tag, string $handle, string $src ): string { 209 $tag = (string) $tag; 210 211 if ( self::HANDLE !== $handle ) { 212 return $tag; 213 } 214 215 return HCaptcha::add_type_module( $tag ); 167 216 } 168 217 -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Main.php
r3339595 r3359717 28 28 use HCaptcha\ElementorPro\HCaptchaHandler; 29 29 use HCaptcha\EventsManager\Booking; 30 use HCaptcha\Helpers\FormSubmitTime; 30 31 use HCaptcha\Helpers\HCaptcha; 31 32 use HCaptcha\Helpers\Pages; … … 159 160 ( new Fix() )->init(); 160 161 162 // Needs to be loaded early, as it uses short init ajax. 163 $this->load( FormSubmitTime::class ); 164 161 165 add_action( 'plugins_loaded', [ $this, 'init_hooks' ], self::LOAD_PRIORITY ); 162 166 } … … 220 224 add_action( 'login_head', [ $this, 'login_head' ] ); 221 225 add_action( 'wp_print_footer_scripts', [ $this, 'print_footer_scripts' ], 0 ); 226 add_action( 'hcap_protect_form', [ $this, 'allow_honeypot_and_fst' ], 10, 3 ); 222 227 223 228 $this->auto_verify = new AutoVerify(); … … 477 482 $div_logo_white_url = HCAPTCHA_URL . '/assets/images/hcaptcha-div-logo-white.svg'; 478 483 $bg = $settings->get_custom_theme_background() ?: 'initial'; 484 $load_fail_msg = __( 'If you see this message, hCaptcha failed to load due to site errors.', 'hcaptcha-for-forms-and-more' ); 479 485 480 486 /* language=CSS */ … … 502 508 } 503 509 510 .h-captcha iframe { 511 z-index: 1; 512 } 513 504 514 .h-captcha::before { 505 content: \'\';515 content: ""; 506 516 display: block; 507 517 position: absolute; … … 511 521 border: 1px solid transparent; 512 522 border-radius: 4px; 523 box-sizing: border-box; 524 } 525 526 .h-captcha::after { 527 content: "' . $load_fail_msg . '"; 528 font: 13px/1.35 system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; 529 display: block; 530 position: absolute; 531 top: 0; 532 left: 0; 533 box-sizing: border-box; 534 color: #ff0000; 535 opacity: 0; 536 } 537 538 .h-captcha:not(:has(iframe))::after { 539 animation: hcap-msg-fade-in .3s ease forwards; 540 animation-delay: 2s; 541 } 542 543 .h-captcha:has(iframe)::after { 544 animation: none; 545 opacity: 0; 546 } 547 548 @keyframes hcap-msg-fade-in { 549 to { opacity: 1; } 513 550 } 514 551 … … 519 556 } 520 557 558 .h-captcha[data-size="normal"]::after { 559 padding: 19px 75px 16px 10px; 560 } 561 521 562 .h-captcha[data-size="compact"]::before { 522 563 width: 156px; 523 564 height: 136px; 524 565 background-position: 50% 79%; 566 } 567 568 .h-captcha[data-size="compact"]::after { 569 padding: 10px 10px 16px 10px; 525 570 } 526 571 … … 555 600 } 556 601 557 .h-captcha[data-size="invisible"]::before { 602 .h-captcha[data-size="invisible"]::before, 603 .h-captcha[data-size="invisible"]::after { 558 604 display: none; 559 605 } … … 796 842 [ 'params' => wp_json_encode( $params ) ] 797 843 ); 844 } 845 846 /** 847 * Allow honeypot and FST on the supported forms only. 848 * At this moment, only some forms can use honeypot and fst anti-spam token protection. 849 * The supported list will be extended in the future. 850 * 851 * @param bool|mixed $value The protection status of a form. 852 * @param string[] $source The source of the form (plugin, theme, WordPress Core). 853 * @param int|string $form_id Form id. 854 * 855 * @return bool 856 * @noinspection PhpUnusedParameterInspection 857 */ 858 public function allow_honeypot_and_fst( $value, array $source, $form_id ): bool { 859 $value = (bool) $value; 860 861 $supported_forms = [ 862 [ General::class ], // General settings page. 863 [ 'WordPress' ], // WordPress Core. 864 [ 'Avada' ], // Avada theme. 865 [ 'contact-form-7/wp-contact-form-7.php' ], // Contact Form 7. 866 [ 'Divi' ], // Divi theme. 867 [ 'divi-builder/divi-builder.php' ], // Divi Builder. 868 [ 'essential-addons-for-elementor-lite/essential_adons_elementor.php' ], // Essential Addons for Elementor. 869 [ 'Extra' ], // Extra theme. 870 [ 'elementor-pro/elementor-pro.php' ], // Elementor. 871 [ 'jetpack/jetpack.php' ], // JetPack. 872 [ 'mailchimp-for-wp/mailchimp-for-wp.php' ], // MailChimp. 873 [ 'ninja-forms/ninja-forms.php' ], // Ninja Forms. 874 [ 'woocommerce/woocommerce.php' ], // WooCommerce. 875 [ 'wpforms/wpforms.php', 'wpforms-lite/wpforms.php' ], // WPForms. 876 [ 'ultimate-addons-for-gutenberg/ultimate-addons-for-gutenberg.php' ], // Spectra. 877 [ hcaptcha()->settings()->get_plugin_name() ], // Protect Content. 878 ]; 879 880 if ( ! in_array( $source, $supported_forms, true ) ) { 881 hcaptcha()->settings()->set( 'honeypot', [ '' ] ); 882 hcaptcha()->settings()->set( 'set_min_submit_time', [ '' ] ); 883 } 884 885 return $value; 798 886 } 799 887 -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Migrations/Migrations.php
r3283168 r3359717 1 1 <?php 2 2 /** 3 * Migration sclass file.3 * Migration class file. 4 4 * 5 5 * @package hcaptcha-wp … … 78 78 } 79 79 80 $this->maybe_prepare_migration_option(); 80 81 $this->init_hooks(); 81 82 } … … 112 113 $this->check_plugin_update( $migrated ); 113 114 114 $migrations = array_filter(115 get_class_methods( $this ),116 static function ( $migration ) {117 return 0 === strpos( $migration, 'migrate_' );118 }119 );120 115 $upgrade_versions = []; 121 116 122 foreach ( $ migrationsas $migration ) {117 foreach ( $this->get_migrations() as $migration ) { 123 118 $upgrade_version = $this->get_upgrade_version( $migration ); 124 119 $upgrade_versions[] = $upgrade_version; … … 153 148 } 154 149 155 // Remove any keys that are not in the migrations list. 150 // Set the current version update time if it does not exist. 151 $current_version_migrated = $migrated[ self::PLUGIN_VERSION ] ?? time(); 152 153 // Remove any keys that are not in the migration list. 156 154 $migrated = array_intersect_key( $migrated, array_flip( $upgrade_versions ) ); 157 155 158 // Store the current version. 159 $migrated[ self::PLUGIN_VERSION ] = $migrated[ self::PLUGIN_VERSION ] ?? time(); 156 // Restore the current version update time. 157 // Prevents updating the option on each request. 158 $migrated[ self::PLUGIN_VERSION ] = $current_version_migrated; 160 159 161 160 // Sort the array by version. … … 182 181 183 182 /** 183 * Maybe prepare the migration option. 184 */ 185 private function maybe_prepare_migration_option(): void { 186 $migrated = get_option( self::MIGRATED_VERSIONS_OPTION_NAME ); 187 188 // If the option is an array, it means that it is already prepared. 189 if ( is_array( $migrated ) ) { 190 return; 191 } 192 193 $migrated = []; 194 195 foreach ( $this->get_migrations() as $migration ) { 196 $upgrade_version = $this->get_upgrade_version( $migration ); 197 198 $migrated[ $upgrade_version ] = 0; 199 } 200 201 // Sort the array by version. 202 uksort( $migrated, 'version_compare' ); 203 204 update_option( self::MIGRATED_VERSIONS_OPTION_NAME, $migrated ); 205 } 206 207 /** 184 208 * Send plugin statistics. 185 209 * … … 217 241 */ 218 242 private function get_upgrade_version( string $method ): string { 219 // Find only the digits and underscores to get version number.243 // Find only the digits and underscores to get the version number. 220 244 if ( ! preg_match( '/(\d_?)+/', $method, $matches ) ) { 221 245 // @codeCoverageIgnoreStart … … 239 263 240 264 /** 241 * Output message into the log file.265 * Output the message into the log file. 242 266 * 243 267 * @param string $message Message to log. … … 344 368 } 345 369 346 // Th istwo lines is a precaution for a case if options in a new format already exist.370 // These two lines is a precaution for a case if options in a new format already exist. 347 371 $options = get_option( PluginSettingsBase::OPTION_NAME, [] ); 348 372 $options = array_merge( $new_options, $options ); … … 572 596 573 597 /** 574 * Add index to a table.598 * Add an index to a table. 575 599 * 576 600 * @param string $table_name Table. … … 605 629 // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching 606 630 } 631 632 /** 633 * Get migrations. 634 * 635 * @return string[] 636 */ 637 private function get_migrations(): array { 638 return array_filter( 639 get_class_methods( $this ), 640 static function ( $migration ) { 641 return 0 === strpos( $migration, 'migrate_' ); 642 } 643 ); 644 } 607 645 } -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/NF/NF.php
r3215681 r3359717 76 76 add_filter( "ninja_forms_localize_field_{$name}_preview", [ $this, 'localize_field' ] ); 77 77 add_action( 'wp_print_footer_scripts', [ $this, 'nf_captcha_script' ], 9 ); 78 add_filter( 'script_loader_tag', [ $this, 'add_type_module' ], 10, 3 ); 78 79 } 79 80 … … 93 94 94 95 // Fix bug in Ninja forms. 95 // For template script id, they expect field->_name in admin, but field->_type on frontend.96 // For template script id, they expect field->_name in admin, but field->_type on the frontend. 96 97 // It works for NF fields as all fields have _name === _type. 97 98 … … 130 131 $search, 131 132 $search . ' style="z-index: 2;"', 132 $this->get_hcaptcha( (int)$field['id'] )133 $this->get_hcaptcha( $field['id'] ) 133 134 ); 134 135 … … 237 238 $field = (array) $field; 238 239 239 $field['settings']['hcaptcha'] = $field['settings']['hcaptcha'] ?? $this->get_hcaptcha( (int)$field['id'] );240 $field['settings']['hcaptcha'] = $field['settings']['hcaptcha'] ?? $this->get_hcaptcha( $field['id'] ); 240 241 241 242 // Mark hCaptcha as shown in any case. Needed on the preview page. … … 248 249 * Get hCaptcha. 249 250 * 250 * @param int $field_id Field id.251 * @param int|string $field_id Field id. 251 252 * 252 253 * @return string 253 254 */ 254 private function get_hcaptcha( int$field_id ): string {255 private function get_hcaptcha( $field_id ): string { 255 256 $hcaptcha_id = uniqid( 'hcaptcha-nf-', true ); 256 257 … … 288 289 ); 289 290 } 291 292 /** 293 * Add type="module" attribute to script tag. 294 * 295 * @param string|mixed $tag Script tag. 296 * @param string $handle Script handle. 297 * @param string $src Script source. 298 * 299 * @return string 300 * @noinspection PhpUnusedParameterInspection 301 */ 302 public function add_type_module( $tag, string $handle, string $src ): string { 303 $tag = (string) $tag; 304 305 if ( self::HANDLE !== $handle ) { 306 return $tag; 307 } 308 309 return HCaptcha::add_type_module( $tag ); 310 } 290 311 } -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/ProtectContent/ProtectContent.php
r3319903 r3359717 123 123 */ 124 124 protected function verify(): string { 125 // It is always too fast with Pro. 126 hcaptcha()->settings()->set( 'set_min_submit_time', [ '' ] ); 127 125 128 $error_message = API::verify_post( self::NONCE, self::ACTION ); 126 129 … … 437 440 'size' => 'normal', 438 441 'id' => [ 439 'source' => hcaptcha()->settings()->get_plugin_name(),442 'source' => [ hcaptcha()->settings()->get_plugin_name() ], 440 443 'form_id' => 'protect', 441 444 ], -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Settings/Abstracts/SettingsBase.php
r3339595 r3359717 60 60 * Form fields. 61 61 * 62 * @var array 63 */ 64 protected $form_fields = [];62 * @var array|null 63 */ 64 protected $form_fields; 65 65 66 66 /** … … 470 470 */ 471 471 protected function form_fields(): array { 472 if ( empty( $this->form_fields ) ) { 473 $this->init_form_fields(); 474 array_walk( $this->form_fields, [ $this, 'set_defaults' ] ); 475 } 472 if ( null !== $this->form_fields ) { 473 return $this->form_fields; 474 } 475 476 $this->init_form_fields(); 477 array_walk( $this->form_fields, [ $this, 'set_defaults' ] ); 478 479 /** 480 * Filter the form fields. 481 * 482 * @param array $form_fields Form fields. 483 * @param array $this Settings class instance. 484 */ 485 $this->form_fields = (array) apply_filters( 'hcap_form_fields', $this->form_fields, $this ); 476 486 477 487 return $this->form_fields; … … 925 935 */ 926 936 public function sanitize_option_callback( $settings ): array { 937 $settings = (array) $settings; 938 927 939 foreach ( $settings as $key => $setting ) { 928 940 if ( ! isset( $this->form_fields[ $key ] ) ) { -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Settings/General.php
r3339595 r3359717 535 535 'helper' => __( 'Protect content of listed URLs. Please specify one URL per line. You may use regular expressions.', 'hcaptcha-for-forms-and-more' ), 536 536 ], 537 'set_min_submit_time' => [ 538 'label' => __( 'Token and Honeypot', 'hcaptcha-for-forms-and-more' ), 539 'type' => 'checkbox', 540 'section' => self::SECTION_ANTISPAM, 541 'options' => [ 542 'on' => __( 'Set Minimum Time', 'hcaptcha-for-forms-and-more' ), 543 ], 544 'helper' => __( 'Set a minimum amount of time a user must spend on a form before submitting.', 'hcaptcha-for-forms-and-more' ), 545 ], 546 'min_submit_time' => [ 547 'label' => __( 'Minimum Time to Submit the Form, sec', 'hcaptcha-for-forms-and-more' ), 548 'type' => 'number', 549 'section' => self::SECTION_ANTISPAM, 550 'default' => 2, 551 'min' => 1, 552 'helper' => __( 'Set a minimum amount of time a user must spend on a form before submitting.', 'hcaptcha-for-forms-and-more' ), 553 ], 554 'honeypot' => [ 555 'type' => 'checkbox', 556 'section' => self::SECTION_ANTISPAM, 557 'options' => [ 558 'on' => __( 'Enable Honeypot Field', 'hcaptcha-for-forms-and-more' ), 559 ], 560 'helper' => __( 'Add a honeypot field to submitted forms for early bot prevention.', 'hcaptcha-for-forms-and-more' ), 561 ], 537 562 'antispam' => [ 538 'label' => __( ' Enable anti-spam check', 'hcaptcha-for-forms-and-more' ),563 'label' => __( 'Anti-Spam check', 'hcaptcha-for-forms-and-more' ), 539 564 'type' => 'checkbox', 540 565 'section' => self::SECTION_ANTISPAM, 541 566 'options' => [ 542 'on' => __( ' Anti-spam check', 'hcaptcha-for-forms-and-more' ),567 'on' => __( 'Enable Anti-Spam check', 'hcaptcha-for-forms-and-more' ), 543 568 ], 544 569 'helper' => __( 'Enable anti-spam check of submitted forms.', 'hcaptcha-for-forms-and-more' ), 545 570 ], 546 571 'antispam_provider' => [ 547 'label' => __( 'Anti- spam provider', 'hcaptcha-for-forms-and-more' ),572 'label' => __( 'Anti-Spam Provider', 'hcaptcha-for-forms-and-more' ), 548 573 'type' => 'select', 549 574 'section' => self::SECTION_ANTISPAM, … … 593 618 'on' => __( 'Remove Data on Uninstall', 'hcaptcha-for-forms-and-more' ), 594 619 ], 595 'default' => '',596 620 'helper' => __( 'When enabled, all plugin data will be removed when uninstalling the plugin.', 'hcaptcha-for-forms-and-more' ), 597 621 ], … … 605 629 ], 606 630 'login_limit' => [ 607 'label' => __( 'Login attempts before hCaptcha', 'hcaptcha-for-forms-and-more' ),631 'label' => __( 'Login Attempts Before hCaptcha', 'hcaptcha-for-forms-and-more' ), 608 632 'type' => 'number', 609 633 'section' => self::SECTION_OTHER, … … 613 637 ], 614 638 'login_interval' => [ 615 'label' => __( 'Failed login attempts interval, min', 'hcaptcha-for-forms-and-more' ),639 'label' => __( 'Failed Login Attempts Interval, min', 'hcaptcha-for-forms-and-more' ), 616 640 'type' => 'number', 617 641 'section' => self::SECTION_OTHER, … … 621 645 ], 622 646 'delay' => [ 623 'label' => __( 'Delay showing hCaptcha, ms', 'hcaptcha-for-forms-and-more' ),647 'label' => __( 'Delay Showing hCaptcha, ms', 'hcaptcha-for-forms-and-more' ), 624 648 'type' => 'number', 625 649 'section' => self::SECTION_OTHER, … … 994 1018 // phpcs:enable WordPress.Security.NonceVerification.Missing 995 1019 1020 add_filter( 'hcap_check_honeypot_field', '__return_true' ); 1021 add_filter( 'hcap_verify_fst_token', '__return_true' ); 1022 996 1023 $result = API::verify_request( $hcaptcha_response ); 997 1024 -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Settings/Integrations.php
r3339595 r3359717 9 9 10 10 use HCaptcha\AntiSpam\AntiSpam; 11 use HCaptcha\AntiSpam\Honeypot; 11 12 use HCaptcha\Helpers\Utils; 12 13 use KAGG\Settings\Abstracts\SettingsBase; … … 187 188 /** 188 189 * Filter list of plugin to activate. 190 * Proceed with the special case for blocksy companion plugins. 191 * Companion plugins produce a fatal error when activated together. 189 192 * 190 193 * @param array|mixed $plugins List of plugins. … … 197 200 $plugins = (array) $plugins; 198 201 199 // Companion plugins produce a fatal error when activated together.200 202 $companions = [ 201 203 'blocksy-companion-pro/blocksy-companion.php', 202 204 'blocksy-companion/blocksy-companion.php', 203 205 ]; 206 207 if ( ! array_intersect( $plugins, $companions ) ) { 208 return $plugins; 209 } 204 210 205 211 // Remove Companion plugins from the list to activate. … … 1852 1858 * @return array The updated form field data containing antispam configurations. 1853 1859 */ 1854 pr ivatefunction prepare_antispam_data( string $status, array $form_field ): array {1860 protected function prepare_antispam_data( string $status, array $form_field ): array { 1855 1861 static $all_protected_forms; 1856 1862 1857 1863 if ( ! $all_protected_forms ) { 1858 $all_protected_forms = AntiSpam::get_protected_forms();1864 $all_protected_forms = array_merge( Honeypot::get_protected_forms(), AntiSpam::get_protected_forms() ); 1859 1865 } 1860 1866 … … 1866 1872 } 1867 1873 1868 $helper = 'hcaptcha' === $type1869 ? __( 'The form is protected by the hCaptcha antispam service.', 'hcaptcha-for-forms-and-more' )1870 : __( 'The form is protected by the native antispam service.', 'hcaptcha-for-forms-and-more' );1871 1872 1874 foreach ( $protected_forms[ $status ] as $form ) { 1873 1875 if ( 1874 1876 'native' === $type || 1875 ( 'hcaptcha' === $type && $settings->is( $status, $form ) ) 1877 ( 'hcaptcha' === $type && $settings->is( $status, $form ) ) || 1878 ( 'honeypot' === $type && $settings->is( $status, $form ) ) 1876 1879 ) { 1877 $form_field['data'][ $form ] = [ 'antispam' => $type ]; 1878 $form_field['helpers'][ $form ] = $helper; 1880 $form_field = $this->prepare_form_field_antispam_data( $form_field, $form, $type ); 1879 1881 } 1880 1882 } 1881 1883 } 1882 1884 1885 return $this->format_form_antispam_helpers( $form_field ); 1886 } 1887 1888 /** 1889 * Prepare form field antispam data. 1890 * 1891 * @param array $form_field Form field. 1892 * @param string $form Form name. 1893 * @param string $type Antispam type. 1894 * 1895 * @return array 1896 */ 1897 private function prepare_form_field_antispam_data( array $form_field, string $form, string $type ): array { 1898 $form_field['data'][ $form ]['antispam'] = ''; 1899 $form_field['data'][ $form ][ "antispam-$type" ] = ''; 1900 $form_field['helpers'][ $form ][] = $type; 1901 1883 1902 return $form_field; 1884 1903 } 1904 1905 /** 1906 * Format antispam helpers. 1907 * 1908 * @param array $form_field Form field. 1909 * 1910 * @return array 1911 */ 1912 private function format_form_antispam_helpers( array $form_field ): array { 1913 if ( ! isset( $form_field['helpers'] ) ) { 1914 return $form_field; 1915 } 1916 1917 $helpers = [ 1918 'honeypot' => __( 'hCaptcha honeypot', 'hcaptcha-for-forms-and-more' ), 1919 'native' => __( 'native antispam service', 'hcaptcha-for-forms-and-more' ), 1920 'hcaptcha' => __( 'hCaptcha antispam service', 'hcaptcha-for-forms-and-more' ), 1921 ]; 1922 1923 foreach ( $form_field['helpers'] as $form => $helper_arr ) { 1924 $helper_arr = array_map( 1925 static function ( $type ) use ( $helpers ) { 1926 return $helpers[ $type ]; 1927 }, 1928 $helper_arr 1929 ); 1930 1931 $helper = sprintf( 1932 /* translators: 1: form protection methods. */ 1933 __( 'The form is protected by the %1$s.', 'hcaptcha-for-forms-and-more' ), 1934 Utils::list_array( $helper_arr ) 1935 ); 1936 1937 $form_field['helpers'][ $form ] = $helper; 1938 } 1939 1940 return $form_field; 1941 } 1885 1942 } -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Settings/ListPageBase.php
r3265103 r3359717 348 348 * Includes: 349 349 * 1. A list of date filter options for the datepicker module. 350 * 2. Currently selected filter or date range values. Last "X" days, or i.e. Feb 8, 2023 - Mar 9, 2023. 350 * 2. Currently selected filter or date range values. 351 * Last "X" days, or i.e., Feb 8, 2023 - Mar 9, 2023. 351 352 * 3. Assigned timespan dates. 352 353 * … … 402 403 $dates = (string) filter_input( INPUT_GET, 'date', FILTER_SANITIZE_FULL_SPECIAL_CHARS ); 403 404 404 // Return default timespan if dates are empty.405 // Return the default timespan if dates are empty. 405 406 if ( empty( $dates ) ) { 406 407 return $this->get_timespan_dates( self::DEFAULT_TIMESPAN_DAYS ); … … 411 412 [ $start_date, $end_date ] = explode( self::TIMESPAN_DELIMITER, $dates ); 412 413 413 // Return default timespan if the start date is more recent than the end date.414 // Return the default timespan if the start date is more recent than the end date. 414 415 if ( strtotime( $start_date ) > strtotime( $end_date ) ) { 415 416 return $this->get_timespan_dates( self::DEFAULT_TIMESPAN_DAYS ); … … 427 428 } 428 429 429 // Set time to 0:0:0 for start date and 23:59:59 forend date.430 // Set time to 0:0:0 for the start date and 23:59:59 for the end date. 430 431 $start_date = $start_date->setTime( 0, 0 ); 431 432 $end_date = $end_date->setTime( 23, 59, 59 ); … … 434 435 $current_date = date_create_immutable( 'now', $timezone )->setTime( 23, 59, 59 ); 435 436 436 // Calculate day difference only if the end date is equal to the current date.437 // Calculate the day difference only if the end date is equal to the current date. 437 438 if ( ! $current_date->diff( $end_date )->format( '%a' ) ) { 438 439 $days_diff = $end_date->diff( $start_date )->format( '%a' ); … … 476 477 [ $timespan_key, $timespan_label ] = $this->get_date_filter_choices( $days ); 477 478 478 // Bail early ,if the given number of days is NOT a number nor a numeric string.479 // Bail early if the given number of days is NOT a number nor a numeric string. 479 480 if ( ! is_numeric( $days ) ) { 480 481 return [ '', '', $timespan_key, $timespan_label ]; … … 501 502 $end_date, // WP timezone. 502 503 $timespan_key, // i.e. 30. 503 $timespan_label, // i.e. Last 30 days.504 $timespan_label, // i.e., Last 30 days. 504 505 ]; 505 506 } … … 525 526 ]; 526 527 527 // Bail early ,and return the full list of options.528 // Bail early and return the full list of options. 528 529 if ( is_null( $key ) ) { 529 530 return $choices; … … 547 548 */ 548 549 private function concat_dates( $start_date, $end_date, $fallback = '' ) { 549 // Bail early ,if the given dates are not valid.550 // Bail early if the given dates are not valid. 550 551 if ( ! ( $start_date instanceof DateTimeImmutable ) || ! ( $end_date instanceof DateTimeImmutable ) ) { 551 552 return $fallback; … … 562 563 563 564 /** 564 * Get the ISO 639-2 Language Code from user/site locale.565 * Get the ISO 639-2 Language Code from the user / site locale. 565 566 * 566 567 * @see http://www.loc.gov/standards/iso639-2/php/code_list.php -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Settings/PluginSettingsBase.php
r3283168 r3359717 107 107 108 108 /** 109 * Get plugin base name.109 * Get a plugin base name. 110 110 * 111 111 * @return string … … 176 176 177 177 /** 178 * Show settings page.178 * Show the settings page. 179 179 * 180 180 * @return void … … 206 206 207 207 /** 208 * Show submit button in any place of the form.208 * Show the submit button in any place of the form. 209 209 * 210 210 * @return void -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Settings/Settings.php
r3283168 r3359717 16 16 * Class Settings 17 17 * 18 * The central point to get settings from.18 * The central point is to get settings from. 19 19 */ 20 20 class Settings implements SettingsInterface { … … 115 115 116 116 /** 117 * Get a ctive tab name.117 * Get an active tab name. 118 118 * 119 119 * @return string … … 126 126 127 127 /** 128 * Get plugin name.128 * Get the plugin name. 129 129 * 130 130 * @return string … … 235 235 236 236 /** 237 * Check whether option value equals to the compared one.237 * Check whether the option value equals to the compared one. 238 238 * 239 239 * @param string $key Setting name. … … 253 253 254 254 /** 255 * Check whether option value is 'on' or just non-empty.255 * Check whether the option value is 'on' or just non-empty. 256 256 * 257 257 * @param string $key Setting name. … … 260 260 */ 261 261 public function is_on( string $key ): bool { 262 return ! empty( $this->get( $key ) ); 262 $value = $this->get( $key ); 263 264 if ( is_array( $value ) ) { 265 return [ 'on' ] === $value; 266 } 267 268 return ! empty( $value ); 263 269 } 264 270 … … 318 324 319 325 /** 320 * Get secret key.326 * Get a secret key. 321 327 * 322 328 * @return string … … 333 339 334 340 /** 335 * Get theme.341 * Get a theme. 336 342 * 337 343 * @return string -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/Spectra/Form.php
r3319903 r3359717 64 64 add_filter( 'hcap_print_hcaptcha_scripts', [ $this, 'print_hcaptcha_scripts' ], 0 ); 65 65 add_action( 'wp_print_footer_scripts', [ $this, 'enqueue_scripts' ], 9 ); 66 add_filter( 'script_loader_tag', [ $this, 'add_type_module' ], 10, 3 ); 66 67 } 67 68 … … 126 127 // phpcs:enable WordPress.Security.NonceVerification.Missing 127 128 128 $_POST[ self::NONCE ] = $form_data[ self::NONCE ] ?? ''; 129 $widget_id_name = 'hcaptcha-widget-id'; 130 $hp_sig_name = 'hcap_hp_sig'; 131 $token_name = 'hcap_fst_token'; 132 $hp_name = API::get_hp_name( $form_data ); 133 134 $_POST[ self::NONCE ] = $form_data[ self::NONCE ] ?? ''; 135 $_POST[ $widget_id_name ] = $form_data[ $widget_id_name ] ?? ''; 136 $_POST[ $hp_sig_name ] = $form_data[ $hp_sig_name ] ?? ''; 137 $_POST[ $hp_name ] = $form_data[ $hp_name ] ?? ''; 138 $_POST[ $token_name ] = $form_data[ $token_name ] ?? ''; 129 139 130 140 $error_message = API::verify( $this->get_entry( $form_data ) ); 131 141 132 unset( $_POST[ self::NONCE ] ); 142 unset( 143 $_POST[ self::NONCE ], 144 $_POST[ $widget_id_name ], 145 $_POST[ $hp_sig_name ], 146 $_POST[ $hp_name ], 147 $_POST[ $token_name ] 148 ); 133 149 134 150 if ( null === $error_message ) { … … 191 207 true 192 208 ); 209 } 210 211 /** 212 * Add type="module" attribute to script tag. 213 * 214 * @param string|mixed $tag Script tag. 215 * @param string $handle Script handle. 216 * @param string $src Script source. 217 * 218 * @return string 219 * @noinspection PhpUnusedParameterInspection 220 */ 221 public function add_type_module( $tag, string $handle, string $src ): string { 222 $tag = (string) $tag; 223 224 if ( self::HANDLE !== $handle ) { 225 return $tag; 226 } 227 228 return HCaptcha::add_type_module( $tag ); 193 229 } 194 230 -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/WC/Checkout.php
r3319903 r3359717 73 73 add_filter( 'rest_request_before_callbacks', [ $this, 'verify_block' ], 10, 3 ); 74 74 add_action( 'wp_print_footer_scripts', [ $this, 'enqueue_scripts' ], 9 ); 75 add_filter( 'script_loader_tag', [ $this, 'add_type_module' ], 10, 3 ); 75 76 } 76 77 … … 158 159 } 159 160 160 $widget_id_name = 'hcaptcha-widget-id'; 161 $hcaptcha_response_name = 'h-captcha-response'; 161 $params = $request->get_params(); 162 $widget_id_name = 'hcaptcha-widget-id'; 163 $response_name = 'h-captcha-response'; 164 $hp_sig_name = 'hcap_hp_sig'; 165 $token_name = 'hcap_fst_token'; 166 $hp_name = API::get_hp_name( $params ); 167 162 168 $_POST[ $widget_id_name ] = $request->get_param( $widget_id_name ); 163 $hcaptcha_response = $request->get_param( $hcaptcha_response_name ); 164 165 $error_message = API::verify_request( $hcaptcha_response ); 169 $_POST[ $response_name ] = $request->get_param( $response_name ); 170 $_POST[ $hp_sig_name ] = $request->get_param( $hp_sig_name ); 171 $_POST[ $hp_name ] = $request->get_param( $hp_name ); 172 $_POST[ $token_name ] = $request->get_param( $token_name ); 173 174 $error_message = API::verify_request(); 166 175 167 176 if ( null === $error_message ) { … … 202 211 } 203 212 } 213 214 /** 215 * Add type="module" attribute to script tag. 216 * 217 * @param string|mixed $tag Script tag. 218 * @param string $handle Script handle. 219 * @param string $src Script source. 220 * 221 * @return string 222 * @noinspection PhpUnusedParameterInspection 223 */ 224 public function add_type_module( $tag, string $handle, string $src ): string { 225 $tag = (string) $tag; 226 227 if ( self::BLOCK_HANDLE !== $handle ) { 228 return $tag; 229 } 230 231 return HCaptcha::add_type_module( $tag ); 232 } 204 233 } -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/WPForms/Form.php
r3319903 r3359717 30 30 31 31 /** 32 * Script handle. 33 */ 34 private const HANDLE = 'hcaptcha-wpforms'; 35 36 /** 32 37 * Whether hCaptcha should be auto-added to any form. 33 38 * … … 82 87 add_filter( 'wpforms_process_bypass_captcha', '__return_true' ); 83 88 add_action( 'wpforms_process', [ $this, 'verify' ], 10, 3 ); 89 90 add_action( 'wp_print_footer_scripts', [ $this, 'enqueue_scripts' ], 9 ); 84 91 } 85 92 … … 315 322 316 323 /** 324 * Enqueue scripts. 325 * 326 * @return void 327 */ 328 public function enqueue_scripts(): void { 329 if ( ! hcaptcha()->form_shown ) { 330 return; 331 } 332 333 $min = hcap_min_suffix(); 334 335 wp_enqueue_script( 336 self::HANDLE, 337 HCAPTCHA_URL . "/assets/js/hcaptcha-wpforms$min.js", 338 [ 'jquery', 'hcaptcha' ], 339 HCAPTCHA_VERSION, 340 true 341 ); 342 } 343 344 /** 317 345 * Show hCaptcha. 318 346 * -
hcaptcha-for-forms-and-more/tags/4.17.0/src/php/includes/request.php
r3319903 r3359717 96 96 'bad-signature' => __( 'Bad hCaptcha signature!', 'hcaptcha-for-forms-and-more' ), 97 97 'spam' => __( 'Anti-spam check failed.', 'hcaptcha-for-forms-and-more' ), 98 'fst-no-object' => __( 'FST object does not exist.', 'hcaptcha-for-forms-and-more' ), 99 'fst-too-fast' => __( 'Form submitted too quickly.', 'hcaptcha-for-forms-and-more' ), 100 'fst-replayed-or-expired' => __( 'Token replayed or expired.', 'hcaptcha-for-forms-and-more' ), 101 'fst-expired' => __( 'Token expired.', 'hcaptcha-for-forms-and-more' ), 98 102 ] 99 103 ); … … 125 129 126 130 return $header . ' ' . implode( '; ', $message_arr ); 131 } 132 133 /** 134 * Get WP_Error from hCaptcha error code. 135 * 136 * @param string|string[] $error_codes Error codes. 137 * 138 * @return WP_Error 139 */ 140 function hcap_get_wp_error( $error_codes ): WP_Error { 141 $error_codes = (array) $error_codes; 142 $errors = hcap_get_error_messages(); 143 $wp_error = new WP_Error(); 144 145 foreach ( $error_codes as $error_code ) { 146 if ( array_key_exists( $error_code, $errors ) ) { 147 $wp_error->add( $error_code, $errors[ $error_code ] ); 148 } 149 } 150 151 return $wp_error; 127 152 } 128 153 -
hcaptcha-for-forms-and-more/tags/4.17.0/vendor/autoload.php
r3339595 r3359717 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit e907ee6af17ec21150d2317fc40abfc9::getLoader();22 return ComposerAutoloaderInit0948d9ad69a9f4852d35c417b9397c22::getLoader(); -
hcaptcha-for-forms-and-more/tags/4.17.0/vendor/composer/autoload_classmap.php
r3339595 r3359717 24 24 'HCaptcha\\Affiliates\\Register' => $baseDir . '/src/php/Affiliates/Register.php', 25 25 'HCaptcha\\AntiSpam\\AntiSpam' => $baseDir . '/src/php/AntiSpam/AntiSpam.php', 26 'HCaptcha\\AntiSpam\\Honeypot' => $baseDir . '/src/php/AntiSpam/Honeypot.php', 26 27 'HCaptcha\\AntiSpam\\ProviderBase' => $baseDir . '/src/php/AntiSpam/ProviderBase.php', 27 28 'HCaptcha\\Asgaros\\Base' => $baseDir . '/src/php/Asgaros/Base.php', … … 93 94 'HCaptcha\\Helpers\\API' => $baseDir . '/src/php/Helpers/API.php', 94 95 'HCaptcha\\Helpers\\DB' => $baseDir . '/src/php/Helpers/DB.php', 96 'HCaptcha\\Helpers\\FormSubmitTime' => $baseDir . '/src/php/Helpers/FormSubmitTime.php', 95 97 'HCaptcha\\Helpers\\HCaptcha' => $baseDir . '/src/php/Helpers/HCaptcha.php', 96 98 'HCaptcha\\Helpers\\Minify\\CSS' => $baseDir . '/src/php/Helpers/Minify/CSS.php', -
hcaptcha-for-forms-and-more/tags/4.17.0/vendor/composer/autoload_real.php
r3339595 r3359717 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit e907ee6af17ec21150d2317fc40abfc95 class ComposerAutoloaderInit0948d9ad69a9f4852d35c417b9397c22 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit e907ee6af17ec21150d2317fc40abfc9', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit0948d9ad69a9f4852d35c417b9397c22', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit e907ee6af17ec21150d2317fc40abfc9', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit0948d9ad69a9f4852d35c417b9397c22', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit e907ee6af17ec21150d2317fc40abfc9::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInit0948d9ad69a9f4852d35c417b9397c22::getInitializer($loader)); 33 33 34 34 $loader->setClassMapAuthoritative(true); -
hcaptcha-for-forms-and-more/tags/4.17.0/vendor/composer/autoload_static.php
r3339595 r3359717 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit e907ee6af17ec21150d2317fc40abfc97 class ComposerStaticInit0948d9ad69a9f4852d35c417b9397c22 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 52 52 'HCaptcha\\Affiliates\\Register' => __DIR__ . '/../..' . '/src/php/Affiliates/Register.php', 53 53 'HCaptcha\\AntiSpam\\AntiSpam' => __DIR__ . '/../..' . '/src/php/AntiSpam/AntiSpam.php', 54 'HCaptcha\\AntiSpam\\Honeypot' => __DIR__ . '/../..' . '/src/php/AntiSpam/Honeypot.php', 54 55 'HCaptcha\\AntiSpam\\ProviderBase' => __DIR__ . '/../..' . '/src/php/AntiSpam/ProviderBase.php', 55 56 'HCaptcha\\Asgaros\\Base' => __DIR__ . '/../..' . '/src/php/Asgaros/Base.php', … … 121 122 'HCaptcha\\Helpers\\API' => __DIR__ . '/../..' . '/src/php/Helpers/API.php', 122 123 'HCaptcha\\Helpers\\DB' => __DIR__ . '/../..' . '/src/php/Helpers/DB.php', 124 'HCaptcha\\Helpers\\FormSubmitTime' => __DIR__ . '/../..' . '/src/php/Helpers/FormSubmitTime.php', 123 125 'HCaptcha\\Helpers\\HCaptcha' => __DIR__ . '/../..' . '/src/php/Helpers/HCaptcha.php', 124 126 'HCaptcha\\Helpers\\Minify\\CSS' => __DIR__ . '/../..' . '/src/php/Helpers/Minify/CSS.php', … … 240 242 { 241 243 return \Closure::bind(function () use ($loader) { 242 $loader->prefixLengthsPsr4 = ComposerStaticInit e907ee6af17ec21150d2317fc40abfc9::$prefixLengthsPsr4;243 $loader->prefixDirsPsr4 = ComposerStaticInit e907ee6af17ec21150d2317fc40abfc9::$prefixDirsPsr4;244 $loader->classMap = ComposerStaticInit e907ee6af17ec21150d2317fc40abfc9::$classMap;244 $loader->prefixLengthsPsr4 = ComposerStaticInit0948d9ad69a9f4852d35c417b9397c22::$prefixLengthsPsr4; 245 $loader->prefixDirsPsr4 = ComposerStaticInit0948d9ad69a9f4852d35c417b9397c22::$prefixDirsPsr4; 246 $loader->classMap = ComposerStaticInit0948d9ad69a9f4852d35c417b9397c22::$classMap; 245 247 246 248 }, null, ClassLoader::class); -
hcaptcha-for-forms-and-more/tags/4.17.0/vendor/composer/installed.php
r3339595 r3359717 2 2 'root' => array( 3 3 'name' => 'hcaptcha/hcaptcha-wordpress-plugin', 4 'pretty_version' => '4.1 6.0',5 'version' => '4.1 6.0.0',6 'reference' => ' a7c7adcad35de74072aec91cefc35ea305d55592',4 'pretty_version' => '4.17.0', 5 'version' => '4.17.0.0', 6 'reference' => '40e0ab01cd7c49bbc7cffe4a5a631783ff44e925', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'hcaptcha/hcaptcha-wordpress-plugin' => array( 14 'pretty_version' => '4.1 6.0',15 'version' => '4.1 6.0.0',16 'reference' => ' a7c7adcad35de74072aec91cefc35ea305d55592',14 'pretty_version' => '4.17.0', 15 'version' => '4.17.0.0', 16 'reference' => '40e0ab01cd7c49bbc7cffe4a5a631783ff44e925', 17 17 'type' => 'wordpress-plugin', 18 18 'install_path' => __DIR__ . '/../../', -
hcaptcha-for-forms-and-more/trunk/assets/css/general.css
r3319903 r3359717 328 328 grid-template-columns: repeat(2, 1fr); 329 329 grid-template-areas: 330 "set-min-submit-time min-submit-time" 331 "honeypot min-submit-time" 330 332 "antispam antispam-provider"; 331 333 gap: 0 20px; … … 333 335 } 334 336 337 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-set-min-submit-time { 338 grid-area: set-min-submit-time; 339 } 340 341 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-min-submit-time { 342 grid-area: min-submit-time; 343 } 344 345 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-honeypot { 346 grid-area: honeypot; 347 } 348 335 349 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-antispam { 336 350 grid-area: antispam; 351 padding-top: 15px; 337 352 } 338 353 339 354 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-antispam-provider { 340 355 grid-area: antispam-provider; 356 padding-top: 15px; 341 357 } 342 358 … … 355 371 } 356 372 373 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-min-submit-time td, 357 374 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-antispam-provider td { 358 375 width: auto; … … 361 378 .hcaptcha-section-antispam + table tbody tr td input, 362 379 .hcaptcha-section-antispam + table tbody tr td select { 380 width: 100%; 381 } 382 383 .hcaptcha-section-antispam + table tbody tr.hcaptcha-general-honeypot th { 384 padding: 0; 385 } 386 387 .hcaptcha-section-antispam + table tbody tr td input { 363 388 width: 100%; 364 389 } -
hcaptcha-for-forms-and-more/trunk/assets/css/general.min.css
r3319903 r3359717 1 #hcaptcha-message,#setting-error-settings_updated{box-sizing:border-box;max-width:760px}.hcaptcha-loading:before{background:hsla(0,0%,100%,.8);content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:9999}.hcaptcha-loading:after{animation:hcaptcha-spin 1s linear infinite;border:4px solid #ccc;border-radius:50%;border-top-color:#5c6f8a;content:"";height:28px;left:calc(50% - 18px);position:absolute;top:calc(50% - 18px);width:28px;z-index:10000}@keyframes hcaptcha-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}#hcaptcha-options table tbody{background:#fff}#hcaptcha-options table tbody tr{align-self:start;display:grid}#hcaptcha-options table tbody tr th{color:#5c6f8a}#hcaptcha-options table tbody tr td{margin:0;padding:0;position:relative}#hcaptcha-options .h-captcha{margin-bottom:0}#hcaptcha-options.hcaptcha-general h3{background:#fff;box-sizing:border-box;color:#5c6f8a;cursor:pointer;display:flex;justify-content:space-between;margin:1.5em 0 0;max-width:760px;padding:15px 20px}#hcaptcha-options.hcaptcha-general h3.disabled{opacity:.6}.hcaptcha-section-header-toggle:after{content:"\f142";font:normal 20px dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h3.closed .hcaptcha-section-header-toggle:after{content:"\f140"}#hcaptcha-options.hcaptcha-general h3+table{margin-top:0;max-width:760px;position:relative}#hcaptcha-options.hcaptcha-general h3.disabled+table{opacity:.6}#hcaptcha-options.hcaptcha-general h3.closed+table{display:none}#hcaptcha-options.hcaptcha-general h3+table:before{border-bottom:1px solid #c3c4c7;content:"";margin:0 20px;max-width:720px;position:absolute;top:0;width:calc(100% - 40px)}.hcaptcha-section-keys+table tbody{display:grid;gap:10px 20px;grid-template-areas:"site-key site-key secret-key secret-key" "sample-hcaptcha sample-hcaptcha check-config reset-notifications";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-keys+table tbody th{width:auto}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-site-key{grid-area:site-key}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-secret-key{grid-area:secret-key}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-sample-hcaptcha{grid-area:sample-hcaptcha}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-check-config{grid-area:check-config}.hcaptcha-section-keys+table tbody tr.hcaptcha-reset-notifications{grid-area:reset-notifications}.hcaptcha-section-keys+table tbody tr th{padding:0 0 10px}.hcaptcha-section-keys+table tbody tr td input{width:100%}.hcaptcha-section-appearance+table tbody{display:grid;gap:10px 20px;grid-template-areas:"theme size language mode" "force force position position";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-theme{grid-area:theme}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-size{grid-area:size}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-language{grid-area:language}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-mode{grid-area:mode}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-force{grid-area:force}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-menu-position{grid-area:position}.hcaptcha-section-appearance+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-force td,.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-menu-position td{width:max-content}.hcaptcha-section-appearance+table tbody tr td select{width:100%}.hcaptcha-section-custom+table tbody{display:grid;gap:10px 20px;grid-template-areas:"custom-themes custom-themes config-params config-params" "custom-prop custom-value config-params config-params";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-themes{grid-area:custom-themes}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-config-params{grid-area:config-params}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-prop{grid-area:custom-prop}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-value{grid-area:custom-value}.hcaptcha-section-custom+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-themes td{width:max-content}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-config-params td{width:auto}.hcaptcha-section-custom+table tbody tr td select,.hcaptcha-section-custom+table tbody tr td textarea{width:100%}.hcaptcha-section-custom+table tbody tr td select option:disabled{background:#f0f0f1;color:#2c3338}.hcaptcha-section-custom+table tbody tr td input{height:30px;width:100%}.hcaptcha-section-enterprise+table tbody{display:grid;gap:10px 20px;grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-enterprise+table tbody th{width:auto}.hcaptcha-section-enterprise+table tbody tr th{padding:0 0 10px}.hcaptcha-section-enterprise+table tbody tr td input{width:100%}.hcaptcha-section-content+table tbody{display:grid;gap:0 20px;grid-template-areas:"content protected-urls";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-content+table tbody tr.hcaptcha-general-content{grid-area:content}.hcaptcha-section-content+table tbody tr.hcaptcha-general-protected-urls{grid-area:protected-urls}.hcaptcha-section-content+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-content+table tbody tr td{width:max-content}.hcaptcha-section-content+table tbody tr.hcaptcha-general-protected-urls td{width:auto}.hcaptcha-section-content+table tbody tr td input,.hcaptcha-section-content+table tbody tr td textarea{width:100%}.hcaptcha-section-antispam+table tbody{display:grid;gap:0 20px;grid-template-areas:" antispam antispam-provider";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam{grid-area:antispam}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam-provider{grid-area:antispam-provider}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam-provider div{color:#d63638;margin-top:.5em}.hcaptcha-section-antispam+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-antispam+table tbody tr td{width:max-content}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam-provider td{width:auto}.hcaptcha-section-antispam+table tbody tr td input,.hcaptcha-section-antispam+table tbody tr td select{width:100%}.hcaptcha-section-other+table tbody{display:grid;gap:0 20px;grid-template-areas:"blacklisted whitelisted" "logged recaptcha" "hide-login-errors cleanup-on-uninstall" "network ." "login-limit login-interval" "delay .";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in{grid-area:logged}.hcaptcha-section-other+table tbody tr.hcaptcha-general-recaptcha-compat-off{grid-area:recaptcha}.hcaptcha-section-other+table tbody tr.hcaptcha-general-hide-login-errors{grid-area:hide-login-errors}.hcaptcha-section-other+table tbody tr.hcaptcha-general-cleanup-on-uninstall{grid-area:cleanup-on-uninstall}.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-limit{grid-area:login-limit;padding-top:15px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-interval{grid-area:login-interval;padding-top:15px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips{grid-area:whitelisted}.hcaptcha-section-other+table tbody tr.hcaptcha-general--network-wide{grid-area:network}.hcaptcha-section-other+table tbody tr.hcaptcha-general-delay{grid-area:delay;padding-top:15px}.hcaptcha-section-other+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-other+table tbody tr.hcaptcha-general--network-wide th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-cleanup-on-uninstall th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-hide-login-errors th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-recaptcha-compat-off th{padding:0}.hcaptcha-section-other+table tbody tr td{width:max-content}.hcaptcha-section-other+table tbody tr.hcaptcha-general-blacklisted-ips td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-delay td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-interval td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-limit td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips td{width:auto}.hcaptcha-section-other+table tbody tr td input,.hcaptcha-section-other+table tbody tr td textarea{width:100%}.hcaptcha-section-statistics+table tbody{display:grid;gap:0 20px;grid-template-areas:"statistics collect-ip" "anonymous collect-ua";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-statistics{grid-area:statistics}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-anonymous{grid-area:anonymous}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ip{grid-area:collect-ip}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ua{grid-area:collect-ua}.hcaptcha-section-statistics+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-anonymous th,.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ua th{padding:0}.hcaptcha-section-statistics+table tbody tr td{width:max-content}@media (max-width:600px){.hcaptcha-section-keys+table tbody{grid-template-areas:"site-key site-key" "secret-key secret-key" "sample-hcaptcha sample-hcaptcha" "check-config reset-notifications";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-appearance+table tbody{grid-template-areas:"theme size" "language mode" "force force" "position position";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-appearance+table tbody tr td{width:unset!important}.hcaptcha-section-custom+table tbody{grid-template-areas:"custom-themes custom-themes" "custom-prop custom-value" "config-params config-params";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-custom+table tbody tr td{width:unset!important}.hcaptcha-section-enterprise+table tbody{grid-template-columns:repeat(1,1fr)!important}.hcaptcha-section-enterprise+table tbody tr td{width:unset!important}.hcaptcha-section-content+table tbody{grid-template-areas:"content" "protected-urls";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-content+table tbody tr td{width:unset!important}.hcaptcha-section-antispam+table tbody{grid-template-areas:"antispam" "antispam-provider";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-antispam+table tbody tr td{width:unset!important}.hcaptcha-section-other+table tbody{grid-template-areas:"blacklisted" "whitelisted" "logged" "recaptcha" "hide-login-errors" "cleanup-on-uninstall" "network" "login-limit" "login-interval" "delay";grid-template-columns:repeat(1,1fr)!important}.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in,.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips{padding-top:10px}.hcaptcha-section-other+table tbody tr td{width:unset!important}.hcaptcha-section-statistics+table tbody{grid-template-areas:"statistics" "anonymous" "collect-ip" "collect-ua";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-statistics+table tbody tr td{width:unset!important}}1 #hcaptcha-message,#setting-error-settings_updated{box-sizing:border-box;max-width:760px}.hcaptcha-loading:before{background:hsla(0,0%,100%,.8);content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:9999}.hcaptcha-loading:after{animation:hcaptcha-spin 1s linear infinite;border:4px solid #ccc;border-radius:50%;border-top-color:#5c6f8a;content:"";height:28px;left:calc(50% - 18px);position:absolute;top:calc(50% - 18px);width:28px;z-index:10000}@keyframes hcaptcha-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}#hcaptcha-options table tbody{background:#fff}#hcaptcha-options table tbody tr{align-self:start;display:grid}#hcaptcha-options table tbody tr th{color:#5c6f8a}#hcaptcha-options table tbody tr td{margin:0;padding:0;position:relative}#hcaptcha-options .h-captcha{margin-bottom:0}#hcaptcha-options.hcaptcha-general h3{background:#fff;box-sizing:border-box;color:#5c6f8a;cursor:pointer;display:flex;justify-content:space-between;margin:1.5em 0 0;max-width:760px;padding:15px 20px}#hcaptcha-options.hcaptcha-general h3.disabled{opacity:.6}.hcaptcha-section-header-toggle:after{content:"\f142";font:normal 20px dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h3.closed .hcaptcha-section-header-toggle:after{content:"\f140"}#hcaptcha-options.hcaptcha-general h3+table{margin-top:0;max-width:760px;position:relative}#hcaptcha-options.hcaptcha-general h3.disabled+table{opacity:.6}#hcaptcha-options.hcaptcha-general h3.closed+table{display:none}#hcaptcha-options.hcaptcha-general h3+table:before{border-bottom:1px solid #c3c4c7;content:"";margin:0 20px;max-width:720px;position:absolute;top:0;width:calc(100% - 40px)}.hcaptcha-section-keys+table tbody{display:grid;gap:10px 20px;grid-template-areas:"site-key site-key secret-key secret-key" "sample-hcaptcha sample-hcaptcha check-config reset-notifications";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-keys+table tbody th{width:auto}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-site-key{grid-area:site-key}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-secret-key{grid-area:secret-key}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-sample-hcaptcha{grid-area:sample-hcaptcha}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-check-config{grid-area:check-config}.hcaptcha-section-keys+table tbody tr.hcaptcha-reset-notifications{grid-area:reset-notifications}.hcaptcha-section-keys+table tbody tr th{padding:0 0 10px}.hcaptcha-section-keys+table tbody tr td input{width:100%}.hcaptcha-section-appearance+table tbody{display:grid;gap:10px 20px;grid-template-areas:"theme size language mode" "force force position position";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-theme{grid-area:theme}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-size{grid-area:size}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-language{grid-area:language}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-mode{grid-area:mode}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-force{grid-area:force}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-menu-position{grid-area:position}.hcaptcha-section-appearance+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-force td,.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-menu-position td{width:max-content}.hcaptcha-section-appearance+table tbody tr td select{width:100%}.hcaptcha-section-custom+table tbody{display:grid;gap:10px 20px;grid-template-areas:"custom-themes custom-themes config-params config-params" "custom-prop custom-value config-params config-params";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-themes{grid-area:custom-themes}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-config-params{grid-area:config-params}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-prop{grid-area:custom-prop}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-value{grid-area:custom-value}.hcaptcha-section-custom+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-themes td{width:max-content}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-config-params td{width:auto}.hcaptcha-section-custom+table tbody tr td select,.hcaptcha-section-custom+table tbody tr td textarea{width:100%}.hcaptcha-section-custom+table tbody tr td select option:disabled{background:#f0f0f1;color:#2c3338}.hcaptcha-section-custom+table tbody tr td input{height:30px;width:100%}.hcaptcha-section-enterprise+table tbody{display:grid;gap:10px 20px;grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-enterprise+table tbody th{width:auto}.hcaptcha-section-enterprise+table tbody tr th{padding:0 0 10px}.hcaptcha-section-enterprise+table tbody tr td input{width:100%}.hcaptcha-section-content+table tbody{display:grid;gap:0 20px;grid-template-areas:"content protected-urls";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-content+table tbody tr.hcaptcha-general-content{grid-area:content}.hcaptcha-section-content+table tbody tr.hcaptcha-general-protected-urls{grid-area:protected-urls}.hcaptcha-section-content+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-content+table tbody tr td{width:max-content}.hcaptcha-section-content+table tbody tr.hcaptcha-general-protected-urls td{width:auto}.hcaptcha-section-content+table tbody tr td input,.hcaptcha-section-content+table tbody tr td textarea{width:100%}.hcaptcha-section-antispam+table tbody{display:grid;gap:0 20px;grid-template-areas:"set-min-submit-time min-submit-time" "honeypot min-submit-time" "antispam antispam-provider";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-set-min-submit-time{grid-area:set-min-submit-time}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-min-submit-time{grid-area:min-submit-time}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-honeypot{grid-area:honeypot}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam{grid-area:antispam;padding-top:15px}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam-provider{grid-area:antispam-provider;padding-top:15px}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam-provider div{color:#d63638;margin-top:.5em}.hcaptcha-section-antispam+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-antispam+table tbody tr td{width:max-content}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-antispam-provider td,.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-min-submit-time td{width:auto}.hcaptcha-section-antispam+table tbody tr td input,.hcaptcha-section-antispam+table tbody tr td select{width:100%}.hcaptcha-section-antispam+table tbody tr.hcaptcha-general-honeypot th{padding:0}.hcaptcha-section-antispam+table tbody tr td input{width:100%}.hcaptcha-section-other+table tbody{display:grid;gap:0 20px;grid-template-areas:"blacklisted whitelisted" "logged recaptcha" "hide-login-errors cleanup-on-uninstall" "network ." "login-limit login-interval" "delay .";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in{grid-area:logged}.hcaptcha-section-other+table tbody tr.hcaptcha-general-recaptcha-compat-off{grid-area:recaptcha}.hcaptcha-section-other+table tbody tr.hcaptcha-general-hide-login-errors{grid-area:hide-login-errors}.hcaptcha-section-other+table tbody tr.hcaptcha-general-cleanup-on-uninstall{grid-area:cleanup-on-uninstall}.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-limit{grid-area:login-limit;padding-top:15px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-interval{grid-area:login-interval;padding-top:15px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips{grid-area:whitelisted}.hcaptcha-section-other+table tbody tr.hcaptcha-general--network-wide{grid-area:network}.hcaptcha-section-other+table tbody tr.hcaptcha-general-delay{grid-area:delay;padding-top:15px}.hcaptcha-section-other+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-other+table tbody tr.hcaptcha-general--network-wide th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-cleanup-on-uninstall th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-hide-login-errors th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-recaptcha-compat-off th{padding:0}.hcaptcha-section-other+table tbody tr td{width:max-content}.hcaptcha-section-other+table tbody tr.hcaptcha-general-blacklisted-ips td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-delay td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-interval td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-limit td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips td{width:auto}.hcaptcha-section-other+table tbody tr td input,.hcaptcha-section-other+table tbody tr td textarea{width:100%}.hcaptcha-section-statistics+table tbody{display:grid;gap:0 20px;grid-template-areas:"statistics collect-ip" "anonymous collect-ua";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-statistics{grid-area:statistics}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-anonymous{grid-area:anonymous}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ip{grid-area:collect-ip}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ua{grid-area:collect-ua}.hcaptcha-section-statistics+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-anonymous th,.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ua th{padding:0}.hcaptcha-section-statistics+table tbody tr td{width:max-content}@media (max-width:600px){.hcaptcha-section-keys+table tbody{grid-template-areas:"site-key site-key" "secret-key secret-key" "sample-hcaptcha sample-hcaptcha" "check-config reset-notifications";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-appearance+table tbody{grid-template-areas:"theme size" "language mode" "force force" "position position";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-appearance+table tbody tr td{width:unset!important}.hcaptcha-section-custom+table tbody{grid-template-areas:"custom-themes custom-themes" "custom-prop custom-value" "config-params config-params";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-custom+table tbody tr td{width:unset!important}.hcaptcha-section-enterprise+table tbody{grid-template-columns:repeat(1,1fr)!important}.hcaptcha-section-enterprise+table tbody tr td{width:unset!important}.hcaptcha-section-content+table tbody{grid-template-areas:"content" "protected-urls";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-content+table tbody tr td{width:unset!important}.hcaptcha-section-antispam+table tbody{grid-template-areas:"antispam" "antispam-provider";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-antispam+table tbody tr td{width:unset!important}.hcaptcha-section-other+table tbody{grid-template-areas:"blacklisted" "whitelisted" "logged" "recaptcha" "hide-login-errors" "cleanup-on-uninstall" "network" "login-limit" "login-interval" "delay";grid-template-columns:repeat(1,1fr)!important}.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in,.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips{padding-top:10px}.hcaptcha-section-other+table tbody tr td{width:unset!important}.hcaptcha-section-statistics+table tbody{grid-template-areas:"statistics" "anonymous" "collect-ip" "collect-ua";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-statistics+table tbody tr td{width:unset!important}} -
hcaptcha-for-forms-and-more/trunk/assets/css/integrations.css
r3319903 r3359717 155 155 } 156 156 157 #hcaptcha-options label + .helper { 158 position: absolute; 159 right: 0; 160 width: 100%; 161 } 162 157 163 #hcaptcha-options label[data-antispam] + .helper::before { 158 164 content: ''; … … 166 172 } 167 173 168 #hcaptcha-options label [data-antispam="native"]+ .helper::before {174 #hcaptcha-options label:is([data-antispam-native],[data-antispam-native]) + .helper::before { 169 175 background: url('../images/antispam-yellow.svg'); 176 background-size: cover; 177 } 178 179 #hcaptcha-options label:is([data-antispam-honeypot],[data-antispam-honeypot]) + .helper::before { 180 background: url('../images/antispam-honeypot.svg'); 170 181 background-size: cover; 171 182 } -
hcaptcha-for-forms-and-more/trunk/assets/css/integrations.min.css
r3319903 r3359717 1 #hcaptcha-options p{margin:.5em 0}.hcaptcha-integrations table tbody{display:grid;gap:10px 20px;grid-template-columns:repeat(4,minmax(100px,1fr))}.hcaptcha-integrations table tr{background:#fff;padding:10px 20px;position:relative}.hcaptcha-integrations table tr:before{background-color:#f0f0f0;bottom:0;content:"";inset-inline-end:0;inset-inline-start:0;opacity:0;position:absolute;top:0;transition:all 1.5s;visibility:hidden}.hcaptcha-integrations table tr.install:before,.hcaptcha-integrations table tr.off:before,.hcaptcha-integrations table tr.on:before{opacity:.7;transition:all 1.5s;visibility:visible}.hcaptcha-integrations table tr:after{background-image:url(../images/spinner-white.svg);background-position:50%;background-repeat:no-repeat;background-size:auto 80%;bottom:0;content:"";inset-inline-end:0;inset-inline-start:0;opacity:0;position:absolute;top:0;transition:all 1.5s;visibility:hidden}.hcaptcha-integrations table tr.install:after,.hcaptcha-integrations table tr.off:after,.hcaptcha-integrations table tr.on:after{background-position:50%;background-repeat:no-repeat;background-size:auto 80%;opacity:1;transition:all 1.5s;visibility:visible}.hcaptcha-integrations table tr.install:after{background-image:url(../images/spinner-gold.svg)}.hcaptcha-integrations table tr.on:after{background-image:url(../images/spinner-green.svg)}.hcaptcha-integrations table tr.off:after{background-image:url(../images/spinner-red.svg)}.hcaptcha-integrations table tr th{align-items:center;display:flex;flex-wrap:wrap;font-size:16px;height:28px;justify-content:space-between;margin-bottom:20px;padding:5px 0 0;width:unset}.hcaptcha-integrations table tr .hcaptcha-integrations-entity{background:#4de1d2;border:1px solid #4de1d2;border-radius:2px;color:#fff;cursor:default;font-size:14px;line-height:18px;padding:4px 8px}.hcaptcha-integrations-logo{position:relative}.hcaptcha-integrations table tr th .hcaptcha-integrations-logo{cursor:pointer;height:28px}.hcaptcha-integrations table tr th .hcaptcha-integrations-logo:hover:before{bottom:0;content:"";inset-inline-start:-14px;position:absolute;top:0;width:4px}.hcaptcha-integrations>table~table tr th .hcaptcha-integrations-logo:hover:before{background-color:#00a32a}.hcaptcha-integrations>table tr th .hcaptcha-integrations-logo:hover:before{background-color:#d63638}.hcaptcha-integrations>table~table tr th .hcaptcha-integrations-logo[data-installed=false]:hover:before{background-color:#dba617}.hcaptcha-integrations table tr th img{max-height:28px;max-width:100%}.hcaptcha-integrations table tr.hcaptcha-integrations-wp-status th .hcaptcha-integrations-logo{cursor:unset}.hcaptcha-integrations table tr.hcaptcha-integrations-wp-status th .hcaptcha-integrations-logo:hover:before{display:none}.hcaptcha-integrations table tr td{display:flex;margin:0;padding:0}.hcaptcha-integrations table tr td fieldset,.hcaptcha-integrations table tr td fieldset label{width:100%}#hcaptcha-options label [data-antispam]+.helper:before{background:url(../images/antispam-green.svg);background-size:cover;border-radius:unset;content:"";height:20px;top:.35em;transform:translate(0);width:18px}#hcaptcha-options label[data-antispam=native]+.helper:before{background:url(../images/antispam-yellow.svg);background-size:cover}#hcaptcha-options fieldset:disabled label[data-antispam]+.helper:before{opacity:.7}#hcaptcha-options label[data-antispam]+.helper .helper-content{transform:translateY(38px)}.hcaptcha-disabled-section{margin:20px 0}.hcaptcha-integrations table.form-table+p.submit{padding:10px 0 0}#hcaptcha-integrations-search-wrap{position:relative}#hcaptcha-integrations-search-wrap:before{background:url(../images/magnifying-glass.svg);background-size:contain;content:"";font-size:16px;height:16px;inset-inline-start:10px;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:16px}#hcaptcha-integrations-search{padding-block-end:1px;padding-block-start:1px;padding-inline-end:8px;padding-inline-start:32px;width:230px}@media (max-width:1279px){.hcaptcha-integrations table tbody{grid-template-columns:repeat(3,minmax(100px,1fr))}}@media (max-width:1023px){.hcaptcha-integrations table tbody{grid-template-columns:repeat(2,minmax(100px,1fr))}}@media (max-width:782px){#hcaptcha-integrations-search{font-size:14px;min-height:unset}}body div.kagg-dialog{--color-activate:#00a32a;--color-deactivate:#d63638;--color-install:#dba617}body div.kagg-dialog.activate .kagg-dialog-container .kagg-dialog-box{color:var(--color-activate)}body div.kagg-dialog.activate .kagg-dialog-container .kagg-dialog-box .kagg-dialog-buttons button.btn-ok{background:var(--color-activate);color:#fff}body div.kagg-dialog.deactivate .kagg-dialog-container .kagg-dialog-box{color:var(--color-deactivate)}body div.kagg-dialog.deactivate .kagg-dialog-container .kagg-dialog-box .kagg-dialog-buttons button.btn-ok{background:var(--color-deactivate);color:#fff}body div.kagg-dialog.install .kagg-dialog-container .kagg-dialog-box{color:var(--color-install)}body div.kagg-dialog.install .kagg-dialog-container .kagg-dialog-box .kagg-dialog-buttons button.btn-ok{background:var(--color-install);color:#fff}1 #hcaptcha-options p{margin:.5em 0}.hcaptcha-integrations table tbody{display:grid;gap:10px 20px;grid-template-columns:repeat(4,minmax(100px,1fr))}.hcaptcha-integrations table tr{background:#fff;padding:10px 20px;position:relative}.hcaptcha-integrations table tr:before{background-color:#f0f0f0;bottom:0;content:"";inset-inline-end:0;inset-inline-start:0;opacity:0;position:absolute;top:0;transition:all 1.5s;visibility:hidden}.hcaptcha-integrations table tr.install:before,.hcaptcha-integrations table tr.off:before,.hcaptcha-integrations table tr.on:before{opacity:.7;transition:all 1.5s;visibility:visible}.hcaptcha-integrations table tr:after{background-image:url(../images/spinner-white.svg);background-position:50%;background-repeat:no-repeat;background-size:auto 80%;bottom:0;content:"";inset-inline-end:0;inset-inline-start:0;opacity:0;position:absolute;top:0;transition:all 1.5s;visibility:hidden}.hcaptcha-integrations table tr.install:after,.hcaptcha-integrations table tr.off:after,.hcaptcha-integrations table tr.on:after{background-position:50%;background-repeat:no-repeat;background-size:auto 80%;opacity:1;transition:all 1.5s;visibility:visible}.hcaptcha-integrations table tr.install:after{background-image:url(../images/spinner-gold.svg)}.hcaptcha-integrations table tr.on:after{background-image:url(../images/spinner-green.svg)}.hcaptcha-integrations table tr.off:after{background-image:url(../images/spinner-red.svg)}.hcaptcha-integrations table tr th{align-items:center;display:flex;flex-wrap:wrap;font-size:16px;height:28px;justify-content:space-between;margin-bottom:20px;padding:5px 0 0;width:unset}.hcaptcha-integrations table tr .hcaptcha-integrations-entity{background:#4de1d2;border:1px solid #4de1d2;border-radius:2px;color:#fff;cursor:default;font-size:14px;line-height:18px;padding:4px 8px}.hcaptcha-integrations-logo{position:relative}.hcaptcha-integrations table tr th .hcaptcha-integrations-logo{cursor:pointer;height:28px}.hcaptcha-integrations table tr th .hcaptcha-integrations-logo:hover:before{bottom:0;content:"";inset-inline-start:-14px;position:absolute;top:0;width:4px}.hcaptcha-integrations>table~table tr th .hcaptcha-integrations-logo:hover:before{background-color:#00a32a}.hcaptcha-integrations>table tr th .hcaptcha-integrations-logo:hover:before{background-color:#d63638}.hcaptcha-integrations>table~table tr th .hcaptcha-integrations-logo[data-installed=false]:hover:before{background-color:#dba617}.hcaptcha-integrations table tr th img{max-height:28px;max-width:100%}.hcaptcha-integrations table tr.hcaptcha-integrations-wp-status th .hcaptcha-integrations-logo{cursor:unset}.hcaptcha-integrations table tr.hcaptcha-integrations-wp-status th .hcaptcha-integrations-logo:hover:before{display:none}.hcaptcha-integrations table tr td{display:flex;margin:0;padding:0}.hcaptcha-integrations table tr td fieldset,.hcaptcha-integrations table tr td fieldset label{width:100%}#hcaptcha-options label+.helper{position:absolute;right:0;width:100%}#hcaptcha-options label[data-antispam]+.helper:before{background:url(../images/antispam-green.svg);background-size:cover;border-radius:unset;content:"";height:20px;top:.35em;transform:translate(0);width:18px}#hcaptcha-options label:is([data-antispam-native])+.helper:before{background:url(../images/antispam-yellow.svg);background-size:cover}#hcaptcha-options label:is([data-antispam-honeypot])+.helper:before{background:url(../images/antispam-honeypot.svg);background-size:cover}#hcaptcha-options fieldset:disabled label[data-antispam]+.helper:before{opacity:.7}#hcaptcha-options label[data-antispam]+.helper .helper-content{transform:translateY(38px)}.hcaptcha-disabled-section{margin:20px 0}.hcaptcha-integrations table.form-table+p.submit{padding:10px 0 0}#hcaptcha-integrations-search-wrap{position:relative}#hcaptcha-integrations-search-wrap:before{background:url(../images/magnifying-glass.svg);background-size:contain;content:"";font-size:16px;height:16px;inset-inline-start:10px;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:16px}#hcaptcha-integrations-search{padding-block-end:1px;padding-block-start:1px;padding-inline-end:8px;padding-inline-start:32px;width:230px}@media (max-width:1279px){.hcaptcha-integrations table tbody{grid-template-columns:repeat(3,minmax(100px,1fr))}}@media (max-width:1023px){.hcaptcha-integrations table tbody{grid-template-columns:repeat(2,minmax(100px,1fr))}}@media (max-width:782px){#hcaptcha-integrations-search{font-size:14px;min-height:unset}}body div.kagg-dialog{--color-activate:#00a32a;--color-deactivate:#d63638;--color-install:#dba617}body div.kagg-dialog.activate .kagg-dialog-container .kagg-dialog-box{color:var(--color-activate)}body div.kagg-dialog.activate .kagg-dialog-container .kagg-dialog-box .kagg-dialog-buttons button.btn-ok{background:var(--color-activate);color:#fff}body div.kagg-dialog.deactivate .kagg-dialog-container .kagg-dialog-box{color:var(--color-deactivate)}body div.kagg-dialog.deactivate .kagg-dialog-container .kagg-dialog-box .kagg-dialog-buttons button.btn-ok{background:var(--color-deactivate);color:#fff}body div.kagg-dialog.install .kagg-dialog-container .kagg-dialog-box{color:var(--color-install)}body div.kagg-dialog.install .kagg-dialog-container .kagg-dialog-box .kagg-dialog-buttons button.btn-ok{background:var(--color-install);color:#fff} -
hcaptcha-for-forms-and-more/trunk/assets/js/admin-jetpack.js
r3339595 r3359717 3 3 /** 4 4 * @param HCaptchaJetpackObject.hCaptcha 5 * @param window.hCaptchaJetpack6 5 */ 7 6 -
hcaptcha-for-forms-and-more/trunk/assets/js/apps/hcaptcha.js
r3339595 r3359717 1 (()=>{"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=r(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var o=0,a=function(){};return{s:a,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return u=t.done,t},e:function(t){c=!0,i=t},f:function(){try{u||null==n.return||n.return()}finally{if(c)throw i}}}}function n(t){return function(t){if(Array.isArray(t))return o(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||r(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(t,e){if(t){if("string"==typeof t)return o(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,i(r.key),r)}}function i(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,n||"default");if("object"!=t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==t(n)?n:n+""}var u=function(){return r=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.foundForms=[],this.params=null,this.observingDarkMode=!1,this.observingPasswordManagers=!1,this.darkElement=null,this.darkClass=null,this.callback=this.callback.bind(this),this.validate=this.validate.bind(this),this.addedDCLCallbacks=new Set},(o=[{key:"generateID",value:function(){var t=function(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)};return t()+"-"+t()+"-"+t()+"-"+t()}},{key:"getFoundFormById",value:function(t){var e;return null!==(e=this.foundForms.filter(function(e){return t===e.hCaptchaId})[0])&&void 0!==e?e:null}},{key:"getWidgetId",value:function(t){var e,n,r;if(void 0===t)return"";var o=null!==(e=null===(n=t.closest(this.formSelector))||void 0===n||null===(n=n.dataset)||void 0===n?void 0:n.hCaptchaId)&&void 0!==e?e:"";if(!o)return"";var a=this.getFoundFormById(o);return null!==(r=null==a?void 0:a.widgetId)&&void 0!==r?r:""}},{key:"reset",value:function(t){var e=this.getWidgetId(t);e&&hcaptcha.reset(e)}},{key:"isSameOrDescendant",value:function(t,e){for(var n=e;n;){if(n===t)return!0;n=n.parentElement}return!1}},{key:"getCurrentForm",value:function(t){var e,n=t.currentTarget.closest(this.formSelector),r=this.getFoundFormById(null==n||null===(e=n.dataset)||void 0===e?void 0:e.hCaptchaId),o=null==r?void 0:r.submitButtonElement,a=null==r?void 0:r.widgetId;if(a&&this.isSameOrDescendant(o,t.target))return t.preventDefault(),t.stopPropagation(),{formElement:n,submitButtonElement:o,widgetId:a}}},{key:"validate",value:function(t){if(this.currentForm=this.getCurrentForm(t),this.currentForm){var e=this.currentForm,n=e.formElement,r=e.widgetId,o=n.querySelector(this.responseSelector),a=o?o.value:"";""===a?hcaptcha.execute(r,{async:!1}):this.callback(a)}}},{key:"isValidated",value:function(){return void 0!==this.currentForm}},{key:"getForms",value:function(){return n(document.querySelectorAll(this.formSelector))}},{key:"getParams",value:function(){if(null!==this.params)return this.params;var t;try{var e,n;t=JSON.parse(wp.hooks.applyFilters("hcaptcha.params",null!==(e=null===(n=HCaptchaMainObject)||void 0===n?void 0:n.params)&&void 0!==e?e:""))}catch(e){t={}}return t.callback=this.callback,t}},{key:"setParams",value:function(t){this.params=t}},{key:"setDarkData",value:function(){var t={"twenty-twenty-one":{darkStyleId:"twenty-twenty-one-style-css",darkElement:document.body,darkClass:"is-dark-theme"},"wp-dark-mode":{darkStyleId:"wp-dark-mode-frontend-css",darkElement:document.documentElement,darkClass:"wp-dark-mode-active"},"droit-dark-mode":{darkStyleId:"dtdr-public-inline-css",darkElement:document.documentElement,darkClass:"drdt-dark-mode"}};t=wp.hooks.applyFilters("hcaptcha.darkData",t);for(var e=0,n=Object.values(t);e<n.length;e++){var r=n[e];if(document.getElementById(r.darkStyleId))return this.darkElement=r.darkElement,void(this.darkClass=r.darkClass)}}},{key:"observeDarkMode",value:function(){var t=this;this.observingDarkMode||(this.observingDarkMode=!0,"auto"!==this.getParams().theme)||(this.setDarkData(),this.darkElement&&this.darkClass&&new MutationObserver(function(n){var r,o=e(n);try{var a=function(){var e=r.value.oldValue,n=t.darkElement.getAttribute("class");e=e?e.split(" "):[],(n=n?n.split(" "):[]).filter(function(t){return!e.includes(t)}).concat(e.filter(function(t){return!n.includes(t)})).includes(t.darkClass)&&t.bindEvents()};for(o.s();!(r=o.n()).done;)a()}catch(t){o.e(t)}finally{o.f()}}).observe(this.darkElement,{attributes:!0,attributeOldValue:!0}))}},{key:"observePasswordManagers",value:function(){var t=this;if(!this.observingPasswordManagers){this.observingPasswordManagers=!0;var n=!1,r=new MutationObserver(function(o){n||(n=!0,requestAnimationFrame(function(){var a,i=e(o);try{for(i.s();!(a=i.n()).done;)if("childList"===a.value.type){var u=document.querySelector("com-1password-button"),c=document.querySelector("div[data-lastpass-icon-root]");if(u||c){r.disconnect(),t.foundForms.map(function(e){var n=e.hCaptchaId,r=e.submitButtonElement;if(!r)return e;var o=document.querySelector('[data-h-captcha-id="'.concat(n,'"]')).querySelector(".h-captcha"),a=o.dataset;return"invisible"===a.size||"true"===a.force||(o.dataset.force="true",r.addEventListener("click",t.validate,!0)),e});break}}}catch(t){i.e(t)}finally{i.f()}n=!1}))});r.observe(document.body,{childList:!0,subtree:!0})}}},{key:"getWidgetByToken",value:function(t){var e=n(document.querySelectorAll(this.responseSelector)).find(function(e){return e.value===t});return e?e.closest(".h-captcha"):null}},{key:"callback",value:function(t){document.dispatchEvent(new CustomEvent("hCaptchaSubmitted",{detail:{token:t}}));var e=this.getParams(),n=this.getWidgetByToken(t),r=n?n.dataset.force:null;("invisible"===e.size||"true"===r&&this.isValidated())&&this.submit()}},{key:"applyAutoTheme",value:function(t){if("auto"!==t.theme)return t;var e;if(t.theme="light",!this.darkElement)return t.theme=null!==(e=window)&&void 0!==e&&e.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",t;var n=this.darkElement.getAttribute("class");return(n=n||"").includes(this.darkClass)&&(t.theme="dark"),t}},{key:"render",value:function(e){this.observeDarkMode(),this.observePasswordManagers();var n,r,o=this.getParams();return"object"===t(o.theme)?null!==(n=null===(r=o)||void 0===r||null===(r=r.theme)||void 0===r||null===(r=r.component)||void 0===r||null===(r=r.checkbox)||void 0===r||null===(r=r.main)||void 0===r?void 0:r.fill)&&void 0!==n&&n&&(e.dataset.theme="custom"):o.theme=e.dataset.theme,o.size=e.dataset.size,o=this.applyAutoTheme(o),hcaptcha.render(e,o)}},{key:"addSyncedEventListener",value:function(t){if("loading"===document.readyState){if(this.addedDCLCallbacks.has(t))return;this.addedDCLCallbacks.add(t),window.addEventListener("DOMContentLoaded",t)}else t()}},{key:" bindEvents",value:function(){var t=this;"undefined"!=typeof hcaptcha&&(this.formSelector=wp.hooks.applyFilters("hcaptcha.formSelector","form, section.cwginstock-subscribe-form, div.sdm_download_item, .gform_editor, #nf-builder, .wpforms-captcha-preview"),this.submitButtonSelector=wp.hooks.applyFilters("hcaptcha.submitButtonSelector",'*[type="submit"]:not(.quform-default-submit), #check_config, button[type="button"].ff-btn, a.et_pb_newsletter_button.et_pb_button, .forminator-button-submit, .frm_button_submit, a.sdm_download, .uagb-forms-main-submit-button'),this.responseSelector='textarea[name="h-captcha-response"]',this.getForms().map(function(e){var n=e.querySelector(".h-captcha");if(null===n)return e;if(n.classList.contains("hcaptcha-widget-id"))return e;n.innerHTML="";var r=t.generateID(),o=e.querySelectorAll(t.submitButtonSelector)[0],a=t.render(n);if(e.dataset.hCaptchaId=r,t.foundForms.push({hCaptchaId:r,submitButtonElement:o,widgetId:a}),!o)return e;var i=n.dataset;return"invisible"!==i.size&&"true"!==i.force||o.addEventListener("click",t.validate,!0),e},this))}},{key:"isAjaxSubmitButton",value:function(t){var e=t.getAttribute("type"),n="submit"!==(e=e?e.toLowerCase():"");return wp.hooks.applyFilters("hcaptcha.ajaxSubmitButton",n,t)}},{key:"submit",value:function(){if(this.currentForm){var t=this.currentForm,e=t.formElement,n=t.submitButtonElement;if("form"!==e.tagName.toLowerCase()||this.isAjaxSubmitButton(n))return n.removeEventListener("click",this.validate,!0),void n.click();e.requestSubmit?e.requestSubmit(n):e.submit()}}}])&&a(r.prototype,o),i&&a(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,o,i}();window.HCaptchaMainObject=window.HCaptchaMainObject||{};const c=u;function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function l(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,d(r.key),r)}}function d(t){var e=function(t,e){if("object"!=s(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=s(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==s(e)?e:e+""}function f(t,e,n){return e=p(e),function(t,e){if(e&&("object"==s(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,m()?Reflect.construct(e,n||[],p(t).constructor):e.apply(t,n))}function h(t){var e="function"==typeof Map?new Map:void 0;return h=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(m())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var o=new(t.bind.apply(t,r));return n&&v(o,n.prototype),o}(t,arguments,p(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),v(n,t)},h(t)}function m(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(m=function(){return!!t})()}function v(t,e){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},v(t,e)}function p(t){return p=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},p(t)}const y=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),f(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&v(t,e)}(e,t),n=e,(r=[{key:"connectedCallback",value:function(){window.hCaptcha.addSyncedEventListener(window.hCaptchaBindEvents)}}])&&l(n.prototype,r),o&&l(n,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,o}(h(HTMLElement));var b=new c;window.hCaptcha=b,window.hCaptchaGetWidgetId=function(t){b.getWidgetId(t)},window.hCaptchaReset=function(t){b.reset(t)},window.hCaptchaBindEvents=function(){b.bindEvents()},window.hCaptchaSubmit=function(){b.submit()},window.hCaptchaOnLoad=function(){b.addSyncedEventListener(function(){document.dispatchEvent(new CustomEvent("hCaptchaBeforeBindEvents")),window.hCaptchaBindEvents(),document.dispatchEvent(new CustomEvent("hCaptchaLoaded"))})},window.customElements.define("h-captcha",y),document.dispatchEvent(new CustomEvent("hCaptchaBeforeAPI"))})();1 (()=>{"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=r(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var o=0,a=function(){};return{s:a,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return u=t.done,t},e:function(t){c=!0,i=t},f:function(){try{u||null==n.return||n.return()}finally{if(c)throw i}}}}function n(t){return function(t){if(Array.isArray(t))return o(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||r(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(t,e){if(t){if("string"==typeof t)return o(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,i(r.key),r)}}function i(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,n||"default");if("object"!=t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==t(n)?n:n+""}var u=function(){return r=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.foundForms=[],this.params=null,this.observingDarkMode=!1,this.observingPasswordManagers=!1,this.darkElement=null,this.darkClass=null,this.callback=this.callback.bind(this),this.validate=this.validate.bind(this),this.addedDCLCallbacks=new Set},(o=[{key:"generateID",value:function(){var t=function(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)};return t()+"-"+t()+"-"+t()+"-"+t()}},{key:"getFoundFormById",value:function(t){var e;return null!==(e=this.foundForms.filter(function(e){return t===e.hCaptchaId})[0])&&void 0!==e?e:null}},{key:"getWidgetId",value:function(t){var e,n,r;if(void 0===t)return"";var o=null!==(e=null===(n=t.closest(this.formSelector))||void 0===n||null===(n=n.dataset)||void 0===n?void 0:n.hCaptchaId)&&void 0!==e?e:"";if(!o)return"";var a=this.getFoundFormById(o);return null!==(r=null==a?void 0:a.widgetId)&&void 0!==r?r:""}},{key:"reset",value:function(t){var e=this.getWidgetId(t);e&&hcaptcha.reset(e)}},{key:"isSameOrDescendant",value:function(t,e){for(var n=e;n;){if(n===t)return!0;n=n.parentElement}return!1}},{key:"getCurrentForm",value:function(t){var e,n=t.currentTarget.closest(this.formSelector),r=this.getFoundFormById(null==n||null===(e=n.dataset)||void 0===e?void 0:e.hCaptchaId),o=null==r?void 0:r.submitButtonElement,a=null==r?void 0:r.widgetId;if(a&&this.isSameOrDescendant(o,t.target))return t.preventDefault(),t.stopPropagation(),{formElement:n,submitButtonElement:o,widgetId:a}}},{key:"validate",value:function(t){if(this.currentForm=this.getCurrentForm(t),this.currentForm){var e=this.currentForm,n=e.formElement,r=e.widgetId,o=n.querySelector(this.responseSelector),a=o?o.value:"";""===a?hcaptcha.execute(r,{async:!1}):this.callback(a)}}},{key:"isValidated",value:function(){return void 0!==this.currentForm}},{key:"getForms",value:function(){return n(document.querySelectorAll(this.formSelector))}},{key:"getParams",value:function(){if(null!==this.params)return this.params;var t;try{var e,n;t=JSON.parse(wp.hooks.applyFilters("hcaptcha.params",null!==(e=null===(n=HCaptchaMainObject)||void 0===n?void 0:n.params)&&void 0!==e?e:""))}catch(e){t={}}return t.callback=this.callback,t}},{key:"setParams",value:function(t){this.params=t}},{key:"setDarkData",value:function(){var t={"twenty-twenty-one":{darkStyleId:"twenty-twenty-one-style-css",darkElement:document.body,darkClass:"is-dark-theme"},"wp-dark-mode":{darkStyleId:"wp-dark-mode-frontend-css",darkElement:document.documentElement,darkClass:"wp-dark-mode-active"},"droit-dark-mode":{darkStyleId:"dtdr-public-inline-css",darkElement:document.documentElement,darkClass:"drdt-dark-mode"}};t=wp.hooks.applyFilters("hcaptcha.darkData",t);for(var e=0,n=Object.values(t);e<n.length;e++){var r=n[e];if(document.getElementById(r.darkStyleId))return this.darkElement=r.darkElement,void(this.darkClass=r.darkClass)}}},{key:"observeDarkMode",value:function(){var t=this;this.observingDarkMode||(this.observingDarkMode=!0,"auto"!==this.getParams().theme)||(this.setDarkData(),this.darkElement&&this.darkClass&&new MutationObserver(function(n){var r,o=e(n);try{var a=function(){var e=r.value.oldValue,n=t.darkElement.getAttribute("class");e=e?e.split(" "):[],(n=n?n.split(" "):[]).filter(function(t){return!e.includes(t)}).concat(e.filter(function(t){return!n.includes(t)})).includes(t.darkClass)&&t.bindEvents()};for(o.s();!(r=o.n()).done;)a()}catch(t){o.e(t)}finally{o.f()}}).observe(this.darkElement,{attributes:!0,attributeOldValue:!0}))}},{key:"observePasswordManagers",value:function(){var t=this;if(!this.observingPasswordManagers){this.observingPasswordManagers=!0;var n=!1,r=new MutationObserver(function(o){n||(n=!0,requestAnimationFrame(function(){var a,i=e(o);try{for(i.s();!(a=i.n()).done;)if("childList"===a.value.type){var u=document.querySelector("com-1password-button"),c=document.querySelector("div[data-lastpass-icon-root]");if(u||c){r.disconnect(),t.foundForms.map(function(e){var n=e.hCaptchaId,r=e.submitButtonElement;if(!r)return e;var o=document.querySelector('[data-h-captcha-id="'.concat(n,'"]')).querySelector(".h-captcha"),a=o.dataset;return"invisible"===a.size||"true"===a.force||(o.dataset.force="true",r.addEventListener("click",t.validate,!0)),e});break}}}catch(t){i.e(t)}finally{i.f()}n=!1}))});r.observe(document.body,{childList:!0,subtree:!0})}}},{key:"getWidgetByToken",value:function(t){var e=n(document.querySelectorAll(this.responseSelector)).find(function(e){return e.value===t});return e?e.closest(".h-captcha"):null}},{key:"callback",value:function(t){document.dispatchEvent(new CustomEvent("hCaptchaSubmitted",{detail:{token:t}}));var e=this.getParams(),n=this.getWidgetByToken(t),r=n?n.dataset.force:null;("invisible"===e.size||"true"===r&&this.isValidated())&&this.submit()}},{key:"applyAutoTheme",value:function(t){if("auto"!==t.theme)return t;var e;if(t.theme="light",!this.darkElement)return t.theme=null!==(e=window)&&void 0!==e&&e.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",t;var n=this.darkElement.getAttribute("class");return(n=n||"").includes(this.darkClass)&&(t.theme="dark"),t}},{key:"render",value:function(e){this.observeDarkMode(),this.observePasswordManagers();var n,r,o=this.getParams();return"object"===t(o.theme)?null!==(n=null===(r=o)||void 0===r||null===(r=r.theme)||void 0===r||null===(r=r.component)||void 0===r||null===(r=r.checkbox)||void 0===r||null===(r=r.main)||void 0===r?void 0:r.fill)&&void 0!==n&&n&&(e.dataset.theme="custom"):o.theme=e.dataset.theme,o.size=e.dataset.size,o=this.applyAutoTheme(o),hcaptcha.render(e,o)}},{key:"addSyncedEventListener",value:function(t){if("loading"===document.readyState){if(this.addedDCLCallbacks.has(t))return;this.addedDCLCallbacks.add(t),window.addEventListener("DOMContentLoaded",t)}else t()}},{key:"moveHP",value:function(t){var e,r;if(t&&"1"!==(null==t||null===(e=t.dataset)||void 0===e?void 0:e.hpMoved)){t.dataset.hpMoved="1";var o=t.querySelector('input[id^="hcap_hp_"]');if(o){var a=n(t.querySelectorAll("input,select,textarea,button")).filter(function(t){return t!==o&&"hidden"!==t.type&&!t.closest(".h-captcha")});if(a.length){var i=a[Math.floor(Math.random()*a.length)];if(i&&i.parentNode){var u=null!==(r=o.getAttribute("id"))&&void 0!==r?r:"",c=u?t.querySelector('label[for="'.concat(u,'"]')):null,l=document.createDocumentFragment();c&&c.isConnected&&l.appendChild(c),l.appendChild(o),i.parentNode.insertBefore(l,i)}}}}}},{key:"addFSTToken",value:function(t){if(t){var e="hcap_fst_token",n=t.querySelector('input[type="hidden"][name="'.concat(e,'"]'));n||((n=document.createElement("input")).type="hidden",n.name=e),t.firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)}}},{key:"bindEvents",value:function(){var t=this;"undefined"!=typeof hcaptcha&&(this.formSelector=wp.hooks.applyFilters("hcaptcha.formSelector","form, section.cwginstock-subscribe-form, div.sdm_download_item, .gform_editor, #nf-builder, .wpforms-captcha-preview"),this.submitButtonSelector=wp.hooks.applyFilters("hcaptcha.submitButtonSelector",'*[type="submit"]:not(.quform-default-submit), #check_config, button[type="button"].ff-btn, a.et_pb_newsletter_button.et_pb_button, .forminator-button-submit, .frm_button_submit, a.sdm_download, .uagb-forms-main-submit-button'),this.responseSelector='textarea[name="h-captcha-response"]',this.getForms().map(function(e){var n=e.querySelector(".h-captcha");if(null===n)return e;if(n.classList.contains("hcaptcha-widget-id"))return e;t.moveHP(e),t.addFSTToken(e),n.innerHTML="";var r=t.generateID(),o=e.querySelectorAll(t.submitButtonSelector)[0],a=t.render(n);if(e.dataset.hCaptchaId=r,t.foundForms.push({hCaptchaId:r,submitButtonElement:o,widgetId:a}),!o)return e;var i=n.dataset;return"invisible"!==i.size&&"true"!==i.force||o.addEventListener("click",t.validate,!0),e},this))}},{key:"isAjaxSubmitButton",value:function(t){var e=t.getAttribute("type"),n="submit"!==(e=e?e.toLowerCase():"");return wp.hooks.applyFilters("hcaptcha.ajaxSubmitButton",n,t)}},{key:"submit",value:function(){if(this.currentForm){var t=this.currentForm,e=t.formElement,n=t.submitButtonElement;if("form"!==e.tagName.toLowerCase()||this.isAjaxSubmitButton(n))return n.removeEventListener("click",this.validate,!0),void n.click();e.requestSubmit?e.requestSubmit(n):e.submit()}}}])&&a(r.prototype,o),i&&a(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,o,i}();window.HCaptchaMainObject=window.HCaptchaMainObject||{};const c=u;function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function s(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,d(r.key),r)}}function d(t){var e=function(t,e){if("object"!=l(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=l(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==l(e)?e:e+""}function f(t,e,n){return e=v(e),function(t,e){if(e&&("object"==l(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,m()?Reflect.construct(e,n||[],v(t).constructor):e.apply(t,n))}function h(t){var e="function"==typeof Map?new Map:void 0;return h=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(m())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var o=new(t.bind.apply(t,r));return n&&p(o,n.prototype),o}(t,arguments,v(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),p(n,t)},h(t)}function m(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(m=function(){return!!t})()}function p(t,e){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},p(t,e)}function v(t){return v=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},v(t)}const y=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),f(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&p(t,e)}(e,t),n=e,(r=[{key:"connectedCallback",value:function(){window.hCaptcha.addSyncedEventListener(window.hCaptchaBindEvents)}}])&&s(n.prototype,r),o&&s(n,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,o}(h(HTMLElement));var b=new c;window.hCaptcha=b,window.hCaptchaGetWidgetId=function(t){b.getWidgetId(t)},window.hCaptchaReset=function(t){b.reset(t)},window.hCaptchaBindEvents=function(){document.dispatchEvent(new CustomEvent("hCaptchaBeforeBindEvents")),b.bindEvents(),document.dispatchEvent(new CustomEvent("hCaptchaAfterBindEvents"))},window.hCaptchaSubmit=function(){b.submit()},window.hCaptchaOnLoad=function(){b.addSyncedEventListener(function(){window.hCaptchaBindEvents(),document.dispatchEvent(new CustomEvent("hCaptchaLoaded",{cancelable:!0}))})},window.customElements.define("h-captcha",y),document.dispatchEvent(new CustomEvent("hCaptchaBeforeAPI"))})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-back-in-stock-notifier.min.js
r3339595 r3359717 1 (()=>{"use strict";var t={2981:(t,e, r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function a(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var a=r.call(t,e||"default");if("object"!=n(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==n(e)?e:e+""}r.d(e,{d:()=>i});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,n=[{key:"addHCaptchaData",value:function(e,r,n,a){var o,i=null!==(o=e.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(r))){var c=t.getHCaptchaData(a,n);e.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+n+"="+c.nonce}}},{key:"getHCaptchaData",value:function(t,e){var r=t.find('[name="h-captcha-response"]').val();r=r||"";var n=t.find('[name="hcaptcha-widget-id"]').val();n=n||"";var a=t.find('[name="'+e+'"]').val();return{response:r,id:n,nonce:a=a||""}}}],(r=null)&&a(e.prototype,r),n&&a(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,n}()}},e={};function r(n){var a=e[n];if(void 0!==a)return a.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var n,a=r(2981);(n=jQuery).ajaxPrefilter(function(t){a.d.addHCaptchaData(t,"cwginstock_product_subscribe","hcaptcha_back_in_stock_notifier_nonce",n(".cwginstock-subscribe-form"))}),jQuery(document).on("ajaxSuccess",function(t,e,r){var n=new URLSearchParams(r.data);"cwg_trigger_popup_ajax"===n.get("action")&&(document.querySelector('input[name="cwg-product-id"][value="'+n.get("product_id")+'"]')&&window.hCaptchaBindEvents())})})();1 (()=>{"use strict";var t={2981:(t,e,n)=>{function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function r(t,e){for(var n=0;n<e.length;n++){var a=e[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,o(a.key),a)}}function o(t){var e=function(t,e){if("object"!=a(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==a(e)?e:e+""}n.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,a=[{key:"addHCaptchaData",value:function(e,n,a,r){var o,c=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof c&&c.startsWith("action=".concat(n))&&(e.data+=t.getHCaptchaData(r,a))}},{key:"getHCaptchaData",value:function(t,e){for(var n,a="",r=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(n=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==n?n:"","hcap_hp_sig","hcap_fst_token"];r<o.length;r++){var c,i=o[r];if(i){var u=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";a+="&".concat(i,"=").concat(u)}}return a}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:n}}))}catch(t){}var r=t.apply(void 0,n);return r.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:n,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:n,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:n}}))}catch(t){}}),r};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(n=null)&&r(e.prototype,n),a&&r(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,a}()}},e={};function n(a){var r=e[a];if(void 0!==r)return r.exports;var o=e[a]={exports:{}};return t[a](o,o.exports,n),o.exports}n.d=(t,e)=>{for(var a in e)n.o(e,a)&&!n.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var a,r=n(2981);(a=jQuery).ajaxPrefilter(function(t){r.d.addHCaptchaData(t,"cwginstock_product_subscribe","hcaptcha_back_in_stock_notifier_nonce",a(".cwginstock-subscribe-form"))}),jQuery(document).on("ajaxSuccess",function(t,e,n){var a=new URLSearchParams(n.data);"cwg_trigger_popup_ajax"===a.get("action")&&(document.querySelector('input[name="cwg-product-id"][value="'+a.get("product_id")+'"]')&&window.hCaptchaBindEvents())})})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-beaver-builder.min.js
r3339595 r3359717 1 (()=>{"use strict";var t={2981:(t,e, r)=>{function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function n(t,e){for(var r=0;r<e.length;r++){var a=e[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,o(a.key),a)}}function o(t){var e=function(t,e){if("object"!=a(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==a(e)?e:e+""}r.d(e,{d:()=>i});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,a=[{key:"addHCaptchaData",value:function(e,r,a,n){var o,i=null!==(o=e.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(r))){var c=t.getHCaptchaData(n,a);e.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+a+"="+c.nonce}}},{key:"getHCaptchaData",value:function(t,e){var r=t.find('[name="h-captcha-response"]').val();r=r||"";var a=t.find('[name="hcaptcha-widget-id"]').val();a=a||"";var n=t.find('[name="'+e+'"]').val();return{response:r,id:a,nonce:n=n||""}}}],(r=null)&&n(e.prototype,r),a&&n(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,a}()}},e={};function r(a){var n=e[a];if(void 0!==n)return n.exports;var o=e[a]={exports:{}};return t[a](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var a in e)r.o(e,a)&&!r.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var a,n=r(2981);wp.hooks.addFilter("hcaptcha.formSelector","hcaptcha",function(t){return t+", div.fl-login-form"}),wp.hooks.addFilter("hcaptcha.submitButtonSelector","hcaptcha",function(t){return t+", a.fl-button"}),(a=jQuery).ajaxPrefilter(function(t){var e,r=null!==(e=t.data)&&void 0!==e?e:"";if("string"==typeof r){var o=new URLSearchParams(r).get("node_id"),i=a("[data-node="+o+"]");n.d.addHCaptchaData(t,"fl_builder_email","hcaptcha_beaver_builder_nonce",i),n.d.addHCaptchaData(t,"fl_builder_login_form_submit","hcaptcha_login_nonce",i)}})})();1 (()=>{"use strict";var t={2981:(t,e,a)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function r(t,e){for(var a=0;a<e.length;a++){var n=e[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var r=a.call(t,e||"default");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==n(e)?e:e+""}a.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,n=[{key:"addHCaptchaData",value:function(e,a,n,r){var o,c=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof c&&c.startsWith("action=".concat(a))&&(e.data+=t.getHCaptchaData(r,n))}},{key:"getHCaptchaData",value:function(t,e){for(var a,n="",r=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(a=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==a?a:"","hcap_hp_sig","hcap_fst_token"];r<o.length;r++){var c,i=o[r];if(i){var u=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";n+="&".concat(i,"=").concat(u)}}return n}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:a}}))}catch(t){}var r=t.apply(void 0,a);return r.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:a,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:a,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:a}}))}catch(t){}}),r};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(a=null)&&r(e.prototype,a),n&&r(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,a,n}()}},e={};function a(n){var r=e[n];if(void 0!==r)return r.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,a),o.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);var n,r=a(2981);wp.hooks.addFilter("hcaptcha.formSelector","hcaptcha",function(t){return t+", div.fl-login-form"}),wp.hooks.addFilter("hcaptcha.submitButtonSelector","hcaptcha",function(t){return t+", a.fl-button"}),(n=jQuery).ajaxPrefilter(function(t){var e,a=null!==(e=t.data)&&void 0!==e?e:"";if("string"==typeof a){var o=new URLSearchParams(a).get("node_id"),c=n("[data-node="+o+"]");r.d.addHCaptchaData(t,"fl_builder_email","hcaptcha_beaver_builder_nonce",c),r.d.addHCaptchaData(t,"fl_builder_login_form_submit","hcaptcha_login_nonce",c)}})})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-brizy.min.js
r3339595 r3359717 1 (()=>{"use strict";var t={2981:(t,e, r)=>{function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function n(t,e){for(var r=0;r<e.length;r++){var a=e[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,o(a.key),a)}}function o(t){var e=function(t,e){if("object"!=a(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==a(e)?e:e+""}r.d(e,{d:()=>i});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,a=[{key:"addHCaptchaData",value:function(e,r,a,n){var o,i=null!==(o=e.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(r))){var c=t.getHCaptchaData(n,a);e.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+a+"="+c.nonce}}},{key:"getHCaptchaData",value:function(t,e){var r=t.find('[name="h-captcha-response"]').val();r=r||"";var a=t.find('[name="hcaptcha-widget-id"]').val();a=a||"";var n=t.find('[name="'+e+'"]').val();return{response:r,id:a,nonce:n=n||""}}}],(r=null)&&n(e.prototype,r),a&&n(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,a}()}},e={};function r(a){var n=e[a];if(void 0!==n)return n.exports;var o=e[a]={exports:{}};return t[a](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var a in e)r.o(e,a)&&!r.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var a,n=r(2981);(a=jQuery).ajaxPrefilter(function(t){if("brizy_submit_form"===new URLSearchParams(t.url.split("?")[1]).get("action")){var e=JSON.parse(t.data.get("data")),r="hcaptcha_brizy_nonce",o=a(".brz-form"),i=n.d.getHCaptchaData(o,r);e.push({name:"h-captcha-response",value:i.response,required:!1}),e.push({name:r,value:i.nonce,required:!1}),t.data.set("data",JSON.stringify(e))}})})();1 (()=>{"use strict";var t={2981:(t,e,a)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function r(t,e){for(var a=0;a<e.length;a++){var n=e[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var r=a.call(t,e||"default");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==n(e)?e:e+""}a.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,n=[{key:"addHCaptchaData",value:function(e,a,n,r){var o,c=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof c&&c.startsWith("action=".concat(a))&&(e.data+=t.getHCaptchaData(r,n))}},{key:"getHCaptchaData",value:function(t,e){for(var a,n="",r=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(a=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==a?a:"","hcap_hp_sig","hcap_fst_token"];r<o.length;r++){var c,i=o[r];if(i){var u=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";n+="&".concat(i,"=").concat(u)}}return n}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:a}}))}catch(t){}var r=t.apply(void 0,a);return r.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:a,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:a,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:a}}))}catch(t){}}),r};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(a=null)&&r(e.prototype,a),n&&r(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,a,n}()}},e={};function a(n){var r=e[n];if(void 0!==r)return r.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,a),o.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);var n,r=a(2981);(n=jQuery).ajaxPrefilter(function(t){if("brizy_submit_form"===new URLSearchParams(t.url.split("?")[1]).get("action")){var e=JSON.parse(t.data.get("data")),a="hcaptcha_brizy_nonce",o=n(".brz-form"),c=r.d.getHCaptchaData(o,a);e.push({name:"h-captcha-response",value:c.response,required:!1}),e.push({name:a,value:c.nonce,required:!1}),t.data.set("data",JSON.stringify(e))}})})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-customer-reviews.js
r3339595 r3359717 15 15 'hcaptcha', 16 16 ( formSelector ) => { 17 return formSelector + ', div#tab-reviews, div#tab-cr_qna, div.cr-qna-list-inl-answ ';17 return formSelector + ', div#tab-reviews, div#tab-cr_qna, div.cr-qna-list-inl-answ, div.cr-qna-new-q-form'; 18 18 }, 19 19 ); … … 34 34 'click', 35 35 '#tab-title-reviews a, #tab-title-cr_qna a, ' + 36 'button.cr-review-form-continue.cr-review-form-error', 36 'button.cr-review-form-continue.cr-review-form-error, ' + 37 'button.cr-qna-ask-button', 37 38 function() { 38 39 hCaptchaBindEvents(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-customer-reviews.min.js
r3339595 r3359717 1 (()=>{"use strict";var t={2981:(t,e, r)=>{function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function n(t,e){for(var r=0;r<e.length;r++){var a=e[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,o(a.key),a)}}function o(t){var e=function(t,e){if("object"!=a(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==a(e)?e:e+""}r.d(e,{d:()=>i});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,a=[{key:"addHCaptchaData",value:function(e,r,a,n){var o,i=null!==(o=e.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(r))){var c=t.getHCaptchaData(n,a);e.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+a+"="+c.nonce}}},{key:"getHCaptchaData",value:function(t,e){var r=t.find('[name="h-captcha-response"]').val();r=r||"";var a=t.find('[name="hcaptcha-widget-id"]').val();a=a||"";var n=t.find('[name="'+e+'"]').val();return{response:r,id:a,nonce:n=n||""}}}],(r=null)&&n(e.prototype,r),a&&n(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,a}()}},e={};function r(a){var n=e[a];if(void 0!==n)return n.exports;var o=e[a]={exports:{}};return t[a](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var a in e)r.o(e,a)&&!r.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var a=r(2981),n=window.hCaptchaCustomerReviews||function(t,e,r){var n={init:function(){wp.hooks.addFilter("hcaptcha.formSelector","hcaptcha",function(t){return t+", div#tab-reviews, div#tab-cr_qna, div.cr-qna-list-inl-answ"}),wp.hooks.addFilter("hcaptcha.submitButtonSelector","hcaptcha",function(t){return t+", button.cr-review-form-submit"}),r(n.ready)},ready:function(){r(t).on("click","#tab-title-reviews a, #tab-title-cr_qna a, button.cr-review-form-continue.cr-review-form-error",function(){hCaptchaBindEvents()}),r.ajaxPrefilter(function(t){var e,n=null!==(e=t.data)&&void 0!==e?e:"";if("string"==typeof n){var o,i=new URLSearchParams(n),c=i.get("action");switch(c){case"cr_submit_review":o=r("#review_form");break;case"cr_new_qna":var u=i.get("questionID");o=r(u?'[data-question="'.concat(u,'"]'):"#cr_qna");break;default:return}a.d.addHCaptchaData(t,c,"hcaptcha_customer_reviews_nonce",o)}})}};return n}(document,window,jQuery);window.hCaptchaCustomerReviews=n,n.init()})();1 (()=>{"use strict";var t={2981:(t,e,n)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,o(r.key),r)}}function o(t){var e=function(t,e){if("object"!=r(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var a=n.call(t,e||"default");if("object"!=r(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==r(e)?e:e+""}n.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,r=[{key:"addHCaptchaData",value:function(e,n,r,a){var o,c=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof c&&c.startsWith("action=".concat(n))&&(e.data+=t.getHCaptchaData(a,r))}},{key:"getHCaptchaData",value:function(t,e){for(var n,r="",a=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(n=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==n?n:"","hcap_hp_sig","hcap_fst_token"];a<o.length;a++){var c,i=o[a];if(i){var u=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";r+="&".concat(i,"=").concat(u)}}return r}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:n}}))}catch(t){}var a=t.apply(void 0,n);return a.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:n,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:n,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:n}}))}catch(t){}}),a};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(n=null)&&a(e.prototype,n),r&&a(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,r}()}},e={};function n(r){var a=e[r];if(void 0!==a)return a.exports;var o=e[r]={exports:{}};return t[r](o,o.exports,n),o.exports}n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var r=n(2981),a=window.hCaptchaCustomerReviews||function(t,e,n){var a={init:function(){wp.hooks.addFilter("hcaptcha.formSelector","hcaptcha",function(t){return t+", div#tab-reviews, div#tab-cr_qna, div.cr-qna-list-inl-answ, div.cr-qna-new-q-form"}),wp.hooks.addFilter("hcaptcha.submitButtonSelector","hcaptcha",function(t){return t+", button.cr-review-form-submit"}),n(a.ready)},ready:function(){n(t).on("click","#tab-title-reviews a, #tab-title-cr_qna a, button.cr-review-form-continue.cr-review-form-error, button.cr-qna-ask-button",function(){hCaptchaBindEvents()}),n.ajaxPrefilter(function(t){var e,a=null!==(e=t.data)&&void 0!==e?e:"";if("string"==typeof a){var o,c=new URLSearchParams(a),i=c.get("action");switch(i){case"cr_submit_review":o=n("#review_form");break;case"cr_new_qna":var u=c.get("questionID");o=n(u?'[data-question="'.concat(u,'"]'):"#cr_qna");break;default:return}r.d.addHCaptchaData(t,i,"hcaptcha_customer_reviews_nonce",o)}})}};return a}(document,window,jQuery);window.hCaptchaCustomerReviews=a,a.init()})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-divi-email-optin.js
r3064004 r3359717 6 6 // noinspection JSCheckFunctionSignatures 7 7 $.ajaxPrefilter( function( options ) { 8 // eslint-disable-next-line @wordpress/no-global-active-element 9 let $form = $( document.activeElement ).closest( 'form' ); 10 11 $form = $form.length ? $form : $( '.et_pb_newsletter_form form' ); 12 8 13 helper.addHCaptchaData( 9 14 options, 10 15 'et_pb_submit_subscribe_form', 11 16 'hcaptcha_divi_email_optin_nonce', 12 $ ( '.et_pb_newsletter_form form' )17 $form 13 18 ); 14 19 } ); 20 21 $( document ).on( 'ajaxSuccess', function( event, xhr, settings ) { 22 const params = new URLSearchParams( settings.data ); 23 24 if ( params.get( 'action' ) !== 'et_pb_submit_subscribe_form' ) { 25 return; 26 } 27 28 window.hCaptchaBindEvents(); 29 } ); 15 30 }( jQuery ) ); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-divi-email-optin.min.js
r3339595 r3359717 1 (()=>{"use strict";var t={2981:(t,e, r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function a(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var a=r.call(t,e||"default");if("object"!=n(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==n(e)?e:e+""}r.d(e,{d:()=>i});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,n=[{key:"addHCaptchaData",value:function(e,r,n,a){var o,i=null!==(o=e.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(r))){var c=t.getHCaptchaData(a,n);e.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+n+"="+c.nonce}}},{key:"getHCaptchaData",value:function(t,e){var r=t.find('[name="h-captcha-response"]').val();r=r||"";var n=t.find('[name="hcaptcha-widget-id"]').val();n=n||"";var a=t.find('[name="'+e+'"]').val();return{response:r,id:n,nonce:a=a||""}}}],(r=null)&&a(e.prototype,r),n&&a(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,n}()}},e={};function r(n){var a=e[n];if(void 0!==a)return a.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var n,a=r(2981);(n=jQuery).ajaxPrefilter(function(t){a.d.addHCaptchaData(t,"et_pb_submit_subscribe_form","hcaptcha_divi_email_optin_nonce",n(".et_pb_newsletter_form form"))})})();1 (()=>{"use strict";var t={2981:(t,e,n)=>{function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function r(t,e){for(var n=0;n<e.length;n++){var a=e[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,o(a.key),a)}}function o(t){var e=function(t,e){if("object"!=a(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==a(e)?e:e+""}n.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,a=[{key:"addHCaptchaData",value:function(e,n,a,r){var o,c=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof c&&c.startsWith("action=".concat(n))&&(e.data+=t.getHCaptchaData(r,a))}},{key:"getHCaptchaData",value:function(t,e){for(var n,a="",r=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(n=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==n?n:"","hcap_hp_sig","hcap_fst_token"];r<o.length;r++){var c,i=o[r];if(i){var u=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";a+="&".concat(i,"=").concat(u)}}return a}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:n}}))}catch(t){}var r=t.apply(void 0,n);return r.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:n,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:n,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:n}}))}catch(t){}}),r};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(n=null)&&r(e.prototype,n),a&&r(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,a}()}},e={};function n(a){var r=e[a];if(void 0!==r)return r.exports;var o=e[a]={exports:{}};return t[a](o,o.exports,n),o.exports}n.d=(t,e)=>{for(var a in e)n.o(e,a)&&!n.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var a,r=n(2981);(a=jQuery).ajaxPrefilter(function(t){var e=a(document.activeElement).closest("form");e=e.length?e:a(".et_pb_newsletter_form form"),r.d.addHCaptchaData(t,"et_pb_submit_subscribe_form","hcaptcha_divi_email_optin_nonce",e)}),a(document).on("ajaxSuccess",function(t,e,n){"et_pb_submit_subscribe_form"===new URLSearchParams(n.data).get("action")&&window.hCaptchaBindEvents()})})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-helper.js
r3114572 r3359717 1 /* global jQuery */ 2 1 3 export class helper { 2 4 static addHCaptchaData( options, action, nonceName, $node ) { … … 7 9 } 8 10 9 const hCaptchaData = helper.getHCaptchaData( $node, nonceName ); 10 11 options.data += 12 '&h-captcha-response=' + hCaptchaData.response + 13 '&hcaptcha-widget-id=' + hCaptchaData.id + 14 '&' + nonceName + '=' + hCaptchaData.nonce; 11 options.data += helper.getHCaptchaData( $node, nonceName ); 15 12 } 16 13 14 /** 15 * Get hCaptcha data from a node. 16 * 17 * @param {jQuery} $node Node. 18 * @param {string} nonceName Nonce name. 19 * @return {string} Data. 20 */ 17 21 static getHCaptchaData( $node, nonceName ) { 18 let response = $node.find( '[name="h-captcha-response"]' ).val(); 19 response = response ? response : ''; 20 let id = $node.find( '[name="hcaptcha-widget-id"]' ).val(); 21 id = id ? id : ''; 22 let nonce = $node.find( '[name="' + nonceName + '"]' ).val(); 23 nonce = nonce ? nonce : ''; 22 const hpName = $node.find( '[name^="hcap_hp_"]' ).first().attr( 'name' ) ?? ''; 23 const names = [ 'h-captcha-response', 'hcaptcha-widget-id', nonceName, hpName, 'hcap_hp_sig', 'hcap_fst_token' ]; 24 24 25 return { response, id, nonce }; 25 let data = ''; 26 27 for ( const name of names ) { 28 if ( ! name ) { 29 continue; 30 } 31 32 const val = $node.find( `[name="${ name }"]` ).first().val() ?? ''; 33 34 data += `&${ name }=${ val }`; 35 } 36 37 return data; 38 } 39 40 /** 41 * Installs a composable wrapper around window.fetch and dispatches custom events. 42 * - Does not alter request/response behavior. 43 * - Returns the original Promise from fetch. 44 * - Safe to call multiple times (idempotent). 45 */ 46 static installFetchEvents() { 47 if ( typeof window === 'undefined' || typeof window.fetch !== 'function' ) { 48 return; 49 } 50 51 // Prevent double wrapping. 52 if ( window.__hcapFetchWrapped ) { 53 return; 54 } 55 56 ( function( prevFetch ) { 57 window.fetch = function( ...args ) { 58 // Fire "before" event prior to the actual call. 59 try { 60 window.dispatchEvent( 61 new CustomEvent( 'hCaptchaFetch:before', { detail: { args } } ) 62 ); 63 } catch ( e ) { 64 // Never break the chain because of event listener errors. 65 } 66 67 const p = prevFetch( ...args ); 68 69 // Side-subscribe without altering the returned Promise. 70 p.then( ( response ) => { 71 try { 72 window.dispatchEvent( 73 new CustomEvent( 'hCaptchaFetch:success', { 74 detail: { args, response: response.clone() }, 75 } ) 76 ); 77 } catch ( e ) { 78 } 79 } ).catch( ( error ) => { 80 try { 81 window.dispatchEvent( 82 new CustomEvent( 'hCaptchaFetch:error', { detail: { args, error } } ) 83 ); 84 } catch ( e ) { 85 } 86 } ).finally( () => { 87 try { 88 window.dispatchEvent( 89 new CustomEvent( 'hCaptchaFetch:complete', { detail: { args } } ) 90 ); 91 } catch ( e ) { 92 } 93 } ); 94 95 return p; 96 }; 97 }( window.fetch ) ); 98 99 // Mark as wrapped (non-enumerable if possible). 100 try { 101 Object.defineProperty( window, '__hcapFetchWrapped', { 102 value: true, 103 configurable: true, 104 } ); 105 } catch ( e ) { 106 // Fallback if defineProperty is restricted. 107 window.__hcapFetchWrapped = true; 108 } 26 109 } 27 110 } -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-nf.js
r3200161 r3359717 1 /** 2 * Ninja Forms controller file. 3 */ 1 /* global Marionette, nfRadio, jQuery */ 4 2 5 /* global Marionette, nfRadio */ 3 const hCaptchaNF = window.hCaptchaNF || ( function( window, $ ) { 4 const app = { 5 init() { 6 // Register Ajax submit button. 7 wp.hooks.addFilter( 8 'hcaptcha.ajaxSubmitButton', 9 'hcaptcha', 10 app.isAjaxSubmitButton 11 ); 6 12 7 wp.hooks.addFilter( 8 'hcaptcha.ajaxSubmitButton', 9 'hcaptcha', 10 ( isAjaxSubmitButton, submitButtonElement ) => { 11 if ( submitButtonElement.classList.contains( 'nf-element' ) ) { 12 return true; 13 } 14 15 return isAjaxSubmitButton; 16 } 17 ); 18 19 document.addEventListener( 'DOMContentLoaded', function() { 20 const HCaptchaFieldController = Marionette.Object.extend( { 21 initialize() { 22 // On the Form Submission's field validation. 23 const submitChannel = nfRadio.channel( 'submit' ); 24 this.listenTo( submitChannel, 'validate:field', this.updateHcaptcha ); 25 this.listenTo( submitChannel, 'validate:field', this.updateHcaptcha ); 26 27 // On the Field's model value change. 28 const fieldsChannel = nfRadio.channel( 'fields' ); 29 this.listenTo( fieldsChannel, 'change:modelValue', this.updateHcaptcha ); 13 document.addEventListener( 'DOMContentLoaded', app.onDomReady ); 14 $.ajaxPrefilter( this.ajaxPrefilter() ); 15 $( document ).on( 'ajaxSuccess', app.ajaxSuccessHandler ); 30 16 }, 31 17 32 updateHcaptcha( model ) { 33 // Only validate a specific fields type. 34 if ( 'hcaptcha-for-ninja-forms' !== model.get( 'type' ) ) { 18 isAjaxSubmitButton( isAjaxSubmitButton, submitButtonElement ) { 19 if ( submitButtonElement.classList.contains( 'nf-element' ) ) { 20 return true; 21 } 22 23 return isAjaxSubmitButton; 24 }, 25 26 // Initialize Ninja Forms field controller listeners when DOM is ready. 27 onDomReady() { 28 // Create a Marionette controller mirroring the original behavior but scoped here. 29 const HCaptchaFieldController = Marionette.Object.extend( { 30 initialize() { 31 // On the Form Submission's field validation. 32 const submitChannel = nfRadio.channel( 'submit' ); 33 this.listenTo( submitChannel, 'validate:field', this.updateHcaptcha ); 34 35 // On the Field's model value change. 36 const fieldsChannel = nfRadio.channel( 'fields' ); 37 this.listenTo( fieldsChannel, 'change:modelValue', this.updateHcaptcha ); 38 }, 39 40 updateHcaptcha( model ) { 41 // Only validate a specific fields type. 42 if ( 'hcaptcha-for-ninja-forms' !== model.get( 'type' ) ) { 43 return; 44 } 45 46 // Check if the Model has a value. 47 if ( model.get( 'value' ) ) { 48 // Remove Error from Model. 49 nfRadio.channel( 'fields' ).request( 50 'remove:error', 51 model.get( 'id' ), 52 'required-error' 53 ); 54 } else { 55 const fieldId = model.get( 'id' ); 56 57 /** 58 * @type {HTMLTextAreaElement} 59 */ 60 const hcapResponse = document.querySelector( 61 `div[data-field-id="${ fieldId }"] textarea[name="h-captcha-response"]` 62 ); 63 64 model.set( 'value', hcapResponse?.value ); 65 } 66 }, 67 } ); 68 69 // Instantiate our custom field's controller, defined above. 70 window.hCaptchaFieldController = new HCaptchaFieldController(); 71 }, 72 73 // Register Ajax prefilter for NF submissions. 74 ajaxPrefilter() { 75 return function( options ) { 76 const data = options.data ?? ''; 77 78 if ( typeof data !== 'string' ) { 79 return; 80 } 81 82 const urlParams = new URLSearchParams( data ); 83 const action = urlParams.get( 'action' ); 84 85 if ( 'nf_ajax_submit' !== action ) { 86 return; 87 } 88 89 const widgetName = 'hcaptcha-widget-id'; 90 const tokenName = 'hcap_fst_token'; 91 const sigName = 'hcap_hp_sig'; 92 93 const formId = JSON.parse( urlParams.get( 'formData' ) ).id; 94 const $form = $( `#nf-form-${ formId }-cont` ); 95 const widget = $form.find( `[name="${ widgetName }"]` ).val() ?? ''; 96 const token = $form.find( `[name="${ tokenName }"]` ).val() ?? ''; 97 const sig = $form.find( `[name="${ sigName }"]` ).val() ?? ''; 98 const hcapHp = $form.find( `[id^="hcap_hp_"]` ); 99 100 urlParams.set( widgetName, widget ); 101 urlParams.set( tokenName, token ); 102 urlParams.set( sigName, sig ); 103 urlParams.set( hcapHp.attr( 'id' ) ?? '', hcapHp.val() ?? '' ); 104 105 options.data = urlParams.toString(); 106 }; 107 }, 108 109 // jQuery ajaxSuccess handler. 110 ajaxSuccessHandler( event, xhr, settings ) { 111 const data = settings.data ?? ''; 112 113 if ( typeof data !== 'string' ) { 35 114 return; 36 115 } 37 116 38 // Check if the Model has a value. 39 if ( model.get( 'value' ) ) { 40 // Remove Error from Model. 41 nfRadio.channel( 'fields' ).request( 42 'remove:error', 43 model.get( 'id' ), 44 'required-error' 45 ); 46 } else { 47 const fieldId = model.get( 'id' ); 117 const action = new URLSearchParams( data ).get( 'action' ); 48 118 49 /** 50 * @type {HTMLTextAreaElement} 51 */ 52 const hcapResponse = document.querySelector( 53 '.h-captcha[data-fieldId="' + fieldId + '"] textarea[name="h-captcha-response"]' 54 ); 119 if ( 'nf_ajax_submit' !== action ) { 120 return; 121 } 55 122 56 model.set( 'value', hcapResponse.value ); 57 } 123 window.hCaptchaBindEvents(); 58 124 }, 59 } );125 }; 60 126 61 // Instantiate our custom field's controller, defined above. 62 window.hCaptchaFieldController = new HCaptchaFieldController(); 63 } ); 127 return app; 128 }( window, jQuery ) ); 64 129 65 /* global jQuery */ 130 window.hCaptchaNF = hCaptchaNF; 66 131 67 ( function( $ ) { 68 // noinspection JSCheckFunctionSignatures 69 $.ajaxPrefilter( function( options ) { 70 const data = options.data ?? ''; 71 72 if ( ! ( typeof data === 'string' || data instanceof String ) ) { 73 return; 74 } 75 76 if ( ! data.startsWith( 'action=nf_ajax_submit' ) ) { 77 return; 78 } 79 80 const urlParams = new URLSearchParams( data ); 81 const formId = JSON.parse( urlParams.get( 'formData' ) ).id; 82 const $form = $( '#nf-form-' + formId + '-cont' ); 83 let id = $form.find( '[name="hcaptcha-widget-id"]' ).val(); 84 id = id ? id : ''; 85 options.data += '&hcaptcha-widget-id=' + id; 86 } ); 87 }( jQuery ) ); 132 hCaptchaNF.init(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-nf.min.js
r3339595 r3359717 1 (()=>{var a ;wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(a,t){return!!t.classList.contains("nf-element")||a}),document.addEventListener("DOMContentLoaded",function(){var a=Marionette.Object.extend({initialize:function(){var a=nfRadio.channel("submit");this.listenTo(a,"validate:field",this.updateHcaptcha),this.listenTo(a,"validate:field",this.updateHcaptcha);var t=nfRadio.channel("fields");this.listenTo(t,"change:modelValue",this.updateHcaptcha)},updateHcaptcha:function(a){if("hcaptcha-for-ninja-forms"===a.get("type"))if(a.get("value"))nfRadio.channel("fields").request("remove:error",a.get("id"),"required-error");else{var t=a.get("id"),e=document.querySelector('.h-captcha[data-fieldId="'+t+'"] textarea[name="h-captcha-response"]');a.set("value",e.value)}}});window.hCaptchaFieldController=new a}),(a=jQuery).ajaxPrefilter(function(t){var e,i=null!==(e=t.data)&&void 0!==e?e:"";if(("string"==typeof i||i instanceof String)&&i.startsWith("action=nf_ajax_submit")){var n=new URLSearchParams(i),c=JSON.parse(n.get("formData")).id,r=a("#nf-form-"+c+"-cont").find('[name="hcaptcha-widget-id"]').val();r=r||"",t.data+="&hcaptcha-widget-id="+r}})})();1 (()=>{var a=window.hCaptchaNF||function(a,t){var e={init:function(){wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",e.isAjaxSubmitButton),document.addEventListener("DOMContentLoaded",e.onDomReady),t.ajaxPrefilter(this.ajaxPrefilter()),t(document).on("ajaxSuccess",e.ajaxSuccessHandler)},isAjaxSubmitButton:function(a,t){return!!t.classList.contains("nf-element")||a},onDomReady:function(){var t=Marionette.Object.extend({initialize:function(){var a=nfRadio.channel("submit");this.listenTo(a,"validate:field",this.updateHcaptcha);var t=nfRadio.channel("fields");this.listenTo(t,"change:modelValue",this.updateHcaptcha)},updateHcaptcha:function(a){if("hcaptcha-for-ninja-forms"===a.get("type"))if(a.get("value"))nfRadio.channel("fields").request("remove:error",a.get("id"),"required-error");else{var t=a.get("id"),e=document.querySelector('div[data-field-id="'.concat(t,'"] textarea[name="h-captcha-response"]'));a.set("value",null==e?void 0:e.value)}}});a.hCaptchaFieldController=new t},ajaxPrefilter:function(){return function(a){var e,n,i,o,c,d,r=null!==(e=a.data)&&void 0!==e?e:"";if("string"==typeof r){var l=new URLSearchParams(r);if("nf_ajax_submit"===l.get("action")){var u="hcaptcha-widget-id",s="hcap_fst_token",f="hcap_hp_sig",h=JSON.parse(l.get("formData")).id,v=t("#nf-form-".concat(h,"-cont")),p=null!==(n=v.find('[name="'.concat(u,'"]')).val())&&void 0!==n?n:"",m=null!==(i=v.find('[name="'.concat(s,'"]')).val())&&void 0!==i?i:"",j=null!==(o=v.find('[name="'.concat(f,'"]')).val())&&void 0!==o?o:"",g=v.find('[id^="hcap_hp_"]');l.set(u,p),l.set(s,m),l.set(f,j),l.set(null!==(c=g.attr("id"))&&void 0!==c?c:"",null!==(d=g.val())&&void 0!==d?d:""),a.data=l.toString()}}}},ajaxSuccessHandler:function(t,e,n){var i,o=null!==(i=n.data)&&void 0!==i?i:"";"string"==typeof o&&("nf_ajax_submit"===new URLSearchParams(o).get("action")&&a.hCaptchaBindEvents())}};return e}(window,jQuery);window.hCaptchaNF=a,a.init()})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-passster.min.js
r3339595 r3359717 1 (()=>{"use strict";var t={2981:(t, a,e)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function n(t,a){for(var e=0;e<a.length;e++){var r=a[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,o(r.key),r)}}function o(t){var a=function(t,a){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,a||"default");if("object"!=r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===a?String:Number)(t)}(t,"string");return"symbol"==r(a)?a:a+""}e.d(a,{d:()=>i});var i=function(){function t(){!function(t,a){if(!(t instanceof a))throw new TypeError("Cannot call a class as a function")}(this,t)}return a=t,r=[{key:"addHCaptchaData",value:function(a,e,r,n){var o,i=null!==(o=a.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(e))){var c=t.getHCaptchaData(n,r);a.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+r+"="+c.nonce}}},{key:"getHCaptchaData",value:function(t,a){var e=t.find('[name="h-captcha-response"]').val();e=e||"";var r=t.find('[name="hcaptcha-widget-id"]').val();r=r||"";var n=t.find('[name="'+a+'"]').val();return{response:e,id:r,nonce:n=n||""}}}],(e=null)&&n(a.prototype,e),r&&n(a,r),Object.defineProperty(a,"prototype",{writable:!1}),a;var a,e,r}()}},a={};function e(r){var n=a[r];if(void 0!==n)return n.exports;var o=a[r]={exports:{}};return t[r](o,o.exports,e),o.exports}e.d=(t,a)=>{for(var r in a)e.o(a,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:a[r]})},e.o=(t,a)=>Object.prototype.hasOwnProperty.call(t,a);var r,n=e(2981);wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(t,a){return!!a.classList.contains("passster-submit")||t}),(r=jQuery).ajaxPrefilter(function(t){var a,e=null!==(a=t.data)&&void 0!==a?a:"";if("string"==typeof e){var o=new URLSearchParams(e).get("area");n.d.addHCaptchaData(t,"validate_input","hcaptcha_passster_nonce",r("[data-area="+o+"]").closest("form"))}})})();1 (()=>{"use strict";var t={2981:(t,e,a)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function r(t,e){for(var a=0;a<e.length;a++){var n=e[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var r=a.call(t,e||"default");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==n(e)?e:e+""}a.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,n=[{key:"addHCaptchaData",value:function(e,a,n,r){var o,c=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof c&&c.startsWith("action=".concat(a))&&(e.data+=t.getHCaptchaData(r,n))}},{key:"getHCaptchaData",value:function(t,e){for(var a,n="",r=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(a=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==a?a:"","hcap_hp_sig","hcap_fst_token"];r<o.length;r++){var c,i=o[r];if(i){var p=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";n+="&".concat(i,"=").concat(p)}}return n}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:a}}))}catch(t){}var r=t.apply(void 0,a);return r.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:a,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:a,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:a}}))}catch(t){}}),r};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(a=null)&&r(e.prototype,a),n&&r(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,a,n}()}},e={};function a(n){var r=e[n];if(void 0!==r)return r.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,a),o.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);var n,r=a(2981);wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(t,e){return!!e.classList.contains("passster-submit")||t}),(n=jQuery).ajaxPrefilter(function(t){var e,a=null!==(e=t.data)&&void 0!==e?e:"";if("string"==typeof a){var o=new URLSearchParams(a).get("area");r.d.addHCaptchaData(t,"validate_input","hcaptcha_passster_nonce",n("[data-area="+o+"]").closest("form"))}})})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-spectra.js
r3319903 r3359717 1 const { fetch: originalFetch } = window;1 import { helper } from './hcaptcha-helper.js'; 2 2 3 // Intercept Spectra form fetch to add hCaptcha data. 4 window.fetch = async ( ...args ) => { 5 const [ resource, config ] = args; 3 const hCaptchaSpectra = window.hCaptchaSpectra || ( function( window ) { 4 let style; 6 5 7 // @param {FormData} body 8 const body = config.body; 9 const blockId = body.get( 'block_id' ); 10 const inputName = 'h-captcha-response'; 11 const widgetName = 'hcaptcha-widget-id'; 12 const errorClassName = 'hcaptcha-error-message'; 13 const nonceName = 'hcaptcha_spectra_form_nonce'; 14 const formData = JSON.parse( body.get( 'form_data' ) ); 6 const app = { 7 init() { 8 helper.installFetchEvents(); 9 window.addEventListener( 'hCaptchaFetch:before', app.fetchBefore ); 10 window.addEventListener( 'hCaptchaFetch:success', app.fetchSuccess ); 11 window.addEventListener( 'hCaptchaFetch:complete', app.fetchComplete ); 12 }, 15 13 16 const selector = `[name="uagb-form-${ blockId }"]`; 17 const style = document.createElement( 'style' ); 14 fetchBefore( event ) { 15 const config = event?.detail?.args?.[ 1 ] ?? {}; 16 const body = config.body; 18 17 19 style.id = `hcaptcha-style-${ blockId }`; 20 style.textContent = ` 18 if ( ! ( body instanceof URLSearchParams ) ) { 19 return; 20 } 21 22 // @param {FormData} body 23 const blockId = body.get( 'block_id' ); 24 const block = document.querySelector( `.uagb-block-${ blockId }` ); 25 26 // Remove hCaptcha error message. 27 const errorMessage = block.querySelector( '.hcaptcha-error-message' ); 28 29 if ( errorMessage ) { 30 errorMessage.remove(); 31 } 32 33 const responseInputName = 'h-captcha-response'; 34 const formData = JSON.parse( body.get( 'form_data' ) ); 35 36 if ( 'uagb_process_forms' !== body.get( 'action' ) || formData.hasOwnProperty( responseInputName ) ) { 37 return; 38 } 39 40 const widgetName = 'hcaptcha-widget-id'; 41 const sigInputName = 'hcap_hp_sig'; 42 const tokenName = 'hcap_fst_token'; 43 const nonceName = 'hcaptcha_spectra_form_nonce'; 44 45 /** 46 * @type {HTMLInputElement} 47 */ 48 const widgetId = block.querySelector( `[name="${ widgetName }"]` ); 49 50 /** 51 * @type {HTMLTextAreaElement} 52 */ 53 const hCaptchaResponse = block.querySelector( `[name="${ responseInputName }"]` ); 54 55 /** 56 * @type {HTMLInputElement} 57 */ 58 const nonce = block.querySelector( `[name="${ nonceName }"]` ); 59 60 /** 61 * @type {HTMLInputElement} 62 */ 63 const hcapHp = block.querySelector( `[id^="hcap_hp_"]` ); 64 65 /** 66 * @type {HTMLInputElement} 67 */ 68 const hcapSig = block.querySelector( `[name="${ sigInputName }"]` ); 69 70 /** 71 * @type {HTMLInputElement} 72 */ 73 const token = block.querySelector( `[name="${ tokenName }"]` ); 74 75 formData[ widgetName ] = widgetId?.value; 76 formData[ responseInputName ] = hCaptchaResponse?.value; 77 formData[ nonceName ] = nonce?.value; 78 formData[ hcapHp?.id ] = hcapHp?.value; 79 formData[ sigInputName ] = hcapSig?.value; 80 formData[ tokenName ] = token?.value; 81 82 body.set( 'form_data', JSON.stringify( formData ) ); 83 84 config.body = body; 85 event.detail.args.config = config; 86 }, 87 88 async fetchSuccess( event ) { 89 const config = event?.detail?.args?.[ 1 ]; 90 const response = event?.detail?.response; 91 92 if ( ! config || ! response ) { 93 return; 94 } 95 96 const body = config.body; 97 98 if ( ! ( body instanceof FormData || body instanceof URLSearchParams ) ) { 99 return; 100 } 101 102 const responseData = await response.clone().json().catch( () => null ); 103 104 if ( 'uagb_process_forms' !== body.get( 'action' ) || typeof responseData?.data !== 'string' ) { 105 return; 106 } 107 108 const blockId = body.get( 'block_id' ); 109 const selector = `[name="uagb-form-${ blockId }"]`; 110 111 style = document.createElement( 'style' ); 112 style.id = `hcaptcha-style-${ blockId }`; 113 style.textContent = ` 21 114 ${ selector } { 22 115 display: block !important; … … 24 117 `; 25 118 26 // Remove hCaptcha error message.27 const errorMessage = document.querySelector( '.uagb-block-' + blockId + ' .' + errorClassName);119 // We have hCaptcha error in responseData. 120 const styleToAdd = document.getElementById( style.id ); 28 121 29 if ( errorMessage ) { 30 errorMessage.remove(); 31 } 122 if ( ! styleToAdd ) { 123 // Add a style preventing hiding the form. 124 document.head.appendChild( style ); 125 } 32 126 33 if ( 'uagb_process_forms' === body.get( 'action' ) && ! formData.hasOwnProperty( inputName ) ) { 34 /** 35 * @type {HTMLTextAreaElement} 36 */ 37 const hCaptchaResponse = document.querySelector( '.uagb-block-' + blockId + ' [name="' + inputName + '"]' ); 127 // Remove previous error message (if exists) in the current block. 128 const prevError = document.querySelector( '.uagb-block-' + blockId + ' .hcaptcha-error-message' ); 38 129 39 /** 40 * @type {HTMLInputElement} 41 */ 42 const id = document.querySelector( '.uagb-block-' + blockId + ' [name="' + widgetName + '"]' ); 130 if ( prevError ) { 131 prevError.remove(); 132 } 43 133 44 /** 45 * @type {HTMLInputElement} 46 */ 47 const nonce = document.querySelector( '.uagb-block-' + blockId + ' [name="' + nonceName + '"]' ); 134 // Show an error message. 135 const errorContainer = document.createElement( 'div' ); 48 136 49 if ( hCaptchaResponse ) { 50 formData[ inputName ] = hCaptchaResponse.value; 51 } 137 errorContainer.className = 'hcaptcha-error-message'; 138 errorContainer.textContent = responseData.data; 139 errorContainer.style.color = 'red'; 140 errorContainer.style.padding = '10px 0'; 52 141 53 if ( id ) { 54 formData[ widgetName ] = id.value; 55 } 142 // Find the form container and append the error message 143 const hcaptchaContainer = document.querySelector( '.uagb-block-' + blockId + ' h-captcha' ); 56 144 57 formData[ nonceName ] = nonce.value; 145 if ( hcaptchaContainer ) { 146 hcaptchaContainer.parentNode.insertBefore( errorContainer, hcaptchaContainer ); 147 } 148 }, 58 149 59 body.set( 'form_data', JSON.stringify( formData ) );60 config.body = body;61 }150 fetchComplete( event ) { 151 const config = event?.detail?.args?.[ 1 ] ?? {}; 152 const body = config.body; 62 153 63 const response = await originalFetch( resource, config ); 154 if ( ! ( body instanceof URLSearchParams ) ) { 155 return; 156 } 64 157 65 // Check if the response contains errors we're interested in.66 const responseClone = response.clone();67 const responseData = await responseClone.json().catch( () => null );158 if ( 'uagb_process_forms' !== body.get( 'action' ) ) { 159 return; 160 } 68 161 69 if ( 'uagb_process_forms' === body.get( 'action' ) && typeof responseData?.data === 'string' ) {70 // We have hCaptcha error in responseData.162 // Remove a style preventing hiding the form. 163 const styleToRemove = document.getElementById( style?.id ); 71 164 72 const styleToAdd = document.getElementById( style.id ); 165 if ( styleToRemove ) { 166 styleToRemove.remove(); 167 } 73 168 74 if ( ! styleToAdd ) { 75 // Add a style preventing hiding the form. 76 document.head.appendChild( style ); 77 } 169 window.hCaptchaBindEvents(); 170 }, 171 }; 78 172 79 // Show an error message. 80 const errorContainer = document.createElement( 'div' ); 81 errorContainer.className = errorClassName; 82 errorContainer.textContent = responseData.data; 83 errorContainer.style.color = 'red'; 84 errorContainer.style.padding = '10px 0'; 173 return app; 174 }( window ) ); 85 175 86 // Find the form container and append the error message 87 const hcaptchaContainer = document.querySelector( '.uagb-block-' + blockId + ' h-captcha' ); 176 window.hCaptchaSpectra = hCaptchaSpectra; 88 177 89 if ( hcaptchaContainer ) { 90 hcaptchaContainer.parentNode.insertBefore( errorContainer, hcaptchaContainer ); 91 } 92 93 // Set the data to 400 for Spectra. 94 responseData.data = 400; 95 96 // Return the original response despite the error. 97 return response; 98 } 99 100 // Remove a style preventing hiding the form. 101 const styleToRemove = document.getElementById( style.id ); 102 103 if ( styleToRemove ) { 104 styleToRemove.remove(); 105 } 106 107 // If no errors or not the errors we're interested in, return the original response. 108 return response; 109 }; 178 hCaptchaSpectra.init(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-spectra.min.js
r3339595 r3359717 1 (()=>{ function t(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var n,r,o="function"==typeof Symbol?Symbol:{},c=o.iterator||"@@iterator",a=o.toStringTag||"@@toStringTag";function u(t,o,c,a){var u=o&&o.prototype instanceof f?o:f,l=Object.create(u.prototype);return e(l,"_invoke",function(t,e,o){var c,a,u,f=0,l=o||[],d=!1,s={p:0,n:0,v:n,a:p,f:p.bind(n,4),d:function(t,e){return c=t,a=0,u=n,s.n=e,i}};function p(t,e){for(a=t,u=e,r=0;!d&&f&&!o&&r<l.length;r++){var o,c=l[r],p=s.p,y=c[2];t>3?(o=y===e)&&(u=c[(a=c[4])?5:(a=3,3)],c[4]=c[5]=n):c[0]<=p&&((o=t<2&&p<c[1])?(a=0,s.v=e,s.n=c[1]):p<y&&(o=t<3||c[0]>e||e>y)&&(c[4]=t,c[5]=e,s.n=y,a=0))}if(o||t>1)return i;throw d=!0,e}return function(o,l,y){if(f>1)throw TypeError("Generator is already running");for(d&&1===l&&p(l,y),a=l,u=y;(r=a<2?n:u)||!d;){c||(a?a<3?(a>1&&(s.n=-1),p(a,u)):s.n=u:s.v=u);try{if(f=2,c){if(a||(o="next"),r=c[o]){if(!(r=r.call(c,u)))throw TypeError("iterator result is not an object");if(!r.done)return r;u=r.value,a<2&&(a=0)}else 1===a&&(r=c.return)&&r.call(c),a<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),a=1);c=n}else if((r=(d=s.n<0)?u:t.call(e,s))!==i)break}catch(t){c=n,a=1,u=t}finally{f=1}}return{value:r,done:d}}}(t,c,a),!0),l}var i={};function f(){}function l(){}function d(){}r=Object.getPrototypeOf;var s=[][c]?r(r([][c]())):(e(r={},c,function(){return this}),r),p=d.prototype=f.prototype=Object.create(s);function y(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,e(t,a,"GeneratorFunction")),t.prototype=Object.create(p),t}return l.prototype=d,e(p,"constructor",d),e(d,"constructor",l),l.displayName="GeneratorFunction",e(d,a,"GeneratorFunction"),e(p),e(p,a,"Generator"),e(p,c,function(){return this}),e(p,"toString",function(){return"[object Generator]"}),(t=function(){return{w:u,m:y}})()}function e(t,n,r,o){var c=Object.defineProperty;try{c({},"",{})}catch(t){c=0}e=function(t,n,r,o){function a(n,r){e(t,n,function(t){return this._invoke(n,r,t)})}n?c?c(t,n,{value:r,enumerable:!o,configurable:!o,writable:!o}):t[n]=r:(a("next",0),a("throw",1),a("return",2))},e(t,n,r,o)}function n(t,e,n,r,o,c,a){try{var u=t[c](a),i=u.value}catch(t){return void n(t)}u.done?e(i):Promise.resolve(i).then(r,o)}function r(t){return function(){var e=this,r=arguments;return new Promise(function(o,c){var a=t.apply(e,r);function u(t){n(a,o,c,u,i,"next",t)}function i(t){n(a,o,c,u,i,"throw",t)}u(void 0)})}}var o=window.fetch;window.fetch=r(t().m(function e(){var n,r,c,a,u,i,f,l,d,s,p,y,m,h,b,v,g,w,_,O,S,k,j,E,P=arguments;return t().w(function(t){for(;;)switch(t.n){case 0:for(n=P.length,r=new Array(n),c=0;c<n;c++)r[c]=P[c];return a=r[0],u=r[1],i=u.body,f=i.get("block_id"),l="h-captcha-response",d="hcaptcha-widget-id",s="hcaptcha-error-message",p="hcaptcha_spectra_form_nonce",y=JSON.parse(i.get("form_data")),m='[name="uagb-form-'.concat(f,'"]'),(h=document.createElement("style")).id="hcaptcha-style-".concat(f),h.textContent="\n\t\t".concat(m," {\n\t\t\tdisplay: block !important;\n\t\t}\n"),(b=document.querySelector(".uagb-block-"+f+" ."+s))&&b.remove(),"uagb_process_forms"!==i.get("action")||y.hasOwnProperty(l)||(v=document.querySelector(".uagb-block-"+f+' [name="'+l+'"]'),g=document.querySelector(".uagb-block-"+f+' [name="'+d+'"]'),w=document.querySelector(".uagb-block-"+f+' [name="'+p+'"]'),v&&(y[l]=v.value),g&&(y[d]=g.value),y[p]=w.value,i.set("form_data",JSON.stringify(y)),u.body=i),t.n=1,o(a,u);case 1:return _=t.v,O=_.clone(),t.n=2,O.json().catch(function(){return null});case 2:if(S=t.v,"uagb_process_forms"!==i.get("action")||"string"!=typeof(null==S?void 0:S.data)){t.n=3;break}return document.getElementById(h.id)||document.head.appendChild(h),(k=document.createElement("div")).className=s,k.textContent=S.data,k.style.color="red",k.style.padding="10px 0",(j=document.querySelector(".uagb-block-"+f+" h-captcha"))&&j.parentNode.insertBefore(k,j),S.data=400,t.a(2,_);case 3:return(E=document.getElementById(h.id))&&E.remove(),t.a(2,_)}},e)}))})();1 (()=>{"use strict";var t={2981:(t,e,n)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,a(r.key),r)}}function a(t){var e=function(t,e){if("object"!=r(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!=r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==r(e)?e:e+""}n.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,r=[{key:"addHCaptchaData",value:function(e,n,r,o){var a,c=null!==(a=e.data)&&void 0!==a?a:"";"string"==typeof c&&c.startsWith("action=".concat(n))&&(e.data+=t.getHCaptchaData(o,r))}},{key:"getHCaptchaData",value:function(t,e){for(var n,r="",o=0,a=["h-captcha-response","hcaptcha-widget-id",e,null!==(n=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==n?n:"","hcap_hp_sig","hcap_fst_token"];o<a.length;o++){var c,i=a[o];if(i){var u=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";r+="&".concat(i,"=").concat(u)}}return r}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:n}}))}catch(t){}var o=t.apply(void 0,n);return o.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:n,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:n,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:n}}))}catch(t){}}),o};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(n=null)&&o(e.prototype,n),r&&o(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,r}()}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var a=e[r]={exports:{}};return t[r](a,a.exports,n),a.exports}n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var r=n(2981);function o(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var t,e,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",c=n.toStringTag||"@@toStringTag";function i(n,r,o,c){var i=r&&r.prototype instanceof l?r:l,f=Object.create(i.prototype);return a(f,"_invoke",function(n,r,o){var a,c,i,l=0,f=o||[],d=!1,s={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,n){return a=e,c=0,i=t,s.n=n,u}};function p(n,r){for(c=n,i=r,e=0;!d&&l&&!o&&e<f.length;e++){var o,a=f[e],p=s.p,h=a[2];n>3?(o=h===r)&&(i=a[(c=a[4])?5:(c=3,3)],a[4]=a[5]=t):a[0]<=p&&((o=n<2&&p<a[1])?(c=0,s.v=r,s.n=a[1]):p<h&&(o=n<3||a[0]>r||r>h)&&(a[4]=n,a[5]=r,s.n=h,c=0))}if(o||n>1)return u;throw d=!0,r}return function(o,f,h){if(l>1)throw TypeError("Generator is already running");for(d&&1===f&&p(f,h),c=f,i=h;(e=c<2?t:i)||!d;){a||(c?c<3?(c>1&&(s.n=-1),p(c,i)):s.n=i:s.v=i);try{if(l=2,a){if(c||(o="next"),e=a[o]){if(!(e=e.call(a,i)))throw TypeError("iterator result is not an object");if(!e.done)return e;i=e.value,c<2&&(c=0)}else 1===c&&(e=a.return)&&e.call(a),c<2&&(i=TypeError("The iterator does not provide a '"+o+"' method"),c=1);a=t}else if((e=(d=s.n<0)?i:n.call(r,s))!==u)break}catch(e){a=t,c=1,i=e}finally{l=1}}return{value:e,done:d}}}(n,o,c),!0),f}var u={};function l(){}function f(){}function d(){}e=Object.getPrototypeOf;var s=[][r]?e(e([][r]())):(a(e={},r,function(){return this}),e),p=d.prototype=l.prototype=Object.create(s);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,a(t,c,"GeneratorFunction")),t.prototype=Object.create(p),t}return f.prototype=d,a(p,"constructor",d),a(d,"constructor",f),f.displayName="GeneratorFunction",a(d,c,"GeneratorFunction"),a(p),a(p,c,"Generator"),a(p,r,function(){return this}),a(p,"toString",function(){return"[object Generator]"}),(o=function(){return{w:i,m:h}})()}function a(t,e,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}a=function(t,e,n,r){function c(e,n){a(t,e,function(t){return this._invoke(e,n,t)})}e?o?o(t,e,{value:n,enumerable:!r,configurable:!r,writable:!r}):t[e]=n:(c("next",0),c("throw",1),c("return",2))},a(t,e,n,r)}function c(t,e,n,r,o,a,c){try{var i=t[a](c),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,o)}var i=window.hCaptchaSpectra||function(t){var e,n={init:function(){r.d.installFetchEvents(),t.addEventListener("hCaptchaFetch:before",n.fetchBefore),t.addEventListener("hCaptchaFetch:success",n.fetchSuccess),t.addEventListener("hCaptchaFetch:complete",n.fetchComplete)},fetchBefore:function(t){var e,n,r=null!==(e=null==t||null===(n=t.detail)||void 0===n||null===(n=n.args)||void 0===n?void 0:n[1])&&void 0!==e?e:{},o=r.body;if(o instanceof URLSearchParams){var a=o.get("block_id"),c=document.querySelector(".uagb-block-".concat(a)),i=c.querySelector(".hcaptcha-error-message");i&&i.remove();var u="h-captcha-response",l=JSON.parse(o.get("form_data"));if("uagb_process_forms"===o.get("action")&&!l.hasOwnProperty(u)){var f="hcaptcha-widget-id",d="hcap_hp_sig",s="hcap_fst_token",p="hcaptcha_spectra_form_nonce",h=c.querySelector('[name="'.concat(f,'"]')),v=c.querySelector('[name="'.concat(u,'"]')),y=c.querySelector('[name="'.concat(p,'"]')),m=c.querySelector('[id^="hcap_hp_"]'),b=c.querySelector('[name="'.concat(d,'"]')),g=c.querySelector('[name="'.concat(s,'"]'));l[f]=null==h?void 0:h.value,l[u]=null==v?void 0:v.value,l[p]=null==y?void 0:y.value,l[null==m?void 0:m.id]=null==m?void 0:m.value,l[d]=null==b?void 0:b.value,l[s]=null==g?void 0:g.value,o.set("form_data",JSON.stringify(l)),r.body=o,t.detail.args.config=r}}},fetchSuccess:function(t){return(n=o().m(function n(){var r,a,c,i,u,l,f,d,s,p,h;return o().w(function(n){for(;;)switch(n.n){case 0:if(c=null==t||null===(r=t.detail)||void 0===r||null===(r=r.args)||void 0===r?void 0:r[1],i=null==t||null===(a=t.detail)||void 0===a?void 0:a.response,c&&i){n.n=1;break}return n.a(2);case 1:if((u=c.body)instanceof FormData||u instanceof URLSearchParams){n.n=2;break}return n.a(2);case 2:return n.n=3,i.clone().json().catch(function(){return null});case 3:if(l=n.v,"uagb_process_forms"===u.get("action")&&"string"==typeof(null==l?void 0:l.data)){n.n=4;break}return n.a(2);case 4:f=u.get("block_id"),d='[name="uagb-form-'.concat(f,'"]'),(e=document.createElement("style")).id="hcaptcha-style-".concat(f),e.textContent="\n\t\t".concat(d," {\n\t\t\tdisplay: block !important;\n\t\t}\n"),document.getElementById(e.id)||document.head.appendChild(e),(s=document.querySelector(".uagb-block-"+f+" .hcaptcha-error-message"))&&s.remove(),(p=document.createElement("div")).className="hcaptcha-error-message",p.textContent=l.data,p.style.color="red",p.style.padding="10px 0",(h=document.querySelector(".uagb-block-"+f+" h-captcha"))&&h.parentNode.insertBefore(p,h);case 5:return n.a(2)}},n)}),function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function i(t){c(a,r,o,i,u,"next",t)}function u(t){c(a,r,o,i,u,"throw",t)}i(void 0)})})();var n},fetchComplete:function(n){var r,o,a,c=(null!==(r=null==n||null===(o=n.detail)||void 0===o||null===(o=o.args)||void 0===o?void 0:o[1])&&void 0!==r?r:{}).body;if(c instanceof URLSearchParams&&"uagb_process_forms"===c.get("action")){var i=document.getElementById(null===(a=e)||void 0===a?void 0:a.id);i&&i.remove(),t.hCaptchaBindEvents()}}};return n}(window);window.hCaptchaSpectra=i,i.init()})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-ultimate-addons.min.js
r3339595 r3359717 1 (()=>{"use strict";var a={2981:(a,t,e)=>{function r(a){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},r(a)}function n(a,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(a,o(r.key),r)}}function o(a){var t=function(a,t){if("object"!=r(a)||!a)return a;var e=a[Symbol.toPrimitive];if(void 0!==e){var n=e.call(a,t||"default");if("object"!=r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(a)}(a,"string");return"symbol"==r(t)?t:t+""}e.d(t,{d:()=>i});var i=function(){function a(){!function(a,t){if(!(a instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a)}return t=a,r=[{key:"addHCaptchaData",value:function(t,e,r,n){var o,i=null!==(o=t.data)&&void 0!==o?o:"";if("string"==typeof i&&i.startsWith("action=".concat(e))){var c=a.getHCaptchaData(n,r);t.data+="&h-captcha-response="+c.response+"&hcaptcha-widget-id="+c.id+"&"+r+"="+c.nonce}}},{key:"getHCaptchaData",value:function(a,t){var e=a.find('[name="h-captcha-response"]').val();e=e||"";var r=a.find('[name="hcaptcha-widget-id"]').val();r=r||"";var n=a.find('[name="'+t+'"]').val();return{response:e,id:r,nonce:n=n||""}}}],(e=null)&&n(t.prototype,e),r&&n(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}()}},t={};function e(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={exports:{}};return a[r](o,o.exports,e),o.exports}e.d=(a,t)=>{for(var r in t)e.o(t,r)&&!e.o(a,r)&&Object.defineProperty(a,r,{enumerable:!0,get:t[r]})},e.o=(a,t)=>Object.prototype.hasOwnProperty.call(a,t);var r,n=e(2981);wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(a,t){return!(!t.classList.contains("uael-login-form-submit")&&!t.classList.contains("uael-register-submit"))||a}),(r=jQuery).ajaxPrefilter(function(a){var t,e=null!==(t=a.data)&&void 0!==t?t:"";if("string"==typeof e){var o=new URLSearchParams(e).get("action");if(o){var i;switch(o){case"uael_login_form_submit":i=r(".uael-login-form");break;case"uael_register_user":i=r(".uael-registration-form");break;default:return}n.d.addHCaptchaData(a,"uael_login_form_submit","hcaptcha_login_nonce",i),n.d.addHCaptchaData(a,"uael_register_user","hcaptcha_ultimate_addons_register_nonce",i)}}}),r(document).on("ajaxSuccess",function(a,t,e){var n,o,i=new URLSearchParams(e.data).get("action");if("uael_login_form_submit"===i||"uael_register_user"===i){window.hCaptchaBindEvents();var c=JSON.parse(t.responseText);if(null==c||!c.success){var u=null!==(n=null==c?void 0:c.data)&&void 0!==n?n:"",s=null!==(o=null==u?void 0:u.hCaptchaError)&&void 0!==o?o:"";s&&r("h-captcha").after('<span class="uael-register-field-message"><span class="uael-loginform-error">'+s+"</span></span>")}}})})();1 (()=>{"use strict";var t={2981:(t,e,a)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function r(t,e){for(var a=0;a<e.length;a++){var n=e[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,o(n.key),n)}}function o(t){var e=function(t,e){if("object"!=n(t)||!t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var r=a.call(t,e||"default");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==n(e)?e:e+""}a.d(e,{d:()=>i});var i=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,n=[{key:"addHCaptchaData",value:function(e,a,n,r){var o,i=null!==(o=e.data)&&void 0!==o?o:"";"string"==typeof i&&i.startsWith("action=".concat(a))&&(e.data+=t.getHCaptchaData(r,n))}},{key:"getHCaptchaData",value:function(t,e){for(var a,n="",r=0,o=["h-captcha-response","hcaptcha-widget-id",e,null!==(a=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==a?a:"","hcap_hp_sig","hcap_fst_token"];r<o.length;r++){var i,c=o[r];if(c){var u=null!==(i=t.find('[name="'.concat(c,'"]')).first().val())&&void 0!==i?i:"";n+="&".concat(c,"=").concat(u)}}return n}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:a}}))}catch(t){}var r=t.apply(void 0,a);return r.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:a,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:a,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:a}}))}catch(t){}}),r};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(a=null)&&r(e.prototype,a),n&&r(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,a,n}()}},e={};function a(n){var r=e[n];if(void 0!==r)return r.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,a),o.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);var n,r=a(2981);wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(t,e){return!(!e.classList.contains("uael-login-form-submit")&&!e.classList.contains("uael-register-submit"))||t}),(n=jQuery).ajaxPrefilter(function(t){var e,a=null!==(e=t.data)&&void 0!==e?e:"";if("string"==typeof a){var o=new URLSearchParams(a).get("action");if(o){var i;switch(o){case"uael_login_form_submit":i=n(".uael-login-form");break;case"uael_register_user":i=n(".uael-registration-form");break;default:return}r.d.addHCaptchaData(t,"uael_login_form_submit","hcaptcha_login_nonce",i),r.d.addHCaptchaData(t,"uael_register_user","hcaptcha_ultimate_addons_register_nonce",i)}}}),n(document).on("ajaxSuccess",function(t,e,a){var r,o,i=new URLSearchParams(a.data).get("action");if("uael_login_form_submit"===i||"uael_register_user"===i){window.hCaptchaBindEvents();var c=JSON.parse(e.responseText);if(null==c||!c.success){var u=null!==(r=null==c?void 0:c.data)&&void 0!==r?r:"",s=null!==(o=null==u?void 0:u.hCaptchaError)&&void 0!==o?o:"";s&&n("h-captcha").after('<span class="uael-register-field-message"><span class="uael-loginform-error">'+s+"</span></span>")}}})})(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-wc-block-checkout.js
r3200161 r3359717 1 const { fetch: originalFetch } = window; 2 const checkoutButtonClass = 'wc-block-components-checkout-place-order-button'; 1 import { helper } from './hcaptcha-helper.js'; 3 2 4 wp.hooks.addFilter( 5 'hcaptcha.submitButtonSelector', 6 'hcaptcha', 7 ( submitButtonSelector ) => { 8 return submitButtonSelector + `, .${ checkoutButtonClass }`; 9 } 10 ); 3 const wcBlockCheckout = window.hCaptchaWCBlockCheckout || ( function( window ) { 4 const app = { 5 init() { 6 const checkoutButtonClass = 'wc-block-components-checkout-place-order-button'; 11 7 12 wp.hooks.addFilter(13 'hcaptcha.ajaxSubmitButton',14 'hcaptcha',15 ( isAjaxSubmitButton, submitButtonElement) => {16 if ( submitButtonElement.classList.contains( `${ checkoutButtonClass }` ) ) {17 return true;18 }8 wp.hooks.addFilter( 9 'hcaptcha.submitButtonSelector', 10 'hcaptcha', 11 ( submitButtonSelector ) => { 12 return submitButtonSelector + `, .${ checkoutButtonClass }`; 13 } 14 ); 19 15 20 return isAjaxSubmitButton; 21 } 22 ); 16 wp.hooks.addFilter( 17 'hcaptcha.ajaxSubmitButton', 18 'hcaptcha', 19 ( isAjaxSubmitButton, submitButtonElement ) => { 20 if ( submitButtonElement.classList.contains( `${ checkoutButtonClass }` ) ) { 21 return true; 22 } 23 23 24 // Intercept WC Checkout form fetch to add hCaptcha data. 25 window.fetch = async ( ...args ) => { 26 const [ resource, config ] = args;24 return isAjaxSubmitButton; 25 } 26 ); 27 27 28 if ( resource.includes( '/wc/store/v1/checkout' ) ) { 29 const body = config.body; 30 const widgetName = 'hcaptcha-widget-id'; 31 const inputName = 'h-captcha-response'; 32 const formData = JSON.parse( body ); 33 const wcCheckoutBlock = document.querySelector( 'div[data-block-name="woocommerce/checkout"]' ); 28 helper.installFetchEvents(); 29 window.addEventListener( 'hCaptchaFetch:before', app.fetchBefore ); 30 window.addEventListener( 'hCaptchaFetch:complete', app.fetchComplete ); 31 }, 34 32 35 /** 36 * @type {HTMLInputElement} 37 */ 38 const widgetId = wcCheckoutBlock.querySelector( `[name="${ widgetName }"]` ); 33 fetchBefore( event ) { 34 const [ resource, config ] = event?.detail?.args; 39 35 40 /** 41 * @type {HTMLTextAreaElement} 42 */ 43 const hCaptchaResponse = wcCheckoutBlock.querySelector( `[name="${ inputName }"]` ); 36 if ( ! resource.includes( '/wc/store/v1/checkout' ) ) { 37 return; 38 } 44 39 45 if ( widgetId && hCaptchaResponse ) { 46 formData[ widgetName ] = widgetId.value; 47 formData[ inputName ] = hCaptchaResponse.value; 48 } 40 let formData; 49 41 50 config.body = JSON.stringify( formData ); 51 } 42 try { 43 formData = JSON.parse( config.body ); 44 } catch ( e ) { 45 formData = {}; 46 } 52 47 53 // noinspection JSCheckFunctionSignatures 54 return await originalFetch( resource, config ); 55 }; 48 const widgetName = 'hcaptcha-widget-id'; 49 const responseInputName = 'h-captcha-response'; 50 const sigInputName = 'hcap_hp_sig'; 51 const tokenName = 'hcap_fst_token'; 52 const wcCheckoutBlock = document.querySelector( 'div[data-block-name="woocommerce/checkout"]' ); 53 54 /** 55 * @type {HTMLInputElement} 56 */ 57 const widgetId = wcCheckoutBlock.querySelector( `[name="${ widgetName }"]` ); 58 59 /** 60 * @type {HTMLTextAreaElement} 61 */ 62 const hCaptchaResponse = wcCheckoutBlock.querySelector( `[name="${ responseInputName }"]` ); 63 64 /** 65 * @type {HTMLInputElement} 66 */ 67 const hcapHp = wcCheckoutBlock.querySelector( `[id^="hcap_hp_"]` ); 68 69 /** 70 * @type {HTMLInputElement} 71 */ 72 const hcapSig = wcCheckoutBlock.querySelector( `[name="${ sigInputName }"]` ); 73 74 /** 75 * @type {HTMLInputElement} 76 */ 77 const token = wcCheckoutBlock.querySelector( `[name="${ tokenName }"]` ); 78 79 formData[ widgetName ] = widgetId?.value; 80 formData[ responseInputName ] = hCaptchaResponse?.value; 81 formData[ hcapHp.id ] = hcapHp?.value; 82 formData[ sigInputName ] = hcapSig?.value; 83 formData[ tokenName ] = token?.value; 84 85 config.body = JSON.stringify( formData ); 86 87 event.detail.args.config = config; 88 }, 89 90 fetchComplete( event ) { 91 const resource = event?.detail?.args?.[ 0 ] ?? ''; 92 93 if ( ! resource.includes( '/wc/store/v1/checkout' ) ) { 94 return; 95 } 96 97 window.hCaptchaBindEvents(); 98 }, 99 }; 100 101 return app; 102 }( window ) ); 103 104 window.hCaptchaWCBlockCheckout = wcBlockCheckout; 105 106 wcBlockCheckout.init(); -
hcaptcha-for-forms-and-more/trunk/assets/js/hcaptcha-wc-block-checkout.min.js
r3339595 r3359717 1 (()=>{ function t(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var r,e,o="function"==typeof Symbol?Symbol:{},c=o.iterator||"@@iterator",a=o.toStringTag||"@@toStringTag";function i(t,o,c,a){var i=o&&o.prototype instanceof f?o:f,l=Object.create(i.prototype);return n(l,"_invoke",function(t,n,o){var c,a,i,f=0,l=o||[],p=!1,h={p:0,n:0,v:r,a:s,f:s.bind(r,4),d:function(t,n){return c=t,a=0,i=r,h.n=n,u}};function s(t,n){for(a=t,i=n,e=0;!p&&f&&!o&&e<l.length;e++){var o,c=l[e],s=h.p,v=c[2];t>3?(o=v===n)&&(i=c[(a=c[4])?5:(a=3,3)],c[4]=c[5]=r):c[0]<=s&&((o=t<2&&s<c[1])?(a=0,h.v=n,h.n=c[1]):s<v&&(o=t<3||c[0]>n||n>v)&&(c[4]=t,c[5]=n,h.n=v,a=0))}if(o||t>1)return u;throw p=!0,n}return function(o,l,v){if(f>1)throw TypeError("Generator is already running");for(p&&1===l&&s(l,v),a=l,i=v;(e=a<2?r:i)||!p;){c||(a?a<3?(a>1&&(h.n=-1),s(a,i)):h.n=i:h.v=i);try{if(f=2,c){if(a||(o="next"),e=c[o]){if(!(e=e.call(c,i)))throw TypeError("iterator result is not an object");if(!e.done)return e;i=e.value,a<2&&(a=0)}else 1===a&&(e=c.return)&&e.call(c),a<2&&(i=TypeError("The iterator does not provide a '"+o+"' method"),a=1);c=r}else if((e=(p=h.n<0)?i:t.call(n,h))!==u)break}catch(t){c=r,a=1,i=t}finally{f=1}}return{value:e,done:p}}}(t,c,a),!0),l}var u={};function f(){}function l(){}function p(){}e=Object.getPrototypeOf;var h=[][c]?e(e([][c]())):(n(e={},c,function(){return this}),e),s=p.prototype=f.prototype=Object.create(h);function v(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,n(t,a,"GeneratorFunction")),t.prototype=Object.create(s),t}return l.prototype=p,n(s,"constructor",p),n(p,"constructor",l),l.displayName="GeneratorFunction",n(p,a,"GeneratorFunction"),n(s),n(s,a,"Generator"),n(s,c,function(){return this}),n(s,"toString",function(){return"[object Generator]"}),(t=function(){return{w:i,m:v}})()}function n(t,r,e,o){var c=Object.defineProperty;try{c({},"",{})}catch(t){c=0}n=function(t,r,e,o){function a(r,e){n(t,r,function(t){return this._invoke(r,e,t)})}r?c?c(t,r,{value:e,enumerable:!o,configurable:!o,writable:!o}):t[r]=e:(a("next",0),a("throw",1),a("return",2))},n(t,r,e,o)}function r(t,n,r,e,o,c,a){try{var i=t[c](a),u=i.value}catch(t){return void r(t)}i.done?n(u):Promise.resolve(u).then(e,o)}function e(t){return function(){var n=this,e=arguments;return new Promise(function(o,c){var a=t.apply(n,e);function i(t){r(a,o,c,i,u,"next",t)}function u(t){r(a,o,c,i,u,"throw",t)}i(void 0)})}}var o=window.fetch,c="wc-block-components-checkout-place-order-button";wp.hooks.addFilter("hcaptcha.submitButtonSelector","hcaptcha",function(t){return t+", .".concat(c)}),wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(t,n){return!!n.classList.contains("".concat(c))||t}),window.fetch=e(t().m(function n(){var r,e,c,a,i,u,f,l,p,h,s,v,y=arguments;return t().w(function(t){for(;;)switch(t.n){case 0:for(r=y.length,e=new Array(r),c=0;c<r;c++)e[c]=y[c];return a=e[0],i=e[1],a.includes("/wc/store/v1/checkout")&&(u=i.body,f="hcaptcha-widget-id",l="h-captcha-response",p=JSON.parse(u),h=document.querySelector('div[data-block-name="woocommerce/checkout"]'),s=h.querySelector('[name="'.concat(f,'"]')),v=h.querySelector('[name="'.concat(l,'"]')),s&&v&&(p[f]=s.value,p[l]=v.value),i.body=JSON.stringify(p)),t.n=1,o(a,i);case 1:return t.a(2,t.v)}},n)}))})();1 (()=>{"use strict";var t={2981:(t,e,n)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,a(r.key),r)}}function a(t){var e=function(t,e){if("object"!=r(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!=r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==r(e)?e:e+""}n.d(e,{d:()=>c});var c=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return e=t,r=[{key:"addHCaptchaData",value:function(e,n,r,o){var a,c=null!==(a=e.data)&&void 0!==a?a:"";"string"==typeof c&&c.startsWith("action=".concat(n))&&(e.data+=t.getHCaptchaData(o,r))}},{key:"getHCaptchaData",value:function(t,e){for(var n,r="",o=0,a=["h-captcha-response","hcaptcha-widget-id",e,null!==(n=t.find('[name^="hcap_hp_"]').first().attr("name"))&&void 0!==n?n:"","hcap_hp_sig","hcap_fst_token"];o<a.length;o++){var c,i=a[o];if(i){var l=null!==(c=t.find('[name="'.concat(i,'"]')).first().val())&&void 0!==c?c:"";r+="&".concat(i,"=").concat(l)}}return r}},{key:"installFetchEvents",value:function(){if("undefined"!=typeof window&&"function"==typeof window.fetch&&!window.__hcapFetchWrapped){var t;t=window.fetch,window.fetch=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:before",{detail:{args:n}}))}catch(t){}var o=t.apply(void 0,n);return o.then(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:success",{detail:{args:n,response:t.clone()}}))}catch(t){}}).catch(function(t){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:error",{detail:{args:n,error:t}}))}catch(t){}}).finally(function(){try{window.dispatchEvent(new CustomEvent("hCaptchaFetch:complete",{detail:{args:n}}))}catch(t){}}),o};try{Object.defineProperty(window,"__hcapFetchWrapped",{value:!0,configurable:!0})}catch(t){window.__hcapFetchWrapped=!0}}}}],(n=null)&&o(e.prototype,n),r&&o(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,n,r}()}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var a=e[r]={exports:{}};return t[r](a,a.exports,n),a.exports}n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var r=n(2981);function o(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,a,c,i=[],l=!0,u=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(i.push(r.value),i.length!==e);l=!0);}catch(t){u=!0,o=t}finally{try{if(!l&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(u)throw o}}return i}}(t,e)||function(t,e){if(t){if("string"==typeof t)return a(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}var c=window.hCaptchaWCBlockCheckout||function(t){var e={init:function(){var n="wc-block-components-checkout-place-order-button";wp.hooks.addFilter("hcaptcha.submitButtonSelector","hcaptcha",function(t){return t+", .".concat(n)}),wp.hooks.addFilter("hcaptcha.ajaxSubmitButton","hcaptcha",function(t,e){return!!e.classList.contains("".concat(n))||t}),r.d.installFetchEvents(),t.addEventListener("hCaptchaFetch:before",e.fetchBefore),t.addEventListener("hCaptchaFetch:complete",e.fetchComplete)},fetchBefore:function(t){var e,n=o(null==t||null===(e=t.detail)||void 0===e?void 0:e.args,2),r=n[0],a=n[1];if(r.includes("/wc/store/v1/checkout")){var c;try{c=JSON.parse(a.body)}catch(t){c={}}var i="hcaptcha-widget-id",l="h-captcha-response",u="hcap_hp_sig",h="hcap_fst_token",f=document.querySelector('div[data-block-name="woocommerce/checkout"]'),d=f.querySelector('[name="'.concat(i,'"]')),p=f.querySelector('[name="'.concat(l,'"]')),s=f.querySelector('[id^="hcap_hp_"]'),v=f.querySelector('[name="'.concat(u,'"]')),y=f.querySelector('[name="'.concat(h,'"]'));c[i]=null==d?void 0:d.value,c[l]=null==p?void 0:p.value,c[s.id]=null==s?void 0:s.value,c[u]=null==v?void 0:v.value,c[h]=null==y?void 0:y.value,a.body=JSON.stringify(c),t.detail.args.config=a}},fetchComplete:function(e){var n,r;(null!==(n=null==e||null===(r=e.detail)||void 0===r||null===(r=r.args)||void 0===r?void 0:r[0])&&void 0!==n?n:"").includes("/wc/store/v1/checkout")&&t.hCaptchaBindEvents()}};return e}(window);window.hCaptchaWCBlockCheckout=c,c.init()})(); -
hcaptcha-for-forms-and-more/trunk/changelog.txt
r3339595 r3359717 1 = 4.17.0 = 2 * Added a hidden honeypot field and minimum submit time for bot detection before processing hCaptcha. Currently supported for WordPress Core, Avada theme, Contact Form 7, Divi theme, Divi Builder, Essential Addons for Elementor, Extra theme, Elementor, Jetpack, Mailchimp, Ninja Forms, Spectra, WooCommerce, WPForms, Protect Content feature. 3 * Added a notification message on the placeholder when hCaptcha failed to load. 4 * Added hCaptcha error messages to the Divi optin email form. 5 * Added hCaptcha error messages to the JetPack form. 6 * Fix conflict with reCaptcha in Divi Contact form. 7 * Fixed running migrations on a fresh installation. 8 * Fixed updating the migration option on each admin request. 9 * Fixed a fatal error on saving the Integration settings with active plugins having all switches off. 10 * Fixed an issue with several Divi optin email forms on the page. 11 * Fixed activation of Blocksy plugins with any theme. 12 * Fixed refreshing hCaptcha upon failed submission in Jetpack. 13 * Fixed Ninja Forms uncaught type error in JS appeared with some field types. 14 * Fixed Ninja Forms integration when form duplicates are on the same page. 15 1 16 = 4.16.0 = 2 17 * Added integration with Germanized for WooCommerce. -
hcaptcha-for-forms-and-more/trunk/composer.json
r3339595 r3359717 45 45 "codeception/module-webdriver": "1.4.1 - 4.0.3", 46 46 "lucatume/function-mocker": "^2.0.0", 47 "lucatume/wp-browser": "3.7.11 - 4.5. 2",47 "lucatume/wp-browser": "3.7.11 - 4.5.5", 48 48 "squizlabs/php_codesniffer": "^3.13.2", 49 49 "phpcompatibility/php-compatibility": "^9.3.5", -
hcaptcha-for-forms-and-more/trunk/hcaptcha.php
r3339595 r3359717 11 11 * Plugin URI: https://www.hcaptcha.com/ 12 12 * Description: hCaptcha keeps out bots and spam while putting privacy first. It is a drop-in replacement for reCAPTCHA. 13 * Version: 4.1 6.013 * Version: 4.17.0 14 14 * Requires at least: 5.3 15 15 * Requires PHP: 7.2 … … 40 40 * Plugin version. 41 41 */ 42 const HCAPTCHA_VERSION = '4.1 6.0';42 const HCAPTCHA_VERSION = '4.17.0'; 43 43 44 44 /** -
hcaptcha-for-forms-and-more/trunk/readme.txt
r3339595 r3359717 5 5 Tested up to: 6.8 6 6 Requires PHP: 7.2 7 Stable tag: 4.1 6.07 Stable tag: 4.17.0 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html 10 10 11 11 The strongest CAPTCHA. Switch from reCAPTCHA, Turnstile, etc. for free. 12 Integrates with 50+ popular plugins.12 Integrates with 60+ popular plugins and themes. 13 13 14 14 == Description == … … 756 756 == Changelog == 757 757 758 = 4.17.0 = 759 * Added a hidden honeypot field and minimum submit time for bot detection before processing hCaptcha. Currently supported for WordPress Core, Avada theme, Contact Form 7, Divi theme, Divi Builder, Essential Addons for Elementor, Extra theme, Elementor, Jetpack, Mailchimp, Ninja Forms, Spectra, WooCommerce, WPForms, Protect Content feature. 760 * Added a notification message on the placeholder when hCaptcha failed to load. 761 * Added hCaptcha error messages to the Divi optin email form. 762 * Added hCaptcha error messages to the JetPack form. 763 * Fix conflict with reCaptcha in Divi Contact form. 764 * Fixed running migrations on a fresh installation. 765 * Fixed updating the migration option on each admin request. 766 * Fixed a fatal error on saving the Integration settings with active plugins having all switches off. 767 * Fixed an issue with several Divi optin email forms on the page. 768 * Fixed activation of Blocksy plugins with any theme. 769 * Fixed refreshing hCaptcha upon failed submission in Jetpack. 770 * Fixed Ninja Forms uncaught type error in JS appeared with some field types. 771 * Fixed Ninja Forms integration when form duplicates are on the same page. 772 758 773 = 4.16.0 = 759 774 * Added integration with Germanized for WooCommerce. -
hcaptcha-for-forms-and-more/trunk/src/php/Abstracts/CommentBase.php
r3339595 r3359717 119 119 * Pre-approve comment. 120 120 * 121 * @param int|string|WP_Error $approved The approval status. Accepts 1, 0, 'spam', 'trash', or WP_Error.122 * @param array $comment data Comment data.121 * @param int|string|WP_Error $approved The approval status. Accepts 1, 0, 'spam', 'trash', or WP_Error. 122 * @param array $comment_data Comment data. 123 123 * 124 124 * @return int|string|WP_Error 125 125 * @noinspection PhpUnusedParameterInspection 126 126 */ 127 public function pre_comment_approved( $approved, array $comment data ) {127 public function pre_comment_approved( $approved, array $comment_data ) { 128 128 if ( null === $this->result || true === $this->result ) { 129 129 return $approved; -
hcaptcha-for-forms-and-more/trunk/src/php/Avada/Form.php
r3319903 r3359717 18 18 19 19 /** 20 * Script handle. 21 */ 22 private const HANDLE = 'hcaptcha-avada'; 23 24 /** 20 25 * Form id. 21 26 * … … 41 46 add_action( 'fusion_element_form_content', [ $this, 'add_hcaptcha' ], 10, 2 ); 42 47 add_filter( 'fusion_form_demo_mode', [ $this, 'verify' ] ); 48 add_action( 'wp_print_footer_scripts', [ $this, 'enqueue_scripts' ], 9 ); 43 49 } 44 50 … … 127 133 128 134 $_POST['hcaptcha-widget-id'] = $form_data['hcaptcha-widget-id'] ?? ''; 135 $_POST['hcap_fst_token'] = $form_data['hcap_fst_token'] ?? ''; 136 $hp_name = API::get_hp_name( $form_data ); 137 $_POST[ $hp_name ] = $form_data[ $hp_name ] ?? ''; 138 $_POST['hcap_hp_sig'] = $form_data['hcap_hp_sig'] ?? ''; 129 139 130 140 $result = API::verify( $this->get_entry( $form_data ) ); … … 145 155 146 156 /** 157 * Enqueue scripts. 158 * 159 * @return void 160 */ 161 public function enqueue_scripts(): void { 162 if ( ! hcaptcha()->form_shown ) { 163 return; 164 } 165 166 $min = hcap_min_suffix(); 167 168 wp_enqueue_script( 169 self::HANDLE, 170 HCAPTCHA_URL . "/assets/js/hcaptcha-avada$min.js", 171 [ 'jquery', 'hcaptcha' ], 172 HCAPTCHA_VERSION, 173 true 174 ); 175 } 176 177 /** 147 178 * Get entry. 148 179 * -
hcaptcha-for-forms-and-more/trunk/src/php/CustomerReviews/QuestionAnswer.php
r3339595 r3359717 21 21 22 22 /** 23 * WC product Q&A tab callback. 24 * 25 * @var callable 26 */ 27 private $qna_callback; 28 29 /** 30 * Whether hCaptcha was added. 31 * 32 * @var bool 33 */ 34 protected $has_hcaptcha = false; 35 36 /** 37 * Init hooks. 38 * 39 * @return void 40 */ 41 protected function init_hooks(): void { 42 parent::init_hooks(); 43 44 add_filter( 'woocommerce_product_tabs', [ $this, 'product_tabs' ], 20 ); 45 46 add_action( 'wp_ajax_cr_new_qna', [ $this, 'verify' ], 0 ); 47 add_action( 'wp_ajax_nopriv_cr_new_qna', [ $this, 'verify' ], 0 ); 48 } 49 50 /** 51 * Filter WC product tabs. 52 * 53 * @param array|mixed $tabs Tabs. 54 * 55 * @return array 56 */ 57 public function product_tabs( $tabs ): array { 58 $tabs = (array) $tabs; 59 60 if ( ! isset( $tabs['cr_qna'] ) ) { 61 return $tabs; 62 } 63 64 $this->qna_callback = $tabs['cr_qna']['callback']; 65 66 $tabs['cr_qna']['callback'] = [ $this, 'display_qna_tab' ]; 67 68 return $tabs; 69 } 70 71 /** 72 * Display Q&A tab. 73 * 74 * @param mixed $attributes Attributes. 75 * 76 * @return void 77 */ 78 public function display_qna_tab( $attributes ): void { 79 ob_start(); 80 call_user_func( $this->qna_callback, $attributes ); 81 $this->add_captcha( self::WC_TEMPLATE_NAME, '', '', [] ); 82 } 83 84 /** 23 85 * 'After template part' action. 24 86 * Gets the output buffer after the template part and adds hCaptcha. … … 39 101 $template = ob_get_clean(); 40 102 41 $args = [ 42 'action' => self::ACTION, 43 'name' => self::NONCE, 44 'id' => [ 45 'source' => HCaptcha::get_class_source( __CLASS__ ), 46 'form_id' => 'q&a', 47 ], 48 ]; 103 if ( ! $this->has_hcaptcha ) { 104 $this->has_hcaptcha = true; 49 105 50 // Find the $search string and insert hCaptcha before it. 51 $search = '#<div class="cr-review-form-buttons">\s*<button type="button" class="cr-review-form-submit" data-crcptcha=#'; 52 $replace = 53 "\n" . '<div class="cr-review-form-item">' . 54 HCaptcha::form( $args ) . 55 "\n" . '</div>' . 56 '$0'; 106 $args = [ 107 'action' => self::ACTION, 108 'name' => self::NONCE, 109 'id' => [ 110 'source' => HCaptcha::get_class_source( __CLASS__ ), 111 'form_id' => 'q&a', 112 ], 113 ]; 57 114 58 $template = preg_replace( $search, $replace, $template ); 115 // Find the $search string and insert hCaptcha before it. 116 $search = '#<div class="cr-review-form-buttons">\s*<button type="button" class="cr-review-form-submit" data-crcptcha=#'; 117 $template = preg_replace_callback( 118 $search, 119 static function ( array $m ) use ( $args ) { 120 return ( 121 "\n" . '<div class="cr-review-form-item">' . 122 HCaptcha::form( $args ) . 123 "\n" . '</div>' . 124 $m[0] 125 ); 126 }, 127 $template 128 ); 129 } 59 130 60 131 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped 61 132 echo $template; 62 133 } 63 64 /**65 * Init hooks.66 *67 * @return void68 */69 protected function init_hooks(): void {70 parent::init_hooks();71 72 add_action( 'wp_ajax_cr_new_qna', [ $this, 'verify' ], 0 );73 add_action( 'wp_ajax_nopriv_cr_new_qna', [ $this, 'verify' ], 0 );74 }75 134 } -
hcaptcha-for-forms-and-more/trunk/src/php/CustomerReviews/Review.php
r3339595 r3359717 49 49 50 50 // Find the $search string and insert hCaptcha before it. 51 $search = '<div class="cr-review-form-buttons">'; 52 $replace = 53 "\n" . '<div class="cr-review-form-item">' . 54 HCaptcha::form( $args ) . 55 "\n" . '</div>' . 56 $search; 57 58 $template = str_replace( $search, $replace, $template ); 51 $search = '#<div class="cr-review-form-buttons">#'; 52 $template = preg_replace_callback( 53 $search, 54 static function ( array $m ) use ( $args ) { 55 return ( 56 "\n" . '<div class="cr-review-form-item">' . 57 HCaptcha::form( $args ) . 58 "\n" . '</div>' . 59 $m[0] 60 ); 61 }, 62 $template 63 ); 59 64 60 65 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -
hcaptcha-for-forms-and-more/trunk/src/php/Divi/Contact.php
r3319903 r3359717 63 63 64 64 add_filter( 'et_pb_module_shortcode_attributes', [ $this, 'shortcode_attributes' ], 10, 5 ); 65 add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ] );65 add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ], 20 ); 66 66 } 67 67 … … 143 143 // Check that the form was submitted and the et_pb_contact_et_number field is empty to protect from spam. 144 144 if ( $nonce_result && isset( $_POST[ $submit_field ] ) && empty( $_POST[ $number_field ] ) ) { 145 // Remove h captchafrom current form fields, because Divi compares current and submitted fields.145 // Remove hCaptcha fields from current form fields, because Divi compares current and submitted fields. 146 146 $current_form_field = 'et_pb_contact_email_fields_' . $this->render_count; 147 147 $current_form_fields = filter_input( INPUT_POST, $current_form_field, FILTER_SANITIZE_FULL_SPECIAL_CHARS ); … … 154 154 $fields_data_array, 155 155 static function ( $item ) { 156 return false === strpos( $item['field_id'], 'captcha');156 return ! preg_match( '/captcha|hcap_hp_|hcap_fst_token/', $item['field_id'] ); 157 157 } 158 158 ); … … 203 203 */ 204 204 public function enqueue_scripts(): void { 205 if ( ! hcaptcha()->form_shown ) { 206 return; 207 } 208 209 wp_dequeue_script( 'et-core-api-spam-recaptcha' ); 210 205 211 $min = hcap_min_suffix(); 206 212 -
hcaptcha-for-forms-and-more/trunk/src/php/Divi/EmailOptin.php
r3319903 r3359717 84 84 */ 85 85 public function verify(): void { 86 $error_message = API::verify_post _html( self::NONCE, self::ACTION );86 $error_message = API::verify_post( self::NONCE, self::ACTION ); 87 87 88 88 if ( null === $error_message ) { … … 90 90 } 91 91 92 // It is a bug in a Divi script, which doesn't handle the error message. 93 et_core_die( esc_html( $error_message ) ); 92 wp_send_json( [ 'error' => $error_message ] ); 94 93 } 95 94 -
hcaptcha-for-forms-and-more/trunk/src/php/Helpers/API.php
r3319903 r3359717 9 9 10 10 use HCaptcha\AntiSpam\AntiSpam; 11 use WP_Error; 11 12 12 13 /** … … 142 143 } 143 144 145 // Check the honeypot field. 146 if ( ! self::check_honeypot_field() ) { 147 $result = hcap_get_error_messages()['spam']; 148 $error_codes = [ 'spam' ]; 149 150 return self::filtered_result( $result, $error_codes ); 151 } 152 153 // Check the form submit time token. 154 $check = self::check_fst_token(); 155 156 if ( is_wp_error( $check ) ) { 157 $result = $check->get_error_message(); 158 $error_codes = $check->get_error_codes(); 159 160 return self::filtered_result( $result, $error_codes ); 161 } 162 144 163 $hcaptcha_response_sanitized = htmlspecialchars( 145 164 filter_var( $hcaptcha_response, FILTER_SANITIZE_FULL_SPECIAL_CHARS ), … … 167 186 168 187 return self::process_request( $params ); 188 } 189 190 /** 191 * Get a honeypot field name. 192 * 193 * @param array $arr Array of form fields. 194 * 195 * @return string 196 */ 197 public static function get_hp_name( array $arr = [] ): string { 198 foreach ( array_keys( $arr ) as $key ) { 199 if ( 'hcap_hp_sig' !== $key && 0 === strpos( $key, 'hcap_hp_' ) ) { 200 return $key; 201 } 202 } 203 204 return ''; 169 205 } 170 206 … … 296 332 return $result; 297 333 } 334 335 /** 336 * Validates the honeypot field for spam prevention. 337 * 338 * @return bool True if the honeypot field is valid and empty, false otherwise. 339 */ 340 private static function check_honeypot_field(): bool { 341 if ( ! hcaptcha()->settings()->is_on( 'honeypot' ) ) { 342 return true; 343 } 344 345 // Honeypot check: require valid signature and ensure the honeypot field is empty. 346 // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.NonceVerification.Missing 347 $hp_name = self::get_hp_name( $_POST ); 348 $hp_value = Request::filter_input( INPUT_POST, $hp_name ); 349 $hp_signature = Request::filter_input( INPUT_POST, 'hcap_hp_sig' ); 350 351 // Verify nonce for logged-in users only. 352 $nonce_verified = ! is_user_logged_in() || wp_verify_nonce( $hp_signature, $hp_name ); 353 354 $check = $hp_name && $nonce_verified && '' === trim( $hp_value ); 355 356 /** 357 * Filters the result of the honeypot field check. 358 * 359 * @param bool $check True if the honeypot field is valid and empty, false otherwise. 360 */ 361 return (bool) apply_filters( 'hcap_check_honeypot_field', $check ); 362 } 363 364 /** 365 * Check Form Submit Time token. 366 * 367 * @return true|WP_Error 368 */ 369 private static function check_fst_token() { 370 if ( ! hcaptcha()->settings()->is_on( 'set_min_submit_time' ) ) { 371 return true; 372 } 373 374 /** 375 * The Form Submit Time object. 376 * 377 * @var FormSubmitTime $fst_obj 378 */ 379 $fst_obj = hcaptcha()->get( FormSubmitTime::class ); 380 381 if ( ! $fst_obj ) { 382 return hcap_get_wp_error( 'fst-no-object' ); 383 } 384 385 $min_submit_time = hcaptcha()->settings()->get( 'min_submit_time' ); 386 387 /** 388 * Filters the result of the Form Submit Time token verification. 389 * 390 * @param true|WP_Error $check True, if the Form Submit Time token is valid. WP_Error object otherwise. 391 */ 392 return apply_filters( 'hcap_verify_fst_token', $fst_obj->verify_token( $min_submit_time ) ); 393 } 298 394 } -
hcaptcha-for-forms-and-more/trunk/src/php/Helpers/DB.php
r3233179 r3359717 16 16 17 17 /** 18 * Changes a rray of items intostring of items, separated by comma and sql-escaped18 * Changes an array of items into a string of items, separated by comma and sql-escaped 19 19 * 20 20 * @see https://coderwall.com/p/zepnaw -
hcaptcha-for-forms-and-more/trunk/src/php/Helpers/HCaptcha.php
r3339595 r3359717 145 145 wp_nonce_field( $args['action'], $args['name'] ); 146 146 } 147 148 self::honeypot_display(); 147 149 } 148 150 … … 179 181 $args['id'] = (array) $args['id']; 180 182 $args['id'] = [ 181 'source' => empty( $args['id']['source'] ) ? self::$default_id['source'] : $args['id']['source'],183 'source' => (array) ( empty( $args['id']['source'] ) ? self::$default_id['source'] : $args['id']['source'] ), 182 184 'form_id' => $args['id']['form_id'] ?? self::$default_id['form_id'], 183 185 ]; … … 185 187 186 188 return $args; 189 } 190 191 /** 192 * Display a honeypot for form submissions. 193 * 194 * This method injects a honeypot field with a dynamic name and a signature. 195 * 196 * @return void 197 */ 198 private static function honeypot_display(): void { 199 if ( ! hcaptcha()->settings()->is_on( 'honeypot' ) ) { 200 return; 201 } 202 203 $hp_name = self::get_hp_name(); 204 $hp_sig = wp_create_nonce( $hp_name ); 205 206 ?> 207 <label for="<?php echo esc_attr( $hp_name ); ?>"></label> 208 <input 209 type="text" id="<?php echo esc_attr( $hp_name ); ?>" name="<?php echo esc_attr( $hp_name ); ?>" value="" 210 readonly inputmode="none" autocomplete="new-password" tabindex="-1" aria-hidden="true" 211 style="position:absolute; left:-9999px; top:auto; height:0; width:0; opacity:0;"/> 212 <input type="hidden" name="hcap_hp_sig" value="<?php echo esc_attr( $hp_sig ); ?>"/> 213 <?php 214 } 215 216 /** 217 * Get honeypot name. 218 * Made as a separate function to be able to mock it in tests. 219 * 220 * @return string 221 */ 222 protected static function get_hp_name(): string { 223 return 'hcap_hp_' . wp_generate_password( 12, false ); 187 224 } 188 225 … … 362 399 * Whether form protection is enabled/disabled via hCaptcha widget id. 363 400 * 364 * Return false (protection disabled) in only one case:401 * Return false (protection disabled) in only one case: 365 402 * when $_POST['hcaptcha-widget-id'] contains encoded id with proper hash, 366 403 * and hcap_protect_form filter confirms that the form referenced in widget id is not protected. -
hcaptcha-for-forms-and-more/trunk/src/php/Helpers/Utils.php
r3339595 r3359717 195 195 ); 196 196 } 197 198 /** 199 * Get a comma-separated list string from an array. 200 * 201 * @param array $arr Array containing a list. 202 * @param bool $sep Separator of the last element. 203 * 204 * @return string 205 */ 206 public static function list_array( array $arr, bool $sep = true ): string { 207 $separator = $sep ? 208 __( 'and', 'wpforms-lite' ) : 209 __( 'or', 'wpforms-lite' ); 210 211 $last = array_slice( $arr, - 1 ); 212 $first = implode( ', ', array_slice( $arr, 0, - 1 ) ); 213 $both = array_filter( array_merge( [ $first ], $last ) ); 214 215 return implode( ' ' . $separator . ' ', $both ); 216 } 197 217 } -
hcaptcha-for-forms-and-more/trunk/src/php/Jetpack/Base.php
r3339595 r3359717 29 29 30 30 /** 31 * Script handle. 32 */ 33 private const HANDLE = 'hcaptcha-jetpack'; 34 35 /** 31 36 * Admin script handle. 32 37 */ … … 79 84 80 85 add_filter( 'the_content', [ $this, 'the_content_filter' ] ); 86 87 add_action( 'wp_print_footer_scripts', [ $this, 'enqueue_scripts' ], 9 ); 88 add_filter( 'script_loader_tag', [ $this, 'add_type_module' ], 10, 3 ); 81 89 82 90 if ( ! $this->is_editing_jetpack_form_post() ) { … … 165 173 public function print_hcaptcha_scripts( $status ): bool { 166 174 return true; 175 } 176 177 /** 178 * Enqueue script on the frontend. 179 * 180 * @return void 181 */ 182 public function enqueue_scripts(): void { 183 if ( ! hcaptcha()->form_shown ) { 184 return; 185 } 186 187 $min = hcap_min_suffix(); 188 189 wp_enqueue_script( 190 self::HANDLE, 191 constant( 'HCAPTCHA_URL' ) . "/assets/js/hcaptcha-jetpack$min.js", 192 [ 'hcaptcha' ], 193 constant( 'HCAPTCHA_VERSION' ), 194 true 195 ); 196 } 197 198 /** 199 * Add type="module" attribute to script tag. 200 * 201 * @param string|mixed $tag Script tag. 202 * @param string $handle Script handle. 203 * @param string $src Script source. 204 * 205 * @return string 206 * @noinspection PhpUnusedParameterInspection 207 */ 208 public function add_type_module( $tag, string $handle, string $src ): string { 209 $tag = (string) $tag; 210 211 if ( self::HANDLE !== $handle ) { 212 return $tag; 213 } 214 215 return HCaptcha::add_type_module( $tag ); 167 216 } 168 217 -
hcaptcha-for-forms-and-more/trunk/src/php/Main.php
r3339595 r3359717 28 28 use HCaptcha\ElementorPro\HCaptchaHandler; 29 29 use HCaptcha\EventsManager\Booking; 30 use HCaptcha\Helpers\FormSubmitTime; 30 31 use HCaptcha\Helpers\HCaptcha; 31 32 use HCaptcha\Helpers\Pages; … … 159 160 ( new Fix() )->init(); 160 161 162 // Needs to be loaded early, as it uses short init ajax. 163 $this->load( FormSubmitTime::class ); 164 161 165 add_action( 'plugins_loaded', [ $this, 'init_hooks' ], self::LOAD_PRIORITY ); 162 166 } … … 220 224 add_action( 'login_head', [ $this, 'login_head' ] ); 221 225 add_action( 'wp_print_footer_scripts', [ $this, 'print_footer_scripts' ], 0 ); 226 add_action( 'hcap_protect_form', [ $this, 'allow_honeypot_and_fst' ], 10, 3 ); 222 227 223 228 $this->auto_verify = new AutoVerify(); … … 477 482 $div_logo_white_url = HCAPTCHA_URL . '/assets/images/hcaptcha-div-logo-white.svg'; 478 483 $bg = $settings->get_custom_theme_background() ?: 'initial'; 484 $load_fail_msg = __( 'If you see this message, hCaptcha failed to load due to site errors.', 'hcaptcha-for-forms-and-more' ); 479 485 480 486 /* language=CSS */ … … 502 508 } 503 509 510 .h-captcha iframe { 511 z-index: 1; 512 } 513 504 514 .h-captcha::before { 505 content: \'\';515 content: ""; 506 516 display: block; 507 517 position: absolute; … … 511 521 border: 1px solid transparent; 512 522 border-radius: 4px; 523 box-sizing: border-box; 524 } 525 526 .h-captcha::after { 527 content: "' . $load_fail_msg . '"; 528 font: 13px/1.35 system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; 529 display: block; 530 position: absolute; 531 top: 0; 532 left: 0; 533 box-sizing: border-box; 534 color: #ff0000; 535 opacity: 0; 536 } 537 538 .h-captcha:not(:has(iframe))::after { 539 animation: hcap-msg-fade-in .3s ease forwards; 540 animation-delay: 2s; 541 } 542 543 .h-captcha:has(iframe)::after { 544 animation: none; 545 opacity: 0; 546 } 547 548 @keyframes hcap-msg-fade-in { 549 to { opacity: 1; } 513 550 } 514 551 … … 519 556 } 520 557 558 .h-captcha[data-size="normal"]::after { 559 padding: 19px 75px 16px 10px; 560 } 561 521 562 .h-captcha[data-size="compact"]::before { 522 563 width: 156px; 523 564 height: 136px; 524 565 background-position: 50% 79%; 566 } 567 568 .h-captcha[data-size="compact"]::after { 569 padding: 10px 10px 16px 10px; 525 570 } 526 571 … … 555 600 } 556 601 557 .h-captcha[data-size="invisible"]::before { 602 .h-captcha[data-size="invisible"]::before, 603 .h-captcha[data-size="invisible"]::after { 558 604 display: none; 559 605 } … … 796 842 [ 'params' => wp_json_encode( $params ) ] 797 843 ); 844 } 845 846 /** 847 * Allow honeypot and FST on the supported forms only. 848 * At this moment, only some forms can use honeypot and fst anti-spam token protection. 849 * The supported list will be extended in the future. 850 * 851 * @param bool|mixed $value The protection status of a form. 852 * @param string[] $source The source of the form (plugin, theme, WordPress Core). 853 * @param int|string $form_id Form id. 854 * 855 * @return bool 856 * @noinspection PhpUnusedParameterInspection 857 */ 858 public function allow_honeypot_and_fst( $value, array $source, $form_id ): bool { 859 $value = (bool) $value; 860 861 $supported_forms = [ 862 [ General::class ], // General settings page. 863 [ 'WordPress' ], // WordPress Core. 864 [ 'Avada' ], // Avada theme. 865 [ 'contact-form-7/wp-contact-form-7.php' ], // Contact Form 7. 866 [ 'Divi' ], // Divi theme. 867 [ 'divi-builder/divi-builder.php' ], // Divi Builder. 868 [ 'essential-addons-for-elementor-lite/essential_adons_elementor.php' ], // Essential Addons for Elementor. 869 [ 'Extra' ], // Extra theme. 870 [ 'elementor-pro/elementor-pro.php' ], // Elementor. 871 [ 'jetpack/jetpack.php' ], // JetPack. 872 [ 'mailchimp-for-wp/mailchimp-for-wp.php' ], // MailChimp. 873 [ 'ninja-forms/ninja-forms.php' ], // Ninja Forms. 874 [ 'woocommerce/woocommerce.php' ], // WooCommerce. 875 [ 'wpforms/wpforms.php', 'wpforms-lite/wpforms.php' ], // WPForms. 876 [ 'ultimate-addons-for-gutenberg/ultimate-addons-for-gutenberg.php' ], // Spectra. 877 [ hcaptcha()->settings()->get_plugin_name() ], // Protect Content. 878 ]; 879 880 if ( ! in_array( $source, $supported_forms, true ) ) { 881 hcaptcha()->settings()->set( 'honeypot', [ '' ] ); 882 hcaptcha()->settings()->set( 'set_min_submit_time', [ '' ] ); 883 } 884 885 return $value; 798 886 } 799 887 -
hcaptcha-for-forms-and-more/trunk/src/php/Migrations/Migrations.php
r3283168 r3359717 1 1 <?php 2 2 /** 3 * Migration sclass file.3 * Migration class file. 4 4 * 5 5 * @package hcaptcha-wp … … 78 78 } 79 79 80 $this->maybe_prepare_migration_option(); 80 81 $this->init_hooks(); 81 82 } … … 112 113 $this->check_plugin_update( $migrated ); 113 114 114 $migrations = array_filter(115 get_class_methods( $this ),116 static function ( $migration ) {117 return 0 === strpos( $migration, 'migrate_' );118 }119 );120 115 $upgrade_versions = []; 121 116 122 foreach ( $ migrationsas $migration ) {117 foreach ( $this->get_migrations() as $migration ) { 123 118 $upgrade_version = $this->get_upgrade_version( $migration ); 124 119 $upgrade_versions[] = $upgrade_version; … … 153 148 } 154 149 155 // Remove any keys that are not in the migrations list. 150 // Set the current version update time if it does not exist. 151 $current_version_migrated = $migrated[ self::PLUGIN_VERSION ] ?? time(); 152 153 // Remove any keys that are not in the migration list. 156 154 $migrated = array_intersect_key( $migrated, array_flip( $upgrade_versions ) ); 157 155 158 // Store the current version. 159 $migrated[ self::PLUGIN_VERSION ] = $migrated[ self::PLUGIN_VERSION ] ?? time(); 156 // Restore the current version update time. 157 // Prevents updating the option on each request. 158 $migrated[ self::PLUGIN_VERSION ] = $current_version_migrated; 160 159 161 160 // Sort the array by version. … … 182 181 183 182 /** 183 * Maybe prepare the migration option. 184 */ 185 private function maybe_prepare_migration_option(): void { 186 $migrated = get_option( self::MIGRATED_VERSIONS_OPTION_NAME ); 187 188 // If the option is an array, it means that it is already prepared. 189 if ( is_array( $migrated ) ) { 190 return; 191 } 192 193 $migrated = []; 194 195 foreach ( $this->get_migrations() as $migration ) { 196 $upgrade_version = $this->get_upgrade_version( $migration ); 197 198 $migrated[ $upgrade_version ] = 0; 199 } 200 201 // Sort the array by version. 202 uksort( $migrated, 'version_compare' ); 203 204 update_option( self::MIGRATED_VERSIONS_OPTION_NAME, $migrated ); 205 } 206 207 /** 184 208 * Send plugin statistics. 185 209 * … … 217 241 */ 218 242 private function get_upgrade_version( string $method ): string { 219 // Find only the digits and underscores to get version number.243 // Find only the digits and underscores to get the version number. 220 244 if ( ! preg_match( '/(\d_?)+/', $method, $matches ) ) { 221 245 // @codeCoverageIgnoreStart … … 239 263 240 264 /** 241 * Output message into the log file.265 * Output the message into the log file. 242 266 * 243 267 * @param string $message Message to log. … … 344 368 } 345 369 346 // Th istwo lines is a precaution for a case if options in a new format already exist.370 // These two lines is a precaution for a case if options in a new format already exist. 347 371 $options = get_option( PluginSettingsBase::OPTION_NAME, [] ); 348 372 $options = array_merge( $new_options, $options ); … … 572 596 573 597 /** 574 * Add index to a table.598 * Add an index to a table. 575 599 * 576 600 * @param string $table_name Table. … … 605 629 // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching 606 630 } 631 632 /** 633 * Get migrations. 634 * 635 * @return string[] 636 */ 637 private function get_migrations(): array { 638 return array_filter( 639 get_class_methods( $this ), 640 static function ( $migration ) { 641 return 0 === strpos( $migration, 'migrate_' ); 642 } 643 ); 644 } 607 645 } -
hcaptcha-for-forms-and-more/trunk/src/php/NF/NF.php
r3215681 r3359717 76 76 add_filter( "ninja_forms_localize_field_{$name}_preview", [ $this, 'localize_field' ] ); 77 77 add_action( 'wp_print_footer_scripts', [ $this, 'nf_captcha_script' ], 9 ); 78 add_filter( 'script_loader_tag', [ $this, 'add_type_module' ], 10, 3 ); 78 79 } 79 80 … … 93 94 94 95 // Fix bug in Ninja forms. 95 // For template script id, they expect field->_name in admin, but field->_type on frontend.96 // For template script id, they expect field->_name in admin, but field->_type on the frontend. 96 97 // It works for NF fields as all fields have _name === _type. 97 98 … … 130 131 $search, 131 132 $search . ' style="z-index: 2;"', 132 $this->get_hcaptcha( (int)$field['id'] )133 $this->get_hcaptcha( $field['id'] ) 133 134 ); 134 135 … … 237 238 $field = (array) $field; 238 239 239 $field['settings']['hcaptcha'] = $field['settings']['hcaptcha'] ?? $this->get_hcaptcha( (int)$field['id'] );240 $field['settings']['hcaptcha'] = $field['settings']['hcaptcha'] ?? $this->get_hcaptcha( $field['id'] ); 240 241 241 242 // Mark hCaptcha as shown in any case. Needed on the preview page. … … 248 249 * Get hCaptcha. 249 250 * 250 * @param int $field_id Field id.251 * @param int|string $field_id Field id. 251 252 * 252 253 * @return string 253 254 */ 254 private function get_hcaptcha( int$field_id ): string {255 private function get_hcaptcha( $field_id ): string { 255 256 $hcaptcha_id = uniqid( 'hcaptcha-nf-', true ); 256 257 … … 288 289 ); 289 290 } 291 292 /** 293 * Add type="module" attribute to script tag. 294 * 295 * @param string|mixed $tag Script tag. 296 * @param string $handle Script handle. 297 * @param string $src Script source. 298 * 299 * @return string 300 * @noinspection PhpUnusedParameterInspection 301 */ 302 public function add_type_module( $tag, string $handle, string $src ): string { 303 $tag = (string) $tag; 304 305 if ( self::HANDLE !== $handle ) { 306 return $tag; 307 } 308 309 return HCaptcha::add_type_module( $tag ); 310 } 290 311 } -
hcaptcha-for-forms-and-more/trunk/src/php/ProtectContent/ProtectContent.php
r3319903 r3359717 123 123 */ 124 124 protected function verify(): string { 125 // It is always too fast with Pro. 126 hcaptcha()->settings()->set( 'set_min_submit_time', [ '' ] ); 127 125 128 $error_message = API::verify_post( self::NONCE, self::ACTION ); 126 129 … … 437 440 'size' => 'normal', 438 441 'id' => [ 439 'source' => hcaptcha()->settings()->get_plugin_name(),442 'source' => [ hcaptcha()->settings()->get_plugin_name() ], 440 443 'form_id' => 'protect', 441 444 ], -
hcaptcha-for-forms-and-more/trunk/src/php/Settings/Abstracts/SettingsBase.php
r3339595 r3359717 60 60 * Form fields. 61 61 * 62 * @var array 63 */ 64 protected $form_fields = [];62 * @var array|null 63 */ 64 protected $form_fields; 65 65 66 66 /** … … 470 470 */ 471 471 protected function form_fields(): array { 472 if ( empty( $this->form_fields ) ) { 473 $this->init_form_fields(); 474 array_walk( $this->form_fields, [ $this, 'set_defaults' ] ); 475 } 472 if ( null !== $this->form_fields ) { 473 return $this->form_fields; 474 } 475 476 $this->init_form_fields(); 477 array_walk( $this->form_fields, [ $this, 'set_defaults' ] ); 478 479 /** 480 * Filter the form fields. 481 * 482 * @param array $form_fields Form fields. 483 * @param array $this Settings class instance. 484 */ 485 $this->form_fields = (array) apply_filters( 'hcap_form_fields', $this->form_fields, $this ); 476 486 477 487 return $this->form_fields; … … 925 935 */ 926 936 public function sanitize_option_callback( $settings ): array { 937 $settings = (array) $settings; 938 927 939 foreach ( $settings as $key => $setting ) { 928 940 if ( ! isset( $this->form_fields[ $key ] ) ) { -
hcaptcha-for-forms-and-more/trunk/src/php/Settings/General.php
r3339595 r3359717 535 535 'helper' => __( 'Protect content of listed URLs. Please specify one URL per line. You may use regular expressions.', 'hcaptcha-for-forms-and-more' ), 536 536 ], 537 'set_min_submit_time' => [ 538 'label' => __( 'Token and Honeypot', 'hcaptcha-for-forms-and-more' ), 539 'type' => 'checkbox', 540 'section' => self::SECTION_ANTISPAM, 541 'options' => [ 542 'on' => __( 'Set Minimum Time', 'hcaptcha-for-forms-and-more' ), 543 ], 544 'helper' => __( 'Set a minimum amount of time a user must spend on a form before submitting.', 'hcaptcha-for-forms-and-more' ), 545 ], 546 'min_submit_time' => [ 547 'label' => __( 'Minimum Time to Submit the Form, sec', 'hcaptcha-for-forms-and-more' ), 548 'type' => 'number', 549 'section' => self::SECTION_ANTISPAM, 550 'default' => 2, 551 'min' => 1, 552 'helper' => __( 'Set a minimum amount of time a user must spend on a form before submitting.', 'hcaptcha-for-forms-and-more' ), 553 ], 554 'honeypot' => [ 555 'type' => 'checkbox', 556 'section' => self::SECTION_ANTISPAM, 557 'options' => [ 558 'on' => __( 'Enable Honeypot Field', 'hcaptcha-for-forms-and-more' ), 559 ], 560 'helper' => __( 'Add a honeypot field to submitted forms for early bot prevention.', 'hcaptcha-for-forms-and-more' ), 561 ], 537 562 'antispam' => [ 538 'label' => __( ' Enable anti-spam check', 'hcaptcha-for-forms-and-more' ),563 'label' => __( 'Anti-Spam check', 'hcaptcha-for-forms-and-more' ), 539 564 'type' => 'checkbox', 540 565 'section' => self::SECTION_ANTISPAM, 541 566 'options' => [ 542 'on' => __( ' Anti-spam check', 'hcaptcha-for-forms-and-more' ),567 'on' => __( 'Enable Anti-Spam check', 'hcaptcha-for-forms-and-more' ), 543 568 ], 544 569 'helper' => __( 'Enable anti-spam check of submitted forms.', 'hcaptcha-for-forms-and-more' ), 545 570 ], 546 571 'antispam_provider' => [ 547 'label' => __( 'Anti- spam provider', 'hcaptcha-for-forms-and-more' ),572 'label' => __( 'Anti-Spam Provider', 'hcaptcha-for-forms-and-more' ), 548 573 'type' => 'select', 549 574 'section' => self::SECTION_ANTISPAM, … … 593 618 'on' => __( 'Remove Data on Uninstall', 'hcaptcha-for-forms-and-more' ), 594 619 ], 595 'default' => '',596 620 'helper' => __( 'When enabled, all plugin data will be removed when uninstalling the plugin.', 'hcaptcha-for-forms-and-more' ), 597 621 ], … … 605 629 ], 606 630 'login_limit' => [ 607 'label' => __( 'Login attempts before hCaptcha', 'hcaptcha-for-forms-and-more' ),631 'label' => __( 'Login Attempts Before hCaptcha', 'hcaptcha-for-forms-and-more' ), 608 632 'type' => 'number', 609 633 'section' => self::SECTION_OTHER, … … 613 637 ], 614 638 'login_interval' => [ 615 'label' => __( 'Failed login attempts interval, min', 'hcaptcha-for-forms-and-more' ),639 'label' => __( 'Failed Login Attempts Interval, min', 'hcaptcha-for-forms-and-more' ), 616 640 'type' => 'number', 617 641 'section' => self::SECTION_OTHER, … … 621 645 ], 622 646 'delay' => [ 623 'label' => __( 'Delay showing hCaptcha, ms', 'hcaptcha-for-forms-and-more' ),647 'label' => __( 'Delay Showing hCaptcha, ms', 'hcaptcha-for-forms-and-more' ), 624 648 'type' => 'number', 625 649 'section' => self::SECTION_OTHER, … … 994 1018 // phpcs:enable WordPress.Security.NonceVerification.Missing 995 1019 1020 add_filter( 'hcap_check_honeypot_field', '__return_true' ); 1021 add_filter( 'hcap_verify_fst_token', '__return_true' ); 1022 996 1023 $result = API::verify_request( $hcaptcha_response ); 997 1024 -
hcaptcha-for-forms-and-more/trunk/src/php/Settings/Integrations.php
r3339595 r3359717 9 9 10 10 use HCaptcha\AntiSpam\AntiSpam; 11 use HCaptcha\AntiSpam\Honeypot; 11 12 use HCaptcha\Helpers\Utils; 12 13 use KAGG\Settings\Abstracts\SettingsBase; … … 187 188 /** 188 189 * Filter list of plugin to activate. 190 * Proceed with the special case for blocksy companion plugins. 191 * Companion plugins produce a fatal error when activated together. 189 192 * 190 193 * @param array|mixed $plugins List of plugins. … … 197 200 $plugins = (array) $plugins; 198 201 199 // Companion plugins produce a fatal error when activated together.200 202 $companions = [ 201 203 'blocksy-companion-pro/blocksy-companion.php', 202 204 'blocksy-companion/blocksy-companion.php', 203 205 ]; 206 207 if ( ! array_intersect( $plugins, $companions ) ) { 208 return $plugins; 209 } 204 210 205 211 // Remove Companion plugins from the list to activate. … … 1852 1858 * @return array The updated form field data containing antispam configurations. 1853 1859 */ 1854 pr ivatefunction prepare_antispam_data( string $status, array $form_field ): array {1860 protected function prepare_antispam_data( string $status, array $form_field ): array { 1855 1861 static $all_protected_forms; 1856 1862 1857 1863 if ( ! $all_protected_forms ) { 1858 $all_protected_forms = AntiSpam::get_protected_forms();1864 $all_protected_forms = array_merge( Honeypot::get_protected_forms(), AntiSpam::get_protected_forms() ); 1859 1865 } 1860 1866 … … 1866 1872 } 1867 1873 1868 $helper = 'hcaptcha' === $type1869 ? __( 'The form is protected by the hCaptcha antispam service.', 'hcaptcha-for-forms-and-more' )1870 : __( 'The form is protected by the native antispam service.', 'hcaptcha-for-forms-and-more' );1871 1872 1874 foreach ( $protected_forms[ $status ] as $form ) { 1873 1875 if ( 1874 1876 'native' === $type || 1875 ( 'hcaptcha' === $type && $settings->is( $status, $form ) ) 1877 ( 'hcaptcha' === $type && $settings->is( $status, $form ) ) || 1878 ( 'honeypot' === $type && $settings->is( $status, $form ) ) 1876 1879 ) { 1877 $form_field['data'][ $form ] = [ 'antispam' => $type ]; 1878 $form_field['helpers'][ $form ] = $helper; 1880 $form_field = $this->prepare_form_field_antispam_data( $form_field, $form, $type ); 1879 1881 } 1880 1882 } 1881 1883 } 1882 1884 1885 return $this->format_form_antispam_helpers( $form_field ); 1886 } 1887 1888 /** 1889 * Prepare form field antispam data. 1890 * 1891 * @param array $form_field Form field. 1892 * @param string $form Form name. 1893 * @param string $type Antispam type. 1894 * 1895 * @return array 1896 */ 1897 private function prepare_form_field_antispam_data( array $form_field, string $form, string $type ): array { 1898 $form_field['data'][ $form ]['antispam'] = ''; 1899 $form_field['data'][ $form ][ "antispam-$type" ] = ''; 1900 $form_field['helpers'][ $form ][] = $type; 1901 1883 1902 return $form_field; 1884 1903 } 1904 1905 /** 1906 * Format antispam helpers. 1907 * 1908 * @param array $form_field Form field. 1909 * 1910 * @return array 1911 */ 1912 private function format_form_antispam_helpers( array $form_field ): array { 1913 if ( ! isset( $form_field['helpers'] ) ) { 1914 return $form_field; 1915 } 1916 1917 $helpers = [ 1918 'honeypot' => __( 'hCaptcha honeypot', 'hcaptcha-for-forms-and-more' ), 1919 'native' => __( 'native antispam service', 'hcaptcha-for-forms-and-more' ), 1920 'hcaptcha' => __( 'hCaptcha antispam service', 'hcaptcha-for-forms-and-more' ), 1921 ]; 1922 1923 foreach ( $form_field['helpers'] as $form => $helper_arr ) { 1924 $helper_arr = array_map( 1925 static function ( $type ) use ( $helpers ) { 1926 return $helpers[ $type ]; 1927 }, 1928 $helper_arr 1929 ); 1930 1931 $helper = sprintf( 1932 /* translators: 1: form protection methods. */ 1933 __( 'The form is protected by the %1$s.', 'hcaptcha-for-forms-and-more' ), 1934 Utils::list_array( $helper_arr ) 1935 ); 1936 1937 $form_field['helpers'][ $form ] = $helper; 1938 } 1939 1940 return $form_field; 1941 } 1885 1942 } -
hcaptcha-for-forms-and-more/trunk/src/php/Settings/ListPageBase.php
r3265103 r3359717 348 348 * Includes: 349 349 * 1. A list of date filter options for the datepicker module. 350 * 2. Currently selected filter or date range values. Last "X" days, or i.e. Feb 8, 2023 - Mar 9, 2023. 350 * 2. Currently selected filter or date range values. 351 * Last "X" days, or i.e., Feb 8, 2023 - Mar 9, 2023. 351 352 * 3. Assigned timespan dates. 352 353 * … … 402 403 $dates = (string) filter_input( INPUT_GET, 'date', FILTER_SANITIZE_FULL_SPECIAL_CHARS ); 403 404 404 // Return default timespan if dates are empty.405 // Return the default timespan if dates are empty. 405 406 if ( empty( $dates ) ) { 406 407 return $this->get_timespan_dates( self::DEFAULT_TIMESPAN_DAYS ); … … 411 412 [ $start_date, $end_date ] = explode( self::TIMESPAN_DELIMITER, $dates ); 412 413 413 // Return default timespan if the start date is more recent than the end date.414 // Return the default timespan if the start date is more recent than the end date. 414 415 if ( strtotime( $start_date ) > strtotime( $end_date ) ) { 415 416 return $this->get_timespan_dates( self::DEFAULT_TIMESPAN_DAYS ); … … 427 428 } 428 429 429 // Set time to 0:0:0 for start date and 23:59:59 forend date.430 // Set time to 0:0:0 for the start date and 23:59:59 for the end date. 430 431 $start_date = $start_date->setTime( 0, 0 ); 431 432 $end_date = $end_date->setTime( 23, 59, 59 ); … … 434 435 $current_date = date_create_immutable( 'now', $timezone )->setTime( 23, 59, 59 ); 435 436 436 // Calculate day difference only if the end date is equal to the current date.437 // Calculate the day difference only if the end date is equal to the current date. 437 438 if ( ! $current_date->diff( $end_date )->format( '%a' ) ) { 438 439 $days_diff = $end_date->diff( $start_date )->format( '%a' ); … … 476 477 [ $timespan_key, $timespan_label ] = $this->get_date_filter_choices( $days ); 477 478 478 // Bail early ,if the given number of days is NOT a number nor a numeric string.479 // Bail early if the given number of days is NOT a number nor a numeric string. 479 480 if ( ! is_numeric( $days ) ) { 480 481 return [ '', '', $timespan_key, $timespan_label ]; … … 501 502 $end_date, // WP timezone. 502 503 $timespan_key, // i.e. 30. 503 $timespan_label, // i.e. Last 30 days.504 $timespan_label, // i.e., Last 30 days. 504 505 ]; 505 506 } … … 525 526 ]; 526 527 527 // Bail early ,and return the full list of options.528 // Bail early and return the full list of options. 528 529 if ( is_null( $key ) ) { 529 530 return $choices; … … 547 548 */ 548 549 private function concat_dates( $start_date, $end_date, $fallback = '' ) { 549 // Bail early ,if the given dates are not valid.550 // Bail early if the given dates are not valid. 550 551 if ( ! ( $start_date instanceof DateTimeImmutable ) || ! ( $end_date instanceof DateTimeImmutable ) ) { 551 552 return $fallback; … … 562 563 563 564 /** 564 * Get the ISO 639-2 Language Code from user/site locale.565 * Get the ISO 639-2 Language Code from the user / site locale. 565 566 * 566 567 * @see http://www.loc.gov/standards/iso639-2/php/code_list.php -
hcaptcha-for-forms-and-more/trunk/src/php/Settings/PluginSettingsBase.php
r3283168 r3359717 107 107 108 108 /** 109 * Get plugin base name.109 * Get a plugin base name. 110 110 * 111 111 * @return string … … 176 176 177 177 /** 178 * Show settings page.178 * Show the settings page. 179 179 * 180 180 * @return void … … 206 206 207 207 /** 208 * Show submit button in any place of the form.208 * Show the submit button in any place of the form. 209 209 * 210 210 * @return void -
hcaptcha-for-forms-and-more/trunk/src/php/Settings/Settings.php
r3283168 r3359717 16 16 * Class Settings 17 17 * 18 * The central point to get settings from.18 * The central point is to get settings from. 19 19 */ 20 20 class Settings implements SettingsInterface { … … 115 115 116 116 /** 117 * Get a ctive tab name.117 * Get an active tab name. 118 118 * 119 119 * @return string … … 126 126 127 127 /** 128 * Get plugin name.128 * Get the plugin name. 129 129 * 130 130 * @return string … … 235 235 236 236 /** 237 * Check whether option value equals to the compared one.237 * Check whether the option value equals to the compared one. 238 238 * 239 239 * @param string $key Setting name. … … 253 253 254 254 /** 255 * Check whether option value is 'on' or just non-empty.255 * Check whether the option value is 'on' or just non-empty. 256 256 * 257 257 * @param string $key Setting name. … … 260 260 */ 261 261 public function is_on( string $key ): bool { 262 return ! empty( $this->get( $key ) ); 262 $value = $this->get( $key ); 263 264 if ( is_array( $value ) ) { 265 return [ 'on' ] === $value; 266 } 267 268 return ! empty( $value ); 263 269 } 264 270 … … 318 324 319 325 /** 320 * Get secret key.326 * Get a secret key. 321 327 * 322 328 * @return string … … 333 339 334 340 /** 335 * Get theme.341 * Get a theme. 336 342 * 337 343 * @return string -
hcaptcha-for-forms-and-more/trunk/src/php/Spectra/Form.php
r3319903 r3359717 64 64 add_filter( 'hcap_print_hcaptcha_scripts', [ $this, 'print_hcaptcha_scripts' ], 0 ); 65 65 add_action( 'wp_print_footer_scripts', [ $this, 'enqueue_scripts' ], 9 ); 66 add_filter( 'script_loader_tag', [ $this, 'add_type_module' ], 10, 3 ); 66 67 } 67 68 … … 126 127 // phpcs:enable WordPress.Security.NonceVerification.Missing 127 128 128 $_POST[ self::NONCE ] = $form_data[ self::NONCE ] ?? ''; 129 $widget_id_name = 'hcaptcha-widget-id'; 130 $hp_sig_name = 'hcap_hp_sig'; 131 $token_name = 'hcap_fst_token'; 132 $hp_name = API::get_hp_name( $form_data ); 133 134 $_POST[ self::NONCE ] = $form_data[ self::NONCE ] ?? ''; 135 $_POST[ $widget_id_name ] = $form_data[ $widget_id_name ] ?? ''; 136 $_POST[ $hp_sig_name ] = $form_data[ $hp_sig_name ] ?? ''; 137 $_POST[ $hp_name ] = $form_data[ $hp_name ] ?? ''; 138 $_POST[ $token_name ] = $form_data[ $token_name ] ?? ''; 129 139 130 140 $error_message = API::verify( $this->get_entry( $form_data ) ); 131 141 132 unset( $_POST[ self::NONCE ] ); 142 unset( 143 $_POST[ self::NONCE ], 144 $_POST[ $widget_id_name ], 145 $_POST[ $hp_sig_name ], 146 $_POST[ $hp_name ], 147 $_POST[ $token_name ] 148 ); 133 149 134 150 if ( null === $error_message ) { … … 191 207 true 192 208 ); 209 } 210 211 /** 212 * Add type="module" attribute to script tag. 213 * 214 * @param string|mixed $tag Script tag. 215 * @param string $handle Script handle. 216 * @param string $src Script source. 217 * 218 * @return string 219 * @noinspection PhpUnusedParameterInspection 220 */ 221 public function add_type_module( $tag, string $handle, string $src ): string { 222 $tag = (string) $tag; 223 224 if ( self::HANDLE !== $handle ) { 225 return $tag; 226 } 227 228 return HCaptcha::add_type_module( $tag ); 193 229 } 194 230 -
hcaptcha-for-forms-and-more/trunk/src/php/WC/Checkout.php
r3319903 r3359717 73 73 add_filter( 'rest_request_before_callbacks', [ $this, 'verify_block' ], 10, 3 ); 74 74 add_action( 'wp_print_footer_scripts', [ $this, 'enqueue_scripts' ], 9 ); 75 add_filter( 'script_loader_tag', [ $this, 'add_type_module' ], 10, 3 ); 75 76 } 76 77 … … 158 159 } 159 160 160 $widget_id_name = 'hcaptcha-widget-id'; 161 $hcaptcha_response_name = 'h-captcha-response'; 161 $params = $request->get_params(); 162 $widget_id_name = 'hcaptcha-widget-id'; 163 $response_name = 'h-captcha-response'; 164 $hp_sig_name = 'hcap_hp_sig'; 165 $token_name = 'hcap_fst_token'; 166 $hp_name = API::get_hp_name( $params ); 167 162 168 $_POST[ $widget_id_name ] = $request->get_param( $widget_id_name ); 163 $hcaptcha_response = $request->get_param( $hcaptcha_response_name ); 164 165 $error_message = API::verify_request( $hcaptcha_response ); 169 $_POST[ $response_name ] = $request->get_param( $response_name ); 170 $_POST[ $hp_sig_name ] = $request->get_param( $hp_sig_name ); 171 $_POST[ $hp_name ] = $request->get_param( $hp_name ); 172 $_POST[ $token_name ] = $request->get_param( $token_name ); 173 174 $error_message = API::verify_request(); 166 175 167 176 if ( null === $error_message ) { … … 202 211 } 203 212 } 213 214 /** 215 * Add type="module" attribute to script tag. 216 * 217 * @param string|mixed $tag Script tag. 218 * @param string $handle Script handle. 219 * @param string $src Script source. 220 * 221 * @return string 222 * @noinspection PhpUnusedParameterInspection 223 */ 224 public function add_type_module( $tag, string $handle, string $src ): string { 225 $tag = (string) $tag; 226 227 if ( self::BLOCK_HANDLE !== $handle ) { 228 return $tag; 229 } 230 231 return HCaptcha::add_type_module( $tag ); 232 } 204 233 } -
hcaptcha-for-forms-and-more/trunk/src/php/WPForms/Form.php
r3319903 r3359717 30 30 31 31 /** 32 * Script handle. 33 */ 34 private const HANDLE = 'hcaptcha-wpforms'; 35 36 /** 32 37 * Whether hCaptcha should be auto-added to any form. 33 38 * … … 82 87 add_filter( 'wpforms_process_bypass_captcha', '__return_true' ); 83 88 add_action( 'wpforms_process', [ $this, 'verify' ], 10, 3 ); 89 90 add_action( 'wp_print_footer_scripts', [ $this, 'enqueue_scripts' ], 9 ); 84 91 } 85 92 … … 315 322 316 323 /** 324 * Enqueue scripts. 325 * 326 * @return void 327 */ 328 public function enqueue_scripts(): void { 329 if ( ! hcaptcha()->form_shown ) { 330 return; 331 } 332 333 $min = hcap_min_suffix(); 334 335 wp_enqueue_script( 336 self::HANDLE, 337 HCAPTCHA_URL . "/assets/js/hcaptcha-wpforms$min.js", 338 [ 'jquery', 'hcaptcha' ], 339 HCAPTCHA_VERSION, 340 true 341 ); 342 } 343 344 /** 317 345 * Show hCaptcha. 318 346 * -
hcaptcha-for-forms-and-more/trunk/src/php/includes/request.php
r3319903 r3359717 96 96 'bad-signature' => __( 'Bad hCaptcha signature!', 'hcaptcha-for-forms-and-more' ), 97 97 'spam' => __( 'Anti-spam check failed.', 'hcaptcha-for-forms-and-more' ), 98 'fst-no-object' => __( 'FST object does not exist.', 'hcaptcha-for-forms-and-more' ), 99 'fst-too-fast' => __( 'Form submitted too quickly.', 'hcaptcha-for-forms-and-more' ), 100 'fst-replayed-or-expired' => __( 'Token replayed or expired.', 'hcaptcha-for-forms-and-more' ), 101 'fst-expired' => __( 'Token expired.', 'hcaptcha-for-forms-and-more' ), 98 102 ] 99 103 ); … … 125 129 126 130 return $header . ' ' . implode( '; ', $message_arr ); 131 } 132 133 /** 134 * Get WP_Error from hCaptcha error code. 135 * 136 * @param string|string[] $error_codes Error codes. 137 * 138 * @return WP_Error 139 */ 140 function hcap_get_wp_error( $error_codes ): WP_Error { 141 $error_codes = (array) $error_codes; 142 $errors = hcap_get_error_messages(); 143 $wp_error = new WP_Error(); 144 145 foreach ( $error_codes as $error_code ) { 146 if ( array_key_exists( $error_code, $errors ) ) { 147 $wp_error->add( $error_code, $errors[ $error_code ] ); 148 } 149 } 150 151 return $wp_error; 127 152 } 128 153 -
hcaptcha-for-forms-and-more/trunk/vendor/autoload.php
r3339595 r3359717 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit e907ee6af17ec21150d2317fc40abfc9::getLoader();22 return ComposerAutoloaderInit0948d9ad69a9f4852d35c417b9397c22::getLoader(); -
hcaptcha-for-forms-and-more/trunk/vendor/composer/autoload_classmap.php
r3339595 r3359717 24 24 'HCaptcha\\Affiliates\\Register' => $baseDir . '/src/php/Affiliates/Register.php', 25 25 'HCaptcha\\AntiSpam\\AntiSpam' => $baseDir . '/src/php/AntiSpam/AntiSpam.php', 26 'HCaptcha\\AntiSpam\\Honeypot' => $baseDir . '/src/php/AntiSpam/Honeypot.php', 26 27 'HCaptcha\\AntiSpam\\ProviderBase' => $baseDir . '/src/php/AntiSpam/ProviderBase.php', 27 28 'HCaptcha\\Asgaros\\Base' => $baseDir . '/src/php/Asgaros/Base.php', … … 93 94 'HCaptcha\\Helpers\\API' => $baseDir . '/src/php/Helpers/API.php', 94 95 'HCaptcha\\Helpers\\DB' => $baseDir . '/src/php/Helpers/DB.php', 96 'HCaptcha\\Helpers\\FormSubmitTime' => $baseDir . '/src/php/Helpers/FormSubmitTime.php', 95 97 'HCaptcha\\Helpers\\HCaptcha' => $baseDir . '/src/php/Helpers/HCaptcha.php', 96 98 'HCaptcha\\Helpers\\Minify\\CSS' => $baseDir . '/src/php/Helpers/Minify/CSS.php', -
hcaptcha-for-forms-and-more/trunk/vendor/composer/autoload_real.php
r3339595 r3359717 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit e907ee6af17ec21150d2317fc40abfc95 class ComposerAutoloaderInit0948d9ad69a9f4852d35c417b9397c22 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit e907ee6af17ec21150d2317fc40abfc9', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit0948d9ad69a9f4852d35c417b9397c22', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit e907ee6af17ec21150d2317fc40abfc9', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit0948d9ad69a9f4852d35c417b9397c22', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit e907ee6af17ec21150d2317fc40abfc9::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInit0948d9ad69a9f4852d35c417b9397c22::getInitializer($loader)); 33 33 34 34 $loader->setClassMapAuthoritative(true); -
hcaptcha-for-forms-and-more/trunk/vendor/composer/autoload_static.php
r3339595 r3359717 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit e907ee6af17ec21150d2317fc40abfc97 class ComposerStaticInit0948d9ad69a9f4852d35c417b9397c22 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 52 52 'HCaptcha\\Affiliates\\Register' => __DIR__ . '/../..' . '/src/php/Affiliates/Register.php', 53 53 'HCaptcha\\AntiSpam\\AntiSpam' => __DIR__ . '/../..' . '/src/php/AntiSpam/AntiSpam.php', 54 'HCaptcha\\AntiSpam\\Honeypot' => __DIR__ . '/../..' . '/src/php/AntiSpam/Honeypot.php', 54 55 'HCaptcha\\AntiSpam\\ProviderBase' => __DIR__ . '/../..' . '/src/php/AntiSpam/ProviderBase.php', 55 56 'HCaptcha\\Asgaros\\Base' => __DIR__ . '/../..' . '/src/php/Asgaros/Base.php', … … 121 122 'HCaptcha\\Helpers\\API' => __DIR__ . '/../..' . '/src/php/Helpers/API.php', 122 123 'HCaptcha\\Helpers\\DB' => __DIR__ . '/../..' . '/src/php/Helpers/DB.php', 124 'HCaptcha\\Helpers\\FormSubmitTime' => __DIR__ . '/../..' . '/src/php/Helpers/FormSubmitTime.php', 123 125 'HCaptcha\\Helpers\\HCaptcha' => __DIR__ . '/../..' . '/src/php/Helpers/HCaptcha.php', 124 126 'HCaptcha\\Helpers\\Minify\\CSS' => __DIR__ . '/../..' . '/src/php/Helpers/Minify/CSS.php', … … 240 242 { 241 243 return \Closure::bind(function () use ($loader) { 242 $loader->prefixLengthsPsr4 = ComposerStaticInit e907ee6af17ec21150d2317fc40abfc9::$prefixLengthsPsr4;243 $loader->prefixDirsPsr4 = ComposerStaticInit e907ee6af17ec21150d2317fc40abfc9::$prefixDirsPsr4;244 $loader->classMap = ComposerStaticInit e907ee6af17ec21150d2317fc40abfc9::$classMap;244 $loader->prefixLengthsPsr4 = ComposerStaticInit0948d9ad69a9f4852d35c417b9397c22::$prefixLengthsPsr4; 245 $loader->prefixDirsPsr4 = ComposerStaticInit0948d9ad69a9f4852d35c417b9397c22::$prefixDirsPsr4; 246 $loader->classMap = ComposerStaticInit0948d9ad69a9f4852d35c417b9397c22::$classMap; 245 247 246 248 }, null, ClassLoader::class); -
hcaptcha-for-forms-and-more/trunk/vendor/composer/installed.php
r3339595 r3359717 2 2 'root' => array( 3 3 'name' => 'hcaptcha/hcaptcha-wordpress-plugin', 4 'pretty_version' => '4.1 6.0',5 'version' => '4.1 6.0.0',6 'reference' => ' a7c7adcad35de74072aec91cefc35ea305d55592',4 'pretty_version' => '4.17.0', 5 'version' => '4.17.0.0', 6 'reference' => '40e0ab01cd7c49bbc7cffe4a5a631783ff44e925', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'hcaptcha/hcaptcha-wordpress-plugin' => array( 14 'pretty_version' => '4.1 6.0',15 'version' => '4.1 6.0.0',16 'reference' => ' a7c7adcad35de74072aec91cefc35ea305d55592',14 'pretty_version' => '4.17.0', 15 'version' => '4.17.0.0', 16 'reference' => '40e0ab01cd7c49bbc7cffe4a5a631783ff44e925', 17 17 'type' => 'wordpress-plugin', 18 18 'install_path' => __DIR__ . '/../../',
Note: See TracChangeset
for help on using the changeset viewer.