'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

const index = require('./index-7e93c7c3.js');
const parts = require('./parts-b3976bda.js');
const utils = require('./utils-4717dffd.js');
const klevuInit = require('./klevu-init-6bdf905b.js');
const filterManager = require('./filterManager-4b52c59d.js');
const applyFilterWithManager = require('./applyFilterWithManager-99cf7595.js');
const search = require('./search-75a2e649.js');
const listFilters = require('./listFilters-f6e09593.js');
const sendSearchEvent = require('./sendSearchEvent-e3a2d35d.js');
require('./isBrowser-a8464358.js');
require('./KlevuSearchSorting-3cce1bed.js');

const klevuSearchLandingPageCss = ":host{display:block}.header{display:flex;justify-content:space-between;width:100%}.footer{display:flex;justify-content:center}@media (max-width: 511px){.header{display:block}}";

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 _KlevuSearchLandingPage_instances, _KlevuSearchLandingPage_resultObject, _KlevuSearchLandingPage_clickEvent, _KlevuSearchLandingPage_viewportUtil, _KlevuSearchLandingPage_layoutElement, _KlevuSearchLandingPage_initialFetch, _KlevuSearchLandingPage_internalRenderProductSlot, _KlevuSearchLandingPage_sizeChange, _KlevuSearchLandingPage_sortChanged, _KlevuSearchLandingPage_applyFilters;
const KlevuSearchLandingPage = class {
  constructor(hostRef) {
    index.registerInstance(this, hostRef);
    _KlevuSearchLandingPage_instances.add(this);
    _KlevuSearchLandingPage_resultObject.set(this, void 0);
    _KlevuSearchLandingPage_clickEvent.set(this, void 0);
    _KlevuSearchLandingPage_viewportUtil.set(this, void 0);
    _KlevuSearchLandingPage_layoutElement.set(this, void 0);
    this.limit = 24;
    this.term = undefined;
    this.sort = undefined;
    this.filterCount = undefined;
    this.filterCustomOrder = undefined;
    this.usePagination = undefined;
    this.results = [
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
    ];
    this.manager = new filterManager.FilterManager();
    this.currentViewPortSize = undefined;
    this.renderProductSlot = undefined;
  }
  async connectedCallback() {
    await klevuInit.KlevuInit.ready();
    await __classPrivateFieldGet(this, _KlevuSearchLandingPage_instances, "m", _KlevuSearchLandingPage_initialFetch).call(this);
  }
  termChanged(oldValue, newValue) {
    __classPrivateFieldGet(this, _KlevuSearchLandingPage_instances, "m", _KlevuSearchLandingPage_initialFetch).call(this);
  }
  async loadMore() {
    var _a, _b, _c, _d, _e;
    if (!((_a = __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f")) === null || _a === void 0 ? void 0 : _a.next)) {
      return;
    }
    const nextResultObject = await __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f").next();
    __classPrivateFieldSet(this, _KlevuSearchLandingPage_resultObject, nextResultObject.queriesById("search"), "f");
    this.results = [...this.results, ...((_c = (_b = __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f")) === null || _b === void 0 ? void 0 : _b.records) !== null && _c !== void 0 ? _c : [])];
    __classPrivateFieldSet(this, _KlevuSearchLandingPage_clickEvent, (_e = (_d = __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f")).getSearchClickSendEvent) === null || _e === void 0 ? void 0 : _e.call(_d), "f");
  }
  async paginationChange(event) {
    var _a, _b, _c, _d, _e;
    if (!((_a = __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f")) === null || _a === void 0 ? void 0 : _a.getPage)) {
      return;
    }
    const nextResultObject = await __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f").getPage({ pageIndex: event.detail - 1 });
    __classPrivateFieldSet(this, _KlevuSearchLandingPage_resultObject, nextResultObject.queriesById("search"), "f");
    this.results = (_c = (_b = __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f")) === null || _b === void 0 ? void 0 : _b.records) !== null && _c !== void 0 ? _c : [];
    __classPrivateFieldSet(this, _KlevuSearchLandingPage_clickEvent, (_e = (_d = __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f")) === null || _d === void 0 ? void 0 : _d.getSearchClickSendEvent) === null || _e === void 0 ? void 0 : _e.call(_d), "f");
  }
  productClickHandler(event) {
    if (__classPrivateFieldGet(this, _KlevuSearchLandingPage_clickEvent, "f") && event.detail.product.id) {
      __classPrivateFieldGet(this, _KlevuSearchLandingPage_clickEvent, "f").call(this, event.detail.product.id, event.detail.product.itemGroupId || event.detail.product.id);
    }
  }
  filterSelectionUpdate() {
    __classPrivateFieldGet(this, _KlevuSearchLandingPage_instances, "m", _KlevuSearchLandingPage_initialFetch).call(this);
  }
  async componentDidLoad() {
    this.currentViewPortSize = await __classPrivateFieldGet(this, _KlevuSearchLandingPage_viewportUtil, "f").getCurrentSize();
  }
  render() {
    var _a, _b, _c, _d;
    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 (index.h(index.Host, null, index.h("klevu-util-viewport", { onSizeChanged: __classPrivateFieldGet(this, _KlevuSearchLandingPage_instances, "m", _KlevuSearchLandingPage_sizeChange).bind(this), ref: (el) => (__classPrivateFieldSet(this, _KlevuSearchLandingPage_viewportUtil, el, "f")) }), index.h("klevu-layout-results", { exportparts: utils.globalExportedParts, ref: (el) => (__classPrivateFieldSet(this, _KlevuSearchLandingPage_layoutElement, el, "f")) }, index.h("klevu-facet-list", { slot: "sidebar", customOrder: this.filterCustomOrder, exportparts: utils.globalExportedParts, manager: this.manager, useApplyButton: isMobile, onKlevuApplyFilters: __classPrivateFieldGet(this, _KlevuSearchLandingPage_instances, "m", _KlevuSearchLandingPage_applyFilters).bind(this) }), index.h("div", { slot: "header", class: "header" }, index.h("klevu-typography", { slot: "header", variant: "h1" }, "Searching term \"", this.term, "\""), index.h("klevu-sort", { variant: "inline", exportparts: utils.globalExportedParts, onKlevuSortChanged: __classPrivateFieldGet(this, _KlevuSearchLandingPage_instances, "m", _KlevuSearchLandingPage_sortChanged).bind(this) })), index.h("klevu-product-grid", { slot: "content" }, (_c = this.results) === null || _c === void 0 ? void 0 : _c.map((p) => (index.h("klevu-product", { product: p, fixedWidth: true, exportparts: parts.parts["klevu-product"] }, __classPrivateFieldGet(this, _KlevuSearchLandingPage_instances, "m", _KlevuSearchLandingPage_internalRenderProductSlot).call(this, p, "top"), __classPrivateFieldGet(this, _KlevuSearchLandingPage_instances, "m", _KlevuSearchLandingPage_internalRenderProductSlot).call(this, p, "image"), __classPrivateFieldGet(this, _KlevuSearchLandingPage_instances, "m", _KlevuSearchLandingPage_internalRenderProductSlot).call(this, p, "info"), __classPrivateFieldGet(this, _KlevuSearchLandingPage_instances, "m", _KlevuSearchLandingPage_internalRenderProductSlot).call(this, p, "bottom"))))), index.h("div", { slot: "footer", class: "footer" }, this.usePagination && __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f") ? (index.h("klevu-pagination", { queryResult: __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f"), onKlevuPaginationChange: this.paginationChange.bind(this) })) : ((_d = __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f")) === null || _d === void 0 ? void 0 : _d.next) ? (index.h("klevu-button", { onClick: this.loadMore.bind(this) }, "Load more")) : null))));
  }
  static get watchers() { return {
    "term": ["termChanged"]
  }; }
};
_KlevuSearchLandingPage_resultObject = new WeakMap(), _KlevuSearchLandingPage_clickEvent = new WeakMap(), _KlevuSearchLandingPage_viewportUtil = new WeakMap(), _KlevuSearchLandingPage_layoutElement = new WeakMap(), _KlevuSearchLandingPage_instances = new WeakSet(), _KlevuSearchLandingPage_initialFetch = async function _KlevuSearchLandingPage_initialFetch() {
  var _a, _b, _c, _d;
  const result = await applyFilterWithManager.KlevuFetch(search.search(this.term, { limit: this.limit, sort: this.sort }, sendSearchEvent.sendSearchEvent(), listFilters.listFilters({
    filterManager: this.manager,
    limit: this.filterCount,
    rangeFilterSettings: [
      {
        key: "klevu_price",
        minMax: true,
      },
    ],
  }), applyFilterWithManager.applyFilterWithManager(this.manager)));
  __classPrivateFieldSet(this, _KlevuSearchLandingPage_resultObject, result.queriesById("search"), "f");
  this.results = (_b = (_a = __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f")) === null || _a === void 0 ? void 0 : _a.records) !== null && _b !== void 0 ? _b : [];
  __classPrivateFieldSet(this, _KlevuSearchLandingPage_clickEvent, (_d = (_c = __classPrivateFieldGet(this, _KlevuSearchLandingPage_resultObject, "f")) === null || _c === void 0 ? void 0 : _c.getSearchClickSendEvent) === null || _d === void 0 ? void 0 : _d.call(_c), "f");
}, _KlevuSearchLandingPage_internalRenderProductSlot = function _KlevuSearchLandingPage_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 index.h("div", { slot: slot, innerHTML: content });
  }
  return (index.h("div", { slot: slot, ref: (el) => {
      if (!el) {
        return;
      }
      el.innerHTML = "";
      el.appendChild(content);
    } }));
}, _KlevuSearchLandingPage_sizeChange = function _KlevuSearchLandingPage_sizeChange(event) {
  this.currentViewPortSize = event.detail;
}, _KlevuSearchLandingPage_sortChanged = async function _KlevuSearchLandingPage_sortChanged(event) {
  this.sort = event.detail;
  await __classPrivateFieldGet(this, _KlevuSearchLandingPage_instances, "m", _KlevuSearchLandingPage_initialFetch).call(this);
}, _KlevuSearchLandingPage_applyFilters = function _KlevuSearchLandingPage_applyFilters() {
  __classPrivateFieldGet(this, _KlevuSearchLandingPage_instances, "m", _KlevuSearchLandingPage_initialFetch).call(this);
  __classPrivateFieldGet(this, _KlevuSearchLandingPage_layoutElement, "f").closeDrawer();
};
KlevuSearchLandingPage.style = klevuSearchLandingPageCss;

exports.klevu_search_landing_page = KlevuSearchLandingPage;

//# sourceMappingURL=klevu-search-landing-page.cjs.entry.js.map