{"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"]}