(function(){"use strict";if(window.__shamaProductCartUxV1)return;window.__shamaProductCartUxV1=true;var PRODUCT_ID="1164777793";var MINIMUM=145;var initialQuantityHandled=false;var quantityTouched=false;var pending=0;var numberFormat=new Intl.NumberFormat("en-US",{maximumFractionDigits:2});var delivery="داخل جدة: اطلب قبل 12 ظهرًا ليصلك اليوم، وبعدها يصلك في اليوم التالي. وقت التوصيل من 10 صباحًا إلى 5 مساءً.";var deliveryFees="تظهر رسوم التوصيل بحسب العنوان قبل تأكيد الطلب.";function numeric(text){var normalized=String(text==null?"":text).replace(/[\u0660-\u0669]/g,function(c){return String(c.charCodeAt(0)-1632)}).replace(/[\u06f0-\u06f9]/g,function(c){return String(c.charCodeAt(0)-1776)}).replace(/\u066b/g,".").replace(/[,\u066c]/g,"");var match=normalized.match(/\d+(?:\.\d+)?/);return match?Number(match[0]):NaN}function format(value){return numberFormat.format(value)}function visible(element){if(!element||!element.isConnected)return false;for(var node=element;node&&node.nodeType===1;node=node.parentElement){var style=window.getComputedStyle(node);if(node.hidden||node.getAttribute("aria-hidden")==="true"||style.display==="none"||style.visibility==="hidden")return false}return true}function setText(element,text){if(element.textContent!==text)element.textContent=text}function setAttribute(element,name,value){value=String(value);if(element.getAttribute(name)!==value)element.setAttribute(name,value)}function paragraph(className,text){var element=document.createElement("p");element.className=className;if(text)element.textContent=text;return element}function card(id,label){var element=document.getElementById(id);if(element)return element;element=document.createElement("section");element.id=id;element.className="shama-ux-card";element.dir="rtl";element.setAttribute("aria-label",label);return element}function addStyles(){if(document.getElementById("shama-ux-style"))return;var style=document.createElement("style");style.id="shama-ux-style";style.textContent=".shama-ux-card{box-sizing:border-box;width:100%;max-width:100%;margin:12px 0;padding:12px 14px;border:1px solid #d7e5ee;border-radius:12px;background:#eaf3f8;color:#0a4773;text-align:start;font-size:14px;line-height:1.8;overflow-wrap:anywhere}.shama-ux-card[hidden]{display:none!important}.shama-ux-card p{margin:0;color:inherit;font-size:inherit;line-height:inherit;white-space:normal}.shama-ux-card p+p{margin-top:5px}.shama-ux-strong{font-weight:700}.shama-ux-card .shama-ux-note{font-size:12px;color:#334155}.shama-ux-progress{display:block;box-sizing:border-box;width:100%;height:8px;margin:10px 0;border:0;border-radius:8px;overflow:hidden;accent-color:#0a4773;background:#d7e5ee}.shama-ux-progress::-webkit-progress-bar{background:#d7e5ee}.shama-ux-progress::-webkit-progress-value{background:#0a4773}.shama-ux-progress::-moz-progress-bar{background:#0a4773}@media(max-width:767px){.shama-ux-card{padding:10px 12px;font-size:13px}}";document.head.appendChild(style)}function quantityValue(quantity){var input=quantity.querySelector("input[name=\"quantity\"]");var raw=input?input.value:quantity.getAttribute("value");if(raw==null||String(raw).trim()==="")return NaN;return Number(raw)}function initializeQuantity(quantity){setAttribute(quantity,"min",4);setAttribute(quantity,"step",1);var input=quantity.querySelector("input[name=\"quantity\"]");if(input){setAttribute(input,"min",4);setAttribute(input,"step",1)}if(initialQuantityHandled||quantityTouched||typeof quantity.setValue!=="function")return;var current=quantityValue(quantity);if(!Number.isFinite(current))return;initialQuantityHandled=true;var maximum=numeric(quantity.getAttribute("max"));if(current!==1||Number.isFinite(maximum)&&maximum<4)return;try{Promise.resolve(quantity.setValue(4)).then(schedule,function(){})}catch(error){}}function updateProduct(){var form=document.querySelector("body.product-single form.product-form");if(!form)return;var button=form.querySelector("salla-add-product-button[product-id=\""+PRODUCT_ID+"\"]");var quantity=form.querySelector(".sticky-product-bar salla-quantity-input[name=\"quantity\"]");if(!button||!quantity||quantity.hasAttribute("cart-item-id")||quantity.closest("form")!==form)return;initializeQuantity(quantity);var summary=card("shama-ux-product-quantity","كمية الكنعد ووزنها");if(!summary.firstChild){summary.appendChild(paragraph("shama-ux-strong shama-ux-product-unit"));var calculated=paragraph("shama-ux-product-calculated");calculated.setAttribute("aria-live","polite");calculated.setAttribute("aria-atomic","true");summary.appendChild(calculated);summary.appendChild(paragraph("shama-ux-note","الحد الأدنى لهذا المنتج 4 وحدات ≈ 1 كجم؛ الزيادة بوحدة 250 جم. الوزن محسوب من الشرائح."))}var bar=quantity.closest(".sticky-product-bar");if(summary.nextElementSibling!==bar)bar.before(summary);var input=quantity.querySelector("input[name=\"quantity\"]");if(input){var descriptions=(input.getAttribute("aria-describedby")||"").split(/\s+/).filter(Boolean);if(descriptions.indexOf(summary.id)===-1){descriptions.push(summary.id);setAttribute(input,"aria-describedby",descriptions.join(" "))}}var amount=quantityValue(quantity);var validAmount=Number.isInteger(amount)&&amount>0;setText(summary.querySelector(".shama-ux-product-unit"),"الوحدة 250 جم تقريبًا");var selection=validAmount?"الكمية المختارة: "+format(amount)+" وحدات ≈ "+format(amount*0.25)+" كجم":"اختر عدد الوحدات لعرض الوزن.";if(validAmount&&amount<4)selection+=" • الحد الأدنى 4 وحدات";setText(summary.querySelector(".shama-ux-product-calculated"),selection)}function updateCart(){document.querySelectorAll("body.cart .s-product-options-option-label small").forEach(function(label){if(!label.children.length&&/[\u0660-\u0669]/.test(label.textContent)){setText(label,label.textContent.replace(/[\u0660-\u0669]/g,function(c){return String(c.charCodeAt(0)-1632)}))}});var summary=document.querySelector("body.cart salla-cart-summary-card");var existing=document.getElementById("shama-ux-cart-minimum");var items=document.querySelectorAll("body.cart form[id^=\"item-\"] .cart-item");if(!summary||!items.length){if(existing)existing.hidden=true;return}var itemTotals=Array.from(items).map(function(item){var price=item.querySelector(".item-total");var link=item.querySelector("h2 a[href]");if(link&&new RegExp("/p"+PRODUCT_ID+"(?:[/?#]|$)").test(link.getAttribute("href"))){var quantityInput=item.querySelector("input[name=\"quantity\"]");var weight=item.querySelector(".space-y-1 p span");var quantity=quantityInput?Number(quantityInput.value):NaN;if(weight&&Number.isInteger(quantity)&&quantity>=4){setText(weight,format(quantity*0.25)+" كجم")}}return price?numeric(price.textContent):NaN});var total=itemTotals.every(Number.isFinite)?itemTotals.reduce(function(sum,price){return sum+price},0):NaN;if(!Number.isFinite(total)||total<=0){if(existing)existing.hidden=true;return}var box=existing||card("shama-ux-cart-minimum","الحد الأدنى والتوصيل");if(!box.firstChild){box.appendChild(paragraph("shama-ux-strong","الحد الأدنى للطلب 145 ر.س"));var gap=paragraph("shama-ux-cart-gap");gap.setAttribute("aria-live","polite");gap.setAttribute("aria-atomic","true");box.appendChild(gap);var progress=document.createElement("progress");progress.className="shama-ux-progress";progress.max=MINIMUM;progress.setAttribute("aria-label","الوصول إلى الحد الأدنى للطلب");box.appendChild(progress);box.appendChild(paragraph("",delivery));box.appendChild(paragraph("shama-ux-note","يُحسب المتبقي من قيمة المنتجات، دون رسوم التوصيل. "+deliveryFees))}var sidebar=document.querySelector("body.cart .sticky.top-20");if(sidebar&&summary.parentElement!==sidebar){if(box.parentElement!==sidebar)sidebar.appendChild(box)}else if(box.nextElementSibling!==summary)summary.before(box);if(box.hidden)box.hidden=false;var remainingCents=Math.max(0,MINIMUM*100-Math.round(total*100));setText(box.querySelector(".shama-ux-cart-gap"),remainingCents>0?"باقي "+format(remainingCents/100)+" ر.س للوصول إلى الحد الأدنى.":"بلغ طلبك الحد الأدنى 145 ر.س.");var indicator=box.querySelector(".shama-ux-progress");var completed=Math.min(MINIMUM,total);if(indicator.value!==completed)indicator.value=completed;setAttribute(indicator,"aria-valuetext",format(total)+" ر.س من "+MINIMUM+" ر.س")}function update(){pending=0;if(document.body.matches(".product-single"))updateProduct();else if(document.body.matches(".cart"))updateCart()}function schedule(){window.clearTimeout(pending);pending=window.setTimeout(update,80)}function ours(node){var element=node.nodeType===1?node:node.parentElement;return!!(element&&element.closest(".shama-ux-card"))}function start(){if(!document.body.matches(".product-single, .cart"))return;addStyles();["pointerdown","keydown","input","change"].forEach(function(type){document.addEventListener(type,function(event){var target=event.target;if(!(target instanceof Element)||ours(target))return;if(event.isTrusted&&target.closest("form.product-form salla-quantity-input"))quantityTouched=true;if(type==="input"||type==="change"||target.closest("salla-quantity-input"))schedule()},true)});var observer=new MutationObserver(function(records){if(records.some(function(record){if(ours(record.target))return false;if(record.type==="childList"){var changed=Array.from(record.addedNodes).concat(Array.from(record.removedNodes));if(changed.length&&changed.every(ours))return false}return true}))schedule()});observer.observe(document.body,{childList:true,subtree:true,characterData:true,attributes:true,attributeFilter:["value","amount","hidden","max"]});if(window.customElements)window.customElements.whenDefined("salla-quantity-input").then(schedule);update()}if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",start,{once:true});else start()})();(()=>{"use strict";const init=()=>{const product=document.body.classList.contains("product-single");const cart=document.body.classList.contains("cart");if(!product&&!cart)return;const sources=new Map;const idOf=href=>(String(href||"").match(/\/p(\d+)(?:[/?#]|$)/)||[])[1];const style=document.createElement("style");style.textContent=".shama-ux-recs{margin:20px 0;padding:16px;border:1px solid #dce6ec;border-radius:12px;background:#fff;color:#123f5e;width:100%}.shama-ux-recs h3{font-size:18px;font-weight:700;margin:0 0 6px}.shama-ux-recs>p{font-size:13px;margin:0 0 14px;color:#475569}.shama-ux-recs-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.shama-ux-recs-card{display:flex;flex-direction:column;gap:6px;min-width:0}.shama-ux-recs-card img{width:100%;height:100px;object-fit:contain;border-radius:8px}.shama-ux-recs-card strong{font-size:14px}.shama-ux-recs-card span{font-size:13px}.shama-ux-recs-card a:last-child{margin-top:auto;min-height:44px;display:flex;align-items:center;justify-content:center;border:1px solid #0a4773;border-radius:8px;font-size:13px;padding:6px;text-align:center;color:#0a4773}.shama-ux-recs-card a:focus-visible{outline:3px solid #397bab;outline-offset:2px}.shama-ux-recs-native{display:none!important}.cart .shama-ux-recs-list{grid-template-columns:1fr}.cart .shama-ux-recs-card{display:grid;grid-template-columns:56px minmax(0,1fr) 84px;align-items:center;gap:4px 8px}.cart .shama-ux-recs-card>a:first-child{grid-row:1/3}.cart .shama-ux-recs-card img{height:56px}.cart .shama-ux-recs-card>a:last-child{grid-column:3;grid-row:1/3;margin:0}.cart .shama-ux-recs-card span{grid-column:2}@media(max-width:600px){.shama-ux-recs-list{grid-template-columns:1fr}.shama-ux-recs-card{display:grid;grid-template-columns:64px minmax(0,1fr) 92px;align-items:center;gap:4px 10px}.shama-ux-recs-card>a:first-child{grid-row:1/3}.shama-ux-recs-card img{height:64px}.shama-ux-recs-card>a:last-child{grid-column:3;grid-row:1/3;margin:0}.shama-ux-recs-card span{grid-column:2}}";document.head.append(style);const collect=(host,isCart)=>{const rows=host.querySelectorAll(isCart?".s-basket-gap-card":".s-bought-together-item");const pool=[];rows.forEach(row=>{const link=row.querySelector(isCart?".s-basket-gap-card-name a":".s-bought-together-item-link");const id=idOf(link?.getAttribute("href"));const img=row.querySelector("img");const name=row.querySelector(isCart?".s-basket-gap-card-name":".s-bought-together-item-name")?.textContent?.trim();const price=row.querySelector(isCart?".s-basket-gap-card-price":".s-bought-together-item-price")?.textContent?.trim();if(!id||!name||!img||pool.some(p=>p.id===id))return;const url=new URL(link.href,location.href);if(url.origin!==location.origin)return;pool.push({id,href:url.href,name,price,img:img.getAttribute("src")||img.getAttribute("data-src")})});return pool};const make=row=>{const card=document.createElement("article");card.className="shama-ux-recs-card";const picture=document.createElement("a");picture.href=row.href;picture.setAttribute("aria-label",row.name);const img=document.createElement("img");img.src=row.img;img.alt=row.name;img.loading="lazy";img.width=120;img.height=100;picture.append(img);const name=document.createElement("strong");name.textContent=row.name;const price=document.createElement("span");price.textContent=row.price?row.price+" ر.س للوحدة":"";const link=document.createElement("a");link.href=row.href;link.textContent="عرض المنتج";link.setAttribute("aria-label","عرض "+row.name+" واختيار الكمية والتجهيز");card.append(picture,name,price,link);return card};let queued=false;const release=(host,state)=>{state.section.remove();if(!state.originalHiddenClass)host.classList.remove("shama-ux-recs-native");if(state.originalAriaHidden===null)host.removeAttribute("aria-hidden");else host.setAttribute("aria-hidden",state.originalAriaHidden);host.inert=state.originalInert;sources.delete(host)};const refresh=()=>{queued=false;const emptyCart=cart&&!document.querySelector("form.p-form .cart-item");const sidebar=cart?document.querySelector("body.cart .sticky.top-20"):null;sources.forEach((state,host)=>{if(!host.isConnected||emptyCart||cart&&!sidebar)release(host,state)});if(emptyCart||cart&&!sidebar)return;const excluded=new Set(Array.from(document.querySelectorAll("form.p-form .cart-item a[href]")).map(a=>idOf(a.href)).filter(Boolean));if(product)excluded.add(idOf(location.pathname));const summary=cart?document.querySelector("salla-cart-summary-card"):null;const minimum=cart?document.getElementById("shama-ux-cart-minimum"):null;let cartAnchor=cart&&summary?.parentElement===sidebar?summary:cart&&minimum&&sidebar.contains(minimum)?minimum:cart?Array.from(sidebar.children).filter(node=>!node.classList.contains("shama-ux-recs")).pop()||null:null;document.querySelectorAll(product?"salla-bought-together":"salla-basket-gap").forEach(host=>{const pool=collect(host,cart);if(!sources.has(host)){if(!pool.length)return;const section=document.createElement("section");section.className="shama-ux-recs";const title=document.createElement("h3");title.textContent="كمّل طلبك";const copy=document.createElement("p");copy.textContent="إضافات اختيارية لطلبك. افتح المنتج لاختيار الكمية والتجهيز.";const list=document.createElement("div");list.className="shama-ux-recs-list";section.append(title,copy,list);sources.set(host,{pool,section,list,signature:"",originalHiddenClass:host.classList.contains("shama-ux-recs-native"),originalAriaHidden:host.getAttribute("aria-hidden"),originalInert:host.inert});host.classList.add("shama-ux-recs-native");host.setAttribute("aria-hidden","true");host.inert=true}const state=sources.get(host);state.pool=pool;const anchor=cart?cartAnchor:host;if(anchor){if(anchor.nextElementSibling!==state.section)anchor.insertAdjacentElement("afterend",state.section)}else if(sidebar.firstElementChild!==state.section){sidebar.prepend(state.section)}if(cart)cartAnchor=state.section;const chosen=state.pool.filter(p=>!excluded.has(p.id)).slice(0,3);const signature=JSON.stringify(chosen);if(signature!==state.signature){state.list.replaceChildren(...chosen.map(make));state.signature=signature}const hidden=!chosen.length;if(state.section.hidden!==hidden)state.section.hidden=hidden})};const schedule=()=>{if(!queued){queued=true;requestAnimationFrame(refresh)}};const observer=new MutationObserver(records=>{if(records.some(r=>{const target=r.target.nodeType===1?r.target:r.target.parentElement;return!target?.closest(".shama-ux-recs")}))schedule()});observer.observe(document.body,{childList:true,subtree:true,characterData:true,attributes:true,attributeFilter:["src","data-src","href"]});refresh()};if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",init,{once:true});else init()})();(()=>{"use strict";const ids=new Set(["1638859552","1787970481","510052987","405273386","1140508112","1928725824","1762821122","400839868"]);const ownSelector="[data-shama-halfkg-help], [data-shama-halfkg-weight]";const formatter=new Intl.NumberFormat("en-US",{maximumFractionDigits:1});const setText=(node,value)=>{if(node.textContent!==value)node.textContent=value};let timer=0;function currentProductId(){const pathId=(location.pathname.match(/\/p(\d+)(?:\/|$)/)||[])[1];const button=document.querySelector("form.product-form salla-add-product-button[product-id]");return pathId||button&&button.getAttribute("product-id")}function update(){timer=0;if(!ids.has(currentProductId())){document.querySelectorAll(ownSelector).forEach(node=>node.remove());document.querySelectorAll(".shama-halfkg-cleaning").forEach(node=>node.classList.remove("shama-halfkg-cleaning"));return}document.querySelectorAll(".gomla__mix-match-options").forEach((section,index)=>{section.classList.add("shama-halfkg-cleaning");let help=section.querySelector("[data-shama-halfkg-help]");if(!help){help=document.createElement("div");help.dataset.shamaHalfkgHelp="";help.id="shama-halfkg-cleaning-help-"+index;help.dir="rtl";const unit=document.createElement("p");unit.textContent="كل 1 في عداد التنظيف = 500 جم (نصف كجم).";const total=document.createElement("p");total.dataset.shamaHalfkgTotal="";help.append(unit,total);section.prepend(help)}const allocation=section.querySelector(".gomla__mix-allocation");const heading=allocation&&allocation.querySelector(".gomla__mix-step-copy > span");const match=heading&&heading.textContent.trim().match(/^\s*\d+\s+من\s+(\d+)\s*$/);const units=match?Number(match[1]):NaN;setText(help.querySelector("[data-shama-halfkg-total]"),units===6||units===10?"عرض "+formatter.format(units/2)+" كجم = "+units+" وحدات للتوزيع.":"عرض 3 كجم = 6 وحدات، وعرض 5 كجم = 10 وحدات.");section.querySelectorAll(".gomla__mix-allocation-row").forEach(row=>{const name=row.querySelector(":scope > .gomla__mix-combination");const counter=row.querySelector(":scope > .gomla__mix-counter > span");const raw=counter&&counter.textContent.trim();const quantity=raw&&/^\d+$/.test(raw)?Number(raw):NaN;let weight=row.querySelector("[data-shama-halfkg-weight]");if(!name||!Number.isSafeInteger(quantity)||quantity<0){if(weight)weight.remove();return}if(!weight){weight=document.createElement("span");weight.dataset.shamaHalfkgWeight="";weight.setAttribute("aria-live","polite");name.append(weight)}const count=quantity===2?"وحدتان":formatter.format(quantity)+(quantity>=3&&quantity<=10?" وحدات":" وحدة");setText(weight,count+" = "+formatter.format(quantity/2)+" كجم")})})}function schedule(){if(!timer)timer=window.setTimeout(update,60)}function ours(node){const element=node.nodeType===1?node:node.parentElement;return!!(element&&element.closest(ownSelector))}function start(){if(!ids.has(currentProductId())||window.__shamaHalfKgCleaningV1)return;window.__shamaHalfKgCleaningV1=true;const style=document.createElement("style");style.id="shama-halfkg-cleaning-style";style.textContent="[data-shama-halfkg-help]{margin:0 0 12px;padding:10px 12px;border:1px solid #d7e5ee;border-radius:12px;background:#f1f7fb;color:#0a4773;font-size:13px;line-height:1.7;text-align:start}[data-shama-halfkg-help] p{margin:0;font:inherit;color:inherit}[data-shama-halfkg-help] p:first-child{font-weight:600}.shama-halfkg-cleaning .gomla__mix-combination{display:block;min-width:0}[data-shama-halfkg-weight]{display:block;margin-top:3px;color:#0a4773;font-size:12px;line-height:1.5;font-weight:400;white-space:normal}";document.head.append(style);const observer=new MutationObserver(records=>{if(records.some(record=>{if(ours(record.target))return false;const changed=[...record.addedNodes,...record.removedNodes];if(changed.length&&changed.every(ours))return false;const target=record.target.nodeType===1?record.target:record.target.parentElement;return!!(target&&target.closest(".gomla__mix-match-options"))||changed.some(node=>node.nodeType===1&&(node.matches(".gomla__mix-match-options")||node.querySelector(".gomla__mix-match-options")))}))schedule()});observer.observe(document.body,{childList:true,subtree:true,characterData:true});update()}if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",start,{once:true});else start()})();
window.SHAMA_BUNDLE_CONFIG=function(){"use strict";const columns=["enabled","validated","originalId","childId","optionId","originalUrl","name","unitKg","baseUnitPrice","baseMinimumUnits","originalAvailable","methods","tiers","variants"],nested={"methods":["id","name","fee"],"tiers":["kg","price","saving","label"],"variants":["kg","cleaningFee","valueId","price","available"]},rows=[[true,true,1302402674,1223207532,1273458907,"https://asmakshama.com/hamour-soman/p1302402674","سمك هامور",1,69,1,true,[["1838411360","تنظيف قلي",5],["1064832353","تنظيف سنجاري - فرن",5],["1528974179","بدون تنظيف",0]],[[3,199,8,"الأكثر طلبًا"],[5,329,16,"الأكثر توفيرًا"]],[[3,0,1190404397,199,true],[3,5,282148910,204,true],[3,10,1656647471,209,true],[3,15,1015320104,214,true],[5,0,241282345,329,true],[5,5,1481559082,334,true],[5,10,707521323,339,true],[5,15,133171764,344,true],[5,20,1373448501,349,true],[5,25,599410742,354,true]]],[true,true,719435743,1910050341,1611535359,"https://asmakshama.com/seabream/p719435743","سمك دنيس",1,69,1,true,[["1929960311","تنظيف قلي",5],["1289091696","تنظيف سنجاري (فرن)",5],["1755265138","بدون تنظيف",0],["1037320001","تنظيف شوي (فحم)",5]],[[3,199,8,"الأكثر طلبًا"],[5,329,16,"الأكثر توفيرًا"]],[[3,0,1797513856,199,true],[3,5,1158152577,204,true],[3,10,383066242,209,true],[3,15,1622298499,214,true],[5,0,849309324,329,true],[5,5,207981965,334,true],[5,10,1581427854,339,true],[5,15,674220943,344,true],[5,20,99936904,349,true],[5,25,1473317257,354,true]]],[true,true,1638859552,748900714,1043594023,"https://asmakshama.com/sea-shrimp-large-500g/p1638859552","جمبري بحري - كبير",0.5,64,1,true,[["195919274","تنظيف كامل",4],["1703648427","بدون تنظيف",0],["928037812","تنظيف شوي",4],["20830901","تنظيف شوي مع نزع الرأس",4],["1394276790","تنظيف مع ترك الذيل",4]],[[3,369,15,"الأكثر طلبًا"],[5,599,41,"الأكثر توفيرًا"]],[[3,0,82480963,369,true],[3,4,1454878284,373,true],[3,8,547147085,377,true],[3,12,1920592974,381,true],[3,16,1279658831,385,true],[3,20,505621064,389,true],[3,24,1745373513,393,true],[5,0,1171613770,599,true],[5,4,397571915,603,true],[5,8,1637389908,607,true],[5,12,862303573,611,true],[5,16,222483542,615,true],[5,20,1596978007,619,true],[5,24,687084112,623,true],[5,28,2060530001,627,true],[5,32,1421758546,631,true],[5,36,647724883,635,true],[5,40,1885445724,639,true]]],[true,true,1787970481,1077171884,127346993,"https://asmakshama.com/lobster/p1787970481","استكوزا - صغير",0.5,75,1,true,[["2131822453","تنظيف كامل",4],["450577783","تنظيف شوي",4],["1956668528","بدون تنظيف",0]],[[3,439,11,"الأكثر طلبًا"],[5,699,51,"الأكثر توفيرًا"]],[[3,0,1196589957,439,true],[3,4,289383046,443,true],[3,8,1661256071,447,true],[3,12,1021436032,451,true],[3,16,248385409,455,true],[3,20,1487613570,459,true],[3,24,712002947,463,true],[5,0,73231500,699,true],[5,4,1446742925,703,true],[5,8,536914574,707,true],[5,12,2112735631,711,true],[5,16,1338697864,715,true],[5,20,429389705,719,true],[5,24,1803294346,723,true],[5,28,1163474315,727,true],[5,32,388387988,731,true],[5,36,1627616149,735,true],[5,40,854168214,739,true]]],[true,true,510052987,1850609563,1716380168,"https://asmakshama.com/calamari/p510052987","حبار",0.5,34,1,true,[["1201063927","تنظيف كامل",4],["292808432","تقطيع حلقات",4],["1666713073","بدون تنظيف",0]],[[3,199,5,"الأكثر طلبًا"],[5,319,21,"الأكثر توفيرًا"]],[[3,0,1732395558,199,true],[3,4,825188647,203,true],[3,8,49643552,207,true],[3,12,1557311265,211,true],[3,16,784322082,215,true],[3,20,2021977379,219,true],[3,24,1247874092,223,true],[5,0,609102637,319,true],[5,4,1982548526,323,true],[5,8,1139829039,327,true],[5,12,501123112,331,true],[5,16,1874564905,335,true],[5,20,964736554,339,true],[5,24,191747371,343,true],[5,28,1699410996,347,true],[5,32,924259125,351,true],[5,36,16527926,355,true],[5,40,1389973815,359,true]]],[true,true,405273386,448915443,1123223825,"https://asmakshama.com/farming-shrimp-medium/p405273386","جمبري مزارع - وسط",0.5,34,1,false,[["373076201","تنظيف كامل",4],["1612308458","بدون تنظيف",0],["1038548715","تنظيف شوي",4],["264445428","تنظيف شوي مع نزع الرأس",4],["1504197877","تنظيف مع ترك الذيل",4]],[[3,199,5,"الأكثر طلبًا"],[5,319,21,"الأكثر توفيرًا"]],[[3,0,1313890304,199,false],[3,4,406753025,203,false],[3,8,1780198914,207,false],[3,12,1205914883,211,false],[3,16,298707980,215,false],[3,20,1672088333,219,false],[3,24,1031219726,223,false],[5,0,257706255,319,false],[5,4,1496934408,323,false],[5,8,721843977,327,false],[5,12,82613770,331,false],[5,16,1456059659,335,false],[5,20,546755604,339,false],[5,24,1920201493,343,false],[5,28,1280840214,347,false],[5,32,505753879,351,false],[5,36,1744982032,355,false],[5,40,1173323537,359,false]]],[true,true,1762821122,203845642,907195167,"https://asmakshama.com/seashrimp-small/p1762821122","جمبري بحري - صغير",0.5,34,1,true,[["435749870","تنظيف كامل",4],["1808147183","بدون تنظيف",0]],[[3,199,5,"الأكثر طلبًا"],[5,319,21,"الأكثر توفيرًا"]],[[3,0,585453377,199,true],[3,4,2093116994,203,true],[3,8,1319669059,207,true],[3,12,410365004,211,true],[3,16,1783810893,215,true],[3,20,1145039438,219,true],[3,24,369363279,223,true],[5,0,1675700296,319,true],[5,4,1036924745,323,true],[5,8,262886986,327,true],[5,12,1500542283,331,true],[5,16,727618644,335,true],[5,20,87798613,339,true],[5,24,1459671638,343,true],[5,28,552464727,347,true],[5,32,1925845072,351,true],[5,36,1284980561,355,true],[5,40,511467090,359,true]]],[true,true,1140508112,1031148047,1513899628,"https://asmakshama.com/farming-shrimp-large/p1140508112","جمبري مزارع - كبير",0.5,49,1,false,[["402916185","تنظيف كامل",4],["1977688666","بدون تنظيف",0],["1204699483","تنظيف شوي",4],["296447908","تنظيف شوي مع نزع الرأس",4],["1668386469","تنظيف مع ترك الذيل",4]],[[3,285,9,"الأكثر طلبًا"],[5,465,25,"الأكثر توفيرًا"]],[[3,0,758495678,285,false],[3,4,2131941567,289,false],[3,8,1224730552,293,false],[3,12,449054393,297,false],[3,16,1956718010,301,false],[3,20,1183728827,305,false],[3,24,275473284,309,false],[5,0,1647411845,465,false],[5,4,1008640390,469,false],[5,8,167493767,473,false],[5,12,1539370880,477,false],[5,16,900533889,481,false],[5,20,126496130,485,false],[5,24,1364675715,489,false],[5,28,591162252,493,false],[5,32,2098891405,497,false],[5,36,1323805070,501,false],[5,40,416073871,505,false]]],[true,true,400839868,1846086247,241166705,"https://asmakshama.com/seashrimp-medium/p400839868","جمبري بحري - وسط",0.5,49,1,true,[["86852875","تنظيف كامل",4],["1460298772","بدون تنظيف",0],["550535957","تنظيف شوي",4],["1925030422","تنظيف شوي مع نزع الرأس",4],["1285210391","تنظيف مع ترك الذيل",4]],[[3,285,9,"الأكثر طلبًا"],[5,465,25,"الأكثر توفيرًا"]],[[3,0,939293182,285,true],[3,4,31103231,289,true],[3,8,1403496440,293,true],[3,12,764200697,297,true],[3,16,2137646586,301,true],[3,20,1228276987,305,true],[3,24,454239172,309,true],[5,0,1962427077,465,true],[5,4,1187340742,469,true],[5,8,279150791,473,true],[5,12,1653125056,477,true],[5,16,1012256449,481,true],[5,20,238218690,485,true],[5,24,1478429891,489,true],[5,28,904145868,493,true],[5,32,130108109,497,true],[5,36,1370384846,501,true],[5,40,594839759,505,true]]],[true,true,1928725824,1890699687,1471350595,"https://asmakshama.com/seashrimp-jumbo/p1928725824","جمبري بحري - (جامبو)",0.5,79,1,true,[["1616476666","تنظيف كامل",4],["841455867","بدون تنظيف",0],["202155972","تنظيف شوي",4],["1508492997","تنظيف شوي مع نزع الرأس",4],["733406662","تنظيف مع ترك الذيل",4]],[[3,459,15,"الأكثر طلبًا"],[5,749,41,"الأكثر توفيرًا"]],[[3,0,1764213604,459,true],[3,4,990700133,463,true],[3,8,350814566,467,true],[3,12,1723211879,471,true],[3,16,814960480,475,true],[3,20,41447009,479,true],[3,24,1548127586,483,true],[5,0,774089827,749,true],[5,4,2013842284,753,true],[5,8,1440082541,757,true],[5,12,665979246,761,true],[5,16,1906255983,765,true],[5,20,1130641256,769,true],[5,24,490821225,773,true],[5,28,1865315690,777,true],[5,32,955552875,781,true],[5,36,181515124,785,true],[5,40,1690227317,789,true]]],[true,true,689997416,421191115,640577482,"https://asmakshama.com/sardin/p689997416","سردين بلدي",0.5,19,1,true,[],[[3,109,5,"الأكثر طلبًا"],[5,179,11,"الأكثر توفيرًا"]],[[3,0,252795730,109,true],[5,0,1493072467,179,true]]],[true,true,1311577779,317842237,611139099,"https://asmakshama.com/salmon-slice/p1311577779","شرائح سلمون",0.25,34,6,true,[["2142548539","شرائح",0],["1234292996","فيليه بجلد",1.25],["461303813","فيليه بدون جلد",1.25]],[[3,399,9,"الأكثر طلبًا"],[5,659,21,"الأكثر توفيرًا"]],[[3,0,37584820,399,true],[3,1.25,1545313973,400.25,true],[3,2.5,702594486,401.5,true],[3,3.75,2077088951,402.75,true],[3,5,1437268912,404,true],[3,6.25,662117041,405.25,true],[3,7.5,1901869490,406.5,true],[3,8.75,1127831731,407.75,true],[3,10,486959036,409,true],[3,11.25,1860994749,410.25,true],[3,12.5,952739262,411.5,true],[3,13.75,177652927,412.75,true],[3,15,1685316536,414,true],[5,0,911737529,659,true],[5,1.25,2433466,660.25,true],[5,2.5,1375879355,661.5,true],[5,3.75,804220804,662.75,true],[5,5,2041941637,664,true],[5,6.25,1267903878,665.25,true],[5,7.5,629132423,666.5,true],[5,8.75,2001005440,667.75,true],[5,10,1092684417,669,true],[5,11.25,319695234,670.25,true],[5,12.5,1827358851,671.5,true],[5,13.75,1051744140,672.75,true],[5,15,144537229,674,true],[5,16.25,1518048654,675.25,true],[5,17.5,876655759,676.5,true],[5,18.75,103666568,677.75,true],[5,20,1342894729,679,true],[5,21.25,769069450,680.25,true],[5,22.5,2143039627,681.5,true],[5,23.75,1234788244,682.75,true],[5,25,459701909,684,true]]],[true,true,1164777793,2014294893,583873916,"https://asmakshama.com/derak/p1164777793","شريحة ديراك (كنعد)",0.25,30,4,true,[],[[3,349,11,"الأكثر طلبًا"],[5,569,31,"الأكثر توفيرًا"]],[[3,0,1488544991,349,true],[5,0,713524184,569,true]]],[true,true,78779452,1315536840,229780118,"https://asmakshama.com/lobster-large-1kg/p78779452","استكوزا - كبير",1,199,1,true,[["375466212","تنظيف كامل",8],["1615738853","تنظيف شوي",8],["841701094","بدون تنظيف",0]],[[3,579,18,"الأكثر طلبًا"],[5,949,46,"الأكثر توفيرًا"]],[[3,0,61019778,579,true],[3,8,1569207683,587,true],[3,16,794121356,595,true],[3,24,2033349517,603,true],[5,0,1259901582,949,true],[5,8,619032975,957,true],[5,16,1992478856,965,true],[5,24,1085276041,973,true],[5,32,309599882,981,true],[5,40,1817263499,989,true]]],[true,true,168845370,1704599615,760532212,"https://asmakshama.com/taradi-/p168845370","سمك طرادي",1,199,1,true,[["1047494457","تنظيف قلي",5],["137731642","تنظيف سنجاري (فرن)",5],["939514884","بدون تنظيف",0]],[[3,579,18,"الأكثر طلبًا"],[5,949,46,"الأكثر توفيرًا"]],[[3,0,1154838568,579,true],[3,5,380870441,584,true],[3,10,1620622890,589,true],[3,15,845536555,594,true],[5,0,205716532,949,true],[5,5,1580145461,954,true],[5,10,737425974,959,true],[5,15,97605943,964,true],[5,20,1472100400,969,true],[5,25,562333489,974,true]]],[true,true,1255678199,1967685320,1546482461,"https://asmakshama.com/green-hareed/p1255678199","سمك حريد أخضر",1,64,1,true,[["1494661527","تنظيف قلي",5],["81323921","تنظيف سنجاري - فرن",5],["1278501789","بدون تنظيف",0]],[[3,185,7,"الأكثر طلبًا"],[5,299,21,"الأكثر توفيرًا"]],[[3,0,926199455,185,true],[3,5,17943960,190,true],[3,10,1392438425,195,true],[3,15,752552858,200,true],[5,0,2124425883,299,true],[5,5,1217219044,304,true],[5,10,443181285,309,true],[5,15,1949792230,314,true],[5,20,1176344295,319,true],[5,25,335197664,324,true]]],[true,true,1550023971,430059032,629317999,"https://asmakshama.com/white-hareed/p1550023971","سمك حريد أبيض",1,89,1,true,[["532813729","تنظيف قلي",5],["1773090466","تنظيف سنجاري - فرن",5],["357659820","بدون تنظيف",0]],[[3,259,8,"الأكثر طلبًا"],[5,419,26,"الأكثر توفيرًا"]],[[3,0,1179956002,259,true],[3,5,271700515,264,true],[3,10,1646194988,269,true],[3,15,1073418285,274,true],[5,0,163594030,419,true],[5,5,1538088495,424,true],[5,10,898268456,429,true],[5,15,122723369,434,true],[5,20,1363000106,439,true],[5,25,588962347,444,true]]],[true,true,1754985863,328142797,1403338852,"https://asmakshama.com/mussles/p1754985863","محار",1,75,1,true,[],[[3,219,6,"الأكثر طلبًا"],[5,359,16,"الأكثر توفيرًا"]],[[3,0,848597524,219,true],[5,0,208777493,359,true]]],[true,true,2031911762,1976333265,1187252834,"https://asmakshama.com/crab/p2031911762","كابوريا",1,55,1,true,[["1982564580","تنظيف كامل",8],["1874515431","بدون تنظيف",0]],[[3,159,6,"الأكثر طلبًا"],[5,259,16,"الأكثر توفيرًا"]],[[3,0,327170492,159,true],[3,8,1835882685,167,true],[3,16,1061840830,175,true],[3,24,152078015,183,true],[5,0,1526572472,259,true],[5,8,886752441,267,true],[5,16,111666106,275,true],[5,24,1351353019,283,true],[5,32,577315204,291,true],[5,40,2083930245,299,true]]],[true,true,56953468,1873058107,1436309070,"https://asmakshama.com/bolti/p56953468","سمك بلطي",1,39,1,true,[["553933155","تنظيف قلي",5],["1927379052","تنظيف سنجاري (فرن)",5],["1288669037","بدون تنظيف",0],["1173710601","تنظيف شوي (فحم)",5]],[[3,109,8,"الأكثر طلبًا"],[5,179,16,"الأكثر توفيرًا"]],[[3,0,87940886,109,true],[3,5,1461386775,114,true],[3,10,552017168,119,true],[3,15,1286167314,124,true],[5,0,1750898972,179,true],[5,5,1642325535,184,true],[5,10,227877913,189,true],[5,15,1601323802,194,true],[5,20,694116891,199,true],[5,25,1426235493,204,true]]],[true,true,1038128218,1313952274,142664027,"https://asmakshama.com/bayad/p1038128218","سمك بياض",1,59,1,true,[["516668668","تنظيف قلي",5],["1754323965","تنظيف سنجاري (فرن)",5],["341449215","بدون تنظيف",0]],[[3,169,8,"الأكثر طلبًا"],[5,279,16,"الأكثر توفيرًا"]],[[3,0,1262517942,169,true],[3,5,623812023,174,true],[3,10,1997257904,179,true],[3,15,1087429553,184,true],[5,0,314440370,279,true],[5,5,1822038451,284,true],[5,10,1046952124,289,true],[5,15,139216829,294,true],[5,20,1512662718,299,true],[5,25,938968511,304,true]]],[true,true,2114009441,1003492209,1764060032,"https://asmakshama.com/shaour/p2114009441","سمك شعور",1,59,1,true,[["493326054","تنظيف قلي",5],["183954401","بدون تنظيف",0]],[[3,169,8,"الأكثر طلبًا"],[5,279,16,"الأكثر توفيرًا"]],[[3,0,1102914170,169,true],[3,5,328876411,174,true],[3,10,1835491396,179,true],[3,15,1062047557,184,true],[5,0,153792070,279,true],[5,5,1526189383,284,true],[5,10,886893632,289,true],[5,15,112790337,294,true],[5,20,1350969922,299,true],[5,25,576932163,304,true]]],[true,true,1954768456,1284513955,750723099,"https://asmakshama.com/arabi/p1954768456","سمك عربي - بوري",1,46,1,true,[["49754204","تنظيف قلي",5],["1557946205","تنظيف سنجاري (فرن)",5],["783908446","تنظيف شوي (فحم)",5],["1248640088","بدون تنظيف",0]],[[3,134,4,"الأكثر طلبًا"],[5,219,11,"الأكثر توفيرًا"]],[[3,0,1973274258,134,true],[3,5,1199236499,139,true],[3,10,289866908,144,true],[3,15,1663837085,149,true],[5,0,1024017054,219,true],[5,5,248930719,224,true],[5,10,1488748696,229,true],[5,15,714715033,234,true],[5,20,73846426,239,true],[5,25,1447292315,244,true]]],[true,true,2081024887,1890825136,1779654261,"https://asmakshama.com/seabass/p2081024887","سمك قاروص (سيباس)",1,46,1,true,[["1618222621","تنظيف قلي",5],["844184862","تنظيف سنجاري - فرن",5],["1809905989","فيليه - صافي نصف الوزن تقريبا",5],["1171068998","بدون تنظيف",0]],[[3,134,4,"الأكثر طلبًا"],[5,219,11,"الأكثر توفيرًا"]],[[3,0,79555365,134,true],[3,5,1452935718,139,true],[3,10,543631655,144,true],[3,15,1917601824,149,true],[5,0,1277777697,219,true],[5,5,435582498,224,true],[5,10,1809618211,229,true],[5,15,1169798188,234,true],[5,20,394711853,239,true],[5,25,1633940014,244,true]]],[true,true,931175745,25390478,551985338,"https://asmakshama.com/sejan/p931175745","سمك سيجان",1,46,1,true,[["1459234030","تنظيف قلي",5],["549929967","بدون تنظيف",0]],[[3,134,4,"الأكثر طلبًا"],[5,219,11,"الأكثر توفيرًا"]],[[3,0,281797341,134,true],[3,5,1653604830,139,true],[3,10,1014833375,144,true],[3,15,240799704,149,true],[5,0,1478979289,219,true],[5,5,705531354,224,true],[5,10,132820187,229,true],[5,15,1370999588,234,true],[5,20,597486117,239,true],[5,25,2105084198,244,true]]],[true,true,26366312,416135833,2032387740,"https://asmakshama.com/shaour-gamar/p26366312","سمك شعور قمر",1,79,1,true,[["765182222","تنظيف قلي",5],["2137055247","تنظيف سنجاري (فرن)",5],["455749129","فيليه - صافي نصف الوزن تقريبا",5],["2024903507","بدون تنظيف",0]],[[3,229,8,"الأكثر طلبًا"],[5,375,20,"الأكثر توفيرًا"]],[[3,0,1766794610,229,true],[3,5,991183987,234,true],[3,10,351363964,239,true],[3,15,1725923965,244,true],[5,0,816095614,375,true],[5,5,42057855,380,true],[5,10,1550774136,385,true],[5,15,776670841,390,true],[5,20,2014326138,395,true],[5,25,1442663547,400,true]]],[true,true,1870093732,1713498347,96644102,"https://asmakshama.com/hamour-fillet/p1870093732","فيليه هامور",1,99,1,true,[["250292524","مع جلد",0],["1487947821","بدون جلد",0]],[[3,289,8,"الأكثر طلبًا"],[5,469,26,"الأكثر توفيرًا"]],[[3,0,1655318757,289,true],[5,0,1014446054,469,true]]],[true,true,209876994,1896534259,1435925781,"https://asmakshama.com/najel/p209876994","سمك ناجل",1,219,1,true,[["2035435477","تنظيف قلي",5],["1262446294","تنظيف سنجاري (فرن)",5],["621118935","تنظيف كوزي",5],["1994564816","بدون تنظيف",0]],[[3,639,18,"الأكثر طلبًا"],[5,1049,46,"الأكثر توفيرًا"]],[[3,0,145539548,639,true],[3,5,1518985437,644,true],[3,10,878055390,649,true],[3,15,104017631,654,true],[5,0,1343770072,1049,true],[5,5,770010329,1054,true],[5,10,2143521754,1059,true],[5,15,1235790555,1064,true],[5,20,460704036,1069,true],[5,25,1968367653,1074,true]]]],config={"schemaVersion":1,"enabled":true};function expand(keys,row){const item={};keys.forEach((key,index)=>{item[key]=row[index]});return item}config.products=rows.map(row=>{const product={};columns.forEach((key,index)=>{const keys=nested[key];if(!keys){product[key]=row[index];return}let tuples=row[index];Object.defineProperty(product,key,{enumerable:true,configurable:true,get(){const value=tuples.map(tuple=>expand(keys,tuple));Object.defineProperty(product,key,{value,writable:true,enumerable:true,configurable:true});tuples=null;return value},set(value){Object.defineProperty(product,key,{value,writable:true,enumerable:true,configurable:true});tuples=null}})});return product});return config}();
(function(){"use strict";const minor=value=>Math.round(Number(value)*100);const validId=value=>/^(?:[1-9]\d*)$/.test(String(value))&&Number.isSafeInteger(Number(value));const plainMoney=value=>typeof value==="number"&&Number.isFinite(value)&&value>=0&&Math.abs(value*100-Math.round(value*100))<0.000001;function unitsFor(kg,unitKg){const units=kg/unitKg;if(!Number.isInteger(units)||units<1)throw new Error("Invalid pack weight");return units}function distribute(total,keys){if(!Number.isInteger(total)||total<1||!keys.length||keys.length>total)throw new Error("Invalid cleaning allocation");return Object.fromEntries(keys.map((key,index)=>[key,Math.floor(total/keys.length)+(index<total%keys.length?1:0)]))}function shift(allocation,key,direction){const result={...allocation};const other=Object.keys(result).filter(id=>id!==key);if(!(key in result)||!other.length)return result;if(direction===1){const donor=other.sort((a,b)=>result[b]-result[a]).find(id=>result[id]>1);if(donor){result[donor]--;result[key]++}}else if(direction===-1&&result[key]>1){const receiver=other.sort((a,b)=>result[a]-result[b])[0];result[key]--;result[receiver]++}return result}function normalizeEntry(raw){if(!raw||raw.enabled!==true||raw.validated!==true)return null;if(![raw.originalId,raw.childId,raw.optionId].every(validId)||String(raw.originalId)===String(raw.childId))throw new Error("Invalid product mapping");if(![0.25,0.5,1].includes(Number(raw.unitKg))||!plainMoney(raw.baseUnitPrice)||Number(raw.baseUnitPrice)<=0)throw new Error("Invalid base price or weight");if(!Array.isArray(raw.methods)||!Array.isArray(raw.tiers)||!Array.isArray(raw.variants))throw new Error("Incomplete product configuration");const methods=raw.methods.map(method=>{if(!method.id||!method.name||!plainMoney(method.fee)||method.fee===null||method.fee==="")throw new Error("Unknown cleaning fee");return{id:String(method.id),name:String(method.name),fee:Number(method.fee)}});if(new Set(methods.map(method=>method.id)).size!==methods.length)throw new Error("Duplicate cleaning method");const tiers=raw.tiers.map(tier=>{if(![3,5].includes(Number(tier.kg))||!plainMoney(tier.price)||Number(tier.price)<=0)throw new Error("Invalid tier");const original=minor(raw.baseUnitPrice)*unitsFor(Number(tier.kg),Number(raw.unitKg));const saving=original-minor(tier.price);if(saving<0||saving!==minor(tier.saving))throw new Error("Approved saving does not match tier");return{kg:Number(tier.kg),price:Number(tier.price),saving:saving/100,label:String(tier.label||(Number(tier.kg)===3?"الأكثر طلبًا":"الأكثر توفيرًا"))}});if(tiers.length!==2||new Set(tiers.map(tier=>tier.kg)).size!==2)throw new Error("Both pack tiers required");const variants=raw.variants.map(variant=>{const tier=tiers.find(item=>item.kg===Number(variant.kg));if(!tier||!validId(variant.valueId)||!plainMoney(variant.cleaningFee)||!plainMoney(variant.price)||minor(variant.price)!==minor(tier.price)+minor(variant.cleaningFee))throw new Error("Variant price does not match server mapping");return{kg:tier.kg,cleaningFee:Number(variant.cleaningFee),valueId:Number(variant.valueId),price:Number(variant.price),available:variant.available===true}});if(!variants.length||new Set(variants.map(variant=>`${variant.kg}:${minor(variant.cleaningFee)}`)).size!==variants.length||new Set(variants.map(variant=>variant.valueId)).size!==variants.length)throw new Error("Missing or ambiguous variant mapping");let originalUrl;try{originalUrl=new URL(String(raw.originalUrl))}catch(_){throw new Error("Original product URL required")}if(originalUrl.protocol!=="https:"||originalUrl.hostname!=="asmakshama.com")throw new Error("Unexpected original product URL");const minimum=Number(raw.baseMinimumUnits);if(!Number.isInteger(minimum)||minimum<1)throw new Error("Verified base minimum required");return{originalId:Number(raw.originalId),childId:Number(raw.childId),optionId:Number(raw.optionId),originalUrl:originalUrl.href,name:String(raw.name||""),unitKg:Number(raw.unitKg),baseUnitPrice:Number(raw.baseUnitPrice),baseMinimumUnits:minimum,originalAvailable:raw.originalAvailable===true,methods,tiers,variants}}function quote(entry,kg,allocation){const tier=entry.tiers.find(item=>item.kg===kg);if(!tier)throw new Error("Invalid tier");const expected=unitsFor(kg,entry.unitKg);let count=0,cleaningMinor=0;for(const[id,quantity]of Object.entries(allocation)){const method=entry.methods.find(item=>item.id===id);if(!method||!Number.isInteger(quantity)||quantity<1)throw new Error("Invalid cleaning method or count");count+=quantity;cleaningMinor+=minor(method.fee)*quantity}if(entry.methods.length&&count!==expected)throw new Error("Cleaning total must equal pack weight");const variant=entry.variants.find(item=>item.kg===kg&&minor(item.cleaningFee)===cleaningMinor);if(!variant||minor(variant.price)!==minor(tier.price)+cleaningMinor)return{tier,cleaning:cleaningMinor/100,variant:null,total:null};return{tier,cleaning:cleaningMinor/100,variant,total:variant.price}}const numberFormatter=new Intl.NumberFormat("en-US",{maximumFractionDigits:2});const numberText=number=>numberFormatter.format(number);const weightText=kg=>kg<1?`${numberText(kg*1000)} جم`:`${numberText(kg)} كجم`;function makeNotes(entry,kg,allocation,customerNote){const lines=[entry.methods.length?`التجهيز لكل باقة ${weightText(kg)}:`:`وزن كل باقة ${weightText(kg)}.`];for(const[id,quantity]of Object.entries(allocation)){const method=entry.methods.find(item=>item.id===id);lines.push(`${method.name}: ${quantity} وحدة × ${weightText(entry.unitKg)} = ${weightText(quantity*entry.unitKg)}`)}if(entry.methods.length)lines.push("عند زيادة كمية هذا المنتج في السلة يتكرر هذا التوزيع لكل باقة.");const note=String(customerNote||"").trim().slice(0,250);if(note)lines.push(`ملاحظة العميل: ${note}`);return lines.join("\n")}function buildPayload(entry,kg,allocation,customerNote){const selected=quote(entry,kg,allocation);if(!selected.variant)throw new Error("Unavailable pack variant");return{id:entry.childId,quantity:1,options:{[String(entry.optionId)]:selected.variant.valueId},notes:makeNotes(entry,kg,allocation,customerNote)}}function buildBasePayload(entry,selection){const quantity=Number(selection.quantity);const minimum=Math.max(entry.baseMinimumUnits,Number(selection.minimum));const maximum=selection.maximum==null?null:Number(selection.maximum);if(!validId(entry.originalId)||!Number.isSafeInteger(quantity)||!Number.isSafeInteger(minimum)||quantity<minimum)throw new Error(`أدخل كمية صحيحة لا تقل عن ${entry.baseMinimumUnits} وحدة.`);if(maximum!==null&&(!Number.isSafeInteger(maximum)||maximum<0||quantity>maximum))throw new Error("الكمية المختارة تتجاوز الكمية المتاحة.");if(!Array.isArray(selection.groups)||selection.groups.length>1)throw new Error("تعذرت قراءة خيارات المنتج. أعد تحميل الصفحة.");if(entry.methods.length&&!selection.groups.length)throw new Error("اختر طريقة التجهيز أولًا.");const options={};selection.groups.forEach(group=>{const match=String(group.name).match(/^options\[([1-9]\d*)\]$/);if(!match||!validId(match[1])||!Array.isArray(group.values))throw new Error("تعذرت قراءة خيارات المنتج. أعد تحميل الصفحة.");const selected=group.values.filter(value=>value.checked===true);if(selected.length>1||(group.required||entry.methods.length)&&selected.length!==1)throw new Error("اختر طريقة تجهيز واحدة للكمية المطلوبة.");if(!selected.length)return;const value=selected[0];if(value.disabled||!validId(value.value)||!entry.methods.some(method=>method.id===String(value.value)))throw new Error("طريقة التجهيز المختارة غير متاحة. اختر طريقة أخرى.");options[match[1]]=Number(value.value)});return{id:entry.originalId,quantity,options,notes:String(selection.notes||"")}}const core={normalizeEntry,unitsFor,distribute,shift,quote,makeNotes,buildPayload,buildBasePayload};if(typeof module==="object"&&module.exports){module.exports=core;return}if(typeof window==="undefined"||typeof document==="undefined"||window.ShamaBundles)return;const escapeHtml=value=>String(value).replace(/[&<>"']/g,char=>({"&":"&amp;","<":"&lt;",">":"&gt;","\"":"&quot;","'":"&#39;"})[char]);const state={rawEntries:[],rawIndex:new Map,entryCache:new Map,validatedIds:new Map,root:null,baseFooter:null,entry:null,form:null,pageId:null,isChild:false,mode:"base",selected:[],cleaningChoiceTouched:false,allocation:{},note:"",busy:false,status:"",statusType:"",hidden:new Set,cartHidden:new Set,observer:null,attributeObserver:null,observedForm:null,observingBody:false,pageKind:"other",queued:false,destroyed:false,cooldown:false,cooldownTimer:null,errors:[],baseInitialized:new WeakSet,renderSignature:null,baseFooterSignature:null};function validateRaw(index){if(state.entryCache.has(index))return state.entryCache.get(index);const raw=state.rawEntries[index];let entry=null;try{entry=normalizeEntry(raw);if(entry){const earlier=new Set([...(state.rawIndex.get(entry.originalId)||[]),...(state.rawIndex.get(entry.childId)||[])].filter(other=>other<index));[...earlier].sort((a,b)=>a-b).forEach(validateRaw);if(state.validatedIds.has(entry.originalId)||state.validatedIds.has(entry.childId))throw new Error("Duplicate product mapping");state.validatedIds.set(entry.originalId,entry);state.validatedIds.set(entry.childId,entry)}}catch(error){entry=null;state.errors.push({index,originalId:raw?.originalId,message:error.message})}state.entryCache.set(index,entry);return entry}function entryFor(id,childOnly){if(!validId(id))return null;for(const index of state.rawIndex.get(Number(id))||[]){const entry=validateRaw(index);if(entry&&(!childOnly||entry.childId===Number(id)))return entry}return null}function restoreNative(){state.hidden.forEach(node=>{if(node.hasAttribute("data-shama-bundle-native-hidden"))node.removeAttribute("data-shama-bundle-native-hidden")});state.hidden.clear()}function hideNative(){const desired=new Set;const app=document.getElementById("gomla__volume-discount-container");if(app)desired.add(app);if(state.mode!=="base"||state.isChild){if(state.form)desired.add(state.form);document.querySelectorAll(".sticky-product-bar, #shama-ux-product-quantity").forEach(node=>desired.add(node))}else if(state.baseFooter?.isConnected)state.form.querySelectorAll("salla-add-product-button").forEach(node=>desired.add(node));state.hidden.forEach(node=>{if(!desired.has(node)){if(node.hasAttribute("data-shama-bundle-native-hidden"))node.removeAttribute("data-shama-bundle-native-hidden");state.hidden.delete(node)}});desired.forEach(node=>{if(!node.hasAttribute("data-shama-bundle-native-hidden"))node.setAttribute("data-shama-bundle-native-hidden","");state.hidden.add(node)})}function locate(){const form=document.querySelector("form.product-form");const component=form?.querySelector("salla-product-options");const button=form?.querySelector("salla-add-product-button[product-id]");const input=form?.querySelector("input[name=\"id\"]");const match=location.pathname.match(/\/p(\d+)(?:\/|$)/);const id=component?.getAttribute("product-id")||button?.getAttribute("product-id")||input?.value||match?.[1];const entry=entryFor(id);return{form,entry,id:Number(id)}}function availability(){if(!state.entry||!state.form)return false;const buttons=[...state.form.querySelectorAll(`salla-add-product-button[product-id="${state.pageId}"]`)];const statuses=buttons.map(button=>button.getAttribute("product-status")).filter(Boolean);if(!statuses.length||statuses.some(status=>status!=="sale"))return false;return true}function sdkReady(){return typeof window.salla?.cart?.addItem==="function"}function baseMinimum(){const native=[...(state.form?.querySelectorAll("salla-quantity-input[name=\"quantity\"][min], input[name=\"quantity\"][min]")||[])].map(node=>Number(node.getAttribute("min"))).filter(number=>Number.isInteger(number)&&number>0);return Math.max(state.entry.baseMinimumUnits,...native)}function initializeBaseMinimum(){if(state.isChild||state.mode!=="base"||!state.form)return;const minimum=baseMinimum();state.form.querySelectorAll("salla-quantity-input[name=\"quantity\"]").forEach(component=>{if(component.hasAttribute("cart-item-id"))return;const input=component.querySelector("input[name=\"quantity\"]");const nativeMinimum=Math.max(Number(component.getAttribute("min"))||1,Number(input?.getAttribute("min"))||1);const enforced=Math.max(minimum,nativeMinimum);if(component.getAttribute("min")!==String(enforced))component.setAttribute("min",String(enforced));if(input&&input.getAttribute("min")!==String(enforced))input.setAttribute("min",String(enforced));const current=Number(input?.value||component.getAttribute("value"));if(!state.baseInitialized.has(component)&&Number.isFinite(current)&&current<enforced&&typeof component.setValue==="function"){state.baseInitialized.add(component);Promise.resolve(component.setValue(enforced)).catch(()=>{})}})}function readBaseSelection(){const component=state.form.querySelector(".sticky-product-bar__quantity salla-quantity-input[name=\"quantity\"]")||state.form.querySelector("salla-quantity-input[name=\"quantity\"]:not([cart-item-id])");const input=component?.querySelector("input[name=\"quantity\"]");if(!input||component.closest("#gomla__volume-discount-container"))throw new Error("جارٍ تحميل عدّاد الكمية. حاول بعد لحظة.");const maximums=[component,input].map(node=>node.getAttribute("max")).filter(value=>value!==null&&value.trim()!=="").map(Number);const nativeOptions=state.form.querySelector("salla-product-options");if(nativeOptions?.getAttribute("product-id")&&nativeOptions.getAttribute("product-id")!==String(state.entry.originalId))throw new Error("تعذرت قراءة خيارات هذا المنتج. أعد تحميل الصفحة.");const groups=new Map;nativeOptions?.querySelectorAll("input[type=\"radio\"][name]").forEach(radio=>{if(radio.closest("salla-product-options")!==nativeOptions||radio.closest("#gomla__volume-discount-container"))return;const group=groups.get(radio.name)||{name:radio.name,required:false,values:[]};group.required=group.required||radio.required||radio.getAttribute("aria-required")==="true";group.values.push({value:radio.value,checked:radio.checked,disabled:radio.disabled});groups.set(radio.name,group)});const notes=[...state.form.querySelectorAll("textarea[name=\"notes\"]")].find(node=>!node.closest("#gomla__volume-discount-container"));return{quantity:input.value,minimum:baseMinimum(),maximum:maximums.length?Math.min(...maximums):null,groups:[...groups.values()],notes:notes?.value||""}}function renderBaseFooter(){if(state.mode!=="base"||state.isChild||!state.form){state.baseFooter?.remove();state.baseFooter=null;state.baseFooterSignature=null;return}if(!state.baseFooter){state.baseFooter=document.createElement("section");state.baseFooter.id="shama-bundles-base";state.baseFooter.className="shama-bundles shama-bundles-base";state.baseFooter.dir="rtl";state.baseFooter.setAttribute("aria-label","إضافة الكمية المختارة");state.baseFooter.addEventListener("click",event=>{if(!event.target.closest("[data-shama-base-add]"))return;event.preventDefault();event.stopPropagation();addBase()})}if(state.form.nextElementSibling!==state.baseFooter)state.form.insertAdjacentElement("afterend",state.baseFooter);const available=availability();const sdk=sdkReady();const ready=available&&sdk&&!state.busy&&!state.cooldown;const signature=JSON.stringify([available,sdk,state.busy,state.cooldown,state.status,state.statusType]);if(signature===state.baseFooterSignature&&state.baseFooter.firstElementChild)return;const focused=state.baseFooter.contains(document.activeElement)&&!!document.activeElement?.closest?.("[data-shama-base-add]");state.baseFooter.innerHTML=`${!available?"<p class=\"shama-bundles__availability\">هذا المنتج غير متاح للإضافة حاليًا.</p>":!sdkReady()?"<p class=\"shama-bundles__availability\">جارٍ تحميل خدمة السلة…</p>":""}<button type="button" class="shama-bundles__add" data-shama-base-add ${ready?"":"disabled"} aria-busy="${state.busy}">${state.busy?"جارٍ الإضافة…":state.cooldown?"تمت الإضافة":"أضف الكمية المختارة إلى السلة"}</button><p class="shama-bundles__status ${state.statusType==="error"?"is-error":""}" role="status" aria-live="polite">${escapeHtml(state.status)}</p>${state.status?"<a class=\"shama-bundles__cart-link\" href=\"/cart\">عرض السلة</a>":""}`;state.baseFooterSignature=signature;if(focused)state.baseFooter.querySelector("[data-shama-base-add]:not(:disabled)")?.focus({preventScroll:true})}function resetAllocation(){if(state.mode==="base")return;if(!state.entry.methods.length){state.selected=[];state.allocation={};return}const units=unitsFor(state.mode,state.entry.unitKg);state.selected=state.selected.filter(id=>state.entry.methods.some(method=>method.id===id)).slice(0,units);if(!state.selected.length)state.selected=[(state.entry.methods.find(method=>method.fee===0)||state.entry.methods[0]).id];state.allocation=distribute(units,state.selected)}function counterDisabled(key,direction){return state.busy||state.selected.length<2||(direction<0?state.allocation[key]<=1:!state.selected.some(other=>other!==key&&state.allocation[other]>1))}function currentFocus(){const active=document.activeElement;if(!active||!state.root?.contains(active))return null;if(active.id==="shama-bundles-note")return{note:true,start:active.selectionStart,end:active.selectionEnd,direction:active.selectionDirection,scroll:active.scrollTop};if(active.dataset.shamaMode)return{mode:active.dataset.shamaMode};if(active.dataset.shamaMethod)return{method:active.dataset.shamaMethod};if(active.hasAttribute("data-shama-add"))return{add:true};if(active.dataset.shamaKey)return{key:active.dataset.shamaKey,shift:active.dataset.shamaShift};return null}function restoreFocus(token){if(!token||!state.root)return;if(token.note){const note=state.root.querySelector("#shama-bundles-note");if(note&&!note.disabled){note.focus({preventScroll:true});note.setSelectionRange(token.start,token.end,token.direction);note.scrollTop=token.scroll}return}const focus=[...state.root.querySelectorAll("button")].find(button=>token.mode?button.dataset.shamaMode===token.mode:token.method?button.dataset.shamaMethod===token.method:token.add?button.hasAttribute("data-shama-add"):button.dataset.shamaKey===token.key&&button.dataset.shamaShift===token.shift);const fallback=state.root.querySelector("[data-shama-mode][aria-checked=\"true\"]");(focus&&!focus.disabled?focus:fallback)?.focus({preventScroll:true})}function render(focusToken){const entry=state.entry;if(!entry||!state.root)return;const available=availability();const sdk=sdkReady();const minimum=baseMinimum();const signature=JSON.stringify([state.pageId,state.isChild,state.mode,state.selected,state.allocation,state.note,state.busy,state.status,state.statusType,state.cooldown,available,sdk,minimum]);if(signature===state.renderSignature&&state.root.firstElementChild){renderBaseFooter();hideNative();initializeBaseMinimum();restoreFocus(focusToken);return}const focus=focusToken||currentFocus();const base=state.mode==="base";const selectedQuote=base?null:quote(entry,state.mode,state.allocation);const units=base?0:unitsFor(state.mode,entry.unitKg);const addReady=!base&&!!selectedQuote.variant&&available&&sdk&&!state.busy&&!state.cooldown;const options=state.isChild?entry.tiers:[{kg:"base"},...entry.tiers];state.root.innerHTML=`
      <div class="shama-bundles__heading"><span class="shama-bundles__step" aria-hidden="true">1</span><h2 id="shama-bundles-quantity-heading">اختر الكمية المناسبة</h2></div>
      <div class="shama-bundles__tiers ${state.isChild?"shama-bundles__tiers--two":""}" role="radiogroup" aria-labelledby="shama-bundles-quantity-heading">
      ${options.map(tier=>tier.kg==="base"?`<button type="button" role="radio" data-shama-mode="base" aria-checked="${base}" tabindex="${base?0:-1}" ${state.busy?"disabled":""} class="shama-bundles__tier ${base?"is-selected":""}"><span class="shama-bundles__badge">حسب احتياجك</span><span class="shama-bundles__tier-top"><span class="shama-bundles__radio" aria-hidden="true"></span><strong>كمية أخرى</strong></span><span class="shama-bundles__base-unit">${weightText(entry.unitKg)} بسعر ${numberText(entry.baseUnitPrice)} ر.س</span><span class="shama-bundles__perkg">تبدأ من ${weightText(minimum*entry.unitKg)}</span></button>`:`<button type="button" role="radio" data-shama-mode="${tier.kg}" aria-checked="${state.mode===tier.kg}" tabindex="${state.mode===tier.kg?0:-1}" ${state.busy?"disabled":""} class="shama-bundles__tier ${state.mode===tier.kg?"is-selected":""}"><span class="shama-bundles__badge ${tier.kg===5?"is-saving":""}">${escapeHtml(tier.label)}</span><span class="shama-bundles__tier-top"><span class="shama-bundles__radio" aria-hidden="true"></span><strong>${weightText(tier.kg)}</strong></span><del class="shama-bundles__original-price"><span class="shama-bundles__sr-only">السعر قبل العرض: </span>${numberText(entry.baseUnitPrice*unitsFor(tier.kg,entry.unitKg))} <small>ر.س</small></del><span class="shama-bundles__price"><span class="shama-bundles__sr-only">سعر العرض: </span>${numberText(tier.price)} <small>ر.س</small></span><span class="shama-bundles__saving">وفّر ${numberText(tier.saving)} ر.س</span><span class="shama-bundles__perkg">${numberText(tier.price/tier.kg)} ر.س / كجم</span></button>`).join("")}
      </div>
      <p class="shama-bundles__muted shama-bundles__price-help">${entry.methods.length?"العرض على المنتج فقط، ورسوم التجهيز تضاف حسب اختيارك.":"اختر وزن الباقة المناسب لطلبك."}</p>
      ${base?`<p class="shama-bundles__unit-help">${entry.methods.length?"اختر الكمية وطريقة التجهيز من خيارات المنتج أدناه.":"اختر الكمية من خيارات المنتج أدناه."}</p>`:`
      ${entry.methods.length?`<div class="shama-bundles__heading"><span class="shama-bundles__step" aria-hidden="true">2</span><h2 id="shama-bundles-clean-heading">كيف تحب نجهّز طلبك؟</h2></div>
      <p class="shama-bundles__muted">اختر طريقة واحدة أو أكثر، ثم عدّل توزيع الكمية.</p>
      <div class="shama-bundles__methods" role="group" aria-labelledby="shama-bundles-clean-heading">${entry.methods.map(method=>`<button type="button" data-shama-method="${escapeHtml(method.id)}" aria-pressed="${state.selected.includes(method.id)}" ${state.busy||!state.selected.includes(method.id)&&state.selected.length>=units?"disabled":""} class="shama-bundles__method ${state.selected.includes(method.id)?"is-selected":""}"><span>${escapeHtml(method.name)}</span><small>${method.fee===0?"بدون رسوم إضافية":`+ ${numberText(method.fee)} ر.س لكل ${weightText(entry.unitKg)}`}</small></button>`).join("")}</div>
      <p class="shama-bundles__unit-help">كل 1 في العداد = ${weightText(entry.unitKg)}. ${weightText(state.mode)} = ${units} وحدة للتجهيز.</p>
      <div class="shama-bundles__allocation">${state.selected.map(id=>{const method=entry.methods.find(item=>item.id===id);const count=state.allocation[id];return`<div class="shama-bundles__row"><div class="shama-bundles__method-name"><strong>${escapeHtml(method.name)}</strong><span>${weightText(count*entry.unitKg)}</span></div><div class="shama-bundles__counter" role="group" aria-label="كمية ${escapeHtml(method.name)}"><button type="button" data-shama-shift="-1" data-shama-key="${escapeHtml(id)}" ${counterDisabled(id,-1)?"disabled":""} aria-label="تقليل ${escapeHtml(method.name)} بمقدار ${weightText(entry.unitKg)}">−</button><output>${count}</output><button type="button" data-shama-shift="1" data-shama-key="${escapeHtml(id)}" ${counterDisabled(id,1)?"disabled":""} aria-label="زيادة ${escapeHtml(method.name)} بمقدار ${weightText(entry.unitKg)}">+</button></div></div>`}).join("")}</div>
      <p class="shama-bundles__allocation-help">${state.selected.length===1?"كل الكمية بهذه الطريقة. اختر طريقة أخرى لتوزيعها.":"الزيادة في طريقة تنقل وحدة من الطريقة الأخرى، ليبقى الوزن الإجمالي ثابتًا."}</p>`:""}
      <label class="shama-bundles__note-label" for="shama-bundles-note">ملاحظة للطلب <span>(اختياري)</span></label><textarea id="shama-bundles-note" class="shama-bundles__note" maxlength="250" rows="2" ${state.busy?"disabled":""} placeholder="اكتب أي تفاصيل إضافية عن طلبك">${escapeHtml(state.note)}</textarea>
      <div class="shama-bundles__summary" aria-live="polite" aria-atomic="true"><div><span>سعر ${weightText(state.mode)}</span><strong>${numberText(selectedQuote.tier.price)} ر.س</strong></div>${entry.methods.length?`<div><span>التجهيز</span><strong>${numberText(selectedQuote.cleaning)} ر.س</strong></div>`:""}${selectedQuote.total===null?"":`<div class="shama-bundles__total"><span>الإجمالي لكل باقة</span><strong>${numberText(selectedQuote.total)} ر.س</strong></div>`}</div>
      <p class="shama-bundles__footer">تُضاف باقة واحدة بوزن ${weightText(state.mode)}. ${entry.methods.length?"عند زيادة كمية المنتج في السلة يتكرر توزيع التجهيز نفسه لكل باقة.":"يمكنك تعديل عدد الباقات في السلة."}</p>
      ${!available?"<p class=\"shama-bundles__availability\">هذا المنتج غير متاح للإضافة حاليًا.</p>":!selectedQuote.variant?"<p class=\"shama-bundles__availability\">هذا التوزيع غير متاح حاليًا. اختر توزيعًا آخر للتجهيز.</p>":!sdkReady()?"<p class=\"shama-bundles__availability\">جارٍ تحميل خدمة السلة…</p>":""}
      <button type="button" class="shama-bundles__add" data-shama-add ${addReady?"":"disabled"} aria-busy="${state.busy}">${state.busy?"جارٍ الإضافة…":state.cooldown?"تمت الإضافة":"أضف الباقة إلى السلة"}</button>
      <p class="shama-bundles__status ${state.statusType==="error"?"is-error":""}" role="status" aria-live="polite">${escapeHtml(state.status)}</p>
      ${state.status?"<a class=\"shama-bundles__cart-link\" href=\"/cart\">عرض السلة</a>":""}
      ${state.isChild?`<a class="shama-bundles__base-link" href="${escapeHtml(entry.originalUrl)}">طلب كمية أخرى من المنتج</a>`:""}
      `}`;state.renderSignature=signature;renderBaseFooter();hideNative();initializeBaseMinimum();restoreFocus(focus)}async function addPack(){if(state.busy||state.cooldown||state.mode==="base")return;if(!availability()||!sdkReady()){state.status="تعذرت الإضافة الآن. تحقق من توفر المنتج ثم حاول مرة أخرى.";state.statusType="error";render();return}let payload;try{payload=buildPayload(state.entry,state.mode,state.allocation,state.note)}catch(_){state.status="هذا الاختيار غير متاح حاليًا. اختر توزيعًا آخر.";state.statusType="error";render();return}await submitPayload(payload,state.entry.methods.length?"تمت إضافة الباقة إلى السلة مع توزيع التجهيز.":"تمت إضافة الباقة إلى السلة.","لم تُضَف الباقة؛ قد يكون الاختيار غير متاح. راجع خياراتك وحاول مرة أخرى.")}async function addBase(){if(state.busy||state.cooldown||state.mode!=="base"||state.isChild)return;if(!availability()||!sdkReady()){state.status="تعذرت الإضافة الآن. تحقق من توفر المنتج ثم حاول مرة أخرى.";state.statusType="error";render();return}let payload;try{payload=buildBasePayload(state.entry,readBaseSelection())}catch(error){state.status=error.message;state.statusType="error";renderBaseFooter();return}await submitPayload(payload,"تمت إضافة الكمية المختارة إلى السلة.","لم تُضَف الكمية؛ راجع توفر المنتج وخيارات التجهيز ثم حاول مرة أخرى.")}async function submitPayload(payload,successMessage,rejectedMessage){state.busy=true;state.status="";state.statusType="";render();try{const response=await window.salla.cart.addItem(payload);if(response?.success===false||response?.data?.success===false||Number(response?.status)>=400){const error=new Error("Salla rejected the item");error.explicitRejection=true;throw error}if(!response||!(response.success===true||response.data?.success===true||Number(response.status)>=200&&Number(response.status)<300||response.data?.cart))throw new Error("Add result could not be confirmed");state.status=successMessage;state.statusType="success";state.cooldown=true;clearTimeout(state.cooldownTimer);state.cooldownTimer=setTimeout(()=>{state.cooldown=false;if(state.root?.isConnected)render()},1500)}catch(error){state.status=error?.explicitRejection?rejectedMessage:"تعذّر تأكيد الإضافة. راجع السلة قبل المحاولة مرة أخرى لتجنب تكرار المنتج.";state.statusType="error"}finally{state.busy=false;if(state.root?.isConnected)render();scheduleSync()}}function onClick(event){const button=event.target.closest("button");if(!button||!state.root.contains(button)||state.busy||button.disabled)return;if(button.hasAttribute("data-shama-add")){addPack();return}state.status="";state.statusType="";state.cooldown=false;if(button.hasAttribute("data-shama-mode")){state.mode=button.dataset.shamaMode==="base"?"base":Number(button.dataset.shamaMode);resetAllocation();render({mode:button.dataset.shamaMode})}else if(button.hasAttribute("data-shama-method")){const id=button.dataset.shamaMethod;if(!state.cleaningChoiceTouched){state.selected=[id];state.cleaningChoiceTouched=true}else if(state.selected.includes(id)){if(state.selected.length===1)return;state.selected=state.selected.filter(key=>key!==id)}else state.selected.push(id);resetAllocation();render({method:id})}else if(button.hasAttribute("data-shama-shift")){state.allocation=shift(state.allocation,button.dataset.shamaKey,Number(button.dataset.shamaShift));render({key:button.dataset.shamaKey,shift:button.dataset.shamaShift})}}function onKeydown(event){if(state.busy||!event.target.matches("[data-shama-mode]")||!["ArrowLeft","ArrowRight","ArrowDown","ArrowUp","Home","End"].includes(event.key))return;event.preventDefault();const buttons=[...state.root.querySelectorAll("[data-shama-mode]")];const current=buttons.indexOf(event.target);const index=event.key==="Home"?0:event.key==="End"?buttons.length-1:(current+(["ArrowLeft","ArrowDown"].includes(event.key)?1:-1)+buttons.length)%buttons.length;const next=buttons[index].dataset.shamaMode;state.mode=next==="base"?"base":Number(next);state.status="";state.cooldown=false;resetAllocation();render({mode:next})}function unmount(){restoreNative();state.baseFooter?.remove();state.baseFooter=null;state.root?.remove();state.root=null;state.entry=null;state.form=null;state.renderSignature=null;state.baseFooterSignature=null}function restoreCart(){state.cartHidden.forEach(node=>{if(node.hasAttribute("data-shama-bundle-cart-hidden"))node.removeAttribute("data-shama-bundle-cart-hidden")});state.cartHidden.clear();document.querySelectorAll(".shama-bundles-cart").forEach(node=>node.remove())}function syncCart(){if(!state.rawEntries.length){restoreCart();return}state.cartHidden.forEach(node=>{if(!node.isConnected)state.cartHidden.delete(node)});document.querySelectorAll("form.p-form[id^=\"item-\"]").forEach(form=>{const link=form.querySelector("h2 a[href]");if(!link)return;let url;try{url=new URL(link.getAttribute("href"),location.origin)}catch(_){return}if(url.origin!==location.origin)return;const match=url.pathname.match(/\/p(\d+)(?:\/|$)/);const entry=match&&entryFor(match[1],true);if(!entry)return;const component=form.querySelector("salla-product-options");const selected=form.querySelector(`input[name="options[${entry.optionId}]"]:checked`);const variant=selected&&entry.variants.find(item=>String(item.valueId)===selected.value);if(!component||!variant){form.querySelector(".shama-bundles-cart")?.remove();return}const noteInput=form.querySelector("textarea[name=\"notes\"]");const note=noteInput?noteInput.value.trim():"";const noteWrapper=noteInput?.closest("div[id^=\"note_\"]");const noteButton=noteWrapper?[...form.querySelectorAll("button[data-show]")].find(button=>button.getAttribute("data-show")===noteWrapper.id):null;[component,noteWrapper||noteInput,noteButton].filter(Boolean).forEach(node=>{if(!node.hasAttribute("data-shama-bundle-cart-hidden"))node.setAttribute("data-shama-bundle-cart-hidden","");state.cartHidden.add(node)});const quantityInput=form.querySelector("salla-quantity-input input[name=\"quantity\"]");const quantity=Number(quantityInput?.value||form.querySelector("salla-quantity-input")?.getAttribute("value"));const validQuantity=Number.isInteger(quantity)&&quantity>0;let summary=form.querySelector(".shama-bundles-cart");if(!summary){summary=document.createElement("aside");summary.className="shama-bundles-cart";summary.dir="rtl";summary.setAttribute("aria-label","تفاصيل الباقة والتجهيز");component.before(summary)}const signature=JSON.stringify([variant.valueId,quantity,note,url.href]);if(summary.dataset.signature===signature)return;summary.dataset.signature=signature;summary.innerHTML=`<strong class="shama-bundles-cart__weight">${validQuantity?`الباقة ${weightText(variant.kg)} × عدد ${quantity} = ${weightText(variant.kg*quantity)}`:`وزن الباقة ${weightText(variant.kg)}`}</strong><p class="shama-bundles-cart__distribution">${escapeHtml(note||(entry.methods.length?"لم يُحدد توزيع التجهيز لهذه الباقة. احذفها وأعد إضافتها بعد اختيار التجهيز.":`وزن كل باقة ${weightText(variant.kg)}.`))}</p><p class="shama-bundles-cart__help">${entry.methods.length?"لتغيير التجهيز، احذف هذه الباقة وأعد إضافتها بالاختيار الجديد.":"لتغيير الباقة أو الملاحظة، احذف هذه الباقة وأعد إضافتها بالاختيار الجديد."}</p><a class="shama-bundles-cart__edit" href="${escapeHtml(url.href)}">${entry.methods.length?"اختيار تجهيز جديد":"اختيار باقة جديدة"}</a>`})}function onCartQuantityChange(event){if(event.target.matches?.("input[name=\"quantity\"]")&&event.target.closest("form.p-form[id^=\"item-\"]"))scheduleSync()}const nativeSelector="form.product-form, form.p-form[id^=\"item-\"], .cart-item, salla-product-options, salla-add-product-button, salla-quantity-input, textarea[name=\"notes\"], input[name=\"quantity\"], .sticky-product-bar, #gomla__volume-discount-container, #shama-ux-product-quantity";const ownSelector="#shama-bundles, #shama-bundles-base, .shama-bundles-cart";function pageKind(){if(/(?:^|\/)cart(?:\/|$)/.test(location.pathname))return"cart";if(/\/p\d+(?:\/|$)/.test(location.pathname))return"product";if(document.querySelector("form.product-form"))return"product";if(document.querySelector("form.p-form[id^=\"item-\"]"))return"cart";return"other"}function observePage(kind,form){if(kind==="other"||!state.rawEntries.length){state.observer?.disconnect();state.attributeObserver?.disconnect();state.observingBody=false;state.observedForm=null;return}if(!state.observer)state.observer=new MutationObserver(records=>{if(records.some(record=>!record.target.closest?.(ownSelector)&&[...record.addedNodes,...record.removedNodes].some(node=>node.nodeType===1&&!node.matches(ownSelector)&&(node.matches(nativeSelector)||node.querySelector(nativeSelector)))))scheduleSync()});if(!state.observingBody){state.observer.observe(document.body,{subtree:true,childList:true});state.observingBody=true}if(state.observedForm!==form){state.attributeObserver?.disconnect();state.observedForm=form||null;if(form){if(!state.attributeObserver)state.attributeObserver=new MutationObserver(scheduleSync);state.attributeObserver.observe(form,{subtree:true,attributes:true,attributeFilter:["product-id","product-status","min"]})}}}function sync(){if(state.busy||state.destroyed)return;const kind=pageKind();if(state.pageKind==="cart"&&kind!=="cart")restoreCart();state.pageKind=kind;if(kind!=="product"){unmount();observePage(kind,null);if(kind==="cart")syncCart();return}const found=locate();observePage(kind,found.form);if(!found.entry||!found.form){unmount();return}if(state.root?.isConnected&&state.entry.originalId===found.entry.originalId&&state.pageId===found.id){state.form=found.form;if(state.root.nextElementSibling!==found.form)found.form.insertAdjacentElement("beforebegin",state.root);render();return}unmount();state.entry=found.entry;state.form=found.form;state.pageId=found.id;state.isChild=found.id===found.entry.childId;const initialMethod=state.entry.methods.find(method=>method.fee===0)||state.entry.methods[0];state.mode=state.isChild?3:"base";state.selected=initialMethod?[initialMethod.id]:[];state.cleaningChoiceTouched=false;state.note="";state.status="";state.statusType="";state.cooldown=false;resetAllocation();state.root=document.createElement("section");state.root.id="shama-bundles";state.root.className="shama-bundles";state.root.dir="rtl";state.root.setAttribute("aria-label","عروض الكمية والتجهيز");state.root.addEventListener("click",onClick);state.root.addEventListener("keydown",onKeydown);state.root.addEventListener("input",event=>{if(event.target.id==="shama-bundles-note")state.note=event.target.value});found.form.insertAdjacentElement("beforebegin",state.root);render()}function scheduleSync(){if(state.queued||state.destroyed)return;state.queued=true;requestAnimationFrame(()=>{state.queued=false;sync()})}function configure(config){if(state.busy)throw new Error("Cannot replace configuration while adding a pack");unmount();restoreCart();clearTimeout(state.cooldownTimer);state.rawEntries=[];state.rawIndex.clear();state.entryCache.clear();state.validatedIds.clear();state.errors=[];if(config&&config.schemaVersion===1&&config.enabled===true&&Array.isArray(config.products)){state.rawEntries=config.products;state.rawEntries.forEach((raw,index)=>{[raw?.originalId,raw?.childId].forEach(id=>{if(!validId(id))return;const indices=state.rawIndex.get(Number(id))||[];if(!indices.includes(index))indices.push(index);state.rawIndex.set(Number(id),indices)})})}scheduleSync()}function start(){if(state.destroyed)return;configure(window.SHAMA_BUNDLE_CONFIG);document.addEventListener("theme::ready",scheduleSync);document.addEventListener("route::changed",scheduleSync);document.addEventListener("input",onCartQuantityChange);document.addEventListener("change",onCartQuantityChange);window.addEventListener("popstate",scheduleSync);window.addEventListener("load",scheduleSync)}window.ShamaBundles={configure,refresh:scheduleSync,getValidationErrors(){state.rawEntries.forEach((_,index)=>validateRaw(index));return[...state.errors].sort((a,b)=>a.index-b.index).map(({originalId,message})=>({originalId,message}))},destroy(){if(state.busy)return false;state.destroyed=true;state.observer?.disconnect();state.attributeObserver?.disconnect();clearTimeout(state.cooldownTimer);document.removeEventListener("DOMContentLoaded",start);document.removeEventListener("theme::ready",scheduleSync);document.removeEventListener("route::changed",scheduleSync);document.removeEventListener("input",onCartQuantityChange);document.removeEventListener("change",onCartQuantityChange);window.removeEventListener("popstate",scheduleSync);window.removeEventListener("load",scheduleSync);unmount();restoreCart();delete window.ShamaBundles;return true}};if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",start,{once:true});else start()})();