mk-sdk-git 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mk-sdk.js +1 -1
- package/package.json +1 -1
- package/src/core/projectRecipe.js +56 -0
- package/src/core/transport.js +70 -2
- package/src/index.js +17 -1
- package/src/tryon/automount.js +21 -7
package/dist/mk-sdk.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var Te=Object.defineProperty;var A=(t,e)=>{for(var r in e)Te(t,r,{get:e[r],enumerable:!0})};var ot={collectorUrl:"https://api-collector.mk3dlabs.com",appUrl:"https://mkfashion.mk3dlabs.com/visualizer",apiUrl:"https://mkfashion-new-api.mk3dlabs.com"},Ee={},B=null;function rt(){if(B)return B;let t=null;try{t=document.currentScript||document.querySelector("script[data-mk-project]")||document.querySelector('script[src*="mk-sdk"]')||document.querySelector('script[src*="mk-pixel"]')}catch(i){}let e=i=>{try{return t&&t.getAttribute(i)}catch(a){return null}},r=e("data-mk-project")||e("data-mk-client")||window.__MK&&(window.__MK.projectId||window.__MK.clientSlug)||null,o=e("data-mk-product")||window.__MK&&window.__MK.product||"mk-fashion",n=e("data-mk-collector")||window.__MK&&window.__MK.collectorUrl||Ee.collectorUrl||ot.collectorUrl;return B={projectId:r,product:o,collectorUrl:n,appUrl:window.__MK&&window.__MK.appUrl||ot.appUrl,apiUrl:window.__MK&&window.__MK.apiUrl||ot.apiUrl,debug:!!(e("data-mk-debug")!==null||window.__MK&&window.__MK.debug||/[?&]mkdebug\b/.test(location.search)),observe:!!(window.__MK&&window.__MK.observe),forceButton:!!(window.__MK&&window.__MK.forceButton),anchor:window.__MK&&window.__MK.anchor||null,cartRedirect:!(window.__MK&&window.__MK.cartRedirect===!1),autoTrack:e("data-mk-no-autotrack")===null,batchIntervalMs:2e3,batchMaxSize:20,engagementIntervalMs:15e3},B}function f(){return B||rt()}function m(...t){let e=f();e&&e.debug&&typeof console!="undefined"&&console.log("[mk-sdk]",...t)}var Lt="_mk_vid",It="_mk_sid",j=null,N=null;function z(){return typeof crypto!="undefined"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{let e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function Rt(){if(j)return j;try{let t=localStorage.getItem(Lt);return t||(t="v_"+z(),localStorage.setItem(Lt,t)),j=t,t}catch(t){return j="v_"+z(),j}}function Pt(){if(N)return N;try{let t=sessionStorage.getItem(It);return t||(t="s_"+z(),sessionStorage.setItem(It,t)),N=t,t}catch(t){return N="s_"+z(),N}}var Bt=[/email/i,/e-?mail/i,/cpf/i,/cnpj/i,/phone/i,/telefone/i,/celular/i,/address/i,/endereco/i,/cep/i,/zip/i,/card/i,/cartao/i,/cvv/i,/password/i,/senha/i,/token/i,/\bnome\b/i,/fullname/i,/firstname/i,/lastname/i,/sobrenome/i,/birth/i,/nascimento/i,/rg\b/i],jt={imageUrl:1,image:1,thumbnail:1,photo:1,imageBase64:1,src:1},nt=2e3;function Nt(t){for(let e=0;e<Bt.length;e++)if(Bt[e].test(t))return!0;return!1}function Ut(t){if(!t||typeof t!="object"||Array.isArray(t))return typeof t=="string"&&t.length>nt?t.slice(0,200)+"...[truncated "+t.length+"B]":t;let e={};for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r)||Nt(r))continue;let o=t[r];if(jt[r]){e[r+"Present"]=!!o;continue}if(typeof o=="string"&&o.length>nt){e[r]=o.slice(0,200)+"...[truncated "+o.length+"B]";continue}if(o&&typeof o=="object"&&!Array.isArray(o)){e[r]=Ae(o);continue}e[r]=o}return e}function Ae(t){let e={};for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r)||Nt(r))continue;let o=t[r];if(jt[r]){e[r+"Present"]=!!o;continue}if(typeof o=="string"&&o.length>nt){e[r]=o.slice(0,200)+"...[truncated]";continue}e[r]=o}return e}var q=[],it=null,L=null;function Ot(t){L=t}function l(t,e,r){if(!f().projectId){(l._pre=l._pre||[]).push({name:t,params:e,ts:r||Date.now()}),l._pre.length>50&&l._pre.shift();return}if(l._pre&&l._pre.length){let n=l._pre;l._pre=[];for(let i of n)Mt(i.name,i.params,i.ts)}Mt(t,e,r)}function Mt(t,e,r){let o=f(),n=Ut(e||{}),i="page_"+Le(t);if(q.push({name:i,ts:r||Date.now(),params:n}),m("queued",t,n),o.observe)try{window.postMessage({__mkpixel:!0,event:{name:i,params:n},site:L?{pageType:L.pageType,platform:L.platform,url:L.url}:null},"*")}catch(a){}if(q.length>=o.batchMaxSize){U();return}it||(it=setTimeout(()=>{it=null,U()},o.batchIntervalMs))}function Le(t){if(typeof t!="string"||!t)return"unknown";let e=t.replace(/^on/,"");return e=e.replace(/[A-Z]/g,(r,o)=>(o>0?"_":"")+r.toLowerCase()),e.indexOf("page_")===0&&(e=e.slice(5)),e}function U(t){if(q.length===0)return;let e=f();if(!e.projectId||!e.collectorUrl)return;let r=q.splice(0,50),o=JSON.stringify({product:e.product||void 0,visitorId:Rt(),sessionId:Pt(),events:r,site:L||void 0}),n=e.collectorUrl+"/v1/track";if(t&&navigator.sendBeacon)try{let i=new Blob([o],{type:"application/json"});navigator.sendBeacon(n+"?projectId="+encodeURIComponent(e.projectId),i);return}catch(i){}fetch(n,{method:"POST",keepalive:!0,headers:{"Content-Type":"application/json","X-MK-Project-Id":e.projectId},body:o}).catch(()=>{})}function Ft(){try{window.addEventListener("pagehide",()=>U(!0)),window.addEventListener("beforeunload",()=>U(!0)),document.addEventListener("visibilitychange",()=>{document.hidden&&U(!0)})}catch(t){}}function k(t){let e=[];try{let r=document.querySelectorAll('script[type="application/ld+json"]');for(let o of r){let n;try{n=JSON.parse(o.textContent)}catch(a){continue}let i=[];Array.isArray(n)?i.push(...n):n["@graph"]?i.push(...n["@graph"]):i.push(n);for(let a of i){if(!a||!a["@type"])continue;let c=Array.isArray(a["@type"])?a["@type"]:[a["@type"]];(!t||t.some(u=>c.includes(u)))&&e.push(a)}}}catch(r){}return e}var at={};A(at,{addToCart:()=>Be,detect:()=>Re,id:()=>Ie,resolveSku:()=>Pe});var Ie="shopify";function Re(){return!!(window.Shopify||window.ShopifyAnalytics)}function Pe(){let t=window;return t.ShopifyAnalytics&&t.ShopifyAnalytics.meta&&t.ShopifyAnalytics.meta.product?{value:String(t.ShopifyAnalytics.meta.product.id),source:"shopify"}:null}var $=t=>String(t==null?"":t).trim().toLowerCase();async function Be({size:t,sku:e,quantity:r}){let o=(location.pathname.split("/products/")[1]||"").split(/[?#]/)[0];if(!o)throw new Error("shopify: sem handle de produto na URL (n\xE3o \xE9 PDP?)");let i=(await fetch("/products/"+o+".js").then(s=>s.json())).variants||[],a=s=>[s.option1,s.option2,s.option3,s.title].some(x=>$(x)===$(t)),c=null;if(t&&(c=i.find(s=>a(s)&&s.available)||i.find(a)),!c&&e&&(c=i.find(s=>$(s.sku)===$(e))),c||(c=i.find(s=>s.available)||i[0]),!c)throw new Error("shopify: variante n\xE3o encontrada");let u=await fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({items:[{id:c.id,quantity:r||1}]})});if(!u.ok)throw new Error("shopify: /cart/add.js HTTP "+u.status);return{platform:"shopify",variantId:c.id,size:c.title,sku:c.sku||null}}var ct={};A(ct,{addToCart:()=>Me,detect:()=>Ne,id:()=>je,resolveSku:()=>Ue});var je="hybris";function Ne(){return!!(window.ACC&&window.ACC.config)}function Ue(){let t=(location.pathname||"").match(/\/p\/([^/?#]+)/);return t&&t[1]?{value:decodeURIComponent(t[1]),source:"hybris/url"}:null}var Dt=t=>String(t==null?"":t).trim().toLowerCase();async function Me({size:t,quantity:e}){let r=[...document.querySelectorAll('.js-product-select-size, a[data-code], [class*="select-size"]')].filter(h=>h.getAttribute&&h.getAttribute("data-code")),o=t?r.find(h=>Dt(h.textContent)===Dt(t)):null;o||(o=r.find(h=>h.offsetParent!==null)||r[0]);let n=o&&o.getAttribute("data-code");if(!n)throw new Error("hybris: variante (data-code) n\xE3o encontrada");let i=document.getElementById("product--add-to-cart-form")||document.querySelector('form[action*="/cart/add"]'),a=i&&i.querySelector('[name="CSRFToken"]'),c=a&&a.value,u=i&&i.getAttribute("action")||"/cart/add";if(!c)throw new Error("hybris: CSRFToken n\xE3o encontrado");let s=new URLSearchParams;s.set("productCodePost",n),s.set("qty",String(e||1)),s.set("CSRFToken",c);let x=await fetch(u,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},body:s.toString()});if(!x.ok)throw new Error("hybris: "+u+" HTTP "+x.status);return{platform:"hybris",productCode:n,size:o.textContent.trim()}}var st={};A(st,{addToCart:()=>ze,detect:()=>Fe,id:()=>Oe,resolveSku:()=>De});var Oe="vtex";function Fe(){return!!(window.vtex||window.vtexjs||window.vtxctx||window.skuJson_0)}function De(){let t=window;return t.vtxctx&&t.vtxctx.skus&&t.vtxctx.skus[0]?{value:String(t.vtxctx.skus[0]),source:"vtex/vtxctx"}:t.skuJson_0&&t.skuJson_0.skus&&t.skuJson_0.skus[0]?{value:String(t.skuJson_0.skus[0].sku),source:"vtex/skuJson"}:null}var K=t=>String(t==null?"":t).trim().toLowerCase();async function ze({size:t,quantity:e}){let r=window.skuJson_0&&window.skuJson_0.skus||[];if(!r.length)throw new Error("vtex: skuJson_0 indispon\xEDvel");let o=i=>K(i.skuname)===K(t)||i.dimensions&&Object.values(i.dimensions).some(a=>K(a)===K(t)),n=t?r.find(i=>o(i)&&i.available)||r.find(o):null;if(n||(n=r.find(i=>i.available)||r[0]),!n)throw new Error("vtex: variante n\xE3o encontrada");if(window.vtexjs&&window.vtexjs.checkout&&window.vtexjs.checkout.addToCart)return await window.vtexjs.checkout.addToCart([{id:parseInt(n.sku,10),quantity:e||1,seller:"1"}]),{platform:"vtex",skuId:n.sku,size:n.skuname||t};throw new Error("vtex: vtexjs.checkout indispon\xEDvel")}var lt={};A(lt,{addToCart:()=>Je,detect:()=>Ke,id:()=>qe,resolveSku:()=>He,skipRedirect:()=>$e});var qe="nuvemshop",$e=!0;function Ke(){return!!(window.LS&&(window.LS.cart||window.LS.addToCart))}function He(){try{let t=window.LS,e=t&&t.variants||[],r=document.querySelector('[name="variant_id"]'),o=r&&r.value?e.find(n=>String(n.id)===String(r.value)):null;if(o||(o=e.find(n=>n.available!==!1&&n.sku)||e.find(n=>n.sku)||e[0]),o&&o.sku)return{value:String(o.sku),source:"nuvemshop/variant"};if(t&&t.product&&t.product.sku)return{value:String(t.product.sku),source:"nuvemshop/product"}}catch(t){}return null}var H=t=>String(t==null?"":t).trim().toLowerCase();async function Je({size:t,quantity:e}){let r=document.getElementById("product_form")||document.querySelector('.js-product-form, form[action*="/comprar"]');if(!r)throw new Error("nuvemshop: #product_form n\xE3o encontrado");t&&r.querySelectorAll('select[name^="variation"]').forEach(i=>{let a=[...i.options].find(c=>H(c.textContent).includes(H(t))||H(c.value)===H(t));a&&(i.value=a.value,i.dispatchEvent(new Event("change",{bubbles:!0})))});let o=r.querySelector('[name="quantity"]');return o&&e&&(o.value=String(e)),await new Promise(i=>setTimeout(i,400)),typeof r.requestSubmit=="function"?r.requestSubmit():r.submit(),{platform:"nuvemshop",variantId:(r.querySelector('[name="variant_id"]')||{}).value||null}}var ut={};A(ut,{addToCart:()=>Ye,detect:()=>We,id:()=>Ve,resolveSku:()=>Xe,skipRedirect:()=>Ge});var Ve="wake",Ge=!0;function We(){return!!(window.StorefrontClient||typeof window.addOrCreateCheckout=="function"||typeof window.addToCartClick=="function")}function Xe(){try{let t=document.querySelector('input[name="product-id"], [data-product-id]'),e=t?t.value||t.getAttribute("data-product-id"):null;if(e)return{value:String(e).trim(),source:"wake/product-id"};let r=(location.pathname||"").match(/-(\d+)\/?(?:[?#]|$)/);if(r)return{value:r[1],source:"wake/url"}}catch(t){}return null}var zt=t=>String(t==null?"":t).trim().toLowerCase();async function Ye({size:t,quantity:e}){if(t){let i=[...document.querySelectorAll("input[attribute-value]")].find(a=>zt(a.getAttribute("attribute-value"))===zt(t));if(i){try{i.checked=!0}catch(a){}try{typeof window.selectAttribute=="function"?window.selectAttribute(i):i.click()}catch(a){}await new Promise(a=>setTimeout(a,600))}}let r=document.querySelector('[name="product-variant-id"]'),o=r&&r.value;if(!o)throw new Error("wake: product-variant-id n\xE3o encontrado");if(typeof window.addOrCreateCheckout!="function")throw new Error("wake: addOrCreateCheckout indispon\xEDvel");if(!await window.addOrCreateCheckout([{productVariantId:Number(o),quantity:e||1,customization:[]}]))throw new Error("wake: addOrCreateCheckout retornou false");return{platform:"wake",productVariantId:o,size:t||null}}var pt={};A(pt,{addToCart:()=>J,detect:()=>Qe,id:()=>Ze,resolveSku:()=>dt});var Ze="generic";function Qe(){return!0}function dt(){let t=k(["Product"]);if(t[0]){let e=t[0],r=e.sku||e.mpn||e.gtin13||e.productID;if(r)return{value:String(r),source:"jsonld"}}try{let e=document.querySelector('[itemprop="sku"]');if(e){let r=e.getAttribute("content")||(e.textContent||"").trim();if(r)return{value:String(r),source:"microdata"}}}catch(e){}try{let e=window.konfidencyData;if(e&&e.product&&e.product.variants&&e.product.variants[0])return{value:String(e.product.variants[0]),source:"konfidency"}}catch(e){}return null}var to=/(adicionar\s*(à|a|ao)?\s*(sacola|carrinho|cesta|bolsa))|adicionar ao carrinho|add to (cart|bag)|comprar agora/i,eo=/continuar|como comprar|lista|desejos|favorito/i;async function J(){let t=document.querySelectorAll("button,[role=button],input[type=submit]");for(let e of t){let r=(e.textContent||e.value||"").replace(/\s+/g," ").trim();if(r&&r.length<40&&to.test(r)&&!eo.test(r))try{return e.click(),{platform:"native-click",clicked:r}}catch(o){}}return{platform:"none",error:"bot\xE3o de carrinho nativo n\xE3o encontrado"}}var Kt=[at,ct,st,lt,ut],oo=[["woocommerce",()=>!!(window.wc_add_to_cart_params||window.woocommerce_params)],["lojaintegrada",()=>!!window.LojaIntegrada]],V;function Ht(){return V||(V=Kt.find(t=>{try{return t.detect()}catch(e){return!1}})||pt,V)}function Jt(){let t=Kt.find(e=>{try{return e.detect()}catch(r){return!1}});if(t)return t.id;for(let[e,r]of oo)try{if(r())return e}catch(o){}return null}function M(){let t=Ht();if(t.id!=="generic"&&t.resolveSku)try{let e=t.resolveSku();if(e)return e}catch(e){}return dt()}async function Vt(t){t=t||{};let e={size:t.size||t.selectedSize||null,sku:t.sku||t.identifier||t.selectedIdentifier||null,quantity:t.quantity||1},r=Ht();try{let o=r.addToCart?await r.addToCart(e):await J(e);return m("cart: adicionado",o),qt(),$t(r),o}catch(o){m('cart: adapter "'+r.id+'" falhou \u2014 fallback clique nativo',o&&o.message);let n=await J(e);return qt(),$t(r),n}}function qt(){["cart:refresh","cart:updated","cart:build","ajaxProduct:added","product:added-to-cart"].forEach(t=>{try{document.dispatchEvent(new CustomEvent(t))}catch(e){}})}function $t(t){if(!f().cartRedirect||t&&t.skipRedirect)return;let r=t&&t.cartUrl||"/cart";setTimeout(()=>{try{window.location.href=r}catch(o){}},250)}var ro=/\/(thank[_-]?you|orders?\/|pedido[_-]?(confirmado|realizado|finalizado|sucesso)|sucesso|order[_-]?confirmation|compra[_-]?(finalizada|concluida)|orderplaced)/i,no=/\/checkout/i,io=/\/(cart|carrinho|sacola|bag)(\/|$|\?|#)/i,ao=/\/(products?|produtos?|p)\//i,co=/\/(collections?|categoria|categorias|c|departamento)\//i,so=/\/(search|busca|s)(\/|\?)/i;function Gt(){try{if(window.__mkPageType)return window.__mkPageType}catch(e){}try{let e=k();for(let r of e){let o=Array.isArray(r["@type"])?r["@type"]:[r["@type"]];if(o.includes("Order")||o.includes("Invoice"))return"purchase";if(o.includes("Product"))return"pdp";if(o.includes("SearchResultsPage"))return"search";if(o.includes("CollectionPage")||o.includes("ItemList"))return"category"}}catch(e){}let t=(location.pathname||"").toLowerCase();return t==="/"||t===""||t==="/home"||t==="/index.html"?"home":ro.test(t)?"purchase":no.test(t)?"checkout":io.test(t)?"cart":ao.test(t)?"pdp":co.test(t)?"category":so.test(t)?"search":"other"}function Wt(t){let e=null;try{let r=new URLSearchParams(location.search),o=["utm_source","utm_medium","utm_campaign","utm_term","utm_content"],n={};for(let i of o){let a=r.get(i);a&&(n[i.replace("utm_","")]=a)}Object.keys(n).length&&(e=n)}catch(r){}return{url:location.href,pathname:location.pathname,referrer:document.referrer||null,title:document.title||null,pageType:t,utm:e,userAgent:navigator.userAgent,language:navigator.language,viewport:window.innerWidth+"x"+window.innerHeight,platform:lo()}}function lo(){return Jt()}var ft={},uo=null,O=0,Xt=!1;function Yt(t){Xt||(Xt=!0,Zt(t),po(),fo(),mo(),ho(),go(t))}function Zt(t){ft={};let e=Gt(),r=Wt(e);if(Ot(r),l("view",{url:location.href,pathname:location.pathname,referrer:document.referrer||null,title:document.title||null,pageType:e}),typeof t=="function")try{t(e,r)}catch(o){}}function po(){if(!document.body)return;let t={A:1,BUTTON:1,INPUT:1,SELECT:1,TEXTAREA:1},e=0;document.body.addEventListener("click",r=>{try{let o=Date.now();if(o-e<100)return;e=o;let n=r.target;for(let c=0;c<5&&n&&n!==document.body&&!(t[n.tagName]||n.getAttribute&&n.getAttribute("role")==="button");c++)n=n.parentElement;if(!n||!t[n.tagName]&&!(n.getAttribute&&n.getAttribute("role")==="button"))return;let i={tag:n.tagName},a=n.tagName==="INPUT"||n.tagName==="TEXTAREA"?n.value:n.textContent;i.text=(a||"").replace(/\s+/g," ").trim().substring(0,100),n.href&&(i.href=String(n.href).substring(0,500)),n.id&&(i.id=n.id),n.className&&typeof n.className=="string"&&(i.classes=n.className.trim().substring(0,200)),l("click",i)}catch(o){}},{capture:!0,passive:!0})}function fo(){let t=[25,50,75,100],e=null,r=()=>{try{let o=window.scrollY||document.documentElement.scrollTop||0,n=Math.max(document.body&&document.body.scrollHeight||0,document.documentElement&&document.documentElement.scrollHeight||0);if(n<=0)return;let i=Math.min(100,Math.floor((o+window.innerHeight)/n*100));for(let a of t)i>=a&&!ft[a]&&(ft[a]=!0,l("scroll_depth",{depth:a}))}catch(o){}};r(),window.addEventListener("scroll",()=>{e||(e=setTimeout(()=>{e=null,r()},250))},{passive:!0})}function mo(){document.body&&document.body.addEventListener("submit",t=>{try{let e=t.target;if(!e||e.tagName!=="FORM"||e.querySelector('input[type="password"], input[name*="card"], input[name*="cpf"]'))return;let r="other",o=(e.className||"").toLowerCase(),n=(e.action||"").toLowerCase();e.querySelector('input[type="search"], input[name="q"], input[name="s"]')?r="search":/newsletter|subscribe|mailchimp/.test(o+n)?r="newsletter":/contact|contato/.test(o+n)&&(r="contact"),l("form_submit",{form_id:e.id||"",form_type:r})}catch(e){}},{capture:!0})}function ho(){let t=f();O=Date.now(),uo=setInterval(()=>{if(document.hidden)return;let e=Date.now(),r=Math.round((e-O)/1e3);O=e,r>0&&r<60&&l("engagement",{url:location.pathname,dwellSec:r})},t.engagementIntervalMs),document.addEventListener("visibilitychange",()=>{if(document.hidden){let e=Math.round((Date.now()-O)/1e3);e>0&&e<600&&l("engagement",{url:location.pathname,dwellSec:e})}O=Date.now()})}function go(t){let e=location.href,r=()=>{location.href!==e&&(e=location.href,Zt(t))};try{let o=history.pushState,n=history.replaceState;history.pushState=function(){o.apply(this,arguments),setTimeout(r,0)},history.replaceState=function(){n.apply(this,arguments),setTimeout(r,0)},window.addEventListener("popstate",r)}catch(o){}}function mt(){let t=M(),e=k(["Product"]);if(e.length>0){let n=e[0],i=Array.isArray(n.offers)?n.offers[0]:n.offers;return{sku:t?t.value:n.sku||n.mpn||n.gtin13||n.productID||null,skuSource:t?t.source:null,name:typeof n.name=="string"?n.name:null,price:i&&parseFloat(i.price||i.lowPrice)||null,currency:i?i.priceCurrency:null,brand:n.brand?typeof n.brand=="string"?n.brand:n.brand.name:null,category:n.category||null}}let r=n=>{let i=document.querySelector('meta[property="og:'+n+'"], meta[property="product:'+n+'"]');return i?i.getAttribute("content"):null},o=n=>{let i=document.querySelector('[itemprop="'+n+'"]');return i?i.getAttribute("content")||(i.textContent||"").trim():null};if(t||r("type")==="product"||r("price:amount")||o("name")){let n=o("price")||r("price:amount");return{sku:t?t.value:null,skuSource:t?t.source:null,name:o("name")||r("title")||document.title||null,price:n&&parseFloat(String(n).replace(",","."))||null,currency:o("priceCurrency")||r("price:currency")||null,brand:o("brand")||null,category:null}}return null}function Qt(){let t=k(["Order","Invoice"]);if(t.length>0){let o=t[0],n=o.totalPaymentDue?parseFloat(o.totalPaymentDue.price):parseFloat(o.price||o.total);return{orderId:o.orderNumber||o.confirmationNumber||o.identifier||null,revenue:Number.isFinite(n)?n:null,currency:o.totalPaymentDue&&o.totalPaymentDue.priceCurrency||o.priceCurrency||null,source:"jsonld"}}try{if(Array.isArray(window.dataLayer))for(let o=window.dataLayer.length-1;o>=0;o--){let n=window.dataLayer[o];if(n&&n.event==="purchase"&&n.ecommerce){let i=n.ecommerce;return{orderId:i.transaction_id||i.transactionId||null,revenue:parseFloat(i.value||i.revenue)||null,currency:i.currency||i.currencyCode||null,itemCount:(i.items||i.products||[]).length||null,source:"datalayer"}}}}catch(o){}let e=document.querySelector('meta[property="order:total"], meta[name="order-total"]');if(e&&e.content)return{orderId:null,revenue:parseFloat(e.content)||null,source:"meta"};let r=yo();return r||null}function yo(){try{let t=[".order-total","#order-total",".total-price",".order__total","[data-order-total]",".summary-total",".grand-total"];for(let e of t){let r=document.querySelector(e);if(r){let o=xo(r.textContent);if(o)return{orderId:wo(),revenue:o,source:"dom"}}}return null}catch(t){return null}}function wo(){try{let e=(document.body.innerText||"").match(/(?:pedido|order|n[º°o]\.?)\s*#?\s*([A-Z0-9-]{4,})/i);return e?e[1]:null}catch(t){return null}}function xo(t){if(!t)return null;let e=String(t).replace(/[^\d.,]/g,"");if(!e)return null;let r;e.indexOf(",")>e.indexOf(".")?r=e.replace(/\./g,"").replace(",","."):r=e.replace(/,/g,"");let o=parseFloat(r);return Number.isFinite(o)&&o>0?o:null}function te(){let t=k(["ItemList","CollectionPage"]);if(t.length===0)return null;let e=t[0],r=e.itemListElement||e.mainEntity&&e.mainEntity.itemListElement||[],o=[];for(let n of r.slice(0,50)){let i=n.item||n;i&&(i.sku||i.productID||i.name)&&o.push(i.sku||i.productID||i.name)}return o.length>0?{count:o.length,skus:o.slice(0,20)}:null}var ee=!1,G=[/\b(adicionar|adic\.?|colocar|incluir|jogar)\b.{0,30}\b(carrinho|sacola|sacolinha|bag)\b/i,/\bcomprar\b(?!\s+(em|por|sem))/i,/\bcomprar\s*$/i,/^add\s+to\s+(cart|bag)\b/i,/^buy\s+(now|it|this)\b/i,/^(sacolinha|carrinho|sacola)$/i],bo=[/^finalizar(\s+(compra|pedido|pagamento))?\b/i,/^(fechar|confirmar)\s+(compra|pedido|pagamento)\b/i,/^pagar(\s+(agora|pedido))?\b/i,/^(complete|place)\s+(purchase|order)\b/i,/^checkout$/i];function F(t,e){for(let r=0;r<t.length;r++)if(t[r].test(e))return!0;return!1}function oe(t){switch(t){case"pdp":{let e=mt();l("view_item",e||{sku:null});break}case"category":case"search":{let e=te();l("view_item_list",e||{count:0});break}case"cart":l("view_cart",{});break;case"checkout":l("begin_checkout",{});break;case"purchase":ko();break}}function ko(){let t=Qt();if(t&&t.orderId){let e="_mk_purch_"+t.orderId;try{if(sessionStorage.getItem(e)){m("purchase j\xE1 contado",t.orderId);return}sessionStorage.setItem(e,"1")}catch(r){}}else if(ee)return;ee=!0,l("purchase",t||{revenue:null,_note:"no_order_data_extracted"}),m("purchase emitido",t)}function re(){if(!document.body)return;let t=0;document.body.addEventListener("click",e=>{try{let r=Date.now();if(r-t<150)return;let o=e.target;for(let c=0;c<5&&o&&o!==document.body&&!(o.tagName==="BUTTON"||o.tagName==="A"||o.getAttribute&&o.getAttribute("role")==="button");c++)o=o.parentElement;if(!o)return;let n=o.tagName!=="A",i=(o.textContent||"").replace(/\s+/g," ").trim();if(!i||i.length>80)return;let a=!1;if((F([G[0]],i)||n&&F([G[1]],i)||n&&F([G[2]],i)||F(G.slice(3),i))&&(a=!0),a){t=r;let c=mt();l("add_to_cart",{via:"click",buttonText:i,sku:c?c.sku:null,price:c?c.price:null});return}n&&F(bo,i)&&(t=r,l("begin_checkout",{via:"click",buttonText:i}))}catch(r){}},{capture:!0,passive:!0})}var b=null,C=null,X=!1,I=null,ne={},ht=null,W=0,w={onReady:null,onClose:null,onAddToCart:null,onProductLoaded:null,onError:null,onInteraction:null,onGenerationComplete:null},Co={gregory:"698c7e791d3129430f15dddd"};function ae(t){return t?Co[String(t).toLowerCase()]||t:null}async function R(t,e){let r=f(),o=ae(t);e=String(e||"").trim();let n=r.apiUrl+"/availability/"+o+"?sku="+encodeURIComponent(e),i=await fetch(n);if(!i.ok)throw new Error("availability HTTP "+i.status);return i.json()}async function ce(t,e){e||(e=t,t="698c7e791d3129430f15dddd");try{return(await R(t,e)).available===!0}catch(r){return!1}}async function Y(t){if(t=t||{},X)return;let e=ae(t.projectId||t.projectid||t.store),r=String(t.identifier||t.sku||"").trim();if(!e||!r){console.error("[mk-sdk] open: projectId e identifier obrigatorios");return}let o=e+":"+r;if(ne[o]!==!0){try{if(!(await R(e,r)).available){alert("Produto nao disponivel para prova virtual.");return}}catch(n){alert("Produto nao encontrado ou indisponivel.");return}ne[o]=!0}I={projectId:e,identifier:r,width:t.width||430,height:t.height||800},le(),vo(I),X=!0,W=Date.now(),l("modal_opened",{projectId:e,identifier:r})}function yt(){X&&(_o(),X=!1,S("onClose"),l("modal_closed",{projectId:I&&I.projectId,identifier:I&&I.identifier}))}function vo(t){b=document.createElement("div"),b.style.cssText="position:fixed;inset:0;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:99999;";let e=document.createElement("div"),r=typeof t.width=="number"?t.width+"px":t.width,o=typeof t.height=="number"?t.height+"px":t.height;e.style.cssText="position:relative;width:"+r+";height:"+o+";max-width:100vw;max-height:100dvh;border-radius:12px;overflow:hidden;background:#fff;",C=document.createElement("iframe");let n=encodeURIComponent(t.identifier).replace(/\./g,"%2E");C.src=f().appUrl+"/"+t.projectId+"/"+n,C.style.cssText="width:100%;height:100%;border:none;",C.setAttribute("allow","camera *; microphone *"),C.setAttribute("allowfullscreen","true"),e.appendChild(C),b.appendChild(e),document.body.appendChild(b),m("try-on modal aberto",C.src)}function _o(){b&&b.parentNode&&b.parentNode.removeChild(b),b=null,C=null}var ie=!1;function se(){le()}function le(){ie||(ie=!0,window.addEventListener("message",t=>{let e=t.data;if(!e||e.source!=="mkfashion-app")return;let r=e.action,o=e.data||{};switch(r){case"close_request":yt();break;case"ready":S("onReady",o);break;case"product_loaded":S("onProductLoaded",o),l("product_loaded",gt(o));break;case"interaction":{S("onInteraction",o),o&&o.method&&(ht=o.method),l(So(o),gt(o));break}case"add_to_cart":l("add_to_cart",Object.assign({via:"tryon"},gt(o))),typeof w.onAddToCart=="function"?S("onAddToCart",o):Vt(o).catch(()=>{});break;case"generation_start":W=Date.now();break;case"generation_complete":S("onGenerationComplete",o),l("generation_complete",{method:o.method||ht||"unknown",durationMs:W?Date.now()-W:null,success:o.success!==!1,imageUrlPresent:!!o.imageUrl});break;case"generation_error":S("onError",o),l("generation_error",{method:ht||"unknown",error:o&&o.error});break}}))}function So(t){return t&&t.action,"interaction"}function gt(t){if(!t||typeof t!="object")return t;let e={};for(let r in t){if(r==="imageUrl"||r==="image"||r==="product"){r==="product"&&t[r]?(e.productSku=t[r].sku||null,e.productName=t[r].name||null):e[r+"Present"]=!!t[r];continue}e[r]=t[r]}return e}function S(t,e){if(typeof w[t]=="function")try{w[t](e)}catch(r){console.error("[mk-sdk]",r)}}function ue(t){w.onReady=t}function de(t){w.onClose=t}function pe(t){w.onAddToCart=t}function fe(t){w.onProductLoaded=t}function me(t){w.onError=t}function he(t){w.onInteraction=t}function ge(t){w.onGenerationComplete=t}var Eo=767,Ao=1024,Lo=/(adicionar\s*(à|a|ao)?\s*(sacola|carrinho|cesta|bolsa))|adicionar ao carrinho|add to (cart|bag)|comprar agora|^comprar$|finalizar compra|eu quero/i,Io=/continuar|como comprar|lista|desejos|favorito|looks|cupom/i;function ye(t){try{let e=t.getBoundingClientRect();if(e.width<=0||e.height<=0)return!1;let r=getComputedStyle(t);return r.display!=="none"&&r.visibility!=="hidden"&&r.opacity!=="0"}catch(e){return!1}}function Ro(t){if(!t)return!1;try{let e=document.querySelector(t);return!!e&&ye(e)}catch(e){return!1}}function Po(t){return(t.tagName==="INPUT"?t.value||"":t.textContent||"").replace(/\s+/g," ").trim()}function Bo(t){if(!t||typeof t!="object"||t.selector)return t;let e=!1;if(["mobile","tablet","desktop"].forEach(o=>{let n=t[o];n&&n.mkAnchor===1&&n.anchor&&typeof n.anchor=="object"&&(e=!0)}),!e)return t;let r={};return["mobile","tablet","desktop"].forEach(o=>{let n=t[o];if(n){if(n.selector){r[o]=n;return}if(n.mkAnchor===1&&n.anchor&&typeof n.anchor=="object"){let i=n.anchor[o]||n.anchor.desktop||n.anchor.mobile||n.anchor.tablet;i&&i.selector&&(r[o]=i)}}}),["bpMobile","bpTablet","breakpoint"].forEach(o=>{t[o]!=null&&(r[o]=t[o])}),r}function wt(t){if(!t||typeof t!="object")return null;if(t=Bo(t),t.selector)return t;let e=[["mobile",t.mobile],["tablet",t.tablet],["desktop",t.desktop]].filter(u=>u[1]&&u[1].selector);if(e.length===0)return null;if(e.length===1)return e[0][1];let r=e.filter(([,u])=>Ro(u.selector));if(r.length===1)return r[0][1];let o=window.innerWidth||1024,n=Number(t.bpMobile)||Number(t.breakpoint)||Eo,i=Number(t.bpTablet)||Ao,a=u=>(e.find(s=>s[0]===u)||[])[1],c=o<=n?["mobile","tablet","desktop"]:o<=i?["tablet","desktop","mobile"]:["desktop","tablet","mobile"];for(let u of c){let s=a(u);if(s)return s}return e[0][1]}function we(){let t=f(),e=wt(t&&t.anchor);if(e&&e.selector)try{let o=document.querySelector(e.selector);if(o)return{el:o,position:e.position||"afterend",mode:e.mode||"flow",style:e.style||"",align:e.align||"top-left",selector:e.selector}}catch(o){}let r=document.querySelectorAll('button, [role="button"], a.btn, a.button, input[type="submit"], input[type="button"]');for(let o of r){let n=Po(o);if(!(!n||n.length>40)&&!Io.test(n)&&Lo.test(n)&&ye(o))return{el:o,position:"afterend",mode:"flow",style:"",selector:null}}return null}var y="'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",xt={none:"0",sm:"4px",md:"8px",pill:"9999px"},bt={none:"0",sm:"4px",md:"8px",lg:"16px"},jo='<svg viewBox="0 0 17.5263 20.6862" fill="none" xmlns="http://www.w3.org/2000/svg" style="display:block;width:100%;height:100%"><g><path d="M8.49995 12.1862C10.1568 12.1862 11.5 10.8431 11.5 9.18622C11.5 7.52936 10.1568 6.18622 8.49995 6.18622C6.8431 6.18622 5.49995 7.52936 5.49995 9.18622C5.49995 10.8431 6.8431 12.1862 8.49995 12.1862Z" stroke="currentColor" shape-rendering="crispEdges"/><path d="M0.5 9.11152C0.5 6.56953 0.5 5.29894 1.1099 4.38664C1.375 3.9902 1.71424 3.65088 2.10821 3.38809C2.6945 2.9958 3.42899 2.85564 4.55351 2.80588C5.09013 2.80588 5.55183 2.39949 5.65687 1.87284C5.73715 1.48708 5.94572 1.14138 6.24735 0.894155C6.54898 0.646934 6.92516 0.51336 7.31231 0.516006H9.9734C10.7779 0.516006 11.4709 1.08412 11.6288 1.87284C11.7339 2.39949 12.1956 2.80588 12.7322 2.80588C13.8559 2.85564 12.9129 4.67413 13.5 5.06559C13.8949 5.32932 15.1484 3.80355 15.5 4.02647C16.1099 4.93876 16.7857 6.56953 16.7857 9.11152C16.7857 11.6535 16.7857 12.9233 16.1758 13.8364C15.9107 14.2328 15.5715 14.5722 15.1775 14.835C14.2647 15.4445 12.9936 15.4445 10.4522 15.4445H6.83351C4.29213 15.4445 3.02103 15.4445 2.10821 14.835C1.71446 14.5718 1.3755 14.2322 1.11071 13.8356C0.933802 13.5672 0.803519 13.2698 0.725557 12.9564" stroke="currentColor" stroke-linecap="round"/><path d="M12.676 0.607931C12.9446 -0.178095 14.0307 -0.2019 14.3491 0.536515L14.3761 0.60838L14.7385 1.66839C14.8216 1.91149 14.9559 2.13395 15.1322 2.32076C15.3086 2.50757 15.5229 2.65439 15.7608 2.75131L15.8583 2.78769L16.9183 3.14971C17.7044 3.41831 17.7282 4.50437 16.9902 4.82283L16.9183 4.84978L15.8583 5.21225C15.6151 5.29526 15.3926 5.42947 15.2057 5.60582C15.0188 5.78218 14.8719 5.99657 14.7749 6.23453L14.7385 6.33155L14.3765 7.39201C14.1079 8.17803 13.0219 8.20184 12.7039 7.46387L12.676 7.39201L12.314 6.332C12.231 6.08881 12.0968 5.86627 11.9204 5.67938C11.744 5.49249 11.5297 5.3456 11.2917 5.24863L11.1947 5.21225L10.1347 4.85022C9.34817 4.58163 9.32437 3.49557 10.0628 3.17756L10.1347 3.14971L11.1947 2.78769C11.4378 2.70462 11.6602 2.57039 11.847 2.39404C12.0339 2.21769 12.1807 2.00333 12.2776 1.76541L12.314 1.66839L12.676 0.607931Z" fill="currentColor"/></g></svg>',No='<svg viewBox="0 0 11.6122 12.7248" fill="none" xmlns="http://www.w3.org/2000/svg" style="display:block;width:12px;height:12px"><path d="M4.09055 2.01133C4.43939 0.9905 5.84989 0.959583 6.26347 1.91858L6.29847 2.01192L6.76922 3.38858C6.8771 3.7043 7.05144 3.99321 7.28047 4.23583C7.5095 4.47845 7.7879 4.66912 8.09689 4.795L8.22347 4.84225L9.60014 5.31242C10.621 5.66125 10.6519 7.07175 9.69347 7.48533L9.60014 7.52033L8.22347 7.99108C7.90764 8.09889 7.61862 8.2732 7.3759 8.50223C7.13318 8.73127 6.94241 9.0097 6.81647 9.31875L6.76922 9.44475L6.29905 10.822C5.95022 11.8428 4.53972 11.8737 4.12672 10.9153L4.09055 10.822L3.62039 9.44533C3.51258 9.12951 3.33827 8.84048 3.10924 8.59776C2.8802 8.35504 2.60177 8.16427 2.29272 8.03833L2.16672 7.99108L0.790054 7.52092C-0.231363 7.17208 -0.26228 5.76158 0.69672 5.34858L0.790054 5.31242L2.16672 4.84225C2.48244 4.73437 2.77135 4.56003 3.01397 4.331C3.25658 4.10197 3.44726 3.82357 3.57314 3.51458L3.62039 3.38858L4.09055 2.01133ZM9.86147 0C9.9706 0 10.0775 0.0306123 10.1701 0.0883584C10.2627 0.146104 10.3373 0.228668 10.3853 0.326667L10.4133 0.394917L10.6175 0.993417L11.2166 1.19758C11.3259 1.23474 11.4218 1.30353 11.492 1.39523C11.5623 1.48693 11.6037 1.59741 11.611 1.71268C11.6184 1.82795 11.5914 1.94281 11.5334 2.04271C11.4755 2.14261 11.3891 2.22305 11.2854 2.27383L11.2166 2.30183L10.6181 2.506L10.4139 3.10508C10.3767 3.21442 10.3078 3.31024 10.2161 3.38041C10.1244 3.45058 10.0139 3.49194 9.89859 3.49925C9.78333 3.50656 9.66849 3.47949 9.56863 3.42147C9.46876 3.36345 9.38837 3.27709 9.33764 3.17333L9.30964 3.10508L9.10547 2.50658L8.50639 2.30242C8.39702 2.26526 8.30115 2.19647 8.23092 2.10477C8.16069 2.01307 8.11926 1.90259 8.11189 1.78732C8.10452 1.67205 8.13153 1.55719 8.18951 1.45729C8.24749 1.35739 8.33381 1.27695 8.43755 1.22617L8.50639 1.19817L9.10489 0.994L9.30905 0.394917C9.34839 0.279665 9.42281 0.179613 9.52187 0.108791C9.62094 0.0379686 9.73969 -0.0000730808 9.86147 0Z" fill="currentColor"/></svg>';function p(t,e={}){let r=document.createElement(t);if(e.style&&(r.style.cssText=e.style),e.text!=null&&(r.textContent=e.text),e.html!=null&&(r.innerHTML=e.html),e.attrs)for(let o in e.attrs)r.setAttribute(o,e.attrs[o]);if(e.on)for(let o in e.on)r.addEventListener(o,e.on[o]);if(e.children)for(let o of e.children)o&&r.appendChild(o);return r}function Z(t){return p("span",{style:`width:24px;height:24px;padding:2px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;color:${t};flex-shrink:0;`,html:jo})}function xe(t){return p("span",{style:`width:12px;height:12px;display:inline-flex;align-items:center;justify-content:center;color:${t};flex-shrink:0;`,html:No})}function Q(t){return t.borderWidth>0&&t.borderColor?`${t.borderWidth}px solid ${t.borderColor}`:"none"}function tt(){if(!document.getElementById("mk-jakarta-font"))try{document.head.appendChild(p("link",{attrs:{id:"mk-jakarta-font",rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;600;700&display=swap"}}))}catch(t){}}function Uo(t){return t.subtext?p("span",{style:`display:flex;align-items:center;justify-content:center;padding:4px;background:${t.badgeBgColor};font-family:${y};font-weight:700;font-size:16px;text-transform:uppercase;color:${t.badgeTextColor};line-height:1;white-space:nowrap;`,text:t.subtext}):null}function be(t,e){tt();let r=p("span",{style:"display:inline-flex;align-items:center;gap:4px;",children:[Z(t.textColor),p("span",{text:t.text,style:`font-family:${y};font-weight:700;font-size:${t.fontSize}px;text-transform:uppercase;letter-spacing:2px;color:${t.textColor};white-space:nowrap;text-align:center;line-height:1;`})]});return p("button",{attrs:{type:"button"},style:`display:flex;align-items:center;justify-content:center;gap:8px;padding:8px;width:100%;max-width:238px;box-sizing:border-box;background:${t.bgColor};border:${Q(t)};border-radius:${t.borderRadiusPx};font-family:${y};cursor:pointer;transition:opacity 0.2s ease;line-height:1;-webkit-appearance:none;appearance:none;`,children:[r,Uo(t)],on:{mouseenter:o=>{o.currentTarget.style.opacity="0.85"},mouseleave:o=>{o.currentTarget.style.opacity="1"},click:()=>{try{e&&e()}catch(o){}}}})}function Oo(t){return t.subtext?p("span",{style:`display:flex;align-items:center;gap:4px;padding:4px;background:${t.badgeBgColor};font-family:${y};font-weight:600;font-size:10px;text-transform:uppercase;color:${t.badgeTextColor};line-height:1;white-space:nowrap;`,children:[xe(t.badgeTextColor),p("span",{text:t.subtext})]}):null}function Fo(t,e){return p("button",{attrs:{type:"button"},style:`display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 12px 8px 8px;width:100%;margin-top:auto;box-sizing:border-box;background:${t.bgColor};border:${Q(t)};border-radius:${t.borderRadiusPx};filter:drop-shadow(0 0 6px rgba(0,0,0,0.08));font-family:${y};cursor:pointer;transition:opacity 0.2s ease;line-height:1;-webkit-appearance:none;appearance:none;`,children:[Z(t.textColor),p("span",{text:t.text,style:`font-family:${y};font-weight:700;font-size:${t.fontSize}px;color:${t.textColor};white-space:nowrap;line-height:1;`})],on:{mouseenter:r=>{r.currentTarget.style.opacity="0.85"},mouseleave:r=>{r.currentTarget.style.opacity="1"},click:()=>{try{e&&e()}catch(r){}}}})}function ke(t,e){tt();let r=p("div",{style:"display:flex;flex-direction:column;gap:4px;",children:[t.cardTitle&&p("p",{text:t.cardTitle,style:`margin:0;font-family:${y};font-weight:700;font-size:16px;letter-spacing:1px;text-transform:uppercase;color:${t.cardTitleColor};line-height:1.2;`}),t.cardDescription&&p("p",{html:t.cardDescription,style:`margin:0;font-family:${y};font-weight:400;font-size:12px;max-width:177px;line-height:1.2;color:${t.cardTextColor};`})]}),o=p("div",{style:"display:flex;flex-direction:column;justify-content:space-between;gap:16px;flex:1 1 0;min-width:0;",children:[r,t.cardFooter&&p("p",{text:t.cardFooter,style:`margin:0;font-family:${y};font-weight:400;font-size:10px;color:${t.cardTextColor};line-height:1.2;`})]}),n=p("div",{style:"display:flex;flex-direction:column;align-items:flex-end;flex:1 1 0;min-width:0;",children:[Oo(t),Fo(t,e)]}),i=p("div",{style:"display:flex;gap:16px;align-items:stretch;width:100%;flex:1;box-sizing:border-box;",children:[o,n]});return p("div",{style:`display:flex;flex-direction:column;align-items:flex-start;padding:12px;width:100%;max-width:402px;min-height:140px;box-sizing:border-box;background:${t.cardBgColor};border-radius:${t.cardBorderRadiusPx};font-family:${y};`,children:[i]})}var zo={style:"gregory-black",text:"Provar Virtualmente",fontSize:14,subtext:"",bgColor:"#1E1E1E",textColor:"#FFFFFF",badgeBgColor:"#C51A1B",badgeTextColor:"#FFFFFF",borderRadius:"md",borderColor:"#1E1E1E",borderWidth:0,cardTitle:"",cardDescription:"",cardFooter:"",cardBgColor:"#F6F6F6",cardTitleColor:"#1E1E1E",cardTextColor:"#717171",cardBorderRadius:"md"};async function kt(t,e){try{let r=await fetch(`${t}/projects/${e}`);if(!r.ok)throw new Error("HTTP "+r.status);let o=await r.json();return o&&o.project&&o.project.template&&o.project.template.tryOnButton||o&&o.template&&o.template.tryOnButton||null}catch(r){return null}}function Ct(t,e){let r=(e?t&&t.mobile:t&&t.desktop)||t&&t.desktop||t&&t.mobile||{},o={...zo,...r};return o.style==="gregory-card"&&e&&(o.style="gregory-black"),o.borderRadiusPx=xt[o.borderRadius]!=null?xt[o.borderRadius]:"0",o.cardBorderRadiusPx=bt[o.cardBorderRadius]!=null?bt[o.cardBorderRadius]:"0",o.fontSize=Number(o.fontSize)||14,o.borderWidth=Number(o.borderWidth)||0,o}var vt={"gregory-black":be,"gregory-card":ke},Ir=Object.keys(vt);function Ce(t,e){return(vt[t.style]||vt["gregory-black"])(t,e)}var Et="mk-tryon-button-host",et=null,_t=!1,St={},ve=!1,Tt=null;function _e(t,e){return Tt||(Tt=kt(t,e).catch(()=>null)),Tt}function qo(){if(ve)return;ve=!0;let t=null;try{window.addEventListener("resize",()=>{clearTimeout(t),t=setTimeout(()=>{et&&P("pdp")},200)})}catch(e){}}function At(){let t=document.getElementById(Et);if(t){if(typeof t.__mkCleanup=="function")try{t.__mkCleanup()}catch(e){}t.parentNode&&t.parentNode.removeChild(t)}et=null}var $o={IMG:1,INPUT:1,VIDEO:1,CANVAS:1,EMBED:1,OBJECT:1,IFRAME:1,BR:1,HR:1,SELECT:1,TEXTAREA:1,SVG:1};function Ko(t){switch(t){case"top-center":return"top:0;left:50%;transform:translateX(-50%);";case"top-right":return"top:0;right:0;";case"middle-left":return"top:50%;left:0;transform:translateY(-50%);";case"center":return"top:50%;left:50%;transform:translate(-50%,-50%);";case"middle-right":return"top:50%;right:0;transform:translateY(-50%);";case"bottom-left":return"bottom:0;left:0;";case"bottom-center":return"bottom:0;left:50%;transform:translateX(-50%);";case"bottom-right":return"bottom:0;right:0;";case"top-left":default:return"top:0;left:0;"}}function Ho(t,e,r){let n=!$o[t.tagName]?t:t.parentElement||document.body;try{getComputedStyle(n).position==="static"&&(n.style.position="relative")}catch(s){}if(n===t){e.style.cssText="position:absolute;z-index:2147483000;"+Ko(r),t.appendChild(e);return}e.style.cssText="position:absolute;z-index:2147483000;",n.appendChild(e);let i=()=>{try{let s=t.getBoundingClientRect(),x=n.getBoundingClientRect(),h=e.offsetWidth,d=e.offsetHeight,v=s.top-x.top+n.scrollTop,T=s.left-x.left+n.scrollLeft,g=r||"top-left",D=v,_=T;g.indexOf("bottom")===0?D=v+s.height-d:(g.indexOf("middle")===0||g==="center")&&(D=v+(s.height-d)/2),g.indexOf("right")>=0?_=T+s.width-h:g.indexOf("center")>=0&&(_=T+(s.width-h)/2),e.style.top=D+"px",e.style.left=_+"px"}catch(s){}};i();let a=()=>i();window.addEventListener("resize",a);let c=setTimeout(i,600),u=setTimeout(i,1500);e.__mkCleanup=()=>{window.removeEventListener("resize",a),clearTimeout(c),clearTimeout(u)}}function Jo(t,e,r){try{return t.insertAdjacentElement(r||"afterend",e),!0}catch(o){try{return t.parentNode.insertBefore(e,t.nextSibling),!0}catch(n){return!1}}}async function P(t){let e=f();if(t!=="pdp"){At();return}if(!e.projectId)return;if(!e.anchor){let u=await _e(e.apiUrl,e.projectId);u&&u.anchor&&(e.anchor=u.anchor)}if(_t)return;let r=M(),o=r&&r.value,n=!!e.forceButton,i=wt(e.anchor),a=[o||"demo",i?[i.selector,i.position,i.mode,i.align,i.style].join("~"):"heuristic"].join("|"),c=document.getElementById(Et);if(!(c&&et===a)){if(c&&At(),!o&&!n){m("auto-mount: SKU n\xE3o resolvido na PDP");return}_t=!0;try{let u=n;if(n||(St[o]||(St[o]=R(e.projectId,o).then(E=>!!(E&&E.available)).catch(()=>!1)),u=await St[o]),!u){m("auto-mount: produto sem try-on",o);return}let s=await _e(e.apiUrl,e.projectId),x=window.matchMedia("(max-width: 767px)").matches,h=Ct(s,x),d=we(),v=d&&d.mode||"flow",T=Ce(h,()=>{let E=M();Y({projectId:e.projectId,identifier:E&&E.value||o||""})}),g=document.createElement("div");g.id=Et,g.attachShadow({mode:"open"}).appendChild(T);let _=!1;if(d&&d.el&&d.el.parentNode&&(v==="overlay"?(Ho(d.el,g,d.align),_=!0):(g.style.cssText="display:contents;",_=Jo(d.el,g,d.position))),_||(g.style.cssText="position:fixed;left:16px;bottom:16px;z-index:2147483000;",document.body.appendChild(g)),d&&d.style)try{T.style.cssText+=";"+d.style}catch(E){}et=a,qo(),m("auto-mount: bot\xE3o injetado",{style:h.style,sku:o,anchorFound:!!d,position:d&&d.position,mode:v,forced:n}),l("button_rendered",{style:h.style,sku:o||null,skuSource:r&&r.source,anchorFound:!!d,position:d?d.position:null,mode:v,forced:n})}finally{_t=!1}}}function Se(){try{let t=f(),e={anchor:t.anchor,forceButton:t.forceButton};window.addEventListener("message",r=>{if(r.source!==window)return;let o=r.data;!o||!o.__mkCmd||(o.__mkCmd==="remount"||o.__mkCmd==="applyRecipe"?(t.anchor=o.anchor||null,t.forceButton=!0,P("pdp")):o.__mkCmd==="cancelPreview"&&(t.anchor=e.anchor,t.forceButton=e.forceButton,At(),P("pdp")))})}catch(t){}}(function(){"use strict";try{let r=function(){try{Ft(),Se(),se(),e.autoTrack!==!1&&(Yt((n,i)=>{oe(n,i),P(n)}),re()),m("mk-sdk iniciado",{projectId:e.projectId,collectorUrl:e.collectorUrl})}catch(n){e.debug&&console.error("[mk-sdk] init erro",n)}},e=rt();document.readyState==="loading"?document.addEventListener("DOMContentLoaded",r):r();let o={open:Y,close:yt,isAvailable:ce,getAvailability:R,onReady:ue,onClose:de,onAddToCart:pe,onProductLoaded:fe,onError:me,onInteraction:he,onGenerationComplete:ge,_version:"0.1.0",_isMkSdk:!0};typeof window!="undefined"&&(window.mk=o)}catch(e){typeof console!="undefined"&&console.error("[mk-sdk] boot fatal",e)}})();})();
|
|
1
|
+
(()=>{var qe=Object.defineProperty;var A=(t,e)=>{for(var r in e)qe(t,r,{get:e[r],enumerable:!0})};var ct={collectorUrl:"https://api-collector.mk3dlabs.com",appUrl:"https://mkfashion.mk3dlabs.com/visualizer",apiUrl:"https://mkfashion-new-api.mk3dlabs.com"},$e={},N=null;function at(){if(N)return N;let t=null;try{t=document.currentScript||document.querySelector("script[data-mk-project]")||document.querySelector('script[src*="mk-sdk"]')||document.querySelector('script[src*="mk-pixel"]')}catch(i){}let e=i=>{try{return t&&t.getAttribute(i)}catch(c){return null}},r=e("data-mk-project")||e("data-mk-client")||window.__MK&&(window.__MK.projectId||window.__MK.clientSlug)||null,o=e("data-mk-product")||window.__MK&&window.__MK.product||"mk-fashion",n=e("data-mk-collector")||window.__MK&&window.__MK.collectorUrl||$e.collectorUrl||ct.collectorUrl;return N={projectId:r,product:o,collectorUrl:n,appUrl:window.__MK&&window.__MK.appUrl||ct.appUrl,apiUrl:window.__MK&&window.__MK.apiUrl||ct.apiUrl,debug:!!(e("data-mk-debug")!==null||window.__MK&&window.__MK.debug||/[?&]mkdebug\b/.test(location.search)),observe:!!(window.__MK&&window.__MK.observe),forceButton:!!(window.__MK&&window.__MK.forceButton),anchor:window.__MK&&window.__MK.anchor||null,cartRedirect:!(window.__MK&&window.__MK.cartRedirect===!1),autoTrack:e("data-mk-no-autotrack")===null,batchIntervalMs:2e3,batchMaxSize:20,engagementIntervalMs:15e3},N}function f(){return N||at()}function m(...t){let e=f();e&&e.debug&&typeof console!="undefined"&&console.log("[mk-sdk]",...t)}var Ut="_mk_vid",Mt="_mk_sid",O=null,U=null;function $(){return typeof crypto!="undefined"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{let e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function Dt(){if(O)return O;try{let t=localStorage.getItem(Ut);return t||(t="v_"+$(),localStorage.setItem(Ut,t)),O=t,t}catch(t){return O="v_"+$(),O}}function Ft(){if(U)return U;try{let t=sessionStorage.getItem(Mt);return t||(t="s_"+$(),sessionStorage.setItem(Mt,t)),U=t,t}catch(t){return U="s_"+$(),U}}var zt=[/email/i,/e-?mail/i,/cpf/i,/cnpj/i,/phone/i,/telefone/i,/celular/i,/address/i,/endereco/i,/cep/i,/zip/i,/card/i,/cartao/i,/cvv/i,/password/i,/senha/i,/token/i,/\bnome\b/i,/fullname/i,/firstname/i,/lastname/i,/sobrenome/i,/birth/i,/nascimento/i,/rg\b/i],qt={imageUrl:1,image:1,thumbnail:1,photo:1,imageBase64:1,src:1},st=2e3;function $t(t){for(let e=0;e<zt.length;e++)if(zt[e].test(t))return!0;return!1}function Kt(t){if(!t||typeof t!="object"||Array.isArray(t))return typeof t=="string"&&t.length>st?t.slice(0,200)+"...[truncated "+t.length+"B]":t;let e={};for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r)||$t(r))continue;let o=t[r];if(qt[r]){e[r+"Present"]=!!o;continue}if(typeof o=="string"&&o.length>st){e[r]=o.slice(0,200)+"...[truncated "+o.length+"B]";continue}if(o&&typeof o=="object"&&!Array.isArray(o)){e[r]=Ke(o);continue}e[r]=o}return e}function Ke(t){let e={};for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r)||$t(r))continue;let o=t[r];if(qt[r]){e[r+"Present"]=!!o;continue}if(typeof o=="string"&&o.length>st){e[r]=o.slice(0,200)+"...[truncated]";continue}e[r]=o}return e}var K=[],lt=null,L=null,He=["off","pdp_tryon","pdp","all"],ut,dt=null,H="unknown",I=[];function Jt(t){if(ut===void 0)return"hold";switch(ut){case"off":return"drop";case"all":return"collect";case"pdp":return t==="pdp"?"collect":"drop";case"pdp_tryon":return t!=="pdp"?"drop":H==="available"?"collect":H==="unavailable"?"drop":"hold";default:return"collect"}}function pt(t){if(!I.length)return;let e=[];for(let r of I){let o=Jt(r._pt);o==="collect"?Wt(r.name,r.params,r.ts):o==="hold"&&!t&&e.push(r)}I=e}function ft(t){ut=He.indexOf(t)>=0?t:"pdp_tryon",pt(!1)}function Vt(t){H=t==="available"?"available":"unavailable",pt(!1)}function Gt(t){pt(!0),L=t,dt=t&&t.pageType||null,H="unknown"}function l(t,e,r){if(!f().projectId){(l._pre=l._pre||[]).push({name:t,params:e,ts:r||Date.now()}),l._pre.length>50&&l._pre.shift();return}if(l._pre&&l._pre.length){let n=l._pre;l._pre=[];for(let i of n)Ht(i.name,i.params,i.ts)}Ht(t,e,r)}function Ht(t,e,r){let o=Jt(dt);if(o==="collect"){Wt(t,e,r);return}if(o==="drop"){m("descartado (escopo)",t);return}I.push({name:t,params:e,ts:r||Date.now(),_pt:dt}),I.length>300&&I.shift()}function Wt(t,e,r){let o=f(),n=Kt(e||{}),i="page_"+Je(t);if(K.push({name:i,ts:r||Date.now(),params:n}),m("queued",t,n),o.observe)try{window.postMessage({__mkpixel:!0,event:{name:i,params:n},site:L?{pageType:L.pageType,platform:L.platform,url:L.url}:null},"*")}catch(c){}if(K.length>=o.batchMaxSize){M();return}lt||(lt=setTimeout(()=>{lt=null,M()},o.batchIntervalMs))}function Je(t){if(typeof t!="string"||!t)return"unknown";let e=t.replace(/^on/,"");return e=e.replace(/[A-Z]/g,(r,o)=>(o>0?"_":"")+r.toLowerCase()),e.indexOf("page_")===0&&(e=e.slice(5)),e}function M(t){if(K.length===0)return;let e=f();if(!e.projectId||!e.collectorUrl)return;let r=K.splice(0,50),o=JSON.stringify({product:e.product||void 0,visitorId:Dt(),sessionId:Ft(),events:r,site:L||void 0}),n=e.collectorUrl+"/v1/track";if(t&&navigator.sendBeacon)try{let i=new Blob([o],{type:"application/json"});navigator.sendBeacon(n+"?projectId="+encodeURIComponent(e.projectId),i);return}catch(i){}fetch(n,{method:"POST",keepalive:!0,headers:{"Content-Type":"application/json","X-MK-Project-Id":e.projectId},body:o}).catch(()=>{})}function Xt(){try{window.addEventListener("pagehide",()=>M(!0)),window.addEventListener("beforeunload",()=>M(!0)),document.addEventListener("visibilitychange",()=>{document.hidden&&M(!0)})}catch(t){}}function C(t){let e=[];try{let r=document.querySelectorAll('script[type="application/ld+json"]');for(let o of r){let n;try{n=JSON.parse(o.textContent)}catch(c){continue}let i=[];Array.isArray(n)?i.push(...n):n["@graph"]?i.push(...n["@graph"]):i.push(n);for(let c of i){if(!c||!c["@type"])continue;let a=Array.isArray(c["@type"])?c["@type"]:[c["@type"]];(!t||t.some(u=>a.includes(u)))&&e.push(c)}}}catch(r){}return e}var mt={};A(mt,{addToCart:()=>Xe,detect:()=>Ge,id:()=>Ve,resolveSku:()=>We});var Ve="shopify";function Ge(){return!!(window.Shopify||window.ShopifyAnalytics)}function We(){let t=window;return t.ShopifyAnalytics&&t.ShopifyAnalytics.meta&&t.ShopifyAnalytics.meta.product?{value:String(t.ShopifyAnalytics.meta.product.id),source:"shopify"}:null}var J=t=>String(t==null?"":t).trim().toLowerCase();async function Xe({size:t,sku:e,quantity:r}){let o=(location.pathname.split("/products/")[1]||"").split(/[?#]/)[0];if(!o)throw new Error("shopify: sem handle de produto na URL (n\xE3o \xE9 PDP?)");let i=(await fetch("/products/"+o+".js").then(s=>s.json())).variants||[],c=s=>[s.option1,s.option2,s.option3,s.title].some(x=>J(x)===J(t)),a=null;if(t&&(a=i.find(s=>c(s)&&s.available)||i.find(c)),!a&&e&&(a=i.find(s=>J(s.sku)===J(e))),a||(a=i.find(s=>s.available)||i[0]),!a)throw new Error("shopify: variante n\xE3o encontrada");let u=await fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({items:[{id:a.id,quantity:r||1}]})});if(!u.ok)throw new Error("shopify: /cart/add.js HTTP "+u.status);return{platform:"shopify",variantId:a.id,size:a.title,sku:a.sku||null}}var ht={};A(ht,{addToCart:()=>to,detect:()=>Ze,id:()=>Ye,resolveSku:()=>Qe});var Ye="hybris";function Ze(){return!!(window.ACC&&window.ACC.config)}function Qe(){let t=(location.pathname||"").match(/\/p\/([^/?#]+)/);return t&&t[1]?{value:decodeURIComponent(t[1]),source:"hybris/url"}:null}var Yt=t=>String(t==null?"":t).trim().toLowerCase();async function to({size:t,quantity:e}){let r=[...document.querySelectorAll('.js-product-select-size, a[data-code], [class*="select-size"]')].filter(h=>h.getAttribute&&h.getAttribute("data-code")),o=t?r.find(h=>Yt(h.textContent)===Yt(t)):null;o||(o=r.find(h=>h.offsetParent!==null)||r[0]);let n=o&&o.getAttribute("data-code");if(!n)throw new Error("hybris: variante (data-code) n\xE3o encontrada");let i=document.getElementById("product--add-to-cart-form")||document.querySelector('form[action*="/cart/add"]'),c=i&&i.querySelector('[name="CSRFToken"]'),a=c&&c.value,u=i&&i.getAttribute("action")||"/cart/add";if(!a)throw new Error("hybris: CSRFToken n\xE3o encontrado");let s=new URLSearchParams;s.set("productCodePost",n),s.set("qty",String(e||1)),s.set("CSRFToken",a);let x=await fetch(u,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},body:s.toString()});if(!x.ok)throw new Error("hybris: "+u+" HTTP "+x.status);return{platform:"hybris",productCode:n,size:o.textContent.trim()}}var gt={};A(gt,{addToCart:()=>no,detect:()=>oo,id:()=>eo,resolveSku:()=>ro});var eo="vtex";function oo(){return!!(window.vtex||window.vtexjs||window.vtxctx||window.skuJson_0)}function ro(){let t=window;return t.vtxctx&&t.vtxctx.skus&&t.vtxctx.skus[0]?{value:String(t.vtxctx.skus[0]),source:"vtex/vtxctx"}:t.skuJson_0&&t.skuJson_0.skus&&t.skuJson_0.skus[0]?{value:String(t.skuJson_0.skus[0].sku),source:"vtex/skuJson"}:null}var V=t=>String(t==null?"":t).trim().toLowerCase();async function no({size:t,quantity:e}){let r=window.skuJson_0&&window.skuJson_0.skus||[];if(!r.length)throw new Error("vtex: skuJson_0 indispon\xEDvel");let o=i=>V(i.skuname)===V(t)||i.dimensions&&Object.values(i.dimensions).some(c=>V(c)===V(t)),n=t?r.find(i=>o(i)&&i.available)||r.find(o):null;if(n||(n=r.find(i=>i.available)||r[0]),!n)throw new Error("vtex: variante n\xE3o encontrada");if(window.vtexjs&&window.vtexjs.checkout&&window.vtexjs.checkout.addToCart)return await window.vtexjs.checkout.addToCart([{id:parseInt(n.sku,10),quantity:e||1,seller:"1"}]),{platform:"vtex",skuId:n.sku,size:n.skuname||t};throw new Error("vtex: vtexjs.checkout indispon\xEDvel")}var yt={};A(yt,{addToCart:()=>lo,detect:()=>ao,id:()=>io,resolveSku:()=>so,skipRedirect:()=>co});var io="nuvemshop",co=!0;function ao(){return!!(window.LS&&(window.LS.cart||window.LS.addToCart))}function so(){try{let t=window.LS,e=t&&t.variants||[],r=document.querySelector('[name="variant_id"]'),o=r&&r.value?e.find(n=>String(n.id)===String(r.value)):null;if(o||(o=e.find(n=>n.available!==!1&&n.sku)||e.find(n=>n.sku)||e[0]),o&&o.sku)return{value:String(o.sku),source:"nuvemshop/variant"};if(t&&t.product&&t.product.sku)return{value:String(t.product.sku),source:"nuvemshop/product"}}catch(t){}return null}var G=t=>String(t==null?"":t).trim().toLowerCase();async function lo({size:t,quantity:e}){let r=document.getElementById("product_form")||document.querySelector('.js-product-form, form[action*="/comprar"]');if(!r)throw new Error("nuvemshop: #product_form n\xE3o encontrado");t&&r.querySelectorAll('select[name^="variation"]').forEach(i=>{let c=[...i.options].find(a=>G(a.textContent).includes(G(t))||G(a.value)===G(t));c&&(i.value=c.value,i.dispatchEvent(new Event("change",{bubbles:!0})))});let o=r.querySelector('[name="quantity"]');return o&&e&&(o.value=String(e)),await new Promise(i=>setTimeout(i,400)),typeof r.requestSubmit=="function"?r.requestSubmit():r.submit(),{platform:"nuvemshop",variantId:(r.querySelector('[name="variant_id"]')||{}).value||null}}var wt={};A(wt,{addToCart:()=>ho,detect:()=>fo,id:()=>uo,resolveSku:()=>mo,skipRedirect:()=>po});var uo="wake",po=!0;function fo(){return!!(window.StorefrontClient||typeof window.addOrCreateCheckout=="function"||typeof window.addToCartClick=="function")}function mo(){try{let t=document.querySelector('input[name="product-id"], [data-product-id]'),e=t?t.value||t.getAttribute("data-product-id"):null;if(e)return{value:String(e).trim(),source:"wake/product-id"};let r=(location.pathname||"").match(/-(\d+)\/?(?:[?#]|$)/);if(r)return{value:r[1],source:"wake/url"}}catch(t){}return null}var Zt=t=>String(t==null?"":t).trim().toLowerCase();async function ho({size:t,quantity:e}){if(t){let i=[...document.querySelectorAll("input[attribute-value]")].find(c=>Zt(c.getAttribute("attribute-value"))===Zt(t));if(i){try{i.checked=!0}catch(c){}try{typeof window.selectAttribute=="function"?window.selectAttribute(i):i.click()}catch(c){}await new Promise(c=>setTimeout(c,600))}}let r=document.querySelector('[name="product-variant-id"]'),o=r&&r.value;if(!o)throw new Error("wake: product-variant-id n\xE3o encontrado");if(typeof window.addOrCreateCheckout!="function")throw new Error("wake: addOrCreateCheckout indispon\xEDvel");if(!await window.addOrCreateCheckout([{productVariantId:Number(o),quantity:e||1,customization:[]}]))throw new Error("wake: addOrCreateCheckout retornou false");return{platform:"wake",productVariantId:o,size:t||null}}var bt={};A(bt,{addToCart:()=>W,detect:()=>yo,id:()=>go,resolveSku:()=>xt});var go="generic";function yo(){return!0}function xt(){let t=C(["Product"]);if(t[0]){let e=t[0],r=e.sku||e.mpn||e.gtin13||e.productID;if(r)return{value:String(r),source:"jsonld"}}try{let e=document.querySelector('[itemprop="sku"]');if(e){let r=e.getAttribute("content")||(e.textContent||"").trim();if(r)return{value:String(r),source:"microdata"}}}catch(e){}try{let e=window.konfidencyData;if(e&&e.product&&e.product.variants&&e.product.variants[0])return{value:String(e.product.variants[0]),source:"konfidency"}}catch(e){}return null}var wo=/(adicionar\s*(à|a|ao)?\s*(sacola|carrinho|cesta|bolsa))|adicionar ao carrinho|add to (cart|bag)|comprar agora/i,xo=/continuar|como comprar|lista|desejos|favorito/i;async function W(){let t=document.querySelectorAll("button,[role=button],input[type=submit]");for(let e of t){let r=(e.textContent||e.value||"").replace(/\s+/g," ").trim();if(r&&r.length<40&&wo.test(r)&&!xo.test(r))try{return e.click(),{platform:"native-click",clicked:r}}catch(o){}}return{platform:"none",error:"bot\xE3o de carrinho nativo n\xE3o encontrado"}}var ee=[mt,ht,gt,yt,wt],bo=[["woocommerce",()=>!!(window.wc_add_to_cart_params||window.woocommerce_params)],["lojaintegrada",()=>!!window.LojaIntegrada]],X;function oe(){return X||(X=ee.find(t=>{try{return t.detect()}catch(e){return!1}})||bt,X)}function re(){let t=ee.find(e=>{try{return e.detect()}catch(r){return!1}});if(t)return t.id;for(let[e,r]of bo)try{if(r())return e}catch(o){}return null}function D(){let t=oe();if(t.id!=="generic"&&t.resolveSku)try{let e=t.resolveSku();if(e)return e}catch(e){}return xt()}async function ne(t){t=t||{};let e={size:t.size||t.selectedSize||null,sku:t.sku||t.identifier||t.selectedIdentifier||null,quantity:t.quantity||1},r=oe();try{let o=r.addToCart?await r.addToCart(e):await W(e);return m("cart: adicionado",o),Qt(),te(r),o}catch(o){m('cart: adapter "'+r.id+'" falhou \u2014 fallback clique nativo',o&&o.message);let n=await W(e);return Qt(),te(r),n}}function Qt(){["cart:refresh","cart:updated","cart:build","ajaxProduct:added","product:added-to-cart"].forEach(t=>{try{document.dispatchEvent(new CustomEvent(t))}catch(e){}})}function te(t){if(!f().cartRedirect||t&&t.skipRedirect)return;let r=t&&t.cartUrl||"/cart";setTimeout(()=>{try{window.location.href=r}catch(o){}},250)}var ko=/\/(thank[_-]?you|orders?\/|pedido[_-]?(confirmado|realizado|finalizado|sucesso)|sucesso|order[_-]?confirmation|compra[_-]?(finalizada|concluida)|orderplaced)/i,Co=/\/checkout/i,_o=/\/(cart|carrinho|sacola|bag)(\/|$|\?|#)/i,vo=/\/(products?|produtos?|p)\//i,So=/\/(collections?|categoria|categorias|c|departamento)\//i,To=/\/(search|busca|s)(\/|\?)/i;function ie(){try{if(window.__mkPageType)return window.__mkPageType}catch(e){}try{let e=C();for(let r of e){let o=Array.isArray(r["@type"])?r["@type"]:[r["@type"]];if(o.includes("Order")||o.includes("Invoice"))return"purchase";if(o.includes("Product"))return"pdp";if(o.includes("SearchResultsPage"))return"search";if(o.includes("CollectionPage")||o.includes("ItemList"))return"category"}}catch(e){}let t=(location.pathname||"").toLowerCase();return t==="/"||t===""||t==="/home"||t==="/index.html"?"home":ko.test(t)?"purchase":Co.test(t)?"checkout":_o.test(t)?"cart":vo.test(t)?"pdp":So.test(t)?"category":To.test(t)?"search":"other"}function ce(t){let e=null;try{let r=new URLSearchParams(location.search),o=["utm_source","utm_medium","utm_campaign","utm_term","utm_content"],n={};for(let i of o){let c=r.get(i);c&&(n[i.replace("utm_","")]=c)}Object.keys(n).length&&(e=n)}catch(r){}return{url:location.href,pathname:location.pathname,referrer:document.referrer||null,title:document.title||null,pageType:t,utm:e,userAgent:navigator.userAgent,language:navigator.language,viewport:window.innerWidth+"x"+window.innerHeight,platform:Eo()}}function Eo(){return re()}var kt={},Ao=null,F=0,ae=!1;function se(t){ae||(ae=!0,le(t),Lo(),Io(),Po(),Ro(),jo(t))}function le(t){kt={};let e=ie(),r=ce(e);if(Gt(r),l("view",{url:location.href,pathname:location.pathname,referrer:document.referrer||null,title:document.title||null,pageType:e}),typeof t=="function")try{t(e,r)}catch(o){}}function Lo(){if(!document.body)return;let t={A:1,BUTTON:1,INPUT:1,SELECT:1,TEXTAREA:1},e=0;document.body.addEventListener("click",r=>{try{let o=Date.now();if(o-e<100)return;e=o;let n=r.target;for(let a=0;a<5&&n&&n!==document.body&&!(t[n.tagName]||n.getAttribute&&n.getAttribute("role")==="button");a++)n=n.parentElement;if(!n||!t[n.tagName]&&!(n.getAttribute&&n.getAttribute("role")==="button"))return;let i={tag:n.tagName},c=n.tagName==="INPUT"||n.tagName==="TEXTAREA"?n.value:n.textContent;i.text=(c||"").replace(/\s+/g," ").trim().substring(0,100),n.href&&(i.href=String(n.href).substring(0,500)),n.id&&(i.id=n.id),n.className&&typeof n.className=="string"&&(i.classes=n.className.trim().substring(0,200)),l("click",i)}catch(o){}},{capture:!0,passive:!0})}function Io(){let t=[25,50,75,100],e=null,r=()=>{try{let o=window.scrollY||document.documentElement.scrollTop||0,n=Math.max(document.body&&document.body.scrollHeight||0,document.documentElement&&document.documentElement.scrollHeight||0);if(n<=0)return;let i=Math.min(100,Math.floor((o+window.innerHeight)/n*100));for(let c of t)i>=c&&!kt[c]&&(kt[c]=!0,l("scroll_depth",{depth:c}))}catch(o){}};r(),window.addEventListener("scroll",()=>{e||(e=setTimeout(()=>{e=null,r()},250))},{passive:!0})}function Po(){document.body&&document.body.addEventListener("submit",t=>{try{let e=t.target;if(!e||e.tagName!=="FORM"||e.querySelector('input[type="password"], input[name*="card"], input[name*="cpf"]'))return;let r="other",o=(e.className||"").toLowerCase(),n=(e.action||"").toLowerCase();e.querySelector('input[type="search"], input[name="q"], input[name="s"]')?r="search":/newsletter|subscribe|mailchimp/.test(o+n)?r="newsletter":/contact|contato/.test(o+n)&&(r="contact"),l("form_submit",{form_id:e.id||"",form_type:r})}catch(e){}},{capture:!0})}function Ro(){let t=f();F=Date.now(),Ao=setInterval(()=>{if(document.hidden)return;let e=Date.now(),r=Math.round((e-F)/1e3);F=e,r>0&&r<60&&l("engagement",{url:location.pathname,dwellSec:r})},t.engagementIntervalMs),document.addEventListener("visibilitychange",()=>{if(document.hidden){let e=Math.round((Date.now()-F)/1e3);e>0&&e<600&&l("engagement",{url:location.pathname,dwellSec:e})}F=Date.now()})}function jo(t){let e=location.href,r=()=>{location.href!==e&&(e=location.href,le(t))};try{let o=history.pushState,n=history.replaceState;history.pushState=function(){o.apply(this,arguments),setTimeout(r,0)},history.replaceState=function(){n.apply(this,arguments),setTimeout(r,0)},window.addEventListener("popstate",r)}catch(o){}}var ue=["off","pdp_tryon","pdp","all"],Bo="pdp_tryon",No=30*60*1e3,P=null;function Y(){if(P)return P;let t=f();return!t.projectId||!t.apiUrl?(P=Promise.resolve(null),P):(P=fetch(t.apiUrl+"/projects/"+t.projectId).then(e=>e.ok?e.json():null).then(e=>e&&e.project||e||null).catch(()=>null),P)}function de(t){let e=t&&t.analytic&&t.analytic.scope;return ue.indexOf(e)>=0?e:Bo}var pe=t=>"mk_scope_"+t;function fe(t){try{let e=localStorage.getItem(pe(t));if(!e)return null;let r=JSON.parse(e);return!r||typeof r.exp!="number"||r.exp<Date.now()?null:ue.indexOf(r.scope)>=0?r.scope:null}catch(e){return null}}function me(t,e){try{localStorage.setItem(pe(t),JSON.stringify({scope:e,exp:Date.now()+No}))}catch(r){}}function Ct(){let t=D(),e=C(["Product"]);if(e.length>0){let n=e[0],i=Array.isArray(n.offers)?n.offers[0]:n.offers;return{sku:t?t.value:n.sku||n.mpn||n.gtin13||n.productID||null,skuSource:t?t.source:null,name:typeof n.name=="string"?n.name:null,price:i&&parseFloat(i.price||i.lowPrice)||null,currency:i?i.priceCurrency:null,brand:n.brand?typeof n.brand=="string"?n.brand:n.brand.name:null,category:n.category||null}}let r=n=>{let i=document.querySelector('meta[property="og:'+n+'"], meta[property="product:'+n+'"]');return i?i.getAttribute("content"):null},o=n=>{let i=document.querySelector('[itemprop="'+n+'"]');return i?i.getAttribute("content")||(i.textContent||"").trim():null};if(t||r("type")==="product"||r("price:amount")||o("name")){let n=o("price")||r("price:amount");return{sku:t?t.value:null,skuSource:t?t.source:null,name:o("name")||r("title")||document.title||null,price:n&&parseFloat(String(n).replace(",","."))||null,currency:o("priceCurrency")||r("price:currency")||null,brand:o("brand")||null,category:null}}return null}function he(){let t=C(["Order","Invoice"]);if(t.length>0){let o=t[0],n=o.totalPaymentDue?parseFloat(o.totalPaymentDue.price):parseFloat(o.price||o.total);return{orderId:o.orderNumber||o.confirmationNumber||o.identifier||null,revenue:Number.isFinite(n)?n:null,currency:o.totalPaymentDue&&o.totalPaymentDue.priceCurrency||o.priceCurrency||null,source:"jsonld"}}try{if(Array.isArray(window.dataLayer))for(let o=window.dataLayer.length-1;o>=0;o--){let n=window.dataLayer[o];if(n&&n.event==="purchase"&&n.ecommerce){let i=n.ecommerce;return{orderId:i.transaction_id||i.transactionId||null,revenue:parseFloat(i.value||i.revenue)||null,currency:i.currency||i.currencyCode||null,itemCount:(i.items||i.products||[]).length||null,source:"datalayer"}}}}catch(o){}let e=document.querySelector('meta[property="order:total"], meta[name="order-total"]');if(e&&e.content)return{orderId:null,revenue:parseFloat(e.content)||null,source:"meta"};let r=Oo();return r||null}function Oo(){try{let t=[".order-total","#order-total",".total-price",".order__total","[data-order-total]",".summary-total",".grand-total"];for(let e of t){let r=document.querySelector(e);if(r){let o=Mo(r.textContent);if(o)return{orderId:Uo(),revenue:o,source:"dom"}}}return null}catch(t){return null}}function Uo(){try{let e=(document.body.innerText||"").match(/(?:pedido|order|n[º°o]\.?)\s*#?\s*([A-Z0-9-]{4,})/i);return e?e[1]:null}catch(t){return null}}function Mo(t){if(!t)return null;let e=String(t).replace(/[^\d.,]/g,"");if(!e)return null;let r;e.indexOf(",")>e.indexOf(".")?r=e.replace(/\./g,"").replace(",","."):r=e.replace(/,/g,"");let o=parseFloat(r);return Number.isFinite(o)&&o>0?o:null}function ge(){let t=C(["ItemList","CollectionPage"]);if(t.length===0)return null;let e=t[0],r=e.itemListElement||e.mainEntity&&e.mainEntity.itemListElement||[],o=[];for(let n of r.slice(0,50)){let i=n.item||n;i&&(i.sku||i.productID||i.name)&&o.push(i.sku||i.productID||i.name)}return o.length>0?{count:o.length,skus:o.slice(0,20)}:null}var ye=!1,Z=[/\b(adicionar|adic\.?|colocar|incluir|jogar)\b.{0,30}\b(carrinho|sacola|sacolinha|bag)\b/i,/\bcomprar\b(?!\s+(em|por|sem))/i,/\bcomprar\s*$/i,/^add\s+to\s+(cart|bag)\b/i,/^buy\s+(now|it|this)\b/i,/^(sacolinha|carrinho|sacola)$/i],Do=[/^finalizar(\s+(compra|pedido|pagamento))?\b/i,/^(fechar|confirmar)\s+(compra|pedido|pagamento)\b/i,/^pagar(\s+(agora|pedido))?\b/i,/^(complete|place)\s+(purchase|order)\b/i,/^checkout$/i];function z(t,e){for(let r=0;r<t.length;r++)if(t[r].test(e))return!0;return!1}function we(t){switch(t){case"pdp":{let e=Ct();l("view_item",e||{sku:null});break}case"category":case"search":{let e=ge();l("view_item_list",e||{count:0});break}case"cart":l("view_cart",{});break;case"checkout":l("begin_checkout",{});break;case"purchase":Fo();break}}function Fo(){let t=he();if(t&&t.orderId){let e="_mk_purch_"+t.orderId;try{if(sessionStorage.getItem(e)){m("purchase j\xE1 contado",t.orderId);return}sessionStorage.setItem(e,"1")}catch(r){}}else if(ye)return;ye=!0,l("purchase",t||{revenue:null,_note:"no_order_data_extracted"}),m("purchase emitido",t)}function xe(){if(!document.body)return;let t=0;document.body.addEventListener("click",e=>{try{let r=Date.now();if(r-t<150)return;let o=e.target;for(let a=0;a<5&&o&&o!==document.body&&!(o.tagName==="BUTTON"||o.tagName==="A"||o.getAttribute&&o.getAttribute("role")==="button");a++)o=o.parentElement;if(!o)return;let n=o.tagName!=="A",i=(o.textContent||"").replace(/\s+/g," ").trim();if(!i||i.length>80)return;let c=!1;if((z([Z[0]],i)||n&&z([Z[1]],i)||n&&z([Z[2]],i)||z(Z.slice(3),i))&&(c=!0),c){t=r;let a=Ct();l("add_to_cart",{via:"click",buttonText:i,sku:a?a.sku:null,price:a?a.price:null});return}n&&z(Do,i)&&(t=r,l("begin_checkout",{via:"click",buttonText:i}))}catch(r){}},{capture:!0,passive:!0})}var b=null,_=null,tt=!1,R=null,be={},_t=null,Q=0,w={onReady:null,onClose:null,onAddToCart:null,onProductLoaded:null,onError:null,onInteraction:null,onGenerationComplete:null},zo={gregory:"698c7e791d3129430f15dddd"};function Ce(t){return t?zo[String(t).toLowerCase()]||t:null}async function j(t,e){let r=f(),o=Ce(t);e=String(e||"").trim();let n=r.apiUrl+"/availability/"+o+"?sku="+encodeURIComponent(e),i=await fetch(n);if(!i.ok)throw new Error("availability HTTP "+i.status);return i.json()}async function _e(t,e){e||(e=t,t="698c7e791d3129430f15dddd");try{return(await j(t,e)).available===!0}catch(r){return!1}}async function et(t){if(t=t||{},tt)return;let e=Ce(t.projectId||t.projectid||t.store),r=String(t.identifier||t.sku||"").trim();if(!e||!r){console.error("[mk-sdk] open: projectId e identifier obrigatorios");return}let o=e+":"+r;if(be[o]!==!0){try{if(!(await j(e,r)).available){alert("Produto nao disponivel para prova virtual.");return}}catch(n){alert("Produto nao encontrado ou indisponivel.");return}be[o]=!0}R={projectId:e,identifier:r,width:t.width||430,height:t.height||800},Se(),qo(R),tt=!0,Q=Date.now(),l("modal_opened",{projectId:e,identifier:r})}function St(){tt&&($o(),tt=!1,T("onClose"),l("modal_closed",{projectId:R&&R.projectId,identifier:R&&R.identifier}))}function qo(t){b=document.createElement("div"),b.style.cssText="position:fixed;inset:0;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:99999;";let e=document.createElement("div"),r=typeof t.width=="number"?t.width+"px":t.width,o=typeof t.height=="number"?t.height+"px":t.height;e.style.cssText="position:relative;width:"+r+";height:"+o+";max-width:100vw;max-height:100dvh;border-radius:12px;overflow:hidden;background:#fff;",_=document.createElement("iframe");let n=encodeURIComponent(t.identifier).replace(/\./g,"%2E");_.src=f().appUrl+"/"+t.projectId+"/"+n,_.style.cssText="width:100%;height:100%;border:none;",_.setAttribute("allow","camera *; microphone *"),_.setAttribute("allowfullscreen","true"),e.appendChild(_),b.appendChild(e),document.body.appendChild(b),m("try-on modal aberto",_.src)}function $o(){b&&b.parentNode&&b.parentNode.removeChild(b),b=null,_=null}var ke=!1;function ve(){Se()}function Se(){ke||(ke=!0,window.addEventListener("message",t=>{let e=t.data;if(!e||e.source!=="mkfashion-app")return;let r=e.action,o=e.data||{};switch(r){case"close_request":St();break;case"ready":T("onReady",o);break;case"product_loaded":T("onProductLoaded",o),l("product_loaded",vt(o));break;case"interaction":{T("onInteraction",o),o&&o.method&&(_t=o.method),l(Ko(o),vt(o));break}case"add_to_cart":l("add_to_cart",Object.assign({via:"tryon"},vt(o))),typeof w.onAddToCart=="function"?T("onAddToCart",o):ne(o).catch(()=>{});break;case"generation_start":Q=Date.now();break;case"generation_complete":T("onGenerationComplete",o),l("generation_complete",{method:o.method||_t||"unknown",durationMs:Q?Date.now()-Q:null,success:o.success!==!1,imageUrlPresent:!!o.imageUrl});break;case"generation_error":T("onError",o),l("generation_error",{method:_t||"unknown",error:o&&o.error});break}}))}function Ko(t){return t&&t.action,"interaction"}function vt(t){if(!t||typeof t!="object")return t;let e={};for(let r in t){if(r==="imageUrl"||r==="image"||r==="product"){r==="product"&&t[r]?(e.productSku=t[r].sku||null,e.productName=t[r].name||null):e[r+"Present"]=!!t[r];continue}e[r]=t[r]}return e}function T(t,e){if(typeof w[t]=="function")try{w[t](e)}catch(r){console.error("[mk-sdk]",r)}}function Te(t){w.onReady=t}function Ee(t){w.onClose=t}function Ae(t){w.onAddToCart=t}function Le(t){w.onProductLoaded=t}function Ie(t){w.onError=t}function Pe(t){w.onInteraction=t}function Re(t){w.onGenerationComplete=t}var Jo=767,Vo=1024,Go=/(adicionar\s*(à|a|ao)?\s*(sacola|carrinho|cesta|bolsa))|adicionar ao carrinho|add to (cart|bag)|comprar agora|^comprar$|finalizar compra|eu quero/i,Wo=/continuar|como comprar|lista|desejos|favorito|looks|cupom/i;function je(t){try{let e=t.getBoundingClientRect();if(e.width<=0||e.height<=0)return!1;let r=getComputedStyle(t);return r.display!=="none"&&r.visibility!=="hidden"&&r.opacity!=="0"}catch(e){return!1}}function Xo(t){if(!t)return!1;try{let e=document.querySelector(t);return!!e&&je(e)}catch(e){return!1}}function Yo(t){return(t.tagName==="INPUT"?t.value||"":t.textContent||"").replace(/\s+/g," ").trim()}function Zo(t){if(!t||typeof t!="object"||t.selector)return t;let e=!1;if(["mobile","tablet","desktop"].forEach(o=>{let n=t[o];n&&n.mkAnchor===1&&n.anchor&&typeof n.anchor=="object"&&(e=!0)}),!e)return t;let r={};return["mobile","tablet","desktop"].forEach(o=>{let n=t[o];if(n){if(n.selector){r[o]=n;return}if(n.mkAnchor===1&&n.anchor&&typeof n.anchor=="object"){let i=n.anchor[o]||n.anchor.desktop||n.anchor.mobile||n.anchor.tablet;i&&i.selector&&(r[o]=i)}}}),["bpMobile","bpTablet","breakpoint"].forEach(o=>{t[o]!=null&&(r[o]=t[o])}),r}function Tt(t){if(!t||typeof t!="object")return null;if(t=Zo(t),t.selector)return t;let e=[["mobile",t.mobile],["tablet",t.tablet],["desktop",t.desktop]].filter(u=>u[1]&&u[1].selector);if(e.length===0)return null;if(e.length===1)return e[0][1];let r=e.filter(([,u])=>Xo(u.selector));if(r.length===1)return r[0][1];let o=window.innerWidth||1024,n=Number(t.bpMobile)||Number(t.breakpoint)||Jo,i=Number(t.bpTablet)||Vo,c=u=>(e.find(s=>s[0]===u)||[])[1],a=o<=n?["mobile","tablet","desktop"]:o<=i?["tablet","desktop","mobile"]:["desktop","tablet","mobile"];for(let u of a){let s=c(u);if(s)return s}return e[0][1]}function Be(){let t=f(),e=Tt(t&&t.anchor);if(e&&e.selector)try{let o=document.querySelector(e.selector);if(o)return{el:o,position:e.position||"afterend",mode:e.mode||"flow",style:e.style||"",align:e.align||"top-left",selector:e.selector}}catch(o){}let r=document.querySelectorAll('button, [role="button"], a.btn, a.button, input[type="submit"], input[type="button"]');for(let o of r){let n=Yo(o);if(!(!n||n.length>40)&&!Wo.test(n)&&Go.test(n)&&je(o))return{el:o,position:"afterend",mode:"flow",style:"",selector:null}}return null}var y="'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",Et={none:"0",sm:"4px",md:"8px",pill:"9999px"},At={none:"0",sm:"4px",md:"8px",lg:"16px"},Qo='<svg viewBox="0 0 17.5263 20.6862" fill="none" xmlns="http://www.w3.org/2000/svg" style="display:block;width:100%;height:100%"><g><path d="M8.49995 12.1862C10.1568 12.1862 11.5 10.8431 11.5 9.18622C11.5 7.52936 10.1568 6.18622 8.49995 6.18622C6.8431 6.18622 5.49995 7.52936 5.49995 9.18622C5.49995 10.8431 6.8431 12.1862 8.49995 12.1862Z" stroke="currentColor" shape-rendering="crispEdges"/><path d="M0.5 9.11152C0.5 6.56953 0.5 5.29894 1.1099 4.38664C1.375 3.9902 1.71424 3.65088 2.10821 3.38809C2.6945 2.9958 3.42899 2.85564 4.55351 2.80588C5.09013 2.80588 5.55183 2.39949 5.65687 1.87284C5.73715 1.48708 5.94572 1.14138 6.24735 0.894155C6.54898 0.646934 6.92516 0.51336 7.31231 0.516006H9.9734C10.7779 0.516006 11.4709 1.08412 11.6288 1.87284C11.7339 2.39949 12.1956 2.80588 12.7322 2.80588C13.8559 2.85564 12.9129 4.67413 13.5 5.06559C13.8949 5.32932 15.1484 3.80355 15.5 4.02647C16.1099 4.93876 16.7857 6.56953 16.7857 9.11152C16.7857 11.6535 16.7857 12.9233 16.1758 13.8364C15.9107 14.2328 15.5715 14.5722 15.1775 14.835C14.2647 15.4445 12.9936 15.4445 10.4522 15.4445H6.83351C4.29213 15.4445 3.02103 15.4445 2.10821 14.835C1.71446 14.5718 1.3755 14.2322 1.11071 13.8356C0.933802 13.5672 0.803519 13.2698 0.725557 12.9564" stroke="currentColor" stroke-linecap="round"/><path d="M12.676 0.607931C12.9446 -0.178095 14.0307 -0.2019 14.3491 0.536515L14.3761 0.60838L14.7385 1.66839C14.8216 1.91149 14.9559 2.13395 15.1322 2.32076C15.3086 2.50757 15.5229 2.65439 15.7608 2.75131L15.8583 2.78769L16.9183 3.14971C17.7044 3.41831 17.7282 4.50437 16.9902 4.82283L16.9183 4.84978L15.8583 5.21225C15.6151 5.29526 15.3926 5.42947 15.2057 5.60582C15.0188 5.78218 14.8719 5.99657 14.7749 6.23453L14.7385 6.33155L14.3765 7.39201C14.1079 8.17803 13.0219 8.20184 12.7039 7.46387L12.676 7.39201L12.314 6.332C12.231 6.08881 12.0968 5.86627 11.9204 5.67938C11.744 5.49249 11.5297 5.3456 11.2917 5.24863L11.1947 5.21225L10.1347 4.85022C9.34817 4.58163 9.32437 3.49557 10.0628 3.17756L10.1347 3.14971L11.1947 2.78769C11.4378 2.70462 11.6602 2.57039 11.847 2.39404C12.0339 2.21769 12.1807 2.00333 12.2776 1.76541L12.314 1.66839L12.676 0.607931Z" fill="currentColor"/></g></svg>',tr='<svg viewBox="0 0 11.6122 12.7248" fill="none" xmlns="http://www.w3.org/2000/svg" style="display:block;width:12px;height:12px"><path d="M4.09055 2.01133C4.43939 0.9905 5.84989 0.959583 6.26347 1.91858L6.29847 2.01192L6.76922 3.38858C6.8771 3.7043 7.05144 3.99321 7.28047 4.23583C7.5095 4.47845 7.7879 4.66912 8.09689 4.795L8.22347 4.84225L9.60014 5.31242C10.621 5.66125 10.6519 7.07175 9.69347 7.48533L9.60014 7.52033L8.22347 7.99108C7.90764 8.09889 7.61862 8.2732 7.3759 8.50223C7.13318 8.73127 6.94241 9.0097 6.81647 9.31875L6.76922 9.44475L6.29905 10.822C5.95022 11.8428 4.53972 11.8737 4.12672 10.9153L4.09055 10.822L3.62039 9.44533C3.51258 9.12951 3.33827 8.84048 3.10924 8.59776C2.8802 8.35504 2.60177 8.16427 2.29272 8.03833L2.16672 7.99108L0.790054 7.52092C-0.231363 7.17208 -0.26228 5.76158 0.69672 5.34858L0.790054 5.31242L2.16672 4.84225C2.48244 4.73437 2.77135 4.56003 3.01397 4.331C3.25658 4.10197 3.44726 3.82357 3.57314 3.51458L3.62039 3.38858L4.09055 2.01133ZM9.86147 0C9.9706 0 10.0775 0.0306123 10.1701 0.0883584C10.2627 0.146104 10.3373 0.228668 10.3853 0.326667L10.4133 0.394917L10.6175 0.993417L11.2166 1.19758C11.3259 1.23474 11.4218 1.30353 11.492 1.39523C11.5623 1.48693 11.6037 1.59741 11.611 1.71268C11.6184 1.82795 11.5914 1.94281 11.5334 2.04271C11.4755 2.14261 11.3891 2.22305 11.2854 2.27383L11.2166 2.30183L10.6181 2.506L10.4139 3.10508C10.3767 3.21442 10.3078 3.31024 10.2161 3.38041C10.1244 3.45058 10.0139 3.49194 9.89859 3.49925C9.78333 3.50656 9.66849 3.47949 9.56863 3.42147C9.46876 3.36345 9.38837 3.27709 9.33764 3.17333L9.30964 3.10508L9.10547 2.50658L8.50639 2.30242C8.39702 2.26526 8.30115 2.19647 8.23092 2.10477C8.16069 2.01307 8.11926 1.90259 8.11189 1.78732C8.10452 1.67205 8.13153 1.55719 8.18951 1.45729C8.24749 1.35739 8.33381 1.27695 8.43755 1.22617L8.50639 1.19817L9.10489 0.994L9.30905 0.394917C9.34839 0.279665 9.42281 0.179613 9.52187 0.108791C9.62094 0.0379686 9.73969 -0.0000730808 9.86147 0Z" fill="currentColor"/></svg>';function p(t,e={}){let r=document.createElement(t);if(e.style&&(r.style.cssText=e.style),e.text!=null&&(r.textContent=e.text),e.html!=null&&(r.innerHTML=e.html),e.attrs)for(let o in e.attrs)r.setAttribute(o,e.attrs[o]);if(e.on)for(let o in e.on)r.addEventListener(o,e.on[o]);if(e.children)for(let o of e.children)o&&r.appendChild(o);return r}function ot(t){return p("span",{style:`width:24px;height:24px;padding:2px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;color:${t};flex-shrink:0;`,html:Qo})}function Ne(t){return p("span",{style:`width:12px;height:12px;display:inline-flex;align-items:center;justify-content:center;color:${t};flex-shrink:0;`,html:tr})}function rt(t){return t.borderWidth>0&&t.borderColor?`${t.borderWidth}px solid ${t.borderColor}`:"none"}function nt(){if(!document.getElementById("mk-jakarta-font"))try{document.head.appendChild(p("link",{attrs:{id:"mk-jakarta-font",rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;600;700&display=swap"}}))}catch(t){}}function er(t){return t.subtext?p("span",{style:`display:flex;align-items:center;justify-content:center;padding:4px;background:${t.badgeBgColor};font-family:${y};font-weight:700;font-size:16px;text-transform:uppercase;color:${t.badgeTextColor};line-height:1;white-space:nowrap;`,text:t.subtext}):null}function Oe(t,e){nt();let r=p("span",{style:"display:inline-flex;align-items:center;gap:4px;",children:[ot(t.textColor),p("span",{text:t.text,style:`font-family:${y};font-weight:700;font-size:${t.fontSize}px;text-transform:uppercase;letter-spacing:2px;color:${t.textColor};white-space:nowrap;text-align:center;line-height:1;`})]});return p("button",{attrs:{type:"button"},style:`display:flex;align-items:center;justify-content:center;gap:8px;padding:8px;width:100%;max-width:238px;box-sizing:border-box;background:${t.bgColor};border:${rt(t)};border-radius:${t.borderRadiusPx};font-family:${y};cursor:pointer;transition:opacity 0.2s ease;line-height:1;-webkit-appearance:none;appearance:none;`,children:[r,er(t)],on:{mouseenter:o=>{o.currentTarget.style.opacity="0.85"},mouseleave:o=>{o.currentTarget.style.opacity="1"},click:()=>{try{e&&e()}catch(o){}}}})}function rr(t){return t.subtext?p("span",{style:`display:flex;align-items:center;gap:4px;padding:4px;background:${t.badgeBgColor};font-family:${y};font-weight:600;font-size:10px;text-transform:uppercase;color:${t.badgeTextColor};line-height:1;white-space:nowrap;`,children:[Ne(t.badgeTextColor),p("span",{text:t.subtext})]}):null}function nr(t,e){return p("button",{attrs:{type:"button"},style:`display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 12px 8px 8px;width:100%;margin-top:auto;box-sizing:border-box;background:${t.bgColor};border:${rt(t)};border-radius:${t.borderRadiusPx};filter:drop-shadow(0 0 6px rgba(0,0,0,0.08));font-family:${y};cursor:pointer;transition:opacity 0.2s ease;line-height:1;-webkit-appearance:none;appearance:none;`,children:[ot(t.textColor),p("span",{text:t.text,style:`font-family:${y};font-weight:700;font-size:${t.fontSize}px;color:${t.textColor};white-space:nowrap;line-height:1;`})],on:{mouseenter:r=>{r.currentTarget.style.opacity="0.85"},mouseleave:r=>{r.currentTarget.style.opacity="1"},click:()=>{try{e&&e()}catch(r){}}}})}function Ue(t,e){nt();let r=p("div",{style:"display:flex;flex-direction:column;gap:4px;",children:[t.cardTitle&&p("p",{text:t.cardTitle,style:`margin:0;font-family:${y};font-weight:700;font-size:16px;letter-spacing:1px;text-transform:uppercase;color:${t.cardTitleColor};line-height:1.2;`}),t.cardDescription&&p("p",{html:t.cardDescription,style:`margin:0;font-family:${y};font-weight:400;font-size:12px;max-width:177px;line-height:1.2;color:${t.cardTextColor};`})]}),o=p("div",{style:"display:flex;flex-direction:column;justify-content:space-between;gap:16px;flex:1 1 0;min-width:0;",children:[r,t.cardFooter&&p("p",{text:t.cardFooter,style:`margin:0;font-family:${y};font-weight:400;font-size:10px;color:${t.cardTextColor};line-height:1.2;`})]}),n=p("div",{style:"display:flex;flex-direction:column;align-items:flex-end;flex:1 1 0;min-width:0;",children:[rr(t),nr(t,e)]}),i=p("div",{style:"display:flex;gap:16px;align-items:stretch;width:100%;flex:1;box-sizing:border-box;",children:[o,n]});return p("div",{style:`display:flex;flex-direction:column;align-items:flex-start;padding:12px;width:100%;max-width:402px;min-height:140px;box-sizing:border-box;background:${t.cardBgColor};border-radius:${t.cardBorderRadiusPx};font-family:${y};`,children:[i]})}var cr={style:"gregory-black",text:"Provar Virtualmente",fontSize:14,subtext:"",bgColor:"#1E1E1E",textColor:"#FFFFFF",badgeBgColor:"#C51A1B",badgeTextColor:"#FFFFFF",borderRadius:"md",borderColor:"#1E1E1E",borderWidth:0,cardTitle:"",cardDescription:"",cardFooter:"",cardBgColor:"#F6F6F6",cardTitleColor:"#1E1E1E",cardTextColor:"#717171",cardBorderRadius:"md"};function Lt(t,e){let r=(e?t&&t.mobile:t&&t.desktop)||t&&t.desktop||t&&t.mobile||{},o={...cr,...r};return o.style==="gregory-card"&&e&&(o.style="gregory-black"),o.borderRadiusPx=Et[o.borderRadius]!=null?Et[o.borderRadius]:"0",o.cardBorderRadiusPx=At[o.cardBorderRadius]!=null?At[o.cardBorderRadius]:"0",o.fontSize=Number(o.fontSize)||14,o.borderWidth=Number(o.borderWidth)||0,o}var It={"gregory-black":Oe,"gregory-card":Ue},Zr=Object.keys(It);function Me(t,e){return(It[t.style]||It["gregory-black"])(t,e)}var Bt="mk-tryon-button-host",it=null,Pt=!1,Rt={},De=!1,jt=null;function Fe(){return jt||(jt=Y().then(t=>t&&t.template&&t.template.tryOnButton||null).catch(()=>null)),jt}function ar(){if(De)return;De=!0;let t=null;try{window.addEventListener("resize",()=>{clearTimeout(t),t=setTimeout(()=>{it&&B("pdp")},200)})}catch(e){}}function Nt(){let t=document.getElementById(Bt);if(t){if(typeof t.__mkCleanup=="function")try{t.__mkCleanup()}catch(e){}t.parentNode&&t.parentNode.removeChild(t)}it=null}var sr={IMG:1,INPUT:1,VIDEO:1,CANVAS:1,EMBED:1,OBJECT:1,IFRAME:1,BR:1,HR:1,SELECT:1,TEXTAREA:1,SVG:1};function lr(t){switch(t){case"top-center":return"top:0;left:50%;transform:translateX(-50%);";case"top-right":return"top:0;right:0;";case"middle-left":return"top:50%;left:0;transform:translateY(-50%);";case"center":return"top:50%;left:50%;transform:translate(-50%,-50%);";case"middle-right":return"top:50%;right:0;transform:translateY(-50%);";case"bottom-left":return"bottom:0;left:0;";case"bottom-center":return"bottom:0;left:50%;transform:translateX(-50%);";case"bottom-right":return"bottom:0;right:0;";case"top-left":default:return"top:0;left:0;"}}function ur(t,e,r){let n=!sr[t.tagName]?t:t.parentElement||document.body;try{getComputedStyle(n).position==="static"&&(n.style.position="relative")}catch(s){}if(n===t){e.style.cssText="position:absolute;z-index:2147483000;"+lr(r),t.appendChild(e);return}e.style.cssText="position:absolute;z-index:2147483000;",n.appendChild(e);let i=()=>{try{let s=t.getBoundingClientRect(),x=n.getBoundingClientRect(),h=e.offsetWidth,d=e.offsetHeight,k=s.top-x.top+n.scrollTop,E=s.left-x.left+n.scrollLeft,g=r||"top-left",q=k,v=E;g.indexOf("bottom")===0?q=k+s.height-d:(g.indexOf("middle")===0||g==="center")&&(q=k+(s.height-d)/2),g.indexOf("right")>=0?v=E+s.width-h:g.indexOf("center")>=0&&(v=E+(s.width-h)/2),e.style.top=q+"px",e.style.left=v+"px"}catch(s){}};i();let c=()=>i();window.addEventListener("resize",c);let a=setTimeout(i,600),u=setTimeout(i,1500);e.__mkCleanup=()=>{window.removeEventListener("resize",c),clearTimeout(a),clearTimeout(u)}}function dr(t,e,r){try{return t.insertAdjacentElement(r||"afterend",e),!0}catch(o){try{return t.parentNode.insertBefore(e,t.nextSibling),!0}catch(n){return!1}}}async function B(t){let e=f();if(t!=="pdp"){Nt();return}if(!e.projectId)return;if(!e.anchor){let u=await Fe();u&&u.anchor&&(e.anchor=u.anchor)}if(Pt)return;let r=D(),o=r&&r.value,n=!!e.forceButton,i=Tt(e.anchor),c=[o||"demo",i?[i.selector,i.position,i.mode,i.align,i.style].join("~"):"heuristic"].join("|"),a=document.getElementById(Bt);if(!(a&&it===c)){if(a&&Nt(),!o&&!n){m("auto-mount: SKU n\xE3o resolvido na PDP");return}Pt=!0;try{let u=n;n||(Rt[o]||(Rt[o]=j(e.projectId,o).then(S=>!!(S&&S.available)).catch(()=>!1)),u=await Rt[o]);try{Vt(u?"available":"unavailable")}catch(S){}if(!u){m("auto-mount: produto sem try-on",o);return}let s=await Fe(),x=window.matchMedia("(max-width: 767px)").matches,h=Lt(s,x),d=Be(),k=d&&d.mode||"flow",E=Me(h,()=>{let S=D(),Ot=S&&S.value||o||"";l("button_clicked",{sku:Ot,style:h.style,mode:k}),et({projectId:e.projectId,identifier:Ot})}),g=document.createElement("div");g.id=Bt,g.attachShadow({mode:"open"}).appendChild(E);let v=!1;if(d&&d.el&&d.el.parentNode&&(k==="overlay"?(ur(d.el,g,d.align),v=!0):(g.style.cssText="display:contents;",v=dr(d.el,g,d.position))),v||(g.style.cssText="position:fixed;left:16px;bottom:16px;z-index:2147483000;",document.body.appendChild(g)),d&&d.style)try{E.style.cssText+=";"+d.style}catch(S){}it=c,ar(),m("auto-mount: bot\xE3o injetado",{style:h.style,sku:o,anchorFound:!!d,position:d&&d.position,mode:k,forced:n}),l("button_rendered",{style:h.style,sku:o||null,skuSource:r&&r.source,anchorFound:!!d,position:d?d.position:null,mode:k,forced:n})}finally{Pt=!1}}}function ze(){try{let t=f(),e={anchor:t.anchor,forceButton:t.forceButton};window.addEventListener("message",r=>{if(r.source!==window)return;let o=r.data;!o||!o.__mkCmd||(o.__mkCmd==="remount"||o.__mkCmd==="applyRecipe"?(t.anchor=o.anchor||null,t.forceButton=!0,B("pdp")):o.__mkCmd==="cancelPreview"&&(t.anchor=e.anchor,t.forceButton=e.forceButton,Nt(),B("pdp")))})}catch(t){}}(function(){"use strict";try{let r=function(){try{Xt(),ze(),ve(),e.autoTrack!==!1&&(se((n,i)=>{we(n,i),B(n)}),xe()),m("mk-sdk iniciado",{projectId:e.projectId,collectorUrl:e.collectorUrl})}catch(n){e.debug&&console.error("[mk-sdk] init erro",n)}},e=at();if(e.projectId){let n=fe(e.projectId);n&&ft(n),Y().then(i=>{let c=de(i);ft(c),me(e.projectId,c),m("escopo de coleta",c)})}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",r):r();let o={open:et,close:St,isAvailable:_e,getAvailability:j,onReady:Te,onClose:Ee,onAddToCart:Ae,onProductLoaded:Le,onError:Ie,onInteraction:Pe,onGenerationComplete:Re,_version:"0.1.0",_isMkSdk:!0};typeof window!="undefined"&&(window.mk=o)}catch(e){typeof console!="undefined"&&console.error("[mk-sdk] boot fatal",e)}})();})();
|
package/package.json
CHANGED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// projectRecipe.js — busca a receita do projeto (GET /projects/:id) UMA vez por
|
|
2
|
+
// sessão e deriva o escopo de coleta (project.analytic.scope). Cache em
|
|
3
|
+
// localStorage pra páginas repetidas conhecerem o escopo de forma síncrona
|
|
4
|
+
// (evita segurar eventos enquanto o fetch não volta).
|
|
5
|
+
|
|
6
|
+
import { getConfig } from './config.js';
|
|
7
|
+
|
|
8
|
+
const VALID = ['off', 'pdp_tryon', 'pdp', 'all'];
|
|
9
|
+
const DEFAULT_SCOPE = 'pdp_tryon';
|
|
10
|
+
const LS_TTL_MS = 30 * 60 * 1000; // 30min — janela de propagação de mudança no CMS
|
|
11
|
+
|
|
12
|
+
let _promise = null;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Busca GET {apiUrl}/projects/{projectId} uma vez (Promise compartilhada).
|
|
16
|
+
* Retorna o objeto `project` ou null em falha.
|
|
17
|
+
*/
|
|
18
|
+
export function fetchProjectRecipe() {
|
|
19
|
+
if (_promise) return _promise;
|
|
20
|
+
const cfg = getConfig();
|
|
21
|
+
if (!cfg.projectId || !cfg.apiUrl) {
|
|
22
|
+
_promise = Promise.resolve(null);
|
|
23
|
+
return _promise;
|
|
24
|
+
}
|
|
25
|
+
_promise = fetch(cfg.apiUrl + '/projects/' + cfg.projectId)
|
|
26
|
+
.then((r) => (r.ok ? r.json() : null))
|
|
27
|
+
.then((d) => (d && d.project) || d || null)
|
|
28
|
+
.catch(() => null);
|
|
29
|
+
return _promise;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Extrai e valida project.analytic.scope. Fallback no default. */
|
|
33
|
+
export function resolveScope(project) {
|
|
34
|
+
const s = project && project.analytic && project.analytic.scope;
|
|
35
|
+
return VALID.indexOf(s) >= 0 ? s : DEFAULT_SCOPE;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const lsKey = (projectId) => 'mk_scope_' + projectId;
|
|
39
|
+
|
|
40
|
+
/** Lê o escopo cacheado (síncrono). null se ausente/expirado/inválido. */
|
|
41
|
+
export function readCachedScope(projectId) {
|
|
42
|
+
try {
|
|
43
|
+
const raw = localStorage.getItem(lsKey(projectId));
|
|
44
|
+
if (!raw) return null;
|
|
45
|
+
const o = JSON.parse(raw);
|
|
46
|
+
if (!o || typeof o.exp !== 'number' || o.exp < Date.now()) return null;
|
|
47
|
+
return VALID.indexOf(o.scope) >= 0 ? o.scope : null;
|
|
48
|
+
} catch (_) { return null; }
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Persiste o escopo com TTL. */
|
|
52
|
+
export function cacheScope(projectId, scope) {
|
|
53
|
+
try {
|
|
54
|
+
localStorage.setItem(lsKey(projectId), JSON.stringify({ scope, exp: Date.now() + LS_TTL_MS }));
|
|
55
|
+
} catch (_) {}
|
|
56
|
+
}
|
package/src/core/transport.js
CHANGED
|
@@ -8,11 +8,69 @@ let queue = [];
|
|
|
8
8
|
let flushTimer = null;
|
|
9
9
|
let siteContext = null;
|
|
10
10
|
|
|
11
|
+
// ─── Gate de coleta (escopo por página) ───────────────────────────────────
|
|
12
|
+
// scope vem da receita do projeto (analytic.scope). Enquanto undefined, os
|
|
13
|
+
// eventos ficam retidos (não sabemos a regra ainda). Decisão por evento:
|
|
14
|
+
// off → nunca coleta
|
|
15
|
+
// all → sempre coleta
|
|
16
|
+
// pdp → coleta só em página de produto
|
|
17
|
+
// pdp_tryon → coleta só em PDP COM provador disponível (espera a checagem)
|
|
18
|
+
const VALID_SCOPES = ['off', 'pdp_tryon', 'pdp', 'all'];
|
|
19
|
+
let collectionScope; // undefined = pendente
|
|
20
|
+
let currentPageType = null;
|
|
21
|
+
let tryonState = 'unknown'; // 'unknown' | 'available' | 'unavailable'
|
|
22
|
+
let held = []; // eventos retidos aguardando decisão
|
|
23
|
+
|
|
24
|
+
function decideFor(pageType) {
|
|
25
|
+
if (collectionScope === undefined) return 'hold';
|
|
26
|
+
switch (collectionScope) {
|
|
27
|
+
case 'off': return 'drop';
|
|
28
|
+
case 'all': return 'collect';
|
|
29
|
+
case 'pdp': return pageType === 'pdp' ? 'collect' : 'drop';
|
|
30
|
+
case 'pdp_tryon':
|
|
31
|
+
if (pageType !== 'pdp') return 'drop';
|
|
32
|
+
if (tryonState === 'available') return 'collect';
|
|
33
|
+
if (tryonState === 'unavailable') return 'drop';
|
|
34
|
+
return 'hold';
|
|
35
|
+
default: return 'collect';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Re-avalia os eventos retidos. finalize=true descarta os que ainda ficariam
|
|
40
|
+
// 'hold' (usado na troca de página — a decisão daquela página não vem mais).
|
|
41
|
+
function resolveHeld(finalize) {
|
|
42
|
+
if (!held.length) return;
|
|
43
|
+
const remaining = [];
|
|
44
|
+
for (const ev of held) {
|
|
45
|
+
const d = decideFor(ev._pt);
|
|
46
|
+
if (d === 'collect') _enqueue(ev.name, ev.params, ev.ts);
|
|
47
|
+
else if (d === 'hold' && !finalize) remaining.push(ev);
|
|
48
|
+
// 'drop' (ou 'hold' + finalize) → descarta
|
|
49
|
+
}
|
|
50
|
+
held = remaining;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Define o escopo de coleta (vindo da receita). Libera/descarta os retidos. */
|
|
54
|
+
export function setCollectionScope(scope) {
|
|
55
|
+
collectionScope = VALID_SCOPES.indexOf(scope) >= 0 ? scope : 'pdp_tryon';
|
|
56
|
+
resolveHeld(false);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** Sinaliza disponibilidade do provador na PDP atual (usado no pdp_tryon). */
|
|
60
|
+
export function setTryonState(state) {
|
|
61
|
+
tryonState = state === 'available' ? 'available' : 'unavailable';
|
|
62
|
+
resolveHeld(false);
|
|
63
|
+
}
|
|
64
|
+
|
|
11
65
|
/**
|
|
12
66
|
* Define o contexto do site (uma vez por pageview). Injetado em todo batch.
|
|
67
|
+
* Também reinicia o estado por-página do gate (pageType + disponibilidade).
|
|
13
68
|
*/
|
|
14
69
|
export function setSiteContext(ctx) {
|
|
70
|
+
resolveHeld(true); // finaliza retidos da página anterior antes de trocar
|
|
15
71
|
siteContext = ctx;
|
|
72
|
+
currentPageType = (ctx && ctx.pageType) || null;
|
|
73
|
+
tryonState = 'unknown';
|
|
16
74
|
}
|
|
17
75
|
|
|
18
76
|
/**
|
|
@@ -32,10 +90,20 @@ export function track(name, params, tsOverride) {
|
|
|
32
90
|
if (track._pre && track._pre.length) {
|
|
33
91
|
const pending = track._pre;
|
|
34
92
|
track._pre = [];
|
|
35
|
-
for (const p of pending)
|
|
93
|
+
for (const p of pending) _gate(p.name, p.params, p.ts);
|
|
36
94
|
}
|
|
37
95
|
|
|
38
|
-
|
|
96
|
+
_gate(name, params, tsOverride);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Aplica o gate de coleta: coleta, descarta ou retém o evento.
|
|
100
|
+
function _gate(name, params, ts) {
|
|
101
|
+
const d = decideFor(currentPageType);
|
|
102
|
+
if (d === 'collect') { _enqueue(name, params, ts); return; }
|
|
103
|
+
if (d === 'drop') { log('descartado (escopo)', name); return; }
|
|
104
|
+
// 'hold' — segura até o escopo/disponibilidade resolverem
|
|
105
|
+
held.push({ name, params, ts: ts || Date.now(), _pt: currentPageType });
|
|
106
|
+
if (held.length > 300) held.shift();
|
|
39
107
|
}
|
|
40
108
|
|
|
41
109
|
function _enqueue(name, params, tsOverride) {
|
package/src/index.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
import { resolveConfig, getConfig, log } from './core/config.js';
|
|
5
5
|
import { startAutoTrack } from './core/autoTrack.js';
|
|
6
|
-
import { initUnloadFlush } from './core/transport.js';
|
|
6
|
+
import { initUnloadFlush, setCollectionScope } from './core/transport.js';
|
|
7
|
+
import { fetchProjectRecipe, resolveScope, readCachedScope, cacheScope } from './core/projectRecipe.js';
|
|
7
8
|
import { onPageView, initFunnelClickTracking } from './ecommerce/funnel.js';
|
|
8
9
|
import { maybeMountButton, initPickerBridge } from './tryon/automount.js';
|
|
9
10
|
import * as tryon from './tryon/bridge.js';
|
|
@@ -13,6 +14,21 @@ import * as tryon from './tryon/bridge.js';
|
|
|
13
14
|
try {
|
|
14
15
|
const cfg = resolveConfig();
|
|
15
16
|
|
|
17
|
+
// ─── Escopo de coleta (analytic.scope da receita) ─────────────────────
|
|
18
|
+
// Semeia do cache (síncrono) pra não segurar eventos em páginas repetidas;
|
|
19
|
+
// a busca fresca atualiza e re-cacheia. Sem cache → fica pendente e o gate
|
|
20
|
+
// retém os eventos até a receita voltar.
|
|
21
|
+
if (cfg.projectId) {
|
|
22
|
+
const cached = readCachedScope(cfg.projectId);
|
|
23
|
+
if (cached) setCollectionScope(cached);
|
|
24
|
+
fetchProjectRecipe().then((project) => {
|
|
25
|
+
const scope = resolveScope(project);
|
|
26
|
+
setCollectionScope(scope);
|
|
27
|
+
cacheScope(cfg.projectId, scope);
|
|
28
|
+
log('escopo de coleta', scope);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
16
32
|
// ─── Core tracking: roda em TODA página ───────────────────────────────
|
|
17
33
|
function init() {
|
|
18
34
|
try {
|
package/src/tryon/automount.js
CHANGED
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
// Também expõe um canal de preview pro picker de posição do addon.
|
|
5
5
|
|
|
6
6
|
import { getConfig, log } from '../core/config.js';
|
|
7
|
-
import { track } from '../core/transport.js';
|
|
7
|
+
import { track, setTryonState } from '../core/transport.js';
|
|
8
|
+
import { fetchProjectRecipe } from '../core/projectRecipe.js';
|
|
8
9
|
import { resolveSku } from '../ecommerce/extractors.js';
|
|
9
10
|
import { getAvailability, open } from './bridge.js';
|
|
10
11
|
import { resolveAnchor, pickAnchorVariant } from './anchor.js';
|
|
11
|
-
import { renderButton,
|
|
12
|
+
import { renderButton, normalizeButtonConfig } from './buttons/registry.js';
|
|
12
13
|
|
|
13
14
|
const HOST_ID = 'mk-tryon-button-host';
|
|
14
15
|
let mountedKey = null; // identifica o estado montado (sku + anchor) — pra SPA/preview
|
|
@@ -20,8 +21,14 @@ let resizeWatchSet = false;
|
|
|
20
21
|
// entre as chamadas concorrentes de maybeMountButton — pra autoaplicar o ANCHOR
|
|
21
22
|
// (template.tryOnButton.anchor) antes do 1º mount, sem flicker e sem 2 fetches.
|
|
22
23
|
let _tplPromise = null;
|
|
23
|
-
function getTemplateCached(
|
|
24
|
-
|
|
24
|
+
function getTemplateCached() {
|
|
25
|
+
// Reaproveita a MESMA busca de /projects/:id usada pro escopo de coleta
|
|
26
|
+
// (1 request por sessão) e extrai o template do botão.
|
|
27
|
+
if (!_tplPromise) {
|
|
28
|
+
_tplPromise = fetchProjectRecipe()
|
|
29
|
+
.then((p) => (p && p.template && p.template.tryOnButton) || null)
|
|
30
|
+
.catch(() => null);
|
|
31
|
+
}
|
|
25
32
|
return _tplPromise;
|
|
26
33
|
}
|
|
27
34
|
|
|
@@ -134,7 +141,7 @@ export async function maybeMountButton(pageType) {
|
|
|
134
141
|
// API/CMS > heurística do resolveAnchor. Se a loja já setou inline, NÃO toca.
|
|
135
142
|
// Se o CMS não tem anchor, segue sem (cai na heurística — comportamento antigo).
|
|
136
143
|
if (!cfg.anchor) {
|
|
137
|
-
const tpl0 = await getTemplateCached(
|
|
144
|
+
const tpl0 = await getTemplateCached();
|
|
138
145
|
if (tpl0 && tpl0.anchor) cfg.anchor = tpl0.anchor;
|
|
139
146
|
}
|
|
140
147
|
|
|
@@ -168,9 +175,12 @@ export async function maybeMountButton(pageType) {
|
|
|
168
175
|
}
|
|
169
176
|
available = await availCache[sku];
|
|
170
177
|
}
|
|
178
|
+
// Alimenta o gate de coleta: no escopo pdp_tryon, isto libera (ou descarta)
|
|
179
|
+
// os eventos retidos desta PDP conforme o provador exista ou não.
|
|
180
|
+
try { setTryonState(available ? 'available' : 'unavailable'); } catch (_) {}
|
|
171
181
|
if (!available) { log('auto-mount: produto sem try-on', sku); return; }
|
|
172
182
|
|
|
173
|
-
const tpl = await getTemplateCached(
|
|
183
|
+
const tpl = await getTemplateCached();
|
|
174
184
|
const isMobile = window.matchMedia('(max-width: 767px)').matches;
|
|
175
185
|
const config = normalizeButtonConfig(tpl, isMobile);
|
|
176
186
|
|
|
@@ -179,7 +189,11 @@ export async function maybeMountButton(pageType) {
|
|
|
179
189
|
// re-resolve o SKU no clique (caso o usuário troque a variante na PDP depois)
|
|
180
190
|
const btn = renderButton(config, () => {
|
|
181
191
|
const live = resolveSku();
|
|
182
|
-
|
|
192
|
+
const id = (live && live.value) || sku || '';
|
|
193
|
+
// Emite o clique IMEDIATAMENTE — antes de qualquer checagem async (disponibilidade
|
|
194
|
+
// pode falhar e abortar open() sem registrar nada). Garante captura da interação.
|
|
195
|
+
track('button_clicked', { sku: id, style: config.style, mode });
|
|
196
|
+
open({ projectId: cfg.projectId, identifier: id });
|
|
183
197
|
});
|
|
184
198
|
|
|
185
199
|
const host = document.createElement('div');
|