UNPKG

@salla.sa/twilight-components

Version:
5 lines 7.66 kB
/*! * Crafted with ❤ by Salla */ import{a as e}from"./p-5a803ecc.js";salla.event.setMaxListeners(100);class t{setIncludes(e){this.includes=e;return this}toggleElementClassIf(e,t,a,r){t=Array.isArray(t)?t:t.split(" ");a=Array.isArray(a)?a:a.split(" ");let n=r(e);e===null||e===void 0?void 0:e.classList.remove(...n?a:t);e===null||e===void 0?void 0:e.classList.add(...n?t:a);return this}toggleClassIf(e,t,a,r){document.querySelectorAll(e).forEach((e=>this.toggleElementClassIf(e,t,a,r)));return this}isValidEmail(e){const t=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return t.test(String(e).toLowerCase())}filterEmojies(e){var t=/(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/g;return e.replace(t,"")}debounce(e,...t){if(!this.debounce_){this.debounce_=salla.helpers.debounce(((e,...t)=>e(...t)),500)}return this.debounce_(e,...t)}getProductsSource(e){return{"brands.single":"brands","product.index":"categories","product.index.latest":"latest","product.index.offers":"offers","product.index.search":"search","customer.wishlist":"wishlist","landing-page":"landing-page","product.index.tag":"tags","product.index.sales":"sales","components.most_sales_products":"sales"}[e||salla.config.get("page.slug")]||e||"latest"}getPageTitleForSource(e){e={brands:"common.titles.brands",latest:"blocks.home.latest_products",offers:"common.titles.discounts",sales:"common.titles.most_sales"}[e];return e?salla.lang.get(e):""}getProductsSourceValue(e,t){const a=this.getProductsSource(e);let r=null;if(t){try{r=JSON.parse(t)}catch(e){console.error("Invalid JSON string in sourceValue:",e)}}if(!["search","json","offers","latest","sales","related"].includes(a)){if(Array.isArray(r)&&r.length){return r}if(Array.isArray(r)&&!r.length){return""}if(typeof r==="number"){return[r]}if(!t&&["categories","tags","brands"].includes(e)){return[salla.config.get("page.id")]}}if(r||t){return r||t}if(a==="search"){return new URLSearchParams(window.location.search).get("q")||""}return salla.config.get("page.id")}extractFiltersFromUrl(e){let t={};e.forEach(((e,a)=>{const r=a.match(/^filters\[(.*?)\](\[(.*?)\])?$/u);if(r){const a=r[1];const n=r[3];if(n){t[a]=t[a]||{};t[a][n]=e}else{t[a]=e}}else{const r=a.match(/^(.*?)$/u);if(r){t[r[1]]=e}}}));return t}async injectExtraFieldsToResponse(e){if(!e||!this.includes)return e;const t=e.data.map((e=>e.id));try{const{data:a}=await this.fetchImagesAndOptions(t);this.injectOptionsAndImages(e.data,a);if(!this.includes.includes("metadata")){return e}const r=await salla.api.metadata.fetchValues("product",t);e.data.forEach((e=>{e["metadata"]=r.data.find((t=>parseInt(t.entity_id)===parseInt(e.id)))}));return e}catch(e){console.error("Error in injectExtraFieldsToResponse:",e);throw e}}fetchImagesAndOptions(e){return this.productsIncludes().length?salla.api.product.fetchOptions(e,{with:this.productsIncludes()}):Promise.resolve({data:[]})}injectOptionsAndImages(e,t){return t.length?e.map((e=>{this.includes.filter((e=>e!=="metadata")).forEach((a=>{const r=t.find((t=>parseInt(t.id)===parseInt(e.id)));e[a]=r?r[a]:null}));return e})):null}productsIncludes(){var e;return(e=this.includes)===null||e===void 0?void 0:e.filter((e=>e!="metadata"))}parseJson(e){if(typeof e!=="string"){return e}try{return JSON.parse(e)}catch(e){salla.logger.error("Failed to parse includes as JSON:",e)}return null}getProductSchemaMarkupScript(e){var t,a;const r=document.createElement("script");r.type="application/ld+json";const n={"@context":"http://schema.org","@type":"Product",name:e===null||e===void 0?void 0:e.name,image:((t=e===null||e===void 0?void 0:e.image)===null||t===void 0?void 0:t.url)||(e===null||e===void 0?void 0:e.thumbnail),description:e===null||e===void 0?void 0:e.description,brand:{"@type":"Brand",logo:(a=e===null||e===void 0?void 0:e.brand)===null||a===void 0?void 0:a.logo},offers:{"@type":"Offer",price:e===null||e===void 0?void 0:e.price}};r.text=JSON.stringify(n);return r}createProductSchema(e,t){var a;let r={productID:`${e.id}`,"@type":"Product",name:e.name,url:e.url,image:e.image.url||e.image,description:e.description||e.subtitle||e.name,offers:{"@type":"Offer",url:e.url,priceCurrency:e.currency,price:e.price,itemCondition:"NewCondition",availability:e.is_available?"InStock":"OutOfStock",priceValidUntil:e.discount_ends||new Date((new Date).setDate((new Date).getDate()+7)).toISOString().split("T")[0],priceSpecification:{"@type":"PriceSpecification",price:e.regular_price,priceCurrency:e.currency,valueAddedTaxIncluded:e.is_taxable},seller:{"@type":"Organization",name:salla.config.get("store.name")}}};if((a=e.rating)===null||a===void 0?void 0:a.stars){r.aggregateRating={"@type":"AggregateRating",ratingValue:e.rating.stars,reviewCount:e.rating.count}}return{"@type":"ListItem",position:t,item:r}}generateProductSchema(e){const t="salla-product-schema-script";if(document.getElementById(t)){salla.logger.warn(`already added schema-script with id (${t})!`);return}const a=document.createElement("script");a.type="application/ld+json";a.id=t;const r={"@context":"https://schema.org","@type":"ItemList",name:salla.config.get("page.title"),itemListElement:e.map(((e,t)=>this.createProductSchema(e,t+1)))};a.textContent=JSON.stringify(r);document.head.appendChild(a)}formatDateFromString(e,t,a="en"){const r=new Date(e);const n={en:"Invalid Date",ar:"تاريخ غير صالح"};if(isNaN(r.getTime())){return n[a]}const s={en:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ar:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]};const i={en:["January","February","March","April","May","June","July","August","September","October","November","December"],ar:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"]};const u=s[a][r.getDay()];const o=t(r.getDate(),a==="en");const c=i[a][r.getMonth()];const d=t(r.getFullYear(),a==="en");return`${u} ${o} ${c} ${d}`}copyToClipboard(e){var t=e.target.innerText;navigator.clipboard.writeText(t).then((()=>{console.log("Text copied to clipboard: "+t)})).catch((e=>{console.error("Unable to copy text to clipboard",e)}))}animateItems(t){if(!t)return;e({targets:t,opacity:[0,1],duration:1200,translateY:[20,0],delay:function(e,t){return t*100},easing:"easeOutExpo",complete:function(e){t.forEach((e=>{e.classList.add("animated")}))}})}createReviewObject(e){return{"@type":"Review",author:e.name,datePublished:e.date*1e3,description:e.content,reviewRating:{"@type":"Rating",bestRating:"5",ratingValue:"5",worstRating:"1"}}}generateReviewSchema(e){const t=document.createElement("script");t.type="application/ld+json";const a={"@context":"http://schema.org/","@type":"CollectionPage",name:"Category Name",description:"Description of the category",review:e.map((e=>this.createReviewObject(e)))};t.textContent=JSON.stringify(a);document.head.appendChild(t)}}const a=new t;export{a as H}; //# sourceMappingURL=p-cff377ac.js.map