PageSourceSearch

https://www.birdfy.com/cdn/shop/t/68/assets/labels-and-badges.js?v=87060706161192287711758252452

js birdfy.com collected 2026-10-01 13:05:51 UTC 12,102 bytes, 64 lines download raw bytes

1requestAnimationFrame(()=>{document.addEventListener("alpine:init",()=>{Alpine.store("xBadges",{fixedPositionTemplate:`<div
2        class="x-badge-{label-id} x-badge-container pointer-events-none{container-img-class} ltr"
3        {preview-show-condition}
4      >
5        {content}
6      </div>`,customPositionTemplate:`<div
7        class="x-badge-{label-id} x-badge-container min-w-fit max-w-full max-h-full pointer-events-none{container-css-class} ltr"
8        x-data="{
9          contentHeight: 1,
10          rePosition() {
11            this.$nextTick(() => {
12              this.contentHeight = this.$refs.content ? this.$refs.content.offsetHeight : contentHeight;
13            });
14          }
15        }"
16        x-intersect.once="rePosition();
17          if (Shopify.designMode) {
18            window.addEventListener('resize', () => {
19              if ($store.xBadges.lastWindowWidth != window.innerWidth) {
20                rePosition();
21              }
22            });
23          } else {
24            installMediaQueryWatcher('(min-width: 768px)', (matches) => rePosition());
25          }"
26        {preview-show-condition}
27        :style="'{css-position} min-height: ' + contentHeight + 'px'"
28      >
29        {content}
30      </div>`,productDetailTemplate:`<div
31        class="x-badge-{label-id} x-badge-container min-w-fit max-w-full max-h-full bottom-0 pointer-events-none{container-css-class}{container-img-class}"
32      >
33        {content}
34      </div>`,outSideImageTemplate:`<div class="hidden" 
35        x-data="{
36          setPosition() {
37            const element = $el.closest('.card-product').getElementsByClassName('{queryEL}');
38            for (let i = 0; i < element.length; i++) {
39              element[i].innerHTML += $el.innerHTML;
40            }
41          }
42        }"
43        x-init="setPosition()">
44        <div
45          class="x-badge-{label-id} x-badge-container min-w-fit max-w-full max-h-full bottom-0 pointer-events-none{container-img-class}"
46          {preview-show-condition}
47        >
48          {content}
49        </div>
50      </div>`,previewActiveBlock:window.xBadgesPreviewActiveBlock,init(){Shopify.designMode&&document.addEventListener("shopify:block:select",event=>{if(!event.target.classList.contains("x-badges-block-preview"))return;let blockId=event.target.getAttribute("block-id");this.previewActiveBlock=blockId,window.xBadgesPreviewActiveBlock=blockId,document.dispatchEvent(new CustomEvent("eurus:badges:block-select"))})},load(el,callback=()=>{},container2=null){container2&&(el.container=container2);const sliderEl=el.closest("[x-data-slider]");if(sliderEl)if(sliderEl.classList.contains("is-initialized"))this.doLoad(el,callback);else{const sectionId=el.closest("[x-data-slider]").getAttribute("x-data-slider");document.addEventListener(`eurus:${sectionId}:splide-ready`,()=>{this.doLoad(el,callback)})}else this.doLoad(el,callback)},doLoad(el,callback=()=>{}){if(this.initAllLabels(el),Shopify.designMode){let productData=xParseJSON(el.getAttribute("x-labels-data"));document.addEventListener("shopify:section:load",()=>{productData&&!productData.isXBadgesPreview&&this.initAllLabels(el)})}callback(el)},initAllLabels(el){let productData=xParseJSON(el.getAttribute("x-labels-data"));if(!productData)return;if(Shopify.designMode){let currentLabels=el.getElementsByClassName("x-badge-container");if(currentLabels.length>0){const labelsNum=currentLabels.length;for(let i=0;i<labelsNum;i++)currentLabels[0].remove()}}let allLabels=document.getElementsByClassName("x-badges-block-data");for(let i=0;i<allLabels.length;i++){let label=xParseJSON(allLabels[i].getAttribute("x-badges-block-data"));if(!label.enable&&!productData.isXBadgesPreview)return;label.settings.icon=allLabels[i].getAttribute("x-badges-icon"),this.appendLabel(el,label,productData)}el.removeAttribute("x-labels-data")},appendLabel(el,label,productData){if(productData.container=="product-info"||label.settings.position=="custom"){el.innerHTML+=this.processTemplate(el,label,productData);return}let container2=el.querySelector(`.${label.settings.position}-container`);container2||(container2=this.createFixedPositionContainer(label.settings.position),el.appendChild(container2)),container2.innerHTML+=this.processTemplate(el,label,productData)},createFixedPositionContainer(position){let HTMLClass=`${position}-container label-container absolute gap-1 space-y-1`;return HTMLClass+=position.includes("top")?" top-1 flex-col":" bottom-1 flex-col-reverse",HTMLClass+=position.includes("left")?" left-1":" right-1",container=document.createElement("div"),container.setAttribute("class",HTMLClass),container},processContent(el,label,productData){let content2=!1;const canShow=this.canShow(label,productData);if(label.settings.image&&canShow){let imageHeight,imageWidth;productData.container=="product-info"?(imageHeight=126,imageWidth=Math.round(imageHeight*label.settings.image_aspect_ratio)):(imageWidth=label.settings.size_mobile>label.settings.size?label.settings.size_mobile*15:label.settings.size*15,imageHeight=imageWidth/label.settings.image_aspect_ratio);let image;if(label.settings.image.src?image=label.settings.image.src.includes("burst.shopifycdn.com")?label.settings.image.src:label.settings.image.src+"&width="+imageWidth*3:image=label.settings.image.includes("burst.shopifycdn.com")?label.settings.image:label.settings.image+"&width="+imageWidth*3,productData.container=="card")var imageDirection=label.settings.position.includes("left")?"justify-start":"justify-end",styleImage="width: var(--width-image-label); height: var(--height-image-label)";else var imageDirection=productData.make_content_center?"justify-center":"justify-start",styleImage="";
50content2=`<div x-ref="content" class='x-badge-content flex ${imageDirection}{css-opacity}'>
51            <img 
52              loading="lazy"
53              width="`+imageWidth+`"
54              height="`+imageHeight+`"
55              alt="`+(label.settings.image_alt.length>0?label.settings.image_alt:productData.title)+`"
56              src="`+image+`"
57              style="${styleImage}"
58            />
59          </div>`}else if(label.settings.content&&canShow){let qty=productData.inventory_management.length<1||productData.qty<0?"":productData.qty,saleAmount=productData.sale_amount.includes("-")?"":productData.sale_amount,countDown=label.settings.schedule_enabled?'<span x-intersect.once="$nextTick(() => { if (typeof rePosition !== `undefined`) {rePosition()} });" class="x-badge-countdown-'+label.id+' label-countdown empty:hidden"></span>':"",sale=Math.round((productData.compare_at_price-productData.price)*100/productData.compare_at_price);sale=sale==100?99:sale,sale=sale>0?sale+"%":"",content2=label.settings.content.replace(/{sale}/gi,sale).replace(/{sale_amount}/gi,saleAmount).replace(/{qty}/gi,qty).replace(/{price}/gi,productData.price_with_currency).replace(/{count_down}/gi,countDown),productData.metafield_label&&Object.entries(productData.metafield_label).forEach(([key,value])=>{content2=content2.replace(`{${key}}`,value)});const padding=label.settings.size/2,padding_mobile=label.settings.size_mobile/2,sizeClass=productData.container=="product-info"?"":` pt-${padding_mobile} pb-${padding_mobile} pl-${padding_mobile+1.5} pr-${padding_mobile+1.5} md:pt-${padding} md:pb-${padding} md:pl-${padding+1.5} md:pr-${padding+1.5}`,inlineStyle=productData.container=="product-info"?"":'style="font-size: var(--font-size-scale);"',inlineStyleIcon=productData.container=="product-info"?"":'style="height: var(--font-size-scale); width: var(--font-size-scale); min-width: var(--font-size-scale);"';content2=content2.length>0?`<div
60                x-ref="content"
61                class='x-badge-content ltr x-badge-text select-none inline-flex justify-center${sizeClass} items-center{css-opacity}{css-type} gap-2'
62                ${inlineStyle}
63              ><span class="icon-label empty:hidden" ${inlineStyleIcon}>${label.settings.icon}</span><span class="leading-normal w-fit p-break-words tag_linehight">${content2}</span></div>`:!1,countDown.length>0&&label.settings.schedule_enabled&&Alpine.store("xHelper").countdown(label.settings,function(canShow2,seconds,minutes,hours,days){const countdownElements=(el.container?el.container:el).getElementsByClassName("x-badge-countdown-"+label.id);if(!canShow2){for(let i=0;i<countdownElements.length;i++)countdownElements[i].innerHTML="";return}days=days>0?days+"D&nbsp;&nbsp;&nbsp;":"",hours=hours==0&&days.length==0?"":hours+" : ";const timeLeft=days+hours+minutes+" : "+seconds;for(let i=0;i<countdownElements.length;i++)countdownElements[i].innerHTML=timeLeft})}return content2},processTemplate(el,label,productData){let template="";if(content=this.processContent(el,label,productData)){const cssOpacity=" opacity-"+label.settings.opacity,cssPosition=productData.container=="card"?"left: "+label.settings.horizontal_position+"%; transform: translate(-"+label.settings.horizontal_position+"%, -"+label.settings.vertical_position+"%); top: "+label.settings.vertical_position+"%;":"";let cssType="";label.settings.type=="round"&&(cssType=" rounded-md"),label.settings.type=="rounded-full"&&(cssType=" rounded-full"),label.settings.type=="circle"&&(cssType=" tag_circle"),label.settings.type=="flag"&&(cssType=" tag_flag");let containerCssClass=productData.container=="card"?" absolute w-max":"";containerCssClass+=label.settings.horizontal_position>50?" text-end":" text-start";const previewShowCondition=productData.isXBadgesPreview?`x-show="$store.xBadges.previewActiveBlock == '{label-id}'"`:"",imgClass=label.settings.image?" label-img":"";template=this.getLableTemplate(productData.container,label.settings.position),template=template.replace("{preview-show-condition}",previewShowCondition).replace("{content}",content).replace("{css-opacity}",cssOpacity).replace("{css-position}",cssPosition).replace("{css-type}",cssType).replace("{container-css-class}",containerCssClass).replace("{container-img-class}",imgClass).replace(/{label-id}/gi,label.id)}return template},getLableTemplate(container2,position){return container2=="product-info"?this.productDetailTemplate:position=="custom"?this.customPositionTemplate:position=="below-image"||position=="bottom-card"||position=="next-price"?this.outSideImageTemplate.replace("{queryEL}",position):this.fixedPositionTemplate},canShow(label,productData){if(productData.isXBadgesPreview)return!0;
63if(productData.container=="card"&&!label.settings.show_on_product_card||productData.container=="product-info"&&!label.settings.show_on_product_page)return!1;if(label.type=="sale-label"&&productData.compare_at_price>productData.price||label.type=="sold-out-label"&&!productData.available)return!0;if(label.type=="preorder-label")return!!(productData.can_show_preorder&&productData.available);if(label.type=="new-label"){if(label.settings.day_since=="creation_date"&&label.settings.number_show<productData.diff_day_create)return!1;if(label.settings.day_since=="activation_date"&&label.settings.number_show<productData.diff_day_publish)return!1}if(label.settings.schedule_enabled){let endDate=new Date(label.settings.end_year,label.settings.end_month-1,label.settings.end_day,label.settings.end_hour,label.settings.end_minute);label.endTime=endDate.getTime()+(-1*label.settings.timezone*60-endDate.getTimezoneOffset())*60*1e3;let startDate=new Date(label.settings.start_year,label.settings.start_month-1,label.settings.start_day,label.settings.start_hour,label.settings.start_minute);label.startTime=startDate.getTime()+(-1*label.settings.timezone*60-startDate.getTimezoneOffset())*60*1e3;let now=new Date().getTime();if(label.endTime<now||label.startTime>now)return!1}if(label.settings.applied_products.includes(productData.id))return!0;for(let i=0;i<label.settings.applied_collections.length;i++)if(productData.collections.includes(label.settings.applied_collections[i]))return!0;return label.type!="sale-label"&&label.type!="sold-out-label"&&label.settings.applied_products.length==0&&label.settings.applied_collections.length==0}})})});
64//# sourceMappingURL=/cdn/shop/t/68/assets/labels-and-badges.js.map?v=87060706161192287711758252452

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.