{"version":3,"sources":["webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/update-dom.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/refinements/refinements.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/refinements/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/updateGtmListingFiltersEvents.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/updateGtmListingSortEvents.js"],"names":["updateDom","content","selector","updates","querySelector","element","document","innerHTML","_initializedModules","childNodes","length","window","location","reload","JS_HOOK_REFINEMENTS_FILTER","JS_HOOK_REFINEMENTS_BAR","JS_HOOK_REFINEMENT_UPDATE","JS_HOOK_PAGED_NAVIGATION","JS_HOOK_SCROLL_LIST_MODAL","MODAL_ID","Refinements","constructor","refinements","refinementFilters","url","refinementUpdates","querySelectorAll","pagedNavigationId","dataset","id","bindEvents","updateModal","updateInteractiveElements","interactiveElements","Object","keys","forEach","rebindEvents","Events","$trigger","initModules","scrollTop","scrollList","moduleInit","async","viewID","pagedNavigationViewID","data","updateStaticElements","hookName","getAttribute","setTimeout","getDataFromFilterSuccess","response","DOMParser","parseFromString","body","filterId","filterList","getElementById","filterScrollListModal","updateGtmListingFiltersEvents","updateGtmListingSortEvents","ScrollTo","scrollTo","getDataFromFilter","pushState","query","newUrl","queryString","parseUrl","bodyObj","selectedUrl","API","get","then","catch","$on","e","animate","_","state","href","JS_HOOK_PAGED_REFINEMENT_NAVIGATION","JS_HOOK_REFINEMENT_FILTER","JS_HOOK_REFINEMENT_VALUE","refinementNavigation","el","addEventListener","value","innerText","label","section","action","event","JS_HOOK_REFINEMENT_SORT","refinementSort","refinementSortSelect","refinementSortButtons","refinementSortButton","ferinementSortButtonLabel","replace","refinementSortSelectIndex","selectedIndex","selectedRefinement","options","selectedRefinementLabel"],"mappings":"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","file":"js/Refinements.js","sourcesContent":["/**\n * Update DOM elements with Fetch results\n *\n * @param {Object} content - DOM element\n * @param {string} selector - DOM element to look up in the content\n * @return {undefined}\n */\nconst updateDom = function(content, selector) {\n  const updates = content.querySelector(selector);\n  const element = document.querySelector(selector);\n\n  if(!element) return;\n  element.innerHTML = '';\n  element._initializedModules = []; // Discard initialized modules to allow reloading\n  if (updates) {\n    element.innerHTML = updates.innerHTML;\n  } else if (!updates && selector === '[js-hook-refinement-update=refinement-modal]' && !element.childNodes.length) {\n    window.location.reload();\n  }\n};\nexport default updateDom;\n","import queryString from 'query-string';\nimport moduleInit from '@utilities/module-init';\nimport Events from '@utilities/events';\nimport API from '@utilities/api';\nimport updateDom from '@utilities/update-dom';\nimport updateGtmListingFiltersEvents from '@utilities/updateGtmListingFiltersEvents';\nimport updateGtmListingSortEvents from '@utilities/updateGtmListingSortEvents';\nimport ScrollTo from \"@utilities/scroll-to\";\n\nconst JS_HOOK_REFINEMENTS_FILTER = '[js-hook-refinement-filter-context]';\nconst JS_HOOK_REFINEMENTS_BAR = 'js-hook-refinement-bar';\nconst JS_HOOK_REFINEMENT_UPDATE = 'js-hook-refinement-update';\nconst JS_HOOK_PAGED_NAVIGATION = '[js-hook-paged-navigation]';\nconst JS_HOOK_SCROLL_LIST_MODAL = '[js-hook-refinement-scroll-modal]';\n\nconst MODAL_ID = 'refinement-modal';\n\nclass Refinements {\n  constructor(element) {\n    this.refinements = element;\n    this.refinementFilters = document.querySelector(JS_HOOK_REFINEMENTS_FILTER);\n    this.url = '';\n    this.refinementUpdates = [...document.querySelectorAll(`[${JS_HOOK_REFINEMENT_UPDATE}]`)];\n    this.pagedNavigationId = this.refinements.querySelector(JS_HOOK_PAGED_NAVIGATION)?.dataset.id;\n\n    this.bindEvents();\n  }\n\n  /**\n   * Update the DOM of chips\n   * @param {HTMLElement} content - DOM element\n   */\n  static updateModal(content) {\n    updateDom(content, JS_HOOK_REFINEMENTS_BAR);\n  }\n\n  static updateInteractiveElements(content) {\n    const interactiveElements = {\n      [JS_HOOK_REFINEMENTS_BAR]: Refinements.updateModal,\n    };\n\n    Object.keys(interactiveElements).forEach((selector) => {\n      interactiveElements[selector](content);\n    });\n  }\n\n  static rebindEvents() {\n    // Fire Event to Update Images\n    Events.$trigger('lazyimage::update');\n\n    // Bind All Events\n    Events.$trigger('events::dom-reinit');\n\n    // Bind load buttons\n    Events.$trigger('product-grid::rebind-events');\n  }\n\n  initModules(scrollTop = null, scrollList = null) {\n\n    moduleInit.async('[js-hook-dropdown]', () =>\n      import(/* webpackChunkName: \"js/Dropdown\" */ '@components/dropdown'),\n    );\n\n    moduleInit.async('[js-hook-refinement-filter]', () =>\n      import(/* webpackChunkName: \"js/RefinementFilter\" */ '@components/refinement-filter'),\n    );\n\n    moduleInit.async('[js-hook-paged-navigation]',\n      () =>\n        import(/* webpackChunkName: \"js/PagedNavigation\" */ '@components/paged-navigation'),\n      {\n        viewID: this.pagedNavigationViewID,\n        scrollTop,\n        scrollList\n      }\n    );\n\n    moduleInit.async('[js-hook-sort-select-box]', () =>\n      import(/* webpackChunkName: \"js/SortSelectBox\" */ '@components/sort-select-box'),\n    );\n\n    moduleInit.async('[js-hook-pagination]', () =>\n      import(/* webpackChunkName: \"js/Pagination\" */ '@components/pagination'),\n    );\n\n    moduleInit.async('[js-hook-custom-select-box]', () =>\n      import(/* webpackChunkName: \"js/CustomSelectBox\" */ '@components/custom-select-box'),\n    );\n\n    moduleInit.async('[js-hook-pagination]', () =>\n      import(/* webpackChunkName: \"js/Pagination\" */ '@components/pagination'),\n    );\n\n    // Bind Modal Events\n    Events.$trigger('modal::bind-buttons', { data: { id: MODAL_ID } });\n  }\n\n  /**\n   * Replace static DOM elements\n   *\n   * @param {Object} content - DOM element\n   */\n  updateStaticElements(content) {\n    this.refinementUpdates.forEach((selector) => {\n      const hookName = selector.getAttribute(JS_HOOK_REFINEMENT_UPDATE);\n\n      setTimeout (() => {\n        updateDom(content, `[${JS_HOOK_REFINEMENT_UPDATE}=${hookName}]`);\n      }, 0); // don't ask, weird fix for weird safari iphone bug\n    });\n\n    Events.$trigger('listing::new-page', {});\n  }\n\n  /**\n   * Parse Axios results and updated select DOM elements\n   *\n   * @param {string} response - Axios response HTML code\n   */\n  getDataFromFilterSuccess(response) {\n    Events.$trigger('loader::hide');\n\n    // Parse using DOMParser\n    const content = new DOMParser().parseFromString(response, 'text/html').body;\n\n    // Update static DOM elements that do not have interaction\n    this.updateStaticElements(content);\n\n    // Update interactive DOM elements\n    Refinements.updateInteractiveElements(content);\n\n    setTimeout (() => {\n      // Scroll if needed\n      if (this.filterId && (this.scrollTop !== null)) {\n        const filterList = document.getElementById(this.filterId);\n        const filterScrollListModal = filterList ? filterList.querySelector(JS_HOOK_SCROLL_LIST_MODAL) : null;\n\n        if (filterList && filterScrollListModal) {\n          this.initModules(this.scrollTop, filterScrollListModal);\n        } else {\n          this.initModules();\n        }\n      } else {\n        this.initModules();\n      }\n\n      //   Bind events again to new DOM elements\n      Refinements.rebindEvents();\n\n      // Updates Gtm Listing Filters Events (GTM listing_filter event)\n      updateGtmListingFiltersEvents();\n\n      // Updates Gtm Listing Sort Events (GTM listing_sort event)\n      updateGtmListingSortEvents();\n\n    }, 0); // don't ask, weird fix for weird safari iphone bug\n\n    if (this.scrollTop) {\n      ScrollTo.scrollTo(this.refinementFilters, 500, 150);\n    }\n  }\n\n  /**\n   * Retrieve data from filter\n   * @param {Object} data - { url, params } for API\n   * @param pushState boolean - Determines if history is replaced or pushed\n   */\n  getDataFromFilter(data, pushState) {\n    if (!data) return;\n    Events.$trigger('loader::show');\n\n    this.url = data.url;\n\n    const { query, url: newUrl } = queryString.parseUrl(this.url);\n    const bodyObj = {\n      selectedUrl: this.url,\n      ...query,\n    };\n\n    this.filterId = data.filterId;\n\n    this.scrollTop = data.scrollTop;\n\n    API.get(newUrl, bodyObj)\n      .then((response) => this.getDataFromFilterSuccess(response.data, pushState))\n      .catch(() => Events.$trigger('loader::hide'));\n  }\n\n  /**\n   * Bind all general events\n   */\n  bindEvents() {\n    Events.$on(`pagedNavigation[${this.pagedNavigationId}]::changedView`, (e, data) => {\n      this.pagedNavigationViewID = data.viewID;\n    });\n\n    Events.$on(`modal[${MODAL_ID}]::open`, () => {\n      Events.$trigger(`pagedNavigation[${this.pagedNavigationId}]::changeView`, {\n        data: {\n          viewID: 'refinement-landing',\n          animate: false\n        }\n\n      });\n    });\n\n    Events.$on('history::refinements-update', (_, data) => {\n      const url = data?.state?.url || window.location.href\n      const scrollTop = data?.state?.scrollTop;\n      const filterId = data?.state?.filterId;\n\n      this.getDataFromFilter({url, scrollTop, filterId}, false)\n    })\n  }\n}\n\nexport default Refinements;\n","import Refinements from './refinements';\n\nexport default Refinements;\n","// Imports\nimport Events from '@utilities/events';\n\n/**\n * Update Gtm Listing Filter events\n *\n * @return {Void}\n */\nconst updateGtmListingFiltersEvents = function() {\n  // constants\n  const JS_HOOK_PAGED_REFINEMENT_NAVIGATION = '[js-hook-paged-refinement-navigation]';\n  const JS_HOOK_REFINEMENT_FILTER = '[js-hook-refinement-filter]';\n  const JS_HOOK_REFINEMENT_VALUE = '[js-hook-refinement-value]';\n  const refinementNavigation = document.querySelector(JS_HOOK_PAGED_REFINEMENT_NAVIGATION);\n\n  if (refinementNavigation) {\n    const refinementFilters = [...refinementNavigation.querySelectorAll(JS_HOOK_REFINEMENT_FILTER)];\n\n    if (refinementFilters) {\n      refinementFilters.forEach((el) => {\n        el.addEventListener('click', () => {\n          const value = el.querySelector(JS_HOOK_REFINEMENT_VALUE) ? el.querySelector(JS_HOOK_REFINEMENT_VALUE).innerText : null;\n          let label = el.dataset.section;\n          let action = el.getAttribute('aria-checked') ? el.getAttribute('aria-checked') : null;\n\n          // data normalization\n          switch (label) {\n            case 'generalCover':{\n              label = 'color';\n              break;\n            }\n            case 'colorCode':{\n              label = 'color';\n              break;\n            }\n            case 'designers':{\n              label = 'designer';\n              break;\n            }\n            case 'By Price':{\n              label = 'price';\n              break;\n            }\n            default:\n          }\n\n          if (action) action = action === 'true' ? 'remove' : 'add';\n\n          Events.$trigger('gtm::push', {\n            data: {\n              event: 'filter',\n              label,\n              value,\n              action\n            }\n          });\n        });\n      });\n    }\n  }\n};\n\nexport default updateGtmListingFiltersEvents;\n","// Imports\nimport Events from '@utilities/events';\n\n/**\n * Update Gtm Listing Sort events\n *\n * @return {Void}\n */\nconst updateGtmListingSortEvents = function() {\n  // constants\n  const JS_HOOK_REFINEMENT_SORT = '[js-hook-refinement-sort]';\n  const refinementSort = document.querySelector(JS_HOOK_REFINEMENT_SORT);\n\n  if (refinementSort) {\n    const refinementSortSelect = refinementSort.querySelector('#sort-order');\n    const refinementSortButtons = [...refinementSort.querySelectorAll('.csb__button')];\n\n    refinementSortButtons.forEach((refinementSortButton) => {\n      const ferinementSortButtonLabel = refinementSortButton.querySelector('.csb__button-label') ? refinementSortButton.querySelector('.csb__button-label').innerText.replace(/\\n/g, '') : null;\n\n      refinementSortButton.addEventListener('click', () => {\n        Events.$trigger('gtm::push', {\n          data: {\n            event: 'sort',\n            label: ferinementSortButtonLabel\n          }\n        });\n      })\n    });\n\n    refinementSortSelect.addEventListener('change', () => {\n      const refinementSortSelectIndex = refinementSortSelect.selectedIndex;\n      const selectedRefinement = refinementSortSelect.options[refinementSortSelectIndex];\n      const selectedRefinementLabel = selectedRefinement.innerText.replace(/\\n/g, '');\n\n      Events.$trigger('gtm::push', {\n        data: {\n          event: 'sort',\n          label: selectedRefinementLabel\n        }\n      });\n    });\n  }\n};\n\nexport default updateGtmListingSortEvents;\n"],"sourceRoot":""}