{"version":3,"file":"index-CHNl7MtE.cjs","sources":["../node_modules/@propeller-commerce/propeller-v2-core-ui/dist/index.js"],"sourcesContent":["// src/types/result.ts\nvar ok = (data) => ({ ok: true, data });\nvar err = (error) => ({ ok: false, error });\nasync function tryAsync(fn) {\n  try {\n    return ok(await fn());\n  } catch (e) {\n    return err(e instanceof Error ? e.message : String(e));\n  }\n}\n\n// src/utils/attributeExtractor.ts\nimport { AttributeType } from \"@propeller-commerce/propeller-sdk-v2\";\nfunction attributeNameMatches(attr, targetName) {\n  const desc = attr.attributeDescription;\n  if (!desc) return false;\n  if (desc.name === targetName) return true;\n  if (desc.descriptions?.some((d) => d.value === targetName)) return true;\n  return false;\n}\nfunction getAttributeDisplayName(attr, language) {\n  const desc = attr.attributeDescription;\n  if (!desc) return \"\";\n  if (language && desc.descriptions?.length) {\n    const lang = language.toUpperCase();\n    const match = desc.descriptions.find((d) => d.language?.toUpperCase() === lang);\n    if (match?.value) return match.value;\n  }\n  return desc.descriptions?.[0]?.value ?? desc.name ?? \"\";\n}\nfunction extractAttributeValues(attr) {\n  const values = [];\n  const v = attr.value;\n  if (!v) return values;\n  if (v.colorValue) {\n    values.push(v.colorValue);\n  } else if (Array.isArray(v.textValues)) {\n    const firstNonEmpty = v.textValues.find(\n      (entry) => Array.isArray(entry?.values) && entry.values.length > 0\n    );\n    const list = firstNonEmpty?.values ?? [];\n    return list.filter(Boolean);\n  } else if (v.textValue) {\n    values.push(v.textValue);\n  } else if (v.numericValue !== void 0) {\n    values.push(String(v.numericValue));\n  } else if (v.booleanValue !== void 0) {\n    values.push(v.booleanValue ? \"Yes\" : \"No\");\n  } else if (v.type === AttributeType.COLOR) {\n    if (v.value) values.push(v.value);\n  } else if (v.type === AttributeType.TEXT) {\n    const buckets = v.value?.textValues ?? [];\n    const firstNonEmpty = buckets.find(\n      (entry) => Array.isArray(entry?.values) && entry.values.length > 0\n    );\n    const textVals = firstNonEmpty?.values ?? [];\n    return textVals.filter(Boolean);\n  } else if (v.type === AttributeType.DECIMAL) {\n    if (v.value !== void 0) values.push(String(v.value));\n  } else if (v.type === AttributeType.INT) {\n    if (v.value !== void 0) values.push(String(v.value));\n  } else if (v.type === AttributeType.ENUM) {\n    if (Array.isArray(v.enumValues)) {\n      return v.enumValues.filter(Boolean);\n    }\n    if (v.value) values.push(v.value);\n  } else if (typeof v === \"string\") {\n    values.push(v);\n  } else if (typeof v === \"object\") {\n    if (Array.isArray(v.values)) {\n      return v.values.filter((x) => typeof x === \"string\");\n    }\n    const strVals = Object.values(v).filter((x) => typeof x === \"string\");\n    return strVals;\n  }\n  return values.filter(Boolean);\n}\nfunction collectAttributeValues(products, attributeName) {\n  const set = /* @__PURE__ */ new Set();\n  for (const product of products) {\n    const items = product.attributes?.items;\n    if (!Array.isArray(items)) continue;\n    for (const attr of items) {\n      if (attributeNameMatches(attr, attributeName)) {\n        extractAttributeValues(attr).forEach((v) => set.add(v));\n      }\n    }\n  }\n  return Array.from(set);\n}\nfunction filterProductsBySelections(products, selections) {\n  const entries = Object.entries(selections);\n  if (entries.length === 0) return products;\n  return products.filter((product) => {\n    const items = product.attributes?.items;\n    if (!Array.isArray(items)) return false;\n    return entries.every(\n      ([attrName, attrValue]) => items.some(\n        (attr) => attributeNameMatches(attr, attrName) && extractAttributeValues(attr).includes(attrValue)\n      )\n    );\n  });\n}\n\n// src/utils/countries.ts\nvar COUNTRIES = [\n  { code: \"NL\", name: \"Netherlands\" },\n  { code: \"BE\", name: \"Belgium\" },\n  { code: \"DE\", name: \"Germany\" },\n  { code: \"FR\", name: \"France\" },\n  { code: \"UK\", name: \"United Kingdom\" },\n  { code: \"US\", name: \"United States\" }\n];\nvar COUNTRIES_MAP = COUNTRIES.reduce(\n  (acc, c) => {\n    acc[c.code] = c.name;\n    return acc;\n  },\n  {}\n);\nfunction getCountryName(code, list) {\n  if (!code) return \"\";\n  const effective = list && list.length > 0 ? list : COUNTRIES;\n  const match = effective.find((c) => c.code === code);\n  return match?.name ?? code;\n}\n\n// src/utils/orderHelpers.ts\nimport { OrderItemClass, YesNo } from \"@propeller-commerce/propeller-sdk-v2\";\nfunction getNettedBonusItems(items) {\n  const all = items || [];\n  const discountsByParent = /* @__PURE__ */ new Map();\n  for (const item of all) {\n    if (item.class !== OrderItemClass.incentive || !item.parentOrderItemId) continue;\n    const acc = discountsByParent.get(item.parentOrderItemId) || { total: 0, totalNet: 0 };\n    acc.total += item.priceTotal || 0;\n    acc.totalNet += item.priceTotalNet ?? item.priceTotal ?? 0;\n    discountsByParent.set(item.parentOrderItemId, acc);\n  }\n  return all.filter((item) => item.class === OrderItemClass.product && item.isBonus === YesNo.Y).map((item) => {\n    const discount = discountsByParent.get(item.id);\n    if (!discount) return item;\n    const netted = { ...item, priceTotal: (item.priceTotal || 0) + discount.total };\n    if (item.priceTotalNet !== void 0 && item.priceTotalNet !== null) {\n      netted.priceTotalNet = item.priceTotalNet + discount.totalNet;\n    }\n    return netted;\n  });\n}\n\n// src/utils/formatting.ts\nfunction localeForLanguage(language) {\n  if (!language) return \"nl-NL\";\n  if (language.includes(\"-\")) return language;\n  const known = {\n    NL: \"nl-NL\",\n    EN: \"en-GB\",\n    DE: \"de-DE\",\n    FR: \"fr-FR\",\n    ES: \"es-ES\",\n    IT: \"it-IT\",\n    BE: \"nl-BE\"\n  };\n  return known[language.toUpperCase()] ?? \"nl-NL\";\n}\nfunction formatPrice(amount, options = {}) {\n  if (amount === null || amount === void 0) return \"\";\n  const { currency = \"EUR\", locale = \"nl-NL\", symbol } = options;\n  if (symbol !== void 0) {\n    const formattedNumber = new Intl.NumberFormat(locale, {\n      minimumFractionDigits: 2,\n      maximumFractionDigits: 2\n    }).format(Number(amount));\n    if (!symbol) return formattedNumber;\n    try {\n      const parts = new Intl.NumberFormat(locale, {\n        style: \"currency\",\n        currency,\n        minimumFractionDigits: 2,\n        maximumFractionDigits: 2\n      }).formatToParts(Number(amount));\n      if (parts.some((part) => part.type === \"currency\")) {\n        return parts.map((part) => part.type === \"currency\" ? symbol : part.value).join(\"\").replace(/ /g, \" \");\n      }\n    } catch {\n    }\n    return `${symbol} ${formattedNumber}`;\n  }\n  try {\n    return new Intl.NumberFormat(locale, {\n      style: \"currency\",\n      currency,\n      minimumFractionDigits: 2,\n      maximumFractionDigits: 2\n    }).format(amount);\n  } catch {\n    return `\\u20AC${Number(amount).toFixed(2)}`;\n  }\n}\nfunction formatDate(date, options = {}) {\n  if (!date) return \"\";\n  const { locale = \"nl-NL\", dateStyle = \"medium\" } = options;\n  try {\n    const d = typeof date === \"string\" ? new Date(date) : date;\n    if (isNaN(d.getTime())) return \"\";\n    return new Intl.DateTimeFormat(locale, { dateStyle }).format(d);\n  } catch {\n    return String(date);\n  }\n}\nfunction formatSurcharge(surcharge, options = {}) {\n  if (!surcharge) return \"\";\n  const { quantity = 1, language, currency = \"\\u20AC\", locale = \"nl-NL\" } = options;\n  const localized = surcharge.names ?? surcharge.name ?? [];\n  const name = localized.find((n) => n.language === language)?.value ?? localized[0]?.value ?? \"\";\n  const value = Number(surcharge.value ?? 0);\n  const isPercentage = String(surcharge.type ?? \"\").toLowerCase() === \"percentage\";\n  if (isPercentage) {\n    return `${quantity} x ${value}% (${name})`;\n  }\n  return `${quantity} x ${formatPrice(value, { symbol: currency, locale })} (${name})`;\n}\nfunction calcDiscountPercent(original, discounted) {\n  if (!original || original === 0) return 0;\n  if (discounted === null || discounted === void 0) return 0;\n  return Math.round((original - discounted) / original * 100);\n}\n\n// src/utils/inventoryHelpers.ts\nfunction getStockStatus(quantity) {\n  if (quantity <= 0) return { label: \"Out of stock\", className: \"text-destructive bg-destructive/10\" };\n  if (quantity <= 5) return { label: \"Low stock\", className: \"text-warning bg-warning/10\" };\n  return { label: \"In stock\", className: \"text-success bg-success/10\" };\n}\nvar MIN_STOCK_THRESHOLD = 1;\nfunction buildInventoryFilter(sel, minQuantity) {\n  if (sel !== \"in-stock\") return void 0;\n  const n = Math.max(MIN_STOCK_THRESHOLD, Math.floor(minQuantity ?? MIN_STOCK_THRESHOLD));\n  return { totalQuantity: { greaterThan: n } };\n}\n\n// src/utils/labelHelpers.ts\nfunction getLabel(labels, key, fallback) {\n  const value = labels?.[key];\n  if (value !== void 0 && value !== null) return value;\n  warnMissingLabel(key, fallback);\n  return fallback;\n}\nvar warnedKeys = /* @__PURE__ */ new Set();\nfunction warnMissingLabel(key, fallback) {\n  if (process.env.NODE_ENV !== \"development\") return;\n  if (warnedKeys.has(key)) return;\n  warnedKeys.add(key);\n  console.warn(\n    `[propeller] Missing label \"${key}\" \\u2014 falling back to \"${fallback}\". Add it to the locale dictionary for this component's namespace.`\n  );\n}\n\n// src/utils/languageResolver.ts\nfunction resolveLanguageEntry(items, language, fallback) {\n  if (!items || items.length === 0) return void 0;\n  const lang = language.toUpperCase();\n  return items.find((item) => item.language?.toUpperCase() === lang) ?? items[0];\n}\nfunction getLanguageString(items, language, fallback = \"\") {\n  if (!items || items.length === 0) return fallback;\n  const lang = language.toUpperCase();\n  const direct = items.find((item) => item.language?.toUpperCase() === lang);\n  if (direct?.value) return direct.value;\n  for (const item of items) {\n    if (item.value) return item.value;\n  }\n  return fallback;\n}\nfunction getLanguageUri(items, language, fallback = \"\") {\n  const entry = resolveLanguageEntry(items, language);\n  return entry?.uri ?? fallback;\n}\n\n// src/utils/productHelpers.ts\nfunction getProductImageUrl(product) {\n  return product?.media?.images?.items?.[0]?.imageVariants?.[0]?.url || \"\";\n}\nfunction getClusterImageUrl(cluster) {\n  return cluster?.defaultProduct?.media?.images?.items?.[0]?.imageVariants?.[0]?.url || \"\";\n}\nfunction getProductSku(product) {\n  return product?.sku || \"\";\n}\nfunction getClusterSku(cluster) {\n  return cluster?.sku || cluster?.defaultProduct?.sku || \"\";\n}\nfunction getLocalizedValue(items, language, fallback = \"\") {\n  return getLanguageString(items, language || \"NL\", fallback);\n}\n\n// src/utils/truncation.ts\nfunction stripHtml(html) {\n  return html.replace(/<[^>]*>/g, \"\");\n}\nfunction shouldTruncate(html, maxLength) {\n  if (!maxLength || maxLength <= 0) return false;\n  const plain = stripHtml(html);\n  return plain.length > maxLength;\n}\nfunction truncateAt(html, maxLength) {\n  if (!maxLength || maxLength <= 0) return html;\n  const plain = stripHtml(html);\n  if (plain.length <= maxLength) return html;\n  const truncated = plain.substring(0, maxLength);\n  const lastSpace = truncated.lastIndexOf(\" \");\n  return (lastSpace > 0 ? truncated.substring(0, lastSpace) : truncated) + \"\\u2026\";\n}\n\n// src/utils/userIdentity.ts\nfunction isContact(user) {\n  return !!user && \"contactId\" in user;\n}\nfunction isCustomer(user) {\n  return !!user && \"customerId\" in user && !(\"contactId\" in user);\n}\nfunction getUserId(user) {\n  if (!user) return null;\n  if (isContact(user)) return user.contactId ?? null;\n  if (isCustomer(user)) return user.customerId ?? null;\n  return null;\n}\nfunction getCompany(user) {\n  if (!user || !isContact(user)) return null;\n  return user.company ?? null;\n}\nfunction getCompanyId(user) {\n  return getCompany(user)?.companyId ?? null;\n}\nfunction getAddresses(user) {\n  if (!user) return [];\n  if (isContact(user)) {\n    return user.company?.addresses ?? [];\n  }\n  return user.addresses ?? [];\n}\nfunction getDefaultInvoiceAddress(user) {\n  return getAddresses(user).find(\n    (addr) => addr.isDefault === \"Y\" && addr.type === \"invoice\"\n  );\n}\nfunction getDefaultDeliveryAddress(user) {\n  return getAddresses(user).find(\n    (addr) => addr.isDefault === \"Y\" && addr.type === \"delivery\"\n  );\n}\n\n// src/utils/videoTransform.ts\nfunction isEmbeddable(uri) {\n  return uri.includes(\"youtube.com\") || uri.includes(\"youtu.be\") || uri.includes(\"vimeo.com\");\n}\nfunction normalizeVideoUrl(uri) {\n  if (uri.includes(\"youtube.com/watch\")) {\n    try {\n      const url = new URL(uri);\n      const videoId = url.searchParams.get(\"v\") || \"\";\n      return `https://www.youtube.com/embed/${videoId}`;\n    } catch {\n      return uri;\n    }\n  }\n  if (uri.includes(\"youtu.be/\")) {\n    const videoId = uri.split(\"youtu.be/\")[1]?.split(\"?\")[0] || \"\";\n    return `https://www.youtube.com/embed/${videoId}`;\n  }\n  if (uri.includes(\"vimeo.com/\")) {\n    const videoId = uri.split(\"vimeo.com/\")[1]?.split(\"?\")[0] || \"\";\n    return `https://player.vimeo.com/video/${videoId}`;\n  }\n  return uri;\n}\n\n// src/utils/visibilityHelpers.ts\nfunction isContentHidden(portalMode, user, isAuthenticated) {\n  return portalMode === \"semi-closed\" && !user && !isAuthenticated;\n}\n\n// src/utils/purchaseAuthorization.ts\nvar PURCHASER = \"PURCHASER\";\nfunction field(source, name) {\n  if (!source || typeof source !== \"object\") return void 0;\n  const bag = source;\n  return bag[name] ?? bag[`_${name}`];\n}\nfunction findPurchaserPac(user, companyId) {\n  if (!user || !(\"contactId\" in user) || companyId == null) return void 0;\n  const configs = field(user, \"purchaseAuthorizationConfigs\");\n  const items = field(configs, \"items\") ?? [];\n  return items.find((pac) => {\n    if (field(pac, \"purchaseRole\") !== PURCHASER) return false;\n    const company = field(pac, \"company\");\n    return Number(field(company, \"companyId\")) === Number(companyId);\n  });\n}\nfunction isOverAuthorizationLimit(user, companyId, cart) {\n  if (!cart) return false;\n  const pac = findPurchaserPac(user, companyId);\n  if (!pac) return false;\n  const limit = field(pac, \"authorizationLimit\") ?? 0;\n  const total = field(cart, \"total\");\n  const totalGross = field(total, \"totalGross\") ?? 0;\n  return totalGross > limit;\n}\nfunction isCheckoutAllowed(user, companyId, cart) {\n  return !isOverAuthorizationLimit(user, companyId, cart);\n}\n\n// src/utils/jsonLd.ts\nimport { ProductClass } from \"@propeller-commerce/propeller-sdk-v2\";\nfunction safeJsonStringify(value) {\n  return JSON.stringify(value).replace(/<\\//g, \"<\\\\/\");\n}\nfunction shouldShowOffers(ctx) {\n  return !isContentHidden(ctx.portalMode, ctx.user);\n}\nfunction toAbsolute(siteUrl, pathOrUrl) {\n  if (!pathOrUrl) return \"\";\n  if (/^https?:\\/\\//i.test(pathOrUrl)) return pathOrUrl;\n  const base = siteUrl.replace(/\\/$/, \"\");\n  const path = pathOrUrl.startsWith(\"/\") ? pathOrUrl : `/${pathOrUrl}`;\n  return base + path;\n}\nfunction formatPriceForJsonLd(amount) {\n  if (amount == null || !Number.isFinite(amount)) return void 0;\n  return amount.toFixed(2);\n}\nfunction cleanDescription(value) {\n  if (!value) return void 0;\n  const text = stripHtml(value).replace(/\\s+/g, \" \").trim();\n  return text.length > 0 ? text : void 0;\n}\nfunction buildOffers(product, absoluteUrl, ctx) {\n  if (!shouldShowOffers(ctx)) return void 0;\n  const price = formatPriceForJsonLd(product.price?.net);\n  if (price === void 0) return void 0;\n  const offer = {\n    \"@type\": \"Offer\",\n    url: absoluteUrl,\n    priceCurrency: ctx.currencyCode,\n    price,\n    itemCondition: \"https://schema.org/NewCondition\"\n  };\n  const qty = product.inventory?.totalQuantity;\n  if (typeof qty === \"number\") {\n    offer.availability = qty > 0 ? \"https://schema.org/InStock\" : \"https://schema.org/OutOfStock\";\n  }\n  return offer;\n}\nfunction buildProductJsonLd(product, ctx) {\n  if (!product) return null;\n  const name = getLanguageString(product.names, ctx.language, \"\").trim();\n  const relativeUrl = ctx.urls.getProductUrl(product, ctx.language);\n  const absoluteUrl = toAbsolute(ctx.siteUrl, relativeUrl);\n  if (!name && !absoluteUrl) return null;\n  const description = cleanDescription(\n    getLanguageString(product.descriptions, ctx.language, \"\") || getLanguageString(product.shortDescriptions, ctx.language, \"\")\n  );\n  const imageUrl = getProductImageUrl(product);\n  const absoluteImage = imageUrl ? toAbsolute(ctx.siteUrl, imageUrl) : void 0;\n  const categoryName = getLanguageString(product.category?.names, ctx.language, \"\").trim();\n  const data = {\n    \"@context\": \"https://schema.org/\",\n    \"@type\": \"Product\"\n  };\n  if (name) data.name = name;\n  if (absoluteUrl) data.url = absoluteUrl;\n  if (absoluteImage) data.image = absoluteImage;\n  if (description) data.description = description;\n  if (product.manufacturerCode) data.mpn = product.manufacturerCode;\n  if (product.sku) data.sku = product.sku;\n  if (product.productId != null) data.productID = String(product.productId);\n  if (categoryName) data.category = categoryName;\n  if (product.manufacturer) {\n    data.brand = { \"@type\": \"Brand\", name: product.manufacturer };\n  }\n  const offers = buildOffers(product, absoluteUrl, ctx);\n  if (offers) data.offers = offers;\n  return data;\n}\nfunction buildClusterJsonLd(cluster, ctx) {\n  if (!cluster) return null;\n  const defaultProduct = cluster.defaultProduct;\n  const name = getLanguageString(cluster.names, ctx.language, \"\").trim();\n  const relativeUrl = ctx.urls.getClusterUrl(cluster, ctx.language);\n  const absoluteUrl = toAbsolute(ctx.siteUrl, relativeUrl);\n  if (!name && !absoluteUrl) return null;\n  const description = cleanDescription(\n    getLanguageString(cluster.descriptions, ctx.language, \"\")\n  );\n  const imageUrl = getClusterImageUrl(cluster);\n  const absoluteImage = imageUrl ? toAbsolute(ctx.siteUrl, imageUrl) : void 0;\n  const categoryName = getLanguageString(cluster.category?.names, ctx.language, \"\").trim();\n  const data = {\n    \"@context\": \"https://schema.org/\",\n    \"@type\": \"Product\"\n  };\n  if (name) data.name = name;\n  if (absoluteUrl) data.url = absoluteUrl;\n  if (absoluteImage) data.image = absoluteImage;\n  if (description) data.description = description;\n  if (defaultProduct?.manufacturerCode) data.mpn = defaultProduct.manufacturerCode;\n  const sku = defaultProduct?.sku;\n  if (sku) data.sku = sku;\n  if (cluster.clusterId != null) data.productID = String(cluster.clusterId);\n  if (categoryName) data.category = categoryName;\n  if (defaultProduct?.manufacturer) {\n    data.brand = { \"@type\": \"Brand\", name: defaultProduct.manufacturer };\n  }\n  if (defaultProduct) {\n    const offers = buildOffers(defaultProduct, absoluteUrl, ctx);\n    if (offers) data.offers = offers;\n  }\n  return data;\n}\nfunction buildItemListJsonLd(products, ctx) {\n  if (!products || products.length === 0) return null;\n  const itemListElement = [];\n  products.forEach((item, index) => {\n    const isCluster = item.type === ProductClass.CLUSTER;\n    const productForFields = isCluster ? item.defaultProduct : item;\n    if (!productForFields) return;\n    const cluster = isCluster ? item : void 0;\n    const relativeUrl = cluster ? ctx.urls.getClusterUrl(cluster, ctx.language) : ctx.urls.getProductUrl(item, ctx.language);\n    const absoluteUrl = toAbsolute(ctx.siteUrl, relativeUrl);\n    const productNode = buildProductJsonLd(productForFields, ctx);\n    if (!productNode) return;\n    if (absoluteUrl) productNode.url = absoluteUrl;\n    if (productNode.offers && typeof productNode.offers === \"object\") {\n      productNode.offers.url = absoluteUrl;\n    }\n    delete productNode[\"@context\"];\n    itemListElement.push({\n      \"@type\": \"ListItem\",\n      position: index + 1,\n      item: productNode\n    });\n  });\n  if (itemListElement.length === 0) return null;\n  return {\n    \"@context\": \"https://schema.org/\",\n    \"@type\": \"ItemList\",\n    numberOfItems: itemListElement.length,\n    itemListElement\n  };\n}\n\n// src/utils/userMode.ts\nfunction deriveUserMode(user, shopMode) {\n  if (!user) return \"anonymous\";\n  if (shopMode === \"b2b\") return \"b2b\";\n  if (shopMode === \"b2c\") return \"b2c\";\n  return isContact(user) ? \"b2b\" : \"b2c\";\n}\n\n// src/services/createServices.ts\nimport {\n  ProductService,\n  CartService,\n  UserService,\n  CategoryService,\n  OrderService,\n  PayMethodService,\n  LoginService,\n  AddressService,\n  CompanyService,\n  CrossupsellService,\n  BundleService,\n  FavoriteListService,\n  PurchaseAuthorizationConfigService,\n  ClusterService,\n  OrderlistService\n} from \"@propeller-commerce/propeller-sdk-v2\";\nvar servicesByClient = /* @__PURE__ */ new WeakMap();\nfunction createServices(client) {\n  const cached = servicesByClient.get(client);\n  if (cached) return cached;\n  const services = {\n    product: new ProductService(client),\n    cart: new CartService(client),\n    user: new UserService(client),\n    category: new CategoryService(client),\n    order: new OrderService(client),\n    payMethod: new PayMethodService(client),\n    login: new LoginService(client),\n    address: new AddressService(client),\n    company: new CompanyService(client),\n    crossupsell: new CrossupsellService(client),\n    bundle: new BundleService(client),\n    favoriteList: new FavoriteListService(client),\n    purchaseAuthConfig: new PurchaseAuthorizationConfigService(client),\n    cluster: new ClusterService(client),\n    orderlist: new OrderlistService(client)\n  };\n  servicesByClient.set(client, services);\n  return services;\n}\n\n// src/services/toPlain.ts\nfunction toPlain(value) {\n  return deepPlainInner(value);\n}\nfunction deepPlainInner(value) {\n  if (value === null || value === void 0) return value;\n  if (Array.isArray(value)) return value.map(deepPlainInner);\n  if (typeof value === \"object\") {\n    const out = {};\n    for (const key of Object.keys(value)) {\n      const cleanKey = key.startsWith(\"_\") ? key.slice(1) : key;\n      out[cleanKey] = deepPlainInner(value[key]);\n    }\n    return out;\n  }\n  return value;\n}\nexport {\n  COUNTRIES,\n  COUNTRIES_MAP,\n  MIN_STOCK_THRESHOLD,\n  attributeNameMatches,\n  buildClusterJsonLd,\n  buildInventoryFilter,\n  buildItemListJsonLd,\n  buildProductJsonLd,\n  calcDiscountPercent,\n  collectAttributeValues,\n  createServices,\n  deriveUserMode,\n  err,\n  extractAttributeValues,\n  filterProductsBySelections,\n  findPurchaserPac,\n  formatDate,\n  formatPrice,\n  formatSurcharge,\n  getAddresses,\n  getAttributeDisplayName,\n  getClusterImageUrl,\n  getClusterSku,\n  getCompany,\n  getCompanyId,\n  getCountryName,\n  getDefaultDeliveryAddress,\n  getDefaultInvoiceAddress,\n  getLabel,\n  getLanguageString,\n  getLanguageUri,\n  getLocalizedValue,\n  getNettedBonusItems,\n  getProductImageUrl,\n  getProductSku,\n  getStockStatus,\n  getUserId,\n  isCheckoutAllowed,\n  isContact,\n  isContentHidden,\n  isCustomer,\n  isEmbeddable,\n  isOverAuthorizationLimit,\n  localeForLanguage,\n  normalizeVideoUrl,\n  ok,\n  resolveLanguageEntry,\n  safeJsonStringify,\n  shouldTruncate,\n  stripHtml,\n  toPlain,\n  truncateAt,\n  tryAsync\n};\n//# sourceMappingURL=index.js.map"],"names":["AttributeType","OrderItemClass","YesNo","ProductClass","ProductService","CartService","UserService","CategoryService","OrderService","PayMethodService","LoginService","AddressService","CompanyService","CrossupsellService","BundleService","FavoriteListService","PurchaseAuthorizationConfigService","ClusterService","OrderlistService"],"mappings":"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","x_google_ignoreList":[0]}