{"version":3,"file":"chunks/fca421925792e2.js","mappings":"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","sources":["webpack:///./resources/js/components/shared/partner-event-filtering.ts"],"sourcesContent":["import * as $ from \"jquery\";\nimport _ from \"underscore\";\nimport url from '../../utils/url';\n\nexport default class PartnerEventFiltering  {\n  $domRoot: JQuery<HTMLElement>;\n  $searchColumn: any;\n  $filterColumn: any;\n  $contentColumn: any;\n  $loadingIcon: any;\n  customMobileBreakPoint: number;\n  params: any;\n  countryList: never[];\n  filterCategories?: { market: { groups: never[]; isCollapsed: boolean; }; eventTypXXXe: { groups: never[]; isCollapsed: boolean; }; eventProductFocus: { groups: never[]; isCollapsed: boolean; }; locations: { groups: never[]; isCollapsed: boolean; }; };\n  state?: {\n    filters: {}; page: number; name: string;\n  };\n\n  pendingStateChange: any;\n  constructor(domRoot: HTMLElement, params: any) {\n    this.$domRoot = $(domRoot);\n    this.$searchColumn = this.$domRoot.find(\".imkt-experts--search\");\n    this.$filterColumn = this.$domRoot.find(\".imkt-experts--filters\");\n    this.$contentColumn = this.$domRoot.find(\".imkt-experts--content\");\n    this.$loadingIcon = this.$domRoot.find(\".imkt-experts--loading\");\n    this.customMobileBreakPoint = 800;\n    this.params = {\n      // define default params here\n      perPageCount: 10,\n      ...params\n    };\n    this.countryList = [];\n    this.init();\n  }\n  \n  init() {\n    this.getInitialState();\n    this.render();\n    this.bindEvents();\n  }\n\n  getInitialState() {\n    var urlParams = url.getUrlParams() || {};\n    var self = this;\n    var filters = {};\n\n    this.filterCategories = {\n      market: {\n        groups: [],\n        isCollapsed: false\n      },\n      eventTypXXXe: {\n        groups: [],\n        isCollapsed: false\n      },\n      eventProductFocus: {\n        groups: [],\n        isCollapsed: false\n      },\n      locations: {\n        groups: [],\n        isCollapsed: false\n      }\n    };\n\n    // pull valid filter keys off of urlParams\n    filters = _.pick(urlParams, function (val, key) {\n      return self.filterCategories.hasOwnProperty(key);\n    });\n\n\n    var mapFilters = _.mapObject(filters, function (val) {\n      return val.split(\",\");\n    });\n    \n    this.state = {\n      // convert filters from url into arrays\n      filters: mapFilters,\n      page: parseInt(urlParams.page) || 1,\n      name: urlParams.name ? urlParams.name.replace(/\\+/g, \" \") : \"\"\n    };\n\n    // Render search form\n    var searchName = this.state.name || \"\";\n    var searchTemplate = _.template(\n      $(\"script.imkt-experts--filters-search\").html()\n    );\n    this.$searchColumn.html(\n      searchTemplate({\n        labels: this.params.labels,\n        searchName: searchName,\n      })\n    );\n  }\n\n  isAllFilter(type) {\n    var activeFilters = this.state.filters;\n\n    if (typeof activeFilters[type] !== \"undefined\") {\n      return activeFilters[type].length === 0;\n    }\n    return true;\n  }\n\n  isActiveFilter(type, value) {\n    var activeFilters = this.state.filters;\n    if (typeof activeFilters[type] !== \"undefined\") {\n      return activeFilters[type].indexOf(value) >= 0;\n    }\n    return false;\n  }\n\n  getUniqueValuesFromEventTypesArray(arrayOfStrings) {\n    let mappedArrayStringObject = new Map(\n      arrayOfStrings.map((arrValue) => {\n        const cleanedArrayValue = arrValue\n          .trim()\n          .split(\" \")\n          .filter((x) => x != \"\")\n          .join(\" \");\n        return [cleanedArrayValue.toLowerCase(), cleanedArrayValue];\n      })\n    );\n    return [...mappedArrayStringObject.values()];\n  }\n\n  // This will only work if the array looks like this [ string, string, string ]\n  // Takes in an array object, return a new array object\n  getArrayWithLowerCaseStrings(arrayObject) {\n    return arrayObject.map((stringObject) => stringObject.toLowerCase());\n  }\n\n  bindEvents() {\n    var self = this;\n\n    this.$domRoot\n      .on(\"click\", \"input[type='checkbox']\", function (e) {\n        var $target = $(e.currentTarget),\n          filterType = $target.attr(\"data-filter-type\"),\n          filterValue = $target.attr(\"data-filter-value\"),\n          filter = {};\n\n        // filterValue is a *, we're toggling all\n        if (filterValue === \"*\") {\n          filterValue = self.state.filters[filterType];\n        } else {\n          filterValue = filterValue.split(\",\");\n        }\n\n        filter[filterType] = filterValue;\n        self.action_toggleFilter(filter);\n      })\n      .on(\"click\", \".imkt-experts--pager li\", function () {\n        var pageNumber = $(this).attr(\"data-page-number\");\n        self.state.page = pageNumber;\n        $(\"html, body\").animate(\n          {\n            scrollTop: $(\"#imkt-experts\").offset().top,\n          },\n          \"slow\"\n        );\n        self.registerStateChange();\n      })\n      .on(\"click\", \".imkt-experts--filters-form h5\", function () {\n        var category = $(this).attr(\"data-filter-category\");\n\n        $(this).toggleClass(\"collapsed\");\n\n        if (category) {\n          self.filterCategories[category].isCollapsed =\n            !self.filterCategories[category].isCollapsed;\n        }\n      })\n      .on(\"change\", \"select\", function (e) {\n          var targeter = e.target.selectedOptions[0];\n          var filterType = targeter.dataset.filterType;\n          var filterValue = targeter.dataset.filterValue;\n          var filter = {};\n\n          // filterValue is a *, we're toggling all\n          if (filterValue === \"*\") {\n            filterValue = self.state.filters[filterType];\n            filter[filterType] = filterValue;\n            self.action_toggleFilter(filter);\n          } else {\n            filterValue = filterValue.split(\",\");\n            filter[filterType] = filterValue;\n            self.action_setFilter(filter);\n          }\n        }\n      );\n  }\n\n  multiSort(left, right) {\n    var sort_by_start_date = function () {\n      var value = \"startDate\";\n      var now = new Date().getTime();\n      var leftSide = new Date(left[value]).getTime();\n      var rightSide = new Date(right[value]).getTime();\n      var shouldbebefore = now - leftSide;\n      var shouldbebefore2 = now - rightSide;\n      if (shouldbebefore > 0 && shouldbebefore2 > 0) {\n        // alert('boom');\n        console.log(\"this date is in the past\");\n      } else {\n        // alert(left[value] + ' substraction '+ shouldbebefore + '+++ currentdate: '+ leftSide + \" now: \"+ now);\n        return leftSide ==\n        rightSide\n          ? 0\n          : leftSide < rightSide\n          ? -1\n          : 1;\n      }\n    };\n\n    return sort_by_start_date();\n  }\n\n  render() {\n    this.$loadingIcon.hide();\n\n    // Render filter form\n    var filterTemplate = _.template(\n      $(\"script.imkt-experts--filters-template\").html()\n    );\n    this.$filterColumn.html(\n      filterTemplate({\n        eventProductsFocus: this.params.eventProductFocus,\n        markets: this.params.market,\n        eventTypes: this.getUniqueValuesFromEventTypesArray(\n          this.params.eventType\n        ),\n        locations: this.params.locations,\n        methods: this,\n        labels: this.params.labels\n      })\n    );\n\n    // Render filtered expert list\n    var expertList = this.params.experts;\n    expertList.sort(this.multiSort);\n\n    var currentExperts = this.getListFiltered(expertList);\n    var contentTemplate;\n\n    if (currentExperts.length) {\n      var currentExpertsPaged = this.getListPaginated(currentExperts);\n\n      var currentPage =\n        this.state.page > currentExpertsPaged.length\n          ? currentExpertsPaged.length\n          : parseInt(this.state.page, 10);\n      var currentPageIndex = currentPage - 1;\n      var maxPerPage = currentExpertsPaged[currentPageIndex].length;\n\n      var pageStart = currentPageIndex * this.params.perPageCount + 1;\n      var pageEnd = pageStart + maxPerPage - 1;\n\n      // Calc pager range links\n      var pagerRange = [];\n      var pagerLinkStart = 1;\n      var pagerLinkCount = 5;\n      var pagerLinkCountMiddle = parseInt(pagerLinkCount / 2, 10);\n\n      if (currentPage > pagerLinkCount - pagerLinkCountMiddle) {\n        pagerLinkStart = currentPage - pagerLinkCountMiddle;\n      }\n\n      if (currentPage + pagerLinkCountMiddle > currentExpertsPaged.length) {\n        pagerLinkStart = currentExpertsPaged.length - pagerLinkCount + 1;\n      }\n\n      if (currentExpertsPaged.length < pagerLinkCount) {\n        pagerLinkStart = 1;\n        pagerLinkCount = currentExpertsPaged.length;\n      }\n\n      for (var i = pagerLinkStart; i < pagerLinkStart + pagerLinkCount; i++) {\n        pagerRange.push(i);\n      }\n\n      var selectedFilters = this.getSelectedFilters();\n      contentTemplate = _.template(\n        $(\"script.imkt-experts--content-template\").html()\n      );\n      this.$contentColumn.html(\n        contentTemplate({\n          experts: currentExpertsPaged[currentPageIndex],\n          expertStart: pageStart,\n          expertEnd: pageEnd,\n          expertCount: currentExperts.length,\n          currentPage: currentPage,\n          maxPages: currentExpertsPaged.length,\n          pagerRange: pagerRange,\n          tags: selectedFilters,\n          labels: this.params.labels,\n          methods: this,\n        })\n      );\n    } else {\n      // No results\n      contentTemplate = _.template(\n        $(\"script.imkt-experts--content-template\").html()\n      );\n      this.$contentColumn.html(\n        contentTemplate({\n          experts: [],\n          expertStart: 0,\n          expertEnd: 0,\n          expertCount: 0,\n          currentPage: 1,\n          maxPages: 1,\n          pagerRange: [],\n          tags: [],\n          labels: this.params.labels,\n          methods: this,\n        })\n      );\n    }\n\n    this.updateURL();\n  }\n\n  // Get a flat list of filters selected (to show as UX tags in render)\n  getSelectedFilters() {\n    var result = [];\n    var stateFilters = this.state.filters;\n    _.each(_.keys(stateFilters), function (key) {\n      if (!_.isEmpty(stateFilters[key])) {\n        var filterLabel = stateFilters[key];\n        // Some filters are true/false, so want to show the filter key instead of the value\n        if (filterLabel == 1) {\n          filterLabel = key.replace(\"is\", \"\");\n        }\n\n        result.push(filterLabel);\n      }\n    });\n    return this.flattenDeep(result);\n  }\n\n  hasRequiredInput() {\n    if (\n      this.state.name ||\n      (typeof this.state.filters[\"locations\"] !== \"undefined\" &&\n        this.state.filters[\"locations\"].length)\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  checkForMobile() {\n    if (window.innerWidth < this.customMobileBreakPoint) {\n      return true;\n    }\n  }\n\n  collapseFilters() {\n    this.$filterColumn.find(\"h5\").each(function () {\n      $(this).toggleClass(\"collapsed\");\n    });\n  }\n\n  isCategoryCollapsed(category) {\n    return this.filterCategories[category].isCollapsed;\n  }\n\n  getListPaginated(list) {\n    var pages = [];\n    var pageLength = Math.ceil(list.length / this.params.perPageCount);\n\n    for (var i = 0; i < pageLength; i++) {\n      var pageSet = list.slice(\n        i * this.params.perPageCount,\n        (i + 1) * this.params.perPageCount\n      );\n      pages.push(pageSet);\n    }\n\n    return pages;\n  }\n\n  getListFiltered(list) {\n    const matchName = (matchVal) =>\n      matchVal.trim().toLowerCase().includes(this.state.name.toLowerCase());\n\n    return _.filter(\n      list,\n      (item) => {\n        var r = true;\n        const { title, summary, partnerName, locations } = item;\n\n        // Check for a searched name in title, summary, partner name, and locations\n        if (this.state.name) {\n          if (\n            ![title, summary, partnerName].concat(locations).some(matchName)\n          ) {\n            return false;\n          }\n        }\n\n        // Check for matching filters\n        _.each(\n          _.keys(this.state.filters),\n          (key) => {\n            if (r && !_.isEmpty(this.state.filters[key])) {\n              if (\n                !_.isEmpty(this.filterCategories[key]) &&\n                this.filterCategories[key].isBoolean\n              ) {\n                // If a filter is Boolean, we need to just check the value on the list item property\n                r = item[key];\n              } else {\n                // Not a boolean filter, so check for a string match (modified to make filters AND, uncomment below to make filters OR)\n                // r = _.intersection(typeof item[key] === \"string\" ? [item[key]] : item[key], this.state.filters[key]).length;\n                var intersection = _.intersection(\n                  typeof item[key] === \"string\"\n                    ? this.getArrayWithLowerCaseStrings([item[key]])\n                    : this.getArrayWithLowerCaseStrings(item[key]),\n                  this.getArrayWithLowerCaseStrings(this.state.filters[key])\n                );\n                r = intersection.length == this.state.filters[key].length;\n                return r;\n              }\n            }\n          },\n          this\n        );\n\n        return r;\n      },\n      this\n    );\n  }\n\n  action_toggleFilter(filter) {\n    _.each(\n      _.keys(filter),\n      (key) => {\n        _.each(\n          filter[key],\n          (filterVal) => {\n            var singleFilter = {};\n            singleFilter[key] = [filterVal];\n            if (_.includes(this.state.filters[key], filterVal)) {\n              this.action_removeFilter(singleFilter);\n            } else {\n              this.action_applyFilter(singleFilter);\n            }\n          },\n          this\n        );\n      },\n      this\n    );\n  }\n\n  action_applyFilter(filter) {\n    _.each(\n      _.keys(filter),\n      (key) => {\n        this.state.filters[key] = _.union(this.state.filters[key], filter[key]);\n      },\n      this\n    );\n    this.filterChange();\n    this.registerStateChange();\n  }\n\n  action_removeFilter(filter) {\n    _.each(\n      _.keys(filter),\n      (key) => {\n        this.state.filters[key] = _.difference(\n          this.state.filters[key],\n          filter[key]\n        );\n      },\n      this\n    );\n    this.filterChange();\n    this.registerStateChange();\n  }\n\n  action_setFilter(filter) {\n    var keys = Object.keys(filter);\n    keys.forEach(key => {\n      this.state.filters[key] = filter[key];\n    })\n    this.filterChange();\n    this.registerStateChange();\n  }\n\n  registerStateChange() {\n    if (!this.pendingStateChange) {\n      this.pendingStateChange = true;\n      setTimeout(this.stateChange.bind(this), 0);\n    }\n  }\n\n  stateChange() {\n    this.render();\n    this.pendingStateChange = false;\n  }\n\n  filterChange() {\n    this.state.page = 1;\n  }\n\n  /* replacing underscore */\n  flattenDeep(array) {\n    return Array.isArray(array)\n    ? array.reduce( (a, b) => a.concat(this.flattenDeep(b)) , [])\n    : [array];\n  }\n\n  pickBy(object) {\n    const obj = {};\n    for (const key in object) {\n        if (object[key]) {\n            obj[key] = object[key];\n        }\n    }\n    return obj;\n  }\n\n  updateURL() {\n    var filters, urlParams;\n\n    if (window.history && window.history.replaceState) {\n      filters = _.clone(this.state.filters);\n      // replace any empty filters with null, which removes them from the url\n      _.each(_.keys(filters), function (key) {\n        if (!filters[key].length) {\n          filters[key] = null;\n        }\n      });\n\n      urlParams = Object.assign(filters, this.pickBy(this.state, \"page\"));\n      window.history.replaceState(\n        urlParams,\n        document.title,\n        url.addUrlParams(urlParams)\n      );\n    }\n  }\n}"],"names":["PartnerEventFiltering","domRoot","params","_classCallCheck","this","$domRoot","$","$searchColumn","find","$filterColumn","$contentColumn","$loadingIcon","customMobileBreakPoint","_objectSpread","perPageCount","countryList","init","key","value","getInitialState","render","bindEvents","filters","urlParams","url","self","filterCategories","market","groups","isCollapsed","eventTypXXXe","eventProductFocus","locations","_","val","hasOwnProperty","mapFilters","split","state","page","parseInt","name","replace","searchName","searchTemplate","html","labels","type","activeFilters","length","indexOf","arrayOfStrings","Map","map","arrValue","cleanedArrayValue","trim","filter","x","join","toLowerCase","values","arrayObject","stringObject","on","e","$target","currentTarget","filterType","attr","filterValue","action_toggleFilter","pageNumber","animate","scrollTop","offset","top","registerStateChange","category","toggleClass","targeter","target","selectedOptions","dataset","action_setFilter","left","right","now","Date","getTime","leftSide","rightSide","console","log","sort_by_start_date","hide","filterTemplate","eventProductsFocus","markets","eventTypes","getUniqueValuesFromEventTypesArray","eventType","methods","expertList","experts","sort","multiSort","contentTemplate","currentExperts","getListFiltered","currentExpertsPaged","getListPaginated","currentPage","currentPageIndex","maxPerPage","pageStart","pageEnd","pagerRange","pagerLinkStart","pagerLinkCount","pagerLinkCountMiddle","i","push","selectedFilters","getSelectedFilters","expertStart","expertEnd","expertCount","maxPages","tags","updateURL","result","stateFilters","filterLabel","flattenDeep","window","innerWidth","each","list","pages","pageLength","Math","ceil","pageSet","slice","_this","matchName","matchVal","includes","item","r","title","summary","partnerName","concat","some","isBoolean","intersection","getArrayWithLowerCaseStrings","_this2","filterVal","singleFilter","action_removeFilter","action_applyFilter","_this3","filterChange","_this4","_this5","Object","keys","forEach","pendingStateChange","setTimeout","stateChange","bind","array","_this6","Array","isArray","reduce","a","b","object","obj","history","replaceState","assign","pickBy","document"],"sourceRoot":""}