PageSourceSearch

https://static.varus.ua/azgwc-blob-static-varus-prod-01/vsf/dist/0923-v6cf1fb81/app-43dd7041.js

js varus.ua collected 2026-09-24 20:53:43 UTC 57,092 bytes, 1 lines download raw bytes

1(self.webpackChunkvue_storefront=self.webpackChunkvue_storefront||[]).push([[938],{2248:function(S,C,s){"use strict";s.d(C,{CategoryServiceBridge:function(){return F},extractCategoryFiltersFromSearchQuery:function(){return O}});var P=s(38481),k=s(83546);let d=null;function i(){if(d)return d;const{GraphQLCategoryAdapter:r}=s(83546);return d=new r,d}var p=s(79665);async function w(r,_,R){const A=Date.now();let D=!0;try{return await R()}catch(L){throw D=!1,L}finally{p.V.debug(`CategoryServiceBridge.${r}`,"data-layer:category",{..._,ok:D,durationMs:Date.now()-A})()}}const F={async loadCategoryPage(r){return w("loadCategoryPage",{categoryId:r.categoryId,hasScope:!!r.scope},()=>i().loadCategoryPage(r))},async loadCategoryPageByPath(r){return w("loadCategoryPageByPath",{path:r.path,hasScope:!!r.scope},()=>i().loadCategoryPageByPath(r))},async loadCategoryPageByRouteDual(r){return w("loadCategoryPageByRouteDual",{filteredPath:r.filteredPath,cleanPath:r.cleanPath,hasScope:!!r.scope},()=>i().loadCategoryPageByRouteDual(r))},async loadCategoryPageById(r){return w("loadCategoryPageById",{categoryId:r.categoryId,hasScope:!!r.scope},()=>i().loadCategoryPageById(r))},async loadFiltersOnly(r,_){return w("loadFiltersOnly",{categoryId:r,hasScope:!!_},()=>i().loadFiltersOnly(r,_))},async loadCategoryEntity(r,_){return w("loadCategoryEntity",{categoryId:r,hasScope:!!_},()=>i().loadCategoryEntity(r,_))},async loadRouteInfo(r,_){return w("loadRouteInfo",{path:r,hasScope:!!_},()=>i().loadRouteInfo(r,_))}};var g=null;const l=/^sqpp_data_(?:region_)?(?:\d+|default)\.(price|sort_price)$/,m=new Set(["has_promotion_in_stores","has_promotion_in_region"]);function I(r){return!!r&&typeof r.getAppliedFilters=="function"}function T(r){if(r==null)return;const _=Number(r);return Number.isFinite(_)?_:void 0}function b(r){if(!r||typeof r!="object"||Array.isArray(r))return null;const _=T(r.gte??r.from),R=T(r.lte??r.to);if(_==null&&R==null)return null;const A={};return _!=null&&(A.from=_),R!=null&&(A.to=R),A}function $(r){if(Array.isArray(r))return r.map(String);if(r&&typeof r=="object"){if(Array.isArray(r.in))return r.in.map(String);if("eq"in r)return[String(r.eq)];if(Array.isArray(r.values))return r.values.map(String)}return r==null?[]:[String(r)]}function O(r,_){if(!I(r))return{};let R=[];try{R=r.getAppliedFilters()||[]}catch{return{}}const A={};for(const D of R){if(!D||typeof D.attribute!="string")continue;const L=D.attribute,V=D.value;if(L.match(l)){const K=b(V);K&&!A.priceRange&&(A.priceRange=K);continue}if(_.isPromotionUrl&&m.has(L)&&!A.promotion){$(V).length>0&&(A.promotion=!0);continue}}return A}},3312:function(S,C,s){"use strict";s.d(C,{$W:function(){return I}});var P=s(11127),k=s.n(P),d=s(65606);let F=typeof window>"u"?(()=>{try{return d.configModule||{}}catch{return{}}})():(()=>{try{return window.__INITIAL_STATE__.config||{}}catch{return{}}})(),g=null;function l(b){if(typeof b!="object"||b===null)return b;const $=Array.isArray(b)?[]:{};for(const O in b)b.hasOwnProperty(O)&&($[O]=l(b[O]));return Object.freeze($)}function m(){g=l(F)}m();const I=new Proxy({},{get(b,$){return $==="toJSON"?()=>g:$==="valueOf"?()=>g:$==="toString"?()=>JSON.stringify(g):g[$]},has(b,$){return $ in g},ownKeys(){return Object.keys(g)},getOwnPropertyDescriptor(b,$){if($ in g)return{enumerable:!0,configurable:!0,writable:!1,value:g[$]}},set(){return!1}});function T(b){return F=deepmerge()(F,b),m(),I}},4993:function(S,C,s){"use strict";var P=s(85471),k=s(95283),d=s(3312);function i(g){return(config.server?.cacheTagsMapping||{product:"P",category:"C",banner:"B",promotion_category:"PC",promotion_page:"PP",brand:"BR"})[g]||"P"}function p(g){if(!isServer||!config.server?.useOutputCacheTagging)return;const l=Vue.prototype.$cacheTags;l&&typeof l.add=="function"&&g.forEach(m=>{try{l.add(m)}catch{}})}function w(g,l){const m=i(g);return l.filter(I=>I.id!==void 0).map(I=>`${m}${I.id}`)}function F(g){if(!g||g.length===0)return;const l=w("product",g);p(l),p(["product"])}},29438:function(S,C,s){"use strict";s.d(C,{D3:function(){return P.D3}});var P=s(80220),k=s(35960)},29447:function(){},35960:function(S,C,s){"use strict";s.d(C,{UG:function(){return w}});function P(F,g){return g}function k(F,g){return F}function d(F,g,l){const m=F.__meta__?.deferredFields;if(!m)return!0;const T=g.definitions[0]?.name?.value,b=T&&m[T]||[];return b.length>0&&b.every($=>l&&$ in l)}var i=s(56517);const p={"\n  fragment CategoryProductFilterFields on CategoryProductFilter {\n    code\n    label\n    type\n    isTop\n    uriName\n    options {\n      value\n      label\n      uriName\n      count\n      selected\n      noIndex\n    }\n    range {\n      min\n      max\n      selectedMin\n      selectedMax\n    }\n  }\n":i.je,"\n  fragment CategoryProductFilterAggFields on CategoryProductFilter {\n    code\n    type\n    uriName\n    options {\n      value\n      label\n      count\n      uriName\n    }\n    range {\n      min\n      max\n    }\n  }\n":i.IT,"\n  fragment CategoryProductSortOptionFields on CategoryProductSortOption {\n    code\n    label\n  }\n":i.A6,"\n  fragment CategoryBaseFields on Category {\n    id\n    name\n    urlKey\n    level\n    parentId\n    kind\n    childrenTotal\n    productsTotal\n  }\n":i.x_,"\n  fragment CategoryChildBaseFields on CategoryChild {\n    id\n    name\n    urlKey\n    level\n    parentId\n    kind\n    childrenTotal\n    productsTotal\n  }\n":i.Lr,"\n  fragment CategoryPageRouteFields on Category {\n    id\n    pimcoreId\n    name\n    urlKey\n    level\n    parentId\n    description\n    childrenTotal\n    productsTotal\n    kind\n    is18Plus\n    isProductCategory\n    friendlyFilter {\n      id\n      name\n      url\n      singleOption\n      meta {\n        h1\n        title\n        keywords\n        description\n        noIndex\n        noFollow\n      }\n      faq {\n        key\n        value\n      }\n    }\n    meta {\n      h1\n      title\n      description\n      noIndex\n      noFollow\n    }\n    seoBlocks {\n      title\n      position\n      items {\n        title\n        url\n        position\n      }\n    }\n    children {\n      ...CategoryChildBaseFields\n      children {\n        ...CategoryChildBaseFields\n        children {\n          ...CategoryChildBaseFields\n        }\n      }\n    }\n    banners {\n      id\n      title\n      titleColor\n      subtitle\n      subtitleColor\n      showTitle\n      showSubtitle\n      showButton\n      allowHideButton\n      buttonText\n      buttonTextColor\n      buttonColor\n      backgroundColor\n      imageDesktop\n      imageMobile\n      link\n      target\n      sortOrder\n      status\n      position\n      categoryIds\n      dateFrom\n      dateTo\n      regionalLink\n    }\n    topCategories {\n      id\n      title\n      url\n      icon\n      isNew\n      position\n    }\n    products(\n      page: $page\n      pageSize: $pageSize\n      filters: $filters\n      sort: $sort\n      quickFilters: $quickFilters\n      quickFilterCounts: [TODAY, PROMO]\n    ) {\n      items {\n        ...CategoryProductListItemFields\n      }\n      total\n      page\n      pageSize\n      totalPages\n      availableFilters {\n        ...CategoryProductFilterFields\n      }\n      availableSorts {\n        ...CategoryProductSortOptionFields\n      }\n      quickFilters {\n        code\n        label\n        selected\n        count\n      }\n      categoryNavigation {\n        mode\n        selectedCategoryId\n        expandedPathIds\n        items {\n          id\n          name\n          urlKey\n          level\n          parentId\n          productsTotal\n          selected\n          expanded\n          hasChildren\n          children {\n            id\n            name\n            urlKey\n            level\n            parentId\n            productsTotal\n            selected\n            expanded\n            hasChildren\n            children {\n              id\n              name\n              urlKey\n              level\n              parentId\n              productsTotal\n              selected\n              expanded\n              hasChildren\n            }\n          }\n        }\n      }\n    }\n    productList(listId: BRAND_PROMO, limit: 12) @include(if: $loadBrandPromo) {\n      ...CategoryProductListItemFields\n    }\n  }\n":i._m,"\n  fragment ProductCoreFields on Product {\n    id\n    sku\n    name\n    type\n    status\n    visibility\n    urlKey\n  }\n":i.qE,"\n  fragment ProductContentFields on Product {\n    description\n    categorySeoDescription\n  }\n":i.S1,"\n  fragment ProductPhysicalFields on Product {\n    weight\n    volume\n  }\n":i.oc,"\n  fragment ProductFlagsFields on Product {\n    isNew\n    is18Plus\n    isTobacco\n    isBoardProduct\n    isBoardProductTop\n    isDisplayPricePer100g\
1n    isVarusPerfect\n    isWinterSupport\n    isOnlinePromotionInRegion\n    isOnlinePromotionInStore\n    isRichActive\n  }\n":i.QL,"\n  fragment BrandFields on Brand {\n    id\n    name\n    urlKey\n    categoryId\n    subcategories {\n      id\n      name\n      urlKey\n      level\n      isProductCategory\n      position\n    }\n  }\n":i.tR,"\n  fragment PriceInfoFields on PriceInfo {\n    price\n    specialPrice\n    specialPromoType\n    discountPercent\n    specialFrom\n    specialTo\n    wholesalePrice\n    wholesalePriceThreshold\n    promoPrice\n    promoPriceThreshold\n  }\n":i.xp,"\n  fragment AvailabilityFields on Availability {\n    inStock\n    available\n    delivery\n    pickup\n    shipping\n    today\n    qty\n    otherMarket\n    otherRegions\n  }\n":i.JJ,"\n  fragment CategoryMetaFields on CategoryMeta {\n    title\n    description\n    h1\n  }\n":i.lq,"\n  fragment CategoryLinkFields on CategoryLink {\n    id\n    name\n    urlKey\n    level\n    isProductCategory\n    position\n    meta {\n      title\n      description\n      h1\n    }\n  }\n":i.gi,"\n  fragment ProductImageFields on ProductImage {\n    index\n    timestamp\n  }\n":i.Kj,"\n  fragment ProductImageGalleryFields on ProductImageGallery {\n    mainImageTimestamp\n    carouselImages {\n      index\n      timestamp\n    }\n  }\n":i.eP,"\n  fragment ReviewSummaryFields on ReviewSummary {\n    averageRating\n    count\n  }\n":i.k1,"\n  fragment ReviewFields on Review {\n    id\n    nickname\n    summary\n    content\n    rating\n    upvotes\n    downvotes\n    createdAt\n    comments {\n      id\n      nickname\n      content\n      type\n      status\n      createdAt\n    }\n  }\n":i.cy,"\n  fragment PromotionLabelFields on PromotionLabel {\n    text\n    color\n    icon\n  }\n":i.bf,"\n  fragment PromotionPageFields on PromotionPage {\n    id\n    name\n    urlKey\n    description\n    shortDescription\n    isActive\n    dateFrom\n    dateTo\n    desktopImage\n    mobileImage\n    label {\n      text\n      color\n      icon\n    }\n  }\n":i.vG,"\n  fragment BannerFields on Banner {\n    id\n    title\n    subtitle\n    link\n    target\n    imageDesktop\n    imageMobile\n    position\n    sortOrder\n    status\n    dateFrom\n    dateTo\n    showTitle\n    showSubtitle\n    showButton\n    allowHideButton\n    buttonText\n    backgroundColor\n    titleColor\n    subtitleColor\n    buttonColor\n    buttonTextColor\n    regionalLink\n  }\n":i.mA,"\n  fragment ShopFields on Shop {\n    id\n    name\n    address\n    phone\n    workTime\n    lat\n    long\n    hasCafe\n    hasDrive\n    hasDelivery\n    hasFreshFish\n    hasHomeBasket\n    hasOwnProduction\n    hasOwnMeatProduction\n    hasWifi\n    hasGenerator\n    hasBombShelter\n    isDarkstore\n    isEnabled\n    inactiveReason\n    tmsId\n    square\n    cityId\n    city {\n      id\n      name\n      lat\n      long\n    }\n  }\n":i.k,"\n  fragment ShopAvailabilityFields on ShopAvailability {\n    shop {\n      id\n      name\n    }\n    availability {\n      inStock\n      available\n      delivery\n      pickup\n      shipping\n      today\n      qty\n      otherMarket\n      otherRegions\n    }\n    priceInfo {\n      price\n      specialPrice\n      discountPercent\n      specialFrom\n      specialTo\n      wholesalePrice\n      wholesalePriceThreshold\n      promoPrice\n      promoPriceThreshold\n    }\n  }\n":i.$w,"\n  fragment QuantityStepFields on QuantityStep {\n    isDecimal\n    minSale\n    recommended\n    unit\n  }\n":i.vw,"\n  fragment AttributeOptionFields on AttributeOption {\n    id\n    label\n  }\n":i.db,"\n  fragment AttributeValueFields on AttributeValue {\n    code\n    label\n    group\n    valueType\n    ... on BooleanAttributeValue {\n      boolValue: value\n    }\n    ... on DateTimeAttributeValue {\n      dateValue: value\n    }\n    ... on NumberAttributeValue {\n      numberValue: value\n    }\n    ... on EnumAttributeValue {\n      option {\n        ...AttributeOptionFields\n      }\n      enumRaw: raw\n    }\n    ... on MultiEnumAttributeValue {\n      options {\n        ...AttributeOptionFields\n      }\n      multiEnumRaw: raw\n    }\n    ... on TextAttributeValue {\n      textValue: value\n    }\n  }\n":i.P3,'\n  fragment ProductFullFields on Product {\n    # Core identification\n    id\n    sku\n    name\n    type\n    status\n    visibility\n    urlKey\n\n    # Content\n    description\n    categorySeoDescription\n\n    # Physical attributes\n    weight\n    volume\n\n    # Flags\n    isNew\n    is18Plus\n    isTobacco\n    isCertificate\n    isShippingAllowed\n    isBoardProduct\n    isBoardProductTop\n    isDisplayPricePer100g\
1n    isVarusPerfect\n    isWinterSupport\n    isOnlinePromotionInRegion\n    isOnlinePromotionInStore\n    isRichActive\n\n    # Price information\n    priceInfo {\n      price\n      specialPrice\n      specialPromoType\n      discountPercent\n      specialFrom\n      specialTo\n      wholesalePrice\n      wholesalePriceThreshold\n      promoPrice\n      promoPriceThreshold\n    }\n\n    # Regional price information\n    regionalPriceInfo {\n      price\n      specialPrice\n      specialPromoType\n      discountPercent\n      specialFrom\n      specialTo\n      wholesalePrice\n      wholesalePriceThreshold\n      promoPrice\n      promoPriceThreshold\n    }\n\n    # Availability\n    availability {\n      inStock\n      available\n      delivery\n      pickup\n      shipping\n      today\n      qty\n      otherMarket\n      otherRegions\n    }\n\n    # Regional availability\n    regionalAvailability {\n      inStock\n      available\n      delivery\n      pickup\n      shipping\n      today\n      qty\n      otherMarket\n      otherRegions\n    }\n\n    # Quantity step\n    qtyStep {\n      isDecimal\n      minSale\n      recommended\n      unit\n    }\n\n    # Brand\n    brand {\n      id\n      name\n      urlKey\n      categoryId\n      subcategories {\n        id\n        name\n        urlKey\n        level\n        isProductCategory\n        position\n      }\n    }\n\n    # Categories\n    categories {\n      id\n      name\n      urlKey\n      level\n      isProductCategory\n      position\n      meta {\n        title\n        description\n        h1\n      }\n    }\n\n    # Primary category\n    primaryCategory {\n      id\n      name\n      urlKey\n      level\n      isProductCategory\n      position\n      meta {\n        title\n        description\n        h1\n      }\n    }\n\n    # Image gallery\n    gallery {\n      mainImageTimestamp\n      carouselImages {\n        index\n        timestamp\n      }\n    }\n\n    # Review summary\n    reviewSummary {\n      averageRating\n      count\n    }\n    reviews(first: 50) {\n      totalCount\n      edges {\n        node {\n          id\n          nickname\n          summary\n          content\n          rating\n          upvotes\n          downvotes\n          createdAt\n          comments {\n            id\n            nickname\n            content\n            type\n            status\n            createdAt\n          }\n        }\n      }\n    }\n\n    # Promotions\n    promotions {\n      id\n      name\n      urlKey\n      description\n      shortDescription\n      isActive\n      dateFrom\n      dateTo\n      desktopImage\n      mobileImage\n      label {\n        text\n        color\n        icon\n      }\n    }\n\n    # Banners\n    banners {\n      id\n      title\n      subtitle\n      link\n      target\n      imageDesktop\n      imageMobile\n      position\n      sortOrder\n      status\n      dateFrom\n      dateTo\n      showTitle\n      showSubtitle\n      showButton\n      allowHideButton\n      buttonText\n      backgroundColor\n      titleColor\n      subtitleColor\n      buttonColor\n      buttonTextColor\n      regionalLink\n    }\n\n    # Product icons (attribute images)\n    icons {\n      label\n      value\n    }\n\n    # Markdown flag\n    isMarkdown\n\n    # Markdown data (structured, replaces attribute-based markdown fields)\n    markdownData {\n      markdownId\n      title\n      description\n      discountPercent\n      shops\n      originalProduct {\n        id\n        urlPath\n      }\n    }\n\n    # Product labels (native labels from backend)\n    productLabels {\n      text\n      color\n      icon\n      dateFrom\n      dateTo\n      addCountdown\n      addDate\n    }\n\n    # Property data (product variants/options)\n    propertyData {\n      label\n      options {\n        isCurrent\n        label\n        productId\n        propertyId\n        url\n      }\n    }\n\n    # Shop availability\n    shopAvailability {\n      shop {\n        id\n        name\n        address\n        phone\n        workTime\n        lat\n        long\n        hasCafe\n        hasDrive\n        hasDelivery\n        hasFreshFish\n        hasHomeBasket\n        hasOwnProduction\n        hasOwnMeatProduction\n        hasWifi\n        hasGenerator\n        hasBombShelter\n        isDarkstore\n        isEnabled\n        inactiveReason\n        tmsId\n        square\n        cityId\n        city {\n          id\n          name\n          lat\n          long\n        }\n      }\n      availability {\n        inStock\n        available\n        delivery\n        pickup\n        shipping\n        today\n        qty\n        otherMarket\n        otherRegions\n      }\n      priceInfo {\n        price\n        specialPrice\n        specialPromoType\n        discountPercent\n        specialFrom\n        specialTo\n        wholesalePrice\n        wholesalePriceThreshold\n        promoPrice\n        promoPriceThreshold\n      }\n    }\n\n    # Product attributes\n    topAttributes {\n      ...AttributeValueFields\n    }\n\n    allAttributes {\n      ...AttributeValueFields\n    }\n\n    filterAttributes {\n      ...AttributeValueFields\n    }\n\n    onlinePromotionInStores: attributes(keys: ["online_promotion_in_stores"]) {\n      ...AttributeValueFields\n    }\n\n    newProductItem: attributes(keys: ["newProductItem"]) {\n      ...AttributeValueFields\n    }\n\n    newsFromDate: attributes(keys: ["news_from_date"]) {\n      ...AttributeValueFields\n    }\n\n    newsToDate: attributes(keys: ["news_to_date"]) {\n      ...AttributeValueFields\n    }\n\n    wghweigh\n\n    packingtype: attributes(keys: ["packingtype"]) {\
1n      ...AttributeValueFields\n    }\n\n    ratingVivino: attributes(keys: ["ratingVivino"]) {\n      ...AttributeValueFields\n    }\n\n    markdownId: attributes(keys: ["markdown_id"]) {\n      ...AttributeValueFields\n    }\n\n    markdownTitle: attributes(keys: ["markdown_title"]) {\n      ...AttributeValueFields\n    }\n\n    markdownDiscount: attributes(keys: ["markdown_discount"]) {\n      ...AttributeValueFields\n    }\n\n    markdownDescription: attributes(keys: ["markdown_description"]) {\n      ...AttributeValueFields\n    }\n\n    # Product lists for carousels (PDP sliders)\n    newProducts: productList(listId: PDP_NEW, limit: 12) {\n      ...ProductListItemFields\n    }\n    topProducts: productList(listId: PDP_MORE_FROM_CATEGORY, limit: 12) {\n      ...ProductListItemFields\n    }\n    recommendedProducts: productList(listId: PDP_RECOMMENDED_TO_VIEW, limit: 12) {\n      ...ProductListItemFields\n    }\n  }\n':i.O3,'\n  fragment CategoryProductListItemFields on Product {\n    ...ProductListItemFields\n\n    # Extra flags\n    isBoardProduct\n    isBoardProductTop\n    isOnlinePromotionInRegion\n    isOnlinePromotionInStore\n    isWinterSupport\n    isShippingAllowed\n    isMarkdown\n    isDisplayPricePer100g\n\n    # Content / physical\n    description\n    weight\n    volume\n\n    # Full categories list (the baseline only ships primaryCategory)\n    categories {\n      id\n      name\n      urlKey\n      level\n      isProductCategory\n      position\n    }\n\n    # Extend promotions with the badge countdown window\n    # (merges with ProductListItemFields.promotions per GraphQL spec)\n    promotions {\n      dateFrom\n      dateTo\n    }\n\n    # Native badge labels\n    productLabels {\n      text\n      color\n      icon\n      dateFrom\n      dateTo\n      addCountdown\n      addDate\n    }\n\n    # Markdown product overlay\n    markdownData {\n      markdownId\n      title\n      description\n      discountPercent\n      shops\n      originalProduct {\n        id\n        urlPath\n      }\n    }\n\n    # Attribute aliases used by category card renderers\n    newsFromDate: attributes(keys: ["news_from_date"]) {\n      ...AttributeValueFields\n    }\n    newsToDate: attributes(keys: ["news_to_date"]) {\n      ...AttributeValueFields\n    }\n    packingtype: attributes(keys: ["packingtype"]) {\n      ...AttributeValueFields\n    }\n    onlinePromotionInStores: attributes(keys: ["online_promotion_in_stores"]) {\n      ...AttributeValueFields\n    }\n    varusPerfect: attributes(keys: ["varus_perfect"]) {\n      ...AttributeValueFields\n    }\n\n    sponsorship {\n      slot\n      globalSlot\n      placementId\n      adSpotId\n      creativeId\n      sessionId\n      labelHtml\n      labelCss\n      tracking {\n        impression\n        click\n        viewability\n        engagement\n      }\n    }\n  }\n':i.aW,"\n  fragment ProductListItemFields on Product {\n    # Core identification\n    id\n    sku\n    name\n    type\n    status\n    visibility\n    urlKey\n\n    # Flags\n    isNew\n    is18Plus\n    isTobacco\n    isRichActive\n    isShippingAllowed\n\n    # Physical\n    weight\n    volume\n    wghweigh\n\n    # Price information\n    priceInfo {\n      price\n      specialPrice\n      specialPromoType\n      discountPercent\n      specialFrom\n      specialTo\n      wholesalePrice\n      wholesalePriceThreshold\n      promoPrice\n      promoPriceThreshold\n    }\n\n    # Availability (shop-specific)\n    availability {\n      inStock\n      available\n      delivery\n      pickup\n      shipping\n      today\n      qty\n      otherMarket\n      otherRegions\n    }\n\n    # Regional availability (for regional mode without shop)\n    regionalAvailability {\n      inStock\n      available\n      delivery\n      pickup\n      shipping\n      today\n      qty\n      otherMarket\n      otherRegions\n    }\n\n    # Regional price information\n    regionalPriceInfo {\n      price\n      specialPrice\n      specialPromoType\n      discountPercent\n      specialFrom\n      specialTo\n      wholesalePrice\n      wholesalePriceThreshold\n      promoPrice\n      promoPriceThreshold\n    }
1\n\n    # Quantity step\n    qtyStep {\n      isDecimal\n      minSale\n      recommended\n      unit\n    }\n\n    # Brand (minimal)\n    brand {\n      id\n      name\n      urlKey\n    }\n\n    # Primary category\n    primaryCategory {\n      id\n      name\n      urlKey\n    }\n\n    # Image gallery (main image only)\n    gallery {\n      mainImageTimestamp\n    }\n\n    # Review summary\n    reviewSummary {\n      averageRating\n      count\n    }\n\n    # Promotions (only labels for badges)\n    promotions {\n      id\n      name\n      label {\n        text\n        color\n        icon\n      }\n    }\n  }\n":i.yc,"\n  query CategoryEntity(\n    $id: ID!\n    $shopId: Int\n    $regionId: Int\n    $locale: String\n    $deliveryMethod: DeliveryMethod\n  ) {\n    category(\n      id: $id\n      shopId: $shopId\n      regionId: $regionId\n      locale: $locale\n      deliveryMethod: $deliveryMethod\n    ) {\n      id\n      pimcoreId\n      name\n      urlKey\n      level\n      parentId\n      description\n      childrenTotal\n      productsTotal\n      kind\n      is18Plus\n      isProductCategory\n      meta {\n        h1\n        title\n        description\n        noIndex\n        noFollow\n      }\n      seoBlocks {\n        title\n        position\n        items {\n          title\n          url\n          position\n        }\n      }\n      children {\n        ...CategoryChildBaseFields\n        children {\n          ...CategoryChildBaseFields\n          children {\n            ...CategoryChildBaseFields\n          }\n        }\n      }\n    }\n  }\n":i.n_,"\n  query CategoryByRoute(\n    $path: String!\n    $shopId: Int\n    $regionId: Int\n    $locale: String\n    $deliveryMethod: DeliveryMethod\n  ) {\n    route(\n      path: $path\n      shopId: $shopId\n      regionId: $regi
1onId\n      locale: $locale\n      deliveryMethod: $deliveryMethod\n    ) {\n      notFound\n      resolved {\n        __typename\n        ... on Category {\n          id\n          name\n          urlKey\n          level\n          parentId\n          description\n          childrenTotal\n          productsTotal\n          brandCategory\n          is18Plus\n          isProductCategory\n          meta {\n            h1\n            title\n            description\n            noIndex\n            noFollow\n          }\n          seoBlocks {\n            title\n            position\n            items {\n              title\n              url\n              position\n            }\n          }\n          children {\n            ...CategoryChildBaseFields\n            children {\n              ...CategoryChildBaseFields\n              children {\n                ...CategoryChildBaseFields\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n":i.Ur,"\n  query CategoryProducts(\n    $id: ID!\n    $shopId: Int\n    $regionId: Int\n    $locale: String\n    $deliveryMethod: DeliveryMethod\n    $page: Int\n    $pageSize: Int\n    $filters: [CategoryProductFilterInput!]\n    $sort: CategoryProductSortInput\n    $quickFilters: [CategoryQuickFilterInput!]\n  ) {\n    category(\n      id: $id\n      shopId: $shopId\n      regionId: $regi
1onId\n      locale: $locale\n      deliveryMethod: $deliveryMethod\n    ) {\n      id\n      name\n      urlKey\n      level\n      parentId\n      description\n      childrenTotal\n      productsTotal\n      kind\n      is18Plus\n      isProductCategory\n      meta {\n        h1\n        title\n        description\n        noIndex\n        noFollow\n      }\n      seoBlocks {\n        title\n        position\n        items {\n          title\n          url\n          position\n        }\n      }\n      children {\n        ...CategoryChildBaseFields\n        children {\n          ...CategoryChildBaseFields\n          children {\n            ...CategoryChildBaseFields\n          }\n        }\n      }\n      products(\n        page: $page\n        pageSize: $pageSize\n        filters: $filters\n        sort: $sort\n        quickFilters: $quickFilters\n      ) {\n        items {\n          ...CategoryProductListItemFields\n        }\n        total\n        page\n        pageSize\n        totalPages\n        availableFilters {\n          ...CategoryProductFilterFields\n        }\n        availableSorts {\n          ...CategoryProductSortOptionFields\n        }\n      }\n    }\n  }\n":i.Y1,"\n  query CategoryFilters(\n    $id: ID!\n    $shopId: Int\n    $regionId: Int\n    $locale: String\n    $deliveryMethod: DeliveryMethod\n  ) {\n    category(\n      id: $id\n      shopId: $shopId\n      regionId: $regi
1onId\n      locale: $locale\n      deliveryMethod: $deliveryMethod\n    ) {\n      products(pageSize: 0) {\n        availableFilters {\n          ...CategoryProductFilterFields\n        }\n      }\n    }\n  }\n":i.pA,"\n  query CategoryPageById(\n    $id: ID!\n    $shopId: Int\n    $regionId: Int\n    $locale: String\n    $deliveryMethod: DeliveryMethod\n    $page: Int\n    $pageSize: Int\n    $filters: [CategoryProductFilterInput!]\n    $sort: CategoryProductSortInput\n    $quickFilters: [CategoryQuickFilterInput!]\n    $loadBrandPromo: Boolean = false\n  ) {\n    category(\n      id: $id\n      shopId: $shopId\n      regionId: $regionId\n      locale: $locale\n      deliveryMethod: $deliveryMethod\n    ) {\n      id\n      pimcoreId\n      name\n      urlKey\n      level\n      parentId\n      description\n      childrenTotal\n      productsTotal\n      kind\n      is18Plus\n      isProductCategory\n      friendlyFilter {\n        id\n        name\n        url\n        singleOption\n        meta {\n          h1\n          title\n          keywords\n          description\n          noIndex\n          noFollow\n        }\n        faq {\n          key\n          value\n        }\n      }\n      meta {\n        h1\n        title\n        description\n        noIndex\n        noFollow\n      }\n      seoBlocks {\n        title\n        position\n        items {\n          title\n          url\n          position\n        }\n      }\n      children {\n        ...CategoryChildBaseFields\n        children {\n          ...CategoryChildBaseFields\n          children {\n            ...CategoryChildBaseFields\n          }\n        }\n      }\n      banners {\n        id\n        title\n        titleColor\n        subtitle\n        subtitleColor\n        showTitle\n        showSubtitle\n        showButton\n        allowHideButton\n        buttonText\n        buttonTextColor\n        buttonColor\n        backgroundColor\n        imageDesktop\n        imageMobile\n        link\n        target\n        sortOrder\n        status\n        position\n        categoryIds\n        dateFrom\n        dateTo\n        regionalLink\n      }\n      topCategories {\n        id\n        title\n        url\n        icon\n        isNew\n        position\n      }\n      products(\n        page: $page\n        pageSize: $pageSize\n        filters: $filters\n        sort: $sort\n        quickFilters: $quickFilters\n        quickFilterCounts: [TODAY, PROMO]\n      ) {\n        items {\n          ...CategoryProductListItemFields\n        }\n        total\n        page\n        pageSize\n        totalPages\n        availableFilters {\n          ...CategoryProductFilterFields\n        }\n        availableSorts {\n          ...CategoryProductSortOptionFields\n        }\n        quickFilters {\n          code\n          label\n          selected\n          count\n        }\n        categoryNavigation {\n          mode\n          selectedCategoryId\n          expandedPathIds\n          items {\n            id\n            name\n            urlKey\n            level\n            parentId\n            productsTotal\n            selected\n            expanded\n            hasChildren\n            children {\n              id\n              name\n              urlKey\n              level\n              parentId\n              productsTotal\n              selected\n              expanded\n              hasChildren\n              children {\n                id\n                name\n                urlKey\n                level\n                parentId\n                productsTotal\n                selected\n                expanded\n                hasChildren\n              }\n            }\n          }\n        }\n      }\n      productList(listId: BRAND_PROMO, limit: 12) @include(if: $loadBrandPromo) {\n        ...CategoryProductListItemFields\n      }\n    }\n  }\n":i.T2,"\n  query CategoryPageByRoute(\n    $path: String!\n    $shopId: Int\n    $regionId: Int\n    $locale: String\n    $deliveryMethod: DeliveryMethod\n    $page: Int\n    $pageSize: Int\n    $filters: [CategoryProductFilterInput!]\n    $sort: CategoryProductSortInput\n    $quickFilters: [CategoryQuickFilterInput!]\n    $loadBrandPromo: Boolean = false\n  ) {\n    route(\n      path: $path\n      shopId: $shopId\n      regionId: $regi
1onId\n      locale: $locale\n      deliveryMethod: $deliveryMethod\n    ) {\n      canonicalPath\n      notFound\n      redirect {\n        code\n        to\n      }\n      resolved {\n        __typename\n        ... on Category {\n          ...CategoryPageRouteFields\n        }\n      }\n    }\n  }\n":i.Bu,"\n  query CategoryPageByRouteDual(\n    $filteredPath: String!\n    $cleanPath: String!\n    $shopId: Int\n    $regionId: Int\n    $locale: String\n    $deliveryMethod: DeliveryMethod\n    $page: Int\n    $pageSize: Int\n    $filters: [CategoryProductFilterInput!]\n    $sort: CategoryProductSortInput\n    $quickFilters: [CategoryQuickFilterInput!]\n    $loadBrandPromo: Boolean = false\n  ) {\n    filtered: route(\n      path: $filteredPath\n      shopId: $shopId\n      regionId: $regionId\n      locale: $locale\n      deliveryMethod: $deliveryMethod\n    ) {\n      canonicalPath\n      notFound\n      redirect {\n        code\n        to\n      }\n      resolved {\n        __typename\n        ... on Category {\n          ...CategoryPageRouteFields\n        }\n      }\n    }\n    unfiltered: route(\n      path: $cleanPath\n      shopId: $shopId\n      regionId: $regi
1onId\n      locale: $locale\n      deliveryMethod: $deliveryMethod\n    ) {\n      notFound\n      resolved {\n        __typename\n        ... on Category {\n          id\n          products(page: 1, pageSize: 1, filters: $filters) {\n            availableFilters {\n              ...CategoryProductFilterAggFields\n            }\n          }\n        }\n      }\n    }\n  }\n":i.ns,"\n  query RouteInfo(\n    $path: String!\n    $shopId: Int\n    $regionId: Int\n    $locale: String\n    $deliveryMethod: DeliveryMethod\n  ) {\n    route(\n      path: $path\n      shopId: $shopId\n      regionId: $regionId\n      locale: $locale\n      deliveryMethod: $deliveryMethod\n    ) {\n      canonicalPath\n      notFound\n      redirect {\n        code\n        to\n      }\n      resolved {\n        __typename\n        ... on Category {\n          id\n        }\n      }\n    }\n  }\n":i.tb,"\n  query Product($id: ID!) {\n    product(id: $id) {\n      ...ProductCoreFields\n      ...ProductContentFields\n      ...ProductPhysicalFields\n      ...ProductFlagsFields\n      brand {\n        ...BrandFields\n      }\n    }\n  }\n":i.xq,"\n  query ProductById($id: ID!, $shopId: Int, $regionId: Int, $deliveryMethod: DeliveryMethod) {\n    product(id: $id, shopId: $shopId, regionId: $regi
1onId, deliveryMethod: $deliveryMethod) {\n      ...ProductFullFields\n      reviews(first: 50) {\n        totalCount\n        edges {\n          node {\n            id\n            nickname\n            summary\n            content\n            rating\n            upvotes\n            downvotes\n            createdAt\n            comments {\n              id\n              nickname\n              content\n              type\n              status\n              createdAt\n            }\n          }\n        }\n      }\n    }\n  }\n":i.TV,"\n  query ProductByRoute($path: String!, $shopId: Int, $regionId: Int, $deliveryMethod: DeliveryMethod) {\n    route(path: $path, shopId: $shopId, regionId: $regionId, deliveryMethod: $deliveryMethod) {\n      canonicalPath\n      notFound\n      redirect {\n        code\n        to\n      }\n      resolved {\n        ... on Product {\n          ...ProductFullFields\n          reviews(first: 50) {\n            totalCount\n            edges {\n              node {\n                id\n                nickname\n                summary\n                content\n                rating\n                upvotes\n                downvotes\n                createdAt\n                comments {\n                  id\n                  nickname\n                  content\n                  type\n                  status\n                  createdAt\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n":i.J7};function w(F){return p[F]??{}}},38481:function(){},45383:function(S,C,s){"use strict";s.d(C,{getDataSourceForEntity:function(){return P},getGraphQLEndpoint:function(){return k}});function P(p,w){return p?.enabled&&(p.entities[w]||p.default)||"elasticsearch"}function k(p,w,F){if(!p?.graphql)return"/graphql";if(F){const T=F.isServer?p.graphql.url_ssr_graphql:p.graphql.url_client_graphql;if(T)return T}const{host:g,port:l,endpoints:m}=p.graphql,I=m?.[w]||"/graphql";if(g){const T="https",b=l?`:${l}`:"";return`${T}://${g}${b}${I}`}return I}var d=s(99077),i=s(29447)},50477:function(){},62501:function(S,C,s){"use strict";s.d(C,{CS:function(){return d}});const P=new Map;function k(){P.clear()}function d(g,l){if(P.has(g))return P.get(g);const m=l();return P.set(g,m),m}const i={product:{entityType:"product",primary:"elasticsearch",fallback:"graphql",enableFallback:!0,timeout:3e3,retryOnTimeout:!0},category:{entityType:"category",primary:"graphql",fallback:null,enableFallback:!1,timeout:3e3,retryOnTimeout:!0}};function p(g){const l=i[g];if(!l)throw new Error(`Unknown entity type: ${g}. Available: ${Object.keys(i).join(", ")}`);return l}function w(g){const l=p(g);return l.enableFallback&&l.fallback!==null}class F{constructor(l,m,I,T){this.entityType=l,this.primaryAdapter=m,this.fallbackAdapter=I,this.logger=T,this.strategy=getStrategy(l),this.logger.info("CompositeAdapter",`Initialized for ${l}`,{primary:this.strategy.primary,fallback:this.strategy.fallback,enableFallback:this.strategy.enableFallback,timeout:this.strategy.timeout})}async get(l){try{return await this.executeWithTimeout(()=>this.primaryAdapter.get(l),this.strategy.timeout,"primary")}catch(m){if(this.logger.error(`${this.entityType}/get:primary-failed`,m,{id:l,adapter:this.strategy.primary}),!hasFallback(this.entityType)||!this.fallbackAdapter)throw m;try{return this.logger.info(`${this.entityType}/get:attempting-fallback`,"Primary adapter failed, attempting fallback",{id:l}),await this.executeWithTimeout(()=>this.fallbackAdapter.get(l),this.strategy.timeout,"fallback")}catch(I){throw this.logger.error(`${this.entityType}/get:fallback-failed`,I,{id:l,adapter:this.strategy.fallback}),new Error(`Both ${this.strategy.primary} and ${this.strategy.fallback} adapters failed for ${this.entityType}/get(${l}). Primary error: ${m.message}. Fallback error: ${I.message}`)}}}async getMultiple(l){try{return await this.executeWithTimeout(()=>this.primaryAdapter.getMultiple(l),this.strategy.timeout,"primary")}catch(m){if(this.logger.error(`${this.entityType}/getMultiple:primary-failed`,m,{idsCount:l.length,adapter:this.strategy.primary}),!hasFallback(this.entityType)||!this.fallbackAdapter)throw m;try{return this.logger.info(`${this.entityType}/getMultiple:attempting-fallback`,"Primary adapter failed, attempting fallback",{idsCount:l.length}),await this.executeWithTimeout(()=>this.fallbackAdapter.getMultiple(l),this.strategy.timeout,"fallback")}catch(I){throw this.logger.error(`${this.entityType}/getMultiple:fallback-failed`,I,{idsCount:l.length,adapter:this.strategy.fallback}),new Error(`Both ${this.strategy.primary} and ${this.strategy.fallback} adapters failed for ${this.entityType}/getMultiple(${l.length} ids). Primary error: ${m.message}. Fallback error: ${I.message}`)}}}async search(l){try{return await this.executeWithTimeout(()=>this.primaryAdapter.search(l),this.strategy.timeout,"primary")}catch(m){if(this.logger.error(`${this.entityType}/search:primary-failed`,m,{queryType:typeof l,adapter:this.strategy.primary}),!hasFallback(this.entityType)||!this.fallbackAdapter)throw m;try{return this.logger.info(`${this.entityType}/search:attempting-fallback`,"Primary adapter failed, attempting fallback",{queryType:typeof l}),await this.executeWithTimeout(()=>this.fallbackAdapter.search(l),this.strategy.timeout,"fallback")}catch(I){throw this.logger.error(`${this.entityType}/search:fallback-failed`,I,{queryType:typeof l,adapter:this.strategy.fallback}),new Error(`Both ${this.strategy.primary} and ${this.strategy.fallback} adapters failed for ${this.entityType}/search. Primary error: ${m.message}. Fallback error: ${I.message}`)}}}executeWithTimeout(l,m=5e3,I){return Promise.race([l(),new Promise((T,b)=>setTimeout(()=>b(new Error(`${I}
1 adapter timeout after ${m}ms for ${this.entityType}`)),m))])}}},73712:function(S,C,s){"use strict";s.d(C,{getCachedAdapter:function(){return p.CS},getDataSourceForEntity:function(){return P.getDataSourceForEntity}});var P=s(45383),k=s(4993),d=s(29438),i=s(84309),p=s(62501)},75797:function(S,C,s){var P=s(65606);const{AbortController:k}=s(94441);S.exports=function(){const d=new k,i=setTimeout(()=>{d.abort()},3e4);arguments[1]=arguments?.[1]?{...arguments?.[1],signal:d.signal}:{signal:d.signal};try{return P.nativeFetch.apply(null,arguments)}catch(p){throw new Error(p)}finally{clearTimeout(i)}}},76863:function(S){"use strict";S.exports=JSON.parse('{"possibleTypes":{"AttributeValue":["BooleanAttributeValue","DateTimeAttributeValue","EnumAttributeValue","MultiEnumAttributeValue","NumberAttributeValue","TextAttributeValue"],"Routable":["Category","Product"]}}')},78047:function(S,C,s){"use strict";s.d(C,{G:function(){return k}});function P(d){const i=Array.isArray(d.children)?d.children.map(P):[],p=Number(d.id),w=Number.isFinite(p)?p:d.id,F=Number(d.parentId),g=d.parentId==null?0:Number.isFinite(F)?F:d.parentId;return{id:w,name:d.name,slug:d.urlKey,url_key:d.urlKey,url_path:d.urlKey,path:d.urlKey,level:d.level,parent_id:g,is_active:!0,include_in_menu:!0,custom_url:void 0,countProduct:d.productsTotal??0,product_count:d.productsTotal??0,selected:!!d.selected,children_data:i}}function k(d){return!d||!Array.isArray(d.items)?[]:d.items.map(P)}},83546:function(S,C,s){"use strict";s.r(C),s.d(C,{GraphQLCategoryAdapter:function(){return sn}});var P=s(29438),k=s(84309),d=s(13977),i=s(89239),p=s(79665);const w=new Set(["promotion_banner_ids"]);function F(n){return{doc_count_error_upper_bound:0,sum_other_doc_count:0,buckets:n.map(e=>({key:String(e.value),doc_count:e.count,label:e.label}))}}function g(n){const e={};if(!n||!n.length)return e;for(const t of n){if(!t||!t.code)continue;const o=t.code;if(t.type==="RANGE"&&o==="price"){const y=t.range?.min!=null?Number(t.range.min):NaN,h=t.range?.max!=null?Number(t.range.max):NaN;!isNaN(y)&&!isNaN(h)&&(e.agg_price={filter:{price_min:{value:y},price_max:{value:h}}});continue}if(!Array.isArray(t.options))continue;const c=F(t.options);e[`agg_terms_${o}`]=c,e[`agg_terms_${o}_options`]=c,w.has(o)&&(e[`agg_terms_${o}.keyword`]=c)}return e}function l(n){return Array.isArray(n)?n.filter(e=>e&&e.code&&e.type!=="RANGE").map(e=>({attribute_code:e.code,attribute_id:e.code,frontend_label:e.label,default_frontend_label:e.label,uri_name:e.uriName||void 0,options:Array.isArray(e.options)?e.options.map(t=>({value:t?.value!=null?String(t.value):void 0,label:t?.label,uri_name:t?.uriName||void 0})):[]})):[]}function m(n){const e={};if(!Array.isArray(n))return e;for(const t of n){if(!t?.uriName||!Array.isArray(t.options))continue;const o=t.options.filter(c=>c?.uriName&&c.noIndex===!0).map(c=>c.uriName);o.length&&(e[t.uriName]=o)}return e}function I(n,e=0,t,o=!1){const c=n?.category;if(!c)return p.V.warn("CategoryMapper: empty category response","data-layer:category")(),{items:[],total:0,perPage:0,totalPages:0,start:e,aggregations:{},attributeMetadata:[],noindexFilterOptions:{}};const y=c.products,u=(Array.isArray(y?.items)?y.items:[]).map(v=>{try{const f=(0,i.tv)(v,t??void 0,o);return f.sponsorship=v?.sponsorship??null,f}catch(f){return p.V.warn(`CategoryMapper: failed to map product ${v?.id??"?"}: ${f?.message}`,"data-layer:category")(),v}}),a=y?.availableFilters||[];return{items:u,total:y?.total||0,perPage:y?.pageSize||u.length,totalPages:y?.totalPages||0,start:e,aggregations:g(a),attributeMetadata:l(a),noindexFilterOptions:m(a)}}function T(n){return n?{id:n.id,name:n.name,slug:n.urlKey||"",url_key:n.urlKey||"",url_path:n.urlKey||"",level:n.level??0,parent_id:n.parentId??0,is_active:!0,product_count:n.productsTotal??0,children_count:String(n.childrenTotal??0),children_data:b(n.children),include_in_menu:!0,position:0}:{}}function b(n){return Array.isArray(n)?n.map(T):[]}function $(){return{id:0,name:"",slug:"",url_key:"",url_path:"",level:0,parent_id:null,path:"",is_active:!1,product_count:0,children_count:"0",children_data:[],include_in_menu:!1,position:0,noindex_filters:[],custom_url:"",brand_category:"",is_18_plus:!1,description:"",h_1:"",meta_title:"",meta_description:"",is_noindex:!1,is_nofollow:!1,seo_block:null}}function O(n){if(!n)return null;const e=n.meta||{};return{id:n.id,name:n.name??null,url:n.url,single_option:!!n.singleOption,meta_h1:e.h1??null,meta_title:e.title??null,meta_keywords:e.keywords??null,meta_description:e.description??null,index:e.noIndex?"NOINDEX":"INDEX",follow:e.noFollow?"NOFOLLOW":"FOLLOW",faq:Array.isArray(n.faq)?n.faq:[]}}function r(n,e){if(!n)return $();const t=Number(n.id),o=Number.isFinite(t)?t:0,c=n.level??1,y=n.parentId??null,h=n.meta||{}
1,u={id:o,name:n.name||"",slug:n.urlKey||"",url_key:n.urlKey||"",url_path:n.urlKey||"",level:c,parent_id:y,is_active:!0,product_count:n.productsTotal??0,children_count:String(n.childrenTotal??0),children_data:b(n.children),include_in_menu:!0};if(n.pimcoreId!=null&&(u.pimcore_id=n.pimcoreId),n.kind!=null&&(u.kind=n.kind),n.is18Plus!=null&&(u.is_18_plus=n.is18Plus),Array.isArray(n.banners)&&n.banners.length&&(u.banners=n.banners.map(a=>({id:a.id,title:a.title,title_color:a.titleColor,subtitle:a.subtitle,subtitle_color:a.subtitleColor,show_title:a.showTitle,show_subtitle:a.showSubtitle,show_button:a.showButton,allow_hide_button:a.allowHideButton,button_text:a.buttonText,button_text_color:a.buttonTextColor,button_color:a.buttonColor,background_color:a.backgroundColor,image_desktop:a.imageDesktop,image_mobile:a.imageMobile,link:a.link,target:a.target,sort_order:a.sortOrder,status:a.status,position:a.position,category_ids:a.categoryIds,datetime_from:a.dateFrom,datetime_to:a.dateTo,regional_link:a.regionalLink}))),Array.isArray(n.topCategories)&&n.topCategories.length&&(u.top_category=n.topCategories.map(a=>({id:a.id,title:a.title,url:a.url,icon:a.icon,is_new:a.isNew,position:a.position}))),n.description!=null&&(u.description=n.description),h.h1!=null&&(u.h_1=h.h1),h.title!=null&&(u.meta_title=h.title),h.description!=null&&(u.meta_description=h.description),h.noIndex!=null&&(u.is_noindex=h.noIndex),h.noFollow!=null&&(u.is_nofollow=h.noFollow),Array.isArray(n.seoBlocks)&&n.seoBlocks.length&&(u.seo_block=n.seoBlocks.map(a=>({title:a.title||"",position:a.position??0,items:Array.isArray(a.items)?a.items:[]}))),Array.isArray(e)&&e.length){const a=[],v=[];for(const f of e)!f||!f.code||f.type==="RANGE"||(a.push(f.code),f.isTop&&v.push(f.code));a.length&&(u.filterattributes=a.join(",")),v.length&&(u.filter_top_attributes=v)}return u.friendlyFilter=n.friendlyFilter??null,u.humanFilterMeta=O(n.friendlyFilter),u}var _=s(11093);function R(n){return{items:[],total:0,perPage:0,totalPages:0,start:n,aggregations:{},attributeMetadata:[],noindexFilterOptions:{}}}function A(n,e,t){return{...R(n),category:r(null),canonicalPath:e?.canonicalPath??null,redirect:e?.redirect??null,notFound:!0,promotionProductsTotal:0,categoryNavigation:null,...t==="typeMismatch"?{}:{}}}function D(n){const e=n?.products?.quickFilters;if(!Array.isArray(e))return 0;const t=e.find(o=>o?.code==="PROMO");return typeof t?.count=="number"?t.count:0}function L(n){const e=n?.products?.categoryNavigation;return!e||e.mode!=="FILTER"&&e.mode!=="LINK"?null:{mode:e.mode,selectedCategoryId:e.selectedCategoryId??null,items:Array.isArray(e.items)?e.items:[],expandedPathIds:Array.isArray(e.expandedPathIds)?e.expandedPathIds:[]}}function V(n,e,t){const o=I({category:n},e.start,e.shopId,e.isRegional),c=r(n,n.products?.availableFilters),y=Array.isArray(n.productList)?n.productList:[],h=y.length?y.map(u=>{try{return(0,_.tv)(u,e.shopId??void 0,e.isRegional)}catch(a){return p.V.warn(`RouteResultMapper: brand-promo product ${u?.id??"?"} map failed: ${a?.message}`,"data-layer:category")(),u}}):void 0;return{...o,category:c,canonicalPath:t.canonicalPath,redirect:t.redirect,notFound:!1,promotionProductsTotal:D(n),brandPromoItems:h,categoryNavigation:L(n)}}function W(n,e){if(!n||n.notFound)return p.V.debug("RouteResultMapper: route notFound","data-layer:category",{path:e.path})(),A(e.start,n,"notFound");const t=n.resolved;return!t||t.__typename!=="Category"?(p.V.debug("RouteResultMapper: resolved is not Category","data-layer:category",{path:e.path,typename:t?.__typename})(),A(e.start,n,"typeMismatch")):V(t,e,{canonicalPath:n.canonicalPath??null,redirect:n.redirect??null})}function K(n,e){return!n||n.id==null?(p.V.debug("RouteResultMapper: category(id) returned no node","data-layer:category",{path:e.path})(),A(e.start,null,"notFound")):V(n,e,{canonicalPath:null,redirect:null})}var gn=s(78047),q=s(56517),tn=s(60083);async function x(){const n=(0,k.d5)(),e=await n.getShopId(),t=n.isRegionalMode(),o=n.getRegionId(),c=n.getDeliveryMethod()??null,y=n.hasUserShopSelection(),h=!t||y,u=h&&e||null,a=h?null:o||0,v=(typeof n.getStoreCode=="function"?n.getStoreCode():null)||null;return{shopId:u,regionId:a,isRegional:t,deliveryMethod:c,locale:v}}function rn(n){return n!=null&&typeof n=="object"&&n.id!=null?String(n.id):String(n)}function Q(n){const e=(0,tn.CC)(n);return e.startsWith("/")?e:`/${e}`}const on=new Set(["sort","available_today","markdown","price"]),H=new Set(["has_promotion_in_stores","has_promotion_in_region"]);
1function j(n){if(!n)return[];const e=[];for(const[t,o]of Object.entries(n))if(o!=null&&!on.has(t)&&!H.has(t)){if(!Array.isArray(o)){p.V.warn(`buildFilterInputs: unexpected non-array shape for "${t}" \u2014 dropping filter`,"data-layer:category",{rawType:typeof o})();continue}e.push({code:t,values:o.map(rn)})}return e}function J(n){if(!n)return[];const e=[];if(n.priceRange&&(n.priceRange.from!=null||n.priceRange.to!=null)){const t={code:"price"};n.priceRange.from!=null&&(t.from=String(n.priceRange.from)),n.priceRange.to!=null&&(t.to=String(n.priceRange.to)),e.push(t)}return e}function Y(n,e){const t=new Set(n.map(o=>o.code));return[...n,...e.filter(o=>!t.has(o.code))]}const an={"popularity:desc":"POPULARITY","created_at:desc":"NEWEST","final_price:asc":"PRICE_LOW","final_price:desc":"PRICE_HIGH"},ln="WEEK_PRICE";function X(n,e,t){const o=[];return n&&o.push({code:q.Fb.Today,selected:!0}),e&&o.push({code:q.Fb.Promo,selected:!0}),t&&o.push({code:ln,selected:!0}),o.length?o:void 0}function Z(n){if(!n)return;const e=an[n];if(e)return{code:e}}function nn(n,e){if(e?.promotion)return!0;if(n){for(const[t,o]of Object.entries(n))if(o!=null&&H.has(t))return!0}return!1}function U(n,e){const{appliedFilters:t,sort:o,start:c=0,size:y=50,availableToday:h,weekPrice:u}=n,a=y>0?Math.floor(c/y)+1:1,v=Y(j(t),J(n.systemFilters)),f=X(h,nn(t,n.systemFilters),u);return{shopId:e.shopId,regionId:e.regionId,locale:e.locale,deliveryMethod:e.deliveryMethod,filters:v,sort:Z(o),page:a,pageSize:y,quickFilters:f,loadBrandPromo:!!n.loadBrandPromo}}function B(n,e,t){const o=n.errors;if(!o||o.length===0)return!0;const c=o.map(y=>y.message);if(t==="throw")throw p.V.error(`${e} GraphQL errors`,"data-layer:category",{errors:c})(),new Error(`${e} GraphQL errors: ${c.join("; ")}`);return p.V.warn(`${e} GraphQL errors`,"data-layer:category",{errors:c})(),!1}class sn{async loadCategoryPage(e){const{categoryId:t,appliedFilters:o,sort:c,start:y=0,size:h=50,availableToday:u,weekPrice:a}=e;if(!t)throw new Error("GraphQLCategoryAdapter: `categoryId` is required");const{shopId:v,regionId:f,isRegional:M,deliveryMethod:E,locale:G}=e.scope??await x(),N=h>0?Math.floor(y/h)+1:1,z=j(o),dn=J(e.systemFilters),cn=Y(z,dn),un=X(u,nn(o,e.systemFilters),a),pn={id:String(t),shopId:v,regionId:f,locale:G,deliveryMethod:E,filters:cn,sort:Z(c),page:N,pageSize:h,quickFilters:un},en=await(await(0,P.D3)("category")).query({query:d.gU,variables:pn,fetchPolicy:"no-cache"});return B(en,"categoryPage","throw"),I(en.data,y,v,M)}async loadCategoryPageByPath(e){const{path:t,start:o=0}=e;if(!t)throw new Error("GraphQLCategoryAdapter: `path` is required for loadCategoryPageByPath");const c=e.scope??await x(),y=Q(t),h={path:y,...U(e,c)},a=await(await(0,P.D3)("category")).query({query:d.MV,variables:h,fetchPolicy:"no-cache"});return B(a,"categoryPageByRoute","throw"),W(a.data?.route,{start:o,shopId:c.shopId,isRegional:c.isRegional,path:y})}async loadCategoryPageByRouteDual(e){const{filteredPath:t,cleanPath:o,start:c=0}=e;if(!t||!o)throw new Error("GraphQLCategoryAdapter: `filteredPath` and `cleanPath` are required for loadCategoryPageByRouteDual");const y=e.scope??await x(),h=Q(t),u=Q(o),a={filteredPath:h,cleanPath:u,...U(e,y)},f=await(await(0,P.D3)("category")).query({query:d.R3,variables:a,fetchPolicy:"no-cache"});B(f,"categoryPageByRouteDual","throw");const M=W(f.data?.filtered,{start:c,shopId:y.shopId,isRegional:y.isRegional,path:h}),E=W(f.data?.unfiltered,{start:c,shopId:y.shopId,isRegional:y.isRegional,path:u});return{...M,unfilteredAggregations:E.aggregations,unfilteredAttributeMetadata:E.attributeMetadata}}async loadCategoryPageById(e){const{categoryId:t,start:o=0}=e;if(!t)throw new Error("GraphQLCategoryAdapter: `categoryId` is required for loadCategoryPageById");const c=e.scope??await x(),y={id:String(t),...U(e,c)},u=await(await(0,P.D3)("category")).query({query:d.se,variables:y,fetchPolicy:"no-cache"});return B(u,"categoryPageById","throw"),K(u.data?.category,{start:o,shopId:c.shopId,isRegional:c.isRegional,path:`id:${t}`})}async loadFiltersOnly(e,t){const o={aggregations:{},attributeMetadata:[]};
1try{const{shopId:c,regionId:y,deliveryMethod:h,locale:u}=t??await x(),v=await(await(0,P.D3)("category")).query({query:d.wr,variables:{id:String(e),shopId:c,regionId:y,locale:u,deliveryMethod:h},fetchPolicy:"no-cache"});if(!B(v,"categoryFilters","graceful"))return o;const f=v.data?.category?.products?.availableFilters||[];return{aggregations:g(f),attributeMetadata:l(f)}}catch(c){return p.V.warn("categoryFilters exception","data-layer:category",{categoryId:e,message:c?.message})(),o}}async loadCategoryEntity(e,t){if(!e)throw new Error("GraphQLCategoryAdapter: `categoryId` is required for loadCategoryEntity");try{return await this._loadCategoryEntityInner(e,t)}catch(o){return p.V.warn("categoryEntity exception","data-layer:category",{categoryId:e,message:o?.message})(),r(null)}}async _loadCategoryEntityInner(e,t){const{shopId:o,regionId:c,isRegional:y,deliveryMethod:h,locale:u}=t??await x(),a=await(0,P.D3)("category");if(/^\d+$/.test(String(e))){p.V.debug("GraphQL loadCategoryEntity by id","data-layer:category",{id:String(e),shopId:o,regionId:c,isRegional:y,deliveryMethod:h})();const z=await a.query({query:d.oS,variables:{id:String(e),shopId:o,regionId:c,locale:u,deliveryMethod:h},fetchPolicy:"no-cache"});return B(z,"categoryEntity","graceful")?r(z.data?.category):r(null)}const f=String(e),M=Q(f);p.V.debug("GraphQL loadCategoryEntity by route","data-layer:category",{slug:f,path:M,shopId:o,regionId:c,isRegional:y,deliveryMethod:h})();const E=await a.query({query:d.w0,variables:{path:M,shopId:o,regionId:c,locale:u,deliveryMethod:h??null},fetchPolicy:"no-cache"});if(!B(E,"categoryByRoute","graceful"))return r(null);const G=E.data?.route;if(!G||G.notFound)return p.V.debug("GraphQL loadCategoryEntity: route notFound","data-layer:category",{slug:f,path:M})(),r(null);const N=G.resolved;return!N||N.__typename!=="Category"?(p.V.debug("GraphQL loadCategoryEntity: resolved 
1is not Category","data-layer:category",{slug:f,path:M,typename:N?.__typename})(),r(null)):r(N)}async loadRouteInfo(e,t){const o={canonicalPath:null,notFound:!0,redirect:null,categoryId:null};if(!e)return o;const{shopId:c,regionId:y,deliveryMethod:h,locale:u}=t??await x(),a=await(0,P.D3)("category");try{const v=await a.query({query:d.kO,variables:{path:Q(e),shopId:c,regionId:y,locale:u,deliveryMethod:h??null},fetchPolicy:"no-cache"});if(!B(v,"routeInfo","graceful"))return o;const f=v.data?.route;if(!f)return o;const M=f.resolved,E=M&&M.__typename==="Category"&&M.id!=null?Number(M.id):null;return{canonicalPath:f.canonicalPath??null,notFound:!!f.notFound,redirect:f.redirect?{code:f.redirect.code??null,to:f.redirect.to??null}:null,categoryId:E}}catch(v){return p.V.warn("routeInfo GraphQL exception","data-layer:category",{message:v?.message})(),o}}}},84309:function(S,C,s){"use strict";s.d(C,{d5:function(){return i},Vv:function(){return d}});const P={getShopId:async()=>{},isRegionalMode:()=>!0,getStoreCode:()=>{},getLocale:()=>"uk-UA",getCurrency:()=>"UAH",getRegionId:()=>{},getDeliveryMethod:()=>{},hasUserShopSelection:()=>!1};let k=P;function d(F){k={...P,...F}}function i(){return k}function p(){k=P}function w(){return k!==P}},88136:function(){},99077:function(){}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.