{"version":3,"file":"js/6931.cc6ec597.js","mappings":"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","sources":["webpack://python-webpack-boilerplate/./frontend/src/components/search_bar_new.ts","webpack://python-webpack-boilerplate/./frontend/src/components/search_core_new.ts","webpack://python-webpack-boilerplate/./frontend/src/components/search_filters_new.ts","webpack://python-webpack-boilerplate/./frontend/src/components/typeahead_new.ts"],"sourcesContent":["import jQuery from \"jquery\";\nimport {searchCore, SearchParams} from \"./search_core_new\";\nimport {typeahead} from \"./typeahead_new\";\n\nexport let searchBar = {\n    initialize(suggestURL: string, isOuterSearch: boolean, searchParams: SearchParams) {\n        let $ = jQuery;\n        // Typeahead cache\n        function makeActionFunction(searchParams: SearchParams) {\n            function actionFunction() {\n                searchCore.doSearch(searchParams);\n            }\n            return actionFunction;\n        }\n        typeahead.initialize('search-input', suggestURL, true, 15, makeActionFunction(searchParams));\n\n        // Handle number of rooms search input\n        if (isOuterSearch) {\n            $('input[id=input-num-people]').change(function () {\n                //searchCore.doSearchOuter();\n                return false;\n            }).keypress(function (e) {\n                if (e.which === 13) {\n                    searchCore.doSearchOuter(searchParams);\n                    return false;\n                }\n            });\n        } else {\n            $('input[id=input-num-people]').keypress(function (e) {\n                if (e.which === 13) {\n                    searchCore.doSearch(searchParams);\n                    return false;\n                }\n            });\n        }\n        // Handle search bar\n        $('#search-input').keypress(function (e) {\n            if (e.which === 13) {\n                searchCore.doSearch(searchParams);\n            }\n        });\n        // Handle search clear icon\n        $('#search-clear-icon').click(function () {\n            $('#search-input').val('').attr('placeholder', 'Søk på land, by, område, hotell eller konferansested');\n            //$('input[id=input-num-people]').val('').attr('Antall personer');\n            searchCore.doSearch(searchParams);\n            return false;\n        });\n        // Handle search icon\n        $(\"#search-icon\").click(function () {\n            if (isOuterSearch) {\n                searchCore.doSearchOuter(searchParams);\n            } else {\n                searchCore.doSearch(searchParams);\n            }\n            return false;\n        });\n        // Handle new filters\n        $('select[id=capacity]').change(function() {\n            searchCore.doSearch(searchParams);\n        });\n        $('select[id=rooms]').change(function() {\n            searchCore.doSearch(searchParams);\n        });\n        $('select[id=location]').change(function() {\n            searchCore.doSearch(searchParams);\n        });\n    }\n};\n","import jQuery from \"jquery\";\n\nexport interface SearchParams {\n    categoryVal: number | undefined,\n    chainVal: number | undefined,\n    parentCategoryVal: number | undefined,\n    addToHotelRequestId: number | undefined,\n    providerType: string,\n    addMore: boolean\n}\n\ninterface SearchResult {\n    id: string,\n    map: string,\n    name: string,\n    street: string,\n    slug: string\n}\n\ninterface SearchResponse {\n    html: string,\n    pagination_html: string,\n    hits: SearchResult[],\n    total: number,\n    map_center: string,\n    cinema_capacity_number: number\n}\n\nexport let searchCore = {\n    map: null,\n    mapCenter: '',\n    firstSearch: true,\n    ignoreZoomEvent: false,\n    $: jQuery,\n    startResult: 0,\n    shownResultsSize: 0,\n\n    initialize: function (searchURL: string, innerSearchURL: string, restaurantSearchURL: string, askUsURL: string, findURL: string, startResult: number, mapLatLngNE: google.maps.LatLng, mapLatLngSW: google.maps.LatLng, prevZoom: number, paginationBox: JQuery, resultsBox: JQuery, shownResultsSize: number, google: any) {\n        this.searchURL = searchURL;\n        this.innerSearchURL = innerSearchURL;\n        this.restaurantSearchURL = restaurantSearchURL;\n        this.askUsURL = askUsURL;\n        this.findURL = findURL;\n        this.startResult = startResult;\n        this.mapLatLngNE = mapLatLngNE;\n        this.mapLatLngSW = mapLatLngSW;\n        this.prevZoom = prevZoom;\n        this.paginationBox = paginationBox;\n        this.resultsBox = resultsBox;\n        this.shownResultsSize = shownResultsSize;\n        this.google = google;\n    },\n\n    getSearchURL: function (searchParams: SearchParams) {\n        let searchURL = (searchParams.providerType === 'r' ? this.restaurantSearchURL : this.searchURL);\n        return searchURL + '?' + this.getURLParamsOuter(true, searchParams);\n    },\n\n    getInnerSearchURL: function (searchParams: SearchParams) {\n        return this.innerSearchURL + '?' + this.getURLParamsOuter(true, searchParams);\n    },\n\n    getURLParams: function (searchParams: SearchParams) {\n        let result = 'q=';\n        let query = '';\n        let $ = jQuery;\n        $('.search-input-alt').each(function () {\n            let val = $(this).val();\n            if (typeof val === 'string') {\n                query = val;\n            }\n        });\n        result += encodeURIComponent(query);\n        //var categoryVal = $('select[id=input-category]').val();\n        if (searchParams.categoryVal !== undefined) {\n            result += '&category=' + searchParams.categoryVal;\n        }\n        if (searchParams.chainVal !== undefined) {\n            result += '&chain=' + searchParams.chainVal;\n        }\n        if (searchParams.parentCategoryVal !== undefined) {\n            result += '&parentcategory=' + searchParams.parentCategoryVal;\n        }\n        let numPeopleInput = $('input[id=input-num-people]');\n        if (numPeopleInput.length > 0) {\n            result += '&cinema_capacity_number=' + numPeopleInput.val();\n        }\n        //result += '&chain=' + $('select[id=input-chain]').val();\n        // result += '&date=' + $('input[id=start-date]').val();\n        if (searchParams.addToHotelRequestId) {\n            result += '&add_to_request_id=' + searchParams.addToHotelRequestId;\n        }\n        if (searchParams.providerType) {\n            result += '&type=' + searchParams.providerType;\n        }\n        if (searchParams.addMore) {\n            result += '&add_more=1';\n        }\n        let conferenceCapacity = $('select[id=capacity]').val();\n        if (conferenceCapacity && conferenceCapacity != '0') {\n            result += '&capacity=' + conferenceCapacity;\n        }\n        let rooms = $('select[id=rooms]').val();\n        if (rooms && rooms != '0') {\n            result += '&rooms=' + rooms;\n        }\n        let location = $('select[id=location]').val();\n        if (location && location != '0') {\n            result += '&location=' + location;\n        }\n        return result;\n    },\n\n    getURLParamsOuter: function (includeStart: boolean, searchParams: SearchParams) {\n        let result = this.getURLParams(searchParams);\n        if (includeStart) {\n            result += '&start=' + this.startResult;\n        }\n        if (this.mapLatLngNE) {\n            result += '&lathi=' + this.mapLatLngNE.lat() + '&latlo=' + this.mapLatLngSW.lat() +\n                '&lnghi=' + this.mapLatLngNE.lng() + '&lnglo=' + this.mapLatLngSW.lng() + '&zoom=' + this.prevZoom;\n        }\n\n        return result;\n    },\n\n    doSearch: function (searchParams: SearchParams) {\n        let searchURL = (searchParams.providerType === 'r' ? this.restaurantSearchURL : this.searchURL);\n        window.location.href = searchURL + '?' + this.getURLParams(searchParams);\n    },\n\n    doSearchOuter: function (searchParams: SearchParams) {\n        //startResult = 0;\n        this.$('#search_map').animate({\n            opacity: '0.5'\n        }, 100);\n        this.doSearchInner(true, searchParams);\n    },\n\n    doSearchInner: function (doUpdateMap: boolean, searchParams: SearchParams) {\n        this.$('#search-results-spinner').show();\n        this.$('#main-list-grid,#pagination').animate({\n            opacity: '0.5'\n        }, 100);\n        let that = this;\n        this.$.getJSON(this.getInnerSearchURL(searchParams), function (data: SearchResponse) {\n            // Hide results spinner\n\n            that.$('#search-results-spinner').hide();\n            that.$('#main-list-grid,#pagination').animate({\n                opacity: '1.0'\n            }, 100);\n\n            /*\n            // Check for redirect\n\n            if (data.redirect_url !== null) {\n                window.location.href = data.redirect_url;\n            }\n            */\n\n            // Show current results\n            that.paginationBox.html(that.$(data.pagination_html));\n            that.mapCenter = data.map_center;\n\n            // Update number of rooms as the query may have overridden the existing value\n            if (data.cinema_capacity_number !== 0) {\n                that.$('input[id=input-num-people]').val(data.cinema_capacity_number);\n            }\n            that.updateSearchResults(data.hits, data.hits.length, that.$(data.html), searchParams);\n            if (doUpdateMap) {\n                that.updateMap(data.hits, data.hits.length, that.$(data.html), searchParams);\n            }\n\n            that.$('#search-results-box').animate({\n                opacity: '1.0'\n            }, 100);\n            if (doUpdateMap) {\n                that.$('#search_map').animate({\n                    opacity: '1.0'\n                }, 100);\n            }\n        });\n    },\n\n    updateSearchResults: function (hits: SearchResult[], numResults: number, resultsHTML: JQuery, searchParams: SearchParams) {\n        this.resultsBox.empty();\n        if (hits.length <= 0) {\n            let query = this.$('input[name=q]').val();\n            let queryText = (query ? ' på \"' + query + '\"' : '');\n            // Reset from a locked/category search is handled by the removable filter pill above the results.\n            // Inline styles used here because Tailwind does not scan this TS file (see tailwind.config.js).\n            let linkStyle = 'color: #0b6870; text-decoration: underline';\n            let html = '<div class=\"text-center\" style=\"grid-column: 1 / -1; padding: 64px 0\">' +\n                '<p class=\"lead\" style=\"margin-bottom: 28px\">Søket' + queryText + ' ga ingen treff, men vi i Meetings kan hjelpe deg med andre forslag.</p>' +\n                '<div style=\"display: flex; flex-direction: column; align-items: center; gap: 12px\">' +\n                '<a href=\"' + this.askUsURL + '\" style=\"' + linkStyle + '\">Kontakt oss!</a>' +\n                '<a href=\"' + this.findURL + (searchParams.addToHotelRequestId ? '?add_to_request_id=' + searchParams.addToHotelRequestId.toString() : '') + '\" style=\"' + linkStyle + '\">Til forsiden</a>' +\n                '</div>' +\n                '</div>';\n            this.resultsBox.html(html);\n            // No results: drop the \"Side 1 av 0\" pager (repopulated on the next search with hits).\n            this.paginationBox.empty();\n        }\n        for (let i = this.startResult; i < this.startResult + this.shownResultsSize; i++) {\n            if (i < numResults) {\n                this.resultsBox.append(resultsHTML.filter('a[id=hotel-' + hits[i].id + ']'));\n            }\n        }\n\n        // Handle left and right button activation\n        if (!this.firstSearch) {\n            if (this.startResult > 0) {\n                this.$('.left-button').parent().removeClass('disabled');\n            } else {\n                this.$('.left-button').parent().addClass('disabled');\n            }\n\n            if (this.startResult + this.shownResultsSize >= numResults) {\n                this.$('.right-button').parent().addClass('disabled');\n            } else {\n                this.$('.right-button').parent().removeClass('disabled');\n            }\n\n            // Change active page indicator\n\n            let activePage = Math.floor(this.startResult / this.shownResultsSize) + 1;\n            this.$('a[class^=page-button-]').parent().removeClass('active');\n            this.$('.page-button-' + activePage).parent().addClass('active');\n        }\n\n        // Update search results info\n\n        if (hits.length > 0) {\n            this.$('#search-results-info').html(\n                (this.startResult + 1) + ' - ' + Math.min(this.startResult + this.shownResultsSize, numResults) + ' ' + 'av' +\n                ' ' + numResults + ' ' + 'resultater');\n            this.$('#results-navigation-row').show();\n            this.$('#search_map').show();\n        } else {\n            this.$('#results-navigation-row').hide();\n            this.$('#search_map').hide();\n        }\n\n        if (!this.firstSearch) {\n            this.storePageState(searchParams);\n        }\n        this.firstSearch = false;\n\n    },\n\n    updateMap: function (hits: SearchResult[], numResults: number, resultsHTML: JQuery, searchParams: SearchParams) {\n        let searchMap = this.$('#search_map');\n        let that = this;\n        if (hits.length <= 0) {\n            //$('#map-spinner').hide();\n            searchMap.hide();\n            return;\n        }\n        searchMap.show();\n        console.log(searchMap);\n\n        if (this.mapLatLngNE) {\n            let latLngBounds = new this.google.maps.LatLngBounds(this.mapLatLngSW, this.mapLatLngNE);\n            this.map = this.createMap(latLngBounds.getCenter(), this.prevZoom);\n        } else {\n            // Parse the map center string\n            let latLng = this.parseMapString(this.mapCenter);\n            this.map = this.createMap(new this.google.maps.LatLng(latLng[0], latLng[1]), 12);\n        }\n\n        this.google.maps.event.addListenerOnce(this.map, 'tilesloaded', function () {\n            that.addMarkers(hits, numResults, resultsHTML, searchParams);\n        });\n\n    },\n\n    createMap: function (center: google.maps.LatLng, zoom: number) {\n        return new this.google.maps.Map(document.getElementById('search_map'), {\n            center: center,\n            zoom: zoom,\n            mapTypeId: this.google.maps.MapTypeId.ROADMAP\n        });\n    },\n\n    addMarkers: function (hits: SearchResult[], numResults: number, resultsHTML: JQuery, searchParams: SearchParams) {\n        let that = this;\n        let markerBounds = new this.google.maps.LatLngBounds();\n\n        // Use a shared info window for all markers\n        let infoWindow = new this.google.maps.InfoWindow();\n\n        for (let i = 0; i < hits.length; i++) {\n            if (hits[i].map === '' || hits[i].map === null) {\n                continue;\n            }\n\n            let latLng = this.parseMapString(hits[i].map);\n\n            let point = new this.google.maps.LatLng(latLng[0], latLng[1]);\n            markerBounds.extend(point);\n\n            let marker = new this.google.maps.Marker({\n                position: point,\n                map: this.map,\n                infoWindowTitle: '<a href=\"/konferanse/' + hits[i].slug + '/\">' + hits[i].name + '</a>',\n                title: hits[i].name,\n                internalId: i,\n                hotelId: hits[i].id\n            });\n\n            // Handle marker clicks\n            this.google.maps.event.addListener(marker, 'click', function () {\n                // Close existing info window and reopen with new content\n\n                infoWindow.close();\n                infoWindow.setContent(this.infoWindowTitle);\n                infoWindow.open(that.map, this);\n\n                // Check if we need to update the search results\n\n                let doUpdate = false;\n                while (this.internalId < that.startResult || this.internalId >= that.startResult + that.shownResultsSize) {\n                    doUpdate = true;\n                    if (this.internalId < that.startResult) {\n                        that.startResult -= that.shownResultsSize;\n                    } else {\n                        that.startResult += that.shownResultsSize;\n                    }\n                }\n\n                if (doUpdate) {\n                    that.updateSearchResults(hits, numResults, resultsHTML, searchParams);\n                }\n\n                // Do a quick pulse of the associated search result box\n\n                let hotelResultBox = that.$('li[id=hotel-' + this.hotelId + ']');\n                hotelResultBox.animate({\n                        opacity: '0.5'\n                    }, 200, function () {\n                        hotelResultBox.animate({\n                            opacity: '1.0'\n                        }, 200);\n                    }\n                );\n            });\n        }\n        if (!this.mapLatLngNE) {\n            let zoomFixed = false;\n            this.map.fitBounds(markerBounds);\n\n            this.google.maps.event.addListenerOnce(this.map, 'idle', function () {\n                if (!zoomFixed && this.getZoom() > 15) {\n                    that.ignoreZoomEvent = true;\n                    zoomFixed = true;\n                    this.setZoom(15);\n                }\n            });\n\n        }\n\n        // Close info window on map click\n        this.google.maps.event.addListener(this.map, 'click', function () {\n            infoWindow.close();\n        });\n\n        function storeBoundsAndZoom() {\n            let latLngBounds = that.map.getBounds();\n            that.mapLatLngNE = latLngBounds.getNorthEast();\n            that.mapLatLngSW = latLngBounds.getSouthWest();\n            that.prevZoom = that.map.getZoom();\n        }\n\n        // Redo search after dragging and zooming map\n\n        this.google.maps.event.addListener(this.map, 'dragend', function () {\n            storeBoundsAndZoom();\n            that.startResult = 0;\n            that.doSearchOuter(searchParams);\n        });\n\n        this.google.maps.event.addListener(this.map, 'zoom_changed', function () {\n            if (!that.ignoreZoomEvent) {\n                storeBoundsAndZoom();\n                that.startResult = 0;\n                that.doSearchOuter(searchParams);\n            } else {\n                that.ignoreZoomEvent = false;\n            }\n        });\n    },\n\n    parseMapString: function (mapString: string) {\n        let mapStringElems = mapString.split(',');\n        let lat = parseFloat(mapStringElems[0]);\n        let lng = parseFloat(mapStringElems[1]);\n        return [lat, lng];\n    },\n\n    storePageState: function (searchParams: SearchParams) {\n        // Store page state to solve Chrome reload when back button is pressed\n        window.history.replaceState('start' + this.startResult, '', this.getSearchURL(searchParams));\n    }\n\n};\n","import jQuery from \"jquery\";\nimport { searchCore, SearchParams } from \"./search_core_new\";\nimport \"bootstrap-sass/assets/javascripts/bootstrap/dropdown\";\n\nexport default class SearchFilters {\n    constructor() {\n    }\n\n    initialize(searchParams: SearchParams) {\n        let $ = jQuery;\n        $('a.chain-item').click(function () {\n            let id = $(this).attr('id');\n            if (id) {\n                searchParams.chainVal = parseInt(id.split('-')[2]);\n                searchCore.doSearch(searchParams);\n            }\n            return false;\n        });\n        $('a.category-item').click(function () {\n            let id = $(this).attr('id');\n            if (id) {\n                searchParams.categoryVal = parseInt(id.split('-')[2]);\n                searchParams.parentCategoryVal = undefined;\n                searchCore.doSearch(searchParams);\n            }\n            return false;\n        });\n        $('a.submenu').click(function () {\n            let id = $(this).attr('id');\n            if (id) {\n                searchParams.parentCategoryVal = parseInt(id.split('-')[1]);\n                searchParams.categoryVal = undefined;\n                searchCore.doSearch(searchParams);\n            }\n            return false;\n        });\n        let dropdown = $(\".dropdown\");\n        dropdown.on(\"hide.bs.dropdown\", function () {\n            $(this).find('.dropdown-toggle span').removeClass(\"caret-up\");\n        });\n        dropdown.on(\"show.bs.dropdown\", function () {\n            $(this).find('.dropdown-toggle span').addClass('caret-up');\n        });\n        $('.dropdown-submenu .submenu').on(\"click mouseenter\", function (e) {\n            $(\".dropdown-menu .dropdown-submenu .submenu\").next('ul').hide();\n            $(\".dropdown-menu .dropdown-submenu .submenu\").find(\"span\").removeClass(\"caret-black-up\");\n            $(this).next('ul').toggle();\n\n            /* check display for caret */\n            if ($(this).next('ul').css('display') == 'none') {\n                $(this).find('span').removeClass(\"caret-black-up\");\n            } else {\n                $(this).find('span').addClass(\"caret-black-up\");\n            }\n            /* check display for caret || */\n\n            e.stopPropagation();\n            e.preventDefault();\n        });\n\n        $(\".category-dropdown\").on(\"click\", function () {\n            // @ts-ignore\n            $(this).find('.dropdown-toggle').dropdown(\"toggle\");\n            return false;\n        });\n    }\n}\n\n","//import $ from \"jquery\";\nimport typeAhead from 'typeahead-standalone';\nimport \"../styles/typeahead.css\";\n//import 'typeahead-standalone/dist/basic.css';\n\ndeclare global {\n    interface Window {\n        typeaheadCache: { [key: string]: { [key: string]: SearchResultItem[]; }; };\n    }\n}\n\ntype SearchResultItem = {\n    name: string,\n    category: string\n}\n\ntype SearchResults = {\n    results: SearchResultItem[]\n}\n\nexport let typeahead = {\n    /**\n     * Sets up typeahead suggestions for the given input element.\n     *\n     * @param inputId - Selector string for input element.\n     * @param suggestionsURL - URL used to get the suggestions.\n     * @param showCategoryHeader - Will show headers for different result categories if true.\n     * @param numItems - The number of suggestions to show.\n     * @param actionFunction - Function that will be called when a suggestion is selected.\n     */\n    initialize: function (inputId: string, suggestionsURL: string, showCategoryHeader: boolean, numItems: number, actionFunction: () => void) {\n        window.typeaheadCache = window.typeaheadCache || {};\n        window.typeaheadCache[suggestionsURL] = window.typeaheadCache[suggestionsURL] || {};\n        let inputElement = (document.getElementById(inputId) as HTMLInputElement);\n        if (inputElement) {\n            let instance = typeAhead({\n                input: inputElement,\n                highlight: true,\n                hint: false,\n                source: {\n                    remote: {\n                        url: suggestionsURL + '?q=%QUERY',\n                        wildcard: '%QUERY',\n                    },\n                    keys: [\"name\"],\n                    groupKey: \"category\"\n                },\n                limit: numItems,\n                hooks: {\n                    updateHits: async (resultSet, loader) => {\n                        // Sort so that hotel results arrive last\n                        resultSet.hits.sort((a, b) => {\n                            return (a.category === 'Hotell' ? 1 : -1);\n                        });\n                        return resultSet;\n                    }\n                },\n                onSubmit: (e, selectedSuggestion) => {\n                    if (selectedSuggestion) {\n                        actionFunction();\n                    }\n                }\n            });\n            $('body').on(\"click\", '.tt-suggestion', function () {\n                actionFunction();\n            });\n\n        }\n    }\n};\n"],"names":["searchBar","initialize","suggestURL","isOuterSearch","searchParams","$","doSearch","makeActionFunction","change","keypress","e","which","doSearchOuter","click","val","attr","searchCore","map","mapCenter","firstSearch","ignoreZoomEvent","startResult","shownResultsSize","searchURL","innerSearchURL","restaurantSearchURL","askUsURL","findURL","mapLatLngNE","mapLatLngSW","prevZoom","paginationBox","resultsBox","google","this","getSearchURL","providerType","getURLParamsOuter","getInnerSearchURL","getURLParams","result","query","each","encodeURIComponent","undefined","categoryVal","chainVal","parentCategoryVal","numPeopleInput","length","addToHotelRequestId","addMore","conferenceCapacity","rooms","location","includeStart","lat","lng","window","href","animate","opacity","doSearchInner","doUpdateMap","show","that","getJSON","data","hide","html","pagination_html","map_center","cinema_capacity_number","updateSearchResults","hits","updateMap","numResults","resultsHTML","empty","linkStyle","toString","i","append","filter","id","parent","removeClass","addClass","activePage","Math","floor","min","storePageState","searchMap","console","log","latLngBounds","maps","LatLngBounds","createMap","getCenter","latLng","parseMapString","LatLng","event","addListenerOnce","addMarkers","center","zoom","Map","document","getElementById","mapTypeId","MapTypeId","ROADMAP","markerBounds","infoWindow","InfoWindow","point","extend","marker","Marker","position","infoWindowTitle","slug","name","title","internalId","hotelId","addListener","close","setContent","open","doUpdate","hotelResultBox","zoomFixed","fitBounds","getZoom","setZoom","storeBoundsAndZoom","getBounds","getNorthEast","getSouthWest","mapString","mapStringElems","split","parseFloat","history","replaceState","SearchFilters","constructor","parseInt","dropdown","on","find","next","toggle","css","stopPropagation","preventDefault","typeahead","inputId","suggestionsURL","showCategoryHeader","numItems","actionFunction","typeaheadCache","inputElement","input","highlight","hint","source","remote","url","wildcard","keys","groupKey","limit","hooks","updateHits","resultSet","loader","sort","a","b","category","onSubmit","selectedSuggestion"],"sourceRoot":""}