diff --git a/.distignore b/.distignore
new file mode 100644
index 0000000..09c71ef
--- /dev/null
+++ b/.distignore
@@ -0,0 +1,34 @@
+/.wordpress-org
+/.git
+/.github
+/.cursor
+/node_modules
+/tests
+/bin
+/vendor/bin
+/vendor/squizlabs
+/vendor/phpunit
+/vendor/phpstan
+/vendor/dealerdirect
+/vendor/wp-coding-standards
+/vendor/phpcompatibility
+/vendor/sirbrillig
+/vendor/phpcsstandards
+
+.distignore
+.gitignore
+.editorconfig
+.wp-env.json
+.phpcs.xml
+phpcs.xml
+phpunit.xml
+phpstan.neon
+package.json
+package-lock.json
+bun.lock
+CODE_OF_CONDUCT.md
+CITATION.cff
+notes
+*.bak
+.env
+.env.example
diff --git a/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
similarity index 100%
rename from CODE_OF_CONDUCT.md
rename to .github/CODE_OF_CONDUCT.md
diff --git a/.gitignore b/.gitignore
index c7697f8..3d1e14d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,17 +11,29 @@
# Dev dependencies
node_modules/
vendor
+.env
# Tests
+tests/playwright/test-results/
+tests/playwright/playwright-report/
+tests/playwright/.cache/
tests/test-results/
tests/playwright-report/
tests/blob-report/
-tests/playwright/.cache/
+playwright-report/
+test-results/
tests/.auth/
tests/phpunit/.cache
+tests/backstop/backstop_data/bitmaps_test/
+tests/backstop/backstop_data/html_report/
+tests/backstop/backstop_data/ci_report/
+tests/backstop/backstop_data/json_report/
# Build
build/*
# WordPress
wordpress/
+
+# Python
+__pycache__/
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..521a9f7
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+legacy-peer-deps=true
diff --git a/.wp-env.json b/.wp-env.json
index 29a63b6..b2b9780 100644
--- a/.wp-env.json
+++ b/.wp-env.json
@@ -2,7 +2,9 @@
"core": null,
"phpVersion": "7.4",
"themes": ["WordPress/twentytwentyfive"],
- "plugins": [],
+ "plugins": [
+ "https://downloads.wordpress.org/plugin/plugin-check.zip"
+ ],
"mappings": {
"wp-content/plugins/cooked": "."
},
diff --git a/CITATION.cff b/CITATION.cff
index 6a63f36..e7f6023 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -6,7 +6,7 @@ authors:
given-names: Justin
- family-names: Tresova
given-names: Armand
-version: 1.16.0
+version: 1.16.1
doi: 10.5281/zenodo.1171250
date-released: 2017-05-08
url: "https://github.com/XjSv/cooked"
diff --git a/SECURITY.md b/SECURITY.md
index 019492e..850d6bc 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -5,8 +5,8 @@ Versions that are currently being supported with security updates.
| Version | Supported |
| ----------- | ------------------ |
-| 1.15.0 | :white_check_mark: |
-| <= 1.14.0 | :x: |
+| 1.16.1 | :white_check_mark: |
+| <= 1.16.1 | :x: |
## Reporting a Vulnerability
diff --git a/assets/admin/css/style.css b/assets/admin/css/style.css
index a9bab1f..f736ee4 100644
--- a/assets/admin/css/style.css
+++ b/assets/admin/css/style.css
@@ -30,9 +30,21 @@ td.column-featured_image { width:50px; text-align:center; }
body.post-type-cp_recipe #titlediv #title { box-shadow:none; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; padding:0 12px; font-weight:400; font-size:19px; letter-spacing:0; height:44px; }
body.post-type-cp_recipe #titlediv #title-prompt-text { font-size:15px; color:#888; font-weight:400; letter-spacing:0; padding:12px 15px; }
-/* TinyMCE fullscreen above admin menu and Cooked sticky UI */
-body.post-type-cp_recipe .mce-fullscreen {
- z-index: 100100 !important;
+body.mce-fullscreen #cooked-recipe-tabs {
+ z-index: auto;
+}
+
+body.mce-fullscreen #adminmenumain {
+ display: none;
+}
+
+body.mce-fullscreen #cooked_recipe_settings .wp-editor-wrap:not(:has(.mce-fullscreen)),
+body.mce-fullscreen #cooked-directions-builder .cooked-direction-block:not(:has(.mce-fullscreen)) {
+ visibility: hidden;
+}
+
+body.mce-fullscreen div.mce-tinymce.mce-fullscreen {
+ z-index: 100010;
}
#cooked-settings-prewrap { display:flex; justify-content:center; }
@@ -56,7 +68,18 @@ body.post-type-cp_recipe .mce-fullscreen {
#cooked-settings-wrap.is-stuck .cooked-settings-update-button { position:fixed; top:35px; right:11px; z-index:100001; }
-#cooked-recipe-tabs { list-style:none; padding:0; margin:0; position:absolute; top:0; left:0; width:100%; }
+#cooked-recipe-tabs {
+ list-style:none;
+ padding:0;
+ margin:0;
+ position:sticky;
+ top: var(--wp-admin--admin-bar--height, 0px);
+ z-index: 1000;
+ width:100%;
+}
+#cooked_recipe_settings.stuck #cooked-recipe-tabs {
+ box-shadow: 0 3px 50px rgba(0,0,0,0.25);
+}
#cooked-recipe-tabs li { font-size:0.9rem; line-height:3rem; height:3rem; font-weight:500; display:inline-block; padding:0 1.25rem; margin:0; color:#fff; }
#cooked-recipe-tabs li:hover { cursor:pointer; }
#cooked-recipe-tabs li.active,
@@ -66,18 +89,7 @@ body.post-type-cp_recipe .mce-fullscreen {
#cooked-recipe-tabs li.cooked-loading:hover { background:none; color:#fff; }
#cooked_recipe_settings.cooked-loading #cooked-recipe-tabs li.cooked-loading { opacity:1; }
-#cooked_recipe_settings .inside { padding-top:60px; margin: 0}
-#cooked_recipe_settings.stuck #cooked-recipe-tabs {
- position: fixed;
- width: auto;
- top: 32px;
- left: 23px;
- z-index: 100000;
- margin-left: 160px;
- box-shadow: 0 3px 50px rgba(0,0,0,0.25);
-}
-
-#cooked_recipe_settings.stuck #cooked-recipe-tabs li.cooked-loading { right:160px; }
+#cooked_recipe_settings .inside { padding: 0; margin: 0}
.cooked-recipe-tab-content-wrapper .cooked-recipe-tab-content { display:none; }
.cooked-recipe-tab-content-wrapper .cooked-recipe-tab-content:first-child { display:block; }
@@ -159,7 +171,10 @@ body.post-type-cp_recipe .mce-fullscreen {
#cooked_recipe_settings .recipe-setting-block .cooked-html-block h3.cooked-settings-title { width:100%; color:#333; }
#cooked_recipe_settings .recipe-setting-block .cooked-html-block.valid { background:#fff; border:2px solid #0aa780; box-shadow:none; border-radius:5px; }
#cooked_recipe_settings .recipe-setting-block .cooked-html-block.valid > .cooked-settings-title { color:#0aa780; }
-#cooked_recipe_settings .recipe-setting-block .cooked-html-block.expired { border:2px solid #ca4a20; }
+#cooked_recipe_settings .recipe-setting-block .cooked-html-block.expired,
+#cooked_recipe_settings .recipe-setting-block .cooked-html-block.invalid { border:2px solid #ca4a20; }
+#cooked_recipe_settings .recipe-setting-block .cooked-html-block.expired > .cooked-settings-title,
+#cooked_recipe_settings .recipe-setting-block .cooked-html-block.invalid > .cooked-settings-title { color:#ca4a20; }
/* Heading Element Styles */
#cooked-ingredients-builder .cooked-ingredient-block:hover > .cooked-heading-name,
@@ -424,7 +439,6 @@ body .button.button-cooked-reset:hover { color:#555; }
overflow-x: auto;
scrollbar-width: none;
-ms-overflow-style: none;
- top: 0;
width: 100%;
}
#cooked-recipe-tabs::-webkit-scrollbar {
@@ -433,13 +447,6 @@ body .button.button-cooked-reset:hover { color:#555; }
#cooked-recipe-tabs li {
float: none;
}
- #cooked_recipe_settings.stuck #cooked-recipe-tabs {
- position: fixed;
- top: 32px;
- left: 0;
- width: 100%;
- margin-left: 0;
- }
}
/* Recipe Gallery */
@@ -753,19 +760,7 @@ body .button.button-cooked-reset:hover { color:#555; }
#cooked-recipe-tabs li .cooked-icon { display:none; }
}
-@media screen and ( max-width: 960px ) {
- #cooked_recipe_settings.stuck #cooked-recipe-tabs { margin-left:36px; }
-}
-
@media screen and ( max-width: 768px ) {
- #cooked_recipe_settings.stuck #cooked-recipe-tabs {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- margin-left: 0;
- box-shadow: 0 3px 50px rgba(0,0,0,0.25);
- }
#cooked_recipe_settings .cooked-clearfix:has(> .cooked-setting-column-14) {
display: grid;
grid-template-columns: 1fr 1fr;
@@ -784,6 +779,9 @@ body .button.button-cooked-reset:hover { color:#555; }
}
@media screen and ( max-width: 600px ) {
+ #cooked-recipe-tabs {
+ top: 0;
+ }
#cooked_recipe_settings .recipe-setting-block h3.cooked-settings-title {
display: flex;
flex-wrap: wrap;
@@ -909,10 +907,6 @@ body .button.button-cooked-reset:hover { color:#555; }
#cooked_recipe_settings .cooked-clearfix:has(> .cooked-setting-column-14) {
grid-template-columns: 1fr;
}
-
- #cooked_recipe_settings.stuck #cooked-recipe-tabs {
- width: 100%;
- }
}
/* Substitution Fields */
diff --git a/assets/admin/css/style.min.css b/assets/admin/css/style.min.css
index 11547ac..0b777e2 100644
--- a/assets/admin/css/style.min.css
+++ b/assets/admin/css/style.min.css
@@ -1 +1 @@
-.cooked-clearfix:after{content:"";display:table;clear:both}#post-body-content #postdivrich{display:none}body.post-type-cp_recipe .wp-list-table tfoot th.check-column,body.post-type-cp_recipe .wp-list-table thead th.check-column{padding:15px 0 0 7px}body.post-type-cp_recipe .wp-list-table tfoot td,body.post-type-cp_recipe .wp-list-table tfoot th,body.post-type-cp_recipe .wp-list-table thead td,body.post-type-cp_recipe .wp-list-table thead th{padding:10px 10px}body.post-type-cp_recipe .wp-list-table tfoot th.sortable a,body.post-type-cp_recipe .wp-list-table tfoot th.sorted a,body.post-type-cp_recipe .wp-list-table thead th.sortable a,body.post-type-cp_recipe .wp-list-table thead th.sorted a{padding-left:0;padding-right:0}body.post-type-cp_recipe .wp-list-table tbody th.check-column{padding:15px 0 0 10px}body.post-type-cp_recipe .wp-list-table tbody td,body.post-type-cp_recipe .wp-list-table tbody th{padding:12px 10px}body.post-type-cp_recipe .wp-list-table tbody td.column-title strong{margin-top:6px}body.post-type-cp_recipe .wp-list-table tbody td.column-title strong .row-title{padding-top:10px;font-size:1rem!important}th.column-featured_image{width:50px;text-align:center}td.column-featured_image{width:50px;text-align:center}.cooked-admin-recipes-list-image img{width:49px;height:auto;border-radius:3px;position:relative;top:3px}body.post-type-cp_recipe #titlediv #title{box-shadow:none;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:0 12px;font-weight:400;font-size:19px;letter-spacing:0;height:44px}body.post-type-cp_recipe #titlediv #title-prompt-text{font-size:15px;color:#888;font-weight:400;letter-spacing:0;padding:12px 15px}body.post-type-cp_recipe .mce-fullscreen{z-index:100100!important}#cooked-settings-prewrap{display:flex;justify-content:center}#cooked-settings-wrap{position:relative;border-radius:10px;margin:40px 40px 40px 20px;max-width:1200px;min-width:1000px;background:#fff;box-shadow:0 4px 4px rgba(0,0,0,.05),0 8px 8px rgba(0,0,0,.05),0 32px 32px rgba(0,0,0,.05),0 64px 64px rgba(0,0,0,.05)}#cooked-settings-wrap.is-stuck{position:static!important}#cooked-settings-wrap .cooked-settings-update-button{position:absolute;top:30px;right:30px}#cooked-settings-wrap .cooked-settings-update-button>.button-primary{box-shadow:none;border:none}#cooked-settings-wrap.is-stuck .cooked-settings-update-button{position:fixed;top:35px;right:11px;z-index:100001}#cooked-recipe-tabs{list-style:none;padding:0;margin:0;position:absolute;top:0;left:0;width:100%}#cooked-recipe-tabs li{font-size:.9rem;line-height:3rem;height:3rem;font-weight:500;display:inline-block;padding:0 1.25rem;margin:0;color:#fff}#cooked-recipe-tabs li:hover{cursor:pointer}#cooked-recipe-tabs li.active,#cooked-recipe-tabs li.active:hover{cursor:default}#cooked-recipe-tabs li:last-child{border-right:none!important}#cooked-recipe-tabs li.cooked-loading{opacity:0;background:0 0;color:#fff;position:absolute;top:0;right:0;cursor:default;font-size:14px;width:40px;height:40px;text-align:center;display:block;line-height:40px;padding:0}#cooked-recipe-tabs li.cooked-loading:hover{background:0 0;color:#fff}#cooked_recipe_settings.cooked-loading #cooked-recipe-tabs li.cooked-loading{opacity:1}#cooked_recipe_settings .inside{padding-top:60px;margin:0}#cooked_recipe_settings.stuck #cooked-recipe-tabs{position:fixed;width:auto;top:32px;left:23px;z-index:100000;margin-left:160px;box-shadow:0 3px 50px rgba(0,0,0,.25)}#cooked_recipe_settings.stuck #cooked-recipe-tabs li.cooked-loading{right:160px}.cooked-recipe-tab-content-wrapper .cooked-recipe-tab-content{display:none}.cooked-recipe-tab-content-wrapper .cooked-recipe-tab-content:first-child{display:block}.cooked-left{float:left;display:inline-block;width:auto}.cooked-right{float:right;display:inline-block;width:auto}#cooked_field--cooked_pro_license_key{font-family:monospace}#cooked_recipe_settings .cooked-bm-5{margin-bottom:5px!important}#cooked_recipe_settings .cooked-bm-10{margin-bottom:10px!important}#cooked_recipe_settings .cooked-tm-10{margin-top:10px!important}#cooked_recipe_settings .cooked-bm-15{margin-bottom:15px!important}#cooked_recipe_settings .cooked-bm-20{margin-bottom:20px!important}#cooked_recipe_settings .cooked-bm-30{margin-bottom:30px!important}#cooked_recipe_settings .cooked-bm-5-up{margin-bottom:-5px!important}#cooked_recipe_settings .cooked-bm-10-up{margin-bottom:-10px!important}#cooked_recipe_settings .cooked-bm-15-up{margin-bottom:-15px!important}#cooked_recipe_settings .cooked-bm-20-up{margin-bottom:-20px!important}#cooked_recipe_settings .cooked-bm-30-up{margin-bottom:-30px!important}#cooked_recipe_settings .cooked-hr{border:none;border-top:2px solid #ddd;margin:10px 0 0 0;padding:15px 0 0 0}#cooked_recipe_settings .cooked-conditional-hidden{display:none}#cooked_recipe_settings .cooked-recipe-tab-content{padding:23px 30px 15px 30px}#cooked_recipe_settings .recipe-setting-block{margin:0 0 20px;width:100%}#cooked_recipe_settings .recipe-setting-block p{font-size:.9rem;line-height:1.5rem;margin:0 0 1rem;padding:0}#cooked_recipe_settings .recipe-setting-block p.cooked-padded{line-height:1.75rem;font-size:.85rem}#cooked_recipe_settings .recipe-setting-block .cooked-conditional-hidden{padding:0}#cooked_recipe_settings textarea{width:100%;height:75px;padding:15px;box-sizing:border-box;position:relative;top:5px}#cooked_recipe_settings .recipe-setting-block>label.cooked-select-label{top:5px}#cooked_recipe_settings select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;border-radius:3px;padding:0 45px 0 9px;line-height:31px;height:33px;box-sizing:border-box;background:#fff}#cooked_recipe_settings .cooked-select-wrapper{background:#fff;position:relative;width:auto;display:inline-block;border-radius:3px;margin:0 5px 0 0}#cooked_recipe_settings .cooked-select-wrapper select{margin:0;background:0 0;position:relative}#cooked_recipe_settings .cooked-select-wrapper:before{font-family:CookedIcons;display:block;width:15px;height:15px;line-height:14px;color:#000;font-size:14px;content:"\f00b";position:absolute;right:12px;top:11px;color:rgba(0,0,0,.3)}#cooked_recipe_settings .cooked-select-wrapper:hover:before{color:#000}#cooked_recipe_settings .cooked-select-wrapper:hover select{border-color:#ccc}#cooked_recipe_settings .cooked-checkbox-radio-label{position:relative;left:1px}#cooked_recipe_settings .recipe-setting-block input[type=checkbox],#cooked_recipe_settings .recipe-setting-block input[type=radio]{margin-top:0}#cooked_recipe_settings .recipe-setting-block input[type=number]{width:65px}#cooked_recipe_settings .recipe-setting-block input[type=password],#cooked_recipe_settings .recipe-setting-block input[type=text]{width:75%}#cooked_recipe_settings .recipe-setting-block input[type=number],#cooked_recipe_settings .recipe-setting-block input[type=password],#cooked_recipe_settings .recipe-setting-block input[type=text]{margin:0 6px 5px 0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;height:33px;box-shadow:none;position:relative;top:2px;padding:0 10px}#cooked_recipe_settings .recipe-setting-block p.cooked-measurement-inputs .cooked-measurement-column{width:43%;margin-right:3%;display:inline-block}#cooked_recipe_settings .recipe-setting-block p.cooked-measurement-inputs .cooked-select-wrapper,#cooked_recipe_settings .recipe-setting-block p.cooked-measurement-inputs input,#cooked_recipe_settings .recipe-setting-block p.cooked-measurement-inputs label{width:100%;display:block}#cooked_recipe_settings .recipe-setting-block p.cooked-measurement-inputs .cooked-select-wrapper select{width:100%}#cooked_recipe_settings .recipe-setting-block input[type=number],#cooked_recipe_settings .recipe-setting-block input[type=password].cooked-small-textfield,#cooked_recipe_settings .recipe-setting-block input[type=text].cooked-small-textfield{width:150px}#cooked_recipe_settings small{display:block;line-height:1.5;font-size:12px;color:#888;padding:10px 0 0}#cooked_recipe_settings .recipe-setting-block em{color:#aaa}#cooked_recipe_settings .recipe-setting-block,#cooked_recipe_settings .recipe-setting-block .cooked-repositioned{display:block;position:relative;box-sizing:border-box;line-height:1}#cooked_recipe_settings .recipe-setting-block .cooked-repositioned{padding-left:157px}#cooked_recipe_settings .recipe-setting-block h3.cooked-settings-title{width:70%;position:relative;z-index:2;padding:.5rem 0 .5rem;margin:0;font-size:1rem;line-height:1.5rem;font-weight:600}#cooked_recipe_settings .recipe-setting-block strong.cooked-heading{font-size:14px}#cooked_recipe_settings .recipe-setting-block .cooked-repositioned>label{position:absolute;top:1px;left:0;width:147px;cursor:default;font-weight:600}#cooked_recipe_settings .recipe-setting-block .cooked-tooltip-icon{color:#aaa;cursor:help;display:inline-block;margin-left:10px}#cooked_recipe_settings .recipe-setting-block .cooked-tooltip-icon:hover{color:#eee}#cooked_recipe_settings .recipe-setting-block .cooked-repositioned>.cooked-checkbox-radio-label{top:7px}#cooked_recipe_settings .recipe-setting-block .cooked-repositioned>label{top:auto;height:33px;line-height:30px;padding:0;width:130px}#cooked_recipe_settings .recipe-setting-block .cooked-repositioned:first-child label:first-child{padding-top:12px;margin-top:-12px}#cooked_recipe_settings .recipe-setting-block .cooked-repositioned span.cooked-padded{padding:0 0 15px;display:block;line-height:1.9}#cooked_recipe_settings .recipe-setting-block .wp-picker-container .cooked-color-field.wp-color-picker{padding:5px;height:25px;top:0;margin:0;width:74px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #ccc}#cooked_recipe_settings .recipe-setting-block input[type=text].cooked-shortcode-field{font-family:monospace;background:#f5f5f5;font-size:12px}#cooked_recipe_settings .cooked-banner-block{margin:30px -30px -17px;display:block;box-sizing:content-box;padding:10px 30px 15px;background:#f9f9f9;width:100%;border-top:1px solid #e5e5e5}#cooked_recipe_settings .cooked-advanced-options-hr{border:none;border-bottom:1px solid #ddd;height:1px;padding:10px 0 0 0;margin:0 0 20px}#cooked_recipe_settings .recipe-setting-block input.cooked-time-picker{top:0;width:100%;padding-right:70%;margin:0 0 3px}#cooked_recipe_settings .recipe-setting-block .cooked-time-picker-text{position:absolute;bottom:13px;right:40px;color:#888}#cooked_recipe_settings .cooked-alert-block{background:#fffbdc;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;margin:10px 0 15px;padding:10px 22px 2px;border:2px solid #ece8c4}#cooked_recipe_settings .recipe-setting-block.cooked-template{display:none}#cooked_recipe_settings ul.cooked-admin-ul{font-size:.9rem;margin:0 0 1rem 2rem;list-style:disc}#cooked_recipe_settings ul.cooked-admin-ul li{font-size:.9rem;padding:0;margin:0 0 .5rem}#cooked_recipe_settings .cooked-html-block{background:#fff;width:auto;min-width:300px;display:inline-block;padding:.5rem 1.3rem .25rem;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}#cooked_recipe_settings .recipe-setting-block .cooked-html-block h3.cooked-settings-title{width:100%;color:#333}#cooked_recipe_settings .recipe-setting-block .cooked-html-block.valid{background:#fff;border:2px solid #0aa780;box-shadow:none;border-radius:5px}#cooked_recipe_settings .recipe-setting-block .cooked-html-block.valid>.cooked-settings-title{color:#0aa780}#cooked_recipe_settings .recipe-setting-block .cooked-html-block.expired{border:2px solid #ca4a20}#cooked-directions-builder .cooked-direction-block.cooked-expanded>.cooked-heading-name,#cooked-directions-builder .cooked-direction-block.cooked-has-heading-element>.cooked-heading-name,#cooked-directions-builder .cooked-direction-block:hover>.cooked-heading-name,#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-heading-name,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-heading-element>.cooked-heading-name,#cooked-ingredients-builder .cooked-ingredient-block:hover>.cooked-heading-name{padding-right:32px}#cooked-directions-builder .cooked-direction-block .cooked-show-heading-element,#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-heading-element{opacity:0;cursor:pointer;font-size:14px;position:absolute;top:14px;right:35px}#cooked-directions-builder .cooked-direction-block .cooked-show-heading-element .cooked-icon,#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-heading-element .cooked-icon{color:#888}#cooked-directions-builder .cooked-direction-block.cooked-expanded .cooked-show-heading-element,#cooked-directions-builder .cooked-direction-block.cooked-has-heading-element .cooked-show-heading-element,#cooked-directions-builder .cooked-direction-block:hover .cooked-show-heading-element,#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded .cooked-show-heading-element,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-heading-element .cooked-show-heading-element,#cooked-ingredients-builder .cooked-ingredient-block:hover .cooked-show-heading-element{opacity:1}#cooked-directions-builder .cooked-direction-block .cooked-show-heading-element .cooked-icon:hover,#cooked-directions-builder .cooked-direction-block.cooked-expanded .cooked-show-heading-element .cooked-icon,#cooked-directions-builder .cooked-direction-block.cooked-has-heading-element .cooked-show-heading-element .cooked-icon,#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-heading-element .cooked-icon:hover,#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded .cooked-show-heading-element .cooked-icon,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-heading-element .cooked-show-heading-element .cooked-icon{color:#0685ba}#cooked-directions-builder .cooked-direction-block>.cooked-heading-element,#cooked-ingredients-builder .cooked-ingredient-block>.cooked-heading-element{display:none;width:65%;float:right;margin-top:4px;padding-right:32px}#cooked-directions-builder .cooked-direction-block>.cooked-heading-element select,#cooked-ingredients-builder .cooked-ingredient-block>.cooked-heading-element select{color:#0685ba;width:100%}#cooked-directions-builder .cooked-direction-block>.cooked-heading-element label,#cooked-ingredients-builder .cooked-ingredient-block>.cooked-heading-element label{font-weight:600}#cooked-directions-builder .cooked-direction-block.cooked-expanded>.cooked-heading-element,#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-heading-element{display:block}#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-substitution{opacity:0;cursor:pointer;font-size:14px;position:absolute;top:15px;right:58px}#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-substitution .cooked-icon{color:#888}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded .cooked-show-substitution,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-substitution .cooked-show-substitution,#cooked-ingredients-builder .cooked-ingredient-block:hover .cooked-show-substitution{opacity:1;right:50px}#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-substitution .cooked-icon:hover,#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded .cooked-show-substitution .cooked-icon,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-substitution .cooked-show-substitution .cooked-icon{color:#0685ba}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-ingredient-name,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-substitution>.cooked-ingredient-name,#cooked-ingredients-builder .cooked-ingredient-block:hover>.cooked-ingredient-name{padding-right:32px}#cooked_recipe_settings .switchery-small,body.post-type-cp_recipe .switchery-small{height:1rem;width:1.75rem;border-radius:1rem;margin-right:.4rem}#cooked_recipe_settings .switchery-small>small,body.post-type-cp_recipe .switchery-small>small{width:1rem;height:1rem;padding:0}.cooked-tooltip-buttons .cooked-icon-spin{margin-top:10px;font-size:15px}.cooked-tooltip-buttons .cooked-saved-default{height:28px;line-height:28px;font-weight:700;font-size:15px;color:#888}.cooked-progress{display:none;position:relative;background:#eee;width:100%;height:6px;padding:0;border-radius:3px;margin:10px 0 0 0}.cooked-progress-text{display:none;font-size:10px;color:#aaa;padding:2px 0 5px}.cooked-progress-text.cooked-active,.cooked-progress.cooked-active{display:block}.cooked-progress .cooked-progress-bar{display:block;position:absolute;background:#0085ba;width:0%;height:6px;top:0;left:0;border-radius:3px}#cooked-import-progress.cooked-progress,#cooked-migration-progress.cooked-progress{background:#ccc;margin:25px 0 0 0;border-radius:6px;height:12px;max-width:600px}#cooked-import-progress.cooked-progress .cooked-progress-bar,#cooked-migration-progress.cooked-progress .cooked-progress-bar{border-radius:6px;height:12px}#cooked-import-progress-text.cooked-progress-text,#cooked-migration-progress-text.cooked-progress-text{font-size:11px;color:#888;max-width:600px}#cooked-import-completed,#cooked-migration-completed{display:none}#cooked-import-completed.cooked-active,#cooked-migration-completed.cooked-active{display:block}#cooked-csv-import-progress.cooked-progress{background:#ccc;margin:25px 0 0 0;border-radius:6px;height:12px;max-width:600px}#cooked-csv-import-progress.cooked-progress .cooked-progress-bar{border-radius:6px;height:12px}#cooked-csv-import-progress-text.cooked-progress-text{font-size:11px;color:#888;max-width:600px}#cooked-csv-import-completed{display:none}#cooked-csv-import-completed.cooked-active{display:block}#cooked-csv-import-form{max-width:100%;box-sizing:border-box}#cooked-csv-import-form input[type=file]{max-width:100%;box-sizing:border-box;width:100%}#cooked-csv-import-errors{max-width:100%;box-sizing:border-box;word-wrap:break-word}#cooked-import-progress.cooked-progress,#cooked-migration-progress.cooked-progress,#cooked-related-progress.cooked-progress{background:#ccc;margin:25px 0 0 0;border-radius:6px;height:12px;max-width:600px}#cooked-import-progress.cooked-progress .cooked-progress-bar,#cooked-migration-progress.cooked-progress .cooked-progress-bar,#cooked-related-progress.cooked-progress .cooked-progress-bar{border-radius:6px;height:12px}#cooked-import-progress-text.cooked-progress-text,#cooked-migration-progress-text.cooked-progress-text,#cooked-related-progress-text.cooked-progress-text{font-size:11px;color:#888;max-width:600px}#cooked-import-completed,#cooked-migration-completed,#cooked-related-completed{display:none}#cooked-import-completed.cooked-active,#cooked-migration-completed.cooked-active,#cooked-related-completed.cooked-active{display:block}.cooked-related-status{margin:0 0 12px 0;padding:8px 12px;font-size:13px;line-height:1.4;border-radius:4px;border-left:3px solid #00a878;background:#f0f9f6;color:#2d4a42;max-width:480px}#cooked-related-last-done.cooked-related-status{border-left-color:#8c9b99;background:#f6f8f7;color:#5c6b69}#cooked_recipe_settings .cooked-layout-save-default{position:relative;top:-2px;z-index:10;margin:0 0 0 15px;padding:0 8px 1px}#cooked_recipe_settings .cooked-layout-load-default{position:relative;top:-2px;z-index:10;margin:0 0 0 10px;padding:0 8px 1px}body .button.button-cooked-reset{color:#999}body .button.button-cooked-reset:hover{color:#555}#cooked_recipe_settings .cooked-ingredient-headers{display:block;padding:5px 25px 0 35px}#cooked_recipe_settings .cooked-ingredient-headers span{font-size:.7rem;font-weight:700;letter-spacing:.03rem;text-transform:uppercase;color:#0085ba;box-sizing:border-box;display:inline-block;float:left}#cooked_recipe_settings .cooked-ingredient-headers span.cooked-ingredient-header-amount{width:15%}#cooked_recipe_settings .cooked-ingredient-headers span.cooked-ingredient-header-measurement{width:20%}#cooked_recipe_settings .cooked-ingredient-headers span.cooked-ingredient-header-item{width:65%}#cooked-ingredients-builder{margin:0 0 20px}#cooked-ingredients-builder .cooked-ingredient-block{display:block;padding:5px 45px 5px 35px}#cooked-ingredients-builder .cooked-ingredient-block:hover{background:#eee}#cooked-ingredients-builder .cooked-ingredient-block input[type=number],#cooked-ingredients-builder .cooked-ingredient-block input[type=text],#cooked-ingredients-builder .cooked-ingredient-block select{margin:0;display:block;top:0}#cooked-ingredients-builder .cooked-ingredient-block>div{display:inline-block;float:left;box-sizing:border-box;padding-right:10px}#cooked-ingredients-builder .cooked-ingredient-block>div input[type=text]{width:100%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-amount{width:15%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-measurement{width:20%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-measurement .cooked-select-wrapper{width:100%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-measurement .cooked-select-wrapper select{width:100%}#cooked-ingredients-builder .cooked-ingredient-block .cooked-substitution-fields>.cooked-ingredient-measurement .cooked-select-wrapper{width:100%}#cooked-ingredients-builder .cooked-ingredient-block .cooked-substitution-fields>.cooked-ingredient-measurement .cooked-select-wrapper select{width:100%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-name{width:65%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-heading-name{width:100%}#cooked-ingredients-builder .cooked-ingredient-block>div small.cooked-input-ex{display:block;padding:5px 0 0 2px}#cooked-ingredients-builder .cooked-ingredient-block{margin:0}#cooked-ingredients-builder .cooked-ingredient-block i.cooked-icon-drag{cursor:move;color:#ccc;font-size:32px;position:absolute;top:5px;left:1px;touch-action:none}#cooked-ingredients-builder .cooked-ingredient-block:hover i.cooked-icon-drag{color:#888}#cooked-ingredients-builder .cooked-ingredient-block.ui-sortable-helper{background:#f5f5f5;box-shadow:0 10px 20px rgba(0,0,0,.15);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}#cooked-ingredients-builder .cooked-ingredient-block.ui-sortable-placeholder{visibility:visible!important;background:#eee;display:block;width:100%;height:43px;border-top:6px solid #fff;border-bottom:6px solid #fff}#cooked-ingredients-builder .cooked-ingredient-block .cooked-delete-ingredient{cursor:pointer;font-size:14px;position:absolute;top:14px;right:11px}#cooked-ingredients-builder .cooked-ingredient-block .cooked-delete-ingredient .cooked-icon{color:#fff}#cooked-ingredients-builder .cooked-ingredient-block:hover .cooked-delete-ingredient .cooked-icon{color:#888}#cooked-ingredients-builder .cooked-ingredient-block .cooked-delete-ingredient .cooked-icon:hover{color:#de2020}#cooked-ingredients-builder .cooked-ingredient-block.cooked-ingredient-heading{margin:10px 0}#cooked-ingredients-builder .cooked-ingredient-block.cooked-ingredient-heading>div input[type=text]{padding:0 7px;font-size:16px;background:#f9f9f9;font-weight:600}#cooked-directions-builder{margin:0 0 20px}#cooked-directions-builder .cooked-direction-block{display:block;padding:15px 25px 15px 35px}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading{padding:5px 25px 5px 35px}#cooked-directions-builder .cooked-direction-block:hover{background:#f5f5f5}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading:hover{background:#eee}#cooked-directions-builder .cooked-direction-block textarea{margin:0;display:block;height:250px;top:0}#cooked-directions-builder .cooked-direction-block>div{display:inline-block;float:left;box-sizing:border-box;padding-right:15px}#cooked-directions-builder .cooked-direction-block>div:last-child{padding:0}#cooked-directions-builder .cooked-direction-block>div input[type=text]{width:100%}#cooked-directions-builder .cooked-direction-block .mce-statusbar{display:none}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image{width:135px;position:absolute;top:15px;left:35px}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image img{cursor:pointer;display:none;border-radius:3px}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image .cooked-direction-img-placeholder{box-sizing:border-box;cursor:pointer;border-radius:3px;width:100%;padding-bottom:100%;background:0 0;border:2px dashed #ddd;border-radius:3px;margin-top:15px}#cooked-directions-builder .cooked-direction-block:hover>.cooked-direction-image .cooked-direction-img-placeholder{background:0 0}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image .cooked-direction-img-placeholder:hover{background:#ddd;border:2px solid #ddd}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image .direction-image-button{width:100%;text-align:center}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image .remove-image-button{display:none;position:absolute;top:43px;right:15px}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image.cooked-has-image .remove-image-button{display:inline-block;padding:10px;background:rgba(0,0,0,.25);color:#fff}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image.cooked-has-image .remove-image-button:hover{background:#ff0100}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image.cooked-has-image img{width:100%;height:auto;display:block;margin:15px 0 0}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image.cooked-has-image .cooked-direction-img-placeholder{display:none}#cooked-directions-builder .cooked-direction-block>.cooked-direction-content{width:100%;padding-left:175px;padding-right:175px}#cooked-directions-builder .cooked-direction-block .cooked-direction-number{opacity:.4;position:absolute;display:inline-block;font-weight:800;top:17px;left:35px;font-size:1.25rem;line-height:1}#cooked-directions-builder .cooked-direction-block.cooked-direction-has-number>.cooked-direction-image{left:65px}#cooked-directions-builder .cooked-direction-block.cooked-direction-has-number>.cooked-direction-content{padding-left:175px;padding-right:175px}#cooked-directions-builder .cooked-direction-block.cooked-direction-has-number-wide>.cooked-direction-content{padding-left:185px;padding-right:175px}#cooked-directions-builder .cooked-direction-block>.cooked-heading-name{width:100%}#cooked-directions-builder .cooked-direction-block{margin:0}#cooked-directions-builder .cooked-direction-block i.cooked-icon-drag{cursor:move;color:#ccc;font-size:32px;position:absolute;top:13px;left:1px;touch-action:none}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading i.cooked-icon-drag{top:5px}#cooked-directions-builder .cooked-direction-block:hover i.cooked-icon-drag{color:#888}#cooked-directions-builder .cooked-direction-block.ui-sortable-helper{background:#f5f5f5;box-shadow:0 10px 20px rgba(0,0,0,.15);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}#cooked-directions-builder .cooked-direction-block.ui-sortable-placeholder{visibility:visible!important;background:#eee;display:block;width:100%;height:280px;border-top:6px solid #fff;border-bottom:6px solid #fff}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading.ui-sortable-placeholder{height:43px}#cooked-directions-builder .cooked-direction-block .cooked-delete-direction{cursor:pointer;font-size:14px;position:absolute;right:14px}#cooked-directions-builder .cooked-direction-block .cooked-delete-direction .cooked-icon{color:#fff}#cooked-directions-builder .cooked-direction-block:hover .cooked-delete-direction .cooked-icon{color:#888}#cooked-directions-builder .cooked-direction-block .cooked-delete-direction .cooked-icon:hover{color:#de2020}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video{width:135px;position:absolute;top:15px;right:25px}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading{margin:10px 0}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading>div input[type=text]{padding:0 7px;font-size:16px;background:#f9f9f9;font-weight:600;top:0;margin:0}#cooked-directions-builder .cooked-direction-block .cooked-delete-direction{top:16px}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading .cooked-delete-direction{top:14px}.cooked-settings-image-field{position:relative;display:inline-block;max-width:150px}.cooked-settings-image-field .cooked-settings-image-preview-img{display:none;width:100%;height:auto;margin:10px 0 0;border-radius:3px}.cooked-settings-image-field .cooked-settings-image-remove{display:none;position:absolute;top:50px;right:0;padding:10px;background:rgba(0,0,0,.25);color:#fff;border-radius:3px}.cooked-settings-image-field.cooked-has-image .cooked-settings-image-remove{display:inline-block}.cooked-settings-image-field.cooked-has-image .cooked-settings-image-remove:hover{background:#ff0100}.cooked-settings-image-field.cooked-has-image .cooked-settings-image-preview-img{display:block}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video .cooked-direction-video-preview{display:none;width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:3px;cursor:pointer}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video .cooked-direction-video-placeholder{box-sizing:border-box;cursor:pointer;border-radius:3px;width:100%;padding-bottom:100%;background:0 0;border:2px dashed #ddd;margin-top:15px}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video .cooked-direction-video-placeholder:hover{background:#ddd;border:2px solid #ddd}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video .direction-video-button{width:100%;text-align:center}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video.cooked-has-video .cooked-direction-video-placeholder{display:none}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video.cooked-has-video .cooked-direction-video-preview{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;margin-top:15px}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video .remove-video-button{display:none;position:absolute;top:43px;right:15px}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video.cooked-has-video .remove-video-button{display:inline-block;padding:10px;background:rgba(0,0,0,.25);color:#fff}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video.cooked-has-video .remove-video-button:hover{background:#ff0100}@media screen and (max-width:1440px){#cooked-directions-builder .cooked-direction-block:not(.cooked-direction-heading){display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"content content" "image video";gap:10px;padding:15px 0 15px 0}#cooked-directions-builder .cooked-direction-block:not(.cooked-direction-heading)>.cooked-direction-content{grid-area:content;padding:14px 14px 0 14px!important;min-height:80px}#cooked-directions-builder .cooked-direction-block:not(.cooked-direction-heading)>.cooked-direction-image{grid-area:image;position:relative;width:auto;left:auto;top:auto;padding-left:15px;padding-right:0}#cooked-directions-builder .cooked-direction-block:not(.cooked-direction-heading)>.cooked-direction-video{grid-area:video;position:relative;width:auto;right:auto;top:auto}#cooked_recipe_settings .cooked-recipe-tab-content{padding:0 0 15px 0}#cooked-recipe-tabs{white-space:nowrap;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;top:0;width:100%}#cooked-recipe-tabs::-webkit-scrollbar{display:none}#cooked-recipe-tabs li{float:none}#cooked_recipe_settings.stuck #cooked-recipe-tabs{position:fixed;top:32px;left:0;width:100%;margin-left:0}}#cooked-recipe-image-gallery{margin:0 -1% 0}#cooked-recipe-image-gallery .cooked-recipe-gallery-item{position:relative;overflow:hidden;cursor:move;box-sizing:border-box;display:inline-block;width:18%;height:auto;padding:0;margin:0 1% 2% 1%}#cooked-recipe-image-gallery .cooked-recipe-gallery-item:hover{opacity:.9}#cooked-recipe-image-gallery .cooked-recipe-gallery-item img{width:100%;height:auto;border-radius:3px;display:block;margin:0;padding:0;border:none}#cooked-recipe-image-gallery .cooked-recipe-gallery-item.ui-sortable-helper,#cooked-recipe-image-gallery .cooked-recipe-gallery-item.ui-sortable-helper:hover{opacity:.75;box-shadow:0 10px 20px rgba(0,0,0,.15)}#cooked-recipe-image-gallery .cooked-recipe-gallery-item.ui-sortable-placeholder{width:18%;height:auto;visibility:visible!important;border-radius:3px;background:#ddd;display:inline-block}#cooked-recipe-image-gallery .cooked-recipe-gallery-item .remove-image-button{border-radius:0 3px 0 0;display:inline-block;position:absolute;top:0;right:0;padding:10px;background:rgba(0,0,0,.25);color:#fff}#cooked-recipe-image-gallery .cooked-recipe-gallery-item .remove-image-button:hover{background:#ff0100}#cooked-recipe-image-gallery .cooked-recipe-gallery-item .cooked-gallery-edit-button{border-radius:3px 0 0 0;display:inline-block;position:absolute;top:0;left:0;padding:10px;background:rgba(0,0,0,.25);color:#fff}#cooked-recipe-image-gallery .cooked-recipe-gallery-item .cooked-gallery-edit-button:hover{background:#0084bc}#cooked-recipe-image-gallery .cooked-recipe-gallery-item .cooked-gallery-item-title{position:absolute;left:0;bottom:0;box-sizing:border-box;width:100%;border-radius:0 0 3px 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;padding:10px 10px 11px;text-align:center;background:#000;background:rgba(0,0,0,.3);color:#fff;font-size:12px}#cooked-recipe-image-gallery .cooked-recipe-gallery-item:hover .cooked-gallery-item-title{background:#000;background:rgba(0,0,0,.75)}#cooked-recipe-image-gallery .cooked-recipe-gallery-item.ui-sortable-helper{-webkit-animation:cooked-wiggle .4s infinite;-moz-animation:cooked-wiggle .4s infinite;-o-animation:cooked-wiggle .4s infinite;animation:cooked-wiggle .4s infinite}#cooked_recipe_settings label.cooked-nutrition-label{display:block;font-size:.7rem;letter-spacing:.03rem;font-weight:700;text-transform:uppercase;line-height:1;margin:0 0 7px}#cooked_recipe_settings #cooked-nutrition-label{line-height:1.6;font-size:1.1rem;border:1px solid #aaa;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:5%;margin:0 0 2rem;font-family:Helvetica,Arial,sans-serif;container-name:nutrition-label;container-type:inline-size}#cooked_recipe_settings #cooked-nutrition-label h2{font-size:2.5rem;line-height:1;letter-spacing:0;font-weight:800;padding:0 0 .5rem 0;margin:0 0 .4rem;color:#333;border-bottom:1px solid #aaa}#cooked_recipe_settings #cooked-nutrition-label p.cooked-daily-value-text{padding:.5rem 0 0 0;margin:0;font-size:.9rem}#cooked_recipe_settings #cooked-nutrition-label ul.cooked-nut-servings p{font-size:1.5rem}#cooked_recipe_settings #cooked-nutrition-label ul{list-style:none;margin:0;padding:0}#cooked_recipe_settings #cooked-nutrition-label li{position:relative;margin:0;padding:0 0 3px 0;border-top:1px solid #aaa}#cooked_recipe_settings #cooked-nutrition-label li li{padding:3px 0 0;margin:3px 0 0}#cooked_recipe_settings #cooked-nutrition-label li:after{content:"";display:table;clear:both}#cooked_recipe_settings #cooked-nutrition-label li.no-after:after{content:none}#cooked_recipe_settings #cooked-nutrition-label li.cooked-nut-spacer{border:none;height:.6rem;padding:0;background:#333}#cooked_recipe_settings #cooked-nutrition-label ul li.cooked-nut-no-border,#cooked_recipe_settings #cooked-nutrition-label>ul>li:first-child{border:none}#cooked_recipe_settings #cooked-nutrition-label li ul{padding:0;margin:0 0 0 20px}#cooked_recipe_settings #cooked-nutrition-label li ul.cooked-right{margin:0}#cooked_recipe_settings #cooked-nutrition-label li ul.cooked-right li{border:none;padding:0;margin:0}#cooked_recipe_settings #cooked-nutrition-label li.cooked-calories ul.cooked-right li strong.cooked-nut-label{font-size:2.5rem;line-height:1}#cooked_recipe_settings #cooked-nutrition-label .cooked-calories{border-top:none;display:flex;justify-content:space-between;align-items:baseline;padding:0}#cooked_recipe_settings #cooked-nutrition-label .cooked-calories strong,#cooked_recipe_settings #cooked-nutrition-label .cooked-calories strong.cooked-nut-label{font-size:2rem;font-weight:800}#cooked_recipe_settings #cooked-nutrition-label ul.cooked-nut-servings li{border:none}#cooked_recipe_settings #cooked-nutrition-label ul.cooked-nut-servings{margin:0}#cooked_recipe_settings #cooked-nutrition-label .cooked-nut-hr{border:none;border-top:1.3rem solid #333;margin:.1rem 0 0;padding:0}#cooked_recipe_settings #cooked-nutrition-label strong{font-weight:800}#cooked_recipe_settings #cooked-nutrition-label .cooked-serving-size strong,#cooked_recipe_settings #cooked-nutrition-label .cooked-serving-size strong.cooked-nut-label{font-size:1.5rem;font-weight:800}#cooked_recipe_settings #cooked-nutrition-label strong.cooked-nut-heading{font-size:1rem}#cooked_recipe_settings #cooked-nutrition-label strong.cooked-nut-label{font-weight:400}#cooked_recipe_settings #cooked-nutrition-label .cooked-nut-right{float:right}#cooked_recipe_settings #cooked-nutrition-label ul.cooked-nut-bottom{margin:0 0 .75rem}#cooked_recipe_settings #cooked-nutrition-label ul.cooked-nut-bottom li{border-top:none;border-bottom:1px solid #aaa;float:left;width:100%;box-sizing:border-box}#cooked_recipe_settings .cooked-measurement-inputs .cooked-select-wrapper:before{top:8px}.cooked-auto-nutrition{display:flex;justify-content:end;margin:0 0 1rem}#cooked-tooltip-auto-nutrition-notice{margin:0}.cooked-settings-header{border-radius:10px 10px 0 0;width:auto;height:90px;line-height:85px;padding:0 30px;font-weight:600;box-sizing:border-box;background:#33373c;color:#fff;font-size:29px;letter-spacing:-.03rem}.cooked-settings-header .cooked-icon{color:#00e0a9}.cooked-settings-submit-wrap{padding:0 0 35px 35px;margin:-20px 0 0}#cooked_recipe_settings .recipe-setting-block .cooked-permalink-field-wrapper span{font-size:14px;display:inline-block;line-height:32px;padding:5px 0 0 0}#cooked_recipe_settings .recipe-setting-block input[type=text].cooked-permalink-field{position:relative;top:0;display:inline-block;width:150px;margin:0 10px}#cooked-settings-panel{position:relative;margin:0;padding:0}#cooked-settings-tabs{display:flex;width:auto;padding:0 20px 0 0;margin:0;list-style:none}#cooked-settings-tabs li{font-size:13px;line-height:1;font-weight:400;display:block;padding:0;margin:0;color:#fff}#cooked-settings-tabs li .cooked-icon{font-size:14px}#cooked-settings-tabs li .cooked-icon.cooked-icon-recipe-icon{font-size:20px;top:2px;position:relative}#cooked-settings-tabs li:hover{cursor:pointer}#cooked-settings-tabs li.active,#cooked-settings-tabs li.active:hover{cursor:default}#cooked-settings-tabs a{line-height:41px;font-size:.9rem;letter-spacing:.03rem;padding:2px 15px 4px;display:block;outline:0;box-shadow:none;border:none;white-space:nowrap}#cooked-settings-panel.stuck{padding-top:41px}#cooked-settings-panel.stuck #cooked-settings-tabs{position:fixed;width:calc(100% - 180px);top:32px;left:0;z-index:100000;margin-left:160px}#cooked-settings-panel .cooked-settings-tab-content-wrapper .cooked-settings-tab-content{display:none}#cooked-settings-panel .cooked-settings-tab-content-wrapper .cooked-settings-tab-content:first-child{display:block}#cooked-settings-panel .cooked-settings-tab-content{padding:25px 35px;margin-right:0}#cooked-settings-panel #cooked_recipe_settings .recipe-setting-block h3.cooked-settings-title{padding-bottom:.2rem}#cooked_recipe_settings .cooked-setting-column-14{position:relative;width:25%;float:left;padding-right:20px;box-sizing:border-box}#cooked_recipe_settings .cooked-setting-column-13{position:relative;width:33%;float:left;padding-right:20px;box-sizing:border-box}#cooked_recipe_settings .cooked-setting-column-23{position:relative;width:66%;float:left;padding-right:20px;box-sizing:border-box}#cooked_recipe_settings .cooked-setting-column-12{position:relative;width:50%;float:left;padding-right:20px;box-sizing:border-box}#cooked_recipe_settings .cooked-setting-column-12 input[type=text],#cooked_recipe_settings .cooked-setting-column-13 input[type=text],#cooked_recipe_settings .cooked-setting-column-14 input[type=text],#cooked_recipe_settings .cooked-setting-column-23 input[type=text],#cooked_recipe_settings .recipe-setting-block input[type=text].cooked-shortcode-field{width:95%}#cooked_recipe_settings .cooked-setting-column-12 .cooked-select-wrapper,#cooked_recipe_settings .cooked-setting-column-12 select,#cooked_recipe_settings .cooked-setting-column-13 .cooked-select-wrapper,#cooked_recipe_settings .cooked-setting-column-13 select,#cooked_recipe_settings .cooked-setting-column-14 .cooked-select-wrapper,#cooked_recipe_settings .cooked-setting-column-14 select,#cooked_recipe_settings .cooked-setting-column-23 select{width:100%}#cooked_recipe_settings .cooked-setting-column-14.cooked-tb-col{padding:0}#cooked-welcome-screen{padding:15px 50px 0 30px;position:relative}#cooked-welcome-screen .cooked-badge{position:absolute;top:0;right:0}#cooked-welcome-screen .cooked-badge img{border:none;width:150px;height:150px;display:block;margin:0}#cooked-welcome-screen .about-text{margin-bottom:40px;line-height:1.8;font-size:17px;margin-right:260px}#cooked-welcome-screen .about-wrap{margin:25px auto 0;max-width:1000px}#cooked-welcome-screen .about-wrap h1{font-size:2.25rem}#cooked-welcome-screen .about-wrap p{font-size:1rem;margin:0 0 2rem;line-height:1.7rem}#cooked-welcome-screen #cooked-welcome-panel{background:#fff;padding:30px 30px 15px 30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;border:none;box-shadow:0 4px 4px rgba(0,0,0,.05),0 8px 8px rgba(0,0,0,.05),0 32px 32px rgba(0,0,0,.05),0 64px 64px rgba(0,0,0,.05)}#cooked-welcome-screen #cooked-welcome-panel img.cooked-welcome-banner{border:none;display:block;padding:0;margin:0 0 30px;box-sizing:border-box;border-radius:5px 5px 0 0}#cooked-welcome-screen #cooked-welcome-panel .cooked-welcome-panel-intro{text-align:center;margin:0 50px 2rem;padding:15px 0;border-bottom:1px solid #e5e5e5}#cooked-welcome-screen #cooked-welcome-panel .cooked-welcome-panel-intro h1{font-size:1.75rem;margin:0 0 1rem;padding:0}#cooked-welcome-screen #cooked-welcome-panel .cooked-welcome-panel-intro p{max-width:600px;font-size:1.1rem;line-height:1.8rem;margin:0 auto 2rem;padding:0}#cooked-welcome-screen .cooked-welcome-panel a{text-decoration:none}#cooked-welcome-screen .cooked-welcome-panel-column{display:block!important}#cooked-welcome-screen .cooked-welcome-panel-column>strong{font-size:1rem}#cooked-welcome-screen .cooked-welcome-panel-column h3{font-size:1.75rem;margin:0 0 1rem;position:relative}#cooked-welcome-screen .cooked-welcome-panel-column h3 a{position:absolute;top:0;right:0;font-size:12px;font-weight:400}#cooked-welcome-screen .cooked-welcome-panel-column h3 a i.fa{position:relative;top:1px}#cooked-welcome-screen .cooked-welcome-panel-column h4{font-size:1.25rem;margin:0 0 1rem;position:relative}#cooked-welcome-screen .cooked-welcome-panel-column h4 a{position:absolute;top:0;right:0;font-size:12px;font-weight:400}#cooked-welcome-screen .cooked-welcome-panel-column h4 a i.fa{position:relative;top:1px}#cooked-welcome-screen .cooked-welcome-panel-column.cooked-welcome-panel-full{width:100%;padding-right:0;float:none}#cooked-welcome-screen .cooked-welcome-panel-column.cooked-welcome-panel-last{width:70%;padding-right:0;float:right}#cooked-welcome-screen .cooked-welcome-panel-column .fa-external-link{color:#888}#cooked-welcome-screen .cooked-welcome-panel-content{min-height:1px;padding:10px 50px 20px;margin:0}#cooked-welcome-screen .cooked-welcome-panel .cooked-welcome-panel-column-container{display:flex;justify-content:between!important;padding:0!important;flex-wrap:wrap}#cooked-welcome-screen .cooked-welcome-panel-column{box-sizing:border-box;padding-right:2rem;width:30%}#cooked-welcome-screen .cooked-pro-features{width:85%;margin:0 auto;padding:0 0 10px;display:flex;flex-wrap:wrap}#cooked-welcome-screen ul.cooked-whatsnew-list{margin-right:0}#cooked-welcome-screen ul.cooked-whatsnew-list li{line-height:1.7;position:relative;margin-right:0;border-top:1px solid #e5e5e5;padding:8px 0 4px 0}#cooked-welcome-screen ul.cooked-whatsnew-list li:first-child{border:none;padding-top:0}#cooked-welcome-screen ul.cooked-whatsnew-list em.fix,#cooked-welcome-screen ul.cooked-whatsnew-list strong.new,#cooked-welcome-screen ul.cooked-whatsnew-list strong.tweak{position:absolute;font-style:normal;display:inline-block;background:#aaa;text-transform:uppercase;top:11px;left:0;color:#fff;font-weight:600;-moz-border-radius:3px;-webkit-border-radius:3px;text-align:center;width:38px;border-radius:3px;font-size:10px;line-height:19px;height:19px;padding:0 6px;margin:0 6px 0 0}#cooked-welcome-screen ul.cooked-whatsnew-list li:first-child em.fix,#cooked-welcome-screen ul.cooked-whatsnew-list li:first-child strong.new,#cooked-welcome-screen ul.cooked-whatsnew-list li:first-child strong.tweak{top:3px}#cooked-welcome-screen ul.cooked-whatsnew-list strong.new{background:#56c477}#cooked-welcome-screen ul.cooked-whatsnew-list strong.tweak{background:#0073aa}#cooked-welcome-screen ul.cooked-whatsnew-list em.fix{background:#ffad10}#cooked-welcome-screen ul li.cooked-pro i.cooked-icon{color:#ffad10}#cooked-welcome-screen ul li.cooked-pro a{font-weight:600;color:#ffad10}#cooked-welcome-screen ul li.cooked-pro a:hover{color:#d3910f}#cooked-welcome-screen ul.cooked-whatsnew-pro{margin-bottom:0;flex:1 0 auto;width:33.333%}#cooked-welcome-screen ul.cooked-whatsnew-pro li{padding-left:0;font-size:1.15rem;font-weight:400}#cooked-welcome-screen ul.cooked-whatsnew-pro li i.cooked-icon-star{color:#ffad10;margin:0 7px 0 0;font-size:19px;position:relative;top:1px}#cooked-welcome-screen .cooked-welcome-bottom{text-align:center;background:#f9f9f9;margin:30px -80px -15px;border-top:1px solid #f1f1f1}#cooked-welcome-screen .cooked-pro-button{display:inline-block;clear:both;text-align:center;width:auto;margin:30px auto;padding:20px 25px 21px;font-size:1.25rem;line-height:1rem;font-weight:600;color:#fff;background:#ffad10;border-radius:50px}#cooked-welcome-screen .cooked-pro-button:hover{background:#e08704}#cooked-welcome-screen .cooked-coupon-code{color:#4c5e65;display:inline-block;font-size:17px;padding:0 0 0 1.5rem}@media screen and (max-width:1050px){#cooked-welcome-screen ul.cooked-whatsnew-pro{width:100%;margin-top:0}#cooked-welcome-screen ul.cooked-whatsnew-pro:first-child{margin-top:10px}#cooked-welcome-screen ul.cooked-whatsnew-pro li:first-child{border-top:1px solid #e5e5e5;padding-top:8px}#cooked-welcome-screen ul.cooked-whatsnew-pro:first-child li:first-child{border:none;padding-top:0}}@media screen and (max-width:870px){#cooked-welcome-screen .cooked-pro-features{width:90%}#cooked-welcome-screen .cooked-welcome-panel-column{padding-right:0}#cooked-welcome-screen .cooked-welcome-panel-column.cooked-welcome-panel-last{width:100%;padding-top:20px}#cooked-welcome-screen .about-wrap{margin-top:0}#cooked-welcome-screen .cooked-welcome-panel .cooked-welcome-panel-column li{display:block}}@media screen and (max-width:782px){#cooked-welcome-screen .cooked-pro-features{width:100%}#cooked-welcome-screen{padding:15px 40px 0 30px}#cooked-welcome-screen .cooked-badge{display:none}#cooked-welcome-screen .about-text,#cooked-welcome-screen .about-wrap h1{margin-right:0}#cooked-welcome-screen .cooked-welcome-panel-column h3 a{display:block;position:relative}}@media screen and (max-width:500px){#cooked-welcome-screen #cooked-welcome-panel img.cooked-welcome-banner{display:none}#cooked-welcome-screen .about-wrap h1{font-size:1.8rem}#cooked-welcome-screen .about-text{font-size:15px}}#cooked_recipe_settings #cooked-nutrition-label .cooked-nut-label,#cooked_recipe_settings .recipe-setting-block h3.cooked-settings-title{color:#0173aa}#cooked_recipe_settings .recipe-setting-block.cooked-danger h3.cooked-settings-title{color:#d44d1f}#cooked_recipe_settings .cooked-alert-block h3.cooked-settings-title{color:#c02a2a}#cooked-recipe-tabs{background:#fff}#cooked-recipe-tabs li{background:#454b52;color:#fff;color:rgba(255,255,255,.75);border-right:1px solid rgba(0,0,0,.15)}#cooked-recipe-tabs li:hover{background:#535a62;color:#fff;border-right:1px solid rgba(0,0,0,.15)}#cooked-recipe-tabs li.active{background:#fff;color:#333;border-right:1px solid #fff}#cooked-settings-tabs{background:#454b52}#cooked-settings-tabs a{color:#fff;text-decoration:none}#cooked-settings-tabs li{background:#454b52;color:#fff;color:rgba(255,255,255,.75)}#cooked-settings-tabs li:hover{background:#535a62;color:#fff}#cooked-settings-tabs li.active{background:#fff}#cooked-settings-tabs li.active a{color:#000}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image .cooked-direction-img-placeholder,#cooked-migration-progress.cooked-progress .cooked-progress-bar,#cooked-related-progress.cooked-progress .cooked-progress-bar,#cooked_recipe_settings .cooked-select-wrapper:before,#cooked_recipe_settings .cooked-tooltip-icon,#cooked_recipe_settings select{-webkit-transition:all .15s ease-out;-moz-transition:all .15s ease-out;transition:all .15s ease-out}#cooked-recipe-image-gallery .cooked-recipe-gallery-item{-webkit-transition:transform .15s ease-out;-moz-transition:all .15s ease-out;transition:transform .15s ease-out}#cooked-recipe-tabs li.cooked-loading{-webkit-transition:opacity .15s ease-out;-moz-transition:all .15s ease-out;transition:opacity .15s ease-out}@-webkit-keyframes cooked-wiggle{0%{-webkit-transform:scale(1)}50%{-webkit-transform:scale(1.03)}100%{-webkit-transform:scale(1)}}@-moz-keyframes cooked-wiggle{0%{-moz-transform:scale(1)}50%{-moz-transform:scale(1.03)}100%{-moz-transform:scale(1)}}@-o-keyframes cooked-wiggle{0%{-o-transform:scale(1)}50%{-o-transform:scale(1.03)}100%{-o-transform:scale(1)}}@keyframes cooked-wiggle{0%{transform:scale(1)}50%{transform:scale(1.03)}100%{transform:scale(1)}}@media screen and (max-width:1150px){#cooked-recipe-tabs li{font-size:.8rem;padding:0 1.2rem 0 .7rem}#cooked-recipe-tabs li .cooked-icon{display:none}}@media screen and (max-width:960px){#cooked_recipe_settings.stuck #cooked-recipe-tabs{margin-left:36px}}@media screen and (max-width:768px){#cooked_recipe_settings.stuck #cooked-recipe-tabs{position:absolute;top:0;left:0;width:100%;margin-left:0;box-shadow:0 3px 50px rgba(0,0,0,.25)}#cooked_recipe_settings .cooked-clearfix:has(>.cooked-setting-column-14){display:grid;grid-template-columns:1fr 1fr;gap:10px}#cooked_recipe_settings .cooked-setting-column-14{width:100%;float:none;padding-right:0}#cooked_recipe_settings .recipe-setting-block h3.cooked-settings-title{width:60%}}@media screen and (max-width:600px){#cooked_recipe_settings .recipe-setting-block h3.cooked-settings-title{display:flex;flex-wrap:wrap;align-items:center;row-gap:10px}#cooked_recipe_settings .recipe-setting-block:has(#cooked-nutrition-label) .cooked-setting-column-12{width:100%;float:none;padding-right:0}#cooked_recipe_settings .recipe-setting-block:has(#cooked-nutrition-label) p.cooked-measurement-inputs{display:flex;gap:10px}#cooked_recipe_settings .recipe-setting-block:has(#cooked-nutrition-label) p.cooked-measurement-inputs .cooked-measurement-column{width:50%;margin-right:0;flex:1}#cooked-ingredients-builder .cooked-ingredient-block{display:grid;grid-template-columns:1fr 1fr;column-gap:8px;row-gap:4px;padding-left:30px;padding-right:35px}#cooked-ingredients-builder .cooked-ingredient-block>div{display:block;float:none;padding-right:0}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-amount{width:auto;grid-column:1}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-measurement{width:auto;grid-column:2}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-name{width:auto;grid-column:1/-1;padding-right:40px}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields{width:auto;float:none;clear:none;grid-column:1/-1}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-heading-name{grid-column:1/-1}#cooked_recipe_settings .cooked-ingredient-headers{display:grid;grid-template-columns:1fr 1fr;padding-left:30px;padding-right:35px}#cooked_recipe_settings .cooked-ingredient-headers span{display:block;float:none}#cooked_recipe_settings .cooked-layout-save-default{margin:0}#cooked_recipe_settings .cooked-ingredient-headers span.cooked-ingredient-header-amount{width:auto}#cooked_recipe_settings .cooked-ingredient-headers span.cooked-ingredient-header-measurement{width:auto}#cooked_recipe_settings .cooked-ingredient-headers span.cooked-ingredient-header-item{width:auto;grid-column:1/-1;padding-top:2px}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-substitution-fields{display:grid;grid-template-columns:1fr 1fr;column-gap:8px;row-gap:4px}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-substitution-fields>div{display:block;float:none;padding-right:0}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-substitution-fields .cooked-ingredient-amount,#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-substitution-fields .cooked-ingredient-measurement{width:100%;display:block}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-substitution-fields .cooked-ingredient-name{width:auto;grid-column:1/-1;padding-top:0}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-substitution-fields .cooked-sub-label{grid-column:1/-1}#cooked-ingredients-builder .cooked-ingredient-block{position:relative}#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-substitution{top:60px;right:42px}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded .cooked-show-substitution,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-substitution .cooked-show-substitution,#cooked-ingredients-builder .cooked-ingredient-block:hover .cooked-show-substitution{right:42px}#cooked-ingredients-builder .cooked-ingredient-block .cooked-delete-ingredient{right:11px}}@media screen and (max-width:500px){#cooked_recipe_settings .cooked-clearfix:has(>.cooked-setting-column-14){grid-template-columns:1fr}#cooked_recipe_settings.stuck #cooked-recipe-tabs{width:100%}}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields{width:100%;float:left;clear:both;margin-top:10px;padding-top:10px;padding-right:0;padding-left:0;margin-left:0;box-sizing:border-box;padding-bottom:5px;position:relative}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields .cooked-ingredient-amount{width:15%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields .cooked-ingredient-measurement{width:20%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields .cooked-ingredient-name{width:65%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields .cooked-sub-label{color:#7c7c7c;font-size:14px;font-weight:300}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields>div{display:inline-block;float:left;box-sizing:border-box;padding-right:10px}.cooked-bulk-add-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);z-index:100100;display:flex;align-items:center;justify-content:center}.cooked-bulk-add-modal{background:#fff;border-radius:6px;width:600px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 5px 30px rgba(0,0,0,.3)}.cooked-bulk-add-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #ddd}.cooked-bulk-add-header h2{margin:0;font-size:18px;line-height:1.3}.cooked-bulk-add-close{font-size:24px;text-decoration:none;color:#666;line-height:1;padding:0 4px}.cooked-bulk-add-close:hover{color:#d63638}.cooked-bulk-add-body{padding:20px;overflow-y:auto;flex:1}.cooked-bulk-add-help{margin-top:0;color:#666;font-size:13px}#cooked-bulk-add-textarea{width:100%;min-height:160px;font-size:14px;padding:10px;box-sizing:border-box;resize:vertical}.cooked-bulk-add-preview{margin-top:16px}.cooked-bulk-add-preview-label{margin:0 0 8px;font-size:13px}.cooked-bulk-add-preview-notice-ingredients{display:none;margin:10px 0 0;font-size:12px;line-height:1.45;color:#b45309;font-weight:700;gap:6px;align-items:flex-start}#cooked-bulk-add-preview[data-bulk-type=ingredients] .cooked-bulk-add-preview-notice-ingredients{display:flex}.cooked-bulk-add-preview-notice-mark{flex-shrink:0;font-weight:700;line-height:1.45;color:#b45309}.cooked-bulk-add-preview-notice-text{flex:1;min-width:0;font-weight:700;color:#b45309}.cooked-bulk-add-preview-list{max-height:200px;overflow-y:auto;border:1px solid #ddd;border-radius:4px;padding:4px}.cooked-bulk-add-preview-row{display:flex;align-items:center;gap:8px;padding:4px 6px;border-bottom:1px solid #f0f0f0}.cooked-bulk-add-preview-row:last-child{border-bottom:0}.cooked-bulk-add-heading-toggle{display:flex;align-items:center;gap:4px;white-space:nowrap;font-size:12px;color:#666;cursor:pointer;flex-shrink:0}.cooked-bulk-add-heading-toggle input[type=checkbox]{margin:0}.cooked-bulk-add-preview-text{flex:1;border:1px solid #ddd;border-radius:3px;padding:4px 8px;font-size:13px}.cooked-bulk-add-preview-row:not(.cooked-bulk-add-preview-row-ingredient).cooked-bulk-add-is-heading .cooked-bulk-add-preview-text{font-weight:700}.cooked-bulk-add-preview-row-ingredient .cooked-bulk-add-heading-line-wrap{display:none;flex:1;align-items:center;gap:8px;min-width:0}.cooked-bulk-add-preview-row-ingredient.cooked-bulk-add-is-heading .cooked-bulk-add-heading-line-wrap{display:flex}.cooked-bulk-add-preview-row-ingredient.cooked-bulk-add-is-heading .cooked-bulk-add-parsed-amount,.cooked-bulk-add-preview-row-ingredient.cooked-bulk-add-is-heading .cooked-bulk-add-parsed-name,.cooked-bulk-add-preview-row-ingredient.cooked-bulk-add-is-heading .cooked-bulk-add-parsed-unit{display:none}.cooked-bulk-add-heading-line-label{flex-shrink:0;font-size:12px;font-weight:600;color:#666}.cooked-bulk-add-preview-row-ingredient .cooked-bulk-add-heading-line-wrap .cooked-bulk-add-preview-text{flex:1;min-width:0;border:1px solid #ddd;border-radius:3px;padding:4px 8px;font-size:13px;font-weight:600}.cooked-bulk-add-preview-header{display:flex;align-items:center;gap:8px;padding:4px 6px 6px;border-bottom:1px solid #ddd;font-size:11px;font-weight:600;color:#999;text-transform:uppercase;letter-spacing:.5px}.cooked-bulk-add-col-heading{flex-shrink:0;width:108px}.cooked-bulk-add-col-amount{width:72px;flex-shrink:0}.cooked-bulk-add-col-unit{width:108px;flex-shrink:0}.cooked-bulk-add-col-name{flex:1}.cooked-bulk-add-parsed-amount{width:72px;flex-shrink:0;border:1px solid #ddd;border-radius:3px;padding:4px 6px;font-size:13px;text-align:center}.cooked-bulk-add-parsed-unit{width:108px;flex-shrink:0;border:1px solid #ddd;border-radius:3px;padding:4px 6px;font-size:13px}.cooked-bulk-add-parsed-name{flex:1;border:1px solid #ddd;border-radius:3px;padding:4px 6px;font-size:13px}.cooked-bulk-add-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid #ddd}.cooked-bulk-add-footer .button,.cooked-bulk-add-footer .button.button-primary{float:none;margin:0;vertical-align:middle}.cooked-bulk-add-spinner{float:none!important;margin:0!important}#cooked_allergens .cooked-allergens-checkboxes{display:flex;flex-direction:column;gap:8px}#cooked_allergens .cooked-allergen-checkbox{display:flex;align-items:center;gap:8px;cursor:pointer}#cooked_allergens .cooked-allergen-checkbox input[type=checkbox]{margin:0}#cooked_allergens .cooked-allergen{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}#cooked_allergens .cooked-allergen .cooked-icon{font-size:1.5rem;line-height:1}#cooked_allergens .cooked-allergen,#cooked_allergens .cooked-allergen .cooked-icon{color:rgba(0,0,0,.4)}#cooked_allergens .cooked-allergen-label{font-size:13px;color:#333}
\ No newline at end of file
+.cooked-clearfix:after{content:"";display:table;clear:both}#post-body-content #postdivrich{display:none}body.post-type-cp_recipe .wp-list-table tfoot th.check-column,body.post-type-cp_recipe .wp-list-table thead th.check-column{padding:15px 0 0 7px}body.post-type-cp_recipe .wp-list-table tfoot td,body.post-type-cp_recipe .wp-list-table tfoot th,body.post-type-cp_recipe .wp-list-table thead td,body.post-type-cp_recipe .wp-list-table thead th{padding:10px 10px}body.post-type-cp_recipe .wp-list-table tfoot th.sortable a,body.post-type-cp_recipe .wp-list-table tfoot th.sorted a,body.post-type-cp_recipe .wp-list-table thead th.sortable a,body.post-type-cp_recipe .wp-list-table thead th.sorted a{padding-left:0;padding-right:0}body.post-type-cp_recipe .wp-list-table tbody th.check-column{padding:15px 0 0 10px}body.post-type-cp_recipe .wp-list-table tbody td,body.post-type-cp_recipe .wp-list-table tbody th{padding:12px 10px}body.post-type-cp_recipe .wp-list-table tbody td.column-title strong{margin-top:6px}body.post-type-cp_recipe .wp-list-table tbody td.column-title strong .row-title{padding-top:10px;font-size:1rem!important}th.column-featured_image{width:50px;text-align:center}td.column-featured_image{width:50px;text-align:center}.cooked-admin-recipes-list-image img{width:49px;height:auto;border-radius:3px;position:relative;top:3px}body.post-type-cp_recipe #titlediv #title{box-shadow:none;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:0 12px;font-weight:400;font-size:19px;letter-spacing:0;height:44px}body.post-type-cp_recipe #titlediv #title-prompt-text{font-size:15px;color:#888;font-weight:400;letter-spacing:0;padding:12px 15px}body.mce-fullscreen #cooked-recipe-tabs{z-index:auto}body.mce-fullscreen #adminmenumain{display:none}body.mce-fullscreen #cooked-directions-builder .cooked-direction-block:not(:has(.mce-fullscreen)),body.mce-fullscreen #cooked_recipe_settings .wp-editor-wrap:not(:has(.mce-fullscreen)){visibility:hidden}body.mce-fullscreen div.mce-tinymce.mce-fullscreen{z-index:100010}#cooked-settings-prewrap{display:flex;justify-content:center}#cooked-settings-wrap{position:relative;border-radius:10px;margin:40px 40px 40px 20px;max-width:1200px;min-width:1000px;background:#fff;box-shadow:0 4px 4px rgba(0,0,0,.05),0 8px 8px rgba(0,0,0,.05),0 32px 32px rgba(0,0,0,.05),0 64px 64px rgba(0,0,0,.05)}#cooked-settings-wrap.is-stuck{position:static!important}#cooked-settings-wrap .cooked-settings-update-button{position:absolute;top:30px;right:30px}#cooked-settings-wrap .cooked-settings-update-button>.button-primary{box-shadow:none;border:none}#cooked-settings-wrap.is-stuck .cooked-settings-update-button{position:fixed;top:35px;right:11px;z-index:100001}#cooked-recipe-tabs{list-style:none;padding:0;margin:0;position:sticky;top:var(--wp-admin--admin-bar--height,0);z-index:1000;width:100%}#cooked_recipe_settings.stuck #cooked-recipe-tabs{box-shadow:0 3px 50px rgba(0,0,0,.25)}#cooked-recipe-tabs li{font-size:.9rem;line-height:3rem;height:3rem;font-weight:500;display:inline-block;padding:0 1.25rem;margin:0;color:#fff}#cooked-recipe-tabs li:hover{cursor:pointer}#cooked-recipe-tabs li.active,#cooked-recipe-tabs li.active:hover{cursor:default}#cooked-recipe-tabs li:last-child{border-right:none!important}#cooked-recipe-tabs li.cooked-loading{opacity:0;background:0 0;color:#fff;position:absolute;top:0;right:0;cursor:default;font-size:14px;width:40px;height:40px;text-align:center;display:block;line-height:40px;padding:0}#cooked-recipe-tabs li.cooked-loading:hover{background:0 0;color:#fff}#cooked_recipe_settings.cooked-loading #cooked-recipe-tabs li.cooked-loading{opacity:1}#cooked_recipe_settings .inside{padding:0;margin:0}.cooked-recipe-tab-content-wrapper .cooked-recipe-tab-content{display:none}.cooked-recipe-tab-content-wrapper .cooked-recipe-tab-content:first-child{display:block}.cooked-left{float:left;display:inline-block;width:auto}.cooked-right{float:right;display:inline-block;width:auto}#cooked_field--cooked_pro_license_key{font-family:monospace}#cooked_recipe_settings .cooked-bm-5{margin-bottom:5px!important}#cooked_recipe_settings .cooked-bm-10{margin-bottom:10px!important}#cooked_recipe_settings .cooked-tm-10{margin-top:10px!important}#cooked_recipe_settings .cooked-bm-15{margin-bottom:15px!important}#cooked_recipe_settings .cooked-bm-20{margin-bottom:20px!important}#cooked_recipe_settings .cooked-bm-30{margin-bottom:30px!important}#cooked_recipe_settings .cooked-bm-5-up{margin-bottom:-5px!important}#cooked_recipe_settings .cooked-bm-10-up{margin-bottom:-10px!important}#cooked_recipe_settings .cooked-bm-15-up{margin-bottom:-15px!important}#cooked_recipe_settings .cooked-bm-20-up{margin-bottom:-20px!important}#cooked_recipe_settings .cooked-bm-30-up{margin-bottom:-30px!important}#cooked_recipe_settings .cooked-hr{border:none;border-top:2px solid #ddd;margin:10px 0 0 0;padding:15px 0 0 0}#cooked_recipe_settings .cooked-conditional-hidden{display:none}#cooked_recipe_settings .cooked-recipe-tab-content{padding:23px 30px 15px 30px}#cooked_recipe_settings .recipe-setting-block{margin:0 0 20px;width:100%}#cooked_recipe_settings .recipe-setting-block p{font-size:.9rem;line-height:1.5rem;margin:0 0 1rem;padding:0}#cooked_recipe_settings .recipe-setting-block p.cooked-padded{line-height:1.75rem;font-size:.85rem}#cooked_recipe_settings .recipe-setting-block .cooked-conditional-hidden{padding:0}#cooked_recipe_settings textarea{width:100%;height:75px;padding:15px;box-sizing:border-box;position:relative;top:5px}#cooked_recipe_settings .recipe-setting-block>label.cooked-select-label{top:5px}#cooked_recipe_settings select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;border-radius:3px;padding:0 45px 0 9px;line-height:31px;height:33px;box-sizing:border-box;background:#fff}#cooked_recipe_settings .cooked-select-wrapper{background:#fff;position:relative;width:auto;display:inline-block;border-radius:3px;margin:0 5px 0 0}#cooked_recipe_settings .cooked-select-wrapper select{margin:0;background:0 0;position:relative}#cooked_recipe_settings .cooked-select-wrapper:before{font-family:CookedIcons;display:block;width:15px;height:15px;line-height:14px;color:#000;font-size:14px;content:"\f00b";position:absolute;right:12px;top:11px;color:rgba(0,0,0,.3)}#cooked_recipe_settings .cooked-select-wrapper:hover:before{color:#000}#cooked_recipe_settings .cooked-select-wrapper:hover select{border-color:#ccc}#cooked_recipe_settings .cooked-checkbox-radio-label{position:relative;left:1px}#cooked_recipe_settings .recipe-setting-block input[type=checkbox],#cooked_recipe_settings .recipe-setting-block input[type=radio]{margin-top:0}#cooked_recipe_settings .recipe-setting-block input[type=number]{width:65px}#cooked_recipe_settings .recipe-setting-block input[type=password],#cooked_recipe_settings .recipe-setting-block input[type=text]{width:75%}#cooked_recipe_settings .recipe-setting-block input[type=number],#cooked_recipe_settings .recipe-setting-block input[type=password],#cooked_recipe_settings .recipe-setting-block input[type=text]{margin:0 6px 5px 0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;height:33px;box-shadow:none;position:relative;top:2px;padding:0 10px}#cooked_recipe_settings .recipe-setting-block p.cooked-measurement-inputs .cooked-measurement-column{width:43%;margin-right:3%;display:inline-block}#cooked_recipe_settings .recipe-setting-block p.cooked-measurement-inputs .cooked-select-wrapper,#cooked_recipe_settings .recipe-setting-block p.cooked-measurement-inputs input,#cooked_recipe_settings .recipe-setting-block p.cooked-measurement-inputs label{width:100%;display:block}#cooked_recipe_settings .recipe-setting-block p.cooked-measurement-inputs .cooked-select-wrapper select{width:100%}#cooked_recipe_settings .recipe-setting-block input[type=number],#cooked_recipe_settings .recipe-setting-block input[type=password].cooked-small-textfield,#cooked_recipe_settings .recipe-setting-block input[type=text].cooked-small-textfield{width:150px}#cooked_recipe_settings small{display:block;line-height:1.5;font-size:12px;color:#888;padding:10px 0 0}#cooked_recipe_settings .recipe-setting-block em{color:#aaa}#cooked_recipe_settings .recipe-setting-block,#cooked_recipe_settings .recipe-setting-block .cooked-repositioned{display:block;position:relative;box-sizing:border-box;line-height:1}#cooked_recipe_settings .recipe-setting-block .cooked-repositioned{padding-left:157px}#cooked_recipe_settings .recipe-setting-block h3.cooked-settings-title{width:70%;position:relative;z-index:2;padding:.5rem 0 .5rem;margin:0;font-size:1rem;line-height:1.5rem;font-weight:600}#cooked_recipe_settings .recipe-setting-block strong.cooked-heading{font-size:14px}#cooked_recipe_settings .recipe-setting-block .cooked-repositioned>label{position:absolute;top:1px;left:0;width:147px;cursor:default;font-weight:600}#cooked_recipe_settings .recipe-setting-block .cooked-tooltip-icon{color:#aaa;cursor:help;display:inline-block;margin-left:10px}#cooked_recipe_settings .recipe-setting-block .cooked-tooltip-icon:hover{color:#eee}#cooked_recipe_settings .recipe-setting-block .cooked-repositioned>.cooked-checkbox-radio-label{top:7px}#cooked_recipe_settings .recipe-setting-block .cooked-repositioned>label{top:auto;height:33px;line-height:30px;padding:0;width:130px}#cooked_recipe_settings .recipe-setting-block .cooked-repositioned:first-child label:first-child{padding-top:12px;margin-top:-12px}#cooked_recipe_settings .recipe-setting-block .cooked-repositioned span.cooked-padded{padding:0 0 15px;display:block;line-height:1.9}#cooked_recipe_settings .recipe-setting-block .wp-picker-container .cooked-color-field.wp-color-picker{padding:5px;height:25px;top:0;margin:0;width:74px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #ccc}#cooked_recipe_settings .recipe-setting-block input[type=text].cooked-shortcode-field{font-family:monospace;background:#f5f5f5;font-size:12px}#cooked_recipe_settings .cooked-banner-block{margin:30px -30px -17px;display:block;box-sizing:content-box;padding:10px 30px 15px;background:#f9f9f9;width:100%;border-top:1px solid #e5e5e5}#cooked_recipe_settings .cooked-advanced-options-hr{border:none;border-bottom:1px solid #ddd;height:1px;padding:10px 0 0 0;margin:0 0 20px}#cooked_recipe_settings .recipe-setting-block input.cooked-time-picker{top:0;width:100%;padding-right:70%;margin:0 0 3px}#cooked_recipe_settings .recipe-setting-block .cooked-time-picker-text{position:absolute;bottom:13px;right:40px;color:#888}#cooked_recipe_settings .cooked-alert-block{background:#fffbdc;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;margin:10px 0 15px;padding:10px 22px 2px;border:2px solid #ece8c4}#cooked_recipe_settings .recipe-setting-block.cooked-template{display:none}#cooked_recipe_settings ul.cooked-admin-ul{font-size:.9rem;margin:0 0 1rem 2rem;list-style:disc}#cooked_recipe_settings ul.cooked-admin-ul li{font-size:.9rem;padding:0;margin:0 0 .5rem}#cooked_recipe_settings .cooked-html-block{background:#fff;width:auto;min-width:300px;display:inline-block;padding:.5rem 1.3rem .25rem;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}#cooked_recipe_settings .recipe-setting-block .cooked-html-block h3.cooked-settings-title{width:100%;color:#333}#cooked_recipe_settings .recipe-setting-block .cooked-html-block.valid{background:#fff;border:2px solid #0aa780;box-shadow:none;border-radius:5px}#cooked_recipe_settings .recipe-setting-block .cooked-html-block.valid>.cooked-settings-title{color:#0aa780}#cooked_recipe_settings .recipe-setting-block .cooked-html-block.expired,#cooked_recipe_settings .recipe-setting-block .cooked-html-block.invalid{border:2px solid #ca4a20}#cooked_recipe_settings .recipe-setting-block .cooked-html-block.expired>.cooked-settings-title,#cooked_recipe_settings .recipe-setting-block .cooked-html-block.invalid>.cooked-settings-title{color:#ca4a20}#cooked-directions-builder .cooked-direction-block.cooked-expanded>.cooked-heading-name,#cooked-directions-builder .cooked-direction-block.cooked-has-heading-element>.cooked-heading-name,#cooked-directions-builder .cooked-direction-block:hover>.cooked-heading-name,#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-heading-name,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-heading-element>.cooked-heading-name,#cooked-ingredients-builder .cooked-ingredient-block:hover>.cooked-heading-name{padding-right:32px}#cooked-directions-builder .cooked-direction-block .cooked-show-heading-element,#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-heading-element{opacity:0;cursor:pointer;font-size:14px;position:absolute;top:14px;right:35px}#cooked-directions-builder .cooked-direction-block .cooked-show-heading-element .cooked-icon,#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-heading-element .cooked-icon{color:#888}#cooked-directions-builder .cooked-direction-block.cooked-expanded .cooked-show-heading-element,#cooked-directions-builder .cooked-direction-block.cooked-has-heading-element .cooked-show-heading-element,#cooked-directions-builder .cooked-direction-block:hover .cooked-show-heading-element,#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded .cooked-show-heading-element,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-heading-element .cooked-show-heading-element,#cooked-ingredients-builder .cooked-ingredient-block:hover .cooked-show-heading-element{opacity:1}#cooked-directions-builder .cooked-direction-block .cooked-show-heading-element .cooked-icon:hover,#cooked-directions-builder .cooked-direction-block.cooked-expanded .cooked-show-heading-element .cooked-icon,#cooked-directions-builder .cooked-direction-block.cooked-has-heading-element .cooked-show-heading-element .cooked-icon,#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-heading-element .cooked-icon:hover,#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded .cooked-show-heading-element .cooked-icon,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-heading-element .cooked-show-heading-element .cooked-icon{color:#0685ba}#cooked-directions-builder .cooked-direction-block>.cooked-heading-element,#cooked-ingredients-builder .cooked-ingredient-block>.cooked-heading-element{display:none;width:65%;float:right;margin-top:4px;padding-right:32px}#cooked-directions-builder .cooked-direction-block>.cooked-heading-element select,#cooked-ingredients-builder .cooked-ingredient-block>.cooked-heading-element select{color:#0685ba;width:100%}#cooked-directions-builder .cooked-direction-block>.cooked-heading-element label,#cooked-ingredients-builder .cooked-ingredient-block>.cooked-heading-element label{font-weight:600}#cooked-directions-builder .cooked-direction-block.cooked-expanded>.cooked-heading-element,#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-heading-element{display:block}#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-substitution{opacity:0;cursor:pointer;font-size:14px;position:absolute;top:15px;right:58px}#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-substitution .cooked-icon{color:#888}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded .cooked-show-substitution,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-substitution .cooked-show-substitution,#cooked-ingredients-builder .cooked-ingredient-block:hover .cooked-show-substitution{opacity:1;right:50px}#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-substitution .cooked-icon:hover,#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded .cooked-show-substitution .cooked-icon,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-substitution .cooked-show-substitution .cooked-icon{color:#0685ba}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-ingredient-name,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-substitution>.cooked-ingredient-name,#cooked-ingredients-builder .cooked-ingredient-block:hover>.cooked-ingredient-name{padding-right:32px}#cooked_recipe_settings .switchery-small,body.post-type-cp_recipe .switchery-small{height:1rem;width:1.75rem;border-radius:1rem;margin-right:.4rem}#cooked_recipe_settings .switchery-small>small,body.post-type-cp_recipe .switchery-small>small{width:1rem;height:1rem;padding:0}.cooked-tooltip-buttons .cooked-icon-spin{margin-top:10px;font-size:15px}.cooked-tooltip-buttons .cooked-saved-default{height:28px;line-height:28px;font-weight:700;font-size:15px;color:#888}.cooked-progress{display:none;position:relative;background:#eee;width:100%;height:6px;padding:0;border-radius:3px;margin:10px 0 0 0}.cooked-progress-text{display:none;font-size:10px;color:#aaa;padding:2px 0 5px}.cooked-progress-text.cooked-active,.cooked-progress.cooked-active{display:block}.cooked-progress .cooked-progress-bar{display:block;position:absolute;background:#0085ba;width:0%;height:6px;top:0;left:0;border-radius:3px}#cooked-import-progress.cooked-progress,#cooked-migration-progress.cooked-progress{background:#ccc;margin:25px 0 0 0;border-radius:6px;height:12px;max-width:600px}#cooked-import-progress.cooked-progress .cooked-progress-bar,#cooked-migration-progress.cooked-progress .cooked-progress-bar{border-radius:6px;height:12px}#cooked-import-progress-text.cooked-progress-text,#cooked-migration-progress-text.cooked-progress-text{font-size:11px;color:#888;max-width:600px}#cooked-import-completed,#cooked-migration-completed{display:none}#cooked-import-completed.cooked-active,#cooked-migration-completed.cooked-active{display:block}#cooked-csv-import-progress.cooked-progress{background:#ccc;margin:25px 0 0 0;border-radius:6px;height:12px;max-width:600px}#cooked-csv-import-progress.cooked-progress .cooked-progress-bar{border-radius:6px;height:12px}#cooked-csv-import-progress-text.cooked-progress-text{font-size:11px;color:#888;max-width:600px}#cooked-csv-import-completed{display:none}#cooked-csv-import-completed.cooked-active{display:block}#cooked-csv-import-form{max-width:100%;box-sizing:border-box}#cooked-csv-import-form input[type=file]{max-width:100%;box-sizing:border-box;width:100%}#cooked-csv-import-errors{max-width:100%;box-sizing:border-box;word-wrap:break-word}#cooked-import-progress.cooked-progress,#cooked-migration-progress.cooked-progress,#cooked-related-progress.cooked-progress{background:#ccc;margin:25px 0 0 0;border-radius:6px;height:12px;max-width:600px}#cooked-import-progress.cooked-progress .cooked-progress-bar,#cooked-migration-progress.cooked-progress .cooked-progress-bar,#cooked-related-progress.cooked-progress .cooked-progress-bar{border-radius:6px;height:12px}#cooked-import-progress-text.cooked-progress-text,#cooked-migration-progress-text.cooked-progress-text,#cooked-related-progress-text.cooked-progress-text{font-size:11px;color:#888;max-width:600px}#cooked-import-completed,#cooked-migration-completed,#cooked-related-completed{display:none}#cooked-import-completed.cooked-active,#cooked-migration-completed.cooked-active,#cooked-related-completed.cooked-active{display:block}.cooked-related-status{margin:0 0 12px 0;padding:8px 12px;font-size:13px;line-height:1.4;border-radius:4px;border-left:3px solid #00a878;background:#f0f9f6;color:#2d4a42;max-width:480px}#cooked-related-last-done.cooked-related-status{border-left-color:#8c9b99;background:#f6f8f7;color:#5c6b69}#cooked_recipe_settings .cooked-layout-save-default{position:relative;top:-2px;z-index:10;margin:0 0 0 15px;padding:0 8px 1px}#cooked_recipe_settings .cooked-layout-load-default{position:relative;top:-2px;z-index:10;margin:0 0 0 10px;padding:0 8px 1px}body .button.button-cooked-reset{color:#999}body .button.button-cooked-reset:hover{color:#555}#cooked_recipe_settings .cooked-ingredient-headers{display:block;padding:5px 25px 0 35px}#cooked_recipe_settings .cooked-ingredient-headers span{font-size:.7rem;font-weight:700;letter-spacing:.03rem;text-transform:uppercase;color:#0085ba;box-sizing:border-box;display:inline-block;float:left}#cooked_recipe_settings .cooked-ingredient-headers span.cooked-ingredient-header-amount{width:15%}#cooked_recipe_settings .cooked-ingredient-headers span.cooked-ingredient-header-measurement{width:20%}#cooked_recipe_settings .cooked-ingredient-headers span.cooked-ingredient-header-item{width:65%}#cooked-ingredients-builder{margin:0 0 20px}#cooked-ingredients-builder .cooked-ingredient-block{display:block;padding:5px 45px 5px 35px}#cooked-ingredients-builder .cooked-ingredient-block:hover{background:#eee}#cooked-ingredients-builder .cooked-ingredient-block input[type=number],#cooked-ingredients-builder .cooked-ingredient-block input[type=text],#cooked-ingredients-builder .cooked-ingredient-block select{margin:0;display:block;top:0}#cooked-ingredients-builder .cooked-ingredient-block>div{display:inline-block;float:left;box-sizing:border-box;padding-right:10px}#cooked-ingredients-builder .cooked-ingredient-block>div input[type=text]{width:100%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-amount{width:15%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-measurement{width:20%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-measurement .cooked-select-wrapper{width:100%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-measurement .cooked-select-wrapper select{width:100%}#cooked-ingredients-builder .cooked-ingredient-block .cooked-substitution-fields>.cooked-ingredient-measurement .cooked-select-wrapper{width:100%}#cooked-ingredients-builder .cooked-ingredient-block .cooked-substitution-fields>.cooked-ingredient-measurement .cooked-select-wrapper select{width:100%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-name{width:65%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-heading-name{width:100%}#cooked-ingredients-builder .cooked-ingredient-block>div small.cooked-input-ex{display:block;padding:5px 0 0 2px}#cooked-ingredients-builder .cooked-ingredient-block{margin:0}#cooked-ingredients-builder .cooked-ingredient-block i.cooked-icon-drag{cursor:move;color:#ccc;font-size:32px;position:absolute;top:5px;left:1px;touch-action:none}#cooked-ingredients-builder .cooked-ingredient-block:hover i.cooked-icon-drag{color:#888}#cooked-ingredients-builder .cooked-ingredient-block.ui-sortable-helper{background:#f5f5f5;box-shadow:0 10px 20px rgba(0,0,0,.15);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}#cooked-ingredients-builder .cooked-ingredient-block.ui-sortable-placeholder{visibility:visible!important;background:#eee;display:block;width:100%;height:43px;border-top:6px solid #fff;border-bottom:6px solid #fff}#cooked-ingredients-builder .cooked-ingredient-block .cooked-delete-ingredient{cursor:pointer;font-size:14px;position:absolute;top:14px;right:11px}#cooked-ingredients-builder .cooked-ingredient-block .cooked-delete-ingredient .cooked-icon{color:#fff}#cooked-ingredients-builder .cooked-ingredient-block:hover .cooked-delete-ingredient .cooked-icon{color:#888}#cooked-ingredients-builder .cooked-ingredient-block .cooked-delete-ingredient .cooked-icon:hover{color:#de2020}#cooked-ingredients-builder .cooked-ingredient-block.cooked-ingredient-heading{margin:10px 0}#cooked-ingredients-builder .cooked-ingredient-block.cooked-ingredient-heading>div input[type=text]{padding:0 7px;font-size:16px;background:#f9f9f9;font-weight:600}#cooked-directions-builder{margin:0 0 20px}#cooked-directions-builder .cooked-direction-block{display:block;padding:15px 25px 15px 35px}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading{padding:5px 25px 5px 35px}#cooked-directions-builder .cooked-direction-block:hover{background:#f5f5f5}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading:hover{background:#eee}#cooked-directions-builder .cooked-direction-block textarea{margin:0;display:block;height:250px;top:0}#cooked-directions-builder .cooked-direction-block>div{display:inline-block;float:left;box-sizing:border-box;padding-right:15px}#cooked-directions-builder .cooked-direction-block>div:last-child{padding:0}#cooked-directions-builder .cooked-direction-block>div input[type=text]{width:100%}#cooked-directions-builder .cooked-direction-block .mce-statusbar{display:none}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image{width:135px;position:absolute;top:15px;left:35px}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image img{cursor:pointer;display:none;border-radius:3px}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image .cooked-direction-img-placeholder{box-sizing:border-box;cursor:pointer;border-radius:3px;width:100%;padding-bottom:100%;background:0 0;border:2px dashed #ddd;border-radius:3px;margin-top:15px}#cooked-directions-builder .cooked-direction-block:hover>.cooked-direction-image .cooked-direction-img-placeholder{background:0 0}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image .cooked-direction-img-placeholder:hover{background:#ddd;border:2px solid #ddd}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image .direction-image-button{width:100%;text-align:center}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image .remove-image-button{display:none;position:absolute;top:43px;right:15px}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image.cooked-has-image .remove-image-button{display:inline-block;padding:10px;background:rgba(0,0,0,.25);color:#fff}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image.cooked-has-image .remove-image-button:hover{background:#ff0100}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image.cooked-has-image img{width:100%;height:auto;display:block;margin:15px 0 0}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image.cooked-has-image .cooked-direction-img-placeholder{display:none}#cooked-directions-builder .cooked-direction-block>.cooked-direction-content{width:100%;padding-left:175px;padding-right:175px}#cooked-directions-builder .cooked-direction-block .cooked-direction-number{opacity:.4;position:absolute;display:inline-block;font-weight:800;top:17px;left:35px;font-size:1.25rem;line-height:1}#cooked-directions-builder .cooked-direction-block.cooked-direction-has-number>.cooked-direction-image{left:65px}#cooked-directions-builder .cooked-direction-block.cooked-direction-has-number>.cooked-direction-content{padding-left:175px;padding-right:175px}#cooked-directions-builder .cooked-direction-block.cooked-direction-has-number-wide>.cooked-direction-content{padding-left:185px;padding-right:175px}#cooked-directions-builder .cooked-direction-block>.cooked-heading-name{width:100%}#cooked-directions-builder .cooked-direction-block{margin:0}#cooked-directions-builder .cooked-direction-block i.cooked-icon-drag{cursor:move;color:#ccc;font-size:32px;position:absolute;top:13px;left:1px;touch-action:none}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading i.cooked-icon-drag{top:5px}#cooked-directions-builder .cooked-direction-block:hover i.cooked-icon-drag{color:#888}#cooked-directions-builder .cooked-direction-block.ui-sortable-helper{background:#f5f5f5;box-shadow:0 10px 20px rgba(0,0,0,.15);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}#cooked-directions-builder .cooked-direction-block.ui-sortable-placeholder{visibility:visible!important;background:#eee;display:block;width:100%;height:280px;border-top:6px solid #fff;border-bottom:6px solid #fff}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading.ui-sortable-placeholder{height:43px}#cooked-directions-builder .cooked-direction-block .cooked-delete-direction{cursor:pointer;font-size:14px;position:absolute;right:14px}#cooked-directions-builder .cooked-direction-block .cooked-delete-direction .cooked-icon{color:#fff}#cooked-directions-builder .cooked-direction-block:hover .cooked-delete-direction .cooked-icon{color:#888}#cooked-directions-builder .cooked-direction-block .cooked-delete-direction .cooked-icon:hover{color:#de2020}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video{width:135px;position:absolute;top:15px;right:25px}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading{margin:10px 0}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading>div input[type=text]{padding:0 7px;font-size:16px;background:#f9f9f9;font-weight:600;top:0;margin:0}#cooked-directions-builder .cooked-direction-block .cooked-delete-direction{top:16px}#cooked-directions-builder .cooked-direction-block.cooked-direction-heading .cooked-delete-direction{top:14px}.cooked-settings-image-field{position:relative;display:inline-block;max-width:150px}.cooked-settings-image-field .cooked-settings-image-preview-img{display:none;width:100%;height:auto;margin:10px 0 0;border-radius:3px}.cooked-settings-image-field .cooked-settings-image-remove{display:none;position:absolute;top:50px;right:0;padding:10px;background:rgba(0,0,0,.25);color:#fff;border-radius:3px}.cooked-settings-image-field.cooked-has-image .cooked-settings-image-remove{display:inline-block}.cooked-settings-image-field.cooked-has-image .cooked-settings-image-remove:hover{background:#ff0100}.cooked-settings-image-field.cooked-has-image .cooked-settings-image-preview-img{display:block}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video .cooked-direction-video-preview{display:none;width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:3px;cursor:pointer}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video .cooked-direction-video-placeholder{box-sizing:border-box;cursor:pointer;border-radius:3px;width:100%;padding-bottom:100%;background:0 0;border:2px dashed #ddd;margin-top:15px}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video .cooked-direction-video-placeholder:hover{background:#ddd;border:2px solid #ddd}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video .direction-video-button{width:100%;text-align:center}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video.cooked-has-video .cooked-direction-video-placeholder{display:none}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video.cooked-has-video .cooked-direction-video-preview{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;margin-top:15px}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video .remove-video-button{display:none;position:absolute;top:43px;right:15px}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video.cooked-has-video .remove-video-button{display:inline-block;padding:10px;background:rgba(0,0,0,.25);color:#fff}#cooked-directions-builder .cooked-direction-block>.cooked-direction-video.cooked-has-video .remove-video-button:hover{background:#ff0100}@media screen and (max-width:1440px){#cooked-directions-builder .cooked-direction-block:not(.cooked-direction-heading){display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"content content" "image video";gap:10px;padding:15px 0 15px 0}#cooked-directions-builder .cooked-direction-block:not(.cooked-direction-heading)>.cooked-direction-content{grid-area:content;padding:14px 14px 0 14px!important;min-height:80px}#cooked-directions-builder .cooked-direction-block:not(.cooked-direction-heading)>.cooked-direction-image{grid-area:image;position:relative;width:auto;left:auto;top:auto;padding-left:15px;padding-right:0}#cooked-directions-builder .cooked-direction-block:not(.cooked-direction-heading)>.cooked-direction-video{grid-area:video;position:relative;width:auto;right:auto;top:auto}#cooked_recipe_settings .cooked-recipe-tab-content{padding:0 0 15px 0}#cooked-recipe-tabs{white-space:nowrap;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;width:100%}#cooked-recipe-tabs::-webkit-scrollbar{display:none}#cooked-recipe-tabs li{float:none}}#cooked-recipe-image-gallery{margin:0 -1% 0}#cooked-recipe-image-gallery .cooked-recipe-gallery-item{position:relative;overflow:hidden;cursor:move;box-sizing:border-box;display:inline-block;width:18%;height:auto;padding:0;margin:0 1% 2% 1%}#cooked-recipe-image-gallery .cooked-recipe-gallery-item:hover{opacity:.9}#cooked-recipe-image-gallery .cooked-recipe-gallery-item img{width:100%;height:auto;border-radius:3px;display:block;margin:0;padding:0;border:none}#cooked-recipe-image-gallery .cooked-recipe-gallery-item.ui-sortable-helper,#cooked-recipe-image-gallery .cooked-recipe-gallery-item.ui-sortable-helper:hover{opacity:.75;box-shadow:0 10px 20px rgba(0,0,0,.15)}#cooked-recipe-image-gallery .cooked-recipe-gallery-item.ui-sortable-placeholder{width:18%;height:auto;visibility:visible!important;border-radius:3px;background:#ddd;display:inline-block}#cooked-recipe-image-gallery .cooked-recipe-gallery-item .remove-image-button{border-radius:0 3px 0 0;display:inline-block;position:absolute;top:0;right:0;padding:10px;background:rgba(0,0,0,.25);color:#fff}#cooked-recipe-image-gallery .cooked-recipe-gallery-item .remove-image-button:hover{background:#ff0100}#cooked-recipe-image-gallery .cooked-recipe-gallery-item .cooked-gallery-edit-button{border-radius:3px 0 0 0;display:inline-block;position:absolute;top:0;left:0;padding:10px;background:rgba(0,0,0,.25);color:#fff}#cooked-recipe-image-gallery .cooked-recipe-gallery-item .cooked-gallery-edit-button:hover{background:#0084bc}#cooked-recipe-image-gallery .cooked-recipe-gallery-item .cooked-gallery-item-title{position:absolute;left:0;bottom:0;box-sizing:border-box;width:100%;border-radius:0 0 3px 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;padding:10px 10px 11px;text-align:center;background:#000;background:rgba(0,0,0,.3);color:#fff;font-size:12px}#cooked-recipe-image-gallery .cooked-recipe-gallery-item:hover .cooked-gallery-item-title{background:#000;background:rgba(0,0,0,.75)}#cooked-recipe-image-gallery .cooked-recipe-gallery-item.ui-sortable-helper{-webkit-animation:cooked-wiggle .4s infinite;-moz-animation:cooked-wiggle .4s infinite;-o-animation:cooked-wiggle .4s infinite;animation:cooked-wiggle .4s infinite}#cooked_recipe_settings label.cooked-nutrition-label{display:block;font-size:.7rem;letter-spacing:.03rem;font-weight:700;text-transform:uppercase;line-height:1;margin:0 0 7px}#cooked_recipe_settings #cooked-nutrition-label{line-height:1.6;font-size:1.1rem;border:1px solid #aaa;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:5%;margin:0 0 2rem;font-family:Helvetica,Arial,sans-serif;container-name:nutrition-label;container-type:inline-size}#cooked_recipe_settings #cooked-nutrition-label h2{font-size:2.5rem;line-height:1;letter-spacing:0;font-weight:800;padding:0 0 .5rem 0;margin:0 0 .4rem;color:#333;border-bottom:1px solid #aaa}#cooked_recipe_settings #cooked-nutrition-label p.cooked-daily-value-text{padding:.5rem 0 0 0;margin:0;font-size:.9rem}#cooked_recipe_settings #cooked-nutrition-label ul.cooked-nut-servings p{font-size:1.5rem}#cooked_recipe_settings #cooked-nutrition-label ul{list-style:none;margin:0;padding:0}#cooked_recipe_settings #cooked-nutrition-label li{position:relative;margin:0;padding:0 0 3px 0;border-top:1px solid #aaa}#cooked_recipe_settings #cooked-nutrition-label li li{padding:3px 0 0;margin:3px 0 0}#cooked_recipe_settings #cooked-nutrition-label li:after{content:"";display:table;clear:both}#cooked_recipe_settings #cooked-nutrition-label li.no-after:after{content:none}#cooked_recipe_settings #cooked-nutrition-label li.cooked-nut-spacer{border:none;height:.6rem;padding:0;background:#333}#cooked_recipe_settings #cooked-nutrition-label ul li.cooked-nut-no-border,#cooked_recipe_settings #cooked-nutrition-label>ul>li:first-child{border:none}#cooked_recipe_settings #cooked-nutrition-label li ul{padding:0;margin:0 0 0 20px}#cooked_recipe_settings #cooked-nutrition-label li ul.cooked-right{margin:0}#cooked_recipe_settings #cooked-nutrition-label li ul.cooked-right li{border:none;padding:0;margin:0}#cooked_recipe_settings #cooked-nutrition-label li.cooked-calories ul.cooked-right li strong.cooked-nut-label{font-size:2.5rem;line-height:1}#cooked_recipe_settings #cooked-nutrition-label .cooked-calories{border-top:none;display:flex;justify-content:space-between;align-items:baseline;padding:0}#cooked_recipe_settings #cooked-nutrition-label .cooked-calories strong,#cooked_recipe_settings #cooked-nutrition-label .cooked-calories strong.cooked-nut-label{font-size:2rem;font-weight:800}#cooked_recipe_settings #cooked-nutrition-label ul.cooked-nut-servings li{border:none}#cooked_recipe_settings #cooked-nutrition-label ul.cooked-nut-servings{margin:0}#cooked_recipe_settings #cooked-nutrition-label .cooked-nut-hr{border:none;border-top:1.3rem solid #333;margin:.1rem 0 0;padding:0}#cooked_recipe_settings #cooked-nutrition-label strong{font-weight:800}#cooked_recipe_settings #cooked-nutrition-label .cooked-serving-size strong,#cooked_recipe_settings #cooked-nutrition-label .cooked-serving-size strong.cooked-nut-label{font-size:1.5rem;font-weight:800}#cooked_recipe_settings #cooked-nutrition-label strong.cooked-nut-heading{font-size:1rem}#cooked_recipe_settings #cooked-nutrition-label strong.cooked-nut-label{font-weight:400}#cooked_recipe_settings #cooked-nutrition-label .cooked-nut-right{float:right}#cooked_recipe_settings #cooked-nutrition-label ul.cooked-nut-bottom{margin:0 0 .75rem}#cooked_recipe_settings #cooked-nutrition-label ul.cooked-nut-bottom li{border-top:none;border-bottom:1px solid #aaa;float:left;width:100%;box-sizing:border-box}#cooked_recipe_settings .cooked-measurement-inputs .cooked-select-wrapper:before{top:8px}.cooked-auto-nutrition{display:flex;justify-content:end;margin:0 0 1rem}#cooked-tooltip-auto-nutrition-notice{margin:0}.cooked-settings-header{border-radius:10px 10px 0 0;width:auto;height:90px;line-height:85px;padding:0 30px;font-weight:600;box-sizing:border-box;background:#33373c;color:#fff;font-size:29px;letter-spacing:-.03rem}.cooked-settings-header .cooked-icon{color:#00e0a9}.cooked-settings-submit-wrap{padding:0 0 35px 35px;margin:-20px 0 0}#cooked_recipe_settings .recipe-setting-block .cooked-permalink-field-wrapper span{font-size:14px;display:inline-block;line-height:32px;padding:5px 0 0 0}#cooked_recipe_settings .recipe-setting-block input[type=text].cooked-permalink-field{position:relative;top:0;display:inline-block;width:150px;margin:0 10px}#cooked-settings-panel{position:relative;margin:0;padding:0}#cooked-settings-tabs{display:flex;width:auto;padding:0 20px 0 0;margin:0;list-style:none}#cooked-settings-tabs li{font-size:13px;line-height:1;font-weight:400;display:block;padding:0;margin:0;color:#fff}#cooked-settings-tabs li .cooked-icon{font-size:14px}#cooked-settings-tabs li .cooked-icon.cooked-icon-recipe-icon{font-size:20px;top:2px;position:relative}#cooked-settings-tabs li:hover{cursor:pointer}#cooked-settings-tabs li.active,#cooked-settings-tabs li.active:hover{cursor:default}#cooked-settings-tabs a{line-height:41px;font-size:.9rem;letter-spacing:.03rem;padding:2px 15px 4px;display:block;outline:0;box-shadow:none;border:none;white-space:nowrap}#cooked-settings-panel.stuck{padding-top:41px}#cooked-settings-panel.stuck #cooked-settings-tabs{position:fixed;width:calc(100% - 180px);top:32px;left:0;z-index:100000;margin-left:160px}#cooked-settings-panel .cooked-settings-tab-content-wrapper .cooked-settings-tab-content{display:none}#cooked-settings-panel .cooked-settings-tab-content-wrapper .cooked-settings-tab-content:first-child{display:block}#cooked-settings-panel .cooked-settings-tab-content{padding:25px 35px;margin-right:0}#cooked-settings-panel #cooked_recipe_settings .recipe-setting-block h3.cooked-settings-title{padding-bottom:.2rem}#cooked_recipe_settings .cooked-setting-column-14{position:relative;width:25%;float:left;padding-right:20px;box-sizing:border-box}#cooked_recipe_settings .cooked-setting-column-13{position:relative;width:33%;float:left;padding-right:20px;box-sizing:border-box}#cooked_recipe_settings .cooked-setting-column-23{position:relative;width:66%;float:left;padding-right:20px;box-sizing:border-box}#cooked_recipe_settings .cooked-setting-column-12{position:relative;width:50%;float:left;padding-right:20px;box-sizing:border-box}#cooked_recipe_settings .cooked-setting-column-12 input[type=text],#cooked_recipe_settings .cooked-setting-column-13 input[type=text],#cooked_recipe_settings .cooked-setting-column-14 input[type=text],#cooked_recipe_settings .cooked-setting-column-23 input[type=text],#cooked_recipe_settings .recipe-setting-block input[type=text].cooked-shortcode-field{width:95%}#cooked_recipe_settings .cooked-setting-column-12 .cooked-select-wrapper,#cooked_recipe_settings .cooked-setting-column-12 select,#cooked_recipe_settings .cooked-setting-column-13 .cooked-select-wrapper,#cooked_recipe_settings .cooked-setting-column-13 select,#cooked_recipe_settings .cooked-setting-column-14 .cooked-select-wrapper,#cooked_recipe_settings .cooked-setting-column-14 select,#cooked_recipe_settings .cooked-setting-column-23 select{width:100%}#cooked_recipe_settings .cooked-setting-column-14.cooked-tb-col{padding:0}#cooked-welcome-screen{padding:15px 50px 0 30px;position:relative}#cooked-welcome-screen .cooked-badge{position:absolute;top:0;right:0}#cooked-welcome-screen .cooked-badge img{border:none;width:150px;height:150px;display:block;margin:0}#cooked-welcome-screen .about-text{margin-bottom:40px;line-height:1.8;font-size:17px;margin-right:260px}#cooked-welcome-screen .about-wrap{margin:25px auto 0;max-width:1000px}#cooked-welcome-screen .about-wrap h1{font-size:2.25rem}#cooked-welcome-screen .about-wrap p{font-size:1rem;margin:0 0 2rem;line-height:1.7rem}#cooked-welcome-screen #cooked-welcome-panel{background:#fff;padding:30px 30px 15px 30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;border:none;box-shadow:0 4px 4px rgba(0,0,0,.05),0 8px 8px rgba(0,0,0,.05),0 32px 32px rgba(0,0,0,.05),0 64px 64px rgba(0,0,0,.05)}#cooked-welcome-screen #cooked-welcome-panel img.cooked-welcome-banner{border:none;display:block;padding:0;margin:0 0 30px;box-sizing:border-box;border-radius:5px 5px 0 0}#cooked-welcome-screen #cooked-welcome-panel .cooked-welcome-panel-intro{text-align:center;margin:0 50px 2rem;padding:15px 0;border-bottom:1px solid #e5e5e5}#cooked-welcome-screen #cooked-welcome-panel .cooked-welcome-panel-intro h1{font-size:1.75rem;margin:0 0 1rem;padding:0}#cooked-welcome-screen #cooked-welcome-panel .cooked-welcome-panel-intro p{max-width:600px;font-size:1.1rem;line-height:1.8rem;margin:0 auto 2rem;padding:0}#cooked-welcome-screen .cooked-welcome-panel a{text-decoration:none}#cooked-welcome-screen .cooked-welcome-panel-column{display:block!important}#cooked-welcome-screen .cooked-welcome-panel-column>strong{font-size:1rem}#cooked-welcome-screen .cooked-welcome-panel-column h3{font-size:1.75rem;margin:0 0 1rem;position:relative}#cooked-welcome-screen .cooked-welcome-panel-column h3 a{position:absolute;top:0;right:0;font-size:12px;font-weight:400}#cooked-welcome-screen .cooked-welcome-panel-column h3 a i.fa{position:relative;top:1px}#cooked-welcome-screen .cooked-welcome-panel-column h4{font-size:1.25rem;margin:0 0 1rem;position:relative}#cooked-welcome-screen .cooked-welcome-panel-column h4 a{position:absolute;top:0;right:0;font-size:12px;font-weight:400}#cooked-welcome-screen .cooked-welcome-panel-column h4 a i.fa{position:relative;top:1px}#cooked-welcome-screen .cooked-welcome-panel-column.cooked-welcome-panel-full{width:100%;padding-right:0;float:none}#cooked-welcome-screen .cooked-welcome-panel-column.cooked-welcome-panel-last{width:70%;padding-right:0;float:right}#cooked-welcome-screen .cooked-welcome-panel-column .fa-external-link{color:#888}#cooked-welcome-screen .cooked-welcome-panel-content{min-height:1px;padding:10px 50px 20px;margin:0}#cooked-welcome-screen .cooked-welcome-panel .cooked-welcome-panel-column-container{display:flex;justify-content:between!important;padding:0!important;flex-wrap:wrap}#cooked-welcome-screen .cooked-welcome-panel-column{box-sizing:border-box;padding-right:2rem;width:30%}#cooked-welcome-screen .cooked-pro-features{width:85%;margin:0 auto;padding:0 0 10px;display:flex;flex-wrap:wrap}#cooked-welcome-screen ul.cooked-whatsnew-list{margin-right:0}#cooked-welcome-screen ul.cooked-whatsnew-list li{line-height:1.7;position:relative;margin-right:0;border-top:1px solid #e5e5e5;padding:8px 0 4px 0}#cooked-welcome-screen ul.cooked-whatsnew-list li:first-child{border:none;padding-top:0}#cooked-welcome-screen ul.cooked-whatsnew-list em.fix,#cooked-welcome-screen ul.cooked-whatsnew-list strong.new,#cooked-welcome-screen ul.cooked-whatsnew-list strong.tweak{position:absolute;font-style:normal;display:inline-block;background:#aaa;text-transform:uppercase;top:11px;left:0;color:#fff;font-weight:600;-moz-border-radius:3px;-webkit-border-radius:3px;text-align:center;width:38px;border-radius:3px;font-size:10px;line-height:19px;height:19px;padding:0 6px;margin:0 6px 0 0}#cooked-welcome-screen ul.cooked-whatsnew-list li:first-child em.fix,#cooked-welcome-screen ul.cooked-whatsnew-list li:first-child strong.new,#cooked-welcome-screen ul.cooked-whatsnew-list li:first-child strong.tweak{top:3px}#cooked-welcome-screen ul.cooked-whatsnew-list strong.new{background:#56c477}#cooked-welcome-screen ul.cooked-whatsnew-list strong.tweak{background:#0073aa}#cooked-welcome-screen ul.cooked-whatsnew-list em.fix{background:#ffad10}#cooked-welcome-screen ul li.cooked-pro i.cooked-icon{color:#ffad10}#cooked-welcome-screen ul li.cooked-pro a{font-weight:600;color:#ffad10}#cooked-welcome-screen ul li.cooked-pro a:hover{color:#d3910f}#cooked-welcome-screen ul.cooked-whatsnew-pro{margin-bottom:0;flex:1 0 auto;width:33.333%}#cooked-welcome-screen ul.cooked-whatsnew-pro li{padding-left:0;font-size:1.15rem;font-weight:400}#cooked-welcome-screen ul.cooked-whatsnew-pro li i.cooked-icon-star{color:#ffad10;margin:0 7px 0 0;font-size:19px;position:relative;top:1px}#cooked-welcome-screen .cooked-welcome-bottom{text-align:center;background:#f9f9f9;margin:30px -80px -15px;border-top:1px solid #f1f1f1}#cooked-welcome-screen .cooked-pro-button{display:inline-block;clear:both;text-align:center;width:auto;margin:30px auto;padding:20px 25px 21px;font-size:1.25rem;line-height:1rem;font-weight:600;color:#fff;background:#ffad10;border-radius:50px}#cooked-welcome-screen .cooked-pro-button:hover{background:#e08704}#cooked-welcome-screen .cooked-coupon-code{color:#4c5e65;display:inline-block;font-size:17px;padding:0 0 0 1.5rem}@media screen and (max-width:1050px){#cooked-welcome-screen ul.cooked-whatsnew-pro{width:100%;margin-top:0}#cooked-welcome-screen ul.cooked-whatsnew-pro:first-child{margin-top:10px}#cooked-welcome-screen ul.cooked-whatsnew-pro li:first-child{border-top:1px solid #e5e5e5;padding-top:8px}#cooked-welcome-screen ul.cooked-whatsnew-pro:first-child li:first-child{border:none;padding-top:0}}@media screen and (max-width:870px){#cooked-welcome-screen .cooked-pro-features{width:90%}#cooked-welcome-screen .cooked-welcome-panel-column{padding-right:0}#cooked-welcome-screen .cooked-welcome-panel-column.cooked-welcome-panel-last{width:100%;padding-top:20px}#cooked-welcome-screen .about-wrap{margin-top:0}#cooked-welcome-screen .cooked-welcome-panel .cooked-welcome-panel-column li{display:block}}@media screen and (max-width:782px){#cooked-welcome-screen .cooked-pro-features{width:100%}#cooked-welcome-screen{padding:15px 40px 0 30px}#cooked-welcome-screen .cooked-badge{display:none}#cooked-welcome-screen .about-text,#cooked-welcome-screen .about-wrap h1{margin-right:0}#cooked-welcome-screen .cooked-welcome-panel-column h3 a{display:block;position:relative}}@media screen and (max-width:500px){#cooked-welcome-screen #cooked-welcome-panel img.cooked-welcome-banner{display:none}#cooked-welcome-screen .about-wrap h1{font-size:1.8rem}#cooked-welcome-screen .about-text{font-size:15px}}#cooked_recipe_settings #cooked-nutrition-label .cooked-nut-label,#cooked_recipe_settings .recipe-setting-block h3.cooked-settings-title{color:#0173aa}#cooked_recipe_settings .recipe-setting-block.cooked-danger h3.cooked-settings-title{color:#d44d1f}#cooked_recipe_settings .cooked-alert-block h3.cooked-settings-title{color:#c02a2a}#cooked-recipe-tabs{background:#fff}#cooked-recipe-tabs li{background:#454b52;color:#fff;color:rgba(255,255,255,.75);border-right:1px solid rgba(0,0,0,.15)}#cooked-recipe-tabs li:hover{background:#535a62;color:#fff;border-right:1px solid rgba(0,0,0,.15)}#cooked-recipe-tabs li.active{background:#fff;color:#333;border-right:1px solid #fff}#cooked-settings-tabs{background:#454b52}#cooked-settings-tabs a{color:#fff;text-decoration:none}#cooked-settings-tabs li{background:#454b52;color:#fff;color:rgba(255,255,255,.75)}#cooked-settings-tabs li:hover{background:#535a62;color:#fff}#cooked-settings-tabs li.active{background:#fff}#cooked-settings-tabs li.active a{color:#000}#cooked-directions-builder .cooked-direction-block>.cooked-direction-image .cooked-direction-img-placeholder,#cooked-migration-progress.cooked-progress .cooked-progress-bar,#cooked-related-progress.cooked-progress .cooked-progress-bar,#cooked_recipe_settings .cooked-select-wrapper:before,#cooked_recipe_settings .cooked-tooltip-icon,#cooked_recipe_settings select{-webkit-transition:all .15s ease-out;-moz-transition:all .15s ease-out;transition:all .15s ease-out}#cooked-recipe-image-gallery .cooked-recipe-gallery-item{-webkit-transition:transform .15s ease-out;-moz-transition:all .15s ease-out;transition:transform .15s ease-out}#cooked-recipe-tabs li.cooked-loading{-webkit-transition:opacity .15s ease-out;-moz-transition:all .15s ease-out;transition:opacity .15s ease-out}@-webkit-keyframes cooked-wiggle{0%{-webkit-transform:scale(1)}50%{-webkit-transform:scale(1.03)}100%{-webkit-transform:scale(1)}}@-moz-keyframes cooked-wiggle{0%{-moz-transform:scale(1)}50%{-moz-transform:scale(1.03)}100%{-moz-transform:scale(1)}}@-o-keyframes cooked-wiggle{0%{-o-transform:scale(1)}50%{-o-transform:scale(1.03)}100%{-o-transform:scale(1)}}@keyframes cooked-wiggle{0%{transform:scale(1)}50%{transform:scale(1.03)}100%{transform:scale(1)}}@media screen and (max-width:1150px){#cooked-recipe-tabs li{font-size:.8rem;padding:0 1.2rem 0 .7rem}#cooked-recipe-tabs li .cooked-icon{display:none}}@media screen and (max-width:768px){#cooked_recipe_settings .cooked-clearfix:has(>.cooked-setting-column-14){display:grid;grid-template-columns:1fr 1fr;gap:10px}#cooked_recipe_settings .cooked-setting-column-14{width:100%;float:none;padding-right:0}#cooked_recipe_settings .recipe-setting-block h3.cooked-settings-title{width:60%}}@media screen and (max-width:600px){#cooked-recipe-tabs{top:0}#cooked_recipe_settings .recipe-setting-block h3.cooked-settings-title{display:flex;flex-wrap:wrap;align-items:center;row-gap:10px}#cooked_recipe_settings .recipe-setting-block:has(#cooked-nutrition-label) .cooked-setting-column-12{width:100%;float:none;padding-right:0}#cooked_recipe_settings .recipe-setting-block:has(#cooked-nutrition-label) p.cooked-measurement-inputs{display:flex;gap:10px}#cooked_recipe_settings .recipe-setting-block:has(#cooked-nutrition-label) p.cooked-measurement-inputs .cooked-measurement-column{width:50%;margin-right:0;flex:1}#cooked-ingredients-builder .cooked-ingredient-block{display:grid;grid-template-columns:1fr 1fr;column-gap:8px;row-gap:4px;padding-left:30px;padding-right:35px}#cooked-ingredients-builder .cooked-ingredient-block>div{display:block;float:none;padding-right:0}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-amount{width:auto;grid-column:1}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-measurement{width:auto;grid-column:2}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-ingredient-name{width:auto;grid-column:1/-1;padding-right:40px}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields{width:auto;float:none;clear:none;grid-column:1/-1}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-heading-name{grid-column:1/-1}#cooked_recipe_settings .cooked-ingredient-headers{display:grid;grid-template-columns:1fr 1fr;padding-left:30px;padding-right:35px}#cooked_recipe_settings .cooked-ingredient-headers span{display:block;float:none}#cooked_recipe_settings .cooked-layout-save-default{margin:0}#cooked_recipe_settings .cooked-ingredient-headers span.cooked-ingredient-header-amount{width:auto}#cooked_recipe_settings .cooked-ingredient-headers span.cooked-ingredient-header-measurement{width:auto}#cooked_recipe_settings .cooked-ingredient-headers span.cooked-ingredient-header-item{width:auto;grid-column:1/-1;padding-top:2px}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-substitution-fields{display:grid;grid-template-columns:1fr 1fr;column-gap:8px;row-gap:4px}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-substitution-fields>div{display:block;float:none;padding-right:0}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-substitution-fields .cooked-ingredient-amount,#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-substitution-fields .cooked-ingredient-measurement{width:100%;display:block}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-substitution-fields .cooked-ingredient-name{width:auto;grid-column:1/-1;padding-top:0}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded>.cooked-substitution-fields .cooked-sub-label{grid-column:1/-1}#cooked-ingredients-builder .cooked-ingredient-block{position:relative}#cooked-ingredients-builder .cooked-ingredient-block .cooked-show-substitution{top:60px;right:42px}#cooked-ingredients-builder .cooked-ingredient-block.cooked-expanded .cooked-show-substitution,#cooked-ingredients-builder .cooked-ingredient-block.cooked-has-substitution .cooked-show-substitution,#cooked-ingredients-builder .cooked-ingredient-block:hover .cooked-show-substitution{right:42px}#cooked-ingredients-builder .cooked-ingredient-block .cooked-delete-ingredient{right:11px}}@media screen and (max-width:500px){#cooked_recipe_settings .cooked-clearfix:has(>.cooked-setting-column-14){grid-template-columns:1fr}}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields{width:100%;float:left;clear:both;margin-top:10px;padding-top:10px;padding-right:0;padding-left:0;margin-left:0;box-sizing:border-box;padding-bottom:5px;position:relative}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields .cooked-ingredient-amount{width:15%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields .cooked-ingredient-measurement{width:20%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields .cooked-ingredient-name{width:65%}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields .cooked-sub-label{color:#7c7c7c;font-size:14px;font-weight:300}#cooked-ingredients-builder .cooked-ingredient-block>.cooked-substitution-fields>div{display:inline-block;float:left;box-sizing:border-box;padding-right:10px}.cooked-bulk-add-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);z-index:100100;display:flex;align-items:center;justify-content:center}.cooked-bulk-add-modal{background:#fff;border-radius:6px;width:600px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 5px 30px rgba(0,0,0,.3)}.cooked-bulk-add-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #ddd}.cooked-bulk-add-header h2{margin:0;font-size:18px;line-height:1.3}.cooked-bulk-add-close{font-size:24px;text-decoration:none;color:#666;line-height:1;padding:0 4px}.cooked-bulk-add-close:hover{color:#d63638}.cooked-bulk-add-body{padding:20px;overflow-y:auto;flex:1}.cooked-bulk-add-help{margin-top:0;color:#666;font-size:13px}#cooked-bulk-add-textarea{width:100%;min-height:160px;font-size:14px;padding:10px;box-sizing:border-box;resize:vertical}.cooked-bulk-add-preview{margin-top:16px}.cooked-bulk-add-preview-label{margin:0 0 8px;font-size:13px}.cooked-bulk-add-preview-notice-ingredients{display:none;margin:10px 0 0;font-size:12px;line-height:1.45;color:#b45309;font-weight:700;gap:6px;align-items:flex-start}#cooked-bulk-add-preview[data-bulk-type=ingredients] .cooked-bulk-add-preview-notice-ingredients{display:flex}.cooked-bulk-add-preview-notice-mark{flex-shrink:0;font-weight:700;line-height:1.45;color:#b45309}.cooked-bulk-add-preview-notice-text{flex:1;min-width:0;font-weight:700;color:#b45309}.cooked-bulk-add-preview-list{max-height:200px;overflow-y:auto;border:1px solid #ddd;border-radius:4px;padding:4px}.cooked-bulk-add-preview-row{display:flex;align-items:center;gap:8px;padding:4px 6px;border-bottom:1px solid #f0f0f0}.cooked-bulk-add-preview-row:last-child{border-bottom:0}.cooked-bulk-add-heading-toggle{display:flex;align-items:center;gap:4px;white-space:nowrap;font-size:12px;color:#666;cursor:pointer;flex-shrink:0}.cooked-bulk-add-heading-toggle input[type=checkbox]{margin:0}.cooked-bulk-add-preview-text{flex:1;border:1px solid #ddd;border-radius:3px;padding:4px 8px;font-size:13px}.cooked-bulk-add-preview-row:not(.cooked-bulk-add-preview-row-ingredient).cooked-bulk-add-is-heading .cooked-bulk-add-preview-text{font-weight:700}.cooked-bulk-add-preview-row-ingredient .cooked-bulk-add-heading-line-wrap{display:none;flex:1;align-items:center;gap:8px;min-width:0}.cooked-bulk-add-preview-row-ingredient.cooked-bulk-add-is-heading .cooked-bulk-add-heading-line-wrap{display:flex}.cooked-bulk-add-preview-row-ingredient.cooked-bulk-add-is-heading .cooked-bulk-add-parsed-amount,.cooked-bulk-add-preview-row-ingredient.cooked-bulk-add-is-heading .cooked-bulk-add-parsed-name,.cooked-bulk-add-preview-row-ingredient.cooked-bulk-add-is-heading .cooked-bulk-add-parsed-unit{display:none}.cooked-bulk-add-heading-line-label{flex-shrink:0;font-size:12px;font-weight:600;color:#666}.cooked-bulk-add-preview-row-ingredient .cooked-bulk-add-heading-line-wrap .cooked-bulk-add-preview-text{flex:1;min-width:0;border:1px solid #ddd;border-radius:3px;padding:4px 8px;font-size:13px;font-weight:600}.cooked-bulk-add-preview-header{display:flex;align-items:center;gap:8px;padding:4px 6px 6px;border-bottom:1px solid #ddd;font-size:11px;font-weight:600;color:#999;text-transform:uppercase;letter-spacing:.5px}.cooked-bulk-add-col-heading{flex-shrink:0;width:108px}.cooked-bulk-add-col-amount{width:72px;flex-shrink:0}.cooked-bulk-add-col-unit{width:108px;flex-shrink:0}.cooked-bulk-add-col-name{flex:1}.cooked-bulk-add-parsed-amount{width:72px;flex-shrink:0;border:1px solid #ddd;border-radius:3px;padding:4px 6px;font-size:13px;text-align:center}.cooked-bulk-add-parsed-unit{width:108px;flex-shrink:0;border:1px solid #ddd;border-radius:3px;padding:4px 6px;font-size:13px}.cooked-bulk-add-parsed-name{flex:1;border:1px solid #ddd;border-radius:3px;padding:4px 6px;font-size:13px}.cooked-bulk-add-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid #ddd}.cooked-bulk-add-footer .button,.cooked-bulk-add-footer .button.button-primary{float:none;margin:0;vertical-align:middle}.cooked-bulk-add-spinner{float:none!important;margin:0!important}#cooked_allergens .cooked-allergens-checkboxes{display:flex;flex-direction:column;gap:8px}#cooked_allergens .cooked-allergen-checkbox{display:flex;align-items:center;gap:8px;cursor:pointer}#cooked_allergens .cooked-allergen-checkbox input[type=checkbox]{margin:0}#cooked_allergens .cooked-allergen{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}#cooked_allergens .cooked-allergen .cooked-icon{font-size:1.5rem;line-height:1}#cooked_allergens .cooked-allergen,#cooked_allergens .cooked-allergen .cooked-icon{color:rgba(0,0,0,.4)}#cooked_allergens .cooked-allergen-label{font-size:13px;color:#333}
\ No newline at end of file
diff --git a/assets/admin/js/cooked-functions.js b/assets/admin/js/cooked-functions.js
index c3351f9..b1e1558 100644
--- a/assets/admin/js/cooked-functions.js
+++ b/assets/admin/js/cooked-functions.js
@@ -364,7 +364,6 @@ var cookedSortableTouchHandler = function(event) {
$_CookedRecipeTab.on('click', function(e) {
e.preventDefault();
$_CookedRecipeTab.removeClass('active');
- window.scrollTo(0, 0);
var thisTab = $(this),
thisTabID = thisTab.attr('id').split('cooked-recipe-tab-')[1];
@@ -1304,7 +1303,7 @@ function cooked_init_bulk_add($) {
for (var i = 0; i < lines.length; i++) {
var $row = $('
');
var $cb = $('' + jsVars.i18n_bulk_add_section_heading + ' ');
- var $text = $(' ');
+ var $text = $(' ').val(lines[i]);
$row.append($cb).append($text);
$previewList.append($row);
}
@@ -1342,9 +1341,9 @@ function cooked_init_bulk_add($) {
var $headingLbl = $(' ').text(jsVars.i18n_bulk_add_heading_line_label);
var $lineInput = $(' ').val(lines[i]);
$headingWrap.append($headingLbl).append($lineInput);
- var $amt = $(' ');
- var $unit = $(' ');
- var $name = $(' ');
+ var $amt = $(' ').val(p.amount);
+ var $unit = $(' ').val(p.measurement);
+ var $name = $(' ').val(p.name);
$row.append($cb).append($headingWrap).append($amt).append($unit).append($name);
$previewList.append($row);
}
diff --git a/assets/admin/js/cooked-functions.min.js b/assets/admin/js/cooked-functions.min.js
index c0791ab..4c73128 100644
--- a/assets/admin/js/cooked-functions.min.js
+++ b/assets/admin/js/cooked-functions.min.js
@@ -1 +1 @@
-var $_CookedConditionalTimeout=!1,cookedSortableTouchHandler=function(e){var t={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"},o=e.target.closest(".cooked-icon-drag");o&&o.closest(".cooked-sortable")&&e.changedTouches&&e.changedTouches.length&&t[e.type]&&(o=e.changedTouches[0],e.preventDefault(),t=new MouseEvent(t[e.type],{bubbles:!0,cancelable:!0,view:window,detail:1,screenX:o.screenX,screenY:o.screenY,clientX:o.clientX,clientY:o.clientY,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null}),o.target.dispatchEvent(t))},cooked_recipe_update_counter=((g=>{g(document).ready(function(){var c,o,t,e,i,n,d,a,r,s,l,u=g(".cooked-color-field"),k=g("#cooked_recipe_settings").find("select"),p=g("#cooked-recipe-tabs"),_=(g("#cooked-settings-wrap"),g("#cooked_recipe_settings")),m=_.find("input#submit");$_CookedTooltips=g(".cooked-tooltip"),$_CookedConditionals=g(".cooked-conditional-hidden"),$_CookedSortable=g(".cooked-sortable"),$_CookedRecipeSaveDefault=g(".cooked-layout-save-default"),$_CookedShortcodeField=g(".cooked-shortcode-field"),$_CookedIngredientBuilder=g("#cooked-ingredients-builder"),$_CookedAutoNutritionButton=g(".cooked-auto-nutrition-button"),$_CookedDirectionBuilder=g("#cooked-directions-builder"),$_CookedRecipeGallery=g("#cooked-recipe-image-gallery"),$_CookedNutritionFactsTab=g("#cooked-recipe-tab-content-nutrition"),$_CookedSettingsPanel=g("#cooked-settings-panel"),$_CookedSettingsTabs=g("#cooked-settings-tabs"),u.length&&u.wpColorPicker(),$_CookedSortable.length&&(document.addEventListener("touchstart",cookedSortableTouchHandler,{passive:!1}),document.addEventListener("touchmove",cookedSortableTouchHandler,{passive:!1}),document.addEventListener("touchend",cookedSortableTouchHandler,{passive:!1}),$_CookedSortable.find(".cooked-icon-drag").length?$_CookedSortable.sortable({handle:".cooked-icon-drag",stop:function(e,t){t.item.closest("#cooked-directions-builder").length&&cooked_reset_direction_builder();var t=t.item.find("textarea"),o=!(!cooked_admin_functions_js_vars.wp_editor_roles_allowed||"undefined"==typeof wp||!wp.editor||"function"!=typeof wp.editor.remove||"function"!=typeof wp.editor.initialize);t.length&&o&&(o=t.attr("name"),t=t.attr("id"),wp.editor.remove(t),wp.editor.initialize(t,{tinymce:{wpautop:!1,toolbar1:"bold,italic,underline,blockquote,strikethrough,bullist,numlist,alignleft,aligncenter,alignright,undo,redo,wp_link_advanced,unlink,fullscreen",toolbar2:"",toolbar3:"",toolbar4:"",height:100,textarea_name:o,plugins:"link lists fullscreen wordpress wplink",setup:function(e){}},quicktags:!0,mediaButtons:!1}))}}):$_CookedSortable.sortable({stop:function(e,t){t.item.closest("#cooked-directions-builder").length&&cooked_reset_direction_builder()}})),$_CookedRecipeSaveDefault.length&&($_CookedRecipeSaveDefault.tooltipster({theme:["tooltipster-light","tooltipster-sideTip-cooked"],trigger:"click",animation:"grow",delay:0,speed:200,maxWidth:275,contentAsHTML:!0,interactive:!0,functionReady:function(r,e){g(".cooked-save-default-all").on("click",function(e){e.preventDefault();var t,o=g(this),e=o.data("nonce"),i=o.data("bulk-nonce"),n=o.parent(),d=confirm(cooked_admin_functions_js_vars.i18n_confirm_save_default_all),a=g("#_recipe_settings_content"),c=tinymce.get("_recipe_settings_content");t=null===c?a.val():c.getContent(),d&&!o.hasClass("disabled")&&(n.find(".button, .button-primary").addClass("disabled"),g.post(cooked_admin_functions_js_vars.ajax_url,{action:"cooked_save_default",default_content:t,nonce:e},function(){g.post(cooked_admin_functions_js_vars.ajax_url,{action:"cooked_get_recipe_count",nonce:i},function(e){o.removeClass("button-primary").addClass("button"),e&&e.success&&0 ')}),$_CookedTooltips.length&&$_CookedTooltips.tooltipster({theme:["tooltipster-light","tooltipster-sideTip-cooked"],animation:"grow",delay:100,speed:200,maxWidth:275,contentAsHTML:!0,interactive:!0}),$_CookedShortcodeField.length&&$_CookedShortcodeField.on("click",function(e){g(this).select()}),$_CookedConditionals.length&&(c=[],$_CookedConditionals.each(function(){var e=g(this),t=g(this).data("condition"),o=g(this).data("value"),i=g("#"+t),o=!!o&&o.split(" "),n=e.is("li")||e.is("span")?"inline-block":"block";i.is(":checkbox")&&i.is(":checked")||i.is(":radio")&&i.is(":checked")||!(i.is(":checkbox")&&!i.is(":checked")||i.is(":radio")&&!i.is(":checked"))&&(!i.is(":checkbox")&&!o&&i.val()||!i.is(":checkbox")&&o&&-1 a").attr("href")).split("#"))[1],g(".cooked-settings-tab-content").hide(),g("#cooked-settings-tab-content-"+n).show(),k.on("click",function(e){g(".tab-content").hide();var t=g(this).find("a"),t=($_CookedSettingsTabs.find("li").removeClass("active"),g(this).addClass("active"),t.attr("href"));"migration"==(t=(t=t.split("#"))[1])?m.hide():m.show(),g(".cooked-settings-tab-content").hide(),g("#cooked-settings-tab-content-"+t).show(),g("#cooked-settings-panel").hasClass("stuck")?window.scrollTo(0,130):window.scrollTo(0,0)}),$_CookedSettingsPanel.on("click",".cooked-settings-image-remove",function(e){e.preventDefault();e=g(this).closest(".cooked-settings-image-field");e.removeClass("cooked-has-image"),e.find(".cooked-settings-image-preview-img").attr("src","").removeAttr("srcset").removeAttr("sizes"),e.find(".cooked-settings-image-input").val("0"),e.find(".cooked-settings-image-button").val(cooked_admin_functions_js_vars.i18n_image_title)}),$_CookedSettingsPanel.on("click",".cooked-settings-image-button",function(e){e.preventDefault();var o=g(this),i=o.closest(".cooked-settings-image-field");d&&d.off("select"),(d=wp.media({title:cooked_admin_functions_js_vars.i18n_image_title,button:{text:cooked_admin_functions_js_vars.i18n_image_button},library:{type:"image"}})).on("select",function(){var e=d.state().get("selection").first().toJSON(),t=(e.sizes&&e.sizes.thumbnail?e.sizes.thumbnail:e).url;i.addClass("cooked-has-image"),i.find(".cooked-settings-image-preview-img").attr("src",t).removeAttr("srcset").removeAttr("sizes"),i.find(".cooked-settings-image-input").val(e.id),o.val(cooked_admin_functions_js_vars.i18n_image_change)}),d.open()})),$_CookedIngredientBuilder.length&&(cooked_reset_ingredient_builder(),$_CookedIngredientBuilder.on("keydown",'input[data-ingredient-part="name"]',function(e){9!==e.keyCode&&13!==e.keyCode||g(this).parents(".cooked-ingredient-block").is(":last-child")&&(e.preventDefault(),g("#cooked-recipe-tab-content-ingredients").find(".cooked-add-ingredient-button").trigger("click"),$_CookedIngredientBuilder.find('.cooked-ingredient-block:last-child input[data-ingredient-part="amount"]').focus())}),$_CookedIngredientBuilder.parent().on("click",".cooked-show-substitution",function(e){e.preventDefault();e=g(this).parent();e.hasClass("cooked-expanded")?e.removeClass("cooked-expanded"):(e.addClass("cooked-expanded"),e.find('input[data-ingredient-part="sub_amount"]').focus())}),$_CookedIngredientBuilder.on("keyup change",'input[data-ingredient-part="sub_amount"], input[data-ingredient-part="sub_name"], select[data-ingredient-part="sub_measurement"]',function(e){var t=g(this).parents(".recipe-setting-block"),o=t.find('input[data-ingredient-part="sub_name"]').val();o&&o.trim()?t.addClass("cooked-has-substitution"):t.removeClass("cooked-has-substitution")}),$_CookedAutoNutritionButton.length&&$_CookedIngredientBuilder.on("change",'input[data-ingredient-part="name"]',function(e){var t=!1;$_CookedIngredientBuilder.find('input[data-ingredient-part="name"]').each(function(){if(""!=g(this).val())return!(t=!0)}),t?$_CookedAutoNutritionButton.prop("disabled",!1):$_CookedAutoNutritionButton.prop("disabled",!0)}),$_CookedIngredientBuilder.on("keyup",'input[data-ingredient-part="url"]',function(e){var t=g(this).val(),o=g(this).parents(".recipe-setting-block");t?o.addClass("cooked-has-url"):o.removeClass("cooked-has-url")}),$_CookedIngredientBuilder.parent().on("click",".cooked-add-ingredient-button",function(e){e.preventDefault();e=$_CookedIngredientBuilder.parent().find(".cooked-ingredient-template").clone().removeClass("cooked-template cooked-ingredient-template").addClass("cooked-ingredient-block");$_CookedIngredientBuilder.append(e),cooked_reset_ingredient_builder()}),$_CookedIngredientBuilder.parent().on("click",".cooked-add-heading-button",function(e){e.preventDefault();e=$_CookedIngredientBuilder.parent().find(".cooked-heading-template").clone().removeClass("cooked-template cooked-heading-template").addClass("cooked-ingredient-block cooked-ingredient-heading");$_CookedIngredientBuilder.append(e),cooked_reset_ingredient_builder()}),$_CookedIngredientBuilder.parent().on("click",".cooked-delete-ingredient",function(e){e.preventDefault(),g(this).parent().remove(),cooked_reset_ingredient_builder()})),$_CookedDirectionBuilder.length&&(cooked_reset_direction_builder(),$_CookedDirectionBuilder.parent().on("click",".cooked-show-heading-element",function(e){e.preventDefault();e=g(this).parent();e.hasClass("cooked-expanded")?e.removeClass("cooked-expanded"):(e.addClass("cooked-expanded"),e.find('input[data-direction-part="section_heading_element"]').focus())}),$_CookedDirectionBuilder.parent().on("click",".cooked-add-direction-button",function(e){e.preventDefault();e=$_CookedDirectionBuilder.parent().find(".cooked-direction-template").clone().removeClass("cooked-template cooked-direction-template").addClass("cooked-direction-block");$_CookedDirectionBuilder.append(e),cooked_reset_direction_builder()}),$_CookedDirectionBuilder.parent().on("click",".cooked-add-heading-button",function(e){e.preventDefault();e=$_CookedDirectionBuilder.parent().find(".cooked-heading-template").clone().removeClass("cooked-template cooked-heading-template").addClass("cooked-direction-block cooked-direction-heading");$_CookedDirectionBuilder.append(e),cooked_reset_direction_builder()}),$_CookedDirectionBuilder.parent().on("click",".cooked-delete-direction",function(e){e.preventDefault();var t,e=g(this).parent();cooked_admin_functions_js_vars.wp_editor_roles_allowed&&"undefined"!=typeof wp&&wp.editor&&"function"==typeof wp.editor.remove&&(t=e.find('textarea[data-direction-part="content"]').attr("id"))&&wp.editor.remove(t),e.remove(),cooked_reset_direction_builder()}),$_CookedDirectionBuilder.parent().on("click",".remove-image-button",function(e){e.preventDefault();e=g(this).parent();e.removeClass("cooked-has-image"),e.find("img").attr("src","").removeAttr("srcset").removeAttr("sizes"),e.find('input[data-direction-part="image"]').val(""),cooked_reset_direction_builder()}),$_CookedDirectionBuilder.parent().on("click",".remove-video-button",function(e){e.preventDefault();e=g(this).parent();e.removeClass("cooked-has-video"),e.find(".cooked-direction-video-preview").attr("src",""),e.find('input[data-direction-part="video"]').val(""),e.find(".direction-video-button").prop("value",cooked_admin_functions_js_vars.i18n_video_title),cooked_reset_direction_builder()}),g("body").on("click",".cooked-direction-img-placeholder, .cooked-direction-img",function(e){e.preventDefault(),g(this).parent().find(".direction-image-button").trigger("click")}),g("body").on("click",".direction-image-button",function(e){var t=g(this);s=t.data("id"),e.preventDefault(),a||(a=wp.media.frames.direction_image_frame=wp.media({title:cooked_admin_functions_js_vars.i18n_image_title,button:{text:cooked_admin_functions_js_vars.i18n_image_button},library:{type:"image"}})).on("select",function(){var e=a.state().get("selection").first().toJSON();g("#direction-"+s+"-image-src").attr("src",e.sizes.thumbnail.url).removeAttr("srcset").removeAttr("sizes").parent().addClass("cooked-has-image"),g('input[name="_recipe_settings[directions]['+s+'][image]"]').val(e.id),g('.direction-image-button[data-id="'+s+'"]').prop("value",cooked_admin_functions_js_vars.i18n_image_change)}),a.open()}),g("body").on("click",".cooked-direction-video-placeholder, .cooked-direction-video-preview",function(e){e.preventDefault(),g(this).parent().find(".direction-video-button").trigger("click")}),g("body").on("click",".direction-video-button",function(e){var t=g(this);s=t.data("id"),e.preventDefault(),r||(r=wp.media.frames.direction_video_frame=wp.media({title:cooked_admin_functions_js_vars.i18n_video_title,button:{text:cooked_admin_functions_js_vars.i18n_video_button},library:{type:"video"}})).on("select",function(){var e=r.state().get("selection").first().toJSON(),t=g('.direction-video-button[data-id="'+s+'"]').closest(".cooked-direction-video");t.find(".cooked-direction-video-preview").attr("src",e.url),t.find('input[data-direction-part="video"]').val(e.id),t.addClass("cooked-has-video"),g('.direction-video-button[data-id="'+s+'"]').prop("value",cooked_admin_functions_js_vars.i18n_video_change)}),r.open()})),cooked_init_bulk_add(g),$_CookedRecipeGallery.length&&(cooked_init_gallery_sorting(),g("body").on("click",".cooked-gallery-add-button",function(e){g(this);e.preventDefault(),l||(l=wp.media.frames.gallery_images_frame=wp.media({title:cooked_admin_functions_js_vars.i18n_gallery_image_title,button:{text:cooked_admin_functions_js_vars.i18n_gallery_image_title},library:{type:"image"},multiple:!0})).on("select",function(){var e,t,o,i=l.state().get("selection").toJSON();for(e in i)i.hasOwnProperty(e)&&(o=(t=i[e]).sizes.thumbnail.url,g("#cooked-recipe-image-gallery").append(''+t.title+' '));cooked_init_gallery_sorting()}),l.open()}),g("body").on("click",".cooked-recipe-gallery-item img",function(e){e.preventDefault(),g(this).parent().find(".cooked-gallery-edit-button").trigger("click")}),g("body").on("click",".cooked-gallery-edit-button",function(e){var n=g(this),t=n.data("attachment-id"),d=(e.preventDefault(),wp.media.frames.gallery_images_frame=wp.media({title:cooked_admin_functions_js_vars.i18n_edit_image_title,button:{text:cooked_admin_functions_js_vars.i18n_edit_image_button},library:{type:"image"},multiple:!1}));d.on("open",function(){var e=d.state().get("selection");(attachment=wp.media.attachment(t)).fetch(),e.add(attachment?[attachment]:[])}),d.open(),d.on("select",function(){var e,t,o,i=d.state().get("selection").toJSON();for(e in i)i.hasOwnProperty(e)&&(o=(t=i[e]).sizes.thumbnail.url,n.parent().replaceWith(''+t.title+' '));cooked_init_gallery_sorting()})}),$_CookedRecipeGallery.on("click",".remove-image-button",function(e){var t=g(this);s=t.data("id"),e.preventDefault(),s?(g("#direction-"+s+"-image-src").parent().removeClass("cooked-has-image").prop("src",!1),g('input[name="_recipe_settings[directions]['+s+'][image]"]').val(""),g('.direction-image-button[data-id="'+s+'"]').prop("value",cooked_admin_functions_js_vars.i18n_image_title)):t.parent().remove()})),$_CookedNutritionFactsTab.length&&(init_nutrition_facts($_CookedNutritionFactsTab),$_CookedNutritionFactsTab.on("keyup","input",function(e){init_nutrition_facts($_CookedNutritionFactsTab)})),g("#cooked-prep-time").length&&g("#cooked-prep-time,#cooked-cook-time").on("change",function(){cooked_updateTotalTimeValue(parseInt(g("#cooked-prep-time").val()),parseInt(g("#cooked-cook-time").val()))})})})(jQuery),0),cooked_bulk_per_page=20;function cooked_set_default_template(o,i,n,d,a){var c,r,s;i<=0||(c=jQuery("#cooked-template-progress"),r=c.find(".cooked-progress-bar"),s=jQuery("#cooked-template-progress-text"),c.hasClass("cooked-active")||(c.addClass("cooked-active"),s.addClass("cooked-active"),r.css({width:"0%"}),a.reposition()),jQuery.post(cooked_admin_functions_js_vars.ajax_url,{action:"cooked_save_default_bulk",page:o,default_content:n,nonce:d},function(e){var t;e&&e.success&&(cooked_recipe_update_counter=Math.min((o+1)*cooked_bulk_per_page,i),t=Math.round(cooked_recipe_update_counter/i*100),r.css({width:t+"%"}),s.text(cooked_recipe_update_counter+" / "+i),e.data.has_more?cooked_set_default_template(o+1,i,n,d,a):(jQuery(".cooked-save-default-all").text(cooked_admin_functions_js_vars.i18n_applied),r.css({width:"100%"}),s.text(i+" / "+i),c.removeClass("cooked-active"),s.removeClass("cooked-active").text(""),a.reposition()))},"json"))}function cooked_updateTotalTimeValue(e,t){jQuery("#cooked-total-time").val(e+t)}function cooked_init_gallery_sorting(){jQuery("#cooked-recipe-image-gallery").sortable()}function init_nutrition_facts(e){e.find("input").each(function(){var e,t=jQuery(this),o=t.attr("id"),t=t.val(),i=jQuery('.cooked-nut-percent[data-labeltype="'+o+'"]').length;jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').length&&(t?(jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').text(t),jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').parents("li").eq(0).show(),jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').parents("p").eq(0).show(),i&&(e=(i=jQuery('.cooked-nut-percent[data-labeltype="'+o+'"]')).data("pdv"))&&(thisPercent=Math.ceil(t/e*100),i.text(thisPercent))):(jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').text("___"),jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').parents("li").eq(0).hide(),jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').parents("p").eq(0).hide()))})}function cooked_reset_ingredient_builder(){var e=jQuery(".cooked-ingredient-block"),t=0,i=0,o=!1;0").text(e).html()}function h(e,t){if(u.empty(),e.length){l.attr("data-bulk-type","ingredients"),l.show(),k.removeAttr("disabled"),u.find(".cooked-bulk-add-preview-header").length||u.prepend('");for(var o=0;o'),d=s(''+_.i18n_bulk_add_section_heading+" "),a=s('
'),c=s(' ').text(_.i18n_bulk_add_heading_line_label),r=s(' ').val(e[o]),c=(a.append(c).append(r),s(' ')),r=s(' '),i=s(' ');n.append(d).append(a).append(c).append(r).append(i),u.append(n)}}else l.attr("data-bulk-type",""),l.hide(),k.attr("disabled","disabled")}i.length&&(t=s("#cooked-bulk-add-textarea"),l=s("#cooked-bulk-add-preview"),u=s("#cooked-bulk-add-preview-list"),o=s("#cooked-bulk-add-title"),r=s("#cooked-bulk-add-type"),k=i.find(".cooked-bulk-add-submit"),p=i.find(".cooked-bulk-add-spinner"),_=cooked_admin_functions_js_vars,m=null,g="",t.on("input",function(){var e=r.val(),o=(e=>{for(var t=e.split(/[\r\n]+/),o=[],i=0;i'),a=s(''+_.i18n_bulk_add_section_heading+" "),c=s(' ');d.append(a).append(c),u.append(d)}}else l.attr("data-bulk-type",""),l.hide(),k.attr("disabled","disabled")}else t!==g&&(g=t,h(o,null),m&&clearTimeout(m),m=setTimeout(function(){var t;(t=o).length?(p.show().css("visibility","visible"),s.post(_.ajax_url,{action:"cooked_parse_bulk_ingredients",nonce:_.cooked_bulk_add_nonce,lines:t},function(e){p.hide();e=e.success&&e.data&&e.data.parsed?e.data.parsed:null;h(t,e)}).fail(function(){p.hide(),h(t,null)})):h([],null)},400))}),s(document).on("click",".cooked-bulk-add-button",function(e){e.preventDefault();var e=s(this).data("type");e=e,r.val(e),t.val(""),u.empty(),l.attr("data-bulk-type",""),l.hide(),k.attr("disabled","disabled"),p.hide(),g="","ingredients"===e?(o.text(_.i18n_bulk_add_ingredients),t.attr("placeholder",_.i18n_bulk_add_placeholder_ingredients),k.text(_.i18n_bulk_add_submit_ingredients)):(o.text(_.i18n_bulk_add_directions),t.attr("placeholder",_.i18n_bulk_add_placeholder_directions),k.text(_.i18n_bulk_add_submit_directions)),i.show(),t.focus()}),i.on("click",".cooked-bulk-add-close, .cooked-bulk-add-cancel",function(e){e.preventDefault(),n()}),i.on("click",function(e){s(e.target).is(i)&&n()}),s(document).on("keydown",function(e){"Escape"===e.key&&i.is(":visible")&&n()}),u.on("change",'input[type="checkbox"]',function(){var e=s(this).closest(".cooked-bulk-add-preview-row"),t=s(this).is(":checked");e.toggleClass("cooked-bulk-add-is-heading",t)}),k.on("click",function(e){var i;e.preventDefault(),s(this).attr("disabled")||(e=r.val(),i=[],"ingredients"===e?u.find(".cooked-bulk-add-preview-row").each(function(){var e=s(this),t=e.find('input[type="checkbox"]').is(":checked"),o=e.find(".cooked-bulk-add-preview-text").val().trim();o&&i.push(t?{text:o,heading:!0}:{heading:!1,amount:e.find(".cooked-bulk-add-parsed-amount").val().trim(),measurement:e.find(".cooked-bulk-add-parsed-unit").val().trim(),name:e.find(".cooked-bulk-add-parsed-name").val().trim()||o})}):u.find(".cooked-bulk-add-preview-row").each(function(){var e=s(this),t=e.find(".cooked-bulk-add-preview-text").val().trim(),e=e.find('input[type="checkbox"]').is(":checked");t&&i.push({text:t,heading:e})}),i.length&&(("directions"===e?cooked_bulk_add_directions:cooked_bulk_add_ingredients_parsed)(i),n()))}))}function cooked_bulk_add_directions(e){for(var t=jQuery("#cooked-directions-builder"),o=t.parent(),i=0;i{g(document).ready(function(){var c,o,t,e,i,n,d,a,r,s,l,u=g(".cooked-color-field"),k=g("#cooked_recipe_settings").find("select"),p=g("#cooked-recipe-tabs"),_=(g("#cooked-settings-wrap"),g("#cooked_recipe_settings")),m=_.find("input#submit");$_CookedTooltips=g(".cooked-tooltip"),$_CookedConditionals=g(".cooked-conditional-hidden"),$_CookedSortable=g(".cooked-sortable"),$_CookedRecipeSaveDefault=g(".cooked-layout-save-default"),$_CookedShortcodeField=g(".cooked-shortcode-field"),$_CookedIngredientBuilder=g("#cooked-ingredients-builder"),$_CookedAutoNutritionButton=g(".cooked-auto-nutrition-button"),$_CookedDirectionBuilder=g("#cooked-directions-builder"),$_CookedRecipeGallery=g("#cooked-recipe-image-gallery"),$_CookedNutritionFactsTab=g("#cooked-recipe-tab-content-nutrition"),$_CookedSettingsPanel=g("#cooked-settings-panel"),$_CookedSettingsTabs=g("#cooked-settings-tabs"),u.length&&u.wpColorPicker(),$_CookedSortable.length&&(document.addEventListener("touchstart",cookedSortableTouchHandler,{passive:!1}),document.addEventListener("touchmove",cookedSortableTouchHandler,{passive:!1}),document.addEventListener("touchend",cookedSortableTouchHandler,{passive:!1}),$_CookedSortable.find(".cooked-icon-drag").length?$_CookedSortable.sortable({handle:".cooked-icon-drag",stop:function(e,t){t.item.closest("#cooked-directions-builder").length&&cooked_reset_direction_builder();var t=t.item.find("textarea"),o=!(!cooked_admin_functions_js_vars.wp_editor_roles_allowed||"undefined"==typeof wp||!wp.editor||"function"!=typeof wp.editor.remove||"function"!=typeof wp.editor.initialize);t.length&&o&&(o=t.attr("name"),t=t.attr("id"),wp.editor.remove(t),wp.editor.initialize(t,{tinymce:{wpautop:!1,toolbar1:"bold,italic,underline,blockquote,strikethrough,bullist,numlist,alignleft,aligncenter,alignright,undo,redo,wp_link_advanced,unlink,fullscreen",toolbar2:"",toolbar3:"",toolbar4:"",height:100,textarea_name:o,plugins:"link lists fullscreen wordpress wplink",setup:function(e){}},quicktags:!0,mediaButtons:!1}))}}):$_CookedSortable.sortable({stop:function(e,t){t.item.closest("#cooked-directions-builder").length&&cooked_reset_direction_builder()}})),$_CookedRecipeSaveDefault.length&&($_CookedRecipeSaveDefault.tooltipster({theme:["tooltipster-light","tooltipster-sideTip-cooked"],trigger:"click",animation:"grow",delay:0,speed:200,maxWidth:275,contentAsHTML:!0,interactive:!0,functionReady:function(r,e){g(".cooked-save-default-all").on("click",function(e){e.preventDefault();var t,o=g(this),e=o.data("nonce"),i=o.data("bulk-nonce"),n=o.parent(),d=confirm(cooked_admin_functions_js_vars.i18n_confirm_save_default_all),a=g("#_recipe_settings_content"),c=tinymce.get("_recipe_settings_content");t=null===c?a.val():c.getContent(),d&&!o.hasClass("disabled")&&(n.find(".button, .button-primary").addClass("disabled"),g.post(cooked_admin_functions_js_vars.ajax_url,{action:"cooked_save_default",default_content:t,nonce:e},function(){g.post(cooked_admin_functions_js_vars.ajax_url,{action:"cooked_get_recipe_count",nonce:i},function(e){o.removeClass("button-primary").addClass("button"),e&&e.success&&0 ')}),$_CookedTooltips.length&&$_CookedTooltips.tooltipster({theme:["tooltipster-light","tooltipster-sideTip-cooked"],animation:"grow",delay:100,speed:200,maxWidth:275,contentAsHTML:!0,interactive:!0}),$_CookedShortcodeField.length&&$_CookedShortcodeField.on("click",function(e){g(this).select()}),$_CookedConditionals.length&&(c=[],$_CookedConditionals.each(function(){var e=g(this),t=g(this).data("condition"),o=g(this).data("value"),i=g("#"+t),o=!!o&&o.split(" "),n=e.is("li")||e.is("span")?"inline-block":"block";i.is(":checkbox")&&i.is(":checked")||i.is(":radio")&&i.is(":checked")||!(i.is(":checkbox")&&!i.is(":checked")||i.is(":radio")&&!i.is(":checked"))&&(!i.is(":checkbox")&&!o&&i.val()||!i.is(":checkbox")&&o&&-1 a").attr("href")).split("#"))[1],g(".cooked-settings-tab-content").hide(),g("#cooked-settings-tab-content-"+n).show(),k.on("click",function(e){g(".tab-content").hide();var t=g(this).find("a"),t=($_CookedSettingsTabs.find("li").removeClass("active"),g(this).addClass("active"),t.attr("href"));"migration"==(t=(t=t.split("#"))[1])?m.hide():m.show(),g(".cooked-settings-tab-content").hide(),g("#cooked-settings-tab-content-"+t).show(),g("#cooked-settings-panel").hasClass("stuck")?window.scrollTo(0,130):window.scrollTo(0,0)}),$_CookedSettingsPanel.on("click",".cooked-settings-image-remove",function(e){e.preventDefault();e=g(this).closest(".cooked-settings-image-field");e.removeClass("cooked-has-image"),e.find(".cooked-settings-image-preview-img").attr("src","").removeAttr("srcset").removeAttr("sizes"),e.find(".cooked-settings-image-input").val("0"),e.find(".cooked-settings-image-button").val(cooked_admin_functions_js_vars.i18n_image_title)}),$_CookedSettingsPanel.on("click",".cooked-settings-image-button",function(e){e.preventDefault();var o=g(this),i=o.closest(".cooked-settings-image-field");d&&d.off("select"),(d=wp.media({title:cooked_admin_functions_js_vars.i18n_image_title,button:{text:cooked_admin_functions_js_vars.i18n_image_button},library:{type:"image"}})).on("select",function(){var e=d.state().get("selection").first().toJSON(),t=(e.sizes&&e.sizes.thumbnail?e.sizes.thumbnail:e).url;i.addClass("cooked-has-image"),i.find(".cooked-settings-image-preview-img").attr("src",t).removeAttr("srcset").removeAttr("sizes"),i.find(".cooked-settings-image-input").val(e.id),o.val(cooked_admin_functions_js_vars.i18n_image_change)}),d.open()})),$_CookedIngredientBuilder.length&&(cooked_reset_ingredient_builder(),$_CookedIngredientBuilder.on("keydown",'input[data-ingredient-part="name"]',function(e){9!==e.keyCode&&13!==e.keyCode||g(this).parents(".cooked-ingredient-block").is(":last-child")&&(e.preventDefault(),g("#cooked-recipe-tab-content-ingredients").find(".cooked-add-ingredient-button").trigger("click"),$_CookedIngredientBuilder.find('.cooked-ingredient-block:last-child input[data-ingredient-part="amount"]').focus())}),$_CookedIngredientBuilder.parent().on("click",".cooked-show-substitution",function(e){e.preventDefault();e=g(this).parent();e.hasClass("cooked-expanded")?e.removeClass("cooked-expanded"):(e.addClass("cooked-expanded"),e.find('input[data-ingredient-part="sub_amount"]').focus())}),$_CookedIngredientBuilder.on("keyup change",'input[data-ingredient-part="sub_amount"], input[data-ingredient-part="sub_name"], select[data-ingredient-part="sub_measurement"]',function(e){var t=g(this).parents(".recipe-setting-block"),o=t.find('input[data-ingredient-part="sub_name"]').val();o&&o.trim()?t.addClass("cooked-has-substitution"):t.removeClass("cooked-has-substitution")}),$_CookedAutoNutritionButton.length&&$_CookedIngredientBuilder.on("change",'input[data-ingredient-part="name"]',function(e){var t=!1;$_CookedIngredientBuilder.find('input[data-ingredient-part="name"]').each(function(){if(""!=g(this).val())return!(t=!0)}),t?$_CookedAutoNutritionButton.prop("disabled",!1):$_CookedAutoNutritionButton.prop("disabled",!0)}),$_CookedIngredientBuilder.on("keyup",'input[data-ingredient-part="url"]',function(e){var t=g(this).val(),o=g(this).parents(".recipe-setting-block");t?o.addClass("cooked-has-url"):o.removeClass("cooked-has-url")}),$_CookedIngredientBuilder.parent().on("click",".cooked-add-ingredient-button",function(e){e.preventDefault();e=$_CookedIngredientBuilder.parent().find(".cooked-ingredient-template").clone().removeClass("cooked-template cooked-ingredient-template").addClass("cooked-ingredient-block");$_CookedIngredientBuilder.append(e),cooked_reset_ingredient_builder()}),$_CookedIngredientBuilder.parent().on("click",".cooked-add-heading-button",function(e){e.preventDefault();e=$_CookedIngredientBuilder.parent().find(".cooked-heading-template").clone().removeClass("cooked-template cooked-heading-template").addClass("cooked-ingredient-block cooked-ingredient-heading");$_CookedIngredientBuilder.append(e),cooked_reset_ingredient_builder()}),$_CookedIngredientBuilder.parent().on("click",".cooked-delete-ingredient",function(e){e.preventDefault(),g(this).parent().remove(),cooked_reset_ingredient_builder()})),$_CookedDirectionBuilder.length&&(cooked_reset_direction_builder(),$_CookedDirectionBuilder.parent().on("click",".cooked-show-heading-element",function(e){e.preventDefault();e=g(this).parent();e.hasClass("cooked-expanded")?e.removeClass("cooked-expanded"):(e.addClass("cooked-expanded"),e.find('input[data-direction-part="section_heading_element"]').focus())}),$_CookedDirectionBuilder.parent().on("click",".cooked-add-direction-button",function(e){e.preventDefault();e=$_CookedDirectionBuilder.parent().find(".cooked-direction-template").clone().removeClass("cooked-template cooked-direction-template").addClass("cooked-direction-block");$_CookedDirectionBuilder.append(e),cooked_reset_direction_builder()}),$_CookedDirectionBuilder.parent().on("click",".cooked-add-heading-button",function(e){e.preventDefault();e=$_CookedDirectionBuilder.parent().find(".cooked-heading-template").clone().removeClass("cooked-template cooked-heading-template").addClass("cooked-direction-block cooked-direction-heading");$_CookedDirectionBuilder.append(e),cooked_reset_direction_builder()}),$_CookedDirectionBuilder.parent().on("click",".cooked-delete-direction",function(e){e.preventDefault();var t,e=g(this).parent();cooked_admin_functions_js_vars.wp_editor_roles_allowed&&"undefined"!=typeof wp&&wp.editor&&"function"==typeof wp.editor.remove&&(t=e.find('textarea[data-direction-part="content"]').attr("id"))&&wp.editor.remove(t),e.remove(),cooked_reset_direction_builder()}),$_CookedDirectionBuilder.parent().on("click",".remove-image-button",function(e){e.preventDefault();e=g(this).parent();e.removeClass("cooked-has-image"),e.find("img").attr("src","").removeAttr("srcset").removeAttr("sizes"),e.find('input[data-direction-part="image"]').val(""),cooked_reset_direction_builder()}),$_CookedDirectionBuilder.parent().on("click",".remove-video-button",function(e){e.preventDefault();e=g(this).parent();e.removeClass("cooked-has-video"),e.find(".cooked-direction-video-preview").attr("src",""),e.find('input[data-direction-part="video"]').val(""),e.find(".direction-video-button").prop("value",cooked_admin_functions_js_vars.i18n_video_title),cooked_reset_direction_builder()}),g("body").on("click",".cooked-direction-img-placeholder, .cooked-direction-img",function(e){e.preventDefault(),g(this).parent().find(".direction-image-button").trigger("click")}),g("body").on("click",".direction-image-button",function(e){var t=g(this);s=t.data("id"),e.preventDefault(),a||(a=wp.media.frames.direction_image_frame=wp.media({title:cooked_admin_functions_js_vars.i18n_image_title,button:{text:cooked_admin_functions_js_vars.i18n_image_button},library:{type:"image"}})).on("select",function(){var e=a.state().get("selection").first().toJSON();g("#direction-"+s+"-image-src").attr("src",e.sizes.thumbnail.url).removeAttr("srcset").removeAttr("sizes").parent().addClass("cooked-has-image"),g('input[name="_recipe_settings[directions]['+s+'][image]"]').val(e.id),g('.direction-image-button[data-id="'+s+'"]').prop("value",cooked_admin_functions_js_vars.i18n_image_change)}),a.open()}),g("body").on("click",".cooked-direction-video-placeholder, .cooked-direction-video-preview",function(e){e.preventDefault(),g(this).parent().find(".direction-video-button").trigger("click")}),g("body").on("click",".direction-video-button",function(e){var t=g(this);s=t.data("id"),e.preventDefault(),r||(r=wp.media.frames.direction_video_frame=wp.media({title:cooked_admin_functions_js_vars.i18n_video_title,button:{text:cooked_admin_functions_js_vars.i18n_video_button},library:{type:"video"}})).on("select",function(){var e=r.state().get("selection").first().toJSON(),t=g('.direction-video-button[data-id="'+s+'"]').closest(".cooked-direction-video");t.find(".cooked-direction-video-preview").attr("src",e.url),t.find('input[data-direction-part="video"]').val(e.id),t.addClass("cooked-has-video"),g('.direction-video-button[data-id="'+s+'"]').prop("value",cooked_admin_functions_js_vars.i18n_video_change)}),r.open()})),cooked_init_bulk_add(g),$_CookedRecipeGallery.length&&(cooked_init_gallery_sorting(),g("body").on("click",".cooked-gallery-add-button",function(e){g(this);e.preventDefault(),l||(l=wp.media.frames.gallery_images_frame=wp.media({title:cooked_admin_functions_js_vars.i18n_gallery_image_title,button:{text:cooked_admin_functions_js_vars.i18n_gallery_image_title},library:{type:"image"},multiple:!0})).on("select",function(){var e,t,o,i=l.state().get("selection").toJSON();for(e in i)i.hasOwnProperty(e)&&(o=(t=i[e]).sizes.thumbnail.url,g("#cooked-recipe-image-gallery").append(''+t.title+' '));cooked_init_gallery_sorting()}),l.open()}),g("body").on("click",".cooked-recipe-gallery-item img",function(e){e.preventDefault(),g(this).parent().find(".cooked-gallery-edit-button").trigger("click")}),g("body").on("click",".cooked-gallery-edit-button",function(e){var n=g(this),t=n.data("attachment-id"),d=(e.preventDefault(),wp.media.frames.gallery_images_frame=wp.media({title:cooked_admin_functions_js_vars.i18n_edit_image_title,button:{text:cooked_admin_functions_js_vars.i18n_edit_image_button},library:{type:"image"},multiple:!1}));d.on("open",function(){var e=d.state().get("selection");(attachment=wp.media.attachment(t)).fetch(),e.add(attachment?[attachment]:[])}),d.open(),d.on("select",function(){var e,t,o,i=d.state().get("selection").toJSON();for(e in i)i.hasOwnProperty(e)&&(o=(t=i[e]).sizes.thumbnail.url,n.parent().replaceWith(''+t.title+' '));cooked_init_gallery_sorting()})}),$_CookedRecipeGallery.on("click",".remove-image-button",function(e){var t=g(this);s=t.data("id"),e.preventDefault(),s?(g("#direction-"+s+"-image-src").parent().removeClass("cooked-has-image").prop("src",!1),g('input[name="_recipe_settings[directions]['+s+'][image]"]').val(""),g('.direction-image-button[data-id="'+s+'"]').prop("value",cooked_admin_functions_js_vars.i18n_image_title)):t.parent().remove()})),$_CookedNutritionFactsTab.length&&(init_nutrition_facts($_CookedNutritionFactsTab),$_CookedNutritionFactsTab.on("keyup","input",function(e){init_nutrition_facts($_CookedNutritionFactsTab)})),g("#cooked-prep-time").length&&g("#cooked-prep-time,#cooked-cook-time").on("change",function(){cooked_updateTotalTimeValue(parseInt(g("#cooked-prep-time").val()),parseInt(g("#cooked-cook-time").val()))})})})(jQuery),0),cooked_bulk_per_page=20;function cooked_set_default_template(o,i,n,d,a){var c,r,s;i<=0||(c=jQuery("#cooked-template-progress"),r=c.find(".cooked-progress-bar"),s=jQuery("#cooked-template-progress-text"),c.hasClass("cooked-active")||(c.addClass("cooked-active"),s.addClass("cooked-active"),r.css({width:"0%"}),a.reposition()),jQuery.post(cooked_admin_functions_js_vars.ajax_url,{action:"cooked_save_default_bulk",page:o,default_content:n,nonce:d},function(e){var t;e&&e.success&&(cooked_recipe_update_counter=Math.min((o+1)*cooked_bulk_per_page,i),t=Math.round(cooked_recipe_update_counter/i*100),r.css({width:t+"%"}),s.text(cooked_recipe_update_counter+" / "+i),e.data.has_more?cooked_set_default_template(o+1,i,n,d,a):(jQuery(".cooked-save-default-all").text(cooked_admin_functions_js_vars.i18n_applied),r.css({width:"100%"}),s.text(i+" / "+i),c.removeClass("cooked-active"),s.removeClass("cooked-active").text(""),a.reposition()))},"json"))}function cooked_updateTotalTimeValue(e,t){jQuery("#cooked-total-time").val(e+t)}function cooked_init_gallery_sorting(){jQuery("#cooked-recipe-image-gallery").sortable()}function init_nutrition_facts(e){e.find("input").each(function(){var e,t=jQuery(this),o=t.attr("id"),t=t.val(),i=jQuery('.cooked-nut-percent[data-labeltype="'+o+'"]').length;jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').length&&(t?(jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').text(t),jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').parents("li").eq(0).show(),jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').parents("p").eq(0).show(),i&&(e=(i=jQuery('.cooked-nut-percent[data-labeltype="'+o+'"]')).data("pdv"))&&(thisPercent=Math.ceil(t/e*100),i.text(thisPercent))):(jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').text("___"),jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').parents("li").eq(0).hide(),jQuery('.cooked-nut-label[data-labeltype="'+o+'"]').parents("p").eq(0).hide()))})}function cooked_reset_ingredient_builder(){var e=jQuery(".cooked-ingredient-block"),t=0,i=0,o=!1;0").text(e).html()}function h(e,t){if(u.empty(),e.length){l.attr("data-bulk-type","ingredients"),l.show(),k.removeAttr("disabled"),u.find(".cooked-bulk-add-preview-header").length||u.prepend('");for(var o=0;o'),d=s(''+_.i18n_bulk_add_section_heading+" "),a=s('
'),c=s(' ').text(_.i18n_bulk_add_heading_line_label),r=s(' ').val(e[o]),c=(a.append(c).append(r),s(' ').val(i.amount)),r=s(' ').val(i.measurement),i=s(' ').val(i.name);n.append(d).append(a).append(c).append(r).append(i),u.append(n)}}else l.attr("data-bulk-type",""),l.hide(),k.attr("disabled","disabled")}i.length&&(t=s("#cooked-bulk-add-textarea"),l=s("#cooked-bulk-add-preview"),u=s("#cooked-bulk-add-preview-list"),o=s("#cooked-bulk-add-title"),r=s("#cooked-bulk-add-type"),k=i.find(".cooked-bulk-add-submit"),p=i.find(".cooked-bulk-add-spinner"),_=cooked_admin_functions_js_vars,m=null,g="",t.on("input",function(){var e=r.val(),o=(e=>{for(var t=e.split(/[\r\n]+/),o=[],i=0;i'),a=s(''+_.i18n_bulk_add_section_heading+" "),c=s(' ').val(i[n]);d.append(a).append(c),u.append(d)}}else l.attr("data-bulk-type",""),l.hide(),k.attr("disabled","disabled")}else t!==g&&(g=t,h(o,null),m&&clearTimeout(m),m=setTimeout(function(){var t;(t=o).length?(p.show().css("visibility","visible"),s.post(_.ajax_url,{action:"cooked_parse_bulk_ingredients",nonce:_.cooked_bulk_add_nonce,lines:t},function(e){p.hide();e=e.success&&e.data&&e.data.parsed?e.data.parsed:null;h(t,e)}).fail(function(){p.hide(),h(t,null)})):h([],null)},400))}),s(document).on("click",".cooked-bulk-add-button",function(e){e.preventDefault();var e=s(this).data("type");e=e,r.val(e),t.val(""),u.empty(),l.attr("data-bulk-type",""),l.hide(),k.attr("disabled","disabled"),p.hide(),g="","ingredients"===e?(o.text(_.i18n_bulk_add_ingredients),t.attr("placeholder",_.i18n_bulk_add_placeholder_ingredients),k.text(_.i18n_bulk_add_submit_ingredients)):(o.text(_.i18n_bulk_add_directions),t.attr("placeholder",_.i18n_bulk_add_placeholder_directions),k.text(_.i18n_bulk_add_submit_directions)),i.show(),t.focus()}),i.on("click",".cooked-bulk-add-close, .cooked-bulk-add-cancel",function(e){e.preventDefault(),n()}),i.on("click",function(e){s(e.target).is(i)&&n()}),s(document).on("keydown",function(e){"Escape"===e.key&&i.is(":visible")&&n()}),u.on("change",'input[type="checkbox"]',function(){var e=s(this).closest(".cooked-bulk-add-preview-row"),t=s(this).is(":checked");e.toggleClass("cooked-bulk-add-is-heading",t)}),k.on("click",function(e){var i;e.preventDefault(),s(this).attr("disabled")||(e=r.val(),i=[],"ingredients"===e?u.find(".cooked-bulk-add-preview-row").each(function(){var e=s(this),t=e.find('input[type="checkbox"]').is(":checked"),o=e.find(".cooked-bulk-add-preview-text").val().trim();o&&i.push(t?{text:o,heading:!0}:{heading:!1,amount:e.find(".cooked-bulk-add-parsed-amount").val().trim(),measurement:e.find(".cooked-bulk-add-parsed-unit").val().trim(),name:e.find(".cooked-bulk-add-parsed-name").val().trim()||o})}):u.find(".cooked-bulk-add-preview-row").each(function(){var e=s(this),t=e.find(".cooked-bulk-add-preview-text").val().trim(),e=e.find('input[type="checkbox"]').is(":checked");t&&i.push({text:t,heading:e})}),i.length&&(("directions"===e?cooked_bulk_add_directions:cooked_bulk_add_ingredients_parsed)(i),n()))}))}function cooked_bulk_add_directions(e){for(var t=jQuery("#cooked-directions-builder"),o=t.parent(),i=0;i{d(document).ready(function(){var e=d("#cooked-migration-button"),o=d("#cooked-import-button"),i=d("#cooked-csv-import-button"),r=(d("#cooked-csv-import-form"),d("#cooked-migration-progress"),d("#cooked-migration-progress-text"),d("#cooked-csv-import-progress")),a=d("#cooked-csv-import-progress-text");e.length&&e.on("click",function(e){e.preventDefault();e=d(this);confirm(cooked_migration_js_vars.i18n_confirm_migrate_recipes)&&!e.hasClass("disabled")&&(e.addClass("disabled").attr("disabled",!0),e.hide(),d.post(cooked_migration_js_vars.ajax_url,{action:"cooked_get_migrate_ids"},function(e){var o;e&&(o=JSON.parse(e),0<(o=Object.keys(o).length))&&cooked_migrate_recipes(e,o)}))}),o.length&&o.on("click",function(e){e.preventDefault();var i=d(this),t=i.data("import-type");confirm(cooked_migration_js_vars.i18n_confirm_import_recipes)&&!i.hasClass("disabled")&&(i.addClass("disabled").attr("disabled",!0),i.hide(),d.post(cooked_migration_js_vars.ajax_url,{action:"cooked_get_import_ids",import_type:t},function(e){var o;e?(o=JSON.parse(e),0<(o=Object.keys(o).length)&&cooked_import_recipes(e,o,t)):(console.log(cooked_migration_js_vars.i18n_something_wrong),i.addClass("disabled").attr("disabled",!1),i.show())}))}),i.length&&i.on("click",function(e){e.preventDefault();var o,i=d(this),t=d("#cooked-csv-file"),e=t[0].files[0],s=d("#cooked-csv-import-errors");s.hide().empty(),e?"text/csv"===e.type||e.name.endsWith(".csv")?i.hasClass("disabled")||confirm(cooked_migration_js_vars.i18n_confirm_csv_import)&&(i.addClass("disabled").attr("disabled",!0),t.attr("disabled",!0),(o=new FormData).append("action","cooked_upload_csv"),o.append("csv_file",e),r.hasClass("cooked-active")||(r.addClass("cooked-active"),a.addClass("cooked-active"),r.find(".cooked-progress-bar").css({width:"0%"}),a.text(cooked_migration_js_vars.i18n_uploading)),d.ajax({url:cooked_migration_js_vars.ajax_url,type:"POST",data:o,processData:!1,contentType:!1,success:function(e){e.success?(a.text(cooked_migration_js_vars.i18n_processing),r.find(".cooked-progress-bar").css({width:"50%"}),d.post(cooked_migration_js_vars.ajax_url,{action:"cooked_process_csv",transient_key:e.data.transient_key},function(e){var o;e.success?(r.find(".cooked-progress-bar").css({width:"100%"}),a.text(e.data.success+" / "+e.data.total+" "+cooked_migration_js_vars.i18n_recipes_imported),e.data.errors&&0"+cooked_migration_js_vars.i18n_errors+" ",e.data.errors.forEach(function(e){o+=""+e+" "}),o+=" ",s.html(o).show()),setTimeout(function(){r.hide(),a.hide(),d("#cooked-csv-import-completed").show(),i.hide(),t.hide()},2e3)):(s.html(""+(e.data.message||cooked_migration_js_vars.i18n_import_failed)+"
").show(),i.removeClass("disabled").attr("disabled",!1),t.attr("disabled",!1),r.removeClass("cooked-active"),a.removeClass("cooked-active"))},"json").fail(function(){s.html(""+cooked_migration_js_vars.i18n_failed_process_csv+"
").show(),i.removeClass("disabled").attr("disabled",!1),t.attr("disabled",!1),r.removeClass("cooked-active"),a.removeClass("cooked-active")})):(s.html(""+(e.data.message||cooked_migration_js_vars.i18n_file_upload_failed)+"
").show(),i.removeClass("disabled").attr("disabled",!1),t.attr("disabled",!1),r.removeClass("cooked-active"),a.removeClass("cooked-active"))},error:function(){s.html(""+cooked_migration_js_vars.i18n_failed_upload_csv+"
").show(),i.removeClass("disabled").attr("disabled",!1),t.attr("disabled",!1),r.removeClass("cooked-active"),a.removeClass("cooked-active")}})):s.html(""+cooked_migration_js_vars.i18n_csv_invalid_file+"
").show():s.html(""+cooked_migration_js_vars.i18n_csv_no_file+"
").show()})})})(jQuery);{function cookedDecimalAdjust(e,o,i){return void 0===i||0==+i?Math[e](o):(i=+i,null===(o=+o)||isNaN(o)||"number"!=typeof i||i%1!=0?NaN:o<0?-cookedDecimalAdjust(e,-o,i):(o=o.toString().split("e"),+((o=(o=Math[e](+(o[0]+"e"+(o[1]?+o[1]-i:-i)))).toString().split("e"))[0]+"e"+(o[1]?+o[1]+i:i))))}}Math.round10||(Math.round10=function(e,o){return cookedDecimalAdjust("round",e,o)});var cooked_recipe_migrate_counter=0,progressIterations=0;function cooked_migrate_recipes(e,r){var a,d,c,o,n=0;0"+t+" "+cooked_migration_js_vars.i18n_hrs+", "+s+" "+cooked_migration_js_vars.i18n_mins+" "+cooked_migration_js_vars.i18n_remaining+""):1<=s?c.html(i+" / "+o+""+s+" "+cooked_migration_js_vars.i18n_mins+" "+cooked_migration_js_vars.i18n_remaining+" "):c.text(i+" / "+o)):c.text(i+" / "+o),cooked_migrate_recipes(e,r)):(a.hide(),c.hide(),jQuery(".recipe-setting-block.migrate_button").find("h3").hide(),jQuery(".recipe-setting-block.migrate_button").find("p:nth-child(2)").hide(),jQuery(".recipe-setting-block.migrate_button").find("ul.cooked-admin-ul").hide(),jQuery("#cooked-migration-button").hide(),jQuery("#cooked-migration-completed").addClass("cooked-active"))}))}function cooked_import_recipes(e,r,a){var d,c,n,o,_=0;0"+t+" "+cooked_migration_js_vars.i18n_hrs+", "+s+" "+cooked_migration_js_vars.i18n_mins+" "+cooked_migration_js_vars.i18n_remaining+""):1<=s?n.html(i+" / "+o+""+s+" "+cooked_migration_js_vars.i18n_mins+" "+cooked_migration_js_vars.i18n_remaining+" "):n.text(i+" / "+o)):n.text(i+" / "+o),cooked_import_recipes(e,r,a)):(d.hide(),n.hide(),jQuery(".recipe-setting-block.import_button").find("h3").hide(),jQuery(".recipe-setting-block.import_button").find("p:nth-child(2)").hide(),jQuery(".recipe-setting-block.import_button").find(".cooked-import-note").hide(),jQuery(".recipe-setting-block.import_button").find("ul.cooked-admin-ul").hide(),jQuery("#cooked-import-button").hide(),jQuery("#cooked-import-completed").addClass("cooked-active"))}))}
\ No newline at end of file
+(c=>{c(document).ready(function(){var o=c("#cooked-migration-button"),e=c("#cooked-import-button"),i=c("#cooked-csv-import-button"),s=(c("#cooked-csv-import-form"),c("#cooked-migration-progress"),c("#cooked-migration-progress-text"),c("#cooked-csv-import-progress")),a=c("#cooked-csv-import-progress-text");o.length&&o.on("click",function(o){o.preventDefault();o=c(this);confirm(cooked_migration_js_vars.i18n_confirm_migrate_recipes)&&!o.hasClass("disabled")&&(o.addClass("disabled").attr("disabled",!0),o.hide(),c.post(cooked_migration_js_vars.ajax_url,{action:"cooked_get_migrate_ids",nonce:cooked_migration_js_vars.cooked_migrate_nonce},function(o){var e;o&&(e=JSON.parse(o),0<(e=Object.keys(e).length))&&cooked_migrate_recipes(o,e)}))}),e.length&&e.on("click",function(o){o.preventDefault();var i=c(this),t=i.data("import-type");confirm(cooked_migration_js_vars.i18n_confirm_import_recipes)&&!i.hasClass("disabled")&&(i.addClass("disabled").attr("disabled",!0),i.hide(),c.post(cooked_migration_js_vars.ajax_url,{action:"cooked_get_import_ids",import_type:t,nonce:cooked_migration_js_vars.cooked_import_recipes_nonce},function(o){var e;o?(e=JSON.parse(o),0<(e=Object.keys(e).length)&&cooked_import_recipes(o,e,t)):(console.log(cooked_migration_js_vars.i18n_something_wrong),i.addClass("disabled").attr("disabled",!1),i.show())}))}),i.length&&i.on("click",function(o){o.preventDefault();var e,i=c(this),t=c("#cooked-csv-file"),o=t[0].files[0],r=c("#cooked-csv-import-errors");r.hide().empty(),o?"text/csv"===o.type||o.name.endsWith(".csv")?i.hasClass("disabled")||confirm(cooked_migration_js_vars.i18n_confirm_csv_import)&&(i.addClass("disabled").attr("disabled",!0),t.attr("disabled",!0),(e=new FormData).append("action","cooked_upload_csv"),e.append("nonce",cooked_migration_js_vars.cooked_import_nonce),e.append("csv_file",o),s.hasClass("cooked-active")||(s.addClass("cooked-active"),a.addClass("cooked-active"),s.find(".cooked-progress-bar").css({width:"0%"}),a.text(cooked_migration_js_vars.i18n_uploading)),c.ajax({url:cooked_migration_js_vars.ajax_url,type:"POST",data:e,processData:!1,contentType:!1,success:function(o){o.success?(a.text(cooked_migration_js_vars.i18n_processing),s.find(".cooked-progress-bar").css({width:"50%"}),c.post(cooked_migration_js_vars.ajax_url,{action:"cooked_process_csv",transient_key:o.data.transient_key,nonce:cooked_migration_js_vars.cooked_import_nonce},function(o){var e;o.success?(s.find(".cooked-progress-bar").css({width:"100%"}),a.text(o.data.success+" / "+o.data.total+" "+cooked_migration_js_vars.i18n_recipes_imported),o.data.errors&&0"+cooked_migration_js_vars.i18n_errors+" ",o.data.errors.forEach(function(o){e+=""+o+" "}),e+=" ",r.html(e).show()),setTimeout(function(){s.hide(),a.hide(),c("#cooked-csv-import-completed").show(),i.hide(),t.hide()},2e3)):(r.html(""+(o.data.message||cooked_migration_js_vars.i18n_import_failed)+"
").show(),i.removeClass("disabled").attr("disabled",!1),t.attr("disabled",!1),s.removeClass("cooked-active"),a.removeClass("cooked-active"))},"json").fail(function(){r.html(""+cooked_migration_js_vars.i18n_failed_process_csv+"
").show(),i.removeClass("disabled").attr("disabled",!1),t.attr("disabled",!1),s.removeClass("cooked-active"),a.removeClass("cooked-active")})):(r.html(""+(o.data.message||cooked_migration_js_vars.i18n_file_upload_failed)+"
").show(),i.removeClass("disabled").attr("disabled",!1),t.attr("disabled",!1),s.removeClass("cooked-active"),a.removeClass("cooked-active"))},error:function(){r.html(""+cooked_migration_js_vars.i18n_failed_upload_csv+"
").show(),i.removeClass("disabled").attr("disabled",!1),t.attr("disabled",!1),s.removeClass("cooked-active"),a.removeClass("cooked-active")}})):r.html(""+cooked_migration_js_vars.i18n_csv_invalid_file+"
").show():r.html(""+cooked_migration_js_vars.i18n_csv_no_file+"
").show()})})})(jQuery);{function cookedDecimalAdjust(o,e,i){return void 0===i||0==+i?Math[o](e):(i=+i,null===(e=+e)||isNaN(e)||"number"!=typeof i||i%1!=0?NaN:e<0?-cookedDecimalAdjust(o,-e,i):(e=e.toString().split("e"),+((e=(e=Math[o](+(e[0]+"e"+(e[1]?+e[1]-i:-i)))).toString().split("e"))[0]+"e"+(e[1]?+e[1]+i:i))))}}Math.round10||(Math.round10=function(o,e){return cookedDecimalAdjust("round",o,e)});var cooked_recipe_migrate_counter=0,progressIterations=0;function cooked_migrate_recipes(o,s){var a,c,n,e,d=0;0"+t+" "+cooked_migration_js_vars.i18n_hrs+", "+r+" "+cooked_migration_js_vars.i18n_mins+" "+cooked_migration_js_vars.i18n_remaining+""):1<=r?n.html(i+" / "+e+""+r+" "+cooked_migration_js_vars.i18n_mins+" "+cooked_migration_js_vars.i18n_remaining+" "):n.text(i+" / "+e)):n.text(i+" / "+e),cooked_migrate_recipes(o,s)):(a.hide(),n.hide(),jQuery(".recipe-setting-block.migrate_button").find("h3").hide(),jQuery(".recipe-setting-block.migrate_button").find("p:nth-child(2)").hide(),jQuery(".recipe-setting-block.migrate_button").find("ul.cooked-admin-ul").hide(),jQuery("#cooked-migration-button").hide(),jQuery("#cooked-migration-completed").addClass("cooked-active"))}))}function cooked_import_recipes(o,s,a){var c,n,d,e,_=0;0"+t+" "+cooked_migration_js_vars.i18n_hrs+", "+r+" "+cooked_migration_js_vars.i18n_mins+" "+cooked_migration_js_vars.i18n_remaining+""):1<=r?d.html(i+" / "+e+""+r+" "+cooked_migration_js_vars.i18n_mins+" "+cooked_migration_js_vars.i18n_remaining+" "):d.text(i+" / "+e)):d.text(i+" / "+e),cooked_import_recipes(o,s,a)):(c.hide(),d.hide(),jQuery(".recipe-setting-block.import_button").find("h3").hide(),jQuery(".recipe-setting-block.import_button").find("p:nth-child(2)").hide(),jQuery(".recipe-setting-block.import_button").find(".cooked-import-note").hide(),jQuery(".recipe-setting-block.import_button").find("ul.cooked-admin-ul").hide(),jQuery("#cooked-import-button").hide(),jQuery("#cooked-import-completed").addClass("cooked-active"))}))}
\ No newline at end of file
diff --git a/assets/css/colors.php b/assets/css/colors.php
index 3ca30bb..f74893e 100644
--- a/assets/css/colors.php
+++ b/assets/css/colors.php
@@ -29,50 +29,53 @@
};
?>/* Dark Mode */
- { background:rgba(255,255,255,0.075); box-shadow:inset 0 0 0 1px rgba(255,255,255,0.05); }
- { background:rgba(255,255,255,0.10); box-shadow:inset 0 0 0 1px rgba(255,255,255,0.05); }
- { background:rgba(0,0,0,0.95); box-shadow:none; border-radius:5px; }
- { background:rgba(0,0,0,0.25); border-color:rgba(255,255,255,0.15); }
- { background:rgba(255,255,255,0.10); }
- { background:rgba(255,255,255,0.15); }
- select' ); ?> { border-color:rgba(0,0,0,0.15); }
- select > option' ); ?> { color:#333; }
- span.cooked-tax-column-title' ); ?> { border-bottom-color:rgba(255,255,255,0.15); }
- { color:rgba(255,255,255,0.5); }
- { color:#fff; }
- { background:rgba(0,0,0,0.25); box-shadow:none !important }
- span' ); ?> { color:rgba(255,255,255,0.5); }
- a, .cooked-recipe-info span.cooked-fsm-button' ); ?> { color:rgba(255,255,255,0.5); }
- a:hover, .cooked-recipe-info span.cooked-fsm-button:hover' ); ?> { color:#fff; }
- { color:#fff; opacity:0.5; }
- { border-color:rgba(255,255,255,0.25); }
- { border-color:rgba(255,255,255,0.25); }
- { border-color:rgba(255,255,255,0.25); color:#fff; }
- { border-color:rgba(255,255,255,0.5); }
- { background:rgba(0,0,0,0.25); border:none; border-radius:5px; }
- { color:#fff; }
- { border-color:rgba(255,255,255,0.15); }
- { background:rgba(255,255,255,0.15); }
- { border-color:rgba(255,255,255,0.15); }
- { background:rgba(0,0,0,0.25); box-shadow:none !important; }
- { box-shadow:none !important; }
- { background:rgba(255,255,255,0.25); }
- { background:rgba(255,255,255,0.15); }
- { background:#000; color:#fff; }
- { background:rgba(255,255,255,0.1); }
- .cooked-rating-star.cooked-rating-star-empty, .cooked-recipe .cooked-ratable .cooked-rating-stars.cooked-user-rated > .cooked-rating-star.cooked-rating-star-empty' ); ?> { color:rgba(255,255,255,0.25); }
- { color:rgba(255,255,255,0.5); }
- { color:#fff; }
- { background:#191919; color:#fff; box-shadow:0 -5px 30px rgba(0,0,0,0.4); }
- { color:rgba(255,255,255,0.35); }
- { color:rgba(255,255,255,0.65); }
- { background:rgba(255,255,255,0.05); }
- { color:rgba(255,255,255,0.5); }
- { background:rgba(255,255,255,0.15); }
+ { background:rgba(255,255,255,0.075); box-shadow:inset 0 0 0 1px rgba(255,255,255,0.05); }
+ { background:rgba(255,255,255,0.10); box-shadow:inset 0 0 0 1px rgba(255,255,255,0.05); }
+ { background:rgba(0,0,0,0.95); box-shadow:none; border-radius:5px; }
+ { background:rgba(0,0,0,0.25); border-color:rgba(255,255,255,0.15); }
+ { background:rgba(255,255,255,0.10); }
+ { background:rgba(255,255,255,0.15); }
+ > select { border-color:rgba(0,0,0,0.15); }
+ > select > option { color:#333; }
+ > span.cooked-tax-column-title { border-bottom-color:rgba(255,255,255,0.15); }
+ { color:rgba(255,255,255,0.5); }
+ { color:#fff; }
+ { background:rgba(0,0,0,0.25); box-shadow:none !important }
+ > span { color:rgba(255,255,255,0.5); }
+ > a,
+ { color:rgba(255,255,255,0.5); }
+ > a:hover,
+ { color:#fff; }
+ { color:#fff; opacity:0.5; }
+ { border-color:rgba(255,255,255,0.25); }
+ { border-color:rgba(255,255,255,0.25); }
+ { border-color:rgba(255,255,255,0.25); color:#fff; }
+ { border-color:rgba(255,255,255,0.5); }
+ { background:rgba(0,0,0,0.25); border:none; border-radius:5px; }
+ { color:#fff; }
+ { border-color:rgba(255,255,255,0.15); }
+ { background:rgba(255,255,255,0.15); }
+ { border-color:rgba(255,255,255,0.15); }
+ { background:rgba(0,0,0,0.25); box-shadow:none !important; }
+ { box-shadow:none !important; }
+ { background:rgba(255,255,255,0.25); }
+ { background:rgba(255,255,255,0.15); }
+ { background:#000; color:#fff; }
+ { background:rgba(255,255,255,0.1); }
+ > .cooked-rating-star.cooked-rating-star-empty,
+ > .cooked-rating-star.cooked-rating-star-empty { color:rgba(255,255,255,0.25); }
+ { color:rgba(255,255,255,0.5); }
+ { color:#fff; }
+ { background:#191919; color:#fff; box-shadow:0 -5px 30px rgba(0,0,0,0.4); }
+ { color:rgba(255,255,255,0.35); }
+ { color:rgba(255,255,255,0.65); }
+ { background:rgba(255,255,255,0.05); }
+ { color:rgba(255,255,255,0.5); }
+ { background:rgba(255,255,255,0.15); }
{ background:rgba(255, 255,255,0.25); color:#fff; }
+echo wp_kses( $dm( '.cooked-related-recipes-empty' ), [] ); ?> { background:rgba(255, 255,255,0.25); color:#fff; }
{ background:rgba(79, 79, 79, 1); color:#fff; }
+echo wp_kses( $dm( '.cooked-recipe-search select.cooked-sortby-select option' ), [] ); ?> { background:rgba(79, 79, 79, 1); color:#fff; }
*:not(:first-child){display:none}.fullscreen{width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;background:#000}.fotorama--fullscreen{position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;float:none!important;z-index:2147483647!important;background:#000;width:100%!important;height:100%!important;margin:0!important}.fotorama--fullscreen .fotorama__nav,.fotorama--fullscreen .fotorama__stage{background:#000}.fotorama__wrap{-webkit-text-size-adjust:100%;position:relative;direction:ltr;z-index:0}.fotorama__wrap--rtl .fotorama__stage__frame{direction:rtl}.fotorama__nav,.fotorama__stage{overflow:hidden;position:relative;max-width:100%}.fotorama__wrap--pan-y{-ms-touch-action:pan-y}.fotorama__wrap .fotorama__pointer{cursor:pointer}.fotorama__wrap--slide .fotorama__stage__frame{opacity:1!important}.fotorama__stage__frame{overflow:hidden}.fotorama__stage__frame.fotorama__active{z-index:8}.fotorama__wrap--fade .fotorama__stage__frame{display:none}.fotorama__wrap--fade .fotorama__fade-front,.fotorama__wrap--fade .fotorama__fade-rear,.fotorama__wrap--fade .fotorama__stage__frame.fotorama__active{display:block;left:0;top:0}.fotorama__wrap--fade .fotorama__fade-front{z-index:8}.fotorama__wrap--fade .fotorama__fade-rear{z-index:7}.fotorama__wrap--fade .fotorama__fade-rear.fotorama__active{z-index:9}.fotorama__wrap--fade .fotorama__stage .fotorama__shadow{display:none}.fotorama__img{-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;border:none!important}.fotorama__error .fotorama__img,.fotorama__loaded .fotorama__img{-ms-filter:"alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1}.fotorama--fullscreen .fotorama__loaded--full .fotorama__img,.fotorama__img--full{display:none}.fotorama--fullscreen .fotorama__loaded--full .fotorama__img--full{display:block}.fotorama__wrap--only-active .fotorama__nav,.fotorama__wrap--only-active .fotorama__stage{max-width:99999px!important}.fotorama__wrap--only-active .fotorama__stage__frame{visibility:hidden}.fotorama__wrap--only-active .fotorama__stage__frame.fotorama__active{visibility:visible}.fotorama__nav{font-size:0;line-height:0;text-align:center;display:none;white-space:nowrap;z-index:5}.fotorama__nav__shaft{position:relative;left:0;top:0;text-align:left}.fotorama__nav__frame{position:relative;cursor:pointer}.fotorama__nav--dots{display:block}.fotorama__nav--dots .fotorama__nav__frame{width:18px;height:30px}.fotorama__nav--dots .fotorama__nav__frame--thumb,.fotorama__nav--dots .fotorama__thumb-border{display:none}.fotorama__nav--thumbs{display:block}.fotorama__nav--thumbs .fotorama__nav__frame{padding-left:0!important}.fotorama__nav--thumbs .fotorama__nav__frame:last-child{padding-right:0!important}.fotorama__nav--thumbs .fotorama__nav__frame--dot{display:none}.fotorama__dot{display:block;width:4px;height:4px;position:relative;top:12px;left:6px;border-radius:6px;border:1px solid #7f7f7f}.fotorama__nav__frame:focus .fotorama__dot:after{padding:1px;top:-1px;left:-1px}.fotorama__nav__frame.fotorama__active .fotorama__dot{width:0;height:0;border-width:3px}.fotorama__nav__frame.fotorama__active .fotorama__dot:after{padding:3px;top:-3px;left:-3px}.fotorama__thumb{overflow:hidden;position:relative;width:100%;height:100%}.fotorama__nav__frame:focus .fotorama__thumb{z-index:2}.fotorama__thumb-border{position:absolute;z-index:9;top:0;left:0;border-style:solid;border-color:#00afea;background-image:linear-gradient(to bottom right,rgba(255,255,255,.25),rgba(64,64,64,.1))}.fotorama__caption{position:absolute;z-index:12;bottom:0;left:0;right:0;font-family:'Helvetica Neue',Arial,sans-serif;font-size:14px;line-height:1.5;color:#000}.fotorama__caption a{text-decoration:none;color:#000;border-bottom:1px solid;border-color:rgba(0,0,0,.5)}.fotorama__caption a:hover{color:#333;border-color:rgba(51,51,51,.5)}.fotorama__wrap--rtl .fotorama__caption{left:auto;right:0}.fotorama__wrap--no-captions .fotorama__caption,.fotorama__wrap--video .fotorama__caption{display:none}.fotorama__caption__wrap{background-color:#fff;background-color:rgba(255,255,255,.9);padding:5px 10px}@-webkit-keyframes spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fotorama__wrap--css3 .fotorama__spinner{-webkit-animation:spinner 24s infinite linear;animation:spinner 24s infinite linear}.fotorama__wrap--css3 .fotorama__html,.fotorama__wrap--css3 .fotorama__stage .fotorama__img{transition-property:opacity;transition-timing-function:linear;transition-duration:.3s}.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__html,.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__img{-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0}.fotorama__select{cursor:auto}.fotorama__video{top:32px;right:0;bottom:0;left:0;position:absolute;z-index:10}@-moz-document url-prefix(){.fotorama__active{box-shadow:0 0 0 transparent}}.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__video-close,.fotorama__video-play{position:absolute;z-index:11;cursor:pointer}.fotorama__arr{position:absolute;width:32px;height:32px;top:50%;margin-top:-16px}.fotorama__arr--prev{left:2px;background-position:0 0}.fotorama__arr--next{right:2px;background-position:-32px 0}.fotorama__arr--disabled{pointer-events:none;cursor:default;*display:none;opacity:.1}.fotorama__fullscreen-icon{width:32px;height:32px;top:2px;right:2px;background-position:0 -32px;z-index:20}.fotorama__arr:focus,.fotorama__fullscreen-icon:focus{border-radius:50%}.fotorama--fullscreen .fotorama__fullscreen-icon{background-position:-32px -32px}.fotorama__video-play{width:96px;height:96px;left:50%;top:50%;margin-left:-48px;margin-top:-48px;background-position:0 -64px;opacity:0}.fotorama__wrap--css2 .fotorama__video-play,.fotorama__wrap--video .fotorama__stage .fotorama__video-play{display:none}.fotorama__error .fotorama__video-play,.fotorama__loaded .fotorama__video-play,.fotorama__nav__frame .fotorama__video-play{opacity:1;display:block}.fotorama__nav__frame .fotorama__video-play{width:32px;height:32px;margin-left:-16px;margin-top:-16px;background-position:-64px -32px}.fotorama__video-close{width:32px;height:32px;top:0;right:0;background-position:-64px 0;z-index:20;opacity:0}.fotorama__wrap--css2 .fotorama__video-close{display:none}.fotorama__wrap--css3 .fotorama__video-close{-webkit-transform:translate3d(32px,-32px,0);transform:translate3d(32px,-32px,0)}.fotorama__wrap--video .fotorama__video-close{display:block;opacity:1}.fotorama__wrap--css3.fotorama__wrap--video .fotorama__video-close{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__arr,.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon{opacity:0}.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__arr:focus,.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon:focus{opacity:1}.fotorama__wrap--video .fotorama__arr,.fotorama__wrap--video .fotorama__fullscreen-icon{opacity:0!important}.fotorama__wrap--css2.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__arr,.fotorama__wrap--css2.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon{display:none}.fotorama__wrap--css2.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__arr:focus,.fotorama__wrap--css2.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon:focus{display:block}.fotorama__wrap--css2.fotorama__wrap--video .fotorama__arr,.fotorama__wrap--css2.fotorama__wrap--video .fotorama__fullscreen-icon{display:none!important}.fotorama__wrap--css3.fotorama__wrap--no-controls.fotorama__wrap--slide.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon:not(:focus){-webkit-transform:translate3d(32px,-32px,0);transform:translate3d(32px,-32px,0)}.fotorama__wrap--css3.fotorama__wrap--no-controls.fotorama__wrap--slide.fotorama__wrap--toggle-arrows .fotorama__arr--prev:not(:focus){-webkit-transform:translate3d(-48px,0,0);transform:translate3d(-48px,0,0)}.fotorama__wrap--css3.fotorama__wrap--no-controls.fotorama__wrap--slide.fotorama__wrap--toggle-arrows .fotorama__arr--next:not(:focus){-webkit-transform:translate3d(48px,0,0);transform:translate3d(48px,0,0)}.fotorama__wrap--css3.fotorama__wrap--video .fotorama__fullscreen-icon{-webkit-transform:translate3d(32px,-32px,0)!important;transform:translate3d(32px,-32px,0)!important}.fotorama__wrap--css3.fotorama__wrap--video .fotorama__arr--prev{-webkit-transform:translate3d(-48px,0,0)!important;transform:translate3d(-48px,0,0)!important}.fotorama__wrap--css3.fotorama__wrap--video .fotorama__arr--next{-webkit-transform:translate3d(48px,0,0)!important;transform:translate3d(48px,0,0)!important}.fotorama__wrap--css3 .fotorama__arr:not(:focus),.fotorama__wrap--css3 .fotorama__fullscreen-icon:not(:focus),.fotorama__wrap--css3 .fotorama__video-close:not(:focus),.fotorama__wrap--css3 .fotorama__video-play:not(:focus){transition-property:-webkit-transform,opacity;transition-property:transform,opacity;transition-duration:.3s}.fotorama__nav:after,.fotorama__nav:before,.fotorama__stage:after,.fotorama__stage:before{content:"";display:block;position:absolute;text-decoration:none;top:0;bottom:0;width:10px;height:auto;z-index:10;pointer-events:none;background-repeat:no-repeat;background-size:1px 100%,5px 100%}.fotorama__nav:before,.fotorama__stage:before{background-image:linear-gradient(transparent,rgba(0,0,0,.2) 25%,rgba(0,0,0,.3) 75%,transparent),radial-gradient(farthest-side at 0 50%,rgba(0,0,0,.4),transparent);background-position:0 0,0 0;left:-10px}.fotorama__nav.fotorama__shadows--left:before,.fotorama__stage.fotorama__shadows--left:before{left:0}.fotorama__nav:after,.fotorama__stage:after{background-image:linear-gradient(transparent,rgba(0,0,0,.2) 25%,rgba(0,0,0,.3) 75%,transparent),radial-gradient(farthest-side at 100% 50%,rgba(0,0,0,.4),transparent);background-position:100% 0,100% 0;right:-10px}.fotorama__nav.fotorama__shadows--right:after,.fotorama__stage.fotorama__shadows--right:after{right:0}.fotorama--fullscreen .fotorama__nav:after,.fotorama--fullscreen .fotorama__nav:before,.fotorama--fullscreen .fotorama__stage:after,.fotorama--fullscreen .fotorama__stage:before,.fotorama__wrap--fade .fotorama__stage:after,.fotorama__wrap--fade .fotorama__stage:before,.fotorama__wrap--no-shadows .fotorama__nav:after,.fotorama__wrap--no-shadows .fotorama__nav:before,.fotorama__wrap--no-shadows .fotorama__stage:after,.fotorama__wrap--no-shadows .fotorama__stage:before{display:none}
\ No newline at end of file
+.fotorama__arr:focus:after,.fotorama__fullscreen-icon:focus:after,.fotorama__html,.fotorama__img,.fotorama__nav__frame:focus .fotorama__dot:after,.fotorama__nav__frame:focus .fotorama__thumb:after,.fotorama__stage__frame,.fotorama__stage__shaft,.fotorama__video iframe{position:absolute;width:100%;height:100%;top:0;right:0;left:0;bottom:0}.fotorama--fullscreen,.fotorama__img{max-width:99999px!important;max-height:99999px!important;min-width:0!important;min-height:0!important;border-radius:0!important;box-shadow:none!important;padding:0!important}.fotorama__wrap .fotorama__grab{cursor:move;cursor:-webkit-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.fotorama__grabbing *{cursor:move;cursor:-webkit-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.fotorama__spinner{position:absolute!important;top:50%!important;left:50%!important}.fotorama__wrap--css3 .fotorama__arr,.fotorama__wrap--css3 .fotorama__fullscreen-icon,.fotorama__wrap--css3 .fotorama__nav__shaft,.fotorama__wrap--css3 .fotorama__stage__shaft,.fotorama__wrap--css3 .fotorama__thumb-border,.fotorama__wrap--css3 .fotorama__video-close,.fotorama__wrap--css3 .fotorama__video-play{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.fotorama__caption,.fotorama__nav:after,.fotorama__nav:before,.fotorama__stage:after,.fotorama__stage:before,.fotorama__wrap--css3 .fotorama__html,.fotorama__wrap--css3 .fotorama__nav,.fotorama__wrap--css3 .fotorama__spinner,.fotorama__wrap--css3 .fotorama__stage,.fotorama__wrap--css3 .fotorama__stage .fotorama__img,.fotorama__wrap--css3 .fotorama__stage__frame{-webkit-transform:translateZ(0);transform:translateZ(0)}.fotorama__arr:focus,.fotorama__fullscreen-icon:focus,.fotorama__nav__frame{outline:0}.fotorama__arr:focus:after,.fotorama__fullscreen-icon:focus:after,.fotorama__nav__frame:focus .fotorama__dot:after,.fotorama__nav__frame:focus .fotorama__thumb:after{content:'';border-radius:inherit;background-color:rgba(0,175,234,.5)}.fotorama__wrap--video .fotorama__stage,.fotorama__wrap--video .fotorama__stage__frame--video,.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__html,.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__img,.fotorama__wrap--video .fotorama__stage__shaft{-webkit-transform:none!important;transform:none!important}.fotorama__wrap--css3 .fotorama__nav__shaft,.fotorama__wrap--css3 .fotorama__stage__shaft,.fotorama__wrap--css3 .fotorama__thumb-border{transition-property:-webkit-transform,width;transition-property:transform,width;transition-timing-function:cubic-bezier(0.1,0,.25,1);transition-duration:0ms}.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__no-select,.fotorama__video-close,.fotorama__video-play,.fotorama__wrap{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fotorama__select{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.fotorama__nav,.fotorama__nav__frame{margin:auto;padding:0}.fotorama__caption__wrap,.fotorama__nav__frame,.fotorama__nav__shaft{-moz-box-orient:vertical;display:inline-block;vertical-align:middle;*display:inline;*zoom:1}.fotorama__nav__frame,.fotorama__thumb-border{box-sizing:content-box}.fotorama__caption__wrap{box-sizing:border-box}.fotorama--hidden,.fotorama__load{position:absolute;left:-99999px;top:-99999px;z-index:-1}.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__nav,.fotorama__nav__frame,.fotorama__nav__shaft,.fotorama__stage__frame,.fotorama__stage__shaft,.fotorama__video-close,.fotorama__video-play{-webkit-tap-highlight-color:transparent}.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__video-close,.fotorama__video-play{background:url(fotorama.png) no-repeat}@media (-webkit-min-device-pixel-ratio:1.5),(min-resolution:2dppx){.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__video-close,.fotorama__video-play{background:url(fotorama-2x.png) 0 0/96px 160px no-repeat}}.fotorama__thumb{background-color:#7f7f7f;background-color:rgba(127,127,127,.2)}@media print{.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__thumb-border,.fotorama__video-close,.fotorama__video-play{background:none!important}}.fotorama{min-width:1px;overflow:hidden}.fotorama:not(.fotorama--unobtrusive)>*:not(:first-child){display:none}.fullscreen{width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;background:#000}.fotorama--fullscreen{position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;float:none!important;z-index:2147483647!important;background:#000;width:100%!important;height:100%!important;margin:0!important}.fotorama--fullscreen .fotorama__nav,.fotorama--fullscreen .fotorama__stage{background:#000}.fotorama__wrap{-webkit-text-size-adjust:100%;position:relative;direction:ltr;z-index:0}.fotorama__wrap--rtl .fotorama__stage__frame{direction:rtl}.fotorama__nav,.fotorama__stage{overflow:hidden;position:relative;max-width:100%}.fotorama__wrap--pan-y{-ms-touch-action:pan-y}.fotorama__wrap .fotorama__pointer{cursor:pointer}.fotorama__wrap--slide .fotorama__stage__frame{opacity:1!important}.fotorama__stage__frame{overflow:hidden}.fotorama__stage__frame.fotorama__active{z-index:8}.fotorama__wrap--fade .fotorama__stage__frame{display:none}.fotorama__wrap--fade .fotorama__fade-front,.fotorama__wrap--fade .fotorama__fade-rear,.fotorama__wrap--fade .fotorama__stage__frame.fotorama__active{display:block;left:0;top:0}.fotorama__wrap--fade .fotorama__fade-front{z-index:8}.fotorama__wrap--fade .fotorama__fade-rear{z-index:7}.fotorama__wrap--fade .fotorama__fade-rear.fotorama__active{z-index:9}.fotorama__wrap--fade .fotorama__stage .fotorama__shadow{display:none}.fotorama__img{-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;border:none!important}.fotorama__error .fotorama__img,.fotorama__loaded .fotorama__img{-ms-filter:"alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1}.fotorama--fullscreen .fotorama__loaded--full .fotorama__img,.fotorama__img--full{display:none}.fotorama--fullscreen .fotorama__loaded--full .fotorama__img--full{display:block}.fotorama__wrap--only-active .fotorama__nav,.fotorama__wrap--only-active .fotorama__stage{max-width:99999px!important}.fotorama__wrap--only-active .fotorama__stage__frame{visibility:hidden}.fotorama__wrap--only-active .fotorama__stage__frame.fotorama__active{visibility:visible}.fotorama__nav{font-size:0;line-height:0;text-align:center;display:none;white-space:nowrap;z-index:5}.fotorama__nav__shaft{position:relative;left:0;top:0;text-align:left}.fotorama__nav__frame{position:relative;cursor:pointer}.fotorama__nav--dots{display:block}.fotorama__nav--dots .fotorama__nav__frame{width:18px;height:30px}.fotorama__nav--dots .fotorama__nav__frame--thumb,.fotorama__nav--dots .fotorama__thumb-border{display:none}.fotorama__nav--thumbs{display:block}.fotorama__nav--thumbs .fotorama__nav__frame{padding-left:0!important}.fotorama__nav--thumbs .fotorama__nav__frame:last-child{padding-right:0!important}.fotorama__nav--thumbs .fotorama__nav__frame--dot{display:none}.fotorama__dot{display:block;width:4px;height:4px;position:relative;top:12px;left:6px;border-radius:6px;border:1px solid #7f7f7f}.fotorama__nav__frame:focus .fotorama__dot:after{padding:1px;top:-1px;left:-1px}.fotorama__nav__frame.fotorama__active .fotorama__dot{width:0;height:0;border-width:3px}.fotorama__nav__frame.fotorama__active .fotorama__dot:after{padding:3px;top:-3px;left:-3px}.fotorama__thumb{overflow:hidden;position:relative;width:100%;height:100%}.fotorama__nav__frame:focus .fotorama__thumb{z-index:2}.fotorama__thumb-border{position:absolute;z-index:9;top:0;left:0;border-style:solid;border-color:#00afea;background-image:linear-gradient(to bottom right,rgba(255,255,255,.25),rgba(64,64,64,.1))}.fotorama__caption{position:absolute;z-index:12;bottom:0;left:0;right:0;font-family:'Helvetica Neue',Arial,sans-serif;font-size:14px;line-height:1.5;color:#000}.fotorama__caption a{text-decoration:none;color:#000;border-bottom:1px solid;border-color:rgba(0,0,0,.5)}.fotorama__caption a:hover{color:#333;border-color:rgba(51,51,51,.5)}.fotorama__wrap--rtl .fotorama__caption{left:auto;right:0}.fotorama__wrap--no-captions .fotorama__caption,.fotorama__wrap--video .fotorama__caption{display:none}.fotorama__caption__wrap{background-color:#fff;background-color:rgba(255,255,255,.9);padding:5px 10px}@-webkit-keyframes spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fotorama__wrap--css3 .fotorama__spinner{-webkit-animation:spinner 24s infinite linear;animation:spinner 24s infinite linear}.fotorama__wrap--css3 .fotorama__html,.fotorama__wrap--css3 .fotorama__stage .fotorama__img{transition-property:opacity;transition-timing-function:linear;transition-duration:.3s}.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__html,.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__img{-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0}.fotorama__select{cursor:auto}.fotorama__video{top:32px;right:0;bottom:0;left:0;position:absolute;z-index:10}@-moz-document url-prefix(){.fotorama__active{box-shadow:0 0 0 transparent}}.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__video-close,.fotorama__video-play{position:absolute;z-index:11;cursor:pointer}.fotorama__arr{position:absolute;width:32px;height:32px;top:50%;margin-top:-16px}.fotorama__arr--prev{left:2px;background-position:0 0}.fotorama__arr--next{right:2px;background-position:-32px 0}.fotorama__arr--disabled{pointer-events:none;cursor:default;*display:none;opacity:.1}.fotorama__fullscreen-icon{width:32px;height:32px;top:2px;right:2px;background-position:0 -32px;z-index:20}.fotorama__arr:focus,.fotorama__fullscreen-icon:focus{border-radius:50%}.fotorama--fullscreen .fotorama__fullscreen-icon{background-position:-32px -32px}.fotorama__video-play{width:96px;height:96px;left:50%;top:50%;margin-left:-48px;margin-top:-48px;background-position:0 -64px;opacity:0}.fotorama__wrap--css2 .fotorama__video-play,.fotorama__wrap--video .fotorama__stage .fotorama__video-play{display:none}.fotorama__error .fotorama__video-play,.fotorama__loaded .fotorama__video-play,.fotorama__nav__frame .fotorama__video-play{opacity:1;display:block}.fotorama__nav__frame .fotorama__video-play{width:32px;height:32px;margin-left:-16px;margin-top:-16px;background-position:-64px -32px}.fotorama__video-close{width:32px;height:32px;top:0;right:0;background-position:-64px 0;z-index:20;opacity:0}.fotorama__wrap--css2 .fotorama__video-close{display:none}.fotorama__wrap--css3 .fotorama__video-close{-webkit-transform:translate3d(32px,-32px,0);transform:translate3d(32px,-32px,0)}.fotorama__wrap--video .fotorama__video-close{display:block;opacity:1}.fotorama__wrap--css3.fotorama__wrap--video .fotorama__video-close{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__arr,.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon{opacity:0}.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__arr:focus,.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon:focus{opacity:1}.fotorama__wrap--video .fotorama__arr,.fotorama__wrap--video .fotorama__fullscreen-icon{opacity:0!important}.fotorama__wrap--css2.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__arr,.fotorama__wrap--css2.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon{display:none}.fotorama__wrap--css2.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__arr:focus,.fotorama__wrap--css2.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon:focus{display:block}.fotorama__wrap--css2.fotorama__wrap--video .fotorama__arr,.fotorama__wrap--css2.fotorama__wrap--video .fotorama__fullscreen-icon{display:none!important}.fotorama__wrap--css3.fotorama__wrap--no-controls.fotorama__wrap--slide.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon:not(:focus){-webkit-transform:translate3d(32px,-32px,0);transform:translate3d(32px,-32px,0)}.fotorama__wrap--css3.fotorama__wrap--no-controls.fotorama__wrap--slide.fotorama__wrap--toggle-arrows .fotorama__arr--prev:not(:focus){-webkit-transform:translate3d(-48px,0,0);transform:translate3d(-48px,0,0)}.fotorama__wrap--css3.fotorama__wrap--no-controls.fotorama__wrap--slide.fotorama__wrap--toggle-arrows .fotorama__arr--next:not(:focus){-webkit-transform:translate3d(48px,0,0);transform:translate3d(48px,0,0)}.fotorama__wrap--css3.fotorama__wrap--video .fotorama__fullscreen-icon{-webkit-transform:translate3d(32px,-32px,0)!important;transform:translate3d(32px,-32px,0)!important}.fotorama__wrap--css3.fotorama__wrap--video .fotorama__arr--prev{-webkit-transform:translate3d(-48px,0,0)!important;transform:translate3d(-48px,0,0)!important}.fotorama__wrap--css3.fotorama__wrap--video .fotorama__arr--next{-webkit-transform:translate3d(48px,0,0)!important;transform:translate3d(48px,0,0)!important}.fotorama__wrap--css3 .fotorama__arr:not(:focus),.fotorama__wrap--css3 .fotorama__fullscreen-icon:not(:focus),.fotorama__wrap--css3 .fotorama__video-close:not(:focus),.fotorama__wrap--css3 .fotorama__video-play:not(:focus){transition-property:-webkit-transform,opacity;transition-property:transform,opacity;transition-duration:.3s}.fotorama__nav:after,.fotorama__nav:before,.fotorama__stage:after,.fotorama__stage:before{content:"";display:block;position:absolute;text-decoration:none;top:0;bottom:0;width:10px;height:auto;z-index:10;pointer-events:none;background-repeat:no-repeat;background-size:1px 100%,5px 100%}.fotorama__nav:before,.fotorama__stage:before{background-image:linear-gradient(transparent,rgba(0,0,0,.2) 25%,rgba(0,0,0,.3) 75%,transparent),radial-gradient(farthest-side at 0 50%,rgba(0,0,0,.4),transparent);background-position:0 0,0 0;left:-10px}.fotorama__nav.fotorama__shadows--left:before,.fotorama__stage.fotorama__shadows--left:before{left:0}.fotorama__nav:after,.fotorama__stage:after{background-image:linear-gradient(transparent,rgba(0,0,0,.2) 25%,rgba(0,0,0,.3) 75%,transparent),radial-gradient(farthest-side at 100% 50%,rgba(0,0,0,.4),transparent);background-position:100% 0,100% 0;right:-10px}.fotorama__nav.fotorama__shadows--right:after,.fotorama__stage.fotorama__shadows--right:after{right:0}.fotorama--fullscreen .fotorama__nav:after,.fotorama--fullscreen .fotorama__nav:before,.fotorama--fullscreen .fotorama__stage:after,.fotorama--fullscreen .fotorama__stage:before,.fotorama__wrap--fade .fotorama__stage:after,.fotorama__wrap--fade .fotorama__stage:before,.fotorama__wrap--no-shadows .fotorama__nav:after,.fotorama__wrap--no-shadows .fotorama__nav:before,.fotorama__wrap--no-shadows .fotorama__stage:after,.fotorama__wrap--no-shadows .fotorama__stage:before{display:none}
\ No newline at end of file
diff --git a/assets/css/responsive.php b/assets/css/responsive.php
index a5b4487..c6ae56c 100644
--- a/assets/css/responsive.php
+++ b/assets/css/responsive.php
@@ -80,7 +80,7 @@
$_cooked_fsm_dark_selectors = Cooked_Settings::prefix_dark_mode_css( '.cooked-fsm .cooked-fsm-ingredients, .cooked-fsm .cooked-fsm-directions-wrap' );
- ?> { background:#000; color:#fff; } { background:#000; color:#fff; }
diff --git a/bun.lock b/bun.lock
index 833faa0..c228ee1 100644
--- a/bun.lock
+++ b/bun.lock
@@ -5,22 +5,31 @@
"": {
"name": "cooked",
"devDependencies": {
- "@playwright/test": "^1.62.1",
- "@types/node": "^26.2.0",
- "@wordpress/e2e-test-utils-playwright": "^1.52.0",
- "@wordpress/env": "^11.12.0",
- "bestzip": "^3.0.2",
+ "@axe-core/playwright": "^4.13.0",
+ "@playwright/test": "^1.63.0",
+ "@types/node": "^26.4.1",
+ "@wordpress/e2e-test-utils-playwright": "^1.54.0",
+ "@wordpress/env": "^11.14.0",
+ "backstopjs": "^6.3.25",
+ "bestzip": "^3.0.3",
+ "dotenv": "^17.4.2",
"gulp": "^5.0.1",
"gulp-clean-css": "^4.3.0",
"gulp-rename": "^2.1.0",
"gulp-sass": "^6.0.1",
"gulp-uglify": "^3.0.2",
- "playwright": "^1.62.1",
- "sass": "^1.102.0",
+ "playwright": "^1.63.0",
+ "sass": "^1.104.0",
},
},
},
"packages": {
+ "@axe-core/playwright": ["@axe-core/playwright@4.13.0", "", { "dependencies": { "axe-core": "~4.13.0" }, "peerDependencies": { "playwright-core": ">= 1.0.0" } }, "sha512-6YLx+kxXu5GJceG4ozFg+33a2EMTdjYwWGloJ3sb9Kta5pp+ZNS53uxGVog5JetIY8s++P5UrtX+cri+u0VAVg=="],
+
+ "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="],
+
+ "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="],
+
"@formatjs/ecma402-abstract": ["@formatjs/ecma402-abstract@2.3.6", "", { "dependencies": { "@formatjs/fast-memoize": "2.2.7", "@formatjs/intl-localematcher": "0.6.2", "decimal.js": "^10.4.3", "tslib": "^2.8.0" } }, "sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw=="],
"@formatjs/fast-memoize": ["@formatjs/fast-memoize@2.2.7", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ=="],
@@ -73,7 +82,9 @@
"@kwsites/promise-deferred": ["@kwsites/promise-deferred@1.1.1", "", {}, "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="],
- "@nodable/entities": ["@nodable/entities@2.1.0", "", {}, "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA=="],
+ "@mirzazeyrek/node-resemble-js": ["@mirzazeyrek/node-resemble-js@1.2.1", "", { "dependencies": { "jpeg-js": "^0.4.2", "pngjs": "^6.0.0" } }, "sha512-+z1c7HpC5ysdSVVyUVz67hctVLl337VlRJP/MBwpvXHkKJdlnSUVrBhlRzxgal7xpm1uDE2JeUhWbQh6wPRC4w=="],
+
+ "@nodable/entities": ["@nodable/entities@3.0.0", "", {}, "sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw=="],
"@octokit/app": ["@octokit/app@14.1.0", "", { "dependencies": { "@octokit/auth-app": "^6.0.0", "@octokit/auth-unauthenticated": "^5.0.0", "@octokit/core": "^5.0.0", "@octokit/oauth-app": "^6.0.0", "@octokit/plugin-paginate-rest": "^9.0.0", "@octokit/types": "^12.0.0", "@octokit/webhooks": "^12.0.4" } }, "sha512-g3uEsGOQCBl1+W1rgfwoRFUIR6PtvB2T1E4RpygeUU5LrLvlOqcxrt5lfykIeRpUPpupreGJUYl70fqMDXdTpw=="],
@@ -185,83 +196,81 @@
"@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg=="],
- "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.41.1", "", {}, "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA=="],
+ "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.43.0", "", {}, "sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg=="],
"@opentelemetry/sql-common": ["@opentelemetry/sql-common@0.40.1", "", { "dependencies": { "@opentelemetry/core": "^1.1.0" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0" } }, "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg=="],
- "@parcel/watcher": ["@parcel/watcher@2.5.6", "", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.3" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.6", "@parcel/watcher-darwin-arm64": "2.5.6", "@parcel/watcher-darwin-x64": "2.5.6", "@parcel/watcher-freebsd-x64": "2.5.6", "@parcel/watcher-linux-arm-glibc": "2.5.6", "@parcel/watcher-linux-arm-musl": "2.5.6", "@parcel/watcher-linux-arm64-glibc": "2.5.6", "@parcel/watcher-linux-arm64-musl": "2.5.6", "@parcel/watcher-linux-x64-glibc": "2.5.6", "@parcel/watcher-linux-x64-musl": "2.5.6", "@parcel/watcher-win32-arm64": "2.5.6", "@parcel/watcher-win32-ia32": "2.5.6", "@parcel/watcher-win32-x64": "2.5.6" } }, "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ=="],
-
- "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.6", "", { "os": "android", "cpu": "arm64" }, "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A=="],
+ "@parcel/watcher": ["@parcel/watcher@2.6.0", "", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.4" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.6.0", "@parcel/watcher-darwin-arm64": "2.6.0", "@parcel/watcher-darwin-x64": "2.6.0", "@parcel/watcher-freebsd-x64": "2.6.0", "@parcel/watcher-linux-arm-glibc": "2.6.0", "@parcel/watcher-linux-arm-musl": "2.6.0", "@parcel/watcher-linux-arm64-glibc": "2.6.0", "@parcel/watcher-linux-arm64-musl": "2.6.0", "@parcel/watcher-linux-x64-glibc": "2.6.0", "@parcel/watcher-linux-x64-musl": "2.6.0", "@parcel/watcher-win32-arm64": "2.6.0", "@parcel/watcher-win32-x64": "2.6.0" } }, "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w=="],
- "@parcel/watcher-darwin-arm64": ["@parcel/watcher-darwin-arm64@2.5.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA=="],
+ "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.6.0", "", { "os": "android", "cpu": "arm64" }, "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA=="],
- "@parcel/watcher-darwin-x64": ["@parcel/watcher-darwin-x64@2.5.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg=="],
+ "@parcel/watcher-darwin-arm64": ["@parcel/watcher-darwin-arm64@2.6.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw=="],
- "@parcel/watcher-freebsd-x64": ["@parcel/watcher-freebsd-x64@2.5.6", "", { "os": "freebsd", "cpu": "x64" }, "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng=="],
+ "@parcel/watcher-darwin-x64": ["@parcel/watcher-darwin-x64@2.6.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw=="],
- "@parcel/watcher-linux-arm-glibc": ["@parcel/watcher-linux-arm-glibc@2.5.6", "", { "os": "linux", "cpu": "arm" }, "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ=="],
+ "@parcel/watcher-freebsd-x64": ["@parcel/watcher-freebsd-x64@2.6.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ=="],
- "@parcel/watcher-linux-arm-musl": ["@parcel/watcher-linux-arm-musl@2.5.6", "", { "os": "linux", "cpu": "arm" }, "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg=="],
+ "@parcel/watcher-linux-arm-glibc": ["@parcel/watcher-linux-arm-glibc@2.6.0", "", { "os": "linux", "cpu": "arm" }, "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg=="],
- "@parcel/watcher-linux-arm64-glibc": ["@parcel/watcher-linux-arm64-glibc@2.5.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA=="],
+ "@parcel/watcher-linux-arm-musl": ["@parcel/watcher-linux-arm-musl@2.6.0", "", { "os": "linux", "cpu": "arm" }, "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw=="],
- "@parcel/watcher-linux-arm64-musl": ["@parcel/watcher-linux-arm64-musl@2.5.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA=="],
+ "@parcel/watcher-linux-arm64-glibc": ["@parcel/watcher-linux-arm64-glibc@2.6.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g=="],
- "@parcel/watcher-linux-x64-glibc": ["@parcel/watcher-linux-x64-glibc@2.5.6", "", { "os": "linux", "cpu": "x64" }, "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ=="],
+ "@parcel/watcher-linux-arm64-musl": ["@parcel/watcher-linux-arm64-musl@2.6.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA=="],
- "@parcel/watcher-linux-x64-musl": ["@parcel/watcher-linux-x64-musl@2.5.6", "", { "os": "linux", "cpu": "x64" }, "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg=="],
+ "@parcel/watcher-linux-x64-glibc": ["@parcel/watcher-linux-x64-glibc@2.6.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A=="],
- "@parcel/watcher-win32-arm64": ["@parcel/watcher-win32-arm64@2.5.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q=="],
+ "@parcel/watcher-linux-x64-musl": ["@parcel/watcher-linux-x64-musl@2.6.0", "", { "os": "linux", "cpu": "x64" }, "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw=="],
- "@parcel/watcher-win32-ia32": ["@parcel/watcher-win32-ia32@2.5.6", "", { "os": "win32", "cpu": "ia32" }, "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g=="],
+ "@parcel/watcher-win32-arm64": ["@parcel/watcher-win32-arm64@2.6.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ=="],
- "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.6", "", { "os": "win32", "cpu": "x64" }, "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw=="],
+ "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.6.0", "", { "os": "win32", "cpu": "x64" }, "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A=="],
"@paulirish/trace_engine": ["@paulirish/trace_engine@0.0.59", "", { "dependencies": { "legacy-javascript": "latest", "third-party-web": "latest" } }, "sha512-439NUzQGmH+9Y017/xCchBP9571J4bzhpcNhrxorf7r37wcyJZkgUfrUsRL3xl+JDcZ6ORhoFCzCw98c6S3YHw=="],
- "@php-wasm/cli-util": ["@php-wasm/cli-util@3.1.33", "", { "dependencies": { "@php-wasm/util": "3.1.33", "fast-xml-parser": "^5.5.1", "jsonc-parser": "3.3.1" } }, "sha512-NCneC3hRrflP9VGSOoCiATxhsrR1/V+S7gTXXPsGeaeguRzn9ZTsdP6CBXRLLciIwQVA5/nynT3MMABR0SirDw=="],
+ "@php-wasm/cli-util": ["@php-wasm/cli-util@3.1.52", "", { "dependencies": { "@php-wasm/util": "3.1.52", "fast-xml-parser": "^5.8.0", "jsonc-parser": "3.3.1" } }, "sha512-/YP0JqY+l5SjB/kn3yeOe/Kdo88xUkIis3xbhtMivuARTBtxYC7tdHpW1uxJiw6dkmHR89tVFxiPA9PiZdS0/g=="],
- "@php-wasm/logger": ["@php-wasm/logger@3.1.33", "", {}, "sha512-2tqVrBGPwJeVSVwZT9D5beVcSYoCAsaSa/5UkrkoBCBK0mMrH15ussZoc6qw1Qa6g5qbjT5Af2EZ/YkrJ7lNiA=="],
+ "@php-wasm/logger": ["@php-wasm/logger@3.1.52", "", {}, "sha512-Hr/pKVE4HPjQP4rwvAlZm0DvcEHlVFesHgAvASEc5LgOaKbULy7SVYvtozuuh1e+24Hg1n6CoxA0fKL+nsp+Dg=="],
- "@php-wasm/node": ["@php-wasm/node@3.1.33", "", { "dependencies": { "@php-wasm/cli-util": "3.1.33", "@php-wasm/logger": "3.1.33", "@php-wasm/node-5-2": "3.1.33", "@php-wasm/node-7-4": "3.1.33", "@php-wasm/node-8-0": "3.1.33", "@php-wasm/node-8-1": "3.1.33", "@php-wasm/node-8-2": "3.1.33", "@php-wasm/node-8-3": "3.1.33", "@php-wasm/node-8-4": "3.1.33", "@php-wasm/node-8-5": "3.1.33", "@php-wasm/universal": "3.1.33", "@php-wasm/util": "3.1.33", "fs-ext-extra-prebuilt": "2.2.7", "wasm-feature-detect": "1.8.0", "ws": "8.18.0" } }, "sha512-rC+reJGZCw+k1uBTtSXOvLjVkNPLLOsv1w+u6o65oCS/Np6eRZ9BhL9Ip/ELq6YMR1GOFOEXdWKyrkQkTEMUng=="],
+ "@php-wasm/node": ["@php-wasm/node@3.1.52", "", { "dependencies": { "@php-wasm/cli-util": "3.1.52", "@php-wasm/logger": "3.1.52", "@php-wasm/node-5-2": "3.1.52", "@php-wasm/node-7-4": "3.1.52", "@php-wasm/node-8-0": "3.1.52", "@php-wasm/node-8-1": "3.1.52", "@php-wasm/node-8-2": "3.1.52", "@php-wasm/node-8-3": "3.1.52", "@php-wasm/node-8-4": "3.1.52", "@php-wasm/node-8-5": "3.1.52", "@php-wasm/universal": "3.1.52", "@php-wasm/util": "3.1.52", "fs-ext-extra-prebuilt": "2.2.7", "wasm-feature-detect": "1.8.0", "ws": "8.21.0" } }, "sha512-5fRw4dMvLGfRKHLZ7iGANVNQ8eGcq8Of91NcKo6qW8TorAIwAhTz+RQHuFtjI2zC7bq21E3IHxLa2I8338yX5A=="],
- "@php-wasm/node-5-2": ["@php-wasm/node-5-2@3.1.33", "", { "dependencies": { "@php-wasm/universal": "3.1.33", "wasm-feature-detect": "1.8.0" } }, "sha512-sW0YRW5qvP6gr8JYRODEeFZIyeEwa3kEiAmP9ISeMkbN0ZluNPtDH/8+Bt2vb63KYPjly5gUp9fVymZ0Mowrjg=="],
+ "@php-wasm/node-5-2": ["@php-wasm/node-5-2@3.1.52", "", { "dependencies": { "@php-wasm/universal": "3.1.52", "wasm-feature-detect": "1.8.0" } }, "sha512-z/RzVUr9NPPIe/41VWyJJ5YETEbHwkbq9Jk5fLgc9xhkBDh8EmKRz3MptgvcQyF1IZyuPW4ADe3AZ+R24LrjQw=="],
- "@php-wasm/node-7-4": ["@php-wasm/node-7-4@3.1.33", "", { "dependencies": { "@php-wasm/universal": "3.1.33", "wasm-feature-detect": "1.8.0" } }, "sha512-c4UKmnRZr4VoiSj0iWLdDFEdHRX+KN78Oul8VGfal1ChjTKm/aRL6C4A4fV2zegjPp41BvbqagXLGJZWHlG5uQ=="],
+ "@php-wasm/node-7-4": ["@php-wasm/node-7-4@3.1.52", "", { "dependencies": { "@php-wasm/universal": "3.1.52", "wasm-feature-detect": "1.8.0" } }, "sha512-e31adpo6SOl7mlptVpHCJwtlDNZWbP/KvPVmkYubs5wtstAzY8YeGzYWndGDUh43SqBr+zxiB9CH2B77IgAyIg=="],
- "@php-wasm/node-8-0": ["@php-wasm/node-8-0@3.1.33", "", { "dependencies": { "@php-wasm/universal": "3.1.33", "wasm-feature-detect": "1.8.0" } }, "sha512-x1Qf+zLj9zcT1cqm3L638Ks6BLpkpSjW8SQYIgMifyLxu709eY7BLnr1Za7TfmpH7p8I2gSXSSz0rCw/V918FA=="],
+ "@php-wasm/node-8-0": ["@php-wasm/node-8-0@3.1.52", "", { "dependencies": { "@php-wasm/universal": "3.1.52", "wasm-feature-detect": "1.8.0" } }, "sha512-+Po4d45fSqxgbPPeYRP7XNdc1oCGOWbuxluB0jJthA60LaTtLC4JEQ2B02BhE07gB2W+Nmvvf+HHY3e05JrvQw=="],
- "@php-wasm/node-8-1": ["@php-wasm/node-8-1@3.1.33", "", { "dependencies": { "@php-wasm/universal": "3.1.33", "wasm-feature-detect": "1.8.0" } }, "sha512-SxgQjc8/+cXiw+hnhP3+bPdXRv9HImaPap71P5+cEGvk0Xzz9PxuVpnP1IEFQ81nVEON2+acgU8TVuLSQGz3kA=="],
+ "@php-wasm/node-8-1": ["@php-wasm/node-8-1@3.1.52", "", { "dependencies": { "@php-wasm/universal": "3.1.52", "wasm-feature-detect": "1.8.0" } }, "sha512-H6wh4NDRTvDanVnumhN5dpSCUsKqBujW/84hHQcyZURGTS36frp1Runr5mmapRF/ZpyH7q+uG1kFzYEYkZIlaQ=="],
- "@php-wasm/node-8-2": ["@php-wasm/node-8-2@3.1.33", "", { "dependencies": { "@php-wasm/universal": "3.1.33", "wasm-feature-detect": "1.8.0" } }, "sha512-tlZR0rP1ekXhn6qJR361Wjrhls7pGME/u53hzNnzxg566gIA6BspY9LL2CRCckBs6tlDIiMdgt64TGLmro5sbg=="],
+ "@php-wasm/node-8-2": ["@php-wasm/node-8-2@3.1.52", "", { "dependencies": { "@php-wasm/universal": "3.1.52", "wasm-feature-detect": "1.8.0" } }, "sha512-+PIiU8whNov93e3VnojZik0dDciRkqwd+j2+nm4VDcXfHD9SewHP+k3chaUipTAhDDx8Q6fWYWa1CSGp5jrAtg=="],
- "@php-wasm/node-8-3": ["@php-wasm/node-8-3@3.1.33", "", { "dependencies": { "@php-wasm/universal": "3.1.33", "wasm-feature-detect": "1.8.0" } }, "sha512-2Y7GR1Gam72I9qikFPwbKedADBA05oPnhgf15bgQOLmrmRgZxVfLWt2WBQdAarT4//tvoKNIbtyTZ1vz4RllSw=="],
+ "@php-wasm/node-8-3": ["@php-wasm/node-8-3@3.1.52", "", { "dependencies": { "@php-wasm/universal": "3.1.52", "wasm-feature-detect": "1.8.0" } }, "sha512-UNkxXw7qUfeS6jG0luztYGosZHZaVMiziaPwY6FFUH0FnHwhrtFpYLI86ksfOZMnS9BjDf7bryIrdr0160tIJQ=="],
- "@php-wasm/node-8-4": ["@php-wasm/node-8-4@3.1.33", "", { "dependencies": { "@php-wasm/universal": "3.1.33", "wasm-feature-detect": "1.8.0" } }, "sha512-aduJAIccZnfYTTfV9LgvBoOWQroqOBo0K0VjRexGX1AC0IkLHA/abGU4+IYOSVXzhCpxNhlgqEwF45867vk2HA=="],
+ "@php-wasm/node-8-4": ["@php-wasm/node-8-4@3.1.52", "", { "dependencies": { "@php-wasm/universal": "3.1.52", "wasm-feature-detect": "1.8.0" } }, "sha512-M7L3lU0co6dPPi3PHs3agG6eeOHAszyJfUq/KmrmRReBJNHyviEcHpaGKextGJArJLfMvAAZjrhGOWVMBrQc/w=="],
- "@php-wasm/node-8-5": ["@php-wasm/node-8-5@3.1.33", "", { "dependencies": { "@php-wasm/universal": "3.1.33", "wasm-feature-detect": "1.8.0" } }, "sha512-DdXinP9yBK6yEehNlTJsNtBCL2fiWO3QPQw+y907mxONLtWUQJllE36LCJn7nosFBnm0hx5BFrb5IMCw5WpnBg=="],
+ "@php-wasm/node-8-5": ["@php-wasm/node-8-5@3.1.52", "", { "dependencies": { "@php-wasm/universal": "3.1.52", "wasm-feature-detect": "1.8.0" } }, "sha512-7Y6EkujT5tUTiZKZYVsG8L7cAlLvpl6X5TX+SP1C7YZnxnpZBafX4j/4reQGrYTKdvrK/8NklRH73BQkXhYWhg=="],
- "@php-wasm/progress": ["@php-wasm/progress@3.1.33", "", { "dependencies": { "@php-wasm/logger": "3.1.33" } }, "sha512-tD3OScNiqJKmaFP6g2rbUG1BR9m4ms5EhTHUUbCXi6Pe207Z10SzOzH/KDHlfdAFTBRaJSKc2332ibTfNOiQmQ=="],
+ "@php-wasm/progress": ["@php-wasm/progress@3.1.52", "", { "dependencies": { "@php-wasm/logger": "3.1.52" } }, "sha512-Zr4pHQDyX+OhkiLm830x0nt38L6ZRK3cWJMJNYSxvhlN7YKEmTHoA8hifchIE7OfgpF++s0rORXoBvEX5MmteA=="],
- "@php-wasm/scopes": ["@php-wasm/scopes@3.1.33", "", {}, "sha512-KoQNC+HAGI94iFTWbs/APvPeuiFIp4wrvl6Qr1wLnoTohP9wfI4KDwMeCaQ185WyRivdjHnzRD5aBTiFY9XGAA=="],
+ "@php-wasm/scopes": ["@php-wasm/scopes@3.1.52", "", {}, "sha512-1+f6czXaQVtO+LT8Bx9gORg/dQ+L5M7Kkp1Bk69RJE9nde6ZO/ex/wLymCx0nORHN01k6csqG2j/Nnew4KLRLg=="],
- "@php-wasm/stream-compression": ["@php-wasm/stream-compression@3.1.33", "", { "dependencies": { "@php-wasm/util": "3.1.33" } }, "sha512-pF3PK3weuAxylUYfX3mJo1EbMpR68eyg67XKCD/N9rnA2EhWO/8lyZQLy30jbVBGGcacAS7kfH41rZI/W23dTQ=="],
+ "@php-wasm/stream-compression": ["@php-wasm/stream-compression@3.1.52", "", { "dependencies": { "@php-wasm/util": "3.1.52" } }, "sha512-RpCCUpF/BwPLbqhUWxHz4utRtu5gSM66SaCFQkxdjAGI5yitaptsu1W6Z7Wp2UDabF3g1qfKfDog0JQ3D9azcw=="],
- "@php-wasm/universal": ["@php-wasm/universal@3.1.33", "", { "dependencies": { "@php-wasm/logger": "3.1.33", "@php-wasm/progress": "3.1.33", "@php-wasm/stream-compression": "3.1.33", "@php-wasm/util": "3.1.33", "ini": "4.1.2" } }, "sha512-0KA3uHLN0DfcIy+w7Vj25Cgri2HoDjf5L9OhRZ80RbfE0iAAvkZo25TPbz2LtOg2ok3IPDkV4hyjBFhPy8wl1g=="],
+ "@php-wasm/universal": ["@php-wasm/universal@3.1.52", "", { "dependencies": { "@php-wasm/logger": "3.1.52", "@php-wasm/progress": "3.1.52", "@php-wasm/stream-compression": "3.1.52", "@php-wasm/util": "3.1.52", "ini": "4.1.2" } }, "sha512-vgEV73SfpECzcCuTmr8+tGEzK6syk0p2I6E5CX2kJaE1/prCc4x5DyZtQ0dwhnzcEGrbhKDL2mpxxgl4B9fQOA=="],
- "@php-wasm/util": ["@php-wasm/util@3.1.33", "", {}, "sha512-+qXffKoRt5JeP0TYxofm8JnYH4XRvlLMywYcofF/4qmsREFEVwOS2O2L3m7KAAhq2YGgkC/aFLo0qkzSJ5xsJA=="],
+ "@php-wasm/util": ["@php-wasm/util@3.1.52", "", {}, "sha512-lwxtwyIXEO8537eCv5iBfx1WW+DhSYc6obgtTQ6Up85GbHCE050n0RbOWva4XBu7T3Y5PfQshPoPccM/l14chA=="],
- "@php-wasm/web-service-worker": ["@php-wasm/web-service-worker@3.1.33", "", { "dependencies": { "@php-wasm/scopes": "3.1.33", "@php-wasm/universal": "3.1.33" } }, "sha512-Dikj8YFCcMfV3QFRAvlsXjpgE/FmcYSOqGG9AKKRPJqkzHAVamCc28zCC3vLiGLKhnWIRwBytV6gVhmCxaFe0g=="],
+ "@php-wasm/web-service-worker": ["@php-wasm/web-service-worker@3.1.52", "", { "dependencies": { "@php-wasm/scopes": "3.1.52", "@php-wasm/universal": "3.1.52" } }, "sha512-jEajg31JjVEdLX9yeQ1pa34dtztfMiz6I5y20/LZ3NADO9NrSvcAPsjYf2NkN4cpUDz4mKs6hkOskA6gd1CVxw=="],
- "@php-wasm/xdebug-bridge": ["@php-wasm/xdebug-bridge@3.1.33", "", { "dependencies": { "@php-wasm/logger": "3.1.33", "@php-wasm/universal": "3.1.33", "ws": "8.18.0", "xml2js": "0.6.2", "yargs": "17.7.2" }, "bin": { "xdebug-bridge": "xdebug-bridge.js" } }, "sha512-tUNErqn3jXks2mh51V6rboNUazGzQrekJdmzOd3ESfAcwIdWuTmTevCXKkDS0q3LDkQhto1VfBK4acncZVfkCg=="],
+ "@php-wasm/xdebug-bridge": ["@php-wasm/xdebug-bridge@3.1.52", "", { "dependencies": { "@php-wasm/logger": "3.1.52", "@php-wasm/universal": "3.1.52", "ws": "8.21.0", "xml2js": "0.6.2", "yargs": "17.7.2" }, "bin": { "xdebug-bridge": "xdebug-bridge.js" } }, "sha512-I5yMzjRe+Ivh6N2e5QSh8Fy3VN9WIv7YFhqFOlN3eq0UKCt3gDERCOtt96VMulWYH2m8qmYvpcX20h6p3T2Hyw=="],
"@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="],
- "@playwright/test": ["@playwright/test@1.62.1", "", { "dependencies": { "playwright": "1.62.1" }, "bin": { "playwright": "cli.js" } }, "sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ=="],
+ "@playwright/test": ["@playwright/test@1.63.0", "", { "dependencies": { "playwright": "1.63.0" }, "bin": { "playwright": "cli.js" } }, "sha512-oxMK4vllB9RK5NQ2l1pq1IfOf2AvnEuj/vYGDj0H2nMtmtZpKtCwt/l00GEO6xjGfpBNAvjovvYdCm50dRQkpQ=="],
"@prisma/instrumentation": ["@prisma/instrumentation@6.11.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0" }, "peerDependencies": { "@opentelemetry/api": "^1.8" } }, "sha512-mrZOev24EDhnefmnZX7WVVT7v+r9LttPRqf54ONvj6re4XMF7wFTpK2tLJi4XHB7fFp/6xhYbgRel8YV7gQiyA=="],
- "@puppeteer/browsers": ["@puppeteer/browsers@2.13.2", "", { "dependencies": { "debug": "^4.4.3", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", "semver": "^7.7.4", "tar-fs": "^3.1.1", "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" } }, "sha512-5EUZSUIc37H6aIXyWO0Z4y8NlF8NnjgmqeQgOGiswAU7pY0HOo16ho4+alIWmSfdZnjqBRawMsP3I5YqLSn6kw=="],
+ "@puppeteer/browsers": ["@puppeteer/browsers@2.3.0", "", { "dependencies": { "debug": "^4.3.5", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.4.0", "semver": "^7.6.3", "tar-fs": "^3.0.6", "unbzip2-stream": "^1.4.3", "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" } }, "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA=="],
"@sentry/core": ["@sentry/core@9.47.1", "", {}, "sha512-KX62+qIt4xgy8eHKHiikfhz2p5fOciXd0Cl+dNzhgPFq8klq4MGMNaf148GB3M/vBqP4nw/eFvRMAayFCgdRQw=="],
@@ -281,7 +290,7 @@
"@tootallnate/quickjs-emscripten": ["@tootallnate/quickjs-emscripten@0.23.0", "", {}, "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="],
- "@types/aws-lambda": ["@types/aws-lambda@8.10.161", "", {}, "sha512-rUYdp+MQwSFocxIOcSsYSF3YYYC/uUpMbCY/mbO21vGqfrEYvNSoPyKYDj6RhXXpPfS0KstW9RwG3qXh9sL7FQ=="],
+ "@types/aws-lambda": ["@types/aws-lambda@8.10.163", "", {}, "sha512-+4zuoEB3S8RIhimtOFT7zAEk2SbpwrKjjGl9CyYnQR6k08uynxfauIIB0pDU1ssr05F8oyGiETwpn+8eXZMqPw=="],
"@types/btoa-lite": ["@types/btoa-lite@1.0.2", "", {}, "sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg=="],
@@ -299,7 +308,7 @@
"@types/mysql": ["@types/mysql@2.15.26", "", { "dependencies": { "@types/node": "*" } }, "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ=="],
- "@types/node": ["@types/node@26.2.0", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg=="],
+ "@types/node": ["@types/node@26.4.1", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA=="],
"@types/pg": ["@types/pg@8.6.1", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w=="],
@@ -313,21 +322,21 @@
"@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="],
- "@wordpress/e2e-test-utils-playwright": ["@wordpress/e2e-test-utils-playwright@1.52.0", "", { "dependencies": { "change-case": "^4.1.2", "get-port": "^5.1.1", "lighthouse": "^12.2.2", "mime": "^3.0.0", "web-vitals": "^4.2.1" }, "peerDependencies": { "@playwright/test": ">=1", "@types/node": "^20.17.10" } }, "sha512-LK0/WJd8iGfTo9ONaHrLSBh0IjKHeXU7urZPaNuXXB7jdt+coLTF+y0gP4c6sQ5m9OgfQqf01FPT/t2XzEbJ+w=="],
+ "@wordpress/e2e-test-utils-playwright": ["@wordpress/e2e-test-utils-playwright@1.54.0", "", { "dependencies": { "change-case": "^4.1.2", "get-port": "^5.1.1", "lighthouse": "^12.2.2", "mime": "^3.0.0", "web-vitals": "^4.2.1" }, "peerDependencies": { "@playwright/test": ">=1", "@types/node": "^20.17.10" } }, "sha512-xpsb5c8T8VXBBrYfr98OqK2yevtiHVwpVE+u0vqYBYgWNiqQJj8Eyq7geRdY6v4SctbAVe8vGFVV+DfPaEhvRg=="],
- "@wordpress/env": ["@wordpress/env@11.12.0", "", { "dependencies": { "@inquirer/prompts": "^7.2.0", "@wp-playground/cli": "^3.0.48", "adm-zip": "^0.5.9", "chalk": "^4.1.1", "copy-dir": "^1.3.0", "cross-spawn": "^7.0.6", "docker-compose": "^0.24.3", "got": "^11.8.5", "js-yaml": "^3.15.0", "ora": "^4.0.2", "rimraf": "^5.0.10", "simple-git": "^3.32.3", "yargs": "^17.3.0" }, "bin": { "wp-env": "bin/wp-env" } }, "sha512-P1mYGEgnkYCbBPRaT9uAyxe3hFfsfkvxXKQ+Pfb00z/mXz5xbPC48ZdXTQmxTcpaj0nDwJfrBz0vzc074B5nrA=="],
+ "@wordpress/env": ["@wordpress/env@11.14.0", "", { "dependencies": { "@inquirer/prompts": "^7.2.0", "@wp-playground/cli": "^3.0.48", "adm-zip": "^0.6.0", "chalk": "^4.1.1", "copy-dir": "^1.3.0", "cross-spawn": "^7.0.6", "docker-compose": "^0.24.3", "got": "^11.8.5", "js-yaml": "^3.15.0", "ora": "^4.0.2", "rimraf": "^5.0.10", "simple-git": "^3.32.3", "yargs": "^17.3.0" }, "bin": { "wp-env": "bin/wp-env" } }, "sha512-Q/XUhGjFJtlfybw/mq+7H5MsF2u3zWH5YxNR5y473+CeIjZx20wt5Dx0RDHAJcG2ICTky4pJevNlIq/EFnUwIQ=="],
- "@wp-playground/blueprints": ["@wp-playground/blueprints@3.1.33", "", { "dependencies": { "@php-wasm/logger": "3.1.33", "@php-wasm/progress": "3.1.33", "@php-wasm/stream-compression": "3.1.33", "@php-wasm/universal": "3.1.33", "@php-wasm/util": "3.1.33", "@php-wasm/web-service-worker": "3.1.33", "@wp-playground/common": "3.1.33", "@wp-playground/storage": "3.1.33", "@wp-playground/wordpress": "3.1.33", "ajv": "8.12.0" } }, "sha512-bAs0MOBgXPDYtsO2tQcXSqveEaye8xcNGOQvovvE6c5pZWD4RlsiuZ71oKGmtq7JJhgdLTNj0lkcF9f2NX6vrg=="],
+ "@wp-playground/blueprints": ["@wp-playground/blueprints@3.1.52", "", { "dependencies": { "@php-wasm/logger": "3.1.52", "@php-wasm/progress": "3.1.52", "@php-wasm/stream-compression": "3.1.52", "@php-wasm/universal": "3.1.52", "@php-wasm/util": "3.1.52", "@php-wasm/web-service-worker": "3.1.52", "@wp-playground/common": "3.1.52", "@wp-playground/storage": "3.1.52", "@wp-playground/wordpress": "3.1.52", "ajv": "8.18.0" } }, "sha512-K4QieiesG8MgZnKQerObS7dON4ngZCDt32aqnYLeaTiSJ2jFXqMcfBXH8MjFO3KVncJsTfU2euh8OtDV1fKkqA=="],
- "@wp-playground/cli": ["@wp-playground/cli@3.1.33", "", { "dependencies": { "@php-wasm/cli-util": "3.1.33", "@php-wasm/logger": "3.1.33", "@php-wasm/node": "3.1.33", "@php-wasm/progress": "3.1.33", "@php-wasm/universal": "3.1.33", "@php-wasm/util": "3.1.33", "@php-wasm/xdebug-bridge": "3.1.33", "@wp-playground/blueprints": "3.1.33", "@wp-playground/common": "3.1.33", "@wp-playground/storage": "3.1.33", "@wp-playground/tools": "3.1.33", "@wp-playground/wordpress": "3.1.33", "express": "4.22.0", "fs-extra": "11.1.1", "tmp-promise": "3.0.3", "wasm-feature-detect": "1.8.0", "yargs": "17.7.2" }, "bin": { "wp-playground-cli": "wp-playground.js" } }, "sha512-LPwtUp1LMJ+uExJ09iM7AJLrQ+0x1IMA2GAjED/ndrWfScKkmsMnGZ5zoam0UZOWDhFa34aKpeuSk1ZfOjCdMg=="],
+ "@wp-playground/cli": ["@wp-playground/cli@3.1.52", "", { "dependencies": { "@php-wasm/cli-util": "3.1.52", "@php-wasm/logger": "3.1.52", "@php-wasm/node": "3.1.52", "@php-wasm/progress": "3.1.52", "@php-wasm/universal": "3.1.52", "@php-wasm/util": "3.1.52", "@php-wasm/xdebug-bridge": "3.1.52", "@wp-playground/blueprints": "3.1.52", "@wp-playground/common": "3.1.52", "@wp-playground/storage": "3.1.52", "@wp-playground/tools": "3.1.52", "@wp-playground/wordpress": "3.1.52", "express": "4.22.2", "fs-extra": "11.1.1", "tmp-promise": "3.0.3", "wasm-feature-detect": "1.8.0", "yargs": "17.7.2" }, "bin": { "wp-playground-cli": "wp-playground.js" } }, "sha512-NXApYcnZwKGOL/E6rdAwHKXbyPFMRIBKF9SX/TlxH9TOgBef0eblwjylnxnYzdAuiOzdJT7PhO4gJw2WSFTZAw=="],
- "@wp-playground/common": ["@wp-playground/common@3.1.33", "", { "dependencies": { "@php-wasm/universal": "3.1.33", "@php-wasm/util": "3.1.33" } }, "sha512-73H72BTZDZPQ+/VaQG6W3nTlYFWBOxTMqGBsSQQBEvDKhqi/Yn9aQCI8sKzqIU+TbhIAB+K2oLJX/47maMIk2Q=="],
+ "@wp-playground/common": ["@wp-playground/common@3.1.52", "", { "dependencies": { "@php-wasm/universal": "3.1.52", "@php-wasm/util": "3.1.52" } }, "sha512-QGE8CdykgfVEjqRKMXMFsXOwh3MV26FkXJ4c/HzsKKAaRt+zwp7BAK2s6jht40iz9TVDR3ZPcpBrSltfmjIshQ=="],
- "@wp-playground/storage": ["@wp-playground/storage@3.1.33", "", { "dependencies": { "@php-wasm/stream-compression": "3.1.33", "@php-wasm/universal": "3.1.33", "@php-wasm/util": "3.1.33", "@zip.js/zip.js": "2.7.57", "isomorphic-git": "1.37.6", "octokit": "3.1.2", "pako": "^1.0.10" } }, "sha512-z5GRPjEz3cI+hHhw3njvsmUWP4tQeobiL+yc3p6QmERmiWEWHrcph80bcoA3IQz5y/VFscBzb9K0lqm1rMtPuQ=="],
+ "@wp-playground/storage": ["@wp-playground/storage@3.1.52", "", { "dependencies": { "@php-wasm/stream-compression": "3.1.52", "@php-wasm/universal": "3.1.52", "@php-wasm/util": "3.1.52", "@zip.js/zip.js": "2.7.57", "isomorphic-git": "1.37.6", "octokit": "3.1.2", "pako": "^1.0.10", "sha.js": "2.4.12" } }, "sha512-hUQLdZ5iSC8Y01o06aMK/m9DZmMjo2cgl52MvXxR8Cuma+xgrMnlC+G1n7lnjaT+5Wbo58KaawxjZJxUpgcvxw=="],
- "@wp-playground/tools": ["@wp-playground/tools@3.1.33", "", { "dependencies": { "@wp-playground/blueprints": "3.1.33" } }, "sha512-AvrjQClj/rQw7HiRn6zAuUvGYdbS/F4bAQVpL6QkCj3FHMBOqbvgC0UGWXMFuppBsYXawZDbWMBnDzRYEelBjQ=="],
+ "@wp-playground/tools": ["@wp-playground/tools@3.1.52", "", { "dependencies": { "@php-wasm/util": "3.1.52", "@wp-playground/blueprints": "3.1.52" } }, "sha512-rn604x/fH2VFW6rYw3mN5idaMh03sKIbxoeBDPZsh6Ca1Hv9oyheiQFEy0Y3Kzli4B58YwbRUcC0wlv3laT3hw=="],
- "@wp-playground/wordpress": ["@wp-playground/wordpress@3.1.33", "", { "dependencies": { "@php-wasm/logger": "3.1.33", "@php-wasm/universal": "3.1.33", "@php-wasm/util": "3.1.33", "@wp-playground/common": "3.1.33" } }, "sha512-ZdDEiYElMF7T5c8oc96AeQgTtL3b3M9RvrgJTtaQuVrrAFHJ7f5LZ7C4jpnq6KvpcEm+TnUvvvCYy8KMk/L6nQ=="],
+ "@wp-playground/wordpress": ["@wp-playground/wordpress@3.1.52", "", { "dependencies": { "@php-wasm/logger": "3.1.52", "@php-wasm/universal": "3.1.52", "@php-wasm/util": "3.1.52", "@wp-playground/common": "3.1.52", "zstddec": "^0.2.0" } }, "sha512-vXvgrN33y3zvxWxVjtEEb4L4ZNfgBRPlvVe6wXHB19Dbiu32ZLkrlUpEkpKvft7wnrXnWvbDJqbEBfU2rKJtqw=="],
"@zip.js/zip.js": ["@zip.js/zip.js@2.7.57", "", {}, "sha512-BtonQ1/jDnGiMed6OkV6rZYW78gLmLswkHOzyMrMb+CAR7CZO8phOHO6c2qw6qb1g1betN7kwEHhhZk30dv+NA=="],
@@ -335,17 +344,17 @@
"accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="],
- "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="],
+ "acorn": ["acorn@8.18.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ=="],
"acorn-import-attributes": ["acorn-import-attributes@1.9.5", "", { "peerDependencies": { "acorn": "^8" } }, "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ=="],
- "adm-zip": ["adm-zip@0.5.17", "", {}, "sha512-+Ut8d9LLqwEvHHJl1+PIHqoyDxFgVN847JTVM3Izi3xHDWPE4UtzzXysMZQs64DMcrJfBeS/uoEP4AD3HQHnQQ=="],
+ "adm-zip": ["adm-zip@0.6.0", "", {}, "sha512-XleryMhbuksdKtofnWZ9Sk+4CUTbms4Mb/EU32SZwToAyZ5RgVos/ki8n+yr0LWHOGKuakbXTuuYNHLQjhddgg=="],
"agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
"aggregate-error": ["aggregate-error@3.1.0", "", { "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="],
- "ajv": ["ajv@8.12.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", "uri-js": "^4.2.2" } }, "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA=="],
+ "ajv": ["ajv@8.18.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A=="],
"ansi-colors": ["ansi-colors@1.1.0", "", { "dependencies": { "ansi-wrap": "^0.1.0" } }, "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA=="],
@@ -357,6 +366,8 @@
"anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="],
+ "anynum": ["anynum@1.0.1", "", {}, "sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A=="],
+
"archiver": ["archiver@8.0.0", "", { "dependencies": { "async": "^3.2.4", "buffer-crc32": "^1.0.0", "is-stream": "^4.0.0", "lazystream": "^1.0.0", "normalize-path": "^3.0.0", "readable-stream": "^4.0.0", "readdir-glob": "^3.0.0", "tar-stream": "^3.0.0", "zip-stream": "^7.0.2" } }, "sha512-fV1orZfsnPn9BaSByR/qE67rJCLJEy2Ox5bq7nJh+jquWaNh6Sfec75kJ2T6PtdGUbPQlrVoSVCEOa5SdiTQ1g=="],
"argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="],
@@ -387,25 +398,25 @@
"available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="],
- "axe-core": ["axe-core@4.11.4", "", {}, "sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA=="],
+ "axe-core": ["axe-core@4.13.0", "", {}, "sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A=="],
"b4a": ["b4a@1.8.1", "", { "peerDependencies": { "react-native-b4a": "*" }, "optionalPeers": ["react-native-b4a"] }, "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw=="],
"bach": ["bach@2.0.1", "", { "dependencies": { "async-done": "^2.0.0", "async-settle": "^2.0.0", "now-and-later": "^3.0.0" } }, "sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg=="],
- "balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
+ "backstopjs": ["backstopjs@6.3.25", "", { "dependencies": { "@mirzazeyrek/node-resemble-js": "^1.2.1", "chalk": "^4.1.2", "diverged": "^0.1.3", "fs-extra": "^11.2.0", "jump.js": "^1.0.2", "junit-report-builder": "^3.1.0", "lodash": "^4.17.21", "minimist": "^1.2.8", "object-hash": "3.0.0", "opn": "^6.0.0", "os": "^0.1.2", "p-map": "^4.0.0", "path": "^0.12.7", "playwright": "^1.40.1", "portfinder": "^1.0.32", "puppeteer": "^22.1.0", "super-simple-web-server": "^1.1.4", "temp": "^0.9.4" }, "bin": { "backstop": "cli/index.js" } }, "sha512-jy0dxlk45tItXLcj9zjRTCyCa6D27M9OMK5kM8To0ELLclKhI/dWn/igUTMBBMJXe4Kql+CGyDRErMtTv2+40Q=="],
- "bare-events": ["bare-events@2.8.3", "", { "peerDependencies": { "bare-abort-controller": "*" }, "optionalPeers": ["bare-abort-controller"] }, "sha512-HdUm8EMQBLaJvGUdidNNbqpA1kYkwNcb+MYxkxCLAPJGQzlv9J0C24h8V65Z4c5GLd/JEALDvpFCQgpLJqc0zw=="],
+ "balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
- "bare-fs": ["bare-fs@4.7.1", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4", "bare-url": "^2.2.2", "fast-fifo": "^1.3.2" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw=="],
+ "bare-events": ["bare-events@2.9.2", "", { "peerDependencies": { "bare-abort-controller": "*" }, "optionalPeers": ["bare-abort-controller"] }, "sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA=="],
- "bare-os": ["bare-os@3.9.1", "", {}, "sha512-6M5XjcnsygQNPMCMPXSK379xrJFiZ/AEMNBmFEmQW8d/789VQATvriyi5r0HYTL9TkQ26rn3kgdTG3aisbrXkQ=="],
+ "bare-fs": ["bare-fs@4.8.1", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4", "bare-url": "^2.2.2", "fast-fifo": "^1.3.2" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-N1nnXdHZAOSstz0XiHikGS4HGMH4CnSwhqWdGQQMqqdvp4Jybm9sE3R1WVnpWVd4SFkc8ryPDBLViNLwiEqECg=="],
- "bare-path": ["bare-path@3.0.0", "", { "dependencies": { "bare-os": "^3.0.1" } }, "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw=="],
+ "bare-path": ["bare-path@3.1.2", "", {}, "sha512-ZyKbsuuqK6Ag0K8pX6V5Txq6XeJRvY+wXucnFGRjiyVYP9YWDpIQugk/b+enRYrEYBJaqLzghRQpXPMR7341Nw=="],
- "bare-stream": ["bare-stream@2.13.1", "", { "dependencies": { "streamx": "^2.25.0", "teex": "^1.0.1" }, "peerDependencies": { "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-abort-controller", "bare-buffer", "bare-events"] }, "sha512-Vp0cnjYyrEC4whYTymQ+YZi6pBpfiICZO3cfRG8sy67ZNWe951urv1x4eW1BKNngw3U+3fPYb5JQvHbCtxH7Ow=="],
+ "bare-stream": ["bare-stream@2.13.4", "", { "dependencies": { "b4a": "^1.8.1", "streamx": "^2.25.0", "teex": "^1.0.1" }, "peerDependencies": { "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-abort-controller", "bare-buffer", "bare-events"] }, "sha512-PcrQ8lVLbiJscNm1Kez+Yp4Gy4AHGcN1lzwjvf5NybWen7VvEgUfyfnXYJ2zNqWnzOfCb1Abq6lH8ti0syQszA=="],
- "bare-url": ["bare-url@2.4.3", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-Kccpc7ACfXaxfeInfqKcZtW4pT5YBn1mesc4sCsun6sRwtbJ4h+sNOaksUpYEJUKfN65YWC6Bw2OJEFiKxq8nQ=="],
+ "bare-url": ["bare-url@2.5.4", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-Gxa7UVWBr0/edU1b+TJhn/AZvMQUj9OGspvYsaTYQrAbZA4BOTZGL3LiZxvD+CeMlDH4juwD84+eTAp/bLYW5g=="],
"base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
@@ -413,17 +424,17 @@
"before-after-hook": ["before-after-hook@2.2.3", "", {}, "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ=="],
- "bestzip": ["bestzip@3.0.2", "", { "dependencies": { "archiver": "^8.0.0", "glob": "^13.0.6", "which": "^6.0.1", "yargs": "^16.2.0" }, "bin": { "bestzip": "bin/cli.js" } }, "sha512-Zxl7GRh4HQdR4KD/WS+CBrN2aVIs8wa+ozSLrISyxVNG7kl/nragWeHL3vZRfF+UGWO707WjRjboN9CoPBl5kg=="],
+ "bestzip": ["bestzip@3.0.3", "", { "dependencies": { "archiver": "^8.0.0", "glob": "^13.0.6", "which": "^6.0.1", "yargs": "^16.2.0" }, "bin": { "bestzip": "bin/cli.js" } }, "sha512-3UpGCm+bn1uGuPD0ro2d+jFL7wG+632Lo710L6VmJVubxsw3ED0QrDqH+jxktPg8b+0e92cYO6J2zC5FJ2gyvw=="],
"binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="],
"bl": ["bl@5.1.0", "", { "dependencies": { "buffer": "^6.0.3", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ=="],
- "body-parser": ["body-parser@1.20.5", "", { "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "~1.2.0", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", "qs": "~6.15.1", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" } }, "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA=="],
+ "body-parser": ["body-parser@1.20.6", "", { "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "~1.2.0", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", "qs": "~6.15.1", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" } }, "sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g=="],
"bottleneck": ["bottleneck@2.19.5", "", {}, "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw=="],
- "brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="],
+ "brace-expansion": ["brace-expansion@5.0.9", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg=="],
"braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
@@ -447,6 +458,8 @@
"call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="],
+ "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="],
+
"camel-case": ["camel-case@4.1.2", "", { "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" } }, "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw=="],
"capital-case": ["capital-case@1.0.4", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", "upper-case-first": "^2.0.2" } }, "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A=="],
@@ -455,7 +468,7 @@
"change-case": ["change-case@4.1.2", "", { "dependencies": { "camel-case": "^4.1.2", "capital-case": "^1.0.4", "constant-case": "^3.0.4", "dot-case": "^3.0.4", "header-case": "^2.0.4", "no-case": "^3.0.4", "param-case": "^3.0.4", "pascal-case": "^3.1.2", "path-case": "^3.0.4", "sentence-case": "^3.0.4", "snake-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A=="],
- "chardet": ["chardet@2.1.1", "", {}, "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ=="],
+ "chardet": ["chardet@2.2.0", "", {}, "sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA=="],
"chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="],
@@ -489,6 +502,8 @@
"compress-commons": ["compress-commons@7.0.1", "", { "dependencies": { "crc-32": "^1.2.0", "crc32-stream": "^7.0.1", "is-stream": "^4.0.0", "normalize-path": "^3.0.0", "readable-stream": "^4.0.0" } }, "sha512-g0S8KAD8qf4+V//pr3BfB1aBnARLXNz2Gx+jmHU0LEriUuoQUOPOulVquHKTJ8+EAIIO7fhseNDr9wK5Q9FKBQ=="],
+ "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
+
"configstore": ["configstore@7.1.0", "", { "dependencies": { "atomically": "^2.0.3", "dot-prop": "^9.0.0", "graceful-fs": "^4.2.11", "xdg-basedir": "^5.1.0" } }, "sha512-N4oog6YJWbR9kGyXvS7jEykLDXIE2C0ILYqNBZBp9iwiJpoCBWYsuAdW6PPFn6w06jjnC+3JstVvWHO4cZqvRg=="],
"constant-case": ["constant-case@3.0.4", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", "upper-case": "^2.0.2" } }, "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ=="],
@@ -509,6 +524,8 @@
"core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="],
+ "cosmiconfig": ["cosmiconfig@9.0.2", "", { "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg=="],
+
"crc-32": ["crc-32@1.2.2", "", { "bin": { "crc32": "bin/crc32.njs" } }, "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="],
"crc32-stream": ["crc32-stream@7.0.1", "", { "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^4.0.0" } }, "sha512-IBWsY8xznyQrcHn8h4bC8/4ErNke5elzgG8GcqF4RFPw6aHkWWRc7Tgw6upjaTX/CT/yQgqYENkxYsTYN+hW2g=="],
@@ -519,6 +536,8 @@
"data-uri-to-buffer": ["data-uri-to-buffer@6.0.2", "", {}, "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw=="],
+ "date-format": ["date-format@4.0.3", "", {}, "sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ=="],
+
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
"decimal.js": ["decimal.js@10.6.0", "", {}, "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg=="],
@@ -547,14 +566,20 @@
"devtools-protocol": ["devtools-protocol@0.0.1507524", "", {}, "sha512-OjaNE7qpk6GRTXtqQjAE5bGx6+c4F1zZH0YXtpZQLM92HNXx4zMAaqlKhP4T52DosG6hDW8gPMNhGOF8xbwk/w=="],
+ "diff": ["diff@3.5.1", "", {}, "sha512-Z3u54A8qGyqFOSr2pk0ijYs8mOE9Qz8kTvtKeBI+upoG9j04Sq+oI7W8zAJiQybDcESET8/uIdHzs0p3k4fZlw=="],
+
"diff3": ["diff3@0.0.3", "", {}, "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g=="],
+ "diverged": ["diverged@0.1.3", "", { "dependencies": { "diff": "^3.5.0", "pixelmatch": "^4.0.2", "pngjs": "^3.3.3", "super-simple-web-server": "^1.0.0" } }, "sha512-W8BLyp4Eo+YW9uQ3F5c9BXDT9ITCARA2CFQVb+v57FWYfkr0XjwNOASZacDCq+syk1i/obZ4BZ3w1qtlRO6hQw=="],
+
"docker-compose": ["docker-compose@0.24.8", "", { "dependencies": { "yaml": "^2.2.2" } }, "sha512-plizRs/Vf15H+GCVxq2EUvyPK7ei9b/cVesHvjnX4xaXjM9spHe2Ytq0BitndFgvTJ3E3NljPNUEl7BAN43iZw=="],
"dot-case": ["dot-case@3.0.4", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w=="],
"dot-prop": ["dot-prop@9.0.0", "", { "dependencies": { "type-fest": "^4.18.2" } }, "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ=="],
+ "dotenv": ["dotenv@17.4.2", "", {}, "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw=="],
+
"dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
"each-props": ["each-props@3.0.0", "", { "dependencies": { "is-plain-object": "^5.0.0", "object.defaults": "^1.1.0" } }, "sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw=="],
@@ -573,11 +598,15 @@
"enquirer": ["enquirer@2.4.1", "", { "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" } }, "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ=="],
+ "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="],
+
+ "error-ex": ["error-ex@1.3.4", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ=="],
+
"es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
"es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
- "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],
+ "es-object-atoms": ["es-object-atoms@1.1.2", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="],
"escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="],
@@ -603,7 +632,7 @@
"expand-tilde": ["expand-tilde@2.0.2", "", { "dependencies": { "homedir-polyfill": "^1.0.1" } }, "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw=="],
- "express": ["express@4.22.0", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "~1.20.3", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "~1.3.1", "fresh": "~0.5.2", "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "~0.19.0", "serve-static": "~1.16.2", "setprototypeof": "1.2.0", "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-c2iPh3xp5vvCLgaHK03+mWLFPhox7j1LwyxcZwFVApEv5i0X+IjPpbT50SJJwwLpdBVfp45AkK/v+AFgv/XlfQ=="],
+ "express": ["express@4.22.2", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "~1.20.5", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "~1.3.1", "fresh": "~0.5.2", "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", "qs": "~6.15.1", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "~0.19.0", "serve-static": "~1.16.2", "setprototypeof": "1.2.0", "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q=="],
"extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="],
@@ -617,13 +646,15 @@
"fast-levenshtein": ["fast-levenshtein@3.0.0", "", { "dependencies": { "fastest-levenshtein": "^1.0.7" } }, "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ=="],
- "fast-xml-builder": ["fast-xml-builder@1.2.0", "", { "dependencies": { "path-expression-matcher": "^1.5.0", "xml-naming": "^0.1.0" } }, "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q=="],
+ "fast-uri": ["fast-uri@3.1.7", "", {}, "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg=="],
+
+ "fast-xml-builder": ["fast-xml-builder@1.3.1", "", { "dependencies": { "path-expression-matcher": "^1.6.2", "xml-naming": "^0.3.0" } }, "sha512-pIM/1n3ntFXKYrUZwW7QCK0gAW7XY+wzj1YMIV3tLDvPj/V+zTGJK5e3/4WJfwj0qWw2ElNXiTixda/R+3YSug=="],
- "fast-xml-parser": ["fast-xml-parser@5.8.0", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.2.0", "path-expression-matcher": "^1.5.0", "strnum": "^2.3.0", "xml-naming": "^0.1.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg=="],
+ "fast-xml-parser": ["fast-xml-parser@5.11.1", "", { "dependencies": { "@nodable/entities": "^3.0.0", "fast-xml-builder": "^1.2.0", "is-unsafe": "^2.0.0", "path-expression-matcher": "^1.6.2", "strnum": "^2.4.2", "xml-naming": "^0.3.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-TBw6K/fxoQGGjCmZDw9w/ZwP3uDcnTM4YH/g+PFRWr8sbe5idXtxNN6vITh4+1ruCZaho6uBFurElsA7F0zzgw=="],
"fastest-levenshtein": ["fastest-levenshtein@1.0.16", "", {}, "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg=="],
- "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="],
+ "fastq": ["fastq@1.20.3", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw=="],
"fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="],
@@ -653,11 +684,13 @@
"fs-ext-extra-prebuilt": ["fs-ext-extra-prebuilt@2.2.7", "", { "dependencies": { "nan": "^2.24.0" } }, "sha512-Q7rayYRBDIvDF01HWOwSSjoaP+05N1g+o3BXL1Zf8Frw2JkjSmi4EtvCBITuW30l6hB2m2TW1pehdh8wyU/+gw=="],
- "fs-extra": ["fs-extra@11.1.1", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ=="],
+ "fs-extra": ["fs-extra@11.4.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA=="],
"fs-mkdirp-stream": ["fs-mkdirp-stream@2.0.1", "", { "dependencies": { "graceful-fs": "^4.2.8", "streamx": "^2.12.0" } }, "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw=="],
- "fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="],
+ "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="],
+
+ "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
"function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
@@ -717,7 +750,7 @@
"has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="],
- "hasown": ["hasown@2.0.3", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg=="],
+ "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="],
"header-case": ["header-case@2.0.4", "", { "dependencies": { "capital-case": "^1.0.4", "tslib": "^2.0.3" } }, "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q=="],
@@ -727,7 +760,7 @@
"http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="],
- "http-link-header": ["http-link-header@1.1.3", "", {}, "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ=="],
+ "http-link-header": ["http-link-header@1.1.4", "", {}, "sha512-xT3GPW6/ZbGuw4UvwHqErSCEjNUlwbQJuZn9/q5U4WEKfp2kENVCAlousG1zLxHeaQ/ffOHUNpWamvkbBW0eNw=="],
"http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="],
@@ -743,13 +776,17 @@
"image-ssim": ["image-ssim@0.2.0", "", {}, "sha512-W7+sO6/yhxy83L0G7xR8YAc5Z5QFtYEXXRV6EaE8tuYBZJnA3gVgp3q7X7muhLZVodeb9UfvjSbwt9VJwjIYAg=="],
- "immutable": ["immutable@5.1.5", "", {}, "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A=="],
+ "immutable": ["immutable@5.1.9", "", {}, "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg=="],
+
+ "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="],
"import-in-the-middle": ["import-in-the-middle@1.15.0", "", { "dependencies": { "acorn": "^8.14.0", "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^1.2.2", "module-details-from-path": "^1.0.3" } }, "sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA=="],
"indent-string": ["indent-string@4.0.0", "", {}, "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="],
- "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
+ "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="],
+
+ "inherits": ["inherits@2.0.3", "", {}, "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="],
"ini": ["ini@4.1.2", "", {}, "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw=="],
@@ -757,12 +794,14 @@
"intl-messageformat": ["intl-messageformat@10.7.18", "", { "dependencies": { "@formatjs/ecma402-abstract": "2.3.6", "@formatjs/fast-memoize": "2.2.7", "@formatjs/icu-messageformat-parser": "2.11.4", "tslib": "^2.8.0" } }, "sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g=="],
- "ip-address": ["ip-address@10.2.0", "", {}, "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA=="],
+ "ip-address": ["ip-address@10.7.0", "", {}, "sha512-BGFsyJd5mpXp3rK6jIdADLNgpJUK1jnjzvYF8lK+VyDab9JAmqN0YOKDdP17HlgKb2+ehPgDc8EtnRLbGCAMhA=="],
"ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="],
"is-absolute": ["is-absolute@1.0.0", "", { "dependencies": { "is-relative": "^1.0.0", "is-windows": "^1.0.1" } }, "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA=="],
+ "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="],
+
"is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="],
"is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="],
@@ -785,7 +824,7 @@
"is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
- "is-plain-object": ["is-plain-object@5.0.0", "", {}, "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="],
+ "is-plain-object": ["is-plain-object@5.1.0", "", {}, "sha512-bUi/yjmtKYcRVUtWRGr0UA6xEFh2I6zWUwMrUXB3s7bmYCaZ8a+0ZsTRkrawh/mzlSD1Y0Ph8bp/U+TvBpWDNw=="],
"is-relative": ["is-relative@1.0.0", "", { "dependencies": { "is-unc-path": "^1.0.0" } }, "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA=="],
@@ -795,11 +834,13 @@
"is-unc-path": ["is-unc-path@1.0.0", "", { "dependencies": { "unc-path-regex": "^0.1.2" } }, "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ=="],
+ "is-unsafe": ["is-unsafe@2.0.2", "", {}, "sha512-HgbIHPBH0KHHCcjLfGsCvhtPTVxjaAZlXjwdz7/GQC40SjSe4sfQsar8J5VFo8JOSbarkpV0OLG95bbaNd9aAQ=="],
+
"is-valid-glob": ["is-valid-glob@1.0.0", "", {}, "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA=="],
"is-windows": ["is-windows@1.0.2", "", {}, "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="],
- "is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="],
+ "is-wsl": ["is-wsl@1.1.0", "", {}, "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw=="],
"isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="],
@@ -815,10 +856,14 @@
"js-library-detector": ["js-library-detector@6.7.0", "", {}, "sha512-c80Qupofp43y4cJ7+8TTDN/AsDwLi5oOm/plBrWI+iQt485vKXCco+yVmOwEgdo9VOdsYTuV0UlTeetVPTriXA=="],
- "js-yaml": ["js-yaml@3.15.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag=="],
+ "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
+
+ "js-yaml": ["js-yaml@3.15.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w=="],
"json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="],
+ "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="],
+
"json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="],
"jsonc-parser": ["jsonc-parser@3.3.1", "", {}, "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="],
@@ -827,6 +872,10 @@
"jsonwebtoken": ["jsonwebtoken@9.0.3", "", { "dependencies": { "jws": "^4.0.1", "lodash.includes": "^4.3.0", "lodash.isboolean": "^3.0.3", "lodash.isinteger": "^4.0.4", "lodash.isnumber": "^3.0.3", "lodash.isplainobject": "^4.0.6", "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", "ms": "^2.1.1", "semver": "^7.5.4" } }, "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g=="],
+ "jump.js": ["jump.js@1.0.2", "", {}, "sha512-oUkJJ/Y4ATU5qjkXBntCZSKctbSyS3ewe2jrLaUu/cc9jsQiAn0fnTUxQnZz3mJdDdem1Q279zrD6h3n+Cgxtg=="],
+
+ "junit-report-builder": ["junit-report-builder@3.2.1", "", { "dependencies": { "date-format": "4.0.3", "lodash": "^4.17.21", "make-dir": "^3.1.0", "xmlbuilder": "^15.1.1" } }, "sha512-IMCp5XyDQ4YESDE4Za7im3buM0/7cMnRfe17k2X8B05FnUl9vqnaliX6cgOEmPIeWKfJrEe/gANRq/XgqttCqQ=="],
+
"jwa": ["jwa@2.0.1", "", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="],
"jws": ["jws@4.0.1", "", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="],
@@ -849,6 +898,10 @@
"lighthouse-stack-packs": ["lighthouse-stack-packs@1.12.2", "", {}, "sha512-Ug8feS/A+92TMTCK6yHYLwaFMuelK/hAKRMdldYkMNwv+d9PtWxjXEg6rwKtsUXTADajhdrhXyuNCJ5/sfmPFw=="],
+ "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="],
+
+ "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="],
+
"lodash-es": ["lodash-es@4.18.1", "", {}, "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A=="],
"lodash.clonedeep": ["lodash.clonedeep@4.5.0", "", {}, "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="],
@@ -875,7 +928,9 @@
"lowercase-keys": ["lowercase-keys@2.0.0", "", {}, "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="],
- "lru-cache": ["lru-cache@11.3.6", "", {}, "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A=="],
+ "lru-cache": ["lru-cache@11.5.2", "", {}, "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g=="],
+
+ "make-dir": ["make-dir@3.1.0", "", { "dependencies": { "semver": "^6.0.0" } }, "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw=="],
"make-error": ["make-error@1.3.6", "", {}, "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="],
@@ -907,7 +962,7 @@
"mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="],
- "minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="],
+ "minimatch": ["minimatch@10.2.6", "", { "dependencies": { "brace-expansion": "^5.0.8" } }, "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A=="],
"minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="],
@@ -917,6 +972,8 @@
"mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="],
+ "mkdirp": ["mkdirp@0.5.6", "", { "dependencies": { "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="],
+
"module-details-from-path": ["module-details-from-path@1.0.4", "", {}, "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w=="],
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
@@ -925,7 +982,7 @@
"mute-stream": ["mute-stream@0.0.8", "", {}, "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="],
- "nan": ["nan@2.27.0", "", {}, "sha512-hC+0LidcL3XE4rp1C4H54KujgXKzbfyTngZTwBByQxsOxCEKZT0MPQ4hOKUH2jU1OYstqdDH4onyHPDzcV0XdQ=="],
+ "nan": ["nan@2.28.0", "", {}, "sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ=="],
"negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="],
@@ -941,6 +998,8 @@
"now-and-later": ["now-and-later@3.0.0", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg=="],
+ "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="],
+
"object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="],
"object.defaults": ["object.defaults@1.1.0", "", { "dependencies": { "array-each": "^1.0.1", "array-slice": "^1.0.0", "for-own": "^1.0.0", "isobject": "^3.0.0" } }, "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA=="],
@@ -957,10 +1016,16 @@
"open": ["open@8.4.2", "", { "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="],
+ "opn": ["opn@6.0.0", "", { "dependencies": { "is-wsl": "^1.1.0" } }, "sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ=="],
+
"ora": ["ora@4.1.1", "", { "dependencies": { "chalk": "^3.0.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.2.0", "is-interactive": "^1.0.0", "log-symbols": "^3.0.0", "mute-stream": "0.0.8", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" } }, "sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A=="],
+ "os": ["os@0.1.2", "", {}, "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ=="],
+
"p-cancelable": ["p-cancelable@2.1.1", "", {}, "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg=="],
+ "p-map": ["p-map@4.0.0", "", { "dependencies": { "aggregate-error": "^3.0.0" } }, "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="],
+
"pac-proxy-agent": ["pac-proxy-agent@7.2.0", "", { "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", "socks-proxy-agent": "^8.0.5" } }, "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA=="],
"pac-resolver": ["pac-resolver@7.0.1", "", { "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" } }, "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg=="],
@@ -971,19 +1036,27 @@
"param-case": ["param-case@3.0.4", "", { "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A=="],
+ "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
+
"parse-cache-control": ["parse-cache-control@1.0.1", "", {}, "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg=="],
"parse-filepath": ["parse-filepath@1.0.2", "", { "dependencies": { "is-absolute": "^1.0.0", "map-cache": "^0.2.0", "path-root": "^0.1.1" } }, "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q=="],
+ "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="],
+
"parse-passwd": ["parse-passwd@1.0.0", "", {}, "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q=="],
"parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="],
"pascal-case": ["pascal-case@3.1.2", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g=="],
+ "path": ["path@0.12.7", "", { "dependencies": { "process": "^0.11.1", "util": "^0.10.3" } }, "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q=="],
+
"path-case": ["path-case@3.0.4", "", { "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg=="],
- "path-expression-matcher": ["path-expression-matcher@1.5.0", "", {}, "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ=="],
+ "path-expression-matcher": ["path-expression-matcher@1.6.2", "", {}, "sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ=="],
+
+ "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="],
"path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
@@ -1001,22 +1074,28 @@
"pg-int8": ["pg-int8@1.0.1", "", {}, "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="],
- "pg-protocol": ["pg-protocol@1.13.0", "", {}, "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w=="],
+ "pg-protocol": ["pg-protocol@1.16.0", "", {}, "sha512-sILXutLVjCLjcDuOmvhX5e2Z4cS5qG/6Bu3VkpFwdf/633ElGLpEh9bgmuI5I4sqKqkifQiGyiCcx1HdtrK7tg=="],
"pg-types": ["pg-types@2.2.0", "", { "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", "postgres-bytea": "~1.0.0", "postgres-date": "~1.0.4", "postgres-interval": "^1.1.0" } }, "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA=="],
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
- "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="],
+ "picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="],
"pify": ["pify@4.0.1", "", {}, "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="],
- "playwright": ["playwright@1.62.1", "", { "dependencies": { "playwright-core": "1.62.1" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg=="],
+ "pixelmatch": ["pixelmatch@4.0.2", "", { "dependencies": { "pngjs": "^3.0.0" }, "bin": { "pixelmatch": "bin/pixelmatch" } }, "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA=="],
+
+ "playwright": ["playwright@1.63.0", "", { "dependencies": { "playwright-core": "1.63.0" }, "bin": { "playwright": "cli.js" } }, "sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg=="],
"playwright-core": ["playwright-core@1.62.1", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw=="],
"plugin-error": ["plugin-error@1.0.1", "", { "dependencies": { "ansi-colors": "^1.0.1", "arr-diff": "^4.0.0", "arr-union": "^3.1.0", "extend-shallow": "^3.0.2" } }, "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA=="],
+ "pngjs": ["pngjs@6.0.0", "", {}, "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg=="],
+
+ "portfinder": ["portfinder@1.0.38", "", { "dependencies": { "async": "^3.2.6", "debug": "^4.3.6" } }, "sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg=="],
+
"possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="],
"postgres-array": ["postgres-array@2.0.0", "", {}, "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="],
@@ -1041,11 +1120,11 @@
"pump": ["pump@3.0.4", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA=="],
- "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
+ "puppeteer": ["puppeteer@22.15.0", "", { "dependencies": { "@puppeteer/browsers": "2.3.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1312386", "puppeteer-core": "22.15.0" }, "bin": { "puppeteer": "lib/esm/puppeteer/node/cli.js" } }, "sha512-XjCY1SiSEi1T7iSYuxS82ft85kwDJUS7wj1Z0eGVXKdtr5g4xnVcbjwxhq5xBnpK/E7x1VZZoJDxpjAOasHT4Q=="],
"puppeteer-core": ["puppeteer-core@24.43.1", "", { "dependencies": { "@puppeteer/browsers": "2.13.2", "chromium-bidi": "14.0.0", "debug": "^4.4.3", "devtools-protocol": "0.0.1608973", "typed-query-selector": "^2.12.2", "webdriver-bidi-protocol": "0.4.1", "ws": "^8.20.0" } }, "sha512-T5ScUMAsmhdNbgDR41AGESYeS6V9MSgetkSnVhhW+gXvzC42VesKCn5ld87gAZDJ6vLHL9GkRvY9WtQWSnwFbw=="],
- "qs": ["qs@6.14.2", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q=="],
+ "qs": ["qs@6.15.3", "", { "dependencies": { "es-define-property": "^1.0.1", "side-channel": "^1.1.1" } }, "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A=="],
"quick-lru": ["quick-lru@5.1.1", "", {}, "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="],
@@ -1057,7 +1136,7 @@
"readdir-glob": ["readdir-glob@3.0.0", "", { "dependencies": { "minimatch": "^10.2.2" } }, "sha512-AhNB2KgKeVJr16nK9LLZbJNWnYoT23ZrumNKFDebHBdkC8KHSqWo871JAUhoWC/RtjEVdqNMFpM6qrwRbaUqpw=="],
- "readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="],
+ "readdirp": ["readdirp@5.1.1", "", {}, "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA=="],
"rechoir": ["rechoir@0.8.0", "", { "dependencies": { "resolve": "^1.20.0" } }, "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ=="],
@@ -1079,6 +1158,8 @@
"resolve-dir": ["resolve-dir@1.0.1", "", { "dependencies": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" } }, "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg=="],
+ "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
+
"resolve-options": ["resolve-options@2.0.0", "", { "dependencies": { "value-or-function": "^4.0.0" } }, "sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A=="],
"responselike": ["responselike@2.0.1", "", { "dependencies": { "lowercase-keys": "^2.0.0" } }, "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw=="],
@@ -1095,11 +1176,11 @@
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
- "sass": ["sass@1.102.0", "", { "dependencies": { "chokidar": "^5.0.0", "immutable": "^5.1.5", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": { "sass": "sass.js" } }, "sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw=="],
+ "sass": ["sass@1.104.0", "", { "dependencies": { "chokidar": "^5.0.0", "immutable": "^5.1.5", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": { "sass": "sass.js" } }, "sha512-btHMApW2bgolvClhRW8AlQJzgI9lUB3pPSofBQQT+E46GWvf9o0TVQ13SYv5riWZVFyPN+JNz3TKW9XhBlc10w=="],
- "sax": ["sax@1.6.0", "", {}, "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA=="],
+ "sax": ["sax@1.6.1", "", {}, "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q=="],
- "semver": ["semver@7.8.0", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA=="],
+ "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
"semver-greatest-satisfied-range": ["semver-greatest-satisfied-range@2.0.0", "", { "dependencies": { "sver": "^1.8.3" } }, "sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g=="],
@@ -1121,7 +1202,7 @@
"shimmer": ["shimmer@1.2.1", "", {}, "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw=="],
- "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="],
+ "side-channel": ["side-channel@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4", "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ=="],
"side-channel-list": ["side-channel-list@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" } }, "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="],
@@ -1141,7 +1222,7 @@
"snake-case": ["snake-case@3.0.4", "", { "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg=="],
- "socks": ["socks@2.8.9", "", { "dependencies": { "ip-address": "^10.1.1", "smart-buffer": "^4.2.0" } }, "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw=="],
+ "socks": ["socks@2.8.10", "", { "dependencies": { "ip-address": "^10.1.1", "smart-buffer": "^4.2.0" } }, "sha512-e0VyvkVTwVYViNovRkZ9aodhxVlyoMn7eJhVUPxZ+eK9P/7CBkxvvsBOHqFPEH416726W8tLXXXjKwqgTErrCQ=="],
"socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="],
@@ -1161,7 +1242,7 @@
"stream-exhaust": ["stream-exhaust@1.0.2", "", {}, "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw=="],
- "streamx": ["streamx@2.25.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg=="],
+ "streamx": ["streamx@2.28.1", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA=="],
"string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
@@ -1173,35 +1254,41 @@
"strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
- "strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="],
+ "strnum": ["strnum@2.4.2", "", { "dependencies": { "anynum": "^1.0.1" } }, "sha512-rDG3Ah4TV0k1hWvLSzkZtMmLN9+eS+h3knq4MP6A42Y3Yh5qGNnOUs1jJkoSr8FG5dsL28c7KgkIBzSEykqtuw=="],
"stubborn-fs": ["stubborn-fs@2.0.0", "", { "dependencies": { "stubborn-utils": "^1.0.1" } }, "sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA=="],
"stubborn-utils": ["stubborn-utils@1.0.2", "", {}, "sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg=="],
+ "super-simple-web-server": ["super-simple-web-server@1.1.4", "", { "dependencies": { "express": "^4.16.3" } }, "sha512-sQdVXz8ZDBMloocL63mifyVVzhxP55MlO2F0MiYJAJQiHTp42M2C3m2dZBIxGkcC7NUDr1/p0UhvGQvOsxZLpw=="],
+
"supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
"supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="],
"sver": ["sver@1.8.4", "", { "optionalDependencies": { "semver": "^6.3.0" } }, "sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA=="],
- "tar-fs": ["tar-fs@3.1.2", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw=="],
+ "tar-fs": ["tar-fs@3.1.3", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-/hU4AXnIdZu+Gvl1pk0oI5f5HxWsCJRtY2aFaJdk9VvyL48DWU6iU5WAIPG+wIi1YvWA6eTJvIviP/tMAZZNwQ=="],
- "tar-stream": ["tar-stream@3.2.0", "", { "dependencies": { "b4a": "^1.6.4", "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg=="],
+ "tar-stream": ["tar-stream@3.2.1", "", { "dependencies": { "b4a": "^1.6.4", "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-nqsEO8zLZJvrOMdEwkA0QdCLFbetHMn95Zqu4fKwX+hkaTWJPZZOrxx/PwtxoK0MMGQmBQNRW3CPs8IFYQz4cQ=="],
"teex": ["teex@1.0.1", "", { "dependencies": { "streamx": "^2.12.5" } }, "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg=="],
+ "temp": ["temp@0.9.4", "", { "dependencies": { "mkdirp": "^0.5.1", "rimraf": "~2.6.2" } }, "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA=="],
+
"text-decoder": ["text-decoder@1.2.7", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ=="],
"third-party-web": ["third-party-web@0.27.0", "", {}, "sha512-h0JYX+dO2Zr3abCQpS6/uFjujaOjA1DyDzGQ41+oFn9VW/ARiq9g5ln7qEP9+BTzDpOMyIfsfj4OvfgXAsMUSA=="],
+ "through": ["through@2.3.8", "", {}, "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="],
+
"through2": ["through2@3.0.1", "", { "dependencies": { "readable-stream": "2 || 3" } }, "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww=="],
- "tldts-core": ["tldts-core@7.0.30", "", {}, "sha512-uiHN8PIB1VmWyS98eZYja4xzlYqeFZVjb4OuYlJQnZAuJhMw4PbKQOKgHKhBdJR3FE/t5mUQ1Kd80++B+qhD1Q=="],
+ "tldts-core": ["tldts-core@7.4.11", "", {}, "sha512-CW3WN2rIIE/Of21mulhgnGOwoDyEFNygyIBOONSdyAuSATgMMUCpLeUlB+E8sAwA5xRV9hYPl+kyZ9citHCaKg=="],
- "tldts-icann": ["tldts-icann@7.0.30", "", { "dependencies": { "tldts-core": "^7.0.30" } }, "sha512-o+sKcCCZQOh78GHfpmlcKoef0c+UVfltkqmgKmUHWiMiUhSfer8k5mEkQL2RBqwuC90fluI7ZN50H7+I2bJ1jw=="],
+ "tldts-icann": ["tldts-icann@7.4.11", "", { "dependencies": { "tldts-core": "^7.4.11" } }, "sha512-1p+NDJ7FUYCliESmsQl9EW5Um8JIyFheiy6Y6ZoHho27d+TLAGFa0gMf1VOVy02vNY1aQo6xeKiaGj45+7P+PA=="],
- "tmp": ["tmp@0.2.5", "", {}, "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow=="],
+ "tmp": ["tmp@0.2.7", "", {}, "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw=="],
"tmp-promise": ["tmp-promise@3.0.3", "", { "dependencies": { "tmp": "^0.2.0" } }, "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ=="],
@@ -1225,6 +1312,8 @@
"uglify-js": ["uglify-js@3.19.3", "", { "bin": { "uglifyjs": "bin/uglifyjs" } }, "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ=="],
+ "unbzip2-stream": ["unbzip2-stream@1.4.3", "", { "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" } }, "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg=="],
+
"unc-path-regex": ["unc-path-regex@0.1.2", "", {}, "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg=="],
"undertaker": ["undertaker@2.0.0", "", { "dependencies": { "bach": "^2.0.1", "fast-levenshtein": "^3.0.0", "last-run": "^2.0.0", "undertaker-registry": "^2.0.0" } }, "sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ=="],
@@ -1245,7 +1334,9 @@
"upper-case-first": ["upper-case-first@2.0.2", "", { "dependencies": { "tslib": "^2.0.3" } }, "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg=="],
- "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="],
+ "urlpattern-polyfill": ["urlpattern-polyfill@10.0.0", "", {}, "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg=="],
+
+ "util": ["util@0.10.4", "", { "dependencies": { "inherits": "2.0.3" } }, "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A=="],
"util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
@@ -1279,7 +1370,7 @@
"which": ["which@6.0.1", "", { "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" } }, "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg=="],
- "which-typed-array": ["which-typed-array@1.1.20", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg=="],
+ "which-typed-array": ["which-typed-array@1.1.22", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.9", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw=="],
"wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
@@ -1287,15 +1378,15 @@
"wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
- "ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="],
+ "ws": ["ws@7.5.13", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA=="],
"xdg-basedir": ["xdg-basedir@5.1.0", "", {}, "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ=="],
- "xml-naming": ["xml-naming@0.1.0", "", {}, "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw=="],
+ "xml-naming": ["xml-naming@0.3.0", "", {}, "sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ=="],
"xml2js": ["xml2js@0.6.2", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA=="],
- "xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="],
+ "xmlbuilder": ["xmlbuilder@15.1.1", "", {}, "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg=="],
"xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="],
@@ -1303,7 +1394,7 @@
"yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="],
- "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
+ "yargs": ["yargs@17.7.3", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g=="],
"yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
@@ -1315,11 +1406,13 @@
"zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
+ "zstddec": ["zstddec@0.2.0", "", {}, "sha512-oyPnDa1X5c13+Y7mA/FDMNJrn4S8UNBe0KCqtDmor40Re7ALrPN6npFwyYVRRh+PqozZQdeg23QtbcamZnG5rA=="],
+
"@inquirer/core/mute-stream": ["mute-stream@2.0.0", "", {}, "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA=="],
"@inquirer/core/wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="],
- "@inquirer/external-editor/iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="],
+ "@inquirer/external-editor/iconv-lite": ["iconv-lite@0.7.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ=="],
"@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="],
@@ -1353,41 +1446,39 @@
"@opentelemetry/core/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="],
+ "@opentelemetry/instrumentation/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="],
+
"@opentelemetry/instrumentation-http/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="],
+ "@opentelemetry/instrumentation-http/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="],
+
"@opentelemetry/resources/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="],
"@opentelemetry/sdk-trace-base/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="],
"@paulirish/trace_engine/third-party-web": ["third-party-web@0.29.2", "", {}, "sha512-fegtha91tq2DHphyoiBXVHjVi2YG9zFaRnboT9C28tO1en9Y3wJsfspuy40F+u5wl3hHVbw7cnd1b67kEGHb8g=="],
- "@php-wasm/node/ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="],
-
- "@php-wasm/xdebug-bridge/ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="],
+ "@php-wasm/node/ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="],
- "@sentry/node/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="],
-
- "@types/cacheable-request/@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="],
-
- "@types/connect/@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="],
+ "@php-wasm/xdebug-bridge/ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="],
- "@types/jsonwebtoken/@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="],
+ "@php-wasm/xdebug-bridge/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
- "@types/keyv/@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="],
+ "@puppeteer/browsers/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="],
- "@types/mysql/@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="],
-
- "@types/pg/@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="],
+ "@sentry/node/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="],
- "@types/responselike/@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="],
+ "@types/pg-pool/@types/pg": ["@types/pg@8.23.1", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-fKVHpikPdg4GKks3JuLEhvwSyvwzF23hnabPy6DD8ljVbC7+6J5dQzdv4arV6jqq57djnMgs1HKBxX4P8aBI3A=="],
- "@types/tedious/@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="],
+ "@wp-playground/cli/fs-extra": ["fs-extra@11.1.1", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ=="],
- "@types/yauzl/@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="],
+ "@wp-playground/cli/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
"anymatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="],
- "bestzip/yargs": ["yargs@16.2.0", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="],
+ "bestzip/yargs": ["yargs@16.2.2", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w=="],
+
+ "bl/inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
"bl/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],
@@ -1395,16 +1486,18 @@
"body-parser/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="],
- "body-parser/qs": ["qs@6.15.1", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg=="],
-
- "chrome-launcher/@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="],
+ "chrome-launcher/is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="],
"clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="],
+ "cosmiconfig/js-yaml": ["js-yaml@4.3.2", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA=="],
+
"cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
"defaults/clone": ["clone@1.0.4", "", {}, "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="],
+ "diverged/pngjs": ["pngjs@3.4.0", "", {}, "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="],
+
"enquirer/ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="],
"express/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
@@ -1421,25 +1514,41 @@
"gulp-cli/gulplog": ["gulplog@2.2.0", "", { "dependencies": { "glogg": "^2.2.0" } }, "sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A=="],
- "gulp-cli/yargs": ["yargs@16.2.0", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="],
+ "gulp-cli/yargs": ["yargs@16.2.2", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w=="],
"gulp-uglify/through2": ["through2@2.0.5", "", { "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" } }, "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ=="],
+ "http-errors/inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
+
"is-extendable/is-plain-object": ["is-plain-object@2.0.4", "", { "dependencies": { "isobject": "^3.0.1" } }, "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="],
+ "jsonwebtoken/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="],
+
"lazystream/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="],
"log-symbols/chalk": ["chalk@2.4.2", "", { "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="],
"micromatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="],
+ "open/is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="],
+
"ora/chalk": ["chalk@3.0.0", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg=="],
+ "pixelmatch/pngjs": ["pngjs@3.4.0", "", {}, "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="],
+
+ "playwright/playwright-core": ["playwright-core@1.63.0", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg=="],
+
"proxy-agent/lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="],
+ "puppeteer/devtools-protocol": ["devtools-protocol@0.0.1312386", "", {}, "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA=="],
+
+ "puppeteer/puppeteer-core": ["puppeteer-core@22.15.0", "", { "dependencies": { "@puppeteer/browsers": "2.3.0", "chromium-bidi": "0.6.3", "debug": "^4.3.6", "devtools-protocol": "0.0.1312386", "ws": "^8.18.0" } }, "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA=="],
+
+ "puppeteer-core/@puppeteer/browsers": ["@puppeteer/browsers@2.13.2", "", { "dependencies": { "debug": "^4.4.3", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", "semver": "^7.7.4", "tar-fs": "^3.1.1", "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" } }, "sha512-5EUZSUIc37H6aIXyWO0Z4y8NlF8NnjgmqeQgOGiswAU7pY0HOo16ho4+alIWmSfdZnjqBRawMsP3I5YqLSn6kw=="],
+
"puppeteer-core/devtools-protocol": ["devtools-protocol@0.0.1608973", "", {}, "sha512-Tpm17fxYzt+J7VrGdc1k8YdRqS3YV7se/M6KeemEqvUbq/n7At1rWVuXMxQgpWkdwSdIEKYbU//Bve+Shm4YNQ=="],
- "puppeteer-core/ws": ["ws@8.20.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w=="],
+ "puppeteer-core/ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="],
"raw-body/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="],
@@ -1451,21 +1560,25 @@
"send/mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="],
- "speedline-core/@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="],
+ "sha.js/inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
- "sver/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
+ "temp/rimraf": ["rimraf@2.6.3", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "./bin.js" } }, "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA=="],
"through2/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],
"to-buffer/isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="],
+ "unbzip2-stream/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="],
+
"vinyl-sourcemaps-apply/source-map": ["source-map@0.5.7", "", {}, "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="],
+ "xml2js/xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="],
+
"yauzl/buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="],
"@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="],
- "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="],
+ "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="],
"@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
@@ -1491,25 +1604,7 @@
"@octokit/request/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@24.2.0", "", {}, "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="],
- "@sentry/node/minimatch/brace-expansion": ["brace-expansion@2.1.0", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w=="],
-
- "@types/cacheable-request/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
-
- "@types/connect/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
-
- "@types/jsonwebtoken/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
-
- "@types/keyv/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
-
- "@types/mysql/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
-
- "@types/pg/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
-
- "@types/responselike/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
-
- "@types/tedious/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
-
- "@types/yauzl/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
+ "@sentry/node/minimatch/brace-expansion": ["brace-expansion@2.1.4", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg=="],
"bestzip/yargs/cliui": ["cliui@7.0.4", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="],
@@ -1517,7 +1612,7 @@
"body-parser/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
- "chrome-launcher/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
+ "cosmiconfig/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
"cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
@@ -1525,8 +1620,6 @@
"finalhandler/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
- "glob-watcher/chokidar/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
-
"glob-watcher/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="],
"global-prefix/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
@@ -1539,6 +1632,8 @@
"gulp-uglify/through2/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="],
+ "lazystream/readable-stream/inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
+
"lazystream/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="],
"lazystream/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="],
@@ -1549,13 +1644,21 @@
"log-symbols/chalk/supports-color": ["supports-color@5.5.0", "", { "dependencies": { "has-flag": "^3.0.0" } }, "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="],
+ "puppeteer-core/@puppeteer/browsers/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="],
+
+ "puppeteer/puppeteer-core/chromium-bidi": ["chromium-bidi@0.6.3", "", { "dependencies": { "mitt": "3.0.1", "urlpattern-polyfill": "10.0.0", "zod": "3.23.8" }, "peerDependencies": { "devtools-protocol": "*" } }, "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A=="],
+
+ "puppeteer/puppeteer-core/ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="],
+
"rimraf/glob/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="],
"rimraf/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="],
"send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
- "speedline-core/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
+ "temp/rimraf/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="],
+
+ "through2/readable-stream/inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
"@sentry/node/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
@@ -1563,6 +1666,8 @@
"gulp-cli/gulplog/glogg/sparkles": ["sparkles@2.1.0", "", {}, "sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg=="],
+ "gulp-uglify/through2/readable-stream/inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
+
"gulp-uglify/through2/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="],
"gulp-uglify/through2/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="],
@@ -1571,12 +1676,22 @@
"log-symbols/chalk/supports-color/has-flag": ["has-flag@3.0.0", "", {}, "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="],
- "rimraf/glob/minimatch/brace-expansion": ["brace-expansion@2.1.0", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w=="],
+ "puppeteer/puppeteer-core/chromium-bidi/zod": ["zod@3.23.8", "", {}, "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g=="],
+
+ "rimraf/glob/minimatch/brace-expansion": ["brace-expansion@2.1.4", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg=="],
"rimraf/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
+ "temp/rimraf/glob/inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
+
+ "temp/rimraf/glob/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="],
+
"log-symbols/chalk/ansi-styles/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="],
"rimraf/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
+
+ "temp/rimraf/glob/minimatch/brace-expansion": ["brace-expansion@1.1.18", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw=="],
+
+ "temp/rimraf/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
}
}
diff --git a/composer.json b/composer.json
index 43cbdfd..8d3746b 100644
--- a/composer.json
+++ b/composer.json
@@ -11,7 +11,7 @@
"nutrition"
],
"homepage": "https://wordpress.org/plugins/cooked/",
- "version": "1.16.0",
+ "version": "1.16.1",
"type": "wordpress-plugin",
"license": "GPL-2.0-or-later",
"authors": [
diff --git a/composer.lock b/composer.lock
index e1da5c6..e11fc1e 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "867ea208066f04f2fd8c088bac57cff8",
+ "content-hash": "46923b3513153f90896e6b66e390670e",
"packages": [
{
"name": "nxp/math-executor",
@@ -521,16 +521,16 @@
},
{
"name": "php-stubs/wordpress-stubs",
- "version": "v6.9.4",
+ "version": "v7.1.0",
"source": {
"type": "git",
"url": "https://github.com/php-stubs/wordpress-stubs.git",
- "reference": "90a9412826b9944f93b10bf41d795b5fe68abcd5"
+ "reference": "394570301894799e69a4aa117c9c995427e3ba04"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/90a9412826b9944f93b10bf41d795b5fe68abcd5",
- "reference": "90a9412826b9944f93b10bf41d795b5fe68abcd5",
+ "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/394570301894799e69a4aa117c9c995427e3ba04",
+ "reference": "394570301894799e69a4aa117c9c995427e3ba04",
"shasum": ""
},
"conflict": {
@@ -540,13 +540,13 @@
"dealerdirect/phpcodesniffer-composer-installer": "^1.0",
"nikic/php-parser": "^5.5",
"php": "^7.4 || ^8.0",
- "php-stubs/generator": "^0.8.6",
+ "php-stubs/generator": "^0.9",
"phpdocumentor/reflection-docblock": "^6.0",
- "phpstan/phpstan": "^2.1",
+ "phpstan/phpstan": "^2.2",
"phpunit/phpunit": "^9.5",
"symfony/polyfill-php80": "*",
- "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^1.1.1",
- "wp-coding-standards/wpcs": "3.1.0 as 2.3.0"
+ "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^1.2",
+ "wp-coding-standards/wpcs": "3.4.1 as 2.3.0"
},
"suggest": {
"paragonie/sodium_compat": "Pure PHP implementation of libsodium",
@@ -567,9 +567,9 @@
],
"support": {
"issues": "https://github.com/php-stubs/wordpress-stubs/issues",
- "source": "https://github.com/php-stubs/wordpress-stubs/tree/v6.9.4"
+ "source": "https://github.com/php-stubs/wordpress-stubs/tree/v7.1.0"
},
- "time": "2026-05-01T20:36:01+00:00"
+ "time": "2026-08-28T00:32:06+00:00"
},
{
"name": "phpcompatibility/php-compatibility",
@@ -1024,11 +1024,11 @@
},
{
"name": "phpstan/phpstan",
- "version": "2.2.8",
+ "version": "2.2.13",
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e285254e60f33c21902efef4a926ca0987c06804",
- "reference": "e285254e60f33c21902efef4a926ca0987c06804",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9ba9ac76ee9c5cf5b56d58eb5deec6315b7a0260",
+ "reference": "9ba9ac76ee9c5cf5b56d58eb5deec6315b7a0260",
"shasum": ""
},
"require": {
@@ -1084,7 +1084,7 @@
"type": "github"
}
],
- "time": "2026-08-04T22:21:45+00:00"
+ "time": "2026-09-03T20:38:19+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -2592,21 +2592,21 @@
},
{
"name": "szepeviktor/phpstan-wordpress",
- "version": "v2.0.3",
+ "version": "v2.0.4",
"source": {
"type": "git",
"url": "https://github.com/szepeviktor/phpstan-wordpress.git",
- "reference": "aa722f037b2d034828cd6c55ebe9e5c74961927e"
+ "reference": "84577e2ea1e4c2a95537fe5ea2ac8e18f4ceab1a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/szepeviktor/phpstan-wordpress/zipball/aa722f037b2d034828cd6c55ebe9e5c74961927e",
- "reference": "aa722f037b2d034828cd6c55ebe9e5c74961927e",
+ "url": "https://api.github.com/repos/szepeviktor/phpstan-wordpress/zipball/84577e2ea1e4c2a95537fe5ea2ac8e18f4ceab1a",
+ "reference": "84577e2ea1e4c2a95537fe5ea2ac8e18f4ceab1a",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0",
- "php-stubs/wordpress-stubs": "^6.6.2",
+ "php-stubs/wordpress-stubs": ">=6.6.2",
"phpstan/phpstan": "^2.0"
},
"require-dev": {
@@ -2649,9 +2649,9 @@
],
"support": {
"issues": "https://github.com/szepeviktor/phpstan-wordpress/issues",
- "source": "https://github.com/szepeviktor/phpstan-wordpress/tree/v2.0.3"
+ "source": "https://github.com/szepeviktor/phpstan-wordpress/tree/v2.0.4"
},
- "time": "2025-09-14T02:58:22+00:00"
+ "time": "2026-05-22T16:22:09+00:00"
},
{
"name": "theseer/tokenizer",
diff --git a/cooked.php b/cooked.php
index ea0c1d0..6efd735 100644
--- a/cooked.php
+++ b/cooked.php
@@ -5,13 +5,13 @@
* Description: A recipe plugin for WordPress.
* Author: Gora Tech
* Author URI: https://goratech.dev
- * Version: 1.16.0
+ * Version: 1.16.1
* Text Domain: cooked
* Domain Path: /languages
* License: GPLv2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Requires at least: 6.8
- * Tested up to: 7.0
+ * Tested up to: 7.1
* Requires PHP: 7.4
* Contributors: xjsv, boxystudio
* Tags: recipe, recipes, food, cooking, nutrition
@@ -40,7 +40,7 @@
require_once __DIR__ . '/vendor/autoload.php';
define( 'COOKED_DEV', false );
-define( 'COOKED_VERSION', '1.16.0' );
+define( 'COOKED_VERSION', '1.16.1' );
if ( ! class_exists( 'Cooked_Plugin' ) ) :
@@ -535,6 +535,7 @@ public function load_textdomain() {
load_textdomain( 'cooked', $lang_file_ext );
} else {
// Load the default language files.
+ // phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound -- Bundled /languages .mo files.
load_plugin_textdomain( 'cooked', false, COOKED_FOLDER . '/languages' );
}
}
diff --git a/includes/class.cooked-admin-enqueues.php b/includes/class.cooked-admin-enqueues.php
index 3bd71cc..0e48c5b 100644
--- a/includes/class.cooked-admin-enqueues.php
+++ b/includes/class.cooked-admin-enqueues.php
@@ -170,6 +170,9 @@ public function admin_enqueues( $hook ) {
'i18n_last_calculated' => __( 'Last: %1$s · %2$s recipes', 'cooked' ),
'wp_editor_roles_allowed' => esc_attr($wp_editor_roles_allowed),
'cooked_bulk_add_nonce' => wp_create_nonce( 'cooked_bulk_add' ),
+ 'cooked_import_nonce' => wp_create_nonce( 'cooked_admin_import' ),
+ 'cooked_migrate_nonce' => wp_create_nonce( 'cooked_migrate_recipes' ),
+ 'cooked_import_recipes_nonce' => wp_create_nonce( 'cooked_import_recipes' ),
'i18n_bulk_add_ingredients' => __( 'Bulk Add Ingredients', 'cooked' ),
'i18n_bulk_add_directions' => __( 'Bulk Add Directions', 'cooked' ),
'i18n_bulk_add_placeholder_ingredients' => __( "2 cups flour\n1 tsp salt\n1/2 cup sugar\n3 large eggs", 'cooked' ),
diff --git a/includes/class.cooked-admin-menus.php b/includes/class.cooked-admin-menus.php
index f0f7572..a1d2745 100644
--- a/includes/class.cooked-admin-menus.php
+++ b/includes/class.cooked-admin-menus.php
@@ -87,7 +87,7 @@ public function parent_file_filter($parent_file) {
// Settings Panel
public function cooked_settings_page() {
if (!current_user_can('edit_cooked_settings')) {
- wp_die(__('You do not have sufficient permissions to access this page.', 'cooked'));
+ wp_die(esc_html__('You do not have sufficient permissions to access this page.', 'cooked'));
}
include COOKED_DIR . 'templates/admin/settings.php';
@@ -96,7 +96,7 @@ public function cooked_settings_page() {
// Import Page
public function cooked_import_page() {
if (!current_user_can('edit_cooked_settings')) {
- wp_die(__('You do not have sufficient permissions to access this page.', 'cooked'));
+ wp_die(esc_html__('You do not have sufficient permissions to access this page.', 'cooked'));
}
include COOKED_DIR . 'templates/admin/import.php';
@@ -105,7 +105,7 @@ public function cooked_import_page() {
// Welcome Page
public function cooked_welcome_content() {
if (!current_user_can('edit_cooked_settings')) {
- wp_die(__('You do not have sufficient permissions to access this page.', 'cooked'));
+ wp_die(esc_html__('You do not have sufficient permissions to access this page.', 'cooked'));
}
include COOKED_DIR . 'templates/admin/welcome.php';
@@ -114,7 +114,7 @@ public function cooked_welcome_content() {
// Cooked Pro
public function cooked_pro() {
if (!current_user_can('edit_cooked_settings')) {
- wp_die(__('You do not have sufficient permissions to access this page.', 'cooked'));
+ wp_die(esc_html__('You do not have sufficient permissions to access this page.', 'cooked'));
}
include COOKED_DIR . 'templates/admin/pro.php';
diff --git a/includes/class.cooked-ajax.php b/includes/class.cooked-ajax.php
index 2f01fe9..f9c8b8d 100644
--- a/includes/class.cooked-ajax.php
+++ b/includes/class.cooked-ajax.php
@@ -62,10 +62,43 @@ function __construct() {
add_action( 'wp_ajax_nopriv_cooked_parse_bulk_ingredients', [&$this, 'parse_bulk_ingredients'] );
}
- public function get_migrate_ids() {
- if (!current_user_can('edit_cooked_recipes')):
+ private static function recipe_ids_from_json( $json ) {
+ $decoded = json_decode( $json, true );
+ if ( ! is_array( $decoded ) || empty( $decoded ) ) {
+ return [];
+ }
+
+ $ids = [];
+ foreach ( $decoded as $rid ) {
+ $safe_id = absint( $rid );
+ if ( $safe_id ) {
+ $ids[] = $safe_id;
+ }
+ }
+
+ return $ids;
+ }
+
+ private static function sanitize_import_type( $import_type ) {
+ if ( ! in_array( $import_type, [ 'delicious_recipes', 'wp_recipe_maker' ], true ) ) {
+ return '';
+ }
+ return $import_type;
+ }
+
+ private static function require_settings_ajax( $nonce_action ) {
+ check_ajax_referer( $nonce_action, 'nonce' );
+ if ( ! current_user_can( 'edit_cooked_settings' ) ) {
wp_die();
- endif;
+ }
+ }
+
+ private static function user_can_edit_post_of_type( $post_id, $post_type ) {
+ return $post_type && get_post_type( $post_id ) === $post_type && current_user_can( 'edit_post', $post_id );
+ }
+
+ public function get_migrate_ids() {
+ self::require_settings_ajax( 'cooked_migrate_recipes' );
$old_recipes = get_transient('cooked_classic_recipes');
if ($old_recipes != 'complete'):
@@ -84,15 +117,13 @@ public function get_migrate_ids() {
}
public function get_import_ids() {
- if (!current_user_can('edit_cooked_recipes')):
- wp_die();
- endif;
-
- $import_type = $_POST['import_type'];
+ self::require_settings_ajax( 'cooked_import_recipes' );
+ $import_type = isset( $_POST['import_type'] ) ? sanitize_key( wp_unslash( $_POST['import_type'] ) ) : '';
+ $import_type = self::sanitize_import_type( $import_type );
$recipes = [];
- if ($import_type === 'delicious_recipes') {
+ if ( $import_type === 'delicious_recipes' ) {
$args = [
'post_type' => 'recipe',
'posts_per_page' => -1,
@@ -105,7 +136,7 @@ public function get_import_ids() {
],
],
];
- } elseif ($import_type === 'wp_recipe_maker') {
+ } elseif ( $import_type === 'wp_recipe_maker' ) {
$args = [
'post_type' => 'wprm_recipe',
'posts_per_page' => -1,
@@ -119,6 +150,9 @@ public function get_import_ids() {
],
],
];
+ } else {
+ echo 'false';
+ wp_die();
}
$_recipes = new WP_Query( $args );
@@ -147,133 +181,102 @@ public function get_import_ids() {
public function migrate_recipes() {
$bulk_amount = 10;
- if (!current_user_can('edit_cooked_recipes')) {
+ self::require_settings_ajax( 'cooked_migrate_recipes' );
+
+ $recipe_ids = self::recipe_ids_from_json( isset( $_POST['recipe_ids'] ) ? wp_unslash( $_POST['recipe_ids'] ) : '' ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- JSON decoded then absint in recipe_ids_from_json.
+ if ( empty( $recipe_ids ) ) {
wp_die();
}
- if ( isset($_POST['recipe_ids']) ) {
- // Sanitize Recipe IDs
- $recipe_ids = json_decode( $_POST['recipe_ids'], true );
+ $leftover_recipe_ids = array_slice( $recipe_ids, $bulk_amount );
+ $recipe_ids = array_slice( $recipe_ids, 0, $bulk_amount );
- if ( is_array( $recipe_ids ) && !empty( $recipe_ids ) ) {
- $_recipe_ids = [];
- foreach ( $recipe_ids as $_rid ) {
- $safe_id = intval( $_rid );
- if ( $safe_id ) {
- $_recipe_ids[] = $_rid;
- }
+ if ( ! empty( $recipe_ids ) ) {
+ foreach ( $recipe_ids as $rid ) {
+ if ( ! self::user_can_edit_post_of_type( $rid, 'cp_recipe' ) ) {
+ continue;
}
- $recipe_ids = $_recipe_ids;
- } else {
- return false;
- }
-
- $leftover_recipe_ids = array_slice( $recipe_ids, $bulk_amount );
- $recipe_ids = array_slice( $recipe_ids, 0, $bulk_amount );
-
- if ( !empty($recipe_ids) ) {
- foreach( $recipe_ids as $rid ) {
-
- $recipe_settings = Cooked_Recipes::get_settings( $rid );
-
- if ( !empty( $recipe_settings ) && !isset( $recipe_settings['cooked_version'] ) || !empty( $recipe_settings ) && isset( $recipe_settings['cooked_version'] ) && !$recipe_settings['cooked_version'] ) {
- $recipe_settings['cooked_version'] = COOKED_VERSION;
+ $recipe_settings = Cooked_Recipes::get_settings( $rid );
- // Migrate the recipe settings.
- update_post_meta( $rid, '_recipe_settings', $recipe_settings );
- $recipe_excerpt = isset($recipe_settings['excerpt']) && $recipe_settings['excerpt'] ? $recipe_settings['excerpt'] : get_the_title( $rid );
+ if ( ! empty( $recipe_settings ) && ! isset( $recipe_settings['cooked_version'] ) || ! empty( $recipe_settings ) && isset( $recipe_settings['cooked_version'] ) && ! $recipe_settings['cooked_version'] ) {
+ $recipe_settings['cooked_version'] = COOKED_VERSION;
+ update_post_meta( $rid, '_recipe_settings', $recipe_settings );
+ $recipe_excerpt = isset( $recipe_settings['excerpt'] ) && $recipe_settings['excerpt'] ? $recipe_settings['excerpt'] : get_the_title( $rid );
- $seo_content = apply_filters( 'cooked_seo_recipe_content', '[cooked-excerpt]' . __('Ingredients','cooked') . ' [cooked-ingredients checkboxes=false]' . __('Directions','cooked') . ' [cooked-directions numbers=false]' );
- $seo_content = do_shortcode( $seo_content );
+ $seo_content = apply_filters( 'cooked_seo_recipe_content', '[cooked-excerpt]' . __( 'Ingredients', 'cooked' ) . ' [cooked-ingredients checkboxes=false]' . __( 'Directions', 'cooked' ) . ' [cooked-directions numbers=false]' );
+ $seo_content = do_shortcode( $seo_content );
- wp_update_post([
- 'ID' => $rid,
- 'post_excerpt' => $recipe_excerpt,
- 'post_content' => $seo_content
- ]);
-
- }
- }
-
- if ( !empty( $leftover_recipe_ids ) ) {
- echo wp_json_encode( $leftover_recipe_ids );
- wp_die();
+ wp_update_post( [
+ 'ID' => $rid,
+ 'post_excerpt' => $recipe_excerpt,
+ 'post_content' => $seo_content,
+ ] );
}
-
}
- set_transient( 'cooked_classic_recipes', 'complete', 60 * 60 * 24 * 7 );
- echo 'false';
- wp_die();
-
+ if ( ! empty( $leftover_recipe_ids ) ) {
+ echo wp_json_encode( $leftover_recipe_ids );
+ wp_die();
+ }
}
+ set_transient( 'cooked_classic_recipes', 'complete', 60 * 60 * 24 * 7 );
+ echo 'false';
wp_die();
}
public function import_recipes() {
- if (!current_user_can('edit_cooked_recipes')) {
- wp_die();
- }
+ self::require_settings_ajax( 'cooked_import_recipes' );
require_once COOKED_DIR . 'includes/class.cooked-delicious-recipes.php';
require_once COOKED_DIR . 'includes/class.cooked-recipe-maker.php';
$bulk_amount = 10;
+ $recipe_ids = self::recipe_ids_from_json( isset( $_POST['recipe_ids'] ) ? wp_unslash( $_POST['recipe_ids'] ) : '' ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- JSON decoded then absint in recipe_ids_from_json.
+ $import_type = isset( $_POST['import_type'] ) ? sanitize_key( wp_unslash( $_POST['import_type'] ) ) : '';
+ $import_type = self::sanitize_import_type( $import_type );
- if ( isset($_POST['recipe_ids']) ) {
- // Sanitize Recipe IDs
- $recipe_ids = json_decode( $_POST['recipe_ids'], true );
-
- if ( is_array( $recipe_ids ) && !empty( $recipe_ids ) ) {
- $_recipe_ids = [];
- foreach ( $recipe_ids as $_rid ) {
- $safe_id = intval( $_rid );
- if ( $safe_id ) {
- $_recipe_ids[] = $_rid;
- }
- }
- $recipe_ids = $_recipe_ids;
- } else {
- return false;
- }
-
- $leftover_recipe_ids = array_slice( $recipe_ids, $bulk_amount );
- $recipe_ids = array_slice( $recipe_ids, 0, $bulk_amount );
+ if ( empty( $recipe_ids ) || ! $import_type ) {
+ wp_die();
+ }
- $import_type = $_POST['import_type'];
+ $expected_type = $import_type === 'delicious_recipes' ? 'recipe' : 'wprm_recipe';
+ $leftover_recipe_ids = array_slice( $recipe_ids, $bulk_amount );
+ $recipe_ids = array_slice( $recipe_ids, 0, $bulk_amount );
- if ( !empty($recipe_ids) ) {
- foreach ( $recipe_ids as $rid ) {
- if ($import_type === 'delicious_recipes') {
- Cooked_Delicious_Recipes::import_recipe( $rid );
- } elseif ($import_type === 'wp_recipe_maker') {
- Cooked_Recipe_Maker_Recipes::import_recipe( $rid );
- }
+ if ( ! empty( $recipe_ids ) ) {
+ foreach ( $recipe_ids as $rid ) {
+ if ( ! self::user_can_edit_post_of_type( $rid, $expected_type ) ) {
+ continue;
}
- if ( !empty( $leftover_recipe_ids ) ) {
- echo wp_json_encode( $leftover_recipe_ids );
- wp_die();
- } else {
- if ($import_type === 'delicious_recipes') {
- update_option( 'cooked_delicious_recipes_imported', true );
- } elseif ($import_type === 'wp_recipe_maker') {
- update_option( 'cooked_wp_recipe_maker_imported', true );
- }
+ if ( $import_type === 'delicious_recipes' ) {
+ Cooked_Delicious_Recipes::import_recipe( $rid );
+ } elseif ( $import_type === 'wp_recipe_maker' ) {
+ Cooked_Recipe_Maker_Recipes::import_recipe( $rid );
}
}
- echo 'false';
- wp_die();
+ if ( ! empty( $leftover_recipe_ids ) ) {
+ echo wp_json_encode( $leftover_recipe_ids );
+ wp_die();
+ }
+
+ if ( $import_type === 'delicious_recipes' ) {
+ update_option( 'cooked_delicious_recipes_imported', true );
+ } elseif ( $import_type === 'wp_recipe_maker' ) {
+ update_option( 'cooked_wp_recipe_maker_imported', true );
+ }
}
+ echo 'false';
wp_die();
}
public function get_recipe_ids() {
- if (!wp_verify_nonce($_POST['nonce'], 'cooked_save_default_bulk') || !current_user_can('edit_cooked_default_template')) {
+ $nonce = isset( $_POST['nonce'] ) ? wp_unslash( $_POST['nonce'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Verify nonce after unslash; do not sanitize_text_field a nonce.
+ if ( ! wp_verify_nonce( $nonce, 'cooked_save_default_bulk' ) || ! current_user_can( 'edit_cooked_default_template' ) ) {
wp_die();
}
@@ -290,7 +293,8 @@ public function get_recipe_ids() {
}
public function get_recipe_count() {
- if (!wp_verify_nonce($_POST['nonce'], 'cooked_save_default_bulk') || !current_user_can('edit_cooked_default_template')) {
+ $nonce = isset( $_POST['nonce'] ) ? wp_unslash( $_POST['nonce'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Verify nonce after unslash; do not sanitize_text_field a nonce.
+ if ( ! wp_verify_nonce( $nonce, 'cooked_save_default_bulk' ) || ! current_user_can( 'edit_cooked_default_template' ) ) {
wp_die();
}
@@ -308,16 +312,17 @@ public function get_recipe_count() {
public function save_default_bulk() {
$per_page = 20;
- if (!wp_verify_nonce($_POST['nonce'], 'cooked_save_default_bulk') || !current_user_can('edit_cooked_default_template')) {
+ $nonce = isset( $_POST['nonce'] ) ? wp_unslash( $_POST['nonce'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Verify nonce after unslash; do not sanitize_text_field a nonce.
+ if ( ! wp_verify_nonce( $nonce, 'cooked_save_default_bulk' ) || ! current_user_can( 'edit_cooked_default_template' ) ) {
wp_die();
}
- if (!isset($_POST['default_content'])) {
+ if ( ! isset( $_POST['default_content'] ) ) {
wp_send_json_error( [ 'message' => __( 'No default content provided.', 'cooked' ) ] );
}
- $page = isset($_POST['page']) ? absint($_POST['page']) : 0;
- $content = wp_kses_post($_POST['default_content']);
+ $page = isset( $_POST['page'] ) ? absint( wp_unslash( $_POST['page'] ) ) : 0;
+ $content = wp_kses_post( wp_unslash( $_POST['default_content'] ) );
$args = [
'post_type' => 'cp_recipe',
@@ -354,15 +359,16 @@ public function save_default_bulk() {
public function save_default() {
global $_cooked_settings;
- if (!wp_verify_nonce($_POST['nonce'], 'cooked_save_default') || !current_user_can('edit_cooked_default_template')) {
+ $nonce = isset( $_POST['nonce'] ) ? wp_unslash( $_POST['nonce'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Verify nonce after unslash; do not sanitize_text_field a nonce.
+ if ( ! wp_verify_nonce( $nonce, 'cooked_save_default' ) || ! current_user_can( 'edit_cooked_default_template' ) ) {
wp_die();
}
- if (isset($_POST['default_content'])) {
- $_cooked_settings['default_content'] = wp_kses_post( $_POST['default_content'] );
+ if ( isset( $_POST['default_content'] ) ) {
+ $_cooked_settings['default_content'] = wp_kses_post( wp_unslash( $_POST['default_content'] ) );
update_option('cooked_settings', $_cooked_settings);
} else {
- echo __( 'No default content provided.', 'cooked' );
+ echo esc_html__( 'No default content provided.', 'cooked' );
}
wp_die();
@@ -390,16 +396,23 @@ public function load_default() {
* Handle CSV file upload
*/
public function upload_csv() {
- if (!current_user_can('edit_cooked_recipes')) {
+ $nonce = isset( $_POST['nonce'] ) ? wp_unslash( $_POST['nonce'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Verify nonce after unslash; do not sanitize_text_field a nonce.
+ if ( ! wp_verify_nonce( $nonce, 'cooked_admin_import' ) || ! current_user_can( 'edit_cooked_settings' ) ) {
wp_send_json_error(['message' => __('You do not have permission to import recipes.', 'cooked')]);
}
- if (!isset($_FILES['csv_file']) || $_FILES['csv_file']['error'] !== UPLOAD_ERR_OK) {
+ if ( ! isset( $_FILES['csv_file'] ) || ! isset( $_FILES['csv_file']['error'] ) || UPLOAD_ERR_OK !== (int) $_FILES['csv_file']['error'] ) {
wp_send_json_error(['message' => __('File upload failed.', 'cooked')]);
}
+ $csv_name = isset( $_FILES['csv_file']['name'] ) ? sanitize_file_name( wp_unslash( $_FILES['csv_file']['name'] ) ) : '';
+ if ( ! $csv_name ) {
+ wp_send_json_error(['message' => __('File upload failed.', 'cooked')]);
+ }
+ $_FILES['csv_file']['name'] = $csv_name;
+
// Validate file type
- $file_type = wp_check_filetype($_FILES['csv_file']['name']);
+ $file_type = wp_check_filetype( $csv_name );
if ($file_type['ext'] !== 'csv') {
wp_send_json_error(['message' => __('Invalid file type. Please upload a CSV file.', 'cooked')]);
}
@@ -426,11 +439,12 @@ public function upload_csv() {
* Process CSV file and import recipes
*/
public function process_csv() {
- if (!current_user_can('edit_cooked_recipes')) {
+ $nonce = isset( $_POST['nonce'] ) ? wp_unslash( $_POST['nonce'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Verify nonce after unslash; do not sanitize_text_field a nonce.
+ if ( ! wp_verify_nonce( $nonce, 'cooked_admin_import' ) || ! current_user_can( 'edit_cooked_settings' ) ) {
wp_send_json_error(['message' => __('You do not have permission to import recipes.', 'cooked')]);
}
- $transient_key = isset($_POST['transient_key']) ? sanitize_text_field($_POST['transient_key']) : '';
+ $transient_key = isset( $_POST['transient_key'] ) ? sanitize_text_field( wp_unslash( $_POST['transient_key'] ) ) : '';
$file_path = get_transient($transient_key);
if (!$file_path || !file_exists($file_path)) {
@@ -443,13 +457,14 @@ public function process_csv() {
// Clean up
if (file_exists($file_path)) {
- @unlink($file_path);
+ wp_delete_file($file_path);
}
delete_transient($transient_key);
if ($results['success'] > 0) {
wp_send_json_success([
'message' => sprintf(
+ /* translators: %d: number of recipes imported */
__('Successfully imported %d recipe(s).', 'cooked'),
$results['success']
),
@@ -466,11 +481,12 @@ public function process_csv() {
}
public function parse_bulk_ingredients() {
- if ( ! check_ajax_referer( 'cooked_bulk_add', 'nonce', false ) ) {
+ $nonce = isset( $_POST['nonce'] ) ? wp_unslash( $_POST['nonce'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Verify nonce after unslash; do not sanitize_text_field a nonce.
+ if ( ! wp_verify_nonce( $nonce, 'cooked_bulk_add' ) ) {
wp_send_json_error( [ 'message' => __( 'Security check failed.', 'cooked' ) ] );
}
- $lines = isset( $_POST['lines'] ) ? (array) $_POST['lines'] : [];
+ $lines = isset( $_POST['lines'] ) ? wp_unslash( (array) $_POST['lines'] ) : []; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Each line is sanitize_text_field'd below.
if ( empty( $lines ) ) {
wp_send_json_error( [ 'message' => __( 'No ingredients provided.', 'cooked' ) ] );
@@ -505,7 +521,6 @@ public function parse_bulk_ingredients() {
// Do not use Cooked_Functions::sanitize_text_field() here — it runs htmlentities() and turns
// Unicode like en dash or ½ into – / ½, which breaks parsing and leaks into output.
$line = is_string( $line ) ? $line : '';
- $line = wp_unslash( $line );
$line = html_entity_decode( $line, ENT_QUOTES | ENT_HTML5, 'UTF-8' );
$line = trim( sanitize_text_field( $line ) );
diff --git a/includes/class.cooked-allergens.php b/includes/class.cooked-allergens.php
index e02cc01..f59bc44 100644
--- a/includes/class.cooked-allergens.php
+++ b/includes/class.cooked-allergens.php
@@ -271,7 +271,7 @@ public static function render_from_recipe( $recipe ) {
}
$recipe_settings = Cooked_Recipes::get_settings( $recipe['id'] );
- echo self::render( $recipe_settings );
+ echo wp_kses_post( self::render( $recipe_settings ) );
}
/**
@@ -361,8 +361,8 @@ public static function cooked_info_allergens( $recipe_settings ) {
}
echo '';
- echo '' . __( 'Allergens', 'cooked' ) . ' ';
- echo $html;
+ echo '' . esc_html__( 'Allergens', 'cooked' ) . ' ';
+ echo wp_kses_post( $html );
echo ' ';
}
diff --git a/includes/class.cooked-csv-import.php b/includes/class.cooked-csv-import.php
index 31adb38..ee3c25d 100644
--- a/includes/class.cooked-csv-import.php
+++ b/includes/class.cooked-csv-import.php
@@ -46,7 +46,7 @@ public static function import_from_file( $file_path ) {
/**
* Open and parse CSV file
*/
- $handle = fopen( $file_path, 'r' );
+ $handle = fopen( $file_path, 'r' ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fopen -- CSV row streaming.
if ( false === $handle ) {
$results['errors'][] = __( 'Could not open CSV file.', 'cooked' );
return $results;
@@ -58,7 +58,7 @@ public static function import_from_file( $file_path ) {
$headers = fgetcsv( $handle );
if ( false === $headers || empty( $headers ) ) {
$results['errors'][] = __( 'CSV file is empty or invalid.', 'cooked' );
- fclose( $handle );
+ fclose( $handle ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fclose -- CSV row streaming.
return $results;
}
@@ -73,7 +73,7 @@ public static function import_from_file( $file_path ) {
*/
if ( ! in_array( 'title', $headers ) ) {
$results['errors'][] = __( 'CSV file must contain a "title" column.', 'cooked' );
- fclose( $handle );
+ fclose( $handle ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fclose -- CSV row streaming.
return $results;
}
@@ -120,6 +120,7 @@ public static function import_from_file( $file_path ) {
}
} catch ( Exception $e ) {
$error_msg = $e->getMessage();
+ /* translators: 1: CSV row number, 2: error message */
$results['errors'][] = sprintf( __( 'Row %1$d: %2$s', 'cooked' ), $row_number, $error_msg );
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
@@ -131,7 +132,7 @@ public static function import_from_file( $file_path ) {
}
}
- fclose( $handle );
+ fclose( $handle ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fclose -- CSV row streaming.
return $results;
}
diff --git a/includes/class.cooked-enqueues.php b/includes/class.cooked-enqueues.php
index 8cb4671..2f9d67e 100644
--- a/includes/class.cooked-enqueues.php
+++ b/includes/class.cooked-enqueues.php
@@ -62,22 +62,23 @@ public function enqueues($hook) {
wp_enqueue_style('cooked-icons', COOKED_URL . 'assets/css/icons' . $min . '.css', [], COOKED_VERSION);
wp_enqueue_style('cooked-styling', COOKED_URL . 'assets/css/style' . $min . '.css', [], COOKED_VERSION );
wp_register_style('cooked-fotorama', COOKED_URL . 'assets/css/fotorama/fotorama.min.css', [], '4.6.4');
- wp_register_script('cooked-fotorama', COOKED_URL . 'assets/js/fotorama/fotorama' . $min . '.js', ['jquery'], '4.6.4');
- wp_register_script('cooked-timer', COOKED_URL . 'assets/js/timer/jquery.simple.timer' . $min . '.js', ['jquery'], '0.0.5');
- wp_register_script('cooked-nosleep', COOKED_URL . 'assets/js/nosleep/NoSleep' . $min . '.js', [], '0.12.0');
+ wp_register_script('cooked-fotorama', COOKED_URL . 'assets/js/fotorama/fotorama' . $min . '.js', ['jquery'], '4.6.4', true);
+ wp_register_script('cooked-timer', COOKED_URL . 'assets/js/timer/jquery.simple.timer' . $min . '.js', ['jquery'], '0.0.5', true);
+ wp_register_script('cooked-nosleep', COOKED_URL . 'assets/js/nosleep/NoSleep' . $min . '.js', [], '0.12.0', true);
// Compatibility with the Bridge Theme.
if (!defined('QODE_ROOT')) {
- wp_register_script('cooked-appear', COOKED_URL . 'assets/js/appear/jquery.appear' . $min . '.js', ['jquery'], '0.3.6');
+ wp_register_script('cooked-appear', COOKED_URL . 'assets/js/appear/jquery.appear' . $min . '.js', ['jquery'], '0.3.6', true);
}
wp_enqueue_script('wp-sanitize');
- wp_register_script('cooked-functions', COOKED_URL . 'assets/js/cooked-functions' . $min . '.js', ['jquery', 'wp-sanitize'], COOKED_VERSION);
+ wp_register_script('cooked-functions', COOKED_URL . 'assets/js/cooked-functions' . $min . '.js', ['jquery', 'wp-sanitize'], COOKED_VERSION, true);
wp_localize_script('cooked-functions', 'cooked_functions_i18n_js_vars', $cooked_i18n_js_vars);
wp_add_inline_script( 'cooked-functions', 'const cooked_functions_js_vars = ' . json_encode( $cooked_js_vars ) . ';', 'before' );
}
public function css_colors() {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Display-only print view flag.
if (!isset($_GET['print'])) {
$file = COOKED_DIR . 'assets/css/colors.php';
$css = self::get_dynamic_css($file);
@@ -86,6 +87,7 @@ public function css_colors() {
}
public function css_responsive() {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Display-only print view flag.
if (!isset($_GET['print'])) {
$file = COOKED_DIR . 'assets/css/responsive.php';
$css = self::get_dynamic_css($file);
diff --git a/includes/class.cooked-functions.php b/includes/class.cooked-functions.php
index 5b61300..c4ae09e 100644
--- a/includes/class.cooked-functions.php
+++ b/includes/class.cooked-functions.php
@@ -124,17 +124,17 @@ public static function print_options() {
echo ' ';
- echo '' . __( 'Print','cooked') . ' ';
- echo '
' . __( 'Print Options:','cooked') . ' ';
-
- echo ' ' . __('Title','cooked') . ' ';
- echo ' ' . __('Information','cooked') . ' ';
- echo ' ' . __('Excerpt','cooked') . ' ';
- echo ' ' . __('Images','cooked') . ' ';
- echo ' ' . __('Ingredients','cooked') . ' ';
- echo ' ' . __('Directions','cooked') . ' ';
- echo ' ' . __('Notes','cooked') . ' ';
- echo ' ' . __('Nutrition','cooked') . ' ';
+ echo '' . esc_html__( 'Print','cooked') . ' ';
+ echo '' . esc_html__( 'Print Options:','cooked') . ' ';
+
+ echo ' ' . esc_html__('Title','cooked') . ' ';
+ echo ' ' . esc_html__('Information','cooked') . ' ';
+ echo ' ' . esc_html__('Excerpt','cooked') . ' ';
+ echo ' ' . esc_html__('Images','cooked') . ' ';
+ echo ' ' . esc_html__('Ingredients','cooked') . ' ';
+ echo ' ' . esc_html__('Directions','cooked') . ' ';
+ echo ' ' . esc_html__('Notes','cooked') . ' ';
+ echo ' ' . esc_html__('Nutrition','cooked') . ' ';
echo '';
}
diff --git a/includes/class.cooked-import.php b/includes/class.cooked-import.php
index 11d1cd8..33e64b7 100644
--- a/includes/class.cooked-import.php
+++ b/includes/class.cooked-import.php
@@ -25,8 +25,12 @@ public function __construct() {
}
public static function init() {
- register_setting( 'cooked_import_group', 'cooked_import' );
- register_setting( 'cooked_import_group', 'cooked_import_saved' );
+ register_setting( 'cooked_import_group', 'cooked_import', ['sanitize_callback' => [__CLASS__, 'sanitize_saved_flag']] );
+ register_setting( 'cooked_import_group', 'cooked_import_saved', ['sanitize_callback' => [__CLASS__, 'sanitize_saved_flag']] );
+ }
+
+ public static function sanitize_saved_flag( $value ) {
+ return rest_sanitize_boolean( $value );
}
public static function tabs_fields() {
@@ -203,35 +207,35 @@ public static function field_import_button( $name, $field_options, $color, $fiel
if ($total > 0) {
echo '';
- echo ' ';
+ echo ' ';
echo '
';
echo '';
echo '0 / ' . esc_html( $total ) . ' ';
echo '
';
- echo 'Import Complete! You can now ' . __( 'reload', 'cooked' ) . ' the import screen.
';
+ echo 'Import Complete! You can now ' . esc_html__( 'reload', 'cooked' ) . ' the import screen.
';
}
}
public static function field_message( $name, $field_options, $color, $field ) {
- echo '' . $field['message'] . '
';
+ echo '' . wp_kses_post( $field['message'] ) . '
';
}
public static function field_csv_upload( $name, $field_options, $color, $field ) {
- echo '' . __( 'Download sample CSV files:', 'cooked' ) . ' ';
- echo '' . __( 'Small (1 recipe)', 'cooked' ) . ' , ';
- echo '' . __( 'Medium (3 recipes)', 'cooked' ) . ' , ';
- echo '' . __( 'Large (10 recipes)', 'cooked' ) . '
';
+ echo '' . esc_html__( 'Download sample CSV files:', 'cooked' ) . ' ';
+ echo '' . esc_html__( 'Small (1 recipe)', 'cooked' ) . ' , ';
+ echo '' . esc_html__( 'Medium (3 recipes)', 'cooked' ) . ' , ';
+ echo '' . esc_html__( 'Large (10 recipes)', 'cooked' ) . '
';
echo '';
}
diff --git a/includes/class.cooked-measurements.php b/includes/class.cooked-measurements.php
index ce70d19..06ea0ed 100644
--- a/includes/class.cooked-measurements.php
+++ b/includes/class.cooked-measurements.php
@@ -211,6 +211,10 @@ public static function nutrition_facts() {
// Use the "cooked_nutrition_facts" filter to add your own nutrition facts.
// Reference: https://www.fda.gov/food/nutrition-facts-label/daily-value-nutrition-and-supplement-facts-labels
+ $unit_g = __( 'g', 'cooked' );
+ $unit_mg = __( 'mg', 'cooked' );
+ $unit_mcg = __( 'mcg', 'cooked' );
+
$nutrition_facts = apply_filters('cooked_nutrition_facts', [
'top' => [
'servings' => [
@@ -234,67 +238,67 @@ public static function nutrition_facts() {
'fat' => [
'name' => __('Total Fat', 'cooked'),
'type' => 'number',
- 'measurement' => 'g',
+ 'measurement' => $unit_g,
'pdv' => apply_filters('cooked_pdv_fat', 78),
'subs' => [
'sat_fat' => [
'name' => __('Saturated Fat', 'cooked'),
'type' => 'number',
- 'measurement' => 'g',
+ 'measurement' => $unit_g,
'pdv' => apply_filters('cooked_pdv_satfat', 20)
],
'trans_fat' => [
'name' => __('Trans Fat', 'cooked'),
'nutrition_info_name' => __('Trans Fat', 'cooked'),
'type' => 'number',
- 'measurement' => 'g'
+ 'measurement' => $unit_g
],
'monounsaturated_fat' => [
'name' => __('Monounsaturated Fat', 'cooked'),
'type' => 'number',
- 'measurement' => 'g'
+ 'measurement' => $unit_g
],
'polyunsaturated_fat' => [
'name' => __('Polyunsaturated Fat', 'cooked'),
'type' => 'number',
- 'measurement' => 'g'
+ 'measurement' => $unit_g
]
]
],
'cholesterol' => [
'name' => __('Cholesterol', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_cholesterol', 300)
],
'sodium' => [
'name' => __('Sodium', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_sodium', 2300)
],
'carbs' => [
'name' => (isset($_cooked_settings['carb_format']) && $_cooked_settings['carb_format'] == 'total' ? __('Total Carbohydrate', 'cooked') : __('Net Carbohydrate', 'cooked')),
'type' => 'number',
- 'measurement' => 'g',
+ 'measurement' => $unit_g,
'pdv' => apply_filters('cooked_pdv_carbs', 275),
'subs' => [
'fiber' => [
'name' => __('Dietary Fiber', 'cooked'),
'type' => 'number',
- 'measurement' => 'g',
+ 'measurement' => $unit_g,
'pdv' => apply_filters('cooked_pdv_fiber', 28)
],
'sugars' => [
'name' => __('Total Sugars', 'cooked'),
'type' => 'number',
- 'measurement' => 'g',
+ 'measurement' => $unit_g,
//'pdv' => apply_filters('cooked_pdv_sugars', 28)
],
'added_sugars' => [
'name' => __('Added Sugars', 'cooked'),
'type' => 'number',
- 'measurement' => 'g',
+ 'measurement' => $unit_g,
'pdv' => apply_filters('cooked_pdv_added_sugars', 50)
]
]
@@ -302,7 +306,7 @@ public static function nutrition_facts() {
'protein' => [
'name' => __('Protein', 'cooked'),
'type' => 'number',
- 'measurement' => 'g',
+ 'measurement' => $unit_g,
//'pdv' => apply_filters('cooked_pdv_protein', 50)
]
],
@@ -311,165 +315,162 @@ public static function nutrition_facts() {
'vitamin_a' => [
'name' => __('Vitamin A', 'cooked'),
'type' => 'number',
- 'measurement' => 'mcg',
+ 'measurement' => $unit_mcg,
'pdv' => apply_filters('cooked_pdv_vitamin_a', 900)
],
'vitamin_c' => [
'name' => __('Vitamin C', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_vitamin_c', 90)
],
'calcium' => [
'name' => __('Calcium', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_calcium', 1300)
],
'iron' => [
'name' => __('Iron', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_iron', 18)
],
'potassium' => [
'name' => __('Potassium', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_potassium', 4700)
],
'vitamin_d' => [
'name' => __('Vitamin D', 'cooked'),
'type' => 'number',
- 'measurement' => 'mcg',
+ 'measurement' => $unit_mcg,
'pdv' => apply_filters('cooked_pdv_vitamin_d', 20)
],
'vitamin_e' => [
'name' => __('Vitamin E', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_vitamin_e', 15)
],
'vitamin_k' => [
'name' => __('Vitamin K', 'cooked'),
'type' => 'number',
- 'measurement' => 'mcg',
+ 'measurement' => $unit_mcg,
'pdv' => apply_filters('cooked_pdv_vitamin_k', 120)
],
'thiamin' => [
'name' => __('Thiamin', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_thiamin', 1.2)
],
'riboflavin' => [
'name' => __('Riboflavin', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_riboflavin', 1.3)
],
'niacin' => [
'name' => __('Niacin', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_niacin', 16)
],
'vitamin_b6' => [
'name' => __('Vitamin B6', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_vitamin_b6', 1.7)
],
'folate' => [
'name' => __('Folate', 'cooked'),
'type' => 'number',
- 'measurement' => 'mcg',
+ 'measurement' => $unit_mcg,
'pdv' => apply_filters('cooked_pdv_folate', 400)
],
'vitamin_b12' => [
'name' => __('Vitamin B12', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_vitamin_b12', 2.4)
],
'biotin' => [
'name' => __('Biotin', 'cooked'),
'type' => 'number',
- 'measurement' => 'mcg',
+ 'measurement' => $unit_mcg,
'pdv' => apply_filters('cooked_pdv_biotin', 30)
],
'pantothenic_acid' => [
'name' => __('Pantothenic Acid', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_pantothenic_acid', 5)
],
'phosphorus' => [
'name' => __('Phosphorus', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_phosphorus', 1250)
],
'iodine' => [
'name' => __('Iodine', 'cooked'),
'type' => 'number',
- 'measurement' => 'mcg',
+ 'measurement' => $unit_mcg,
'pdv' => apply_filters('cooked_pdv_iodine', 150)
],
'magnesium' => [
'name' => __('Magnesium', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_magnesium', 420)
],
'zinc' => [
'name' => __('Zinc', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_zinc', 11)
],
'selenium' => [
'name' => __('Selenium', 'cooked'),
'type' => 'number',
- 'measurement' => 'mcg',
+ 'measurement' => $unit_mcg,
'pdv' => apply_filters('cooked_pdv_selenium', 55)
],
'copper' => [
'name' => __('Copper', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_copper', 0.9)
],
'manganese' => [
'name' => __('Manganese', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_manganese', 2.3)
],
'chromium' => [
'name' => __('Chromium', 'cooked'),
'type' => 'number',
- 'measurement' => 'mcg',
+ 'measurement' => $unit_mcg,
'pdv' => apply_filters('cooked_pdv_chromium', 35)
],
'molybdenum' => [
'name' => __('Molybdenum', 'cooked'),
'type' => 'number',
- 'measurement' => 'mcg',
+ 'measurement' => $unit_mcg,
'pdv' => apply_filters('cooked_pdv_molybdenum', 45)
],
'chloride' => [
'name' => __('Chloride', 'cooked'),
'type' => 'number',
- 'measurement' => 'mg',
+ 'measurement' => $unit_mg,
'pdv' => apply_filters('cooked_pdv_chloride', 2300)
]
]
]);
- // Ensures "mcg" is in the translation catalog (g and mg are cataloged via get()).
- __( 'mcg', 'cooked' );
-
return $nutrition_facts;
}
@@ -718,7 +719,7 @@ public static function time_format( $minutes, $format = 'default' ) {
return 'PT0H'.intval( $minutes ).'M';
else:
/* translators: singular and plural number of minutes (shorthand) */
- echo self::singular_plural( sprintf( __( '%d min','cooked' ), number_format_i18n($minutes) ), sprintf( __( '%d mins','cooked' ), number_format_i18n($minutes) ), $minutes );
+ echo esc_html( self::singular_plural( sprintf( esc_html__( '%d min','cooked' ), number_format_i18n($minutes) ), sprintf( esc_html__( '%d mins','cooked' ), number_format_i18n($minutes) ), $minutes ) );
endif;
elseif ( $minutes < 1440 ):
$hours = floor( $minutes / 60 );
@@ -727,9 +728,9 @@ public static function time_format( $minutes, $format = 'default' ) {
return 'PT'.intval( $hours ).'H'.( $minutes_left ? intval( $minutes_left ) : 0 ).'M';
else:
/* translators: singular and plural number of hours (shorthand) */
- echo self::singular_plural( sprintf( __( '%d hr','cooked' ), number_format_i18n($hours) ), sprintf( __( '%d hrs','cooked' ), number_format_i18n($hours) ), $hours );
+ echo esc_html( self::singular_plural( sprintf( esc_html__( '%d hr','cooked' ), number_format_i18n($hours) ), sprintf( esc_html__( '%d hrs','cooked' ), number_format_i18n($hours) ), $hours ) );
/* translators: singular and plural number of minutes (shorthand) */
- echo ( $minutes_left ? ' ' . self::singular_plural( sprintf( __( '%d min','cooked' ), number_format_i18n($minutes_left) ), sprintf( __( '%d mins','cooked' ), number_format_i18n($minutes_left) ), $minutes_left ) : '' );
+ echo ( $minutes_left ? ' ' . esc_html( self::singular_plural( sprintf( esc_html__( '%d min','cooked' ), number_format_i18n($minutes_left) ), sprintf( esc_html__( '%d mins','cooked' ), number_format_i18n($minutes_left) ), $minutes_left ) ) : '' );
endif;
else:
$days = floor( $minutes / 24 / 60 );
@@ -743,11 +744,11 @@ public static function time_format( $minutes, $format = 'default' ) {
return 'P'.intval( $days ).'DT'.( $hours_left ? intval( $hours_left ) : 0 ).'H'.( $minutes_left ? intval( $minutes_left ) : 0 ).'M';
else:
/* translators: singular and plural number of days */
- echo self::singular_plural( sprintf( __( '%d day','cooked' ), number_format_i18n($days) ), sprintf( __( '%d days','cooked' ), number_format_i18n($days) ), $days );
+ echo esc_html( self::singular_plural( sprintf( esc_html__( '%d day','cooked' ), number_format_i18n($days) ), sprintf( esc_html__( '%d days','cooked' ), number_format_i18n($days) ), $days ) );
/* translators: singular and plural number of hours (shorthand) */
- echo ( $hours_left ? ' ' . self::singular_plural( sprintf( __( '%d hr','cooked' ), number_format_i18n($hours_left) ), sprintf( __( '%d hrs','cooked' ), number_format_i18n($hours_left) ), $hours_left ) : '' );
+ echo ( $hours_left ? ' ' . esc_html( self::singular_plural( sprintf( esc_html__( '%d hr','cooked' ), number_format_i18n($hours_left) ), sprintf( esc_html__( '%d hrs','cooked' ), number_format_i18n($hours_left) ), $hours_left ) ) : '' );
/* translators: singular and plural number of minutes (shorthand) */
- echo ( $minutes_left ? ' ' . self::singular_plural( sprintf( __( '%d min','cooked' ), number_format_i18n($minutes_left) ), sprintf( __( '%d mins','cooked' ), number_format_i18n($minutes_left) ), $minutes_left ) : '' );
+ echo ( $minutes_left ? ' ' . esc_html( self::singular_plural( sprintf( esc_html__( '%d min','cooked' ), number_format_i18n($minutes_left) ), sprintf( esc_html__( '%d mins','cooked' ), number_format_i18n($minutes_left) ), $minutes_left ) ) : '' );
endif;
endif;
diff --git a/includes/class.cooked-migration.php b/includes/class.cooked-migration.php
index 3b49039..502de4d 100644
--- a/includes/class.cooked-migration.php
+++ b/includes/class.cooked-migration.php
@@ -87,8 +87,8 @@ public static function old_recipes_message() {
if ($total > 0) {
$class = 'notice notice-error';
/* translators: for displaying singular or plural versions depending on the number of recipes. */
- $message = sprintf( esc_html( _n( 'There is %1$s recipe that is from an older version of Cooked. Please %2$s to migrate this recipe.', 'There are %1$s recipes that are from an older version of Cooked. Please %2$s to migrate these recipes.', $total, 'cooked' ) ), '' . number_format( $total ) . ' ', '' . __( 'click here', 'cooked' ) . ' ' );
- printf('', esc_attr($class), $message);
+ $message = sprintf( esc_html( _n( 'There is %1$s recipe that is from an older version of Cooked. Please %2$s to migrate this recipe.', 'There are %1$s recipes that are from an older version of Cooked. Please %2$s to migrate these recipes.', $total, 'cooked' ) ), '' . number_format( $total ) . ' ', '' . __( 'click here', 'cooked' ) . ' ' );
+ printf('', esc_attr($class), wp_kses_post($message));
}
}
}
@@ -105,6 +105,7 @@ public static function get_cooked_classic_recipes() {
'posts_per_page' => -1,
'post_status' => 'any',
'fields' => 'ids',
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
'meta_query' => [
'settings_clause' => [
'key' => '_recipe_settings',
diff --git a/includes/class.cooked-multilingual.php b/includes/class.cooked-multilingual.php
index be95c69..3f4cfef 100644
--- a/includes/class.cooked-multilingual.php
+++ b/includes/class.cooked-multilingual.php
@@ -234,7 +234,9 @@ public static function get_missing_translations() {
*/
public function translation_notice() {
// Only show on Cooked settings page
- if ( ! isset( $_GET['page'] ) || $_GET['page'] !== 'cooked_settings' ) {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Display-only admin page query var.
+ $page = isset( $_GET['page'] ) ? sanitize_key( wp_unslash( $_GET['page'] ) ) : '';
+ if ( $page !== 'cooked_settings' ) {
return;
}
@@ -267,7 +269,7 @@ public function translation_notice() {
$plugin_name
) . '';
- printf( '', esc_attr( $class ), $message );
+ printf( '', esc_attr( $class ), wp_kses_post( $message ) );
}
}
}
diff --git a/includes/class.cooked-pixwell.php b/includes/class.cooked-pixwell.php
index fa4f775..5e97f53 100644
--- a/includes/class.cooked-pixwell.php
+++ b/includes/class.cooked-pixwell.php
@@ -55,9 +55,9 @@ public function forced_dark_mode_notice() {
?>
-
-
- Auto.', 'cooked' ); ?>
+
+
+ Auto.', 'cooked' ), [ 'strong' => [] ] ); ?>
';
- echo the_post_thumbnail( 'thumbnail' );
+ echo wp_kses_post( get_the_post_thumbnail( $post_id, 'thumbnail' ) );
echo '';
endif;
}
@@ -150,7 +151,7 @@ public static function cooked_meta_tags() {
$description = '';
if (!empty($recipe_settings['seo_description'])):
- $description = wp_strip_all_tags( preg_replace("~(?:\[/?)[^/\]]+/?\]~s", '', $recipe_settings['seo_description']) ); ;
+ $description = wp_strip_all_tags( preg_replace("~(?:\[/?)[^/\]]+/?\]~s", '', wp_specialchars_decode( $recipe_settings['seo_description'], ENT_QUOTES ) ) );
elseif (!empty($recipe_settings['excerpt'])):
$description = wp_strip_all_tags( preg_replace("~(?:\[/?)[^/\]]+/?\]~s", '', $recipe_settings['excerpt']) );
elseif (!empty($recipe_settings['title'])):
@@ -164,9 +165,15 @@ public static function cooked_meta_tags() {
- ID ) ); ?>"> [
+ 'name' => true,
+ 'content' => true,
+ 'property' => true,
+ ],
+ ] );
}
}
@@ -190,6 +197,10 @@ public static function activation() {
flush_rewrite_rules();
}
+ public static function deactivation() {
+ delete_option( 'rewrite_rules' );
+ }
+
public static function init_roles() {
// Clean up for any old caps or caps that were inserted incorrectly.
if ( $role_object = get_role( 'subscriber' ) ) {
@@ -206,8 +217,13 @@ public static function init() {
$_cooked_settings = Cooked_Settings::get();
$_cooked_taxonomies = Cooked_Taxonomies::get();
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended -- Display-only Settings API query vars.
+ $page = isset( $_GET['page'] ) ? sanitize_key( wp_unslash( $_GET['page'] ) ) : '';
+ $settings_updated = isset( $_GET['settings-updated'] ) ? rest_sanitize_boolean( wp_unslash( $_GET['settings-updated'] ) ) : false;
+ // phpcs:enable WordPress.Security.NonceVerification.Recommended
+
// Security check: Only allow settings update from admin area with proper permissions
- if (!empty($_GET['settings-updated']) && is_admin() && current_user_can('manage_options') && isset($_GET['page']) && $_GET['page'] === 'cooked_settings') {
+ if ( $settings_updated && is_admin() && current_user_can('manage_options') && $page === 'cooked_settings' ) {
// Recipe Permalink
$permalink_parts = explode( '/', $_cooked_settings['recipe_permalink'] );
if ( isset( $permalink_parts[1] ) ):
@@ -433,6 +449,7 @@ public static function get() {
$has_archive_slug = sanitize_title_with_dashes( __('Recipe Archive', 'cooked') );
$exclude_from_search = false;
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Display-only print view flag.
if ( !isset($_GET['print']) && isset( $_cooked_settings['advanced'] ) && in_array( 'disable_public_recipes', $_cooked_settings['advanced'] ) ) {
$public_recipes = false;
$has_archive_slug = false;
@@ -446,8 +463,8 @@ public static function get() {
$post_types = apply_filters( 'cooked_post_types', [
'cp_recipe' => [
'labels' => [
- 'name' => _x('Recipes', 'cooked'),
- 'singular_name' => _x('Recipe', 'cooked'),
+ 'name' => _x( 'Recipes', 'post type general name', 'cooked' ),
+ 'singular_name' => _x( 'Recipe', 'post type singular name', 'cooked' ),
'menu_name' => __('Recipes', 'cooked'),
'name_admin_bar' => __('Recipe', 'cooked'),
'add_new' => __('Add New', 'cooked'),
diff --git a/includes/class.cooked-recipe-meta.php b/includes/class.cooked-recipe-meta.php
index d1fd51c..3d3aa59 100644
--- a/includes/class.cooked-recipe-meta.php
+++ b/includes/class.cooked-recipe-meta.php
@@ -49,6 +49,9 @@ public static function meta_cleanup( $recipe_settings ) {
$decoded_val = wp_specialchars_decode( $val, ENT_QUOTES );
$_recipe_settings[$key] = wp_strip_all_tags( $decoded_val );
}
+ } elseif ( $key === 'seo_description' ) {
+ $decoded_val = wp_specialchars_decode( $val, ENT_QUOTES );
+ $_recipe_settings[ $key ] = wp_strip_all_tags( $decoded_val );
} else {
if ($key === "post_title") {
// Decode HTML entities first so wp_kses_post can see actual HTML tags
@@ -112,7 +115,10 @@ public static function meta_cleanup( $recipe_settings ) {
*/
public function add_recipe_meta_box( $post_type ) {
// Limit meta box to Cooked Recipes.
- $post_types = apply_filters( 'cp_recipe_metabox_post_types' , ['cp_recipe'] );
+ $post_types = apply_filters(
+ 'cooked_recipe_metabox_post_types',
+ apply_filters( 'cp_recipe_metabox_post_types', [ 'cp_recipe' ] )
+ );
if ( in_array( $post_type, $post_types ) ) {
add_meta_box( 'cooked_recipe_settings', __( 'Cooked Settings', 'cooked' ), [&$this, 'render_recipe_meta_box'], $post_type, 'normal', 'high' );
@@ -134,8 +140,8 @@ public function save_recipe_meta_box( $post_id ) {
// Check if our nonce is set.
if ( !isset( $_POST['cooked_recipe_custom_box_nonce'] ) ) return $post_id;
- // Verify that the nonce is valid.
- if ( ! wp_verify_nonce( $_POST['cooked_recipe_custom_box_nonce'], 'cooked_recipe_custom_box' ) ) return $post_id;
+ $nonce = wp_unslash( $_POST['cooked_recipe_custom_box_nonce'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Verify nonce after unslash; do not sanitize_text_field a nonce.
+ if ( ! wp_verify_nonce( $nonce, 'cooked_recipe_custom_box' ) ) return $post_id;
/*
* If this is an autosave, our form has not been submitted,
@@ -149,6 +155,7 @@ public function save_recipe_meta_box( $post_id ) {
global $recipe_settings;
/* OK, it's safe for us to validate/sanitize the data now. */
+ // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Sanitized in meta_cleanup().
$recipe_settings = isset($_POST['_recipe_settings']) ? self::meta_cleanup( wp_unslash( $_POST['_recipe_settings'] ) ) : [];
if ( isset( $recipe_settings['content'] ) ) {
@@ -160,6 +167,9 @@ public function save_recipe_meta_box( $post_id ) {
if ( isset( $recipe_settings['notes'] ) ) {
$recipe_settings['notes'] = str_replace( ["\r\n", "\r"], "\n", $recipe_settings['notes'] );
}
+ if ( isset( $recipe_settings['seo_description'] ) ) {
+ $recipe_settings['seo_description'] = str_replace( ["\r\n", "\r"], "\n", $recipe_settings['seo_description'] );
+ }
// Directions
if ( isset( $recipe_settings['directions'] ) ) {
@@ -213,9 +223,12 @@ public function recipe_embed_shortcode_admin_notice() {
printf(
'',
- sprintf(
- __( 'This recipe is set up to include itself in the Recipe Template (containing shortcode %s), which can break the page. Remove the embed that references this same recipe.', 'cooked' ),
- $shortcode
+ wp_kses_post(
+ sprintf(
+ /* translators: %s: recipe embed shortcode */
+ __( 'This recipe is set up to include itself in the Recipe Template (containing shortcode %s), which can break the page. Remove the embed that references this same recipe.', 'cooked' ),
+ '' . esc_html( $shortcode ) . ''
+ )
)
);
}
@@ -255,19 +268,19 @@ public static function bulk_add_modal() {
×
@@ -285,8 +298,8 @@ function cooked_recipe_shortcodes_content() {
-
-
+
+
@@ -298,8 +311,8 @@ function cooked_recipe_shortcodes_content() {
-
-
+
+
@@ -307,14 +320,14 @@ function cooked_recipe_shortcodes_content() {
"width"
-
+
@@ -324,14 +337,14 @@ function cooked_recipe_shortcodes_content() {
"hide_author"
-
+
@@ -341,14 +354,14 @@ function cooked_recipe_shortcodes_content() {
"hide_title"
-
+
@@ -358,17 +371,17 @@ function cooked_recipe_shortcodes_content() {
-
+
- id ()
- width ()
- style ()
- hide_image ()
- hide_title ()
- hide_excerpt ()
- hide_author ()
+ id ()
+ width ()
+ style ()
+ hide_image ()
+ hide_title ()
+ hide_excerpt ()
+ hide_author ()
-
+
[cooked-recipe-card id="" width="300px" style="modern"]
@@ -488,15 +501,15 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
@@ -504,8 +517,8 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
@@ -519,7 +532,7 @@ function cooked_render_recipe_fields( $post_id ) {
-
' . __( 'Default Recipe Template','cooked') . '' . __( 'Choose from the options below to use this layout as the default for new recipes or for all recipes.', 'cooked') . '' . __( 'Save as Default','cooked' ) . ' ' . __( 'Apply to All','cooked' ) . ' 0 / 0 ' ); ?>" class="button cooked-layout-save-default"> ' . __( 'Recipe Template','cooked') . '' . __( 'Using the built-in recipe shortcodes found on the "Shortcodes" tab, you can create the layout of your recipe below. Use the "Save as Default" button to save your template.','cooked') ); ?>">
+
' . esc_html__( 'Default Recipe Template','cooked') . '' . esc_html__( 'Choose from the options below to use this layout as the default for new recipes or for all recipes.', 'cooked') . '' . esc_html__( 'Save as Default','cooked' ) . ' ' . esc_html__( 'Apply to All','cooked' ) . ' 0 / 0 ' ); ?>" class="button cooked-layout-save-default"> ' . esc_html__( 'Recipe Template','cooked') . '' . esc_html__( 'Using the built-in recipe shortcodes found on the "Shortcodes" tab, you can create the layout of your recipe below. Use the "Save as Default" button to save your template.','cooked') ); ?>">
@@ -537,7 +550,7 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
@@ -696,11 +709,11 @@ function cooked_render_recipe_fields( $post_id ) {
@@ -852,11 +865,11 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
-
+
@@ -919,7 +932,7 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
@@ -936,11 +949,11 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
-
+
'h6'
];
foreach ($heading_elements as $element => $label): ?>
- >
-
+ >
+
@@ -975,34 +988,34 @@ function cooked_render_recipe_fields( $post_id ) {
1
-
-
-
+
+
+
-
+
true,
'media_buttons' => false,
'wpautop' => false,
'editor_height' => 250,
- 'textarea_name' => '_recipe_settings[directions][' . $random_key . '][content]',
+ 'textarea_name' => '_recipe_settings[directions][' . esc_attr( $random_key ) . '][content]',
'quicktags' => true
]);
?>
-
+
@@ -1015,10 +1028,10 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
-
+
@@ -1027,7 +1040,7 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
@@ -1047,11 +1060,11 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
-
+
'h6'
];
foreach ($heading_elements as $element => $label): ?>
- >
-
+ >
+
@@ -1082,7 +1095,7 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
@@ -1120,7 +1133,7 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
-
+
$nf ):
@@ -1148,14 +1161,14 @@ function cooked_render_recipe_fields( $post_id ) {
endforeach; ?>
-
+
$nf ):
echo '';
- echo '' . esc_html($nf['name']) . ' ___ ' . ( isset($nf['measurement']) ? '' . esc_html__( $nf['measurement'], 'cooked' ) . ' ' : '' );
+ echo '' . esc_html($nf['name']) . ' ___ ' . ( isset($nf['measurement']) ? '' . esc_html( $nf['measurement'] ) . ' ' : '' );
echo ( isset( $nf['pdv'] ) ? '0 % ' : '' );
if ( isset($nf['subs']) ):
@@ -1163,16 +1176,16 @@ function cooked_render_recipe_fields( $post_id ) {
echo '';
if ($sub_slug === 'trans_fat'):
echo '';
- echo $sub_nf['nutrition_info_name'] . ' ___ ' . ( isset($sub_nf['measurement']) ? '' . esc_html__( $sub_nf['measurement'], 'cooked' ) . ' ' : '' );
+ echo wp_kses_post( $sub_nf['nutrition_info_name'] ) . ' ___ ' . ( isset($sub_nf['measurement']) ? '' . esc_html( $sub_nf['measurement'] ) . ' ' : '' );
echo ' ';
elseif ($sub_slug === 'added_sugars'):
echo '';
- echo __('Includes', 'cooked') . ' ___ ' . ( isset($sub_nf['measurement']) ? '' . esc_html__( $sub_nf['measurement'], 'cooked' ) . ' ' : '' ) . ' ' . esc_html($sub_nf['name']);
+ echo esc_html__('Includes', 'cooked') . ' ___ ' . ( isset($sub_nf['measurement']) ? '' . esc_html( $sub_nf['measurement'] ) . ' ' : '' ) . ' ' . esc_html($sub_nf['name']);
echo ( isset( $sub_nf['pdv'] ) ? '0 % ' : '' );
echo ' ';
else:
echo '';
- echo $sub_nf['name'] . ' ___ ' . ( isset($sub_nf['measurement']) ? '' . esc_html__( $sub_nf['measurement'], 'cooked' ) . ' ' : '' );
+ echo esc_html( $sub_nf['name'] ) . ' ___ ' . ( isset($sub_nf['measurement']) ? '' . esc_html( $sub_nf['measurement'] ) . ' ' : '' );
echo ( isset( $sub_nf['pdv'] ) ? '0 % ' : '' );
echo ' ';
endif;
@@ -1189,7 +1202,7 @@ function cooked_render_recipe_fields( $post_id ) {
$nf ):
echo '';
- echo $nf['name'] . ' ___ ' . ( isset($nf['measurement']) ? '' . esc_html__( $nf['measurement'], 'cooked' ) . ' ' : '' );
+ echo esc_html( $nf['name'] ) . ' ___ ' . ( isset($nf['measurement']) ? '' . esc_html( $nf['measurement'] ) . ' ' : '' );
echo ( isset( $nf['pdv'] ) ? '0 % ' : '' );
echo ' ';
endforeach; ?>
@@ -1199,14 +1212,14 @@ function cooked_render_recipe_fields( $post_id ) {
- *
+ *
-
+
@@ -1215,7 +1228,7 @@ function cooked_render_recipe_fields( $post_id ) {
@@ -1282,8 +1295,8 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
@@ -1292,9 +1305,9 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
@@ -1302,8 +1315,8 @@ function cooked_render_recipe_fields( $post_id ) {
-
+ echo sprintf( esc_html__( '"%1$s" and "%2$s"','cooked' ), 'left','right' ); ?>
+
@@ -1313,7 +1326,7 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
__('Difficulty', 'cooked'),
'servings' => __('Servings Switcher', 'cooked'),
'taxonomies' => __('Category', 'cooked'),
- 'print' => __('Print Mode', 'cooked'),
+ 'print' => esc_html__('Print Mode', 'cooked'),
'fullscreen' => __('Full-Screen Mode', 'cooked')
]);
@@ -1344,14 +1357,14 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
"checkboxes"
-
+
@@ -1359,10 +1372,10 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
- true ()
- false ()
+ true ()
+ false ()
@@ -1375,14 +1388,14 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
"numbers"
-
+
@@ -1390,10 +1403,10 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
- true ()
- false ()
+ true ()
+ false ()
@@ -1406,8 +1419,8 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
@@ -1415,9 +1428,9 @@ function cooked_render_recipe_fields( $post_id ) {
@@ -1430,8 +1443,8 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
@@ -1439,9 +1452,9 @@ function cooked_render_recipe_fields( $post_id ) {
@@ -1456,8 +1469,8 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
@@ -1465,14 +1478,14 @@ function cooked_render_recipe_fields( $post_id ) {
"ratio"
-
+
@@ -1482,14 +1495,14 @@ function cooked_render_recipe_fields( $post_id ) {
"allowfullscreen"
-
+
@@ -1499,27 +1512,27 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
width
ratio
nav
allowfullscreen
@@ -1535,8 +1548,8 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
@@ -1544,9 +1557,9 @@ function cooked_render_recipe_fields( $post_id ) {
@@ -1559,14 +1572,14 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
"show_header"
-
+
@@ -1574,10 +1587,10 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
- true ()
- false ()
+ true ()
+ false ()
@@ -1590,8 +1603,8 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
' />
@@ -1600,16 +1613,16 @@ function cooked_render_recipe_fields( $post_id ) {
"desc"
-
+
@@ -1619,12 +1632,12 @@ function cooked_render_recipe_fields( $post_id ) {
-
+
- seconds ()
- minutes ()
- hours ()
- desc ()
+ seconds ()
+ minutes ()
+ hours ()
+ desc ()
@@ -1637,19 +1650,19 @@ function cooked_render_recipe_fields( $post_id ) {
@@ -1662,8 +1675,8 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
@@ -1671,14 +1684,14 @@ function cooked_render_recipe_fields( $post_id ) {
"title"
-
+
@@ -1688,14 +1701,14 @@ function cooked_render_recipe_fields( $post_id ) {
"columns"
-
+
@@ -1705,14 +1718,14 @@ function cooked_render_recipe_fields( $post_id ) {
"hide_excerpt"
-
+
@@ -1722,38 +1735,38 @@ function cooked_render_recipe_fields( $post_id ) {
-
-
+
+
-
+
- id ()
- title ()
- limit ()
- columns ()
- hide_image ()
- hide_excerpt ()
- hide_author ()
- match_* ()
+ id ()
+ title ()
+ limit ()
+ columns ()
+ hide_image ()
+ hide_excerpt ()
+ hide_author ()
+ match_* ()
-
+
[cooked-related-recipes limit="4" columns="2" title="Related Recipes"]
diff --git a/includes/class.cooked-recipes.php b/includes/class.cooked-recipes.php
index 0c52211..812b65e 100644
--- a/includes/class.cooked-recipes.php
+++ b/includes/class.cooked-recipes.php
@@ -222,7 +222,9 @@ public function check_recipe_query() {
global $_cooked_settings, $recipe_query;
if ( !isset($recipe_query['cp_recipe_category']) ):
- $recipe_query['cp_recipe_category'] = ( isset($_GET['cp_recipe_category']) && $_GET['cp_recipe_category'] ? intval($_GET['cp_recipe_category']) : ( isset($_cooked_settings['browse_default_cp_recipe_category']) && $_cooked_settings['browse_default_cp_recipe_category'] ? $_cooked_settings['browse_default_cp_recipe_category'] : false ) );
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Display-only browse category filter.
+ $requested_category = isset( $_GET['cp_recipe_category'] ) ? absint( wp_unslash( $_GET['cp_recipe_category'] ) ) : 0;
+ $recipe_query['cp_recipe_category'] = $requested_category ? $requested_category : ( isset($_cooked_settings['browse_default_cp_recipe_category']) && $_cooked_settings['browse_default_cp_recipe_category'] ? $_cooked_settings['browse_default_cp_recipe_category'] : false );
endif;
}
@@ -237,7 +239,7 @@ public static function cooked_pre_get_posts( $q ) {
// Modified WHERE
$sql['where'] = sprintf(
" AND ( %s OR %s ) ",
- apply_filters( 'cooked_query_where_filter', $wpdb->prepare( "{$wpdb->posts}.post_title like '%%%s%%'", $wpdb->esc_like( $title ) ) ),
+ apply_filters( 'cooked_query_where_filter', $wpdb->prepare( "{$wpdb->posts}.post_title LIKE %s", '%' . $wpdb->esc_like( $title ) . '%' ) ),
mb_substr( $sql['where'], 5, mb_strlen( $sql['where'] ) )
);
@@ -285,7 +287,7 @@ public static function recipe_list( $orderby = 'date', $show = 5, $recipes = fal
echo '
';
- echo has_post_thumbnail($rid) && !$hide_image ? '
' : '';
+ echo has_post_thumbnail($rid) && !$hide_image ? '
' : '';
echo '
';
@@ -295,7 +297,7 @@ public static function recipe_list( $orderby = 'date', $show = 5, $recipes = fal
echo '
';
$author = $recipe['author'];
/* translators: stating the recipe author with a "By" in front of it. (ex: "By John Smith") */
- echo sprintf( __( 'By %s', 'cooked' ), '' . wp_kses_post( $author['name'] ) . ' ' );
+ echo sprintf( esc_html__( 'By %s', 'cooked' ), '' . wp_kses_post( $author['name'] ) . ' ' );
echo '
';
endif;
@@ -329,7 +331,7 @@ public static function card( $rid, $width = false, $hide_image = false, $hide_ti
do_action( 'cooked_recipe_grid_before_image', $recipe );
- echo has_post_thumbnail($rid) && !$hide_image ? '
' : '';
+ echo has_post_thumbnail($rid) && !$hide_image ? '
' : '';
//do_action( 'cooked_recipe_grid_after_image', $recipe );
@@ -349,7 +351,7 @@ public static function card( $rid, $width = false, $hide_image = false, $hide_ti
echo '
';
$author = $recipe['author'];
/* translators: stating the recipe author with a "By" in front of it. (ex: "By John Smith") */
- echo sprintf( __( 'By %s', 'cooked' ), '' . $author['name'] . ' ' );
+ echo wp_kses_post( sprintf( __( 'By %s', 'cooked' ), '' . esc_html( $author['name'] ) . ' ' ) );
echo ' ';
endif;
@@ -373,6 +375,7 @@ public static function card( $rid, $width = false, $hide_image = false, $hide_ti
}
public function print_recipe_template() {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Display-only print view flag.
if ( is_singular('cp_recipe') && isset($_GET['print']) ):
load_template( COOKED_DIR . 'templates/front/recipe-print.php', false);
exit;
@@ -437,7 +440,8 @@ public function filter_recipes_by_taxonomy() {
foreach ( $taxonomies as $taxonomy ):
if ( is_array($cooked_taxonomies_shown) && !in_array( $taxonomy, $cooked_taxonomies_shown ) || !is_array($cooked_taxonomies_shown) ):
$cooked_taxonomies_shown[] = $taxonomy;
- $selected = isset($_GET[$taxonomy]) ? sanitize_title($_GET[$taxonomy]) : '';
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Display-only admin taxonomy filter.
+ $selected = isset( $_GET[ $taxonomy ] ) ? absint( wp_unslash( $_GET[ $taxonomy ] ) ) : '';
$info_taxonomy = get_taxonomy($taxonomy);
$taxonomy_label = $info_taxonomy->label;
@@ -918,7 +922,6 @@ public static function gallery_types() {
endforeach;
- wp_reset_query();
wp_reset_postdata();
return $gallery_types;
@@ -927,6 +930,7 @@ public static function gallery_types() {
public static function measurement_system_switcher() {
global $_cooked_settings, $post;
$switcher_enabled = ( isset( $_cooked_settings['advanced'] ) && in_array( 'enable_measurement_switcher', $_cooked_settings['advanced'] ) ? true : false );
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Display-only print view flag.
$printing = ( is_singular('cp_recipe') && isset($_GET['print']) );
if ( !$printing && $switcher_enabled ):
@@ -938,13 +942,13 @@ public static function measurement_system_switcher() {
];
$current_label = isset( $labels[ $current ] ) ? $labels[ $current ] : $labels[''];
echo '
';
- echo '' . __( 'Units', 'cooked' ) . ' ';
+ echo '' . esc_html__( 'Units', 'cooked' ) . ' ';
echo '' . esc_html( $current_label ) . ' ';
- echo '' . __( 'Measurement System', 'cooked' ) . ' ';
+ echo '' . esc_html__( 'Measurement System', 'cooked' ) . ' ';
echo '';
- echo '' . __( 'Default', 'cooked' ) . ' ';
- echo '' . __( 'Metric', 'cooked' ) . ' ';
- echo '' . __( 'Imperial', 'cooked' ) . ' ';
+ echo '' . esc_html__( 'Default', 'cooked' ) . ' ';
+ echo '' . esc_html__( 'Metric', 'cooked' ) . ' ';
+ echo '' . esc_html__( 'Imperial', 'cooked' ) . ' ';
echo ' ';
echo '';
endif;
@@ -953,6 +957,7 @@ public static function measurement_system_switcher() {
public static function serving_size_switcher( $servings ) {
global $_cooked_settings, $post;
$switcher_disabled = ( isset( $_cooked_settings['advanced'] ) && in_array( 'disable_servings_switcher', $_cooked_settings['advanced'] ) ? true : false );
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Display-only print view flag.
$printing = ( is_singular('cp_recipe') && isset($_GET['print']) );
if ( !$printing && !$switcher_disabled ):
@@ -993,22 +998,22 @@ public static function serving_size_switcher( $servings ) {
endif;
echo '
';
- echo '' . __('Yields','cooked') . ' ';
+ echo '' . esc_html__('Yields','cooked') . ' ';
if ( !$printing && !$switcher_disabled ):
/* translators: singular and plural "serving" sizes */
$servings_string = sprintf( esc_html( _n( '%s Serving', '%s Servings', $servings, 'cooked' ) ), $servings );
- echo '' . $servings_string . ' ';
- echo '' . __('Servings', 'cooked') . ' ';
+ echo '' . esc_html( $servings_string ) . ' ';
+ echo '' . esc_html__('Servings', 'cooked') . ' ';
echo '';
foreach ( $servings_array as $stype ):
- echo '' . esc_attr( $stype['name'] ) . ' ';
+ echo '' . esc_html( $stype['name'] ) . ' ';
endforeach;
echo ' ';
else:
/* translators: singular and plural "serving" sizes */
- echo '' . sprintf( esc_html( _n( '%s Serving', '%s Servings', $servings, 'cooked' ) ), $servings ) . ' ';
+ echo '' . esc_html( sprintf( _n( '%s Serving', '%s Servings', $servings, 'cooked' ), $servings ) ) . ' ';
endif;
echo '';
@@ -1035,7 +1040,7 @@ public static function single_ingredient( $ing, $checkboxes = true, $plain_text
? ($ing['section_heading_element'] === 'div' ? $default_element : $ing['section_heading_element'])
: $default_element;
- echo '<' . $element . ' class="cooked-single-ingredient cooked-heading">' . esc_html($ing['section_heading_name']) . '' . $element . '>';
+ echo '<' . tag_escape( $element ) . ' class="cooked-single-ingredient cooked-heading">' . esc_html($ing['section_heading_name']) . '' . tag_escape( $element ) . '>';
}
} elseif ( isset($ing['name']) && $ing['name'] ) {
@@ -1154,7 +1159,7 @@ public static function single_ingredient( $ing, $checkboxes = true, $plain_text
if ( $sub_name ) {
echo '
';
- echo ' ' . __('or', 'cooked') . ' ';
+ echo ' ' . esc_html__('or', 'cooked') . ' ';
echo ( $sub_amount ? '' . wp_kses_post($sub_amount) . ' ' . wp_kses_post( $sub_measurement ) . ' ' : '' );
echo '' . wp_kses_post( $sub_name ) . ' ';
echo ' ';
@@ -1164,7 +1169,7 @@ public static function single_ingredient( $ing, $checkboxes = true, $plain_text
}
$ing_html = ob_get_clean();
- echo apply_filters( 'cooked_single_ingredient_html', $ing_html, $ing, $checkboxes, $plain_text );
+ echo wp_kses_post( apply_filters( 'cooked_single_ingredient_html', $ing_html, $ing, $checkboxes, $plain_text ) );
}
public static function single_direction($dir, $number = false, $plain_text = false, $step = false, $atts = false) {
@@ -1183,7 +1188,7 @@ public static function single_direction($dir, $number = false, $plain_text = fal
? ($dir['section_heading_element'] === 'div' ? $default_element : $dir['section_heading_element'])
: $default_element;
- echo '<' . $element . ' class="cooked-single-direction cooked-heading">' . esc_html($dir['section_heading_name']) . '' . $element . '>';
+ echo '<' . tag_escape( $element ) . ' class="cooked-single-direction cooked-heading">' . esc_html($dir['section_heading_name']) . '' . tag_escape( $element ) . '>';
}
} elseif ( !empty($dir['content']) || !empty($dir['image']) || !empty($dir['video']) ) {
@@ -1201,9 +1206,9 @@ public static function single_direction($dir, $number = false, $plain_text = fal
/* translators: singular and plural "steps" */
$step_string = sprintf( __( 'Step %d', 'cooked' ), $step );
- echo '
';
+ echo '
';
echo $number ? '
' . esc_html($number) . ' ' : '';
- echo '
' . do_shortcode($content) . ($image ? wpautop($image) : '') . ($video ? ' ' : '') . '
';
+ echo '
' . do_shortcode($content) . ($image ? wp_kses_post( wpautop($image) ) : '') . ($video ? ' ' : '') . '
';
echo '
';
}
}
@@ -1259,7 +1264,7 @@ public static function recipe_search_box( $options = false ) {
echo '
';
echo '
';
- echo '' . ( isset($active_taxonomy) ? esc_html( $active_taxonomy ) : __('Browse','cooked') ) . ' ';
+ echo '' . ( isset($active_taxonomy) ? esc_html( $active_taxonomy ) : esc_html__('Browse','cooked') ) . ' ';
echo '';
endif;
@@ -1280,15 +1285,15 @@ public static function recipe_search_box( $options = false ) {
$terms_array = Cooked_Settings::terms_array( 'cp_recipe_category', false, __('No categories','cooked'), true, true, false );
if ( !empty($terms_array) ):
echo '';
- echo '' . __('Categories','cooked') . ' ';
+ echo '' . esc_html__('Categories','cooked') . ' ';
echo '';
- echo ( $view_all_recipes_url ? '
' . __( 'All Categories','cooked' ) . ' ' : '' );
+ echo ( $view_all_recipes_url ? '
' . esc_html__( 'All Categories','cooked' ) . ' ' : '' );
foreach ( $terms_array as $key => $val ):
if ( $key ):
$term = get_term( $key );
$term_link = ( !empty($term) ? get_term_link( $term ) : false );
$term_name = apply_filters( 'cooked_term_name', $term->name, $term->ID, $term->taxonomy );
- echo ( $term_link ? ( isset($active_taxonomy) && $active_taxonomy == $val ? '
' : '' ) . '' . esc_html($term_name) . ' ' . ( isset($active_taxonomy) && $active_taxonomy == $val ? '' : '' ) : '' );
+ echo ( $term_link ? ( isset($active_taxonomy) && $active_taxonomy == $val ? '
' : '' ) . '' . wp_kses_post($term_name) . ' ' . ( isset($active_taxonomy) && $active_taxonomy == $val ? '' : '' ) : '' );
$total_taxonomies++;
$sub_terms_array = Cooked_Settings::terms_array( 'cp_recipe_category', false, false, true, false, $key );
if ( !empty($sub_terms_array) ):
@@ -1297,7 +1302,7 @@ public static function recipe_search_box( $options = false ) {
$sub_term = get_term( $sub_key );
$sub_term_link = ( !empty($sub_term) ? get_term_link( $sub_term ) : false );
$sub_term_name = apply_filters( 'cooked_term_name', $sub_term->name, $sub_term->ID, $sub_term->taxonomy );
- echo ( $sub_term_link ? '
' . ( isset($active_taxonomy) && $active_taxonomy == $sub_val ? ' ' : '' ) . '' . esc_html($sub_term_name) . ' ' . ( isset($active_taxonomy) && $active_taxonomy == $sub_val ? ' ' : '' ) . ' ' : '' );
+ echo ( $sub_term_link ? '
' . ( isset($active_taxonomy) && $active_taxonomy == $sub_val ? ' ' : '' ) . '' . wp_kses_post($sub_term_name) . ' ' . ( isset($active_taxonomy) && $active_taxonomy == $sub_val ? ' ' : '' ) . ' ' : '' );
$total_taxonomies++;
endif;
endforeach;
@@ -1351,11 +1356,11 @@ public static function recipe_search_box( $options = false ) {
echo '
';
diff --git a/includes/class.cooked-seo.php b/includes/class.cooked-seo.php
index 5c8d4f3..613048e 100644
--- a/includes/class.cooked-seo.php
+++ b/includes/class.cooked-seo.php
@@ -80,6 +80,7 @@ public static function schema_values( $recipe = false ) {
$directions[] = [
'@type' => 'HowToStep',
+ /* translators: %d: step number */
'name' => sprintf(__('Step %d', 'cooked'), $number),
'text' => $direction_cleaned,
'url' => get_permalink($rpost) . '#cooked-single-direction-step-' . $number,
@@ -107,14 +108,14 @@ public static function schema_values( $recipe = false ) {
$unsaturatedFatAmount = (isset($recipe['nutrition']['monounsaturated_fat']) && $recipe['nutrition']['monounsaturated_fat'] ? $recipe['nutrition']['monounsaturated_fat'] : 0) + (isset($recipe['nutrition']['polyunsaturated_fat']) && $recipe['nutrition']['polyunsaturated_fat'] ? $recipe['nutrition']['polyunsaturated_fat'] : 0);
if ($unsaturatedFatAmount):
- $unsaturatedFatContent = $unsaturatedFatAmount . ' ' . __( $_nutrition_facts['main']['fat']['subs']['monounsaturated_fat']['measurement'], 'cooked' );
+ $unsaturatedFatContent = $unsaturatedFatAmount . ' ' . $_nutrition_facts['main']['fat']['subs']['monounsaturated_fat']['measurement'];
else:
$unsaturatedFatContent = '';
endif;
$description = '';
if (!empty($recipe['seo_description'])):
- $description = wp_strip_all_tags( preg_replace("~(?:\[/?)[^/\]]+/?\]~s", '', $recipe['seo_description']) ); ;
+ $description = wp_strip_all_tags( preg_replace("~(?:\[/?)[^/\]]+/?\]~s", '', wp_specialchars_decode( $recipe['seo_description'], ENT_QUOTES ) ) );
elseif (!empty($recipe['excerpt'])):
$description = wp_strip_all_tags( preg_replace("~(?:\[/?)[^/\]]+/?\]~s", '', $recipe['excerpt']) );
elseif (!empty($recipe['title'])):
@@ -147,16 +148,16 @@ public static function schema_values( $recipe = false ) {
'nutrition' => [
'@type' => 'NutritionInformation',
'calories' => (isset($recipe['nutrition']['calories']) && $recipe['nutrition']['calories'] ? $recipe['nutrition']['calories'] . ' ' . strtolower($_nutrition_facts['mid']['calories']['name']) : 0),
- 'carbohydrateContent' => (isset($recipe['nutrition']['carbs']) && $recipe['nutrition']['carbs'] ? $recipe['nutrition']['carbs'] . ' ' . __( $_nutrition_facts['main']['carbs']['measurement'], 'cooked' ) : ''),
- 'cholesterolContent' => (isset($recipe['nutrition']['cholesterol']) && $recipe['nutrition']['cholesterol'] ? $recipe['nutrition']['cholesterol'] . ' ' . __( $_nutrition_facts['main']['cholesterol']['measurement'], 'cooked' ) : ''),
- 'fatContent' => (isset($recipe['nutrition']['fat']) && $recipe['nutrition']['fat'] ? $recipe['nutrition']['fat'] . ' ' . __( $_nutrition_facts['main']['fat']['measurement'], 'cooked' ) : ''),
- 'fiberContent' => (isset($recipe['nutrition']['fiber']) && $recipe['nutrition']['fiber'] ? $recipe['nutrition']['fiber'] . ' ' . __( $_nutrition_facts['main']['carbs']['subs']['fiber']['measurement'], 'cooked' ) : ''),
- 'proteinContent' => (isset($recipe['nutrition']['protein']) && $recipe['nutrition']['protein'] ? $recipe['nutrition']['protein'] . ' ' . __( $_nutrition_facts['main']['protein']['measurement'], 'cooked' ) : ''),
- 'saturatedFatContent' => (isset($recipe['nutrition']['sat_fat']) && $recipe['nutrition']['sat_fat'] ? $recipe['nutrition']['sat_fat'] . ' ' . __( $_nutrition_facts['main']['fat']['subs']['sat_fat']['measurement'], 'cooked' ) : ''),
+ 'carbohydrateContent' => (isset($recipe['nutrition']['carbs']) && $recipe['nutrition']['carbs'] ? $recipe['nutrition']['carbs'] . ' ' . $_nutrition_facts['main']['carbs']['measurement'] : ''),
+ 'cholesterolContent' => (isset($recipe['nutrition']['cholesterol']) && $recipe['nutrition']['cholesterol'] ? $recipe['nutrition']['cholesterol'] . ' ' . $_nutrition_facts['main']['cholesterol']['measurement'] : ''),
+ 'fatContent' => (isset($recipe['nutrition']['fat']) && $recipe['nutrition']['fat'] ? $recipe['nutrition']['fat'] . ' ' . $_nutrition_facts['main']['fat']['measurement'] : ''),
+ 'fiberContent' => (isset($recipe['nutrition']['fiber']) && $recipe['nutrition']['fiber'] ? $recipe['nutrition']['fiber'] . ' ' . $_nutrition_facts['main']['carbs']['subs']['fiber']['measurement'] : ''),
+ 'proteinContent' => (isset($recipe['nutrition']['protein']) && $recipe['nutrition']['protein'] ? $recipe['nutrition']['protein'] . ' ' . $_nutrition_facts['main']['protein']['measurement'] : ''),
+ 'saturatedFatContent' => (isset($recipe['nutrition']['sat_fat']) && $recipe['nutrition']['sat_fat'] ? $recipe['nutrition']['sat_fat'] . ' ' . $_nutrition_facts['main']['fat']['subs']['sat_fat']['measurement'] : ''),
'servingSize' => (isset($recipe['nutrition']['serving_size']) && $recipe['nutrition']['serving_size'] ? $recipe['nutrition']['serving_size'] . ' ' . strtolower($_nutrition_facts['top']['servings']['name']) : ''),
- 'sodiumContent' => (isset($recipe['nutrition']['sodium']) && $recipe['nutrition']['sodium'] ? $recipe['nutrition']['sodium'] . ' ' . __( $_nutrition_facts['main']['sodium']['measurement'], 'cooked' ) : ''),
- 'sugarContent' => (isset($recipe['nutrition']['sugars']) && $recipe['nutrition']['sugars'] ? $recipe['nutrition']['sugars'] . ' ' . __( $_nutrition_facts['main']['carbs']['subs']['sugars']['measurement'], 'cooked' ) : ''),
- 'transFatContent' => (isset($recipe['nutrition']['trans_fat']) && $recipe['nutrition']['trans_fat'] ? $recipe['nutrition']['trans_fat'] . ' ' . __( $_nutrition_facts['main']['fat']['subs']['trans_fat']['measurement'], 'cooked' ) : ''),
+ 'sodiumContent' => (isset($recipe['nutrition']['sodium']) && $recipe['nutrition']['sodium'] ? $recipe['nutrition']['sodium'] . ' ' . $_nutrition_facts['main']['sodium']['measurement'] : ''),
+ 'sugarContent' => (isset($recipe['nutrition']['sugars']) && $recipe['nutrition']['sugars'] ? $recipe['nutrition']['sugars'] . ' ' . $_nutrition_facts['main']['carbs']['subs']['sugars']['measurement'] : ''),
+ 'transFatContent' => (isset($recipe['nutrition']['trans_fat']) && $recipe['nutrition']['trans_fat'] ? $recipe['nutrition']['trans_fat'] . ' ' . $_nutrition_facts['main']['fat']['subs']['trans_fat']['measurement'] : ''),
'unsaturatedFatContent' => $unsaturatedFatContent,
],
'recipeInstructions' => $directions,
diff --git a/includes/class.cooked-settings.php b/includes/class.cooked-settings.php
index 9d1250d..f6294b4 100644
--- a/includes/class.cooked-settings.php
+++ b/includes/class.cooked-settings.php
@@ -56,7 +56,11 @@ public static function init() {
$list_id_counter = 0;
$_cooked_settings = Cooked_Settings::get();
register_setting( 'cooked_settings_group', 'cooked_settings', ['sanitize_callback' => [__CLASS__, 'sanitize_settings']] );
- register_setting( 'cooked_settings_group', 'cooked_settings_saved' );
+ register_setting( 'cooked_settings_group', 'cooked_settings_saved', ['sanitize_callback' => [__CLASS__, 'sanitize_saved_flag']] );
+ }
+
+ public static function sanitize_saved_flag( $value ) {
+ return rest_sanitize_boolean( $value );
}
// Add this new method to handle settings sanitization.
@@ -103,7 +107,12 @@ public static function sanitize_settings($settings) {
}
function cooked_settings_saved_admin_notice() {
- if (isset($_GET['settings-updated']) && $_GET['settings-updated'] && isset($_GET['page']) && $_GET['page'] === 'cooked_settings') {
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended -- Display-only Settings API query vars.
+ $page = isset( $_GET['page'] ) ? sanitize_key( wp_unslash( $_GET['page'] ) ) : '';
+ $settings_updated = isset( $_GET['settings-updated'] ) ? rest_sanitize_boolean( wp_unslash( $_GET['settings-updated'] ) ) : false;
+ // phpcs:enable WordPress.Security.NonceVerification.Recommended
+
+ if ( $settings_updated && $page === 'cooked_settings' ) {
add_settings_error(
'cooked_settings_group',
'cooked_settings_updated',
@@ -115,7 +124,9 @@ function cooked_settings_saved_admin_notice() {
function browse_page_missing_notice() {
// Only show on admin pages, not on the Cooked settings page itself
- if ( isset($_GET['page']) && $_GET['page'] === 'cooked_settings' ) {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Display-only admin page query var.
+ $page = isset( $_GET['page'] ) ? sanitize_key( wp_unslash( $_GET['page'] ) ) : '';
+ if ( $page === 'cooked_settings' ) {
return;
}
@@ -127,10 +138,11 @@ function browse_page_missing_notice() {
$class = 'notice notice-warning is-dismissible';
$message = sprintf(
'
' . __( 'Cooked Plugin Setup', 'cooked' ) . ' ' .
+ /* translators: %s: Browse/Search Recipes Page link */
__( 'To display your recipes properly, please set up your %s.', 'cooked' ),
- '
' . __( 'Browse/Search Recipes Page', 'cooked' ) . ' '
+ '
' . __( 'Browse/Search Recipes Page', 'cooked' ) . ' '
);
- printf( '
', esc_attr( $class ), $message );
+ printf( '
', esc_attr( $class ), wp_kses_post( $message ) );
}
}
@@ -232,7 +244,7 @@ public static function prefix_dark_mode_css( $selectors ) {
}
if ( '' === $scope ) {
- return $selectors;
+ return wp_kses( $selectors, [] );
}
$parts = array_map( 'trim', explode( ',', $selectors ) );
@@ -243,15 +255,15 @@ function ( $part ) use ( $scope ) {
$parts
);
- return implode( ', ', $parts );
+ return wp_kses( implode( ', ', $parts ), [] );
}
public static function tabs_fields() {
$pages_array = self::pages_array( __('Choose a page...','cooked'), __('No pages','cooked') );
$categories_array = self::terms_array( 'cp_recipe_category', __('No default', 'cooked'), __('No categories', 'cooked') );
$recipes_per_page_array = self::per_page_array();
- $recipe_archive_slug = sanitize_title_with_dashes( __( 'Recipe Archive', 'cooked' ) );
- $recipe_archive_url = home_url( '/' . $recipe_archive_slug . '/' );
+ $recipe_archive_slug = sanitize_title_with_dashes( __( 'Recipe Archive', 'cooked' ) );
+ $recipe_archive_url = home_url( '/' . $recipe_archive_slug . '/' );
// Dynamically load roles.
$role_options = [];
@@ -284,7 +296,7 @@ public static function tabs_fields() {
'recipes_per_page' => [
'title' => __('Recipes Per Page', 'cooked'),
/* translators: a description on how to choose the default number of recipes per page. */
- 'desc' => sprintf(__('Choose the default (set via the %s panel) or choose a different number here.', 'cooked'), '
' . __('Settings > Reading', 'cooked') . ' '),
+ 'desc' => sprintf(__('Choose the default (set via the %s panel) or choose a different number here.', 'cooked'), '
' . __('Settings > Reading', 'cooked') . ' '),
'type' => 'select',
'default' => 9,
'options' => $recipes_per_page_array
@@ -335,7 +347,7 @@ public static function tabs_fields() {
],
'print_view_display_options' => [
'title' => __('Print View', 'cooked'),
- 'desc' => __('When enabled, the website logo will appear at the top of the recipe print screen.', 'cooked'),
+ 'desc' => esc_html__('When enabled, the website logo will appear at the top of the recipe print screen.', 'cooked'),
'type' => 'checkboxes',
'default' => [],
'options' => apply_filters(
@@ -672,8 +684,8 @@ public static function field_radio( $field_name, $options ) {
$combined_extras = $is_disabled . $conditional_value;
- if ( $conditional_requirement ): echo '
'; endif;
- echo ' ';
+ if ( $conditional_requirement ): echo ''; endif;
+ echo ' ';
echo ' ' . wp_kses_post( $name ) . ' ';
echo ' ';
if ( $conditional_requirement ): echo ' '; endif;
@@ -693,7 +705,7 @@ public static function field_select( $field_name, $options, $color = false, $fie
}
echo '';
- echo '';
+ echo '';
foreach ( $options as $value => $name) {
echo '' . esc_attr( $name ) . ' ';
}
@@ -721,12 +733,12 @@ public static function field_migrate_button( $field_name, $title ) {
if ($total > 0) {
echo '';
- echo ' ';
+ echo ' ';
echo '
';
echo '';
echo '0 / ' . esc_html( $total ) . ' ';
echo '
';
- echo 'Migration Complete! You can now ' . __( 'reload', 'cooked' ) . ' the settings screen.
';
+ echo 'Migration Complete! You can now ' . esc_html__( 'reload', 'cooked' ) . ' the settings screen.
';
}
}
}
@@ -770,7 +782,7 @@ public static function field_permalink_field($field_name, $end_of_url) {
}
echo '';
- echo '' . $browse_page_url . ' /' . esc_html( $end_of_url ) . '/ ';
+ echo '' . esc_url( $browse_page_url ) . ' /' . esc_html( $end_of_url ) . '/ ';
echo '
';
}
@@ -799,7 +811,7 @@ public static function field_image_field( $field_name, $default ) {
echo '';
echo '
';
- echo '
';
+ echo '
';
if ( $has_image ) {
echo wp_get_attachment_image( $attachment_id, 'thumbnail', false, [
@@ -865,11 +877,11 @@ public static function field_checkboxes($field_name, $options, $color = false, $
if ($is_disabled) {
echo '
';
- echo '';
} else {
- echo '';
diff --git a/includes/class.cooked-shortcodes.php b/includes/class.cooked-shortcodes.php
index e55aba0..42d9259 100644
--- a/includes/class.cooked-shortcodes.php
+++ b/includes/class.cooked-shortcodes.php
@@ -140,9 +140,10 @@ public function cooked_timer( $atts, $content = null ) {
);
$desc = esc_attr($atts['desc']);
- $seconds = $atts['seconds'];
- $minutes = $atts['minutes'] ? $atts['minutes'] * 60 : $atts['length'] * 60;
- $hours = $atts['hours'] * 60 * 60;
+ $seconds = floatval( $atts['seconds'] );
+ $minutes_value = floatval( $atts['minutes'] );
+ $minutes = $minutes_value ? $minutes_value * 60 : floatval( $atts['length'] ) * 60;
+ $hours = floatval( $atts['hours'] ) * 60 * 60;
$seconds = $seconds + $minutes + $hours;
if (!$cooked_timer_identifier) {
@@ -164,15 +165,17 @@ public function cooked_browse_shortcode( $sc_atts, $content = null ) {
if ( isset($_cooked_settings['advanced']) && !empty($_cooked_settings['advanced']) && in_array( 'disable_public_recipes', $_cooked_settings['advanced'] ) ) {
/* translators: referring to the bottom of the Settings page. */
- return current_user_can( 'edit_cooked_settings' ) ? wpautop( sprintf( __('Public recipes are currently disabled. You can change this at the bottom of the %s page.','cooked'), '
' . __( 'Settings', 'cooked' ) . ' ' ) ) : false;
+ return current_user_can( 'edit_cooked_settings' ) ? wpautop( sprintf( __('Public recipes are currently disabled. You can change this at the bottom of the %s page.','cooked'), '
' . __( 'Settings', 'cooked' ) . ' ' ) ) : false;
}
if ( is_admin() ) return false;
$author_query_var = sanitize_key( get_query_var( 'recipe_author', false ) );
- if ( !$author_query_var && isset( $_GET['recipe_author'] ) ) {
- $author_query_var = sanitize_key( $_GET['recipe_author'] );
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended -- Display-only browse author filter.
+ if ( ! $author_query_var && isset( $_GET['recipe_author'] ) ) {
+ $author_query_var = sanitize_key( wp_unslash( $_GET['recipe_author'] ) );
}
+ // phpcs:enable WordPress.Security.NonceVerification.Recommended
// Shortcode Attributes
$atts = shortcode_atts( apply_filters( 'cooked_browse_shortcode_default_attributes', [
@@ -226,9 +229,9 @@ public function cooked_recipe_card_shortcode( $atts, $content = null ) {
ob_start();
if ( $recipe_id ) {
- echo Cooked_Recipes::card( $recipe_id, $width, $hide_image, $hide_title, $hide_excerpt, $hide_author, $style );
+ echo wp_kses_post( Cooked_Recipes::card( $recipe_id, $width, $hide_image, $hide_title, $hide_excerpt, $hide_author, $style ) );
} elseif ( $category_id ) {
- echo Cooked_Taxonomies::card( $category_id, $width, $hide_image, $hide_total, $style );
+ echo wp_kses_post( Cooked_Taxonomies::card( $category_id, $width, $hide_image, $hide_total, $style ) );
}
return ob_get_clean();
@@ -356,6 +359,7 @@ public function cooked_recipe_shortcode( $atts, $content = null ) {
private static function recipe_embed_blocked_message( $recipe_id ) {
$shortcode = '[cooked-recipe id="' . intval( $recipe_id ) . '"]';
$message = '
' . sprintf(
+ /* translators: %s: recipe embed shortcode */
__( 'This recipe could not be displayed because it is set up to include itself (containing shortcode %s). Remove the duplicate recipe embed from the Recipe Template.', 'cooked' ),
$shortcode
) . ' ';
@@ -681,7 +685,7 @@ public static function cooked_info_author() {
echo '
';
echo !$hide_avatars ? '' . ( !empty($author) ? wp_kses_post( $author['profile_photo'] ) : '' ) . ' ' : '';
- echo '' . __('Author', 'cooked') . ' ' . ( $clickable && $permalink ? '' : '' ) . (!empty($author) ? $author['name'] : '') . ( $clickable && $permalink ? ' ' : '' );
+ echo '' . esc_html__('Author', 'cooked') . ' ' . ( $clickable && $permalink ? '' : '' ) . (!empty($author) ? esc_html( $author['name'] ) : '') . ( $clickable && $permalink ? ' ' : '' );
echo ' ';
wp_reset_postdata();
@@ -692,8 +696,8 @@ public static function cooked_info_difficulty( $recipe ) {
global $_cooked_settings;
if (in_array('difficulty_level', $_cooked_settings['recipe_info_display_options']) && isset($recipe['difficulty_level']) && $recipe['difficulty_level']) {
- $dl_html = '
' . __('Difficulty','cooked') . ' ' . Cooked_Recipes::difficulty_level( $recipe['difficulty_level'] ) . '';
- echo apply_filters( 'cooked_show_difficulty_level', $dl_html, $recipe['difficulty_level'] );
+ $dl_html = '
' . esc_html__('Difficulty','cooked') . ' ' . Cooked_Recipes::difficulty_level( $recipe['difficulty_level'] ) . '';
+ echo wp_kses_post( apply_filters( 'cooked_show_difficulty_level', $dl_html, $recipe['difficulty_level'] ) );
}
}
@@ -714,13 +718,13 @@ public static function cooked_info_print() {
$query_args['print'] = 1;
$servings = (float)esc_html( get_query_var( 'servings', false ) );
$query_args['servings'] = !empty($servings) ? $servings : false;
- echo '
';
+ echo '
';
}
public static function cooked_info_fullscreen() {
global $recipe_settings, $_cooked_settings;
- echo '
';
+ echo '
';
wp_enqueue_script('cooked-nosleep');
}
@@ -729,7 +733,7 @@ public static function cooked_info_prep_time( $recipe ) {
if (!empty($_cooked_settings['recipe_info_display_options']) && in_array('timing_prep',$_cooked_settings['recipe_info_display_options'])) {
$prep_time = isset($recipe['prep_time']) ? esc_html( $recipe['prep_time'] ) : 0;
- echo $prep_time ? '
' . __('Prep Time','cooked') . ' ' . Cooked_Measurements::time_format( $prep_time ) . '' : '';
+ echo $prep_time ? '
' . esc_html__('Prep Time','cooked') . ' ' . wp_kses_post( Cooked_Measurements::time_format( $prep_time ) ) . '' : '';
}
}
@@ -738,7 +742,7 @@ public static function cooked_info_cook_time( $recipe ) {
if (!empty($_cooked_settings['recipe_info_display_options']) && in_array('timing_cook', $_cooked_settings['recipe_info_display_options'])) {
$cook_time = isset($recipe['cook_time']) ? esc_html( $recipe['cook_time'] ) : 0;
- echo $cook_time ? '
' . __('Cook Time','cooked') . ' ' . Cooked_Measurements::time_format( $cook_time ) . '' : '';
+ echo $cook_time ? '
' . esc_html__('Cook Time','cooked') . ' ' . wp_kses_post( Cooked_Measurements::time_format( $cook_time ) ) . '' : '';
}
}
@@ -749,14 +753,14 @@ public static function cooked_info_total_time( $recipe ) {
$total_time = isset($recipe['total_time']) ? esc_html( $recipe['total_time'] ) : 0;
if ( $total_time ) {
- echo $total_time ? '
' . __('Total Time','cooked') . ' ' . Cooked_Measurements::time_format( $total_time ) . '' : '';
+ echo $total_time ? '
' . esc_html__('Total Time','cooked') . ' ' . wp_kses_post( Cooked_Measurements::time_format( $total_time ) ) . '' : '';
} else {
$prep_time = isset($recipe['prep_time']) ? esc_html( $recipe['prep_time'] ) : 0;
$cook_time = isset($recipe['cook_time']) ? esc_html( $recipe['cook_time'] ) : 0;
if ( $prep_time && $cook_time ) {
$total_time = $prep_time + $cook_time;
- echo $total_time ? '
' . __('Total Time','cooked') . ' ' . Cooked_Measurements::time_format( $total_time ) . '' : '';
+ echo $total_time ? '
' . esc_html__('Total Time','cooked') . ' ' . wp_kses_post( Cooked_Measurements::time_format( $total_time ) ) . '' : '';
}
}
}
@@ -796,7 +800,7 @@ public static function cooked_info_taxonomies() {
do_action( 'cooked_info_taxonomies_shortcode_after', $recipe_settings );
if ( $recipe_terms_list ):
- echo wp_filter_post_kses( $recipe_terms_list );
+ echo wp_kses_post( $recipe_terms_list );
endif;
endif;
@@ -833,10 +837,10 @@ public function cooked_notes_shortcode($atts, $content = null) {
if (isset($recipe_settings['notes']) && !empty($recipe_settings['notes'])) {
$notes = Cooked_Recipes::format_content($recipe_settings['notes']);
- $show_header = $show_header ? '
' . __('Notes', 'cooked') . '
' : '';
+ $show_header = $show_header ? '
' . esc_html__( 'Notes', 'cooked' ) . '
' : '';
echo '
';
- echo $show_header;
+ echo wp_kses_post( $show_header );
echo do_shortcode($notes);
echo '
';
}
@@ -975,7 +979,7 @@ public function cooked_nutrition_shortcode($atts, $content = null) {
echo '
' . esc_html( isset($nutrition_facts[$slug]) ? $nutrition_facts[$slug] : '' ) . '
';
echo '
';
else:
- echo '' . $servings_change . ' ' . esc_html(strtolower($nf['name'])) . '
';
+ echo '' . esc_html( $servings_change ) . ' ' . esc_html(strtolower($nf['name'])) . '
';
endif;
endforeach;
echo '
';
@@ -1017,8 +1021,8 @@ public function cooked_nutrition_shortcode($atts, $content = null) {
if ( isset( $nutrition_facts[$slug] ) && $nutrition_facts[$slug] || isset( $nutrition_facts[$slug] ) && $nutrition_facts[$slug] === '0' ):
echo '';
- echo '' . $nf['name'] . ' ' . esc_html( $nutrition_facts[$slug] ) . ' ' . ( isset($nf['measurement']) ? '' . esc_html__( $nf['measurement'], 'cooked' ) . ' ' : '' );
- echo ( isset( $nf['pdv'] ) && $nutrition_facts[$slug] ? '' . ceil( ( esc_html( $nutrition_facts[$slug] ) / $nf['pdv'] ) * 100 ) . ' % ' : '' );
+ echo '' . esc_html( $nf['name'] ) . ' ' . esc_html( $nutrition_facts[$slug] ) . ' ' . ( isset($nf['measurement']) ? '' . esc_html( $nf['measurement'] ) . ' ' : '' );
+ echo ( isset( $nf['pdv'] ) && $nutrition_facts[$slug] ? '' . esc_html( ceil( ( $nutrition_facts[$slug] / $nf['pdv'] ) * 100 ) ) . ' % ' : '' );
if ( isset($nf['subs']) ):
foreach( $nf['subs'] as $sub_slug => $sub_nf ):
@@ -1026,17 +1030,17 @@ public function cooked_nutrition_shortcode($atts, $content = null) {
echo ' ';
if ($sub_slug === 'trans_fat'):
echo '';
- echo $sub_nf['nutrition_info_name'] . ' ' . esc_html( $nutrition_facts[$sub_slug] ) . ' ' . ( isset($sub_nf['measurement']) ? '' . esc_html__( $sub_nf['measurement'], 'cooked' ) . ' ' : '' );
+ echo wp_kses_post( $sub_nf['nutrition_info_name'] ) . ' ' . esc_html( $nutrition_facts[$sub_slug] ) . ' ' . ( isset($sub_nf['measurement']) ? '' . esc_html( $sub_nf['measurement'] ) . ' ' : '' );
echo ' ';
elseif ($sub_slug === 'added_sugars'):
echo '';
- echo __('Includes', 'cooked') . ' ' . esc_html( $nutrition_facts[$sub_slug] ) . ' ' . ( isset($sub_nf['measurement']) ? '' . esc_html__( $sub_nf['measurement'], 'cooked' ) . ' ' : '' ) . ' ' . esc_html($sub_nf['name']);
- echo ( isset( $sub_nf['pdv'] ) ? '' . ceil( ( esc_html( $nutrition_facts[$sub_slug] ) / $sub_nf['pdv'] ) * 100 ) . ' % ' : '' );
+ echo esc_html__('Includes', 'cooked') . ' ' . esc_html( $nutrition_facts[$sub_slug] ) . ' ' . ( isset($sub_nf['measurement']) ? '' . esc_html( $sub_nf['measurement'] ) . ' ' : '' ) . ' ' . esc_html($sub_nf['name']);
+ echo ( isset( $sub_nf['pdv'] ) ? '' . esc_html( ceil( ( $nutrition_facts[$sub_slug] / $sub_nf['pdv'] ) * 100 ) ) . ' % ' : '' );
echo ' ';
else:
echo '';
- echo esc_html( $sub_nf['name'] ) . ' ' . esc_html( $nutrition_facts[$sub_slug] ) . ' ' . ( isset($sub_nf['measurement']) ? '' . esc_html__( $sub_nf['measurement'], 'cooked' ) . ' ' : '' );
- echo ( isset( $sub_nf['pdv'] ) && $nutrition_facts[$sub_slug] ? '' . ceil( ( esc_html( $nutrition_facts[$sub_slug] ) / $sub_nf['pdv'] ) * 100 ) . ' % ' : '' );
+ echo esc_html( $sub_nf['name'] ) . ' ' . esc_html( $nutrition_facts[$sub_slug] ) . ' ' . ( isset($sub_nf['measurement']) ? '' . esc_html( $sub_nf['measurement'] ) . ' ' : '' );
+ echo ( isset( $sub_nf['pdv'] ) && $nutrition_facts[$sub_slug] ? '' . esc_html( ceil( ( $nutrition_facts[$sub_slug] / $sub_nf['pdv'] ) * 100 ) ) . ' % ' : '' );
echo ' ';
endif;
echo ' ';
@@ -1065,8 +1069,8 @@ public function cooked_nutrition_shortcode($atts, $content = null) {
foreach ( $bottom_facts as $slug => $nf ):
if ( isset( $nutrition_facts[$slug] ) && $nutrition_facts[$slug] || isset( $nutrition_facts[$slug] ) && $nutrition_facts[$slug] === '0' ):
echo '';
- echo '' . esc_html($nf['name']) . ' ' . esc_html( $nutrition_facts[$slug] ) . ' ' . ( isset($nf['measurement']) ? '' . esc_html__( $nf['measurement'], 'cooked' ) . ' ' : '' );
- echo ( isset( $nf['pdv'] ) ? '' . ceil( ( esc_html( $nutrition_facts[$slug] ) / $nf['pdv'] ) * 100 ) . ' % ' : '' );
+ echo '' . esc_html($nf['name']) . ' ' . esc_html( $nutrition_facts[$slug] ) . ' ' . ( isset($nf['measurement']) ? '' . esc_html( $nf['measurement'] ) . ' ' : '' );
+ echo ( isset( $nf['pdv'] ) ? '' . esc_html( ceil( ( $nutrition_facts[$slug] / $nf['pdv'] ) * 100 ) ) . ' % ' : '' );
echo ' ';
endif;
endforeach;
@@ -1088,7 +1092,7 @@ public function cooked_nutrition_shortcode($atts, $content = null) {
echo ' ';
echo '';
- echo '' . __('Amount per serving','cooked') . ' ';
+ echo '' . esc_html__('Amount per serving','cooked') . ' ';
if ( isset($mid_facts_content) && $mid_facts_content ):
echo '';
@@ -1098,7 +1102,7 @@ public function cooked_nutrition_shortcode($atts, $content = null) {
if ( isset($main_facts_content) && $main_facts_content ):
echo ' ';
- echo '' . __('% Daily Value *','cooked'). ' ';
+ echo '' . esc_html__('% Daily Value *','cooked'). ' ';
echo '';
echo wp_kses_post( $main_facts_content );
echo ' ';
@@ -1120,11 +1124,11 @@ public function cooked_nutrition_shortcode($atts, $content = null) {
if ( isset($nutrition_facts_content) && $nutrition_facts_content ):
echo '';
- echo '
' . __('Nutrition Facts', 'cooked') . '
';
+ echo '
' . esc_html__('Nutrition Facts', 'cooked') . '
';
echo wp_kses_post( $nutrition_facts_content );
if ( isset($main_facts_content) && $main_facts_content || isset($bottom_facts_content) && $bottom_facts_content ):
echo '
';
- echo '
* ' . __('The % Daily Value (DV) tells you how much a nutrient in a serving of food contributes to a daily diet. 2,000 calories a day is used for general nutrition advice.','cooked') . '
';
+ echo '
* ' . esc_html__('The % Daily Value (DV) tells you how much a nutrient in a serving of food contributes to a daily diet. 2,000 calories a day is used for general nutrition advice.','cooked') . '
';
endif;
// Add the Edamam attribution "Powered by Edamam" if the Edamam API is enabled.
@@ -1193,8 +1197,10 @@ public function cooked_related_recipes_shortcode($atts, $content = null) {
// Check if it's a different post type
$post_check = get_post($recipe_id);
if ($post_check && $post_check->post_type !== 'cp_recipe') {
+ /* translators: %d: post ID */
$error_msg .= ' ' . sprintf(__('The specified ID (%d) is not a recipe.', 'cooked'), $recipe_id);
} elseif (!$post_check) {
+ /* translators: %d: post ID */
$error_msg .= ' ' . sprintf(__('No post found with ID %d.', 'cooked'), $recipe_id);
}
return '
' . esc_html($error_msg) . '
';
@@ -1247,7 +1253,7 @@ public function cooked_related_recipes_shortcode($atts, $content = null) {
foreach ($recipe_ids as $rid) {
echo '
';
- echo Cooked_Recipes::card($rid, false, $hide_image, false, $hide_excerpt, $hide_author);
+ echo wp_kses_post( Cooked_Recipes::card($rid, false, $hide_image, false, $hide_excerpt, $hide_author) );
echo '
';
}
diff --git a/includes/class.cooked-updates.php b/includes/class.cooked-updates.php
index 5bd9ae4..6dcad4c 100644
--- a/includes/class.cooked-updates.php
+++ b/includes/class.cooked-updates.php
@@ -45,12 +45,20 @@ class Cooked_Updates {
*/
private static $cooked_settings_saved;
+ /**
+ * Whether rewrite rules were already flushed this request.
+ *
+ * @var bool
+ */
+ private static $rewrite_rules_flushed = false;
+
/**
* Initialize the updates system
*/
public function __construct() {
// Add action to check version and update settings at the end of page load.
add_action( 'shutdown', [__CLASS__, 'init'] );
+ add_action( 'init', [ __CLASS__, 'maybe_heal_rewrite_rules' ], 99 );
}
/**
@@ -78,6 +86,8 @@ public static function init() {
if ( self::needs_update() ) {
self::run_updates();
}
+
+ self::maybe_flush_queued_rewrite_rules();
}
/**
@@ -108,14 +118,18 @@ private static function run_updates() {
// Run version-specific updates
self::run_version_updates();
+ self::update_rewrite_rules();
+
// Update both version numbers.
update_option( 'cooked_settings_version', self::$current_version );
if ( defined('COOKED_PRO_VERSION') ) {
update_option( 'cooked_pro_settings_version', self::$current_pro_version );
}
- // Log the update
- error_log( sprintf( 'Cooked: Updated from version %s to %s', $old_version, self::$current_version ) );
+ if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
+ // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
+ error_log( sprintf( 'Cooked: Updated from version %s to %s', $old_version, self::$current_version ) );
+ }
}
/**
@@ -131,7 +145,10 @@ private static function run_version_updates() {
try {
call_user_func( [__CLASS__, $method] );
} catch ( Exception $e ) {
- error_log( sprintf( 'Cooked: Error running update method %s: %s', $method, $e->getMessage() ) );
+ if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
+ // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
+ error_log( sprintf( 'Cooked: Error running update method %s: %s', $method, $e->getMessage() ) );
+ }
}
}
}
@@ -204,9 +221,11 @@ public static function run_tool( $tool_name ) {
}
}
if ( ! isset( $allowed[ $tool_name ] ) ) {
+ /* translators: %s: site health tool name */
return new \WP_Error( 'cooked_tool_invalid', sprintf( __( 'Unknown tool: %s.', 'cooked' ), $tool_name ) );
}
if ( ! method_exists( __CLASS__, $tool_name ) ) {
+ /* translators: %s: PHP method name */
return new \WP_Error( 'cooked_tool_missing', sprintf( __( 'Tool method %s does not exist.', 'cooked' ), $tool_name ) );
}
@@ -327,7 +346,8 @@ private static function fix_recipe_line_endings() {
}
// Log the update if any recipes were modified
- if ( $updated_count > 0 ) {
+ if ( $updated_count > 0 && defined( 'WP_DEBUG' ) && WP_DEBUG ) {
+ // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
error_log( sprintf( 'Cooked: Fixed line endings in %d recipes for WordPress exporter/importer compatibility.', $updated_count ) );
}
}
@@ -345,7 +365,10 @@ private static function purge_legacy_related_recipes_cache() {
delete_option( 'cooked_related_version' );
delete_option( 'cooked_related_calculation_last' );
- error_log( 'Cooked: Purged legacy related-recipes cache and options.' );
+ if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
+ // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
+ error_log( 'Cooked: Purged legacy related-recipes cache and options.' );
+ }
}
/**
@@ -378,19 +401,146 @@ private static function remove_recipes_from_cooked_user_meta() {
$updated_count++;
}
- if ( $updated_count > 0 ) {
+ if ( $updated_count > 0 && defined( 'WP_DEBUG' ) && WP_DEBUG ) {
+ // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
error_log( sprintf( 'Cooked: Removed legacy recipes key from %d user(s) cooked_user_meta.', $updated_count ) );
}
}
+ /**
+ * Soft-flush rewrite rules when any rule registered this request is missing
+ * from the stored rewrite_rules option.
+ *
+ * @since 1.16.0
+ * @return void
+ */
+ public static function maybe_heal_rewrite_rules() {
+ if ( self::registered_rewrite_rules_missing() ) {
+ self::update_rewrite_rules();
+ }
+ }
+
+ /**
+ * Queue a one-shot rewrite flush when registered rewrite rules are missing
+ * from the stored rewrite_rules option.
+ *
+ * @since 1.16.0
+ * @return void
+ */
+ public static function maybe_queue_rewrite_flush() {
+ if ( self::registered_rewrite_rules_missing() ) {
+ update_option( 'cooked_flush_rewrite_rules', '1' );
+ }
+ }
+
+ /**
+ * Whether the stored rewrite_rules option is missing any rewrite rule
+ * registered this request via add_rewrite_rule().
+ *
+ * @since 1.16.0
+ * @return bool
+ */
+ public static function registered_rewrite_rules_missing() {
+ if ( function_exists( 'wp_installing' ) && wp_installing() ) {
+ return false;
+ }
+
+ if ( ! get_option( 'permalink_structure' ) ) {
+ return false;
+ }
+
+ $registered = self::registered_extra_rewrite_rules();
+ if ( empty( $registered ) ) {
+ return false;
+ }
+
+ $stored = get_option( 'rewrite_rules' );
+ if ( ! is_array( $stored ) || empty( $stored ) ) {
+ return true;
+ }
+
+ foreach ( $registered as $regex => $query ) {
+ if ( array_key_exists( $regex, $stored ) ) {
+ continue;
+ }
+
+ if ( is_string( $query ) && in_array( $query, $stored, true ) ) {
+ continue;
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Rewrite rules added this request with add_rewrite_rule().
+ *
+ * @since 1.16.0
+ * @return array
+ */
+ private static function registered_extra_rewrite_rules() {
+ global $wp_rewrite;
+
+ if ( ! is_object( $wp_rewrite ) ) {
+ return [];
+ }
+
+ $rules = [];
+
+ if ( ! empty( $wp_rewrite->extra_rules_top ) && is_array( $wp_rewrite->extra_rules_top ) ) {
+ $rules = $wp_rewrite->extra_rules_top;
+ }
+
+ if ( ! empty( $wp_rewrite->extra_rules ) && is_array( $wp_rewrite->extra_rules ) ) {
+ $rules = array_merge( $rules, $wp_rewrite->extra_rules );
+ }
+
+ return $rules;
+ }
+
+ /**
+ * Soft-flush rewrite rules when a previous request queued it.
+ *
+ * @since 1.16.0
+ * @return void
+ */
+ public static function maybe_flush_queued_rewrite_rules() {
+ if ( ! get_option( 'cooked_flush_rewrite_rules' ) ) {
+ return;
+ }
+
+ self::update_rewrite_rules();
+ delete_option( 'cooked_flush_rewrite_rules' );
+ }
+
+ /**
+ * Reset per-request flush state. Used by tests.
+ *
+ * @since 1.16.0
+ * @return void
+ */
+ public static function reset_rewrite_flush_state() {
+ self::$rewrite_rules_flushed = false;
+ }
+
/**
* Update rewrite rules if needed
*
* @since 1.11.2
*/
private static function update_rewrite_rules() {
- flush_rewrite_rules();
- error_log( 'Cooked: Flushed rewrite rules due to version update.' );
+ if ( self::$rewrite_rules_flushed ) {
+ return;
+ }
+
+ flush_rewrite_rules( false );
+ self::$rewrite_rules_flushed = true;
+ if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
+ // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
+ error_log( 'Cooked: Flushed rewrite rules due to version update.' );
+ }
}
}
diff --git a/includes/class.cooked-widgets.php b/includes/class.cooked-widgets.php
index d4896f3..9d6c8b2 100644
--- a/includes/class.cooked-widgets.php
+++ b/includes/class.cooked-widgets.php
@@ -37,7 +37,7 @@ public function register_widgets() {
public static function recipe_finder( $field_id = '', $field_name = '', $included = '' ) {
$button_title = ( ! empty( $included ) ? __( 'Edit Recipe(s)...', 'cooked' ) : __( 'Choose recipe(s)...', 'cooked' ) );
echo '
';
- echo '
';
+ echo '';
if ( ! empty( $included ) ) :
foreach ( $included as $recipe ) :
$recipe_status = get_post_status( $recipe );
diff --git a/includes/widgets/init.php b/includes/widgets/init.php
index 90cec5c..1e6ec21 100644
--- a/includes/widgets/init.php
+++ b/includes/widgets/init.php
@@ -1,4 +1,8 @@
backup your database in case something goes wrong."
msgstr "Avant de commencer, assurez-vous de sauvegarder votre base de données au cas où quelque chose se passerait mal."
-#: includes/class.cooked-import.php:50
-#: includes/class.cooked-import.php:104
+#: includes/class.cooked-import.php:54
+#: includes/class.cooked-import.php:108
msgid "Click the button below to import these recipes. Here is what will happen to your recipes:"
msgstr "Cliquez sur le bouton ci-dessous pour importer ces recettes. Voici ce qui va se passer :"
-#: includes/class.cooked-import.php:52
-#: includes/class.cooked-import.php:106
+#: includes/class.cooked-import.php:56
+#: includes/class.cooked-import.php:110
msgid "Recipes will be imported with the 'Draft' status."
msgstr "Les recettes seront importées avec le statut « Brouillon » ."
-#: includes/class.cooked-import.php:53
-#: includes/class.cooked-import.php:107
+#: includes/class.cooked-import.php:57
+#: includes/class.cooked-import.php:111
msgid "Comments and ratings data will also be imported (ratings are available in Cooked Pro)."
msgstr "Les commentaires et les notes seront également importés (les notes sont disponibles dans Cooked Pro)."
-#: includes/class.cooked-import.php:54
-#: includes/class.cooked-import.php:109
+#: includes/class.cooked-import.php:58
+#: includes/class.cooked-import.php:113
msgid "After the import is complete, you can bulk edit the recipes and change their status to 'Published' ."
msgstr "Une fois l'importation terminée, vous pouvez modifier les recettes en masse et changer leur statut en « Publié » ."
-#: includes/class.cooked-import.php:55
+#: includes/class.cooked-import.php:59
msgid "The existing WP Delicious recipes and data will not be modified or deleted."
msgstr "Les recettes et données WP Delicious existantes ne seront ni modifiées ni supprimées."
-#: includes/class.cooked-import.php:56
-#: includes/class.cooked-import.php:111
+#: includes/class.cooked-import.php:60
+#: includes/class.cooked-import.php:115
msgid "Certain data that is not suppoted by Cooked will not be imported (such as Cooking Temp, Estimated Cost, Recipe Keywords, etc)."
msgstr "Certaines données non prises en charge par Cooked ne seront pas importées (température de cuisson, coût estimé, mots-clés de recette, etc.)."
-#: includes/class.cooked-import.php:57
-#: includes/class.cooked-import.php:112
+#: includes/class.cooked-import.php:61
+#: includes/class.cooked-import.php:116
msgid "You can run the import multiple times, but keep in mind that duplicate recipes will be created."
msgstr "Vous pouvez lancer l'importation plusieurs fois, mais des recettes en double seront créées."
-#: includes/class.cooked-import.php:61
-#: includes/class.cooked-import.php:116
+#: includes/class.cooked-import.php:65
+#: includes/class.cooked-import.php:120
#: includes/class.cooked-migration.php:58
msgid "Wow, you have a lot of recipes!"
msgstr "Wow, vous avez beaucoup de recettes !"
-#: includes/class.cooked-import.php:61
-#: includes/class.cooked-import.php:116
+#: includes/class.cooked-import.php:65
+#: includes/class.cooked-import.php:120
#: includes/class.cooked-migration.php:58
msgid "It is definitely recommended that you get yourself a cup of coffee or tea after clicking this button."
msgstr "Il est fortement recommandé de prendre une tasse de café ou de thé après avoir cliqué sur ce bouton."
-#: includes/class.cooked-import.php:63
-#: includes/class.cooked-import.php:118
-#: includes/class.cooked-import.php:170
+#: includes/class.cooked-import.php:67
+#: includes/class.cooked-import.php:122
+#: includes/class.cooked-import.php:174
#: includes/class.cooked-migration.php:60
msgid "Note:"
msgstr "Remarque :"
-#: includes/class.cooked-import.php:63
-#: includes/class.cooked-import.php:118
+#: includes/class.cooked-import.php:67
+#: includes/class.cooked-import.php:122
#: includes/class.cooked-migration.php:60
msgid "The more recipes you have, the longer this will take."
msgstr "Plus vous avez de recettes, plus cela prendra de temps."
-#: includes/class.cooked-import.php:68
-#: includes/class.cooked-import.php:83
+#: includes/class.cooked-import.php:72
+#: includes/class.cooked-import.php:87
msgid "WP Delicious - Import"
msgstr "WP Delicious - Importation"
-#: includes/class.cooked-import.php:108
+#: includes/class.cooked-import.php:112
msgid "The difficulty level will be set to Beginner since it is not supported by WP Recipe Maker."
msgstr "Le niveau de difficulté sera défini sur Débutant , car il n'est pas pris en charge par WP Recipe Maker."
-#: includes/class.cooked-import.php:110
+#: includes/class.cooked-import.php:114
msgid "The existing WP Recipe Maker and data will not be modified or deleted."
msgstr "Les recettes et données WP Recipe Maker existantes ne seront ni modifiées ni supprimées."
-#: includes/class.cooked-import.php:123
-#: includes/class.cooked-import.php:138
+#: includes/class.cooked-import.php:127
+#: includes/class.cooked-import.php:142
msgid "WP Recipe Maker - Import"
msgstr "WP Recipe Maker - Importation"
-#: includes/class.cooked-import.php:152
+#: includes/class.cooked-import.php:156
msgid "Import recipes from a CSV file. Your CSV file should include the following columns:"
msgstr "Importez des recettes depuis un fichier CSV. Votre fichier CSV doit inclure les colonnes suivantes :"
-#: includes/class.cooked-import.php:154
+#: includes/class.cooked-import.php:158
msgid "Recipe title (required)"
msgstr "Titre de la recette (obligatoire)"
-#: includes/class.cooked-import.php:156
+#: includes/class.cooked-import.php:160
msgid "Prep time in minutes"
msgstr "Temps de préparation en minutes"
-#: includes/class.cooked-import.php:157
+#: includes/class.cooked-import.php:161
msgid "Cook time in minutes"
msgstr "Temps de cuisson en minutes"
-#: includes/class.cooked-import.php:158
+#: includes/class.cooked-import.php:162
msgid "Difficulty level (1=Beginner, 2=Intermediate, 3=Advanced)"
msgstr "Niveau de difficulté (1=Débutant, 2=Intermédiaire, 3=Avancé)"
-#: includes/class.cooked-import.php:170
+#: includes/class.cooked-import.php:174
msgid "Recipes will be imported with the 'Draft' status. After the import is complete, you can bulk edit the recipes and change their status to 'Published' ."
msgstr "Les recettes seront importées avec le statut « Brouillon » . Une fois l'importation terminée, vous pouvez les modifier en masse et changer leur statut en « Publié » ."
-#: includes/class.cooked-import.php:173
+#: includes/class.cooked-import.php:177
msgid "CSV Import"
msgstr "Importation CSV"
-#: includes/class.cooked-import.php:177
+#: includes/class.cooked-import.php:181
msgid "Import Recipes via CSV"
msgstr "Importer des recettes via CSV"
-#: includes/class.cooked-import.php:185
+#: includes/class.cooked-import.php:189
msgid "More Imports are Coming Soon..."
msgstr "D'autres importations arrivent bientôt..."
-#: includes/class.cooked-import.php:206
+#: includes/class.cooked-import.php:210
msgid "Begin Import"
msgstr "Commencer l'importation"
-#: includes/class.cooked-import.php:211
-#: includes/class.cooked-import.php:234
-#: includes/class.cooked-settings.php:729
+#: includes/class.cooked-import.php:215
+#: includes/class.cooked-import.php:238
+#: includes/class.cooked-settings.php:741
msgid "reload"
msgstr "recharger"
-#: includes/class.cooked-import.php:229
+#: includes/class.cooked-import.php:233
msgid "Upload and Import CSV"
msgstr "Téléverser et importer le CSV"
-#: includes/class.cooked-import.php:234
+#: includes/class.cooked-import.php:238
msgid "Import Complete!"
msgstr "Importation terminée !"
-#: includes/class.cooked-import.php:234
+#: includes/class.cooked-import.php:238
msgid "You can now"
msgstr "Vous pouvez maintenant"
-#: includes/class.cooked-import.php:234
+#: includes/class.cooked-import.php:238
msgid "the import screen or"
msgstr "l'écran d'importation ou"
-#: includes/class.cooked-import.php:234
+#: includes/class.cooked-import.php:238
msgid "view your recipes"
msgstr "voir vos recettes"
@@ -744,8 +744,9 @@ msgid "Choose recipe(s)..."
msgstr "Choisir recette(s)..."
#. translators: singular and plural "steps"
-#: includes/class.cooked-recipes.php:1202
-#: includes/class.cooked-seo.php:83
+#. translators: %d: step number
+#: includes/class.cooked-recipes.php:1207
+#: includes/class.cooked-seo.php:84
#, php-format
msgid "Step %d"
msgstr "Étape %d"
@@ -808,7 +809,7 @@ msgstr "Masquer l'extrait"
msgid "Parent Category"
msgstr "Catégorie parente"
-#: includes/class.cooked-recipes.php:1285
+#: includes/class.cooked-recipes.php:1290
#: includes/class.cooked-taxonomies.php:41
#: includes/widgets/recipe-categories.php:63
msgid "All Categories"
@@ -874,7 +875,7 @@ msgid "What's new in %s?"
msgstr "Quoi de neuf dans %s ?"
#: includes/class.cooked-functions.php:127
-#: includes/class.cooked-shortcodes.php:717
+#: includes/class.cooked-shortcodes.php:721
msgid "Print"
msgstr "Imprimer"
@@ -894,103 +895,105 @@ msgstr "Informations"
msgid "Images"
msgstr "Images"
-#: includes/class.cooked-post-types.php:89
+#: includes/class.cooked-post-types.php:90
msgid "Photo"
msgstr "Photo"
-#: includes/class.cooked-post-types.php:433
-#: includes/class.cooked-settings.php:253
+#: includes/class.cooked-post-types.php:449
+#: includes/class.cooked-settings.php:265
msgid "Recipe Archive"
msgstr "Archive des recettes"
#: includes/class.cooked-admin-menus.php:36
#: includes/class.cooked-admin-menus.php:59
-#: includes/class.cooked-post-types.php:451
-#: includes/class.cooked-post-types.php:463
+#: includes/class.cooked-post-types.php:468
+#: includes/class.cooked-post-types.php:480
#: includes/class.cooked-users.php:166
msgid "Recipes"
msgstr "Recettes"
-#: includes/class.cooked-post-types.php:452
+#: includes/class.cooked-post-types.php:469
msgid "Recipe"
msgstr "Recette"
#: includes/class.cooked-admin-menus.php:37
#: includes/class.cooked-admin-menus.php:61
-#: includes/class.cooked-post-types.php:453
+#: includes/class.cooked-post-types.php:470
msgid "Add New"
msgstr "Ajouter une recette"
-#: includes/class.cooked-post-types.php:454
+#: includes/class.cooked-post-types.php:471
msgid "Add New Recipe"
msgstr "Ajouter une nouvelle recette"
-#: includes/class.cooked-post-types.php:455
+#: includes/class.cooked-post-types.php:472
msgid "New Recipe"
msgstr "Nouvelle recette"
-#: includes/class.cooked-post-types.php:456
+#: includes/class.cooked-post-types.php:473
msgid "Edit Recipe"
msgstr "Modifier la recette"
-#: includes/class.cooked-post-types.php:457
+#: includes/class.cooked-post-types.php:474
msgid "View Recipe"
msgstr "Voir la recette"
#: includes/class.cooked-admin-menus.php:60
-#: includes/class.cooked-post-types.php:458
+#: includes/class.cooked-post-types.php:475
msgid "All Recipes"
msgstr "Toutes les recettes"
-#: includes/class.cooked-post-types.php:459
+#: includes/class.cooked-post-types.php:476
msgid "Search Recipes"
msgstr "Rechercher des recettes"
-#: includes/class.cooked-post-types.php:460
+#: includes/class.cooked-post-types.php:477
msgid "No recipes found."
msgstr "Aucune recette trouvée."
-#: includes/class.cooked-post-types.php:461
+#: includes/class.cooked-post-types.php:478
msgid "No recipes found in trash."
msgstr "Aucune recette trouvée dans la corbeille."
-#: includes/class.cooked-post-types.php:489
+#: includes/class.cooked-post-types.php:506
msgid "Recipe title ..."
msgstr "Titre de la recette..."
-#: includes/class.cooked-post-types.php:520
+#: includes/class.cooked-post-types.php:537
msgid "Cooked Browse Recipes Page"
msgstr "Page Parcourir les recettes Cooked"
-#: includes/class.cooked-ajax.php:316
-#: includes/class.cooked-ajax.php:365
+#: includes/class.cooked-ajax.php:321
+#: includes/class.cooked-ajax.php:371
msgid "No default content provided."
msgstr "Aucun contenu par défaut fourni."
-#: includes/class.cooked-ajax.php:394
-#: includes/class.cooked-ajax.php:430
+#: includes/class.cooked-ajax.php:401
+#: includes/class.cooked-ajax.php:444
msgid "You do not have permission to import recipes."
msgstr "Vous n'avez pas l'autorisation d'importer des recettes."
#: includes/class.cooked-admin-enqueues.php:164
-#: includes/class.cooked-ajax.php:398
+#: includes/class.cooked-ajax.php:405
+#: includes/class.cooked-ajax.php:410
msgid "File upload failed."
msgstr "Échec du téléversement du fichier."
-#: includes/class.cooked-ajax.php:404
+#: includes/class.cooked-ajax.php:417
msgid "Invalid file type. Please upload a CSV file."
msgstr "Type de fichier invalide. Veuillez téléverser un fichier CSV."
-#: includes/class.cooked-ajax.php:437
+#: includes/class.cooked-ajax.php:451
msgid "CSV file not found. Please upload again."
msgstr "Fichier CSV introuvable. Veuillez le téléverser à nouveau."
-#: includes/class.cooked-ajax.php:453
+#. translators: %d: number of recipes imported
+#: includes/class.cooked-ajax.php:468
#, php-format
msgid "Successfully imported %d recipe(s)."
msgstr "%d recette(s) importée(s) avec succès."
-#: includes/class.cooked-ajax.php:462
+#: includes/class.cooked-ajax.php:477
msgid "No recipes were imported."
msgstr "Aucune recette n'a été importée."
@@ -998,8 +1001,8 @@ msgstr "Aucune recette n'a été importée."
msgid "Recipe Category"
msgstr "Catégorie de recette"
-#: includes/class.cooked-recipes.php:1283
-#: includes/class.cooked-settings.php:300
+#: includes/class.cooked-recipes.php:1288
+#: includes/class.cooked-settings.php:312
#: includes/class.cooked-taxonomies.php:38
#: includes/class.cooked-taxonomies.php:48
msgid "Categories"
@@ -1069,371 +1072,372 @@ msgstr "Passer à Pro"
msgid "You do not have sufficient permissions to access this page."
msgstr "Vous n'avez pas les autorisations suffisantes pour accéder à cette page."
-#: includes/class.cooked-settings.php:110
+#: includes/class.cooked-settings.php:119
msgid "Cooked settings has been updated!"
msgstr "Les réglages Cooked ont été mis à jour !"
-#: includes/class.cooked-settings.php:129
+#: includes/class.cooked-settings.php:140
msgid "Cooked Plugin Setup"
msgstr "Configuration du plugin Cooked"
-#: includes/class.cooked-settings.php:130
+#. translators: %s: Browse/Search Recipes Page link
+#: includes/class.cooked-settings.php:142
#, php-format
msgid "To display your recipes properly, please set up your %s."
msgstr "Pour afficher correctement vos recettes, veuillez configurer votre %s."
-#: includes/class.cooked-settings.php:131
-#: includes/class.cooked-settings.php:277
+#: includes/class.cooked-settings.php:143
+#: includes/class.cooked-settings.php:289
msgid "Browse/Search Recipes Page"
msgstr "Parcourir / Rechercher des pages de recettes"
-#: includes/class.cooked-settings.php:250
+#: includes/class.cooked-settings.php:262
msgid "Choose a page..."
msgstr "Choisir une page…"
-#: includes/class.cooked-settings.php:250
+#: includes/class.cooked-settings.php:262
msgid "No pages"
msgstr "Aucune page"
-#: includes/class.cooked-settings.php:251
+#: includes/class.cooked-settings.php:263
msgid "No default"
msgstr "Pas de choix par défaut"
-#: includes/class.cooked-recipes.php:1280
-#: includes/class.cooked-settings.php:251
+#: includes/class.cooked-recipes.php:1285
+#: includes/class.cooked-settings.php:263
msgid "No categories"
msgstr "Aucune catégories"
-#: includes/class.cooked-settings.php:273
+#: includes/class.cooked-settings.php:285
msgid "General"
msgstr "Général"
#. translators: a description on how to add the [cooked-browse] shortcode to a page
-#: includes/class.cooked-settings.php:279
+#: includes/class.cooked-settings.php:291
#, php-format
msgid "Create a page with the %s shortcode on it, then choose it from this dropdown."
msgstr "Créez une page avec le shortcode %s, puis sélectionnez-la dans la liste ci-dessous."
#. translators: a description on how to add the [cooked-browse] shortcode to a page
-#: includes/class.cooked-settings.php:279
+#: includes/class.cooked-settings.php:291
msgid "Note: This setting is required for the plugin to function properly."
msgstr "Remarque : ce réglage est requis pour que le plugin fonctionne correctement."
-#: includes/class.cooked-settings.php:285
+#: includes/class.cooked-settings.php:297
msgid "Recipes Per Page"
msgstr "Nombre de recettes par page"
#. translators: a description on how to choose the default number of recipes per page.
-#: includes/class.cooked-settings.php:287
+#: includes/class.cooked-settings.php:299
#, php-format
msgid "Choose the default (set via the %s panel) or choose a different number here."
msgstr "Choisissez la valeur par défaut (définie via le panneau %s) ou indiquez une autre valeur ici."
#. translators: a description on how to choose the default number of recipes per page.
-#: includes/class.cooked-settings.php:287
+#: includes/class.cooked-settings.php:299
msgid "Settings > Reading"
msgstr "Paramètres > Lecture"
-#: includes/class.cooked-settings.php:293
+#: includes/class.cooked-settings.php:305
msgid "Recipe Taxonomies"
msgstr "Taxonomies des recettes"
-#: includes/class.cooked-settings.php:294
+#: includes/class.cooked-settings.php:306
msgid "Choose which taxonomies you want to enable for your recipes."
msgstr "Choisissez les taxonomies que vous souhaitez activer pour vos recettes."
-#: includes/class.cooked-settings.php:305
+#: includes/class.cooked-settings.php:317
msgid "Global Recipe Toggles"
msgstr "Bascule de la totalité des recettes"
-#: includes/class.cooked-settings.php:306
+#: includes/class.cooked-settings.php:318
msgid "You can quickly hide or show different recipe elements (site-wide) with these checkboxes."
msgstr "Vous pouvez masquer ou afficher rapidement différents éléments de recette (sur l’ensemble du site) à l’aide de ces cases à cocher."
-#: includes/class.cooked-measurements.php:217
-#: includes/class.cooked-recipes.php:1003
-#: includes/class.cooked-settings.php:332
+#: includes/class.cooked-measurements.php:221
+#: includes/class.cooked-recipes.php:1008
+#: includes/class.cooked-settings.php:344
msgid "Servings"
msgstr "Parts"
-#: includes/class.cooked-settings.php:349
+#: includes/class.cooked-settings.php:361
msgid "Carbs Format"
msgstr "Format des glucides"
-#: includes/class.cooked-settings.php:350
+#: includes/class.cooked-settings.php:362
msgid "You can display carbs as \"Total\" or \"Net\"."
msgstr "Vous pouvez afficher les glucides comme « total » ou « net »."
-#: includes/class.cooked-settings.php:356
+#: includes/class.cooked-settings.php:368
msgid "Total Carbs"
msgstr "Glucides totaux"
-#: includes/class.cooked-settings.php:357
+#: includes/class.cooked-settings.php:369
msgid "Net Carbs"
msgstr "Glucides nets"
-#: includes/class.cooked-settings.php:362
+#: includes/class.cooked-settings.php:374
msgid "Author Name Format"
msgstr "Format du nom d'auteur"
-#: includes/class.cooked-settings.php:363
+#: includes/class.cooked-settings.php:375
msgid "You can show the full author's name or just a part of it."
msgstr "Vous pouvez afficher le nom complet de l’auteur ou seulement une partie de celui-ci."
-#: includes/class.cooked-settings.php:369
+#: includes/class.cooked-settings.php:381
msgid "Full name"
msgstr "Nom complet"
-#: includes/class.cooked-settings.php:370
+#: includes/class.cooked-settings.php:382
msgid "Full first name w/last name initial"
msgstr "Prénom complet / 1ère lettre du nom de famille"
-#: includes/class.cooked-settings.php:371
+#: includes/class.cooked-settings.php:383
msgid "First name initial w/full last name"
msgstr "1ère lettre du prénom / nom complet"
-#: includes/class.cooked-settings.php:372
+#: includes/class.cooked-settings.php:384
msgid "First name only"
msgstr "Prénom uniquement"
-#: includes/class.cooked-settings.php:377
+#: includes/class.cooked-settings.php:389
msgid "Author Links"
msgstr "Liens vers l'auteur"
-#: includes/class.cooked-settings.php:378
+#: includes/class.cooked-settings.php:390
msgid "If you do not want the author names to link to the author recipe listings, you can disable them here."
msgstr "Si vous ne souhaitez pas que les noms des auteurs soient reliés à leurs recettes, vous pouvez les désactiver ici."
-#: includes/class.cooked-settings.php:378
+#: includes/class.cooked-settings.php:390
msgid "Note: Author links require the Browse/Search Recipes Page to be set up correctly to function properly."
msgstr "Remarque : les liens d'auteur nécessitent une page Parcourir/Rechercher des recettes correctement configurée."
-#: includes/class.cooked-settings.php:385
+#: includes/class.cooked-settings.php:397
msgid "Disable Author Links"
msgstr "Désactiver les liens vers l’auteur"
-#: includes/class.cooked-settings.php:390
+#: includes/class.cooked-settings.php:402
msgid "Default Category"
msgstr "Catégorie par Défaut"
#. translators: a description on how to set the default recipe category for the [cooked-browse] shortcode.
-#: includes/class.cooked-settings.php:392
+#: includes/class.cooked-settings.php:404
#, php-format
msgid "Optionally set the default recipe category for your %s shortcode display."
msgstr "Si vous le voulez, vous pouvez indiquer une catégorie de recettes qui sera utilisée par défaut avec le shortcode %s."
-#: includes/class.cooked-settings.php:398
+#: includes/class.cooked-settings.php:410
msgid "Default Sort Order"
msgstr "Classement par défaut"
#. translators: a description on how to set the default sort order for the [cooked-browse] shortcode.
-#: includes/class.cooked-settings.php:400
+#: includes/class.cooked-settings.php:412
#, php-format
msgid "Set the default sort order for your %s shortcode display."
msgstr "Indiquez l'ordre de tri qui sera utilisé par défaut avec avec le shortcode %s."
-#: includes/class.cooked-settings.php:406
+#: includes/class.cooked-settings.php:418
msgid "Newest First"
msgstr "La plus récente en premier"
-#: includes/class.cooked-settings.php:407
+#: includes/class.cooked-settings.php:419
msgid "Oldest First"
msgstr "La plus ancienne en premier"
-#: includes/class.cooked-settings.php:408
+#: includes/class.cooked-settings.php:420
msgid "Alphabetical"
msgstr "Alphabétique"
-#: includes/class.cooked-settings.php:409
+#: includes/class.cooked-settings.php:421
msgid "Alphabetical (reversed)"
msgstr "Alphabétique (inversé)"
-#: includes/class.cooked-settings.php:414
+#: includes/class.cooked-settings.php:426
msgid "Section Heading Default HTML Tag"
msgstr "Balise HTML par défaut des titres de section"
#. translators: a description on how to set the default sort order for the [cooked-browse] shortcode.
-#: includes/class.cooked-settings.php:416
+#: includes/class.cooked-settings.php:428
msgid "Set the default HTML tag for your section headings."
msgstr "Définissez la balise HTML par défaut pour vos titres de section."
-#: includes/class.cooked-settings.php:422
+#: includes/class.cooked-settings.php:434
msgid "div"
msgstr "div"
-#: includes/class.cooked-settings.php:423
+#: includes/class.cooked-settings.php:435
msgid "h2"
msgstr "h2"
-#: includes/class.cooked-settings.php:424
+#: includes/class.cooked-settings.php:436
msgid "h3"
msgstr "h3"
-#: includes/class.cooked-settings.php:425
+#: includes/class.cooked-settings.php:437
msgid "h4"
msgstr "h4"
-#: includes/class.cooked-settings.php:426
+#: includes/class.cooked-settings.php:438
msgid "h5"
msgstr "h5"
-#: includes/class.cooked-settings.php:427
+#: includes/class.cooked-settings.php:439
msgid "h6"
msgstr "h6"
-#: includes/class.cooked-settings.php:432
+#: includes/class.cooked-settings.php:444
msgid "WP Editor Roles"
msgstr "Rôles de l'éditeur WP"
-#: includes/class.cooked-settings.php:433
+#: includes/class.cooked-settings.php:445
msgid "Choose which user roles can use the WP Editor for the Excerpt, Directions & Notes fields."
msgstr "Choisissez quels rôles peuvent utiliser l'éditeur WP pour l'extrait, les instructions et les notes."
-#: includes/class.cooked-settings.php:439
+#: includes/class.cooked-settings.php:451
msgid "Advanced Settings"
msgstr "Paramètres Avancés"
#. translators: an option to only show recipes with the [cooked-recipe] shortcode.
-#: includes/class.cooked-settings.php:449
+#: includes/class.cooked-settings.php:461
msgid "Disable Public Recipes"
msgstr "Désactiver les recettes publiques"
#. translators: an option to only show recipes with the [cooked-recipe] shortcode.
-#: includes/class.cooked-settings.php:449
+#: includes/class.cooked-settings.php:461
#, php-format
msgid "Only show recipes using the %s shortcode."
msgstr "Afficher uniquement les recettes en utilisant le shortcode %s."
#. translators: an option to disable "meta" tags.
-#: includes/class.cooked-settings.php:451
+#: includes/class.cooked-settings.php:463
#, php-format
msgid "Disable %s Tags"
msgstr "Désactiver les mots-clés %s"
#. translators: an option to disable "meta" tags.
-#: includes/class.cooked-settings.php:451
+#: includes/class.cooked-settings.php:463
msgid "Prevents duplicates when tags already exist."
msgstr "Empêcher les doublons lorsque les mots-clés existent déjà."
-#: includes/class.cooked-settings.php:452
+#: includes/class.cooked-settings.php:464
msgid "Disable \"Servings Switcher\""
msgstr "Désactiver le \"Sélecteur de parts\""
-#: includes/class.cooked-settings.php:452
+#: includes/class.cooked-settings.php:464
msgid "Removes the servings dropdown on recipes."
msgstr "Supprimer la liste déroulante indiquant le nombre de parts sur les recettes."
-#: includes/class.cooked-settings.php:454
+#: includes/class.cooked-settings.php:466
msgid "Disable Recipe Schema Output"
msgstr "Désactiver la sortie de schéma de recette"
-#: includes/class.cooked-settings.php:454
+#: includes/class.cooked-settings.php:466
msgid "You should only do this if you're using something else to output schema information."
msgstr "Vous ne devriez le faire que si vous utilisez autre chose pour produire des informations sur les schémas."
-#: includes/class.cooked-settings.php:455
+#: includes/class.cooked-settings.php:467
msgid "Disable Recipe Archive Page"
msgstr "Désactiver la page d'archive des recettes"
-#: includes/class.cooked-settings.php:466
+#: includes/class.cooked-settings.php:478
msgid "Design"
msgstr "Design"
-#: includes/class.cooked-settings.php:470
+#: includes/class.cooked-settings.php:482
msgid "Dark Mode"
msgstr "Mode sombre"
-#: includes/class.cooked-settings.php:487
+#: includes/class.cooked-settings.php:499
msgid "Author Images"
msgstr "Images de l’auteur"
-#: includes/class.cooked-settings.php:488
+#: includes/class.cooked-settings.php:500
msgid "If you do not want to display the author images (avatars), you can disable them here."
msgstr "Si vous ne voulez pas afficher les images des auteurs (avatars), faites-le ici."
-#: includes/class.cooked-settings.php:495
+#: includes/class.cooked-settings.php:507
msgid "Hide Author Images"
msgstr "Masquer l'avatar de l’auteur"
-#: includes/class.cooked-settings.php:506
+#: includes/class.cooked-settings.php:518
msgid "Main Color"
msgstr "Couleur Principale"
-#: includes/class.cooked-settings.php:507
+#: includes/class.cooked-settings.php:519
msgid "Used on buttons, cooking timer, etc."
msgstr "Utilisée sur les boutons, minuteur, etc.."
-#: includes/class.cooked-settings.php:513
+#: includes/class.cooked-settings.php:525
msgid "Main Color (on hover)"
msgstr "Couleur Principale (au survol)"
-#: includes/class.cooked-settings.php:514
+#: includes/class.cooked-settings.php:526
msgid "Used when hovering over buttons."
msgstr "Utilisée lorsque vous passez la souris sur les boutons."
-#: includes/class.cooked-settings.php:520
+#: includes/class.cooked-settings.php:532
msgid "First Responsive Breakpoint"
msgstr "Premier Point de rupture Responsive"
-#: includes/class.cooked-settings.php:521
+#: includes/class.cooked-settings.php:533
msgid "Set the first responsive breakpoint. Best for large tablets."
msgstr "Définissez le premier point de rupture responsive. Utilisé pour les grandes tablettes."
-#: includes/class.cooked-settings.php:527
+#: includes/class.cooked-settings.php:539
msgid "Second Responsive Breakpoint"
msgstr "Second Point de rupture Responsive"
-#: includes/class.cooked-settings.php:528
+#: includes/class.cooked-settings.php:540
msgid "Set the second responsive breakpoint. Best for small tablets."
msgstr "Définissez le deuxième point de rupture responsive. Utilisé pour les petites tablettes."
-#: includes/class.cooked-settings.php:534
+#: includes/class.cooked-settings.php:546
msgid "Third Responsive Breakpoint"
msgstr "Troisième Point de rupture Responsive"
-#: includes/class.cooked-settings.php:535
+#: includes/class.cooked-settings.php:547
msgid "Set the third responsive breakpoint. Best for phones and other small devices."
msgstr "Définissez le troisième point de rupture responsive. Utilisé pour les smartphones."
-#: includes/class.cooked-settings.php:543
+#: includes/class.cooked-settings.php:555
msgid "Permalinks"
msgstr "Permaliens"
-#: includes/class.cooked-settings.php:547
+#: includes/class.cooked-settings.php:559
msgid "Recipe Permalink"
msgstr "Permalien de la recette"
-#: includes/class.cooked-settings.php:550
+#: includes/class.cooked-settings.php:562
msgid "recipe-name"
msgstr "nom-de-la-recette"
-#: includes/class.cooked-settings.php:554
+#: includes/class.cooked-settings.php:566
msgid "Recipe Author Permalink"
msgstr "Permalien de l’auteur de la recette"
-#: includes/class.cooked-settings.php:557
+#: includes/class.cooked-settings.php:569
msgid "author-name"
msgstr "nom-de-l-auteur"
-#: includes/class.cooked-settings.php:561
+#: includes/class.cooked-settings.php:573
msgid "Recipe Category Permalink"
msgstr "Permalien de la catégorie de recette"
-#: includes/class.cooked-settings.php:564
+#: includes/class.cooked-settings.php:576
msgid "recipe-category-name"
msgstr "nom-categorie-recette"
#. translators: posts_per_page default
-#: includes/class.cooked-settings.php:575
+#: includes/class.cooked-settings.php:587
#, php-format
msgid "WordPress Default %s"
msgstr "WordPress par défaut %s"
-#: includes/class.cooked-settings.php:580
+#: includes/class.cooked-settings.php:592
msgid "Show All (no pagination)"
msgstr "Afficher tout (sans pagination)"
-#: includes/class.cooked-settings.php:724
+#: includes/class.cooked-settings.php:736
msgid "Begin Migration"
msgstr "Commencez la migration"
@@ -1459,6 +1463,7 @@ msgstr "kilogrammes"
#: includes/class.cooked-measurements.php:45
#: includes/class.cooked-measurements.php:46
+#: includes/class.cooked-measurements.php:215
msgid "mg"
msgstr "mg"
@@ -1470,7 +1475,7 @@ msgstr "milligramme"
msgid "milligrams"
msgstr "milligrammes"
-#: includes/class.cooked-measurements.php:471
+#: includes/class.cooked-measurements.php:216
msgid "mcg"
msgstr "mcg"
@@ -1716,232 +1721,232 @@ msgstr "boîte"
msgid "cans"
msgstr "boîtes"
-#: includes/class.cooked-measurements.php:221
+#: includes/class.cooked-measurements.php:225
msgid "Serving size"
msgstr "Taille de portion"
-#: includes/class.cooked-measurements.php:228
+#: includes/class.cooked-measurements.php:232
msgid "Calories"
msgstr "Calories"
-#: includes/class.cooked-measurements.php:235
+#: includes/class.cooked-measurements.php:239
msgid "Total Fat"
msgstr "Graisse totale"
-#: includes/class.cooked-measurements.php:241
+#: includes/class.cooked-measurements.php:245
msgid "Saturated Fat"
msgstr "Acides gras saturés"
-#: includes/class.cooked-measurements.php:247
+#: includes/class.cooked-measurements.php:251
msgid "Trans Fat"
msgstr "Acides gras insaturés"
-#: includes/class.cooked-measurements.php:248
+#: includes/class.cooked-measurements.php:252
msgid "Trans Fat"
msgstr "Graisses trans "
-#: includes/class.cooked-measurements.php:253
+#: includes/class.cooked-measurements.php:257
msgid "Monounsaturated Fat"
msgstr "Acides gras monoinsaturés"
-#: includes/class.cooked-measurements.php:258
+#: includes/class.cooked-measurements.php:262
msgid "Polyunsaturated Fat"
msgstr "Acides gras polyinsaturés"
-#: includes/class.cooked-measurements.php:265
+#: includes/class.cooked-measurements.php:269
msgid "Cholesterol"
msgstr "Cholesterol"
-#: includes/class.cooked-measurements.php:271
+#: includes/class.cooked-measurements.php:275
msgid "Sodium"
msgstr "Sodium"
-#: includes/class.cooked-measurements.php:277
+#: includes/class.cooked-measurements.php:281
msgid "Total Carbohydrate"
msgstr "Glucides totaux"
-#: includes/class.cooked-measurements.php:277
+#: includes/class.cooked-measurements.php:281
msgid "Net Carbohydrate"
msgstr "Glucides nets"
-#: includes/class.cooked-measurements.php:283
+#: includes/class.cooked-measurements.php:287
msgid "Dietary Fiber"
msgstr "Fibre alimentaire"
-#: includes/class.cooked-measurements.php:289
+#: includes/class.cooked-measurements.php:293
msgid "Total Sugars"
msgstr "Sucres totaux"
-#: includes/class.cooked-measurements.php:295
+#: includes/class.cooked-measurements.php:299
msgid "Added Sugars"
msgstr "Sucres ajoutés"
-#: includes/class.cooked-measurements.php:303
+#: includes/class.cooked-measurements.php:307
msgid "Protein"
msgstr "Protéine"
-#: includes/class.cooked-measurements.php:312
+#: includes/class.cooked-measurements.php:316
msgid "Vitamin A"
msgstr "Vitamine A"
-#: includes/class.cooked-measurements.php:318
+#: includes/class.cooked-measurements.php:322
msgid "Vitamin C"
msgstr "Vitamine C"
-#: includes/class.cooked-measurements.php:324
+#: includes/class.cooked-measurements.php:328
msgid "Calcium"
msgstr "Calcium"
-#: includes/class.cooked-measurements.php:330
+#: includes/class.cooked-measurements.php:334
msgid "Iron"
msgstr "Fer"
-#: includes/class.cooked-measurements.php:336
+#: includes/class.cooked-measurements.php:340
msgid "Potassium"
msgstr "Potassium"
-#: includes/class.cooked-measurements.php:342
+#: includes/class.cooked-measurements.php:346
msgid "Vitamin D"
msgstr "Vitamine D"
-#: includes/class.cooked-measurements.php:348
+#: includes/class.cooked-measurements.php:352
msgid "Vitamin E"
msgstr "Vitamine E"
-#: includes/class.cooked-measurements.php:354
+#: includes/class.cooked-measurements.php:358
msgid "Vitamin K"
msgstr "Vitamine K"
-#: includes/class.cooked-measurements.php:360
+#: includes/class.cooked-measurements.php:364
msgid "Thiamin"
msgstr "Vitamine B1 (Thiamin)"
-#: includes/class.cooked-measurements.php:366
+#: includes/class.cooked-measurements.php:370
msgid "Riboflavin"
msgstr "Vitamine B2 (Riboflavine)"
-#: includes/class.cooked-measurements.php:372
+#: includes/class.cooked-measurements.php:376
msgid "Niacin"
msgstr "Vitamine B3 (Niacine)"
-#: includes/class.cooked-measurements.php:378
+#: includes/class.cooked-measurements.php:382
msgid "Vitamin B6"
msgstr "Vitamine B6"
-#: includes/class.cooked-measurements.php:384
+#: includes/class.cooked-measurements.php:388
msgid "Folate"
msgstr "Vitamine B9 (Folate)"
-#: includes/class.cooked-measurements.php:390
+#: includes/class.cooked-measurements.php:394
msgid "Vitamin B12"
msgstr "Vitamine B12"
-#: includes/class.cooked-measurements.php:396
+#: includes/class.cooked-measurements.php:400
msgid "Biotin"
msgstr "Vitamine B8 (Biotine)"
-#: includes/class.cooked-measurements.php:402
+#: includes/class.cooked-measurements.php:406
msgid "Pantothenic Acid"
msgstr "Vitamine B5 (Acide pantothénique)"
-#: includes/class.cooked-measurements.php:408
+#: includes/class.cooked-measurements.php:412
msgid "Phosphorus"
msgstr "Phosphore"
-#: includes/class.cooked-measurements.php:414
+#: includes/class.cooked-measurements.php:418
msgid "Iodine"
msgstr "Iode"
-#: includes/class.cooked-measurements.php:420
+#: includes/class.cooked-measurements.php:424
msgid "Magnesium"
msgstr "Magnésium"
-#: includes/class.cooked-measurements.php:426
+#: includes/class.cooked-measurements.php:430
msgid "Zinc"
msgstr "Zinc"
-#: includes/class.cooked-measurements.php:432
+#: includes/class.cooked-measurements.php:436
msgid "Selenium"
msgstr "Sélénium"
-#: includes/class.cooked-measurements.php:438
+#: includes/class.cooked-measurements.php:442
msgid "Copper"
msgstr "Cuivre"
-#: includes/class.cooked-measurements.php:444
+#: includes/class.cooked-measurements.php:448
msgid "Manganese"
msgstr "Manganèse"
-#: includes/class.cooked-measurements.php:450
+#: includes/class.cooked-measurements.php:454
msgid "Chromium"
msgstr "Chromium"
-#: includes/class.cooked-measurements.php:456
+#: includes/class.cooked-measurements.php:460
msgid "Molybdenum"
msgstr "Molybdène"
-#: includes/class.cooked-measurements.php:462
+#: includes/class.cooked-measurements.php:466
msgid "Chloride"
msgstr "Chlorure"
#. translators: singular and plural number of minutes (shorthand)
-#: includes/class.cooked-measurements.php:721
-#: includes/class.cooked-measurements.php:732
-#: includes/class.cooked-measurements.php:750
+#: includes/class.cooked-measurements.php:722
+#: includes/class.cooked-measurements.php:733
+#: includes/class.cooked-measurements.php:751
#, php-format
msgid "%d min"
msgstr "%d min"
#. translators: singular and plural number of minutes (shorthand)
-#: includes/class.cooked-measurements.php:721
-#: includes/class.cooked-measurements.php:732
-#: includes/class.cooked-measurements.php:750
+#: includes/class.cooked-measurements.php:722
+#: includes/class.cooked-measurements.php:733
+#: includes/class.cooked-measurements.php:751
#, php-format
msgid "%d mins"
msgstr "%d mins"
#. translators: singular and plural number of hours (shorthand)
-#: includes/class.cooked-measurements.php:730
-#: includes/class.cooked-measurements.php:748
+#: includes/class.cooked-measurements.php:731
+#: includes/class.cooked-measurements.php:749
#, php-format
msgid "%d hr"
msgstr "%d h"
#. translators: singular and plural number of hours (shorthand)
-#: includes/class.cooked-measurements.php:730
-#: includes/class.cooked-measurements.php:748
+#: includes/class.cooked-measurements.php:731
+#: includes/class.cooked-measurements.php:749
#, php-format
msgid "%d hrs"
msgstr "%d h"
#. translators: singular and plural number of days
-#: includes/class.cooked-measurements.php:746
+#: includes/class.cooked-measurements.php:747
#, php-format
msgid "%d day"
msgstr "%d jour"
#. translators: singular and plural number of days
-#: includes/class.cooked-measurements.php:746
+#: includes/class.cooked-measurements.php:747
#, php-format
msgid "%d days"
msgstr "%d jours"
#. translators: referring to the bottom of the Settings page.
-#: includes/class.cooked-shortcodes.php:167
+#: includes/class.cooked-shortcodes.php:168
#, php-format
msgid "Public recipes are currently disabled. You can change this at the bottom of the %s page."
msgstr "Les recettes publiques sont actuellement désactivées. Vous pouvez le modifier en bas de la page %s."
-#: includes/class.cooked-shortcodes.php:328
+#: includes/class.cooked-shortcodes.php:331
msgid "(recipe not found or in draft status)"
msgstr "(recette introuvable ou en statut brouillon)"
-#: includes/class.cooked-recipes.php:996
-#: includes/class.cooked-shortcodes.php:508
+#: includes/class.cooked-recipes.php:1001
+#: includes/class.cooked-shortcodes.php:512
msgid "Yields"
msgstr "Portions"
-#: includes/class.cooked-shortcodes.php:723
+#: includes/class.cooked-shortcodes.php:727
msgid "Fullscreen"
msgstr "Plein écran"
@@ -2041,49 +2046,49 @@ msgstr "min"
#. translators: stating the recipe author with a "By" in front of it. (ex: "By John Smith")
#. translators: referring to the author (ex: By John Smith)
-#: includes/class.cooked-recipes.php:298
-#: includes/class.cooked-recipes.php:352
+#: includes/class.cooked-recipes.php:300
+#: includes/class.cooked-recipes.php:354
#: templates/front/recipe-single.php:47
#, php-format
msgid "By %s"
msgstr "Par %s"
#. translators: For showing "All" of a taxonomy (ex: "All Burgers")
-#: includes/class.cooked-recipes.php:445
+#: includes/class.cooked-recipes.php:449
#, php-format
msgid "All %s"
msgstr "Tous les %s"
-#: includes/class.cooked-recipes.php:829
+#: includes/class.cooked-recipes.php:833
msgid "Beginner"
msgstr "Facile"
-#: includes/class.cooked-recipes.php:830
+#: includes/class.cooked-recipes.php:834
msgid "Intermediate"
msgstr "Moyen"
-#: includes/class.cooked-recipes.php:831
+#: includes/class.cooked-recipes.php:835
msgid "Advanced"
msgstr "Avancé"
-#: includes/class.cooked-recipes.php:857
+#: includes/class.cooked-recipes.php:861
msgid "Cooked Gallery"
msgstr "Galerie de recette"
-#: includes/class.cooked-recipes.php:861
+#: includes/class.cooked-recipes.php:865
msgid "Envira Gallery"
msgstr "Galerie Envira"
-#: includes/class.cooked-recipes.php:865
+#: includes/class.cooked-recipes.php:869
msgid "Soliloquy Slider"
msgstr "Diaporama Soliloquy"
-#: includes/class.cooked-recipes.php:869
+#: includes/class.cooked-recipes.php:873
msgid "Slider Revolution"
msgstr "Slider Revolution"
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:970
+#: includes/class.cooked-recipes.php:975
#, php-format
msgid "Quarter (%s Serving)"
msgid_plural "Quarter (%s Servings)"
@@ -2091,7 +2096,7 @@ msgstr[0] "Quart (%s portion)"
msgstr[1] "Quart (%s portions)"
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:973
+#: includes/class.cooked-recipes.php:978
#, php-format
msgid "Half (%s Serving)"
msgid_plural "Half (%s Servings)"
@@ -2099,7 +2104,7 @@ msgstr[0] "Demi (%s portion)"
msgstr[1] "Demi (%s portions)"
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:976
+#: includes/class.cooked-recipes.php:981
#, php-format
msgid "Default (%s Serving)"
msgid_plural "Default (%s Servings)"
@@ -2107,56 +2112,56 @@ msgstr[0] "Par défaut (%s portion)"
msgstr[1] "Par défaut (%s portions)"
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:979
+#: includes/class.cooked-recipes.php:984
#, php-format
msgid "Double (%s Servings)"
msgstr "Double (%s portions)"
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:982
+#: includes/class.cooked-recipes.php:987
#, php-format
msgid "Triple (%s Servings)"
msgstr "Triple (%s portions)"
#. translators: singular and plural "serving" sizes
-#: includes/class.cooked-recipes.php:1000
-#: includes/class.cooked-recipes.php:1011
+#: includes/class.cooked-recipes.php:1005
+#: includes/class.cooked-recipes.php:1016
#, php-format
msgid "%s Serving"
msgid_plural "%s Servings"
msgstr[0] "%s portion"
msgstr[1] "%s portions"
-#: includes/class.cooked-recipes.php:1143
-#: includes/class.cooked-recipes.php:1157
+#: includes/class.cooked-recipes.php:1148
+#: includes/class.cooked-recipes.php:1162
msgid "or"
msgstr "ou"
-#: includes/class.cooked-recipes.php:1262
+#: includes/class.cooked-recipes.php:1267
msgid "Browse"
msgstr "Parcourir"
-#: includes/class.cooked-recipes.php:1356
+#: includes/class.cooked-recipes.php:1361
msgid "Find a recipe..."
msgstr "Trouvez une recette..."
-#: includes/class.cooked-recipes.php:1358
+#: includes/class.cooked-recipes.php:1363
msgid "Search"
msgstr "Rechercher"
-#: includes/class.cooked-recipes.php:1371
+#: includes/class.cooked-recipes.php:1376
msgid "Newest first"
msgstr "Plus récentes en premier"
-#: includes/class.cooked-recipes.php:1375
+#: includes/class.cooked-recipes.php:1380
msgid "Oldest first"
msgstr "Les plus anciennes en premier"
-#: includes/class.cooked-recipes.php:1379
+#: includes/class.cooked-recipes.php:1384
msgid "Alphabetical (A-Z)"
msgstr "Ordre Alphabétique (A-Z)"
-#: includes/class.cooked-recipes.php:1383
+#: includes/class.cooked-recipes.php:1388
msgid "Alphabetical (Z-A)"
msgstr "Ordre Alphabétique (Z-A)"
@@ -2229,15 +2234,15 @@ msgstr "Précalculer les recettes associées pour toutes les recettes publiées
msgid "Last: %1$s · %2$s recipes"
msgstr "Dernier : %1$s · %2$s recettes"
-#: includes/class.cooked-admin-enqueues.php:173
+#: includes/class.cooked-admin-enqueues.php:176
msgid "Bulk Add Ingredients"
msgstr "Ajout groupé d'ingrédients"
-#: includes/class.cooked-admin-enqueues.php:174
+#: includes/class.cooked-admin-enqueues.php:177
msgid "Bulk Add Directions"
msgstr "Ajout groupé d'instructions"
-#: includes/class.cooked-admin-enqueues.php:175
+#: includes/class.cooked-admin-enqueues.php:178
msgid ""
"2 cups flour\n"
"1 tsp salt\n"
@@ -2249,7 +2254,7 @@ msgstr ""
"1/2 tasse de sucre\n"
"3 gros œufs"
-#: includes/class.cooked-admin-enqueues.php:176
+#: includes/class.cooked-admin-enqueues.php:179
msgid ""
"Preheat oven to 350°F.\n"
"Mix dry ingredients together.\n"
@@ -2259,32 +2264,32 @@ msgstr ""
"Mélanger les ingrédients secs.\n"
"Ajouter les ingrédients humides et remuer."
-#: includes/class.cooked-admin-enqueues.php:177
-#: includes/class.cooked-recipe-meta.php:1748
+#: includes/class.cooked-admin-enqueues.php:180
+#: includes/class.cooked-recipe-meta.php:1761
msgid "Section heading"
msgstr "Titre de section"
-#: includes/class.cooked-admin-enqueues.php:178
+#: includes/class.cooked-admin-enqueues.php:181
msgid "Parsing..."
msgstr "Analyse..."
-#: includes/class.cooked-admin-enqueues.php:179
+#: includes/class.cooked-admin-enqueues.php:182
msgid "Add Ingredients"
msgstr "Ajouter les ingrédients"
-#: includes/class.cooked-admin-enqueues.php:180
+#: includes/class.cooked-admin-enqueues.php:183
msgid "Add Directions"
msgstr "Ajouter les instructions"
-#: includes/class.cooked-admin-enqueues.php:184
+#: includes/class.cooked-admin-enqueues.php:187
msgid "Heading text"
msgstr "Texte du titre"
-#: includes/class.cooked-ajax.php:470
+#: includes/class.cooked-ajax.php:486
msgid "Security check failed."
msgstr "Échec de la vérification de sécurité."
-#: includes/class.cooked-ajax.php:476
+#: includes/class.cooked-ajax.php:492
msgid "No ingredients provided."
msgstr "Aucun ingrédient fourni."
@@ -2387,314 +2392,321 @@ msgstr "Aucun outil disponible."
msgid "Row %1$d: Unknown error"
msgstr "Ligne %1$d : erreur inconnue"
+#. translators: 1: CSV row number, 2: error message
#. translators: 1: row number, 2: error message
-#: includes/class.cooked-csv-import.php:123
-#: includes/class.cooked-csv-import.php:188
+#: includes/class.cooked-csv-import.php:124
+#: includes/class.cooked-csv-import.php:189
#, php-format
msgid "Row %1$d: %2$s"
msgstr "Ligne %1$d : %2$s"
#. translators: %d: row number
-#: includes/class.cooked-csv-import.php:156
+#: includes/class.cooked-csv-import.php:157
#, php-format
msgid "Row %1$d: Title is required"
msgstr "Ligne %1$d : le titre est obligatoire"
-#: includes/class.cooked-import.php:155
+#: includes/class.cooked-import.php:159
msgid "Excerpt/description"
msgstr "Extrait/description"
-#: includes/class.cooked-import.php:159
+#: includes/class.cooked-import.php:163
msgid "Ingredients, separated by pipe (|). Format: \"amount|measurement|name\" or \"name\" for simple ingredients. Add substitutions with double pipe (||): \"amount|measurement|name||sub_amount|sub_measurement|sub_name\""
msgstr "Ingrédients séparés par une barre verticale (|). Format : \"quantité|mesure|nom\" ou \"nom\" pour les ingrédients simples. Ajoutez les substitutions avec une double barre (||) : \"quantité|mesure|nom||sub_quantité|sub_mesure|sub_nom\""
-#: includes/class.cooked-import.php:160
+#: includes/class.cooked-import.php:164
msgid "Directions/instructions, separated by pipe (|)"
msgstr "Instructions séparées par une barre verticale (|)"
-#: includes/class.cooked-import.php:162
+#: includes/class.cooked-import.php:166
msgid "Category, separated by comma"
msgstr "Catégorie, séparée par des virgules"
-#: includes/class.cooked-import.php:164
+#: includes/class.cooked-import.php:168
msgid "Cuisine, separated by comma"
msgstr "Cuisine, séparée par des virgules"
-#: includes/class.cooked-import.php:165
+#: includes/class.cooked-import.php:169
msgid "Cooking method, separated by comma"
msgstr "Méthode de cuisson, séparée par des virgules"
-#: includes/class.cooked-import.php:166
+#: includes/class.cooked-import.php:170
msgid "Tags, separated by comma"
msgstr "Étiquettes, séparées par des virgules"
-#: includes/class.cooked-import.php:167
+#: includes/class.cooked-import.php:171
msgid "Restricted diet type (Schema.org RestrictedDiet), separated by comma"
msgstr "Type de régime restreint (Schema.org RestrictedDiet), séparé par des virgules"
-#: includes/class.cooked-multilingual.php:260
+#: includes/class.cooked-multilingual.php:262
msgid "Multilingual Setup:"
msgstr "Configuration multilingue :"
-#: includes/class.cooked-multilingual.php:261
+#: includes/class.cooked-multilingual.php:263
msgid "Your Browse/Search Recipes page is missing translations for:"
msgstr "Votre page Parcourir/Rechercher des recettes n'a pas de traductions pour :"
#. translators: %s is the multilingual plugin name (Polylang or WPML)
-#: includes/class.cooked-multilingual.php:266
+#: includes/class.cooked-multilingual.php:268
#, php-format
msgid "Create translations of your browse page in %s for full multilingual support."
msgstr "Créez des traductions de votre page parcourir en %s pour une prise en charge multilingue complète."
-#: includes/class.cooked-recipe-meta.php:217
+#. translators: %s: recipe embed shortcode
+#: includes/class.cooked-recipe-meta.php:229
#, php-format
msgid "This recipe is set up to include itself in the Recipe Template (containing shortcode %s), which can break the page. Remove the embed that references this same recipe."
msgstr "Cette recette est configurée pour s'inclure elle-même dans le modèle de recette (contenant le shortcode %s), ce qui peut casser la page. Supprimez l'intégration qui référence cette même recette."
-#: includes/class.cooked-recipe-meta.php:258
+#: includes/class.cooked-recipe-meta.php:271
msgid "Enter one item per line. Use the checkboxes below to mark section headings."
msgstr "Saisissez un élément par ligne. Utilisez les cases ci-dessous pour marquer les titres de section."
-#: includes/class.cooked-recipe-meta.php:261
+#: includes/class.cooked-recipe-meta.php:274
msgid "Preview"
msgstr "Aperçu"
-#: includes/class.cooked-recipe-meta.php:265
+#: includes/class.cooked-recipe-meta.php:278
msgid "Please review the parsed fields before adding. Automatic parsing may misread amounts—for example, a range written as 2-3 could appear as 23 unless you correct it."
msgstr "Veuillez vérifier les champs analysés avant d'ajouter. L'analyse automatique peut mal interpréter les quantités — par exemple, une plage 2-3 peut apparaître comme 23 si vous ne la corrigez pas."
-#: includes/class.cooked-recipe-meta.php:270
+#: includes/class.cooked-recipe-meta.php:283
msgid "Cancel"
msgstr "Annuler"
-#: includes/class.cooked-recipe-meta.php:301
+#: includes/class.cooked-recipe-meta.php:314
msgid "Recipe Card"
msgstr "Carte de recette"
-#: includes/class.cooked-recipe-meta.php:302
+#: includes/class.cooked-recipe-meta.php:315
msgid "Displays a compact linked recipe card with image, title, author, and excerpt — not the full recipe. Use this to promote this recipe elsewhere on your site."
msgstr "Affiche une carte de recette compacte avec image, titre, auteur et extrait — pas la recette complète. Utilisez-la pour promouvoir cette recette ailleurs sur votre site."
-#: includes/class.cooked-recipe-meta.php:310
+#: includes/class.cooked-recipe-meta.php:323
msgid "Choose \"modern\" or \"modern-centered\"."
msgstr "Choisissez « modern » ou « modern-centered »."
-#: includes/class.cooked-recipe-meta.php:317
+#: includes/class.cooked-recipe-meta.php:330
msgid "Set the card width. Defaults to 100%. Use \"%\" or \"px\" after the number."
msgstr "Définissez la largeur de la carte. Par défaut 100 %. Utilisez « % » ou « px » après le nombre."
-#: includes/class.cooked-recipe-meta.php:327
+#: includes/class.cooked-recipe-meta.php:340
msgid "Hide the recipe excerpt."
msgstr "Masquer l'extrait de la recette."
-#: includes/class.cooked-recipe-meta.php:334
+#: includes/class.cooked-recipe-meta.php:347
msgid "Hide the recipe author."
msgstr "Masquer l'auteur de la recette."
-#: includes/class.cooked-recipe-meta.php:344
+#: includes/class.cooked-recipe-meta.php:357
msgid "Hide the recipe image."
msgstr "Masquer l'image de la recette."
-#: includes/class.cooked-recipe-meta.php:351
+#: includes/class.cooked-recipe-meta.php:364
msgid "Hide the recipe title."
msgstr "Masquer le titre de la recette."
-#: includes/class.cooked-recipe-meta.php:363
-#: includes/class.cooked-recipe-meta.php:1747
+#: includes/class.cooked-recipe-meta.php:376
+#: includes/class.cooked-recipe-meta.php:1760
msgid "Recipe ID"
msgstr "ID de recette"
-#: includes/class.cooked-recipe-meta.php:364
+#: includes/class.cooked-recipe-meta.php:377
msgid "Card width"
msgstr "Largeur de la carte"
-#: includes/class.cooked-recipe-meta.php:365
+#: includes/class.cooked-recipe-meta.php:378
msgid "modern, modern-centered"
msgstr "modern, modern-centered"
-#: includes/class.cooked-recipe-meta.php:366
-#: includes/class.cooked-recipe-meta.php:367
-#: includes/class.cooked-recipe-meta.php:368
-#: includes/class.cooked-recipe-meta.php:369
-#: includes/class.cooked-recipe-meta.php:1751
-#: includes/class.cooked-recipe-meta.php:1752
-#: includes/class.cooked-recipe-meta.php:1753
-#: includes/class.cooked-recipe-meta.php:1754
+#: includes/class.cooked-recipe-meta.php:379
+#: includes/class.cooked-recipe-meta.php:380
+#: includes/class.cooked-recipe-meta.php:381
+#: includes/class.cooked-recipe-meta.php:382
+#: includes/class.cooked-recipe-meta.php:1764
+#: includes/class.cooked-recipe-meta.php:1765
+#: includes/class.cooked-recipe-meta.php:1766
+#: includes/class.cooked-recipe-meta.php:1767
msgid "true/false"
msgstr "true/false"
-#: includes/class.cooked-recipe-meta.php:371
-#: includes/class.cooked-recipe-meta.php:1756
+#: includes/class.cooked-recipe-meta.php:384
+#: includes/class.cooked-recipe-meta.php:1769
msgid "Example"
msgstr "Exemple"
-#: includes/class.cooked-recipe-meta.php:797
-#: includes/class.cooked-recipe-meta.php:1021
+#: includes/class.cooked-recipe-meta.php:810
+#: includes/class.cooked-recipe-meta.php:1034
msgid "Bulk Add"
msgstr "Ajout groupé"
-#: includes/class.cooked-recipe-meta.php:1640
+#: includes/class.cooked-recipe-meta.php:1653
msgid "Next & Previous Recipe Navigation"
msgstr "Navigation recette suivante et précédente"
-#: includes/class.cooked-recipe-meta.php:1641
+#: includes/class.cooked-recipe-meta.php:1654
msgid "This will display navigation links to the next and previous recipes."
msgstr "Affiche les liens de navigation vers les recettes suivante et précédente."
-#: includes/class.cooked-recipe-meta.php:1645
+#: includes/class.cooked-recipe-meta.php:1658
msgid "This shortcode automatically displays the previous and next recipe links based on the current recipe page. No parameters are required."
msgstr "Ce shortcode affiche automatiquement les liens vers la recette précédente et suivante selon la page actuelle. Aucun paramètre requis."
-#: includes/class.cooked-recipe-meta.php:1650
+#: includes/class.cooked-recipe-meta.php:1663
msgid "Usage"
msgstr "Utilisation"
-#: includes/class.cooked-recipe-meta.php:1652
+#: includes/class.cooked-recipe-meta.php:1665
msgid "Simply add the shortcode to your recipe template or content area. The navigation will automatically show the previous and next recipes based on recipe ID order."
msgstr "Ajoutez simplement le shortcode à votre modèle de recette ou zone de contenu. La navigation affichera automatiquement les recettes précédente et suivante selon l'ordre des ID."
-#: includes/class.cooked-recipe-meta.php:1665
+#: includes/class.cooked-recipe-meta.php:1678
#: includes/class.cooked-related-recipes.php:34
msgid "Related Recipes"
msgstr "Recettes associées"
-#: includes/class.cooked-recipe-meta.php:1666
+#: includes/class.cooked-recipe-meta.php:1679
msgid "Displays a grid of related recipes based on shared terms in any of the recipe taxonomies (categories, cuisines, cooking methods, tags, diets), shown in random order. No cache or pre-calculation."
msgstr "Affiche une grille de recettes associées selon les termes partagés dans les taxonomies (catégories, cuisines, méthodes de cuisson, étiquettes, régimes), dans un ordre aléatoire. Sans cache ni précalcul."
-#: includes/class.cooked-recipe-meta.php:1674
+#: includes/class.cooked-recipe-meta.php:1687
msgid "Specify a recipe ID. If not provided, uses the current recipe."
msgstr "Indiquez un ID de recette. Sinon, la recette actuelle est utilisée."
-#: includes/class.cooked-recipe-meta.php:1681
+#: includes/class.cooked-recipe-meta.php:1694
msgid "Set the heading text for the related recipes section."
msgstr "Définissez le texte du titre de la section recettes associées."
-#: includes/class.cooked-recipe-meta.php:1691
+#: includes/class.cooked-recipe-meta.php:1704
msgid "Number of recipes to display (default: 4)."
msgstr "Nombre de recettes à afficher (par défaut : 4)."
-#: includes/class.cooked-recipe-meta.php:1698
+#: includes/class.cooked-recipe-meta.php:1711
msgid "Number of columns in the grid (default: 2)."
msgstr "Nombre de colonnes dans la grille (par défaut : 2)."
-#: includes/class.cooked-recipe-meta.php:1708
+#: includes/class.cooked-recipe-meta.php:1721
msgid "Hide recipe card images."
msgstr "Masquer les images des cartes de recettes."
-#: includes/class.cooked-recipe-meta.php:1715
+#: includes/class.cooked-recipe-meta.php:1728
msgid "Hide recipe card excerpts."
msgstr "Masquer les extraits des cartes de recettes."
-#: includes/class.cooked-recipe-meta.php:1725
+#: includes/class.cooked-recipe-meta.php:1738
msgid "Hide recipe card authors."
msgstr "Masquer les auteurs des cartes de recettes."
-#: includes/class.cooked-recipe-meta.php:1732
+#: includes/class.cooked-recipe-meta.php:1745
msgid "Toggle which taxonomies are used: match_categories, match_cuisines, match_cooking_methods, match_tags, match_diets (default: true)."
msgstr "Activez les taxonomies utilisées : match_categories, match_cuisines, match_cooking_methods, match_tags, match_diets (par défaut : true)."
-#: includes/class.cooked-recipe-meta.php:1739
+#: includes/class.cooked-recipe-meta.php:1752
msgid "Matching options:"
msgstr "Options de correspondance :"
-#: includes/class.cooked-recipe-meta.php:1740
+#: includes/class.cooked-recipe-meta.php:1753
msgid "Set to false to exclude a taxonomy from related recipes, e.g. match_cuisines=\"false\" to ignore cuisines."
msgstr "Mettez false pour exclure une taxonomie, ex. match_cuisines=\"false\" pour ignorer les cuisines."
-#: includes/class.cooked-recipe-meta.php:1749
+#: includes/class.cooked-recipe-meta.php:1762
msgid "Number of recipes"
msgstr "Nombre de recettes"
-#: includes/class.cooked-recipe-meta.php:1750
+#: includes/class.cooked-recipe-meta.php:1763
msgid "Grid columns"
msgstr "Colonnes de la grille"
-#: includes/class.cooked-settings.php:337
+#: includes/class.cooked-settings.php:349
msgid "Print View"
msgstr "Vue d'impression"
-#: includes/class.cooked-shortcodes.php:359
+#. translators: %s: recipe embed shortcode
+#: includes/class.cooked-shortcodes.php:363
#, php-format
msgid "This recipe could not be displayed because it is set up to include itself (containing shortcode %s). Remove the duplicate recipe embed from the Recipe Template."
msgstr "Cette recette n'a pas pu être affichée car elle est configurée pour s'inclure elle-même (shortcode %s). Supprimez l'intégration en double du modèle de recette."
-#: includes/class.cooked-shortcodes.php:1175
+#: includes/class.cooked-shortcodes.php:1179
msgid "Invalid recipe ID specified. Please provide a valid numeric recipe ID."
msgstr "ID de recette invalide. Veuillez fournir un ID numérique valide."
-#: includes/class.cooked-shortcodes.php:1185
+#: includes/class.cooked-shortcodes.php:1189
msgid "No recipe found. Please specify a recipe ID using the id attribute, or use this shortcode on a recipe page."
msgstr "Aucune recette trouvée. Indiquez un ID avec l'attribut id, ou utilisez ce shortcode sur une page de recette."
-#: includes/class.cooked-shortcodes.php:1192
+#: includes/class.cooked-shortcodes.php:1196
msgid "Recipe not found."
msgstr "Recette introuvable."
-#: includes/class.cooked-shortcodes.php:1196
+#. translators: %d: post ID
+#: includes/class.cooked-shortcodes.php:1201
#, php-format
msgid "The specified ID (%d) is not a recipe."
msgstr "L'ID spécifié (%d) n'est pas une recette."
-#: includes/class.cooked-shortcodes.php:1198
+#. translators: %d: post ID
+#: includes/class.cooked-shortcodes.php:1204
#, php-format
msgid "No post found with ID %d."
msgstr "Aucun article trouvé avec l'ID %d."
-#: includes/class.cooked-shortcodes.php:1207
+#: includes/class.cooked-shortcodes.php:1213
msgid "No related recipes found."
msgstr "Aucune recette associée trouvée."
-#: includes/class.cooked-shortcodes.php:1210
+#: includes/class.cooked-shortcodes.php:1216
msgid "This may be because there are no other recipes in the current language with matching attributes."
msgstr "Cela peut être dû à l'absence d'autres recettes dans la langue actuelle avec des attributs correspondants."
-#: includes/class.cooked-shortcodes.php:1212
+#: includes/class.cooked-shortcodes.php:1218
msgid "Try adjusting the matching criteria or ensure you have other published recipes with shared categories, tags, or ingredients."
msgstr "Ajustez les critères de correspondance ou assurez-vous d'avoir d'autres recettes publiées avec des catégories, étiquettes ou ingrédients communs."
-#: includes/class.cooked-updates.php:150
+#: includes/class.cooked-updates.php:167
msgid "Flush rewrite rules"
msgstr "Vider les règles de réécriture"
-#: includes/class.cooked-updates.php:151
+#: includes/class.cooked-updates.php:168
msgid "Refreshes permalink rules for recipe and profile URLs."
msgstr "Actualise les règles de permaliens pour les URLs de recettes et de profils."
-#: includes/class.cooked-updates.php:154
+#: includes/class.cooked-updates.php:171
msgid "Fix recipe line endings"
msgstr "Corriger les fins de ligne des recettes"
-#: includes/class.cooked-updates.php:155
+#: includes/class.cooked-updates.php:172
msgid "Normalizes line endings in recipe content for exporter/importer compatibility."
msgstr "Normalise les fins de ligne du contenu des recettes pour la compatibilité export/import."
-#: includes/class.cooked-updates.php:158
+#: includes/class.cooked-updates.php:175
msgid "Purge legacy related recipes cache"
msgstr "Purger l'ancien cache des recettes associées"
-#: includes/class.cooked-updates.php:159
+#: includes/class.cooked-updates.php:176
msgid "Removes old transients and options from the previous related-recipes cache."
msgstr "Supprime les anciens transients et options de l'ancien cache des recettes associées."
-#: includes/class.cooked-updates.php:162
+#: includes/class.cooked-updates.php:179
msgid "Remove recipes from user meta"
msgstr "Supprimer les recettes des métadonnées utilisateur"
-#: includes/class.cooked-updates.php:163
+#: includes/class.cooked-updates.php:180
msgid "Removes the legacy \"recipes\" key from all users' cooked_user_meta."
msgstr "Supprime l'ancienne clé « recipes » des cooked_user_meta de tous les utilisateurs."
-#: includes/class.cooked-updates.php:196
+#: includes/class.cooked-updates.php:213
msgid "Tool name is required."
msgstr "Le nom de l'outil est obligatoire."
-#: includes/class.cooked-updates.php:207
+#. translators: %s: site health tool name
+#: includes/class.cooked-updates.php:225
#, php-format
msgid "Unknown tool: %s."
msgstr "Outil inconnu : %s."
-#: includes/class.cooked-updates.php:210
+#. translators: %s: PHP method name
+#: includes/class.cooked-updates.php:229
#, php-format
msgid "Tool method %s does not exist."
msgstr "La méthode d'outil %s n'existe pas."
@@ -2719,6 +2731,7 @@ msgstr "Valeurs nutritionnelles automatiques"
msgid "Use coupon code %1$s for %2$s off!"
msgstr "Utilisez le code promo %1$s pour %2$s de réduction !"
+#. translators: 1: plugin name, 2: Settings link, 3: documentation link, 4: Discord link
#: templates/admin/welcome.php:16
#, php-format
msgid "If this is your first time using %1$s, head over to the %2$s page for some initial configuration. You can also check out the %3$s if you get stuck or contact me on %4$s. If you just recently updated, you can find out what's new below."
@@ -2748,19 +2761,19 @@ msgstr "Gora Tech"
msgid "https://goratech.dev"
msgstr "https://goratech.dev"
-#: includes/class.cooked-import.php:220
+#: includes/class.cooked-import.php:224
msgid "Download sample CSV files:"
msgstr "Télécharger des fichiers CSV d’exemple :"
-#: includes/class.cooked-import.php:221
+#: includes/class.cooked-import.php:225
msgid "Small (1 recipe)"
msgstr "Petit (1 recette)"
-#: includes/class.cooked-import.php:222
+#: includes/class.cooked-import.php:226
msgid "Medium (3 recipes)"
msgstr "Moyen (3 recettes)"
-#: includes/class.cooked-import.php:223
+#: includes/class.cooked-import.php:227
msgid "Large (10 recipes)"
msgstr "Grand (10 recettes)"
@@ -2784,39 +2797,39 @@ msgctxt "Kilograms Abbreviation (Plural)"
msgid "kg"
msgstr "kg"
-#: includes/class.cooked-recipes.php:935
-#: includes/class.cooked-recipes.php:945
+#: includes/class.cooked-recipes.php:939
+#: includes/class.cooked-recipes.php:949
msgid "Default"
msgstr "Par défaut"
-#: includes/class.cooked-recipes.php:936
-#: includes/class.cooked-recipes.php:946
+#: includes/class.cooked-recipes.php:940
+#: includes/class.cooked-recipes.php:950
msgid "Metric"
msgstr "Métrique"
-#: includes/class.cooked-recipes.php:937
-#: includes/class.cooked-recipes.php:947
+#: includes/class.cooked-recipes.php:941
+#: includes/class.cooked-recipes.php:951
msgid "Imperial"
msgstr "Impérial"
-#: includes/class.cooked-recipes.php:941
+#: includes/class.cooked-recipes.php:945
msgid "Units"
msgstr "Unités"
-#: includes/class.cooked-recipes.php:943
+#: includes/class.cooked-recipes.php:947
msgid "Measurement System"
msgstr "Système de mesure"
-#: includes/class.cooked-settings.php:453
+#: includes/class.cooked-settings.php:465
msgid "Enable \"Measurement System Switcher\""
msgstr "Activer le « sélecteur de système de mesure »"
-#: includes/class.cooked-settings.php:453
+#: includes/class.cooked-settings.php:465
msgid "Shows the Metric/Imperial toggle on recipes."
msgstr "Affiche la bascule Métrique/Impérial sur les recettes."
#. translators: %s: recipe archive URL, e.g. https://example.com/recipe-archive
-#: includes/class.cooked-settings.php:457
+#: includes/class.cooked-settings.php:469
#, php-format
msgid "Prevents the recipe archive from being displayed at %s."
msgstr "Empêche l’affichage de l’archive des recettes à l’adresse %s."
@@ -2897,7 +2910,7 @@ msgstr "Obtenir %s"
msgid "Update Settings"
msgstr "Mettre à jour les paramètres"
-#: includes/class.cooked-recipe-meta.php:118
+#: includes/class.cooked-recipe-meta.php:124
#: templates/admin/settings.php:10
#: templates/admin/welcome.php:33
msgid "Cooked Settings"
@@ -2932,14 +2945,14 @@ msgid "Recipes by %s"
msgstr "Recettes par %s"
#: includes/class.cooked-admin-enqueues.php:141
-#: includes/class.cooked-recipe-meta.php:922
-#: includes/class.cooked-recipe-meta.php:1002
-#: includes/class.cooked-recipe-meta.php:1040
+#: includes/class.cooked-recipe-meta.php:935
+#: includes/class.cooked-recipe-meta.php:1015
+#: includes/class.cooked-recipe-meta.php:1053
msgid "Add Video"
msgstr "Ajouter une vidéo"
#: includes/class.cooked-admin-enqueues.php:142
-#: includes/class.cooked-recipe-meta.php:922
+#: includes/class.cooked-recipe-meta.php:935
msgid "Change Video"
msgstr "Changer la vidéo"
@@ -2963,34 +2976,48 @@ msgstr " et définissez le mode sombre sur Auto ."
msgid "Pixwell's dark mode toggle is enabled. Choose Auto so Cooked follows it when visitors switch themes."
msgstr "La bascule de mode sombre de Pixwell est activée. Choisissez Auto pour que Cooked la suive lorsque les visiteurs changent de thème."
-#: includes/class.cooked-settings.php:338
+#: includes/class.cooked-settings.php:350
msgid "When enabled, the website logo will appear at the top of the recipe print screen."
msgstr "Lorsque cette option est activée, le logo du site apparaît en haut de l'écran d'impression de la recette."
-#: includes/class.cooked-settings.php:344
+#: includes/class.cooked-settings.php:356
msgid "Show Website Logo"
msgstr "Afficher le logo du site"
-#: includes/class.cooked-settings.php:473
+#: includes/class.cooked-settings.php:485
msgid "Use Auto if your theme has a visitor dark mode toggle. Cooked will then match that choice. Otherwise leave this Off."
msgstr "Utilisez Auto si votre thème propose une bascule de mode sombre pour les visiteurs. Cooked suivra alors ce choix. Sinon, laissez cette option sur Désactivé."
-#: includes/class.cooked-settings.php:480
+#: includes/class.cooked-settings.php:492
msgid "Off"
msgstr "Désactivé"
-#: includes/class.cooked-settings.php:481
+#: includes/class.cooked-settings.php:493
msgid "On"
msgstr "Activé"
-#: includes/class.cooked-settings.php:482
+#: includes/class.cooked-settings.php:494
msgid "Auto (match theme dark mode)"
msgstr "Auto (suivre le mode sombre du thème)"
-#: includes/class.cooked-settings.php:500
+#: includes/class.cooked-settings.php:512
msgid "Default Recipe Image"
msgstr "Image de recette par défaut"
-#: includes/class.cooked-settings.php:501
+#: includes/class.cooked-settings.php:513
msgid "Used as the featured image for recipes that do not have one set."
msgstr "Utilisée comme image mise en avant pour les recettes qui n’en ont pas."
+
+#: includes/class.cooked-measurements.php:214
+msgid "g"
+msgstr "g"
+
+#: includes/class.cooked-post-types.php:466
+msgctxt "post type general name"
+msgid "Recipes"
+msgstr "Recettes"
+
+#: includes/class.cooked-post-types.php:467
+msgctxt "post type singular name"
+msgid "Recipe"
+msgstr "Recette"
diff --git a/languages/cooked.po b/languages/cooked.po
index bb298cf..0d7ab28 100644
--- a/languages/cooked.po
+++ b/languages/cooked.po
@@ -36,16 +36,16 @@ msgid "remaining"
msgstr ""
#: includes/class.cooked-admin-enqueues.php:138
-#: includes/class.cooked-recipe-meta.php:912
-#: includes/class.cooked-recipe-meta.php:979
-#: includes/class.cooked-recipe-meta.php:1030
-#: includes/class.cooked-settings.php:802
+#: includes/class.cooked-recipe-meta.php:925
+#: includes/class.cooked-recipe-meta.php:992
+#: includes/class.cooked-recipe-meta.php:1043
+#: includes/class.cooked-settings.php:814
msgid "Add Image"
msgstr ""
#: includes/class.cooked-admin-enqueues.php:139
-#: includes/class.cooked-recipe-meta.php:912
-#: includes/class.cooked-settings.php:802
+#: includes/class.cooked-recipe-meta.php:925
+#: includes/class.cooked-settings.php:814
msgid "Change Image"
msgstr ""
@@ -54,7 +54,7 @@ msgid "Use this Image"
msgstr ""
#: includes/class.cooked-admin-enqueues.php:144
-#: includes/class.cooked-recipe-meta.php:1269
+#: includes/class.cooked-recipe-meta.php:1282
msgid "Add to Gallery"
msgstr ""
@@ -94,22 +94,22 @@ msgstr ""
#: includes/class.cooked-admin-menus.php:36
#: includes/class.cooked-admin-menus.php:59
-#: includes/class.cooked-post-types.php:451
-#: includes/class.cooked-post-types.php:463
+#: includes/class.cooked-post-types.php:468
+#: includes/class.cooked-post-types.php:480
#: includes/class.cooked-users.php:166
msgid "Recipes"
msgstr ""
#: includes/class.cooked-admin-menus.php:37
#: includes/class.cooked-admin-menus.php:61
-#: includes/class.cooked-post-types.php:453
+#: includes/class.cooked-post-types.php:470
msgid "Add New"
msgstr ""
#. translators: referring to the bottom of the Settings page.
#: includes/class.cooked-admin-menus.php:45
#: includes/class.cooked-admin-menus.php:65
-#: includes/class.cooked-shortcodes.php:167
+#: includes/class.cooked-shortcodes.php:168
#: templates/admin/welcome.php:18
msgid "Settings"
msgstr ""
@@ -128,7 +128,7 @@ msgid "Upgrade to Pro"
msgstr ""
#: includes/class.cooked-admin-menus.php:60
-#: includes/class.cooked-post-types.php:458
+#: includes/class.cooked-post-types.php:475
msgid "All Recipes"
msgstr ""
@@ -139,30 +139,30 @@ msgstr ""
msgid "You do not have sufficient permissions to access this page."
msgstr ""
-#: includes/class.cooked-ajax.php:187
-#: includes/class.cooked-csv-import.php:392
+#: includes/class.cooked-ajax.php:207
+#: includes/class.cooked-csv-import.php:393
#: includes/class.cooked-functions.php:134
-#: includes/class.cooked-recipe-meta.php:177
-#: includes/class.cooked-recipe-meta.php:415
-#: includes/class.cooked-recipe-meta.php:1347
-#: includes/class.cooked-recipes.php:740
-#: includes/class.cooked-recipes.php:772
+#: includes/class.cooked-recipe-meta.php:187
+#: includes/class.cooked-recipe-meta.php:428
+#: includes/class.cooked-recipe-meta.php:1360
+#: includes/class.cooked-recipes.php:744
+#: includes/class.cooked-recipes.php:776
msgid "Ingredients"
msgstr ""
-#: includes/class.cooked-ajax.php:187
-#: includes/class.cooked-csv-import.php:392
+#: includes/class.cooked-ajax.php:207
+#: includes/class.cooked-csv-import.php:393
#: includes/class.cooked-functions.php:135
-#: includes/class.cooked-recipe-meta.php:177
-#: includes/class.cooked-recipe-meta.php:421
-#: includes/class.cooked-recipe-meta.php:1378
-#: includes/class.cooked-recipes.php:744
-#: includes/class.cooked-recipes.php:773
+#: includes/class.cooked-recipe-meta.php:187
+#: includes/class.cooked-recipe-meta.php:434
+#: includes/class.cooked-recipe-meta.php:1391
+#: includes/class.cooked-recipes.php:748
+#: includes/class.cooked-recipes.php:777
msgid "Directions"
msgstr ""
#: includes/class.cooked-enqueues.php:56
-#: includes/class.cooked-recipe-meta.php:1593
+#: includes/class.cooked-recipe-meta.php:1606
msgid "Timer"
msgstr ""
@@ -173,7 +173,7 @@ msgid "What's new in %s?"
msgstr ""
#: includes/class.cooked-functions.php:127
-#: includes/class.cooked-shortcodes.php:717
+#: includes/class.cooked-shortcodes.php:721
msgid "Print"
msgstr ""
@@ -190,8 +190,8 @@ msgid "Information"
msgstr ""
#: includes/class.cooked-functions.php:132
-#: includes/class.cooked-recipe-meta.php:1538
-#: includes/class.cooked-settings.php:327
+#: includes/class.cooked-recipe-meta.php:1551
+#: includes/class.cooked-settings.php:339
msgid "Excerpt"
msgstr ""
@@ -200,108 +200,108 @@ msgid "Images"
msgstr ""
#: includes/class.cooked-functions.php:136
-#: includes/class.cooked-import.php:161
-#: includes/class.cooked-recipe-meta.php:1562
-#: includes/class.cooked-recipes.php:747
-#: includes/class.cooked-settings.php:328
-#: includes/class.cooked-shortcodes.php:836
+#: includes/class.cooked-import.php:165
+#: includes/class.cooked-recipe-meta.php:1575
+#: includes/class.cooked-recipes.php:751
+#: includes/class.cooked-settings.php:340
+#: includes/class.cooked-shortcodes.php:840
msgid "Notes"
msgstr ""
#: includes/class.cooked-functions.php:137
-#: includes/class.cooked-recipe-meta.php:427
+#: includes/class.cooked-recipe-meta.php:440
msgid "Nutrition"
msgstr ""
#. translators: for displaying singular or plural versions depending on the number of recipes.
-#: includes/class.cooked-import.php:46
-#: includes/class.cooked-import.php:100
+#: includes/class.cooked-import.php:50
+#: includes/class.cooked-import.php:104
#, php-format
msgid "There is %1$s recipe that should be imported from %2$s."
msgid_plural "There are %1$s recipes that should be imported from %2$s."
msgstr[0] ""
msgstr[1] ""
-#: includes/class.cooked-import.php:48
-#: includes/class.cooked-import.php:102
+#: includes/class.cooked-import.php:52
+#: includes/class.cooked-import.php:106
msgid "Before you begin, please make sure you backup your database in case something goes wrong."
msgstr ""
-#: includes/class.cooked-import.php:50
-#: includes/class.cooked-import.php:104
+#: includes/class.cooked-import.php:54
+#: includes/class.cooked-import.php:108
msgid "Click the button below to import these recipes. Here is what will happen to your recipes:"
msgstr ""
-#: includes/class.cooked-import.php:52
-#: includes/class.cooked-import.php:106
+#: includes/class.cooked-import.php:56
+#: includes/class.cooked-import.php:110
msgid "Recipes will be imported with the 'Draft' status."
msgstr ""
-#: includes/class.cooked-import.php:53
-#: includes/class.cooked-import.php:107
+#: includes/class.cooked-import.php:57
+#: includes/class.cooked-import.php:111
msgid "Comments and ratings data will also be imported (ratings are available in Cooked Pro)."
msgstr ""
-#: includes/class.cooked-import.php:54
-#: includes/class.cooked-import.php:109
+#: includes/class.cooked-import.php:58
+#: includes/class.cooked-import.php:113
msgid "After the import is complete, you can bulk edit the recipes and change their status to 'Published' ."
msgstr ""
-#: includes/class.cooked-import.php:55
+#: includes/class.cooked-import.php:59
msgid "The existing WP Delicious recipes and data will not be modified or deleted."
msgstr ""
-#: includes/class.cooked-import.php:56
-#: includes/class.cooked-import.php:111
+#: includes/class.cooked-import.php:60
+#: includes/class.cooked-import.php:115
msgid "Certain data that is not suppoted by Cooked will not be imported (such as Cooking Temp, Estimated Cost, Recipe Keywords, etc)."
msgstr ""
-#: includes/class.cooked-import.php:57
-#: includes/class.cooked-import.php:112
+#: includes/class.cooked-import.php:61
+#: includes/class.cooked-import.php:116
msgid "You can run the import multiple times, but keep in mind that duplicate recipes will be created."
msgstr ""
-#: includes/class.cooked-import.php:61
-#: includes/class.cooked-import.php:116
+#: includes/class.cooked-import.php:65
+#: includes/class.cooked-import.php:120
#: includes/class.cooked-migration.php:58
msgid "Wow, you have a lot of recipes!"
msgstr ""
-#: includes/class.cooked-import.php:61
-#: includes/class.cooked-import.php:116
+#: includes/class.cooked-import.php:65
+#: includes/class.cooked-import.php:120
#: includes/class.cooked-migration.php:58
msgid "It is definitely recommended that you get yourself a cup of coffee or tea after clicking this button."
msgstr ""
-#: includes/class.cooked-import.php:63
-#: includes/class.cooked-import.php:118
-#: includes/class.cooked-import.php:170
+#: includes/class.cooked-import.php:67
+#: includes/class.cooked-import.php:122
+#: includes/class.cooked-import.php:174
#: includes/class.cooked-migration.php:60
msgid "Note:"
msgstr ""
-#: includes/class.cooked-import.php:63
-#: includes/class.cooked-import.php:118
+#: includes/class.cooked-import.php:67
+#: includes/class.cooked-import.php:122
#: includes/class.cooked-migration.php:60
msgid "The more recipes you have, the longer this will take."
msgstr ""
-#: includes/class.cooked-import.php:68
-#: includes/class.cooked-import.php:83
+#: includes/class.cooked-import.php:72
+#: includes/class.cooked-import.php:87
msgid "WP Delicious - Import"
msgstr ""
-#: includes/class.cooked-import.php:185
+#: includes/class.cooked-import.php:189
msgid "More Imports are Coming Soon..."
msgstr ""
-#: includes/class.cooked-import.php:206
+#: includes/class.cooked-import.php:210
msgid "Begin Import"
msgstr ""
-#: includes/class.cooked-import.php:211
-#: includes/class.cooked-import.php:234
-#: includes/class.cooked-settings.php:729
+#: includes/class.cooked-import.php:215
+#: includes/class.cooked-import.php:238
+#: includes/class.cooked-settings.php:741
msgid "reload"
msgstr ""
@@ -343,6 +343,7 @@ msgstr ""
#: includes/class.cooked-measurements.php:45
#: includes/class.cooked-measurements.php:46
+#: includes/class.cooked-measurements.php:215
msgid "mg"
msgstr ""
@@ -354,7 +355,7 @@ msgstr ""
msgid "milligrams"
msgstr ""
-#: includes/class.cooked-measurements.php:471
+#: includes/class.cooked-measurements.php:216
msgid "mcg"
msgstr ""
@@ -587,218 +588,218 @@ msgstr ""
msgid "cans"
msgstr ""
-#: includes/class.cooked-measurements.php:217
-#: includes/class.cooked-recipes.php:1003
-#: includes/class.cooked-settings.php:332
+#: includes/class.cooked-measurements.php:221
+#: includes/class.cooked-recipes.php:1008
+#: includes/class.cooked-settings.php:344
msgid "Servings"
msgstr ""
-#: includes/class.cooked-measurements.php:221
+#: includes/class.cooked-measurements.php:225
msgid "Serving size"
msgstr ""
-#: includes/class.cooked-measurements.php:228
+#: includes/class.cooked-measurements.php:232
msgid "Calories"
msgstr ""
-#: includes/class.cooked-measurements.php:235
+#: includes/class.cooked-measurements.php:239
msgid "Total Fat"
msgstr ""
-#: includes/class.cooked-measurements.php:241
+#: includes/class.cooked-measurements.php:245
msgid "Saturated Fat"
msgstr ""
-#: includes/class.cooked-measurements.php:247
+#: includes/class.cooked-measurements.php:251
msgid "Trans Fat"
msgstr ""
-#: includes/class.cooked-measurements.php:248
+#: includes/class.cooked-measurements.php:252
msgid "Trans Fat"
msgstr ""
-#: includes/class.cooked-measurements.php:253
+#: includes/class.cooked-measurements.php:257
msgid "Monounsaturated Fat"
msgstr ""
-#: includes/class.cooked-measurements.php:258
+#: includes/class.cooked-measurements.php:262
msgid "Polyunsaturated Fat"
msgstr ""
-#: includes/class.cooked-measurements.php:265
+#: includes/class.cooked-measurements.php:269
msgid "Cholesterol"
msgstr ""
-#: includes/class.cooked-measurements.php:271
+#: includes/class.cooked-measurements.php:275
msgid "Sodium"
msgstr ""
-#: includes/class.cooked-measurements.php:277
+#: includes/class.cooked-measurements.php:281
msgid "Total Carbohydrate"
msgstr ""
-#: includes/class.cooked-measurements.php:277
+#: includes/class.cooked-measurements.php:281
msgid "Net Carbohydrate"
msgstr ""
-#: includes/class.cooked-measurements.php:283
+#: includes/class.cooked-measurements.php:287
msgid "Dietary Fiber"
msgstr ""
-#: includes/class.cooked-measurements.php:289
+#: includes/class.cooked-measurements.php:293
msgid "Total Sugars"
msgstr ""
-#: includes/class.cooked-measurements.php:295
+#: includes/class.cooked-measurements.php:299
msgid "Added Sugars"
msgstr ""
-#: includes/class.cooked-measurements.php:303
+#: includes/class.cooked-measurements.php:307
msgid "Protein"
msgstr ""
-#: includes/class.cooked-measurements.php:312
+#: includes/class.cooked-measurements.php:316
msgid "Vitamin A"
msgstr ""
-#: includes/class.cooked-measurements.php:318
+#: includes/class.cooked-measurements.php:322
msgid "Vitamin C"
msgstr ""
-#: includes/class.cooked-measurements.php:324
+#: includes/class.cooked-measurements.php:328
msgid "Calcium"
msgstr ""
-#: includes/class.cooked-measurements.php:330
+#: includes/class.cooked-measurements.php:334
msgid "Iron"
msgstr ""
-#: includes/class.cooked-measurements.php:336
+#: includes/class.cooked-measurements.php:340
msgid "Potassium"
msgstr ""
-#: includes/class.cooked-measurements.php:342
+#: includes/class.cooked-measurements.php:346
msgid "Vitamin D"
msgstr ""
-#: includes/class.cooked-measurements.php:348
+#: includes/class.cooked-measurements.php:352
msgid "Vitamin E"
msgstr ""
-#: includes/class.cooked-measurements.php:354
+#: includes/class.cooked-measurements.php:358
msgid "Vitamin K"
msgstr ""
-#: includes/class.cooked-measurements.php:360
+#: includes/class.cooked-measurements.php:364
msgid "Thiamin"
msgstr ""
-#: includes/class.cooked-measurements.php:366
+#: includes/class.cooked-measurements.php:370
msgid "Riboflavin"
msgstr ""
-#: includes/class.cooked-measurements.php:372
+#: includes/class.cooked-measurements.php:376
msgid "Niacin"
msgstr ""
-#: includes/class.cooked-measurements.php:378
+#: includes/class.cooked-measurements.php:382
msgid "Vitamin B6"
msgstr ""
-#: includes/class.cooked-measurements.php:384
+#: includes/class.cooked-measurements.php:388
msgid "Folate"
msgstr ""
-#: includes/class.cooked-measurements.php:390
+#: includes/class.cooked-measurements.php:394
msgid "Vitamin B12"
msgstr ""
-#: includes/class.cooked-measurements.php:396
+#: includes/class.cooked-measurements.php:400
msgid "Biotin"
msgstr ""
-#: includes/class.cooked-measurements.php:402
+#: includes/class.cooked-measurements.php:406
msgid "Pantothenic Acid"
msgstr ""
-#: includes/class.cooked-measurements.php:408
+#: includes/class.cooked-measurements.php:412
msgid "Phosphorus"
msgstr ""
-#: includes/class.cooked-measurements.php:414
+#: includes/class.cooked-measurements.php:418
msgid "Iodine"
msgstr ""
-#: includes/class.cooked-measurements.php:420
+#: includes/class.cooked-measurements.php:424
msgid "Magnesium"
msgstr ""
-#: includes/class.cooked-measurements.php:426
+#: includes/class.cooked-measurements.php:430
msgid "Zinc"
msgstr ""
-#: includes/class.cooked-measurements.php:432
+#: includes/class.cooked-measurements.php:436
msgid "Selenium"
msgstr ""
-#: includes/class.cooked-measurements.php:438
+#: includes/class.cooked-measurements.php:442
msgid "Copper"
msgstr ""
-#: includes/class.cooked-measurements.php:444
+#: includes/class.cooked-measurements.php:448
msgid "Manganese"
msgstr ""
-#: includes/class.cooked-measurements.php:450
+#: includes/class.cooked-measurements.php:454
msgid "Chromium"
msgstr ""
-#: includes/class.cooked-measurements.php:456
+#: includes/class.cooked-measurements.php:460
msgid "Molybdenum"
msgstr ""
-#: includes/class.cooked-measurements.php:462
+#: includes/class.cooked-measurements.php:466
msgid "Chloride"
msgstr ""
#. translators: singular and plural number of minutes (shorthand)
-#: includes/class.cooked-measurements.php:721
-#: includes/class.cooked-measurements.php:732
-#: includes/class.cooked-measurements.php:750
+#: includes/class.cooked-measurements.php:722
+#: includes/class.cooked-measurements.php:733
+#: includes/class.cooked-measurements.php:751
#, php-format
msgid "%d min"
msgstr ""
#. translators: singular and plural number of minutes (shorthand)
-#: includes/class.cooked-measurements.php:721
-#: includes/class.cooked-measurements.php:732
-#: includes/class.cooked-measurements.php:750
+#: includes/class.cooked-measurements.php:722
+#: includes/class.cooked-measurements.php:733
+#: includes/class.cooked-measurements.php:751
#, php-format
msgid "%d mins"
msgstr ""
#. translators: singular and plural number of hours (shorthand)
-#: includes/class.cooked-measurements.php:730
-#: includes/class.cooked-measurements.php:748
+#: includes/class.cooked-measurements.php:731
+#: includes/class.cooked-measurements.php:749
#, php-format
msgid "%d hr"
msgstr ""
#. translators: singular and plural number of hours (shorthand)
-#: includes/class.cooked-measurements.php:730
-#: includes/class.cooked-measurements.php:748
+#: includes/class.cooked-measurements.php:731
+#: includes/class.cooked-measurements.php:749
#, php-format
msgid "%d hrs"
msgstr ""
#. translators: singular and plural number of days
-#: includes/class.cooked-measurements.php:746
+#: includes/class.cooked-measurements.php:747
#, php-format
msgid "%d day"
msgstr ""
#. translators: singular and plural number of days
-#: includes/class.cooked-measurements.php:746
+#: includes/class.cooked-measurements.php:747
#, php-format
msgid "%d days"
msgstr ""
@@ -856,52 +857,52 @@ msgstr ""
msgid "Required by Cooked Pro"
msgstr ""
-#: includes/class.cooked-post-types.php:89
+#: includes/class.cooked-post-types.php:90
msgid "Photo"
msgstr ""
-#: includes/class.cooked-post-types.php:433
-#: includes/class.cooked-settings.php:253
+#: includes/class.cooked-post-types.php:449
+#: includes/class.cooked-settings.php:265
msgid "Recipe Archive"
msgstr ""
-#: includes/class.cooked-post-types.php:452
+#: includes/class.cooked-post-types.php:469
msgid "Recipe"
msgstr ""
-#: includes/class.cooked-post-types.php:454
+#: includes/class.cooked-post-types.php:471
msgid "Add New Recipe"
msgstr ""
-#: includes/class.cooked-post-types.php:455
+#: includes/class.cooked-post-types.php:472
msgid "New Recipe"
msgstr ""
-#: includes/class.cooked-post-types.php:456
+#: includes/class.cooked-post-types.php:473
msgid "Edit Recipe"
msgstr ""
-#: includes/class.cooked-post-types.php:457
+#: includes/class.cooked-post-types.php:474
msgid "View Recipe"
msgstr ""
-#: includes/class.cooked-post-types.php:459
+#: includes/class.cooked-post-types.php:476
msgid "Search Recipes"
msgstr ""
-#: includes/class.cooked-post-types.php:460
+#: includes/class.cooked-post-types.php:477
msgid "No recipes found."
msgstr ""
-#: includes/class.cooked-post-types.php:461
+#: includes/class.cooked-post-types.php:478
msgid "No recipes found in trash."
msgstr ""
-#: includes/class.cooked-post-types.php:489
+#: includes/class.cooked-post-types.php:506
msgid "Recipe title ..."
msgstr ""
-#: includes/class.cooked-post-types.php:520
+#: includes/class.cooked-post-types.php:537
msgid "Cooked Browse Recipes Page"
msgstr ""
@@ -914,495 +915,495 @@ msgstr ""
msgid "Current recipe category being viewed."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:288
+#: includes/class.cooked-recipe-meta.php:301
msgid "Display Recipe"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:289
+#: includes/class.cooked-recipe-meta.php:302
msgid "This shortcode displays the recipe in its entirety, using the \"Recipe Template\" field in the first tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:409
+#: includes/class.cooked-recipe-meta.php:422
msgid "Layout"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:433
-#: includes/class.cooked-recipe-meta.php:1459
+#: includes/class.cooked-recipe-meta.php:446
+#: includes/class.cooked-recipe-meta.php:1472
msgid "Gallery"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:439
+#: includes/class.cooked-recipe-meta.php:452
msgid "Shortcodes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:496
+#: includes/class.cooked-recipe-meta.php:509
msgid "Recipe Review Required"
msgstr ""
#. translators: for displaying singular or plural versions depending on the number of recipes.
-#: includes/class.cooked-recipe-meta.php:499
+#: includes/class.cooked-recipe-meta.php:512
#, php-format
msgid "It looks like this recipe is from a different version of %s. Please review and click \"Update\" to save it."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:507
+#: includes/class.cooked-recipe-meta.php:520
msgid "Recipe Shortcode"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:508
+#: includes/class.cooked-recipe-meta.php:521
msgid "You can use the following shortcode to display your recipe anywhere:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Recipe Template"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Default Recipe Template"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Choose from the options below to use this layout as the default for new recipes or for all recipes."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Save as Default"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Apply to All"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Reset"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Using the built-in recipe shortcodes found on the \"Shortcodes\" tab, you can create the layout of your recipe below. Use the \"Save as Default\" button to save your template."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:540
+#: includes/class.cooked-recipe-meta.php:553
msgid "Recipe Excerpt"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:540
+#: includes/class.cooked-recipe-meta.php:553
msgid "The excerpt is used on recipe listing templates, where the full recipe should not be displayed."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:563
+#: includes/class.cooked-recipe-meta.php:576
msgid "SEO Description"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:563
+#: includes/class.cooked-recipe-meta.php:576
msgid "This description is used for SEO purposes and is optional. By default, Cooked will use the Recipe Excerpt above if available or the Recipe Title if not."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:574
-#: includes/class.cooked-settings.php:326
+#: includes/class.cooked-recipe-meta.php:587
+#: includes/class.cooked-settings.php:338
msgid "Difficulty Level"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:583
-#: includes/class.cooked-recipe-meta.php:1321
-#: includes/class.cooked-settings.php:329
-#: includes/class.cooked-shortcodes.php:509
-#: includes/class.cooked-shortcodes.php:732
+#: includes/class.cooked-recipe-meta.php:596
+#: includes/class.cooked-recipe-meta.php:1334
+#: includes/class.cooked-settings.php:341
+#: includes/class.cooked-shortcodes.php:513
+#: includes/class.cooked-shortcodes.php:736
msgid "Prep Time"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:585
-#: includes/class.cooked-recipe-meta.php:590
-#: includes/class.cooked-recipe-meta.php:595
+#: includes/class.cooked-recipe-meta.php:598
+#: includes/class.cooked-recipe-meta.php:603
+#: includes/class.cooked-recipe-meta.php:608
msgid "minutes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:588
-#: includes/class.cooked-recipe-meta.php:1322
-#: includes/class.cooked-settings.php:330
-#: includes/class.cooked-shortcodes.php:510
-#: includes/class.cooked-shortcodes.php:741
+#: includes/class.cooked-recipe-meta.php:601
+#: includes/class.cooked-recipe-meta.php:1335
+#: includes/class.cooked-settings.php:342
+#: includes/class.cooked-shortcodes.php:514
+#: includes/class.cooked-shortcodes.php:745
msgid "Cook Time"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:593
-#: includes/class.cooked-recipe-meta.php:1323
-#: includes/class.cooked-settings.php:331
-#: includes/class.cooked-shortcodes.php:511
-#: includes/class.cooked-shortcodes.php:752
-#: includes/class.cooked-shortcodes.php:759
+#: includes/class.cooked-recipe-meta.php:606
+#: includes/class.cooked-recipe-meta.php:1336
+#: includes/class.cooked-settings.php:343
+#: includes/class.cooked-shortcodes.php:515
+#: includes/class.cooked-shortcodes.php:756
+#: includes/class.cooked-shortcodes.php:763
msgid "Total Time"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:601
+#: includes/class.cooked-recipe-meta.php:614
msgid "Recipe Notes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:601
+#: includes/class.cooked-recipe-meta.php:614
msgid "The notes are displayed in the recipe."
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:181
-#: includes/class.cooked-recipe-meta.php:626
+#: includes/class.cooked-admin-enqueues.php:184
+#: includes/class.cooked-recipe-meta.php:639
msgid "Amount"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:182
-#: includes/class.cooked-recipe-meta.php:627
+#: includes/class.cooked-admin-enqueues.php:185
+#: includes/class.cooked-recipe-meta.php:640
msgid "Measurement"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:183
-#: includes/class.cooked-recipe-meta.php:628
+#: includes/class.cooked-admin-enqueues.php:186
+#: includes/class.cooked-recipe-meta.php:641
msgid "Item"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:666
-#: includes/class.cooked-recipe-meta.php:758
-#: includes/class.cooked-recipe-meta.php:825
+#: includes/class.cooked-recipe-meta.php:679
+#: includes/class.cooked-recipe-meta.php:771
+#: includes/class.cooked-recipe-meta.php:838
msgid "ex. Eggs, Milk, etc."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:699
-#: includes/class.cooked-recipe-meta.php:855
-#: includes/class.cooked-recipe-meta.php:939
-#: includes/class.cooked-recipe-meta.php:1050
+#: includes/class.cooked-recipe-meta.php:712
+#: includes/class.cooked-recipe-meta.php:868
+#: includes/class.cooked-recipe-meta.php:952
+#: includes/class.cooked-recipe-meta.php:1063
msgid "Section Heading"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:794
+#: includes/class.cooked-recipe-meta.php:807
msgid "Add Ingredient"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:795
-#: includes/class.cooked-recipe-meta.php:1019
+#: includes/class.cooked-recipe-meta.php:808
+#: includes/class.cooked-recipe-meta.php:1032
msgid "Add Section Heading"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1018
+#: includes/class.cooked-recipe-meta.php:1031
msgid "Add Direction"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1085
+#: includes/class.cooked-recipe-meta.php:1098
msgid "Nutrition Information"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1123
-#: includes/class.cooked-shortcodes.php:1123
+#: includes/class.cooked-recipe-meta.php:1136
+#: includes/class.cooked-shortcodes.php:1127
msgid "Nutrition Facts"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1141
-#: includes/class.cooked-shortcodes.php:1091
+#: includes/class.cooked-recipe-meta.php:1154
+#: includes/class.cooked-shortcodes.php:1095
msgid "Amount per serving"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1151
-#: includes/class.cooked-shortcodes.php:1101
+#: includes/class.cooked-recipe-meta.php:1164
+#: includes/class.cooked-shortcodes.php:1105
msgid "% Daily Value *"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1170
-#: includes/class.cooked-shortcodes.php:1033
+#: includes/class.cooked-recipe-meta.php:1183
+#: includes/class.cooked-shortcodes.php:1037
msgid "Includes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1202
-#: includes/class.cooked-shortcodes.php:1127
+#: includes/class.cooked-recipe-meta.php:1215
+#: includes/class.cooked-shortcodes.php:1131
msgid "The % Daily Value (DV) tells you how much a nutrient in a serving of food contributes to a daily diet. 2,000 calories a day is used for general nutrition advice."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1218
+#: includes/class.cooked-recipe-meta.php:1231
msgid "Recipe Gallery Type"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1231
+#: includes/class.cooked-recipe-meta.php:1244
msgid "Choose one..."
msgstr ""
#. translators: a title for the video section of the recipe editor, where users can paste a YouToub or Vimeo URL into the field below.
-#: includes/class.cooked-recipe-meta.php:1245
+#: includes/class.cooked-recipe-meta.php:1258
#, php-format
msgid "%1$s or %2$s Video"
msgstr ""
#. translators: a message describing how to display a video from YouTube or Vimeo.
-#: includes/class.cooked-recipe-meta.php:1249
+#: includes/class.cooked-recipe-meta.php:1262
#, php-format
msgid "If you would like to display a video as the first item in your gallery, you can paste a valid %1$s or %2$s URL below."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1254
+#: includes/class.cooked-recipe-meta.php:1267
msgid "Gallery Items"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1285
+#: includes/class.cooked-recipe-meta.php:1298
msgid "Recipe Information"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1286
+#: includes/class.cooked-recipe-meta.php:1299
msgid "This will display the recipe author, cooking times, etc."
msgstr ""
#. translators: "include and exclude" section title
#. translators: "left and right" section title
-#: includes/class.cooked-recipe-meta.php:1295
-#: includes/class.cooked-recipe-meta.php:1305
+#: includes/class.cooked-recipe-meta.php:1308
+#: includes/class.cooked-recipe-meta.php:1318
#, php-format
msgid "\"%1$s\" and \"%2$s\""
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1297
+#: includes/class.cooked-recipe-meta.php:1310
msgid "This will allow you to include or exclude content from the shortcode output."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1306
+#: includes/class.cooked-recipe-meta.php:1319
msgid "Used like \"include\", but will position the content to the left or right."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:361
-#: includes/class.cooked-recipe-meta.php:1316
-#: includes/class.cooked-recipe-meta.php:1362
-#: includes/class.cooked-recipe-meta.php:1393
-#: includes/class.cooked-recipe-meta.php:1418
-#: includes/class.cooked-recipe-meta.php:1442
-#: includes/class.cooked-recipe-meta.php:1502
-#: includes/class.cooked-recipe-meta.php:1547
-#: includes/class.cooked-recipe-meta.php:1577
-#: includes/class.cooked-recipe-meta.php:1622
-#: includes/class.cooked-recipe-meta.php:1745
+#: includes/class.cooked-recipe-meta.php:374
+#: includes/class.cooked-recipe-meta.php:1329
+#: includes/class.cooked-recipe-meta.php:1375
+#: includes/class.cooked-recipe-meta.php:1406
+#: includes/class.cooked-recipe-meta.php:1431
+#: includes/class.cooked-recipe-meta.php:1455
+#: includes/class.cooked-recipe-meta.php:1515
+#: includes/class.cooked-recipe-meta.php:1560
+#: includes/class.cooked-recipe-meta.php:1590
+#: includes/class.cooked-recipe-meta.php:1635
+#: includes/class.cooked-recipe-meta.php:1758
msgid "Available Variables"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1320
-#: includes/class.cooked-settings.php:324
-#: includes/class.cooked-shortcodes.php:506
-#: includes/class.cooked-shortcodes.php:684
+#: includes/class.cooked-recipe-meta.php:1333
+#: includes/class.cooked-settings.php:336
+#: includes/class.cooked-shortcodes.php:510
+#: includes/class.cooked-shortcodes.php:688
msgid "Author"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1324
-#: includes/class.cooked-shortcodes.php:507
-#: includes/class.cooked-shortcodes.php:695
+#: includes/class.cooked-recipe-meta.php:1337
+#: includes/class.cooked-shortcodes.php:511
+#: includes/class.cooked-shortcodes.php:699
msgid "Difficulty"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1325
+#: includes/class.cooked-recipe-meta.php:1338
msgid "Servings Switcher"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1326
-#: includes/class.cooked-settings.php:325
-#: includes/class.cooked-shortcodes.php:779
-#: includes/class.cooked-shortcodes.php:782
+#: includes/class.cooked-recipe-meta.php:1339
+#: includes/class.cooked-settings.php:337
+#: includes/class.cooked-shortcodes.php:783
+#: includes/class.cooked-shortcodes.php:786
#: includes/class.cooked-taxonomies.php:39
msgid "Category"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1327
+#: includes/class.cooked-recipe-meta.php:1340
msgid "Print Mode"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1328
+#: includes/class.cooked-recipe-meta.php:1341
msgid "Full-Screen Mode"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1348
+#: includes/class.cooked-recipe-meta.php:1361
msgid "This will display the list of ingredients, added via the \"Ingredients\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1354
+#: includes/class.cooked-recipe-meta.php:1367
msgid "This will allow you to hide or show the checkboxes:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1364
+#: includes/class.cooked-recipe-meta.php:1377
msgid "Show checkboxes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1365
+#: includes/class.cooked-recipe-meta.php:1378
msgid "Hide checkboxes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1379
+#: includes/class.cooked-recipe-meta.php:1392
msgid "This will display the list of directions, added via the \"Directions\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1385
+#: includes/class.cooked-recipe-meta.php:1398
msgid "This will allow you to hide or show the numbers:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1395
+#: includes/class.cooked-recipe-meta.php:1408
msgid "Show numbers"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1396
+#: includes/class.cooked-recipe-meta.php:1409
msgid "Hide numbers"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1409
+#: includes/class.cooked-recipe-meta.php:1422
msgid "Featured Image"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1410
+#: includes/class.cooked-recipe-meta.php:1423
msgid "This will display the featured image, if one is set."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1420
-#: includes/class.cooked-recipe-meta.php:1444
-#: includes/class.cooked-recipe-meta.php:1549
+#: includes/class.cooked-recipe-meta.php:1433
+#: includes/class.cooked-recipe-meta.php:1457
+#: includes/class.cooked-recipe-meta.php:1562
msgid "None"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1433
+#: includes/class.cooked-recipe-meta.php:1446
msgid "Nutrition Label"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1434
+#: includes/class.cooked-recipe-meta.php:1447
msgid "This will display the Nutrition Facts label, if data is present."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1460
+#: includes/class.cooked-recipe-meta.php:1473
msgid "This will display the gallery, if one is set or created from the \"Gallery\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1468
+#: includes/class.cooked-recipe-meta.php:1481
msgid "Set the width of the gallery."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1475
+#: includes/class.cooked-recipe-meta.php:1488
msgid "Set the image size ratio."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1485
+#: includes/class.cooked-recipe-meta.php:1498
msgid "Set the navigation style."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1492
+#: includes/class.cooked-recipe-meta.php:1505
msgid "Enable or disable \"Full-Screen\" mode."
msgstr ""
#. translators: related to the width of slideshows: "80% or 300px" section title
-#: includes/class.cooked-recipe-meta.php:1507
+#: includes/class.cooked-recipe-meta.php:1520
#, php-format
msgid "ex: \"%1$s\" or \"%2$s\""
msgstr ""
#. translators: related to the image ratio for slideshows: "ex: 800/600" section title
-#: includes/class.cooked-recipe-meta.php:1512
+#: includes/class.cooked-recipe-meta.php:1525
#, php-format
msgid "ex: \"%s\""
msgstr ""
#. translators: related to the navigation style for slideshows: "dots, thumbs or false" section title
-#: includes/class.cooked-recipe-meta.php:1517
+#: includes/class.cooked-recipe-meta.php:1530
#, php-format
msgid "\"%1$s\", \"%2$s\", or \"%3$s\""
msgstr ""
#. translators: related to allowing full screen for slideshows: "true or false" section title
-#: includes/class.cooked-recipe-meta.php:1522
+#: includes/class.cooked-recipe-meta.php:1535
#, php-format
msgid "\"%1$s\" or \"%2$s\""
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1539
+#: includes/class.cooked-recipe-meta.php:1552
msgid "This will display the excerpt, if one is available from the \"Layout & Content\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1563
+#: includes/class.cooked-recipe-meta.php:1576
msgid "This will display the notes, if one is available from the \"Layout & Content\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1569
+#: includes/class.cooked-recipe-meta.php:1582
msgid "This will allow you to hide or show the header for the notes section:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1579
+#: includes/class.cooked-recipe-meta.php:1592
msgid "Show header"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1580
+#: includes/class.cooked-recipe-meta.php:1593
msgid "Hide header"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1594
+#: includes/class.cooked-recipe-meta.php:1607
msgid "This will display a special link to start a cooking timer."
msgstr ""
#. translators: "seconds, minutes and hours" section title
-#: includes/class.cooked-recipe-meta.php:1603
+#: includes/class.cooked-recipe-meta.php:1616
#, php-format
msgid "\"%1$s\", \"%2$s\" and \"%3$s\""
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1605
+#: includes/class.cooked-recipe-meta.php:1618
msgid "Use just one or a combination of all three to set the timer length"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1612
+#: includes/class.cooked-recipe-meta.php:1625
msgid "Add a short description for this timer, if applicable."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1624
+#: includes/class.cooked-recipe-meta.php:1637
msgid "Time in seconds"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1625
+#: includes/class.cooked-recipe-meta.php:1638
msgid "Time in minutes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1626
+#: includes/class.cooked-recipe-meta.php:1639
msgid "Time in hours"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1627
+#: includes/class.cooked-recipe-meta.php:1640
msgid "Timer Description"
msgstr ""
#. translators: stating the recipe author with a "By" in front of it. (ex: "By John Smith")
#. translators: referring to the author (ex: By John Smith)
-#: includes/class.cooked-recipes.php:298
-#: includes/class.cooked-recipes.php:352
+#: includes/class.cooked-recipes.php:300
+#: includes/class.cooked-recipes.php:354
#: templates/front/recipe-single.php:47
#, php-format
msgid "By %s"
msgstr ""
#. translators: For showing "All" of a taxonomy (ex: "All Burgers")
-#: includes/class.cooked-recipes.php:445
+#: includes/class.cooked-recipes.php:449
#, php-format
msgid "All %s"
msgstr ""
-#: includes/class.cooked-recipes.php:829
+#: includes/class.cooked-recipes.php:833
msgid "Beginner"
msgstr ""
-#: includes/class.cooked-recipes.php:830
+#: includes/class.cooked-recipes.php:834
msgid "Intermediate"
msgstr ""
-#: includes/class.cooked-recipes.php:831
+#: includes/class.cooked-recipes.php:835
msgid "Advanced"
msgstr ""
-#: includes/class.cooked-recipes.php:857
+#: includes/class.cooked-recipes.php:861
msgid "Cooked Gallery"
msgstr ""
-#: includes/class.cooked-recipes.php:861
+#: includes/class.cooked-recipes.php:865
msgid "Envira Gallery"
msgstr ""
-#: includes/class.cooked-recipes.php:865
+#: includes/class.cooked-recipes.php:869
msgid "Soliloquy Slider"
msgstr ""
-#: includes/class.cooked-recipes.php:869
+#: includes/class.cooked-recipes.php:873
msgid "Slider Revolution"
msgstr ""
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:970
+#: includes/class.cooked-recipes.php:975
#, php-format
msgid "Quarter (%s Serving)"
msgid_plural "Quarter (%s Servings)"
@@ -1410,7 +1411,7 @@ msgstr[0] ""
msgstr[1] ""
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:973
+#: includes/class.cooked-recipes.php:978
#, php-format
msgid "Half (%s Serving)"
msgid_plural "Half (%s Servings)"
@@ -1418,7 +1419,7 @@ msgstr[0] ""
msgstr[1] ""
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:976
+#: includes/class.cooked-recipes.php:981
#, php-format
msgid "Default (%s Serving)"
msgid_plural "Default (%s Servings)"
@@ -1426,25 +1427,25 @@ msgstr[0] ""
msgstr[1] ""
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:979
+#: includes/class.cooked-recipes.php:984
#, php-format
msgid "Double (%s Servings)"
msgstr ""
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:982
+#: includes/class.cooked-recipes.php:987
#, php-format
msgid "Triple (%s Servings)"
msgstr ""
-#: includes/class.cooked-recipes.php:996
-#: includes/class.cooked-shortcodes.php:508
+#: includes/class.cooked-recipes.php:1001
+#: includes/class.cooked-shortcodes.php:512
msgid "Yields"
msgstr ""
#. translators: singular and plural "serving" sizes
-#: includes/class.cooked-recipes.php:1000
-#: includes/class.cooked-recipes.php:1011
+#: includes/class.cooked-recipes.php:1005
+#: includes/class.cooked-recipes.php:1016
#, php-format
msgid "%s Serving"
msgid_plural "%s Servings"
@@ -1452,51 +1453,52 @@ msgstr[0] ""
msgstr[1] ""
#. translators: singular and plural "steps"
-#: includes/class.cooked-recipes.php:1202
-#: includes/class.cooked-seo.php:83
+#. translators: %d: step number
+#: includes/class.cooked-recipes.php:1207
+#: includes/class.cooked-seo.php:84
#, php-format
msgid "Step %d"
msgstr ""
-#: includes/class.cooked-recipes.php:1262
+#: includes/class.cooked-recipes.php:1267
msgid "Browse"
msgstr ""
-#: includes/class.cooked-recipes.php:1280
-#: includes/class.cooked-settings.php:251
+#: includes/class.cooked-recipes.php:1285
+#: includes/class.cooked-settings.php:263
msgid "No categories"
msgstr ""
-#: includes/class.cooked-recipes.php:1283
-#: includes/class.cooked-settings.php:300
+#: includes/class.cooked-recipes.php:1288
+#: includes/class.cooked-settings.php:312
#: includes/class.cooked-taxonomies.php:38
#: includes/class.cooked-taxonomies.php:48
msgid "Categories"
msgstr ""
-#: includes/class.cooked-recipes.php:1285
+#: includes/class.cooked-recipes.php:1290
#: includes/class.cooked-taxonomies.php:41
#: includes/widgets/recipe-categories.php:63
msgid "All Categories"
msgstr ""
-#: includes/class.cooked-recipes.php:1356
+#: includes/class.cooked-recipes.php:1361
msgid "Find a recipe..."
msgstr ""
-#: includes/class.cooked-recipes.php:1371
+#: includes/class.cooked-recipes.php:1376
msgid "Newest first"
msgstr ""
-#: includes/class.cooked-recipes.php:1375
+#: includes/class.cooked-recipes.php:1380
msgid "Oldest first"
msgstr ""
-#: includes/class.cooked-recipes.php:1379
+#: includes/class.cooked-recipes.php:1384
msgid "Alphabetical (A-Z)"
msgstr ""
-#: includes/class.cooked-recipes.php:1383
+#: includes/class.cooked-recipes.php:1388
msgid "Alphabetical (Z-A)"
msgstr ""
@@ -1504,311 +1506,311 @@ msgstr ""
msgid "Recipe Editor"
msgstr ""
-#: includes/class.cooked-settings.php:110
+#: includes/class.cooked-settings.php:119
msgid "Cooked settings has been updated!"
msgstr ""
-#: includes/class.cooked-settings.php:251
+#: includes/class.cooked-settings.php:263
msgid "No default"
msgstr ""
-#: includes/class.cooked-settings.php:273
+#: includes/class.cooked-settings.php:285
msgid "General"
msgstr ""
-#: includes/class.cooked-settings.php:131
-#: includes/class.cooked-settings.php:277
+#: includes/class.cooked-settings.php:143
+#: includes/class.cooked-settings.php:289
msgid "Browse/Search Recipes Page"
msgstr ""
#. translators: a description on how to add the [cooked-browse] shortcode to a page
-#: includes/class.cooked-settings.php:279
+#: includes/class.cooked-settings.php:291
#, php-format
msgid "Create a page with the %s shortcode on it, then choose it from this dropdown."
msgstr ""
-#: includes/class.cooked-settings.php:285
+#: includes/class.cooked-settings.php:297
msgid "Recipes Per Page"
msgstr ""
#. translators: a description on how to choose the default number of recipes per page.
-#: includes/class.cooked-settings.php:287
+#: includes/class.cooked-settings.php:299
#, php-format
msgid "Choose the default (set via the %s panel) or choose a different number here."
msgstr ""
#. translators: a description on how to choose the default number of recipes per page.
-#: includes/class.cooked-settings.php:287
+#: includes/class.cooked-settings.php:299
msgid "Settings > Reading"
msgstr ""
-#: includes/class.cooked-settings.php:293
+#: includes/class.cooked-settings.php:305
msgid "Recipe Taxonomies"
msgstr ""
-#: includes/class.cooked-settings.php:294
+#: includes/class.cooked-settings.php:306
msgid "Choose which taxonomies you want to enable for your recipes."
msgstr ""
-#: includes/class.cooked-settings.php:305
+#: includes/class.cooked-settings.php:317
msgid "Global Recipe Toggles"
msgstr ""
-#: includes/class.cooked-settings.php:306
+#: includes/class.cooked-settings.php:318
msgid "You can quickly hide or show different recipe elements (site-wide) with these checkboxes."
msgstr ""
-#: includes/class.cooked-settings.php:349
+#: includes/class.cooked-settings.php:361
msgid "Carbs Format"
msgstr ""
-#: includes/class.cooked-settings.php:350
+#: includes/class.cooked-settings.php:362
msgid "You can display carbs as \"Total\" or \"Net\"."
msgstr ""
-#: includes/class.cooked-settings.php:356
+#: includes/class.cooked-settings.php:368
msgid "Total Carbs"
msgstr ""
-#: includes/class.cooked-settings.php:357
+#: includes/class.cooked-settings.php:369
msgid "Net Carbs"
msgstr ""
-#: includes/class.cooked-settings.php:362
+#: includes/class.cooked-settings.php:374
msgid "Author Name Format"
msgstr ""
-#: includes/class.cooked-settings.php:363
+#: includes/class.cooked-settings.php:375
msgid "You can show the full author's name or just a part of it."
msgstr ""
-#: includes/class.cooked-settings.php:369
+#: includes/class.cooked-settings.php:381
msgid "Full name"
msgstr ""
-#: includes/class.cooked-settings.php:370
+#: includes/class.cooked-settings.php:382
msgid "Full first name w/last name initial"
msgstr ""
-#: includes/class.cooked-settings.php:371
+#: includes/class.cooked-settings.php:383
msgid "First name initial w/full last name"
msgstr ""
-#: includes/class.cooked-settings.php:372
+#: includes/class.cooked-settings.php:384
msgid "First name only"
msgstr ""
-#: includes/class.cooked-settings.php:377
+#: includes/class.cooked-settings.php:389
msgid "Author Links"
msgstr ""
-#: includes/class.cooked-settings.php:378
+#: includes/class.cooked-settings.php:390
msgid "If you do not want the author names to link to the author recipe listings, you can disable them here."
msgstr ""
-#: includes/class.cooked-settings.php:385
+#: includes/class.cooked-settings.php:397
msgid "Disable Author Links"
msgstr ""
-#: includes/class.cooked-settings.php:390
+#: includes/class.cooked-settings.php:402
msgid "Default Category"
msgstr ""
#. translators: a description on how to set the default recipe category for the [cooked-browse] shortcode.
-#: includes/class.cooked-settings.php:392
+#: includes/class.cooked-settings.php:404
#, php-format
msgid "Optionally set the default recipe category for your %s shortcode display."
msgstr ""
-#: includes/class.cooked-settings.php:398
+#: includes/class.cooked-settings.php:410
msgid "Default Sort Order"
msgstr ""
#. translators: a description on how to set the default sort order for the [cooked-browse] shortcode.
-#: includes/class.cooked-settings.php:400
+#: includes/class.cooked-settings.php:412
#, php-format
msgid "Set the default sort order for your %s shortcode display."
msgstr ""
-#: includes/class.cooked-settings.php:406
+#: includes/class.cooked-settings.php:418
msgid "Newest First"
msgstr ""
-#: includes/class.cooked-settings.php:407
+#: includes/class.cooked-settings.php:419
msgid "Oldest First"
msgstr ""
-#: includes/class.cooked-settings.php:408
+#: includes/class.cooked-settings.php:420
msgid "Alphabetical"
msgstr ""
-#: includes/class.cooked-settings.php:409
+#: includes/class.cooked-settings.php:421
msgid "Alphabetical (reversed)"
msgstr ""
-#: includes/class.cooked-settings.php:432
+#: includes/class.cooked-settings.php:444
msgid "WP Editor Roles"
msgstr ""
-#: includes/class.cooked-settings.php:433
+#: includes/class.cooked-settings.php:445
msgid "Choose which user roles can use the WP Editor for the Excerpt, Directions & Notes fields."
msgstr ""
-#: includes/class.cooked-settings.php:439
+#: includes/class.cooked-settings.php:451
msgid "Advanced Settings"
msgstr ""
#. translators: an option to only show recipes with the [cooked-recipe] shortcode.
-#: includes/class.cooked-settings.php:449
+#: includes/class.cooked-settings.php:461
msgid "Disable Public Recipes"
msgstr ""
#. translators: an option to only show recipes with the [cooked-recipe] shortcode.
-#: includes/class.cooked-settings.php:449
+#: includes/class.cooked-settings.php:461
#, php-format
msgid "Only show recipes using the %s shortcode."
msgstr ""
#. translators: an option to disable "meta" tags.
-#: includes/class.cooked-settings.php:451
+#: includes/class.cooked-settings.php:463
#, php-format
msgid "Disable %s Tags"
msgstr ""
#. translators: an option to disable "meta" tags.
-#: includes/class.cooked-settings.php:451
+#: includes/class.cooked-settings.php:463
msgid "Prevents duplicates when tags already exist."
msgstr ""
-#: includes/class.cooked-settings.php:452
+#: includes/class.cooked-settings.php:464
msgid "Disable \"Servings Switcher\""
msgstr ""
-#: includes/class.cooked-settings.php:452
+#: includes/class.cooked-settings.php:464
msgid "Removes the servings dropdown on recipes."
msgstr ""
-#: includes/class.cooked-settings.php:454
+#: includes/class.cooked-settings.php:466
msgid "Disable Recipe Schema Output"
msgstr ""
-#: includes/class.cooked-settings.php:454
+#: includes/class.cooked-settings.php:466
msgid "You should only do this if you're using something else to output schema information."
msgstr ""
-#: includes/class.cooked-settings.php:455
+#: includes/class.cooked-settings.php:467
msgid "Disable Recipe Archive Page"
msgstr ""
-#: includes/class.cooked-settings.php:466
+#: includes/class.cooked-settings.php:478
msgid "Design"
msgstr ""
-#: includes/class.cooked-settings.php:470
+#: includes/class.cooked-settings.php:482
msgid "Dark Mode"
msgstr ""
-#: includes/class.cooked-settings.php:487
+#: includes/class.cooked-settings.php:499
msgid "Author Images"
msgstr ""
-#: includes/class.cooked-settings.php:488
+#: includes/class.cooked-settings.php:500
msgid "If you do not want to display the author images (avatars), you can disable them here."
msgstr ""
-#: includes/class.cooked-settings.php:495
+#: includes/class.cooked-settings.php:507
msgid "Hide Author Images"
msgstr ""
-#: includes/class.cooked-settings.php:506
+#: includes/class.cooked-settings.php:518
msgid "Main Color"
msgstr ""
-#: includes/class.cooked-settings.php:507
+#: includes/class.cooked-settings.php:519
msgid "Used on buttons, cooking timer, etc."
msgstr ""
-#: includes/class.cooked-settings.php:513
+#: includes/class.cooked-settings.php:525
msgid "Main Color (on hover)"
msgstr ""
-#: includes/class.cooked-settings.php:514
+#: includes/class.cooked-settings.php:526
msgid "Used when hovering over buttons."
msgstr ""
-#: includes/class.cooked-settings.php:520
+#: includes/class.cooked-settings.php:532
msgid "First Responsive Breakpoint"
msgstr ""
-#: includes/class.cooked-settings.php:521
+#: includes/class.cooked-settings.php:533
msgid "Set the first responsive breakpoint. Best for large tablets."
msgstr ""
-#: includes/class.cooked-settings.php:527
+#: includes/class.cooked-settings.php:539
msgid "Second Responsive Breakpoint"
msgstr ""
-#: includes/class.cooked-settings.php:528
+#: includes/class.cooked-settings.php:540
msgid "Set the second responsive breakpoint. Best for small tablets."
msgstr ""
-#: includes/class.cooked-settings.php:534
+#: includes/class.cooked-settings.php:546
msgid "Third Responsive Breakpoint"
msgstr ""
-#: includes/class.cooked-settings.php:535
+#: includes/class.cooked-settings.php:547
msgid "Set the third responsive breakpoint. Best for phones and other small devices."
msgstr ""
-#: includes/class.cooked-settings.php:543
+#: includes/class.cooked-settings.php:555
msgid "Permalinks"
msgstr ""
-#: includes/class.cooked-settings.php:547
+#: includes/class.cooked-settings.php:559
msgid "Recipe Permalink"
msgstr ""
-#: includes/class.cooked-settings.php:550
+#: includes/class.cooked-settings.php:562
msgid "recipe-name"
msgstr ""
-#: includes/class.cooked-settings.php:554
+#: includes/class.cooked-settings.php:566
msgid "Recipe Author Permalink"
msgstr ""
-#: includes/class.cooked-settings.php:557
+#: includes/class.cooked-settings.php:569
msgid "author-name"
msgstr ""
-#: includes/class.cooked-settings.php:561
+#: includes/class.cooked-settings.php:573
msgid "Recipe Category Permalink"
msgstr ""
-#: includes/class.cooked-settings.php:564
+#: includes/class.cooked-settings.php:576
msgid "recipe-category-name"
msgstr ""
#. translators: posts_per_page default
-#: includes/class.cooked-settings.php:575
+#: includes/class.cooked-settings.php:587
#, php-format
msgid "WordPress Default %s"
msgstr ""
-#: includes/class.cooked-settings.php:580
+#: includes/class.cooked-settings.php:592
msgid "Show All (no pagination)"
msgstr ""
-#: includes/class.cooked-settings.php:724
+#: includes/class.cooked-settings.php:736
msgid "Begin Migration"
msgstr ""
#. translators: referring to the bottom of the Settings page.
-#: includes/class.cooked-shortcodes.php:167
+#: includes/class.cooked-shortcodes.php:168
#, php-format
msgid "Public recipes are currently disabled. You can change this at the bottom of the %s page."
msgstr ""
-#: includes/class.cooked-shortcodes.php:328
+#: includes/class.cooked-shortcodes.php:331
msgid "(recipe not found or in draft status)"
msgstr ""
@@ -2060,7 +2062,7 @@ msgstr ""
msgid "Update Settings"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:118
+#: includes/class.cooked-recipe-meta.php:124
#: templates/admin/settings.php:10
#: templates/admin/welcome.php:33
msgid "Cooked Settings"
@@ -2072,6 +2074,7 @@ msgstr ""
msgid "Thanks for using %s!"
msgstr ""
+#. translators: 1: plugin name, 2: Settings link, 3: documentation link, 4: Discord link
#: templates/admin/welcome.php:16
#, php-format
msgid "If this is your first time using %1$s, head over to the %2$s page for some initial configuration. You can also check out the %3$s if you get stuck or contact me on %4$s. If you just recently updated, you can find out what's new below."
@@ -2108,10 +2111,10 @@ msgstr ""
msgid "View all recipes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:703
-#: includes/class.cooked-recipe-meta.php:859
-#: includes/class.cooked-recipe-meta.php:943
-#: includes/class.cooked-recipe-meta.php:1054
+#: includes/class.cooked-recipe-meta.php:716
+#: includes/class.cooked-recipe-meta.php:872
+#: includes/class.cooked-recipe-meta.php:956
+#: includes/class.cooked-recipe-meta.php:1067
msgid "Heading Element:"
msgstr ""
@@ -2128,52 +2131,52 @@ msgstr ""
msgid "deciliters"
msgstr ""
-#: includes/class.cooked-settings.php:414
+#: includes/class.cooked-settings.php:426
msgid "Section Heading Default HTML Tag"
msgstr ""
#. translators: a description on how to set the default sort order for the [cooked-browse] shortcode.
-#: includes/class.cooked-settings.php:416
+#: includes/class.cooked-settings.php:428
msgid "Set the default HTML tag for your section headings."
msgstr ""
-#: includes/class.cooked-settings.php:422
+#: includes/class.cooked-settings.php:434
msgid "div"
msgstr ""
-#: includes/class.cooked-settings.php:423
+#: includes/class.cooked-settings.php:435
msgid "h2"
msgstr ""
-#: includes/class.cooked-settings.php:424
+#: includes/class.cooked-settings.php:436
msgid "h3"
msgstr ""
-#: includes/class.cooked-settings.php:425
+#: includes/class.cooked-settings.php:437
msgid "h4"
msgstr ""
-#: includes/class.cooked-settings.php:426
+#: includes/class.cooked-settings.php:438
msgid "h5"
msgstr ""
-#: includes/class.cooked-settings.php:427
+#: includes/class.cooked-settings.php:439
msgid "h6"
msgstr ""
-#: includes/class.cooked-recipes.php:1358
+#: includes/class.cooked-recipes.php:1363
msgid "Search"
msgstr ""
-#: includes/class.cooked-shortcodes.php:723
+#: includes/class.cooked-shortcodes.php:727
msgid "Fullscreen"
msgstr ""
-#: includes/class.cooked-settings.php:250
+#: includes/class.cooked-settings.php:262
msgid "Choose a page..."
msgstr ""
-#: includes/class.cooked-settings.php:250
+#: includes/class.cooked-settings.php:262
msgid "No pages"
msgstr ""
@@ -2181,16 +2184,16 @@ msgstr ""
msgid "Error importing WP Delicious recipe."
msgstr ""
-#: includes/class.cooked-import.php:108
+#: includes/class.cooked-import.php:112
msgid "The difficulty level will be set to Beginner since it is not supported by WP Recipe Maker."
msgstr ""
-#: includes/class.cooked-import.php:110
+#: includes/class.cooked-import.php:114
msgid "The existing WP Recipe Maker and data will not be modified or deleted."
msgstr ""
-#: includes/class.cooked-import.php:123
-#: includes/class.cooked-import.php:138
+#: includes/class.cooked-import.php:127
+#: includes/class.cooked-import.php:142
msgid "WP Recipe Maker - Import"
msgstr ""
@@ -2198,189 +2201,192 @@ msgstr ""
msgid "Error importing WP Recipe Maker recipe."
msgstr ""
-#: includes/class.cooked-settings.php:129
+#: includes/class.cooked-settings.php:140
msgid "Cooked Plugin Setup"
msgstr ""
-#: includes/class.cooked-settings.php:130
+#. translators: %s: Browse/Search Recipes Page link
+#: includes/class.cooked-settings.php:142
#, php-format
msgid "To display your recipes properly, please set up your %s."
msgstr ""
#. translators: a description on how to add the [cooked-browse] shortcode to a page
-#: includes/class.cooked-settings.php:279
+#: includes/class.cooked-settings.php:291
msgid "Note: This setting is required for the plugin to function properly."
msgstr ""
-#: includes/class.cooked-settings.php:378
+#: includes/class.cooked-settings.php:390
msgid "Note: Author links require the Browse/Search Recipes Page to be set up correctly to function properly."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:675
-#: includes/class.cooked-recipe-meta.php:767
-#: includes/class.cooked-recipe-meta.php:834
-msgid "Substitution:"
-msgstr ""
-
#: includes/class.cooked-recipe-meta.php:688
#: includes/class.cooked-recipe-meta.php:780
#: includes/class.cooked-recipe-meta.php:847
+msgid "Substitution:"
+msgstr ""
+
+#: includes/class.cooked-recipe-meta.php:701
+#: includes/class.cooked-recipe-meta.php:793
+#: includes/class.cooked-recipe-meta.php:860
msgid "ex. Apple Sauce, Tofu, etc."
msgstr ""
-#: includes/class.cooked-recipes.php:1143
-#: includes/class.cooked-recipes.php:1157
+#: includes/class.cooked-recipes.php:1148
+#: includes/class.cooked-recipes.php:1162
msgid "or"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1640
+#: includes/class.cooked-recipe-meta.php:1653
msgid "Next & Previous Recipe Navigation"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1641
+#: includes/class.cooked-recipe-meta.php:1654
msgid "This will display navigation links to the next and previous recipes."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1645
+#: includes/class.cooked-recipe-meta.php:1658
msgid "This shortcode automatically displays the previous and next recipe links based on the current recipe page. No parameters are required."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1650
+#: includes/class.cooked-recipe-meta.php:1663
msgid "Usage"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1652
+#: includes/class.cooked-recipe-meta.php:1665
msgid "Simply add the shortcode to your recipe template or content area. The navigation will automatically show the previous and next recipes based on recipe ID order."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1665
+#: includes/class.cooked-recipe-meta.php:1678
#: includes/class.cooked-related-recipes.php:34
msgid "Related Recipes"
msgstr ""
-#: includes/class.cooked-shortcodes.php:1192
+#: includes/class.cooked-shortcodes.php:1196
msgid "Recipe not found."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1207
+#: includes/class.cooked-shortcodes.php:1213
msgid "No related recipes found."
msgstr ""
-#: includes/class.cooked-multilingual.php:260
+#: includes/class.cooked-multilingual.php:262
msgid "Multilingual Setup:"
msgstr ""
-#: includes/class.cooked-multilingual.php:261
+#: includes/class.cooked-multilingual.php:263
msgid "Your Browse/Search Recipes page is missing translations for:"
msgstr ""
#. translators: %s is the multilingual plugin name (Polylang or WPML)
-#: includes/class.cooked-multilingual.php:266
+#: includes/class.cooked-multilingual.php:268
#, php-format
msgid "Create translations of your browse page in %s for full multilingual support."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1674
+#: includes/class.cooked-recipe-meta.php:1687
msgid "Specify a recipe ID. If not provided, uses the current recipe."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1681
+#: includes/class.cooked-recipe-meta.php:1694
msgid "Set the heading text for the related recipes section."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1708
+#: includes/class.cooked-recipe-meta.php:1721
msgid "Hide recipe card images."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1715
+#: includes/class.cooked-recipe-meta.php:1728
msgid "Hide recipe card excerpts."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1725
+#: includes/class.cooked-recipe-meta.php:1738
msgid "Hide recipe card authors."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:363
-#: includes/class.cooked-recipe-meta.php:1747
+#: includes/class.cooked-recipe-meta.php:376
+#: includes/class.cooked-recipe-meta.php:1760
msgid "Recipe ID"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:177
-#: includes/class.cooked-recipe-meta.php:1748
+#: includes/class.cooked-admin-enqueues.php:180
+#: includes/class.cooked-recipe-meta.php:1761
msgid "Section heading"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1749
+#: includes/class.cooked-recipe-meta.php:1762
msgid "Number of recipes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1750
+#: includes/class.cooked-recipe-meta.php:1763
msgid "Grid columns"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:366
-#: includes/class.cooked-recipe-meta.php:367
-#: includes/class.cooked-recipe-meta.php:368
-#: includes/class.cooked-recipe-meta.php:369
-#: includes/class.cooked-recipe-meta.php:1751
-#: includes/class.cooked-recipe-meta.php:1752
-#: includes/class.cooked-recipe-meta.php:1753
-#: includes/class.cooked-recipe-meta.php:1754
+#: includes/class.cooked-recipe-meta.php:379
+#: includes/class.cooked-recipe-meta.php:380
+#: includes/class.cooked-recipe-meta.php:381
+#: includes/class.cooked-recipe-meta.php:382
+#: includes/class.cooked-recipe-meta.php:1764
+#: includes/class.cooked-recipe-meta.php:1765
+#: includes/class.cooked-recipe-meta.php:1766
+#: includes/class.cooked-recipe-meta.php:1767
msgid "true/false"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:371
-#: includes/class.cooked-recipe-meta.php:1756
+#: includes/class.cooked-recipe-meta.php:384
+#: includes/class.cooked-recipe-meta.php:1769
msgid "Example"
msgstr ""
-#: includes/class.cooked-shortcodes.php:1175
+#: includes/class.cooked-shortcodes.php:1179
msgid "Invalid recipe ID specified. Please provide a valid numeric recipe ID."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1185
+#: includes/class.cooked-shortcodes.php:1189
msgid "No recipe found. Please specify a recipe ID using the id attribute, or use this shortcode on a recipe page."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1196
+#. translators: %d: post ID
+#: includes/class.cooked-shortcodes.php:1201
#, php-format
msgid "The specified ID (%d) is not a recipe."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1198
+#. translators: %d: post ID
+#: includes/class.cooked-shortcodes.php:1204
#, php-format
msgid "No post found with ID %d."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1210
+#: includes/class.cooked-shortcodes.php:1216
msgid "This may be because there are no other recipes in the current language with matching attributes."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1212
+#: includes/class.cooked-shortcodes.php:1218
msgid "Try adjusting the matching criteria or ensure you have other published recipes with shared categories, tags, or ingredients."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1666
+#: includes/class.cooked-recipe-meta.php:1679
msgid "Displays a grid of related recipes based on shared terms in any of the recipe taxonomies (categories, cuisines, cooking methods, tags, diets), shown in random order. No cache or pre-calculation."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1691
+#: includes/class.cooked-recipe-meta.php:1704
msgid "Number of recipes to display (default: 4)."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1698
+#: includes/class.cooked-recipe-meta.php:1711
msgid "Number of columns in the grid (default: 2)."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1732
+#: includes/class.cooked-recipe-meta.php:1745
msgid "Toggle which taxonomies are used: match_categories, match_cuisines, match_cooking_methods, match_tags, match_diets (default: true)."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1739
+#: includes/class.cooked-recipe-meta.php:1752
msgid "Matching options:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1740
+#: includes/class.cooked-recipe-meta.php:1753
msgid "Set to false to exclude a taxonomy from related recipes, e.g. match_cuisines=\"false\" to ignore cuisines."
msgstr ""
@@ -2396,48 +2402,50 @@ msgstr ""
msgid "No tools available."
msgstr ""
-#: includes/class.cooked-updates.php:150
+#: includes/class.cooked-updates.php:167
msgid "Flush rewrite rules"
msgstr ""
-#: includes/class.cooked-updates.php:151
+#: includes/class.cooked-updates.php:168
msgid "Refreshes permalink rules for recipe and profile URLs."
msgstr ""
-#: includes/class.cooked-updates.php:154
+#: includes/class.cooked-updates.php:171
msgid "Fix recipe line endings"
msgstr ""
-#: includes/class.cooked-updates.php:155
+#: includes/class.cooked-updates.php:172
msgid "Normalizes line endings in recipe content for exporter/importer compatibility."
msgstr ""
-#: includes/class.cooked-updates.php:158
+#: includes/class.cooked-updates.php:175
msgid "Purge legacy related recipes cache"
msgstr ""
-#: includes/class.cooked-updates.php:159
+#: includes/class.cooked-updates.php:176
msgid "Removes old transients and options from the previous related-recipes cache."
msgstr ""
-#: includes/class.cooked-updates.php:162
+#: includes/class.cooked-updates.php:179
msgid "Remove recipes from user meta"
msgstr ""
-#: includes/class.cooked-updates.php:163
+#: includes/class.cooked-updates.php:180
msgid "Removes the legacy \"recipes\" key from all users' cooked_user_meta."
msgstr ""
-#: includes/class.cooked-updates.php:196
+#: includes/class.cooked-updates.php:213
msgid "Tool name is required."
msgstr ""
-#: includes/class.cooked-updates.php:207
+#. translators: %s: site health tool name
+#: includes/class.cooked-updates.php:225
#, php-format
msgid "Unknown tool: %s."
msgstr ""
-#: includes/class.cooked-updates.php:210
+#. translators: %s: PHP method name
+#: includes/class.cooked-updates.php:229
#, php-format
msgid "Tool method %s does not exist."
msgstr ""
@@ -2483,7 +2491,8 @@ msgid "Failed to upload CSV file."
msgstr ""
#: includes/class.cooked-admin-enqueues.php:164
-#: includes/class.cooked-ajax.php:398
+#: includes/class.cooked-ajax.php:405
+#: includes/class.cooked-ajax.php:410
msgid "File upload failed."
msgstr ""
@@ -2509,30 +2518,31 @@ msgstr ""
msgid "Last: %1$s · %2$s recipes"
msgstr ""
-#: includes/class.cooked-ajax.php:316
-#: includes/class.cooked-ajax.php:365
+#: includes/class.cooked-ajax.php:321
+#: includes/class.cooked-ajax.php:371
msgid "No default content provided."
msgstr ""
-#: includes/class.cooked-ajax.php:394
-#: includes/class.cooked-ajax.php:430
+#: includes/class.cooked-ajax.php:401
+#: includes/class.cooked-ajax.php:444
msgid "You do not have permission to import recipes."
msgstr ""
-#: includes/class.cooked-ajax.php:404
+#: includes/class.cooked-ajax.php:417
msgid "Invalid file type. Please upload a CSV file."
msgstr ""
-#: includes/class.cooked-ajax.php:437
+#: includes/class.cooked-ajax.php:451
msgid "CSV file not found. Please upload again."
msgstr ""
-#: includes/class.cooked-ajax.php:453
+#. translators: %d: number of recipes imported
+#: includes/class.cooked-ajax.php:468
#, php-format
msgid "Successfully imported %d recipe(s)."
msgstr ""
-#: includes/class.cooked-ajax.php:462
+#: includes/class.cooked-ajax.php:477
msgid "No recipes were imported."
msgstr ""
@@ -2552,91 +2562,91 @@ msgstr ""
msgid "CSV file must contain a \"title\" column."
msgstr ""
-#: includes/class.cooked-import.php:152
+#: includes/class.cooked-import.php:156
msgid "Import recipes from a CSV file. Your CSV file should include the following columns:"
msgstr ""
-#: includes/class.cooked-import.php:154
+#: includes/class.cooked-import.php:158
msgid "Recipe title (required)"
msgstr ""
-#: includes/class.cooked-import.php:156
+#: includes/class.cooked-import.php:160
msgid "Prep time in minutes"
msgstr ""
-#: includes/class.cooked-import.php:157
+#: includes/class.cooked-import.php:161
msgid "Cook time in minutes"
msgstr ""
-#: includes/class.cooked-import.php:158
+#: includes/class.cooked-import.php:162
msgid "Difficulty level (1=Beginner, 2=Intermediate, 3=Advanced)"
msgstr ""
-#: includes/class.cooked-import.php:165
+#: includes/class.cooked-import.php:169
msgid "Cooking method, separated by comma"
msgstr ""
-#: includes/class.cooked-import.php:170
+#: includes/class.cooked-import.php:174
msgid "Recipes will be imported with the 'Draft' status. After the import is complete, you can bulk edit the recipes and change their status to 'Published' ."
msgstr ""
-#: includes/class.cooked-import.php:173
+#: includes/class.cooked-import.php:177
msgid "CSV Import"
msgstr ""
-#: includes/class.cooked-import.php:177
+#: includes/class.cooked-import.php:181
msgid "Import Recipes via CSV"
msgstr ""
-#: includes/class.cooked-import.php:229
+#: includes/class.cooked-import.php:233
msgid "Upload and Import CSV"
msgstr ""
-#: includes/class.cooked-import.php:234
+#: includes/class.cooked-import.php:238
msgid "Import Complete!"
msgstr ""
-#: includes/class.cooked-import.php:234
+#: includes/class.cooked-import.php:238
msgid "You can now"
msgstr ""
-#: includes/class.cooked-import.php:234
+#: includes/class.cooked-import.php:238
msgid "the import screen or"
msgstr ""
-#: includes/class.cooked-import.php:234
+#: includes/class.cooked-import.php:238
msgid "view your recipes"
msgstr ""
-#: includes/class.cooked-import.php:155
+#: includes/class.cooked-import.php:159
msgid "Excerpt/description"
msgstr ""
-#: includes/class.cooked-import.php:162
+#: includes/class.cooked-import.php:166
msgid "Category, separated by comma"
msgstr ""
-#: includes/class.cooked-import.php:164
+#: includes/class.cooked-import.php:168
msgid "Cuisine, separated by comma"
msgstr ""
-#: includes/class.cooked-import.php:166
+#: includes/class.cooked-import.php:170
msgid "Tags, separated by comma"
msgstr ""
-#: includes/class.cooked-import.php:167
+#: includes/class.cooked-import.php:171
msgid "Restricted diet type (Schema.org RestrictedDiet), separated by comma"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:173
+#: includes/class.cooked-admin-enqueues.php:176
msgid "Bulk Add Ingredients"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:174
+#: includes/class.cooked-admin-enqueues.php:177
msgid "Bulk Add Directions"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:175
+#: includes/class.cooked-admin-enqueues.php:178
msgid ""
"2 cups flour\n"
"1 tsp salt\n"
@@ -2644,55 +2654,55 @@ msgid ""
"3 large eggs"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:176
+#: includes/class.cooked-admin-enqueues.php:179
msgid ""
"Preheat oven to 350°F.\n"
"Mix dry ingredients together.\n"
"Add wet ingredients and stir."
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:178
+#: includes/class.cooked-admin-enqueues.php:181
msgid "Parsing..."
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:179
+#: includes/class.cooked-admin-enqueues.php:182
msgid "Add Ingredients"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:180
+#: includes/class.cooked-admin-enqueues.php:183
msgid "Add Directions"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:184
+#: includes/class.cooked-admin-enqueues.php:187
msgid "Heading text"
msgstr ""
-#: includes/class.cooked-ajax.php:470
+#: includes/class.cooked-ajax.php:486
msgid "Security check failed."
msgstr ""
-#: includes/class.cooked-ajax.php:476
+#: includes/class.cooked-ajax.php:492
msgid "No ingredients provided."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:258
+#: includes/class.cooked-recipe-meta.php:271
msgid "Enter one item per line. Use the checkboxes below to mark section headings."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:261
+#: includes/class.cooked-recipe-meta.php:274
msgid "Preview"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:265
+#: includes/class.cooked-recipe-meta.php:278
msgid "Please review the parsed fields before adding. Automatic parsing may misread amounts—for example, a range written as 2-3 could appear as 23 unless you correct it."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:270
+#: includes/class.cooked-recipe-meta.php:283
msgid "Cancel"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:797
-#: includes/class.cooked-recipe-meta.php:1021
+#: includes/class.cooked-recipe-meta.php:810
+#: includes/class.cooked-recipe-meta.php:1034
msgid "Bulk Add"
msgstr ""
@@ -2777,12 +2787,14 @@ msgstr ""
msgid "Contains %s"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:217
+#. translators: %s: recipe embed shortcode
+#: includes/class.cooked-recipe-meta.php:229
#, php-format
msgid "This recipe is set up to include itself in the Recipe Template (containing shortcode %s), which can break the page. Remove the embed that references this same recipe."
msgstr ""
-#: includes/class.cooked-shortcodes.php:359
+#. translators: %s: recipe embed shortcode
+#: includes/class.cooked-shortcodes.php:363
#, php-format
msgid "This recipe could not be displayed because it is set up to include itself (containing shortcode %s). Remove the duplicate recipe embed from the Recipe Template."
msgstr ""
@@ -2798,133 +2810,134 @@ msgstr ""
msgid "Row %1$d: Unknown error"
msgstr ""
+#. translators: 1: CSV row number, 2: error message
#. translators: 1: row number, 2: error message
-#: includes/class.cooked-csv-import.php:123
-#: includes/class.cooked-csv-import.php:188
+#: includes/class.cooked-csv-import.php:124
+#: includes/class.cooked-csv-import.php:189
#, php-format
msgid "Row %1$d: %2$s"
msgstr ""
#. translators: %d: row number
-#: includes/class.cooked-csv-import.php:156
+#: includes/class.cooked-csv-import.php:157
#, php-format
msgid "Row %1$d: Title is required"
msgstr ""
-#: includes/class.cooked-import.php:159
+#: includes/class.cooked-import.php:163
msgid "Ingredients, separated by pipe (|). Format: \"amount|measurement|name\" or \"name\" for simple ingredients. Add substitutions with double pipe (||): \"amount|measurement|name||sub_amount|sub_measurement|sub_name\""
msgstr ""
-#: includes/class.cooked-import.php:160
+#: includes/class.cooked-import.php:164
msgid "Directions/instructions, separated by pipe (|)"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:301
+#: includes/class.cooked-recipe-meta.php:314
msgid "Recipe Card"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:302
+#: includes/class.cooked-recipe-meta.php:315
msgid "Displays a compact linked recipe card with image, title, author, and excerpt — not the full recipe. Use this to promote this recipe elsewhere on your site."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:310
+#: includes/class.cooked-recipe-meta.php:323
msgid "Choose \"modern\" or \"modern-centered\"."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:317
+#: includes/class.cooked-recipe-meta.php:330
msgid "Set the card width. Defaults to 100%. Use \"%\" or \"px\" after the number."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:327
+#: includes/class.cooked-recipe-meta.php:340
msgid "Hide the recipe excerpt."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:334
+#: includes/class.cooked-recipe-meta.php:347
msgid "Hide the recipe author."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:344
+#: includes/class.cooked-recipe-meta.php:357
msgid "Hide the recipe image."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:351
+#: includes/class.cooked-recipe-meta.php:364
msgid "Hide the recipe title."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:364
+#: includes/class.cooked-recipe-meta.php:377
msgid "Card width"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:365
+#: includes/class.cooked-recipe-meta.php:378
msgid "modern, modern-centered"
msgstr ""
-#: includes/class.cooked-settings.php:337
+#: includes/class.cooked-settings.php:349
msgid "Print View"
msgstr ""
-#: includes/class.cooked-import.php:220
+#: includes/class.cooked-import.php:224
msgid "Download sample CSV files:"
msgstr ""
-#: includes/class.cooked-import.php:221
+#: includes/class.cooked-import.php:225
msgid "Small (1 recipe)"
msgstr ""
-#: includes/class.cooked-import.php:222
+#: includes/class.cooked-import.php:226
msgid "Medium (3 recipes)"
msgstr ""
-#: includes/class.cooked-import.php:223
+#: includes/class.cooked-import.php:227
msgid "Large (10 recipes)"
msgstr ""
-#: includes/class.cooked-recipes.php:935
-#: includes/class.cooked-recipes.php:945
+#: includes/class.cooked-recipes.php:939
+#: includes/class.cooked-recipes.php:949
msgid "Default"
msgstr ""
-#: includes/class.cooked-recipes.php:936
-#: includes/class.cooked-recipes.php:946
+#: includes/class.cooked-recipes.php:940
+#: includes/class.cooked-recipes.php:950
msgid "Metric"
msgstr ""
-#: includes/class.cooked-recipes.php:937
-#: includes/class.cooked-recipes.php:947
+#: includes/class.cooked-recipes.php:941
+#: includes/class.cooked-recipes.php:951
msgid "Imperial"
msgstr ""
-#: includes/class.cooked-recipes.php:941
+#: includes/class.cooked-recipes.php:945
msgid "Units"
msgstr ""
-#: includes/class.cooked-recipes.php:943
+#: includes/class.cooked-recipes.php:947
msgid "Measurement System"
msgstr ""
-#: includes/class.cooked-settings.php:453
+#: includes/class.cooked-settings.php:465
msgid "Enable \"Measurement System Switcher\""
msgstr ""
-#: includes/class.cooked-settings.php:453
+#: includes/class.cooked-settings.php:465
msgid "Shows the Metric/Imperial toggle on recipes."
msgstr ""
#. translators: %s: recipe archive URL, e.g. https://example.com/recipe-archive
-#: includes/class.cooked-settings.php:457
+#: includes/class.cooked-settings.php:469
#, php-format
msgid "Prevents the recipe archive from being displayed at %s."
msgstr ""
#: includes/class.cooked-admin-enqueues.php:141
-#: includes/class.cooked-recipe-meta.php:922
-#: includes/class.cooked-recipe-meta.php:1002
-#: includes/class.cooked-recipe-meta.php:1040
+#: includes/class.cooked-recipe-meta.php:935
+#: includes/class.cooked-recipe-meta.php:1015
+#: includes/class.cooked-recipe-meta.php:1053
msgid "Add Video"
msgstr ""
#: includes/class.cooked-admin-enqueues.php:142
-#: includes/class.cooked-recipe-meta.php:922
+#: includes/class.cooked-recipe-meta.php:935
msgid "Change Video"
msgstr ""
@@ -2948,34 +2961,48 @@ msgstr ""
msgid "Pixwell's dark mode toggle is enabled. Choose Auto so Cooked follows it when visitors switch themes."
msgstr ""
-#: includes/class.cooked-settings.php:338
+#: includes/class.cooked-settings.php:350
msgid "When enabled, the website logo will appear at the top of the recipe print screen."
msgstr ""
-#: includes/class.cooked-settings.php:344
+#: includes/class.cooked-settings.php:356
msgid "Show Website Logo"
msgstr ""
-#: includes/class.cooked-settings.php:473
+#: includes/class.cooked-settings.php:485
msgid "Use Auto if your theme has a visitor dark mode toggle. Cooked will then match that choice. Otherwise leave this Off."
msgstr ""
-#: includes/class.cooked-settings.php:480
+#: includes/class.cooked-settings.php:492
msgid "Off"
msgstr ""
-#: includes/class.cooked-settings.php:481
+#: includes/class.cooked-settings.php:493
msgid "On"
msgstr ""
-#: includes/class.cooked-settings.php:482
+#: includes/class.cooked-settings.php:494
msgid "Auto (match theme dark mode)"
msgstr ""
-#: includes/class.cooked-settings.php:500
+#: includes/class.cooked-settings.php:512
msgid "Default Recipe Image"
msgstr ""
-#: includes/class.cooked-settings.php:501
+#: includes/class.cooked-settings.php:513
msgid "Used as the featured image for recipes that do not have one set."
msgstr ""
+
+#: includes/class.cooked-measurements.php:214
+msgid "g"
+msgstr ""
+
+#: includes/class.cooked-post-types.php:466
+msgctxt "post type general name"
+msgid "Recipes"
+msgstr ""
+
+#: includes/class.cooked-post-types.php:467
+msgctxt "post type singular name"
+msgid "Recipe"
+msgstr ""
diff --git a/languages/cooked.pot b/languages/cooked.pot
index 7ad0fb9..2992a15 100644
--- a/languages/cooked.pot
+++ b/languages/cooked.pot
@@ -2,14 +2,14 @@
# This file is distributed under the GPLv2 or later.
msgid ""
msgstr ""
-"Project-Id-Version: Cooked - Recipe Management 1.16.0\n"
+"Project-Id-Version: Cooked - Recipe Management 1.16.1\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/cooked\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2026-08-11T20:41:45-04:00\n"
+"POT-Creation-Date: 2026-09-07T16:18:34-04:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.12.0\n"
"X-Domain: cooked\n"
@@ -44,16 +44,16 @@ msgid "remaining"
msgstr ""
#: includes/class.cooked-admin-enqueues.php:138
-#: includes/class.cooked-recipe-meta.php:912
-#: includes/class.cooked-recipe-meta.php:979
-#: includes/class.cooked-recipe-meta.php:1030
-#: includes/class.cooked-settings.php:802
+#: includes/class.cooked-recipe-meta.php:925
+#: includes/class.cooked-recipe-meta.php:992
+#: includes/class.cooked-recipe-meta.php:1043
+#: includes/class.cooked-settings.php:814
msgid "Add Image"
msgstr ""
#: includes/class.cooked-admin-enqueues.php:139
-#: includes/class.cooked-recipe-meta.php:912
-#: includes/class.cooked-settings.php:802
+#: includes/class.cooked-recipe-meta.php:925
+#: includes/class.cooked-settings.php:814
msgid "Change Image"
msgstr ""
@@ -62,14 +62,14 @@ msgid "Use this Image"
msgstr ""
#: includes/class.cooked-admin-enqueues.php:141
-#: includes/class.cooked-recipe-meta.php:922
-#: includes/class.cooked-recipe-meta.php:1002
-#: includes/class.cooked-recipe-meta.php:1040
+#: includes/class.cooked-recipe-meta.php:935
+#: includes/class.cooked-recipe-meta.php:1015
+#: includes/class.cooked-recipe-meta.php:1053
msgid "Add Video"
msgstr ""
#: includes/class.cooked-admin-enqueues.php:142
-#: includes/class.cooked-recipe-meta.php:922
+#: includes/class.cooked-recipe-meta.php:935
msgid "Change Video"
msgstr ""
@@ -78,7 +78,7 @@ msgid "Use this Video"
msgstr ""
#: includes/class.cooked-admin-enqueues.php:144
-#: includes/class.cooked-recipe-meta.php:1269
+#: includes/class.cooked-recipe-meta.php:1282
msgid "Add to Gallery"
msgstr ""
@@ -157,7 +157,8 @@ msgid "Failed to upload CSV file."
msgstr ""
#: includes/class.cooked-admin-enqueues.php:164
-#: includes/class.cooked-ajax.php:398
+#: includes/class.cooked-ajax.php:405
+#: includes/class.cooked-ajax.php:410
msgid "File upload failed."
msgstr ""
@@ -183,15 +184,15 @@ msgstr ""
msgid "Last: %1$s · %2$s recipes"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:173
+#: includes/class.cooked-admin-enqueues.php:176
msgid "Bulk Add Ingredients"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:174
+#: includes/class.cooked-admin-enqueues.php:177
msgid "Bulk Add Directions"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:175
+#: includes/class.cooked-admin-enqueues.php:178
msgid ""
"2 cups flour\n"
"1 tsp salt\n"
@@ -199,67 +200,67 @@ msgid ""
"3 large eggs"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:176
+#: includes/class.cooked-admin-enqueues.php:179
msgid ""
"Preheat oven to 350°F.\n"
"Mix dry ingredients together.\n"
"Add wet ingredients and stir."
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:177
-#: includes/class.cooked-recipe-meta.php:1748
+#: includes/class.cooked-admin-enqueues.php:180
+#: includes/class.cooked-recipe-meta.php:1761
msgid "Section heading"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:178
+#: includes/class.cooked-admin-enqueues.php:181
msgid "Parsing..."
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:179
+#: includes/class.cooked-admin-enqueues.php:182
msgid "Add Ingredients"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:180
+#: includes/class.cooked-admin-enqueues.php:183
msgid "Add Directions"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:181
-#: includes/class.cooked-recipe-meta.php:626
+#: includes/class.cooked-admin-enqueues.php:184
+#: includes/class.cooked-recipe-meta.php:639
msgid "Amount"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:182
-#: includes/class.cooked-recipe-meta.php:627
+#: includes/class.cooked-admin-enqueues.php:185
+#: includes/class.cooked-recipe-meta.php:640
msgid "Measurement"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:183
-#: includes/class.cooked-recipe-meta.php:628
+#: includes/class.cooked-admin-enqueues.php:186
+#: includes/class.cooked-recipe-meta.php:641
msgid "Item"
msgstr ""
-#: includes/class.cooked-admin-enqueues.php:184
+#: includes/class.cooked-admin-enqueues.php:187
msgid "Heading text"
msgstr ""
#: includes/class.cooked-admin-menus.php:36
#: includes/class.cooked-admin-menus.php:59
-#: includes/class.cooked-post-types.php:451
-#: includes/class.cooked-post-types.php:463
+#: includes/class.cooked-post-types.php:468
+#: includes/class.cooked-post-types.php:480
#: includes/class.cooked-users.php:166
msgid "Recipes"
msgstr ""
#: includes/class.cooked-admin-menus.php:37
#: includes/class.cooked-admin-menus.php:61
-#: includes/class.cooked-post-types.php:453
+#: includes/class.cooked-post-types.php:470
msgid "Add New"
msgstr ""
#. translators: referring to the bottom of the Settings page.
#: includes/class.cooked-admin-menus.php:45
#: includes/class.cooked-admin-menus.php:65
-#: includes/class.cooked-shortcodes.php:167
+#: includes/class.cooked-shortcodes.php:168
#: templates/admin/welcome.php:18
msgid "Settings"
msgstr ""
@@ -278,7 +279,7 @@ msgid "Upgrade to Pro"
msgstr ""
#: includes/class.cooked-admin-menus.php:60
-#: includes/class.cooked-post-types.php:458
+#: includes/class.cooked-post-types.php:475
msgid "All Recipes"
msgstr ""
@@ -289,60 +290,61 @@ msgstr ""
msgid "You do not have sufficient permissions to access this page."
msgstr ""
-#: includes/class.cooked-ajax.php:187
-#: includes/class.cooked-csv-import.php:392
+#: includes/class.cooked-ajax.php:207
+#: includes/class.cooked-csv-import.php:393
#: includes/class.cooked-functions.php:134
-#: includes/class.cooked-recipe-meta.php:177
-#: includes/class.cooked-recipe-meta.php:415
-#: includes/class.cooked-recipe-meta.php:1347
-#: includes/class.cooked-recipes.php:740
-#: includes/class.cooked-recipes.php:772
+#: includes/class.cooked-recipe-meta.php:187
+#: includes/class.cooked-recipe-meta.php:428
+#: includes/class.cooked-recipe-meta.php:1360
+#: includes/class.cooked-recipes.php:744
+#: includes/class.cooked-recipes.php:776
msgid "Ingredients"
msgstr ""
-#: includes/class.cooked-ajax.php:187
-#: includes/class.cooked-csv-import.php:392
+#: includes/class.cooked-ajax.php:207
+#: includes/class.cooked-csv-import.php:393
#: includes/class.cooked-functions.php:135
-#: includes/class.cooked-recipe-meta.php:177
-#: includes/class.cooked-recipe-meta.php:421
-#: includes/class.cooked-recipe-meta.php:1378
-#: includes/class.cooked-recipes.php:744
-#: includes/class.cooked-recipes.php:773
+#: includes/class.cooked-recipe-meta.php:187
+#: includes/class.cooked-recipe-meta.php:434
+#: includes/class.cooked-recipe-meta.php:1391
+#: includes/class.cooked-recipes.php:748
+#: includes/class.cooked-recipes.php:777
msgid "Directions"
msgstr ""
-#: includes/class.cooked-ajax.php:316
-#: includes/class.cooked-ajax.php:365
+#: includes/class.cooked-ajax.php:321
+#: includes/class.cooked-ajax.php:371
msgid "No default content provided."
msgstr ""
-#: includes/class.cooked-ajax.php:394
-#: includes/class.cooked-ajax.php:430
+#: includes/class.cooked-ajax.php:401
+#: includes/class.cooked-ajax.php:444
msgid "You do not have permission to import recipes."
msgstr ""
-#: includes/class.cooked-ajax.php:404
+#: includes/class.cooked-ajax.php:417
msgid "Invalid file type. Please upload a CSV file."
msgstr ""
-#: includes/class.cooked-ajax.php:437
+#: includes/class.cooked-ajax.php:451
msgid "CSV file not found. Please upload again."
msgstr ""
-#: includes/class.cooked-ajax.php:453
+#. translators: %d: number of recipes imported
+#: includes/class.cooked-ajax.php:468
#, php-format
msgid "Successfully imported %d recipe(s)."
msgstr ""
-#: includes/class.cooked-ajax.php:462
+#: includes/class.cooked-ajax.php:477
msgid "No recipes were imported."
msgstr ""
-#: includes/class.cooked-ajax.php:470
+#: includes/class.cooked-ajax.php:486
msgid "Security check failed."
msgstr ""
-#: includes/class.cooked-ajax.php:476
+#: includes/class.cooked-ajax.php:492
msgid "No ingredients provided."
msgstr ""
@@ -461,15 +463,16 @@ msgstr ""
msgid "Row %1$d: Unknown error"
msgstr ""
+#. translators: 1: CSV row number, 2: error message
#. translators: 1: row number, 2: error message
-#: includes/class.cooked-csv-import.php:123
-#: includes/class.cooked-csv-import.php:188
+#: includes/class.cooked-csv-import.php:124
+#: includes/class.cooked-csv-import.php:189
#, php-format
msgid "Row %1$d: %2$s"
msgstr ""
#. translators: %d: row number
-#: includes/class.cooked-csv-import.php:156
+#: includes/class.cooked-csv-import.php:157
#, php-format
msgid "Row %1$d: Title is required"
msgstr ""
@@ -479,7 +482,7 @@ msgid "Error importing WP Delicious recipe."
msgstr ""
#: includes/class.cooked-enqueues.php:56
-#: includes/class.cooked-recipe-meta.php:1593
+#: includes/class.cooked-recipe-meta.php:1606
msgid "Timer"
msgstr ""
@@ -490,7 +493,7 @@ msgid "What's new in %s?"
msgstr ""
#: includes/class.cooked-functions.php:127
-#: includes/class.cooked-shortcodes.php:717
+#: includes/class.cooked-shortcodes.php:721
msgid "Print"
msgstr ""
@@ -507,8 +510,8 @@ msgid "Information"
msgstr ""
#: includes/class.cooked-functions.php:132
-#: includes/class.cooked-recipe-meta.php:1538
-#: includes/class.cooked-settings.php:327
+#: includes/class.cooked-recipe-meta.php:1551
+#: includes/class.cooked-settings.php:339
msgid "Excerpt"
msgstr ""
@@ -517,221 +520,221 @@ msgid "Images"
msgstr ""
#: includes/class.cooked-functions.php:136
-#: includes/class.cooked-import.php:161
-#: includes/class.cooked-recipe-meta.php:1562
-#: includes/class.cooked-recipes.php:747
-#: includes/class.cooked-settings.php:328
-#: includes/class.cooked-shortcodes.php:836
+#: includes/class.cooked-import.php:165
+#: includes/class.cooked-recipe-meta.php:1575
+#: includes/class.cooked-recipes.php:751
+#: includes/class.cooked-settings.php:340
+#: includes/class.cooked-shortcodes.php:840
msgid "Notes"
msgstr ""
#: includes/class.cooked-functions.php:137
-#: includes/class.cooked-recipe-meta.php:427
+#: includes/class.cooked-recipe-meta.php:440
msgid "Nutrition"
msgstr ""
#. translators: for displaying singular or plural versions depending on the number of recipes.
-#: includes/class.cooked-import.php:46
-#: includes/class.cooked-import.php:100
+#: includes/class.cooked-import.php:50
+#: includes/class.cooked-import.php:104
#, php-format
msgid "There is %1$s recipe that should be imported from %2$s."
msgid_plural "There are %1$s recipes that should be imported from %2$s."
msgstr[0] ""
msgstr[1] ""
-#: includes/class.cooked-import.php:48
-#: includes/class.cooked-import.php:102
+#: includes/class.cooked-import.php:52
+#: includes/class.cooked-import.php:106
msgid "Before you begin, please make sure you backup your database in case something goes wrong."
msgstr ""
-#: includes/class.cooked-import.php:50
-#: includes/class.cooked-import.php:104
+#: includes/class.cooked-import.php:54
+#: includes/class.cooked-import.php:108
msgid "Click the button below to import these recipes. Here is what will happen to your recipes:"
msgstr ""
-#: includes/class.cooked-import.php:52
-#: includes/class.cooked-import.php:106
+#: includes/class.cooked-import.php:56
+#: includes/class.cooked-import.php:110
msgid "Recipes will be imported with the 'Draft' status."
msgstr ""
-#: includes/class.cooked-import.php:53
-#: includes/class.cooked-import.php:107
+#: includes/class.cooked-import.php:57
+#: includes/class.cooked-import.php:111
msgid "Comments and ratings data will also be imported (ratings are available in Cooked Pro)."
msgstr ""
-#: includes/class.cooked-import.php:54
-#: includes/class.cooked-import.php:109
+#: includes/class.cooked-import.php:58
+#: includes/class.cooked-import.php:113
msgid "After the import is complete, you can bulk edit the recipes and change their status to 'Published' ."
msgstr ""
-#: includes/class.cooked-import.php:55
+#: includes/class.cooked-import.php:59
msgid "The existing WP Delicious recipes and data will not be modified or deleted."
msgstr ""
-#: includes/class.cooked-import.php:56
-#: includes/class.cooked-import.php:111
+#: includes/class.cooked-import.php:60
+#: includes/class.cooked-import.php:115
msgid "Certain data that is not suppoted by Cooked will not be imported (such as Cooking Temp, Estimated Cost, Recipe Keywords, etc)."
msgstr ""
-#: includes/class.cooked-import.php:57
-#: includes/class.cooked-import.php:112
+#: includes/class.cooked-import.php:61
+#: includes/class.cooked-import.php:116
msgid "You can run the import multiple times, but keep in mind that duplicate recipes will be created."
msgstr ""
-#: includes/class.cooked-import.php:61
-#: includes/class.cooked-import.php:116
+#: includes/class.cooked-import.php:65
+#: includes/class.cooked-import.php:120
#: includes/class.cooked-migration.php:58
msgid "Wow, you have a lot of recipes!"
msgstr ""
-#: includes/class.cooked-import.php:61
-#: includes/class.cooked-import.php:116
+#: includes/class.cooked-import.php:65
+#: includes/class.cooked-import.php:120
#: includes/class.cooked-migration.php:58
msgid "It is definitely recommended that you get yourself a cup of coffee or tea after clicking this button."
msgstr ""
-#: includes/class.cooked-import.php:63
-#: includes/class.cooked-import.php:118
-#: includes/class.cooked-import.php:170
+#: includes/class.cooked-import.php:67
+#: includes/class.cooked-import.php:122
+#: includes/class.cooked-import.php:174
#: includes/class.cooked-migration.php:60
msgid "Note:"
msgstr ""
-#: includes/class.cooked-import.php:63
-#: includes/class.cooked-import.php:118
+#: includes/class.cooked-import.php:67
+#: includes/class.cooked-import.php:122
#: includes/class.cooked-migration.php:60
msgid "The more recipes you have, the longer this will take."
msgstr ""
-#: includes/class.cooked-import.php:68
-#: includes/class.cooked-import.php:83
+#: includes/class.cooked-import.php:72
+#: includes/class.cooked-import.php:87
msgid "WP Delicious - Import"
msgstr ""
-#: includes/class.cooked-import.php:108
+#: includes/class.cooked-import.php:112
msgid "The difficulty level will be set to Beginner since it is not supported by WP Recipe Maker."
msgstr ""
-#: includes/class.cooked-import.php:110
+#: includes/class.cooked-import.php:114
msgid "The existing WP Recipe Maker and data will not be modified or deleted."
msgstr ""
-#: includes/class.cooked-import.php:123
-#: includes/class.cooked-import.php:138
+#: includes/class.cooked-import.php:127
+#: includes/class.cooked-import.php:142
msgid "WP Recipe Maker - Import"
msgstr ""
-#: includes/class.cooked-import.php:152
+#: includes/class.cooked-import.php:156
msgid "Import recipes from a CSV file. Your CSV file should include the following columns:"
msgstr ""
-#: includes/class.cooked-import.php:154
+#: includes/class.cooked-import.php:158
msgid "Recipe title (required)"
msgstr ""
-#: includes/class.cooked-import.php:155
+#: includes/class.cooked-import.php:159
msgid "Excerpt/description"
msgstr ""
-#: includes/class.cooked-import.php:156
+#: includes/class.cooked-import.php:160
msgid "Prep time in minutes"
msgstr ""
-#: includes/class.cooked-import.php:157
+#: includes/class.cooked-import.php:161
msgid "Cook time in minutes"
msgstr ""
-#: includes/class.cooked-import.php:158
+#: includes/class.cooked-import.php:162
msgid "Difficulty level (1=Beginner, 2=Intermediate, 3=Advanced)"
msgstr ""
-#: includes/class.cooked-import.php:159
+#: includes/class.cooked-import.php:163
msgid "Ingredients, separated by pipe (|). Format: \"amount|measurement|name\" or \"name\" for simple ingredients. Add substitutions with double pipe (||): \"amount|measurement|name||sub_amount|sub_measurement|sub_name\""
msgstr ""
-#: includes/class.cooked-import.php:160
+#: includes/class.cooked-import.php:164
msgid "Directions/instructions, separated by pipe (|)"
msgstr ""
-#: includes/class.cooked-import.php:162
+#: includes/class.cooked-import.php:166
msgid "Category, separated by comma"
msgstr ""
-#: includes/class.cooked-import.php:164
+#: includes/class.cooked-import.php:168
msgid "Cuisine, separated by comma"
msgstr ""
-#: includes/class.cooked-import.php:165
+#: includes/class.cooked-import.php:169
msgid "Cooking method, separated by comma"
msgstr ""
-#: includes/class.cooked-import.php:166
+#: includes/class.cooked-import.php:170
msgid "Tags, separated by comma"
msgstr ""
-#: includes/class.cooked-import.php:167
+#: includes/class.cooked-import.php:171
msgid "Restricted diet type (Schema.org RestrictedDiet), separated by comma"
msgstr ""
-#: includes/class.cooked-import.php:170
+#: includes/class.cooked-import.php:174
msgid "Recipes will be imported with the 'Draft' status. After the import is complete, you can bulk edit the recipes and change their status to 'Published' ."
msgstr ""
-#: includes/class.cooked-import.php:173
+#: includes/class.cooked-import.php:177
msgid "CSV Import"
msgstr ""
-#: includes/class.cooked-import.php:177
+#: includes/class.cooked-import.php:181
msgid "Import Recipes via CSV"
msgstr ""
-#: includes/class.cooked-import.php:185
+#: includes/class.cooked-import.php:189
msgid "More Imports are Coming Soon..."
msgstr ""
-#: includes/class.cooked-import.php:206
+#: includes/class.cooked-import.php:210
msgid "Begin Import"
msgstr ""
-#: includes/class.cooked-import.php:211
-#: includes/class.cooked-import.php:234
-#: includes/class.cooked-settings.php:729
+#: includes/class.cooked-import.php:215
+#: includes/class.cooked-import.php:238
+#: includes/class.cooked-settings.php:741
msgid "reload"
msgstr ""
-#: includes/class.cooked-import.php:220
+#: includes/class.cooked-import.php:224
msgid "Download sample CSV files:"
msgstr ""
-#: includes/class.cooked-import.php:221
+#: includes/class.cooked-import.php:225
msgid "Small (1 recipe)"
msgstr ""
-#: includes/class.cooked-import.php:222
+#: includes/class.cooked-import.php:226
msgid "Medium (3 recipes)"
msgstr ""
-#: includes/class.cooked-import.php:223
+#: includes/class.cooked-import.php:227
msgid "Large (10 recipes)"
msgstr ""
-#: includes/class.cooked-import.php:229
+#: includes/class.cooked-import.php:233
msgid "Upload and Import CSV"
msgstr ""
-#: includes/class.cooked-import.php:234
+#: includes/class.cooked-import.php:238
msgid "Import Complete!"
msgstr ""
-#: includes/class.cooked-import.php:234
+#: includes/class.cooked-import.php:238
msgid "You can now"
msgstr ""
-#: includes/class.cooked-import.php:234
+#: includes/class.cooked-import.php:238
msgid "the import screen or"
msgstr ""
-#: includes/class.cooked-import.php:234
+#: includes/class.cooked-import.php:238
msgid "view your recipes"
msgstr ""
@@ -773,6 +776,7 @@ msgstr ""
#: includes/class.cooked-measurements.php:45
#: includes/class.cooked-measurements.php:46
+#: includes/class.cooked-measurements.php:215
msgid "mg"
msgstr ""
@@ -1026,222 +1030,226 @@ msgstr ""
msgid "cans"
msgstr ""
-#: includes/class.cooked-measurements.php:217
-#: includes/class.cooked-recipes.php:1003
-#: includes/class.cooked-settings.php:332
-msgid "Servings"
+#: includes/class.cooked-measurements.php:214
+msgid "g"
+msgstr ""
+
+#: includes/class.cooked-measurements.php:216
+msgid "mcg"
msgstr ""
#: includes/class.cooked-measurements.php:221
+#: includes/class.cooked-recipes.php:1008
+#: includes/class.cooked-settings.php:344
+msgid "Servings"
+msgstr ""
+
+#: includes/class.cooked-measurements.php:225
msgid "Serving size"
msgstr ""
-#: includes/class.cooked-measurements.php:228
+#: includes/class.cooked-measurements.php:232
msgid "Calories"
msgstr ""
-#: includes/class.cooked-measurements.php:235
+#: includes/class.cooked-measurements.php:239
msgid "Total Fat"
msgstr ""
-#: includes/class.cooked-measurements.php:241
+#: includes/class.cooked-measurements.php:245
msgid "Saturated Fat"
msgstr ""
-#: includes/class.cooked-measurements.php:247
+#: includes/class.cooked-measurements.php:251
msgid "Trans Fat"
msgstr ""
-#: includes/class.cooked-measurements.php:248
+#: includes/class.cooked-measurements.php:252
msgid "Trans Fat"
msgstr ""
-#: includes/class.cooked-measurements.php:253
+#: includes/class.cooked-measurements.php:257
msgid "Monounsaturated Fat"
msgstr ""
-#: includes/class.cooked-measurements.php:258
+#: includes/class.cooked-measurements.php:262
msgid "Polyunsaturated Fat"
msgstr ""
-#: includes/class.cooked-measurements.php:265
+#: includes/class.cooked-measurements.php:269
msgid "Cholesterol"
msgstr ""
-#: includes/class.cooked-measurements.php:271
+#: includes/class.cooked-measurements.php:275
msgid "Sodium"
msgstr ""
-#: includes/class.cooked-measurements.php:277
+#: includes/class.cooked-measurements.php:281
msgid "Total Carbohydrate"
msgstr ""
-#: includes/class.cooked-measurements.php:277
+#: includes/class.cooked-measurements.php:281
msgid "Net Carbohydrate"
msgstr ""
-#: includes/class.cooked-measurements.php:283
+#: includes/class.cooked-measurements.php:287
msgid "Dietary Fiber"
msgstr ""
-#: includes/class.cooked-measurements.php:289
+#: includes/class.cooked-measurements.php:293
msgid "Total Sugars"
msgstr ""
-#: includes/class.cooked-measurements.php:295
+#: includes/class.cooked-measurements.php:299
msgid "Added Sugars"
msgstr ""
-#: includes/class.cooked-measurements.php:303
+#: includes/class.cooked-measurements.php:307
msgid "Protein"
msgstr ""
-#: includes/class.cooked-measurements.php:312
+#: includes/class.cooked-measurements.php:316
msgid "Vitamin A"
msgstr ""
-#: includes/class.cooked-measurements.php:318
+#: includes/class.cooked-measurements.php:322
msgid "Vitamin C"
msgstr ""
-#: includes/class.cooked-measurements.php:324
+#: includes/class.cooked-measurements.php:328
msgid "Calcium"
msgstr ""
-#: includes/class.cooked-measurements.php:330
+#: includes/class.cooked-measurements.php:334
msgid "Iron"
msgstr ""
-#: includes/class.cooked-measurements.php:336
+#: includes/class.cooked-measurements.php:340
msgid "Potassium"
msgstr ""
-#: includes/class.cooked-measurements.php:342
+#: includes/class.cooked-measurements.php:346
msgid "Vitamin D"
msgstr ""
-#: includes/class.cooked-measurements.php:348
+#: includes/class.cooked-measurements.php:352
msgid "Vitamin E"
msgstr ""
-#: includes/class.cooked-measurements.php:354
+#: includes/class.cooked-measurements.php:358
msgid "Vitamin K"
msgstr ""
-#: includes/class.cooked-measurements.php:360
+#: includes/class.cooked-measurements.php:364
msgid "Thiamin"
msgstr ""
-#: includes/class.cooked-measurements.php:366
+#: includes/class.cooked-measurements.php:370
msgid "Riboflavin"
msgstr ""
-#: includes/class.cooked-measurements.php:372
+#: includes/class.cooked-measurements.php:376
msgid "Niacin"
msgstr ""
-#: includes/class.cooked-measurements.php:378
+#: includes/class.cooked-measurements.php:382
msgid "Vitamin B6"
msgstr ""
-#: includes/class.cooked-measurements.php:384
+#: includes/class.cooked-measurements.php:388
msgid "Folate"
msgstr ""
-#: includes/class.cooked-measurements.php:390
+#: includes/class.cooked-measurements.php:394
msgid "Vitamin B12"
msgstr ""
-#: includes/class.cooked-measurements.php:396
+#: includes/class.cooked-measurements.php:400
msgid "Biotin"
msgstr ""
-#: includes/class.cooked-measurements.php:402
+#: includes/class.cooked-measurements.php:406
msgid "Pantothenic Acid"
msgstr ""
-#: includes/class.cooked-measurements.php:408
+#: includes/class.cooked-measurements.php:412
msgid "Phosphorus"
msgstr ""
-#: includes/class.cooked-measurements.php:414
+#: includes/class.cooked-measurements.php:418
msgid "Iodine"
msgstr ""
-#: includes/class.cooked-measurements.php:420
+#: includes/class.cooked-measurements.php:424
msgid "Magnesium"
msgstr ""
-#: includes/class.cooked-measurements.php:426
+#: includes/class.cooked-measurements.php:430
msgid "Zinc"
msgstr ""
-#: includes/class.cooked-measurements.php:432
+#: includes/class.cooked-measurements.php:436
msgid "Selenium"
msgstr ""
-#: includes/class.cooked-measurements.php:438
+#: includes/class.cooked-measurements.php:442
msgid "Copper"
msgstr ""
-#: includes/class.cooked-measurements.php:444
+#: includes/class.cooked-measurements.php:448
msgid "Manganese"
msgstr ""
-#: includes/class.cooked-measurements.php:450
+#: includes/class.cooked-measurements.php:454
msgid "Chromium"
msgstr ""
-#: includes/class.cooked-measurements.php:456
+#: includes/class.cooked-measurements.php:460
msgid "Molybdenum"
msgstr ""
-#: includes/class.cooked-measurements.php:462
+#: includes/class.cooked-measurements.php:466
msgid "Chloride"
msgstr ""
-#: includes/class.cooked-measurements.php:471
-msgid "mcg"
-msgstr ""
-
#. translators: singular and plural number of minutes (shorthand)
-#: includes/class.cooked-measurements.php:721
-#: includes/class.cooked-measurements.php:732
-#: includes/class.cooked-measurements.php:750
+#: includes/class.cooked-measurements.php:722
+#: includes/class.cooked-measurements.php:733
+#: includes/class.cooked-measurements.php:751
#, php-format
msgid "%d min"
msgstr ""
#. translators: singular and plural number of minutes (shorthand)
-#: includes/class.cooked-measurements.php:721
-#: includes/class.cooked-measurements.php:732
-#: includes/class.cooked-measurements.php:750
+#: includes/class.cooked-measurements.php:722
+#: includes/class.cooked-measurements.php:733
+#: includes/class.cooked-measurements.php:751
#, php-format
msgid "%d mins"
msgstr ""
#. translators: singular and plural number of hours (shorthand)
-#: includes/class.cooked-measurements.php:730
-#: includes/class.cooked-measurements.php:748
+#: includes/class.cooked-measurements.php:731
+#: includes/class.cooked-measurements.php:749
#, php-format
msgid "%d hr"
msgstr ""
#. translators: singular and plural number of hours (shorthand)
-#: includes/class.cooked-measurements.php:730
-#: includes/class.cooked-measurements.php:748
+#: includes/class.cooked-measurements.php:731
+#: includes/class.cooked-measurements.php:749
#, php-format
msgid "%d hrs"
msgstr ""
#. translators: singular and plural number of days
-#: includes/class.cooked-measurements.php:746
+#: includes/class.cooked-measurements.php:747
#, php-format
msgid "%d day"
msgstr ""
#. translators: singular and plural number of days
-#: includes/class.cooked-measurements.php:746
+#: includes/class.cooked-measurements.php:747
#, php-format
msgid "%d days"
msgstr ""
@@ -1295,16 +1303,16 @@ msgstr[1] ""
msgid "click here"
msgstr ""
-#: includes/class.cooked-multilingual.php:260
+#: includes/class.cooked-multilingual.php:262
msgid "Multilingual Setup:"
msgstr ""
-#: includes/class.cooked-multilingual.php:261
+#: includes/class.cooked-multilingual.php:263
msgid "Your Browse/Search Recipes page is missing translations for:"
msgstr ""
#. translators: %s is the multilingual plugin name (Polylang or WPML)
-#: includes/class.cooked-multilingual.php:266
+#: includes/class.cooked-multilingual.php:268
#, php-format
msgid "Create translations of your browse page in %s for full multilingual support."
msgstr ""
@@ -1329,52 +1337,62 @@ msgstr ""
msgid "Required by Cooked Pro"
msgstr ""
-#: includes/class.cooked-post-types.php:89
+#: includes/class.cooked-post-types.php:90
msgid "Photo"
msgstr ""
-#: includes/class.cooked-post-types.php:433
-#: includes/class.cooked-settings.php:253
+#: includes/class.cooked-post-types.php:449
+#: includes/class.cooked-settings.php:265
msgid "Recipe Archive"
msgstr ""
-#: includes/class.cooked-post-types.php:452
+#: includes/class.cooked-post-types.php:466
+msgctxt "post type general name"
+msgid "Recipes"
+msgstr ""
+
+#: includes/class.cooked-post-types.php:467
+msgctxt "post type singular name"
+msgid "Recipe"
+msgstr ""
+
+#: includes/class.cooked-post-types.php:469
msgid "Recipe"
msgstr ""
-#: includes/class.cooked-post-types.php:454
+#: includes/class.cooked-post-types.php:471
msgid "Add New Recipe"
msgstr ""
-#: includes/class.cooked-post-types.php:455
+#: includes/class.cooked-post-types.php:472
msgid "New Recipe"
msgstr ""
-#: includes/class.cooked-post-types.php:456
+#: includes/class.cooked-post-types.php:473
msgid "Edit Recipe"
msgstr ""
-#: includes/class.cooked-post-types.php:457
+#: includes/class.cooked-post-types.php:474
msgid "View Recipe"
msgstr ""
-#: includes/class.cooked-post-types.php:459
+#: includes/class.cooked-post-types.php:476
msgid "Search Recipes"
msgstr ""
-#: includes/class.cooked-post-types.php:460
+#: includes/class.cooked-post-types.php:477
msgid "No recipes found."
msgstr ""
-#: includes/class.cooked-post-types.php:461
+#: includes/class.cooked-post-types.php:478
msgid "No recipes found in trash."
msgstr ""
-#: includes/class.cooked-post-types.php:489
+#: includes/class.cooked-post-types.php:506
msgid "Recipe title ..."
msgstr ""
-#: includes/class.cooked-post-types.php:520
+#: includes/class.cooked-post-types.php:537
msgid "Cooked Browse Recipes Page"
msgstr ""
@@ -1391,692 +1409,693 @@ msgstr ""
msgid "Error importing WP Recipe Maker recipe."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:118
+#: includes/class.cooked-recipe-meta.php:124
#: templates/admin/settings.php:10
#: templates/admin/welcome.php:33
msgid "Cooked Settings"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:217
+#. translators: %s: recipe embed shortcode
+#: includes/class.cooked-recipe-meta.php:229
#, php-format
msgid "This recipe is set up to include itself in the Recipe Template (containing shortcode %s), which can break the page. Remove the embed that references this same recipe."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:258
+#: includes/class.cooked-recipe-meta.php:271
msgid "Enter one item per line. Use the checkboxes below to mark section headings."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:261
+#: includes/class.cooked-recipe-meta.php:274
msgid "Preview"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:265
+#: includes/class.cooked-recipe-meta.php:278
msgid "Please review the parsed fields before adding. Automatic parsing may misread amounts—for example, a range written as 2-3 could appear as 23 unless you correct it."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:270
+#: includes/class.cooked-recipe-meta.php:283
msgid "Cancel"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:288
+#: includes/class.cooked-recipe-meta.php:301
msgid "Display Recipe"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:289
+#: includes/class.cooked-recipe-meta.php:302
msgid "This shortcode displays the recipe in its entirety, using the \"Recipe Template\" field in the first tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:301
+#: includes/class.cooked-recipe-meta.php:314
msgid "Recipe Card"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:302
+#: includes/class.cooked-recipe-meta.php:315
msgid "Displays a compact linked recipe card with image, title, author, and excerpt — not the full recipe. Use this to promote this recipe elsewhere on your site."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:310
+#: includes/class.cooked-recipe-meta.php:323
msgid "Choose \"modern\" or \"modern-centered\"."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:317
+#: includes/class.cooked-recipe-meta.php:330
msgid "Set the card width. Defaults to 100%. Use \"%\" or \"px\" after the number."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:327
+#: includes/class.cooked-recipe-meta.php:340
msgid "Hide the recipe excerpt."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:334
+#: includes/class.cooked-recipe-meta.php:347
msgid "Hide the recipe author."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:344
+#: includes/class.cooked-recipe-meta.php:357
msgid "Hide the recipe image."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:351
+#: includes/class.cooked-recipe-meta.php:364
msgid "Hide the recipe title."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:361
-#: includes/class.cooked-recipe-meta.php:1316
-#: includes/class.cooked-recipe-meta.php:1362
-#: includes/class.cooked-recipe-meta.php:1393
-#: includes/class.cooked-recipe-meta.php:1418
-#: includes/class.cooked-recipe-meta.php:1442
-#: includes/class.cooked-recipe-meta.php:1502
-#: includes/class.cooked-recipe-meta.php:1547
-#: includes/class.cooked-recipe-meta.php:1577
-#: includes/class.cooked-recipe-meta.php:1622
-#: includes/class.cooked-recipe-meta.php:1745
+#: includes/class.cooked-recipe-meta.php:374
+#: includes/class.cooked-recipe-meta.php:1329
+#: includes/class.cooked-recipe-meta.php:1375
+#: includes/class.cooked-recipe-meta.php:1406
+#: includes/class.cooked-recipe-meta.php:1431
+#: includes/class.cooked-recipe-meta.php:1455
+#: includes/class.cooked-recipe-meta.php:1515
+#: includes/class.cooked-recipe-meta.php:1560
+#: includes/class.cooked-recipe-meta.php:1590
+#: includes/class.cooked-recipe-meta.php:1635
+#: includes/class.cooked-recipe-meta.php:1758
msgid "Available Variables"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:363
-#: includes/class.cooked-recipe-meta.php:1747
+#: includes/class.cooked-recipe-meta.php:376
+#: includes/class.cooked-recipe-meta.php:1760
msgid "Recipe ID"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:364
+#: includes/class.cooked-recipe-meta.php:377
msgid "Card width"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:365
+#: includes/class.cooked-recipe-meta.php:378
msgid "modern, modern-centered"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:366
-#: includes/class.cooked-recipe-meta.php:367
-#: includes/class.cooked-recipe-meta.php:368
-#: includes/class.cooked-recipe-meta.php:369
-#: includes/class.cooked-recipe-meta.php:1751
-#: includes/class.cooked-recipe-meta.php:1752
-#: includes/class.cooked-recipe-meta.php:1753
-#: includes/class.cooked-recipe-meta.php:1754
+#: includes/class.cooked-recipe-meta.php:379
+#: includes/class.cooked-recipe-meta.php:380
+#: includes/class.cooked-recipe-meta.php:381
+#: includes/class.cooked-recipe-meta.php:382
+#: includes/class.cooked-recipe-meta.php:1764
+#: includes/class.cooked-recipe-meta.php:1765
+#: includes/class.cooked-recipe-meta.php:1766
+#: includes/class.cooked-recipe-meta.php:1767
msgid "true/false"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:371
-#: includes/class.cooked-recipe-meta.php:1756
+#: includes/class.cooked-recipe-meta.php:384
+#: includes/class.cooked-recipe-meta.php:1769
msgid "Example"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:409
+#: includes/class.cooked-recipe-meta.php:422
msgid "Layout"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:433
-#: includes/class.cooked-recipe-meta.php:1459
+#: includes/class.cooked-recipe-meta.php:446
+#: includes/class.cooked-recipe-meta.php:1472
msgid "Gallery"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:439
+#: includes/class.cooked-recipe-meta.php:452
msgid "Shortcodes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:496
+#: includes/class.cooked-recipe-meta.php:509
msgid "Recipe Review Required"
msgstr ""
#. translators: for displaying singular or plural versions depending on the number of recipes.
-#: includes/class.cooked-recipe-meta.php:499
+#: includes/class.cooked-recipe-meta.php:512
#, php-format
msgid "It looks like this recipe is from a different version of %s. Please review and click \"Update\" to save it."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:507
+#: includes/class.cooked-recipe-meta.php:520
msgid "Recipe Shortcode"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:508
+#: includes/class.cooked-recipe-meta.php:521
msgid "You can use the following shortcode to display your recipe anywhere:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Recipe Template"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Default Recipe Template"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Choose from the options below to use this layout as the default for new recipes or for all recipes."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Save as Default"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Apply to All"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Reset"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:522
+#: includes/class.cooked-recipe-meta.php:535
msgid "Using the built-in recipe shortcodes found on the \"Shortcodes\" tab, you can create the layout of your recipe below. Use the \"Save as Default\" button to save your template."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:540
+#: includes/class.cooked-recipe-meta.php:553
msgid "Recipe Excerpt"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:540
+#: includes/class.cooked-recipe-meta.php:553
msgid "The excerpt is used on recipe listing templates, where the full recipe should not be displayed."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:563
+#: includes/class.cooked-recipe-meta.php:576
msgid "SEO Description"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:563
+#: includes/class.cooked-recipe-meta.php:576
msgid "This description is used for SEO purposes and is optional. By default, Cooked will use the Recipe Excerpt above if available or the Recipe Title if not."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:574
-#: includes/class.cooked-settings.php:326
+#: includes/class.cooked-recipe-meta.php:587
+#: includes/class.cooked-settings.php:338
msgid "Difficulty Level"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:583
-#: includes/class.cooked-recipe-meta.php:1321
-#: includes/class.cooked-settings.php:329
-#: includes/class.cooked-shortcodes.php:509
-#: includes/class.cooked-shortcodes.php:732
+#: includes/class.cooked-recipe-meta.php:596
+#: includes/class.cooked-recipe-meta.php:1334
+#: includes/class.cooked-settings.php:341
+#: includes/class.cooked-shortcodes.php:513
+#: includes/class.cooked-shortcodes.php:736
msgid "Prep Time"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:585
-#: includes/class.cooked-recipe-meta.php:590
-#: includes/class.cooked-recipe-meta.php:595
+#: includes/class.cooked-recipe-meta.php:598
+#: includes/class.cooked-recipe-meta.php:603
+#: includes/class.cooked-recipe-meta.php:608
msgid "minutes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:588
-#: includes/class.cooked-recipe-meta.php:1322
-#: includes/class.cooked-settings.php:330
-#: includes/class.cooked-shortcodes.php:510
-#: includes/class.cooked-shortcodes.php:741
+#: includes/class.cooked-recipe-meta.php:601
+#: includes/class.cooked-recipe-meta.php:1335
+#: includes/class.cooked-settings.php:342
+#: includes/class.cooked-shortcodes.php:514
+#: includes/class.cooked-shortcodes.php:745
msgid "Cook Time"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:593
-#: includes/class.cooked-recipe-meta.php:1323
-#: includes/class.cooked-settings.php:331
-#: includes/class.cooked-shortcodes.php:511
-#: includes/class.cooked-shortcodes.php:752
-#: includes/class.cooked-shortcodes.php:759
+#: includes/class.cooked-recipe-meta.php:606
+#: includes/class.cooked-recipe-meta.php:1336
+#: includes/class.cooked-settings.php:343
+#: includes/class.cooked-shortcodes.php:515
+#: includes/class.cooked-shortcodes.php:756
+#: includes/class.cooked-shortcodes.php:763
msgid "Total Time"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:601
+#: includes/class.cooked-recipe-meta.php:614
msgid "Recipe Notes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:601
+#: includes/class.cooked-recipe-meta.php:614
msgid "The notes are displayed in the recipe."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:666
-#: includes/class.cooked-recipe-meta.php:758
-#: includes/class.cooked-recipe-meta.php:825
+#: includes/class.cooked-recipe-meta.php:679
+#: includes/class.cooked-recipe-meta.php:771
+#: includes/class.cooked-recipe-meta.php:838
msgid "ex. Eggs, Milk, etc."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:675
-#: includes/class.cooked-recipe-meta.php:767
-#: includes/class.cooked-recipe-meta.php:834
-msgid "Substitution:"
-msgstr ""
-
#: includes/class.cooked-recipe-meta.php:688
#: includes/class.cooked-recipe-meta.php:780
#: includes/class.cooked-recipe-meta.php:847
+msgid "Substitution:"
+msgstr ""
+
+#: includes/class.cooked-recipe-meta.php:701
+#: includes/class.cooked-recipe-meta.php:793
+#: includes/class.cooked-recipe-meta.php:860
msgid "ex. Apple Sauce, Tofu, etc."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:699
-#: includes/class.cooked-recipe-meta.php:855
-#: includes/class.cooked-recipe-meta.php:939
-#: includes/class.cooked-recipe-meta.php:1050
+#: includes/class.cooked-recipe-meta.php:712
+#: includes/class.cooked-recipe-meta.php:868
+#: includes/class.cooked-recipe-meta.php:952
+#: includes/class.cooked-recipe-meta.php:1063
msgid "Section Heading"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:703
-#: includes/class.cooked-recipe-meta.php:859
-#: includes/class.cooked-recipe-meta.php:943
-#: includes/class.cooked-recipe-meta.php:1054
+#: includes/class.cooked-recipe-meta.php:716
+#: includes/class.cooked-recipe-meta.php:872
+#: includes/class.cooked-recipe-meta.php:956
+#: includes/class.cooked-recipe-meta.php:1067
msgid "Heading Element:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:794
+#: includes/class.cooked-recipe-meta.php:807
msgid "Add Ingredient"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:795
-#: includes/class.cooked-recipe-meta.php:1019
+#: includes/class.cooked-recipe-meta.php:808
+#: includes/class.cooked-recipe-meta.php:1032
msgid "Add Section Heading"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:797
-#: includes/class.cooked-recipe-meta.php:1021
+#: includes/class.cooked-recipe-meta.php:810
+#: includes/class.cooked-recipe-meta.php:1034
msgid "Bulk Add"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1018
+#: includes/class.cooked-recipe-meta.php:1031
msgid "Add Direction"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1085
+#: includes/class.cooked-recipe-meta.php:1098
msgid "Nutrition Information"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1123
-#: includes/class.cooked-shortcodes.php:1123
+#: includes/class.cooked-recipe-meta.php:1136
+#: includes/class.cooked-shortcodes.php:1127
msgid "Nutrition Facts"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1141
-#: includes/class.cooked-shortcodes.php:1091
+#: includes/class.cooked-recipe-meta.php:1154
+#: includes/class.cooked-shortcodes.php:1095
msgid "Amount per serving"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1151
-#: includes/class.cooked-shortcodes.php:1101
+#: includes/class.cooked-recipe-meta.php:1164
+#: includes/class.cooked-shortcodes.php:1105
msgid "% Daily Value *"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1170
-#: includes/class.cooked-shortcodes.php:1033
+#: includes/class.cooked-recipe-meta.php:1183
+#: includes/class.cooked-shortcodes.php:1037
msgid "Includes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1202
-#: includes/class.cooked-shortcodes.php:1127
+#: includes/class.cooked-recipe-meta.php:1215
+#: includes/class.cooked-shortcodes.php:1131
msgid "The % Daily Value (DV) tells you how much a nutrient in a serving of food contributes to a daily diet. 2,000 calories a day is used for general nutrition advice."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1218
+#: includes/class.cooked-recipe-meta.php:1231
msgid "Recipe Gallery Type"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1231
+#: includes/class.cooked-recipe-meta.php:1244
msgid "Choose one..."
msgstr ""
#. translators: a title for the video section of the recipe editor, where users can paste a YouToub or Vimeo URL into the field below.
-#: includes/class.cooked-recipe-meta.php:1245
+#: includes/class.cooked-recipe-meta.php:1258
#, php-format
msgid "%1$s or %2$s Video"
msgstr ""
#. translators: a message describing how to display a video from YouTube or Vimeo.
-#: includes/class.cooked-recipe-meta.php:1249
+#: includes/class.cooked-recipe-meta.php:1262
#, php-format
msgid "If you would like to display a video as the first item in your gallery, you can paste a valid %1$s or %2$s URL below."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1254
+#: includes/class.cooked-recipe-meta.php:1267
msgid "Gallery Items"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1285
+#: includes/class.cooked-recipe-meta.php:1298
msgid "Recipe Information"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1286
+#: includes/class.cooked-recipe-meta.php:1299
msgid "This will display the recipe author, cooking times, etc."
msgstr ""
#. translators: "include and exclude" section title
#. translators: "left and right" section title
-#: includes/class.cooked-recipe-meta.php:1295
-#: includes/class.cooked-recipe-meta.php:1305
+#: includes/class.cooked-recipe-meta.php:1308
+#: includes/class.cooked-recipe-meta.php:1318
#, php-format
msgid "\"%1$s\" and \"%2$s\""
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1297
+#: includes/class.cooked-recipe-meta.php:1310
msgid "This will allow you to include or exclude content from the shortcode output."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1306
+#: includes/class.cooked-recipe-meta.php:1319
msgid "Used like \"include\", but will position the content to the left or right."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1320
-#: includes/class.cooked-settings.php:324
-#: includes/class.cooked-shortcodes.php:506
-#: includes/class.cooked-shortcodes.php:684
+#: includes/class.cooked-recipe-meta.php:1333
+#: includes/class.cooked-settings.php:336
+#: includes/class.cooked-shortcodes.php:510
+#: includes/class.cooked-shortcodes.php:688
msgid "Author"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1324
-#: includes/class.cooked-shortcodes.php:507
-#: includes/class.cooked-shortcodes.php:695
+#: includes/class.cooked-recipe-meta.php:1337
+#: includes/class.cooked-shortcodes.php:511
+#: includes/class.cooked-shortcodes.php:699
msgid "Difficulty"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1325
+#: includes/class.cooked-recipe-meta.php:1338
msgid "Servings Switcher"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1326
-#: includes/class.cooked-settings.php:325
-#: includes/class.cooked-shortcodes.php:779
-#: includes/class.cooked-shortcodes.php:782
+#: includes/class.cooked-recipe-meta.php:1339
+#: includes/class.cooked-settings.php:337
+#: includes/class.cooked-shortcodes.php:783
+#: includes/class.cooked-shortcodes.php:786
#: includes/class.cooked-taxonomies.php:39
msgid "Category"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1327
+#: includes/class.cooked-recipe-meta.php:1340
msgid "Print Mode"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1328
+#: includes/class.cooked-recipe-meta.php:1341
msgid "Full-Screen Mode"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1348
+#: includes/class.cooked-recipe-meta.php:1361
msgid "This will display the list of ingredients, added via the \"Ingredients\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1354
+#: includes/class.cooked-recipe-meta.php:1367
msgid "This will allow you to hide or show the checkboxes:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1364
+#: includes/class.cooked-recipe-meta.php:1377
msgid "Show checkboxes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1365
+#: includes/class.cooked-recipe-meta.php:1378
msgid "Hide checkboxes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1379
+#: includes/class.cooked-recipe-meta.php:1392
msgid "This will display the list of directions, added via the \"Directions\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1385
+#: includes/class.cooked-recipe-meta.php:1398
msgid "This will allow you to hide or show the numbers:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1395
+#: includes/class.cooked-recipe-meta.php:1408
msgid "Show numbers"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1396
+#: includes/class.cooked-recipe-meta.php:1409
msgid "Hide numbers"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1409
+#: includes/class.cooked-recipe-meta.php:1422
msgid "Featured Image"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1410
+#: includes/class.cooked-recipe-meta.php:1423
msgid "This will display the featured image, if one is set."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1420
-#: includes/class.cooked-recipe-meta.php:1444
-#: includes/class.cooked-recipe-meta.php:1549
+#: includes/class.cooked-recipe-meta.php:1433
+#: includes/class.cooked-recipe-meta.php:1457
+#: includes/class.cooked-recipe-meta.php:1562
msgid "None"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1433
+#: includes/class.cooked-recipe-meta.php:1446
msgid "Nutrition Label"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1434
+#: includes/class.cooked-recipe-meta.php:1447
msgid "This will display the Nutrition Facts label, if data is present."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1460
+#: includes/class.cooked-recipe-meta.php:1473
msgid "This will display the gallery, if one is set or created from the \"Gallery\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1468
+#: includes/class.cooked-recipe-meta.php:1481
msgid "Set the width of the gallery."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1475
+#: includes/class.cooked-recipe-meta.php:1488
msgid "Set the image size ratio."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1485
+#: includes/class.cooked-recipe-meta.php:1498
msgid "Set the navigation style."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1492
+#: includes/class.cooked-recipe-meta.php:1505
msgid "Enable or disable \"Full-Screen\" mode."
msgstr ""
#. translators: related to the width of slideshows: "80% or 300px" section title
-#: includes/class.cooked-recipe-meta.php:1507
+#: includes/class.cooked-recipe-meta.php:1520
#, php-format
msgid "ex: \"%1$s\" or \"%2$s\""
msgstr ""
#. translators: related to the image ratio for slideshows: "ex: 800/600" section title
-#: includes/class.cooked-recipe-meta.php:1512
+#: includes/class.cooked-recipe-meta.php:1525
#, php-format
msgid "ex: \"%s\""
msgstr ""
#. translators: related to the navigation style for slideshows: "dots, thumbs or false" section title
-#: includes/class.cooked-recipe-meta.php:1517
+#: includes/class.cooked-recipe-meta.php:1530
#, php-format
msgid "\"%1$s\", \"%2$s\", or \"%3$s\""
msgstr ""
#. translators: related to allowing full screen for slideshows: "true or false" section title
-#: includes/class.cooked-recipe-meta.php:1522
+#: includes/class.cooked-recipe-meta.php:1535
#, php-format
msgid "\"%1$s\" or \"%2$s\""
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1539
+#: includes/class.cooked-recipe-meta.php:1552
msgid "This will display the excerpt, if one is available from the \"Layout & Content\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1563
+#: includes/class.cooked-recipe-meta.php:1576
msgid "This will display the notes, if one is available from the \"Layout & Content\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1569
+#: includes/class.cooked-recipe-meta.php:1582
msgid "This will allow you to hide or show the header for the notes section:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1579
+#: includes/class.cooked-recipe-meta.php:1592
msgid "Show header"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1580
+#: includes/class.cooked-recipe-meta.php:1593
msgid "Hide header"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1594
+#: includes/class.cooked-recipe-meta.php:1607
msgid "This will display a special link to start a cooking timer."
msgstr ""
#. translators: "seconds, minutes and hours" section title
-#: includes/class.cooked-recipe-meta.php:1603
+#: includes/class.cooked-recipe-meta.php:1616
#, php-format
msgid "\"%1$s\", \"%2$s\" and \"%3$s\""
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1605
+#: includes/class.cooked-recipe-meta.php:1618
msgid "Use just one or a combination of all three to set the timer length"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1612
+#: includes/class.cooked-recipe-meta.php:1625
msgid "Add a short description for this timer, if applicable."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1624
+#: includes/class.cooked-recipe-meta.php:1637
msgid "Time in seconds"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1625
+#: includes/class.cooked-recipe-meta.php:1638
msgid "Time in minutes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1626
+#: includes/class.cooked-recipe-meta.php:1639
msgid "Time in hours"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1627
+#: includes/class.cooked-recipe-meta.php:1640
msgid "Timer Description"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1640
+#: includes/class.cooked-recipe-meta.php:1653
msgid "Next & Previous Recipe Navigation"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1641
+#: includes/class.cooked-recipe-meta.php:1654
msgid "This will display navigation links to the next and previous recipes."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1645
+#: includes/class.cooked-recipe-meta.php:1658
msgid "This shortcode automatically displays the previous and next recipe links based on the current recipe page. No parameters are required."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1650
+#: includes/class.cooked-recipe-meta.php:1663
msgid "Usage"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1652
+#: includes/class.cooked-recipe-meta.php:1665
msgid "Simply add the shortcode to your recipe template or content area. The navigation will automatically show the previous and next recipes based on recipe ID order."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1665
+#: includes/class.cooked-recipe-meta.php:1678
#: includes/class.cooked-related-recipes.php:34
msgid "Related Recipes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1666
+#: includes/class.cooked-recipe-meta.php:1679
msgid "Displays a grid of related recipes based on shared terms in any of the recipe taxonomies (categories, cuisines, cooking methods, tags, diets), shown in random order. No cache or pre-calculation."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1674
+#: includes/class.cooked-recipe-meta.php:1687
msgid "Specify a recipe ID. If not provided, uses the current recipe."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1681
+#: includes/class.cooked-recipe-meta.php:1694
msgid "Set the heading text for the related recipes section."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1691
+#: includes/class.cooked-recipe-meta.php:1704
msgid "Number of recipes to display (default: 4)."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1698
+#: includes/class.cooked-recipe-meta.php:1711
msgid "Number of columns in the grid (default: 2)."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1708
+#: includes/class.cooked-recipe-meta.php:1721
msgid "Hide recipe card images."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1715
+#: includes/class.cooked-recipe-meta.php:1728
msgid "Hide recipe card excerpts."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1725
+#: includes/class.cooked-recipe-meta.php:1738
msgid "Hide recipe card authors."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1732
+#: includes/class.cooked-recipe-meta.php:1745
msgid "Toggle which taxonomies are used: match_categories, match_cuisines, match_cooking_methods, match_tags, match_diets (default: true)."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1739
+#: includes/class.cooked-recipe-meta.php:1752
msgid "Matching options:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1740
+#: includes/class.cooked-recipe-meta.php:1753
msgid "Set to false to exclude a taxonomy from related recipes, e.g. match_cuisines=\"false\" to ignore cuisines."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1749
+#: includes/class.cooked-recipe-meta.php:1762
msgid "Number of recipes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1750
+#: includes/class.cooked-recipe-meta.php:1763
msgid "Grid columns"
msgstr ""
#. translators: stating the recipe author with a "By" in front of it. (ex: "By John Smith")
#. translators: referring to the author (ex: By John Smith)
-#: includes/class.cooked-recipes.php:298
-#: includes/class.cooked-recipes.php:352
+#: includes/class.cooked-recipes.php:300
+#: includes/class.cooked-recipes.php:354
#: templates/front/recipe-single.php:47
#, php-format
msgid "By %s"
msgstr ""
#. translators: For showing "All" of a taxonomy (ex: "All Burgers")
-#: includes/class.cooked-recipes.php:445
+#: includes/class.cooked-recipes.php:449
#, php-format
msgid "All %s"
msgstr ""
-#: includes/class.cooked-recipes.php:829
+#: includes/class.cooked-recipes.php:833
msgid "Beginner"
msgstr ""
-#: includes/class.cooked-recipes.php:830
+#: includes/class.cooked-recipes.php:834
msgid "Intermediate"
msgstr ""
-#: includes/class.cooked-recipes.php:831
+#: includes/class.cooked-recipes.php:835
msgid "Advanced"
msgstr ""
-#: includes/class.cooked-recipes.php:857
+#: includes/class.cooked-recipes.php:861
msgid "Cooked Gallery"
msgstr ""
-#: includes/class.cooked-recipes.php:861
+#: includes/class.cooked-recipes.php:865
msgid "Envira Gallery"
msgstr ""
-#: includes/class.cooked-recipes.php:865
+#: includes/class.cooked-recipes.php:869
msgid "Soliloquy Slider"
msgstr ""
-#: includes/class.cooked-recipes.php:869
+#: includes/class.cooked-recipes.php:873
msgid "Slider Revolution"
msgstr ""
-#: includes/class.cooked-recipes.php:935
-#: includes/class.cooked-recipes.php:945
+#: includes/class.cooked-recipes.php:939
+#: includes/class.cooked-recipes.php:949
msgid "Default"
msgstr ""
-#: includes/class.cooked-recipes.php:936
-#: includes/class.cooked-recipes.php:946
+#: includes/class.cooked-recipes.php:940
+#: includes/class.cooked-recipes.php:950
msgid "Metric"
msgstr ""
-#: includes/class.cooked-recipes.php:937
-#: includes/class.cooked-recipes.php:947
+#: includes/class.cooked-recipes.php:941
+#: includes/class.cooked-recipes.php:951
msgid "Imperial"
msgstr ""
-#: includes/class.cooked-recipes.php:941
+#: includes/class.cooked-recipes.php:945
msgid "Units"
msgstr ""
-#: includes/class.cooked-recipes.php:943
+#: includes/class.cooked-recipes.php:947
msgid "Measurement System"
msgstr ""
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:970
+#: includes/class.cooked-recipes.php:975
#, php-format
msgid "Quarter (%s Serving)"
msgid_plural "Quarter (%s Servings)"
@@ -2084,7 +2103,7 @@ msgstr[0] ""
msgstr[1] ""
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:973
+#: includes/class.cooked-recipes.php:978
#, php-format
msgid "Half (%s Serving)"
msgid_plural "Half (%s Servings)"
@@ -2092,7 +2111,7 @@ msgstr[0] ""
msgstr[1] ""
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:976
+#: includes/class.cooked-recipes.php:981
#, php-format
msgid "Default (%s Serving)"
msgid_plural "Default (%s Servings)"
@@ -2100,86 +2119,87 @@ msgstr[0] ""
msgstr[1] ""
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:979
+#: includes/class.cooked-recipes.php:984
#, php-format
msgid "Double (%s Servings)"
msgstr ""
#. translators: singular and plural quarter "serving" size
-#: includes/class.cooked-recipes.php:982
+#: includes/class.cooked-recipes.php:987
#, php-format
msgid "Triple (%s Servings)"
msgstr ""
-#: includes/class.cooked-recipes.php:996
-#: includes/class.cooked-shortcodes.php:508
+#: includes/class.cooked-recipes.php:1001
+#: includes/class.cooked-shortcodes.php:512
msgid "Yields"
msgstr ""
#. translators: singular and plural "serving" sizes
-#: includes/class.cooked-recipes.php:1000
-#: includes/class.cooked-recipes.php:1011
+#: includes/class.cooked-recipes.php:1005
+#: includes/class.cooked-recipes.php:1016
#, php-format
msgid "%s Serving"
msgid_plural "%s Servings"
msgstr[0] ""
msgstr[1] ""
-#: includes/class.cooked-recipes.php:1143
-#: includes/class.cooked-recipes.php:1157
+#: includes/class.cooked-recipes.php:1148
+#: includes/class.cooked-recipes.php:1162
msgid "or"
msgstr ""
#. translators: singular and plural "steps"
-#: includes/class.cooked-recipes.php:1202
-#: includes/class.cooked-seo.php:83
+#. translators: %d: step number
+#: includes/class.cooked-recipes.php:1207
+#: includes/class.cooked-seo.php:84
#, php-format
msgid "Step %d"
msgstr ""
-#: includes/class.cooked-recipes.php:1262
+#: includes/class.cooked-recipes.php:1267
msgid "Browse"
msgstr ""
-#: includes/class.cooked-recipes.php:1280
-#: includes/class.cooked-settings.php:251
+#: includes/class.cooked-recipes.php:1285
+#: includes/class.cooked-settings.php:263
msgid "No categories"
msgstr ""
-#: includes/class.cooked-recipes.php:1283
-#: includes/class.cooked-settings.php:300
+#: includes/class.cooked-recipes.php:1288
+#: includes/class.cooked-settings.php:312
#: includes/class.cooked-taxonomies.php:38
#: includes/class.cooked-taxonomies.php:48
msgid "Categories"
msgstr ""
-#: includes/class.cooked-recipes.php:1285
+#: includes/class.cooked-recipes.php:1290
#: includes/class.cooked-taxonomies.php:41
#: includes/widgets/recipe-categories.php:63
msgid "All Categories"
msgstr ""
-#: includes/class.cooked-recipes.php:1356
+#: includes/class.cooked-recipes.php:1361
msgid "Find a recipe..."
msgstr ""
-#: includes/class.cooked-recipes.php:1358
+#: includes/class.cooked-recipes.php:1363
msgid "Search"
msgstr ""
-#: includes/class.cooked-recipes.php:1371
+#: includes/class.cooked-recipes.php:1376
msgid "Newest first"
msgstr ""
-#: includes/class.cooked-recipes.php:1375
+#: includes/class.cooked-recipes.php:1380
msgid "Oldest first"
msgstr ""
-#: includes/class.cooked-recipes.php:1379
+#: includes/class.cooked-recipes.php:1384
msgid "Alphabetical (A-Z)"
msgstr ""
-#: includes/class.cooked-recipes.php:1383
+#: includes/class.cooked-recipes.php:1388
msgid "Alphabetical (Z-A)"
msgstr ""
@@ -2187,463 +2207,467 @@ msgstr ""
msgid "Recipe Editor"
msgstr ""
-#: includes/class.cooked-settings.php:110
+#: includes/class.cooked-settings.php:119
msgid "Cooked settings has been updated!"
msgstr ""
-#: includes/class.cooked-settings.php:129
+#: includes/class.cooked-settings.php:140
msgid "Cooked Plugin Setup"
msgstr ""
-#: includes/class.cooked-settings.php:130
+#. translators: %s: Browse/Search Recipes Page link
+#: includes/class.cooked-settings.php:142
#, php-format
msgid "To display your recipes properly, please set up your %s."
msgstr ""
-#: includes/class.cooked-settings.php:131
-#: includes/class.cooked-settings.php:277
+#: includes/class.cooked-settings.php:143
+#: includes/class.cooked-settings.php:289
msgid "Browse/Search Recipes Page"
msgstr ""
-#: includes/class.cooked-settings.php:250
+#: includes/class.cooked-settings.php:262
msgid "Choose a page..."
msgstr ""
-#: includes/class.cooked-settings.php:250
+#: includes/class.cooked-settings.php:262
msgid "No pages"
msgstr ""
-#: includes/class.cooked-settings.php:251
+#: includes/class.cooked-settings.php:263
msgid "No default"
msgstr ""
-#: includes/class.cooked-settings.php:273
+#: includes/class.cooked-settings.php:285
msgid "General"
msgstr ""
#. translators: a description on how to add the [cooked-browse] shortcode to a page
-#: includes/class.cooked-settings.php:279
+#: includes/class.cooked-settings.php:291
#, php-format
msgid "Create a page with the %s shortcode on it, then choose it from this dropdown."
msgstr ""
#. translators: a description on how to add the [cooked-browse] shortcode to a page
-#: includes/class.cooked-settings.php:279
+#: includes/class.cooked-settings.php:291
msgid "Note: This setting is required for the plugin to function properly."
msgstr ""
-#: includes/class.cooked-settings.php:285
+#: includes/class.cooked-settings.php:297
msgid "Recipes Per Page"
msgstr ""
#. translators: a description on how to choose the default number of recipes per page.
-#: includes/class.cooked-settings.php:287
+#: includes/class.cooked-settings.php:299
#, php-format
msgid "Choose the default (set via the %s panel) or choose a different number here."
msgstr ""
#. translators: a description on how to choose the default number of recipes per page.
-#: includes/class.cooked-settings.php:287
+#: includes/class.cooked-settings.php:299
msgid "Settings > Reading"
msgstr ""
-#: includes/class.cooked-settings.php:293
+#: includes/class.cooked-settings.php:305
msgid "Recipe Taxonomies"
msgstr ""
-#: includes/class.cooked-settings.php:294
+#: includes/class.cooked-settings.php:306
msgid "Choose which taxonomies you want to enable for your recipes."
msgstr ""
-#: includes/class.cooked-settings.php:305
+#: includes/class.cooked-settings.php:317
msgid "Global Recipe Toggles"
msgstr ""
-#: includes/class.cooked-settings.php:306
+#: includes/class.cooked-settings.php:318
msgid "You can quickly hide or show different recipe elements (site-wide) with these checkboxes."
msgstr ""
-#: includes/class.cooked-settings.php:337
+#: includes/class.cooked-settings.php:349
msgid "Print View"
msgstr ""
-#: includes/class.cooked-settings.php:338
+#: includes/class.cooked-settings.php:350
msgid "When enabled, the website logo will appear at the top of the recipe print screen."
msgstr ""
-#: includes/class.cooked-settings.php:344
+#: includes/class.cooked-settings.php:356
msgid "Show Website Logo"
msgstr ""
-#: includes/class.cooked-settings.php:349
+#: includes/class.cooked-settings.php:361
msgid "Carbs Format"
msgstr ""
-#: includes/class.cooked-settings.php:350
+#: includes/class.cooked-settings.php:362
msgid "You can display carbs as \"Total\" or \"Net\"."
msgstr ""
-#: includes/class.cooked-settings.php:356
+#: includes/class.cooked-settings.php:368
msgid "Total Carbs"
msgstr ""
-#: includes/class.cooked-settings.php:357
+#: includes/class.cooked-settings.php:369
msgid "Net Carbs"
msgstr ""
-#: includes/class.cooked-settings.php:362
+#: includes/class.cooked-settings.php:374
msgid "Author Name Format"
msgstr ""
-#: includes/class.cooked-settings.php:363
+#: includes/class.cooked-settings.php:375
msgid "You can show the full author's name or just a part of it."
msgstr ""
-#: includes/class.cooked-settings.php:369
+#: includes/class.cooked-settings.php:381
msgid "Full name"
msgstr ""
-#: includes/class.cooked-settings.php:370
+#: includes/class.cooked-settings.php:382
msgid "Full first name w/last name initial"
msgstr ""
-#: includes/class.cooked-settings.php:371
+#: includes/class.cooked-settings.php:383
msgid "First name initial w/full last name"
msgstr ""
-#: includes/class.cooked-settings.php:372
+#: includes/class.cooked-settings.php:384
msgid "First name only"
msgstr ""
-#: includes/class.cooked-settings.php:377
+#: includes/class.cooked-settings.php:389
msgid "Author Links"
msgstr ""
-#: includes/class.cooked-settings.php:378
+#: includes/class.cooked-settings.php:390
msgid "If you do not want the author names to link to the author recipe listings, you can disable them here."
msgstr ""
-#: includes/class.cooked-settings.php:378
+#: includes/class.cooked-settings.php:390
msgid "Note: Author links require the Browse/Search Recipes Page to be set up correctly to function properly."
msgstr ""
-#: includes/class.cooked-settings.php:385
+#: includes/class.cooked-settings.php:397
msgid "Disable Author Links"
msgstr ""
-#: includes/class.cooked-settings.php:390
+#: includes/class.cooked-settings.php:402
msgid "Default Category"
msgstr ""
#. translators: a description on how to set the default recipe category for the [cooked-browse] shortcode.
-#: includes/class.cooked-settings.php:392
+#: includes/class.cooked-settings.php:404
#, php-format
msgid "Optionally set the default recipe category for your %s shortcode display."
msgstr ""
-#: includes/class.cooked-settings.php:398
+#: includes/class.cooked-settings.php:410
msgid "Default Sort Order"
msgstr ""
#. translators: a description on how to set the default sort order for the [cooked-browse] shortcode.
-#: includes/class.cooked-settings.php:400
+#: includes/class.cooked-settings.php:412
#, php-format
msgid "Set the default sort order for your %s shortcode display."
msgstr ""
-#: includes/class.cooked-settings.php:406
+#: includes/class.cooked-settings.php:418
msgid "Newest First"
msgstr ""
-#: includes/class.cooked-settings.php:407
+#: includes/class.cooked-settings.php:419
msgid "Oldest First"
msgstr ""
-#: includes/class.cooked-settings.php:408
+#: includes/class.cooked-settings.php:420
msgid "Alphabetical"
msgstr ""
-#: includes/class.cooked-settings.php:409
+#: includes/class.cooked-settings.php:421
msgid "Alphabetical (reversed)"
msgstr ""
-#: includes/class.cooked-settings.php:414
+#: includes/class.cooked-settings.php:426
msgid "Section Heading Default HTML Tag"
msgstr ""
#. translators: a description on how to set the default sort order for the [cooked-browse] shortcode.
-#: includes/class.cooked-settings.php:416
+#: includes/class.cooked-settings.php:428
msgid "Set the default HTML tag for your section headings."
msgstr ""
-#: includes/class.cooked-settings.php:422
+#: includes/class.cooked-settings.php:434
msgid "div"
msgstr ""
-#: includes/class.cooked-settings.php:423
+#: includes/class.cooked-settings.php:435
msgid "h2"
msgstr ""
-#: includes/class.cooked-settings.php:424
+#: includes/class.cooked-settings.php:436
msgid "h3"
msgstr ""
-#: includes/class.cooked-settings.php:425
+#: includes/class.cooked-settings.php:437
msgid "h4"
msgstr ""
-#: includes/class.cooked-settings.php:426
+#: includes/class.cooked-settings.php:438
msgid "h5"
msgstr ""
-#: includes/class.cooked-settings.php:427
+#: includes/class.cooked-settings.php:439
msgid "h6"
msgstr ""
-#: includes/class.cooked-settings.php:432
+#: includes/class.cooked-settings.php:444
msgid "WP Editor Roles"
msgstr ""
-#: includes/class.cooked-settings.php:433
+#: includes/class.cooked-settings.php:445
msgid "Choose which user roles can use the WP Editor for the Excerpt, Directions & Notes fields."
msgstr ""
-#: includes/class.cooked-settings.php:439
+#: includes/class.cooked-settings.php:451
msgid "Advanced Settings"
msgstr ""
#. translators: an option to only show recipes with the [cooked-recipe] shortcode.
-#: includes/class.cooked-settings.php:449
+#: includes/class.cooked-settings.php:461
msgid "Disable Public Recipes"
msgstr ""
#. translators: an option to only show recipes with the [cooked-recipe] shortcode.
-#: includes/class.cooked-settings.php:449
+#: includes/class.cooked-settings.php:461
#, php-format
msgid "Only show recipes using the %s shortcode."
msgstr ""
#. translators: an option to disable "meta" tags.
-#: includes/class.cooked-settings.php:451
+#: includes/class.cooked-settings.php:463
#, php-format
msgid "Disable %s Tags"
msgstr ""
#. translators: an option to disable "meta" tags.
-#: includes/class.cooked-settings.php:451
+#: includes/class.cooked-settings.php:463
msgid "Prevents duplicates when tags already exist."
msgstr ""
-#: includes/class.cooked-settings.php:452
+#: includes/class.cooked-settings.php:464
msgid "Disable \"Servings Switcher\""
msgstr ""
-#: includes/class.cooked-settings.php:452
+#: includes/class.cooked-settings.php:464
msgid "Removes the servings dropdown on recipes."
msgstr ""
-#: includes/class.cooked-settings.php:453
+#: includes/class.cooked-settings.php:465
msgid "Enable \"Measurement System Switcher\""
msgstr ""
-#: includes/class.cooked-settings.php:453
+#: includes/class.cooked-settings.php:465
msgid "Shows the Metric/Imperial toggle on recipes."
msgstr ""
-#: includes/class.cooked-settings.php:454
+#: includes/class.cooked-settings.php:466
msgid "Disable Recipe Schema Output"
msgstr ""
-#: includes/class.cooked-settings.php:454
+#: includes/class.cooked-settings.php:466
msgid "You should only do this if you're using something else to output schema information."
msgstr ""
-#: includes/class.cooked-settings.php:455
+#: includes/class.cooked-settings.php:467
msgid "Disable Recipe Archive Page"
msgstr ""
#. translators: %s: recipe archive URL, e.g. https://example.com/recipe-archive
-#: includes/class.cooked-settings.php:457
+#: includes/class.cooked-settings.php:469
#, php-format
msgid "Prevents the recipe archive from being displayed at %s."
msgstr ""
-#: includes/class.cooked-settings.php:466
+#: includes/class.cooked-settings.php:478
msgid "Design"
msgstr ""
-#: includes/class.cooked-settings.php:470
+#: includes/class.cooked-settings.php:482
msgid "Dark Mode"
msgstr ""
-#: includes/class.cooked-settings.php:473
+#: includes/class.cooked-settings.php:485
msgid "Use Auto if your theme has a visitor dark mode toggle. Cooked will then match that choice. Otherwise leave this Off."
msgstr ""
-#: includes/class.cooked-settings.php:480
+#: includes/class.cooked-settings.php:492
msgid "Off"
msgstr ""
-#: includes/class.cooked-settings.php:481
+#: includes/class.cooked-settings.php:493
msgid "On"
msgstr ""
-#: includes/class.cooked-settings.php:482
+#: includes/class.cooked-settings.php:494
msgid "Auto (match theme dark mode)"
msgstr ""
-#: includes/class.cooked-settings.php:487
+#: includes/class.cooked-settings.php:499
msgid "Author Images"
msgstr ""
-#: includes/class.cooked-settings.php:488
+#: includes/class.cooked-settings.php:500
msgid "If you do not want to display the author images (avatars), you can disable them here."
msgstr ""
-#: includes/class.cooked-settings.php:495
+#: includes/class.cooked-settings.php:507
msgid "Hide Author Images"
msgstr ""
-#: includes/class.cooked-settings.php:500
+#: includes/class.cooked-settings.php:512
msgid "Default Recipe Image"
msgstr ""
-#: includes/class.cooked-settings.php:501
+#: includes/class.cooked-settings.php:513
msgid "Used as the featured image for recipes that do not have one set."
msgstr ""
-#: includes/class.cooked-settings.php:506
+#: includes/class.cooked-settings.php:518
msgid "Main Color"
msgstr ""
-#: includes/class.cooked-settings.php:507
+#: includes/class.cooked-settings.php:519
msgid "Used on buttons, cooking timer, etc."
msgstr ""
-#: includes/class.cooked-settings.php:513
+#: includes/class.cooked-settings.php:525
msgid "Main Color (on hover)"
msgstr ""
-#: includes/class.cooked-settings.php:514
+#: includes/class.cooked-settings.php:526
msgid "Used when hovering over buttons."
msgstr ""
-#: includes/class.cooked-settings.php:520
+#: includes/class.cooked-settings.php:532
msgid "First Responsive Breakpoint"
msgstr ""
-#: includes/class.cooked-settings.php:521
+#: includes/class.cooked-settings.php:533
msgid "Set the first responsive breakpoint. Best for large tablets."
msgstr ""
-#: includes/class.cooked-settings.php:527
+#: includes/class.cooked-settings.php:539
msgid "Second Responsive Breakpoint"
msgstr ""
-#: includes/class.cooked-settings.php:528
+#: includes/class.cooked-settings.php:540
msgid "Set the second responsive breakpoint. Best for small tablets."
msgstr ""
-#: includes/class.cooked-settings.php:534
+#: includes/class.cooked-settings.php:546
msgid "Third Responsive Breakpoint"
msgstr ""
-#: includes/class.cooked-settings.php:535
+#: includes/class.cooked-settings.php:547
msgid "Set the third responsive breakpoint. Best for phones and other small devices."
msgstr ""
-#: includes/class.cooked-settings.php:543
+#: includes/class.cooked-settings.php:555
msgid "Permalinks"
msgstr ""
-#: includes/class.cooked-settings.php:547
+#: includes/class.cooked-settings.php:559
msgid "Recipe Permalink"
msgstr ""
-#: includes/class.cooked-settings.php:550
+#: includes/class.cooked-settings.php:562
msgid "recipe-name"
msgstr ""
-#: includes/class.cooked-settings.php:554
+#: includes/class.cooked-settings.php:566
msgid "Recipe Author Permalink"
msgstr ""
-#: includes/class.cooked-settings.php:557
+#: includes/class.cooked-settings.php:569
msgid "author-name"
msgstr ""
-#: includes/class.cooked-settings.php:561
+#: includes/class.cooked-settings.php:573
msgid "Recipe Category Permalink"
msgstr ""
-#: includes/class.cooked-settings.php:564
+#: includes/class.cooked-settings.php:576
msgid "recipe-category-name"
msgstr ""
#. translators: posts_per_page default
-#: includes/class.cooked-settings.php:575
+#: includes/class.cooked-settings.php:587
#, php-format
msgid "WordPress Default %s"
msgstr ""
-#: includes/class.cooked-settings.php:580
+#: includes/class.cooked-settings.php:592
msgid "Show All (no pagination)"
msgstr ""
-#: includes/class.cooked-settings.php:724
+#: includes/class.cooked-settings.php:736
msgid "Begin Migration"
msgstr ""
#. translators: referring to the bottom of the Settings page.
-#: includes/class.cooked-shortcodes.php:167
+#: includes/class.cooked-shortcodes.php:168
#, php-format
msgid "Public recipes are currently disabled. You can change this at the bottom of the %s page."
msgstr ""
-#: includes/class.cooked-shortcodes.php:328
+#: includes/class.cooked-shortcodes.php:331
msgid "(recipe not found or in draft status)"
msgstr ""
-#: includes/class.cooked-shortcodes.php:359
+#. translators: %s: recipe embed shortcode
+#: includes/class.cooked-shortcodes.php:363
#, php-format
msgid "This recipe could not be displayed because it is set up to include itself (containing shortcode %s). Remove the duplicate recipe embed from the Recipe Template."
msgstr ""
-#: includes/class.cooked-shortcodes.php:723
+#: includes/class.cooked-shortcodes.php:727
msgid "Fullscreen"
msgstr ""
-#: includes/class.cooked-shortcodes.php:1175
+#: includes/class.cooked-shortcodes.php:1179
msgid "Invalid recipe ID specified. Please provide a valid numeric recipe ID."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1185
+#: includes/class.cooked-shortcodes.php:1189
msgid "No recipe found. Please specify a recipe ID using the id attribute, or use this shortcode on a recipe page."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1192
+#: includes/class.cooked-shortcodes.php:1196
msgid "Recipe not found."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1196
+#. translators: %d: post ID
+#: includes/class.cooked-shortcodes.php:1201
#, php-format
msgid "The specified ID (%d) is not a recipe."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1198
+#. translators: %d: post ID
+#: includes/class.cooked-shortcodes.php:1204
#, php-format
msgid "No post found with ID %d."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1207
+#: includes/class.cooked-shortcodes.php:1213
msgid "No related recipes found."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1210
+#: includes/class.cooked-shortcodes.php:1216
msgid "This may be because there are no other recipes in the current language with matching attributes."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1212
+#: includes/class.cooked-shortcodes.php:1218
msgid "Try adjusting the matching criteria or ensure you have other published recipes with shared categories, tags, or ingredients."
msgstr ""
@@ -2688,48 +2712,50 @@ msgid_plural "%s Recipes"
msgstr[0] ""
msgstr[1] ""
-#: includes/class.cooked-updates.php:150
+#: includes/class.cooked-updates.php:167
msgid "Flush rewrite rules"
msgstr ""
-#: includes/class.cooked-updates.php:151
+#: includes/class.cooked-updates.php:168
msgid "Refreshes permalink rules for recipe and profile URLs."
msgstr ""
-#: includes/class.cooked-updates.php:154
+#: includes/class.cooked-updates.php:171
msgid "Fix recipe line endings"
msgstr ""
-#: includes/class.cooked-updates.php:155
+#: includes/class.cooked-updates.php:172
msgid "Normalizes line endings in recipe content for exporter/importer compatibility."
msgstr ""
-#: includes/class.cooked-updates.php:158
+#: includes/class.cooked-updates.php:175
msgid "Purge legacy related recipes cache"
msgstr ""
-#: includes/class.cooked-updates.php:159
+#: includes/class.cooked-updates.php:176
msgid "Removes old transients and options from the previous related-recipes cache."
msgstr ""
-#: includes/class.cooked-updates.php:162
+#: includes/class.cooked-updates.php:179
msgid "Remove recipes from user meta"
msgstr ""
-#: includes/class.cooked-updates.php:163
+#: includes/class.cooked-updates.php:180
msgid "Removes the legacy \"recipes\" key from all users' cooked_user_meta."
msgstr ""
-#: includes/class.cooked-updates.php:196
+#: includes/class.cooked-updates.php:213
msgid "Tool name is required."
msgstr ""
-#: includes/class.cooked-updates.php:207
+#. translators: %s: site health tool name
+#: includes/class.cooked-updates.php:225
#, php-format
msgid "Unknown tool: %s."
msgstr ""
-#: includes/class.cooked-updates.php:210
+#. translators: %s: PHP method name
+#: includes/class.cooked-updates.php:229
#, php-format
msgid "Tool method %s does not exist."
msgstr ""
@@ -2947,6 +2973,7 @@ msgstr ""
msgid "Thanks for using %s!"
msgstr ""
+#. translators: 1: plugin name, 2: Settings link, 3: documentation link, 4: Discord link
#: templates/admin/welcome.php:16
#, php-format
msgid "If this is your first time using %1$s, head over to the %2$s page for some initial configuration. You can also check out the %3$s if you get stuck or contact me on %4$s. If you just recently updated, you can find out what's new below."
diff --git a/package.json b/package.json
index 66f88a2..407b674 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "cooked",
- "version": "1.16.0",
+ "version": "1.16.1",
"description": "Cooked is the absolute best way to create & display recipes with WordPress. SEO optimized (rich snippets), galleries, cooking timers, printable recipes and much more.",
"main": "index.js",
"engines": {
@@ -20,13 +20,20 @@
"destroy:ddev": "ddev delete -O && rm -rf wordpress && rm -rf .ddev",
"init:ddev": "if [ -f wordpress/wp-load.php ]; then echo 'DDEV project is already initialized. Use \"run launch:ddev\" to start it or \"run destroy:ddev\" then \"run init:ddev\" to start fresh.'; exit 0; fi && ddev config --project-type=wordpress --project-name=cooked --php-version=7.4 --docroot=wordpress && printf 'services:\\n web:\\n volumes:\\n - ../:/var/www/html/wordpress/wp-content/plugins/cooked:rw\\n' > .ddev/docker-compose.cooked.yaml && mkdir -p wordpress/wp-content/plugins && ddev start && ddev wp core download && ddev wp core install --url=cooked.ddev.site --title=Cooked --admin_user=admin --admin_password=password --admin_email=admin@example.com && ddev wp plugin activate cooked && echo \"Admin username: admin, Admin password: password\" && echo \"Admin URL: cooked.ddev.site/wp-admin/\"",
"launch:ddev": "ddev launch wp-admin/",
- "i18n:make-pot": "if [ -d .ddev ]; then ddev wp i18n make-pot wordpress/wp-content/plugins/cooked/ wordpress/wp-content/plugins/cooked/languages/cooked.pot; else wp-env run cli wp i18n make-pot wp-content/plugins/cooked/ wp-content/plugins/cooked/languages/cooked.pot; fi",
- "i18n:update-po": "if [ -d .ddev ]; then ddev wp i18n update-po wordpress/wp-content/plugins/cooked/languages/cooked.pot wordpress/wp-content/plugins/cooked/languages/cooked.po; else wp-env run cli wp i18n update-po wp-content/plugins/cooked/languages/cooked.pot wp-content/plugins/cooked/languages/cooked.po; fi",
- "i18n:make-mo": "if [ -d .ddev ]; then ddev wp i18n make-mo wordpress/wp-content/plugins/cooked/languages/cooked.po wordpress/wp-content/plugins/cooked/languages/cooked.mo; else wp-env run cli wp i18n make-mo wp-content/plugins/cooked/languages/cooked.po wp-content/plugins/cooked/languages/cooked.mo; fi",
- "i18n": "bun run i18n:make-pot && bun run i18n:update-po && bun run i18n:make-mo",
+ "i18n:make-pot": "if [ -d .ddev ]; then ddev wp i18n make-pot wordpress/wp-content/plugins/cooked/ wordpress/wp-content/plugins/cooked/languages/cooked.pot; elif [ -d ../../../.ddev ]; then ddev wp i18n make-pot /var/www/html/wp-content/plugins/cooked/ /var/www/html/wp-content/plugins/cooked/languages/cooked.pot; else wp-env run cli wp i18n make-pot wp-content/plugins/cooked/ wp-content/plugins/cooked/languages/cooked.pot; fi",
+ "i18n:update-po": "if [ -d .ddev ]; then ddev wp i18n update-po wordpress/wp-content/plugins/cooked/languages/cooked.pot wordpress/wp-content/plugins/cooked/languages/; elif [ -d ../../../.ddev ]; then ddev wp i18n update-po /var/www/html/wp-content/plugins/cooked/languages/cooked.pot /var/www/html/wp-content/plugins/cooked/languages/; else wp-env run cli wp i18n update-po wp-content/plugins/cooked/languages/cooked.pot wp-content/plugins/cooked/languages/; fi",
+ "i18n:apply-fr": "python3 bin/fix-fr-translations.py",
+ "i18n:make-mo": "if [ -d .ddev ]; then ddev wp i18n make-mo wordpress/wp-content/plugins/cooked/languages/; elif [ -d ../../../.ddev ]; then ddev wp i18n make-mo /var/www/html/wp-content/plugins/cooked/languages/; else wp-env run cli wp i18n make-mo wp-content/plugins/cooked/languages/; fi",
+ "i18n": "bun run i18n:make-pot && bun run i18n:update-po && bun run i18n:apply-fr && bun run i18n:make-mo",
"lint": "./vendor/bin/phpcs --standard=phpcs.xml .",
"lint-fix": "./vendor/bin/phpcbf --standard=phpcs.xml .",
"test:php": "./vendor/bin/phpunit",
+ "test:e2e:install": "bunx playwright install chromium",
+ "test:e2e": "bunx playwright test --config tests/playwright/playwright.config.ts",
+ "test:e2e:a11y": "bunx playwright test --config tests/playwright/playwright.config.ts tests/playwright/tests/accessibility",
+ "test:visual": "backstop test --config=tests/backstop/backstop.config.js",
+ "test:visual:ref": "backstop reference --config=tests/backstop/backstop.config.js",
+ "test:visual:approve": "backstop approve --config=tests/backstop/backstop.config.js",
"icons:embed": "bun scripts/embed-icons-font.js",
"bundle": "bun run gulp build && bun run i18n && composer install --no-dev && bunx bestzip build/cooked.zip cooked.php LICENSE readme.txt wpml-config.xml assets/ includes/ languages/ sample-data/ templates/ vendor/"
},
@@ -54,17 +61,20 @@
},
"homepage": "https://github.com/XjSv/Cooked#readme",
"devDependencies": {
- "@playwright/test": "^1.62.1",
- "@types/node": "^26.2.0",
- "@wordpress/e2e-test-utils-playwright": "^1.52.0",
+ "@axe-core/playwright": "^4.13.0",
+ "@playwright/test": "^1.63.0",
+ "@types/node": "^26.4.1",
+ "@wordpress/e2e-test-utils-playwright": "^1.54.0",
+ "@wordpress/env": "^11.14.0",
+ "backstopjs": "^6.3.25",
+ "bestzip": "^3.0.3",
+ "dotenv": "^17.4.2",
"gulp": "^5.0.1",
"gulp-clean-css": "^4.3.0",
"gulp-rename": "^2.1.0",
"gulp-sass": "^6.0.1",
"gulp-uglify": "^3.0.2",
- "playwright": "^1.62.1",
- "sass": "^1.102.0",
- "@wordpress/env": "^11.12.0",
- "bestzip": "^3.0.2"
+ "playwright": "^1.63.0",
+ "sass": "^1.104.0"
}
}
diff --git a/readme.md b/readme.md
index 545952f..f447c23 100644
--- a/readme.md
+++ b/readme.md
@@ -92,12 +92,18 @@ bun run destroy:ddev # remove env and wordpress/
#### Generating language files
Run with wp-env or DDEV started. The script detects which environment you use.
+
+Add or change French strings in `bin/fix_fr_translations_data.py`, then:
+
``` bash
-bun run i18n # make .pot, update .po, compile .mo
+bun run i18n # make .pot, update all .po files, apply French, compile .mo
bun run i18n:make-pot # generate cooked.pot only
-bun run i18n:update-po # update .po from .pot
-bun run i18n:make-mo # compile .po to .mo
+bun run i18n:update-po # update all .po files in languages/ from the .pot
+bun run i18n:apply-fr # copy French from the data file into cooked-fr_FR.po
+bun run i18n:make-mo # compile all .po files in languages/ to .mo
```
+
+`bun run i18n` prints any French strings still empty after applying the data file (`MISSING:`). Add those msgids to the data file and run `i18n` again.
#### Compiling assets (JS/CSS)
``` bash
bun run build # one-off build
diff --git a/readme.txt b/readme.txt
index 359755a..3e6a70a 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,9 +1,9 @@
=== Cooked - Recipe Management ===
Contributors: xjsv, boxystudio
Tags: recipe, recipes, food, cooking, nutrition
-Requires at least: 5.0.0
-Tested up to: 7.0
-Stable tag: 1.16.0
+Requires at least: 6.8
+Tested up to: 7.1
+Stable tag: 1.16.1
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -81,10 +81,19 @@ Please report security bugs found in the source code of the Cooked plugin throug
== Upgrade Notice ==
-Version 1.16.0 adds video clips to recipe direction steps, Off/On/Auto Dark Mode, a default recipe image option, and other improvements.
+Version 1.16.1 fixes recipe editor bugs, a security issue, and Plugin Check issues.
== Changelog ==
+= 1.16.1 =
+* **FIX:** Fixed the 'Bulk Add' direction functionality when adding a [cooked-timer] or quotes.
+* **TWEAK:** Removed the scroll to top when clicking recipe edit tabs.
+* **FIX:** Fixed an encoding issue with SEO Description field.
+* **FIX:** Fixed a bug with recipe edit tabs on screens under 1440px.
+* **FIX:** Fixed the fullscreen mode not displaying correctly on WYSIWYG fields when in recipe edit.
+* **FIX:** Fixed Contributor+ IDOR/CSRF on recipe migrate and import AJAX reported in Patchstack.
+* **FIX:** Various Plugin Check (PCP) fixes.
+
= 1.16.0 =
* **NEW:** Added video clips to recipe direction steps. Attach a video to any direction step using the WordPress Media Library, with square preview thumbnails in the admin and 16:9 responsive video output on the frontend.
* **TWEAK:** Responsive admin layout improvements.
diff --git a/templates/admin/import.php b/templates/admin/import.php
index acf87a2..b946f21 100644
--- a/templates/admin/import.php
+++ b/templates/admin/import.php
@@ -3,7 +3,7 @@