{"version":3,"sources":["webpack:///webpack/bootstrap b9c1e471437d2c6518ec","webpack:///./source/js/main.js","webpack:///./source/js/navigation.js","webpack:///./source/js/carousel.js","webpack:///./source/js/icon.js","webpack:///./source/js/block-list.js","webpack:///./source/js/form-contact.js","webpack:///./source/js/notification.js","webpack:///./source/js/accept-cookies.js"],"names":[],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACtCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAC,E;;;;;;AClBD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH,EAAC,E;;;;;;ACtED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA,EAAC,E;;;;;;ACtHD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAA+B,8BAA8B;AAC7D;AACA;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,YAAY;AACrB;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH,EAAC,E;;;;;;ACtFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;AACH,EAAC,E;;;;;;AClBD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;;AAEP;AACA;AACA,MAAK;AACL,IAAG;AACH,EAAC,E;;;;;;AC7DD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA,G;;;;;;AC9BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,QAAO;AACP,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA,G","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap b9c1e471437d2c6518ec\n **/","// Scroll\nwindow.scrollTo(0, 0);\n\n// Import custom modules\nrequire('./navigation');\nrequire('./carousel');\nrequire('./icon');\nrequire('./block-list');\nrequire('./form-contact');\nrequire('./notification')();\nrequire('./accept-cookies')();\n\n// Try to explain to foundation, that it should not equalize blocks, when they are stacked\nFoundation.Equalizer.defaults.equalizeOnStack = false;\n\n// Initialize foundation (we are using the equalizer)\n$(window).load(function() {\n $(document).foundation();\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./source/js/main.js\n ** module id = 0\n ** module chunks = 0\n **/","$(document).ready(function() {\n var ACTIVE_CLASS = 'navigation__content__links__first-level-list__item--active';\n var FOCUS_CLASS = 'navigation__content__links__first-level-list__item--focus';\n\n var $items = $('.navigation__content__links__first-level-list__item');\n \n var repositionCursor = function($element) {\n $('.navigation__content__cursor').css('left', $element.offset().left + $element.width() / 2 - $('.navigation__content').offset().left);\n };\n\n var resetCursor = function() {\n if ($('.' + ACTIVE_CLASS).size()) {\n repositionCursor($('.' + ACTIVE_CLASS));\n } else {\n repositionCursor($('.navigation__content__logo'));\n }\n };\n\n var adjustNavigationImage = function() {\n $('.navigation__content__background__image').height($('.page-cover').outerHeight());\n };\n\n var toggleNavigationSize = function() {\n $('.navigation').toggleClass('navigation--mini', $(window).scrollTop() > 0);\n\n setTimeout(resetCursor, 1000);\n };\n\n setTimeout(resetCursor, 100);\n\n setTimeout(function() {\n $('.navigation__content__cursor').addClass('navigation__content__cursor--animatable');\n }, 110);\n\n $items.hover(function() {\n var $target = $(this);\n $target.addClass(FOCUS_CLASS);\n repositionCursor($target);\n }, function() {\n var $target = $(this);\n \n $target.removeClass(FOCUS_CLASS);\n\n setTimeout(function() {\n if (!$items.hasClass(FOCUS_CLASS)) {\n resetCursor();\n }\n }, 250);\n });\n\n $(document).click(function($event) {\n if (!$($event.target).closest('.' + FOCUS_CLASS).size()) {\n $items.removeClass(FOCUS_CLASS);\n resetCursor();\n }\n });\n \n adjustNavigationImage();\n toggleNavigationSize();\n\n $(window).on('load', adjustNavigationImage);\n $(window).on('resize', _.debounce(adjustNavigationImage, 100));\n $(window).on('scroll', _.throttle(toggleNavigationSize, 100));\n\n $('.navigation__content__toggle').on('click', function($event) {\n $event.preventDefault();\n\n $('body').toggleClass('prevent-scroll');\n $('.navigation').toggleClass('navigation--open');\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./source/js/navigation.js\n ** module id = 1\n ** module chunks = 0\n **/","// Wait for document initializsation\n$(document).ready(function() {\n // Declare slide switch interval\n var CAROUSEL_DURATION = 15 * 1000;\n \n // Assign click handler for the carousel indicators\n // Upon clicked, the carousel, well switch to the slide\n // corresponding to the clicked indicator\n $('body').on('click', '.block-carousel__indicators__indicator', function($event) {\n // Prevent potential native click actions from indicators\n $event.preventDefault();\n \n // Current indicator\n var $indicator = $(this);\n // All indicators\n var $indicators = $indicator.siblings();\n // Current carousel\n var $carousel = $indicator.parent().siblings('.block-carousel');\n // Current item wrapper\n var $itemWrapper = $carousel.find('.block-carousel__items');\n\n // Set the current index of the carousel, to be the index of the clicked indicators\n $carousel.data('current', $indicator.index());\n\n // Move the carousel to the chosen slide\n $itemWrapper.css({\n left: ($indicator.index() * 100 * - 1) + '%'\n });\n\n // Reset active indicator\n $indicators.removeClass('block-carousel__indicators__indicator--active');\n // Choose the current indicator as the active indicator\n $indicator.addClass('block-carousel__indicators__indicator--active');\n });\n\n // Initialize each carousel element\n $('.block-carousel').each(function() {\n // Current carousel\n var $carousel = $(this);\n // Indicators of the carousel\n var $indicators = $carousel.siblings('.block-carousel__indicators').find('.block-carousel__indicators__indicator');\n // Item wrapper\n var $itemWrapper = $carousel.find('.block-carousel__items');\n // Slides (items) of the carousel\n var $items = $carousel.find('.block-carousel__items__item');\n\n // Give the carousel a fixed height (here, its initial height)\n $carousel.height($carousel.height());\n\n // Initialize the interval, with which the carousel, will switch it's slides\n setInterval(function() {\n // Get the index of the current slide (or start from 0)\n var index = parseInt($carousel.data('current'), 10) || 0;\n\n // If the index is equal the number of slides, reset it to be 0\n if (index == $items.size()) {\n index = 0;\n }\n\n // Set and remember the current index for the carousel\n $carousel.data('current', index + 1);\n\n // Move the carousel to the chosen slide\n $itemWrapper.css({\n left: (index * 100 * -1) + '%'\n });\n\n // Reset the active indicator\n $indicators.removeClass('block-carousel__indicators__indicator--active');\n // Choose the new indiator as the active indicator\n $indicators.eq(index).addClass('block-carousel__indicators__indicator--active');\n }, CAROUSEL_DURATION);\n });\n\n // Assign listener, to listen on window resize events,\n // we want to adjust the height of the carousel, because\n // of the mobile version of the carousel. We are \n // debouncing the event, to use less resources.\n\n window.addEventListener(\"orientationchange\", function() {\n // For each carousel\n $('.block-carousel').each(function() {\n // Reference to the current carousel\n var $carousel = $(this);\n\n // Reset the height of the carousel\n $carousel.height('auto');\n\n // Wait until the dom has rerendered (this is very hacky,\n // but the particular sequence of events leading to this,\n // is very, very rare to occur. Actually, its mostly for\n // demo purposes).\n setTimeout(function() {\n // Give the carousel its new fixed height,\n // for all of the slides to expand to the carousels\n // max height\n $carousel.height($carousel.height());\n }, 250);\n });\n }, false);\n\n if ($('.block-carousel').length) {\n var $swiper = new Hammer($('.block-carousel').get(0));\n $swiper.on('swipeleft swiperight', function(ev) {\n // Find indicators\n var $indicators = $('.block-carousel__indicators').children();\n\n // Find active\n var $active = $indicators.filter('.block-carousel__indicators__indicator--active');\n\n // Go forward or backwards\n if (ev.type === 'swiperight') {\n $active.prev().trigger('click');\n } else {\n $active.next().trigger('click');\n }\n });\n }\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./source/js/carousel.js\n ** module id = 2\n ** module chunks = 0\n **/","// Wait to the document to initialize\n$(document).ready(function() {\n // Create hash map of icons (we instantiate the icons to begin with, and interact with them later)\n var icons = {};\n\n // Iterate through each icon (and diagram) that should be animated\n $('.icon--animation, .diagram--animation').each(function() {\n // Lets create a neat reference to the current icon element\n var $icon = $(this);\n\n // If the icon does not have a element id\n if (!$icon.attr('id')) {\n // Lets give it one, as Vivus.js requires this\n $icon.attr('id', 'icon-id-'+ _.uniqueId());\n }\n\n // Get the id of the element\n var id = $icon.attr('id');\n // Get svg path (background-image) of the element\n var file = $icon.css('background-image');\n\n // Lets hide the background-image, as we'll otherwise\n // draw it twice, and display the icon (that has been hidden until now)\n $icon.css({\n 'background-image': 'none',\n 'display': 'block'\n });\n\n // Remove a bit of mess from the file url\n file = file.replace('url(', '').replace(')', '').replace(/\\\"/gi, '');\n\n // Show icon\n $icon.removeClass('hide');\n\n // Initialize the Vivus.js instance of the icon\n // We set the start to manual, so we can later\n // execute the drawing, when the icon is within\n // the actual viewport.\n icons[id] = new Vivus(id, { file: file, start: 'manual' }, function(obj) {\n // When the animation has finished, lets add a finished class to it\n // This way, we can provoke further animation using css (e.g. solid fill animations)\n obj.el.classList.add('finished');\n });\n });\n\n // Method for actually drawing icons currently\n // present in the (slightly modified) viewport\n var iconize = function() {\n // What is the upper limit of the viewport (we add the height of the navigation)\n var viewportTop = $(window).scrollTop() + 145;\n // What is the lower limit of the viewport (we substract the height of the navigation, plus some)\n var viewportBottom = $(window).height() + viewportTop - 145 - 50;\n\n // Iterate through each icon\n $('.icon--animation, .diagram--animation').each(function() {\n // Make a neat reference to the current icon\n var $icon = $(this);\n\n // Check if the icon has been animated before, and whether it is within our defined viewport\n if (!$icon.data('animated') && viewportTop < $icon.offset().top && $icon.offset().top < viewportBottom) {\n // Sometimes Vivus.js do not behave, but the animations\n // will still succeed. We ignore bad behaviour.\n try {\n // If the icon is within the view port, then\n // play the animation\n icons[$icon.attr('id')].play();\n // Mark the icon as animated, so it does not repeatedly\n // animate when being in the viewport\n $icon.data('animated', true);\n } catch (e) { }\n }\n });\n };\n\n // When the user scrolls, keep drawing the icons\n // that might be in the current viewport\n // (Debouncing the event to save a bit of resources)\n $(window).on('scroll', _.throttle(iconize, 100));\n\n // Initialize iconization with a small timeout,\n // so that Vivus.js get a change to think\n setTimeout(iconize, 100);\n\n setTimeout(function(){\n $(window).triggerHandler('scroll');\n }, 500);\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./source/js/icon.js\n ** module id = 3\n ** module chunks = 0\n **/","// Wait for document to initialize\n$(document).ready(function() {\n // Register click handler on each block list item content area\n // Some block list items may have collapsable content, this is\n // the handler used to toggle the content\n $('.block-list__item__content').on('click', function() {\n // Make a reference to the text element of the block list item\n var $text = $(this).find('.block-list__item__content__text');\n\n // If the text is already fully shown\n if ($text.hasClass('block-list__item__content__text--more')) {\n // Then collapse the extra text\n $text.removeClass('block-list__item__content__text--more');\n } else {\n // If the full text is not shown, then expand it\n $text.addClass('block-list__item__content__text--more');\n }\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./source/js/block-list.js\n ** module id = 4\n ** module chunks = 0\n **/","// Wait for document to initialize\n$(document).ready(function() {\n // Iterate through each contact form (there should be only one)\n $('.form-contact').each(function() {\n // Make neat reference to the form element\n var $form = $(this);\n\n // Check if the radio button should be prefilled\n var prefillMatches = window.location.search.match(/subject=(.+)/);\n\n // If a prefill match exists, then prefill matching radio button as checked\n if (prefillMatches && prefillMatches.length > 1) {\n $form.find(':input[value=\"'+decodeURIComponent(prefillMatches[1])+'\"]').prop('checked', true);\n }\n\n // Register listener for the submit event\n $form.on('submit', function($event) {\n // Prevent default actions\n $event.preventDefault();\n $event.stopPropagation();\n\n // Get form items\n var formItems = $form.serializeArray();\n\n // Extract areas\n var areas = _(formItems)\n .filter(function(item) {\n return item.name === 'Area';\n })\n .pluck('value')\n .value();\n\n // Remove area fields from original form items \n _.remove(formItems, function(item) {\n return item.name === 'Area';\n });\n\n // Re-add area concatnated form item\n formItems.unshift({\n name: 'Area',\n value: areas.join(', ')\n });\n\n // Make ajax post request, with the serialized form data\n $.ajax({\n type: 'POST',\n // Post to the url of the form action\n url: $form.attr('action'),\n data: $.param(formItems)\n }).done(function() {\n // Upon success, add submitted class to form\n $form.addClass('form-contact--submitted-success');\n }).fail(function() {\n // For now, we ignore fails, and accept them as success\n $form.addClass('form-contact--submitted-error');\n });\n\n // Return false for legacy purposes\n return false;\n });\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./source/js/form-contact.js\n ** module id = 5\n ** module chunks = 0\n **/","module.exports = function () {\n $.fn.notification = function(action, options) {\n $(this).each(function(index, item) {\n var $notification = $(item),\n $close = $notification.find('.notification__content__close');\n\n var openAction = function() {\n $notification.addClass('notification--active');\n };\n\n var closeAction = function() {\n $notification.removeClass('notification--active');\n\n if (options && options.callbacks && options.callbacks.close) {\n options.callbacks.close();\n }\n };\n\n if (action === 'open') {\n openAction();\n }\n if (action === 'close') {\n closeAction();\n }\n\n $close.off('click').on('click', function() {\n closeAction();\n });\n });\n };\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./source/js/notification.js\n ** module id = 6\n ** module chunks = 0\n **/","module.exports = function () {\n // Only show popup, if user have noget accepted cookie\n if (!$.cookie('cookie-accept')) {\n\n // Give people a chance to land on the page, and the page to load\n setTimeout(function() {\n // Open cookie accept notification\n $('#notification-cookies').notification('open', {\n callbacks: {\n close: function() {\n // Open close, register cookie\n $.cookie('cookie-accept', true);\n\n // Show social media icons\n setTimeout(function(){\n $('.a2a_kit').removeClass('hide');\n }, 2000);\n }\n }\n });\n }, 2000);\n } else {\n // Show social media icons\n $('.a2a_kit').removeClass('hide');\n }\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./source/js/accept-cookies.js\n ** module id = 7\n ** module chunks = 0\n **/"],"sourceRoot":""}