import { r as registerInstance, h, H as Host, g as getElement } from './index-89bb9d20.js';
import { p as parts } from './parts-a86835f2.js';
import { g as globalExportedParts } from './utils-d0a0ba1d.js';
import { K as KlevuInit } from './klevu-init-c76243a7.js';
import { F as FilterManager } from './filterManager-5c146ecb.js';
import { K as KlevuFetch, a as applyFilterWithManager } from './applyFilterWithManager-7edd4c12.js';
import { c as categoryMerchandising, s as sendMerchandisingViewEvent } from './categoryMerchandising-57a0bb42.js';
import { l as listFilters } from './listFilters-b4c7f8c7.js';
import './isBrowser-0ab0def8.js';
import './KlevuSearchSorting-18fcc39a.js';

const klevuMerchandisingCss = ".header{display:flex;justify-content:space-between;width:100%}.footer{display:flex;justify-content:center}.footer .klevu-pagination{padding:var(--klevu-spacing-03) 0}";

var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
  if (kind === "a" && !f)
    throw new TypeError("Private accessor was defined without a getter");
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
    throw new TypeError("Cannot read private member from an object whose class did not declare it");
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
  if (kind === "m")
    throw new TypeError("Private method is not writable");
  if (kind === "a" && !f)
    throw new TypeError("Private accessor was defined without a setter");
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
    throw new TypeError("Cannot write private member to an object whose class did not declare it");
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var _KlevuMerchandising_instances, _KlevuMerchandising_viewportUtil, _KlevuMerchandising_layoutElement, _KlevuMerchandising_resultObject, _KlevuMerchandising_clickEvent, _KlevuMerchandising_initialFetch, _KlevuMerchandising_loadMore, _KlevuMerchandising_paginationChange, _KlevuMerchandising_sortChanged, _KlevuMerchandising_sizeChange, _KlevuMerchandising_applyFilters, _KlevuMerchandising_internalRenderProductSlot;
const KlevuMerchandising = class {
  constructor(hostRef) {
    registerInstance(this, hostRef);
    _KlevuMerchandising_instances.add(this);
    _KlevuMerchandising_viewportUtil.set(this, void 0);
    _KlevuMerchandising_layoutElement.set(this, void 0);
    _KlevuMerchandising_resultObject.set(this, void 0);
    _KlevuMerchandising_clickEvent.set(this, void 0);
    this.usePagination = undefined;
    this.limit = 24;
    this.category = undefined;
    this.categoryTitle = undefined;
    this.sort = undefined;
    this.filterCount = undefined;
    this.options = undefined;
    this.filterCustomOrder = undefined;
    this.sortOptions = undefined;
    this.currentViewPortSize = undefined;
    this.results = [
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
    ];
    this.manager = new FilterManager();
    this.renderProductSlot = undefined;
  }
  async connectedCallback() {
    await KlevuInit.ready();
    await __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_initialFetch).call(this);
  }
  async watchPropHandler(newValue, oldValue) {
    if (newValue !== oldValue) {
      this.manager.clear();
      await __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_initialFetch).call(this);
    }
  }
  productClickHandler(event) {
    var _a;
    if (!event.detail.product.id || !event.detail.product.itemGroupId) {
      return;
    }
    if (__classPrivateFieldGet(this, _KlevuMerchandising_clickEvent, "f")) {
      __classPrivateFieldGet(this, _KlevuMerchandising_clickEvent, "f").call(this, (_a = event.detail.product) === null || _a === void 0 ? void 0 : _a.id, this.categoryTitle, event.detail.product.itemGroupId);
    }
  }
  async componentDidLoad() {
    this.currentViewPortSize = await __classPrivateFieldGet(this, _KlevuMerchandising_viewportUtil, "f").getCurrentSize();
  }
  render() {
    var _a, _b, _c;
    const isMobile = ((_a = this.currentViewPortSize) === null || _a === void 0 ? void 0 : _a.name) === "xs" || ((_b = this.currentViewPortSize) === null || _b === void 0 ? void 0 : _b.name) === "sm";
    return (h(Host, null, h("klevu-util-viewport", { onSizeChanged: __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_sizeChange).bind(this), ref: (el) => (__classPrivateFieldSet(this, _KlevuMerchandising_viewportUtil, el, "f")) }), h("klevu-layout-results", { exportparts: globalExportedParts, ref: (el) => (__classPrivateFieldSet(this, _KlevuMerchandising_layoutElement, el, "f")) }, h("klevu-facet-list", { slot: "sidebar", accordion: true, customOrder: this.filterCustomOrder, exportparts: globalExportedParts, manager: this.manager, useApplyButton: isMobile, onKlevuApplyFilters: __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_applyFilters).bind(this) }), h("div", { slot: "header", class: "header" }, h("klevu-typography", { variant: "h1" }, this.categoryTitle), h("klevu-sort", { variant: "inline", exportparts: globalExportedParts, onKlevuSortChanged: __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_sortChanged).bind(this), options: this.sortOptions })), h("klevu-product-grid", { slot: "content" }, this.results.map((p) => (h("klevu-product", { product: p, fixedWidth: true, exportparts: parts["klevu-product"] }, __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_internalRenderProductSlot).call(this, p, "top"), __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_internalRenderProductSlot).call(this, p, "image"), __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_internalRenderProductSlot).call(this, p, "info"), __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_internalRenderProductSlot).call(this, p, "bottom"))))), h("div", { slot: "footer", class: "footer" }, this.usePagination && __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f") ? (h("klevu-pagination", { exportparts: globalExportedParts, queryResult: __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f"), onKlevuPaginationChange: __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_paginationChange).bind(this) })) : ((_c = __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f")) === null || _c === void 0 ? void 0 : _c.next) ? (h("klevu-button", { onClick: __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_loadMore).bind(this) }, "Load more")) : null))));
  }
  get el() { return getElement(this); }
  static get watchers() { return {
    "category": ["watchPropHandler"]
  }; }
};
_KlevuMerchandising_viewportUtil = new WeakMap(), _KlevuMerchandising_layoutElement = new WeakMap(), _KlevuMerchandising_resultObject = new WeakMap(), _KlevuMerchandising_clickEvent = new WeakMap(), _KlevuMerchandising_instances = new WeakSet(), _KlevuMerchandising_initialFetch = async function _KlevuMerchandising_initialFetch() {
  var _a, _b, _c, _d;
  const result = await KlevuFetch(categoryMerchandising(this.category, Object.assign({ limit: this.limit, sort: this.sort }, this.options), sendMerchandisingViewEvent(this.categoryTitle), listFilters({
    filterManager: this.manager,
    limit: this.filterCount,
    rangeFilterSettings: [
      {
        key: "klevu_price",
        minMax: true,
      },
    ],
  }), applyFilterWithManager(this.manager)));
  __classPrivateFieldSet(this, _KlevuMerchandising_resultObject, result.queriesById("categoryMerchandising"), "f");
  this.results = (_b = (_a = __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f")) === null || _a === void 0 ? void 0 : _a.records) !== null && _b !== void 0 ? _b : [];
  __classPrivateFieldSet(this, _KlevuMerchandising_clickEvent, (_d = (_c = __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f")) === null || _c === void 0 ? void 0 : _c.getCategoryMerchandisingClickSendEvent) === null || _d === void 0 ? void 0 : _d.call(_c), "f");
}, _KlevuMerchandising_loadMore = async function _KlevuMerchandising_loadMore() {
  var _a, _b, _c, _d, _e;
  if (!((_a = __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f")) === null || _a === void 0 ? void 0 : _a.next)) {
    return;
  }
  const nextResultObject = await __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f").next();
  __classPrivateFieldSet(this, _KlevuMerchandising_resultObject, nextResultObject.queriesById("categoryMerchandising"), "f");
  this.results = [...this.results, ...((_c = (_b = __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f")) === null || _b === void 0 ? void 0 : _b.records) !== null && _c !== void 0 ? _c : [])];
  __classPrivateFieldSet(this, _KlevuMerchandising_clickEvent, (_e = (_d = __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f")) === null || _d === void 0 ? void 0 : _d.getCategoryMerchandisingClickSendEvent) === null || _e === void 0 ? void 0 : _e.call(_d), "f");
}, _KlevuMerchandising_paginationChange = async function _KlevuMerchandising_paginationChange(event) {
  var _a, _b, _c, _d, _e;
  if (!((_a = __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f")) === null || _a === void 0 ? void 0 : _a.getPage)) {
    return;
  }
  const nextResultObject = await __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f").getPage({ pageIndex: event.detail - 1 });
  __classPrivateFieldSet(this, _KlevuMerchandising_resultObject, nextResultObject.queriesById("categoryMerchandising"), "f");
  this.results = (_c = (_b = __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f")) === null || _b === void 0 ? void 0 : _b.records) !== null && _c !== void 0 ? _c : [];
  __classPrivateFieldSet(this, _KlevuMerchandising_clickEvent, (_e = (_d = __classPrivateFieldGet(this, _KlevuMerchandising_resultObject, "f")) === null || _d === void 0 ? void 0 : _d.getCategoryMerchandisingClickSendEvent) === null || _e === void 0 ? void 0 : _e.call(_d), "f");
}, _KlevuMerchandising_sortChanged = async function _KlevuMerchandising_sortChanged(event) {
  this.sort = event.detail;
  await __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_initialFetch).call(this);
}, _KlevuMerchandising_sizeChange = function _KlevuMerchandising_sizeChange(event) {
  this.currentViewPortSize = event.detail;
}, _KlevuMerchandising_applyFilters = function _KlevuMerchandising_applyFilters() {
  __classPrivateFieldGet(this, _KlevuMerchandising_instances, "m", _KlevuMerchandising_initialFetch).call(this);
  __classPrivateFieldGet(this, _KlevuMerchandising_layoutElement, "f").closeDrawer();
}, _KlevuMerchandising_internalRenderProductSlot = function _KlevuMerchandising_internalRenderProductSlot(product, slot) {
  if (!this.renderProductSlot || !product) {
    return null;
  }
  const content = this.renderProductSlot(product, slot);
  if (content === null) {
    return null;
  }
  if (typeof content === "string") {
    return h("div", { slot: slot, innerHTML: content });
  }
  return (h("div", { slot: slot, ref: (el) => {
      if (!el) {
        return;
      }
      el.innerHTML = "";
      el.appendChild(content);
    } }));
};
KlevuMerchandising.style = klevuMerchandisingCss;

export { KlevuMerchandising as klevu_merchandising };

//# sourceMappingURL=klevu-merchandising.entry.js.map