{"id":22644,"date":"2026-10-22T13:17:07","date_gmt":"2026-10-22T10:17:07","guid":{"rendered":"https:\/\/covoarepersane.ro\/?page_id=22644"},"modified":"2026-10-22T13:36:12","modified_gmt":"2026-10-22T10:36:12","slug":"see-a-rug-in-your-room","status":"publish","type":"page","link":"https:\/\/covoarepersane.ro\/en\/see-a-rug-in-your-room\/","title":{"rendered":"See a Rug in Your Room"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">    <section class=\"cp-rv \" data-test-product=\"0\" data-ajax=\"https:\/\/covoarepersane.ro\/wp-admin\/admin-ajax.php\" data-nonce=\"9c554b626c\" data-text=\"{&quot;title&quot;:&quot;See a rug in your room&quot;,&quot;intro&quot;:&quot;Take a guided room photo or choose one from your phone. Your photo stays on this device. Enter the two measurements of the clear floor area to see suitable rugs.&quot;,&quot;camera&quot;:&quot;Open camera&quot;,&quot;capture&quot;:&quot;Take photo&quot;,&quot;upload&quot;:&quot;Choose photo&quot;,&quot;camera_error&quot;:&quot;Camera unavailable. Please allow camera access or choose a photo.&quot;,&quot;frame&quot;:&quot;Photograph the room from above where possible. Mark only the clear floor area; leave out the footprint of sofas, tables and other furniture.&quot;,&quot;corners&quot;:&quot;Tap the four corners of the clear floor area, in order: top-left, top-right, bottom-right, bottom-left.&quot;,&quot;width&quot;:&quot;Clear floor width (mm)&quot;,&quot;length&quot;:&quot;Clear floor length (mm)&quot;,&quot;type&quot;:&quot;Rug type&quot;,&quot;all_types&quot;:&quot;All rug types&quot;,&quot;handmade&quot;:&quot;Handmade&quot;,&quot;machine&quot;:&quot;Machine-made&quot;,&quot;kilim&quot;:&quot;Kilim&quot;,&quot;color&quot;:&quot;Rug color&quot;,&quot;all_colors&quot;:&quot;All colors&quot;,&quot;red&quot;:&quot;Red&quot;,&quot;blue&quot;:&quot;Blue&quot;,&quot;neutral&quot;:&quot;Neutral&quot;,&quot;measure_hint&quot;:&quot;Enter width and length in millimetres. Only rugs between the clear floor dimension minus 600 mm and the full dimension, including both limits, are shown. Both width and length must match at the same time. The full room photo is only a visual guide.&quot;,&quot;find&quot;:&quot;Show rug and kilim suggestions&quot;,&quot;loading&quot;:&quot;Loading suggestions\\u2026&quot;,&quot;none&quot;:&quot;No matching rugs found in the products checked so far. If available, use Show more rugs to check further products.&quot;,&quot;more&quot;:&quot;Show more rugs&quot;,&quot;choose&quot;:&quot;Preview this rug&quot;,&quot;prev&quot;:&quot;Previous rug&quot;,&quot;next&quot;:&quot;Next rug&quot;,&quot;buy&quot;:&quot;View and buy this rug&quot;,&quot;fits&quot;:&quot;Recommended: both dimensions are within 0\\u2013600 mm of the clear floor area&quot;,&quot;close&quot;:&quot;Very close fit \\u2014 check dimensions&quot;,&quot;too_small&quot;:&quot;Too small: more than 600 mm below the clear area in at least one dimension&quot;,&quot;too_large&quot;:&quot;Not recommended: rug must be smaller than the clear area&quot;,&quot;unknown&quot;:&quot;Size not listed \\u2014 check product details&quot;,&quot;opacity&quot;:&quot;Rug transparency&quot;,&quot;reset&quot;:&quot;Mark the clear floor area again&quot;,&quot;approx&quot;:&quot;Approximate visualization and styling guide. Verify product dimensions before ordering; rug placement depends on room layout and furniture clearance.&quot;,&quot;desktop&quot;:&quot;This room preview is available on phones and tablets. Please open this page on a mobile device.&quot;,&quot;permission&quot;:&quot;Allow camera access when prompted. The camera starts only when you tap Open camera.&quot;}\">\n      <h1 class=\"cp-rv-heading\">See a rug in your room<\/h1><p class=\"cp-rv-language\"><a href=\"https:\/\/covoarepersane.ro\/vezi-covorul-in-camera-ta\/\">Rom\u00e2n\u0103<\/a><\/p><div class=\"cp-rv-desktop\">This room preview is available on phones and tablets. Please open this page on a mobile device.<\/div>\n      <div class=\"cp-rv-app\" hidden>\n       <p>Take a guided room photo or choose one from your phone. Your photo stays on this device. Enter the two measurements of the clear floor area to see suitable rugs.<\/p><p class=\"cp-rv-frame\">Photograph the room from above where possible. Mark only the clear floor area; leave out the footprint of sofas, tables and other furniture.<\/p>\n       <div class=\"cp-rv-actions\"><button type=\"button\" class=\"cp-rv-open\">Open camera<\/button><label class=\"cp-rv-upload\">Choose photo<input type=\"file\" accept=\"image\/*\" capture=\"environment\" hidden><\/label><\/div>\n       <p class=\"cp-rv-permission\">Allow camera access when prompted. The camera starts only when you tap Open camera.<\/p><p class=\"cp-rv-status\" aria-live=\"polite\"><\/p><div class=\"cp-rv-camera-stage\" hidden><video playsinline muted hidden><\/video><button type=\"button\" class=\"cp-rv-capture\" hidden>Take photo<\/button><\/div>\n       <div class=\"cp-rv-photo-wrap\" hidden><div class=\"cp-rv-product-heading\" hidden><span class=\"cp-rv-product-name\"><\/span><span class=\"cp-rv-product-price\"><\/span><\/div><canvas class=\"cp-rv-canvas\"><\/canvas><div class=\"cp-rv-slider\" hidden><button type=\"button\" class=\"cp-rv-prev\"><\/button><button type=\"button\" class=\"cp-rv-next\"><\/button><\/div><a class=\"cp-rv-buy\" hidden target=\"_blank\" rel=\"noopener\"><\/a><\/div>\n       <p class=\"cp-rv-corners\" hidden>Tap the four corners of the clear floor area, in order: top-left, top-right, bottom-right, bottom-left.<\/p>\n       <div class=\"cp-rv-measures\" hidden><div class=\"cp-rv-input-grid\"><label>Clear floor width (mm)<input class=\"cp-rv-width\" type=\"number\" min=\"300\" max=\"10000\" step=\"1\" inputmode=\"numeric\"><\/label><label>Clear floor length (mm)<input class=\"cp-rv-length\" type=\"number\" min=\"300\" max=\"10000\" step=\"1\" inputmode=\"numeric\"><\/label><label>Rug type<select class=\"cp-rv-kind\"><option value=\"all\">All rug types<\/option><option value=\"handmade\">Handmade<\/option><option value=\"machine\">Machine-made<\/option><option value=\"kilim\">Kilim<\/option><\/select><\/label><label>Rug color<select class=\"cp-rv-color\"><option value=\"any\">All colors<\/option><option value=\"red\">Red<\/option><option value=\"blue\">Blue<\/option><option value=\"neutral\">Neutral<\/option><\/select><\/label><\/div><p>Enter width and length in millimetres. Only rugs between the clear floor dimension minus 600 mm and the full dimension, including both limits, are shown. Both width and length must match at the same time. The full room photo is only a visual guide.<\/p><button type=\"button\" class=\"cp-rv-find\">Show rug and kilim suggestions<\/button><\/div>\n       <div class=\"cp-rv-products\"><\/div><button type=\"button\" class=\"cp-rv-more\" hidden>Show more rugs<\/button><div class=\"cp-rv-preview\" hidden><label>Rug transparency<input class=\"cp-rv-opacity\" type=\"range\" min=\"35\" max=\"100\" value=\"88\"><\/label><button class=\"cp-rv-reset\" type=\"button\">Mark the clear floor area again<\/button><p>Approximate visualization and styling guide. Verify product dimensions before ordering; rug placement depends on room layout and furniture clearance.<\/p><\/div>\n      <\/div>\n    <\/section>\n    <style>\n.cp-rv{max-width:900px;margin:24px auto;padding:16px}.cp-rv-desktop{display:none}.cp-rv-app{background:#fff;border:1px solid #e8e2d9;border-radius:14px;padding:20px}.cp-rv [hidden]{display:none!important}.cp-rv-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:14px 0}.cp-rv-camera-stage{display:grid;gap:10px;margin:14px 0}.cp-rv-camera-stage video{display:block;width:100%;max-height:55vh;min-height:220px;object-fit:contain;background:#171717;border-radius:10px}.cp-rv-camera-stage .cp-rv-capture{justify-self:center;min-width:180px}.cp-rv-measures{margin:14px 0}.cp-rv-input-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.cp-rv-measures label{display:grid;gap:6px}.cp-rv-measures input,.cp-rv-measures select{box-sizing:border-box;width:100%;padding:11px;border:1px solid #aaa;border-radius:6px;font:inherit;background:#fff}.cp-rv-measures>p{margin:12px 0}.cp-rv button,.cp-rv-upload{border:0;border-radius:8px;background:#9b5d38;color:#fff;padding:12px 16px;font:inherit;cursor:pointer}.cp-rv button:disabled{opacity:.65}.cp-rv label{display:grid;gap:6px}.cp-rv select{padding:10px;border:1px solid #aaa;border-radius:6px;font:inherit}.cp-rv-photo-wrap{position:relative;margin:16px auto;max-width:800px}.cp-rv-canvas{display:block;width:100%;height:auto;border-radius:8px;touch-action:manipulation}.cp-rv-slider{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px}.cp-rv-slider button{flex:0 0 auto;padding:9px 12px}.cp-rv-product-heading{display:flex;justify-content:center;align-items:center;gap:10px;margin:0 0 8px;text-align:center;font-weight:600}.cp-rv-buy{display:block;width:max-content;max-width:100%;margin:10px auto 0;border-radius:8px;background:#9b5d38;color:#fff;padding:10px 16px;text-decoration:none;text-align:center}.cp-rv-product-price del{opacity:.7;margin-inline-end:4px}.cp-rv-products{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}.cp-rv-card{border:1px solid #ddd;border-radius:8px;padding:10px}.cp-rv-card img{width:100%;height:150px;object-fit:contain}.cp-rv-card button{width:100%}.cp-rv-fit{font-weight:600}.cp-rv-size{font-size:.94em}.cp-rv-status{min-height:1.3em}.cp-rv-preview{margin-top:12px}@media(min-width:1025px) and (pointer:fine){.cp-rv-app{display:none!important}.cp-rv-desktop{display:block;padding:24px;border:1px solid #ddd;border-radius:10px;text-align:center}}@media(max-width:600px){.cp-rv{padding:8px}.cp-rv-app{padding:14px}.cp-rv-products{grid-template-columns:1fr}.cp-rv-input-grid{grid-template-columns:1fr 1fr;gap:8px}}\n.cp-rv-admin-review .cp-rv-app{display:block!important}.cp-rv-admin-review .cp-rv-desktop{display:none!important}\n<\/style>\n    <script>\n    (function(){'use strict';var root=document.currentScript.previousElementSibling.previousElementSibling; if(!root||!root.classList.contains('cp-rv')) root=document.querySelector('.cp-rv'); if(!root)return;var app=root.querySelector('.cp-rv-app');if(!window.matchMedia('(max-width: 1024px), (pointer: coarse)').matches&&!root.classList.contains('cp-rv-admin-review'))return;app.hidden=false;root.querySelector('.cp-rv-desktop').style.display='none';var T=JSON.parse(root.dataset.text), video=root.querySelector('video'),canvas=root.querySelector('canvas'),ctx=canvas.getContext('2d'),photo=root.querySelector('.cp-rv-photo-wrap'),corners=root.querySelector('.cp-rv-corners'),filters=root.querySelector('.cp-rv-measures'),status=root.querySelector('.cp-rv-status'),products=root.querySelector('.cp-rv-products'),preview=root.querySelector('.cp-rv-preview'),slider=root.querySelector('.cp-rv-slider'),productHeading=root.querySelector('.cp-rv-product-heading'),productName=root.querySelector('.cp-rv-product-name'),productPrice=root.querySelector('.cp-rv-product-price'),buyLink=root.querySelector('.cp-rv-buy'),stream=null,img=null,pts=[],selected=null,opacity=.88,loaded=[],previewItems=[],previewIndex=-1;\n    function stop(){if(stream){stream.getTracks().forEach(function(t){t.stop()});stream=null}video.hidden=true;root.querySelector('.cp-rv-capture').hidden=true;root.querySelector('.cp-rv-camera-stage').hidden=true}\n    function setPhoto(image){img=image;var scale=Math.min(1,1400\/image.naturalWidth);canvas.width=Math.round(image.naturalWidth*scale);canvas.height=Math.round(image.naturalHeight*scale);ctx.drawImage(image,0,0,canvas.width,canvas.height);photo.hidden=false;corners.hidden=false;filters.hidden=true;products.innerHTML='';preview.hidden=true;slider.hidden=false;root.querySelector('.cp-rv-prev').disabled=true;root.querySelector('.cp-rv-next').disabled=true;productHeading.hidden=true;buyLink.hidden=true;productPrice.innerHTML='';previewItems=[];previewIndex=-1;pts=[];selected=null;status.textContent='';drawMarks()}\n    function drawMarks(){if(!img)return;var s=Math.min(1,1400\/img.naturalWidth);ctx.setTransform(1,0,0,1,0,0);ctx.globalAlpha=1;ctx.globalCompositeOperation='source-over';ctx.clearRect(0,0,canvas.width,canvas.height);ctx.drawImage(img,0,0,canvas.width,canvas.height);if(pts.length===4&&selected){drawRug(selected)}pts.forEach(function(p,i){ctx.beginPath();ctx.arc(p.x,p.y,Math.max(9,canvas.width\/75),0,Math.PI*2);ctx.fillStyle='#ff9a42';ctx.fill();ctx.strokeStyle='#fff';ctx.lineWidth=3;ctx.stroke();ctx.fillStyle='#111';ctx.font='bold 16px sans-serif';ctx.fillText(String(i+1),p.x-5,p.y+5)})}\n    function triangle(im,s1,s2,s3,t1,t2,t3){var d=s1.x*(s2.y-s3.y)+s2.x*(s3.y-s1.y)+s3.x*(s1.y-s2.y);if(!d)return;var a=(t1.x*(s2.y-s3.y)+t2.x*(s3.y-s1.y)+t3.x*(s1.y-s2.y))\/d,c=(t1.x*(s3.x-s2.x)+t2.x*(s1.x-s3.x)+t3.x*(s2.x-s1.x))\/d,e=(t1.x*(s2.x*s3.y-s3.x*s2.y)+t2.x*(s3.x*s1.y-s1.x*s3.y)+t3.x*(s1.x*s2.y-s2.x*s1.y))\/d;var b=(t1.y*(s2.y-s3.y)+t2.y*(s3.y-s1.y)+t3.y*(s1.y-s2.y))\/d,dd=(t1.y*(s3.x-s2.x)+t2.y*(s1.x-s3.x)+t3.y*(s2.x-s1.x))\/d,f=(t1.y*(s2.x*s3.y-s3.x*s2.y)+t2.y*(s3.x*s1.y-s1.x*s3.y)+t3.y*(s1.x*s2.y-s2.x*s1.y))\/d;ctx.save();ctx.beginPath();ctx.moveTo(t1.x,t1.y);ctx.lineTo(t2.x,t2.y);ctx.lineTo(t3.x,t3.y);ctx.closePath();ctx.clip();ctx.transform(a,b,c,dd,e,f);ctx.drawImage(im,0,0);ctx.restore()}\n\n    function sourcePoint(p,x,y){var dx1=p[1].x-p[2].x,dx2=p[3].x-p[2].x,dy1=p[1].y-p[2].y,dy2=p[3].y-p[2].y,sx=p[0].x-p[1].x+p[2].x-p[3].x,sy=p[0].y-p[1].y+p[2].y-p[3].y,det=dx1*dy2-dx2*dy1,g=0,h=0;if(Math.abs(det)>1e-9){g=(sx*dy2-dx2*sy)\/det;h=(dx1*sy-sx*dy1)\/det}var z=g*x+h*y+1;return{x:((p[1].x-p[0].x+g*p[1].x)*x+(p[3].x-p[0].x+h*p[3].x)*y+p[0].x)\/z,y:((p[1].y-p[0].y+g*p[1].y)*x+(p[3].y-p[0].y+h*p[3].y)*y+p[0].y)\/z}}\n    function rugSourceQuad(u){if(u.cpPreparedQuad)return u.cpPreparedQuad;var W=u.naturalWidth,H=u.naturalHeight,q=u.cpQuad;if(Array.isArray(q)&&q.length===4){return u.cpPreparedQuad=q.map(function(p){return{x:p[0]*W,y:p[1]*H}})}var x0=0,y0=0,x1=W,y1=H;try{var s=Math.min(1,320\/Math.max(W,H)),c=document.createElement('canvas');c.width=Math.max(1,Math.round(W*s));c.height=Math.max(1,Math.round(H*s));var cc=c.getContext('2d',{willReadFrequently:true});cc.drawImage(u,0,0,c.width,c.height);var d=cc.getImageData(0,0,c.width,c.height).data,cw=c.width,ch=c.height;function bg(x,y){var i=(y*cw+x)*4;return d[i+3]<20||(d[i]>236&&d[i+1]>236&&d[i+2]>236)}var cornerBg=[bg(0,0),bg(cw-1,0),bg(0,ch-1),bg(cw-1,ch-1)].filter(Boolean).length;if(cornerBg>=3){var rows=new Uint32Array(ch),cols=new Uint32Array(cw);for(var y=0;y<ch;y++)for(var x=0;x<cw;x++)if(!bg(x,y)){rows[y]++;cols[x]++}var left=0,right=cw-1,top=0,bottom=ch-1,rt=Math.max(2,Math.round(cw*.008)),ct=Math.max(2,Math.round(ch*.008));while(left<right&&cols[left]<ct)left++;while(right>left&&cols[right]<ct)right--;while(top<bottom&&rows[top]<rt)top++;while(bottom>top&&rows[bottom]<rt)bottom--;if((right-left)>.12*cw&&(bottom-top)>.12*ch){x0=Math.max(0,left-2)\/cw*W;x1=Math.min(cw,right+3)\/cw*W;y0=Math.max(0,top-2)\/ch*H;y1=Math.min(ch,bottom+3)\/ch*H}}}catch(e){}return u.cpPreparedQuad=[{x:x0,y:y0},{x:x1,y:y0},{x:x1,y:y1},{x:x0,y:y1}]}\n\n    function drawRug(u){if(!u||!u.complete||u.naturalWidth===0)return;var p=pts,src=rugSourceQuad(u),N=16;function q(x,y){var a=p[0],b=p[1],c=p[2],d=p[3];return{x:(1-x)*(1-y)*a.x+x*(1-y)*b.x+x*y*c.x+(1-x)*y*d.x,y:(1-x)*(1-y)*a.y+x*(1-y)*b.y+x*y*c.y+(1-x)*y*d.y}}ctx.save();ctx.globalAlpha=opacity;ctx.globalCompositeOperation='multiply';for(var j=0;j<N;j++)for(var i=0;i<N;i++){var x0=i\/N,x1=(i+1)\/N,y0=j\/N,y1=(j+1)\/N,s1=sourcePoint(src,x0,y0),s2=sourcePoint(src,x1,y0),s3=sourcePoint(src,x1,y1),s4=sourcePoint(src,x0,y1);triangle(u,s1,s2,s3,q(x0,y0),q(x1,y0),q(x1,y1));triangle(u,s1,s3,s4,q(x0,y0),q(x1,y1),q(x0,y1))}ctx.restore()}\n    root.querySelector('.cp-rv-open').addEventListener('click',async function(){try{if(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)throw new Error();stream=await navigator.mediaDevices.getUserMedia({video:{facingMode:{ideal:'environment'}},audio:false});video.srcObject=stream;root.querySelector('.cp-rv-camera-stage').hidden=false;video.hidden=false;await video.play();root.querySelector('.cp-rv-capture').hidden=false;status.textContent=''}catch(e){status.textContent=T.camera_error}});\n    root.querySelector('.cp-rv-prev').textContent=T.prev;root.querySelector('.cp-rv-next').textContent=T.next;root.querySelector('.cp-rv-prev').addEventListener('click',function(){showPreview(previewIndex-1)});root.querySelector('.cp-rv-next').addEventListener('click',function(){showPreview(previewIndex+1)});\n    root.querySelector('.cp-rv-capture').addEventListener('click',function(){if(!video.videoWidth)return;var c=document.createElement('canvas'),s=Math.min(1,1400\/video.videoWidth);c.width=Math.round(video.videoWidth*s);c.height=Math.round(video.videoHeight*s);c.getContext('2d').drawImage(video,0,0,c.width,c.height);stop();var im=new Image();im.onload=function(){setPhoto(im)};im.src=c.toDataURL('image\/jpeg',.84)});\n    root.querySelector('input[type=file]').addEventListener('change',function(e){var f=e.target.files[0];if(!f)return;stop();var u=URL.createObjectURL(f),im=new Image();im.onload=function(){setPhoto(im);URL.revokeObjectURL(u)};im.src=u});\n    canvas.addEventListener('click',function(e){if(!img||pts.length>=4)return;var r=canvas.getBoundingClientRect();pts.push({x:(e.clientX-r.left)*canvas.width\/r.width,y:(e.clientY-r.top)*canvas.height\/r.height});drawMarks();if(pts.length===4)filters.hidden=false});\n    function showPreview(index,imageUrl){if(!previewItems.length)return;previewIndex=(index+previewItems.length)%previewItems.length;var item=previewItems[previewIndex],nextRug=new Image();selected=null;drawMarks();preview.hidden=true;slider.hidden=false;root.querySelector('.cp-rv-prev').disabled=previewItems.length<2;root.querySelector('.cp-rv-next').disabled=previewItems.length<2;productHeading.hidden=false;productName.textContent=item.name;productPrice.innerHTML=item.price_html||'';buyLink.href=item.url;buyLink.textContent=T.buy;buyLink.hidden=false;nextRug.cpQuad=item.source_quad||null;nextRug.crossOrigin='anonymous';nextRug.onload=function(){if(selected!==nextRug)return;drawMarks();preview.hidden=false};selected=nextRug;nextRug.src=imageUrl||item.images[0];status.textContent=''}\n    var widthField=root.querySelector('.cp-rv-width'),lengthField=root.querySelector('.cp-rv-length'),moreButton=root.querySelector('.cp-rv-more'),currentPage=0,hasMore=false;\n    function parseSize(value){var s=String(value||'').toLowerCase().replace(\/,\/g,'.'),m=s.match(\/\\d+(?:\\.\\d+)?\/g);if(!m||m.length<2)return null;var a=parseFloat(m[0]),b=parseFloat(m[1]);if(\/mm\/.test(s)){return [a,b]}if(\/\\bm\\b\/.test(s)&&!s.includes('cm')){return [a*1000,b*1000]}return [a*10,b*10]}\n    function sizeInfo(p){var w=Number(widthField.value),h=Number(lengthField.value),sizes=p.sizes||[],best=Infinity,bestFit=false,bestNear=false,bestDims=null,known=false,small=false,large=false,closest=Infinity,closestDims=null;sizes.forEach(function(s){var d=parseSize(s);if(!d)return;known=true;[[d[0],d[1]],[d[1],d[0]]].forEach(function(x){var gapW=w-x[0],gapH=h-x[1],within=x[0]<=w&&x[1]<=h,fit=x[0]<=w&&x[1]<=h&&gapW<=600&&gapH<=600,score=Math.abs(gapW-300)+Math.abs(gapH-300);if(score<closest){closest=score;closestDims=x}if(fit){if(score<best){best=score;bestFit=true;bestNear=gapW<100||gapH<100;bestDims=x}}else if(x[0]<w&&x[1]<h)small=true;else large=true})});var dims=bestDims||closestDims;return {known:known,fit:bestFit,comfortable:bestFit&&!bestNear,near:bestFit&&bestNear,small:!bestFit&&small,large:!bestFit&&!small&&large,score:bestFit?best:(known?1e12+closest:2e12),dims:dims||null,width:w,height:h}}\n    function renderProduct(p){var card=document.createElement('div');card.className='cp-rv-card';var im=document.createElement('img');im.loading='lazy';im.decoding='async';im.src=p.images[0];im.alt=p.name;var title=document.createElement('p');title.textContent=p.name;var size=document.createElement('p');size.className='cp-rv-size';size.textContent=(p.sizes&&p.sizes.length?p.sizes.join(' \u00b7 '):T.unknown);var info=sizeInfo(p),badge=document.createElement('p');badge.className='cp-rv-fit';badge.textContent=info.comfortable?T.fits:info.near?T.close:info.small?T.too_small:info.large?T.too_large:T.unknown;var price=document.createElement('div');price.innerHTML=p.price_html||'';var select=document.createElement('select');select.setAttribute('aria-label',T.choose);p.images.forEach(function(url,i){var o=document.createElement('option');o.value=url;o.textContent=(i+1)+' \/ '+p.images.length;select.appendChild(o)});var btn=document.createElement('button');btn.type='button';btn.textContent=T.choose;btn.addEventListener('click',function(){var idx=previewItems.findIndex(function(item){return item.id===p.id});if(idx<0){previewItems.push(p);idx=previewItems.length-1}showPreview(idx,select.value)});card.append(im,title,size,badge,price);if(p.images.length>1)card.appendChild(select);card.appendChild(btn);return {card:card,score:info.score,product:p}}\n    async function loadProducts(reset){if(reset){currentPage=0;products.innerHTML='';loaded=[];previewItems=[];previewIndex=-1;selected=null;slider.hidden=false;root.querySelector('.cp-rv-prev').disabled=true;root.querySelector('.cp-rv-next').disabled=true;preview.hidden=true;productHeading.hidden=true;buyLink.hidden=true;productPrice.innerHTML='';drawMarks()}var w=Number(widthField.value),h=Number(lengthField.value);if(w<300||w>10000||h<300||h>10000){status.textContent=T.measure_hint;return}var b=reset?root.querySelector('.cp-rv-find'):moreButton;b.disabled=true;b.textContent=T.loading;status.textContent='';try{var fd=new FormData();fd.append('action','cp_rv_products');if(root.dataset.testProduct&&root.dataset.testProduct!=='0')fd.append('test_product',root.dataset.testProduct);fd.append('nonce',root.dataset.nonce);fd.append('page',String(currentPage+1));var res=await fetch(root.dataset.ajax,{method:'POST',body:fd,credentials:'same-origin'}),json=await res.json(),data=json&&json.success?json.data:null,list=data&&Array.isArray(data.products)?data.products:[];hasMore=!!(data&&data.more);currentPage=data&&data.page?data.page:currentPage+1;loaded=loaded.concat(list);var kind=root.querySelector('.cp-rv-kind').value,color=root.querySelector('.cp-rv-color').value;list=list.filter(function(p){var text=(p.text||'').normalize('NFD').replace(\/[\\u0300-\\u036f]\/g,'').toLowerCase();var typeok=kind==='all'||(kind==='handmade'?\/manual|handmade|lucrat|persan\/.test(text):kind==='machine'?\/mecanic|machine\/.test(text):\/kilim|kelim\/.test(text));var colok=color==='any'||(color==='red'?\/red|rosu|burgundy|terracotta\/.test(text):color==='blue'?\/blue|albastru|navy\/.test(text):\/beige|cream|ivory|neutral|bej|crem|alb|gri\/.test(text));if(!typeok||!colok)return false;p.sizes=(p.sizes||[]).filter(function(s){return sizeInfo({sizes:[s]}).fit});return p.sizes.length>0});var rendered=list.map(renderProduct).sort(function(a,b){return a.score-b.score});rendered.forEach(function(x){previewItems.push(x.product);products.appendChild(x.card)});if(reset&&previewItems.length)showPreview(0);moreButton.hidden=!hasMore;if(!previewItems.length)status.textContent=T.none}catch(e){status.textContent=T.none}finally{b.disabled=false;b.textContent=reset?T.find:T.more}}\n    root.querySelector('.cp-rv-find').addEventListener('click',function(){loadProducts(true)});moreButton.addEventListener('click',function(){loadProducts(false)});\n    root.querySelector('.cp-rv-opacity').addEventListener('input',function(){opacity=Number(this.value)\/100;drawMarks()});root.querySelector('.cp-rv-reset').addEventListener('click',function(){pts=[];selected=null;filters.hidden=true;preview.hidden=true;slider.hidden=false;root.querySelector('.cp-rv-prev').disabled=true;root.querySelector('.cp-rv-next').disabled=true;productHeading.hidden=true;buyLink.hidden=true;productPrice.innerHTML='';drawMarks()});})();\n    <\/script>\n     <\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-22644","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/covoarepersane.ro\/en\/wp-json\/wp\/v2\/pages\/22644","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/covoarepersane.ro\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/covoarepersane.ro\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/covoarepersane.ro\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/covoarepersane.ro\/en\/wp-json\/wp\/v2\/comments?post=22644"}],"version-history":[{"count":2,"href":"https:\/\/covoarepersane.ro\/en\/wp-json\/wp\/v2\/pages\/22644\/revisions"}],"predecessor-version":[{"id":22651,"href":"https:\/\/covoarepersane.ro\/en\/wp-json\/wp\/v2\/pages\/22644\/revisions\/22651"}],"wp:attachment":[{"href":"https:\/\/covoarepersane.ro\/en\/wp-json\/wp\/v2\/media?parent=22644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}