{"version":3,"sources":["search-webapp.js"],"names":["$","console","this","log","search","fn","options","each","settings","extend","formClass","formInputClass","formSpinnerClass","formButtonSubmitClass","formButtonClearClass","formInputMinLength","typeaheadClass","typeaheadTermsClass","typeaheadPagesClass","typeaheadDownloadsClass","typeaheadProductsClass","typeaheadInputMinLength","typeaheadInputDelay","resultClass","resultTotalClass","resultSearchValueClass","resultFacetListClass","resultFacetAllClass","resultItemListClass","resultListItemClass","resultItemListLimitClass","resultItemListPaginationClass","resultFacetListDelay","cn","$pluginContainer","q","$form","$formInput","formInputTimeout","$formButton","$formButtonClear","$formSpinner","typeahead","$typeaheadContainer","$typeaheadTermsContainer","$typeaheadPagesContainer","$typeaheadDownloadsContainer","$typeaheadProductsContainer","itemList","facetList","facetListTimeout","$resultContainer","$resultTotalContainer","$resultSearchValueContainer","$resultFacetAllButton","$resultFacetListContainer","$resultItemListContainer","$resultItemListLimitContainer","$resultItemListPaginationContainer","setUrlParam","value","url","URL","window","location","searchParams","set","history","replaceState","searchConnector","previewClient","setCmsPreviewClient","data","setTemplate","setCmsLanguage","setCmsNativeLanguage","setPimLanguage","find","on","event","preventDefault","formInputValue","val","clearTimeout","length","setTimeout","setTypeaheadValue","trigger","getTemplate","urlPageSearch","urls","pages","resultPage","urlPageDf","df","urlMaterialSymbols","media","materialSymbols","termsHtml","pagesHtml","downloadsHtml","productsHtml","get","dispatchEvent","Event","view","done","response","terms","parseHTML","linkHref","attr","svgHref","downloads","products","html","always","formInputName","encodeURIComponent","silent","setSearchFacetName","removeClass","slice","remove","append","text","getSearchValue","total","getSearchFilterQueryList","parseInt","addClass","getSearchListOffset","setSearchListOffset","pagination","hasClass","setSearchFilterQueryList","setSearchValue","facetName","facetValue","addSearchFilterQuery","setSearchListLimit","getUrlVars","connection","host","api","ws01","path","dataType","jsonp","debug","template","cmsLanguage","cmsNativeLanguage","pimLanguage","cmsPreviewClient","typeaheadValue","searchValue","searchFacetName","searchFilterQueryList","searchListLimit","searchListOffset","searchListRows","getConnection","setConnection","getDebug","setDebug","getCmsLanguage","getCmsNativeLanguage","getPimLanguage","getCmsPreviewClient","getTypeaheadValue","getSearchFacetName","key","removeSearchFilterQuery","getSearchListLimit","action","searchVars","consoleStr","optionKey","optionValue","isPlainObject","request","ajax","cache","connector","deferred","Deferred","resolve","fail","reject","promise","URLSearchParams","jQuery"],"mappings":"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","file":"../search.min.js","sourcesContent":["/**\n * Search\n * based on jQuery\n *\n * Author: JoergP\n * Copyright 2018 Beckhoff Automation GmbH & Co. KG\n *\n * Created: 22.08.2018\n *\n */\n\n/* global previewClient searchVars urls */\n\n$(function () {\n  if (typeof console === 'undefined') {\n    this.console = { log: function () {} };\n  }\n\n  $('[data-plugin=\"search\"]').search();\n});\n\n(function ($) {\n  $.fn.search = function (options) {\n    return this.each(function () {\n      const settings = $.extend(\n        {\n          // form settings\n          formClass: 'search__form',\n          formInputClass: 'search__input',\n          formSpinnerClass: 'search__input-spinner',\n          formButtonSubmitClass: 'search__button',\n          formButtonClearClass: 'search__input-clear-button',\n          formInputMinLength: 0,\n\n          // typeahead settings\n          typeaheadClass: 'search__typeahead',\n          typeaheadTermsClass: 'search__typeahead-terms',\n          typeaheadPagesClass: 'search__typeahead-pages',\n          typeaheadDownloadsClass: 'search__typeahead-downloads',\n          typeaheadProductsClass: 'search__typeahead-products',\n          typeaheadInputMinLength: 0,\n          typeaheadInputDelay: 600,\n\n          // search page settings\n          resultClass: 'search__results',\n          resultTotalClass: 'search__results-total',\n          resultSearchValueClass: 'search__search-value',\n          resultFacetListClass: 'search__facet-list',\n          resultFacetAllClass: 'search__facet-button-all',\n          resultItemListClass: 'search__item-list',\n          resultListItemClass: 'search__list-item',\n          resultItemListLimitClass: 'search__item-list-limit',\n          resultItemListPaginationClass: 'search__item-list-pagination',\n          resultFacetListDelay: 400,\n        },\n        options,\n      );\n\n      let cn, $pluginContainer, q;\n      let $form,\n        $formInput,\n        formInputTimeout,\n        $formButton,\n        $formButtonClear,\n        $formSpinner,\n        typeahead,\n        $typeaheadContainer,\n        $typeaheadTermsContainer,\n        $typeaheadPagesContainer,\n        $typeaheadDownloadsContainer,\n        $typeaheadProductsContainer;\n      let itemList,\n        facetList,\n        facetListTimeout,\n        $resultContainer,\n        $resultTotalContainer,\n        $resultSearchValueContainer,\n        $resultFacetAllButton,\n        $resultFacetListContainer,\n        $resultItemListContainer,\n        $resultItemListLimitContainer,\n        $resultItemListPaginationContainer;\n\n      function setUrlParam(value) {\n        const url = new URL(window.location);\n        url.searchParams.set('q', value);\n        history.replaceState(null, '', url);\n      }\n\n      $pluginContainer = $(this);\n\n      //\n      // connector initialization\n      //\n      cn = new searchConnector();\n\n      // connector url for development cms\n      if (typeof previewClient !== 'undefined' && previewClient !== '') {\n        cn.setCmsPreviewClient(previewClient);\n      }\n\n      if (typeof $pluginContainer.data('template') !== 'undefined') {\n        cn.setTemplate($pluginContainer.data('template'));\n      }\n\n      if (typeof $pluginContainer.data('cms-language') !== 'undefined') {\n        cn.setCmsLanguage($pluginContainer.data('cms-language'));\n      }\n\n      if (typeof $pluginContainer.data('cms-native-language') !== 'undefined') {\n        cn.setCmsNativeLanguage($pluginContainer.data('cms-native-language'));\n      }\n\n      if (typeof $pluginContainer.data('pim-language') !== 'undefined') {\n        cn.setPimLanguage($pluginContainer.data('pim-language'));\n      } else {\n        cn.setPimLanguage('de');\n      }\n\n      //\n      // global objects\n      //\n      $form = $pluginContainer.find('.' + settings.formClass);\n      $formInput = $pluginContainer.find('.' + settings.formInputClass);\n      $formButton = $pluginContainer.find('.' + settings.formButtonSubmitClass);\n      $formButtonClear = $pluginContainer.find('.' + settings.formButtonClearClass);\n      $formSpinner = $pluginContainer.find('.' + settings.formSpinnerClass);\n      $typeaheadContainer = $pluginContainer.find('.' + settings.typeaheadClass);\n      $typeaheadTermsContainer = $pluginContainer.find('.' + settings.typeaheadTermsClass);\n\n      //\n      // global events\n      //\n      $formInput.on('input', function (event) {\n        event.preventDefault();\n\n        const formInputValue = $formInput.val();\n\n        clearTimeout(formInputTimeout);\n\n        // show typeahead if input value is greater than 'typeaheadInputMinLength'\n        if (formInputValue.length > settings.typeaheadInputMinLength) {\n          formInputTimeout = setTimeout(function () {\n            cn.setTypeaheadValue(formInputValue);\n            typeahead();\n          }, settings.typeaheadInputDelay);\n        }\n      });\n\n      $formButton.on('click', function (event) {\n        event.preventDefault();\n        $form.trigger('submit');\n      });\n\n      //\n      // template flyout typeahead\n      //\n      if (cn.getTemplate() == 'flyout') {\n        $typeaheadPagesContainer = $pluginContainer.find('.' + settings.typeaheadPagesClass);\n        $typeaheadProductsContainer = $pluginContainer.find('.' + settings.typeaheadProductsClass);\n        $typeaheadDownloadsContainer = $pluginContainer.find('.' + settings.typeaheadDownloadsClass);\n\n        //\n        // template output methods\n        //\n        typeahead = function () {\n          const urlPageSearch = urls?.pages?.search?.resultPage ?? '';\n          const urlPageDf = urls?.pages?.df?.resultPage ?? '';\n          const urlMaterialSymbols = urls?.media?.materialSymbols ?? '';\n          let termsHtml = '';\n          let pagesHtml = '';\n          let downloadsHtml = '';\n          let productsHtml = '';\n\n          // replace icon with spinner while ajax is loading\n          $formSpinner.get(0).dispatchEvent(new Event('showSearchInputSpinner'));\n\n          cn.view('typeahead')\n            .done(function (response) {\n              // set content for typeahead terms\n              if (response?.view?.terms && urlPageSearch && urlMaterialSymbols) {\n                // inject search page url and material symbols url\n                termsHtml = $.parseHTML(response.view.terms);\n                $.each(termsHtml, function () {\n                  let linkHref = $('a:first-child', this).attr('href');\n                  linkHref = urls.pages.search.resultPage + linkHref;\n                  $('a:first-child', this).attr('href', linkHref);\n\n                  let svgHref = $('use:first-child', this).attr('href');\n                  svgHref = urls.media.materialSymbols + svgHref;\n                  $('use:first-child', this).attr('href', svgHref);\n                });\n              }\n\n              // set content for typeahead pages\n              if (response?.view?.pages) {\n                pagesHtml = $.parseHTML(response.view.pages);\n              }\n\n              // set content for typeahead downloads\n              if (response?.view?.downloads && urlPageDf && urlMaterialSymbols) {\n                // inject df page url and material symbols url\n                downloadsHtml = $.parseHTML(response.view.downloads);\n                $.each(downloadsHtml, function () {\n                  let linkHref = $('a:first-child', this).attr('href');\n                  linkHref = urls.pages.df.resultPage + linkHref;\n                  $('a:first-child', this).attr('href', linkHref);\n\n                  let svgHref = $('use:first-child', this).attr('href');\n                  svgHref = urls.media.materialSymbols + svgHref;\n                  $('use:first-child', this).attr('href', svgHref);\n                });\n              }\n\n              // set content for typeahead products\n              if (response?.view?.products) {\n                productsHtml = $.parseHTML(response.view.products);\n              }\n\n              //\n              $typeaheadTermsContainer.html(termsHtml);\n              $typeaheadPagesContainer.html(pagesHtml);\n              $typeaheadDownloadsContainer.html(downloadsHtml);\n              $typeaheadProductsContainer.html(productsHtml);\n\n              // show typeahead container\n              if (termsHtml != '' || pagesHtml != '' || downloadsHtml != '' || productsHtml != '') {\n                $typeaheadContainer.get(0).dispatchEvent(new Event('showSearchTypeahead'));\n              }\n            })\n            .always(function () {\n              // replace spinner with icon after ajax finished loading\n              $formSpinner.get(0).dispatchEvent(new Event('hideSearchInputSpinner'));\n            });\n        };\n\n        //\n        // template events\n        //\n        $form.on('submit', function (event) {\n          event.preventDefault();\n\n          const formInputName = $formInput.attr('name');\n          const formInputValue = $formInput.val();\n\n          // submit form if input value is longer than 'formInputMinLength', else show popover\n          if (formInputValue.length > settings.formInputMinLength) {\n            window.location = $form.attr('action') + '?' + formInputName + '=' + encodeURIComponent(formInputValue);\n          }\n        });\n\n        //\n        // template initialization\n        //\n\n        // init input field\n        $formInput.val('');\n      }\n\n      //\n      // template search result\n      //\n      else if (cn.getTemplate() == 'result') {\n        $resultContainer = $pluginContainer.find('.' + settings.resultClass);\n        $resultTotalContainer = $pluginContainer.find('.' + settings.resultTotalClass);\n        $resultSearchValueContainer = $pluginContainer.find('.' + settings.resultSearchValueClass);\n        $resultFacetListContainer = $pluginContainer.find('.' + settings.resultFacetListClass);\n        $resultItemListContainer = $pluginContainer.find('.' + settings.resultItemListClass);\n        $resultItemListLimitContainer = $pluginContainer.find('.' + settings.resultItemListLimitClass);\n        $resultItemListPaginationContainer = $pluginContainer.find('.' + settings.resultItemListPaginationClass);\n        $resultFacetAllButton = $pluginContainer.find('.' + settings.resultFacetAllClass);\n\n        //\n        // template output methods\n        //\n        typeahead = function (silent = false) {\n          const urlMaterialSymbols = urls?.media?.materialSymbols ?? '';\n\n          // replace icon with spinner while ajax is loading\n          if (!silent) {\n            $formSpinner.get(0).dispatchEvent(new Event('showSearchInputSpinner'));\n          }\n\n          cn.view('typeahead')\n            .done(function (response) {\n              let termsHtml = '';\n\n              if (response?.view && urlMaterialSymbols) {\n                // inject material symbols url\n                termsHtml = $.parseHTML(response.view);\n                $.each(termsHtml, function () {\n                  let svgHref = $('use:first-child', this).attr('href');\n                  svgHref = urls.media.materialSymbols + svgHref;\n                  $('use:first-child', this).attr('href', svgHref);\n                });\n              }\n\n              $typeaheadTermsContainer.html(termsHtml);\n\n              // show typeahead container\n              if (!silent && termsHtml) {\n                $typeaheadContainer.get(0).dispatchEvent(new Event('showSearchTypeahead'));\n              }\n            })\n            .always(function () {\n              // replace spinner with icon after ajax finished loading\n              if (!silent) {\n                $formSpinner.get(0).dispatchEvent(new Event('hideSearchInputSpinner'));\n              }\n            });\n        };\n\n        facetList = function () {\n          cn.setSearchFacetName($resultFacetListContainer.data('facet-name'));\n\n          cn.view('facetList').done(function (response) {\n            // show result container\n            $resultItemListContainer.removeClass('d-none');\n\n            if (response && typeof response.view !== 'undefined') {\n              if ($('li', $resultFacetListContainer).length > 1) {\n                $('li', $resultFacetListContainer).slice(1).remove();\n              }\n\n              $resultFacetListContainer.append(response.view);\n            }\n          });\n        };\n\n        itemList = function () {\n          clearTimeout(formInputTimeout);\n\n          cn.view('itemList').done(function (response) {\n            // show result container\n            $resultContainer.removeClass('d-none');\n\n            // search value\n            $resultSearchValueContainer.text(cn.getSearchValue()).html();\n\n            // total\n            if (response && typeof response.total !== 'undefined' && !cn.getSearchFilterQueryList()) {\n              $resultTotalContainer.html(response.total);\n\n              if (parseInt(response.total) > 0) {\n                $resultFacetAllButton.removeClass('d-none');\n              } else {\n                $resultFacetAllButton.addClass('d-none');\n              }\n            }\n\n            if (cn.getSearchListOffset()) {\n              // view with offset\n              $resultItemListContainer.append(response.view);\n              cn.setSearchListOffset(0);\n            } else {\n              // view without offset\n              $resultItemListContainer.html(response.view);\n            }\n\n            // pagination\n            if (response.pagination && response.pagination === true) {\n              $resultItemListPaginationContainer.removeClass('d-none');\n            } else {\n              $resultItemListPaginationContainer.addClass('d-none');\n            }\n          });\n        };\n\n        //\n        // template events\n        //\n        $form.on('submit', function (event) {\n          event.preventDefault();\n\n          const formInputValue = $formInput.val();\n\n          if (formInputValue.length > settings.formInputMinLength) {\n            if (!$resultFacetAllButton.hasClass('active')) {\n              $('.nav-link.active', $resultFacetListContainer).removeClass('active');\n              $resultFacetAllButton.addClass('active');\n            }\n\n            cn.setSearchFilterQueryList(null);\n            cn.setSearchValue(formInputValue);\n            facetList();\n            itemList();\n\n            setUrlParam(formInputValue);\n\n            cn.setTypeaheadValue(formInputValue);\n            typeahead(true);\n          }\n        });\n\n        $typeaheadTermsContainer.on('click', 'button', function (event) {\n          event.preventDefault();\n\n          const q = $(this).data('q');\n\n          // set input field to q value\n          $formInput.val(q);\n\n          if (!$resultFacetAllButton.hasClass('active')) {\n            $('.nav-link.active', $resultFacetListContainer).removeClass('active');\n            $resultFacetAllButton.addClass('active');\n          }\n\n          cn.setSearchFilterQueryList(null);\n          cn.setSearchValue(q);\n          facetList();\n          itemList();\n\n          setUrlParam(q);\n\n          cn.setTypeaheadValue(q);\n          typeahead(true);\n        });\n\n        // faceting\n        $resultFacetListContainer.on('click', '.nav-link', function (event) {\n          event.preventDefault();\n\n          const facetName = $(this).data('facet-name');\n          const facetValue = $(this).data('facet-value');\n\n          $('.nav-link.active', $resultFacetListContainer).removeClass('active');\n          $(this).addClass('active');\n\n          if (typeof facetValue !== 'undefined' && facetValue != '') {\n            cn.addSearchFilterQuery(facetName, facetValue);\n          } else {\n            cn.setSearchFilterQueryList(null);\n          }\n\n          // clear last timeout\n          clearTimeout(facetListTimeout);\n\n          // set new filter value after timeout\n          facetListTimeout = setTimeout(function () {\n            itemList();\n          }, settings.resultFacetListDelay);\n        });\n\n        // pagination\n        $('button', $resultItemListPaginationContainer).on('click', function (event) {\n          event.preventDefault();\n\n          if ($('.' + settings.resultListItemClass, $resultItemListContainer).length > 0) {\n            cn.setSearchListOffset($('.' + settings.resultListItemClass, $resultItemListContainer).length);\n\n            itemList();\n          }\n        });\n\n        //\n        // template initialization\n        //\n        cn.setSearchListLimit($resultItemListLimitContainer.val());\n\n        // global search value\n        q = cn.getUrlVars('q');\n\n        if (q && q.length > 0) {\n          $formInput.val(q);\n          $formButtonClear.get(0).dispatchEvent(new Event('showSearchInputClearButton'));\n\n          cn.setTypeaheadValue(q);\n          typeahead(true);\n\n          cn.setSearchValue(q);\n          facetList();\n          itemList();\n        } else {\n          $formInput.trigger('focus');\n        }\n      }\n    });\n  };\n\n  //\n  // search connector\n  //\n  const searchConnector = function () {\n    this.connection = {\n      host: urls.api.ws01 ?? '',\n      path: 'search/search.proxy.php?callback=?',\n      dataType: 'jsonp',\n      jsonp: 'json.wrf',\n    };\n\n    this.debug = null;\n    this.template = null;\n    this.cmsLanguage = null;\n    this.cmsNativeLanguage = null;\n    this.pimLanguage = null;\n    this.cmsPreviewClient = null;\n    this.typeaheadValue = null;\n    this.searchValue = null;\n    this.searchFacetName = null;\n    this.searchFilterQueryList = null;\n    this.searchListLimit = null;\n    this.searchListOffset = null;\n    this.searchListRows = null;\n\n    this.getConnection = function () {\n      return this.connection;\n    };\n    this.setConnection = function (value) {\n      this.connection = $.extend(this.connection, value);\n    };\n\n    this.getDebug = function () {\n      return this.debug;\n    };\n    this.setDebug = function (value) {\n      this.debug = value;\n    };\n\n    this.getTemplate = function () {\n      return this.template;\n    };\n    this.setTemplate = function (value) {\n      this.template = value;\n    };\n\n    this.getCmsLanguage = function () {\n      return this.cmsLanguage;\n    };\n    this.setCmsLanguage = function (value) {\n      this.cmsLanguage = value;\n    };\n\n    this.getCmsNativeLanguage = function () {\n      return this.cmsNativeLanguage;\n    };\n    this.setCmsNativeLanguage = function (value) {\n      this.cmsNativeLanguage = value;\n    };\n\n    this.getPimLanguage = function () {\n      return this.pimLanguage;\n    };\n    this.setPimLanguage = function (value) {\n      this.pimLanguage = value;\n    };\n\n    this.getCmsPreviewClient = function () {\n      return this.cmsPreviewClient;\n    };\n    this.setCmsPreviewClient = function (value) {\n      this.cmsPreviewClient = value;\n    };\n\n    this.getTypeaheadValue = function () {\n      return this.typeaheadValue;\n    };\n    this.setTypeaheadValue = function (value) {\n      this.typeaheadValue = value;\n    };\n\n    this.getSearchValue = function () {\n      return this.searchValue;\n    };\n    this.setSearchValue = function (value) {\n      this.searchValue = value;\n    };\n\n    this.getSearchFacetName = function () {\n      return this.searchFacetName;\n    };\n    this.setSearchFacetName = function (value) {\n      this.searchFacetName = value;\n    };\n\n    this.getSearchFilterQueryList = function () {\n      return this.searchFilterQueryList;\n    };\n    this.setSearchFilterQueryList = function (value) {\n      this.searchFilterQueryList = value;\n    };\n    this.addSearchFilterQuery = function (key, value) {\n      if (this.searchFilterQueryList === null) this.searchFilterQueryList = {};\n      this.searchFilterQueryList[key] = value;\n    };\n    this.removeSearchFilterQuery = function (key) {\n      if (this.searchFilterQueryList !== null && typeof this.searchFilterQueryList[key] === 'undefined')\n        delete this.searchFilterQueryList[key];\n    };\n\n    this.getSearchListLimit = function () {\n      return this.searchListLimit;\n    };\n    this.setSearchListLimit = function (value) {\n      this.searchListLimit = value;\n    };\n\n    this.getSearchListOffset = function () {\n      return this.searchListOffset;\n    };\n    this.setSearchListOffset = function (value) {\n      this.searchListOffset = value;\n    };\n\n    this.view = function (action) {\n      let options;\n\n      switch (action) {\n        case 'typeahead':\n          options = {\n            action: action,\n            cmsLanguage: this.cmsLanguage,\n            cmsNativeLanguage: this.cmsNativeLanguage,\n            cmsPreviewClient: this.cmsPreviewClient,\n            pimLanguage: this.pimLanguage,\n            settings: searchVars,\n            template: this.template,\n            typeaheadValue: this.typeaheadValue,\n          };\n          break;\n\n        case 'itemList':\n          options = {\n            action: action,\n            cmsLanguage: this.cmsLanguage,\n            cmsNativeLanguage: this.cmsNativeLanguage,\n            cmsPreviewClient: this.cmsPreviewClient,\n            searchFilterQueryList: this.searchFilterQueryList,\n            searchListLimit: this.searchListLimit,\n            searchListOffset: this.searchListOffset,\n            searchValue: this.searchValue,\n            settings: searchVars,\n            template: this.template,\n          };\n          break;\n\n        case 'facetList':\n          options = {\n            action: action,\n            cmsLanguage: this.cmsLanguage,\n            cmsNativeLanguage: this.cmsNativeLanguage,\n            cmsPreviewClient: this.cmsPreviewClient,\n            searchFacetName: this.searchFacetName,\n            searchValue: this.searchValue,\n            template: this.template,\n          };\n          break;\n\n        default:\n          break;\n      }\n\n      if (options) {\n        if (this.debug) debug(options);\n        const request = connector(this.connection, options);\n        const deferred = new $.Deferred();\n\n        request.done(function (data) {\n          deferred.resolve(data);\n        });\n\n        request.fail(function (data) {\n          deferred.reject(data);\n        });\n\n        return deferred.promise();\n      }\n    };\n\n    //\n    // method for connecting php with ajax\n    //\n    function connector(connection, options) {\n      return $.ajax({\n        url: connection.host + connection.path,\n        dataType: connection.dataType,\n        jsonp: connection.jsonp,\n        cache: null,\n        data: options,\n      });\n    }\n\n    //\n    // method for debug output on console\n    //\n    function debug(options) {\n      let consoleStr = '';\n\n      $.each(options, function (optionKey, optionValue) {\n        if ($.isPlainObject(optionValue)) {\n          $.each(optionValue, function (key, value) {\n            consoleStr += optionKey + '[' + key + ']: ' + value + '\\n';\n          });\n        } else {\n          consoleStr += optionKey + ': ' + optionValue + '\\n';\n        }\n      });\n\n      console.log(consoleStr);\n    }\n\n    //\n    // method for getting url params\n    //\n    this.getUrlVars = function (value) {\n      return new URLSearchParams(window.location.search).get(value);\n    };\n  };\n})(jQuery);\n"]}