{"id":158053,"date":"2025-08-27T11:42:29","date_gmt":"2025-08-27T10:42:29","guid":{"rendered":"https:\/\/sunsweeteurdev.wpenginepowered.com\/recipes\/r248-prune-and-orange-pancakes-2\/"},"modified":"2026-01-28T17:17:34","modified_gmt":"2026-01-28T17:17:34","slug":"r248-sviske-og-appelsinpannekaker","status":"publish","type":"recipes","link":"https:\/\/sunsweet.eu\/no\/sviske-oppskrifter\/r248-sviske-og-appelsinpannekaker\/","title":{"rendered":"Sviske- og appelsinpannekaker"},"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\/no\/sviske-oppskrifter\/r248-sviske-og-appelsinpannekaker\/print\/986550\/\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-986550-jump-target\" style=\"display:block;padding-top:2px;margin-top:-2px;\"><\/span><div id=\"tasty-recipes-986550\" data-tr-id=\"986550\" class=\"tasty-recipes tasty-recipes-986550 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\">Sviske- og appelsinpannekaker<\/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=\"100\" height=\"150\" src=\"https:\/\/sunsweet.eu\/wp-content\/uploads\/2025\/08\/R248-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\/no\/sviske-oppskrifter\/r248-sviske-og-appelsinpannekaker\/print\/986550\/\" 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\tSkriv ut oppskrift<\/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>Disse pannekakene er perfekte til frokost i langhelgen. Hemmeligheten bak luftige pannekaker fulle av saftige svisker er \u00e5 bl\u00f8tlegge sviskene f\u00f8rst.<\/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\">Tilberedningstid:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-prep-time\">40<\/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\">40 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\">Gir:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-yield\"><span data-amount=\"8\">8<\/span> <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-no-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\">R248<\/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\">Ingredienser<\/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=\"Ingredienser\" 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\">Enheter<\/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\">Skaler<\/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><span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_69f3fa69f0ca9\" id=\"ingredient_checkbox_69f3fa69f0ca9\" aria-label=\"100 ml SUNSWEET sviskejuice\"><label for=\"ingredient_checkbox_69f3fa69f0ca9\"><\/label><\/span><span class=\"nutrifox-quantity\" data-nf-original=\"metric\" data-nf-metric=\"100\" data-nf-usc=\"0.42\" data-unit=\"ml\" data-nf-metric-unit=\"ml\" data-nf-usc-unit=\"cup\" data-nf-food-id=\"4188\" data-nf-food-description=\"Beverages, almond milk, unsweetened, shelf stable\" data-amount=\"100\">100<\/span> <span class=\"nutrifox-unit\" data-nf-original=\"metric\" data-nf-metric=\"ml\" data-nf-usc=\"c\" data-nf-food-id=\"4188\" data-nf-food-description=\"Beverages, almond milk, unsweetened, shelf stable\">ml<\/span> SUNSWEET sviskejuice<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_69f3fa69f0cb1\" id=\"ingredient_checkbox_69f3fa69f0cb1\" aria-label=\"Saft og skall av 1 appelsin\"><label for=\"ingredient_checkbox_69f3fa69f0cb1\"><\/label><\/span>Saft og skall av 1 appelsin <\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_69f3fa69f0cb7\" id=\"ingredient_checkbox_69f3fa69f0cb7\" aria-label=\"4 SUNSWEET spiseklare svisker, grovhakket\"><label for=\"ingredient_checkbox_69f3fa69f0cb7\"><\/label><\/span><span data-amount=\"4\">4<\/span> SUNSWEET spiseklare svisker, grovhakket <\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_69f3fa69f0cbf\" id=\"ingredient_checkbox_69f3fa69f0cbf\" aria-label=\"150 g selvhevende glutenfritt mel\"><label for=\"ingredient_checkbox_69f3fa69f0cbf\"><\/label><\/span><span class=\"nutrifox-quantity\" data-amount=\"150\">150<\/span> <span class=\"nutrifox-unit\">g<\/span> selvhevende glutenfritt mel<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_69f3fa69f0cc4\" id=\"ingredient_checkbox_69f3fa69f0cc4\" aria-label=\"1\/2 ts glutenfritt bakepulver\"><label for=\"ingredient_checkbox_69f3fa69f0cc4\"><\/label><\/span><span data-amount=\"0.5\">1\/2<\/span> ts glutenfritt bakepulver <\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_69f3fa69f0ccc\" id=\"ingredient_checkbox_69f3fa69f0ccc\" aria-label=\"120 ml lettmelk\"><label for=\"ingredient_checkbox_69f3fa69f0ccc\"><\/label><\/span><span class=\"nutrifox-quantity\" data-nf-original=\"metric\" data-nf-metric=\"120\" data-nf-usc=\"2.55\" data-unit=\"ml\" data-nf-metric-unit=\"ml\" data-nf-usc-unit=\"cup\" data-nf-food-id=\"3001\" data-nf-food-description=\"Lettuce, cos or romaine, raw\" data-amount=\"120\">120<\/span> <span class=\"nutrifox-unit\" data-nf-original=\"metric\" data-nf-metric=\"ml\" data-nf-usc=\"c\" data-nf-food-id=\"3001\" data-nf-food-description=\"Lettuce, cos or romaine, raw\">ml<\/span> lettmelk<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_69f3fa69f0cd1\" id=\"ingredient_checkbox_69f3fa69f0cd1\" aria-label=\"3 store egg\"><label for=\"ingredient_checkbox_69f3fa69f0cd1\"><\/label><\/span><span data-amount=\"3\">3<\/span> store egg <\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_69f3fa69f0cd5\" id=\"ingredient_checkbox_69f3fa69f0cd5\" aria-label=\"En klatt sm\u00f8r\"><label for=\"ingredient_checkbox_69f3fa69f0cd5\"><\/label><\/span>En klatt sm\u00f8r <\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_69f3fa69f0cdc\" id=\"ingredient_checkbox_69f3fa69f0cdc\" aria-label=\"200 ml naturell yoghurt\"><label for=\"ingredient_checkbox_69f3fa69f0cdc\"><\/label><\/span><span class=\"nutrifox-quantity\" data-nf-original=\"metric\" data-nf-metric=\"200\" data-nf-usc=\"0.7\" data-unit=\"ml\" data-nf-metric-unit=\"ml\" data-nf-usc-unit=\"cup\" data-nf-food-id=\"240\" data-nf-food-description=\"Yogurt, Greek, plain, whole milk\" data-amount=\"200\">200<\/span> <span class=\"nutrifox-unit\" data-nf-original=\"metric\" data-nf-metric=\"ml\" data-nf-usc=\"c\" data-nf-food-id=\"240\" data-nf-food-description=\"Yogurt, Greek, plain, whole milk\">ml<\/span> naturell yoghurt<\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_69f3fa69f0ce0\" id=\"ingredient_checkbox_69f3fa69f0ce0\" aria-label=\"Valgfritt mynte og bringeb\u00e6r p\u00e5 toppen\"><label for=\"ingredient_checkbox_69f3fa69f0ce0\"><\/label><\/span>Valgfritt mynte og bringeb\u00e6r p\u00e5 toppen<\/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_69f3fa69f1bf0_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_69f3fa69f1bf0_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__label\">Matlagingsmodus<\/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\tFremgangsm\u00e5te\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<p id=\"instruction-step-1\">1. Varm f\u00f8rst sviske- og appelsinjuicen i en liten kjele til den s\u00e5 vidt begynner \u00e5 boble. Tilsett deretter sviskebitene, dekk til og sett til side i ti minutter (eller mer hvis du har tid).<\/p>\n<p id=\"instruction-step-2\">2. Sikt mel og bakepulver i en stor bolle, og lag en grop i midten av blandingen n\u00e5r det er gjort. Bland melk og egg i en annen bolle, og visp slik at de er godt blandet.<\/p>\n<p id=\"instruction-step-3\">3. Hell eggeblandingen sakte i midten av melbollen. Visp hele tiden og bland gradvis inn melblandingen. N\u00e5r alt melet er blandet inn, r\u00f8r det et par ganger litt til, men ikke overdriv.<\/p>\n<p id=\"instruction-step-4\">4. Bruk en hullsleiv til \u00e5 ta sviskene ut av den varme juicen. Rist for \u00e5 fjerne overfl\u00f8dig juice. Tilsett dem og appelsinskallet i r\u00f8ren, og r\u00f8r forsiktig inn. La r\u00f8ren st\u00e5 i ti minutter.<\/p>\n<p id=\"instruction-step-5\">5. I mellomtiden setter du kjelen med resten av sviske- og appelsinjuicen over h\u00f8y varme og lar det boble kraftig i omtrent 2 minutter, til blandingen er redusert til halvparten og er tykk og klissete. Sett til side.<\/p>\n<p id=\"instruction-step-6\">6. Smelt sm\u00f8ret i en stor stekepanne med tykk bunn over h\u00f8y varme. Bruk kj\u00f8kkenpapir til \u00e5 t\u00f8rke av overfl\u00f8dig sm\u00f8r. Ta vare p\u00e5 papiret til \u00e5 t\u00f8rke av mellom pannekakeporsjonene.<\/p>\n<p id=\"instruction-step-7\">7. N\u00e5r pannen er klar, tilsetter du 2 eller 3 store spiseskjeer med r\u00f8re (r\u00f8r raskt i r\u00f8ren p\u00e5 forh\u00e5nd), jevnt fordelt. N\u00e5r det begynner \u00e5 dukke opp bobler p\u00e5 toppen av pannekakene, snur du dem forsiktig.\n<\/p>\n<p>\n8. La steke i omtrent 1 minutt, og legg dem deretter over p\u00e5 en stor tallerken og dekk med et kj\u00f8kkenh\u00e5ndkle mens du lager de resterende pannekakene i omganger. Bruk kj\u00f8kkenpapiret med smeltet sm\u00f8r til \u00e5 t\u00f8rke av pannen mellom omgangene.<\/p>\n<p id=\"instruction-step-9\">9. Server 2 per tallerken, toppet med en klatt naturell yoghurt og dryppet med den klissete, reduserte juicen. Spis umiddelbart. Du kan toppe med frisk mynte og bringeb\u00e6r hvis du vil at de skal v\u00e6re enda penere.<\/p>\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>California Bakery<\/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\">kalorier:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-calories\">150<\/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\":158053};\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":148611,"menu_order":0,"template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[135],"tags":[374],"by-meal":[212,209],"by_dietary_preference":[202,205],"by_cooking_time":[],"by_product":[353,332],"class_list":["post-158053","recipes","type-recipes","status-publish","has-post-thumbnail","hentry","category-oppskrifter","tag-under-500-kalorier","by-meal-desserter-og-sote-fristelser","by-meal-frokost","by_dietary_preference-glutenfri","by_dietary_preference-under-500-kalorier","by_product-sviskejuice","by_product-svisker"],"acf":[],"_links":{"self":[{"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/recipes\/158053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/recipes"}],"about":[{"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/types\/recipes"}],"version-history":[{"count":0,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/recipes\/158053\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/media\/148611"}],"wp:attachment":[{"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/media?parent=158053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/categories?post=158053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/tags?post=158053"},{"taxonomy":"by-meal","embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/by-meal?post=158053"},{"taxonomy":"by_dietary_preference","embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/by_dietary_preference?post=158053"},{"taxonomy":"by_cooking_time","embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/by_cooking_time?post=158053"},{"taxonomy":"by_product","embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/by_product?post=158053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}