1import{s as A,a as x,b as L,i as I}from"./slide-anim.module-qjT7kJ_g.js";import{r as B,t as _,n as C,e as k}from"./index-CaapfkI4.js";const h={search:"[data-traits-search]",filterCheckbox:"[data-traits-filter-checkbox]",items:".traits-list__item",itemsContainer:"[data-traits-items]",empty:".traits-list__empty",trigger:".traits-list__item-trigger",sidebarToggle:"[data-traits-sidebar-toggle]",filters:"[data-traits-filters]",filterGroupToggle:"[data-traits-filter-group-toggle]",filterList:"[data-traits-filter-list]",letterButton:"[data-traits-letter-button]"},F=150,N="2026-01",$=250,G=` 2 query TraitsListMetaobjects($type: String!, $first: Int!, $cursor: String) { 3 metaobjects(type: $type, first: $first, after: $cursor) { 4 nodes { 5 handle 6 fields { key value } 7 } 8 pageInfo { hasNextPage endCursor } 9 } 10 } 11`;function q(e,t){let a;return(...s)=>{clearTimeout(a),a=setTimeout(()=>e(...s),t)}}function m(e){return String(e||"").toLowerCase().replace(/['â]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function S(e){if(e==null)return"No Group";const t=String(e).trim();return!t||t.toLowerCase()==="null"?"No Group":t.includes("FSS")?"FSS":t.includes("Scenthound & Pariah")||t.includes("Scenthound & Pariah")?"Scenthound":t}function w(e){if(e==="FSS"||e==="No Group")return e;const t=String(e||"").replace(/_/g," ");return t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()}function l(e,t,a={}){const s=document.createElement(e);return t&&(s.className=t),Object.entries(a).forEach(([i,r])=>s.setAttribute(i,r)),s}function E(e,t){return e.innerHTML=t==null?"":String(t),e}async function v(e,t){const a=[];let s=null;do{const i=await fetch(`/api/${N}/graphql.json`,{method:"POST",headers:{"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":e},body:JSON.stringify({query:G,variables:{type:t,first:$,cursor:s}})});if(!i.ok)throw new Error(`Storefront API responded ${i.status}`);const{data:r,errors:o}=await i.json();if(o&&o.length)throw new Error(o[0].message);const c=r&&r.metaobjects;if(!c)throw new Error("Storefront API returned no metaobjects");c.nodes.forEach(p=>{const n={};p.fields.forEach(u=>{n[u.key]=u.value}),a.push({handle:p.handle,fields:n})}),s=c.pageInfo.hasNextPage?c.pageInfo.endCursor:null}while(s);return a}B("traits-list",{onLoad(){this.events=[],this.query="",this.items=_(h.items,this.container),this.emptyState=C(h.empty,this.container),this.searchInput=C(h.search,this.container),this.checkboxes=_(h.filterCheckbox,this.container),this.sidebarToggle=C(h.sidebarToggle,this.container),this.filters=C(h.filters,this.container),this.searchInput&&(this._handleSearch=q(e=>{this.query=e.target.value.trim().toLowerCase(),this._applyFilters()},F),this.events.push(k(this.searchInput,"input",this._handleSearch))),this._handleFilterChange=()=>this._applyFilters(),this.checkboxes.length&&this.events.push(k(this.checkboxes,"change",this._handleFilterChange)),this.letterButtons=_(h.letterButton,this.container),this.letterButtons.length&&(this._handleLetterClick=e=>{const t=e.currentTarget,a=t.getAttribute("aria-pressed")==="true";this.letterButtons.forEach(s=>s.setAttribute("aria-pressed","false")),a||t.setAttribute("aria-pressed","true"),this._applyFilters()},this.events.push(k(this.letterButtons,"click",this._handleLetterClick))),this.filterGroupToggles=_(h.filterGroupToggle,this.container),this.filterGroupToggles.length&&(this._handleFilterGroupToggle=e=>{const t=e.currentTarget,a=document.getElementById(t.getAttribute("aria-controls"));if(!a)return;const s=a.hidden;a.hidden=!s,t.setAttribute("aria-expanded",String(s))},this.events.push(k(this.filterGroupToggles,"click",this._handleFilterGroupToggle))),this._handleContainerClick=e=>{const t=e.target.closest(h.trigger);t&&this._handleAccordionToggle(t)},this.events.push(k(this.container,"click",this._handleContainerClick)),this.sidebarToggle&&this.filters&&(this.filters.hidden=!0,this.sidebarToggle.setAttribute("aria-expanded","false"),this._handleSidebarToggle=()=>{const e=this.filters.hidden;this.filters.hidden=!e,this.sidebarToggle.setAttribute("aria-expanded",String(e))},this.events.push(k(this.sidebarToggle,"click",this._handleSidebarToggle))),this.container.hasAttribute("data-hydrate")&&this._hydrate().catch(e=>{console.warn("traits-list: full-list hydration failed",e)})},async _hydrate(){const e=this.container.dataset.source,t=this.container.dataset.storefrontToken;if(!t||!e||e==="blocks")return;const a=await v(t,e),s=this._buildEntries(e,a);if(!s.length)return;const i=await this._resolveTagColors(e,t);this._reconcileItems(e,s,i),this._rebuildFilterLists(e,s),this._rebuildLetterGrid(e,s
11),this.items=_(h.items,this.container);const r=_(h.filterCheckbox,this.container);r.length&&this.events.push(k(r,"change",this._handleFilterChange)),this.checkboxes=r,this._applyFilters()},_buildEntries(e,t){if(e==="embark_trait"){const i=this.container.dataset.audience||"consumer";return t.filter(r=>i==="all"||r.fields.audience===i).map(r=>{let o=[];try{const c=JSON.parse(r.fields.sources||"[]");Array.isArray(c)&&(o=c)}catch{o=[]}return{handle:r.handle,title:r.fields.label||"",description:r.fields.short_description||r.fields.description||"",category:r.fields.category||"",image:r.fields.image||"",gene:r.fields.gene_label||"",didYouKnow:r.fields.did_you_know||"",doggenetics:r.fields.doggenetics_link||"",sources:o,order:Number(r.fields.display_order)}}).sort((r,o)=>r.title.localeCompare(o.title,void 0,{sensitivity:"base"}))}return(e==="embark_breed"?t.filter(i=>i.fields.breed_we_test_for==="true"):t).map(i=>{if(e==="embark_breed"){const r=S(i.fields.akc_group),o=S(i.fields.ukc_group);return{handle:i.handle,title:i.fields.display_name||"",category:r,akc:r,ukc:o,image:i.fields.breed_image_link||"",link:`/pages/dog-breeds/${i.handle}`}}return{handle:i.handle,title:i.fields.disorder_name||"",description:i.fields.consumer_brief_description||"",category:i.fields.lay_term||"",abbreviation:(i.fields.subdisorder_name||"").replace(/[()]/g,"").trim(),ofa:i.fields.is_recommended_by_ofa==="true",link:`/pages/health-conditions/${i.handle}`}}).sort((i,r)=>i.title.localeCompare(r.title,void 0,{sensitivity:"base"}))},_resolveTagColors(e,t){const a={};return e==="embark_breed"?Promise.resolve(a):(_(".article-tags__tag--metaobject",this.container).forEach(s=>{const i=s.closest(h.items),r=i&&i.dataset.category,o=s.getAttribute("style");r&&o&&!a[r]&&(a[r]=o)}),v(t,"tag_color").then(s=>(s.forEach(i=>{const r=m(i.fields.tag);if(!r||a[r])return;const o=i.fields.background_color,c=i.fields.text_color;let p="";o&&(p+=`--tag-bg-color: ${o};`),c&&(p+=` --tag-text-color: ${c};`),p&&(a[r]=p.trim())}),a)).catch(()=>a))},_reconcileItems(e,t,a){const s=C(h.itemsContainer,this.container);if(!s)return;const i=new Map;_(`${h.items}[data-handle]`,s).forEach(n=>{i.set(n.dataset.handle,n)});const r=C(".traits-list__item-arrow",s),o=C(".accordion__label-icons",s),c=this.container.getAttribute("data-section-id"),p=document.createDocumentFragment();t.forEach((n,u)=>{let f=i.get(n.handle);f?(i.delete(n.handle),f.setAttribute("data-category",m(n.category)),e==="embark_breed"&&(f.setAttribute("data-akc",m(n.akc)),f.setAttribute("data-ukc",m(n.ukc)))):f=this._renderCard(e,n,{tagColors:a,arrowTemplate:r,accordionIconsTemplate:o,ofaLogo:this.container.dataset.ofaLogo||"",bodyId:`TraitBody-${c}-js-${u}`}),p.appendChild(f)}),i.forEach(n=>n.remove()),s.appendChild(p),this.emptyState&&s.appendChild(this.emptyState)},_renderCard(e,t,a){const s=e!=="embark_trait",i=l("article","traits-list__item faq-item",{"data-category":m(t.category),"data-title":t.title.toLowerCase(),"data-handle":t.handle,"data-open":"false"});e==="embark_breed"&&(i.setAttribute("data-akc",m(t.akc)),i.setAttribute("data-ukc",m(t.ukc)),i.setAttribute("data-letter",t.title.charAt(0).toLowerCase()));const r=[];if(t.description){const d=l("div","traits-list__item-description fs-body-50");E(d,t.description),r.push(d)}const o=t.category&&e!=="embark_breed",c=!!(t.abbreviation&&t.abbreviation.trim()),p=!!(t.ofa&&a.ofaLogo);if(o||c){const d=l("ul","article-tags traits-list__item-tags");if(o){const g=l("li","article-tags__item article-tags__item-color border-none"),b=l("span","article-tags__tag btn-nav btn-tag article-tags__tag--metaobject"),T=a.tagColors[m(t.category)];T&&b.setAttribute("style",T),b.textContent=w(t.category),g.appendChild(b),d.appendChild(g)}if(c){const g=l("li","article-tags__item article-tags__item-color border-none"),b=l("span","article-tags__tag btn-nav btn-tag article-tags__tag--abbreviation");b.textContent=t.abbreviation.trim(),g.appendChild(b),d.appendChild(g)}r.push(d)}if(p){i.classList.add("traits-list__item--has-seal");const d=l("div","traits-list__item-seal");d.appendChild(l("img","",{src:a.ofaLogo,alt:"Recommended by OFA",loading:"lazy",width:"24",height:"24"})),r.push(d)}if(t.image){const d=l("div","traits-list__item-image"),g=l("img","",{src:t.image,alt:"",loading:"lazy",width:"240",height:"240"});d.appendChild(g),r.push(d)}const n=l("h3","traits-list__item-title"),u=l("span","faq-item__heading");if(u.textContent=t.title,s){i.classList.add("traits-list__item--link");const d=l("a","faq-item__trigger",{href:t.link});return d.appendChild(u),n.appendChild(d),i.appendChild(n),r.forEach(g=>i.appendChild(g)),a.arrowTemplate&&i.appendChild(a.arrowTemplate.cloneNode(!0)),i}const f=this._renderTraitMore(t);if(f){const d=l("button","traits-list__item-trigger faq-item__trigger",{type:"button","aria-controls":a.bodyId,"aria-expanded":"false"});d.appendChild(u),a.accordionIconsTemplate&&d.appendChild(a.accordionIconsTemplate.cloneNode(!0)),n.appendChild(d),i.appendChild(n),r.forEach(b=>i.appendChild(b));const g=l("div","traits-list__more faq-item__text-container",{"aria-hidden":"true",id:a.bodyId});return f.className="traits-list__more-text faq-item__text fs-body-75 rte",g.appendChild(f),i.appendChild(g),i}const y=l("span","faq-item__trigger");return y.appendChild(u),n.appendChild(y),i.appendChild(n),r.forEach(d=>i.appendChild(d)),i},_renderTraitMore(e){const t=l("div");if(e.gene){const s=l("p"),i=l("strong");i.textContent=`Gene: ${e.gene}`,s.appendChild(i),t.appendChild(s)}if(e.didYouKnow){const s=l("p");E(s,`<strong>Did you know?</strong> ${e.didYouKnow}`),t.appendChild(s)}if(e.doggenetics){const s=l("p"),i=l("a","",{href:e.doggenetics,rel:"noopener",target:"_blank"});i.textContent="doggenetics.com",s.appendChild(i),t.appendChild(s)}const a=(e.sources||[]).filter(s=>s&&s.url);if(a.length){const s=l("p","fs-body-50");a.forEach((i,r)=>{const o=l("a","",{href:i.url,rel:"noopener",target:"_blank"});o.textContent=i.author||i.url,s.appendChild(o),r<a.length-1&&s.appendChild(document.createTextNode(", "))}),t.appendChild(s)}return t.childNodes.length?t:null},_rebuildFilterLists(e,t){const a={};e==="embark_breed"?(a.akc=t.map(s=>
11s.akc).filter(Boolean),a.ukc=t.map(s=>s.ukc).filter(Boolean)):a.category=t.map(s=>s.category).filter(Boolean),_(h.filterList,this.container).forEach(s=>{const i=s.getAttribute("data-traits-filter-list"),r=a[i];if(!r)return;const o=new Set(_(h.filterCheckbox,s).filter(n=>n.checked).map(n=>n.value)),c=new Map;r.forEach(n=>c.set(n,(c.get(n)||0)+1));const p=[...c.keys()].sort((n,u)=>n==="No Group"?1:u==="No Group"?-1:n.localeCompare(u));s.textContent="",p.forEach(n=>{const u=l("li","traits-list__filter-item"),f=l("label","traits-list__filter-label"),y=l("input","",{type:"checkbox",value:m(n),"data-traits-filter-checkbox":"","data-filter-key":i});o.has(y.value)&&(y.checked=!0),f.appendChild(y),f.appendChild(document.createTextNode(` ${w(n)} (${c.get(n)})`)),u.appendChild(f),s.appendChild(u)})})},_rebuildLetterGrid(e,t){if(e!=="embark_breed"||!this.letterButtons.length)return;const a=new Set(t.map(s=>s.title.charAt(0).toLowerCase()).filter(Boolean));this.letterButtons.forEach(s=>{s.disabled=!a.has(s.value)})},_handleAccordionToggle(e){const t=e.getAttribute("aria-controls"),a=t?document.getElementById(t):null;if(!a)return;const s=e.closest(h.items);I(a)?this._close(e,s,a):this._open(e,s,a)},_open(e,t,a){a&&(A(a),L(a),t&&t.setAttribute("data-open",!0),e.setAttribute("aria-expanded",!0),a.setAttribute("aria-hidden",!1))},_close(e,t,a){a&&(A(a),x(a),t&&t.setAttribute("data-open",!1),e.setAttribute("aria-expanded",!1),a.setAttribute("aria-hidden",!0))},_applyFilters(){const e={};this.checkboxes.filter(i=>i.checked).forEach(i=>{const r=i.dataset.filterKey||"category";e[r]||(e[r]=[]),e[r].push(i.value)});const t=(this.letterButtons||[]).find(i=>i.getAttribute("aria-pressed")==="true");t&&(e.letter=[t.value]);const a=Object.entries(e);let s=0;this.items.forEach(i=>{const r=a.every(([p,n])=>n.includes(i.dataset[p])),o=this.query===""||i.dataset.title.includes(this.query),c=r&&o;i.hidden=!c,c&&(s+=1)}),this.emptyState&&(this.emptyState.hidden=s!==0)},onUnload(){this.events.forEach(e=>e())}});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.