diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 9b6de3f..b5670f1 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -6,10 +6,15 @@
version: 2
updates:
- - package-ecosystem: composer
+ - package-ecosystem: "composer"
target-branch: develop
- directory: /
+ directory: "/"
schedule:
- interval: weekly
+ interval: "weekly"
allow:
- dependency-type: production
+ - package-ecosystem: "npm"
+ target-branch: develop
+ directory: "/"
+ schedule:
+ interval: "weekly"
diff --git a/assets/admin/css/style.css b/assets/admin/css/style.css
index fdb546e..e8b0938 100644
--- a/assets/admin/css/style.css
+++ b/assets/admin/css/style.css
@@ -711,3 +711,215 @@ body .button.button-cooked-reset:hover { color:#555; }
box-sizing: border-box;
padding-right: 10px;
}
+
+/* Bulk Add Modal */
+.cooked-bulk-add-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: rgba(0, 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, 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-unit,
+.cooked-bulk-add-preview-row-ingredient.cooked-bulk-add-is-heading .cooked-bulk-add-parsed-name { 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: 0.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;
+}
diff --git a/assets/admin/css/style.min.css b/assets/admin/css/style.min.css
index 55b25f5..39da16c 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:40px;right:11px;z-index:100001}#cooked_recipe_settings .hndle,#cooked_recipe_settings button.handlediv{display:none}#cooked_recipe_settings .inside{padding:0;margin:0}#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:41px}#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:191px;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:120px;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:120px}#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}#cooked-directions-builder .cooked-direction-block.cooked-direction-has-number-wide>.cooked-direction-content{padding-left:185px}#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:221px;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-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-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}}#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}
\ 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.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:40px;right:11px;z-index:100001}#cooked_recipe_settings .hndle,#cooked_recipe_settings button.handlediv{display:none}#cooked_recipe_settings .inside{padding:0;margin:0}#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:41px}#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:191px;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:120px;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:120px}#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}#cooked-directions-builder .cooked-direction-block.cooked-direction-has-number-wide>.cooked-direction-content{padding-left:185px}#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:221px;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-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-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}}#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}
\ No newline at end of file
diff --git a/assets/admin/js/cooked-functions.js b/assets/admin/js/cooked-functions.js
index 638fbe1..021d0a5 100644
--- a/assets/admin/js/cooked-functions.js
+++ b/assets/admin/js/cooked-functions.js
@@ -1,6 +1,6 @@
var $_CookedConditionalTimeout = false;
-// Touch event support for sortable drag handles on mobile devices
+/** Maps touch events on sortable drag handles to mouse events so sortable works on touch devices. */
var cookedSortableTouchHandler = function(event) {
var target = event.target;
var types = {
@@ -178,32 +178,29 @@ var cookedSortableTouchHandler = function(event) {
if (confirm_save && !thisButton.hasClass('disabled')) {
thisContainer.find('.button, .button-primary').addClass('disabled');
- var ajax__save_default_new = $.post(
+ $.post(
cooked_admin_functions_js_vars.ajax_url,
{
action: 'cooked_save_default',
'default_content': recipe_editor_content,
nonce: cooked_save_default_nonce
},
- function(result) {
- var ajax__save_default_all = $.post(
+ function() {
+ $.post(
cooked_admin_functions_js_vars.ajax_url,
{
- action: 'cooked_get_recipe_ids',
+ action: 'cooked_get_recipe_count',
nonce: cooked_save_default_bulk_nonce
},
- function(json_recipe_ids) {
+ function(response) {
thisButton.removeClass("button-primary").addClass("button");
- if (json_recipe_ids) {
- var recipe_ids = JSON.parse(json_recipe_ids),
- total_recipes = Object.keys(recipe_ids).length;
-
- if (total_recipes > 0) {
- cooked_set_default_template(json_recipe_ids, total_recipes, recipe_editor_content, cooked_save_default_bulk_nonce, instance);
- }
+ if (response && response.success && response.data.total > 0) {
+ cooked_recipe_update_counter = 0;
+ cooked_set_default_template(0, response.data.total, recipe_editor_content, cooked_save_default_bulk_nonce, instance);
}
- }
+ },
+ 'json'
);
}
);
@@ -666,6 +663,9 @@ var cookedSortableTouchHandler = function(event) {
});
}
+ // Bulk Add Modal
+ cooked_init_bulk_add($);
+
if ( $_CookedRecipeGallery.length ) {
var gallery_images_frame;
@@ -794,56 +794,59 @@ var cookedSortableTouchHandler = function(event) {
})( jQuery );
var cooked_recipe_update_counter = 0;
+var cooked_bulk_per_page = 20;
-function cooked_set_default_template(recipe_ids, total_recipes, content, nonce, instance) {
- var temp_counter = 0,
- total_counter = 0,
- progress_percent = 0;
-
- if (total_recipes > 0) {
- var progress = jQuery('#cooked-template-progress');
- var progress_bar = progress.find('.cooked-progress-bar');
- var progress_text = jQuery('#cooked-template-progress-text');
-
- if (!progress.hasClass('cooked-active')) {
- progress.addClass('cooked-active');
- progress_text.addClass('cooked-active');
- progress_bar.css({ "width" : "0%" });
- instance.reposition();
- }
+/** Applies default recipe content in paginated AJAX batches and updates the progress UI. */
+function cooked_set_default_template(page, total_recipes, content, nonce, instance) {
+ if (total_recipes <= 0) {
+ return;
+ }
+
+ var progress = jQuery('#cooked-template-progress');
+ var progress_bar = progress.find('.cooked-progress-bar');
+ var progress_text = jQuery('#cooked-template-progress-text');
+
+ if (!progress.hasClass('cooked-active')) {
+ progress.addClass('cooked-active');
+ progress_text.addClass('cooked-active');
+ progress_bar.css({ "width" : "0%" });
+ instance.reposition();
+ }
- var ajax__bulk_save_default_template = jQuery.post(
- cooked_admin_functions_js_vars.ajax_url,
- {
- action: 'cooked_save_default_bulk',
- recipe_ids: recipe_ids,
- default_content: content,
- nonce: nonce
- },
- function(new_recipe_ids) {
- if (new_recipe_ids && new_recipe_ids != 'false' && new_recipe_ids != false) {
- var leftover_recipe_ids = JSON.parse(new_recipe_ids),
- leftover_recipes = Object.keys(leftover_recipe_ids).length;
-
- cooked_recipe_update_counter = total_recipes - leftover_recipes;
-
- progress_percent = Math.round((cooked_recipe_update_counter / total_recipes ) * 100);
- progress_bar.css({ "width" : progress_percent + "%" });
- progress_text.text(cooked_recipe_update_counter + " / " + total_recipes);
- cooked_set_default_template(new_recipe_ids, total_recipes, content, nonce, instance);
+ jQuery.post(
+ cooked_admin_functions_js_vars.ajax_url,
+ {
+ action: 'cooked_save_default_bulk',
+ page: page,
+ default_content: content,
+ nonce: nonce
+ },
+ function(response) {
+ if (response && response.success) {
+ cooked_recipe_update_counter = Math.min((page + 1) * cooked_bulk_per_page, total_recipes);
+
+ var progress_percent = Math.round((cooked_recipe_update_counter / total_recipes) * 100);
+ progress_bar.css({ "width" : progress_percent + "%" });
+ progress_text.text(cooked_recipe_update_counter + " / " + total_recipes);
+
+ if (response.data.has_more) {
+ cooked_set_default_template(page + 1, total_recipes, content, nonce, instance);
} else {
jQuery('.cooked-save-default-all').text(cooked_admin_functions_js_vars.i18n_applied);
progress_bar.css({ "width" : "100%" });
+ progress_text.text(total_recipes + " / " + total_recipes);
progress.removeClass('cooked-active');
progress_text.removeClass('cooked-active').text("");
instance.reposition();
}
}
- );
- };
+ },
+ 'json'
+ );
}
+/** Sets the total time field to prep time plus cook time. */
function cooked_updateTotalTimeValue( prepTime, cookTime ) {
var totalTimeInput = jQuery( '#cooked-total-time' ),
totalTime = prepTime + cookTime;
@@ -858,6 +861,7 @@ function cooked_init_gallery_sorting() {
jQuery('#cooked-recipe-image-gallery').sortable();
}
+/** Syncs nutrition tab inputs with the live nutrition label preview (values and daily-value percents). */
function init_nutrition_facts( nutritionTab ) {
nutritionTab.find('input').each(function() {
var thisInput = jQuery(this),
@@ -1108,3 +1112,320 @@ function cooked_init_conditional_field(thisID) {
}, 25);
});
}
+
+/** Wires the bulk-add modal (preview, parse, submit) for ingredients and directions. */
+function cooked_init_bulk_add($) {
+ var $overlay = $('#cooked-bulk-add-overlay');
+ if (!$overlay.length) return;
+
+ var $textarea = $('#cooked-bulk-add-textarea'),
+ $preview = $('#cooked-bulk-add-preview'),
+ $previewList = $('#cooked-bulk-add-preview-list'),
+ $title = $('#cooked-bulk-add-title'),
+ $typeField = $('#cooked-bulk-add-type'),
+ $submitBtn = $overlay.find('.cooked-bulk-add-submit'),
+ $spinner = $overlay.find('.cooked-bulk-add-spinner'),
+ jsVars = cooked_admin_functions_js_vars,
+ parseTimer = null,
+ lastParsedText = '';
+
+ /** Opens the bulk-add overlay for the given type and sets copy/placeholders. */
+ function openModal(type) {
+ $typeField.val(type);
+ $textarea.val('');
+ $previewList.empty();
+ $preview.attr('data-bulk-type', '');
+ $preview.hide();
+ $submitBtn.attr('disabled', 'disabled');
+ $spinner.hide();
+ lastParsedText = '';
+
+ if (type === 'ingredients') {
+ $title.text(jsVars.i18n_bulk_add_ingredients);
+ $textarea.attr('placeholder', jsVars.i18n_bulk_add_placeholder_ingredients);
+ $submitBtn.text(jsVars.i18n_bulk_add_submit_ingredients);
+ } else {
+ $title.text(jsVars.i18n_bulk_add_directions);
+ $textarea.attr('placeholder', jsVars.i18n_bulk_add_placeholder_directions);
+ $submitBtn.text(jsVars.i18n_bulk_add_submit_directions);
+ }
+
+ $overlay.show();
+ $textarea.focus();
+ }
+
+ /** Hides the bulk-add overlay and clears its state. */
+ function closeModal() {
+ $overlay.hide();
+ $textarea.val('');
+ $previewList.empty();
+ $preview.attr('data-bulk-type', '');
+ $preview.hide();
+ lastParsedText = '';
+ if (parseTimer) clearTimeout(parseTimer);
+ }
+
+ /** Strips leading list markers from a single line of bulk text. */
+ function cleanLine(line) {
+ line = line.trim();
+ line = line.replace(/^(\d+\)\s+|\d+\.\s+|[a-z]+\)\s+|[•·\-\*]\s+|[A-Z]+\.\s+|[IVX]+\.\s+)/, '');
+ return line.trim();
+ }
+
+ /** Splits bulk textarea content into non-empty cleaned lines. */
+ function parseTextToLines(text) {
+ var lines = text.split(/[\r\n]+/);
+ var result = [];
+ for (var i = 0; i < lines.length; i++) {
+ var cleaned = cleanLine(lines[i]);
+ if (cleaned) {
+ result.push(cleaned);
+ }
+ }
+ return result;
+ }
+
+ /** Escapes a string for safe insertion into HTML attribute strings. */
+ function escHtml(str) {
+ return $('').text(str).html();
+ }
+
+ /** Renders bulk directions preview rows from parsed lines. */
+ function renderDirectionsPreview(lines) {
+ $previewList.empty();
+ if (!lines.length) {
+ $preview.attr('data-bulk-type', '');
+ $preview.hide();
+ $submitBtn.attr('disabled', 'disabled');
+ return;
+ }
+ $preview.attr('data-bulk-type', 'directions');
+ $preview.show();
+ $submitBtn.removeAttr('disabled');
+
+ for (var i = 0; i < lines.length; i++) {
+ var $row = $('');
+ var $cb = $('');
+ var $text = $('');
+ $row.append($cb).append($text);
+ $previewList.append($row);
+ }
+ }
+
+ /** Renders bulk ingredients preview rows (optionally with server-parsed amount/unit/name). */
+ function renderIngredientsPreview(lines, parsed) {
+ $previewList.empty();
+ if (!lines.length) {
+ $preview.attr('data-bulk-type', '');
+ $preview.hide();
+ $submitBtn.attr('disabled', 'disabled');
+ return;
+ }
+ $preview.attr('data-bulk-type', 'ingredients');
+ $preview.show();
+ $submitBtn.removeAttr('disabled');
+
+ if (!$previewList.find('.cooked-bulk-add-preview-header').length) {
+ $previewList.prepend(
+ ''
+ );
+ }
+
+ for (var i = 0; i < lines.length; i++) {
+ var p = parsed && parsed[i] ? parsed[i] : { amount: '', measurement: '', name: lines[i] };
+ var $row = $('');
+ var $cb = $('');
+ var $headingWrap = $('');
+ 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 = $('');
+ $row.append($cb).append($headingWrap).append($amt).append($unit).append($name);
+ $previewList.append($row);
+ }
+ }
+
+ /** Fetches AJAX-parsed ingredient lines and refreshes the preview. */
+ function fetchIngredientParse(lines) {
+ if (!lines.length) {
+ renderIngredientsPreview([], null);
+ return;
+ }
+
+ $spinner.show().css('visibility', 'visible');
+
+ $.post(jsVars.ajax_url, {
+ action: 'cooked_parse_bulk_ingredients',
+ nonce: jsVars.cooked_bulk_add_nonce,
+ lines: lines
+ }, function(response) {
+ $spinner.hide();
+ var parsed = (response.success && response.data && response.data.parsed) ? response.data.parsed : null;
+ renderIngredientsPreview(lines, parsed);
+ }).fail(function() {
+ $spinner.hide();
+ renderIngredientsPreview(lines, null);
+ });
+ }
+
+ $textarea.on('input', function() {
+ var type = $typeField.val();
+ var lines = parseTextToLines($(this).val());
+ var textKey = lines.join('\n');
+
+ if (type === 'directions') {
+ renderDirectionsPreview(lines);
+ } else {
+ if (textKey === lastParsedText) return;
+ lastParsedText = textKey;
+ renderIngredientsPreview(lines, null);
+ if (parseTimer) clearTimeout(parseTimer);
+ parseTimer = setTimeout(function() {
+ fetchIngredientParse(lines);
+ }, 400);
+ }
+ });
+
+ $(document).on('click', '.cooked-bulk-add-button', function(e) {
+ e.preventDefault();
+ var type = $(this).data('type');
+ openModal(type);
+ });
+
+ $overlay.on('click', '.cooked-bulk-add-close, .cooked-bulk-add-cancel', function(e) {
+ e.preventDefault();
+ closeModal();
+ });
+
+ $overlay.on('click', function(e) {
+ if ($(e.target).is($overlay)) {
+ closeModal();
+ }
+ });
+
+ $(document).on('keydown', function(e) {
+ if (e.key === 'Escape' && $overlay.is(':visible')) {
+ closeModal();
+ }
+ });
+
+ $previewList.on('change', 'input[type="checkbox"]', function() {
+ var $row = $(this).closest('.cooked-bulk-add-preview-row');
+ var isHeading = $(this).is(':checked');
+ $row.toggleClass('cooked-bulk-add-is-heading', isHeading);
+ });
+
+ $submitBtn.on('click', function(e) {
+ e.preventDefault();
+ if ($(this).attr('disabled')) return;
+
+ var type = $typeField.val();
+ var items = [];
+
+ if (type === 'ingredients') {
+ $previewList.find('.cooked-bulk-add-preview-row').each(function() {
+ var $row = $(this);
+ var isHeading = $row.find('input[type="checkbox"]').is(':checked');
+ var text = $row.find('.cooked-bulk-add-preview-text').val().trim();
+ if (!text) return;
+
+ if (isHeading) {
+ items.push({ text: text, heading: true });
+ } else {
+ items.push({
+ heading: false,
+ amount: $row.find('.cooked-bulk-add-parsed-amount').val().trim(),
+ measurement: $row.find('.cooked-bulk-add-parsed-unit').val().trim(),
+ name: $row.find('.cooked-bulk-add-parsed-name').val().trim() || text
+ });
+ }
+ });
+ } else {
+ $previewList.find('.cooked-bulk-add-preview-row').each(function() {
+ var $row = $(this);
+ var text = $row.find('.cooked-bulk-add-preview-text').val().trim();
+ var isHeading = $row.find('input[type="checkbox"]').is(':checked');
+ if (text) {
+ items.push({ text: text, heading: isHeading });
+ }
+ });
+ }
+
+ if (!items.length) return;
+
+ if (type === 'directions') {
+ cooked_bulk_add_directions(items);
+ closeModal();
+ } else {
+ cooked_bulk_add_ingredients_parsed(items);
+ closeModal();
+ }
+ });
+}
+
+/** Appends direction rows from bulk-add items (headings or plain steps) and resets the builder. */
+function cooked_bulk_add_directions(items) {
+ var $_builder = jQuery('#cooked-directions-builder');
+ var $_parent = $_builder.parent();
+
+ for (var i = 0; i < items.length; i++) {
+ var item = items[i];
+
+ if (item.heading) {
+ var $heading = $_parent.find('.cooked-heading-template').clone()
+ .removeClass('cooked-template cooked-heading-template')
+ .addClass('cooked-direction-block cooked-direction-heading');
+ $heading.find('[data-direction-part="section_heading_name"]').val(item.text);
+ $_builder.append($heading);
+ } else {
+ var $direction = $_parent.find('.cooked-direction-template').clone()
+ .removeClass('cooked-template cooked-direction-template')
+ .addClass('cooked-direction-block');
+ $direction.find('[data-direction-part="content"]').val(item.text);
+ $_builder.append($direction);
+ }
+ }
+
+ cooked_reset_direction_builder();
+}
+
+/** Appends ingredient rows from bulk-add items (headings or amount/unit/name) and resets the builder. */
+function cooked_bulk_add_ingredients_parsed(items) {
+ var $_builder = jQuery('#cooked-ingredients-builder');
+ var $_parent = $_builder.parent();
+
+ for (var i = 0; i < items.length; i++) {
+ var item = items[i];
+
+ if (item.heading) {
+ var $heading = $_parent.find('.cooked-heading-template').clone()
+ .removeClass('cooked-template cooked-heading-template')
+ .addClass('cooked-ingredient-block cooked-ingredient-heading');
+ $heading.find('[data-ingredient-part="section_heading_name"]').val(item.text);
+ $_builder.append($heading);
+ } else {
+ var $ingredient = $_parent.find('.cooked-ingredient-template').clone()
+ .removeClass('cooked-template cooked-ingredient-template')
+ .addClass('cooked-ingredient-block');
+
+ $ingredient.find('[data-ingredient-part="amount"]').val(item.amount || '');
+
+ if (item.measurement) {
+ $ingredient.find('[data-ingredient-part="measurement"]').val(item.measurement);
+ }
+
+ $ingredient.find('[data-ingredient-part="name"]').val(item.name || '');
+
+ $_builder.append($ingredient);
+ }
+ }
+
+ cooked_reset_ingredient_builder();
+}
diff --git a/assets/admin/js/cooked-functions.min.js b/assets/admin/js/cooked-functions.min.js
index 2d9cc3e..a93de4f 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=((p=>{p(document).ready(function(){var r,o,t,e,i,n,a,d,c,s=p(".cooked-color-field"),l=p("#cooked_recipe_settings").find("select"),u=p("#cooked-recipe-tabs"),k=(p("#cooked-settings-wrap"),p("#cooked_recipe_settings")),_=k.find("input#submit");$_CookedTooltips=p(".cooked-tooltip"),$_CookedConditionals=p(".cooked-conditional-hidden"),$_CookedSortable=p(".cooked-sortable"),$_CookedRecipeSaveDefault=p(".cooked-layout-save-default"),$_CookedShortcodeField=p(".cooked-shortcode-field"),$_CookedIngredientBuilder=p("#cooked-ingredients-builder"),$_CookedAutoNutritionButton=p(".cooked-auto-nutrition-button"),$_CookedDirectionBuilder=p("#cooked-directions-builder"),$_CookedRecipeGallery=p("#cooked-recipe-image-gallery"),$_CookedNutritionFactsTab=p("#cooked-recipe-tab-content-nutrition"),$_CookedSettingsPanel=p("#cooked-settings-panel"),$_CookedSettingsTabs=p("#cooked-settings-tabs"),s.length&&s.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(c,e){p(".cooked-save-default-all").on("click",function(e){e.preventDefault();var o,i=p(this),e=i.data("nonce"),n=i.data("bulk-nonce"),t=i.parent(),a=confirm(cooked_admin_functions_js_vars.i18n_confirm_save_default_all),d=p("#_recipe_settings_content"),r=tinymce.get("_recipe_settings_content");o=null===r?d.val():r.getContent(),a&&!i.hasClass("disabled")&&(t.find(".button, .button-primary").addClass("disabled"),p.post(cooked_admin_functions_js_vars.ajax_url,{action:"cooked_save_default",default_content:o,nonce:e},function(e){p.post(cooked_admin_functions_js_vars.ajax_url,{action:"cooked_get_recipe_ids",nonce:n},function(e){var t;i.removeClass("button-primary").addClass("button"),e&&(t=JSON.parse(e),0<(t=Object.keys(t).length))&&cooked_set_default_template(e,t,o,n,c)})}))}),p(".cooked-save-default-new").on("click",function(e){e.preventDefault();var t=p(this),e=t.data("nonce"),o=t.parent(),i=p("#_recipe_settings_content"),n=tinymce.get("_recipe_settings_content");i=null===n?i.val():n.getContent(),t.hasClass("disabled")||(o.find(".button, .button-primary").addClass("disabled"),p.post(cooked_admin_functions_js_vars.ajax_url,{action:"cooked_save_default",default_content:i,nonce:e},function(e){t.text(cooked_admin_functions_js_vars.i18n_saved),o.find(".button-primary").removeClass("disabled")}).fail(function(e){}))})}}),p(".cooked-layout-load-default").on("click",function(e){e.preventDefault();var e=p(this),t=e.parent(),o=confirm(cooked_admin_functions_js_vars.i18n_confirm_load_default),i=p("#_recipe_settings_content"),n=tinymce.get("_recipe_settings_content");o&&!e.hasClass("disabled")&&(t.find(".button, .button-primary").addClass("disabled"),p.post(cooked_admin_functions_js_vars.ajax_url,{action:"cooked_load_default"},function(e){null===n?i.val(e):(i.val(e),n.setContent(e)),t.find(".button, .button-primary").removeClass("disabled")}).fail(function(e){t.find(".button, .button-primary").removeClass("disabled")}))})),l.length&&l.each(function(){p(this).wrap('')}),$_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){p(this).select()}),$_CookedConditionals.length&&(r=[],$_CookedConditionals.each(function(){var e=p(this),t=p(this).data("condition"),o=p(this).data("value"),i=p("#"+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],p(".cooked-settings-tab-content").hide(),p("#cooked-settings-tab-content-"+n).show(),l.on("click",function(e){p(".tab-content").hide();var t=p(this).find("a"),t=($_CookedSettingsTabs.find("li").removeClass("active"),p(this).addClass("active"),t.attr("href"));"migration"==(t=(t=t.split("#"))[1])?_.hide():_.show(),p(".cooked-settings-tab-content").hide(),p("#cooked-settings-tab-content-"+t).show(),p("#cooked-settings-panel").hasClass("stuck")?window.scrollTo(0,130):window.scrollTo(0,0)})),$_CookedIngredientBuilder.length&&(cooked_reset_ingredient_builder(),$_CookedIngredientBuilder.on("keydown",'input[data-ingredient-part="name"]',function(e){9!==e.keyCode&&13!==e.keyCode||p(this).parents(".cooked-ingredient-block").is(":last-child")&&(e.preventDefault(),p("#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=p(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=p(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(""!=p(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=p(this).val(),o=p(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(),p(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=p(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=p(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=p(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()}),p("body").on("click",".cooked-direction-img-placeholder, .cooked-direction-img",function(e){e.preventDefault(),p(this).parent().find(".direction-image-button").trigger("click")}),p("body").on("click",".direction-image-button",function(e){var t=p(this);d=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();p("#direction-"+d+"-image-src").attr("src",e.sizes.thumbnail.url).removeAttr("srcset").removeAttr("sizes").parent().addClass("cooked-has-image"),p('input[name="_recipe_settings[directions]['+d+'][image]"]').val(e.id),p('.direction-image-button[data-id="'+d+'"]').prop("value",cooked_admin_functions_js_vars.i18n_image_change)}),a.open()})),$_CookedRecipeGallery.length&&(cooked_init_gallery_sorting(),p("body").on("click",".cooked-gallery-add-button",function(e){p(this);e.preventDefault(),c||(c=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=c.state().get("selection").toJSON();for(e in i)i.hasOwnProperty(e)&&(o=(t=i[e]).sizes.thumbnail.url,p("#cooked-recipe-image-gallery").append('
'+t.title+' '));cooked_init_gallery_sorting()}),c.open()}),p("body").on("click",".cooked-recipe-gallery-item img",function(e){e.preventDefault(),p(this).parent().find(".cooked-gallery-edit-button").trigger("click")}),p("body").on("click",".cooked-gallery-edit-button",function(e){var n=p(this),t=n.data("attachment-id"),a=(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}));a.on("open",function(){var e=a.state().get("selection");(attachment=wp.media.attachment(t)).fetch(),e.add(attachment?[attachment]:[])}),a.open(),a.on("select",function(){var e,t,o,i=a.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=p(this);d=t.data("id"),e.preventDefault(),d?(p("#direction-"+d+"-image-src").parent().removeClass("cooked-has-image").prop("src",!1),p('input[name="_recipe_settings[directions]['+d+'][image]"]').val(""),p('.direction-image-button[data-id="'+d+'"]').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)})),p("#cooked-prep-time").length&&p("#cooked-prep-time,#cooked-cook-time").on("change",function(){cooked_updateTotalTimeValue(parseInt(p("#cooked-prep-time").val()),parseInt(p("#cooked-cook-time").val()))})})})(jQuery),0);function cooked_set_default_template(e,o,i,n,a){var d,r,c,s;0{_(document).ready(function(){var c,o,t,e,i,n,d,a,r,l=_(".cooked-color-field"),s=_("#cooked_recipe_settings").find("select"),u=_("#cooked-recipe-tabs"),k=(_("#cooked-settings-wrap"),_("#cooked_recipe_settings")),p=k.find("input#submit");$_CookedTooltips=_(".cooked-tooltip"),$_CookedConditionals=_(".cooked-conditional-hidden"),$_CookedSortable=_(".cooked-sortable"),$_CookedRecipeSaveDefault=_(".cooked-layout-save-default"),$_CookedShortcodeField=_(".cooked-shortcode-field"),$_CookedIngredientBuilder=_("#cooked-ingredients-builder"),$_CookedAutoNutritionButton=_(".cooked-auto-nutrition-button"),$_CookedDirectionBuilder=_("#cooked-directions-builder"),$_CookedRecipeGallery=_("#cooked-recipe-image-gallery"),$_CookedNutritionFactsTab=_("#cooked-recipe-tab-content-nutrition"),$_CookedSettingsPanel=_("#cooked-settings-panel"),$_CookedSettingsTabs=_("#cooked-settings-tabs"),l.length&&l.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){_(".cooked-save-default-all").on("click",function(e){e.preventDefault();var t,o=_(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=_("#_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"),_.post(cooked_admin_functions_js_vars.ajax_url,{action:"cooked_save_default",default_content:t,nonce:e},function(){_.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){_(this).select()}),$_CookedConditionals.length&&(c=[],$_CookedConditionals.each(function(){var e=_(this),t=_(this).data("condition"),o=_(this).data("value"),i=_("#"+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<_.inArray(i.val(),o)||!i.is(":radio")&&!o&&i.val()||!i.is(":radio")&&o&&-1<_.inArray(i.val(),o))?e.css({display:n}):e.hide(),-1==_.inArray(t,c)&&c.push(t);for(var d=c.length,a=0;a a").attr("href")).split("#"))[1],_(".cooked-settings-tab-content").hide(),_("#cooked-settings-tab-content-"+n).show(),s.on("click",function(e){_(".tab-content").hide();var t=_(this).find("a"),t=($_CookedSettingsTabs.find("li").removeClass("active"),_(this).addClass("active"),t.attr("href"));"migration"==(t=(t=t.split("#"))[1])?p.hide():p.show(),_(".cooked-settings-tab-content").hide(),_("#cooked-settings-tab-content-"+t).show(),_("#cooked-settings-panel").hasClass("stuck")?window.scrollTo(0,130):window.scrollTo(0,0)})),$_CookedIngredientBuilder.length&&(cooked_reset_ingredient_builder(),$_CookedIngredientBuilder.on("keydown",'input[data-ingredient-part="name"]',function(e){9!==e.keyCode&&13!==e.keyCode||_(this).parents(".cooked-ingredient-block").is(":last-child")&&(e.preventDefault(),_("#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=_(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=_(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(""!=_(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=_(this).val(),o=_(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(),_(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=_(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=_(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=_(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()}),_("body").on("click",".cooked-direction-img-placeholder, .cooked-direction-img",function(e){e.preventDefault(),_(this).parent().find(".direction-image-button").trigger("click")}),_("body").on("click",".direction-image-button",function(e){var t=_(this);a=t.data("id"),e.preventDefault(),d||(d=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=d.state().get("selection").first().toJSON();_("#direction-"+a+"-image-src").attr("src",e.sizes.thumbnail.url).removeAttr("srcset").removeAttr("sizes").parent().addClass("cooked-has-image"),_('input[name="_recipe_settings[directions]['+a+'][image]"]').val(e.id),_('.direction-image-button[data-id="'+a+'"]').prop("value",cooked_admin_functions_js_vars.i18n_image_change)}),d.open()})),cooked_init_bulk_add(_),$_CookedRecipeGallery.length&&(cooked_init_gallery_sorting(),_("body").on("click",".cooked-gallery-add-button",function(e){_(this);e.preventDefault(),r||(r=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=r.state().get("selection").toJSON();for(e in i)i.hasOwnProperty(e)&&(o=(t=i[e]).sizes.thumbnail.url,_("#cooked-recipe-image-gallery").append('
'+t.title+' '));cooked_init_gallery_sorting()}),r.open()}),_("body").on("click",".cooked-recipe-gallery-item img",function(e){e.preventDefault(),_(this).parent().find(".cooked-gallery-edit-button").trigger("click")}),_("body").on("click",".cooked-gallery-edit-button",function(e){var n=_(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=_(this);a=t.data("id"),e.preventDefault(),a?(_("#direction-"+a+"-image-src").parent().removeClass("cooked-has-image").prop("src",!1),_('input[name="_recipe_settings[directions]['+a+'][image]"]').val(""),_('.direction-image-button[data-id="'+a+'"]').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)})),_("#cooked-prep-time").length&&_("#cooked-prep-time,#cooked-cook-time").on("change",function(){cooked_updateTotalTimeValue(parseInt(_("#cooked-prep-time").val()),parseInt(_("#cooked-cook-time").val()))})})})(jQuery),0),cooked_bulk_per_page=20;function cooked_set_default_template(o,i,n,d,a){var c,r,l;i<=0||(c=jQuery("#cooked-template-progress"),r=c.find(".cooked-progress-bar"),l=jQuery("#cooked-template-progress-text"),c.hasClass("cooked-active")||(c.addClass("cooked-active"),l.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+"%"}),l.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%"}),l.text(i+" / "+i),c.removeClass("cooked-active"),l.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 b(e,t){if(u.empty(),e.length){s.attr("data-bulk-type","ingredients"),s.show(),k.removeAttr("disabled"),u.find(".cooked-bulk-add-preview-header").length||u.prepend('");for(var o=0;o'),d=l('"),a=l(''),c=l('').text(_.i18n_bulk_add_heading_line_label),r=l('').val(e[o]),c=(a.append(c).append(r),l('')),r=l(''),i=l('');n.append(d).append(a).append(c).append(r).append(i),u.append(n)}}else s.attr("data-bulk-type",""),s.hide(),k.attr("disabled","disabled")}i.length&&(t=l("#cooked-bulk-add-textarea"),s=l("#cooked-bulk-add-preview"),u=l("#cooked-bulk-add-preview-list"),o=l("#cooked-bulk-add-title"),r=l("#cooked-bulk-add-type"),k=i.find(".cooked-bulk-add-submit"),p=i.find(".cooked-bulk-add-spinner"),_=cooked_admin_functions_js_vars,g=null,m="",t.on("input",function(){var e=r.val(),o=(e=>{for(var t=e.split(/[\r\n]+/),o=[],i=0;i'),a=l('"),c=l('');d.append(a).append(c),u.append(d)}}else s.attr("data-bulk-type",""),s.hide(),k.attr("disabled","disabled")}else t!==m&&(m=t,b(o,null),g&&clearTimeout(g),g=setTimeout(function(){var t;(t=o).length?(p.show().css("visibility","visible"),l.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;b(t,e)}).fail(function(){p.hide(),b(t,null)})):b([],null)},400))}),l(document).on("click",".cooked-bulk-add-button",function(e){e.preventDefault();var e=l(this).data("type");e=e,r.val(e),t.val(""),u.empty(),s.attr("data-bulk-type",""),s.hide(),k.attr("disabled","disabled"),p.hide(),m="","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){l(e.target).is(i)&&n()}),l(document).on("keydown",function(e){"Escape"===e.key&&i.is(":visible")&&n()}),u.on("change",'input[type="checkbox"]',function(){var e=l(this).closest(".cooked-bulk-add-preview-row"),t=l(this).is(":checked");e.toggleClass("cooked-bulk-add-is-heading",t)}),k.on("click",function(e){var i;e.preventDefault(),l(this).attr("disabled")||(e=r.val(),i=[],"ingredients"===e?u.find(".cooked-bulk-add-preview-row").each(function(){var e=l(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=l(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 0) {
- cooked_migrate_recipes(json_recipe_ids, total_recipe);
- }
- }
- }
+ function (json_recipe_ids) {
+ if (json_recipe_ids) {
+ var recipe_ids = JSON.parse(json_recipe_ids),
+ total_recipes = Object.keys(recipe_ids).length;
+
+ if (total_recipes > 0) {
+ cooked_migrate_recipes(json_recipe_ids, total_recipes);
+ }
+ }
+ }
);
- }
+ }
});
}
// Import Button Exists?
- if ($_CookedImportButton.length) {
- $_CookedImportButton.on('click', function(e) {
- e.preventDefault();
+ if ($_CookedImportButton.length) {
+ $_CookedImportButton.on('click', function(e) {
+ e.preventDefault();
- var thisButton = $(this),
+ var thisButton = $(this),
import_type = thisButton.data('import-type'),
- confirm_import = confirm(cooked_migration_js_vars.i18n_confirm_import_recipes);
+ confirm_import = confirm(cooked_migration_js_vars.i18n_confirm_import_recipes);
- if (confirm_import && !thisButton.hasClass('disabled')) {
- thisButton.addClass('disabled').attr('disabled', true);
- thisButton.hide();
+ if (confirm_import && !thisButton.hasClass('disabled')) {
+ thisButton.addClass('disabled').attr('disabled', true);
+ thisButton.hide();
- var ajax__bulk_import_recipes = $.post(
- cooked_migration_js_vars.ajax_url,
- {
+ var ajax__bulk_import_recipes = $.post(
+ cooked_migration_js_vars.ajax_url,
+ {
action: 'cooked_get_import_ids',
import_type: import_type
},
- function (json_recipe_ids) {
- if (json_recipe_ids) {
- var recipe_ids = JSON.parse(json_recipe_ids),
- total_recipes = Object.keys(recipe_ids).length;
-
- if (total_recipes > 0) {
- cooked_import_recipes(json_recipe_ids, total_recipes, import_type);
- }
- } else {
+ function (json_recipe_ids) {
+ if (json_recipe_ids) {
+ var recipe_ids = JSON.parse(json_recipe_ids),
+ total_recipes = Object.keys(recipe_ids).length;
+
+ if (total_recipes > 0) {
+ cooked_import_recipes(json_recipe_ids, total_recipes, import_type);
+ }
+ } else {
console.log(cooked_migration_js_vars.i18n_something_wrong);
thisButton.addClass('disabled').attr('disabled', false);
- thisButton.show();
+ thisButton.show();
}
- },
+ },
);
- }
+ }
});
}
@@ -242,20 +242,20 @@ var cooked_recipe_migrate_counter = 0;
var progressIterations = 0;
function cooked_migrate_recipes(recipe_ids, total_recipes ) {
- var temp_counter = 0,
- total_counter = 0,
- progress_percent = 0;
-
- if (total_recipes > 0) {
- var progress = jQuery( '#cooked-migration-progress' );
- var progress_bar = progress.find( '.cooked-progress-bar' );
- var progress_text = jQuery( '#cooked-migration-progress-text' );
-
- if ( !progress.hasClass('cooked-active') ) {
- progress.addClass('cooked-active');
- progress_text.addClass('cooked-active');
- progress_bar.css( { "width" : "0%" } );
- }
+ var temp_counter = 0,
+ total_counter = 0,
+ progress_percent = 0;
+
+ if (total_recipes > 0) {
+ var progress = jQuery( '#cooked-migration-progress' );
+ var progress_bar = progress.find( '.cooked-progress-bar' );
+ var progress_text = jQuery( '#cooked-migration-progress-text' );
+
+ if ( !progress.hasClass('cooked-active') ) {
+ progress.addClass('cooked-active');
+ progress_text.addClass('cooked-active');
+ progress_bar.css( { "width" : "0%" } );
+ }
var this_recipe_ids = JSON.parse( recipe_ids ),
this_total_recipe_ids = Object.keys(this_recipe_ids).length;
@@ -263,18 +263,18 @@ function cooked_migrate_recipes(recipe_ids, total_recipes ) {
var formattedTotal = total_recipes;
formattedTotal.toLocaleString();
- var ajax__bulk_migrate_recipes = jQuery.post(
+ var ajax__bulk_migrate_recipes = jQuery.post(
cooked_migration_js_vars.ajax_url,
{
action: 'cooked_migrate_recipes',
recipe_ids: recipe_ids
},
function( new_recipe_ids ) {
- if ( new_recipe_ids && new_recipe_ids != 'false' && new_recipe_ids != false ){
- var leftover_recipe_ids = JSON.parse( new_recipe_ids ),
- leftover_recipes = Object.keys(leftover_recipe_ids).length;
+ if ( new_recipe_ids && new_recipe_ids != 'false' && new_recipe_ids != false ){
+ var leftover_recipe_ids = JSON.parse( new_recipe_ids ),
+ leftover_recipes = Object.keys(leftover_recipe_ids).length;
- cooked_recipe_migrate_counter = total_recipes - leftover_recipes;
+ cooked_recipe_migrate_counter = total_recipes - leftover_recipes;
var formattedTotal = total_recipes;
formattedTotal.toLocaleString();
@@ -282,9 +282,9 @@ function cooked_migrate_recipes(recipe_ids, total_recipes ) {
var formattedComplete = cooked_recipe_migrate_counter;
formattedComplete.toLocaleString();
- progress_percent = Math.round10( ( cooked_recipe_migrate_counter / total_recipes ) * 100, -1 );
+ progress_percent = Math.round10( ( cooked_recipe_migrate_counter / total_recipes ) * 100, -1 );
if ( progress_percent < 2 ) { progress_percent = 2; }
- progress_bar.css( { "width" : progress_percent + "%" } );
+ progress_bar.css( { "width" : progress_percent + "%" } );
var remainingProgress = 100 - progress_percent;
var estimatedCompletionTime = Math.round( ( remainingProgress / progress_percent ) * progressIterations );
@@ -306,36 +306,36 @@ function cooked_migrate_recipes(recipe_ids, total_recipes ) {
progress_text.text( formattedComplete + " / " + formattedTotal );
}
- cooked_migrate_recipes( new_recipe_ids, total_recipes );
- } else {
- progress.hide();
- progress_text.hide();
+ cooked_migrate_recipes( new_recipe_ids, total_recipes );
+ } else {
+ progress.hide();
+ progress_text.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('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');
- }
- }
+ jQuery('#cooked-migration-button').hide();
+ jQuery('#cooked-migration-completed').addClass('cooked-active');
+ }
+ }
)
- }
+ }
}
function cooked_import_recipes(recipe_ids, total_recipes, import_type) {
- var progress_percent = 0;
+ var progress_percent = 0;
- if (total_recipes > 0) {
- var progress = jQuery( '#cooked-import-progress' );
- var progress_bar = progress.find( '.cooked-progress-bar' );
- var progress_text = jQuery( '#cooked-import-progress-text' );
+ if (total_recipes > 0) {
+ var progress = jQuery( '#cooked-import-progress' );
+ var progress_bar = progress.find( '.cooked-progress-bar' );
+ var progress_text = jQuery( '#cooked-import-progress-text' );
- if (!progress.hasClass('cooked-active')) {
- progress.addClass('cooked-active');
- progress_text.addClass('cooked-active');
- progress_bar.css( { "width" : "0%" } );
- }
+ if (!progress.hasClass('cooked-active')) {
+ progress.addClass('cooked-active');
+ progress_text.addClass('cooked-active');
+ progress_bar.css( { "width" : "0%" } );
+ }
var this_recipe_ids = JSON.parse(recipe_ids),
this_total_recipe_ids = Object.keys(this_recipe_ids).length;
@@ -343,7 +343,7 @@ function cooked_import_recipes(recipe_ids, total_recipes, import_type) {
var formattedTotal = total_recipes;
formattedTotal.toLocaleString();
- var ajax__bulk_migrate_recipes = jQuery.post(
+ var ajax__bulk_migrate_recipes = jQuery.post(
cooked_migration_js_vars.ajax_url,
{
action: 'cooked_import_recipes',
@@ -351,11 +351,11 @@ function cooked_import_recipes(recipe_ids, total_recipes, import_type) {
import_type: import_type
},
function (new_recipe_ids) {
- if (new_recipe_ids && new_recipe_ids != 'false' && new_recipe_ids != false) {
- var leftover_recipe_ids = JSON.parse( new_recipe_ids ),
- leftover_recipes = Object.keys(leftover_recipe_ids).length;
+ if (new_recipe_ids && new_recipe_ids != 'false' && new_recipe_ids != false) {
+ var leftover_recipe_ids = JSON.parse( new_recipe_ids ),
+ leftover_recipes = Object.keys(leftover_recipe_ids).length;
- cooked_recipe_migrate_counter = total_recipes - leftover_recipes;
+ cooked_recipe_migrate_counter = total_recipes - leftover_recipes;
var formattedTotal = total_recipes;
formattedTotal.toLocaleString();
@@ -363,9 +363,9 @@ function cooked_import_recipes(recipe_ids, total_recipes, import_type) {
var formattedComplete = cooked_recipe_migrate_counter;
formattedComplete.toLocaleString();
- progress_percent = Math.round10( ( cooked_recipe_migrate_counter / total_recipes ) * 100, -1 );
+ progress_percent = Math.round10( ( cooked_recipe_migrate_counter / total_recipes ) * 100, -1 );
if ( progress_percent < 2 ) { progress_percent = 2; }
- progress_bar.css({ "width" : progress_percent + "%" });
+ progress_bar.css({ "width" : progress_percent + "%" });
var remainingProgress = 100 - progress_percent;
var estimatedCompletionTime = Math.round( ( remainingProgress / progress_percent ) * progressIterations );
@@ -387,18 +387,18 @@ function cooked_import_recipes(recipe_ids, total_recipes, import_type) {
progress_text.text( formattedComplete + " / " + formattedTotal );
}
- cooked_import_recipes( new_recipe_ids, total_recipes, import_type );
- } else {
- progress.hide();
- progress_text.hide();
+ cooked_import_recipes( new_recipe_ids, total_recipes, import_type );
+ } else {
+ progress.hide();
+ progress_text.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('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
+ jQuery('#cooked-import-button').hide();
+ jQuery('#cooked-import-completed').addClass('cooked-active');
+ }
+ })
+ }
+}
diff --git a/assets/admin/js/cooked-migration.min.js b/assets/admin/js/cooked-migration.min.js
index 26c3f10..24373ef 100644
--- a/assets/admin/js/cooked-migration.min.js
+++ b/assets/admin/js/cooked-migration.min.js
@@ -1 +1 @@
-(d=>{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_recipe)&&!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"+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
+(d=>{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
diff --git a/composer.json b/composer.json
index 2cdad74..51b6d80 100644
--- a/composer.json
+++ b/composer.json
@@ -6,7 +6,7 @@
"recipe"
],
"homepage": "https://wordpress.org/plugins/cooked/",
- "version": "1.13.0",
+ "version": "1.14.0",
"type": "wordpress-plugin",
"license": "GPL-3.0-or-later",
"prefer-stable": true,
diff --git a/composer.lock b/composer.lock
index 734c712..dd13b69 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": "a4203b5d737ffaa046a8695c4a300dc7",
+ "content-hash": "93dff3879d013694a97a2b65c557b9d8",
"packages": [
{
"name": "nxp/math-executor",
diff --git a/cooked.php b/cooked.php
index 125f27a..230b73b 100644
--- a/cooked.php
+++ b/cooked.php
@@ -6,7 +6,7 @@
Description: A recipe plugin for WordPress.
Author: Gora Tech
Author URI: https://goratech.dev
-Version: 1.13.0
+Version: 1.14.0
Text Domain: cooked
Domain Path: languages
License: GPL2
@@ -31,7 +31,7 @@
require_once __DIR__ . '/vendor/autoload.php';
define( 'COOKED_DEV', false );
-define( 'COOKED_VERSION', '1.13.0' );
+define( 'COOKED_VERSION', '1.14.0' );
if ( ! class_exists( 'Cooked_Plugin' ) ) :
diff --git a/includes/class.cooked-admin-enqueues.php b/includes/class.cooked-admin-enqueues.php
index 1a752cd..9580d5f 100644
--- a/includes/class.cooked-admin-enqueues.php
+++ b/includes/class.cooked-admin-enqueues.php
@@ -166,6 +166,19 @@ public function admin_enqueues( $hook ) {
/* translators: 1: date and time, 2: number of recipes */
'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' ),
+ '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' ),
+ 'i18n_bulk_add_placeholder_directions' => __( "Preheat oven to 350°F.\nMix dry ingredients together.\nAdd wet ingredients and stir.", 'cooked' ),
+ 'i18n_bulk_add_section_heading' => __( 'Section heading', 'cooked' ),
+ 'i18n_bulk_add_parsing' => __( 'Parsing...', 'cooked' ),
+ 'i18n_bulk_add_submit_ingredients' => __( 'Add Ingredients', 'cooked' ),
+ 'i18n_bulk_add_submit_directions' => __( 'Add Directions', 'cooked' ),
+ 'i18n_bulk_add_amount' => __( 'Amount', 'cooked' ),
+ 'i18n_bulk_add_unit' => __( 'Measurement', 'cooked' ),
+ 'i18n_bulk_add_name' => __( 'Item', 'cooked' ),
+ 'i18n_bulk_add_heading_line_label' => __( 'Heading text', 'cooked' ),
];
// Cooked Admin Style Assets
diff --git a/includes/class.cooked-ajax.php b/includes/class.cooked-ajax.php
index 115d540..2f01fe9 100644
--- a/includes/class.cooked-ajax.php
+++ b/includes/class.cooked-ajax.php
@@ -36,6 +36,9 @@ function __construct() {
// Get JSON list of Recipe IDs
add_action( 'wp_ajax_cooked_get_recipe_ids', [&$this, 'get_recipe_ids'] );
+ // Get Recipe Count
+ add_action( 'wp_ajax_cooked_get_recipe_count', [&$this, 'get_recipe_count'] );
+
// Get JSON list of Recipe IDs, ready for Migration
add_action( 'wp_ajax_cooked_get_migrate_ids', [&$this, 'get_migrate_ids'] );
@@ -53,6 +56,10 @@ function __construct() {
// CSV Import - Process file
add_action( 'wp_ajax_cooked_process_csv', [&$this, 'process_csv']);
+
+ // Bulk Add - Parse Ingredients
+ add_action( 'wp_ajax_cooked_parse_bulk_ingredients', [&$this, 'parse_bulk_ingredients'] );
+ add_action( 'wp_ajax_nopriv_cooked_parse_bulk_ingredients', [&$this, 'parse_bulk_ingredients'] );
}
public function get_migrate_ids() {
@@ -282,54 +289,66 @@ public function get_recipe_ids() {
wp_die();
}
+ public function get_recipe_count() {
+ if (!wp_verify_nonce($_POST['nonce'], 'cooked_save_default_bulk') || !current_user_can('edit_cooked_default_template')) {
+ wp_die();
+ }
+
+ $args = [
+ 'post_type' => 'cp_recipe',
+ 'posts_per_page' => 1,
+ 'post_status' => 'any',
+ 'fields' => 'ids',
+ ];
+
+ $query = new WP_Query( $args );
+ wp_send_json_success( [ 'total' => $query->found_posts ] );
+ }
+
public function save_default_bulk() {
- $bulk_amount = 5;
+ $per_page = 20;
if (!wp_verify_nonce($_POST['nonce'], 'cooked_save_default_bulk') || !current_user_can('edit_cooked_default_template')) {
wp_die();
}
- if (isset($_POST['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;
- }
+ if (!isset($_POST['default_content'])) {
+ wp_send_json_error( [ 'message' => __( 'No default content provided.', 'cooked' ) ] );
+ }
- $leftover_recipe_ids = array_slice($recipe_ids, $bulk_amount);
- $recipe_ids = array_slice($recipe_ids, 0, $bulk_amount);
+ $page = isset($_POST['page']) ? absint($_POST['page']) : 0;
+ $content = wp_kses_post($_POST['default_content']);
- if (empty($recipe_ids)) {
- echo 'false';
- wp_die();
- } else {
- foreach ($recipe_ids as $rid) {
- $recipe_settings = get_post_meta($rid, '_recipe_settings', true);
- if (!empty($recipe_settings)) {
- $recipe_settings['content'] = wp_kses_post($_POST['default_content']);
- update_post_meta($rid, '_recipe_settings', $recipe_settings);
- }
- }
+ $args = [
+ 'post_type' => 'cp_recipe',
+ 'posts_per_page' => $per_page,
+ 'offset' => $page * $per_page,
+ 'post_status' => 'any',
+ 'fields' => 'ids',
+ 'orderby' => 'ID',
+ 'order' => 'ASC',
+ ];
- if (!empty($leftover_recipe_ids)) {
- echo wp_json_encode($leftover_recipe_ids);
- wp_die();
- } else {
- echo 'false';
- wp_die();
- }
+ $query = new WP_Query( $args );
+ $recipe_ids = $query->posts;
+ $updated = 0;
+
+ foreach ($recipe_ids as $rid) {
+ $recipe_settings = get_post_meta($rid, '_recipe_settings', true);
+ if (!empty($recipe_settings)) {
+ $recipe_settings['content'] = $content;
+ update_post_meta($rid, '_recipe_settings', $recipe_settings);
+ $updated++;
}
}
- wp_die();
+ $processed = ( $page * $per_page ) + count( $recipe_ids );
+ $has_more = $processed < $query->found_posts;
+
+ wp_send_json_success( [
+ 'updated' => $updated,
+ 'has_more' => $has_more,
+ ] );
}
public function save_default() {
@@ -445,4 +464,115 @@ public function process_csv() {
]);
}
}
+
+ public function parse_bulk_ingredients() {
+ if ( ! check_ajax_referer( 'cooked_bulk_add', 'nonce', false ) ) {
+ wp_send_json_error( [ 'message' => __( 'Security check failed.', 'cooked' ) ] );
+ }
+
+ $lines = isset( $_POST['lines'] ) ? (array) $_POST['lines'] : [];
+
+ if ( empty( $lines ) ) {
+ wp_send_json_error( [ 'message' => __( 'No ingredients provided.', 'cooked' ) ] );
+ }
+
+ $measurements = Cooked_Measurements::get();
+
+ $variations_map = [];
+ foreach ( $measurements as $key => $m ) {
+ if ( ! empty( $m['variations'] ) ) {
+ foreach ( $m['variations'] as $variation ) {
+ $variations_map[ $variation ] = $key;
+ }
+ }
+ }
+
+ // Sort variations longest-first to avoid partial matches.
+ $variation_strings = array_keys( $variations_map );
+ usort( $variation_strings, function( $a, $b ) {
+ return strlen( $b ) - strlen( $a );
+ });
+
+ $escaped = array_map( function( $v ) {
+ return preg_quote( $v, '/' );
+ }, $variation_strings );
+
+ $units_pattern = '/^(' . implode( '|', $escaped ) . ')\.?\s+/iu';
+
+ $parsed = [];
+
+ foreach ( $lines as $index => $line ) {
+ // 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 ) );
+
+ if ( '' === $line ) {
+ $parsed[ $index ] = [ 'amount' => '', 'measurement' => '', 'name' => '' ];
+ continue;
+ }
+
+ $raw = $line;
+ $amount = '';
+ $measurement = '';
+
+ $raw = str_replace( "\xE2\x81\x84", '/', $raw );
+
+ $fraction_map = [
+ "\xC2\xBC" => '1/4', "\xC2\xBD" => '1/2', "\xC2\xBE" => '3/4',
+ "\xE2\x85\x93" => '1/3', "\xE2\x85\x94" => '2/3',
+ "\xE2\x85\x95" => '1/5', "\xE2\x85\x96" => '2/5',
+ "\xE2\x85\x97" => '3/5', "\xE2\x85\x98" => '4/5',
+ "\xE2\x85\x99" => '1/6', "\xE2\x85\x9A" => '5/6',
+ "\xE2\x85\x9B" => '1/8', "\xE2\x85\x9C" => '3/8',
+ "\xE2\x85\x9D" => '5/8', "\xE2\x85\x9E" => '7/8',
+ ];
+ // "1½" must become "1 1/2", not "11/2".
+ foreach ( $fraction_map as $symbol => $replacement ) {
+ $raw = preg_replace( '/(\d)' . preg_quote( $symbol, '/' ) . '/u', '$1 ' . $replacement, $raw );
+ }
+ foreach ( $fraction_map as $symbol => $replacement ) {
+ $raw = str_replace( $symbol, $replacement, $raw );
+ }
+
+ // Allow en dash (U+2013) and em dash (U+2014) in amounts like "2–3".
+ $amount_regex = '/^\s*([\d][\s\/\-\d.,\x{2013}\x{2014}]*)\s*/u';
+ if ( preg_match( $amount_regex, $raw, $match ) ) {
+ $amount = trim( $match[1] );
+ $raw = trim( substr( $raw, strlen( $match[0] ) ) );
+ }
+
+ if ( preg_match( $units_pattern, $raw, $match ) ) {
+ $matched_variation = trim( rtrim( $match[1], '.' ) );
+ $matched_lower = strtolower( $matched_variation );
+
+ foreach ( $variations_map as $variation => $key ) {
+ if ( strtolower( $variation ) === $matched_lower ) {
+ $measurement = $key;
+ break;
+ }
+ }
+
+ $raw = trim( substr( $raw, strlen( $match[0] ) ) );
+ }
+
+ $name = trim( $raw );
+
+ if ( ! $name ) {
+ $amount = '';
+ $measurement = '';
+ $name = trim( $line );
+ }
+
+ $parsed[ $index ] = [
+ 'amount' => $amount,
+ 'measurement' => $measurement,
+ 'name' => $name,
+ ];
+ }
+
+ wp_send_json_success( [ 'parsed' => $parsed ] );
+ }
}
diff --git a/includes/class.cooked-delicious-recipes.php b/includes/class.cooked-delicious-recipes.php
index d6abd51..f18711d 100644
--- a/includes/class.cooked-delicious-recipes.php
+++ b/includes/class.cooked-delicious-recipes.php
@@ -147,6 +147,9 @@ public static function import_recipe($id) {
'name' => (!empty($ingredient['ingredient']) ? $ingredient['ingredient'] : ''),
'url' => '',
'description' => (!empty($ingredient['notes']) ? $ingredient['notes'] : ''),
+ 'sub_amount' => '',
+ 'sub_measurement' => '',
+ 'sub_name' => '',
];
}
}
diff --git a/includes/class.cooked-recipe-maker.php b/includes/class.cooked-recipe-maker.php
index aeca158..d5202dc 100644
--- a/includes/class.cooked-recipe-maker.php
+++ b/includes/class.cooked-recipe-maker.php
@@ -148,6 +148,9 @@ public static function import_recipe($id) {
'name' => (!empty($ingredient['name']) ? $ingredient['name'] : ''),
'url' => '',
'description' => (!empty($ingredient['notes']) ? $ingredient['notes'] : ''),
+ 'sub_amount' => '',
+ 'sub_measurement' => '',
+ 'sub_name' => '',
];
}
}
diff --git a/includes/class.cooked-recipe-meta.php b/includes/class.cooked-recipe-meta.php
index 93257be..7ce06e9 100644
--- a/includes/class.cooked-recipe-meta.php
+++ b/includes/class.cooked-recipe-meta.php
@@ -209,6 +209,45 @@ public function render_recipe_meta_box() {
// Add an nonce field so we can check for it later.
wp_nonce_field( 'cooked_recipe_custom_box', 'cooked_recipe_custom_box_nonce' );
}
+
+ public static function bulk_add_modal() {
+ // Frontend submit form uses cooked-button + colors.php; wp-admin uses core .button styles.
+ if ( is_admin() ) {
+ $bulk_cancel_class = 'button cooked-bulk-add-cancel';
+ $bulk_submit_class = 'button button-primary cooked-bulk-add-submit';
+ } else {
+ $bulk_cancel_class = 'cooked-button cooked-secondary-button cooked-bulk-add-cancel';
+ $bulk_submit_class = 'cooked-button cooked-bulk-add-submit';
+ }
+ ?>
+
+
+
@@ -843,8 +883,11 @@ function cooked_render_recipe_fields( $post_id ) {
+
+
+
@@ -1590,6 +1633,8 @@ function cooked_render_recipe_fields( $post_id ) {
+
+
Note: Author links require the Browse/Search Recipes Page to be set up correctly to function properly."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:523
-#: includes/class.cooked-recipe-meta.php:615
-#: includes/class.cooked-recipe-meta.php:681
+#: includes/class.cooked-recipe-meta.php:562
+#: includes/class.cooked-recipe-meta.php:654
+#: includes/class.cooked-recipe-meta.php:721
msgid "Substitution:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:536
-#: includes/class.cooked-recipe-meta.php:628
-#: includes/class.cooked-recipe-meta.php:694
+#: includes/class.cooked-recipe-meta.php:575
+#: includes/class.cooked-recipe-meta.php:667
+#: includes/class.cooked-recipe-meta.php:734
msgid "ex. Apple Sauce, Tofu, etc."
msgstr ""
@@ -2239,36 +2242,36 @@ msgstr ""
msgid "or"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1459
+#: includes/class.cooked-recipe-meta.php:1502
msgid "Next & Previous Recipe Navigation"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1460
+#: includes/class.cooked-recipe-meta.php:1503
msgid "This will display navigation links to the next and previous recipes."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1464
+#: includes/class.cooked-recipe-meta.php:1507
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:1469
+#: includes/class.cooked-recipe-meta.php:1512
msgid "Usage"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1471
+#: includes/class.cooked-recipe-meta.php:1514
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:1484
+#: includes/class.cooked-recipe-meta.php:1527
#: includes/class.cooked-related-recipes.php:34
msgid "Related Recipes"
msgstr ""
-#: includes/class.cooked-shortcodes.php:1131
+#: includes/class.cooked-shortcodes.php:1133
msgid "Recipe not found."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1146
+#: includes/class.cooked-shortcodes.php:1148
msgid "No related recipes found."
msgstr ""
@@ -2286,100 +2289,101 @@ msgstr ""
msgid "Create translations of your browse page in %s for full multilingual support."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1493
+#: includes/class.cooked-recipe-meta.php:1536
msgid "Specify a recipe ID. If not provided, uses the current recipe."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1500
+#: includes/class.cooked-recipe-meta.php:1543
msgid "Set the heading text for the related recipes section."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1527
+#: includes/class.cooked-recipe-meta.php:1570
msgid "Hide recipe card images."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1534
+#: includes/class.cooked-recipe-meta.php:1577
msgid "Hide recipe card excerpts."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1544
+#: includes/class.cooked-recipe-meta.php:1587
msgid "Hide recipe card authors."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1566
+#: includes/class.cooked-recipe-meta.php:1609
msgid "Recipe ID"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1567
+#: includes/class.cooked-admin-enqueues.php:174
+#: includes/class.cooked-recipe-meta.php:1610
msgid "Section heading"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1568
+#: includes/class.cooked-recipe-meta.php:1611
msgid "Number of recipes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1569
+#: includes/class.cooked-recipe-meta.php:1612
msgid "Grid columns"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1570
-#: includes/class.cooked-recipe-meta.php:1571
-#: includes/class.cooked-recipe-meta.php:1572
-#: includes/class.cooked-recipe-meta.php:1573
+#: includes/class.cooked-recipe-meta.php:1613
+#: includes/class.cooked-recipe-meta.php:1614
+#: includes/class.cooked-recipe-meta.php:1615
+#: includes/class.cooked-recipe-meta.php:1616
msgid "true/false"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1575
+#: includes/class.cooked-recipe-meta.php:1618
msgid "Example"
msgstr ""
-#: includes/class.cooked-shortcodes.php:1114
+#: includes/class.cooked-shortcodes.php:1116
msgid "Invalid recipe ID specified. Please provide a valid numeric recipe ID."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1124
+#: includes/class.cooked-shortcodes.php:1126
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:1135
+#: includes/class.cooked-shortcodes.php:1137
#, php-format
msgid "The specified ID (%d) is not a recipe."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1137
+#: includes/class.cooked-shortcodes.php:1139
#, php-format
msgid "No post found with ID %d."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1149
+#: includes/class.cooked-shortcodes.php:1151
msgid "This may be because there are no other recipes in the current language with matching attributes."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1151
+#: includes/class.cooked-shortcodes.php:1153
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:1485
+#: includes/class.cooked-recipe-meta.php:1528
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:1510
+#: includes/class.cooked-recipe-meta.php:1553
msgid "Number of recipes to display (default: 4)."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1517
+#: includes/class.cooked-recipe-meta.php:1560
msgid "Number of columns in the grid (default: 2)."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1551
+#: includes/class.cooked-recipe-meta.php:1594
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:1558
+#: includes/class.cooked-recipe-meta.php:1601
msgid "Matching options:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1559
+#: includes/class.cooked-recipe-meta.php:1602
msgid "Set to false to exclude a taxonomy from related recipes, e.g. match_cuisines=\"false\" to ignore cuisines."
msgstr ""
@@ -2482,7 +2486,7 @@ msgid "Failed to upload CSV file."
msgstr ""
#: includes/class.cooked-admin-enqueues.php:161
-#: includes/class.cooked-ajax.php:379
+#: includes/class.cooked-ajax.php:398
msgid "File upload failed."
msgstr ""
@@ -2508,29 +2512,30 @@ msgstr ""
msgid "Last: %1$s · %2$s recipes"
msgstr ""
-#: includes/class.cooked-ajax.php:346
+#: includes/class.cooked-ajax.php:316
+#: includes/class.cooked-ajax.php:365
msgid "No default content provided."
msgstr ""
-#: includes/class.cooked-ajax.php:375
-#: includes/class.cooked-ajax.php:411
+#: includes/class.cooked-ajax.php:394
+#: includes/class.cooked-ajax.php:430
msgid "You do not have permission to import recipes."
msgstr ""
-#: includes/class.cooked-ajax.php:385
+#: includes/class.cooked-ajax.php:404
msgid "Invalid file type. Please upload a CSV file."
msgstr ""
-#: includes/class.cooked-ajax.php:418
+#: includes/class.cooked-ajax.php:437
msgid "CSV file not found. Please upload again."
msgstr ""
-#: includes/class.cooked-ajax.php:434
+#: includes/class.cooked-ajax.php:453
#, php-format
msgid "Successfully imported %d recipe(s)."
msgstr ""
-#: includes/class.cooked-ajax.php:443
+#: includes/class.cooked-ajax.php:462
msgid "No recipes were imported."
msgstr ""
@@ -2647,3 +2652,71 @@ msgstr ""
#: includes/class.cooked-import.php:167
msgid "Restricted diet type (Schema.org RestrictedDiet), separated by comma"
msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:170
+msgid "Bulk Add Ingredients"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:171
+msgid "Bulk Add Directions"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:172
+msgid ""
+"2 cups flour\n"
+"1 tsp salt\n"
+"1/2 cup sugar\n"
+"3 large eggs"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:173
+msgid ""
+"Preheat oven to 350°F.\n"
+"Mix dry ingredients together.\n"
+"Add wet ingredients and stir."
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:175
+msgid "Parsing..."
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:176
+msgid "Add Ingredients"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:177
+msgid "Add Directions"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:181
+msgid "Heading text"
+msgstr ""
+
+#: includes/class.cooked-ajax.php:470
+msgid "Security check failed."
+msgstr ""
+
+#: includes/class.cooked-ajax.php:476
+msgid "No ingredients provided."
+msgstr ""
+
+#: includes/class.cooked-recipe-meta.php:230
+msgid "Enter one item per line. Use the checkboxes below to mark section headings."
+msgstr ""
+
+#: includes/class.cooked-recipe-meta.php:233
+msgid "Preview"
+msgstr ""
+
+#: includes/class.cooked-recipe-meta.php:237
+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:242
+msgid "Cancel"
+msgstr ""
+
+#: includes/class.cooked-recipe-meta.php:684
+#: includes/class.cooked-recipe-meta.php:890
+msgid "Bulk Add"
+msgstr ""
diff --git a/languages/cooked.pot b/languages/cooked.pot
index 4459be8..30b6284 100644
--- a/languages/cooked.pot
+++ b/languages/cooked.pot
@@ -2,14 +2,14 @@
# This file is distributed under the GPL2.
msgid ""
msgstr ""
-"Project-Id-Version: Cooked - Recipe Management 1.13.0\n"
+"Project-Id-Version: Cooked - Recipe Management 1.14.0\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-02-24T19:15:02-05:00\n"
+"POT-Creation-Date: 2026-04-18T23:32:28-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,14 +44,14 @@ msgid "remaining"
msgstr ""
#: includes/class.cooked-admin-enqueues.php:138
-#: includes/class.cooked-recipe-meta.php:759
-#: includes/class.cooked-recipe-meta.php:815
-#: includes/class.cooked-recipe-meta.php:856
+#: includes/class.cooked-recipe-meta.php:799
+#: includes/class.cooked-recipe-meta.php:855
+#: includes/class.cooked-recipe-meta.php:899
msgid "Add Image"
msgstr ""
#: includes/class.cooked-admin-enqueues.php:139
-#: includes/class.cooked-recipe-meta.php:759
+#: includes/class.cooked-recipe-meta.php:799
msgid "Change Image"
msgstr ""
@@ -60,7 +60,7 @@ msgid "Use this Image"
msgstr ""
#: includes/class.cooked-admin-enqueues.php:141
-#: includes/class.cooked-recipe-meta.php:1088
+#: includes/class.cooked-recipe-meta.php:1131
msgid "Add to Gallery"
msgstr ""
@@ -139,7 +139,7 @@ msgid "Failed to upload CSV file."
msgstr ""
#: includes/class.cooked-admin-enqueues.php:161
-#: includes/class.cooked-ajax.php:379
+#: includes/class.cooked-ajax.php:398
msgid "File upload failed."
msgstr ""
@@ -165,6 +165,65 @@ msgstr ""
msgid "Last: %1$s · %2$s recipes"
msgstr ""
+#: includes/class.cooked-admin-enqueues.php:170
+msgid "Bulk Add Ingredients"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:171
+msgid "Bulk Add Directions"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:172
+msgid ""
+"2 cups flour\n"
+"1 tsp salt\n"
+"1/2 cup sugar\n"
+"3 large eggs"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:173
+msgid ""
+"Preheat oven to 350°F.\n"
+"Mix dry ingredients together.\n"
+"Add wet ingredients and stir."
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:174
+#: includes/class.cooked-recipe-meta.php:1610
+msgid "Section heading"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:175
+msgid "Parsing..."
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:176
+msgid "Add Ingredients"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:177
+msgid "Add Directions"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:178
+#: includes/class.cooked-recipe-meta.php:513
+msgid "Amount"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:179
+#: includes/class.cooked-recipe-meta.php:514
+msgid "Measurement"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:180
+#: includes/class.cooked-recipe-meta.php:515
+msgid "Item"
+msgstr ""
+
+#: includes/class.cooked-admin-enqueues.php:181
+msgid "Heading text"
+msgstr ""
+
#: includes/class.cooked-admin-menus.php:36
#: includes/class.cooked-admin-menus.php:59
#: includes/class.cooked-post-types.php:450
@@ -213,54 +272,63 @@ msgstr ""
msgid "You do not have sufficient permissions to access this page."
msgstr ""
-#: includes/class.cooked-ajax.php:180
+#: includes/class.cooked-ajax.php:187
#: includes/class.cooked-csv-import.php:307
#: includes/class.cooked-functions.php:134
#: includes/class.cooked-recipe-meta.php:176
-#: includes/class.cooked-recipe-meta.php:263
-#: includes/class.cooked-recipe-meta.php:1166
+#: includes/class.cooked-recipe-meta.php:302
+#: includes/class.cooked-recipe-meta.php:1209
#: includes/class.cooked-recipes.php:635
#: includes/class.cooked-recipes.php:667
msgid "Ingredients"
msgstr ""
-#: includes/class.cooked-ajax.php:180
+#: includes/class.cooked-ajax.php:187
#: includes/class.cooked-csv-import.php:307
#: includes/class.cooked-functions.php:135
#: includes/class.cooked-recipe-meta.php:176
-#: includes/class.cooked-recipe-meta.php:269
-#: includes/class.cooked-recipe-meta.php:1197
+#: includes/class.cooked-recipe-meta.php:308
+#: includes/class.cooked-recipe-meta.php:1240
#: includes/class.cooked-recipes.php:639
#: includes/class.cooked-recipes.php:668
msgid "Directions"
msgstr ""
-#: includes/class.cooked-ajax.php:346
+#: includes/class.cooked-ajax.php:316
+#: includes/class.cooked-ajax.php:365
msgid "No default content provided."
msgstr ""
-#: includes/class.cooked-ajax.php:375
-#: includes/class.cooked-ajax.php:411
+#: includes/class.cooked-ajax.php:394
+#: includes/class.cooked-ajax.php:430
msgid "You do not have permission to import recipes."
msgstr ""
-#: includes/class.cooked-ajax.php:385
+#: includes/class.cooked-ajax.php:404
msgid "Invalid file type. Please upload a CSV file."
msgstr ""
-#: includes/class.cooked-ajax.php:418
+#: includes/class.cooked-ajax.php:437
msgid "CSV file not found. Please upload again."
msgstr ""
-#: includes/class.cooked-ajax.php:434
+#: includes/class.cooked-ajax.php:453
#, php-format
msgid "Successfully imported %d recipe(s)."
msgstr ""
-#: includes/class.cooked-ajax.php:443
+#: includes/class.cooked-ajax.php:462
msgid "No recipes were imported."
msgstr ""
+#: includes/class.cooked-ajax.php:470
+msgid "Security check failed."
+msgstr ""
+
+#: includes/class.cooked-ajax.php:476
+msgid "No ingredients provided."
+msgstr ""
+
#: includes/class.cooked-cli.php:41
msgid "Please provide a tool name. Use `wp cooked tools list` to see available tools."
msgstr ""
@@ -308,7 +376,7 @@ msgid "Error importing WP Delicious recipe."
msgstr ""
#: includes/class.cooked-enqueues.php:56
-#: includes/class.cooked-recipe-meta.php:1412
+#: includes/class.cooked-recipe-meta.php:1455
msgid "Timer"
msgstr ""
@@ -319,7 +387,7 @@ msgid "What's new in %s?"
msgstr ""
#: includes/class.cooked-functions.php:127
-#: includes/class.cooked-shortcodes.php:656
+#: includes/class.cooked-shortcodes.php:658
msgid "Print"
msgstr ""
@@ -336,7 +404,7 @@ msgid "Information"
msgstr ""
#: includes/class.cooked-functions.php:132
-#: includes/class.cooked-recipe-meta.php:1357
+#: includes/class.cooked-recipe-meta.php:1400
#: includes/class.cooked-settings.php:231
msgid "Excerpt"
msgstr ""
@@ -347,15 +415,15 @@ msgstr ""
#: includes/class.cooked-functions.php:136
#: includes/class.cooked-import.php:161
-#: includes/class.cooked-recipe-meta.php:1381
+#: includes/class.cooked-recipe-meta.php:1424
#: includes/class.cooked-recipes.php:642
#: includes/class.cooked-settings.php:232
-#: includes/class.cooked-shortcodes.php:775
+#: includes/class.cooked-shortcodes.php:777
msgid "Notes"
msgstr ""
#: includes/class.cooked-functions.php:137
-#: includes/class.cooked-recipe-meta.php:275
+#: includes/class.cooked-recipe-meta.php:314
msgid "Nutrition"
msgstr ""
@@ -1183,558 +1251,563 @@ msgstr ""
msgid "Error importing WP Recipe Maker recipe."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:221
+#: includes/class.cooked-recipe-meta.php:230
+msgid "Enter one item per line. Use the checkboxes below to mark section headings."
+msgstr ""
+
+#: includes/class.cooked-recipe-meta.php:233
+msgid "Preview"
+msgstr ""
+
+#: includes/class.cooked-recipe-meta.php:237
+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:242
+msgid "Cancel"
+msgstr ""
+
+#: includes/class.cooked-recipe-meta.php:260
msgid "Display Recipe"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:222
+#: includes/class.cooked-recipe-meta.php:261
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:257
+#: includes/class.cooked-recipe-meta.php:296
msgid "Layout"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:281
-#: includes/class.cooked-recipe-meta.php:1278
+#: includes/class.cooked-recipe-meta.php:320
+#: includes/class.cooked-recipe-meta.php:1321
msgid "Gallery"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:287
+#: includes/class.cooked-recipe-meta.php:326
msgid "Shortcodes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:344
+#: includes/class.cooked-recipe-meta.php:383
msgid "Recipe Review Required"
msgstr ""
#. translators: for displaying singular or plural versions depending on the number of recipes.
-#: includes/class.cooked-recipe-meta.php:347
+#: includes/class.cooked-recipe-meta.php:386
#, 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:355
+#: includes/class.cooked-recipe-meta.php:394
msgid "Recipe Shortcode"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:356
+#: includes/class.cooked-recipe-meta.php:395
msgid "You can use the following shortcode to display your recipe anywhere:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:370
+#: includes/class.cooked-recipe-meta.php:409
msgid "Recipe Template"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:370
+#: includes/class.cooked-recipe-meta.php:409
msgid "Default Recipe Template"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:370
+#: includes/class.cooked-recipe-meta.php:409
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:370
+#: includes/class.cooked-recipe-meta.php:409
msgid "Save as Default"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:370
+#: includes/class.cooked-recipe-meta.php:409
msgid "Apply to All"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:370
+#: includes/class.cooked-recipe-meta.php:409
msgid "Reset"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:370
+#: includes/class.cooked-recipe-meta.php:409
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:388
+#: includes/class.cooked-recipe-meta.php:427
msgid "Recipe Excerpt"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:388
+#: includes/class.cooked-recipe-meta.php:427
msgid "The excerpt is used on recipe listing templates, where the full recipe should not be displayed."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:411
+#: includes/class.cooked-recipe-meta.php:450
msgid "SEO Description"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:411
+#: includes/class.cooked-recipe-meta.php:450
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:422
+#: includes/class.cooked-recipe-meta.php:461
#: includes/class.cooked-settings.php:230
msgid "Difficulty Level"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:431
-#: includes/class.cooked-recipe-meta.php:1140
+#: includes/class.cooked-recipe-meta.php:470
+#: includes/class.cooked-recipe-meta.php:1183
#: includes/class.cooked-settings.php:233
-#: includes/class.cooked-shortcodes.php:449
-#: includes/class.cooked-shortcodes.php:671
+#: includes/class.cooked-shortcodes.php:451
+#: includes/class.cooked-shortcodes.php:673
msgid "Prep Time"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:433
-#: includes/class.cooked-recipe-meta.php:438
-#: includes/class.cooked-recipe-meta.php:443
+#: includes/class.cooked-recipe-meta.php:472
+#: includes/class.cooked-recipe-meta.php:477
+#: includes/class.cooked-recipe-meta.php:482
msgid "minutes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:436
-#: includes/class.cooked-recipe-meta.php:1141
+#: includes/class.cooked-recipe-meta.php:475
+#: includes/class.cooked-recipe-meta.php:1184
#: includes/class.cooked-settings.php:234
-#: includes/class.cooked-shortcodes.php:450
-#: includes/class.cooked-shortcodes.php:680
+#: includes/class.cooked-shortcodes.php:452
+#: includes/class.cooked-shortcodes.php:682
msgid "Cook Time"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:441
-#: includes/class.cooked-recipe-meta.php:1142
+#: includes/class.cooked-recipe-meta.php:480
+#: includes/class.cooked-recipe-meta.php:1185
#: includes/class.cooked-settings.php:235
-#: includes/class.cooked-shortcodes.php:451
-#: includes/class.cooked-shortcodes.php:691
-#: includes/class.cooked-shortcodes.php:698
+#: includes/class.cooked-shortcodes.php:453
+#: includes/class.cooked-shortcodes.php:693
+#: includes/class.cooked-shortcodes.php:700
msgid "Total Time"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:449
+#: includes/class.cooked-recipe-meta.php:488
msgid "Recipe Notes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:449
+#: includes/class.cooked-recipe-meta.php:488
msgid "The notes are displayed in the recipe."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:474
-msgid "Amount"
-msgstr ""
-
-#: includes/class.cooked-recipe-meta.php:475
-msgid "Measurement"
-msgstr ""
-
-#: includes/class.cooked-recipe-meta.php:476
-msgid "Item"
-msgstr ""
-
-#: includes/class.cooked-recipe-meta.php:514
-#: includes/class.cooked-recipe-meta.php:606
-#: includes/class.cooked-recipe-meta.php:672
+#: includes/class.cooked-recipe-meta.php:553
+#: includes/class.cooked-recipe-meta.php:645
+#: includes/class.cooked-recipe-meta.php:712
msgid "ex. Eggs, Milk, etc."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:523
-#: includes/class.cooked-recipe-meta.php:615
-#: includes/class.cooked-recipe-meta.php:681
+#: includes/class.cooked-recipe-meta.php:562
+#: includes/class.cooked-recipe-meta.php:654
+#: includes/class.cooked-recipe-meta.php:721
msgid "Substitution:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:536
-#: includes/class.cooked-recipe-meta.php:628
-#: includes/class.cooked-recipe-meta.php:694
+#: includes/class.cooked-recipe-meta.php:575
+#: includes/class.cooked-recipe-meta.php:667
+#: includes/class.cooked-recipe-meta.php:734
msgid "ex. Apple Sauce, Tofu, etc."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:547
-#: includes/class.cooked-recipe-meta.php:702
-#: includes/class.cooked-recipe-meta.php:775
-#: includes/class.cooked-recipe-meta.php:869
+#: includes/class.cooked-recipe-meta.php:586
+#: includes/class.cooked-recipe-meta.php:742
+#: includes/class.cooked-recipe-meta.php:815
+#: includes/class.cooked-recipe-meta.php:912
msgid "Section Heading"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:551
-#: includes/class.cooked-recipe-meta.php:706
-#: includes/class.cooked-recipe-meta.php:779
-#: includes/class.cooked-recipe-meta.php:873
+#: includes/class.cooked-recipe-meta.php:590
+#: includes/class.cooked-recipe-meta.php:746
+#: includes/class.cooked-recipe-meta.php:819
+#: includes/class.cooked-recipe-meta.php:916
msgid "Heading Element:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:642
+#: includes/class.cooked-recipe-meta.php:681
msgid "Add Ingredient"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:643
-#: includes/class.cooked-recipe-meta.php:847
+#: includes/class.cooked-recipe-meta.php:682
+#: includes/class.cooked-recipe-meta.php:888
msgid "Add Section Heading"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:846
+#: includes/class.cooked-recipe-meta.php:684
+#: includes/class.cooked-recipe-meta.php:890
+msgid "Bulk Add"
+msgstr ""
+
+#: includes/class.cooked-recipe-meta.php:887
msgid "Add Direction"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:904
+#: includes/class.cooked-recipe-meta.php:947
msgid "Nutrition Information"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:942
-#: includes/class.cooked-shortcodes.php:1062
+#: includes/class.cooked-recipe-meta.php:985
+#: includes/class.cooked-shortcodes.php:1064
msgid "Nutrition Facts"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:960
-#: includes/class.cooked-shortcodes.php:1030
+#: includes/class.cooked-recipe-meta.php:1003
+#: includes/class.cooked-shortcodes.php:1032
msgid "Amount per serving"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:970
-#: includes/class.cooked-shortcodes.php:1040
+#: includes/class.cooked-recipe-meta.php:1013
+#: includes/class.cooked-shortcodes.php:1042
msgid "% Daily Value *"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:989
-#: includes/class.cooked-shortcodes.php:972
+#: includes/class.cooked-recipe-meta.php:1032
+#: includes/class.cooked-shortcodes.php:974
msgid "Includes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1021
-#: includes/class.cooked-shortcodes.php:1066
+#: includes/class.cooked-recipe-meta.php:1064
+#: includes/class.cooked-shortcodes.php:1068
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:1037
+#: includes/class.cooked-recipe-meta.php:1080
msgid "Recipe Gallery Type"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1050
+#: includes/class.cooked-recipe-meta.php:1093
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:1064
+#: includes/class.cooked-recipe-meta.php:1107
#, 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:1068
+#: includes/class.cooked-recipe-meta.php:1111
#, 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:1073
+#: includes/class.cooked-recipe-meta.php:1116
msgid "Gallery Items"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1104
+#: includes/class.cooked-recipe-meta.php:1147
msgid "Recipe Information"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1105
+#: includes/class.cooked-recipe-meta.php:1148
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:1114
-#: includes/class.cooked-recipe-meta.php:1124
+#: includes/class.cooked-recipe-meta.php:1157
+#: includes/class.cooked-recipe-meta.php:1167
#, php-format
msgid "\"%1$s\" and \"%2$s\""
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1116
+#: includes/class.cooked-recipe-meta.php:1159
msgid "This will allow you to include or exclude content from the shortcode output."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1125
+#: includes/class.cooked-recipe-meta.php:1168
msgid "Used like \"include\", but will position the content to the left or right."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1135
-#: includes/class.cooked-recipe-meta.php:1181
-#: includes/class.cooked-recipe-meta.php:1212
-#: includes/class.cooked-recipe-meta.php:1237
-#: includes/class.cooked-recipe-meta.php:1261
-#: includes/class.cooked-recipe-meta.php:1321
-#: includes/class.cooked-recipe-meta.php:1366
-#: includes/class.cooked-recipe-meta.php:1396
-#: includes/class.cooked-recipe-meta.php:1441
-#: includes/class.cooked-recipe-meta.php:1564
+#: includes/class.cooked-recipe-meta.php:1178
+#: includes/class.cooked-recipe-meta.php:1224
+#: includes/class.cooked-recipe-meta.php:1255
+#: includes/class.cooked-recipe-meta.php:1280
+#: includes/class.cooked-recipe-meta.php:1304
+#: includes/class.cooked-recipe-meta.php:1364
+#: includes/class.cooked-recipe-meta.php:1409
+#: includes/class.cooked-recipe-meta.php:1439
+#: includes/class.cooked-recipe-meta.php:1484
+#: includes/class.cooked-recipe-meta.php:1607
msgid "Available Variables"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1139
+#: includes/class.cooked-recipe-meta.php:1182
#: includes/class.cooked-settings.php:228
-#: includes/class.cooked-shortcodes.php:446
-#: includes/class.cooked-shortcodes.php:624
+#: includes/class.cooked-shortcodes.php:448
+#: includes/class.cooked-shortcodes.php:626
msgid "Author"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1143
-#: includes/class.cooked-shortcodes.php:447
-#: includes/class.cooked-shortcodes.php:635
+#: includes/class.cooked-recipe-meta.php:1186
+#: includes/class.cooked-shortcodes.php:449
+#: includes/class.cooked-shortcodes.php:637
msgid "Difficulty"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1144
+#: includes/class.cooked-recipe-meta.php:1187
msgid "Servings Switcher"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1145
+#: includes/class.cooked-recipe-meta.php:1188
#: includes/class.cooked-settings.php:229
-#: includes/class.cooked-shortcodes.php:718
-#: includes/class.cooked-shortcodes.php:721
+#: includes/class.cooked-shortcodes.php:720
+#: includes/class.cooked-shortcodes.php:723
#: includes/class.cooked-taxonomies.php:39
msgid "Category"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1146
+#: includes/class.cooked-recipe-meta.php:1189
msgid "Print Mode"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1147
+#: includes/class.cooked-recipe-meta.php:1190
msgid "Full-Screen Mode"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1167
+#: includes/class.cooked-recipe-meta.php:1210
msgid "This will display the list of ingredients, added via the \"Ingredients\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1173
+#: includes/class.cooked-recipe-meta.php:1216
msgid "This will allow you to hide or show the checkboxes:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1183
+#: includes/class.cooked-recipe-meta.php:1226
msgid "Show checkboxes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1184
+#: includes/class.cooked-recipe-meta.php:1227
msgid "Hide checkboxes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1198
+#: includes/class.cooked-recipe-meta.php:1241
msgid "This will display the list of directions, added via the \"Directions\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1204
+#: includes/class.cooked-recipe-meta.php:1247
msgid "This will allow you to hide or show the numbers:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1214
+#: includes/class.cooked-recipe-meta.php:1257
msgid "Show numbers"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1215
+#: includes/class.cooked-recipe-meta.php:1258
msgid "Hide numbers"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1228
+#: includes/class.cooked-recipe-meta.php:1271
msgid "Featured Image"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1229
+#: includes/class.cooked-recipe-meta.php:1272
msgid "This will display the featured image, if one is set."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1239
-#: includes/class.cooked-recipe-meta.php:1263
-#: includes/class.cooked-recipe-meta.php:1368
+#: includes/class.cooked-recipe-meta.php:1282
+#: includes/class.cooked-recipe-meta.php:1306
+#: includes/class.cooked-recipe-meta.php:1411
msgid "None"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1252
+#: includes/class.cooked-recipe-meta.php:1295
msgid "Nutrition Label"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1253
+#: includes/class.cooked-recipe-meta.php:1296
msgid "This will display the Nutrition Facts label, if data is present."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1279
+#: includes/class.cooked-recipe-meta.php:1322
msgid "This will display the gallery, if one is set or created from the \"Gallery\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1287
+#: includes/class.cooked-recipe-meta.php:1330
msgid "Set the width of the gallery."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1294
+#: includes/class.cooked-recipe-meta.php:1337
msgid "Set the image size ratio."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1304
+#: includes/class.cooked-recipe-meta.php:1347
msgid "Set the navigation style."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1311
+#: includes/class.cooked-recipe-meta.php:1354
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:1326
+#: includes/class.cooked-recipe-meta.php:1369
#, 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:1331
+#: includes/class.cooked-recipe-meta.php:1374
#, 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:1336
+#: includes/class.cooked-recipe-meta.php:1379
#, 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:1341
+#: includes/class.cooked-recipe-meta.php:1384
#, php-format
msgid "\"%1$s\" or \"%2$s\""
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1358
+#: includes/class.cooked-recipe-meta.php:1401
msgid "This will display the excerpt, if one is available from the \"Layout & Content\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1382
+#: includes/class.cooked-recipe-meta.php:1425
msgid "This will display the notes, if one is available from the \"Layout & Content\" tab."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1388
+#: includes/class.cooked-recipe-meta.php:1431
msgid "This will allow you to hide or show the header for the notes section:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1398
+#: includes/class.cooked-recipe-meta.php:1441
msgid "Show header"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1399
+#: includes/class.cooked-recipe-meta.php:1442
msgid "Hide header"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1413
+#: includes/class.cooked-recipe-meta.php:1456
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:1422
+#: includes/class.cooked-recipe-meta.php:1465
#, php-format
msgid "\"%1$s\", \"%2$s\" and \"%3$s\""
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1424
+#: includes/class.cooked-recipe-meta.php:1467
msgid "Use just one or a combination of all three to set the timer length"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1431
+#: includes/class.cooked-recipe-meta.php:1474
msgid "Add a short description for this timer, if applicable."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1443
+#: includes/class.cooked-recipe-meta.php:1486
msgid "Time in seconds"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1444
+#: includes/class.cooked-recipe-meta.php:1487
msgid "Time in minutes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1445
+#: includes/class.cooked-recipe-meta.php:1488
msgid "Time in hours"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1446
+#: includes/class.cooked-recipe-meta.php:1489
msgid "Timer Description"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1459
+#: includes/class.cooked-recipe-meta.php:1502
msgid "Next & Previous Recipe Navigation"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1460
+#: includes/class.cooked-recipe-meta.php:1503
msgid "This will display navigation links to the next and previous recipes."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1464
+#: includes/class.cooked-recipe-meta.php:1507
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:1469
+#: includes/class.cooked-recipe-meta.php:1512
msgid "Usage"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1471
+#: includes/class.cooked-recipe-meta.php:1514
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:1484
+#: includes/class.cooked-recipe-meta.php:1527
#: includes/class.cooked-related-recipes.php:34
msgid "Related Recipes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1485
+#: includes/class.cooked-recipe-meta.php:1528
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:1493
+#: includes/class.cooked-recipe-meta.php:1536
msgid "Specify a recipe ID. If not provided, uses the current recipe."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1500
+#: includes/class.cooked-recipe-meta.php:1543
msgid "Set the heading text for the related recipes section."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1510
+#: includes/class.cooked-recipe-meta.php:1553
msgid "Number of recipes to display (default: 4)."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1517
+#: includes/class.cooked-recipe-meta.php:1560
msgid "Number of columns in the grid (default: 2)."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1527
+#: includes/class.cooked-recipe-meta.php:1570
msgid "Hide recipe card images."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1534
+#: includes/class.cooked-recipe-meta.php:1577
msgid "Hide recipe card excerpts."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1544
+#: includes/class.cooked-recipe-meta.php:1587
msgid "Hide recipe card authors."
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1551
+#: includes/class.cooked-recipe-meta.php:1594
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:1558
+#: includes/class.cooked-recipe-meta.php:1601
msgid "Matching options:"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1559
+#: includes/class.cooked-recipe-meta.php:1602
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:1566
+#: includes/class.cooked-recipe-meta.php:1609
msgid "Recipe ID"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1567
-msgid "Section heading"
-msgstr ""
-
-#: includes/class.cooked-recipe-meta.php:1568
+#: includes/class.cooked-recipe-meta.php:1611
msgid "Number of recipes"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1569
+#: includes/class.cooked-recipe-meta.php:1612
msgid "Grid columns"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1570
-#: includes/class.cooked-recipe-meta.php:1571
-#: includes/class.cooked-recipe-meta.php:1572
-#: includes/class.cooked-recipe-meta.php:1573
+#: includes/class.cooked-recipe-meta.php:1613
+#: includes/class.cooked-recipe-meta.php:1614
+#: includes/class.cooked-recipe-meta.php:1615
+#: includes/class.cooked-recipe-meta.php:1616
msgid "true/false"
msgstr ""
-#: includes/class.cooked-recipe-meta.php:1575
+#: includes/class.cooked-recipe-meta.php:1618
msgid "Example"
msgstr ""
@@ -1818,7 +1891,7 @@ msgid "Triple (%s Servings)"
msgstr ""
#: includes/class.cooked-recipes.php:865
-#: includes/class.cooked-shortcodes.php:448
+#: includes/class.cooked-shortcodes.php:450
msgid "Yields"
msgstr ""
@@ -2268,45 +2341,45 @@ msgstr ""
msgid "Public recipes are currently disabled. You can change this at the bottom of the %s page."
msgstr ""
-#: includes/class.cooked-shortcodes.php:298
+#: includes/class.cooked-shortcodes.php:300
msgid "(recipe not found or in draft status)"
msgstr ""
-#: includes/class.cooked-shortcodes.php:662
+#: includes/class.cooked-shortcodes.php:664
msgid "Fullscreen"
msgstr ""
-#: includes/class.cooked-shortcodes.php:1114
+#: includes/class.cooked-shortcodes.php:1116
msgid "Invalid recipe ID specified. Please provide a valid numeric recipe ID."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1124
+#: includes/class.cooked-shortcodes.php:1126
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:1131
+#: includes/class.cooked-shortcodes.php:1133
msgid "Recipe not found."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1135
+#: includes/class.cooked-shortcodes.php:1137
#, php-format
msgid "The specified ID (%d) is not a recipe."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1137
+#: includes/class.cooked-shortcodes.php:1139
#, php-format
msgid "No post found with ID %d."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1146
+#: includes/class.cooked-shortcodes.php:1148
msgid "No related recipes found."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1149
+#: includes/class.cooked-shortcodes.php:1151
msgid "This may be because there are no other recipes in the current language with matching attributes."
msgstr ""
-#: includes/class.cooked-shortcodes.php:1151
+#: includes/class.cooked-shortcodes.php:1153
msgid "Try adjusting the matching criteria or ensure you have other published recipes with shared categories, tags, or ingredients."
msgstr ""
diff --git a/package-lock.json b/package-lock.json
index f3e3eda..07f1a42 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "cooked",
- "version": "1.13.0",
+ "version": "1.14.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "cooked",
- "version": "1.13.0",
+ "version": "1.14.0",
"license": "ISC",
"devDependencies": {
"@playwright/test": "^1.48.2",
@@ -101,12 +101,11 @@
}
},
"node_modules/@opentelemetry/api": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
- "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz",
+ "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"engines": {
"node": ">=8.0.0"
}
@@ -130,7 +129,6 @@
"integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"engines": {
"node": ">=14"
},
@@ -144,7 +142,6 @@
"integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@opentelemetry/semantic-conventions": "1.28.0"
},
@@ -171,7 +168,6 @@
"integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@opentelemetry/api-logs": "0.57.2",
"@types/shimmer": "^1.2.0",
@@ -602,7 +598,6 @@
"integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@opentelemetry/core": "1.30.1",
"@opentelemetry/semantic-conventions": "1.28.0"
@@ -630,7 +625,6 @@
"integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@opentelemetry/core": "1.30.1",
"@opentelemetry/resources": "1.30.1",
@@ -654,12 +648,11 @@
}
},
"node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.39.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz",
- "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==",
+ "version": "1.40.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.40.0.tgz",
+ "integrity": "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"engines": {
"node": ">=14"
}
@@ -991,9 +984,9 @@
}
},
"node_modules/@parcel/watcher/node_modules/picomatch": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -1016,14 +1009,13 @@
}
},
"node_modules/@playwright/test": {
- "version": "1.58.2",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz",
- "integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==",
+ "version": "1.59.1",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.59.1.tgz",
+ "integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
- "playwright": "1.58.2"
+ "playwright": "1.59.1"
},
"bin": {
"playwright": "cli.js"
@@ -1230,12 +1222,11 @@
}
},
"node_modules/@types/node": {
- "version": "20.19.33",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.33.tgz",
- "integrity": "sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==",
+ "version": "20.19.39",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.39.tgz",
+ "integrity": "sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"undici-types": "~6.21.0"
}
@@ -1291,9 +1282,9 @@
}
},
"node_modules/@wordpress/e2e-test-utils-playwright": {
- "version": "1.40.0",
- "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-1.40.0.tgz",
- "integrity": "sha512-7EMx/5R0l9mlR4s01I06x8bw7qq30VlU98T/tvYJa+ycFQK3oetkoPyiNfki2Y2SILQGjI3Mu4MSV1NPCa/mEw==",
+ "version": "1.44.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-1.44.0.tgz",
+ "integrity": "sha512-iUKHGH8TjW1s0cpkcHF6y/APOmy4YnwBfzdBNCITK4+4fuSZnTV7vZyzBU3adthGcBSMGQ9w8MTE2AzGLtlG3w==",
"dev": true,
"license": "GPL-2.0-or-later",
"dependencies": {
@@ -1318,7 +1309,6 @@
"integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -1509,9 +1499,9 @@
}
},
"node_modules/axe-core": {
- "version": "4.11.1",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.1.tgz",
- "integrity": "sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==",
+ "version": "4.11.3",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.3.tgz",
+ "integrity": "sha512-zBQouZixDTbo3jMGqHKyePxYxr1e5W8UdTmBQ7sNtaA9M2bE32daxxPLS/jojhKOHxQ7LWwPjfiwf/fhaJWzlg==",
"dev": true,
"license": "MPL-2.0",
"engines": {
@@ -1549,14 +1539,11 @@
}
},
"node_modules/balanced-match": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
- "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": "18 || 20 || >=22"
- }
+ "license": "MIT"
},
"node_modules/bare-events": {
"version": "2.8.2",
@@ -1564,7 +1551,6 @@
"integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"peerDependencies": {
"bare-abort-controller": "*"
},
@@ -1575,12 +1561,11 @@
}
},
"node_modules/bare-fs": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.4.tgz",
- "integrity": "sha512-POK4oplfA7P7gqvetNmCs4CNtm9fNsx+IAh7jH7GgU0OJdge2rso0R20TNWVq6VoWcCvsTdlNDaleLHGaKx8CA==",
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.1.tgz",
+ "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==",
"dev": true,
"license": "Apache-2.0",
- "optional": true,
"dependencies": {
"bare-events": "^2.5.4",
"bare-path": "^3.0.0",
@@ -1601,12 +1586,11 @@
}
},
"node_modules/bare-os": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz",
- "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==",
+ "version": "3.8.7",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.7.tgz",
+ "integrity": "sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==",
"dev": true,
"license": "Apache-2.0",
- "optional": true,
"engines": {
"bare": ">=1.14.0"
}
@@ -1617,27 +1601,29 @@
"integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
"dev": true,
"license": "Apache-2.0",
- "optional": true,
"dependencies": {
"bare-os": "^3.0.1"
}
},
"node_modules/bare-stream": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.8.0.tgz",
- "integrity": "sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA==",
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.0.tgz",
+ "integrity": "sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==",
"dev": true,
"license": "Apache-2.0",
- "optional": true,
"dependencies": {
- "streamx": "^2.21.0",
+ "streamx": "^2.25.0",
"teex": "^1.0.1"
},
"peerDependencies": {
+ "bare-abort-controller": "*",
"bare-buffer": "*",
"bare-events": "*"
},
"peerDependenciesMeta": {
+ "bare-abort-controller": {
+ "optional": true
+ },
"bare-buffer": {
"optional": true
},
@@ -1647,12 +1633,11 @@
}
},
"node_modules/bare-url": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz",
- "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.1.tgz",
+ "integrity": "sha512-fZapLWNB25gS+etK27NV9KgBNXgo2yeYHuj+OyPblQd6GYAE3JVy6aKxszMV5jhGGFwraXQKA5fldvf3lMyEqw==",
"dev": true,
"license": "Apache-2.0",
- "optional": true,
"dependencies": {
"bare-path": "^3.0.0"
}
@@ -1679,9 +1664,9 @@
"license": "MIT"
},
"node_modules/basic-ftp": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz",
- "integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==",
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.0.tgz",
+ "integrity": "sha512-5K9eNNn7ywHPsYnFwjKgYH8Hf8B5emh7JKcPaVjjrMJFQQwGpwowEnZNEtHs7DfR7hCZsmaK3VA4HUK0YarT+w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1714,16 +1699,13 @@
}
},
"node_modules/brace-expansion": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz",
- "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+ "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "balanced-match": "^4.0.2"
- },
- "engines": {
- "node": "18 || 20 || >=22"
+ "balanced-match": "^1.0.0"
}
},
"node_modules/braces": {
@@ -2107,8 +2089,7 @@
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1507524.tgz",
"integrity": "sha512-OjaNE7qpk6GRTXtqQjAE5bGx6+c4F1zZH0YXtpZQLM92HNXx4zMAaqlKhP4T52DosG6hDW8gPMNhGOF8xbwk/w==",
"dev": true,
- "license": "BSD-3-Clause",
- "peer": true
+ "license": "BSD-3-Clause"
},
"node_modules/dot-case": {
"version": "3.0.4",
@@ -2182,6 +2163,16 @@
"node": ">=8.6"
}
},
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/escalade": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
@@ -2897,9 +2888,9 @@
}
},
"node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz",
+ "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3013,9 +3004,9 @@
"license": "MIT"
},
"node_modules/immutable": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz",
- "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz",
+ "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==",
"dev": true,
"license": "MIT"
},
@@ -3470,9 +3461,9 @@
}
},
"node_modules/lodash-es": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz",
- "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==",
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz",
+ "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==",
"dev": true,
"license": "MIT"
},
@@ -3579,13 +3570,13 @@
}
},
"node_modules/minimatch": {
- "version": "9.0.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.6.tgz",
- "integrity": "sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==",
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"dev": true,
"license": "ISC",
"dependencies": {
- "brace-expansion": "^5.0.2"
+ "brace-expansion": "^2.0.2"
},
"engines": {
"node": ">=16 || 14 >=14.17"
@@ -3626,9 +3617,9 @@
}
},
"node_modules/netmask": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
- "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.1.1.tgz",
+ "integrity": "sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3880,9 +3871,9 @@
}
},
"node_modules/pg-protocol": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.11.0.tgz",
- "integrity": "sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==",
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz",
+ "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==",
"dev": true,
"license": "MIT"
},
@@ -3911,9 +3902,9 @@
"license": "ISC"
},
"node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3924,13 +3915,13 @@
}
},
"node_modules/playwright": {
- "version": "1.58.2",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz",
- "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==",
+ "version": "1.59.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz",
+ "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.58.2"
+ "playwright-core": "1.59.1"
},
"bin": {
"playwright": "cli.js"
@@ -3943,9 +3934,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.58.2",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz",
- "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==",
+ "version": "1.59.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz",
+ "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -4087,9 +4078,9 @@
"license": "MIT"
},
"node_modules/pump": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
- "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz",
+ "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4098,17 +4089,17 @@
}
},
"node_modules/puppeteer-core": {
- "version": "24.37.5",
- "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.5.tgz",
- "integrity": "sha512-ybL7iE78YPN4T6J+sPLO7r0lSByp/0NN6PvfBEql219cOnttoTFzCWKiBOjstXSqi/OKpwae623DWAsL7cn2MQ==",
+ "version": "24.41.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.41.0.tgz",
+ "integrity": "sha512-rLIUri7E/NQ3APSEYCCozaSJx0u8Tu9wxO6BJwnvXmIgILSK3L0TombaVh3izp1njAGrO6H2ru0hcIrLF+gWLw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@puppeteer/browsers": "2.13.0",
"chromium-bidi": "14.0.0",
"debug": "^4.4.3",
- "devtools-protocol": "0.0.1566079",
- "typed-query-selector": "^2.12.0",
+ "devtools-protocol": "0.0.1595872",
+ "typed-query-selector": "^2.12.1",
"webdriver-bidi-protocol": "0.4.1",
"ws": "^8.19.0"
},
@@ -4117,16 +4108,16 @@
}
},
"node_modules/puppeteer-core/node_modules/devtools-protocol": {
- "version": "0.0.1566079",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1566079.tgz",
- "integrity": "sha512-MJfAEA1UfVhSs7fbSQOG4czavUp1ajfg6prlAN0+cmfa2zNjaIbvq8VneP7do1WAQQIvgNJWSMeP6UyI90gIlQ==",
+ "version": "0.0.1595872",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1595872.tgz",
+ "integrity": "sha512-kRfgp8vWVjBu/fbYCiVFiOqsCk3CrMKEo3WbgGT2NXK2dG7vawWPBljixajVgGK9II8rDO9G0oD0zLt3I1daRg==",
"dev": true,
"license": "BSD-3-Clause"
},
"node_modules/puppeteer-core/node_modules/ws": {
- "version": "8.19.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz",
- "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==",
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
+ "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4239,12 +4230,13 @@
}
},
"node_modules/resolve": {
- "version": "1.22.11",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
- "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
+ "version": "1.22.12",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz",
+ "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==",
"dev": true,
"license": "MIT",
"dependencies": {
+ "es-errors": "^1.3.0",
"is-core-module": "^2.16.1",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
@@ -4336,14 +4328,14 @@
"license": "MIT"
},
"node_modules/sass": {
- "version": "1.97.3",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz",
- "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==",
+ "version": "1.99.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.99.0.tgz",
+ "integrity": "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"chokidar": "^4.0.0",
- "immutable": "^5.0.2",
+ "immutable": "^5.1.5",
"source-map-js": ">=0.6.2 <2.0.0"
},
"bin": {
@@ -4546,9 +4538,9 @@
"license": "MIT"
},
"node_modules/streamx": {
- "version": "2.23.0",
- "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz",
- "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==",
+ "version": "2.25.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz",
+ "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4660,9 +4652,9 @@
}
},
"node_modules/tar-fs": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz",
- "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.2.tgz",
+ "integrity": "sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4675,13 +4667,14 @@
}
},
"node_modules/tar-stream": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
- "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz",
+ "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"b4a": "^1.6.4",
+ "bare-fs": "^4.5.5",
"fast-fifo": "^1.2.0",
"streamx": "^2.15.0"
}
@@ -4724,20 +4717,20 @@
}
},
"node_modules/tldts-core": {
- "version": "7.0.23",
- "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.23.tgz",
- "integrity": "sha512-0g9vrtDQLrNIiCj22HSe9d4mLVG3g5ph5DZ8zCKBr4OtrspmNB6ss7hVyzArAeE88ceZocIEGkyW1Ime7fxPtQ==",
+ "version": "7.0.28",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.28.tgz",
+ "integrity": "sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==",
"dev": true,
"license": "MIT"
},
"node_modules/tldts-icann": {
- "version": "7.0.23",
- "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-7.0.23.tgz",
- "integrity": "sha512-LMc6V1KOHFjKDU8wyDsIEJdV8o2bpc2OaYw2NxncJB2oZxJMPpiNVAbiu1HnqsUy81fkK1QWwFztVqY81hUFEg==",
+ "version": "7.0.28",
+ "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-7.0.28.tgz",
+ "integrity": "sha512-brkN3yIgYTzBpSxB71XYBwUMDgutmKmA+6TWzgGD/EPcvCc6LHMTRaYj9ik1u3BxhSW53qIK/7cgjA2rF7BgbA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "tldts-core": "^7.0.23"
+ "tldts-core": "^7.0.28"
}
},
"node_modules/to-regex-range": {
@@ -4787,9 +4780,9 @@
}
},
"node_modules/typed-query-selector": {
- "version": "2.12.0",
- "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz",
- "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==",
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.1.tgz",
+ "integrity": "sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==",
"dev": true,
"license": "MIT"
},
diff --git a/package.json b/package.json
index c8bd75c..589fe64 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "cooked",
- "version": "1.13.0",
+ "version": "1.14.0",
"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",
"scripts": {
diff --git a/readme.txt b/readme.txt
index 8ddc143..4f35878 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: 4.7
-Tested up to: 6.9.1
-Stable tag: 1.13.0
+Requires at least: 5.0.0
+Tested up to: 7.0
+Stable tag: 1.14.0
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -80,12 +80,18 @@ Please report security bugs found in the source code of the Cooked plugin throug
== Upgrade Notice ==
-Version 1.13.0 includes CSV import functionality, changes to the [cooked-related-recipes] shortcode, and other minor improvements and bug fixes.
+Version 1.14.0 adds bulk ingredient and direction entry, validates shortcode style attributes, extends migration and imports with ingredient substitution fields, and speeds up “Apply to All” template updates on large sites.
== Changelog ==
+= 1.14.0 =
+* **NEW:** Added a new "Add Bulk Ingredients" and "Add Bulk Directions" buttons to the recipe builder.
+* **FIX:** Validated style attribute for the [cooked-recipe-card] and [cooked-categories] shortcodes.
+* **TWEAK:** Added Ingredient Substitution fields to the migration and imports features.
+* **TWEAK:** Updated the "Apply to All" template update feature to fix potential performance issues with large recipe collections.
+
= 1.13.0 =
-* **NEW:** Added CSV import functionality for bulk importing recipes from CSV files. Supports all recipe fields including ingredients with substitutions, directions, nutrition data, categories, and tags.
+* **NEW:** Added CSV import functionality for bulk importing recipes from CSV files. Supports all recipe fields including ingredients with substitutions, directions, nutrition data, categories, and tags (thanks to @mgiannopoulos24).
* **TWEAK:** Simplified the way the [cooked-related-recipes] shortcode works.
* **FIX:** Fixed a bug with the recipe directions and ingredients not being sortable in mobile devices.
* **FIX:** Fixed a bug when toggling full screen view in recipe fields that use the WP Editor.
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index 90e264a..98ed554 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -1,8 +1,8 @@
array(
'name' => 'xjsv/cooked',
- 'pretty_version' => '1.13.0',
- 'version' => '1.13.0.0',
+ 'pretty_version' => '1.14.0',
+ 'version' => '1.14.0.0',
'reference' => null,
'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../',
@@ -20,8 +20,8 @@
'dev_requirement' => false,
),
'xjsv/cooked' => array(
- 'pretty_version' => '1.13.0',
- 'version' => '1.13.0.0',
+ 'pretty_version' => '1.14.0',
+ 'version' => '1.14.0.0',
'reference' => null,
'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../',