{"version":3,"file":"typeahead-solr.702.521c8.js","mappings":"gOAIA,QACA,iB,EAEMA,WAKF,WAAYC,GAAS,8IACbA,EAAQC,OACRC,KAAKD,KAAOD,EAAQC,MAGpBC,KAAKD,OACLC,KAAKC,GAAK,CACNC,cAAeC,EAAE,sBACjBC,gBAAiBD,EAAE,4BACnBE,WAAYF,EAAE,oCAElBH,KAAKM,cAAgB,GACrBC,OAAOC,iBAAiB,QAAQ,kBAAM,EAAKC,wBAEvCT,KAAKC,GAAGI,WAAWK,QACnBP,EAAEH,KAAKD,MAAMY,KAAK,oBAAoB,SAACC,EAAIC,GACvCA,EAAWC,KACPX,EAAE,EAAKF,GAAGI,YAAYU,IAAIF,EAAWC,MACrCX,EAAE,EAAKF,GAAGI,YAAYU,IAAI,IAE9B,EAAKhB,KAAKiB,a,uDAM1B,WAEI,IAGIC,EAHEC,EAAcf,EAAE,kBAAkBY,MAClCI,EAAWhB,EAAE,kBAAkBY,MAIrCf,KAAKC,GAAGG,gBAAgBgB,MAAK,SAACC,EAAOC,GACjC,IAAIC,EAAapB,EAAEmB,GAEnBL,EAAa,IAAIO,EAAAA,QAAW,CACxBC,eAAgBD,EAAAA,QAAWE,WAAWC,WACtCC,eAAgBJ,EAAAA,QAAWE,WAAWC,WACtCE,MAAO,GACPC,OAAQ,CACJC,IAAK,GAAF,OAAKb,EAAL,sCAA8CC,GACjDa,SAAU,WACVC,YAAa,WACbC,cAAe,IACfC,UAAW,SAAUC,GACjB,OAAOA,EAAKC,KAAI,SAAUC,GACtB,MAAO,CACHC,YAAaD,EAAOE,YACpBC,KAAMH,EAAOE,YACb1B,KAAMwB,EAAOI,KACbC,MAAOL,EAAOM,YAOlCrB,EAAWsB,UAAU,CACjBC,UAAW,EACXC,MAAM,EACNC,WAAW,GACZ,CACCC,WAAY,cACZC,QAAS,cACTrB,MAAO,EACPsB,UAAW,CACPC,OAAQ,SAACC,GAAD,OAAUA,EAAKd,YAAL,0EAC0Bc,EAAKd,YAD/B,oCAEde,GACJzC,WAAY,SAACwC,GAAD,oKAE+CA,EAAKd,YAFpD,mEAQhBgB,OAAQtC,EAAWuC,iBAI3BrD,EAAEH,KAAKD,MAAMY,KAAK,oBAAoB,WACNR,EAAE,kCAERiB,MAAK,WACvB,IAAIqC,EAAQtD,EAAEH,MACV0D,EAAYD,EAAME,KAAK,uCAAuC,GAAGC,UAAUC,cAE7D,aAAdH,GAA0C,YAAdA,GAAyC,cAAdA,GACvDD,EAAMK,SAAS,2D,EA/F7BjE,G","sources":["webpack://umms-html/./FrontEndSrc/modules/macro/typeahead/typeahead-solr.js"],"sourcesContent":["/* jQuery, Bloodhound */\r\n\r\n'use strict';\r\n\r\nimport '../../../js/vendor/typeaheadjs/dist/typeahead.jquery.js';\r\nimport Bloodhound from '../../../js/vendor/typeaheadjs/dist/bloodhound.min.js';\r\n\r\nclass TypeaheadSolr {\r\n    wrap;\r\n    bloodhoundArr;\r\n    ui;\r\n\r\n    constructor(options) {\r\n        if (options.wrap) {\r\n            this.wrap = options.wrap;\r\n        }\r\n\r\n        if (this.wrap) {\r\n            this.ui = {\r\n                typeaheadForm: $('.js-typeahead-solr'),\r\n                typeaheadInputs: $('.js-typeahead-solr-input'),\r\n                searchType: $('.js-typeahead-input-search-type')\r\n            };\r\n            this.bloodhoundArr = [];\r\n            window.addEventListener('load', () => this.implementTypeahead());\r\n\r\n            if (this.ui.searchType.length) {\r\n                $(this.wrap).bind('typeahead:select', (ev, suggestion) => {\r\n                    suggestion.type ?\r\n                        $(this.ui.searchType).val(suggestion.type) :\r\n                        $(this.ui.searchType).val('');\r\n\r\n                    this.wrap.submit();\r\n                });\r\n            }\r\n        }\r\n    }\r\n\r\n    implementTypeahead() {\r\n\r\n        const endpointUrl = $('input#endpoint').val();\r\n        const siteName = $('input#sitename').val();\r\n\r\n        let searchData;\r\n\r\n        this.ui.typeaheadInputs.each((index, el) => {\r\n            var $thisInput = $(el);\r\n\r\n            searchData = new Bloodhound({\r\n                datumTokenizer: Bloodhound.tokenizers.whitespace,\r\n                queryTokenizer: Bloodhound.tokenizers.whitespace,\r\n                limit: 10,\r\n                remote: {\r\n                    url: `${endpointUrl}?keyword=%KEYWORD&sitename=${siteName}`,\r\n                    wildcard: '%KEYWORD',\r\n                    rateLimitBy: 'debounce',\r\n                    rateLimitWait: 300,\r\n                    transform: function (list) {\r\n                        return list.map(function (result) {\r\n                            return {\r\n                                displayName: result.DisplayText,\r\n                                name: result.DisplayText,\r\n                                type: result.Type,\r\n                                value: result.Url\r\n                            };\r\n                        });\r\n                    }\r\n                },\r\n            });\r\n\r\n            $thisInput.typeahead({\r\n                minLength: 2,\r\n                hint: false,\r\n                highlight: true\r\n            }, {\r\n                displayKey: 'displayName',\r\n                display: 'displayName',\r\n                limit: 7,\r\n                templates: {\r\n                    header: (data) => data.displayName ? `\r\n                        <h3 class=\"twitter-typeahead__header\">${data.displayName}</h3>\r\n                    ` : undefined,\r\n                    suggestion: (data) => `\r\n                        <div class=\"twitter-typeahead__suggestion\">\r\n                            <span class=\"twitter-typeahead__suggestion-name\">${data.displayName}</span>\r\n                        </div>\r\n                    `\r\n                },\r\n                // `ttAdapter` wraps the suggestion engine in an adapter that\r\n                // is compatible with the typeahead jQuery plugin\r\n                source: searchData.ttAdapter()\r\n            });\r\n        });\r\n\r\n        $(this.wrap).bind('typeahead:render', () => {\r\n            var $suggestionGroupNames = $('.twitter-typeahead__suggestion');\r\n\r\n            $suggestionGroupNames.each(function() {\r\n                var $this = $(this),\r\n                    $thisText = $this.find('.twitter-typeahead__suggestion-name')[0].innerText.toLowerCase();\r\n\r\n                if ($thisText === 'services' || $thisText === 'doctors' || $thisText === 'locations') {\r\n                    $this.addClass('twitter-typeahead__suggestion-title--override');\r\n                }\r\n            });\r\n        });\r\n    }\r\n}\r\n\r\nexport default TypeaheadSolr;\r\n"],"names":["TypeaheadSolr","options","wrap","this","ui","typeaheadForm","$","typeaheadInputs","searchType","bloodhoundArr","window","addEventListener","implementTypeahead","length","bind","ev","suggestion","type","val","submit","searchData","endpointUrl","siteName","each","index","el","$thisInput","Bloodhound","datumTokenizer","tokenizers","whitespace","queryTokenizer","limit","remote","url","wildcard","rateLimitBy","rateLimitWait","transform","list","map","result","displayName","DisplayText","name","Type","value","Url","typeahead","minLength","hint","highlight","displayKey","display","templates","header","data","undefined","source","ttAdapter","$this","$thisText","find","innerText","toLowerCase","addClass"],"sourceRoot":""}