{"id":154201,"date":"2025-08-27T11:42:13","date_gmt":"2025-08-27T10:42:13","guid":{"rendered":"https:\/\/sunsweeteurdev.wpenginepowered.com\/recipes\/r065-fruit-cake-with-dried-prunes-2\/"},"modified":"2025-09-15T14:35:57","modified_gmt":"2025-09-15T13:35:57","slug":"r065-hedelmakakku-kuivatuilla-luumuilla","status":"publish","type":"recipes","link":"https:\/\/sunsweet.eu\/fi\/luumu-reseptit\/r065-hedelmakakku-kuivatuilla-luumuilla\/","title":{"rendered":"Hedelm\u00e4kakku kuivatuilla luumuilla"},"content":{"rendered":"<svg aria-hidden=\"true\" style=\"position: absolute;width: 0;height: 0;overflow: hidden\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<symbol viewbox=\"9 9 46 42\" id=\"wpt-star-full\">\n\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\" \/>\n<\/symbol>\n<\/defs>\n<\/svg>\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card\" href=\"https:\/\/sunsweet.eu\/fi\/luumu-reseptit\/r065-hedelmakakku-kuivatuilla-luumuilla\/print\/939588\/\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-939588-jump-target\" style=\"display:block;padding-top:2px;margin-top:-2px;\"><\/span><div id=\"tasty-recipes-939588\" data-tr-id=\"939588\" class=\"tasty-recipes tasty-recipes-939588 tasty-recipes-display tasty-recipes-has-image\" data-tasty-recipes-customization=\"primary-color.background-color secondary-color.border-color\">\n\n\n<div class=\"tasty-recipes-header\">\n\t\n\t<h2 class=\"tasty-recipes-title\" data-tasty-recipes-customization=\"h2-color.color h2-transform.text-transform\">Hedelm\u00e4kakku kuivatuilla luumuilla<\/h2>\n\t<div class=\"tasty-recipes-image-button-container\">\n\t\t\t\t\t<div class=\"tasty-recipes-image\">\n\t\t\t\t<img decoding=\"async\" width=\"113\" height=\"150\" src=\"https:\/\/sunsweet.eu\/wp-content\/uploads\/2025\/08\/R065-scaled-1.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" data-pin-nopin=\"true\" \/>\t\t\t<\/div>\n\t\t\t\t<div class=\"tasty-recipes-buttons\">\n\t\t\t\t\t\t<div class=\"tasty-recipes-button-wrap\">\n\t\t\t\t\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print\" href=\"https:\/\/sunsweet.eu\/fi\/luumu-reseptit\/r065-hedelmakakku-kuivatuilla-luumuilla\/print\/939588\/\" target=\"_blank\" data-tasty-recipes-customization=\"\">\n\t\t\t<svg viewBox=\"0 0 24 24\" class=\"svg-print\" aria-hidden=\"true\"><use xlink:href=\"#tasty-recipes-icon-print\"><\/use><\/svg>\n\t\tTulosta resepti<\/a>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t<\/div>\n\t\t\t<div class=\"tasty-recipes-rating\">\n\t\t\t\t\t\t\t\t\t\t<p><span data-tasty-recipes-customization=\"detail-label-color.color\" class=\"rating-label\"><\/span><\/p>\n\t\t\t\t\t<\/div>\n\t\n\t\t\t<div class=\"tasty-recipes-description\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<p>Ylellinen, juhlavasti maustettu hedelm\u00e4kakku \u2013 tee perheelle tai pakkaa joululahjaksi.<\/p>\n\t\t<\/div>\n\t\n\t\t\t<div class=\"tasty-recipes-details\">\n\t\t\t<ul>\n\t\t\t\t\t\t\t\t\t<li class=\"prep-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Valmisteluaika:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-prep-time\">70<\/span><\/li>\n\t\t\t\t\t\t\t\t\t<li class=\"total-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Total Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-total-time\">1 hour 10 minutes<\/span><\/li>\n\t\t\t\t\t\t\t\t\t<li class=\"yield\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Annoksia:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-yield\"><span data-amount=\"2\">2<\/span>0 <span class=\"tasty-recipes-yield-scale\"><span data-amount=\"1\">1<\/span>x<\/span><\/span><\/li>\n\t\t\t\t\t\t\t\t\t<li class=\"method\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Method:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-method\">import-fi-post-live-01-dev<\/span><\/li>\n\t\t\t\t\t\t\t\t\t<li class=\"cuisine\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Cuisine:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-cuisine\">R065<\/span><\/li>\n\t\t\t\t\t\t\t<\/ul>\n\t\t<\/div>\n\t<\/div>\n\n<div class=\"tasty-recipes-content tasty-recipes-modern-compact-content\">\n\t\t\t<div class=\"tasty-recipe-ingredients\" data-tasty-recipes-customization=\"secondary-color.border-color\">\n\t\t\t<div class=\"tasty-recipes-ingredients-clipboard-container\" data-tasty-recipes-customization=\"secondary-color.background-color\">\n\t\t\t\t<h3 data-tasty-recipes-customization=\"secondary-color.background-color h3-color.color h3-transform.text-transform\">Ainesosat<\/h3>\n\t\t\t\t\t\t\t\t\t<button aria-label=\"Copy ingredients to clipboard\" class=\"tasty-recipes-copy-button\" data-text=\"Ainesosat\" data-success=\"Copied!\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-labelledby=\"copyIconTitle copyIconDesc\">\n\t<title id=\"copyIconTitle\">Copy to clipboard<\/title>\n\t<desc id=\"copyIconDesc\">Copy to clipboard<\/desc>\n  \t<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 7v8a2 2 0 002 2h6M8 7V5a2 2 0 012-2h4.586a1 1 0 01.707.293l4.414 4.414a1 1 0 01.293.707V15a2 2 0 01-2 2h-2M8 7H6a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2v-2\"\/>\n<\/svg>\n<\/button>\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"tasty-recipes-units-scale-container\">\n\t\t\t\t\t\t\t\t\t<span class=\"tasty-recipes-convert-container\">\n\t\t\t\t\t\t<span class=\"tasty-recipes-convert-label\">Yksik\u00f6t <\/span>\n\t\t\t\t\t\t<button class=\"tasty-recipes-convert-button tasty-recipes-convert-button-active\" data-unit-type=\"metric\" type=\"button\">M<\/button><button class=\"tasty-recipes-convert-button\" data-unit-type=\"usc\" type=\"button\">US<\/button>\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"tasty-recipes-scale-container\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"tasty-recipes-scale-label\">Skaalaa<\/span>\n\t\t\t\t\t\t<button class=\"tasty-recipes-scale-button tasty-recipes-scale-button-active\" data-amount=\"1\" type=\"button\">1x<\/button><button class=\"tasty-recipes-scale-button\" data-amount=\"2\" type=\"button\">2x<\/button><button class=\"tasty-recipes-scale-button\" data-amount=\"3\" type=\"button\">3x<\/button>\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"tasty-recipes-ingredients-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t\t<p>Taikina:<br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938a8\" id=\"ingredient_checkbox_6a1733bc938a8\" aria-label=\"250 g SUNSWEET-luumuja\"><label for=\"ingredient_checkbox_6a1733bc938a8\"><\/label><\/span><span class=\"nutrifox-quantity\" data-nf-original=\"metric\" data-nf-metric=\"250\" data-nf-usc=\"1.04\" data-unit=\"g\" data-nf-metric-unit=\"g\" data-nf-usc-unit=\"cup\" data-nf-food-id=\"4188\" data-nf-food-description=\"Beverages, almond milk, unsweetened, shelf stable\" data-amount=\"250\">250<\/span> <span class=\"nutrifox-unit\" data-nf-original=\"metric\" data-nf-metric=\"g\" data-nf-usc=\"c\" data-nf-food-id=\"4188\" data-nf-food-description=\"Beverages, almond milk, unsweetened, shelf stable\">g<\/span> SUNSWEET-luumuja<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938b1\" id=\"ingredient_checkbox_6a1733bc938b1\" aria-label=\"4 rkl vett\u00e4 (tai rommia)\"><label for=\"ingredient_checkbox_6a1733bc938b1\"><\/label><\/span><span data-amount=\"4\">4<\/span> rkl vett\u00e4 (tai rommia)<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938b8\" id=\"ingredient_checkbox_6a1733bc938b8\" aria-label=\"500 g vehn\u00e4jauhoja\"><label for=\"ingredient_checkbox_6a1733bc938b8\"><\/label><\/span><span class=\"nutrifox-quantity\" data-amount=\"500\">500<\/span> <span class=\"nutrifox-unit\">g<\/span> vehn\u00e4jauhoja<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938bc\" id=\"ingredient_checkbox_6a1733bc938bc\" aria-label=\"2 pient\u00e4 pussia kuivahiivaa\"><label for=\"ingredient_checkbox_6a1733bc938bc\"><\/label><\/span><span data-amount=\"2\">2<\/span> pient\u00e4 pussia kuivahiivaa<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938c2\" id=\"ingredient_checkbox_6a1733bc938c2\" aria-label=\"100 g pehme\u00e4\u00e4 voita\"><label for=\"ingredient_checkbox_6a1733bc938c2\"><\/label><\/span><span class=\"nutrifox-quantity\" data-amount=\"100\">100<\/span> <span class=\"nutrifox-unit\">g<\/span> pehme\u00e4\u00e4 voita<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938c6\" id=\"ingredient_checkbox_6a1733bc938c6\" aria-label=\"2 keskikokoista kananmunaa\"><label for=\"ingredient_checkbox_6a1733bc938c6\"><\/label><\/span><span data-amount=\"2\">2<\/span> keskikokoista kananmunaa<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938d0\" id=\"ingredient_checkbox_6a1733bc938d0\" aria-label=\"80 g sokeria\"><label for=\"ingredient_checkbox_6a1733bc938d0\"><\/label><\/span><span class=\"nutrifox-quantity\" data-nf-original=\"metric\" data-nf-metric=\"80\" data-nf-usc=\"1.404\" data-unit=\"g\" data-nf-metric-unit=\"g\" data-nf-usc-unit=\"serving\" data-nf-food-id=\"5975\" data-nf-food-description=\"GEORGE WESTON BAKERIES, Thomas English Muffins\" data-amount=\"80\">80<\/span> <span class=\"nutrifox-unit\" data-nf-original=\"metric\" data-nf-metric=\"g\" data-nf-usc=\"serving\" data-nf-food-id=\"5975\" data-nf-food-description=\"GEORGE WESTON BAKERIES, Thomas English Muffins\">g<\/span> sokeria<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938d5\" id=\"ingredient_checkbox_6a1733bc938d5\" aria-label=\"2 rkl hunajaa\"><label for=\"ingredient_checkbox_6a1733bc938d5\"><\/label><\/span><span data-amount=\"2\">2<\/span> rkl hunajaa<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938d9\" id=\"ingredient_checkbox_6a1733bc938d9\" aria-label=\"4 tl piparkakkumaustetta (ginger spice mix)\"><label for=\"ingredient_checkbox_6a1733bc938d9\"><\/label><\/span><span data-amount=\"4\">4<\/span> tl piparkakkumaustetta (ginger spice mix)<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938e1\" id=\"ingredient_checkbox_6a1733bc938e1\" aria-label=\"125 ml maitoa (huoneenl\u00e4mp\u00f6ist\u00e4)\"><label for=\"ingredient_checkbox_6a1733bc938e1\"><\/label><\/span><span class=\"nutrifox-quantity\" data-nf-original=\"metric\" data-nf-metric=\"125\" data-nf-usc=\"1.79\" data-unit=\"ml\" data-nf-metric-unit=\"ml\" data-nf-usc-unit=\"cup\" data-nf-food-id=\"3601\" data-nf-food-description=\"Mushrooms, maitake, raw\" data-amount=\"125\">125<\/span> <span class=\"nutrifox-unit\" data-nf-original=\"metric\" data-nf-metric=\"ml\" data-nf-usc=\"c\" data-nf-food-id=\"3601\" data-nf-food-description=\"Mushrooms, maitake, raw\">ml<\/span> maitoa (huoneenl\u00e4mp\u00f6ist\u00e4)<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938e7\" id=\"ingredient_checkbox_6a1733bc938e7\" aria-label=\"50 g saksanp\u00e4hkin\u00f6it\u00e4\"><label for=\"ingredient_checkbox_6a1733bc938e7\"><\/label><\/span><span class=\"nutrifox-quantity\" data-amount=\"50\">50<\/span> <span class=\"nutrifox-unit\">g<\/span> saksanp\u00e4hkin\u00f6it\u00e4<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938ec\" id=\"ingredient_checkbox_6a1733bc938ec\" aria-label=\"80 g kuivattuja karpaloita\"><label for=\"ingredient_checkbox_6a1733bc938ec\"><\/label><\/span><span class=\"nutrifox-quantity\" data-amount=\"80\">80<\/span> <span class=\"nutrifox-unit\">g<\/span> kuivattuja karpaloita<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a1733bc938f0\" id=\"ingredient_checkbox_6a1733bc938f0\" aria-label=\"2 rkl vehn\u00e4jauhoja\"><label for=\"ingredient_checkbox_6a1733bc938f0\"><\/label><\/span><span data-amount=\"2\">2<\/span> rkl vehn\u00e4jauhoja<\/span><\/p>\n<!--INSIDE_INGREDIENTS-->\t\t\t<\/div>\n\t\t\t<div class=\"tasty-recipes-cook-mode\">\n\t<div class=\"tasty-recipes-cook-mode__container\">\n\t\t<label class=\"tasty-recipes-cook-mode__switch\">\n\t\t\t<input type=\"checkbox\" id=\"tasty_recipes_6a1733bc9450c_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__switch-slider tasty-recipes-cook-mode__switch-round\"\n\t\t\t\tdata-tasty-recipes-customization=\"button-color.background button-text-color.color\"><\/span>\n\t\t<\/label>\n\t\t<label for=\"tasty_recipes_6a1733bc9450c_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__label\">Kokkaustila<\/span>\n\t\t\t<span class=\"tasty-recipes-cook-mode__helper\">\n\t\t\t\tPrevent your screen from going dark\t\t\t<\/span>\n\t\t<\/label>\n\t<\/div>\n<\/div>\n\t\t<\/div>\n\t\n\t\t\t<div class=\"tasty-recipe-instructions\" data-tasty-recipes-customization=\"secondary-color.border-color\">\n\t\t\t<h3 data-tasty-recipes-customization=\"secondary-color.background-color h3-color.color h3-transform.text-transform\" \t\t\t\tdata-copyable=\"true\"\n\t\t\t\t\t\t\t>\n\t\t\t\tValmistus\t\t\t<\/h3>\n\t\t\t\t\t\t<div class=\"tasty-recipes-instructions-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t\t<ol>\n<li id=\"instruction-step-1\">Kuumenna uuni 160 \u00b0C:een. Soseuta luumut veden kanssa.<\/li>\n<li id=\"instruction-step-2\">Sekoita jauhot ja hiiva. Lis\u00e4\u00e4 voi, munat, sokeri, hunaja, mausteseos, maito ja luumusose. Sekoita tasaiseksi (esim. s\u00e4hk\u00f6vatkaimella\/taikinakoukulla). Peit\u00e4 ja kohota l\u00e4mpim\u00e4ss\u00e4 noin 45 minuuttia.<\/li>\n<li id=\"instruction-step-3\">Rouhi saksanp\u00e4hkin\u00e4t ja sekoita ne luumuihin, karpaloihin ja 2 rkl:aan jauhoja.<\/li>\n<li id=\"instruction-step-4\">Kaada taikina jauhotetulle alustalle, painele litte\u00e4ksi ja levit\u00e4 hedelm\u00e4seos p\u00e4\u00e4lle. Taita ja vaivaa kevyesti, kunnes hedelm\u00e4t ovat taikinan sis\u00e4ll\u00e4. Muotoile pitkulaiseksi ja siirr\u00e4 hyvin voideltuun, noin 30 cm pitk\u00e4\u00e4n vuokaan. Kohota viel\u00e4 45 minuuttia.<\/li>\n<li id=\"instruction-step-5\">Paista hedelm\u00e4kakkua noin 45\u201350 minuuttia.<\/li>\n<\/ol>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\n\n\t<div class=\"tasty-recipes-notes\" data-tasty-recipes-customization=\"secondary-color.border-color\">\n\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Notes<\/h3>\n\t\t<div class=\"tasty-recipes-notes-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<p>MK2<\/p>\n\t\t<\/div>\n\t<\/div>\n\n\n\n\t<div class=\"tasty-recipes-nutrition\" data-tasty-recipes-customization=\"secondary-color.border-color\">\n\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Nutrition<\/h3>\n\t\t<ul>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">kalorit:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-calories\">213<\/span><\/li>\n\t\t\t\t\t<\/ul>\n\t<\/div>\n\n\n\n\n\n\n<script>\nwindow.trCommon={\"minRating\":6,\"ajaxurl\":\"https:\\\/\\\/sunsweet.eu\\\/wp-admin\\\/admin-ajax.php\",\"ratingNonce\":\"\",\"postId\":154201};\nwindow.TastyRecipes = window.TastyRecipes || {};\n\nwindow.TastyRecipes.smoothScroll = {\ninit() {\ndocument.addEventListener( 'click', ( e ) => {\nlet anchor = e.target;\nif ( anchor.tagName !== 'A' ) {\nanchor = anchor.closest( 'a.tasty-recipes-scrollto' );\n}\n\nif ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {\nreturn;\n}\n\nconst elementHref = anchor.getAttribute( 'href' );\nif ( ! elementHref ) {\nreturn;\n}\n\ne.preventDefault();\nthis.goToSelector( elementHref );\n});\n},\ngoToSelector( selector ) {\nconst element = document.querySelector( selector );\nif ( ! element ) {\nreturn;\n}\nelement.scrollIntoView( { behavior: 'smooth' } );\n}\n};\n\ndocument.addEventListener(\n'DOMContentLoaded',\n() => window.TastyRecipes.smoothScroll.init()\n);\n\n(function(){\n\n\nvar bothEquals = function( d1, d2, D ) {\nvar ret = 0;\nif (d1<=D) {\nret++;\n}\nif (d2<=D) {\nret++;\n}\nreturn ret === 2;\n};\n\nvar frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1){while(bothEquals(d1,d2,D)){var m=(n1+n2)\/(d1+d2);if(x===m){if(d1+d2<=D){d1+=d2;n1+=n2;d2=D+1}else if(d1>d2){d2=D+1;}else {d1=D+1;}break}else if(x<m){n2=n1+n2;d2=d1+d2}else{n1=n1+n2;d1=d1+d2}}}if(d1>D){d1=d2;n1=n2}if(!mixed){return[0,n1,d1];}var q=Math.floor(n1\/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-A<5e-8){break;}B=1\/(B-A);P_2=P_1;P_1=P;Q_2=Q_1;Q_1=Q}if(Q>D){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed){return[0,sgn*P,Q];}var q=Math.floor(sgn*P\/Q);return[q,sgn*P-q*Q,Q]};\n\n\nwindow.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(\"%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D\"));\n\nwindow.tastyRecipesFormatAmount = function(amount, el) {\nif ( parseFloat( amount ) === parseInt( amount ) ) {\nreturn amount;\n}\nvar roundType = 'frac';\nif (typeof el.dataset.amountShouldRound !== 'undefined') {\nif ('false' !== el.dataset.amountShouldRound) {\nif ( 'number' === el.dataset.amountShouldRound ) {\nroundType = 'number';\n} else if ('frac' === el.dataset.amountShouldRound) {\nroundType = 'frac';\n} else if ('vulgar' === el.dataset.amountShouldRound) {\nroundType = 'vulgar';\n} else {\nroundType = 'integer';\n}\n}\n}\nif ('number' === roundType) {\namount = Number.parseFloat(amount).toPrecision(2);\n} else if ('integer' === roundType) {\namount = Math.round(amount);\n} else if ('frac' === roundType || 'vulgar' === roundType) {\nvar denom = 8;\nif (typeof el.dataset.unit !== 'undefined') {\nvar unit = el.dataset.unit;\nif (['cups','cup','c'].includes(unit)) {\ndenom = 4;\nif (0.125 === amount) {\ndenom = 8;\n}\nif (\"0.1667\" === Number.parseFloat( amount ).toPrecision(4)) {\ndenom = 6;\n}\n}\nif (['tablespoons','tablespoon','tbsp'].includes(unit)) {\ndenom = 2;\n}\nif (['teaspoons','teaspoon','tsp'].includes(unit)) {\ndenom = 8;\n}\n}\nvar amountArray = frac.cont( amount, denom, true );\nvar newAmount = '';\nif ( amountArray[1] !== 0 ) {\nnewAmount = amountArray[1] + '\/' + amountArray[2];\nif ('vulgar' === roundType) {\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {\nnewAmount = vulgar;\n}\n});\n}\n}\nif ( newAmount ) {\nnewAmount = ' ' + newAmount;\n}\nif ( amountArray[0] ) {\nnewAmount = amountArray[0] + newAmount;\n}\namount = newAmount;\n}\nreturn amount;\n};\n\n\nwindow.tastyRecipesUpdatePrintLink = () => {\n\nconst printButton = document.querySelector( '.tasty-recipes-print-button' );\n\n\nif ( ! printButton ) {\nreturn;\n}\n\nconst printURL = new URL( printButton.href );\nconst searchParams = new URLSearchParams( printURL.search );\n\nconst unitButton = document.querySelector( '.tasty-recipes-convert-button-active' );\nconst scaleButton = document.querySelector( '.tasty-recipes-scale-button-active' );\n\nlet unit = '';\nlet scale = '';\n\nif ( unitButton ) {\nunit = unitButton.dataset.unitType;\nsearchParams.delete('unit');\nsearchParams.set( 'unit', unit );\n}\n\nif ( scaleButton ) {\nscale = scaleButton.dataset.amount;\nsearchParams.set( 'scale', scale );\n}\n\nconst paramString = searchParams.toString();\nconst newURL = '' === paramString ? printURL.href : printURL.origin + printURL.pathname + '?' + paramString;\nconst printLinks = document.querySelectorAll( '.tasty-recipes-print-link' );\n\nprintLinks.forEach( ( el ) => {\nel.href = newURL;\n});\n\nconst printButtons = document.querySelectorAll( '.tasty-recipes-print-button' );\nprintButtons.forEach( ( el ) => {\nel.href = newURL;\n});\n};\n\n\ndocument.addEventListener( 'DOMContentLoaded', () => {\n\n\nif ( ! window.location.href.includes( '\/print\/' ) ) {\nreturn;\n}\n\nconst searchParams = new URLSearchParams( window.location.search );\n\nconst unit = searchParams.get( 'unit' );\nconst scale = searchParams.get( 'scale' );\n\nif ( unit && ( 'metric' === unit || 'usc' === unit ) ) {\ndocument.querySelector( '.tasty-recipes-convert-button[data-unit-type=\"' + unit + '\"]' ).click();\n}\n\nif ( scale && Number(scale) > 0 ) {\ndocument.querySelector( '.tasty-recipes-scale-button[data-amount=\"' + Number(scale) + '\"]' ).click();\n}\n});\n}());\n\n(function(){\nvar buttonClass = 'tasty-recipes-convert-button',\nbuttonActiveClass = 'tasty-recipes-convert-button-active',\nbuttons = document.querySelectorAll('.tasty-recipes-convert-button');\nif ( ! buttons ) {\nreturn;\n}\nbuttons.forEach(function(button){\nbutton.addEventListener('click', function(event){\nevent.preventDefault();\nvar recipe = event.target.closest('.tasty-recipes');\nif ( ! recipe ) {\nreturn;\n}\nvar otherButtons = recipe.querySelectorAll('.' + buttonClass);\notherButtons.forEach(function(bt){\nbt.classList.remove(buttonActiveClass);\n});\nbutton.classList.add(buttonActiveClass);\nvar unitType = button.dataset.unitType;\nvar dataset = 'nf' + unitType.charAt(0).toUpperCase() + unitType.slice(1);\nvar convertables = recipe.querySelectorAll('span[data-nf-original]');\nconvertables.forEach(function(convertable){\nif (typeof convertable.dataset.amountOriginalType === 'undefined'\n&& 'usc' === convertable.dataset.nfOriginal) {\nif (-1 !== convertable.innerText.indexOf('\/')) {\nconvertable.dataset.amountOriginalType = 'frac';\n}\nif (-1 !== convertable.innerText.indexOf('.')) {\nconvertable.dataset.amountOriginalType = 'number';\n}\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (-1 !== convertable.innerText.indexOf(vulgar)) {\nconvertable.dataset.amountOriginalType = 'vulgar';\n}\n});\n}\nconvertable.innerText = convertable.dataset[dataset];\nif (typeof convertable.dataset.unit !== 'undefined') {\nconvertable.dataset.unit = convertable.dataset[dataset + 'Unit'];\n}\nif (typeof convertable.dataset.amount !== 'undefined') {\nconvertable.dataset.amount = convertable.dataset[dataset];\nif ('metric' === unitType) {\nconvertable.dataset.amountShouldRound = parseInt(convertable.dataset.amount) >= 10 ? 'integer' : 'number';\n} else if (typeof convertable.dataset.amountOriginalType !== 'undefined') {\nconvertable.dataset.amountShouldRound = convertable.dataset.amountOriginalType;\n} else {\nconvertable.dataset.amountShouldRound = false;\n}\nconvertable.innerText = window.tastyRecipesFormatAmount(convertable.dataset[dataset], convertable);\n}\nif (convertable.classList.contains('nutrifox-unit')) {\nif ('gram' === convertable.dataset[dataset]) {\nconvertable.innerText = 'grams';\n}\n}\n});\n\ndocument.querySelectorAll('.tasty-recipes-scale-button-active').forEach(function(scaleButton){\nscaleButton.click();\n});\n\nwindow.tastyRecipesUpdatePrintLink();\n});\n});\n}());\n\n(function(){\nvar buttonClass = 'tasty-recipes-scale-button',\nbuttonActiveClass = 'tasty-recipes-scale-button-active',\nbuttons = document.querySelectorAll('.tasty-recipes-scale-button');\nif ( ! buttons ) {\nreturn;\n}\n\nbuttons.forEach(function(button){\nbutton.addEventListener('click', function(event){\nevent.preventDefault();\nvar recipe = event.target.closest('.tasty-recipes');\nif ( ! recipe ) {\nreturn;\n}\nvar otherButtons = recipe.querySelectorAll('.' + buttonClass);\notherButtons.forEach(function(bt){\nbt.classList.remove(buttonActiveClass);\n});\nbutton.classList.add(buttonActiveClass);\n\n\nvar scalables = recipe.querySelectorAll('span[data-amount]');\nvar buttonAmount = parseFloat( button.dataset.amount );\nscalables.forEach(function(scalable){\nif (typeof scalable.dataset.amountOriginalType === 'undefined'\n&& typeof scalable.dataset.nfOriginal === 'undefined') {\nif (-1 !== scalable.innerText.indexOf('\/')) {\nscalable.dataset.amountOriginalType = 'frac';\n}\nif (-1 !== scalable.innerText.indexOf('.')) {\nscalable.dataset.amountOriginalType = 'number';\n}\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (-1 !== scalable.innerText.indexOf(vulgar)) {\nscalable.dataset.amountOriginalType = 'vulgar';\n}\n});\nif (typeof scalable.dataset.amountOriginalType !== 'undefined') {\nscalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;\n}\n}\nvar amount = parseFloat( scalable.dataset.amount ) * buttonAmount;\namount = window.tastyRecipesFormatAmount(amount, scalable);\nif ( typeof scalable.dataset.unit !== 'undefined' ) {\nif ( ! scalable.classList.contains('nutrifox-quantity') ) {\nif ( ! scalable.classList.contains('nutrifox-second-quantity') ) {\namount += ' ' + scalable.dataset.unit;\n}\n}\n}\nscalable.innerText = amount;\n});\n\nvar nonNumerics = recipe.querySelectorAll('[data-has-non-numeric-amount]');\nnonNumerics.forEach(function(nonNumeric){\nvar indicator = nonNumeric.querySelector('span[data-non-numeric-label]');\nif ( indicator ) {\nnonNumeric.removeChild(indicator);\n}\nif ( 1 !== buttonAmount ) {\nindicator = document.createElement('span');\nindicator.setAttribute('data-non-numeric-label', true);\nvar text = document.createTextNode(' (x' + buttonAmount + ')');\nindicator.appendChild(text);\nnonNumeric.appendChild(indicator);\n}\n});\n\nwindow.tastyRecipesUpdatePrintLink();\n});\n});\n}());\n\n(function() {\n\ndocument.querySelectorAll('.tasty-recipes-copy-button').forEach(function(copyButton) {\nif (copyButton.getAttribute('data-tasty-recipes-click-event')) {\nreturn;\n}\ncopyButton.setAttribute('data-tasty-recipes-click-event', true);\n\ncopyButton.addEventListener('click', function(event) {\nevent.preventDefault();\nvar copyContainer = copyButton.closest('.tasty-recipes-ingredients-clipboard-container');\n\nvar messageText = copyButton.attributes.getNamedItem('data-success').nodeValue;\nvar copySuccessMessage = document.createElement('div');\nvar copySuccessParagraph = document.createElement('p');\ncopySuccessParagraph.innerText = messageText;\ncopySuccessMessage.appendChild(copySuccessParagraph);\ncopySuccessMessage.classList.add('tasty-recipes-flash-message');\nvar messageDuration = 3000;\n\nvar ingredients = [];\nvar ingredientsContainer = copyButton.closest('.tasty-recipes-ingredients') || copyButton.closest('.tasty-recipe-ingredients');\nvar foundIngredients = false;\nvar findIngredients = function(div) {\nif ( div.querySelectorAll('li').length ) {\ndiv.querySelectorAll('li').forEach(function(li) {\ningredients.push(li.innerText);\n});\nfoundIngredients = true;\n} else if ( div.querySelectorAll('p').length ) {\ndiv.querySelectorAll('p').forEach(function(p) {\ningredients.push(p.innerText);\n});\nfoundIngredients = true;\n}\n};\nif (ingredientsContainer.querySelector('.tasty-recipes-ingredients-body')) {\nfindIngredients(ingredientsContainer.querySelector('.tasty-recipes-ingredients-body'));\n} else {\ningredientsContainer.querySelectorAll('div').forEach(function(div) {\nif ( foundIngredients ) {\nreturn;\n}\nif ( div.classList.contains('tasty-recipes-ingredients-header')\n|| div.parentElement.classList.contains('tasty-recipes-ingredients-header')\n|| div.classList.contains('tasty-recipes-ingredients-header') ) {\nreturn;\n}\nfindIngredients(div);\n});\n}\n\nvar readableIngredients = '';\ningredients.forEach(function(ingredient) {\nreadableIngredients += ingredient + '\\n';\n});\nreadableIngredients = readableIngredients.trim();\n\nvar fakeElem = document.createElement(\"textarea\");\nfakeElem.style.fontSize = \"12pt\";\nfakeElem.style.border = \"0\";\nfakeElem.style.padding = \"0\";\nfakeElem.style.margin = \"0\";\nfakeElem.style.position = \"absolute\";\nfakeElem.style.left = \"-9999px\";\n\nvar yPosition = window.pageYOffset || document.documentElement.scrollTop;\nfakeElem.style.top = yPosition + 'px';\n\nfakeElem.setAttribute(\"readonly\", \"\");\nfakeElem.value = readableIngredients;\n\ndocument.body.appendChild(fakeElem);\n\nif (navigator.userAgent.match(\/ipad|iphone\/i)) {\nvar range = document.createRange();\n\nvar selection = window.getSelection();\nrange.selectNodeContents(fakeElem);\nselection.removeAllRanges();\nselection.addRange(range);\nfakeElem.setSelectionRange(0, 999999);\n} else {\nfakeElem.select();\n}\n\ndocument.execCommand(\"copy\");\n\ndocument.body.removeChild(fakeElem);\nfakeElem = null;\n\ncopyContainer.appendChild(copySuccessMessage);\n\nsetTimeout(function() {\ncopyContainer.removeChild(copySuccessMessage);\n}, messageDuration);\n});\n});\n\n}());\n\n(function(){\ndocument.querySelectorAll('[data-tr-ingredient-checkbox]').forEach(function(el) {\nvar input = el.querySelector('.tr-ingredient-checkbox-container input[type=\"checkbox\"]');\nif ( ! input ) {\nreturn;\n}\nif (input.checked) {\nel.dataset.trIngredientCheckbox = 'checked';\n}\nel.addEventListener('click', function(event) {\nif ( 'A' === event.target.nodeName\n|| 'INPUT' === event.target.nodeName\n|| 'LABEL' === event.target.nodeName ) {\nreturn;\n}\ninput.click();\n});\ninput.addEventListener('change', function() {\nel.dataset.trIngredientCheckbox = input.checked ? 'checked' : '';\n});\n});\n}());\n\nwindow.TastyRecipes = window.TastyRecipes || {};\nwindow.TastyRecipes.cookMode = {\nwakeLockApi: false,\nwakeLock: false,\ncookModeSelector: '.tasty-recipes-cook-mode',\ninit() {\nif (\"wakeLock\" in navigator && \"request\" in navigator.wakeLock) {\nthis.wakeLockApi = navigator.wakeLock;\n}\n\nconst cookModes = document.querySelectorAll(this.cookModeSelector);\n\nif (cookModes.length > 0) {\nfor (const cookMode of cookModes) {\nif (this.wakeLockApi) {\ncookMode.querySelector('input[type=\"checkbox\"]').addEventListener(\"change\", event => {\nthis.checkboxChange(event.target);\n}, false);\n} else {\ncookMode.style.display = \"none\";\n}\n}\n}\n},\ncheckboxChange(checkbox) {\nif (checkbox.checked) {\nthis.lock();\n} else {\nthis.unlock();\n}\n},\nsetCheckboxesState(state) {\nconst checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type=\"checkbox\"]');\nfor (const checkbox of checkboxes) {\ncheckbox.checked = state;\n}\n},\nasync lock() {\ntry {\nthis.wakeLock = await this.wakeLockApi.request(\"screen\");\nthis.wakeLock.addEventListener(\"release\", () => {\nthis.wakeLock = false;\nthis.setCheckboxesState(false);\n});\nthis.setCheckboxesState(true);\n} catch (error) {\nthis.setCheckboxesState(false);\n}\n},\nunlock() {\nif (this.wakeLock) {\nthis.wakeLock.release();\nthis.wakeLock = false;\n}\nthis.setCheckboxesState(false);\n}\n};\n\n(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\ndocument.addEventListener(\"DOMContentLoaded\", callback);\n}\n})(() => {\nwindow.TastyRecipes.cookMode.init();\n});\n\n\n\nwindow.TastyRecipes = window.TastyRecipes || {};\n\nwindow.TastyRecipes.staticTooltip = {\nelement: null,\ntooltipElement: null,\ndeleting: false,\ninit( element ) {\nif ( this.deleting ) {\nreturn;\n}\nthis.element = element;\nthis.buildElements();\n},\ndestroy() {\nif ( ! this.tooltipElement || this.deleting ) {\nreturn;\n}\n\nthis.deleting = true;\nthis.tooltipElement.classList.remove( 'opened' );\n\nsetTimeout( () => {\nthis.tooltipElement.remove();\nthis.deleting = false;\n}, 500 );\n},\nbuildElements() {\nconst tooltipElement = document.createElement( 'div' );\ntooltipElement.classList.add( 'tasty-recipes-static-tooltip');\ntooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );\n\nconst currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\nif ( currentTooltipElement ) {\ndocument.body.replaceChild( tooltipElement, currentTooltipElement );\n} else {\ndocument.body.appendChild( tooltipElement );\n}\n\nthis.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\n},\nshow() {\nif ( ! this.tooltipElement ) {\nreturn;\n}\n\nconst tooltipTop = this.element.getBoundingClientRect().top\n+ window.scrollY\n- 10 \/\/ 10px offset.\n- this.tooltipElement.getBoundingClientRect().height;\nconst tooltipLeft = this.element.getBoundingClientRect().left\n- ( this.tooltipElement.getBoundingClientRect().width \/ 2 )\n+ ( this.element.getBoundingClientRect().width \/ 2 ) - 1;\nconst posLeft = Math.max( 10, tooltipLeft );\nthis.maybeRemoveTail( posLeft !== tooltipLeft );\n\nthis.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );\nthis.tooltipElement.classList.add( 'opened' );\n\n},\nmaybeRemoveTail( removeTail ) {\nif ( removeTail ) {\nthis.tooltipElement.classList.add( 'tr-hide-tail' );\n} else {\nthis.tooltipElement.classList.remove( 'tr-hide-tail' );\n}\n},\nchangeMessage( message ) {\nif ( ! this.tooltipElement ) {\nreturn;\n}\nthis.tooltipElement.innerHTML = message;\n}\n};\n\nwindow.TastyRecipes.ajax = {\nsendPostRequest( url, data, success, failure ) {\nconst xhr = new XMLHttpRequest();\nxhr.open( 'POST', url, true );\nxhr.send( this.preparePostData( data ) );\n\nxhr.onreadystatechange = () => {\nif ( 4 !== xhr.readyState ) {\nreturn;\n}\nif ( xhr.status === 200 ) {\nsuccess( JSON.parse( xhr.responseText ) );\nreturn;\n}\n\nfailure( xhr );\n};\n\nxhr.onerror = () => {\nfailure( xhr );\n};\n},\npreparePostData( data ) {\nconst formData = new FormData();\n\nfor ( const key in data ) {\nformData.append( key, data[key] );\n}\nreturn formData;\n},\n};\n\nwindow.TastyRecipes.ratings = {\ndefaultRating: 0,\ncurrentRatingPercentage: 100,\nsavingRating: false,\ninit( minRating ) {\nthis.minRating = minRating;\n\nthis.formWatchRating();\nthis.closeTooltipWhenClickOutside();\nthis.addBodyClassBasedOnSelectedRating();\nthis.backwardCompFormRatingPosition();\n},\nformWatchRating() {\nconst ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');\nif ( ratings.length <= 0 ) {\nreturn;\n}\nfor ( const rating of ratings ) {\nrating.addEventListener( 'click', event => {\nevent.preventDefault();\nthis.defaultRating = event.target.closest( '.checked' ).dataset.rating;\nthis.setCheckedStar( event.target );\nthis.maybeSendRating( this.defaultRating, event.target );\nthis.setRatingInForm( this.defaultRating );\n} );\n}\n},\ncloseTooltipWhenClickOutside() {\nwindow.addEventListener( 'click', e => {\n\/\/ Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.\nif ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {\nreturn;\n}\n\nwindow.TastyRecipes.staticTooltip.destroy();\n} );\n},\n setRatingInForm( rating ) {\nconst ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value=\"' + rating + '\"]' );\nif ( ! ratingInput ) {\nreturn;\n}\nratingInput.click();\n},\naddBodyClassBasedOnSelectedRating() {\nconst ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );\nif ( ! ratingInputs ) {\nreturn;\n}\nfor ( const ratingInput of ratingInputs ) {\nratingInput.addEventListener( 'click', currentEvent => {\nconst selectedRating = currentEvent.target.getAttribute( 'value' );\nthis.handleBodyClassByRating( selectedRating );\nthis.toggleCommentTextareaRequired( selectedRating );\n} );\n}\n},\nhandleBodyClassByRating( rating ) {\nif ( rating < this.minRating ) {\ndocument.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );\nreturn;\n}\ndocument.body.classList.add( 'tasty-recipes-selected-minimum-rating' );\n},\ntoggleCommentTextareaRequired( rating ) {\nconst commentTextarea = document.getElementById( 'comment' );\nif ( ! commentTextarea ) {\nreturn;\n}\n\nif ( rating < this.minRating ) {\ncommentTextarea.setAttribute( 'required', '' );\nreturn;\n}\n\ncommentTextarea.removeAttribute( 'required' );\n},\nmaybeSendRating( rating, element ) {\nif ( this.savingRating === rating ) {\nreturn;\n}\n\nthis.savingRating = rating;\nwindow.TastyRecipes.staticTooltip.init( element );\n\nconst recipeCardElement = element.closest( '.tasty-recipes' );\nif ( ! recipeCardElement ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nreturn;\n}\n\nwindow.TastyRecipes.ajax.sendPostRequest(\nwindow.trCommon.ajaxurl,\n{\naction: 'tasty_recipes_save_rating',\nrating,\nnonce: window.trCommon.ratingNonce,\npost_id: window.trCommon.postId,\nrecipe_id: recipeCardElement.dataset.trId,\n},\n( response ) => {\nwindow.TastyRecipes.staticTooltip.changeMessage( response.data.message );\nwindow.TastyRecipes.staticTooltip.show();\nthis.updateAverageText( response.data, recipeCardElement );\nthis.maybeFillCommentForm( response.data );\n\n\/\/ Hide the tooltip after 5 seconds.\nsetTimeout( () => {\nthis.maybeResetTooltip( recipeCardElement, response.data, rating );\n}, 5000 );\n},\n() => {\nthis.resetTooltip( recipeCardElement );\n}\n);\n},\nupdateAverageText( data, recipeCardElement ) {\nif ( ! data.average ) {\nreturn;\n}\nthis.setRatingPercent( data );\n\nif ( ! data.count ) {\nreturn;\n}\n\nconst quickLink = document.querySelector( '.tasty-recipes-rating-link' );\nif ( quickLink ) {\nthis.setTextInContainer( quickLink, data );\nthis.setPartialStar( quickLink );\n}\n\nconst cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\ncardStars.dataset.trDefaultRating = data.average;\nthis.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );\n},\nsetTextInContainer( container, data ) {\nif ( ! container ) {\nreturn;\n}\n\nif ( data.label ) {\nconst ratingLabelElement = container.querySelector( '.rating-label' );\nif ( ratingLabelElement ) {\nratingLabelElement.innerHTML = data.label;\n}\nreturn;\n}\n\nconst averageElement = container.querySelector( '.average' );\nif ( averageElement ) {\naverageElement.textContent = data.average;\n}\n\nconst countElement = container.querySelector( '.count' );\nif ( countElement ) {\ncountElement.textContent = data.count;\n}\n},\nsetPartialStar( container ) {\nconst highestStar = container.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( highestStar ) {\nhighestStar.dataset.trClip = this.currentRatingPercentage;\n}\n},\nsetRatingPercent( data ) {\nthis.defaultRating = data.average.toFixed( 1 );\nconst parts = data.average.toFixed( 2 ).toString().split( '.' );\nthis.currentRatingPercentage = parts[1] ? parts[1] : 100;\nif ( this.currentRatingPercentage === '00' ) {\nthis.currentRatingPercentage = 100;\n}\n},\nsetCheckedStar( target ) {\nconst cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( selectedRatingElement ) {\ndelete selectedRatingElement.dataset.trChecked;\n}\n\nconst thisStar = target.closest( '.tasty-recipes-rating' );\nthisStar.dataset.trChecked = 1;\nthisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;\n},\nmaybeFillCommentForm( data ) {\nif ( ! data.comment || ! data.comment.content ) {\nreturn;\n}\n\nconst commentForm = document.querySelector( '#commentform' );\nif ( ! commentForm ) {\nreturn;\n}\n\nconst commentBox = commentForm.querySelector( '[name=comment]' );\nif ( ! commentBox || commentBox.value ) {\nreturn;\n}\n\n\/\/ Add comment details for editing.\ncommentBox.innerHTML = data.comment.content;\nif ( data.comment.name ) {\ncommentForm.querySelector( '[name=author]' ).value = data.comment.name;\ncommentForm.querySelector( '[name=email]' ).value = data.comment.email;\n}\n},\nmaybeResetTooltip( recipeCardElement, data, rating ) {\nif ( this.savingRating === rating ) {\nthis.resetTooltip( recipeCardElement, data );\n}\n},\nresetTooltip( recipeCardElement, data ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nthis.savingRating = false;\n\n\/\/ Reset the default rating.\nconst cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\nif ( cardRatingContainer ) {\nthis.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;\ncardRatingContainer.dataset.trDefaultRating = this.defaultRating;\n\nthis.resetSelectedStar( cardRatingContainer, data );\n}\n},\nresetSelectedStar( cardRatingContainer ) {\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( selectedRatingElement ) {\nselectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;\nselectedRatingElement.parentNode.dataset.trChecked = 1;\n}\n\nconst previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( previousSelectedElement ) {\nconst currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');\nif ( currentSelectedRating !== selectedRatingElement ) {\ndelete previousSelectedElement.dataset.trChecked;\n}\n}\n},\nbackwardCompFormRatingPosition() {\nconst ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );\nif ( ! ratingsButtons ) {\nreturn;\n}\nconst ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);\nif ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {\nratingsButtons.style.direction = 'rtl';\n}\n\nif ( typeof tastyRecipesRating !== 'undefined' ) {\n\/\/ Select the rating that was previously selected in admin.\nratingsButtons.querySelector( '.tasty-recipes-rating[value=\"' + tastyRecipesRating + '\"]' ).checked = true;\n}\n\nconst ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );\nfor (const ratingSpan of ratingSpans) {\nratingSpan.addEventListener( 'click', event => {\nif ( ratingSpan === event.target ) {\nreturn;\n}\nratingSpan.previousElementSibling.click();\n} );\n}\n}\n};\n\n(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\nwindow.addEventListener( 'load', callback );\n}\n})(() => {\nwindow.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );\n});\n<\/script><\/div>\n","protected":false},"featured_media":147786,"menu_order":0,"template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[131],"tags":[363],"by-meal":[273,287],"by_dietary_preference":[],"by_cooking_time":[],"by_product":[337],"class_list":["post-154201","recipes","type-recipes","status-publish","has-post-thumbnail","hentry","category-reseptit","tag-kasvisruoka-lihaton","by-meal-jalkiruoat-ja-makeat-herkut","by-meal-joulu","by_product-luumut"],"acf":[],"_links":{"self":[{"href":"https:\/\/sunsweet.eu\/fi\/wp-json\/wp\/v2\/recipes\/154201","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunsweet.eu\/fi\/wp-json\/wp\/v2\/recipes"}],"about":[{"href":"https:\/\/sunsweet.eu\/fi\/wp-json\/wp\/v2\/types\/recipes"}],"version-history":[{"count":0,"href":"https:\/\/sunsweet.eu\/fi\/wp-json\/wp\/v2\/recipes\/154201\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sunsweet.eu\/fi\/wp-json\/wp\/v2\/media\/147786"}],"wp:attachment":[{"href":"https:\/\/sunsweet.eu\/fi\/wp-json\/wp\/v2\/media?parent=154201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sunsweet.eu\/fi\/wp-json\/wp\/v2\/categories?post=154201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sunsweet.eu\/fi\/wp-json\/wp\/v2\/tags?post=154201"},{"taxonomy":"by-meal","embeddable":true,"href":"https:\/\/sunsweet.eu\/fi\/wp-json\/wp\/v2\/by-meal?post=154201"},{"taxonomy":"by_dietary_preference","embeddable":true,"href":"https:\/\/sunsweet.eu\/fi\/wp-json\/wp\/v2\/by_dietary_preference?post=154201"},{"taxonomy":"by_cooking_time","embeddable":true,"href":"https:\/\/sunsweet.eu\/fi\/wp-json\/wp\/v2\/by_cooking_time?post=154201"},{"taxonomy":"by_product","embeddable":true,"href":"https:\/\/sunsweet.eu\/fi\/wp-json\/wp\/v2\/by_product?post=154201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}