{"id":164495,"date":"2025-08-27T11:43:11","date_gmt":"2025-08-27T10:43:11","guid":{"rendered":"https:\/\/sunsweeteurdev.wpenginepowered.com\/recipes\/r434-ricotta-souffle-in-a-glass-2\/"},"modified":"2025-09-15T15:26:43","modified_gmt":"2025-09-15T14:26:43","slug":"r434-ricottasuffle-i-et-glass","status":"publish","type":"recipes","link":"https:\/\/sunsweet.eu\/no\/sviske-oppskrifter\/r434-ricottasuffle-i-et-glass\/","title":{"rendered":"Ricottasuffl\u00e9 i et glass"},"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\/r434-ricottasuffle-i-et-glass\/print\/279485\/\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-279485-jump-target\" style=\"display:block;padding-top:2px;margin-top:-2px;\"><\/span><div id=\"tasty-recipes-279485\" data-tr-id=\"279485\" class=\"tasty-recipes tasty-recipes-279485 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\">Ricottasuffl\u00e9 i et glass<\/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=\"150\" height=\"100\" src=\"https:\/\/sunsweet.eu\/wp-content\/uploads\/2025\/08\/R434-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\/r434-ricottasuffle-i-et-glass\/print\/279485\/\" 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>Dette er definitivt noe for den raffinerte ganen: denne ricotta-suffl\u00e9en er en elegant dessert lett kremete og fruktige smak. Bon app\u00e9tit!<\/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=\"4\">4<\/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-003b<\/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\">R434<\/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_6a2cb71f8952a\" id=\"ingredient_checkbox_6a2cb71f8952a\" aria-label=\"4 eggehviter middels store\"><label for=\"ingredient_checkbox_6a2cb71f8952a\"><\/label><\/span><span data-amount=\"4\">4<\/span> eggehviter middels store <\/br><\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a2cb71f89536\" id=\"ingredient_checkbox_6a2cb71f89536\" aria-label=\"100 g sukker\"><label for=\"ingredient_checkbox_6a2cb71f89536\"><\/label><\/span><span class=\"nutrifox-quantity\" data-amount=\"100\">100<\/span> <span class=\"nutrifox-unit\">g<\/span> sukker  <\/br><\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a2cb71f8953c\" id=\"ingredient_checkbox_6a2cb71f8953c\" aria-label=\"4 eggeplommer middels store\"><label for=\"ingredient_checkbox_6a2cb71f8953c\"><\/label><\/span><span data-amount=\"4\">4<\/span> eggeplommer middels store  <\/br><\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a2cb71f89541\" id=\"ingredient_checkbox_6a2cb71f89541\" aria-label=\"1 pakke Bourbon vaniljesukker\"><label for=\"ingredient_checkbox_6a2cb71f89541\"><\/label><\/span><span data-amount=\"1\">1<\/span> pakke Bourbon vaniljesukker  <\/br><\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a2cb71f89545\" id=\"ingredient_checkbox_6a2cb71f89545\" aria-label=\"1 ss finrevet sitronskall\"><label for=\"ingredient_checkbox_6a2cb71f89545\"><\/label><\/span><span data-amount=\"1\">1<\/span> ss finrevet sitronskall  <\/br><\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a2cb71f8954d\" id=\"ingredient_checkbox_6a2cb71f8954d\" aria-label=\"250 g ricotta\"><label for=\"ingredient_checkbox_6a2cb71f8954d\"><\/label><\/span><span class=\"nutrifox-quantity\" data-nf-original=\"metric\" data-nf-metric=\"250\" data-nf-usc=\"1.01\" data-unit=\"g\" data-nf-metric-unit=\"g\" data-nf-usc-unit=\"cup\" data-nf-food-id=\"36\" data-nf-food-description=\"Cheese, ricotta, whole milk\" 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=\"36\" data-nf-food-description=\"Cheese, ricotta, whole milk\">g<\/span> ricotta  <\/br><\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a2cb71f89552\" id=\"ingredient_checkbox_6a2cb71f89552\" aria-label=\"2 ss maismel\"><label for=\"ingredient_checkbox_6a2cb71f89552\"><\/label><\/span><span data-amount=\"2\">2<\/span> ss maismel  <\/br><\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a2cb71f89556\" id=\"ingredient_checkbox_6a2cb71f89556\" aria-label=\"1 ss semulegryn\"><label for=\"ingredient_checkbox_6a2cb71f89556\"><\/label><\/span><span data-amount=\"1\">1<\/span> ss semulegryn  <\/br><\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a2cb71f8955b\" id=\"ingredient_checkbox_6a2cb71f8955b\" aria-label=\"2 ts smeltet sm\u00f8r\"><label for=\"ingredient_checkbox_6a2cb71f8955b\"><\/label><\/span><span data-amount=\"2\">2<\/span> ts smeltet sm\u00f8r  <\/br><\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a2cb71f8955f\" id=\"ingredient_checkbox_6a2cb71f8955f\" aria-label=\"12 SUNSWEET svisker\"><label for=\"ingredient_checkbox_6a2cb71f8955f\"><\/label><\/span><span data-amount=\"12\">12<\/span> SUNSWEET svisker  <\/br><\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a2cb71f89567\" id=\"ingredient_checkbox_6a2cb71f89567\" aria-label=\"25 g flakete mandler\"><label for=\"ingredient_checkbox_6a2cb71f89567\"><\/label><\/span><span class=\"nutrifox-quantity\" data-nf-original=\"metric\" data-nf-metric=\"25\" data-nf-usc=\"0.42\" data-unit=\"g\" data-nf-metric-unit=\"g\" data-nf-usc-unit=\"cup\" data-nf-food-id=\"10315\" data-nf-food-description=\"Unsweetened Coconut Flakes (Bob's Red Mill)\" data-amount=\"25\">25<\/span> <span class=\"nutrifox-unit\" data-nf-original=\"metric\" data-nf-metric=\"g\" data-nf-usc=\"c\" data-nf-food-id=\"10315\" data-nf-food-description=\"Unsweetened Coconut Flakes (Bob's Red Mill)\">g<\/span> flakete mandler  <\/br><\/span><br \/>\n<span data-tr-ingredient-checkbox=\"\"><span class=\"tr-ingredient-checkbox-container\"><input type=\"checkbox\" name=\"ingredient_checkbox_6a2cb71f8956b\" id=\"ingredient_checkbox_6a2cb71f8956b\" aria-label=\"Litt melis\"><label for=\"ingredient_checkbox_6a2cb71f8956b\"><\/label><\/span>Litt melis<\/br><\/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_6a2cb71f8a261_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_6a2cb71f8a261_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<ol>\n<li id=\"instruction-step-1\">Forvarm ovnen til 150 \u00b0C varmluft (170 \u00b0C over- og undervarme). Pisk eggehvitene til de er stive, tilsett forsiktig halvparten av sukkeret i en str\u00f8m og fortsett \u00e5 visp til eggehviten stive. Pisk eggeplommene med resten av sukker, vaniljesukker og sitronskall til de er tykke og kremaktige. R\u00f8r inn ricottaen, maismel og semulegryn til den er jevn, bland deretter forsiktig inn de vispete egghvittene.  <\/li>\n<li id=\"instruction-step-2\">Pensle varmebestandige dessertglass med sm\u00f8r. Fyll 1-2 ss av blandingen i hvert glass og legg 3 svisker p\u00e5 toppen. Fyll med resten av blandingen, dryss over mandler og drypp over resten av sm\u00f8ret.  <\/li>\n<li id=\"instruction-step-3\">Legg en ganske dyp ildfast form eller stekeform p\u00e5 rist i ovnen, legg glassene i den og fyll med varmt vann slik at glassene er dekket mest mulig i vann. Stek i ca. 25 minutter, dryss over melis rett f\u00f8r servering.<\/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\">kalorier:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-calories\">350<\/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\":164495};\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":149464,"menu_order":0,"template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[135],"tags":[364],"by-meal":[212],"by_dietary_preference":[203],"by_cooking_time":[],"by_product":[332],"class_list":["post-164495","recipes","type-recipes","status-publish","has-post-thumbnail","hentry","category-oppskrifter","tag-vegetarisk-kjottfri","by-meal-desserter-og-sote-fristelser","by_dietary_preference-vegetarisk-kjottfri","by_product-svisker"],"acf":[],"_links":{"self":[{"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/recipes\/164495","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\/164495\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/media\/149464"}],"wp:attachment":[{"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/media?parent=164495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/categories?post=164495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/tags?post=164495"},{"taxonomy":"by-meal","embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/by-meal?post=164495"},{"taxonomy":"by_dietary_preference","embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/by_dietary_preference?post=164495"},{"taxonomy":"by_cooking_time","embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/by_cooking_time?post=164495"},{"taxonomy":"by_product","embeddable":true,"href":"https:\/\/sunsweet.eu\/no\/wp-json\/wp\/v2\/by_product?post=164495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}