{"version":3,"file":"js/app.5f317669.js","mappings":"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","sources":["webpack://python-webpack-boilerplate/./frontend/src/application/app.js","webpack://python-webpack-boilerplate/./node_modules/bootstrap-sass/assets/javascripts/bootstrap/affix.js","webpack://python-webpack-boilerplate/./node_modules/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js","webpack://python-webpack-boilerplate/./frontend/src/components/cookies.ts","webpack://python-webpack-boilerplate/./frontend/src/components/csrf_token.ts"],"sourcesContent":["// This is the scss entry file\nimport * as Sentry from \"@sentry/browser\";\nimport $ from \"jquery\";\nimport \"bootstrap-sass/assets/javascripts/bootstrap/affix\";\nimport \"bootstrap-sass/assets/javascripts/bootstrap/dropdown\";\nimport \"../styles/index.scss\";\nimport {csrfToken} from \"../components/csrf_token\";\nimport \"../styles/defaults-standard.less\";\n\ncsrfToken.initialize();\n\nwindow.$ = $;\n\nwindow.app = {\n    initialize: function (landingPageSearchQuery, showSelectedHotels, removeStoredHotelURL, requestSelectURL, requestCreateURL, sentryDSN) {\n        if (sentryDSN) {\n            Sentry.init({\n                dsn: sentryDSN,\n\n                // Alternatively, use `process.env.npm_package_version` for a dynamic release version\n                // if your build tool supports it.\n                //release: \"my-project-name@2.3.12\",\n                //integrations: [new Sentry.BrowserTracing(), new Sentry.Replay()],\n\n                // Set tracesSampleRate to 1.0 to capture 100%\n                // of transactions for performance monitoring.\n                // We recommend adjusting this value in production\n                tracesSampleRate: 1.0,\n\n                // Set `tracePropagationTargets` to control for which URLs distributed tracing should be enabled\n                //tracePropagationTargets: [\"localhost\", /^https:\\/\\/yourserver\\.io\\/api/],\n\n                // Capture Replay for 10% of all sessions,\n                // plus for 100% of sessions with an error\n                //replaysSessionSampleRate: 0.1,\n                //replaysOnErrorSampleRate: 1.0,\n                ignoreErrors: [\n                    // bingbot/2.0\n                    'Event `Event` (type=error) captured as promise rejection',\n                    // Lingdys Chrome extension\n                    /Failed to execute 'define' on 'CustomElementRegistry': the name \"lingdys/,\n                    // Assistive technology browser extensions (e.g. Claro) timing out internally\n                    /Request timeout (?:[\\w-]+Distributor|is(?:Dictate|Prediction|MathOcr)Available|getDictionariesByLanguageId|DefineExpirationForLanguagePacks)/,\n                ]\n            });\n        }\n        // Activate all Bootstrap dropdown\n        $('.dropdown-toggle').dropdown();\n\n        // Mobile-specific adjustments\n        if ($('#mobile-detector').is(':hidden')) {\n            $('footer').removeClass('fixed-footer').addClass('footer');\n        }\n        // Handle click on create request link\n        $('#request-create-link').click(function () {\n            let params = location.search;\n            if (landingPageSearchQuery) {\n                if (params.length > 0) {\n                    if (params.indexOf('q=') === -1) {\n                        params += '&q=' + landingPageSearchQuery;\n                    }\n                } else {\n                    params += '?q=' + landingPageSearchQuery;\n                }\n            }\n            window.location.href = $(this).attr('href') + params;\n            return false;\n        });\n\n        // Open all external links in new tab\n        $('a').attr('target', function () {\n            if (this.host !== location.host) {\n                return '_blank';\n            }\n        });\n\n        let that = this;\n        if (showSelectedHotels) {\n            this.positionSelectedHotelsPanel();\n            $(window).resize(function () {\n                that.positionSelectedHotelsPanel();\n            });\n\n            // Handle remove hotel buttons\n            $(document).on('click', 'button[id^=selected-hotels-remove-]', function () {\n                that.updateStoredHotel($(this).attr('id').split('-')[3], removeStoredHotelURL, requestSelectURL, requestCreateURL);\n                return false;\n            });\n            $(document).on('click', 'button[id^=selected-hotels-mobile-remove-]', function () {\n                that.updateStoredHotel($(this).attr('id').split('-')[4], removeStoredHotelURL, requestSelectURL, requestCreateURL);\n                return false;\n            });\n        }\n\n        // Multilevel Bootstrap 3 dropdown menus\n        $(\".dropdown-menu > li > a.trigger\").on(\"click\", function (e) {\n            let current = $(this).next();\n            let grandparent = $(this).parent().parent();\n            if ($(this).hasClass('left-caret') || $(this).hasClass('right-caret'))\n                $(this).toggleClass('right-caret left-caret');\n            grandparent.find('.left-caret').not(this).toggleClass('right-caret left-caret');\n            grandparent.find(\".sub-menu:visible\").not(current).hide();\n            current.toggle();\n            e.stopPropagation();\n        });\n        $(\".dropdown-menu > li > a:not(.trigger)\").on(\"click\", function () {\n            let root = $(this).closest('.dropdown');\n            root.find('.left-caret').toggleClass('right-caret left-caret');\n            root.find('.sub-menu:visible').hide();\n        });\n    },\n\n    positionSelectedHotelsPanel: function () {\n        // Position selected hotels panel\n        let selectedHotelsPanelElem = $('#selected-hotels-panel');\n        let selectedHotelsMobilePanelElem = $('#selected-hotels-mobile-panel');\n        if (window.innerWidth < 1700) {\n            selectedHotelsPanelElem.css('display', 'none');\n            selectedHotelsMobilePanelElem.css('display', 'block');\n        } else {\n            selectedHotelsPanelElem.css('display', 'block');\n            selectedHotelsMobilePanelElem.css('display', 'none');\n        }\n        let mainContainerElem = $('#main-container');\n        let mainContainerPos = mainContainerElem.offset();\n        mainContainerPos.left += mainContainerElem.outerWidth() + 20;\n        mainContainerPos.top += 77;\n        mainContainerPos.position = 'fixed';\n        selectedHotelsPanelElem.css(mainContainerPos);\n        selectedHotelsPanelElem.affix({\n            offset: mainContainerPos.top\n        });\n    },\n\n    updateStoredHotel: function (hotelId, removeStoredHotelURL, requestSelectURL, requestCreateURL) {\n        $.post(removeStoredHotelURL, {hotel_id: hotelId}, function (data) {\n            // Update number of hotels\n\n            $('#num-hotels').html(data.num_stored_hotels);\n\n            // Show choose button again\n            $('button[id=\"choose-hotel-' + hotelId + '\"]').removeClass('hidden');\n\n            // Hide removed hotel\n            $('#selected-hotel-' + hotelId).css('display', 'none');\n            $('#selected-mobile-hotel-' + hotelId).css('display', 'none');\n\n            // Make navigation pills inactive if necessary\n\n            if (data.num_stored_hotels === 0) {\n                $('#selected-hotels-panel').addClass('hidden');\n                $('#selected-hotels-mobile-panel').addClass('hidden');\n                let elemIds = [`a[href^=\"${requestSelectURL}\"]`, `a[href^=\"${requestCreateURL}\"]`];\n                $.each(elemIds, function (index, elemId) {\n                    let elem = $(elemId);\n                    if (!elem.hasClass('disabled')) {\n                        elem.addClass('disabled');\n                    }\n                });\n            }\n        });\n    }\n\n\n};\n\n\nwindow.carouselNormalization = function (items) {\n    let heights = [],                                   // array to store heights\n        tallest;                                        // tallest slide\n\n    function normalizeHeights() {\n        items.each(function () {\n            heights.push($(this).height());               // add each slide's height\n        });                                             // to the array\n        console.log(heights);\n        tallest = Math.max.apply(null, heights);        // find the largest height\n\n        items.each(function () {\n            $(this).css('min-height', tallest + 'px');    // set each slide's minimum\n        });                                             // height to the largest\n    }\n\n    if (items.length) {\n\n        normalizeHeights();\n\n        $(window).on('resize orientationchange', function () {\n            tallest = 0, heights.length = 0;               // reset the variables\n\n            items.each(function () {\n                $(this).css('min-height', '0');              // reset each slide's height\n            });\n\n            normalizeHeights();                            // run it again\n        });\n    }\n};\n\n\nwindow.imageSizeCheck = function (elem) {\n    let file, img;\n    let _URL = window.URL || window.webkitURL;\n    if ((file = elem.files[0])) {\n        img = new Image();\n        let objectUrl = _URL.createObjectURL(file);\n        img.onload = function () {\n            let doReset = false;\n            if (this.width > 10000 || this.height > 8000) {\n                alert(\"Bildet kan maksimalt ha 10000 x 8000 piksler.\");\n                doReset = true;\n            } else if (this.width < 555 || this.height < 310) {\n                alert(\"Bildet kan ikke være mindre enn 555 x 310 piksler.\");\n                doReset = true;\n            } else if ((this.width / this.height) >= 2) {\n                alert(\"Forholdet mellom bredde og høyde kan ikke overstige 2:1.\");\n                doReset = true;\n            }\n            if (doReset) {\n                $(elem).val(\"\");\n                $(elem).next().find(\"input\").val(\"\");\n            }\n            _URL.revokeObjectURL(objectUrl);\n        };\n        img.src = objectUrl;\n    }\n};\n\n/*\nwindow.addEventListener(\"load\", function () {\n    window.cookieconsent.initialise({\n        \"palette\": {\n            \"popup\": {\n                \"background\": \"#edeff5\",\n                \"text\": \"#838391\"\n            },\n            \"button\": {\n                \"background\": \"#00909e\"\n            }\n        },\n        \"content\": {\n            \"message\": \"Denne websiden bruker cookies for å gi deg den beste brukeropplevelsen.\",\n            \"dismiss\": \"Aksepter\",\n            \"link\": \"Lær mer\",\n            \"href\": \"/s/personvernerklaring\"\n        }\n    });\n});\n */\n","/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n    this.$target = target\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.4.1'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.4.1'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector !== '#' ? $(document).find(selector) : null\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger($.Event('shown.bs.dropdown', relatedTarget))\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","export function getCookie(name: string): string | null {\n    if (document.cookie && document.cookie !== '') {\n        const cookies = document.cookie.split(';');\n        for (let i = 0; i < cookies.length; i++) {\n            const cookie = cookies[i].trim();\n            if (cookie.substring(0, name.length + 1) === (name + '=')) {\n                return decodeURIComponent(cookie.substring(name.length + 1));\n            }\n        }\n    }\n    return null;\n}\n","import $ from \"jquery\";\nimport {getCookie} from \"./cookies\";\n\nexport let csrfToken = {\n    initialize: function () {\n        let csrfToken = getCookie('csrftoken');\n        let that = this;\n        $.ajaxSetup({\n            beforeSend: function (xhr, settings) {\n                if (csrfToken && !that.csrfSafeMethod(settings.type) && !this.crossDomain) {\n                    xhr.setRequestHeader(\"X-CSRFToken\", csrfToken);\n                }\n            }\n        });\n    },\n    csrfSafeMethod: function (method: string): boolean {\n        // these HTTP methods do not require CSRF protection\n        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));\n    }\n};\n"],"names":["csrfToken","initialize","window","$","app","landingPageSearchQuery","showSelectedHotels","removeStoredHotelURL","requestSelectURL","requestCreateURL","sentryDSN","Sentry","dsn","tracesSampleRate","ignoreErrors","dropdown","is","removeClass","addClass","click","params","location","search","length","indexOf","href","this","attr","host","that","positionSelectedHotelsPanel","resize","document","on","updateStoredHotel","split","e","current","next","grandparent","parent","hasClass","toggleClass","find","not","hide","toggle","stopPropagation","root","closest","selectedHotelsPanelElem","selectedHotelsMobilePanelElem","innerWidth","css","mainContainerElem","mainContainerPos","offset","left","outerWidth","top","position","affix","hotelId","hotel_id","data","html","num_stored_hotels","elemIds","index","elemId","elem","carouselNormalization","items","tallest","heights","normalizeHeights","each","push","height","console","log","Math","max","apply","imageSizeCheck","file","img","_URL","URL","webkitURL","files","Image","objectUrl","createObjectURL","onload","doReset","width","alert","val","revokeObjectURL","src","Affix","element","options","extend","DEFAULTS","target","$target","proxy","checkPosition","checkPositionWithEventLoop","$element","affixed","unpin","pinnedOffset","Plugin","option","$this","VERSION","RESET","prototype","getState","scrollHeight","offsetTop","offsetBottom","scrollTop","targetHeight","initializing","colliderTop","getPinnedOffset","setTimeout","bottom","body","affixType","Event","trigger","isDefaultPrevented","replace","old","fn","Constructor","noConflict","$spy","call","Dropdown","getParent","selector","test","$parent","clearMenus","which","remove","relatedTarget","type","tagName","contains","isActive","documentElement","createElement","insertAfter","keydown","preventDefault","$items","eq","getCookie","name","cookie","cookies","i","trim","substring","decodeURIComponent","beforeSend","xhr","settings","csrfSafeMethod","crossDomain","setRequestHeader","method"],"sourceRoot":""}